LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoyMDA1LTEwLTI0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEub3JnPgoKCSogQVVUSE9SUzogVXBkYXRlZCB0aGUgYXV0aG9ycyBsaXN0LgoKCSogZGxscy9jb21tZGxnL2NkbGdfQ3MucmM6IE1pY2hhbCBTdWNoYW5layA8aHJhbXJhY2hAZ21haWwuY29tPgoJTWFrZSBDemVjaCBmb250IHNlbGVjdGlvbiBkaWFsb2cgdXNhYmxlLgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jOiBFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCU1hZGUgYWNjZXB0IHRocmVhZCBzYWZlKHIpLgoKCSogZGxscy94MTFkcnYvbW91c2UuYzogVml0YWxpeSBNYXJnb2xlbiA8d2luZS1wYXRjaEBraWV2aW5mby5jb20+CglGaXggYmFkIG1vdXNlIGxhZyBpbiBnYW1lcyB0aGF0IGRvIHRoZWlyIG93biBtb3VzZSB3YXJwaW5nLgoKCSogZGxscy93aW5zcG9vbC9pbmZvLmM6IFJvYmVydCBMdW5ub24gPGJvYmxAb3B0dXNob21lLmNvbS5hdT4KCVJlbmFtZSBxdWV1ZV90IHRvIGpvYnF1ZXVlX3QgdG8gYXZvaWQgY29sbGlzaW9uIHdpdGggbGlicmFyeSBzeW1ib2wKCXF1ZXVlX3QuCgoJKiBkbGxzL3dpbm1tL3dpbmVlc2QvYXVkaW8uYzogUm9iZXJ0IEx1bm5vbiA8Ym9ibEBvcHR1c2hvbWUuY29tLmF1PgoJQWRkZWQgaGVhZGVyIGVycm5vLmguCgoJKiB0b29scy93aW5lYnVpbGQvdXRpbHMuYzogUm9iZXJ0IEx1bm5vbiA8Ym9ibEBvcHR1c2hvbWUuY29tLmF1PgoJUmVtb3ZlIFNWUjQgc3BlY2lmaWMgcHNldWRvLW9wcy4KCgkqIHRvb2xzL3dpbmVidWlsZC9pbXBvcnQuYzogU2ltb24gUmljaHRlciA8U2ltb24uUmljaHRlckBob2d5cm9zLmRlPgoJRml4IHdpbmVidWlsZCdzIHBwYyBhc3NlbWJseSBnZW5lcmF0aW9uLgoKMjAwNS0xMC0yMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbXN2Y3J0L2V4aXQuYzogX2NleGl0IHNob3VsZCBjYWxsIHRoZSBhdGV4aXQgZnVuY3Rpb25zLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBUcm95IFJvbGxvIDx3aW5lQHRyb3kucm9sbG8ubmFtZT4KCURldGVjdCB3aGVuIHRoZSBub3RpZmljYXRpb24gY2FsbGJhY2sgaGFzIGRlc3Ryb3llZCB0aGUgTGlzdFZpZXcgdG8KCWF2b2lkIGF0dGVtcHRzIHRvIGFjY2VzcyBkYXRhIHRoYXQgaXMgbm8gbG9uZ2VyIHZhbGlkLgoKCSogZGxscy9jb21jdGwzMi90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL2NvbWN0bDMyL3Rlc3RzL01ha2VmaWxlLmluLAoJICBkbGxzL2NvbWN0bDMyL3Rlc3RzL3Rvb2xiYXIuYywgZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglLcnp5c3p0b2YgRm9sdG1hbiA8d2RldkBmb2x0bWFuLmNvbT4KCVNlcGFyYXRvcnMgd2l0aCBncm91cCBzdHlsZSBzZXQgZG9uJ3Qgc2VwYXJhdGUgdG9vbGJhciByYWRpbyBncm91cHMKCWFueW1vcmUgKHdoaWNoIGJyb2tlIHRvb2wgc2VsZWN0aW9uIGluIEZyb250IFBhbmVsIERlc2lnbmVyKS4KCgkqIGRsbHMvdXNlci93aW5wcm9jLmM6IFJpY2hhcmQgQ29oZW4gPHJpY2hhcmRAZGFpam9idS5jby51az4KCUhhbmRsZSBOVUxMIHN0cmluZyBscGFyYW0gd2hlbiB0cmFuc2xhdGluZyBtZXNzYWdlcyBBLT5XLgoKMjAwNS0xMC0yMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvc2hkb2N2dy9zaGRvY3Z3X21haW4uYzogRml4ZWQgYSBoYW5kbGUgbGVhay4KCgkqIGRsbHMvc2hkb2N2dy9zaGRvY3Z3X21haW4uYzoKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCUFsbG93IGZpbGU6Ly8vIHByb3RvY29sIHRvIGJlIHVzZWQgdG8gZG93bmxvYWQgdGhlIE1vemlsbGEgQWN0aXZlWAoJY29udHJvbC4KCgkqIHByb2dyYW1zL3dpbmVjZmcvZHJpdmUuYywgcHJvZ3JhbXMvd2luZWNmZy9kcml2ZXVpLmM6CglBZGRlZCAiYXV0b2RldGVjdCIgZHJpdmUgdHlwZSBvcHRpb24uCgoJKiBkbGxzL21zdmNydC90ZXN0cy9jcHAuYywgZGxscy9tc3ZjcnQvdW5kbmFtZS5jOgoJVmlqYXkgS2lyYW4gS2FtdWp1IDxpbmZ5cXVlc3RAZ21haWwuY29tPgoJRml4IG1zdmNydCBzeW1ib2wgZGVtYW5nbGluZyBmb3Igbm9uIE1TIHN5bWJvbHMuCgoJKiBkbGxzL3NoZG9jdncvc2hkb2N2d19tYWluLmM6CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglSZW1vdmUgdGVtcGZpbGUgdXNlZCB0byBkb3dubG9hZCBNb3ppbGxhIEFjdGl2ZVggY29udHJvbCBvbmNlIGl0J3Mgbm90Cgl1c2VkIGFueW1vcmUuCgoJKiBwcm9ncmFtcy93aW5lY2ZnL2RyaXZldWkuYzoKCUVuYWJsZSB0aGUgYXBwbHkgYnV0dG9uIHdoZW4gY2hhbmdpbmcgZHJpdmUgdHlwZS4KCgkqIHByb2dyYW1zL3dpbmVjZmcvZHJpdmUuYzoKCUFsd2F5cyBzZXQgdGhlIGRyaXZlIHR5cGUgZXZlbiBpZiBub3RoaW5nIGVsc2UgY2hhbmdlZC4KCgkqIGRsbHMvdXNlci9kZWZkbGcuYzogVml0YWxpeSBNYXJnb2xlbiA8d2luZS1wYXRjaEBraWV2aW5mby5jb20+CglSZXN0b3JlIGZvY3VzIHRvIHRoZSBjdXJyZW50IGNvbnRyb2wgd2l0aG91dCBzZWxlY3RpbmcgdGV4dC4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL2RyaXZlLmMsIGRsbHMva2VybmVsL3ZvbHVtZS5jOgoJUmVpbiBLbGF6ZXMgPHdpam5Ad2FuYWRvby5ubD4KCUluIEdldERpc2tGcmVlU3BhY2U6CgktIG9ubHkgY2FwIHRoZSB0b3RhbCBzaXplIGFuZCBhdmFpbGFibGUgc2l6ZSB0byAyR0IgaW4gV2luMy54IHRocnUKCSAgV2luTUU7CgktIGluIHRoYXQgY2FzZSBhZGp1c3QgbnVtYmVyIG9mIGNsdXN0ZXJzIHRvIGJlIGxlc3MgdGhlbiA2NTUzNiBieQoJICBpbmNyZWFzaW5nIHRoZSBjbHVzdGVyIHNpemU7CgktIGFkZCBjb3JyZXNwb25kaW5nIHRlc3RzLgoKCSogZGxscy93aW5pbmV0L2ludGVybmV0LmgsIGRsbHMvd2luaW5ldC9uZXRjb25uZWN0aW9uLmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJTW92ZSB0aGUgcGVla19tc2cgYnVmZmVycyBmb3IgU1NMIGNvbm5lY3Rpb25zIGludG8gdGhlCglXSU5JTkVUX0NPTk5FQ1RJT04gc3RydWN0dXJlIHRvIHByZXZlbnQgMiB0aHJlYWRzIGZyb20gY2xvYmJlcmluZyBlYWNoCglvdGhlcidzIGJ1ZmZlcnMuCgoJKiBkbGxzL29sZWF1dDMyL3Vzcm1hcnNoYWwuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCVByb3hpZXMgYW5kIHN0dWJzIGZvciBHZXRUeXBlSW5mb0NvbnQsIEdldExpYkF0dHIgYW5kIFJlbGVhc2VMaWJBdHRyLgoKMjAwNS0xMC0xOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvcmljaGVkMjAvZWRpdG9yLmM6IEtyenlzenRvZiBGb2x0bWFuIDx3ZGV2QGZvbHRtYW4uY29tPgoJLSBCdWdmaXggaW4gRU1fR0VUVEVYVEVYCgktIEFkZGl0aW9uYWwgdHJhY2VzIGhlbHBmdWwgaW4gZGlhZ25vc2luZyBzaW1pbGFyICh0ZXh0CgkgIHJldHJpZXZhbC1yZWxhdGVkKSBidWdzLgoKCSogcHJvZ3JhbXMvd2luZWNmZy9kcml2ZXVpLmM6CglWaXRhbGl5IE1hcmdvbGVuIDx3aW5lLXBhdGNoQGtpZXZpbmZvLmNvbT4KCVVzZSBjb3JyZWN0IG5vdGlmaWNhdGlvbiBmb3IgZHJpdmUgc2VsZWN0aW9uIGNoYW5nZS4KCgkqIGRsbHMvZHNvdW5kL2J1ZmZlci5jLCBkbGxzL2Rzb3VuZC9kc291bmQuYywKCSAgZGxscy9kc291bmQvZHNvdW5kX3ByaXZhdGUuaDoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglDaGFuZ2Ugc2Vjb25kYXJ5IGJ1ZmZlciB2YXJpYWJsZSBuYW1lIHRvIHNlY29uZGFyeS4KCUZpeCBBZGRSZWYgYW5kIFJlbGVhc2UgdG8gdXNlIHByb3BlciBjbGFzcy4KCgkqIGRsbHMvY29tY3RsMzIvdGhlbWluZy5jOgoJRG9uJ3QgcmVnaXN0ZXIgY2xhc3NlcyBpcyBubyB0aGVtZSBpcyBhY3RpdmUgdG8gYXZvaWQgdHJvdWJsZSAoYmFzZWQKCW9uIGEgcGF0Y2ggYnkgVml0YWxpeSBNYXJnb2xlbikuCgoJKiB0b29scy93aW5lLmluZjogSm9uYXRoYW4gRXJuc3QgPEpvbmF0aGFuQEVybnN0RmFtaWx5LmNoPgoJVXNlIFdpbmVIUSdzIG1pcnJvciBzZWxlY3Rpb24gc2NyaXB0IHRvIGdldCB0aGUgTW96aWxsYSBBY3RpdmVYCglDb250cm9sLgoKCSogZGxscy93aW5pbmV0L2h0dHAuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJU2V0IHRoZSBodHRwIHBvcnQgYmVmb3JlIGZpZ3VyaW5nIG91dCB3aGV0aGVyIHdlJ3JlIHVzaW5nIGEgcHJveHkuCgoJKiBkbGxzL29sZWF1dDMyL3RtYXJzaGFsLmM6CglQaWVycmUgZCdIZXJiZW1vbnQgPHBpZGhlcmJlbW9udEBvcGVuZGFyd2luLm9yZz4KCUFsbG93IGNvbXBpbGF0aW9uIG9uIG5vbi1pMzg2LgoKCSogZGxscy91c2VyL3Rlc3RzL21zZy5jOiBWaXRhbGl5IE1hcmdvbGVuIDx3aW5lLXBhdGNoQGtpZXZpbmZvLmNvbT4KCUZpeCBhIG51bWJlciBvZiB0ZXN0cyBmYWlsaW5nIG9uIHdpbmRvd3MuCgoJKiBBVVRIT1JTOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIG1vcmUgZGV2ZWxvcGVycy90cmFuc2xhdG9ycy4KCgkqIGRsbHMvdXNlci9idXR0b24uYzogTWFya3VzIEf2bW1lbCA8bS5nb2VtbWVsQGNvbXB1bGFiLmRlPgoJTWlzcGxhY2VtZW50IG9mIGNoZWNrYm94ZXMgd2l0aCBlbXB0eSBsYWJlbCBmaXhlZC4KCgkqIGRsbHMvbXNodG1sL25zZW1iZWQuYzogSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCVRyeSB1c2luZyBtb3pjdGx4J3MgcGF0aCBpZiB0aGVyZSBpcyBubyByZWdpc3RlcmVkIE1vemlsbGEgZGlyZWN0b3J5LgoKCSogZGxscy91c2VyL3dpbnByb2MuYzogS3J6eXN6dG9mIEZvbHRtYW4gPHdkZXZAZm9sdG1hbi5jb20+CglGaXggQ0JfR0VUTEJURVhUIEFOU0ktVW5pY29kZSBjYWxscyB3aGVuIHJldHVybiB2YWx1ZSBpcyBhbiBlcnJvcgoJY29kZS4KCgkqIGRsbHMvd2luaW5ldC9odHRwLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglVc2UgZGVidWdzdHJfYSB0byBwcmV2ZW50IGEgYnVmZmVyIG92ZXJmbG93IHdoZW4gZGVidWdnaW5nLgoKCSogZGxscy9nZGkvbWV0YWZpbGUuYywgZGxscy9nZGkvdGVzdHMvbWV0YWZpbGUuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGQgYSB0ZXN0IGZvciBTZXRNZXRhRmlsZUJpdHNFeCwgbWFrZSBpdCBwYXNzIHVuZGVyIFdpbmUuCgoyMDA1LTEwLTE4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9udGRsbC9wYXRoLmM6IEphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJU2V0IHRoZSBmaWxlX3BhcnQgZm9yIFxcP1wgbG9uZyBmaWxlIG5hbWVzIHRvby4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbC5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsCgkgIGRsbHMvc2hlbGwzMi9zaGxleGVjLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJVXNlIGFwcHJvcHJpYXRlIERERSBBUElzIChBTlNJIG9yIHVuaWNvZGUpIGZvciBTaGVsbEV4ZWN1dGVBL1csIEV4Y2VsCgkyMDAwIGRlcGVuZHMgb24gdGhhdC4KCgkqIGRsbHMva2VybmVsL21vZHVsZS5jLCBkbGxzL2tlcm5lbC90ZXN0cy9tb2R1bGUuYzoKCVZpdGFsaXkgTWFyZ29sZW4gPHdpbmUtcGF0Y2hAa2lldmluZm8uY29tPgoJTG9hZExpYnJhcnkgc2hvdWxkIGlnbm9yZSB0cmFpbGluZyBzcGFjZXMgaW4gdGhlIGxpYnJhcnkgbmFtZS4KCgkqIGRsbHMvb2xlYXV0MzIvdXNybWFyc2hhbC5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IEdldENvbnRhaW5pbmdUeXBlbGliX3tQcm94eSxTdHVifS4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJV2hlbiBhIGRpc3BpbnRlcmZhY2UgaXNuJ3QgZHVhbCwgd2Ugc2hvdWxkIHJldHVybgoJVFlQRV9FX0VMRU1FTlROT1RGT1VORCB3aGVuIHRyeWluZyB0byBnZXQgaW5kZXggLTEuCgoJKiBwcm9ncmFtcy93aW5lY2ZnL2RyaXZldWkuYzogSXZhbiBMZW8gUHVvdGkgPGl2YW5sZW9AZ21haWwuY29tPgoJTWFrZSBkcml2ZSB0eXBlIGFuIGFkdmFuY2VkIG9wdGlvbi4KCgkqIGRsbHMvdXNlci9lZGl0LmM6IFZpdGFsaXkgTWFyZ29sZW4gPHdpbmUtcGF0Y2hAa2lldmluZm8uY29tPgoJUmV0dXJuIDAgbGVuZ3RoIGxpbmUgYXMgMCBsZW5ndGggbGluZSBmb3IgRU1fR0VUTElORS4KCgkqIGRsbHMvdmVyc2lvbi90ZXN0cy9pbmZvLmM6IFBhdWwgVnJpZW5zIDxQYXVsLlZyaWVuc0B4czRhbGwubmw+CglXaW5lJ3MgYmVoYXZpb3IgaXMgY29ycmVjdCBub3cuCgoJKiBpbmNsdWRlL3dpbmUvZGVidWcuaCwgbGlicy93aW5lL2RlYnVnLmMsIGxpYnMvd2luZS93aW5lLmRlZiwKCSAgbGlicy93aW5lL3dpbmUubWFwOgoJQWRkZWQgYSBfX3dpbmVfZGJnX3NldF9jaGFubmVsX2ZsYWdzIGZ1bmN0aW9uIHRvIGFsbG93IGNoYW5naW5nIGZsYWdzCglmcm9tIGluc2lkZSB0aGUgY29kZS4KCgkqIGRsbHMvdXNlci9tZXNzYWdlLmMsIGRsbHMvdXNlci9tc2cxNi5jLCBkbGxzL3VzZXIvdGVzdHMvbXNnLmMsCgkgIGRsbHMvdXNlci93aW5wcm9jLmMsIGRsbHMvdXNlci93aW5wcm9jLmg6CglGcmFuayBSaWNodGVyIDxmcmFuay5yaWNodGVyQGdtYWlsLmNvbT4KCVdoZW4gZG9pbmcgQS0+VyBXTV9HRVRURVhUTEVOR1RILCB1c2UgV01fR0VUVEVYVCBiZWhpbmQgdGhlIHNjZW5lcyB0bwoJb2J0YWluIGFuIGV4YWN0IGxlbmd0aC4KCgkqIGRsbHMva2VybmVsL2ZpbGUuYywgZGxscy9rZXJuZWwvdGVzdHMvZmlsZS5jOgoJUmV2ZXJ0IHByZXZpb3VzIGNoYW5nZSwgT0ZfRVhJU1QgcmVhbGx5IHJldHVybnMgSEZJTEVfRVJST1IuCgoJKiB0b29scy93aW5lZHVtcC9sbmsuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJTWFrZSBzdXJlIHRoZSBjb21wb25lbnQgc3RyaW5nIGlzIG51bCB0ZXJtaW5hdGVkLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsbGluay5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglVc2UgU2hlbGxMaW5rX1F1ZXJ5SW50ZXJmYWNlIHRvIHJldHVybiB0aGUgcmlnaHQgaW50ZXJmYWNlIGluCglJU2hlbGxMaW5rX0NvbnN0cnVjdG9yLgoKCSogcHJvZ3JhbXMvd2luZWNmZy94MTFkcnZkbGcuYzogUmVpbiBLbGF6ZXMgPHdpam5Ad2FuYWRvby5ubD4KCVNob3cgZGVza3RvcCBtb2RlIGRpc2FibGVkIGlmIHRoZSBEZXNrdG9wIHJlZ2lzdHJ5IHZhbHVlIGV4aXN0cyBidXQKCXN0YXJ0cyB3aXRoIE4sbixGLGYgb3IgMC4gVGhpcyBhZ3JlZXMgd2l0aCB0aGUgbG9naWMgaW4geDExZHJ2LgoKCSogZGxscy9nZGkvbWV0YWZpbGUuYywgZGxscy9nZGkvdGVzdHMvbWV0YWZpbGUuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGQgYSB0ZXN0IGZvciBDb3B5TWV0YUZpbGUsIG1ha2UgaXQgcGFzcyB1bmRlciBXaW5lLgoKCSogZGxscy9hdGwvYXRsX21haW4uYywgZGxscy9hdGwvYXRsYmFzZS5oLCB0b29scy93aW5hcGkvd2luMzIuYXBpOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJQ29ycmVjdCBBdGxNb2R1bGVBZGRUZXJtRnVuYyBwcm90b3R5cGUuCgoyMDA1LTEwLTE3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9kc291bmQvYnVmZmVyLmMsIGRsbHMvZHNvdW5kL2NhcHR1cmUuYywgZGxscy9kc291bmQvZHNvdW5kLmMsCgkgIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmMsIGRsbHMvZHNvdW5kL2R1cGxleC5jLCBkbGxzL2Rzb3VuZC9taXhlci5jLAoJICBkbGxzL2Rzb3VuZC9wcmltYXJ5LmMsIGRsbHMvZHNvdW5kL3Byb3BzZXQuYywgZGxscy9kc291bmQvc291bmQzZC5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUluY2x1ZGUgd2ludXNlci5oIHNvIHRoZSBjb2RlIGNvbXBpbGVzIGNsZWFubHkgb24gd2luZG93cyB1c2luZwoJd2luZG93cyBoZWFkZXJzLgoKCSogZGxscy9rZXJuZWwvdGltZS5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJUmVtb3ZlIHVuc3BlY2lmaWMgRklYTUUuCgoJKiBkbGxzL3VzZXIvdGVzdHMvbXNnLmM6IFZpdGFsaXkgTWFyZ29sZW4gPHdpbmUtcGF0Y2hAa2lldmluZm8uY29tPgoJRml4IG9uZSB0ZXN0IGZhaWxpbmcgb24gYWxsIHdpbmRvd3MgdmVyc2lvbnMuCgoJKiBkbGxzL2tlcm5lbC9sb2NhbGUuYzogSWdub3JlIGVtcHR5IGVudmlyb25tZW50IHN0cmluZ3MuCgoJKiBwcm9ncmFtcy93aW5lY2ZnL2FwcGRlZmF1bHRzLmM6CglWaXRhbGl5IE1hcmdvbGVuIDx3aW5lLXBhdGNoQGtpZXZpbmZvLmNvbT4KCVJlbW92ZSAiQXV0b21hdGljYWxseSBkZXRlY3Qgd2luZG93cyB2ZXJzaW9uIi4gRGVmYXVsdCB0byB3aW4yay4KCgkqIGRsbHMvZGRyYXcvZGRyYXdfdXNlci5jOiBDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglFbnVtZXJhdGUgb25seSByZXF1ZXN0ZWQgbW9kZXMgYnkgdGFraW5nIGludG8gYWNjb3VudCBzdXJmYWNlIGRlc2MKCXdoZW4gcHJlc2VudC4KCgkqIGRsbHMvbXN2aWRlby9tc3ZpZGVvX21haW4uYzogQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJRml4IGluc3RhbGxhYmxlIGRyaXZlciByZW1vdmFsLgoKCSogZGxscy9zaGVsbDMyL2Jyc2ZvbGRlci5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJTVNETiBzdGF0ZXMgdGhhdCB0aGUgcHN6RGlzcGxheU5hbWUgbWVtYmVyIG9mIEJST1dTRUlORk8gaXMgYXNzdW1lZCB0bwoJYmUgTUFYX1BBVEggaW4gbGVuZ3RoLiBTbyB3aGVuIGRvaW5nIHRoZSBBLT5XIGNvbnZlcnNpb24gaW4KCUJyb3dzZUZvckZvbGRlckEgZG8gbm90IHNldCB0aGF0IG1lbWJlciB0byBiZSB0aGUgc2l6ZSBvZiB0aGUKCWluY29taW5nIHN0cmluZywgaW5zdGVhZCBtYWtlIGl0IE1BWF9QQVRILgoKCSogZGxscy93aW5lZG9zL2ludDIxLmM6IEVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJaW9jdGwgNDQwRiBvbmx5IHJldHVybnMgbm9uIG1hcHBlZCBkcml2ZXMgKGZvciBub3cpLgoKMjAwNS0xMC0xMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbnRkbGwvZGlyZWN0b3J5LmM6CglJbiBwYXJzZV9tb3VudF9lbnRyaWVzIHJldHVybiB0aGUgbG9vcCBkZXZpY2UgaW5zdGVhZCBvZiB0aGUgbW91bnRlZAoJZmlsZSBmb3IgbG9vcCBtb3VudHMuCgoJKiBwcm9ncmFtcy93aW5lY2ZnL0JnLnJjLCBwcm9ncmFtcy93aW5lY2ZnL0RlLnJjLAoJICBwcm9ncmFtcy93aW5lY2ZnL0VuLnJjLCBwcm9ncmFtcy93aW5lY2ZnL0ZpLnJjLAoJICBwcm9ncmFtcy93aW5lY2ZnL0ZyLnJjLCBwcm9ncmFtcy93aW5lY2ZnL0phLnJjLAoJICBwcm9ncmFtcy93aW5lY2ZnL05sLnJjLCBwcm9ncmFtcy93aW5lY2ZnL05vLnJjLAoJICBwcm9ncmFtcy93aW5lY2ZnL1J1LnJjLCBwcm9ncmFtcy93aW5lY2ZnL3Jlc291cmNlLmgsCgkgIHByb2dyYW1zL3dpbmVjZmcvd2luZWNmZy5yYzoKCVJlcG9ydCB0aGUgY29ycmVjdCB2ZXJzaW9uIGluIHRoZSBBYm91dCBkaWFsb2cuCgoJKiBwcm9ncmFtcy93aW5lY2ZnL3dpbmVjZmcuYzoKCVZpdGFsaXkgTWFyZ29sZW4gPHdpbmUtcGF0Y2hAa2lldmluZm8uY29tPgoJRml4ICJSZW1vdmUgYXBwbGljYXRpb24iIGZvciBhcHBsaWNhdGlvbnMgdGhhdCBoYWQgc29tZSBjdXN0b20KCXNldHRpbmdzLgoKCSogZGxscy9yaWNoZWQyMC9lZGl0b3IuYzogS3J6eXN6dG9mIEZvbHRtYW4gPHdkZXZAZm9sdG1hbi5jb20+CglGaXggdW5uZWNlc3NhcnkgKGFuZCBoYXJtZnVsKSByZXBlYXRlZCBzdGF0ZW1lbnQuCgoJKiBkbGxzL2QzZDgvZGV2aWNlLmM6IE9saXZlciBTdGllYmVyIDxvbGl2ZXJfc3RpZWJlckB5YWhvby5jby51az4KCUFsbG93IGN1YmUgdGV4dHVyZXMgdG8gYmUgdXBkYXRlZC4KCjIwMDUtMTAtMTIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzZXJ2ZXIvcHJvY2Vzcy5jOgoJUmVtb3ZlZCBpbmNvcnJlY3QgcHJvY2VzcyBxdWV1ZSBjaGVjayBpbiB3YWl0X2lucHV0X2lkbGUuCgoJKiBkbGxzL3dpbmVkM2QvZGlyZWN0eC5jOiBPbGl2ZXIgU3RpZWJlciA8b2xpdmVyX3N0aWViZXJAeWFob28uY28udWs+CglDaGFuZ2VkIHRoZSB3YXkgdGhhdCAyNGJpdCBhbmQgMzJiaXQgQWRhcHRlciBhbmQgQnVmZmVyIGZvcm1hdHMgYXJlCglyZXBvcnRlZCBhbGxvd2luZyBFVkUgb25saW5lIHRvIGdldCBwYXN0IHRoZSBzdGFydHVwIHNjcmVlbiBhbmQKCWFsbG93aW5nIHRoZSBGdXIgZGVtbyAoYW1vbmdzdCBvdGhlcnMpIHRvIHJ1biBpbiBhIHdpbmRvdywgYXMgdW5kZXIKCXdpbmRvd3MsIGluc3RlYWQgb2YgaW4gZnVsbHNjcmVlbiBtb2RlLgoKCSogZGxscy9nZGkvZW5obWV0YWZpbGUuYywgZGxscy9nZGkvdGVzdHMvbWV0YWZpbGUuYzoKCUh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglJbml0aWFsaXplIGEgYnVuY2ggb2YgZGMgdmFsdWVzIHRvIHRoZWlyIGRlZmF1bHQgYmVmb3JlIGVudW1lcmF0aW5nIGFuCgllbmhtZXRhZmlsZS4KCUFkZCB0ZXN0cyBmb3IgdGhlc2UgYW5kIGZvciBzb21lIHZhbHVlcyB0aGF0IGRvbid0IGdldCByZXNldC4KCgkqIGRsbHMvcmljaGVkMjAvbGlzdC5jLCBkbGxzL3JpY2hlZDIwL3N0eWxlLmM6CglLcnp5c3p0b2YgRm9sdG1hbiA8d2RldkBmb2x0bWFuLmNvbT4KCS0gU3R5bGUgdHJhY2UgaW5mb3JtYXRpb24gaXMgd3JpdHRlbiB0byBkaWZmZXJlbnQgZGVidWcgY2hhbm5lbCAoaXQncwoJICBub3QgdmVyeSB1c2VmdWwgYW55bW9yZSwgcmVmZXJlbmNlIGNvdW50aW5nIGxvb2tzIGNvcnJlY3QgZm9yIG5vdykuCgktIFRoZSBkb2N1bWVudCBkdW1wIGNvbnRhaW5zIHRoZSBjaGFyYWN0ZXIgcG9zaXRpb24gb2YgdGhlIGVuZC1vZi10ZXh0CgkgIG1hcmsuCgoJKiBkbGxzL2RkcmF3L2RldmljZV9vcGVuZ2wuYywgZGxscy9kZHJhdy90ZXh0dXJlLmM6CglDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglEaXNhYmxlIGRlcHRoIHRlc3Qgd2hlbiB0aGVyZSBpcyBubyBaIGJ1ZmZlciBhdHRhY2hlZC4KCUluaXRpYWxpc2UgdGV4dHVyZSBzdGF0ZXMgYXQgY3JlYXRpb24gaW5zdGVhZCBvZiB3aGVuIHRleCBuYW1lIGlzCglnZW5lcmF0ZWQuCgoyMDA1LTEwLTExICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy93aW5lZDNkL2RyYXdwcmltLmMsIGRsbHMvd2luZWQzZC92ZXJ0ZXhzaGFkZXIuYzoKCU9saXZlciBTdGllYmVyIDxvbGl2ZXJfc3RpZWJlckB5YWhvby5jby51az4KCUFkZCBjaGVja3MgZm9yIEFSQl92ZXJ0ZXhfcHJvZ3JhbSBiZWZvcmUgYWxsb3dpbmcgdmVydGV4IHNoYWRlcnMgdG8KCXVzZSBBUkJfdmVydGV4X3Byb2dyYW0uCgoJKiBkbGxzL3VzZXIvdGVzdHMvbW9uaXRvci5jOgoJU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtTGluZS5jb20+CglNYWtlIHVzZXIgdGVzdCBsb2FkYWJsZSBvbiBOVDQuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9hdG9tLmM6IERldGxlZiBSaWVrZW5iZXJnIDx3aW5lLmRldkB3ZWIuZGU+CglOVDMuNTEgcmV0dXJucyBFUlJPUl9NT1JFX0RBVEEuCgoJKiBkbGxzL2Rzb3VuZC90ZXN0cy9kczNkLmMsIGRsbHMvZHNvdW5kL3Rlc3RzL2RzM2Q4LmM6CglNaWtlIE8nUmVnYW4gPG1vcmVnYW5Ac3RyZXNzY2FmZS5jb20+CglUZXN0cyBjb21tZW50ZWQgb3V0IGFuZCBGSVhNRS1lZCBsb25nIGFnbyBub3cgcGFzcy4KCgkqIGRsbHMvcmljaGVkMjAvd3JpdGVyLmM6IFBoaWwgS3J5bG92IDxwaGlsQG5ld3N0YXIucmluZXQucnU+CglGaXhlZCBlbmNvZGluZyBvZiBub24tQVNDSUkgY2hhcnMuCgoJKiBkbGxzL2dkaS9wYWludGluZy5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkIGEgc2FmZXR5IGNoZWNrIGZvciBudW1iZXIgb2YgY29udHJvbCBwb2ludHMgaW4gUG9seUJlemllclRvLgoKCSogdG9vbHMvd2luZWR1bXAvbWFpbi5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJUmVuYW1lIHN0cnVjdCBvcHRpb24gaW4gb3JkZXIgdG8gYXZvaWQgYSBjb25mbGljdCB3aXRoIHdpbmUvcG9ydC5oLgoKCSogZGxscy9nZGkvY2xpcHBpbmcuYywgZGxscy9nZGkvdGVzdHMvY2xpcHBpbmcuYzoKCUh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglJZiB0aGUgbWV0YS9jbGlwIGludGVyc2VjdGlvbiAoUmFvKSByZWdpb24gZG9lc24ndCBleGlzdCwgcmV0dXJuCgllaXRoZXIgdGhlIG1ldGEgb3IgY2xpcCByZWdpb24gaWYgdGhleSBkbyBleGlzdC4KCVJlbW92ZSB0aGUgd2luZV90b2RvJ3MuCgoJKiBkbGxzL3gxMWRydi9rZXlib2FyZC5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJVXBkYXRlIEdlcm1hbiBhbmQgSHVuZ2FyaWFuIGtleWJvYXJkIGxheW91dHMgdG8gYmV0dGVyIG1hdGNoIFgxMQoJb25lcy4KCgkqIGRsbHMva2VybmVsL3Byb2ZpbGUuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJTWFrZSBzdXJlIG5vdCB0byBzdHJjcHkgZnJvbSBhIE5VTEwgZGVmYXVsdCB2YWx1ZSBwb2ludGVyLgoKCSogZGxscy9zaGVsbDMyL3Rlc3RzL3NobGZpbGVvcC5jOiBKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCVRlc3QgdGhhdCB0aGUgRk9fQ09QWSBhY3Rpb24gY3JlYXRlcyBvdXRwdXQgZGlyZWN0b3JpZXMgaWYgdGhleSBkb24ndAoJZXhpc3QuCgoJKiBkbGxzL2Rzb3VuZC9kc291bmQuYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUZpeCBQcmltYXJ5QnVmZmVySW1wbCBwb2ludGVyIHRvIGRlbGV0ZWQgRGlyZWN0U291bmRJbXBsLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYzogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gZml4IGZpcnN0IHR3byBhcmd1bWVudHMgdG8gJ0ZpbmRFeGVjdXRhYmxlQScgKGlucHV0IHN0cmluZ3MgaW5zdGVhZAoJICBvZiBwb2ludGVycykKCS0gZml4IGxhc3QgYXJndW1lbnQgdG8gJ0ZpbmRFeGVjdXRhYmxlVycgKGl0J3MgYW4gb3V0cHV0IHN0cmluZykKCjIwMDUtMTAtMTAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBNYWtlZmlsZS5pbjogUmVtb3ZlZCBub24tcG9ydGFibGUgbGRjb25maWcgaW52b2NhdGlvbiBhbmQgbWlzbGVhZGluZwoJd2FybmluZy4gUGVvcGxlIHdobyBuZWVkIHRoZSBleHRyYSBoYW5kLWhvbGRpbmcgc2hvdWxkIHVzZQoJd2luZWluc3RhbGwuCgoJKiBkbGxzL2RkcmF3L2RkcmF3X3ByaXZhdGUuaDogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUFkZCBhbiBhc3NlcnQgaWYgYm90aCBhcmd1bWVudHMgdG8gRERfU1RSVUNUX0NPUFlfQllTSVpFIGFyZSBlcXVhbC4KCgkqIGRsbHMvZ2RpL2NsaXBwaW5nLmMsIGRsbHMvZ2RpL3Rlc3RzLy5jdnNpZ25vcmUsCgkgIGRsbHMvZ2RpL3Rlc3RzL01ha2VmaWxlLmluLCBkbGxzL2dkaS90ZXN0cy9jbGlwcGluZy5jOgoJSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUdldFJhbmRvbVJnbiBvbmx5IHJldHVybnMgdGhlIFNZU1JHTiBpbiBzY3JlZW4gY29vcmRpbmF0ZXMuCglBZGQgYSBidW5jaCBvZiB0ZXN0cyBmb3IgR2V0UmFuZG9tUmduLgoKCSogZGxscy9yaWNoZWQyMC9lZGl0b3IuYzogS3J6eXN6dG9mIEZvbHRtYW4gPHdkZXZAZm9sdG1hbi5jb20+CglSZW1vdmVkIGJ1ZmZlciBvdmVycnVuIGVycm9yIChpbmNyZW1lbnRpbmcgb3V0cHV0IHBvaW50ZXIgb25lIHRpbWUgdG9vCgltdWNoIGluIG5vbi1DUkxGIG1vZGUpIG1ha2luZyBLZXlOb3RlIGZhaWwgdG8gaW5zdGFsbC4KCgkqIGRsbHMvd2luZWQzZC92ZXJ0ZXhzaGFkZXIuYzoKCU9saXZlciBTdGllYmVyIDxvbGl2ZXJfc3RpZWJlckB5YWhvby5jby51az4KCVJlcG9ydCB1bnJlY29nbml6ZWQgb3Bjb2RlcyBhcyBGSVhNRXMgaW5zdGVhZCBvZiBUUkFDRXMgc28gdGhhdCB0aGV5CglhcmUgZWFzaWVyIHRvIHNwb3QgYW5kIGZpeC4KCgkqIHRvb2xzL3dyYy93cmMuYzogQWRkIGN1cnJlbnQgZGlyZWN0b3J5IHRvIGRlZmF1bHQgaW5jbHVkZSBwYXRoLgoKCSogaW5jbHVkZS93aW5lL3dwcC5oLCBsaWJzL3dwcC9wcGwubCwgbGlicy93cHAvcHJlcHJvYy5jLAoJICBsaWJzL3dwcC93cHBfcHJpdmF0ZS5oLCB0b29scy93aWRsL3BhcnNlci5sLCB0b29scy93cmMvcGFyc2VyLnk6CglEZWZhdWx0IHNlYXJjaCBwYXRoIGZvciBhbiBpbmNsdWRlIGZpbGUgc2hvdWxkIGJlIGJhc2VkIG9uIHRoZSBwYXRoIG9mCgl0aGUgcGFyZW50IHNvdXJjZSBmaWxlLCBub3QgdGhlIGN1cnJlbnQgZGlyZWN0b3J5LgoKCSogZGxscy9udGRsbC90aW1lLmM6IFZpamF5IEtpcmFuIEthbXVqdSA8aW5meXF1ZXN0QGdtYWlsLmNvbT4KCUFkZGVkIFBIVCB0aW1lIHpvbmUuCgoJKiB0b29scy93aW5lcHJlZml4Y3JlYXRlLmluOiBSaWNoYXJkIENvaGVuIDxyaWNoYXJkQGRhaWpvYnUuY28udWs+CglEb24ndCBjcmVhdGUgb2xkIHVubG9jYWxpemVkIGRpcmVjdG9yaWVzIGluIHdpbmVwcmVmaXhjcmVhdGUuCgoJKiBkbGxzL3JpY2hlZDIwL2VkaXRvci5jOiBLcnp5c3p0b2YgRm9sdG1hbiA8d2RldkBmb2x0bWFuLmNvbT4KCVRoZSBwcmV2aW91cyBpbXBsZW1lbnRhdGlvbiB3YXMgYSB3b3JrYXJvdW5kIGZvciBvZmYtYnktb25lIGJ1ZyBpbgoJTUVfUnVuT2ZzRnJvbUNoYXJPZnMsIHRoaXMgb25lIHJlbGllcyBvbiBjb3JyZWN0IGJlaGF2aW9yIG9mIHRoYXQKCWZ1bmN0aW9uIGludHJvZHVjZWQgYnkgdGhlIHByZXZpb3VzIHBhdGNoLgoKCSogZGxscy9tc3ZjcnQvdGVzdHMvc3RyaW5nLmM6CglWaXRhbGl5IE1hcmdvbGVuIDx3aW5lLXBhdGNoQGtpZXZpbmZvLmNvbT4KCUZpeCBfaXNtYmJsZWFkIHRlc3QgdG8gcGFzcyBvbiB3aW5kb3dzLgoKCSogZGxscy9rZXJuZWwvZmlsZS5jLCBkbGxzL2tlcm5lbC90ZXN0cy9maWxlLmM6CglNYXhpbWUgQmVsbGVuZ+kgPG1heGltZS5iZWxsZW5nZUBsYXBvc3RlLm5ldD4KCUluIGNhc2Ugb2YgZmFpbHVyZSBhbmQgT0ZfRVhJU1QgaXMgc3BlY2lmaWVkLCByZXR1cm4gRkFMU0UgaW5zdGVhZCBvZgoJSEZJTEVfRVJST1IuCgoJKiBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZS5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBjaGFuZ2luZyBjb25zb2xlJ3Mgd2luZG93cy4KCgkqIGRsbHMvcmljaGVkMjAvcnVuLmM6IEtyenlzenRvZiBGb2x0bWFuIDx3ZGV2QGZvbHRtYW4uY29tPgoJRml4ZWQgRU9MIGRldGVjdGlvbiBpbiBNRV9SdW5PZnNGcm9tQ2hhck9mcyBpbiAxLjAgZW11bGF0aW9uIG1vZGUKCShuZWNlc3NhcnkgZm9yIGEgbm9uLXdvcmthcm91bmQgdmVyc2lvbiBvZiBFTV9QT1NGUk9NQ0hBUikuCgoJKiBkbGxzL3F1YXJ0ei92aWRlb3JlbmRlcmVyLmM6IENocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCU1ha2Ugd2luZG93IHVzZXMgYmxhY2sgYnJ1c2ggZm9yIGJhY2tncm91bmQuCglDaGVjayBmb3JtYXQgdHlwZSBvZiB2aWRlbyBzdHJlYW0uCgoJKiBkbGxzL2tlcm5lbC92b2x1bWUuYzogQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJQWRkIHRyYWNlIHRvIERlZmluZURvc0RldmljZS4KCgkqIGRsbHMvZGRyYXcvZGRyYXdfbWFpbi5jLCBkbGxzL2RkcmF3L2RkcmF3X3ByaXZhdGUuaCwKCSAgZGxscy9kZHJhdy9kZHJhd191dGlscy5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gZG8gbm90IHBhc3MgcHJpdmF0ZSBkYXRhIHRvIHRoZSBhcHBsaWNhdGlvbiBidXQgYSBjb3B5IG9mIGl0CgktIGFkZCBzb21lIG1vcmUgdHJhY2VzCgoJKiBkbGxzL3JpY2hlZDIwL2VkaXRvci5jOiBLcnp5c3p0b2YgRm9sdG1hbiA8d2RldkBmb2x0bWFuLmNvbT4KCUZpeCBhIGJ1ZyBpbiAxLjAgZW11bGF0aW9uIG1vZGUgaW4gRU1fTElORUxFTkdUSCAod2hpY2ggYnJva2UgUFRFCglpbnN0YWxsZXIpLgoKCSogdG9vbHMvd21jL3dtYy5jLCB0b29scy93bWMvd21jLmgsIHRvb2xzL3dtYy93cml0ZS5jLCB0b29scy93cmMvd3JjLmMsCgkgIHRvb2xzL3dyYy93cmMuaDoKCVNldCB0aGUgdmVyc2lvbiB3ZSByZXBvcnQgaW4gd21jIGFuZCB3cmMgZnJvbSB0aGUgZ2xvYmFsIFdpbmUKCXZlcnNpb24uCgoJKiBkbGxzL3JpY2hlZDIwL2VkaXRvci5jOiBLcnp5c3p0b2YgRm9sdG1hbiA8d2RldkBmb2x0bWFuLmNvbT4KCUZpeCAxLjAgZW11bGF0aW9uIG1vZGUgaW4gTUVfR2V0VGV4dFcuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmM6IFJpY2hhcmQgQ29oZW4gPHJpY2hhcmRAZGFpam9idS5jby51az4KCURvbid0IGhhcmRjb2RlICJ3aW5kb3dzIiBkaXJlY3RvcnkuCglNYWtlICJNeSBQaWN0dXJlcyIgZXRjLiBwb2ludCB0byAkSE9NRS4KCgkqIGRsbHMvbXN2Y3J0L3Rlc3RzL2ZpbGUuYzogUmljaGFyZCBDb2hlbiA8cmljaGFyZEBkYWlqb2J1LmNvLnVrPgoJRml4IGFuIGVycm9yIG1lc3NhZ2UuCgoJKiBkbGxzL2Rzb3VuZC9kc291bmQuYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCURpcmVjdFNvdW5kRGV2aWNlIHJlZmVyZW5jZSBjb3VudCBjbGVhbnVwLgoKCSogcHJvZ3JhbXMvcmVnZWRpdC9CZy5yYzogTWlsa28gS3JhY2hvdW5vdiA8bWlsa29AM21oei5uZXQ+CglVcGRhdGUgdGhlIEJ1bGdhcmlhbiByZXNvdXJjZSBmaWxlLgoKCSogZGxscy9rZXJuZWwvcHJvY2Vzcy5jOiBNYXJjdXMgTWVpc3NuZXIgPG1laXNzbmVyQHN1c2UuZGU+CglQYXNzIGNoYXJhY3RlcnMgdG8gZ2V0X2ZpbGVfbmFtZSgpIGhlbHBlciwgbm90IGJ5dGVzLgoKCSogZGxscy9kZHJhdy9zdXJmYWNlX21haW4uYzogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gcGFzcyBhIGNvcHkgb2YgdGhlIHN1cmZhY2UgZGVzY3JpcHRpb24gdG8gdGhlIGFwcGxpY2F0aW9uCgktIGluY3JlYXNlIHRoZSBzdXJmYWNlIHJlZmVyZW5jZSBjb3VudCB3aGVuIGdpdmluZyB0aGUgc3VyZmFjZSBwb2ludGVyCgkgIHRvIHRoZSBjYWxsZXIKCgkqIGRsbHMvZHNvdW5kL3Rlc3RzL2Rzb3VuZDguYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUZpeCBkc291bmQ4IHRlc3QgdG8gZGVhbCB3aXRoIGFuIGluc3RhbGxlZCBidXQgdW5yZWdpc3RlcmVkCglJRGlyZWN0U291bmQ4LgoKCSogcHJvZ3JhbXMvd2luaGVscC9obHBmaWxlLmM6IEVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRW5zdXJlIHdlIGFsd2F5cyBoYXZlIGEgdGl0bGUgZm9yIHRoZSAuaGxwIGZpbGUuCgoJKiBwcm9ncmFtcy93aW5lZGJnL21lbW9yeS5jOiBFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUhhbmRsZSBlcnJvciBjb25kaXRpb25zIGZvciBwcmludC4KCgkqIGRsbHMvd2lubW0vbWNpd2F2ZS9tY2l3YXZlLmM6IEVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgbW1pb09wZW5XIGZsYWdzIGZvciBwbGF5YmFjay4KCgkqIHByb2dyYW1zL3dpbmVjb25zb2xlL3VzZXIuYzogRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CgktIGZpeGVkIG1vdXNlIGRvdWJsZSBjbGljayBhbmQgd2hlZWxpbmcKCS0gYWxzbyBoYW5kbGluZyB0aGlyZCBtb3VzZSBidXR0b24gKGlmIGFueSkKCS0gZnVsbCBzdXBwb3J0IGZvciBjb250cm9sL3NoaWZ0IG1vZGlmaWVyCgoJKiBwcm9ncmFtcy93aW5lcGF0aC93aW5lcGF0aC5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBhIC0td2luZG93cyBvcHRpb24gZm9yIGNvbnZlcnRpbmcgYSBVbml4IHBhdGggdG8gYSBsb25nIFdpbmRvd3MKCXBhdGguCglGaXggdGhlIGRlc2NyaXB0aW9uIG9mIC0tbG9uZyBhbmQgLS1zaG9ydC4gVGhleSBhcmUgb25seSBnYXJhbnRlZWQgdG8KCXdvcmsgb24gV2luZG93cyBwYXRocyB0aG91Z2ggdGhleSB3aWxsIG9mdGVuIHN1Y2Nlc3NmdWxseSBjb252ZXJ0IFVuaXgKCXBhdGhzIHRvIFdpbmRvd3MgcGF0aHMgdG9vLgoKMjAwNS0xMC0wOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHRvb2xzL3dpZGwvd2lkbC5jOgoJU2V0IHRoZSB3aWRsIHZlcnNpb24gdG8gYmUgdGhlIHNhbWUgYXMgdGhlIGdsb2JhbCBwYWNrYWdlIHZlcnNpb24uCgoJKiBwcm9ncmFtcy93aW5lcGF0aC93aW5lcGF0aC5jOgoJU2V0IHRoZSB3aW5lcGF0aCB2ZXJzaW9uIHRvIGJlIHRoZSBzYW1lIGFzIHRoZSBnbG9iYWwgcGFja2FnZQoJdmVyc2lvbi4KCgkqIGRsbHMvdXNlci9kaWFsb2cuYzoKCUluIERJQUxPR19GaXhDaGlsZHJlbk9uQ2hhbmdlRm9jdXMgbWFrZSBzdXJlIHRoZSBidXR0b24gaXMgYSBwdXNoCglidXR0b24gYmVmb3JlIG1ha2luZyBpdCB0aGUgZGVmYXVsdC4KCgkqIHByb2dyYW1zL3dpbmVjb25zb2xlL2N1cnNlcy5jOiBFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUZ1bmN0aW9uIGtleXMgbm93IHdvcmsgaW4gY3Vyc2VzIG1vZGUuCgoJKiBkbGxzL21zdmNydC90ZXN0cy9maWxlLmM6IFZpdGFsaXkgTWFyZ29sZW4gPHdpbmUtcGF0Y2hAa2lldmluZm8uY29tPgoJQWRkIGEgZmV3IHRlc3RzIHRoYXQgZmFpbCB1bmRlciB3aW5lLgoKCSogZGxscy9yc2FiYXNlL3JzYWJhc2Uuc3BlYzoKCVN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJRm9yd2FyZCB0aGUgZnVuY3Rpb25zIERsbFJlZ2lzdGVyU2VydmVyIGFuZCBEbGxVbnJlZ2lzdGVyU2VydmVyIG9mCglyc2FiYXNlLmRsbCB0byByc2FlbmguZGxsLgoKCSogdG9vbHMvd2luYXBpL3dpbjE2LmFwaSwgdG9vbHMvd2luYXBpL3dpbjMyLmFwaToKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJTW92ZSBhbGwgVW5pY29kZSBhbmQgQW5zaSBzdHJpbmcgdHlwZXMgdG8gdGhlICVzdHIgYW5kICV3c3RyCglzZWN0aW9ucy4KCgkqIGRsbHMvcmljaGVkMjAvbGlzdC5jLCBkbGxzL3JpY2hlZDIwL3J1bi5jOgoJS3J6eXN6dG9mIEZvbHRtYW4gPHdkZXZAZm9sdG1hbi5jb20+CglTZW5kIHZlcmJvc2UgaW5mbyB0byBkaWZmZXJlbnQgZGVidWcgY2hhbm5lbHMgKHJpY2hlZGl0X2NoZWNrIGZvcgoJb3V0cHV0IGZyb20gb2Zmc2V0IGNoZWNrZXIsIHJpY2hlZGl0X2xpc3RzIGZvciB0aGUgZG9jdW1lbnQgbGlzdAoJZHVtcHMpLgoKMjAwNS0xMC0wNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHByb2dyYW1zL25vdGVwYWQvQmcucmMsIHByb2dyYW1zL25vdGVwYWQvQ3MucmMsCgkgIHByb2dyYW1zL25vdGVwYWQvRGEucmMsIHByb2dyYW1zL25vdGVwYWQvRGUucmMsCgkgIHByb2dyYW1zL25vdGVwYWQvRW4ucmMsIHByb2dyYW1zL25vdGVwYWQvRXMucmMsCgkgIHByb2dyYW1zL25vdGVwYWQvRmkucmMsIHByb2dyYW1zL25vdGVwYWQvRnIucmMsCgkgIHByb2dyYW1zL25vdGVwYWQvSHUucmMsIHByb2dyYW1zL25vdGVwYWQvSXQucmMsCgkgIHByb2dyYW1zL25vdGVwYWQvSmEucmMsIHByb2dyYW1zL25vdGVwYWQvTmwucmMsCgkgIHByb2dyYW1zL25vdGVwYWQvTm8ucmMsIHByb2dyYW1zL25vdGVwYWQvUGwucmMsCgkgIHByb2dyYW1zL25vdGVwYWQvUHQucmMsIHByb2dyYW1zL25vdGVwYWQvUnUucmMsCgkgIHByb2dyYW1zL25vdGVwYWQvU2kucmMsIHByb2dyYW1zL25vdGVwYWQvU2sucmMsCgkgIHByb2dyYW1zL25vdGVwYWQvU3cucmMsIHByb2dyYW1zL25vdGVwYWQvVGgucmMsCgkgIHByb2dyYW1zL25vdGVwYWQvV2EucmMsIHByb2dyYW1zL25vdGVwYWQvWmgucmM6CglKb25hdGhhbiBFcm5zdCA8Sm9uYXRoYW5ARXJuc3RGYW1pbHkuY2g+CglQYWdlc2V0dXAgZGlhbG9nIGZpeC4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYzogSm9uYXRoYW4gRXJuc3QgPEpvbmF0aGFuQEVybnN0RmFtaWx5LmNoPgoJRmlyc3QgY3JlYXRpb24gb2YgcmVnaXN0cnkgZW50cmllcyBtaXNzZWQgQXBwRGF0YS4KCgkqIGRsbHMvbXN2Y3J0L2ZpbGUuYywgZGxscy9tc3ZjcnQvdGVzdHMvZmlsZS5jOgoJVml0YWxpeSBNYXJnb2xlbiA8d2luZS1wYXRjaEBraWV2aW5mby5jb20+CglGaXggaW5pdGlhbCBwb3NpdGlvbiBmb3IgZmlsZXMgb3BlbmVkIHdpdGggT19BUFBFTkQgZmxhZy4KCgkqIGRsbHMvZGRyYXcvZGRyYXdfdXRpbHMuYywgZGxscy9kZHJhdy9zdXJmYWNlX21haW4uYzoKCVJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJRG9uJ3QgY3Jhc2ggaWYgcEREU0QgaXMgTlVMTCBvbiBEaXJlY3REcmF3U3VyZmFjZTo6TG9jay4KCjIwMDUtMTAtMDYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBsb2FkZXIvd2luZS5tYW4uaW4sIHByb2dyYW1zL3dpbmVkYmcvLmN2c2lnbm9yZSwKCSAgcHJvZ3JhbXMvd2luZWRiZy9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luZWRiZy93aW5lZGJnLm1hbiwKCSAgcHJvZ3JhbXMvd2luZWRiZy93aW5lZGJnLm1hbi5pbiwgc2VydmVyL3dpbmVzZXJ2ZXIubWFuLmluLAoJICB0b29scy8uY3ZzaWdub3JlLCB0b29scy9NYWtlZmlsZS5pbiwgdG9vbHMvd2lkbC8uY3ZzaWdub3JlLAoJICB0b29scy93aWRsL01ha2VmaWxlLmluLCB0b29scy93aWRsL3dpZGwubWFuLCB0b29scy93aWRsL3dpZGwubWFuLmluLAoJICB0b29scy93aW5lYnVpbGQvd2luZWJ1aWxkLm1hbi5pbiwgdG9vbHMvd2luZWR1bXAvLmN2c2lnbm9yZSwKCSAgdG9vbHMvd2luZWR1bXAvTWFrZWZpbGUuaW4sIHRvb2xzL3dpbmVkdW1wL3dpbmVkdW1wLm1hbiwKCSAgdG9vbHMvd2luZWR1bXAvd2luZWR1bXAubWFuLmluLCB0b29scy93aW5lZ2NjLy5jdnNpZ25vcmUsCgkgIHRvb2xzL3dpbmVnY2MvTWFrZWZpbGUuaW4sIHRvb2xzL3dpbmVnY2Mvd2luZWdjYy5tYW4sCgkgIHRvb2xzL3dpbmVnY2Mvd2luZWdjYy5tYW4uaW4sIHRvb2xzL3dpbmVtYWtlci5tYW4sCgkgIHRvb2xzL3dpbmVtYWtlci5tYW4uaW4sIHRvb2xzL3dtYy8uY3ZzaWdub3JlLCB0b29scy93bWMvTWFrZWZpbGUuaW4sCgkgIHRvb2xzL3dtYy93bWMubWFuLCB0b29scy93bWMvd21jLm1hbi5pbiwgdG9vbHMvd3JjLy5jdnNpZ25vcmUsCgkgIHRvb2xzL3dyYy9NYWtlZmlsZS5pbiwgdG9vbHMvd3JjL3dyYy5tYW4sIHRvb2xzL3dyYy93cmMubWFuLmluOgoJUHV0IFdpbmUgdmVyc2lvbiBpbmZvcm1hdGlvbiBpbiBhbGwgdGhlIG1hbiBwYWdlcy4KCgkqIE1ha2UucnVsZXMuaW4sIGxvYWRlci9NYWtlZmlsZS5pbiwgc2VydmVyL01ha2VmaWxlLmluLAoJICB0b29scy93aW5lYnVpbGQvTWFrZWZpbGUuaW46CglBZGRlZCBnbG9iYWwgcnVsZXMgZm9yIG1hbiBwYWdlcy4KCgkqIGRsbHMvbnRkbGwvc2VydmVyLmM6CglBZGRlZCBhIGNyaXRpY2FsIHNlY3Rpb24gYXJvdW5kIHRoZSBmZCBjYWNoZSB1bnRpbCB0aGUgcmFjZSBjb25kaXRpb25zCgljYW4gYmUgZml4ZWQgcHJvcGVybHkuCgoJKiBkbGxzL2F0bC9hdGwuc3BlYywgZGxscy9hdGwvYXRsX21haW4uYywgZGxscy9hdGwvYXRsYmFzZS5oOgoJSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCUFkZGVkIEF0bE1vZHVsZUFkZFRlcm1GdW5jIGltcGxlbWVudGF0aW9uLgoKCSogaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9zZWN1cml0eS5oOgoJUGV0ZXIgTGVtZW5rb3YgPHBldHJvQG1haWwucnU+CglBZGRlZCBzZWN1cml0eS5oLgoKCSogZGxscy9nZGkvZm9udC5jLCBkbGxzL2dkaS9mcmVldHlwZS5jLCBpbmNsdWRlL2dkaS5oOgoJSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBhIFdpbmUgc3BlY2lmaWMgZmxhZyB0byBHZXRSYXN0ZXJpemVDYXBzIHRoYXQgcmVwb3J0cyB3aGV0aGVyCglmcmVldHlwZSdzIHBhdGVudGVkIGhpbnRlciBpcyBlbmFibGVkLiAgVGhpcyB3aWxsIGJlIHVzZWQgYnkgd2luZXgxMQoJdG8gY2hlY2sgd2hldGhlciBpdCBzaG91bGQgaG9ub3VyIHRoZSBnYXNwIHRhYmxlIHNldHRpbmdzLgoKCSogZGxscy94MTFkcnYveHJlbmRlci5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJSWdub3JlIHRoZSBnYXNwIHRhYmxlIHdoZW4gd2UgaGF2ZSBubyBoaW50ZXIuCgoJKiBkbGxzL2RkcmF3L2RkcmF3X21haW4uYywgZGxscy9kZHJhdy90ZXN0cy9kZHJhd21vZGVzLmM6CglTdGVmYW4gRPZzaW5nZXIgPHN0ZWZhbmRvZXNpbmdlckBnbXguYXQ+CgktIEFkZCBoYW5kbGluZyBmb3IgRERTQ0xfU0VURk9DVVNXSU5ET1cgaW4gU2V0Q29vcGVyYXRpdmVMZXZlbC4KCS0gUHJpbnQgYSBmaXhtZSBmb3IgRERTQ0xfQ1JFQVRFREVWSUNFV0lORE9XICBhbmQKCSAgRERTQ0xfU0VUREVWSUNFV0lORE9XLgoJLSBEb24ndCBhbGxvdyBERFNDTF9FWENMVVNJVkUgd2l0aG91dCBERFNDTF9GVUxMU0NSRUVOLgoKCSogdG9vbHMvd2lkbC93aWRsLm1hbiwgdG9vbHMvd2luZWJ1aWxkL3dpbmVidWlsZC5tYW4uaW46CglGaXhlZCBzb21lIG5yb2ZmIHdhcm5pbmdzLgoKCSogZGxscy9jb21jdGwzMi9yZWJhci5jLCBkbGxzL2NvbWN0bDMyL3N0YXR1cy5jLCBkbGxzL2NvbWN0bDMyL3RhYi5jLAoJICBkbGxzL2NvbWN0bDMyL3RoZW1pbmcuYywgZGxscy9jb21tZGxnL2ZpbGVkbGcuYywKCSAgZGxscy9jb21tZGxnL3ByaW50ZGxnLmMsIGRsbHMvb2xlMzIvdGVzdHMvc3RvcmFnZTMyLmMsCgkgIGRsbHMvc2hlbGwzMi9lbnVtaWRsaXN0LmMsIGRsbHMvc2hlbGwzMi9zaGZsZHJfZGVza3RvcC5jLAoJICBkbGxzL3NoZWxsMzIvdGVzdHMvc2hsZm9sZGVyLmMsIHByb2dyYW1zL3dpbmVmaWxlL3dpbmVmaWxlLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVVzZSAic3RhdGljIGNvbnN0IiByYXRoZXIgdGhhbiAiY29uc3Qgc3RhdGljIiBhcyBnY2MgLVcgY29tcGxhaW5zCglhYm91dCB0aGUgZm9ybWVyLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvYXRvbS5jOiBWaXRhbGl5IE1hcmdvbGVuIDx3aW5lLXBhdGNoQGtpZXZpbmZvLmNvbT4KCUZpeCBhdG9tIHRlc3RzIG9uIHdpbjl4LgoKCSogZGxscy9rZXJuZWwvZWRpdGxpbmUuYzogSm9zaHVhIERhdmllcyA8amRhdmllc3R4QGNvbWNhc3QubmV0PgoJV2luZG93cyBpcyByZXR1cm5pbmcgdGhlIGxlbmd0aCBvZiB0aGUgc3RyaW5nLCBwbHVzIHRoZSBDUkxGCglkZWxpbWl0ZXJzLCB3aGVyZWFzIHdpbmVjb25zb2xlIGlzIHJldHVybmluZyBvbmUgbGVzcy4KCgkqIGRsbHMvcnNhZW5oL3JzYWVuaC5jOiBKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglXaGVuIGp1c3QgYSBwdWJsaWMga2V5IGlzIGltcG9ydGVkLCBpdHMgQUxHX0lEIHNob3VsZCBiZSBDQUxHX1JTQV9TSUdOCglyYXRoZXIgdGhhbiBDQUxHX1JTQV9LRVlYLgoKCSogdG9vbHMvd2luYXBpL3dpbjMyLmFwaSwgdG9vbHMvd2luYXBpL3dpbmFwaS5wbToKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJd2luYXBpX2NoZWNrIGRvZXMgbm90IHVzZSB0aGUgJy0tZXh0ZW5zaW9uJyBmbGFnIHNvIHJlbW92ZSBpdC4KCgkqIHRvb2xzL3dpbmVkdW1wL3BlLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglJZ25vcmUgdGhlIGRlbGF5IGxvYWQgZGlyZWN0b3J5IHNpemUuCgoJKiBkbGxzL21zeG1sMy9kb21kb2MuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCURvbid0IHRyeSB0byByZWxlYXNlIHRoZSBub2RlIGlmIHdlIGhhdmVuJ3QgbG9hZGVkIG9uZS4KCgkqIGRsbHMva2VybmVsL3N5bmMuYzogVml0YWxpeSBNYXJnb2xlbiA8d2luZS1wYXRjaEBraWV2aW5mby5jb20+CglBZGQgYnJhY2tldHMgYXJvdW5kIChhKT9iOmMgY29uc3RydWN0LgoKMjAwNS0xMC0wNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL2V4Y2VwdC5jOgoJU2V0IFdJTkVERUJVRyB0byBhbiBlbXB0eSB2YWx1ZSBpbnN0ZWFkIG9mIHJlbW92aW5nIGl0IHNvIHRoYXQgaXQgZ2V0cwoJcHJvcGVybHkgY2xlYXJlZCBpbiB0aGUgZGVidWdnZXIuCgoJKiBkbGxzL2tlcm5lbC9wcm9jZXNzLmM6CglDb3B5IFdJTkVERUJVRyBmcm9tIHRoZSBXaW5kb3dzIGVudmlyb25tZW50IHRvIGFsbG93IHBhc3NpbmcgYQoJbW9kaWZpZWQgdmFsdWUgdG8gYSBjaGlsZCBwcm9jZXNzLgoKCSogcHJvZ3JhbXMvdW5pbnN0YWxsZXIvbWFpbi5jOiBWaWpheSBLaXJhbiBLYW11anUgPGluZnlxdWVzdEBnbWFpbC5jb20+CglGaXhlZCB1bmluc3RhbGxlciBjbG9zZSBidXR0b24uCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IFZpdGFsaXkgTWFyZ29sZW4gPHdpbmUtcGF0Y2hAa2lldmluZm8uY29tPgoJQ29ycmVjdCBQYWdlIFVwL0Rvd24gaGFuZGxpbmcgaW4gcmVwb3J0IG1vZGUuCgoJKiBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmM6CglDbGVhciB0aGUgc2luZ2xlLXN0ZXAgZmxhZyBpbiBzZXR1cF9leGNlcHRpb24gaW5zdGVhZCBvZiBpbiB0aGUKCVNJR1RSQVAgaGFuZGxlciB0byBhdm9pZCBoYXZpbmcgdGhlIGFzc2lnbW5lbnQgb3B0aW1pemVkIG91dC4KCgkqIHRvb2xzL3dpbmVkdW1wL3BlLmM6CglGaXhlZCBkdW1waW5nIG9mIHRoZSBpbXBvcnQgZGlyZWN0b3J5IHRvIGlnbm9yZSB0aGUgZGlyZWN0b3J5IHNpemUuCgoJKiBkbGxzL250ZGxsL2xvYWRlci5jOgoJSWdub3JlIHRoZSBzaXplIG9mIHRoZSBpbXBvcnQgZGlyZWN0b3J5LCBwcm9jZXNzIGltcG9ydHMgdW50aWwgd2UgZmluZAoJYSBudWxsIGVudHJ5LgoKCSogZGxscy93aW5lZDNkL2RpcmVjdHguYzogT2xpdmVyIFN0aWViZXIgPG9saXZlcl9zdGllYmVyQHlhaG9vLmNvLnVrPgoJUHJvdmlkZSBsb29zZXIgZGV2aWNlIG1hdGNoaW5nIGZvciBiYWNrYnVmZmVyIGFuZCBkZXB0aCBidWZmZXIKCWZvcm1hdHMuIEl0IHNob3VsZCBhbGxvdyBzb21lIGdhbWVzIGFuZCBhcHBsaWNhdGlvbnMgdG8gcnVuIHdpdGhvdXQgWAoJYmVpbmcgaW4gdGhlIGNvcnJlY3QgYmFja2J1ZmZlciBmb3JtYXQgKGUuZy4gMTYgYml0IGdhbWVzIHdpbGwgcnVuCgl3aXRoIGEgMjRiaXQgWCBiYWNrYnVmZmVyKS4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYzogSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJVXNlIHdpbmVfZ2V0X2Rvc19maWxlX25hbWUgcmF0aGVyIHRoYW4gcmVseWluZyBvbiBHZXRGdWxsUGF0aE5hbWVXCgloYWNrLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBWaXRhbGl5IE1hcmdvbGVuIDx3aW5lLXBhdGNoQGtpZXZpbmZvLmNvbT4KCURvbid0IHN0YXJ0IGRyYWdnaW5nIGZvciBhIHNpbmdsZSBtb3VzZSBjbGljay4KCgkqIHRvb2xzL3dpbmVkdW1wL2R1bXAuYywgdG9vbHMvd2luZWR1bXAvcGUuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGQgc3VwcG9ydCBmb3IgZHVtcGluZyBkZWxheSBsb2FkIFBFIGRhdGEuCgoJKiBpbmNsdWRlL3dpbmRlZi5oOiBEaW1pIFBhdW4gPGRpbWlAbGF0dGljYS5jb20+CglBbGxvdyBNU1ZDIHRvIHVzZSBXaW5lJ3MgaGVhZGVycy4KCgkqIGRsbHMvdmVyc2lvbi9pbmZvLmM6IEphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJQ2hlY2sgdGhlIHNpemUgb2YgdGhlIGlucHV0IGJ1ZmZlciBzbyB3ZSBkb24ndCB3cml0ZSBwYXN0IHRoZSBlbmQuCgoJKiBmb250cy9NYWtlZmlsZS5pbjogVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJU29ydCB0aGUgZm9udCBmaWxlbmFtZXMgaW4gYWxwaGFiZXRpY2FsIG9yZGVyIGluIGZvbnRzL01ha2VmaWxlLmluLgoKCSogcHJvZ3JhbXMvd2luZWNmZy9saWJyYXJpZXMuYzogSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJUmVtb3ZlIC5kbGwgZnJvbSBEbGxPdmVycmlkZXMgZW50cmllcywgc3VjaCBlbnRyaWVzIGFyZSBpZ25vcmVkLgoKCSogcHJvZ3JhbXMvd2luZXRlc3QvTWFrZWZpbGUuaW46CglKb25hdGhhbiBFcm5zdCA8Sm9uYXRoYW5ARXJuc3RGYW1pbHkuY2g+CglNYWtlIHN1cmUgd2Ugb25seSBkZXBlbmQgb24gZGRyYXdfdGVzdCBpZiBYIHN1cHBvcnQgaXMgZW5hYmxlZC4KCgkqIHByb2dyYW1zL3dpbmVsYXVuY2hlci5pbjogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglEcm9wcGVkIHRoZSAidXNpbmcgbmF0aXZlIHdpbmRvd3MgbGlicmFyaWVzIiBjb21tZW50LgoJUmVwbGFjZSB3aW5lc2V0dXAgYnkgd2luZWNmZy4gRHJvcHBlZCBjb25maWcgZmlsZSBkZXRlY3Rpb24uCgoJKiBkbGxzL2NyeXB0MzIvZW5jb2RlLmM6IEp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCVVzZSBjb3JyZWN0IG5hbWVzIHdoZW4gbG9hZGluZyByZWdpc3RlcmVkIE9JRCBmdW5jdGlvbnMuCgoyMDA1LTEwLTAzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy93aW5zcG9vbC9pbmZvLmM6IE1heGltZSBCZWxsZW5n6SA8bWF4aW1lLmJlbGxlbmdlQGxhcG9zdGUubmV0PgoJRml4IGEgY3V0JnBhc3RlIG1pc3Rha2UuCgoJKiBkbGxzL3VzZXIvd2luLmM6IFZpdGFsaXkgTWFyZ29sZW4gPHdpbmUtcGF0Y2hAa2lldmluZm8uY29tPgoJVXNlIEdldFN5c3RlbU1ldHJpY3MgaW5zdGVhZCBvZiBoYXJkY29kaW5nIGRyYWcgd2lkdGggJiBoZWlnaHQuCgoJKiBkbGxzL250ZGxsL3NlcnZlci5jOgoJRml4ZWQgYSBidWcgd2hlcmUgd2UgY291bGQgc2V0IHRoZSB3cm9uZyBoYW5kbGUgaW4gdGhlIGZkIGNhY2hlIHdoZW4KCWVuY291bnRlcmluZyB0aGUgcmFjZSBjb25kaXRpb24gaW4gd2luZV9zZXJ2ZXJfaGFuZGxlX3RvX2ZkLgoKCSogZGxscy9jb21jdGwzMi90YWIuYzogVml0YWxpeSBNYXJnb2xlbiA8d2luZS1wYXRjaEBraWV2aW5mby5jb20+CglEb24ndCBhcnJhbmdlIHRhYnMgaWYgdGhlcmUgaXMgb25seSBvbmUgbGluZS4KCgkqIHByb2dyYW1zL3dpbmV0ZXN0L01ha2VmaWxlLmluOiBQYXVsIE1pbGxhciA8cGF1bEBhc3Ryby5nbGEuYWMudWs+CglGaXggY3Jvc3MtY29tcGlsYXRpb24gb2Ygd2luZXRlc3QgYnkgdXBkYXRlIHRoZSBtYWtlZmlsZSB0byB1c2UgT0JKUwoJaW5zdGVhZCBvZiB0aGUgbm93IGFic2VudCBBTExfT0JKUy4KCgkqIGRsbHMvcmljaGVkMjAvZWRpdG9yLmMsIGRsbHMvcmljaGVkMjAvcmVhZGVyLmM6CglLcnp5c3p0b2YgRm9sdG1hbiA8d2RldkBmb2x0bWFuLmNvbT4KCS0gUmVtb3ZlIGFub3RoZXIgcG90ZW50aWFsIHNvdXJjZXMgb2YgaW5maW5pdGUgbG9vcHMgY2F1c2VkIGJ5IEVPRiBpbgoJICB0aGUgbWlkZGxlIG9mIHRoZSBmb250IGFuZCBjb2xvciB0YWJsZXMuCgktIENsb3NpbmcgYnJhY2Ugb24gdGV4dCBsZXZlbCBpcyB0cmVhdGVkIGFzIEVPRiAoZWZmZWN0aXZlbHkKCSAgcHJvdGVjdGluZyB0aGUgY29udHJvbCBmcm9tIHRyYXNoIGFmdGVyIHRoZSBlbmQgb2YgUlRGKS4KCS0gUmVtb3ZlZCBtaXNsZWFkaW5nIGNvbW1lbnQgYWJvdXQgaW5jb21wbGV0ZSBidWZmZXJzIChJIHdhcwoJICBkZWZpbml0ZWx5IHdyb25nKS4KCgkqIHByb2dyYW1zL3dpbmVjZmcvTm8ucmM6IEFsZXhhbmRlciBOLiBT+HJuZXMgPGFsZXhAdGhlaGFuZG9mYWdvbnkuY29tPgoJRml4ZWQgYSBmZXcgbWlzc2luZyBjaGFyYWN0ZXJzIGluIHdpbmVjZmcuCgoJKiBkbGxzL250ZGxsL250LmM6IEl2YW4gTGVvIFB1b3RpIDxpdmFubGVvQGdtYWlsLmNvbT4KCU1ha2UgYSBzdHViIGFjdHVhbGx5IHNheSAic3R1YiIuCgoJKiBkbGxzL3VzZXIvaW5wdXQuYywgZGxscy91c2VyL3Rlc3RzL3dpbi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglSZWxlYXNlQ2FwdHVyZSBzaG91bGQgcmV0dXJuIFRSVUUuCgoJKiBwcm9ncmFtcy93aW5lZGJnL3dpbmVkYmcuYzogRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglOb3cgcHJpbnRpbmcgaW5mb3JtYXRpb24gd2hlbiBjaGFuZ2luZyBmdW5jdGlvbiB3aGlsZSBzaW5nbGUgc3RlcHBpbmcuCgoJKiBwcm9ncmFtcy93aW5lZGJnL3R5cGVzLmM6IEVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgYml0ZmllbGQgZXh0cmFjdGlvbi4KCgkqIGluY2x1ZGUvZDNkOXR5cGVzLmgsIGluY2x1ZGUvZHNvdW5kLmg6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJRml4ZXMgc28gZDNkOS5oIGFuZCBkc291bmQuaCBjYW4gYmUgaW5jbHVkZWQgYXQgdGhlIHNhbWUgdGltZS4KCgkqIGRsbHMvcmljaGVkMjAvZWRpdG9yLmM6IEtyenlzenRvZiBGb2x0bWFuIDx3ZGV2QGZvbHRtYW4uY29tPgoJSW1wbGVtZW50ZWQgRU1fR0VURklSU1RWSVNJQkxFTElORSBhbmQgRU1fUE9TRlJPTUNIQVIgKGJhc2ljCglzdWJvcHRpbWFsIGltcGxlbWVudGF0aW9uLCBjYW4gYmUgb3B0aW1pemVkIHRvIHNraXAgd2hvbGUgcGFyYWdyYXBocwoJbGF0ZXIgaWYgaXQncyB1c2VmdWwgYXQgYWxsKS4KCgkqIHByb2dyYW1zL3dpbmVmaWxlL3dpbmVmaWxlLmM6IE1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CglGaXggZm9udCBoYW5kbGUgbGVhayBhZnRlciBjbG9zaW5nIHRoZSAnY2hvb3NlIGZvbnQnIGRpYWxvZyAoYmFzZWQgb24KCW9yZ2luYWwgcGF0Y2ggYnkgJ0NocmlzdG9waCBhdCBBcGlWaWV3ZXIuZGUnKQoKCSogZGxscy9zaGVsbDMyL3NobGV4ZWMuYzogTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCVNpbXBsaWZ5ICdzZWknIHN0cnVjdHVyZSBpbml0aWFsaXphdGlvbiBpbiBTaGVsbEV4ZWN1dGVBL1cuCgoJKiBkbGxzL29sZTMyL2NvbXBvYmouYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJUGFzcyBXTV9RVUlUIHRvIG91dGVyIG1vZGFsIGxvb3AuCgoJKiBkbGxzL3VzZXIvbWlzYy5jLCBkbGxzL3VzZXIvdXNlcjMyLnNwZWM6CglTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCUFkZGVkIHN0dWIgZm9yIFVucmVnaXN0ZXJEZXZpY2VOb3RpZmljYXRpb24uCgoJKiBwcm9ncmFtcy93Y21kL3djbWRtYWluLmM6IEJyaWFuIEdyYXlzb24gPGJncmF5c29uQGZyZWVzY2FsZS5jb20+CglTa2lwIHRhYnMgaW4gd2NtZC4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jLCBkbGxzL3dpbm1tL3dpbmVvc3MvZHNyZW5kZXIuYzoKCVZpdGFsaXkgTWFyZ29sZW4gPHdpbmUtcGF0Y2hAa2lldmluZm8uY29tPgoJUmVwbGFjZSByZWdpc3RyeSBlZGl0aW5nIGluc3RydWN0aW9ucyB3aXRoIHdpbmVjZmcuCgoJKiBkbGxzL2RiZ2hlbHAvc3RhYnMuYzogRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CgktIE5fUFNZTSBzdGFicyBibG9ja3MgKGFrYSBwYXJhbWV0ZXJzKSBjYW4gYWxzbyBjb250YWluIGEgdHlwZWRlZgoJLSBzaG9ydGVuIHNvbWUgcGF0aHMKCgkqIHByb2dyYW1zL3dpbmVkYmcvdHlwZXMuYzogRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBhcnJheSBkZXJlZmVyZW5jaW5nLgoKCSogZGxscy93aW5zb2NrL01ha2VmaWxlLmluOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJTW92ZSB1c2VyMzIgdG8gZGVsYXkgbG9hZGVkIGltcG9ydHMuCgoJKiBkbGxzL3dpbmVkb3MvbW9kdWxlLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglDb252ZXJ0IGEgV0FSTiB0byBhIEZJWE1FIHRvIG1ha2UgaXQgdmlzaWJsZSB0byBhIHVzZXIsIHJlcGxhY2UgYW4gRVJSCglieSBhIEZJWE1FIGFzIGl0J3MgbW9yZSBhcHByb3ByaWF0ZS4KCgkqIGRsbHMvZHhlcnI4L2Vycm9ycy5hd2ssIGRsbHMvZHhlcnI5L2Vycm9ycy5hd2s6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQWRkIHN1cHBvcnQgZm9yIGVycm9ycyB3aXRoIG1vcmUgdGhhbiBvbmUgbmFtZS4KCgkqIGRsbHMvd2luZWQzZC9kaXJlY3R4LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJVXNlIGNvcnJlY3QgbWluTG9va3VwW10gYXJyYXkgZW50cnkuCgoJKiBwcm9ncmFtcy93aW5lbGF1bmNoZXIuaW46IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRG8gbm90IGFwcGVuZCBlbXB0eSAiOiIgaW4gTERfTElCUkFSWV9QQVRILgoKCSogZGxscy9yaWNoZWQyMC9lZGl0b3IuYzogS3J6eXN6dG9mIEZvbHRtYW4gPHdkZXZAZm9sdG1hbi5jb20+CglGaXhlZCBhbm90aGVyIGNhc2Ugb2YgbWlzdW5kZXJzdGFuZGluZyBNU0ROIHdydCBTdHJlYW1JblByb2MsIGNhdXNpbmcKCWxpY2Vuc2UgdGV4dCB0byBiZSB0cnVuY2F0ZWQgaW4gUGljYXNhIGluc3RhbGxlciAoYXMgd2VsbCBhcyBzb21lCglvdGhlciBwcm9ncmFtcywgZXNwZWNpYWxseSB0aG9zZSB0aGF0IGRpc3BsYXkgbG9uZyB0ZXh0cyB3aXRoIE5TSVMpLgoKMjAwNS0wOS0zMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIEFOTk9VTkNFLCBDaGFuZ2VMb2csIFZFUlNJT04sIGNvbmZpZ3VyZTogUmVsZWFzZSAyMDA1MDkzMC4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KMjAwNS0wOS0zMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvY3J5cHQzMi9lbmNvZGUuYywgZGxscy9jcnlwdDMyL3Rlc3RzL2VuY29kZS5jOgoJSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJTWFrZSBDcnlwdEltcG9ydC9FeHBvcnRQdWJsaWNLZXlJbmZvRXggYmVoYXZlIHRoZSB3YXkgTVNETiBkZXNjcmliZXMKCXRoZW0sIGFuZCBhIGNvdXBsZSBvZiB0ZXN0cy4KCgkqIGluY2x1ZGUvd2luY3J5cHQuaDogSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJQWRkIGRlZmluZXMgbmVlZGVkIGZvciBpbnN0YWxsYWJsZSBPSUQgZnVuY3Rpb25zLgoKCSogaW5jbHVkZS9kcGxheTguaDogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUFkZGVkIG1pc3NpbmcgZXJyb3IgY29kZS4KCgkqIGRsbHMvd2luZWRvcy9kb3N2bS5jOiBHZXJhbGQgUGZlaWZlciA8Z2VyYWxkQHBmZWlmZXIuY29tPgoJV2Ugb25seSBuZWVkIHRoZSByZWxheSBkZWJ1ZyBjaGFubmVsIG9uIE1aX1NVUFBPUlRFRCBwbGF0Zm9ybXMuCgoJKiBkbGxzL3VybG1vbi9zZWNfbWdyLmMsIGRsbHMvdXJsbW9uL3Rlc3RzL21pc2MuYzoKCUphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglBZGRlZCBHZXRab25lQWN0aW9uUG9saWN5IGltcGxlbWVudGF0aW9uLgoKCSogcHJvZ3JhbXMvdW5pbnN0YWxsZXIvRmkucmMsIHByb2dyYW1zL3VuaW5zdGFsbGVyL3JzcmMucmM6CglLaW1tbyBNeWxseXZpcnRhIDxraW1tby5teWxseXZpcnRhQGdtYWlsLmNvbT4KCUZpbm5pc2ggcmVzb3VyY2VzIGZvciB1bmluc3RhbGxlci4KCgkqIGRsbHMvbnRkbGwvdGVzdHMvLmN2c2lnbm9yZSwgZGxscy9udGRsbC90ZXN0cy9NYWtlZmlsZS5pbiwKCSAgZGxscy9udGRsbC90ZXN0cy9vbS5jOgoJVml0YWxpeSBNYXJnb2xlbiA8d2luZS1wYXRjaEBraWV2aW5mby5jb20+CglBZGQgYSBmZXcgdGVzdHMgZm9yIG9iamVjdCBtYW5hZ2VyLgoKCSogZGxscy9rZXJuZWwvc3luYy5jLCBkbGxzL2tlcm5lbC92aXJ0dWFsLmM6CglWaXRhbGl5IE1hcmdvbGVuIDx3aW5lLXBhdGNoQGtpZXZpbmZvLmNvbT4KCUFkZCBicmFja2V0cyBhcm91bmQgKGEpP2I6YyBjb25zdHJ1Y3QuCgoJKiBkbGxzL21zaS9hY3Rpb24uYywgZGxscy9tc2kvaGVscGVycy5jLCBkbGxzL21zaS9tc2kuYywKCSAgZGxscy9tc2kvbXNpcHJpdi5oOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJUmVuYW1lIEFDVElPTl9Eb1RvcExldmVsSU5TVEFMTCB0byBNU0lfSW5zdGFsbFBhY2thZ2UsIHJlbW92ZSBpdHMKCWR1cGxpY2F0ZSA0dGggcGFyYW1ldGVyLgoJU3BsaXQgdGhlIGNvZGUgdG8gY29weSBhIHBhY2thZ2UgaW50byBhIHNlcGFyYXRlIGZ1bmN0aW9uLgoKMjAwNS0wOS0yOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHRvb2xzL3dpbmVidWlsZC9idWlsZC5oLCB0b29scy93aW5lYnVpbGQvbWFpbi5jLAoJICB0b29scy93aW5lYnVpbGQvcGFyc2VyLmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYywKCSAgdG9vbHMvd2luZWJ1aWxkL3dpbmVidWlsZC5tYW4uaW46CglHZXQgcmlkIG9mIHRoZSBkZWJ1ZyBjaGFubmVscyBzdXBwb3J0LgoKCSogZGxscy91c2VyL2RlZnduZC5jLCBkbGxzL3VzZXIvdGVzdHMvd2luLmM6CglKYXNvbiBFZG1lYWRlcyA8dXNAZWRtZWFkZXMubWUudWs+CglBbHdheXMgcmV0dXJuIE1BX0FDVElWQVRFIGZvciBXTV9NT1VTRUFDVElWQVRFIGluIERlZldpbmRvd1Byb2MuCgoJKiBkbGxzL3dpbnNwb29sL2luZm8uYywgZGxscy93bGRhcDMyL2Jlci5jOgoJS2V2aW4gS29sdHphdSA8a2V2aW5AcGxvcC5vcmc+CglGaXggd2FybmluZ3MgaW4gNjRiaXQuCgoJKiBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYzogRGVuaXMgTHVraWFub3YgPGRlbmlzQHZveGVsc29mdC5jb20+CglVc2UgSUNVX0JST1dTRVJfTU9ERSBpbiBJbnRlcm5ldENhbm9uaWNhbGl6ZVVybC4KCgkqIGluY2x1ZGUvd2luZS9kZWJ1Zy5oLCBsaWJzL3dpbmUvZGVidWcuYywgbGlicy93aW5lL3dpbmUuZGVmLAoJICBsaWJzL3dpbmUvd2luZS5tYXA6CglFeHBvcnQgdGhlIGdldF9jaGFubmVsX2ZsYWdzIGZ1bmN0aW9uIGF2b2lkIHdhcm5pbmdzIHdoZW4gcGFzc2luZyBhCglOVUxMIGZvcm1hdCB0byB3aW5lX2RiZ19sb2cuCglSZW1vdmVkIGEgZmV3IG5vIGxvbmdlciB1c2VkIGZ1bmN0aW9ucy4KCgkqIGRsbHMvbXNpL2RpYWxvZy5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBdm9pZCBVcGRhdGVXaW5kb3csIGl0IGNhdXNlcyB0cm91YmxlIHdpdGggV1NfRVhfVFJBTlNQQVJFTlQuCgoJKiBkbGxzL3dpbmVkM2QvZGV2aWNlLmM6IFZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCURvbid0IGRlZmluZSBzb21lIGZ1bmN0aW9ucy92YXJpYWJsZXMgaWYgdGhleSB3b24ndCBiZSB1c2VkIGFmdGVyIGluCgl3aW5lZDNkLgoKCSogdG9vbHMvd2luZW1ha2VyOiBSZW1vdmVkIHJ1bGVzIGZvciAuZGJnLmMgZmlsZXMuCgoJKiBkbGxzL2FjdGl2ZWRzLy5jdnNpZ25vcmUsIGRsbHMvYWR2YXBpMzIvLmN2c2lnbm9yZSwKCSAgZGxscy9hZHZwYWNrLy5jdnNpZ25vcmUsIGRsbHMvYW1zdHJlYW0vLmN2c2lnbm9yZSwKCSAgZGxscy9hdGwvLmN2c2lnbm9yZSwgZGxscy9hdmljYXAzMi8uY3ZzaWdub3JlLAoJICBkbGxzL2F2aWZpbDMyLy5jdnNpZ25vcmUsIGRsbHMvY2FiaW5ldC8uY3ZzaWdub3JlLAoJICBkbGxzL2NhcGkyMDMyLy5jdnNpZ25vcmUsIGRsbHMvY2FyZHMvLmN2c2lnbm9yZSwKCSAgZGxscy9jZmdtZ3IzMi8uY3ZzaWdub3JlLCBkbGxzL2NvbWNhdC8uY3ZzaWdub3JlLAoJICBkbGxzL2NvbWN0bDMyLy5jdnNpZ25vcmUsIGRsbHMvY29tbWRsZy8uY3ZzaWdub3JlLAoJICBkbGxzL2NydGRsbC8uY3ZzaWdub3JlLCBkbGxzL2NyeXB0MzIvLmN2c2lnbm9yZSwKCSAgZGxscy9jcnlwdGRsbC8uY3ZzaWdub3JlLCBkbGxzL2N0bDNkLy5jdnNpZ25vcmUsCgkgIGRsbHMvZDNkOC8uY3ZzaWdub3JlLCBkbGxzL2QzZDkvLmN2c2lnbm9yZSwgZGxscy9kM2RpbS8uY3ZzaWdub3JlLAoJICBkbGxzL2QzZHJtLy5jdnNpZ25vcmUsIGRsbHMvZDNkeDgvLmN2c2lnbm9yZSwgZGxscy9kM2R4b2YvLmN2c2lnbm9yZSwKCSAgZGxscy9kYmdoZWxwLy5jdnNpZ25vcmUsIGRsbHMvZGNpbWFuMzIvLmN2c2lnbm9yZSwKCSAgZGxscy9kZHJhdy8uY3ZzaWdub3JlLCBkbGxzL2RldmVudW0vLmN2c2lnbm9yZSwKCSAgZGxscy9kaW5wdXQvLmN2c2lnbm9yZSwgZGxscy9kaW5wdXQ4Ly5jdnNpZ25vcmUsCgkgIGRsbHMvZG1iYW5kLy5jdnNpZ25vcmUsIGRsbHMvZG1jb21wb3MvLmN2c2lnbm9yZSwKCSAgZGxscy9kbWltZS8uY3ZzaWdub3JlLCBkbGxzL2RtbG9hZGVyLy5jdnNpZ25vcmUsCgkgIGRsbHMvZG1zY3JpcHQvLmN2c2lnbm9yZSwgZGxscy9kbXN0eWxlLy5jdnNpZ25vcmUsCgkgIGRsbHMvZG1zeW50aC8uY3ZzaWdub3JlLCBkbGxzL2RtdXNpYy8uY3ZzaWdub3JlLAoJICBkbGxzL2RtdXNpYzMyLy5jdnNpZ25vcmUsIGRsbHMvZHBsYXkvLmN2c2lnbm9yZSwKCSAgZGxscy9kcGxheXgvLmN2c2lnbm9yZSwgZGxscy9kcG5ldC8uY3ZzaWdub3JlLAoJICBkbGxzL2RwbmhwYXN0Ly5jdnNpZ25vcmUsIGRsbHMvZHNvdW5kLy5jdnNpZ25vcmUsCgkgIGRsbHMvZHN3YXZlLy5jdnNpZ25vcmUsIGRsbHMvZHhkaWFnbi8uY3ZzaWdub3JlLAoJICBkbGxzL2R4ZXJyOC8uY3ZzaWdub3JlLCBkbGxzL2R4ZXJyOS8uY3ZzaWdub3JlLCBkbGxzL2dkaS8uY3ZzaWdub3JlLAoJICBkbGxzL2dsdTMyLy5jdnNpZ25vcmUsIGRsbHMvZ2x1dDMyLy5jdnNpZ25vcmUsCgkgIGRsbHMvaGhjdHJsLm9jeC8uY3ZzaWdub3JlLCBkbGxzL2ljY3ZpZC8uY3ZzaWdub3JlLAoJICBkbGxzL2ljbXAvLmN2c2lnbm9yZSwgZGxscy9pZnNtZ3IudnhkLy5jdnNpZ25vcmUsCgkgIGRsbHMvaW1hZ2VobHAvLmN2c2lnbm9yZSwgZGxscy9pbW0zMi8uY3ZzaWdub3JlLAoJICBkbGxzL2lwaGxwYXBpLy5jdnNpZ25vcmUsIGRsbHMvaXRzcy8uY3ZzaWdub3JlLAoJICBkbGxzL2tlcm5lbC8uY3ZzaWdub3JlLCBkbGxzL2x6ZXhwYW5kLy5jdnNpZ25vcmUsCgkgIGRsbHMvbWFwaTMyLy5jdnNpZ25vcmUsIGRsbHMvbWNpYXZpMzIvLmN2c2lnbm9yZSwKCSAgZGxscy9tY2ljZGEvLmN2c2lnbm9yZSwgZGxscy9tY2lzZXEvLmN2c2lnbm9yZSwKCSAgZGxscy9taWRpbWFwLy5jdnNpZ25vcmUsIGRsbHMvbWxhbmcvLmN2c2lnbm9yZSwKCSAgZGxscy9tbWRldmxkci52eGQvLmN2c2lnbm9yZSwgZGxscy9tb25vZGViZy52eGQvLmN2c2lnbm9yZSwKCSAgZGxscy9tcHIvLmN2c2lnbm9yZSwgZGxscy9tc2FjbS8uY3ZzaWdub3JlLAoJICBkbGxzL21zYWNtL2ltYWFkcDMyLy5jdnNpZ25vcmUsIGRsbHMvbXNhY20vbXNhZHAzMi8uY3ZzaWdub3JlLAoJICBkbGxzL21zYWNtL21zZzcxMS8uY3ZzaWdub3JlLCBkbGxzL21zYWNtL3dpbmVtcDMvLmN2c2lnbm9yZSwKCSAgZGxscy9tc2Ntcy8uY3ZzaWdub3JlLCBkbGxzL21zZG1vLy5jdnNpZ25vcmUsIGRsbHMvbXNodG1sLy5jdnNpZ25vcmUsCgkgIGRsbHMvbXNpLy5jdnNpZ25vcmUsIGRsbHMvbXNpbWczMi8uY3ZzaWdub3JlLCBkbGxzL21zaXN5cy8uY3ZzaWdub3JlLAoJICBkbGxzL21zbmV0MzIvLmN2c2lnbm9yZSwgZGxscy9tc3JsZTMyLy5jdnNpZ25vcmUsCgkgIGRsbHMvbXN2Y3J0Ly5jdnNpZ25vcmUsIGRsbHMvbXN2Y3J0MjAvLmN2c2lnbm9yZSwKCSAgZGxscy9tc3ZjcnQ0MC8uY3ZzaWdub3JlLCBkbGxzL21zdmNydGQvLmN2c2lnbm9yZSwKCSAgZGxscy9tc3ZpZGMzMi8uY3ZzaWdub3JlLCBkbGxzL21zdmlkZW8vLmN2c2lnbm9yZSwKCSAgZGxscy9tc3dzb2NrLy5jdnNpZ25vcmUsIGRsbHMvbXN4bWwzLy5jdnNpZ25vcmUsCgkgIGRsbHMvbmV0YXBpMzIvLmN2c2lnbm9yZSwgZGxscy9uZXdkZXYvLmN2c2lnbm9yZSwKCSAgZGxscy9udGRsbC8uY3ZzaWdub3JlLCBkbGxzL29ianNlbC8uY3ZzaWdub3JlLAoJICBkbGxzL29kYmMzMi8uY3ZzaWdub3JlLCBkbGxzL29kYmNjcDMyLy5jdnNpZ25vcmUsCgkgIGRsbHMvb2xlMzIvLmN2c2lnbm9yZSwgZGxscy9vbGVhY2MvLmN2c2lnbm9yZSwKCSAgZGxscy9vbGVhdXQzMi8uY3ZzaWdub3JlLCBkbGxzL29sZWNsaS8uY3ZzaWdub3JlLAoJICBkbGxzL29sZWRsZy8uY3ZzaWdub3JlLCBkbGxzL29sZXBybzMyLy5jdnNpZ25vcmUsCgkgIGRsbHMvb2xlc3ZyLy5jdnNpZ25vcmUsIGRsbHMvb3BlbmdsMzIvLmN2c2lnbm9yZSwKCSAgZGxscy9wb3dycHJvZi8uY3ZzaWdub3JlLCBkbGxzL3BzYXBpLy5jdnNpZ25vcmUsCgkgIGRsbHMvcWNhcC8uY3ZzaWdub3JlLCBkbGxzL3F1YXJ0ei8uY3ZzaWdub3JlLAoJICBkbGxzL3Jhc2FwaTMyLy5jdnNpZ25vcmUsIGRsbHMvcmljaGVkMjAvLmN2c2lnbm9yZSwKCSAgZGxscy9yaWNoZWRpdC8uY3ZzaWdub3JlLCBkbGxzL3JwY3J0NC8uY3ZzaWdub3JlLAoJICBkbGxzL3JzYWJhc2UvLmN2c2lnbm9yZSwgZGxscy9yc2FlbmgvLmN2c2lnbm9yZSwKCSAgZGxscy9zZWN1cjMyLy5jdnNpZ25vcmUsIGRsbHMvc2Vuc2FwaS8uY3ZzaWdub3JlLAoJICBkbGxzL3NlcmlhbHVpLy5jdnNpZ25vcmUsIGRsbHMvc2V0dXBhcGkvLmN2c2lnbm9yZSwKCSAgZGxscy9zaGRvY3Z3Ly5jdnNpZ25vcmUsIGRsbHMvc2hlbGwzMi8uY3ZzaWdub3JlLAoJICBkbGxzL3NoZm9sZGVyLy5jdnNpZ25vcmUsIGRsbHMvc2hsd2FwaS8uY3ZzaWdub3JlLAoJICBkbGxzL3NubXBhcGkvLmN2c2lnbm9yZSwgZGxscy9zdGRvbGUyLnRsYi8uY3ZzaWdub3JlLAoJICBkbGxzL3N0ZG9sZTMyLnRsYi8uY3ZzaWdub3JlLCBkbGxzL3N0aS8uY3ZzaWdub3JlLAoJICBkbGxzL3RhcGkzMi8uY3ZzaWdub3JlLCBkbGxzL3R0eWRydi8uY3ZzaWdub3JlLAoJICBkbGxzL3R3YWluLy5jdnNpZ25vcmUsIGRsbHMvdW5pY293cy8uY3ZzaWdub3JlLCBkbGxzL3VybC8uY3ZzaWdub3JlLAoJICBkbGxzL3VybG1vbi8uY3ZzaWdub3JlLCBkbGxzL3VzZXIvLmN2c2lnbm9yZSwgZGxscy91c3AxMC8uY3ZzaWdub3JlLAoJICBkbGxzL3V4dGhlbWUvLmN2c2lnbm9yZSwgZGxscy92ZGhjcC52eGQvLmN2c2lnbm9yZSwKCSAgZGxscy92ZG1kYmcvLmN2c2lnbm9yZSwgZGxscy92ZXJzaW9uLy5jdnNpZ25vcmUsCgkgIGRsbHMvdm1tLnZ4ZC8uY3ZzaWdub3JlLCBkbGxzL3ZuYnQudnhkLy5jdnNpZ25vcmUsCgkgIGRsbHMvdm5ldGJpb3MudnhkLy5jdnNpZ25vcmUsIGRsbHMvdnRkYXBpLnZ4ZC8uY3ZzaWdub3JlLAoJICBkbGxzL3Z3aW4zMi52eGQvLmN2c2lnbm9yZSwgZGxscy93aW4zMnMvLmN2c2lnbm9yZSwKCSAgZGxscy93aW5hc3BpLy5jdnNpZ25vcmUsIGRsbHMvd2luZWQzZC8uY3ZzaWdub3JlLAoJICBkbGxzL3dpbmVkb3MvLmN2c2lnbm9yZSwgZGxscy93aW5lcHMvLmN2c2lnbm9yZSwKCSAgZGxscy93aW5pbmV0Ly5jdnNpZ25vcmUsIGRsbHMvd2lubW0vLmN2c2lnbm9yZSwKCSAgZGxscy93aW5tbS9qb3lzdGljay8uY3ZzaWdub3JlLCBkbGxzL3dpbm1tL21jaXdhdmUvLmN2c2lnbm9yZSwKCSAgZGxscy93aW5tbS93YXZlbWFwLy5jdnNpZ25vcmUsIGRsbHMvd2lubW0vd2luZWFsc2EvLmN2c2lnbm9yZSwKCSAgZGxscy93aW5tbS93aW5lYXJ0cy8uY3ZzaWdub3JlLCBkbGxzL3dpbm1tL3dpbmVhdWRpb2lvLy5jdnNpZ25vcmUsCgkgIGRsbHMvd2lubW0vd2luZWVzZC8uY3ZzaWdub3JlLCBkbGxzL3dpbm1tL3dpbmVqYWNrLy5jdnNpZ25vcmUsCgkgIGRsbHMvd2lubW0vd2luZW5hcy8uY3ZzaWdub3JlLCBkbGxzL3dpbm1tL3dpbmVvc3MvLmN2c2lnbm9yZSwKCSAgZGxscy93aW5ubHMvLmN2c2lnbm9yZSwgZGxscy93aW5zb2NrLy5jdnNpZ25vcmUsCgkgIGRsbHMvd2luc3Bvb2wvLmN2c2lnbm9yZSwgZGxscy93aW50YWIzMi8uY3ZzaWdub3JlLAoJICBkbGxzL3dpbnRydXN0Ly5jdnNpZ25vcmUsIGRsbHMvd2xkYXAzMi8uY3ZzaWdub3JlLAoJICBkbGxzL3dvdzMyLy5jdnNpZ25vcmUsIGRsbHMvd3NvY2szMi8uY3ZzaWdub3JlLAoJICBkbGxzL3d0c2FwaTMyLy5jdnNpZ25vcmUsIGRsbHMveDExZHJ2Ly5jdnNpZ25vcmUsCgkgIHByb2dyYW1zL2Nsb2NrLy5jdnNpZ25vcmUsIHByb2dyYW1zL2NtZGxndHN0Ly5jdnNpZ25vcmUsCgkgIHByb2dyYW1zL2NvbnRyb2wvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvZXhwYW5kLy5jdnNpZ25vcmUsCgkgIHByb2dyYW1zL2hoLy5jdnNpZ25vcmUsIHByb2dyYW1zL21zaWV4ZWMvLmN2c2lnbm9yZSwKCSAgcHJvZ3JhbXMvbm90ZXBhZC8uY3ZzaWdub3JlLCBwcm9ncmFtcy9wcm9nbWFuLy5jdnNpZ25vcmUsCgkgIHByb2dyYW1zL3JlZ2VkaXQvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvcmVnc3ZyMzIvLmN2c2lnbm9yZSwKCSAgcHJvZ3JhbXMvcnBjc3MvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvcnVuZGxsMzIvLmN2c2lnbm9yZSwKCSAgcHJvZ3JhbXMvc3RhcnQvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvdGFza21nci8uY3ZzaWdub3JlLAoJICBwcm9ncmFtcy91bmluc3RhbGxlci8uY3ZzaWdub3JlLCBwcm9ncmFtcy92aWV3Ly5jdnNpZ25vcmUsCgkgIHByb2dyYW1zL3djbWQvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvd2luZWJvb3QvLmN2c2lnbm9yZSwKCSAgcHJvZ3JhbXMvd2luZWJyb3dzZXIvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvd2luZWNmZy8uY3ZzaWdub3JlLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS8uY3ZzaWdub3JlLCBwcm9ncmFtcy93aW5lZGJnLy5jdnNpZ25vcmUsCgkgIHByb2dyYW1zL3dpbmVmaWxlLy5jdnNpZ25vcmUsIHByb2dyYW1zL3dpbmVtZW51YnVpbGRlci8uY3ZzaWdub3JlLAoJICBwcm9ncmFtcy93aW5lbWluZS8uY3ZzaWdub3JlLCBwcm9ncmFtcy93aW5lcGF0aC8uY3ZzaWdub3JlLAoJICBwcm9ncmFtcy93aW5ldGVzdC8uY3ZzaWdub3JlLCBwcm9ncmFtcy93aW5ldmRtLy5jdnNpZ25vcmUsCgkgIHByb2dyYW1zL3dpbmhlbHAvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvd2ludmVyLy5jdnNpZ25vcmU6CglXZSBhcmUgbm8gbG9uZ2VyIGdlbmVyYXRpbmcgLmRiZy5jIGZpbGVzLgoKCSogZGxscy9jb21tZGxnL2NkbGdfRmkucmM6CglLaW1tbyBNeWxseXZpcnRhIDxraW1tby5teWxseXZpcnRhQGdtYWlsLmNvbT4KCUJyaW5nIEZpbm5pc2ggcmVzb3VyY2VzIHVwIHRvIGRhdGUuCgoJKiBwcm9ncmFtcy9yZWdlZGl0L3RyZWV2aWV3LmM6CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglSZW1vdmUgdW51c2VkIGZ1bmN0aW9uIGZyb20gcmVnZWRpdC90cmVldmlldy5jLgoKCSogZGxscy93aW5pbmV0L3Rlc3RzL2h0dHAuYzoKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCUNhc3QgdGhlIHJlc3VsdCBvZiBzdHJsZW4oKSB0byBEV09SRCBhbmQgcHJpbnQgaXQgdmlhICVsZCB0byBnZXQgcmlkCglvZiB3YXJuaW5ncyB3aXRoIGdjYyAzLjIuCgoJKiB0b29scy93aW5hcGkvd2luYXBpX2NoZWNrOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJVXBkYXRlIHdpbmFwaV9jaGVjayBmb3IgImZhbHNlIiBIQVZFXyogbWFjcm9zLgoKCSogdG9vbHMvd2luYXBpL3dpbjMyLmFwaTogVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJVXBkYXRlIHdpbjMyLmFwaSB0byBjdXJyZW50IENWUy4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglDcmVhdGUgYSBmdW5jdGlvbiB0byByZWFkIGEgcHJvcGVydHkgYXMgYW4gaW50ZWdlci4KCgkqIGRsbHMvd2luZWQzZC9zdXJmYWNlLmM6IE9saXZlciBTdGllYmVyIDxvbGl2ZXJfc3RpZWJlckB5YWhvby5jby51az4KCUFkZGVkIHN1cHBvcnQgZm9yIGJhY2tidWZmZXIgd2l0aCB0aGUgZm9ybWF0cyBBMVI1RzVCNSBhbmQgWDFSNUc1QjUuCgoJKiBkbGxzL2QzZDgvc3VyZmFjZS5jLCBkbGxzL2QzZDgvdXRpbHMuYzoKCUguIFZlcmJlZXQgPGh2ZXJiZWV0QGdtYWlsLmNvbT4KCUZpeCBEWFQyICYgRFhUNCBzdXBwb3J0IGZvciBkM2Q4LgoKCSogZGxscy9yaWNoZWQyMC9lZGl0b3IuYywgZGxscy9yaWNoZWQyMC9lZGl0b3IuaCwKCSAgZGxscy9yaWNoZWQyMC9lZGl0c3RyLmgsIGRsbHMvcmljaGVkMjAvcm93LmM6CglLcnp5c3p0b2YgRm9sdG1hbiA8d2RldkBmb2x0bWFuLmNvbT4KCS0gUmVpbXBsZW1lbnRhdGlvbiBvZiBFTV9MSU5FTEVOR1RILgoJLSBTb21lIGF0dGVtcHQgYXQgZG9jdW1lbnRhdGlvbiBvZiBkb3VibGUtbGlua2VkIGxpc3Qgb2YKCSAgTUVfRGlzcGxheUl0ZW0ncy4KCgkqIGRsbHMvdXJsbW9uL3VybG1vbi5pbmY6IEphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglSZWdpc3RlciB6b25lcy4KCgkqIGRsbHMvdXJsbW9uL3NlY19tZ3IuYywgZGxscy91cmxtb24vdGVzdHMvbWlzYy5jOgoJSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCUFkZGVkIE1hcFVybFRvWm9uZSBpbXBsZW1lbnRhdGlvbi4KCgkqIGRsbHMvb2xlMzIvZGVmYXVsdGhhbmRsZXIuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJQWRkIGEgc3R1YmJlZCBvdXQgaW1wbGVtZW50YXRpb24gb2YgSUFkdmlzZVNpbmsgYW5kIGFkdmlzZSB0aGUKCWRlbGVnYXRlIG9iamVjdCB0byB1c2UgaXQuCgoyMDA1LTA5LTI4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogTWFrZS5ydWxlcy5pbiwgTWFrZWZpbGUuaW4sIGRsbHMvTWFrZWRsbC5ydWxlcy5pbiwKCSAgZGxscy9keGVycjgvTWFrZWZpbGUuaW4sIGRsbHMvZHhlcnI5L01ha2VmaWxlLmluLAoJICBkbGxzL2tlcm5lbC9wcm9jZXNzLmMsIGRsbHMvbnRkbGwvZGVidWd0b29scy5jLCBpbmNsdWRlL3dpbmUvZGVidWcuaCwKCSAgcHJvZ3JhbXMvTWFrZXByb2cucnVsZXMuaW46CglEZWNsYXJlIGRlYnVnIGNoYW5uZWxzIGFzIHN0YXRpYyB2YXJpYWJsZXMgc28gdGhhdCB3ZSBkb24ndCBuZWVkIHRvCglnZW5lcmF0ZSBhbiBleHRlcm5hbCAuZGJnLmMgZmlsZSB0byBkZWZpbmUgdGhlbS4KCgkqIGRsbHMvb2xlMzIvZGVmYXVsdGhhbmRsZXIuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBNYWtlIHRoZSBpbnRlcmZhY2VzIHRoYXQgc2hvdWxkIGJlIHN1cHBvcnRlZCBieSB0aGUgZGF0YSBjYWNoZQoJICBleHBsaWNpdCBzbyB0aGVpciBpcyBubyBjb25mdXNpb24gaW4gdGhpcyBmaWxlIGFzIHRvIHdoYXQgaXQgc2hvdWxkCgkgIGJlIGltcGxlbWVudGluZyBhbmQgd2hhdCB0aGlzIG9iamVjdCBzaG91bGQgaW1wbGVtZW50LgoJLSBEZWxlZ2F0ZSBzb21lIElPbGVPYmplY3QgbWV0aG9kcyB0byB0aGUgc2VydmVyIElPbGVPYmplY3QgaWYgaXQgaXMKCSAgcnVubmluZy4KCgkqIGRsbHMvbnRkbGwvY3JpdHNlY3Rpb24uYzoKCVVzZSBMaW51eCBmdXRleGVzIGluc3RlYWQgb2Ygc2VtYXBob3JlcyBpZiBwb3NzaWJsZSBmb3IgY3JpdGljYWwKCXNlY3Rpb24gd2FpdHMuCgoJKiBNYWtlLnJ1bGVzLmluLCBsaWJzL3dwcC8uY3ZzaWdub3JlLCBsaWJzL3dwcC9NYWtlZmlsZS5pbiwKCSAgbGlicy93cHAvcHBsLmwsIHByb2dyYW1zL3dpbmVkYmcvLmN2c2lnbm9yZSwKCSAgcHJvZ3JhbXMvd2luZWRiZy9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luZWRiZy9kZWJ1Zy5sLAoJICB0b29scy9tYWtlZGVwLmMsIHRvb2xzL3dpZGwvLmN2c2lnbm9yZSwgdG9vbHMvd2lkbC9NYWtlZmlsZS5pbiwKCSAgdG9vbHMvd2lkbC9wYXJzZXIubCwgdG9vbHMvd21jLy5jdnNpZ25vcmUsIHRvb2xzL3dtYy9NYWtlZmlsZS5pbiwKCSAgdG9vbHMvd21jL21jbC5jLCB0b29scy93cmMvLmN2c2lnbm9yZSwgdG9vbHMvd3JjL01ha2VmaWxlLmluLAoJICB0b29scy93cmMvcGFyc2VyLmw6CglOb3cgdGhhdCB3ZSBhcmUgcmVxdWlyaW5nIGJpc29uIGFueXdheSwgbWFrZSB0aGUgLnRhYi5jIGZpbGUgdXNlIHRoZQoJc2FtZSBiYXNlIG5hbWUgYXMgdGhlIC55IGZpbGUsIHNvIHRoYXQgd2UgY2FuIGdlbmVyYXRlIGNvcnJlY3QKCWRlcGVuZGVuY2llcyBpbiBhbGwgY2FzZXMuCgoJKiBkbGxzL29sZTMyL2RhdGFjYWNoZS5jOgoJQWxleCBWaWxsYWPtcyBMYXNzbyA8YV92aWxsYWNpc0BwYWxvc2FudG8uY29tPgoJQWRkIE5VTEwgY2hlY2sgZm9yIHNpbmtJbnRlcmZhY2UgaW4gRGF0YUNhY2hlX0dldEFkdmlzZS4KCgkqIGRsbHMvb2xlMzIvZGVmYXVsdGhhbmRsZXIuYzoKCUFsZXggVmlsbGFj7XMgTGFzc28gPGFfdmlsbGFjaXNAcGFsb3NhbnRvLmNvbT4KCUFkZCBtaXNzaW5nICEgdG8gZml4IGEgcmV2ZXJzZWQgY29uZGl0aW9uIGNoZWNrIGluCglPbGVDcmVhdGVEZWZhdWx0SGFuZGxlciwgaW4gb3JkZXIgdG8gbWF0Y2ggaW50ZW50IGluIGNvbW1lbnQuCgoJKiBkbGxzL2NyeXB0MzIvZW5jb2RlLmMsIGRsbHMvY3J5cHQzMi90ZXN0cy9lbmNvZGUuYzoKCUp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCUVuY29kZSBSU0EgcHVibGljIGtleSBtb2R1bHVzIGFzIHVuc2lnbmVkIGludGVnZXIsIHdpdGggdGVzdHMuCgoJKiBkbGxzL2QzZDgvZDNkOF9wcml2YXRlLmgsIGRsbHMvb3BlbmdsMzIvb3BlbmdsX2V4dC5oLAoJICBpbmNsdWRlL3dpbmUvd2luZWQzZF9nbC5oOgoJSC4gVmVyYmVldCA8aHZlcmJlZXRAZ21haWwuY29tPgoJRml4IG1pc3NpbmcgcHJvdG90eXBlcyB3aGVuIHVzaW5nIG5WaWRpYSBPcGVuR0wgaGVhZGVycy4KCgkqIGRsbHMvdXNlci90ZXN0cy9tc2cuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUV4cGxpY2l0bHkgaWdub3JlIFdNX0dFVElDT04gbWVzc2FnZSBpbiB0aGUgbWVzc2FnZSB0ZXN0cy4KCgkqIGRsbHMveDExZHJ2L29wZW5nbC5jOiBHZXJhbGQgUGZlaWZlciA8Z2VyYWxkQHBmZWlmZXIuY29tPgoJVXNlIDAgaW5zdGVhZCBvZiBOVUxMIGluIGNyZWF0ZV9nbHhwaXhtYXAoKS4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBZGQgc29tZSBtb3JlIGFjdGlvbiBzdHVicywgcmVtb3ZlIGZvcndhcmQgZGVjbGFyYXRpb25zLgoKCSogaW5jbHVkZS93aW5lL2RlYnVnLmgsIGxpYnMvd2luZS9kZWJ1Zy5jLCBsaWJzL3dpbmUvbG9hZGVyLmMsCgkgIGxpYnMvd2luZS93aW5lLmRlZiwgbGlicy93aW5lL3dpbmUubWFwLCBwcm9ncmFtcy90YXNrbWdyL2RiZ2NobmwuYywKCSAgcHJvZ3JhbXMvd2luZWRiZy9pbmZvLmM6CglOZXcgc2NoZW1lIGZvciBrZWVwaW5nIHRyYWNrIG9mIGRlYnVnIGNoYW5uZWxzIHRoYXQgZG9lc24ndCByZXF1aXJlCgltYWludGFpbmluZyBhIGxpc3Qgb2YgYWxsIGxvYWRlZCBkbGxzLgoKCSogZGxscy91c2VyL3Rlc3RzL21zZy5jLCBkbGxzL3gxMWRydi93aW5wb3MuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglNYWtlIERyYXdNZW51QmFyIGFuZCBTZXRNZW51IHRlc3RzIHBhc3MgdW5kZXIgV2luZS4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglTcGxpdCBjb21tYW5kIGxpbmUgcGFyc2luZyBmcm9tIE1TSV9JbnN0YWxsUGFja2FnZSBpbnRvIGEgc2VwYXJhdGUKCWZ1bmN0aW9uLgoKCSogZGxscy9tc2kvZGlhbG9nLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCB0aGUgcHJvZ3Jlc3MgY29udHJvbC4KCgkqIHNlcnZlci9vYmplY3QuYzogVml0YWxpeSBNYXJnb2xlbiA8d2luZS1kZXZlbEBraWV2aW5mby5jb20+CglGaXggcmVmY291bnQgbGVhayBhbmQgcmV0dXJuIGNvcnJlY3QgZXJyb3IgaW4gY3JlYXRlX25hbWVkX29iamVjdC4KCgkqIGRsbHMvbXNpL21zaXByaXYuaCwgZGxscy9tc2kvbXNpcXVlcnkuYywgZGxscy9tc2kvc3FsLnksCgkgIGRsbHMvbXNpL3RhYmxlLmMsIGRsbHMvbXNpL3Rlc3RzL2RiLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggYW5kIHRlc3QgTXNpVmlld0dldENvbHVtbkluZm8gYW5kIGJpbmFyeSBmaWVsZHMuCgoJKiBkbGxzL21zaS9jdXN0b20uYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRG9uJ3QgcXVvdGUgbnVtYmVycyBpbiBhIHF1ZXJ5LCBhcyBpdCBkb2Vzbid0IHBhcnNlIGNvcnJlY3RseS4KCgkqIGRsbHMvYWR2YXBpMzIvY3J5cHQuYywgZGxscy9hZHZhcGkzMi90ZXN0cy9jcnlwdC5jOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJUmVtb3ZlIHNvbWUgVW5pY29kZS0+QU5TSSBjcm9zcy1jYWxscyBpbiBjcnlwdCBmdW5jdGlvbnMuCgoJKiBkbGxzL21sYW5nL21sYW5nLmMsIGRsbHMvbWxhbmcvdGVzdHMvbWxhbmcuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgYSBiYXNpYyBiZWdpbm5pbmcgZm9yIGZuSU1MYW5nRm9udExpbmtfQ29kZVBhZ2VUb0NvZGVQYWdlcywKCWZuSU1MYW5nRm9udExpbmtfQ29kZVBhZ2VzVG9Db2RlUGFnZSBhbmQKCWZuSU1MYW5nRm9udExpbmtfR2V0Rm9udENvZGVQYWdlcy4KCUFsc28gc29tZSB0ZXN0cyBmb3IgdGhlIG5ldyBmdW5jdGlvbnMuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9hdG9tLmM6IEVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgYSBidW5jaCBvZiB0ZXN0IGNhc2VzIGZvciBhdG9tcy4KCgkqIGRsbHMvdXNlci9taXNjLmMsIGRsbHMvdXNlci90ZXN0cy8uY3ZzaWdub3JlLAoJICBkbGxzL3VzZXIvdGVzdHMvTWFrZWZpbGUuaW4sIGRsbHMvdXNlci90ZXN0cy9tb25pdG9yLmMsCgkgIGluY2x1ZGUvd2ludXNlci5oOgoJSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUVudW1EaXNwbGF5RGV2aWNlcyBhbmQgR2V0TW9uaXRvckluZm8gc2hvdWxkIHJldHVybiB0aGUgc2FtZSBkZXZpY2UKCW5hbWUgZm9yIHRoZSBwcmltYXJ5IGRldmljZS4KCU1ha2UgYm90aCBFbnVtRGlzcGxheURldmljZXNBIGFuZCBHZXRNb25pdG9ySW5mb0EgY2FsbCB0aGVpciB1bmljb2RlCgljb3VudGVycGFydHMuCglVcGRhdGUgcHJvdG90eXBlIG9mIEVudW1EaXNwbGF5RGV2aWNlcy4KCUFkZCBzb21lIHRlc3RzLgoKCSogZGxscy9zZXR1cGFwaS9Tdi5yYywgZGxscy9zZXR1cGFwaS9zZXR1cGFwaS5yYzoKCUFuZGVycyBCZXJnaCA8YW5kZXJzMUBnbWFpbC5jb20+CglBZGRlZCBTd2VkaXNoIHRyYW5zbGF0aW9uLgoKCSogZGxscy9oaGN0cmwub2N4L2hlbHAuYzogSmFtZXMgSGF3a2lucyA8dHJ1aWtlbkBnbWFpbC5jb20+CgktIFN0b3JlIHRoZSBISEluZm8gc3RydWN0IGluIHRoZSBTaXplQmFyIGh3bmQuCgktIFNldCB0aGUgZGVmYXVsdCBuYXZpZ2F0aW9uIHBhbmUgd2lkdGggaWYgbm8gd2lkdGggcHJvdmlkZWQuCgktIEhhbmRsZSBkcmFnZ2luZyBvZiB0aGUgU2l6ZUJhci4KCgkqIHRvb2xzL3dpbmFwaS93aW5hcGlfY2hlY2s6CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglEb24ndCB0cmVhdCBhYnNlbmNlIG9mIGNvbmRpdGlvbmFsIGFzIGNvbmZpZy5oIGJlaW5nIHVzZWxlc3MgaWYKCXdpbmUvcG9ydC5oIGlzIGluY2x1ZGVkLCBhcyBpdCdzIG5lY2Vzc2FyeSBpbiB0aGF0IGNhc2UuCgoJKiBkbGxzL2NyeXB0MzIvY3J5cHQzMi5zcGVjLCBkbGxzL2NyeXB0MzIvZW5jb2RlLmMsCgkgIGRsbHMvY3J5cHQzMi90ZXN0cy9lbmNvZGUuYzoKCUp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCUltcGxlbWVudCBDcnlwdEltcG9ydC9FeHBvcnRQdWJsaWNLZXlJbmZvLgoKCSogaW5jbHVkZS93aW5jcnlwdC5oOiBKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglBZGQgYSBmZXcgbW9yZSBtaXNzaW5nIHByb3RvdHlwZXMuCgoJKiBkbGxzL2dkaS9mb250LmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglEcmF3IHVuZGVybGluZSBhbmQgc3RyaWtlb3V0IGZvciBFeHRUZXh0T3V0IG9uIGFuIG9wZW4gcGF0aCB1c2luZwoJUG9seWdvbiB0byBtb3JlIGNsb3NlbHkgbWltaWMgd2hhdCBXaW5kb3dzIGRvZXMuCgoJKiBkbGxzL01ha2VkbGwucnVsZXMuaW46IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2Ugc3VyZSB0byBidWlsZCB0aGUgZGVmIGZpbGUgYWZ0ZXIgYSBtYWtlIGNsZWFuIGluIGEgbW9kdWxlCglzdWJkaXIuCgoJKiBkbGxzL21zaS9jdXN0b20uYywgZGxscy9tc2kvaGFuZGxlLmMsIGRsbHMvbXNpL21zaS5jLCBkbGxzL21zaS9tc2lwcml2Lmg6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglEb24ndCBjcmVhdGUgTVNJIGhhbmRsZXMgdW5sZXNzIHdlIGhhdmUgdG8gcGFzcyBvbmUgdGhyb3VnaCB0aGUgQVBJLgoKCSogZGxscy93aW5lZDNkL2RldmljZS5jLCBkbGxzL3dpbmVkM2Qvc3RhdGVibG9jay5jLAoJICBkbGxzL3dpbmVkM2Qvd2luZWQzZF9wcml2YXRlLmg6CglPbGl2ZXIgU3RpZWJlciA8b2xpdmVyX3N0aWViZXJAeWFob28uY28udWs+CglJbXBsZW1lbnQgc3RhdGUgdHJhY2tpbmcgZm9yIHBpeGVsIHNoYWRlciBjb25zdGFudHMuCgoyMDA1LTA5LTI3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9rZXJuZWwvbmVfc2VnbWVudC5jOgoJRG9uJ3QgYXBwbHkgcmVsb2NhdGlvbnMgYSBzZWNvbmQgdGltZSB0byBzZWxmIGxvYWRlZCBzZWdtZW50cy4KCUZpeGVkIG1lc3NlZCB1cCBpbmRlbnRhdGlvbiBpbiBORV9GaXh1cFNlZ21lbnRQcm9sb2dzLgoKCSogc2VydmVyLy5jdnNpZ25vcmUsIHNlcnZlci9NYWtlZmlsZS5pbiwgc2VydmVyL3dpbmVzZXJ2ZXIubWFuLmluOgoJSW5pdGlhbCB2ZXJzaW9uIG9mIGEgd2luZXNlcnZlciBtYW4gcGFnZS4KCgkqIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjLCBkbGxzL21zdmNydC90aW1lLmMsIGluY2x1ZGUvbXN2Y3J0L3RpbWUuaDoKCUFkZGVkIGltcGxlbWVudGF0aW9uIG9mIF9kc3RiaWFzIGFuZCAgX19wX19kc3RiaWFzLgoJQWRkZWQgbWFjcm9zIGZvciBfZHN0YmlhcywgX2RheWxpZ2h0LCBfdGltZXpvbmUgYW5kIF90em5hbWUuCgoJKiBkbGxzL2tlcm5lbC9wcm9jZXNzLmMsIGRsbHMvbnRkbGwvcHJvY2Vzcy5jLCBpbmNsdWRlL3dpbmJhc2UuaCwKCSAgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLCBzZXJ2ZXIvcHJvY2Vzcy5jLAoJICBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvdHJhY2UuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJSW1wbGVtZW50ZWQga2VybmVsMzIgcHJvY2VzcyBhZmZpbml0eSBoYW5kbGluZyBvbiB0b3Agb24gbnRkbGwuCgoJKiBkbGxzL3dpbmVkM2QvZHJhd3ByaW0uYywgZGxscy93aW5lZDNkL3N1cmZhY2UuYzoKCU9saXZlciBTdGllYmVyIDxvbGl2ZXJfc3RpZWJlckB5YWhvby5jby51az4KCUNoYW5nZSB0aGUgZm9ybWF0IG9mIHN1cmZhY2VfU2F2ZVNuYXBzaG90IHRvIFRHQSBmcm9tIFBQTSBhbmQgYWRkCglzdXBwb3J0IGZvciBjb21wcmVzc2VkIHRleHR1cmVzIGFuZCBhbiBhbHBoYSBjaGFubmVsLgoKCSogc2VydmVyL2hhbmRsZS5jOgoJVXNlIHRoZSBwcm9wZXIgZm9ybWF0IHRvIHByaW50IGhhbmRsZXMgaW4gaGFuZGxlX3RhYmxlX2R1bXAuCgoJKiBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmM6IEZpeGVkIGV4Y2VwdGlvbiBoYW5kbGluZyBvbiBNYWNPUy4KCgkqIGRsbHMvZGRyYXcvY2xpcHBlci5jOgoJVGhlIGNsaXAgbGlzdCBpcyBpbiBzY3JlZW4gY29vcmRpbmF0ZXMgc28gd2UgbmVlZCB0byBtYXAgdGhlIHJlc3VsdCBvZgoJR2V0UmFuZG9tUmduIGlmIHRoZSBXaW5kb3dzIHZlcnNpb24gaXMgd2luOXguCgoJKiBwcm9ncmFtcy93aW5lZGJnL21lbW9yeS5jOgoJRml4ZWQgZGlzYXNzZW1ibGluZyBmdW5jdGlvbnMgdG8gaGFuZGxlIDE2LWJpdCBjb2RlIHNlZ21lbnRzIHByb3Blcmx5LgoKCSogZGxscy9tc3ZpZGVvL21zdmlkZW8xNi5jLCBkbGxzL29sZTMyL29sZTJubHMuYzoKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCVVzZSB0aGUgcHJvcGVyIGNhbGxpbmcgY29udmVudGlvbiBmb3IgMiAxNi1iaXQgZnVuY3Rpb25zLgoKCSogZGxscy93aW5lZDNkL3N1cmZhY2UuYzogT2xpdmVyIFN0aWViZXIgPG9saXZlcl9zdGllYmVyQHlhaG9vLmNvLnVrPgoJQ29ycmVjdCBhIHByb2JsZW0gd2l0aCBsb2NraW5nIG5vbnBvd2VyIDIgYmFjayBhbmQgZnJvbnQgYnVmZmVycy4KCgkqIGRsbHMva2VybmVsL2NvbW0uYzogQWxleCBWaWxsYWPtcyBMYXNzbyA8YV92aWxsYWNpc0BwYWxvc2FudG8uY29tPgoJVG9sZXJhdGUgaW9jdGwgZmFpbHVyZSBpbiBHZXRDb21tU3RhdGUoKSBpbiBvcmRlciB0byBiZSBjYXBhYmxlIHRvIHVzZQoJc29mdG1vZGVtcy4KCjIwMDUtMDktMjYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3VzZXIvdGVzdHMvd2luLmM6CglBZGRlZCBhIHRlc3QgdG8gY29uZmlybSB0aGUgYmVoYXZpb3Igb2YgR2V0UmFuZG9tUmduLgoKCSogZGxscy9udGRsbC9kZWJ1Z3Rvb2xzLmMsIGluY2x1ZGUvd2luZS9kZWJ1Zy5oLCBsaWJzL3dpbmUvZGVidWcuYzoKCUV4cG9ydCB0aGUgdGVtcCBidWZmZXIgZnVuY3Rpb25hbGl0eSBpbiB0aGUgZGVidWcgZnVuY3Rpb25zIGludGVyZmFjZQoJdG8gYWxsb3cgc2hhcmluZyBtb3JlIGNvZGUgYmV0d2VlbiBsaWJ3aW5lIGFuZCBudGRsbC4KCgkqIGRsbHMvYWN0aXZlZHMvYWN0aXZlZHMuc3BlYywgZGxscy9hY3RpdmVkcy9hY3RpdmVkc19tYWluLmMsCgkgIGluY2x1ZGUvLmN2c2lnbm9yZSwgaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9hZHNobHAuaCwKCSAgaW5jbHVkZS9pYWRzLmlkbCwgdG9vbHMvd2luYXBpL3dpbjMyLmFwaToKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQWRkIGlhZHMuaWRsIHRvIGRlZmluZSB0aGUgSUFEc0NvbnRhaW5lciBpbnRlcmZhY2UuCglBZGQgYWRzaGxwLmggdG8gZGVjbGFyZSB0aGUgQURzKiBmdW5jdGlvbnMuCglGaXggdGhlIEFEc09wZW5PYmplY3QoKSBwcm90b3R5cGUuCglVcGRhdGUgd2luMzIuYXBpIHRvIG1hdGNoLgoKCSogZGxscy9yaWNoZWQyMC9lZGl0b3IuYzogUmVpbiBLbGF6ZXMgPHdpam5Ad2FuYWRvby5ubD4KCVdoZW4gc2Nyb2xsaW5nLCBmaXJzdCB1cGRhdGUgdGhlIG5ldyBwb3NpdGlvbiBvZiB0aGUgY29udHJvbCBiZWZvcmUKCWNhbGxpbmcgVXBkYXRlV2luZG93KCkuCgoJKiBwcm9ncmFtcy9yZWdlZGl0L0RlLnJjOiBIZW5uaW5nIEdlcmhhcmR0IDxoZW5uaW5nLmdlcmhhcmR0QHdlYi5kZT4KCVVwZGF0ZSBHZXJtYW4gcmVnZWRpdCByZXNvdXJjZSBmaWxlLgoKCSogZGxscy9kM2R4b2YvZDNkeG9mLnNwZWM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRXhwb3J0IHRoZSBEbGwoVW4pUmVnaXN0ZXJTZXJ2ZXIoKSBmdW5jdGlvbnMgdG8gbWFrZSBkM2R4b2YuZGxsIGEKCXNlbGYtcmVnaXN0ZXJpbmcgZGxsLgoKCSogZGxscy9keGd1aWQvZHhndWlkLmMsIGluY2x1ZGUvZDNkcm0uaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRGVmaW5lIHRoZSBEaXJlY3QzRFJNIEdVSURzIGluIGQzZHJtLmguCglJbmNsdWRlIGQzZHJtLmggaW4gZHhndWlkLgoKCSogZGxscy9rZXJuZWwvc3luYy5jLCBkbGxzL250ZGxsL2NyaXRzZWN0aW9uLmMsIGluY2x1ZGUvd2luZS9wb3J0LmgsCgkgIGxpYnMvcG9ydC9pbnRlcmxvY2tlZC5jLCBsaWJzL3dpbmUvZGVidWcuYywgbG9hZGVyL2t0aHJlYWQuYywKCSAgc2VydmVyL2NoYW5nZS5jOgoJVXNlIGludCBpbnN0ZWFkIG9mIGxvbmcgaW4gaW50ZXJsb2NrZWRfKiBmdW5jdGlvbnMgZm9yIDY0LWJpdAoJY29tcGF0aWJpbGl0eS4KCgkqIGRsbHMva2VybmVsL3BhdGguYzoKCVVzZSBhIGxhcmdlciBidWZmZXIgaW4gQ29weUZpbGVXIG5vdyB0aGF0IHRoZSBmaWxlIGhhbmRsZSBtYXkgbm90CglhbHdheXMgYmUgY2FjaGVkLgoKCSogZGxscy9tc2kvdGFibGUuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQ3JlYXRlIGEgZnVuY3Rpb24gdG8gZGV0ZXJtaW5lIHRoZSB0YWJsZSdzIHJvdyBzaXplIGFuZCB1c2UgaXQuCglGaXggYSBtZW1vcnkgbGVhayBpbiB0aGUgdGFibGUgY29kZS4KCgkqIHRvb2xzL3dpbmFwaS9jX3BhcnNlci5wbTogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+Cgl2b2xhdGlsZSBpcyB2YWxpZCBldmVyeXdoZXJlIGNvbnN0IGlzIHZhbGlkLgoKCSogcHJvZ3JhbXMvd2NtZC9Oby5yYywgcHJvZ3JhbXMvd2NtZC93Y21kcmMucmMsCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25zb2xlX05vLnJjLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZV9yZXMucmM6CglBbGV4YW5kZXIgTi4gU/hybmVzIDxhbGV4QHRoZWhhbmRvZmFnb255LmNvbT4KCU5vcndlZ2lhbiB0cmFuc2xhdGlvbiBvZiB3Y21kIGFuZCB3aW5lY29uc29sZS4KCgkqIGRsbHMveDExZHJ2L2JpdG1hcC5jLCBkbGxzL3gxMWRydi9pbml0LmMsIGRsbHMveDExZHJ2L29wZW5nbC5jLAoJICBkbGxzL3gxMWRydi94MTFkcnYuaDoKCUh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglBZGQgYW4geDExZHJ2IGVzY2FwZSB0aGF0IHJldHVybnMgYSBnbHggZHJhd2FibGUuCgoJKiBwcm9ncmFtcy9jbWRsZ3RzdC9Oby5yYywgcHJvZ3JhbXMvY21kbGd0c3QvY21kbGdyLnJjLAoJICBwcm9ncmFtcy9wcm9nbWFuL05vLnJjLCBwcm9ncmFtcy9wcm9nbWFuL3JzcmMucmMsCgkgIHByb2dyYW1zL3JlZ2VkaXQvTm8ucmMsIHByb2dyYW1zL3JlZ2VkaXQvcnNyYy5yYywKCSAgcHJvZ3JhbXMvc3RhcnQvTm8ucmMsIHByb2dyYW1zL3N0YXJ0L3JzcmMucmMsIHByb2dyYW1zL3ZpZXcvTm8ucmMsCgkgIHByb2dyYW1zL3ZpZXcvdmlld3JjLnJjOgoJQWxleGFuZGVyIE4uIFP4cm5lcyA8YWxleEB0aGVoYW5kb2ZhZ29ueS5jb20+CglBZGRlZCBOb3J3ZWdpYW4gdHJhbnNsYXRpb24gb2Ygc29tZSBwcm9ncmFtcy4KCgkqIGRsbHMva2VybmVsL3N5bmMuYywgZGxscy9udGRsbC9maWxlLmMsCgkgIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwgc2VydmVyL25hbWVkX3BpcGUuYywKCSAgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3RyYWNlLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCS0gbm93IHBhc3NpbmcgYWNjZXNzIHJpZ2h0cyB3aGVuIGNyZWF0aW5nIGEgbmFtZWQgcGlwZSBpbiBOVERMTAoJLSByZWltcGxlbWVudGVkIEtlcm5lbDMyLkNyZWF0ZVBpcGUgcHVyZWx5IG9uIHRvcCBvZiBOVERMTCBBUElzCgktIGFub255bW91cyBwaXBlIGhhbmRsZXMgc2hvdWxkIGhhdmUgdGhlIFNZTkNIUk9OSVpFIGJpdCBzZXQKCgkqIGRsbHMvbnRkbGwvaGVhcC5jLCBkbGxzL29sZTMyL2RlZmF1bHRoYW5kbGVyLmMsCgkgIGRsbHMvd2luZWQzZC9kZXZpY2UuYywgZGxscy93aW5lZDNkL3ZlcnRleHNoYWRlci5jLAoJICBkbGxzL3dpbmVkM2Qvd2luZWQzZF9wcml2YXRlLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFzc29ydGVkIHNwZWxsaW5nIGZpeGVzLgoKCSogZGxscy9tcHIvbXByLnJjLCBkbGxzL21wci9tcHJfTm8ucmMsIGRsbHMvbXNhY20vbXNhY20ucmMsCgkgIGRsbHMvbXNhY20vbXNhY21fTm8ucmMsIGRsbHMvbXNybGUzMi9tc3JsZV9Oby5yYywKCSAgZGxscy9tc3JsZTMyL3JzcmMucmMsIGRsbHMvb2xlZGxnL29sZWRsZ19Oby5yYywgZGxscy9vbGVkbGcvcnNyYy5yYywKCSAgZGxscy9zaGRvY3Z3L05vLnJjLCBkbGxzL3NoZG9jdncvc2hkb2N2dy5yYywgZGxscy9zaGx3YXBpL3NobHdhcGkucmMsCgkgIGRsbHMvc2hsd2FwaS9zaGx3YXBpX05vLnJjLCBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9Oby5yYywKCSAgZGxscy93aW5lcHMvcnNyYy5yYywgZGxscy93aW5lcHMvd3BzX05vLnJjLCBkbGxzL3dpbmluZXQvcnNyYy5yYywKCSAgZGxscy93aW5pbmV0L3dpbmluZXRfTm8ucmMsIGRsbHMvd2lubW0vd2lubW1fTm8ucmMsCgkgIGRsbHMvd2lubW0vd2lubW1fcmVzLnJjLCBkbGxzL3dsZGFwMzIvd2xkYXAzMi5yYywKCSAgZGxscy93bGRhcDMyL3dsZGFwMzJfTm8ucmM6CglBbGV4YW5kZXIgTi4gU/hybmVzIDxhbGV4QHRoZWhhbmRvZmFnb255LmNvbT4KCUFkZGVkIE5vcndlZ2lhbiB0cmFuc2xhdGlvbnMuCgoJKiBkbGxzL21zaS9wYWNrYWdlLmMsIGRsbHMvbXNpL3NlbGVjdC5jLCBkbGxzL21zaS9zcWwueSwKCSAgZGxscy9tc2kvdXBkYXRlLmMsIGRsbHMvbXNpL3doZXJlLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggdmFyaW91cyBxdWVyeSByZWxhdGVkIG1lbW9yeSBsZWFrcy4KCgkqIHByb2dyYW1zL3dpbmVmaWxlL0RlLnJjOiBIZW5uaW5nIEdlcmhhcmR0IDxoZW5uaW5nLmdlcmhhcmR0QHdlYi5kZT4KCVVwZGF0ZSBHZXJtYW4gcmVzb3VyY2UgZmlsZS4KCgkqIHByb2dyYW1zL3JlZ2VkaXQvRW4ucmMsIHByb2dyYW1zL3JlZ2VkaXQvTmwucmMsCgkgIHByb2dyYW1zL3JlZ2VkaXQvUGwucmMsIHByb2dyYW1zL3JlZ2VkaXQvUHQucmMsCgkgIHByb2dyYW1zL3JlZ2VkaXQvY2hpbGR3bmQuYywgcHJvZ3JhbXMvcmVnZWRpdC9mcmFtZXduZC5jLAoJICBwcm9ncmFtcy9yZWdlZGl0L21haW4uaCwgcHJvZ3JhbXMvcmVnZWRpdC9yZXNvdXJjZS5oLAoJICBwcm9ncmFtcy9yZWdlZGl0L3RyZWV2aWV3LmM6CglLcnp5c3p0b2YgRm9sdG1hbiA8d2RldkBmb2x0bWFuLmNvbT4KCS0gQ29weSBrZXkgbmFtZSB3b3Jrcy4KCS0gRmF2b3JpdGVzIChhZGRpbmcsIHJlbW92aW5nLCBnb2luZyB0bykgd29yay4KCS0gQWRkZWQgY29udGV4dCBzZW5zaXRpdmUgZ3JheWluZyB0byBzb21lIG1lbnUgb3B0aW9ucy4KCS0gQ2xlYW51cCBvZiBzdGF0dXMgYmFyIHVwZGF0ZS4KCgkqIGRsbHMvbnRkbGwvdmlydHVhbC5jLCBkbGxzL3VzZXIvbWVudS5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglSZXBsYWNlIHRoZSAnaWYgKCFjb25kKSA7IGVsc2UgY29kZScgY29uc3RydWN0IHdpdGggdGhlIHN0YW5kYXJkICdkbyB7Cgljb2RlIH0gd2hpbGUgKDApJyBjb25zdHJ1Y3QgY29tYmluZWQgd2l0aCBhIHJlZ3VsYXIgJ2lmJy4KCgkqIGRsbHMvb2xlMzIvb2xlMi5zcGVjLCBkbGxzL29sZTMyL3N0b3JhZ2Uuc3BlYywKCSAgZGxscy9vbGVhdXQzMi9vbGVhdXQzMi5zcGVjLCBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglGaXggLnNwZWMgZGVjbGFyYXRpb25zIGZvciBmdW5jdGlub3Mgd2l0aCA2NGJpdCBhcmd1bWVudHMgKHJlcG9ydGVkIGJ5Cgl3aW5hcGlfY2hlY2spLgoKCSogZGxscy9tc2kvYWN0aW9uLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2UgYSBtYWNybyBmdW5jdGlvbiBmb3IgdW5pbXBsZW1lbnRlZCBhY3Rpb25zLgoJQWRkIHNvbWUgbW9yZSB1bmltcGxlbWVudGVkIGFjdGlvbiBzdHVicy4KCgkqIGRsbHMvbnRkbGwvdGltZS5jOiBWaWpheSBLaXJhbiBLYW11anUgPGluZnlxdWVzdEBnbWFpbC5jb20+CglBZGQgTVlUIChNYWxheXNpYW4gVGltZSkgYW5kIE5PVlNUIChOb3Zvc2liaXJzayBTdW1tZXIgVGltZSkuCgoJKiBkbGxzL21zaS9tc2lxdWVyeS5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaWxsIG91dCB0aGUgc3R1YnMgZm9yIE1zaUFwcGx5VHJhbnNmb3JtQS9XIGEgYml0IG1vcmUuCgoJKiBkbGxzL3VzZXIvdGVzdHMvZGRlLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglDYWxsaW5nIERkZVVuaW5pdGlhbGl6ZSBoYW5ncyBEREUgdGVzdCBvbiBYUCBTUDEsIHNvIHJlbW92ZSB0aGF0IGNhbGwsCglhbmQgYWRkIGEgY29tbWVudCBleHBsYWluaW5nIGl0LgoKCSogZGxscy9tc2kvdGVzdHMvZm9ybWF0LmMsIGRsbHMvbXNpL3Rlc3RzL3BhY2thZ2UuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBoYW5kbGUgbGVha3MgaW4gdGhlIHRlc3QgY2FzZXMuCgoJKiBkbGxzL21zaS9zdHJpbmcuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJTWFrZSBzdXJlIHRvIHNldCB0aGUgbWluaW11bSBzaXplIGJlZm9yZSBhbGxvY2F0aW5nIHN0cmluZyB0YWJsZQoJbWVtb3J5LgoKCSogZGxscy9tc3ZjcnQvZmlsZS5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCU1ha2UgaXQgY2xlYXIgdGhlIGVtcHR5IGJvZHkgc2VjdGlvbnMgYXJlIG5vdCBhY2NpZGVudGFsLgoKCSogdG9vbHMvd2luYXBpL3dpbjE2LmFwaTogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglIT0xFTUVOVSBpcyBhICdsb25nJyBhcyBmYXIgYXMgd2luYXBpX2NoZWNrIGlzIGNvbmNlcm5lZC4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0ZpLnJjOgoJS2ltbW8gTXlsbHl2aXJ0YSA8a2ltbW8ubXlsbHl2aXJ0YUBnbWFpbC5jb20+CglVcGRhdGUgRmlubmlzaCByZXNvdXJjZXMuCgoJKiBkbGxzL3JpY2hlZDIwL3JlYWRlci5jOiBLcnp5c3p0b2YgRm9sdG1hbiA8d2RldkBmb2x0bWFuLmNvbT4KCS0gT3B0aW9uYWwgZGVzdGluYXRpb25zIGluIHN0eWxlc2hlZXRzIGFyZSBub3cgc2tpcHBlZCBwcm9wZXJseSAoYW5kCgkgIG5vdCB0cmVhdGVkIGFzIHRoZSAicHJvcGVyIiBzdHlsZXMgYXMgdGhleSB3ZXJlIGJlZm9yZSkuCgktIEVPRiBjb25kaXRpb24gaW4gdGhlIG1pZGRsZSBvZiB0aGUgc3R5bGVzaGVldCBpcyBubyBsb25nZXIgcHV0dGluZwoJICB0aGUgcmVhZGVyIGludG8gaW5maW5pdGUgbG9vcCwKCS0gSGFsZi1mdWxsIGlucHV0IGJ1ZmZlcnMgZG9uJ3QgdHJpZ2dlciBFT0YgYW55bW9yZSAoYWx0aG91Z2ggaXQKCSAgY291bGQsIGluIHRoZW9yeSwgYnJlYWsgc29tZSBhcHBzLCBJIGZpbmQgaXQgdW5saWtlbHkgLSBhbmQgdGhlCgkgIGNoYW5nZSBtYWtlcyBPdXQgZnJvbSBCb25ldmlsbGUgaW5zdGFsbGVyIGRpc3BsYXkgbGljZW5zZSBwcm9wZXJseSkuCgoJKiB0b29scy93aW5hcGkvd2luMzIuYXBpOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVVwZGF0ZSB3aW4zMi5hcGkgdG8gbWF0Y2ggdGhlIGN1cnJlbnQgc291cmNlcy4KCUZpeCB0aGUgdXNwMTAuZGxsIG5hbWUuCglGaXggUEJFUlZBTCBhbHBoYWJldGljYWwgb3JkZXIuCgoJKiBkbGxzL2QzZDgvc2hhZGVyLmMsIGRsbHMvZDNkOS9kM2Q5X21haW4uYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRG9jdW1lbnRhdGlvbiB0d2Vha3MgdG8gbWFrZSB3aW5hcGlfY2hlY2sgaGFwcHkuCgoJKiBpbmNsdWRlL3Zmdy5oOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFkZCBBVklTVFJFQU1SRUFEX0NPTlZFTklFTlQuCgoJKiBkbGxzL29sZWF1dDMyL3Rlc3RzL29sZWZvbnQuYywgZGxscy9zZWN1cjMyL3Rlc3RzL21haW4uYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQWRkIHRyYWlsaW5nICdcbidzIHRvIG9rKCkgY2FsbHMuCgoJKiB0b29scy93aW5hcGkvd2luYXBpX2Z1bmN0aW9uLnBtLCB0b29scy93aW5hcGkvd2luYXBpX2xvY2FsLnBtOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglVcGRhdGUgd2luYXBpX2NoZWNrIHNvIGl0IGNvbnNpZGVycyAnbG9uZ2xvbmcnICh3aW4qLmFwaSBmaWxlcykgYXMKCWNvbXBhdGlibGUgd2l0aCAnZG91YmxlJyAoc3BlYyBmaWxlcykuCgoJKiBwcm9ncmFtcy93aW5lY2ZnL3gxMWRydmRsZy5jOgoJQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJU2NyZWVuIGRlcHRoIGNhbm5vdCBiZSBzZWxlY3RlZCB3aGVuIGRvdWJsZSBidWZmZXJpbmcgaXMgZW5hYmxlZC4KCURpc2FibGUgZGVwdGggc2VsZWN0aW9uIHdoZW4gaXQncyB0aGUgY2FzZS4KCjIwMDUtMDktMjUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC9pbnN0ci5jLCBkbGxzL2tlcm5lbC9sb2NhbDE2LmMsIGRsbHMva2VybmVsL25lX21vZHVsZS5jLAoJICBkbGxzL2tlcm5lbC92ZXJzaW9uLmMsIGRsbHMvbXN2Y3J0L2NwcGV4Y2VwdC5jLCBkbGxzL250ZGxsL3ZpcnR1YWwuYywKCSAgZGxscy9vcGVuZ2wzMi93Z2wuYywgZGxscy9xdWFydHovZHNvdW5kcmVuZGVyLmMsCgkgIGRsbHMvcXVhcnR6L3RyYW5zZm9ybS5jLCBkbGxzL3F1YXJ0ei92aWRlb3JlbmRlcmVyLmMsCgkgIGRsbHMvdXNlci9tZW51LmMsIGRsbHMveDExZHJ2L29wZW5nbC5jOgoJUmVwbGFjZSBEUFJJTlRGIGJ5IFRSQUNFIGluIGEgZmV3IHBsYWNlcy4KCgkqIGRsbHMvbXNodG1sL05vLnJjLCBkbGxzL21zaHRtbC9yc3JjLnJjOgoJQWxleGFuZGVyIE4uIFP4cm5lcyA8YWxleEB0aGVoYW5kb2ZhZ29ueS5jb20+CglOb3J3ZWdpYW4gdHJhbnNsYXRpb24gb2YgbXNodG1sLgoKCSogZGxscy9hdmlmaWwzMi9hdmlmaWxlX05vLnJjLCBkbGxzL2F2aWZpbDMyL3JzcmMucmMsCgkgIGRsbHMvaGhjdHJsLm9jeC9Oby5yYywgZGxscy9oaGN0cmwub2N4L2hoY3RybC5yYywKCSAgZGxscy9zZXJpYWx1aS9Oby5yYywgZGxscy9zZXJpYWx1aS9zZXJpYWx1aV9yYy5yYywKCSAgZGxscy9zZXR1cGFwaS9Oby5yYywgZGxscy9zZXR1cGFwaS9zZXR1cGFwaS5yYzoKCUFsZXhhbmRlciBOLiBT+HJuZXMgPGFsZXhAdGhlaGFuZG9mYWdvbnkuY29tPgoJQWRkZWQgTm9yd2VnaWFuIHRyYW5zbGF0aW9ucy4KCgkqIGRsbHMvZGRyYXcvZDNkX3ByaXZhdGUuaCwgZGxscy9kZHJhdy9kZXZpY2VfbWFpbi5jLAoJICBkbGxzL2RkcmF3L2RldmljZV9vcGVuZ2wuYzoKCUNocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUltcGxlbWVudCBCZWdpbi9WZXJ0ZXgvRW5kIHJlbmRlcmluZyBmdW5jdGlvbnMuCgoJKiBkbGxzL2hoY3RybC5vY3gvaGVscC5jOiBKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCUNvcnJlY3RseSByZXNpemUgdGhlIGNoaWxkIHdpbmRvd3MuCgoJKiBkbGxzL3F1YXJ0ei9maWx0ZXJncmFwaC5jOiBDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglGaXggZnVuY3Rpb24gbmFtZXMuCgoJKiBkbGxzL29sZTMyL2JpbmRjdHguYywgZGxscy9vbGUzMi9jbGlwYm9hcmQuYywgZGxscy9vbGUzMi9jb21wb2JqLmMsCgkgIGRsbHMvb2xlMzIvbW9uaWtlci5jLCBkbGxzL29sZTMyL29sZTE2LmMsIGRsbHMvb2xlMzIvb2xlMi5jLAoJICBkbGxzL29sZTMyL29sZTJfMTYuYywgZGxscy9vbGUzMi9vbGUyc3R1YnMuYzoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCU1vdmUgYWxsIDE2LWJpdCBmdW5jdGlvbnMgdG8gYW4gYXBwcm9wcmlhdGUgMTYtYml0IGZpbGUuCgoJKiBwcm9ncmFtcy93aW5lZmlsZS9Oby5yYywgcHJvZ3JhbXMvd2luZWZpbGUvcnNyYy5yYywKCSAgcHJvZ3JhbXMvd2luaGVscC9Oby5yYywgcHJvZ3JhbXMvd2luaGVscC9yc3JjLnJjOgoJQWxleGFuZGVyIE4uIFP4cm5lcyA8YWxleEB0aGVoYW5kb2ZhZ29ueS5jb20+CglBZGRlZCBOb3J3ZWdpYW4gdHJhbnNsYXRpb25zLgoKCSogZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfRmkucmMsIGRsbHMvd2luaW5ldC9yc3JjLnJjLAoJICBkbGxzL3dpbmluZXQvd2luaW5ldF9GaS5yYzoKCUtpbW1vIE15bGx5dmlydGEgPGtpbW1vLm15bGx5dmlydGFAZ21haWwuY29tPgoJVXBkYXRlIEZpbm5pc2ggcmVzb3VyY2VzLgoKCSogZGxscy9tc2kvbXNpLmMsIGRsbHMvbXNpL3BhY2thZ2UuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUhhbmRsZSBjb3B5aW5nIG9mIHRoZSBpbnN0YWxsIHBhY2thZ2UgdG8gYSB0ZW1wb3JhcnkgZmlsZSBpbiBvbmUgcGxhY2UKCW9ubHkuCgoJKiBkbGxzL21zaS9maWxlcy5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggYW5vdGhlciBtZW1vcnkgbGVhay4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglTdHViIGltcGxlbWVudGF0aW9uIG9mIHRoZSBJc29sYXRlQ29tcG9uZW50cyBhY3Rpb24uCgoyMDA1LTA5LTIzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9kZGsvd2RtLmg6CglJdmFuIExlbyBQdW90aSA8aXZhbmxlb0BnbWFpbC5jb20+CglBZGRlZCBkZGsvd2RtLmguCgoJKiBkbGxzL21zaS9jdXN0b20uYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IGEgbWVtb3J5IGxlYWsuCgoJKiBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdhdmVycy5jb20+CglNb3ZlIGRlc2t0b3BfdmkgaW5zaWRlIHByb2Nlc3NfYXR0YWNoIGFuZCByZW1lbWJlciB0byBmcmVlIGl0LgoKCSogZGxscy9tc2kvYWN0aW9uLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBhIHN0dWIgaW1wbGVtZW50YXRpb24gb2YgdGhlIEJpbmRJbWFnZSBhY3Rpb24uCgoJKiBkbGxzL3dpbmVkM2QvZGV2aWNlLmMsIGRsbHMvd2luZWQzZC9zdXJmYWNlLmMsCgkgIGRsbHMvd2luZWQzZC93aW5lZDNkX21haW4uYywgZGxscy93aW5lZDNkL3dpbmVkM2RfcHJpdmF0ZS5oOgoJT2xpdmVyIFN0aWViZXIgPG9saXZlcl9zdGllYmVyQHlhaG9vLmNvLnVrPgoJT3B0aW9uYWxseSByZXBhY2sgbm9ucG93ZXIgMiB0ZXh0dXJlcyB0byB0aGUgZXhwZWN0ZWQgc3BhbiBsZW5ndGggd2hlbgoJYSB0ZXh0dXJlcyBpcyBsb2NrZWQuIFRoaXMgaXMgbmVjZXNzYXJ5IGZvciBidWdneSBnYW1lcyBsaWtlIFdhcmhhbW1lcgoJNDBrIHRoYXQgZG9uJ3Qgd29yayB3aXRoIHRoZSBvZGQgc3BhbiBzaXplcyBwcm9kdWNlIGJ5IGRlZmF1bHQKCW5vbnBvd2VyIDIgc3VwcG9ydC4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglTdHViIGltcGxlbWVudGF0aW9uIG9mIHRoZSBQYXRjaEZpbGVzIGFjdGlvbi4KCgkqIGRsbHMvbnRkbGwvZGVidWd0b29scy5jLCBpbmNsdWRlL3dpbmUvZGVidWcuaCwKCSAgaW5jbHVkZS93aW5lL2xpYnJhcnkuaCwgbGlicy93aW5lL2RlYnVnLmMsIGxpYnMvd2luZS93aW5lLmRlZiwKCSAgbGlicy93aW5lL3dpbmUubWFwLCB0b29scy93aW5lYnVpbGQvc3BlYzMyLmM6CglEZWZpbmVkIGEgcHJvcGVyIHN0cnVjdHVyZSBmb3IgZGVidWcgY2hhbm5lbHMuCglBbHNvIHB1dCBhbGwgdGhlIGZ1bmN0aW9uIHBvaW50ZXJzIGluc2lkZSBhIHN0cnVjdHVyZSBhbmQgYWRkZWQKCV9fd2luZV9kYmdfc2V0X2Z1bmN0aW9ucyB0byBjaGFuZ2UgdGhlbSBpbnN0ZWFkIG9mIGV4cG9ydGluZyB0aGUKCXBvaW50ZXJzIGRpcmVjdGx5LgoKCSogZGxscy9tc2kvbXNpLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCBNc2lHZXRTaG9ydGN1dFRhcmdldEEuCgoJKiBkbGxzL21zaS9hY3Rpb24uYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJU3R1YiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgTW92ZUZpbGVzIGFjdGlvbi4KCgkqIGRsbHMvd2luZWQzZC9kZXZpY2UuYzogT2xpdmVyIFN0aWViZXIgPG9saXZlcl9zdGllYmVyQHlhaG9vLmNvLnVrPgoJRW5hYmxlIGR4dDIgYW5kIGR4dDQgY29tcHJlc3NlZCB0ZXh0dXJlcyB0byBiZSBjcmVhdGVkIHZpYQoJRGV2aWNlX0NyZWF0ZVN1cmZhY2UuCgoJKiBkbGxzL21zaS9kaWFsb2cuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUNPTE9SXzNERkFDRSBpcyBhIGJldHRlciBjaG9pY2UgZm9yIHRoZSBkaWFsb2cgYmFja2dyb3VuZC4KCgkqIGRsbHMvc2V0dXBhcGkvc3RyaW5ndGFibGUuYywgZGxscy9zZXR1cGFwaS90ZXN0cy9zdHJpbmd0YWJsZS5jOgoJRXJpYyBLb2hsIDxlcmljLmtvaGxAdC1vbmxpbmUuZGU+CgktIFN0cmluZyBpZCAwIGJlY29tZXMgYSByZXNlcnZlZCAoaW52YWxpZCkgaWQuCgktIFN0cmluZ1RhYmxlU3RyaW5nRnJvbUlkIHJldHVybnMgYSBwb2ludGVyIHRvIGFuIGVtcHR5IHN0cmluZyBpZiB0aGUKCSAgc3RyaW5nIGlkIGlzIGludmFsaWQuCgoJKiBwcm9ncmFtcy93aW5lZmlsZS9Fbi5yYzogU3RldmVuIEVkd2FyZHMgPHdpbmVoYWNrZXJAZ21haWwuY29tPgoJU2V0IHRleHQgb2YgaGVscCBtZW51IHRvIEhlbHAuCgoJKiBkbGxzL21zaS9hY3Rpb24uYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJU3R1YiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgUmVtb3ZlSW5pVmFsdWVzIGFjdGlvbi4KCgkqIGluY2x1ZGUvZGlucHV0LmgsIGluY2x1ZGUvdmZ3bXNncy5oOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQWRkIHNvbWUgbWlzc2luZyBlcnJvciBjb2Rlcy4KCgkqIGRsbHMvZHhlcnI4L2Vycm9ycy5hd2ssIGRsbHMvZHhlcnI5L2Vycm9ycy5hd2s6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJRml4IGR4ZXJyIGF3ayBzY3JpcHRzIHRvIG91dHB1dCBzaW5nbGUgcXVvdGVzIHByb3Blcmx5LgoKCSogZGxscy9vbGUzMi9kZWZhdWx0aGFuZGxlci5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgc29tZSBJUnVubmluZ09iamVjdCBmdW5jdGlvbnMgdGhhdCBhY3R1YWxseSBzdGFydCB0aGUgc2VydmVyCglhbmQgaW5pdGlhbGl6ZSBpdC4KCgkqIGRsbHMvb2xlMzIvb2xlMi5jLCBkbGxzL29sZTMyL29sZTJzdHVicy5jOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IE9sZVJlZ0VudW1WZXJicy4KCgkqIGRsbHMvb2xlMzIvY29tcG9iai5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglEb24ndCBmYWlsIGluIENvUmVnaXN0ZXJDbGFzc09iamVjdCBpZiB0aGUgY2xhc3MgYWxyZWFkeSBleGlzdHMgYW5kCgl0aGUgUkVHQ0xTX01VTFRJUExFVVNFIGZsYWcgaXMgc3BlY2lmaWVkLgoKCSogaW5jbHVkZS93aW52ZXIuaDogRGV0bGVmIFJpZWtlbmJlcmcgPHdpbmUuZGV2QHdlYi5kZT4KCURlZmluaXRpb24gYWRkZWQgZm9yIFZGVDJfRFJWX1ZFUlNJT05FRF9QUklOVEVSLgoKCSogZGxscy93aW5lZDNkL2RldmljZS5jOiBPbGl2ZXIgU3RpZWJlciA8b2xpdmVyX3N0aWViZXJAeWFob28uY28udWs+CglDbGVhbiB1cCBhbGwgdGhlIG9iamVjdHMgYm91bmQgdG8gdGhlIGRldmljZSB3aGVuIHRoZSBkZXZpY2UgaXMKCWRlc3Ryb3llZCBhcyBhIHJlc3VsdCBvZiBpdHMgcmVmIGNvdW50IHJlYWNoaW5nIHplcm8uCgoJKiBkbGxzL21zdmNydC9oZWFwLmMsIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjLCBpbmNsdWRlL21zdmNydC9tYWxsb2MuaDoKCVZpamF5IEtpcmFuIEthbXVqdSA8aW5meXF1ZXN0QGdtYWlsLmNvbT4KCUltcGxlbWVudGF0aW9uIG9mIF9nZXRfc2JoX3RocmVzaG9sZCBhbmQgX3NldF9zYmhfdGhyZXNob2xkCglmdW5jdGlvbnMuCgoJKiBkbGxzL3gxMWRydi94cmVuZGVyLmM6IFJpY2hhcmQgQ29oZW4gPHJpY2hhcmRAZGFpam9idS5jby51az4KCUZpeCBjb21waWxlIHdpdGhvdXQgWFJlbmRlci4KCgkqIGRsbHMvZHNvdW5kL3Rlc3RzL2NhcHR1cmUuYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUZpeCBjYXB0dXJlIHRlc3QgdG8gbm90IGZhaWwgd2hlbiBJRGlyZWN0U291bmRDYXB0dXJlIGNsYXNzIGlzIG5vdAoJcmVnaXN0ZXJlZC4KCgkqIGRsbHMvbXNpL2RpYWxvZy5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglUYWtlIGFkdmFudGFnZSBvZiB0aGUgbXNpX2dldF9kZWZvcm1hdHRlZF9maWVsZCBmdW5jdGlvbiB0byBzaW1wbGlmeQoJc29tZSBjb2RlLgoKCSogZGxscy9tc2kvZmlsZXMuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQXZvaWQgdXNpbmcgc3RhdGljIHZhcmlhYmxlcyBpbiB0aGUgSW5zdGFsbEZpbGVzIGFjdGlvbi4KCjIwMDUtMDktMjIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL2Jhc2V0c2QuaCwgaW5jbHVkZS93aW5kZWYuaCwgaW5jbHVkZS93aW5udC5oOgoJRGVmaW5lIGRhdGEgdHlwZXMgdG8gdGhlIGNvcnJlY3Qgc2l6ZSBvbiA2NC1iaXQgcGxhdGZvcm1zLgoKCSogZGxscy9tc2kvYWN0aW9uLmMsIGRsbHMvbXNpL2NvbmQueSwgZGxscy9tc2kvY3VzdG9tLmMsCgkgIGRsbHMvbXNpL2ZpbGVzLmMsIGRsbHMvbXNpL2hlbHBlcnMuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCB2YXJpb3VzIG1lbW9yeSBsZWFrcy4KCgkqIGRsbHMvbXNpL2RpYWxvZy5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglTa2lwIHRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgYSBmb250IGlkZW50aWZpZXIgaWYgaXQncyBcIG9yICYuCgoJKiBwcm9ncmFtcy93aW5oZWxwLy5jdnNpZ25vcmUsIHByb2dyYW1zL3dpbmhlbHAvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL3dpbmhlbHAvaGxwMnNnbWwuYzoKCUdldCByaWQgb2YgdGhlIGhscDJzZ21sIGhhY2suCgoJKiB0b29scy93aW5laW5zdGFsbDoKCUxlYXZlIGNyZWF0aW9uIG9mIHRoZSBkcml2ZSBzeW1saW5rcyB0byB3aW5lcHJlZml4Y3JlYXRlLgoKCSogZGxscy9tc2kvZGlhbG9nLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBhbiBlcnJvciBpbnRyb2R1Y2VkIHdoZW4gY29udmVydGluZyBkaWFsb2cgbGlzdHMgdG8gc3RhbmRhcmQKCWxpc3RzLgoKCSogZGxscy9tc2kvYWN0aW9uLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVNpbXBsaWZ5IHRoZSBQcm9jZXNzQ29tcG9uZW50cyBhY3Rpb24gYSBsaXR0bGUuCgoJKiBkbGxzL29sZWF1dDMyL3ZhcnR5cGUuYzoKCUFsZXggVmlsbGFj7XMgTGFzc28gPGFfdmlsbGFjaXNAcGFsb3NhbnRvLmNvbT4KCUZpeCBhIHNjYWxpbmcgZXJyb3IgaW4gVmFyUjRGcm9tRGVjKCkgYW5kIFZhclI4RnJvbURlYygpIHRoYXQKCWluY29ycmVjdGx5IG11bHRpcGxpZXMgdGhlIGhpZ2ggMzIgYml0cyBvZiB0aGUgREVDSU1BTCBieSAxZTY0IGluc3RlYWQKCW9mIHRoZSBjb3JyZWN0IDJeNjQuCgoJKiBkbGxzL2RtY29tcG9zL2Nob3JkbWFwdHJhY2suYywgZGxscy9kbWNvbXBvcy9zaWducG9zdHRyYWNrLmMsCgkgIGRsbHMvZG1pbWUvZG1pbWVfbWFpbi5jLCBkbGxzL2RtaW1lL2x5cmljc3RyYWNrLmMsCgkgIGRsbHMvZG1pbWUvbWFya2VydHJhY2suYywgZGxscy9kbWltZS9wYXJhbWNvbnRyb2x0cmFjay5jLAoJICBkbGxzL2RtaW1lL3NlcXRyYWNrLmMsIGRsbHMvZG1pbWUvc3lzZXh0cmFjay5jLAoJICBkbGxzL2RtaW1lL3RpbWVzaWd0cmFjay5jLCBkbGxzL2RtaW1lL3dhdmV0cmFjay5jLAoJICBkbGxzL2Rtc2NyaXB0L3NjcmlwdHRyYWNrLmMsIGRsbHMvZG1zdHlsZS9hdWRpdGlvbnRyYWNrLmMsCgkgIGRsbHMvZG1zdHlsZS9tb3RpZnRyYWNrLmMsIGRsbHMvZG1zdHlsZS9tdXRldHJhY2suYywKCSAgZGxscy9rZXJuZWwvbW9kdWxlLmMsIGRsbHMva2VybmVsL3Rhc2suYywgZGxscy9vbGUzMi9vbGUyXzE2LmMsCgkgIGRsbHMvb2xlYXV0MzIvZGlzcGF0Y2guYywgZGxscy9zaGVsbDMyL3NoZWxsLmMsCgkgIGRsbHMvdXNlci9ub25jbGllbnQuYywgZGxscy91c2VyL3dpbi5jLCBkbGxzL3dpbmVkM2QvZGV2aWNlLmMsCgkgIGRsbHMveDExZHJ2L2RpYi5jLCBkbGxzL3gxMWRydi93aW50YWIuYzoKCVJlbW92ZWQgdW51c2VkIGRlYnVnIGNoYW5uZWxzLgoKCSogZGxscy9vbGVhdXQzMi92YXJpYW50LmM6CglBbGV4IFZpbGxhY+1zIExhc3NvIDxhX3ZpbGxhY2lzQHBhbG9zYW50by5jb20+CglNb2RpZnkgVmFyRGl2KCkgYW5kIFZhclN1YigpIHRvIHVzZSB0aGUgZXhpc3RpbmcgVmFyRGVjU3ViKCkgYW5kCglWYXJEZWNEaXYoKSBmb3IgREVDSU1BTC4KCgkqIGRvY3VtZW50YXRpb24vUkVBRE1FLm5vOgoJQWxleGFuZGVyIE4uIFP4cm5lcyA8YWxleEB0aGVoYW5kb2ZhZ29ueS5jb20+CglOb3J3ZWdpYW4gdHJhbnNsYXRpb24gb2YgcmVhZG1lIGZpbGUuCgoJKiBkbGxzL29sZTMyL3N0b3JhZ2UzMi5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIEluaXRpYWxpemUgb3V0IHBvaW50ZXIgdG8gTlVMTCBiZWZvcmUgYWNjZXNzIGNoZWNrIGluCgkgIElTdG9yYWdlX0NyZWF0ZVN0b3JhZ2UuCgktIFdyaXRlQ2xhc3NTdGcgc2hvdWxkIHJldHVybiBFX0lOVkFMSURBUkcgaWYgcHN0ZyBpcyBOVUxMIGluc3RlYWQgb2YKCSAgYXNzZXJ0aW5nLgoJLSBSZWFkQ2xhc3NTdGcgc2hvdWxkIHJldHVybiBFX0lOVkFMSURBUkcgaWYgcHN0ZyBpcyBOVUxMIGluc3RlYWQgb2YKCSAgY3Jhc2hpbmcgYW5kIGEgTlVMTCBwY2xzaWQgc2hvdWxkIGNhdXNlIGl0IHRvIHJldHVybiB0aGUgc2FtZQoJICB2YWx1ZS4KCgkqIGRsbHMvbXNpL3RhYmxlLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUxvYWQgYSB0YWJsZSdzIGNvbHVtbiBpbmZvcm1hdGlvbiBzZXBhcmF0ZWx5IGZyb20gdGhlIHRhYmxlIGl0c2VsZi4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jLCBkbGxzL21zaS9hY3Rpb24uaCwgZGxscy9tc2kvY2xhc3Nlcy5jLAoJICBkbGxzL21zaS9oZWxwZXJzLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglNYWtlIGJ1aWxkX2ljb25fcGF0aCByZXR1cm4gdGhlIHBhdGggZGlyZWN0bHkuCgoyMDA1LTA5LTIxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9hdmlmaWwzMi8uY3ZzaWdub3JlLCBkbGxzL2NvbW1kbGcvLmN2c2lnbm9yZSwKCSAgZGxscy9jdGwzZC8uY3ZzaWdub3JlLCBkbGxzL2dkaS8uY3ZzaWdub3JlLCBkbGxzL2ltbTMyLy5jdnNpZ25vcmUsCgkgIGRsbHMva2VybmVsLy5jdnNpZ25vcmUsIGRsbHMvbHpleHBhbmQvLmN2c2lnbm9yZSwKCSAgZGxscy9tc2FjbS8uY3ZzaWdub3JlLCBkbGxzL21zdmlkZW8vLmN2c2lnbm9yZSwKCSAgZGxscy9udGRsbC8uY3ZzaWdub3JlLCBkbGxzL29sZTMyLy5jdnNpZ25vcmUsCgkgIGRsbHMvb2xlYXV0MzIvLmN2c2lnbm9yZSwgZGxscy9vbGVjbGkvLmN2c2lnbm9yZSwKCSAgZGxscy9vbGVzdnIvLmN2c2lnbm9yZSwgZGxscy9yYXNhcGkzMi8uY3ZzaWdub3JlLAoJICBkbGxzL3NldHVwYXBpLy5jdnNpZ25vcmUsIGRsbHMvc2hlbGwzMi8uY3ZzaWdub3JlLAoJICBkbGxzL3R3YWluLy5jdnNpZ25vcmUsIGRsbHMvdXNlci8uY3ZzaWdub3JlLCBkbGxzL3ZlcnNpb24vLmN2c2lnbm9yZSwKCSAgZGxscy93aW4zMnMvLmN2c2lnbm9yZSwgZGxscy93aW5hc3BpLy5jdnNpZ25vcmUsCgkgIGRsbHMvd2luZWRvcy8uY3ZzaWdub3JlLCBkbGxzL3dpbmVwcy8uY3ZzaWdub3JlLAoJICBkbGxzL3dpbm1tLy5jdnNpZ25vcmUsIGRsbHMvd2lubmxzLy5jdnNpZ25vcmUsCgkgIGRsbHMvd2luc29jay8uY3ZzaWdub3JlLCBkbGxzL3dpbnRhYjMyLy5jdnNpZ25vcmU6CglXZSBhcmUgbm8gbG9uZ2VyIGdlbmVyYXRpbmcgLnNwZWMuYyBmaWxlcy4KCgkqIE1ha2UucnVsZXMuaW4sIE1ha2VmaWxlLmluLCBkbGxzL01ha2VkbGwucnVsZXMuaW4sCgkgIGRsbHMvZ2RpL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwKCSAgZGxscy9udGRsbC9NYWtlZmlsZS5pbiwgZGxscy9zaGVsbDMyL01ha2VmaWxlLmluLAoJICBkbGxzL3VzZXIvTWFrZWZpbGUuaW4sIHRvb2xzL3dpbmVidWlsZC9idWlsZC5oLAoJICB0b29scy93aW5lYnVpbGQvcmVzMTYuYywgdG9vbHMvd2luZWJ1aWxkL3NwZWMxNi5jOgoJR2VuZXJhdGUgMTYtYml0IHNwZWMgZmlsZXMgYXMgYXNzZW1ibHkgY29kZSB0b28uCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9zZXR1cGFwaS90ZXN0cy8uY3ZzaWdub3JlLAoJICBkbGxzL3NldHVwYXBpL3Rlc3RzL01ha2VmaWxlLmluLCBkbGxzL3NldHVwYXBpL3Rlc3RzL3N0cmluZ3RhYmxlLmM6CglTdGV2ZW4gRWR3YXJkcyA8d2luZWhhY2tlckBnbWFpbC5jb20+CglBZGRlZCBzdHJpbmd0YWJsZSByZWdyZXNzaW9uIHRlc3QuCgoJKiBpbmNsdWRlL3NldHVwYXBpLmgsIGRsbHMvc2V0dXBhcGkvTWFrZWZpbGUuaW4sCgkgIGRsbHMvc2V0dXBhcGkvc2V0dXBhcGkuc3BlYywgZGxscy9zZXR1cGFwaS9zdHJpbmd0YWJsZS5jOgoJRXJpYyBLb2hsIDxlcmljLmtvaGxAdC1vbmxpbmUuZGU+CglJbXBsZW1lbnQgc2V0dXBhcGkgc3RyaW5ndGFibGUgZnVuY3Rpb25zLgoKCSogdG9vbHMvd2luZWJ1aWxkL2J1aWxkLmgsIHRvb2xzL3dpbmVidWlsZC9pbXBvcnQuYywKCSAgdG9vbHMvd2luZWJ1aWxkL3JlbGF5LmMsIHRvb2xzL3dpbmVidWlsZC9yZXMzMi5jLAoJICB0b29scy93aW5lYnVpbGQvdXRpbHMuYzoKCUZhY3RvciBvdXQgYSBjb3VwbGUgb2YgdXNlZnVsIGhlbHBlciBmdW5jdGlvbnMuCgoJKiBkbGxzL3NlY3VyMzIvTWFrZWZpbGUuaW4sIGRsbHMvc2VjdXIzMi9iYXNlNjRfY29kZWMuYywKCSAgZGxscy9zZWN1cjMyL3NlY3VyMzJfcHJpdi5oOgoJS2FpIEJsaW4gPGJsaW5AZ214Lm5ldD4KCUFkZGVkIGJhc2U2NCBjb2RlYyBmb3IgY29tbXVuaWNhdGlvbiB3aXRoIG50bG1fYXV0aC4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsX05vLnJjLCBkbGxzL2NvbWN0bDMyL3JzcmMucmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX05vLnJjOgoJQWxleGFuZGVyIE4uIFP4cm5lcyA8YWxleEB0aGVoYW5kb2ZhZ29ueS5jb20+CglBZGRlZCBOb3J3ZWdpYW4gdHJhbnNsYXRpb24gb2YgY29tY3RsMzIgYW5kIHNoZWxsMzIuCgoJKiBkbGxzL2hoY3RybC5vY3gvaGVscC5jOiBKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCUFkZCB0aGUgU2l6ZUJhci4KCgkqIGRsbHMva2VybmVsL3N5bmMuYywgZGxscy9rZXJuZWwvdmlydHVhbC5jOgoJVml0YWxpeSBNYXJnb2xlbiA8d2luZS1wYXRjaEBraWV2aW5mby5jb20+CglTcGVjaWZ5IGZsYWcgT0JKX0NBU0VfSU5TRU5TSVRJVkUgd2hlbiBjYWxsaW5nIGFwcHJvcHJpYXRlIE50eHgKCWZ1bmN0aW9ucyBjcmVhdGluZy9vcGVuaW5nIG5hbWVkIG9iamVjdHMuCgoJKiB0b29scy93aW5lYnVpbGQvYnVpbGQuaCwgdG9vbHMvd2luZWJ1aWxkL3BhcnNlci5jOgoJTWFrZSBzdXJlIHRoYXQgdmFsdWVzIG9mIGFic29sdXRlIHN5bWJvbHMgZml0IGluIDE2IGJpdHMuCgoJKiB0b29scy93aW5lZ2NjL3dpbmVnY2MuYzoKCUxldCB3aW5lYnVpbGQgdGFrZSBjYXJlIG9mIGNhbGxpbmcgdGhlIGFzc2VtYmxlci4KCVBhc3MgLXYgYW5kIC1zYXZlLXRlbXBzIG9wdGlvbnMgdGhyb3VnaCB0byB3aW5lYnVpbGQgdG9vLgoKCSogdG9vbHMvd2luZWJ1aWxkL2J1aWxkLmgsIHRvb2xzL3dpbmVidWlsZC9pbXBvcnQuYywKCSAgdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jLCB0b29scy93aW5lYnVpbGQvdXRpbHMuYzoKCU1vdmVkIHN0dWIgZnVuY3Rpb24gZ2VuZXJhdGlvbiB0byBpbXBvcnQuYy4gQWRkZWQgYSBnZXRfc3R1Yl9uYW1lCglmdW5jdGlvbiB0byBlbnN1cmUgbmFtaW5nIGNvbnNpc3RlbmN5LgoKCSogZGxscy9tc2kvYWN0aW9uLmMsIGRsbHMvbXNpL2luc3RhbGwuYywgZGxscy9tc2kvbXNpcHJpdi5oOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IE1zaVNlcXVlbmNlQS9XLgoKCSogZGxscy93aW5lZDNkL2RldmljZS5jLCBkbGxzL3dpbmVkM2QvZGlyZWN0eC5jLAoJICBkbGxzL3dpbmVkM2Qvd2luZWQzZF9wcml2YXRlLmg6CglPbGl2ZXIgU3RpZWJlciA8b2xpdmVyX3N0aWViZXJAeWFob28uY28udWs+CglTdGFydCB0byBpbXBsZW1lbnQgVGVzdENvb3BlcmF0aXZlTGV2ZWwuCgoJKiB0b29scy93aW5lYnVpbGQvYnVpbGQuaCwgdG9vbHMvd2luZWJ1aWxkL2ltcG9ydC5jLAoJICB0b29scy93aW5lYnVpbGQvbWFpbi5jLCB0b29scy93aW5lYnVpbGQvdXRpbHMuYywKCSAgdG9vbHMvd2luZWJ1aWxkL3dpbmVidWlsZC5tYW4uaW46CglOb3cgdGhhdCB3ZSBoYXZlIHRvIGJlIGFibGUgdG8gcnVuIHRoZSBhc3NlbWJsZXIgZnJvbSB3aW5lYnVpbGQsIGFkZGVkCglhbiBvcHRpb24gdG8gZ2VuZXJhdGUgYSAuc3BlYy5vIGZpbGUgaW4gYSBzaW5nbGUgc3RlcC4KCUFkZGVkIC0tc2F2ZS10ZW1wcyBhbmQgLS12ZXJib3NlIG9wdGlvbnMgZm9yIGVhc2llciBkZWJ1Z2dpbmcuCgoJKiBkbGxzL21zaS9tc2lwcml2LmgsIGRsbHMvbXNpL3RhYmxlLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglEb24ndCByZWZjb3VudCB0YWJsZXMuCgoJKiBkbGxzL21zaS9hY3Rpb24uYywgZGxscy9tc2kvbXNpcXVlcnkuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVNpbXBsaWZ5IHRoZSBJbnN0YWxsVmFsaWRhdGUgYWN0aW9uIGEgbGl0dGxlLgoKCSogZGxscy9tc2kvZGlhbG9nLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2Ugc3VyZSBub3QgdG8gZnJlZSBhIGEgcG9pbnRlciB0aGF0IGhhcyBiZWVuIG1vZGlmaWVkLgoJQ2hlY2sgdGhhdCB0aGUgdGV4dCBpZGVudGlmaWVyIGRvZXNuJ3QgY29udGFpbiBpbnZhbGlkIGNoYXJhY3RlcnMuCgoJKiBkbGxzL3dpbmVkM2QvZGV2aWNlLmMsIGRsbHMvd2luZWQzZC9zdGF0ZWJsb2NrLmMsCgkgIGRsbHMvd2luZWQzZC93aW5lZDNkX3ByaXZhdGUuaDoKCU9saXZlciBTdGllYmVyIDxvbGl2ZXJfc3RpZWJlckB5YWhvby5jby51az4KCUFkZGVkIHN1cHBvcnQgZm9yIHN0YXRlIG1hbmFnZW1lbnQgb2YgdmVydGV4IHNoYWRlciBjb25zdGFudHMgdmlhCglzdGF0ZWJsb2Nrcy4KCgkqIGRsbHMvbnRkbGwvdmlydHVhbC5jOiBJZ25vcmUgcmVsb2NhdGlvbnMgZm9yIHVubWFwcGVkIHBhZ2VzLgoKCSogZGxscy9udGRsbC90aW1lLmMsIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jLCBkbGxzL3VzZXIvdGV4dC5jLAoJICBwcm9ncmFtcy93aW5lbWVudWJ1aWxkZXIvd2luZW1lbnVidWlsZGVyLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggImVtcHR5IGJvZHkgaW4gYW4gaWYvZWxzZS1zdGF0ZW1lbnQiIHdhcm5pbmdzLgoKCSogZGxscy9jb21jdGwzMi9jb21ib2V4LmM6IEphc29uIEVkbWVhZGVzIDx1c0BlZG1lYWRlcy5tZS51az4KCUZpeCBzb21lIG9mZiBieSBvbmUgY2FsY3VsYXRpb25zIGluIHRoZSBjb21ib2JveGV4IGZ1bmN0aW9ucywgYW5kCgloYW5kbGUgYW4gb3V0IG9mIHJhbmdlIHBvc2l0aXZlIGluZGV4IHRoZSBzYW1lIGFzIHdpbmRvd3MgKyB1bml0IHRlc3QKCWNhc2UuCgoJKiBkbGxzL21zaS9jcmVhdGUuYywgZGxscy9tc2kvZGlhbG9nLmMsIGRsbHMvbXNpL2Zvcm1hdC5jLAoJICBkbGxzL21zaS9oZWxwZXJzLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggc29tZSBzaW1wbGUgbWVtb3J5IGxlYWtzLgoKCSogZGxscy93aW5lZDNkL2RldmljZS5jLCBkbGxzL3dpbmVkM2QvZGlyZWN0eC5jLAoJICBkbGxzL3dpbmVkM2Qvd2luZWQzZF9wcml2YXRlLmgsIGluY2x1ZGUvd2luZS93aW5lZDNkX2dsLmg6CglPbGl2ZXIgU3RpZWJlciA8b2xpdmVyX3N0aWViZXJAeWFob28uY28udWs+CglJbXBsZW1lbnRlZCBvY2NsdXNpb24gcXVlcmllcyB1c2luZyBlaXRoZXIgR0xfQVJCX29jY2x1c2lvbl9xdWVyeSBvcgoJR0xfTlZfb2NjbHVzaW9uX3F1ZXJ5LgoKCSogZGxscy9kM2Q4L2QzZDguc3BlYywgZGxscy9kM2Q4L3NoYWRlci5jOgoJT2xpdmVyIFN0aWViZXIgPG9saXZlcl9zdGllYmVyQHlhaG9vLmNvLnVrPgoJQ29ycmVjdCB0aGUgbnVtYmVyIG9mIHBhcmFtZXRlcnMgKGFuZCBwYXJ0bHkgdGhlaXIgbmFtZXMpIGZvciB0aGUKCXVuZG9jdW1lbnRlZCBmdW5jdGlvbnMgVmFsaWRhdGVQaXhlbFNoYWRlciBhbmQgVmFsaWRhdGVWZXJ0ZXhTaGFkZXIuCgoJKiBkbGxzL2NvbWN0bDMyL3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMvY29tY3RsMzIvdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvY29tY3RsMzIvdGVzdHMvY29tYm9leC5jOgoJSmFzb24gRWRtZWFkZXMgPHVzQGVkbWVhZGVzLm1lLnVrPgoJRml4IHNvbWUgb2ZmIGJ5IG9uZSBjYWxjdWxhdGlvbnMgaW4gdGhlIGNvbWJvYm94ZXggZnVuY3Rpb25zLCBhbmQKCWhhbmRsZSBhbiBvdXQgb2YgcmFuZ2UgcG9zaXRpdmUgaW5kZXggdGhlIHNhbWUgYXMgd2luZG93cyArIHVuaXQgdGVzdAoJY2FzZS4KCgkqIGluY2x1ZGUvd3MydGNwaXAuaDogVmlqYXkgS2lyYW4gS2FtdWp1IDxpbmZ5cXVlc3RAZ21haWwuY29tPgoJQWRkZWQgYWRkcmluZm8gc3RydWN0dXJlcy4KCgkqIGRsbHMvZ2RpL2ZvbnQuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbGVhc2UgdGhlIGRjIGJlZm9yZSBkcmF3aW5nIHRoZSB1bmRlcmxpbmUgYW5kIHN0cmlrZW91dCBsaW5lcy4KCjIwMDUtMDktMjAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL21zaS9kaWFsb2cuYywgZGxscy9zaGx3YXBpL29yZGluYWwuYywgcHJvZ3JhbXMvbm90ZXBhZC9tYWluLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRml4IHRoZSB1c2FnZSBvZiBDT0xPUl94eHggY29uc3RhbnRzIGluIHRoZSBwbGFjZSBvZiB0aGUgd2luZG93J3MKCWNsYXNzIGhickJhY2tncm91bmQuCgoJKiBkbGxzL2hoY3RybC5vY3gvaGVscC5jOiBKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCUNvcnJlY3RseSBkcmF3IHRoZSBuYXZpZ2F0aW9uIHBhbmUuCgoJKiBwcm9ncmFtcy9jbG9jay9Oby5yYywgcHJvZ3JhbXMvY2xvY2svcnNyYy5yYywgcHJvZ3JhbXMvdGFza21nci9Oby5yYywKCSAgcHJvZ3JhbXMvdGFza21nci90YXNrbWdyLnJjOgoJQWxleGFuZGVyIE4uIFP4cm5lcyA8YWxleEB0aGVoYW5kb2ZhZ29ueS5jb20+CglBZGRlZCBOb3J3ZWdpYW4gdHJhbnNsYXRpb25zLgoKCSogZGxscy9tc2kvYWN0aW9uLmMsIGRsbHMvbXNpL2FwcHNlYXJjaC5jLCBkbGxzL21zaS9jbGFzc2VzLmMsCgkgIGRsbHMvbXNpL2NvbmQueSwgZGxscy9tc2kvY3VzdG9tLmMsIGRsbHMvbXNpL2RhdGFiYXNlLmMsCgkgIGRsbHMvbXNpL2RpYWxvZy5jLCBkbGxzL21zaS9maWxlcy5jLCBkbGxzL21zaS9mb3JtYXQuYywKCSAgZGxscy9tc2kvaGVscGVycy5jLCBkbGxzL21zaS9pbnN0YWxsLmMsIGRsbHMvbXNpL21zaS5jLAoJICBkbGxzL21zaS9tc2lxdWVyeS5jLCBkbGxzL21zaS90YWJsZS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgbWVtb3J5IGFsbG9jYXRpb24gaW5saW5lIGZ1bmN0aW9ucyAocGFydCAyKS4KCgkqIGRsbHMvbXNpL2NyZWF0ZS5jLCBkbGxzL21zaS9kZWxldGUuYywgZGxscy9tc2kvZGlzdGluY3QuYywKCSAgZGxscy9tc2kvZXZlbnRzLmMsIGRsbHMvbXNpL2hhbmRsZS5jLCBkbGxzL21zaS9pbnNlcnQuYywKCSAgZGxscy9tc2kvbXNpcHJpdi5oLCBkbGxzL21zaS9vcmRlci5jLCBkbGxzL21zaS9wYWNrYWdlLmMsCgkgIGRsbHMvbXNpL3ByZXZpZXcuYywgZGxscy9tc2kvcmVjb3JkLmMsIGRsbHMvbXNpL3JlZ2lzdHJ5LmMsCgkgIGRsbHMvbXNpL3NlbGVjdC5jLCBkbGxzL21zaS9zb3VyY2UuYywgZGxscy9tc2kvc3FsLnksCgkgIGRsbHMvbXNpL3N0cmluZy5jLCBkbGxzL21zaS9zdW1pbmZvLmMsIGRsbHMvbXNpL3VwZGF0ZS5jLAoJICBkbGxzL21zaS91cGdyYWRlLmMsIGRsbHMvbXNpL3doZXJlLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBtZW1vcnkgYWxsb2NhdGlvbiBpbmxpbmUgZnVuY3Rpb25zIChwYXJ0IDEpLgoKCSogZGxscy91bmljb3dzL01ha2VmaWxlLmluLCBkbGxzL3VuaWNvd3MvbWFpbi5jOgoJRXhwb3J0ZWQgc3ltYm9scyBub3cgZ2V0IHJlc29sdmVkIHByb3Blcmx5IHNvIHdlIG5vIGxvbmdlciBuZWVkIHRoZQoJbGlzdCBvZiBkdW1teSByZWZlcmVuY2VzLgoKCSogZGxscy91c2VyL2RkZV9taXNjLmMsIGRsbHMvdXNlci9kZGVfcHJpdmF0ZS5oOgoJQWRkZWQgYSBtYWdpYyBudW1iZXIgdG8gdGhlIFdETUxfQ09OViBzdHJ1Y3R1cmUgdG8gZml4IHNvbWUgZmFpbGluZwoJdGVzdHMuCgoJKiB0b29scy93aW5lYnVpbGQvcmVsYXkuYzogRml4ZWQgc3RhY2sgb2Zmc2V0IG9mICVlYXggcmVnaXN0ZXIuCgoJKiBkbGxzL2NvbWN0bDMyL3JlYmFyLmMsIGRsbHMvbXNpL2N1c3RvbS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IGlmJ3MgdGhhdCBhcmUgZm9sbG93ZWQgYnkgc2VtaWNvbG9ucy4KCgkqIGRsbHMvbXNpL2luc3RhbGwuYywgZGxscy9tc2kvbXNpLnNwZWMsIGluY2x1ZGUvbXNpcXVlcnkuaDoKCUphbiBWYW4gQnVnZ2VuaG91dCA8Q2hpcHp6QFVMWVNTSVMuT3JnPgoJaW1wbGVtZW50IHN0dWJzIGZvciBNc2lTZXF1ZW5jZVtBV10uCgoJKiBpbmNsdWRlL21zaS5oOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBZGQgSU5TVEFMTFNUQVRFX05PVFVTRUQgdG8gdGhlIElOU1RBTExTVEFURSBlbnVtZXJhdGlvbi4KCgkqIGRsbHMvb2xlMzIvb2xlMi5jLCBkbGxzL29sZTMyL29sZTJzdHVicy5jOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IE9sZUlzUnVubmluZy4KCgkqIGRsbHMvb2xlMzIvbWFyc2hhbC5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIEZpeCBhIHRyYWNlIHRvIHJlZmVyIHRvIHRoZSBvYmplY3QgSUQgcmF0aGVyIHRoYW4gdGhlIGxlZ2FjeSBNSUQuCgktIEZpeCB0aGUgZXJyb3IgY2FzZSBvZiBDb01hcnNoYWxJbnRlclRocmVhZEludGVyZmFjZSB0byByZWxlYXNlIHRoZQoJICBzdHJlYW0uCgoyMDA1LTA5LTE5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogdG9vbHMvd2luZWJ1aWxkL2J1aWxkLmgsIHRvb2xzL3dpbmVidWlsZC9pbXBvcnQuYywKCSAgdG9vbHMvd2luZWJ1aWxkL21haW4uYywgdG9vbHMvd2luZWJ1aWxkL3BhcnNlci5jLAoJICB0b29scy93aW5lYnVpbGQvc3BlYzMyLmMsIHRvb2xzL3dpbmVidWlsZC93aW5lYnVpbGQubWFuLmluLAoJICB0b29scy93aW5lZ2NjL3dpbmVnY2MuYzoKCUNyZWF0ZSBhbiBhc3NlbWJseSBmaWxlIHdpdGggYWxsIHVuZGVmaW5lZCBzeW1ib2xzIGFuZCBhZGQgaXQgdG8gdGhlCglsaW5rIGNvbW1hbmQgc28gdGhhdCB0aGUgc3ltYm9scyBzaG93IHVwIGluIHRoZSBmaW5hbCB1bmRlZmluZWQgbGlzdC4KCVVzZSB0aGF0IGxpc3QgdG8gY3JlYXRlIHRodW5rcyBmb3IgYWxsIGV4cG9ydGVkIGJ1dCB1bmRlZmluZWQgc3ltYm9scywKCXRvIG1ha2Ugc3VyZSBhbGwgZXhwb3J0IFJWQXMgcG9pbnQgc29tZXdoZXJlIGluc2lkZSB0aGUgbW9kdWxlLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGxfQmcucmMsIGRsbHMvY29tY3RsMzIvcnNyYy5yYywKCSAgZGxscy9jb21tZGxnL2NkbGdfQmcucmMsIGRsbHMvY29tbWRsZy9yc3JjLnJjLCBkbGxzL21wci9tcHIucmMsCgkgIGRsbHMvbXByL21wcl9CZy5yYywgZGxscy9tc2h0bWwvQmcucmMsIGRsbHMvbXNodG1sL3JzcmMucmMsCgkgIGRsbHMvbXNpL21zaS5yYywgZGxscy9tc2kvbXNpX0JnLnJjLCBkbGxzL21zcmxlMzIvbXNybGVfQmcucmMsCgkgIGRsbHMvbXNybGUzMi9yc3JjLnJjLCBkbGxzL29sZWF1dDMyL29sZWF1dDMyLnJjLAoJICBkbGxzL29sZWF1dDMyL29sZWF1dDMyX0JnLnJjLCBkbGxzL3NlcmlhbHVpL0JnLnJjLAoJICBkbGxzL3NlcmlhbHVpL3NlcmlhbHVpX3JjLnJjLCBkbGxzL3NldHVwYXBpL0JnLnJjLAoJICBkbGxzL3NldHVwYXBpL3NldHVwYXBpLnJjLCBkbGxzL3NoZG9jdncvQmcucmMsCgkgIGRsbHMvc2hkb2N2dy9zaGRvY3Z3LnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9CZy5yYywKCSAgZGxscy9zaGVsbDMyL3NocmVzLnJjLCBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMi5yYywKCSAgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfQmcucmMsIGRsbHMvd2luZXBzL3JzcmMucmMsCgkgIGRsbHMvd2luZXBzL3dwc19CZy5yYywgZGxscy93aW5pbmV0L3JzcmMucmMsCgkgIGRsbHMvd2luaW5ldC93aW5pbmV0X0JnLnJjLCBkbGxzL3dpbnNwb29sL0JnLnJjLAoJICBkbGxzL3dpbnNwb29sL3dpbnNwb29sLnJjLCBwcm9ncmFtcy9ub3RlcGFkL0JnLnJjLAoJICBwcm9ncmFtcy9ub3RlcGFkL3JzcmMucmMsIHByb2dyYW1zL3JlZ2VkaXQvQmcucmMsCgkgIHByb2dyYW1zL3JlZ2VkaXQvcnNyYy5yYywgcHJvZ3JhbXMvdW5pbnN0YWxsZXIvQmcucmMsCgkgIHByb2dyYW1zL3VuaW5zdGFsbGVyL3JzcmMucmMsIHByb2dyYW1zL3dpbmVjZmcvQmcucmMsCgkgIHByb2dyYW1zL3dpbmVjZmcvd2luZWNmZy5yYywgcHJvZ3JhbXMvd2luaGVscC9CZy5yYywKCSAgcHJvZ3JhbXMvd2luaGVscC9yc3JjLnJjOgoJTWlsa28gS3JhY2hvdW5vdiA8bWlsa29AM21oei5uZXQ+CglCdWxnYXJpYW4gcmVzb3VyY2VzIGZvciBtcHIsIG1zaSwgdXNlciwgY29tbWRsZywgb2xlYXV0MzIsIHNoZG9jdncsCglzaGVsbDMyLCBjb21jdGwzMiwgbXNybGUzMiwgbXNodG1sLCB3aW5zcG9vbCwgd2luZXBzLCBzZXJpYWx1aSwKCXNldHVwYXBpLCB3aW5pbmV0LCByZWdlZGl0LCB1bmluc3RhbGxlciwgbm90ZXBhZCwgd2luZWNmZyBhbmQKCXdpbmhlbHAuCgoJKiBkbGxzL3gxMWRydi93aW5wb3MuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVVzZSB0aGUgZXZlbnQncyB3aWR0aCBhbmQgaGVpZ2h0IG5vdCB0aGUgdHJhbnNsYXRlZCB3aW5kb3cgcmVjdCB0bwoJcmVjb2duaXplIGEgemVybyBzaXplZCB3aW5kb3cgaW4gdGhlIENvbmZpZ3VyZU5vdGlmeSBoYW5kbGVyLgoKCSogaW5jbHVkZS9obGluay5pZGw6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglBZGQgdGhlIElIbGlua0ZyYW1lIGludGVyZmFjZSB0byBobGluay5pZGwuCgoJKiBkbGxzL2hoY3RybC5vY3gvaGVscC5jOiBKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCUFkZCBpbml0aWFsIHRvb2xiYXIgYnV0dG9uIGhhbmRsaW5nLgoKCSogZGxscy93aW5lZDNkL2RpcmVjdHguYzogT2xpdmVyIFN0aWViZXIgPG9saXZlcl9zdGllYmVyQHlhaG9vLmNvLnVrPgoJUmV0dXJuIHRoZSBhZGFwdG9yIG1vZGUgYXMgWDhSOEc4Qjggd2hlbiBCUFAgaXMgMjQgb3IgMzIgYml0cy4KCgkqIHRvb2xzL3dpbmVidWlsZC9idWlsZC5oLCB0b29scy93aW5lYnVpbGQvaW1wb3J0LmMsCgkgIHRvb2xzL3dpbmVidWlsZC91dGlscy5jOgoJRG9uJ3QgcmVtb3ZlIGlnbm9yZWQgc3ltYm9scyBmcm9tIHRoZSB1bmRlZmluZWQgbGlzdCwgc2ltcGx5IHNraXAgdGhlbQoJd2hlbiByZXNvbHZpbmcgaW1wb3J0cy4KCUFkZGVkIGdldF90ZW1wX2ZpbGVfbmFtZSB1dGlsaXR5IGZ1bmN0aW9uLgoKCSogaW5jbHVkZS93aW5zb2NrMi5oOgoJVXNlIHRoZSBkZWZhdWx0IHN0cnVjdHVyZSBwYWNraW5nIGxpa2UgV2luZG93cyBkb2VzLgoKCSogaW5jbHVkZS90aHJlYWQuaDoKCUZpeGVkIHRoZSBzdHJ1Y3R1cmUgbGF5b3V0IHRvIGJlIGlkZW50aWNhbCB0byB0aGUgcHVibGljIG9uZSBhbHNvIG9uCgk2NC1iaXQgcGxhdGZvcm1zLgoKCSogbGlicy93aW5lL2xkdC5jOiBSZW1vdmVkIHN5c2k4NiBwcm90b3R5cGUgdGhhdCBpcyBjYXVzaW5nIGNvbmZsaWN0cy4KCgkqIGRsbHMvc2hkb2N2dy9zaGRvY3Z3LnNwZWMsIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWMsCgkgIHRvb2xzL3dpbmVidWlsZC9wYXJzZXIuYzoKCVRha2UgaW50byBhY2NvdW50IC1ub25hbWUgZnVuY3Rpb25zIHdoZW4gY2hlY2tpbmcgZm9yIGR1cGxpY2F0ZSBleHBvcnQKCW5hbWVzLiBGaXhlZCBhIGNvdXBsZSBvZiBpc3N1ZXMgZm91bmQgYnkgdGhlIHN0cmljdGVyIGNoZWNrLgoKCSogZGxscy9vbGUzMi9kZWZhdWx0aGFuZGxlci5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIFJlbW92ZSByZWR1bmFudCBicmFjZXMuCgktIENvbXBhY3QgbXVsdGktbGluZSBjb21tZW50cyB0aGF0IGZpdCBpbnRvIG9uZSBsaW5lLgoJLSBSZW1vdmUgY29tbWVudHMgdGhhdCBzdGF0ZSB0aGUgb2J2aW91cy4KCS0gUmVtb3ZlIGV4dHJhIGJyYWNrZXRzIHRoYXQgYXJlIHJlZHVuZGFudCBiZWNhdXNlIHRoZSAtPiBvcGVyYXRvcgoJICBiaW5kcyB0aWdodGVyIHRoYW4gJi4KCS0gQ2hhbmdlICJ0aGlzIiB0byAiVGhpcyIgdG8gbWFrZSBjb2RlIG1vcmUgbGlrZSBvdGhlciBpbnRlcmZhY2UKCSAgaW1wbGVtZW50YXRpb25zLgoJLSBSZW1vdmUgcmVkdW5kYW50IGNvbXBhcmlzb25zIHdpdGggTlVMTCBmb3IgcG9pbnRlcnMuCgoJKiBkbGxzL21zdmNydC9oZWFwLmMsIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjLCBpbmNsdWRlL21zdmNydC9tYWxsb2MuaDoKCVZpamF5IEtpcmFuIEthbXVqdSA8aW5meXF1ZXN0QGdtYWlsLmNvbT4KCUFkZGVkIF9fcF9fYW1ibGtzaXogaW1wbGVtZW50YXRpb24uCgoJKiBkbGxzL3gxMWRydi94cmVuZGVyLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglEb24ndCBmcmVlIGEgbW9kaWZpZWQgcG9pbnRlci4KCgkqIGRsbHMvZ2RpL2ZvbnQuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBhIHByb2JsZW0gd2l0aCBoYW5kbGluZyBFVE9fR0xQWUhfSU5ERVguICBTcG90dGVkIGJ5IFJvYgoJU2hlYXJtYW4uCgoJKiBkbGxzL29sZTMyL21hcnNoYWwuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJRml4IHRoZSByZXR1cm4gY29kZXMgZHVyaW5nIHVubWFyc2hhbGluZyBzbyB0aGF0IGl0IHJldHVybnMgZmFpbHVyZQoJY29kZXMgaW5zdGVhZCBvZiBTX0ZBTFNFIHJldHVybmVkIGZyb20gSVN0cmVhbV9SZWFkLgoKCSogZGxscy9oaGN0cmwub2N4L2hlbHAuYzogSmFtZXMgSGF3a2lucyA8dHJ1aWtlbkBnbWFpbC5jb20+CglDaGVjayBmb3IgYW4gZW1wdHkgc3RyaW5nIG5vdCBhIE5VTEwgcG9pbnRlci4KCgkqIGRsbHMvbWNpYXZpMzIvbW1vdXRwdXQuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCURpcmVjdGx5IGNvcHkgRElCIGJpdHMgaW50byBkZXN0aW5hdGlvbiBEQy4KCgkqIGRsbHMvd2luZWQzZC9kaXJlY3R4LmM6IE9saXZlciBTdGllYmVyIDxvbGl2ZXJfc3RpZWJlckB5YWhvby5jby51az4KCVByZXZlbnQgQ2hlY2tEZXB0aFN0ZW5jaWxNYXRjaCBmcm9tIGNhdXNpbmcgcHJvYmxlbXMgaWYgdGhlcmUgaXMgYQoJY3VycmVudCBhY3RpdmUgT3BlbkdMIGNvbnRleHQuCgoJKiBkbGxzL3dpbmVkM2QvZGV2aWNlLmMsIGRsbHMvd2luZWQzZC9zdGF0ZWJsb2NrLmM6CglPbGl2ZXIgU3RpZWJlciA8b2xpdmVyX3N0aWViZXJAeWFob28uY28udWs+CglTdG9wIHZlcnRleCBzaGFkZXIgY29uc3RhbnRzIGZyb20gYmVpbmcgc2V0IGF0IHRoZSBzYW1lIHRpbWUgYXMgdGhlCgl2ZXJ0ZXggc2hhZGVyIHdoZW4gYSBzdGF0ZWJsb2NrIGlzIGFwcGxpZWQuCgoJKiBkbGxzL21zaHRtbC9GaS5yYywgZGxscy9tc2h0bWwvcnNyYy5yYywgZGxscy9tc2kvbXNpLnJjLAoJICBkbGxzL21zaS9tc2lfRmkucmM6CglLaW1tbyBNeWxseXZpcnRhIDxraW1tby5teWxseXZpcnRhQGdtYWlsLmNvbT4KCUFkZGVkIEZpbm5pc2ggcmVzb3VyY2VzLgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJU3VwcG9ydCBtb3JlIGFyZ3VtZW50cyBpbiBfaW52b2tlKCkuCgoJKiBkbGxzL3VybG1vbi9zZXNzaW9uLmMsIGluY2x1ZGUvdXJsbW9uLmlkbDoKCUphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CgktIEFkZGVkIElIdHRwTmVnb3RpYXRlMiBpbnRlcmZhY2UuCgktIFVwZGF0ZSBCSU5EU1RSSU5HIGFuZCBJSW50ZXJuZXRTZXNzaW9uLgoKMjAwNS0wOS0xOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvY29tY3RsMzIvaGVhZGVyLmM6IEdlIHZhbiBHZWxkb3JwIDxndmdAcmVhY3Rvcy5jb20+CglEbyBzb21lIGJvdW5kcyBjaGVja2luZyBvbiBpT3JkZXIuCgoJKiBkbGxzL2NvbW1kbGcvY2RsZ19Oby5yYywgZGxscy9tc2kvbXNpLnJjLCBkbGxzL21zaS9tc2lfTm8ucmMsCgkgIHByb2dyYW1zL3VuaW5zdGFsbGVyL05vLnJjLCBwcm9ncmFtcy91bmluc3RhbGxlci9yc3JjLnJjOgoJQWxleGFuZGVyIE4uIFP4cm5lcyA8YWxleEB0aGVoYW5kb2ZhZ29ueS5jb20+CglBZGRlZCBOb3J3ZWdpYW4gdHJhbnNsYXRpb25zLgoKCSogZGxscy9rZXJuZWwva2VybmVsMTZfcHJpdmF0ZS5oLCBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLAoJICBkbGxzL2tlcm5lbC9uZV9tb2R1bGUuYywgZGxscy9rZXJuZWwvcmVsYXkxNi5jLCBkbGxzL3dpbmVkb3MvcmVsYXkuYywKCSAgaW5jbHVkZS93aW5lL3dpbmJhc2UxNi5oLCB0b29scy93aW5lYnVpbGQvaW1wb3J0LmMsCgkgIHRvb2xzL3dpbmVidWlsZC9yZWxheS5jLCB0b29scy93aW5lYnVpbGQvc3BlYzE2LmM6CglNb3ZlZCByZXR1cm4gdmFsdWUgaGFuZGxpbmcgdG8gdGhlIGluZGl2aWR1YWwgcmVsYXkgdGh1bmtzIHNvIHRoYXQgd2UKCW9ubHkgbmVlZCBvbmUgdmVyc2lvbiBvZiB3aW5lX2NhbGxfZnJvbV8xNi4KCVBhdGNoIHRoZSB3aW5lX2NhbGxfZnJvbV8xNiBhZGRyZXNzIGFsb25nIHdpdGggdGhlIGNzIHZhbHVlIGRpcmVjdGx5CglpbiB0aGUgMTYtYml0IGNvZGUgc2VnbWVudCB0byBhdm9pZCB0aGUgbmVlZCBmb3Igc3BlY2lhbCBtYWdpYyBpbiB0aGUKCWltcG9ydCB0aHVua3MuCgoJKiBkbGxzL250ZGxsL2hlYXAuYzoKCUZpeGVkIHNvbWUgdHJhY2UgZm9ybWF0IHN0cmluZ3MgKHJlcG9ydGVkIGJ5IEdlcmFsZCBQZmVpZmVyKS4KCgkqIGRsbHMvbnRkbGwvcmVsYXkuYywgaW5jbHVkZS93aW5lL3BvcnQuaCwgdG9vbHMvd2luZWJ1aWxkL2ltcG9ydC5jLAoJICB0b29scy93aW5lYnVpbGQvcmVsYXkuYywgdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jOgoJTWFrZSB0aGUgdXNlcnMgb2Ygd2luZV9jYWxsX2Zyb21fMzJfcmVncyBzYXZlICVlYXggc28gdGhhdCB3ZSBkb24ndAoJbmVlZCBhIHNwZWNpYWwgaGFjayBpbiB0aGUgaW1wb3J0IHRodW5rLgoJQWRkZWQgYSBnZXRfcGNfdGh1bmtfZWF4IGZ1bmN0aW9uIHRvIHNpbXBsaWZ5IHRoZSBjb2RlIGEgYml0LgoKCSogZGxscy9jb21jdGwzMi9hbmltYXRlLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglDYWxsIFNldERJQml0cyB3aXRoIGEgcHJvcGVyIERDIGluIG9yZGVyIHRvIHNldCBiaXRtYXAgYml0cy4KCgkqIGRsbHMvdXNlci9zeXNwYXJhbXMuYzogS2ltbW8gTXlsbHl2aXJ0YSA8a2ltbW8ubXlsbHl2aXJ0YUBnbWFpbC5jb20+CglJZiBIS0NVXFNvZnR3YXJlXFdpbmUgZG9lcyBub3QgeWV0IGV4aXN0LCBjcmVhdGUgaXQgYXMgbm9uLXZvbGF0aWxlCglrZXksIGluc3RlYWQgb2Ygdm9sYXRpbGUuCgoJKiBkbGxzL3dpbmVkb3MvaW50MjEuYzoKCUNocmlzdGlhbiBMdXBpZW4gPGx1cGllbkBwaHlzaXF1ZS51c2hlcmJyb29rZS5jYT4KCUF2b2lkIG92ZXJmbG93IGluIHRoZSByZWFkIGZpbGUgbGltaXQgY2hlY2suCgoJKiBkbGxzL29sZTMyL21hcnNoYWwuYywgZGxscy9vbGUzMi9vbGVwcm94eS5jLAoJICBkbGxzL29sZTMyL3Rlc3RzL21hcnNoYWwuYywgZGxscy9vbGVhdXQzMi90bWFyc2hhbC5jLAoJICBkbGxzL3JwY3J0NC9jcHJveHkuYzoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCByZWYtY291bnRpbmcgcnVsZXMgdG8gbWF0Y2ggbmF0aXZlIERDT00gRGxscy4KCjIwMDUtMDktMTcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBsaWJzL3dpbmUvbG9hZGVyLmMsIHRvb2xzL3dpbmVidWlsZC9pbXBvcnQuYywKCSAgdG9vbHMvd2luZWJ1aWxkL3JlczMyLmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYzoKCVN0b3JlIFJWQXMgaW5zdGVhZCBvZiBwb2ludGVycyB3aGVyZXZlciBwb3NzaWJsZSBpbiB0aGUgZ2VuZXJhdGVkIE5UCgloZWFkZXIgYW5kIGRpcmVjdG9yaWVzLgoKCSogcHJvZ3JhbXMvbm90ZXBhZC9Oby5yYywgcHJvZ3JhbXMvbm90ZXBhZC9yc3JjLnJjOgoJQWxleGFuZGVyIE4uIFP4cm5lcyA8YWxleEB0aGVoYW5kb2ZhZ29ueS5jb20+CglBZGRlZCBOb3J3ZWdpYW4gdHJhbnNsYXRpb24uCgoJKiBkbGxzL2F2aWZpbDMyL2F2aWZpbGUuYzogIERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CgkgUmV2ZXJ0IHByZXZpb3VzIGNoYW5nZSwgaXQgc2hvdWxkIG5vdCBiZSBuZWVkZWQgYW55bW9yZSBzaW5jZSBhCgkgcHJvcGVyIGZpeCBmb3IgbW1pb0Rlc2NlbmQgcmVncmVzc2lvbiBoYXMgYmVlbiBjb21taXR0ZWQuCgoJKiBkbGxzL21zaS9tc2lwcml2LmgsIGRsbHMvbXNpL3RhYmxlLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggbWVtb3J5IGxlYWtzIGluIHRoZSB0YWJsZSBjb2RlLgoKCSogZGxscy9tc2kvZGlhbG9nLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlYWQgdGhlIE1hc2tFZGl0IHRlbXBsYXRlIGZyb20gdGhlIGNvcnJlY3QgZGIgZmllbGQuCgoJKiBkbGxzL29sZTMyL2RlZmF1bHRoYW5kbGVyLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlLWFycmFuZ2Ugc29tZSBmdW5jdGlvbnMgYW5kIHZ0YWJsZXMgc28gd2UgZG9uJ3QgaGF2ZSBkZWNsYXJhdGlvbnMKCWZvciBhbGwgb2YgdGhlIGZ1bmN0aW9ucyBpbiB0aGUgZmlsZS4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jOiBHZSB2YW4gR2VsZG9ycCA8Z3ZnQHJlYWN0b3MuY29tPgoJQnVmZmVyIHNpemUgbmVlZHMgdG8gYmUgc3BlY2lmaWVkIGluIGJ5dGVzIG9uIGlucHV0LgoKCSogZGxscy91c2VyL3VzZXJfbWFpbi5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglHZXREZXNrdG9wV2luZG93IGNhbiBub3cgcG90ZW50aWFsbHkgY3JlYXRlIGEgdGhyZWFkLCBzbyB3ZSBzaG91bGRuJ3QKCWNhbGwgdGhpcyBmdW5jdGlvbiBmcm9tIERsbE1haW4gb3RoZXJ3aXNlIGl0IGlzIHBvc3NpYmxlIHRvIGNhdXNlIGEKCWRlYWRsb2NrLgoKMjAwNS0wOS0xNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sIGRsbHMvbnRkbGwvc2lnbmFsX3g4Nl82NC5jOgoJUHJlbGltaW5hcnkgaW1wbGVtZW50YXRpb24gb2Ygc2lnbmFsIGhhbmRsaW5nIGZvciB4ODYtNjQuCgoJKiBkbGxzL3dpbm1tL21taW8uYywgZGxscy93aW5tbS90ZXN0cy8uY3ZzaWdub3JlLAoJICBkbGxzL3dpbm1tL3Rlc3RzL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL3Rlc3RzL21taW8uYywKCSAgaW5jbHVkZS9tbXN5c3RlbS5oOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBhIHRlc3QgZm9yIG1taW9EZXNjZW5kLCBtYWtlIGl0IHBhc3MgdW5kZXIgV2luZS4KCgkqIGRsbHMvbXNpL2RpYWxvZy5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglDb252ZXJ0IHRoZSBsaXN0IG9mIGRpYWxvZyBjb250cm9scyB0byBhIHN0YW5kYXJkIGxpc3QuCgoJKiB0b29scy93aW5lYnVpbGQvaW1wb3J0LmM6IEltcGxlbWVudGVkIGltcG9ydCB0aHVua3MgZm9yIHg4Ni02NC4KCgkqIGRsbHMvbXNpL2RhdGFiYXNlLmMsIGRsbHMvbXNpL21zaXByaXYuaCwgZGxscy9tc2kvdGFibGUuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2UgbG9hZF9zdHJpbmdfdGFibGUgcmV0dXJuIHRoZSBzdHJpbmcgdGFibGUuCgoJKiBkbGxzL21zaS9kaWFsb2cuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRGVmb3JtYXQgYWxsIGRpYWxvZyB0ZXh0IHN0cmluZ3MgYmVmb3JlIHVzaW5nIHRoZW0uCgoJKiBzZXJ2ZXIvTWFrZWZpbGUuaW4sIHNlcnZlci9jb250ZXh0X3g4Nl82NC5jOgoJUHJlbGltaW5hcnkgdmVyc2lvbiBvZiB0aGUgY29udGV4dCBzdXBwb3J0IGZvciB4ODYtNjQuCgoJKiBkbGxzL250ZGxsL2hlYXAuYywgZGxscy9udGRsbC92aXJ0dWFsLmM6CglGaXhlZCBhIGZldyBwb2ludGVyIHRydW5jYXRpb24gYnVncyBmb3IgNjQtYml0IHBsYXRmb3Jtcy4KCgkqIGRsbHMvbnRkbGwvc2VydmVyLmMsIHNlcnZlci9yZXF1ZXN0LmM6CglVc2UgdGhlIHByb3BlciBzaXplIGZvciB0aGUgY21zZ19mZCBzdHJ1Y3R1cmUgb24gNjQtYml0IHBsYWZvcm1zLgoKCSogZGxscy9tc3ZjcnRkL21zdmNydGQuc3BlYzoKCUZvcndhcmQgYWxsIGZ1bmN0aW9ucyB0byBtc3ZjcnQgaW5zdGVhZCBvZiBoYXZpbmcgdGhlbSBsaW5rIGRpcmVjdGx5Cgl0byBsaWJjLgoKCSogZGxscy9nZGkvZnJlZXR5cGUuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCU9yZGVyIHRoZSBiaXRtYXAgZm9udCBsaXN0IGJ5IHRoZSBhbnNpIGNvZGVwYWdlIGJpdCBwb3NpdGlvbi4KCUZpeCBhIGZldyBjb21tZW50cy4KCgkqIGRsbHMvdXJsbW9uL3Rlc3RzL3VybC5jOiBKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJTW9yZSB0ZXN0cyBvZiBVUkxNb25pa2VyLgoKCSogZm9udHMvLmN2c2lnbm9yZSwgZm9udHMvTWFrZWZpbGUuaW46IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglHZW5lcmF0ZSBHcmVlaywgVHVya2lzaCwgSGVicmV3LCBBcmFiaWMsIEJhbHRpYyBhbmQgVGhhaSB2ZXJzaW9ucyBvZgoJTVMgU2FucyBTZXJpZi4KCgkqIHRvb2xzL3NmbnQyZm50LmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglVcGRhdGUgc2ZudDJmbnQgaGFjaywgbm93IHRoYXQgV2luZSBDb3VyaWVyIGlzIGtub3duIGFzIENvdXJpZXIuCgoJKiBkbGxzL21zaS9kaWFsb2cuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJTG9hZCByaWNoZWQyMC5kbGwgb24gZGVtYW5kLCBhbmQgdW5sb2FkIGl0IGFmdGVyIGl0J3MgdXNlZCAoYmFzZWQgb24gYQoJcGF0Y2ggYnkgUm9iIFNoZWFybWFuKS4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggYSBidWcgaW4gYSBwcmV2aW91cyBwYXRjaCBzcG90dGVkIGJ5IERpZXRlciBLb21lbmRlcmEuCgoJKiBkbGxzL21zaS9tc2kuYywgZGxscy9tc2kvbXNpLnNwZWMsIGluY2x1ZGUvbXNpLmg6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggdGhlIHN0dWIgZm9yIE1zaUNvbmZpZ3VyZUZlYXR1cmUuCgoJKiBkbGxzL3NoZG9jdncvb2xlb2JqZWN0LmMsIGRsbHMvc2hkb2N2dy9zaGRvY3Z3Lmg6CglKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJQWRkZWQgU2V0Q2xpZW50U2l0ZSBpbXBsZW1lbnRhdGlvbi4KCgkqIGRsbHMvd2ludHJ1c3Qvd2ludHJ1c3Quc3BlYywgZGxscy93aW50cnVzdC93aW50cnVzdF9tYWluLmM6CglTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCUFkZGVkIHN0dWJzIGZvciBEbGxSZWdpc3RlclNlcnZlciwgRGxsVW5yZWdpc3RlclNlcnZlciBhbmQKCVdpbnRydXN0U2V0UmVnUG9saWN5RmxhZ3MuCgoJKiBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBTdHJpbmcgU0lEIHBhcnNpbmcuCgoyMDA1LTA5LTE1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogcHJvZ3JhbXMvd2luZXRlc3QvbWFpbi5jOiBJdmFuIExlbyBQdW90aSA8aXZhbmxlb0BnbWFpbC5jb20+CglHZXQgd2luZXRlc3QgdG8gZGV0ZWN0IHdpbmRvd3Mgc2VydmVyIDIwMDMgUjIuCgoJKiBkbGxzL3VybG1vbi9zZXNzaW9uLmM6IEZpeGVkIGEgY29tcGlsZXIgd2FybmluZy4KCgkqIHRvb2xzL3dpbmVidWlsZC9idWlsZC5oLCB0b29scy93aW5lYnVpbGQvaW1wb3J0LmMsCgkgIHRvb2xzL3dpbmVidWlsZC9yZWxheS5jLCB0b29scy93aW5lYnVpbGQvc3BlYzMyLmMsCgkgIHRvb2xzL3dpbmVidWlsZC91dGlscy5jOgoJQWRkZWQgYSBjb21tb24gZnVuY3Rpb24gdG8gZGVjbGFyZSBnbG9iYWwgc3ltYm9scywgYW5kIG1ha2UgdGhlbQoJaGlkZGVuIG9uIHBsYXRmb3JtcyB0aGF0IHN1cHBvcnQgaXQuCgoJKiBmb250cy8uY3ZzaWdub3JlLCBmb250cy9NYWtlZmlsZS5pbjogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUdlbmVyYXRlIEdyZWVrLCBUdXJraXNoLCBIZWJyZXcsIEFyYWJpYyBhbmQgQmFsdGljIHZlcnNpb25zIG9mCglDb3VyaWVyLgoKCSogZGxscy91cmxtb24vTWFrZWZpbGUuaW4sIGRsbHMvdXJsbW9uL3Nlc3Npb24uYywgZGxscy91cmxtb24vdW1vbi5jOgoJSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCUFkZGVkIENvSW50ZXJuZXRHZXRTZXNzaW9uIGltcGxlbWVudGF0aW9uLgoKCSogbGlicy93aW5lL2xvYWRlci5jOgoJVXNlIHRoZSBOVCBkZXNjcmlwdG9yIGFkZHJlc3MgYXMgc3RhcnQgb2YgdGhlIGRhdGEgc2VjdGlvbiwgc2luY2UgdGhlCglCYXNlT2ZEYXRhIGZpZWxkIGlzbid0IHByZXNlbnQgaW4gV2luNjQuCgoJKiBkbGxzL21zaS9hY3Rpb24uYywgZGxscy9tc2kvYWN0aW9uLmgsIGRsbHMvbXNpL2N1c3RvbS5jLAoJICBkbGxzL21zaS9kaWFsb2cuYywgZGxscy9tc2kvZXZlbnRzLmMsIGRsbHMvbXNpL2ZpbGVzLmMsCgkgIGRsbHMvbXNpL2Zvcm1hdC5jLCBkbGxzL21zaS9oZWxwZXJzLmMsIGRsbHMvbXNpL2luc3RhbGwuYywKCSAgZGxscy9tc2kvdXBncmFkZS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJUmVuYW1lIGxvYWRfZHluYW1pY19wcm9wZXJ0eSBhbmQgcmVtb3ZlIGl0cyB1bnVzZWQgM3JkIGFyZ3VtZW50LgoKCSogZGxscy9NYWtlZGxsLnJ1bGVzLmluLCB0b29scy93aW5lYnVpbGQvaW1wb3J0LmMsCgkgIHRvb2xzL3dpbmVidWlsZC9yZXMzMi5jLCB0b29scy93aW5lYnVpbGQvc3BlYzMyLmMsCgkgIHRvb2xzL3dpbmVnY2MvTWFrZWZpbGUuaW4sIHRvb2xzL3dpbmVnY2Mvd2luZWdjYy5jOgoJTm93IHRoYXQgZXZlcnl0aGluZyBpcyBkb25lIGluIGFzc2VtYmx5IGluIHRoZSBzcGVjIGZpbGUsIGRpcmVjdGx5CglnZW5lcmF0ZSBhIC5zIGZpbGUgdG8gYnlwYXNzIGdjYyBpbmVmZmljaWVuY3kgd2l0aCBsYXJnZSBkYXRhCglzdHJ1Y3R1cmVzLgoKCSogZm9udHMvLmN2c2lnbm9yZSwgZm9udHMvTWFrZWZpbGUuaW46IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglHZW5lcmF0ZSBHcmVlaywgVHVya2lzaCwgSGVicmV3LCBBcmFiaWMsIEJhbHRpYywgVGhhaSwgSmFwYW5lc2UgYW5kCglLb3JlYW4gdmVyc2lvbnMgb2YgdGhlIFN5c3RlbSBmb250LiAgQWxsIHRoZSBub24tbGF0aW4gZ2x5cGhzIGFyZQoJc3RpbGwgYmxhbmtzLgoKCSogZGxscy9tc2kvYWN0aW9uLmMsIGRsbHMvbXNpL21zaXByaXYuaDoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVVzZSB0aGUgbmV3IG1zaV9yZWdfc2V0KiBtYWNyb3Mgd2hlcmUgcG9zc2libGUuCgoJKiBkbGxzL3gxMWRydi9kaWIuYzogRml4ZWQgZ2NjIDQuMCB3YXJuaW5ncy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjOgoJU2V0IHRoZSBwcm9wZXIgYnVpbGQgZmxhZ3MgZm9yIERhcndpbiBiYXNlZCBvbiB0aGUgQ1BVIHR5cGUgaW5zdGVhZCBvZgoJYXNzdW1pbmcgUG93ZXJQQy4KCgkqIHRvb2xzL3dpbmVidWlsZC9idWlsZC5oLCB0b29scy93aW5lYnVpbGQvcmVzMzIuYywKCSAgdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jOgoJT3V0cHV0IHRoZSByZXNvdXJjZSBkYXRhIGluIGFzc2VtYmx5IHRvby4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBpbmNsdWRlL2NvbmZpZy5oLmluOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJVHdlYWsgdGhlIHRlc3QgZm9yIGRldGVjdGluZyBsaWJ4c2x0IGFzIGl0IGRpZG4ndCB3b3JrIGNvcnJlY3RseSBvbgoJUkg4LgoKCSogcHJvZ3JhbXMvdGFza21nci9EZS5yYzogSGVubmluZyBHZXJoYXJkdCA8aGVubmluZy5nZXJoYXJkdEB3ZWIuZGU+CglVcGRhdGUgdGhlIEdlcm1hbiByZXNvdXJjZSBmaWxlLgoKCSogZGxscy9tc2kvY2xhc3Nlcy5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglDcmVhdGUgYSBtYWNybyB0byB3cml0ZSBhIHZhbHVlIHRvIGEgc3Via2V5LgoKCSogZGxscy9oaGN0cmwub2N4L2hlbHAuYzogSmFtZXMgSGF3a2lucyA8dHJ1aWtlbkBnbWFpbC5jb20+CglFbWJlZCB0aGUgYnJvd3NlciBvYmplY3QgaW4gdGhlIEhUTUwgd2luZG93LiAgU3BvdHRlZCBieSBKYWNlayBDYWJhbi4KCgkqIGRsbHMvY3J5cHQzMi9jZXJ0LmMsIGRsbHMvY3J5cHQzMi9jcnlwdDMyLnNwZWM6CglTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCUFkZGVkIHN0dWJzIGZvciBDcnlwdEluaXRPSURGdW5jdGlvblNldCBhbmQKCUNyeXB0VW5yZWdpc3RlckRlZmF1bHRPSURGdW5jdGlvbi4KCgkqIGRsbHMvYWR2YXBpMzIvcmVnaXN0cnkuYywgZGxscy9hZHZhcGkzMi9zZXJ2aWNlLmMsCgkgIGRsbHMvYWR2YXBpMzIvdGVzdHMvcmVnaXN0cnkuYzoKCVJlaW4gS2xhemVzIDx3aWpuQHdhbmFkb28ubmw+CgktIFNldCB0aGUgTGFzdEVycm9yIGluIE9wZW5TQ01hbmFnZXIgaW4gY2FzZSBvZiBlcnJvcnM7CgktIEFjY2VwdCBtYWNoaW5lIG5hbWVzIHdpdGhvdXQgYSAnXFwnIHByZWZpeCBpbiBPcGVuU0NNYW5hZ2VyIGFuZAoJICBSZWdDb25uZWN0UmVnaXN0cnkuCgktIEFkZCBhIHJlZ3Jlc3Npb24gdGVzdCBmb3IgdGhhdC4KCgkqIGRsbHMvZ2RpL2ZyZWV0eXBlLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglSZW1lbWJlciB0byByZW1vdmUgYSBjaGlsZCBmb250IGZyb20gdGhlIGNoaWxkIGZvbnQgbGlzdC4KCjIwMDUtMDktMTQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB0b29scy93aW5lYnVpbGQvYnVpbGQuaCwgdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jLAoJICB0b29scy93aW5lYnVpbGQvdXRpbHMuYzoKCU91dHB1dCBjb25zdGFudCBzdHJpbmdzIGluIGEgbW9yZSBhcHByb3ByaWF0ZSBzZWN0aW9uIHRoYW4gLnRleHQuCgoJKiBwcm9ncmFtcy90YXNrbWdyL0VuLnJjLCBwcm9ncmFtcy90YXNrbWdyL29wdG5tZW51LmMsCgkgIHByb2dyYW1zL3Rhc2ttZ3IvdGFza21nci5jLCBwcm9ncmFtcy90YXNrbWdyL3Rhc2ttZ3IuaCwKCSAgcHJvZ3JhbXMvdGFza21nci90cmF5aWNvbi5jOgoJVGhvbWFzIFdlaWRlbm11ZWxsZXIgPHdpbmUtcGF0Y2hlc0ByZWFjdHNvZnQuY29tPgoJSG9vayB1cCAiSGlkZSBvbiBNaW5pbWl6ZSIgJiBBZGQgY29udGV4dCBtZW51IHRvIHRoZSB0cmF5IGljb24uCgoJKiBkbGxzL2dkaS9mcmVldHlwZS5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJT25seSBhZGQgVGFob21hIHRvIHRoZSBTeXN0ZW0gZm9udCdzIGxpbmsgbGlzdCBpZiB3ZSBjYW4gYWN0dWFsbHkgZmluZAoJaXQuCgoJKiBkbGxzL2hoY3RybC5vY3gvd2ViYnJvd3Nlci5jOiBKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCS0gWmVybyB0aGUgV0JJbmZvIHN0cnVjdCB0byBnZXQgcmlkIG9mIGludmFsaWQgcG9pbnRlcnMuCgktIFN0b3JlIG9iamVjdCBwb2ludGVycyBpbiB0aGUgV0JJbmZvIHN0cnVjdCBhcyB0aGV5J3JlIGNyZWF0ZWQuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYywgaW5jbHVkZS9jb21tY3RybC5oOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBBZGQgc3VwcG9ydCBmb3IgbmF2aWdhdGluZyBhIHRvb2xiYXIgd2l0aCB0aGUgYXJyb3cga2V5cy4KCS0gRml4IFdyYXBUb29sYmFyIGluIHRoZSBjYXNlIG9mIG5vIHBhcmVudCB3aW5kb3cuCgktIFVzZSB0aGUgbmV3bHkgYWRkZWQgTk1UQklOSVRDVVNUT01JWkUgZm9yIHNlbmRpbmcgdGhlCgkgIFRCTl9JTklUQ1VTVE9NSVpFIHNvIHRoYXQgaXQgaXMgc2FmZSBvbiA2NC1iaXQgcGxhdGZvcm1zLgoKCSogdG9vbHMvd2luZWJ1aWxkL2J1aWxkLmgsIHRvb2xzL3dpbmVidWlsZC9pbXBvcnQuYywKCSAgdG9vbHMvd2luZWJ1aWxkL3BhcnNlci5jLCB0b29scy93aW5lYnVpbGQvc3BlYzMyLmMsCgkgIHRvb2xzL3dpbmVidWlsZC91dGlscy5jOgoJR2VuZXJhdGUgc3R1YiBmdW5jdGlvbnMgZGlyZWN0bHkgaW4gYXNzZW1ibHkuCgoJKiBzZXJ2ZXIvdGhyZWFkLmM6CglSZW1vdmUgYW4gZXhpdGluZyB0aHJlYWQgZnJvbSB0aGUgcHJvY2VzcyBvbmx5IGFmdGVyIHRocmVhZCBjbGVhbnVwIHRvCglhdm9pZCBhY2Nlc3NpbmcgZnJlZWQgd2luZG93IGNsYXNzZXMuCgoJKiBkbGxzL21zaS9jbGFzc2VzLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUNyZWF0ZSBhIG1hY3JvIGZ1bmN0aW9uIHRvIHdyaXRlIHJlZ2lzdHJ5IHZhbHVlcy4KCgkqIGRsbHMvZ2RpL2ZyZWV0eXBlLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglQZXJmb3JtIGF1dG9tYXRpYyBiaXRtYXAgZm9udCBjb25maWd1cmF0aW9uIGJhc2VkIG9uIHRoZSBjdXJyZW50Cglsb2NhbGUuCgoJKiBkbGxzL3VybG1vbi9NYWtlZmlsZS5pbiwgZGxscy91cmxtb24vZnRwLmMsIGRsbHMvdXJsbW9uL2h0dHAuYywKCSAgZGxscy91cmxtb24vdXJsbW9uX21haW4uYywgZGxscy91cmxtb24vdXJsbW9uX21haW4uaDoKCUphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglBZGRlZCBodHRwIGFuZCBmdHAgcHJvdG9jb2wgc3R1YiBpbXBsZW1lbnRhdGlvbi4KCgkqIHByb2dyYW1zL3Rhc2ttZ3IvdGFza21nci5jOiBGaWxpcCBOYXZhcmEgPHhuYXZhcmFAdm9sbnkuY3o+CglEb24ndCBraWxsIG5vbi1leGlzdGluZyB0aW1lcnMuIFVzZSBFbmREaWFsb2cgdG8gY2xvc2UgdGhlIGRpYWxvZy4KCgkqIHByb2dyYW1zL3Rhc2ttZ3IvcHJvY3BhZ2UuYzogTWljaGFlbCBGcml0c2NoZXIKCUhvb2sgdXAgIkVuZCBQcm9jZXNzIiBidXR0b24uCgoJKiBkbGxzL3gxMWRydi94MTFkcnYuaDoKCUF2b2lkIGEgcmVkZWZpbml0aW9uIHdhcm5pbmcgb24gNjQtYml0IHBsYXRmb3Jtcy4KCgkqIGRsbHMvc2V0dXBhcGkvaW5zdGFsbC5jLCB0b29scy93aW5lLmluZjoKCUdlIHZhbiBHZWxkb3JwIDxndmdAcmVhY3Rvcy5jb20+CglCYXNlIG9mIFJFR19EV09SRCBlbnRyaWVzIG11c3QgYmUgYXV0by1kZXRlY3RlZC4KCgkqIGRsbHMvbXNpL21zaXByaXYuaDogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlIHNvbWUgdW51c2VkIHZhbHVlcyBpbiB0aGUgb2JqZWN0IGhlYWRlci4KCgkqIGRsbHMvZ2RpL2ZyZWV0eXBlLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglDb3BlIHdpdGggT3BlbkZvbnRGaWxlIGZhaWxpbmcuCgoJKiBjb25maWd1cmUuYWM6IFZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCVJlcXVpcmUgYXV0b2NvbmYgMi41M2IgYXMgQUNfUFJPR19FR1JFUCBpcyBvbmx5IGRlZmluZWQgc2luY2UgdGhhdAoJdmVyc2lvbi4KCgkqIGRsbHMvbnRkbGwvbnRkbGxfbWlzYy5oLCBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmMsCgkgIGRsbHMvbnRkbGwvc2lnbmFsX3Bvd2VycGMuYywgZGxscy9udGRsbC9zaWduYWxfc3BhcmMuYywKCSAgZGxscy9udGRsbC90aHJlYWQuYywgZGxscy9udGRsbC92aXJ0dWFsLmM6CglTdXBwb3J0IGFyYml0cmFyeSBzaXplcyBmb3IgdGhlIHRocmVhZCBzaWduYWwgc3RhY2ssIGFuZCBzZXQgdGhlCglkZWZhdWx0IHNpemUgZnJvbSB0aGUgTUlOU0lHU1RLU1ogY29uc3RhbnQuCgoJKiBkbGxzL3F1YXJ0ei9tZW1hbGxvY2F0b3IuYzogR2V0IHJpZCBvZiBhbm90aGVyIGxvbmcgbG9uZyBjb25zdGFudC4KCgkqIGRsbHMvdXJsbW9uL2ZpbGUuYywgZGxscy91cmxtb24vdGVzdHMvcHJvdG9jb2wuYzoKCUphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglBZGRlZCBNSU1FIHR5cGUgY2hlY2tpbmcgdG8gRmlsZVByb3RvY29sOjpTdGFydC4KCgkqIHByb2dyYW1zL3Rhc2ttZ3IvYXBwbHBhZ2UuYywgcHJvZ3JhbXMvdGFza21nci9wZXJmcGFnZS5jLAoJICBwcm9ncmFtcy90YXNrbWdyL3Byb2NwYWdlLmM6CglUaG9tYXMgV2VpZGVubXVlbGxlciA8d2luZS1wYXRjaGVzQHJlYWN0c29mdC5jb20+CglVc2UgYW5vbnltb3VzIGV2ZW50cyBmb3Igc3luY2hyb25pemF0aW9uLgoKCSogZGxscy9tc2kvZGF0YWJhc2UuYywgZGxscy9tc2kvbXNpcHJpdi5oLCBkbGxzL21zaS90YWJsZS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQ29udmVydCB0aGUgbGlzdCBvZiB0YWJsZXMgdG8gYSBzdGFuZGFyZCBsaXN0LgoKCSogZGxscy9jcnlwdDMyL3Rlc3RzL2VuY29kZS5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggZ2NjIDQuMCB3YXJuaW5ncy4KCgkqIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL2NvbXBvYmpfcHJpdmF0ZS5oLCBkbGxzL29sZTMyL3JwYy5jOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJQWRkIGV4Y2VwdGlvbiBoYW5kbGluZyBmb3Igc3R1YnMuCgoJKiBpbmNsdWRlL3dpbmUvcnBjZmMuaDogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJRGVmaW5lIFJQQ19GQ19SQU5HRS4KCgkqIGRsbHMvbXNodG1sL3Byb3RvY29sLmMsIGRsbHMvbXNodG1sL3Rlc3RzL3Byb3RvY29sLmM6CglKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJQWRkZWQgTUlNRSB0eXBlIGNoZWNraW5nIHRvIFJlc1Byb3RvY29sOjpTdGFydC4KCgkqIGRsbHMvc2V0dXBhcGkvZGlza3NwYWNlLmM6IEZpbGlwIE5hdmFyYSA8eG5hdmFyYUB2b2xueS5jej4KCUZpeCBhIGNvdXBsZSBvZiBwcm90b3R5cGVzLgoKCSogcHJvZ3JhbXMvdGFza21nci9hYm91dC5jLCBwcm9ncmFtcy90YXNrbWdyL2FmZmluaXR5LmMsCgkgIHByb2dyYW1zL3Rhc2ttZ3IvYXBwbHBhZ2UuYywgcHJvZ3JhbXMvdGFza21nci9jb2x1bW4uYywKCSAgcHJvZ3JhbXMvdGFza21nci9kYmdjaG5sLmMsIHByb2dyYW1zL3Rhc2ttZ3IvZ3JhcGguYywKCSAgcHJvZ3JhbXMvdGFza21nci9ncmFwaGN0bC5jLCBwcm9ncmFtcy90YXNrbWdyL2dyYXBoY3RsLmgsCgkgIHByb2dyYW1zL3Rhc2ttZ3IvcGVyZnBhZ2UuYywgcHJvZ3JhbXMvdGFza21nci9wcm9jbGlzdC5jLAoJICBwcm9ncmFtcy90YXNrbWdyL3Byb2NwYWdlLmMsIHByb2dyYW1zL3Rhc2ttZ3IvdGFza21nci5jLAoJICBwcm9ncmFtcy90YXNrbWdyL3Rhc2ttZ3IuaDoKCVRob21hcyBXZWlkZW5tdWVsbGVyIDx3aW5lLXBhdGNoZXNAcmVhY3Rzb2Z0LmNvbT4KCUZpbGlwIE5hdmFyYSA8eG5hdmFyYUB2b2xueS5jej4KCURMR1BST0NzIHJldHVybiBJTlRfUFRSLgoKMjAwNS0wOS0xMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvd2luYmFzZS5oOiBJbXBsZW1lbnRlZCBJbnRlcmxvY2tlZENvbXBhcmVFeGNoYW5nZVBvaW50ZXIgYW5kCglJbnRlcmxvY2tlZEV4Y2hhbmdlUG9pbnRlciBmb3IgeDg2LTY0LgoKCSogZGxscy9nZGkvZ2Rpb2JqLmMsIGRsbHMva2VybmVsL2xvY2FsMTYuYywgZGxscy9rZXJuZWwvcHJvY2Vzcy5jLAoJICBkbGxzL2tlcm5lbC90ZXN0cy9tYWlsc2xvdC5jLCBkbGxzL2tlcm5lbC90ZXN0cy90aHJlYWQuYywKCSAgZGxscy9udGRsbC9ydGxiaXRtYXAuYywgZGxscy9vbGVhdXQzMi90ZXN0cy92YXJ0ZXN0LmMsCgkgIGRsbHMvc2hsd2FwaS9jbGlzdC5jLCBkbGxzL3NobHdhcGkvdGVzdHMvY2xpc3QuYywKCSAgZGxscy92ZXJzaW9uL2luc3RhbGwuYywgZGxscy92ZXJzaW9uL3Rlc3RzL2luZm8uYywKCSAgZGxscy93aW5pbmV0L2h0dHAuYywgaW5jbHVkZS91cmxtb24uaWRsLCBpbmNsdWRlL3dpbmNyeXB0LmgsCgkgIGluY2x1ZGUvd2luZXJyb3IuaDoKCVJlbW92ZSB0aGUgJ0wnIHN1ZmZpeCBvbiBhIG51bWJlciBvZiBjb25zdGFudHMgdG8gYXZvaWQgY29tcGFyaXNvbgoJZXJyb3JzIG9uIDY0LWJpdCBwbGF0Zm9ybXMuCgoJKiBkbGxzL3VzZXIvbWVzc2FnZS5jLCBkbGxzL3VzZXIvdGVzdHMvbXNnLmMsIHNlcnZlci9xdWV1ZS5jOgoJVGltZW91dCAwIG1lYW5zIGluZmluaXRlIHdhaXQgZm9yIFNlbmRNZXNzYWdlVGltZW91dC4KCVJlbW92ZSB0aGUgbWVzc2FnZSBmcm9tIHRoZSByZWNlaXZlciBxdWV1ZSBpZiBpdCB0aW1lcyBvdXQgYmVmb3JlCgliZWluZyByZWNlaXZlZC4KCgkqIHByb2dyYW1zL3Rhc2ttZ3IvYXBwbHBhZ2UuYywgcHJvZ3JhbXMvdGFza21nci9ncmFwaC5jLAoJICBwcm9ncmFtcy90YXNrbWdyL2dyYXBoY3RsLmMsIHByb2dyYW1zL3Rhc2ttZ3IvZ3JhcGhjdGwuaCwKCSAgcHJvZ3JhbXMvdGFza21nci9wZXJmcGFnZS5jLCBwcm9ncmFtcy90YXNrbWdyL3Byb2NsaXN0LmMsCgkgIHByb2dyYW1zL3Rhc2ttZ3IvcHJvY3BhZ2UuYywgcHJvZ3JhbXMvdGFza21nci90YXNrbWdyLmg6CglSaWNoYXJkIENvaGVuIDxyaWNoYXJkQGRhaWpvYnUuY28udWs+CglKaW0gVGFib3IsIFRob21hcyBXZWlkZW5tdWVsbGVyIDx3aW5lLXBhdGNoZXNAcmVhY3Rzb2Z0LmNvbT4KCTY0IGJpdCBmaXhlcyAtLSBTdG9yZSBXaW5kb3cgcHJvY3MgYXMgV05EUFJPQywgY2FzdCB0byBEV09SRF9QVFIgaW4KCVNlbmRNZXNzYWdlVGltZW91dC4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJRml4ZWQgaW5jb25zaXN0ZW5jeSBpbiBMSVNUVklFV19EVU1QIG1hY3JvLgoKCSogZGxscy91cmxtb24vaW50ZXJuZXQuYzogSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCUFkZGVkIFBBUlNFX1NFQ1VSSVRZX0RPTUFJTiBhY3Rpb24gaW1wbGVtZW50YXRpb24uCgoJKiBkbGxzL21zaS9tc2lwcml2LmgsIHByb2dyYW1zL3JwY3NzL3JwY3NzX21haW4uYywKCSAgcHJvZ3JhbXMvdGFza21nci9wcm9jcGFnZS5jOgoJR2V0IHJpZCBvZiBhIGNvdXBsZSBvZiBub24tcG9ydGFibGUgbG9uZyBsb25nIGNvbnN0YW50cy4KCgkqIGRsbHMvbXNpL2luc3RhbGwuYywgZGxscy9tc2kvdGVzdHMvcGFja2FnZS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IHRoZSBoYW5kbGluZyBvZiBNc2lHZXRUYXJnZXRQYXRoIGFyZ3MgKHdpdGggdGVzdCBjYXNlKS4KCgkqIGRsbHMvbXNpL2RpYWxvZy5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglNYWtlIHN1cmUgdG8gcmVsZWFzZSB0aGUgcGFja2FnZSB3ZSBncmFiYmVkIG9uIHRoZSBlcnJvciBwYXRoLgoKCSogZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jOiBHZSB2YW4gR2VsZG9ycCA8Z3ZnQHJlYWN0b3MuY29tPgoJU2F2ZSBhIGZldyBtZWdhYnl0ZXMgb2YgbWVtb3J5IGJ5IGxvYWRpbmcgdGhlIGRlZmF1bHQgaWNvbiBvbmx5IG9uY2UKCWludG8gdGhlIGltYWdlIGxpc3RzLgoKCSogaW5jbHVkZS93aW5lL2xpYnJhcnkuaCwgaW5jbHVkZS93aW5lL3B0aHJlYWQuaCwKCSAgbGlicy91bmljb2RlL2NwdGFibGUuYywgbGlicy93aW5lL2xkdC5jLCBsb2FkZXIva3RocmVhZC5jLAoJICBsb2FkZXIvcHRocmVhZC5jOgoJQXZvaWQgc29tZSB3YXJuaW5ncyBvbiA2NC1iaXQgcGxhdGZvcm1zLgoKCSogZGxscy9tc2kvaW5zdGFsbC5jLCBkbGxzL21zaS90ZXN0cy9wYWNrYWdlLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggdGhlIGhhbmRsaW5nIG9mIE1zaURvQWN0aW9uIGFyZ3MgKHdpdGggdGVzdCBjYXNlKS4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jLCBkbGxzL21zaS9hY3Rpb24uaCwgZGxscy9tc2kvaGVscGVycy5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRWxpbWluYXRlIGZpeGVkIGxlbmd0aCBidWZmZXJzIGZyb20gdGhlIE1TSUZFQVRVUkUgc3RydWN0dXJlLgoKCSogZGxscy9vbGVhdXQzMi9vbGVmb250LmMsIGRsbHMvb2xlYXV0MzIvdGVzdHMvb2xlZm9udC5jOgoJV2FsdCBPZ2J1cm4gPHJldWJlbkB1Z2NzLmNhbHRlY2guZWR1PgoJR2V0IElGb250RGlzcCB0eXBlIGluZm9ybWF0aW9uIGZyb20gc3Rkb2xlMi50bGIsIGluc3RlYWQgb2YgSURpc3BhdGNoCglpbmZvcm1hdGlvbiBmcm9tIHN0ZG9sZTMyLnRsYi4KCgkqIGRsbHMvY3J5cHQzMi90ZXN0cy9lbmNvZGUuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IGdjYyA0LjAgd2FybmluZ3MuCgoJKiBkbGxzL21zaS9kaWFsb2cuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJU2tpcCBkYXNoIGNoYXJhY3RlcnMgaW4gdGhlIFBJRE1hc2sgZm9yIGEgTWFza2VkRWRpdCBjb250cm9sLgoKCSogZGxscy9oaGN0cmwub2N4L01ha2VmaWxlLmluLCBkbGxzL2hoY3RybC5vY3gvaGVscC5jLAoJICBkbGxzL2hoY3RybC5vY3gvd2ViYnJvd3Nlci5jLCBkbGxzL2hoY3RybC5vY3gvd2ViYnJvd3Nlci5oOgoJSmFtZXMgSGF3a2lucyA8dHJ1aWtlbkBnbWFpbC5jb20+CgktIEFkZCB0aGUgV2ViQnJvd3NlciBpbXBsZW1lbnRhdGlvbi4KCS0gTG9hZCB0aGUgZGVmYXVsdCBVcmwgaW4gdGhlIEhUTUwgUGFuZS4KCgkqIGRsbHMvd2luc3Bvb2wvaW5mby5jOiBEZXRsZWYgUmlla2VuYmVyZyA8d2luZS5kZXZAd2ViLmRlPgoJTGV0IEVudW1QcmludGVyRHJpdmVycyByZXR1cm4gdGhlIG51bWJlciBvZiBkcml2ZXJzLgoKMjAwNS0wOS0xMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jLCBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jLAoJICBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYywgZGxscy9jb21jdGwzMi90cmVldmlldy5jLAoJICBkbGxzL2RiZ2hlbHAvbWluaWR1bXAuYywgZGxscy9kaW5wdXQvZWZmZWN0X2xpbnV4aW5wdXQuYywKCSAgZGxscy9kc291bmQvcHJvcHNldC5jLCBkbGxzL2dkaS9mcmVldHlwZS5jLAoJICBkbGxzL29sZWF1dDMyL3Rlc3RzL3ZhcnRlc3QuYywgZGxscy9vbGVhdXQzMi90ZXN0cy92YXJ0eXBlLmMsCgkgIGRsbHMvcmljaGVkMjAvcmVhZGVyLmMsIGRsbHMvcmljaGVkMjAvc3R5bGUuYywgZGxscy9zZWN1cjMyL3RodW5rcy5jLAoJICBkbGxzL3NldHVwYXBpL3BhcnNlci5jLCBkbGxzL3NobHdhcGkvcmVnLmMsIGRsbHMvc2hsd2FwaS9zdHJpbmcuYywKCSAgZGxscy93aW5tbS9tZXNzYWdlMTYuYywgZGxscy93aW5tbS93aW5tbS5jLCBkbGxzL3dpbnNvY2svc29ja2V0LmMsCgkgIGRsbHMveDExZHJ2L3hpbS5jLCBwcm9ncmFtcy93aW5lbWVudWJ1aWxkZXIvd2luZW1lbnVidWlsZGVyLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVRoZSBsYXN0IGFyZ3VtZW50IHRvIE11bHRpQnl0ZVRvV2lkZUNoYXIgaXMgd2lkZSBjaGFyYWN0ZXIgY291bnQgYW5kCglub3QgdGhlIGJ1ZmZlciBzaXplIGluIGJ5dGVzLiBGaXhlZCBhbGwgcGxhY2VzIHdoZXJlIGl0IHdhcyB3cm9uZy4KCgkqIGRsbHMvdXJsbW9uL3VybG1vbi5pbmY6IEphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglSZWdpc3RlciBab25lTWFwLgoKCSogZGxscy9rZXJuZWwvdGhyZWFkLmMsIGRsbHMvbnRkbGwvdGhyZWFkLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUltcGxlbWVudGVkIGtlcm5lbDMyLkdldFRocmVhZFRpbWVzIG9uIHRvcCBvZiBudGRsbCdzIGVxdWl2YWxlbnQKCWZ1bmN0aW9uLgoKCSogZGxscy9jb21jdGwzMi90ZXN0cy91cGRvd24uYywgZGxscy9rZXJuZWwvbG9jYWxlLmMsCgkgIGRsbHMva2VybmVsL21vZHVsZS5jLCBkbGxzL2tlcm5lbC9yZXNvdXJjZTE2LmMsCgkgIGRsbHMva2VybmVsL3NlbGVjdG9yLmMsIGRsbHMvdXNlci9kaWFsb2cuYywgZGxscy91c2VyL21lbnUuYywKCSAgZGxscy91c2VyL21lc3NhZ2UuYywgZGxscy91c2VyL3dpbnByb2MuYywgaW5jbHVkZS93aW4uaCwKCSAgaW5jbHVkZS93aW5udC5oOgoJRml4ZWQgYSBmZXcgbW9yZSBwb2ludGVyIHRvIGludGVnZXIgdHlwZWNhc3QgaXNzdWVzIGZvciA2NC1iaXQKCXBsYXRmb3Jtcy4KCgkqIGRsbHMvcmljaGVkMjAvZWRpdG9yLmMsIGRsbHMvcmljaGVkMjAvZWRpdHN0ci5oLAoJICBkbGxzL3JpY2hlZDIwL3dyaXRlci5jOgoJRml4ZWQgZ2NjIDQuMCB3YXJuaW5ncy4KCgkqIGRsbHMvc2hkb2N2dy9zaGRvY3Z3LmgsIGRsbHMvc2hkb2N2dy93ZWJicm93c2VyLmM6CglKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJQWRkZWQgSVdlYkJyb3dzZXIyIHN0dWIgaW1wbGVtZW50YXRpb24uCgoJKiBkbGxzL29sZTMyL3Rlc3RzL21hcnNoYWwuYywgZGxscy91c2VyL21lc3NhZ2UuYywKCSAgZGxscy91c2VyL3VzZXJfbWFpbi5jOgoJU2VuZE1lc3NhZ2VUaW1lb3V0IHRha2VzIGEgRFdPUkRfUFRSIG5vdCBhIERXT1JELgoKCSogdG9vbHMvd2luZWdjYy91dGlscy5jOgoJUHJvcGVybHkgaGFuZGxlIHRoZSBjYXNlIHdoZXJlIHZzbnByaW50ZiByZXR1cm5zIC0xLgoKCSogZGxscy9hdmlmaWwzMi9hY21zdHJlYW0uYzogRml4ZWQgZ2NjIDQuMCB3YXJuaW5ncy4KCgkqIGRsbHMvdXNlci9jb250cm9scy5oLCBkbGxzL3VzZXIvbm9uY2xpZW50LmM6CglNYWtlIHRoZSBub24tY2xpZW50IG1lc3NhZ2UgaGFuZGxpbmcgZnVuY3Rpb25zIHJldHVybiBhbiBMUkVTVUxULgoKCSogZGxscy9hdGwvcmVnaXN0cmFyLmMsIGRsbHMva2VybmVsL2xvY2FsZS5jLCBkbGxzL2tlcm5lbC9yZXNvdXJjZTE2LmMsCgkgIGRsbHMvb2xlYXV0MzIvdmFydHlwZS5jLCBkbGxzL3VzZXIvZGlhbG9nLmMsIGRsbHMvdXNlci9kaWFsb2cxNi5jOgoJVXNlIE1BS0VJTlRSRVNPVVJDRSBpbnN0ZWFkIG9mIGNhc3RzIHdoZXJlIGFwcHJvcHJpYXRlLgoKCSogZGxscy9hdmlmaWwzMi9hdmlmaWxlLmM6CglBbGV4IFZpbGxhY+1zIExhc3NvIDxhX3ZpbGxhY2lzQHBhbG9zYW50by5jb20+CglJbml0aWFsaXplIHN0cnVjdHMgZm9yIG1taW9EZXNjZW5kIGFuZCBGaW5kQ2h1bmtBbmRLZWVwRXh0cmFzIC0gZml4ZXMKCUFWSSBmaWxlIHJlY29nbml0aW9uLgoKCSogdG9vbHMvd2lkbC9oZWFkZXIuYywgdG9vbHMvd2lkbC9oZWFkZXIuaCwgdG9vbHMvd2lkbC9wYXJzZXIubCwKCSAgdG9vbHMvd2lkbC9wYXJzZXIueSwgdG9vbHMvd2lkbC93aWRsLmMsIHRvb2xzL3dpZGwvd2lkbHR5cGVzLmg6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIE91dHB1dCBwcm90b3R5cGVzIGZvciB1c2VyIG1hcnNoYWwgZnVuY3Rpb25zIGF0IHRoZSBlbmQgb2YgdGhlCgkgIGhlYWRlciBhbmQgYnkgdXNlLgoJLSBBZGQgc3VwcG9ydCBmb3IgcmFuZ2UgYW5kIHB0ciBhdHRyaWJ1dGVzIGFuZCBmb3IgdGhlICJzbWFsbCIgYmFzZQoJICB0eXBlLgoKCSogZGxscy9tc2h0bWwvcHJvdG9jb2wuYzogSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCUVuY29kZSBVUkwgaW4gUmVzUHJvdG9jb2w6OlN0YXJ0LgoKCSogZGxscy91cmxtb24vdGVzdHMvbWlzYy5jLCBkbGxzL3VybG1vbi91bW9uLmMsCgkgIGRsbHMvdXJsbW9uL3VybG1vbl9tYWluLmM6CglKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJUmV3cm90ZSBGaW5kTWltZUZyb21EYXRhIHRvIHBhc3MgdGVzdHMuCgoJKiBkbGxzL2RkcmF3L3N1cmZhY2Vfd25kcHJvYy5jOgoJVXNlIEdldC9TZXRXaW5kb3dMb25nUHRyIHRvIGFjY2VzcyBwb2ludGVycyBpbiB0aGUgd2luZG93IGV4dHJhCglieXRlcy4KCgkqIGRsbHMvdXNlci9saXN0Ym94LmM6CglBdm9pZCB0cnVuY2F0aW5nIHRoZSBpdGVtIGRhdGEgdG8gMzIgYml0cyBpbiBMQl9TRVRJVEVNREFUQS4KCgkqIGRsbHMva2VybmVsL3Byb2Nlc3MuYzoKCVBhcmFtZXRlcnMgdG8gdmlydHVhbCBtZW1vcnkgZnVuY3Rpb25zIG5lZWQgdG8gYmUgU0laRV9ULgoKCSogZGxscy9rZXJuZWwvbG9jYWxlLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglzdHJjcHluQXRvVyB0YWtlcyBudW1iZXIgb2YgY2hhcmFjdGVycywgbm90IGJ5dGVzLgoKCSogZGxscy9hdmljYXAzMi9hdmljYXAzMl9tYWluLmM6IEZpeGVkIGdjYyA0LjAgd2FybmluZ3MuCgoJKiBpbmNsdWRlL3dpbmdkaS5oOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRVhUTE9HUEVOLmVscEhhdGNoIGNhbiBjb250YWluIGEgaGFuZGxlIGFzIHdlbGwuCgoJKiBkbGxzL2NyeXB0MzIvdGVzdHMvZW5jb2RlLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBnY2MgNC4wIHdhcm5pbmdzLgoKCSogZGxscy9tc2kvYWN0aW9uLmgsIGRsbHMvbXNpL2NsYXNzZXMuYywgZGxscy9tc2kvaGVscGVycy5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRWxpbWluYXRlIHlldCBtb3JlIGZpeGVkIGxlbmd0aCBidWZmZXJzLgoKCSogZGxscy9hZHZhcGkzMi9yZWdpc3RyeS5jLCBkbGxzL2F2aWZpbDMyL2dldGZyYW1lLmMsCgkgIGRsbHMvZGJnaGVscC9jb2ZmLmMsIGRsbHMvZHNvdW5kL2NhcHR1cmUuYywgZGxscy9kc291bmQvZHNvdW5kLmMsCgkgIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmMsIGRsbHMvZHNvdW5kL3ByaW1hcnkuYywKCSAgZGxscy9kc291bmQvcHJvcHNldC5jLCBkbGxzL2tlcm5lbC9kb3NtZW0uYywKCSAgZGxscy9rZXJuZWwva2VybmVsX3ByaXZhdGUuaCwgZGxscy9tc2FjbS9mb3JtYXQuYywKCSAgZGxscy9tc2FjbS9zdHJlYW0uYywgZGxscy9tc3ZjcnQvY3BwZXhjZXB0LmMsIGRsbHMvbXN2Y3J0L2xvY2FsZS5jLAoJICBkbGxzL250ZGxsL2RpcmVjdG9yeS5jLCBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jLCBkbGxzL250ZGxsL3NlYy5jLAoJICBkbGxzL250ZGxsL3ZpcnR1YWwuYywgZGxscy9vcGVuZ2wzMi93Z2wuYywgZGxscy9zZXR1cGFwaS9xdWV1ZS5jLAoJICBkbGxzL3VzZXIvY2FyZXQuYywgZGxscy91c2VyL2V4dGljb24uYywgZGxscy91c2VyL3NweS5jLAoJICBkbGxzL3ZlcnNpb24vaW5mby5jLCBkbGxzL3gxMWRydi9ldmVudC5jLCBkbGxzL3gxMWRydi9rZXlib2FyZC5jLAoJICBpbmNsdWRlL3dpbmRvd3N4LmgsIHRvb2xzL3dpbmVidWlsZC9yZXMzMi5jLCB0b29scy93aW5lZHVtcC9kZWJ1Zy5jLAoJICB0b29scy93cmMvbmV3c3RydWMuYzoKCUZpeGVkIGEgbnVtYmVyIG9mIHBvaW50ZXIgdG8gaW50ZWdlciBjb252ZXJzaW9ucyB0aGF0IHdvdWxkbid0IHdvcmsKCXJpZ2h0IG9uIGEgNjQtYml0IHBsYXRmb3JtLgoKCSogZGxscy9tc2kvbXNpcXVlcnkuYzogRml4ZWQgbWVtb3J5IGxlYWsgaW50cm9kdWNlZCBpbiBwcmV2aW91cyBjaGFuZ2UuCgoJKiBkbGxzL2RkcmF3L2RkcmF3X21haW4uYywgZGxscy9kZHJhdy9zdXJmYWNlX21haW4uYywKCSAgZGxscy9kc291bmQvY2FwdHVyZS5jLCBkbGxzL2Rzb3VuZC9kc291bmQuYywgZGxscy9rZXJuZWwvaW5zdHIuYywKCSAgZGxscy9rZXJuZWwvbG9jYWwxNi5jLCBkbGxzL2tlcm5lbC9uZV9tb2R1bGUuYywKCSAgZGxscy9rZXJuZWwvcmVzb3VyY2UxNi5jLCBkbGxzL2tlcm5lbC90YXNrLmMsIGRsbHMva2VybmVsL3RodW5rLmMsCgkgIGRsbHMvbXNhY20vZHJpdmVyLmMsIGRsbHMvbXNhY20vbXNhZHAzMi9tc2FkcDMyLmMsCgkgIGRsbHMvbXNhY20vbXNnNzExL21zZzcxMS5jLCBkbGxzL21zYWNtL3BjbWNvbnZlcnRlci5jLAoJICBkbGxzL21zYWNtL3Rlc3RzL21zYWNtLmMsIGRsbHMvcXVhcnR6L2ZpbHRlcmdyYXBoLmMsCgkgIGRsbHMvdXNlci9kcml2ZXIxNi5jLCBkbGxzL3VzZXIvbWVzc2FnZS5jLCBkbGxzL3VzZXIvcmVzb3VyY2UuYywKCSAgZGxscy92ZXJzaW9uL3Jlc291cmNlLmMsIGRsbHMvdm1tLnZ4ZC92bW0uYywKCSAgZGxscy93aW5hc3BpL3dpbmFzcGkzMi5jLCBkbGxzL3dpbmVkM2Qvc3dhcGNoYWluLmMsCgkgIGRsbHMvd2luaW5ldC91dGlsaXR5LmMsIGRsbHMvd2lubW0vZHJpdmVyLmMsCgkgIGRsbHMvd2lubW0vd2luZWFsc2EvYXVkaW8uYywgZGxscy93aW5zb2NrL3NvY2tldC5jLAoJICBkbGxzL3dpbnRhYjMyL2NvbnRleHQuYzoKCUZpeGVkIHNvbWUgbW9yZSB0cmFjZXMgdG8gdXNlIHRoZSByaWdodCBwcmludGYgZm9ybWF0IGFuZCBhdm9pZAoJdHlwZWNhc3RzLgoKCSogZGxscy91c2VyL2J1dHRvbi5jLCBkbGxzL3VzZXIvY29tYm8uYywgZGxscy91c2VyL2VkaXQuYywKCSAgZGxscy91c2VyL2xpc3Rib3guYywgZGxscy91c2VyL21lbnUuYzoKCVVzZSBHZXQvU2V0V2luZG93TG9uZ1B0ciB3aGVuIGFjY2Vzc2luZyBwb2ludGVycyBpbiB0aGUgd2luZG93IGV4dHJhCglieXRlcy4KCgkqIGRsbHMvc2hlbGwzMi9jcGFuZWxmb2xkZXIuYywgZGxscy9zaGVsbDMyL3NobGV4ZWMuYywKCSAgZGxscy9zaGVsbDMyL3Rlc3RzL3NobGV4ZWMuYzoKCUdlIHZhbiBHZWxkb3JwIDxndmdAcmVhY3Rvcy5jb20+CglGaXggZXhlY3V0aW9uIG9mIENvbnRyb2wgUGFuZWwgaXRlbXMuCgoJKiBpbmNsdWRlL3dpbnVzZXIuaDogSXZhbiBMZW8gUHVvdGkgPGl2YW5sZW9AZ21haWwuY29tPgoJQWRkZWQgYSBtaXNzaW5nIGRlZmluZS4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jLCBkbGxzL21zaS9hY3Rpb24uaCwgZGxscy9tc2kvaGVscGVycy5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IG1vcmUgZml4ZWQgbGVuZ3RoIGJ1ZmZlcnMuCgoJKiBkbGxzL3VzZXIvdGVzdHMvY2xhc3MuYzoKCVVzZSBHZXQvU2V0Q2xhc3NMb25nUHRyIHRvIGFjY2VzcyB0aGUgbW9kdWxlIGhhbmRsZS4KCgkqIGRsbHMvdXNlci9saXN0Ym94LmM6IFRoZSBpdGVtIHVzZXIgZGF0YSBoYXMgdG8gYmUgYSBVTE9OR19QVFIuCgoJKiBsaWJzL3dpbmUvbG9hZGVyLmM6CglPbmx5IGFkZCB0aGUgZGVmYXVsdCBkbGxkaXIgdG8gdGhlIHNlYXJjaCBwYXRoIGlmIHRoYXQncyB3aGVyZSBudGRsbAoJaXMgZm91bmQuCgoJKiBkbGxzL2dkaS9icnVzaC5jLCBkbGxzL2dkaS9lbmhtZXRhZmlsZS5jLAoJICBkbGxzL2dkaS9lbmhtZmRydi9vYmplY3RzLmMsIGRsbHMvZ2RpL3Rlc3RzL21ldGFmaWxlLmMsCgkgIGluY2x1ZGUvd2luZ2RpLmg6CglMT0dCUlVTSC5sYkhhdGNoIG11c3QgYmUgYSBVTE9OR19QVFIgc2luY2UgaXQgY2FuIGNvbnRhaW4gYSBoYW5kbGUuCgoJKiBkbGxzL21zaS9tc2lxdWVyeS5jOiBBdm9pZCBub24tcG9ydGFibGUgdmFfbGlzdCBtYW5pcHVsYXRpb25zLgoKCSogZGxscy94MTFkcnYveHJlbmRlci5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJVXNlIHRoZSBnYXNwIHRhYmxlIHRvIGNoZWNrIHdoZXRoZXIgd2Ugc2hvdWxkIHRyaWdnZXIgYW50aWFsaWFzaW5nLgoKCSogZGxscy91cmxtb24vZmlsZS5jOiBKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJRW5jb2RlIFVSTCBpbiBmaWxlIHByb3RvY29sLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMi5oLCBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmMsCgkgIGRsbHMvY29tY3RsMzIvdGhlbWluZy5jOgoJRnJhbmsgUmljaHRlciA8ZnJhbmsucmljaHRlckBnbWFpbC5jb20+CglVbnJlZ2lzdGVyIHRoZW1pbmcgc3ViY2xhc3NlcyBhdCBjb21jdGwzMiBzaHV0ZG93bjsgc2hvdWxkIGZpeAoJcmVwb3J0ZWQgcmUtcmVnaXN0cmF0aW9uIGVycm9ycy4KCgkqIGRsbHMvdXJsbW9uL3Rlc3RzL3Byb3RvY29sLmM6IEphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglGaXggcHJvdG9jb2wgdGVzdC4KCgkqIGRsbHMvaGhjdHJsLm9jeC9GaS5yYywgZGxscy9oaGN0cmwub2N4L2hoY3RybC5yYywKCSAgZGxscy9zZXJpYWx1aS9GaS5yYywgZGxscy9zZXJpYWx1aS9zZXJpYWx1aV9yYy5yYywKCSAgZGxscy9zaGRvY3Z3L0ZpLnJjLCBkbGxzL3NoZG9jdncvc2hkb2N2dy5yYywgZGxscy93aW5zcG9vbC9GaS5yYywKCSAgZGxscy93aW5zcG9vbC93aW5zcG9vbC5yYywgcHJvZ3JhbXMvd2luZW1pbmUvRmkucmMsCgkgIHByb2dyYW1zL3dpbmVtaW5lL3JzcmMucmM6CglLaW1tbyBNeWxseXZpcnRhIDxraW1tby5teWxseXZpcnRhQGdtYWlsLmNvbT4KCUFkZGVkIEZpbm5pc2ggcmVzb3VyY2VzLgoKCSogaW5jbHVkZS9leGRpc3AuaWRsOiBKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJQWRkZWQgbWlzc2luZyBhdHRyaWJ1dGVzLgoKCSogaW5jbHVkZS9leGRpc3BpZC5oOiBKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJQWRkZWQgbW9yZSBkZWZpbml0aW9ucy4KCgkqIGRsbHMvbXNpL2hlbHBlcnMuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJTWFrZSBzdXJlIG5vdCB0byBhY2Nlc3MgaW52YWxpZCBjb21wb25lbnRzIG9yIGZlYXR1cmVzLgoKCSogZGxscy91cmxtb24vTWFrZWZpbGUuaW46IEphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglBZGRlZCB1cmxtb24uaW5mIGFzIGRlcGVuZGVuY3kgb2YgcnNyYy5yZXMuCgoJKiBpbmNsdWRlL3NobG9iai5oOgoJRml4ZWQgdGhlIGJpbmFyeSBsYXlvdXQgZ2NjIGhhY2tzIHRvIGRvIHRoZSByaWdodCB0aGluZyBmb3IgZ2NjIDQuMC4KCgkqIGRsbHMvd2luZWRvcy9pbnQyMS5jLCBkbGxzL3dpbm1tL21jaS5jLCBkbGxzL3dpbm1tL21lc3NhZ2UxNi5jLAoJICBkbGxzL3dpbm1tL3dpbmVtbS5oOgoJRml4ZWQgZ2NjIDQuMCB3YXJuaW5ncy4KCgkqIGRsbHMvbnRkbGwvZW52LmMsIGRsbHMvbnRkbGwvaGFuZGxldGFibGUuYywgZGxscy9udGRsbC9sb2FkZXIuYywKCSAgZGxscy9udGRsbC9zZXJ2ZXIuYywgZGxscy9udGRsbC90aHJlYWQuYzoKCVVzZSBTSVpFX1QgaW5zdGVhZCBvZiBVTE9ORyBmb3IgdGhlIHNpemUgYXJndW1lbnRzIG9mIHRoZSB2aXJ0dWFsCgltZW1vcnkgZnVuY3Rpb25zLgoKCSogZGxscy9kaW5wdXQvZGV2aWNlLmMsIGRsbHMvZGlucHV0L2RpbnB1dF9tYWluLmMsCgkgIGRsbHMvZGlucHV0L2pveXN0aWNrX2xpbnV4LmMsIGRsbHMvZGlucHV0L2pveXN0aWNrX2xpbnV4aW5wdXQuYywKCSAgZGxscy9kaW5wdXQva2V5Ym9hcmQuYywgZGxscy9kaW5wdXQvbW91c2UuYywgZGxscy9kc291bmQvYnVmZmVyLmMsCgkgIGRsbHMvZHNvdW5kL2R1cGxleC5jLCBkbGxzL2Rzb3VuZC90ZXN0cy9kczNkLmMsCgkgIGRsbHMvZHNvdW5kL3Rlc3RzL2RzM2Q4LmMsIGRsbHMvZHNvdW5kL3Rlc3RzL2Rzb3VuZC5jLAoJICBkbGxzL2Rzb3VuZC90ZXN0cy9kc291bmQ4LmMsIGRsbHMvZ2RpL3ByaW50ZHJ2LmMsIGRsbHMvaW1tMzIvaW1tLmMsCgkgIGRsbHMvaXBobHBhcGkvaXBobHBhcGlfbWFpbi5jLCBkbGxzL2tlcm5lbC9jaGFuZ2UuYywKCSAgZGxscy9rZXJuZWwvZXhjZXB0LmMsIGRsbHMvbXNybGUzMi9tc3JsZTMyLmMsIGRsbHMvbnRkbGwvY2Ryb20uYywKCSAgZGxscy9vbGUzMi9vbGUyLmMsIGRsbHMvdXNlci9jdXJzb3JpY29uLmMsIGRsbHMveDExZHJ2L2NsaXBib2FyZC5jLAoJICBkbGxzL3gxMWRydi94aW0uYzoKCUZpeGVkIHNvbWUgdHJhY2VzIHRvIHVzZSB0aGUgcmlnaHQgcHJpbnRmIGZvcm1hdCBhbmQgYXZvaWQgdHlwZWNhc3RzLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWM6CglPbmx5IHRyeSB0byBzZXQgLW1wcmVmZXJyZWQtc3RhY2stYm91bmRhcnkgb24gaTM4Ni4KCUFkZCAtV2RlY2xhcmF0aW9uLWFmdGVyLXN0YXRlbWVudCB3YXJuaW5nIGlmIHN1cHBvcnRlZC4KCgkqIGRsbHMvbXNpL2RpYWxvZy5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggYW4gdW5pbml0aWFsaXplZCB2YXJpYWJsZSBwcm9ibGVtLgoKCSogZGxscy91cmxtb24vaW50ZXJuZXQuYywgZGxscy91cmxtb24vdGVzdHMvbWlzYy5jOgoJSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCUFkZGVkIFBBUlNFX1NFQ1VSSVRZX1VSTCBhY3Rpb24gaW1wbGVtZW50YXRpb24uCgoJKiBkbGxzL3dpbnRydXN0L3dpbnRydXN0X21haW4uYzogUGF1bCBWcmllbnMgPFBhdWwuVnJpZW5zQHhzNGFsbC5ubD4KCVJldHVybiBFUlJPUl9TVUNDRVNTIGFzIGRlZmF1bHQgYW5kIFRSVVNUX0VfUFJPVklERVJfVU5LTk9XTiBpZiBhc2tlZAoJZm9yIFdJTlRSVVNUX0FDVElPTl9HRU5FUklDX1ZFUklGWV9WMi4KCgkqIGRsbHMvbXNodG1sL3Byb3RvY29sLmMsIGRsbHMvbXNodG1sL3Rlc3RzL3Byb3RvY29sLmM6CglKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJQWRkZWQgKlByb3RvY29sSW5mbzo6UGFyc2VVcmwgaW1wbGVtZW50YXRpb24uCgoJKiBkbGxzL3NoZG9jdncvZXZlbnRzLmMsIGRsbHMvc2hkb2N2dy9zaGRvY3Z3LmgsCgkgIGRsbHMvc2hkb2N2dy93ZWJicm93c2VyLmM6CglKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJTWFrZSBJQ29ubmVjdGlvblBvaW50Q29udGFpbmVyIGludGVyZmFjZSBoZWFwIGJhc2VkLgoKCSogZGxscy9zaGVsbDMyL3Rlc3RzL3NoZWxscGF0aC5jOiBKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglSZW1vdmUgYW4gYW5ub3lpbmcgZGlhbG9nIHdoZW4gdHJ5aW5nIHRvIGNsZWFuIHVwIGEgZGlyZWN0b3J5LgoKCSogZGxscy91c2VyL3Rlc3RzL21zZy5jLCBkbGxzL3gxMWRydi93aW5wb3MuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGQgYSB0ZXN0IGZvciBTaG93V2luZG93KFNXX1NIT1dNQVhJTUlaRUQpIGNhbGxlZCBmb3IgYSBub3QgdmlzaWJsZQoJb3ZlcmxhcHBlZCB3aW5kb3csIHdoaWNoIHNob3dzIHRoYXQgV01fU0hPV1dJTkRPVyBpcyBub3Qgc2VudCBpbiB0aGF0CgljYXNlIGFuZCB0aGF0IGl0IHNob3VsZCBhY3RpdmF0ZSBhIHdpbmRvdyBhbmQgYnJpbmcgaXQgdG8gdG9wLgoKCSogZGxscy9jcnlwdDMyL2NlcnQuYywgZGxscy9jcnlwdDMyL3Rlc3RzL2NlcnQuYzoKCUp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCVdoZW4gZGVjb2RpbmcgYSBzaWduZWQgY2VydCwgbWFrZSBzdXJlIGl0J3MgcmVhbGx5IGEgY2VydC4KCjIwMDUtMDktMDkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2NvbWN0bDMyL3Rlc3RzL3N1YmNsYXNzLmMsIGRsbHMvZ2RpL3Rlc3RzL2JpdG1hcC5jLAoJICBkbGxzL3VzZXIvdGVzdHMvY2xhc3MuYywgZGxscy91c2VyL3Rlc3RzL21lbnUuYywKCSAgZGxscy91c2VyL3Rlc3RzL21zZy5jLCBkbGxzL3VzZXIvdGVzdHMvd2luLmMsCgkgIHByb2dyYW1zL3Rhc2ttZ3IvZ3JhcGguYywgcHJvZ3JhbXMvdGFza21nci9wZXJmcGFnZS5jLAoJICBwcm9ncmFtcy90YXNrbWdyL3Byb2NwYWdlLmMsIHByb2dyYW1zL3dpbmVjb25zb2xlL2RpYWxvZy5jLAoJICBwcm9ncmFtcy93aW5lZGJnL2dkYnByb3h5LmMsIHByb2dyYW1zL3dpbmVkYmcvaW5mby5jLAoJICBwcm9ncmFtcy93aW5lZmlsZS93aW5lZmlsZS5jLCBwcm9ncmFtcy93aW5oZWxwL3dpbmhlbHAuYzoKCVVzZSBHZXQvU2V0V2luZG93TG9uZ1B0ciBpbnN0ZWFkIG9mIEdldC9TZXRXaW5kb3dMb25nIHdoZXJlCglhcHByb3ByaWF0ZS4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzIuc3BlYywgZGxscy9kYmdoZWxwL2RiZ2hlbHAuc3BlYywKCSAgZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZGxscy9tYXBpMzIvbWFwaTMyLnNwZWMsCgkgIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsCgkgIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzIuc3BlYywgZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYywKCSAgZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYywgZGxscy91c2VyL3VzZXIzMi5zcGVjLAoJICBkbGxzL3V4dGhlbWUvdXh0aGVtZS5zcGVjLCBkbGxzL3dpbmluZXQvd2luaW5ldC5zcGVjOgoJU3BlY2lmeSA2NC1iaXQgaW50ZWdlcnMgYXMgZG91YmxlIGluc3RlYWQgb2YgbG9uZyBsb25nIGluIHNwZWMgZmlsZXMKCXNvIHRoYXQgd2UgZ2V0IHRoZSBjb3JyZWN0IG51bWJlciBvZiBhcmd1bWVudHMuCgoJKiBkbGxzL29sZWF1dDMyL3Rlc3RzL3ZhcnR5cGUuYywgZGxscy9vbGVhdXQzMi92YXJ0eXBlLmM6CglBbGV4IFZpbGxhY+1zIExhc3NvIDxhX3ZpbGxhY2lzQHBhbG9zYW50by5jb20+CglNYWtlIFNpbmdsZXxEb3VibGUtPkJTVFIgY29udmVyc2lvbiB1c2UgdGhlIHNwZWNpZmllZCBsb2NhbGUgZm9yIHRoZQoJZGVjaW1hbCBwb2ludCBldmVuIHdpdGhvdXQgdGhlIExPQ0FMRV9VU0VfTkxTIGZsYWcuIFRlc3Qgc3VwcGxpZWQuCgoJKiBkbGxzL2QzZDgvdnNoYWRlcmRlY2xhcmF0aW9uLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBnY2MgNC4wIHdhcm5pbmcuCgoJKiBkbGxzL21zaS9hY3Rpb24uaCwgZGxscy9tc2kvY2xhc3Nlcy5jLCBkbGxzL21zaS9oZWxwZXJzLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglNb3ZlIGEgZml4ZWQgc2l6ZSBidWZmZXIgdG8gdGhlIGhlYXAuCgoJKiBkbGxzL21zaS9hY3Rpb24uYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJUmVkdWNlIHRoZSBpbmRlbnQgbGV2ZWwgb2YgYSBmdW5jdGlvbi4KCgkqIGRsbHMvbnRkbGwvdmlydHVhbC5jOgoJQWRkZWQgZGVzY3JpcHRpb25zIGZvciBhIGZldyBtb3JlIG1hY2hpbmUgdHlwZXMuCgoJKiBkbGxzL3VzZXIvdXNlcl9tYWluLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglJZiBnaXZlbiB0aGUgRVdYX0ZPUkNFIGZsYWcsIEV4aXRXaW5kb3dzRXgoKSBzaG91bGQgbm90IHNlbmQgdGhlCglXTV97UVVFUll9RU5EU0VTU0lPTiBtZXNzYWdlcy4KCUFkZCBzdXBwb3J0IGZvciBFV1hfRk9SQ0VJRkhVTkcuCglFeGl0V2luZG93c0V4KCkgc2hvdWxkIHJldHVybiB0cnVlIGlmIGl0IHN1Y2NlZWRzLCBldmVuIGlmIHRoZSB1c2VyCgljYW5jZWxzIHRoZSBzaHV0ZG93bi4KCgkqIGRsbHMvYWR2YXBpMzIvc2VydmljZS5jLCBkbGxzL2RpbnB1dC9qb3lzdGlja19saW51eC5jLAoJICBkbGxzL2RpbnB1dC9rZXlib2FyZC5jLCBkbGxzL2Rzb3VuZC9idWZmZXIuYywgZGxscy9kc291bmQvY2FwdHVyZS5jLAoJICBkbGxzL2Rzb3VuZC9kc291bmQuYywgZGxscy9kc291bmQvZHVwbGV4LmMsIGRsbHMvZ2RpL2RyaXZlci5jLAoJICBkbGxzL2dkaS9nZGlvYmouYywgZGxscy9rZXJuZWwvY29uc29sZS5jLCBkbGxzL2tlcm5lbC9rZXJuZWxfbWFpbi5jLAoJICBkbGxzL2tlcm5lbC9sY2Zvcm1hdC5jLCBkbGxzL2tlcm5lbC9tb2R1bGUuYywgZGxscy9rZXJuZWwvcHJvZmlsZS5jLAoJICBkbGxzL2tlcm5lbC9zeXNsZXZlbC5jLCBkbGxzL2tlcm5lbC92eGQuYywgZGxscy9tc2Ntcy9oYW5kbGUuYywKCSAgZGxscy9tc2kvaGFuZGxlLmMsIGRsbHMvbnRkbGwvY2Ryb20uYywgZGxscy9udGRsbC9jcml0c2VjdGlvbi5jLAoJICBkbGxzL250ZGxsL2RpcmVjdG9yeS5jLCBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jLCBkbGxzL250ZGxsL2hlYXAuYywKCSAgZGxscy9udGRsbC9sb2FkZXIuYywgZGxscy9udGRsbC9ydGwuYywgZGxscy9udGRsbC90aW1lLmMsCgkgIGRsbHMvbnRkbGwvdmlydHVhbC5jLCBkbGxzL29sZTMyL2NvbXBvYmouYywKCSAgZGxscy9vbGUzMi9jb21wb2JqX3ByaXZhdGUuaCwgZGxscy9vbGUzMi9naXQuYywgZGxscy9vbGUzMi9pZnMuYywKCSAgZGxscy9vbGUzMi9ycGMuYywgZGxscy9vbGVhdXQzMi90eXBlbGliLmMsIGRsbHMvcnBjcnQ0L3JwY19zZXJ2ZXIuYywKCSAgZGxscy9ycGNydDQvcnBjcnQ0X21haW4uYywgZGxscy9zaGVsbDMyL2NoYW5nZW5vdGlmeS5jLAoJICBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmMsIGRsbHMvdXNlci9jdXJzb3JpY29uLmMsCgkgIGRsbHMvdXNlci9kZGVfbWlzYy5jLCBkbGxzL3VzZXIvbWVzc2FnZS5jLCBkbGxzL3VzZXIvdXNlcl9tYWluLmMsCgkgIGRsbHMvdXNlci93aW5wcm9jLmMsIGRsbHMvd2luYXNwaS93aW5hc3BpMzIuYywgZGxscy93aW5lZG9zL2Rvc3ZtLmMsCgkgIGRsbHMvd2luZWRvcy92Z2EuYywgZGxscy93aW5pbmV0L2ludGVybmV0LmMsCgkgIGRsbHMvd2lubW0vd2luZWFsc2EvbWlkaS5jLCBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYywKCSAgZGxscy93aW5tbS93aW5lb3NzL21pZGkuYywgZGxscy93aW5tbS93aW5tbS5jLCBkbGxzL3dpbnNvY2svYXN5bmMuYywKCSAgZGxscy93aW5zcG9vbC9pbmZvLmMsIGRsbHMveDExZHJ2L2RjZS5jLCBkbGxzL3gxMWRydi9kaWIuYywKCSAgZGxscy94MTFkcnYveDExZHJ2X21haW4uYywgZGxscy94MTFkcnYveGRuZC5jLCBkbGxzL3gxMWRydi94Zm9udC5jLAoJICBkbGxzL3gxMWRydi94cmVuZGVyLmMsIGluY2x1ZGUvd2lubnQuaDoKCVVzZSBhIG1vcmUgcG9ydGFibGUgc2NoZW1lIGZvciBzdG9yaW5nIHRoZSBuYW1lIG9mIGEgY3JpdGljYWwKCXNlY3Rpb24uCgoJKiBkbGxzL3NoZG9jdncvbWlzYy5jLCBkbGxzL3NoZG9jdncvc2hkb2N2dy5oLCBkbGxzL3NoZG9jdncvd2ViYnJvd3Nlci5jOgoJSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCU1ha2UgSVF1aWNrQWN0aXZhdGUgaW50ZXJmYWNlIGhlYXAgYmFzZWQuCgoJKiBkbGxzL3dpbm1tL3BsYXlzb3VuZC5jOiBVbHJpY2ggQ3pla2FsbGEgPHVscmljaEBjb2Rld2VhdmVycy5jb20+CglEaXNwbGF5IGZjY1R5cGUgYXMgaGV4IGluc3RlYWQgb2YgY2hhcmFjdGVycyBpbiB0cmFjZSBvdXRwdXQuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYzogQWRkZWQgYSBkZWZpbmUgY2hlY2sgZm9yIF9feDg2XzY0X18uCgoJKiB0b29scy93aW5lZHVtcC9kdW1wLmM6CglGaXhlZCBnZXRfdGltZV9zdHIgZGVmaW5pdGlvbiB0byBtYXRjaCB0aGUgcHJvdG90eXBlLgoKCSogdG9vbHMvd2luYXBpL3dpbjMyLmFwaTogVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJVXBkYXRlIHRoZSB3aW4zMi5hcGkgZmlsZSB0byBjdXJyZW50IENWUy4KCgkqIGRsbHMvZGlucHV0L2VmZmVjdF9saW51eGlucHV0LmM6CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglVc2UgcHJvcGVyIGlmZGVmcyBhcm91bmQgdW5pc3RkLmguCgoJKiBkbGxzL2NyeXB0MzIvY2VydC5jLCBkbGxzL2NyeXB0MzIvdGVzdHMvY2VydC5jOgoJSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJLSBjYWxsIENlcnRGcmVlQ2VydGlmaWNhdGVDb250ZXh0IGZyb20gQ2VydERlbGV0ZUNlcnRpZmljYXRlRnJvbVN0b3JlCgktIGZpeCBzb21lIHJlZiBjb3VudGluZyBwcm9ibGVtcwoKCSogZGxscy91cmxtb24vcmVnc3ZyLmMsIGRsbHMvdXJsbW9uL3Rlc3RzL3Byb3RvY29sLmMsCgkgIGRsbHMvdXJsbW9uL3VybG1vbl9tYWluLmgsIGluY2x1ZGUvdXJsbW9uLmlkbDoKCUphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglNb3ZlIHByb3RvY29sJ3MgQ0xTSURzIHRvIHVybG1vbi5pZGwuCgoJKiBkbGxzL3VybG1vbi9pbnRlcm5ldC5jLCBkbGxzL3VybG1vbi90ZXN0cy9taXNjLmM6CglKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJQWRkZWQgUEFSU0VfUEFUSF9GUk9NX1VSTCBhY3Rpb24gaW1wbGVtZW50YXRpb24uCgoJKiBkbGxzL3VybG1vbi9yc3JjLnJjLCBkbGxzL3VybG1vbi92ZXJzaW9uLnJjOgoJU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtTGluZS5jb20+CglBZGRlZCB2ZXJzaW9uIHJlc291cmNlIHRvIHVybG1vbi5kbGwuCgoyMDA1LTA5LTA4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9udGRsbC9leGNlcHRpb24uYzogRGVmaW5lIEdFVF9JUCBmb3IgeDg2XzY0LgoKCSogbGlicy93aW5lL3BvcnQuYzogSW1wbGVtZW50ZWQgd2luZV9zd2l0Y2hfdG9fc3RhY2sgZm9yIHg4Nl82NC4KCgkqIGRsbHMvd2lubW0vZHJpdmVyLmMsIGRsbHMvd2lubW0vbG9sdmxkcnYuYzoKCUF2b2lkICdjbG9iYmVyZWQgYnkgbG9uZ2ptcCcgd2FybmluZ3MuCgoJKiBmb250cy8uY3ZzaWdub3JlLCBmb250cy9NYWtlZmlsZS5pbiwgZm9udHMvY291cmllci5zZmQsCgkgIGZvbnRzL21hcmxldHQuc2ZkLCBmb250cy9tc19zYW5zX3NlcmlmLnNmZCwgZm9udHMvc3lzdGVtLnNmZCwKCSAgZm9udHMvd2luZV9jb3VyaWVyLnNmZCwgZm9udHMvd2luZV9tYXJsZXR0LnNmZCwKCSAgZm9udHMvd2luZV9zYW5zX3NlcmlmLnNmZCwgZm9udHMvd2luZV9zeXN0ZW0uc2ZkOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbmFtZSBXaW5lIGZvbnRzIHRvIG1hdGNoIFdpbmRvd3MgZm9udCBuYW1lcy4KCgkqIGRsbHMvd2xkYXAzMi9jb250cm9sLmMsIGRsbHMvd2xkYXAzMi93aW5sZGFwX3ByaXZhdGUuaCwKCSAgZGxscy93bGRhcDMyL3dsZGFwMzIuc3BlYzoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJSW1wbGVtZW50IGxkYXBfY3JlYXRlX3NvcnRfY29udHJvbCouCgoJKiBkbGxzL2NyeXB0MzIvY2VydC5jLCBkbGxzL2NyeXB0MzIvdGVzdHMvY2VydC5jOgoJSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJLSBpbXBsZW1lbnQgc3lzdGVtIHN0b3JlcwoJLSByZW1vdmUgYW4gaW50ZXJtaXR0ZW50bHkgZmFpbGluZyByZWdpc3RyeSB0ZXN0CgoJKiBkbGxzL3NoZG9jdncvY2xhc3NpbmZvLmMsIGRsbHMvc2hkb2N2dy9zaGRvY3Z3LmgsCgkgIGRsbHMvc2hkb2N2dy93ZWJicm93c2VyLmM6CglKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJTWFrZSBJUHJvdmlkZUNsYXNzSW5mbzIgaW50ZXJmYWNlIGhlYXAgYmFzZWQuCgoJKiBkbGxzL3dpbm1tL21taW8uYzogVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hAY29kZXdlYXZlcnMuY29tPgoJY2tpZCBub3QgZmNjVHlwZSBzcGVjaWZpZXMgdGhlIGZvcm0gdHlwZSB0byBzZWFyY2ggZm9yLgoKCSogZGxscy9tc2h0bWwvcHJvdG9jb2wuYzogSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCVJlbGVhc2UgQklORElORk8gaW4gKlByb3RvY29sOjpTdGFydC4KCgkqIGRsbHMvZ2RpL2ZvbnQuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCByZXR1cm4gdmFsdWUgb2YgRXh0VGV4dE91dCBpbiB0aGUgY2FzZSB3aGVuIGNvdW50ID09IDAuCgoJKiBkbGxzL3NoZWxsMzIvc2hsZXhlYy5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJUGFzcyBhIGxvY2FsbHkgbW9kaWZpZWQgdmVyc2lvbiBvZiBTSEVMTEVYRUNVVEVJTkZPIHRvCglJU2hlbGxFeGVjdXRlSG9va1dfRXhlY3V0ZSwgdGhpcyBzaG91bGQgcGFzcyB0aHJvdWdoIGF0IGxlYXN0CglzZWlfdG1wLm5TaG93IHJldHJpZXZlZCBmcm9tIGFuIC5sbmsgZmlsZSAoZlN0YXJ0dXApLgoKCSogdG9vbHMvd2luZWR1bXAvbG5rLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglEdW1wIG1vcmUgLmxuayBmaWxlIGhlYWRlciBmaWVsZHMuCgoJKiBkbGxzL3NoZWxsMzIvZGVidWdobHAuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCS0gU3RvcCB1c2luZyBhIG5vdCBpbml0aWFsaXplZCB2YXJpYWJsZSBzelRlbXAgaW4KCSAgX2RiZ19JTFNpbXBsZUdldFRleHQsIG1ha2UgX2RiZ19JTFNpbXBsZUdldFRleHQgcmV0dXJuIG5vIHZhbHVlIHNpbmNlCgkgIG5vYm9keSBpcyB1c2luZyBpdC4KCS0gU3RvcCBkZXJlZmVyZW5jaW5nIGEgcG9zc2libGUgTlVMTCBpbiBwZHVtcCBzaW5jZQoJICBfZGJnX0lMR2V0RGF0YVBvaW50ZXIgY2FuIHBvdGVudGlhbGx5IHJldHVybiBOVUxMIChmb3IgaW5zdGFuY2UgZm9yCgkgIHJvb3Qgb3IgZGVza3RvcCBwaWRsKS4KCS0gTWFrZSBzaGRlYnVnc3RyX2d1aWQgdXNlIHN0YW5kYXJkIHdpbmVfZGJnX3NwcmludGYgaW5zdGVhZCBvZiB0aGUKCSAgaGFuZG1hZGUgc29sdXRpb24uCgoJKiBkbGxzL250ZGxsL3ZlcnNpb24uYzogRml4ZWQgYSBjb21tZW50LgoKCSogZGxscy9tc2kvYWN0aW9uLmMsIGRsbHMvbXNpL2FjdGlvbi5oLCBkbGxzL21zaS9oZWxwZXJzLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBbGxvY2F0ZSBtZW1vcnkgcmF0aGVyIHRoYW4gdXNpbmcgZml4ZWQgbGVuZ3RoIGJ1ZmZlcnMuCgoJKiBkbGxzL21zaS9jdXN0b20uYywgZGxscy9tc2kvbXNpcHJpdi5oLCBkbGxzL21zaS9wYWNrYWdlLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglDb252ZXJ0IFJ1bm5pbmdBY3Rpb25zIGFycmF5IGludG8gYSBsaXN0LgoKCSogZGxscy9rZXJuZWwvbmVfbW9kdWxlLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBnY2MgNC4wIHdhcm5pbmdzLgoKCSogZGxscy9nZGkvZm9udC5jLCBkbGxzL2dkaS9mcmVldHlwZS5jOgoJSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUhhdmUgRXh0VGV4dE91dCBjYWxsIGludG8gdGhlIGZvbnQgbGlua2luZyBtZWNoYW5pc20uCglHZXRDaGFyV2lkdGgsIEdldENoYXJBQkNXaWR0aHMgYW5kIEdldFRleHRFeHRlbnRQb2ludCBzaG91bGQgcmV0dXJuCgl0aGUgd2lkdGhzIG9mIGEgbGlua2VkIGZvbnQncyBnbHlwaHMuCgoJKiBpbmNsdWRlL3NxbHR5cGVzLmg6IFBoaWwgS3J5bG92IDxwaGlsQG5ld3N0YXIucmluZXQucnU+CglBZGRlZCB0eXBlZGVmcyBTUUxXQ0hBUiBhbmQgU1FMVENIQVIuCgoJKiB0b29scy93aW5lYnVpbGQvYnVpbGQuaCwgdG9vbHMvd2luZWJ1aWxkL2ltcG9ydC5jLAoJICB0b29scy93aW5lYnVpbGQvcGFyc2VyLmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYzoKCUFkZGVkIHN1cHBvcnQgZm9yIDY0LWJpdCBmb3JtYXQgTlQgaGVhZGVyIGFuZCBleHBvcnQvaW1wb3J0IHRhYmxlcy4KCgkqIGRsbHMvY3J5cHQzMi9jZXJ0LmMsIGRsbHMvY3J5cHQzMi9lbmNvZGUuYzoKCUF2b2lkIGEgY291cGxlIG9mICdjbG9iYmVyZWQgYnkgbG9uZ2ptcCcgd2FybmluZ3MuCgoJKiBkbGxzL2F2aWZpbDMyL2FwaS5jLCBkbGxzL2NhcmRzL2NhcmRzLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggZ2NjIDQuMCB3YXJuaW5ncy4KCgkqIGRsbHMvbnRkbGwvc2VydmVyLmM6CglGaXggYSBmaWxlIGRlc2NyaXB0b3IgbGVhayB3aGVuIG9wZW5pbmcgdGhlIGZpcnN0IGZpbGUgb24gYSByZW1vdmFibGUKCWRldmljZS4KCgkqIGRsbHMvbXNpL2Zvcm1hdC5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglJbXByb3ZlIGEgZml4bWUgbWVzc2FnZSBhIGxpdHRsZS4KCgkqIGRsbHMvbXNpL2NsYXNzZXMuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJLSBmaXggYSBidWcgaW50cm9kdWNlZCBieSB0aGUgcHJvZ2lkIGxpc3QgY29udmVyc2lvbgoJLSBtYWtlIGEgZml4bWUgYSBsaXR0bGUgbGVzcyBhbGFybWlzdAoKCSogZGxscy9tc2kvZXZlbnRzLmMsIGRsbHMvbXNpL2hlbHBlcnMuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBtZW1vcnkgbGVha3MuCgoJKiBkbGxzL21zaS9hY3Rpb24uYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlIGFuIHVubmVjZXNzYXJ5IGxldmVsIG9mIGluZGVudC4KCgkqIGRsbHMvbXNpL2N1c3RvbS5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggbWVtb3J5IGxlYWtzIGluIGN1c3RvbSBhY3Rpb25zLgoKCSogZGxscy93aW5tbS93aW5lYWxzYS9taWRpLmM6IENocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUltcHJvdmUgbWlkaSB0cmFjZS4KCgkqIGRsbHMvcnBjcnQ0L25kcl9tYXJzaGFsbC5jLCBpbmNsdWRlL3JwY25kci5oOgoJR2UgdmFuIEdlbGRvcnAgPGd2Z0ByZWFjdG9zLmNvbT4KCUZpeCBOZHJTZXJ2ZXJDb250ZXh0TWFyc2hhbGwgcHJvdG90eXBlLgoKCSogZGxscy93aW5tbS9tbWlvLmM6IFVscmljaCBDemVrYWxsYSA8dWN6ZWthbGxhQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZSByZWR1bmRhbnQgY2hlY2suCgoJKiBkbGxzL3NoZG9jdncvcGVyc2lzdC5jLCBkbGxzL3NoZG9jdncvc2hkb2N2dy5oLAoJICBkbGxzL3NoZG9jdncvd2ViYnJvd3Nlci5jOgoJSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCU1ha2UgSVBlcnNpc3QqIGludGVyZmFjZXMgaGVhcCBiYXNlZC4KCgkqIGRsbHMvdXJsbW9uL3Vtb24uYywgZGxscy91cmxtb24vdXJsbW9uX21haW4uYzoKCUphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglBZGRlZCBSZWxlYXNlQmluZEluZm8gaW1wbGVtZW50YXRpb24uCgoJKiBkbGxzL21wci9tcHJfbWFpbi5jOiBHZSB2YW4gR2VsZG9ycCA8Z3ZnQHJlYWN0b3MuY29tPgoJRml4IERsbENhblVubG9hZE5vdyBwcm90b3R5cGUuCgoJKiBkbGxzL3dsZGFwMzIvTWFrZWZpbGUuaW4sIGRsbHMvd2xkYXAzMi9jb250cm9sLmMsCgkgIGRsbHMvd2xkYXAzMi93aW5sZGFwX3ByaXZhdGUuaCwgZGxscy93bGRhcDMyL3dsZGFwMzIuc3BlYzoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJSW1wbGVtZW50IGxkYXBfY29udHJvbF9mcmVlKiwgbGRhcF9jb250cm9sc19mcmVlKiBhbmQKCWxkYXBfZnJlZV9jb250cm9scyouCgoJKiBkbGxzL2NyeXB0MzIvY2VydC5jLCBkbGxzL2NyeXB0MzIvdGVzdHMvY2VydC5jOgoJSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJSW1wbGVtZW50IHN5c3RlbSByZWdpc3RyeSBzdG9yZXMuCgoJKiBkbGxzL2NyeXB0MzIvdGVzdHMvZW5jb2RlLmM6IEp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCUNvbnZlcnQgYSBmZXcgbW9yZSBjb25zdGFudHMgZnJvbSBzdHJpbmdzIHRvIGJ5dGUgYXJyYXlzLgoKMjAwNS0wOS0wNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHRvb2xzL3dpbmVidWlsZC9idWlsZC5oLCB0b29scy93aW5lYnVpbGQvaW1wb3J0LmMsCgkgIHRvb2xzL3dpbmVidWlsZC9tYWluLmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYywKCSAgdG9vbHMvd2luZWJ1aWxkL3V0aWxzLmM6CglBZGRlZCBhIGJpdCBvZiBmcmFtZXdvcmsgZm9yIGZ1dHVyZSB4ODZfNjQgc3VwcG9ydC4KCgkqIGRsbHMvc2hlbGwzMi90ZXN0cy9zaGxmb2xkZXIuYzoKCU1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCVJlbW92ZWQgdHdvIHRvZG9fd2luZSdzIGFyb3VuZCB0ZXN0cyB0aGF0IG1lYW53aGlsZSBzdWNjZWVkIG9uIHdpbmUuCgoJKiBkbGxzL3NoZWxsMzIvc2hmbGRyX3VuaXhmcy5jOgoJTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJUGFzcyBjb3JyZWN0IHBvaW50ZXIgdG8gU0hGcmVlIGluIGNhc2Ugb2YgZmFpbHVyZSBpbgoJVU5JWEZTX3BhdGhfdG9fcGlkbC4KCVJldHVybiBFX0ZBSUwgaWYgd2UgY2FuJ3QgZ2V0IHRoZSB1bml4IHBhdGggaW4KCUlQZXJzaXN0Rm9sZGVyMzo6SW5pdGlhbGl6ZUV4LgoJUmV0dXJuIEVfTk9BR0dSRUdBVElPTiBpZiBub24tTlVMTCBwVW5rT3V0ZXIgaXMgZ2l2ZW4gdG8gdGhlCgljb25zdHJ1Y3Rvci4KCgkqIGRsbHMvZHNvdW5kL3Rlc3RzL3Byb3BzZXQuYywgcHJvZ3JhbXMvd2luZWNmZy9kcml2ZXVpLmMsCgkgIHByb2dyYW1zL3dpbmVmaWxlL3dpbmVmaWxlLmM6CglSZXBsYWNlIGEgZmV3IG1vcmUgZGlyZWN0IGxwVnRibCBhY2Nlc3NlcyBieSB0aGUgcHJvcGVyIG1hY3Jvcy4KCgkqIGRsbHMvZ2RpL2ZyZWV0eXBlLmMsIGRsbHMvZ2RpL2dkaTMyLnNwZWMsIGRsbHMvZ2RpL2dkaV9wcml2YXRlLmg6CglIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IEZvbnRJc0xpbmtlZC4KCgkqIHRvb2xzL3dpbmUuaW5mOiBDaHJpc3RvcGggRnJpY2sgPGZyaWNrQHNjLW5ldHdvcmtzLmRlPgoJRmFrZSBkaXJlY3R4IDljIGluc3RlYWQgb2YgOWIuCgoJKiBkbGxzL21zaS9tc2kuYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCBNc2lSZWluc3RhbGxGZWF0dXJlLgoKCSogZGxscy9jcnlwdDMyL01ha2VmaWxlLmluLCBkbGxzL2NyeXB0MzIvY2VydC5jLAoJICBkbGxzL2NyeXB0MzIvdGVzdHMvTWFrZWZpbGUuaW4sIGRsbHMvY3J5cHQzMi90ZXN0cy9jZXJ0LmM6CglKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglJbXBsZW1lbnQgcmVnaXN0cnkgc3RvcmVzLgoKCSogZGxscy9rZXJuZWwvdGhyZWFkLmMsIGRsbHMvbnRkbGwvdGhyZWFkLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUltcGxlbWVudGVkIGtlcm5lbDMyOlNldFRocmVhZFByaW9yaXR5IG9uIHRvcCBvZiBudGRsbCdzIGVxdWl2YWxlbnQKCWZ1bmN0aW9ucy4KCgkqIGRsbHMvZGlucHV0L2pveXN0aWNrX2xpbnV4aW5wdXQuYzoKCVVzZSB0aGUgQ09NIG1hY3JvcyBpbnN0ZWFkIG9mIGFjY2Vzc2luZyBscFZ0YmwgZGlyZWN0bHkuCgoJKiB0b29scy93aW5lYnVpbGQvYnVpbGQuaCwgdG9vbHMvd2luZWJ1aWxkL2ltcG9ydC5jLAoJICB0b29scy93aW5lYnVpbGQvcmVzMzIuYywgdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jOgoJR2VuZXJhdGUgdGhlIE5UIGhlYWRlciBpbiBhc3NlbWJseSBpbnN0ZWFkIG9mIHVzaW5nIGEgQyBzdHJ1Y3R1cmUuCgoJKiBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYywgZGxscy9jcnlwdDMyL3Rlc3RzL2VuY29kZS5jLAoJICBkbGxzL21sYW5nL21sYW5nLmMsIGRsbHMvbWxhbmcvdGVzdHMvbWxhbmcuYywKCSAgZGxscy9xdWFydHovZmlsdGVyZ3JhcGguYywgZGxscy9xdWFydHovZmlsdGVybWFwcGVyLmMsCgkgIGRsbHMvd2lubW0vd2lubW0uYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBnY2MgNC4wIHdhcm5pbmdzLgoKCSogZGxscy91cmxtb24vTWFrZWZpbGUuaW4sIGRsbHMvdXJsbW9uL2ludGVybmV0LmMsCgkgIGRsbHMvdXJsbW9uL3Rlc3RzL21pc2MuYywgZGxscy91cmxtb24vdXJsbW9uLnNwZWM6CglKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJQWRkZWQgQ29JbnRlcm5ldFBhcnNlVXJsIGltcGxlbWVudGF0aW9uLgoKCSogZGxscy9nZGkvZnJlZXR5cGUuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCWdldF9nbHlwaF9pbmRleCBzaG91bGQgcmV0dXJuIHRoZSBub25leGlzdGVudCBnbHlwaCBmb3IgYml0bWFwIGZvbnRzCgl3aGVuIGEgdW5pY29kZSBjaGFyYWN0ZXIgY2Fubm90IGJlIHJlcHJlc2VudGVkIGFzIGEgc2luZ2xlIGJ5dGUgaW4gdGhlCglmb250J3MgY29kZXBhZ2UuCgoJKiBwcm9ncmFtcy93aW5lY2ZnL0phLnJjOiBWaWtyYW0gS3VtYXIgPHZpa0B6b25lODEuY29tPgoJVXBkYXRlIEphcGFuZXNlIHJlc291cmNlIGZpbGUgdG8gaW5jbHVkZSB0aGUgVGhlbWUgdGFiLgoKCSogZGxscy93aW5pbmV0L2h0dHAuYzogPG9yaW5AcGluaGVhZC5jYz4KCVdyb25nIGZsYWdzIHdlcmUgYmVpbmcgdGVzdGVkIGZvciBJTlRFUk5FVF9GTEFHX05PX0FVVE9fUkVESVJFQ1QuCgoJKiBpbmNsdWRlL29sZWlkbC5pZGw6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBhIHR5cG8uCgoJKiBkbGxzL2RpbnB1dC9qb3lzdGlja19saW51eGlucHV0LmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggd2FybmluZ3MgZm9yIG5vIGZvcmNlIGZlZWRiYWNrIGNhc2UuCgoJKiBkbGxzL21zaS9hY3Rpb24uYywgZGxscy9tc2kvYWN0aW9uLmgsIGRsbHMvbXNpL2ZpbGVzLmMsCgkgIGRsbHMvbXNpL2hlbHBlcnMuYywgZGxscy9tc2kvbXNpcHJpdi5oLCBkbGxzL21zaS9wYWNrYWdlLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglLZWVwIHRlbXBvcmFyeSBmaWxlcyBpbiBhIHNlcGVyYXRlIGxpc3QuCgoJKiBkbGxzL3VzZXIvd2luLmM6CglEb24ndCBmYWxsYmFjayB0byBMb2FkTWVudTE2IHdoZW4gdGhlIHdpbmRvdyBpcyBjcmVhdGVkIHdpdGggYSBudWxsCglpbnN0YW5jZS4KCgkqIGRsbHMvdXNlci9lZGl0LmM6IE9ubHkgYWNjZXNzIDE2LWJpdCBzdGFjayBpZiByZWFsbHkgbmVjZXNzYXJ5LgoKCSogZGxscy93aW5lZDNkL2RpcmVjdHguYywgZGxscy93aW5lZDNkL3N1cmZhY2UuYywgZGxscy93aW5lZDNkL3V0aWxzLmM6CglLYXJzdGVuIEVsZmVuYmVpbiA8a2VsZmVAZ214LmRlPgoJQWRkZWQgQTJSMTBHMTBCMTAgYW5kIEQzREZNVF9EMjRGUzggbW9kZXMgdG8gYWxsIG90aGVyIGZ1bmN0aW9ucy4KCgkqIGRsbHMvd2xkYXAzMi9taXNjLmMsIGRsbHMvd2xkYXAzMi93aW5sZGFwX3ByaXZhdGUuaCwKCSAgZGxscy93bGRhcDMyL3dsZGFwMzIuc3BlYywgaW5jbHVkZS93aW5sZGFwLmg6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCUltcGxlbWVudCBsZGFwX2VzY2FwZV9maWx0ZXJfZWxlbWVudCouCgoJKiBkbGxzL2hoY3RybC5vY3gvaGVscC5jOiBKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCUNhbGwgQ0hNX0Nsb3NlQ0hNIHRvIGF2b2lkIGEgbWVtb3J5IGxlYWsuCgoJKiBkbGxzL21zaS9zdW1pbmZvLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCURvbid0IGluY2x1ZGUgdGhlIHRlcm1pbmF0aW5nIG51bCBpbiB0aGUgbGVuZ3RoIGluCglNc2lTdW1tYXJ5SW5mb0dldFByb3BlcnR5Vy4KCgkqIGRsbHMvbXNpL3Rlc3RzL3BhY2thZ2UuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJLSBhZGQgdGVzdCBmb3IgTXNpR2V0U291cmNlUGF0aAoJLSBkb24ndCBzcGVjaWZ5IGRyaXZlIGZvciBwYWNrYWdlIHBhdGgKCgkqIGRsbHMvc2hkb2N2dy9vbGVvYmplY3QuYywgZGxscy9zaGRvY3Z3L3NoZG9jdncuaCwKCSAgZGxscy9zaGRvY3Z3L3dlYmJyb3dzZXIuYzoKCUphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglNYWtlIElPbGVDb250cm9sIGFuZCBJT2xlSW5QbGFjZU9iamVjdCBpbnRlcmZhY2UgaGVhcCBiYXNlZC4KCgkqIGRsbHMva2VybmVsL3BhdGguYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCB0aGUgdHJhbnNsYXRpb24gb2YgZGVzdCB0byBEZXN0VywgaGF2aW5nIGl0IGJlIE5VTEwgdnMgIiIgaGFzCglkaWZmZXJlbnQgbWVhbmluZ3MgZm9yIE1vdmVGaWxlRXguCgoJKiBkbGxzL3VybG1vbi9zZWNfbWdyLmM6IEphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CgktIEFkZGVkIElJbnRlcm5ldFNlY3VyaXR5TWFuYWdlcjo6W1NHXWV0U2VjdXJpdHlTaXRlIGltcGxlbWVudGF0aW9uLgoJLSBGb3J3YXJkIElJbnRlcm5ldFNlY3VyaXR5TWFuYWdlciBjYWxscyB0byBjdXN0b20gbWFuYWdlci4KCgkqIGRsbHMvb2xlYXV0MzIvdG1hcnNoYWwuYzogTWFyY3VzIE1laXNzbmVyIDxtZWlzc25lckBzdXNlLmRlPgoJVlRfUFRSLT5WVF9VU0VSREVGSU5FRCBjaGFpbnMgZGVwZW5kIG9uIHRoZSBUS0lORCBvZiB0aGUgdXNlcmRlZmluZWQKCXR5cGUgZHVlIHRvIG91ciBoYW5kbGluZyBvZiBDT00gaW50ZXJmYWNlcyBpbiB0aGVyZS4KCgkqIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi90ZXN0cy9zaGxmb2xkZXIuYzoKCU1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCURvbid0IGNsb25lIHBpZGxMYXN0IGluIFNIQmluZFRvUGFyZW50LgoKCSogZGxscy9vbGUzMi9zdG9yYWdlMzIuYywgZGxscy9vbGUzMi90ZXN0cy9zdG9yYWdlMzIuYzoKCVJpY2hhcmQgQ29oZW4gPHJpY2hhcmRAZGFpam9idS5jby51az4KCVJlbGF4IHRoZSBzaGFyZSBtb2RlIHZhbGlkYXRpb24gZm9yIHRyYW5zYWN0ZWQgc3RvcmFnZSwgd2l0aCBhIHRlc3QuCgoJKiBkbGxzL2dkaS9mcmVldHlwZS5jLCBkbGxzL2dkaS9nZGlfcHJpdmF0ZS5oOgoJSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBpbmZyYXN0cnVjdHVyZSBmb3IgZm9udCBsaW5raW5nLiBXaW5lRW5nR2V0TGlua2VkSEZvbnQgd2lsbCBiZQoJdXNlZCBieSBFeHRUZXh0T3V0IHRvIHByb3ZpZGUgYW4gSEZPTlQgdGhhdCB3aWxsIGNvbnRhaW4gYSB2YWxpZAoJZ2x5cGguCgoJKiBkb2N1bWVudGF0aW9uL1BBQ0tBR0lORzogTWFyY3VzIE1laXNzbmVyIDxtZWlzc25lckBzdXNlLmRlPgoJUmVtb3ZlIEVUQ0RJUiBtZW50aW9uLgoKMjAwNS0wOS0wNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvZ2RpL2dkaTE2LmMsIGRsbHMvd2luZXBzL2VzY2FwZS5jLCBkbGxzL3dpbmVwcy9wc2Rydi5oLAoJICBpbmNsdWRlL3dpbmUvd2luZ2RpMTYuaCwgaW5jbHVkZS93aW5nZGkuaDoKCU1hcmN1cyBNZWlzc25lciA8bWVpc3NuZXJAc3VzZS5kZT4KCUFkZGVkIERSQVdQQVRURVJOUkVDVCBFc2NhcGUoKSAxNjwtPjMyIG1hcHBlciBhbmQgc3R1YiBpbiBXSU5FUFMuCgoJKiBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsIHNlcnZlci9uYW1lZF9waXBlLmMsCgkgIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci90cmFjZS5jLCBkbGxzL2tlcm5lbC9zeW5jLmMsCgkgIGRsbHMvbnRkbGwvZmlsZS5jOgoJSXZhbiBMZW8gUHVvdGkgPGl2YW5sZW9AZ21haWwuY29tPgoJQWRkZWQgRlNDVExfUElQRV9MSVNURU4gc3VwcG9ydC4KCgkqIGRsbHMvc2hlbGwzMi90ZXN0cy9zaGxmb2xkZXIuYzoKCVNhdWxpdXMgS3Jhc3Vja2FzIDxzYXVsaXVzLmtyYXN1Y2thc0BpZWVlLm9yZz4KCVNIRUxMMzIuSUxGaW5kTGFzdElEIGlzIGV4cG9ydGVkIGJ5IG9yZGluYWwuCgoJKiBkbGxzL21zaS9tc2kuYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUJlIHN1cmUgdG8gbnVsbCB0ZXJtaW5hdGUgdGhlIHN0cmluZyBpbiBNc2lHZXRQcm9kdWN0SW5mb0EgYWZ0ZXIgdGhlCglXLT5BIGNvbnZlcnNpb24gdXNpbmcgTXNpR2V0UHJvZHVjdEluZm9XIGlmIHRoZXJlIGlzIHNwYWNlLgoKCSogZGxscy9nZGkvZnJlZXR5cGUuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCVN0b3JlIHRoZSBzZWxlY3RlZCBwcGVtIGluIHRoZSBHZGlGb250LgoKCSogZGxscy9rZXJuZWwvTWFrZWZpbGUuaW46IE1hcmN1cyBNZWlzc25lciA8bWVpc3NuZXJAc3VzZS5kZT4KCVJlbW92ZSAtREVUQ0RJUiAodW51c2VkKS4KCgkqIGRsbHMvY2ZnbWdyMzIvbWFpbi5jLCBkbGxzL3NldHVwYXBpL2Rldmluc3QuYywgaW5jbHVkZS9NYWtlZmlsZS5pbiwKCSAgaW5jbHVkZS9jZmdtZ3IzMi5oLCBpbmNsdWRlL2Rkay9jZmdtZ3IzMi5oOgoJRGV0bGVmIFJpZWtlbmJlcmcgPHdpbmUuZGV2QHdlYi5kZT4KCU1vdmVkIGNmZ21ncjMyLmggdG8gaW5jbHVkZS9kZGsvLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglSZWFkaW5nIHRoZSBNUlVsaXN0IHVzaW5nIHRoZSBXIGZ1bmN0aW9ucyB3ZSBuZWVkIHRvIGRpdmlkZSB0aGUgc2l6ZQoJYnkgc2l6ZW9mKFdDSEFSKSB0byBnZXQgdGhlIGNvdW50IG9mIGNoYXJhY3RlcnMuCgoJKiBkbGxzL21zdmNydC90ZXN0cy9zdHJpbmcuYzogVmlqYXkgS2lyYW4gS2FtdWp1IDxpbmZ5cXVlc3RAZ21haWwuY29tPgoJQWRkZWQgYSB0ZXN0IGZvciBmYWlsaW5nIF9pc21iYmxlYWQuCgoJKiBkbGxzL3NoZG9jdncvZmFjdG9yeS5jLCBkbGxzL3NoZG9jdncvb2xlb2JqZWN0LmMsCgkgIGRsbHMvc2hkb2N2dy9zaGRvY3Z3LmgsIGRsbHMvc2hkb2N2dy93ZWJicm93c2VyLmM6CglKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJLSBNYWtlIFdlYkJyb3dzZXIgaGVhcCBiYXNlZCBvYmplY3QuCgktIEltcHJvdmUgc3R1YnMuCgoJKiBkbGxzL2tlcm5lbC9uZV9tb2R1bGUuYzoKCUFsZXggVmlsbGFj7XMgTGFzc28gPGFfdmlsbGFjaXNAcGFsb3NhbnRvLmNvbT4KCUNoZWNrIGFnYWluc3QgTlVMTCBsaWJuYW1lIGluIExvYWRNb2R1bGUxNi4KCgkqIGRsbHMvdXNlci9lZGl0LmMsIGRsbHMvdXNlci90ZXN0cy9lZGl0LmM6CglNaWNoYWVsIEthdWZtYW5uIDxoYWxsb0BtaWNoYWVsLWthdWZtYW5uLmNoPgoJLSBGaXggdGV4dCBwbGFjZW1lbnQuCgktIFBhaW50IHRoZSBib3JkZXIgY29ycmVjdGx5IGlmIGl0cyBzaXplIGlzIGJpZ2dlciB0aGFuIDEgcGl4ZWwuCgktIERvbid0IHBhaW50IHRleHQgb3ZlciB0aGUgYm9yZGVyLgoJLSBGaXggdGhlIGVkaXQgY29udHJvbCBwbGFjZW1lbnQgdGVzdHM6IFB1dCB0aGUgZWRpdCBib3ggaW4gYSBwYXJlbnQKCSAgd2luZG93LgoJLSBUaWRpZWQgdXAgdGhlIGVkaXQgY29udHJvbCB0ZXN0cy4KCgkqIGRsbHMvbXNpL3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMvbXNpL3Rlc3RzL01ha2VmaWxlLmluLAoJICBkbGxzL21zaS90ZXN0cy9wYWNrYWdlLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJVGVzdCBjcmVhdGluZyBhIHBhY2thZ2UuCgoJKiBkbGxzL21zaS9hY3Rpb24uYywgZGxscy9tc2kvYWN0aW9uLmgsIGRsbHMvbXNpL2hlbHBlcnMuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUF2b2lkIGZpeGVkIGxlbmd0aCBidWZmZXJzIGZvciBjb25kaXRpb25zLgoKCSogZGxscy9tc2kvaW5zdGFsbC5jLCBkbGxzL21zaS9tc2lwcml2LmgsIGRsbHMvbXNpL3N1bWluZm8uYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVzIGZvciBNc2lHZXRTb3VyY2VQYXRoIHBhcmFtZXRlciBoYW5kbGluZy4KCgkqIGRsbHMvbXNpL21zaS5jLCBkbGxzL21zaS9tc2kuc3BlYywgaW5jbHVkZS9tc2kuaDoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglBZGRlZCBzdHViIGltcGxlbWVudGF0aW9ucyBmb3IgTXNpRW51bVBhdGNoZXNBL1cuCgoJKiBkbGxzL3NobHdhcGkvc2hsd2FwaS5yYywgZGxscy9zaGx3YXBpL3ZlcnNpb24ucmM6CglTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCUFkZGVkIHZlcnNpb24gcmVzb3VyY2UgdG8gc2hsd2FwaS5kbGwuCgoJKiBkbGxzL2RpbnB1dC9lZmZlY3RfbGludXhpbnB1dC5jLCBkbGxzL2RpbnB1dC9qb3lzdGlja19saW51eGlucHV0LmM6CglEYW5pZWwgUmVtZW5hayA8ZHRyZW1lbmFrQGdtYWlsLmNvbT4KCS0gQWxsb3cgdGhlIGNyZWF0aW9uIG9mIGFuIEZGIGVmZmVjdCB3aGlsZSB0aGUgam95c3RpY2sgaXMgbm90CgkgIGFjcXVpcmVkLgoJLSBGYWlsaW5nIHRvIGRvd25sb2FkIGFuIGVmZmVjdCBhZnRlciBzZXR0aW5nIHBhcmFtZXRlcnMgaXMgbm90IGEKCSAgZmF0YWwgZXJyb3IuCgoJKiBkbGxzL2NyeXB0MzIvZW5jb2RlLmMsIGRsbHMvY3J5cHQzMi90ZXN0cy9lbmNvZGUuYywKCSAgZGxscy9ycGNydDQvbmRyX29sZS5jLCBkbGxzL3JwY3J0NC9ycGNfYmluZGluZy5jLAoJICBkbGxzL3JwY3J0NC90ZXN0cy9ycGMuYywgZGxscy91eHRoZW1lL3N5c3RlbS5jLAoJICBwcm9ncmFtcy93aW5oZWxwL2hscGZpbGUuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBnY2MgNC4wIHdhcm5pbmdzLgoKCSogZGxscy9rZXJuZWwvcHJvY2Vzcy5jLCBkbGxzL2tlcm5lbC90b29saGVscC5jLCBkbGxzL250ZGxsL3Byb2Nlc3MuYywKCSAgaW5jbHVkZS93aW50ZXJubC5oLCBzZXJ2ZXIvcHJvY2Vzcy5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CgktIHJld3JpdGUga2VybmVsMzI6e1NldHxHZXR9UHJpb3JpdHlDbGFzcyBvbiB0b3Agb2YgbnRkbGwgZXF1aXZhbGVudAoJLSBwcmlvcml0eSBmb3IgcHJvY2VzcyBpbiB3aW5lc2VydmVyIGlzIG5vdyB0aGUgTlRETEwgZm9ybSAobm8gbG9uZ2VyCgkgIHRoZSBrZXJuZWwzMiBvbmUpCgoJKiBkbGxzL21zaS9oZWxwZXJzLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZSBhbiB1bm5lY2Vzc2FyeSBsZXZlbCBvZiBpbmRlbnQuCgoJKiBpbmNsdWRlL21zaS5oOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBZGQgdGhlIElOU1RBTExNT0RFIGVudW1lcmF0aW9uLgoKCSogZGxscy9tc2kvc3VtaW5mby5jLCBkbGxzL21zaS90ZXN0cy9zdW1pbmZvLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CgktIGZpeCBNc2lTdW1tYXJ5SW5mb0dldFByb3BlcnR5IHRvIHJldHVybiBFUlJPUl9NT1JFX0RBVEEgaWYgdGhlCgkgIGJ1ZmZlciBpcyB0b28gc21hbGwgKGJhc2VkIG9uIGEgcGF0Y2ggYnkgQXJpYyBTdGV3YXJ0KQoJLSBhZGQgYSB0ZXN0IGNhc2UgdG8gc2hvdyBjb3JyZWN0IGJlaGF2aW91cgoKCSogZGxscy9jb21tZGxnL3ByaW50ZGxnMTYuYzogTWFyY3VzIE1laXNzbmVyIDxtZWlzc25lckBzdXNlLmRlPgoJUHJpbnREbGcxNjogQ29weSBiYWNrIHRoZSBGbGFncywgbkZyb21QYWdlLCBuVG9QYWdlIGFuZCBuQ29waWVzIHN0cnVjdAoJbWVtYmVycyBhZnRlciB0aGUgcHJpbnQgZGlhbG9nIGZpbmlzaGVzLgoKCSogZGxscy9kaW5wdXQvam95c3RpY2tfbGludXhpbnB1dC5jOgoJRGFuaWVsIFJlbWVuYWsgPGR0cmVtZW5ha0BnbWFpbC5jb20+CgktIEFsbG93IGVudW1lcmF0aW9uIG9mIG9iamVjdHMgd2hlbiB0aGUgZGV2aWNlIGlzIG5vdCB5ZXQgYWNxdWlyZWQuCgktIEZsYWcgRkYtY2FwYWJsZSBheGVzIGR1cmluZyBlbnVtZXJhdGlvbi4KCgkqIGRsbHMva2VybmVsL3RodW5rLmMsIGRsbHMvbXN2Y3J0L21pc2MuYywgZGxscy9vbGUzMi9lcnJvcmluZm8uYywKCSAgaW5jbHVkZS9kYmdoZWxwLmgsIGluY2x1ZGUvc3FsZXh0Lmg6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVzIGZvciBmdW5jdGlvbiBwcm90b3R5cGVzIHdpdGhvdXQgYXJndW1lbnRzLgoKCSogZGxscy91cmxtb24vTWFrZWZpbGUuaW4sIGRsbHMvdXJsbW9uL2ZpbGUuYywKCSAgZGxscy91cmxtb24vdGVzdHMvLmN2c2lnbm9yZSwgZGxscy91cmxtb24vdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvdXJsbW9uL3Rlc3RzL3Byb3RvY29sLmMsIGRsbHMvdXJsbW9uL3VybG1vbl9tYWluLmMsCgkgIGRsbHMvdXJsbW9uL3VybG1vbl9tYWluLmg6CglKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJQWRkZWQgZmlsZSBwcm90b2NvbCBpbXBsZW1lbnRhdGlvbi4KCgkqIGRsbHMvbnRkbGwvYXRvbS5jLCBpbmNsdWRlL3dpbnRlcm5sLmg6CglKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCUNvcnJlY3QgdGhpcmQgcGFyYW1ldGVyIG9mIE50UXVlcnlJbmZvcm1hdGlvbkF0b20uCgoJKiBmb250cy93aW5lX21hcmxldHQuc2ZkOiBSaWNoYXJkIENvaGVuIDxyaWNoYXJkQGRhaWpvYnUuY28udWs+CglSZWRyYXcgIlJlc3RvcmUgd2luZG93IiB3aXRob3V0IG92ZXJsYXBwaW5nIHNwbGluZXMuCgoJKiBkbGxzL21zaS9hY3Rpb24uaCwgZGxscy9tc2kvY2xhc3Nlcy5jLCBkbGxzL21zaS9oZWxwZXJzLmMsCgkgIGRsbHMvbXNpL21zaXByaXYuaCwgZGxscy9tc2kvcGFja2FnZS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQ29udmVydCBwcm9naWRzIHRvIGEgc3RhbmRhcmQgbGlzdC4KCgkqIHByb2dyYW1zL3dpbmVjZmcvUnUucmM6IFl1cmkgS296bG92IDxrb3psb3YueUBnbWFpbC5jb20+CglVcGRhdGVkIFJ1c3NpYW4gcmVzb3VyY2VzLgoKCSogZGxscy9hZHZwYWNrL2FkdnBhY2suYywgZGxscy9hZHZwYWNrL2FkdnBhY2suc3BlYzoKCU1hcmt1cyBBbXNsZXIgPG1hcmt1cy5hbXNsZXJAb3JpYmkub3JnPgoJQWRkIGEgc3R1YiBmb3IgSXNOdEFkbWluLgoKCSogZGxscy9rZXJuZWwvcHJvY2Vzcy5jOiBJdmFuIExlbyBQdW90aSA8aXZhbmxlb0BnbWFpbC5jb20+CglHZXQgRXhpdFByb2Nlc3MgdG8gY2FsbCBOdFRlcm1pbmF0ZVByb2Nlc3MuCgoJKiBkbGxzL21zaS9kYXRhYmFzZS5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQWRkIHRoZSBHVUlEIGZvciBQYXRjaCBmaWxlcyBzbyB0aGF0IHRoZXkgY2FuIGJlIG9wZW5lZCBhcyB3ZWxsLiBMb29rcwoJbGlrZSB0aGUgZGF0YWJhc2Ugc3RydWN0dXJlIGlzIHByZXR0eSBtdWNoIHRoZSBzYW1lLgoKCSogZGxscy9nZGkvZnJlZXR5cGUuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUJ1aWxkIGEgbGlzdCBvZiBmb250IGxpbmtzIHJlYWQgaW4gZnJvbSB0aGUgcmVnaXN0cnkuCgoJKiB0b29scy93aW5hcGkvd2luYXBpX21vZHVsZV91c2VyLnBtLCB0b29scy93aW5hcGkvd2luYXBpX3BhcnNlci5wbToKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJJ3ZvbGF0aWxlJyBpcyB2YWxpZCBldmVyeXdoZXJlIHdoZXJlICdjb25zdCcgaXMgdmFsaWQuIFRoaXMgZml4ZXMKCXBhcnNpbmcgb2YgdGhlIG5ldyBJbnRlcmxvY2tlZEV4Y2hhbmdlKCkgcHJvdG90eXBlLgoKCSogZGxscy90d2Fpbi9kc21fY3RybC5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglEb24ndCBjcmFzaCBpZiB0aGUgdHdhaW4gZGV2aWNlIG5hbWUgaXMgbnVsbC4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jLCBkbGxzL21zaS9zb3VyY2UuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2Ugc29tZSBmaXhtZSBtZXNzYWdlcyBsZXNzIGFsYXJtaXN0LgoKCSogZGxscy9zZXR1cGFwaS9GaS5yYywgZGxscy9zZXR1cGFwaS9zZXR1cGFwaS5yYywKCSAgcHJvZ3JhbXMvd2luZWNmZy9GaS5yYywgcHJvZ3JhbXMvd2luZWNmZy93aW5lY2ZnLnJjOgoJS2ltbW8gTXlsbHl2aXJ0YSA8a2ltbW8ubXlsbHl2aXJ0YUBnbWFpbC5jb20+CglBZGRlZCBGaW5uaXNoIHJlc291cmNlcy4KCgkqIGRsbHMva2VybmVsL2luc3RyLmM6IFBoaWwgS3J5bG92IDxwaGlsQG5ld3N0YXIucmluZXQucnU+CglGaXhlZCBjb21waWxhdGlvbiBvZiBrZXJuZWwzMi5kbGwuc28gb24gbm9uLXg4NiBwcm9jZXNzb3JzLgoKCSogaW5jbHVkZS91cmxtb24uaWRsOiBKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJLSBVcGRhdGUgR2V0U2VjdXJpdHlJZCBkZWNsYXJhdGlvbi4KCS0gQWRkIGRlY2xhcmF0aW9uIG9mIENvSW50ZXJuZXRQYXJzZVVybCBhbmQgSU5FVF9FX0RFRkFVTFRfQUNUSU9OLgoKCSogZGxscy9tc2kvdGVzdHMvZGIuYzogU2F1bGl1cyBLcmFzdWNrYXMgPHNhdWxpdXMua3Jhc3Vja2FzQGllZWUub3JnPgoJT2xkZXIgcGxhdGZvcm1zIGNob2tlIG9uIGEgTlVMTCBhcyB0aGUgdGhpcmQgcGFyYW1ldGVyIHRvCglNc2lWaWV3R2V0RXJyb3IuCgoJKiBkbGxzL2hoY3RybC5vY3gvTWFrZWZpbGUuaW4sIGRsbHMvaGhjdHJsLm9jeC9jaG0uYywKCSAgZGxscy9oaGN0cmwub2N4L2NobS5oLCBkbGxzL2hoY3RybC5vY3gvaGVscC5jOgoJSmFtZXMgSGF3a2lucyA8dHJ1aWtlbkBnbWFpbC5jb20+CgktIEFkZCB0aGUgQ0hNIFV0aWxpdHkgQVBJLgoJLSBMb2FkIGhlbHAgd2luZG93IHZhbHVlcyBmcm9tIHRoZSBDSE0gZmlsZS4KCgkqIGRsbHMvd2ludHJ1c3QvLmN2c2lnbm9yZSwgZGxscy93aW50cnVzdC9NYWtlZmlsZS5pbiwKCSAgZGxscy93aW50cnVzdC92ZXJzaW9uLnJjOgoJU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtTGluZS5jb20+CglBZGRlZCB2ZXJzaW9uIHJlc291cmNlIHRvIHdpbnRydXN0LmRsbC4KCgkqIGRsbHMvZGlucHV0L2pveXN0aWNrX2xpbnV4aW5wdXQuYzoKCURhbmllbCBSZW1lbmFrIDxkdHJlbWVuYWtAZ21haWwuY29tPgoJUHJvdGVjdCBGRl9TVEFUVVMgdXNhZ2UgdG8gYXZvaWQgY29tcGlsZSBlcnJvcnMgb24gbWFjaGluZXMgd2l0aCBvbGQKCWxpbnV4L2lucHV0LmguCgoJKiBkbGxzL3V4dGhlbWUvbXNzdHlsZXMuYzogR2VyYWxkIFBmZWlmZXIgPGdlcmFsZEBwZmVpZmVyLmNvbT4KCSNpbmNsdWRlIDxzdGRsaWIuaD4gdG8gZ2V0IGFicygpIHByb3RvdHlwZS4KCjIwMDUtMDktMDMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYzoKCVdlIHNob3VsZG4ndCB1c2UgZmxhdCBuYW1lc3BhY2UgZm9yIGRsbHMgb24gTWFjIE9TLiBBbHNvIGRvbid0IGhpZGUKCXVuZGVmaW5lZCBzeW1ib2wgZXJyb3JzLgoKCSogdG9vbHMvd2luZWJ1aWxkL2J1aWxkLmgsIHRvb2xzL3dpbmVidWlsZC9pbXBvcnQuYywKCSAgdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jOgoJT3V0cHV0IHRoZSBkZWxheWVkIGltcG9ydCB0YWJsZSB1c2luZyBhc3NlbWJseSB0b28uCgoJKiB0b29scy93aW5lZ2NjL3dpbmVnY2MuYzogSW1wbGVtZW50ZWQgLS1pbWFnZS1iYXNlIHN1cHBvcnQgZm9yIE1hYyBPUy4KCgkqIGRsbHMva2VybmVsL3B0aHJlYWQuYywgZGxscy9rZXJuZWwvdGhyZWFkLmMsIGRsbHMvbnRkbGwvc2VydmVyLmMsCgkgIGRsbHMvbnRkbGwvdGhyZWFkLmMsIGluY2x1ZGUvd2luZS9wdGhyZWFkLmgsIGxpYnMvd2luZS9wb3J0LmMsCgkgIGxpYnMvd2luZS93aW5lLmRlZiwgbGlicy93aW5lL3dpbmUubWFwLCBsb2FkZXIva3RocmVhZC5jLAoJICBsb2FkZXIvbWFpbi5jLCBsb2FkZXIvbWFpbi5oLCBsb2FkZXIvcHRocmVhZC5jOgoJVXNlIGV4cGxpY2l0IGZ1bmN0aW9uIHBvaW50ZXJzIGZvciBwdGhyZWFkIHN1cHBvcnQgaW5zdGVhZCBvZiByZWx5aW5nCglvbiBFTEYgc3ltYm9sIG92ZXJyaWRpbmcuCgoJKiBkbGxzL3dpbmVjcnQwL2RsbF9lbnRyeS5jOgoJTWFrZSBzdXJlIHRvIGFsd2F5cyBjYWxsIHRoZSBkZXN0cnVjdG9ycyB3aGVuIHRoZSBjb25zdHJ1Y3RvcnMgaGF2ZQoJYmVlbiBjYWxsZWQgZnJvbSB0aGUgZGxsIGVudHJ5IHBvaW50LgoKCSogcHJvZ3JhbXMvd2luZWNmZy9ObC5yYzogUGF1bCBWcmllbnMgPFBhdWwuVnJpZW5zQHhzNGFsbC5ubD4KCVVwZGF0ZSBmb3IgdGhlICdJbnN0YWxsIHRoZW1lJyBidXR0b24uCgoJKiBkbGxzL3VybG1vbi9mb3JtYXQuYywgZGxscy91cmxtb24vdGVzdHMvbWlzYy5jLAoJICBkbGxzL3VybG1vbi91cmxtb24uc3BlYzoKCUphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglBZGRlZCBSZWdpc3RlckZvcm1hdEVudW1lcmF0b3IgYW5kIFJldm9rZUZvcm1hdEVudW1lcmF0b3IKCWltcGxlbWVudGF0aW9uLgoKCSogZGxscy9jcnlwdDMyL2NlcnQuYywgZGxscy9jcnlwdDMyL3Rlc3RzL2NlcnQuYzoKCUp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCUNvcnJlY3QgYSB0ZXN0IHRoYXQgaW5jb3JyZWN0bHkgc2hvd2VkIHNpZ25lZCBjZXJ0cyBjb3VsZG4ndCBiZSBhZGRlZAoJdG8gYSBtZW0gc3RvcmUuCglTdXBwb3J0IHNpZ25lZCBjZXJ0cyBpbiBtZW0gc3RvcmVzLgoJQ29ycmVjdCB1c2Ugb2YgYSBmcmVlZCBwb2ludGVyLgoKCSogZGxscy9kaW5wdXQvam95c3RpY2tfbGludXhpbnB1dC5jOgoJRGFuaWVsIFJlbWVuYWsgPGR0cmVtZW5ha0BnbWFpbC5jb20+CglJbXBsZW1lbnQgRW51bUVmZmVjdHMsIENyZWF0ZUVmZmVjdCwgRW51bUNyZWF0ZWRFZmZlY3RzLAoJU2VuZEZvcmNlRmVlZGJhY2tDb21tYW5kLCBhbmQgR2V0Rm9yY2VGZWVkYmFja1N0YXR1cyBmb3IgbGludXggaW5wdXQKCWpveXN0aWNrcy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL21zeG1sMy9NYWtlZmlsZS5pbiwKCSAgZGxscy9tc3htbDMvbXN4bWxfcHJpdmF0ZS5oLCBkbGxzL21zeG1sMy9ub2RlLmMsCgkgIGRsbHMvbXN4bWwzL25vZGVsaXN0LmMsIGluY2x1ZGUvY29uZmlnLmguaW46CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnRlZCBJWE1MRE9NTm9kZTo6c2VsZWN0Tm9kZXMuCgoJKiBkbGxzL3dpbmVjcnQwL2Rydl9lbnRyeS5jOgoJVGhlcmUncyBubyB3YXkgdG8gcHJvcGVybHkgdW5sb2FkIGEgZHJpdmVyLCBzbyBkb24ndCB0cnkuCgoJKiBkbGxzL3NoZWxsMzIvdGVzdHMvc2hlbGxwYXRoLmM6IEp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCUZpeCBhIHRlc3QgZmFpbGluZyBvbiBXaW5kb3dzLiAgUmVwb3J0ZWQgYnkgS2F0ZXJpbmEgTml6aG5pay4KCgkqIGRsbHMvY3J5cHQzMi9tYWluLmMsIGRsbHMvY3J5cHQzMi90ZXN0cy9tYWluLmM6CglKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglJbXByb3ZlIENyeXB0QWxnSWRUb09JRC9DcnlwdE9JRFRvQWxnSWQgdGVzdHMsIGFuZCBwcmV2ZW50IGEgY3Jhc2ggaW4KCUNyeXB0T0lEVG9BbGdJZC4KCgkqIGRsbHMvd2luZWQzZC9kZXZpY2UuYzogT2xpdmVyIFN0aWViZXIgPG9saXZlcl9zdGllYmVyQHlhaG9vLmNvLnVrPgoJSW1wbGVtZW50ZWQgcG9pbnQgc3ByaXRlcyB1c2luZyBBUkJfUE9JTlRfU1BSSVRFIGV4dGVuc2lvbi4KCgkqIGRsbHMvdXJsbW9uL3Rlc3RzL01ha2VmaWxlLmluLCBkbGxzL3VybG1vbi90ZXN0cy91cmwuYywKCSAgZGxscy91cmxtb24vdW1vbi5jOgoJSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCUFkZGVkIENyZWF0ZUFzeW5jQmluZEN0eEV4IGltcGxlbWVudGF0aW9uLgoKCSogZGxscy9jcnlwdDMyL2VuY29kZS5jLCBkbGxzL2NyeXB0MzIvdGVzdHMvZW5jb2RlLmM6CglKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglDb3JyZWN0IGEgYnVuY2ggb2YgbHVya2luZyBhc24uMSBkZWNvZGUgYnVncy4KCjIwMDUtMDktMDIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB0b29scy93aW5lYnVpbGQvYnVpbGQuaCwgdG9vbHMvd2luZWJ1aWxkL2ltcG9ydC5jLAoJICB0b29scy93aW5lYnVpbGQvc3BlYzMyLmM6CglPdXRwdXQgdGhlIGltcG9ydCBkaXJlY3RvcnkgdXNpbmcgYXNzZW1ibHkgaW5zdGVhZCBvZiBDIHN0cnVjdHVyZXMuCgoJKiBkbGxzL3dpbmVjcnQwL01ha2VmaWxlLmluLCBkbGxzL3dpbmVjcnQwL2Rydl9lbnRyeS5jLAoJICB0b29scy93aW5lYnVpbGQvaW1wb3J0LmM6CglBZGRlZCBhbiBlbnRyeSBwb2ludCByb3V0aW5lIGZvciBuYXRpdmUgZHJpdmVycy4KCgkqIGRsbHMvYXRsL3JlZ2lzdHJhci5jLCBkbGxzL2F0bC9yc3JjLnJjOgoJU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtTGluZS5jb20+CglGaXhlZCBpZCBvZiB0aGUgUkVHSVNUUlkgcmVzb3VyY2UuCgoJKiBkbGxzL2RpbnB1dC9NYWtlZmlsZS5pbiwgZGxscy9kaW5wdXQvZWZmZWN0X2xpbnV4aW5wdXQuYzoKCURhbmllbCBSZW1lbmFrIDxkdHJlbWVuYWtAZ21haWwuY29tPgoJQWRkZWQgYSBsaW51eCBpbnB1dCBzeXN0ZW0gZm9yY2UgZmVlZGJhY2sgZWZmZWN0IGltcGxlbWVudGF0aW9uLgoKCSogZGxscy9tc2h0bWwvbnNlbWJlZC5jOiBGaXhlZCBDOTkgZGVjbGFyYXRpb24uCgoJKiBkbGxzL2RiZ2hlbHAvZWxmX21vZHVsZS5jLCBkbGxzL2RiZ2hlbHAvbXNjLmMsCgkgIGRsbHMvZGJnaGVscC9tc2N2cGRiLmgsIGRsbHMvZGJnaGVscC9wZV9tb2R1bGUuYywgZGxscy9udGRsbC9jZHJvbS5jLAoJICBkbGxzL250ZGxsL2xvYWRlci5jLCBkbGxzL250ZGxsL250LmMsIGRsbHMvbnRkbGwvdGVzdHMvcnRsLmMsCgkgIGRsbHMvbnRkbGwvdGltZS5jLCBwcm9ncmFtcy9wcm9nbWFuL2dycGZpbGUuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBnY2MgNC4wIHdhcm5pbmdzLgoKCSogZGxscy93aW5lY3J0MC9NYWtlZmlsZS5pbiwgZGxscy93aW5lY3J0MC9jcnQwX3ByaXZhdGUuaCwKCSAgZGxscy93aW5lY3J0MC9kbGxfZW50cnkuYywgZGxscy93aW5lY3J0MC9leGVfZW50cnkuYywKCSAgZGxscy93aW5lY3J0MC9leGVfd2VudHJ5LmMsIGRsbHMvd2luZWNydDAvaW5pdC5jLAoJICBpbmNsdWRlL3dpbmUvbGlicmFyeS5oLCB0b29scy93aW5lYnVpbGQvc3BlYzMyLmM6CglNb3ZlZCB0aGUgc3BlYyBmaWxlIGluaXQgZnVuY3Rpb24gYW5kIGNvbnN0cnVjdG9yIHRvIHdpbmVjcnQwLgoKCSogZGxscy9tc2kvYWN0aW9uLmgsIGRsbHMvbXNpL2NsYXNzZXMuYywgZGxscy9tc2kvaGVscGVycy5jLAoJICBkbGxzL21zaS9tc2lwcml2Lmg6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CgktIGNvbnZlcnQgdmVyYnMgaW50byBhIHN0YW5kYXJkIGxpc3QKCS0gcmVtb3ZlIGxpbWl0YXRpb24gb2YgMTAwIHZlcmJzCgktIHVzZSBwb2ludGVycyB0byB2ZXJicyByYXRoZXIgdGhhbiBpbmRleGVzCgoJKiBkbGxzL2NyeXB0MzIvZW5jb2RlLmMsIGRsbHMvY3J5cHQzMi90ZXN0cy9lbmNvZGUuYzoKCUp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCUltcGxlbWVudCBlbmNvZGluZy9kZWNvZGluZyBSU0EgcHVibGljIGtleXMuCgoJKiBkbGxzL2NyeXB0MzIvY2VydC5jLCBkbGxzL2NyeXB0MzIvdGVzdHMvY2VydC5jOgoJSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJSW1wbGVtZW50IENlcnRBZGRTZXJpYWxpemVkRWxlbWVudFRvU3RvcmUuCgoJKiBkbGxzL250ZGxsL3NlcnZlci5jOiBGaXhlZCBhIGZpbGUgZGVzY3JpcHRvciBsZWFrLgoKCSogZGxscy91eHRoZW1lL01ha2VmaWxlLmluLCBkbGxzL3V4dGhlbWUvbXNzdHlsZXMuYywKCSAgZGxscy91eHRoZW1lL3N5c3RlbS5jOgoJRnJhbmsgUmljaHRlciA8ZnJhbmsucmljaHRlckBnbWFpbC5jb20+CglSZW1vdmUgc2hsd2FwaSBkZXBlbmRlbmN5LgoKCSogTWFrZWZpbGUuaW46IENsZWFuIE1ha2VpbXBsaWIucnVsZXMgdG9vLgoKCSogZGxscy9kc291bmQvdGVzdHMvZHMzZC5jLCBkbGxzL2Rzb3VuZC90ZXN0cy9kczNkOC5jLAoJICBkbGxzL21hcGkzMi90ZXN0cy9wcm9wLmMsIGRsbHMvbXN2Y3J0L2RhdGEuYywgZGxscy9tc3ZjcnQvZmlsZS5jLAoJICBkbGxzL21zdmNydC9tc3ZjcnQuaCwgZGxscy9xY2FwL3Y0bC5jLCBkbGxzL3dpbm1tL3dhdmVtYXAvd2F2ZW1hcC5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IGdjYyA0LjAgd2FybmluZ3MuCgoJKiBkbGxzL2NyeXB0MzIvZW5jb2RlLmMsIGRsbHMvY3J5cHQzMi9wcm90ZWN0ZGF0YS5jLAoJICBpbmNsdWRlL2NvbW1jdHJsLmg6CglLZXZpbiBLb2x0emF1IDxrZXZpbkBwbG9wLm9yZz4KCUZpeCB3YXJuaW5ncyBpbiA2NGJpdC4KCgkqIGRsbHMvbXNodG1sL21zaHRtbF9wcml2YXRlLmgsIGRsbHMvbXNodG1sL25zZW1iZWQuYywKCSAgZGxscy9tc2h0bWwvbnNpZmFjZS5pZGwsIGRsbHMvbXNodG1sL3BlcnNpc3QuYzoKCUphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglCZWdpbm5pbmcgaW1wbGVtZW50YXRpb24gb2Ygb25sb2FkIHJvdXRpbmUuCgoJKiBpbmNsdWRlLy5jdnNpZ25vcmUsIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvb2Jqc2FmZS5pZGw6CglUcm95IFJvbGxvIDx3aW5lQHRyb3kucm9sbG8ubmFtZT4KCUFkZGVkIG9ianNhZmUuaWRsIGZvciBJT2JqZWN0U2FmZXR5IGludGVyZmFjZS4KCgkqIGluY2x1ZGUvZ3VpZGRlZi5oOiBUcm95IFJvbGxvIDx3aW5lQHRyb3kucm9sbG8ubmFtZT4KCUZvciBDKyssIGRlY2xhcmUgaW5pdGlhbGlzZWQgR1VJRHMgdG8gYmUgImV4dGVybiBjb25zdCIgcmF0aGVyIHRoYW4KCWp1c3QgImNvbnN0IiB0byBlbnN1cmUgdGhhdCB0aGUgaW5pdGlhbGlzZWQgR1VJRCBpcyB2aXNpYmxlIHRvIG90aGVyCgltb2R1bGVzLCBhbmQgdXNlIEVYVEVSTl9DIHJhdGhlciB0aGFuIGp1c3QgImV4dGVybiIgZm9yIHRoZSBiZW5lZml0IG9mCglNU1ZDKyssIHdoaWNoIGRvZXMgbmFtZSBtYW5nbGluZyBvbiBnbG9iYWwgdmFyaWFibGVzLgoKCSogZGxscy91cmxtb24vTWFrZWZpbGUuaW4sIGRsbHMvdXJsbW9uL2Zvcm1hdC5jLAoJICBkbGxzL3VybG1vbi91cmxtb24uc3BlYywgZGxscy91cmxtb24vdGVzdHMvLmN2c2lnbm9yZSwKCSAgZGxscy91cmxtb24vdGVzdHMvTWFrZWZpbGUuaW4sIGRsbHMvdXJsbW9uL3Rlc3RzL21pc2MuYywKCSAgaW5jbHVkZS91cmxtb24uaWRsOgoJSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCUFkZGVkIENyZWF0ZUZvcm1hdEVudW1lcmF0b3IgaW1wbGVtZW50YXRpb24uCgoJKiBkbGxzL2NvbW1kbGcvY2RsZzMyLmMsIGRsbHMvY29tbWRsZy9jb2xvcmRsZy5jLAoJICBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jLCBkbGxzL2NvbW1kbGcvZm9udGRsZy5jLAoJICBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYywgaW5jbHVkZS9zaG9iamlkbC5pZGwsCgkgIGRsbHMvc2hlbGwzMi9icnNmb2xkZXIuYywgZGxscy9zaGVsbDMyL2NvbnRyb2wuYywgZGxscy9zaGVsbDMyL2RkZS5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwKCSAgZGxscy9zaGVsbDMyL3NoZWxsbGluay5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywKCSAgZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jLCBkbGxzL3NoZWxsMzIvc2hsZXhlYy5jLAoJICBkbGxzL3NoZWxsMzIvc2hsbWVudS5jLCBkbGxzL3NoZWxsMzIvc2h2X2JnX2NtZW51LmMsCgkgIGRsbHMvc2hlbGwzMi9zaHZfaXRlbV9jbWVudS5jLCBpbmNsdWRlL3NoZWxsYXBpLmg6CglLZXZpbiBLb2x0emF1IDxrZXZpbkBwbG9wLm9yZz4KCUZpeCB3YXJuaW5ncyBpbiA2NGJpdC4KCgkqIGRsbHMvbXNpL2NsYXNzZXMuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWRkIG9iamVjdHMgdG8gbGlzdHMgYXQgdGhlIHJpZ2h0IHRpbWUuCgoJKiBpbmNsdWRlL3dpbmNyeXB0Lmg6IEp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCU1vcmUgZGVmaW5pdGlvbnMgYW5kIHByb3RvdHlwZXMuCgoJKiBpbmNsdWRlL2RpbnB1dC5oOiBEYW5pZWwgUmVtZW5hayA8ZHRyZW1lbmFrQGdtYWlsLmNvbT4KCUFkZCBkZWZpbml0aW9ucyBmb3IgZm9yY2UgZmVlZGJhY2sgY29tbWFuZCBhbmQgc3RhdHVzIGZsYWdzLgoKCSogZGxscy9xdWFydHovZmlsdGVyZ3JhcGguYzogQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJRm9yd2FyZCBjYWxscyBvZiBJQmFzaWMqIGFuZCBJVmlkZW9XaW5kb3cgaW50ZXJmYWNlcyBvZiB0aGUKCWZpbHRlcmdyYXBoIHRvIHRoZSByaWdodCBmaWx0ZXIuCgoJKiBwcm9ncmFtcy93aW5lY2ZnL3RoZW1lLmM6IEZyYW5rIFJpY2h0ZXIgPGZyYW5rLnJpY2h0ZXJAZ21haWwuY29tPgoJU2luY2UgdXh0aGVtZSBhbHNvIHJldHVybnMgYSBmcmllbmRseSBkaXNwbGF5IG5hbWUgZnJvbQoJRW51bVRoZW1lQ29sb3JzKCkgYW5kIEVudW1UaGVtZVNpemVzKCkgdXNlIHRoYXQgaW4gdGhlIGNvbG9yL3NpemUKCWNvbWJvcy4KCgkqIGRsbHMvcnBjcnQ0L25kcl9tYXJzaGFsbC5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIEltcGxlbWVudCBtb3N0IG9mIHRoZSBkZXRhaWxzIGFyb3VuZCB1bm1hcnNoYWxsaW5nIG9mIGFuIG9iamVjdAoJICBwb2ludGVyLgoJLSBGaXggYWxsb2NhdGlvbiBzY2hlbWUgaW4gTmRyQ29uZm9ybWFudEFycmF5VW5tYXJzaGFsIHRvIGFsbG9jYXRlIGlmCgkgICpwcE1lbW9yeSBpcyBOVUxMLCBsaWtlIGNvbXBsZXggc3RydWN0IGFuZCB1c2VyIHR5cGUgdW5tYXJzaGFsbGluZy4KCgkqIGRsbHMvb2xlMzIvZGNvbS5pZGw6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCVRoZSBbc3RyaW5nXSBhdHRyaWJ1dGUgaXMgb25seSB2YWxpZCBvbiBieXRlLCBjaGFyIGFuZCB3Y2hhcl90IHR5cGVzLAoJc28gcmVwbGFjZSAidW5zaWduZWQgc2hvcnQiIGJ5ICJXQ0hBUiIuCgoJKiBkbGxzL29sZWF1dDMyL3Vzcm1hcnNoYWwuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJQWRkIFZUX1VOS05PV04gc3VwcG9ydCBmb3IgVkFSSUFOVCBtYXJzaGFsaW5nIGJ5IGdlbmVyYWxpc2luZyB0aGUKCWV4aXN0aW5nIFZUX0RJU1BBVENIIGNvZGUuCgoJKiBkbGxzL29sZTMyL2NvbXBvYmpfcHJpdmF0ZS5oLCBkbGxzL29sZTMyL21hcnNoYWwuYywKCSAgZGxscy9vbGUzMi9zdHVibWFuYWdlci5jOgoJTWlrZSBIZWFybiA8bWhAY29kZXdlYXZlcnMuY29tPgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJQ2hhbmdlIHN0dWIgbWFuYWdlciB0byB0cmFjayB0aGUgbnVtYmVyIG9mIG5vcm1hbCBtYXJzaGFscyBpbnN0ZWFkIG9mCgl1c2luZyB0aGUgc3RhdGUgbWFjaGluZSBzbyB0aGF0IG11bHRpcGxlIG1hcnNoYWxzIG9mIHRoZSBzYW1lIG9iamVjdAoJYW5kIGludGVyZmFjZSB3b3JrIGNvcnJlY3RseS4KCgkqIGRsbHMvbXNodG1sL29sZXduZC5jOiBKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJTWFrZSBPbGVJblBsYWNlT2JqZWN0V2luZG93bGVzc1Z0YmwgY29uc3QuCgoJKiBkbGxzL3NoZWxsMzIvc2hmbGRyX3VuaXhmcy5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVRyYW5zbGF0ZSBmaWxlIG5hbWUgZnJvbSB1bml4IHRvIEFOU0kgZW5jb2RpbmcgaW4KCVVuaXhGb2xkZXJfSVNoZWxsRm9sZGVyMl9HZXREaXNwbGF5TmFtZU9mLgoKCSogZGxscy93aW5lZDNkL2RldmljZS5jOiBPbGl2ZXIgU3RpZWJlciA8b2xpdmVyX3N0aWViZXJAeWFob28uY28udWs+CglBZGRlZCB0aGUgdHJhY2tpbmcgb2Ygc3RyZWFtIGZyZXF1ZW5jeSBhbmQgZmxhZ3MuIFN0cmVhbSBmbGFncyBhbmQKCWZyZXF1ZW5jeSBhcmVuJ3QgaGFuZGxlZCBhdCB0aGUgbW9tZW50LgoKCSogZGxscy9tc2h0bWwvb2xlb2JqLmMsIGRsbHMvbXNodG1sL3Rlc3RzL2h0bWxkb2MuYzoKCUphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglBZGRlZCBleGVjX29uX3VubG9hZCBpbXBsZW1lbnRhdGlvbi4KCgkqIGRsbHMvd2xkYXAzMi9taXNjLmMsIGRsbHMvd2xkYXAzMi93aW5sZGFwX3ByaXZhdGUuaDoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJRml4IHRoZSBidWlsZCB3aXRob3V0IG9wZW5sZGFwIGhlYWRlcnMuCgoyMDA1LTA4LTMwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogQU5OT1VOQ0UsIENoYW5nZUxvZywgVkVSU0lPTiwgY29uZmlndXJlOiBSZWxlYXNlIDIwMDUwODMwLgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoyMDA1LTA4LTMwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jb21jdGwzMi9hbmltYXRlLmMsIGRsbHMvY29tY3RsMzIvY29tYm9leC5jLAoJICBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYywgZGxscy9jb21jdGwzMi9jb21tY3RybC5jLAoJICBkbGxzL2NvbWN0bDMyL2hlYWRlci5jLCBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jLAoJICBkbGxzL2NvbWN0bDMyL2lwYWRkcmVzcy5jLCBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmMsCgkgIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmMsIGRsbHMvY29tY3RsMzIvc3RhdHVzLmMsCgkgIGRsbHMvY29tY3RsMzIvdGFiLmMsIGRsbHMvY29tY3RsMzIvdGhlbWluZy5jLAoJICBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYywgZGxscy9jb21jdGwzMi90b29sdGlwcy5jLAoJICBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmMsIGluY2x1ZGUvY29tbWN0cmwuaCwgaW5jbHVkZS9wcnNodC5oOgoJRnJhbmsgUmljaHRlciA8ZnJhbmsucmljaHRlckBnbWFpbC5jb20+CglGaXggd2FybmluZ3MgaW4gNjRiaXQuCgoJKiBwcm9ncmFtcy93aW5lY2ZnL0RlLnJjLCBwcm9ncmFtcy93aW5lY2ZnL0VuLnJjLAoJICBwcm9ncmFtcy93aW5lY2ZnL3Jlc291cmNlLmgsIHByb2dyYW1zL3dpbmVjZmcvdGhlbWUuYzoKCUZyYW5rIFJpY2h0ZXIgPGZyYW5rLnJpY2h0ZXJAZ21haWwuY29tPgoJQWRkIGFuICJJbnN0YWxsIHRoZW1lIiBidXR0b24gdG8gdGhlIGFwcGVhcmFuY2UgcGFnZSB0byBhbGxvdwoJY29udmVuaWVudCBjb3B5aW5nIG9mIHRoZSAubXNzdHlsZXMgZmlsZSB0byB0aGUgUmlnaHQgUGxhY2UgaW5zaWRlIHRoZQoJV2luZG93cyBkaXIuCgoJKiBwcm9ncmFtcy93aW5lY2ZnL05vLnJjLCBwcm9ncmFtcy93aW5lY2ZnL3dpbmVjZmcucmM6CglBbGV4YW5kZXIgTi4gU/hybmVzIDxhbGV4QHRoZWhhbmRvZmFnb255LmNvbT4KCU5vcndlZ2lhbiB0cmFuc2xhdGlvbiBvZiB3aW5lY2ZnLgoKCSogZGxscy9jcnlwdDMyL2NlcnQuYywgZGxscy9jcnlwdDMyL3Rlc3RzL2NlcnQuYzoKCUp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCUltcGxlbWVudCBjb2xsZWN0aW9uIHN0b3Jlcy4KCgkqIGRsbHMvdXh0aGVtZS9kcmF3LmM6IEZyYW5rIFJpY2h0ZXIgPGZyYW5rLnJpY2h0ZXJAZ21haWwuY29tPgoJTW9yZSBlbGFib3JhdGUgSXNUaGVtZUJhY2tncm91bmRQYXJ0aWFsbHlUcmFuc3BhcmVudCgpIGltcGxlbWVudGF0aW9uOwoJYWxzbyByZXR1cm5zIFRSVUUgZm9yIHRoZW1lIHBhcnRzIHdpdGggMzJicHAgaW1hZ2VzLgoKCSogZGxscy9zaGVsbDMyL3NoZmxkcl91bml4ZnMuYzoKCU1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCVVzZSBGSVhNRSdzIGluIHN0dWJzIGluc3RlYWQgb2YgVFJBQ0Uncy4KCUluZmVyIHBhdGhtb2RlIGZyb20gQ0xTSUQgaW4gVW5peEZvbGRlckNvbnN0cnVjdG9yLgoJRmFpbCBpbiBJU2hlbGxGb2xkZXI6OkJpbmRUb09iamVjdCwgaWYgZm9sZGVyIGRvZXMgbm90IGluaXRpYWxpemUuCgoJKiBkbGxzL2RwbGF5eC9kcGxheS5jLCBkbGxzL2Rzb3VuZC9jYXB0dXJlLmMsIGRsbHMvZHNvdW5kL3ByaW1hcnkuYywKCSAgZGxscy9ycGNydDQvY3BzZi5jLCBkbGxzL3JwY3J0NC9uZHJfbWFyc2hhbGwuYywKCSAgZGxscy9ycGNydDQvcnBjX2VwbWFwLmMsIGRsbHMvcnBjcnQ0L3JwY19zZXJ2ZXIuYywKCSAgZGxscy9ycGNydDQvcnBjcnQ0X21haW4uYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBzb21lIGdjYyA0LjAgd2FybmluZ3MuCgoJKiBkbGxzL21zaHRtbC9EZS5yYzogSGVubmluZyBHZXJoYXJkdCA8aGVubmluZy5nZXJoYXJkdEB3ZWIuZGU+CglVcGRhdGUgdGhlIEdlcm1hbiByZXNvdXJjZSBmaWxlLgoKCSogZGxscy9zZWN1cjMyL3NlY3VyMzIuYywgZGxscy9zZWN1cjMyL3NlY3VyMzJfcHJpdi5oLAoJICBkbGxzL3NlY3VyMzIvdGVzdHMvbWFpbi5jOgoJSmFtZXMgSGF3a2lucyA8dHJ1aWtlbkBnbWFpbC5jb20+CglKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglVc2UgYSBzdGFuZGFyZCB3aW5lIGxpc3QgZm9yIHBhY2thZ2VzIGFuZCBwcm92aWRlcnMuCgoJKiBkbGxzL3V4dGhlbWUvc3lzdGVtLmMsIGRsbHMvdXh0aGVtZS91eHRoZW1lLnNwZWMsCgkgIGRsbHMvdXh0aGVtZS91eHRoZW1lZGxsLmg6CglGcmFuayBSaWNodGVyIDxmcmFuay5yaWNodGVyQGdtYWlsLmNvbT4KCUVudW1UaGVtZUNvbG9ycygpIGFuZCBFbnVtVGhlbWVTaXplcygpIGFjdHVhbGx5IGRvIG5vdCByZXR1cm4gYSBzaW5nbGUKCXN0cmluZyB3aXRoIHRoZSBjb2xvci9zaXplIG5hbWUsIGJ1dCByYXRoZXIgYSBzdHJ1Y3QgY29udGFpbmluZyB0aHJlZQoJc3RyaW5ncyAtIG5hbWUsIGRpc3BsYXkgbmFtZSBhbmQgdG9vbHRpcC4KCgkqIGRsbHMvdXh0aGVtZS9kcmF3LmM6IEZyYW5rIFJpY2h0ZXIgPGZyYW5rLnJpY2h0ZXJAZ21haWwuY29tPgoJU2luY2UgdGhlbWUgaW1hZ2VzIGFyZSByZXVzZWQgbm93IGl0J3Mgbm90IHJlYWxseSBhIGdvb2QgaWRlYSB0bwoJZGVsZXRlIHRoZW0gaW4gZHJhd2luZyBmdW5jdGlvbnMuCgoJKiBwcm9ncmFtcy93aW5lY2ZnL05sLnJjOiBQYXVsIFZyaWVucyA8UGF1bC5WcmllbnNAeHM0YWxsLm5sPgoJVXBkYXRlIHRvIHRoZSBsYXRlc3QgdGhlbWUgYW5kIHRhYiBzZXR0aW5ncy4KCgkqIGRsbHMvd2xkYXAzMi9taXNjLmMsIGRsbHMvd2xkYXAzMi93aW5sZGFwX3ByaXZhdGUuaCwKCSAgZGxscy93bGRhcDMyL3dsZGFwMzIuc3BlYzoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJSW1wbGVtZW50IGxkYXBfY291bnRfZW50cmllcywgbGRhcF9jb3VudF9yZWZlcmVuY2VzLAoJbGRhcF9maXJzdF9hdHRyaWJ1dGUqLCBsZGFwX2ZpcnN0X2VudHJ5LCBsZGFwX2ZpcnN0X3JlZmVyZW5jZSwKCWxkYXBfbmV4dF9hdHRyaWJ1dGUqLCBsZGFwX25leHRfZW50cnkgYW5kIGxkYXBfbmV4dF9yZWZlcmVuY2UuCgoyMDA1LTA4LTI5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy93aW5lY3J0MC9jcnQwX3ByaXZhdGUuaCwgZGxscy93aW5lY3J0MC9kbGxfZW50cnkuYywKCSAgZGxscy93aW5lY3J0MC9leGVfZW50cnkuYywgZGxscy93aW5lY3J0MC9leGVfd2VudHJ5LmMsCgkgIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYzoKCUF2b2lkIHVzaW5nIGNvbW1vbiBzeW1ib2xzLCB0aGV5IGFyZSBicm9rZW4gb24gTWFjIE9TLgoKCSogZGxscy91eHRoZW1lL2RyYXcuYywgZGxscy91eHRoZW1lL21zc3R5bGVzLmMsCgkgIGRsbHMvdXh0aGVtZS91eHRoZW1lZGxsLmg6CglGcmFuayBSaWNodGVyIDxmcmFuay5yaWNodGVyQGdtYWlsLmNvbT4KCVBhc3MgYXJvdW5kIHdoYXQga2luZCBvZiB0cmFuc3BhcmVuY3kgYW4gaW1hZ2UgYWN0dWFsbHkgbmVlZHMuIFVzZQoJYWxwaGEtYmxlbmRpbmcgZm9yIDMyYnBwIGltYWdlcy4KCgkqIHByb2dyYW1zL3dpbmVjZmcvdGhlbWUuYzogRnJhbmsgUmljaHRlciA8ZnJhbmsucmljaHRlckBnbWFpbC5jb20+CglNYWtlIFRIRU1FX3VwZGF0ZV9jb2xvcl9hbmRfc2l6ZSBzdGF0aWMgYW5kIGRyb3AgVEhFTUVfIHByZWZpeC4KCgkqIGRsbHMvb2xlYXV0MzIvdG1hcnNoYWwuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJTWFrZSB0eXBlbGliIG1hcnNoYWxlciB1c2UgSVJwY0NoYW5uZWxCdWZmZXI6OkdldEJ1ZmZlciBpZiBwb3NzaWJsZS4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIFNodW50IHNvbWUgdHJhY2Ugc3RhdGVtZW50cyBvdmVyIHRvIHRoZSB0eXBlbGliIGNoYW5uZWwgdGhhdCBhcmVuJ3QKCSAgcmVhbGx5IG11Y2ggdXNlIGV4Y2VwdCBpbiBkZWJ1Z2dpbmcgdHlwZWxpYiBwYXJzaW5nLgoJLSBNYWtlIHN1cmUgdG8gcmVsZWFzZSBhIHJlZmVyZW5jZSB0byBiZWluZyByZXR1cm5lZCBhcyBWYXJpYW50Q29weUluZAoJICB0YWtlcyBvbmUgZm9yIHVzLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jOiBNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglDbG9uZSBwaWRsTGFzdCBiZWZvcmUgZnJlZSdpbmcgcGlkbCBhZnRlciBjYWxsIHRvIFNIQmluZFRvUGFyZW50LgoKCSogZGxscy9zaGVsbDMyL3Rlc3RzL3NobGZvbGRlci5jOgoJTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJQWRkZWQgdGVzdCB0byBzaG93IHRoYXQgV2luZG93cyBkb2VzIG5vdCBhbGxvY2F0ZSBhIG5ldyBwaWRsIGluCglTSEJpbmRUb1BhcmVudC4KCgkqIGRsbHMvc2hlbGwzMi9zaGZsZHJfdW5peGZzLmM6CglNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglVc2UgU3RyaW5nRnJvbUdVSUQyIGluc3RlYWQgb2YgU3RyaW5nRnJvbUNMU0lEIGluCglVTklYRlNfaXNfcm9vdGVkX2F0X2Rlc2t0b3AuCgoJKiB0b29scy93aW5lYnVpbGQvcGFyc2VyLmM6CglDb21wdXRlIHRoZSBvcmRpbmFsIGJhc2UgYW5kIGxpbWl0IGluIGFzc2lnbl9vcmRpbmFscyBpbnN0ZWFkIG9mIGRvaW5nCglpdCB3aGlsZSBwYXJzaW5nLgoKCSogZGxscy9kaW5wdXQ4L01ha2VmaWxlLmluLCBkbGxzL2RwbGF5L01ha2VmaWxlLmluLAoJICBkbGxzL25ld2Rldi9NYWtlZmlsZS5pbiwgZGxscy9udGRsbC9sb2FkZXIuYywKCSAgZGxscy9vbGVwcm8zMi9NYWtlZmlsZS5pbiwgZGxscy9yc2FiYXNlL01ha2VmaWxlLmluLAoJICBkbGxzL3NoZm9sZGVyL01ha2VmaWxlLmluLCBkbGxzL3N0ZG9sZTIudGxiL01ha2VmaWxlLmluLAoJICBkbGxzL3N0ZG9sZTMyLnRsYi9NYWtlZmlsZS5pbiwgZGxscy93aW5lY3J0MC9kbGxfbWFpbi5jOgoJVW5jb21tZW50IG91dCBEaXNhYmxlVGhyZWFkTGlicmFyeUNhbGxzIGluIERsbE1haW4gYW5kIGFkZCB0aGUKCWtlcm5lbDMyIGltcG9ydHMgdGhhdCBpdCByZXF1aXJlcy4KCgkqIGRsbHMvdmVyc2lvbi9pbmZvLmMsIGRsbHMvdmVyc2lvbi90ZXN0cy9pbmZvLmM6CglTdG9yZSB0aGUgcmVzdWx0IG9mIHRoZSBBL1cgY29udmVyc2lvbnMgaW4gdGhlIGV4dHJhIGJ1ZmZlciBzcGFjZS4KCgkqIGRsbHMvdmVyc2lvbi9pbmZvLmMsIGRsbHMvdmVyc2lvbi90ZXN0cy9pbmZvLmM6CglQYXVsIFZyaWVucyA8cGF1bC52cmllbnNAeHM0YWxsLm5sPgoJUmVzZXJ2ZSBleHRyYSBzcGFjZSBmb3IgY29udmVyc2lvbnMuCgoJKiBkbGxzL3dpbmVjcnQwL01ha2VmaWxlLmluLCBkbGxzL3dpbmVjcnQwL2NydDBfcHJpdmF0ZS5oLAoJICBkbGxzL3dpbmVjcnQwL2RsbF9lbnRyeS5jLCBkbGxzL3dpbmVjcnQwL2V4ZV9lbnRyeS5jLAoJICBkbGxzL3dpbmVjcnQwL2V4ZV93ZW50cnkuYywgdG9vbHMvd2luZWJ1aWxkL2ltcG9ydC5jLAoJICB0b29scy93aW5lYnVpbGQvc3BlYzMyLmMsIHRvb2xzL3dpbmVnY2Mvd2luZWdjYy5jOgoJTW92ZWQgbW9yZSBvZiB0aGUgc3BlYyBpbml0aWFsaXphdGlvbiBjb2RlIHRvIHRoZSB3aW5lY3J0MCBsaWJyYXJ5LAoJYW5kIGdldCByaWQgb2YgaW1wbGljaXQga2VybmVsMzIgaW1wb3J0cy4KCgkqIGRsbHMvd2xkYXAzMi9NYWtlZmlsZS5pbiwgZGxscy93bGRhcDMyL21pc2MuYywgZGxscy93bGRhcDMyL3ZhbHVlLmMsCgkgIGRsbHMvd2xkYXAzMi93aW5sZGFwX3ByaXZhdGUuaCwgZGxscy93bGRhcDMyL3dsZGFwMzIuc3BlYzoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJSW1wbGVtZW50IGxkYXBfY291bnRfdmFsdWVzKiwgbGRhcF9nZXRfdmFsdWVzKiwgIGxkYXBfbXNnZnJlZSBhbmQKCWxkYXBfdmFsdWVfZnJlZV9sZW4uCgoJKiBkbGxzL2NyeXB0MzIvZW5jb2RlLmMsIGRsbHMvY3J5cHQzMi90ZXN0cy9lbmNvZGUuYzoKCUp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCUltcGxlbWVudCBlbmNvZGluZy9kZWNvZGluZyBvZiBDRVJUX0FMVF9OQU1FX0lORk9zIGFuZCBDUkxfSU5GT3MuCgoJKiBkbGxzL2tlcm5lbC9nbG9iYWwxNi5jLCBkbGxzL2tlcm5lbC9rZXJuZWxfbWFpbi5jLAoJICBkbGxzL2tlcm5lbC9zeXN0ZW0uYywgZGxscy9rZXJuZWwvc3lzdGVtLmRydi5zcGVjOgoJTW92ZWQgdGhlIGltcGxlbWVudGF0aW9uIG9mIGEgY291cGxlIG9mIHN5c3RlbS5kcnYgZW50cnkgcG9pbnRzIHRvCglzeXN0ZW0uYy4KCgkqIGRsbHMvd2luZWQzZC9kZXZpY2UuYywgZGxscy93aW5lZDNkL2RpcmVjdHguYywKCSAgZGxscy93aW5lZDNkL3N1cmZhY2UuYywgZGxscy93aW5lZDNkL3V0aWxzLmM6CglPbGl2ZXIgU3RpZWJlciA8b2xpdmVyX3N0aWViZXJAeWFob28uY28udWs+CglBZGRlZCBzdXBwb3J0IGZvciBEWFQyIGFuZCBEWFQ0LgoKCSogaW5jbHVkZS93aW5lL2xpc3QuaDogSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJQWRkZWQgYSBMSVNUX0ZPUl9FQUNIX0VOVFJZX1NBRkUgaGVscGVyIG1hY3JvLgoKCSogZGxscy9jcnlwdDMyL2NlcnQuYywgZGxscy9jcnlwdDMyL3Rlc3RzL2NlcnQuYzoKCUp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCUltcGxlbWVudGVkIG1lbW9yeSBjZXJ0IHN0b3Jlcy4KCgkqIGRsbHMvY29tY3RsMzIvaGVhZGVyLmM6IFBoaWwgS3J5bG92IDxwaGlsQG5ld3N0YXIucmluZXQucnU+CglJbXByb3ZlZCBoZWFkZXIgY29udHJvbCBwZXJmb3JtYW5jZSBieSBtYWludGFpbmluZyBhbiBpbnRlcm5hbCBvcmRlcgoJYXJyYXkuCgoJKiBsaWJzL3dpbmUvbGR0LmM6CglJbXBsZW1lbnRlZCB3aW5lX2xkdF9hbGxvY19mcyBhbmQgd2luZV9sZHRfaW5pdF9mcyBmb3IgTWFjIE9TLgoKCSogdG9vbHMvd2luZWJ1aWxkL3NwZWMxNi5jOgoJVXNlIF9fd2luZV91bmltcGxlbWVudGVkX3N0dWIgZnJvbSBjcnQwIGZvciAxNi1iaXQgc3BlYyBmaWxlcyB0b28uCgoJKiBwcm9ncmFtcy93aW5lbWluZS9Oby5yYywgcHJvZ3JhbXMvd2luZW1pbmUvcnNyYy5yYzoKCUFsZXhhbmRlciBOLiBT+HJuZXMgPGFsZXhAdGhlaGFuZG9mYWdvbnkuY29tPgoJTm9yd2VnaWFuIGxhbmd1YWdlIHN1cHBvcnQuCgoJKiBkbGxzL21zaHRtbC9Gci5yYywgZGxscy9tc2h0bWwvcnNyYy5yYzoKCUpvbmF0aGFuIEVybnN0IDxKb25hdGhhbkBFcm5zdEZhbWlseS5jaD4KCUZyZW5jaCByZXNvdXJjZXMuCgoJKiBkbGxzL3V4dGhlbWUvZHJhdy5jOiBGcmFuayBSaWNodGVyIDxmcmFuay5yaWNodGVyQGdtYWlsLmNvbT4KCUlmIGEgTUlOU0laRW4gcHJvcGVydHkgaXMgbm90IHByZXNlbnQsIGZhbGwgYmFjayB0byBhY3R1YWwgc2l6ZSBvZiBudGgKCWltYWdlIHRvIGRldGVybWluZSB3aGV0aGVyIGl0IGlzIHN1aXRhYmxlLgoKCSogZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYzoKCVJlbW92ZWQgYSBmZXcgbm8gbG9uZ2VyIHVzZWQgMTYtYml0IGV4cG9ydHMuCgoJKiBkbGxzL2tlcm5lbC90YXNrLmMsIGRsbHMva2VybmVsL3Rvb2xoZWxwMTYuYzoKCU1vdmVkIFRhc2tGaW5kSGFuZGxlMTYgdG8gdG9vbGhlbHAxNi5jLgoKCSogZGxscy9rZXJuZWwvZ2xvYmFsMTYuYywgZGxscy9rZXJuZWwvdG9vbGhlbHAuYzoKCU1vdmVkIEdsb2JhbE1hc3RlckhhbmRsZSB0byBnbG9iYWwxNi5jLgoKCSogZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL2tlcm5lbDE2LmMsCgkgIGRsbHMva2VybmVsL2tlcm5lbF9tYWluLmMsIGRsbHMva2VybmVsL2tybmwzODYuZXhlLnNwZWMsCgkgIGRsbHMva2VybmVsL3dvd3RodW5rLmM6CglNb3ZlZCB0aGUga2VybmVsIDE2LWJpdCBpbml0aWFsaXphdGlvbiB0byBhIG5ldyBEbGxFbnRyeVBvaW50IHJvdXRpbmUKCWluIGtybmwzODYuCgoJKiBkbGxzL21zaS90YWJsZS5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CgktIHRoZSBjb21iaW5hdGlvbiBvZiBhbGwgdGFibGUga2V5cyBtdXN0IGJlIHVuaXF1ZSwgbm90IGVhY2gga2V5CgktIE1zaVZpZXdFeGVjdXRlIG1heSBub3QgYmUgY2FsbGVkIGJlZm9yZSBNc2lNb2RpZnlWaWV3CgoJKiBkbGxzL3V4dGhlbWUvZHJhdy5jOiBGcmFuayBSaWNodGVyIDxmcmFuay5yaWNodGVyQGdtYWlsLmNvbT4KCVRha2UgYSBjb21tb24gY29tcHV0YXRpb24gb3V0IG9mIHR3byBpZi1icmFuY2hlcyBpbgoJVVhUSEVNRV9Mb2FkSW1hZ2UoKS4KCgkqIGRsbHMvd2luZWQzZC9kZXZpY2UuYzogT2xpdmVyIFN0aWViZXIgPG9saXZlcl9zdGllYmVyQHlhaG9vLmNvLnVrPgoJSW1wbGVtZW50ZWQgSVdpbmVEM0REZXZpY2VfR2V0UmVuZGVyVGFyZ2V0RGF0YS4KCgkqIGRsbHMvbXNodG1sL0VuLnJjLCBkbGxzL21zaHRtbC9yZXNvdXJjZS5oLCBkbGxzL21zaHRtbC92aWV3LmM6CglKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJTW92ZSBzdHJpbmdzIHRvIHJlc291cmNlcy4KCgkqIGxpYnMvd2luZS9sb2FkZXIuYzogVXNlIHRoZSBjb3JyZWN0IG9yZGluYWwgZmxhZyBmb3IgV2luNjQgc3VwcG9ydC4KCgkqIGRsbHMvZGJnaGVscC9lbGZfbW9kdWxlLmM6CglBZGRlZCBhIGNvdXBsZSBvZiBtaXNzaW5nIHN0dWJzIGZvciB0aGUgbm9uLUVMRiBjYXNlLgoKCSogdG9vbHMvd2luZWJ1aWxkL2J1aWxkLmgsIHRvb2xzL3dpbmVidWlsZC9tYWluLmMsIHRvb2xzL3dpbmVidWlsZC91dGlscy5jOgoJR2V0IHJpZCBvZiB0aGUgdW51c2VkIG93bmVyX25hbWUgZmllbGQuCgoJKiBwcm9ncmFtcy93aW5lY2ZnL0ZyLnJjOiBKb25hdGhhbiBFcm5zdCA8Sm9uYXRoYW5ARXJuc3RGYW1pbHkuY2g+CglUaGVtaW5nIHNldGluZ3MgaW4gRnJlbmNoLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6IFl1cmkgS296bG92IDxrb3psb3YueUBnbWFpbC5jb20+CglTZXQgZGVmYXVsdCBzaXplIGZvciB0b29sYmFyIGJpdG1hcCBpZiBub3Qgc3BlY2lmaWVkLgoKCSogZGxscy9tc2kvYWN0aW9uLmgsIGRsbHMvbXNpL2NsYXNzZXMuYywgZGxscy9tc2kvaGVscGVycy5jLAoJICBkbGxzL21zaS9tc2lwcml2LmgsIGRsbHMvbXNpL3BhY2thZ2UuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gYnVpbGQgYSBzdGFuZGFyZCBXaW5lIGxpc3Qgb2YgZXh0ZW5zaW9ucyBpbnN0ZWFkIG9mIHVzaW5nIGFuIGFycmF5CgktIHVzZSBleHRlbnNpb24gcG9pbnRlcnMgaW5zdGVhZCBvZiBhcnJheSBpbmRleGVzCgoJKiBkbGxzL2NyeXB0MzIvZW5jb2RlLmMsIGRsbHMvY3J5cHQzMi9wcm90ZWN0ZGF0YS5jLAoJICBkbGxzL2NyeXB0MzIvdGVzdHMvbWFpbi5jLCBkbGxzL2NyeXB0MzIvdGVzdHMvcHJvdGVjdGRhdGEuYywKCSAgZGxscy9kaW5wdXQvam95c3RpY2tfbGludXguYywgZGxscy9pY21wL2ljbXBfbWFpbi5jLAoJICBkbGxzL2l0c3MvY2htX2xpYi5jLCBkbGxzL2l0c3MvbHp4LmMsIGRsbHMvbmV0YXBpMzIvbmJuYW1lY2FjaGUuYywKCSAgZGxscy9uZXRhcGkzMi9uYnQuYywgZGxscy9vZGJjMzIvcHJveHlvZGJjLmMsCgkgIGRsbHMvcnNhZW5oL3Rlc3RzL3JzYWVuaC5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJZ2NjIDQuMCB3YXJuaW5nIGZpeGVzLgoKCSogZGxscy93bGRhcDMyL01ha2VmaWxlLmluLCBkbGxzL3dsZGFwMzIvZXh0ZW5kZWQuYywKCSAgZGxscy93bGRhcDMyL3dpbmxkYXBfcHJpdmF0ZS5oLCBkbGxzL3dsZGFwMzIvd2xkYXAzMi5zcGVjOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglJbXBsZW1lbnQgbGRhcF9leHRlbmRlZF9vcGVyYXRpb24qIGFuZCBsZGFwX2Nsb3NlX2V4dGVuZGVkX29wLgoKCSogZGxscy9kM2Q4L2RpcmVjdHguYzogT2xpdmVyIFN0aWViZXIgPG9saXZlcl9zdGllYmVyQHlhaG9vLmNvLnVrPgoJVXNlIHdpbmVkM2Rmb3JtYXQgd2hlbiBjYWxsaW5nIHdpbmVkM2QuCgoJKiBkbGxzL3V4dGhlbWUvZHJhdy5jLCBkbGxzL3V4dGhlbWUvbXNzdHlsZXMuYywgZGxscy91eHRoZW1lL21zc3R5bGVzLmg6CglGcmFuayBSaWNodGVyIDxmcmFuay5yaWNodGVyQGdtYWlsLmNvbT4KCUltcGxlbWVudCAibWFudWFsIiBpbWFnZSBzaGFyaW5nKGFzIG9wcG9zZWQgdG8gdXNpbmcgTG9hZEltYWdlKCkgd2l0aAoJTFJfU0hBUkVEKSBieSBrZWVwaW5nIHRoZSBsb2FkZWQgaW1hZ2VzIGluIGEgbGlzdC4gVGhpcyBpcyBuZWVkZWQgZm9yCglwcm9wZXIgYWxwaGEgc3VwcG9ydCBsYXRlciBvbiBzaW5jZSBvbmNlLXBlci1pbWFnZSBwcmVwYXJhdGlvbnMgd2lsbAoJYmUgbmVlZGVkIHRoZW4uCgoJKiBkbGxzL21zaHRtbC90ZXN0cy9odG1sZG9jLmM6IEphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CgktIEFkZGVkIElIbGlua1RhcmdldDo6TmF2aWdhdGUgdGVzdC4KCS0gQWRkZWQgZG93bmxvYWRpbmcgdGVzdCAoZGlzYWJsZWQpLgoKCSogcHJvZ3JhbXMvd2luZWNmZy9SdS5yYzogWXVyaSBLb3psb3YgPGtvemxvdi55QGdtYWlsLmNvbT4KCVRoZW1lIGRpYWxvZyBhZGRlZCBpbiBSdS5yYy4KCjIwMDUtMDgtMjcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL01ha2VkbGwucnVsZXMuaW46CglGaXhlZCB0aGUgY2hlY2tsaW5rIHRhcmdldCB0byBsaW5rIGFnYWluc3Qgd2luZWNydDAgdG9vLgoKCSogZGxscy9rZXJuZWwvaW5zdHIuYywgZGxscy9rZXJuZWwva2VybmVsMTZfcHJpdmF0ZS5oLAoJICBkbGxzL2tlcm5lbC9rZXJuZWxfbWFpbi5jLCBkbGxzL2tlcm5lbC9rZXJuZWxfcHJpdmF0ZS5oLAoJICBkbGxzL2tlcm5lbC93b3d0aHVuay5jOgoJRG9uJ3QgdHJ5IHRvIGluaXRpYWxpemUgdGhlIDE2LWJpdCB0aHVua2luZyBjb2RlIGlmIDE2LWJpdCBzdXBwb3J0IGlzCglkaXNhYmxlZC4KCgkqIGRsbHMvbXNpL2NsYXNzZXMuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWRkIHRoZSBhbGxvY2F0ZWQgbWltZSB0eXBlIHRvIHRoZSBtaW1lIHR5cGUgbGlzdC4KCgkqIGRsbHMvYWR2YXBpMzIvY3J5cHRfbG1oYXNoLmMsIGRsbHMvYWR2YXBpMzIvY3J5cHRfc2hhLmMsCgkgIGRsbHMvYWR2YXBpMzIvcmVnaXN0cnkuYywgZGxscy9hZHZhcGkzMi9zZXJ2aWNlLmMsCgkgIGRsbHMvYWR2YXBpMzIvdGVzdHMvY3J5cHRfbG1oYXNoLmMsIGRsbHMvYWR2YXBpMzIvdGVzdHMvY3J5cHRfbWQ0LmMsCgkgIGRsbHMvYWR2YXBpMzIvdGVzdHMvY3J5cHRfbWQ1LmMsIGRsbHMvY2FiaW5ldC9jYWJpbmV0LmgsCgkgIGRsbHMvY29tY3RsMzIvcmViYXIuYywgZGxscy9jb21jdGwzMi90YWIuYywgcHJvZ3JhbXMvdmlldy92aWV3LmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggZ2NjIDQuMCB3YXJuaW5ncy4KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmM6CglUaG9tYXMgV2VpZGVubXVlbGxlciA8d2luZS1wYXRjaGVzQHJlYWN0c29mdC5jb20+CglJdCBzaG91bGQgYmUgYWxsb3dlZCB0byBwYXNzIE5VTEwgaGFuZGxlcyBpbiB0aGUgcGhwYWdlIGFycmF5IG9mIHRoZQoJUFJPUFNIRUVUSEVBREVSIHN0cnVjdHVyZSB0byBQcm9wZXJ0eVNoZWV0KCksIGp1c3QgaWdub3JlIHRoZW0uCgoJKiBkbGxzL3dpbmVkM2QvZGV2aWNlLmMsIGRsbHMvd2luZWQzZC9zd2FwY2hhaW4uYzoKCU9saXZlciBTdGllYmVyIDxvbGl2ZXJfc3RpZWJlckB5YWhvby5jby51az4KCU1vdmVkIEdldFJhc3RlclN0YXR1cyBmcm9tIGRldmljZSB0byBzd2FwY2hhaW4uCgoJKiBkbGxzL2NvbWN0bDMyL3Rlc3RzL01ha2VmaWxlLmluLCBkbGxzL2NyeXB0MzIvdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvZ2RpL3Rlc3RzL01ha2VmaWxlLmluLCBkbGxzL2lwaGxwYXBpL3Rlc3RzL01ha2VmaWxlLmluLAoJICBkbGxzL2x6ZXhwYW5kL3Rlc3RzL01ha2VmaWxlLmluLCBkbGxzL21hcGkzMi90ZXN0cy9NYWtlZmlsZS5pbiwKCSAgZGxscy9tc2FjbS90ZXN0cy9NYWtlZmlsZS5pbiwgZGxscy9tc2h0bWwvdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvbXN2Y3J0L3Rlc3RzL01ha2VmaWxlLmluLCBkbGxzL21zdmNydGQvdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvbmV0YXBpMzIvdGVzdHMvTWFrZWZpbGUuaW4sIGRsbHMvb2xlYXV0MzIvdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvcnBjcnQ0L3Rlc3RzL01ha2VmaWxlLmluLCBkbGxzL3NlY3VyMzIvdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvc2hlbGwzMi90ZXN0cy9NYWtlZmlsZS5pbiwgZGxscy9zaGx3YXBpL3Rlc3RzL01ha2VmaWxlLmluLAoJICBkbGxzL3VybG1vbi90ZXN0cy9NYWtlZmlsZS5pbiwgZGxscy91c2VyL3Rlc3RzL01ha2VmaWxlLmluLAoJICBkbGxzL3ZlcnNpb24vdGVzdHMvTWFrZWZpbGUuaW4sIGRsbHMvd2luaW5ldC90ZXN0cy9NYWtlZmlsZS5pbiwKCSAgZGxscy93aW5zb2NrL3Rlc3RzL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5ldGVzdC9NYWtlZmlsZS5pbjoKCUV4cGxpY2l0bHkgaW1wb3J0IGtlcm5lbDMyIGluIHRlc3RzIHRoYXQgdXNlIGl0LgoKCSogZGxscy9tc2h0bWwvTWFrZWZpbGUuaW4sIGRsbHMvbXNodG1sL2hsaW5rLmMsIGRsbHMvbXNodG1sL2h0bWxkb2MuYywKCSAgZGxscy9tc2h0bWwvbXNodG1sX3ByaXZhdGUuaDoKCUphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglBZGRlZCBJSGxpbmtUYXJnZXQgaW50ZXJmYWNlLgoKCSogZGxscy9vbGUzMi9jb21wb2JqX3ByaXZhdGUuaCwgZGxscy9vbGUzMi9tYXJzaGFsLmMsCgkgIGRsbHMvb2xlMzIvdGVzdHMvbWFyc2hhbC5jOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBJbXBsZW1lbnQgSU1hcnNoYWwgb24gcHJveGllcyBzbyB0aGF0IHdlIGRvbid0IGVuZCB1cCB3aXRoIHByb3hpZXMKCSAgdG8gcHJveGllcywgY2F1c2luZyBwb3RlbnRpYWwgZGVhZGxvY2sgaXNzdWVzIGFuZCBwZXJmb3JtYW5jZQoJICBwcm9ibGVtcy4KCS0gQWRkIGEgdGVzdCBmb3IgdGhpcyBzaXR1YXRpb24gYW5kIHJlbW92ZSB0aGUgdG9kb193aW5lIGZyb20gYW5vdGhlcgoJICB0ZXN0IHRoYXQgbm93IHN1Y2NlZWRzLgoKCSogZGxscy9tc2h0bWwvRGUucmMsIGRsbHMvbXNodG1sL3JzcmMucmM6CglIZW5uaW5nIEdlcmhhcmR0IDxoZW5uaW5nLmdlcmhhcmR0QHdlYi5kZT4KCUFkZGVkIEdlcm1hbiByZXNvdXJjZXMuCgoJKiBkbGxzL3VzZXIvbGlzdGJveC5jLCBkbGxzL3VzZXIvdGVzdHMvbGlzdGJveC5jOgoJSmFzb24gRWRtZWFkZXMgPHVzQGVkbWVhZGVzLm1lLnVrPgoJTGlzdGJveCBkZWxldGUgc3RyaW5nIGhhbmRsaW5nIHNob3VsZCB2YWxpZGF0ZSB0aGUgcmFuZ2Ugb2YgdGhlCglpbmRleC4gQWRkZWQgc29tZSB0ZXN0cy4KCgkqIGRsbHMvd2luZWQzZC90ZXh0dXJlLmM6IE9saXZlciBTdGllYmVyIDxvbGl2ZXJfc3RpZWJlckB5YWhvby5jby51az4KCUNoYW5nZSBTZXREaXJ0eSBpbiB0ZXh0dXJlIHRvIHBhc3MgdGhlIHZhbHVlIG9mIGRpcnR5IGluc3RlYWQgb2YKCWFsd2F5cyBwYXNzaW5nIFRSVUUuCgoJKiBkbGxzL3gxMWRydi94cmVuZGVyLmM6IEZyYW5rIFJpY2h0ZXIgPGZyYW5rLnJpY2h0ZXJAZ21haWwuY29tPgoJTWFrZSBBbHBoYUJsZW5kKCkgcmVzcGVjdCB0aGUgZGVzdGluYXRpb24gY2xpcHBpbmcgcmVnaW9uLgoKCSogaW5jbHVkZS9jb21tY3RybC5oOiBGcmFuayBSaWNodGVyIDxmcmFuay5yaWNodGVyQGdtYWlsLmNvbT4KCUFkZGVkIFdDX1NDUk9MTEJBUi4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYywgZGxscy93aW5zb2NrL3Rlc3RzL3NvY2suYzoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJQXZvaWQgdXNpbmcgdGhlIG9ic29sZXRlIGluZXRfYWRkci4KCgkqIGRsbHMvbXNodG1sL3Rlc3RzL2h0bWxkb2MuYzogSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCU1ha2UgcEFjdGl2ZU9iamVjdCB0ZXN0IGxhbmd1YWdlIHNwZWNpZmljLgoKCSogZGxscy9zZW5zYXBpL3NlbnNhcGkuYywgaW5jbHVkZS9zZW5zYXBpLmg6CglNYXJjdXMgTWVpc3NuZXIgPG1laXNzbmVyQHN1c2UuZGU+CglJc05ldHdvcmtBbGl2ZSgpIGVuaGFuY2VkLCBhbHdheXMgcmVwb3J0cyBMQU4uCgoyMDA1LTA4LTI2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9yc2FlbmgvcnNhZW5oLmMsIGRsbHMvd2luZWQzZC9zd2FwY2hhaW4uYywKCSAgZGxscy93aW5lZDNkL3dpbmVkM2RfcHJpdmF0ZS5oOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IGdjYyA0LjAgd2FybmluZ3MuCgoJKiBkbGxzL21zaHRtbC9tc2h0bWxfcHJpdmF0ZS5oLCBkbGxzL21zaHRtbC9uc2VtYmVkLmMsCgkgIGRsbHMvbXNodG1sL25zaWZhY2UuaWRsLCBkbGxzL21zaHRtbC92aWV3LmM6CglKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJQmVnaW5uaW5nIGltcGxlbWVudGF0aW9uIG9mIEdlY2tvIGZvY3VzIGhhbmRsaW5nLgoKCSogZGxscy9zaGVsbDMyLy5jdnNpZ25vcmUsIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwKCSAgZGxscy9zaGVsbDMyL2ZvbGRlcnMuYywgZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jLAoJICBkbGxzL3NoZWxsMzIvcmVnc3ZyLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwKCSAgZGxscy9zaGVsbDMyL3NoZWxsb2xlLmMsIGRsbHMvc2hlbGwzMi9zaGZsZHJfdW5peGZzLmMsCgkgIGRsbHMvc2hlbGwzMi9zaHJlcy5yYywgZGxscy9zaGVsbDMyL3NocmVzZGVmLmg6CglNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglJbXBsZW1lbnRlZCAnTXkgRG9jdW1lbnRzJyBmb2xkZXIuCgoJKiBkbGxzL29sZWF1dDMyL3ZhcmZvcm1hdC5jLCBkbGxzL3dpbmVkb3MvZG9zYXNwaS5jLAoJICBkbGxzL3dpbmVkb3MvZG9zbWVtLmMsIGRsbHMvd2luZWRvcy9tb2R1bGUuYywgZGxscy93aW5lcHMvZHJpdmVyLmMsCgkgIGRsbHMvd2luZXBzL2luaXQuYywgZGxscy93aW5lcHMvcHMuYywgZGxscy93aW5lcHMvdHlwZTQyLmMsCgkgIGRsbHMvd2luc29jay90ZXN0cy9zb2NrLmMsIHByb2dyYW1zL3dpbmV0ZXN0L3NlbmQuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBnY2MgNC4wIHdhcm5pbmdzLgoKCSogZGxscy9NYWtlZmlsZS5pbiwgZGxscy9tYWtlX2RsbHM6CglXZSBubyBsb25nZXIgbmVlZCBhIHNwZWNpYWwgY2FzZSBmb3IgdGhlIG50ZGxsIGltcG9ydCBsaWJyYXJ5LgoKCSogaW5jbHVkZS93dHlwZXMuaWRsOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBtb3JlIHd0eXBlcyBkZWZpbml0aW9ucywgcGFydGljdWxhcmx5IGZvciBHREkvVVNFUiBoYW5kbGVzLgoKCSogaW5jbHVkZS91cmxtb24uaWRsOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIFRoZSBvdXRwdXQgc2l6ZSBzaG91bGQgYmUgKnBjYlBvbGljeSBmb3IgcHBQb2xpY3ksIG5vdCB0aGUgaW5wdXQKCSAgc2l6ZS4KCS0gUmVtb3ZlIGEgc3RyYXkgc2VtaS1jb2xvbi4KCgkqIGluY2x1ZGUvb2xlaWRsLmlkbDogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJTW92ZSBpbnRlcmZhY2VzIGFyb3VuZCB0byBzYXRpc2Z5IE1JREwuCgoJKiBpbmNsdWRlL21zeG1sLmlkbDogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlIG5vbnNlbnNlIG1zeG1sIElETCBhdHRyaWJ1dGVzLgoKCSogZGxscy94MTFkcnYveGZvbnQuYzogUGF2ZWwgUm9za2luIDxwcm9za2lAZ251Lm9yZz4KCUV4dGVuZCB1UmVsYXggc2NhbGUgc28gdGhhdCB5cmVzIGlzIHJlbGF4ZWQgYmVmb3JlIHNsYW50LCBub3QgYXQgdGhlCglzYW1lIHRpbWUuCgoJKiBkbGxzL21zaS9hY3Rpb24uaCwgZGxscy9tc2kvY2xhc3Nlcy5jLCBkbGxzL21zaS9oZWxwZXJzLmMsCgkgIGRsbHMvbXNpL21zaXByaXYuaCwgZGxscy9tc2kvcGFja2FnZS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJLSBidWlsZCBhIHN0YW5kYXJkIFdpbmUgbGlzdCBvZiBtaW1lIHR5cGVzIGluc3RlYWQgb2YgdXNpbmcgYW4gYXJyYXkKCS0gdXNlIG1pbWUgdHlwZSBwb2ludGVycyBpbnN0ZWFkIG9mIGFycmF5IGluZGV4ZXMKCgkqIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL29sZTMyLnNwZWM6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglBZGQgc3R1YiBmb3IgQ29BbGxvd1NldEZvcmVncm91bmRXaW5kb3cuCgoJKiBkbGxzL2NyeXB0MzIvY2VydC5jLCBkbGxzL2NyeXB0MzIvY3J5cHQzMi5zcGVjOgoJSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJQWRkZWQgYSBidW5jaCBvZiBzdHVicy4KCgkqIGRsbHMvbXNodG1sL0VuLnJjLCBkbGxzL21zaHRtbC9vbGV3bmQuYywgZGxscy9tc2h0bWwvcmVzb3VyY2UuaCwKCSAgZGxscy9tc2h0bWwvcnNyYy5yYzoKCUphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglBZGRlZCBkZWZhdWx0IE1TSFRNTCBjb250ZXh0IG1lbnUuCgoJKiBpbmNsdWRlL3dpbmNyeXB0Lmg6IEp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCUNvcnJlY3QgYSB0eXBvLCBhbmQgYWRkIG1vcmUgZGVmaW5pdGlvbnMuCgoyMDA1LTA4LTI1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy93aW5lY3J0MC9NYWtlZmlsZS5pbiwgZGxscy93aW5lY3J0MC9kZWxheV9sb2FkLmMsCgkgIHRvb2xzL3dpbmVidWlsZC9pbXBvcnQuYywgdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jOgoJTW92ZWQgdGhlIGRlbGF5IGxvYWRpbmcgc3VwcG9ydCBjb2RlIHRvIHRoZSB3aW5lY3J0MCBsaWJyYXJ5LgoKCSogaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9kZGsvd2luc3BscC5oOgoJRGV0bGVmIFJpZWtlbmJlcmcgPHdpbmUuZGV2QHdlYi5kZT4KCUFkZGVkIHdpbnNwbHAuaCBoZWFkZXIuCgoJKiBwcm9ncmFtcy91bmluc3RhbGxlci9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luZXBhdGgvTWFrZWZpbGUuaW4sCgkgIHRvb2xzL3dpbmVnY2Mvd2luZWdjYy5jLCB0b29scy93aW5lZ2NjL3dpbmVnY2MubWFuOgoJQWRkZWQgYSAtbXVuaWNvZGUgZmxhZyB0byB3aW5lZ2NjIGZvciBhcHBsaWNhdGlvbnMgdGhhdCBoYXZlIGEgd21haW4oKQoJZW50cnkgcG9pbnQuCgoJKiBkbGxzL21zaHRtbC9tc2h0bWxfcHJpdmF0ZS5oLCBkbGxzL21zaHRtbC9uc2VtYmVkLmMsCgkgIGRsbHMvbXNodG1sL25zaWZhY2UuaWRsLCBkbGxzL21zaHRtbC9vbGV3bmQuYzoKCUphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CgktIEJlZ2lubmluZyBpbXBsZW1lbnRhdGlvbiBvZiBjb250ZXh0IG1lbnUuCgktIFNldCBuc0lXZWJCcm93c2VyQ2hyb21lIG9mIG5zSVdlYkJyb3dzZXIuCgoJKiBkbGxzL3dpbmVkM2QvTWFrZWZpbGUuaW4sIGRsbHMvd2luZWQzZC9kZXZpY2UuYywKCSAgZGxscy93aW5lZDNkL3BpeGVsc2hhZGVyLmMsIGRsbHMvd2luZWQzZC93aW5lZDNkX3ByaXZhdGUuaDoKCU9saXZlciBTdGllYmVyIDxvbGl2ZXJfc3RpZWJlckB5YWhvby5jby51az4KCUltcGxlbWVudGVkIHN0dWJiZWQgb3V0IHBpeGVsIHNoYWRlcnMgYW5kIHRoZWlyIHN0YXRlcyBpbiB3aW5lZDNkLgoKCSogZGxscy9jb21tZGxnL3ByaW50ZGxnLmM6IFZpdGFseSBMaXBhdG92IDxsYXZAZXRlcnNvZnQucnU+CglSZXN0b3JlIHBhcGVyIG9yaWVudGF0aW9uIHdoZW4gcGFnZXNldHVwZGxnIGlzIGluaXRpYWxpemluZy4KCgkqIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYzogR2xlbm4gV3Vyc3RlciA8Z3d1cnN0ZXJAc2NzLmNhcmxldG9uLmNhPgoJTWFrZSBzdGFjayBjaGVjayB3b3JrIGlmIHN0YWNrIGlzIGEgc21hbGwgdmFsdWUuCgoJKiBkbGxzL2RkcmF3L3Rlc3RzL2QzZC5jOgoJU2F1bGl1cyBLcmFzdWNrYXMgPHNhdWxpdXMua3Jhc3Vja2FzQGllZWUub3JnPgoJLSBEaXJlY3REcmF3Q3JlYXRlRXggZmFpbHMgd2l0aCBTdGFuZGFyZCBWR0EgQWRhcHRlciBkcml2ZXIuCgktIElEaXJlY3QzRDc6OkNyZWF0ZURldmljZSgpIHJldHVybnMgRV9PVVRPRk1FTU9SWSBpZiBhIGNhcmQgaGFzIG5vIDNECgkgIGFjY2VsZXJhdGlvbi4KCgkqIHByb2dyYW1zL3dpbmVjZmcvRGUucmMsIHByb2dyYW1zL3dpbmVjZmcvRW4ucmMsCgkgIHByb2dyYW1zL3dpbmVjZmcvRnIucmMsIHByb2dyYW1zL3dpbmVjZmcvSmEucmMsCgkgIHByb2dyYW1zL3dpbmVjZmcvTmwucmMsIHByb2dyYW1zL3dpbmVjZmcvUnUucmMsCgkgIHByb2dyYW1zL3dpbmVjZmcvbWFpbi5jLCBwcm9ncmFtcy93aW5lY2ZnL3Jlc291cmNlLmg6CglGcmFuayBSaWNodGVyIDxmcmFuay5yaWNodGVyQGdtYWlsLmNvbT4KCUxvYWQgdGFiIHRpdGxlcyBhbmQgcHJvcGVydHkgc2hlZXQgY2FwdGlvbiBmcm9tIHN0cmluZyByZXNvdXJjZXMuCgoJKiBkbGxzL21zaS9hY3Rpb24uYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJTWFrZSBzdXJlIHRvIHNhdmUgdGhlIHJlc3VsdCBjYWxjdWxhdGVkIGluIEFDVElPTl9VcGRhdGVJbnN0YWxsU3RhdGVzLgoKCSogZGxscy91c2VyL3N5c3BhcmFtcy5jLCBkbGxzL3VzZXIvdGVzdHMvc3lzcGFyYW1zLmM6CglWaXRhbHkgTGlwYXRvdiA8bGF2QGV0ZXJzb2Z0LnJ1PgoJLSByZW1vdmUgcmV0dXJuOiBub3cgYnJlYWsgbG9vcCBpZiBjYW4ndCBjaGFuZ2Ugc3RhdGUgZHVyaW5nIHRlc3QKCS0gYWRkIHRlc3QgZm9yIHZhbHVlIHJldHVybmVkIGJ5IFN3YXBNb3VzZUJ1dHRvbgoJLSBmaXggU3dhcE1vdXNlQnV0dG9uIHJldHVybiB2YWx1ZSAoaXQgcmV0dXJucyBwcmV2aW91cyBzdGF0ZSkKCgkqIGRsbHMvY29tY3RsMzIvaGVhZGVyLmM6IFBoaWwgS3J5bG92IDxwaGlsQG5ld3N0YXIucmluZXQucnU+CglEcmF3IGhlYWRlciBjb250cm9sIGl0ZW1zIG9ubHkgd2l0aGluIHRoZSBoZWFkZXIgY2xpZW50IGFyZWEuCgoJKiBkbGxzL2FjdGl2ZWRzL01ha2VmaWxlLmluLCBkbGxzL2QzZGltL01ha2VmaWxlLmluLAoJICBkbGxzL2QzZHJtL01ha2VmaWxlLmluLCBkbGxzL21zbmV0MzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvbXN2Y3J0MjAvTWFrZWZpbGUuaW4sIGRsbHMvbXN2Y3J0NDAvTWFrZWZpbGUuaW4sCgkgIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmMsIGRsbHMvb2xlYWNjL01ha2VmaWxlLmluLAoJICBkbGxzL3N0aS9NYWtlZmlsZS5pbiwgZGxscy91cmwvTWFrZWZpbGUuaW4sCgkgIGRsbHMvd2luZWNydDAvTWFrZWZpbGUuaW4sIGRsbHMvd2luZWNydDAvc3R1Yi5jLAoJICB0b29scy93aW5lYnVpbGQvaW1wb3J0LmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYzoKCU1vdmVkIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBzcGVjIGZpbGUgc3R1YnMgdG8gdGhlIHdpbmVjcnQwIGxpYnJhcnkuCgoJKiBkbGxzL2NvbWN0bDMyL3RoZW1lX2RpYWxvZy5jOiBGcmFuayBSaWNodGVyIDxmcmFuay5yaWNodGVyQGdtYWlsLmNvbT4KCUFkZCBXTV9DVExDT0xPUlNUQVRJQyBoYW5kbGVyIHRvIGRpYWxvZyB0aGVtaW5nIHN1YmNsYXNzIHNvIHN0YXRpYwoJdGV4dCBjYW4gYXBwZWFyIHRyYW5zcGFyZW50IChmb3IgZS5nLiB0YWIgcGFnZXMgd2hpY2ggY29tbW9ubHkgaGF2ZSBhCgkiZmFuY3kiIGJhY2tncm91bmQpLgoKCSogZGxscy9tc2kvZmlsZXMuYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCVRoZSBmaWxlIG5hbWUgdXNlZCBpbiB0aGUgdWkgbWVzc2FnZXMgaXMgdGhlIHRhcmdldCBuYW1lIG5vdCB0aGUKCXNvdXJjZSBuYW1lLgoKCSogcHJvZ3JhbXMvd2luZWNmZy9EZS5yYywgcHJvZ3JhbXMvd2luZWNmZy9Fbi5yYzoKCUZyYW5rIFJpY2h0ZXIgPGZyYW5rLnJpY2h0ZXJAZ21haWwuY29tPgoJQWRkIEVuZ2xpc2ggTmV1dHJhbCBhbmQgR2VybWFuIGFwcGVhcmFuY2UgdGFiIHRyYW5zbGF0aW9ucy4KCgkqIGRvY3VtZW50YXRpb24vUEFDS0FHSU5HOiBUb20gV2lja2xpbmUgPHR3aWNrbGluZUBnbWFpbC5jb20+CglSZW1vdmVkIHJlbWFpbmluZyBjb25maWcgcmVmZXJlbmNlcy4KCgkqIGRsbHMvbXNodG1sL3BlcnNpc3QuYywgZGxscy9tc2h0bWwvdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvbXNodG1sL3Rlc3RzL2h0bWxkb2MuYzoKCUphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CgktIEFkZGVkIHRlc3Qgb2YgSVBlcnNpc3RNb25pa2VyOjpMb2FkLgoJLSBGaXggV2luZSB0byBwYXNzIHRoZSB0ZXN0LgoKCSogZGxscy9NYWtlZmlsZS5pbiwgZGxscy9tYWtlX2RsbHM6CglJbnN0YWxsIHRoZSBzdGF0aWMgaW1wb3J0IGxpYnJhcmllcyB0b28uCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy8uY3ZzaWdub3JlLCBkbGxzL01ha2VpbXBsaWIucnVsZXMuaW4sCgkgIGRsbHMvZHhlcnI4L01ha2VmaWxlLmluLCBkbGxzL2R4ZXJyOS9NYWtlZmlsZS5pbiwKCSAgZGxscy9keGd1aWQvTWFrZWZpbGUuaW4sIGRsbHMvc3RybWlpZHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvdXVpZC9NYWtlZmlsZS5pbiwgZGxscy93aW5lY3J0MC9NYWtlZmlsZS5pbjoKCUFkZGVkIGEgbWFrZSBydWxlcyBmaWxlIGZvciBzdGF0aWMgaW1wb3J0IGxpYnJhcmllcy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL3dpbmVjcnQwLy5jdnNpZ25vcmUsCgkgIGRsbHMvd2luZWNydDAvTWFrZWZpbGUuaW4sIGRsbHMvd2luZWNydDAvZGxsX21haW4uYywKCSAgZGxscy93aW5lY3J0MC9leGVfbWFpbi5jLCBkbGxzL3dpbmVjcnQwL2V4ZV93bWFpbi5jLAoJICBwcm9ncmFtcy91bmluc3RhbGxlci9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luZXBhdGgvTWFrZWZpbGUuaW4sCgkgIHRvb2xzL3dpbmVidWlsZC9idWlsZC5oLCB0b29scy93aW5lYnVpbGQvaW1wb3J0LmMsCgkgIHRvb2xzL3dpbmVidWlsZC9tYWluLmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYywKCSAgdG9vbHMvd2luZWdjYy93aW5lZ2NjLmM6CglCZWdpbm5pbmdzIG9mIGEgY3J0MCBsaWJyYXJ5LgoKCSogaW5jbHVkZS9NYWtlZmlsZS5pbjoKCUZpeGVkIGluc3RhbGxhdGlvbiBydWxlcyBmb3IgV2luZS1zcGVjaWZpYyBJREwgZmlsZXMuCgoJKiBkbGxzL2l0c3MvaXRzcy5pZGwsIGRsbHMvaXRzcy8uY3ZzaWdub3JlLCBkbGxzL2l0c3MvTWFrZWZpbGUuaW4sCgkgIGRsbHMvaXRzcy9pdHNzLmMsIGRsbHMvaXRzcy9tb25pa2VyLmMsIGRsbHMvaXRzcy9yZWdzdnIuYywKCSAgZGxscy9pdHNzL3N0b3JhZ2UuYywgaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS93aW5lLy5jdnNpZ25vcmUsCgkgIGluY2x1ZGUvd2luZS9pdHNzLmlkbDoKCUphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJTW92ZWQgaXRzcy5pZGwgdG8gaW5jbHVkZS93aW5lLgoKCSogZGxscy9udGRsbC92aXJ0dWFsLmM6CglVc2UgRklMRV9HZXREZXZpY2VJbmZvIGluIE50TWFwVmlld09mU2VjdGlvbiB0byBhdm9pZCBoYXZpbmcgdG8gZmV0Y2gKCXRoZSBmaWxlIGRlc2NyaXB0b3IgdHdpY2UuCgoJKiBkbGxzL21zaS9hY3Rpb24uaCwgZGxscy9tc2kvY2xhc3Nlcy5jLCBkbGxzL21zaS9oZWxwZXJzLmMsCgkgIGRsbHMvbXNpL21zaXByaXYuaCwgZGxscy9tc2kvcGFja2FnZS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJLSBidWlsZCBhIHN0YW5kYXJkIFdpbmUgbGlzdCBvZiBjbGFzc2VzIGluc3RlYWQgb2YgdXNpbmcgYW4gYXJyYXkKCS0gdXNlIGNsYXNzIHBvaW50ZXJzIGluc3RlYWQgb2YgYXJyYXkgaW5kZXhlcwoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglnY2MgNC4wIHdhcm5pbmcgZml4ZXMuCgoJKiBkbGxzL2NyeXB0MzIvY2VydC5jLCBkbGxzL2NyeXB0MzIvY3J5cHQzMi5zcGVjLAoJICBkbGxzL2NyeXB0MzIvY3J5cHQzMl9wcml2YXRlLmgsIGRsbHMvY3J5cHQzMi9tYWluLmMsCgkgIGRsbHMvY3J5cHQzMi90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL2NyeXB0MzIvdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvY3J5cHQzMi90ZXN0cy9jZXJ0LmM6CglKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglJbXBsZW1lbnRlZCBDcnlwdEhhc2hDZXJ0aWZpY2F0ZS4KCgkqIGRsbHMvbXNpL3BhY2thZ2UuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRG9uJ3QgZGVyZWZlcmVuY2UgdmFyaWFibGVzIGluIGEgdHJhY2UuCgoJKiBpbmNsdWRlL29iamlkbC5pZGwsIGluY2x1ZGUvd3R5cGVzLmlkbDoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCVVwZGF0ZSB0byBpbmNsdWRlIGFsbCBvZiB0aGUgaW50ZXJmYWNlcyBpbiB0aGUgUGxhdGZvcm0gU0RLIGFzIG9mIHRoZQoJWFAgU1AyIHZlcnNpb24uCgoJKiBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGUzMi9jb21wb2JqX3ByaXZhdGUuaDoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZSB1bnVzZWQgdGhyZWFkIGhhbmRsZSBlbnRyeSBmcm9tIHRoZSBhcGFydG1lbnQgc3RydWN0dXJlLgoKCSogZGxscy9tc2kvY2xhc3Nlcy5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggYSBzbWFsbCBidWcgaW50cm9kdWNlZCB3aGVuIGNvbnZlcnRpbmcgYXBwaWRzIHRvIGEgbGlzdC4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJRGlzcGxheSB0aGUgY29ycmVjdCB0ZXh0IHN0cmluZyBpbiB0aGUgYWN0aW9uIHRleHQgZmllbGQgZm9yIHRoZQoJZGlhbG9nIGJveGVzLiBBbHNvIHRoZSBzdHJpbmcgc2hvdWxkIGJlIGRlZm9ybWF0dGVkLgoKMjAwNS0wOC0yNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbnRkbGwvc2VydmVyLmMsIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwgc2VydmVyL2ZkLmMsCgkgIHNlcnZlci9oYW5kbGUuYywgc2VydmVyL2hhbmRsZS5oLCBzZXJ2ZXIvcHJvdG9jb2wuZGVmLAoJICBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvdHJhY2UuYzoKCURvbid0IGNhY2hlIGZpbGUgZGVzY3JpcHRvcnMgb3BlbiBvbiByZW1vdmFibGUgZGV2aWNlcy4KCgkqIGRsbHMvbnRkbGwvZmlsZS5jLCBkbGxzL250ZGxsL250ZGxsX21pc2MuaDoKCU1vdmVkIHRoZSBGaWxlRnNEZXZpY2VJbmZvcm1hdGlvbiBxdWVyeSB0byBhIHNlcGFyYXRlIGZ1bmN0aW9uLgoKCSogZGxscy9tc3ZjcnQvbWJjcy5jLCBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYzoKCVZpdGFseSBMaXBhdG92IDxsYXZAZXRlcnNvZnQucnU+CglBZGQgbWlzc2VkIF9tYnNjb2xsIGZ1bmN0aW9uLgoKCSogZGxscy9hdGwvYXRsX21haW4uYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCVZlcnNpb24gMSBhdGwgbW9kdWxlcyBvbmx5IGhhdmUgYSBzdHJ1Y3R1cmUgc2l6ZSBvZiAxMDAgYW5kIG5vCglmdW5jdGlvbnMgdG8gY2FsbC4KCgkqIGRsbHMvbXNpL2luc3RhbGwuYywgaW5jbHVkZS9tc2lxdWVyeS5oOgoJSm9oYW4gRGFobGluIDxqZGFobGluQGFzeW5jLmNvbS5icj4KCUltcGxlbWVudGVkIE1zaVNldENvbXBvbmVudFN0YXRlKi4KCgkqIGRsbHMvbXNpL3Rlc3RzL2RiLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVRlc3QgY2FzZSBmb3IgTXNpTW9kaWZ5VmlldyBhbmQgTXNpVmlld0dldEVycm9yLgoKCSogZGxscy9tc2kvY3JlYXRlLmMsIGRsbHMvbXNpL2RlbGV0ZS5jLCBkbGxzL21zaS9pbnNlcnQuYywKCSAgZGxscy9tc2kvbXNpcHJpdi5oLCBkbGxzL21zaS9zZWxlY3QuYywgZGxscy9tc2kvdGFibGUuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCBNc2lNb2RpZnlWaWV3IChNU0lNT0RJRllfSU5TRVJUX1RFTVBPUkFSWSkuCgoJKiBwcm9ncmFtcy93aW5lY2ZnL0RlLnJjLCBwcm9ncmFtcy93aW5lY2ZnL0VuLnJjLAoJICBwcm9ncmFtcy93aW5lY2ZnL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5lY2ZnL21haW4uYywKCSAgcHJvZ3JhbXMvd2luZWNmZy9yZXNvdXJjZS5oLCBwcm9ncmFtcy93aW5lY2ZnL3RoZW1lLmMsCgkgIHByb2dyYW1zL3dpbmVjZmcvd2luZWNmZy5oOgoJRnJhbmsgUmljaHRlciA8ZnJhbmsucmljaHRlckBnbWFpbC5jb20+CglBZGQgYW4gIkFwcGVhcmFuY2UiIHRhYiB0byBjb250cm9sIHRoZSBjdXJyZW50bHkgYWN0aXZlIHRoZW1lLgoKCSogZGxscy9tc2kvbXNpcXVlcnkuYywgaW5jbHVkZS9tc2lxdWVyeS5oOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQmV0dGVyIHN0dWIgZm9yIE1zaVZpZXdHZXRFcnJvci4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jOiBKb2hhbiBEYWhsaW4gPGpkYWhsaW5AYXN5bmMuY29tLmJyPgoJQWRkZWQgYSBudWxsIGNoZWNrIGZvciBjb21wb25lbnQuCgoJKiBkbGxzL21zaS9hY3Rpb24uaDogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWRkIGluY2x1ZGUgZ3VhcmQgdG8gaGVhZGVyIGFuZCBtYWtlIGZ1bmN0aW9ucyBleHRlcm4uCgoJKiBkbGxzL3gxMWRydi90ZXh0LmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglVc2UgdGhlIGNvcnJlY3QgcmVjdGFuZ2xlIGZvciBFVE9fT1BBUVVFIC0gc3BvdHRlZCBieSBKYW1lcyBIYXdraW5zLgoKCSogZGxscy9tc2kvaW5zdGFsbC5jLCBkbGxzL21zaS9tc2kuc3BlYzoKCUpvaGFuIERhaGxpbiA8amRhaGxpbkBhc3luYy5jb20uYnI+CglBZGRlZCBzdHVicyBmb3IgTXNpU2V0Q29tcG9uZW50U3RhdGVBIGFuZCBNc2lTZXRDb21wb25lbnRTdGF0ZVcuCgoJKiBkbGxzL21zaS9hY3Rpb24uaCwgZGxscy9tc2kvY2xhc3Nlcy5jLCBkbGxzL21zaS9oZWxwZXJzLmMsCgkgIGRsbHMvbXNpL21zaXByaXYuaCwgZGxscy9tc2kvcGFja2FnZS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJLSBidWlsZCBhIHN0YW5kYXJkIFdpbmUgbGlzdCBvZiBhcHBpZHMgaW5zdGVhZCBvZiB1c2luZyBhbiBhcnJheQoJLSB1c2UgYXBwaWQgcG9pbnRlcnMgaW5zdGVhZCBvZiBhcnJheSBpbmRleGVzCgoJKiBkbGxzL3dpbmluZXQvaHR0cC5jOiBKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCUF2b2lkIGhlYXAgY29ycnVwdGlvbiBieSBub3QgYWNjZXNzaW5nIG9sZCBIZWFwUmVBbGxvYydlZCBwb2ludGVyLgoKCSogZGxscy9vbGVhdXQzMi90bWFyc2hhbC5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIFJlbW92ZSByZWR1bmRhbnQgUXVlcnlJbnRlcmZhY2UgaW4gbWFyc2hhbF9pbnRlcmZhY2UgLSB0aGUgb2JqZWN0IGlzCgkgIGFsd2F5cyBxdWVyaWVkIGxhdGVyIG9uIGZvciB0aGUgY29ycmVjdCBpbnRlcmZhY2Ugb2YgdGhlIG9iamVjdC4KCS0gTWFrZSBzdXJlIHRvIFJlbGVhc2UgdGhlIG1hcnNoYWxlZCBwb2ludGVyIGluIHRoZSB0eXBlbGliIG1hcnNoYWxlcgoJICBvbmNlIGl0IGlzIG5vIGxvbmdlciByZXF1aXJlZC4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlcGljdHVyZS5jOiBNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmRlPgoJSW1wbGVtZW50IElQaWN0dXJlOjpnZXRfaFBhbCBmb3IgUElDVFlQRV9CSVRNQVAuCgoyMDA1LTA4LTIzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jOgoJVGhlIGV4cG9ydGVkIG5hbWUgc3RyaW5ncyBzaG91bGQgYmUgaW5zaWRlIHRoZSBleHBvcnQgZGlyZWN0b3J5IChmb3VuZAoJYnkgVml0YWxpeSBNYXJnb2xlbikuCgoJKiBkbGxzL2RkcmF3L3Rlc3RzL2QzZC5jOgoJU2F1bGl1cyBLcmFzdWNrYXMgPHNhdWxpdXMua3Jhc3Vja2FzQGllZWUub3JnPgoJU2tpcCB0ZXN0aW5nIG9uIElEaXJlY3QzRDc6OkNyZWF0ZURldmljZSgpIGZhaWx1cmUuCgoJKiBkbGxzL3dpbmVkM2Qvc3dhcGNoYWluLmM6IE9saXZlciBTdGllYmVyIDxvbGl2ZXJfc3RpZWJlckB5YWhvby5jby51az4KCVVwZGF0ZSB0aGUgaW1wbGVtZW50YXRpb24gb2YgR2V0RnJvbnRCdWZmZXJEYXRhIGluIHN0YXRlYmxvY2suCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9tY2lhdmkzMi8uY3ZzaWdub3JlLAoJICBkbGxzL21jaWF2aTMyL01ha2VmaWxlLmluLCBkbGxzL21jaWF2aTMyL2luZm8uYywKCSAgZGxscy9tY2lhdmkzMi9tY2lhdmkuYywgZGxscy9tY2lhdmkzMi9tY2lhdmkzMi5zcGVjLAoJICBkbGxzL21jaWF2aTMyL21jaWF2aV9yZXMucmMsIGRsbHMvbWNpYXZpMzIvbW1vdXRwdXQuYywKCSAgZGxscy9tY2lhdmkzMi9wcml2YXRlX21jaWF2aS5oLCBkbGxzL21jaWF2aTMyL3duZC5jLAoJICBkbGxzL3dpbm1tL21jaWF2aS8uY3ZzaWdub3JlLCBkbGxzL3dpbm1tL21jaWF2aS9NYWtlZmlsZS5pbiwKCSAgZGxscy93aW5tbS9tY2lhdmkvaW5mby5jLCBkbGxzL3dpbm1tL21jaWF2aS9tY2lhdmkuYywKCSAgZGxscy93aW5tbS9tY2lhdmkvbWNpYXZpLmRydi5zcGVjLCBkbGxzL3dpbm1tL21jaWF2aS9tY2lhdmlfcmVzLnJjLAoJICBkbGxzL3dpbm1tL21jaWF2aS9tbW91dHB1dC5jLCBkbGxzL3dpbm1tL21jaWF2aS9wcml2YXRlX21jaWF2aS5oLAoJICBkbGxzL3dpbm1tL21jaWF2aS93bmQuYywgZGxscy93aW5tbS90aW1lLmMsCgkgIHByb2dyYW1zL3dpbmVjZmcvcHJvcGVydGllcy5jLCB0b29scy93aW5lLmluZjoKCVLpbWkgQXNzYWlsbHkgPHJlbWkuYXNzYWlsbHlAZnJlZS5mcj4KCU1vdmVkIG1jaWF2aTMyIHRvIHRoZSB0b3AtbGV2ZWwgZGxscyBkaXJlY3RvcnkuCgoJKiBkbGxzL21zdmNydC9tYmNzLmMsIGRsbHMvbXN2aWRlby9tc3ZpZGVvMTYuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBnY2MgNC4wIHdhcm5pbmdzLgoKCSogZGxscy9udGRsbC9vbS5jLCBkbGxzL250ZGxsL3NlcnZlci5jLCBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsCgkgIHNlcnZlci9oYW5kbGUuYywgc2VydmVyL2hhbmRsZS5oLCBzZXJ2ZXIvcHJvdG9jb2wuZGVmLAoJICBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvdHJhY2UuYzoKCUFkZGVkIGEgc2VwYXJhdGUgc2V0X2hhbmRsZV9jYWNoZWRfZmQgcmVxdWVzdCBpbnN0ZWFkIG9mIGFidXNpbmcKCXNldF9oYW5kbGVfaW5mbyBmb3IgdGhhdC4KCgkqIGRsbHMva2VybmVsL3Byb2Nlc3MuYzoKCVJld3JvdGUgR2V0L1NldEhhbmRsZUluZm9ybWF0aW9uIHRvIGNhbGwgdGhlIGNvcnJlc3BvbmRpbmcgbnRkbGwKCWZ1bmN0aW9ucy4KCgkqIGRsbHMvaXRzcy9NYWtlZmlsZS5pbiwgZGxscy9pdHNzL2l0c3MuYywgZGxscy9pdHNzL3JlZ3N2ci5jLAoJICB0b29scy93aW5lLmluZjoKCUphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJUmVnaXN0ZXIgdGhlIElUU3RvcmFnZSBjbGFzcy4KCgkqIGRsbHMvcmljaGVkMjAvY2FyZXQuYywgZGxscy9yaWNoZWQyMC9yZWFkZXIuYzoKCVBoaWwgS3J5bG92IDxwaGlsQG5ld3N0YXIucmluZXQucnU+CglGaXhlZCBhIFJpY2hFZGl0IFJURiByZWFkZXIgYnVnIHdoaWNoIHJlc3VsdGVkIGluIGxvc3Mgb2YgdGV4dC4KCUVsaW1pbmF0ZWQgdW5uZWVkZWQgcmVjdXJzaW9uIGluIE1FX0luc2VydFRleHRGcm9tQ3Vyc29yKCkuCgoJKiBpbmNsdWRlL21zaHRtaHN0LmlkbDogSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCUFkZGVkIG1vcmUgZGVmaW5pdGlvbnMuCgoJKiBkbGxzL21zaS9hY3Rpb24uYywgZGxscy9tc2kvYWN0aW9uLmgsIGRsbHMvbXNpL2hlbHBlcnMuYywKCSAgZGxscy9tc2kvaW5zdGFsbC5jLCBkbGxzL21zaS9tc2lwcml2LmgsIGRsbHMvbXNpL3BhY2thZ2UuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gYnVpbGQgYSBzdGFuZGFyZCBXaW5lIGxpc3Qgb2YgZm9sZGVycyBpbnN0ZWFkIG9mIHVzaW5nIGFuIGFycmF5CgktIHVzZSBmb2xkZXIgcG9pbnRlcnMgaW5zdGVhZCBvZiBhcnJheSBpbmRleGVzCgoJKiBkb2N1bWVudGF0aW9uL1BBQ0tBR0lORzogVG9tIFdpY2tsaW5lIDx0d2lja2xpbmVAZ21haWwuY29tPgoJUmVtb3ZlIHJlZmVyZW5jZSB0byBjb25maWcgZmlsZS4KCUFkZCAuZGViIGZpbGUgd2l0aCAucnBtIGZpbGUgZm9yIHN1Y2Nlc3NmdWwgaW5zdGFsbC4KCgkqIERFVkVMT1BFUlMtSElOVFM6IFRvbSBXaWNrbGluZSA8dHdpY2tsaW5lQGdtYWlsLmNvbT4KCVJlbW92ZSByZWZlcmVuY2UgdG8gZG9jdW1lbnRhdGlvbi9zYW1wbGVzLy4KCUFkZCByZWNlbnRseSBpbXBsZW1lbnRlZCBkbGxzLgoKCSogZGxscy94MTFkcnYveHJlbmRlci5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJQXZvaWQgdXNpbmcgWFJlbmRlckZpbmRTdGFuZGFyZEZvcm1hdCBhcyBvbGRlciBsaWJyYXJpZXMgZG9uJ3QgaGF2ZQoJaXQuCgoJKiBkbGxzL2NvbWN0bDMyL3RhYi5jLCBkbGxzL2NvbWN0bDMyL3Rlc3RzL3RhYi5jOgoJVml0YWxpeSBNYXJnb2xlbiA8d2luZS1wYXRjaEBraWV2aW5mby5jb20+CglGaXggaGFuZGxpbmcgb2YgbWluaW11bSB0YWIgd2lkdGguCglBZGQgbW9yZSB0ZXN0cyB0byB0ZXN0IGl0LgoKCSogZGxscy9tc2kvYWN0aW9uLmMsIGRsbHMvbXNpL2FjdGlvbi5oLCBkbGxzL21zaS9jbGFzc2VzLmMsCgkgIGRsbHMvbXNpL2N1c3RvbS5jLCBkbGxzL21zaS9maWxlcy5jLCBkbGxzL21zaS9mb3JtYXQuYywKCSAgZGxscy9tc2kvaGVscGVycy5jLCBkbGxzL21zaS9tc2lwcml2LmgsIGRsbHMvbXNpL3BhY2thZ2UuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gYnVpbGQgYSBzdGFuZGFyZCBXaW5lIGxpc3Qgb2YgZmlsZXMgaW5zdGVhZCBvZiB1c2luZyBhbiBhcnJheQoJLSB1c2UgZmlsZSBwb2ludGVycyBpbnN0ZWFkIG9mIGFycmF5IGluZGV4ZXMKCgkqIGRsbHMvcmljaGVkMjAvcm93LmM6IFBoaWwgS3J5bG92IDxwaGlsQG5ld3N0YXIucmluZXQucnU+CglGaXhlZCBFTV9FWExJTkVGUk9NQ0hBUiB0byB3b3JrIGZvciBsYXN0IHJvdyBvZiBhIHBhcmFncmFwaC4KCgkqIGRsbHMvY29tY3RsMzIvcHJvZ3Jlc3MuYywgZGxscy9jb21jdGwzMi90ZXN0cy8uY3ZzaWdub3JlLAoJICBkbGxzL2NvbWN0bDMyL3Rlc3RzL01ha2VmaWxlLmluLCBkbGxzL2NvbWN0bDMyL3Rlc3RzL3Byb2dyZXNzLmM6CglNaWNoYWVsIEthdWZtYW5uIDxoYWxsb0BtaWNoYWVsLWthdWZtYW5uLmNoPgoJLSBSZWRyYXcgaW1tZWRpYXRlbHkgdXBvbiBQQk1fU0VUUE9TLCBQQk1fREVMVEFQT1MsIFBCTV9TVEVQSVQuCgktIE5ldyB0ZXN0cy4KCgkqIHByb2dyYW1zL3dpbmVkYmcvd2luZWRiZy5jOiBHbGVubiBXdXJzdGVyIDxnd3Vyc3RlckBzY3MuY2FybGV0b24uY2E+CglEb24ndCBwYXNzIG9uIEVIX1NUQUNLX0lOVkFMSUQgZXhjZXB0aW9ucy4KCgkqIGRsbHMvZ2RpL2VuaG1mZHJ2L2VuaG1ldGFmaWxlZHJ2LmgsIGRsbHMvZ2RpL2VuaG1mZHJ2L2dyYXBoaWNzLmMsCgkgIGRsbHMvZ2RpL2ZvbnQuYywgZGxscy9nZGkvZ2RpX3ByaXZhdGUuaCwKCSAgZGxscy9nZGkvbWZkcnYvbWV0YWZpbGVkcnYuaCwgZGxscy9nZGkvbWZkcnYvdGV4dC5jLAoJICBkbGxzL3R0eWRydi9ncmFwaGljcy5jLCBkbGxzL3R0eWRydi90dHlkcnYuaCwKCSAgZGxscy90dHlkcnYvd2luZXR0eS5kcnYuc3BlYywgZGxscy93aW5lcHMvcHNkcnYuaCwKCSAgZGxscy93aW5lcHMvdGV4dC5jLCBkbGxzL3dpbmVwcy93aW5lcHMuZHJ2LnNwZWMsIGRsbHMveDExZHJ2L3RleHQuYywKCSAgZGxscy94MTFkcnYvd2luZXgxMS5kcnYuc3BlYywgZGxscy94MTFkcnYveDExZHJ2LmgsCgkgIGRsbHMveDExZHJ2L3hyZW5kZXIuYzoKCUh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglNb3ZlIGEgYnVuY2ggb2YgY29tbW9uIGNvZGUgZnJvbSB0aGUgZHJpdmVycyBpbnRvIGdkaS4KCgkqIGRsbHMvc2hlbGwzMi90ZXN0cy9NYWtlZmlsZS5pbiwgZGxscy9zaGVsbDMyL3Rlc3RzL3NobGZvbGRlci5jOgoJTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJQWRkZWQgc29tZSB0ZXN0cyBmb3IgQ0xTSURfRm9sZGVyU2hvcnRjdXQgb2JqZWN0cy4KCgkqIGRsbHMvbXN4bWwzL3Rlc3RzL2RvbWRvYy5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBZGQgc29tZSBub2RlIHRlc3RzLgoKCSogZGxscy9zaGVsbDMyL3Rlc3RzL3NobGV4ZWMuYywgZGxscy90d2Fpbi9jYXBhYmlsaXR5LmMsCgkgIGRsbHMvdmVyc2lvbi9yZXNvdXJjZS5jLCBkbGxzL3dpbmFzcGkvd2luYXNwaTE2LmMsCgkgIGRsbHMvd2luYXNwaS93aW5hc3BpMzIuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBnY2MgNC4wIHdhcm5pbmdzLgoKCSogaW5jbHVkZS93aW5kZWYuaCwgaW5jbHVkZS93aW5lL2RlYnVnLmg6CglLZXZpbiBLb2x0emF1IDxrZXZpbkBwbG9wLm9yZz4KCUZpeCBwb2ludGVyIGNhc3Qgd2FybmluZ3MgaW4gNjRiaXQuCgoJKiBkbGxzL2QzZDkvY3ViZXRleHR1cmUuYywgZGxscy9kM2Q5L2QzZDkuc3BlYywgZGxscy9kM2Q5L2QzZDlfbWFpbi5jLAoJICBkbGxzL2QzZDkvZDNkOV9wcml2YXRlLmgsIGRsbHMvZDNkOS9kZXZpY2UuYywgZGxscy9kM2Q5L2RpcmVjdHguYywKCSAgZGxscy9kM2Q5L2luZGV4YnVmZmVyLmMsIGRsbHMvZDNkOS9waXhlbHNoYWRlci5jLAoJICBkbGxzL2QzZDkvc3RhdGVibG9jay5jLCBkbGxzL2QzZDkvc3VyZmFjZS5jLCBkbGxzL2QzZDkvc3dhcGNoYWluLmMsCgkgIGRsbHMvZDNkOS90ZXh0dXJlLmMsIGRsbHMvZDNkOS92ZXJ0ZXhidWZmZXIuYywKCSAgZGxscy9kM2Q5L3ZlcnRleHNoYWRlci5jLCBkbGxzL2QzZDkvdm9sdW1lLmMsCgkgIGRsbHMvZDNkOS92b2x1bWV0ZXh0dXJlLmMsIGluY2x1ZGUvd2luZS93aW5lZDNkX3R5cGVzLmg6CglPbGl2ZXIgU3RpZWJlciA8b2xpdmVyX3N0aWViZXJAeWFob28uY28udWs+CglUaWR5IHVwIGQzZDkgYW5kIGZpbmFsaXplIHBhc3NpbmcgZDNkOSBjYWxscyB0byB3aW5lZDNkIGZvciBub3cuCgoJKiBkbGxzL29sZWF1dDMyL3Rlc3RzL3ZhcnRlc3QuYywgZGxscy9vbGVhdXQzMi92YXJpYW50LmM6CglNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmRlPgoJLSBWYXJBZGQsIFZhck11bDogSTQgb3ZlcmZsb3dzIHRvIFI4IGFuZCBub3QgSTggZXZlbiBpZiB0aGUgcmVzdWx0CgkgIHdvdWxkIGZpdCBpbiBJOC4gRml4IHRlc3RzLgoJLSBEb2N1bWVudCBhIGJyb2tlbmVzcyBpbiB0aGUgaGFuZGxpbmcgb2YgSTggbnVtYmVycyBpbgoJICBWYXJOdW1Gcm9tUGFyc2VOdW0uIEZpeCB0ZXN0cy4KCgkqIGRsbHMvcmljaGVkMjAvZWRpdG9yLmM6IFBoaWwgS3J5bG92IDxwaGlsQG5ld3N0YXIucmluZXQucnU+CglBZGRlZCBzdXBwb3J0IGZvciBiYWNrd2FyZCBzZWFyY2ggdG8gUmljaEVkaXQgRU1fRklORFRFWFRbQVddLAoJRU1fRklORFRFWFRFWFtBV10gbWVzc2FnZSBoYW5kbGVyLgoKCSogZGxscy9hZHZhcGkzMi9zZXJ2aWNlLmMsIGluY2x1ZGUvd2luc3ZjLmg6CglLZXZpbiBLb2x0emF1IDxrZXZpbkBwbG9wLm9yZz4KCVByb3Blcmx5IGRlY2xhcmUgaGFuZGxlcy4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaDogTWljaGFlbCBLYXVmbWFubiA8aGFsbG9AbWljaGFlbC1rYXVmbWFubi5jaD4KCUFkZGVkIFNCX1NJTVBMRUlELgoKCSogZGxscy9tc2kvYWN0aW9uLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglNYWtlIGluZGV4IElOVCBub3QgVUlOVCBiZWNhdXNlIGl0IGNhbiBiZSAtMS4KCjIwMDUtMDgtMjIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2RkcmF3L2RldmljZV9vcGVuZ2wuYzoKCVNhdWxpdXMgS3Jhc3Vja2FzIDxzYXVsaXVzLmtyYXN1Y2thc0BpZWVlLm9yZz4KCURvbid0IGxlYWsgYSBsaXN0IG9mIHZpc3VhbHMgKHdpdGggYWR2aWNlIG9mIEphY2VrIENhYmFuKS4KCgkqIGRsbHMvdmVyc2lvbi90ZXN0cy9pbmZvLmM6CglBZGQgYW4gZXh0cmEgdGVzdCB0byBzaG93IGZhaWxpbmcgYmVoYXZpb3IuCgoJKiBkbGxzL3dsZGFwMzIvZXJyb3IuYywgZGxscy93bGRhcDMyL2luaXQuYywgZGxscy93bGRhcDMyL21pc2MuYywKCSAgZGxscy93bGRhcDMyL3dpbmxkYXBfcHJpdmF0ZS5oLCBkbGxzL3dsZGFwMzIvd2xkYXAzMi5zcGVjOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglJbXBsZW1lbnQgTGRhcEdldExhc3RFcnJvciwgY2xkYXBfb3BlbiosIGxkYXBfYWJhbmRvbiwKCWxkYXBfY2hlY2tfZmlsdGVyKiwgbGRhcF9jbGVhbnVwLCBsZGFwX2Nvbm5fZnJvbV9tc2cgYW5kCglsZGFwX2Nvbm5lY3QuCgoJKiBkbGxzL3NoZWxsMzIvc2hmbGRyX3VuaXhmcy5jOgoJTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJSW5pdGlhbGl6ZSBhbGwgbWVtYmVycyBpbiBVbml4Rm9sZGVyIGNvbnN0cnVjdG9yLgoJU3VwcG9ydCBOVUxMIHZhbHVlIHBpZGxzIGluIEdldERpc3BsYXlOYW1lT2YgbWV0aG9kLgoKCSogZGxscy9yaWNoZWQyMC9lZGl0b3IuYzogUGhpbCBLcnlsb3YgPHBoaWxAbmV3c3Rhci5yaW5ldC5ydT4KCUZpeGVkIEVNX1NFVEVWRU5UTUFTSyBSaWNoRWRpdCBtZXNzYWdlIGhhbmRsZXIgdG8gcmV0dXJuIG9sZCBldmVudAoJbWFzay4KCgkqIGRsbHMvdXNlci9tZW51LmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBtYWdpYyBpdGVtIGhhbmRsaW5nIGFuZCB3YXJuaW5ncy4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jLCBkbGxzL21zaS9hY3Rpb24uaCwgZGxscy9tc2kvY2xhc3Nlcy5jLAoJICBkbGxzL21zaS9ldmVudHMuYywgZGxscy9tc2kvaGVscGVycy5jLCBkbGxzL21zaS9pbnN0YWxsLmMsCgkgIGRsbHMvbXNpL21zaXByaXYuaCwgZGxscy9tc2kvcGFja2FnZS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJLSBidWlsZCBhIHN0YW5kYXJkIFdpbmUgbGlzdCBvZiBmZWF0dXJlcyBpbnN0ZWFkIG9mIHVzaW5nIGFuIGFycmF5CgktIHVzZSBmZWF0dXJlIHBvaW50ZXJzIGluc3RlYWQgb2YgYXJyYXkgaW5kZXhlcwoKCSogZGxscy9rZXJuZWwvdnhkLmM6IEl2YW4gTGVvIFB1b3RpIDxpdmFubGVvQGdtYWlsLmNvbT4KCUxldCBEZXZpY2VJb0NvbnRyb2wgY2FsbCB0aGUgYXBwcm9wcmlhdGUgbmF0aXZlIGludGVyZmFjZS4KCgkqIGRsbHMvcmljaGVkMjAvcmVhZGVyLmM6IFBoaWwgS3J5bG92IDxwaGlsQG5ld3N0YXIucmluZXQucnU+CglBdXRvbWF0aWNhbGx5IHNldCBkZWZhdWx0IGZvbnQgYWZ0ZXIgcGFyc2luZyBhIGZvbnQgdGFibGUgaW4gUmljaEVkaXQKCVJURiByZWFkZXIuCgoJKiBkbGxzL21zaHRtbC9tc2h0bWxfcHJpdmF0ZS5oLCBkbGxzL21zaHRtbC9vbGVvYmouYzoKCUphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CgktIENhbGwgTG9ja0NvbnRhaW5lciBvbmx5IGlmIGl0J3Mgbm90IGFscmVhZHkgbG9ja2VkL3VubG9ja2VkLgoJLSBPbmx5IHJldHVybiBTX09LIGluIFNldENsaWVudFNpdGUgaWYgSU9sZUNsaWVudFNpdGUgaXMgbm90IGNoYW5nZWQuCgoJKiBkbGxzL3dsZGFwMzIvTWFrZWZpbGUuaW4sIGRsbHMvd2xkYXAzMi9yZW5hbWUuYywKCSAgZGxscy93bGRhcDMyL3dpbmxkYXBfcHJpdmF0ZS5oLCBkbGxzL3dsZGFwMzIvd2xkYXAzMi5zcGVjOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglJbXBsZW1lbnQgbGRhcF9yZW5hbWUqIGZ1bmN0aW9ucy4KCgkqIGRsbHMvY29tY3RsMzIvdGFiLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglGaXggZm9yIGRyZWFtd2VhdmVyIHNpdGUgZGVmaW5pdGlvbiBkaWFsb2cuIE5lZWQgdG8gaW5pdGlhbGl6ZSB0aGUKCXJlY3QgZm9yIGEgdGFiIGNvbnRyb2wgdG8gYW4gZW1wdHkgcmVjdCBpZiBpdCBpcyBub3QgdmlzaWJsZS4KCgkqIGRsbHMvYXRsL3JlZ2lzdHJhci5jOiBLZXZpbiBLb2x0emF1IDxrZXZpbkBwbG9wLm9yZz4KCUZpeCAnY2FzdCB0byBwb2ludGVyIGZyb20gaW50ZWdlciBvZiBkaWZmZXJlbnQgc2l6ZScgd2FybmluZ3MgaW4KCTY0Yml0LgoKCSogZGxscy9nZGkvcGF0aC5jLCBkbGxzL3VzZXIvc3lzcGFyYW1zLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggZ2NjIDQuMCB3YXJuaW5ncy4KCgkqIGRsbHMvdXh0aGVtZS9tc3N0eWxlcy5jOiBLZXZpbiBLb2x0emF1IDxrZXZpbkBwbG9wLm9yZz4KCUZpeCAnY2FzdCB0byBwb2ludGVyIGZyb20gaW50ZWdlciBvZiBkaWZmZXJlbnQgc2l6ZScgd2FybmluZ3MgaW4KCTY0Yml0LgoKCSogc2VydmVyL3B0cmFjZS5jLCBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90aHJlYWQuaDoKCURvbid0IHRyeSB0byBkZXRhY2ggZnJvbSBhIHRocmVhZCB0aGF0IGlzIGV4aXRpbmcsIHRvIGF2b2lkIHRyaWdnZXJpbmcKCWEga2VybmVsIHJhY2UgY29uZGl0aW9uLgoKCSogZGxscy93aW5lZDNkL2Jhc2V0ZXh0dXJlLmMsIGRsbHMvd2luZWQzZC9kZXZpY2UuYywKCSAgZGxscy93aW5lZDNkL3N0YXRlYmxvY2suYywgZGxscy93aW5lZDNkL3dpbmVkM2RfcHJpdmF0ZS5oOgoJT2xpdmVyIFN0aWViZXIgPG9saXZlcl9zdGllYmVyQHlhaG9vLmNvLnVrPgoJRml4IHF1aXRlIGEgZmV3IHRleHR1cmluZyBwcm9ibGVtcyBhbmQgY2FzZXMgd2hlcmUgdGV4dCBpc24ndCBiZWluZwoJY29ycmVjdGx5IGRpc3BsYXRlZC4KCgkqIGRsbHMvcmljaGVkMjAvZWRpdG9yLmMsIGRsbHMvcmljaGVkMjAvcmVhZGVyLmMsIGRsbHMvcmljaGVkMjAvcnRmLmg6CglQaGlsIEtyeWxvdiA8cGhpbEBuZXdzdGFyLnJpbmV0LnJ1PgoJQWRkZWQgaGFuZGxpbmcgb2YgZGVmZiBSVEYgY29udHJvbCB3b3JkLgoKCSogZGxscy9zZWN1cjMyL3dyYXBwZXIuYzogS2FpIEJsaW4gPGJsaW5AZ214Lm5ldD4KCUZpeGVkIGEgY291cGxlIG9mIGJ1Z3MgaW4gSW5pdGlhbGl6ZVNlY3VyaXR5Q29udGV4dChBL1cpIGFuZAoJQWNjZXB0U2VjdXJpdHlDb250ZXh0LgoKCSogZGxscy9tc2h0bWwvbnNlbWJlZC5jOiBKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJRGlzYWJsZSB1c2luZyBuc1dlYkJyb3dzZXJTdHJlYW0uCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9rZXJuZWwvdGltZS5jLCBpbmNsdWRlL2NvbmZpZy5oLmluOgoJR2VyYWxkIFBmZWlmZXIgPGdlcmFsZEBwZmVpZmVyLmNvbT4KCVByZWZlciBzeXMvbGltaXRzLmggb3ZlciBtYWNoaW5lL2xpbWl0cy5oLgoKCSogZGxscy9xdWFydHovbWVtYWxsb2NhdG9yLmMsIGRsbHMvcXVhcnR6L3Rlc3RzLy5jdnNpZ25vcmUsCgkgIGRsbHMvcXVhcnR6L3Rlc3RzL01ha2VmaWxlLmluLCBkbGxzL3F1YXJ0ei90ZXN0cy9tZW1hbGxvY2F0b3IuYzoKCUNocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCVJldHVybiBTX09LIHdoZW4gY29tbWl0dGluZy9kZWNvbWl0dGluZyBhbiBhbHJlYWR5Cgljb21taXR0ZWQvZGVjb21taXR0ZWQgYWxsb2NhdG9yLgoJQWRkIGNvcnJlc3BvbmRpbmcgdGVzdCBjYXNlLgoJSW1wcm92ZSB0cmFjZXMuCgoJKiBkbGxzL29sZTMyL3N0Z19wcm9wLmMsIGRsbHMvc2hlbGwzMi9yZWdzdnIuYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsb2xlLmMsIGRsbHMvc2hlbGwzMi9zaGVsbHJlZy5jLAoJICBkbGxzL3VzZXIvc3lzcGFyYW1zLmMsIGRsbHMvd2lubW0vbW1zeXN0ZW0uYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBzb21lIGdjYyA0LjAgd2FybmluZ3MuCgoJKiBkbGxzL21zaHRtbC9NYWtlZmlsZS5pbiwgZGxscy9tc2h0bWwvb2xlb2JqLmMsCgkgIGRsbHMvbXNodG1sL3Rlc3RzL2h0bWxkb2MuYzoKCUphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CgktIEFkZGVkIE9uQW1iaWVudFByb3BlcnR5Q2hhbmdlIGltcGxlbWVudGF0aW9uLgoJLSBDYWxsIElEaXNwYXRjaDo6SW52b2tlIHdoZW4gbmF0aXZlIGRvZXMgKHdpdGggdGVzdCkuCgoJKiBkbGxzL21zeG1sMy9ub2RlLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCBJWE1MRE9NTm9kZTo6aGFzQ2hpbGROb2RlKCkuCgoJKiBkbGxzL21zeG1sMy9kb21kb2MuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRm9yd2FyZCBJWE1MRE9NRG9jdW1lbnQgbWV0aG9kcyB0byBjb250YWluZWQgbm9kZS4KCgkqIHByb2dyYW1zL3dpbmVmaWxlL0NzLnJjLCBwcm9ncmFtcy93aW5lZmlsZS9EZS5yYywKCSAgcHJvZ3JhbXMvd2luZWZpbGUvRW4ucmMsIHByb2dyYW1zL3dpbmVmaWxlL1N2LnJjOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZSB1bm5lY2Vzc2FyeSAjcHJhZ21hIGNvZGVfcGFnZSh4eHh4KSBzdGF0ZW1lbnRzIGZyb20gd2luZWZpbGUKCS5yYyBmaWxlcy4KCgkqIGRsbHMvbXN4bWwzL2VsZW1lbnQuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRm9yd2FyZCBJWE1MRE9NRWxlbWVudCBtZXRob2RzIGRlcml2ZWQgZnJvbSBJWE1MRE9NTm9kZSB0byB0aGUKCWVsZW1lbnQncyBjb250YWluZWQgbm9kZS4KCgkqIGRsbHMva2VybmVsL3N5bmMuYzogUGhpbCBLcnlsb3YgPHBoaWxAbmV3c3Rhci5yaW5ldC5ydT4KCUZpeGVkIEludGVyTG9ja2VkKiBmdW5jdGlvbiBkZWZpbml0aW9ucyBmb3Igbm9uLXg4NiBwbGF0Zm9ybXMgaW4KCWFjY29yZGFuY2Ugd2l0aCB0aGUgcmVjZW50IGNvcnJlc3BvbmRpbmcgY2hhbmdlIG9mIHRoZWlyIGRlY2xhcmF0aW9ucwoJaW4gd2luYmFzZS5oLgoKCSogZGxscy9tc2h0bWwvcGVyc2lzdC5jOiBKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJVXNlIHBpYmMgYXJndW1lbnQgb2YgSVBlcnNpc3RNb25pa2VyOjpMb2FkLgoKCSogZGxscy9vbGVhdXQzMi90ZXN0cy9vbGVmb250LmM6IFdhbHQgT2didXJuIDxyZXViZW5AdWdjcy5jYWx0ZWNoLmVkdT4KCUFkZCB0ZXN0cyBmb3Igb2xlZm9udCBzaXplIGZ1bmN0aW9ucyAmIGNvbnZlcnNpb25zLgoKCSogZGxscy9vbGVhdXQzMi9vbGVmb250LmM6IFdhbHQgT2didXJuIDxyZXViZW5AdWdjcy5jYWx0ZWNoLmVkdT4KCVdoZW4gYXBwbHlpbmcgbG9naWNhbCAvIGhpbWV0cmljIHJhdGlvIHRvIG9sZWZvbnQgc2l6ZXMsIG11c3QgZGl2aWRlCglieSB0aGUgc3RhbmRhcmQgcmF0aW8gNzIgLyAyNTQwLgoKCSogZGxscy94MTFkcnYvb3BlbmdsLmM6IFNhdWxpdXMgS3Jhc3Vja2FzIDxzYXVsaXVzLmtyYXN1Y2thc0BpZWVlLm9yZz4KCURvbid0IGRlcmVmZXJlbmNlIGEgTlVMTCB2aXN1YWwgcG9pbnRlci4KCgkqIGRsbHMvbXNodG1sL25zZW1iZWQuYzogSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCUFsd2F5cyBhZGQgZ2Vja28gZGlyZWN0b3J5IHRvIHRoZSBwYXRoIGJlZm9yZSBsb2FkaW5nIHhwY29tLgoKCSogZGxscy9hdGwvcmVnaXN0cmFyLmM6IFN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJUHJpbnQgc29tZXRoaW5nIHVzZWZ1bCBpbiB0cmFjZSBhbmQgZml4bWUuCgoJKiBkbGxzL3F1YXJ0ei9maWx0ZXJncmFwaC5jLCBkbGxzL3F1YXJ0ei90cmFuc2Zvcm0uYzoKCUNocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCVByb3Blcmx5IGFsbG9jYXRlL3JlbGVhc2UgbWVtb3J5IHdoZW4gYWRkaW5nIGZpbHRlcnMgdG8gdGhlIGZpbHRlcmdyYXBoLgoJV2hlbiBjb25uZWN0aW5nIHBpbiwgZGlzY2FyZCBmaWx0ZXIgd2hpY2ggaXMgdGhlIHNhbWUgYXMgdGhlIHVwc3RyZWFtCglvbmUuCglSZW1vdmUgd3JvbmcgZXh0cmEgSUJhc2VGaWx0ZXJfUmVsZWFzZS4KCUltcHJvdmUgdHJhY2VzIGJ5IHNob3dpbmcgZmlsdGVycyBvd2luZyBwaW5zIHdlIHdhbnQgdG8gY29ubmVjdCBvcgoJcmVuZGVyLgoJUHJvcGVybHkgaW5pdGlhbGl6ZSBvdXRwdXQgcGluIG9mIHRyYW5zZm9ybSBmaWx0ZXIuCgoJKiBkbGxzL2RkcmF3L3N1cmZhY2VfZGliLmM6CglNYXhpbWUgQmVsbGVuZ+kgPG1heGltZS5iZWxsZW5nZUBsYXBvc3RlLm5ldD4KCUZpeCByZWdyZXNzaW9uIGluIGNvbG9yIGtleWluZyB3aXRoIFJHQiBtYXNrLgoKCSogZGxscy9jb21jdGwzMi9kYXRldGltZS5jOgoJTWljaGFlbCBLYXVmbWFubiA8aGFsbG9AbWljaGFlbC1rYXVmbWFubi5jaD4KCUhhbmRsZSBXTV9HRVRGT05UIGFuZCBXTV9TRVRGT05ULgoKCSogZGxscy93aW5tbS93aW5lb3NzL21peGVyLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglGaXggbWl4ZXIgZGV0ZWN0aW9uIGZvciBtdWx0aXBsZSBzb3VuZCBjYXJkcy4KCgkqIGRsbHMvcmljaGVkMjAvZWRpdG9yLmM6IFBoaWwgS3J5bG92IDxwaGlsQG5ld3N0YXIucmluZXQucnU+CglBZGRlZCBjb21tb24ga2V5Ym9hcmQgc2hvcnRjdXRzIGZvciBTZWxlY3QgQWxsLCBVbmRvLCBSZWRvLCBDdXQsIENvcHkKCWFuZCBQYXN0ZSB0byBSaWNoRWRpdC4KCgkqIGRsbHMvb2xlMzIvY29tcG9iai5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CgktIHJldHVybiBhIHByZWNvbXB1dGVkIHJlc3VsdCBmb3IgYSBOVUxMIHN0cmluZwoJLSBwYXNzIHN0cmxlbiBhbiBMUFNUUiB0byBlbGltaW5hdGUgYSBzaWduIHdhcm5pbmcKCgkqIGRsbHMvbXN2aWRlby9tc3ZmdzMyLnNwZWMsIGRsbHMvbXN2aWRlby9tc3ZpZGVvX21haW4uYywKCSAgZGxscy9tc3ZpZGVvL21zdmlkZW9fcHJpdmF0ZS5oLCBpbmNsdWRlL3Zmdy5oOgoJS2V2aW4gS29sdHphdSA8a2V2aW5AcGxvcC5vcmc+CglGaXggJ2Nhc3QgZnJvbSBwb2ludGVyIHRvIGludGVnZXIgb2YgZGlmZmVyZW50IHNpemUnIHdhcm5pbmdzIGluCgk2NGJpdC4KCgkqIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYzogS2V2aW4gS29sdHphdSA8a2V2aW5AcGxvcC5vcmc+CglSZW1vdmUgJ2Nhc3QgZnJvbSBwb2ludGVyIHRvIGludGVnZXIgb2YgZGlmZmVyZW50IHNpemUnIHdhcm5pbmdzIGluCgk2NGJpdCwKCgkqIGRsbHMvZ2RpL3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMvZ2RpL3Rlc3RzL01ha2VmaWxlLmluLAoJICBkbGxzL2dkaS90ZXN0cy9wYWxldHRlLmM6CglHbGVubiBXdXJzdGVyIDxnd3Vyc3RlckBzY3MuY2FybGV0b24uY2E+CglTdGFydCB0byBhZGQgc29tZSB0ZXN0cyBmb3IgYmFzaWMgcGFsZXR0ZSBvcGVyYXRpb25zLgoKCSogcHJvZ3JhbXMvcmVnZWRpdC9hYm91dC5jOgoJRmVsaXggTmF3b3RobmlnIDxmZWxpeC5uYXdvdGhuaWdAdC1vbmxpbmUuZGU+CglSZXBsYWNlICJSZWdpc3RyeSBFeHBsb3JlciIgYnkgIlJlZ2lzdHJ5IEVkaXRvciIgaW4gYWJvdXQgZGlhbG9nLgoKCSogcHJvZ3JhbXMvd2luZW1lbnVidWlsZGVyL3dpbmVtZW51YnVpbGRlci5jOgoJTWF4aW1lIEJlbGxlbmfpIDxtYXhpbWUuYmVsbGVuZ2VAbGFwb3N0ZS5uZXQ+CglNYWtlIHRoZSBpY29uIGNob2ljZSBhbGdvcml0aG0gcmVhbGx5IGNob29zZSB0aGUgYmVzdCBpY29uLgoKCSogZGxscy93bGRhcDMyL01ha2VmaWxlLmluLCBkbGxzL3dsZGFwMzIvbW9kcmRuLmMsCgkgIGRsbHMvd2xkYXAzMi93aW5sZGFwX3ByaXZhdGUuaCwgZGxscy93bGRhcDMyL3dsZGFwMzIuc3BlYzoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJSW1wbGVtZW50IGxkYXBfbW9kcmRuKiBmdW5jdGlvbnMuCgoJKiBpbmNsdWRlL3JwY2RjZS5oOiBLYWkgQmxpbiA8YmxpbkBnbXgubmV0PgoJQWRkZWQgU0VDX1dJTk5UX0FVVEhfSURFTlRJVFkgc3RydWN0LgoKCSogZGxscy91c2VyL21lc3NhZ2UuYywgaW5jbHVkZS93aW51c2VyLmg6CglKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJRml4IFJlZ2lzdGVyV2luZG93TWVzc2FnZSBkZWNsYXJhdGlvbiBhbmQgaW1wcm92ZSBkZWJ1ZyBtZXNzYWdlLgoKCSogZGxscy9tc2kvYWN0aW9uLmMsIGRsbHMvbXNpL2FjdGlvbi5oLCBkbGxzL21zaS9jbGFzc2VzLmMsCgkgIGRsbHMvbXNpL2ZpbGVzLmMsIGRsbHMvbXNpL2Zvcm1hdC5jLCBkbGxzL21zaS9oZWxwZXJzLmMsCgkgIGRsbHMvbXNpL2luc3RhbGwuYywgZGxscy9tc2kvbXNpcHJpdi5oLCBkbGxzL21zaS9wYWNrYWdlLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CgktIGJ1aWxkIGEgc3RhbmRhcmQgV2luZSBsaXN0IG9mIGNvbXBvbmVudHMgaW5zdGVhZCBvZiB1c2luZyBhbiBhcnJheQoJLSB1c2UgY29tcG9uZW50IHBvaW50ZXJzIGluc3RlYWQgb2YgYXJyYXkgaW5kZXhlcwoKCSogZGxscy9zaGVsbDMyL3Rlc3RzL3NobGZvbGRlci5jOgoJU2F1bGl1cyBLcmFzdWNrYXMgPHNhdWxpdXMua3Jhc3Vja2FzQGllZWUub3JnPgoJTWFrZSBmaWxlIG9wZXJhdGlvbnMgc3VjY2VlZCBvbiBXaW45eCB0b28uCgoJKiBkbGxzL3gxMWRydi93aW5kb3cuYzogVG9kZCBNb2tyb3MgPHRtb2tyb3NAdG1va3Jvcy5uZXQ+CglGaXggYSBmb2N1cyBzdGVhbGluZyBidWcgaW50cm9kdWNlZCBieSB0aGUgbWFuYWdlZCBmbGFnIGNoYW5nZXMuCgoJKiBkbGxzL3dpbmVkM2QvZGV2aWNlLmM6IE9saXZlciBTdGllYmVyIDxvbGl2ZXJfc3RpZWJlckB5YWhvby5jby51az4KCVRpZHkgdXAgc29tZSBmb3JtYXR0aW5nLCBpbXByb3ZlIGVycm9yIGhhbmRsaW5nIGFuZCBlcnJvciBsb2dnaW5nIGFuZAoJZml4IGEgY291cGxlIG9mIHNwZWxsaW5nIG1pc3Rha2VzLgoKMjAwNS0wOC0xOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL2F0b20uYzogTWFyY3VzIE1laXNzbmVyIDxtZWlzc25lckBzdXNlLmRlPgoJUHJvdGVjdCBHbG9iYWxBZGRBdG9tQSBzdHJpbmcgaGFuZGxpbmcgYnkgZXhjZXB0aW9uIGhhbmRsZXIgKGZvcgoJYnJva2VuIHByb2dyYW1zKS4KCgkqIHByb2dyYW1zL3dpbmVjZmcvZHJpdmUuYywgcHJvZ3JhbXMvd2luZWNmZy93aW5lY2ZnLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggZ2NjIDQuMCB3YXJuaW5ncy4KCgkqIGRsbHMvbXN4bWwzL01ha2VmaWxlLmluLCBkbGxzL21zeG1sMy9ub2RlLmMsIGRsbHMvbXN4bWwzL25vZGVsaXN0LmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgdGhlIElYTUxET01Ob2RlTGlzdCBpbnRlcmZhY2UgZm9yCglJWE1MRE9NTm9kZTo6Z2V0X2NoaWxkTm9kZXMuCgoJKiBzZXJ2ZXIvb2JqZWN0LmgsIHNlcnZlci9wdHJhY2UuYywgc2VydmVyL3NpZ25hbC5jOgoJQWRkZWQgYSB3YXRjaGRvZyBtZWNoYW5pc20gdG8gYnJlYWsgb3V0IG9mIHRoZSB3YWl0NCBjYWxsIGluIGNhc2UgaXQKCWRpZG4ndCByZXR1cm4gcHJvcGVybHkgKGNhbiBoYXBwZW4gYXQgdGhyZWFkIGV4aXQpLgoKCSogZGxscy9zaGVsbDMyL3JlZ3N2ci5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbG9sZS5jLCBkbGxzL3NoZWxsMzIvc2hmbGRyX3VuaXhmcy5jOgoJTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJQWRkZWQgc3R1YmJlZCBpbXBsZW1lbnRhdGlvbiBvZiBJUGVyc2lzdFByb3BlcnR5QmFnIGludGVyZmFjZS4KCVJlZ2lzdGVyIHVuaXhmcyBhcyBDTFNJRF9Gb2xkZXJTaG9ydGN1dC4KCgkqIGRsbHMvZ2RpL2RpYi5jOiBGZWxpeCBOYXdvdGhuaWcgPGZlbGl4Lm5hd290aG5pZ0B0LW9ubGluZS5kZT4KCUZpeCBHZXRESUJpdHMgdG8gcmV0cmlldmUgUkdCIDU1NSBhcyAxNmJpdCBCSV9SR0IgYW5kIFJHQiA1NjUgYXMgMTZiaXQKCUJJX0JJVEZJRUxEUy4KCgkqIGRsbHMvdXNlci9zY3JvbGwuYzogRnJhbmsgUmljaHRlciA8ZnJhbmsucmljaHRlckBnbWFpbC5jb20+CglGaXggd3Jvbmcgc3RydWN0dXJlIHNpemUgY2hlY2sgaW4gR2V0U2Nyb2xsQmFySW5mbygpLgoJR2V0U2Nyb2xsQmFySW5mbygpIGZhaWxlZCB3aGVuIFNDUk9MTF9HZXRTY3JvbGxCYXJSZWN0KCkgcmV0dXJuZWQKCUZBTFNFIC0gaG93ZXZlciwgdGhpcyBpcyB0aGUgY2FzZSBpZiB0aGUgc2Nyb2xsYmFyIGlzIGhvcml6b250YWwsIGFuZAoJbm90IGFuIGVycm9yIGluZGljYXRvci4KCgkqIGRsbHMvY29tY3RsMzIvdGhlbWVfY29tYm8uYywgZGxscy9jb21jdGwzMi90aGVtZV9lZGl0LmM6CglGcmFuayBSaWNodGVyIDxmcmFuay5yaWNodGVyQGdtYWlsLmNvbT4KCUZvcndhcmQgV01fREVTVFJPWSB0byBzdXBlcmNsYXNzIGluIGVkaXQgJiBsaXN0Ym94IHRoZW1pbmcuCgoJKiBkbGxzL2NvbWN0bDMyL3RoZW1pbmcuYzogRnJhbmsgUmljaHRlciA8ZnJhbmsucmljaHRlckBnbWFpbC5jb20+CglNZXJnZSBzdWJjbGFzcyBzdHVicyBhbmQgc3ViY2xhc3MgcHJvYy4gSGF2aW5nIHRoZSBzdHViIHNldCB0aGUgd2luZG93Cglwcm9jIHRvIHRoZSBzdWJjbGFzcyBwcm9jIHdhcyBub3QgYSBnb29kIGlkZWEgc2luY2UgdGhhdCBicmVha3MKCXN1YmNsYXNzZXMgb2YgdGhlbWVkIHN0YW5kYXJkIGNvbnRyb2xzIChlLmcuIHdoYXQgRGVscGhpIGRvZXMgYSBsb3QpLgoKCSogdG9vbHMvd2luZWJ1aWxkL2J1aWxkLmgsIHRvb2xzL3dpbmVidWlsZC9pbXBvcnQuYywKCSAgdG9vbHMvd2luZWJ1aWxkL21haW4uYywgdG9vbHMvd2luZWJ1aWxkL3dpbmVidWlsZC5tYW4uaW46CglBZGRlZCBhIC0tdW5kZWZpbmVkIG9wdGlvbiB0byBhbGxvdyBmb3JjaW5nIHNvbWUgc3ltYm9scyB0byBiZQoJcmVzb2x2ZWQgYnkgdGhlIGxpbmtlci4KCgkqIGRsbHMvbXN4bWwzL2RvbWRvYy5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGb3J3YXJkIHNvbWUgSVhNTERPTURvY3VtZW50IG1ldGhvZHMgdG8gdGhlIGltcGxlbWVuYXRpb24ncyBjb250YWluZWQKCW5vZGUuCgoJKiBkbGxzL21zeG1sMy9ub2RlLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCBwYXJlbnROb2RlLCBmaXJzdENoaWxkLCBsYXN0Q2hpbGQsIHByZXZpb3VzU2libGluZyBhbmQKCW5leHRTaWJsaW5nIG1ldGhvZHMuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvd2luZWNmZy9wcm9wZXJ0aWVzLmMsIHRvb2xzL3dpbmFwaS93aW4zMi5hcGk6CglS6W1pIEFzc2FpbGx5IDxyZW1pLmFzc2FpbGx5QGZyZWUuZnI+CglSZW1vdmVkIG1jaWFuaW0uCgoJKiBwcm9ncmFtcy93aW5lZGJnL21lbW9yeS5jOgoJTWFrZSBzdXJlIHRoZSBzdHJpbmcgaXMgbnVsbC10ZXJtaW5hdGVkIGluIG1lbW9yeV9nZXRfc3RyaW5nLgoKCSogdG9vbHMvd2luZWJ1aWxkL2ltcG9ydC5jOgoJQWRkZWQgc29tZSBnZW5lcmFsIHB1cnBvc2Ugcm91dGluZXMgZm9yIG1hbmFnaW5nIGxpc3Qgb2Ygc3ltYm9sCgluYW1lcy4KCgkqIGRsbHMvbnRkbGwvbnRkbGwuc3BlYzoKCVJlbW92ZWQgYSBmZXcgaW50ZXJuYWwgZnVuY3Rpb25zIHRoYXQgYXJlIG5vIGxvbmdlciBleHBvcnRlZCBvbgoJV2luZG93cy4KCgkqIHByb2dyYW1zL3JlZ2VkaXQvcmVncHJvYy5jLCBwcm9ncmFtcy90YXNrbWdyL2RiZ2NobmwuYywKCSAgcHJvZ3JhbXMvd2NtZC9idWlsdGlucy5jLCBwcm9ncmFtcy93Y21kL3djbWRtYWluLmMsCgkgIHByb2dyYW1zL3dpbmVkYmcvZGVidWdnZXIuaCwgcHJvZ3JhbXMvd2luZWRiZy9kaXNwbGF5LmMsCgkgIHByb2dyYW1zL3dpbmVkYmcvZXhwci5jLCBwcm9ncmFtcy93aW5lZGJnL2dkYnByb3h5LmMsCgkgIHByb2dyYW1zL3dpbmVkYmcvaW5mby5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IGdjYyA0LjAgd2FybmluZ3MuCgoJKiBkbGxzL2NvbWN0bDMyL01ha2VmaWxlLmluLCBkbGxzL2NvbWN0bDMyL3RoZW1lX2RpYWxvZy5jLAoJICBkbGxzL2NvbWN0bDMyL3RoZW1pbmcuYzoKCUZyYW5rIFJpY2h0ZXIgPGZyYW5rLnJpY2h0ZXJAZ21haWwuY29tPgoJQWRkIHRoZW1pbmcgc3VwcG9ydCBmb3IgZGlhbG9ncyAodG8gc3VwcG9ydCB0YWIgcGFnZSBiYWNrZ3JvdW5kKS4KCgkqIGRsbHMvd2luZWQzZC9kZXZpY2UuYywgZGxscy93aW5lZDNkL2RyYXdwcmltLmMsCgkgIGRsbHMvd2luZWQzZC92ZXJ0ZXhzaGFkZXIuYywgZGxscy93aW5lZDNkL3dpbmVkM2RfcHJpdmF0ZS5oOgoJT2xpdmVyIFN0aWViZXIgPG9saXZlcl9zdGllYmVyQHlhaG9vLmNvLnVrPgoJSW50ZWdyYXRlIGhhcmR3YXJlIHZlcnRleCBzaGFkZXJzIGludG8gdGhlIGRyYXdpbmcgcGlwZWxpbmUuCgoJKiBkbGxzL3dpbnNwb29sL2luZm8uYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IGdjYyA0LjAgd2FybmluZ3MuCgoJKiBkbGxzL21zeG1sMy9kb21kb2MuYywgZGxscy9tc3htbDMvZWxlbWVudC5jLAoJICBkbGxzL21zeG1sMy9tc3htbF9wcml2YXRlLmgsIGRsbHMvbXN4bWwzL25vZGUuYywKCSAgZGxscy9tc3htbDMvbm9kZW1hcC5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJVXNlIGEgc2luZ2xlIGZ1bmN0aW9uIHRvIGNyZWF0ZSBhbGwgSVhNTERPTU5vZGUgaW1wbGVtZW50YXRpb25zLgoKCSogZGxscy9tc2kvYWN0aW9uLmMsIGRsbHMvbXNpL2FjdGlvbi5oLCBkbGxzL21zaS9oZWxwZXJzLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglTdG9yZSB0aGUgY29tcG9uZW50IGluZm9ybWF0aW9uIGluIGEgc3RhbmRhcmQgV2luZSBsaXN0LgoKCSogZGxscy9zaGVsbDMyL3NobHZpZXcuYywgZGxscy9zaGVsbDMyL3Nodl9iZ19jbWVudS5jOgoJSmFzb24gRWRtZWFkZXMgPHVzQGVkbWVhZGVzLm1lLnVrPgoJSGFuZGxlIGNvbnRleHQgbWVudS0+cmVmcmVzaCwgYW5kIEY1IHRvIGluaXRpYXRlIGEgcmVmcmVzaCBvZiB0aGUgZmlsZQoJZGlhbG9nLgoKCSogZGxscy9tc3ZjcnQvc3RyaW5nLmMsIGRsbHMvbXN2Y3J0L3Rlc3RzL3N0cmluZy5jOgoJSmFzb24gRWRtZWFkZXMgPHVzQGVkbWVhZGVzLm1lLnVrPgoJX3N3YWIgZmFpbGVkIGlmIHNyYyA9PSBkZXN0LCBwbHVzIHNvbWUgdGVzdGNhc2VzLgoKCSogZGxscy9zaGVsbDMyL3BpZGwuYzogSmFzb24gRWRtZWFkZXMgPHVzQGVkbWVhZGVzLm1lLnVrPgoJQWRkIHRoZSB0aW1lIHRvIHRoZSBmaWxlIGRpc3BsYXkgZGlhbG9nIG1vZGlmaWVkIGNvbHVtbi4KCgkqIGRsbHMvc2hlbGwzMi9zaGZsZHJfdW5peGZzLmM6CglNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglJbXBsZW1lbnRlZCBJUGVyc2lzdDo6R2V0Q2xhc3NJRC4KCgkqIHByb2dyYW1zL3dpbmVjZmcvUnUucmMsIHByb2dyYW1zL3dpbmVjZmcvd2luZWNmZy5yYzoKCVl1cmkgS296bG92IDxrb3psb3YueUBnbWFpbC5jb20+CglVcGRhdGVkIFJ1c3NpYW4gcmVzb3VyY2VzLgoKCSogZGxscy9nZGkvZm9udC5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJU2ltcGxpZnkgRXh0VGV4dE91dCBhIGJpdC4gIFNob3VsZCBiZSBhIG5vcC4KCgkqIGRsbHMva2VybmVsL29sZGNvbmZpZy5jOiBHZXJhbGQgUGZlaWZlciA8Z2VyYWxkQHBmZWlmZXIuY29tPgoJRW5hYmxlIFNDU0lfZ2V0cHJvY2VudHJ5KCkgb24gbm9uLUxpbnV4IHBsYXRmb3JtcyB3aGljaCBub3cgc2hvdWxkIGJlCglzYWZlIHRvIGRvLgoKCSogZGxscy9nZGkvZnJlZXR5cGUuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUNvcGUgYmV0dGVyIHdpdGggbWl4ZWQgY2hhcnNldCBmb250cy4KCgkqIGRsbHMvYXRsL2F0bF9tYWluLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglJbiBBdGxNb2R1bGVJbml0IGRvIG5vdCBjYWxsIGluaXRpYWxpemF0aW9uIHByb2NlZHVyZXMgdGhhdCBhcmUgTlVMTC4KCgkqIGZvbnRzLy5jdnNpZ25vcmUsIGZvbnRzL01ha2VmaWxlLmluLCB0b29scy9zZm50MmZudC5jOgoJSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBTeXN0ZW0gZm9udCBmb3IgdGhlIENoaW5lc2UgY29kZXBhZ2VzIGNwOTM2IGFuZCBjcDk1MC4gT2YgY291cnNlCgl0aGV5IGRvbid0IGNvbnRhaW4gYW55IGlkZW9ncmFwaHMgKGFuZCBub3Igc2hvdWxkIHRoZXkpLgoKCSogZGxscy91c2VyL2N1cnNvcmljb24uYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJTWFrZSBzdXJlIGEgY3Vyc29yIGlzIGFsd2F5cyByZXR1cm5lZCBpZiBvbmUgZXhpc3RzLgoKMjAwNS0wOC0xOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbnRkbGwvbnQuYywgZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL250ZGxsL3RocmVhZC5jOgoJQWRkZWQgYSBzdHViIGZvciBOdEFsZXJ0UmVzdW1lVGhyZWFkLgoKCSogZGxscy9jb21jdGwzMi9NYWtlZmlsZS5pbiwgZGxscy9jb21jdGwzMi90aGVtZV9saXN0Ym94LmMsCgkgIGRsbHMvY29tY3RsMzIvdGhlbWluZy5jOgoJRnJhbmsgUmljaHRlciA8ZnJhbmsucmljaHRlckBnbWFpbC5jb20+CglBZGQgdGhlbWluZyBmb3IgbGlzdGJveCAoYW5kIGNvbWJvIGxpc3Rib3gpIGNvbnRyb2xzLgoKCSogZGxscy9kM2Q5L3ZvbHVtZS5jLCBkbGxzL2QzZDkvdm9sdW1ldGV4dHVyZS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IHBvaW50ZXIgdHlwZSB3YXJuaW5ncy4KCgkqIGRsbHMvZDNkOS9kM2Q5X3ByaXZhdGUuaCwgZGxscy9kM2Q5L3ZlcnRleHNoYWRlci5jOgoJT2xpdmVyIFN0aWViZXIgPG9saXZlcl9zdGllYmVyQHlhaG9vLmNvLnVrPgoJUGFzcyBhbGwgdGhlIGQzZDkgY2FsbHMgb250byB0aGVpciB3aW5lZDNkIGVxdWl2YWxlbnRzLgoKCSogZGxscy9jcnlwdDMyL01ha2VmaWxlLmluLCBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW46CglBZGRlZCBtaXNzaW5nIG50ZGxsIGltcG9ydHMuCgoJKiBkbGxzL2tlcm5lbC9zeW5jLmMsIGRsbHMvbnRkbGwvZmlsZS5jOgoJSXZhbiBMZW8gUHVvdGkgPGl2YW5sZW9AZ21haWwuY29tPgoJSW1wbGVtZW50IEZTQ1RMX1BJUEVfRElTQ09OTkVDVCBpbiBOdEZzQ29udHJvbEZpbGUgYW5kIG1ha2UKCURpc2Nvbm5lY3ROYW1lZFBpcGUgY2FsbCBpdC4KCgkqIGRsbHMvbWNpc2VxL21jaW1pZGkuYywgZGxscy93aW5tbS9tY2kuYywgZGxscy93aW5tbS9tZXNzYWdlMTYuYywKCSAgaW5jbHVkZS9tbXN5c3RlbS5oOgoJRmVsaXggTmF3b3RobmlnIDxmZWxpeC5uYXdvdGhuaWdAdC1vbmxpbmUuZGU+CglNYWtlIHN0cmluZyBlbGVtZW50cyBvZiBNQ0lfT1BFTl9QQVJNUyBjb25zdCB0byBtYXRjaCB0aGUgU0RLIGhlYWRlcnMuCgoJKiBmb250cy8uY3ZzaWdub3JlLCBmb250cy9NYWtlZmlsZS5pbjogUGF2ZWwgUm9za2luIDxwcm9za2lAZ251Lm9yZz4KCWZvbnRmb3JnZSAyMDA1MDcyOSBpbnNpc3RzIG9uIGFkZGluZyAudHRmIGV4dGVuc2lvbiBldmVuIGlmIHRoZQoJcmVxdWVzdGVkIG91dHB1dCBmaWxlIG5hbWUgZW5kcyB3aXRoIGEgZG90LiAgU28gbGV0J3MgZ28gYmFjayB0byBuYW1lcwoJZW5kaW5nIHdpdGggdHRmLgoKCSogZGxscy91c2VyL2RpYWxvZy5jLCBkbGxzL3VzZXIvZGlhbG9nMTYuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCB1bmluaXRpYWxpemVkIHZhcmlhYmxlIHdhcm5pbmdzIGVtaXR0ZWQgYnkgZ2NjIDQuMC4KCgkqIGluY2x1ZGUvd2luY3J5cHQuaDogSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJQWRkL3VwZGF0ZSBhIGZldyBkZWZpbml0aW9ucy4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL2NvZGVwYWdlLmM6CglTYXVsaXVzIEtyYXN1Y2thcyA8c2F1bGl1cy5rcmFzdWNrYXNAaWVlZS5vcmc+CglUZXN0IHBhc3NpbmcgTlVMTCBzb3VyY2UgdG8gV2lkZUNoYXJUb011bHRpQnl0ZS4KCgkqIGluY2x1ZGUvd2luYmFzZS5oOiBGZWxpeCBOYXdvdGhuaWcgPGZlbGl4Lm5hd290aG5pZ0B0LW9ubGluZS5kZT4KCU1ha2UgdGhlIGRlc3RpbmF0aW9uIHBvaW50ZXJzIG9mIEludGVybG9ja2VkKiBmdW5jdGlvbnMgdm9sYXRpbGUgdG8KCW1hdGNoIHRoZSBTREsgaGVhZGVycy4KCgkqIGRsbHMvbXNodG1sL29sZW9iai5jLCBkbGxzL21zaHRtbC92aWV3LmMsCgkgIGRsbHMvbXNodG1sL3Rlc3RzL2h0bWxkb2MuYzoKCUphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CgktIEFkZGVkIElPbGVDb21tYW5kVGVyZ2V0IGludGVyZmFjZSB0byB0aGUgdGVzdC4KCS0gTWFrZSBXaW5lIHBhc3MgdGhlIHRlc3QuCgktIEZpeCBidWcgcmVwb3J0ZWQgYnkgU2F1bGl1cyBLcmFzdWNrYXMuCgoJKiB0b29scy9zZm50MmZudC5jOiBQYXZlbCBSb3NraW4gPHByb3NraUBnbnUub3JnPgoJc2ZudDJmbnQgZXhpdHMgd2l0aCBjb2RlIDAgZm9yIHNldmVyYWwgZXJyb3JzLCB3aGljaCBjYXVzZXMgbWFrZSB0bwoJaWdub3JlIHRoZW0uICBVc2UgZXhpdCBjb2RlIDEgaW5zdGVhZC4KCgkqIGZvbnRzL3dpbmVfc3lzdGVtLnNmZDogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCVN5c3RlbSBzaG91bGQgYmUgc2FucyBzZXJpZi4KCgkqIGRsbHMvbnRkbGwvY2Ryb20uYzogVml0YWxpeSBNYXJnb2xlbiA8d2luZS1wYXRjaEBraWV2aW5mby5jb20+CglBZGQgdHJhY2UgdG8gSU9DVExfQ0RST01fUkFXX1JFQUQuCgoJKiBkbGxzL2NvbWN0bDMyL3RoZW1lX2VkaXQuYzogRnJhbmsgUmljaHRlciA8ZnJhbmsucmljaHRlckBnbWFpbC5jb20+CglPbmx5IGRyYXcgYSB0aGVtZWQgYm9yZGVyIHdoZW4gZWRpdCBjb250cm9sIGhhcyBXU19FWF9DTElFTlRFREdFCglzdHlsZS4KCgkqIGRsbHMvbXN4bWwzL2RvbWRvYy5jLCBkbGxzL21zeG1sMy9lbGVtZW50LmMsCgkgIGRsbHMvbXN4bWwzL21zeG1sX3ByaXZhdGUuaCwgZGxscy9tc3htbDMvbm9kZS5jLAoJICBkbGxzL21zeG1sMy9ub2RlbWFwLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglNYWtlIGVhY2ggSVhNTERPTU5vZGUgaW50ZXJmYWNlIHJlcHJlc2VudCBvbmUgbGlieG1sMiB4bWxOb2RlUHRyLgoKCSogZGxscy9zaGVsbDMyL3Rlc3RzL3NobGV4ZWMuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglUZXN0ICIlbCIgYW5kICIlTCIuIEF0IHRoZSBzYW1lIHRpbWUgdGhpcyB0ZXN0cyBhbHRlcm5hdGUgdmVyYnMuCglUZXN0ICUxLCAlbCBhbmQgJUwgd2l0aCBubyBxdW90ZXMuCgl0ZXN0LT50b2RvIGlzIGEgYml0bWFzayBzbyBmaXggdGhlIGNoZWNrcyBhY2NvcmRpbmdseS4KCjIwMDUtMDgtMTcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2ljY3ZpZC8uY3ZzaWdub3JlLCBkbGxzL2ljY3ZpZC9NYWtlZmlsZS5pbiwKCSAgZGxscy9tc3JsZTMyLy5jdnNpZ25vcmUsIGRsbHMvbXNybGUzMi9NYWtlZmlsZS5pbiwKCSAgZGxscy9tc3ZpZGMzMi8uY3ZzaWdub3JlLCBkbGxzL21zdmlkYzMyL01ha2VmaWxlLmluLAoJICBkbGxzL3R3YWluLy5jdnNpZ25vcmUsIGRsbHMvdHdhaW4vTWFrZWZpbGUuaW46CglSZW1vdmVkIGEgZmV3IG1vcmUgdW5uZWNlc3NhcnkgaW1wb3J0IGxpYnJhcmllcy4KCgkqIGRsbHMvaWNjdmlkL2ljY3ZpZC5zcGVjLCBkbGxzL21pZGltYXAvbWlkaW1hcC5zcGVjLAoJICBkbGxzL21zYWNtL2ltYWFkcDMyL2ltYWFkcDMyLmFjbS5zcGVjLCBkbGxzL21zYWNtL21zYWNtMzIuc3BlYywKCSAgZGxscy9tc2FjbS9tc2FkcDMyL21zYWRwMzIuYWNtLnNwZWMsCgkgIGRsbHMvbXNhY20vbXNnNzExL21zZzcxMS5hY20uc3BlYywKCSAgZGxscy9tc2FjbS93aW5lbXAzL3dpbmVtcDMuYWNtLnNwZWMsIGRsbHMvbXNybGUzMi9tc3JsZTMyLnNwZWMsCgkgIGRsbHMvbXN2aWRjMzIvbXN2aWRjMzIuc3BlYywgZGxscy93aW5tbS9qb3lzdGljay9qb3lzdGljay5kcnYuc3BlYywKCSAgZGxscy93aW5tbS9tY2lhdmkvbWNpYXZpLmRydi5zcGVjLAoJICBkbGxzL3dpbm1tL21jaXdhdmUvbWNpd2F2ZS5kcnYuc3BlYywKCSAgZGxscy93aW5tbS93YXZlbWFwL21zYWNtLmRydi5zcGVjLAoJICBkbGxzL3dpbm1tL3dpbmVhbHNhL3dpbmVhbHNhLmRydi5zcGVjLAoJICBkbGxzL3dpbm1tL3dpbmVhcnRzL3dpbmVhcnRzLmRydi5zcGVjLAoJICBkbGxzL3dpbm1tL3dpbmVhdWRpb2lvL3dpbmVhdWRpb2lvLmRydi5zcGVjLAoJICBkbGxzL3dpbm1tL3dpbmVlc2Qvd2luZWVzZC5kcnYuc3BlYywKCSAgZGxscy93aW5tbS93aW5lamFjay93aW5lamFjay5kcnYuc3BlYywKCSAgZGxscy93aW5tbS93aW5lbmFzL3dpbmVuYXMuZHJ2LnNwZWMsCgkgIGRsbHMvd2lubW0vd2luZW9zcy93aW5lb3NzLmRydi5zcGVjOgoJTWFrZSBhbGwgdGhlIERyaXZlclByb2MgZW50cnkgcG9pbnRzIHByaXZhdGUuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9tY2lzZXEvLmN2c2lnbm9yZSwKCSAgZGxscy9tY2lzZXEvTWFrZWZpbGUuaW4sIGRsbHMvbWNpc2VxL21jaW1pZGkuYywKCSAgZGxscy9tY2lzZXEvbWNpc2VxLnNwZWMsIHRvb2xzL3dpbmFwaS93aW4zMi5hcGksIHRvb2xzL3dpbmUuaW5mOgoJUultaSBBc3NhaWxseSA8cmVtaS5hc3NhaWxseUBmcmVlLmZyPgoJTW92ZWQgbWNpc2VxIHRvIHRoZSB0b3AtbGV2ZWwgZGxscyBkaXJlY3RvcnkuCgoJKiBwcm9ncmFtcy93aW5lY2ZnL2FwcGRlZmF1bHRzLmMsIHByb2dyYW1zL3dpbmVjZmcvcHJvcGVydGllcy5jLAoJICBwcm9ncmFtcy93aW5lY2ZnL3Byb3BlcnRpZXMuaCwgcHJvZ3JhbXMvd2luZWNmZy93aW5lY2ZnLmMsCgkgIHByb2dyYW1zL3dpbmVjZmcvd2luZWNmZy5oOgoJVml0YWxpeSBNYXJnb2xlbiA8d2luZS1wYXRjaEBraWV2aW5mby5jb20+CglBZGQgd2luZG93cyB2ZXJzaW9uIHJlZ2lzdHJ5IGVudHJpZXMuCgoJKiBkbGxzL2F2aWZpbDMyL2F2aWZpbGUuYywgZGxscy9hdmlmaWwzMi9lZGl0c3RyZWFtLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglnY2MgNC4wIHdhcm5pbmcgZml4ZXMuCgoJKiBkbGxzL3dpbmVkM2QvZGV2aWNlLmMsIGRsbHMvd2luZWQzZC92ZXJ0ZXhzaGFkZXIuYywKCSAgZGxscy93aW5lZDNkL3dpbmVkM2RfcHJpdmF0ZS5oLCBpbmNsdWRlL3dpbmUvd2luZWQzZF9pbnRlcmZhY2UuaDoKCU9saXZlciBTdGllYmVyIDxvbGl2ZXJfc3RpZWJlckB5YWhvby5jby51az4KCUNvcHkgdGhlIHBhcnNlciBhbmQgY3Jvc3MgY29tcGlsZXIgZnJvbSBkM2Q4IGFuZCB1cGRhdGUgZXZlcnl0aGluZyB0bwoJdmVydGV4IHNoYWRlcnMgMy4wLgoJVGhlIFBhcnNlciB3aWxsIG5vdyBkaXNwbGF5IHRoZSBpbnB1dCBzaGFkZXIgaW4gRGlyZWN0WCBzdHlsZSwgYW5kIHRoZQoJY3Jvc3MgY29tcGlsZXIgbm93IGdlbmVyYXRlcyB2YWxpZCBBUkJfVkVSVEVYX1BST0dSQU0gcHJvZ3JhbXMgYW5kCglvdXRwdXRzIHRoZSByZXN1bHQgaW4gQVJCX1ZFUlRFWF9QUk9HUkFNIHN0eWxlLgoJU3VwcG9ydCBmb3IgYSBudW1iZXIgb2YgZXh0ZW5kZWQgYXR0cmlidXRlcyBoYXMgYmVlbiBhZGRlZCwgYnV0IHRoaXMKCW1heSBub3QgYmUgY29tcGxldGUsIGFuZCBkZXJlZmVyZW5jaW5nIGZyb20gbG9vcCBjb3VudGVycyBpc24ndAoJcHJvcGVybHkgcGFyc2VkIHlldC4KCgkqIGRsbHMva2VybmVsL2F0b20xNi5jLCBkbGxzL2tlcm5lbC9mb3JtYXRfbXNnLmMsCgkgIGRsbHMva2VybmVsL2x6ZXhwYW5kLmMsIGRsbHMva2VybmVsL25lX3NlZ21lbnQuYywKCSAgZGxscy9rZXJuZWwvcmVsYXkxNi5jLCBkbGxzL2tlcm5lbC9yZXNvdXJjZTE2LmMsCgkgIGRsbHMva2VybmVsL3Nub29wMTYuYywgZGxscy9rZXJuZWwvc3luYy5jLCBkbGxzL2tlcm5lbC92b2x1bWUuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCWdjYyA0LjAgd2FybmluZyBmaXhlcy4KCgkqIGRsbHMvd2luZWQzZC9kZXZpY2UuYywgZGxscy93aW5lZDNkL3N0YXRlYmxvY2suYywKCSAgZGxscy93aW5lZDNkL3dpbmVkM2RfcHJpdmF0ZS5oOgoJT2xpdmVyIFN0aWViZXIgPG9saXZlcl9zdGllYmVyQHlhaG9vLmNvLnVrPgoJQWRkIHN1cHBvcnQgZm9yIHZlcnRleCBzaGFkZXIgY29uc3RhbnRzIHRvIHRoZSBzdGF0ZWJsb2NrLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvcHJvY2Vzcy5jLCBkbGxzL21zeG1sMy9kb21kb2MuYywKCSAgZGxscy9zZWN1cjMyL3Rlc3RzL21haW4uYywgZGxscy93aW5lZDNkL2RyYXdwcmltLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFzc29ydGVkIHNwZWxsaW5nIGZpeGVzLgoKCSogZGxscy93aW5lZDNkL3ZlcnRleHNoYWRlci5jLCBkbGxzL3dpbmVkM2Qvd2luZWQzZF9wcml2YXRlLmgsCgkgIGluY2x1ZGUvd2luZS93aW5lZDNkX3R5cGVzLmg6CglPbGl2ZXIgU3RpZWJlciA8b2xpdmVyX3N0aWViZXJAeWFob28uY28udWs+CglUaWR5IHVwIHZlcnRleCBzaGFkZXJzIGFuZCBicmluZyB0aGUgY3VycmVudCBjb2RlIGlubGluZSB3aXRoIHRoZSByZXN0CglvZiB3aW5lZDNkLgoKCSogZGxscy93aW5pbmV0L3Rlc3RzL2h0dHAuYzoKCVNhdWxpdXMgS3Jhc3Vja2FzIDxzYXVsaXVzLmtyYXN1Y2thc0BpZWVlLm9yZz4KCUNvcnJlY3QgZmFpbGluZyB0ZXN0IGFuZCB0cmFuc2Zvcm0gaXQgaW50byBhIGJ1bmNoIG9mIGFub3RoZXIgdGVzdHMuCgoJKiBkbGxzL250ZGxsL3Rlc3RzL2luZm8uYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglGaXggYSBjb3VwbGUgb2YgTVNWQyBzaWduZWQvdW5zaWduZWQgd2FybmluZ3MuCgoJKiBkbGxzL3NoZWxsMzIvc2hsZXhlYy5jLCBkbGxzL3NoZWxsMzIvdGVzdHMvc2hsZXhlYy5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBTaGVsbEV4ZWN1dGUoIlwiZm9vLmRvY1wiIikgZm9yIEludGVybmV0IEV4cGxvcmVyIDYuCglVcGRhdGUgdGhlIGNvbmZvcm1hbmNlIHRlc3RzIGFjY29yZGluZ2x5LgoJVHdlYWsgYSB0cmFjZSBiZWNhdXNlIGl0J3MgdmVyeSBjb25mdXNpbmcgdG8gc2VlIHRoZSBwYXRoIHdpdGggbm8KCWVzY2FwZWQgcXVvdGVzIGluIFNoZWxsRXhlY3V0ZUEoKSBhbmQgdGhlbiB3aXRoIGVzY2FwZWQgcXVvdGVzIGluCglTaGVsbEV4ZWN1dGVFeFczMigpIChkdWUgdG8gZGVidWdzdHJfdygpKS4KCgkqIGRsbHMvbXN4bWwzL25vZGUuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IGEgc2VhcmNoIGFuZCByZXBsYWNlIG1pc2hhcC4KCgkqIGRsbHMvZGRyYXcvc3VyZmFjZV9kaWIuYywgZGxscy9kZHJhdy90ZXN0cy9kc3VyZmFjZS5jOgoJQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJVGFrZSBSR0IgbWFzayBpbnRvIGFjY291bnQgd2hlbiBkb2luZyBjb2xvciBrZXlpbmcuCglBZGQgY29ycmVzcG9uZGluZyBjb25mb3JtYW5jZSB0ZXN0LgoKCSogZGxscy9zZWN1cjMyL01ha2VmaWxlLmluLCBkbGxzL3NlY3VyMzIvbnRsbS5jLAoJICBkbGxzL3NlY3VyMzIvc2VjdXIzMi5jLCBkbGxzL3NlY3VyMzIvc2VjdXIzMl9wcml2Lmg6CglLYWkgQmxpbiA8YmxpbkBnbXgubmV0PgoJQWRkIE5UTE0gc2VjdXJpdHkgcHJvdmlkZXIgZHVtbXkuCgoJKiBkbGxzL3F1YXJ0ei9maWx0ZXJncmFwaC5jOiBDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglBZGQgc3R1YmJlZCBJR3JhcGhDb25maWcgaW50ZXJmYWNlIHRvIHRoZSBmaWx0ZXJncmFwaC4KCgkqIGRsbHMvcXVhcnR6L3ZpZGVvcmVuZGVyZXIuYzogQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJRml4IHJlbmRlcmluZyBvZiBwYWxldHRlZCB2aWRlbyBzdHJlYW0uCgoyMDA1LTA4LTE2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2VydmVyL3F1ZXVlLmM6CglBdm9pZCBhIGNyYXNoIGluIGZpbmRfaGFyZHdhcmVfbWVzc2FnZV93aW5kb3cgd2hlbiB0aGVyZSdzIG5vCglmb3JlZ3JvdW5kIGlucHV0LgoKCSogZGxscy9jb21jdGwzMi9NYWtlZmlsZS5pbiwgZGxscy9jb21jdGwzMi90aGVtZV9jb21iby5jLAoJICBkbGxzL2NvbWN0bDMyL3RoZW1pbmcuYzoKCUZyYW5rIFJpY2h0ZXIgPGZyYW5rLnJpY2h0ZXJAZ21haWwuY29tPgoJQWRkIHRoZW1pbmcgZm9yIGNvbWJvIGJveGVzLgoKCSogaW5jbHVkZS93aW5jcnlwdC5oOiBKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglBZGQgbW9yZSBtaXNzaW5nIGRlZmluaXRpb25zLCBhbmQgY29ycmVjdCBhIHByb3RvdHlwZS4KCgkqIGRsbHMvc2hlbGwzMi90ZXN0cy9zaGxmb2xkZXIuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglEeW5hbWljYWxseSBsb2FkIFN0clJldFRvQnVmVygpLiBUaGlzIGxldHMgc2hlbGwzMl90ZXN0LmV4ZSBydW4gb24KCXN5c3RlbXMgdGhhdCBoYXZlIHZlcnNpb24gNC43MiBvZiBzaGx3YXBpLmRsbC4KCgkqIGRsbHMvc2hlbGwzMi90ZXN0cy9zaGxleGVjLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJVmVyaWZ5IHRoZSBwYXJhbWV0ZXJzIHJlY2VpdmVkIGJ5IHRoZSBjaGlsZCBwcm9jZXNzIHVzaW5nIGNvZGUgbGlmdGVkCglmcm9tIGtlcm5lbDMyL3Rlc3RzL3Byb2Nlc3MuYy4KCVRlc3QgcGFzc2luZyBwYXJhbWV0ZXJzIHRvIC5sbmsgZmlsZXMgdGhhdCBwb2ludCB0byBhbiBleGVjdXRhYmxlLgoKCSogZGxscy9udGRsbC92ZXJzaW9uLmM6CglUaGVyZSBpcyBhIHJlZ2lzdHJ5IGtleSBmb3IgdGhlIHNlcnZpY2UgcGFjayB2ZXJzaW9uIChzcG90dGVkIGJ5CglWaXRhbGl5IE1hcmdvbGVuKS4KCgkqIGRsbHMveDExZHJ2L2V2ZW50LmMsIGRsbHMveDExZHJ2L2tleWJvYXJkLmMsIGRsbHMveDExZHJ2L21vdXNlLmMsCgkgIGRsbHMveDExZHJ2L29wZW5nbC5jLCBkbGxzL3gxMWRydi94cmVuZGVyLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglnY2MgNC4wIHdhcm5pbmcgZml4ZXMuCgoJKiBkbGxzL3NlY3VyMzIvc2VjdXIzMi5jLCBpbmNsdWRlL2xtYWNjZXNzLmgsIGluY2x1ZGUvbnRzZWNhcGkuaCwKCSAgaW5jbHVkZS93aW50ZXJubC5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglEZWNsYXJlIFBOVFNUQVRVUyBpbiBsbWFjY2Vzcy5oIGFuZCBudHNlY2FwaS5oIHRvIG1hdGNoIHRoZSBQU0RLLgoJUHJvdGVjdCBhZ2FpbnN0IG11bHRpcGxlIGRlZmluaXRpb25zLgoJVXNlIFBOVFNUQVRVUyB3aGVyZSBhcHByb3ByaWF0ZS4KCgkqIGRsbHMvb2xlMzIvb2xlMi5jLCBkbGxzL29sZTMyL29sZTJfMTYuYywgZGxscy9vbGUzMi9zdG9yYWdlLmMsCgkgIHRvb2xzL3dpbmFwaS93aW4xNi5hcGk6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVVzZSBMUFNUT1JBR0UgdG8gYmV0dGVyIG1hdGNoIHRoZSBQU0RLLgoJRG9jdW1lbnQgdGhlIHJlYWwgU0VHUFRSIHR5cGUgdXNpbmcgdGhlIHN0YW5kYXJkIGRvY3VtZW50YXRpb24KCW1lY2hhbmlzbXMuIEZpeGVzIHdpbmFwaV9jaGVjayB3YXJuaW5ncy4KCgkqIGRsbHMva2VybmVsL2hlYXAuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVJlcG9ydCBzd2FwIGZpbGUgdG90YWwvZnJlZSBzaXplcyB0byBiZSB0aGUgc2FtZSBhcyBwaHlzaWNhbCBtZW1vcnkuCglNYWtlIHN1cmUgdGhhdCB3ZSBjYWNoZSBhbGwgY2FsY3VsYXRlZCB2YWx1ZXMuCgoJKiBkbGxzL3NoZWxsMzIvdGVzdHMvc2hlbGxwYXRoLmM6CglNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglSZW1vdmUgImluaXRndWlkLmgiIGluY2x1ZGUgZnJvbSBzaGVsbHBhdGggdGVzdC4KCgkqIGRsbHMvbXNodG1sL3Rlc3RzL3Byb3RvY29sLmM6IEphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglGaXggcHJvdG9jb2wgdGVzdCBvbiA5eC4KCgkqIGRsbHMvbnRkbGwvZmlsZS5jOiBJdmFuIExlbyBQdW90aSA8aXZhbmxlb0BnbWFpbC5jb20+CglJbXByb3ZlIE50Q3JlYXRlTmFtZWRQaXBlIHRyYWNlLgoKCSogZGxscy9tc2kvYWN0aW9uLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglGaXhlZCBhIG1lbW9yeSBvdmVyZmxvdyBhbmQgbGVhayBpZGVudGlmaWVkIGJ5IE1pa2UgTWNDb3JtYWNrLgoKCSogZGxscy91c2VyL2NvbWJvLmM6IEZyYW5rIFJpY2h0ZXIgPGZyYW5rLnJpY2h0ZXJAZ21haWwuY29tPgoJQ2hhbmdlIENCX0dFVENPTUJPQk9YIHRvIHJldHVybiBTVEFURV9TWVNURU1fUFJFU1NFRCBpbgoJQ09NQk9CT1hJTkZPLnN0YXRlQnV0dG9uIHdoZW4gcmVhbGx5IHRoZSBidXR0b24gaXMgcHJlc3NlZCwgbm90IHdoZW4KCXRoZSBjb21ibyBpcyBkcm9wcGVkIGRvd24uCgoJKiBkbGxzL3dpbmluZXQvdGVzdHMvaHR0cC5jOgoJU2F1bGl1cyBLcmFzdWNrYXMgPHNhdWxpdXMua3Jhc3Vja2FzQGllZWUub3JnPgoJTW92ZSByZXBldGl0aXZlIGNvZGUgdG8gdHdvIGhlbHBlciBmdW5jdGlvbnMuCgoJKiBkbGxzL250ZGxsL3ZlcnNpb24uYzoKCUZldGNoIHRoZSB2ZXJzaW9uIGluZm9ybWF0aW9uIGZyb20gdGhlIHN0YW5kYXJkIFdpbmRvd3Mga2V5cyBpZiBub3QKCXNwZWNpZmllZCBvdGhlcndpc2UuCgoJKiBwcm9ncmFtcy9yZWdlZGl0L0RlLnJjLCBwcm9ncmFtcy9yZWdlZGl0L0VuLnJjOgoJSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJU2hyaW5rIHRoZSBoZXggZWRpdCB3aW5kb3cgYSBiaXQuCgoJKiBkbGxzL2NyeXB0MzIvdGVzdHMvZW5jb2RlLmM6IEp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCVJlbW92ZSBhIHRlc3QgdGhhdCBmYWlscyB1bmRlciBXaW5NRS4gIFJlcG9ydGVkIGFuZCBoZWxwZnVsbHkgZGVidWdnZWQKCWJ5IFNhdWxpdXMgS3Jhc3Vja2FzLgoKCSogZGxscy9zZWN1cjMyL3NlY3VyMzIuYzogSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJRml4IHVuaW5pdGlhbGl6ZWQgcG9pbnRlciBpbiBidWlsdGluIHByb3ZpZGVycy4gIFJlcG9ydGVkIGJ5IEthaQoJQmxpbi4KCgkqIGRsbHMvbnRkbGwvZmlsZS5jOiBJdmFuIExlbyBQdW90aSA8aXZhbmxlb0BnbWFpbC5jb20+CglOdENyZWF0ZU5hbWVkUGlwZUZpbGUgaXMgbm8gbG9uZ2VyIGEgc3R1Yiwgc28gZml4IFRSQUNFKCkgY2FsbC4KCgkqIGRsbHMvbXNodG1sL29sZXduZC5jOiBKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJRGVhY3RpdmF0ZSBVSSBpbiBJblBsYWNlRGVhY3RpdmF0ZS4KCjIwMDUtMDgtMTUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL29iamlkbC5pZGwsIGluY2x1ZGUvb2NpZGwuaWRsLCBpbmNsdWRlL29sZWlkbC5pZGwsCgkgIGluY2x1ZGUvd2luZGVmLmg6CglBZGRlZCBhIFdJTkVfTk9fVU5JQ09ERV9NQUNST1MgZGVmaW5lIHRvIGFsbG93IFdpbmVsaWIgYXBwcyB0byBzd2l0Y2gKCW9mZiB0aGUgVW5pY29kZSBtYWNyb3MgdG9vLgoKCSogZGxscy9zZWN1cjMyL01ha2VmaWxlLmluLCBkbGxzL3NlY3VyMzIvbmVnb3RpYXRlLmMsCgkgIGRsbHMvc2VjdXIzMi9zZWN1cjMyLmMsIGRsbHMvc2VjdXIzMi9zZWN1cjMyX3ByaXYuaCwKCSAgZGxscy9zZWN1cjMyL3Rlc3RzL21haW4uYzoKCUthaSBCbGluIDxibGluQGdteC5uZXQ+CglBZGRlZCBOZWdvdGlhdGUgc2VjdXJpdHkgcHJvdmlkZXIgZHVtbXkuIFJlbW92ZWQgdG9kb3MgZnJvbSB0aGUgdGVzdC4KCgkqIGRsbHMvd2xkYXAzMi9taXNjLmM6IEhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJRml4IHRoZSBidWlsZCB3aXRob3V0IG9wZW5sZGFwIGhlYWRlcnMuCgoJKiBkbGxzL21zaHRtbC90ZXN0cy9odG1sZG9jLmM6IEphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CgktIENvZGUgY2xlYW51cC4KCS0gRGlzc2FibGUgdGVzdHMgYWZ0ZXIgVUlBY3RpdmF0ZSBmYWlsZXMgKGZpeGVzIHRlc3RzIHdpbiA5eCkuCgoJKiBpbmNsdWRlL3NobGd1aWQuaDogTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJQWRkZWQgQ0xTSURfRm9sZGVyU2hvcnRjdXQgZGVmaW5pdGlvbi4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQWRkIHNvbWUgYm9keSB0byBSZXNvbHZlU291cmNlIGJlY2F1c2UgaXQgaXMgcG9zc2libGUgdG8gbmVlZCBpdCB3aGVuCglhbiBpbnN0YWxsIGlzIGJlZ3VuIGJ1dCB0aGUgbWVkaWEgaXMgbm90IGluIHRoZSBkcml2ZSwgc3VjaCBhcyBpbgoJaW5zdGFsbC1vbi1kZW1hbmQgY2FzZXMuCgoJKiBkbGxzL250ZGxsL2hlYXAuYzoKCUZpeGVkIHNvbWUgY29uZnVzaW9uIG92ZXIgd2hldGhlciBIRUFQX01JTl9CTE9DS19TSVpFIGluY2x1ZGVzIHRoZQoJYXJlbmEgaGVhZGVycyBvZiBub3QuCglGcmVlIGxpc3Qgc2l6ZXMgYXJlIGNvbnN0YW50IHNvIHRoZXJlJ3Mgbm8gbmVlZCB0byBzdG9yZSB0aGVtIGluIHRoZQoJaGVhcCBzdHJ1Y3R1cmUuCgoJKiBkbGxzL2tlcm5lbC9wcm9jZXNzLmMsIHRvb2xzL3dpbmVwcmVmaXhjcmVhdGUuaW46CglTZXQgdGhlIGRlZmF1bHQgc3lzdGVtIGRpciB0byB3aW5kb3dzL3N5c3RlbTMyLgoKCSogZGxscy9udGRsbC92ZXJzaW9uLmM6IFN3aXRjaCB0aGUgZGVmYXVsdCB2ZXJzaW9uIHRvIHdpbjJrLgoKCSogZGxscy9nZGkvZnJlZXR5cGUuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUEgcHJldmlvdXMgc2lnbmVkLW5lc3MgZml4IGJyb2tlIGRpc3BsYXkgb2Ygbm9uLWFuc2kgY2hhcnMsIGZpeCB0aGlzLgoKCSogZGxscy9zaGVsbDMyL3BpZGwuYzogR2UgdmFuIEdlbGRvcnAgPGd2Z0ByZWFjdG9zLmNvbT4KCUZpeCByZXNvdXJjZSBsZWFrIG9uIGVycm9yIHBhdGhzLgoKCSogZGxscy9udGRsbC92aXJ0dWFsLmMsIHNlcnZlci9tYXBwaW5nLmM6CglCZXR0ZXIgaGFuZGxpbmcgb2YgY29uZmxpY3Rpbmcgc2VjdGlvbiBpbmZvcm1hdGlvbiBiZXR3ZWVuCglTaXplT2ZSYXdEYXRhIGFuZCBWaXJ0dWFsU2l6ZS4KCgkqIGRsbHMvd2xkYXAzMi9taXNjLmMsIGRsbHMvd2xkYXAzMi93aW5sZGFwX3ByaXZhdGUuaCwKCSAgZGxscy93bGRhcDMyL3dsZGFwMzIuc3BlYzoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJSW1wbGVtZW50IGxkYXBfcmVzdWx0LgoKCSogZGxscy94MTFkcnYveHJlbmRlci5jOiBGcmFuayBSaWNodGVyIDxmcmFuay5yaWNodGVyQGdtYWlsLmNvbT4KCUZpeCBBbHBoYUJsZW5kKCkgdG8gZXh0cmFjdCB0aGUgcmlnaHQgcGFydCBvZiB0aGUgc291cmNlIERJQi4KCgkqIGRsbHMva2VybmVsL3JlZ2lzdHJ5MTYuYywgZGxscy9vbGUzMi9jb21wb2JqLmMsCgkgIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmMsIGRsbHMvc2hlbGwzMi9zaGVsbC5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJV2FybmluZyBmaXhlcyBmb3IgZ2NjIDQuMC4KCgkqIGRsbHMvYXZpZmlsMzIvZmFjdG9yeS5jLCBkbGxzL2NvbW1kbGcvY2RsZzMyLmMsCgkgIGRsbHMvZHBsYXl4L2RwbGF5eF9tYWluLmMsIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmMsCgkgIGRsbHMvaGhjdHJsLm9jeC9tYWluLmMsIGRsbHMvbWFwaTMyL21hcGkzMl9tYWluLmMsCgkgIGRsbHMvbXNjbXMvbXNjbXNfbWFpbi5jLCBkbGxzL21zaXN5cy9tc2lzeXMuYywKCSAgZGxscy9vbGVhdXQzMi9vbGVhdXQuYywgZGxscy9zbm1wYXBpL21haW4uYywgZGxscy93aW5lcHMvaW5pdC5jLAoJICBkbGxzL3dsZGFwMzIvbWFpbi5jOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJVW5pZm9ybWl6ZSBEbGxNYWluIFRSQUNFaW5nIGFjcm9zcyBkbGxzLgoKCSogZGxscy9hZHZwYWNrL3Rlc3RzL2FkdnBhY2suYzoKCVNhdWxpdXMgS3Jhc3Vja2FzIDxzYXVsaXVzLmtyYXN1Y2thc0BpZWVlLm9yZz4KCVJlbW92ZSB0cmFpbGluZyBiYWNrc2xhc2guCgoJKiBkbGxzL3gxMWRydi9jb2RlcGFnZS5jLCBkbGxzL3gxMWRydi9kaWIuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCWdjYyA0LjAgd2FybmluZyBmaXhlcy4KCgkqIGRsbHMvY29tY3RsMzIvTWFrZWZpbGUuaW4sIGRsbHMvY29tY3RsMzIvdGhlbWVfZWRpdC5jLAoJICBkbGxzL2NvbWN0bDMyL3RoZW1pbmcuYzoKCUZyYW5rIFJpY2h0ZXIgPGZyYW5rLnJpY2h0ZXJAZ21haWwuY29tPgoJU3ViY2xhc3MgZWRpdCBjb250cm9sIHRvIGRyYXcgdGhlbWVkIGJvcmRlci4KCgkqIGRsbHMvY29tY3RsMzIvdHJhY2tiYXIuYzogRnJhbmsgUmljaHRlciA8ZnJhbmsucmljaHRlckBnbWFpbC5jb20+CglJbXByb3ZlZCB0cmFja2JhciB0aGVtaW5nLgoKCSogZGxscy91eHRoZW1lL3N5c3RlbS5jOiBGcmFuayBSaWNodGVyIDxmcmFuay5yaWNodGVyQGdtYWlsLmNvbT4KCUNvbXBhcmUgcmVzdWx0IG9mIFJlZ1F1ZXJ5VmFsdWVFeFcoKSB3aXRoIEVSUk9SX1NVQ0NFU1MuCgoJKiBkbGxzL21zaHRtbC9wcm90b2NvbC5jOiBKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJLSBBZGRlZCBzdXBwb3J0IGZvciBhZ2dyZWdhdGlvbiB0byByZXMgcHJvdG9jb2wuCgktIEZpeCBBYm91dFByb3RvY29sX1JlbGVhc2UuCgktIFVzZSAqX1RISVMgbWFjcm9zIGluIHByb3RvY29sIG9iamVjdHMuCgoJKiBkbGxzL3dsZGFwMzIvYWRkLmM6IEhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJSW1wcm92ZSBwYXJhbWV0ZXIgaGFuZGxpbmcgZm9yIHRoZSBsZGFwX2FkZCogZnVuY3Rpb25zLgoKCSogZGxscy9zaGVsbDMyL3Rlc3RzL3NoZWxscGF0aC5jOgoJU2F1bGl1cyBLcmFzdWNrYXMgPHNhdWxpdXMua3Jhc3Vja2FzQGllZWUub3JnPgoJRml4IHNvbWUgU0hHZXRTcGVjaWFsRm9sZGVyUGF0aEEgZXhjZXB0aW9ucyBvbiBXaW5NRToKCS0gcGFzcyBwb2ludGVyIHRvIHZhbGlkIGJ1ZmZlciBhcyBscHN6UGF0aC4KCS0gZGlzYWJsZSBjaGVjayBwYXNzaW5nIE5VTEwgYXMgbHBzelBhdGguCgoJKiBkbGxzL2hoY3RybC5vY3gvaGVscC5jOiBKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCUhhbmRsZSByZXNpemluZyB0aGUgaGVscCB2aWV3ZXIgd2luZG93LgoKCSogZGxscy91eHRoZW1lL2RyYXcuYzogRnJhbmsgUmljaHRlciA8ZnJhbmsucmljaHRlckBnbWFpbC5jb20+CglXaGF0ZXZlciBUcnVlU2l6ZVN0cmV0Y2hNYXJrIGlzIGZvciAtIGl0J3Mgbm90IHdoYXQgV2luZSB1eHRoZW1lIHVzZWQKCWl0IGZvci4gTmF0aXZlIHV4dGhlbWUgYWx3YXlzIHN0cmV0Y2hlcyAidHJ1ZXNpemUiIHBhcnRzIHdoZW4gdGhlCglkZXN0aW5hdGlvbiBpcyBzbWFsbGVyIHRoYW4gdGhlIHBhcnQgaW1hZ2Ugc2l6ZSwgYnV0CglUcnVlU2l6ZVN0cmV0Y2hNYXJrIGRvZXNuJ3Qgc2VlbSB0byBoYXZlIGFuIGluZmx1ZW5jZS4KCgkqIGRsbHMvcmljaGVkMjAvY29udGV4dC5jLCBkbGxzL3JpY2hlZDIwL2VkaXRvci5jLAoJICBkbGxzL3JpY2hlZDIwL2VkaXRzdHIuaCwgZGxscy9yaWNoZWQyMC9wYWludC5jLCBpbmNsdWRlL3JpY2hlZGl0Lmg6CglQaGlsIEtyeWxvdiA8cGhpbEBuZXdzdGFyLnJpbmV0LnJ1PgoJQWRkZWQgRU1fU0VUUkVDVCwgRU1fU0VUUkVDVE5QLCBhbmQgV01fU0VUUkVEUkFXIG1lc3NhZ2UgaGFuZGxpbmcuCglBZGRlZCBzdXBwb3J0IGZvciBHVF9TRUxFQ1RJT04gZmxhZyBpbiBFTV9HRVRURVhURVggaGFuZGxlci4KCgkqIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL2NvbXBvYmouc3BlYywgZGxscy9vbGUzMi9vbGUyLnNwZWMsCgkgIGRsbHMvb2xlMzIvb2xlMl8xNi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtZWlzc25lckBzdXNlLmRlPgoJQWRkZWQgQ29DcmVhdGVJbnN0YW5jZTE2LCBDb0dldENsYXNzT2JqZWN0MTYsIE9sZUxvYWQxNiBzdHVicy4KCgkqIGRsbHMvZ2RpL2ZvbnQuYywgZGxscy9nZGkvZ2RpMzIuc3BlYzogVmlrcmFtIEt1bWFyIDx2aWtAem9uZTgxLmNvbT4KCUFkZGVkIHN0dWIgZm9yIEVuYWJsZUVVREMuCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmg6IEZyYW5rIFJpY2h0ZXIgPGZyYW5rLnJpY2h0ZXJAZ21haWwuY29tPgoJQWRkIFdDX0VESVQgYW5kIFdDX0xJU1RCT1guCgoJKiBkbGxzL2FkdmFwaTMyL2NyeXB0LmMsIGRsbHMvdGFwaTMyL3Bob25lLmMsIGRsbHMvdXNlci9kZGVfY2xpZW50LmM6CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglDaGFuZ2Ugc29tZSBUUkFDRWluZyBmb3JtYXRzIHRvIG1ha2UgbW9yZSBzZW5zZS4KCgkqIGRsbHMvbXN4bWwzL21zeG1sX3ByaXZhdGUuaDoKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCVByb3RlY3QgbGlieG1sL3BhcnNlci5oIHdpdGggcHJvcGVyIGF1dG9jb25mIGRlZmluaXRpb24uCgoJKiBkbGxzL3NobHdhcGkvb3JkaW5hbC5jOiBWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglDb3JyZWN0IHR5cG8gaW4gZm9ybWF0IHN0cmluZy4KCgkqIGRsbHMvc2V0dXBhcGkvcGFyc2VyLmM6IEdlIHZhbiBHZWxkb3JwIDxndmdAcmVhY3Rvcy5jb20+CglpbmRleCBpcyAxLWJhc2VkIGF0IHRoaXMgcG9pbnQsIGluZGV4ID09IGxpbmUtPm5iX2ZpZWxkcyBpcyB0aGUgbGFzdAoJZmllbGQgYW5kIGlzIHZhbGlkLgoKCSogZGxscy93aW5hc3BpL2FzcGkuYzogR2VyYWxkIFBmZWlmZXIgPGdlcmFsZEBwZmVpZmVyLmNvbT4KCXNldF9sYXN0X2Vycm9yKCkgaXMgb25seSB1c2VkIG9uIExpbnV4LgoKCSogZGxscy93bGRhcDMyL01ha2VmaWxlLmluLCBkbGxzL3dsZGFwMzIvbW9kaWZ5LmMsCgkgIGRsbHMvd2xkYXAzMi93aW5sZGFwX3ByaXZhdGUuaCwgZGxscy93bGRhcDMyL3dsZGFwMzIuc3BlYzoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJSW1wbGVtZW50IGxkYXBfbW9kaWZ5KiBmdW5jdGlvbnMuCgoJKiBkbGxzL2tlcm5lbC9pbnN0ci5jOiBWaXRhbGl5IE1hcmdvbGVuIDx3aW5lLXBhdGNoQGtpZXZpbmZvLmNvbT4KCUFkZCBlbnRyeSBmb3IgaW50IDIgaGFuZGxlci4KCgkqIGRsbHMvc2hlbGwzMi9zaGZsZHJfZGVza3RvcC5jOgoJTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJR2UgdmFuIEdlbGRvcnAgPGd2Z0ByZWFjdG9zLmNvbT4KCS0gUHJlcGVuZCBEZXNrdG9wIGZvbGRlciBwYXRoIGZvciBmaWxlcy9kaXJlY3RvcmllcyBzdG9yZWQgaW4gdGhlCgkgIGZpbGVzeXN0ZW0gRGVza3RvcCBmb2xkZXIgd2hlbiBHZXREaXNwbGF5TmFtZU9mIGlzIGNhbGxlZCB3aXRoIHRoZQoJICBTSEdETl9GT1JQQVJTSU5HIGZsYWdzLgoJLSBBZGQgdGVzdGNhc2VzLgoKCSogZGxscy9tc2h0bWwvbXNodG1sX3ByaXZhdGUuaCwgZGxscy9tc2h0bWwvdGVzdHMvaHRtbGRvYy5jLAoJICBkbGxzL21zaHRtbC92aWV3LmM6CglKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJQWN0aXZhdGUgd2luZG93IGluIElPbGVEb2N1bXduclZpZXc6OlNob3cuCgoJKiBkbGxzL21zaHRtbC90ZXN0cy9wcm90b2NvbC5jOiBKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJRml4IHByb3RvY29sIHRlc3Qgb24gd2lueHAuCgoJKiBkbGxzL3NoZWxsMzIvdGVzdHMvc2hsZm9sZGVyLmM6CglTYXVsaXVzIEtyYXN1Y2thcyA8c2F1bGl1cy5rcmFzdWNrYXNAaWVlZS5vcmc+CglYUCByZXR1cm5zIEVfSU5WQUxJREFSRyBvbiBmYWlsdXJlLgoKCSogZGxscy9oaGN0cmwub2N4L2hlbHAuYzogSmFtZXMgSGF3a2lucyA8dHJ1aWtlbkBnbWFpbC5jb20+CgktIFBhaW50IHNwYWNpbmcgYXJvdW5kIHRoZSB0YWIgY29udHJvbC4KCS0gVXNlIENPTE9SX01FTlUgdG8gc3RhbmRhcmRpemUgdGhlIGNvbG9ycyBvZiB0aGUgdmlld2VyLgoKCSogZGxscy9tc3ZjcnRkL01ha2VmaWxlLmluOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggZ2NjIDQuMCBidWlsdGluIGZ1bmN0aW9uIHdhcm5pbmdzLgoKCSogcHJvZ3JhbXMvd2luZWNmZy9KYS5yYywgcHJvZ3JhbXMvd2luZWNmZy93aW5lY2ZnLnJjOgoJVmlrcmFtIEt1bWFyIDx2aWtAem9uZTgxLmNvbT4KCUFkZGVkIEphcGFuZXNlIHJlc291cmNlcy4KCgkqIGRsbHMvdXh0aGVtZS9kcmF3LmM6IEZyYW5rIFJpY2h0ZXIgPGZyYW5rLnJpY2h0ZXJAZ21haWwuY29tPgoJQmV0dGVyIGNvbXB1dGF0aW9ucyB0byBoYXZlIHVuaWZvcm1seSBzaXplZCBwYXJ0cyBzY2FsZWQgaW4gYm90aAoJZGlyZWN0aW9ucy4KCgkqIGRsbHMvY29tY3RsMzIvcHJvZ3Jlc3MuYzogRnJhbmsgUmljaHRlciA8ZnJhbmsucmljaHRlckBnbWFpbC5jb20+CglJbnN0ZWFkIG9mIGFkZGluZyB0aGUgYm9yZGVyIHZpYSBXTV9OQ1BBSU5UIGFuZCBXTV9OQ0NBTENTSVpFLCBkbyB3aGF0CgluYXRpdmUgZG9lczoganVzdCBjbGVhciBXU19FWF9TVEFUSUNFREdFIHdoZW4gdGhlbWVkIGFuZCByZWR1Y2UgdGhlCglhcmVhIHRoZSBhY3R1YWwgYmFyIGlzIHBhaW50ZWQgaW4gdG8gdGhlIHByb2dyZXNzIGJhciB0aGVtZSBwYXJ0Cgljb250ZW50IHJlY3QuCgoJKiBkbGxzL3gxMWRydi93aW5wb3MuYzogRnJhbmsgUmljaHRlciA8ZnJhbmsucmljaHRlckBnbWFpbC5jb20+CglJbnZhbGlkYXRlIERDRXMgd2hlbiBhIHdpbmRvdyByZWdpb24gaXMgc2V0LgoKMjAwNS0wOC0xMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbnRkbGwvaGVhcC5jOgoJQ29udmVydGVkIHRoZSBwcm9jZXNzIGhlYXAgbGlzdCB0byBhIHN0YW5kYXJkIGxpc3QuCgoJKiBkbGxzL3NldHVwYXBpL21pc2MuYywgZGxscy9zZXR1cGFwaS9zZXR1cGFwaS5zcGVjOgoJQWRkZWQgc3R1YnMgZm9yIHBTZXR1cEdldC9TZXRHbG9iYWxGbGFncy4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL3RocmVhZC5jLCBkbGxzL250ZGxsL2Nkcm9tLmMsCgkgIGRsbHMvd2luZWQzZC9kZXZpY2UuYywgZGxscy93aW5lZDNkL2RpcmVjdHguYywKCSAgZGxscy93aW5lZDNkL2RyYXdwcmltLmMsIGRsbHMvd2luZWQzZC92ZXJ0ZXhkZWNsYXJhdGlvbi5jLAoJICBkbGxzL3dpbmluZXQvdGVzdHMvd2luaW5ldF90ZXN0LmgsIHRvb2xzL3dpbmFwaS93aW5hcGkucG06CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFzc29ydGVkIHNwZWxsaW5nIGZpeGVzLgoKCSogZGxscy9udGRsbC9oZWFwLmM6IENvbnZlcnRlZCB0aGUgaGVhcCBmcmVlIGxpc3RzIHRvIHN0YW5kYXJkIGxpc3RzLgoKCSogZGxscy9udGRsbC9sb2FkZXIuYzogUmVtb3ZlZCBhIHJlZHVuZGFudCBhbmQgcG9zc2libHkgd3Jvbmcgd2FybmluZy4KCgkqIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGRsbHMva2VybmVsL21vZHVsZS5jLAoJICB0b29scy93aW5lYnVpbGQvaW1wb3J0LmM6CglJbXBsZW1lbnRlZCBEZWxheUxvYWRGYWlsdXJlSG9vayBhbmQgdXNlIGl0IGluIHRoZSB3aW5lYnVpbGQtZ2VuZXJhdGVkCglkZWxheSBsb2FkIGNvZGUuCgoJKiBkbGxzL2NvbWN0bDMyL3RoZW1pbmcuYzogRnJhbmsgUmljaHRlciA8ZnJhbmsucmljaHRlckBnbWFpbC5jb20+CglEZXRlcm1pbmluZyB0aGUgc3VwZXJjbGFzcyBmb3IgYSB3aW5kb3cgc3ViY2xhc3NlZCBmb3IgdGhlbWluZyBkb2Vzbid0Cgl3b3JrIC0gZS5nLiBEZWxwaGkgYnV0dG9ucyBoYXZlIHRoZSBjbGFzc25hbWUgIlRCdXR0b24iIGZvciB3aGljaCBubwoJc3VwZXJjbGFzcyB3aWxsIGJlIGZvdW5kLiBJbnN0ZWFkLCB1c2UgaW5pdGlhbCBzdWJjbGFzcyB3aW5kb3cgcHJvY3MKCXRoYXQgaGF2ZSB0aGUgc3ViY2xhc3MgaGFyZGNvZGVkIGFuZCBzdG9yZSBpdCBmb3IgdGhlICJyZWFsIiBzdWJjbGFzcwoJd2luZG93IHByb2MuCgoJKiBpbmNsdWRlL21zaHRtaHN0LmlkbDogSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCUZpeCBTaG93KkhUTUxEaWFsb2cgZGVjbGFyYXRpb25zLgoKCSogcHJvZ3JhbXMvd2luZWNmZy9Fbi5yYzogUmljaGFyZCBDb2hlbiA8cmljaGFyZEBkYWlqb2J1LmNvLnVrPgoJVXBkYXRlIEVuZ2xpc2ggbmV1dHJhbCB2ZXJzaW9uIG9mIHdpbmVjZmcgZ3JhcGhpY3MgdGFiLCBhbmQgbWFrZSB0aGUKCWdyb3VwYm94ZXMgbm90IG92ZXJsYXAuCgoJKiBkbGxzL3dsZGFwMzIvb3B0aW9uLmMsIGRsbHMvd2xkYXAzMi93bGRhcDMyLmg6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCUltcGxlbWVudCBMREFQX09QVF9BUElfRkVBVFVSRV9JTkZPIGFuZCBMREFQX09QVF9BUElfSU5GTy4KCgkqIGRsbHMvbXNodG1sL29sZW9iai5jOiBKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJLSBBZGRlZCBJT2xlT2JqZWN0OjpDbG9zZSBpbXBsZW1lbnRhdGlvbi4KCS0gT0xFSVZFUkJfSU5QTEFDRUFDVElWQVRFIGlzIHRoZSBzYW1lIGFzIE9MRUlWRVJCX1VJQUNUSVZBVEUuCgoJKiBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLCBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjOgoJSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCBTSExvYWRSZWdVSVN0cmluZ1cuCgoJKiBkbGxzL3NobHdhcGkvdGVzdHMvc2hyZWcuYzogUmljaGFyZCBDb2hlbiA8cmljaGFyZEBkYWlqb2J1LmNvLnVrPgoJQmxhbWUgRXhwYW5kRW52aXJvbm1lbnRTdHJpbmdzQSBmb3IgdGhlIGZhaWxpbmcgTlQ0IHRlc3QuCgoJKiBkbGxzL3V4dGhlbWUvbXNzdHlsZXMuYywgZGxscy91eHRoZW1lL21zc3R5bGVzLmgsCgkgIGRsbHMvdXh0aGVtZS9zeXN0ZW0uYzoKCUZyYW5rIFJpY2h0ZXIgPGZyYW5rLnJpY2h0ZXJAZ21haWwuY29tPgoJRW5oYW5jZSB1eHRoZW1lIHRvIHN0b3JlIHRoZSB0aGVtZWQgc3lzdGVtIG1ldHJpY3MgaW4gdGhlIHJlZ2lzdHJ5IGFuZAoJYWxzbyBiYWNrdXAgdGhlIG9sZCBtZXRyaWNzLiBUaGF0IHdheSwgdGhlbWVkIHN5c3RlbSBjb2xvcnMgYXJlIHNldAoJZXZlbiB1eHRoZW1lIHdhcyBub3QgbG9hZGVkIGFuZCBpbml0aWFsaXplZCB5ZXQsIGFuZCB3aGVuIGEgdGhlbWUgaXMKCWRlYWN0aXZhdGVkLCB0aGUgY29sb3JzIHByaW9yIHRvIHRoZSBhY3RpdmF0aW9uIGFyZSByZXN0b3JlZCBhcyB3ZWxsLgoJQWxzbywgbm90IGhhdmluZyB0byBzZXQgdGhlIHN5c3RlbSBjb2xvcnMgaW4gdXh0aGVtZSBzdGFydHVwIHdvcmtzCglhcm91bmQgd2VpcmQgcHJvYmxlbXMgd2hlcmUgU2V0U3lzdGVtQ29sb3JzKCkgZW5kZWQgdXAgYmVpbmcgY2FsbGVkCglmcm9tIGluc2lkZSB3aW5kb3cgY3JlYXRpb24gYW5kIHRoaXMgc2VlbWluZ2x5IGxlZCB0byBzb21lIGNyZWF0aW9uCgltZXNzYWdlIGJlaW5nIHNlbnQgdHdpY2UuCgoJKiBkbGxzL2tlcm5lbC9tb2R1bGUuYzoKCUFkZCB0aGUgMTYtYml0IHN5c3RlbSBkaXJlY3RvcnkgaWYgYW55IHRvIHRoZSBtb2R1bGUgc2VhcmNoIHBhdGguCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9tc3htbDMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvbXN4bWwzL3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMvbXN4bWwzL3Rlc3RzL01ha2VmaWxlLmluLAoJICBkbGxzL21zeG1sMy90ZXN0cy9kb21kb2MuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBzb21lIG1zeG1sMyB0ZXN0cy4KCgkqIGRsbHMvbnRkbGwvdmlydHVhbC5jOgoJRG9uJ3QgbWFwIGRhdGEgYmV5b25kIHRoZSB2aXJ0dWFsIHNpemUgb2YgYSBzZWN0aW9uLgoKCSogZGxscy9tc3htbDMvbWFpbi5jLCB0b29scy93aW5lLmluZjoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVBhcnRpYWwgaW1wbGVtZW50YXRpb24gb2YgRGxsUmVnaXN0ZXJTZXJ2ZXIuCgoJKiBkbGxzL3dpbm1tL3dpbmVhbHNhL2F1ZGlvLmM6CglBbGV4IFZpbGxhY+1zIExhc3NvIDxhX3ZpbGxhY2lzQHBhbG9zYW50by5jb20+CglSZW1vdmUgY3JhY2tsaW5nIGluIERpcmVjdFNvdW5kL0FMU0EgcGxheWJhY2sgd2l0aCBmdWxsIGhhcmR3YXJlCglhY2NlbGVyYXRpb24uCgoJKiBkbGxzL2NvbWN0bDMyL3RyYWNrYmFyLmM6IEZyYW5rIFJpY2h0ZXIgPGZyYW5rLnJpY2h0ZXJAZ21haWwuY29tPgoJQWRkIGluaXRpYWwgdGhlbWluZyBzdXBwb3J0IGZvciB0cmFja2JhcnMuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzogRnJhbmsgUmljaHRlciA8ZnJhbmsucmljaHRlckBnbWFpbC5jb20+CglBZGQgdGhlbWluZyBmb3IgdG9vbGJhciBjb250cm9sLgoKCSogZGxscy94MTFkcnYvY2xpcGJvYXJkLmMsIGRsbHMveDExZHJ2L3hkbmQuYywgZGxscy94MTFkcnYveGZvbnQuYywKCSAgZGxscy94MTFkcnYveHJhbmRyLmMsIGRsbHMveDExZHJ2L3hyZW5kZXIuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBzb21lIGdjYyA0LjAgd2FybmluZ3MuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9tc3htbDMvZG9tZG9jLmMsIGluY2x1ZGUvY29uZmlnLmguaW46CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBZGQgYSBjb25maWd1cmUgdGVzdCBmb3IgeG1sUmVhZE1lbW9yeS4KCgkqIGRsbHMvbXN2Y3J0ZC90ZXN0cy9NYWtlZmlsZS5pbiwgZGxscy9tc3ZjcnRkL3Rlc3RzL2RlYnVnLmM6CglTYXVsaXVzIEtyYXN1Y2thcyA8c2F1bGl1czJAYXIuZmkubHQ+CglEb24ndCBpbXBvcnQgTVNWQ1JURC5ETEwgYW5kIGRvbid0IGZhaWwgd2hlbiBpdCBjb3VsZCBub3QgYmUgbG9hZGVkLgoKCSogZGxscy9zaGVsbDMyL3Rlc3RzL3NobGZvbGRlci5jOiBTYXVsaXVzIEtyYXN1Y2thcyA8c2F1bGl1czJAYXIuZmkubHQ+CglXaW45OCByZXR1cm5zIEhSRVNVTFRfRlJPTV9XSU4zMihFUlJPUl9GSUxFX05PVF9GT1VORCkpIG9uIGZhaWx1cmUuCgoJKiBkbGxzL21zaHRtbC9tYWluLmMsIGRsbHMvbXNodG1sL21zaHRtbC5zcGVjOgoJSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCUFkZGVkIFJOSUdldENvbXBhdGlibGVWZXJzaW9uIGltcGxlbWVudGF0aW9uLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGcuYzogTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJQ2hlY2sgdGhlIEdldFBpZGxGcm9tRGF0YU9iamVjdCdzIGRvU2VsZWN0ZWQgcGFyYW1ldGVyIGJlZm9yZSBjYWxsaW5nCglhIG1ldGhvZCBvbiBpdC4KCgkqIGRsbHMvc2hlbGwzMi9zaGZsZHJfdW5peGZzLmM6CglNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglVc2Ugd2luZV9nZXRfZG9zX2ZpbGVfbmFtZSBpbnN0ZWFkIG9mIEdldEZ1bGxQYXRoTmFtZS4KCjIwMDUtMDgtMTEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL21zaHRtbC9tc2h0bWxfcHJpdmF0ZS5oLCBkbGxzL21zaHRtbC9uc2VtYmVkLmMsCgkgIGRsbHMvbXNodG1sL25zaWZhY2UuaWRsLCBkbGxzL21zaHRtbC9wZXJzaXN0LmM6CglKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJVXNlIG5zSVdlYkJyb3dzZXJTdHJlYW0gdG8gbG9hZCBodG1sLgoKCSogZGxscy9rZXJuZWwvdGFzay5jOgoJTWFrZSAxNi1iaXQgdGFzayBwcm9wZXJseSBpbmhlcml0IHRoZSBjdXJyZW50IGRpcmVjdG9yeSBvZiB0aGVpcgoJcGFyZW50IChiYXNlZCBvbiBhIHBhdGNoIGJ5IFJpY2hhcmQgQ29oZW4pLgoKCSogZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYywgZGxscy9zaGx3YXBpL3N0cmluZy5jOgoJSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCBTSExvYWRJbmRpcmVjdFN0cmluZy4KCgkqIGRsbHMvY29tY3RsMzIvdGFiLmM6IEZyYW5rIFJpY2h0ZXIgPGZyYW5rLnJpY2h0ZXJAZ21haWwuY29tPgoJRml4IHRleHQgY29sb3IgZm9yICJidXR0b24iIHN0eWxlIHRhYnMgd2hlbiB0aGVtaW5nIGlzIGVuYWJsZWQuCgoJKiBkbGxzL2NvbWN0bDMyL3N0YXR1cy5jOiBGcmFuayBSaWNodGVyIDxmcmFuay5yaWNodGVyQGdtYWlsLmNvbT4KCUFkZCB0aGVtaW5nIGZvciBzdGF0dXMgYmFyIGNvbnRyb2wuCgoJKiBkbGxzL2NvbWN0bDMyL3Byb2dyZXNzLmM6IEZyYW5rIFJpY2h0ZXIgPGZyYW5rLnJpY2h0ZXJAZ21haWwuY29tPgoJQWRkIHRoZW1pbmcgZm9yIHRoZSBwcm9ncmVzcyBjb250cm9sLgoKCSogTWFrZS5ydWxlcy5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvY3J0ZGxsL01ha2VmaWxlLmluLAoJICBkbGxzL21zdmNydC90ZXN0cy9NYWtlZmlsZS5pbiwgZGxscy9tc3ZjcnRkL3Rlc3RzL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy9ub3RlcGFkL01ha2VmaWxlLmluLCBwcm9ncmFtcy9yZWdlZGl0L01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy90YXNrbWdyL01ha2VmaWxlLmluOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJVHVybiBvZmYgZ2NjIDQuMCdzIGJ1aWx0aW4gd2NoYXIgaW5saW5lcy4KCgkqIGRsbHMvc2VjdXIzMi90ZXN0cy9tYWluLmMsIGluY2x1ZGUvd2luZXJyb3IuaDoKCUthaSBCbGluIDxibGluQGdteC5uZXQ+CglBZGRlZCBtb3JlIHNlY3VyMzIuZGxsIHRlc3RzIGFuZCBmaXhlZCBtaXNzaW5nIGNvbnN0YW50cyBpbgoJd2luZXJyb3IuaC4KCgkqIGRsbHMvd2xkYXAzMi9NYWtlZmlsZS5pbiwgZGxscy93bGRhcDMyL2RlbGV0ZS5jLAoJICBkbGxzL3dsZGFwMzIvd2lubGRhcF9wcml2YXRlLmgsIGRsbHMvd2xkYXAzMi93bGRhcDMyLnNwZWM6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCUltcGxlbWVudCBsZGFwX2RlbGV0ZSogZnVuY3Rpb25zLgoJQWRkIG1pc3Npbmcgc3BlYyBmaWxlIGVudHJpZXMuCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmg6IEZyYW5rIFJpY2h0ZXIgPGZyYW5rLnJpY2h0ZXJAZ21haWwuY29tPgoJQWRkIFdDX0NPTUJPQk9YLgoKCSogZGxscy9rZXJuZWwvb2xkY29uZmlnLmM6IEZyYW5rIFJpY2h0ZXIgPGZyYW5rLnJpY2h0ZXJAZ21haWwuY29tPgoJRml4IGEgY3Jhc2ggb24gc3RhcnR1cCB3aGVuIC9wcm9jL2lkZSBkb2VzIG5vdCBleGlzdC4KCgkqIGRsbHMvY29tY3RsMzIvcmViYXIuYzogRnJhbmsgUmljaHRlciA8ZnJhbmsucmljaHRlckBnbWFpbC5jb20+CglBZGQgdGhlbWluZyBmb3IgdGhlIHJlYmFyIGNvbnRyb2wuCgoJKiBkbGxzL2NvbWN0bDMyL21vbnRoY2FsLmM6IEZyYW5rIFJpY2h0ZXIgPGZyYW5rLnJpY2h0ZXJAZ21haWwuY29tPgoJQWRkIHRoZW1pbmcgZm9yIHRoZSBtb250aGNhbCBjb250cm9sLgoKCSogZGxscy9tc2h0bWwvcHJvdG9jb2wuYzogSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCUFkZGVkIHN1cHBvcnQgZm9yIGFnZ3JlZ2F0aW9uIGluIGFib3V0IHByb3RvY29sLgoKCSogZGxscy9zaGVsbDMyL3NobGV4ZWMuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCB0aGUgcmV0dXJuIHZhbHVlIG9mIFNIRUxMX0FyZ2lmeSgpIHNvIGl0IG9uY2UgYWdhaW4gcmV0dXJucyB0cnVlCglpZiBhICclMScgb3IgZXF1aXZhbGVudCBwbGFjZWhvbGRlciB3YXMgZm91bmQuIFRoaXMgZml4ZXMKCVNoZWxsRXhlY3V0ZUV4KGxwRmlsZT0iZm9vLnR4dCIsIGxwQ2xhc3M9InR4dGZpbGUiKS4KCgkqIGRsbHMvbnRkbGwvdGVzdHMvYXRvbS5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCURlZmluZSBXSU4zMl9OT19TVEFUVVMgc28gd2UgZG9uJ3QgZ2V0ICdkdXBsaWNhdGUgbWFjcm8nIGVycm9ycyB3aGVuCgljb21waWxpbmcgd2l0aCB0aGUgUFNESyBhbmQgTVNWQy4KCUFkZCBzb21lIHR5cGVzIHRoYXQgYXJlIG5vdCBkZWZpbmVkIGJ5IHRoZSBQU0RLLgoKCSogZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZGxscy9rZXJuZWwvcGF0aC5jLCBpbmNsdWRlL3dpbmJhc2UuaDoKCUFkZGVkIGEgd2luZV9nZXRfZG9zX2ZpbGVfbmFtZSBmdW5jdGlvbiBpbiBrZXJuZWwzMiBhcyBhIHdyYXBwZXIKCWFyb3VuZCB0aGUgbmV3IHdpbmVfdW5peF90b19udF9maWxlX25hbWUuCgoJKiBwcm9ncmFtcy9tc2lleGVjL21zaWV4ZWMuYywgcHJvZ3JhbXMvbXNpZXhlYy9tc2lleGVjLmg6CglSZW1vdmVkIGEgdXNlbGVzcyBoZWFkZXIgZmlsZS4KCgkqIGRsbHMvbHpleHBhbmQvbHpleHBhbmQuc3BlYywgZGxscy9semV4cGFuZC9semV4cGFuZDE2LmM6CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglJbXBsZW1lbnQgTFpEb25lIGluIGx6ZXhwYW5kLCBhcyB0aGUgMzIgYml0IG9uZSBtb3ZlZCB0byBrZXJuZWwuCgoJKiBkbGxzL21zeG1sMy9kb21kb2MuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJSW5jcmVtZW50IHRoZSBkb2N1bWVudCdzIHJlZmNvdW50IHdoZW4gY3JlYXRpbmcgdGhlIHJvb3QgZWxlbWVudC4KCgkqIGRsbHMvbXN4bWwzL2VsZW1lbnQuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IElYTUxET01FbGVtZW50OjpnZXRfdGFnTmFtZS4KCgkqIGRsbHMvZGRyYXcvZGV2aWNlX29wZW5nbC5jLCBkbGxzL3dpbmVkM2QvZGlyZWN0eC5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IGdjYyA0LjAgd2FybmluZ3MuCgoJKiBkbGxzL3dpbmVkM2QvZGV2aWNlLmM6IE9saXZlciBTdGllYmVyIDxvbGl2ZXJfc3RpZWJlckB5YWhvby5jby51az4KCUFsbG93IHRoZSBwYWxldHRlIHRvIGJlIHNldCBhbmQgcmV0cmlldmVkLgoKCSogZGxscy9udGRsbC9kaXJlY3RvcnkuYywgZGxscy9udGRsbC9udGRsbC5zcGVjLAoJICBkbGxzL250ZGxsL250ZGxsX21pc2MuaCwgZGxscy9udGRsbC9wYXRoLmMsIGluY2x1ZGUvd2ludGVybmwuaDoKCUFkZGVkIGEgd2luZV91bml4X3RvX250X2ZpbGVfbmFtZSBmdW5jdGlvbiB0byBkbyBwcm9wZXIgcGF0aG5hbWUKCWNvbnZlcnNpb25zIGluc3RlYWQgb2YgcmVseWluZyBvbiBHZXRGdWxsUGF0aE5hbWUgaGFja3MuCgoJKiBkbGxzL3VzZXIvbWVzc2FnZS5jOgoJU2V0IHJlbW92ZSB0byBUUlVFIGluIGFjY2VwdF9oYXJkd2FyZV9tZXNzYWdlIGZvciBtZXNzYWdlcyB0aGF0IHNob3VsZAoJZ28gdG8gYSBkaWZmZXJlbnQgdGhyZWFkLiBTaW1wbGlmeSB0aGUgY29kZSBhIGJpdC4KCgkqIGluY2x1ZGUvd2lubGRhcC5oOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkIHNvbWUgbWlzc2luZyBMREFQIGRlZmluaXRpb25zLgoKCSogdG9vbHMvd2luZWR1bXAvbG5rLmM6IFN0ZXZlbiBFZHdhcmRzIDxzdGV2ZW5fZWQ0MTUzQHlhaG9vLmNvbT4KCUNvcnJlY3Qgc2l6ZSBjaGVjay4KCgkqIGRsbHMvc2hlbGwzMi9zaGZsZHJfZGVza3RvcC5jLCBkbGxzL3NoZWxsMzIvdGVzdHMvc2hsZm9sZGVyLmMsCgkgIGluY2x1ZGUvc2hvYmppZGwuaWRsOgoJU3RldmVuIEVkd2FyZHMgPHN0ZXZlbl9lZDQxNTNAeWFob28uY29tPgoJQ29ycmVjdCBkZWZpbml0aW9uIG9mIFNGR0FPX1NUT1JBR0VBTkNFU1RPUi4KCgkqIGRsbHMvbXN4bWwzL2RvbWRvYy5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgSVhNTERPTURvY3VtZW50Ojpsb2FkWE1MLgoKCSogZGxscy9zZW5zYXBpL3NlbnNhcGkuYzogU3RldmVuIEVkd2FyZHMgPHN0ZXZlbl9lZDQxNTNAeWFob28uY29tPgoJUmVtb3ZlIHJlZHVuZGFudCBpbmNsdWRlLgoKCSogdG9vbHMvd2luYXBpL3dpbmFwaV9sb2NhbC5wbToKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCUNvcnJlY3QgYSB0eXBvIGluIHdpbmFwaV9sb2NhbC5wbS4KCgkqIHRvb2xzL3dpbmFwaS93aW4zMi5hcGk6IFZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCUFub3RoZXIgdXBkYXRlIHRvIHdpbiouYXBpLgoKCSogZGxscy93aW5lZDNkL2RldmljZS5jLCBkbGxzL3dpbmVkM2Qvc3RhdGVibG9jay5jLAoJICBkbGxzL3dpbmVkM2Qvd2luZWQzZF9wcml2YXRlLmg6CglPbGl2ZXIgU3RpZWJlciA8b2xpdmVyX3N0aWViZXJAeWFob28uY28udWs+CglUcmFjayB0aGUgc3RhdGUgb2Ygc29mdHdhcmVWZXJ0ZXhQcm9jZXNzaW5nLgoKCSogZGxscy93aW5lZDNkL2Jhc2V0ZXh0dXJlLmM6CglPbGl2ZXIgU3RpZWJlciA8b2xpdmVyX3N0aWViZXJAeWFob28uY28udWs+CglDb3JyZWN0IHRoZSBzdGFydGluZyB2YWx1ZXMgb2YgTUlOLCBNQVggYW5kIE1JUCBmaWx0ZXIsIHRoZXkgbm93IG1hdGNoCgl0aGUgaW5pdGlhbCB2YWx1ZXMgaW4gb3BlbmdsLgoKCSogZGxscy9yaWNoZWQyMC93cml0ZXIuYzogUGhpbCBLcnlsb3YgPHBoaWxAbmV3c3Rhci5yaW5ldC5ydT4KCUZpeGVkIGEgYnVnIGluIEVNX1NUUkVBTU9VVCBSaWNoRWRpdCBtZXNzYWdlIGhhbmRsZXIgd2hpY2ggdHJ1bmNhdGVkCglzb21lIHN0cmVhbWVkIHRleHQuCgoJKiBkbGxzL21zaHRtbC9odG1sZG9jLmMsIGRsbHMvbXNodG1sL21haW4uYywKCSAgZGxscy9tc2h0bWwvbXNodG1sX3ByaXZhdGUuaCwgZGxscy9tc2h0bWwvbnNlbWJlZC5jLAoJICBkbGxzL21zaHRtbC9vbGVvYmouYywgZGxscy9tc2h0bWwvb2xld25kLmMsIGRsbHMvbXNodG1sL3BlcnNpc3QuYywKCSAgZGxscy9tc2h0bWwvcHJvdG9jb2wuYywgZGxscy9tc2h0bWwvc2VydmljZS5jLCBkbGxzL21zaHRtbC92aWV3LmM6CglKYWNlayBDYWJhbiA8Y2phY2VrQGdtYWlsLmNvbT4KCU1vdmUgaW5jbHVkZXMgb2YgaW50ZXJmYWNlcyB0byBtc2h0bWxfcHJpdmF0ZS5oLgoKCSogZGxscy9zaGVsbDMyL3NobGV4ZWMuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBoYW5kbGluZyBvZiBTRUVfTUFTS19DTEFTU05BTUUgYW5kIFNFRV9NQVNLX0NMQVNTS0VZLiBUaGV5IGFyZSBub3QKCWRpc2pvaW50IGZsYWdzLgoKCSogZGxscy9udGRsbC90ZXN0cy9yZWcuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglSZW1vdmUgdW5uZWVkZWQgd2luZS9saWJyYXJ5LmggaW5jbHVkZS4KCVVzZSBsc3RybGVuVygpIGluc3RlYWQgb2YgdGhlIFdpbmUtc3BlY2lmaWMgc3RybGVuVygpLiBUaGlzIGFsc28gbGV0cwoJdXMgZ2V0IHJpZCBvZiB0aGUgd2luZS91bmljb2RlLmggaW5jbHVkZS4KCURlZmluZSB0aGUgSW5pdGlhbGl6ZU9iamVjdEF0dHJpYnV0ZXMoKSBtYWNybyBpZiBub3QgdXNpbmcgV2luZSdzCgl3aW50ZXJubC5oIGhlYWRlci4KCjIwMDUtMDgtMTAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC92ZXJzaW9uLmM6CglEaXJlY3RseSB1c2UgdGhlIFBFQiB2ZXJzaW9uIGZpZWxkcyBpbiBHZXRWZXJzaW9uLgoKCSogZGxscy9zaGx3YXBpL29yZGluYWwuYywgZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYzoKCUh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglQYXJ0aWFsIGltcGxlbWVudGF0aW9uIG9mIERlbGV0ZU1lbnVXcmFwLgoKCSogZGxscy91c2VyL3Rlc3RzL2RjZS5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCURlZmluZSBEQ1hfVVNFU1RZTEUgaWYgaXQgaXMgbm90IGRlZmluZWQgYWxyZWFkeS4gRml4ZXMgdGhlCgljb21waWxhdGlvbiB3aXRoIHRoZSBQU0RLLgoKCSogZGxscy9udGRsbC90ZXN0cy9ydGwuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglEZWZpbmUgUlRMX0hBTkRMRSBhbmQgUlRMX0hBTkRMRV9UQUJMRSBpZiBub3QgdXNpbmcgV2luZSdzIHdpbnRlcm5sLmgKCWhlYWRlci4gRml4ZXMgdGhlIGNvbXBpbGF0aW9uIHdpdGggdGhlIFBTREsuCgoJKiBpbmNsdWRlL3dpbmxkYXAuaDogSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglTeW5jaHJvbml6ZSB3aW5sZGFwLmggd2l0aCB3aW5sZGFwX3ByaXZhdGUuaC4KCgkqIGRsbHMvbnRkbGwvcnRsLmMsIGRsbHMvbnRkbGwvdmVyc2lvbi5jOgoJSW1wbGVtZW50ZWQgUnRsR2V0TnRQcm9kdWN0VHlwZS4KCgkqIGRsbHMvZG1iYW5kL2RtYmFuZF9tYWluLmMsIGRsbHMvZG1sb2FkZXIvZG1sb2FkZXJfbWFpbi5jLAoJICBkbGxzL2Rtc2NyaXB0L2Rtc2NyaXB0X21haW4uYywgZGxscy9kbXN5bnRoL2Rtc3ludGhfbWFpbi5jLAoJICBkbGxzL2RtdXNpYy9kbXVzaWNfbWFpbi5jLCBkbGxzL2Rzd2F2ZS9kc3dhdmVfbWFpbi5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglDb3JyZWN0IG1vcmUgbWlzbWF0Y2hlcyBiZXR3ZWVuIHNwZWMgZmlsZXMgYW5kIGNvbW1lbnRzIGFib3V0IGV4cG9ydAoJbnVtYmVyLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvY29tbS5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFkZCB0cmFpbGluZyAnXG4ncyB0byB0cmFjZSgpIGNhbGwuCgoJKiBkbGxzL2NvbWN0bDMyL3Rlc3RzL3RyZWV2aWV3LmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJVGhlIFBTREsgZG9lcyBub3QgZGVmaW5lIGEgVHJlZVZpZXdfSW5zZXJ0SXRlbUEoKSBtYWNybyBzbyB1c2UKCVRyZWVWaWV3X0luc2VydEl0ZW0oKSBpbnN0ZWFkLgoKCSogZGxscy93aW5tbS93aW5lZXNkL2F1ZGlvLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglVbmljb2RpZnkgd2luZWVzZC4KCUZpeGVzIFdJRE1fR0VUREVWQ0FQUyBhbmQgV09ETV9HRVRERVZDQVBTLgoJQ2FsbCBVbmljb2RlIGZ1bmN0aW9ucyBpbnN0ZWFkIG9mIHRoZWlyIEFuc2kgZXF1aXZhbGVudCB3aGVuIHBvc3NpYmxlLgoKCSogZGxscy93bGRhcDMyL01ha2VmaWxlLmluLCBkbGxzL3dsZGFwMzIvYWRkLmMsCgkgIGRsbHMvd2xkYXAzMi93bGRhcDMyLnNwZWM6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCUltcGxlbWVudCBsZGFwX2FkZCogZnVuY3Rpb25zLgoKCSogZGxscy9rZXJuZWwvcHJvY2Vzcy5jLCBkbGxzL250ZGxsL2xvYWRlci5jLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsCgkgIGRsbHMvbnRkbGwvbnRkbGxfbWlzYy5oLCBkbGxzL250ZGxsL3ZlcnNpb24uYzoKCU1vdmVkIHRoZSB2ZXJzaW9uIGluaXRpYWxpemF0aW9uIHRvIG50ZGxsLgoJUHJvcGVybHkgc2V0IHRoZSB2ZXJzaW9uIGZpZWxkcyBpbiB0aGUgUEVCLgoJUmVtb3ZlZCBzb21lIG5vIGxvbmdlciB1c2VkIHN0cnVjdHVyZXMuCgoJKiB0b29scy93aW5lYnVpbGQvcmVzMzIuYzoKCUJ5dGVzd2FwIHRoZSByZXNvdXJjZXMgaWYgd2UgZGV0ZWN0IHRoYXQgdGhlIGhlYWRlciBpcyBpbiB0aGUgd3JvbmcKCWVuZGlhbm5lc3MuCgoJKiBkbGxzL2RwbGF5eC9kcGNsYXNzZmFjdG9yeS5jLCBkbGxzL2RwbGF5eC9kcGxheXguc3BlYywKCSAgZGxscy9kcGxheXgvZHBsYXl4X21haW4uYywgZGxscy9kcG5ocGFzdC9kcG5ocGFzdC5zcGVjLAoJICBkbGxzL2RwbmhwYXN0L21haW4uYywgZGxscy9tc2kvbXNpLmMsIGRsbHMvbXNpL21zaS5zcGVjLAoJICBkbGxzL21zaS9yZWdzdnIuYywgZGxscy9vbGVhdXQzMi9vbGVhdXQuYywKCSAgZGxscy9vbGVhdXQzMi9vbGVhdXQzMi5zcGVjLCBkbGxzL29sZWF1dDMyL3JlZ3N2ci5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglDaGFuZ2Ugc29tZSBEbGwqIGZ1bmN0aW9ucyBzbyB0aGV5IGFyZSBleHBvcnRlZCBieSBuYW1lIGxpa2Ugb24KCVdpbmRvd3MuCglVcGRhdGUgdGhlIGRvY3VtZW50YXRpb24gYWNjb3JkaW5nbHkuCgoJKiBkbGxzL3dsZGFwMzIvd2xkYXAzMi5yYywgZGxscy93bGRhcDMyL3dsZGFwMzJfRnIucmM6CglKb25hdGhhbiBFcm5zdCA8Sm9uYXRoYW5AZXJuc3RmYW1pbHkuY2g+CglGcmVuY2ggbG9jYWxpemF0aW9uIGZvciB3bGRhcDMyLgoKCSogZGxscy9rZXJuZWwvbHpleHBhbmQuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglVcGRhdGUgdGhlIGRvY3VtZW50YXRpb24gdG8gcmVmbGVjdCB0aGUgZmFjdCB0aGF0IHRoZSBMWiogZnVuY3Rpb25zCglhcmUgaW1wbGVtZW50ZWQgaW4ga2VybmVsMzIuZGxsIG5vdy4KCgkqIGRsbHMvd2xkYXAzMi93aW5sZGFwX3ByaXZhdGUuaCwgZGxscy93bGRhcDMyL3dsZGFwMzIuaDoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJQWRkIGhlbHBlcnMgZm9yIGNvbnZlcnRpbmcgKGFycmF5cyBvZikgTERBUE1vZCBzdHJ1Y3R1cmVzIGludG8KCWRpZmZlcmVudCBlbmNvZGluZ3MuCgoJKiBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLCBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjOgoJSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCBJVW5rbm93bl9FbnVtT2JqZWN0cy4KCgkqIGRsbHMva2VybmVsL3Byb2ZpbGUuYywgZGxscy9rZXJuZWwvdGVzdHMvcHJvZmlsZS5jOgoJUmljaGFyZCBDb2hlbiA8cmljaGFyZEBkYWlqb2J1LmNvLnVrPgoJLSBGaXggcmVncmVzc2lvbiBpbiBHZXRQcml2YXRlUHJvZmlsZVN0cmluZzE2IGZvciBrZXk9TlVMTC4KCS0gQ2hlY2sgcmV0dXJuIHZhbHVlcyBpbiBQcm9maWxlIHRlc3RzLgoKCSogZGxscy9nZGkvbWV0YWZpbGUuYywgZGxscy9rZXJuZWwva2VybmVsX21haW4uYywKCSAgZGxscy9rZXJuZWwvbG9jYWwxNi5jLCBkbGxzL2tlcm5lbC9yZXNvdXJjZTE2LmMsIGRsbHMva2VybmVsL3Rhc2suYywKCSAgZGxscy9vbGUzMi9vbGUxNi5jLCBkbGxzL29sZTMyL3N0b3JhZ2UuYywgZGxscy91c2VyL2VkaXQuYywKCSAgZGxscy91c2VyL3VzZXIxNi5jLCBkbGxzL3dpbm1tL21tc3lzdGVtLmMsIGRsbHMvd293MzIvd293X21haW4uYywKCSAgaW5jbHVkZS93aW5lL3dpbmJhc2UxNi5oLCBpbmNsdWRlL3dvd250MzIuaDoKCVVzZSB0aGUgcHJvcGVyIFdPVyBmdW5jdGlvbnMgZXZlcnl3aGVyZSBpbnN0ZWFkIG9mIHRoZSBLMzJXT1cgdmFyaWFudC4KCgkqIGRsbHMvd2luYXNwaS9NYWtlZmlsZS5pbiwgZGxscy93aW5hc3BpL2FzcGkuYywKCSAgZGxscy93aW5hc3BpL3dpbmVzY3NpLmg6CglWaXRhbGl5IE1hcmdvbGVuIDx3aW5lLXBhdGNoQGtpZXZpbmZvLmNvbT4KCU1ha2UgdXNlIG9mIG5vdyBmdWxsIGFuZCBjb3JyZWN0IEhLTE1cSEFSRFdBUkVcREVWSUNFU1xTY3NpLgoKCSogZGxscy9rZXJuZWwvb2xkY29uZmlnLmM6IFZpdGFsaXkgTWFyZ29sZW4gPHdpbmUtcGF0Y2hAa2lldmluZm8uY29tPgoJVXNlIC9wcm9jIGZpbGVzeXN0ZW0gdG8gY3JlYXRlIEhLTE1cSEFSRFdBUkVcREVWSUNFTUFQXFNjc2kgZW50cmllcy4KCgkqIHByb2dyYW1zL3dpbmVsYXVuY2hlci5pbjogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCBoYXJtbGVzcyAvdG1wIHByb2JsZW0uCgoJKiBkbGxzL3VzZXIvZHJpdmVyLmMsIGRsbHMvdXNlci91c2VyX21haW4uYywgZGxscy91c2VyL3VzZXJfcHJpdmF0ZS5oOgoJTWFrZSBzdXJlIHdlIGRvbid0IGNhbGwgdGhlIGdyYXBoaWNzIGRyaXZlciBhZnRlciBwcm9jZXNzIGRldGFjaC4KCgkqIGRsbHMvbXN4bWwzL01ha2VmaWxlLmluLCBkbGxzL21zeG1sMy9kb21kb2MuYywgZGxscy9tc3htbDMvZWxlbWVudC5jLAoJICBkbGxzL21zeG1sMy9tc3htbF9wcml2YXRlLmgsIGRsbHMvbXN4bWwzL25vZGUuYywKCSAgZGxscy9tc3htbDMvbm9kZW1hcC5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQ3JlYXRlIGEgbm9kZSBvYmplY3QgYW5kIHVzZSBpdCB0byBob2xkIGxpYnhtbDIgcG9pbnRlcnMuCgoJKiBkbGxzL21zaHRtbC9tc2h0bWxfcHJpdmF0ZS5oLCBkbGxzL21zaHRtbC9uc2VtYmVkLmMsCgkgIGRsbHMvbXNodG1sL3BlcnNpc3QuYywgZGxscy9tc2h0bWwvdmlldy5jOgoJSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCUluaXQgbnNXZWJCcm93c2VyIHdpbmRvdyB3aGlsZSBjcmVhdGluZyBuc2NvbnRhaW5lci4KCgkqIGRsbHMvYXRsL3JlZ2lzdHJhci5jLCBkbGxzL2RtYmFuZC9kbWJhbmRfbWFpbi5jLAoJICBkbGxzL2RtbG9hZGVyL2RtbG9hZGVyX21haW4uYywgZGxscy9kbXNjcmlwdC9kbXNjcmlwdF9tYWluLmMsCgkgIGRsbHMvZG1zeW50aC9kbXN5bnRoX21haW4uYywgZGxscy9kbXVzaWMvZG11c2ljX21haW4uYywKCSAgZGxscy9kc3dhdmUvZHN3YXZlX21haW4uYywgZGxscy9tbGFuZy9tbGFuZy5jLCBkbGxzL21zaHRtbC9tYWluLmMsCgkgIGRsbHMvbXNpL21zaS5jLCBkbGxzL21zeG1sMy9mYWN0b3J5LmMsIGRsbHMvb2xlMzIvb2xlMi5jLAoJICBkbGxzL29sZTMyL29sZTIuc3BlYywgZGxscy9vbGUzMi9zdG9yYWdlLmM6CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglDb3JyZWN0IG1pc21hdGNoZXMgYmV0d2VlbiBzcGVjIGZpbGVzIGFuZCBjb21tZW50cyBhYm91dCBleHBvcnQKCW51bWJlci4KCgkqIGRsbHMvdXNwMTAvdXNwMTAuYywgaW5jbHVkZS9tc2FjbWRydi5oLCBpbmNsdWRlL21zaS5oLAoJICBpbmNsdWRlL21zeG1sLmlkbCwgaW5jbHVkZS9tc3htbDIuaWRsLCBpbmNsdWRlL29kYmNpbnN0LmgsCgkgIGluY2x1ZGUvc3RybWlmLmlkbCwgaW5jbHVkZS94bWxkb20uaWRsOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJVXNlICNpbmNsdWRlICJmb28uaCIgZm9yIGluY2x1ZGluZyBXaW5kb3dzIGhlYWRlcnMgaW4gZGxscy8sIHVzZQoJI2luY2x1ZGUgPGJhci5oPiBmb3IgaW5jbHVkaW5nIFdpbmRvd3MgaGVhZGVycyBpbiBpbmNsdWRlLy4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnLmM6IFRyb3kgUm9sbG8gPHdpbmVAdHJveS5yb2xsby5uYW1lPgoJQnJvd3NlIHRvIHRoZSBkaXJlY3RvcnkgaWYgYSBkaXJlY3RvcnkgbmFtZSBpcyB0eXBlZCBpbnRvIHRoZSBlZGl0IGJveAoJb2YgYSBmaWxlIGRpYWxvZyBhbmQgdGhlIGNvbmZpcm1hdGlvbiBidXR0b24gKG9yIEVudGVyIGtleSkgaXMgaGl0LgoJUmV0dXJuIGFueSBmaWxlIG5hbWUgaW4gdGhlIGVkaXQgYm94IGlmIE9GTl9OT1ZBTElEQVRFIGlzIHNldCBhbmQKCU9GTl9GSUxFTVVTVEVYSVNUIGlzIG5vdCwgZXZlbiBpZiB0aGF0IGZpbGUgbmFtZSBpbmNsdWRlcyBhIHBhdGggbmFtZQoJb3IgaXMgdGhlIG5hbWUgb2YgYSBmb2xkZXIuCgoJKiBkbGxzL3dsZGFwMzIvYmluZC5jLCBkbGxzL3dsZGFwMzIvaW5pdC5jLCBkbGxzL3dsZGFwMzIvc2VhcmNoLmM6CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglVc2UgSEFWRV9MREFQX0ggd2hlbiBjaGVja2luZyBpZiBsZGFwLmggaXMgYXZhaWxhYmxlLgoKCSogZGxscy9vcGVuZ2wzMi93Z2wuYywgZGxscy9vcGVuZ2wzMi93Z2xfZXh0LmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglnY2MgNC4wIHdhcm5pbmcgZml4ZXMuCgoJKiB0b29scy93aW5hcGkvd2luMTYuYXBpLCB0b29scy93aW5hcGkvd2luMzIuYXBpOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJQW5vdGhlciB1cGRhdGUgdG8gdGhlIHdpbiouYXBpIGZpbGVzLgoKCSogdG9vbHMvd2luYXBpL3dpbmFwaV9jaGVjazoKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCVNpbmNlIHdpbmRvd3MvIGlzIGdvbmUsIGhlYWRlcnMgZm9yIHVzZXIgYXJlIG9ubHkgaW4KCWRsbHMvdXNlci8uIFJlbW92ZSBrbHVkZ2UgZnJvbSB3aW5hcGlfY2hlY2suCgoJKiBkbGxzL21hcGkzMi9wcm9wLmMsIGRsbHMvb2xlMzIvb2xlMTYuYzoKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCVJlbW92ZSBsb2NhbCBkZWNsYXJhdGlvbnMgYWxyZWFkeSBpbiBpbmNsdWRlZCBwdWJsaWMgaGVhZGVycy4KCgkqIGluY2x1ZGUvd2luZS93aW5iYXNlMTYuaDogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IGdjYyA0LjAgd2FybmluZ3MuCgoyMDA1LTA4LTA5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9zaGVsbDMyL2RlYnVnaGxwLmM6IFVzZSBFUlIgaW5zdGVhZCBvZiBEUFJJTlRGIGluIGR1bXBfcGlkbF9oZXguCgoJKiB0b29scy93aW5lZ2NjL3V0aWxzLmMsIHRvb2xzL3dpbmVnY2MvdXRpbHMuaCwKCSAgdG9vbHMvd2luZWdjYy93aW5lZ2NjLmM6CglJZ25vcmUgcHJlbGluayBmYWlsdXJlcy4KCgkqIGRsbHMvbXNodG1sL01ha2VmaWxlLmluLCBkbGxzL21zaHRtbC9tc2h0bWxfcHJpdmF0ZS5oLAoJICBkbGxzL21zaHRtbC9wZXJzaXN0LmM6CglKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJLSBCZWdpbm5pbmcgaW1wbGVtZW50YXRpb24gb2YgdHJ1ZSBJUGVyc2lzdE1vbmlrZXI6OkxvYWQuCgktIFRISVMgbWFjcm9zIGNsZWFudXAuCgoJKiBkbGxzL250ZGxsL2xvYWRlci5jOgoJRG9uJ3QgY2FsbCBwcm9jZXNzIGF0dGFjaCBub3RpZmljYXRpb24gZHVyaW5nIHByb2Nlc3Mgc2h1dGRvd24uCglNYWtlIHN1cmUgd2UgZG9uJ3QgaW5zZXJ0IGEgbW9kdWxlIGluIHRoZSBzYW1lIGxpc3QgdHdpY2UuCgoJKiBkbGxzL21zaHRtbC9wcm90b2NvbC5jLCBkbGxzL21zaHRtbC90ZXN0cy9wcm90b2NvbC5jOgoJSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCVJlcG9ydCBCSU5EU1RBVFVTX01JTUVUWVBFQVZBSUxBQkxFIGluIEFib3V0UHJvdG9jb2w6OlN0YXJ0LgoKCSogZGxscy93bGRhcDMyL01ha2VmaWxlLmluLCBkbGxzL3dsZGFwMzIvb3B0aW9uLmMsCgkgIGRsbHMvd2xkYXAzMi93bGRhcDMyLnNwZWM6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCUltcGxlbWVudCBsZGFwX3tnZXQsc2V0fV9vcHRpb257QSxXfS4KCgkqIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWMsIGRsbHMvc2hsd2FwaS90aHJlYWQuYzoKCUh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglfQ3JlYXRlQWxsQWNjZXNzU2VjdXJpdHlBdHRyaWJ1dGVzIHRha2VzIHRocmVlIHBhcmFtZXRlcnMuCgoJKiBkbGxzL01ha2VkbGwucnVsZXMuaW4sIGRsbHMva2VybmVsL01ha2VmaWxlLmluLAoJICBkbGxzL250ZGxsL01ha2VmaWxlLmluOgoJU3BlY2lmeSBhIGJhc2UgYWRkcmVzcyBmb3Iga2VybmVsIGFuZCBudGRsbC4KCgkqIGRsbHMvbXN4bWwzL21haW4uYywgZGxscy9tc3htbDMvbXN4bWxfcHJpdmF0ZS5oOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJSW5pdGlhbGl6ZSBhbmQgY2xlYW4gdXAgbGlieG1sMiBpbiBEbGxNYWluLgoKCSogTWFrZS5ydWxlcy5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuYWMsIHRvb2xzL3dpbmVnY2MvTWFrZWZpbGUuaW4sCgkgIHRvb2xzL3dpbmVnY2Mvd2luZWdjYy5jOgoJQWRkZWQgc3VwcG9ydCBmb3IgdGhlIC0taW1hZ2UtYmFzZSBsaW5rZXIgb3B0aW9uIGluIHdpbmVnY2MgdXNpbmcgdGhlCglwcmVsaW5rIHRvb2wuCgoJKiBkbGxzL250ZGxsL250ZGxsX21pc2MuaCwgZGxscy9udGRsbC90aHJlYWQuYywgZGxscy9udGRsbC92aXJ0dWFsLmM6CglBZGRlZCBhIFZJUlRVQUxfYWxsb2NfdGViIGZ1bmN0aW9uIHRvIGFsbG9jYXRlIFRFQnMgd2hpbGUgbWFraW5nIHN1cmUKCXRoZXkgZG9uJ3QgZW5kIHVwIGFib3ZlIHRoZSBhZGRyZXNzIHNwYWNlIGxpbWl0LgoKCSogZGxscy9vbGVhdXQzMi9vbGVhdXQuYywgZGxscy9vbGVhdXQzMi90bWFyc2hhbC5jLAoJICBkbGxzL29sZWF1dDMyL3RtYXJzaGFsLmgsIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5oOgoJR2V0IHJpZCBvZiB0aGUgYWxtb3N0IGVtcHR5IHRtYXJzaGFsLmggZmlsZS4KCgkqIHNlcnZlci9uYW1lZF9waXBlLmMsIHNlcnZlci9yZWdpc3RyeS5jLCBzZXJ2ZXIvcmVxdWVzdC5jLAoJICBzZXJ2ZXIvc29jay5jLCBzZXJ2ZXIvdGhyZWFkLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggc29tZSBnY2MgNC4wIHdhcm5pbmdzLgoKCSogc2VydmVyL3JlZ2lzdHJ5LmM6CglUaGUgdGVtcCBidWZmZXIgYWx3YXlzIHN0b3JlcyBXQ0hBUnMsIGZpeGVkIGl0cyB0eXBlIGFuZCBnb3QgcmlkIG9mIGEKCW51bWJlciBvZiBjYXN0cy4KCgkqIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5oLCBkbGxzL29sZWF1dDMyL3ZhcnR5cGUuYzoKCU1vdmVkIGEgbnVtYmVyIG9mIGRlZmluaXRpb25zIHRoYXQgYXJlIG5vdCBuZWVkZWQgaW4gb3RoZXIgZmlsZXMgaW50bwoJdmFydHlwZS5jCgoJKiBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2l0c3MvLmN2c2lnbm9yZSwgZGxscy9pdHNzL01ha2VmaWxlLmluOgoJaXRzcyBkb2Vzbid0IG5lZWQgYW4gaW1wb3J0IGxpYnJhcnkuCgoJKiBkbGxzL2FkdnBhY2svYWR2cGFjay5zcGVjLCBkbGxzL2RjaW1hbjMyL2RjaW1hbjMyLnNwZWMsCgkgIGRsbHMvaXRzcy9pdHNzLnNwZWMsIGRsbHMvbXNpbWczMi9tc2ltZzMyLnNwZWM6CglNYXJrIERsbE1haW4gYW5kIHNpbWlsYXIgZXhwb3J0cyBhcyBwcml2YXRlLgoKCSogdG9vbHMvd2luZWJ1aWxkL3BhcnNlci5jOgoJQWRkZWQgYSB3YXJuaW5nIGZvciBEbGxHZXRWZXJzaW9uIGFuZCBEbGxJbnN0YWxsIG5vdCBiZWluZyBkZWNsYXJlZAoJcHJpdmF0ZS4gQWxzbyB3YXJuIHdoZW4gb25lIG9mIHRoZSBEbGwqIGZ1bmN0aW9ucyBpcyB1c2luZyBhIGRpZmZlcmVudAoJaW50ZXJuYWwgbmFtZS4KCgkqIGRsbHMvdXNlci9tZW51LmMsIGRsbHMvdXNlci90ZXN0cy93aW4uYywgZGxscy91c2VyL3dpbi5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2UgQ3JlYXRlV2luZG93IHdpdGggaW52YWxpZCBtZW51IGhhbmRsZSB0ZXN0IHBhc3Mgb24gV2luZS4KCgkqIGRsbHMvZDNkOC9kaXJlY3R4LmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBnY2MgNC4wIHdhcm5pbmdzLgoKCSogaW5jbHVkZS93aW5iYXNlLmg6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUNvcnJlY3QgT0ZTVFJVQ1QgZGVjbGFyYXRpb24uCgoJKiBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLCBkbGxzL3NobHdhcGkvdGVzdHMvb3JkaW5hbC5jOgoJSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCBhbmQgYWRkIHRlc3RzIGZvciB0aGUgRkRTQSBmdW5jdGlvbnMuCgoyMDA1LTA4LTA4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9nZGkvZGliLmMsIGRsbHMveDExZHJ2L2RpYi5jOgoJTWljaGFlbCBLYXVmbWFubiA8aGFsbG9AbWljaGFlbC1rYXVmbWFubi5jaD4KCUZpeCBmb3IgQklfQklURklFTERTOiBUaGUgY29sb3IgbWFza3MgYXJlIGF0IHRoZSBzYW1lIHBvc2l0aW9uIGluIGFsbAoJdGhlIGJpdG1hcCBoZWFkZXJzIHRoYXQgc3VwcG9ydCB0aGlzIGZsYWcgKEJJVE1BUElORk86IFRoZSBmaXJzdCBjb2xvcgoJbWFzayBpcyBpbiBibWlDb2xvcnNbMF0sIHRoYXQncyB0aGUgc2FtZSBwb3NpdGlvbiBhcyBiVjRSZWRNYXNrIGluCglCSVRNQVBWNEhFQURFUikuCgoJKiBkbGxzL29sZWF1dDMyL3NhZmVhcnJheS5jLCBkbGxzL29sZWF1dDMyL3RtYXJzaGFsLmMsCgkgIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jLCBkbGxzL29sZWF1dDMyL3R5cGVsaWIyLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglnY2MgNC4wIHdhcm5pbmcgZml4ZXMuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJVXNlIHBrZy1jb25maWcgaW4gdGhlIGxpYnhtbCBjb25maWd1cmUgY2hlY2suCgoJKiBkbGxzL21zeG1sMy9kb21kb2MuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJVXNlIHhtbFBhcnNlTWVtb3J5IGluc3RlYWQgb2YgeG1sUmVhZElPLgoKCSogZGxscy9NYWtlZmlsZS5pbiwgZGxscy9yaWNoZWRpdC8uY3ZzaWdub3JlLAoJICBkbGxzL3JpY2hlZGl0L01ha2VmaWxlLmluOgoJcmljaGVkMzIgZG9lc24ndCBuZWVkIGFuIGltcG9ydCBsaWJyYXJ5LgoKCSogZGxscy9kbWNvbXBvcy9kbWNvbXBvcy5zcGVjLCBkbGxzL2RtaW1lL2RtaW1lLnNwZWMsCgkgIGRsbHMvZG1zdHlsZS9kbXN0eWxlLnNwZWMsIGRsbHMvc2hkb2N2dy9zaGRvY3Z3LnNwZWM6CglGaXhlZCBEbGxHZXRDbGFzc09iamVjdCBzcGVjIGVudHJpZXMuCgoJKiBkbGxzL3NoZWxsMzIvdGVzdHMvc2hsZmlsZW9wLmMsIGRsbHMvc2hlbGwzMi90ZXN0cy9zaGxmb2xkZXIuYzoKCVNhdWxpdXMgS3Jhc3Vja2FzIDxzYXVsaXVzLmtyYXN1Y2thc0BpZWVlLm9yZz4KCVJlbW92ZSB0cmFpbGluZyBiYWNrc2xhc2guCgoJKiBkbGxzL21zeG1sMy9ub2RlbWFwLmM6IEphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglGaXhlZCBtc3htbCBjb21waWxhdGlvbiB3aGVuIGxpYnhtbDIgaXMgbm90IGF2YWlsYWJsZS4KCgkqIGRsbHMva2VybmVsL2NvbW0uYzogR2VyYWxkIFBmZWlmZXIgPGdlcmFsZEBwZmVpZmVyLmNvbT4KCUZpeCBhdXRvY29uZi1yZWxhdGVkICNpZmRlZnMgaW4gQ29tbV9DaGVja0V2ZW50cygpLgoKCSogZGxscy93aW5lZDNkL3N0YXRlYmxvY2suYzoKCU9saXZlciBTdGllYmVyIDxvbGl2ZXJfc3RpZWJlckB5YWhvby5jby51az4KCUZpeCBzdGF0ZWJsb2NrIGxvb3AgZXJyb3JzLgoKCSogdG9vbHMvd2luZWR1bXAvcGUuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJZ2NjIDQuMCB3YXJuaW5nIGZpeC4KCgkqIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglJVW5rbm93bl9TZXRTaXRlIGNhbGxzIElPYmplY3RXaXRoU2l0ZV9TZXRTaXRlIG9yCglJSW50ZXJuZXRTZWN1cml0eU1hbmFnZXJfU2V0U2VjdXJpdHlTaXRlLgoKCSogZGxscy9vbGVhdXQzMi90ZXN0cy92YXJ0eXBlLmM6IFNhdWxpdXMgS3Jhc3Vja2FzIDxzYXVsaXVzMkBhci5maS5sdD4KCUNvbW1lbnQgb3V0IFZhckRhdGVGcm9tU3RyKCkgY2FsbHMgdGhhdCBnZW5lcmF0ZSBleGNlcHRpb25zIG9uIFdpbk1FLgoKCSogZGxscy9yaWNoZWRpdC9yaWNoZWQzMi5zcGVjLCBkbGxzL3JpY2hlZGl0L3JpY2hlZGl0LmMsCgkgIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWMsIGRsbHMvc2hsd2FwaS9zaGx3YXBpX21haW4uYywKCSAgZGxscy93aW5pbmV0L3dpbmluZXQuc3BlYywgZGxscy93aW5pbmV0L3dpbmluZXRfbWFpbi5jOgoJRG9uJ3QgcHJlZml4IHRoZSBmdW5jdGlvbnMgRGxsSW5zdGFsbCBhbmQgRGxsR2V0VmVyc2lvbiB3aXRoIHRoZSBkbGwKCW5hbWUgc28gdGhhdCB0aGUgY29tcGlsZXIgY2FuIGNoZWNrIHRoZSBwcm90b3R5cGVzLgoKCSogaW5jbHVkZS9zaGx3YXBpLmg6CglBZGRlZCBhIHByb3RvdHlwZSBmb3IgRGxsR2V0VmVyc2lvbiB0byBlbmFibGUgdHlwZSBjaGVja2luZyBpbiB0aGUKCVdpbmUgc291cmNlLgoKCSogZGxscy9tYXBpMzIvbWFwaTMyLnNwZWMsIGRsbHMvbWFwaTMyL21hcGkzMl9tYWluLmMsCgkgIGRsbHMvbWxhbmcvbWxhbmcuYywgZGxscy9tbGFuZy9tbGFuZy5zcGVjLCBkbGxzL21sYW5nL3JlZ3N2ci5jLAoJICBkbGxzL21wci9tcHIuc3BlYywgZGxscy9tcHIvbXByX21haW4uYywgZGxscy9tc2h0bWwvbWFpbi5jLAoJICBkbGxzL21zaHRtbC9tc2h0bWwuc3BlYywgZGxscy9tc2kvbXNpLmMsIGRsbHMvbXNpL21zaS5zcGVjLAoJICBkbGxzL21zaS9tc2lwcml2LmgsIGRsbHMvbXNpL3JlZ3N2ci5jLCBkbGxzL21zaXN5cy9tc2lzeXMuYywKCSAgZGxscy9tc2lzeXMvbXNpc3lzLm9jeC5zcGVjLCBkbGxzL21zeG1sMy9mYWN0b3J5LmMsCgkgIGRsbHMvbXN4bWwzL21haW4uYywgZGxscy9tc3htbDMvbXN4bWwzLnNwZWMsIGRsbHMvb2xlMzIvb2xlMzIuc3BlYywKCSAgZGxscy9vbGUzMi9vbGVwcm94eS5jLCBkbGxzL29sZWFjYy9tYWluLmMsIGRsbHMvb2xlYWNjL29sZWFjYy5zcGVjLAoJICBkbGxzL3FjYXAvcWNhcC5zcGVjLCBkbGxzL3FjYXAvcWNhcF9tYWluLmMsIGRsbHMvcnBjcnQ0L3JwY3J0NC5zcGVjLAoJICBkbGxzL3JwY3J0NC9ycGNydDRfbWFpbi5jLCBkbGxzL3NoZWxsMzIvcmVnc3ZyLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLCBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYywKCSAgZGxscy91cmxtb24vcmVnc3ZyLmMsIGRsbHMvdXJsbW9uL3VybG1vbi5zcGVjLAoJICBkbGxzL3VybG1vbi91cmxtb25fbWFpbi5jLCBkbGxzL2Ftc3RyZWFtL2Ftc3RyZWFtLnNwZWMsCgkgIGRsbHMvYW1zdHJlYW0vbWFpbi5jLCBkbGxzL2Ftc3RyZWFtL3JlZ3N2ci5jLCBkbGxzL2F0bC9hdGwuc3BlYywKCSAgZGxscy9hdGwvcmVnaXN0cmFyLmMsIGRsbHMvYXZpZmlsMzIvYXZpZmlsMzIuc3BlYywKCSAgZGxscy9hdmlmaWwzMi9mYWN0b3J5LmMsIGRsbHMvYXZpZmlsMzIvcmVnc3ZyLmMsCgkgIGRsbHMvY2FiaW5ldC9jYWJpbmV0LnNwZWMsIGRsbHMvY2FiaW5ldC9jYWJpbmV0X21haW4uYywKCSAgZGxscy9jb21jYXQvY29tY2F0LnNwZWMsIGRsbHMvY29tY2F0L2NvbWNhdF9tYWluLmMsCgkgIGRsbHMvY29tY2F0L3JlZ3N2ci5jLCBkbGxzL2NvbWN0bDMyL2NvbWN0bDMyLnNwZWMsCgkgIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYywgZGxscy9kM2R4b2YvZDNkeG9mLnNwZWMsCgkgIGRsbHMvZDNkeG9mL21haW4uYywgZGxscy9kM2R4b2YvcmVnc3ZyLmMsIGRsbHMvZGRyYXcvZGRyYXcuc3BlYywKCSAgZGxscy9kZHJhdy9tYWluLmMsIGRsbHMvZGRyYXcvcmVnc3ZyLmMsIGRsbHMvZGlucHV0L2RpbnB1dC5zcGVjLAoJICBkbGxzL2RpbnB1dC9kaW5wdXRfbWFpbi5jLCBkbGxzL2RpbnB1dC9yZWdzdnIuYywKCSAgZGxscy9kaW5wdXQ4L2RpbnB1dDguc3BlYywgZGxscy9kaW5wdXQ4L2RpbnB1dDhfbWFpbi5jLAoJICBkbGxzL2RtYmFuZC9kbWJhbmQuc3BlYywgZGxscy9kbWJhbmQvZG1iYW5kX21haW4uYywKCSAgZGxscy9kbWJhbmQvcmVnc3ZyLmMsIGRsbHMvZG1sb2FkZXIvZG1sb2FkZXIuc3BlYywKCSAgZGxscy9kbWxvYWRlci9kbWxvYWRlcl9tYWluLmMsIGRsbHMvZG1sb2FkZXIvcmVnc3ZyLmMsCgkgIGRsbHMvZG1zY3JpcHQvZG1zY3JpcHQuc3BlYywgZGxscy9kbXNjcmlwdC9kbXNjcmlwdF9tYWluLmMsCgkgIGRsbHMvZG1zY3JpcHQvcmVnc3ZyLmMsIGRsbHMvZG1zeW50aC9kbXN5bnRoLnNwZWMsCgkgIGRsbHMvZG1zeW50aC9kbXN5bnRoX21haW4uYywgZGxscy9kbXN5bnRoL3JlZ3N2ci5jLAoJICBkbGxzL2RtdXNpYy9kbXVzaWMuc3BlYywgZGxscy9kbXVzaWMvZG11c2ljX21haW4uYywKCSAgZGxscy9kbXVzaWMvcmVnc3ZyLmMsIGRsbHMvZHBsYXl4L2RwY2xhc3NmYWN0b3J5LmMsCgkgIGRsbHMvZHBsYXl4L2RwbGF5eC5zcGVjLCBkbGxzL2RwbGF5eC9kcGxheXhfbWFpbi5jLAoJICBkbGxzL2RwbGF5eC9yZWdzdnIuYywgZGxscy9kcG5ldC9kcG5ldC5zcGVjLCBkbGxzL2RwbmV0L2RwbmV0X21haW4uYywKCSAgZGxscy9kcG5ldC9yZWdzdnIuYywgZGxscy9kcG5ocGFzdC9kcG5ocGFzdC5zcGVjLAoJICBkbGxzL2RwbmhwYXN0L21haW4uYywgZGxscy9kc3dhdmUvZHN3YXZlLnNwZWMsCgkgIGRsbHMvZHN3YXZlL2Rzd2F2ZV9tYWluLmMsIGRsbHMvZHN3YXZlL3JlZ3N2ci5jLAoJICBkbGxzL2R4ZGlhZ24vZHhkaWFnbi5zcGVjOgoJRG9uJ3QgcHJlZml4IHRoZSBmdW5jdGlvbnMgRGxsQ2FuVW5sb2FkTm93LCBEbGxHZXRDbGFzc09iamVjdCBhbmQKCURsbChVbilSZWdpc3RlclNlcnZlciB3aXRoIHRoZSBkbGwgbmFtZSBzbyB0aGF0IHRoZSBjb21waWxlciBjYW4gY2hlY2sKCXRoZSBwcm90b3R5cGVzLgoKCSogaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLCBzZXJ2ZXIvY2hhbmdlLmMsIHNlcnZlci9mZC5jLAoJICBzZXJ2ZXIvZmlsZS5jLCBzZXJ2ZXIvbWFwcGluZy5jLCBzZXJ2ZXIvcHJvdG9jb2wuZGVmLAoJICBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvdHJhY2UuYzoKCUFkZGVkIGFuIHVubW91bnRfZGV2aWNlIHJlcXVlc3QgdGhhdCBpbnZhbGlkYXRlcyBhbGwgZmlsZSBkZXNjcmlwdG9ycwoJb3BlbiBvbiBhIGdpdmVuIFVuaXggZGV2aWNlLgoKCSogZGxscy9vbGVhdXQzMi92YXJpYW50LmgsIGRsbHMvb2xlYXV0MzIvdmFydHlwZS5jOgoJUmVtb3ZlZCBzb21lIHVubmVjZXNzYXJ5IG1hY3JvcywgYW5kIG1ha2Ugc29tZSBmdW5jdGlvbnMgc3RhdGljLgoKCSogZGxscy9hbXN0cmVhbS9tYWluLmMsIGRsbHMvYXZpZmlsMzIvZmFjdG9yeS5jLCBkbGxzL2QzZHhvZi9tYWluLmMsCgkgIGRsbHMvZGRyYXcvbWFpbi5jLCBkbGxzL2RwbGF5eC9kcGNsYXNzZmFjdG9yeS5jLAoJICBkbGxzL21zaXN5cy9tc2lzeXMuYywgZGxscy9tc3htbDMvZmFjdG9yeS5jLAoJICBkbGxzL3VybG1vbi91cmxtb25fbWFpbi5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBZGQgbWlzc2luZyBXSU5BUEkgdG8gTVNYTUxfRGxsR2V0Q2xhc3NPYmplY3QoKS4KCVN0YW5kYXJkaXplIHRoZSBEbGxHZXRDbGFzc09iamVjdCgpIHByb3RvdHlwZXMgc28gdGhleSBtYXRjaCB0aGUgTVNETgoJZGVmaW5pdGlvbi4KCgkqIGRsbHMvbXN4bWwzL01ha2VmaWxlLmluLCBkbGxzL21zeG1sMy9lbGVtZW50LmMsCgkgIGRsbHMvbXN4bWwzL21zeG1sX3ByaXZhdGUuaCwgZGxscy9tc3htbDMvbm9kZW1hcC5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IHRoZSBJWE1MRE9NTmFtZWROb2RlTWFwIGludGVyZmFjZS4KCgkqIGRsbHMvZ2RpL2RyaXZlci5jLCBkbGxzL2dkaS9mb250LmMsIGRsbHMvZ2RpL2ZyZWV0eXBlLmMsCgkgIGRsbHMvZ2RpL3Rlc3RzL21ldGFmaWxlLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglXYXJuaW5nIGZpeGVzIGZvciBnY2MgNC4wLgoKCSogdG9vbHMvTWFrZWZpbGUuaW46IERldGxlZiBSaWVrZW5iZXJnIDx3aW5lLmRldkB3ZWIuZGU+CglBZGRlZCBleGUgZXh0ZW5zaW9ucyBmb3IgbWluZ3czMi4KCgkqIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglGb3J3YXJkIG9yZGluYWxzIDQ1Nyw0NTggdG8gR2V0TG9uZ1BhdGhOYW1lVyxBLgoKCSogaW5jbHVkZS93aW5zcG9vbC5oOiBEZXRsZWYgUmlla2VuYmVyZyA8d2luZS5kZXZAd2ViLmRlPgoJLSBBY2Nlc3MgcmlnaHRzIGZvciBQcmludHNlcnZlciwgUHJpbnRlcnMgYW5kIFByaW50am9icyBhZGRlZC4KCS0gRGVmaW5lcyBmb3IgYmlkaXJlY3Rpb25hbCBjb21tdW5pY2F0aW9uIGFkZGVkLgoKCSogZGxscy9tc3htbDMvZWxlbWVudC5jLCBkbGxzL21zeG1sMy9tc3htbF9wcml2YXRlLmg6CglKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJRml4ZWQgbXN4bWwgY29tcGlsYXRpb24gd2hlbiBsaWJ4bWwgaXMgbm90IGF2YWlsYWJsZS4KCgkqIGRsbHMvd2xkYXAzMi93bGRhcDMyLnJjLCBkbGxzL3dsZGFwMzIvd2xkYXAzMl9SdS5yYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBSdXNzaWFuIHJlc291cmNlcyB0byB3bGRhcDMyLgoKCSogZGxscy91c2VyL3Rlc3RzL3dpbi5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQ3JlYXRlV2luZG93KHBhcmVudD1OVUxMLCBjdGxpZCE9MCkgc2hvdWxkIGZhaWwuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9kaW5wdXQvam95c3RpY2tfbGludXhpbnB1dC5jLAoJICBkbGxzL3dpbm1tL3dpbmVvc3MvbWlkaS5jLCBkbGxzL3dpbm1tL3dpbmVvc3Mvb3NzLmMsCgkgIGRsbHMvd2lubW0vd2luZW9zcy9vc3MuaCwgaW5jbHVkZS9jb25maWcuaC5pbjoKCVJlbW92ZWQgc29tZSB1bnVzZWQgb3IgcmVkdW5kYW50IGNvbmZpZ3VyZSBjaGVja3MuCglBIGZldyBjbGVhbnVwcyBpbiBjb25maWd1cmUuYWMuCgoJKiBkbGxzL3V1aWQvdXVpZC5jLCBpbmNsdWRlLy5jdnNpZ25vcmUsIGluY2x1ZGUvTWFrZWZpbGUuaW4sCgkgIGluY2x1ZGUvaGxpbmsuaWRsOgoJSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCUFkZGVkIGhsaW5rLmlkbC4KCgkqIGRsbHMvbXNodG1sL2h0bWxkb2MuYywgZGxscy9tc2h0bWwvbXNodG1sX3ByaXZhdGUuaCwKCSAgZGxscy9tc2h0bWwvb2xlb2JqLmM6CglKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJQWRkZWQgc3R1YiBpbXBsZW1lbnRhdGlvbiBvZiBJT2xlQ29udHJvbC4KCgkqIGRsbHMvZ2RpL3Rlc3RzL2dkaW9iai5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkIGEgdGVzdCBzaG93aW5nIHRoYXQgV2luZG93cyBkb2Vzbid0IHRpZSBHREkgb2JqZWN0cyB0byBhCglwYXJ0aWN1bGFyIHRocmVhZC4KCgkqIGRsbHMvbXNpL21zaXByaXYuaDogWXVyaSBLb3psb3YgPGtvemxvdi55QGdtYWlsLmNvbT4KCVJlbW92ZSBkdXBsaWNhdGUgZGVjbGFyYXRpb24gb2YgTVNJX1NldFByb3BlcnR5Vy4KCgkqIHByb2dyYW1zL3dpbmV0ZXN0L01ha2VmaWxlLmluOiBLYWkgQmxpbiA8YmxpbkBnbXgubmV0PgoJQWRkIHNlY3VyMzIuZGxsIHRlc3RzIHRvIHdpbmV0ZXN0LgoKCSogZGxscy9hdGwvYXRsX21haW4uYywgZGxscy9hdGwvcmVnaXN0cmFyLmM6CglTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCUJhc2ljIGltcGxlbWVudGF0aW9uIG9mIEF0bE1vZHVsZVVwZGF0ZVJlZ2lzdHJ5RnJvbVJlc291cmNlRC4KCgkqIHRvb2xzL3dpbmFwaS93aW5hcGlfcGFyc2VyLnBtOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJUmVtb3ZlIFdJTkVfUEFDS0VEIHJlY29nbml0aW9uLgoJVXBkYXRlIHZhcmlvdXMgd2luYXBpIHBhcnNlciByZWd1bGFyIGV4cHJlc3Npb25zIHRvIGxldCBpdCB1bmRlcnN0YW5kCglzb21lIFdpbmUgY29uc3RydWN0cy4KCgkqIHRvb2xzL3dpbmFwaS93aW4xNi5hcGksIHRvb2xzL3dpbmFwaS93aW4zMi5hcGk6CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglVcGRhdGUgd2luMTYuYXBpL3dpbjMyLmFwaSB0byBjdXJyZW50IENWUy4KCgkqIHRvb2xzL3dpbmFwaS9jX3BhcnNlci5wbTogVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJUmVtb3ZlIFdJTkVfVU5VU0VEIGNoZWNrcy4KCgkqIGRsbHMvcmljaGVkMjAvcmVhZGVyLmM6IFBoaWwgS3J5bG92IDxwaGlsQG5ld3N0YXIucmluZXQucnU+CglGaXhlZCBVVEYtOCBSVEYgcGFyc2luZy4KCgkqIGluY2x1ZGUvZGlucHV0Lmg6IERhbmllbCBSZW1lbmFrIDxkdHJlbWVuYWtAZ21haWwuY29tPgoJQWRkIHNvbWUgZGVmaW5pdGlvbnMgbmVjZXNzYXJ5IGZvciBmb3JjZSBmZWVkYmFjay4KCgkqIGRsbHMvb2xlMzIvb2xlMi5jLCBkbGxzL29sZTMyL29sZTIuc3BlYywgZGxscy9vbGUzMi9zdG9yYWdlLmMsCgkgIGRsbHMvb2xlMzIvc3RvcmFnZS5zcGVjOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglJbXBsZW1lbnRlZCBJTG9ja0J5dGVzMTYgKG1lbW9yeXN0cmVhbSkgc3VwcG9ydCBmb3IgdGhlIDE2Yml0IGNvbXBvdW5kCglzdG9yYWdlIGltcGxlbWVudGF0aW9uLgoJQWRkZWQgUmVhZENsYXNzU3RnLCBPbGVEb0F1dG9Db252ZXJ0LCBHZXRDb252ZXJ0U3RnCglpbXBsZW1lbnRhdGlvbnMvc3R1YnMuCgoJKiBkbGxzL3NoZWxsMzIvdGVzdHMvc2hsZm9sZGVyLmM6IFNhdWxpdXMgS3Jhc3Vja2FzIDxzYXVsaXVzMkBhci5maS5sdD4KCVdpbmUgYW5kIE5UNCByZXR1cm5zIEVfRkFJTCBvbiBmYWlsdXJlLgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCVJldmVydCB0byBwcmV2aW91cyBiZWhhdmlvdXIgb2YgZGV0ZWN0aW5nIG5hbWVzIHdpdGggbm9uLWFscGhhbnVtZXJpYwoJY2hhcmFjdGVycyBhcyBvbmVzIHdpdGggb2Zmc2V0cywgYnV0IGFkZCBpbiBhIHNwZWNpYWwgY2FzZSBmb3IgYW4KCWVtcHR5IG5hbWUuCgoJKiBkbGxzL3dsZGFwMzIvd2xkYXAzMi5yYywgZGxscy93bGRhcDMyL3dsZGFwMzJfRGUucmMsCgkgIGRsbHMvd2xkYXAzMi93bGRhcDMyX05sLnJjOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglBZGQgRHV0Y2ggcmVzb3VyY2UgdHJhbnNsYXRpb24uCglTbWFsbCBmaXggZm9yIHRoZSBHZXJtYW4gdHJhbnNsYXRpb24uCgoJKiBkbGxzL3dsZGFwMzIvd2lubGRhcF9wcml2YXRlLmgsIGRsbHMvd2xkYXAzMi93bGRhcDMyLmg6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCUFkZCBoZWxwZXJzIGZvciBjb252ZXJ0aW5nIChhcnJheXMgb2YpIExEQVBTb3J0S2V5LCBMREFQQVBJSW5mbywgYW5kCglMREFQQVBJRmVhdHVyZUluZm8gc3RydWN0dXJlcyBpbnRvIGRpZmZlcmVudCBlbmNvZGluZ3MuCgoJKiBkbGxzL3VzZXIvbGlzdGJveC5jLCBkbGxzL3VzZXIvdGVzdHMvbGlzdGJveC5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVRoZSBsaXN0Ym94IHRlc3Qgc2hvd3MgdGhhdCB0aGUgY29udHJvbCBpZCBtdXN0IGJlIHN0b3JlZCBpbiBXUEFSQU0KCWZvciB0aGUgV01fRFJBV0lURU0gbWVzc2FnZS4KCUZpeCB0aGUgbGlzdGJveCB0ZXN0IHNvIENyZWF0ZVdpbmRvdygpIGRvZXMgbm90IGZhaWwgb24gV2luZG93cy4KCgkqIGRsbHMvbnRkbGwvY2Ryb20uYzogVG9iaWFzIEdydWV0em1hY2hlciA8dG9iaWFzQHBvcnRmb2xpbzE2LmRlPgoJUmV2ZXJzZSB0aGUgZGlyZWN0aW9uIG9mIHJhdyBTQ1NJIGNvbW1hbmRzLgoKCSogZGxscy9zaGx3YXBpL29yZGluYWwuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBjYWxsIHRvIEdldE1lbnVJdGVtSW5mbyBhbmQgdW5pY29kaWZ5IHdoaWxlIHdlJ3JlIGF0IGl0LgoKCSogZGxscy9tc2kvdGFibGUuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJSGFuZGxlIGxvYWRpbmcgc3RyaW5ncyBvdmVyIDY0ayBmcm9tIHRoZSBzdHJpbmcgdGFibGUuCgoJKiBkbGxzL2hoY3RybC5vY3gvRGUucmM6IEhlbm5pbmcgR2VyaGFyZHQgPGhlbm5pbmcuZ2VyaGFyZHRAd2ViLmRlPgoJVXBkYXRlIEdlcm1hbiByZXNvdXJjZSBmaWxlLgoKCSogZGxscy9oaGN0cmwub2N4L2hlbHAuYzogSmFtZXMgSGF3a2lucyA8dHJ1aWtlbkBnbWFpbC5jb20+CgktIERvbid0IGtlZXAgdHJhY2sgb2YgdGhlIG51bWJlciBvZiBUQiBidXR0b25zLgoJLSBDYWxsIHRoZSBXIHZlcnNpb24gb2YgU2V0V2luZG93TG9uZ1B0ci4KCgkqIGRsbHMvd2luZWQzZC9zdGF0ZWJsb2NrLmM6CglPbGl2ZXIgU3RpZWJlciA8b2xpdmVyX3N0aWViZXJAeWFob28uY28udWs+CglBbGxvdyB0aGUgV0lORUQzRFNCVF9JTVBMIHRvIGJlIGFwcGxpZWQgc28gdGhhdCBzdGF0ZXMgY2FuIGJlIHN5bmNlZAoJYmV0d2VlbiByZW5kZXIgdGFyZ2V0IGNvbnRleHRzLgoKCSogZGxscy93aW5lZDNkL01ha2VmaWxlLmluOiBPbGl2ZXIgU3RpZWJlciA8b2xpdmVyX3N0aWViZXJAeWFob28uY28udWs+CglSZW1vdmUgZHhndWlkIGRlcGVuZGVuY3kuCgoyMDA1LTA4LTAzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9tc2h0bWwvbnNlbWJlZC5jOiBKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJRml4IGNvbW1lbnQgYWJvdXQgaGFjay4KCgkqIGRsbHMvbXNodG1sL29sZW9iai5jLCBkbGxzL21zaHRtbC90ZXN0cy9odG1sZG9jLmM6CglKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJQWRkZWQgSU9sZUNvbW1hbmRUYXJnZXQ6OkV4ZWMgaW1wbGVtZW50YXRpb24uCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9hZHZhcGkzMi9jcnlwdC5jLAoJICBkbGxzL2F2aWNhcDMyL2F2aWNhcDMyX21haW4uYywgZGxscy9kM2Q4L3N1cmZhY2UuYywKCSAgZGxscy9kYmdoZWxwL2VsZl9tb2R1bGUuYywgZGxscy9kZHJhdy9zdXJmYWNlX2RpYi5jLAoJICBkbGxzL2RkcmF3L3N1cmZhY2VfbWFpbi5jLCBkbGxzL2RkcmF3L3RleHR1cmUuYywKCSAgZGxscy9pcGhscGFwaS9pcHN0YXRzLmMsIGRsbHMvbnRkbGwvcGF0aC5jLCBkbGxzL3FjYXAvdjRsLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGZsZHJfdW5peGZzLmMsIGRsbHMvd2luYXNwaS9hc3BpLmMsCgkgIGRsbHMvd2luYXNwaS93aW5hc3BpMTYuYywgZGxscy93aW5lZG9zL3BwZGV2LmMsIGRsbHMvd2luZXBzL3BwZC5jLAoJICBkbGxzL3dpbmVwcy90eXBlMWFmbS5jLCBkbGxzL3dpbm1tL2pveXN0aWNrL2pveXN0aWNrLmMsCgkgIGRsbHMvd2lubW0vd2luZW9zcy9taWRpLmMsIGRsbHMvd2lubW0vd2luZW9zcy9taXhlci5jLAoJICBkbGxzL3dpbm1tL3dpbmVvc3MvbW1hdXguYywgaW5jbHVkZS9jb25maWcuaC5pbiwgaW5jbHVkZS93aW5lL3BvcnQuaCwKCSAgcHJvZ3JhbXMvd2luZWNmZy9kcml2ZWRldGVjdC5jLCBzZXJ2ZXIvZmQuYywgdG9vbHMvZm50MmJkZi5jLAoJICB0b29scy9mbnQyZm9uLmMsIHRvb2xzL3NmbnQyZm50LmMsIHRvb2xzL3dpZGwvcHJveHkuYywKCSAgdG9vbHMvd2lkbC93aWRsLmMsIHRvb2xzL3dpbmVkdW1wL2R1bXAuYywgdG9vbHMvd2luZWR1bXAvbWFpbi5jLAoJICB0b29scy93bWMvd21jLmMsIHRvb2xzL3dtYy93cml0ZS5jLCB0b29scy93cmMvcGFyc2VyLnk6CglSZW1vdmVkIHRoZSBicm9rZW4gbW1hcDY0IGNvbmZpZ3VyZSBjaGVjaywgYW5kIG1vdmVkIHRoZQoJX0ZJTEVfT0ZGU0VUX0JJVFMgZGVmaW5lIHRvIHdpbmUvcG9ydC5oLiBNYWRlIHN1cmUgdGhhdCBhbGwgZmlsZXMgdGhhdAoJbmVlZCB0aGUgZGVmaW5lIGluY2x1ZGUgaXQuCgoJKiBkbGxzL3dpbmVkM2Qvc3VyZmFjZS5jOiBPbGl2ZXIgU3RpZWJlciA8b2xpdmVyX3N0aWViZXJAeWFob28uY28udWs+CglTZXQgdGhlIGFwaGEgY2hhbm5lbCB0byBvcGFxdWUgd2hlbiBsb2NraW5nIFg4UjhHOEI4IGJhY2tidWZmZXJzLgoKCSogZGxscy91eHRoZW1lL2RyYXcuYzogRnJhbmsgUmljaHRlciA8ZnJhbmsucmljaHRlckBnbWFpbC5jb20+CglJbXBsZW1lbnQgRHJhd1RoZW1lRWRnZSgpLgoKCSogZGxscy93aW5lZDNkL2Jhc2V0ZXh0dXJlLmMsIGRsbHMvd2luZWQzZC9jdWJldGV4dHVyZS5jLAoJICBkbGxzL3dpbmVkM2QvZGV2aWNlLmMsIGRsbHMvd2luZWQzZC9kcmF3cHJpbS5jLAoJICBkbGxzL3dpbmVkM2QvdGV4dHVyZS5jLCBkbGxzL3dpbmVkM2QvdXRpbHMuYywKCSAgZGxscy93aW5lZDNkL3dpbmVkM2RfcHJpdmF0ZS5oOgoJT2xpdmVyIFN0aWViZXIgPG9saXZlcl9zdGllYmVyQHlhaG9vLmNvLnVrPgoJTW92ZWQgc3VwcG9ydCBmb3Igbm9uIHBvd2VyIDIgdGV4dHVyZSB0byBoYXJkd2FyZS4KCUZpeCBmb3IgdGhlIHRleHR1cmUgc3RhdGUgc2VwYXJhdGlvbiBwYXRjaGVzLCBBcHBseVRleHR1cmVTdGF0ZXMgaXMKCW5vdyBjYWxsZWQgaW5zdGVhZCBvZiBiZWluZyBjb21tZW50ZWQgb3V0LgoKCSogZGxscy91eHRoZW1lL2RyYXcuYzogRnJhbmsgUmljaHRlciA8ZnJhbmsucmljaHRlckBnbWFpbC5jb20+CglTZXQgc29tZSBkZWZhdWx0IHZhbHVlcyBmb3IgdHJ1ZXNpemUgc2l6aW5nIHRoYXQgc2VlbSBjbG9zZXIgdG8KCVdpbmRvd3MuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgcHJvZ3JhbXMvcmVnZWRpdC9NYWtlZmlsZS5pbjoKCUdldCByaWQgb2YgdGhlIG5vIGxvbmdlciB1c2VkIHJlZ2VkaXQgdGVzdC4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL3dpbmVwcy9wcGQuYywgZGxscy93aW5zb2NrL3NvY2tldC5jLAoJICBpbmNsdWRlL2NvbmZpZy5oLmluLCBwcm9ncmFtcy93aW5lY29uc29sZS9jdXJzZXMuYzoKCU1lcmdlZCBzb21lIG9mIHRoZSBoZWFkZXIgY2hlY2tzIHRvIHJlZHVjZSB0aGUgc2l6ZSBvZiB0aGUgZ2VuZXJhdGVkCgljb25maWd1cmUgc2NyaXB0IGEgYml0LgoKCSogZGxscy91c2VyL3BhaW50aW5nLmM6CglDYWxsIHRoZSBVU0VSIGRyaXZlciBkaXJlY3RseSB0byBjaGVjayBmb3IgWCBldmVudHMgb24gUkRXX1VQREFURU5PVwoJaW5zdGVhZCBvZiBjYWxsaW5nIE1zZ1dhaXRGb3JNdWx0aXBsZU9iamVjdHMuCgoJKiBNYWtlZmlsZS5pbjogRGV0bGVmIFJpZWtlbmJlcmcgPHdpbmUuZGV2QHdlYi5kZT4KCUFkZGVkIGRlc2NyaXB0aW9uIGZvciBjcm9zc3Rlc3QuCgoJKiBkbGxzL3dpbmVkM2QvZHJhd3ByaW0uYzogT2xpdmVyIFN0aWViZXIgPG9saXZlcl9zdGllYmVyQHlhaG9vLmNvLnVrPgoJSW1wcm92ZSBvbiBhIGZpeHVwIGZvciB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIG9wZW5nbCBhbmQgZGlyZWN0eCBwaXhlbAoJY2VudGVyaW5nIG9mIHZlcnRleGVzLgoKCSogZGxscy9kc291bmQvbWl4ZXIuYzogQWxleCBWaWxsYWPtcyBMYXNzbyA8YV92aWxsYWNpc0BwYWxvc2FudG8uY29tPgoJQ29ycmVjdGlvbiB0byBlYXJsaWVyIGFzc2VydGlvbiBwYXRjaCB0byBhbGxvdyBmb3IgYnVmX21peHBvcyA9PQoJYnVmbGVuIGluIG5vbi1sb29waW5nIGNhc2UsIGZpeGVzIGxvb3Bpbmcgb2Ygb25lLW9mZiBtaXhlZCBzYW1wbGVzCglpbnRyb2R1Y2VkIGJ5IHByZXZpb3VzIHBhdGNoLgoKCSogZGxscy93aW5pbmV0L2ludGVybmV0LmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUFzIHBlciBNU0ROLCBJTlRFUk5FVF9PUFRJT05fQ09OTkVDVEVEX1NUQVRFIHNob3VsZCB0YWtlIGEgRFdPUkQKCWluc3RlYWQgb2YgdGhlIElOVEVSTkVUX0NPTk5FQ1RFRF9JTkZPIHN0cnVjdHVyZS4KCgkqIGRsbHMvdXh0aGVtZS9kcmF3LmM6IEZyYW5rIFJpY2h0ZXIgPGZyYW5rLnJpY2h0ZXJAZ21haWwuY29tPgoJVGhlIGRlZmF1bHQgaW1hZ2UgbGF5b3V0IGlzIEhPUklaT05UQUwsIG5vdCBWRVJUSUNBTC4KCgkqIGRsbHMvbnRkbGwvY3JpdHNlY3Rpb24uYywgZGxscy9udGRsbC9oZWFwLmM6CglIYWNrIHRvIG1ha2UgdGhlIG1haW4gaGVhcCBjcml0aWNhbCBzZWN0aW9uIGhhdmUgYSBwcm9wZXIgZGVidWcgaW5mbwoJc3RydWN0dXJlLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvd2lubW0vd2luZWVzZC8uY3ZzaWdub3JlLCBkbGxzL3dpbm1tL3dpbmVlc2QvTWFrZWZpbGUuaW4sCgkgIGRsbHMvd2lubW0vd2luZWVzZC9hdWRpby5jLCBkbGxzL3dpbm1tL3dpbmVlc2QvZXNvdW5kLmMsCgkgIGRsbHMvd2lubW0vd2luZWVzZC9lc291bmQuaCwgZGxscy93aW5tbS93aW5lZXNkL3dpbmVlc2QuZHJ2LnNwZWMsCgkgIGluY2x1ZGUvY29uZmlnLmguaW4sIHByb2dyYW1zL3dpbmVjZmcvYXVkaW8uYywKCSAgcHJvZ3JhbXMvd2luZWNmZy9wcm9wZXJ0aWVzLmM6CglQZXRlciDFc3RyYW5kIDxhc3RyYW5kQGNlbmRpby5zZT4KCUltcGxlbWVudGVkIGFuIEVzb3VuZCBkcml2ZXIuCgoJKiBkbGxzL3gxMWRydi9ldmVudC5jOgoJRG9uJ3QgY2FsbCBXYWl0Rm9yTXVsdGlwbGVPYmplY3RzRXggaWYgd2UgYXJlIGp1c3QgcG9sbGluZyBmb3IgcGVuZGluZwoJWCBldmVudHMuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9jb21tLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglNb3JlIGNvbW0gdGVzdHMuCgoJKiBkbGxzL2tlcm5lbC9jb21tLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglJbXBsZW1lbnQgV2FpdENvbW1FdmVudCBieSBwb2xsaW5nIHRoZSBhcHByb3ByaWF0ZSBkYXRhIHNvdXJjZXMuCgoJKiBkbGxzL3V4dGhlbWUvZHJhdy5jOiBGcmFuayBSaWNodGVyIDxmcmFuay5yaWNodGVyQGdtYWlsLmNvbT4KCUFub3RoZXIgZml4IHRvIHVzZSBtYWdlbnRhIGFzIHRoZSBkZWZhdWx0IHRyYW5zcGFyZW50IGNvbG9yLgoKCSogZGxscy9ycGNydDQvbmRyX21hcnNoYWxsLmMsIGRsbHMvcnBjcnQ0L25kcl9taWRsLmMsCgkgIGRsbHMvcnBjcnQ0L3JwY3J0NC5zcGVjLCBpbmNsdWRlL3JwY25kci5oLCBpbmNsdWRlL3dpbmUvcnBjZmMuaDoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBzdHVicyBmb3IgTmRyTWFwQ29tbUFuZEZhdWx0U3RhdHVzLCBjb25mb3JtYW50IHN0cmluZyBtYXJzaGFsaW5nCglhbmQgY29udGV4dCBoYW5kbGUgZnVuY3Rpb25zLgoKCSogdG9vbHMvd2lkbC9oZWFkZXIuYywgdG9vbHMvd2lkbC9oZWFkZXIuaDoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gVGhlIGhlYWRlciBnbG9iYWwgdmFyaWFibGUgaXMgTlVMTCB3aGVuIG5vdCBnZW5lcmF0aW5nIGEgaGVhZGVyIHNvCgkgIGRvbid0IHRyeSB0byB1c2UgaXQgaW4gZnVuY3Rpb25zIHRoYXQgbWF5IGJlIGNhbGxlZCBieSB0aGUgY2xpZW50CgkgIGNvZGUuCgktIE1ha2UgdGhlIGZ1bmN0aW9ucyB0aGF0IHRha2UgY2hhciAqIHRha2UgY29uc3QgY2hhciAqLgoKCSogZGxscy9ycGNydDQvcnBjX21lc3NhZ2UuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJRG9uJ3QgZnJlZSBwcmV2aW91cyBidWZmZXIgaW4gTmRyR2V0QnVmZmVyLgoKCSogbGlicy91bmljb2RlL3djdG9tYi5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggYSBnY2MgNC4wIC1XcG9pbnRlci1zaWduIHdhcm5pbmcuCgoJKiBkbGxzL3V4dGhlbWUvZHJhdy5jOiBGcmFuayBSaWNodGVyIDxmcmFuay5yaWNodGVyQGdtYWlsLmNvbT4KCUFkZCBzdXBwb3J0IGZvciBob3Jpem9udGFsICYgdmVydGljYWwgYWxpZ25tZW50IHdoZW4gZG9pbmcgdHJ1ZXNpemUKCXNpemluZy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL3NlY3VyMzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvc2VjdXIzMi90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL3NlY3VyMzIvdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvc2VjdXIzMi90ZXN0cy9tYWluLmM6CglLYWkgQmxpbiA8YmxpbkBnbXgubmV0PgoJU2V0IHVwIHRlc3RzIGZvciBzZWN1cjMyLgoKCSogZGxscy9oaGN0cmwub2N4L2hlbHAuYzogSmFtZXMgSGF3a2lucyA8dHJ1aWtlbkBnbWFpbC5jb20+CglGcmVlIHRoZSBhbGxvY2F0ZWQgY29tbWFuZCBsaW5lIHN0cmluZy4KCgkqIGRsbHMvdXh0aGVtZS9kcmF3LmM6IEZyYW5rIFJpY2h0ZXIgPGZyYW5rLnJpY2h0ZXJAZ21haWwuY29tPgoJQWRkIHN1cHBvcnQgZm9yIHRoZSBCVF9OT05FIGJhY2tncm91bmQgdHlwZS4KCgkqIGRsbHMvaGhjdHJsLm9jeC9Fbi5yYywgZGxscy9oaGN0cmwub2N4L2hlbHAuYywKCSAgZGxscy9oaGN0cmwub2N4L2hoY3RybC5yYywgZGxscy9oaGN0cmwub2N4L3Jlc291cmNlLmg6CglKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCUFkZCBhIHRhYiBjb250cm9sIHRvIHRoZSBuYXZpZ2F0aW9uIHBhbmUuCgoJKiBkbGxzL2NvbWN0bDMyL2hlYWRlci5jOiBGcmFuayBSaWNodGVyIDxmcmFuay5yaWNodGVyQGdtYWlsLmNvbT4KCUFkZCBob3R0cmFja2luZyBzdXBwb3J0IGZvciB0aGUgaGVhZGVyIGNvbnRyb2wuCgoJKiBkbGxzL3V4dGhlbWUvZHJhdy5jOiBGcmFuayBSaWNodGVyIDxmcmFuay5yaWNodGVyQGdtYWlsLmNvbT4KCUltcGxlbWVudCBHZXRUaGVtZUJhY2tncm91bmRFeHRlbnQoKS4KCgkqIGRsbHMvdmVyc2lvbi9pbmZvLmM6CglEb24ndCBjb252ZXJ0IHRoZSByZXR1cm4gdmFsdWUgb24gZmFpbHVyZSBpbiBWZXJRdWVyeVZhbHVlQS9XLgoKCSogZGxscy9zaGVsbDMyL3Rlc3RzL3NoZWxscGF0aC5jLCBkbGxzL3dpbnNwb29sL2luZm8uYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCWdjYyA0LjAgUmVnU2V0VmFsdWVFeCB3YXJuaW5nIGZpeGVzLgoKCSogZGxscy9kaW5wdXQvZGlucHV0X21haW4uYywgZGxscy9kaW5wdXQvZGlucHV0X3ByaXZhdGUuaCwKCSAgZGxscy9kaW5wdXQvam95c3RpY2tfbGludXguYywgZGxscy9kaW5wdXQva2V5Ym9hcmQuYywKCSAgZGxscy9kaW5wdXQvbW91c2UuYywgZGxscy9keGRpYWduL2R4ZGlhZ19wcml2YXRlLmgsCgkgIGRsbHMvb2xlYXV0MzIvdGVzdHMvc2FmZWFycmF5LmMsIGRsbHMvb2xlYXV0MzIvdGVzdHMvdmFydHlwZS5jLAoJICBkbGxzL3F1YXJ0ei9lbnVtbW9uaWtlci5jLCBkbGxzL3JpY2hlZDIwL3JpY2hvbGUuYywKCSAgaW5jbHVkZS93aW5lL3dpbmVkM2RfZ2wuaDoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCWdjYyA0LjAgd2FybmluZyBmaXhlcyBmb3IgSW50ZXJsb2NrZWQqIGZ1bmN0aW9ucy4KCgkqIGRsbHMveDExZHJ2L29wZW5nbC5jOiBPbGl2ZXIgU3RpZWJlciA8b2xpdmVyX3N0aWViZXJAeWFob28uY28udWs+CglCYWNrIG91dCB0aGUgcHJldmlvdXMgc3RlbmNpbCBwYXRjaCBhbmQgc2xpZ2h0bHkgaW1wcm92ZSBvbiB0aGUgb2xkCglmdW5jdGlvbmFsaXR5LgoKCSogZGxscy93aW5lZDNkL2Jhc2V0ZXh0dXJlLmMsIGRsbHMvd2luZWQzZC9jdWJldGV4dHVyZS5jLAoJICBkbGxzL3dpbmVkM2QvZGV2aWNlLmMsIGRsbHMvd2luZWQzZC9kaXJlY3R4LmMsCgkgIGRsbHMvd2luZWQzZC90ZXh0dXJlLmMsIGRsbHMvd2luZWQzZC92b2x1bWV0ZXh0dXJlLmMsCgkgIGRsbHMvd2luZWQzZC93aW5lZDNkX3ByaXZhdGUuaCwgaW5jbHVkZS93aW5lL3dpbmVkM2RfaW50ZXJmYWNlLmg6CglPbGl2ZXIgU3RpZWJlciA8b2xpdmVyX3N0aWViZXJAeWFob28uY28udWs+CglNb3ZlIHRoZSBzZXR0aW5nIG9mIHN0YXRlcyBmcm9tIGRldmljZSB0byBiYXNldGV4dHVyZSwgc3RhdGVzIHRoYXQKCXJlbGF0ZSB0byB0aGUgb3BlbmdsIHRleHR1cmUgb2JqZWN0IHdpbGwgb25seSBiZSB1cGRhdGVkIHdoZW4gdGhleSBhcmUKCW91dCBvZiBzeW5jLCB0aGlzIHJlZHVjZXMgdGhlIG51bWJlciBvZiB0ZXh0dXJlIG9iamVjdCBzdGF0ZSBjaGFuZ2VzCglkdXJpbmcgZ2FtZSBwbGF5IGluIEF4aXMgYW5kIGFsbGllcyBmcm9tIHNldmVyYWwgaHVuZHJlZHMgdG8gMCBvciAxLgoKCSogZGxscy9tc3htbDMvTWFrZWZpbGUuaW4sIGRsbHMvbXN4bWwzL2RvbWRvYy5jLCBkbGxzL21zeG1sMy9lbGVtZW50LmMsCgkgIGRsbHMvbXN4bWwzL21zeG1sX3ByaXZhdGUuaDoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudGVkIHRoZSBJWE1MRE9NRWxlbWVudCBpbnRlcmZhY2UuCgoJKiBkbGxzL3dsZGFwMzIvTWFrZWZpbGUuaW4sIGRsbHMvd2xkYXAzMi9kbi5jLCBkbGxzL3dsZGFwMzIvbWlzYy5jLAoJICBkbGxzL3dsZGFwMzIvd2lubGRhcF9wcml2YXRlLmgsIGRsbHMvd2xkYXAzMi93bGRhcDMyLnNwZWM6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCUltcGxlbWVudCBMZGFwVW5pY29kZVRvVVRGOCwgTGRhcFVURjhUb1VuaWNvZGUsCglsZGFwX2RuMnVmbiosIGxkYXBfZXhwbG9kZV9kbiosIGxkYXBfZ2V0X2RuKiwKCWxkYXBfbWVtZnJlZSosIGxkYXBfdWZuMmRuKiBhbmQgbGRhcF92YWx1ZV9mcmVlKi4KCgkqIGRsbHMvaGhjdHJsLm9jeC9EZS5yYywgZGxscy9oaGN0cmwub2N4L2hoY3RybC5yYzoKCUhlbm5pbmcgR2VyaGFyZHQgPGhlbm5pbmcuZ2VyaGFyZHRAd2ViLmRlPgoJQWRkIEdlcm1hbiByZXNvdXJjZWQgZm9yIGhoY3RybC5vY3guCgoJKiBkbGxzL2hoY3RybC5vY3gvaGVscC5jOiBKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCS0gQWRkIHRoZSBISCBDaGlsZCB3aW5kb3cgY2xhc3MuCgktIENyZWF0ZSB0aGUgTmF2aWdhdGlvbiBhbmQgSFRNTCBwYW5lcyBhcyBISCBDaGlsZCB3aW5kb3dzLgoKCSogZGxscy9tc2kvbXNpLmMsIGRsbHMvbXNpL21zaS5zcGVjOgoJU3RldmVuIEVkd2FyZHMgPHN0ZXZlbl9lZDQxNTNAeWFob28uY29tPgoJQWRkIHJlYWwgc3R1YiBmb3IgTXNpQ29uZmlndXJlRmVhdHVyZVcuCgoJKiBkbGxzL21zaHRtbC9wcm90b2NvbC5jLCBkbGxzL21zaHRtbC90ZXN0cy9wcm90b2NvbC5jOgoJSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCUFkZGVkIGFib3V0IHByb3RvY29sIGltcGxlbWVudGF0aW9uLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBGcmFuayBSaWNodGVyIDxmcmFuay5yaWNodGVyQGdtYWlsLmNvbT4KCVJlbW92ZSB1bm5lZWRlZCB0aGVtaW5nIGNoZWNrLgoKCSogZGxscy91eHRoZW1lL2RyYXcuYzogRnJhbmsgUmljaHRlciA8ZnJhbmsucmljaHRlckBnbWFpbC5jb20+CglJbXBsZW1lbnQgc3VwcG9ydCBmb3IgdGhlIFNUX1RJTEUgYmFja2dyb3VuZCBzdHJldGNoaW5nIG1vZGUuCgoJKiBkbGxzL250ZGxsL2Nkcm9tLmM6IFZpdGFsaXkgTWFyZ29sZW4gPHdpbmUtcGF0Y2hAa2lldmluZm8uY29tPgoJSW1wbGVtZW50IElPQ1RMX1NDU0lfR0VUX0lOUVVJUllfREFUQS4KCjIwMDUtMDgtMDIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBkbGxzL2tlcm5lbC9tb2R1bGUuYzoKCUltcGxlbWVudGVkIEdldC9TZXREbGxEaXJlY3RvcnkuCgoJKiBkbGxzL2hoY3RybC5vY3gvLmN2c2lnbm9yZSwgZGxscy9oaGN0cmwub2N4L0VuLnJjLAoJICBkbGxzL2hoY3RybC5vY3gvTWFrZWZpbGUuaW4sIGRsbHMvaGhjdHJsLm9jeC9oZWxwLmMsCgkgIGRsbHMvaGhjdHJsLm9jeC9oaGN0cmwucmM6CglKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCS0gQWRkIHRoZSB0b29sYmFyIHRvIHRoZSB2aWV3ZXIgd2luZG93LgoJLSBMb2FkIHRoZSB0b29sYmFyIGJ1dHRvbiB0ZXh0IGZyb20gdGhlIHJlc291cmNlIGZpbGUuCgoJKiBkbGxzL250ZGxsL3ZlcnNpb24uYzogUmVtb3ZlZCBhIG5vaXN5IHRyYWNlLgoKCSogZGxscy93bGRhcDMyL2JpbmQuYywgZGxscy93bGRhcDMyL2NvbXBhcmUuYywgZGxscy93bGRhcDMyL2luaXQuYywKCSAgZGxscy93bGRhcDMyL3NlYXJjaC5jOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglVc2UgV0xEQVAzMl9MREFQX05PX01FTU9SWSBpbnN0ZWFkIG9mIExEQVBfTk9fTUVNT1JZLgoKCSogZGxscy9zaGVsbDMyL3Rlc3RzL3NobGZvbGRlci5jOiBTYXVsaXVzIEtyYXN1Y2thcyA8c2F1bGl1czJAYXIuZmkubHQ+CglBZGRlZCB0ZXN0IGZvciBJU2hlbGxGb2xkZXJfUGFyc2VEaXNwbGF5TmFtZS4KCgkqIGRsbHMvTWFrZXRlc3QucnVsZXMuaW46IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCU1vdmUgVEVTVExJU1QgZnJvbSBFWFRSQV9TUkNTIHRvIENfU1JDUyBpbiB0ZXN0IG1ha2VmaWxlcyB0byBmcmVlIHVwCglFWFRSQV9TUkNTIGZvciBvdGhlciBwdXJwb3Nlcy4KCgkqIGRsbHMvaGhjdHJsLm9jeC9NYWtlZmlsZS5pbiwgZGxscy9oaGN0cmwub2N4L21haW4uYzoKCUphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJSW1wbGVtZW50IERsbE1haW4gYW5kIHN0b3JlIHRoZSBEbGwgaGluc3RhbmNlLgoKCSogZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL250ZGxsL3Byb2Nlc3MuYywgZGxscy9udGRsbC9ydGwuYywKCSAgaW5jbHVkZS93aW50ZXJubC5oOgoJSW1wbGVtZW50ZWQgYSBmZXcgdHJpdmlhbCBudGRsbCBmdW5jdGlvbnMgdGhhdCBoYXZlIGJlZW4gYWRkZWQgaW4KCXJlY2VudCBXaW5kb3dzIHZlcnNpb25zLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvbXN4bWwzLy5jdnNpZ25vcmUsCgkgIGRsbHMvbXN4bWwzL01ha2VmaWxlLmluLCBkbGxzL21zeG1sMy9kb21kb2MuYywgZGxscy9tc3htbDMvZmFjdG9yeS5jLAoJICBkbGxzL21zeG1sMy9tYWluLmMsIGRsbHMvbXN4bWwzL21zeG1sMy5zcGVjLAoJICBkbGxzL21zeG1sMy9tc3htbF9wcml2YXRlLmgsIGluY2x1ZGUvY29uZmlnLmguaW46CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglJbml0aWFsIGltcGxlbWVudGF0aW9uIG9mIG1zeG1sMyBiYXNlZCBvbiBsaWJ4bWwyLgoKCSogZGxscy9rZXJuZWwvcHJvZmlsZS5jOgoJRml4ZWQgd2hpdGUgc3BhY2UgaGFuZGxpbmcgb24gdGhlIGxhc3QgbGluZSAocmVwb3J0ZWQgYnkgSmVyZW15CglXaGl0ZSkuCglBdm9pZCBwYXJzaW5nIHRoZSBzYW1lIGxpbmUgdHdpY2Ugd2hlbiBpdCBjb250YWlucyB0cmFpbGluZyBzcGFjZXMuCgoJKiBkbGxzL3VzZXIvdGVzdHMvd2luLmM6IExhdXJpIFR1bG1pbiA8dHVsbWluQGdtYWlsLmNvbT4KCUFkZCB0ZXN0cyBmb3IgcmVwYWludGluZyB3aW5kb3dzIHdpdGggQ1NfUEFSRU5UREMgY2xhc3Mgc3R5bGUuCgoJKiBkbGxzL2tlcm5lbC90aHJlYWQuYywgZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL250ZGxsL250ZGxsX21pc2MuaCwKCSAgZGxscy9udGRsbC9zZXJ2ZXIuYywgZGxscy9udGRsbC90aHJlYWQuYywgaW5jbHVkZS93aW5lL3NlcnZlci5oLAoJICBpbmNsdWRlL3dpbnRlcm5sLmg6CglVc2UgdGhlIG5ldyBSdGxFeGl0VXNlclRocmVhZCBmdW5jdGlvbiBpbnN0ZWFkIG9mIGV4cG9ydGluZwoJd2luZV9zZXJ2ZXJfZXhpdF90aHJlYWQuCgoJKiBkbGxzL21zaHRtbC9vbGVvYmouYywgZGxscy9tc2h0bWwvdGVzdHMvaHRtbGRvYy5jOgoJSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCUFkZGVkIFF1ZXJ5U3RhdHVzIGltcGxlbWVudGF0aW9uLgoKCSogZGxscy93bGRhcDMyL2NvbXBhcmUuYywgZGxscy93bGRhcDMyL3dpbmxkYXBfcHJpdmF0ZS5oOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglEb24ndCByZWx5IG9uIGxkYXAgc3RydWN0dXJlIHdoZW4gaGVhZGVycyBhcmUgbm90IGF2YWlsYWJsZS4KCgkqIGRsbHMvd2xkYXAzMi93bGRhcDMyLnJjLCBkbGxzL3dsZGFwMzIvd2xkYXAzMl9EZS5yYzoKCUhlbm5pbmcgR2VyaGFyZHQgPGhlbm5pbmcuZ2VyaGFyZHRAd2ViLmRlPgoJQWRkIEdlcm1hbiByZXNvdXJjZSBmaWxlIGZvciBXTERBUDMyLgoKCSogZGxscy9tc2h0bWwvaHRtbGRvYy5jLCBkbGxzL21zaHRtbC9tYWluLmMsCgkgIGRsbHMvbXNodG1sL21zaHRtbF9wcml2YXRlLmgsIGRsbHMvbXNodG1sL3Byb3RvY29sLmM6CglKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJQWRkZWQgRGxsQ2FuVW5sb2FkTm93IGltcGxlbWVudGF0aW9uLgoKCSogZGxscy9kc291bmQvbWl4ZXIuYzogQWxleCBWaWxsYWPtcyBMYXNzbyA8YV92aWxsYWNpc0BwYWxvc2FudG8uY29tPgoJUHJldmVudCBkc2ItPmJ1Zl9taXhwb3MgZnJvbSBldmVyIHJlbWFpbmluZyBwYXN0IGRzYi0+YnVmbGVuIGV2ZW4gaWYKCW5vdCBpbiBEU0JQTEFZX0xPT1BJTkcgY2FzZSwgdG8gcHJldmVudCBhc3NlcnRpb24gZmFpbHVyZSBpbgoJRFNPVU5EX01peEluQnVmZmVyLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBWaXRhbHkgTGlwYXRvdiA8bGF2QGV0ZXJzb2Z0LnJ1PgoJVXNlIFNUQVRFSU1BR0VJTkRFWCAvIElOREVYVE9TVEFURUlNQUdFTUFTSyBpbnN0ZWFkIG9mIGJpdAoJb3BlcmF0aW9ucy4KCjIwMDUtMDgtMDEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2FkdmFwaTMyL2FkdmFwaTMyLnNwZWMsIGRsbHMvZ2RpL2dkaTMyLnNwZWMsCgkgIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywKCSAgZGxscy91c2VyL3VzZXIzMi5zcGVjOgoJQWRkZWQgY29tbWVudGVkIG91dCBzdHVicyBmb3IgYSBidW5jaCBvZiBuZXcgZnVuY3Rpb25zLgoKCSogaW5jbHVkZS93aW5iYXNlLmg6IFByb3Blcmx5IHNvcnQgdGhlIGZ1bmN0aW9uIHByb3RvdHlwZXMuCgoJKiBkbGxzL21zaHRtbC9NYWtlZmlsZS5pbjogRml4ZWQgdGhlIGJ1aWxkIHdpdGhvdXQgbWFrZSBkZXBlbmQuCgoJKiBkbGxzL3VzcDEwL3VzcDEwLnNwZWM6IFByb3Blcmx5IHNvcnQgdGhlIHNwZWMgZmlsZSBlbnRyaWVzLgoKCSogZGxscy93bGRhcDMyL01ha2VmaWxlLmluLCBkbGxzL3dsZGFwMzIvY29tcGFyZS5jLAoJICBkbGxzL3dsZGFwMzIvd2lubGRhcF9wcml2YXRlLmgsIGRsbHMvd2xkYXAzMi93bGRhcDMyLnNwZWM6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCUltcGxlbWVudCBsZGFwX2NvbXBhcmUqIGZ1bmN0aW9ucy4KCgkqIGRsbHMvbnRkbGwvY2Ryb20uYzogVml0YWxpeSBNYXJnb2xlbiA8d2luZS1wYXRjaEBraWV2aW5mby5jb20+CglGaXhlZCBJT0NUTF9TQ1NJX0dFVF9BRERSRVNTLgoKCSogZGxscy9jb21jdGwzMi9kcGEuYywgZGxscy9jb21jdGwzMi90ZXN0cy9kcGEuYzoKCUZpeGVkIHJlZ3Jlc3Npb24gaW4gRFBBX1NlYXJjaC4KCgkqIGRsbHMvbXNodG1sLy5jdnNpZ25vcmUsIGRsbHMvbXNodG1sL01ha2VmaWxlLmluLAoJICBkbGxzL21zaHRtbC9odG1sZG9jLmMsIGRsbHMvbXNodG1sL21haW4uYywKCSAgZGxscy9tc2h0bWwvbXNodG1sX3ByaXZhdGUuaCwgZGxscy9tc2h0bWwvbnNlbWJlZC5jLAoJICBkbGxzL21zaHRtbC9uc2lmYWNlLmlkbCwgZGxscy9tc2h0bWwvcGVyc2lzdC5jLCBkbGxzL21zaHRtbC92aWV3LmM6CglKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJLSBVc2UgR2Vja28gdG8gcmVuZGVyIEhUTUwuCgktIEdldCByaWQgb2YgTW96aWxsYSBBY3RpdmVYIENvbnRyb2wgaW4gTVNIVE1MLgoKCSogZGxscy93bGRhcDMyLy5jdnNpZ25vcmUsIGRsbHMvd2xkYXAzMi9NYWtlZmlsZS5pbiwKCSAgZGxscy93bGRhcDMyL2Vycm9yLmMsIGRsbHMvd2xkYXAzMi9tYWluLmMsCgkgIGRsbHMvd2xkYXAzMi93aW5sZGFwX3ByaXZhdGUuaCwgZGxscy93bGRhcDMyL3dsZGFwMzIucmMsCgkgIGRsbHMvd2xkYXAzMi93bGRhcDMyLnNwZWMsIGRsbHMvd2xkYXAzMi93bGRhcDMyX0VuLnJjOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglJbXBsZW1lbnQgbGRhcF9lcnIyc3RyaW5nLgoKCSogZGxscy93aW5lZDNkL2RldmljZS5jLCBkbGxzL3dpbmVkM2QvZHJhd3ByaW0uYywKCSAgZGxscy93aW5lZDNkL3N0YXRlYmxvY2suYywgZGxscy93aW5lZDNkL3V0aWxzLmMsCgkgIGRsbHMvd2luZWQzZC93aW5lZDNkX3ByaXZhdGUuaDoKCU9saXZlciBTdGllYmVyIDxvbGl2ZXJfc3RpZWJlckB5YWhvby5jby51az4KCVNlcGFyYXRlIHRoZSBzZXR0aW5nIG9mIHRoZSBEaXJlY3RYIHRleHR1cmUgYW5kIHNhbXBsZXIgc3RhdGVzIGZyb20KCXRoZSBzZXR0aW5nIG9mIE9wZW5HTCBzdGF0ZXMgKG5vdyBpbiBhcHBseVRleHR1cmVTdGF0ZVN0YXRlIGFuZAoJYXBwbHlTYW1wbGVyU3RhdGUpLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvc3luYy5jOgoJRmVsaXggTmF3b3RobmlnIDxmZWxpeC5uYXdvdGhuaWdAdC1vbmxpbmUuZGU+CglGaXggc3luYyB0ZXN0cyBvbiBXaW45OC9NRS4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL21vZHVsZS5jOgoJRmVsaXggTmF3b3RobmlnIDxmZWxpeC5uYXdvdGhuaWdAdC1vbmxpbmUuZGU+CglGaXggbW9kdWxlIHRlc3RzIG9uIFdpbjl4LgoKCSogZGxscy93aW5zb2NrL3dzMl8zMi5zcGVjOiBBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CglTeW5jIHdzMl8zMi5zcGVjIHdpdGggWFAuCgoJKiBkbGxzL2RkcmF3L2RldmljZV9vcGVuZ2wuYywgZGxscy9kZHJhdy9zdXJmYWNlX2RpYi5jLAoJICBkbGxzL2RkcmF3L3RleHR1cmUuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVdhcm5pbmcgZml4ZXMuCgoJKiBkbGxzL2hoY3RybC5vY3gvTWFrZWZpbGUuaW4sIGRsbHMvaGhjdHJsLm9jeC9oZWxwLmMsCgkgIGRsbHMvaGhjdHJsLm9jeC9oaGN0cmwuYzoKCUphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJQWRkIGJlZ2lubmluZ3Mgb2YgdGhlIEhlbHAgdmlld2VyLgoKCSogbGlicy91bmljb2RlL21idG93Yy5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglnY2MgNC4wIHdhcm5pbmcgZml4LgoKCSogZGxscy93aW5lZDNkL2Jhc2V0ZXh0dXJlLmMsIGRsbHMvd2luZWQzZC9kZXZpY2UuYywKCSAgZGxscy93aW5lZDNkL2RyYXdwcmltLmMsIGRsbHMvd2luZWQzZC9zdGF0ZWJsb2NrLmM6CglPbGl2ZXIgU3RpZWJlciA8b2xpdmVyX3N0aWViZXJAeWFob28uY28udWs+CglTZXBhcmF0ZSB0aGUgbWFuYWdlbWVudCBvZiBEaXJlY3RYIHN0YXRlcyBhbmQgb3BlbkdMIHN0YXRlcy4KCgkqIGRsbHMvdXNwMTAvdXNwMTAuYywgZGxscy91c3AxMC91c3AxMC5zcGVjLCBpbmNsdWRlL3VzcDEwLmg6CglPbGl2ZXIgU3RpZWJlciA8b2xpdmVyX3N0aWViZXJAeWFob28uY28udWs+CglBZGRlZCBzdHViYmVkIHN1cHBvcnQgZm9yIFNjcmlwdEdldEZvbnRQcm9wZXJ0aWVzLgoKCSogZGxscy9jb21jdGwzMi9kcGEuYywgZGxscy9jb21jdGwzMi90ZXN0cy9kcGEuYzoKCUZlbGl4IE5hd290aG5pZyA8ZmVsaXgubmF3b3RobmlnQHQtb25saW5lLmRlPgoJRml4IERQQV9TZWFyY2ggZm9yIHNvcnRlZCBhcnJheXMuCgoyMDA1LTA3LTMwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy93aW5lZDNkL2RpcmVjdHguYzogT2xpdmVyIFN0aWViZXIgPG9saXZlcl9zdGllYmVyQHlhaG9vLmNvLnVrPgoJRml4ZWQgYW4gb2ZmIGJ5IG9uZSBlcnJvciBpbiBlbnVtZGlzcGxheW1vZGVzLCBhbGxvd2luZyBzaW1zIDIgdG8KCXN0YXJ0IHVwLgoKCSogc2VydmVyL2ZkLmM6CglBZGRlZCBhIHNlcGFyYXRlIGRldmljZSBvYmplY3QgdG8ga2VlcCB0cmFjayBvZiBpbm9kZXMgdGhhdCBhcmUgb24gdGhlCglzYW1lIGRldmljZS4KCgkqIGRsbHMvd2luZWQzZC9kcmF3cHJpbS5jLCBkbGxzL3dpbmVkM2Qvd2luZWQzZF9wcml2YXRlLmg6CglPbGl2ZXIgU3RpZWJlciA8b2xpdmVyX3N0aWViZXJAeWFob28uY28udWs+CglUaWR5IHVwIHNvbWUgb2YgdGhlIGZvcm1hdHRpbmcgaW4gZHJhd3ByaW0gYW5kIGFkZCBtaXNzaW5nIHN0cmlkZWQKCWRhdGEuCgoJKiBkbGxzL3dpbmVkM2QvZGV2aWNlLmMsIGRsbHMvd2luZWQzZC9kaXJlY3R4LmM6CglPbGl2ZXIgU3RpZWJlciA8b2xpdmVyX3N0aWViZXJAeWFob28uY28udWs+CglWYWxpZGF0ZSB0aGF0IHRoZSB0ZXh0dXJlIGlzIG5vIGxhcmdlciB0aGFuIHRoZSBncmFwaGljcyBjYXJkcyBsYXJnZXN0CglzdXBwb3J0ZWQgdGV4dHVyZS4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL2NvbW0uYzoKCUZlbGl4IE5hd290aG5pZyA8ZmVsaXgubmF3b3RobmlnQHQtb25saW5lLmRlPgoJRml4IGNvbW0gdGVzdHMgb24gV2luOXguCgoJKiBwcm9ncmFtcy9yZWdzdnIzMi9yZWdzdnIzMi5jOgoJQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJSW1wcm92ZSByZWdzdnIzMiBvdXRwdXQuCgoJKiBkbGxzL3ZlcnNpb24vaW5mby5jOiBQYXVsIFZyaWVucyA8UGF1bC5WcmllbnNAeHM0YWxsLm5sPgoJUmVtb3ZlIHRoZSBubyBsb25nZXIgdXNlZCBDb252ZXJ0VmVyc2lvbkluZm8zMlRvMTYgZnVuY3Rpb24uCglBZGQgYSAoZm9yZ290dGVuKSBSdGxGcmVlVW5pY29kZVN0cmluZy4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL3RocmVhZC5jOgoJRmVsaXggTmF3b3RobmlnIDxmZWxpeC5uYXdvdGhuaWdAdC1vbmxpbmUuZGU+CglGaXggcmVtYWluaW5nIHRocmVhZCB0ZXN0cyBvbiBXaW5NRS4KCgkqIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmM6IEpvemVmIFN0ZWZhbmthIDxqc3RlZmFua2FAY29kZXdlYXZlcnMuY29tPgoJRml4ZWQgYnJvd3NpbmcgdG8gb3RoZXIgZGlyZWN0b3JpZXMgaW4gV29yZCAyMDAzIGZpbGUgb3BlbgoJZGlhbG9nLiBEb3VibGUgY2xpY2tpbmcgb24gYSBmb2xkZXIgaW4gdGhlIEZpbGUtPk9wZW4gZGlhbG9nIHdvcmtzCglub3cuCgoyMDA1LTA3LTI5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogcHJvZ3JhbXMvd2luZWNmZy9Gci5yYzogSm9uYXRoYW4gRXJuc3QgPEpvbmF0aGFuQEVybnN0RmFtaWx5LmNoPgoJRml4ZWQgY29udHJvbCBzaXplIGFuZCBwbGFjZW1lbnQuCgoJKiBwcm9ncmFtcy93aW5lY2ZnL0RlLnJjOiBTdGVmYW4gRPZzaW5nZXIgPHN0ZWZhbmRvZXNpbmdlckBnbXguYXQ+CglDb3JyZWN0IHRoZSBzaXplcyBvZiBzb21lIGNvbnRyb2xzIGluIHRoZSBHZXJtYW4gcmVzb3VyY2VzLgoKCSogc2VydmVyL3RyYWNlLmMsIHRvb2xzL21ha2VfcmVxdWVzdHM6CglBdXRvbWF0aWNhbGx5IGdlbmVyYXRlIHRoZSBsaXN0IG9mIGVycm9yIG5hbWVzIGluIG1ha2VfcmVxdWVzdHMuCgoJKiBkbGxzL2RiZ2hlbHAvZGJnaGVscC5jLCBkbGxzL2RiZ2hlbHAvZGJnaGVscC5zcGVjLCBpbmNsdWRlL2RiZ2hlbHAuaDoKCVBldGVyIE9iZXJuZG9yZmVyIDxrdW1iYXlvODRAYXJjb3IuZGU+CglBZGRlZCBzdHViIGZvciBTeW1TZXRQYXJlbnRXaW5kb3cuCgoJKiBkbGxzL3VzZXIvbGlzdGJveC5jLCBkbGxzL3VzZXIvdGVzdHMvbGlzdGJveC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCS0gQWRkIGFuIG93bmVyZHJhd24gbGlzdGJveCB0ZXN0LCB3aGljaCBjb25maXJtcyB0aGF0IG9uIFdNX0RSQVdJVEVNCgkgIHBhcmVudCByZWNlaXZlcyBhIGNsaXBib3ggZXF1YWwgdG8gYSBsaXN0Ym94J3MgY2xpZW50IGFyZWEuCgktIFdNX0RSQVdJVEVNIG1lc3NhZ2UgY29udGFpbnMgMCBpbiB3cGFyYW0gKGF0IGxlYXN0IG9uIHdpbjJrKS4KCgkqIGRsbHMvZGlucHV0L2pveXN0aWNrX2xpbnV4aW5wdXQuYzoKCURhbmllbCBSZW1lbmFrIDxkdHJlbWVuYWtAZ21haWwuY29tPgoJQ29ycmVjdGx5IGVudW1lcmF0ZSBldmRldiBqb3lzdGlja3Mgd2hlbiBlbnVtZXJhdGlvbiBpcyByZXN0cmljdGVkCgl3aXRoIERJRURGTF9GT1JDRUZFRURCQUNLLgoKCSogc2VydmVyL3F1ZXVlLmM6IFJlbW92ZWQgYSBubyBsb25nZXIgdXNlZCB2YXJpYWJsZS4KCgkqIHNlcnZlci9oYW5kbGUuYywgc2VydmVyL3RocmVhZC5jOiBGaXhlZCBhIGNvdXBsZSBvZiBlcnJvciBjb2Rlcy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL2RpbnB1dC9qb3lzdGlja19saW51eGlucHV0LmMsCgkgIGluY2x1ZGUvY29uZmlnLmguaW46CglEYW5pZWwgUmVtZW5hayA8ZHRyZW1lbmFrQGdtYWlsLmNvbT4KCURldGVjdCBmb3JjZS1mZWVkYmFjay1jYXBhYmxlIGxpbnV4IGV2ZW50IGRldmljZSBqb3lzdGlja3MgYW5kIHJldHVybgoJRElEQ19GT1JDRUZFRURCQUNLIHdoZW4gcXVlcmllZCBmb3IgY2FwYWJpbGl0aWVzLgoKCSogZGxscy9zaGx3YXBpL2lzdHJlYW0uYywgZGxscy9zaGx3YXBpL3JlZ3N0cmVhbS5jLAoJICBkbGxzL3NobHdhcGkvdGVzdHMvc2hyZWcuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCWdjYyA0LjAgd2FybmluZyBmaXhlcy4KCgkqIGRsbHMvdmVyc2lvbi9pbmZvLmM6IFBhdWwgVnJpZW5zIDxwYXVsLnZyaWVuc0B4czRhbGwubmw+CglDbGVhbnVwIHdoaXRlc3BhY2UuCglDb252ZXJzaW9uIGZpeGVzLgoKCSogZGxscy9tc2FjbS93aW5lbXAzL2ludGVyZmFjZS5jLCBkbGxzL21zYWNtL3dpbmVtcDMvbXBlZ2wzLmMsCgkgIGRsbHMvbXNhY20vd2luZW1wMy9tcGdsaWIuaCwgZGxscy93aW5tbS93aW5lYWxzYS9taWRpLmMsCgkgIGRsbHMvd2lubW0vd2luZW9zcy9kc3JlbmRlci5jLCBkbGxzL3dpbm1tL3dpbmVvc3MvbWlkaS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJZ2NjIDQuMCB3YXJuaW5nIGZpeGVzLgoKMjAwNS0wNy0yOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbnRkbGwvZXJyb3IuYzogQWRkZWQgbmFtZXMgZm9yIGEgYnVuY2ggb2Ygc3RhdHVzIHZhbHVlcy4KCgkqIGluY2x1ZGUvd2luZXJyb3IuaDogQWRkZWQgYSBmZXcgZXJyb3IgY29kZXMuCgoJKiBkbGxzL3dpbmVkM2QvZGV2aWNlLmMsIGRsbHMvd2luZWQzZC9kaXJlY3R4LmMsCgkgIGRsbHMvd2luZWQzZC9zdXJmYWNlLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglTaWduZWQgd2FybmluZyBmaXhlcy4KCgkqIGluY2x1ZGUveG1sZG9tLmlkbDogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IHNvbWUgdHlwb3MgaW4gdGhlIGlkbCBkZWZpbml0aW9ucy4KCgkqIGRsbHMvdmVyc2lvbi9pbmZvLmM6IFBhdWwgVnJpZW5zIDxwYXVsLnZyaWVuc0B4czRhbGwubmw+CglOZXcgZnVuY3Rpb24gVmVyc2lvbkluZm8zMl9RdWVyeVZhbHVlLgoJTWFkZSBmdW5jdGlvbnMgc3RhdGljLgoKCSogc2VydmVyL2ZkLmM6CglSZW5hbWVkIGZkIHRvIHVuaXhfZmQgaW4gdGhlIGNsb3NlZF9mZCBzdHJ1Y3R1cmUgdG8gbWFrZSB0aGUgY29kZSBhCgliaXQgY2xlYXJlci4KCgkqIGluY2x1ZGUveG1sZG9tLmlkbDogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWRkIGEgZGVmaW5pdGlvbiBmb3IgdGhlIElYTUxET01FbGVtZW50IGludGVyZmFjZS4KCgkqIGRsbHMva2VybmVsL2xjZm9ybWF0LmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgRW51bURhdGVGb3JtYXRzRXguCgoJKiBkbGxzL3ZlcnNpb24vaW5mby5jLCBpbmNsdWRlL3dpbnZlci5oOgoJUGF1bCBWcmllbnMgPHBhdWwudnJpZW5zQHhzNGFsbC5ubD4KCVZlclF1ZXJ5VmFsdWUgcmV0dXJucyBCT09MIG5vdCBEV09SRC4KCgkqIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmM6IFJlbW92ZSBkdXBsaWNhdGUgZGVmaW5pdGlvbiBvZiBGSUxFX0JFR0lOLgoKCSogZGxscy9hZHZhcGkzMi9yZWdpc3RyeS5jLCBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYywKCSAgZGxscy9zaGx3YXBpL3JlZy5jLCBpbmNsdWRlL3dpbnJlZy5oOgoJU3RldmVuIEVkd2FyZHMgPHN0ZXZlbl9lZDQxNTNAeWFob28uY29tPgoJQ29ycmVjdCBSZWdDcmVhdGVLZXlFeFtBL1ddIHByb3RvdHlwZSB0byBtYXRjaCB0aGUgUFNESy4KCgkqIGRsbHMvZDNkOC9kZXZpY2UuYywgZGxscy9kM2Q4L2RpcmVjdHguYywgZGxscy9kM2Q4L2RyYXdwcmltLmMsCgkgIGRsbHMvZDNkOC9zdXJmYWNlLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggc2lnbiB3YXJuaW5ncy4KCgkqIGRsbHMvZDNkOS9kM2Q5X3ByaXZhdGUuaCwgZGxscy93aW5lZDNkL3dpbmVkM2RfcHJpdmF0ZS5oOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJZ2NjIDQuMCAtV3BvaW50ZXItc2lnbiBmaXhlcy4KCgkqIGRsbHMva2VybmVsL2xjZm9ybWF0LmMsIGRsbHMva2VybmVsL3Rlc3RzL2xvY2FsZS5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCS0gUmVpbXBsZW1lbnQgRW51bVRpbWVGb3JtYXRzLCBtYWtlIGl0IHdvcmsgZm9yIGFsbCBhdmFpbGFibGUKCSAgbG9jYWxlcy4KCS0gQWRkIGEgdGVzdCBmb3IgRW51bVRpbWVGb3JtYXRzCgoJKiBkbGxzL3dpbmVkM2QvdmVydGV4ZGVjbGFyYXRpb24uYzoKCU9saXZlciBTdGllYmVyIDxvbGl2ZXJfc3RpZWJlckB5YWhvby5jby51az4KCVJldHVybiBhbGwgZWxlbWVudHMgd2hlbiBnZXREZWNsYXJhdGlvbiBpcyBjYWxsZWQgd2l0aCBwbnVtZWxlbWVudHMKCXNldCB0byAwLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOiBGcmFuayBSaWNodGVyIDxmcmFuay5yaWNodGVyQGdtYWlsLmNvbT4KCUFkZCB0aGVtaW5nIGZvciB0cmVldmlldyBjb250cm9sLgoKCSogZGxscy9jb21jdGwzMi90YWIuYzogRnJhbmsgUmljaHRlciA8ZnJhbmsucmljaHRlckBnbWFpbC5jb20+CglBZGQgdGhlbWluZyBzdXBwb3J0IGZvciB0aGUgdGFiIGNvbnRyb2wuCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBBIG5hbWUgaW4gYW4gU0xURyB0eXBlbGliIG9ubHkgYmVnaW5uaW5nIHdpdGggMHhmZiBpcyB0aGUgaW5kaWNhdG9yCgkgIG9mIGFuIG9mZnNldCwgaW5zdGVhZCBvZiBhbnkgbm9uIGFscGhhLW51bWVyaWMgY2hhcmFjdGVyLgoJLSBBbnkgZGlzcGF0Y2ggaW50ZXJmYWNlIHNob3VsZCBoYXZlIHRoZSBmaXhlZCB2dGFibGUgc2l6ZSwgbm90IGp1c3QKCSAgZHVhbCBvbmVzLgoJLSBXYXJuIHdoZW4gSVR5cGVJbmZvX0dldERvY3VtZW50YXRpb24gZmFpbHMuCgoJKiBkbGxzL3ZlcnNpb24vaW5mby5jOiBQYXVsIFZyaWVucyA8UGF1bC5WcmllbnNAeHM0YWxsLm5sPgoJQ2xlYW51cCBwcmludF92ZmZpX2RlYnVnLgoKMjAwNS0wNy0yNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL21jaWNkYS8uY3ZzaWdub3JlLAoJICBkbGxzL21jaWNkYS9NYWtlZmlsZS5pbiwgZGxscy9tY2ljZGEvbWNpY2RhLmMsCgkgIGRsbHMvbWNpY2RhL21jaWNkYS5zcGVjLCB0b29scy93aW5hcGkvd2luMzIuYXBpLCB0b29scy93aW5lLmluZjoKCVLpbWkgQXNzYWlsbHkgPHJlbWkuYXNzYWlsbHlAZnJlZS5mcj4KCU1vdmVkIG1jaWNkYSB0byB0aGUgdG9wLWxldmVsIGRsbHMgZGlyZWN0b3J5LgoKCSogZGxscy91eHRoZW1lL2RyYXcuYzogRnJhbmsgUmljaHRlciA8ZnJhbmsucmljaHRlckBnbWFpbC5jb20+CglJbXBsZW1lbnRhdGlvbiBmb3IgR2V0VGhlbWVQYXJ0U2l6ZSgpIChub3QgZW50aXJlbHkgZXF1aXZhbGVudCB0bwoJbmF0aXZlIHV4dGhlbWUsIGJ1dCBzZW5zaWJseSB1c2VhYmxlKS4KCgkqIGRsbHMvd2luZWQzZC9kZXZpY2UuYywgZGxscy93aW5lZDNkL3N3YXBjaGFpbi5jLAoJICBkbGxzL3dpbmVkM2Qvd2luZWQzZF9wcml2YXRlLmgsIGluY2x1ZGUvd2luZS93aW5lZDNkX2ludGVyZmFjZS5oOgoJT2xpdmVyIFN0aWViZXIgPG9saXZlcl9zdGllYmVyQHlhaG9vLmNvLnVrPgoJQ2hhbmdlZCBzd2FwY2hhaW5zIGhlbGQgYnkgdGhlIGRldmljZSBmcm9tIGFuIGFycmF5IHRvIGEgbGlua2VkCglsaXN0LiBBbHNvIHByb3ZpZGUgYSBub3RpZmljYXRpb24gZnVuY3Rpb24gdGhhdCB0aGF0IHRoZSBzd2FwY2hhaW4gY2FuCgliZSByZW1vdmVkIHdoZW4gaXQgaXMgcmVsZWFzZWQuCgoJKiBkbGxzL3gxMWRydi93aW5kb3cuYzoKCVRoZXJlJ3Mgbm8gbmVlZCB0byB1cGRhdGUgdGhlIGV2ZW50IG1hc2sgaW4gWDExRFJWX3N5bmNfd2luZG93X3N0eWxlLAoJaXQgbmV2ZXIgY2hhbmdlcy4KCgkqIGRsbHMvZGV2ZW51bS9tZWRpYWNhdGVudW0uYywgZGxscy9xY2FwL2NhcHR1cmVncmFwaC5jLAoJICBkbGxzL3F1YXJ0ei9maWxlc291cmNlLmMsIGRsbHMvcXVhcnR6L2ZpbHRlcm1hcHBlci5jLAoJICBkbGxzL3F1YXJ0ei9wYXJzZXIuYywgZGxscy9xdWFydHovcGluLmM6CglSZXBsYWNlIHRoZSBJQ09NX1RISVNfRnJvbSBtYWNyb3MgYnkgaW5saW5lIGZ1bmN0aW9ucy4KCgkqIGRsbHMvY29tY3RsMzIvaGVhZGVyLmMsIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCUZyYW5rIFJpY2h0ZXIgPGZyYW5rLnJpY2h0ZXJAZ21haWwuY29tPgoJU2luY2UgT3BlblRoZW1lRGF0YSgpIHNob3VsZCByZXR1cm4gMCBpbiBjYXNlIHRoZW1pbmcgaXMgZGlzYWJsZWQKCWdsb2JhbGx5IG9yIGZvciB0aGUgYXBwbGljYXRpb24gd2UgZG9uJ3QgbmVlZCB0byBjaGVjayB0aGF0IHdoZW4KCWNhbGxpbmcgT3BlblRoZW1lRGF0YSgpLgoKCSogZGxscy93bGRhcDMyL01ha2VmaWxlLmluLCBkbGxzL3dsZGFwMzIvZXJyb3IuYywKCSAgZGxscy93bGRhcDMyL3dpbmxkYXBfcHJpdmF0ZS5oLCBkbGxzL3dsZGFwMzIvd2xkYXAzMi5zcGVjOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglJbXBsZW1lbnQgbGRhcF9wZXJyb3IsIGxkYXBfcmVzdWx0MmVycm9yIGFuZCBMZGFwTWFwRXJyb3JUb1dpbjMyLgoKCSogZGxscy91eHRoZW1lL3Byb3BlcnR5LmM6IEZyYW5rIFJpY2h0ZXIgPGZyYW5rLnJpY2h0ZXJAZ21haWwuY29tPgoJTWFrZSBHZXRUaGVtZU1hcmdpbnMoKSByZXR1cm4gZGVmYXVsdCB2YWx1ZXMgKDAgbWFyZ2luKSBpZiB0aGUKCWZ1bmN0aW9uIGRvZXMgbm90IHN1Y2NlZWQuCgoJKiBkbGxzL2tlcm5lbC9sY2Zvcm1hdC5jLCBkbGxzL2tlcm5lbC90ZXN0cy9sb2NhbGUuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CgktIFJlaW1wbGVtZW50IEVudW1EYXRlRm9ybWF0cywgbWFrZSBpdCB3b3JrIGZvciBhbGwgYXZhaWxhYmxlCgkgIGxvY2FsZXMuCgktIEFkZCBhIHRlc3QgZm9yIEVudW1EYXRlRm9ybWF0cy4KCgkqIGRsbHMvdmVyc2lvbi9pbmZvLmM6IFBhdWwgVnJpZW5zIDxQYXVsLlZyaWVuc0B4czRhbGwubmw+CglSZW1vdmUgMzJiaXQgcmVmZXJlbmNlcy9jaGVja3MgaW4gVkVSU0lPTl9HZXRGaWxlVmVyc2lvbkluZm9fMTYuCgoJKiBkbGxzL29sZWF1dDMyL29sZWZvbnQuYywgZGxscy9vbGVhdXQzMi9vbGVwaWN0dXJlLmMsCgkgIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jLCBkbGxzL29sZWF1dDMyL3R5cGVsaWIyLmM6CglSZXBsYWNlIHRoZSBJQ09NX1RISVNfRnJvbSBtYWNyb3MgYnkgaW5saW5lIGZ1bmN0aW9ucy4KCgkqIGRsbHMvb2xlMzIvYW50aW1vbmlrZXIuYywgZGxscy9vbGUzMi9jb21wb3NpdGVtb25pa2VyLmMsCgkgIGRsbHMvb2xlMzIvZGF0YWNhY2hlLmMsIGRsbHMvb2xlMzIvZGVmYXVsdGhhbmRsZXIuYywKCSAgZGxscy9vbGUzMi9lcnJvcmluZm8uYywgZGxscy9vbGUzMi9maWxlbW9uaWtlci5jLAoJICBkbGxzL29sZTMyL2Z0bWFyc2hhbC5jLCBkbGxzL29sZTMyL2l0ZW1tb25pa2VyLmMsCgkgIGRsbHMvb2xlMzIvbW9uaWtlci5jLCBkbGxzL29sZTMyL21vbmlrZXIuaCwgZGxscy9vbGUzMi9zdGdfcHJvcC5jOgoJUmVwbGFjZSB0aGUgX0lDT01fVEhJU19Gcm9tIG1hY3JvcyBieSBpbmxpbmUgZnVuY3Rpb25zIHRoZSB3YXkgaXQncwoJYWxyZWFkeSBkb25lIGluIHNoZWxsbGluay5jLgoKCSogZGxscy9jb21jdGwzMi9wcm9ncmVzcy5jOiBGcmFuayBSaWNodGVyIDxmcmFuay5yaWNodGVyQGdtYWlsLmNvbT4KCVNwbGl0IHVwIHRoZSBkcmF3aW5nIGNvZGUgaW50byBhIHNldCBvZiBzbWFsbGVyIGZ1bmN0aW9ucyBhbmQgYWxzbwoJbW92ZWQgc29tZSBjb21tb24gY29tcHV0YXRpb25zIGludG8gaGVscGVyIGZ1bmN0aW9ucy4gQWxsIHRoYXQgdG8KCWZhY2lsaXRhdGUgdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBmb3J0aGNvbWluZyB0aGVtaW5nIHN1cHBvcnQuCgoJKiBkbGxzL3dpbm1tL3dpbmVhbHNhL21pZGkuYzogSm9oYW5uZXMgS29jaCA8QWRtaW5AZGFya3ZiLmRlPgoJRml4ZWQgcGl0Y2ggYmVuZGluZyBpbiB0aGUgbWlkaSBkcml2ZXIuCgoJKiBkbGxzL3ZlcnNpb24vaW5mby5jOiBQYXVsIFZyaWVucyA8UGF1bC5WcmllbnNAeHM0YWxsLm5sPgoJUmVtb3ZlIHdyb25nIGNoZWNrLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGdicm93c2VyLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnYnJvd3Nlci5oLAoJICBkbGxzL3NoZWxsMzIvYXV0b2NvbXBsZXRlLmMsIGRsbHMvc2hlbGwzMi9jcGFuZWxmb2xkZXIuYywKCSAgZGxscy9zaGVsbDMyL2ZvbGRlcnMuYywgZGxscy9zaGVsbDMyL3NoZmxkcl9mcy5jLAoJICBkbGxzL3NoZWxsMzIvc2hmbGRyX215Y29tcC5jLCBkbGxzL3NoZWxsMzIvc2hsdmlldy5jOgoJUmVwbGFjZSB0aGUgX0lDT01fVEhJU19Gcm9tIG1hY3JvcyBieSBpbmxpbmUgZnVuY3Rpb25zIHRoZSB3YXkgaXQncwoJYWxyZWFkeSBkb25lIGluIHNoZWxsbGluay5jLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvdXNwMTAvLmN2c2lnbm9yZSwKCSAgZGxscy91c3AxMC9NYWtlZmlsZS5pbiwgZGxscy91c3AxMC91c3AxMC5jLCBkbGxzL3VzcDEwL3VzcDEwLnNwZWMsCgkgIGluY2x1ZGUvdXNwMTAuaDoKCVN0ZXZlbiBFZHdhcmRzIDxzdGV2ZW5AY29kZXdlYXZlcnMuY29tPgoJQWRkIHN0dWIgaW1wbGVtZW50YXRpb24gb2YgdGhlIFVuaXNjcmliZSBTY3JpcHQgUHJvY2Vzc29yLgoKCSogZGxscy9jb21jdGwzMi9NYWtlZmlsZS5pbiwgZGxscy9jb21jdGwzMi9jb21jdGwzMi5oLAoJICBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmMsIGRsbHMvY29tY3RsMzIvdGhlbWluZy5jOgoJRnJhbmsgUmljaHRlciA8ZnJhbmsucmljaHRlckBnbWFpbC5jb20+CglBZGRlZCBzb21lIGdlbmVyaWMgY29kZSB0byBhbGxvdyBzdWJjbGFzc2luZyAoZm9yIHRoZSBwdXJwb3NlIG9mCgl0aGVtaW5nKSBvZiBzdGFuZGFyZCBjb250cm9scy4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL21vZHVsZS5jOiBQYXVsIFZyaWVucyA8cGF1bC52cmllbnNAeHM0YWxsLm5sPgoJRml4IHNvbWUgdGVzdHMgZm9yIHdpbjl4IGFuZCB3aW5NRS4KCgkqIGRsbHMvd2lubW0vd2luZWFsc2EvYXVkaW8uYzoKCVZpdGFsaXkgTWFyZ29sZW4gPHdpbmUtcGF0Y2hAa2lldmluZm8uY29tPgoJUmVtb3ZlIGFsbCB3YWl0X2Zvcl9wb2xsIGFzc29jaWF0ZWQgc3R1ZmYgdGhhdCBpcyBubyBsb25nZXIgbmVlZGVkLgoKCSogaW5jbHVkZS93aW5udC5oOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJQWRkIHRoZSAnZmxhZycgdHlwZXM6IEZDSEFSLCBGU0hPUlQgYW5kIEZMT05HLgoKMjAwNS0wNy0yNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvZDNkeG9mL2QzZHhvZl9wcml2YXRlLmgsIGRsbHMvZGRyYXcvY2xpcHBlci5jLAoJICBkbGxzL2RkcmF3L2RkcmF3X2hhbC5jLCBkbGxzL2RkcmF3L2RkcmF3X21haW4uYywKCSAgZGxscy9kZHJhdy9kZHJhd190aHVua3MuYywgZGxscy9kZHJhdy9kZHJhd191c2VyLmMsCgkgIGRsbHMvZGRyYXcvZGV2aWNlX29wZW5nbC5jLCBkbGxzL2RkcmF3L2RpcmVjdDNkX29wZW5nbC5jLAoJICBkbGxzL2RkcmF3L2V4ZWN1dGVidWZmZXIuYywgZGxscy9kZHJhdy9saWdodC5jLAoJICBkbGxzL2RkcmF3L21hdGVyaWFsLmMsIGRsbHMvZGRyYXcvcGFsZXR0ZV9oYWwuYywKCSAgZGxscy9kZHJhdy9wYWxldHRlX21haW4uYywgZGxscy9kZHJhdy9zdXJmYWNlX2RpYi5jLAoJICBkbGxzL2RkcmF3L3N1cmZhY2VfZmFrZXpidWZmZXIuYywgZGxscy9kZHJhdy9zdXJmYWNlX2dhbW1hLmMsCgkgIGRsbHMvZGRyYXcvc3VyZmFjZV9oYWwuYywgZGxscy9kZHJhdy9zdXJmYWNlX21haW4uYywKCSAgZGxscy9kZHJhdy9zdXJmYWNlX3RodW5rcy5jLCBkbGxzL2RkcmF3L3N1cmZhY2VfdXNlci5jLAoJICBkbGxzL2RkcmF3L3RleHR1cmUuYywgZGxscy9kZHJhdy92ZXJ0ZXhidWZmZXIuYywKCSAgZGxscy9kZHJhdy92aWV3cG9ydC5jLCBpbmNsdWRlL29iamJhc2UuaDoKCU1ha2UgQ09OU1RfVlRBQkxFIHRoZSBkZWZhdWx0IGluIHRoZSBXaW5lIHNvdXJjZS4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYzoKCUdldCByaWQgb2YgdGhlIF9JQ09NX1RISVMgbWFjcm9zIGFuZCBjYWxsIHRoZSBpbmxpbmUgZnVuY3Rpb24KCWRpcmVjdGx5IGluc3RlYWQuCgoJKiBkbGxzL3dpbmVkM2QvZGV2aWNlLmMsIGRsbHMvd2luZWQzZC91dGlscy5jLAoJICBkbGxzL3dpbmVkM2Qvd2luZWQzZF9wcml2YXRlLmg6CglPbGl2ZXIgU3RpZWJlciA8b2xpdmVyX3N0aWViZXJAeWFob28uY28udWs+CglEaXJlY3RYIHVzZXMgYSBSL1ogdHJhbnNmb3JtIHRvIHRyYW5zbGF0ZSBhIHRleHR1cmUgYnV0IHVuZGVyIE9wZW5HTCBhCglRIHRyYW5zZm9ybSBtdXN0IGJlIHVzZWQgaW5zdGVhZC4KCgkqIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYzoKCVByaW50IGEgd2FybmluZyB3aGVuIGEgZ2VuZXJhdGVkIGltcG9ydCBsaWJyYXJ5IGRvZXNuJ3QgZXhwb3J0Cglhbnl0aGluZyB1c2VmdWwuCgoJKiBkbGxzL3dpbmVkM2QvY3ViZXRleHR1cmUuYywgZGxscy93aW5lZDNkL2RldmljZS5jLAoJICBkbGxzL3dpbmVkM2Qvc3VyZmFjZS5jLCBkbGxzL3dpbmVkM2Qvc3dhcGNoYWluLmMsCgkgIGRsbHMvd2luZWQzZC90ZXh0dXJlLmMsIGRsbHMvd2luZWQzZC92b2x1bWV0ZXh0dXJlLmM6CglPbGl2ZXIgU3RpZWJlciA8b2xpdmVyX3N0aWViZXJAeWFob28uY28udWs+CglSZW1vdmUgYSBsb2FkIG9mIElXaW5lRDNEU3VyZmFjZSAqIGNhc3RzIHRoYXQgYXJlIG5vIGxvbmdlciByZXF1aXJlZC4KCgkqIGRsbHMvZDNkOS9zdGF0ZWJsb2NrLmMsIGRsbHMvd2luZWQzZC9iYXNldGV4dHVyZS5jLAoJICBkbGxzL3dpbmVkM2QvZGV2aWNlLmMsIGRsbHMvd2luZWQzZC9kaXJlY3R4LmMsCgkgIGRsbHMvd2luZWQzZC9zdGF0ZWJsb2NrLmMsIGRsbHMvd2luZWQzZC92b2x1bWV0ZXh0dXJlLmMsCgkgIGRsbHMvd2luZWQzZC93aW5lZDNkX3ByaXZhdGUuaCwgaW5jbHVkZS93aW5lL3dpbmVkM2RfaW50ZXJmYWNlLmgsCgkgIGluY2x1ZGUvd2luZS93aW5lZDNkX3R5cGVzLmg6CglPbGl2ZXIgU3RpZWJlciA8b2xpdmVyX3N0aWViZXJAeWFob28uY28udWs+CglNYWtlcyBzdXJlIGFueSBpbnRlcm5hbCByZWZlcmVuY2UgY291bnRpbmcgaXMgcGFzc2VkIG9udG8gdGhlIHBhcmVudCwKCWFueSBvYmplY3RzIHJlZmVyZW5jZWQgYnkgdGhlIGludGVybmFsIHN0YXRlYmxvY2sgYXJlIHJlbGVhc2VkIHdoZW4KCXRoZSBzdGF0ZWJsb2NrIGlzIHJlbGVhc2VkICh3ZSBkb24ndCByZWZlcmVuY2UgY291bnQgd2hpbGUgYQoJc3RhdGVibG9jayBpcyByZWNvcmRpbmcsIHNvIHJlY29yZGVkIHN0YXRlYmxvY2tzIGhhdmUgbm8gcmVmZXJlbmNlcyB0bwoJY2xlYW4gdXApLgoKCSogZGxscy9hdmlmaWwzMi9lZGl0c3RyZWFtLmMsIGRsbHMvZG1pbWUvc2VnbWVudC5jLAoJICBkbGxzL2RtbG9hZGVyL2RtbG9hZGVyX3ByaXZhdGUuaCwgZGxscy9kbWxvYWRlci9sb2FkZXIuYywKCSAgZGxscy9kbWxvYWRlci9sb2FkZXJzdHJlYW0uYywgZGxscy9kcGxheXgvZHBsYXlzcC5oLAoJICBkbGxzL2RwbGF5eC9sb2JieXNwLmgsIGRsbHMvb2xlMzIvaWZzLmgsIGRsbHMvc2hlbGwzMi9zaGVsbGZvbGRlci5oLAoJICBpbmNsdWRlL2QzZC5oLCBpbmNsdWRlL2QzZDguaCwgaW5jbHVkZS9kM2Q5LmgsIGluY2x1ZGUvZDNkeDhjb3JlLmgsCgkgIGluY2x1ZGUvZGRyYXcuaCwgaW5jbHVkZS9kaW5wdXQuaCwgaW5jbHVkZS9kbXBsdWdpbi5oLAoJICBpbmNsdWRlL2RtdXNpY2MuaCwgaW5jbHVkZS9kbXVzaWNpLmgsIGluY2x1ZGUvZG11c2ljcy5oLAoJICBpbmNsdWRlL2RwYWRkci5oLCBpbmNsdWRlL2RwbGF5LmgsIGluY2x1ZGUvZHBsYXk4LmgsCgkgIGluY2x1ZGUvZHBsb2JieS5oLCBpbmNsdWRlL2RzZHJpdmVyLmgsIGluY2x1ZGUvZHNvdW5kLmgsCgkgIGluY2x1ZGUvZHhkaWFnLmgsIGluY2x1ZGUvZHhmaWxlLmgsIGluY2x1ZGUvbWFwaWRlZnMuaCwKCSAgaW5jbHVkZS9tYXBpdXRpbC5oLCBpbmNsdWRlL21hcGl4LmgsIGluY2x1ZGUvb2JqYmFzZS5oLAoJICBpbmNsdWRlL29ianNlbC5oLCBpbmNsdWRlL29sZWRsZy5oLCBpbmNsdWRlL3NobG9iai5oLAoJICBpbmNsdWRlL3NobHdhcGkuaCwgaW5jbHVkZS92ZncuaCwgaW5jbHVkZS93aW5lL3dpbmVkM2RfaW50ZXJmYWNlLmg6CglVbmNvbW1lbnQgdGhlIHR5cGVkZWYgaW4gdGhlIERFQ0xBUkVfSU5URVJGQUNFIG1hY3JvLCBhbmQgZ2V0IHJpZCBvZgoJZHVwbGljYXRlIHR5cGVkZWZzLgoKCSogZGxscy9jb21jdGwzMi9oZWFkZXIuYzogRmlsaXAgTmF2YXJhIDx4bmF2YXJhQHZvbG55LmN6PgoJVXNlIFJlbGVhc2VEQyBpbnN0ZWFkIG9mIERlbGV0ZURDIG9uIERDIGhhbmRsZS4KCgkqIGRsbHMvdmVyc2lvbi9pbmZvLmM6IFBhdWwgVnJpZW5zIDxwYXVsLnZyaWVuc0B4czRhbGwubmw+CglSZW5hbWUgYlRleHQgdG8gd1R5cGUuCgoJKiBkbGxzL3dsZGFwMzIvaW5pdC5jOiBIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCUltcHJvdmUgZXJyb3IgaGFuZGxpbmcgZm9yIHRoZSBpbml0IGZ1bmN0aW9ucy4KCgkqIGRsbHMvdXNlci9tZXNzYWdlLmM6IFBoaWwgS3J5bG92IDxwaGlsQG5ld3N0YXIucmluZXQucnU+CglUcmFuc2xhdGUgdGhlIHdob2xlIHdwYXJhbSB0by9mcm9tIFVuaWNvZGUuCgoJKiBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2Ftc3RyZWFtLy5jdnNpZ25vcmUsCgkgIGRsbHMvYW1zdHJlYW0vTWFrZWZpbGUuaW4sIGRsbHMvY29tY2F0Ly5jdnNpZ25vcmUsCgkgIGRsbHMvY29tY2F0L01ha2VmaWxlLmluLCBkbGxzL2RldmVudW0vLmN2c2lnbm9yZSwKCSAgZGxscy9kZXZlbnVtL01ha2VmaWxlLmluLCBkbGxzL2RtYmFuZC8uY3ZzaWdub3JlLAoJICBkbGxzL2RtYmFuZC9NYWtlZmlsZS5pbiwgZGxscy9kbWNvbXBvcy8uY3ZzaWdub3JlLAoJICBkbGxzL2RtY29tcG9zL01ha2VmaWxlLmluLCBkbGxzL2RtaW1lLy5jdnNpZ25vcmUsCgkgIGRsbHMvZG1pbWUvTWFrZWZpbGUuaW4sIGRsbHMvZG1sb2FkZXIvLmN2c2lnbm9yZSwKCSAgZGxscy9kbWxvYWRlci9NYWtlZmlsZS5pbiwgZGxscy9kbXNjcmlwdC8uY3ZzaWdub3JlLAoJICBkbGxzL2Rtc2NyaXB0L01ha2VmaWxlLmluLCBkbGxzL2Rtc3R5bGUvLmN2c2lnbm9yZSwKCSAgZGxscy9kbXN0eWxlL01ha2VmaWxlLmluLCBkbGxzL2Rtc3ludGgvLmN2c2lnbm9yZSwKCSAgZGxscy9kbXN5bnRoL01ha2VmaWxlLmluLCBkbGxzL2RtdXNpYy8uY3ZzaWdub3JlLAoJICBkbGxzL2RtdXNpYy9NYWtlZmlsZS5pbiwgZGxscy9kcG5ocGFzdC8uY3ZzaWdub3JlLAoJICBkbGxzL2RwbmhwYXN0L01ha2VmaWxlLmluLCBkbGxzL2Rzd2F2ZS8uY3ZzaWdub3JlLAoJICBkbGxzL2Rzd2F2ZS9NYWtlZmlsZS5pbiwgZGxscy9keGRpYWduLy5jdnNpZ25vcmUsCgkgIGRsbHMvZHhkaWFnbi9NYWtlZmlsZS5pbiwgZGxscy9tc25ldDMyLy5jdnNpZ25vcmUsCgkgIGRsbHMvbXNuZXQzMi9NYWtlZmlsZS5pbiwgZGxscy9xY2FwLy5jdnNpZ25vcmUsCgkgIGRsbHMvcWNhcC9NYWtlZmlsZS5pbjoKCURvbid0IGdlbmVyYXRlIGltcG9ydCBsaWJyYXJpZXMgZm9yIGRsbHMgdGhhdCBkb24ndCBleHBvcnQgYW55dGhpbmcuCgoJKiBkbGxzL3dpbnNwb29sL1J1LnJjOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQXZvaWQgYW4gb3J0aG9ncmFwaGljIGVycm9yIGJ5IHJlcGhyYXNpbmcgdGhlIG1lc3NhZ2UuCgoJKiBkbGxzL3dsZGFwMzIvc2VhcmNoLmMsIGRsbHMvd2xkYXAzMi93aW5sZGFwX3ByaXZhdGUuaCwKCSAgaW5jbHVkZS93aW5sZGFwLmg6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCUNvcnJlY3QgcHJvdG90eXBlIGZvciBsZGFwX3NlYXJjaF9leHRfcy4KCUltcHJvdmUgZXJyb3IgaGFuZGxpbmcgZm9yIHRoZSBzZWFyY2ggZnVuY3Rpb25zLgoKCSogZGxscy92ZXJzaW9uL2luZm8uYzogUGF1bCBWcmllbnMgPHBhdWwudnJpZW5zQHhzNGFsbC5ubD4KCUZvcndhcmQgR2V0RmlsZVZlcnNpb25JbmZvQSB0byBHZXRGaWxlVmVyc2lvbkluZm9XLgoKCSogREVWRUxPUEVSUy1ISU5UUywgY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvb2Jqc2VsLy5jdnNpZ25vcmUsIGRsbHMvb2Jqc2VsL01ha2VmaWxlLmluLAoJICBkbGxzL29ianNlbC9mYWN0b3J5LmMsIGRsbHMvb2Jqc2VsL29ianNlbC5jLCBkbGxzL29ianNlbC9vYmpzZWwucmMsCgkgIGRsbHMvb2Jqc2VsL29ianNlbC5zcGVjLCBkbGxzL29ianNlbC9vYmpzZWxfcHJpdmF0ZS5oLAoJICBkbGxzL29ianNlbC9yZWdzdnIuYywgZGxscy91dWlkL3V1aWQuYywgaW5jbHVkZS9NYWtlZmlsZS5pbiwKCSAgaW5jbHVkZS9vYmpzZWwuaDoKCVRob21hcyBXZWlkZW5tdWVsbGVyIDx3aW5lLXBhdGNoZXNAcmVhY3Rzb2Z0LmNvbT4KCUFkZGVkIHN0dWJzIGZvciBvYmpzZWwuZGxsIGFuZCBvYmpzZWwuaC4KCgkqIGRsbHMvd2luZWQzZC93aW5lZDNkX21haW4uYzoKCU9saXZlciBTdGllYmVyIDxvbGl2ZXJfc3RpZWJlckB5YWhvby5jby51az4KCUNvcnJlY3QgYSByZWdyZXNzaW9uIGlzc3VlIHdpdGggcGVyLWFwcCBzZXR0aW5ncy4KCgkqIGRsbHMvd2luc3Bvb2wvUnUucmMsIGRsbHMvd2luc3Bvb2wvd2luc3Bvb2wucmM6CglEbWl0cmlqIFNpbnVrb3YgPGF0bGFudGlkYURFTEVURVRISVNAa3Jhc3UucnU+CglBZGRlZCBSdXNzaWFuIHJlc291cmNlcy4KCgkqIGRsbHMvd2luZWQzZC9kZXZpY2UuYywgZGxscy93aW5lZDNkL3Jlc291cmNlLmMsCgkgIGRsbHMvd2luZWQzZC93aW5lZDNkX3ByaXZhdGUuaCwgaW5jbHVkZS93aW5lL3dpbmVkM2RfaW50ZXJmYWNlLmg6CglPbGl2ZXIgU3RpZWJlciA8b2xpdmVyX3N0aWViZXJAeWFob28uY28udWs+CglJbXBsZW1lbnQgcmVzb3VyY2UgdHJhY2tpbmcsIHJlcXVpcmUgZm9yIHJlc2V0IGFuZCBldmljdCBtYW5hZ2VkCglyZXNvdXJjZXMgYW5kIHByb3ZpZGVzIGV4dHJhIHNhbml0eSBjaGVja3MuCgoJKiBkbGxzL3ZlcnNpb24vdGVzdHMvaW5mby5jOiBQYXVsIFZyaWVucyA8cGF1bC52cmllbnNAeHM0YWxsLm5sPgoJQ2xlYW51cCBhbmQgc29tZSBhZGRpdGlvbmFsIHRlc3RzLgoKCSogREVWRUxPUEVSUy1ISU5UUzogRGltaSBQYXVuIDxkaW1pQGxhdHRpY2EuY29tPgoJUmVzeW5jIHdpdGggdGhlIGxhdGVzdCBETExzIHRoYXQgd2VyZSBhZGRlZCBhbmQvb3IgbW92ZWQuCgoJKiBkbGxzL3JpY2hlZDIwL2NhcmV0LmMsIGRsbHMvcmljaGVkMjAvZWRpdG9yLmMsCgkgIGRsbHMvcmljaGVkMjAvZWRpdG9yLmg6CglQaGlsIEtyeWxvdiA8cGhpbEBuZXdzdGFyLnJpbmV0LnJ1PgoJSW1wbGVtZW50ZWQgRU1fQ0hBUkZST01QT1MgUmljaEVkaXQgbWVzc2FnZS4KCgkqIGRsbHMvcmljaGVkMjAvd3JpdGVyLmM6IFBoaWwgS3J5bG92IDxwaGlsQG5ld3N0YXIucmluZXQucnU+CglHZW5lcmF0ZSBlbmRpbmcgXHBhciBpbiBSVEYgb3V0cHV0IG9mIFJpY2hFZGl0IHdoZW4gc3RyZWFtaW5nIG91dCBhCgl3aG9sZSBkb2N1bWVudC4KCgkqIGRsbHMvbXNodG1sL3Rlc3RzL2h0bWxkb2MuYzogSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCVRlc3RzIGNyYXNoIGZpeC4KCgkqIGRsbHMvd2lubW0vd2luZWFsc2EvYXVkaW8uYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJd2FpdF9mb3JfcG9sbCBjYW4gZ28gaW50byBhbiBpbmZpbml0ZSBsb29wLiBSZW1vdmUgaXQgYW5kIHJlcGxhY2UgaXQKCXdpdGggc25kX3BjbV9kcmFpbiB3aGljaCBpcyBtb3JlIGxpa2VseSB0byBkbyB3aGF0IHRoZSBvcmlnaW5hbCBhdXRob3IKCWludGVuZGVkLgoKCSogZGxscy93bGRhcDMyL2JpbmQuYywgZGxscy93bGRhcDMyL3dpbmxkYXBfcHJpdmF0ZS5oOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglJbXByb3ZlIGVycm9yIGhhbmRsaW5nIGZvciB0aGUgYmluZCBmdW5jdGlvbnMuCgoyMDA1LTA3LTI1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogVkVSU0lPTiwgY29uZmlndXJlLCBBTk5PVU5DRSwgQ2hhbmdlTG9nOiBSZWxlYXNlIDIwMDUwNzI1LgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoyMDA1LTA3LTI1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jb21jdGwzMi91cGRvd24uYzogRnJhbmsgUmljaHRlciA8ZnJhbmsucmljaHRlckBnbWFpbC5jb20+CglBZGQgdGhlbWluZyBmb3IgdGhlIHVwL2Rvd24gY29udHJvbC4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjOgoJQW5kZXJzb24gTGl6YXJkbyA8YW5kZXJzb25saXphcmRvQHlhaG9vLmNvbS5icj4KCUZpeGVkICJicm9rZW4gT3BlbkdMIHNldHVwIiBjb25maWd1cmUgY2hlY2ssIHdoaWNoIHVzZWQgdG8gcmVwb3J0CglmYWxzZSBlcnJvcnMgb24gc29tZSBzeXN0ZW1zLgoKCSogZGxscy93bGRhcDMyL2luaXQuYywgZGxscy93bGRhcDMyL3NlYXJjaC5jLAoJICBkbGxzL3dsZGFwMzIvd2lubGRhcF9wcml2YXRlLmgsIGRsbHMvd2xkYXAzMi93bGRhcDMyLnNwZWM6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCUltcGxlbWVudCBsZGFwX3NlYXJjaF9leHQqIGFuZCBsZGFwX3N0YXJ0X3Rsc19zKiBmdW5jdGlvbnMuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IEZyYW5rIFJpY2h0ZXIgPGZyYW5rLnJpY2h0ZXJAZ21haWwuY29tPgoJVXNlIHRoZW1pbmcgZm9yIHRoZSBMaXN0VmlldyBub24tY2xpZW50IGFyZWEuCgoJKiBkbGxzL2NvbWN0bDMyL2hlYWRlci5jOiBGcmFuayBSaWNodGVyIDxmcmFuay5yaWNodGVyQGdtYWlsLmNvbT4KCUFkZCB0aGVtaW5nIHN1cHBvcnQgZm9yIGhlYWRlciBjb250cm9scy4KCgkqIGRsbHMvdXNlci9tZGkuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVRha2UgaW50byBhY2NvdW50IENTX05PQ0xPU0Ugd2luZG93IGNsYXNzIHN0eWxlIGFuZCBTQ19DTE9TRSBzeXN0ZW0KCW1lbnUgaXRlbSBzdGF0ZSB3aGlsZSBhZGRpbmcgTURJIHN5c3RlbSBtZW51IGJ1dHRvbnMgYW5kIGdlbmVyYXRpbmcKCVdNX1NZU0NPTU1BTkQgbWVzc2FnZXMuCgoJKiBkbGxzL3gxMWRydi9ldmVudC5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJVGFrZSBpbnRvIGFjY291bnQgQ1NfTk9DTE9TRSB3aW5kb3cgY2xhc3Mgc3R5bGUgYW5kIFNDX0NMT1NFIHN5c3RlbQoJbWVudSBpdGVtIHN0YXRlIHdoaWxlIGhhbmRsaW5nIFdNX1gxMURSVl9ERUxFVEVfV0lORE9XIHJlcXVlc3QuCgoJKiBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywKCSAgZGxscy9rZXJuZWwvbHpleHBhbmQuYywgZGxscy9semV4cGFuZC9sejMyLnNwZWMsCgkgIGRsbHMvbHpleHBhbmQvbHpleHBhbmRfbWFpbi5jOgoJU3RldmVuIEVkd2FyZHMgPHN0ZXZlbl9lZDQxNTNAeWFob28uY29tPgoJTW92ZSBhbmQgZm9yd2FyZCBsejMyIGZ1bmN0aW9ucyB0byBrZXJuZWwzMi4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL3RocmVhZC5jOgoJRmVsaXggTmF3b3RobmlnIDxmZWxpeC5uYXdvdGhuaWdAdC1vbmxpbmUuZGU+CglGaXggdGhyZWFkIHRlc3RzIG9uIFdpbk1FLgoKMjAwNS0wNy0yNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvc2hlbGwzMi90ZXN0cy9zdHJpbmcuYzogUGF1bCBWcmllbnMgPFBhdWwuVnJpZW5zQHhzNGFsbC5ubD4KCVNraXAgdGVzdCB0aGF0IGNyYXNoZXMgb24gVzJLL1dpblhQL1cySy4KCgkqIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmMsIGRsbHMvcnBjcnQ0L3JwY19iaW5kaW5nLmMsCgkgIGRsbHMvcnBjcnQ0L3JwY19tZXNzYWdlLmMsIGRsbHMvcnBjcnQ0L3JwY19tZXNzYWdlLmg6CglTdGVmYW4gSHVlaG5lciA8c3RlZmFuQGh1ZWhuZXIub3JnPgoJRml4IHNvbWUgbWlzc2luZy1kZWNsYXJhdGlvbnMgd2FybmluZ3MuCgoJKiBkbGxzL3dpbmVkM2QvZGlyZWN0eC5jLCBkbGxzL3dpbmVkM2QvZHJhd3ByaW0uYywKCSAgZGxscy93aW5lZDNkL3ZlcnRleGJ1ZmZlci5jLCBkbGxzL3dpbmVkM2Qvd2luZWQzZF9tYWluLmMsCgkgIGRsbHMvd2luZWQzZC93aW5lZDNkX3ByaXZhdGUuaDoKCVJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJLSBhZGQgYSBuZXcgc2V0dGluZ3MgZm9yIHZibyBzdXBwb3J0CgktIHVzZSBhIHN0cnVjdCB0byBoYW5kbGUgd2luZWQzZCBzZXR0aW5ncwoJLSBwcmVwYXJlIFZCTyB1c2luZyBzb21lIGFic3RyYWN0aW9uIEFQSXMKCgkqIGRsbHMvdXh0aGVtZS9zeXN0ZW0uYzogRnJhbmsgUmljaHRlciA8ZnJhbmsucmljaHRlckBnbWFpbC5jb20+CglPcGVuVGhlbWVEYXRhKCkgbm93IGFsd2F5cyBzZXRzIHRoZSB3aW5kb3cgdGhlbWUgdG8gdGhlIGhhbmRsZQoJcmV0dXJuZWQgKGV2ZW4gaWYgdGhhdCBpcyBOVUxMKSAtIHByZXZpb3VzbHksIGl0IGNvdWxkIGhhcHBlbiB0aGF0Cgl3aGVuIG5vIHRoZW1lIHdhcyBhY3RpdmUgb3IgdGhlIHRoZW1lIGRhdGEgY291bGQgbm90IGJlIG9wZW5lZCB0aGF0Cgl0aGUgd2luZG93IHRoZW1lIHJlbWFpbmVkIGJlY2FtZSB0aGVuLWRhbmdsaW5nIChhbmQgaGVuY2Ugc3Vic2VxdWVudAoJY2FsbHMgdG8gR2V0V2luZG93VGhlbWUoKSB3b3VsZCByZXR1cm4gdGhhdCBib2d1cyB0aGVtZSkuCgoJKiBkbGxzL3dsZGFwMzIvYmluZC5jLCBkbGxzL3dsZGFwMzIvd2lubGRhcF9wcml2YXRlLmgsCgkgIGRsbHMvd2xkYXAzMi93bGRhcDMyLnNwZWM6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCUltcGxlbWVudCBsZGFwX3Nhc2xfYmluZCogZnVuY3Rpb25zLgoKCSogZGxscy94MTFkcnYvY2xpcGJvYXJkLmMsIGRsbHMveDExZHJ2L2Rlc2t0b3AuYywgZGxscy94MTFkcnYvZGliLmM6CglTdGVmYW4gSHVlaG5lciA8c3RlZmFuQGh1ZWhuZXIub3JnPgoJRml4IG1pc3NpbmctZGVjbGFyYXRpb25zIHdhcm5pbmdzLgoKCSogaW5jbHVkZS9vZGJjaW5zdC5oOiBNYXR0aGV3IERhdmlzb24gPG0uZGF2aXNvbkB2aXJnaW4ubmV0PgoJQWRkZWQgc29tZSBkZWZpbml0aW9ucyB0byBvZGJjaW5zdC5oLgoKCSogZGxscy91eHRoZW1lL2RyYXcuYzogRnJhbmsgUmljaHRlciA8ZnJhbmsucmljaHRlckBnbWFpbC5jb20+CglHZXRUaGVtZUJhY2tncm91bmRDb250ZW50UmVjdCgpIGRvZXMgbm90IHVzZSB0aGUgY29udGVudCBtYXJnaW5zCglhbG9uZSwgaXQgYWxzbyBmYWxscyBiYWNrIHRvIHRoZSBib3JkZXIgc2l6ZSBvciBzaXppbmcgbWFyZ2lucywgYW5kIGlmCglpdCBjYW4ndCBmaW5kIGFueSBwb3NzaWJsZSBtYXJnaW5zIGF0IGFsbCwgaXQgcmV0dXJucyB0aGUgb3JpZ2luYWwKCXJlY3RhbmdsZS4KCgkqIHRvb2xzL3dpbmFwaS93aW5hcGlfcGFyc2VyLnBtOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJTWFrZSB3aW5hcGlfY2hlY2sgbGVhcm4gdG8gcGFyc2Ugc29tZSBjb25zdHJ1Y3RzIHdpdGggc29tZSByYXJlbHkgdXNlZAoJa2V5d29yZHMuCgoJKiBkbGxzL3NoZWxsMzIvdGVzdHMvLmN2c2lnbm9yZSwgZGxscy9zaGVsbDMyL3Rlc3RzL01ha2VmaWxlLmluLAoJICBkbGxzL3NoZWxsMzIvdGVzdHMvc2hlbGwzMl90ZXN0LmgsIGRsbHMvc2hlbGwzMi90ZXN0cy9zaGVsbGxpbmsuYywKCSAgZGxscy9zaGVsbDMyL3Rlc3RzL3NobGV4ZWMuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglHZXQgc3RhcnRlZCB0ZXN0aW5nIFNoZWxsRXhlY3V0ZSgpLgoKCSogZGxscy9yaWNoZWQyMC9lZGl0b3IuYywgZGxscy9yaWNoZWQyMC9lZGl0b3IuaCwKCSAgZGxscy9yaWNoZWQyMC9lZGl0c3RyLmgsIGRsbHMvcmljaGVkMjAvcGFpbnQuYywKCSAgZGxscy9yaWNoZWQyMC9zdHlsZS5jOgoJUGhpbCBLcnlsb3YgPHBoaWxAbmV3c3Rhci5yaW5ldC5ydT4KCUFkZGVkIEVNX0dFVFpPT00gYW5kIEVNX1NFVFpPT00gUmljaEVkaXQgbWVzc2FnZSBoYW5kbGVycy4KCgkqIGRsbHMvY29tbWRsZy9jZGxnMTYuaCwgZGxscy9kZHJhdy9kZHJhd19wcml2YXRlLmgsCgkgIGRsbHMva2VybmVsL3Rvb2xoZWxwLmgsIGRsbHMvc2hlbGwzMi91bmRvY3NoZWxsLmgsIGluY2x1ZGUvbXNpLmgsCgkgIGluY2x1ZGUvb2JqYmFzZS5oLCBpbmNsdWRlL29sZTIuaCwgaW5jbHVkZS9vbGVhdXRvLmgsCgkgIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbmluZXQuaDoKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCVJlbW92ZSBtdWx0aXBsZSBkZWNsYXJhdGlvbnMgb2YgdGhlIHNhbWUgZnVuY3Rpb24sIGtlZXBpbmcgdGhlIHB1YmxpYwoJb25lIGFzIHJlZmVyZW5jZS4KCgkqIGRsbHMvb2xlMzIvY29tcG9iai5zcGVjLCBkbGxzL29sZTMyL21lbWxvY2tieXRlczE2LmMsCgkgIGRsbHMvb2xlMzIvb2xlMTYuYywgZGxscy9vbGUzMi9vbGUyXzE2LmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUltcGxlbWVudGVkIElzVmFsaWRJbnRlcmZhY2UxNiwgQ29NZW1BbGxvYy4KCUFkZGVkIGRlYnVnIHRvIEhHTE9CQUxMb2NrQnl0ZXMxNl9RdWVyeUludGVyZmFjZS4KCgkqIGRsbHMvbnRkbGwvZmlsZS5jOiBWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglVc2UgcHJvcGVyIG1hY3JvIGZvciB1c2luZyBJT0tpdCBpbmNsdWRlcy4KCgkqIHRvb2xzL3dpbmFwaS93aW5hcGlfcGFyc2VyLnBtOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJUmVtb3ZlIG9sZCBzdHVmZiBmcm9tIHdpbmFwaV9jaGVjay4KCjIwMDUtMDctMjIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3dsZGFwMzIvd2xkYXAzMi5zcGVjOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUZpeCB0aGUgbGRhcF9zZWFyY2hfcyBwcm90b3R5cGVzIChyZXBvcnRlZCBieSB3aW5hcGlfY2hlY2spLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gQ2FsbCBTZXRCa01vZGUgd2l0aCB0aGUgY29ycmVjdCB2YWx1ZSBmcm9tIHRoZSBOTVRCQ1VTVE9NRFJBVwoJICBzdHJ1Y3R1cmUuCgktIERvbid0IGZpbGwgdGhlIE5NVEJDVVNUT01EUkFXIHN0cnVjdHVyZSBpbiBhZ2FpbiBmb3IKCSAgQ0REU19QT1NUUEFJTlQuCgktIFJlbW92ZSByZWR1bmRhbnQgYkJ0blRyYW5zcHJudCB2YWx1ZS4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIEhlaWdodCBpcyBub3cgY2FsY3VsYXRlZCBiYXNlZCBvbiB0aGUgbnVtYmVyIG9mIHJvd3MsIG5vdCBvbiB0aGUKCSAgYm91bmRpbmcgcmVjdC4KCS0gT25seSBjYWxsIENhbGNUb29sYmFyIGluIEF1dG9TaXplIGlmIGl0IGhhcyBUQlNUWUxFX1dSQVBBQkxFIG9yCgkgIFRCU1RZTEVfRVhfVU5ET0MxIHNldC4KCS0gUmVtb3ZlIGEgYmFkIHRlc3QgaW4gU2V0QnV0dG9uV2lkdGggdGhhdCBmaXhlcyBhIHJlZ3Jlc3Npb24gZnJvbSB0aGUKCSAgYWJvdmUgY2hhbmdlIGluIElFLgoJLSBSZW1vdmUgdW5uZWNlc3NhcnkgbkhlaWdodCBkYXRhLgoJLSBSZW1vdmUgZHVwbGljYXRlZCBjb2RlIGluIFNpemUgYnkgY2FsbGluZyBBdXRvU2l6ZS4KCS0gUmVtb3ZlIHVubmVjZXNzYXJ5IGJBdXRvU2l6ZSB2YWx1ZSBiZWNhdXNlIFNldFdpbmRvd1BvcyBkb2Vzbid0CgkgIGdlbmVyYXRlIFdNX1NJWkUgd2hlbiB0aGVyZSBpcyBub3RoaW5nIHRvIGRvIG9uIGJvdGggV2luZG93cyBhbmQKCSAgV2luZS4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglUQlNUQVRFX0lOREVURVJNSU5BVEUgb25seSB0YWtlcyBlZmZlY3QgaWYgdGhlIGJ1dHRvbiBpcyBlbmFibGVkLAoJb3RoZXJ3aXNlIGl0IHNob3VsZCBqdXN0IGFwcGVhciBsaWtlIGFueSBvdGhlciBkaXNhYmxlZCBidXR0b24uCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJTmF0aXZlIGF1dG9zaXplcyBvbiBpbnNlcnRpbmcvYWRkaW5nIGJ1dHRvbnMsIHNvIHdlIHNob3VsZCB0b28uCgoJKiBkbGxzL2tlcm5lbC9yZWxheTE2LmMsIGRsbHMvbnRkbGwvcmVsYXkuYzoKCUFkZGVkIHNtYWxsIGFzc2VtYmx5IHdyYXBwZXIgdG8gY2FsbCBlbnRyeSBwb2ludHMgd2l0aG91dCBoYXZpbmcgdG8KCXdvcnJ5IGFib3V0IHRoZWlyIGNhbGxpbmcgY29udmVudGlvbi4KCgkqIGRsbHMvd293MzIvd293X21haW4uYywgaW5jbHVkZS93b3dudDMyLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVR3ZWFrIHNvbWUgcHJvdG90eXBlcyB0byBiZSBjbG9zZXIgdG8gdGhlIFBTREsuCgoJKiB0b29scy93aW5hcGkvd2luMzIuYXBpOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVVwZGF0ZSB3aW4zMi5hcGkgdG8gbWF0Y2ggdGhlIGN1cnJlbnQgc291cmNlcy4KCgkqIGRsbHMvbnRkbGwvdGVzdHMvaW5mby5jOiBQYXVsIFZyaWVucyA8UGF1bC5WcmllbnNAeHM0YWxsLm5sPgoJVXNlIGN1cnJlbnQgcHJvY2VzcyBpZiBhc3NpZ25lZCBwcm9jZXNzIGNhbm5vdCBiZSBvcGVuZWQuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJVGhlIElzVmFsaWRJbWFnZUxpc3QgdGVzdCBpcyBub3QgbmVlZGVkIGJlY2F1c2UgaWYgaXQgaXNuJ3QgYSB2YWxpZAoJaW1hZ2UgbGlzdCB3ZSB3aWxsIGhhdmUgc2V0IHRoZSBiaXRtYXAgd2lkdGggYW5kIGhlaWdodCB0byAxIGFuZCBpdAoJZG9lcyB0aGUgd3JvbmcgdGhpbmcgd2hlbiBubyBidXR0b25zIGFyZSBwcmVzZW50LgoKCSogZGxscy93bGRhcDMyL3dpbmxkYXBfcHJpdmF0ZS5oLCBkbGxzL3dsZGFwMzIvd2xkYXAzMi5oOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglBZGQgaGVscGVyIGZ1bmN0aW9ucyBmb3IgY29udmVydGluZyBMREFQQ29udHJvbCBzdHJ1Y3R1cmVzLgoKCSogZGxscy91c2VyL3dpbnBvcy5jOgoJU3RvcmUgdGhlIFN5c0lQIHByb3BlcnR5IHVzaW5nIGEgc3RyaW5nIHRvIGF2b2lkIHRyb3VibGUgd2l0aCAxNi1iaXQKCWFwcHMgdGhhdCBkb24ndCBleHBlY3QgYW4gYXRvbS4KCgkqIGRsbHMvdXNlci9wcm9wZXJ0eS5jOgoJRml4ZWQgZ2V0X3dpbmRvd19wcm9wZXJ0aWVzIHRvIGNvcnJlY3RseSBzcGVjaWZ5IHRoZSBvdXRwdXQgYnVmZmVyIGluCgl0aGUgc2VydmVyIHJlcXVlc3QgKHNwb3R0ZWQgYnkgTWFyY3VzIE1laXNzbmVyKS4KCgkqIGRsbHMvc2V0dXBhcGkvcGFyc2VyLmM6CglQcmVzZXJ2ZSB0aGUgc3BhY2VzIGJlZm9yZSBhbiBvcGVuaW5nIHF1b3RlIGluIHRoZSBtaWRkbGUgb2YgYSB0b2tlbgoJKHJlcG9ydGVkIGJ5IE1hdHRoZXcgRGF2aXNvbikuCgoJKiBkbGxzL29sZTMyL29sZTIuc3BlYywgZGxscy9vbGUzMi9vbGUyXzE2LmM6CglNYXJjdXMgTWVpc3NuZXIgPG1laXNzbmVyQHN1c2UuZGU+CglBZGRlZCBPbGVTZXRNZW51RGVzY3JpcHRvcjE2IHN0dWIuCgoJKiBkbGxzL29sZTMyL29sZTIuYywgZGxscy9vbGUzMi9vbGUzMi5zcGVjOgoJTWFyY3VzIE1laXNzbmVyIDxtZWlzc25lckBzdXNlLmRlPgoJT2xlSW5pdGlhbGl6ZVdPVyBnZXRzIDIgYXJndW1lbnRzLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCVRoZSBjYWxjdWxhdGVkIGJ1dHRvbiBoZWlnaHQgc2hvdWxkIGluY2x1ZGUgdGhlIHRleHQgaGVpZ2h0IHdoZW4gbm8KCWJ1dHRvbnMgYXJlIHByZXNlbnQuCgoJKiBkbGxzL3dpbnNwb29sL2luZm8uYywgZGxscy93aW5zcG9vbC93aW5zcG9vbC5kcnYuc3BlYywKCSAgaW5jbHVkZS93aW5zcG9vbC5oOgoJSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCB0aGUgdW5kb2N1bWVudGVkIFN0YXJ0RG9jRGxnW0F8V10uICBUaGVzZSB3aWxsIGJlIHVzZWQgYnkKCVN0YXJ0RG9jLgoKCSogZGxscy9tc2kvYXBwc2VhcmNoLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglCYWlsIG91dCBpZiB0aGUgcmVnIGtleSBpcyBlbXB0eS4gVGhpcyBwcmV2ZW50cyB1cyBmcm9tIHdyaXRpbmcKCWdhcmJhZ2UgdG8gdGhlIHByb3BlcnR5IHRhYmxlLgoKCSogZGxscy9yaWNoZWQyMC9ydW4uYzogUGhpbCBLcnlsb3YgPHBoaWxAbmV3c3Rhci5yaW5ldC5ydT4KCUZpeGVkIEVNX0dFVENIQVJGT1JNQVQgZm9yIHNlbGVjdGlvbiBjb250YWluaW5nIGEgc2luZ2xlIGNoYXJhY3Rlci4KCgkqIGRsbHMvcmljaGVkMjAvd3JpdGVyLmM6IFBoaWwgS3J5bG92IDxwaGlsQG5ld3N0YXIucmluZXQucnU+CglGaXhlZCBhbiBvZmYtYnktb25lIGVycm9yIGluIEVNX1NUUkVBTU9VVCBoYW5kbGVyIGZvciBub24tVW5pY29kZQoJcGxhaW4gdGV4dCBvdXRwdXQuCgoJKiBkbGxzL3dpbmVkM2QvZHJhd3ByaW0uYzogR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglSZW1vdmUgdW51c2VkIHZhcmlhYmxlIGluIHByaW1pdGl2ZUNvbnZlcnRUb1N0cmlkZWREYXRhKCkuCgoJKiBkbGxzL3JpY2hlZDIwL2VkaXRvci5jOiBQaGlsIEtyeWxvdiA8cGhpbEBuZXdzdGFyLnJpbmV0LnJ1PgoJQWRkZWQgc29tZSBtaXNzaW5nIGJ1dCB1c2VmdWwgaXRlbXMgdG8gdGhlIFRPRE8gbGlzdC4KCgkqIGRsbHMvb2xlMzIvbWVtbG9ja2J5dGVzMTYuYzogTWFyY3VzIE1laXNzbmVyIDxtZWlzc25lckBzdXNlLmRlPgoJMTZiaXQgQ09NIGludGVyZmFjZXMgYXJlIGNkZWNsLCBub3QgV0lOQVBJLgoKCSogZGxscy93aW5lZDNkL3dpbmVkM2RfbWFpbi5jOgoJUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CgktIGNsZWFudXAgd2luZWQzZCBzZXR0aW5ncyBpbml0IChub3cgY2xvc2luZyBvcGVuZWQgcmVnaXN0cnkga2V5cykKCS0gc3VwcG9ydCBwZXIgYXBwbGljYXRpb24gc2V0dGluZ3MKCgkqIGxpYnMvdW5pY29kZS93Y3RvbWIuYzoKCUZhc3RlciBpbXBsZW1lbnRhdGlvbiBvZiB3Y3N0b21icyB0aGF0IGhhbmRsZXMgb3ZlcmxhcHBpbmcgYnVmZmVycwoJcHJvcGVybHkgKGJhc2VkIG9uIGEgcGF0Y2ggYnkgRG1pdHJ5IFRpbW9zaGtvdikuCgoJKiBkbGxzL3dvdzMyL3dvdzMyLnNwZWMsIGRsbHMvd293MzIvd293X21haW4uYzoKCVdlIGNhbm5vdCB1c2UgZm9yd2FyZHMgYW55bW9yZSBub3cgdGhhdCBrZXJuZWwgZnVuY3Rpb25zIGFyZSBvbmx5CglleHBvcnRlZCBieSBvcmRpbmFsIChyZXBvcnRlZCBieSBNYXJjdXMgTWVpc3NuZXIpLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvbW9kdWxlLmMsIGRsbHMvd2luZWQzZC9kZXZpY2UuYywKCSAgZGxscy93aW5lZDNkL3N1cmZhY2UuYywgZGxscy93aW5lZDNkL3dpbmVkM2RfcHJpdmF0ZS5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBc3NvcnRlZCBzcGVsbGluZyBmaXhlcy4KCgkqIGRsbHMvZGlucHV0L2pveXN0aWNrX2xpbnV4aW5wdXQuYzoKCURhbmllbCBSZW1lbmFrIDxkdHJlbWVuYWtAZ21haWwuY29tPgoJQ29ycmVjdCBkaW5wdXQgaGFuZGxpbmcgb2Ygc2xpZGVycyBhbmQgbm9uLXplcm8tYmFzZWQgYXhlcyB0aHJvdWdoIHRoZQoJbGludXggaW5wdXQgc3lzdGVtLgoKCSogZGxscy94MTFkcnYvb3BlbmdsLmM6IE9saXZlciBTdGllYmVyIDxvbGl2ZXJfc3RpZWJlckB5YWhvby5jby51az4KCUFsbG93IHJ1bm5pbmcgb3BlbmdsIGFuZCBEaXJlY3RYIGFwcGxpY2F0aW9ucyB3aXRob3V0IHN0ZW5jaWwgc3VwcG9ydCwKCWFuIGVhcmxpZXIgcGF0Y2ggYXNzdW1lZCB0aGF0IHN0ZW5jaWwgc3VwcG9ydCB3YXMgYXZhaWxhYmxlLCBidXQgaXQKCWlzbid0IGluIGFsbCBjYXNlcy4KCgkqIGluY2x1ZGUvc2hlbGxhcGkuaDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBzb21lIG1pc3NpbmcgU0VFX01BU0tfKiBmbGFncy4KCgkqIGRsbHMvd2luc3Bvb2wvaW5mby5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCU1ha2UgdGhlIHVuaXN0ZC5oIGluY2x1ZGUgY29uZGl0aW9uYWwuCgoJKiBkbGxzL3JwY3J0NC9ycGNydDQuc3BlYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglGaXggdGhlIE5kclZhcnlpbmdBcnJheVVubWFyc2hhbGwgcHJvdG90eXBlIChyZXBvcnRlZCBieQoJd2luYXBpX2NoZWNrKS4KCgkqIGRsbHMvb2xlMzIvaWZzLmgsIGRsbHMvb2xlMzIvb2xlMTYuYywgZGxscy9vbGUzMi9zdG9yYWdlLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1laXNzbmVyQHN1c2UuZGU+CgkxNmJpdCBpbnRlcmZhY2VzIGFyZSBjZGVjbCwgc28gZHJvcCB0aGUgV0lOQVBJLgoKCSogZGxscy9rZXJuZWwvbmVfbW9kdWxlLmM6CglGZWxpeCBOYXdvdGhuaWcgPGZlbGl4Lm5hd290aG5pZ0B0LW9ubGluZS5kZT4KCUNvbnZlcnQgbG9uZyB0byBzaG9ydCBwYXRoIGluIEdldE1vZHVsZUZpbGVOYW1lMTYuCgoJKiBkbGxzL3dsZGFwMzIvTWFrZWZpbGUuaW4sIGRsbHMvd2xkYXAzMi9zZWFyY2guYywKCSAgZGxscy93bGRhcDMyL3dpbmxkYXBfcHJpdmF0ZS5oLCBkbGxzL3dsZGFwMzIvd2xkYXAzMi5zcGVjOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglJbXBsZW1lbnQgbGRhcF9zZWFyY2gqIGZ1bmN0aW9ucy4KCjIwMDUtMDctMjEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3JpY2hlZDIwL3dyaXRlci5jLCBkbGxzL3dpbmVwcy9kb3dubG9hZC5jLCB0b29scy93aWRsL3BhcnNlci55OgoJU3RlZmFuIEh1ZWhuZXIgPHN0ZWZhbkBodWVobmVyLm9yZz4KCUNoYW5nZSBzb21lIGNoYXIqIHRvIGNvbnN0IGNoYXIqIHRvIGZpeCB3YXJuaWducy4KCgkqIHRvb2xzL3dpbmVkdW1wL2xlLmMsIHRvb2xzL3dpbmVkdW1wL21pbmlkdW1wLmM6CglTdGVmYW4gSHVlaG5lciA8c3RlZmFuQGh1ZWhuZXIub3JnPgoJRml4IHNvbWUgLVdzaWduLWNvbXBhcmUgd2FybmluZ3MuCgoJKiBkbGxzL3JpY2hlZDIwL2VkaXRvci5jOiBQaGlsIEtyeWxvdiA8cGhpbEBuZXdzdGFyLnJpbmV0LnJ1PgoJQWRkZWQgc29tZSB1c2VmdWwgVFJBQ0VzLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvbWlkaW1hcC8uY3ZzaWdub3JlLAoJICBkbGxzL21pZGltYXAvTWFrZWZpbGUuaW4sIGRsbHMvbWlkaW1hcC9taWRpbWFwLmMsCgkgIGRsbHMvbWlkaW1hcC9taWRpbWFwLnNwZWMsIGRsbHMvd2lubW0vd2luZW1tLmgsCgkgIHRvb2xzL3dpbmFwaS93aW4zMi5hcGk6CglS6W1pIEFzc2FpbGx5IDxyZW1pLmFzc2FpbGx5QGZyZWUuZnI+CglNb3ZlZCBtaWRpbWFwIHRvIHRoZSB0b3AtbGV2ZWwgZGxscyBkaXJlY3RvcnkuCgoJKiBkbGxzL3JpY2hlZDIwL2VkaXRvci5jOiBQaGlsIEtyeWxvdiA8cGhpbEBuZXdzdGFyLnJpbmV0LnJ1PgoJQWxsb3cgTlVMTCBwYXJhbWV0ZXIgZm9yIFdNX1NFVFRFWFQgaW4gUmljaEVkaXQuCgoJKiBkbGxzL2tlcm5lbC9yZWxheTE2LmM6CglSZWdpc3RlciBmdW5jdGlvbnMgd2l0aCBubyBhcmd1bWVudHMgc2hvdWxkIHN0aWxsIGJlIGNhbGxlZCBhcyBzdGRjYWxsCgliZWNhdXNlIG9mIHRoZSBleHRyYSBDT05URVhUIGFyZy4KCgkqIGRsbHMvd2xkYXAzMi9NYWtlZmlsZS5pbiwgZGxscy93bGRhcDMyL2luaXQuYywKCSAgZGxscy93bGRhcDMyL3dpbmxkYXBfcHJpdmF0ZS5oLCBkbGxzL3dsZGFwMzIvd2xkYXAzMi5zcGVjOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglJbXBsZW1lbnQgbGRhcF9pbml0KiBhbmQgbGRhcF9vcGVuKiBmdW5jdGlvbnMuCgoJKiBkbGxzL3JpY2hlZDIwL2VkaXRvci5jOiBQaGlsIEtyeWxvdiA8cGhpbEBuZXdzdGFyLnJpbmV0LnJ1PgoJSW1wbGVtZW50ZWQgRU1fTElORUxFTkdUSCBSaWNoRWRpdCBtZXNzYWdlLgoKCSogZGxscy93bGRhcDMyL3dsZGFwMzIuaDogSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglBZGQgaGVscGVyIGZ1bmN0aW9ucyBmb3IgY29udmVydGluZyBzdHJpbmcgYXJyYXlzIGludG8gZGlmZmVyZW50CgllbmNvZGluZ3MuCgoJKiBkbGxzL3dpbmVkM2QvZHJhd3ByaW0uYzogT2xpdmVyIFN0aWViZXIgPG9saXZlcl9zdGllYmVyQHlhaG9vLmNvLnVrPgoJQ29ycmVjdCBhIHByb2JsZW0gd2l0aCB0aGUgd2F5IHRoYXQgRlZGIHZlcnRleCBhcnJheXMgY29udGFpbmluZwoJYmxlbmRzIG9yIG9ydGhvZ3JhcGhpYyBpcyBjYWxjdWxhdGVkLgoKCSogZGxscy9zaGVsbDMyL3NoZmxkcl91bml4ZnMuYzogVHJveSBSb2xsbyA8d2luZUB0cm95LnJvbGxvLm5hbWU+CglSZXR1cm4gYXR0cmlidXRlcyBmb3IgdGhlIGNvcnJlY3QgZmlsZSBpbiB0aGUgdW5peGZzIFBhcnNlRGlzcGxheU5hbWUuCgoJKiBkbGxzL21zdmNydGQvTWFrZWZpbGUuaW4sIGRsbHMvbXN2Y3J0ZC9kZWJ1Zy5jLAoJICBkbGxzL21zdmNydGQvdGVzdHMvZGVidWcuYywgaW5jbHVkZS9tc3ZjcnQvY3J0ZGJnLmg6CglTYXVsaXVzIEtyYXN1Y2thcyA8c2F1bGl1cy5rcmFzdWNrYXNAaWVlZS5vcmc+CgktIERlY2xhcmUgaW1wbGVtZW50ZWQgZnVuY3Rpb25zIGluc2lkZSAjaWZuZGVmIF9ERUJVRyBibG9jay4KCS0gTWFrZSBNU1ZDUlREX29wZXJhdG9yX25ld19kYmcgcmVjb2duaXplIHR5cGVzIG9mIG1lbW9yeSBibG9ja3MuCgoJKiBkbGxzL3JpY2hlZDIwL2NhcmV0LmMsIGRsbHMvcmljaGVkMjAvZWRpdG9yLmMsCgkgIGRsbHMvcmljaGVkMjAvZWRpdHN0ci5oLCBkbGxzL3JpY2hlZDIwL3BhcmEuYywgZGxscy9yaWNoZWQyMC9ydW4uYywKCSAgZGxscy9yaWNoZWQyMC93cml0ZXIuYzoKCVBoaWwgS3J5bG92IDxwaGlsQG5ld3N0YXIucmluZXQucnU+CglBZGRlZCBlbXVsYXRpb24gb2YgUmljaEVkaXQgMS4wIGJlaGF2aW91ciB3aGVuIHRoZSAxLjAgd2luZG93IGNsYXNzIGlzCgliZWluZyB1c2VkLiBUaGlzIGVtdWxhdGlvbiAoaW50cm9kdWNlZCBpbiBNJCBSaWNoRWRpdCAzLjApIGNvdW50cwoJcGFyYWdyYXBoIGVuZGluZ3MgYXMgMiBjaGFyYWN0ZXJzIChDUitMRikgaW5zdGVhZCBvZiAxIChDUikuCgoJKiBpbmNsdWRlL21zaHRtaHN0LmlkbDogSmFtZXMgSGF3a2lucyA8dHJ1aWtlbkBnbWFpbC5jb20+CglEZWZpbmUgdGhlIERPQ0hPU1RVSURCTENMSyBlbnVtZXJhdGlvbi4KCgkqIGRsbHMvd2luZWQzZC9kcmF3cHJpbS5jOiBPbGl2ZXIgU3RpZWJlciA8b2xpdmVyX3N0aWViZXJAeWFob28uY28udWs+CglGaXhlZCByZWdyZXNzaW9uIHRoYXQgb2NjdXJyZWQgYmVjYXVzZSBjaGFuZ2VzIHRvIHRleHR1cmUgbG9hZGluZyB3ZXJlCgljb21taXR0ZWQgYmVmb3JlIGNoYW5nZXMgdG8gdGV4dHVyZXMgYW5kIHN0YXRlcyB0byBzdXBwb3J0IHRoZSBjaGFuZ2UKCXdlcmUgY29tbWl0dGVkLgoKCSogZGxscy9tc2kvZmlsZXMuYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCVVzZSBTT1VSQ0VESVIgaW5zdGVhZCBvZiBQYWNrYWdlUGF0aC4gQmVjYXVzZSB0aGUgUGFja2FnZVBhdGggbWF5IGJlCglsb2NhbCwgd2hpbGUgU09VUkNFRElSIGlzIG1vcmUgcHJvcGVyIGFuZCB3aWxsIGJlIGEgZnVsbCBkaXJlY3RvcnkuCgoyMDA1LTA3LTIwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvc3Rkb2xlMi50bGIvLmN2c2lnbm9yZSwgZGxscy9zdGRvbGUyLnRsYi9NYWtlZmlsZS5pbiwKCSAgZGxscy9zdGRvbGUyLnRsYi9yc3JjLnJjLCBkbGxzL3N0ZG9sZTIudGxiL3N0ZF9vbGVfdjIuaWRsLAoJICBkbGxzL3N0ZG9sZTIudGxiL3N0ZG9sZTIudGxiLnNwZWM6CglIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IHN0ZG9sZTIudGxiLgoKCSogZGxscy93aW5zcG9vbC9pbmZvLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglMb29rdXAgdGhlIHBvcnQgaW4gdGhlIHNwb29sZXIgcmVnaXN0cnkga2V5IGFuZCBtYXAgaXQgdG8gYSB1bml4CglmaWxlbmFtZSBvciBhIHBpcGUgbGlrZSBPcGVuSm9iMTYgZG9lcy4KCgkqIE1ha2UucnVsZXMuaW4sIGZvbnRzLy5jdnNpZ25vcmUsIGZvbnRzL01ha2VmaWxlLmluLCBmb250cy9nZW50dGYuZmY6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+Cgl0dGYgZmlsZXMgZm9yIGJpdG1hcCBmb250cyBzaG91bGQgYmUgZ2VuZXJhdGVkIHdpdGggYW4gZXh0ZW5zaW9uIG9mCglqdXN0ICIuIiB0byB3b3JrIGFyb3VuZCBhIHF1aXJrIGluIGZvbnRmb3JnZSAod2l0aCB0aGFua3MgdG8gR2VvcmdlCglXaWxsaWFtcyBmb3IgaGVscGluZyBtZSBmaXggdGhpcykuCgoJKiBkbGxzL3dsZGFwMzIvYmluZC5jLCBkbGxzL3dsZGFwMzIvd2lubGRhcF9wcml2YXRlLmgsCgkgIGRsbHMvd2xkYXAzMi93bGRhcDMyLnNwZWM6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCUltcGxlbWVudCBsZGFwX3NpbXBsZV9iaW5kKiBhbmQgbGRhcF91bmJpbmQqIGZ1bmN0aW9ucy4KCgkqIGRsbHMvc2hlbGwzMi9zaGZsZHJfdW5peGZzLmM6CglNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglJbml0aWFsIHN1cHBvcnQgZm9yIHRoZSBJUGVyc2lzdEZvbGRlcjMgaW50ZXJmYWNlLgoKCSogZGxscy9vbGVhdXQzMi9vbGVwaWN0dXJlLmMsIGRsbHMvdXNlci9jdXJzb3JpY29uLmMsCgkgIGRsbHMvdXNlci9leHRpY29uLmMsIGRsbHMvdXNlci91c2VyMTYuYywgZGxscy91c2VyL3VzZXJfcHJpdmF0ZS5oLAoJICBpbmNsdWRlL2N1cnNvcmljb24uaDoKCUdldCByaWQgb2YgY3Vyc29yaWNvbi5oLgoKCSogZGxscy9vbGUzMi9zdHVibWFuYWdlci5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglIYWNrIGFyb3VuZCBicm9rZW4gc3RhdGUgbWFuYWdlbWVudCBzbyBJbnN0YWxsU2hpZWxkIHdvcmtzLgoKCSogcHJvZ3JhbXMvd2luaGVscC9Fbi5yYzogRGFuaWVsIFJlbWVuYWsgPGR0cmVtZW5ha0BnbWFpbC5jb20+CglDaGFuZ2VkIHdpbmhlbHAgZmlsZS0+ZXhpdCBhY2NlbGVyYXRvciBrZXkgZnJvbSAiZSIgdG8gIngiLgoKCSogZGxscy92ZXJzaW9uL2luZm8uYywgZGxscy92ZXJzaW9uL3Rlc3RzL2luZm8uYzoKCVBhdWwgVnJpZW5zIDxQYXVsLlZyaWVuc0B4czRhbGwubmw+CglBZGQgdGVzdHMgZm9yIFZlclF1ZXJ5VmFsdWVbQVddLgoJRG9uJ3QgY29udmVydCB0aGUgc3RydWN0IHRvIGEgd2luMTYgb25lIGluIEdldEZpbGVWZXJzaW9uSW5mb0EuCglDb252ZXJ0IHRoZSBzdHJ1Y3QgdG8gd2luMTYgaW4gVmVyUXVlcnlWYWx1ZUEgKGZvciBub3cpLgoKCSogZGxscy9zaGVsbDMyL3NobGZvbGRlci5jOiBNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglPbmx5IGluaXRpYWxpemUgc2hlbGwgZm9sZGVycyB2aWEgdGhlIElQZXJzaXN0Rm9sZGVyMyBpbnRlcmZhY2UgaW4KCVNIRUxMMzJfQ29DcmVhdGVJbml0U0YgaWYgdGhlIHBpZGwgd2hpY2ggc3BlY2lmaWVzIHRoZSBjaGlsZCBpcyBvZgoJdHlwZSAnRm9sZGVyJy4gT3RoZXJ3aXNlIGZhbGwgYmFjayB0byBJUGVyc2lzdEZvbGRlci4KCgkqIGRsbHMvcmljaGVkMjAvZWRpdG9yLmMsIGluY2x1ZGUvcmljaGVkaXQuaDoKCURhbmllbCBSZW1lbmFrIDxkdHJlbWVuYWtAZ21haWwuY29tPgoJQmFzaWMgaGFuZGxpbmcgb2YgRU1fU0VUVEVYVEVYLgoKCSogZGxscy9udGRsbC9jZHJvbS5jOiBWaXRhbGl5IE1hcmdvbGVuIDx3aW5lLXBhdGNoQGtpZXZpbmZvLmNvbT4KCUZpeCBJT0NUTF9DRFJPTV9SQVdfUkVBRCBpb2N0bC4KCjIwMDUtMDctMTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3dsZGFwMzIvTWFrZWZpbGUuaW4sIGRsbHMvd2xkYXAzMi9iaW5kLmMsCgkgIGRsbHMvd2xkYXAzMi93aW5sZGFwX3ByaXZhdGUuaCwgZGxscy93bGRhcDMyL3dsZGFwMzIuaCwKCSAgZGxscy93bGRhcDMyL3dsZGFwMzIuc3BlYzoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJSW1wbGVtZW50IGxkYXBfYmluZCogZnVuY3Rpb25zLgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gRml4IFZUX0JZUkVGfFZUX1VOS05PV04gcmV0dXJuIHZhbHVlcyBieSBjb21wYXJpbmcgdGhlIGNvcnJlY3QgdmFsdWUKCSAgd2l0aCBWVF9VTktOT1dOIGFuZCBWVF9ESVNQQVRDSC4KCS0gQmV0dGVyIHRyYWNpbmcuCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJUmV0dXJuIERJU1BfRV9FWENFUFRJT04gZnJvbSBJVHlwZUluZm9fSW52b2tlIG9uIGFuIGVycm9yIGluIHRoZQoJY2FsbGVkIGZ1bmN0aW9uLgoKCSogZGxscy9vbGVhdXQzMi90bWFyc2hhbC5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIElScGNTdHViQnVmZmVyX0Rpc2Nvbm5lY3QgY2FuIGJlIGNhbGxlZCBtdWx0aXBsZSB0aW1lcy4KCS0gUmVsZWFzZSBUeXBlTGliIHdoZW4gZnJlZWluZyBzdHViIGJ1ZmZlci4KCgkqIGRsbHMvb2xlMzIvbWFyc2hhbC5jLCBkbGxzL29sZTMyL3N0dWJtYW5hZ2VyLmM6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIEFsd2F5cyBxdWVyeSBmb3IgdGhlIGNvcnJlY3Qgc3R1YiBpbnRlcmZhY2UsIG90aGVyd2lzZSB3ZSB3aWxsIGJlCgkgIHBvaW50aW5nIHRvIHRoZSBjb21wbGV0ZWx5IHdyb25nIG9iamVjdCB3aGVuIGEgcHJveHkgZG9lcyBhCgkgIHF1ZXJ5aW50ZXJmYWNlLgoJLSBSZW1vdmUgYXNzdW1wdGlvbiB0aGF0IHRoZSBzdHViIGJ1ZmZlciB3aWxsIGhhbmRsZSB0aGUgbGlmZXRpbWUgb2YKCSAgdGhlIG9iamVjdC4KCgkqIHNlcnZlci9jbGFzcy5jOgoJQ3JlYXRlIHRoZSBkZXNrdG9wIGNsYXNzIHdoZW4gbmVlZGVkIHdpdGhvdXQgcmVxdWlyaW5nIGEgY2xpZW50CglyZXF1ZXN0LgoKCSogZGxscy9vbGVhdXQzMi9vbGVhdXQuYywgZGxscy9vbGVhdXQzMi9yZWdzdnIuYzoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUFjdGl2YXRlIElUeXBlTGliLCBJVHlwZUluZm8gYW5kIElFbnVtVkFSSUFOVCBNYXJzaGFsZXJzLgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZSBSZWdpc3RlclR5cGVMaWIgaGFjay4KCgkqIGRsbHMvb2xlMzIvb2xlcHJveHkuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJTWFyc2hhbCByZXR1cm4gdmFsdWUgZnJvbSBJUmVtVW5rbm93bl9SZW1RdWVyeUludGVyZmFjZS4KCgkqIGRsbHMvb2xlYXV0MzIvdG1hcnNoYWwuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJRml4IGNvbmZ1c2lvbiBiZXR3ZWVuIG51bWJlciBvZiBjaGFyYWN0ZXJzIGFuZCBudW1iZXIgb2YgYnl0ZXMgaW4KCXVubWFyc2hhbGluZyBCU1RScy4gQ29udmVydCBpdCBhbGwgdG8gY2hhcmFjdGVycyBmb3IgY29uc2lzdGVuY3kgd2l0aAoJdGhlIEJTVFJfVXNlciogcm91dGluZXMuCgoJKiBkbGxzL29sZTMyL3JwYy5jLCBkbGxzL29sZTMyL3N0dWJtYW5hZ2VyLmM6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglTaWxlbmNlIG5vdyBub2lzeSBlcnJvciBtZXNzYWdlcyBjYXVzZWQgYnkgY2hhbmdlcyBpbiB0aGUgd2F5IHdlIGNhbGwKCWlwaWRfdG9fc3R1Ym1hbmFnZXIuIE1vdmUgdGhlIGVycm9yIG1lc3NhZ2UgdG8gdGhlIG9uZSBwbGFjZSBpdCBpcwoJbmVlZGVkLgoKCSogZGxscy91c2VyL21lc3NhZ2UuYzoKCVNhdmUgdGhlIHNjb3BlIHdpbmRvdyBmb3IgbW91c2UgZXZlbnRzIGJlZm9yZSBvdmVyd3JpdGluZyBpdC4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglTdXBwb3J0IFZUX0JZUkVGfFZUX0k0IGluIF9jb3B5X2FyZy4KCgkqIGRsbHMvb2xlYXV0MzIvdG1hcnNoYWwuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJTWFyc2hhbCBhbmQgdW5tYXJzaGFsIFRLSU5EX0VOVU0gYW5kIFRLSU5EX0FMSUFTLgoKCSogZGxscy9vbGUzMi9vbGVwcm94eS5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIFdlIHNob3VsZCBiZSBzdGFydGluZyB3aXRoIDEgcmVmZXJlbmNlLgoJLSBJUnBjU3R1YkJ1ZmZlcl9EaXNjb25uZWN0IGNhbiBiZSBjYWxsZWQgbW9yZSB0aGFuIG9uY2UuCgoJKiBkbGxzL3JwY3J0NC9jc3R1Yi5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglJUnBjU3R1YkJ1ZmZlcl9EaXNjb25uZWN0IGNhbiBiZSBjYWxsZWQgbW9yZSB0aGFuIG9uY2UuCgoJKiBkbGxzL29sZTMyL3JwYy5jLCBkbGxzL29sZTMyL3Rlc3RzL21hcnNoYWwuYzoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUJ5LXBhc3MgdGhlIFJQQyBydW50aW1lIGlmIHBvc3NpYmxlIHdoZW4gY2FsbGluZyBhbiBTVEEgYnkgcG9zdGluZyBhCgltZXNzYWdlIGRpcmVjdGx5IHRvIHRoZSBhcGFydG1lbnQgd2luZG93IGZvciBpdCB0byBwcm9jZXNzLiBGaXhlcyBhCglkZWFkbG9jayBpbiBJbnN0YWxsU2hpZWxkIGNhdXNlZCBieSBoYXZpbmcgdG8gY3JlYXRlIGEgdGhyZWFkIHdoZW4KCWZyZWVpbmcgYW4gb2JqZWN0IHRoYXQgY29tZXMgZnJvbSBhbiBTVEEgYXBhcnRtZW50LiBBZGRlZCB0ZXN0cyB0aGF0CglmYWlsIHdpdGhvdXQgdGhpcyBmaXguCgoJKiBkbGxzL29sZTMyL3N0dWJtYW5hZ2VyLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCURlbGV0ZSB0aGUgc3R1YiBtYW5hZ2VyIG91dHNpZGUgb2YgdGhlIGFwYXJ0bWVudCBjcml0aWNhbCBzZWN0aW9uCgliZWNhdXNlIHRoZSBkZWxldGlvbiBtYXkgcmVxdWlyZSB0aGUgb2JqZWN0IHRvIHJlLWVudGVyIHRoZQoJYXBhcnRtZW50LgoKCSogZGxscy93aW5zcG9vbC9pbmZvLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglQcmludGVyIGhhbmRsZXMgcmVmZXJyaW5nIHRvIHRoZSBzYW1lIHByaW50ZXIgc2hvdWxkIGhhdmUgdGhlIHNhbWUgam9iCglxdWV1ZS4KCgkqIGRsbHMvdXNlci9jb250cm9scy5oLCBkbGxzL3VzZXIvbWVudS5jLCBkbGxzL3VzZXIvdXNlcl9tYWluLmMsCgkgIGRsbHMvdXNlci93aW4uYzoKCUluaXRpYWxpemUgdGhlIHZhcmlvdXMgbWVudSBnbG9iYWwgdmFyaWFibGVzIG9uIGRlbWFuZCBpbnN0ZWFkIG9mIGF0CglzdGFydHVwIHRpbWUuCgoJKiB0b29scy93aW5lZHVtcC9wZS5jOiBLZXZpbiBLb2x0emF1IDxrZXZpbkBwbG9wLm9yZz4KCUFkZCBzdXBwb3J0IGZvciBkdW1waW5nIDY0Yml0IFBFIGZpbGVzLgoKCSogZGxscy9udGRsbC9sb2FkZXIuYywgaW5jbHVkZS93aW5udC5oOiBLZXZpbiBLb2x0emF1IDxrZXZpbkBwbG9wLm9yZz4KCURlZmluZSA2NGJpdCBQRSBzdHJ1Y3R1cmVzLgoKCSogZGxscy94MTFkcnYvd2luZG93LmM6CglEb24ndCBzZXQgd2luIGdyYXZpdHksIHRoZSBkZWZhdWx0IHNob3VsZCB3b3JrIGZpbmUuCgoJKiBkbGxzL3NoZWxsMzIvc2hmbGRyX3VuaXhmcy5jOiBUcm95IFJvbGxvIDx3aW5lQHRyb3kucm9sbG8ubmFtZT4KCVdoZW4gdXNpbmcgUEFUSE1PREVfVU5JWCwgYWxsIGZpbGVzIGFyZSBpbiB0aGUgZmlsZSBzeXN0ZW0uCgoJKiBkbGxzL29sZTMyL2NvbXBvYmouYzogQWxleCBWaWxsYWPtcyBMYXNzbyA8YV92aWxsYWNpc0BwYWxvc2FudG8uY29tPgoJSW5pdGlhbGl6ZSBSZWdpc3RlcmVkQ2xhc3MgcHJvcGVybHkgaW4gQ29SZWdpc3RlckNsYXNzT2JqZWN0IHRvCglwcmV2ZW50IGNyYXNoIGluIENvUmV2b2tlQ2xhc3NPYmplY3Qgd2hlbiBhY2Nlc3NpbmcgKHVuaW5pdGlhbGl6ZWQpCglwTWFyc2hhbGxlZERhdGEuCgoJKiBkbGxzL3dpbmVkM2QvZGV2aWNlLmMsIGRsbHMvd2luZWQzZC93aW5lZDNkX3ByaXZhdGUuaDoKCU9saXZlciBTdGllYmVyIDxvbGl2ZXJfc3RpZWJlckB5YWhvby5jby51az4KCUltcGxlbWVudCB0aGUgdXNlIG9mIFBCdWZmZXJzIGZvciBvZmZzY3JlZW4gdGV4dHVyZXMuCgoJKiBkbGxzL29sZWF1dDMyL29sZXBpY3R1cmUuYzoKCUFsZXggVmlsbGFj7XMgTGFzc28gPGFfdmlsbGFjaXNAcGFsb3NhbnRvLmNvbT4KCUZpeCBHSUYgcGFsZXR0ZSBhbGxvY2F0aW9uLCBieSByZWx5aW5nIG9uIENvbG9yQ291bnQgaW5zdGVhZCBvZgoJU0NvbG9yUmVzb2x1dGlvbi4KCgkqIGRsbHMvb2xlYXV0MzIvdGVzdHMvdmFydHlwZS5jLCBkbGxzL29sZWF1dDMyL3ZhcnR5cGUuYzoKCUFsZXggVmlsbGFj7XMgTGFzc28gPGFfdmlsbGFjaXNAcGFsb3NhbnRvLmNvbT4KCUVuc3VyZSB0aGF0IHVuZGVyZmxvd2luZyBuZWdhdGl2ZSBmbG9hdCBpcyByZXByZXNlbnRlZCBhcyBhIHBvc2l0aXZlCgkwLCBqdXN0IGFzIG5hdGl2ZSBvbGVhdXQzMi4KCjIwMDUtMDctMTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2dkaS90ZXN0cy9nZGlvYmouYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCVRlc3QgdG8gc2hvdyB0aGF0IHRoZSBoZWlnaHQgcmV0dXJuZWQgYnkgR2V0VGV4dEV4dGVudFBvaW50IGlzIHRoZQoJc2FtZSBhcyB0bUhlaWdodC4KCgkqIGRsbHMvd2xkYXAzMi9NYWtlZmlsZS5pbiwgZGxscy93bGRhcDMyL2Jlci5jLAoJICBkbGxzL3dsZGFwMzIvd2xkYXAzMi5zcGVjOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglJbXBsZW1lbnQgYmVyXyogZnVuY3Rpb25zLgoKCSogaW5jbHVkZS93aW5jcnlwdC5oOiBKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglBZGRlZCBhIGJ1bmNoIG1vcmUgZGVmaW5pdGlvbnMuCgoJKiBkbGxzL3VzZXIvY29udHJvbHMuaCwgZGxscy91c2VyL2RpYWxvZy5jLCBkbGxzL3VzZXIvZGlhbG9nMTYuYywKCSAgZGxscy91c2VyL21lbnUuYzoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlcGxhY2UgY2FsbHMgdG8gRElBTE9HX0dldENoYXJTaXplIHdpdGggY29kZSB0byBkbyB0aGUgZXF1aXZhbGVudAoJdXNpbmcgR2RpR2V0Q2hhckRpbWVuc2lvbnMuCgoJKiBkbGxzL2dkaS9mb250LmMsIGRsbHMvZ2RpL2dkaTMyLnNwZWMsIGRsbHMvZ2RpL3Rlc3RzL2dkaW9iai5jLAoJICBpbmNsdWRlL3dpbmdkaS5oOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IGFuZCB0ZXN0IEdkaUdldENoYXJEaW1lbnNpb25zLgoKCSogZGxscy90dHlkcnYvTWFrZWZpbGUuaW4sIGRsbHMvdHR5ZHJ2L3VzZXIuYywKCSAgZGxscy90dHlkcnYvd2luZXR0eS5kcnYuc3BlYzoKCVJlbW92ZSBzb21lIG5vIGxvbmdlciBuZWVkZWQgc3R1YiBmdW5jdGlvbnMuCgoJKiBkbGxzL3VzZXIvTWFrZWZpbGUuaW4sIGRsbHMvdXNlci9jbGlwYm9hcmQuYywgZGxscy91c2VyL2N1cnNvcmljb24uYywKCSAgZGxscy91c2VyL2RlZnduZC5jLCBkbGxzL3VzZXIvZGlzcGxheS5jLCBkbGxzL3VzZXIvZHJpdmVyLmMsCgkgIGRsbHMvdXNlci9mb2N1cy5jLCBkbGxzL3VzZXIvaW5wdXQuYywgZGxscy91c2VyL21lc3NhZ2UuYywKCSAgZGxscy91c2VyL25vbmNsaWVudC5jLCBkbGxzL3VzZXIvcGFpbnRpbmcuYywgZGxscy91c2VyL3N5c3BhcmFtcy5jLAoJICBkbGxzL3VzZXIvdXNlcl9tYWluLmMsIGRsbHMvdXNlci91c2VyX3ByaXZhdGUuaCwgZGxscy91c2VyL3dpbi5jLAoJICBkbGxzL3VzZXIvd2lucG9zLmM6CglMb2FkIHRoZSBVU0VSIGRyaXZlciBvbiBkZW1hbmQgaW5zdGVhZCBvZiBhdCB1c2VyMzIgbG9hZCB0aW1lLgoJUHJvdmlkZSBhIGZhbGxiYWNrIGltcGxlbWVudGF0aW9uIGZvciBhbGwgdGhlIGZ1bmN0aW9ucyB0byBhdm9pZAoJaGF2aW5nIHRvIGNoZWNrIGZvciBOVUxMIGZ1bmN0aW9ucyBldmVyeXdoZXJlLgoKCSogZGxscy9tc2Ntcy9oYW5kbGUuYywgZGxscy9tc2Ntcy9pY2MuYywgZGxscy9tc2Ntcy9tc2Ntc19wcml2LmgsCgkgIGRsbHMvbXNjbXMvcHJvZmlsZS5jLCBkbGxzL21zY21zL3RyYW5zZm9ybS5jOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglNYWtlIGxjbXMgc3VwcG9ydCBkZXBlbmQgb24gaGVhZGVycyBfYW5kXyBsaWJyYXJpZXMsIG5vdCBqdXN0IHRoZQoJaGVhZGVycy4KCgkqIGRsbHMvYWR2YXBpMzIvYWR2YXBpMzIuc3BlYywgZGxscy9hZHZhcGkzMi9yZWdpc3RyeS5jLAoJICBpbmNsdWRlL3dpbnJlZy5oOgoJRmVsaXggTmF3b3RobmlnIDxmZWxpeC5uYXdvdGhuaWdAdC1vbmxpbmUuZGU+CglJbXBsZW1lbnQgUmVnR2V0VmFsdWVBL1cuCgoJKiBkbGxzL250ZGxsL250LmMsIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwgc2VydmVyL3Byb3RvY29sLmRlZiwKCSAgc2VydmVyL3JlZ2lzdHJ5LmMsIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci9zZWN1cml0eS5oLAoJICBzZXJ2ZXIvdG9rZW4uYywgc2VydmVyL3RyYWNlLmM6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIENoYW5nZSB0aGUgZGVmYXVsdCB1c2VyIFNJRCB0byBtYXRjaCB3aGF0IHdhcyBwcmV2aW91c2x5IHJldHVybmVkIGJ5CgkgIE50UXVlcnlJbmZvcm1hdGlvblRva2VuLgoJLSBJbXBsZW1lbnQgVG9rZW5Vc2VyIGZvciBOdFF1ZXJ5SW5mb3JtYXRpb25Ub2tlbi4KCS0gQWRkIGEgZnVuY3Rpb24gZm9yIGdldHRpbmcgdGhlIHVzZXIncyByZWdpc3RyeSBwYXRoIGZyb20gYSBTSUQuCgoJKiBkbGxzL3VzZXIvc3lzcGFyYW1zLmMsIGRsbHMvdXNlci91c2VyX21haW4uYywKCSAgZGxscy91c2VyL3VzZXJfcHJpdmF0ZS5oLCBkbGxzL3gxMWRydi9jbGlwYm9hcmQuYywgZGxscy94MTFkcnYvZGNlLmMsCgkgIGRsbHMveDExZHJ2L3NldHRpbmdzLmMsIGRsbHMveDExZHJ2L3dpbmRvdy5jLAoJICBkbGxzL3gxMWRydi93aW5leDExLmRydi5zcGVjOgoJRml4ZWQgYSBmZXcgcHJvdG90eXBlcyBpbiB0aGUgVVNFUiBkcml2ZXIuCgoJKiBkbGxzL3JwY3J0NC9uZHJfbWFyc2hhbGwuYywgZGxscy9ycGNydDQvcnBjcnQ0LnNwZWM6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglBZGQgc3R1YnMgZm9yIG1vc3Qgb2YgdGhlIE5EUiBtYXJzaGFsaW5nIGZ1bmN0aW9ucy4KCgkqIGRsbHMvc2hlbGwzMi9zaGZsZHJfdW5peGZzLmM6CglNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglVc2UgQ1BfVU5JWENQIGluc3RlYWQgb2YgQ1BfQUNQIHdoZW4gY29udmVydGluZyBwYXRocyAoUG9pbnRlZCBvdXQgYnkKCVRyb3kgUm9sbG8pLgoKCSogZGxscy93aW5zcG9vbC9pbmZvLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglQYXJ0aWFsIGltcGxlbWVudGF0aW9uIG9mIEdldEpvYi4KCgkqIGRsbHMvc2hlbGwzMi9jbGFzc2VzLmM6IE1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCVJlbGVhc2Ugc2hlbGwgZm9sZGVycyBvbmx5IGlmIHRoZXkgd2VyZSBzdWNjZXNzZnVsbHkgYWNxdWlyZWQuCgoJKiBkbGxzL29sZWF1dDMyL3Rlc3RzL3ZhcnR5cGUuYzoKCUFsZXggVmlsbGFj7XMgTGFzc28gPGFfdmlsbGFjaXNAcGFsb3NhbnRvLmNvbT4KCVRlc3QgZm9yIGJlaGF2aW9yIG9mIG5lZ2F0aXZlIHVuZGVyZmxvdyBmb3JtYXR0aW5nLgoKCSogZGxscy93aW5lZDNkL2RldmljZS5jOiBPbGl2ZXIgU3RpZWJlciA8b2xpdmVyX3N0aWViZXJAeWFob28uY28udWs+CglJbXBsZW1lbnRlZCBhIHRpZGllZCB1cCBJV2luZUQzRGV2aWNlX0NvbG9yRmlsbC4KCgkqIGRsbHMvY29tY3RsMzIvTWFrZWZpbGUuaW4sIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmM6CglGcmFuayBSaWNodGVyIDxmcmFuay5yaWNodGVyQGdtYWlsLmNvbT4KCUVuYWJsZWQgInRhYiIgZGlhbG9nIHRleHR1cmUgZm9yIHByb3BlcnR5IHNoZWV0IHBhZ2VzLgoKCSogZGxscy9hZHZhcGkzMi90ZXN0cy9yZWdpc3RyeS5jOgoJRmVsaXggTmF3b3RobmlnIDxmZWxpeC5uYXdvdGhuaWdAdC1vbmxpbmUuZGU+CglSZXdyb3RlIHRoZSBSZWdHZXRWYWx1ZSB0ZXN0cyBmb3IgUkVHX1NaIC8gUkVHX0VYUEFORF9TWi4KCgkqIGRsbHMvdXNlci9zeXNwYXJhbXMuYzoKCUxvYWQgc3lzdGVtIG1ldHJpY3Mgb24gZGVtYW5kIGluc3RlYWQgb2YgaW5pdGlhbGl6aW5nIGV2ZXJ5dGhpbmcgYXQKCXVzZXIzMiBsb2FkIHRpbWUuCgoJKiBkbGxzL21zaHRtbC9NYWtlZmlsZS5pbiwgZGxscy9tc2h0bWwvbXNodG1sX3ByaXZhdGUuaCwKCSAgZGxscy9tc2h0bWwvb2xlb2JqLmMsIGRsbHMvbXNodG1sL29sZXduZC5jLAoJICBkbGxzL21zaHRtbC90ZXN0cy9odG1sZG9jLmMsIGRsbHMvbXNodG1sL3ZpZXcuYzoKCUphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CgktIEFkZGVkIG1vcmUgdGVzdHMuCgktIE1ha2UgdGVzdHMgcGFzcyB1bmRlciBXaW5lLgoKCSogZGxscy91c2VyL3VzZXIzMi5zcGVjLCBkbGxzL3VzZXIvd2luLmM6CglGZWxpeCBOYXdvdGhuaWcgPGZlbGl4Lm5hd290aG5pZ0B0LW9ubGluZS5kZT4KCUFkZCBzdHViIGZvciBTZXRMYXllcmVkV2luZG93QXR0cmlidXRlcy4KCgkqIGluY2x1ZGUvb2RiY2luc3QuaDogSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglGaXggc29tZSAtV21pc3NpbmctZGVjbGFyYXRpb25zIHdhcm5pbmdzLgoKCSogZGxscy9zaGVsbDMyL3NoZmxkci5oLCBkbGxzL3NoZWxsMzIvc2hmbGRyX2ZzLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGZsZHJfdW5peGZzLmM6CglNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglBcHBlbmQgZmlsZW5hbWUgZXh0ZW5zaW9uIGlmIG5lY2Vzc2FyeSBpbiBJU2hlbGxGb2xkZXI6OlNldE5hbWVPZi4KCgkqIGxpYnMvcG9ydC9pbnRlcmxvY2tlZC5jOiBLZXZpbiBLb2x0emF1IDxrZXZpbkBwbG9wLm9yZz4KCUFkZCB4ODZfNjQgaW50ZXJsb2NrZWQgZnVuY3Rpb25zLgoKCSogaW5jbHVkZS9iYXNldHNkLmgsIGluY2x1ZGUvd2lubnQuaDogS2V2aW4gS29sdHphdSA8a2V2aW5AcGxvcC5vcmc+CglEZWZpbmUgeDg2XzY0IGNvbnRleHQuCgoJKiBkbGxzL3NlY3VyMzIvc2VjdXIzMi5jLCBkbGxzL3NlY3VyMzIvc2VjdXIzMi5zcGVjLAoJICBpbmNsdWRlL250c2VjYXBpLmg6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCVN0dWIgaW1wbGVtZW50YXRpb25zIGZvciBHZXRVc2VyTmFtZUV4e0EsV30sIFRyYW5zbGF0ZU5hbWV7QSxXfSwKCUxzYUNhbGxBdXRoZW50aWNhdGlvblBhY2thZ2UsIExzYUNvbm5lY3RVbnRydXN0ZWQgYW5kCglMc2FEZXJlZ2lzdGVyTG9nb25Qcm9jZXNzLgoKCSogZGxscy90YXBpMzIvbGluZS5jLCBpbmNsdWRlL3RhcGkuaDogSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglGaXggcG9pbnRlciBzaWduZWRuZXNzIGFuZCBtaXNzaW5nIGRlY2xhcmF0aW9ucyB3YXJuaW5ncy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaSBQYXVuIDxkaW1pQGxhdHRpY2EuY29tPgoJU2lsZW5jZSB1bmluaXRpYWxpemVkIHdhcm5pbmdzLgoKCSogaW5jbHVkZS9tc2NhdC5oLCBpbmNsdWRlL3dpbnNwb29sLmg6IEhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJRml4IHNvbWUgLVdtaXNzaW5nLWRlY2xhcmF0aW9ucyB3YXJuaW5ncy4KCgkqIGRsbHMvd3NvY2szMi9zZXJ2aWNlLmMsIGRsbHMvd3NvY2szMi93c29jazMyLnNwZWMsIGluY2x1ZGUvbnNwYXBpLmg6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCVN0dWJzIGZvciBHZXRBZGRyZXNzQnlOYW1le0EsV30uCgoJKiBwcm9ncmFtcy93aW5ldGVzdC9NYWtlZmlsZS5pbjogSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglJbmNsdWRlIHRoZSBtc2h0bWwgdGVzdC4KCgkqIGRsbHMvdXNlci90ZXN0cy93aW5zdGF0aW9uLmM6IFBhdWwgVnJpZW5zIDxQYXVsLlZyaWVuc0B4czRhbGwubmw+CglEb24ndCBydW4gdGVzdHMgb24gcGxhdGZvcm1zIHRoYXQgZG9uJ3Qgc3VwcG9ydCBXaW5kb3dTdGF0aW9uIGNhbGxzLgoKCSogZGxscy9tc2Ntcy90ZXN0cy9wcm9maWxlLmM6IFBhdWwgVnJpZW5zIDxQYXVsLlZyaWVuc0B4czRhbGwubmw+CglTZXQgc2l6ZSBiZWZvcmUgY2FsbGluZyBwU2V0Q29sb3JQcm9maWxlRWxlbWVudC4KCgkqIGRsbHMvYWR2YXBpMzIvdGVzdHMvcmVnaXN0cnkuYzoKCUZlbGl4IE5hd290aG5pZyA8ZmVsaXgubmF3b3RobmlnQHQtb25saW5lLmRlPgoJRml4IHJlZ2lzdHJ5IHRlc3RzIG9uIFdpbjk1LgoKCSogZGxscy91cmxtb24vdW1vbi5jOiBGZWxpeCBOYXdvdGhuaWcgPGZlbGl4Lm5hd290aG5pZ0B0LW9ubGluZS5kZT4KCUZpeCBtaXN1c2Ugb2YgVXJsQ29tYmluZVcuCgoJKiBkbGxzL2FkdmFwaTMyL2NyeXB0LmMsIGluY2x1ZGUvd2luY3J5cHQuaDoKCUp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCUFkZC9jb3JyZWN0IGEgY291cGxlIGRlZmluaXRpb25zLCBhbGxvdyBoYXNoaW5nIG5vdGhpbmcuCgoJKiBkbGxzL3dpbmVkM2QvYmFzZXRleHR1cmUuYywgZGxscy93aW5lZDNkL2RyYXdwcmltLmM6CglPbGl2ZXIgU3RpZWJlciA8b2xpdmVyX3N0aWViZXJAeWFob28uY28udWs+CglTZXQgbWlwbWFwIGxldmVscyBjb3JyZWN0bHkgKGV2ZW4gd2l0aCBBVEkncyBidWdneSBkcml2ZXJzKS4KCgkqIGRsbHMvd2luZWQzZC9kZXZpY2UuYzogT2xpdmVyIFN0aWViZXIgPG9saXZlcl9zdGllYmVyQHlhaG9vLmNvLnVrPgoJRGlydHkgdGhlIHN1cmZhY2UgKGluc3RlYWQgb2YgdGhlIHRleHR1cmUpIHdoZW4gYSByZW5kZXIgdGFyZ2V0cyBpcwoJc2VuZCBhbmQgZW5kc2NlbmUgaXMgY2FsbGVkIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBjb3JyZWN0IHN1cmZhY2UgaXMKCXVwZGF0ZWQuCgoJKiBkbGxzL21zaHRtbC90ZXN0cy9wcm90b2NvbC5jOgoJRmVsaXggTmF3b3RobmlnIDxmZWxpeC5uYXdvdGhuaWdAdC1vbmxpbmUuZGU+CglTa2lwIGZ1dGlsZSB0ZXN0cyBpZiBDb0dldENsYXNzT2JqZWN0IGZhaWxzLgoKMjAwNS0wNy0xNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL3dsZGFwMzIvTWFrZWZpbGUuaW4sCgkgIGluY2x1ZGUvY29uZmlnLmguaW46CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCUNvbmZpZ3VyZSBjaGVja3MgZm9yIE9wZW5MREFQIGhlYWRlcnMgYW5kIGxpYnJhcmllcy4KCgkqIGRsbHMvdXNlci9zeXNwYXJhbXMuYzoKCUFkZGVkIGEgYnVuY2ggb2YgdXRpbGl0eSBmdW5jdGlvbnMgdG8gZmFjdG9yIG91dCBhIGxvdCBvZiB0aGUgcmVwZWF0ZWQKCWNvZGUgaW4gU3lzdGVtUGFyYW1ldGVyc0luZm9XLgoKCSogZGxscy9kc291bmQvdGVzdHMvZHMzZC5jLCBkbGxzL2Rzb3VuZC90ZXN0cy9kc291bmQ4LmMsCgkgIGRsbHMveDExZHJ2L3hyZW5kZXIuYzoKCVN0ZWZhbiBIdWVobmVyIDxzdGVmYW5AaHVlaG5lci5vcmc+CglGaXggc29tZSBzaWduLWNvbXBhcmUgd2FybmluZ3MgYnkgY2hvb3NpbmcgY29ycmVjdCBkYXRhdHlwZXMuCgoJKiBkbGxzL3dpbm1tL3dpbmVuYXMvYXVkaW8uYywgZGxscy94MTFkcnYvc2Nyb2xsLmM6CglTdGVmYW4gSHVlaG5lciA8c3RlZmFuQGh1ZWhuZXIub3JnPgoJQWRkIHNvbWUgY29uc3RzIHRvIGZpeCBkaXNjYXJkLXF1YWwgd2FybmluZ3MuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9jb2RlcGFnZS5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBhIHRlc3QgZm9yIGhhbmRsaW5nIG92ZXJsYXBwZWQgYnVmZmVycyBieSBXaWRlQ2hhclRvTXVsdGlCeXRlLgoKCSogZGxscy92ZXJzaW9uL3Rlc3RzL2luZm8uYzogUGF1bCBWcmllbnMgPHBhdWwudnJpZW5zQHhzNGFsbC5ubD4KCUFkZGVkIGEgdGVzdCwgc3BlY2lmaWNhbGx5IGZvciBOVC9XMksvWFAvVzJLMy4KCgkqIGRsbHMvdXh0aGVtZS9kcmF3LmMsIGRsbHMvdXh0aGVtZS9zeXN0ZW0uYzoKCUZyYW5rIFJpY2h0ZXIgPGZyYW5rLnJpY2h0ZXJAZ21haWwuY29tPgoJTWFrZSBkaWFsb2cgdGhlbWUgdGV4dHVyZSBzZXR0aW5nIG5vbi1nbG9iYWwgKGllIGEgcGVyLXdpbmRvdwoJc2V0dGluZykuCgoJKiBkbGxzL3dpbmVkM2QvZGV2aWNlLmM6IE9saXZlciBTdGllYmVyIDxvbGl2ZXJfc3RpZWJlckB5YWhvby5jby51az4KCUZpeGVkIGEgZGl2aXNpb24gYnkgMCBpbiBzZXR1cF9saWdodCB0aGF0IG9jY3VycyB3aXRoIHJhbmdlIGlzIHplcm8uCgoJKiBkbGxzL3VzZXIvbm9uY2xpZW50LmMsIGluY2x1ZGUvd2luZ2RpLmg6CglGcmFuayBSaWNodGVyIDxmcmFuay5yaWNodGVyQGdtYWlsLmNvbT4KCUFkZCBzdXBwb3J0IGZvciBkcmF3aW5nIGdyYWRpZW50IGNhcHRpb25zLgoKCSogZGxscy9udGRsbC9oZWFwLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBdm9pZCB1bm5lY2Vzc2FyeSBjYXN0cy4KCgkqIGluY2x1ZGUvd2ludXNlci5oOgoJU29ydCB0aGUgU1BJXyogY29uc3RhbnRzIGFuZCByZW1vdmUgc29tZSBkdXBsaWNhdGVzLgoKCSogZGxscy9zaGVsbDMyL3NoZmxkcl91bml4ZnMuYzoKCU1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCUFkZCBmaWxlIHR5cGUgY29sdW1uIGluIGRldGFpbGVkIHNoZWxsIHZpZXcuCglNYWtlIHRoZSBvcmRlciBvZiBzaGVsbCB2aWV3IGNvbHVtbnMgJ3ByZWZpeC1jb21wYXRpYmxlJyB3aXRoCglzaGZsZHJfZnMuCglEb24ndCByZW1vdmUgZmlsZW5hbWUgZXh0ZW5zaW9ucyBmb3IgcGF0aCBwaWRscyBpbiBHZXREaXNwbGF5TmFtZU9mLgoKCSogZGxscy9udGRsbC9udGRsbF9taXNjLmgsIGRsbHMvbnRkbGwvdmlydHVhbC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2UgVklSVFVBTF9IYW5kbGVGYXVsdCByZXR1cm4gYW4gTlRTVEFUVVMuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IEtldmluIEtvbHR6YXUgPGtldmluQHBsb3Aub3JnPgoJRm9yd2FyZCBzb21lIGhlYWRlciBub3RpZmljYXRpb25zIHRvIHBhcmVudCBvZiBsaXN0dmlldy4KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmM6CglUaG9tYXMgV2VpZGVubXVlbGxlciA8d2luZS1wYXRjaGVzQHJlYWN0c29mdC5jb20+CglTdXBwb3J0IFBTTV9JRFRPSU5ERVguCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9tc2Ntcy9NYWtlZmlsZS5pbiwgZGxscy9tc2Ntcy9pY2MuYywKCSAgZGxscy9tc2Ntcy9sY21zX2FwaS5oLCBkbGxzL21zY21zL21zY21zX21haW4uYywgZGxscy9tc2Ntcy9wcm9maWxlLmMsCgkgIGRsbHMvbXNjbXMvdGVzdHMvcHJvZmlsZS5jLCBkbGxzL21zY21zL3RyYW5zZm9ybS5jLAoJICBpbmNsdWRlL2NvbmZpZy5oLmluOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglMaW5rIGRpcmVjdGx5IHRvIGxpYmxjbXMuCglGaXggdHlwbyBpbiB0ZXN0LgoKCSogZGxscy9rZXJuZWwvdmlydHVhbC5jLCBkbGxzL250ZGxsL2hlYXAuYywgZGxscy9udGRsbC9wcm9jZXNzLmMsCgkgIGRsbHMvbnRkbGwvdmlydHVhbC5jLCBpbmNsdWRlL3dpbm50LmgsIGluY2x1ZGUvd2ludGVybmwuaDoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglVc2UgU0laRV9UIHR5cGUgZm9yIHNpemUgdmFyaWFibGVzIGluIE5URExMIHdoZW4gYXBwcm9wcmlhdGUuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bF9Dbi5yYywgZGxscy9jb21jdGwzMi9jb21jdGxfQ3MucmMsCgkgIGRsbHMvY29tY3RsMzIvY29tY3RsX0RlLnJjLCBkbGxzL2NvbWN0bDMyL2NvbWN0bF9Fbi5yYywKCSAgZGxscy9jb21jdGwzMi9jb21jdGxfRXMucmMsIGRsbHMvY29tY3RsMzIvY29tY3RsX0ZyLnJjLAoJICBkbGxzL2NvbWN0bDMyL2NvbWN0bF9JdC5yYywgZGxscy9jb21jdGwzMi9jb21jdGxfSmEucmMsCgkgIGRsbHMvY29tY3RsMzIvY29tY3RsX0tvLnJjLCBkbGxzL2NvbWN0bDMyL2NvbWN0bF9ObC5yYywKCSAgZGxscy9jb21jdGwzMi9jb21jdGxfUGwucmMsIGRsbHMvY29tY3RsMzIvY29tY3RsX1B0LnJjLAoJICBkbGxzL2NvbWN0bDMyL2NvbWN0bF9SdS5yYywgZGxscy9jb21jdGwzMi9jb21jdGxfU2kucmMsCgkgIGRsbHMvY29tY3RsMzIvY29tY3RsX1N2LnJjLCBkbGxzL2NvbWN0bDMyL2NvbWN0bF9UaC5yYywKCSAgZGxscy9jb21jdGwzMi9jb21jdGxfVWsucmMsIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmM6CglUaG9tYXMgV2VpZGVubXVlbGxlciA8d2luZS1wYXRjaGVzQHJlYWN0c29mdC5jb20+CgktIFN1cHBvcnQgUFNIX1dJWkFSREhBU0ZJTklTSCBpbiB3aXphcmRzLgoJLSBDb3JyZWN0IHRhYiBvcmRlciBvZiB0aGUgd2l6YXJkIGJ1dHRvbnMuCgoJKiBkbGxzL2Rzb3VuZC9kc291bmQuYywgZGxscy9kc291bmQvdGVzdHMvZHMzZC5jLAoJICBkbGxzL3dpbnNvY2svdGVzdHMvc29jay5jLCBwcm9ncmFtcy9ydW5kbGwzMi9ydW5kbGwzMi5jOgoJU3RlZmFuIEh1ZWhuZXIgPHN0ZWZhbkBodWVobmVyLm9yZz4KCUZpeCBzb21lIHdyaXRlLXN0cmluZ3Mgd2FybmluZ3MuCgoJKiBkbGxzL3NoZWxsMzIvc2hmbGRyX3VuaXhmcy5jOgoJTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJRG8gZmlsZW5hbWUgcG9zdHByb2Nlc3NpbmcgaW4gR2V0RGlzcGxheU5hbWVPZiAoSGlkZSBmaWxlbmFtZQoJZXh0ZW5zaW9ucyBpZiBhcHByb3ByaWF0ZSkuCgoJKiBkbGxzL3dpbmVkM2QvZGV2aWNlLmM6IE9saXZlciBTdGllYmVyIDxvbGl2ZXJfc3RpZWJlckB5YWhvby5jby51az4KCUNvcnJlY3QgYSBtaXNzcGxhY2VkICNpZiBpbiBJV2luZUQzRERldmljZUltcGxfQ2xlYW5SZW5kZXIuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCVdoZW4gYWRkaW5nIGFuIGltYWdlIGNvcHkgdGhlIGZ1bGwgcHJldmlvdXMgYnVmZmVyLgoJSW1wbGVtZW50IHJlcGxhY2luZyBhbiBpY29uIHdpdGggb25lIGZyb20gYSByZXNvdXJjZS4KCgkqIGluY2x1ZGUvd2ludHJ1c3QuaDogUGF1bCBWcmllbnMgPFBhdWwuVnJpZW5zQHhzNGFsbC5ubD4KCUFkZCBtaXNzaW5nIG1lbWJlciB0byBXSU5UUlVTVF9EQVRBIHN0cnVjdC4KCgkqIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglGaXggcmV0dXJuIHZhbHVlIG9mIEludGVybmV0UXVlcnlEYXRhQXZhaWxhYmxlLgoKCSogZGxscy93aW5tbS9kcml2ZXIuYywgZGxscy93aW5tbS9sb2x2bGRydi5jOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglHZXQgcmlkIG9mIEhlYXBWYWxpZGF0ZSBhcyBpdCdzIG5vdCBwcm9wZXJseSBoYW5kbGVkIGJ5IHNvbWUgbWVtb3J5CgltYW5hZ2VtZW50IHRvb2xzIChNaWNyb3F1aWxsIGZvciBleGFtcGxlKS4KCgkqIHByb2dyYW1zL3djbWQvd2NtZG1haW4uYzogRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglFbnN1cmUgbXN2Y3J0J3MgaW8gYmxvY2sgaXMgcGFzc2VkIGRvd24gZnJvbSB3Y21kJ3MgcGFyZW50IHByb2Nlc3MgdG8KCWNoaWxkIHByb2Nlc3MuCgoJKiBkbGxzL2dkaS90ZXN0cy9tZXRhZmlsZS5jOgoJRmVsaXggTmF3b3RobmlnIDxmZWxpeC5uYXdvdGhuaWdAdC1vbmxpbmUuZGU+CglGaXggdGhlIEVudW1FbmhNZXRhRmlsZSB0ZXN0cy4KCgkqIGRsbHMvd2luc3Bvb2wvaW5mby5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJU2V0IHRoZSBkZWZhdWx0IGRvYyB0aXRsZSB0byB0aGF0IG9mIFdpbmRvd3MuCglQYXNzIGN1cHMgdGhlIGRvYyB0aXRsZS4KCgkqIGRsbHMvd2luZWQzZC9yZXNvdXJjZS5jLCBkbGxzL3dpbmVkM2Qvd2luZWQzZF9wcml2YXRlLmg6CglPbGl2ZXIgU3RpZWJlciA8b2xpdmVyX3N0aWViZXJAeWFob28uY28udWs+CglJbXBsZW1lbnRlZCBHZXQvU2V0L0ZyZWUgcHJpdmF0ZSBkYXRhIGluIHJlc291cmNlLgoKCSogZGxscy93aW50cnVzdC93aW50cnVzdF9tYWluLmM6IFBhdWwgVnJpZW5zIDxwYXVsLnZyaWVuc0B4czRhbGwubmw+CglSZXR1cm4gVFJVU1RfRV9QUk9WSURFUl9VTktOT1dOIHVudGlsIGltcGxlbWVudGVkLgoKMjAwNS0wNy0xNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHByb2dyYW1zL3J1bmRsbDMyL3J1bmRsbDMyLmM6IERldGxlZiBSaWVrZW5iZXJnIDx3aW5lLmRldkB3ZWIuZGU+CglTcGFjZSBpcyB2YWxpZCBiZXR3ZWVuIG1vZHVsZSBuYW1lIGFuZCBlbnRyeSBwb2ludC4KCgkqIGRsbHMva2VybmVsL3Byb2Nlc3MuYywgZGxscy9udGRsbC9sb2FkZXIuYywgZGxscy9udGRsbC9udGRsbF9taXNjLmgsCgkgIGRsbHMvbnRkbGwvcGF0aC5jLCBkbGxzL250ZGxsL3RocmVhZC5jOgoJTW92ZWQgaW5pdGlhbGl6YXRpb24gb2YgdGhlIGRlZmF1bHQgdXNlciBwcm9jZXNzIHBhcmFtZXRlcnMgdG8gbnRkbGwuCgoJKiBkbGxzL3dpbmVkM2QvY3ViZXRleHR1cmUuYzoKCU9saXZlciBTdGllYmVyIDxvbGl2ZXJfc3RpZWJlckB5YWhvby5jby51az4KCUZpeGVkIGEgYnVnIGluIFByZWxvYWQgY2F1c2VkIGJlIGEgbWlzc2luZyBicmFjZSBhcm91bmQgYSBmb3IgbG9vcCwKCXNsaWdodGx5IGltcHJvdmVkIHRoZSB3YXkgdGhhdCBlcnJvcnMgYXJlIGhhbmRsZWQgYnkgcGFzc2luZyBiYWNrIGhyCglmcm9tIHNvbWUgZnVuY3Rpb24gY2FsbHMuCgoJKiBkbGxzL2QzZDgvZGV2aWNlLmMsIGRsbHMvZDNkOC9kcmF3cHJpbS5jLCBkbGxzL3dpbmVkM2QvZGV2aWNlLmMsCgkgIGRsbHMvd2luZWQzZC9kcmF3cHJpbS5jOgoJU3RlZmFuIEh1ZWhuZXIgPHN0ZWZhbkBodWVobmVyLm9yZz4KCUZpeCBzb21lIG1pc3NpbmctZGVjbGFyYXRpb25zIHdhcm5pbmdzLgoKCSogZGxscy9tc2h0bWwvb2xlb2JqLmMsIGRsbHMvbXNodG1sL3Rlc3RzL01ha2VmaWxlLmluLAoJICBkbGxzL21zaHRtbC90ZXN0cy9odG1sZG9jLmM6CglKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJLSBBZGRlZCBtb3JlIHRlc3RzLgoJLSBNYWtlIHRlc3RzIHBhc3MgdW5kZXIgV2luZS4KCgkqIHRvb2xzL3dpZGwvdHlwZWxpYi5jOiBTdGVmYW4gSHVlaG5lciA8c3RlZmFuQGh1ZWhuZXIub3JnPgoJRml4IGEgLVdzaWduLWNvbXBhcmUgd2FybmluZy4KCgkqIGRsbHMvbXNodG1sL21haW4uYywgZGxscy9tc2h0bWwvbXNodG1sLmluZiwgaW5jbHVkZS9tc2h0bWwuaWRsOgoJSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCUFkZGVkIE1TSFRNTCBsaWJyYXJ5IGRlY2xhcmF0aW9uLgoKCSogc2VydmVyL2ZkLmMsIHNlcnZlci9maWxlLmgsIHNlcnZlci9tYWlsc2xvdC5jOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJTWFrZSBtYWlsc2xvdHMgdXNlIGFzIG11Y2ggb2YgdGhlIGRlZmF1bHQgYXN5bmMgZmQgaW1wbGVtZW50YXRpb24gYXMKCXBvc3NpYmxlLgoKCSogZGxscy9rZXJuZWwva2VybmVsX21haW4uYywgZGxscy9rZXJuZWwvcHJvY2Vzcy5jLCBkbGxzL250ZGxsL250LmMsCgkgIGRsbHMvbnRkbGwvbnRkbGxfbWlzYy5oLCBkbGxzL250ZGxsL3NlcnZlci5jLCBkbGxzL250ZGxsL3RpbWUuYywKCSAgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLCBzZXJ2ZXIvb2JqZWN0LmgsIHNlcnZlci9wcm9jZXNzLmMsCgkgIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci9yZXF1ZXN0LmMsIHNlcnZlci9yZXF1ZXN0LmgsCgkgIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RyYWNlLmM6CglNb3ZlZCB0aGUgc2VydmVyIHN0YXJ0IHRpbWUgdG8gdGhlIGluaXRfdGhyZWFkIHJlcXVlc3QgYW5kIGdvdCByaWQgb2YKCXRoZSBpbml0X3Byb2Nlc3MgcmVxdWVzdCAoYmFzZWQgb24gYSBwYXRjaCBieSBGZWxpeCBOYXdvdGhuaWcpLgoKCSogZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJSGFuZGxlIENvcHlJbWFnZSBhbmQgb3RoZXIgZnVuY3Rpb25zIGZhaWxpbmcgYnkgbm90IGFkZGluZyB0aGUgaWNvbgoJYW5kIG5vdGlmeWluZyB0aGUgY2FsbGVyLgoKCSogZGxscy9nZGkvZGliLmM6IEp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCVJlbGVhc2UgREMgaW4gZXJyb3IgY29uZGl0aW9uIG9uIFN0cmV0Y2hESUJpdHMuCgoJKiBpbmNsdWRlL3JpY2hlZGl0Lmg6IEtldmluIEtvbHR6YXUgPGtldmluQHBsb3Aub3JnPgoJRGVmaW5lIEdDTV9SSUdIVE1PVVNFRFJPUC4KCgkqIHByb2dyYW1zL3dpbmVjZmcvTmwucmM6IFBhdWwgVnJpZW5zIDxQYXVsLlZyaWVuc0B4czRhbGwubmw+CglVcGRhdGUgdGhlIER1dGNoIHRyYW5zbGF0aW9ucy4KCgkqIHByb2dyYW1zL3dpbmVkYmcvc3RhY2suYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlIGFkZGl0aW9uYWwgY3VycmVudCBwcm9jZXNzIHRyYWNraW5nIGluIGJhY2t0cmFjZV9hbGwgYXMgaXQgY2FuCglyZWZlciB0byBmcmVlZCBtZW1vcnkuCgoJKiBkbGxzL21zaHRtbC9odG1sZG9jLmMsIGRsbHMvbXNodG1sL21zaHRtbF9wcml2YXRlLmgsCgkgIGRsbHMvbXNodG1sL29sZXduZC5jLCBkbGxzL21zaHRtbC92aWV3LmM6CglKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJLSBCZXR0ZXIgaGFuZGxpbmcgb2YgVUkgYW5kIEluUGxhY2UgYWN0aXZlIHN0YXRlLgoJLSBJbXBsZW1lbnRlZCBJblBsYWNlRGVhY3RpdmF0ZS4KCS0gVEhJUyBtYWNyb3MgY2xlYW51cC4KCgkqIGRsbHMvY3J5cHQzMi9lbmNvZGUuYywgZGxscy9jcnlwdDMyL3Rlc3RzL2VuY29kZS5jOgoJSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJRW5jb2RlL2RlY29kZSBjZXJ0cywgd2l0aCB0ZXN0cy4KCjIwMDUtMDctMTMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC9wcm9jZXNzLmMsIGRsbHMvbnRkbGwvbG9hZGVyLmMsIGRsbHMvbnRkbGwvbnRkbGxfbWlzYy5oLAoJICBkbGxzL250ZGxsL3NlcnZlci5jLCBkbGxzL250ZGxsL3RocmVhZC5jLAoJICBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9wcm9jZXNzLmgsCgkgIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RyYWNlLmM6CglSZXR1cm4gdGhlIHN0YXJ0dXAgaW5mbyBzaXplIGluIHRoZSBpbml0X3RocmVhZCByZXF1ZXN0LCBhbmQgYWxsb2NhdGUKCXRoZSBwcm9jZXNzIHBhcmFtZXRlcnMgc3RydWN0dXJlIGluIG50ZGxsIGluc3RlYWQgb2Yga2VybmVsLgoKCSogZGxscy93aW5lZDNkL2RpcmVjdHguYywgZGxscy93aW5lZDNkL3V0aWxzLmMsCgkgIGRsbHMvd2luZWQzZC93aW5lZDNkX3ByaXZhdGUuaDoKCU9saXZlciBTdGllYmVyIDxvbGl2ZXJfc3RpZWJlckB5YWhvby5jby51az4KCUNvcnJlY3QgYSBmZXcgZm9ybWF0cyB0aGF0IHdlcmUgaW5jb3JyZWN0LgoKCSogaW5jbHVkZS93aW5jcnlwdC5oOiBKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglBZGQgbW9yZSBtaXNzaW5nIGRlZmluaXRpb25zLgoKCSogcHJvZ3JhbXMvd2luZWNmZy9Gci5yYzogSm9uYXRoYW4gRXJuc3QgPEpvbmF0aGFuQEVybnN0RmFtaWx5LmNoPgoJVXBkYXRlZCB3aW5lY2ZnIEZyZW5jaCByZXNvdXJjZXMuCgoJKiBzZXJ2ZXIvc2VjdXJpdHkuaCwgc2VydmVyL3Rva2VuLmM6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglTdG9yZSB0aGUgZGVmYXVsdCBEQUNMIGluIHRoZSB0b2tlbi4KCgkqIGRsbHMvdXVpZC91dWlkLmMsIGluY2x1ZGUvLmN2c2lnbm9yZSwgaW5jbHVkZS9NYWtlZmlsZS5pbiwKCSAgaW5jbHVkZS9kb3dubG9hZG1nci5pZGw6CglKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJQWRkZWQgZG93bmxvYWRtZ3IuaWRsLgoKCSogZGxscy9udGRsbC9sb2FkZXIuYywgZGxscy9udGRsbC9udGRsbF9taXNjLmgsIGRsbHMvbnRkbGwvcmVsYXkuYzoKCUluaXRpYWxpemUgcmVsYXkgZGVidWdnaW5nIGVhcmxpZXIgb24gbm93IHRoYXQgdGhlIHJlZ2lzdHJ5IGlzIGxvYWRlZAoJYnkgdGhlIHNlcnZlci4KCgkqIGRsbHMva2VybmVsL3Byb2Nlc3MuYywgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLAoJICBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvdGhyZWFkLmMsCgkgIHNlcnZlci90cmFjZS5jOgoJR2V0IHJpZCBvZiB0aGUgYm9vdF9kb25lIHJlcXVlc3QuCgoJKiBkbGxzL3dpbmVkM2QvYmFzZXRleHR1cmUuYywgZGxscy93aW5lZDNkL2N1YmV0ZXh0dXJlLmMsCgkgIGRsbHMvd2luZWQzZC9kZXZpY2UuYywgZGxscy93aW5lZDNkL2RpcmVjdHguYywKCSAgZGxscy93aW5lZDNkL2RyYXdwcmltLmMsIGRsbHMvd2luZWQzZC9pbmRleGJ1ZmZlci5jLAoJICBkbGxzL3dpbmVkM2QvcmVzb3VyY2UuYywgZGxscy93aW5lZDNkL3N0YXRlYmxvY2suYywKCSAgZGxscy93aW5lZDNkL3N1cmZhY2UuYywgZGxscy93aW5lZDNkL3N3YXBjaGFpbi5jLAoJICBkbGxzL3dpbmVkM2QvdGV4dHVyZS5jLCBkbGxzL3dpbmVkM2QvdXRpbHMuYywKCSAgZGxscy93aW5lZDNkL3ZlcnRleGJ1ZmZlci5jLCBkbGxzL3dpbmVkM2QvdmVydGV4ZGVjbGFyYXRpb24uYywKCSAgZGxscy93aW5lZDNkL3ZlcnRleHNoYWRlci5jLCBkbGxzL3dpbmVkM2Qvdm9sdW1lLmMsCgkgIGRsbHMvd2luZWQzZC92b2x1bWV0ZXh0dXJlLmMsIGRsbHMvd2luZWQzZC93aW5lZDNkX21haW4uYzoKCU9saXZlciBTdGllYmVyIDxvbGl2ZXJfc3RpZWJlckB5YWhvby5jby51az4KCVRpZHkgdXAgc29tZSBjb21tZW50cyBhbmQgZm9ybWF0dGluZy4KCgkqIGRsbHMvd2luc3Bvb2wvaW5mby5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJUGFydGlhbCBpbXBsZW1lbnRhdGlvbiBvZiBTZXRKb2JXLgoJU2V0IHRoZSBkb2N1bWVudCB0aXRsZSBpbiBTdGFydERvY1ByaW50ZXIuCgoJKiBkbGxzL2tlcm5lbC9wcm9jZXNzLmMsIGRsbHMvbnRkbGwvc2VydmVyLmMsCgkgIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3Byb2Nlc3MuaCwKCSAgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdHJhY2UuYzoKCUFscmVhZHkgaW5pdGlhbGl6ZSB0aGUgcHJvY2VzcyBpbiB0aGUgZmlyc3QgaW5pdF90aHJlYWQgcmVxdWVzdAoJaW5zdGVhZCBvZiB3YWl0aW5nIGZvciB0aGUgaW5pdF9wcm9jZXNzIHJlcXVlc3QuCgoJKiBzZXJ2ZXIvaGFuZGxlLmM6CglBdm9pZCBwb3RlbnRpYWwgY3Jhc2hlcyB3aGVuIHRoZXJlIGlzIG5vIGhhbmRsZSB0YWJsZS4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jLCBkbGxzL21zaS9maWxlcy5jLCBkbGxzL21zaS9tc2kuYywKCSAgZGxscy9tc2kvc291cmNlLmMsIGRsbHMvbXNpL3VwZ3JhZGUuYywgaW5jbHVkZS9tc2kuaDoKCVVzZSB0aGUgb2ZmaWNpYWwgbmFtZXMgZm9yIHRoZSBVbmljb2RlIHN0cmluZyBjb25zdGFudHMuCgoJKiBkbGxzL2RwbGF5eC9kcGxheS5jLCBkbGxzL2RwbGF5eC9kcGxheV9nbG9iYWwuaCwgZGxscy9pdHNzL2l0c3MuYywKCSAgZGxscy9pdHNzL21vbmlrZXIuYywgZGxscy9pdHNzL3N0b3JhZ2UuYywgZGxscy9xY2FwL3Bpbi5oLAoJICBkbGxzL3F1YXJ0ei9lbnVtZmlsdGVycy5jLCBkbGxzL3F1YXJ0ei9lbnVtcmVnZmlsdGVycy5jLAoJICBkbGxzL3F1YXJ0ei9maWxlc291cmNlLmMsIGRsbHMvcXVhcnR6L2ZpbHRlcm1hcHBlci5jLAoJICBkbGxzL3F1YXJ0ei9waW4uaCwgZGxscy9ycGNydDQvcnBjX2JpbmRpbmcuaCwKCSAgZGxscy9ycGNydDQvcnBjX3NlcnZlci5jLCBkbGxzL3NoZG9jdncvc2hkb2N2dy5oLAoJICBkbGxzL3NoZG9jdncvc2hkb2N2d19tYWluLmMsIGRsbHMvc2hsd2FwaS90ZXN0cy9jbGlzdC5jLAoJICBkbGxzL3VybG1vbi90ZXN0cy91cmwuYywgZGxscy93aW5pbmV0L2ludGVybmV0LmMsCgkgIGRsbHMvd2lubW0vbWNpYXZpL3ByaXZhdGVfbWNpYXZpLmgsIGRsbHMvd2lubW0vbWNpd2F2ZS9tY2l3YXZlLmMsCgkgIGRsbHMvd2lubW0vcGxheXNvdW5kLmMsIGRsbHMvd2lubW0vd2luZWFsc2EvYXVkaW8uYywKCSAgZGxscy93aW5tbS93aW5lbW0uaCwgZGxscy93aW5tbS93aW5lb3NzL2RzY2FwdHVyZS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJSW50ZXJsb2NrZWQgTE9ORyogZ2NjIHdhcm5pbmcgZml4ZXMuCgoJKiBERVZFTE9QRVJTLUhJTlRTLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9NYWtlZmlsZS5pbiwKCSAgZGxscy93bGRhcDMyLy5jdnNpZ25vcmUsIGRsbHMvd2xkYXAzMi9NYWtlZmlsZS5pbiwKCSAgZGxscy93bGRhcDMyL21haW4uYywgZGxscy93bGRhcDMyL3dsZGFwMzIuc3BlYzoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJQmVnaW5uaW5ncyBvZiBXTERBUDMyLgoKCSogdG9vbHMvd2luZWJ1aWxkL2ltcG9ydC5jOiBTdGV2ZSBaZWxsZXJzIDx6ZWxsZXJzQG1hYy5jb20+CglGaXhlZCBsZWZ0b3ZlciBpbXBvcnQgdGFibGUgbmFtZSBpbiBvdXRwdXRfaW1wb3J0X3RodW5rLgoKCSogZGxscy9udGRsbC9jcml0c2VjdGlvbi5jOiBJZ25vcmUgaGlnaCBiaXQgb2Ygc3BpbiBjb3VudC4KCgkqIGRsbHMvd2luZWQzZC9kZXZpY2UuYywgZGxscy93aW5lZDNkL3Jlc291cmNlLmMsCgkgIGRsbHMvd2luZWQzZC9zdXJmYWNlLmMsIGRsbHMvd2luZWQzZC92ZXJ0ZXhidWZmZXIuYywKCSAgZGxscy93aW5lZDNkL3dpbmVkM2RfbWFpbi5jLCBkbGxzL3dpbmVkM2Qvd2luZWQzZF9wcml2YXRlLmgsCgkgIGluY2x1ZGUvd2luZS93aW5lZDNkX2dsLmg6CglPbGl2ZXIgU3RpZWJlciA8b2xpdmVyX3N0aWViZXJAeWFob28uY28udWs+CglBZGRlZCBiYXNpYyBtZW1vcnkgbWFuYWdlbWVudCBhbmQgdHJhY2tpbmcgdG8gd2luZWQzZC4KCgkqIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvd2lubGRhcC5oOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglBZGRlZCB3aW5sZGFwLmggaGVhZGVyLgoKCSogZGxscy9tc2h0bWwvbXNodG1sX3ByaXZhdGUuaCwgZGxscy9tc2h0bWwvb2xld25kLmM6CglKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJVEhJUyBtYWNyb3MgY2xlYW51cC4KCgkqIGRsbHMvbXNodG1sL3ZpZXcuYzogSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCUNhbGwgU2hvd1VJIGFuZCBIaWRlVUkgaW4gVUlBY3RpdmF0ZS4KCgkqIGRsbHMvd2luc3Bvb2wvRGUucmMsIGRsbHMvd2luc3Bvb2wvd2luc3Bvb2wucmMsCgkgIHByb2dyYW1zL3dpbmVjZmcvRGUucmM6CglIZW5uaW5nIEdlcmhhcmR0IDxoZW5uaW5nLmdlcmhhcmR0QHdlYi5kZT4KCS0gQWRkZWQgR2VybWFuIHdpbnNwb29sIHJlc291cmNlIGZpbGUuCgktIFVwZGF0ZWQgR2VybWFuIHdpbmVjZmcgcmVzb3VyY2UgZmlsZS4KCgkqIHRvb2xzL3dpZGwvd3JpdGVfbXNmdC5jOiBTdGVmYW4gSHVlaG5lciA8c3RlZmFuQGh1ZWhuZXIub3JnPgoJRml4IHNvbWUgLVdzaWduLWNvbXBhcmUgd2FybmluZ3MuCgoyMDA1LTA3LTEyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIHByb2dyYW1zL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy9oaC8uY3ZzaWdub3JlLCBwcm9ncmFtcy9oaC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvaGgvbWFpbi5jOgoJSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCUFkZGVkIGhoLmV4ZS4KCgkqIGRsbHMva2VybmVsL3Byb2Nlc3MuYywgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLAoJICBzZXJ2ZXIvY29uc29sZS5jLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcHJvY2Vzcy5oLAoJICBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvdHJhY2UuYzoKCU1vdmVkIHRoZSBmaWVsZHMgdGhhdCBkZXBlbmRzIG9uIHN0YXJ0dXAgaW5mbyBmcm9tIHRoZSBpbml0X3Byb2Nlc3MKCXJlcXVlc3QgdG8gZ2V0X3N0YXJ0dXBfaW5mby4KCgkqIGRsbHMvdXNlci9jdXJzb3JpY29uLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUNsZWFuIHVwIENVUlNPUklDT05fTG9hZC4KCgkqIGRsbHMvbnRkbGwvdGVzdHMvc3RyaW5nLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglCb3RoIHdjc2NociBhbmQgd2NzcmNociBzaG91bGQgYmUgYWJsZSB0byBmaW5kIHRoZSB0ZXJtaW5hdGluZwoJY2hhcmFjdGVyLgoKCSogaW5jbHVkZS93aW5lL3VuaWNvZGUuaDoKCUZpeGVkIHN0cmNoclcgYW5kIHN0cnJjaHJXIGZvciBhIG51bGwgY2hhcmFjdGVyIChzcG90dGVkIGJ5IEFyaWMKCVN0ZXdhcnQpLgoKCSogZGxscy9kbXVzaWMvZG11c2ljX3ByaXZhdGUuaCwgZGxscy9kcGxheXgvZHBjbGFzc2ZhY3RvcnkuYywKCSAgZGxscy9kcGxheXgvZHBsYXlzcC5jLCBkbGxzL2RwbGF5eC9kcGxvYmJ5LmMsIGRsbHMvZHBsYXl4L2xvYmJ5c3AuYywKCSAgZGxscy9kcG5ldC9kcG5ldF9tYWluLmMsIGRsbHMvZHBuZXQvZHBuZXRfcHJpdmF0ZS5oLAoJICBkbGxzL2Rzb3VuZC9kc291bmRfcHJpdmF0ZS5oLCBkbGxzL2Rzd2F2ZS9kc3dhdmVfcHJpdmF0ZS5oLAoJICBkbGxzL2l0c3MvaXRzcy5jLCBkbGxzL2l0c3MvbW9uaWtlci5jLCBkbGxzL21sYW5nL21sYW5nLmMsCgkgIGRsbHMvbXNkbW8vZG1vcmVnLmMsIGRsbHMvbmV0YXBpMzIvbmV0Ymlvcy5jLAoJICBkbGxzL3FjYXAvY2FwdHVyZWdyYXBoLmMsIGRsbHMvcWNhcC9lbnVtbWVkaWEuYywKCSAgZGxscy9xY2FwL2VudW1waW5zLmMsIGRsbHMvcWNhcC9xY2FwX21haW4uYywgZGxscy9xY2FwL3Zmd2NhcHR1cmUuYywKCSAgZGxscy9xdWFydHovZHNvdW5kcmVuZGVyLmMsIGRsbHMvcXVhcnR6L2VudW1tZWRpYS5jLAoJICBkbGxzL3F1YXJ0ei9lbnVtcGlucy5jLCBkbGxzL3F1YXJ0ei9maWx0ZXJncmFwaC5jLAoJICBkbGxzL3F1YXJ0ei9tYWluLmMsIGRsbHMvcXVhcnR6L21lbWFsbG9jYXRvci5jLCBkbGxzL3F1YXJ0ei9wYXJzZXIuaCwKCSAgZGxscy9xdWFydHovc3lzdGVtY2xvY2suYywgZGxscy9xdWFydHovdHJhbnNmb3JtLmgsCgkgIGRsbHMvcXVhcnR6L3ZpZGVvcmVuZGVyZXIuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUludGVybG9ja2VkIExPTkcqIGdjYyB3YXJuaW5nIGZpeGVzLgoKCSogZGxscy93aW5zcG9vbC9pbmZvLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglGb3J3YXJkIFNldEpvYkEgLT4gU2V0Sm9iVy4KCgkqIGRsbHMvbXNpL2N1c3RvbS5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJRnVydGhlciB0ZXN0aW5nIHNob3dzIHRoYXQgd2hlbiBDdXN0b21BY3Rpb25EYXRhIG5lZWRzIHRvIGJlIGJsYW5rIGl0CglpcyBhbiBlbXB0eSBzdHJpbmcgbm90ICcgJy4KCgkqIGRsbHMvdXNlci9jdXJzb3JpY29uLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZSBDVVJTT1JJQ09OX1NpbXVsYXRlTG9hZGluZ0Zyb21SZXNvdXJjZVcuCgoJKiBkbGxzL3VzZXIvY3Vyc29yaWNvbi5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglNb2RpZnkgQ1VSU09SSUNPTl9GaW5kQmVzdEljb24vQ3Vyc29yIHRvIHVzZSBlbnVtZXJhdG9yIGZ1bmN0aW9ucy4KCgkqIGRsbHMvdXNlci9saXN0Ym94LmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUNhbGwgU2V0TGFzdEVycm9yIG9uIGVycm9ycy4KCgkqIGRsbHMvdXNlci90ZXh0LmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gU3VwcG9ydCByaWdodC1hbGlnbmVkIHRleHQgaW4gVGFiYmVkVGV4dE91dC4KCS0gQWRkIGRvY3VtZW50YXRpb24uCgoJKiBwcm9ncmFtcy93aW5lY2ZnL0VuLnJjLCBwcm9ncmFtcy93aW5lY2ZnL0ZyLnJjLAoJICBwcm9ncmFtcy93aW5lY2ZnL3Jlc291cmNlLmgsIHByb2dyYW1zL3dpbmVjZmcveDExZHJ2ZGxnLmM6CglSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCS0gYWRkIGRpcmVjdDNkIGNvbmZpZ3VyYXRpb24gb24gd2luZWNmZyBncmFwaGljcyBwYW5lbAoJLSByZXN5bmMgRnIgbGlicmFyaWVzIGRpYWxvZyAoYmFzZWQgb24gRW4ucmMpCgoJKiBkbGxzL250ZGxsL3djc3RyaW5nLmM6IFVzZSB0aGUgdW5pY29kZS5oIGZ1bmN0aW9ucyB3aGVyZSBwb3NzaWJsZS4KCgkqIGRsbHMvbXNpL21zaS5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJVXNlIHRoZSBTb3VyY2VMaXN0IGZ1bmN0aW9ucyB0byBnZXQgdGhlIHNvdXJjZSBwYXRoIGluCglDb25maWd1cmVQcm9kdWN0RXhXLgoKCSogZGxscy9tc2kvZmlsZXMuYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCVdoZW4gd29ya2luZyB0b3dhcmQgaW5zdGFsbCBvbiBkZW1hbmQgc3VwcG9ydCB3ZSBuZWVkIHRvIHJlc2V0IGFsbCB0aGUKCWNvbnN0YW50IHZhbHVlcyBzbyB0aGF0IG11bHRpcGxlIGluc3RhbGwgcHJvY2VzcyBkbyBub3QgZ2V0IGNvbmZ1c2VkCglieSBsZWZ0b3ZlciB2YWx1ZXMgZnJvbSB0aGUgcHJldmlvdXMgaW5zdGFsbC4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaDogRnJhbmsgUmljaHRlciA8ZnJhbmsucmljaHRlckBnbWFpbC5jb20+CglBZGRlZCBXQ19TVEFUSUMuCgoJKiBkbGxzL3VzZXIvbGlzdGJveC5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIEltcGxlbWVudCBMQl9TRVRMT0NBTEUuCgktIFJlbW92ZSBpbmNvcnJlY3QgRklYTUVzIGZvciBMQl9VU0VUQUJTVE9QUy4KCgkqIGRsbHMvdXh0aGVtZS9kcmF3LmM6IEZyYW5rIFJpY2h0ZXIgPGZyYW5rLnJpY2h0ZXJAZ21haWwuY29tPgoJQmV0dGVyIHZpZXdwb3J0IG9yaWdpbiBpbiBEcmF3VGhlbWVQYXJlbnRCYWNrZ3JvdW5kKCkuCgoJKiBkbGxzL2QzZHhvZi9kM2R4b2ZfcHJpdmF0ZS5oLCBkbGxzL2QzZHhvZi9tYWluLmMsCgkgIGRsbHMvZGlucHV0L2RldmljZV9wcml2YXRlLmgsIGRsbHMvZGlucHV0L2pveXN0aWNrX2xpbnV4aW5wdXQuYywKCSAgZGxscy9kbWJhbmQvZG1iYW5kX3ByaXZhdGUuaCwgZGxscy9kbWNvbXBvcy9kbWNvbXBvc19wcml2YXRlLmgsCgkgIGRsbHMvZG1pbWUvZG1pbWVfcHJpdmF0ZS5oLCBkbGxzL2Rtc2NyaXB0L2Rtc2NyaXB0X3ByaXZhdGUuaCwKCSAgZGxscy9kbXN0eWxlL2Rtc3R5bGVfcHJpdmF0ZS5oLCBkbGxzL2Rtc3ludGgvZG1zeW50aF9wcml2YXRlLmg6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglJbnRlcmxvY2tlZCBMT05HKiBnY2Mgd2FybmluZyBmaXhlcy4KCgkqIGRsbHMvd2luZWQzZC9kZXZpY2UuYywgZGxscy93aW5lZDNkL2RyYXdwcmltLmMsCgkgIGRsbHMvd2luZWQzZC9zdXJmYWNlLmM6CglPbGl2ZXIgU3RpZWJlciA8b2xpdmVyX3N0aWViZXJAeWFob28uY28udWs+CglJbXBsZW1lbnQgVXBkYXRlVGV4dHVyZSBhbmQgVXBkYXRlU3VyZmFjZSBpbiB3aW5lZDNkLgoJQWxsb3cgTlVMTCBtZW1iZXJzIG9mIFdJTkVEM0RTVVJGQUNFX0RFU0MgdG8gYmUgc2V0IHRvIFN1cmZhY2VfR2V0RGVzYwoJc28gdGhhdCB0aGUgd2hvbGUgc3RydWN0dXJlIGRvZXNuJ3QgaGF2ZSB0byBiZSBmaWxsZWQganVzdCB0byBnZXQgYmFjawoJb25lIHZhbHVlLgoKCSogZGxscy93aW5zcG9vbC8uY3ZzaWdub3JlLCBkbGxzL3dpbnNwb29sL0VuLnJjLAoJICBkbGxzL3dpbnNwb29sL01ha2VmaWxlLmluLCBkbGxzL3dpbnNwb29sL2luZm8uYywKCSAgZGxscy93aW5zcG9vbC93aW5zcG9vbC5yYywgZGxscy93aW5zcG9vbC93c3Bvb2wuYywKCSAgZGxscy93aW5zcG9vbC93c3Bvb2wuaDoKCUh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglTY2hlZHVsZUpvYiBmb3IgJ2ZpbGUnIHBvcnRzLgoKCSogZGxscy9tc2kvZGlhbG9nLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCURpc3BsYXkgaWNvbnMgaW4gYnV0dG9ucyB0aGF0IGhhdmUgdGhlbS4KCgkqIGRsbHMvbXNodG1sL2h0bWxkb2MuYywgZGxscy9tc2h0bWwvbXNodG1sX3ByaXZhdGUuaCwKCSAgZGxscy9tc2h0bWwvb2xlb2JqLmMsIGRsbHMvbXNodG1sL29sZXduZC5jLCBkbGxzL21zaHRtbC9wZXJzaXN0LmMsCgkgIGRsbHMvbXNodG1sL3Byb3RvY29sLmMsIGRsbHMvbXNodG1sL3NlcnZpY2UuYywgZGxscy9tc2h0bWwvdmlldy5jOgoJSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCS0gQWRkZWQgc3R1YiBpbXBsZW1lbnRhdGlvbiBvZiBJT2xlQ29tbWFuZFRhcmdldC4KCS0gU3RvcmUgSURvY0hvc3RVSUhhbmRsZXIgaW4gSFRNTERvY3VtZW50LgoJLSBBY3RpdmF0ZU1lIHNob3VsZCBiZSBjYWxsZWQgZXZlbiBpZiBHZXRDb250YWluZXIgZmFpbGVkLgoKCSogZGxscy9zaGVsbDMyL3NoZmxkcl91bml4ZnMuYzoKCU1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCURvbid0IGNhY2hlIGNoaWxkIHBpZGxzIGluIFVuaXhGb2xkZXIsIGJ1dCBjcmVhdGUgdGhlbSBvbiB0aGUgZmx5LgoKCSogZGxscy9jcnlwdDMyL2VuY29kZS5jLCBkbGxzL2NyeXB0MzIvdGVzdHMvZW5jb2RlLmM6CglKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CgktIGVuY29kZS9kZWNvZGUgQ0VSVF9JTkZPLCB3aXRoIHRlc3RzCgktIGEgZmV3IG1vcmUgdGVzdHMgYW5kIGJ1Z2ZpeGVzCgoJKiBkbGxzL3V4dGhlbWUvZHJhdy5jOiBGcmFuayBSaWNodGVyIDxmcmFuay5yaWNodGVyQGdtYWlsLmNvbT4KCUNvcnJlY3QgYm9yZGVyIHJlY3RhbmdsZSBkcmF3aW5nLgoKCSogZGxscy91eHRoZW1lL3N5c3RlbS5jOiBGcmFuayBSaWNodGVyIDxmcmFuay5yaWNodGVyQGdtYWlsLmNvbT4KCURvbid0IGNyYXNoIGlmIE5VTEwgaXMgcGFzc2VkIGFzIHRoZSBjbGFzcyBsaXN0IHRvIE9wZW5UaGVtZURhdGEoKS4KCjIwMDUtMDctMTEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC9vbGRjb25maWcuYywgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLAoJICBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvcmVnaXN0cnkuYywgc2VydmVyL3JlcXVlc3QuaCwKCSAgc2VydmVyL3RyYWNlLmM6CglMb2FkIHRoZSBIS0VZX0NVUlJFTlRfVVNFUiBicmFuY2ggYXQgc2VydmVyIHN0YXJ0dXAgdG9vLgoKCSogZGxscy9udGRsbC9yZWcuYywgZGxscy9udGRsbC9zZWMuYzoKCVVzZSBhbiBTSUQgaW5zdGVhZCBvZiB0aGUgdXNlciBuYW1lIGZvciB0aGUgcGF0aCBvZiB0aGUKCUhLRVlfQ1VSUkVOVF9VU0VSIGtleSAoYmFzZWQgb24gYW4gb2xkIHBhdGNoIGJ5IEp1YW4gTGFuZykuCgoJKiBkbGxzL2QzZDkvY3ViZXRleHR1cmUuYywgZGxscy9kM2Q5L3N1cmZhY2UuYywgZGxscy9kM2Q5L3RleHR1cmUuYywKCSAgZGxscy93aW5lZDNkL2N1YmV0ZXh0dXJlLmMsIGRsbHMvd2luZWQzZC9kZXZpY2UuYywKCSAgZGxscy93aW5lZDNkL3N1cmZhY2UuYywgZGxscy93aW5lZDNkL3RleHR1cmUuYywKCSAgZGxscy93aW5lZDNkL3dpbmVkM2RfcHJpdmF0ZS5oLCBpbmNsdWRlL3dpbmUvd2luZWQzZF9pbnRlcmZhY2UuaCwKCSAgaW5jbHVkZS93aW5lL3dpbmVkM2RfdHlwZXMuaDoKCU9saXZlciBTdGllYmVyIDxvbGl2ZXJfc3RpZWJlckB5YWhvby5jby51az4KCU1vdmUgcGFyYW1ldGVycyByZWxhdGluZyB0byBvcGVuZ2wgb24gdGhlIHN1cmZhY2Ugc3RydWN0dXJlIG9uIHRvIGEKCWdsRGVzY2lwdGlvbiBtZW1iZXIuCglSZW1vdmVkIExldmVsIGFuZCBUYXJnZXQgZnJvbSBMb2FkVGV4dHVyZSwgYW5kIHJlZHVjZWQgdGhlIGRlcGVuZGVuY3kKCW9uIHN1cmZhY2UtPmRldmljZS4KCUZpeGVkIGEgY291cGxlIG9mIGNvbXBpbGVyIHdhcm5pbmdzIGluIGQzZDkuCgoJKiBkbGxzL21zaS9yZWdpc3RyeS5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJUHJvcGVybHkgcmVzaXplIHRoZSBidWZmZXIgYmFzZWQgb24gRVJST1JfTU9SRV9EQVRBLgoJQWxzbyByZW1lbWJlciB0byBmcmVlIHRoZSBhbGxvY2F0ZWQgYnVmZmVyLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvbW9kdWxlLmM6IFBhdWwgVnJpZW5zIDxwYXVsLnZyaWVuc0B4czRhbGwubmw+CglCYXNpYyB0ZXN0cyBmb3IgTG9hZExpYnJhcnlBIGFuZCBHZXRQcm9jQWRkcmVzcy4KCgkqIGRsbHMva2VybmVsL21vZHVsZS5jOgoJQSBOVUxMIG1vZHVsZSBoYW5kbGUgbWVhbnMgJ21haW4gZXhlJyBpbiBHZXRQcm9jQWRkcmVzcyB0b28uCgoJKiBzZXJ2ZXIvaG9vay5jLCBzZXJ2ZXIvcmVxdWVzdC5jLCBzZXJ2ZXIvdXNlci5oLCBzZXJ2ZXIvd2luc3RhdGlvbi5jOgoJU3RvcmUgdGhlIGdsb2JhbCBob29rcyB0YWJsZSBpbiB0aGUgZGVza3RvcCBvYmplY3QuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmM6CglEZXRsZWYgUmlla2VuYmVyZyA8d2luZS5kZXZAd2ViLmRlPgoJUHJpbnRlcnNfUmVnaXN0ZXJXaW5kb3dXIC8gUHJpbnRlcnNfVW5yZWdpc3RlcldpbmRvdyBpbXBsZW1lbnRlZCBhcwoJc3R1Yi4KCVNob3cgdGhlIEZJWE1FIGluIFByaW50ZXJfTG9hZEljb25zVyBvbmx5IHdoZW4gbmVlZGVkLgoKCSogZGxscy9hZHZwYWNrL2FkdnBhY2suYywgZGxscy9hZHZwYWNrL2FkdnBhY2suc3BlYywgaW5jbHVkZS9hZHZwdWIuaDoKCVN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJQWRkZWQgc3R1YnMgZm9yIEV4ZWN1dGVDYWIgYW5kIFRyYW5zbGF0ZUluZlN0cmluZy4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jLCBkbGxzL21zaS9tc2kuYywgZGxscy9tc2kvdXBncmFkZS5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCVVzZSB0aGUgc3RyaW5ncyBkZWZpbmVkIGluIG1zaS5oLgoKCSogZGxscy9tc2kvc291cmNlLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglDb3JyZWN0IGFuIGVycm9yIHdoZXJlIEkgd2FzIG5vdCBwcm9wZXJseSBhZHZhbmNpbmcgYSBwb2ludGVyLgoKCSogZGxscy9tc2h0bWwvbXNodG1sLmluZjogSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCS0gUmVtb3ZlIGxpY2VuY2UgaGVhZGVyLgoJLSBGaXggdHlwb3MuCgoJKiBpbmNsdWRlL21zaS5oOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlIHNvbWUgZHVwbGljYXRlIHByb3RvdHlwZXMgYW5kIHJlZm9ybWF0IHRoZSBTb3VyY2VMaXN0IEFQSXMgYQoJYml0IG1vcmUgdG8gZml0IHdpdGggdGhlIHN0eWxlIG9mIHRoZSByZXN0IG9mIHRoZSBmaWxlLgoKCSogaW5jbHVkZS9jb21tY3RybC5oOiBGcmFuayBSaWNodGVyIDxmcmFuay5yaWNodGVyQGdtYWlsLmNvbT4KCUFkZGVkIEJTVF9IT1QsIFdDX0JVVFRPTi4KCgkqIGRsbHMvZGlucHV0L3Rlc3RzL2pveXN0aWNrLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJT25seSBwcmludCB0aGUgam95c3RpY2sgc3RhdGUgd2hlbiBpdCBjaGFuZ2VzIHNvIHRoZSB1c2VyIGRvZXMgbm90IGdldAoJMzAwIGxpbmVzIG9mIHRyYWNlcy4KCgkqIGRsbHMvZ2RpL2dkaTMyLnNwZWM6CglNYWtlIEdldEtlcm5pbmdQYWlycyBhbiBhbGlhcyBmb3IgR2V0S2VybmluZ1BhaXJzQS4KCgkqIGRsbHMvd2luZWQzZC9kZXZpY2UuYywgZGxscy93aW5lZDNkL2RyYXdwcmltLmMsCgkgIGRsbHMvd2luZWQzZC9zdXJmYWNlLmMsIGRsbHMvd2luZWQzZC93aW5lZDNkX3ByaXZhdGUuaDoKCU9saXZlciBTdGllYmVyIDxvbGl2ZXJfc3RpZWJlckB5YWhvby5jby51az4KCUltcGxlbWVudGVkIGJhc2ljIG5vbi1wb3dlciAyIHRleHR1cmUgaW4gd2luZWQzZC4KCUFsc28gZml4ZWQgYSB0eXBvIGluIGRyYXdwcmltIHRoYXQgd2FzIGNhdXNpbmcgdmVydGV4IGRlY2xhcmF0aW9ucyB0bwoJY3Jhc2guCgoJKiBkbGxzL2Ftc3RyZWFtL2Ftc3RyZWFtLmMsIGRsbHMvYW1zdHJlYW0vbWFpbi5jLCBkbGxzL2F0bC9yZWdpc3RyYXIuYywKCSAgZGxscy9jb21jYXQvY29tY2F0X21haW4uYywgZGxscy9jb21jYXQvY29tY2F0X3ByaXZhdGUuaCwKCSAgZGxscy9jb21jYXQvaW5mb3JtYXRpb24uYywgZGxscy9kZXZlbnVtL2RldmVudW1fcHJpdmF0ZS5oLAoJICBkbGxzL2RldmVudW0vbWVkaWFjYXRlbnVtLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglJbnRlcmxvY2tlZCBMT05HKiBnY2Mgd2FybmluZyBmaXhlcy4KCgkqIGRsbHMvZGlucHV0L3Rlc3RzL2pveXN0aWNrLmMsIGRsbHMvZGlucHV0L3Rlc3RzL2tleWJvYXJkLmMsCgkgIGRsbHMvZGlucHV0L3Rlc3RzL21vdXNlLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVJlbW92ZSB1bm5lY2Vzc2FyeSBTVFJJQ1QgZGVmaW5lcy4KCgkqIGRsbHMva2VybmVsL2ZpbGUuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVNUQVRVU19USU1FT1VUIGlzIG5vIGVycm9yIGZvciBSZWFkfFdyaXRlRmlsZS4KCgkqIGRsbHMvbnRkbGwvZmlsZS5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJV2FpdCBmb3IgdGhlIG9iamVjdCBtdWx0aXBsZSB0aW1lcyB1bnRpbCBUSU1FT1VUIGlzIG1ldC4KCgkqIGRsbHMvdXNlci9saXN0Ym94LmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCVRoZSB1bml0cyBwYXNzZWQgaW50byBMQl9TRVRUQUJTVE9QUyBhcmUgZGlhbG9nIHVuaXRzLCBub3QgbG9naWNhbAoJdW5pdHMuCgoJKiBkbGxzL21zaS9wYWNrYWdlLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglJZiBNc2lHZXRQcm9wZXJ0eShBL1cpIGlzIGNhbGxlZCB3aXRoIGEgTlVMTCBmb3IgdGhlIHZhbHVlIGJ1ZmZlciBidXQKCWEgdmFsdWUgaW4gdGhlIHNpemUgZm9yIHRoZSB2YWx1ZSBidWZmZXIsIHRoZW4gTXNpIGZpbGxzIGluIHRoZSBzaXplCglvZiB0aGUgdmFsdWUgaW50byB0aGUgcG9pbnRlciBmb3Igc2l6ZS4gIFRoaXMgaXMgdGVzdGVkIGFuZCBjb25maXJtZWQKCXdpdGggbmF0aXZlIE1TSS4KCgkqIGRsbHMvbXN2Y3J0L2xvY2FsZS5jOiBWaWpheSBLaXJhbiBLYW11anUgPGluZnlxdWVzdEBnbWFpbC5jb20+CglGaXggX3NldG1iY3AgYmVoYXZpb3IgZm9yIHVucmVhbCBjb2RlcGFnZXMuCgoJKiBzZXJ2ZXIvcXVldWUuYywgc2VydmVyL3VzZXIuaCwgc2VydmVyL3dpbmRvdy5jLCBzZXJ2ZXIvd2luc3RhdGlvbi5jOgoJVGllIHdpbmRvd3MgYW5kIHRocmVhZCBpbnB1dCBzdHJ1Y3R1cmVzIHRvIGEgc3BlY2lmaWMgZGVza3RvcC4KCVN1cHBvcnQgbXVsdGlwbGUgZGVza3RvcCB3aW5kb3dzIChvbmUgcGVyIGRlc2t0b3Agb2JqZWN0KS4KCVVzZSB0aGUgd2luZG93IGRlc2t0b3AgdG8gZmluZCB0aGUgd2luZG93IHN0YXRpb24gdG8gdXNlIGZvciBwcm9wZXJ0eQoJYXRvbXMuCgoJKiBkbGxzL250ZGxsL2xvYWRvcmRlci5jOgoJQWxzbyBsb29rIGZvciB0aGUgcGxhaW4gbW9kdWxlIHNwZWNpZmljYXRpb24gaW4gV0lORURMTE9WRVJSSURFUyBmb3IKCW1vZHVsZXMgdGhhdCBjb250YWluIGEgcGF0aCwgZm9yIGJldHRlciBjb25zaXN0ZW5jeSB3aXRoIHRoZSByZWdpc3RyeQoJZW50cmllcy4KCgkqIGRsbHMvbXNpL2ZpbGVzLmMsIGRsbHMvbXNpL3NvdXJjZS5jLCBpbmNsdWRlL21zaS5oOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCB0aGUgc3RyaW5nIGNvbnN0YW50cyBsb2NhdGVkIGluIG1zaS5oIGFuZCBtYWtlIHVzZSBvZiB0aGVtIGluCglmaWxlcy5jIGFuZCBzb3VyY2UuYy4KCgkqIGRsbHMvd2luc3Bvb2wvaW5mby5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJU2NoZWR1bGVKb2IgZm9yIChhcyB5ZXQgdW51c2VkKSAnY3VwcycgcG9ydHMuCgoJKiBkbGxzL3VzZXIvY3Vyc29yaWNvbi5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglSZXBsYWNlIENVUlNPUklDT05fQ3JlYXRlRnJvbVJlc291cmNlIGJ5IENyZWF0ZUljb25Gcm9tUmVzb3VyY2VFeC4KCgkqIGRsbHMvZDNkOC9kM2Q4X3ByaXZhdGUuaCwgZGxscy9kM2R4OC9kM2R4OGNvcmVfcHJpdmF0ZS5oLAoJICBkbGxzL2RkcmF3L2QzZF9wcml2YXRlLmgsIGRsbHMvZGRyYXcvZGRyYXdfcHJpdmF0ZS5oLAoJICBkbGxzL2RkcmF3L21haW4uYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUludGVybG9ja2VkIExPTkcqIGdjYyB3YXJuaW5nIGZpeGVzLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvaGVhcC5jLCBkbGxzL250ZGxsL2hlYXAuYzoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gTWFrZSB0aGUgdmFsdWUgcmV0dXJuZWQgZnJvbSBIZWFwU2l6ZSBhbHdheXMgbWF0Y2ggdGhlIHJlcXVlc3RlZAoJICBzaXplIHBhc3NlZCBpbnRvIEhlYXBBbGxvY2F0ZS9IZWFwUmVBbGxvY2F0ZS4KCS0gQWRkIGEgdGVzdCBmb3IgdGhpcyBiZWhhdmlvdXIuCgoJKiBkbGxzL2FkdmFwaTMyL2xzYS5jLCBkbGxzL2NvbWN0bDMyL3Rlc3RzL2RwYS5jLCBkbGxzL2QzZDgvZGV2aWNlLmMsCgkgIGRsbHMvZDNkOS9zdGF0ZWJsb2NrLmMsIGRsbHMvZGRyYXcvc3VyZmFjZV9kaWIuYywKCSAgZGxscy9kbWltZS90ZW1wb3RyYWNrLmMsIGRsbHMvc2hlbGwzMi9zaGxleGVjLmMsCgkgIGRsbHMvc2hlbGwzMi90ZXN0cy9zaGxmb2xkZXIuYywgZGxscy93aW5lZDNkL2RldmljZS5jLAoJICBkbGxzL3dpbmVkM2QvZGlyZWN0eC5jLCBkbGxzL3dpbmVkM2QvZHJhd3ByaW0uYywKCSAgZGxscy93aW5lZDNkL3N0YXRlYmxvY2suYywgZGxscy93aW5lZDNkL3N1cmZhY2UuYywKCSAgZGxscy93aW5lZDNkL3N3YXBjaGFpbi5jLCBkbGxzL3dpbmVkM2QvdmVydGV4ZGVjbGFyYXRpb24uYywKCSAgcHJvZ3JhbXMvd2luZWRiZy93aW5lZGJnLm1hbjoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQXNzb3J0ZWQgc3BlbGxpbmcgZml4ZXMuCgoJKiB0b29scy93aW5hcGkvd2luMzIuYXBpOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFkZCBtaXNzaW5nIHR5cGVzIHRvIHdpbjMyLmFwaS4KCgkqIGRsbHMvbXNodG1sL29sZW9iai5jLCBkbGxzL21zaHRtbC90ZXN0cy9odG1sZG9jLmM6CglKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJLSBBZGRlZCB0ZXN0IG9mIElPbGVPYmplY3Q6OltTR11ldENsaWVudFNpdGUuCgktIEZpeCBJT2xlT2JqZWN0X1NldENsaWVudFNpdGUgdG8gcGFzcyB0ZXN0cy4KCgkqIGRsbHMvdXNlci9jdXJzb3JpY29uLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZSB1bnVzZWQgZnVuY3Rpb24gYXJncy4KCgkqIHNlcnZlci9hdG9tLmMsIHNlcnZlci9jbGlwYm9hcmQuYywgc2VydmVyL3VzZXIuaCwKCSAgc2VydmVyL3dpbnN0YXRpb24uYzoKCUV4cG9ydCB0aGUgd2luc3RhdGlvbiBhbmQgZGVza3RvcCBzdHJ1Y3R1cmVzIHRvIGF2b2lkIGhhdmluZyB0byB3cml0ZQoJdG9vIG1hbnkgYWNjZXNzb3IgZnVuY3Rpb25zLgoKCSogZGxscy9vbGVhdXQzMi9jb25ucHQuYywgZGxscy9vbGVhdXQzMi9kaXNwYXRjaC5jLAoJICBkbGxzL29sZWF1dDMyL29sZWZvbnQuYywgZGxscy9vbGVhdXQzMi9vbGVwaWN0dXJlLmMsCgkgIGRsbHMvb2xlYXV0MzIvcmVjaW5mby5jLCBkbGxzL29sZWF1dDMyL3RtYXJzaGFsLmMsCgkgIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jLCBkbGxzL29sZWF1dDMyL3R5cGVsaWIyLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglJbnRlcmxvY2tlZCBMT05HKiBnY2Mgd2FybmluZyBmaXhlcy4KCgkqIHByb2dyYW1zL3dpbmVjZmcvRW4ucmMsIHByb2dyYW1zL3dpbmVjZmcvRnIucmMsCgkgIHByb2dyYW1zL3dpbmVjZmcvYXVkaW8uYywgcHJvZ3JhbXMvd2luZWNmZy9yZXNvdXJjZS5oOgoJUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CglBZGQgc29tZSBiYXNpYyBkc291bmQgY29uZmlndXJhdGlvbiBvbiBBdWRpbyBwYW5lbC4KCgkqIGRsbHMvc2hlbGwzMi9zaGZsZHJfdW5peGZzLmM6CglNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglEb24ndCB1c2UgdW5peCBmaWxlc3lzdGVtIHNwZWNpZmljIGF0dHJpYnV0ZXMgaW4gVW5peEZvbGRlcidzIHBpZGxzLgoKCSogZGxscy9zaGVsbDMyL3NoZmxkcl9mcy5jLCBkbGxzL3NoZWxsMzIvc2hmbGRyX215Y29tcC5jOgoJTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJUmVsZWFzZSBwYXJlbnQgc2hlbGwgZm9sZGVyIGluIEdldEF0dHJpYnV0ZXNPZi4KCgkqIHByb2dyYW1zL3djbWQvYnVpbHRpbnMuYzogRGV0bGVmIFJpZWtlbmJlcmcgPHdpbmUuZGV2QHdlYi5kZT4KCURvIG5vdCBwcmludCBhbiBlcnJvciBtZXNzYWdlIHdoZW4gZGVsZXRpbmcgYSBub25leGlzdGVudCB2YXJpYWJsZS4KCgkqIGRsbHMvdXJsbW9uL3Vtb24uYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVVSTE1vbmlrZXJJbXBsX0JpbmRUb1N0b3JhZ2U6IERvbid0IHVzZSBhIEhlYXBBbGxvY2F0ZWQgcG9pbnRlciBmb3IKCW90aGVyIHB1cnBvc2VzLgoKCSogZGxscy9yaWNoZWQyMC9lZGl0b3IuYzogRmVsaXggTmF3b3RobmlnIDxmZWxpeC5uYXdvdGhuaWdAdC1vbmxpbmUuZGU+CglDaGVjayBzdHJ1Y3R1cmUgc2l6ZSBhbmQgZml4IHJldHVybiB2YWx1ZXMgaW4gRU1fR0VUQ0hBUkZPUk1BVC4KCjIwMDUtMDctMTAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3NldHVwYXBpL3F1ZXVlLmMsIGRsbHMvc2V0dXBhcGkvc2V0dXBhcGkuc3BlYzoKCURldGxlZiBSaWVrZW5iZXJnIDx3aW5lLmRldkB3ZWIuZGU+CglTZXR1cFNldEZpbGVRdWV1ZUFsdGVybmF0ZVBsYXRmb3Jte0FXfSBpbXBsZW1lbnRlZCBhcyBzdHViLgoKCSogZGxscy93aW5lZDNkL2RldmljZS5jOiBPbGl2ZXIgU3RpZWJlciA8b2xpdmVyX3N0aWViZXJAeWFob28uY28udWs+CglDaGVjayB0byBzZWUgaWYgdGhlIHZlcnRleCBkZWNsYXJhdGlvbiBpcyBudWxsIGJlZm9yZSB0cnlpbmcgdG8KCXJlZmVyZW5jZSBpdC4KCgkqIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWM6CglUaGUgb3JkaW5hbCBmdW5jdGlvbnMgc2hvdWxkIG5vdCBiZSBleHBvcnRlZCBieSBuYW1lLgoKCSogZGxscy9kM2Q4L3NoYWRlci5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIHNpZ25lZG5lc3MgaXNzdWVzLgoKCSogZGxscy93aW5lZDNkL2RpcmVjdHguYywgaW5jbHVkZS93aW5lL3dpbmVkM2RfZ2wuaDoKCU9saXZlciBTdGllYmVyIDxvbGl2ZXJfc3RpZWJlckB5YWhvby5jby51az4KCVRpZHkgdXAgdGhlIHdheSBjYXBzIGFyZSBtYW5hZ2VkIGluIEdldERldmljZUNhcHMgYW5kIEZpbGxHbENhcHMuCgoJKiBkbGxzL3VybG1vbi91bW9uLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglVUkxNb25pa2VySW1wbF9CaW5kVG9TdG9yYWdlOiBFc2NhcGUgc3BlY2lhbCBjaGFyYWN0ZXJzLgoKCSogZGxscy9jYWJpbmV0L2ZjaS5jOgoJR2Vyb2xkIEplbnMgV3VjaGVycGZlbm5pZyA8Z2p3dWNoZXJwZmVubmlnQGdteC5uZXQ+CglUaGUgZmNpX2dldF9saXR0bGVfZW5kaWFuLi4uIGFuZCBmY2lfc2V0X2xpdHRsZV9lbmRpYW4uLi4gZnVuY3Rpb25zCglkb24ndCByZWFsbHkgc2V0IGFuZCB1bnNldCBsaXR0bGUgZW5kaWFuZXMsIHRoZXkgZG8gdGhlIHNhbWUgdGhpbmc6CgltZXJlbHkgc3dhcHBpbmcgYnl0ZXMgZnJvbSBvbmUgZW5kaWFuZXMgdG8gdGhlIG90aGVyLgoKCSogZGxscy9tc3ZjcnQvZmlsZS5jOiBGZWxpeCBOYXdvdGhuaWcgPGZlbGl4Lm5hd290aG5pZ0B0LW9ubGluZS5kZT4KCUFsbG93IHJlYWRpbmcgMCBieXRlcyBpbiBmcmVhZC4KCgkqIGxpYnMvd2luZS9sb2FkZXIuYywgdG9vbHMvd2luZWJ1aWxkL3JlczE2LmMsIHRvb2xzL3dpbmVidWlsZC9yZXMzMi5jLAoJICB0b29scy93cmMvZHVtcHJlcy5jLCB0b29scy93cmMvZ2VucmVzLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIHNpZ25lZG5lc3Mgd2FybmluZ3MuCgoJKiBkbGxzL3VzZXIvYnV0dG9uLmM6IEZlbGl4IE5hd290aG5pZyA8ZmVsaXgubmF3b3RobmlnQHQtb25saW5lLmRlPgoJRml4IGEgdHlwby4KCgkqIGRsbHMvbnRkbGwvZW52LmM6IERldGxlZiBSaWVrZW5iZXJnIDx3aW5lLmRldkB3ZWIuZGU+CglGaXhlZCB0cmFjZXMuCgoJKiBwcm9ncmFtcy93aW5lY2ZnL0VuLnJjOiBCcmlhbiBWaW5jZW50IDx2aW5uQHRoZXNoZWxsLmNvbT4KCURlc2NyaWJlIHRhYnMgYmVpbmcgbGlua2VkIHRvZ2V0aGVyLgoKCSogaW5jbHVkZS93aW50ZXJubC5oOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglEZWZpbmUgdGhlIHJlbWFpbmluZyBOdCogZnVuY3Rpb25zLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvbnRkbGwvY2Ryb20uYywgaW5jbHVkZS9jb25maWcuaC5pbjoKCUdlcmFsZCBQZmVpZmVyIDxnZXJhbGRAcGZlaWZlci5jb20+CglBZGQgYSBjb25maWd1cmUgY2hlY2sgZm9yIHN0cnVjdCByZXF1ZXN0X3NlbnNlLiAgVXNlIHRoaXMgaW4KCUNEUk9NX1Njc2lQYXNzVGhyb3VnaERpcigpIGFuZCBDRFJPTV9TY3NpUGFzc1Rocm91Z2goKSB0byB1bmJyZWFrIHRoZQoJYnVpbGQgb24gRnJlZUJTRC4KCgkqIGRsbHMvc2V0dXBhcGkvZGlza3NwYWNlLmM6CglUaG9tYXMgV2VpZGVubXVlbGxlciA8d2luZS1wYXRjaGVzQHJlYWN0c29mdC5jb20+CglGaXhlZCBlbnVtZXJhdGluZyB0aGUgZHJpdmUgc3RyaW5ncy4KCgkqIGRsbHMvbXNpL2luc3RhbGwuYywgZGxscy9tc2kvbXNpLnNwZWM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IE1zaUdldExhbmd1YWdlLgoKCSogZGxscy93aW5zcG9vbC9pbmZvLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglTY2hlZHVsZUpvYiBmb3IgJ2xwcicgcG9ydHMuCgoyMDA1LTA3LTA4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2VydmVyL2F0b20uYywgc2VydmVyL2NsYXNzLmMsIHNlcnZlci9vYmplY3QuaCwgc2VydmVyL3dpbmRvdy5jOgoJRXhwbGljaXRseSBwYXNzIHRoZSB3aW5zdGF0aW9uIHRvIHRoZSBhdG9tIGZ1bmN0aW9ucyBzbyB0aGF0IHRoZXkgY2FuCgliZSB1c2VkIGV2ZW4gd2hlbiBjdXJyZW50IGlzIG5vdCBzZXQuCgoJKiBkbGxzL3dpbnNwb29sL2luZm8uYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCB7U3RhcnQsRW5kfURvY1ByaW50ZXIgYW5kIFdyaXRlUHJpbnRlci4KCXtTdGFydCxFbmR9UGFnZVByaW50ZXIgYXJlIHN0aWxsIHN0dWJzIGJ1dCByZXR1cm4gVFJVRS4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jLCBkbGxzL21zaS9wYWNrYWdlLmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJSW5zdGFsbFNoaWVsZCBkb2VzIGEgbnVtYmVyIG9mIGFjdGlvbnMgdXNpbmcgRG9BY3Rpb24gYmVmb3JlIHRoZQoJSW5zdGFsbCBzdGFydHMgc28gdGhlIFBhY2thZ2VDb2RlIG5lZWRzIHRvIGJlIGxvYWRlZCBvbiBPcGVuUGFja2FnZQoJaW5zdGVhZCBvZiB0aGUgYmVnaW5uaW5nIG9mIHRoZSBpbnN0YWxsIHByb2Nlc3MuCgoJKiBkbGxzL3NoZWxsMzIvcGlkbC5jOiBNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglGYWlsIGluIFNIR2V0RGF0YUZyb21JRExpc3Qgd2hlbiBjYWxsZWQgb24gc3BlY2lhbCBmb2xkZXIuCgoJKiBkbGxzL3NoZWxsMzIvc2hmbGRyX3VuaXhmcy5jOgoJTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJUGFydGlhbGx5IGltcGxlbWVudGVkIFVuaXhGb2xkZXIncyBJU0ZIZWxwZXI6OkNvcHlJdGVtcyBtZXRob2QuCgoJKiBkbGxzL3VzZXIvdXNlcl9tYWluLmMsIGRsbHMvdXNlci91c2VyX3ByaXZhdGUuaCwgZGxscy91c2VyL3dpbi5jLAoJICBkbGxzL3VzZXIvd2luc3RhdGlvbi5jLCBpbmNsdWRlL3dpbi5oLAoJICBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsIHNlcnZlci9wcm90b2NvbC5kZWYsCgkgIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci90cmFjZS5jLCBzZXJ2ZXIvdXNlci5oLCBzZXJ2ZXIvd2luZG93LmM6CglQdXQgaW4gcGxhY2UgdGhlIGJhc2ljIGluZnJhc3RydWN0dXJlIHRvIGFsbG93IHN1cHBvcnRpbmcgbXVsdGlwbGUKCWRlc2t0b3Agd2luZG93cy4KCgkqIGRsbHMvdXNlci9kZGVfY2xpZW50LmMsIGRsbHMvdXNlci9kZGVfbWlzYy5jLAoJICBkbGxzL3VzZXIvZGRlX3ByaXZhdGUuaCwgZGxscy91c2VyL2RkZV9zZXJ2ZXIuYywgZGxscy91c2VyL2RkZW1sMTYuYywKCSAgZGxscy91c2VyL3Rlc3RzL2RkZS5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBEREUgdHJhbnNhY3Rpb24gdGVzdCwgbWFrZSBpdCBwYXNzIHVuZGVyIFdpbmUuCgoJKiBkbGxzL2NvbW1kbGcvY2RsZ19EZS5yYywgcHJvZ3JhbXMvY21kbGd0c3QvRGUucmMsCgkgIHByb2dyYW1zL3dpbmVjZmcvRGUucmM6CglIZW5uaW5nIEdlcmhhcmR0IDxoZW5uaW5nLmdlcmhhcmR0QHdlYi5kZT4KCVVwZGF0ZSBHZXJtYW4gcmVzb3VyY2UgZmlsZXMuCgoJKiBkbGxzL3NldHVwYXBpL1BsLnJjLCBkbGxzL3NldHVwYXBpL3NldHVwYXBpLnJjOgoJU2ViYXN0aWFuIEdhc2lvcmVrIDx6ZWJhc29mdGlzQGdtYWlsLmNvbT4KCUFkZGVkIFBvbGlzaCByZXNvdXJjZXMuCgoJKiBpbmNsdWRlL21zdmNydC9tYmN0eXBlLmg6IFZpamF5IEtpcmFuIEthbXVqdSA8aW5meXF1ZXN0QGdtYWlsLmNvbT4KCUFkZCBfTUJfQ1BfKiBkZWZpbmVzLgoKCSogZGxscy9wc2FwaS9wc2FwaV9tYWluLmMsIGRsbHMvcHNhcGkvdGVzdHMvcHNhcGlfbWFpbi5jOgoJRmVsaXggTmF3b3RobmlnIDxmZWxpeC5uYXdvdGhuaWdAdC1vbmxpbmUuZGU+CglNYWtlIEdldFByb2Nlc3NNZW1vcnlJbmZvIGZhaWwgaWYgdGhlIHBhc3NlZCBidWZmZXIgaXMgdG9vIHNtYWxsLgoKCSogaW5jbHVkZS93aW5jcnlwdC5oOiBKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglBZGQgYSBmZXcgbW9yZSBtaXNzaW5nIGRlZmluZXMuCgoJKiBkbGxzL3VzZXIvc3lzcGFyYW1zLmM6IEZyYW5rIFJpY2h0ZXIgPGZyYW5rLnJpY2h0ZXJAZ21haWwuY29tPgoJQWx3YXlzIHplcm8gZGVzdGluYXRpb24gYnVmZmVyIGluIFNZU1BBUkFNU19Mb2FkUmF3KCkuIFJlbW92ZQoJbm93LXN1cGVyZmx1b3VzIG1lbW9yeSB6ZXJvaW5nIGluIHNvbWUgb3RoZXIgcGxhY2VzLgoKCSogZGxscy9jb21jdGwzMi9kcGEuYywgZGxscy9jb21jdGwzMi90ZXN0cy9kcGEuYzoKCUZlbGl4IE5hd290aG5pZyA8ZmVsaXgubmF3b3RobmlnQHQtb25saW5lLmRlPgoJRml4IHNvbWUgRFBBIGZ1bmN0aW9ucyBzbyB0aGV5IHBhc3MgdGhlIG5ldyB0ZXN0cy4KCgkqIGRsbHMvc2hlbGwzMi9zaGZsZHJfdW5peGZzLmMsIGRsbHMvc2hlbGwzMi90ZXN0cy9zaGxmb2xkZXIuYzoKCU1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCVJldHVybiBjb3JyZWN0IEhSRVNVTFQgY29kZSBpbiBVbml4Rm9sZGVyJ3MgSUVudW1JRExpc3Q6Ok5leHQuCglDb3JyZXNwb25kaW5nIHRlc3QuCgoJKiBkbGxzL21zaS9tc2kuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJSW4gTXNpTG9jYXRlQ29tcG9uZW50IHBjY2hCdWYgY2FuIGJlIE5VTEwgc28gZG9uJ3QgdHJ5IHRvIGRlcmVmZXJlbmNlCglpdC4KCgkqIGluY2x1ZGUvdGV4dHNlcnYuaDogTWFhcnRlbiBMYW5raG9yc3QgPG0uYi5sYW5raG9yc3RAZ21haWwuY29tPgoJSVRleHRTZXJ2aWNlc19PblR4SW5wbGFjZURlYWN0aXZhdGUgZG9lcyBub3QgdGFrZSBhIHBhcmFtZXRlci4KCgkqIGRsbHMvZDNkOS9kM2Q5X3ByaXZhdGUuaCwgZGxscy9kM2Q5L3BpeGVsc2hhZGVyLmM6CglPbGl2ZXIgU3RpZWJlciA8b2xpdmVyQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbGF5IGFsbCB0aGUgcGl4ZWwgc2hhZGVyIGNhbGxzIGZyb20gZDNkOSB0byB3aW5lZDNkLgoKMjAwNS0wNy0wNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvZDNkOS92ZXJ0ZXhkZWNsYXJhdGlvbi5jLCBkbGxzL3dpbmVkM2QvZGV2aWNlLmMsCgkgIGRsbHMvd2luZWQzZC9kcmF3cHJpbS5jLCBkbGxzL3dpbmVkM2QvdmVydGV4ZGVjbGFyYXRpb24uYywKCSAgaW5jbHVkZS93aW5lL3dpbmVkM2RfaW50ZXJmYWNlLmg6CglPbGl2ZXIgU3RpZWJlciA8b2xpdmVyQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIHN1cHBvcnQgZm9yIHZlcnRleCBkZWNsYXJhdGlvbnMgdG8gd2luZWQzZCwgaXQncyB0aGUgbGFzdCBwYXRjaAoJdG8gZ2l2ZSB3aW5lZDNkIGJhc2ljIGZ1bmN0aW9uYWxpdHkuCgoJKiBkbGxzL2QzZDkvZGV2aWNlLmMsIGRsbHMvd2luZWQzZC9kZXZpY2UuYywgZGxscy93aW5lZDNkL2RpcmVjdHguYywKCSAgZGxscy93aW5lZDNkL3N1cmZhY2UuYywgZGxscy93aW5lZDNkL3V0aWxzLmMsCgkgIGRsbHMvd2luZWQzZC93aW5lZDNkX3ByaXZhdGUuaDoKCU9saXZlciBTdGllYmVyIDxvbGl2ZXJAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IHJlbmRlciB0YXJnZXRzIHVzaW5nIGVpdGhlciB0ZXh0dXJlcywgc3dhcGNoYWlucyBvcgoJc3RhbmRhbG9uZSBzdXJmYWNlcy4KCgkqIGRsbHMvdHR5ZHJ2L3dpbmV0dHkuZHJ2LnNwZWMsIGRsbHMvdHR5ZHJ2L3duZC5jLAoJICBkbGxzL3VzZXIvdXNlcl9tYWluLmMsIGRsbHMvdXNlci91c2VyX3ByaXZhdGUuaCwgZGxscy91c2VyL3dpbi5jLAoJICBkbGxzL3gxMWRydi93aW5kb3cuYywgZGxscy94MTFkcnYvd2luZXgxMS5kcnYuc3BlYywKCSAgZGxscy94MTFkcnYvd2lucG9zLmM6CglNb3ZlZCBpbml0aWFsaXphdGlvbiBvZiB0aGUgZGVza3RvcCB3aW5kb3cgaW4gdGhlIGdyYXBoaWNzIGRyaXZlciB0byBhCglzZXBhcmF0ZSBDcmVhdGVEZXNrdG9wV2luZG93IGVudHJ5IHBvaW50IGluc3RlYWQgb2Ygb3ZlcmxvYWRpbmcKCUNyZWF0ZVdpbmRvdy4KCgkqIGRsbHMvdXNlci9tZW51LmM6CglSZW1vdmVkIGNyZWF0aW9uIG9mIHRoZSBubyBsb25nZXIgdXNlZCBzaGFkaW5nIGJydXNoLgoKCSogZGxscy9jcnlwdDMyL2NlcnQuYywgZGxscy9jcnlwdDMyL2NyeXB0MzIuc3BlYywKCSAgZGxscy9jcnlwdDMyL3Rlc3RzL21haW4uYzoKCUp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCUltcGxlbWVudCBhIGZldyB1dGlsaXR5IGZ1bmN0aW9ucywgd2l0aCB0ZXN0cy4KCgkqIGluY2x1ZGUvd2luY3J5cHQuaDogSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJQ29ycmVjdCBhIHR5cG8uCgoJKiBwcm9ncmFtcy93aW5lZmlsZS93aW5lZmlsZS5jOiBNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJLSBtb3ZlIElEX0FCT1VUX1dJTkUgaW50byAjaWZkZWYgX19XSU5FX18KCS0gc3VwcG9ydCBmb3IgcmVmcmVzaCBpbiBzaGVsbCBuYW1lc3BhY2Ugd2luZG93cwoKCSogZGxscy9tc2kvYWN0aW9uLmMsIGRsbHMvbXNpL2hlbHBlcnMuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglGaWxsIGFuZCB1c2UgdGhlIFByb2R1Y3RDb2RlIHBhcnQgb2YgdGhlIE1TSVBBQ0tBR0Ugc3RydWN0dXJlLgoKCSogZGxscy9uZXRhcGkzMi9hY2Nlc3MuYywgZGxscy9uZXRhcGkzMi9uZXRhcGkzMi5zcGVjOgoJRGV0bGVmIFJpZWtlbmJlcmcgPHdpbmUuZGV2QHdlYi5kZT4KCU5ldFVzZXJBZGQgKyBOZXRVc2VyRGVsIGltcGxlbWVudGVkIGFzIHN0dWIuCglNYWRlIHNvbWUgRklYTUUgbW9yZSBpbmZvcm1hdGl2ZS4KCU1hcmtlZCBzb21lIEZJWE1FIGFzIHN0dWIuCglBZGRlZCBjb21tZW50cyBiZWZvcmUgc29tZSBmdW5jdGlvbnMuCgoJKiBkbGxzL250ZGxsL2xvYWRvcmRlci5jOgoJVXNlIHRoZSBzYW1lIGRlZmF1bHRzIGZvciBtb2R1bGVzIHdpdGggYW5kIHdpdGhvdXQgYW4gZXhwbGljaXQgcGF0aC4KCgkqIGRsbHMvdXNlci9zeXNwYXJhbXMuYzogRnJhbmsgUmljaHRlciA8ZnJhbmsucmljaHRlckBnbWFpbC5jb20+CglBZGQgc3VwcG9ydCBmb3IgcHJvcGVyIHNhdmluZyBvZiB0aGUgIkZMQVRNRU5VIiBhbmQgIkdSQURJRU5UQ0FQSU9OIgoJc3lzdGVtIHBhcmFtZXRlcnMgdG8gdGhlIHJlZ2lzdHJ5LgoKCSogZGxscy91c2VyL3VpdG9vbHMuYzogRnJhbmsgUmljaHRlciA8ZnJhbmsucmljaHRlckBnbWFpbC5jb20+CglXaW5lIGhhcyBub3cgYSBNYXJsZXR0IGZvbnQsIGhlbmNlIHRoZSB3aW5kb3cgYnV0dG9ucyBjYW4gbm93IGJlIGRyYXduCgl1c2luZyB0aGF0IGFuZCBub3Qgc29tZSBwb2x5bGluZXMuCgoJKiBmb250cy93aW5lX21hcmxldHQuc2ZkOiBGcmFuayBSaWNodGVyIDxmcmFuay5yaWNodGVyQGdtYWlsLmNvbT4KCUFkZGVkIGEgcmVhbCAid2luZG93IHJlc3RvcmUiIGdseXBoIHRvIFdpbmUgTWFybGV0dC4KCgkqIGRsbHMvY29tbWRsZy9jZGxnX0VuLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19SdS5yYywKCSAgZGxscy9jb21tZGxnL3ByaW50ZGxnLmM6CglFdWdlbnkgR29yZWxvdiA8dGZ0QGV0ZXJzb2Z0LnJ1PgoJSW1wbGVtZW50IG1vc3QgZnVuY3Rpb25hbGl0eSBvZiBQYWdlU2V0dXBEbGcgZnVuY3Rpb24uCgoJKiBwcm9ncmFtcy9jbWRsZ3RzdC9Fbi5yYywgcHJvZ3JhbXMvY21kbGd0c3QvUnUucmMsCgkgIHByb2dyYW1zL2NtZGxndHN0L2NtZGxndHN0LmMsIHByb2dyYW1zL2NtZGxndHN0L2NtZGxndHN0Lmg6CglFdWdlbnkgR29yZWxvdiA8dGZ0QGV0ZXJzb2Z0LnJ1PgoJQWRkZWQgUGFnZVNldHVwRGxnIHRlc3QuCgoJKiBkbGxzL3gxMWRydi93aW5kb3cuYywgZGxscy94MTFkcnYveDExZHJ2X21haW4uYzoKCU1vdmVkIG1vc3QgaW5pdGlhbGl6YXRpb25zIG91dCBvZiB0aGUgY3JlYXRlX2Rlc2t0b3AgZnVuY3Rpb24gYW5kIGludG8KCXByb2Nlc3NfYXR0YWNoLgoKCSogZGxscy91c2VyL3dpbi5jLCBkbGxzL3VzZXIvd2lucG9zLmMsIGluY2x1ZGUvd2lucG9zLmg6CglEZWxheSBjcmVhdGlvbiBvZiB0aGUgaW50ZXJuYWwgcG9zIGF0b20gdW50aWwgbmVlZGVkLgoKCSogZGxscy9tc2Ntcy90ZXN0cy9NYWtlZmlsZS5pbiwgZGxscy9tc2Ntcy90ZXN0cy9wcm9maWxlLmM6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCUR5bmFtaWNhbGx5IGxvYWQgbXNjbXMuCgoJKiBwcm9ncmFtcy93aW5lY2ZnL0RlLnJjOiBGcmFuayBSaWNodGVyIDxmcmFuay5yaWNodGVyQGdtYWlsLmNvbT4KCVVwZGF0ZSBHZXJtYW4gdHJhbnNsYXRpb24gZm9yIGNoYW5nZXMgdG8gdGhlIERMTCBvdmVycmlkZXMgVUkuCgoJKiBpbmNsdWRlL2NvbW1kbGcuaDogRXVnZW55IEdvcmVsb3YgPHRmdEBldGVyc29mdC5ydT4KCUFkZGVkIFBTRF9OT05FVFdPUktCVVRUT04gZGVmaW5lLgoKCSogZGxscy9vbGUzMi9tZW1sb2NrYnl0ZXMuYywgZGxscy9vbGUzMi9zdG9yYWdlMzIuYzoKCVZpdGFseSBMaXBhdG92IDxsYXZAZXRlcnNvZnQucnU+CglBZGRlZCBzb21lIGRvY3VtZW50YXRpb24uCgoJKiBkbGxzL21zaS9kaWFsb2cuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJVXNlIExvYWRJbWFnZSB0byBsb2FkIGJpdG1hcHMgYW5kIGljb25zLgoKCSogZGxscy91c2VyL3Rlc3RzL21zZy5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkIGEgTXNnV2FpdEZvck11bHRpcGxlT2JqZWN0cyB0ZXN0LgoKCSogZGxscy9hZHZhcGkzMi9yZWdpc3RyeS5jLCBkbGxzL2FkdmFwaTMyL3Rlc3RzL2NyeXB0LmMsCgkgIGRsbHMvZGV2ZW51bS9tZWRpYWNhdGVudW0uYywgZGxscy9kbXVzaWMvZG11c2ljLmMsCgkgIGRsbHMvZHBsYXl4L2RwbGF5LmMsIGRsbHMvZHBsYXl4L2RwbG9iYnkuYywKCSAgZGxscy9kc291bmQvZHNvdW5kX21haW4uYywgZGxscy9pcGhscGFwaS9pcGhscGFwaV9tYWluLmMsCgkgIGRsbHMvbXByL3B3Y2FjaGUuYywgZGxscy9uZXRhcGkzMi9uYnQuYywgZGxscy9vbGVkbGcvaW5zb2JqZGxnLmMsCgkgIGRsbHMvcG93cnByb2YvcG93cnByb2YuYywgZGxscy9zZXR1cGFwaS92aXJ0Y29weS5jLAoJICBkbGxzL3NobHdhcGkvcmVnLmMsIGRsbHMvdGFwaTMyL2xpbmUuYywgZGxscy91eHRoZW1lL3N5c3RlbS5jLAoJICBkbGxzL3dpbmluZXQvdXJsY2FjaGUuYywgZGxscy93aW5tbS93aW5lYWxzYS9hdWRpby5jLAoJICBwcm9ncmFtcy9yZWdlZGl0L2VkaXQuYywgcHJvZ3JhbXMvd2luZWJyb3dzZXIvbWFpbi5jLAoJICBwcm9ncmFtcy93aW5lZGJnL3dpbmVkYmcuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCWdjYyA0LjAgLVdwb2ludGVyLXNpZ24gZml4ZXMgKFJlZyogZnVuY3Rpb25zKS4KCgkqIHNlcnZlci9tYXBwaW5nLmM6IENvbnZlcnQgdGhlIHNoYXJlZCBtYXBwaW5nIGxpc3QgdG8gYSBzdGFuZGFyZCBsaXN0LgoKCSogZGxscy9kYmdoZWxwL2VsZl9tb2R1bGUuYzoKCVdlIG5vIGxvbmdlciBoYXZlIHRodW5rcyBpbiB0aGUgZGF0YSBzZWN0aW9uLgoKCSogZGxscy91c2VyL3dpbi5jLCBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsIHNlcnZlci9wcm90b2NvbC5kZWYsCgkgIHNlcnZlci90cmFjZS5jLCBzZXJ2ZXIvd2luZG93LmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJTWFrZSBJc1dpbmRvd1VuaWNvZGUgd29yayBpbiB0aGUgY2FzZSB3aGVuIHdpbmRvdyBiZWxvbmdzIHRvIGFub3RoZXIKCXByb2Nlc3MuCgoJKiBwcm9ncmFtcy93aW5lZmlsZS9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luZWZpbGUvd2luZWZpbGUuYywKCSAgcHJvZ3JhbXMvd2luZWZpbGUvd2luZWZpbGUuaDoKCU1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CgktIHJlbW92ZSA8dGNoYXIuaD4gYW5kIDx3Y2hhci5oPiBoZWFkZXIgdXNhZ2UgYnkgc3dpdGNoaW5nIHRvIFdJTjMyCgkgIEFQSSBzdHJpbmcgbWFuaXB1bGF0aW9uIGZ1bmN0aW9ucyBhcyBmYXIgYXMgcG9zc2libGUKCS0gc3dpdGNoIHRvIFVOSUNPREUgY29tcGlsYXRvbgoJLSByZW1vdmUgbGF1bmNoX2ZpbGVBKCkgYW5kIHRjc2NweW4KCS0gZG9uJ3QgY3Jhc2ggaW4gc2V0X2N1cmRpcigpIGZvciBOVUxMIGluIHRoZSAnZW50cnknIHBvaW50ZXIKCgkqIHByb2dyYW1zL3dpbmVjZmcvTmwucmM6IFBhdWwgVnJpZW5zIDxQYXVsLlZyaWVuc0B4czRhbGwubmw+CglVcGRhdGUgdGhlIER1dGNoIHRyYW5zbGF0aW9ucy4KCgkqIHNlcnZlci9hdG9tLmMsIHNlcnZlci9vYmplY3QuaCwgc2VydmVyL3JlcXVlc3QuYywgc2VydmVyL3VzZXIuaCwKCSAgc2VydmVyL3dpbnN0YXRpb24uYzoKCVN0b3JlIHRoZSBnbG9iYWwgYXRvbSB0YWJsZSBpbiB0aGUgcHJvY2VzcyB3aW5kb3cgc3RhdGlvbi4KCgkqIGluY2x1ZGUvd2ludGVybmwuaDogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWRkIG1vcmUgTnQqIGZ1bmN0aW9ucy4KCgkqIGRsbHMvdXNlci9jb21iby5jOiBGZWxpeCBOYXdvdGhuaWcgPGZlbGl4Lm5hd290aG5pZ0B0LW9ubGluZS5kZT4KCVVwZGF0ZSBUT0RPIGxpc3QuCgoJKiBkbGxzL2NyeXB0MzIvZW5jb2RlLmMsIGRsbHMvY3J5cHQzMi90ZXN0cy9lbmNvZGUuYzoKCUp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCUVuY29kZS9kZWNvZGUgQ0VSVF9QVUJMSUNfS0VZX0lORk8sIHdpdGggdGVzdHMuCgoJKiBkbGxzL2NvbWN0bDMyL3Rlc3RzL2RwYS5jOgoJRmVsaXggTmF3b3RobmlnIDxmZWxpeC5uYXdvdGhuaWdAdC1vbmxpbmUuZGU+CglBZGQgYW5vdGhlciBmYWlsaW5nIERQQSB0ZXN0LgoKMjAwNS0wNy0wNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvd2luYXNwaS9hc3BpLmM6IEdlcmFsZCBQZmVpZmVyIDxnZXJhbGRAcGZlaWZlci5jb20+CglTQ1NJX0xpbnV4X0NoZWNrRGV2aWNlcygpIGlzIExpbnV4LW9ubHkgYXMgd2VsbC4KCgkqIGRsbHMvbXNjbXMvbXNjbXNfbWFpbi5jOiBIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCUZhaWwgbG9hZGluZyB3aGVuIGNvbXBpbGVkIHdpdGhvdXQgbGNtcyBzdXBwb3J0LgoKCSogZGxscy9hZHZhcGkzMi9jcnlwdC5jLCBkbGxzL2FkdmFwaTMyL3NlcnZpY2UuYywKCSAgZGxscy9hZHZhcGkzMi90ZXN0cy9yZWdpc3RyeS5jLCBkbGxzL2QzZDgvZDNkOF9tYWluLmMsCgkgIGRsbHMvbXN2aWRlby9tc3ZpZGVvMTYuYywgZGxscy9vbGVhdXQzMi90bWFyc2hhbC5jLAoJICBkbGxzL29sZWF1dDMyL3R5cGVsaWIxNi5jLCBkbGxzL29wZW5nbDMyL3dnbC5jLAoJICBkbGxzL3NldHVwYXBpL3NldHVweF9tYWluLmMsIGRsbHMvc2hlbGwzMi9jbGFzc2VzLmMsCgkgIGRsbHMvc2hlbGwzMi9kaWFsb2dzLmMsIGRsbHMvdXNlci90ZXN0cy9zeXNwYXJhbXMuYywKCSAgZGxscy93aW5hc3BpL2FzcGkuYywgZGxscy93aW5hc3BpL3dpbmFzcGkxNi5jLCBkbGxzL3dpbmVwcy9pbml0LmMsCgkgIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmMsIGRsbHMveDExZHJ2L3hmb250LmMsCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL3JlZ2lzdHJ5LmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglnY2MgNC4wIC1XcG9pbnRlci1zaWduIGZpeGVzIChSZWcqIGZ1bmN0aW9ucykuCgoJKiBwcm9ncmFtcy93aW5lY2ZnL0VuLnJjLCBwcm9ncmFtcy93aW5lY2ZnL2xpYnJhcmllcy5jLAoJICBwcm9ncmFtcy93aW5lY2ZnL3Jlc291cmNlLmg6CglGZWxpeCBOYXdvdGhuaWcgPGZlbGl4Lm5hd290aG5pZ0B0LW9ubGluZS5kZT4KCUNoYW5nZWQgbGF5b3V0IG9mIGxpYnJhcmllcyB0YWIsIG1vdmVkIGxvYWQtb3JkZXIgc2V0dGluZyBpbnRvIGV4dHJhCglkaWFsb2cuCgoJKiBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jOgoJRmVsaXggTmF3b3RobmlnIDxmZWxpeC5uYXdvdGhuaWdAdC1vbmxpbmUuZGU+CglEb24ndCBpbnZhbGlkYXRlIHRoZSB3aG9sZSBwcm9wc2hlZXQgd2hlbiB0aGUgcGFnZSBpcyBzd2l0Y2hlZC4KCgkqIGRsbHMvdXNlci9tZW51LmM6IFJlaW4gS2xhemVzIDx3aWpuQHdhbmFkb28ubmw+CgktIHdoZW4gc2VuZGluZyB0aGUgV01fRFJBV0lURU0gbWVzc2FnZSBpbiBjYXNlIG9mIGEgbWVudSBpdGVtIHdpdGgKCSAgaGJtcEl0ZW0gPSBIQk1NRU5VX0NBTExCQUNLLCBtb3ZlIHRoZSBkcmF3aW5nIG9yaWdpbiB0byB0aGUgdG9wIGxlZnQKCSAgb2YgdGhlIGl0ZW0gcmVjdGFuZ2xlCgktIGF0IHRoZSBzYW1lIHRpbWUgYWxzbyBtYWtlIHN1cmUgdGhhdCB0aGUgaXRlbVN0YXRlIGZpZWxkIG9mIHRoZQoJIERSQVdJVEVNU1RSVUNUIGlzIHByb3Blcmx5IGluaXRpYWxpemVkCgktIGRvIHRoZSBkcmF3aW5nIG9mIHRoZSBjaGVjayBtYXJrIGJlZm9yZSBzZW5kaW5nIHRoZSBXTV9EUkFXSVRFTQoJICBtZXNzYWdlLCBzb21lIGFwcGxpY2F0aW9uIGxpa2VzIHRvICJvdmVyZHJhdyIgdGhlIGNoZWNrbWFyay4KCgkqIGRsbHMvd2luZWQzZC9kcmF3cHJpbS5jOiBPbGl2ZXIgU3RpZWJlciA8b2xpdmVyX3N0aWViZXJAeWFob28uY28udWs+CglDaGFuZ2UgYWxsIHJlZmVyZW5jZXMgdG8gdXBkYXRlU3RhdGVCbG9jayB0byByZWZlcmVuY2VzIHRvIHN0YXRlQmxvY2sKCWluIGRyYXdwcmltLgoKCSogZGxscy9yaWNoZWQyMC9wYWludC5jLCBkbGxzL3JpY2hlZDIwL3dyYXAuYywgZGxscy90d2Fpbi9jYXBhYmlsaXR5LmMsCgkgIGRsbHMveDExZHJ2L3hmb250LmMsIGRsbHMveDExZHJ2L3hyYW5kci5jOgoJU3RlZmFuIEh1ZWhuZXIgPHN0ZWZhbkBodWVobmVyLm9yZz4KCU1ha2UgZnVuY3Rpb25zIHN0YXRpYyB0byBmaXggLVdtaXNzaW5nLWRlY2xhcmF0aW9ucyB3YXJuaW5ncy4KCgkqIGRsbHMvdXNlci9wYWludGluZy5jLCBkbGxzL3VzZXIvdGVzdHMvZGNlLmM6CglSZXN0b3JlIHRoZSBjbGlwIHJlZ2lvbiBhZnRlciBHZXREQ0V4IGluIHNlbmRfZXJhc2UgYXMgaWYgaXQgaGFkIGJlZW4KCWEgQmVnaW5QYWludC4KCgkqIHByb2dyYW1zL3dpbmVtZW51YnVpbGRlci93aW5lbWVudWJ1aWxkZXIuYzoKCU1vdmVkIHRoZSBjb25maWd1cmF0aW9uIGtleSB0byBIS0NVXFNvZnR3YXJlXFdpbmVcV2luZU1lbnVCdWlsZGVyLgoKCSogZGxscy9jb21jdGwzMi90ZXN0cy90cmVldmlldy5jLCBkbGxzL2RpbnB1dC90ZXN0cy9qb3lzdGljay5jLAoJICBkbGxzL250ZGxsL3Rlc3RzL2luZm8uYywgZGxscy9vbGVhdXQzMi90ZXN0cy92YXJ0ZXN0LmMsCgkgIGRsbHMvcHNhcGkvdGVzdHMvcHNhcGlfbWFpbi5jLCBkbGxzL3VzZXIvdGVzdHMvbWVudS5jLAoJICBkbGxzL3VzZXIvdGVzdHMvd2luLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFkZCB0cmFpbGluZyAnXG4ncyB0byBvaygpIGNhbGxzLgoKCSogZGxscy9tc2kvYWN0aW9uLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVN0b3AgdGhlIGluc3RhbGwgd2hlbiBjYW5jZWxsaW5nIGZyb20gYSBtb2RlbGVzcyBkaWFsb2cuCgoJKiBpbmNsdWRlL3dpbnRlcm5sLmg6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBtb3JlIE50KiBmdW5jdGlvbnMuCgoJKiBkbGxzL3dpbnNwb29sL01ha2VmaWxlLmluLCBkbGxzL3dpbnNwb29sL2luZm8uYzoKCUh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglBZGQgYW4gaW1wbGVtZW50YXRpb24gb2YgQWRkSm9iIGFuZCBhIHBhcnRpYWwgb25lIG9mIFNjaGVkdWxlSm9iLgoKCSogZGxscy9zaGVsbDMyL3NoZmxkcl91bml4ZnMuYzoKCU1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCUltcGxlbWVudGVkIFVuaXhGb2xkZXIncyBJU0ZIZWxwZXI6OkRlbGV0ZUl0ZW1zIGludGVyZmFjZS4KCgkqIGluY2x1ZGUvd2ludXNlci5oOiBGcmFuayBSaWNodGVyIDxmcmFuay5yaWNodGVyQGdtYWlsLmNvbT4KCUFkZCBtaXNzaW5nIERDX0dSQURJRU5UIGFuZCBEQ19CVVRUT05TLCBhcyB1c2VkIGJ5IERyYXdDYXB0aW9uLgoKCSogZGxscy9yaWNoZWQyMC9lZGl0b3IuYywgZGxscy9yaWNoZWQyMC9lZGl0b3IuaCwgZGxscy9yaWNoZWQyMC9yb3cuYzoKCVBoaWwgS3J5bG92IDxwaGlsQG5ld3N0YXIucmluZXQucnU+CglGaXhlZCBFTV9MSU5FSU5ERVggaGFuZGxlciBhbmQgYWRkZWQgRU1fTElORUZST01DSEFSIGhhbmRsZXIuCgoJKiBkbGxzL21zaS9ldmVudHMuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRG9uJ3QgY3Jhc2ggd2hlbiBjYW5jZWxsaW5nIG91dCBvZiBhIG1vZGVsZXNzIGRpYWxvZy4KCgkqIGRsbHMvdXNlci9zeXNwYXJhbXMuYzogRmVsaXggTmF3b3RobmlnIDxmZWxpeC5uYXdvdGhuaWdAdC1vbmxpbmUuZGU+CglDbGVhciBidWZmZXIgYmVmb3JlIHF1ZXJ5aW5nIHRoZSByZWdpc3RyeSBpbiBTWVNQQVJBTVNfTG9hZC4KCgkqIGRsbHMvc2hlbGwzMi9zaGZsZHJfdW5peGZzLmM6IE1pY2hhZWwgTGluIDxtbGluQGNvcnZ1LmNvbS5hdT4KCU1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCUltcGxlbWVudGVkIFVuaXhGb2xkZXIncyBJU0ZIZWxwZXI6OkFkZEZvbGRlci4KCgkqIGRsbHMvYWR2YXBpMzIvTWFrZWZpbGUuaW4sIGRsbHMvYWR2YXBpMzIvbHNhLmMsCgkgIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYzoKCUphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJQnJhbmNoIHRoZSBMU0EgZnVuY3Rpb25zIGZyb20gc2VjdXJpdHkuYyB0byBsc2EuYy4KCgkqIGRsbHMvdXNlci9kZGVfY2xpZW50LmMsIGRsbHMvdXNlci9kZGVfbWlzYy5jLCBkbGxzL3VzZXIvZGVmd25kLmMsCgkgIGRsbHMvdXNlci9kcml2ZXIxNi5jLCBkbGxzL3VzZXIvaG9vay5jLCBkbGxzL3VzZXIvaG9vazE2LmMsCgkgIGRsbHMvdXNlci9tZXNzYWdlLmMsIGRsbHMvdXNlci9zcHkuYywgZGxscy91c2VyL3N5c3BhcmFtcy5jLAoJICBkbGxzL3VzZXIvdGV4dC5jLCBkbGxzL3VzZXIvdXNlcl9tYWluLmMsIGRsbHMvdXNlci93aW5wcm9jLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CgktV3BvaW50ZXItc2lnbiBmaXhlcyBmb3IgZ2NjIDQuMC4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jLCBkbGxzL21zaS9tc2lwcml2LmgsIGRsbHMvbXNpL3N0cmluZy5jLAoJICBkbGxzL21zaS9zdW1pbmZvLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglnY2MgNC4wIC1XcG9pbnRlci1zaWduIGZpeGVzLgoKCSogZGxscy9tc2h0bWwvbWFpbi5jLCBkbGxzL21zaHRtbC9tc2h0bWxfcHJpdmF0ZS5oLAoJICBkbGxzL21zaHRtbC9wcm90b2NvbC5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IGdjYyA0LjAgLVdwb2ludGVyLXNpZ24gd2FybmluZ3MuCgoJKiBkbGxzL3JpY2hlZDIwL2VkaXRvci5jLCBkbGxzL3JpY2hlZDIwL2VkaXRvci5oLCBkbGxzL3JpY2hlZDIwL3Jvdy5jOgoJUGhpbCBLcnlsb3YgPHBoaWxAbmV3c3Rhci5yaW5ldC5ydT4KCUltcGxlbWVudGVkIEVNX0VYTElORUZST01DSEFSLCBFTV9MSU5FSU5ERVgsIEVNX0ZJTkRURVhULAoJRU1fRklORFRFWFRXLCBFTV9GSU5EVEVYVEVYLCBhbmQgRU1fRklORFRFWFRFWFcgbWVzc2FnZXMuCgoJKiBpbmNsdWRlL3dpbm50Lmg6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCURlZmluZSBQVk9JRDY0IGFuZCBGSUxFX1NFR01FTlRfRUxFTUVOVC4KCgkqIGRsbHMvdXh0aGVtZS9zeXN0ZW0uYzogRnJhbmsgUmljaHRlciA8ZnJhbmsucmljaHRlckBnbWFpbC5jb20+CglFdmVyeSB3aW5kb3cgbmVlZHMgdG8gcmVjZWl2ZSBXTV9USEVNRUNIQU5HRUQgKGVzcC4gY29udHJvbHMpLCBzbyBhbHNvCglzZW5kIGl0IHRvIGNoaWxkIHdpbmRvd3MuCgoJKiBkbGxzL2NvbWN0bDMyL01ha2VmaWxlLmluLCBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYywKCSAgZGxscy9jb21jdGwzMi9kcGEuYywgZGxscy9jb21jdGwzMi9kc2EuYzoKCUZlbGl4IE5hd290aG5pZyA8ZmVsaXgubmF3b3RobmlnQHQtb25saW5lLmRlPgoJTW92ZSBEUEEgYW5kIERTQSBmdW5jdGlvbnMgb3V0IG9mIGNvbWN0bDMydW5kb2MuYyBhcyB0aGV5IGFyZQoJZG9jdW1lbnRlZCBieSBub3cuCgoyMDA1LTA3LTA1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogdG9vbHMvd2luZWJ1aWxkL3JlbGF5LmM6IERvbid0IGRlcGVuZCBvbiBFTEYgZmVhdHVyZXMgZm9yIFBJQyBjb2RlLgoJQSBjb3VwbGUgb2Ygb3B0aW1pemF0aW9ucy4KCgkqIGRsbHMvbXNpL01ha2VmaWxlLmluLCBkbGxzL21zaS9maWxlcy5jLCBkbGxzL21zaS9tc2lwcml2LmgsCgkgIGRsbHMvbXNpL3NvdXJjZS5jLCBpbmNsdWRlL21zaS5oOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBzb3VyY2UuYyB0byBzdGFydCBoYW5kbGluZyB0aGUgdmFyaW91cyBNc2lTb3VyY2VMaXN0IGFwaXMgdXNlZCBpbgoJdjMgb2YgTVNJLCBhbmQgbm93IGludGVybmFsbHkuCglVcGRhdGUgZmlsZXMuYyB0byB1c2UgdGhlIE1zaVNvdXJjZUxpc3QgYXBpcyB0byBtYWtlIHN1cmUgb3VyCglTb3VyY2VMaXN0IGtleXMgaW4gdGhlIHJlZ2lzdHJ5IGFyZSBpbmNsdWRlZCBhbmQgY29ycmVjdC4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYzoKCURldGxlZiBSaWVrZW5iZXJnIDx3aW5lLmRldkB3ZWIuZGU+CglQcmludGVyX0xvYWRJY29uc1c6IGltcGxlbWVudGVkIG1pbmltYWwgdmVyc2lvbi4KCgkqIGRsbHMvcmljaGVkMjAvd3JhcC5jOiBQaGlsIEtyeWxvdiA8cGhpbEBuZXdzdGFyLnJpbmV0LnJ1PgoJRml4ZWQgYW4gb2ZmLWJ5LW9uZSBlcnJvciBpbiBFTV9HRVRMSU5FQ09VTlQgaGFuZGxlci4KCgkqIGRsbHMvcmljaGVkMjAvd3JpdGVyLmM6IFBoaWwgS3J5bG92IDxwaGlsQG5ld3N0YXIucmluZXQucnU+CglGaXhlZCBhbm90aGVyIGNvdXBsZSBvZiBFTV9TVFJFQU1PVVQgYnVncy4KCgkqIGluY2x1ZGUvdGV4dHNlcnYuaDogUGF1bCBWcmllbnMgPFBhdWwuVnJpZW5zQHhzNGFsbC5ubD4KCUZpeGVkIHR5cG8uCgoJKiBkbGxzL3NoZWxsMzIvc2hmbGRyX3VuaXhmcy5jOiBNaWNoYWVsIExpbiA8bWxpbkBjb3J2dS5jb20uYXU+CglNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglJU0ZIZWxwZXIgaW50ZXJmYWNlIHN1cHBvcnQgZm9yIFVuaXhGb2xkZXIgKGN1cnJlbnRseSBvbmx5IHN0dWJzKS4KCgkqIGRsbHMvYXZpZmlsMzIvYWNtc3RyZWFtLmMsIGRsbHMvYXZpZmlsMzIvYXZpZmlsZS5jLAoJICBkbGxzL2F2aWZpbDMyL2VkaXRzdHJlYW0uYywgZGxscy9hdmlmaWwzMi9nZXRmcmFtZS5jLAoJICBkbGxzL2F2aWZpbDMyL2ljbXN0cmVhbS5jLCBkbGxzL2F2aWZpbDMyL3RtcGZpbGUuYywKCSAgZGxscy9hdmlmaWwzMi93YXZmaWxlLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglnY2MgNC4wIC1XcG9pbnRlci1zaWduIGZpeGVzLgoKCSogZGxscy9tc2kvZGlhbG9nLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVNldCB0aGUgaW5pdGlhbCBmb2N1cyBvbiB0aGUgY29udHJvbCBzcGVjaWZpZWQgYnkgQ29udHJvbF9GaXJzdCBpbiB0aGUKCURpYWxvZyB0YWJsZS4KCgkqIGRsbHMvcmljaGVkMjAvd3JpdGVyLmM6IFBoaWwgS3J5bG92IDxwaGlsQG5ld3N0YXIucmluZXQucnU+CglSZW1vdmVkIGp1bmsgZnJvbSBVVEYtOCBSVEYgb3V0cHV0LgoKCSogaW5jbHVkZS90ZXh0c2Vydi5oOiBNYWFydGVuIExhbmtob3JzdCA8bS5iLmxhbmtob3JzdEBnbWFpbC5jb20+CglBZGRlZCB0eHRiaXQgZGVjbGFyYXRpb25zLgoKCSogcHJvZ3JhbXMvd2luZWNmZy9saWJyYXJpZXMuYzogSGFqaW1lIFNlZ2F3YSA8d2luZXRpcHNAc2lkZW5ldC5kZG8uanA+CglGaXggZm9yIGRlYnVnIG1lc3NhZ2UgYnVmZmVyIG92ZXJmbG93IGluIGxpYnJhcnkgdGFiLgoKCSogZGxscy9zaGVsbDMyL3NoZmxkcl91bml4ZnMuYzogTWljaGFlbCBMaW4gPG1saW5AY29ydnUuY29tLmF1PgoJTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJSW1wbGVtZW50ZWQgVW5peEZvbGRlcidzIElTaGVsbEZvbGRlcjo6U2V0TmFtZU9mLgoKCSogZGxscy9kM2Q5L2QzZDlfcHJpdmF0ZS5oLCBkbGxzL2QzZDkvcGl4ZWxzaGFkZXIuYywKCSAgZGxscy9kM2Q5L3N0YXRlYmxvY2suYywgZGxscy9kM2Q5L3ZlcnRleHNoYWRlci5jOgoJT2xpdmVyIFN0aWViZXIgPG9saXZlcl9zdGllYmVyQHlhaG9vLmNvLnVrPgoJU3RyaXAgb3V0IHN0YXRlYmxvY2tzIGZyb20gZDNkOSBhbmQgcmVsYXkgYWxsIHN0YXRlYmxvY2sgY2FsbHMgdG8KCXdpbmVkM2QuCgoJKiB0b29scy9zZm50MmZudC5jLCB0b29scy93aW5lYnVpbGQvc3BlYzE2LmMsIHRvb2xzL3dpbmVkdW1wL2xlLmMsCgkgIHRvb2xzL3dpbmVkdW1wL2xuay5jLCB0b29scy93aW5lZHVtcC9uZS5jLCB0b29scy93aW5lZHVtcC93aW5lZHVtcC5oLAoJICB0b29scy93cmMvcmVhZHJlcy5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jLAoJICBkbGxzL2NvbW1kbGcvZmlsZWRsZ2Jyb3dzZXIuYywgZGxscy9jb21tZGxnL2ZvbnRkbGcuYywKCSAgZGxscy9jb21tZGxnL2ZvbnRkbGcxNi5jLCBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYywKCSAgZGxscy9jb21tZGxnL3ByaW50ZGxnMTYuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCWdjYyA0LjAgLVdwb2ludGVyLXNpZ24gZml4ZXMuCgoJKiBpbmNsdWRlL21zeG1sLmlkbDogVmlqYXkgS2lyYW4gS2FtdWp1IDxpbmZ5cXVlc3RAZ21haWwuY29tPgoJQWRkIElYTUxFbGVtZW50Tm90aWZpY2F0aW9uU2luayBkZWZpbml0aW9uIGZvciBJRTQgY29tcGF0aWJpbGl0eS4KCgkqIGRsbHMvbXN2Y3J0L3Byb2Nlc3MuYzogRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglGaXhlZCBlcnJvbmVvdXMgZmlsZSBmbGFnIGluIF9wb3Blbi4KCgkqIGRsbHMvdXJsbW9uLy5jdnNpZ25vcmUsIGRsbHMvdXJsbW9uL01ha2VmaWxlLmluLAoJICBkbGxzL3VybG1vbi9yZWdzdnIuYywgZGxscy91cmxtb24vcnNyYy5yYywgZGxscy91cmxtb24vdXJsbW9uLmluZiwKCSAgZGxscy91cmxtb24vdXJsbW9uX21haW4uaDoKCUphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglSZWdpc3RlciBwcm90b2NvbHMuCgoJKiBkbGxzL250ZGxsL3Byb2Nlc3MuYywgZGxscy9udGRsbC92aXJ0dWFsLmM6CglGZWxpeCBOYXdvdGhuaWcgPGZlbGl4Lm5hd290aG5pZ0B0LW9ubGluZS5kZT4KCVJlcGxhY2Ugc3R1YnMgZm9yIGluZm9ybWF0aW9uIGNsYXNzZXMgaW4gTnRRdWVyeVZpcnR1YWxNZW1vcnkgYW5kCglOdFF1ZXJ5SW5mb3JtYXRpb25Qcm9jZXNzIGJ5IG1vcmUgZGVzY3JpcHRpdmUgbWVzc2FnZXMuCgoJKiBkbGxzL3V4dGhlbWUvZHJhdy5jOiBGcmFuayBSaWNodGVyIDxmcmFuay5yaWNodGVyQGdtYWlsLmNvbT4KCVVYVEhFTUVfTG9hZEltYWdlKCk6IFNldCBkZWZhdWx0IGltYWdlIGNvdW50IHRvIDEgdG8gYXZvaWQgZGl2aXNpb24gYnkKCXplcm8gaW4gY2FzZSBpbWFnZSBjb3VudCBwcm9wZXJ0eSBpcyBub3QgZ2l2ZW4uIFByb3Blcmx5IHN1cHBvcnQgMAoJc3RhdGUgSURzLgoKCSogZGxscy93aW5lZDNkL2RldmljZS5jLCBkbGxzL3dpbmVkM2QvZHJhd3ByaW0uYywKCSAgZGxscy93aW5lZDNkL3N0YXRlYmxvY2suYywgZGxscy93aW5lZDNkL3dpbmVkM2RfcHJpdmF0ZS5oLAoJICBpbmNsdWRlL3dpbmUvd2luZWQzZF9pbnRlcmZhY2UuaDoKCU9saXZlciBTdGllYmVyIDxvbGl2ZXJfc3RpZWJlckB5YWhvby5jby51az4KCUltcGxlbWVudGVkIHN0YXRlYmxvY2tzIGluIHdpbmVkM2QuCgoJKiBkbGxzL3VzZXIvZWRpdC5jLCBkbGxzL3VzZXIvdGVzdHMvZWRpdC5jOgoJVml0YWxpeSBNYXJnb2xlbiA8d2luZS1wYXRjaEBraWV2aW5mby5jb20+CglGaXggc29tZSBmYWlsaW5nIHRlc3RzLgoKCSogdG9vbHMvd2luZWJ1aWxkL2J1aWxkLmgsIHRvb2xzL3dpbmVidWlsZC9tYWluLmMsCgkgIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYzoKCUdldCByaWQgb2YgdGhlIGdsb2JhbCBkZWJ1Z2dpbmcgZmxhZy4KCgkqIGRsbHMva2VybmVsL2tlcm5lbDE2X3ByaXZhdGUuaCwgZGxscy9rZXJuZWwvbmVfbW9kdWxlLmMsCgkgIGRsbHMva2VybmVsL3JlbGF5MTYuYywgdG9vbHMvd2luZWJ1aWxkL3JlbGF5LmM6CglJbnRlcmNlcHQgZnVuY3Rpb25zIGZvciAxNi1iaXQgcmVsYXkgZGVidWdnaW5nIGJ5IHBhdGNoaW5nIHRoZQoJQ0FMTEZST00xNiB0YWJsZSBpbnN0ZWFkIG9mIGhhdmluZyB0aGUgd2luZV9jYWxsX2Zyb21fMTYgZnVuY3Rpb25zCgljYWxsIG91dCB0aGUgcmVsYXkgZnVuY3Rpb25zIGV4cGxpY2l0bHkuCgoJKiBkbGxzL2RwbGF5eC9kcGxheS5jLCBkbGxzL2RwbGF5eC9kcGxheXhfZ2xvYmFsLmMsCgkgIGRsbHMvZHBsYXl4L25hbWVfc2VydmVyLmMsIGRsbHMvZ2RpL2VuaG1ldGFmaWxlLmMsCgkgIGRsbHMvbXN2aWRjMzIvbXN2aWRlbzEuYywgZGxscy9uZXRhcGkzMi9hY2Nlc3MuYywKCSAgZGxscy9yaWNoZWQyMC9lZGl0b3IuYywgZGxscy9ycGNydDQvbmRyX29sZS5jLAoJICBkbGxzL3V4dGhlbWUvbXNzdHlsZXMuYzoKCVN0ZWZhbiBIdWVobmVyIDxzdGVmYW5AaHVlaG5lci5vcmc+CglGaXggLVdtaXNzaW5nLWRlY2xhcmF0aW9ucyB3YXJuaW5ncy4KCgkqIGRsbHMvb2xlMzIvYW50aW1vbmlrZXIuYywgZGxscy9vbGUzMi9iaW5kY3R4LmMsCgkgIGRsbHMvb2xlMzIvY2xpcGJvYXJkLmMsIGRsbHMvb2xlMzIvY29tcG9ial9wcml2YXRlLmgsCgkgIGRsbHMvb2xlMzIvY29tcG9zaXRlbW9uaWtlci5jLCBkbGxzL29sZTMyL2RhdGFjYWNoZS5jLAoJICBkbGxzL29sZTMyL2RlZmF1bHRoYW5kbGVyLmMsIGRsbHMvb2xlMzIvZXJyb3JpbmZvLmMsCgkgIGRsbHMvb2xlMzIvZmlsZW1vbmlrZXIuYywgZGxscy9vbGUzMi9mdG1hcnNoYWwuYywKCSAgZGxscy9vbGUzMi9oZ2xvYmFsc3RyZWFtLmMsIGRsbHMvb2xlMzIvaWZzLmMsCgkgIGRsbHMvb2xlMzIvaXRlbW1vbmlrZXIuYywgZGxscy9vbGUzMi9tYXJzaGFsLmMsCgkgIGRsbHMvb2xlMzIvbWVtbG9ja2J5dGVzLmMsIGRsbHMvb2xlMzIvbWVtbG9ja2J5dGVzMTYuYywKCSAgZGxscy9vbGUzMi9tb25pa2VyLmMsIGRsbHMvb2xlMzIvb2xlMTYuYywgZGxscy9vbGUzMi9vbGUyLmMsCgkgIGRsbHMvb2xlMzIvb2xlb2JqLmMsIGRsbHMvb2xlMzIvb2xlcHJveHkuYywgZGxscy9vbGUzMi9ycGMuYywKCSAgZGxscy9vbGUzMi9zdGdfcHJvcC5jLCBkbGxzL29sZTMyL3N0b3JhZ2UuYywgZGxscy9vbGUzMi9zdG9yYWdlMzIuaCwKCSAgZGxscy9vbGUzMi9zdHVibWFuYWdlci5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IGdjYyA0LjAgLVdwb2ludGVyLXNpZ24gd2FybmluZ3MuCgoJKiBkbGxzL3VzZXIvY3Vyc29yaWNvbi5jOiBEZXRsZWYgUmlla2VuYmVyZyA8d2luZS5kZXZAd2ViLmRlPgoJTG9hZEltYWdlVzogRml4IHR5cGUgb2YgVFJBQ0UgcGFyYW1ldGVyLgoKCSogaW5jbHVkZS8uY3ZzaWdub3JlLCBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL21pbWVpbmZvLmlkbDoKCVZpamF5IEtpcmFuIEthbXVqdSA8aW5meXF1ZXN0QGdtYWlsLmNvbT4KCUFkZGVkIGRlY2xhcmF0aW9uIGZvciBJTWltZUluZm8gaW50ZXJmYWNlLgoKCSogZGxscy9rZXJuZWwvcmVsYXkxNi5jLCBpbmNsdWRlL3dpbmUvd2luYmFzZTE2LmgsCgkgIHRvb2xzL3dpbmVidWlsZC9yZWxheS5jLCB0b29scy93aW5lYnVpbGQvc3BlYzE2LmM6CglBZGRlZCB2YXJhcmcgYXJndW1lbnQgdHlwZSBzbyB0aGF0IHRoZSByZWxheSBjb2RlIGNhbiBkaXN0aW5ndWlzaCBmcm9tCglhIG5vcm1hbCBjZGVjbCBmdW5jdGlvbi4KCURvbid0IHJlbHkgb24gdGhlIHJlbGF5IHRodW5rIHByZXNlcnZpbmcgdGhlIHN0YWNrIHBvaW50ZXIuCgoJKiBkbGxzL250ZGxsL3Rlc3RzL2luZm8uYzogUGF1bCBWcmllbnMgPFBhdWwuVnJpZW5zQHhzNGFsbC5ubD4KCUFkZGVkIHNvbWUgdGVzdHMgZm9yIG90aGVyIGluZm9ybWF0aW9uIGNsYXNzZXMuCglDb3JyZWN0IGNvbW1lbnQgZm9yIHRlc3QgMHgzLgoKCSogZGxscy9udGRsbC9udC5jOiBQYXVsIFZyaWVucyA8UGF1bC5WcmllbnNAeHM0YWxsLm5sPgoJSW1wcm92ZWQgc3R1YnMgdG8gc2hvdyB0aGUgY29ycmVjdCBiZWhhdmlvci4KCgkqIHByb2dyYW1zL3dpbmVjZmcvRW4ucmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglBZGQgYW4gRW5nbGlzaCBuZXV0cmFsIHZlcnNpb24gb2YgdGhlIGdyYXBoaWNzIHRhYi4KCgkqIGRsbHMva2VybmVsL3Rvb2xoZWxwLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBzb21lIGdjYyA0LjAgd2FybmluZ3MuCgoJKiBkbGxzL3V4dGhlbWUvbXNzdHlsZXMuYywgZGxscy91eHRoZW1lL21zc3R5bGVzLmg6CglGcmFuayBSaWNodGVyIDxmcmFuay5yaWNodGVyQGdtYWlsLmNvbT4KCU9wZW5pbmcgc29tZSB0aGVtZSBjbGFzcyBkYXRhIG5vdyBhbHNvIGluY3JlYXNlcyB0aGUgcmVmZXJlbmNlIGNvdW50CglvZiB0aGUgdGhlbWUgZmlsZSwgc28gYXMgbG9uZyBhcyB0aGVtZSBjbGFzcyBkYXRhIGlzIHN0aWxsIG9wZW5lZAoJc29tZXdoZXJlLCB0aGUgdGhlbWUgZmlsZSB3b24ndCBnZXQgZnJlZWQuIE90aGVyd2lzZSwgaXQgY291bGQgaGFwcGVuCgl0aGF0IGludmFsaWQgY2xhc3MgZGF0YSB3YXMgdXNlZCwgd2hpY2ggY291bGQgbGVhZCB0byBwcm9ibGVtcy4KCgkqIGRsbHMvdXh0aGVtZS9kcmF3LmM6IEZyYW5rIFJpY2h0ZXIgPGZyYW5rLnJpY2h0ZXJAZ21haWwuY29tPgoJQ2hhbmdlZCB0aGUgZGVmYXVsdCB0cmFuc3BhcmVudCBjb2xvciBpbiBjYXNlIG5vbmUgd2FzIGV4cGxpY2l0bHkKCXNwZWNpZmllZCBmcm9tIHRoZSB1cHBlciBsZWZ0IHBpeGVsIGNvbG9yIHRvIG1hZ2VudGEuIEVtcGlyaWNhbGx5CglnaXZlcyBiZXR0ZXIgcmVzdWx0cy4KCgkqIGRsbHMvdXNlci9tZW51LmM6IEZyYW5rIFJpY2h0ZXIgPGZyYW5rLnJpY2h0ZXJAZ21haWwuY29tPgoJQWRkIHN1cHBvcnQgZm9yIGRyYXdpbmcgbWVudXMgaW4gImZsYXQiIHN0eWxlLgoKCSogZGxscy9hZHZhcGkzMi9jcnlwdC5jLCBkbGxzL2NhYmluZXQvZmRpLmMsCgkgIGRsbHMvZGlucHV0L2pveXN0aWNrX2xpbnV4LmMsIGRsbHMvaXBobHBhcGkvdGVzdHMvaXBobHBhcGkuYywKCSAgZGxscy9tc3ZjcnQvdGVzdHMvaGVhZGVycy5jLCBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYywKCSAgZGxscy9zZXR1cGFwaS92aXJ0Y29weS5jLCBkbGxzL3dpbmFzcGkvYXNwaS5jLAoJICBkbGxzL3dpbmVkb3Mvc291bmRibGFzdGVyLmMsIGRsbHMvd2luZWRvcy92Z2EuYywKCSAgZGxscy93aW5zb2NrL3NvY2tldC5jOgoJU3RlZmFuIEh1ZWhuZXIgPHN0ZWZhbkBodWVobmVyLm9yZz4KCUZpeCBzb21lIG1vcmUgLVdtaXNzaW5nLWRlY2xhcmF0aW9ucyB3YXJuaW5ncy4KCgkqIGRsbHMvZG1sb2FkZXIvZG1sb2FkZXJfbWFpbi5jLCBkbGxzL2RtbG9hZGVyL2RtbG9hZGVyX3ByaXZhdGUuaCwKCSAgZGxscy9kbWxvYWRlci9sb2FkZXIuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBnY2MgNC4wIC1XcG9pbnRlci1zaWduIHdhcm5pbmdzLgoKCSogZGxscy9nZGkvZHJpdmVyLmMsIGRsbHMvZ2RpL2ZyZWV0eXBlLmMsIGRsbHMvZ2RpL3ByaW50ZHJ2LmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CgktV3BvaW50ZXItc2lnbiBmaXhlcyBmb3IgZ2NjIDQuMC4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlYXV0LmMsIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJRG9jdW1lbnQgYWN0aXZlIG9iamVjdCBhbmQgdmFyaWFudCBmdW5jdGlvbnMuCgoJKiBkbGxzL2NvbWN0bDMyL3Rlc3RzL2RwYS5jOgoJRmVsaXggTmF3b3RobmlnIDxmZWxpeC5uYXdvdGhuaWdAdC1vbmxpbmUuZGU+CglGaXggRFBBIHRlc3RzIG9uIFdpbjk1LgoKCSogaW5jbHVkZS93aW50ZXJubC5oOiBQYXVsIFZyaWVucyA8UGF1bC5WcmllbnNAeHM0YWxsLm5sPgoJUmVtb3ZlZCA0IGJ5dGVzIGZyb20gdGhlIFNZU1RFTV9QUk9DRVNTT1JfUEVSRk9STUFOQ0VfSU5GT1JNQVRJT04KCXN0cnVjdC4KCUNoYW5nZWQgc29tZSBkd1NwYXJlIGludG8gbGlLZXJuZWxUaW1lIGFuZCBsaVVzZXJUaW1lLgoKCSogaW5jbHVkZS90ZXh0c2Vydi5oOiBNYWFydGVuIExhbmtob3JzdCA8bS5iLmxhbmtob3JzdEBnbWFpbC5jb20+CglBZGRlZCBtaXNzaW5nIGRlY2xhcmF0aW9uIGZvciBJVGV4dFNlcnZpY2VzLT5PblR4SW5QbGFjZURlYWN0aXZhdGUuCgoJKiBkbGxzL2NvbW1kbGcvY2RsZ19Fbi5yYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBFbmdsaXNoIG5ldXRyYWwgdmVyc2lvbiBvZiBJRFNfQ09MT1JfR1JBWS4KCgkqIHByb2dyYW1zL3dpbmVmaWxlL0ZyLnJjOiBKb25hdGhhbiBFcm5zdCA8Sm9uYXRoYW5ARXJuc3RGYW1pbHkuY2g+CglVcGRhdGVkIHdpbmVmaWxlIEZyZW5jaCByZXNvdXJjZXMuCgoJKiBwcm9ncmFtcy93aW5lY2ZnL0ZyLnJjLCBwcm9ncmFtcy93aW5lY2ZnL3dpbmVjZmcucmM6CglKb25hdGhhbiBFcm5zdCA8Sm9uYXRoYW5ARXJuc3RGYW1pbHkuY2g+CgktIFVwZGF0ZWQgd2luZWNmZyBGcmVuY2ggcmVzb3VyY2VzLgoJLSBGaXhlZCBjb250cm9sIHNpemUgYW5kIHBsYWNlbWVudC4KCgkqIGRsbHMvd2luc3Bvb2wvaW5mby5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJQWRkIG9uZSBtb3JlIGxldmVsIG9mIGluZGlyZWN0aW9uIHRvIHRoZSBwcmludGVyIGhhbmRsZSBhcnJheSB0byBhbGxvdwoJbW9yZSBpbmZvcm1hdGlvbiB0aGFuIGp1c3QgdGhlIG5hbWUgdG8gYmUgc3RvcmVkLgoJV3JhcCBhY2Nlc3NlcyB0byB0aGUgcHJpbnRlciBoYW5kbGUgYXJyYXkgaW4gYSBjcml0c2VjLgoKCSogZGxscy91c2VyL3Rlc3RzL3dpbi5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkIGEgdGVzdCBjYXNlIGZvciBJc1dpbmRvd1VuaWNvZGUuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9QdC5yYzogTWFyY2VsbyBEdWFydGUgPG1hcmNlbG90ZHVhcnRlQGdtYWlsLmNvbT4KCVVwZGF0ZSBzaGVsbDMyIHJlc291cmNlcyBmb3IgUG9ydHVndWVzZS4KCgkqIHByb2dyYW1zL3dpbmVtaW5lL1BsLnJjOiBNYXJjZWxvIER1YXJ0ZSA8bWFyY2Vsb3RkdWFydGVAZ21haWwuY29tPgoJUmVtb3ZlIGRvdWJsZSBTRVBBUkFUT1IuCgoJKiBkbGxzL3gxMWRydi9vcGVuZ2wuYzogT2xpdmVyIFN0aWViZXIgPG9saXZlcl9zdGllYmVyQHlhaG9vLmNvLnVrPgoJTWFrZSBzdXJlIHRoYXQgdGhlIE9wZW5HTCB2aXN1YWwgY3JlYXRlZCBmb3IgYSB3aW5kb3cgaGFzIGEgc3RlbmNpbAoJYnVmZmVyLgoKCSogdG9vbHMvd2luZWluc3RhbGw6IFZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCUNsZWFuIHdpbmVpbnN0YWxsIGZyb20gY29uZmlnIGZpbGUgcmVmZXJlbmNlcy4KCgkqIGRsbHMvc2hlbGwzMi9zaGZsZHJfdW5peGZzLmM6CglNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglSZXR1cm4gY29ycmVjdCBhdHRyaWJ1dGVzIGluIFBhcnNlRGlzcGxheU5hbWUuCgoJKiBkbGxzL2tlcm5lbC92ZXJzaW9uLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBnY2MgNC4wIHdhcm5pbmdzLgoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYzogRnJhbmsgUmljaHRlciA8ZnJhbmsucmljaHRlckBnbWFpbC5jb20+CglMZXQgcHJvcGVydHkgc2hlZXRzIHVwZGF0ZSB0aGUgY2FjaGVkIHN5c3RlbSBjb2xvcnMgdXBvbiByZWNlaXZpbmcKCVdNX1NZU0NPTE9SQ0hBTkdFLgoKCSogZGxscy91eHRoZW1lL3N5c3RlbS5jOiBGcmFuayBSaWNodGVyIDxmcmFuay5yaWNodGVyQGdtYWlsLmNvbT4KCVdyaXRlIFdDSEFSIHN0cmluZ3MgdG8gcmVnaXN0cnkgd2l0aCBjb3JyZWN0IHNpemUuCgoJKiBkbGxzL21zY21zL3Byb2ZpbGUuYywgZGxscy9tc2Ntcy90ZXN0cy9wcm9maWxlLmM6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCUZpeCBjb2xvciBkaXJlY3RvcnkgaGFuZGxpbmcuCgoJKiBkbGxzL3V4dGhlbWUvZHJhdy5jLCBkbGxzL3V4dGhlbWUvdXh0aGVtZS5zcGVjLCBpbmNsdWRlL3V4dGhlbWUuaDoKCVRob21hcyBXZWlkZW5tdWVsbGVyIDx3aW5lLXBhdGNoZXNAcmVhY3Rzb2Z0LmNvbT4KCUlzVGhlbWVEaWFsb2dUZXh0dXJlRW5hYmxlZCBzaG91bGQgaGF2ZSBvbmUgcGFyYW1ldGVyIHRvIG1hdGNoIHRoZQoJcHJvdG90eXBlIGluIHRoZSBvZmZpY2lhbCBoZWFkZXJzLgoKCSogZGxscy91c2VyL3N5c3BhcmFtcy5jOiBGcmFuayBSaWNodGVyIDxmcmFuay5yaWNodGVyQGdtYWlsLmNvbT4KCUFkZCBzdXBwb3J0IGZvciBTUElfW1NHXUVURkxBVE1FTlUgaW4gU3lzdGVtUGFyYW1ldGVyc0luZm8gKGFsdGhvdWdoCgl3aXRob3V0IHNhdmluZyBvZiB0aGUgc2V0dGluZykuCgoJKiBkbGxzL3V4dGhlbWUvbXNzdHlsZXMuYzogRnJhbmsgUmljaHRlciA8ZnJhbmsucmljaHRlckBnbWFpbC5jb20+CglFbmFibGUvZGlzYWJsZSAiZmxhdCBtZW51cyIgYmFzZWQgb24gdGhlIHNldHRpbmcgZnJvbSB0aGUgYWN0aXZlCgl0aGVtZS4KCjIwMDUtMDctMDMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3VybG1vbi9zZWNfbWdyLmMsIGRsbHMvdXJsbW9uL3Vtb24uYywgZGxscy91cmxtb24vdW1zdHJlYW0uYywKCSAgZGxscy91cmxtb24vdXJsbW9uX21haW4uYywgZGxscy91cmxtb24vdXJsbW9uX21haW4uaDoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCAtV3BvaW50ZXItc2lnbiB3YXJuaW5ncy4KCgkqIGRsbHMvc2hlbGwzMi9hdXRvY29tcGxldGUuYywgZGxscy9zaGVsbDMyL2NsYXNzZXMuYywKCSAgZGxscy9zaGVsbDMyL2NwYW5lbGZvbGRlci5jLCBkbGxzL3NoZWxsMzIvZGF0YW9iamVjdC5jLAoJICBkbGxzL3NoZWxsMzIvZGRlLmMsIGRsbHMvc2hlbGwzMi9kcmFnZHJvcGhlbHBlci5jLAoJICBkbGxzL3NoZWxsMzIvZW51bWlkbGlzdC5jLCBkbGxzL3NoZWxsMzIvZm9sZGVycy5jLAoJICBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvcGlkbC5oLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsb2xlLmMsIGRsbHMvc2hlbGwzMi9zaGZsZHJfZGVza3RvcC5jLAoJICBkbGxzL3NoZWxsMzIvc2hmbGRyX2ZzLmMsIGRsbHMvc2hlbGwzMi9zaGZsZHJfbXljb21wLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGZsZHJfdW5peGZzLmMsIGRsbHMvc2hlbGwzMi9zaGxmc2JpbmQuYywKCSAgZGxscy9zaGVsbDMyL3NobHZpZXcuYywgZGxscy9zaGVsbDMyL3Nodl9iZ19jbWVudS5jLAoJICBkbGxzL3NoZWxsMzIvc2h2X2l0ZW1fY21lbnUuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCS1XcG9pbnRlci1zaWduIGZpeGVzLgoKCSogZGxscy9jb21jdGwzMi90ZXN0cy9NYWtlZmlsZS5pbiwgZGxscy9jb21jdGwzMi90ZXN0cy9kcGEuYzoKCUZlbGl4IE5hd290aG5pZyA8ZmVsaXgubmF3b3RobmlnQHQtb25saW5lLmRlPgoJUmV3cm90ZSB0aGUgRFBBIHRlc3RzdWl0ZS4KCgkqIGluY2x1ZGUvd2ludGVybmwuaDogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRGVmaW5lIG1vcmUgTnQqIGZ1bmN0aW9ucy4KCgkqIGRsbHMva2VybmVsL2tlcm5lbDE2X3ByaXZhdGUuaCwgZGxscy9rZXJuZWwvc3lzbGV2ZWwuYywKCSAgZGxscy9rZXJuZWwvd293dGh1bmsuYywgdG9vbHMvd2luZWJ1aWxkL3JlbGF5LmM6CglNb3ZlZCBhbGwgMTYtYml0IHJlbGF5IGNvZGUgdG8gdGhlIHRleHQgc2VjdGlvbi4KCUNoYW5nZWQgYSBmZXcgc3ltYm9sIG5hbWVzIGZvciBiZXR0ZXIgY29uc2lzdGVuY3kuCgoJKiBsaWJzL3dpbmUvbGR0LmM6IEFkZGVkIGVycm9yIG1lc3NhZ2UgZm9yIG1pc3NpbmcgTERUIHN1cHBvcnQgb24gaTM4Ni4KCgkqIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYzogU29tZSBmaXhlcyBmb3IgdGhlIERhcndpbiBidWlsZC4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jLCBkbGxzL3dpbm1tL3dpbmVvc3MvZHNyZW5kZXIuYzoKCVZpdGFsaXkgTWFyZ29sZW4gPHdpbmUtcGF0Y2hAa2lldmluZm8uY29tPgoJQ2hhbmdlIG1lc3NhZ2VzIGFib3V0IGNvbmZpZyBmaWxlIHRvIHJlZ2lzdHJ5LgoKCSogZGxscy9nZGkvdGVzdHMvZ2VuZXJhdGVkLmMsIGRsbHMva2VybmVsL3Rlc3RzL2dlbmVyYXRlZC5jLAoJICBkbGxzL250ZGxsL3Rlc3RzL2dlbmVyYXRlZC5jLCBkbGxzL3JwY3J0NC90ZXN0cy9nZW5lcmF0ZWQuYywKCSAgZGxscy9zaGVsbDMyL3Rlc3RzL2dlbmVyYXRlZC5jLCBkbGxzL3NobHdhcGkvdGVzdHMvZ2VuZXJhdGVkLmMsCgkgIGRsbHMvdXJsbW9uL3Rlc3RzL2dlbmVyYXRlZC5jLCBkbGxzL3VzZXIvdGVzdHMvZ2VuZXJhdGVkLmMsCgkgIGRsbHMvd2luaW5ldC90ZXN0cy9nZW5lcmF0ZWQuYywgdG9vbHMvd2luYXBpL3dpbmFwaV90ZXN0OgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQXZvaWQgd2FybmluZ3MgaW4gZ2VuZXJhdGVkIHRlc3RzIGJ5IGNhc3Rpbmcgc2l6ZW9mKHgpIHRvIGFuIGludC4KCgkqIGRsbHMvbXNodG1sL01ha2VmaWxlLmluLCBkbGxzL21zaHRtbC9odG1sZG9jLmMsCgkgIGRsbHMvbXNodG1sL21zaHRtbF9wcml2YXRlLmgsIGRsbHMvbXNodG1sL3NlcnZpY2UuYzoKCUphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglBZGRlZCBzdHViIGltcGxlbWVudGF0aW9uIG9mIElTZXJ2aWNlUHJvdmlkZXIuCgoJKiBERVZFTE9QRVJTLUhJTlRTOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggREVWRUxPUEVSX0hJTlRTIHRvIHJlZmxlY3QgbWFrZSBjb25maWd1cmUgZG9lc24ndCBydW4gYXV0b2NvbmYuCgoJKiBkbGxzL2RkcmF3L2RldmljZV9vcGVuZ2wuYzogTWFyY3VzIE1laXNzbmVyIDxtZWlzc25lckBzdXNlLmRlPgoJTWFrZSBjaGVjayBmYWlscyBpbiBkbGxzL2RkcmF3L3Rlc3RzL2QzZCwgYmVjYXVzZSBhIGhlYXAgYWxsb2NhdGUgaXMKCWZlZCB0byB3cm9uZyBzaXplLiAoc2l6ZW9mKEJPT0xFQU4pIGlzIDEgLCBidXQgYXRpdmVfbGlnaHRzIGlzIGEgRFdPUkQKCWFycmF5KS4KCgkqIGRsbHMveDExZHJ2L2Rlc2t0b3AuYzogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUFkZCBzb21lIHJlc29sdXRpb25zIHRvIHdoYXQgRGVza3RvcCBtb2RlIHN1cHBvcnRzLgoKCSogaW5jbHVkZS93aW50ZXJubC5oOiBGZWxpeCBOYXdvdGhuaWcgPGZlbGl4Lm5hd290aG5pZ0B0LW9ubGluZS5kZT4KCUFkZCBzb21lIHZhbHVlcyB0byB0aGUgUFJPQ0VTU19JTkZPUk1BVElPTl9DTEFTUyBlbnVtZXJhdGlvbi4KCgkqIGRsbHMvdXJsbW9uL3Vtb24uYzogSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCUZpeCBoYW5kbGluZyBvZiBwbWtDb250ZXh0IGluIENyZWF0ZVVSTE1vbmlrZXIuCgoJKiBwcm9ncmFtcy93aW5lbWluZS9tYWluLmMsIHByb2dyYW1zL3dpbmVtaW5lL21haW4uaDoKCUphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglNYWtlIHJlZ2lzdHJ5IGNvbXBhdGlibGUgd2l0aCB3aW5taW5lLgoKCSogaW5jbHVkZS9jb21tY3RybC5oOiBGcmFuayBSaWNodGVyIDxmcmFuay5yaWNodGVyQGdtYWlsLmNvbT4KCUFkZCBtaXNzaW5nIE5NQkNIT1RJVEVNIHN0cnVjdC4KCgkqIGRsbHMvbXN2Y3J0L3djcy5jOiBNYXJjdXMgTWVpc3NuZXIgPG1laXNzbmVyQHN1c2UuZGU+CgljaGFyIHBvaW50ZXIgbXVzdCBiZSAxMSBieXRlIHRvIGZpdCAxMCBjaGFyYWN0ZXJzICsgXDAuCgoJKiBkbGxzL2FkdmFwaTMyL3Rlc3RzL3JlZ2lzdHJ5LmMsIGluY2x1ZGUvd2lucmVnLmg6CglGZWxpeCBOYXdvdGhuaWcgPGZlbGl4Lm5hd290aG5pZ0B0LW9ubGluZS5kZT4KCUFkZGVkIHVuaXQgdGVzdHMgZm9yIFJlZ0dldFZhbHVlLgoKMjAwNS0wNy0wMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbnRkbGwvdmlydHVhbC5jLCBzZXJ2ZXIvbWFwcGluZy5jOgoJVml0YWxpeSBNYXJnb2xlbiA8d2luZS1wYXRjaEBraWV2aW5mby5jb20+CglMb2FkIGFsbCBkbGwgc2VjdGlvbnMgbm8gbWF0dGVyIHdoYXQgYXR0cmlidXRlcyBzYXkuCgoJKiBkbGxzL3VybG1vbi9zZWNfbWdyLmMsIGRsbHMvdXJsbW9uL3Vtb24uYywgZGxscy91cmxtb24vdXJsbW9uX21haW4uYzoKCUphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglCZXR0ZXIgbW9kdWxlIGxvY2tpbmcuCgoJKiBkbGxzL2F2aWZpbDMyL01ha2VmaWxlLmluLCBkbGxzL2F2aWZpbDMyL2FwaS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtZWlzc25lckBzdXNlLmRlPgoJVXNlIENvQ3JlYXRlSW5zdGFuY2UgaW5zdGVhZCBvZiBTSENvQ3JlYXRlSW5zdGFuY2UsIGRyb3Agc2hlbGwzMiBmcm9tCglpbXBvcnRzLgoJQ2FsbCBPbGVJbml0aWFsaXplKCkgb24gQVZJRmlsZUluaXQuCgoJKiBkbGxzL21zaHRtbC9tYWluLmMsIGluY2x1ZGUvbXNodG1oc3QuaWRsOgoJSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCS0gQWRkZWQgbW9yZSBkZWZpbml0aW9ucy4KCS0gRml4ZWQgUnVuSFRNTEFwcGxpY2F0aW9uIGRlY2xhcmF0aW9uLgoKCSogaW5jbHVkZS9tc3htbC5pZGw6IFZpamF5IEtpcmFuIEthbXVqdSA8aW5meXF1ZXN0QGdtYWlsLmNvbT4KCUFkZCBtaXNzaW5nIGRlY2xhcmF0aW9ucyBmb3IgSVhNTERvY3VtZW50MiBhbmQgSVhNTEVsZW1lbnQyLgoKMjAwNS0wNy0wMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNlcnZlci9yZWdpc3RyeS5jOiBEb24ndCBib3RoZXIgbG9hZGluZyB0aGUgY29uZmlnIGZpbGUgYW55bW9yZS4KCgkqIHRvb2xzL3dpbmVkdW1wL25lLmM6IEFkZGVkIGR1bXBpbmcgb2YgTkUgc2VnbWVudHMgYW5kIHJlbG9jYXRpb25zLgoKCSogdG9vbHMvd2luZWJ1aWxkL2ltcG9ydC5jOgoJRG9uJ3QgdXNlIHRoZSBmdWxsIDMyIGJpdHMgb2YgJWVzcCB3aGVuIGNhbGxlZCBmcm9tIDE2LWJpdCBjb2RlLgoKCSogZGxscy91c2VyL2RkZW1sLnNwZWM6IEFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCUhDT05WIGFuZCBIQ09OVkxJU1QgYXJlIDMyYml0IGhhbmRsZXMuCgoJKiBwcm9ncmFtcy93aW5lY2ZnL0RlLnJjLCBwcm9ncmFtcy93aW5lZmlsZS9EZS5yYzoKCUhlbm5pbmcgR2VyaGFyZHQgPGhlbm5pbmcuZ2VyaGFyZHRAd2ViLmRlPgoJVXBkYXRlIEdlcm1hbiByZXNvdXJjZSBmaWxlcy4KCgkqIGRsbHMvZDNkOS9kZXZpY2UuYzogT2xpdmVyIFN0aWViZXIgPG9saXZlcl9zdGllYmVyQHlhaG9vLmNvLnVrPgoJQ2hlY2sgZm9yIGEgbnVsbCBzdXJmYWNlIHJldHVybmVkIGZyb20gQ3JlYXRlU3VyZmFjZS4KCVJlbGF5IEdldENyZWF0aW9uUGFyYW1ldGVycyBjYWxsIHRvIHdpbmVkM2QuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9udGRsbC9jZHJvbS5jLCBpbmNsdWRlL2NvbmZpZy5oLmluOgoJUGhpbCBLcnlsb3YgPHBoaWxAbmV3c3Rhci5yaW5ldC5ydT4KCUZpeGVkIGRsbHMvbnRkbGwvY2Ryb20uYyBjb21waWxhdGlvbiBpbiBEYXJ3aW4gYnkgYWRkaW5nIEhBVkVfSU9LaXQKCWRldGVjdGlvbiB0byBjb25maWd1cmUgYW5kIGRlZmluaW5nIFNFTlNFQlVGTEVOIGFzIGtTZW5zZURlZmF1bHRTaXplCgkod2hpY2ggaXMgY29ycmVzcG9uZGluZyBJT0tpdCBlbnVtIHZhbHVlKS4KCgkqIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvdGV4dHNlcnYuaDoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIHRleHRzZXJ2LmguCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwxNl9wcml2YXRlLmgsIGRsbHMva2VybmVsL3RodW5rLmMsCgkgIGRsbHMva2VybmVsL3dvd3RodW5rLmMsIHRvb2xzL3dpbmVidWlsZC9yZWxheS5jOgoJTW92ZWQgbW9zdCBvZiB0aGUgaW1wbGVtZW50YXRpb24gb2YgQ0FMTDMyX0NCQ2xpZW50KEV4KSB0byB0aGUgQwoJY29kZS4KCgkqIHRvb2xzL3dpbmVidWlsZC9pbXBvcnQuYywgdG9vbHMvd2luZWJ1aWxkL21haW4uYywKCSAgdG9vbHMvd2luZWJ1aWxkL3dpbmVidWlsZC5tYW4uaW46CglBZGRlZCBhIC0tdGFyZ2V0IG9wdGlvbiB0byBhbGxvdyBjcm9zcy1jb21waWxhdGlvbi4KCgkqIGRsbHMveDExZHJ2L3dpbmRvdy5jOgoJU2V0IHRoZSBjbGFzcyByZXNvdXJjZSBuYW1lIHRvIHRoZSBuYW1lIG9mIHRoZSBtYWluIGJpbmFyeSAoc3VnZ2VzdGVkCglieSBSYXN0ZXJtYW4pLgoKCSogaW5jbHVkZS8uY3ZzaWdub3JlLCBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL3htbGRzby5pZGwsCgkgIGluY2x1ZGUveG1sZHNvZGlkLmg6CglWaWpheSBLaXJhbiBLYW11anUgPGluZnlxdWVzdEBnbWFpbC5jb20+CglBZGRlZCB4bWxkc28uaWRsLgoKCSogZGxscy9udGRsbC9yZWxheS5jLCB0b29scy93aW5lYnVpbGQvaW1wb3J0LmM6CglJbXByb3ZlIGEgYml0IHRoZSBhc3NlbWJseSBnZW5lcmF0ZWQgZm9yIGltcG9ydCB0aHVua3MuCgoJKiBkbGxzL2NyeXB0MzIvZW5jb2RlLmMsIGRsbHMvY3J5cHQzMi90ZXN0cy9lbmNvZGUuYzoKCUp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCS0gaW1wbGVtZW50IGVuY29kaW5nL2RlY29kaW5nIG9mIGNlcnQgZXh0ZW5zaW9ucwoJLSByZW1vdmUgc29tZSB1bm5lY2Vzc2FyeSBwYXJhbWV0ZXJzIHRvIGludGVybmFsIGZ1bmN0aW9ucwoJLSB0ZXN0cyBmb3IgY2VydCBleHRlbnNpb25zCgoJKiBkbGxzL2NhYmluZXQvY2FiZXh0cmFjdC5jLCBkbGxzL3JpY2hlZDIwL2NhcmV0LmMsCgkgIGRsbHMvdXh0aGVtZS9kcmF3LmMsIGRsbHMvdXh0aGVtZS91eGluaS5jOgoJU3RlZmFuIEh1ZWhuZXIgPHN0ZWZhbkBodWVobmVyLm9yZz4KCU1ha2Ugc29tZSBmdW5jdGlvbiBzdGF0aWMuCgoJKiBwcm9ncmFtcy93aW5lY2ZnL2RyaXZlZGV0ZWN0LmM6CglNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglBZGRlZCBiaW5mbXRfbWlzYyB0byB0aGUgZmlsZXN5c3RlbSBibGFja2xpc3QuCgoJKiBkbGxzL3V4dGhlbWUvbXNzdHlsZXMuYzogRnJhbmsgUmljaHRlciA8ZnJhbmsucmljaHRlckBnbWFpbC5jb20+CglIYXZlIHRoZSB0aGVtZSBJTkkgZmlsZSBwYXJzZWQgdXBvbiB0aGVtZSBhY3RpdmF0aW9uIGFuZCBub3QganVzdCB3aGVuCgl0aGUgZmlyc3QgdGhlbWUgZGF0YSBpcyByZXF1ZXN0ZWQ7IHRoYXQgd2F5LCB0aGUgdGhlbWVkIHN5c3RlbSBjb2xvcnMKCWFyZSBzZXQgY29ycmVjdGx5IGZyb20gdGhlIHN0YXJ0LCBhbmQgbm90IGp1c3QgYWZ0ZXIgc29tZSB0aGVtZSBkYXRhCgl3YXMgcmVxdWVzdGVkLgoKCSogaW5jbHVkZS93aW5jcnlwdC5oOiBKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CgktIGFkZCBtb3JlIHByb3RvdHlwZXMKCS0gcmVhcnJhbmdlIHByb3RvdHlwZXMgYWNjb3JkaW5nIHRvIHRoZSBETEwgdGhleSdyZSBpbiwgdG8gbWFrZQoJICBjb21tZW50cyBjb3JyZWN0CgoJKiBkbGxzL3VzZXIvZGlhbG9nLmMsIGRsbHMvdXNlci90ZXN0cy9kaWFsb2cuYzoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUdldERsZ0l0ZW1UZXh0IHNob3VsZCBhbHdheXMgdHJ5IHRvIE5VTEwgdGVybWluYXRlIHRoZSBzdHJpbmcuCgoyMDA1LTA2LTMwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS93aW5lL3Rlc3QuaCwgaW5jbHVkZS93aW5zb2NrLmg6CglBdHRlbXB0IGF0IGEgYmV0dGVyIGZpeCBmb3IgdGhlIHdpbnNvY2suaCBwcm9ibGVtcyBvbiBEYXJ3aW4uCgoJKiBwcm9ncmFtcy93aW5lY2ZnL05sLnJjOiBQYXVsIFZyaWVucyA8UGF1bC5WcmllbnNAeHM0YWxsLm5sPgoJVXBkYXRlIHRoZSBEdXRjaCB0cmFuc2xhdGlvbnMuCgoJKiBkbGxzL21zaHRtbC9wcm90b2NvbC5jLCBkbGxzL21zaHRtbC9yc3JjLnJjOgoJVXNlIHByb3BlciBzeW1ib2xzIGluc3RlYWQgb2YgbWFnaWMgbnVtYmVyIDIzIGZvciBIVE1MIHJlc291cmNlIHR5cGUuCgoJKiB0b29scy93cmMvZ2VucmVzLmMsIHRvb2xzL3dyYy9uZXdzdHJ1Yy5jLCB0b29scy93cmMvbmV3c3RydWMuaCwKCSAgdG9vbHMvd3JjL3BhcnNlci5sLCB0b29scy93cmMvcGFyc2VyLnksIHRvb2xzL3dyYy93cmN0eXBlcy5oOgoJQWRkZWQgc3VwcG9ydCBmb3IgSFRNTCByZXNvdXJjZSB0eXBlLgoKCSogZGxscy93aW5pbmV0L3Rlc3RzL2h0dHAuYzogQWRkZWQgbWlzc2luZyBMR1BMIGhlYWRlci4KCgkqIGluY2x1ZGUvLmN2c2lnbm9yZSwgaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9tc3htbC5pZGwsCgkgIGluY2x1ZGUvbXN4bWwyLmlkbDoKCVZpamF5IEtpcmFuIEthbXVqdSA8aW5meXF1ZXN0QGdtYWlsLmNvbT4KCUFkZGVkIG1zeG1sMi5pZGwuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYzogVml0YWxpeSBNYXJnb2xlbiA8d2luZS1wYXRjaEBraWV2aW5mby5jb20+CglGaXggdGVzdCBmb3IgYXJ0cy4KCgkqIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwgZGxscy9zaGVsbDMyL2RkZS5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmM6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgU2hlbGxEREVJbml0LgoKCSogZGxscy9tc2kvYWN0aW9uLmMsIGRsbHMvbXNpL2FjdGlvbi5oLCBkbGxzL21zaS9jdXN0b20uYywKCSAgZGxscy9tc2kvaGVscGVycy5jLCBkbGxzL21zaS91cGdyYWRlLmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJS2VlcCB0cmFjayBvZiB3aGF0IHNlcXVlbmNlIHdlIGFyZSBpbiBhbmQgcmVnaXN0ZXIgdW5pcXVlCglhY3Rpb25zLiBUaGlzIGFsbG93cyB1cyB0byBtYWtlIHN1cmUgYWN0aW9ucyBhbmQgY3VzdG9tIGFjdGlvbnMKCWZsYWdnZWQgdG8gcnVuIG9ubHkgb25jZSwgYWN0dWFsbHkgcnVuIG9ubHkgb25jZS4KCUFsc28gY2xlYW4gdXAgc29tZSBvZiB0aGUgbnVtZXJpYyBjb25zdGFudHMgaW4gY3VzdG9tLmMgdXNpbmcgdGhlCglkZWZpbmVkIHZhbHVlcyBmcm9tIG1zaWRlZnMuaC4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBpbmNsdWRlL2NvbmZpZy5oLmluOgoJUmVtb3ZlZCBzb21lIG5vIGxvbmdlciB1c2VkIGFzbSBjaGVja3MuCgoJKiBkbGxzL2NhYmluZXQvZmNpLmMsIGRsbHMvZDNkOC9kaXJlY3R4LmMsIGRsbHMvcnBjcnQ0L3JwY3J0NF9tYWluLmMsCgkgIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsIGRsbHMvd2luZWQzZC9kZXZpY2UuYywKCSAgZGxscy93aW5lZDNkL2RpcmVjdHguYywgZGxscy93aW5lZDNkL3dpbmVkM2RfcHJpdmF0ZS5oLAoJICBkb2N1bWVudGF0aW9uL1BBQ0tBR0lORywgdG9vbHMvd2luZWR1bXAvUkVBRE1FLAoJICB0b29scy93aW5lZHVtcC93aW5lZHVtcC5oLCB0b29scy93aW5lZHVtcC93aW5lZHVtcC5tYW46CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFzc29ydGVkIHNwZWxsaW5nIGZpeGVzLgoKCSogZGxscy91c2VyL3N5c3BhcmFtcy5jLCBkbGxzL3VzZXIvdGVzdHMvc3lzcGFyYW1zLmM6CglSZXZlcnQgU1BJX1NFVE1PVVNFQlVUVE9OU1dBUCBjaGFuZ2VzLgoKCSogZGxscy9tc2h0bWwvdGVzdHMvLmN2c2lnbm9yZSwgZGxscy9tc2h0bWwvdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvbXNodG1sL3Rlc3RzL3Byb3RvY29sLmM6CglKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJQWRkZWQgcmVzIHByb3RvY29sIHRlc3QuCgoJKiBkbGxzL3VzZXIvZGRlX21pc2MuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBhIHR5cG8gaW4gUmV1c2VEREVsUGFyYW06IEdsb2JhbExvY2sgc3VwcG9zZWQgdG8gYmUgR2xvYmFsVW5sb2NrLgoKCSogZGxscy9jb21jdGwzMi9oZWFkZXIuYzogVml0YWxpeSBNYXJnb2xlbiA8d2luZS1wYXRjaEBraWV2aW5mby5jb20+CglTZW5kIENERFNfSVRFTVBPU1RFUkFTRSB8IENERFNfUFJFUEFJTlQgbm90aWZ5LgoKCSogZGxscy93aW5zcG9vbC9pbmZvLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglGb3J3YXJkIFN0YXJ0RG9jUHJpbnRlckEgdG8gU3RhcnREb2NQcmludGVyVy4KCUltcHJvdmUgdHJhY2UgaW4gdGhlIHVuaWNvZGUgdmVyc2lvbi4KCgkqIGRsbHMvbXNodG1sL3JzcmMucmM6IEphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglGaXggYmxhbmsuaHRtIHJlc291cmNlcy4KCgkqIGRsbHMvcmljaGVkMjAvZWRpdG9yLmMsIGRsbHMvcmljaGVkMjAvZWRpdHN0ci5oLAoJICBkbGxzL3JpY2hlZDIwL3dyYXAuYzoKCVBoaWwgS3J5bG92IDxwaGlsQG5ld3N0YXIucmluZXQucnU+CglJbXBsZW1lbnRlZCBFTV9HRVRMSU5FQ09VTlQgUmljaEVkaXQgbWVzc2FnZS4KCgkqIHRvb2xzL3dyYy9nZW5yZXMuYywgdG9vbHMvd3JjL2dlbnJlcy5oLCB0b29scy93cmMvd3JjdHlwZXMuaCwKCSAgdG9vbHMvd3JjL3dyaXRlcmVzLmM6CglTdGVmYW4gSHVlaG5lciA8c3RlZmFuQGh1ZWhuZXIub3JnPgoJRml4IHNvbWUgLVdzaWduLWNvbXBhcmUgd2FybmluZ3MuCgoJKiB0b29scy93cmMvcGFyc2VyLmw6IEphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CgknLicgaXMgYSB2YWxpZCBjaGFyIG9mIHRJREVOVC4KCgkqIHByb2dyYW1zL3dpbmVkYmcvd2luZWRiZy5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJSW1wcm92ZSB0aGUgd2luZWRiZyB1c2FnZS4KCgkqIHByb2dyYW1zL3dpbmVjZmcvYXVkaW8uYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglSZW1vdmUgdW5uZWVkZWQgY2FzdHMuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9kaXJlY3RvcnkuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+IGZvciBNYW5kcml2YQoJVGVzdCB0aGUgYmVoYXZpb3Igb2YgQ3JlYXRlRGlyZWN0b3J5KCkgd2hlbiBpdCBoYXMgb25lIG9yIHR3byB0cmFpbGluZwoJZG90cyBvciBzcGFjZXMuCglUd2VhayB0aGUgcHJldmlvdXMgQ3JlYXRlRGlyZWN0b3J5KCkgdGVzdHMgc28gd2UgZ2V0IG1vcmUgaW5mb3JtYXRpb24KCWluIGNhc2Ugb2YgYSBmYWlsdXJlLgoKCSogdG9vbHMvd2luYXBpL3dpbjMyLmFwaTogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglVcGRhdGUgd2luMzIuYXBpIHRvIG1hdGNoIGN1cnJlbnQgc291cmNlcy4KCgkqIHRvb2xzL3dpbmVidWlsZC91dGlscy5jOiBQaGlsIEtyeWxvdiA8cGhpbEBuZXdzdGFyLnJpbmV0LnJ1PgoJRml4ZWQgd2luZWJ1aWxkIG9wZXJhdGlvbiBpbiBEYXJ3aW4uCgoJKiBkbGxzL3NoZWxsMzIvcmVnc3ZyLmM6IE1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCVJlZ2lzdGVyIHVuaXhmcyBhdCBkZXNrdG9wIGxldmVsIGluIERsbFJlZ2lzdGVyU2VydmVyLgoKCSogZGxscy9zaGVsbDMyL3NoZmxkcl91bml4ZnMuYzoKCU1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCUZpeCB0d28gbW9yZSBjb3JuZXIgY2FzZXMgaW4gVU5JWEZTX2dldF91bml4X3BhdGggYW5kIFVOSVhGU19wYXRoX3RvX3BpZGwuCgoJKiBkbGxzL21zaS9kaWFsb2cuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJTW92ZSB0byB0aGUgbmV4dCBtYXNrIGVkaXQgZmllbGQgd2hlbiB0aGUgY3VycmVudCBvbmUgYmVjb21lcyBmdWxsLgoKCSogaW5jbHVkZS93aW5jcnlwdC5oOiBKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglBZGQgbW9yZSBtaXNzaW5nIE9JRHMuCgoJKiBkbGxzL3NoZWxsMzIvdGVzdHMvc2hsZm9sZGVyLmM6CglTYXVsaXVzIEtyYXN1Y2thcyA8c2F1bGl1cy5rcmFzdWNrYXNAaWVlZS5vcmc+CglQcmVwYXJlIGZvciBhZGRpbmcgbmV3IHRlc3RzLgoJLSBQdXQgT2xlSW5pdGlhbGl6ZSBhbmQgT2xlVW5pbml0aWFsaXplIGluIHRoZSBtYWluIGJsb2NrLgoJLSBNb3ZlIHRlc3RfQmluZFRvT2JqZWN0IGJlZm9yZSB0ZXN0X0VudW1PYmplY3RzX2FuZF9Db21wYXJlSURzLgoKCSogZGxscy9tc2h0bWwvcHJvdG9jb2wuYzogSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCUltcGxlbWVudGVkIHJlcyBwcm90b2NvbC4KCgkqIGRsbHMvbXNpL2RpYWxvZy5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglNYWtlIHRoZSB0YWIgb3JkZXIgaW4gbXNpIGRpYWxvZ3MgcmlnaHQuCgoJKiBkbGxzL250ZGxsL2Nkcm9tLmM6IEdlcmFsZCBQZmVpZmVyIDxnZXJhbGRAcGZlaWZlci5jb20+CglBdm9pZCB1bnVzZWQgdmFyaWFibGUgd2FybmluZ3MgaW4gQ0RST01fU2NzaVBhc3NUaHJvdWdoRGlyKCkgYW5kCglDRFJPTV9TY3NpUGFzc1Rocm91Z2goKS4KCgkqIHByb2dyYW1zL3dpbmVtZW51YnVpbGRlci93aW5lbWVudWJ1aWxkZXIuYzoKCVN2ZW4gUGFzY2h1a2F0IDxTdmVuLlBhc2NodWthdEB0LW9ubGluZS5kZT4KCVJlcGFpcmVkIGV4dHJhY3Rpb24gb2YgaWNvbnMgd2hlbiBjb25maWcgZmlsZSBpcyBtaXNzaW5nLgoKCSogZGxscy93aW5pbmV0L2ludGVybmV0LmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBzdHVicyBmb3Igc29tZSBJbnRlcm5ldFNldE9wdGlvbiBvcHRpb25zLgoKMjAwNS0wNi0yOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHRvb2xzL3dpbmVidWlsZC9idWlsZC5oLCB0b29scy93aW5lYnVpbGQvc3BlYzMyLmMsCgkgIHRvb2xzL3dpbmVidWlsZC91dGlscy5jOgoJUmVwbGFjZSBjb25maWd1cmUgbWFjcm9zIGJ5IGV4cGxpY2l0IHBsYXRmb3JtIGNoZWNrcyAocHJvYmFibHkgbm90Cgljb3JyZWN0IG9uIGFsbCBwbGF0Zm9ybXMgeWV0KS4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlYXV0LmMsIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzIuc3BlYywKCSAgZGxscy9vbGVhdXQzMi9yZWdzdnIuYzoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbmFtZSBPTEVBVVQzMl9EbGwqIEZ1bmN0aW9ucyB0byBEbGwqLgoKCSogZGxscy9vbGVhdXQzMi90ZXN0cy92YXJ0eXBlLmMsIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPiBmb3IgTWFuZHJpdmEKCS0gQ29udmVyc2lvbnMgYmV0d2VlbiB2YXJpYW50cyB0eXBlcyBvZiB0aGUgc2FtZSBzaXplIHNob3VsZCBpZ25vcmUKCSAgb3ZlcmZsb3dzLgoJLSBUZXN0cyBmb3IgdGhpcyBiZWhhdmlvdXIuCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYzoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4gZm9yIE1hbmRyaXZhCglBZGQgYSBnZW5lcmljIFRZUEVERVNDIFZUIHRvIFZBUklBTlQgVlQgbWFwcGVyIHNvIHdlIGNhbiB1c2UgdGhlCglzdGFuZGFyZCBWYXJpYW50KiByb3V0aW5lcy4gVXNlIHRoaXMgbmV3IGZ1bmN0aW9uIHRvIHByb3Blcmx5IGNvcHkgJgoJZGUtcmVmZXJlbmNlIHRoZSByZXR1cm4gdmFsdWUuCgoJKiBkbGxzL2FkdmFwaTMyL3Rlc3RzL3NlY3VyaXR5LmMsIGRsbHMvbnRkbGwvc2VjLmM6CglKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCS0gRml4IGNhbGN1bGF0aW9uIG9mIGdlbmVyaWMgcG9pbnRlcnMuCgktIE1pbm9yIGNsZWFudXBzLgoKCSogZGxscy93aW5tbS93aW5lYWxzYS9hdWRpby5jOgoJVml0YWxpeSBNYXJnb2xlbiA8d2luZS1wYXRjaEBraWV2aW5mby5jb20+CglTeW5jIGNvbW1lbnRzIHdpdGggY29uZmlndXJhdGlvbiBsb2NhdGlvbiBjaGFuZ2VzLgoKCSogc2VydmVyL2NsaXBib2FyZC5jLCBzZXJ2ZXIvdXNlci5oLCBzZXJ2ZXIvd2luc3RhdGlvbi5jOgoJTWFrZSB0aGUgY2xpcGJvYXJkIGluZm9ybWF0aW9uIGxvY2FsIHRvIHRoZSBwcm9jZXNzIHdpbmRvdyBzdGF0aW9uLgoKCSogc2VydmVyL3Byb2Nlc3MuYzoKCUNsZWFyIHRoZSBwcm9jZXNzIGhhbmRsZSB0YWJsZSBiZWZvcmUgcmVsZWFzaW5nIGl0IHRvIGF2b2lkIHBvdGVudGlhbAoJcHJvYmxlbXMgd2l0aCBkZXN0cnVjdG9ycyB0cnlpbmcgdG8gYWNjZXNzIGhhbmRsZXMuCgoJKiBkbGxzL3gxMWRydi9pbml0LmMsIGRsbHMveDExZHJ2L29wZW5nbC5jLCBkbGxzL3gxMWRydi94MTFkcnYuaCwKCSAgZGxscy94MTFkcnYveDExZHJ2X21haW4uYzoKCURlbGF5IE9wZW5HTCBhbmQgR0RJIGluaXRpYWxpemF0aW9uIHVudGlsIHRoZXkgYXJlIG5lZWRlZC4KCgkqIGRsbHMva2VybmVsL29sZGNvbmZpZy5jOiBHZXQgcmlkIG9mIHRoZSBvbGQgY29uZmlnIGNvbnZlcnNpb24gY29kZS4KCgkqIGRsbHMvcmljaGVkMjAvZWRpdG9yLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnRhdGlvbiBmb3IgRU1fR0VUVEVYVEVYLgoKCSogaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9tc3htbDJkaWQuaDoKCVZpamF5IEtpcmFuIEthbXVqdSA8aW5meXF1ZXN0QGdtYWlsLmNvbT4KCUFkZGVkIGRlZmluZXMgZm9yIFhNTERPTSBzdHVmZi4KCgkqIGRsbHMvbXNpL2FjdGlvbi5oLCBkbGxzL21zaS9maWxlcy5jLCBkbGxzL21zaS9oZWxwZXJzLmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJSGFuZGxlIGluc3RhbGxzIG9mZiBtdWx0aXBsZSB2b2x1bWVzIGFuZCBwcm9wZXJseSBwdWxsIHRoZSBwcm9tcHQKCXN0cmluZyBmcm9tIHRoZSBlcnJvciB0YWJsZS4KCgkqIGRsbHMvbnRkbGwvY2Ryb20uYzogTWlrZSBIZWFybiA8bWhAY29kZXdlYXZlcnMuY29tPgoJRml4IEdDQzQgd2FybmluZy4KCgkqIHRvb2xzL3dpZGwvdHlwZWxpYl9zdHJ1Y3QuaCwgdG9vbHMvd2lkbC93cml0ZV9tc2Z0LmM6CglIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPiBmb3IgTWFuZHJpdmEKCVVwZGF0ZSB0aGUgaW1wb3J0IHRhYmxlIGNvZGUgdG8gZWxpbWluYXRlIGEgZmV3IG1hZ2ljIGNvbnN0YW50cy4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jLCBkbGxzL29sZWF1dDMyL3R5cGVsaWIuaCwKCSAgZGxscy9vbGVhdXQzMi90eXBlbGliMi5jOgoJSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4gZm9yIE1hbmRyaXZhCglDb3BlIHdpdGggdGhlIGluZGV4IGluIGEgaW1wb3J0IHRhYmxlIGVudHJ5IGJlaW5nIGEgdHlwZWluZm8gaW5kZXgKCXJhdGhlciB0aGFuIGEgZ3VpZCBvZmZzZXQuCgoJKiBkbGxzL2NhYmluZXQvZmNpLmM6CglHZXJvbGQgSmVucyBXdWNoZXJwZmVubmlnIDxnand1Y2hlcnBmZW5uaWdAZ214Lm5ldD4KCVN1cHBvcnQgZm9yIGJpZy1lbmRpYW4gc3lzdGVtcy4KCgkqIHByb2dyYW1zL3JlZ2VkaXQvbGlzdHZpZXcuYzogR2VyYWxkIFBmZWlmZXIgPGdlcmFsZEBwZmVpZmVyLmNvbT4KCUF2b2lkIGNvbXBpbGVyIHdhcm5pbmcgaW4gQWRkRW50cnlUb0xpc3QoKS4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwgZGxscy9zaGVsbDMyL3NoZmxkcl9kZXNrdG9wLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGZsZHJfdW5peGZzLmM6CglNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglJZiB0aGUgdW5peGZzIGlzIHJvb3RlZCBhdCB0aGUgRGVza3RvcCBmb2xkZXIsIGZvcndhcmQKCVBhcnNlRGlzcGxheU5hbWUgY2FsbHMgdG8gaXQgaW5zdGVhZCBvZiB0byBNeUNvbXB1dGVyLgoKCSogaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9iYXNldHlwcy5oOgoJU3RldmVuIEVkd2FyZHMgPHN0ZXZlbl9lZDQxNTNAeWFob28uY29tPgoJQWRkIGJhc2V0eXBzLmggYmFzZWQgb24gdGhlIHB1YmxpYyBkb21haW4gbWluZ3cgaGVhZGVyIGJ5IEFuZGVycwoJTm9ybGFuZGVyLgoKCSogaW5jbHVkZS93aW5jcnlwdC5oOiBQYXVsIFZyaWVucyA8cGF1bC52cmllbnNAeHM0YWxsLm5sPgoJQ29ycmVjdCBzb21lIE9JRHMuCgoJKiBkbGxzL3NoZWxsMzIvdGVzdHMvc2hsZm9sZGVyLmM6CglWaXRhbGl5IE1hcmdvbGVuIDx3aW5lLXBhdGNoQGtpZXZpbmZvLmNvbT4KCUlMRnJlZSBpcyBub3QgYXZhaWxhYmxlIG9uIGFsbCB2ZXJzaW9ucy4KCgkqIGRsbHMvbnRkbGwvY2Ryb20uYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUEgd29ya2Fyb3VuZCBmb3IgbWlzc2luZyBzdHJ1Y3QgcmVxdWVzdF9zZW5zZSBvbiBGcmVlQlNELgoKCSogZGxscy9jcnlwdDMyL2VuY29kZS5jLCBkbGxzL2NyeXB0MzIvdGVzdHMvZW5jb2RlLmM6CglKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CgktIGZpeCBkZWNvZGluZyBvZiBsb25nLWZvcm0gZGF0YSBsZW5ndGhzCgktIHVzZSBleGNlcHRpb24gaGFuZGxpbmcgaW4gZGVjb2RpbmcKCS0gdGVzdHMgZm9yIHRoZXNlIGNoYW5nZXMKCgkqIHByb2dyYW1zL3dpbmV0ZXN0L01ha2VmaWxlLmluOiBKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJQWRkZWQgbXNodG1sIHRlc3QuCgoyMDA1LTA2LTI4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogdG9vbHMvTWFrZWZpbGUuaW46IFJ1biBtYWtlIGNsZWFuIGluIHRoZSB3aW5hcGkgc3ViZGlyIHRvby4KCgkqIGRsbHMvdXNlci90ZXN0cy93aW5zdGF0aW9uLmMsIHNlcnZlci9ob29rLmMsIHNlcnZlci90aHJlYWQuYywKCSAgc2VydmVyL3RocmVhZC5oLCBzZXJ2ZXIvd2luZG93LmMsIHNlcnZlci93aW5zdGF0aW9uLmM6CglLZWVwIHRyYWNrIG9mIHRoZSB3aW5kb3dzIGFuZCBob29rcyB1c2VkIGJ5IGEgdGhyZWFkIHRvIHByb3Blcmx5CglyZWZ1c2UgdG8gY2hhbmdlIHRoZSB0aHJlYWQgZGVza3RvcCB3aGVuIGl0J3MgaW4gdXNlLgoKCSogZGxscy9jb21tZGxnL2NkbGcxNi5oLCBkbGxzL2NvbW1kbGcvY29sb3JkbGcuYywKCSAgZGxscy9jb21tZGxnL2NvbG9yZGxnMTYuYywgZGxscy9jb21tZGxnL2ZpbGVkbGcuYywKCSAgZGxscy9jb21tZGxnL2ZpbGVkbGcxNi5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZzMxLmMsCgkgIGRsbHMvY29tbWRsZy9maWxlZGxnYnJvd3Nlci5jLCBkbGxzL2NvbW1kbGcvZmlsZXRpdGxlLmMsCgkgIGRsbHMvY29tbWRsZy9maW5kZGxnLmMsIGRsbHMvY29tbWRsZy9mb250ZGxnLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggZGVjbGFyYXRpb25zLgoKCSogZG9jdW1lbnRhdGlvbi9NYWtlZmlsZS5pbjogVGhlIHNhbXBsZXMgc3ViZGlyZWN0b3J5IG5vIGxvbmdlciBleGlzdHMuCgoJKiBkbGxzL2dkaS9mcmVldHlwZS5jOgoJRml4ZWQgSEtMTS9IS0NVIG1peHVwIGZvciB0aGUgZXh0ZXJuYWwgZm9udHMga2V5LgoKCSogZGxscy9tc2kvYWN0aW9uLmMsIGRsbHMvbXNpL2hlbHBlcnMuYywgZGxscy9tc2kvbXNpLmMsCgkgIGRsbHMvbXNpL21zaXByaXYuaCwgZGxscy9tc2kvcGFja2FnZS5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbG9jYXRlIHRoZSBtc2kgZmlsZSB0byBwcmV2ZW50IGNkIGxvY2tpbmcsIGNvcnJlY3RlZCB0byBwcm9wZXJseSBub3QKCXRyeSB0byByZWxvY2F0ZWQgI25ubm4gaGFuZGxlcyBhcyBmaWxlcy4KCgkqIGRsbHMvY29tbWRsZy9NYWtlZmlsZS5pbiwgZGxscy9jb21tZGxnL2ZpbGVkbGcuYzoKCU1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCURvbid0IGV4cGFuZCBNeUNvbXB1dGVyIGluIHRoZSBmaWxlIGRpYWxvZ3Mgd2l0aG91dCB1c2VyIGludGVyYWN0aW9uLAoJaWYgdW5peGZzIGlzIHJvb3RlZCBhdCBkZXNrdG9wLgoKCSogcHJvZ3JhbXMvd2luZWNmZy9Fbi5yYywgcHJvZ3JhbXMvd2luZWNmZy9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvd2luZWNmZy9hdWRpby5jLCBwcm9ncmFtcy93aW5lY2ZnL3Jlc291cmNlLmg6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJLSBBZGQgYW4gYXVkaW8gY29uZmlndXJlIGJ1dHRvbiB3aXRoIGNvZGUgdG8gZGlzcGxheSB0aGUgc2VsZWN0ZWQKCSAgYXVkaW8gZHJpdmVyJ3MgY29uZmlndXJlIGRpYWxvZy4KCS0gQWRkIGFuIGF1ZGlvIGNvbnRyb2wgcGFuZWwgbGF1bmNoIGJ1dHRvbi4KCgkqIGRsbHMvcmljaGVkMjAvZWRpdG9yLmM6IFBoaWwgS3J5bG92IDxwaGlsQG5ld3N0YXIucmluZXQucnU+CglGaXhlZCBhIGNvbW1lbnQgYWJvdXQgRU1fU1RSRUFNSU4uCgoJKiBWRVJTSU9OLCBjb25maWd1cmUsIEFOTk9VTkNFLCBDaGFuZ2VMb2c6IFJlbGVhc2UgMjAwNTA2MjguCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjIwMDUtMDYtMjggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2dkaS9wcmludGRydi5jOgoJTW92ZWQgc3Bvb2xlciBjb25maWd1cmF0aW9uIHRvIEhLQ1VcU29mdHdhcmVcV2luZVxQcmludGluZ1xTcG9vbGVyLgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliLmgsIHRvb2xzL3dpZGwvdHlwZWxpYl9zdHJ1Y3QuaDoKCUh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglBZGQgY29tbWVudHMgZGVzY3JpYmluZyB0aGUgZmlyc3QgRFdPUkQgaW4gYW4gaW1wb3J0IHRhYmxlIGVudHJ5LgoKCSogZGxscy9hZHZhcGkzMi90ZXN0cy9zZWN1cml0eS5jOgoJTWFyayBhcyB0b2RvIGEgY291cGxlIG9mIHRlc3RzIHRoYXQgY3VycmVudGx5IGZhaWwuCgoJKiBkbGxzL3JpY2hlZDIwL2NhcmV0LmMsIGRsbHMvcmljaGVkMjAvZWRpdG9yLmMsCgkgIGRsbHMvcmljaGVkMjAvZWRpdG9yLmg6CglQaGlsIEtyeWxvdiA8cGhpbEBuZXdzdGFyLnJpbmV0LnJ1PgoJSW1wbGVtZW50ZWQgRU1fR0VUVEVYVExFTkdUSEVYIFJpY2hFZGl0IG1lc3NhZ2UuCgoJKiBkbGxzL3dpbmVwcy9pbml0LmMsIGRsbHMvd2luc3Bvb2wvaW5mby5jOgoJTW92ZWQgcHBkIGZpbGUgY29uZmlndXJhdGlvbiB0byBIS0NVXFNvZnR3YXJlXFdpbmVcUHJpbnRpbmdcUFBEIEZpbGVzLgoKCSogZGxscy9udGRsbC9zZWMuYzogSmFtZXMgSGF3a2lucyA8dHJ1aWtlbkBnbWFpbC5jb20+CglGb3J3YXJkIFJ0bEFkZEFjY2VzcyogdG8gYWRkX2FjY2Vzc19hY2UuCgoJKiB0b29scy93aW5hcGkvd2luMzIuYXBpOiBKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCUFkZCBzb21lIG1pc3NpbmcgdHlwZXMgdG8gd2luMzIuYXBpLgoKCSogZGxscy9vbGVhdXQzMi92YXJpYW50LmM6IE1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuZGU+CgktIFZhckNtcDogaGFuZGxlIGNvbXBhcmlzaW9uIG9mIFZUX0VNUFRZIHdpdGggYW4gaW50ZWdlcgoJLSBzbWFsbCBjb21tZW50IGZpeAoKCSogZGxscy9tc2h0bWwvTWFrZWZpbGUuaW4sIGRsbHMvbXNodG1sL2h0bWxkb2MuYywKCSAgZGxscy9tc2h0bWwvbXNodG1sX3ByaXZhdGUuaCwgZGxscy9tc2h0bWwvb2xlb2JqLmMsCgkgIGRsbHMvbXNodG1sL29sZXduZC5jOgoJSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCUFkZGVkIHN0dWIgaW1wbGVtZW50YXRpb24gb2YgSU9sZUluUGxhY2VPYmplY3RXaW5kb3dsZXNzLgoKCSogaW5jbHVkZS93aW50ZXJubC5oOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglEZWNsYXJlIHNvbWUgTnQqIGZ1bmN0aW9ucy4KCjIwMDUtMDYtMjcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3dpbm1tL2xvbHZsZHJ2LmM6CglHZXQgcmlkIG9mIHRoZSBXYXZlTWFwcGVyIGFuZCBNaWRpTWFwcGVyIG9wdGlvbnMsIHRoZSBkZWZhdWx0cyBzaG91bGQKCWJlIGdvb2QgZW5vdWdoIGluIGFsbCBjYXNlcy4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL2NvbW0uYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUFkZGVkIHRlc3QgY2FzZXMuIEhvd2V2ZXIgbW9zdCBhZGRlZCB0ZXN0cyBuZWVkIGEgbG9vcGJhY2sgcGx1ZwlhbmQKCW5lZWQgdG8gYmUgZW5hYmxlZCBpbiB0aGUgY29kZS4KCgkqIGRsbHMvYWR2YXBpMzIvdGVzdHMvc2VjdXJpdHkuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJVGVzdCBBQ0NFU1NfU1lTVEVNX1NFQ1VSSVRZIEFjY2Vzc0NoZWNrIGJlaGF2aW91ci4KCgkqIGRsbHMvY3J5cHQzMi9lbmNvZGUuYzogSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJLSB1c2UgZXhjZXB0aW9uIGhhbmRsaW5nIGluIGVuY29kaW5nCgktIGNvbnNvbGlkYXRlIGludGVnZXIgZW5jb2RlcnMKCgkqIGRsbHMvbXNodG1sL01ha2VmaWxlLmluLCBkbGxzL21zaHRtbC9ibGFuay5odG0sIGRsbHMvbXNodG1sL3JzcmMucmM6CglKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJQWRkZWQgYmxhbmsuaHRtLgoKCSogZGxscy9wc2FwaS90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL3BzYXBpL3Rlc3RzL01ha2VmaWxlLmluLAoJICBkbGxzL3BzYXBpL3Rlc3RzL21vZHVsZS5jLCBkbGxzL3BzYXBpL3Rlc3RzL3BzYXBpX21haW4uYzoKCUZlbGl4IE5hd290aG5pZyA8ZmVsaXgubmF3b3RobmlnQHQtb25saW5lLmRlPgoJUmV3cm90ZSB0aGUgcHNhcGkgdGVzdCBzdWl0ZS4KCgkqIHRvb2xzL3dpbmVidWlsZC9idWlsZC5oLCB0b29scy93aW5lYnVpbGQvaW1wb3J0LmMsCgkgIHRvb2xzL3dpbmVidWlsZC9yZWxheS5jLCB0b29scy93aW5lYnVpbGQvc3BlYzMyLmMsCgkgIHRvb2xzL3dpbmVidWlsZC91dGlscy5jOgoJUmVwbGFjZWQgYWxsIHVzZXMgb2YgdGhlIF9fQVNNX05BTUUgbWFjcm8gYnkgdGhlIGFzbV9uYW1lIGZ1bmN0aW9uIHRvCglhbGxvdyBydW4tdGltZSBkZXRlcm1pbmF0aW9uIG9mIHRoZSBjb3JyZWN0IGZvcm1hdC4KCgkqIGRsbHMvd2luZXBzL3R5cGUxYWZtLmM6CglNb3ZlZCBBRk0gZGlycyBjb25maWd1cmF0aW9uIHRvIGEgc2luZ2xlIEFGTVBhdGgga2V5IHVuZGVyCglIS0NVXFNvZnR3YXJlXFdpbmVcRm9udHMuCgoJKiBkbGxzL3dpbmVkb3MvcHBkZXYuYzoKCU1vdmVkIHBvcnQgY29uZmlndXJhdGlvbiB0byBIS0NVXFNvZnR3YXJlXFdpbmVcVkRNXHBwZGV2LgoKCSogZGxscy93aW5lZG9zL2lvcG9ydHMuYzoKCU1vdmVkIEkvTyBwb3J0IGNvbmZpZ3VyYXRpb24gdG8gSEtDVVxTb2Z0d2FyZVxXaW5lXFZETVxQb3J0cy4KCgkqIGRsbHMvc2hlbGwzMi9icnNmb2xkZXIuYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCB0aGUgQnJvd3NlRm9yRm9sZGVyIGRpYWxvZyBzbyB0aGF0IHdoZW4gaXQgZG9lcyB0aGUgY2FsbGJhY2tzIGl0Cgl1c2VzIHRoZSBjb3JyZWN0IG1lc3NhZ2UgaW5zdGVhZCBvZiBhbHdheXMgc2VuZGluZyBCRUZNX0lOSVRJQUxJWkVELgoKCSogZGxscy9zaGVsbDMyL3NoZmxkcl91bml4ZnMuYzoKCU1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCVByZWNpc2VseSBjb21wdXRlIHRoZSBuZWNlc3NhcnkgcGlkbCBsZW5ndGggaW4gVU5JWEZTX3BhdGhfdG9fcGlkbC4KCgkqIGRsbHMvbXNpL2RpYWxvZy5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglSZXBhaW50IHRoZSBhcmVhIGJlaGluZCB0aGUgInRyYW5zcGFyZW50IiB0ZXh0IGNvbnRyb2wgd2hlbiBpdAoJY2hhbmdlcy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL250ZGxsL2Nkcm9tLmMsIGluY2x1ZGUvY29uZmlnLmguaW46CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkIGEgY2hlY2sgZm9yIHNnX2lvX2hkcl90IGFuZCAobm90IHRlc3RlZCkgY2hlY2sgZm9yIHNjc2lyZXFfdAoJcHJlc2VuY2UuCgoJKiBkbGxzL2l0c3MvaXRzcy5zcGVjOiBKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJRXhwb3J0IERsbE1haW4gYXMgbmF0aXZlIGRvZXMuCgoJKiBkbGxzL2tlcm5lbC90aHJlYWQuYzogRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglJbXBsZW1lbnRlZCBPcGVuVGhyZWFkIG9uIHRvcCBvZiBOdE9wZW5UaHJlYWQuCgoJKiB0b29scy93aW5lYnVpbGQvYnVpbGQuaCwgdG9vbHMvd2luZWJ1aWxkL2ltcG9ydC5jLAoJICB0b29scy93aW5lYnVpbGQvbWFpbi5jLCB0b29scy93aW5lYnVpbGQvcGFyc2VyLmMsCgkgIHRvb2xzL3dpbmVidWlsZC9yZWxheS5jLCB0b29scy93aW5lYnVpbGQvc3BlYzMyLmMsCgkgIHRvb2xzL3dpbmVidWlsZC91dGlscy5jOgoJQmVnaW5uaW5ncyBvZiBhbiBpbmZyYXN0cnVjdHVyZSB0byBhbGxvdyBzcGVjaWZ5aW5nIHRoZSB0YXJnZXQgQ1BVIGFuZAoJcGxhdGZvcm0gYXQgcnVuLXRpbWUuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9tc2h0bWwvTWFrZWZpbGUuaW4sCgkgIGRsbHMvbXNodG1sL3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMvbXNodG1sL3Rlc3RzL01ha2VmaWxlLmluLAoJICBkbGxzL21zaHRtbC90ZXN0cy9odG1sZG9jLmM6CglKYWNlayBDYWJhbiA8Y2phY2VrQGdtYWlsLmNvbT4KCUFkZGVkIHRlc3RzLgoKCSogZGxscy9rZXJuZWwvcHJvY2Vzcy5jLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvbnRkbGwvcHJvY2Vzcy5jLAoJICBpbmNsdWRlL3dpbnRlcm5sLmg6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCUltcGxlbWVudGVkIE9wZW5Qcm9jZXNzIG9uIHRvcCBvZiBOdE9wZW5Qcm9jZXNzLgoKCSogZGxscy9tbGFuZy9tbGFuZy5jLCBkbGxzL21sYW5nL21sYW5nLnNwZWMsIGluY2x1ZGUvbWxhbmcuaWRsOgoJVml0YWx5IExpcGF0b3YgPGxhdkBldGVyc29mdC5ydT4KCUNoYW5nZXMgc3R1YiB0byBGSVhNRSBmb3IgR2V0R2xvYmFsRm9udExpbmtPYmplY3QuCgoJKiBkbGxzL2dkaS90ZXN0cy9iaXRtYXAuYzoKCUZlbGl4IE5hd290aG5pZyA8ZmVsaXgubmF3b3RobmlnQHQtb25saW5lLmRlPgoJUmVwb3J0IGEgdG9kbyBhbmQgc2tpcCBESUIgdGVzdHMgd2hlbiB0aGV5IGZhaWwgYXQgYSBub24tdHJ1ZWNvbG9yCglzY3JlZW4gZGVwdGguCgoJKiBpbmNsdWRlL3dpbm50Lmg6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBwb2ludGVyIHR5cGVzIGZvciB0b2tlbiBzdHJ1Y3R1cmVzLgoKCSogZGxscy9tc3ZjcnQvdGVzdHMvdGltZS5jLCBkbGxzL250ZGxsL3Rlc3RzL3BhdGguYywKCSAgZGxscy9udGRsbC90ZXN0cy9zdHJpbmcuYywgZGxscy9vbGVhdXQzMi90ZXN0cy9vbGVwaWN0dXJlLmMsCgkgIGRsbHMvc2hsd2FwaS90ZXN0cy9zdHJpbmcuYywgZGxscy91cmxtb24vdGVzdHMvdXJsLmMsCgkgIGRsbHMvdXNlci90ZXN0cy9tZW51LmMsIHByb2dyYW1zL3N0YXJ0L3N0YXJ0LmM6CglTdGVmYW4gSHVlaG5lciA8c3RlZmFuQGh1ZWhuZXIub3JnPgoJRml4IHNvbWUgLVdzdHJpY3QtcHJvdG90eXBlcyB3YXJuaW5ncy4KCgkqIGRsbHMva2VybmVsL2NvbnNvbGUuYywgZGxscy9rZXJuZWwvdGVzdHMvcHJvY2Vzcy5jLAoJICBkbGxzL21zdmNydC9jb25zb2xlLmM6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCS0gT3BlbkNvbnNvbGU6IHRyeSB0byBvcGVuIHRoZSBVbml4IGNvbnNvbGUgaWYgd2UgZmFpbCB3aXRoIHdpbmVzZXJ2ZXIKCS0ga2VybmVsMzI6IHNpbXBsaWZ5aW5nIGNvZGUgZm9yIG9wZW5pbmcgYSBjb25zb2xlIGhhbmRsZQoJLSBtc3ZjcnQ6IG5vdyBjb3JyZWN0bHkgaW5pdGlhbGl6aW5nIHRoZSBoYW5kbGVzIHRvIHRoZSBXaW5kb3dzCgkgIGNvbnNvbGUKCgkqIGRsbHMvZDNkOS9kZXZpY2UuYywgZGxscy9kYmdoZWxwL2R3YXJmLmMsCgkgIGRsbHMvZG1zdHlsZS9jb21tYW5kdHJhY2suYywgZGxscy9pcGhscGFwaS9pcGhscGFwaV9tYWluLmMsCgkgIGRsbHMvb2xlMzIvc3RnX3Byb3AuYywgZGxscy91c2VyL3dpbi5jLCBkbGxzL3dpbnNvY2svc29ja2V0LmMsCgkgIGRsbHMveDExZHJ2L2RpYi5jLCBsaWJzL3VuaWNvZGUvY3B0YWJsZS5jLCB0b29scy93cmMvcGFyc2VyLnk6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCUNvbnN0IGNvcnJlY3RuZXNzIGZpeGVzLgoKCSogZGxscy9tc2h0bWwvTWFrZWZpbGUuaW4sIGRsbHMvbXNodG1sL21haW4uYywKCSAgZGxscy9tc2h0bWwvbXNodG1sX3ByaXZhdGUuaCwgZGxscy9tc2h0bWwvcHJvdG9jb2wuYzoKCUphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglBZGRlZCBzdHViIGltcGxlbWVudGF0aW9uIG9mIGFib3V0IGFuZCByZXMgcHJvdG9jb2xzLgoKCSogaW5jbHVkZS9iYXNldHNkLmg6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCURlZmluZSBLQUZGSU5JVFkuCgoJKiBkbGxzL3Jhc2FwaTMyL3Jhc2FwaS5jLCBpbmNsdWRlL3Jhcy5oOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRGVjbGFyZSBhbmQgZml4IGZ1bmN0aW9uIHByb3RvdHlwZXMuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9maWxlLmM6IEphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglGaXggdGVzdCBvbiBOVCA0LgoKCSogcHJvZ3JhbXMvd2NtZC9idWlsdGlucy5jLCBwcm9ncmFtcy93Y21kL3djbWRtYWluLmM6CglBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CglDb25zdGlmeSB3Y21kLgoKCSogcHJvZ3JhbXMvd2luZWNmZy9hcHBkZWZhdWx0cy5jLCBwcm9ncmFtcy93aW5lY2ZnL2F1ZGlvLmMsCgkgIHByb2dyYW1zL3dpbmVjZmcvZHJpdmVkZXRlY3QuYywgcHJvZ3JhbXMvd2luZWNmZy9wcm9wZXJ0aWVzLmMsCgkgIHByb2dyYW1zL3dpbmVjZmcvcHJvcGVydGllcy5oOgoJQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJQ29uc3RpZnkgYWxsIG5lZWRsZXNzbHkgbm9uLWNvbnN0IHdpbmVjZmcgc3RydWN0cy4KCgkqIGRsbHMvb3BlbmdsMzIvbWFrZV9vcGVuZ2wsIGRsbHMvb3BlbmdsMzIvb3BlbmdsX2V4dC5jLAoJICBkbGxzL29wZW5nbDMyL29wZW5nbF9ub3JtLmM6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCU5vdyBnZW5lcmF0aW5nIGFyZ3VtZW50LWxlc3MgZnVuY3Rpb25zIGFzICh2b2lkKSBpbnN0ZWFkIG9mICgpLgoKCSogZGxscy93aW5tbS9tY2lhdmkvd25kLmM6IEVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJRml4ZWQgd2luZG93IHNpemUgY29tcHV0YXRpb24gZm9yIG5vbiBjaGlsZCB3aW5kb3dzLgoKCSogaW5jbHVkZS93aW50ZXJubC5oOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglEZWNsYXJlIHNvbWUgTnQqIGZ1bmN0aW9ucy4KCgkqIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbm50Lmg6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglEVVBMSUNBVEVfKiBmbGFncyBzaG91bGQgYmUgZGVmaW5lZCBpbiB3aW5udC5oLgoKCSogZGxscy9zaGRvY3Z3L3NoZG9jdndfbWFpbi5jOiBjamFjZWsgPGNqYWNla0BnbWFpbC5jb20+CglGaXggdHlwbyBpbiBjb21tZW50IGFib3V0IFdpbmUgcmVnaXN0cnkga2V5LgoKCSogcHJvZ3JhbXMvd2luZW1pbmUvbWFpbi5jOiBKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJQWRkZWQgd2luZW1pbmUgZGVidWcgY2hhbm5lbC4KCgkqIGRsbHMvdXNlci9lZGl0LmM6IEphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglCZXR0ZXIgbm90aWZ5IG1hY3JvCgoJKiBkbGxzL2NyeXB0MzIvZW5jb2RlLmMsIGRsbHMvY3J5cHQzMi90ZXN0cy9lbmNvZGUuYzoKCUp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCS0gaW1wbGVtZW50IGVuY29kZSBhbmQgZGVjb2RlIG9mIEJhc2ljQ29uc3RyYWludHMyLCBzZXF1ZW5jZSBvZiBhbnkKCS0gZml4IGVuY29kaW5nIG9mIGludGVnZXIgdmFsdWUgMAoJLSBtb3JlIHRlc3RzCgoJKiBkbGxzL3NoZWxsMzIvdGVzdHMvc2hsZm9sZGVyLmM6CglTYXVsaXVzIEtyYXN1Y2thcyA8c2F1bGl1cy5rcmFzdWNrYXNAaWVlZS5vcmc+CglBZGRpdGlvbmFsIHRlc3QgY2FzZXMgZm9yIElTaGVsbEZvbGRlcl9CaW5kVG9PYmplY3QuCgoyMDA1LTA2LTI1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy93aW5zb2NrL2FzeW5jLmMsIGRsbHMvd2luc29jay9wcm90b2NvbC5jLCBkbGxzL3dpbnNvY2svc29ja2V0LmMsCgkgIGluY2x1ZGUvd3Myc3BpLmg6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCUZpeCBzb21lIC1XbWlzc2luZy1kZWNsYXJhdGlvbnMgd2FybmluZ3MuCgkiZXJybm8iIGlzIG5vdCBhIGdvb2QgY2hvaWNlIGZvciBhIHBhcmFtZXRlciBuYW1lLgoKCSogZGxscy9rZXJuZWwva2VybmVsMTZfcHJpdmF0ZS5oLCB0b29scy93aW5lYnVpbGQvc3BlYzE2LmM6CglSZW1vdmUgc29tZSBpMzg2IGlmZGVmcyBmb3IgMTYtYml0IGVudHJ5IHBvaW50cyBzaW5jZSB0aGV5IGFyZSBubwoJbG9uZ2VyIHVzZWQgYnkgZGVmYXVsdCBvbiBvdGhlciBwbGF0Zm9ybXMgYW55d2F5LgoKCSogZGxscy91c2VyL2RkZW1sLnNwZWM6IEFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCUZpeCBzb21lIDE2LWJpdCByZXR1cm4gdmFsdWVzLgoKCSogZGxscy9zaGVsbDMyL3NobGZvbGRlci5jOiBNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglGaXggYSBsdXJraW5nIGluZmluaXRlIGxvb3AgaW4gU0hHZXRQYXRoRnJvbUlETGlzdC4KCgkqIGRsbHMvdXNlci9lZGl0LmMsIGRsbHMvdXNlci90ZXN0cy9lZGl0LmM6CglNaWNoYWVsIEthdWZtYW5uIDxoYWxsb0BtaWNoYWVsLWthdWZtYW5uLmNoPgoJLSBSZW1vdmUgdGhlIG9sZCBtYXJnaW5zIGZyb20gdGhlIGZvcm1hdCByZWN0YW5nbGUgYmVmb3JlIGFkZGluZyB0aGUKCSAgbmV3IG1hcmdpbnMuCgktIEFkanVzdCB0aGUgZm9ybWF0IHJlY3RhbmdsZSBhbmQgcmVwYWludCB0aGUgY29udHJvbCBhZnRlciB0aGUKCSAgbWFyZ2lucyBoYXZlIGJlZW4gc2V0LgoJLSBOZXcgdGVzdHMuCgoJKiBkbGxzL250ZGxsL2NyaXRzZWN0aW9uLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gdXNlIFNUQVRVU19USU1FT1VUIGluc3RlYWQgb2YgV0FJVF9USU1FT1VUCgktIGFkZCBSVExfIHRvIG9uZSBtb3JlIENSSVRJQ0FMX1NFQ1RJT05fREVCVUcKCgkqIGRsbHMvbnRkbGwvcnRsLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gTnRXYWl0Rm9yU2luZ2xlT2JqZWN0IGRvZXNuJ3QgcmV0dXJuIFdBSVRfRkFJTEVELgoJLSBVc2UgU1RBVFVTX1dBSVRfMCBub3QgV0FJVF9PQkpFQ1RfMC4KCgkqIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVVzZSBOVCBzdGF0dXMgY29kZXMgZm9yIGV4Y2VwdGlvbnMuCgoJKiBkbGxzL21zaHRtbC9tYWluLmM6IEphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglDaGFuZ2VkIG1lc3NhZ2UgYWJvdXQgTW96aWxsYSBBY3RpdmVYIENvbnRyb2wuCgoJKiBkbGxzL250ZGxsL2Nkcm9tLmMsIGRsbHMvbnRkbGwvZGlyZWN0b3J5LmMsIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmMsCgkgIGRsbHMvbnRkbGwvaGVhcC5jLCBkbGxzL250ZGxsL2xvYWRlci5jLCBkbGxzL250ZGxsL250ZGxsX21pc2MuaCwKCSAgZGxscy9udGRsbC9ydGwuYywgZGxscy9udGRsbC90aW1lLmMsIGRsbHMvbnRkbGwvdmlydHVhbC5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJVXNlIFJUTF9DUklUSUNBTF9TRUNUSU9OIGluc3RlYWQgb2YgQ1JJVElDQUxfU0VDVElPTi4KCgkqIHRvb2xzL3dpbmUuaW5mOiBKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJQWRkZWQgbXNodG1sLmRsbCByZWdpc3RyYXRpb24gdG8gd2luZS5pbmYuCglSZW1vdmVkIGtleXMgdGhhdCBhcmUgcmVnaXN0ZXJlZCBieSBtc2h0bWwuZGxsLgoKCSogZGxscy9tc2h0bWwvLmN2c2lnbm9yZSwgZGxscy9tc2h0bWwvTWFrZWZpbGUuaW4sIGRsbHMvbXNodG1sL21haW4uYywKCSAgZGxscy9tc2h0bWwvbXNodG1sLmluZiwgZGxscy9tc2h0bWwvbXNodG1sLnNwZWMsIGRsbHMvbXNodG1sL3JzcmMucmM6CglKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJSW1wbGVtZW50ZWQgRGxsW1VuXVJlZ2lzdGVyU2VydmVyLgoKCSogZGxscy9tc3ZjcnQvZmlsZS5jLCBkbGxzL21zdmNydC90ZXN0cy9maWxlLmM6CglQYXVsIFJ1cGUgPHBydXBlQG15cmVhbGJveC5jb20+CglNYWtlIHVuZ2V0YyhFT0YpIGEgbm8tb3AuCgoJKiBpbmNsdWRlL3dpbmUvc2VydmVyLmg6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCURvbid0IGluY2x1ZGUgd2lucmVnLmguCgoJKiBkbGxzL3BzYXBpL3BzYXBpX21haW4uYzoKCUZlbGl4IE5hd290aG5pZyA8ZmVsaXgubmF3b3RobmlnQHQtb25saW5lLmRlPgoJRG9uJ3QgZHVtcCBjb250ZW50IG9mIG91dHB1dCBidWZmZXJzLgoKCSogaW5jbHVkZS93aW5jcnlwdC5oOiBKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglBZGQgbW9yZSBtaXNzaW5nIGRlZmluaXRpb25zLgoKCSogZGxscy9zaGVsbDMyL3JlZ3N2ci5jLCBkbGxzL3NoZWxsMzIvc2hmbGRyX3VuaXhmcy5jOgoJTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJVXNlIHRoZSBDYWxsRm9yQXR0cmlidXRlcyByZWdpc3RyeSB2YWx1ZSwgaW5zdGVhZCBvZiBwcm9tb3RpbmcgdGhlCglyb290IGZvbGRlcidzIFNGR0FPX0ZJTEVTWVNURU0gZmxhZyB0byB0aGUgcmVnaXN0cnkuCgoJKiBkbGxzL3NoZWxsMzIvY2xhc3Nlcy5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsCgkgIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYzoKCU1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCVN1cHBvcnQgZm9yIHNoZWxsZm9sZGVyJ3MgQ2FsbEZvckF0dHJpYnV0ZXMgcmVnaXN0cnkgdmFsdWUuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBEb2N1bWVudCBob3cgdGhlIG5hdGl2ZSBsYXlzIG91dCB0aGUgaW50ZXJuYWwgY29tcG9uZW50cyBvZgoJICBidXR0b25zLgoJLSBGaXggY29udHJvbCB0byBmb2xsb3cgdGhlc2UgcnVsZXMuCgktIERvbid0IHJlZHJhdyBkaXNhYmxlZCBidXR0b25zLgoJLSBQYWRkaW5nIGlzIG5ldmVyIGxlc3MgdGhhdCBHZXRTeXN0ZW1NZXRyaWNzKFNNX3tDWCxDWX1FREdFKS4KCS0gQ2hhbmdlIGRlZmF1bHQgaUxpc3RHYXAgdmFsdWUgdG8gNCB0byBtYXRjaCBuYXRpdmUuCgoJKiBkbGxzL2NvbWN0bDMyL3BhZ2VyLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBhIHJlZ3Jlc3Npb24gaW4gSUUgd2hlcmUgdGhlIEZhdm91cml0ZXMgbWVudSBkaWRuJ3QgYXBwZWFyCgljb3JyZWN0bHkgYmVjYXVzZSB0aGUgaGVpZ2h0IGFuZCB3aWR0aCB3ZXJlIHN3YXBwZWQgaW4gdGhlIHBhZ2VyCgljb250cm9sLgoKMjAwNS0wNi0yNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbnRkbGwvc2VjLmM6IEphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJSW1wbGVtZW50IFJ0bEFkZEF1ZGl0QWNjZXNzQWNlLgoKCSogZGxscy9jYWJpbmV0L2NhYmluZXQuaCwgZGxscy9jYWJpbmV0L2ZjaS5jOgoJR2Vyb2xkIEplbnMgV3VjaGVycGZlbm5pZyA8Z2p3dWNoZXJwZmVubmlnQGdteC5uZXQ+CglTb21lIEZDSSB3b3JrLgoKCSogZGxscy9tc2kvYWN0aW9uLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglQZXJmb3JtIEV4ZWN1dGVBY3Rpb24gYXQgVUlMZXZlbCAyLgoKCSogZGxscy9tc2kvZmlsZXMuYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlZG8gaG93IHdlIGV4dHJhY3QgZmlsZXMgZnJvbSBhIGNhYmluZXQgaW4gb3JkZXIgdG8gZHJhbWF0aWNhbGx5CglpbXByb3ZlIHBlcmZvcm1hbmNlLCBlc3BlY2lhbGx5IGlmIHBpY2tpbmcgYW5kIGNob29zaW5nIGZpbGVzIG91dCBvZgoJdGhlIGNhYmluZXQuCgoJKiBkbGxzL21zaS9hY3Rpb24uYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCVJld29yayBDcmVhdGVTaG9ydGN1dHMgdG8gdXNlIE1TSV9JdGVyYXRlUmVjb3Jkcy4KCgkqIGRsbHMvbnRkbGwvcGF0aC5jLCBkbGxzL250ZGxsL3Rlc3RzL3BhdGguYzoKCVJ0bEdldEZ1bGxQYXRoTmFtZV9VIHNob3VsZCByZW1vdmUgdGhlIHRyYWlsaW5nIGRvdCBvbiBkaXJlY3RvcnkKCW5hbWVzLgoKCSogZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jLCBpbmNsdWRlL3dpbmlvY3RsLmg6CglKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCS0gRGVmaW5lIEZTQ1RMX1BJUEVfSU1QRVJTT05BVEUuCgktIEltcGxlbWVudCBJbXBlcnNvbmF0ZU5hbWVkUGlwZUNsaWVudC4KCgkqIGRsbHMvd2luZWQzZC9iYXNldGV4dHVyZS5jLCBkbGxzL3dpbmVkM2QvZGV2aWNlLmMsCgkgIGRsbHMvd2luZWQzZC9kaXJlY3R4LmMsIGRsbHMvd2luZWQzZC9yZXNvdXJjZS5jLAoJICBkbGxzL3dpbmVkM2QvdXRpbHMuYywgZGxscy93aW5lZDNkL3dpbmVkM2RfcHJpdmF0ZS5oLAoJICBpbmNsdWRlL3dpbmUvd2luZWQzZF9nbC5oLCBpbmNsdWRlL3dpbmUvd2luZWQzZF9pbnRlcmZhY2UuaCwKCSAgaW5jbHVkZS93aW5lL3dpbmVkM2RfdHlwZXMuaDoKCU9saXZlciBTdGllYmVyIDxvbGl2ZXJfc3RpZWJlckB5YWhvby5jby51az4KCUFkZCBzdXBwb3J0IGZvciBzYW1wbGVycy4KCVN3aXRjaCBmcm9tIHVzaW5nIGQzZDkgY29uc3RhbnRzIHRvIHdpbmVkM2QgY29uc3RhbnRzIHNvIHRoYXQgdGhlcmUncwoJbm8gcmVjdXJzaXZlIGRlcGVuZGVuY2llcy4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJUHJvcGVybHkgaGFuZGxlIC0xIGFzIGEgcmVnaXN0cnkga2V5IHJvb3QuCgoJKiBkbGxzL250ZGxsL250ZGxsLnNwZWM6IFBhdWwgVnJpZW5zIDxQYXVsLlZyaWVuc0B4czRhbGwubmw+CglDb3JyZWN0IHRoZSBlbnRyaWVzIGZvciBbTnR8WnddT3BlblN5bWJvbGljTGlua09iamVjdC4KCgkqIGRsbHMvbXNpL2RpYWxvZy5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgdHJhbnNwYXJlbmN5IGluIHRoZSB0ZXh0IGNvbnRyb2wuCgoJKiBkbGxzL250ZGxsL3JlZy5jLCBpbmNsdWRlL3dpbnRlcm5sLmg6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBZGQgcHJvdG90eXBlIGFuZCBmaXggUnRscE50Q3JlYXRlS2V5LgoKCSogdG9vbHMvbWFrZV9jdGVzdHMuYzogUGllcnJlIGQnSGVyYmVtb250IDxzdGVnZWZpbkBmcmVlLmZyPgoJQ2hhbmdlIGhlYWRlcnMgdG8gPHdpbmRvd3MuaD4gaW4gb3JkZXIgdG8gcHJldmVudCBhIGNvbXBpbGF0aW9uCglmYWlsdXJlIHdpdGggZ2VuZXJhdGVkIGZpbGVzIG9uIERhcndpbi4KCgkqIGRsbHMvc2hlbGwzMi90ZXN0cy9zaGxmb2xkZXIuYzoKCU1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCUFkZGVkIHRlc3RzIGZvciBTaGVsbEZvbGRlcidzIENhbGxGb3JBdHRyaWJ1dGVzIHZhbHVlLgoKCSogZGxscy91c2VyL2VkaXQuYzogTWljaGFlbCBLYXVmbWFubiA8aGFsbG9AbWljaGFlbC1rYXVmbWFubi5jaD4KCVBhaW50IHRoZSBiYWNrZ3JvdW5kIHdpdGggdGhlIGNvcnJlY3QgY29sb3IgaWYgV1NfQk9SREVSLgoKCSogZGxscy9tc2kvYWN0aW9uLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglSZXdvcmsgU2VsZlJlZ01vZHVsZXMgdG8gdXNlIE1TSV9JdGVyYXRlUmVjb3Jkcy4KCjIwMDUtMDYtMjMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB0b29scy93aW5lYnVpbGQvcGFyc2VyLmM6CglBbGxvY2F0ZSBvcmRpbmFscyBpbiB0aGUgb3JkZXIgb2YgdGhlIGRlY2xhcmF0aW9ucyBpbiB0aGUgc3BlYyBmaWxlLgoKCSogZGxscy9jb21tZGxnL3ByaW50ZGxnLmM6IFZpdGFseSBMaXBhdG92IDxsYXZAZXRlcnNvZnQucnU+CgktIEFkZCBzb21lIGRlc2NyaXB0aW9ucyBmb3IgUGFnZVNldHVwRGxnIGZ1bmN0aW9ucy4KCS0gSW1wbGVtZW50IHVzZXIgcGFpbnQgaG9vayBzdXBwb3J0IGFuZCBQU0RfRU5BQkxFUEFHRVBBSU5USE9PSwoJICBjaGVja2luZy4KCgkqIGRsbHMvbXNodG1sL2h0bWxkb2MuYywgZGxscy9tc2h0bWwvbXNodG1sX3ByaXZhdGUuaCwgZGxscy9tc2h0bWwvdmlldy5jOgoJSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCUFkZGVkIHN0dWIgaW1wbGVtZW50YXRpb24gb2YgSVZpZXdPYmplY3RbMl0gaW50ZXJmYWNlLgoKCSogZGxscy9pdHNzL2l0c3MuYywgZGxscy9pdHNzL2l0c3MuaWRsOgoJSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCVVzZSBHVUlEcyBmcm9tIGl0c3MuaWRsLgoKCSogZGxscy93aW5lZDNkL2Jhc2V0ZXh0dXJlLmMsIGRsbHMvd2luZWQzZC9kZXZpY2UuYywKCSAgZGxscy93aW5lZDNkL3RleHR1cmUuYzoKCU9saXZlciBTdGllYmVyIDxvbGl2ZXJfc3RpZWJlckB5YWhvby5jby51az4KCU1ha2UgYWxsIG5ld2x5IGNyZWF0ZWQgc3VyZmNlcyBkaXJ0eSwgc28gdGhhdCB0aGV5IGFyZSBsb2FkZWQgcHJvcGVybHkKCXRoZSBmaXJzdCB0aW1lIGFyb3VuZC4KCVJlcGxhY2Ugc29tZSBjYWxscyB0byBjdWJldGV4dHVyZSBpbiBiYXNldGV4dHVyZSB0byBjYWxscyB0bwoJYmFzZXRleHR1cmUuCglDaGVjayB0aGF0IHRoZSBsZXZlbCBpc24ndCBvdXQgb2YgYm91bmRzIGluIGNhbGxzIHRvIHRleHR1cmUuCgoJKiBkbGxzL21zaS9NYWtlZmlsZS5pbiwgZGxscy9tc2kvZGlhbG9nLmMsIGRsbHMvbXNpL21zaXByaXYuaCwKCSAgZGxscy9tc2kvcmVjb3JkLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglNYWtlIHRoZSBNU0kgaWNvbiBjb250cm9sIHdvcmsuCgoJKiBkbGxzL21zaS9hY3Rpb24uYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCVJld29yayBjb21wb25lbnQsIGZlYXR1cmUgYW5kIGZpbGUgbG9hZGluZyB0byB1c2UgTVNJX0l0ZXJhdGVSZWNvcmRzLgoKCSogaW5jbHVkZS9tc2lkZWZzLmg6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCURlZmluZSB0aGUgbXNpZGJDb250cm9sQXR0cmlidXRlcyBlbnVtZXJhdGlvbi4KCgkqIHByb2dyYW1zL3dpbmVjZmcvYXBwZGVmYXVsdHMuYywgcHJvZ3JhbXMvd2luZWNmZy9hdWRpby5jLAoJICBwcm9ncmFtcy93aW5lY2ZnL2RyaXZldWkuYywgcHJvZ3JhbXMvd2luZWNmZy9saWJyYXJpZXMuYywKCSAgcHJvZ3JhbXMvd2luZWNmZy93aW5lY2ZnLmMsIHByb2dyYW1zL3dpbmVjZmcvd2luZWNmZy5oLAoJICBwcm9ncmFtcy93aW5lY2ZnL3gxMWRydmRsZy5jOgoJTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJTWFkZSB0aGUgcmVnaXN0cnkgY2FjaGUgbW9yZSBnZW5lcmFsLgoKCSogZGxscy9wc2FwaS9wc2FwaV9tYWluLmM6CglGZWxpeCBOYXdvdGhuaWcgPGZlbGl4Lm5hd290aG5pZ0B0LW9ubGluZS5kZT4KCS0gUmVwbGFjZWQgc2VydmVyIHJlcXVlc3RzIGJ5IG5hdGl2ZSBBUElzIGluIEVudW1Qcm9jZXNzTW9kdWxlcywKCSAgR2V0TW9kdWxlQmFzZU5hbWVXLCBHZXRNb2R1bGVGaWxlTmFtZUV4VyBhbmQgR2V0TW9kdWxlSW5mb3JtYXRpb24uCgktIE1ha2UgRW51bVByb2Nlc3NNb2R1bGVzIHJldHVybiBtb2R1bGVzIGluIGxvYWQgb3JkZXIKCS0gU2V0IEVSUk9SX0lOU1VGRklDSUVOVF9CVUZGRVIgaW4gR2V0TW9kdWxlSW5mb3JtYXRpb24gd2hlbiBmYWlsaW5nCgkgIGR1ZSB0byAoY2IgPCBzaXplb2YoTU9EVUxFSU5GTykpLgoKCSogZGxscy9hZHZhcGkzMi9hZHZhcGkzMi5zcGVjLCBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmM6CglKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCUFkZCBzdHViIGltcGxlbWVudGF0aW9ucyBmb3IgQnVpbGRTZWN1cml0eURlc2NyaXB0b3JBL1cuCgoJKiBkbGxzL2QzZDgvZDNkOF9wcml2YXRlLmgsIGRsbHMvZDNkOC9kaXJlY3R4LmMsCgkgIGRsbHMvZDNkOS9kM2Q5X3ByaXZhdGUuaCwgZGxscy9kM2Q5L2RldmljZS5jLCBkbGxzL2QzZDkvZGlyZWN0eC5jLAoJICBkbGxzL2QzZDkvc3dhcGNoYWluLmMsIGRsbHMvd2luZWQzZC9NYWtlZmlsZS5pbiwKCSAgZGxscy93aW5lZDNkL2RldmljZS5jLCBkbGxzL3dpbmVkM2QvZGlyZWN0eC5jLAoJICBkbGxzL3dpbmVkM2Qvc3dhcGNoYWluLmMsIGRsbHMvd2luZWQzZC93aW5lZDNkX3ByaXZhdGUuaCwKCSAgaW5jbHVkZS93aW5lL3dpbmVkM2RfaW50ZXJmYWNlLmg6CglPbGl2ZXIgU3RpZWJlciA8b2xpdmVyX3N0aWViZXJAeWFob28uY28udWs+CglJbXBsZW1lbnQgc3dhcGNoYWlucy4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJUmV3b3JrIFJlZ2lzdGVyRm9udHMgdG8gdXNlIE1TSV9JdGVyYXRlUmVjb3Jkcy4KCgkqIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYzogSmFtZXMgSGF3a2lucyA8dHJ1aWtlbkBnbWFpbC5jb20+CglGb3J3YXJkIEFkZEF1ZGl0QWNjZXNzQWNlIHRvIGl0cyBSdGwgY291bnRlcnBhcnQuCgoJKiBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvbnRkbGwvc2VjLmMsIGluY2x1ZGUvd2ludGVybmwuaDoKCUphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJQWRkIHN0dWIgaW1wbGVtZW50YXRpb24gb2YgUnRsQWRkQXVkaXRBY2Nlc3NBY2UuCgoJKiBkbGxzL2QzZGltL2QzZGltLnNwZWMsIGRsbHMvZGJnaGVscC9kYmdoZWxwLnNwZWMsCgkgIGRsbHMvaWNtcC9pY21wLnNwZWMsIGRsbHMvaW1hZ2VobHAvaW1hZ2VobHAuc3BlYywKCSAgZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZGxscy9tcHIvbXByLnNwZWMsCgkgIGRsbHMvbXNhY20vbXNhY20zMi5zcGVjLCBkbGxzL25ldGFwaTMyL25ldGFwaTMyLnNwZWMsCgkgIGRsbHMvcnBjcnQ0L3JwY3J0NC5zcGVjLCBkbGxzL3NoZG9jdncvc2hkb2N2dy5zcGVjLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLCBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjLAoJICBkbGxzL3VzZXIvdXNlcjMyLnNwZWM6CglTb3J0IGVudHJ5IHBvaW50cyBpbiB0aGUgc2FtZSBvcmRlciBhcyBXaW5kb3dzLgoKCSogdG9vbHMvd2luZWR1bXAvZW1mLmMsIHRvb2xzL3dpbmVkdW1wL2xuay5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IGRlY2xhcmF0aW9ucy4KCgkqIGRsbHMvb2xlYXV0MzIvdGVzdHMvdmFydGVzdC5jLCBkbGxzL29sZWF1dDMyL3ZhcmZvcm1hdC5jOgoJTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5kZT4KCS0gbW9yZSBWYXJGb3JtYXQgZml4ZXMgZm9yIG51bWJlciBmb3JtYXRzIChleHBvbmVudCwgbWl4ZWQgJyMnIGFuZCAnMCcKCSAgaW4gZm9ybWF0cywgcm91bmRpbmcsIGV0YykuIFNpbXBsaWZ5IHRoZSBjb2RlLgoJLSBwcmV2aW91cyBWYXJGb3JtYXQgdG9kb193aW5lIHRlc3RzIHBhc3Mgbm93ICsgYWRkIG1vcmUgdGVzdHMKCgkqIGRsbHMvbnRkbGwvdGVzdHMvaW5mby5jOiBQYXVsIFZyaWVucyA8UGF1bC5WcmllbnNAeHM0YWxsLm5sPgoJTlQ0IGRvZXNuJ3Qgc3VwcG9ydCBQcm9jZXNzSW9Db3VudGVycy4KCgkqIHByb2dyYW1zL3JlZ2VkaXQvcmVnZWRpdC5jOiBTdGV2ZW4gRWR3YXJkcyA8c3RldmVuX2VkNDE1M0B5YWhvby5jb20+CglSZW1vdmUgYW4gb3V0ZGF0ZWQgY29tbWVudCBpbiB0aGUgY29tbWFuZCBsaW5lIG9wdGlvbnMuCgoJKiBkbGxzL250ZGxsL29tLmM6IFBhdWwgVnJpZW5zIDxQYXVsLlZyaWVuc0B4czRhbGwubmw+CglSZXR1cm4gU1RBVFVTX09CSkVDVF9OQU1FX05PVF9GT1VORCBpbiBOdE9wZW5TeW1ib2xpY0xpbmtPYmplY3QgKHVudGlsCglpbXBsZW1lbnRlZCkuCgoJKiBkbGxzL21zaS9hY3Rpb24uYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCVJld29yayBXcml0ZUluaVZhbHVlcyB0byB1c2UgTVNJX0l0ZXJhdGVSZWNvcmRzLgoKMjAwNS0wNi0yMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJUmV3b3JrIFB1Ymxpc2hQcm9kdWN0IHRvIHVzZSBNU0lfSXRlcmF0ZVJlY29yZHMuCgoJKiBkbGxzL2FkdmFwaTMyL2FkdmFwaTMyLnNwZWMsIGRsbHMvY2FyZHMvY2FyZHMuc3BlYywKCSAgZGxscy9jcnlwdDMyL2NyeXB0MzIuc3BlYywgZGxscy9kM2RpbS9kM2RpbS5zcGVjLAoJICBkbGxzL2QzZHg4L2QzZHg4LnNwZWMsIGRsbHMvZGRyYXcvZGRyYXcuc3BlYywKCSAgZGxscy9kaW5wdXQvZGlucHV0LnNwZWMsIGRsbHMvZ2x1MzIvZ2x1MzIuc3BlYywKCSAgZGxscy9nbHV0MzIvZ2x1dDMyLnNwZWMsIGRsbHMvaW1tMzIvaW1tMzIuc3BlYywKCSAgZGxscy9tc3ZjcnRkL21zdmNydGQuc3BlYywgZGxscy9udGRsbC9udGRsbC5zcGVjLAoJICBkbGxzL29sZTMyL29sZTMyLnNwZWMsIGRsbHMvb3BlbmdsMzIvb3BlbmdsMzIuc3BlYywKCSAgZGxscy9zZXR1cGFwaS9zZXR1cGFwaS5zcGVjLCBkbGxzL3RhcGkzMi90YXBpMzIuc3BlYywKCSAgZGxscy93aW5pbmV0L3dpbmluZXQuc3BlYywgZGxscy93aW5tbS93aW5lYWxzYS93aW5lYWxzYS5kcnYuc3BlYywKCSAgZGxscy93aW5tbS93aW5lYXJ0cy93aW5lYXJ0cy5kcnYuc3BlYywKCSAgZGxscy93aW5tbS93aW5lamFjay93aW5lamFjay5kcnYuc3BlYywgZGxscy93aW5tbS93aW5tbS5zcGVjLAoJICBkbGxzL3dpbnNwb29sL3dpbnNwb29sLmRydi5zcGVjLCBkbGxzL3dpbnRydXN0L3dpbnRydXN0LnNwZWM6CglTb3J0IGVudHJ5IHBvaW50cyBhbHBoYWJldGljYWxseS4KCgkqIGRsbHMvd2luZWQzZC9kaXJlY3R4LmM6IE9saXZlciBTdGllYmVyIDxvbGl2ZXJfc3RpZWJlckB5YWhvby5jby51az4KCUNvcnJlY3QgR2V0RGV2aWNlQ2FwcyBzbyB0aGF0IGl0IHVzZXMgd2luZWQzZGNhcHMgYXMgcmVxdWlyZWQgYnkgdGhlCgllYXJsaWVyIGRldmljZSBjYXBzIHBhdGNoLgoKCSogaW5jbHVkZS9tc3htbC5pZGw6IFZpamF5IEtpcmFuIEthbXVqdSA8aW5meXF1ZXN0QGdtYWlsLmNvbT4KCUFkZCBkZWZpbml0aW9uIGZvciBJWE1MQXR0cmlidXRlLgoKCSogZGxscy9tc2kvYWN0aW9uLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglSZXdvcmsgUmVnaXN0ZXJUeXBlTGlicmFyaWVzIHRvIHVzZSBNU0lfSXRlcmF0ZVJlY29yZHMuCgoJKiBkbGxzL21zdmNydGQvbXN2Y3J0ZC5zcGVjLCBkbGxzL21zdmNydC9sb2NhbGUuYywKCSAgZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWM6CglGaXggZHVwbGljYXRpb24gb2YgX0dldG5hbWVzIGFuZCBfR2V0dG5hbWVzLCBvbmx5IHRoZSBsYXR0ZXIgYWN0dWFsbHkKCWV4aXN0cy4KCgkqIGRsbHMvdXNlci9jbGlwYm9hcmQuYywgZGxscy91c2VyL2xpc3Rib3guYywgZGxscy91c2VyL21zZ2JveC5jLAoJICBkbGxzL3VzZXIvc3lzcGFyYW1zLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggZGVjbGFyYXRpb25zLCByZW1vdmUgdW51c2VkIGNvZGUuCgoJKiBpbmNsdWRlL21zeG1sLmlkbDogVmlqYXkgS2lyYW4gS2FtdWp1IDxpbmZ5cXVlc3RAZ21haWwuY29tPgoJQWRkIG1pc3NpbmcgZ3VpZHMgYW5kIGRlY2xhcmF0aW9ucy4KCgkqIGRsbHMvc2hlbGwzMi90ZXN0cy9zaGxmb2xkZXIuYzoKCVNhdWxpdXMgS3Jhc3Vja2FzIDxzYXVsaXVzLmtyYXN1Y2thc0BpZWVlLm9yZz4KCS0gTW92ZSB0ZXN0IGluaXQgY29kZSBiYWNrIHRvIFNUQVJUX1RFU1Qoc2hsZm9sZGVyKS4KCS0gTW92ZSBjcmVhdGlvbiBhbmQgY2xlYW51cCBvZiBhIHRlc3QtZm9sZGVycyBuZWFyZXIgdG8KCSAgdGVzdF9FbnVtT2JqZWN0cy4KCgkqIGRsbHMvZ2RpL3Rlc3RzL21ldGFmaWxlLmM6CglGZWxpeCBOYXdvdGhuaWcgPGZlbGl4Lm5hd290aG5pZ0B0LW9ubGluZS5kZT4KCS0gVXNlIHNtYWxsZXIgbnVtYmVycyBhcyBjb29yZGluYXRlcyBmb3IgbWFwcGluZyB0ZXN0cyB0byBhdm9pZAoJICByb3VuZGluZy1lcnJvcnMuCgktIFNpbXBsaWZ5IGNhbGN1bGF0aW9uIG9mIG1hcHBlZCBjb29yZGluYXRlcyBmb3IgTU1fVEVYVC4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJUmV3b3JrIExhdW5jaENvbmRpdGlvbnMgdG8gdXNlIE1TSV9JdGVyYXRlUmVjb3Jkcy4KCgkqIGRsbHMveDExZHJ2L3hmb250LmM6CglNb3ZlZCBmb250IHNldHRpbmdzIHRvIEhLQ1VcU29mdHdhcmVcV2luZVxYMTEgRHJpdmVyXEZvbnRzLgoKCSogZGxscy9kbWJhbmQvYmFuZC5jLCBkbGxzL2RtYmFuZC9iYW5kdHJhY2suYywKCSAgZGxscy9kbWJhbmQvZG1iYW5kX3ByaXZhdGUuaCwgZGxscy9kbWJhbmQvZG11dGlscy5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IHVwIGRlY2xhcmF0aW9ucy4KCgkqIGRsbHMvbnRkbGwvcnRsc3RyLmMsIGluY2x1ZGUvd2ludGVybmwuaDoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCURlY2xhcmUgUnRsR1VJREZyb21TdHJpbmcgYW5kIFJ0bFN0cmluZ0Zyb21HVUlELgoKCSogcHJvZ3JhbXMvcmVnZWRpdC9yZWdwcm9jLmMsIHByb2dyYW1zL3JlZ2VkaXQvcmVncHJvYy5oOgoJU3RlZmFuIEh1ZWhuZXIgPHN0ZWZhbkBodWVobmVyLm9yZz4KCVJlbW92ZSBzb21lIG1vcmUgLVdzdHJpY3QtcHJvdG90eXBlcyB3YXJuaW5ncy4KCgkqIGRsbHMvYXRsL2F0bGJhc2UuaDogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWRkIHNvbWUgbWlzc2luZyBkZWNsYXJhdGlvbnMuCgoJKiBkbGxzL2FkdmFwaTMyL3Rlc3RzL3NlY3VyaXR5LmM6CglGZWxpeCBOYXdvdGhuaWcgPGZlbGl4Lm5hd290aG5pZ0B0LW9ubGluZS5kZT4KCVNraXAgQUNMIHRlc3RzIG9uIFdpbjl4LgoKCSogZGxscy93aW5tbS9sb2x2bGRydi5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglNYWtlIGEgZnVuY3Rpb24gc3RhdGljLgoKCSogaW5jbHVkZS93aW5iYXNlLmg6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCURlY2xhcmUgUHJvY2Vzc0lkVG9TZXNzaW9uSWQuCgoJKiB0b29scy93cmMvdHJhbnNsYXRpb24uYywgdG9vbHMvd3JjL3dyYy5jLCB0b29scy93cmMvd3JjLmg6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglNb3ZlIGZ1bmN0aW9uIHByb3RvdHlwZXMgdG8gaGVhZGVyLgoKMjAwNS0wNi0yMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbnRkbGwvaGVhcC5jOgoJRG9uJ3QgcmVxdWlyZSBleGVjdXRlIHBlcm1pc3Npb24gb24gdGhlIHByb2Nlc3MgaGVhcC4KCgkqIGRsbHMvY29tY3RsMzIvdGVzdHMvc3ViY2xhc3MuYywgZGxscy9kaW5wdXQvdGVzdHMvZGlucHV0X3Rlc3QuaCwKCSAgZGxscy9kaW5wdXQvdGVzdHMvbW91c2UuYywgZGxscy9kc291bmQvdGVzdHMvY2FwdHVyZS5jLAoJICBkbGxzL2dkaS90ZXN0cy9tZXRhZmlsZS5jLCBkbGxzL21zYWNtL3Rlc3RzL21zYWNtLmMsCgkgIGRsbHMvbXNjbXMvbXNjbXNfbWFpbi5jLCBkbGxzL21zdmNydC90ZXN0cy90aW1lLmMsCgkgIGRsbHMvb2xlMzIvb2xlb2JqLmMsIGRsbHMvb2xlMzIvdGVzdHMvbW9uaWtlci5jLAoJICBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYywgZGxscy9yaWNoZWQyMC9lZGl0b3IuYywKCSAgZGxscy9yaWNoZWQyMC9lZGl0b3IuaCwgZGxscy9zaGx3YXBpL3BhdGguYywKCSAgZGxscy9zaGx3YXBpL3Rlc3RzL29yZGluYWwuYywgZGxscy91cmxtb24vdXJsbW9uX21haW4uaCwKCSAgZGxscy91c2VyL3N0YXRpYy5jLCBkbGxzL3VzZXIvdGVzdHMvbXNnLmMsIGRsbHMvdXh0aGVtZS9zeXN0ZW0uYywKCSAgZGxscy93aW5lZG9zL2RldmljZXMuYywgZGxscy93aW5tbS90ZXN0cy9jYXB0dXJlLmM6CglTdGVmYW4gSHVlaG5lciA8c3RlZmFuQGh1ZWhuZXIub3JnPgoJRml4IHNvbWUgbW9yZSAtV3N0cmljdC1wcm90b3R5cGVzIHdhcm5pbmdzLgoKCSogZGxscy9tc2kvYWN0aW9uLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglSZXdvcmsgQ29zdEZpbmFsaXplIHRvIHVzZSBNU0lfSXRlcmF0ZVJlY29yZHMuCgoJKiBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmM6IEphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJSW1wbGVtZW50IElzVG9rZW5SZXN0cmljdGVkLgoKCSogZGxscy9udGRsbC92aXJ0dWFsLmM6CglBZGQgUEFHRV9HVUFSRCBmbGFnIHRvIHRoZSByZXR1cm5lZCBwcm90ZWN0aW9uIG9mIGd1YXJkIHBhZ2VzLgoKCSogZGxscy9udGRsbC9wcm9jZXNzLmMsIGRsbHMvbnRkbGwvdGVzdHMvaW5mby5jOgoJUGF1bCBWcmllbnMgPFBhdWwuVnJpZW5zQHhzNGFsbC5ubD4KCUNoYW5nZSBQcm9jZXNzQmFzaWNJbmZvcm1hdGlvbiB0byB0aGUgc2FtZSBiZWhhdmlvciBhcyB0aGUgcmVzdC4KCVVzZSBLRVJORUxfVVNFUl9USU1FUyBmb3IgUHJvY2Vzc1RpbWVzLgoJQWRkIHRlc3RzIGZvciB2bSwgaW8sIHRpbWVzIGFuZCBoYW5kbGVjb3VudCBpbmZvIGNsYXNzZXMuCglGaXhlcyBmb3IgLVdzdHJpY3QtcHJvdG90eXBlcyB3YXJuaW5ncy4KCgkqIGRsbHMvZHNvdW5kL3Rlc3RzL2NhcHR1cmUuYzoKCUZlbGl4IE5hd290aG5pZyA8ZmVsaXgubmF3b3RobmlnQHQtb25saW5lLmRlPgoJQWNjZXB0IERTRVJSX05PRFJJVkVSIGZyb20gSURpcmVjdFNvdW5kQ2FwdHVyZV9DcmVhdGVDYXB0dXJlQnVmZmVyLgoKCSogZGxscy9tc2kvaGVscGVycy5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJRml4IHNpdHVhdGlvbnMgd2hlcmUgVEFSR0VURElSIGlzIHNldCB0byBhIG5vbiBcIHRlcm1pbmF0ZWQKCXBhdGguIEZpeGVzIGEgZmV3IGluc3RhbGxlcnMuCgoJKiBkbGxzL21zaS9hY3Rpb24uYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCVJld29yayBXcml0ZVJlZ2lzdHJ5VmFsdWVzIHRvIHVzZSBNU0lfSXRlcmF0ZVJlY29yZHMuCgoJKiBpbmNsdWRlL2Ftc3RyZWFtLmlkbDogVmlqYXkgS2lyYW4gS2FtdWp1IDxpbmZ5cXVlc3RAZ21haWwuY29tPgoJQWRkIGRlZmluaXRpb25zIGZvciBBTU1TRl9TVE9QSUZOT1NBTVBMRVMgYW5kIEFNTVNGX05PU1RBTEwuCgoJKiBkbGxzL2FkdmFwaTMyL2FkdmFwaTMyLnNwZWMsIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYzoKCUphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJSW1wbGVtZW50IEdldFRydXN0ZWUqIGZ1bmN0aW9ucy4KCgkqIGRsbHMvc2hlbGwzMi90ZXN0cy9zaGxmb2xkZXIuYzoKCVNhdWxpdXMgS3Jhc3Vja2FzIDxzYXVsaXVzLmtyYXN1Y2thc0BpZWVlLm9yZz4KCUNsZWFudXAgdGhlIHNobGZvbGRlciB0ZXN0IGEgYml0IG1vcmUuCgoJKiBkbGxzL2QzZDkvZGV2aWNlLmM6IE9saXZlciBTdGllYmVyIDxvbGl2ZXJfc3RpZWJlckB5YWhvby5jby51az4KCUNhbGwgd2luZWQzZCBmb3IgR2V0RGlyZWN0M0QgaW5zdGVhZCBvZiB1c2luZyB0aGUgLT5kaXJlY3QzRCBpbnN0YW5jZSwKCXdoaWNoIGlzIG5vIGxvbmdlciB2YWxpZC4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJUmV3b3JrIENyZWF0ZUZvbGRlcnMgdG8gdXNlIE1TSV9JdGVyYXRlUmVjb3Jkcy4KCgkqIGRsbHMvbXNpL2ZpbGVzLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglEdXBsaWNhdGUgZmlsZXMgc2hvdWxkIG5vdCBmYWlsIGlmIHVuYWJsZSB0byBnZXQgRGVzdGluYXRpb24KCURpcmVjdG9yeS4KCgkqIGRsbHMvb3BlbmdsMzIvd2dsLmM6IFZpdGFseSBMaXBhdG92IDxsYXZAZXRlcnNvZnQucnU+CglJbml0aWFsaXplIGV4dGVuc2lvbnMgYWZ0ZXIgY29ycmVjdCBjb250ZXh0IGlzIGNyZWF0ZWQuCgoJKiBkbGxzL3VzZXIvc3lzcGFyYW1zLmM6IFJlaW4gS2xhemVzIDx3aWpuQHdhbmFkb28ubmw+CglJbiByZWdfZ2V0X2xvZ2ZvbnQ6CgktIGhhbmRsZSB0aGUgY2FzZSB0aGF0IHRoZSByZWdpc3RyeSB2YWx1ZSBpcyBhIExPR0ZPTlQxNjsKCS0gaWYgdGhlIGxmSGVpZ2h0IGZpZWxkIGlzIHBvc2l0aXZlLCBpdCByZXByZXNlbnRzIHRoZSBmb250J3MgcG9pbnQKCSAgc2l6ZSBhbmQgbXVzdCBiZSBjb252ZXJ0ZWQgdG8gbG9naWNhbCB1bml0cy4KCgkqIGRsbHMvd2luaW5ldC9odHRwLmM6IE1hYXJ0ZW4gTGFua2hvcnN0IDxtLmIubGFua2hvcnN0QGdtYWlsLmNvbT4KCUNoYW5nZWQgc2V0dGluZyBkZWZhdWx0IHBvcnQgbnVtYmVyIGZyb20gSFRUUF9Db25uZWN0IHRvCglIdHRwT3BlblJlcXVlc3RXLgoKCSogZGxscy93aW5pbmV0L2ludGVybmV0LmMsIGluY2x1ZGUvd2luaW5ldC5oOgoJTWFhcnRlbiBMYW5raG9yc3QgPG0uYi5sYW5raG9yc3RAZ21haWwuY29tPgoJLSBBZGRlZCBuZXcgSU5URVJORVRfT1BUSU9OKiBkZWZpbmVzLgoJLSBGaXhlZCBJbnRlcm5ldFNldE9wdGlvblcgdW5rbm93biBvcHRpb24gaGFuZGxpbmcsIGFuZCBhZGRlZAoJICBJTlRFUk5FVF9PUFRJT05fRElTQUJMRV9QQVNTUE9SVF9BVVRILgoKCSogZGxscy9rZXJuZWwvZmliZXIuYywgZGxscy9rZXJuZWwvdGhyZWFkLmMsIGRsbHMvbnRkbGwvdGhyZWFkLmM6CglEb24ndCByZXF1aXJlIGV4ZWN1dGUgcGVybWlzc2lvbiBmb3IgdGhyZWFkIHN0YWNrcy4KCgkqIGRsbHMvbnRkbGwvYXRvbS5jLCBkbGxzL250ZGxsL2Nkcm9tLmMsIGRsbHMvbnRkbGwvY3JpdHNlY3Rpb24uYywKCSAgZGxscy9udGRsbC9kZWJ1Z2J1ZmZlci5jLCBkbGxzL250ZGxsL2RlYnVndG9vbHMuYywKCSAgZGxscy9udGRsbC9kaXJlY3RvcnkuYywgZGxscy9udGRsbC9lbnYuYywgZGxscy9udGRsbC9lcnJvci5jLAoJICBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jLCBkbGxzL250ZGxsL2hhbmRsZXRhYmxlLmMsIGRsbHMvbnRkbGwvaGVhcC5jLAoJICBkbGxzL250ZGxsL2xhcmdlX2ludC5jLCBkbGxzL250ZGxsL2xvYWRlci5jLCBkbGxzL250ZGxsL2xvYWRvcmRlci5jLAoJICBkbGxzL250ZGxsL250LmMsIGRsbHMvbnRkbGwvb20uYywgZGxscy9udGRsbC9wYXRoLmMsCgkgIGRsbHMvbnRkbGwvcHJvY2Vzcy5jLCBkbGxzL250ZGxsL3JlZy5jLCBkbGxzL250ZGxsL3JlbGF5LmMsCgkgIGRsbHMvbnRkbGwvcmVzb3VyY2UuYywgZGxscy9udGRsbC9ydGwuYywgZGxscy9udGRsbC9ydGxiaXRtYXAuYywKCSAgZGxscy9udGRsbC9ydGxzdHIuYywgZGxscy9udGRsbC9zZWMuYywgZGxscy9udGRsbC9zZXJ2ZXIuYywKCSAgZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jLCBkbGxzL250ZGxsL3NpZ25hbF9wb3dlcnBjLmMsCgkgIGRsbHMvbnRkbGwvc2lnbmFsX3NwYXJjLmMsIGRsbHMvbnRkbGwvc3RyaW5nLmMsIGRsbHMvbnRkbGwvc3luYy5jLAoJICBkbGxzL250ZGxsL3ZlcnNpb24uYywgZGxscy9udGRsbC92aXJ0dWFsLmMsIGRsbHMvbnRkbGwvd2NzdHJpbmcuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCURvbid0IGluY2x1ZGUgd2luYmFzZS5oIG9yIHdpbmVycm9yLmggd2hlbiBub3QgbmVjZXNzYXJ5LgoKCSogc2VydmVyL2NvbnRleHRfaTM4Ni5jLCBzZXJ2ZXIvY29udGV4dF9wb3dlcnBjLmMsCgkgIHNlcnZlci9jb250ZXh0X3NwYXJjLmMsIHNlcnZlci9kZWJ1Z2dlci5jLCBzZXJ2ZXIvZmQuYywKCSAgc2VydmVyL2ZpbGUuYywgc2VydmVyL2hhbmRsZS5jLCBzZXJ2ZXIvbWFpbHNsb3QuYywgc2VydmVyL21hcHBpbmcuYywKCSAgc2VydmVyL25hbWVkX3BpcGUuYywgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3JlZ2lzdHJ5LmMsCgkgIHNlcnZlci9zZXJpYWwuYywgc2VydmVyL3NvY2suYywgc2VydmVyL3RocmVhZC5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRG9uJ3QgaW5jbHVkZSB3aW5iYXNlLmggd2hlbiBpdCdzIG5vdCBuZWNlc3NhcnkuCgoJKiBkbGxzL3VybG1vbi91cmxtb25fbWFpbi5jOgoJTWFhcnRlbiBMYW5raG9yc3QgPG0uYi5sYW5raG9yc3RAZ21haWwuY29tPgoJSW1wcm92ZWQgT2J0YWluVXNlckFnZW50U3RyaW5nIHN0dWIuCgoJKiBkbGxzL2RtaW1lL2F1ZGlvcGF0aC5jLCBkbGxzL2RtaW1lL2RtaW1lX3ByaXZhdGUuaCwKCSAgZGxscy9kbWltZS9ncmFwaC5jLCBkbGxzL2RtaW1lL2x5cmljc3RyYWNrLmMsCgkgIGRsbHMvZG1pbWUvbWFya2VydHJhY2suYywgZGxscy9kbWltZS9wYXJhbWNvbnRyb2x0cmFjay5jLAoJICBkbGxzL2RtaW1lL3BhdHRlcm50cmFjay5jLCBkbGxzL2RtaW1lL3BlcmZvcm1hbmNlLmMsCgkgIGRsbHMvZG1pbWUvc2VnbWVudC5jLCBkbGxzL2RtaW1lL3NlZ21lbnRzdGF0ZS5jLAoJICBkbGxzL2RtaW1lL3NlZ3RyaWdnZXJ0cmFjay5jLCBkbGxzL2RtaW1lL3NlcXRyYWNrLmMsCgkgIGRsbHMvZG1pbWUvc3lzZXh0cmFjay5jLCBkbGxzL2RtaW1lL3RlbXBvdHJhY2suYywKCSAgZGxscy9kbWltZS90aW1lc2lndHJhY2suYywgZGxscy9kbWltZS90b29sLmMsIGRsbHMvZG1pbWUvd2F2ZXRyYWNrLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CgktIHVzZSBpbnRlcmZhY2VzIHJhdGhlciB0aGFuIGludGVybmFsIGZ1bmN0aW9ucwoJLSByZW1vdmUgZGVjbGFyYXRpb24gb2YgQWRkUmVmIGFuZCBRdWVyeUludGVyZmFjZSBmdW5jdGlvbnMgZnJvbQoJICBoZWFkZXJzCgoJKiBpbmNsdWRlL3dpbmUvdGVzdC5oOiBQaWVycmUgZCdIZXJiZW1vbnQgPHN0ZWdlZmluQGZyZWUuZnI+CglGaXggd2luc29jay5oIGFuZCBzdGRsaWIuaCBjb2xsaXNpb24gYnkgaW5jbHVkaW5nIHdpbmRvd3MuaCBpbnN0ZWFkCglvZiB0aGUgcHJldmlvdXMgaGVhZGVycy4KCgkqIGRsbHMvZHNvdW5kL21peGVyLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglGaXggYSB0eXBvLgoKCSogaW5jbHVkZS93aW50ZXJubC5oOiBQYXVsIFZyaWVucyA8UGF1bC5WcmllbnNAeHM0YWxsLm5sPgoJQWRkZWQgS0VSTkVMX1VTRVJfVElNRVMgc3RydWN0LgoKCSogcHJvZ3JhbXMvd2luZWNmZy9ObC5yYywgcHJvZ3JhbXMvd2luZWNmZy93aW5lY2ZnLnJjOgoJUGF1bCBWcmllbnMgPFBhdWwuVnJpZW5zQHhzNGFsbC5ubD4KCVVwZGF0ZSBEdXRjaCByZXNvdXJjZSBmaWxlLgoKCSogZGxscy9zaGVsbDMyL3NoZmxkcl91bml4ZnMuYzoKCU1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCVByb3BhZ2F0ZSB0aGUgcm9vdCBmb2xkZXIncyBhdHRyaWJ1dGVzIHRvIHRoZSByZWdpc3RyeS4KCjIwMDUtMDYtMjAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBwcm9ncmFtcy93aW5lZmlsZS9saWNlbnNlLmMsIHByb2dyYW1zL3dpbmVmaWxlL3NwbGl0cGF0aC5jOgoJTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCVJlbW92ZSBzdXBlcmZsdW91cyBpbmNsdWRlIHN0YXRlbWVudHMuCgoJKiBkbGxzL3F1YXJ0ei9jb250cm9sLmMsIGRsbHMvcXVhcnR6L2VudW1tZWRpYS5jLAoJICBkbGxzL3F1YXJ0ei9lbnVtbW9uaWtlci5jLCBkbGxzL3F1YXJ0ei9maWxlc291cmNlLmMsCgkgIGRsbHMvcXVhcnR6L3RyYW5zZm9ybS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJTWFrZSBmdW5jdGlvbnMgc3RhdGljLCBmaXggZGVjbGFyYXRpb25zLgoKCSogZGxscy9rZXJuZWwvdGltZS5jLCBkbGxzL250ZGxsL3RpbWUuYywgaW5jbHVkZS93aW50ZXJubC5oOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJLSBhdm9pZCB3aW50ZXJubC5oIGRlcGVuZGluZyBvbiB3aW5iYXNlLmgKCS0gZGVmaW5lIFJUTCB2ZXJzaW9ucyBvZiBUSU1FX1pPTkVfSU5GT1JNQVRJT04gYW5kIFNZU1RFTVRJTUUKCgkqIGRsbHMvd2lubW0vbG9sdmxkcnYuYywgZGxscy93aW5tbS93aW5lbW0uaCwgcHJvZ3JhbXMvd2luZWNmZy9hdWRpby5jLAoJICBwcm9ncmFtcy93aW5lY2ZnL3Byb3BlcnRpZXMuYzoKCU1vdmVkIHRoZSBhdWRpbyBkcml2ZXIgY29uZmlndXJhdGlvbiB0byBIS0NVXFNvZnR3YXJlXFdpbmVcRHJpdmVycyBhbmQKCWNoYW5nZWQgaXQgYSBiaXQgdG8gZm9sbG93IHRoZSBtb2RlbCBvZiB0aGUgZ3JhcGhpY3MgZHJpdmVyLgoKCSogZGxscy9kM2Q4L2QzZDhfbWFpbi5jLCBkbGxzL2dkaS9kcml2ZXIuYywKCSAgZGxscy9zaGRvY3Z3L3NoZG9jdndfbWFpbi5jLCBkbGxzL3VzZXIvdXNlcl9tYWluLmMsCgkgIGRsbHMvd2luZWQzZC93aW5lZDNkX21haW4uYzoKCU1vdmVkIGEgZmV3IHJlZ2lzdHJ5IGtleXMgZnJvbSBIS0xNXFNvZnR3YXJlXFdpbmUgdG8KCUhLQ1VcU29mdHdhcmVcV2luZSBmb3IgY29uc2lzdGVuY3kuCgoJKiBkbGxzL3dpbm1tL3dpbmVhbHNhL2F1ZGlvLmM6CglNb3ZlZCBjb25maWd1cmF0aW9uIGRhdGEgdG8gSEtDVVxTb2Z0d2FyZVxXaW5lXEFsc2EgRHJpdmVyLgoKCSogZGxscy9kbWltZS9hdWRpb3BhdGguYywgZGxscy9kbWltZS9kbXV0aWxzLmMsIGRsbHMvZG1pbWUvZ3JhcGguYywKCSAgZGxscy9kbWltZS9seXJpY3N0cmFjay5jLCBkbGxzL2RtaW1lL21hcmtlcnRyYWNrLmMsCgkgIGRsbHMvZG1pbWUvcGFyYW1jb250cm9sdHJhY2suYywgZGxscy9kbWltZS9wYXR0ZXJudHJhY2suYywKCSAgZGxscy9kbWltZS9wZXJmb3JtYW5jZS5jLCBkbGxzL2RtaW1lL3NlZ21lbnQuYywKCSAgZGxscy9kbWltZS9zZWdtZW50c3RhdGUuYywgZGxscy9kbWltZS9zZWd0cmlnZ2VydHJhY2suYywKCSAgZGxscy9kbWltZS9zZXF0cmFjay5jLCBkbGxzL2RtaW1lL3N5c2V4dHJhY2suYywKCSAgZGxscy9kbWltZS90ZW1wb3RyYWNrLmMsIGRsbHMvZG1pbWUvdGltZXNpZ3RyYWNrLmMsCgkgIGRsbHMvZG1pbWUvdG9vbC5jLCBkbGxzL2RtaW1lL3dhdmV0cmFjay5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJTWFrZSBmdW5jdGlvbnMgc3RhdGljLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWM6IFBpZXJyZSBkJ0hlcmJlbW9udCA8c3RlZ2VmaW5AZnJlZS5mcj4KCUFsc28gY2hlY2sgZm9yIC91c3IvWDExUjYvbGliL2xpYkdMLmR5bGliLgoKCSogZGxscy91c2VyL3N5c3BhcmFtcy5jLCBkbGxzL3VzZXIvdGVzdHMvc3lzcGFyYW1zLmM6CglWaXRhbHkgTGlwYXRvdiA8bGF2QGV0ZXJzb2Z0LnJ1PgoJRml4IHJldHVybmVkIHZhbHVlIGZvciBTUElfU0VUTU9VU0VCVVRUT05TV0FQLgoKCSogZGxscy9kZHJhdy90ZXN0cy9kZHJhd21vZGVzLmMsIGRsbHMvaXBobHBhcGkvdGVzdHMvaXBobHBhcGkuYywKCSAgZGxscy9rZXJuZWwvdGVzdHMvcGlwZS5jLCBkbGxzL21zdmNydC90ZXN0cy9oZWFkZXJzLmMsCgkgIGRsbHMvbXN2Y3J0ZC90ZXN0cy9kZWJ1Zy5jLCBkbGxzL25ldGFwaTMyL3Rlc3RzL2FjY2Vzcy5jLAoJICBkbGxzL25ldGFwaTMyL3Rlc3RzL2FwaWJ1Zi5jLCBkbGxzL3JwY3J0NC90ZXN0cy9ycGMuYzoKCVN0ZWZhbiBIdWVobmVyIDxzdGVmYW5AaHVlaG5lci5vcmc+CglNYWtlIHNvbWUgZnVuY3Rpb24gc3RhdGljLgoKCSogZGxscy93aW5tbS93aW5lYWxzYS9hdWRpby5jLCBpbmNsdWRlL21tc3lzdGVtLmg6CglKZXJlbXkgV2hpdGUgPGp3aGl0ZUBjb2Rld2VhdmVycy5jb20+CglSZXZhbXAgdGhlIGluaXRpYWxpemF0aW9uIGZvciBBbHNhLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGluY2x1ZGUvc2hlbGxhcGkuaDoKCVZpdGFseSBMaXBhdG92IDxsYXZAZXRlcnNvZnQucnU+CgktIFJlYWxpemUgRG9FbnZpcm9ubWVudFN1YnN0QSB2aWEgRXhwYW5kRW52aXJvbm1lbnRTdHJpbmdzQS4KCS0gRml4IHR5cGVzIGFuZCByZXR1cm4gdmFsdWVzLgoJLSBBZGQgcHJvdG90eXBlIGludG8gc2hlbGxhcGkuaC4KCgkqIGRsbHMvbXNpL2ZpbGVzLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglVc2UgTVNJX0l0ZXJhdGVSZWNvcmRzIGZvciBEdXBsaWNhdGVGaWxlcy4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJVXNlIE1TSV9JdGVyYXRlUmVjb3JkcyBmb3IgcHJvY2Vzc2luZyBhY3Rpb25zLgoJU29tZSB3aGl0ZXNwYWNlIGNsZWFudXAgYW5kIHJlcGxhY2UgYSBjb21tZW50IGJsb2NrIEkgZGlkIG5vdCB3YW50IHRvCglyZW1vdmUuCgoJKiBkbGxzL2FkdmFwaTMyL3Rlc3RzL2NyeXB0LmMsIGRsbHMvYWR2YXBpMzIvdGVzdHMvY3J5cHRfbG1oYXNoLmMsCgkgIGRsbHMvYWR2YXBpMzIvdGVzdHMvcmVnaXN0cnkuYywgZGxscy9hZHZwYWNrL3Rlc3RzL2FkdnBhY2suYywKCSAgZGxscy9jb21jdGwzMi9saXN0dmlldy5jLCBkbGxzL2NvbWN0bDMyL3Rlc3RzL2ltYWdlbGlzdC5jLAoJICBkbGxzL2RkcmF3L3Rlc3RzL2QzZC5jLCBkbGxzL2RkcmF3L3Rlc3RzL2RkcmF3bW9kZXMuYywKCSAgZGxscy9kZHJhdy90ZXN0cy9kc3VyZmFjZS5jLCBkbGxzL2RpbnB1dC90ZXN0cy9qb3lzdGljay5jLAoJICBkbGxzL2RpbnB1dC90ZXN0cy9rZXlib2FyZC5jLCBkbGxzL2RtYmFuZC9kbWJhbmRfcHJpdmF0ZS5oLAoJICBkbGxzL2RtY29tcG9zL2RtY29tcG9zX3ByaXZhdGUuaCwgZGxscy9kbWltZS9kbWltZV9wcml2YXRlLmgsCgkgIGRsbHMvZG1zY3JpcHQvZG1zY3JpcHRfcHJpdmF0ZS5oLCBkbGxzL2Rtc3R5bGUvZG1zdHlsZV9wcml2YXRlLmgsCgkgIGRsbHMvZG1zeW50aC9kbXN5bnRoX3ByaXZhdGUuaCwgZGxscy9kbXVzaWMvZG11c2ljX3ByaXZhdGUuaCwKCSAgZGxscy9kc291bmQvdGVzdHMvZHMzZC5jLCBkbGxzL2Rzb3VuZC90ZXN0cy9kczNkOC5jLAoJICBkbGxzL2Rzb3VuZC90ZXN0cy9kc291bmQuYywgZGxscy9kc291bmQvdGVzdHMvZHNvdW5kOC5jLAoJICBkbGxzL2Rzb3VuZC90ZXN0cy9wcm9wc2V0LmMsIGRsbHMvZHN3YXZlL2Rzd2F2ZV9wcml2YXRlLmgsCgkgIGRsbHMvZHhkaWFnbi9keGRpYWdfcHJpdmF0ZS5oLCBkbGxzL2dkaS90ZXN0cy9icnVzaC5jLAoJICBkbGxzL2tlcm5lbC90ZXN0cy9lbnZpcm9uLmMsIGRsbHMva2VybmVsL3Rlc3RzL2ZpbGUuYywKCSAgZGxscy9rZXJuZWwvdGVzdHMvbG9jYWxlLmMsIGRsbHMva2VybmVsL3Rlc3RzL21haWxzbG90LmMsCgkgIGRsbHMvbXNjbXMvdGVzdHMvcHJvZmlsZS5jLCBkbGxzL21zaS9hY3Rpb24uYywgZGxscy9tc2kvdGVzdHMvZGIuYywKCSAgZGxscy9tc3ZjcnQvdGVzdHMvaGVhZGVycy5jLCBkbGxzL250ZGxsL3Rlc3RzL2xhcmdlX2ludC5jLAoJICBkbGxzL250ZGxsL3Rlc3RzL3JlZy5jLCBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGUzMi9pZnMuYywKCSAgZGxscy9vbGUzMi90ZXN0cy9tYXJzaGFsLmMsIGRsbHMvb2xlMzIvdGVzdHMvcHJvcHZhcmlhbnQuYywKCSAgZGxscy9vbGVhdXQzMi90ZXN0cy9zYWZlYXJyYXkuYywgZGxscy9xY2FwL3FjYXBfbWFpbi5jLAoJICBkbGxzL3F1YXJ0ei90ZXN0cy9maWx0ZXJncmFwaC5jLCBkbGxzL3NoZG9jdncvc2hkb2N2dy5oLAoJICBkbGxzL3NoZG9jdncvc2hkb2N2d19tYWluLmMsIGRsbHMvc2hlbGwzMi90ZXN0cy9zaGVsbGxpbmsuYywKCSAgZGxscy9zaGx3YXBpL3Rlc3RzL2NsaXN0LmMsIGRsbHMvc2hsd2FwaS90ZXN0cy9zaHJlZy5jLAoJICBkbGxzL3VzZXIvY29tYm8uYywgZGxscy91c2VyL3Rlc3RzL2VkaXQuYywgZGxscy93aW5lcHMvYWZtLmMsCgkgIGRsbHMvd2luc29jay90ZXN0cy9wcm90b2NvbC5jLCBkbGxzL3dpbnNwb29sL2luZm8uYywKCSAgZGxscy93aW50YWIzMi9jb250ZXh0LmMsIHByb2dyYW1zL25vdGVwYWQvZGlhbG9nLmgsCgkgIHByb2dyYW1zL3Byb2dtYW4vZ3JwZmlsZS5jLCB0b29scy93aW5lZ2NjL3dpbmVnY2MuYzoKCVN0ZWZhbiBIdWVobmVyIDxzdGVmYW5AaHVlaG5lci5vcmc+CglGaXggbW9yZSAtV3N0cmljdC1wcm90b3R5cGVzIHdhcm5pbmdzLgoKCSogZGxscy91c2VyL21lbnUuYywgZGxscy91c2VyL3Rlc3RzL21lbnUuYzoKCVJlaW4gS2xhemVzIDx3aWpuQHdhbmFkb28ubmw+CglPd25lciBkcmF3biBtZW51IGl0ZW0gc2l6ZSBjYWxjdWxhdGlvbiBmaXhlczoKCS0gQ29ycmVjdCB3aWR0aCBjYWxjdWxhdGlvbiBvZiBvd25lciBkcmF3biBtZW51IGl0ZW1zOwoJLSBTZXQgdGhlIGhlaWdodCB2YWx1ZSBpbiB0aGUgTUVBU1VSRUlURU0gc3RydWN0IHRvIHRoZSBzYW1lIHZhbHVlIGFzCgkgIFdpbmRvd3MgKE5ULzJrL1hQKSBkb2VzIChwcm9ibGVtIGRlYnVnZ2VkIGJ5IEZlbGl4IE5hd290aG5pZyk7CgktIEFkZCB0ZXN0cyBmb3IgdGhlIGZpeGVzIGFib3ZlOwoJLSBBbHNvIGFkZCB0ZXN0cyBmb3IgbWVudSBiYXJzIHdpdGggb3duZXIgZHJhd24gaXRlbXMuCgoJKiBkbGxzL2Rzb3VuZC9taXhlci5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJRml4IHJvdW5kb2ZmIGVycm9yIHRvIHByZXZlbnQgbmVnYXRpdmUgbGVuZ3RoLgoKCSogZGxscy9tc2kvZGlhbG9nLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2UgdGFicyB3b3JrIGluIG1zaSBkaWFsb2dzLgoKCSogdG9vbHMvd2luZWJ1aWxkL2ltcG9ydC5jLCB0b29scy93aW5lYnVpbGQvcmVsYXkuYzoKCVdvbGZnYW5nIFRoYWxsZXIgPHdvbGZnYW5nLnRoYWxsZXJAZ214Lm5ldD4KCVVzZSBfX0FTTV9OQU1FIGFuZCBIQVZFX0FTTV9ET1RfU0laRSBpbiBhIGZldyBwbGFjZXMgaW4gd2luZWJ1aWxkCgl3aGVyZSB0aGV5IGhhdmUgYmVlbiBtaXNzaW5nIChuZWVkZWQgZm9yIERhcndpbi94ODYpLgoKCSogZGxscy9udGRsbC90aHJlYWQuYywgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLAoJICBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvc2VjdXJpdHkuaCwgc2VydmVyL3RocmVhZC5jLAoJICBzZXJ2ZXIvdG9rZW4uYywgc2VydmVyL3RyYWNlLmM6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglBZGQgc3VwcG9ydCBmb3IgaW1wZXJzb25hdGluZyBhIHRva2VuLgoKCSogZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvb2xlMTYuYywgZGxscy9vbGUzMi9vbGUyLmM6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglDb252ZXJ0IHNvbWUgcmVnaXN0cnkgaGVscGVyIGZ1bmN0aW9ucyB0byB1c2UgdW5pY29kZSB2ZXJzaW9ucyBvZgoJQ0xTSUQgJiByZWdpc3RyeSBmdW5jdGlvbnMgKHVudGVzdGVkKS4KCgkqIGRsbHMvZ2RpL3Rlc3RzL2JpdG1hcC5jOiBMYXVyaSBUdWxtaW4gPHR1bG1pbkBnbWFpbC5jb20+CgktIGFkZCBzb21lIHRlc3RzIGZvciB7R2V0fFNldH1QaXhlbAoJLSBza2lwIHRlc3RzIHRoYXQgZmFpbCBpbiB3aW45eAoKCSogcHJvZ3JhbXMvd2luZWZpbGUvQ3MucmMsIHByb2dyYW1zL3dpbmVmaWxlL0RlLnJjLAoJICBwcm9ncmFtcy93aW5lZmlsZS9Fbi5yYywgcHJvZ3JhbXMvd2luZWZpbGUvRXMucmMsCgkgIHByb2dyYW1zL3dpbmVmaWxlL0ZyLnJjLCBwcm9ncmFtcy93aW5lZmlsZS9IdS5yYywKCSAgcHJvZ3JhbXMvd2luZWZpbGUvSXQucmMsIHByb2dyYW1zL3dpbmVmaWxlL05sLnJjLAoJICBwcm9ncmFtcy93aW5lZmlsZS9QbC5yYywgcHJvZ3JhbXMvd2luZWZpbGUvUHQucmMsCgkgIHByb2dyYW1zL3dpbmVmaWxlL1J1LnJjLCBwcm9ncmFtcy93aW5lZmlsZS9TaS5yYywKCSAgcHJvZ3JhbXMvd2luZWZpbGUvU3YucmMsIHByb2dyYW1zL3dpbmVmaWxlL1poLnJjLAoJICBwcm9ncmFtcy93aW5lZmlsZS9yZXNvdXJjZS5oLCBwcm9ncmFtcy93aW5lZmlsZS93aW5lZmlsZS5oOgoJTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCS0gU3luYyB3aXRoIFJlYWN0T1MgcmVwb3NpdG9yeSwgcmUtaW5kZW50IGFuZCByZW1vdmUgdGFicyBpbiByZXNvdXJjZQoJICBzY3JpcHRzIGFuZCBoZWFkZXIgZmlsZXMuCgktIEFkZCAjaWZkZWYgX19XSU5FX18gZm9yIHRoZSBXaW5lIEFib3V0IGRpYWxvZy4KCgkqIGRsbHMvdXNlci9tZW51LmMsIGRsbHMvdXNlci91c2VyMzIuc3BlYywgaW5jbHVkZS93aW51c2VyLmg6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCVN0dWIgaW1wbGVtZW50YXRpb24gZm9yIEdldE1lbnVCYXJJbmZvLgoKCSogZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jLCBkbGxzL250ZGxsL3NlYy5jLCBpbmNsdWRlL3dpbnRlcm5sLmg6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgUnRsSW1wZXJzb25hdGVTZWxmLCBSZXZlcnRUb1NlbGYgYW5kIE1hcEdlbmVyaWNNYXNrLgoKCSogZGxscy93aW5tbS9tY2kuYywgZGxscy93aW5tbS9tZXNzYWdlMTYuYywgZGxscy93aW5tbS93aW5lbW0uaDoKCVJlaW4gS2xhemVzIDx3aWpuQHdhbmFkb28ubmw+CglJbiBNQ0lfKFVuKU1hcE1zZzE2VG8zMlcgd2l0aCB3TXNnID09IE1DSV9PUEVOKF9EUklWRVIpIG9ubHkgZG8KCXN0cmR1cEF0b1cgb24gdGhvc2UgcGFyYW1ldGVycyB0aGF0IGFyZSBmbGFnZ2VkIHRvIGJlIGEgc3RyaW5nLgoKCSogbGlicy93aW5lL21tYXAuYzogV29sZmdhbmcgVGhhbGxlciA8d29sZmdhbmcudGhhbGxlckBnbXgubmV0PgoJSW1wbGVtZW50IHRyeV9tbWFwX2ZpeGVkIGZvciBEYXJ3aW4uCgoJKiB0b29scy93aW5lYnVpbGQvc3BlYzMyLmMsIHRvb2xzL3dpbmVidWlsZC91dGlscy5jOgoJV29sZmdhbmcgVGhhbGxlciA8d29sZmdhbmcudGhhbGxlckBnbXgubmV0PgoJV2luZWJ1aWxkIGRhcndpbi94ODYtc3BlY2lmaWMgZml4ZXM6CgktIEFzc2VtYmxlciBpbnRlcnByZXRzIC5hbGlnbiBhcyBwb3dlci1vZi10d28KCS0gQWRkIC53ZWFrX3JlZmVyZW5jZSB0byBvdXRwdXQgd2hlcmUgZ2NjIDMuMyBzd2FsbG93cyBpdAoKCSogZGxscy9yaWNoZWQyMC9lZGl0b3IuYzogVml0YWx5IExpcGF0b3YgPGxhdkBldGVyc29mdC5ydT4KCUFsbG93IG51bGwgcG9pbnRlcnMgZm9yIEVNX0dFVFNFTCBtZXNzYWdlIChhcyBNU0ROIHNheXMpLgoKCSogZGxscy9zaGVsbDMyL3NoZmxkcl91bml4ZnMuYzoKCU1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCVVzZSBzdGF0J3MgZGV2L2lub2RlIHRvIGNvbXBhcmUgcGF0aHMgaW5zdGVhZCBvZiBjb21wYXJpbmcgdGhlCglzdHJpbmdzLiBEZWZlciBidWlsZGluZyBhIGZvbGRlcidzIGNoaWxkcmVuIFNISVRFTUlEUyB1bnRpbCBleHBsaWNpdGx5Cglhc2tlZCBmb3IuCgoJKiBkbGxzL250ZGxsL3Byb2Nlc3MuYzogUGF1bCBWcmllbnMgPFBhdWwuVnJpZW5zQHhzNGFsbC5ubD4KCVN0dWIgaW1wbGVtZW50YXRpb25zIGZvciBQcm9jZXNzVm1Db3VudGVycywgUHJvY2Vzc1RpbWVzIGFuZAoJUHJvY2Vzc0hhbmRsZUNvdW50LgoJQ2hhbmdlZCBQcm9jZXNzSW9Db3VudGVycyB0byBtYXRjaCB3aW5kb3dzIGJlaGF2aW9yLgoKCSogZGxscy9rZXJuZWwvY2hhbmdlLmMsIGRsbHMva2VybmVsL2NvbXB1dGVybmFtZS5jLCBkbGxzL2tlcm5lbC9jcHUuYywKCSAgZGxscy9rZXJuZWwvZG9zbWVtLmMsIGRsbHMva2VybmVsL2V4Y2VwdC5jLCBkbGxzL2tlcm5lbC9maWJlci5jLAoJICBkbGxzL2tlcm5lbC9maWxlLmMsIGRsbHMva2VybmVsL2ZpbGUxNi5jLCBkbGxzL2tlcm5lbC9mb3JtYXRfbXNnLmMsCgkgIGRsbHMva2VybmVsL2dsb2JhbDE2LmMsIGRsbHMva2VybmVsL2hlYXAuYywKCSAgZGxscy9rZXJuZWwva2VybmVsX21haW4uYywgZGxscy9rZXJuZWwvbGNmb3JtYXQuYywKCSAgZGxscy9rZXJuZWwvbG9jYWwxNi5jLCBkbGxzL2tlcm5lbC9sb2NhbGUuYywgZGxscy9rZXJuZWwvbW9kdWxlLmMsCgkgIGRsbHMva2VybmVsL25lX21vZHVsZS5jLCBkbGxzL2tlcm5lbC9uZV9zZWdtZW50LmMsCgkgIGRsbHMva2VybmVsL29sZGNvbmZpZy5jLCBkbGxzL2tlcm5lbC9wYXRoLmMsIGRsbHMva2VybmVsL3Byb2Nlc3MuYywKCSAgZGxscy9rZXJuZWwvcHJvZmlsZS5jLCBkbGxzL2tlcm5lbC9wdGhyZWFkLmMsIGRsbHMva2VybmVsL3JlbGF5MTYuYywKCSAgZGxscy9rZXJuZWwvcmVzb3VyY2UuYywgZGxscy9rZXJuZWwvc25vb3AxNi5jLCBkbGxzL2tlcm5lbC9zeW5jLmMsCgkgIGRsbHMva2VybmVsL3N5c2xldmVsLmMsIGRsbHMva2VybmVsL3N5c3RlbS5jLCBkbGxzL2tlcm5lbC90aHVuay5jLAoJICBkbGxzL2tlcm5lbC90aW1lLmMsIGRsbHMva2VybmVsL3V0dGh1bmsuYywgZGxscy9rZXJuZWwvdmlydHVhbC5jLAoJICBkbGxzL2tlcm5lbC92b2x1bWUuYywgZGxscy9rZXJuZWwvdnhkLmMsIGRsbHMva2VybmVsL3dvd3RodW5rLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CgktIGRvbid0IGluY2x1ZGUgd2lucmVnLmgKCS0gaW5jbHVkZSBrZXJuZWxfcHJpdmF0ZS5oIHRvIGdldCBkZWNsYXJhdGlvbiBmb3IgY29udmVydF9vbGRfY29uZmlnKCkKCgkqIHNlcnZlci9mZC5jLCBzZXJ2ZXIvZmlsZS5jLCBzZXJ2ZXIvbmFtZWRfcGlwZS5jLCBzZXJ2ZXIvcmVnaXN0cnkuYywKCSAgc2VydmVyL3NlcmlhbC5jLCBzZXJ2ZXIvdHJhY2UuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZSB1bm5lY2Vzc2FyeSBpbmNsdWRlcy4KCgkqIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy9udGRsbC9zZWMuYywgaW5jbHVkZS93aW50ZXJubC5oOgoJSmFtZXMgSGF3a2lucyA8dHJ1aWtlbkBnbWFpbC5jb20+CglJbXBsZW1lbnQgUnRsQ29weVNlY3VyaXR5RGVzY3JpcHRvci4KCgkqIGRsbHMvb2xlMzIvcnBjLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUNoYW5nZSB0aGUgUlBDIGNvZGUgdG8gdXNlIHRoZSB1bmljb2RlIHZlcnNpb25zIG9mIHRoZSBDTFNJRCAmCglyZWdpc3RyeSBmdW5jdGlvbnMuCgoJKiBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGUzMi9jb21wb2JqX3ByaXZhdGUuaCwKCSAgZGxscy9vbGUzMi90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL29sZTMyL3Rlc3RzL01ha2VmaWxlLmluLAoJICBkbGxzL29sZTMyL3Rlc3RzL2NvbXBvYmouYzoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gQ2hhbmdlIHNvbWUgb2YgdGhlIHJlZ2lzdHJ5IGhlbHBlciBmdW5jdGlvbnMgdG8gdXNlIHRoZSB1bmljb2RlCgkgIHZlcnNpb25zIG9mIHRoZSBDTFNJRCAmIHJlZ2lzdHJ5IGZ1bmN0aW9ucy4KCS0gUmVpbmRlbnQgQ29HZXRDbGFzc09iamVjdCBhbmQgb3V0cHV0IGFuIGVycm9yIG1lc3NhZ2UgaWYgdGhlIGNsYXNzCgkgIGlzbid0IHJlZ2lzdGVyZWQuCgktIEFkZCB0ZXN0cyBmb3IgdGhlIHRvdWNoZWQgZnVuY3Rpb25zLgoKCSogZGxscy91c2VyL3Njcm9sbC5jOiBSZWluIEtsYXplcyA8d2lqbkB3YW5hZG9vLm5sPgoJSW4gU0NST0xMX0RyYXdTY3JvbGxiYXIgYWxsb2NhdGUgdGhlIGludGVybmFsIGluZm8gaWYgbmVlZGVkLgoKCSogaW5jbHVkZS93aW5udC5oOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIFBGX05YX0VOQUJMRUQgZGVmaW5pdGlvbi4KCgkqIGluY2x1ZGUvd2luZ2RpLmg6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglFbmFibGUgTUFLRVBPSU5UUyB1c2FnZSBpbiBXaW5lLgoKCSogZGxscy9yaWNoZWQyMC93cml0ZXIuYzogS3J6eXN6dG9mIEZvbHRtYW4gPHdkZXZAZm9sdG1hbi5jb20+CgktIEZpeCBhIHdhcm5pbmcgY2F1c2VkIGJ5IHRoZSBUQUIgcGF0Y2guCgktIEluaXRpYWxpemUgKnBjYiB0byBhIGxhcmdlIHZhbHVlIGJlZm9yZSBjYWxsaW5nIHRoZSBzdHJlYW0tb3V0CgkgIGNhbGxiYWNrICh0byBtYWtlIGFwcGxpY2F0aW9ucyB0aGF0IGRvbid0IHNldCAqcGNiIGF0IGFsbCBoYXBweSkuCgktIERvbid0IGZsdXNoIHRoZSBvdXRwdXQgc3RyZWFtIHdoZW4gZXJyb3IgY29uZGl0aW9uIGlzIHNldC4KCgkqIGRsbHMvc2hlbGwzMi90ZXN0cy9zaGxmb2xkZXIuYzoKCVN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJTWFrZSBzaGVsbDMyIHRlc3RzIGxvYWRhYmxlIG9uIE5UNC4KCgkqIGRsbHMvbnRkbGwvZmlsZS5jOiBQaWVycmUgZCdIZXJiZW1vbnQgPHN0ZWdlZmluQGZyZWUuZnI+CglNb3ZlIHRoZSAoTWFjIE9TIFgpIElPS2l0IGhlYWRlcnMgdG8gdGhlIHRvcCBvZiB0aGUgZmlsZSB0byBwcmV2ZW50IGEKCWNvbXBpbGF0aW9uIGZhaWx1cmUuCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmM6IFRyb3kgUm9sbG8gPHdpbmVAdHJveS5yb2xsby5uYW1lPgoJQ2hhbmdlIFdTX2JpbmQgdG8gYWNjZXB0IGFuIHNhX2ZhbWlseSBvZiAwIGFzICJkb24ndCBjYXJlIi4KCgkqIHRvb2xzL3dpbmFwaS9tc3ZjbWFrZXI6CglTYXVsaXVzIEtyYXN1Y2thcyA8c2F1bGl1cy5rcmFzdWNrYXNAaWVlZS5vcmc+CglTeW5jIG1zdmNtYWtlciB3aXRoIG1ha2VfY3Rlc3RzIHRvIGdlbmVyYXRlIHZhbGlkIGNvZGUuCgoJKiBkbGxzL2ljY3ZpZC9pY2N2aWQuYywgZGxscy9pdHNzL3N0b3JhZ2UuYywgZGxscy9zaGVsbDMyL3NobG1lbnUuYywKCSAgZGxscy9zaGVsbDMyL3N5c3RyYXkuYywgZGxscy9zaGVsbDMyL3Rlc3RzL3NobGZpbGVvcC5jLAoJICBkbGxzL3dpbm1tL3Rlc3RzL3RpbWVyLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglNYWtlIGZ1bmN0aW9ucyBzdGF0aWMuCgoyMDA1LTA2LTE3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogdG9vbHMvd2luYXBpL3dpbjE2LmFwaSwgdG9vbHMvd2luYXBpL3dpbjMyLmFwaToKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJVXBkYXRlIHRoZSB3aW4oMTZ8MzIpLmFwaSBmaWxlcyB0byBtYXRjaCB0aGUgY3VycmVudCBzb3VyY2VzLgoKCSogZGxscy9tc2kvZXZlbnRzLmMsIGRsbHMvbXNpL21zaXByaXYuaCwgZGxscy9tc2kvcHJldmlldy5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUFsbG93IGNvbnRyb2wgZXZlbnRzIHRvIHJldHVybiBjb2RlcyB0byBoYWx0IHRoZSBwcm9jZXNzaW5nIG9mIGV2ZW50LgoJTmVlZGVkIGZvciB0aGUgU2V0VGFyZ2V0UGF0aCBFdmVudC4KCgkqIGRsbHMvY3J5cHQzMi9jcnlwdDMyLnNwZWMsIGRsbHMvY3J5cHQzMi9lbmNvZGUuYywgaW5jbHVkZS93aW5jcnlwdC5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglGaXggdGhlIENyeXB0RW5jb2RlT2JqZWN0RXgoKSBwcm90b3R5cGUuCglGaXhlcyB3aW5hcGlfY2hlY2sgd2FybmluZ3MuCgoJKiBkbGxzL29kYmNjcDMyL29kYmNjcDMyLmMsIGRsbHMvb2RiY2NwMzIvb2RiY2NwMzIuc3BlYywKCSAgaW5jbHVkZS9vZGJjaW5zdC5oLCB0b29scy93aW5hcGkvd2luMzIuYXBpOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglGaXggdGhlIHByb3RvdHlwZXMgb2YgU1FMQ3JlYXRlRGF0YVNvdXJjZSooKSwgU1FMR2V0UHJpdmF0ZVByb2ZpbGVTdHJpbmcqKCkuCglGaXggdGhlIHJldHVybiB0eXBlIG9mIFNRTEluc3RhbGxlckVycm9yKigpIGFuZAoJU1FMUG9zdEluc3RhbGxlckVycm9yKigpLgoJRml4IHRoZSBTUUxJbnN0YWxsRHJpdmVyKCkgYW5kIFNRTEluc3RhbGxEcml2ZXJFeCgpIHByb3RvdHlwZXMgaW4gdGhlCglzcGVjIGZpbGUuCglBZGQgYW4gb2RiY2NwMzIgc2VjdGlvbiB0byB3aW4zMi5hcGkgZm9yIHdpbmFwaV9jaGVjay4KCgkqIGRsbHMvbXNpL2luc3RhbGwuYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUEgbG9uZyBvdmVyZHVlIGZpeCB0byBNU0lfU2V0VGFyZ2V0UGF0aC4gVGhpcyBzaG91bGQgZml4IGFuIGVycm9yIHdpdGgKCXNvbWUgaW5zdGFsbGVycyB0aGF0IHdoZXJlIHVuYWJsZSB0byBjaGFuZ2UgdGhlIHRhcmdldCBwYXRoLgoKCSogZGxscy9tc2kvYWN0aW9uLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglGbGVzaCBvdXQgdGhlIHJlbWFpbmluZyBrZXlzIGluIFJlZ2lzdGVyUHJvZHVjdC4KCgkqIHByb2dyYW1zL3dpbmVjZmcvYXBwZGVmYXVsdHMuYywgcHJvZ3JhbXMvd2luZWNmZy9kcml2ZXVpLmMsCgkgIHByb2dyYW1zL3dpbmVjZmcvd2luZWNmZy5jOgoJVXBkYXRlZCBwYXRocyBvZiBTaG93RGlyU3ltbGlua3MsIFNob3dEb3RGaWxlcyBhbmQgVmVyc2lvbiBvcHRpb25zLgoKCSogZGxscy9udGRsbC9kaXJlY3RvcnkuYzoKCU1vdmVkIGRpcmVjdG9yeSBvcHRpb25zIHRvIEhLQ1VcU29mdHdhcmVcV2luZS4KCgkqIGRsbHMvbnRkbGwvdmVyc2lvbi5jOiBNb3ZlZCB2ZXJzaW9uIGtleSB0byBIS0NVXFNvZnR3YXJlXFdpbmUuCgoJKiBkbGxzL3VzZXIvdGVzdHMvbXNnLmMsIGRsbHMveDExZHJ2L3dpbnBvcy5jOgoJVml0YWxpeSBNYXJnb2xlbiA8d2luZS1wYXRjaEBraWV2aW5mby5jb20+CglEZWFjdGl2YXRlIGFjdGl2ZSB3aW5kb3cgaW4gU2hvd1dpbmRvdygsU1dfSElERSkuCgoJKiBkbGxzL2RkcmF3L3Rlc3RzL2RzdXJmYWNlLmMsIGRsbHMvb2xlYXV0MzIvdGVzdHMvb2xlcGljdHVyZS5jLAoJICBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYywgZGxscy9xY2FwL3Y0bC5jLAoJICBkbGxzL3NoZWxsMzIvdGVzdHMvc2hsZm9sZGVyLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFzc29ydGVkIHNwZWxsaW5nIGZpeGVzLgoKCSogZGxscy9kbWNvbXBvcy9kbWNvbXBvc19tYWluLmMsIGRsbHMvZG1pbWUvZG1pbWVfbWFpbi5jLAoJICBkbGxzL2Rtc3R5bGUvZG1zdHlsZV9tYWluLmMsIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmMsCgkgIGRsbHMvb2xlcHJvMzIvb2xlcHJvMzJzdHVicy5jLCBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmMsCgkgIGRsbHMvd2lubW0vbW1zeXN0ZW0uYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRml4IHdpbmFwaV9jaGVjayBkb2N1bWVudGF0aW9uIHdhcm5pbmdzLgoKCSogZGxscy91c2VyL2RlZnduZC5jLCBkbGxzL3VzZXIvd2luLmM6CglWaXRhbGl5IE1hcmdvbGVuIDx3aW5lLXBhdGNoQGtpZXZpbmZvLmNvbT4KCVNob3dPd25lZFBvcHVwcyBhbmQgV01fU0hPV1dJTkRPVyBzaG91bGQgaGFuZGxlIG5vbi1XU19QT1BVUCBzdHlsZQoJd2luZG93cyBhcyB3ZWxsLgoKCSogZGxscy9tc2kvTWFrZWZpbGUuaW4sIGRsbHMvbXNpL2FjdGlvbi5jLCBkbGxzL21zaS9hY3Rpb24uaCwKCSAgZGxscy9tc2kvZmlsZXMuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglCcmVhayBvdXQgYWxsIHRoZSBmaWxlIHJlbGF0ZWQgYWN0aW9ucyBhbmQgaGVscGVyIGZ1bmN0aW9ucyBpbnRvCglmaWxlcy5jCgoJKiBkbGxzL2FjdGl2ZWRzL2FjdGl2ZWRzX21haW4uYywgdG9vbHMvd2luYXBpL3dpbjMyLmFwaToKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRml4IHRoZSBGcmVlQURzTWVtKCkgcHJvdG90eXBlLgoJQWRkIGFuIGFjdGl2ZWRzIHNlY3Rpb24gdG8gd2luMzIuYXBpIGZvciB3aW5hcGlfY2hlY2suCglGaXggYSBkb2N1bWVudGF0aW9uIHdhcm5pbmcuCgoJKiBkbGxzL2FkdmFwaTMyL2NyeXB0LmMsIGRsbHMvc2hlbGwzMi9zaGZsZHJfdW5peGZzLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVByb3RlY3QgdGhlIHVuaXN0ZC5oIGFuZCBzeXMvc3RhdC5oIGluY2x1ZGVzLgoJSW5jbHVkZSBjb25maWcuaC4KCUZpeGVzIHdhcm5pbmdzIHJlcG9ydGVkIGJ5IHdpbmFwaV9jaGVjay4KCgkqIGRsbHMvbnRkbGwvdGVzdHMvaW5mby5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVJlbW92ZSBhbiB1bm5lZWRlZCB2YXJpYWJsZSBpbiB0ZXN0X3F1ZXJ5X3RpbWVvZmRheSgpLgoJUmVuYW1lIGEgdmFyaWFibGUgdG8gJ2lzX250JyB0byBtYWtlIGl0cyBtZWFuaW5nIGNsZWFyZXIuCgoJKiBkbGxzL3F1YXJ0ei92aWRlb3JlbmRlcmVyLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJUmVtb3ZlIHVubmVlZGVkIE5VTEwgY2FzdC4KCgkqIHRvb2xzL3dpbmFwaS9jb25maWcucG06IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJUmVtb3ZlIGEgY2hlY2sgZm9yIG9ic29sZXRlIGRpcmVjdG9yeSBhbmQgZmlsZSBzcGVjaWFsIGNhc2VzLgoKCSogdG9vbHMvd2luYXBpL3dpbmFwaV9jaGVjazogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglXZSBzaG91bGQgc2V0IHRoZSBnbG9iYWwgJGFsbF9tb2R1bGVzIHZhcmlhYmxlIG90aGVyd2lzZSB0aGVyZSdzIG5vCglwb2ludC4KCgkqIGRsbHMvbXNpL2RpYWxvZy5jOiBNYXJjdXMgTWVpc3NuZXIgPG1laXNzbmVyQHN1c2UuZGU+CglVc2UgYSBzaW1wbGVyIGV4cHJlc3Npb24gZm9yIHRoZSAiUmljaEVkaXQyMFciIHN0cmluZyB0byB3b3JrYXJvdW5kCgljb21waWxlciBidWcuCgoJKiBkbGxzL2tlcm5lbC9jcHUuYzogTWFyY3VzIE1laXNzbmVyIDxtZWlzc25lckBzdXNlLmRlPgoJU3BlY2lmeSBlbm91Z2ggYnVmZmVyIGZvciBpZFtdICgyMCBjaGFycyBhcmUgbm90IGVub3VnaCkuCgoJKiBkbGxzL2FkdmFwaTMyL3JlZ2lzdHJ5LmMsIGRsbHMva2VybmVsL2NvbXB1dGVybmFtZS5jLAoJICBkbGxzL2tlcm5lbC9jcHUuYywgZGxscy9rZXJuZWwvZXhjZXB0LmMsIGRsbHMva2VybmVsL2xvY2FsZS5jLAoJICBkbGxzL2tlcm5lbC9vbGRjb25maWcuYywgZGxscy9rZXJuZWwvcGF0aC5jLCBkbGxzL2tlcm5lbC9wcm9jZXNzLmMsCgkgIGRsbHMva2VybmVsL3JlbGF5MTYuYywgZGxscy9rZXJuZWwvdm9sdW1lLmMsIGRsbHMvbnRkbGwvY2Ryb20uYywKCSAgZGxscy9udGRsbC9jcml0c2VjdGlvbi5jLCBkbGxzL250ZGxsL2RlYnVnYnVmZmVyLmMsCgkgIGRsbHMvbnRkbGwvZGVidWd0b29scy5jLCBkbGxzL250ZGxsL2RpcmVjdG9yeS5jLCBkbGxzL250ZGxsL2Vudi5jLAoJICBkbGxzL250ZGxsL2Vycm9yLmMsIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmMsIGRsbHMvbnRkbGwvaGFuZGxldGFibGUuYywKCSAgZGxscy9udGRsbC9oZWFwLmMsIGRsbHMvbnRkbGwvbGFyZ2VfaW50LmMsIGRsbHMvbnRkbGwvbG9hZGVyLmMsCgkgIGRsbHMvbnRkbGwvbG9hZG9yZGVyLmMsIGRsbHMvbnRkbGwvbnQuYywgZGxscy9udGRsbC9vbS5jLAoJICBkbGxzL250ZGxsL3Byb2Nlc3MuYywgZGxscy9udGRsbC9yZWcuYywgZGxscy9udGRsbC9yZWxheS5jLAoJICBkbGxzL250ZGxsL3Jlc291cmNlLmMsIGRsbHMvbnRkbGwvcnRsLmMsIGRsbHMvbnRkbGwvcnRsYml0bWFwLmMsCgkgIGRsbHMvbnRkbGwvcnRsc3RyLmMsIGRsbHMvbnRkbGwvc2VjLmMsIGRsbHMvbnRkbGwvc2lnbmFsX3Bvd2VycGMuYywKCSAgZGxscy9udGRsbC9zaWduYWxfc3BhcmMuYywgZGxscy9udGRsbC9zdHJpbmcuYywgZGxscy9udGRsbC90aW1lLmMsCgkgIGRsbHMvbnRkbGwvdmVyc2lvbi5jLCBkbGxzL250ZGxsL3ZpcnR1YWwuYywgZGxscy9udGRsbC93Y3N0cmluZy5jLAoJICBkbGxzL3dpbmVkb3MvaW9wb3J0cy5jLCBkbGxzL3dpbmVkb3MvcHBkZXYuYywgaW5jbHVkZS93aW50ZXJubC5oOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJVXNlIEhBTkRMRSBpbnN0ZWFkIG9mIEhLRVkgaW4gdGhlIE5UIEFQSS4KCgkqIGRsbHMvZ2RpL2RpYi5jOiBNaWNoYWVsIEthdWZtYW5uIDxoYWxsb0BtaWNoYWVsLWthdWZtYW5uLmNoPgoJSW5pdGlhbGl6ZSBtb3JlIHN0cnVjdHVyZSBtZW1iZXJzLCBpbmNsdWRpbmcgYmlTaXplSW1hZ2UgaWYgYml0cyA9PQoJTlVMTCBhbmQgYmlCaXRDb3VudCAhPSAwLgoKCSogZGxscy9udGRsbC90aHJlYWQuYzogVGhlIFRFQiBkb2Vzbid0IG5lZWQgZXhlY3V0ZSBwZXJtaXNzaW9ucy4KCgkqIGRsbHMvdXNlci91c2VyMzIuc3BlYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCURkZUNyZWF0ZVN0cmluZ0hhbmRsZUEvVyB0YWtlcyBhIHBvaW50ZXIgdG8gYSBjb25zdCBzdHJpbmcsCglhY2NvcmRpbmdseSBmaXggdGhlIHNwZWMgZW50cmllcy4KCgkqIGRsbHMvc2hlbGwzMi9zaGZsZHJfdW5peGZzLmM6CglNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglSZW1vdmUgdHJhaWxpbmcgYmFja3NsYXNoIGZyb20gRE9TIHBhdGhzIGluIEdldERpc3BsYXlOYW1lT2YuCgoJKiBwcm9ncmFtcy93aW5lZmlsZS9Dcy5yYzogTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCUNvcnJlY3Rpb25zIG9mIEN6ZWNoIHRyYW5zbGF0aW9uIGJ5IERlbnppbC4KCgkqIGRsbHMvbnRkbGwvb20uYywgaW5jbHVkZS93aW50ZXJubC5oOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRGVjbGFyZSBOdCBkaXJlY3RvcnkgZnVuY3Rpb25zLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGxvYWRlci9NYWtlZmlsZS5pbjoKCU1vdmUgdGhlIGxvYWRlciBhIGJpdCBoaWdoZXIgaW4gbWVtb3J5IHRvIGxlYXZlIG1vcmUgc3BhY2UgZm9yIG50ZGxsCglhbmQga2VybmVsMzIuCgoJKiBkbGxzL29sZWF1dDMyL3Rlc3RzL3ZhcnR5cGUuYywgZGxscy91cmxtb24vdGVzdHMvdXJsLmMsCgkgIGRsbHMvdXNlci90ZXN0cy93aW4uYywgZGxscy93aW5lZG9zL3NvdW5kYmxhc3Rlci5jLAoJICBkbGxzL3dpbm1tL3Rlc3RzL3RpbWVyLmMsIGRsbHMvd2lubW0vdGVzdHMvd2F2ZS5jLAoJICBkbGxzL3dpbnNvY2svdGVzdHMvc29jay5jLCBkbGxzL3dpbnRhYjMyL3dpbnRhYjMyLmMsCgkgIGRsbHMveDExZHJ2L3hpbS5jLCBwcm9ncmFtcy93aW5lZmlsZS93aW5lZmlsZS5jOgoJU3RlZmFuIEh1ZWhuZXIgPHN0ZWZhbkBodWVobmVyLm9yZz4KCVJlbW92ZSBzb21lIC1Xc3RyaWN0LXByb3RvdHlwZXMgd2FybmluZ3MuCgoJKiBkbGxzL2QzZDgvZDNkOF9wcml2YXRlLmgsIGRsbHMvZDNkOC9kaXJlY3R4LmMsCgkgIGRsbHMvZDNkOS9kM2Q5X3ByaXZhdGUuaCwgZGxscy9kM2Q5L2RldmljZS5jLCBkbGxzL2QzZDkvZGlyZWN0eC5jLAoJICBkbGxzL3dpbmVkM2QvZGV2aWNlLmMsIGluY2x1ZGUvd2luZS93aW5lZDNkX2ludGVyZmFjZS5oLAoJICBpbmNsdWRlL3dpbmUvd2luZWQzZF90eXBlcy5oOgoJT2xpdmVyIFN0aWViZXIgPG9saXZlcl9zdGllYmVyQHlhaG9vLmNvLnVrPgoJQ2hhbmdlIHRoZSB3YXkgY2FwcyBhcmUgc2VudCBiZXR3ZWVuIGQzZDkvZDNkOCBhbmQgd2luZWQzZCB0byBtYWtlIGl0CgllYXNpZXIgZm9yIHdpbmVkM2QgdG8gc3VwcG9ydCBhZGRpdGlvbmFsIHZlcnNpb25zIG9mIERpcmVjdDNELgoKCSogZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUV4dHJhY3RBc3NvY2lhdGVkSWNvbkEgbmVlZHMgdG8gYWxsb2NhdGUgZW5vdWdoIHNwYWNlIHRvIGhhdmUgRUFJVwoJZmlsbCBpbiBscEljb25QYXRoVy4KCgkqIGRsbHMvbXNpL2FjdGlvbi5oOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVJlbW92ZSBjc3picyBmcm9tIG1zaS9hY3Rpb24uaC4KCgkqIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYzogSmFtZXMgSGF3a2lucyA8dHJ1aWtlbkBnbWFpbC5jb20+CglGb3J3YXJkIEdldFByaXZhdGUvS2VybmVsT2JqZWN0U2VjdXJpdHkgdG8gTnRRdWVyeVNlY3VyaXR5T2JqZWN0LgoKCSogaW5jbHVkZS93aW5kZWYuaDogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVkIFBPSU5UUyBkZWZpbml0aW9uIGZvciBXT1JEU19CSUdFTkRJQU4gY2FzZS4KCgkqIGRsbHMvY3J5cHQzMi9lbmNvZGUuYzogSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJQWRkIGEgZmV3IHRyYWNlcyBhbmQgY29tbWVudHMuCgoJKiBpbmNsdWRlL3dpbmNyeXB0Lmg6IEp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCUFkZCBtb3JlIG1pc3NpbmcgZGVmcy4KCjIwMDUtMDYtMTYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL250ZGxsL3JlbGF5LmMsIHRvb2xzL3dpbmVidWlsZC9pbXBvcnQuYzoKCU1ha2UgaW1wb3J0IHRodW5rcyBwb3NpdGlvbi1pbmRlcGVuZGVudCB0byBhdm9pZCB0ZXh0IHJlbG9jYXRpb25zLgoKCSogZGxscy93aW5lcHMvdHJ1ZXR5cGUuYzoKCVVzZSB0aGUgc3RhbmRhcmQgZm9udCBwYXRoIHRvIGxvb2sgZm9yIFRydWVUeXBlIGZvbnRzLgoKCSogZGxscy93aW5lZDNkL2RpcmVjdHguYywgaW5jbHVkZS9kM2Q5Y2Fwcy5oOgoJT2xpdmVyIFN0aWViZXIgPG9saXZlcl9zdGllYmVyQHlhaG9vLmNvLnVrPgoJUmVuYW1lIF9EM0RDQVBTOS5NYXhQaXhlbFNoYWRlclZhbHVlIHRvIHRoZSBjb3JyZWN0CglfRDNEQ0FQUzkuUGl4ZWxTaGFkZXIxeE1heFZhbHVlLgoKCSogZGxscy9tc2kvTWFrZWZpbGUuaW4sIGRsbHMvbXNpL2FjdGlvbi5jLCBkbGxzL21zaS9pbnN0YWxsLmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQnJlYWsgb3V0IGFsbCB0aGUgdG9wIGxldmVsIGFwaXMgaW50byBpbnN0YWxsLmMuCgoJKiBwcm9ncmFtcy93aW5lY2ZnL2RyaXZldWkuYzogUGF1bCBWcmllbnMgPFBhdWwuVnJpZW5zQHhzNGFsbC5ubD4KCUhpZGUgPC0+IFNob3cgQWR2YW5jZWQuCgoJKiBkbGxzL21zaS9kaWFsb2cuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgc3VwcG9ydCBmb3IgdGhlIE1TSSBNYXNrRWRpdCBjb250cm9sLgoKCSogZGxscy9kM2Q5L3ZlcnRleGRlY2xhcmF0aW9uLmM6CglPbGl2ZXIgU3RpZWJlciA8b2xpdmVyX3N0aWViZXJAeWFob28uY28udWs+CglEaXNhYmxlIHRoZSBjcmVhdGlvbiBvZiBpbnZhbGlkIHZlcnRleCBkZWNsYXJhdGlvbnMgaW4gZDNkOSBwcmV2ZW50aW5nCglzb21lIGFwcGxpY2F0aW9ucyBmcm9tIGNyYXNoaW5nLgoKCSogZGxscy9kM2Q5L3RleHR1cmUuYzogT2xpdmVyIFN0aWViZXIgPG9saXZlcl9zdGllYmVyQHlhaG9vLmNvLnVrPgoJQWRkZWQgcmVsYXkgdHJhY2luZyB0byB0ZXh0dXJlLgoKCSogaW5jbHVkZS9kM2Q5dHlwZXMuaDogT2xpdmVyIFN0aWViZXIgPG9saXZlcl9zdGllYmVyQHlhaG9vLmNvLnVrPgoJRGVmaW5lIHNvbWUgbW9yZSBmbGFncwoKCSogZGxscy9hZHZhcGkzMi90ZXN0cy9yZWdpc3RyeS5jLCBzZXJ2ZXIvcmVnaXN0cnkuYzoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gQWxsIHZlcnNpb25zIG9mIFdpbmRvd3MgaWdub3JlIHRoZSBhY2Nlc3MgcmlnaHRzIG9mIHRoZSBwYXNzZWQgaW4KCSAgcGFyZW50IGhhbmRsZSB0byBSZWdDcmVhdGVLZXkoRXgpLgoJLSBBZGQgYSB0ZXN0IHRoYXQgc2hvd3MgdGhpcy4KCgkqIGRsbHMvbXNpL2N1c3RvbS5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQSBzaW1wbGUgY2xlYW51cCB0byBvbmx5IHRyYWNrIHRoZSB0ZW1wIGZpbGUgaWYgd2UgbmVlZCB0byBoYXZlIGl0CglsYXlpbmcgYXJvdW5kIGJlY2F1c2UgdGhlIGFjdGlvbiBpcyBnb2luZyBvbiBhc3luY2hyb25vdXNseS4gT3RoZXJ3aXNlCgljbGVhbiB1cCB0aGUgdGVtcCBmaWxlIGFzIHRoZSBhY3Rpb24gZmluaXNoZXMuCgoJKiBwcm9ncmFtcy93aW5lY2ZnL3dpbmVjZmcuYzoKCVVzZSBSZWdPcGVuS2V5IGluc3RlYWQgb2YgUmVnT3BlbktleUV4IHRvIGF2b2lkIHRyb3VibGUgd2l0aCBoYW5kbGUKCWFjY2VzcyByaWdodHMuCgoJKiBwcm9ncmFtcy93aW5lY2ZnL21haW4uYywgcHJvZ3JhbXMvd2luZWNmZy93aW5lY2ZnLmMsCgkgIHByb2dyYW1zL3dpbmVjZmcvd2luZWNmZy5oLCBwcm9ncmFtcy93aW5lY2ZnL3gxMWRydmRsZy5jOgoJRml4ZWQgcmVnaXN0cnkgcGF0aHMgdG8gZWRpdCB0aGUgcmVhbCBjb25maWcsIGFuZCByZW1vdmVkIHRoZSBzdGFydHVwCgl3YXJuaW5nIG1lc3NhZ2UuCgoJKiBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jOgoJTW92ZWQgY29uZmlndXJhdGlvbiBrZXlzIHRvIEhLQ1VcU29mdHdhcmVcV2luZVxYMTEgRHJpdmVyLgoKCSogZGxscy9udGRsbC9sb2Fkb3JkZXIuYzoKCU1vdmVkIGNvbmZpZ3VyYXRpb24ga2V5cyB0byBIS0NVXFNvZnR3YXJlXFdpbmVcRGxsT3ZlcnJpZGVzLgoKCSogZGxscy9tc2kvdXBncmFkZS5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQWRkIFVJIG1lc3NhZ2VzIHRvIEZpbmRSZWxhdGVkUHJvZHVjdHMuCglSZWR1Y2UgdW5uZWVkZWQgaW5jbHVkZXMuCgoJKiBkbGxzL2NyeXB0MzIvZW5jb2RlLmMsIGRsbHMvY3J5cHQzMi90ZXN0cy9lbmNvZGUuYzoKCUp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCS0gaW1wbGVtZW50IGVuY29kaW5nIGFuZCBkZWNvZGluZyBvZiBlbnVtZXJhdGVkIHR5cGVzLCB1bnNpZ25lZAoJICBpbnRlZ2Vycywgb2N0ZXQgc3RyaW5ncywgYW5kIGJpdCBzdHJpbmdzCgktIGNvcnJlY3QgbGVuZ3RoIGhhbmRsaW5nCgktIHRoZSB1c3VhbCB0ZXN0cwoKCSogcHJvZ3JhbXMvd2luZWJvb3Qvd2luZWJvb3QuYywgcHJvZ3JhbXMvd2luZWNmZy9kcml2ZS5jLAoJICBwcm9ncmFtcy93aW5lY2ZnL2RyaXZlZGV0ZWN0LmMsIHByb2dyYW1zL3dpbmVjZmcvd2luZWNmZy5oOgoJU3RlZmFuIEh1ZWhuZXIgPHN0ZWZhbkBodWVobmVyLm9yZz4KCUZpeCBzb21lIC1Xc3RyaWN0LXByb3RvdHlwZXMgd2FybmluZ3MuCgoJKiB0b29scy93aW5lYnVpbGQvcmVsYXkuYzoKCUdlbmVyYXRlIHByb3BlciBQSUMgY29kZSBmb3IgQ0FMTDMyX0NCQ2xpZW50LgoKCSogZGxscy9tc3ZjcnQvY3BwLmM6CglTdG9yZSB2dGFibGVzIGluIHRoZSBkYXRhIHNlZ21lbnQgdG8gYXZvaWQgdGV4dCByZWxvY2F0aW9ucy4KCgkqIGRsbHMvY29tY3RsMzIvdGVzdHMvdHJlZXZpZXcuYywgZGxscy9jb21jdGwzMi91cGRvd24uYywKCSAgZGxscy9tc2h0bWwvdmlldy5jLCBkbGxzL250ZGxsL3Rlc3RzL3J0bC5jLAoJICBkbGxzL250ZGxsL3Rlc3RzL3J0bGJpdG1hcC5jLCBkbGxzL3JzYWJhc2UvdGVzdHMvcnNhYmFzZS5jLAoJICBkbGxzL3JzYWVuaC90ZXN0cy9yc2FlbmguYzoKCVN0ZWZhbiBIdWVobmVyIDxzdGVmYW5AaHVlaG5lci5vcmc+CglGaXggc29tZSAtV3N0cmljdC1wcm90b3R5cGVzIHdhcm5pbmdzLgoKCSogZGxscy9tc2kvTWFrZWZpbGUuaW4sIGRsbHMvbXNpL2FjdGlvbi5jLCBkbGxzL21zaS9hY3Rpb24uaCwKCSAgZGxscy9tc2kvY2xhc3Nlcy5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUJyZWFrIG91dCBhbGwgdGhlIGNsYXNzIHJlZ2lzdHJhdGlvbiBhY3Rpb25zIGludG8gY2xhc3Nlcy5jLiBUaGlzCglpbmNsdWRlcyBSZWdpc3RlckNsYXNzSW5mbywgUmVnaXN0ZXJQcm9nSWRzLCBSZWdpc3RlckV4dGVuc2lvbnMgYW5kCglSZWdpc3Rlck1JTUVUeXBlcy4KCgkqIGluY2x1ZGUvd2luY3J5cHQuaDogSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJRGVmaW5lIHNvbWUgbW9yZSBPSUQgc3RyaW5ncy4KCgkqIGRsbHMvbnRkbGwvcmVsYXkuYywgaW5jbHVkZS93aW5lL3BvcnQuaCwgdG9vbHMvd2luZWJ1aWxkL3JlbGF5LmM6CglTdG9yZSBhIHJlbGF0aXZlIHBvaW50ZXIgZm9yIHJlZ2lzdHJ5IGVudHJ5IHBvaW50cyB0byBhdm9pZCBzb21lIHRleHQKCXJlbG9jYXRpb25zLgoKCSogZGxscy9udGRsbC9udC5jLCBkbGxzL250ZGxsL29tLmMsIGluY2x1ZGUvd2ludGVybmwuaDoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZC9maXggbW9yZSBOVCBuYXRpdmUgQVBJIGRlY2xhcmF0aW9ucy4KCgkqIGRsbHMvY3J5cHQzMi90ZXN0cy9lbmNvZGUuYywgZGxscy9udGRsbC9oZWFwLmMsCgkgIGRsbHMvb2xlYXV0MzIvdGVzdHMvdHlwZWxpYi5jLCBkbGxzL3dpbm1tL3Rlc3RzL21peGVyLmMsCgkgIGRsbHMvd2lubW0vd2luZWFsc2EvYXVkaW8uYywgbGlicy91bmljb2RlL21idG93Yy5jLAoJICBwcm9ncmFtcy9tc2lleGVjL21zaWV4ZWMuYywgcHJvZ3JhbXMvd2luZXRlc3QvdXRpbC5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IHNvbWUgZGVjbGFyYXRpb24gYW5kIHdyaXRlIHN0cmluZyB3YXJuaW5ncy4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJLSBmb3J3YXJkIEFkZFJlZiwgUmVsZWFzZSwgUXVlcnlJbnRlcmZhY2UgYW5kIEdldENsYXNzSUQgdG8gaW50ZXJuYWwKCSAgaW1wbGVtZW50YXRpb25zCgktIGltcGxlbWVudCBHZXRDbGFzc0lEIHByb3Blcmx5CgoJKiB0b29scy93aW5lYnVpbGQvc3BlYzMyLmM6CglPdXRwdXQgdGhlIGV4cG9ydGVkIG5hbWVzIGFzIGEgQyBzdHJpbmcgc28gdGhhdCB0aGV5IGVuZCB1cCBpbiB0aGUKCWNvcnJlY3Qgc2VjdGlvbi4KCgkqIGRsbHMvbnRkbGwvcmVsYXkuYzoKCVVzZSB0aGUgREVGSU5FX1JFR1NfRU5UUllQT0lOVCBtYWNybyB0byBkZWZpbmUgcmVnaXN0ZXIgZnVuY3Rpb25zCglpbnN0ZWFkIG9mIGRvaW5nIGl0IGJ5IGhhbmQuCgoJKiBkbGxzL2tlcm5lbC92ZXJzaW9uLmM6CglSZW1vdmVkIHRoZSBET1MgdmVyc2lvbiBvcHRpb24sIHNwZWNpZnlpbmcgdGhlIFdpbmRvd3MgdmVyc2lvbiBzaG91bGQKCWJlIGVub3VnaCB0byBhY2hpZXZlIHRoZSBzYW1lIHJlc3VsdHMuCgoJKiBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW4sIGRsbHMvc2hlbGwzMi9tZW1vcnlzdHJlYW0uYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJU0hDcmVhdGVTdHJlYW1PbkZpbGVXIGlzIGltcGxlbWVudGVkIGluIHNobHdhcGksIHNvIHdlIGRvbid0IG5lZWQKCWFub3RoZXIgaW1wbGVtZW50YXRpb24gaW4gc2hlbGwzMi4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYywgZGxscy9zaGx3YXBpL2lzdHJlYW0uYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVN3aXRjaCBJU2hlbGxMaW5rIHRvIHVzZSBzaGx3YXBpLlNIQ3JlYXRlU3RyZWFtT25GaWxlVy4KCgkqIGluY2x1ZGUvd2lucmVnLmg6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCURlZmluZSBSZWdPcGVuVXNlckNsYXNzZXNSb290LgoKCSogaW5jbHVkZS93aW5udC5oOiBTdGV2ZW4gRWR3YXJkcyA8c3RldmVuX2VkNDE1M0B5YWhvby5jb20+CglSZW1vdmVkIGR1cGxpY2F0ZWQgQUxQSEEgcGxhdGZvcm0gY29udGV4dCBkZWZpbml0aW9ucy4KCUFkZGVkIEFSTSBjb250ZXh0IGRlZmluaXRpb25zLgoKCSogZGxscy9zaGVsbDMyL3Rlc3RzL3NobGZvbGRlci5jOgoJTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJVGVzdCBHZXRBdHRyaWJ1dGVzT2Ygb24gdGhlIE15Q29tcHV0ZXIgc2hlbGxmb2xkZXIuCgoJKiBkbGxzL250ZGxsL250LmM6IFBhdWwgVnJpZW5zIDxQYXVsLlZyaWVuc0B4czRhbGwubmw+CglQcm9jZXNzTmFtZSBzaG91bGQgYmUgd2l0aG91dCB0aGUgcGF0aC4KCgkqIGRsbHMvbnRkbGwvdGVzdHMvaW5mby5jOiBQYXVsIFZyaWVucyA8UGF1bC5WcmllbnNAeHM0YWxsLm5sPgoJVzJLMyByZXR1cm5zIFNUQVRVU19JTlZBTElEX0hBTkRMRSBpbnN0ZWFkIG9mIFNUQVRVU19BQ0NFU1NfVklPTEFUSU9OLgoKCSogZGxscy9tc3ZpZGVvL21zdmlkZW9fbWFpbi5jOgoJTWFhcnRlbiBMYW5raG9yc3QgPG0uYi5sYW5raG9yc3RAZ21haWwuY29tPgoJLSBJbXBsZW1lbnRlZCBJQ1NlcUNvbXByZXNzRnJhbWV7U3RhcnQsLEVuZH0KCS0gTW9kaWZpZWQgSUNDb21wcmVzc29yRnJlZSB0byBwcm9wZXJseSBmcmVlIHRoZSBpbml0aWFsaXplZCB2YXJpYWJsZXMKCSAgZnJvbSBJQ1NlcUNvbXByZXNzRnJhbWVTdGFydC4KCgkqIHRvb2xzL3dpbmUuaW5mOiBNYWFydGVuIExhbmtob3JzdCA8bS5iLmxhbmtob3JzdEBnbWFpbC5jb20+CglSZWdpc3RlciBxY2FwLmRsbCBvbiB3aW5lIGluaXRpYWxpc2F0aW9uLgoKMjAwNS0wNi0xNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglGb3IgbW9kYWwgcHJvcHNoZWV0cyB3ZSBzaG91bGQgcnVuIG91ciBvd24gbWVzc2FnZSBsb29wIHJhdGhlciB0aGFuCgl1c2UgYSBtb2RhbCBkaWFsb2dib3gganVzdCBsaWtlIFdpbmRvd3MgZG9lcy4gIFRoaXMgaGVscHMgYXBwcyB0aGF0CglzdWJjbGFzcyB0aGUgcHJvcHNoZWV0J3Mgd25kcHJvYy4KCgkqIGRsbHMvbXNpL01ha2VmaWxlLmluLCBkbGxzL21zaS9hY3Rpb24uYywgZGxscy9tc2kvYWN0aW9uLmgsCgkgIGRsbHMvbXNpL2hlbHBlcnMuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglCcmVhayBvdXQgYWxsIHRoZSBoZWxwZXIgZnVuY3Rpb25zIGludG8gaGVscGVycy5jLgoKCSogTWFrZWZpbGUuaW4sIGRvY3VtZW50YXRpb24vTWFrZWZpbGUuaW46CglNb3ZlZCB0aGUgQVBJIGRvYyBydWxlcyB0byB0aGUgZG9jdW1lbnRhdGlvbiBtYWtlZmlsZS4KCgkqIHRvb2xzL2JpbjJyZXMuYywgdG9vbHMvc2ZudDJmbnQuYywgdG9vbHMvd2lkbC9oZWFkZXIuYywKCSAgdG9vbHMvd2lkbC9wcm94eS5jLCB0b29scy93aWRsL3NlcnZlci5jOgoJU3RlZmFuIEh1ZWhuZXIgPHN0ZWZhbkBodWVobmVyLm9yZz4KCUZpeCBzb21lIC1XbWlzc2luZy1kZWNsYXJhdGlvbnMgYnkgbWFraW5nIGZ1bmN0aW9ucyBzdGF0aWMuCgoJKiBkbGxzL3NoZWxsMzIvdGVzdHMvc2hsZm9sZGVyLmM6CglNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglBZGRlZCB0ZXN0cyBmb3IgU0hHZXRQYXRoRnJvbUlETGlzdC4KCgkqIGRsbHMvc2hlbGwzMi9jbGFzc2VzLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglVbnF1b3RlIHRoZSBpY29uIGZpbGUgcGF0aCBpZiBpdCdzIHF1b3RlZC4KCgkqIGRsbHMvdXNlci90ZXN0cy93aW4uYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBhIHRlc3QgY2FzZSBmb3IgV01fW0x8UnxNfFhdQlVUVE9OREJMQ0xLIGdlbmVyYXRpb24gYmVoYXZpb3VyLgoKCSogZGxscy9wc2FwaS9wc2FwaV9tYWluLmM6CglGZWxpeCBOYXdvdGhuaWcgPGZlbGl4Lm5hd290aG5pZ0B0LW9ubGluZS5kZT4KCS0gUmVwbGFjZWQgc2VydmVyIHJlcXVlc3RzIGluIEVudW1Qcm9jZXNzZXMgYnkgbmF0aXZlIEFQSXMKCS0gRml4ZWQgdGhpcmQgcGFyYW1ldGVyIChzaG91bGQgcmV0dXJuIHRoZSBhbW91bnQgb2YgdXNlZCBhbmQgbm90CgkgIG5lZWRlZCBtZW1vcnkpLgoKCSogZG9jdW1lbnRhdGlvbi8uY3ZzaWdub3JlLCBkb2N1bWVudGF0aW9uL01ha2VmaWxlLmluLAoJICBkb2N1bWVudGF0aW9uL3dpbmUubWFuLmluLCBsb2FkZXIvLmN2c2lnbm9yZSwgbG9hZGVyL01ha2VmaWxlLmluLAoJICBsb2FkZXIvd2luZS5tYW4uaW46CglNb3ZlZCB0aGUgd2luZSBtYW5wYWdlIHRvIHRoZSBsb2FkZXIvIGRpcmVjdG9yeS4KCgkqIGRsbHMvdXNlci9jb21iby5jLCBpbmNsdWRlL3dpbnVzZXIuaDoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCBHZXRDb21ib0JveEluZm8gYW5kIENCX0dFVENPTUJPQk9YSU5GTy4KCgkqIGluY2x1ZGUvd2luZS90ZXN0LmgsIHRvb2xzL21ha2VfY3Rlc3RzLmM6CglBdm9pZCBzdGF0aWMgZm9yd2FyZCBkZWNsYXJhdGlvbiB0aGF0IGRvZXNuJ3Qgd29yayBvbiBNU1ZDLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsbGluay5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglSZW1vdmUgc29tZSB1c2VzIG9mIHdpbmUvdW5pY29kZS5oIGZ1bmN0aW9ucy4KCgkqIGRsbHMvY3J5cHQzMi9lbmNvZGUuYywgZGxscy9jcnlwdDMyL3Rlc3RzL2VuY29kZS5jOgoJSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJQWRkIGVuY29kZS9kZWNvZGUgc3VwcG9ydCBmb3IgbXVsdGktYnl0ZSBpbnRlZ2Vycy4KCgkqIGRsbHMvdXNlci90ZXN0cy9jbGFzcy5jLCBkbGxzL3VzZXIvdGVzdHMvZWRpdC5jLAoJICBkbGxzL3VzZXIvdGVzdHMvbGlzdGJveC5jLCBkbGxzL3VzZXIvdGVzdHMvc3lzcGFyYW1zLmMsCgkgIGRsbHMvdXNlci90ZXN0cy93aW4uYywgZGxscy9yc2FlbmgvcnNhZW5oLmMsCgkgIGRsbHMvcnNhZW5oL3Rlc3RzL3JzYWVuaC5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IGRlY2xhcmF0aW9ucy4KCgkqIGRsbHMvb2xlMzIvdGVzdHMvc3RnX3Byb3AuYywgZGxscy9vbGUzMi90ZXN0cy9zdG9yYWdlMzIuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBkZWNsYXJhdGlvbnMgaW4gdGhlIHRlc3RzLgoKCSogZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglNU0ROIHN0YXRlcyB0aGF0IER1cGxpY2F0ZVRva2VuIHNob3VsZCBjcmVhdGUgYSBuZXcgdG9rZW4gd2l0aCB0aGUKCVRPS0VOX1FVRVJZIHwgVE9LRU5fSU1QRVJTT05BVEUgcmlnaHRzLCBub3QgMC4KCgkqIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9waWRsLmg6CglNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglJbXBsZW1lbnQgU0hHZXRQYXRoRnJvbUlETGlzdCBiYXNlZCBvbiBHZXREaXNwbGF5TmFtZU9mLgoKCSogZGxscy9udGRsbC9udC5jLCBkbGxzL250ZGxsL3Rlc3RzL2luZm8uYzoKCVBhdWwgVnJpZW5zIDxQYXVsLlZyaWVuc0B4czRhbGwubmw+CglPbmx5IGV4YWN0IGJ1ZmZlciBzaXplIGdpdmVzIFNUQVRVU19TVUNDRVNTLgoKMjAwNS0wNi0xNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRvY3VtZW50YXRpb24vTWFrZWZpbGUuaW4sIGRvY3VtZW50YXRpb24vd2luZS5jb25mLm1hbiwKCSAgZG9jdW1lbnRhdGlvbi93aW5lLm1hbi5pbjoKCUdldCByaWQgb2YgdGhlIHdpbmUuY29uZiBtYW4gcGFnZS4KCgkqIHNlcnZlci9wcm9jZXNzLmM6CglSZW1vdmUgdGhlIHByb2Nlc3MgbG9ja3MgaW4gcHJvY2Vzc19raWxsZWQsIG5vdCBwcm9jZXNzX2Rlc3Ryb3kuCgoJKiBkbGxzL2tlcm5lbC9yZWxheTE2LmMsIGRsbHMvbnRkbGwvcmVsYXkuYywgZGxscy91c2VyL3NweS5jOgoJTW92ZWQgZGVidWdnaW5nIGNvbmZpZyBvcHRpb25zIHRvIEhLQ1VcU29mdHdhcmVcV2luZVxEZWJ1Zy4KCgkqIGRsbHMvc2hlbGwzMi90ZXN0cy9zaGxmb2xkZXIuYzoKCU1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCVJlcGxhY2UgbWFnaWMgZXJyb3IgY29uc3RhbnQuCgoJKiBkbGxzL21hcGkzMi90ZXN0cy9wcm9wLmM6CglTYXVsaXVzIEtyYXN1Y2thcyA8c2F1bGl1cy5rcmFzdWNrYXNAaWVlZS5vcmc+CglBdm9pZCBhY2Nlc3NpbmcgdW5pbml0aWFsaXplZCBkYXRhIG9uIFdpbk1FIChiYXNlZCBvbiBhbiBvbGQgcGF0Y2ggYnkKCUZlcmVuYyBXYWduZXIpLgoKCSogZGxscy91c2VyL25vbmNsaWVudC5jLCBkbGxzL3VzZXIvd2luLmM6CglTdGVmYW4gSHVlaG5lciA8c3RlZmFuQGh1ZWhuZXIub3JnPgoJUmVtb3ZlIGluY2x1ZGUgImN1cnNvcmljb24uaCIgZnJvbSBub25jbGllbnQuYyBhbmQgd2luLmMuCgoJKiBkbGxzL3NoZWxsMzIvY2xpcGJvYXJkLmMsIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYywKCSAgZGxscy9zaGVsbDMyL3NobGV4ZWMuYzoKCU1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCVVzZSBTSEdldFBhdGhGcm9tSURMaXN0IGluc3RlYWQgb2YgU0hFTEwzMl9HZXRQYXRoRnJvbUlETGlzdC4KCgkqIHNlcnZlci9oYW5kbGUuYzoKCUNhbGwgdGhlIGNsb3NlX2hhbmRsZSBub3RpZmljYXRpb24gZm9yIGFsbCBvYmplY3RzIHdoZW4gcmVsZWFzaW5nIGEKCWhhbmRsZSB0YWJsZS4KCgkqIHNlcnZlci90b2tlbi5jLCBzZXJ2ZXIvdHJhY2UuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJRml4IHNpemUgdXNlZCB0byB2YWxpZGF0ZSB0aGUgc2lkcyBpbiBhY2VzLgoKCSogZGxscy94MTFkcnYvaW5pdC5jOiBSZW1vdmVkIHRoZSBjaGVjayBmb3IgdGhlIG9sZCBSZXNvbHV0aW9uIG9wdGlvbi4KCgkqIGRsbHMveDExZHJ2L3BhbGV0dGUuYywgZGxscy94MTFkcnYveDExZHJ2LmgsIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmM6CglNZXJnZWQgcGFsZXR0ZSBvcHRpb24gcHJvY2Vzc2luZyBpbnRvIHRoZSBtYWluIGNvbmZpZ3VyYXRpb24gY29kZS4KCgkqIGRsbHMvc2hlbGwzMi9zaGZsZHJfZGVza3RvcC5jLCBkbGxzL3NoZWxsMzIvdGVzdHMvc2hsZm9sZGVyLmM6CglNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglSZXR1cm4gdGhlIGNvcnJlY3QgYXR0cmlidXRlcyBmb3IgdGhlIGRlc2t0b3AgZm9sZGVyLgoJQ29ycmVzcG9uZGluZyB0ZXN0cy4KCgkqIHNlcnZlci90b2tlbi5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglBZGQgVG9rZW5UeXBlIGF0dHJpYnV0ZSB0byBzcGVjaWZ5IHdoZXRoZXIgdGhlIHRva2VuIGlzIGEgcHJpbWFyeSBvcgoJaW1wZXJzb25hdGlvbiB0b2tlbi4KCgkqIGRsbHMvdXNlci9zeXNwYXJhbXMuYzoKCVVzZSBhIGJldHRlciBsb2NhdGlvbiB0aGFuIEhLQ1VcV2luZSBmb3Igc2F2aW5nIHRoZSB0ZW1wb3JhcnkKCXBhcmFtZXRlcnMuCgoJKiBkbGxzL3gxMWRydi94Zm9udC5jOgoJQXZvaWQgcmVwZWF0ZWRseSBvcGVuaW5nIHRoZSBjb25maWd1cmF0aW9uIHJlZ2lzdHJ5IGtleS4KCgkqIGRsbHMvaXBobHBhcGkvaXBobHBhcGlfbWFpbi5jLCBkbGxzL2tlcm5lbC9jb21wdXRlcm5hbWUuYywKCSAgZGxscy9uZXRhcGkzMi9uYnQuYzoKCU1vdmVkIG5ldHdvcmsgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzIHRvIEhLQ1VcU29mdHdhcmVcV2luZVxOZXR3b3JrLgoKCSogZGxscy9zaGVsbDMyL3Rlc3RzL3NobGZvbGRlci5jOgoJTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJQWRkZWQgdGVzdHMgdG8gY29tcGFyZSBTSEdldFBhdGhGcm9tSURMaXN0IGFuZCBHZXREaXNwbGF5TmFtZU9mLgoKCSogZGxscy9zaGx3YXBpL3Rlc3RzL3BhdGguYywgZGxscy9zaGx3YXBpL3Rlc3RzL3N0cmluZy5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4ZXMgZm9yIC1XbWlzc2luZy1kZWNsYXJhdGlvbiBhbmQgLVd3cml0ZS1zdHJpbmcgd2FybmluZ3MuCgoJKiBkbGxzL2RpbnB1dC9qb3lzdGlja19saW51eC5jOgoJTW92ZWQgY29uZmlnIHBhcmFtZXRlcnMgdG8gSEtDVVxTb2Z0d2FyZVxXaW5lXERpcmVjdElucHV0LgoKCSogZGxscy9kc291bmQvZHNvdW5kX21haW4uYzoKCU1vdmVkIGNvbmZpZyBwYXJhbWV0ZXJzIHRvIEhLQ1VcU29mdHdhcmVcV2luZVxEaXJlY3RTb3VuZC4KCgkqIGRsbHMvZ2RpL2ZyZWV0eXBlLmM6CglNb3ZlZCBhbGwgZm9udCBjb25maWcgcGFyYW1ldGVycyB0byBIS0NVXFNvZnR3YXJlXFdpbmVcRm9udHMuCglSZXBsYWNlZCB0aGUgRm9udERpcnMga2V5IGVudW1lcmF0aW9uIGJ5IGEgc2ltcGxlIFBhdGggdmFsdWUuCgoJKiBkbGxzL250ZGxsL2Nkcm9tLmM6IEl2YW4gTGVvIFB1b3RpIDxpdmFubGVvQGdtYWlsLmNvbT4KCVJlaW1wbGVtZW50IElPQ1RMX1NDU0lfUEFTU19USFJPVUdIX0RJUkVDVCBhbmQKCUlPQ1RMX1NDU0lfUEFTU19USFJPVUdIIG9uIHRvcCBvZiB0aGUgbGludXggc2NzaSBkcml2ZXIuCgoJKiBkbGxzL29sZWF1dDMyL3Rlc3RzL3ZhcnRlc3QuYzoKCVNhdWxpdXMgS3Jhc3Vja2FzIDxzYXVsaXVzLmtyYXN1Y2thc0BpZWVlLm9yZz4KCUNoYW5nZSAobG9uZyBsb25nKSB0byAoTE9OR0xPTkcpIHRvIGNvbXBpbGUgd2l0aCBNU1ZDLgoKCSogZGxscy9udGRsbC9wcm9jZXNzLmMsIGRsbHMvbnRkbGwvdGVzdHMvaW5mby5jOgoJUGF1bCBWcmllbnMgPFBhdWwuVnJpZW5zQHhzNGFsbC5ubD4KCVJldHVybiBTVEFUVVNfSU5WQUxJRF9JTkZPX0NMQVNTIGZvciBub24taW1wbGVtZW50ZWQgY2xhc3Nlcy4KCVJldHVybiBTVEFUVVNfQUNDRVNTX1ZJT0xBVElPTiBpZiBubyBidWZmZXIgZ2l2ZW4uCglBZGRlZCB0ZXN0cyBmb3IgUHJvY2Vzc0Jhc2ljSW5mb3JtYXRpb24uCgoJKiBkbGxzL3VzZXIvZWRpdC5jLCBkbGxzL3VzZXIvdGVzdHMvZWRpdC5jOgoJTGF1cmkgVHVsbWluIDx0dWxtaW5AZ21haWwuY29tPgoJLSBFTV9DSEFSRlJPTVBPUyBzaG91bGQgcmV0dXJuIHRoZSBjbG9zZXN0IGNoYXIgKGNsaWNraW5nIG9uIHRoZSBmaXJzdAoJICBoYWxmIG9mIGEgY2hhcmFjdGVyIHNob3VsZCByZXR1cm4gY3VycmVudCBjaGFyIGFuZCBjbGlja2luZyBvbiB0aGUKCSAgc2Vjb25kIGhhbGYgc2hvdWxkIHJldHVybiBuZXh0IGNoYXIpCgktIEVNX1BPU0ZST01DSEFSIHNob3VsZCByZXR1cm4gLTEgaWYgY2hhcmFjdGVyIGluZGV4IGlzIGdyZWF0ZXIgb3IKCSAgZXF1YWwgdG8gdGV4dCBsZW5ndGgKCgkqIGRsbHMvZ2RpL2dkaW9iai5jOiBSZW1vdmVkIHRoZSBUd2Vhay5Gb250cyBjb25maWd1cmF0aW9uIGhhY2suCgoJKiBkbGxzL3gxMWRydi9iaXRibHQuYzoKCUdldCByaWQgb2YgdGhlIFBlcmZlY3RHcmFwaGljcyBvcHRpb24sIHRoYXQncyBub3QgcmVhbGx5IHVzZWZ1bC4KCgkqIGRsbHMvd2luZWRvcy9kb3Njb25mLmM6CglIYXJkY29kZSB0aGUgbG9jYXRpb24gb2YgY29uZmlnLnN5cywgbm8gbmVlZCBmb3IgYSBjb25maWcgcGFyYW1ldGVyCglmb3IgdGhhdC4KCgkqIGluY2x1ZGUvd2luYmFzZS5oOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBZGQgYSBjb3VwbGUgb2YgbWlzc2luZyBmdW5jdGlvbnMuCgoJKiBkbGxzL250ZGxsL250LmMsIGluY2x1ZGUvd2ludGVybmwuaDoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCURlY2xhcmUgcG9ydCBmdW5jdGlvbnMgYW5kIGZpeCBwcm90b3R5cGVzLgoKCSogZGxscy9rZXJuZWwvY29tcHV0ZXJuYW1lLmMsIGRsbHMva2VybmVsL2NvbnNvbGUuYywKCSAgZGxscy9rZXJuZWwvZW52aXJvbi5jLCBkbGxzL2tlcm5lbC9rZXJuZWxfbWFpbi5jLAoJICBkbGxzL2tlcm5lbC9rZXJuZWxfcHJpdmF0ZS5oLCBkbGxzL2tlcm5lbC9sY2Zvcm1hdC5jLAoJICBkbGxzL2tlcm5lbC9wcm9jZXNzLmMsIGRsbHMva2VybmVsL3Byb2ZpbGUuYywgZGxscy9rZXJuZWwvdGhyZWFkLmMsCgkgIGRsbHMva2VybmVsL3ZlcnNpb24uYywgZGxscy9rZXJuZWwvd2luODdlbS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IHdhcm5pbmdzIGZyb20gLVdtaXNzaW5nLWRlY2xhcmF0aW9ucy4KCgkqIHNlcnZlci9maWxlLmgsIHNlcnZlci9oYW5kbGUuaCwgc2VydmVyL3Byb2Nlc3MuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUNhbGwgcmVtb3ZlX3Byb2Nlc3NfbG9ja3Mgd2hlbiBhIHByb2Nlc3MgZW5kcywgZml4IGRlY2xhcmF0aW9ucy4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL3Byb2ZpbGUuYywgZGxscy9rZXJuZWwvdGVzdHMvdGhyZWFkLmMsCgkgIGRsbHMva2VybmVsL3Rlc3RzL3RpbWUuYywgZGxscy9rZXJuZWwvdGVzdHMvdGltZXIuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBkZWNsYXJhdGlvbiB3YXJuaW5ncyBpbiB0aGUgdGVzdCBjYXNlcy4KCgkqIGRsbHMvb2xlYXV0MzIvdGVzdHMvdmFydGVzdC5jLCBkbGxzL29sZWF1dDMyL3ZhcmZvcm1hdC5jOgoJTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5kZT4KCS0gRml4IFZhckZvcm1hdCBmb3IgZm9ybWF0cyB0aGF0IG1peCAnMCcgYW5kICcjJyBpbiB0aGUgd2hvbGUgbnVtYmVyCgkgIHBhcnQuCgktIEZpeCBWYXJGb3JtYXQgZm9yIG5lZ2F0aXZlIGV4cG9uZW50IGZvcm1hdHMuCgktIEFkZCB0ZXN0cyBmb3IgdGhlIGFib3ZlICsgYSBjb3VwbGUgb2YgInRvZG9fd2luZSIncy4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWRkIHRoZSBJQ29udGV4dE1lbnUgaW50ZXJmYWNlIHRvIHRoZSBTaGVsbExpbmsgb2JqZWN0LgoKCSogZGxscy9jcnlwdDMyL2NyeXB0MzIuc3BlYywgZGxscy9jcnlwdDMyL21haW4uYywKCSAgZGxscy9jcnlwdDMyL3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMvY3J5cHQzMi90ZXN0cy9NYWtlZmlsZS5pbiwKCSAgZGxscy9jcnlwdDMyL3Rlc3RzL21haW4uYzoKCUp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCUFkZCBDZXJ0QWxnSWRUb09JRCBhbmQgQ2VydE9JRFRvQWxnSWQsIHdpdGggdGVzdHMuCgoJKiBkbGxzL2RtbG9hZGVyL2xvYWRlcnN0cmVhbS5jOgoJQWxleCBWaWxsYWPtcyBMYXNzbyA8YV92aWxsYWNpc0BwYWxvc2FudG8uY29tPgoJQXZvaWQgb25lIG1vcmUgYWNjZXNzIHRvIHBjYlJlYWQuCgoyMDA1LTA2LTEzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy93aW5pbmV0L2Z0cC5jLCBkbGxzL3dpbmluZXQvaHR0cC5jLCBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYywKCSAgZGxscy93aW5pbmV0L2ludGVybmV0LmgsIGRsbHMvd2luaW5ldC90ZXN0cy9odHRwLmMsCgkgIGRsbHMvd2luaW5ldC91cmxjYWNoZS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IHNvbWUgd2FybmluZ3MuCgoJKiBkbGxzL2RtbG9hZGVyL2xvYWRlcnN0cmVhbS5jOgoJQWxleCBWaWxsYWPtcyBMYXNzbyA8YV92aWxsYWNpc0BwYWxvc2FudG8uY29tPgoJUHJldmVudCBjcmFzaCBvbiBJRGlyZWN0TXVzaWNMb2FkZXJSZXNvdXJjZVN0cmVhbV9JU3RyZWFtX1JlYWQuCgoJKiBkbGxzL21zaS9tc2kuYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUEgIjEiIGlzIHJldHVybmVkIG5vdCBhIDEgZm9yIEFzc2lnbm1lbnRUeXBlLiBBbHNvIGFzIGEgYml0IG1vcmUgdG8KCXRoZSBGSVhNRSBtZXNzYWdlLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsbGluay5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgU2hlbGxMaW5rJ3MgSVNoZWxsRXh0SW5pdDo6SW5pdGlhbGl6ZSgpIG1ldGhvZC4KCgkqIGRsbHMvZDNkOC9kM2Q4X21haW4uYywgZGxscy9kaW5wdXQvam95c3RpY2tfbGludXguYywKCSAgZGxscy9kc291bmQvZHNvdW5kX21haW4uYywgZGxscy9nZGkvZHJpdmVyLmMsIGRsbHMvZ2RpL2ZyZWV0eXBlLmMsCgkgIGRsbHMvZ2RpL2dkaW9iai5jLCBkbGxzL2dkaS9wcmludGRydi5jLAoJICBkbGxzL2lwaGxwYXBpL2lwaGxwYXBpX21haW4uYywgZGxscy9rZXJuZWwvY29tcHV0ZXJuYW1lLmMsCgkgIGRsbHMva2VybmVsL29sZGNvbmZpZy5jLCBkbGxzL2tlcm5lbC9yZWxheTE2LmMsCgkgIGRsbHMva2VybmVsL3ZlcnNpb24uYywgZGxscy9rZXJuZWwvdm9sdW1lLmMsIGRsbHMvbXByL3B3Y2FjaGUuYywKCSAgZGxscy9uZXRhcGkzMi9uYnQuYywgZGxscy9udGRsbC9kaXJlY3RvcnkuYywgZGxscy9udGRsbC9sb2Fkb3JkZXIuYywKCSAgZGxscy9udGRsbC9yZWxheS5jLCBkbGxzL250ZGxsL3ZlcnNpb24uYywgZGxscy9yc2FlbmgvcnNhZW5oLmMsCgkgIGRsbHMvc2hkb2N2dy9zaGRvY3Z3X21haW4uYywgZGxscy91c2VyL3NweS5jLCBkbGxzL3VzZXIvc3lzcGFyYW1zLmMsCgkgIGRsbHMvdXNlci91c2VyX21haW4uYywgZGxscy93aW5lZDNkL3dpbmVkM2RfbWFpbi5jLAoJICBkbGxzL3dpbmVkb3MvZG9zY29uZi5jLCBkbGxzL3dpbmVkb3MvaW9wb3J0cy5jLCBkbGxzL3dpbmVkb3MvcHBkZXYuYywKCSAgZGxscy93aW5lcHMvaW5pdC5jLCBkbGxzL3dpbmVwcy90cnVldHlwZS5jLCBkbGxzL3dpbmVwcy90eXBlMWFmbS5jLAoJICBkbGxzL3dpbm1tL2xvbHZsZHJ2LmMsIGRsbHMvd2lubW0vd2luZWFsc2EvYXVkaW8uYywKCSAgZGxscy93aW5zcG9vbC9pbmZvLmMsIGRsbHMveDExZHJ2L2JpdGJsdC5jLCBkbGxzL3gxMWRydi9pbml0LmMsCgkgIGRsbHMveDExZHJ2L3BhbGV0dGUuYywgZGxscy94MTFkcnYveDExZHJ2X21haW4uYywKCSAgZGxscy94MTFkcnYveGZvbnQuYywgcHJvZ3JhbXMvdGFza21nci90YXNrbWdyLmMsCgkgIHByb2dyYW1zL3dpbmVicm93c2VyL21haW4uYywgcHJvZ3JhbXMvd2luZWRiZy93aW5lZGJnLmMsCgkgIHByb2dyYW1zL3dpbmVtZW51YnVpbGRlci93aW5lbWVudWJ1aWxkZXIuYywgcHJvZ3JhbXMvd2luZW1pbmUvbWFpbi5jOgoJQWRkZWQgbWFnaWMgY29tbWVudHMgdG8gYWxsIFdpbmUtc3BlY2lmaWMgcmVnaXN0cnkgYWNjZXNzZXMgdG8gbWFrZQoJdGhlbSBlYXNpZXIgdG8gZ3JlcC4KCgkqIHByb2dyYW1zL3dpbmVjZmcvYXBwZGVmYXVsdHMuYywgcHJvZ3JhbXMvd2luZWNmZy9hdWRpby5jLAoJICBwcm9ncmFtcy93aW5lY2ZnL2RyaXZldWkuYywgcHJvZ3JhbXMvd2luZWNmZy9saWJyYXJpZXMuYywKCSAgcHJvZ3JhbXMvd2luZWNmZy93aW5lY2ZnLmMsIHByb2dyYW1zL3dpbmVjZmcvd2luZWNmZy5oLAoJICBwcm9ncmFtcy93aW5lY2ZnL3gxMWRydmRsZy5jOgoJQ2hhbmdlZCByZWdpc3RyeSBhY2Nlc3MgZnVuY3Rpb25zIHRvIHVzZSBtb3JlIG1lYW5pbmdmdWwgbmFtZXMuCgoJKiBkbGxzL3dpbmVkb3MvaW50MTEuYzoKCVJlbW92ZWQgcmVmZXJlbmNlcyB0byBvYnNvbGV0ZSBjb25maWd1cmF0aW9uIGVudHJpZXMuCgoJKiBkbGxzL3VzZXIvY3Vyc29yaWNvbi5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJV2hlbiBsb2FkaW5nIGEgYml0bWFwIHdlIHNob3VsZCBzdHJldGNoIHRoZSBpbWFnZSB0byB0aGUgcmVxdWVzdGVkCglzaXplLgoKCSogZGxscy9jb21jdGwzMi90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL2NvbWN0bDMyL3Rlc3RzL01ha2VmaWxlLmluLAoJICBkbGxzL2NvbWN0bDMyL3Rlc3RzL3RyZWV2aWV3LmM6CglLcnp5c3p0b2YgRm9sdG1hbiA8d2RldkBmb2x0bWFuLmNvbT4KCVRlc3Qgd2hlbiBUVk5fU0VMQ0hBTkdJTkcgYW5kIFRWTl9TRUxDSEFOR0VEIGFyZSByZWFsbHkgc2VudC4KCgkqIGRsbHMvZGRyYXcvdGVzdHMvZDNkLmMsIGRsbHMvZGRyYXcvdGVzdHMvZGRyYXdtb2Rlcy5jLAoJICBkbGxzL2RkcmF3L3Rlc3RzL2RzdXJmYWNlLmMsIGRsbHMva2VybmVsL3Rlc3RzL2ZpbGUuYywKCSAgZGxscy9vbGUzMi90ZXN0cy9wcm9wdmFyaWFudC5jLCBkbGxzL29sZTMyL3Rlc3RzL3N0Z19wcm9wLmMsCgkgIGRsbHMvb2xlYXV0MzIvdGVzdHMvdmFydGVzdC5jLCBkbGxzL29sZWF1dDMyL3Rlc3RzL3ZhcnR5cGUuYywKCSAgZGxscy91cmxtb24vdGVzdHMvdXJsLmMsIGRsbHMvd2lubW0vdGVzdHMvbWl4ZXIuYywKCSAgaW5jbHVkZS93aW5lL3Rlc3QuaDoKCU1vdmVkIHRoZSBOT05BTUVMRVNTVU5JT04vU1RSVUNUIG1hY3JvcyB0byB3aW5lL3Rlc3QuaCBzbyB0aGF0IHRoZXkKCWNhbiBiZSB1c2VkIGluIGFsbCB0aGUgdGVzdC4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJLSBhZGQgdGhlIElTaGVsbEV4dEluaXQgaW50ZXJmYWNlIHRvIHRoZSBTaGVsbExpbmsgb2JqZWN0CgktIHVzZSBpbmxpbmUgZnVuY3Rpb25zIHJhdGhlciB0aGFuIG1hY3JvcyB0byByZXNvbHZlIHRoZQoJICBpbXBsZW1lbnRhdGlvbiBwb2ludGVyIGZyb20gYW4gaW50ZXJmYWNlIHBvaW50ZXIKCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2FjdGl2ZWRzLy5jdnNpZ25vcmUsCgkgIGRsbHMvYWN0aXZlZHMvTWFrZWZpbGUuaW4sIGRsbHMvYWN0aXZlZHMvYWN0aXZlZHMuc3BlYywKCSAgZGxscy9hY3RpdmVkcy9hY3RpdmVkc19tYWluLmM6CglEZXRsZWYgUmlla2VuYmVyZyA8ZHJpZWtlbmJlcmdAd2ViLmRlPgoJQWRkZWQgYWN0aXZlZHMuZGxsIHdpdGggc29tZSBzdHVicyB0byBnZXQgdGhlIG5hdGl2ZSBwcmludHVpLmRsbCB0bwoJbG9hZC4KCgkqIHByb2dyYW1zL3JwY3NzL2VwbWFwX3NlcnZlci5jLCBwcm9ncmFtcy9ycGNzcy9ucF9zZXJ2ZXIuYywKCSAgcHJvZ3JhbXMvd2luZWZpbGUvbGljZW5zZS5jLCBwcm9ncmFtcy93aW5lZmlsZS9zcGxpdHBhdGguYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCU1vcmUgd2FybmluZyBmaXhlcy4KCgkqIGRsbHMvY3J5cHQzMi9lbmNvZGUuYywgZGxscy9jcnlwdDMyL3Rlc3RzL2VuY29kZS5jOgoJSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJLSBlbmNvZGUvZGVjb2RlIFg1MDlfTkFNRXMgZm9yIHNpbXBsZSBzdHJpbmcgZW5jb2RpbmdzLCB3aXRoIHRlc3RzCgktIG1vcmUgdGVzdHMgYW5kIHNvbWUgZml4ZXMgdG8gb3RoZXIgdHlwZXMKCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzogS3J6eXN6dG9mIEZvbHRtYW4gPHdkZXZAZm9sdG1hbi5jb20+CglEb24ndCBzZW5kIFRWTl9TRUxDSEFOR0lORyBub3IgVFZOX1NFTENIQU5HRUQgaWYgdGhlIHNhbWUgaXRlbSBpcwoJc2VsZWN0ZWQgYWdhaW4uCgoJKiBwcm9ncmFtcy93aW5lZmlsZS93aW5lZmlsZS5jOiBNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJUmVtb3ZlIGR1cGxpY2F0ZSB0b29sYmFyIGJ1dHRvbi4KCgkqIGRsbHMvcXVhcnR6L01ha2VmaWxlLmluLCBkbGxzL3F1YXJ0ei92aWRlb3JlbmRlcmVyLmM6CglDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglBZGRlZCB3aW5kb3cgc3VwcG9ydCB0byB0aGUgdmlkZW8gcmVuZGVyZXI6CgktIHJlcGxhY2VkIGRkcmF3IGNvZGUgYnkgd2luZG93IGNvZGUuCgktIGltcGxlbWVudGVkIElCYXNpY1ZpZGVvIGFuZCBJVmlkZW9XaW5kb3cgaW50ZXJmYWNlcy4KCgkqIGRsbHMvbnRkbGwvbnQuYywgZGxscy9udGRsbC90ZXN0cy9pbmZvLmMsIGluY2x1ZGUvd2ludGVybmwuaDoKCVBhdWwgVnJpZW5zIDxQYXVsLlZyaWVuc0B4czRhbGwubmw+CglGaXhlZCBzaXplIG9mIG91ciBTWVNURU1fVElNRU9GREFZX0lORk9STUFUSU9OIHN0cnVjdC4KCUZpeGVkIHJldHVybiBjb2RlcyBhbmQgUmV0dXJuTGVuZ3RoL2J1ZmZlciBmb3IKCVN5c3RlbVRpbWVPZkRheUluZm9ybWF0aW9uLgoJQWRkZWQgdGVzdHMgZm9yIFN5c3RlbVRpbWVPZkRheUluZm9ybWF0aW9uLgoKCSogZGxscy9udGRsbC9zZWMuYzogSmFtZXMgSGF3a2lucyA8dHJ1aWtlbkBnbWFpbC5jb20+CglJbXBsZW1lbnQgUnRsQWJzb2x1dGVUb1NlbGZSZWxhdGl2ZVNELgoKCSogcHJvZ3JhbXMvd2luZWZpbGUvd2luZWZpbGUuYzogTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCS0gdXNlIGNvbnN0IHBhcmFtZXRlciBpbiBmaW5kX2VudHJ5X3NoZWxsKCkKCS0gcmVuYW1lIEV4ZWN1dGVEaWFsb2dXbmRQcm9nKCkgdG8gRXhlY3V0ZURpYWxvZ0RsZ1Byb2MoKQoJLSByZW1vdmUgb2xkIGNvbW1lbnQKCS0gYWRkIG1pc3NpbmcgY2FsbCB0byBDdHhNZW51X3Jlc2V0KCkKCgkqIGluY2x1ZGUvYWNsYXBpLmgsIGluY2x1ZGUvbnRzZWNhcGkuaCwgaW5jbHVkZS93aW5iYXNlLmgsCgkgIGluY2x1ZGUvd2luc3ZjLmgsIGluY2x1ZGUvd2ludXNlci5oOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRGVjbGFyZSBzb21lIG1pc3NpbmcgZnVuY3Rpb25zLgoKCSogZGxscy9udGRsbC90ZXN0cy9ydGwuYywgZGxscy9udGRsbC90ZXN0cy9ydGxzdHIuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCB3YXJuaW5ncyBpbiB0ZXN0cywgcmVtb3ZlIHBvaW50bGVzcyBjb21tZW50cy4KCgkqIGRsbHMvbnRkbGwvbnQuYywgZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL250ZGxsL3N5bmMuYywKCSAgaW5jbHVkZS93aW50ZXJubC5oOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWRkIGFuZCBmaXggZnVuY3Rpb24gcHJvdG90eXBlcy4KCgkqIGRsbHMvb2xlMzIvdGVzdHMvcHJvcHZhcmlhbnQuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJRml4IFByb3BWYXJpYW50IHRlc3RzIG9uIFdpbmRvd3MgMjAwMCBhbmQgYWJvdmUuCgoJKiBkbGxzL3dpbm1tL3dpbmVhbHNhL2F1ZGlvLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZSBuZWVkbGVzcyBjYWxsIHRvIFNsZWVwLgoKCSogZGxscy9vbGUzMi9yZWdzdnIuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBBZGQgcmVnaXN0cnkgZW50cmllcyBmb3IgbG9jYWwtb25seSBPTEUgaW50ZXJmYWNlcy4KCS0gQ2hhbmdlIElVbmtub3duIHRvIGxvY2FsIGludGVyZmFjZS4KCgkqIGRsbHMvcmljaGVkMjAvZWRpdG9yLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCVJpY2hlZGl0IGNsYXNzZXMgc2hvdWxkIGJlIGdsb2JhbC4KCgkqIGRsbHMvaXBobHBhcGkvaWZlbnVtLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBzaXplIHBhc3NlZCB0byBsc3RyY3B5bkEgZnVuY3Rpb24gLSBzaXplb2Yoc3RyaW5nKSA9PSA0IG5vdCAxNiBhcwoJbmVlZGVkLgoKCSogaW5jbHVkZS93aW5nZGkuaDogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQ29ycmVjdCBHZGlJc1BsYXlNZXRhZmlsZURDIHByb3RvdHlwZS4KCgkqIGRsbHMvYWR2YXBpMzIvc2VydmljZS5jLCBkbGxzL2FkdmFwaTMyL3Rlc3RzL2NyeXB0X21kNC5jLAoJICBkbGxzL2FkdmFwaTMyL3Rlc3RzL2NyeXB0X21kNS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJU2lsZW5jZSBzb21lIC1XbWlzc2luZy1kZWNsYXJhdGlvbnMgd2FybmluZ3MuCgoJKiBpbmNsdWRlL3dpbmNyeXB0Lmg6IEp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCUFkZC9jb3JyZWN0IGEgZmV3IG1vcmUgZGVmaW5pdGlvbnMuCgoJKiBpbmNsdWRlL2ljbS5oOiBIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCURlY2xhcmUgbWlzc2luZyBmdW5jdGlvbnMuCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglDb3JyZWN0ZWQgc3RyaW5nIGxlbmd0aCBtZXRob2QgaW4gSVR5cGVMaWI6OklzTmFtZSgpIGFuZCBGaW5kTmFtZSgpCglmb3IgTFBPTEVTVFIgdHlwZS4KCjIwMDUtMDYtMTIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYzogQWRyaWFuIEhhcnZleSA8YWpoYXJ2ZXlAbXlyZWFsYm94LmNvbT4KCUFkZGVkIHN5cy90eXBlcy5oIHRvIGNvbmZpZ3VyZSBjaGVjayBmb3IgdmlkZW9kZXYuaC4KCgkqIGRsbHMvcmljaGVkMjAvd3JpdGVyLmM6IEtyenlzenRvZiBGb2x0bWFuIDx3ZGV2QGZvbHRtYW4uY29tPgoJRW1pdCBcdHggZm9yIHVzZXItZGVmaW5lZCBUQUJzLgoKCSogcHJvZ3JhbXMvd2luZWZpbGUvd2luZWZpbGUuYzogTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCVJlbW92ZSB1bm5lY2Vzc2FyeSBwYWludCBjb2RlLgoKCSogZGxscy9vcGVuZ2wzMi93Z2xfZXh0LmM6IExpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglSZW1vdmUgc29tZSBGSVhNRXMgYW5kIHJlcGxhY2UgdGhlbSB3aXRoIFRSQUNFcy4KCgkqIHByb2dyYW1zL3dpbmVmaWxlL3dpbmVmaWxlLmg6IE1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CglNb3ZlIF9fV0lORV9fIGlmZGVmIGRpcmVjdGl2ZS4KCgkqIGRsbHMvbnRkbGwvc2VjLmM6IEphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJUmVtb3ZlIHN0dWIgc3RhdHVzLgoJQ2hlY2sgZm9yIGNvcnJlY3QgcmV2aXNpb24gdmFsdWUuCgoJKiBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGluY2x1ZGUvd2ludGVybmwuaDoKCUphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJQWRkIFJ0bEFuc2lDaGFyVG9Vbmljb2RlQ2hhciBkZWZpbml0aW9uLgoJQ29ycmVjdCBzdHViIHN0YXR1cyBvZiBSdGxBbnNpQ2hhclRvVW5pY29kZUNoYXIuCgoJKiBkbGxzL3NldHVwYXBpL3F1ZXVlLmMsIGRsbHMvc2V0dXBhcGkvc2V0dXBhcGkuc3BlYzoKCU1hdHRoZXcgRGF2aXNvbiA8bWpkNzdAY2FtLmFjLnVrPgoJU3R1YiBvdXQgdGhlIGVycm9yIGRpYWxvZyBmdW5jdGlvbnMuCglNb2RpZnkgdGhlIGRlZmF1bHQgY2FsbGJhY2tzIHRvIGNhbGwgdGhlc2UgZm9yIERlbGV0ZSBhbmQgUmVuYW1lCgllcnJvcnMuCglNb2RpZnkgdGhlIGRlZmF1bHQgY2FsbGJhY2tzIHRvIGlnbm9yZSBmaWxlIG1pc3NpbmcgZXJyb3JzIHdoZW4KCWRlbGV0aW5nIGZpbGVzLgoKCSogZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL250ZGxsL3NlYy5jLCBpbmNsdWRlL3dpbnRlcm5sLmg6CglFcmljIEtvaGwgPGVyaWMua29obEB0LW9ubGluZS5kZT4KCUltcGxlbWVudCBSdGxBZGp1c3RQcml2aWxlZ2UuCgoJKiBwcm9ncmFtcy93aW5lZmlsZS93aW5lZmlsZS5jOiBNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJRml4IGZpbGUgc2l6ZSBpbiBwcm9wZXJ0eSBkaWFsb2cgYnkgdXNpbmcgX3N0cHJpbnRmKCkgaW5zdGVhZCBvZgoJd3NwcmludGYoKS4KCgkqIGRsbHMvcmljaGVkMjAvZWRpdG9yLmMsIGRsbHMvcmljaGVkMjAvcGFpbnQuYywgZGxscy9yaWNoZWQyMC9zdHlsZS5jOgoJS3J6eXN6dG9mIEZvbHRtYW4gPHdkZXZAZm9sdG1hbi5jb20+CgktIGFkZGVkIHN1cHBvcnQgZm9yIFx1bG5vbmUgKHR1cm5pbmcgdW5kZXJsaW5lIG9mZikKCS0gc3VwcG9ydCBmb3IgYmFzaWMgc3Vic2NyaXB0IGFuZCBzdXBlcnNjcmlwdAoJLSB1bnRlc3RlZCBzdXBwb3J0IGZvciB0ZXh0IG9mZnNldAoKCSogZGxscy9kZHJhdy9kM2RfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L2QzZF91dGlscy5jLAoJICBkbGxzL2RkcmF3L2RldmljZV9vcGVuZ2wuYywgZGxscy9kZHJhdy9nbF9hcGkuaCwKCSAgZGxscy9kZHJhdy9nbF9wcml2YXRlLmgsIGRsbHMvZGRyYXcvb3BlbmdsX3ByaXZhdGUuaCwKCSAgZGxscy9kZHJhdy92ZXJ0ZXhidWZmZXIuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglTdXBwb3J0IGFsbCBwb3NzaWJsZSB0ZXh0dXJlIGNvb3JkaW5hdGVzIHNpemVzLgoKCSogZGxscy9vbGVhdXQzMi91c3JtYXJzaGFsLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gRG9uJ3QgcHJpbnQgb3V0IGNyeXB0aWMgbWVzc2FnZSBpZiBJRGlzcGF0Y2ggb3IgSVVua25vd24gb2JqZWN0IGlzCgkgIGp1c3QgTlVMTC4KCS0gcHVBcmdFcnIgaXMgYSByZWYgcG9pbnRlciBzbyB3ZSBoYXZlIHRvIHByb3ZpZGUgYSBkdW1teSBwb2ludGVyIGlmCgkgIGl0IGlzIE5VTEwuCgktIEZhaWwgZ3JhY2VmdWxseSBhbmQgbm90aWZ5IGNhbGxlciBpZiB3ZSByYW4gb3V0IG9mIG1lbW95IG9yIGlmCgkgIHZhcmlhbnQgY29weWluZyBmYWlsZWQuCgoJKiBkbGxzL2FkdmFwaTMyL3Rlc3RzL3JlZ2lzdHJ5LmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCByZWdpc3RyeSB0ZXN0IGZvciBXaW45eCBieSBza2lwcGluZyBhIHNlY3Rpb24gdGhhdCBmYWlscywgYnV0CglzdWNjZWVkcyBvbiBOVC4KCgkqIGRsbHMvc2hkb2N2dy9ldmVudHMuYywgZGxscy9zaGRvY3Z3L29sZW9iamVjdC5jLCBkbGxzL3NoZG9jdncvc2hkb2N2dy5oOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglNb3ZlIHN0YXRpYyB2YXJpYWJsZXMgb3V0IG9mIGhlYWRlciBmaWxlLCBhbHNvIHRoZSBsb2NhbCBpbnRlcmZhY2UKCWltcGxlbWVudGF0aW9ucy4KCgkqIGRsbHMvZHNvdW5kL3Rlc3RzL2NhcHR1cmUuYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCU1ha2UgZHNvdW5kIHRlc3RzIGxvYWRhYmxlIG9uIE5UNC4KCgkqIGRsbHMveDExZHJ2L3gxMWRydi5oOiBHbGVubiBXdXJzdGVyIDxnd3Vyc3RlckBzY3MuY2FybGV0b24uY2E+CglBZGQgZGVjbGFyYXRpb24gb2YgWDExRFJWX0dldERJQkNvbG9yVGFibGUgdG8gYXZvaWQgY29tcGlsZSB3YXJuaW5nLgoKCSogZGxscy9rZXJuZWwvcGF0aC5jOiBGZWxpeCBOYXdvdGhuaWcgPGZlbGl4Lm5hd290aG5pZ0B0LW9ubGluZS5kZT4KCUFkZCBhIHdvcmthcm91bmQgZm9yIFdpbjl4IGFwcHMgd2hpY2ggcGFzcyB0aGUgcGFyYW1ldGVycyBmb3IKCUdldEN1cnJlbnREaXJlY3RvcnlBIGluIHdyb25nIG9yZGVyLgoKMjAwNS0wNi0xMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYzogUGllcnJlIGQnSGVyYmVtb250IDxzdGVnZWZpbkBmcmVlLmZyPgoJVXNlIC5tb2RfKl9mdW5jIHNlY3Rpb25zIG9uIE1hYyBPUyBYL2kzODYgaW5zdGVhZCBvZiB0aGUgZWxmCgljb25zdHJ1Y3Rvci9kZXN0cnVjdG9yLgoKCSogdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jOgoJUmV1c2Ugb3V0cHV0X2RsbF9pbml0IGZvciB0aGUgY29uc3RydWN0b3Igb2YgZGVidWcgZmlsZXMuCgoJKiBzZXJ2ZXIvY2hhbmdlLmMsIHNlcnZlci9mZC5jLCBzZXJ2ZXIvbWFpbHNsb3QuYywgc2VydmVyL25hbWVkX3BpcGUuYywKCSAgc2VydmVyL3JlZ2lzdHJ5LmMsIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3Rva2VuLmM6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglDaGFuZ2UgY29kZSBzdHlsZSBvZiBmb3JtICJpZiggeCApIiB0byAiaWYgKHgpIiBmb3IgY29uc2lzdGVuY3kuCgoJKiBpbmNsdWRlL3NldHVwYXBpLmg6IE1hdHRoZXcgRGF2aXNvbiA8bWpkNzdAY2FtLmFjLnVrPgoJQWRkZWQgc29tZSBkZWZpbml0aW9ucyB0byBzZXR1cGFwaS4KCgkqIGRsbHMvbnRkbGwvbnQuYywgZGxscy9udGRsbC90ZXN0cy9pbmZvLmM6CglQYXVsIFZyaWVucyA8UGF1bC5WcmllbnNAeHM0YWxsLm5sPgoJRml4ZWQgUmV0dXJuTGVuZ3RoIG9mIFN5c3RlbUNwdUluZm9ybWF0aW9uLgoJQWRkZWQgZmlyc3QgdGVzdCBmb3IgU3lzdGVtQ3B1SW5mb3JtYXRpb24uCgoJKiBkbGxzL21zaS9tc2kuc3BlYywgZGxscy9tc2kvbXNpcXVlcnkuYywgaW5jbHVkZS9tc2lxdWVyeS5oOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQ3JlYXRlIGEgc3R1YiBpbXBsZW1lbnRhdGlvbiBmb3IgTXNpVmlld0dldEVycm9yLgoKCSogZGxscy9rZXJuZWwvc3luYy5jLCBkbGxzL250ZGxsL3JlZy5jLCBkbGxzL250ZGxsL3N5bmMuYywKCSAgaW5jbHVkZS93aW50ZXJubC5oOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRGVwZW5kZW5jeSBmaXhlcyBmb3Igd2ludGVybmwuaC4KCgkqIHByb2dyYW1zL3JlZ2VkaXQvbGlzdHZpZXcuYywgcHJvZ3JhbXMvdGFza21nci9wZXJmcGFnZS5jLAoJICBwcm9ncmFtcy93aW5lYnJvd3Nlci9tYWluLmMsIHByb2dyYW1zL3dpbmVmaWxlL3dpbmVmaWxlLmMsCgkgIHByb2dyYW1zL3dpbmVmaWxlL3dpbmVmaWxlLmg6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggbW9yZSB3YXJuaW5ncy4KCgkqIGRsbHMvc2hlbGwzMi9zaGZsZHJfdW5peGZzLmM6CglNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglTZXQgdGhlIEZJTEVTWVNBTkNFU1RPUiBhbmQgRklMRVNZU1RFTSBmbGFncyBjb3JyZWN0bHkgaW4KCUdldEF0dHJpYnV0ZXNPZi4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglDbGVhciBvdXQgcGFyYW1ldGVycyB0byBzdG9wIGJhZCBwb2ludGVycyBseWluZyBhcm91bmQgaW4gbWVtb3J5IGlmCgl0aGUgZnVuY3Rpb24gZG9lc24ndCBzZXQgdGhlbSB0byBhbnl0aGluZy4KCgkqIGRsbHMveDExZHJ2L3BhbGV0dGUuYzogR2xlbm4gV3Vyc3RlciA8Z3d1cnN0ZXJAc2NzLmNhcmxldG9uLmNhPgoJQWRkcyBzdXBwb3J0IGZvciB0aGUgRElCSU5ERVggdHlwZSBvZiBDT0xPUlJFRi4KCgkqIGRsbHMvbnRkbGwvcnRsc3RyLmM6IEphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJSW1wbGVtZW50IFJ0bEFuc2lDaGFyVG9Vbmljb2RlQ2hhci4KCgkqIGluY2x1ZGUvd2luaW5ldC5oOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglJbmNsdWRlIG1pc3NpbmcgQVcgbWFjcm8uCgoJKiBpbmNsdWRlL21zaXF1ZXJ5Lmg6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCURlY2xhcmUgdGhlIE1TSURCRVJST1IgZW51bWVyYXRpb24uCgoJKiBkbGxzL3VybG1vbi91cmxtb25fbWFpbi5jLCBpbmNsdWRlL3VybG1vbi5pZGw6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglEZWNsYXJlIGZ1bmN0aW9ucyBhbmQgY29ycmVjdCBwcm90b3R5cGVzLgoKCSogZGxscy9jcnlwdDMyL2VuY29kZS5jLCBkbGxzL2NyeXB0MzIvdGVzdHMvZW5jb2RlLmM6CglKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglDcnlwe0VufERlfWNvZGVPYmplY3RFeCBzaG91bGQgcmV0dXJuIHN1Y2Nlc3MgaWYgdGhlIGlucHV0IGJ1ZmZlciBpcwoJTlVMTCwgc29tZSBNUyBzYW1wbGUgcHJvZ3JhbXMgZGVwZW5kIG9uIHRoYXQuICBGaXggZnVuY3Rpb25zIGFuZAoJdGVzdHMuCgoyMDA1LTA2LTA5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy91c2VyL2VkaXQuYzogTGF1cmkgVHVsbWluIDx0dWxtaW5AZ21haWwuY29tPgoJQm90dG9tIGVkZ2Ugb2YgdGhlIHVwZGF0ZSByZWdpb24gc2hvdWxkIGJlIHJlbGF0aXZlIHRvIHRoZSB0b3AgZWRnZSBvZgoJdGhlIGZvcm1hdCByZWN0LgoKCSogZGxscy9kZHJhdy90ZXN0cy9kM2QuYzogU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtTGluZS5jb20+CglNYWtlIGRkcmF3IHRlc3RzIGxvYWRhYmxlIG9uIE5UNC4KCgkqIHNlcnZlci9yZWdpc3RyeS5jOgoJU3RvcmUgdGhlIHByb2Nlc3MgYWxvbmcgd2l0aCB0aGUga2V5IGhhbmRsZSBpbiBub3RpZmljYXRpb25zLgoKCSogZGxscy9udGRsbC9udC5jOiBQYXVsIFZyaWVucyA8UGF1bC5WcmllbnNAeHM0YWxsLm5sPgoJUmVkdWNlIG91ciBidWZmZXIgYnkgMSBTWVNURU1fVEhSRUFEX0lORk9STUFUSU9OIHBlciBwcm9jZXNzLgoJTWluaW1pemUgc29tZSBjYWxjdWxhdGlvbnMuCgoJKiBkbGxzL3VzZXIvZWRpdC5jLCBkbGxzL3VzZXIvdGVzdHMvZWRpdC5jOgoJTGF1cmkgVHVsbWluIDx0dWxtaW5AZ21haWwuY29tPgoJQWRkIG1vcmUgdGVzdHMgZm9yIHRleHQgcGxhY2VtZW50IGluIHNpbmdsZSBhbmQgbXVsdGlsaW5lIGVkaXQKCWNvbnRyb2xzLiBTb21lIG9mIHRoZSB0ZXN0cyBhcmUgbWFya2VkIGFzIHRvZG8uCgoJKiBkbGxzL21zaS9hY3Rpb24uYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUV4dGVuZGluZyB1cG9uIE1pa2UgTWNDb3JtYWNrJ3MgY2xlYW51cCB0byB1c2UgTVNJX1JlY29yZEdldFN0cmluZy4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJUmVnaXN0ZXIgdGhlIFByb2R1Y3QgVmVyc2lvbiBhbHNvLgoJQWxzbyBoZWxwIHBsdWcgc29tZSBtZW1vcnkgbGVha3MgcG9pbnRlZCBvdXQgYnkgTWlrZSBNY0Nvcm1hY2suCgoJKiBkbGxzL3VzZXIvdGVzdHMvd2luc3RhdGlvbi5jLCBzZXJ2ZXIvYXRvbS5jLCBzZXJ2ZXIvY2hhbmdlLmMsCgkgIHNlcnZlci9jb25zb2xlLmMsIHNlcnZlci9kZWJ1Z2dlci5jLCBzZXJ2ZXIvZXZlbnQuYywgc2VydmVyL2ZkLmMsCgkgIHNlcnZlci9maWxlLmMsIHNlcnZlci9oYW5kbGUuYywgc2VydmVyL2hvb2suYywgc2VydmVyL21haWxzbG90LmMsCgkgIHNlcnZlci9tYXBwaW5nLmMsIHNlcnZlci9tdXRleC5jLCBzZXJ2ZXIvbmFtZWRfcGlwZS5jLAoJICBzZXJ2ZXIvb2JqZWN0LmMsIHNlcnZlci9vYmplY3QuaCwgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3F1ZXVlLmMsCgkgIHNlcnZlci9yZWdpc3RyeS5jLCBzZXJ2ZXIvcmVxdWVzdC5jLCBzZXJ2ZXIvc2VtYXBob3JlLmMsCgkgIHNlcnZlci9zZXJpYWwuYywgc2VydmVyL3NpZ25hbC5jLCBzZXJ2ZXIvc25hcHNob3QuYywgc2VydmVyL3NvY2suYywKCSAgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdGltZXIuYywgc2VydmVyL3Rva2VuLmMsIHNlcnZlci93aW5zdGF0aW9uLmM6CglBZGRlZCBhIGNsb3NlX2hhbmRsZSBtZXRob2QgdG8gdGhlIG9iamVjdCBvcGVyYXRpb25zLCBhbmQgdXNlIGl0IHRvCglpbXBsZW1lbnQgcmVnaXN0cnkgbm90aWZpY2F0aW9ucyBhbmQgdGhlIHN0cmFuZ2UgYmVoYXZpb3Igb2YKCUNsb3NlSGFuZGxlIG9uIHdpbnN0YXRpb24vZGVza3RvcCBoYW5kbGVzLgoKCSogZGxscy9tc2kvYWN0aW9uLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglBdm9pZCBhIGxvb3Agd2hlcmUgYSBwYXJlbnQncyBwYXJlbnQgcmVmZXJzIHRvIGl0c2VsZiBhcyBpdHMgcGFyZW50LgoKCSogZGxscy91c2VyL3Rlc3RzL3dpbnN0YXRpb24uYywgc2VydmVyL2hhbmRsZS5jLCBzZXJ2ZXIvcHJvY2Vzcy5jLAoJICBzZXJ2ZXIvcHJvY2Vzcy5oLCBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci91c2VyLmgsCgkgIHNlcnZlci93aW5zdGF0aW9uLmM6CglUaGUgZGVza3RvcCBvZiBhIG5ldyB0aHJlYWQgc2hvdWxkIGJlIHNldCBmcm9tIHRoZSBwcm9jZXNzIGluaXRpYWwKCWRlc2t0b3AsIG5vdCBmcm9tIHRoZSBwYXJlbnQgdGhyZWFkLgoJRml4ZWQgYSBjb3VwbGUgb2YgYnVncyBpbiB0aGUgZGVza3RvcCBuYW1lIGhhbmRsaW5nLgoKCSogaW5jbHVkZS93aW5pbmV0Lmg6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCURlY2xhcmUgc29tZSBtaXNzaW5nIGZ1bmN0aW9ucy4KCgkqIGRsbHMvc2hlbGwzMi90ZXN0cy9zaGxmb2xkZXIuYzoKCVNhdWxpdXMgS3Jhc3Vja2FzIDxzYXVsaXVzLmtyYXN1Y2thc0BpZWVlLm9yZz4KCUdldCBjdXJyZW50IGRpcmVjdG9yeSBkdXJpbmcgdGVzdHMgb24gd2luOXggdG9vLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsbGluay5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBZGQgdGhlIElTaGVsbExpbmtEYXRhTGlzdCBpbnRlcmZhY2UgdG8gdGhlIFNoZWxsTGluayBvYmplY3QuCgoJKiBkbGxzL21zaS9NYWtlZmlsZS5pbiwgZGxscy9tc2kvYWN0aW9uLmMsIGRsbHMvbXNpL2FjdGlvbi5oLAoJICBkbGxzL21zaS91cGdyYWRlLmMsIGluY2x1ZGUvbXNpZGVmcy5oOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIG1vZHVsZSB1cGdyYWRlLmMgYW5kIGltcGxlbWVudGVkIEZpbmRSZWxhdGVkUHJvZHVjdHMuCgoJKiB0b29scy93aW5hcGkvY29uZmlnLnBtLCB0b29scy93aW5hcGkvbXN2Y21ha2VyLAoJICB0b29scy93aW5hcGkvd2luYXBpX2NsZWFudXA6CglGaXhlZCBhIG51bWJlciBvZiByZWZlcmVuY2VzIHRvIHJlbW92ZWQgZGlyZWN0b3JpZXMuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy91c2VyL01ha2VmaWxlLmluLAoJICBkbGxzL3VzZXIvZGRlX2NsaWVudC5jLCBkbGxzL3VzZXIvZGRlX21pc2MuYywKCSAgZGxscy91c2VyL2RkZV9wcml2YXRlLmgsIGRsbHMvdXNlci9kZGVfc2VydmVyLmMsIGRsbHMvdXNlci9kZGVtbDE2LmM6CglNb3ZlZCBkZGUgZmlsZXMgdG8gdGhlIG1haW4gZGlyZWN0b3J5IGFuZCBnb3QgcmlkIG9mIHRoZSBkbGxzL3VzZXIvZGRlCglzdWJkaXJlY3RvcnkuCgoJKiBERVZFTE9QRVJTLUhJTlRTLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy91c2VyL01ha2VmaWxlLmluLAoJICBkbGxzL3VzZXIvbWlzYy5jOgoJTW92ZWQgbW9uaXRvciBmdW5jdGlvbnMgdG8gZGxscy91c2VyL21pc2MuYyBhbmQgZmluYWxseSBnb3QgcmlkIG9mIHRoZQoJd2luZG93cy8gZGlyZWN0b3J5LgoKCSogZGxscy9udGRsbC90ZXN0cy9pbmZvLmM6IFBhdWwgVnJpZW5zIDxwYXVsLnZyaWVuc0B4czRhbGwubmw+CglBZGRlZCB0ZXN0IGZvciBTeXN0ZW1Qcm9jZXNzSW5mb3JtYXRpb24uCgoJKiBkbGxzL2FkdmFwaTMyL3Rlc3RzL3NlY3VyaXR5LmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIHRlc3QgZm9yIEFjY2Vzc0NoZWNrLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMi5oLCBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmMsCgkgIGRsbHMvY29tY3RsMzIvZmxhdHNiLmMsIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYywKCSAgZGxscy9jb21jdGwzMi9tb250aGNhbC5jLCBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jLAoJICBkbGxzL2NvbWN0bDMyL3Rlc3RzL2RwYS5jLCBkbGxzL2NvbWN0bDMyL3Rlc3RzL3RhYi5jLAoJICBkbGxzL2NvbWN0bDMyL3Rlc3RzL3VwZG93bi5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJV2FybmluZyBmaXhlcyBmb3IgLVdtaXNzaW5nLWRlY2xhcmF0aW9ucyBhbmQgLVd3cml0ZS1zdHJpbmdzLgoKCSogZGxscy91c2VyL01ha2VmaWxlLmluLCBkbGxzL3VzZXIvZHJpdmVyMTYuYzoKCU1vdmVkIHdpbmRvd3MvZHJpdmVyLmMgdG8gZGxscy91c2VyL2RyaXZlcjE2LmMuCgoJKiBkbGxzL3dpbm1tL3dpbmVhbHNhL2F1ZGlvLmM6IEplcmVteSBXaGl0ZSA8andoaXRlQGNvZGV3ZWF2ZXJzLmNvbT4KCUNvbWJpbmUgV0lORV9XQVZFT1VUIGFuZCBXSU5FX1dBVkVJTiBpbnRvIGEgc2luZ2xlIHN0cnVjdHVyZS4KCgkqIGluY2x1ZGUvb2JqYmFzZS5oLCBpbmNsdWRlL29sZTIuaDoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIHNvbWUgZnVuY3Rpb24gZGVjbGFyYXRpb25zLgoKCSogZGxscy9hZHZhcGkzMi90ZXN0cy9jcnlwdC5jLCBkbGxzL2FkdmFwaTMyL3Rlc3RzL3NlY3VyaXR5LmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggc29tZSB3YXJuaW5ncy4KCgkqIHRvb2xzL3dpbmVkdW1wL2xuay5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglEdW1wIG91dCB0aGUgbXNpIGluZm9ybWF0aW9uIGluIG1vcmUgZGV0YWlsLgoKCSogZGxscy9vbGUzMi9tb25pa2VyLmg6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUmVtb3ZlZCBDTFNJRF9Db21wb3NpdGVNb25pa2VyIChjb25mbGljdGluZyB3aXRoIHN0YXRpYyBkZWZpbml0aW9uKS4KCgkqIHNlcnZlci90b2tlbi5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIEF2b2lkIGV2aWwgc2lnbmVkIGJpdGZpZWxkcy4KCS0gRml4IGJ1ZyB3aXRoIHVzaW5nIHdyb25nIHJldmlzaW9uIGluIHNlY3VyaXR5X3NpZF9hbGxvYy4KCS0gQWRkIGFsbCBidWlsdGluIGdyb3VwcyBwcmVzZW50IGluIHRoZSBBZG1pbmlzdHJhdG9yIHRva2VuIG9uIFdpbmRvd3MKCSAgdG8gdGhlIGRlZmF1bHQgdG9rZW4uCgoJKiBkbGxzL3dpbmVkM2Qvd2luZWQzZF9wcml2YXRlLmg6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIGRlZmluaXRpb24vZGVjbGFyYXRpb24gbWlzbWF0Y2hlcyBvZiBuZXdseSBzdGF0aWMgdnRhYmxlcy4KCgkqIHNlcnZlci9uYW1lZF9waXBlLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBhIHJlZ3Jlc3Npb24gaW4gdGhlIHBlcmZvcm1hbmNlIG9mIG5hbWVkIHBpcGVzIGJ5IG9ubHkgbWFraW5nIHRoZQoJZmQgbm9uLWJsb2NraW5nIHdoZW4gb3ZlcmxhcHBlZCBJL08gaXMgcmVxdWVzdGVkIGZvciB0aGUgZmQgKHJlcG9ydGVkCglieSBJdmFuIExlbyBQdW90aSkuCgoJKiBkbGxzL2RiZ2hlbHAvZHdhcmYuYywgZGxscy9kYmdoZWxwL3N0b3JhZ2UuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCB3YXJuaW5ncyBleHBvc2VkIGJ5IC1XbWlzc2luZy1kZWNsYXJhdGlvbnMgYW5kIC1Xd3JpdGUtc3RyaW5ncy4KCgkqIGRsbHMvc2hlbGwzMi9zaHZfaXRlbV9jbWVudS5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBZGQgYSBjYXN0IHRvIGdldCByaWQgb2YgYSB3YXJuaW5nLgoKCSogZGxscy91c2VyL3Rlc3RzL3dpbnN0YXRpb24uYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBhIGNvdXBsZSBvZiBDbG9zZUhhbmRsZSBjYWxscy4KCgkqIGRsbHMvb2xlMzIvbWFyc2hhbC5jLCBkbGxzL29sZTMyL3N0dWJtYW5hZ2VyLmM6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglJVW5rbm93biBpc24ndCBhIHJlbW90YWJsZSBpbnRlcmZhY2Ugc28gdGhlIHN0dWIgbWFuYWdlciBzaG91bGRuJ3QKCW5lZWQgYSBtYXJzaGFsbGVyIGZvciBpdC4KCgkqIGRsbHMvbnRkbGwvZmlsZS5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIERvbid0IGZyZWUgdGhlIGZpbGVpbyBvYmplY3QgYmVjYXVzZSBpdCB3aWxsIGJlIGZyZWVkIGFueXdheSBpbgoJICBmaWxlaW9fdGVybWluYXRlIG9uIGVycm9yLgoJLSBQcmludCBvdXQgc3RhdHVzZXMgaW4gaGV4LCByYXRoZXIgdGhhbiBkZWNpbWFsLgoKCSogdG9vbHMvd2lkbC90eXBlbGliLmMsIHRvb2xzL3dpZGwvd3JpdGVfbXNmdC5jOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJQWRkIG1vcmUgc3RydWN0IHR5cGVzIGZvciBUTEIgZ2VuZXJhdGlvbi4KCgkqIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJTWFrZSBBRFZBUElfSXNMb2NhbENvbXB1dGVyIHN0YXRpYyBhbmQgc2ltcGxpZnkgaXQgYSBsaXR0bGUuCgoJKiBkbGxzL2FkdmFwaTMyL2FkdmFwaS5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglJbmNsdWRlIGFwcG1nbXQuaCB3aGVyZSBpdHMgZnVuY3Rpb25zIGFyZSB1c2VkLgoKCSogZGxscy9kbWNvbXBvcy9jaG9yZG1hcC5jLCBkbGxzL2RtY29tcG9zL2Nob3JkbWFwdHJhY2suYywKCSAgZGxscy9kbWNvbXBvcy9jb21wb3Nlci5jLCBkbGxzL2RtY29tcG9zL3NpZ25wb3N0dHJhY2suYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2UgaW50ZXJmYWNlIG1ldGhvZHMgc3RhdGljLgoKCSogc2VydmVyL3dpbnN0YXRpb24uYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJSW5jbHVkZSB1c2VyLmggaW4gdGhlIG5ldyB3aW5zdGF0aW9uLmMgdG8gYXZvaWQgYSB3YXJuaW5nIGZyb20KCS1XbWlzc2luZy1kZWNsYXJhdGlvbnMuCgoJKiBkbGxzL29sZWF1dDMyL3RtYXJzaGFsLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gVGhlIHR5cGVsaWIgbWFyc2hhbGVyIHNob3VsZCBvbmx5IGZyZWUgdGhlIG1lbW9yeSBpdCBhY3R1YWxseSBhbGxvY2F0ZWQuCgktIEFkZCBzcGVjaWFsIGNhc2VzIGZvciB0d28gbGVzc2VyIHVzZWQgdHlwZXMgdGhhdCBhcmVuJ3QKCSAgc2l6ZW9mKERXT1JEKSBzaXplZC4KCgkqIGRsbHMvc2hlbGwzMi9zaGZsZHJfdW5peGZzLmM6CglNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglVc2Ugc2hlbGwgaWNvbiBjYWNoZSBpbnN0ZWFkIG9mIGFuIG93biBJRXh0cmFjdEljb24gaW1wbGVtZW50YXRpb24uCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9kcml2ZS5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJRG9uJ3QgdHJ5IHRvIGFjY2VzcyBmbG9wcHkgaWYgaXQncyBub3QgbW91bnRlZC4KCgkqIGRsbHMvY29tY3RsMzIvaXBhZGRyZXNzLmM6IEFsZXggWm9yYWNoIDxpbmZvQHN1c2NvbXB1dGluZy5jb20+CglGaXhlZCBTZXRGb2N1cyBiZWhhdmlvci4KCjIwMDUtMDYtMDggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL21zaS9hY3Rpb24uYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCVNldCB0aGUgUHJlc2VsZWN0ZWQgcHJvcGVydHkgaWYgYXBwcm9wcmlhdGUgKHJlbGV2YW50IHRvCglNaWdyYXRlRmVhdHVyZVN0YXRlcyB3aGVuIGltcGxlbWVudGVkKS4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJV3JpdGUgb3V0IFByb2R1Y3QgTGFuZ3VhZ2UgYW5kIFByb2R1Y3QgSWNvbiB0byB0aGUgcmVnaXN0cnkuCgoJKiBkbGxzL250ZGxsL2ZpbGUuYywgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLAoJICBzZXJ2ZXIvbmFtZWRfcGlwZS5jLCBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvdHJhY2UuYzoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCBvdmVybGFwcGVkIEkvTyB3aXRoIG5hbWVkIHBpcGVzLgoKCSogZGxscy9tc2kvYWN0aW9uLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglXcml0ZSBvdXQgVXBncmFkZUNvZGVzIHRvIHRoZSByZWdpc3RyeSB0byBhbGxvdyBmb3IgZnV0dXJlIHVwZ3JhZGVzLgoKCSogZGxscy91c2VyL01ha2VmaWxlLmluLCBkbGxzL3VzZXIvbWlzYy5jLCBkbGxzL3VzZXIvdGVzdHMvLmN2c2lnbm9yZSwKCSAgZGxscy91c2VyL3Rlc3RzL01ha2VmaWxlLmluLCBkbGxzL3VzZXIvdGVzdHMvd2luc3RhdGlvbi5jLAoJICBkbGxzL3VzZXIvdXNlcjMyLnNwZWMsIGRsbHMvdXNlci93aW5zdGF0aW9uLmMsCgkgIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwgaW5jbHVkZS93aW51c2VyLmgsCgkgIHNlcnZlci9NYWtlZmlsZS5pbiwgc2VydmVyL29iamVjdC5jLCBzZXJ2ZXIvb2JqZWN0LmgsCgkgIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9wcm9jZXNzLmgsIHNlcnZlci9wcm90b2NvbC5kZWYsCgkgIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RocmVhZC5oLCBzZXJ2ZXIvdHJhY2UuYywKCSAgc2VydmVyL3VzZXIuaCwgc2VydmVyL3dpbnN0YXRpb24uYzoKCUJlZ2lubmluZ3Mgb2Ygc3VwcG9ydCBmb3Igd2luZG93IHN0YXRpb25zIGFuZCBkZXNrdG9wcy4KCgkqIGRsbHMvbXNpL21zaS5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQWRkIExhbmd1YWdlIHRvIHRoZSB2YWx1ZXMgd2UgY2FuIHF1ZXJ5IHdpdGggTXNpR2V0UHJvZHVjdEluZm8uCgoJKiBkbGxzL3dpbmVkM2QvZGV2aWNlLmMsIGRsbHMvd2luZWQzZC9kaXJlY3R4LmM6CglGZWxpeCBOYXdvdGhuaWcgPGZlbGl4Lm5hd290aG5pZ0B0LW9ubGluZS5kZT4KCS0gT3V0cHV0IGEgRklYTUUgd2hlbiBhIHN1cmZhY2Ugd2l0aCBkaW1lbnNpb25zIG5vdCBiZWluZyBhIHBvd2VyIG9mCgkgIHR3byBpcyByZXF1ZXN0ZWQuCgktIEZhaWwgZ3JhY2VmdWxseSB3aGVuIElXaW5lRDNESW1wbF9DcmVhdGVEZXZpY2UgZmFpbHMgdG8gY3JlYXRlIHRoZQoJICBmcm9udC0gb3IgYmFja2J1ZmZlci4KCgkqIGRsbHMvdXNlci9zeXNwYXJhbXMuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCVJlYWQgdGhlIGVudGlyZSBsb2dmb250IGZyb20gdGhlIHJlZ2lzdHJ5IGlmIGl0IGV4aXN0cy4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglVc2UgTVNJX1JlY29yZEdldFN0cmluZyBpbiBtb3JlIGFjdGlvbnMuCgoJKiBkbGxzL29sZWF1dDMyL3ZhcmZvcm1hdC5jOiBNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmNvbT4KCS0gaW1wbGVtZW50IGhhbmRsaW5nIG9mIGV4cG9uZW50cyAoZSssZS0sRSssRS0pIHdoZW4gcGFyc2luZyBudW1iZXIKCSAgZm9ybWF0cwoJLSBmaXggYSBzbWFsbCBjdXQnbidwYXN0ZSBlcnJvciBpbiB0aGUgY29tbWVudHMKCgkqIGRsbHMvcnBjcnQ0L3JwY19zZXJ2ZXIuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJRml4IGFuIFJQQyBzZXJ2ZXIgc3RhcnR1cCByYWNlIGludHJvZHVjZWQgYnkgbWUuCgoJKiBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jOiBNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglGaXhlZCBjb25mdXNpbmcgaW5kZW50YXRpb24uCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCBJVHlwZTo6SW52b2tlIGluIHJlZ2FyZHMgdG8gaGFuZGxpbmcgcHJvcGVydHlnZXQgdmFyaWFibGVzCglsb25nZXIgdGhhbiA0IGJ5dGVzIChsaWtlIFZUX0RBVEUpLgoKCSogZGxscy9ycGNydDQvcnBjX2JpbmRpbmcuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBEb24ndCBwYXNzIHRoZSBQUk9GSUxFX1NFUlZFUiBmbGFnIGluIHRvIENyZWF0ZU5hbWVkUGlwZSBhcyBpdCBpcwoJICBib2d1cy4KCS0gQ2FsbCBGbHVzaEZpbGVCdWZmZXJzIHRvIG1ha2Ugc3VyZSB0aGUgb3RoZXIgZW5kIG9mIHRoZSBwaXBlIGRvZXNuJ3QKCSAgZ2V0IGN1dCBvZmYgcHJlbWF0dXJlbHkuCgktIERvbid0IGNhbGwgQ2FuY2VsSW8gYXMgd2Ugc2hvdWxkIG5ldmVyIGhhdmUgYXN5bmMgSS9PIHBlbmRpbmcuCgoJKiBkbGxzL2NyeXB0MzIvZW5jb2RlLmMsIGRsbHMvY3J5cHQzMi90ZXN0cy9lbmNvZGUuYzoKCUp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCUltcGxlbWVudCBhc24uMSBlbmNvZGluZy9kZWNvZGluZyBvZiB0aW1lcywgd2l0aCB0ZXN0cy4KCjIwMDUtMDYtMDcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2RkcmF3L3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMvZGRyYXcvdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvZGRyYXcvdGVzdHMvZDNkLmM6CglBbnRvaW5lIENoYXZhc3NlIDxhLmNoYXZhc3NlQGdtYWlsLmNvbT4KCVRlc3QgY2FzZXMgZm9yIHRoZSBkaXJlY3QzZDcgbGlnaHQgYXBpLgoKCSogZGxscy9kZHJhdy9kM2RfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L2RldmljZV9tYWluLmMsCgkgIGRsbHMvZGRyYXcvZGV2aWNlX29wZW5nbC5jOgoJQW50b2luZSBDaGF2YXNzZSA8YS5jaGF2YXNzZUBnbWFpbC5jb20+CglSZXdyb3RlIHRoZSBsaWdodCBtYW5hZ2VtZW50IEFQSSB0byBhbGxvdyBmb3IgYW4gdW5saW1pdGVkIGFtb3VudCBvZgoJbGlnaHRzIHRvIGJlIHNldCwgYW5kIG9ubHkgYSBzdWJzZXQgb2YgdGhlbSB0byBiZSBlbmFibGVkLgoKCSogZGxscy9tc2kvYWN0aW9uLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVVzZSBNU0lfUmVjb3JkR2V0U3RyaW5nIHdoZXJlIHBvc3NpYmxlLgoKCSogZGxscy9zaGVsbDMyL2RlYnVnaGxwLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwKCSAgZGxscy9zaGVsbDMyL3NoZmxkcl9mcy5jLCBkbGxzL3NoZWxsMzIvc2hsdmlldy5jLAoJICBkbGxzL3NoZWxsMzIvc2h2X2l0ZW1fY21lbnUuYywgZGxscy9zaGVsbDMyL3Rlc3RzL3NobGZvbGRlci5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJV2FybmluZyBmaXhlcyBmb3IgLVdtaXNzaW5nLWRlY2xhcmF0aW9ucyBhbmQgLVd3cml0ZS1zdHJpbmdzLgoKCSogZGxscy9tc2kvZGlhbG9nLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVVzZSBhIHJpY2hlZGl0IGNvbnRyb2wgZm9yIGxpY2Vuc2UgdGV4dC4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jLCBkbGxzL21zaS9hY3Rpb24uaCwgZGxscy9tc2kvbXNpcHJpdi5oOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4ZXMgZm9yIC1XbWlzc2luZy1kZWNsYXJhdGlvbnMgYW5kIC1Xd3JpdGUtc3RyaW5ncyB3YXJuaW5ncy4KCgkqIGRsbHMvcXVhcnR6L2F2aWRlYy5jLCBkbGxzL3F1YXJ0ei9wYXJzZXIuYywKCSAgZGxscy9xdWFydHovdmlkZW9yZW5kZXJlci5jOgoJQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJRG9uJ3QgdXNlIGZ1bGxzY3JlZW4gbW9kZSBpbiB2aWRlbyByZW5kZXJlciBmb3Igbm93IGFuZCBpbXByb3ZlIGVycm9yCgloYW5kbGluZyBhIGJpdC4KCUltcHJvdmVkIGEgYml0IFJ1bi9QYXVzZS9TdG9wIG1ldGhvZHMgb2YgcGFyc2VyIHRlbXBsYXRlLgoKCSogZGxscy91c2VyL3Rlc3RzL21zZy5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkIGEgdGVzdCBmb3Igd2luZG93IHN0YXRlIHdoZW4gYSB3aW5kb3cgcmVjZWl2ZXMgV01fRU5BQkxFIG1lc3NhZ2UuCgoJKiBkbGxzL3VzZXIvd2luLmM6CglTdGlsbCBzZW5kIGEgbWVzc2FnZSBpbiBTZXRXaW5kb3dUZXh0IGZvciB0aGUgaW50ZXItcHJvY2VzcyBjYXNlIGV2ZW4KCXRob3VnaCBpdCdzIG5vdCBmdWxseSBjb3JyZWN0IChyZXBvcnRlZCBieSBKYXNvbiBDYW1wYmVsbCkuCgoJKiBzZXJ2ZXIvZmQuYywgc2VydmVyL2ZpbGUuYywgc2VydmVyL2ZpbGUuaDoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gQWRkIGEgZGVmYXVsdCBhc3luY2hyb25vdXMgSS9PIGltcGxlbWVudGF0aW9uLgoJLSBNYWtlIGZpbGUgb2JqZWN0cyB1c2UgaXQuCgoJKiBkbGxzL3NldHVwYXBpL2Rldmluc3QuYywgaW5jbHVkZS9zZXR1cGFwaS5oOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRGVjbGFyZSBzb21lIGZ1bmN0aW9ucy4KCgkqIGRsbHMvcnBjcnQ0L25kcl9vbGUuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJTWFrZSBOZHJJbnRlcmZhY2VQb2ludGVyKiBtb3JlIHJlbGlhYmxlLgoKCSogcHJvZ3JhbXMvd2luZWZpbGUvQ3MucmMsIHByb2dyYW1zL3dpbmVmaWxlL0RlLnJjLAoJICBwcm9ncmFtcy93aW5lZmlsZS9Fbi5yYywgcHJvZ3JhbXMvd2luZWZpbGUvRXMucmMsCgkgIHByb2dyYW1zL3dpbmVmaWxlL0ZyLnJjLCBwcm9ncmFtcy93aW5lZmlsZS9IdS5yYywKCSAgcHJvZ3JhbXMvd2luZWZpbGUvSXQucmMsIHByb2dyYW1zL3dpbmVmaWxlL05sLnJjLAoJICBwcm9ncmFtcy93aW5lZmlsZS9QbC5yYywgcHJvZ3JhbXMvd2luZWZpbGUvUHQucmMsCgkgIHByb2dyYW1zL3dpbmVmaWxlL1J1LnJjLCBwcm9ncmFtcy93aW5lZmlsZS9TaS5yYywKCSAgcHJvZ3JhbXMvd2luZWZpbGUvU3YucmMsIHByb2dyYW1zL3dpbmVmaWxlL1poLnJjOgoJTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCVN5bmNocm9uaXplIHJlc291cmNlIHNjcmlwdHMgSURzIG9mIHRoZSBkaWZmZXJlbnQgbGFuZ3VhZ2VzIGFuZCBhZGp1c3QKCUlORk8gZW50cmllcy4KCgkqIGRsbHMvY2FiaW5ldC9jYWJleHRyYWN0LmMsIGRsbHMvY2FiaW5ldC9jYWJpbmV0X21haW4uYzoKCVRob21hcyBXZWlkZW5tdWVsbGVyIDx3aW5lLXBhdGNoZXNAcmVhY3Rzb2Z0LmNvbT4KCVJlbW92ZWQgbG9jYWwgdmFyaWFibGVzIG9ubHkgdXNlZCBpbiBUUkFDRSBzdGF0ZW1lbnRzLgoKCSogaW5jbHVkZS9hY2xhcGkuaDogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRGVmaW5lIEdldEV4cGxpY2l0RW50cmllc0Zyb21BY2wuCgoJKiBpbmNsdWRlL3dpbmJhc2UuaDogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgc29tZSBzZWN1cml0eSByZWxhdGVkIGZ1bmN0aW9ucyB0byB3aW5iYXNlLmguCgoJKiBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL2FwcG1nbXQuaDoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIHRoZSBhcHBtZ210LmggaGVhZGVyLgoKCSogZGxscy9tc2kvZGlhbG9nLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCByYWRpbyBidXR0b24gZ3JvdXBzLiBEb24ndCBhZGQgdGhlIFdTX0dST1VQIHN0eWxlIHRvIGV2ZXJ5Cgl3aW5kb3cuCgoJKiBpbmNsdWRlL29sZWN0bC5oOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglEZWNsYXJlIE9sZUxvYWRQaWN0dXJlRXguCgoJKiBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmM6IEp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCUNvbnN0LWlmeSBhIG1hc2suCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZ2Jyb3dzZXIuYywKCSAgZGxscy9jb21tZGxnL2ZpbGVkbGdicm93c2VyLmg6CglKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglGaXggcmV0dXJuIGNvZGUgYWJ1c2UgKGRvbid0IHVzZSBIUkVTVUxUIHdoZW4gaXQgaXNuJ3QgbWVhbnQpLCBtYWtlCglmdW5jdGlvbnMgc3RhdGljIHdoZXJlIHBvc3NpYmxlLCByZW1vdmUgdW51c2VkIHByb3RvdHlwZXMuCgoJKiBkbGxzL21zaS9tc2lwcml2LmgsIGRsbHMvbXNpL3JlZ2lzdHJ5LmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQWRkIGZ1bmN0aW9ucyB0byBhZGQgdGhlIFVzZXIgVXBncmFkZUNvZGVzLgoKCSogZGxscy9tc2kvbXNpLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglDb3JyZWN0IGEgY3Jhc2ggaWYgdGhlIGxlbmd0aCBidWZmZXIgaXMgTlVMTC4KCgkqIGRsbHMvbnRkbGwvbnQuYzogUGF1bCBWcmllbnMgPFBhdWwuVnJpZW5zQHhzNGFsbC5ubD4KCUZpeGVkIHR5cG8uCglaZXJvIHRoZSB0aHJlYWQgaW5mb3JtYXRpb24gYmVmb3JlIHVzZS4KCgkqIGluY2x1ZGUvd2ludGVybmwuaDogUGF1bCBWcmllbnMgPFBhdWwuVnJpZW5zQHhzNGFsbC5ubD4KCUFkZCBhbm90aGVyICh1bmtub3duKSBtZW1iZXIgdG8gU1lTVEVNX1RIUkVBRF9JTkZPUk1BVElPTi4KCjIwMDUtMDYtMDYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC9jb25zb2xlLmMsIGRsbHMva2VybmVsL2Vudmlyb24uYywgZGxscy9rZXJuZWwvZXhjZXB0LmMsCgkgIGRsbHMva2VybmVsL2ZpYmVyLmMsIGRsbHMva2VybmVsL2hlYXAuYywgZGxscy9rZXJuZWwvcHJvY2Vzcy5jLAoJICBkbGxzL250ZGxsL2Vycm9yLmMsIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmMsIGRsbHMvbnRkbGwvaGVhcC5jLAoJICBkbGxzL250ZGxsL3Jlc291cmNlLmMsIGRsbHMvbnRkbGwvdmlydHVhbC5jLCBkbGxzL3dpbmVkb3MvcmVsYXkuYzoKCVJlbW92ZWQgc29tZSB1bm5lY2Vzc2FyeSBpbmNsdXNpb25zIG9mIHRocmVhZC5oCgoJKiBkbGxzL250ZGxsL2RlYnVndG9vbHMuYywgZGxscy9udGRsbC9udGRsbF9taXNjLmgsCgkgIGRsbHMvbnRkbGwvc2VydmVyLmMsIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYywgZGxscy9udGRsbC9zeW5jLmMsCgkgIGRsbHMvbnRkbGwvdGhyZWFkLmMsIGluY2x1ZGUvdGhyZWFkLmgsIGluY2x1ZGUvd2ludGVybmwuaDoKCU1vdmVkIHRoZSBudGRsbCBwZXItdGhyZWFkIGRhdGEgb3V0IG9mIHRoZSBURUIgaW50byBhIHByaXZhdGUKCXN0cnVjdHVyZSBzdG9yZWQgaW4gVEVCLlN5c3RlbVJlc2VydmVkMi4KCgkqIGRsbHMva2VybmVsL2NoYW5nZS5jLCBkbGxzL2tlcm5lbC9nbG9iYWwxNi5jLAoJICBkbGxzL2tlcm5lbC9rZXJuZWxfbWFpbi5jLCBkbGxzL2tlcm5lbC9rZXJuZWxfcHJpdmF0ZS5oLAoJICBkbGxzL2tlcm5lbC9sb2NhbDE2LmMsIGRsbHMva2VybmVsL2xvY2FsZS5jLCBkbGxzL2tlcm5lbC9uZV9tb2R1bGUuYywKCSAgZGxscy9rZXJuZWwvbmVfc2VnbWVudC5jLCBkbGxzL2tlcm5lbC9wdGhyZWFkLmMsCgkgIGRsbHMva2VybmVsL3JlbGF5MTYuYywgZGxscy9rZXJuZWwvc25vb3AxNi5jLCBkbGxzL2tlcm5lbC9zeXNsZXZlbC5jLAoJICBkbGxzL2tlcm5lbC9zeXN0ZW0uYywgZGxscy9rZXJuZWwvdGFzay5jLCBkbGxzL2tlcm5lbC92eGQuYzoKCU1vdmVkIHRoZSBrZXJuZWwgcGVyLXRocmVhZCBkYXRhIG91dCBvZiB0aGUgVEVCIGludG8gYSBwcml2YXRlCglzdHJ1Y3R1cmUgc3RvcmVkIGluIFRFQi5TeXN0ZW1SZXNlcnZlZDEuCgoJKiBkbGxzL2tlcm5lbC90aHVuay5jOgoJRmV0Y2ggdGhlIHN0YWNrIHNlbGVjdG9yIHRvIHVzZSBmcm9tIHRoZSBwcmV2aW91cyBzdGFja2ZyYW1lIGluc3RlYWQKCW9mIHRoZSBURUIuCgoJKiBkbGxzL29sZTMyL2FudGltb25pa2VyLmMsIGRsbHMvb2xlMzIvYmluZGN0eC5jLAoJICBkbGxzL29sZTMyL2NsaXBib2FyZC5jLCBkbGxzL29sZTMyL2NvbXBvc2l0ZW1vbmlrZXIuYywKCSAgZGxscy9vbGUzMi9kYXRhY2FjaGUuYywgZGxscy9vbGUzMi9kZWZhdWx0aGFuZGxlci5jLAoJICBkbGxzL29sZTMyL2Vycm9yaW5mby5jLCBkbGxzL29sZTMyL2ZpbGVtb25pa2VyLmMsCgkgIGRsbHMvb2xlMzIvZnRtYXJzaGFsLmMsIGRsbHMvb2xlMzIvZ2l0LmMsIGRsbHMvb2xlMzIvaGdsb2JhbHN0cmVhbS5jLAoJICBkbGxzL29sZTMyL2lmcy5jLCBkbGxzL29sZTMyL2l0ZW1tb25pa2VyLmMsCgkgIGRsbHMvb2xlMzIvbWVtbG9ja2J5dGVzLmMsIGRsbHMvb2xlMzIvbWVtbG9ja2J5dGVzMTYuYywKCSAgZGxscy9vbGUzMi9tb25pa2VyLmMsIGRsbHMvb2xlMzIvb2xlMTYuYywgZGxscy9vbGUzMi9vbGVvYmouYywKCSAgZGxscy9vbGUzMi9vbGVwcm94eS5jLCBkbGxzL29sZTMyL3JlZ3N2ci5jLCBkbGxzL29sZTMyL3N0Z19wcm9wLmMsCgkgIGRsbHMvb2xlMzIvc3RnX3N0cmVhbS5jLCBkbGxzL29sZTMyL3N0b3JhZ2UuYywKCSAgZGxscy9vbGUzMi9zdG9yYWdlMzIuYywgZGxscy9vbGUzMi9zdG9yYWdlMzIuaCwKCSAgZGxscy9vbGUzMi90ZXN0cy9tYXJzaGFsLmMsIGRsbHMvb2xlYXV0MzIvY29ubnB0LmMsCgkgIGRsbHMvb2xlYXV0MzIvZGlzcGF0Y2guYywgZGxscy9vbGVhdXQzMi9vYWlkbF9wLmMsCgkgIGRsbHMvb2xlYXV0MzIvb2xlZm9udC5jLCBkbGxzL29sZWF1dDMyL29sZXBpY3R1cmUuYywKCSAgZGxscy9vbGVhdXQzMi9yZWNpbmZvLmMsIGRsbHMvb2xlYXV0MzIvdGVzdHMvc2FmZWFycmF5LmMsCgkgIGRsbHMvb2xlYXV0MzIvdGVzdHMvdmFydHlwZS5jLCBkbGxzL29sZWF1dDMyL3RtYXJzaGFsLmMsCgkgIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jLCBkbGxzL29sZWF1dDMyL3R5cGVsaWIyLmMsCgkgIGRsbHMvb2xlY2xpL29sZWNsaTE2LmMsIGRsbHMvb2xlY2xpL29sZWNsaV9tYWluLmMsCgkgIGRsbHMvb2xlc3ZyL29sZXN2cl9tYWluLmMsIGRsbHMvcWNhcC9xY2FwX21haW4uYywKCSAgZGxscy9xY2FwL3Zmd2NhcHR1cmUuYywgZGxscy9xdWFydHovZW51bW1vbmlrZXIuYywKCSAgZGxscy9xdWFydHovZmlsZXNvdXJjZS5jLCBkbGxzL3F1YXJ0ei9maWx0ZXJncmFwaC5jLAoJICBkbGxzL3F1YXJ0ei9maWx0ZXJtYXBwZXIuYywgZGxscy9xdWFydHovbWFpbi5jLAoJICBkbGxzL3F1YXJ0ei9tZW1hbGxvY2F0b3IuYywgZGxscy9xdWFydHovcGFyc2VyLmMsIGRsbHMvcXVhcnR6L3Bpbi5jLAoJICBkbGxzL3F1YXJ0ei9zeXN0ZW1jbG9jay5jLCBkbGxzL3F1YXJ0ei92aWRlb3JlbmRlcmVyLmMsCgkgIGRsbHMvcmljaGVkMjAvcmljaG9sZS5jLCBkbGxzL3JwY3J0NC9jcHJveHkuYywgZGxscy9ycGNydDQvY3BzZi5jLAoJICBkbGxzL3JwY3J0NC9uZHJfb2xlLmMsIGRsbHMvc2hkb2N2dy9jbGFzc2luZm8uYywKCSAgZGxscy9zaGRvY3Z3L2V2ZW50cy5jLCBkbGxzL3NoZG9jdncvZmFjdG9yeS5jLCBkbGxzL3NoZG9jdncvbWlzYy5jLAoJICBkbGxzL3NoZG9jdncvb2xlb2JqZWN0LmMsIGRsbHMvc2hkb2N2dy9wZXJzaXN0LmMsCgkgIGRsbHMvc2hkb2N2dy9zaGRvY3Z3LmgsIGRsbHMvc2hkb2N2dy9zaGRvY3Z3X21haW4uYywKCSAgZGxscy9zaGRvY3Z3L3dlYmJyb3dzZXIuYywgZGxscy9zaGVsbDMyL2F1dG9jb21wbGV0ZS5jLAoJICBkbGxzL3NoZWxsMzIvY3BhbmVsZm9sZGVyLmMsIGRsbHMvc2hlbGwzMi9kYXRhb2JqZWN0LmMsCgkgIGRsbHMvc2hlbGwzMi9kcmFnZHJvcGhlbHBlci5jLCBkbGxzL3NoZWxsMzIvZW51bWlkbGlzdC5jLAoJICBkbGxzL3NoZWxsMzIvZm9sZGVycy5jLCBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbG9sZS5jLCBkbGxzL3NoZWxsMzIvc2hmbGRyX2Rlc2t0b3AuYywKCSAgZGxscy9zaGVsbDMyL3NoZmxkcl9mcy5jLCBkbGxzL3NoZWxsMzIvc2hmbGRyX215Y29tcC5jLAoJICBkbGxzL3NoZWxsMzIvc2hsZnNiaW5kLmMsIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmMsCgkgIGRsbHMvc2hlbGwzMi9zaHZfYmdfY21lbnUuYywgZGxscy9zaGVsbDMyL3Nodl9pdGVtX2NtZW51LmMsCgkgIGRsbHMvc2hlbGwzMi90ZXN0cy9zaGVsbHBhdGguYywgZGxscy9zaGx3YXBpL2Fzc29jLmMsCgkgIGRsbHMvc2hsd2FwaS9pc3RyZWFtLmMsIGRsbHMvc2hsd2FwaS9yZWdzdHJlYW0uYywKCSAgZGxscy91cmxtb24vc2VjX21nci5jLCBkbGxzL3VybG1vbi90ZXN0cy91cmwuYywgZGxscy91cmxtb24vdW1vbi5jLAoJICBkbGxzL3VybG1vbi91cmxtb25fbWFpbi5jLCBkbGxzL3dpbmVkM2QvYmFzZXRleHR1cmUuYywKCSAgZGxscy93aW5lZDNkL2N1YmV0ZXh0dXJlLmMsIGRsbHMvd2luZWQzZC9kZXZpY2UuYywKCSAgZGxscy93aW5lZDNkL2RpcmVjdHguYywgZGxscy93aW5lZDNkL2luZGV4YnVmZmVyLmMsCgkgIGRsbHMvd2luZWQzZC9xdWVyeS5jLCBkbGxzL3dpbmVkM2QvcmVzb3VyY2UuYywKCSAgZGxscy93aW5lZDNkL3N0YXRlYmxvY2suYywgZGxscy93aW5lZDNkL3N1cmZhY2UuYywKCSAgZGxscy93aW5lZDNkL3RleHR1cmUuYywgZGxscy93aW5lZDNkL3ZlcnRleGJ1ZmZlci5jLAoJICBkbGxzL3dpbmVkM2QvdmVydGV4ZGVjbGFyYXRpb24uYywgZGxscy93aW5lZDNkL3ZlcnRleHNoYWRlci5jLAoJICBkbGxzL3dpbmVkM2Qvdm9sdW1lLmMsIGRsbHMvd2luZWQzZC92b2x1bWV0ZXh0dXJlLmMsCgkgIGRsbHMvd2luZWQzZC93aW5lZDNkX3ByaXZhdGUuaCwgZGxscy93aW5tbS93aW5lYWxzYS9hdWRpby5jLAoJICBkbGxzL3dpbm1tL3dpbmVhdWRpb2lvL2F1ZGlvLmMsIGRsbHMvd2lubW0vd2luZWphY2svYXVkaW8uYywKCSAgZGxscy93aW5tbS93aW5lb3NzL2RzY2FwdHVyZS5jLCBkbGxzL3dpbm1tL3dpbmVvc3MvZHNyZW5kZXIuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglNYWtlIHJlbWFpbmluZyBPTEUgaW50ZXJmYWNlIHZ0YWJsZXMgY29uc3QuCgoJKiBkbGxzL3NoZWxsMzIvc2hmbGRyX3VuaXhmcy5jOgoJTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJQWxsb3cgZm9yIHVuaXhmcyBmb2xkZXJzIHRvIGJlIHJvb3RlZCBhdCBkZXNrdG9wIGxldmVsLgoJTW92ZWQgZG9zLT51bml4IHBhdGggY29udmVyc2lvbiBpbnRvIGNhbm9uaWNhbGl6ZV9wYXRoLgoJRmFpbCBpbiBCaW5kVG9PYmplY3QsIGlmIGNhbGxlZCB3aXRoIGVtcHR5IHBpZGwuCgoJKiB0b29scy93aW5lYnVpbGQvYnVpbGQuaCwgdG9vbHMvd2luZWJ1aWxkL2ltcG9ydC5jLAoJICB0b29scy93aW5lYnVpbGQvc3BlYzE2LmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYzoKCU1vdmVkIGFsbCBhc3NlbWJseSBjb2RlIHRvIHRoZSBlbmQgb2YgdGhlIGdlbmVyYXRlZCBDIGZpbGVzIHRvIGF2b2lkCgljb25mbGljdGluZyB3aXRoIHRoZSBjb21waWxlciBvdmVyIHNlY3Rpb24gY2hhbmdlcy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL2RkcmF3L01ha2VmaWxlLmluLAoJICBkbGxzL2RkcmF3L2QzZF91dGlscy5jLCBkbGxzL2RkcmF3L2QzZGNvbW1vbi5jLAoJICBkbGxzL2RkcmF3L2QzZGV4ZWN1dGVidWZmZXIuYywgZGxscy9kZHJhdy9kM2RsaWdodC5jLAoJICBkbGxzL2RkcmF3L2QzZG1hdGVyaWFsLmMsIGRsbHMvZGRyYXcvZDNkdGV4dHVyZS5jLAoJICBkbGxzL2RkcmF3L2QzZHZlcnRleGJ1ZmZlci5jLCBkbGxzL2RkcmF3L2QzZHZpZXdwb3J0LmMsCgkgIGRsbHMvZGRyYXcvZGRyYXdfbWFpbi5jLCBkbGxzL2RkcmF3L2RldmljZV9tYWluLmMsCgkgIGRsbHMvZGRyYXcvZGV2aWNlX29wZW5nbC5jLCBkbGxzL2RkcmF3L2RpcmVjdDNkX21haW4uYywKCSAgZGxscy9kZHJhdy9kaXJlY3QzZF9vcGVuZ2wuYywgZGxscy9kZHJhdy9leGVjdXRlYnVmZmVyLmMsCgkgIGRsbHMvZGRyYXcvbGlnaHQuYywgZGxscy9kZHJhdy9tYWluLmMsIGRsbHMvZGRyYXcvbWF0ZXJpYWwuYywKCSAgZGxscy9kZHJhdy9tZXNhLmMsIGRsbHMvZGRyYXcvbWVzYV9wcml2YXRlLmgsCgkgIGRsbHMvZGRyYXcvb3BlbmdsX3ByaXZhdGUuaCwgZGxscy9kZHJhdy9vcGVuZ2xfdXRpbHMuYywKCSAgZGxscy9kZHJhdy9zdXJmYWNlX21haW4uYywgZGxscy9kZHJhdy90ZXh0dXJlLmMsCgkgIGRsbHMvZGRyYXcvdmVydGV4YnVmZmVyLmMsIGRsbHMvZGRyYXcvdmlld3BvcnQuYzoKCUNocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCU1vdmVkIGQzZGRldmljZSBhbmQgZGlyZWN0M2Qgb2JqZWN0cyBmaWxlcyB0byBkZHJhdyByb290IGRpci4KCVJlbmFtZWQgYWxsIHJlbWFpbmluZyBmaWxlcy4KCgkqIGRsbHMvbnRkbGwvbnQuYywgaW5jbHVkZS93aW50ZXJubC5oOgoJRmVsaXggTmF3b3RobmlnIDxmZWxpeC5uYXdvdGhuaWdAdC1vbmxpbmUuZGU+CglNYWtlIFNZU1RFTV9USFJFQURfSU5GT1JNQVRJT04ucHN6UHJvY2Vzc05hbWUgYSBVTklDT0RFX1NUUklORy4KCgkqIGRsbHMvbXNpL2RpYWxvZy5jLCBkbGxzL21zaS9ldmVudHMuYywgZGxscy9tc2kvbXNpcHJpdi5oLAoJICBkbGxzL21zaS9wYWNrYWdlLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglVc2Ugc3RhbmRhcmQgbGlzdHMgaW4gdGhlIGV2ZW50IHN1YnNjcmlwdGlvbiBjb2RlLgoKCSogZGxscy9tc2kvYWN0aW9uLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglEb24ndCBnZXQgY2F1Z2h0IGluIGxvb3BzIG9uIHBhcmVudCBwcm9naWRzLgoKCSogaW5jbHVkZS93aW5jcnlwdC5oOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglEZWZpbmUgc29tZSBDZXJ0KiBmdW5jdGlvbnMuCgoJKiBkbGxzL250ZGxsL3ZlcnNpb24uYzogTWlrZSBIZWFybiA8bWhAY29kZXdlYXZlcnMuY29tPgoJRGVsZXRlIHZlcnNpb24gc25pZmZpbmcgbG9naWMuCgoJKiBkbGxzL3NoZWxsMzIvYnJzZm9sZGVyLmMsIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYywKCSAgZGxscy9zaGVsbDMyL3Rlc3RzL3NobGZvbGRlci5jOgoJTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJTGV0IEJpbmRUb09iamVjdCBmYWlsLCBpZiBjYWxsZWQgd2l0aCBlbXB0eSByZWxhdGl2ZSBwaWRsLgoJVGVzdHMgdG8gc2hvdyB0aGF0IGl0IHNob3VsZCBkbyBzby4KCUZpeCBTSEJyb3dzZUZvckZvbGRlciB0byBub3QgcGFzcyBhbiBlbXB0eSBwaWRsIHRvIEJpbmRUb09iamVjdC4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlcGljdHVyZS5jLCBkbGxzL29sZWF1dDMyL3Rlc3RzLy5jdnNpZ25vcmUsCgkgIGRsbHMvb2xlYXV0MzIvdGVzdHMvTWFrZWZpbGUuaW4sIGRsbHMvb2xlYXV0MzIvdGVzdHMvb2xlcGljdHVyZS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCB0ZXN0Y2FzZXMgZm9yIE9MRSBQaWN0dXJlIGhhbmRsaW5nLgoJSW1wbGVtZW50ZWQgUElDVFlQRV9OT05FIGxvYWRpbmcuCglDbGVhbmVkIHVwIHN0cmVhbSBsb2FkaW5nLCBoYW5kbGUgImx0IiBtYWdpYy4KCUZpeGVkIHNvbWUgc21hbGwgcHJvYmxlbXMgZXhwb3NlZCBieSB0ZXN0cyBhZ2FpbnN0IG5hdGl2ZS4KCgkqIGRsbHMvd2lubW0vd2luZWFsc2EvYXVkaW8uYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCURvbid0IG9wZW4gZGV2aWNlIGlmIGFscmVhZHkgb3Blbi4KCURvbid0IG5lZWQgb3BlbmVkIGRldmljZSB0byBnZXQvc2V0IHZvbHVtZS4KCgkqIGRsbHMvY29tY3RsMzIvdGFiLmM6IEphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJQXVkaXQgdGhlIFRhYiBjb250cm9sLgoKCSogcHJvZ3JhbXMvd2luZWZpbGUvRGUucmMsIHByb2dyYW1zL3dpbmVmaWxlL0VuLnJjLAoJICBwcm9ncmFtcy93aW5lZmlsZS9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luZWZpbGUvcmVzb3VyY2UuaCwKCSAgcHJvZ3JhbXMvd2luZWZpbGUvcmVzb3VyY2UucmMsIHByb2dyYW1zL3dpbmVmaWxlL3dpbmVmaWxlLmM6CglNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJSW1wbGVtZW50IGZpbGUgcHJvcGVydGllcyBkaWFsb2cgKHBhcnRseSBiYXNlZCBvbiBSb2IgRC4ncyB3aW5maWxlCgljb2RlKS4KCjIwMDUtMDYtMDUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB0b29scy93aW5lYnVpbGQvaW1wb3J0LmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYzoKCVN3aXRjaCBiYWNrIHRvIC5kYXRhIGF0IHRoZSBlbmQgb2YgYXNtIHNlY3Rpb25zIHRvIHdvcmsgYXJvdW5kIGFuCglvcHRpbWl6YXRpb24gaW4gcmVjZW50IGdjYyB2ZXJzaW9ucy4KCgkqIGRsbHMvcnBjcnQ0L25kcl9taWRsLmM6IE1pa2UgSGVhcm4gPG1oQGNvZGV3ZWF2ZXJzLmNvbT4KCUluaXRpYWxpemUgRGF0YVJlcHJlc2VudGF0aW9uIGluIE5kckNsaWVudEluaXRpYWxpemVOZXcsIG5vdAoJTmRyU2VuZFJlY2VpdmUuCgoJKiBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYzogTWlrZSBIZWFybiA8bWhAY29kZXdlYXZlcnMuY29tPgoJLSBEb24ndCByZXR1cm4gTlVMTCBmb3IgcHJveHkgZGV0YWlscyBpZiB0aGVyZSBpcyBubyBwcm94eS4KCS0gUmVtb3ZlIHN0dWIgbWVzc2FnZSwgaXQgc2VlbXMgdG8gYmUgY29tcGxldGUuCgoJKiBkbGxzL29sZTMyL21hcnNoYWwuYzogUm9iIFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJRG9uJ3QgZGlzY29ubmVjdCBwcm94aWVzIGZsYWdnZWQgd2l0aCBTT1JGUF9OT0xJRkVUSU1FTUdNVC4gSXQgbWFrZXMKCW5vIHNlbnNlIGFuZCBvbmx5IGNhdXNlcyB0cm91YmxlIGZvciBwcm94aWVzIHRoYXQgZGVwZW5kIG9uIHRoZXNlCglwcm94aWVzIGJlaW5nIGF2YWlsYWJsZS4KCgkqIGRsbHMvdXNlci9lZGl0LmMsIGRsbHMvdXNlci90ZXN0cy9lZGl0LmM6CglMYXVyaSBUdWxtaW4gPHR1bG1pbkBnbWFpbC5jb20+CglEb24ndCB0cnVuY2F0ZSB0ZXh0IG9uIFdNX1NFVFRFWFQgYW5kIHNlbmQgRU5fTUFYVEVYVC4KCgkqIGRsbHMvd2lubW0vd2luZWFsc2EvYXVkaW8uYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUZpeCBhIHByb2JsZW0gd2hlcmUgYWN0dWFsIHNhbXBsZSByYXRlIGRvZXNuJ3QgZXhhY3RseSBtYXRjaAoJcmVxdWVzdGVkLgoKCSogZGxscy9xdWFydHovYWNtd3JhcHBlci5jLCBkbGxzL3F1YXJ0ei9lbnVtbWVkaWEuYywKCSAgZGxscy9xdWFydHovZmlsZXNvdXJjZS5jLCBkbGxzL3F1YXJ0ei9wYXJzZXIuYywgZGxscy9xdWFydHovcGluLmMsCgkgIGRsbHMvcXVhcnR6L3RyYW5zZm9ybS5jOgoJQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJRml4ZWQgY2xvY2sgcmVsZWFzZSBpbiB0cmFuc2Zvcm0gdGVtcGxhdGUuCglBZGRSZWYgcFVuayBpbiBDb3B5TWVkaWFUeXBlLgoJQWRkZWQgQ3JlYXRlTWVkaWFUeXBlIGhlbHBlciBmdW5jdGlvbiBhbmQgdXNlIGl0LgoJUmVwbGFjZWQgc29tZSBEZWxldGVNZWRpYVR5cGUgY2FsbHMgdG8gRnJlZU1lZGlhVHlwZSB0byBiZSBpbiBsaW5lCgl3aXRoIHJlY2VudCBjaGFuZ2VzLgoJRml4ZWQgSUVudW1NZWRpYVR5cGVzSW1wbF9OZXh0LgoJQ2xlYXIgbWVkaWEgdHlwZSB3aGVuIGluaXRpYWxpemluZyBwaW5zLgoJQWRkZWQgc29tZSBBZGRSZWYvUmVsZWFzZSB0cmFjZXMuCgoJKiBwcm9ncmFtcy93aW5lZmlsZS93aW5lZmlsZS5jOiBNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJUmVmcmVzaCB3aW5kb3cgY29udGVudCBhZnRlciBjb250ZXh0IG1lbnUgcG9wdXBzIG9ubHkgaWYgYW55IGNvbW1hbmQKCWhhcyBiZWVuIGV4ZWN1dGVkLgoKCSogZGxscy9rZXJuZWwvdGhyZWFkLmMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy9udGRsbC9zZXJ2ZXIuYywKCSAgaW5jbHVkZS93aW5lL3NlcnZlci5oOgoJTW92ZWQgdGhlIHNlcnZlciBwYXJ0IG9mIHRoZSBFeGl0VGhyZWFkIGZ1bmN0aW9uYWxpdHkgdG8gbnRkbGwuCgoJKiB0b29scy93aW5lYnVpbGQvcmVzMzIuYywgdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jOgoJR2VuZXJhdGUgdGhlIHJlc291cmNlIGRhdGEgZGlyZWN0bHkgaW5zaWRlIHRoZSByZXNvdXJjZSBkaXJlY3RvcnkuCgoJKiBkbGxzL2tlcm5lbC9leGNlcHQuYzoKCURvbid0IGJvdGhlciBsb29raW5nIGZvciBhIHJlc291cmNlIGRpcmVjdG9yeSBpbiBmcmVlIG1lbW9yeSBhcmVhcy4KCgkqIGRsbHMva2VybmVsL3Rhc2suYywgZGxscy9udGRsbC90aHJlYWQuYzoKCUF2b2lkIGFjY2Vzc2luZyB0aGUgaHRhc2sxNiBURUIgZmllbGQgZnJvbSBudGRsbC4KCgkqIGRsbHMvbnRkbGwvbG9hZGVyLmM6CglBbGxvY2F0ZSB0aGUgc3lzdGVtIHZpZXcgZm9yIGJ1aWx0aW4gbW9kdWxlcyBlYXJsaWVyIGluCglsb2FkX2J1aWx0aW5fY2FsbGJhY2sgc28gdGhhdCB3ZSBhbHNvIGNyZWF0ZSBvbmUgZm9yIHRoZSBtYWluCglleGVjdXRhYmxlLgoKCSogaW5jbHVkZS93aW51c2VyLmg6IFZpdGFsaXkgTWFyZ29sZW4gPHdpbmUtcGF0Y2hAa2lldmluZm8uY29tPgoJTWF0Y2ggbmFtZXMgZm9yIFdNX1NIT1dXSU5ET1cgc3RhdHVzIGNvZGVzIHRvIE1TRE4uCgoJKiBkbGxzL29sZTMyL29sZXByb3h5LmM6IE1pa2UgSGVhcm4gPG1pa2VAbmF2aS5jeD4KCUFkZCBzb21lIHRyYWNpbmcgdG8gdGhlIElSZW1Vbmtub3duIFJwY1Byb3h5QnVmZmVyIGltcGxlbWVudGF0aW9uLgoKCSogZGxscy93aW5tbS93aW5lYWxzYS9hdWRpby5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJUmV0dXJuIHByb3BlciBlcnJvciBjb2RlLgoJQ2hhbmdlIEVSUiB0byBXQVJOIGZvciBmYWlsZWQgcmVxdWVzdHMuCgoJKiBkbGxzL29sZWF1dDMyL3Rlc3RzL3R5cGVsaWIuYzogSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCVRlc3Qgb25seSBzdGRvbGUzMi50bGIgYXMgd2UgZG9uJ3QgaGF2ZSBvbGVwcm8zMi5kbGwgaW4gV2luZS4KCgkqIGRsbHMva2VybmVsL3N5bmMuYzogTWlrZSBIZWFybiA8bWhAY29kZXdlYXZlcnMuY29tPgoJU3VwcHJlc3MgdGhlIG5vaXN5IFNldE5hbWVkUGlwZUhhbmRsZVN0YXRlIGZpeG1lLgoKCSogcHJvZ3JhbXMvd2luZWZpbGUvd2luZWZpbGUuYywgcHJvZ3JhbXMvd2luZWZpbGUvd2luZWZpbGUuaDoKCU1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CglTeW5jIHdpbmVmaWxlJ3MgaGVhZGVyIGJldHdlZW4gV0lORSBhbmQgUmVhY3RPUy4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL3BpcGUuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUFkZGVkIG1vcmUgcGlwZSB0ZXN0cy4KCgkqIGRsbHMvZHNvdW5kL3Rlc3RzL2RzM2QuYywgZGxscy9kc291bmQvdGVzdHMvZHMzZDguYywKCSAgZGxscy9kc291bmQvdGVzdHMvZHNvdW5kLmMsIGRsbHMvZHNvdW5kL3Rlc3RzL2Rzb3VuZDguYzoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglGaXggdGVzdHMgdG8gd29yayB3aXRoIGRyaXZlcnMgdGhhdCBkb24ndCBzdXBwb3J0IGEgcHJpbWFyeSBidWZmZXIuCgoJKiBkbGxzL3dpbnRydXN0L3dpbnRydXN0LnNwZWMsIGRsbHMvd2ludHJ1c3Qvd2ludHJ1c3RfbWFpbi5jOgoJUGF1bCBWcmllbnMgPFBhdWwuVnJpZW5zQHhzNGFsbC5ubD4KCUFkZGVkIGEgc3R1YiBmb3IgQ3J5cHRDQVRBZG1pbkNhbGNIYXNoRnJvbUZpbGVIYW5kbGUuCgoJKiBpbmNsdWRlL3dpbmVycm9yLmg6IFBhdWwgVnJpZW5zIDxQYXVsLlZyaWVuc0B4czRhbGwubmw+CglBZGRlZCBzb21lIGVycm9yIGNvZGVzLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvZGRyYXcvTWFrZWZpbGUuaW4sCgkgIGRsbHMvZGRyYXcvc3VyZmFjZV9kaWIuYywgZGxscy9kZHJhdy9zdXJmYWNlX2Zha2V6YnVmZmVyLmMsCgkgIGRsbHMvZGRyYXcvc3VyZmFjZV9nYW1tYS5jLCBkbGxzL2RkcmF3L3N1cmZhY2VfaGFsLmMsCgkgIGRsbHMvZGRyYXcvc3VyZmFjZV9tYWluLmMsIGRsbHMvZGRyYXcvc3VyZmFjZV90aHVua3MuYywKCSAgZGxscy9kZHJhdy9zdXJmYWNlX3VzZXIuYywgZGxscy9kZHJhdy9zdXJmYWNlX3duZHByb2MuYzoKCUNocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCU1vdmVkIGRzdXJmYWNlIG9iamVjdCBmaWxlcyB0byBkZHJhdyByb290IGRpci4KCgkqIGRsbHMvZHNvdW5kL2NhcHR1cmUuYywgZGxscy9kc291bmQvdGVzdHMvY2FwdHVyZS5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUFkZCB0ZXN0cyB0byBjaGVjayBEaXJlY3RTb3VuZENhcHR1cmUgY3JlYXRpb24uCglGaXggZHNvdW5kL2NhcHR1cmUuYyB0byBwYXNzIHRlc3RzLgoKMjAwNS0wNi0wNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHByb2dyYW1zL2NtZGxndHN0L2NtZGxndHN0LmMsIHByb2dyYW1zL3JlZ2VkaXQvZWRpdC5jLAoJICBwcm9ncmFtcy9yZWdlZGl0L2ZyYW1ld25kLmMsIHByb2dyYW1zL3JlZ2VkaXQvbGlzdHZpZXcuYywKCSAgcHJvZ3JhbXMvcmVnZWRpdC9tYWluLmMsIHByb2dyYW1zL3JlZ2VkaXQvcmVnZWRpdC5jLAoJICBwcm9ncmFtcy9yZWdlZGl0L3JlZ3Byb2MuYywgcHJvZ3JhbXMvcmVnZWRpdC9yZWdwcm9jLmgsCgkgIHByb2dyYW1zL3JlZ2VkaXQvdHJlZXZpZXcuYywgcHJvZ3JhbXMvcmVnc3ZyMzIvcmVnc3ZyMzIuYywKCSAgcHJvZ3JhbXMvcnBjc3MvcnBjc3NfbWFpbi5jLCBwcm9ncmFtcy93aW5lZGJnL2RiZy55LAoJICBwcm9ncmFtcy93aW5ldGVzdC9tYWluLmMsIHByb2dyYW1zL3dpbmV0ZXN0L3NlbmQuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVzIGZvciAtV21pc3NpbmctZGVjbGFyYXRpb25zIGFuZCAtV3dyaXRlLXN0cmluZ3Mgd2FybmluZ3MuCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJSWYgYSBmb2xkZXIgaXMgc2VsZWN0ZWQgb24gT3BlbiB0aGVuIGJyb3dzZSBpbnRvIGl0LCBvdGhlcndpc2Ugd2UKCXNob3VsZCByZXR1cm4gdGhlIHBhdGggaW4gdGhlIGVkaXQgYm94IHdoZXRoZXIgdGhhdCBiZSBhIGZvbGRlciBvciBhCglmaWxlLgoJRG9uJ3QgYWRkIGV4dGVuc2lvbnMgdG8gYSBmb2xkZXIuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglGZWxpeCBOYXdvdGhuaWcgPGZlbGl4Lm5hd290aG5pZ0B0LW9ubGluZS5kZT4KCUZpeCBzb21lIG1pc3NlZCBpbnZhbGlkYXRpb25zIGFmdGVyIGNvbHVtbiByZXNpemUuCgoJKiBkbGxzL2NyeXB0MzIvZW5jb2RlLmMsIGRsbHMvY3J5cHQzMi90ZXN0cy9lbmNvZGUuYzoKCUp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCUltcGxlbWVudCBhc24uMSBkZWNvZGluZyBvZiBpbnRlZ2Vycywgd2l0aCB0ZXN0cy4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglVc2UgRFdMUF9NU0dSRVNVTFQgdG8gcmV0dXJuIHZhbHVlcyBmcm9tIHRoZSBkaWFsb2cgcHJvYy4KCgkqIGRsbHMvcWNhcC9NYWtlZmlsZS5pbiwgZGxscy9xY2FwL2NhcHR1cmUuaCwgZGxscy9xY2FwL3Y0bC5jLAoJICBkbGxzL3FjYXAvdmZ3Y2FwdHVyZS5jOgoJTWFhcnRlbiBMYW5raG9yc3QgPG0uYi5sYW5raG9yc3RAZ21haWwuY29tPgoJSW1wbGVtZW50ZWQgVmZ3Q2FwdHVyZSBpbnRlcmZhY2UuCgoJKiBkbGxzL21zaS9hY3Rpb24uaCwgZGxscy9tc2kvZGlhbG9nLmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWxsb3cgZGlhbG9nIGNvbnRyb2xzIHRvIHN1YnNjcmliZSB0byBpbnN0YWxsZXIgZXZlbnRzLgoKCSogZGxscy9kc291bmQvY2FwdHVyZS5jLCBkbGxzL2Rzb3VuZC9kc291bmQuc3BlYywKCSAgZGxscy9kc291bmQvZHNvdW5kX21haW4uYywgZGxscy9kc291bmQvZHNvdW5kX3ByaXZhdGUuaCwKCSAgZGxscy9kc291bmQvcHJvcHNldC5jLCBpbmNsdWRlL2Rzb3VuZC5oOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUZpbmlzaCBEaXJlY3RTb3VuZENhcHR1cmUvRGlyZWN0U291bmRDYXB0dXJlOCBzcGxpdC4KCUFkZCB0ZXN0cyB0byB2ZXJpZnkgc3BsaXQuCgoJKiBkbGxzL3F1YXJ0ei92aWRlb3JlbmRlcmVyLmM6IENocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCVJlbGVhc2UgY2xvY2sgb25seSB3aGVuIG9uZSBpcyBzZXQuCgoJKiBkbGxzL2NvbWN0bDMyL3RhYi5jOiBKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCS0gRmFjdG9yIG91dCBjb21tb24gdGV4dCBzaGlmdGluZyBsb2dpYy4KCS0gU2hpZnQgc2VsZWN0ZWQgdGFiIHRleHQgdXAgaW5zdGVhZCBvZiBkb3duLgoKCSogaW5jbHVkZS93aW5lcnJvci5oOiBKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglBZGRlZCBhIGJ1bmNoIG9mIGNyeXB0byBlcnJvciBjb2Rlcy4KCgkqIGRsbHMvbXNpL2Zvcm1hdC5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJTWFrZSBzdXJlIHRoZSBUUkFDRSBzdGF0ZW1lbnRzIGRvIG5vdCBzcGV3IGdhcmJhZ2UgYnkgdXNpbmcKCWRlYnVnc3RyX3duLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGcuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCVNlbmQgQ0ROX0ZPTERFUkNIQU5HRSB3aGVuZXZlciB3ZSBjaGFuZ2UgZm9sZGVyLgoKCSogZGxscy9tbGFuZy90ZXN0cy9NYWtlZmlsZS5pbjogSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglSZW1vdmUgbnRkbGwgZnJvbSBpbXBvcnRzLgoKCSogZGxscy9tc2kvZGlhbG9nLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVRha2UgdGhlIGRpYWxvZyBmcmFtZSBpbnRvIGFjY291bnQgd2hlbiBjYWxjdWxhdGluZyB0aGUgZGlhbG9nIHNpemUuCgoJKiBkbGxzL21zaS9hY3Rpb24uYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCVNpbmNlIG11bHRpcGxlIHByb2dpZHMgY2FuIHJlZmVyIHRvIDEgY2xhc3Mgd2UgbmVlZCB0byBjaGVjayBpZiB0aGF0CgljbGFzcyBpcyBpc250YWxsZWQgaW5zdGVhZCBvZiBqdXN0IHJlbHlpbmcgb24gaGF2aW5nIGl0IHNldCB0aGUKCUluc3RhbGxNZSB2YXJpYWJsZS4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL2RkcmF3L01ha2VmaWxlLmluLAoJICBkbGxzL2RkcmF3L2RkcmF3X2hhbC5jLCBkbGxzL2RkcmF3L2RkcmF3X21haW4uYywKCSAgZGxscy9kZHJhdy9kZHJhd190aHVua3MuYywgZGxscy9kZHJhdy9kZHJhd191c2VyLmM6CglDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglNb3ZlZCBkZHJhdyBvYmplY3QgZmlsZXMgdG8gZGRyYXcgcm9vdCBkaXIuCgoyMDA1LTA2LTAzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvZGRyYXcvTWFrZWZpbGUuaW4sCgkgIGRsbHMvZGRyYXcvY2xpcHBlci5jLCBkbGxzL2RkcmF3L3BhbGV0dGVfaGFsLmMsCgkgIGRsbHMvZGRyYXcvcGFsZXR0ZV9tYWluLmM6CglDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglNb3ZlZCBjbGlwcGVyIGFuZCBwYWxldHRlIG9iamVjdHMgZmlsZXMgdG8gZGRyYXcgcm9vdCBkaXIuCgoJKiB0b29scy93aW5lLmluZjogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUFkZGVkIGtleXMgdG8gaW5zdGFsbCBhbGwga25vd24gRFBsYXkgc2VydmljZSBwcm92aWRlcnMuCgoJKiBkbGxzL2NhcGkyMDMyL2NhcGkyMDMyLnNwZWM6IFRyb3kgUm9sbG8gPHdpbmVAdHJveS5yb2xsby5uYW1lPgoJUmVtb3ZlIENSIGNoYXJhY3RlcnMuCgoJKiBkbGxzL2NyeXB0MzIvY2VydC5jOiBKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglHZXQgcmlkIG9mIGEgbWFnaWMgbnVtYmVyLCBhbmQgaW1wcm92ZSBzdHVicyBvZgoJQ2VydE9wZW5TeXN0ZW1TdG9yZUEvVy4KCgkqIGRsbHMvY3J5cHQzMi9lbmNvZGUuYzogSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJUmVhcnJhbmdlIENyeXB0e0RlfEVufWNvZGVPYmplY3RFeCB0byBtYWtlIGVycm9yIGhhbmRsaW5nIG1vcmUKCW5hdHVyYWwuCgoJKiBwcm9ncmFtcy93aW5lZmlsZS93aW5lZmlsZS5jOiBNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJRml4IHBvc2l0aW9uIG9mIGNvbHVtbiBoZWFkZXIgbGFiZWxzLgoKCSogZGxscy9tc2kvbXNpLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglMb2NhdGUgd2hlcmUgYSBidWZmZXIgc2l6ZSBpcyBub3QgYmVpbmcgc2V0IGFuZCBjb3JyZWN0bHkgaGFuZGxlIHRoZQoJYnVmZmVyIHNpemUgY29udmVyc2lvbiBmcm9tIFcgdG8gQSAod2l0aCBoZWxwIGZyb20gUm9iZXJ0IFNoZWFybWFuKS4KCgkqIGRsbHMvbnRkbGwvbnQuYywgaW5jbHVkZS93aW50ZXJubC5oOgoJUGF1bCBWcmllbnMgPFBhdWwuVnJpZW5zQHhzNGFsbC5ubD4KCUNoYW5nZSBTWVNURU1fUFJPQ0VTU19JTkZPUk1BVElPTiB0byByZWZsZWN0IFcySy9XaW5YUC9XMkszIHN0cnVjdHVyZS4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQWRkIGluc3RhbGxfb25fZGVtYW5kIGZvciBFeHRlbnNpb24gc2VydmVycyBhbHNvLiBjdXJyZW50bHkgZGVmYXVsdGluZwoJdG8gVFJVRS4KCUV4dGVuc2lvbiBuZWVkIHRvIGhhdmUgMSB2ZXJiIHRvIG1hcmsgdGhlIGdpdmVuIHByb2dpZCB0byBiZQoJaW5zdGFsbGVkLgoKMjAwNS0wNi0wMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvb2xlMzIvdGVzdHMvbW9uaWtlci5jOiBSaWNoYXJkIENvaGVuIDxyaWNoYXJkQGRhaWpvYnUuY28udWs+CgktIERvbid0IGFzc3VtZSB0aGUgUk9UIGlzIGFscmVhZHkgZW1wdHkuCgktIFRlc3QgdGhhdCBJRW51bTo6Q2xvbmUgZG9lc24ndCBhbHNvIGRvIGEgUmVzZXQuCgoJKiBkbGxzL29sZTMyL21vbmlrZXIuYzogUmljaGFyZCBDb2hlbiA8cmljaGFyZEBkYWlqb2J1LmNvLnVrPgoJSUVudW06OkNsb25lIHNob3VsZG4ndCBkbyBhIFJlc2V0LgoKCSogZGxscy9tc2kvYWN0aW9uLmMsIGRsbHMvbXNpL2FjdGlvbi5oOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCURvIG5vdCBsb29wIGlmIGEgUHJvZ0lkJ3MgUGFyZW50IEluZGV4IGl0IGl0c2VsZi4KCUFkZCBhIFZlcnNpb25JbmRJbmRleCBmb3IgdHJhY2tpbmcgdmVyc2lvbiBpbmRlcGVuZGVudCBmaWVsZHMgZm9yIHRoZQoJUHJvZ0lkcyBwcm9wZXJseS4KCgkqIGRsbHMvbXNkbW8vZG1vcmVnLmM6IE1hcmN1cyBNZWlzc25lciA8bWVpc3NuZXJAc3VzZS5kZT4KCURyb3AgZHVwbGljYXRlIGRlZmluaXRpb24gb2YgSUlEX0lFbnVtRE1PLgoKCSogZGxscy9vbGUzMi90ZXN0cy9tb25pa2VyLmM6IFJpY2hhcmQgQ29oZW4gPHJpY2hhcmRAZGFpam9idS5jby51az4KCUFkZGVkIHRlc3RzIGZvciBmaWxlIG1vbmlrZXJzLgoKCSogZGxscy9vbGUzMi9maWxlbW9uaWtlci5jOiBSaWNoYXJkIENvaGVuIDxyaWNoYXJkQGRhaWpvYnUuY28udWs+CgktIEJhc2UgRmlsZU1vbmlrZXJJbXBsX1NhdmUoKSBvbiBYUC4KCS0gQ29ycmVjdCBoYW5kbGluZyBvZiBVbmljb2RlIHN0cmluZ3MgJiBtdWx0aWJ5dGUgbG9jYWxlcy4KCS0gTW9yZSBlcnJvciBjaGVja2luZy4KCS0gQ2hhbmdlIEVSUiB0byBXQVJOLgoJLSBNYXRjaCBXaW5kb3dzIHF1aWNrICYgZGlydHkgZXN0aW1hdGUgZm9yIEdldFNpemVNYXgoKS4KCgkqIGRsbHMvbXNpL2RpYWxvZy5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglVc2UgTVNJX1F1ZXJ5R2V0UmVjb3JkIGluIG9uZSBtb3JlIHBsYWNlLgoKCSogaW5jbHVkZS93aW5jcnlwdC5oOiBKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglBZGRlZCBhIGNvdXBsZSBtaXNzaW5nIHByb3RvdHlwZXMuCgoJKiBkbGxzL21zaS9hY3Rpb24uYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCVByaW50IGEgbWVzc2FnZSBmb3Igc2tpcHBlZCBhY3Rpb25zIGluIFByb2Nlc3NFeGVjU2VxdWVuY2UgbGlrZSBpbiB0aGUKCVVJU2VxdWVuY2UuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmMsIGRsbHMvc2hlbGwzMi90ZXN0cy9zaGVsbHBhdGguYzoKCUp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCVNldCBkZWZhdWx0IGZvciAiTXkgRG9jdW1lbnRzIiB0byAkSE9NRSwgYW5kICJEZXNrdG9wIiB0byB+L0Rlc2t0b3AuCgoJKiBkbGxzL21zaS9hY3Rpb24uYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCURvIG5vdCBjaGFuZ2UgYSBmZWF0dXJlcyBzdGF0ZSB0byBBZHZlcnRpc2UgaWYgaXQgZXhwbGljaXRseSBkaXNhbGxvd3MKCWl0LgoKCSogZGxscy9tc2kvYWN0aW9uLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglGb3IgdHlwZWxpYnMgaW5kZXggMSBkbyBub3QgYWRkIFxcMSB0byB0aGUgcGF0aC4gVGhpcyBjbGVhbnMgdXAKCXJlZ2lzdHJ5IGRpZmZzIHdpdGggbmF0aXZlIE1TSS4KCgkqIHByb2dyYW1zL3dpbmVjZmcvYXBwZGVmYXVsdHMuYywgcHJvZ3JhbXMvd2luZWNmZy9hdWRpby5jLAoJICBwcm9ncmFtcy93aW5lY2ZnL2RyaXZlLmMsIHByb2dyYW1zL3dpbmVjZmcvZHJpdmVkZXRlY3QuYywKCSAgcHJvZ3JhbXMvd2luZWNmZy9kcml2ZXVpLmMsIHByb2dyYW1zL3dpbmVjZmcvbGlicmFyaWVzLmMsCgkgIHByb2dyYW1zL3dpbmVjZmcvbWFpbi5jLCBwcm9ncmFtcy93aW5lY2ZnL3dpbmVjZmcuYywKCSAgcHJvZ3JhbXMvd2luZWNmZy93aW5lY2ZnLmgsIHByb2dyYW1zL3dpbmVjZmcveDExZHJ2ZGxnLmMsCgkgIHByb2dyYW1zL3dpbmVtZW51YnVpbGRlci93aW5lbWVudWJ1aWxkZXIuYywgcHJvZ3JhbXMvd2luZW1pbmUvbWFpbi5jLAoJICBwcm9ncmFtcy93aW5ldGVzdC9ndWkuYywgcHJvZ3JhbXMvd2luaGVscC9tYWNyby5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4ZXMgZm9yIC1XbWlzc2luZy1kZWNsYXJhdGlvbnMgYW5kIC1Xd3JpdGUtc3RyaW5ncyB3YXJuaW5ncy4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJUmVnaXN0ZXIgdGhlIEZpbGVUeXBlIGFuZCBjb3JyZWN0IHNob3J0IHZzIGxvbmcgcGF0aCBwcm9ibGVtcyB3aXRoCglJbnByb2NTZXJ2ZXIzMi4gQWxzbyBhZGQgaW5zdGFsbF9vbl9kZW1hbmQgYm9vbGVhbiBmb3IgZnV0dXJlCglleHBhbnNpb24uCgoJKiBwcm9ncmFtcy93aW5lY2ZnL0RlLnJjLCBwcm9ncmFtcy93aW5lY2ZnL3dpbmVjZmcucmMsCgkgIHByb2dyYW1zL3dpbmVmaWxlL0RlLnJjOgoJSGVubmluZyBHZXJoYXJkdCA8aGVubmluZy5nZXJoYXJkdEB3ZWIuZGU+CglVcGRhdGUgR2VybWFuIHJlc291cmNlIGZpbGVzLgoKCSogZGxscy91c2VyL21lc3NhZ2UuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVVwZGF0ZSBpbnRlcm5hbCBzdGF0ZSBvbmx5IGlmIHRoZSBtZXNzYWdlIGlzIGJlaW5nIHJlbW92ZWQuCgoJKiBkbGxzL01ha2VmaWxlLmluOgoJVGVtcCBoYWNrIHRvIGNsZWFuIHVwIC5kZWYgZmlsZXMgYW5kIGhvcGVmdWxseSBhdm9pZCBtb3JlIGJ1ZwoJcmVwb3J0cyBhYm91dCBmYWlsZWQgYnVpbGRzLgoKCSogZGxscy9jcnlwdDMyL2VuY29kZS5jLCBkbGxzL2NyeXB0MzIvdGVzdHMvLmN2c2lnbm9yZSwKCSAgZGxscy9jcnlwdDMyL3Rlc3RzL01ha2VmaWxlLmluLCBkbGxzL2NyeXB0MzIvdGVzdHMvZW5jb2RlLmMsCgkgIGluY2x1ZGUvd2luY3J5cHQuaDoKCUp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCS0gYWRkIHNvbWUgdGVzdHMgZm9yIE9JRCBmdW5jdGlvbnMKCS0gaW1wbGVtZW50IGVuY29kaW5nIGludGVnZXJzCgoJKiBkbGxzL2RkcmF3L2RkcmF3X3ByaXZhdGUuaDogQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJTWVyZ2VkIHJlbWFpbmluZyBoZWFkZXIgZmlsZXMgaW4gRGlyZWN0RHJhdyBvYmplY3RzIGZvbGRlcnMgaW50bwoJZGRyYXdfcHJpdmF0ZS5oLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvbG9jYWxlLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2Ugc3VyZSB0aGF0IHVudXNlZCBjb2RlIGdldHMgY29tcGlsZWQgdG8gYXZvaWQgd2FybmluZ3MuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBkbGxzL2tlcm5lbC92b2x1bWUuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgc3R1YnMgZm9yIEdldFZvbHVtZVBhdGhOYW1lKEEsVykuCgoJKiBsb2FkZXIvcHJlbG9hZGVyLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRWxmMzJfYXV4dl90LmFfdW4uYV9wdHIgbm8gbG9uZ2VyIGV4aXN0cyBpbiBIRUFEIGdsaWJjIENWUywgdXNlCglhX3ZhbC4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jLCBkbGxzL21zaS9jdXN0b20uYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVVzZSB0aGUgbmV3IGhlbHBlciBmdW5jdGlvbiBNU0lfUXVlcnlHZXRSZWNvcmQuCgoJKiBkbGxzL21zaS9kaWFsb2cuYywgZGxscy9tc2kvbXNpcHJpdi5oLCBkbGxzL21zaS9tc2lxdWVyeS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQ3JlYXRlIGEgaGVscGVyIGZ1bmN0aW9uIHRvIGZldGNoIGEgc2luZ2xlIHJlY29yZCBmcm9tIGEgcXVlcnkuCgoJKiBwcm9ncmFtcy93aW5lYm9vdC93aW5lYm9vdC5jOiBKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglQcmludCBjb21tYW5kIHRoYXQgZmFpbHMgdG8gbWFrZSBlcnJvciBtZXNzYWdlIGEgbGl0dGxlIG1vcmUKCWNvbXByZWhlbnNpYmxlLgoKCSogZGxscy9kc291bmQvTWFrZWZpbGUuaW4sIGRsbHMvZHNvdW5kL2NhcHR1cmUuYywgZGxscy9kc291bmQvZHVwbGV4LmM6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJTW92ZSBGdWxsRHVwbGV4IGNvZGUgZnJvbSBjYXB0dXJlLmMgdG8gZHVwbGV4LmMuCgoJKiBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL3NubXAuaDogSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJQWRkZWQgc25tcC5oLgoKMjAwNS0wNi0wMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvd2luMzJzL3czMnNrZXJuZWwuYzogQXZvaWQgZGVwZW5kZW5jeSBvbiB0aHJlYWQuaC4KCgkqIGRsbHMvZHNvdW5kL3Byb3BzZXQuYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUZpeCBwcm9wZXJ0eSBzZXQgZGVzY3JpcHRpb24gZm9yIG1vcmUgdGhhbiBvbmUgY2FwdHVyZSBkZXZpY2UgYnVnLgoJQWRkIGJldHRlciB0cmFjZXMgbWVzc2FnZXMuCgoJKiBkbGxzL2Rtc3ludGgvZG1zeW50aF9tYWluLmMsIGRsbHMvZG1zeW50aC9kbXN5bnRoX3ByaXZhdGUuaCwKCSAgZGxscy9kbXN5bnRoL3N5bnRoLmMsIGRsbHMvZG1zeW50aC9zeW50aHNpbmsuYywgZGxscy9kbXVzaWMvYnVmZmVyLmMsCgkgIGRsbHMvZG11c2ljL2Nsb2NrLmMsIGRsbHMvZG11c2ljL2NvbGxlY3Rpb24uYywgZGxscy9kbXVzaWMvZG11c2ljLmMsCgkgIGRsbHMvZG11c2ljL2RtdXNpY19tYWluLmMsIGRsbHMvZG11c2ljL2RtdXNpY19wcml2YXRlLmgsCgkgIGRsbHMvZG11c2ljL2Rvd25sb2FkLmMsIGRsbHMvZG11c2ljL2Rvd25sb2FkZWRpbnN0cnVtZW50LmMsCgkgIGRsbHMvZG11c2ljL2luc3RydW1lbnQuYywgZGxscy9kbXVzaWMvcG9ydC5jLAoJICBkbGxzL2RtdXNpYy9wb3J0ZG93bmxvYWQuYywgZGxscy9kbXVzaWMvdGhydS5jLAoJICBkbGxzL2RwbGF5eC9kcGNsYXNzZmFjdG9yeS5jLCBkbGxzL2RwbGF5eC9kcGxheS5jLAoJICBkbGxzL2RwbGF5eC9kcGxheV9nbG9iYWwuaCwgZGxscy9kcGxheXgvZHBsYXlzcC5jLAoJICBkbGxzL2RwbGF5eC9kcGxvYmJ5LmMsIGRsbHMvZHBsYXl4L2xvYmJ5c3AuYywgZGxscy9kcG5ldC9hZGRyZXNzLmMsCgkgIGRsbHMvZHBuZXQvY2xpZW50LmMsIGRsbHMvZHBuZXQvZHBuZXRfbWFpbi5jLAoJICBkbGxzL2RwbmV0L2RwbmV0X3ByaXZhdGUuaCwgZGxscy9kc291bmQvYnVmZmVyLmMsCgkgIGRsbHMvZHNvdW5kL2NhcHR1cmUuYywgZGxscy9kc291bmQvZHNvdW5kLmMsCgkgIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmMsIGRsbHMvZHNvdW5kL2Rzb3VuZF9wcml2YXRlLmgsCgkgIGRsbHMvZHNvdW5kL3ByaW1hcnkuYywgZGxscy9kc291bmQvcHJvcHNldC5jLCBkbGxzL2Rzb3VuZC9zb3VuZDNkLmMsCgkgIGRsbHMvZHN3YXZlL2Rzd2F2ZS5jLCBkbGxzL2Rzd2F2ZS9kc3dhdmVfbWFpbi5jLAoJICBkbGxzL2Rzd2F2ZS9kc3dhdmVfcHJpdmF0ZS5oLCBkbGxzL2R4ZGlhZ24vY29udGFpbmVyLmMsCgkgIGRsbHMvZHhkaWFnbi9keGRpYWdfbWFpbi5jLCBkbGxzL2R4ZGlhZ24vZHhkaWFnX3ByaXZhdGUuaCwKCSAgZGxscy9keGRpYWduL3Byb3ZpZGVyLmMsIGRsbHMvaXRzcy9pdHNzLmMsIGRsbHMvaXRzcy9tb25pa2VyLmMsCgkgIGRsbHMvaXRzcy9zdG9yYWdlLmMsIGRsbHMvbWFwaTMyL3Byb3AuYywgZGxscy9tbGFuZy9tbGFuZy5jLAoJICBkbGxzL21zZG1vL2Rtb3JlZy5jLCBkbGxzL21zaHRtbC9odG1sZG9jLmMsCgkgIGRsbHMvbXNodG1sL21zaHRtbF9wcml2YXRlLmgsIGRsbHMvbXNodG1sL29sZW9iai5jLAoJICBkbGxzL21zaHRtbC9wZXJzaXN0LmMsIGRsbHMvbXNodG1sL3ZpZXcuYywgZGxscy9tc2kvbXNpLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJTWFrZSBtb3JlIG9mIHRoZSBPTEUgaW50ZXJmYWNlIHZ0YWJsZXMgY29uc3QuCgoJKiBkbGxzL2RkcmF3L2QzZF9wcml2YXRlLmg6IENocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCU1lcmdlZCBkM2RkZXZpY2UvbWFpbi5oIGFuZCBkaXJlY3QzZC9tYWluLmggaW50byBkM2RfcHJpdmF0ZS5oLgoJRml4ZWQgVGh1bmtfSURpcmVjdDNESW1wbF8yX0NyZWF0ZVZpZXdwb3J0LgoKCSogaW5jbHVkZS9jb21tY3RybC5oOiBEaW1pIFBhdW4gPGRpbWlAbGF0dGljYS5jb20+CglNaW5vciBmb3JtYXR0dGluZyBmaXhlcy4KCgkqIGluY2x1ZGUvd2ludXNlci5oOiBEaW1pIFBhdW4gPGRpbWlAbGF0dGljYS5jb20+CglBZGQgZGVmaW5pdGlvbnMgZm9yIElEVFJZQUdBSU4gYW5kIElEQ09OVElOVUUuCgoJKiBkbGxzL3dpbnRydXN0L3dpbnRydXN0LnNwZWMsIGRsbHMvd2ludHJ1c3Qvd2ludHJ1c3RfbWFpbi5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWRkIHN0dWJzIGFuZCBzdHViIGltcGxlbWVudGF0aW9ucy4KCgkqIGluY2x1ZGUvd2ludHJ1c3QuaDogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRGVmaW5lIHNvbWUgZnVuY3Rpb25zIGFuZCBzdHJ1Y3R1cmVzLgoKCSogZGxscy9tc2kvZGlhbG9nLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggaGFuZGxpbmcgb2YgY2hlY2tib3ggcHJvcGVydGllcy4KCgkqIGRsbHMveDExZHJ2L2Rlc2t0b3AuYywgZGxscy94MTFkcnYvZXZlbnQuYywgZGxscy94MTFkcnYvaW5pdC5jLAoJICBkbGxzL3gxMWRydi94MTFkcnYuaCwgZGxscy94MTFkcnYveDExZHJ2X21haW4uYzoKCVVzZSBzdGFuZGFyZCBUTFMgZnVuY3Rpb25zIGluc3RlYWQgb2YgYSBURUIgaW50ZXJuYWwgZmllbGQgdG8gYWNjZXNzCglwZXItdGhyZWFkIGRhdGEuCgoJKiBkbGxzL2dkaS9nZGlfbWFpbi5jOiBBbHdheXMgbG9hZCAxNi1iaXQgZ2RpLmV4ZSBhdCBpbml0IHRpbWUuCgoJKiBkbGxzL3NldHVwYXBpL3BhcnNlci5jOgoJUmV2ZXJ0IHByZXZpb3VzIGNoYW5nZSwgaXQgc2hvdWxkbid0IGJlIG5lY2Vzc2FyeSAocmVwb3J0ZWQgYnkgUm9iCglTaGVhcm1hbikuCgoJKiBkbGxzL3NoZWxsMzIvdGVzdHMvc2hlbGxsaW5rLmMsIGRsbHMvc2hlbGwzMi90ZXN0cy9zaGxmaWxlb3AuYywKCSAgZGxscy9zaGVsbDMyL3Rlc3RzL3NobGZvbGRlci5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRWxpbWluYXRlIHNvbWUgLVd3cml0ZS1zdHJpbmdzIHdhcm5pbmdzLgoKCSogZGxscy9ycGNydDQvbmRyX21hcnNoYWxsLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gSW1wcm92ZSB0cmFjaW5nLgoJLSBJbXBsZW1lbnQgRkNfVVAgYW5kIHBhcnRpYWxseSBGQ19PUC4KCS0gRG9uJ3QgbmVlZGxlc3NseSBtYXJzaGFsIDQgYnl0ZXMgaW4gTmRyUG9pbnRlciouCgoJKiBkbGxzL29sZWF1dDMyL3RtYXJzaGFsLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUlmIHdlIGFyZSBhY2Nlc3NpbmcgYSBtZXRob2QgZnJvbSBhIHN1cGVyY2xhc3MgdGhlbiB3ZSBuZWVkIHRvIHVzZSB0aGUKCXN1cGVyY2xhc3MncyBJVHlwZUluZm8gb3RoZXJ3aXNlIHdlIGNvdWxkIGdldCBlcnJvcnMgd2hlbiBhY2Nlc3NpbmcKCWhyZWZ0eXBlcyB0aGF0IGFyZW4ndCBwcmVzZW50IGluIHRoZSBzdWJjbGFzcy4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIEZpeCB0aGUgcmV0dXJuIHZhbHVlcyBmcm9tIFF1ZXJ5UGF0aE9mUmVnVHlwZUxpYi4KCS0gT3BlbiByZWdpc3RyeSBrZXkgd2l0aCBsZWFzdCBhY2Nlc3MgcmlnaHRzIG5lY2Vzc2FyeS4KCS0gRG9jdW1lbnRhdGlvbiB1cGRhdGVzLgoKCSogZGxscy9vbGVhdXQzMi9kaXNwYXRjaC5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglEaXNwSW52b2tlIGlzIGNvcnJlY3Qgc28gdGhlcmUgaXMgbm8gbmVlZCB0byBwcmludCBhIGZpeG1lLgoKCSogZGxscy9tc2kvZm9ybWF0LmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUNsZWFuIHVwIGhlYWRlcnMgYW5kIG1ha2Ugc29tZSBmdW5jdGlvbnMgc3RhdGljLgoKCSogZGxscy9tc3ZpZGVvL2RyYXdkaWIuYzogUmljaGFyZCBDb2hlbiA8cmljaGFyZEBkYWlqb2J1LmNvLnVrPgoJLSBBZGQgc3RhdGljLCBjb25zdC4KCS0gRG9uJ3QgY2hhbmdlIHRoZSBwYXNzZWQgaW4gYml0bWFwIGhlYWRlci4KCgkqIGRsbHMvbXNpL21zaXByaXYuaDogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJLSBhdm9pZCB1bmljb2RlLmgKCS0gYWRkIGEgbWlzc2luZyBmdW5jdGlvbiBwcm90b3R5cGUKCjIwMDUtMDUtMzEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3VzZXIvdGVzdHMvd2luLmM6IEphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglBZGRlZCB0ZXN0IGNhc2UgZm9yIGluZmluaXRlIGxvb3BzIG9uIFJEV19SRURSQVdOT1cuCgoJKiBkbGxzL3VzZXIvcGFpbnRpbmcuYywgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLAoJICBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvdHJhY2UuYywgc2VydmVyL3dpbmRvdy5jOgoJQWRkZWQgYSBmcm9tX2NoaWxkIHBhcmFtZXRlciB0byB0aGUgZ2V0X3VwZGF0ZV9yZWdpb24gcmVxdWVzdCB0byBhbGxvdwoJcmVzdGFydGluZyB0aGUgc2VhcmNoIGZyb20gYSBnaXZlbiBjaGlsZCwgaW4gb3JkZXIgdG8gYXZvaWQgbG9vcGluZwoJZm9yZXZlciBvbiB3aW5kb3dzIHRoYXQgZG9uJ3QgcmVwYWludCBjb3JyZWN0bHkuCgoJKiBkbGxzL3NldHVwYXBpL3BhcnNlci5jOiBTa2lwIHRoZSBVbmljb2RlIHNpZ25hdHVyZSBpZiBwcmVzZW50LgoKCSogZGxscy9rZXJuZWwvaW5zdHIuYzogSXZhbiBMZW8gUHVvdGkgPGl2YW5sZW9AZ21haWwuY29tPgoJQWRkZWQgSURUIGVtdWxhdGlvbi4KCgkqIGRsbHMvbnRkbGwvZGlyZWN0b3J5LmM6IERldGxlZiBSaWVrZW5iZXJnIDx3aW5lLmRldkB3ZWIuZGU+CglNYXJrIGxpbmtzIHRvIGRpciB3aXRoIEZJTEVfQVRUUklCVVRFX1JFUEFSU0VfUE9JTlQsIHNvIG1vZGVybgoJYXBwbGljYXRpb25zIGNhbiB1c2UgdGhpcyBhZGRpdGlvbmFsIGluZm9ybWF0aW9uLgoKCSogZGxscy9hZHZhcGkzMi9hZHZhcGkuYywgZGxscy9hZHZhcGkzMi9hZHZhcGkzMi5zcGVjLAoJICBkbGxzL2tlcm5lbC9wcm9maWxlLmMsIGRsbHMvbnRkbGwvcnRsc3RyLmMsIGluY2x1ZGUvd2luYmFzZS5oLAoJICBpbmNsdWRlL3dpbnRlcm5sLmg6CglGaXhlZCBSdGxJc1RleHRVbmljb2RlIHByb3RvdHlwZSwgYW5kIG1hZGUgaXQgcHJvcGVybHkgdGFrZSBpbnRvCglhY2NvdW50IHRoZSByZXN1bHRzIG9mIHRoZSB0ZXN0cyB0byBkZXRlcm1pbmUgdGhlIHJldHVybiB2YWx1ZS4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaDogQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJVFZfSVRFTSBpcyB0aGUgb2xkIG5hbWUgb2YgVFZJVEVNLCBzaG91bGRuJ3QgYmUgdXNlZCBhbnkgbW9yZS4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jLCBkbGxzL21zaS9xdWVyeS5oOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlIHNvbWUgdW51c2VkIGNvZGUuCgoJKiBkbGxzL3dpbnNwb29sL01ha2VmaWxlLmluOiBSZW1vdmUgaW1wb3J0IGxpYiBvbiBtYWtlIGNsZWFuLgoKCSogZGxscy93aW5lcHMvTWFrZWZpbGUuaW46CglGaXhlZCBpbnN0YWxsIHJ1bGUgKHJlcG9ydGVkIGJ5IFZpbmNlbnQgQulyb24pLgoKCSogZGxscy92ZXJzaW9uL3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMvdmVyc2lvbi90ZXN0cy9NYWtlZmlsZS5pbiwKCSAgZGxscy92ZXJzaW9uL3Rlc3RzL2luZm8uYywgZGxscy92ZXJzaW9uL3Rlc3RzL3ZlcnNpb24ucmM6CglTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCVRlc3QgR2V0RmlsZVZlcnNpb25JbmZvU2l6ZUEgd2l0aCBleGVjdXRhYmxlcy4KCgkqIGRsbHMvZGRyYXcvTWFrZWZpbGUuaW4sIGRsbHMvZGRyYXcvY29udmVydC5jLAoJICBkbGxzL2RkcmF3L2RkcmF3X3V0aWxzLmMsIGRsbHMvZGRyYXcvaGVscGVyLmMsCgkgIGRsbHMvZGRyYXcvc3RydWN0X2NvbnZlcnQuYzoKCUNocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCU1lcmdlZCBjb252ZXJ0LmMsIHN0cnVjdF9jb252ZXJ0LmMgYW5kIGhlbHBlci5jIGludG8gZGRyYXdfdXRpbHMuYy4KCgkqIGRsbHMvbnRkbGwvc2VjLmM6IEV2YW4gRGVhdWJsIDx3aW5lQHdhcnBlZHZpZXcuY29tPgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBJbXBsZW1lbnQgUnRsR2V0Q29udHJvbFNlY3VyaXR5RGVzY3JpcHRvci4KCS0gRml4IE50QWNjZXNzQ2hlY2sgc28gaXQgd29ya3Mgd2l0aCByZWxhdGl2ZSBTRUNVUklUWV9ERVNDUklQVE9Scy4KCgkqIGRsbHMvY3J5cHQzMi9jcnlwdDMyLnNwZWMsIGRsbHMvY3J5cHQzMi9lbmNvZGUuYywKCSAgZGxscy9jcnlwdDMyL21haW4uYzoKCUp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCS0gaW1wbGVtZW50IENyeXB0e0dldHxTZXR9T0lERnVuY3Rpb25WYWx1ZQoJLSBmaXggYnVnIGFuZCBtZW1vcnkgbGVhayBpbiBsYXN0IHBhdGNoCgoJKiBkbGxzL2Rzb3VuZC9idWZmZXIuYywgZGxscy9kc291bmQvZHNvdW5kLmMsCgkgIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmMsIGRsbHMvZHNvdW5kL2Rzb3VuZF9wcml2YXRlLmgsCgkgIGRsbHMvZHNvdW5kL21peGVyLmMsIGRsbHMvZHNvdW5kL3ByaW1hcnkuYywgZGxscy9kc291bmQvc291bmQzZC5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUFkZCBtdWx0aXBsZSBESVJFQ1RTT1VORCBvYmplY3Qgc3VwcG9ydCAobXVsdGlwbGUgc291bmQgY2FyZHMgY2FuIHBsYXkKCWF0IHRoZSBzYW1lIHRpbWUpLgoJRml4IENvQ3JlYXRlSW5zdGFuY2Ugd2hlbiBubyBzb3VuZCBjYXJkIGlzIHByZXNlbnQuCglGaXggY3JlYXRlIGJ1ZyBmb3VuZCBieSBNaWtlIEhlYXJuLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvZHJpdmUuYywgZGxscy9rZXJuZWwvdGVzdHMvZm9ybWF0X21zZy5jLAoJICBkbGxzL2tlcm5lbC90ZXN0cy9sb2NhbGUuYywgZGxscy9rZXJuZWwvdGVzdHMvcGF0aC5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJU29tZSB3YXJuaW5nIGZpeGVzIGZvciB0aGUgcmVncmVzc2lvbiB0ZXN0cy4KCgkqIGRsbHMvbXNpL2RhdGFiYXNlLmMsIGRsbHMvbXNpL2RpYWxvZy5jLCBkbGxzL21zaS9ldmVudHMuYywKCSAgZGxscy9tc2kvbXNpcHJpdi5oLCBkbGxzL21zaS9tc2lxdWVyeS5jLCBkbGxzL21zaS9wYWNrYWdlLmMsCgkgIGRsbHMvbXNpL3JlY29yZC5jLCBkbGxzL21zaS90YWJsZS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJTW9yZSAtV21pc3NpbmctZGVjbGFyYXRpb25zIGFuZCAtV3dyaXRlLXN0cmluZ3Mgd2FybmluZyBmaXhlcy4KCgkqIGRsbHMvbXNpL3NxbC55OiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglJbXByb3ZlIG51bWJlciBwYXJzaW5nIGFuZCBhdm9pZCB1bmljb2RlLmguCgoyMDA1LTA1LTMwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9udGRsbC9kaXJlY3RvcnkuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCU9uIHNvbWUgc3lzdGVtcyAobGludXggMi42LjgpIEFGUyBmYWlscyB0byBzZXQgZF9yZWNsZW4gdG8gMCBvciBkb2VzCglub3Qgc3VwcG9ydCBWRkFUX0lPQ1RMX1JFQURESVJfQk9USCBidXQgcmV0dXJucyAwIChzdWNjZXNzKSBhbnl3YXkuIFNvCglzZXQgZF9yZWNsZW4gdG8gNjU1MzUgKGFuIGltcG9zc2libGUgdmFsdWUpIGJlZm9yZSB0aGUgaW9jdGwoKSBhbmQKCWNoZWNrIGl0IGFmdGVyd2FyZHMgdG8gd29yayBhcm91bmQgdGhpcyBidWcuCgoJKiBkbGxzL21zaS9pbnNlcnQuYywgZGxscy9tc2kvcXVlcnkuaCwgZGxscy9tc2kvc3FsLnk6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglSZW1vdmUgbW9yZSB0eXBlcyBmcm9tIHRoZSBwYXJzZXIuCgoJKiBkbGxzL21zaS9tc2kuYywgZGxscy9tc2kvc3VtaW5mby5jLCBpbmNsdWRlL21zaS5oLAoJICBpbmNsdWRlL21zaXF1ZXJ5Lmg6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBZGQgYW5kIGNvcnJlY3Qgc29tZSBmdW5jdGlvbiBkZWNsYXJhdGlvbnMuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYywgZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmg6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQWRkIHN1cHBvcnQgZm9yIG1vcmUgdGhhbiAyIGF1ZGlvIGNoYW5uZWxzLgoKCSogZGxscy9kZHJhdy90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL2RkcmF3L3Rlc3RzL01ha2VmaWxlLmluLAoJICBkbGxzL2RkcmF3L3Rlc3RzL2RzdXJmYWNlLmM6CglBbnRvaW5lIENoYXZhc3NlIDxhLmNoYXZhc3NlQGdtYWlsLmNvbT4KCS0gSW1wbGVtZW50ZWQgdGhlIGltcGxpY2l0IGNyZWF0aW9uIG9mIG1pcG1hcHMgZm9yIHN1cmZhY2VzIHRoYXQgaGF2ZQoJICBERFNDQVBTX0NPTVBMRVgsIEREU0NBUFNfTUlQTUFQIGFuZCBmb3Igd2hpY2ggdGhlIG1pcG1hcCBjb3VudCBpcwoJICBub3Qgc3BlY2lmaWVkLgoJLSBJbXBsZW1lbnRlZCB0ZXN0IGNhc2VzIGZvciBtaXBtYXAgdGV4dHVyZXMgY3JlYXRpb24uCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IEtvdWppIFNhc2FraSA8dGFyby14QGp1c3RzeXN0ZW0uY28uanA+CglBZGRlZCB0aGUgZmVhdHVyZSB0byBjaGFuZ2Ugcm93IGhlaWdodCBpbiBvd25lciBkcmF3IGNvbnRyb2xzLgoKCSogZGxscy91c2VyL2VkaXQuYzogS291amkgU2FzYWtpIDx0YXJvLXhAanVzdHN5c3RlbS5jby5qcD4KCUNvcnJlY3RlZCB0aGUgZGV0ZXJtaW5hdGlvbiBvZiBjYXB0dXJpbmcgaW5zaWRlIEVESVRfV01fTW91c2VNb3ZlCglmdW5jdGlvbi4KCgkqIGRsbHMvZGV2ZW51bS9jcmVhdGVkZXZlbnVtLmMsIGRsbHMvZGV2ZW51bS9kZXZlbnVtX3ByaXZhdGUuaCwKCSAgZGxscy9kZXZlbnVtL2ZhY3RvcnkuYywgZGxscy9kZXZlbnVtL21lZGlhY2F0ZW51bS5jLAoJICBkbGxzL2RldmVudW0vcGFyc2VkaXNwbGF5bmFtZS5jLCBkbGxzL2RpbnB1dC9kZXZpY2VfcHJpdmF0ZS5oLAoJICBkbGxzL2RpbnB1dC9kaW5wdXRfbWFpbi5jLCBkbGxzL2RpbnB1dC9kaW5wdXRfcHJpdmF0ZS5oLAoJICBkbGxzL2RpbnB1dC9qb3lzdGlja19saW51eC5jLCBkbGxzL2RpbnB1dC9qb3lzdGlja19saW51eGlucHV0LmMsCgkgIGRsbHMvZGlucHV0L2tleWJvYXJkLmMsIGRsbHMvZGlucHV0L21vdXNlLmMsIGRsbHMvZG1iYW5kL2JhbmQuYywKCSAgZGxscy9kbWJhbmQvYmFuZHRyYWNrLmMsIGRsbHMvZG1iYW5kL2RtYmFuZF9tYWluLmMsCgkgIGRsbHMvZG1iYW5kL2RtYmFuZF9wcml2YXRlLmgsIGRsbHMvZG1jb21wb3MvY2hvcmRtYXAuYywKCSAgZGxscy9kbWNvbXBvcy9jaG9yZG1hcHRyYWNrLmMsIGRsbHMvZG1jb21wb3MvY29tcG9zZXIuYywKCSAgZGxscy9kbWNvbXBvcy9kbWNvbXBvc19tYWluLmMsIGRsbHMvZG1jb21wb3MvZG1jb21wb3NfcHJpdmF0ZS5oLAoJICBkbGxzL2RtY29tcG9zL3NpZ25wb3N0dHJhY2suYywgZGxscy9kbWltZS9hdWRpb3BhdGguYywKCSAgZGxscy9kbWltZS9kbWltZV9tYWluLmMsIGRsbHMvZG1pbWUvZG1pbWVfcHJpdmF0ZS5oLAoJICBkbGxzL2RtaW1lL2dyYXBoLmMsIGRsbHMvZG1pbWUvbHlyaWNzdHJhY2suYywKCSAgZGxscy9kbWltZS9tYXJrZXJ0cmFjay5jLCBkbGxzL2RtaW1lL3BhcmFtY29udHJvbHRyYWNrLmMsCgkgIGRsbHMvZG1pbWUvcGF0dGVybnRyYWNrLmMsIGRsbHMvZG1pbWUvcGVyZm9ybWFuY2UuYywKCSAgZGxscy9kbWltZS9zZWdtZW50LmMsIGRsbHMvZG1pbWUvc2VnbWVudHN0YXRlLmMsCgkgIGRsbHMvZG1pbWUvc2VndHJpZ2dlcnRyYWNrLmMsIGRsbHMvZG1pbWUvc2VxdHJhY2suYywKCSAgZGxscy9kbWltZS9zeXNleHRyYWNrLmMsIGRsbHMvZG1pbWUvdGVtcG90cmFjay5jLAoJICBkbGxzL2RtaW1lL3RpbWVzaWd0cmFjay5jLCBkbGxzL2RtaW1lL3Rvb2wuYywgZGxscy9kbWltZS93YXZldHJhY2suYywKCSAgZGxscy9kbWxvYWRlci9jbGFzc2ZhY3RvcnkuYywgZGxscy9kbWxvYWRlci9jb250YWluZXIuYywKCSAgZGxscy9kbWxvYWRlci9kbWxvYWRlcl9wcml2YXRlLmgsIGRsbHMvZG1sb2FkZXIvbG9hZGVyLmMsCgkgIGRsbHMvZG1sb2FkZXIvbG9hZGVyc3RyZWFtLmMsIGRsbHMvZG1zY3JpcHQvZG1zY3JpcHRfbWFpbi5jLAoJICBkbGxzL2Rtc2NyaXB0L2Rtc2NyaXB0X3ByaXZhdGUuaCwgZGxscy9kbXNjcmlwdC9zY3JpcHQuYywKCSAgZGxscy9kbXNjcmlwdC9zY3JpcHR0cmFjay5jLCBkbGxzL2Rtc3R5bGUvYXVkaXRpb250cmFjay5jLAoJICBkbGxzL2Rtc3R5bGUvY2hvcmR0cmFjay5jLCBkbGxzL2Rtc3R5bGUvY29tbWFuZHRyYWNrLmMsCgkgIGRsbHMvZG1zdHlsZS9kbXN0eWxlX21haW4uYywgZGxscy9kbXN0eWxlL2Rtc3R5bGVfcHJpdmF0ZS5oLAoJICBkbGxzL2Rtc3R5bGUvbW90aWZ0cmFjay5jLCBkbGxzL2Rtc3R5bGUvbXV0ZXRyYWNrLmMsCgkgIGRsbHMvZG1zdHlsZS9zdHlsZS5jLCBkbGxzL2Rtc3R5bGUvc3R5bGV0cmFjay5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2UgbW9yZSBvZiB0aGUgT0xFIGludGVyZmFjZSB2dGFibGVzIGNvbnN0LgoKCSogZGxscy9jb21jdGwzMi9tb250aGNhbC5jLCBkbGxzL2NyeXB0MzIvcHJvdGVjdGRhdGEuYywKCSAgZGxscy9tc2kvYWN0aW9uLmgsIGRsbHMvb3BlbmdsMzIvbWFrZV9vcGVuZ2wsCgkgIGRsbHMvd2luZWQzZC92ZXJ0ZXhkZWNsYXJhdGlvbi5jLCBkbGxzL3dpbm1tL3dpbm1tX0VuLnJjOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBc3NvcnRlZCBzcGVsbGluZyBmaXhlcy4KCgkqIHByb2dyYW1zL21zaWV4ZWMvdmVyc2lvbi5yYzoKCVN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJVXBkYXRlIHZlcnNpb24gcmVzb3VyY2Ugb2YgbXNpZXhlYy5leGUgdG8gY3VycmVudCB2ZXJzaW9uIHNoaXBwZWQgZnJvbQoJV2luZG93cyBVcGRhdGUuCgoJKiBwcm9ncmFtcy93aW5lZmlsZS9Dcy5yYywgcHJvZ3JhbXMvd2luZWZpbGUvRGUucmMsCgkgIHByb2dyYW1zL3dpbmVmaWxlL0VuLnJjLCBwcm9ncmFtcy93aW5lZmlsZS9Fcy5yYywKCSAgcHJvZ3JhbXMvd2luZWZpbGUvRnIucmMsIHByb2dyYW1zL3dpbmVmaWxlL0h1LnJjLAoJICBwcm9ncmFtcy93aW5lZmlsZS9JdC5yYywgcHJvZ3JhbXMvd2luZWZpbGUvTmwucmMsCgkgIHByb2dyYW1zL3dpbmVmaWxlL1BsLnJjLCBwcm9ncmFtcy93aW5lZmlsZS9QdC5yYywKCSAgcHJvZ3JhbXMvd2luZWZpbGUvUnUucmMsIHByb2dyYW1zL3dpbmVmaWxlL1NpLnJjLAoJICBwcm9ncmFtcy93aW5lZmlsZS9Tdi5yYywgcHJvZ3JhbXMvd2luZWZpbGUvWmgucmMsCgkgIHByb2dyYW1zL3dpbmVmaWxlL3Jlc291cmNlLmgsIHByb2dyYW1zL3dpbmVmaWxlL3Jlc291cmNlLnJjLAoJICBwcm9ncmFtcy93aW5lZmlsZS93aW5lZmlsZS5jOgoJTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCS0gaW1wbGVtZW50IGNvbW1hbmRzICdjb3B5JyBhbmQgJ2RlbGV0ZScKCS0gZml4ICdtb3ZlJyBjb21tYW5kIGZvciB0aGUgbGVmdCBwYW5lCgoyMDA1LTA1LTI5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9vbGVhdXQzMi9vbGVhdXQzMi5zcGVjLCBkbGxzL29sZWF1dDMyL3ZhcmZvcm1hdC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBWYXJNb250aE5hbWUoKSBpbXBsZW1lbnRhdGlvbi4KCgkqIGRsbHMvbXNpL2NyZWF0ZS5jLCBkbGxzL21zaS9pbnNlcnQuYywgZGxscy9tc2kvb3JkZXIuYywKCSAgZGxscy9tc2kvcXVlcnkuaCwgZGxscy9tc2kvc2VsZWN0LmMsIGRsbHMvbXNpL3NxbC55LAoJICBkbGxzL21zaS91cGRhdGUuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUdldCByaWQgb2Ygc29tZSByZWR1bmRhbnQgcGFyc2VyIHR5cGVzLgoKCSogcHJvZ3JhbXMvd2luZWZpbGUvd2luZWZpbGUuYzogTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCVJlZnJlc2ggZGlzcGxheSBhZnRlciBleGVjdXRpbmcgYSBjb250ZXh0IG1lbnUgY29tbWFuZC4KCgkqIGRsbHMvbXNpL2NvbmQueSwgZGxscy9tc2kvZm9ybWF0LmMsIGRsbHMvbXNpL3Rlc3RzL2RiLmMsCgkgIGRsbHMvbXNpL3Rlc3RzL3JlY29yZC5jLCBkbGxzL21zaS90b2tlbml6ZS5jLCBkbGxzL21zaS93aGVyZS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJLVdtaXNzaW5nLWRlY2xhcmF0aW9ucyBhbmQgLVd3cml0ZS1zdHJpbmdzIHdhcm5pbmcgZml4ZXMuCgoJKiBwcm9ncmFtcy93aW5lZmlsZS9Dcy5yYywgcHJvZ3JhbXMvd2luZWZpbGUvRGUucmMsCgkgIHByb2dyYW1zL3dpbmVmaWxlL0VuLnJjLCBwcm9ncmFtcy93aW5lZmlsZS9Fcy5yYywKCSAgcHJvZ3JhbXMvd2luZWZpbGUvRnIucmMsIHByb2dyYW1zL3dpbmVmaWxlL0h1LnJjLAoJICBwcm9ncmFtcy93aW5lZmlsZS9JdC5yYywgcHJvZ3JhbXMvd2luZWZpbGUvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL3dpbmVmaWxlL05sLnJjLCBwcm9ncmFtcy93aW5lZmlsZS9QbC5yYywKCSAgcHJvZ3JhbXMvd2luZWZpbGUvUHQucmMsIHByb2dyYW1zL3dpbmVmaWxlL1J1LnJjLAoJICBwcm9ncmFtcy93aW5lZmlsZS9TaS5yYywgcHJvZ3JhbXMvd2luZWZpbGUvU3YucmMsCgkgIHByb2dyYW1zL3dpbmVmaWxlL1poLnJjLCBwcm9ncmFtcy93aW5lZmlsZS9yZXNvdXJjZS5oLAoJICBwcm9ncmFtcy93aW5lZmlsZS93aW5lZmlsZS5jOgoJTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCUltcGxlbWVudCBmaWxlIGZpbHRlcmluZyAobWF0Y2hpbmcgb2YgZmlsZSBuYW1lIHBhdHRlcm5zIGFuZCBmaWxlCgl0eXBlcykuCgoJKiBkbGxzL21zdmNydC9kaXIuYywgZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWM6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCV9maW5kY2xvc2UoKSBleGlzdHMgb24gTWluR1csIHNvIHByZWZpeCBpdC4KCgkqIHByb2dyYW1zL3dpbmVkYmcvZ2RicHJveHkuYzogRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglSZWluZGVudGVkIHBhcnRzIHRvIGJlIGNvbmZvcm0gdG8gdGhlIHJlc3Qgb2YgdGhlIGNvZGUuCgoJKiBwcm9ncmFtcy93aW5lZGJnL3N0YWNrLmM6IEVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJUmV3cm90ZSBhbGwgc3RhY2sgYmFja3RyYWNlIGNvZGUgKG1vcmUgY29kZSBzaGFyaW5nLCBlYXNpZXIgdG8gZm9sbG93LAoJYW5kIGxlc3MgYnVncykuCgoJKiBpbmNsdWRlL3dpbmJhc2UuaDogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJLSBhbHdheXMgZGVjbGFyZSB0aGUgbHN0ciogZnVuY3Rpb25zLCBldmVuIGlmIHRoZXkncmUgaW5saW5lCgktIGFkZCBwcm90b3R5cGUgZm9yIFJlYWREaXJlY3RvcnlDaGFuZ2VzVwoKCSogZGxscy93aW5tbS93aW5lYWxzYS9hbHNhLmg6IE1hcmN1cyBNZWlzc25lciA8bWVpc3NuZXJAc3VzZS5kZT4KCSN1bmRlZiBpbnRlcmZhY2UgYmVmb3JlIGluY2x1ZGluZyBhbHNhIGhlYWRlcnMuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUZpeCBhIG11bHRpcGxlIHNvdW5kIGNhcmQgaW50ZXJmYWNlIGJ1Zy4KCUFkZCBiZXR0ZXIgZXJyb3IgbWVzc2FnZXMuCgoJKiBkbGxzL2RiZ2hlbHAvZGJnaGVscC5zcGVjLCBkbGxzL2RiZ2hlbHAvbW9kdWxlLmM6CglQYXVsIFZyaWVucyA8UGF1bC5WcmllbnNAeHM0YWxsLm5sPgoJQWRkIFN5bUxvYWRNb2R1bGU2NC4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCUZlbGl4IE5hd290aG5pZyA8ZmVsaXgubmF3b3RobmlnQHQtb25saW5lLmRlPgoJUGFzcyB0aGUgcmlnaHQgaHduZCB0byBSZWxlYXNlREMoKS4KCgkqIGRsbHMvd2lubW0vd2luZWFsc2EvYXVkaW8uYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUZpeCB2b2x1bWUgY29udHJvbC4KCgkqIGRsbHMvZDNkOC9kM2Q4X3ByaXZhdGUuaDoKCUtyaXN0aWFhbiBMZW5hZXJ0cyA8a3Jpc3RpYWFuLmxlbmFlcnRzQGdtYWlsLmNvbT4KCWdjYyA0LjAgY29tcGlsZSBmaXguCgoJKiBkbGxzL3gxMWRydi9rZXlib2FyZC5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRml4IEVzdG9uaWFuIGtleWJvYXJkIGxheW91dCB0byBiZXR0ZXIgbWF0Y2ggdGhlIFgxMSBvbmUuCgoJKiBkbGxzL3FjYXAvZGxsc2V0dXAuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglSZW1vdmUgdW5uZWVkZWQgY2FzdC4KCgkqIGRsbHMvb2xlYXV0MzIvdGVzdHMvdmFydGVzdC5jOgoJTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5jb20+CglUZXN0cyBmb3IgVmFyQWRkLgoKCSogZGxscy9vbGVhdXQzMi92YXJpYW50LmM6IE1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuZGU+CgktIFJlaW1wbGVtZW50IFZhckFkZCwgaGFkIG1pc3NpbmcgZnVuY3Rpb25hbGl0eSBhbmQgd3JvbmcgYmVoYXZpb3VyLgoJLSBGaXggYSB0eXBvIGluIFZhck11bC4KCgkqIGRsbHMva2VybmVsL2xvY2FsMTYuYzogRGltaSBQYXVuIDxkaW1pQGxhdHRpY2EuY29tPgoJRml4IGluZGVudGF0aW9uLgoKCSogcHJvZ3JhbXMvd2luZXRlc3QvTWFrZWZpbGUuaW46CglTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCUluY2x1ZGUgY3J5cHQzMiB0ZXN0cyBpbnRvIHdpbmV0ZXN0LgoKCSogZGxscy9jcnlwdDMyL2VuY29kZS5jOiBKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglVc2UgcmVnaXN0ZXJlZCBETExzIGZvciBlbmNvZGUvZGVjb2RlLgoKCSogaW5jbHVkZS93aW5jcnlwdC5oOiBKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglBZGQgYSBmZXcgbWlzc2luZyBkZWZpbmVzLgoKMjAwNS0wNS0yNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvYW1zdHJlYW0vYW1zdHJlYW0uYywgZGxscy9hbXN0cmVhbS9tYWluLmMsIGRsbHMvYXRsL3JlZ2lzdHJhci5jLAoJICBkbGxzL2F2aWZpbDMyL2FjbXN0cmVhbS5jLCBkbGxzL2F2aWZpbDMyL2F2aWZpbGUuYywKCSAgZGxscy9hdmlmaWwzMi9lZGl0c3RyZWFtLmMsIGRsbHMvYXZpZmlsMzIvZmFjdG9yeS5jLAoJICBkbGxzL2F2aWZpbDMyL2dldGZyYW1lLmMsIGRsbHMvYXZpZmlsMzIvaWNtc3RyZWFtLmMsCgkgIGRsbHMvYXZpZmlsMzIvdG1wZmlsZS5jLCBkbGxzL2F2aWZpbDMyL3dhdmZpbGUuYywKCSAgZGxscy9jb21jYXQvY29tY2F0X3ByaXZhdGUuaCwgZGxscy9jb21jYXQvZmFjdG9yeS5jLAoJICBkbGxzL2NvbWNhdC9pbmZvcm1hdGlvbi5jLCBkbGxzL2NvbWNhdC9tYW5hZ2VyLmMsCgkgIGRsbHMvY29tY2F0L3JlZ2lzdGVyLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnYnJvd3Nlci5jLAoJICBkbGxzL2QzZDgvYmFzZXRleHR1cmUuYywgZGxscy9kM2Q4L2N1YmV0ZXh0dXJlLmMsCgkgIGRsbHMvZDNkOC9kM2Q4X3ByaXZhdGUuaCwgZGxscy9kM2Q4L2RldmljZS5jLCBkbGxzL2QzZDgvZGlyZWN0eC5jLAoJICBkbGxzL2QzZDgvaW5kZXhidWZmZXIuYywgZGxscy9kM2Q4L3Jlc291cmNlLmMsIGRsbHMvZDNkOC9zdXJmYWNlLmMsCgkgIGRsbHMvZDNkOC9zd2FwY2hhaW4uYywgZGxscy9kM2Q4L3RleHR1cmUuYywgZGxscy9kM2Q4L3ZlcnRleGJ1ZmZlci5jLAoJICBkbGxzL2QzZDgvdm9sdW1lLmMsIGRsbHMvZDNkOC92b2x1bWV0ZXh0dXJlLmMsCgkgIGRsbHMvZDNkOS9iYXNldGV4dHVyZS5jLCBkbGxzL2QzZDkvY3ViZXRleHR1cmUuYywKCSAgZGxscy9kM2Q5L2QzZDlfcHJpdmF0ZS5oLCBkbGxzL2QzZDkvZGV2aWNlLmMsIGRsbHMvZDNkOS9kaXJlY3R4LmMsCgkgIGRsbHMvZDNkOS9pbmRleGJ1ZmZlci5jLCBkbGxzL2QzZDkvcGl4ZWxzaGFkZXIuYywgZGxscy9kM2Q5L3F1ZXJ5LmMsCgkgIGRsbHMvZDNkOS9yZXNvdXJjZS5jLCBkbGxzL2QzZDkvc3RhdGVibG9jay5jLCBkbGxzL2QzZDkvc3VyZmFjZS5jLAoJICBkbGxzL2QzZDkvc3dhcGNoYWluLmMsIGRsbHMvZDNkOS90ZXh0dXJlLmMsIGRsbHMvZDNkOS92ZXJ0ZXhidWZmZXIuYywKCSAgZGxscy9kM2Q5L3ZlcnRleGRlY2xhcmF0aW9uLmMsIGRsbHMvZDNkOS92ZXJ0ZXhzaGFkZXIuYywKCSAgZGxscy9kM2Q5L3ZvbHVtZS5jLCBkbGxzL2QzZDkvdm9sdW1ldGV4dHVyZS5jLAoJICBkbGxzL2QzZHg4L2QzZHg4Y29yZV9wcml2YXRlLmgsIGRsbHMvZDNkeDgvZDNkeGJ1ZmZlci5jLAoJICBkbGxzL2QzZHhvZi9kM2R4b2YuYywgZGxscy9kM2R4b2YvZDNkeG9mX3ByaXZhdGUuaCwKCSAgZGxscy9kM2R4b2YvbWFpbi5jLCBkbGxzL2RkcmF3L2QzZGV4ZWN1dGVidWZmZXIuYywKCSAgZGxscy9kZHJhdy9kM2RsaWdodC5jLCBkbGxzL2RkcmF3L2QzZG1hdGVyaWFsLmMsCgkgIGRsbHMvZGRyYXcvZDNkdGV4dHVyZS5jLCBkbGxzL2RkcmF3L2QzZHZlcnRleGJ1ZmZlci5jLAoJICBkbGxzL2RkcmF3L2QzZHZpZXdwb3J0LmMsIGRsbHMvZGRyYXcvbWFpbi5jLCBpbmNsdWRlL29iamJhc2UuaDoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglNYWtlIHNvbWUgb2YgdGhlIE9MRSBpbnRlcmZhY2UgdnRhYmxlcyBjb25zdC4KCgkqIGluY2x1ZGUvd2luZS90ZXN0LmgsIHByb2dyYW1zL3dpbmV0ZXN0L21haW4uYzoKCUFkZGVkIC0tbGlzdCBvcHRpb24gdG8gdGhlIHRlc3RzIGFuZCB1c2UgdGhhdCBpbiB3aW5ldGVzdC4KCgkqIGRsbHMva2VybmVsL2luc3RyLmM6IEl2YW4gTGVvIFB1b3RpIDxpdmFubGVvQGdtYWlsLmNvbT4KCUFkZGVkIHNvbWUgcHJpdmlsZWdlZCBpbnN0cnVjdGlvbnMgZW11bGF0aW9uLgoKCSogZGxscy9nZGkvZ2Rpb2JqLmMsIHByb2dyYW1zL3dpbmV2ZG0vd2luZXZkbS5jOgoJRGltaSBQYXVuIDxkaW1pQGxhdHRpY2EuY29tPgoJTW92ZSByZW1haW5pbmcgR0RJIG9iamVjdHMgdG8gdGhlIGxhcmdlIGhlYXAuCgoJKiBkbGxzL250ZGxsL2xvYWRvcmRlci5jLCBkbGxzL3VzZXIvbXNnYm94LmMsIGRsbHMvdXNlci9ub25jbGllbnQuYywKCSAgZGxscy91c2VyL3RleHQuYzoKCVJpY2hhcmQgQ29oZW4gPHJpY2hhcmRAZGFpam9idS5jby51az4KCUZpeCBzb21lIG9ic29sZXRlIGNvbW1lbnRzCgoJKiBkbGxzL21zaS90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL21zaS90ZXN0cy9NYWtlZmlsZS5pbiwKCSAgZGxscy9tc2kvdGVzdHMvZGIuYywgZGxscy9tc2kvdGVzdHMvZm9ybWF0LmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQWRkIGZvcm1hdCByZWNvcmQgdGVzdHMuCgoJKiBkbGxzL21zaS9hY3Rpb24uYywgZGxscy9tc2kvYWN0aW9uLmgsIGRsbHMvbXNpL2N1c3RvbS5jLAoJICBkbGxzL21zaS9ldmVudHMuYywgZGxscy9tc2kvbXNpcHJpdi5oOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUludHJvZHVjZSByZWFsbHkgYmFzaWMgc2NyaXB0aW5nIG9mIGFjdGlvbnMuIFRoaXMgaXMgcHJpbWFyaWx5IHRvIGdldAoJdGhlIG9yZGVyIG9mIGV4ZWN1dGlvbiBvZiB0aGUgYWN0aW9uIGNvcnJlY3Qgc2luY2Ugc29tZSBjdXN0b20gYWN0aW9ucwoJY2FuIGJlIHNjcmlwdGVkIGFuZCBvdGhlcnMgYXJlIHJ1biBkdXJpbmcgdGhlIHNjcmlwdCBidWlsZGluZyBwaGFzZS4KCgkqIGRsbHMvbXNpL2Zvcm1hdC5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJUmVzdHJpY3QgZGVmb3JtYXRpbmcgb2YgbmVzdGVkIGluZGV4IGtleXMgW1sxXV0uCglJbnRyb2R1Y2UgdGhlIGJlZ2lubmluZyBvZiBncm91cCBkZWZvcm1hdGluZyB7fS4KCgkqIGRsbHMvcnNhZW5oL01ha2VmaWxlLmluLCBkbGxzL3JzYWVuaC9yc2FlbmguYzoKCU1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCVVzZSB0aGUgRGF0YSBQcm90ZWN0aW9uIEFQSSB0byBwcm90ZWN0IHRoZSB1c2VycyBwcml2YXRlIGtleXMuCgoJKiBkbGxzL2NyeXB0MzIvcHJvdGVjdGRhdGEuYzogTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJSXQncyBzdWZmaWNpZW5jdCBmb3IgQ3J5cHRbVW5dUHJvdGVjdERhdGEgdG8gYWNxdWlyZSB0aGUgY3J5cHRvCgljb250ZXh0IHdpdGggdGhlIENSWVBUX1ZFUklGWV9DT05URVhUIGZsYWcgc2V0LgoKCSogZGxscy9xY2FwL01ha2VmaWxlLmluLCBkbGxzL3FjYXAvY2FwdHVyZS5oLCBkbGxzL3FjYXAvcWNhcF9tYWluLmMsCgkgIGRsbHMvcWNhcC92ZndjYXB0dXJlLmM6CglNYWFydGVuIExhbmtob3JzdCA8bS5iLmxhbmtob3JzdEBnbWFpbC5jb20+CglJbXBsZW1lbnRlZCBWZndDYXB0dXJlIGludGVyZmFjZS4KCgkqIGRsbHMvcnNhZW5oL2ltcGxnbHVlLmM6IE1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCVVzZSBTeXN0ZW1GdW5jdGlvbjAzNiB0byBnZW5lcmF0ZSByYW5kb20gYnl0ZXMuCgoJKiBpbmNsdWRlL3Zmdy5oOiBSb2xmIEthbGJlcm1hdHRlciA8cm9sZi5rYWxiZXJtYXR0ZXJAY2l0ZW5nLmNvbT4KCUFkZCBkZWNsYXJhdGlvbnMgZm9yIEFWSUNBUCBhbmQgU0RLIHBhcnQgb2YgVmlkZW8gQ2FwdHVyZSBEcml2ZXIKCUludGVyZmFjZS4KCgkqIGRsbHMvbXNpL3JlY29yZC5jLCBkbGxzL21zaS90ZXN0cy9yZWNvcmQuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVRlc3QgYW5kIGZpeCB0aGUgc2l6ZSBvZiBzdHJlYW0gZmllbGRzIGluIGEgcmVjb3JkLgoKCSogZGxscy9tc2kvTWFrZWZpbGUuaW4sIGRsbHMvbXNpL2FjdGlvbi5jLCBkbGxzL21zaS9hY3Rpb24uaCwKCSAgZGxscy9tc2kvZXZlbnRzLmMsIGRsbHMvbXNpL21zaXByaXYuaDoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgZGlhbG9nIGV2ZW50cyBhbmQgaG9vayB1cCB0aGUgZGlhbG9nIGNvZGUuCgoJKiBkbGxzL3V1aWQvdXVpZC5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBZGQgeG1sZG9tIGd1aWRzLgoKCSogZGxscy9hbXN0cmVhbS9hbXN0cmVhbS5jOiBQZXRlciBPYmVybmRvcmZlciA8a3VtYmF5bzg0QGFyY29yLmRlPgoJVXNlIHByb3BlciByZXR1cm4gdmFsdWVzIGluIGFtc3RyZWFtIHN0dWIgZnVuY3Rpb25zLgoKMjAwNS0wNS0yNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvc2hlbGwzMi9zaGZsZHJfZGVza3RvcC5jLCBkbGxzL3NoZWxsMzIvc2hmbGRyX2ZzLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGZsZHJfbXljb21wLmM6CglTdGVmYW4gRPZzaW5nZXIgPHN0ZWZhbmRvZXNpbmdlckBnbXguYXQ+CgkqSGFuZGxlIGNpZGw9PTAgaW4gc2hmbGRyX2Rlc2t0b3AsIHNoZmxkcl9mcyBhbmQgc2hmbGRyX215Y29tcC4KCSpSZW1vdmUgdGhlIGR3QXR0cmlidXRlcyBtZW1iZXIgZnJvbSB0aGUgSUdlbmVyaWNTRkltcGwgY2xhc3MsIGl0J3MKCW5vdCBuZWVkZWQgYW5kIGNhbid0IGJlIGluaXRpYWxpc2VkIGluIEluaXRpYWxpemUgYW5kIEluaXRpYWxpemVFeC4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jLCBkbGxzL21zaS9hY3Rpb24uaDoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglGaXJzdCBwYXNzIGF0IHdyaXRpbmcgb3V0IEN1clZlciBrZXlzIGZvciBQcm9nSWRzLiBBbHNvIHByaW50IGEKCW1lc3NhZ2UgZm9yIHRoZSBhY3Rpb25zIHdlIHNraXAuIExpbmVzIHVwIHdpdGggbmF0aXZlIE1TSSBvdXRwdXQgbG9ncwoJZm9yIGVhc2Ugb2YgY29tcGFyaXNvbi4KCgkqIGRsbHMvb2RiY2NwMzIvb2RiY2NwMzIuYywgZGxscy9vZGJjY3AzMi9vZGJjY3AzMi5zcGVjLAoJICBpbmNsdWRlL29kYmNpbnN0Lmg6CglSZWluIEtsYXplcyA8d2lqbkB3YW5hZG9vLm5sPgoJQWRkIGEgc3R1YiBmb3IgT0RCQ0NQbEFwcGxldC4KCgkqIGRsbHMvcG93cnByb2YvcG93cnByb2YuYywgZGxscy9wb3dycHJvZi9wb3dycHJvZi5zcGVjOgoJUmVpbiBLbGF6ZXMgPHdpam5Ad2FuYWRvby5ubD4KCUFkZCBhIHN0dWIgZm9yIElzQWRtaW5PdmVycmlkZUFjdGl2ZS4KCgkqIGRsbHMvbnRkbGwvZmlsZS5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQ2FsbCBmaWxlaW9fdGVybWluYXRlIGZvciBGSUxFX0FzeW5jV3JpdGVTZXJ2aWNlLgoKCSogc2VydmVyL3dpbmRvdy5jOgoJQ3JvcCB0aGUgdXBkYXRlIHJlZ2lvbiB0byB0aGUgbmV3IHdpbmRvdyByZWN0YW5nbGUgd2hlbiByZXNpemluZyBhCgl3aW5kb3cuCgoJKiBkbGxzL3VzZXIvc3B5LmM6CglEb24ndCBmZXRjaCB0aGUgd2luZG93IGNsYXNzIG5hbWUgaWYgaXQncyBub3QgbmVlZGVkIHRvIGNvbXB1dGUgdGhlCgltZXNzYWdlIG5hbWUuCgoJKiBkbGxzL21zaS9hY3Rpb24uYywgZGxscy9tc2kvYWN0aW9uLmgsIGRsbHMvbXNpL21zaXByaXYuaDoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglBIGJpZyByZXdyaXRlIG9mIHRoZSB3aG9sZSBSZWdpc3RlckNsYXNzLCBSZWdpc3RlclByb2dJZCwKCVJlZ2lzdGVyRXh0ZW5zaW9uIGFuZCBSZWdpc3Rlck1JTUUgYWN0aW9ucy4gV2Ugbm93IGhhbmRsZSB2ZXJicwoJcHJvcGVybHksIGhhbmRsZSBkZXBlbmRhbmNpZXMgYW5kIHN1Y2ggcHJvcGVybHkgYW5kIGtlZXAgdHJhY2sgb2Ygd2hhdAoJd2UgbmVlZCB0byByZWdpc3RlciBhbmQgd2hhdCB3ZSBkbyBub3QgcHJvcGVybHkuCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZ2Jyb3dzZXIuYzoKCU1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCVVzZSBJU2hlbGxGb2xkZXI6OkdldERpc3BsYXlOYW1lT2YgaW5zdGVhZCBvZiBTSEdldFBhdGhGcm9tSURMaXN0IHRvCgliZSBhYmxlIHRvIGJyb3dzZSBzaGVsbCBuYW1lc3BhY2UgZXh0ZW5zaW9ucy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogS291amkgU2FzYWtpIDx0YXJvLXhAanVzdHN5c3RlbS5jby5qcD4KCUFkZGVkIHRoZSBjYWxsYmFjayBpdGVtIHByb2Nlc3NpbmcgZm9yIExJU1RWSUVXX0VuZEVkaXRMYWJlbFQKCWZ1bmN0aW9uLgoKCSogaW5jbHVkZS8uY3ZzaWdub3JlLCBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL3htbGRvbS5pZGwsCgkgIGluY2x1ZGUveG1sZG9tZGlkLmg6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBzb21lIGlkbCBkZWZpbml0aW9ucy4KCgkqIHRvb2xzL3dpZGwvcGFyc2VyLnk6CglXb3JrYXJvdW5kIHRvIGFsbG93IHVzaW5nIHRoZSBhc3luYyBrZXl3b3JkIGFzIG1ldGhvZCBuYW1lLgoKMjAwNS0wNS0yNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvdXNlci9NYWtlZmlsZS5pbiwgZGxscy91c2VyL2N1cnNvcmljb24uYywgZGxscy91c2VyL21pc2MuYywKCSAgZGxscy91c2VyL3N5c3BhcmFtcy5jLCBkbGxzL3VzZXIvdXNlcl9tYWluLmM6CglNb3ZlZCBmdW5jdGlvbnMgZnJvbSB3aW5kb3dzL3VzZXIuYyB0byBtb3JlIGFwcHJvcHJpYXRlIHBsYWNlcywgYW5kCglnZXQgcmlkIG9mIHRoYXQgZmlsZS4KCgkqIHNlcnZlci9jb25zb2xlLmMsIHNlcnZlci9mZC5jLCBzZXJ2ZXIvZmlsZS5jLCBzZXJ2ZXIvbWFpbHNsb3QuYywKCSAgc2VydmVyL21haW4uYywgc2VydmVyL25hbWVkX3BpcGUuYywgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3F1ZXVlLmMsCgkgIHNlcnZlci9yZWdpb24uYywgc2VydmVyL3JlZ2lzdHJ5LmMsIHNlcnZlci9yZXF1ZXN0LmMsCgkgIHNlcnZlci9zaWduYWwuYywgc2VydmVyL3NuYXBzaG90LmMsIHNlcnZlci9zb2NrLmMsIHNlcnZlci90aW1lci5jOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBVc2UgTlVMTCBpbnN0ZWFkIG9mIDAgZm9yIGFsbCBub24taGFuZGxlIHBvaW50ZXJzLgoJLSBGaXggbm9uLUFOU0kgZnVuY3Rpb24gZGVjbGFyYXRpb25zLgoJLSBNYWtlIGEgZnVuY3Rpb24gc3RhdGljLgoKCSogZGxscy91c2VyL3VzZXIxNi5jOgoJTW92ZWQgYSBjb3VwbGUgb2YgMTYtYml0IGZ1bmN0aW9ucyB0byBkbGxzL3VzZXIvdXNlcjE2LmMuCgoJKiBkbGxzL3VzZXIvc3lzcGFyYW1zLmM6IFJlaW4gS2xhemVzIDx3aWpuQHdhbmFkb28ubmw+CglVc2UgdGhlIHNjcmVlbiByZXNvbHV0aW9uIHRvIGNvbnZlcnQgZnJvbSB0d2lwcyAoMTQ0MCB0d2lwcyBpcyBvbmUKCWluY2gpIHRvIHBpeGVscy4KCgkqIGRsbHMvdXNlci9NYWtlZmlsZS5pbiwgZGxscy91c2VyL3N5c3BhcmFtcy5jLCBkbGxzL3VzZXIvdXNlcjE2LmMsCgkgIGRsbHMvdXNlci91c2VyX3ByaXZhdGUuaDoKCU1vdmVkIHRoZSBzeXNjb2xvciBmdW5jdGlvbnMgdG8gZGxscy91c2VyL3N5c3BhcmFtcy5jLgoKCSogZGxscy9tc2kvZm9ybWF0LmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgdGhlIFshZmlsZV0gZm9ybWF0IHRvIHByb2R1Y2UgdGhlIHNob3J0IGZpbGVuYW1lLgoKCSogaW5jbHVkZS93aW5iYXNlLmg6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglGaXggc21hbGwgdHlwby4KCgkqIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvaWRpc3BpZHMuaCwgaW5jbHVkZS94bWxkb21kaWQuaDoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBzb21lIG1vcmUgaGVhZGVycy4KCgkqIGluY2x1ZGUvd2luZS90ZXN0LmgsIHRvb2xzL21ha2VfY3Rlc3RzLmM6CglCZXR0ZXIgc3VwcG9ydCBmb3IgYnVpbGRpbmcgc3RhbmQtYWxvbmUgdGVzdHMuCgoJKiBkbGxzL2dkaS9nZGkzMi5zcGVjLCBkbGxzL2dkaS9nZGlvYmouYzogRGltaSBQYXVuIDxkaW1pQGxhdHRpY2EuY29tPgoJVHVybiBhIEdESSBvYmplY3QgaW50byBhIHN5c3RlbSBvYmplY3QgdmlhIGFuIGV4cGxpY2l0IFdpbmUgZXh0ZW5zaW9uCglyYXRoZXIgdGhlbiB0aHJvdWdoIG1hZ2ljYWwgcG9rZXMgaW4gbWVtb3J5LgoKCSogZGxscy9rZXJuZWwvdGVzdHMvbWFpbHNsb3QuYywgZGxscy9rZXJuZWwvdGVzdHMvcGlwZS5jLAoJICBkbGxzL2x6ZXhwYW5kL3Rlc3RzL2x6ZXhwYW5kX21haW4uYzoKCVJlbW92ZWQgU1RBTkRBTE9ORSBpZmRlZnMuCgoJKiBkbGxzL3VybG1vbi91bW9uLmMsIGRsbHMvdXJsbW9uL3VybG1vbi5zcGVjOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJU3R1YiBpbXBsZW1lbnRhdGlvbiBmb3IgR2V0U29mdHdhcmVVcGRhdGVJbmZvLgoKCSogc2VydmVyL3RyYWNlLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gUHJpbnQgY29tbWFzIGJldHdlZW4gQUNFJ3MuCgktIER1bXAgYWNjZXNzIG1hc2tzIGZyb20gYWxsIEFDRSdzLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBLb3VqaSBTYXNha2kgPHRhcm8teEBqdXN0c3lzdGVtLmNvLmpwPgoJQ29ycmVjdGVkIHRoZSBwcmlvcml0eSBvZiBvcGVyYXRvcnMgZm9yIExJU1RWSUVXX0dldE5leHRJdGVtCglmdW5jdGlvbi4KCjIwMDUtMDUtMjQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBBTk5PVU5DRSwgQ2hhbmdlTG9nLCBWRVJTSU9OLCBjb25maWd1cmU6IFJlbGVhc2UgMjAwNTA1MjQuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjIwMDUtMDUtMjQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3FjYXAvTWFrZWZpbGUuaW4sIGRsbHMvcWNhcC9xY2FwX21haW4uaCwgZGxscy9xY2FwL3l1di5jOgoJTWFhcnRlbiBMYW5raG9yc3QgPG0uYi5sYW5raG9yc3RAZ21haWwuY29tPgoJQWRkZWQgWVVWIHJvdXRpbmVzIG5lZWRlZCBmb3IgdjRsIGRyaXZlciwgYW5kIGluIHRoZSBmdXR1cmUgcG9zc2libHkKCW90aGVyIGNhcHR1cmUgZHJpdmVycyB0b28uCgoJKiBkbGxzL2tlcm5lbC9maWxlLmM6IFJlaW4gS2xhemVzIDx3aWpuQHdhbmFkb28ubmw+CglXb3JrIGFyb3VuZCBhIHByb2JsZW0gd2hlcmUgV3JpdGVGaWxlIGlzIGFza2VkIHRvIHdyaXRlIG1lbW9yeQoJcHJvdGVjdGVkIGJ5IERJQlNlY3Rpb24gY29kZS4KCgkqIGRsbHMvY29tY3RsMzIvZGF0ZXRpbWUuYywgZGxscy9pdHNzL2NobV9saWIuYywgZGxscy9rZXJuZWwvaW5zdHIuYywKCSAgZGxscy93aW5lcHMvdHJ1ZXR5cGUuYywgZGxscy93aW50YWIzMi9jb250ZXh0LmMsCgkgIHByb2dyYW1zL3dpbmVkYmcvYnJlYWsuYywgdG9vbHMvd2luZWR1bXAvcGUuYzoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJRml4IHVuaW5pdGlhbGl6ZWQgd2FybmluZ3MuCgoJKiBkbGxzL250ZGxsL3NlYy5jLCBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsCgkgIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci90b2tlbi5jLAoJICBzZXJ2ZXIvdHJhY2UuYzoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCBOdEFjY2Vzc0NoZWNrLgoKCSogZGxscy91cmxtb24vc2VjX21nci5jLCBpbmNsdWRlL3VybG1vbi5pZGw6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBZGQgdGhlIG1pc3NpbmcgaW50ZXJmYWNlIG1ldGhvZCBQcm9tcHRBY3Rpb24gdG8KCUlJbnRlcm5ldFpvbmVNYW5hZ2VyLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvbXN2Y3J0L3RpbWUuYywgaW5jbHVkZS9jb25maWcuaC5pbjoKCVBoaWwgS3J5bG92IDxwaGlsQG5ld3N0YXIucmluZXQucnU+CglBZGRlZCBkZXRlY3Rpb24gb2YgcGxhdGZvcm1zIHdoaWNoIGRvbid0IGhhdmUgZXh0ZXJuYWwgdGltZXpvbmUgYW5kCglkYXlsaWdodCB2YXJpYWJsZXMsIGFuZCBlbXVsYXRpb24gb2YgdGhlc2UgdmFyaWFibGVzLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBLb3VqaSBTYXNha2kgPHRhcm8teEBqdXN0c3lzdGVtLmNvLmpwPgoJQWRkZWQgaGFuZGxpbmcgb2YgV01fRU5BQkxFIG1lc3NhZ2UuCgoJKiBwcm9ncmFtcy93aW5lZGJnL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5lZGJnL2JlX2FscGhhLmMsCgkgIHByb2dyYW1zL3dpbmVkYmcvYmVfY3B1LmgsIHByb2dyYW1zL3dpbmVkYmcvYmVfaTM4Ni5jLAoJICBwcm9ncmFtcy93aW5lZGJnL2JlX3BwYy5jLCBwcm9ncmFtcy93aW5lZGJnL2JyZWFrLmMsCgkgIHByb2dyYW1zL3dpbmVkYmcvZGVidWdnZXIuaCwgcHJvZ3JhbXMvd2luZWRiZy9nZGJwcm94eS5jLAoJICBwcm9ncmFtcy93aW5lZGJnL21lbW9yeS5jLCBwcm9ncmFtcy93aW5lZGJnL3RndF9hY3RpdmUuYywKCSAgcHJvZ3JhbXMvd2luZWRiZy90eXBlcy5jLCBwcm9ncmFtcy93aW5lZGJnL3dpbmVkYmcuYzoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJLSBzdGFydGVkIGluZnJhc3RydWN0dXJlIGZvciBwcm9wZXIgbXVsdGktdGFyZ2V0IHN1cHBvcnQgKGFjdGl2ZQoJICBwcm9jZXNzLCBtaW5pZHVtcC4uLikKCS0gYWxsIHJlYWQvd3JpdGUgbWVtb3J5IG9wcyBhcmUgbm93IGRvbmUgdGhydSBhIGNlbnRyYWxpemVkIHByb2Nlc3NfaW8KCSAgZmFjaWxpdHkKCS0gbWlub3IgZml4ZXMgJiBjbGVhbnVwcyBpbiBDUFUgYmFja2VuZHMKCgkqIGRsbHMvc2hlbGwzMi9mb2xkZXJzLmMsIGRsbHMvc2hlbGwzMi9yZWdzdnIuYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLCBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYywKCSAgZGxscy9zaGVsbDMyL3NoZmxkcl91bml4ZnMuYzoKCU1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCUFkZCBhIG5ldyBDTFNJRCBmb3IgVW5peERvc0ZvbGRlciwgd2hpY2ggaXMgaWRlbnRpY2FsIHRvIFVuaXhGb2xkZXIsCglidXQgZG9lcyB1bml4IDwtPiBkb3MgcGF0aCBjb252ZXJzaW9uIGZvciBHZXREaXNwbGF5TmFtZU9mIGFuZAoJUGFyc2VEaXNwbGF5TmFtZS4KCgkqIHRvb2xzL3dpbmVkdW1wL2R1bXAuYywgdG9vbHMvd2luZWR1bXAvbWluaWR1bXAuYywgdG9vbHMvd2luZWR1bXAvcGUuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglQcmludCBkYXRhIG9mZnNldCBhZGRpdGlvbmFsbHkgdG8gcHJlZml4IHdoaWxlIGR1bXBpbmcgZGF0YS4KCgkqIGRsbHMveDExZHJ2L3dpbmRvdy5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJU2V0UGFyZW50IG5lZWRzIHRvIGNsZWFyICdtYW5hZ2VkJyBmbGFnIGZvciBmb3JtZXIgdG9wIGxldmVsIHdpbmRvdy4KCgkqIGRsbHMvbXNodG1sL29sZW9iai5jOiBKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJQWRkZWQgT0xFSVZFUkJfVUlBQ1RJVkFURSBoYW5kbGluZy4KCgkqIGluY2x1ZGUvdXJsbW9uLmlkbDogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRGVmaW5lIEdldFNvZnR3YXJlVXBkYXRlSW5mbyBhbmQgSVNvZnREaXN0RXh0LgoKCSogZGxscy93aW5pbmV0L2ludGVybmV0LmMsIGRsbHMvd2luaW5ldC90ZXN0cy9odHRwLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglIYW5kbGUgbW9yZSBFc2NhcGUgc2l0dWF0aW9ucy4KCgkqIHRvb2xzL3dpbmVidWlsZC9idWlsZC5oLCB0b29scy93aW5lYnVpbGQvaW1wb3J0LmMsCgkgIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYzoKCUZyZWUgZGVsYXllZCBpbXBvcnQgbW9kdWxlcyBvbiBQUk9DRVNTX0RFVEFDSC4KCgkqIGRsbHMva2VybmVsL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC90b29saGVscC5jLAoJICBkbGxzL2tlcm5lbC90b29saGVscDE2LmM6CglTdGV2ZW4gRWR3YXJkcyA8c3RldmVuX2VkNDE1M0B5YWhvby5jb20+CglTcGxpdCBXaW4xNiBhbmQgV2luMzIgdG9vbGhlbHAgZnVuY3Rpb25zLgoJQ29tcGlsZSBvdXQgd2luODdlbSBhbmQgMTZiaXQgdG9vbGhlbHAgZnVuY3Rpb25zIGlmIDE2IGJpdCBzdXBwb3J0IGlzCglkaXNhYmxlZC4KCgkqIHByb2dyYW1zL3dpbmVkYmcvZ2RicHJveHkuYzogRGF2aWQgV2VsY2ggPHdlbGNoQGN3Y29tLm5ldD4KCUFkZGVkIHRoZSBhYmlsaXR5IHRvIGJyZWFrIGludG8gdGhlIHByb2dyYW0gd2hlbiB1c2luZyB0aGUgZ2RiIHByb3h5LgoKCSogZGxscy9yaWNoZWQyMC9wYWludC5jOiBIYW5udSBWYWx0b25lbiA8SGFubnUuVmFsdG9uZW5AaHV0LmZpPgoJVXNlIGNvcnJlY3QgYmFja2dyb3VuZCBjb2xvciBmb3IgdGhlIHdob2xlIHJpY2hlZGl0IGNvbnRyb2wuCgoJKiBkbGxzL3VzZXIvYnV0dG9uLmM6IFZpdGFseSBMaXBhdG92IDxsYXZAZXRlcnNvZnQucnU+CglBZGQgQlVUVE9OX05PVElGWV9QQVJFTlQgbWFjcm8gKGFzIGluIGVkaXQuYykuCglOb3RpZnkgcGFyZW50IGFib3V0IFdNX0tJTEwvU0VURk9DVVMgZXZlbnRzLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvY3J5cHQzMi9NYWtlZmlsZS5pbiwKCSAgZGxscy9jcnlwdDMyL3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMvY3J5cHQzMi90ZXN0cy9NYWtlZmlsZS5pbiwKCSAgZGxscy9jcnlwdDMyL3Rlc3RzL3Byb3RlY3RkYXRhLmM6CglLZWVzIENvb2sgPGtlZXNAb3V0Zmx1eC5uZXQ+CglDcmVhdGUgYmFzaWMgdGVzdCBzdWl0ZSBmb3IgQ3J5cHRQcm90ZWN0RGF0YS9DcnlwdFVucHJvdGVjdERhdGEuCgoJKiBkbGxzL3VzZXIvbm9uY2xpZW50LmMsIGRsbHMvdXNlci90ZXN0cy93aW4uYzoKCVJpY2hhcmQgQ29oZW4gPHJpY2hhcmRAZGFpam9idS5jby51az4KCUZpeCBvZmYtYnktb25lIGluIG1lbnUgaGVpZ2h0IGNhbGN1bGF0aW9uICgmIHRoZXJlZm9yZQoJQWRqdXN0V2luZG93UmVjdCkgKyB0ZXN0LgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCUF1ZGl0IHRoZSBMaXN0LVZpZXcgY29udHJvbC4KCgkqIHByb2dyYW1zL3dpbmVkYmcvZ2RicHJveHkuYzogRGF2aWQgV2VsY2ggPHdlbGNoQGN3Y29tLm5ldD4KCUZpeCBkZWNvZGluZyBvZiB0aHJlYWQgSURzIGluIHRoZSBnZGJwcm94eS4KCgkqIGRsbHMvdXh0aGVtZS9kcmF3LmM6IEtldmluIEtvbHR6YXUgPGtldmluQHBsb3Aub3JnPgoJVXNlIHVuaWZvcm1zaXppbmcgdGhlbWUgcHJvcGVydHkuCgoJKiBpbmNsdWRlL2V4ZGlzcC5pZGw6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCURlZmluZSBDTFNJRF9TaGVsbFdpbmRvd3MuCgoJKiBkbGxzL21zaS9zcWwueTogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJU2ltcGxpZnkgcGFyc2luZyBvZiB0aGUgRlJPTSBrZXl3b3JkLgoKMjAwNS0wNS0yMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3RyYWNlLmM6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIEFkZCBuZXcgc2VydmVyIHR5cGUgInN0cnVjdCBzZWN1cml0eV9kZXNjcmlwdG9yIi4KCS0gQWRkIHRyYWNpbmcgZm9yIHRoaXMgbmV3IHR5cGUuCgoJKiBkbGxzL3NoZWxsMzIvc2hmbGRyX2Rlc2t0b3AuYywgZGxscy9zaGVsbDMyL3NoZmxkcl9mcy5jLAoJICBkbGxzL3NoZWxsMzIvc2hmbGRyX215Y29tcC5jLCBkbGxzL3NoZWxsMzIvc2hmbGRyX3VuaXhmcy5jOgoJTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJTW9yZSByb2J1c3RseSBxdWVyeSB0aGUgU0hHRE5fRk9SUEFSU0lORyBmbGFnIGluIHRoZSBzaGVsbDMyJ3MgZm9sZGVycwoJR2V0RGlzcGxheU5hbWVPZiBtZXRob2RzLgoKCSogZGxscy9vbGUzMi9vbGVvYmouYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlIGZvcndhcmQgZGVjbGFyYXRpb25zLgoKCSogZGxscy9tc2kvYWN0aW9uLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglEb3VibGUgdGVybWluYXRlIFNaX01VTFRJIHByb3Blcmx5LgoJQ2xhc3NJbmZvIGFuZCBFeHRlbnNpb25JbmZvIGFyZSBhbHNvIHdyaXR0ZW4gZm9yIEFEVkVSVElTRUQKCWNvbXBvbmVudHMuCgoJKiBkbGxzL21zaS9tc2kuYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBhIGxlYWtpbmcgaGFuZGxlLgoJTWFrZSBNc2lDb2xsZWN0VXNlckluZm8gbW9yZSBpbnRlcm5hbGx5IGNvbnNpc3RlbnQuCglUaGFua3MgdG8gTWlrZSBNY0Nvcm1hY2suCgoJKiBpbmNsdWRlL3dpbm50Lmg6IEl2YW4gTGVvIFB1b3RpIDxpdmFubGVvQGdtYWlsLmNvbT4KCVVwZGF0ZSBMRFRfRU5UUlkgZGVmaW5pdGlvbi4KCgkqIGRsbHMvbXNpL3NxbC55OiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglJbXByb3ZlIHBhcnNlciBlcnJvciBjaGVja2luZy4KCgkqIGRsbHMvc2hsd2FwaS90ZXN0cy9wYXRoLmMsIGRsbHMvc2hsd2FwaS91cmwuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVRlc3QgY2FzZXMgZm9yIFVSTF9VTkVTQ0FQRSBhbmQgc21hbGwgZml4LgoKCSogcHJvZ3JhbXMvd2luZWRiZy9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luZWRiZy9kYmcueSwKCSAgcHJvZ3JhbXMvd2luZWRiZy9kZWJ1Zy5sLCBwcm9ncmFtcy93aW5lZGJnL2RlYnVnZ2VyLmgsCgkgIHByb2dyYW1zL3dpbmVkYmcvdGd0X21pbmlkdW1wLmMsIHByb2dyYW1zL3dpbmVkYmcvd2luZWRiZy5jOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CgktIG5vdyBzdG9yaW5nIGV4Y2VwdGlvbiBpbmZvIChpZiBhbnkpIGluIHRocmVhZCBzdHJ1Y3R1cmUKCS0gYWRkZWQgbWluaWR1bXAgZnVuY3Rpb24gaW4gd2luZWRiZyAod3JpdGUgb25seSkKCgkqIGRsbHMva2VybmVsL2tlcm5lbDE2X3ByaXZhdGUuaCwgZGxscy9rZXJuZWwvbmVfbW9kdWxlLmM6CglTdXBwb3J0IHVubG9hZGluZyAxNi1iaXQgYnVpbHRpbiBtb2R1bGVzLCBhbmQgcHJvcGVybHkgbWFuYWdlIHRoZQoJcmVmY291bnQgb2YgdGhlIDMyLWJpdCBvd25lciBtb2R1bGUuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBkbGxzL2tlcm5lbC90b29saGVscC5jOgoJS2V2aW4gS29sdHphdSA8a2V2aW5AcGxvcC5vcmc+CglJbXBsZW1lbnQgTW9kdWxlMzJGaXJzdFcvTmV4dFcuCgoJKiBkbGxzL21zaS9jcmVhdGUuYywgZGxscy9tc2kvaW5zZXJ0LmMsIGRsbHMvbXNpL21zaXByaXYuaCwKCSAgZGxscy9tc2kvbXNpcXVlcnkuYywgZGxscy9tc2kvcXVlcnkuaCwgZGxscy9tc2kvc3FsLnksCgkgIGRsbHMvbXNpL3VwZGF0ZS5jLCBkbGxzL21zaS93aGVyZS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJVHJhY2sgbWVtb3J5IGFsbG9jYXRpb25zIGluIHRoZSBTUUwgcGFyc2VyLgoKCSogZGxscy9hZHZhcGkzMi9hZHZhcGkzMi5zcGVjLCBkbGxzL2FkdmFwaTMyL2NyeXB0LmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglJbXBsZW1lbnRlZCBTeXN0ZW1GdW5jdGlvbjAzNi4KCgkqIGRsbHMva2VybmVsL2tlcm5lbDE2X3ByaXZhdGUuaCwgZGxscy9rZXJuZWwvbmVfbW9kdWxlLmMsCgkgIGluY2x1ZGUvd2luZS93aW5iYXNlMTYuaCwgdG9vbHMvd2luZWJ1aWxkL3NwZWMxNi5jOgoJTW92ZWQgdGhlIGdlbmVyYXRlZCBjb2RlIHNlZ21lbnQgZm9yIDE2LWJpdCBidWlsdGlucyBpbnNpZGUgdGhlIG1vZHVsZQoJc3RydWN0dXJlLgoJR2V0IHJpZCBvZiB0aGUgQlVJTFRJTjE2X0RFU0NSSVBUT1Igc3RydWN0dXJlIGFuZCBkaXJlY3RseSByZWdpc3RlcgoJdGhlIE1aIGhlYWRlciBpbnN0ZWFkLgoKCSogZGxscy9tc2kvc3FsLnk6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVNpbXBsaWZ5IHBhcnNpbmcgb2Ygc2VsZWN0IHF1ZXJ5LgoKCSogZGxscy9kcGxheXgvZHBsYXkuYzogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCVJld3JpdGUgRGlyZWN0UGxheUVudW1lcmF0ZUEgYW5kIGFkZCBXIHZlcnNpb24gYXQgdGhlIHNhbWUgdGltZS4KCgkqIGRsbHMvb2xlYXV0MzIvdGVzdHMvdmFydGVzdC5jOiBNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmRlPgoJVGVzdHMgZm9yIFZhck11bCgpLgoKCSogZGxscy9vbGVhdXQzMi92YXJpYW50LmM6IE1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuZGU+CglSZWltcGxlbWVudCBWYXJNdWwoKS4gSXQgY2FuIG11bHRpcGx5IG5vdyBhbGwgdmFyaWFudHMgdGhhdCB0aGUgbmF0aXZlCgkoV2luWFApIGZ1bmN0aW9uIHN1cHBvcnRzIHRvby4KCgkqIGRsbHMvZGJnaGVscC9zdGFjay5jLCBpbmNsdWRlL2RiZ2hlbHAuaDoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJLSBmaXhlZCBSZWFkUHJvY2Vzc01lbW9yeVByb2MgcHJvdG90eXBlCgktIG1hZGUgU3RhY2tXYWxrIHdvcmsgd2hlbiBkYmdoZWxwIGlzIHJ1biBhZ2FpbnN0IGEgbm9uIHJ1bm5pbmcKCSAgcHJvY2VzcwoKCSogZGxscy9kZHJhdy9kc3VyZmFjZS9tYWluLmM6IEFudG9pbmUgQ2hhdmFzc2UgPGEuY2hhdmFzc2VAZ21haWwuY29tPgoJQWRkZWQgdHJhY2VzIGluIEdldFByaXZhdGVEYXRhIGFuZCBTZXRQcml2YXRlRGF0YS4KCU1hZGUgU2V0UHJpdmF0ZURhdGEgYWN0dWFsbHkgc3RvcmUgdGhlIGRhdGEgZnJvbSB0aGUgYnVmZmVyIGFzIHdlbGwgYXMKCWl0cyBzaXplLgoKCSogZGxscy9udGRsbC9sb2FkZXIuYzoKCU1vdmVkIHRoZSBsb2FkZGxsIHRyYWNlIGludG8gdGhlIGxvYWRfYnVpbHRpbl9kbGwgZnVuY3Rpb24gc28gdGhhdCBpdAoJZ2V0cyBwcmludGVkIGV2ZW4gd2hlbiB3ZSBkb24ndCBnZXQgdGhlIGV4cGVjdGVkIHNvIGZpbGUuCgoJKiB0b29scy93aW5lZHVtcC9sbmsuYywgdG9vbHMvd2luZWR1bXAvbWluaWR1bXAuYywKCSAgdG9vbHMvd2luZWR1bXAvbXNtYW5nbGUuYywgdG9vbHMvd2luZWR1bXAvcGUuYywKCSAgdG9vbHMvd2luZWR1bXAvd2luZWR1bXAuaCwgdG9vbHMvd21jL2xhbmcuaCwgdG9vbHMvd21jL3dyaXRlLmM6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglGaXggLVd3cml0ZS1zdHJpbmdzIHdhcm5pbmdzLgoKCSogZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWMsIGRsbHMvbXN2Y3J0L3N0cmluZy5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJSW1wbGVtZW50IG1pbmltYWwgX3N0cmljb2xsLgoKCSogZGxscy9vbGUzMi9maWxlbW9uaWtlci5jLCBkbGxzL29sZTMyL2l0ZW1tb25pa2VyLmM6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIEFkZCBlcnJvciBtZXNzYWdlcyBvbiBmYWlsdXJlIGluIGZpbGUgbW9uaWtlciBsb2FkIGZ1bmN0aW9uLgoJLSBGaXggaW5jb3JyZWN0IHBvaW50ZXIgY2hlY2sgaW4gYm90aCBtb25pa2Vycy4KCS0gRml4IG1heCBzaXplIGNhbGN1bGF0aW9uIG9mIGl0ZW0gbW9uaWtlciB0byBtYXRjaCBuYXRpdmUuCgoJKiBkbGxzL29sZTMyL21hcnNoYWwuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBBZGQgYSB1c2VmdWwgdHJhY2UgbWVzc2FnZS4KCS0gRml4IG1vcmUgcGxhY2VzIHdoZXJlIGN1c3RvbSBoZWFkZXIgc2l6ZSB3YXMgY2FsY3VsYXRlZCBleGNsdXNpdmUgb2YKCSAgdGhlIGRhdGEgc2l6ZSBtZW1iZXIuCgktIE9wdGltaXplIGN1c3RvbSBtYXJzaGFsaW5nIGJ5IGdldHRpbmcgc2l6ZSBiZWZvcmUgY2FsbGluZyB0aGUgY3VzdG9tCgkgIG1hcnNoYWxlciBzbyB3ZSBjYW4gd3JpdGUgdGhlIGhlYWRlciBiZWZvcmUgYW5kIG5vdCB1c2UgYSBzZWNvbmQKCSAgc3RyZWFtLgoKCSogZGxscy9tc2kvb3JkZXIuYywgZGxscy9tc2kvcXVlcnkuaCwgZGxscy9tc2kvc3FsLnk6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglDcmVhdGUgdGhlIE9SREVSIEJZIHZpZXcgaW4gYSBzaW5nbGUgY2FsbC4KCgkqIHByb2dyYW1zL3dpbmVmaWxlL3dpbmVmaWxlLmMsIHByb2dyYW1zL3dpbmVmaWxlL3dpbmVmaWxlLmg6CglNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJQnVnIGZpeGVzIGZvciBfTk9fRVhURU5TSU9OUyBtb2RlLgoKCSogZGxscy9vbGVhdXQzMi90ZXN0cy92YXJ0ZXN0LmMsIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jOgoJUmljaGFyZCBDb2hlbiA8cmljaGFyZEBkYWlqb2J1LmNvLnVrPgoJLSBSZW1vdmUgdW51c2VkIG1hY3JvLgoJLSBDaGVjayBmb3IgVlRfSTggYmVmb3JlIHRlc3RpbmcgaXQuCgktIFZhck1vZCByZXR1cm5zIERJU1BfRV9PVkVSRkxPVyBub3QgRV9JTlZBTElEQVJHLgoKCSogcHJvZ3JhbXMvd2luZWRiZy9kZWJ1Z2dlci5oLCBwcm9ncmFtcy93aW5lZGJnL21lbW9yeS5jLAoJICBwcm9ncmFtcy93aW5lZGJnL3N5bWJvbC5jOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglSZW1vdmVkIHRoZSBtYWNyb3MgZm9yIHZlcmJvc2UgbWVtb3J5IHJlYWQvd3JpdGUgb3BlcmF0aW9ucy4KCgkqIGRsbHMvYXZpZmlsMzIvYXZpZmlsZS5zcGVjLCBkbGxzL2tlcm5lbC9jb21tLmRydi5zcGVjLAoJICBkbGxzL2tlcm5lbC93aW5kZWJ1Zy5zcGVjLCBkbGxzL29sZTMyL29sZTJ0aGsuc3BlYywKCSAgZGxscy9zZXR1cGFwaS9zZXR1cHguc3BlYywgZGxscy9zaGVsbDMyL3NoZWxsLnNwZWMsCgkgIGRsbHMvdXNlci9rZXlib2FyZC5kcnYuc3BlYywgZGxscy93aW4zMnMvd2luMzJzMTYuc3BlYzoKCUNvbW1lbnQgb3V0IHN0dWIgV0VQIGVudHJ5IHBvaW50cyBzbyB0aGF0IHdlIGNhbiBjYWxsIFdFUCBmb3IgYnVpbHRpbgoJZGxscyB0b28uCgoJKiBkbGxzL2NvbW1kbGcvTWFrZWZpbGUuaW4sIGRsbHMvY29tbWRsZy9jb21tZGxnLnNwZWMsCgkgIGRsbHMvY29tbWRsZy9nZW5lcmljLmMsIGRsbHMvbXNhY20vbXNhY20uc3BlYywKCSAgZGxscy9tc2FjbS9tc2FjbV9tYWluLmMsIGRsbHMvbXN2aWRlby9tc3ZpZGVvLnNwZWMsCgkgIGRsbHMvbXN2aWRlby9tc3ZpZGVvMTYuYywgZGxscy9vbGUzMi9vbGUxNi5jLAoJICBkbGxzL3NldHVwYXBpL3ZpcnRjb3B5LmMsIGRsbHMvc2hlbGwzMi9zaGVsbC5jLAoJICBkbGxzL3dpbm1tL21tc3lzdGVtLmMsIGRsbHMvd2lubW0vbW1zeXN0ZW0uc3BlYzoKCVJlbW92ZWQgdW5uZWNlc3NhcnkgY29kZSBpbiB0aGUgMTYtYml0IERsbEVudHJ5UG9pbnQgZnVuY3Rpb24gb2Ygc29tZQoJZGxscywgYW5kIGFsc28gZml4ZWQgaXRzIG9yZGluYWwgaW4gYSBmZXcgcGxhY2VzLgoKCSogZGxscy9vbGUzMi9tb25pa2VyLmMsIGRsbHMvb2xlMzIvdGVzdHMvbWFyc2hhbC5jOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBNYXJzaGFsIG9iamVjdHMgJiBtb25pa2VycyBpbnRvIHRoZSBST1QuCgktIFRlc3QgZm9yIHRoaXMgYmVoYXZpb3VyLgoKCSogZGxscy9yaWNoZWQyMC9lZGl0b3IuYzogSGFubnUgVmFsdG9uZW4gPEhhbm51LlZhbHRvbmVuQGh1dC5maT4KCS0gSW1wbGVtZW50IEVNX0xJTkVTQ1JPTEwgbWVzc2FnZSBoYW5kbGluZwoJLSBGaXggYSBwcm9ibGVtIHdpdGggc2Nyb2xsaW5nIG92ZXIgdGhlIGVuZCBvZiB0aGUgdGV4dCBpbgoJICBXTV9XSEVFTE1PVVNFLgoKCSogaW5jbHVkZS93aW5jcnlwdC5oOiBLZWVzIENvb2sgPGtlZXNAb3V0Zmx1eC5uZXQ+CglBZGQgZGVmaW5lcyBmb3IgZHdGbGFncyBpbiBwUHJvbXB0U3RydWN0IGFuZCBjYWxscyB0bwoJQ3J5cHRQcm90ZWN0RGF0YS4KCgkqIGluY2x1ZGUvbnRkZHNjc2kuaDogSXZhbiBMZW8gUHVvdGkgPGl2YW5sZW9AZ21haWwuY29tPgoJQWRkZWQgc29tZSBzdHJ1Y3RzIHRvIG50ZGRzY3NpLmguCgoJKiBkbGxzL21zaS9tc2lwcml2LmgsIGRsbHMvbXNpL21zaXF1ZXJ5LmMsIGRsbHMvbXNpL3F1ZXJ5LmgsCgkgIGRsbHMvbXNpL3NxbC55OgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJLSByZW1vdmUgdGhlIHVudXNlZCB1dGY4IGZpZWxkIG9mIGFuIGV4cHJlc3Npb24KCS0gbWFrZSB0aGUgcGFyc2UgcmVzdWx0IGEgc2luZ2xlIGFzc2lnbm1lbnQgYXQgdG9wIGxldmVsIG9mIHBhcnNpbmcKCS0gYWJvcnQgcGFyc2luZyBvbiBhIG1lbW9yeSBhbGxvY2F0aW9uIGZhaWx1cmUKCgkqIGRsbHMvdXJsbW9uL3Rlc3RzL3VybC5jLCBkbGxzL3VybG1vbi91bW9uLmM6CglKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJU2VwYXJhdGVkIElCaW5kaW5nIGFuZCBJTW9uaWtlciBpbnRlcmZhY2VzLgoKCSogc2VydmVyL3JlZ2lzdHJ5LmMsIHNlcnZlci93aW5kb3cuYzoKCVJvYiBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBzZXZlcmFsIG1lbW9yeSBsZWFrcy4KCgkqIHByb2dyYW1zL3dpbmVmaWxlL0NzLnJjLCBwcm9ncmFtcy93aW5lZmlsZS9EZS5yYywKCSAgcHJvZ3JhbXMvd2luZWZpbGUvRW4ucmMsIHByb2dyYW1zL3dpbmVmaWxlL0VzLnJjLAoJICBwcm9ncmFtcy93aW5lZmlsZS9Gci5yYywgcHJvZ3JhbXMvd2luZWZpbGUvSHUucmMsCgkgIHByb2dyYW1zL3dpbmVmaWxlL0l0LnJjLCBwcm9ncmFtcy93aW5lZmlsZS9ObC5yYywKCSAgcHJvZ3JhbXMvd2luZWZpbGUvUGwucmMsIHByb2dyYW1zL3dpbmVmaWxlL1B0LnJjLAoJICBwcm9ncmFtcy93aW5lZmlsZS9SdS5yYywgcHJvZ3JhbXMvd2luZWZpbGUvU2kucmMsCgkgIHByb2dyYW1zL3dpbmVmaWxlL1N2LnJjLCBwcm9ncmFtcy93aW5lZmlsZS9aaC5yYywKCSAgcHJvZ3JhbXMvd2luZWZpbGUvcmVzb3VyY2UuaCwgcHJvZ3JhbXMvd2luZWZpbGUvd2luZWZpbGUuYzoKCU1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CglJbXBsZW1lbnQgSURfVklFV19TUExJVCBjb21tYW5kLgoKCSogZGxscy94MTFkcnYvc2V0dGluZ3MuYzogRGFuaWVsIFNjaGVwbGVyIDxzY2hlcGxlckBtYXRoLmJlcmtlbGV5LmVkdT4KCUltcGxlbWVudCBDRFNfVEVTVCBmbGFnIGluIENoYW5nZURpc3BsYXlTZXR0aW5ncy4KCgkqIGRsbHMvb2xlMzIvY29tcG9zaXRlbW9uaWtlci5jOiBLZXZpbiBLb2x0emF1IDxrZXZpbkBwbG9wLm9yZz4KCUltcGxlbWVudCBIYXNoIGZ1bmN0aW9uIG9uIGNvbXBvc2l0ZSBtb25pa2VyLgoKCSogcHJvZ3JhbXMvd2luZWRiZy9kYmcueSwgcHJvZ3JhbXMvd2luZWRiZy9kZWJ1Zy5sLAoJICBwcm9ncmFtcy93aW5lZGJnL2RlYnVnZ2VyLmgsIHByb2dyYW1zL3dpbmVkYmcvZXhwci5jLAoJICBwcm9ncmFtcy93aW5lZGJnL3N0YWNrLmMsIHByb2dyYW1zL3dpbmVkYmcvdHlwZXMuYywKCSAgcHJvZ3JhbXMvd2luZWRiZy93aW5lZGJnLmM6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCS0gbm8gbG9uZ2VyIHN0b3JlIGludGVybmFsbHkgdGhlICIgZm9yIHN0cmluZ3MKCS0gbWlzYyBjbGVhbi11cHMKCS0gYWN0aXZhdGUgc3ltYm9sIGRlbWFuZ2xpbmcgYnkgZGVmYXVsdAoKCSogdG9vbHMvZm50MmZvbi5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJU21hbGwgZml4IGZvciB0aGUgZm9udCBkaXJlY3RvcnkgcmVzb3VyY2Ugd3JpdHRlbiBieSBmbnQyZm9uLgoKCSogZGxscy9udGRsbC92aXJ0dWFsLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVVzZSBMSVNUX0ZPUl9FQUNIX0VOVFJZIGluIHZpcnR1YWwgbWVtb3J5IGNvZGUuCgoJKiBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYzogTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5kZT4KCUZpeCBWYXJpYW50Q2hhbmdlVHlwZTogY2FsbHMgdG8gVmFyRGVjRnJvbUN5IGFuZCBWYXJEZWNGcm9tRGlzcCBoYWQKCXNvdXJjZSBhbmQgZGVzdGluYXRpb24gc3dhcHBlZC4KCgkqIGRsbHMvY3J5cHQzMi9wcm90ZWN0ZGF0YS5jOiBLZWVzIENvb2sgPGtlZXNAb3V0Zmx1eC5uZXQ+CglDb3JyZWN0IGNyeXB0IGNvbnRleHQgaW5pdCBpbiBDcnlwdFByb3RlY3REYXRhL0NyeXB0VW5wcm90ZWN0RGF0YS4KCgkqIGRsbHMvZGJnaGVscC9kd2FyZi5jOiBSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCS0gZml4bWUgd2hlbiB1bmV4cGVjdGVkIGNoaWxkcmVuIGZvdW5kCgktIG5vIG1vcmUgZHdhcmYyX2NoZWNrX3NpYmxpbmcgZXJyb3JzIChpZSBwZXJmZWN0IHBhcnNpbmcgY291bnQpIDopCgktIGR3YXJmMl9wYXJzZV9pbmxpbmVkX3N1YnJvdXRpbmUsIGR3YXJmMl9wYXJzZV92YXJpYWJsZQoKCSogZGxscy9tc2kvdmVyc2lvbi5yYzogU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtTGluZS5jb20+CglVcGRhdGUgdmVyc2lvbiByZXNvdXJjZSBvZiBtc2kuZGxsIHRvIGN1cnJlbnQgdmVyc2lvbiBzaGlwcGVkIGZyb20KCXdpbmRvd3MgdXBkYXRlLgoKMjAwNS0wNS0yMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvY3J5cHQzMi9NYWtlZmlsZS5pbiwgZGxscy9jcnlwdDMyL2NyeXB0MzIuc3BlYywKCSAgZGxscy9jcnlwdDMyL2VuY29kZS5jLCBkbGxzL2NyeXB0MzIvbWFpbi5jOgoJSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJLSBtb3JlIGZ1bGx5IGltcGxlbWVudCBDcnlwdFJlZ2lzdGVyT0lERnVuY3Rpb24KCS0gaW1wbGVtZW50IENyeXB0VW5yZWdpc3Rlck9JREZ1bmN0aW9uCgktIGFkZCBzdHVicyBmb3IgQ3J5cHRFbmNvZGVPYmplY3QoRXgpL0NyeXB0RGVjb2RlT2JqZWN0KEV4KQoKCSogZGxscy9udGRsbC9kaXJlY3RvcnkuYzogR2VyYWxkIFBmZWlmZXIgPGdlcmFsZEBwZmVpZmVyLmNvbT4KCUF2b2lkIGNvbXBpbGVyIHdhcm5pbmcgaW4gcGFyc2VfbW91bnRfZW50cmllcygpLgoKCSogZGxscy9jcnlwdDMyL2NyeXB0MzIuc3BlYywgZGxscy9jcnlwdDMyL3Byb3RlY3RkYXRhLmM6CglLZWVzIENvb2sgPGtlZXNAb3V0Zmx1eC5uZXQ+CglJbXBsZW1lbnQgQ3J5cHRVbnByb3RlY3REYXRhIGNvdW50ZXJwYXJ0IHRvIENyeXB0UHJvdGVjdERhdGEuCgoJKiBkbGxzL2tlcm5lbC9uZV9tb2R1bGUuYywgZGxscy9rZXJuZWwvcmVzb3VyY2UxNi5jLAoJICB0b29scy93aW5lYnVpbGQvYnVpbGQuaCwgdG9vbHMvd2luZWJ1aWxkL3JlczE2LmMsCgkgIHRvb2xzL3dpbmVidWlsZC9zcGVjMTYuYzoKCUdlbmVyYXRlIDE2LWJpdCByZXNvdXJjZXMgaW4gdGhlIHByb3BlciBmb3JtYXQgaW5zaWRlIHRoZSBtb2R1bGUgZGF0YSwKCWFuZCBnZXQgcmlkIG9mIHRoZSBzcGVjaWFsIGNhc2UgZm9yIGJ1aWx0aW5zIGluIE5FX0RlZlJlc291cmNlSGFuZGxlci4KCgkqIGRsbHMvbXNpL3RhYmxlLmM6IEp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCVR1cm4gaGFuZGxlZCBlcnJvcnMgZnJvbSBFUlJzIHRvIFdBUk5zIG9yIFRSQUNFcy4KCgkqIGRsbHMvbnRkbGwvZmlsZS5jOiBKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglJbXBsZW1lbnQgTnRRdWVyeVZvbHVtZUluZm9ybWF0aW9uRmlsZSBmb3IgdHlwZQoJRmlsZUZzRGV2aWNlSW5mb3JtYXRpb24gb24gRnJlZUJTRC4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogSmFtZXMgSGF3a2lucyA8dHJ1aWtlbkBnbWFpbC5jb20+CglTZWxlY3QgdGhlIGl0ZW0gdW5kZXIgdGhlIHBvaW50ICh4LHkpIGluIE1vdXNlSG92ZXIuCgoJKiBkbGxzL2NyeXB0MzIvbWFpbi5jLCBkbGxzL2NyeXB0MzIvcHJvdGVjdGRhdGEuYzoKCUtlZXMgQ29vayA8a2Vlc0BvdXRmbHV4Lm5ldD4KCUltcGxlbWVudCBDcnlwdFByb3RlY3REYXRhIHdpdGggYmVzdC1ndWVzcyBlbmNyeXB0aW9uLgoKCSogZGxscy9vbGVhdXQzMi90ZXN0cy9zYWZlYXJyYXkuYzoKCVJpY2hhcmQgQ29oZW4gPHJpY2hhcmRAZGFpam9idS5jby51az4KCUNoZWNrIGlmIFZUX1I4IGFuZCBWVF9JTlRfUFRSIGFyZSBzdXBwb3J0ZWQgYmVmb3JlIHRlc3RpbmcgdGhlbS4KCgkqIGRsbHMvZ2RpL2dkaW9iai5jOiBEYXZpZCBIZW1tbyA8ZGF2aWQud2luZUBwaWxzb2Z0LmNvbT4KCUdESV9SZWxlYXNlT2JqIHdhcyBub3QgY2FsbGVkIHdpdGggdGhlIHJpZ2h0IHBhcmFtZXRlci4KCgkqIGRsbHMvbXNpL21zaS5zcGVjOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJV2UgaGF2ZSBhIHN0dWIgZm9yIE1zaUdldFVzZXJJbmZvQSB3ZSBzaG91bGQgdXNlIGl0LgoKCSogZGxscy9tc2kvbXNpLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglGaXggYSBsZWFraW5nIGhhbmRsZSBpbiBNc2lDb25maWd1cmVQcm9kdWN0RXhXLgoJSW1wbGVtZW50IE1zaUdldFByb2R1Y3RDb2RlVy4KCUltcGxlbWVudCBNc2lHZXRVc2VySW5mb1cuCglJbXBsZW1lbnQgTXNpQ29sbGVjdFVzZXJJbmZvQS9XLgoKCSogZGxscy9tc2kvYWN0aW9uLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglXcml0ZSB0aGUgUmVnT3duZXIgYW5kIFJlZ0NvbXBhbnkga2V5cyBhcyBibGFuayBpZiB0aGV5IGRvIG5vdCBleGlzdAoJd2hlbiBkb2luZyB0aGUgUmVnaXN0ZXJVc2VyIGFjdGlvbi4KCgkqIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYzogTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJQ29uc2lkZXIgb25seSB0aGUgR0lMX0ZPUlNIT1JUQ1VUIGZsYWcgaW4gU0lDX0NvbXBhcmVFbnRyaWVzLgoKCSogZGxscy9nZGkvdGVzdHMvZ2Rpb2JqLmM6IFJpY2hhcmQgQ29oZW4gPHJpY2hhcmRAZGFpam9idS5jby51az4KCUZpeCBnZGlvYmogdGVzdCBvbiBOVDQsIHJlbW92ZSBhc3NlcnRzLgoKCSogZGxscy9vcGVuZ2wzMi9tYWtlX29wZW5nbDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBZGQgJ3VzZSBzdHJpY3QnIGFuZCBmaXggbWFrZV9vcGVuZ2wgYWNjb3JkaW5nbHkuCglBZGQgZnVuY3Rpb24gcHJvdG90eXBlcy4KCVdyaXRlICIkYSAkYiIgcmF0aGVyIHRoYW4gdGhlIG1vcmUgY29tcGxleCAkYSAuICIgIiAuICRiLgoJRG9jdW1lbnQgd2hpY2ggT3BlbkdMIHNwZWMgZmlsZXMgbmVlZCB0byBiZSBkb3dubG9hZGVkLgoJVXBkYXRlIHRoZSBkb2N1bWVudGF0aW9uIG9mIHRoZSBsaXN0IG9mIHN1cHBvcnRlZCBPcGVuR0wgdmVyc2lvbnMuCglUd2VhayB0aGUgdXNhZ2Ugc28gaXQgYWx3YXlzIHJlcG9ydHMgdGhlIHJpZ2h0IGNvbW1hbmQgbmFtZS4KCgkqIGluY2x1ZGUvd2luY3J5cHQuaDogSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJQWRkIGEgYnVuY2ggb2YgbWlzc2luZyBkZWNsYXJhdGlvbnMgYW5kIGRlZmluaXRpb25zLgoKCSogZGxscy9jcnlwdDMyL3Byb3RlY3RkYXRhLmM6IEtlZXMgQ29vayA8a2Vlc0BvdXRmbHV4Lm5ldD4KCUltcGxlbWVudCBzZXJpYWxpemF0aW9uIGFuZCBoZWxwZXIgZnVuY3Rpb25zIGZvciBDcnlwdFByb3RlY3REYXRhLgoKCSogaW5jbHVkZS9jb21tY3RybC5oOiBKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCVVwZGF0ZSBMVkdST1VQIHN0cnVjdCB0byBtYXRjaCBNU0ROLgoKCSogdG9vbHMvZm50MmZvbi5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJTWFrZSAuZm9uIGZpbGVzIGdlbmVyYXRlZCBieSBmbnQyZm9uIHNsaWdodGx5IG1vcmUgY29tcGF0aWJsZSB3aXRoCglmb250Zm9yZ2UsIGZyZWV0eXBlIGFuZCBXaW5kb3dzIGZvbnQgdmlld2VyLgoKCSogdG9vbHMvc2ZudDJmbnQuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCS0gQWx3YXlzIGluaXRpYWxpemUgd2lkdGggdGFibGUuCgktIEZUX0dldF9OZXh0X0NoYXIgZm9yIHNvbWUgcmVhc29uIHJldHVybnMgdG9vIGhpZ2ggbnVtYmVyICgxMDQwKSBpZgoJICB0aGUgd2luZV9jb3VyaWVyIGZvbnQgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGZvbnRmb3JnZSwgdXNlIDMyIGFzIHRoZQoJICAxc3QgY2hhciBpbnN0ZWFkLgoKCSogdG9vbHMvd2luZWR1bXAvbmUuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVByaW50IGFsc28gZmxhZ3MgYW5kIGxlbmd0aCBvZiBORSByZXNvdXJjZXMuCgoJKiBkbGxzL2RiZ2hlbHAvZHdhcmYuYzogUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CgktIGJldHRlciB0cmFjZXMKCS0gaGFuZGxlIGluY2x1c2lvbiAibGV2ZWxzIgoJLSBiZXR0ZXIgcGFyc2luZyBvZiBzdWJwcm9ncmFtLCB0eXBlZGVmLCBwb2ludGVyLCAuLi4gZW50cmllcwoJLSBhcnJheXMsIGVudW1zLCBjb25zdF90eXBlLCByZWZlcmVuY2VfdHlwZSBwYXJzaW5nCgktIGNoZWNrcyBwYXJzaW5nIGN1cnNvcnMgZXJyb3JzICh3aGVuIHNpYmxpbmcgdmFsdWUgYXZhaWxhYmxlKQoJLSBtb3JlIHV0aWxpdGllcyBmdW5jdGlvbnMgKGR3YXJmMl9wYXJzZV9hdHRyX2FzX2RhdGEpCgoJKiBkbGxzL250ZGxsL250LmMsIGluY2x1ZGUvd2ludGVybmwuaDoKCUl2YW4gTGVvIFB1b3RpIDxpdmFubGVvQGdtYWlsLmNvbT4KCVJlbmFtZSBTeXN0ZW1Ecml2ZXJJbmZvcm1hdGlvbiB0byBTeXN0ZW1Nb2R1bGVJbmZvcm1hdGlvbi4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJRml4IHF1b3Rpbmcgb24gcXVlcmllcy4KCVJlc3BlY3QgJysnIGFuZCAnKicgaW4gV3JpdGVSZWdpc3RyeVZhbHVlcyB0byBvbmx5IGNyZWF0ZSB0aGUga2V5IGlmCglpdCBkb2VzIG5vdCBhbHJlYWR5IGV4aXN0LiBQcmV2ZW50cyBvdmVyd3JpdGluZyB2YWx1ZXMgd2l0aCBOVUxMLgoKCSogZGxscy9tc2kvcGFja2FnZS5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJUXVvdGluZyBmaXhlcy4KCgkqIGRsbHMvbXNpL2N1c3RvbS5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQ29ycmVjdCBxdWVyeSBxdW90aW5nIGJhc2VkIG9uIE1pa2UncyBwYXRjaC4KCUFsc28gbW9yZSBlcnJvciBtZXNzYWdlcyBhYm91dCByZXR1cm4gY29kZXMgZnJvbSBjdXN0b20gYWN0aW9ucyBhbmQKCWlnbm9yZSBhbiBlcnJvciB0aGF0IHdlIHNob3VsZCBiZSBpZ25vcmluZy4KCjIwMDUtMDUtMTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL01ha2VmaWxlLmluLCBkbGxzL3dpbmVkb3MvLmN2c2lnbm9yZSwgZGxscy93aW5lZG9zL01ha2VmaWxlLmluOgoJUmV2ZXJ0IHByZXZpb3VzIHBhdGNoLCB3ZSBzdGlsbCBuZWVkIHRoZSB3aW5lZG9zIGltcG9ydCBsaWIgZm9yIG5vdy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjOgoJRGlzYWJsZSBXaW4xNiBzdXBwb3J0IGJ5IGRlZmF1bHQgb24gbm9uLXg4NiBwbGF0Zm9ybXMuCgoJKiBkbGxzL01ha2VmaWxlLmluLCBkbGxzL3dpbmVkb3MvLmN2c2lnbm9yZSwgZGxscy93aW5lZG9zL01ha2VmaWxlLmluOgoJV2Ugbm8gbG9uZ2VyIG5lZWQgYSB3aW5lZG9zIGltcG9ydCBsaWJyYXJ5LgoKCSogcHJvZ3JhbXMvd2luZXZkbS9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luZXZkbS93aW5ldmRtLmM6CglGYWlsIG1vcmUgZ3JhY2VmdWxseSBpZiAxNi1iaXQgc3VwcG9ydCBpcyBtaXNzaW5nLgoKCSogcHJvZ3JhbXMvd2luZWZpbGUvd2luZWZpbGUuYzogTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCVRoZSBjYWxsIHRvIFNjcmVlblRvQ2xpZW50KCkgY2hhbmdlcyB0aGUgY29udGVudCBvZiB0aGUgJ3B0JyB2YXJpYWJsZSwKCXNvIGl0IGNhbid0IGJlIHVzZWQgZm9yIHRoZSBmb2xsb3dpbmcgU2hlbGxGb2xkZXJDb250ZXh0TWVudSgpIGNhbGwuCgoJKiBkbGxzL29sZTMyL2ZpbGVtb25pa2VyLmMsIGRsbHMvb2xlMzIvaXRlbW1vbmlrZXIuYywKCSAgZGxscy9vbGUzMi9tb25pa2VyLmMsIGRsbHMvb2xlMzIvbW9uaWtlci5oLCBkbGxzL29sZTMyL29sZXByb3h5LmM6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIEFkZCBhIGdlbmVyaWMgbW9uaWtlciBtYXJzaGFsZXIgdGhhdCB3b3JrcyBieSBzYXZpbmcgJiBsb2FkaW5nCgkgIG1vbmlrZXJzIHRvICYgZnJvbSB0aGUgc3RyZWFtLgoJLSBVc2UgdGhlIGdlbmVyaWMgbW9uaWtlciBtYXJzaGFsIGluIHRoZSBmaWxlICYgaXRlbSBtb25pa2VycyBhbmQgYWRkCgkgIGEgY2xhc3MgZmFjdG9yeSBmb3IgZWFjaC4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaSBQYXVuIDxkaW1pQGxhdHRpY2EuY29tPgoJRG8gbm90IGNvbXB1dGUgdGhlIGhpdCB0ZXN0IGlmIHdlIGRvbid0IHJlYWxseSBuZWVkIGl0LgoKCSogZGxscy9tc3ZjcnQvZXhjZXB0LmM6IEp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCUltcGxlbWVudCBfWGNwdEZpbHRlciB1c2luZyBzaWduYWwgaGFuZGxlcnMsIGFuZCBhZGQgYSBjb3VwbGUgdHJhY2VzLgoKCSogZGxscy93aW5lZG9zL2Rvc2V4ZS5oLCBkbGxzL3dpbmVkb3MvZG9zbWVtLmMsIGRsbHMvd2luZWRvcy9kb3N2bS5jOgoJUmVmdXNlIHRvIGxvYWQgaWYgMTYtYml0IHN1cHBvcnQgaXMgbWlzc2luZy4KCgkqIHRvb2xzL3dpbmVidWlsZC9zcGVjMTYuYzoKCVVzZSBSYWlzZUV4Y2VwdGlvbiBpbnN0ZWFkIG9mIFJ0bFJhaXNlRXhjZXB0aW9uIGluIDE2LWJpdCBzcGVjIGZpbGVzCglzaW5jZSB0aGV5IGFscmVhZHkgZGVwZW5kIG9uIGtlcm5lbDMyLgoKCSogZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZGxscy9rZXJuZWwvbmVfbW9kdWxlLmMsCgkgIHRvb2xzL3dpbmVidWlsZC9zcGVjMTYuYzoKCVJlbmFtZWQgX193aW5lXyh1bilyZWdpc3Rlcl9kbGxfMTYgdG8gX193aW5lX2RsbF8odW4pcmVnaXN0ZXJfMTYgZm9yCgljb25zaXN0ZW5jeSB3aXRoIHRoZSAzMi1iaXQgdmVyc2lvbiwgYW5kIGFsc28gbWFrZSB0aGUgcmVnaXN0ZXIKCWZ1bmN0aW9uIHVzZSB0aGUgc2FtZSBwcm90b3R5cGUgYXMgdGhlIDMyLWJpdCBvbmUuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwxNl9wcml2YXRlLmgsIGRsbHMva2VybmVsL25lX21vZHVsZS5jLAoJICBkbGxzL2tlcm5lbC9uZV9zZWdtZW50LmMsIGRsbHMva2VybmVsL3Jlc291cmNlMTYuYzoKCVVzZSBhIG1lbW9yeSBtYXBwaW5nIGluc3RlYWQgb2YgZmlsZSBJL08gdG8gbG9hZCAxNi1iaXQgbW9kdWxlcy4KCgkqIGRsbHMvb2xlMzIvbWFyc2hhbC5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIENoYW5nZSByZW1haW5pbmcgYmxvY2tzIG9mIGNvZGUgd2l0aCAyLXNwYWNlIGluZGVudGF0aW9uIHRvIDQtc3BhY2UKCSAgaW5kZW50YXRpb24uCgktIE1ha2UgdnRhYmxlcyBjb25zdC4KCS0gUmVtb3ZlIGFuIHVubmVjZXNzYXJ5IG1lbWNweSBhbmQgbGV0IHRoZSBjb21waWxlciBkbyB0aGUgd29yay4KCgkqIGRsbHMvb2xlMzIvbWFyc2hhbC5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglXcml0ZSBjdXN0b20gaGVhZGVyIHVwIHRvIGFuZCBpbmNsdWRpbmcgc2l6ZSwgbm90IGV4Y2x1ZGluZy4KCgkqIGRsbHMvbXNpL3BhY2thZ2UuYywgZGxscy9tc2kvc3FsLnksIGRsbHMvbXNpL3Rlc3RzL2RiLmMsCgkgIGRsbHMvbXNpL3Rva2VuaXplLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglPbmx5IHRhYmxlcyBjYW4gYmUgYmFja3F1b3RlZCwgc3RyaW5ncyBtdXN0IGJlIHNpbmdsZSBxdW90ZWQuCgoJKiBkbGxzL21zaS9hY3Rpb24uYzogSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJRG9uJ3QgZmFpbCBpbiBSZWdpc3RlckZvbnRzIGlmIHRoZSBGb250cyB0YWJsZSBpcyBtaXNzaW5nLgoKCSogcHJvZ3JhbXMvd2luZWNmZy9Fbi5yYywgcHJvZ3JhbXMvd2luZWNmZy9kcml2ZXVpLmMsCgkgIHByb2dyYW1zL3dpbmVjZmcvcmVzb3VyY2UuaDoKCUphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJTG9hZCBTaG93L0hpZGUgQWR2YW5jZWQgc3RyaW5ncyBmcm9tIHJlc291cmNlcy4KCgkqIGRsbHMvZGJnaGVscC9kd2FyZi5jOiBSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCS0gYmFzaWMgcGFyc2luZyBvZiBzdWJwcm9ncmFtLCB0eXBlZGVmLCBwb2ludGVyLCBjbGFzcywgc3RydWN0LCBlbnVtCgkgIGVudHJpZXMKCS0gaW5kaXJlY3Qgc3RyaW5ncyBzdXBwb3J0CgktIHV0aWxpdGllcyBmdW5jdGlvbnMgKHBhcnNlX2J5dGUsIHBhcnNlX3UyLCAuLi4pCgoJKiBpbmNsdWRlL3dpbmUvcnBjZmMuaDogRXJpYyBLb2hsIDxlcmljLmtvaGxAdC1vbmxpbmUuZGU+CglEZWZpbmUgUlBDX0ZDX0lHTk9SRS4KCgkqIGluY2x1ZGUvc2hsb2JqLmg6IEtldmluIEtvbHR6YXUgPGtldmluQHBsb3Aub3JnPgoJQWRkZWQgbWlzc2luZyBBVyBkZWZpbmUuCgoJKiBpbmNsdWRlL3JpY2hvbGUuaWRsOiBLZXZpbiBLb2x0emF1IDxrZXZpbkBwbG9wLm9yZz4KCUFkZCBtaXNzaW5nIHR5cGVkZWZzLgoKCSogZGxscy9rZXJuZWwvbG9jYWwxNi5jLCBpbmNsdWRlL2xvY2FsLmg6IERpbWkgUGF1biA8ZGltaUBsYXR0aWNhLmNvbT4KCVJlbmFtZSBiYWNrIGxvY2FsX2NvbXBhY3QgdG8gTE9DQUxfQ29tcGFjdCBmb3IgY29uc2lzdGVuY3kuCglHZXQgcmlkIG9mIG5vIGxvbmdlciB1c2VkIGxvY2FsLmguCgoJKiBkbGxzL3VzZXIvdXNlcl9wcml2YXRlLmgsIHdpbmRvd3Mvc3lzY29sb3IuYywgd2luZG93cy91c2VyLmM6CglEaW1pIFBhdW4gPGRpbWlAbGF0dGljYS5jb20+CglSZW1vdmUgTE9DQUxfKigpIGNhbGxzIGZyb20gVVNFUiwgdXNlIExvY2FsKjE2KCkgaW5zdGVhZC4KCgkqIHRvb2xzL3dpbmVwcmVmaXhjcmVhdGUuaW46CglTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCUNyZWF0ZSBsaW5rIGZvciBtc2lleGVjLmV4ZSBpbiBzeXN0ZW0gZGlyZWN0b3J5LgoKCSogZGxscy9udGRsbC9kaXJlY3RvcnkuYzogSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJSW1wbGVtZW50IGdldF9kZWZhdWx0X2RyaXZlX2RldmljZSBmb3IgRnJlZUJTRC4KCjIwMDUtMDUtMTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL250ZGxsL2hlYXAuYywgaW5jbHVkZS90aHJlYWQuaDoKCVJlbW92ZWQgbGFzdCBkZXBlbmRlbmNpZXMgb24gMTYtYml0IGhlYWRlcnMgZnJvbSBudGRsbC4KCgkqIGRsbHMvb2xlMzIvZmlsZW1vbmlrZXIuYywgZGxscy9vbGUzMi9pdGVtbW9uaWtlci5jOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IElST1REYXRhOjpHZXRDb21wYXJpc29uRGF0YSBmb3IgZmlsZSAmIGl0ZW0gbW9uaWtlcnMuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwxNl9wcml2YXRlLmgsIGRsbHMvbnRkbGwvbG9hZGVyLmMsCgkgIGluY2x1ZGUvbW9kdWxlLmg6CglNb3ZlZCBlbnRyeSBwb2ludCBkZWZpbml0aW9ucyBmcm9tIG1vZHVsZS5oIHRvIGtlcm5lbDE2X3ByaXZhdGUuaC4KCgkqIGRsbHMvZGV2ZW51bS9NYWtlZmlsZS5pbiwgZGxscy9kZXZlbnVtL2NyZWF0ZWRldmVudW0uYzoKCU1hYXJ0ZW4gTGFua2hvcnN0IDxtLmIubGFua2hvcnN0QGdtYWlsLmNvbT4KCUFkZCB2ZndpbmRleCB3aGVuIGVudW1lcmF0aW5nIGRldmljZXMsIGFuZCBtYWtlIHN1cmUgZXZlcnkgZGV2aWNlIGhhcwoJYSB1bmlxdWUgcmVnaXN0cnkga2V5LCBzbyBtdWx0aXBsZSBkZXZpY2VzIHdpdGggc2FtZSBuYW1lIGFyZSBhbGxvd2VkLgoKCSogZGxscy9rZXJuZWwvbmVfbW9kdWxlLmMsIHRvb2xzL3dpbmVidWlsZC9idWlsZC5oLAoJICB0b29scy93aW5lYnVpbGQvcmVzMTYuYywgdG9vbHMvd2luZWJ1aWxkL3NwZWMxNi5jOgoJR2VuZXJhdGUgdGhlIDE2LWJpdCBtb2R1bGUgaGVhZGVyIGluIHRoZSBzdGFuZGFyZCBvbi1kaXNrIGZvcm1hdCwgc28KCXRoYXQgd2luZWJ1aWxkIGRvZXNuJ3QgbmVlZCB0byBrbm93IGFib3V0IGtlcm5lbCBpbnRlcm5hbCBzdHJ1Y3R1cmVzLgoKCSogZGxscy9kZXZlbnVtL21lZGlhY2F0ZW51bS5jOgoJTWFhcnRlbiBMYW5raG9yc3QgPG0uYi5sYW5raG9yc3RAZ21haWwuY29tPgoJUGFzcyBwcm9wZXJ0eSBiYWcgdG8gSVBlcnNpc3RQcm9wZXJ0eUJhZywgaWYgc3VwcG9ydGVkLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMva2VybmVsL2NwdS5jLCBkbGxzL2tlcm5lbC90aW1lLmMsCgkgIGluY2x1ZGUvY29uZmlnLmguaW46CglFbW1hbnVlbCBNYWlsbGFyZCA8ZS5yc3pAbGliZXJ0eXN1cmYuZnI+CglBZGRlZCBEYXJ3aW4gOC4wIHNwZWNpZmljIGhlYWRlcnMuCgoJKiBkbGxzL2tlcm5lbC9uZV9tb2R1bGUuYzoKCVNwbGl0IHRoZSBtb2R1bGUgYnVpbGRpbmcgZnVuY3Rpb25hbGl0eSBvZiBORV9Mb2FkRXhlSGVhZGVyIGludG8KCXNlcGFyYXRlIGZ1bmN0aW9ucy4KCgkqIGRsbHMvbXNpL2NvbmQueTogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUEgZmV3IHNtYWxsIGZpeGVzLgoKCSogZGxscy9tc2kvYWN0aW9uLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglXZSBjYW5ub3QgaW50ZXJuYWxseSBsb2FkIHRoZSBmaWxlcyBpbiBGaWxlQ29zdCBiZWNhdXNlIHRoYXQgYWN0aW9uCgltYXkgYmUgc2tpcHBlZCBvciBub3QgY2FsbGVkLiBTbyBkbyBpdCBpbiBDb3N0SW5pdGlhbGl6ZS4KCVF1b3RlIHRoZSBmaWxlIHBhdGggaW4gU2VsZlJlZ01vZHVsZXMuCglEbyBub3Qgd3JpdGUgc3F1aXNoZWQgbnVsbCBndWlkcyB0byB0aGUgZmVhdHVyZSByZWdpc3RyYXRpb24uCgoJKiBkbGxzL3FjYXAvY2FwdHVyZWdyYXBoLmM6IE1hYXJ0ZW4gTGFua2hvcnN0IDxtLmIubGFua2hvcnN0QGdtYWlsLmNvbT4KCUZpeGVkIFNldEZpbHRlckdyYXBoIGZhaWx1cmUuCglBZGRlZCBkZWJ1ZyBpbmZvLgoJQWRkZWQgT2JqZWN0UmVmQ291bnQgaW5mbyBmb3IgRGxsQ2FuVW5sb2FkTm93LgoKCSogZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZGxscy91c2VyL2N1cnNvcmljb24uYywKCSAgZGxscy91c2VyL3VzZXIxNi5jLCBpbmNsdWRlL21vZHVsZS5oOgoJUmVtb3ZlZCBpbXBsZW1lbnRhdGlvbiBvZiBMb2FkRElCSWNvbkhhbmRsZXIxNiBhbmQKCUxvYWRESUJDdXJzb3JIYW5kbGVyMTYgc2luY2UgdGhleSBhcmUgbm8gbG9uZ2VyIHVzZWQsIGFuZCBzdG9wCglleHBvcnRpbmcgTkVfRGVmUmVzb3VyY2VIYW5kbGVyLgoKCSogZGxscy9xY2FwL01ha2VmaWxlLmluLCBkbGxzL3FjYXAvcGluLmMsIGRsbHMvcWNhcC9waW4uaDoKCU1hYXJ0ZW4gTGFua2hvcnN0IDxtLmIubGFua2hvcnN0QGdtYWlsLmNvbT4KCUFkZCBwaW4gZnVuY3Rpb25zIGZyb20gcXVhcnR6LgoKCSogZGxscy9jcnlwdDMyL01ha2VmaWxlLmluLCBkbGxzL2NyeXB0MzIvcHJvdGVjdGRhdGEuYzoKCUtlZXMgQ29vayA8a2Vlc0BvdXRmbHV4Lm5ldD4KCURlZmluZSBzdHJ1Y3R1cmVzIGZvciBDcnlwdFByb3RlY3REYXRhL0NyeXB0VW5wcm90ZWN0RGF0YSBjYWxscy4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL3BpcGUuYywgZGxscy9vbGVhdXQzMi90ZXN0cy9vbGVmb250LmMsCgkgIGRsbHMvb2xlYXV0MzIvdGVzdHMvc2FmZWFycmF5LmMsIGRsbHMvb2xlYXV0MzIvdGVzdHMvdmFydGVzdC5jLAoJICBkbGxzL3NobHdhcGkvdGVzdHMvY2xzaWQuYywgZGxscy9zaGx3YXBpL3Rlc3RzL29yZGluYWwuYywKCSAgZGxscy9zaGx3YXBpL3Rlc3RzL3BhdGguYywgZGxscy9zaGx3YXBpL3Rlc3RzL3NocmVnLmMsCgkgIGRsbHMvc2hsd2FwaS90ZXN0cy9zdHJpbmcuYywgcHJvZ3JhbXMvZXhwYW5kL2V4cGFuZC5jLAoJICBwcm9ncmFtcy9ycGNzcy9ycGNzc19tYWluLmMsIHByb2dyYW1zL3VuaW5zdGFsbGVyL21haW4uYywKCSAgcHJvZ3JhbXMvd2luZWNmZy9kcml2ZS5jLCBwcm9ncmFtcy93aW5lbWluZS9tYWluLmMsCgkgIHByb2dyYW1zL3dpbmhlbHAvaGxwMnNnbWwuYzoKCVBpZXJyZSBkJ0hlcmJlbW9udCA8c3RlZ2VmaW5AZnJlZS5mcj4KCVJlbW92ZSBzdGRsaWIuaCBpbmNsdXNpb24gaWYgd2luc29jay5oIGlzIGluY2x1ZGVkLgoKCSogZGxscy9xY2FwL2VudW1waW5zLmMsIGRsbHMvcWNhcC9xY2FwX21haW4uYzoKCU1hYXJ0ZW4gTGFua2hvcnN0IDxtLmIubGFua2hvcnN0QGdtYWlsLmNvbT4KCURsbENhblVubG9hZE5vdyBmaXguCglGaXhlZCBPYmpSZWZDb3VudCBmb3IgRW51bVBpbnMuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IEphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJLSBTdG9yZSB0aGUgY2xpY2sgcG9pbnQgaW4gTElTVFZJRVdfSU5GTy4KCS0gTW92ZSBtb3VzZSB0cmFja2luZyB0byBNb3VzZU1vdmUuCgktIFVzZSBEcmFnRGV0ZWN0IGluc3RlYWQgb2YgVHJhY2tNb3VzZS4KCS0gUmVtb3ZlIHRoZSB1bnVzZWQgVHJhY2tNb3VzZSBmdW5jdGlvbi4KCgkqIGRsbHMvZGJnaGVscC9tc2MuYzogRml4ZWQgYSBjb3VwbGUgb2Ygd2FybmluZ3MuCgoJKiBkbGxzL3F1YXJ0ei9maWx0ZXJncmFwaC5jOgoJTWFhcnRlbiBMYW5raG9yc3QgPG0uYi5sYW5raG9yc3RAZ21haWwuY29tPgoJQWRkZWQgcmVjb25uZWN0IGZ1bmN0aW9uIGZvciBmaWx0ZXJncmFwaC4KCgkqIGRsbHMvcXVhcnR6L21lbWFsbG9jYXRvci5jOgoJTWFhcnRlbiBMYW5raG9yc3QgPG0uYi5sYW5raG9yc3RAZ21haWwuY29tPgoJRml4ZWQgZnJlZWluZyBvZiBtZWRpYXR5cGUuCgoJKiBpbmNsdWRlL3dpbmUvbGlzdC5oOiBEaW1pIFBhdW4gPGRpbWlAbGF0dGljYS5jb20+CglEb2N1bWVudCB0aGUgbW9yZSBjb252ZW5pZW50IGl0ZXJhdGlvbiBtZXRob2QuCgoJKiBpbmNsdWRlL3dpbmNyeXB0Lmg6IEtlZXMgQ29vayA8a2Vlc0BvdXRmbHV4Lm5ldD4KCURlZmluZSBDcnlwdFByb3RlY3REYXRhL0NyeXB0VW5wcm90ZWN0RGF0YSBjcnlwdDMyLmRsbCBjYWxscy4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jLCBkbGxzL21zaS9hY3Rpb24uaDoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglDb3JyZWN0bHkgdXNlIHNob3J0IGZpbGVuYW1lcyBmcm9tIHVuY29tcHJlc3NlZCBmaWxlIHNvdXJjZXMuIEFsc28KCWRlZmF1bHQgZmVhdHVyZSBhbmQgY29tcG9uZW50IGluc3RhbGwgc3RhdGVzIHRvIEFCU0VOVCBpbnN0ZWFkIG9mCglVTktOT1dOLgoKCSogZGxscy9rZXJuZWwva2VybmVsMTZfcHJpdmF0ZS5oLCBkbGxzL2tlcm5lbC9uZV9tb2R1bGUuYywKCSAgZGxscy9rZXJuZWwvc25vb3AxNi5jOgoJQ2hhbmdlZCBTTk9PUDE2X1JlZ2lzdGVyRExMIHRvIHRha2UgYSBtb2R1bGUgaGFuZGxlIGluc3RlYWQgb2YKCXBvaW50ZXIuIE1vdmVkIHNub29wIGZ1bmN0aW9uIHByb3RvdHlwZXMgdG8ga2VybmVsMTZfcHJpdmF0ZS5oLgoKCSogZGxscy9udGRsbC9sb2FkZXIuYzoKCU1vdmVkIGltcG9ydCB0cmFjaW5nIHRvIGEgc2VwYXJhdGUgY2hhbm5lbCBzbyB0aGF0ICttb2R1bGUgdHJhY2VzCglkb24ndCBjb250YWluIHRvbyBtdWNoIG5vaXNlLgoKCSogZGxscy9nZGkvZ2Rpb2JqLmM6IERpbWkgUGF1biA8ZGltaUBsYXR0aWNhLmNvbT4KCVJlbW92ZSB0aGUgTE9DQUxfKigpIGZ1bmN0aW9ucyBmcm9tIEdESS4KCgkqIHByb2dyYW1zL3dpbmVjZmcvZHJpdmV1aS5jOiBKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCUFkZCBoYW5kbGluZyBmb3IgZHJpdmUgb3B0aW9ucy4KCgkqIGRsbHMva2VybmVsL3Rvb2xoZWxwLmM6IERpbWkgUGF1biA8ZGltaUBsYXR0aWNhLmNvbT4KCVJlbW92ZSB0aGUgTE9DQUxfKigpIGZ1bmN0aW9uIGNhbGxzIGZyb20gS0VSTkVMLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJRmVsaXggTmF3b3RobmlnIDxmZWxpeC5uYXdvdGhuaWdAdC1vbmxpbmUuZGU+CglSZXNpemUgbGlzdHZpZXcgY29sdW1uIHRvIGF1dG9maXQgb24gYSBkb3VibGVjbGljayBvbiB0aGUKCWhlYWRlci1kaXZpZGVyLgoKCSogZGxscy9kYmdoZWxwL2R3YXJmLmM6IFJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJLSBhZGQgc29tZSBEd2FyZjIgZW51bXMKCS0gYWJicmV2IGVudHJpZXMgcGFyc2VyICh3aXRoIGF0dHJpYnV0ZXMpCgktIGRlYnVnIGluZm8gcGFyc2VyIHNrZWxldG9uIChzZWUgYmlnIHRhZyBzd2l0aCBpbiBkd2FyZjJfcGFyc2UpLgoKCSogZGxscy9udGRsbC9leGNlcHRpb24uYzogRGltaSBQYXVuIDxkaW1pQGxhdHRpY2EuY29tPgoJVXNlIHRoZSBtb3JlIGlkaW9tYXRpYyBmb3JtIG9mIGl0ZXJhdGluZyB0aHJvdWdoIHRoZSBsaXN0LgoKCSogZGxscy9udGRsbC92aXJ0dWFsLmM6IERpbWkgUGF1biA8ZGltaUBsYXR0aWNhLmNvbT4KCU1ha2UgdGhlIGFyZ3VtZW50IGNvbW1lbnRzIG91dC1vZi1saW5lLgoKCSogZGxscy9tc2kvYWN0aW9uLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglTb21lIGVycm9yIG1lc3NhZ2VzIGFuZCBzdHJjbXAgY2hhbmdlcyBzdWdnZXN0ZWQgYnkgRG1pdHJ5LgoKCSogZGxscy9vbGUzMi9zdG9yYWdlMzIuYzogUGllcnJlIGQnSGVyYmVtb250IDxzdGVnZWZpbkBmcmVlLmZyPgoJQmlnIEVuZGlhbiBzcGVjaWZpYyBjb2RlIGZpeGVzIGluIG9yZGVyIHRvIGNvbmZvcm0gd2l0aAoJTk9OQU1FTEVTU1NUUlVDVC4KCgkqIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYzogS291amkgU2FzYWtpIDx0YXJvLXhAanVzdHN5c3RlbS5jby5qcD4KCUFkZGVkIHRoZSBwcm9jZXNzaW5nIGZvciBkZXRlcm1pbmF0aW9uIG9mIFNGR0FPX0hBU1NVQkZPTERFUiBmbGFnIGluCglTSEVMTDMyX0dldEl0ZW1BdHRyaWJ1dGUgZnVuY3Rpb24uCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmg6IEtvdWppIFNhc2FraSA8dGFyby14QGp1c3RzeXN0ZW0uY28uanA+CglFeGNoYW5nZWQgdGhlIHZhbHVlcyBmb3IgTFZBX0FMSUdOTEVGVCBzdHlsZSBhbmQgTFZBX0RFRkFVTFQgc3R5bGUuCgoJKiBwcm9ncmFtcy93aW5oZWxwL2hscGZpbGUuYzogS291amkgU2FzYWtpIDx0YXJvLXhAanVzdHN5c3RlbS5jby5qcD4KCUNvcnJlY3RlZCBSTEUgZGVjb21wcmVzc2lvbiBwcm9jZXNzaW5nLgoKCSogZGxscy9kYmdoZWxwL21zYy5jLCBkbGxzL2RiZ2hlbHAvcGF0aC5jOgoJUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CglGaXggb3Blbl9wZGJfZmlsZSAodXNlZCBmb3IgbG9jYXRlL29wZW4gcGRicyk6CgktIHBkYl9tYXRjaCBoZXVyaXN0aWMgbm93IG9ubHkgc3RvcCB3aGVuICJmaXJzdCBmaWxlIiBleGlzdHMKCS0gU3ltRmluZEZpbGVJblBhdGggbm93IGZpbGwgb3V0cHV0IGJ1ZmZlciB3aXRoIGEgdmFsaWQgdmFsdWUgb24KCSAgc3VjY2Vzcy4KCjIwMDUtMDUtMTcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2RldmVudW0vZGV2ZW51bS5zcGVjLCBkbGxzL2RldmVudW0vZGV2ZW51bV9tYWluLmMsCgkgIGRsbHMvZG1jb21wb3MvZG1jb21wb3Muc3BlYywgZGxscy9kbWNvbXBvcy9kbWNvbXBvc19tYWluLmMsCgkgIGRsbHMvZG1jb21wb3MvcmVnc3ZyLmMsIGRsbHMvZG1pbWUvZG1pbWUuc3BlYywKCSAgZGxscy9kbWltZS9kbWltZV9tYWluLmMsIGRsbHMvZG1pbWUvcmVnc3ZyLmMsCgkgIGRsbHMvZG1zdHlsZS9kbXN0eWxlLnNwZWMsIGRsbHMvZG1zdHlsZS9kbXN0eWxlX21haW4uYywKCSAgZGxscy9kbXN0eWxlL3JlZ3N2ci5jLCBkbGxzL2Rzb3VuZC9kc291bmQuc3BlYywKCSAgZGxscy9kc291bmQvZHNvdW5kX21haW4uYywgZGxscy9kc291bmQvcmVnc3ZyLmMsCgkgIGRsbHMvaGhjdHJsLm9jeC9oaGN0cmwub2N4LnNwZWMsIGRsbHMvaGhjdHJsLm9jeC9yZWdzdnIuYywKCSAgZGxscy9vbGVwcm8zMi9vbGVwcm8zMi5zcGVjLCBkbGxzL29sZXBybzMyL29sZXBybzMyc3R1YnMuYywKCSAgZGxscy9xdWFydHovbWFpbi5jLCBkbGxzL3F1YXJ0ei9xdWFydHouc3BlYywgZGxscy9xdWFydHovcmVnc3ZyLmMsCgkgIGRsbHMvcnNhZW5oL3JzYWVuaC5jLCBkbGxzL3JzYWVuaC9yc2Flbmguc3BlYywgZGxscy9zaGRvY3Z3L3JlZ3N2ci5jLAoJICBkbGxzL3NoZG9jdncvc2hkb2N2dy5zcGVjLCBkbGxzL3NoZG9jdncvc2hkb2N2d19tYWluLmM6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglSZW5hbWUgTU9EVUxFTkFNRV9EbGwqIGZ1bmN0aW9ucyB0byBEbGwqIGZvciBiZXR0ZXIgY29uc2lzdGVuY3kgYW5kCgl0eXBlIGNoZWNraW5nLgoKCSogZGxscy9rZXJuZWwva2VybmVsMTZfcHJpdmF0ZS5oLCBkbGxzL2tlcm5lbC9sb2NhbDE2LmMsCgkgIGRsbHMva2VybmVsL25lX21vZHVsZS5jLCBkbGxzL2tlcm5lbC9uZV9zZWdtZW50LmMsCgkgIGRsbHMva2VybmVsL3JlbGF5MTYuYywgZGxscy9rZXJuZWwvcmVzb3VyY2UxNi5jLAoJICBkbGxzL2tlcm5lbC9zbm9vcDE2LmMsIGRsbHMva2VybmVsL3Rhc2suYzoKCVJlbmFtZWQgc29tZSBmaWVsZHMgaW4gTkVfTU9EVUxFIHRvIHVzZSB0aGUgc2FtZSBuYW1lIGFzIGluIHRoZQoJZXhwb3J0ZWQgSU1BR0VfT1MyX0hFQURFUiBzdHJ1Y3R1cmUuCgoJKiBkbGxzL2dkaS9nZGlvYmouYzogRGltaSBQYXVuIDxkaW1pQGxhdHRpY2EuY29tPgoJVXNlIHN0YW5kYXJkIFRSQUNFIG1hY3JvLgoKCSogcHJvZ3JhbXMvbXNpZXhlYy9tc2lleGVjLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbmFtZSBEbGxSZWdpc3RlclNlcnZlciBhbmQgRGxsVW5yZWdpc3RlclNlcnZlciB0byBhdm9pZCBjb25mdXNpb24KCXdpdGggdGhlIENPTSBmdW5jdGlvbnMgb2YgZGlmZmVyZW50IHNpZ25hdHVyZXMuCgoJKiBpbmNsdWRlL29iamJhc2UuaDogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJQWRkIFdpbmUtb25seSB0eXBlIGNoZWNraW5nIGZvciBEbGxSZWdpc3RlclNlcnZlciBhbmQKCURsbFVucmVnaXN0ZXJTZXJ2ZXIuCgoJKiBkbGxzL2RiZ2hlbHAvTWFrZWZpbGUuaW4sIGRsbHMvZGJnaGVscC9kYmdoZWxwX3ByaXZhdGUuaCwKCSAgZGxscy9kYmdoZWxwL2R3YXJmLmMsIGRsbHMvZGJnaGVscC9lbGZfbW9kdWxlLmM6CglSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCUJlZ2lubmluZyBvZiBkYmdoZWxwIGR3YXJmMiBzdXBwb3J0OgoJLSBhZGQgZWxmX21vZHVsZSBlbnRyeSBmb3IgZHdhcmYyX3BhcnNlCgktIHN0dWJiZWQgZHdhcmYyX3BhcnNlIGluIG5ldyBkd2FyZi5jIGZpbGUKCgkqIGRsbHMvdXNlci9lZGl0LmM6IERpbWkgUGF1biA8ZGltaUBsYXR0aWNhLmNvbT4KCVVzZSBzdGFuZGFyZCBMb2NhbCoxNigpIGZ1bmN0aW9ucyBpbnN0ZWFkIG9mIExPQ0FMXyooKSBvbmVzLgoKCSogZGxscy9xY2FwL01ha2VmaWxlLmluLCBkbGxzL3FjYXAvZW51bXBpbnMuYzoKCU1hYXJ0ZW4gTGFua2hvcnN0IDxtLmIubGFua2hvcnN0QGdtYWlsLmNvbT4KCUFkZGVkIEVudW1QaW5zIGZyb20gcXVhcnR6IGZvciBpbnRlcm5hbCB1c2UuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwxNl9wcml2YXRlLmgsIGRsbHMva2VybmVsL25lX21vZHVsZS5jLAoJICBpbmNsdWRlL21vZHVsZS5oLCB0b29scy93aW5lYnVpbGQvc3BlYzE2LmM6CglVc2UgdGhlIGV4cG9ydGVkIElNQUdFX09TMl9IRUFERVIgdG8gZ2VuZXJhdGUgdGhlIG1vZHVsZSBoZWFkZXIgaW4gdGhlCglzcGVjIGZpbGUsIGFuZCBtb3ZlZCB0aGUgTkVfTU9EVUxFIHN0cnVjdHVyZSBkZWZpbml0aW9uIHRvCglrZXJuZWwxNl9wcml2YXRlLmguCgoJKiBwcm9ncmFtcy93aW5lY2ZnL0VuLnJjLCBwcm9ncmFtcy93aW5lY2ZnL3Jlc291cmNlLmg6CglKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCUFkZCBTaG93RGlyU3ltTGluayBhbmQgU2hvd0RvdEZpbGVzIHRvIHRoZSBkcml2ZSB1aS4KCgkqIGRsbHMvY29tY3RsMzIvdGFiLmM6IEphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJRml4ZWQgY2VudGVyaW5nIG9mIHRhYiB0ZXh0LgoKCSogZGxscy9xY2FwL2RsbHNldHVwLmM6IE1hYXJ0ZW4gTGFua2hvcnN0IDxtLmIubGFua2hvcnN0QGdtYWlsLmNvbT4KCUZpeGVkIGluaXRpYWxpc2F0aW9uIGNyYXNoIG9uIGxvYWRpbmcgcWNhcCBkbGwuCgoJKiBkbGxzL29sZTMyL29sZTIuYzogSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJT2J2aW91cyBmaXhlcyB0byBQcm9wVmFyaWFudENsZWFyIGFuZCBQcm9wVmFyaWFudENvcHkgZm9yIHZlY3RvcgoJdHlwZXMuCgoJKiBkbGxzL3FjYXAvZW51bW1lZGlhLmM6IE1hYXJ0ZW4gTGFua2hvcnN0IDxtLmIubGFua2hvcnN0QGdtYWlsLmNvbT4KCUZpeGVkIHFjYXAncyBpbmhlcml0ZWQgZW51bW1lZGlhIGJ1Z3MuCgoyMDA1LTA1LTE2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9vbGUzMi9zdGdfcHJvcC5jOiBKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglBZGQgYSBjb21tZW50LCBhbmQgYSBuby1vcCBjbGVhbnVwLgoKCSogZGxscy9tc2kvYWN0aW9uLmMsIGluY2x1ZGUvbXNpZGVmcy5oOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUNvcnJlY3QgYSBwcm9ibGVtIHdpdGggcGFyc2VfZGF0YSBpZiBiaW5hcnkgZGF0YSB3YXMgbm90IGluIGZ1bGwgYnl0ZXMuCglNb3JlIHByb3Blcmx5IGhhbmRsZSB1bmNvbXByZXNzZWQgZmlsZSBzb3VyY2VzLCBmaXggdGhlIGNyZWF0aW5nIGFuZAoJcGFyc2luZyBvZiBTb3VyY2UgRGlyZWN0b3JpZXMuCgoJKiBwcm9ncmFtcy93aW5lZmlsZS9Dcy5yYywgcHJvZ3JhbXMvd2luZWZpbGUvRGUucmMsCgkgIHByb2dyYW1zL3dpbmVmaWxlL0VuLnJjLCBwcm9ncmFtcy93aW5lZmlsZS9Fcy5yYywKCSAgcHJvZ3JhbXMvd2luZWZpbGUvRnIucmMsIHByb2dyYW1zL3dpbmVmaWxlL0h1LnJjLAoJICBwcm9ncmFtcy93aW5lZmlsZS9JdC5yYywgcHJvZ3JhbXMvd2luZWZpbGUvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL3dpbmVmaWxlL05sLnJjLCBwcm9ncmFtcy93aW5lZmlsZS9QbC5yYywKCSAgcHJvZ3JhbXMvd2luZWZpbGUvUHQucmMsIHByb2dyYW1zL3dpbmVmaWxlL1J1LnJjLAoJICBwcm9ncmFtcy93aW5lZmlsZS9TaS5yYywgcHJvZ3JhbXMvd2luZWZpbGUvU3YucmMsCgkgIHByb2dyYW1zL3dpbmVmaWxlL1poLnJjLCBwcm9ncmFtcy93aW5lZmlsZS9yZXNvdXJjZS5oLAoJICBwcm9ncmFtcy93aW5lZmlsZS93aW5lZmlsZS5jOgoJTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCUltcGxlbWVudCBjb25uZWN0aW5nIGFuZCBkaXNjb25uZWN0aW5nIG9mIG5ldHdvcmsgZHJpdmVzLgoKCSogZGxscy9rZXJuZWwvYXRvbTE2LmMsIGRsbHMva2VybmVsL2RlYnVnZ2VyLmMsIGRsbHMva2VybmVsL2dsb2JhbDE2LmMsCgkgIGRsbHMva2VybmVsL2luc3RyLmMsIGRsbHMva2VybmVsL2tlcm5lbDE2X3ByaXZhdGUuaCwKCSAgZGxscy9rZXJuZWwva2VybmVsX21haW4uYywgZGxscy9rZXJuZWwva2VybmVsX3ByaXZhdGUuaCwKCSAgZGxscy9rZXJuZWwvbG9jYWwxNi5jLCBkbGxzL2tlcm5lbC9uZV9tb2R1bGUuYywKCSAgZGxscy9rZXJuZWwvbmVfc2VnbWVudC5jLCBkbGxzL2tlcm5lbC9yZWxheTE2LmMsCgkgIGRsbHMva2VybmVsL3Jlc291cmNlMTYuYywgZGxscy9rZXJuZWwvc25vb3AxNi5jLAoJICBkbGxzL2tlcm5lbC9zeXN0ZW0uYywgZGxscy9rZXJuZWwvdGFzay5jLCBkbGxzL2tlcm5lbC90aHVuay5jLAoJICBkbGxzL2tlcm5lbC93b3d0aHVuay5jLCBpbmNsdWRlL21vZHVsZS5oOgoJTW92ZWQgYSBidW5jaCBvZiBkZWZpbml0aW9ucyBvdXQgb2YgbW9kdWxlLmggaW50byBhIG5ldwoJa2VybmVsMTZfcHJpdmF0ZS5oIGhlYWRlci4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL29kYmNjcDMyLy5jdnNpZ25vcmUsCgkgIGRsbHMvb2RiY2NwMzIvTWFrZWZpbGUuaW4sIGRsbHMvb2RiY2NwMzIvb2RiY2NwMzIuYywKCSAgZGxscy9vZGJjY3AzMi9vZGJjY3AzMi5zcGVjOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJSW5pdGlhbCBtb3N0bHkgc3R1YiBpbXBsZW1lbnRhdGlvbiBvZiBPREJDIGNvbnRyb2wgcGFuZWwuCgoJKiBzZXJ2ZXIvdG9rZW4uYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJQWRkIHVzZXIgYXR0cmlidXRlIHRvIHRva2VuIG9iamVjdHMuCgoJKiBkbGxzL29sZTMyL3N0Z19wcm9wLmM6IEp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCURpZmZlcmVudGlhdGUgYmV0d2VlbiB2ZXJzaW9uIDAgYW5kIHZlcnNpb24gMSBwcm9wZXJ0eSBzdG9yYWdlcy4KCgkqIGRsbHMvZGJnaGVscC9zdGFjay5jLCBkbGxzL2tlcm5lbC9jb21tLmMsIGRsbHMva2VybmVsL2luc3RyLmMsCgkgIGRsbHMva2VybmVsL2tlcm5lbF9tYWluLmMsIGRsbHMva2VybmVsL2xvY2FsZS5jLAoJICBkbGxzL2tlcm5lbC9zeXNsZXZlbC5jLCBkbGxzL2tlcm5lbC90YXNrLmMsIGRsbHMva2VybmVsL3RocmVhZC5jLAoJICBkbGxzL2tlcm5lbC90aHVuay5jLCBkbGxzL2tlcm5lbC93b3d0aHVuay5jLCBkbGxzL250ZGxsL2ZpbGUuYywKCSAgZGxscy9udGRsbC9udGRsbF9taXNjLmgsIGRsbHMvbnRkbGwvcGF0aC5jLCBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmMsCgkgIGRsbHMvbnRkbGwvc3luYy5jLCBkbGxzL3VzZXIvd2lucHJvYy5jLCBpbmNsdWRlL3dpbnRlcm5sLmg6CglSZW1vdmVkIHRoZSBzcGVjaWFsIGNhc2luZyBvZiBrZXJuZWwzMiBhbmQgbnRkbGwgZm9yIHRoZSBURUIKCWRlZmluaXRpb24gaW4gd2ludGVybmwuaC4KCgkqIGRsbHMva2VybmVsL2F0b20xNi5jLCBkbGxzL2tlcm5lbC9kZWJ1Z2dlci5jLCBkbGxzL2tlcm5lbC9lcnJvcjE2LmMsCgkgIGRsbHMva2VybmVsL2dsb2JhbDE2LmMsIGRsbHMva2VybmVsL2tlcm5lbF9tYWluLmMsCgkgIGRsbHMva2VybmVsL2tlcm5lbF9wcml2YXRlLmgsIGRsbHMva2VybmVsL2xvY2FsMTYuYywKCSAgZGxscy9rZXJuZWwvbmVfbW9kdWxlLmMsIGRsbHMva2VybmVsL25lX3NlZ21lbnQuYywKCSAgZGxscy9rZXJuZWwvcmVsYXkxNi5jLCBkbGxzL2tlcm5lbC9zbm9vcDE2LmMsIGRsbHMva2VybmVsL3N5c3RlbS5jLAoJICBkbGxzL2tlcm5lbC90YXNrLmMsIGRsbHMva2VybmVsL3RodW5rLmMsIGRsbHMva2VybmVsL3Rvb2xoZWxwLmMsCgkgIGRsbHMva2VybmVsL3dvd3RodW5rLmMsIGluY2x1ZGUvbG9jYWwuaCwgaW5jbHVkZS9zdGFja2ZyYW1lLmg6CglNb3ZlZCB0aGUgcmVtYWluaW5nIHN0YWNrIGZyYW1lIGRlZmluaXRpb25zIHRvIGtlcm5lbF9wcml2YXRlLmggYW5kCglyZW1vdmVkIHN0YWNrZnJhbWUuaC4KCgkqIGRsbHMvZGJnaGVscC9zdGFjay5jLCBkbGxzL3VzZXIvd2lucHJvYy5jLCBkbGxzL3VzZXIvd25kMTYuYywKCSAgcHJvZ3JhbXMvd2luZWRiZy9zdGFjay5jLCB0b29scy93aW5lYnVpbGQvcmVsYXkuYywKCSAgdG9vbHMvd2luZWJ1aWxkL3NwZWMxNi5jOgoJQXZvaWQgcmVmZXJlbmNpbmcgc3RhY2tmcmFtZS5oIGZyb20gb3V0c2lkZSBrZXJuZWwzMi4KCgkqIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL2NvbXBvYmpfcHJpdmF0ZS5oLAoJICBkbGxzL29sZTMyL29sZTIuYywgZGxscy9vbGUzMi9vbGUyXzE2LmMsIGRsbHMvb2xlMzIvb2xlMzJfbWFpbi5jLAoJICBkbGxzL29sZTMyL29sZTMyX21haW4uaDoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJTW92ZSB0aGUgRGxsIGluaXQgZnVuY3Rpb24gdG8gY29tcG9iai5jIHRvIGF2b2lkIGhhdmluZyBnbG9iYWwKCXZhcmlhYmxlcy4gUmVtb3ZlIG5lZWQgb2Ygb2xlMzJfbWFpbi5oLgoKCSogcHJvZ3JhbXMvd2luZWZpbGUvQ3MucmMsIHByb2dyYW1zL3dpbmVmaWxlL0RlLnJjLAoJICBwcm9ncmFtcy93aW5lZmlsZS9Fbi5yYywgcHJvZ3JhbXMvd2luZWZpbGUvRXMucmMsCgkgIHByb2dyYW1zL3dpbmVmaWxlL0ZyLnJjLCBwcm9ncmFtcy93aW5lZmlsZS9IdS5yYywKCSAgcHJvZ3JhbXMvd2luZWZpbGUvSXQucmMsIHByb2dyYW1zL3dpbmVmaWxlL05sLnJjLAoJICBwcm9ncmFtcy93aW5lZmlsZS9QbC5yYywgcHJvZ3JhbXMvd2luZWZpbGUvUHQucmMsCgkgIHByb2dyYW1zL3dpbmVmaWxlL1J1LnJjLCBwcm9ncmFtcy93aW5lZmlsZS9TaS5yYywKCSAgcHJvZ3JhbXMvd2luZWZpbGUvWmgucmMsIHByb2dyYW1zL3dpbmVmaWxlL3Jlc291cmNlLmgsCgkgIHByb2dyYW1zL3dpbmVmaWxlL3dpbmVmaWxlLmM6CglNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJSW1wbGVtZW50IG1lbnUgZW50cnkgImZvcm1hdCBkaXNrIiAoZGVyaXZlZCBmcm9tIFJvYmVydCBEaWNrZW5zb24ncwoJY29kZSkuCgoJKiBkbGxzL2FkdmFwaTMyL3JlZ2lzdHJ5LmMsIGRsbHMvbnRkbGwvcmVnLmM6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgUmVnTm90aWZ5Q2hhbmdlS2V5VmFsdWUgb24gdG9wIG9mIE50Tm90aWZ5Q2hhbmdlS2V5LgoKCSogZGxscy9rZXJuZWwvbG9jYWwxNi5jOiBEaW1pIFBhdW4gPGRpbWlAbGF0dGljYS5jb20+CglVc2UgdGhlIHN0YW5kYXJkIExvY2FsKjE2KCkgaW5zdGVhZCBvZiBMT0NBTF8qKCkgZnVuY3Rpb25zLgoKCSogZGxscy9kaW5wdXQvZGV2aWNlLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglFZmZlY3Qgb2JqZWN0cyBhcmUgbm90IHN1cHBvcnRlZCB5ZXQgc28gZG9uJ3QgY3Jhc2ggd2hlbiB0cnlpbmcgdG8KCWVudW1lcmF0ZSB0aGVtLgoKCSogZGxscy9rZXJuZWwvbmVfbW9kdWxlLmMsIGRsbHMva2VybmVsL25lX3NlZ21lbnQuYywKCSAgZGxscy9rZXJuZWwvcmVsYXkxNi5jLCBkbGxzL2tlcm5lbC9zbm9vcDE2LmMsIGRsbHMvd2luZWRvcy9yZWxheS5jLAoJICBpbmNsdWRlL2J1aWx0aW4xNi5oLCBpbmNsdWRlL3N0YWNrZnJhbWUuaCwgaW5jbHVkZS93aW5lL3dpbmJhc2UxNi5oLAoJICB0b29scy93aW5lYnVpbGQvc3BlYzE2LmM6CglNb3ZlZCBkYXRhIHN0cnVjdHVyZXMgZm9yIDE2LWJpdCByZWxheSBjYWxscyB0byB3aW5iYXNlMTYuaCBhbmQKCXJlbW92ZWQgYnVpbHRpbjE2LmguCgoJKiBkbGxzL3JzYWVuaC9yc2FlbmguYzogS2VlcyBDb29rIDxrZWVzQG91dGZsdXgubmV0PgoJQXZvaWQgc2VnZmF1bHQgaW4gaGFzaCB1cGRhdGUgd2l0aCBjb3JydXB0ZWQgZGVjcnlwdCBkYXRhLgoKCSogZGxscy9yaWNoZWQyMC9ydW4uYzogTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5kZT4KCUNoYW5nZSBhbiBhc3NlcnQgdG8gYSBXQVJOLgoKCSogZGxscy9nZGkvcGF0aC5jOiBGZWxpeCBOYXdvdGhuaWcgPGZlbGl4Lm5hd290aG5pZ0B0LW9ubGluZS5kZT4KCUtlZXAgd2lkdGggZm9yIGNvc21ldGljIHBlbnMsIGRvbid0IHVzZSBMUHRvRFAoKSBmb3Igd2lkdGhzIGFuZAoJY29udmVydCB0aGUgZGFzaGVzIGZvciBQU19VU0VSU1RZTEUgcGVucyBpbnRvIGRldmljZSB1bml0cy4KCgkqIGRsbHMvYWR2YXBpMzIvZXZlbnRsb2cuYywgZGxscy9yaWNoZWQyMC9lZGl0b3IuYywKCSAgZGxscy9yaWNoZWRpdC9yaWNoZWRpdC5jLCBkbGxzL3JwY3J0NC9uZHJfc3R1Ymxlc3MuYzoKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCVByb3ZpZGUgbWluaW1hbCBBUEkgZG9jdW1lbnRhdGlvbiBpbiBhZHZhcGkvZXZlbnRsb2cuYyB0byBzaWxlbmNlIHNvbWUKCXdpbmFwaV9jaGVjayBvdXRwdXQuCglNb3ZlIGFyb3VuZCBmdW5jdGlvbnMgaW4gcmljaGVkMjAsIHJpY2hlZGl0IGFuZCBycGNydDQgdG8gYWNoaWV2ZSB0aGUKCXNhbWUgZ29hbC4KCgkqIGRsbHMvcnNhZW5oL3JzYWVuaC5jOiBLZWVzIENvb2sgPGtlZXNAb3V0Zmx1eC5uZXQ+CglBdm9pZCBzZWdmYXVsdCB3aGVuIGRldGVjdGluZyBkZWNyeXB0aW9uIGJ1ZmZlciBzaXplLgoKCSogZGxscy9tc3ZjcnQvZmlsZS5jLCBkbGxzL21zdmNydC90ZXN0cy9maWxlLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglDb3JyZWN0IHJldHVybiB2YWx1ZSBvZiBmc2V0cG9zLgoKCSogZGxscy9zZXR1cGFwaS9xdWV1ZS5jOiBJdmFuIExlbyBQdW90aSA8aXZhbmxlb0BnbWFpbC5jb20+CglNaW5vciBmaXggaW4gU2V0dXBRdWV1ZUNvcHlTZWN0aW9uVy4KCgkqIGRsbHMva2VybmVsL2xvY2FsMTYuYzogRGltaSBQYXVuIDxkaW1pQGxhdHRpY2EuY29tPgoJQXZvaWQgdXNpbmcgc29tZSBMT0NBTF8qKCkgZnVuY3Rpb25zLgoKCSogcHJvZ3JhbXMvd2luZWZpbGUvU3YucmMsIHByb2dyYW1zL3dpbmVmaWxlL3JzcmMucmM6CglNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJU3dlZGlzaCB0cmFuc2xhdGlvbiBvZiB3aW5lZmlsZSByZXNvdXJjZXMgYnkgRGF2aWQgTm9yZGVuYmVyZywKCXByb29mcmVhZCBieSBBbmRyZWFzIEJqZXJrZWhvbHQuCgoJKiBwcm9ncmFtcy93aW5lZmlsZS9EZS5yYywgcHJvZ3JhbXMvd2luZWZpbGUvRW4ucmMsCgkgIHByb2dyYW1zL3dpbmVmaWxlL0VzLnJjLCBwcm9ncmFtcy93aW5lZmlsZS9Gci5yYywKCSAgcHJvZ3JhbXMvd2luZWZpbGUvSHUucmMsIHByb2dyYW1zL3dpbmVmaWxlL0l0LnJjLAoJICBwcm9ncmFtcy93aW5lZmlsZS9ObC5yYywgcHJvZ3JhbXMvd2luZWZpbGUvUHQucmMsCgkgIHByb2dyYW1zL3dpbmVmaWxlL1J1LnJjLCBwcm9ncmFtcy93aW5lZmlsZS9TaS5yYywKCSAgcHJvZ3JhbXMvd2luZWZpbGUvWmgucmMsIHByb2dyYW1zL3dpbmVmaWxlL3Jlc291cmNlLmgsCgkgIHByb2dyYW1zL3dpbmVmaWxlL3dpbmVmaWxlLmM6CglNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJSW1wbGVtZW50IHN3aXRjaGluZyBvZiBmaWxlIHNvcnQgb3JkZXIuCgoJKiBpbmNsdWRlL3NobG9iai5oOiBNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJRGVmaW5lIGZsYWdzIGZvciBTSEZvcm1hdERyaXZlKCkuCgoJKiBkbGxzL2RiZ2hlbHAvc3RhYnMuYzogSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglTaWxlbmNlIHNvbWUgdW5rbm93biBzdGFiIHR5cGUgbWVzc2FnZXMuCgoJKiBkbGxzL29sZTMyL29sZTE2LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJTWFrZSBfeG1hbGxvYzE2KCkgc3RhdGljLgoKCSogZGxscy9vbGUzMi9mdG1hcnNoYWwuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTdGF0aWNpZnkgRlRNYXJzaGFsSW1wbCBkZWZpbml0aW9uLgoKCSogZGxscy9vbGUzMi9oZ2xvYmFsc3RyZWFtLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJTWFrZSBIR0xPQkFMU3RyZWFtXyogZnVuY3Rpb25zIHN0YXRpYy4KCgkqIGluY2x1ZGUvLmN2c2lnbm9yZSwgaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9tc3htbC5pZGwsCgkgIGluY2x1ZGUvbXN4bWxkaWQuaDoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIHNvbWUgeG1sIGhlYWRlcnMuCgoJKiB0b29scy93aW5hcGkvd2luMTYuYXBpLCB0b29scy93aW5hcGkvd2luMzIuYXBpOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJVXBkYXRlIHdpbjE2LmFwaSBhbmQgd2luMzIuYXBpIHRvIGtlZXAgdXAgd2l0aCBjdXJyZW50IFdpbmUKCWRldmVsb3BtZW50LgoKCSogZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL3VuaWNvd3MvdW5pY293cy5zcGVjOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJQ29ycmVjdCBhcmcgY291bnQgZm9yIDMgZnVuY3Rpb25zIGluIG50ZGxsLnNwZWMgYW5kIHVuaWNvd3Muc3BlYy4KCgkqIGRsbHMvdXNlci9zeXNwYXJhbXMuYywgaW5jbHVkZS93aW51c2VyLmg6CglNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmRlPgoJQWRkIHNvbWUgU3lzdGVtUGFyYW1ldGVyc0luZm8gU1BJXyogZGVmaW5lcy4KCgkqIGRsbHMvZGlucHV0L2RpbnB1dF9tYWluLmMsIGRsbHMvZGlucHV0L2RpbnB1dF9wcml2YXRlLmgsCgkgIGRsbHMvZGlucHV0L2pveXN0aWNrX2xpbnV4LmMsIGRsbHMvZGlucHV0L2pveXN0aWNrX2xpbnV4aW5wdXQuYywKCSAgZGxscy9kaW5wdXQva2V5Ym9hcmQuYywgZGxscy9kaW5wdXQvbW91c2UuYywKCSAgZGxscy9kaW5wdXQvdGVzdHMvam95c3RpY2suYzoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglQYXNzIGFyb3VuZCByZWFsIHZlcnNpb24gYW5kIGRvIGNvcnJlY3QgdGhpbmcgYmFzZWQgb24gaXQuCglDaGFuZ2UgY29vcGVyYXRpdmUgbGV2ZWwgdG8gcGFzcyBvbiB3aW5kb3dzLgoKCSogZGxscy9vbGUzMi9zdGdfcHJvcC5jOiBKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglTdG9yZSBwcm9wZXJ0eSBuYW1lcyBpbiB0aGUgY29kZSBwYWdlIG9mIHRoZSBwcm9wZXJ0eSBzZXQuCgoyMDA1LTA1LTE0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogcHJvZ3JhbXMvd2luZWZpbGUvcmVzb3VyY2UuaCwgcHJvZ3JhbXMvd2luZWZpbGUvcmVzb3VyY2UucmMsCgkgIHByb2dyYW1zL3dpbmVmaWxlL3dpbmVmaWxlLmM6CglNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJLSBzcGVsbGluZyBmaXhlcyAocHJlZmVyZWQgLT4gcHJlZmVycmVkKQoJLSBhZGQgIiwgezAsIDB9LCAwLCAwIiBpbiBjb21tZW50IGxpbmVzCgktIHVwZGF0ZSBjb3B5cmlnaHQgc3RhdGVtZW50CgoJKiBkbGxzL29sZTMyL21vbmlrZXIuYywgZGxscy9vbGUzMi90ZXN0cy9tb25pa2VyLmM6CglKZWZmIExhdGltZXIgPGplZmZsQGRlZmNlbi5nb3YuYXU+CglJbXBsZW1lbnQgdGhlIElFbnVtTW9uaWtlciBpbnRlcmZhY2UgZm9yIHRoZSBST1QgYW5kIHByb3ZpZGUgdGVzdHMgdG8KCWV4ZXJjaXNlIHRoZSBpbnRlcmZhY2UuCgoJKiBkbGxzL2dkaS9wYXRoLmM6IEZlbGl4IE5hd290aG5pZyA8ZmVsaXgubmF3b3RobmlnQHQtb25saW5lLmRlPgoJQ29udmVydCBwZW4gd2lkdGggdG8gRFAgaW4gU3Ryb2tlUGF0aCgpLgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmMsIGRsbHMvd2lubW0vd2luZW9zcy9taWRpLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglTZXQgdGhyZWFkIHByaW9yaXRpZXMgdG8gdGltZSBjcml0aWNhbC4KCgkqIGRsbHMvdXNlci90ZXN0cy93aW4uYywgZGxscy91c2VyL3dpbi5jOgoJUGF1bCBWcmllbnMgPHBhdWwudnJpZW5zQHhzNGFsbC5ubD4KCUNoZWNrIGZvciBhIE5VTEwgcG9pbnRlciBpbiBHZXRXaW5kb3dUZXh0QS9XLgoKCSogZGxscy9udGRsbC9kaXJlY3RvcnkuYzogUm9iZXJ0IEx1bm5vbiA8Ym9ibEBvcHR1c2hvbWUuY29tLmF1PgoJSW1wbGVtZW50IGdldF9kZWZhdWx0X2RyaXZlX2RldmljZSBmb3IgU29sYXJpcy4KCgkqIGRsbHMvZ2RpL2dkaW9iai5jLCBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBkbGxzL2tlcm5lbC9sb2NhbDE2LmMsCgkgIGluY2x1ZGUvbG9jYWwuaCwgd2luZG93cy91c2VyLmM6CglEaW1pIFBhdW4gPGRpbWlAbGF0dGljYS5jb20+CglNYWtlIExPQ0FMXyooKSBqdXN0IHdyYXBwZXJzIGFyb3VuZCBMb2NhbCoxNigpIGZ1bmN0aW9ucy4KCgkqIGRsbHMvZGJnaGVscC9zdGFjay5jLCBkbGxzL2tlcm5lbC9rZXJuZWxfbWFpbi5jLAoJICBkbGxzL2tlcm5lbC9uZV9tb2R1bGUuYywgZGxscy9rZXJuZWwvbmVfc2VnbWVudC5jLAoJICBkbGxzL2tlcm5lbC9zeXN0ZW0uYywgZGxscy9rZXJuZWwvdGFzay5jLCBkbGxzL2tlcm5lbC90aHVuay5jLAoJICBkbGxzL2tlcm5lbC93b3d0aHVuay5jLCBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmMsCgkgIGRsbHMvdXNlci93aW5wcm9jLmMsIGluY2x1ZGUvc3RhY2tmcmFtZS5oLCBpbmNsdWRlL3RocmVhZC5oLAoJICB0b29scy93aW5lYnVpbGQvYnVpbGQuaDoKCVN0b3JlIHRoZSAxNi1iaXQgc3RhY2sgcG9pbnRlciBpbiB0aGUgV09XMzJSZXNlcnZlZCBURUIgZmllbGQuCgoJKiBkbGxzL250ZGxsL2F0b20uYywgc2VydmVyL2F0b20uYzoKCUZpeGVkIGEgbnVtYmVyIG9mIGF0b20gdGVzdCBmYWlsdXJlcy4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYywgaW5jbHVkZS90aHJlYWQuaDoKCVN0b3JlIHRoZSB3aW5zb2NrIHBlci10aHJlYWQgZGF0YSBpbiBOdEN1cnJlbnRUZWIoKS0+V2luU29ja0RhdGEKCWluc3RlYWQgb2YgdXNpbmcgVGxzQWxsb2MuCgoJKiBzZXJ2ZXIvcXVldWUuYzoKCUZpeGVkIGFub3RoZXIgY2FzZSB3aGVyZSBhIG1vdXNlIG1lc3NhZ2UgY291bGQgZ2V0IGFzc2lnbmVkIHRvIGEKCWRpZmZlcmVudCB0aHJlYWQgaW5wdXQuCgoJKiBwcm9ncmFtcy93aW5lZmlsZS9EZS5yYywgcHJvZ3JhbXMvd2luZWZpbGUvRW4ucmMsCgkgIHByb2dyYW1zL3dpbmVmaWxlL3Jlc291cmNlLmgsIHByb2dyYW1zL3dpbmVmaWxlL3dpbmVmaWxlLmM6CglNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJRGlzcGxheSBmcmVlIGFuZCB0b3RhbCBkaXNrIHNwYWNlIGluIHN0YXR1cyBiYXIuCgoJKiBkbGxzL2dkaS9wYXRoLmM6IEZlbGl4IE5hd290aG5pZyA8ZmVsaXgubmF3b3RobmlnQHQtb25saW5lLmRlPgoJRHJhdyBlYWNoIGZpZ3VyZSBhcyBhIHNpbmdsZSBwcmltaXRpdmUgaW4gU3Ryb2tlUGF0aCgpLgoKCSogZGxscy9tc3ZjcnQvZGF0YS5jLCBkbGxzL21zdmNydC9tc3ZjcnQuaCwgZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWMsCgkgIGRsbHMvbXN2Y3J0L3RpbWUuYzoKCUp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCS0gbW92ZSBfdGltZXpvbmUgdG8gdGltZS5jLCBhbmQgY29ycmVjdCBpdHMgdHlwZQoJLSBpbXBsZW1lbnQgX3R6c2V0LCBhbmQgaW5pdGlhbGl6ZSBfZGF5bGlnaHQsIF90aW1lem9uZSwgYW5kIF90em5hbWUKCSAgZnJvbSBsaWJjIHZhbHVlcwoKCSogZGxscy9zaGVsbDMyL3NobGV4ZWMuYzogSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJLSBvbmx5IGxvZyB1bnN1cHBvcnRlZCBmbGFncyBpbiBTaGVsbEV4ZWN1dGUKCS0gZW52aXJvbm1lbnQgdmFyaWFibGVzIGFyZSBleHBhbmRlZCwgc28gU0VFX01BU0tfRE9FTlZTVUJTVCBpcwoJICBzdXBwb3J0ZWQKCgkqIGRsbHMvb2xlMzIvc3RnX3Byb3AuYywgZGxscy9vbGUzMi9zdG9yYWdlMzIuYywKCSAgZGxscy9vbGUzMi9zdG9yYWdlMzIuaDoKCUp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCS0gbWFpbnRhaW4gcHJvcGVyIGJ5dGUgb3JkZXIKCS0gbWFpbnRhaW4gUFJPUFNFVEZMQUdfQU5TSSBmbGFnIGJhc2VkIG9uIGNvZGVwYWdlCgktIHVwZGF0ZSBjb21tZW50cwoKCSogZGxscy9jYWJpbmV0L2NhYmluZXQuaCwgZGxscy9jYWJpbmV0L2ZjaS5jOgoJR2Vyb2xkIEplbnMgV3VjaGVycGZlbm5pZyA8Z2p3dWNoZXJwZmVubmlnQGdteC5uZXQ+CglJbml0aWFsIEZDSSB3b3JrIChGQ0lDcmVhdGUgYW5kIEZDSURlc3Ryb3kpLgoKCSogZGxscy9xY2FwL01ha2VmaWxlLmluLCBkbGxzL3FjYXAvZW51bW1lZGlhLmMsIGRsbHMvcWNhcC9xY2FwX21haW4uaDoKCVJvbGYgS2FsYmVybWF0dGVyIDxyLmthbGJlcm1hdHRlckBoY2NuZXQubmw+CglBZGQgSUVudW1NZWRpYVR5cGUgb2JqZWN0IGZvciB1c2UgYnkgb3RoZXIgY2xhc3Mgb2JqZWN0cy4gVGhpcyBpcwoJdGFrZW4gZnJvbSBxdWFydHogd2l0aCBvbmx5IG1pbm9yIGFkYXB0aW9ucy4KCgkqIGRsbHMvY29tY3RsMzIvaGVhZGVyLmM6IEZlbGl4IE5hd290aG5pZyA8ZmVsaXgubmF3b3RobmlnQHQtb25saW5lLmRlPgoJUmV3cm90ZSBpdGVtIGxheW91dGluZyAtIG5ldyBjb2RlIGZpeGVzIGJpdG1hcC9pbWFnZSBwb3NpdGlvbiBmb3IKCW5vbi1sZWZ0LWFsaWduZWQgdGV4dCwgcHJldmVudHMganVtcGluZyB3aGVuIHJlc2l6aW5nIG5vbi1sZWZ0LWFsaWduZWQKCXRleHQsIGltcGxlbWVudHMgY2xpcHBpbmcgZm9yIGltYWdlcyBhbmQgY29ycmVjdGx5IGFsaWducyBiaXRtYXBzIHdoZW4KCWFuIGltYWdlIGlzIGFscmVhZHkgdGhlcmUuCgoyMDA1LTA1LTEzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jb21tZGxnL2ZvbnRkbGcuYzoKCURvbid0IGNvbnZlcnQgdGhlIHRlbXBsYXRlIG5hbWUgdG8gVW5pY29kZSwgaXQncyBub3QgdXNlZCBieSB0aGUKCWRpYWxvZyBhbnl3YXkuIENsZWFyIHRoZSB3aW5kb3cgcHJvcGVydHkgb24gV01fREVTVFJPWS4KCgkqIGRsbHMvc2hlbGwzMi8uY3ZzaWdub3JlLCBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvc2hlbGwzMi9mb2xkZXJzLmMsIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsCgkgIGRsbHMvc2hlbGwzMi9zaHJlcy5yYywgZGxscy9zaGVsbDMyL3NocmVzZGVmLmgsIHRvb2xzL3dpbmUuaW5mOgoJR2UgdmFuIEdlbGRvcnAgPGd2Z0ByZWFjdG9zLmNvbT4KCU92ZXJsYXkgaWNvbnMgZm9yIC5sbmsgZmlsZXMgd2l0aCBhIHNtYWxsIGFycm93IGluIHRoZSBsb3dlciBsZWZ0Cgljb3JuZXIuCgoJKiBwcm9ncmFtcy93aW5lZmlsZS93aW5lZmlsZS5jOiBNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJRGlzcGxheSBzb3VyY2UgcGF0aCBpbiAibW92ZSBmaWxlIiBkaWFsb2cuCgoJKiBkbGxzL29sZTMyL2dpdC5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglSZW1vdmUgZnVuY3Rpb24gcHJvdG90eXBlcy4KCgkqIGRsbHMvcmljaGVkMjAvZWRpdG9yLmM6IEtyenlzenRvZiBGb2x0bWFuIDx3ZGV2QGZvbHRtYW4uY29tPgoJQWRkZWQgc3R1YnMgZm9yIGEgY291cGxlIG9mIG1pc3NpbmcgMi4wIGFuZCAzLjAgbWVzc2FnZXMuCgoJKiBwcm9ncmFtcy93aW5lZmlsZS9Dcy5yYywgcHJvZ3JhbXMvd2luZWZpbGUvRGUucmMsCgkgIHByb2dyYW1zL3dpbmVmaWxlL0VuLnJjLCBwcm9ncmFtcy93aW5lZmlsZS9Fcy5yYywKCSAgcHJvZ3JhbXMvd2luZWZpbGUvRnIucmMsIHByb2dyYW1zL3dpbmVmaWxlL0h1LnJjLAoJICBwcm9ncmFtcy93aW5lZmlsZS9JdC5yYywgcHJvZ3JhbXMvd2luZWZpbGUvTmwucmMsCgkgIHByb2dyYW1zL3dpbmVmaWxlL1BsLnJjLCBwcm9ncmFtcy93aW5lZmlsZS9QdC5yYywKCSAgcHJvZ3JhbXMvd2luZWZpbGUvUnUucmMsIHByb2dyYW1zL3dpbmVmaWxlL1NpLnJjLAoJICBwcm9ncmFtcy93aW5lZmlsZS9aaC5yYywgcHJvZ3JhbXMvd2luZWZpbGUvcmVzb3VyY2UuaDoKCU1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CglSZXBsYWNlIG51bWVyaWMgcmVzb3VyY2UgaWRlbnRpZmllcnMgYnkgdGhlaXIgZGVmaW5lZCBjb25zdGFudHMuCgoJKiBkbGxzL3NlY3VyMzIvTWFrZWZpbGUuaW4sIGRsbHMvc2VjdXIzMi9zY2hhbm5lbC5jLAoJICBkbGxzL3NlY3VyMzIvc2VjdXIzMi5jLCBkbGxzL3NlY3VyMzIvc2VjdXIzMl9wcml2Lmg6CglKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglCZWdpbiBzdHVicyBvZiBidWlsdC1pbiBzY2hhbm5lbCBwcm92aWRlci4KCgkqIGRsbHMvbXN2Y3J0L2V4Y2VwdC5jLCBkbGxzL21zdmNydC9tYWluLmMsIGRsbHMvbXN2Y3J0L21zdmNydC5oLAoJICBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL21zdmNydC9mbG9hdC5oLCBpbmNsdWRlL21zdmNydC9zaWduYWwuaDoKCUp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCUltcGxlbWVudCBzaWduYWxzLgoKCSogZGxscy9vbGUzMi90ZXN0cy9NYWtlZmlsZS5pbjogSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglEb24ndCBpbXBvcnQgZnJvbSBudGRsbC4KCgkqIGRsbHMvdXNlci9wYWludGluZy5jOgoJUHJvY2VzcyB0aGUgcGVuZGluZyBleHBvc2UgZXZlbnRzIG9uIFJEV19VUERBVEVOT1cgYmVmb3JlIGRvaW5nIHRoZQoJcmVkcmF3X3dpbmRvdyBzZXJ2ZXIgY2FsbCBzbyB0aGF0IHRoZSBwYXJlbnQgd2luZG93cyBnZXQgcHJvcGVybHkKCXZhbGlkYXRlZCBpZiBuZWNlc3NhcnkuCgoJKiBzZXJ2ZXIvcXVldWUuYzoKCU9ubHkgc2V0IHRoZSBuZXcgd2luZG93IG9mIGEgaGFyZHdhcmUgbWVzc2FnZSBpZiB0aGUgd2luZG93IGJlbG9uZ3MgdG8KCXRoZSBzYW1lIHRocmVhZCBpbnB1dCwgb3RoZXJ3aXNlIGp1c3QgZHJvcCB0aGUgbWVzc2FnZS4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlIHNvbWUgdW51c2VkIGluY2x1ZGUgZmlsZXMuCgoJKiBkbGxzL29wZW5nbDMyL29wZW5nbF9leHQuaDogQWRkZWQgeWV0IGFub3RoZXIgbWlzc2luZyBPcGVuR0wgZGVmaW5lLgoKCSogZGxscy9vbGUzMi9zdG9yYWdlMzIuYywgZGxscy9vbGUzMi9zdG9yYWdlMzIuaCwKCSAgZGxscy9vbGUzMi90ZXN0cy9zdG9yYWdlMzIuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2Ugc3VyZSBhIHN0cmVhbSBjYW4ndCBiZSBjcmVhdGVkIGluIHJlYWQgb25seSBzdG9yYWdlLgoKCSogZGxscy91c2VyL3dpbi5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQXZvaWQgYSBjcmFzaCBpbiBmcmVlX3dpbmRvd19oYW5kbGUoKSBvbiBhbiBpbnZhbGlkIHdpbmRvdyBoYW5kbGUuCgoJKiBkbGxzL01ha2VmaWxlLmluLCBkbGxzL21ha2VfZGxsczoKCUJ1aWxkIGltcG9ydCBsaWJyYXJpZXMgYWxzbyB3aGVuIG9ubHkgZG9pbmcgYW4gaW5zdGFsbC1saWIuCgoJKiBkbGxzL2RpbnB1dC9kaW5wdXRfbWFpbi5jLCBkbGxzL2RpbnB1dC9kaW5wdXRfcHJpdmF0ZS5oLAoJICBkbGxzL2RpbnB1dC9qb3lzdGlja19saW51eC5jLCBkbGxzL2RpbnB1dC90ZXN0cy9qb3lzdGljay5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUZpeCBTZXRQcm9wZXJ0eSBlcnJvciByZXR1cm5lZC4KCUFkZCBFbnVtRGV2aWNlIGpveXN0aWNrIHZlcnNpb24gY2hlY2suCglUZXN0IG11bHRpcGxlIHZlcnNpb25zLgoKCSogZGxscy9udGRsbC9leGNlcHRpb24uYzogTWlrZSBIZWFybiA8bWlrZUBuYXZpLmN4PgoJTWFrZSB1bmltcGxlbWVudGVkIGZ1bmN0aW9uIG1lc3NhZ2UgYSBiaXQgcHJldHRpZXIuCgoJKiBkbGxzL21zaS9hY3Rpb24uYywgZGxscy9tc2kvbXNpcHJpdi5oOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gRXhlY3V0ZUFjdGlvbiBydW5zIHRoZSB3aG9sZSBFeGVjdXRlIHRhYmxlIGFuZCBub3QganVzdCBmcm9tCgkgIEluc3RhbGxWYWxpZGF0ZSBvbndhcmQuICBUbyBkbyB0aGlzIG1ha2Ugc3VyZSB3ZSBkbyBub3QgZG8gdGhlCgkgIGNvc3RpbmcgaW5pdGlhbGl6YXRpb24gd29yayBhZ2FpbiBpZiBpdCBpcyBhbHJlYWR5IGRvbmUgKGJ5IGNoZWNraW5nCgkgIHRoZSBDb3N0aW5nQ29tcGxldGUgUHJvcGVydHkpLgoJLSBBIGxvdCBvZiB3b3JrIHRvIHJlZmluZSBmZWF0dXJlIHN0YXRlcywgc2V0dGluZyB0aGUgc3RhdGUgYWZmZWN0cwoJICB0aGUgc3RhdGUgb2YgYWxsIGNoaWxkIGZlYXR1cmVzIGFuZCBhbHNvIHJlc3BlY3QgZmVhdHVyZXMgdGhhdCB3YW50CgkgIHRvIGRlZmF1bHQgdG8gc29tZXRoaW5nIG90aGVyIHRoYW4gTE9DQUwuCgoJKiBkbGxzL250ZGxsL250LmM6IFBhdWwgVnJpZW5zIDxQYXVsLlZyaWVuc0B4czRhbGwubmw+CglBZGRlZCAoc3R1YmJlZCkgU3lzdGVtRHJpdmVySW5mb3JtYXRpb24gYW5kCglTeXN0ZW1JbnRlcnJ1cHRJbmZvcm1hdGlvbi4KCgkqIHByb2dyYW1zL25vdGVwYWQvbWFpbi5jOiBLZXZpbiBLb2x0emF1IDxrZXZpbkBwbG9wLm9yZz4KCUVuYWJsZS9kaXNhYmxlIG1lbnUgaXRlbXMgYmFzZWQgb24gZWRpdCBjb250cm9sIHN0YXRlLgoKCSogZGxscy9ycGNydDQvcnBjX3NlcnZlci5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIEZpeCBScGNTZXJ2ZXJMaXN0ZW4gc28gdGhhdCBpdCBkb2Vzbid0IHJldHVybgoJICBSUENfU19BTFJFQURZX0xJU1RFTklORyB3aGVuIHRoZSBvbmx5IGludGVyZmFjZXMgaXQgaXMgbGlzdGVuaW5nIG9uCgkgIGFyZSBhdXRvIGxpc3RlbnMuCgktIE9ubHkgc3luY2hyb25pemUgd2l0aCBzZXJ2ZXIgdGhyZWFkIHdoZW4gbmVjZXNzYXJ5IGFuZCBtb3ZlIHRoaXMKCSAgaW50byBScGNNZ210V2FpdFNlcnZlckxpc3Rlbi4KCgkqIGRsbHMvc2hlbGwzMi9zaGZsZHJfdW5peGZzLmM6CglNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglSZXBsYWNlICdcXCcgYnkgJy8nIGluIHN0cmluZ3MgcGFzc2VkIHRvIFBhcnNlRGlzcGxheU5hbWUgdG8gYmUgYWJsZQoJdG8gaGFuZGxlIERPUy1zdHlsZSByZWxhdGl2ZSBwYXRocy4KCjIwMDUtMDUtMTIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL29sZTMyL2NvbXBvYmpfcHJpdmF0ZS5oLCBkbGxzL29sZTMyL2ZpbGVtb25pa2VyLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglSZW1vdmUgdW5uZWNlc3NhcnkgZGVjbGFyYXRpb25zIGFuZCBtYWtlIGZ1bmN0aW9ucyBzdGF0aWMuCgoJKiBkbGxzL2NvbWN0bDMyL3RhYi5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJSGFuZGxlIFdNX05DQ0FMQ1NJWkUgaW4gdGhlIHRhYiBjb250cm9sLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglTcGxpdCBTSEdldEZpbGVJbmZvVyBpbnRvIHR3byBmdW5jdGlvbnMuCgoJKiBkbGxzL3gxMWRydi9jbGlwYm9hcmQuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCURvIG5vdCBwYXNzIGFuIGludmFsaWQgdGFyZ2V0IGJ1ZmZlciBpbmZvIHRvIFdpZGVDaGFyVG9NdWx0aUJ5dGUuCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZ2Jyb3dzZXIuYzogTWlrZSBIZWFybiA8bWlrZUBuYXZpLmN4PgoJRml4IHJldHVybiBjb2RlIGFidXNlLgoKCSogZGxscy9zaGVsbDMyL3NoZmxkcl91bml4ZnMuYzogTWljaGFlbCBMaW4gPG1saW5AY29ydnUuY29tLmF1PgoJLSBJbXBsZW1lbnQgSVBlcnNpc3RGb2xkZXIyLgoJLSBSZXRyaWV2ZSB0aGUgY29ycmVjdCBhdHRyaWJ1dGVzIGluIFBhcnNlRGlzcGxheU5hbWUoKS4KCgkqIGRsbHMvb3BlbmdsMzIvd2dsLmMsIGRsbHMvb3BlbmdsMzIvd2dsX2V4dC5jOgoJUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CgktIGJldHRlciByb2J1c3RuZXNzIG9mIHBidWZmZXIgY29kZSAoY2hlY2tzLCBTZXRMYXN0RXJyb3IgYXMgc3BlY3MsIGV0Yy4uLikuCgktIGJldHRlciBoZXVyaXN0aWMgZm9yIFdHTF9yZW5kZXJfdGV4dHVyZSBhbmQgZmlyc3QgdHJ5IG9mCgkgIFdHTF9yZW5kZXJfdGV4dHVyZSAiZW11bGF0aW9uIiB1c2luZyBQYnVmZmVycyAoZGVhY3RpdmF0ZWQgYnkKCSAgZGVmYXVsdCkKCS0gbW9yZSB0cmFjZXMKCgkqIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvc2NoYW5uZWwuaCwgaW5jbHVkZS9zY2hubHNwLmg6CglKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglBZGRlZCBzY2hhbm5lbCBoZWFkZXIgZmlsZXMuCgoJKiBkbGxzL21zdmNydC9maWxlLmM6IDx3aW5lLmxhcnJ5LmVuZ2hvbG1AeG94eS5uZXQ+CglGbHVzaCBvdXRwdXQgYnVmZmVycyBmcm9tIF9jbG9zZSgpIHJhdGhlciB0aGFuIE1TVkNSVF9mY2xvc2UoKS4KCgkqIGRsbHMvbnRkbGwvdGltZS5jOiBHYWJyaWVsIEdhbWJldHRhIDxnYWJyaWVsQE15c3RlcnlTdHVkaW8uY29tPgoJQWRkZWQgVVlUIHRvIFRaX0lORk8uCgoyMDA1LTA1LTExICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy91c2VyL3Byb3BlcnR5LmMsIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwKCSAgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3RyYWNlLmMsIHNlcnZlci93aW5kb3cuYzoKCUFsbG93IHBhc3NpbmcgYSBzdHJpbmcgdG8gdGhlIHdpbmRvdyBwcm9wZXJ0eSBzZXJ2ZXIgcmVxdWVzdHMgaW5zdGVhZAoJb2YgYW4gYXRvbSB0byBhdm9pZCByZWR1bmRhbnQgc2VydmVyIHJvdW5kLXRyaXBzLgoKCSogc2VydmVyL2F0b20uYywgc2VydmVyL29iamVjdC5oOgoJQ2hhbmdlZCBhdG9tIGhhbmRsaW5nIHRvIHVzZSBjb3VudGVkIHN0cmluZ3MgaW5zdGVhZCBvZgoJbnVsbC10ZXJtaW5hdGVkIG9uZXMsIGF2b2lkaW5nIHRoZSBuZWVkIGZvciBhIHRlbXBvcmFyeSBidWZmZXIuCgoJKiBkb2N1bWVudGF0aW9uL1JFQURNRS5wdF9icjogRGltaSBQYXVuIDxkaW1pQGxhdHRpY2EuY29tPgoJRml4IHNwZWxsaW5nIGVycm9ycyBkaXNjb3ZlcmVkIGJ5IE1hcmNlbG8gRHVhcnRlLgoKCSogaW5jbHVkZS93aW50ZXJubC5oOiBQYXVsIFZyaWVucyA8cGF1bC52cmllbnNAeHM0YWxsLm5sPgoJU29ydGVkIHNvbWUgb2YgdGhlIHN0cnVjdHMgYW5kIG1hZGUgdGhlbSBjb25zaXN0ZW50LgoKCSogcHJvZ3JhbXMvd2luZWZpbGUvd2luZWZpbGUuYzogTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCUltcHJvdmVkIHZlcnNpb24gb2YgUGlvdHIgQ2FiYW4ncyBidWdmaXggcGF0Y2ggIkZpeGVkIGRpc3BsYXkgYnVnIi4KCgkqIGluY2x1ZGUvZXZudHJhY2UuaDogQWRkZWQgYSBmZXcgbWlzc2luZyBzdHJ1Y3R1cmUgbmFtZXMuCgoJKiBkbGxzL29sZWF1dDMyL3RtYXJzaGFsLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCVVzZSBJX1JwY0dldEJ1ZmZlciBpbnN0ZWFkIG9mIEhlYXBSZUFsbG9jIGZvciBnZXR0aW5nIHRoZSBCdWZmZXIKCW1lbW9yeS4KCgkqIGRsbHMvb2xlMzIvbW9uaWtlci5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglNYWtlIGZ1bmN0aW9ucyBzdGF0aWMgYW5kIHJlbW92ZSB1bm5lY2Vzc2FyeSBkZWNsYXJhdGlvbnMuCgoJKiBkbGxzL3JpY2hlZDIwL3J1bi5jLCBkbGxzL3JpY2hlZDIwL3N0eWxlLmM6CglJdmFuIExlbyBQdW90aSA8aXZhbmxlb0BnbWFpbC5jb20+CglGaXggY3Jhc2ggaW4gTUVfR2V0UnVuU2l6ZUNvbW1vbigpLiBUdXJuIGEgRklYTUUgaW50byBhIFRSQUNFLgoKCSogZGxscy9udGRsbC90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL250ZGxsL3Rlc3RzL01ha2VmaWxlLmluLAoJICBkbGxzL250ZGxsL3Rlc3RzL2F0b20uYzoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJU29tZSB0ZXN0cyBmb3IgTlRETEwgYXRvbSBzdXBwb3J0IChieSBHefZyZ3kgJ05vZycgSmVuZXkpLgoKCSogZGxscy9udGRsbC9NYWtlZmlsZS5pbiwgZGxscy9udGRsbC9hdG9tLmMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywKCSAgaW5jbHVkZS93aW50ZXJubC5oOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglJbXBsZW1lbnRlZCBOVERMTCBhdG9tIHN1cHBvcnQuCgoJKiBkbGxzL3VzZXIvaG9vay5jLCBkbGxzL3VzZXIvbWVzc2FnZS5jLCBkbGxzL3VzZXIvdXNlcl9wcml2YXRlLmgsCgkgIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwgc2VydmVyL2hvb2suYywgc2VydmVyL3Byb3RvY29sLmRlZiwKCSAgc2VydmVyL3F1ZXVlLmMsIHNlcnZlci90cmFjZS5jLCBzZXJ2ZXIvdXNlci5oOgoJU3RvcmUgYSBiaXRtYXAgb2YgYWN0aXZlIGhvb2tzIG9uIHRoZSBjbGllbnQgc2lkZSB0byB0cnkgdG8gYXZvaWQKCXNlcnZlciBjYWxscyBmb3IgaG9va3MgdGhhdCBhcmUgbm90IHNldC4KCgkqIGRsbHMvYWR2YXBpMzIvYWR2YXBpMzIuc3BlYywgZGxscy9hZHZhcGkzMi9ldmVudGxvZy5jLAoJICBpbmNsdWRlL2V2bnRyYWNlLmg6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQWRkIGEgc3R1YiBpbXBsZW1lbnRhdGlvbiBvZiBSZWdpc3RlclRyYWNlR3VpZHMuCgoJKiBkbGxzL21zaS9tc2lxdWVyeS5jLCBkbGxzL21zaS90YWJsZS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQXZvaWQgc29tZSBub24tc3RhbmRhcmQgc3RyIGZ1bmN0aW9ucy4KCgkqIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGRsbHMva2VybmVsL2xvY2FsZS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJU3R1YiBpbXBsZW1lbnRhdGlvbiBmb3IgR2V0R2VvSW5mby4KCgkqIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL29sZTMyLnNwZWM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBZGQgYSBzdHViIGltcGxlbWVudGF0aW9uIG9mIENvSXNIYW5kbGVyQ29ubmVjdGVkLgoKCSogZGxscy9tc3ZpZGVvL21zdmlkZW9fbWFpbi5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglDb3JyZWN0IHRoZSBmdW5jdGlvbiBuYW1lIGluIGEgY29tbWVudC4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL2RpbnB1dC9NYWtlZmlsZS5pbiwKCSAgZGxscy9kaW5wdXQvdGVzdHMvLmN2c2lnbm9yZSwgZGxscy9kaW5wdXQvdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvZGlucHV0L3Rlc3RzL2RpbnB1dF90ZXN0LmgsIGRsbHMvZGlucHV0L3Rlc3RzL2pveXN0aWNrLmMsCgkgIGRsbHMvZGlucHV0L3Rlc3RzL2tleWJvYXJkLmMsIGRsbHMvZGlucHV0L3Rlc3RzL21vdXNlLmMsCgkgIHByb2dyYW1zL3dpbmV0ZXN0L01ha2VmaWxlLmluOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUFkZGVkIGRpbnB1dCB0ZXN0cy4KCgkqIGRsbHMvZ2RpL2VuaG1mZHJ2L2JpdGJsdC5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglDaGVjayB0aGF0IEdldE9iamVjdCBpcyBzdWNjZXNzZnVsLgoKCSogZGxscy9udGRsbC9udGRsbC5zcGVjOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+Cglad1F1ZXJ5VGltZXIgc2hvdWxkIGZvcndhcmQgdG8gTnRRdWVyeVRpbWVyLgoKCSogZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWRkIE1vZHVsZTMyRmlyc3RXIGFuZCBNb2R1bGUzMk5leHRXIGV4cG9ydHMuCgoJKiBkbGxzL2NvbWN0bDMyL3VwZG93bi5jOiBEaW1pIFBhdW4gPGRpbWlAbGF0dGljYS5jb20+CglNYWtlIGl0IG1vcmUgZXhwbGljaXQgaG93IHdlIGRlYWwgd2l0aCBXU19ESVNBQkxFRC4KCgkqIGRsbHMvbXNpL21zaS5jOiBTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCUFkZGVkIG1pbmltYWwgaW1wbGVtZW50YXRpb24gb2YgTXNpQ3JlYXRlQW5kVmVyaWZ5SW5zdGFsbGVyRGlyZWN0b3J5LgoKCSogaW5jbHVkZS93aW5iYXNlLmgsIHByb2dyYW1zL3Rhc2ttZ3IvcGVyZmRhdGEuaDoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglNb3ZlIHtBQk9WRSxCRUxPV31fTk9STUFMX1BSSU9SSVRZX0NMQVNTIHRvIHdpbmJhc2UuaC4KCgkqIGRsbHMvbXN2Y3J0L3Rlc3RzL3ByaW50Zi5jOiA8d2luZS5sYXJyeS5lbmdob2xtQHhveHkubmV0PgoJQWRkIHRlc3QgZm9yIGNvcnJlY3RseSBpbnRlcnByZXRpbmcgJSUgcHJpbnRmIGZvcm1hdCBzdHJpbmcgY29udmVyc2lvbgoJc3BlY2lmaWVyLgoKMjAwNS0wNS0xMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRvY3VtZW50YXRpb24vUkVBRE1FLmRlLCBkb2N1bWVudGF0aW9uL1JFQURNRS5lcywKCSAgZG9jdW1lbnRhdGlvbi9SRUFETUUuZnIsIGRvY3VtZW50YXRpb24vUkVBRE1FLml0LAoJICBkb2N1bWVudGF0aW9uL1JFQURNRS5wdCwgZG9jdW1lbnRhdGlvbi9SRUFETUUucHRfYnI6CglEaW1pdHJpZSBPLiBQYXVuIDxkaW1pQGxhdHRpY2EuY29tPgoJVXBkYXRlIFJFQURNRSB0cmFuc2xhdGlvbnMgdG8gbWF0Y2ggdGhlIGxhdGVzdCBjaGFuZ2VzIHRvIHRoZSBFbmdsaXNoCglSRUFETUUuCgoJKiBwcm9ncmFtcy9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvbWFrZV9wcm9nczoKCU1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuZGU+CglJbnN0YWxsIG1zaWV4ZWMgaW4gdGhlIGJpbiBkaXJlY3RvcnkuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWxfbWFpbi5jLCBkbGxzL2tlcm5lbC9zZWxlY3Rvci5jLAoJICBkbGxzL2tlcm5lbC93b3d0aHVuay5jLCBkbGxzL3dpbmVkb3MvZG9zYXNwaS5jLCBkbGxzL3dpbmVkb3MvaW50MDkuYywKCSAgZGxscy93aW5lZG9zL2ludDEwLmMsIGRsbHMvd2luZWRvcy9pbnQxNi5jLCBkbGxzL3dpbmVkb3MvaW50MTkuYywKCSAgZGxscy93aW5lZG9zL2ludDFhLmMsIGRsbHMvd2luZWRvcy9pbnQyOS5jLCBkbGxzL3dpbmVkb3MvaW50MmYuYywKCSAgZGxscy93aW5lZG9zL2ludDMzLmMsIGRsbHMvd2luZWRvcy9pbnQ2Ny5jLCBkbGxzL3dpbmVkb3MvcHBkZXYuYywKCSAgZGxscy93aW5lZG9zL3ZnYS5jLCBpbmNsdWRlL21pc2NlbXUuaDoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJR2V0IHJpZCBvZiBpbmNsdWRlL21pc2NlbXUuaC4KCgkqIGRsbHMvbXNpL2RhdGFiYXNlLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gbWFrZSBzdXJlIHRvIGZyZWUgdGhlIHN0cmluZyB0YWJsZSB3aGVuIGNsb3NpbmcgdGhlIGRhdGFiYXNlCgktIGRvbid0IGZyZWUgc3pQZXJzaXN0IGluIE1zaU9wZW5EYXRhYmFzZSBpZiBpdCdzIG5vdCBhIHN0cmluZwoKCSogZGxscy9vbGUzMi9zdG9yYWdlMzIuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IGEgbWVtb3J5IGxlYWsgaW4gdGhlIG9sZSBzdG9yYWdlIGltcGxlbWVudGF0aW9uLgoKCSogZGxscy9rZXJuZWwvZG9zbWVtLmMsIGRsbHMva2VybmVsL2dsb2JhbDE2LmMsIGRsbHMva2VybmVsL2luc3RyLmMsCgkgIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGRsbHMva2VybmVsL2tlcm5lbF9wcml2YXRlLmgsCgkgIGRsbHMvd2luZWRvcy9NYWtlZmlsZS5pbiwgZGxscy93aW5lZG9zL2Rvc2V4ZS5oLAoJICBkbGxzL3dpbmVkb3MvZG9zbWVtLmMsIGRsbHMvd2luZWRvcy9kb3N2bS5jLCBkbGxzL3dpbmVkb3MvaW50MjEuYywKCSAgZGxscy93aW5lZG9zL2ludDMxLmMsIGRsbHMvd2luZWRvcy9tb2R1bGUuYywKCSAgZGxscy93aW5lZG9zL3dpbmVkb3Muc3BlYywgaW5jbHVkZS9taXNjZW11Lmg6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCU1vdmVkIERPUyBtZW1vcnkgaGFuZGxpbmcgdG8gd2luZWRvcy4KCgkqIGRsbHMva2VybmVsL2F0b20uYywgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLCBzZXJ2ZXIvYXRvbS5jLAoJICBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcHJvY2Vzcy5oLCBzZXJ2ZXIvcHJvdG9jb2wuZGVmLAoJICBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvdHJhY2UuYzoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJLSBjaGFuZ2VkIEFUT00gc3VwcG9ydCBpbiB3aW5lc2VydmVyIHRvIG1hdGNoIE5URExMIG5lZWRzCgktIGFkYXB0ZWQgYWNjb3JkaW5nbHkga2VybmVsMzIgYXRvbSBzdXBwb3J0CgoJKiBsaWJzL3dpbmUvbG9hZGVyLmM6IFJvYmVydCBMdW5ub24gPGJvYmxAb3B0dXNuZXQuY29tLmF1PgoJQWRkIFJUTERfRklSU1QgZmxhZyB0byBkbG9wZW4gY2FsbHMuCgoJKiBSRUFETUUsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkb2N1bWVudGF0aW9uLy5jdnNpZ25vcmUsCgkgIGRvY3VtZW50YXRpb24vTWFrZWZpbGUuaW4sIGRvY3VtZW50YXRpb24vYWRkcmVzcy1zcGFjZS5zZ21sLAoJICBkb2N1bWVudGF0aW9uL2FyY2hpdGVjdHVyZS5zZ21sLCBkb2N1bWVudGF0aW9uL2J1Z3Muc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9jb25maWd1cmluZy5zZ21sLCBkb2N1bWVudGF0aW9uL2RkcmF3LnNnbWwsCgkgIGRvY3VtZW50YXRpb24vZGVidWdnZXIuc2dtbCwgZG9jdW1lbnRhdGlvbi9kZWJ1Z2dpbmcuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9kb2N1bWVudGF0aW9uLnNnbWwsIGRvY3VtZW50YXRpb24vZmFxLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vZm9udHMuc2dtbCwgZG9jdW1lbnRhdGlvbi9nZXR0aW5nLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vZ2xvc3Nhcnkuc2dtbCwgZG9jdW1lbnRhdGlvbi9pbnRyb2R1Y3Rpb24uc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9tdWx0aW1lZGlhLnNnbWwsIGRvY3VtZW50YXRpb24vb2xlLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vb3BlbmdsLnNnbWwsIGRvY3VtZW50YXRpb24vcGF0Y2hlcy5zZ21sLAoJICBkb2N1bWVudGF0aW9uL3ByaW50aW5nLnNnbWwsIGRvY3VtZW50YXRpb24vcmVnaXN0cnkuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9ydW5uaW5nLnNnbWwsIGRvY3VtZW50YXRpb24vdGVzdGluZy5zZ21sLAoJICBkb2N1bWVudGF0aW9uL3dpbmUtZGV2ZWwuc2dtbCwgZG9jdW1lbnRhdGlvbi93aW5lLWZhcS5zZ21sLAoJICBkb2N1bWVudGF0aW9uL3dpbmUtdXNlci5zZ21sLCBkb2N1bWVudGF0aW9uL3dpbmVkZXYtY29kaW5nLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vd2luZWRldi1ncmFwaGljYWwuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi93aW5lZGV2LWtlcm5lbC5zZ21sLAoJICBkb2N1bWVudGF0aW9uL3dpbmVkZXYtb3RoZXJkZWJ1Zy5zZ21sLAoJICBkb2N1bWVudGF0aW9uL3dpbmVkZXYtd2luZG93aW5nLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vd2luZWxpYi1iaW5kbGxzLnNnbWwsIGRvY3VtZW50YXRpb24vd2luZWxpYi1pbnRyby5zZ21sLAoJICBkb2N1bWVudGF0aW9uL3dpbmVsaWItbWZjLnNnbWwsIGRvY3VtZW50YXRpb24vd2luZWxpYi1wb3J0aW5nLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vd2luZWxpYi10b29sa2l0LnNnbWwsIGRvY3VtZW50YXRpb24vd2luZWxpYi11c2VyLnNnbWw6CglEaW1pIFBhdW4gPGRpbWlAbGF0dGljYS5jb20+CglNb3ZlZCB0aGUgU0dNTCBkb2N1bWVudGF0aW9uIG92ZXIgdG8gU291cmNlRm9yZ2UuCgoJKiBkbGxzL01ha2VkbGwucnVsZXMuaW4sIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvTWFrZXRlc3QucnVsZXMuaW4sCgkgIGRsbHMvbWFrZV9kbGxzLCBwcm9ncmFtcy9NYWtlcHJvZy5ydWxlcy5pbiwKCSAgcHJvZ3JhbXMvYXZpdG9vbHMvTWFrZWZpbGUuaW46CglCdWlsZCBhbmQgbG9hZCBpbXBvcnQgbGlicmFyaWVzIGRpcmVjdGx5IGZyb20gdGhlIGRsbCBkaXJlY3Rvcnkgd2hlcmUKCXBvc3NpYmxlLCBhbmQgb25seSBjcmVhdGUgc3ltbGlua3MgZm9yIGRpcmVjdG9yaWVzIHRoYXQgZG9uJ3QgaGF2ZSB0aGUKCWNvcnJlY3QgbmFtZS4KCgkqIGRsbHMvdXNlci9tZW51LmMsIGRsbHMvdXNlci90ZXN0cy9tZW51LmM6CglSZWluIEtsYXplcyA8d2lqbkB3YW5hZG9vLm5sPgoJTXVsdGkgY29sdW1uIHBvcHVwIG1lbnVzIGhhdmUgNCBwaXhlbCBzcGFjZSBiZXR3ZWVuIHRoZSBjb2x1bW5zLiBXaXRoCgljb25mb3JtYW5jZSB0ZXN0LgoKCSogZGxscy9kaW5wdXQvZGV2aWNlLmMsIGRsbHMvZGlucHV0L2RpbnB1dF9tYWluLmMsCgkgIGRsbHMvZGlucHV0L2pveXN0aWNrX2xpbnV4LmM6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJRml4IGpveXN0aWNrIGNyYXNoIHdoZW4gYSBidXR0b24gZ3VpZCBpcyBzcGVjaWZpZWQgaW4gdGhlIGRhdGEKCWZvcm1hdC4KCUFkZCBzb21lIHBhcmFtZXRlciBjaGVja2luZy4KCgkqIGRsbHMvbnRkbGwvdGVzdHMvaW5mby5jOiBQYXVsIFZyaWVucyA8cGF1bC52cmllbnNAeHM0YWxsLm5sPgoJQWRkZWQgU3lzdGVtSGFuZGxlSW5mb3JtYXRpb24gdGVzdHMuCglSZW1vdmVkIEhlYXBBbGxvYyBpbiB0ZXN0X2Jhc2ljLgoJUmVuYW1lZCB0ZXN0X2Jhc2ljIHRvIHRlc3RfcXVlcnlfYmFzaWMuCgoJKiBkbGxzL250ZGxsL250LmM6IFBhdWwgVnJpZW5zIDxwYXVsLnZyaWVuc0B4czRhbGwubmw+CglBZGRlZCAoc3R1YmJlZCkgU3lzdGVtSGFuZGxlSW5mb3JtYXRpb24uCglTb3J0ZWQgdGhlIGxpc3QuCgoJKiBpbmNsdWRlL3dpbnRlcm5sLmg6IFBhdWwgVnJpZW5zIDxwYXVsLnZyaWVuc0B4czRhbGwubmw+CglDaGFuZ2VkIFN5c3RlbUhhbmRsZUxpc3QgaW50byBTeXN0ZW1IYW5kbGVJbmZvcm1hdGlvbgoJVW5rbm93bjE4IGlzIG5vdyBTeXN0ZW1QYWdlRmlsZUluZm9ybWF0aW9uCglTb21lIGNvbnNpc3RlbmN5IChhZGRlZCBudW1iZXJzIHRvIHRoZSBkZWZpbml0aW9ucykuCgoJKiBkbGxzL29wZW5nbDMyL3dnbC5jOiBSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCUZpeCBhbGxvY2F0ZWQgYnVmZmVyIHNpemUgdG8gYXZvaWQgYnVmZmVyIG92ZXJmbG93LgoKCSogcHJvZ3JhbXMvd2luZWNmZy9kcml2ZXVpLmM6IEphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJLSBSZW1vdmUgdXNlbGVzcyBMVk5fSVRFTUFDVElWQVRFIG5vdGlmaWNhdGlvbiBoYW5kbGluZy4KCS0gVXBkYXRlIGNvbnRyb2xzIGluIHJlc3BvbnNlIHRvIGEgTk1fQ0xJQ0sgbm90aWZpY2F0aW9uLgoKCSogcHJvZ3JhbXMvd2luZWNmZy9kcml2ZXVpLmM6IEphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJUmVtb3ZlIG9sZCBsaXN0Ym94IGNvZGUgZnJvbSBkcml2ZXVpLgoKCSogcHJvZ3JhbXMvd2luZWNmZy9Fbi5yYzogSmFtZXMgSGF3a2lucyA8dHJ1aWtlbkBnbWFpbC5jb20+CglTZXQgbGlzdHZpZXcgc3R5bGUgTFZTX1NJTkdMRVNFTCBzbyBvbmx5IG9uZSBkcml2ZSBjYW4gYmUgc2VsZWN0ZWQuCgoJKiBpbmNsdWRlL21hcGlkZWZzLmg6IEp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCUZpeCBGSUxFVElNRSB0byBtYXRjaCB3aW5iYXNlLmggb24gYmlnLWVuZGlhbiBtYWNoaW5lcy4KCgkqIGRsbHMvc2hlbGwzMi9jcGFuZWxmb2xkZXIuYywgZGxscy9zaGVsbDMyL3NoZmxkcl9kZXNrdG9wLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGZsZHJfZnMuYywgZGxscy9zaGVsbDMyL3NoZmxkcl9teWNvbXAuYzoKCUp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCUZpeGVzIHRvIElTaGVsbEZvbGRlcjo6R2V0QXR0cmlidXRlc09mIGltcGxlbWVudGF0aW9ucywgc3BvdHRlZCBieQoJc2lsdmVyYmxhZGVfOgoJLSBhIGNvdW50IG9mIHplcm8gaXMgYWxsb3dlZCB0byBHZXRBdHRyaWJ1dGVzT2YgaWYgYXBpZGwgaXMgTlVMTAoJLSBTRkdBT19WQUxJREFURSBtdXN0IGJlIGNsZWFyZWQgdXBvbiByZXR1cm4KCgkqIGRsbHMvbXN2Y3J0L3djcy5jOiA8d2luZS5sYXJyeS5lbmdob2xtQHhveHkubmV0PgoJSW50ZXJwcmV0ICUlIGNvcnJlY3RseSBpbiBwcmludGYgZm9ybWF0IHN0cmluZy4KCgkqIGRsbHMvc2hlbGwzMi9waWRsLmM6IE1pa2UgSGVhcm4gPG1oQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBTSEVMTF9HZXRQYXRoRnJvbUlETGlzdFtBV10gdG8gcmV0dXJuIHRoZSBkZXNrdG9wIHBhdGggZ2l2ZW4gYW4KCWVtcHR5IFBJREwuCgoJKiBkbGxzL21zaS9hcHBzZWFyY2guYywgaW5jbHVkZS9tc2lkZWZzLmg6CglKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglQYXJ0aWFsbHkgaW1wbGVtZW50IEFwcFNlYXJjaCBmb3IgUmVnTG9jYXRvci10eXBlIHNlYXJjaGVzLgoKCSogZGxscy94MTFkcnYvb3BlbmdsLmM6IFJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJRml4IFgxMURSVl9DaG9vc2VQaXhlbEZvcm1hdCAgdG8gY2hvb3NlIDI0IGJwcCBhcyAzMiBicHAgZm9yIGRlcHRoCglidWZmZXJzIChuZWVkZWQgYXMgbWFueSBYMTEgZHJpdmVycyBvbmx5IHN1cHBvcnQgMjRicHApLgoKCSogZGxscy9udGRsbC90aW1lLmM6IEp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCUFkZGVkIElyaXNoIFN1bW1lciBUaW1lLgoKMjAwNS0wNS0wOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jLCBkbGxzL21zaS9kaWFsb2cuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglGaXggYSBmZXcgbGVha2luZyBvYmplY3QgaGFuZGxlcy4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnLmM6IE1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCURldGVjdCBkcml2ZSBsZXR0ZXJzLCB3aGljaCBoYXZlIHRvIGhhdmUgYSBiYWNrc2xhc2ggYXBwZW5kZWQsIGluIGEKCW1vcmUgcm9idXN0IHdheS4KCgkqIGRsbHMvc2hlbGwzMi9zaGZsZHJfdW5peGZzLmM6CglNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglTdXBwb3J0IGZvbGRlciByZWxhdGl2ZSBwYXRocyBpbiBVbml4Rm9sZGVycycgUGFyc2VEaXNwbGF5TmFtZQoJbWV0aG9kLgoKCSogZGxscy93aW5lZDNkL2RpcmVjdHguYzogRGFuaWVsIEx1bmQgPGRybWVyY0BnbWFpbC5jb20+CglBZGRlZCBEM0RERVZDQVBTX0hXUkFTVEVSSVpBVElPTiB0byB0aGUgRGV2Q2FwcyBmb3Igc2NlbmUKCXJhc3Rlcml6YXRpb24uIEFsbG93cyBHdWlsZFdhcnMgdG8gc3RhcnQuCgoJKiBkbGxzL2tlcm5lbC9jb21tLmMsIGluY2x1ZGUvd2luYmFzZS5oOgoJQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJRml4IGZvciBDb21tQ29uZmlnRGlhbG9nKigpIGh3bmQgYXJndW1lbnQuCgoJKiBpbmNsdWRlL3dpbnRlcm5sLmg6IFBhdWwgVnJpZW5zIDxwYXVsLnZyaWVuc0B4czRhbGwubmw+CglSZW1vdmUgSEFORExFSU5GTyBzdHJ1Y3QuCglBZGQgU1lTVEVNX0hBTkRMRV9JTkZPUk1BVElPTiBhbmQgU1lTVEVNX0hBTkRMRV9FTlRSWSBzdHJ1Y3RzLgoKCSogZGxscy9vcGVuZ2wzMi93Z2xfZXh0LmM6IEFyaWMgQ3lyIDxhY3lyQGFsdW1uaS51d2F0ZXJsb28uY2E+CglGaXggV0dMX0FDQ0VMRVJBVElPTl9BUkIgcXVlcmllcyBmcm9tIGFwcGxpY2F0aW9ucy4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYzogRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglTb21lIGZpeGVzIG9uIGFzeW5jIHNodXRkb3duLgoKCSogZGxscy9vcGVuZ2wzMi9vcGVuZ2xfZXh0Lmg6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglEZWZpbmUgR0xYX1NBTVBMRV9CVUZGRVJTX0FSQiBhbmQgR0xYX1NBTVBMRVNfQVJCIGlmIHRoZXkgd2VyZSBub3QKCWRlZmluZWQgYnkgdGhlIE9wZW5HTCBoZWFkZXJzLgoKCSogZGxscy9NYWtlZGxsLnJ1bGVzLmluLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2FkdmFwaTMyL01ha2VmaWxlLmluLAoJICBkbGxzL2FkdnBhY2svTWFrZWZpbGUuaW4sIGRsbHMvYW1zdHJlYW0vTWFrZWZpbGUuaW4sCgkgIGRsbHMvYXRsL01ha2VmaWxlLmluLCBkbGxzL2F2aWNhcDMyL01ha2VmaWxlLmluLAoJICBkbGxzL2F2aWZpbDMyL01ha2VmaWxlLmluLCBkbGxzL2NhYmluZXQvTWFrZWZpbGUuaW4sCgkgIGRsbHMvY2FwaTIwMzIvTWFrZWZpbGUuaW4sIGRsbHMvY2FyZHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvY2ZnbWdyMzIvTWFrZWZpbGUuaW4sIGRsbHMvY29tY2F0L01ha2VmaWxlLmluLAoJICBkbGxzL2NvbWN0bDMyL01ha2VmaWxlLmluLCBkbGxzL21ha2VfZGxscywgZGxscy9jb21tZGxnL01ha2VmaWxlLmluLAoJICBkbGxzL2NydGRsbC9NYWtlZmlsZS5pbiwgZGxscy9jcnlwdDMyL01ha2VmaWxlLmluLAoJICBkbGxzL2NyeXB0ZGxsL01ha2VmaWxlLmluLCBkbGxzL2N0bDNkL01ha2VmaWxlLmluLAoJICBkbGxzL2QzZDgvTWFrZWZpbGUuaW4sIGRsbHMvZDNkOS9NYWtlZmlsZS5pbiwgZGxscy9kM2RpbS9NYWtlZmlsZS5pbiwKCSAgZGxscy9kM2RybS9NYWtlZmlsZS5pbiwgZGxscy9kM2R4OC9NYWtlZmlsZS5pbiwKCSAgZGxscy9kM2R4b2YvTWFrZWZpbGUuaW4sIGRsbHMvZGJnaGVscC9NYWtlZmlsZS5pbiwKCSAgZGxscy9kY2ltYW4zMi9NYWtlZmlsZS5pbiwgZGxscy9kZHJhdy9NYWtlZmlsZS5pbiwKCSAgZGxscy9kZXZlbnVtL01ha2VmaWxlLmluLCBkbGxzL2RpbnB1dC9NYWtlZmlsZS5pbiwKCSAgZGxscy9kaW5wdXQ4L01ha2VmaWxlLmluLCBkbGxzL2RtYmFuZC9NYWtlZmlsZS5pbiwKCSAgZGxscy9kbWNvbXBvcy9NYWtlZmlsZS5pbiwgZGxscy9kbWltZS9NYWtlZmlsZS5pbiwKCSAgZGxscy9kbWxvYWRlci9NYWtlZmlsZS5pbiwgZGxscy9kbXNjcmlwdC9NYWtlZmlsZS5pbiwKCSAgZGxscy9kbXN0eWxlL01ha2VmaWxlLmluLCBkbGxzL2Rtc3ludGgvTWFrZWZpbGUuaW4sCgkgIGRsbHMvZG11c2ljL01ha2VmaWxlLmluLCBkbGxzL2RtdXNpYzMyL01ha2VmaWxlLmluLAoJICBkbGxzL2RwbGF5L01ha2VmaWxlLmluLCBkbGxzL2RwbGF5eC9NYWtlZmlsZS5pbiwKCSAgZGxscy9kcG5ldC9NYWtlZmlsZS5pbiwgZGxscy9kcG5ocGFzdC9NYWtlZmlsZS5pbiwKCSAgZGxscy9kc291bmQvTWFrZWZpbGUuaW4sIGRsbHMvZHN3YXZlL01ha2VmaWxlLmluLAoJICBkbGxzL2R4ZGlhZ24vTWFrZWZpbGUuaW4sIGRsbHMvZ2RpL01ha2VmaWxlLmluLAoJICBkbGxzL2dsdTMyL01ha2VmaWxlLmluLCBkbGxzL2dsdXQzMi9NYWtlZmlsZS5pbiwKCSAgZGxscy9pY2N2aWQvTWFrZWZpbGUuaW4sIGRsbHMvaWNtcC9NYWtlZmlsZS5pbiwKCSAgZGxscy9pbWFnZWhscC9NYWtlZmlsZS5pbiwgZGxscy9pbW0zMi9NYWtlZmlsZS5pbiwKCSAgZGxscy9pcGhscGFwaS9NYWtlZmlsZS5pbiwgZGxscy9pdHNzL01ha2VmaWxlLmluLAoJICBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwgZGxscy9semV4cGFuZC9NYWtlZmlsZS5pbiwKCSAgZGxscy9tYXBpMzIvTWFrZWZpbGUuaW4sIGRsbHMvbWxhbmcvTWFrZWZpbGUuaW4sCgkgIGRsbHMvbXByL01ha2VmaWxlLmluLCBkbGxzL21zYWNtL01ha2VmaWxlLmluLCBkbGxzL21zY21zL01ha2VmaWxlLmluLAoJICBkbGxzL21zZG1vL01ha2VmaWxlLmluLCBkbGxzL21zaHRtbC9NYWtlZmlsZS5pbiwKCSAgZGxscy9tc2kvTWFrZWZpbGUuaW4sIGRsbHMvbXNpbWczMi9NYWtlZmlsZS5pbiwKCSAgZGxscy9tc25ldDMyL01ha2VmaWxlLmluLCBkbGxzL21zcmxlMzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvbXN2Y3J0L01ha2VmaWxlLmluLCBkbGxzL21zdmNydDIwL01ha2VmaWxlLmluLAoJICBkbGxzL21zdmNydDQwL01ha2VmaWxlLmluLCBkbGxzL21zdmNydGQvTWFrZWZpbGUuaW4sCgkgIGRsbHMvbXN2aWRjMzIvTWFrZWZpbGUuaW4sIGRsbHMvbXN2aWRlby9NYWtlZmlsZS5pbiwKCSAgZGxscy9tc3dzb2NrL01ha2VmaWxlLmluLCBkbGxzL25ldGFwaTMyL01ha2VmaWxlLmluLAoJICBkbGxzL25ld2Rldi9NYWtlZmlsZS5pbiwgZGxscy9udGRsbC9NYWtlZmlsZS5pbiwKCSAgZGxscy9vZGJjMzIvTWFrZWZpbGUuaW4sIGRsbHMvb2xlMzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvb2xlYWNjL01ha2VmaWxlLmluLCBkbGxzL29sZWF1dDMyL01ha2VmaWxlLmluLAoJICBkbGxzL29sZWNsaS9NYWtlZmlsZS5pbiwgZGxscy9vbGVkbGcvTWFrZWZpbGUuaW4sCgkgIGRsbHMvb2xlcHJvMzIvTWFrZWZpbGUuaW4sIGRsbHMvb2xlc3ZyL01ha2VmaWxlLmluLAoJICBkbGxzL29wZW5nbDMyL01ha2VmaWxlLmluLCBkbGxzL3Bvd3Jwcm9mL01ha2VmaWxlLmluLAoJICBkbGxzL3BzYXBpL01ha2VmaWxlLmluLCBkbGxzL3FjYXAvTWFrZWZpbGUuaW4sCgkgIGRsbHMvcXVhcnR6L01ha2VmaWxlLmluLCBkbGxzL3Jhc2FwaTMyL01ha2VmaWxlLmluLAoJICBkbGxzL3JpY2hlZDIwL01ha2VmaWxlLmluLCBkbGxzL3JpY2hlZGl0L01ha2VmaWxlLmluLAoJICBkbGxzL3JwY3J0NC9NYWtlZmlsZS5pbiwgZGxscy9yc2FiYXNlL01ha2VmaWxlLmluLAoJICBkbGxzL3JzYWVuaC9NYWtlZmlsZS5pbiwgZGxscy9zZWN1cjMyL01ha2VmaWxlLmluLAoJICBkbGxzL3NlbnNhcGkvTWFrZWZpbGUuaW4sIGRsbHMvc2VyaWFsdWkvTWFrZWZpbGUuaW4sCgkgIGRsbHMvc2V0dXBhcGkvTWFrZWZpbGUuaW4sIGRsbHMvc2hkb2N2dy9NYWtlZmlsZS5pbiwKCSAgZGxscy9zaGVsbDMyL01ha2VmaWxlLmluLCBkbGxzL3NoZm9sZGVyL01ha2VmaWxlLmluLAoJICBkbGxzL3NobHdhcGkvTWFrZWZpbGUuaW4sIGRsbHMvc25tcGFwaS9NYWtlZmlsZS5pbiwKCSAgZGxscy9zdGkvTWFrZWZpbGUuaW4sIGRsbHMvdGFwaTMyL01ha2VmaWxlLmluLAoJICBkbGxzL3R3YWluL01ha2VmaWxlLmluLCBkbGxzL3VuaWNvd3MvTWFrZWZpbGUuaW4sCgkgIGRsbHMvdXJsL01ha2VmaWxlLmluLCBkbGxzL3VybG1vbi9NYWtlZmlsZS5pbiwgZGxscy91c2VyL01ha2VmaWxlLmluLAoJICBkbGxzL3V4dGhlbWUvTWFrZWZpbGUuaW4sIGRsbHMvdmRtZGJnL01ha2VmaWxlLmluLAoJICBkbGxzL3ZlcnNpb24vTWFrZWZpbGUuaW4sIGRsbHMvd2luMzJzL01ha2VmaWxlLmluLAoJICBkbGxzL3dpbmFzcGkvTWFrZWZpbGUuaW4sIGRsbHMvd2luZWQzZC9NYWtlZmlsZS5pbiwKCSAgZGxscy93aW5lZG9zL01ha2VmaWxlLmluLCBkbGxzL3dpbmluZXQvTWFrZWZpbGUuaW4sCgkgIGRsbHMvd2lubW0vTWFrZWZpbGUuaW4sIGRsbHMvd2lubmxzL01ha2VmaWxlLmluLAoJICBkbGxzL3dpbnNvY2svTWFrZWZpbGUuaW4sIGRsbHMvd2luc3Bvb2wvTWFrZWZpbGUuaW4sCgkgIGRsbHMvd2ludGFiMzIvTWFrZWZpbGUuaW4sIGRsbHMvd2ludHJ1c3QvTWFrZWZpbGUuaW4sCgkgIGRsbHMvd293MzIvTWFrZWZpbGUuaW4sIGRsbHMvd3NvY2szMi9NYWtlZmlsZS5pbiwKCSAgZGxscy93dHNhcGkzMi9NYWtlZmlsZS5pbjoKCUFkZGVkIHJ1bGVzIGZvciBidWlsZGluZyBpbXBvcnQgbGlicmFyaWVzIGluIHRoZSBpbmRpdmlkdWFsIGRsbAoJbWFrZWZpbGVzLCBhbmQgYWRkZWQgc3VwcG9ydCBmb3IgYnVpbGRpbmcgYSAuZGVmLmEgc3RhdGljIGltcG9ydAoJbGlicmFyeSB0b28uCgoJKiB0b29scy93aW5lZ2NjL3dpbmVnY2MuYzoKCUZvciBlYWNoIGltcG9ydGVkIGRsbCwgY2hlY2sgaWYgdGhlcmUgaXMgYSBzdGF0aWMgbGlicmFyeSB3aXRoIHRoZQoJc2FtZSBiYXNlIG5hbWUgYXMgdGhlIGltcG9ydCBsaWJyYXJ5LCBhbmQgaWYgeWVzIGFkZCBpdCB0byB0aGUgbGlicmFyeQoJbGlzdC4KCgkqIGluY2x1ZGUvd2ludGVybmwuaDogUGF1bCBWcmllbnMgPHBhdWwudnJpZW5zQHhzNGFsbC5ubD4KCVJlbW92ZSB0aGUgbm90IHVzZWQgUFJPQ0VTU19JTkZPIHN0cnVjdC4KCgkqIHByb2dyYW1zL3dpbmVjZmcvRW4ucmMsIHByb2dyYW1zL3dpbmVjZmcvZHJpdmV1aS5jOgoJSmFtZXMgSGF3a2lucyA8dHJ1aWtlbkBnbWFpbC5jb20+CglVc2UgYSBsaXN0dmlldyBpbnN0ZWFkIG9mIGEgbGlzdGJveCBmb3IgZHJpdmVzIGxpc3QuCgoJKiB0b29scy93aW5lc2hlbGxsaW5rOiBMYXVyZW50IEJsdW1lIDxsYXVyZW50QGVsYW5vci5vcmc+CglSZXBsYWNlIHRoZSB0ZXN0IG9mIHRoZSB3aGljaCBjb21tYW5kIGZvciB0eXBlIGNvbW1hbmQgdG8gZ2V0IHNpbWlsYXIKCWJlaGF2aW91ciBvbiBhbGwgT1Nlcy4KCgkqIGRsbHMvb2xlMzIvc3RnX3Byb3AuYzogSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJQ29ycmVjdC9pbXByb3ZlIGVycm9yIGNoZWNraW5nIGluIElQcm9wZXJ0eVN0b3JhZ2UuCgoJKiBzZXJ2ZXIvdG9rZW4uYywgdG9vbHMvd3JjL3dyY3R5cGVzLmg6CglNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmRlPgoJQ2hhbmdlIHRoZSB0eXBlIG9mIDEgYml0IHdpZGUgYml0ZmllbGRzIHRvIHVuc2lnbmVkLgoKCSogZGxscy9zaGVsbDMyL3NoZmxkcl91bml4ZnMuYzoKCU1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCUFsd2F5cyBwYXNzIGZ1bGx5IHF1YWxpZmllZCBwYXRocyB0byBzdGF0IHN5c3RlbSBjYWxsLgoKCSogc2VydmVyL25hbWVkX3BpcGUuYzogRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglGaXhlZCBhIHdyb25nIG9wcyB3aGVuIGNyZWF0aW5nIG5hbWVkIHBpcGUgY2xpZW50LgoKCSogZGxscy9zaGVsbDMyL3NocmVzLnJjOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJSXQgbWFrZXMgbm8gc2Vuc2UgdG8gaGF2ZSBhIGxlZnQgcG9pbnRpbmcgYXJyb3cgYXMgdGhlIGRlc2t0b3AgaWNvbi4KCVJlcGxhY2UgaXQgd2l0aCBzb21ldGhpbmcgbW9yZSBhcHByb3BpYXRlLgoKCSogZGxscy9kaW5wdXQvbW91c2UuYzogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gV2luZG93cyByZXBvcnRzIDB4ODAgb24gcHJlc3NlZCBidXR0b25zIG5vdCAweEZGCgktIHRyYWNlIHRoZSBldmVudHMgcmVwb3J0ZWQgdG8gdGhlIGFwcGxpY2F0aW9uCgoJKiBkbGxzL2NvbWN0bDMyL2lwYWRkcmVzcy5jOgoJRmVsaXggTmF3b3RobmlnIDxmZWxpeC5uYXdvdGhuaWdAdC1vbmxpbmUuZGU+CglJbXBsZW1lbnRlZCBXTV9FTkFCTEUuCgoJKiBkbGxzL2Rzb3VuZC9idWZmZXIuYywgZGxscy9kc291bmQvZHNvdW5kX3ByaXZhdGUuaCwKCSAgZGxscy9kc291bmQvbWl4ZXIuYzoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglSZW1vdmUgZGVhZCBjb2RlIGFuZCByZWR1bmRhbnQgdmFyaWFibGVzIGZyb20gRFNPVU5EX0NhbGNQbGF5UG9zaXRpb24KCWFuZCBjYWxsZXJzLgoKCSogcHJvZ3JhbXMvbm90ZXBhZC9EZS5yYywgcHJvZ3JhbXMvcmVnZWRpdC9EZS5yYywKCSAgcHJvZ3JhbXMvdW5pbnN0YWxsZXIvRGUucmM6CglIZW5uaW5nIEdlcmhhcmR0IDxoZW5uaW5nLmdlcmhhcmR0QHdlYi5kZT4KCVVwZGF0ZSBHZXJtYW4gcmVzb3VyY2UgZmlsZXMuCgoyMDA1LTA1LTA3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogdG9vbHMvd2luZWJ1aWxkL2ltcG9ydC5jLCB0b29scy93aW5lYnVpbGQvcGFyc2VyLmMsCgkgIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYywgdG9vbHMvd2luZWJ1aWxkL3dpbmVidWlsZC5tYW4uaW46CglSZW1vdmVkIG5vIGxvbmdlciB1c2VkIHN1cHBvcnQgZm9yIDMyLWJpdCByZWdpc3RlciBlbnRyeSBwb2ludHMuCgoJKiBkbGxzL01ha2VkbGwucnVsZXMuaW4sIHRvb2xzL2MybWFuLnBsOgoJV2lsbGlhbSBQb2V0cmEgWW9nYSBIIDx3aWxsaWFtcG9ldHJhQHlhaG9vLmNvbT4KCVN1cHBvcnQgYnVpbGRpbmcgbWFuIHBhZ2VzIG91dHNpZGUgb2YgdGhlIHNvdXJjZSBkaXJlY3RvcnkuCgoJKiBkbGxzL2tlcm5lbC9oZWFwLmMsIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsCgkgIGRsbHMva2VybmVsL2tybmwzODYuZXhlLnNwZWMsIGRsbHMva2VybmVsL25lX21vZHVsZS5jLAoJICBkbGxzL2tlcm5lbC9zZWxlY3Rvci5jLCBkbGxzL2tlcm5lbC90aHVuay5jLCBkbGxzL2tlcm5lbC92eGQuYzoKCUNvbnZlcnRlZCBhbGwgdGhlIGtlcm5lbDMyIHJlZ2lzdGVyIGZ1bmN0aW9ucyB0byB0aGUKCURFRklORV9SRUdTX0VOVFJZUE9JTlQgbWVjaGFuaXNtLgoKCSogZGxscy9xY2FwL01ha2VmaWxlLmluLCBkbGxzL3FjYXAvY2FwdHVyZWdyYXBoLmMsCgkgIGRsbHMvcWNhcC9xY2FwX21haW4uYzoKCVJvbGYgS2FsYmVybWF0dGVyIDxyb2xmLmthbGJlcm1hdHRlckBjaXRlbmcuY29tPgoJSW1wbGVtZW50IElDYXB0dXJlR3JhcGhCdWlsZGVyIGFuZCBJY2FwdHVyZUdyYXBoQnVpbGRlcjIgYmFzZWQgb24KCU1hYXJ0ZW4gTGFua2hvcnN0J3MgcGF0Y2guCgoJKiBkbGxzL21zdmNydC9jcHBleGNlcHQuYywgZGxscy9tc3ZjcnQvZXhjZXB0LmMsCgkgIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmMsIGRsbHMvbnRkbGwvbnRkbGxfbWlzYy5oLCBkbGxzL250ZGxsL3J0bC5jLAoJICBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmMsIGRsbHMvbnRkbGwvc2lnbmFsX3Bvd2VycGMuYywKCSAgZGxscy9udGRsbC9zaWduYWxfc3BhcmMuYywgaW5jbHVkZS93aW5lL3BvcnQuaDoKCVByZWZpeCB0aGUgaW50ZXJuYWwgbmFtZSBvZiBhbGwgcmVnaXN0ZXIgZnVuY3Rpb25zIHdpdGggX19yZWdzXyBmb3IKCWJldHRlciBjb25zaXN0ZW5jeSBhbmQgdG8gbWFrZSBhdXRvbWF0ZWQgY2hlY2tpbmcgcG9zc2libGUuCgoJKiBwcm9ncmFtcy93aW5lY2ZnL0VuLnJjLCBwcm9ncmFtcy93aW5lY2ZnL2FwcGRlZmF1bHRzLmMsCgkgIHByb2dyYW1zL3dpbmVjZmcvcHJvcGVydGllcy5jLCBwcm9ncmFtcy93aW5lY2ZnL3Jlc291cmNlLmg6CglHZXQgcmlkIG9mIHRoZSBET1MgdmVyc2lvbiBjb21ib2JveCwgbm9ybWFsIHVzZXJzIHNob3VsZCBuZXZlciBuZWVkIHRvCgljaGFuZ2UgaXQuCgoJKiBkbGxzL3FjYXAvTWFrZWZpbGUuaW4sIGRsbHMvcWNhcC9kbGxzZXR1cC5jLCBkbGxzL3FjYXAvZGxsc2V0dXAuaCwKCSAgZGxscy9xY2FwL3FjYXAuc3BlYywgZGxscy9xY2FwL3FjYXBfbWFpbi5jLCBkbGxzL3FjYXAvcWNhcF9tYWluLmg6CglSb2xmIEthbGJlcm1hdHRlciA8cm9sZi5rYWxiZXJtYXR0ZXJAY2l0ZW5nLmNvbT4KCUltcGxlbWVudCBETEwgcmVnaXN0ZXJpbmcgYW5kIHVucmVnaXN0ZXJpbmcgZnVuY3Rpb25zLCBjbGFzcyBmYWN0b3J5CglhbmQgc2VydmVyIGxvY2tpbmcgYmFzZWQgb24gaG93IGl0IGlzIGRvbmUgd2l0aCBEaXJlY3RYIHNhbXBsZXMuCgoJKiBkbGxzL3gxMWRydi9ncmFwaGljcy5jOiBSZWluIEtsYXplcyA8d2lqbkB3YW5hZG9vLm5sPgoJRG9uJ3Qgc2V0IHRoZSBwZW4gd2lkdGggdG8gMSBpbiBYMTFEUlZfUG9seUxpbmUuCgoJKiB0b29scy93aW5lYnVpbGQvaW1wb3J0LmM6CglVc2UgUmFpc2VFeGNlcHRpb24gaW5zdGVhZCBvZiBSdGxSYWlzZUV4Y2VwdGlvbiBmb3IgZGVsYXllZCBlbnRyeQoJcG9pbnRzIGxvYWQgZmFpbHVyZSB0byBhdm9pZCBjcmVhdGluZyBhIGRlcGVuZGVuY3kgb24gbnRkbGwuCgoJKiBkbGxzL3VzZXIvd2luLmMsIHNlcnZlci91c2VyLmM6CglUcmVhdCAweGZmZmYgdGhlIHNhbWUgYXMgMCBmb3IgdGhlIGhhbmRsZSBnZW5lcmF0aW9uIGZpZWxkIHRvIGF2b2lkCglzaWduIGV4dGVuc2lvbiBwcm9ibGVtcy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBsaWJzL3BvcnQvZnV0aW1lcy5jOgoJUm9iZXJ0IEx1bm5vbiA8Ym9ibEBvcHR1c2hvbWUuY29tLmF1PgoJSW1wbGVtZW50IGZ1dGltZXMgZm9yIFNvbGFyaXMgdXNpbmcgZnV0aW1lc2F0LgoKCSogZGxscy9udGRsbC90aW1lLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglBZGQgdGhlICdXZXN0ZXJuIEV1cm9wZWFuIFN1bW1lciBUaW1lJyAoV0VTVCkgdGltZXpvbmUgKHJlcG9ydGVkIGJ5CglKb3PpIE1lbG8pLgoKCSogcHJvZ3JhbXMvd2luZW1lbnVidWlsZGVyL3dpbmVtZW51YnVpbGRlci5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+Cgl3aW5lbWVudWJ1aWxkZXIuYyBpcyB0aGUgb25seSBXaW5lIHNvdXJjZSBmaWxlIGNoZWNraW5nIGZvcgoJSEFWRV9TVFJJTkdfSC4gUmVtb3ZlIHRoYXQgY2hlY2sgZm9yIGNvbnNpc3RlbmN5LgoKCSogcHJvZ3JhbXMvd2luZWNmZy9EZS5yYywgcHJvZ3JhbXMvd2luZWNmZy9Fbi5yYywKCSAgcHJvZ3JhbXMvd2luZWNmZy9kcml2ZXVpLmMsIHByb2dyYW1zL3dpbmVjZmcvcmVzb3VyY2UuaDoKCU1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCVRoZSB1bml4ZnMgZXh0ZW5zaW9uIGRvZXNuJ3QgaGF2ZSBhIGRpc3Rpbmd1aXNoZWQgJy8nIG5vZGUgYW55bW9yZS4KCU1vdmVkIFVJIHN0cmluZyBpbnRvIHRoZSByZXNvdXJjZXMuCgoJKiBkbGxzL3NoZWxsMzIvc2hmbGRyX3VuaXhmcy5jOiBSb2JlcnQgTHVubm9uIDxib2JsQG9wdHVzaG9tZS5jb20uYXU+CglNYWtlIHJlZmVyZW5jZXMgdG8gTkFNRV9NQVggcmVmZXIgdG8gUEFUSF9NQVggaW5zdGVhZC4KCgkqIE1ha2UucnVsZXMuaW4sIGRsbHMvTWFrZWRsbC5ydWxlcy5pbiwgZGxscy9NYWtlZmlsZS5pbiwKCSAgZGxscy9NYWtldGVzdC5ydWxlcy5pbiwgZGxscy9hZHZhcGkzMi8uY3ZzaWdub3JlLAoJICBkbGxzL2FkdnBhY2svLmN2c2lnbm9yZSwgZGxscy9hbXN0cmVhbS8uY3ZzaWdub3JlLAoJICBkbGxzL2F0bC8uY3ZzaWdub3JlLCBkbGxzL2F2aWNhcDMyLy5jdnNpZ25vcmUsCgkgIGRsbHMvYXZpZmlsMzIvLmN2c2lnbm9yZSwgZGxscy9jYWJpbmV0Ly5jdnNpZ25vcmUsCgkgIGRsbHMvY2FwaTIwMzIvLmN2c2lnbm9yZSwgZGxscy9jYXJkcy8uY3ZzaWdub3JlLAoJICBkbGxzL2NmZ21ncjMyLy5jdnNpZ25vcmUsIGRsbHMvY29tY2F0Ly5jdnNpZ25vcmUsIGRsbHMvbWFrZV9kbGxzLAoJICBkbGxzL2NvbWN0bDMyLy5jdnNpZ25vcmUsIGRsbHMvY29tbWRsZy8uY3ZzaWdub3JlLAoJICBkbGxzL2NydGRsbC8uY3ZzaWdub3JlLCBkbGxzL2NyeXB0MzIvLmN2c2lnbm9yZSwKCSAgZGxscy9jcnlwdGRsbC8uY3ZzaWdub3JlLCBkbGxzL2N0bDNkLy5jdnNpZ25vcmUsCgkgIGRsbHMvZDNkOC8uY3ZzaWdub3JlLCBkbGxzL2QzZDkvLmN2c2lnbm9yZSwgZGxscy9kM2RpbS8uY3ZzaWdub3JlLAoJICBkbGxzL2QzZHJtLy5jdnNpZ25vcmUsIGRsbHMvZDNkeDgvLmN2c2lnbm9yZSwgZGxscy9kM2R4b2YvLmN2c2lnbm9yZSwKCSAgZGxscy9kYmdoZWxwLy5jdnNpZ25vcmUsIGRsbHMvZGNpbWFuMzIvLmN2c2lnbm9yZSwKCSAgZGxscy9kZHJhdy8uY3ZzaWdub3JlLCBkbGxzL2RldmVudW0vLmN2c2lnbm9yZSwKCSAgZGxscy9kaW5wdXQvLmN2c2lnbm9yZSwgZGxscy9kaW5wdXQ4Ly5jdnNpZ25vcmUsCgkgIGRsbHMvZG1iYW5kLy5jdnNpZ25vcmUsIGRsbHMvZG1jb21wb3MvLmN2c2lnbm9yZSwKCSAgZGxscy9kbWltZS8uY3ZzaWdub3JlLCBkbGxzL2RtbG9hZGVyLy5jdnNpZ25vcmUsCgkgIGRsbHMvZG1zY3JpcHQvLmN2c2lnbm9yZSwgZGxscy9kbXN0eWxlLy5jdnNpZ25vcmUsCgkgIGRsbHMvZG1zeW50aC8uY3ZzaWdub3JlLCBkbGxzL2RtdXNpYy8uY3ZzaWdub3JlLAoJICBkbGxzL2RtdXNpYzMyLy5jdnNpZ25vcmUsIGRsbHMvZHBsYXkvLmN2c2lnbm9yZSwKCSAgZGxscy9kcGxheXgvLmN2c2lnbm9yZSwgZGxscy9kcG5ldC8uY3ZzaWdub3JlLAoJICBkbGxzL2RwbmhwYXN0Ly5jdnNpZ25vcmUsIGRsbHMvZHNvdW5kLy5jdnNpZ25vcmUsCgkgIGRsbHMvZHN3YXZlLy5jdnNpZ25vcmUsIGRsbHMvZHhkaWFnbi8uY3ZzaWdub3JlLCBkbGxzL2dkaS8uY3ZzaWdub3JlLAoJICBkbGxzL2dsdTMyLy5jdnNpZ25vcmUsIGRsbHMvZ2x1dDMyLy5jdnNpZ25vcmUsCgkgIGRsbHMvaWNjdmlkLy5jdnNpZ25vcmUsIGRsbHMvaWNtcC8uY3ZzaWdub3JlLAoJICBkbGxzL2ltYWdlaGxwLy5jdnNpZ25vcmUsIGRsbHMvaW1tMzIvLmN2c2lnbm9yZSwKCSAgZGxscy9pcGhscGFwaS8uY3ZzaWdub3JlLCBkbGxzL2l0c3MvLmN2c2lnbm9yZSwKCSAgZGxscy9rZXJuZWwvLmN2c2lnbm9yZSwgZGxscy9semV4cGFuZC8uY3ZzaWdub3JlLAoJICBkbGxzL21hcGkzMi8uY3ZzaWdub3JlLCBkbGxzL21sYW5nLy5jdnNpZ25vcmUsIGRsbHMvbXByLy5jdnNpZ25vcmUsCgkgIGRsbHMvbXNhY20vLmN2c2lnbm9yZSwgZGxscy9tc2Ntcy8uY3ZzaWdub3JlLCBkbGxzL21zZG1vLy5jdnNpZ25vcmUsCgkgIGRsbHMvbXNodG1sLy5jdnNpZ25vcmUsIGRsbHMvbXNpLy5jdnNpZ25vcmUsIGRsbHMvbXNpbWczMi8uY3ZzaWdub3JlLAoJICBkbGxzL21zbmV0MzIvLmN2c2lnbm9yZSwgZGxscy9tc3JsZTMyLy5jdnNpZ25vcmUsCgkgIGRsbHMvbXN2Y3J0Ly5jdnNpZ25vcmUsIGRsbHMvbXN2Y3J0MjAvLmN2c2lnbm9yZSwKCSAgZGxscy9tc3ZjcnQ0MC8uY3ZzaWdub3JlLCBkbGxzL21zdmNydGQvLmN2c2lnbm9yZSwKCSAgZGxscy9tc3ZpZGMzMi8uY3ZzaWdub3JlLCBkbGxzL21zdmlkZW8vLmN2c2lnbm9yZSwKCSAgZGxscy9tc3dzb2NrLy5jdnNpZ25vcmUsIGRsbHMvbmV0YXBpMzIvLmN2c2lnbm9yZSwKCSAgZGxscy9uZXdkZXYvLmN2c2lnbm9yZSwgZGxscy9udGRsbC8uY3ZzaWdub3JlLAoJICBkbGxzL29kYmMzMi8uY3ZzaWdub3JlLCBkbGxzL29sZTMyLy5jdnNpZ25vcmUsCgkgIGRsbHMvb2xlYWNjLy5jdnNpZ25vcmUsIGRsbHMvb2xlYXV0MzIvLmN2c2lnbm9yZSwKCSAgZGxscy9vbGVjbGkvLmN2c2lnbm9yZSwgZGxscy9vbGVkbGcvLmN2c2lnbm9yZSwKCSAgZGxscy9vbGVwcm8zMi8uY3ZzaWdub3JlLCBkbGxzL29sZXN2ci8uY3ZzaWdub3JlLAoJICBkbGxzL29wZW5nbDMyLy5jdnNpZ25vcmUsIGRsbHMvcG93cnByb2YvLmN2c2lnbm9yZSwKCSAgZGxscy9wc2FwaS8uY3ZzaWdub3JlLCBkbGxzL3FjYXAvLmN2c2lnbm9yZSwgZGxscy9xdWFydHovLmN2c2lnbm9yZSwKCSAgZGxscy9yYXNhcGkzMi8uY3ZzaWdub3JlLCBkbGxzL3JpY2hlZDIwLy5jdnNpZ25vcmUsCgkgIGRsbHMvcmljaGVkaXQvLmN2c2lnbm9yZSwgZGxscy9ycGNydDQvLmN2c2lnbm9yZSwKCSAgZGxscy9yc2FiYXNlLy5jdnNpZ25vcmUsIGRsbHMvcnNhZW5oLy5jdnNpZ25vcmUsCgkgIGRsbHMvc2VjdXIzMi8uY3ZzaWdub3JlLCBkbGxzL3NlbnNhcGkvLmN2c2lnbm9yZSwKCSAgZGxscy9zZXJpYWx1aS8uY3ZzaWdub3JlLCBkbGxzL3NldHVwYXBpLy5jdnNpZ25vcmUsCgkgIGRsbHMvc2hkb2N2dy8uY3ZzaWdub3JlLCBkbGxzL3NoZWxsMzIvLmN2c2lnbm9yZSwKCSAgZGxscy9zaGZvbGRlci8uY3ZzaWdub3JlLCBkbGxzL3NobHdhcGkvLmN2c2lnbm9yZSwKCSAgZGxscy9zbm1wYXBpLy5jdnNpZ25vcmUsIGRsbHMvc3RpLy5jdnNpZ25vcmUsIGRsbHMvdGFwaTMyLy5jdnNpZ25vcmUsCgkgIGRsbHMvdHdhaW4vLmN2c2lnbm9yZSwgZGxscy91bmljb3dzLy5jdnNpZ25vcmUsIGRsbHMvdXJsLy5jdnNpZ25vcmUsCgkgIGRsbHMvdXJsbW9uLy5jdnNpZ25vcmUsIGRsbHMvdXNlci8uY3ZzaWdub3JlLAoJICBkbGxzL3V4dGhlbWUvLmN2c2lnbm9yZSwgZGxscy92ZG1kYmcvLmN2c2lnbm9yZSwKCSAgZGxscy92ZXJzaW9uLy5jdnNpZ25vcmUsIGRsbHMvd2luMzJzLy5jdnNpZ25vcmUsCgkgIGRsbHMvd2luYXNwaS8uY3ZzaWdub3JlLCBkbGxzL3dpbmVkM2QvLmN2c2lnbm9yZSwKCSAgZGxscy93aW5lZG9zLy5jdnNpZ25vcmUsIGRsbHMvd2luaW5ldC8uY3ZzaWdub3JlLAoJICBkbGxzL3dpbm1tLy5jdnNpZ25vcmUsIGRsbHMvd2lubmxzLy5jdnNpZ25vcmUsCgkgIGRsbHMvd2luc29jay8uY3ZzaWdub3JlLCBkbGxzL3dpbnNwb29sLy5jdnNpZ25vcmUsCgkgIGRsbHMvd2ludGFiMzIvLmN2c2lnbm9yZSwgZGxscy93aW50cnVzdC8uY3ZzaWdub3JlLAoJICBkbGxzL3dvdzMyLy5jdnNpZ25vcmUsIGRsbHMvd3NvY2szMi8uY3ZzaWdub3JlLAoJICBkbGxzL3d0c2FwaTMyLy5jdnNpZ25vcmU6CglBZGRlZCBydWxlcyB0byBidWlsZCBpbXBvcnQgbGlicmFyaWVzIGluIHRoZSBpbmRpdmlkdWFsIGRsbCBtYWtlZmlsZXMuCglHZW5lcmF0ZSBpbXBvcnQgbGlicmFyaWVzIHdpdGggdGhlIHJpZ2h0IG5hbWUgcmlnaHQgYXdheSBpbnN0ZWFkIG9mCgl1c2luZyBhbiBpbnRlcm1lZGlhdGUgLnNwZWMuZGVmIGZpbGUuCgoJKiBkbGxzL3gxMWRydi9rZXlib2FyZC5jOiBSb2JlcnQgTHVubm9uIDxib2JsQG9wdHVzaG9tZS5jb20uYXU+CglBdm9pZCBwYXNzaW5nIE5VTEwgYnVmZmVyIGVsZW1lbnRzIGFuZCBzdGF0dXMgcG9pbnRlcnMgdG8KCVhtYkxvb2t1cFN0cmluZy4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYzogUm9iZXJ0IEx1bm5vbiA8Ym9ibEBvcHR1c2hvbWUuY29tLmF1PgoJQWRkZWQgYSBjb25kaXRpb25hbGx5IGNvbXBpbGVkIGRlZmluaXRpb24gb2YgSU5BRERSX05PTkUgZm9yIHBsYXRmb3JtcwoJdGhhdCBkb24ndCBkZWZpbmUgaXQuCgoJKiBkbGxzL2RkcmF3L2RkcmF3L3VzZXIuYzogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCScwJyBtZWFucyAnZGVmYXVsdCByZWZyZXNoIHJhdGUnIGFuZCBub3QgYSByZWFsIHJlZnJlc2ggcmF0ZSBvZiAnMCcuCgoJKiBkbGxzL3dpbm1tL3dpbmVhdWRpb2lvL2F1ZGlvLmM6IFJvYmVydCBMdW5ub24gPGJvYmxAb3B0dXNob21lLmNvbS5hdT4KCUZpeCBzZWdtZW50YXRpb24gZmF1bHQgY2F1c2VkIGJ5IGluY29ycmVjdCByZWZlcmVuY2luZyBvZiBjbGllbnQgYXVkaW8KCWZvcm1hdCBzcGVjaWZpY2F0aW9ucyBhcnJheS4KCgkqIGRsbHMvc2hlbGwzMi9yZWdzdnIuYywgZGxscy9zaGVsbDMyL3NoZmxkcl91bml4ZnMuYzoKCU1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCU1ha2UgdGhlIHJvb3Qgb2YgdGhlIHNoZWxsIGV4dGVuc2lvbiBtYXAgdG8gdGhlIHJvb3Qgb2YgdGhlIHVuaXgKCWZpbGVzeXN0ZW0uCgoJKiBkbGxzL250ZGxsL2ZpbGUuYzogUm9iZXJ0IEx1bm5vbiA8Ym9ibEBvcHR1c2hvbWUuY29tLmF1PgoJSW1wbGVtZW50IE50UXVlcnlWb2x1bWVJbmZvcm1hdGlvbiBmb3IgU29sYXJpcy4KCgkqIHNlcnZlci9tYWlsc2xvdC5jOiBSb2JlcnQgTHVubm9uIDxib2JsQG9wdHVzaG9tZS5jb20uYXU+CglJbmNsdWRlIDxzeXMvZmlsaW8uaD4gb24gcGxhdGZvcm1zIHRoYXQgc3VwcG9ydCBpdC4KCgkqIHByb2dyYW1zL25vdGVwYWQvZGlhbG9nLmM6IEtldmluIEtvbHR6YXUgPGtldmluQHBsb3Aub3JnPgoJSGFuZGxlIG5vdGVwYWQgbG9nIGZlYXR1cmUuCgoJKiBwcm9ncmFtcy9ub3RlcGFkL0VuLnJjLCBwcm9ncmFtcy9ub3RlcGFkL3JzcmMucmM6CglLZXZpbiBLb2x0emF1IDxrZXZpbkBwbG9wLm9yZz4KCUFkZCBhIGZldyBtaXNzaW5nIGFjY2VsZXJhdG9ycy4KCgkqIGRsbHMvbXNpL3JlY29yZC5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQWRkIGEgbWlzc2luZyBtc2lvYmpfcmVsZWFzZSB0aGF0IHdhcyByZXN1bHRpbmcgaW4gYSBsZWFrZWQgb2JqZWN0Cgl3aXRoIGVhY2ggTXNpQ3JlYXRlUmVjb3JkIGNhbGwuCgoJKiBkbGxzL21zaS90ZXN0cy9kYi5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQ29ycmVjdCBhIG1pc3NpbmcgTXNpQ2xvc2VIYW5kbGUoKS4KCgkqIGRsbHMvcXVhcnR6L2VudW1tZWRpYS5jOiBNYWFydGVuIExhbmtob3JzdCA8bS5iLmxhbmtob3JzdEBnbWFpbC5jb20+CglGaXhlZCB0d28gc21hbGwgbWVtb3J5IGxlYWtzLgoKCSogZGxscy9vbGUzMi90ZXN0cy9zdGdfcHJvcC5jOgoJU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtTGluZS5jb20+CglNYWtlIG9sZTMyIHRlc3RzIGxvYWRhYmxlIG9uIE5UNC4KCjIwMDUtMDUtMDYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL01ha2VmaWxlLmluLCBkbGxzL3dpbmVwcy8uY3ZzaWdub3JlLCBkbGxzL3dpbmVwcy9NYWtlZmlsZS5pbiwKCSAgZGxscy93aW5lcHMvd2luZXBzLmRydi5zcGVjLCBkbGxzL3dpbmVwcy93aW5lcHMuc3BlYywKCSAgZGxscy93aW5zcG9vbC9pbmZvLmM6CglSZW5hbWVkIHdpbmVwcy5kbGwgdG8gd2luZXBzLmRydiBmb3IgY29uc2lzdGVuY3kuCgoJKiBkbGxzL3dpbmVwcy9kcml2ZXIuYywgZGxscy93aW5lcHMvaW5pdC5jLCBkbGxzL3dpbmVwcy9wc2Rydi5oOgoJU3RvcmUgdGhlIG1vZHVsZSBpbnN0YW5jZSB3ZSBnZXQgaW4gRGxsTWFpbiB0byBhdm9pZCBleHRyYSBMb2FkTGlicmFyeQoJY2FsbHMuCgoJKiBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2QzZDgvZDNkOF9tYWluLmMsIGRsbHMvZDNkOS9kM2Q5X21haW4uYywKCSAgZGxscy9kZHJhdy9tYWluLmMsIGRsbHMvZ2RpL2RyaXZlci5jLCBkbGxzL2ltbTMyL2ltbS5jLAoJICBkbGxzL21ha2VfZGxscywgZGxscy9vcGVuZ2wzMi93Z2wuYywgZGxscy90dHlkcnYvLmN2c2lnbm9yZSwKCSAgZGxscy90dHlkcnYvTWFrZWZpbGUuaW4sIGRsbHMvdHR5ZHJ2L3R0eWRydi5zcGVjLAoJICBkbGxzL3R0eWRydi93aW5ldHR5LmRydi5zcGVjLCBkbGxzL3VzZXIvdXNlcl9tYWluLmMsCgkgIGRsbHMvd2luZWQzZC93aW5lZDNkX21haW4uYywgZGxscy93aW50YWIzMi93aW50YWIzMi5jLAoJICBkbGxzL3gxMWRydi8uY3ZzaWdub3JlLCBkbGxzL3gxMWRydi9NYWtlZmlsZS5pbiwKCSAgZGxscy94MTFkcnYvd2luZXgxMS5kcnYuc3BlYywgZGxscy94MTFkcnYveDExZHJ2LnNwZWMsCgkgIGRvY3VtZW50YXRpb24vc2FtcGxlcy9jb25maWc6CglSZW5hbWVkIHR0eWRydiBhbmQgeDExZHJ2IHRvIHdpbmV0dHkuZHJ2IGFuZCB3aW5leDExLmRydiByZXNwZWN0aXZlbHkKCXRvIGZvbGxvdyB0aGUgbmFtZXNwYWNlIGNvbnZlbnRpb25zIGFuZCBtYWtlIGl0IGNsZWFyIHRoYXQgdGhleSBhcmUKCWRyaXZlcnMgYW5kIG5vdCBkbGxzLgoJTW92ZWQgdGhlIGdyYXBoaWNzIGRyaXZlciBjb25maWd1cmF0aW9uIHRvIEhLTE1cU29mdHdhcmVcV2luZVxEcml2ZXJzLgoKCSogdG9vbHMvd2luZWR1bXAvb3V0cHV0LmM6CglSZW1vdmVkIGEgYnVuY2ggb2Ygb2Jzb2xldGUgbWFrZWZpbGUgaGFja2luZyBzZWQgY29kZS4KCgkqIGRsbHMvZHNvdW5kL2Rzb3VuZC5jLCBkbGxzL2Rzb3VuZC90ZXN0cy9kc291bmQuYywKCSAgZGxscy9kc291bmQvdGVzdHMvZHNvdW5kOC5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCU1vdmUgaW5pdGlhbGl6YXRpb24gdG8gSURpcmVjdFNvdW5kX0luaXRpYWxpemUuCglGaXggZXJyb3IgcGF0aHMgdG8gaGFuZGxlIGEgZmFpbGVkIElEaXJlY3RTb3VuZF9Jbml0aWFsaXplLgoJQWRkIHRlc3RzIGZvciBJRGlyZWN0U291bmRfSW5pdGlhbGl6ZS4KCgkqIGRsbHMvc2hlbGwzMi9icnNmb2xkZXIuYzogTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJUmV0dXJuIGEgY2xvbmVkIFBJREwgYnkgU0hCcm93c2VGb3JGb2xkZXIgdG8gYXZvaWQgaGVhcCBjb3JydXB0aW9uLgoKCSogZGxscy9zaGVsbDMyL2ZvbGRlcnMuYzogTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJRGlzcGxheSBhIGRyaXZlIGljb24gZm9yIHRoZSB1bml4IHJvb3QgZGlyZWN0b3J5LgoKCSogZGxscy93aW5tbS90aW1lLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglDaGFuZ2UgRklYTUUgdG8gV0FSTi4KCgkqIGRsbHMvY3J0ZGxsL2NydGRsbF9tYWluLmMsIGRsbHMvZGJnaGVscC9lbGZfbW9kdWxlLmMsCgkgIGRsbHMvZGJnaGVscC9zdGFicy5jLCBkbGxzL2dkaS9mcmVldHlwZS5jLCBkbGxzL2tlcm5lbC9jb21tLmMsCgkgIGRsbHMva2VybmVsL2tlcm5lbF9tYWluLmMsIGRsbHMva2VybmVsL29sZGNvbmZpZy5jLAoJICBkbGxzL2tlcm5lbC92eGQuYywgZGxscy9tc2FjbS93aW5lbXAzL2NvbW1vbi5jLCBkbGxzL250ZGxsL2Nkcm9tLmMsCgkgIGRsbHMvbnRkbGwvZGlyZWN0b3J5LmMsIGRsbHMvbnRkbGwvcGF0aC5jLCBkbGxzL250ZGxsL3NlcnZlci5jLAoJICBkbGxzL3NoZWxsMzIvc2hmbGRyX3VuaXhmcy5jLCBkbGxzL3dpbmFzcGkvd2luYXNwaTE2LmMsCgkgIGRsbHMvd2luYXNwaS93aW5hc3BpMzIuYywgZGxscy93aW5lZG9zL2ludDIxLmMsCgkgIGRsbHMvd2luZWRvcy9tb2R1bGUuYywgZGxscy93aW5lZG9zL3BwZGV2LmMsIGRsbHMvd2luZWRvcy92eGQuYywKCSAgZGxscy93aW5zb2NrL3NvY2tldC5jLCBsb2FkZXIvcHJlbG9hZGVyLmMsIHRvb2xzL3dpbmFwaS9uYXRpdmVhcGkucG0sCgkgIHRvb2xzL3dpbmFwaS93aW5hcGlfY2hlY2s6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUZpeCBuYXRpdmVhcGkucG0gc28gaXQga25vd3MgYWJvdXQgQUNfSEVBREVSX1NUQVQoKS4KCU1ha2UgdGhlIGVycm9yIG1lc3NhZ2UgYWJvdXQgdW5leHBlY3RlZCAnI2lmZGVmIEhBVkVfWFhYJyBjbGVhcmVyLgoJUHJvdGVjdCBzeXMvc3RhdC5oICNpbmNsdWRlcyB3aXRoIHRoZSBjb3JyZXNwb25kaW5nICcjaWZkZWYgSEFWRV9YWFgnCgljaGVjay4KCgkqIGRsbHMvTWFrZWRsbC5ydWxlcy5pbiwgcHJvZ3JhbXMvTWFrZXByb2cucnVsZXMuaW4sCgkgIHRvb2xzL3dpbmVidWlsZC9idWlsZC5oLCB0b29scy93aW5lYnVpbGQvaW1wb3J0LmMsCgkgIHRvb2xzL3dpbmVidWlsZC9tYWluLmMsIHRvb2xzL3dpbmVidWlsZC91dGlscy5jLAoJICB0b29scy93aW5lYnVpbGQvd2luZWJ1aWxkLm1hbi5pbjoKCUFkZGVkIHN1cHBvcnQgaW4gd2luZWJ1aWxkIGZvciBzcGVjaWZ5aW5nIGltcG9ydCBsaWJyYXJpZXMgZGlyZWN0bHkgb24KCXRoZSBjb21tYW5kIGxpbmUgd2l0aG91dCB0aGUgLWwgb3B0aW9uLgoJQ2hhbmdlZCB0aGUgLWQgb3B0aW9uIHRvIG9ubHkgbWFyayB0aGUgbGlicmFyeSBhcyBkZWxheWVkLCB0aGUgYWN0dWFsCglsb2FkaW5nIGlzIG5vdyBkb25lIHNlcGFyYXRlbHkuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYywgZGxscy9jb21jdGwzMi9ob3RrZXkuYywKCSAgZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYywgZGxscy9jb21jdGwzMi9saXN0dmlldy5jLAoJICBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYywgZGxscy9kc291bmQvYnVmZmVyLmMsIGRsbHMvZHNvdW5kL3ByaW1hcnkuYywKCSAgZGxscy9nZGkvYml0Ymx0LmMsIGRsbHMvZ2RpL3BhbGV0dGUuYywgZGxscy9rZXJuZWwvcHJvZmlsZS5jLAoJICBkbGxzL2tlcm5lbC90ZXN0cy9maWxlLmMsIGRsbHMva2VybmVsL3ZvbHVtZS5jLAoJICBkbGxzL2tlcm5lbC93b3d0aHVuay5jLCBkbGxzL250ZGxsL3J0bHN0ci5jLCBkbGxzL29kYmMzMi9wcm94eW9kYmMuYywKCSAgZGxscy9vcGVuZ2wzMi93Z2xfZXh0LmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0VuLnJjLAoJICBkbGxzL3NoZWxsMzIvc2hsZmlsZW9wLmMsIGRsbHMvc2hlbGwzMi90ZXN0cy9zaGxmaWxlb3AuYywKCSAgZGxscy9zaGx3YXBpL3JlZy5jLCBkbGxzL3dpbnNwb29sL2luZm8uYywgZGxscy94MTFkcnYvcGFsZXR0ZS5jLAoJICBkb2N1bWVudGF0aW9uL2NvbmZpZ3VyaW5nLnNnbWwsIGRvY3VtZW50YXRpb24vZGVidWdnaW5nLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vb3BlbmdsLnNnbWwsIGRvY3VtZW50YXRpb24vd2luZWRldi1jb2Rpbmcuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi93aW5lZGV2LW90aGVyZGVidWcuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi93aW5lbGliLW1mYy5zZ21sLCBwcm9ncmFtcy9ub3RlcGFkL0VuLnJjLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZS5jLCB0b29scy93aW5lZ2NjL3V0aWxzLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFzc29ydGVkIHNwZWxsaW5nIGZpeGVzLgoKCSogZGxscy9zZXR1cGFwaS9taXNjLmMsIGRsbHMvc2V0dXBhcGkvc2V0dXBhcGkuc3BlYywKCSAgaW5jbHVkZS9zZXR1cGFwaS5oLCBpbmNsdWRlL3dpbm50Lmg6CglFcmljIEtvaGwgPGVyaWMua29obF9hdF90LW9ubGluZS5kZT4KCUltcGxlbWVudCBDYXB0dXJlQW5kQ29udmVydEFuc2lBcmcsIENhcHR1cmVTdHJpbmdBcmcsCglPcGVuQW5kTWFwRm9yUmVhZCwgUmV0cmVpdmVGaWxlU2VjdXJpdHksIFN0YW1wRmlsZVNlY3VyaXR5LAoJVGFrZU93bmVyc2hpcE9mRmlsZSwgYW5kIFVubWFwQW5kQ2xvc2VGaWxlLgoKCSogZGxscy9xdWFydHovZmlsdGVyZ3JhcGguYywgZGxscy9xdWFydHovcGluLmM6CglNYWFydGVuIExhbmtob3JzdCA8bS5iLmxhbmtob3JzdEBnbWFpbC5jb20+CglGaXhlZCBhIGRvemVuIG9mIHJlZmVyZW5jZSAoYW5kIHNvbWUgbWVtb3J5KSBsZWFrcy4KCUltcGxlbWVudGVkIGZpbHRlcmdyYXBoX3BhdXNlL3N0b3AuCgoJKiBkbGxzL3F1YXJ0ei9lbnVtbWVkaWEuYywgZGxscy9xdWFydHovcXVhcnR6X3ByaXZhdGUuaDoKCU1hYXJ0ZW4gTGFua2hvcnN0IDxtLmIubGFua2hvcnN0QGdtYWlsLmNvbT4KCUZpeGVkIHtDb3B5L0RlbGV0ZS9GcmVlfU1lZGlhVHlwZSBmdW5jdGlvbnMgdG8gc2hvdyBwcm9wZXIgYmVoYXZpb3VyLgoJRml4ZWQgRW51bU1lZGlhVHlwZXMgdG8gY29weSBwYkZvcm1hdCB0b28uCglBZGRlZCBGcmVlTWVkaWFUeXBlLgoKCSogdG9vbHMvd2luYXBpL3dpbmFwaV9jaGVjazogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglIQVZFX1Y0TDIgaXMgbm90IGFuIGF1dG9jb25mIGRlZmluZSBzbyB0ZWxsIHdpbmFwaV9jaGVjayBub3QgdG8KCWNvbXBsYWluIGNvbXBsYWluIGFib3V0IGl0LgoKCSogZGxscy9ycGNydDQvcnBjc3NfbnBfY2xpZW50LmM6IEhhcnRtdXQgQmlyciA8aGFydG11dC5iaXJyQGdteC5kZT4KCUNsZWFuIHVwIGlmIG5hbWVkIHBpcGUgaXMgbm90IGF2YWlsYWJsZS4KCgkqIGRsbHMvbXNpL3JlZ2lzdHJ5LmMsIGRsbHMveDExZHJ2L29wZW5nbC5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglUd2VhayB0aGUgZG9jdW1lbnRhdGlvbiB0byBtYWtlIHdpbmFwaV9jaGVjayBoYXBweS4KCgkqIGRsbHMvdXJsbW9uL3VybG1vbl9tYWluLmMsIGluY2x1ZGUvdXJsbW9uLmlkbCwKCSAgdG9vbHMvd2luYXBpL3dpbjMyLmFwaToKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJVXBkYXRlIHdpbjMyLmFwaSB0byBtYXRjaCB0aGUgY3VycmVudCBzb3VyY2VzLgoJRGVjbGFyZSBDb0dldENsYXNzT2JqZWN0RnJvbVVSTCgpIGluIHVybG1vbi5oLgoKCSogZGxscy9vbGUzMi9vbGUzMi5zcGVjLCBkbGxzL29sZTMyL3N0b3JhZ2UzMi5jOgoJTWF0dGhldyBNYXN0cmFjY2kgPG1hdHRAYWNsYXJvLmNvbT4KCVJlcGxhY2Ugc3R1YiBlbnRyeSBmb3IgU3RnT3BlblN0b3JhZ2VFeCB3aXRoIGNhbGwgdG8gU3RnT3BlblN0b3JhZ2UuCgoyMDA1LTA1LTA1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2VydmVyL3JlZ2lzdHJ5LmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gRml4IGFjY2VzcyByaWdodHMgZm9yIFJlZ09wZW5LZXlFeCBhbmQgUmVnQ3JlYXRlS2V5RXggY2FsbHMuCgktIEFkZCBwcml2aWxlZ2UgY2hlY2tzIGZvciBSZWdMb2FkS2V5LCBSZWdVbmxvYWRLZXkgJiBSZWdTYXZlS2V5CgkgIGNhbGxzLgoKCSogZGxscy91c2VyL3BhaW50aW5nLmM6CglEb24ndCByZXRyaWV2ZSBhIHdpbmRvdyBEQyBpbiBHZXRVcGRhdGVSZWN0IGlmIHRoZXJlIGlzIG5vdGhpbmcgdG8KCWVyYXNlLCB0byBhdm9pZCBzZXR0aW5nIGEgbnVsbCB1cGRhdGUgcmVnaW9uIGluIGFuIG93bmVkIERDLgoJQXZvaWQgcG90ZW50aWFsIGRvdWJsZSBkZWxldGUgb2YgdGhlIHVwZGF0ZSByZWdpb24gb24gcmV0dXJuIGZyb20KCXNlbmRfZXJhc2UuCgoJKiBkbGxzL21zdmNydC9maWxlLmM6IDx3aW5lLmxhcnJ5LmVuZ2hvbG1AeG94eS5uZXQ+CglSZXR1cm4gRU5PRU5UIHJhdGhlciB0aGFuIEVCQURGIGZyb20gTVNWQ1JUX2ZvcGVuKCkgd2hlbiBmaWxlIGRvZXNuJ3QKCWV4aXN0LgoKCSogZGxscy9hZHZhcGkzMi9yZWdpc3RyeS5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglGaXggUmVnRGVsZXRlS2V5e0EsV30gdG8gb3BlbiB0aGUgc3BlY2lmaWVkIGtleSB3aXRoIHRoZSBERUxFVEUgYWNjZXNzCglyaWdodC4KCgkqIHRvb2xzL3dpbmVnY2Mvd2luZWdjYy5jOgoJb3V0cHV0X25hbWUgYWxyZWFkeSBjb250YWlucyAuZXhlIGV4dGVuc2lvbiwgZG9uJ3QgYWRkIGl0IGFnYWluIGZvciAtRgoJb3B0aW9uLgoKCSogZGxscy9vbGUzMi9zdG9yYWdlMzIuYywgaW5jbHVkZS9vYmpiYXNlLmg6CglNYXR0aGV3IE1hc3RyYWNjaSA8bW1hc3RyYWNAY2FuYWRhLmNvbT4KCVJlcGxhY2UgU3RnQ3JlYXRlU3RvcmFnZUV4IHN0dWIgd2l0aCBjYWxsIHRvIFN0Z0NyZWF0ZURvY2ZpbGUgYW5kIGFkZAoJcmVxdWlyZWQgU1RHRk1UXyogZW51bWVyYXRpb25zLgoKCSogZGxscy9nZGkvYml0Ymx0LmM6IFJlaW4gS2xhemVzIDx3aWpuQHdhbmFkb28ubmw+CglJbiBNYXNrQmx0IGRlbGV0ZSBjb3JyZWN0IGJpdG1hcC4KCgkqIGRsbHMvdXNlci93aW5wcm9jLmMsIGluY2x1ZGUvd2luZS93aW51c2VyMTYuaDoKCVJlaW4gS2xhemVzIDx3aWpuQHdhbmFkb28ubmw+CglBZGQgMTY8LT4zMiBiaXQgbWVzc2FnZSBtYXBwaW5ncyBmb3IgV01fQ09QWURBVEEgbWVzc2FnZXMuCgoJKiBkbGxzL3dpbmVkb3MvbW9kdWxlLmM6IFJlaW4gS2xhemVzIDx3aWpuQHdhbmFkb28ubmw+CgktIEluIE1aX0RvTG9hZEltYWdlIGlmIGFuIGVudmlyb25tZW50IHNlZ21lbnQgaXMgc3BlY2lmaWVkIGluIHRoZQoJICBwYXJhbWV0ZXIgYmxvY2ssIHVzZSB0aGF0IGFuZCBkbyBub3QgaW5oZXJpdCBmcm9tIHRoZSBjYWxsaW5nCgkgIHByb2Nlc3MuCgktIENhbGwgRnJlZUVudmlyb25tZW50U3RyaW5ncyB3aGVuIHRoZSBzdHJpbmdzIGFyZSBubyBsb25nZXIgdXNlZC4KCgkqIGRsbHMvc2hlbGwzMi9zaGZsZHJfZnMuYzogTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJRml4ZWQgR2V0RGlzcGxheU5hbWVPZiBtZXRob2QgdG8gbm90IGRlcGVuZCBvbiBpbmNvcnJlY3QgYmVoYXZpb3VyCglyZWdhcmRpbmcgdGhlIFNIR0ROX0lORk9MREVSIGZsYWcuCgoJKiBkbGxzL3NoZWxsMzIvc2hmbGRyX215Y29tcC5jOgoJTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJRml4ZWQgTXlDb21wdXRlcidzIEdldERpc3BsYXlOYW1lT2YgbWV0aG9kLgoKCSogZGxscy9kaW5wdXQvbW91c2UuYzogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gZG8gbm90IGZsdXNoIHRoZSBidWZmZXIgd2hlbiB0aGUgYXBwbGljYXRpb24gb25seSB3YW50cyB0byBwZWVrIHRoZQoJICBudW1iZXIgb2YgZWxlbWVudHMgaW4gdGhlIHF1ZXVlCgktIHRyYWNlIHRoZSBHZXREZXZpY2VTdGF0ZSB2YWx1ZXMgYmVmb3JlIHRoZXkgYXJlIHJlc2V0CgoJKiBkbGxzL3VybG1vbi91cmxtb24uc3BlYywgZGxscy91cmxtb24vdXJsbW9uX21haW4uYzoKCUNocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUFkZGVkIHN0dWIgaW1wbGVtZW50YXRpb24gZm9yIENvR2V0Q2xhc3NPYmplY3RGcm9tVVJMLgoKCSogZGxscy91cmxtb24vdW1vbi5jOiBUcm95IFJvbGxvIDx3aW5lQHRyb3kucm9sbG8ubmFtZT4KCUNvcnJlY3QgYnVnIHRydW5jYXRpbmcgZG93bmxvYWRlZCBmaWxlcyB0byA0MDk2IGJ5dGVzLgoKCSogZGxscy9xdWFydHovZmlsdGVyZ3JhcGguYywgZGxscy9xdWFydHovbWFpbi5jLAoJICBkbGxzL3F1YXJ0ei9xdWFydHpfcHJpdmF0ZS5oLCBkbGxzL3F1YXJ0ei9yZWdzdnIuYzoKCUNocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUZvcndhcmQgQ0xTSURfRmlsdGVyR3JhcGhOb1RocmVhZCB0byBDTFNJRF9GaWx0ZXJHcmFwaC4KCgkqIGRsbHMvZGJnaGVscC9lbGZfbW9kdWxlLmM6IEVtbWFudWVsIE1haWxsYXJkIDxlLnJzekBsaWJlcnR5c3VyZi5mcj4KCUZpeCBjb21waWxlIG9uIG5vbi1FTEYgaG9zdC4KCgkqIGRsbHMvZGlucHV0L2RldmljZS5jOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSBtb3JlIHByZXR0eSBwcmludCBmb3IgdGhlIHR5cGVzIGZsYWcKCS0gbW9yZSBXaW5kb3dzLWFsaWduZWQgY2hlY2sgZm9yIG9iamVjdCBpbnN0YW5jZXMKCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglJbml0aWFsaXplIGlvc2IuCgoJKiBkbGxzL250ZGxsL3ZlcnNpb24uYzogSXZhbiBMZW8gUHVvdGkgPGl2YW5sZW9AZ21haWwuY29tPgoJU2V0IHdpbjJrMyBzZXJ2aWNlIHBhY2sgbnVtYmVyIHRvIDEuCgoJKiBkbGxzL250ZGxsL3NpZ25hbF9wb3dlcnBjLmM6IEVtbWFudWVsIE1haWxsYXJkIDxlLnJzekBsaWJlcnR5c3VyZi5mcj4KCS0gRml4IE5URExMX3dhaXRfZm9yX211bHRpcGxlX29iamVjdHMgY2FsbCBpbiB1c3IxX2hhbmRsZXIuCgktIEZpeCBhbiBlcnJvciBkdWUgdG8gImludmFsaWQgbHZhbHVlIGluIGFzc2lnbm1lbnQiIHdpdGggZ2NjIDQgb24KCSAgRGFyd2luIDguMC4KCjIwMDUtMDUtMDQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB0b29scy93aW5hcGkvY29uZmlnLnBtLCB0b29scy93aW5hcGkvbWFrZV9wYXJzZXIucG0sCgkgIHRvb2xzL3dpbmFwaS9tb2R1bGVzLnBtLCB0b29scy93aW5hcGkvbmF0aXZlYXBpLnBtLAoJICB0b29scy93aW5hcGkvc2V0dXAucG0sIHRvb2xzL3dpbmFwaS93aW5hcGlfZXh0cmFjdCwKCSAgdG9vbHMvd2luYXBpL3dpbmFwaV9maXh1cCwgdG9vbHMvd2luYXBpL3dpbmFwaV90ZXN0OgoJR2V0IHJpZCBvZiB0aGUgd2luYXBpX2NoZWNrX2RpciBjb25maWcgcGFyYW1ldGVyLgoKCSogZGxscy9jb21jdGwzMi9jb21ib2V4LmM6CglGZWxpeCBOYXdvdGhuaWcgPGZlbGl4Lm5hd290aG5pZ0B0LW9ubGluZS5kZT4KCVNldCBpSXRlbSB0byBpbmRleCBiZWZvcmUgbm90aWZ5aW5nIGNhbGxiYWNrIGl0ZW1zLgoKCSogZGxscy9tc2kvcGFja2FnZS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVNldCBQaHlzaWNhbE1lbW9yeSBwcm9wZXJ0eSBmcm9tIHN5c3RlbSBkYXRhLgoKCSogZGxscy91cmxtb24vTWFrZWZpbGUuaW4sIGRsbHMvdXJsbW9uL3Vtb24uYywgZGxscy91cmxtb24vdW1zdHJlYW0uYywKCSAgZGxscy91cmxtb24vdXJsbW9uX21haW4uaDoKCVRyb3kgUm9sbG8gPHdpbmVAdHJveS5yb2xsby5uYW1lPgoJSW1wbGVtZW50IFVSTE1vbmlrZXJJbXBsX0JpbmRUb1N0b3JhZ2UuCgoJKiBkbGxzL3dpbmluZXQvdXJsY2FjaGUuYzogVHJveSBSb2xsbyA8d2luZUB0cm95LnJvbGxvLm5hbWU+CglDcmVhdGUgVVJMIENhY2hlIGlmIGl0IGRvZXMgbm90IGFscmVhZHkgZXhpc3QuCgoJKiBNYWtlLnJ1bGVzLmluLCB0b29scy9NYWtlZmlsZS5pbiwgdG9vbHMvd2luYXBpL21vZHVsZXMucG0sCgkgIHRvb2xzL3dpbmFwaS9uYXRpdmVhcGkuZGF0LCB0b29scy93aW5hcGkvbmF0aXZlYXBpLnBtLAoJICB0b29scy93aW5hcGkvcHJlcHJvY2Vzc29yLnBtLCB0b29scy93aW5hcGkvc2V0dXAucG0sCgkgIHRvb2xzL3dpbmFwaS93aW5hcGlfY19wYXJzZXIucG0sIHRvb2xzL3dpbmFwaS93aW5hcGlfY2hlY2ssCgkgIHRvb2xzL3dpbmFwaS93aW5hcGlfZG9jdW1lbnRhdGlvbi5wbSwKCSAgdG9vbHMvd2luYXBpL3dpbmFwaV9mdW5jdGlvbi5wbSwgdG9vbHMvd2luYXBpL3dpbmFwaV9nbG9iYWwucG0sCgkgIHRvb2xzL3dpbmFwaS93aW5hcGlfbG9jYWwucG0sIHRvb2xzL3dpbmFwaS93aW5hcGlfcGFyc2VyLnBtOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglNb3ZlIGFsbCBmaWxlcyBmcm9tIHdpbmFwaV9jaGVjay8gdG8gd2luYXBpLywgYW5kIHJlbW92ZSByZWZlcmVuY2VzIHRvCgl3aW5hcGlfY2hlY2sgZGlyZWN0b3J5LiAgTWVyZ2Ugd2luYXBpX2NoZWNrIHByb2dyYW1zLgoKCSogZGxscy9tc2kvbXNpX0ZyLnJjLCBkbGxzL29sZWF1dDMyL29sZWF1dDMyX0ZyLnJjLAoJICBkbGxzL29sZWRsZy9vbGVkbGdfRnIucmMsIGRsbHMvc2hkb2N2dy9Gci5yYywgcHJvZ3JhbXMvdGFza21nci9Gci5yYywKCSAgcHJvZ3JhbXMvd2luZWNmZy9Gci5yYzoKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCVVzZSBTVUJMQU5HX05FVVRSQUwgZm9yIEZyZW5jaCByZXNvdXJjZXMuCgoJKiBwcm9ncmFtcy93aW5lY2ZnL0NzLnJjLCBwcm9ncmFtcy93aW5lY2ZnL0RlLnJjLAoJICBwcm9ncmFtcy93aW5lY2ZnL0VuLnJjLCBwcm9ncmFtcy93aW5lY2ZnL0VzLnJjLAoJICBwcm9ncmFtcy93aW5lY2ZnL0ZyLnJjLCBwcm9ncmFtcy93aW5lY2ZnL0l0LnJjLAoJICBwcm9ncmFtcy93aW5lY2ZnL05sLnJjLCBwcm9ncmFtcy93aW5lY2ZnL1B0LnJjLAoJICBwcm9ncmFtcy93aW5lY2ZnL1J1LnJjLCBwcm9ncmFtcy93aW5lY2ZnL1NpLnJjOgoJSmFtZXMgSGF3a2lucyA8dHJ1aWtlbkBnbWFpbC5jb20+CglFbmxhcmdlIHRoZSBsaWNlbnNlIHRleHQgY29udHJvbCBsZW5ndGguCgoJKiBkbGxzL3NoZWxsMzIvYnJzZm9sZGVyLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZSBzdGF0aWMgdmFyaWFibGVzIGluIFNIQnJvd3NlRm9yRm9sZGVyIGltcGxlbWVudGF0aW9uLgoKCSogcHJvZ3JhbXMvd2luZWNmZy9kcml2ZS5jOiBKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCVJlbW92ZSB0aGUgY29ycmVzcG9uZGluZyByZWdpc3RyeSBlbnRyeSB3aGVuIGRlbGV0aW5nIGEgZHJpdmUuCgoJKiBwcm9ncmFtcy93aW5lY2ZnL2FwcGRlZmF1bHRzLmM6IEphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJRG9uJ3QgYWRkIHRoZSBzYW1lIHByb2dyYW0gaW4gQXBwRGVmYXVsdHMgbW9yZSB0aGFuIG9uY2UuCgoJKiBkbGxzL3NldHVwYXBpL3NldHVwYXBpLnNwZWMsIGRsbHMvc2V0dXBhcGkvc3R1YnMuYzoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJU3R1YiBpbXBsZW1lbnRhdGlvbiBmb3IgU2V0dXBDb3B5T0VNSW5mVy4KCgkqIGRsbHMva2VybmVsL3ZlcnNpb24ucmM6IEhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJQnVtcCB2ZXJzaW9uIG51bWJlciB0byBYUCBTUDIuCgoJKiBwcm9ncmFtcy93aW5lZmlsZS93aW5lZmlsZS5jOiBNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJSW1wbGVtZW50IG93bmVyIGRyYXduIGNvbnRleHQgbWVudXMuCgoJKiBkbGxzL2Rzb3VuZC9wcm9wc2V0LmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglTZXQgZHJpdmVyIHR5cGUgcHJvcGVybHkuCgoJKiBpbmNsdWRlL2F4ZXh0ZW5kLmlkbDogTWFhcnRlbiBMYW5raG9yc3QgPG0uYi5sYW5raG9yc3RAZ21haWwuY29tPgoJQWRkZWQgSUFNVmlkZW9Qcm9jQW1wLgoKCSogZGxscy9kaW5wdXQvbW91c2UuYzogSmFtZXMgRGVhbiBBbmRlcnNvbiA8cGV0ckBwYW50ZWsub3JnPgoJUmVwb3J0IGFuIGVycm9yIGlmIHRyeWluZyB0byBnZXQgZGF0YSBmcm9tIGFuIHVuYWNxdWlyZWQgbW91c2UuCgoJKiBkbGxzL250ZGxsL3RpbWUuYzogSXZhbiBXb25nIDxlbWFpbEBpdmFud29uZy5pbmZvPgoJQWRkZWQgSG9uZyBLb25nIFN0YW5kYXJkIFRpbWUgKEhLVCkuCgoJKiBkbGxzL3VzZXIvZWRpdC5jOiBVbHJpY2ggQ3pla2FsbGEgPHVscmljaEBjb2Rld2VhdmVycy5jb20+CglMZXQgdGhlIGRlZmF1bHQgd2lucHJvYyBoYW5kbGUgV01fTU9VU0VBQ1RJVkFURS4KCjIwMDUtMDQtMjggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL29wZW5nbDMyL01ha2VmaWxlLmluLCBkbGxzL29wZW5nbDMyL21ha2Vfb3BlbmdsLAoJICBkbGxzL29wZW5nbDMyL29wZW5nbF9leHQuaCwgZGxscy9vcGVuZ2wzMi9vcGVuZ2xfbm9ybS5jLAoJICBkbGxzL29wZW5nbDMyL3dnbC5jLCBkbGxzL29wZW5nbDMyL3dnbC5oLCBkbGxzL29wZW5nbDMyL3dnbF9leHQuYywKCSAgZGxscy9vcGVuZ2wzMi93Z2xfZXh0Lmg6CglSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCS0gaW1wbGVtZW50IHdnbEdldEN1cnJlbnRSZWFkRENBUkIsIHdnbE1ha2VDb250ZXh0Q3VycmVudEFSQiBvbgoJICBvcGVuR0wzMiAod2dsX2V4dCkKCS0gYWRkIGNvZGUgdG8gZGlzYWJsZSBzb21lIG9wZW5HTCBleHRlbnNpb25zIHN1cHBvcnQgdXNpbmcgd2luZQoJICByZWdpc3RyeSBrZXkgSEtMTVxTb2Z0d2FyZVxXaW5lXE9wZW5HTFxEaXNhYmxlZEV4dGVuc2lvbnMgKGxpc3QKCSAgc2VwYXJhdGVkIGJ5IHNwYWNlcykKCS0gdmFsaWQvcm9idXN0IGltcGxlbWVudGF0aW9uIG9mIHdnbENob29zZVBpeGVsRm9ybWF0QVJCIGFuZAoJICB3Z2xHZXRQaXhlbEZvcm1hdEF0dHJpYml2QVJCICh3Z2xfZXh0KQoKCSogZGxscy94MTFkcnYvb3BlbmdsLmMsIGRsbHMveDExZHJ2L3hyYW5kci5jOgoJUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CgktIHZhbGlkIGltcGxlbWVudGF0aW9uIG9mIFgxMURSVl9DaG9vc2VQaXhlbEZvcm1hdCB1c2luZyBHTFgxLjMgQVBJCgkgIChpZS4gdXNpbmcgcmVhbCBjYXJkIGNhcHMgYW5kIG5vdCB1Z2x5IHdheSB1c2luZyB2aXN1YWxzIGFycmF5KSB0bwoJICBiZSBjb21wYXRpYmxlIHdpdGggb3BlbmdsMzIgcGl4ZWwgZm9ybWF0cyAod2dsKlBpeGVsRm9ybWF0KiBBUElzKSBhcwoJICB0aGV5IG5lZWQgdG8gYmUgdGhlIHNhbWUKCS0gYWRkIG1vcmUgdHJhY2VzIHRvIHhyYW5kcgoKCSogZGxscy9tc2kvYWN0aW9uLmMsIGRsbHMvbXNpL21zaS5jLCBkbGxzL21zaS9yZWdpc3RyeS5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUNvcnJlY3QgdXNlciBjb21wb25lbnQgcHVibGljYXRpb24uCglJbXBsZW1lbnQgTXNpRW51bUNvbXBvbmVudFF1YWxpZmllcnMuCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmM6IE1hcmN1cyBNZWlzc25lciA8bWVpc3NuZXJAc3VzZS5kZT4KCUZpeGVkIHN0YWNrIG92ZXJ3cml0ZSBieSB1c2luZyBzaXplb2YoV1Nfc29ja2FkZHJfaXB4KS4KCgkqIGRsbHMvc2hlbGwzMi9icnNmb2xkZXIuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJU3BsaXQgdXAgdGhlIHdpbmRvdyBwcm9jZWR1cmUuCgoJKiBkbGxzL3VzZXIvaW5wdXQuYywgZGxscy91c2VyL21lc3NhZ2UuYywKCSAgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLCBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvcXVldWUuYywKCSAgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3RyYWNlLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnRlZCBHZXRMYXN0SW5wdXRJbmZvLgoKCSogZGxscy93aW5lZDNkL2RpcmVjdHguYzogUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CgktIGltcGxlbWVudCBtZW1vcnkgYWNjZXNzIEFQSXMgdG8gVmVydGV4QnVmZmVycwoJLSBtb3JlIHZhbGlkIGltcGxlbWVudGF0aW9uIGZvciBJV2luZUQzREltcGxfQ2hlY2sqIEFQSXMgKG5vdCBtb3JlCgkgIFNfT0sgZm9yIGFsbCBjYXNlcykKCgkqIGluY2x1ZGUvd2luZS91bmljb2RlLmg6IEplZmYgTGF0aW1lciA8amVmZmxAZGVmY2VuLmdvdi5hdT4KCURlZmluZSBzdHJuY3B5VyB0byBlbnN1cmUgdGhhdCB1c2VycyBrbm93IHdoeSBpdCBpcyBub3QgcHJlc2VudC4KCgkqIGRsbHMvbXNpL21zaS5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IE1zaVF1ZXJ5RmVhdHVyZVN0YXRlVy4KCjIwMDUtMDQtMjcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3VzZXIvbWlzYy5jLCBkbGxzL3VzZXIvdXNlcl9tYWluLmMsIHdpbmRvd3MvdXNlci5jOgoJTW92ZWQgdGhlIFVTRVIgc3lzbGV2ZWwgdG8gZGxscy91c2VyL3VzZXJfbWFpbi5jLgoJTW92ZWQgYSBidW5jaCBvZiBzdHVicyB0byBkbGxzL3VzZXIvbWlzYy5jLgoKCSogZGxscy9rZXJuZWwvZG9zbWVtLmMsIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsCgkgIGRsbHMva2VybmVsL2tlcm5lbF9tYWluLmMsIGRsbHMvd2luZWRvcy9pbnQzMS5jLAoJICBkbGxzL3dpbmVkb3MvbW9kdWxlLmMsIGluY2x1ZGUvbWlzY2VtdS5oOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CgktIGRlbGF5ZWQgaW5pdGlhbGlzYXRpb24gb2YgQklPUyBhbmQgU1lTVEVNIGluZm9ybWF0aW9uIHVudGlsIHNvbWVvbmUKCSAgYWN0dWFsbHkgbmVlZHMgaXQKCS0gbm93IHVzaW5nIHNvbWUgbWFuaWZlc3QgY29uc3RhbnRzIHRvIG1ha2UgY29kZSBjbGVhcmVyCgoJKiBkbGxzL2RldmVudW0vTWFrZWZpbGUuaW4sIGRsbHMvZGV2ZW51bS9jcmVhdGVkZXZlbnVtLmMsCgkgIGRsbHMvZGV2ZW51bS9kZXZlbnVtX3ByaXZhdGUuaDoKCU1hYXJ0ZW4gTGFua2hvcnN0IDxtLmIubGFua2hvcnN0QGdtYWlsLmNvbT4KCUFkZGVkIHRoZSB2aWRlbyBpbnB1dCBkZXZpY2UgY2F0ZWdvcnkuCgoJKiBkbGxzL3VzZXIvY29tYm8uYywgZGxscy91c2VyL2N1cnNvcmljb24uYywgZGxscy91c2VyL2RlZnduZC5jLAoJICBkbGxzL3VzZXIvZWRpdC5jLCBkbGxzL3VzZXIvaG9vay5jLCBkbGxzL3VzZXIvaG9vazE2LmMsCgkgIGRsbHMvdXNlci9pbnB1dC5jLCBkbGxzL3VzZXIvbGlzdGJveC5jLCBkbGxzL3VzZXIvbWRpLmMsCgkgIGRsbHMvdXNlci9tZXNzYWdlLmMsIGRsbHMvdXNlci9tZXNzYWdlLmgsIGRsbHMvdXNlci9tc2cxNi5jLAoJICBkbGxzL3VzZXIvc2Nyb2xsLmMsIGRsbHMvdXNlci9zcHkuYywgZGxscy91c2VyL3VzZXJfbWFpbi5jLAoJICBkbGxzL3VzZXIvdXNlcl9wcml2YXRlLmgsIGRsbHMvdXNlci93aW4uYywgZGxscy91c2VyL3dpbnBvcy5jLAoJICBkbGxzL3VzZXIvd2lucHJvYy5jLCB3aW5kb3dzL3VzZXIuYzoKCU1vdmVkIHJlbWFpbmluZyBtZXNzYWdpbmcgZGVmaW5pdGlvbnMgdG8gdXNlcl9wcml2YXRlLmggYW5kIHJlbW92ZWQKCW1lc3NhZ2UuaC4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jLCBkbGxzL21zaS9jdXN0b20uYywgZGxscy9tc2kvZGlhbG9nLmMsCgkgIGRsbHMvbXNpL21zaXByaXYuaDoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2Ugc3VyZSB0aGF0IGRpYWxvZ3MgYXJlIG9ubHkgY3JlYXRlZCBhbmQgZGVzdHJveWVkIGluIGEgc2luZ2xlCgl0aHJlYWQuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9hdmljYXAzMi9NYWtlZmlsZS5pbiwKCSAgZGxscy9hdmljYXAzMi9hdmljYXAzMl9tYWluLmMsIGluY2x1ZGUvY29uZmlnLmguaW46CglNYWFydGVuIExhbmtob3JzdCA8bS5iLmxhbmtob3JzdEBnbWFpbC5jb20+CglJbXBsZW1lbnRlZCBjYXBHZXREcml2ZXJEZXNjcmlwdGlvbi4KCgkqIGRsbHMvd2lubW0vbWNpYXZpL21jaWF2aS5jLCBkbGxzL3dpbm1tL21jaXNlcS9tY2ltaWRpLmMsCgkgIGRsbHMvd2lubW0vbWNpd2F2ZS9tY2l3YXZlLmMsIGRsbHMvd2lubW0vbW1zeXN0ZW0uYywKCSAgZGxscy93aW5tbS9wbGF5c291bmQuYywgZGxscy93aW5tbS93aW5lYWxzYS9hdWRpby5jLAoJICBkbGxzL3dpbm1tL3dpbmVhbHNhL21pZGkuYywgZGxscy93aW5tbS93aW5tbS5jLAoJICBkbGxzL3dpbm1tL3dpbmVhcnRzL2F1ZGlvLmMsIGRsbHMvd2lubW0vd2luZWF1ZGlvaW8vYXVkaW8uYywKCSAgZGxscy93aW5tbS93aW5lbmFzL2F1ZGlvLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglNYWtlIG11bHRpbWVkaWEgdGhyZWFkcyBoaWdoIHByaW9yaXR5LgoKCSogZGxscy9hZHZwYWNrL2FkdnBhY2suYywgZGxscy9hZHZwYWNrL3Rlc3RzL2FkdnBhY2suYzoKCVNhbWkgQWFyaW8gPHNhbWkuYWFyaW9Ac3VyZmV1LmZpPgoJQWRkZWQgaW5pdGlhbCB2ZXJzaW9uIG9mIERlbG5vZGUgcGx1cyBzb21lIHRlc3RzLgoKCSogZGxscy9rZXJuZWwvdGFzay5jLCBkbGxzL250ZGxsL3RocmVhZC5jLCBkbGxzL3VzZXIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvdXNlci9jdXJzb3JpY29uLmMsIGRsbHMvdXNlci9ob29rLmMsIGRsbHMvdXNlci9ob29rMTYuYywKCSAgZGxscy91c2VyL2lucHV0LmMsIGRsbHMvdXNlci9tZXNzYWdlLmMsIGRsbHMvdXNlci9tZXNzYWdlLmgsCgkgIGRsbHMvdXNlci91c2VyMTYuYywgZGxscy91c2VyL3VzZXJfbWFpbi5jLCBkbGxzL3VzZXIvdXNlcl9wcml2YXRlLmgsCgkgIGRsbHMvdXNlci93bmQxNi5jLCBpbmNsdWRlL3RocmVhZC5oLCB3aW5kb3dzL3F1ZXVlLmM6CglSZW1vdmVkIHRoZSBNRVNTQUdFUVVFVUUgc3RydWN0dXJlLCBhbmQgc3RvcmUgdGhlIGNvcnJlc3BvbmRpbmcKCWluZm9ybWF0aW9uIGRpcmVjdGx5IGluIHRoZSBURUIsIGluIHRoZSBXaW4zMkNsaWVudEluZm8gZmllbGQuCgoJKiBpbmNsdWRlL3dpbnRlcm5sLmg6IEFkZGVkIHByb3BlciBuYW1lcyBmb3IgdGhlIHJlbWFpbmluZyBURUIgZmllbGRzLgoKCSogZGxscy93aW5tbS9tY2kuYywgZGxscy93aW5tbS9tbWlvLmMsIGRsbHMvd2lubW0vbW1zeXN0ZW0uYywKCSAgZGxscy93aW5tbS9wbGF5c291bmQuYywgZGxscy93aW5tbS90aW1lLmMsIGRsbHMvd2lubW0vd2luZW1tLmgsCgkgIGRsbHMvd2lubW0vd2lubW0uYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2UgV0lOTU1fSURhdGEgc3RhdGljYWxseSBhbGxvY2F0ZWQuCgoJKiBkbGxzL2QzZDgvZHJhd3ByaW0uYzogUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CglGaXggY3Jhc2ggb24gZHJhd1N0cmlkZWRTbG93LgoKCSogZGxscy9zaGVsbDMyL3NoZmxkcl91bml4ZnMuYzogR2VyYWxkIFBmZWlmZXIgPGdlcmFsZEBwZmVpZmVyLmNvbT4KCUluY2x1ZGUgPGxpbWl0cy5oPiB0byBnZXQgYSBkZWZpbml0aW9uIG9mIE5BTUVfTUFYLgoKCSogZGxscy9tc2kvbXNpLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglDb3JyZWN0IGEgbGVha2luZyBoa2V5IGhhbmRsZS4KCjIwMDUtMDQtMjYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBwcm9ncmFtcy90YXNrbWdyL2dyYXBoY3RsLmMsIHByb2dyYW1zL3dpbmVtaW5lL21haW4uYywKCSAgcHJvZ3JhbXMvd2luaGVscC9obHAyc2dtbC5jLCBwcm9ncmFtcy93aW5oZWxwL2hscGZpbGUuYzoKCVJlbW92ZWQgYSBmZXcgbW9yZSBzdHJuY3B5IGNhbGxzLgoKCSogc2VydmVyL3F1ZXVlLmMsIHNlcnZlci91c2VyLmgsIHNlcnZlci93aW5kb3cuYzoKCU1ha2Ugc3VyZSBhIHRocmVhZCBoYXMgYSBxdWV1ZSBhcyBzb29uIGFzIGl0IGNyZWF0ZXMgYSB3aW5kb3cuCgoJKiBkbGxzL21zaS9tc2kuYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUV4cGFuZCBzb21lIGhhbmRsaW5nIG9mIHNwZWNpYWwgcHJvcGVydGllcyBpbiBNc2lHZXRQcm9kdWN0SW5mby4KCgkqIGRsbHMvbXNpL2RhdGFiYXNlLmMsIGRsbHMvbXNpL21zaS5zcGVjOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRGVjbGFyZSBNc2lFeHBvcnREYXRhYmFzZSogaW4gdGhlIHNwZWMgZmlsZSwgYW5kIGZpeCBhIHR5cG8uCgoJKiBkbGxzL3dpbm1tL21jaWF2aS9pbmZvLmM6IENocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUZpeGVkIGZsYWdzIGhhbmRsaW5nIGluIE1DSUFWSV9tY2lJbmZvLgoKCSogZGxscy91c2VyL2lucHV0LmMsIGRsbHMvdXNlci9tZXNzYWdlLmMsIHdpbmRvd3MvcXVldWUuYzoKCU1vdmVkIHNvbWUgbWVzc2FnaW5nIGFuZCBpbnB1dCBmdW5jdGlvbnMgdG8gbWVzc2FnZS5jIGFuZCBpbnB1dC5jCglyZXNwZWN0aXZlbHkuCgoJKiBkbGxzL3VzZXIvdGVzdHMvd2luLmMsIGRsbHMveDExZHJ2L3dpbmRvdy5jOgoJVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hAY29kZXdlYXZlcnMuY29tPgoJU2V0UGFyZW50IHNob3VsZCBub3QgcmVtb3ZlIG1lbnUgZnJvbSBub24tY2hpbGQgd2luZG93cy4KCgkqIGRsbHMvdXNlci9jb21iby5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJVGhlIGFuc2kgdmVyc2lvbiBvZiBDQl9BRERTVFJJTkcgc2hvdWxkbid0IG92ZXJ3cml0ZSB0aGUgc3RyaW5nIGlmCgljb252ZXJ0aW5nIGNhc2UuCgoJKiBkbGxzL2RldmVudW0vbWVkaWFjYXRlbnVtLmM6CglNYWFydGVuIExhbmtob3JzdCA8bS5iLmxhbmtob3JzdEBnbWFpbC5jb20+CglGaXhlZCBhIHJlZmVyZW5jZSBsZWFrLgoKMjAwNS0wNC0yNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvd2luYmFzZS5oOgoJRGVmaW5lIHN0cm5jcHkgdG8gYW4gZXJyb3IgdG8gbWFrZSBzdXJlIGl0IGRvZXNuJ3QgY3JlZXAgYmFjayBpbi4KCgkqIGRsbHMvdXNlci9NYWtlZmlsZS5pbiwgZGxscy91c2VyL3BhaW50aW5nLmMsIHdpbmRvd3Mvc2Nyb2xsLmM6CglNb3ZlZCB0aGUgU2Nyb2xsV2luZG93IGFuZCBTY3JvbGxEQyBmdW5jdGlvbnMgdG8gZGxscy91c2VyL3BhaW50aW5nLmMsCglhbmQgcmVtb3ZlZCB3aW5kb3dzL3Njcm9sbC5jLgoKCSogZGxscy9nZGkvZGMuYzogTWF4aW1lIEJlbGxlbmfpIDxtYXhpbWUuYmVsbGVuZ2VAbGFwb3N0ZS5uZXQ+CglQcmV2ZW50IENyZWF0ZURDQSBmcm9tIGNyYXNoaW5nIGlmIGEgYmFkIGxwSW5pdERhdGEgcGFyYW1ldGVyIGlzCglwcm92aWRlZC4KCgkqIGRsbHMvbnRkbGwvZmlsZS5jOiBJdmFuIExlbyBQdW90aSA8aXZhbmxlb0BnbWFpbC5jb20+CglBZGQgcGFyYW1ldGVyIGNoZWNraW5nIHRvIE50UmVhZEZpbGUvTnRXcml0ZUZpbGUuCgoJKiBkbGxzL21zdmNydC9tYmNzLmMsIGRsbHMvbnRkbGwvZmlsZS5jLCBpbmNsdWRlL3dpbmUvbGlicmFyeS5oLAoJICBsaWJzL3dpbmUvZGVidWcuYywgbGlicy93aW5lL2xvYWRlci5jLCB0b29scy9zZm50MmZudC5jLAoJICB0b29scy93aW5lZHVtcC9kdW1wLmM6CglSZW1vdmUgYSBmZXcgbW9yZSBpbnN0YW5jZXMgb2Ygc3RybmNweS4KCgkqIGRsbHMvdXNlci9NYWtlZmlsZS5pbiwgZGxscy91c2VyL2NsYXNzLmMsIGRsbHMvdXNlci9jbGlwYm9hcmQuYywKCSAgZGxscy91c2VyL2N1cnNvcmljb24uYywgZGxscy91c2VyL2RlZmRsZy5jLCBkbGxzL3VzZXIvZGVmd25kLmMsCgkgIGRsbHMvdXNlci9kaWFsb2cuYywgZGxscy91c2VyL2lucHV0LmMsIGRsbHMvdXNlci9tZGkuYywKCSAgZGxscy91c2VyL21zZ2JveC5jLCBkbGxzL3VzZXIvbm9uY2xpZW50LmMsIGRsbHMvdXNlci9zcHkuYywKCSAgZGxscy91c2VyL3dpbi5jLCBkbGxzL3VzZXIvd2luaGVscC5jLCBkbGxzL3VzZXIvd2lucG9zLmMsCgkgIGRsbHMvdXNlci93aW5wcm9jLmMsIHdpbmRvd3MvY2xhc3MuYywgd2luZG93cy9jbGlwYm9hcmQuYywKCSAgd2luZG93cy9jdXJzb3JpY29uLmMsIHdpbmRvd3MvZGVmZGxnLmMsIHdpbmRvd3MvZGVmd25kLmMsCgkgIHdpbmRvd3MvZGlhbG9nLmMsIHdpbmRvd3MvaW5wdXQuYywgd2luZG93cy9tZGkuYywgd2luZG93cy9tc2dib3guYywKCSAgd2luZG93cy9ub25jbGllbnQuYywgd2luZG93cy9zcHkuYywgd2luZG93cy93aW4uYywgd2luZG93cy93aW5oZWxwLmMsCgkgIHdpbmRvd3Mvd2lucG9zLmMsIHdpbmRvd3Mvd2lucHJvYy5jOgoJTW92ZWQgbW9zdCBmaWxlcyBmcm9tIHRoZSB3aW5kb3dzIGRpcmVjdG9yeSB0byBkbGxzL3VzZXIuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9EZS5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfRW4ucmMsCgkgIGRsbHMvc2hlbGwzMi9zaGZsZHJfdW5peGZzLmMsIGRsbHMvc2hlbGwzMi9zaHJlc2RlZi5oOgoJTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJU3VwcG9ydCBmb3IgcmVndWxhciBmaWxlcyAoYXMgb3Bwb3NlZCB0byBkaXJlY3RvcmllcykuCgoJKiBkbGxzL3F1YXJ0ei9kc291bmRyZW5kZXIuYzogQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJSW1wcm92ZWQgZXJyb3JzIGhhbmRsaW5nIGEgYml0IGluIGRzb3VuZCByZW5kZXJlci4KCgkqIGluY2x1ZGUvbXN2Y3J0L2NvbmlvLmgsIGluY2x1ZGUvbXN2Y3J0L2lvLmgsCgkgIGluY2x1ZGUvbXN2Y3J0L3Byb2Nlc3MuaDoKCU1hcmN1cyBNZWlzc25lciA8bWVpc3NuZXJAc3VzZS5kZT4KCWdjYzQgYWxpYXMgZml4ZXMuCgoJKiBkbGxzL2RkcmF3L2RkcmF3L2hhbC5jLCBkbGxzL2RpbnB1dC9kZXZpY2UuYywKCSAgZGxscy9tc2FjbS90ZXN0cy9tc2FjbS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCAzIG1lbXNldCgpcyB3aGljaCB1c2VkIHRoZSB3cm9uZyBzaXplICh0b28gbGFyZ2UpLgoKMjAwNS0wNC0yNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMva2VybmVsL3Rlc3RzL01ha2VmaWxlLmluLAoJICBkbGxzL2tlcm5lbC90ZXN0cy9zeW5jLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglUZXN0cyBmb3IgU2lnbmFsT2JqZWN0QW5kV2FpdC4KCgkqIGRsbHMva2VybmVsL3N5bmMuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50ZWQgU2lnbmFsT2JqZWN0QW5kV2FpdC4KCgkqIGRsbHMvbnRkbGwvbnRkbGxfbWlzYy5oLCBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmMsIGRsbHMvbnRkbGwvc3luYy5jLAoJICBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsIGluY2x1ZGUvd2ludGVybmwuaCwgc2VydmVyL2F0b20uYywKCSAgc2VydmVyL2NoYW5nZS5jLCBzZXJ2ZXIvY29uc29sZS5jLCBzZXJ2ZXIvZGVidWdnZXIuYywgc2VydmVyL2V2ZW50LmMsCgkgIHNlcnZlci9mZC5jLCBzZXJ2ZXIvZmlsZS5jLCBzZXJ2ZXIvaGFuZGxlLmMsIHNlcnZlci9oYW5kbGUuaCwKCSAgc2VydmVyL2hvb2suYywgc2VydmVyL21haWxzbG90LmMsIHNlcnZlci9tYXBwaW5nLmMsIHNlcnZlci9tdXRleC5jLAoJICBzZXJ2ZXIvbmFtZWRfcGlwZS5jLCBzZXJ2ZXIvb2JqZWN0LmMsIHNlcnZlci9vYmplY3QuaCwKCSAgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3F1ZXVlLmMsCgkgIHNlcnZlci9yZWdpc3RyeS5jLCBzZXJ2ZXIvcmVxdWVzdC5jLCBzZXJ2ZXIvc2VtYXBob3JlLmMsCgkgIHNlcnZlci9zZXJpYWwuYywgc2VydmVyL3NpZ25hbC5jLCBzZXJ2ZXIvc25hcHNob3QuYywgc2VydmVyL3NvY2suYywKCSAgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdGltZXIuYywgc2VydmVyL3Rva2VuLmMsIHNlcnZlci90cmFjZS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50ZWQgTnRTaWduYWxBbmRXYWl0Rm9yU2luZ2xlT2JqZWN0LgoKCSogZGxscy93aW5tbS90ZXN0cy90aW1lci5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJUmVtb3ZlIHByaW9yaXR5IGJvb3N0IHN0dWZmLgoKCSogZGxscy9kZHJhdy9kZHJhdy91c2VyLmM6IER5bGFuIFRhZnQgPHNvdW5kbWFub2tAeWFob28uY29tPgoJU2V0IGRpc3BsYXkgZnJlcXVlbmN5IHRvbyBpbiBTZXREaXNwbGF5TW9kZS4KCgkqIHRvb2xzL3dpbmVpbnN0YWxsOiBQYXVsIFZyaWVucyA8UGF1bC5WcmllbnNAeHM0YWxsLm5sPgoJLS11cGRhdGUgaXMgbm8gbG9uZ2VyIG5lZWRlZCB3aXRoIHdpbmVwcmVmaXhjcmVhdGUuCgoJKiBkbGxzL29sZTMyL3N0b3JhZ2UzMi5jLCBkbGxzL29sZTMyL3N0b3JhZ2UzMi5oOgoJSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJRGVmaW5lIGFuZCB1c2UgZW5kaWFuIGNvbnZlcnNpb24gbWFjcm9zIGZvciBiaWctZW5kaWFuIG1hY2hpbmVzLgoKMjAwNS0wNC0yMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjLCBkbGxzL21zdmNydC90aW1lLmM6CglKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglFeHBvcnQgX3R6bmFtZSwgZXhwZWN0ZWQgYnkgTW96aWxsYS4KCgkqIGRsbHMvYWR2YXBpMzIvdGVzdHMvY3J5cHQuYzoKCVN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJRXhjbHVkZWQgdGVzdHMgY3Jhc2hpbmcgb24gTlQ0IGZyb20gY29tcGlsaW5nLgoKCSogZGxscy9vbGUzMi9zdGdfcHJvcC5jLCBkbGxzL29sZTMyL3Rlc3RzL3N0Z19wcm9wLmM6CglKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CgktIGNvbnZlcnQgc3RyaW5ncyBiZXR3ZWVuIHByb3BlcnR5IHN0b3JhZ2UncyBjb2RlIHBhZ2UgYW5kIHN5c3RlbSBjb2RlCgkgIHBhZ2UKCS0gYWRkIHRlc3RzIGZvciBzZXR0aW5nIGNvZGUgcGFnZQoJLSBmaXggdGVzdHMgYW5kIGJlaGF2aW9yIHRvIG1hdGNoIFdpblhQCgoJKiBkbGxzL3dpbm1tL3Rlc3RzL3RpbWVyLmMsIGRsbHMvd2lubW0vdGltZS5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCVNldCB0aHJlYWQgcHJpb3JpdHkgZm9yIHRpbWVyIHRocmVhZC4KCUFkZCB0aW1lciB0aHJlYWQgcHJpb3JpdHkgdGVzdC4KCjIwMDUtMDQtMjIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3NoZWxsMzIvc2hmbGRyX3VuaXhmcy5jOgoJTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJVXNlIHRoZSBzaGVsbDMyIHR5cGljYWwgYmluYXJ5IGZvcm1hdCBmb3IgSVRFTUlETElTVHMuCgoJKiBkbGxzL2NvbWN0bDMyL3Rlc3RzL2RwYS5jOgoJU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtTGluZS5jb20+CglJbXBvcnQgRFBBX1NlYXJjaCBieSBvcmRpbmFsIGxpa2Ugb3RoZXIgRFBBIGZ1bmN0aW9ucy4KCgkqIHRvb2xzL3dpbmFwaS93aW4zMi5hcGk6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQWRkIGEgcG93cnByb2Ygc2VjdGlvbi4KCVVwZGF0ZSB3aW4zMi5hcGkgdG8gbWF0Y2ggdGhlIGN1cnJlbnQgc291cmNlLgoKCSogZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgUHJpdmlsZWdlQ2hlY2suCgoJKiBkbGxzL250ZGxsL250LmMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywKCSAgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLCBpbmNsdWRlL3dpbm50LmgsIGluY2x1ZGUvd2ludGVybmwuaCwKCSAgc2VydmVyL29iamVjdC5oLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcHJvdG9jb2wuZGVmLAoJICBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvc2VjdXJpdHkuaCwgc2VydmVyL3RocmVhZC5jLAoJICBzZXJ2ZXIvdGhyZWFkLmgsIHNlcnZlci90b2tlbi5jLCBzZXJ2ZXIvdHJhY2UuYzoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gQ2xlYW4gdXAgd2VsbC1rbm93biBwcml2aWxlZ2VzLgoJLSBJbXBsZW1lbnQgY2hlY2tpbmcgdG9rZW5zIGZvciBwcml2aWxlZ2VzIGluIHRoZSBzZXJ2ZXIuCgktIEltcGxlbWVudCBOdFByaXZpbGVnZUNoZWNrLgoKCSogZGxscy9zaGVsbDMyL2Jyc2ZvbGRlci5jOiBNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglGaXhlZCBpbmNvcnJlY3QgSVNoZWxsRm9sZGVyOjpFbnVtT2plY3RzIEFQSSB1c2FnZS4KCgkqIGRsbHMveDExZHJ2L2RpYi5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJSWYgWFNobUF0dGFjaCBmYWlscyB0aGVuIHJlc2V0IHNobWlkIHRvIC0xIHNvIHRoYXQgd2UgZG9uJ3QgdHJ5IHRvIHVzZQoJaXQgbGF0ZXIuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCU1TSSBhZHZlcnRpc2VkIHNob3J0Y3V0cyBkb24ndCByZXF1aXJlIGEgcHJvZHVjdCBJRC4KCgkqIGRsbHMvb2xlMzIvdGVzdHMvc3RnX3Byb3AuYzoKCVN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJTWFrZSBvbGUzMiB0ZXN0cyBsb2FkYWJsZSBvbiBOVDQuCgoJKiBkbGxzL3dpbm1tL3dpbmVhbHNhL2F1ZGlvLmM6CglBbGV4IFZpbGxhY+1zIExhc3NvIDxhX3ZpbGxhY2lzQHBhbG9zYW50by5jb20+CglQZXJmb3JtIG9uZSBtb3JlIGNvbW1pdCBpbiBBTFNBIG5vbi1lbXVsYXRpb24gaWYgdGhlcmUgYXJlIHN0aWxsCglmcmFtZXMgdG8gYmUgdHJhbnNtaXR0ZWQuCgoJKiBkbGxzL29sZWF1dDMyL29sZXBpY3R1cmUuYzoKCUFsZXggVmlsbGFj7XMgTGFzc28gPGFfdmlsbGFjaXNAcGFsb3NhbnRvLmNvbT4KCS0gRml4IGxlZnRvdmVyIG5lZ2F0aXZlIHNpZ24gaW4gaGVpZ2h0IHBhcmFtZXRlciBmb3IgdHJhbnNwYXJlbnQKCSAgYml0bWFwLgoJLSBQcm9wZXJseSBhbm5vdW5jZSB3aGV0aGVyIGJpdG1hcCBpcyB0cmFuc3BhcmVudCBpbiBnZXRfQXR0cmlidXRlcy4KCS0gR0lGIHRyYW5zcGFyZW5jeSBpcyBub3cgcGFsZXR0ZS1pbmRleCBiYXNlZCwgaW5zdGVhZCBvZiBSR0IgYmFzZWQuCgktIEtlZXAgb3JpZ2luYWwgYml0bWFwIGFuZCBYT1IgbWFzayBzZXBhcmF0ZSwgc28gdGhhdCBnZXRfSGFuZGxlCgkgIHJldHVybnMgb3JpZ2luYWwgYml0bWFwLgoKCSogZGxscy9tc2kvbXNpLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJVHdlYWsgdGhlIEFQSSBkb2N1bWVudGF0aW9uIHRvIHNpbGVuY2Ugd2luYXBpX2NoZWNrIHdhcm5pbmdzLgoKCSogZGxscy9hdGwvYXRsX21haW4uYywgZGxscy9hdGwvYXRsYmFzZS5oLCB0b29scy93aW5hcGkvd2luMzIuYXBpOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBZGQgYSBkZWZpbml0aW9uIGZvciBfQVRMX1JFR01BUF9FTlRSWSBpbiBhdGxiYXNlLmguCglGaXggdGhlIHByb3RvdHlwZSBvZiBBdGxNb2R1bGVVcGRhdGVSZWdpc3RyeUZyb21SZXNvdXJjZUQoKSBzbyBpdCB1c2VzCgl0aGUgcmlnaHQgcG9pbnRlciB0eXBlcy4KCjIwMDUtMDQtMjEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3gxMWRydi9jbGlwYm9hcmQuYywgZGxscy94MTFkcnYveDExZHJ2LmgsCgkgIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmMsIGRvY3VtZW50YXRpb24vc2FtcGxlcy9jb25maWc6CglNb3ZlZCB0aGUgVXNlUHJpbWFyeSBjb25maWcgcGFyYW1ldGVyIHRvIHRoZSB4MTFkcnYgc2VjdGlvbiwgcmVuYW1lZAoJYXMgVXNlUHJpbWFyeVNlbGVjdGlvbi4KCgkqIGRsbHMvbXNpL21zaS5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJRml4IGZvciB0aGUgcmV0dXJuIGNvZGVzIGZvciB0aGUgUXVhbGlmaWVkIGNvbXBvbmVudCBjYWxscy4gVGhleSBhcmUKCW5vdCBJTlNUQUxMU1RBVEVzIGJ1dCByYXRoZXIgc3VjY2VzcyB2YWx1ZXMuCgoJKiBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmMsIGRsbHMvbnRkbGwvdGltZS5jLCBkbGxzL250ZGxsL3djc3RyaW5nLmMsCgkgIGRsbHMvd2luaW5ldC9mdHAuYywgZGxscy93aW5pbmV0L3V0aWxpdHkuYywgaW5jbHVkZS93aW5lL3VuaWNvZGUuaDoKCUdldCByaWQgb2YgdGhlIHJlbWFpbmluZyBjYWxscyB0byBzdHJuY3B5VywgYW5kIHJlbW92ZSB0aGF0IGZ1bmN0aW9uCglmcm9tIHdpbmUvdW5pY29kZS5oLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsLmM6IFBldGVyIEJlcmcgTGFyc2VuIDxwZWJsQG1hdGgua3UuZGs+CglSZXdyaXR0ZW4gRG9FbnZpcm9ubWVudFN1YnN0MTYuCgoJKiBkbGxzL250ZGxsL250LmMsIGluY2x1ZGUvd2ludGVybmwuaDoKCVBhdWwgVnJpZW5zIDxQYXVsLlZyaWVuc0B4czRhbGwubmw+CglSZW1vdmUgVEhSRUFEX0lORk8gc3RydWN0LgoJUmVuYW1lIFRIUkVBRElORk8gaW50byBTWVNURU1fVEhSRUFEX0lORk9STUFUSU9OLgoKMjAwNS0wNC0yMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIERFVkVMT1BFUlMtSElOVFMsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL01ha2VmaWxlLmluLAoJICBkbGxzL3Bvd3Jwcm9mLy5jdnNpZ25vcmUsIGRsbHMvcG93cnByb2YvTWFrZWZpbGUuaW4sCgkgIGRsbHMvcG93cnByb2YvcG93cnByb2YuYywgZGxscy9wb3dycHJvZi9wb3dycHJvZi5zcGVjOgoJQmVuamFtaW4gQ3V0bGVyIDxjdXRsZXJAY3MuY29sb3N0YXRlLmVkdT4KCUFkZGVkIHBhcnRpYWwgaW1wbGVtZW50YXRpb24gb2YgcG93cnByb2YuZGxsLgoKCSogZGxscy91c2VyL21lc3NhZ2UuYzoKCUhhbmRsZSBwb3N0ZWQgaW50ZXJuYWwgbWVzc2FnZXMgZGlyZWN0bHkgaW4gUGVla01lc3NhZ2VXIHRvIGF2b2lkCgloYXZpbmcgdG8gcmV0dXJuIHRoZW0gdG8gdGhlIGFwcGxpY2F0aW9uLgoJQ2FsbCBOdFlpZWxkRXhlY3V0aW9uIGZvciBuaWNlciBiZWhhdmlvciB3aGVuIFBNX05PWUlFTEQgaXMgbm90CglzcGVjaWZpZWQuCgoJKiBkbGxzL3gxMWRydi9kaWIuYywgZGxscy94MTFkcnYveDExZHJ2Lmg6IEF2b2lkIGEgY29tcGlsZXIgd2FybmluZy4KCgkqIGRsbHMvZGNpbWFuMzIvZGNpbWFuX21haW4uYywgaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9kY2lkZGkuaCwKCSAgaW5jbHVkZS9kY2ltYW4uaCwgdG9vbHMvd2luYXBpL3dpbjMyLmFwaToKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRml4IHRoZSBEQ0lDcmVhdGVQcmltYXJ5KCkgcHJvdG90eXBlLiBJdCdzIHN1cHBvc2VkIHRvIHJldHVybiBhbiBpbnQKCXNvIGhhdmUgaXQgcmV0dXJuIERDSV9GQUlMX1VOU1VQUE9SVEVELgoJQWRkIHRoZSBuZWVkZWQgZXJyb3IgY29kZXMgYW5kIHRoZSBEQ0lTVVJGQUNFSU5GTyBkZWZpbml0aW9uIHRvCglkY2lkZGkuaC4KCUFkZCBkY2ltYW4uaCBhbmQgcHV0IHRoZSBmdW5jdGlvbiBwcm90b3R5cGVzIHRoZXJlLgoJZGNpZGRpLmggYW5kIGRjaW1hbi5oIHNob3VsZCBiZSBpbnN0YWxsZWQgd2l0aCB0aGUgb3RoZXIgV2luZG93cwoJaGVhZGVycy4KCgkqIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy9udGRsbC9udGRsbF9taXNjLmgsIGRsbHMvbnRkbGwvdmlydHVhbC5jOgoJUmVtb3ZlIGFsbCB0cmFjZXMgb2YgdGhlIFZJUlRVQUxfU2V0RmF1bHRIYW5kbGVyIHN1cHBvcnQuCgoJKiBkbGxzL3gxMWRydi9kaWIuYywgZGxscy94MTFkcnYveDExZHJ2Lmg6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJVXNlIHZlY3RvcmVkIGV4Y2VwdGlvbnMgdG8gZ2V0IHJpZCBvZiBWSVJUVUFMX1NldEZhdWx0SGFuZGxlcigpLgoKCSogZGxscy9vbGUzMi9vbGUyLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJU3BlY2lmeSB0aGUgcHJvcGVyIGNhbGwgY29udmVudGlvbiBpbiB0aGUgUHJvcFN5c0ZyZWVTdHJpbmcoKQoJaW1wbGVtZW50YXRpb24uCgoJKiBERVZFTE9QRVJTLUhJTlRTLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sCgkgIGRsbHMva2VybmVsL29sZGNvbmZpZy5jLCBkbGxzL2tlcm5lbC9wcm9jZXNzLmMsIGRsbHMva2VybmVsL3ZvbHVtZS5jOgoJTW92ZSBhbGwgdGhlIG9sZCBjb25maWcgY29udmVyc2lvbiBjb2RlIHRvIGEgbmV3IG9sZGNvbmZpZy5jIGZpbGUsIGFuZAoJZ2V0IHJpZCBvZiBtaXNjL3JlZ2lzdHJ5LmMgYW5kIHRoZSBtaXNjIGRpcmVjdG9yeS4KCgkqIGRsbHMvYWR2YXBpMzIvY3J5cHQuYywgZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jLCBkbGxzL2dkaS9wYWxldHRlLmMsCgkgIGRsbHMvbXNodG1sL21haW4uYywgZGxscy9tc2kvYWN0aW9uLmMsIGRsbHMvbXNpL21zaS5jLAoJICBkbGxzL29sZTMyL29sZTIuYywgZGxscy9ycGNydDQvcnBjcnQ0X21haW4uYywgZGxscy91c2VyL21pc2MuYywKCSAgZGxscy93aW5pbmV0L2Z0cC5jLCBkbGxzL3gxMWRydi94cmVuZGVyLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVR3ZWFrIHRoZSBBUEkgZG9jdW1lbnRhdGlvbiB0byBzaWxlbmNlIHdpbmFwaV9jaGVjayB3YXJuaW5ncy4KCgkqIHRvb2xzL3dpbmVwcmVmaXhjcmVhdGUuaW46CglQcm9wZXJseSBzdXBwb3J0IG91dC1vZi10cmVlIGJ1aWxkcyAoYmFzZWQgb24gcGF0Y2ggYnkgUGF1bCBNaWxsYXIpLgoKCSogZGxscy9yaWNoZWQyMC9lZGl0b3IuYzogUGhpbCBLcnlsb3YgPHBoaWxAbmV3c3Rhci5yaW5ldC5ydT4KCUZpeGVkIGFuIGVycm9yIGluIG15IHByZXZpb3VzIGNvbW1pdCB3aGljaCBjYXVzZWQgYW4gaW5maW5pdGUgbG9vcCBpbgoJSUU2IGluc3RhbGxlci4KCgkqIHRvb2xzL3dpbmFwaS93aW5hcGlfZml4dXBfZG9jdW1lbnRhdGlvbi5wbToKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJVHJ5IHRvIGNsYXJpZnkgdGhlICdubyB0cmFuc2xhdGlvbiBkZWZpbmVkJyBlcnJvci4KCVJlbW92ZSBhbiB1bnVzZWQgdmFyaWFibGUuCgoJKiBkbGxzL21zaS90ZXN0cy9zdW1pbmZvLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVRlc3QgTXNpU3VtbWFyeUluZm9HZXRQcm9wZXJ0eSByZWFkaW5nIGFuIGVtcHR5IHByb3BlcnR5LgoKCSogZGxscy9tc2kvc3VtaW5mby5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggbG9hZGluZyBvZiB0aGUgc3VtbWFyeSBpbmZvcm1hdGlvbi4KCgkqIGRsbHMvbnRkbGwvc2VydmVyLmMsIHRvb2xzL3dpbmVwcmVmaXhjcmVhdGUuaW4sIHRvb2xzL3dpbmV3cmFwcGVyOgoJUmVwbGFjZSB0aGUgd2luZXByZWZpeGNyZWF0ZSAtLXVwZGF0ZSBvcHRpb24gYnkgYSAtLXdhaXQgb3B0aW9uLCBhbmQKCW1ha2UgdGhlIG5vbi13YWl0IGJlaGF2aW9yIHRoZSBkZWZhdWx0LgoKCSogZGxscy91c2VyL21lc3NhZ2UuYywgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLAoJICBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvcXVldWUuYywgc2VydmVyL3RyYWNlLmM6CglBbGxvdyBuZXN0ZWQgaGFyZHdhcmUgbWVzc2FnZSBwcm9jZXNzaW5nIGJ5IHN0b3JpbmcgYSB1bmlxdWUgaWQgaW4KCWV2ZXJ5IG1lc3NhZ2UgYW5kIHVzaW5nIGl0IHRvIG1hbmFnZSB0aGUgY3VycmVudCBxdWV1ZSBwb3NpdGlvbi4KCUJldHRlciBmaWx0ZXJpbmcgb2YgaGFyZHdhcmUgbWVzc2FnZXMgdG8gYXZvaWQgcmV0dXJuaW5nIG1lc3NhZ2VzIHRoYXQKCWhhdmUgbm8gY2hhbmNlIHRvIG1hdGNoIHRoZSBmaWx0ZXIuCgoJKiBzZXJ2ZXIvcmVnaXN0cnkuYzoKCUxvYWQgc3lzdGVtLnJlZyBhbmQgdXNlcmRlZi5yZWcgYXQgc2VydmVyIGluaXQgdGltZS4KCgkqIGRsbHMvZ2RpL2dkaW9iai5jLCBkbGxzL3gxMWRydi9icnVzaC5jOgoJUmljaGFyZCBDb2hlbiA8cmljaGFyZEBkYWlqb2J1LmNvLnVrPgoJRGl0aGVyIHNvbGlkIGNvbG91cnMgb24gbW9ub2Nocm9tZSBiaXRtYXBzLgoKCSogaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9ldm50cmFjZS5oLCBpbmNsdWRlL3dtaXN0ci5oOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgZXZudHJhY2UuaCBhbmQgd21pc3RyLmguCgoJKiBpbmNsdWRlL2d1aWRkZWYuaDogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRGVmaW5lIExQQ0dVSUQuCgoJKiB0b29scy93aW5hcGkvd2luMzIuYXBpOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVVwZGF0ZSB3aW4zMi5hcGkgdG8gbWF0Y2ggdGhlIGN1cnJlbnQgc291cmNlLgoKCSogZGxscy9jb21jdGwzMi9tb250aGNhbC5jOiBEdWFuZSBDbGFyayA8ZGNsYXJrQGFrYW1haWwuY29tPgoJTWlzYyByZWN0YW5nbGUgZml4ZXMuCglUaGUgZGF0ZSBzaG91bGQgYmUgaW5pdGlhbGl6ZWQgZnJvbSBsb2NhbCB0aW1lLgoKCSogZGxscy9rZXJuZWwvc3luYy5jOiBHZXJhbGQgUGZlaWZlciA8Z2VyYWxkQHBmZWlmZXIuY29tPgoJRml4IGNvbXBpbGF0aW9uIHByb2JsZW0gY2F1c2VkIGJ5IFVMT05HX01BWC4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jLCBkbGxzL21zaS9tc2kuYywgZGxscy9tc2kvbXNpLnNwZWMsCgkgIGRsbHMvbXNpL21zaXByaXYuaCwgZGxscy9tc2kvcmVnaXN0cnkuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgUHVibGlzaCBDb21wb25lbnRzIGluIG9yZGVyIGZvciBNc2lHZXRRdWFsaWZpZWRDb21wb25lbnQKCWFwaXMgdG8gd29yay4gQWxzbyBpbXBsZW1lbnQgTXNpR2V0UXVhbGlmaWVkQ29tcG9uZW50LCBvciBhdCBsZWFzdCBzb21lCglvZiB0aGUgZnVuY3Rpb25hbGl0eSBhcyBpdCBpcyBzdXBwb3NlZCB0byBpbnN0YWxsIHN0dWZmIGlmIGl0IGlzCglhYnNlbnQsIHdoaWNoIGl0IGRvZXMgbm90IGRvIHlldC4KCjIwMDUtMDQtMTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBBTk5PVU5DRSwgQ2hhbmdlTG9nLCBWRVJTSU9OLCBjb25maWd1cmU6IFJlbGVhc2UgMjAwNTA0MTkuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjIwMDUtMDQtMTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3d0c2FwaTMyL3d0c2FwaTMyLmMsIGRsbHMvd3RzYXBpMzIvd3RzYXBpMzIuc3BlYywKCSAgaW5jbHVkZS93dHNhcGkzMi5oOgoJSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCVdUU0ZyZWVNZW1vcnkgc3R1Yi4KCgkqIGRsbHMvYWR2YXBpMzIvdGVzdHMvcmVnaXN0cnkuYzogSmFtZXMgSGF3a2lucyA8dHJ1aWtlbkBnbWFpbC5jb20+CglTZXQgdGhlIGJhY2t1cC9yZXN0b3JlIHByaXZpbGVnZS4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL2ZpbGUuYzoKCVN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJRXhjbHVkZSBjcmFzaGluZyBDcmVhdGVGaWxlVyB0ZXN0IG9uIE5UNC4KCgkqIHNlcnZlci9maWxlLmMsIHNlcnZlci9maWxlLmgsIHNlcnZlci9tYXBwaW5nLmM6CglDbGVhbmVkIHVwIGhhbmRsaW5nIG9mIDY0LWJpdCBmaWxlIHNpemVzLgoKCSogZGxscy9udGRsbC92aXJ0dWFsLmM6IFRyb3kgUm9sbG8gPHdpbmVAdHJveS5yb2xsby5uYW1lPgoJRml4IFNFR1ZzIGluIE50Q3JlYXRlU2VjdGlvbiBhbmQgTnRNYXBWaWV3T2ZTZWN0aW9uLgoKCSogZGxscy9hZHZwYWNrL3JlZy5jOiBUcm95IFJvbGxvIDx3aW5lQHRyb3kucm9sbG8ubmFtZT4KCVByZXZlbnQgU0VHViBpbiBSZWdJbnN0YWxsIHdoZW4gcHN0VGFibGUgaXMgTlVMTC4KCgkqIGRsbHMvYWR2YXBpMzIvc2VydmljZS5jOiBUcm95IFJvbGxvIDx3aW5lQHRyb3kucm9sbG8ubmFtZT4KCUNvcnJlY3QgdGVzdCBvZiBCT09MIHJldHVybiB2YWx1ZSBpbiBDb250cm9sU2VydmljZS4KCgkqIGRsbHMvYWR2YXBpMzIvdGVzdHMvcmVnaXN0cnkuYzogSmFtZXMgSGF3a2lucyA8dHJ1aWtlbkBnbWFpbC5jb20+CglSZW1vdmUgdHdvIHVubmVjZXNzYXJ5IHRyYWNlcy4KCUJyZWFrIHVwIG9uZSB0ZXN0IGludG8gdHdvLgoKCSogZGxscy9udGRsbC90ZXN0cy9pbmZvLmMsIGRsbHMvbnRkbGwvdGVzdHMvcnRsc3RyLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBkbGxzL3R3YWluL3R3YWluLmgsIGRvY3VtZW50YXRpb24vb2xlLnNnbWwsCgkgIGluY2x1ZGUvY3VzdGNudGwuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQXNzb3J0ZWQgc3BlbGxpbmcgZml4ZXMuCgoJKiBkbGxzL3NoZWxsMzIvc2hsZmlsZW9wLmM6IFRyb3kgUm9sbG8gPHdpbmVAdHJveS5yb2xsby5uYW1lPgoJRml4IFNFR1YgZm9yIG5vbi1mdWxseS1xdWFsaWZpZWQgZGVzdGluYXRpb24gcGF0aHMuCglEb24ndCBmYWlsIFNoRmlsZU9wZXJhdGlvblcgaWYgRk9GX0FMTE9XVU5ETyBpcyBwYXNzZWQuCgoJKiBkbGxzL21zaS90ZXN0cy9kYi5jLCBkbGxzL21zaS90ZXN0cy9yZWNvcmQuYywKCSAgZGxscy9zaGVsbDMyL3Rlc3RzL3NoZWxsbGluay5jLCBkbGxzL3VzZXIvdGVzdHMvbXNnLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFkZCB0cmFpbGluZyAnXG4ncyB0byBvaygpIGNhbGxzLgoKCSogZGxscy9kcGxheXgvZHBsYXkuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglEUFNFVF9SRU1PVEUgaXMgMCBzbyB3ZSBjYW5ub3QgZG8gKGZsYWdzICYgRFBTRVRfUkVNT1RFKS4gSW5zdGVhZAoJY2hlY2sgdGhhdCB0aGUgRFBTRVRfTE9DQUwgZmxhZyBpcyBub3Qgc2V0LgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGdicm93c2VyLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJU0JTUF9BQlNPTFVURSBpcyAwIHNvIHdlIGNhbm5vdCBkbyAod0ZsYWdzICYgU0JTUF9BQlNPTFVURSkuCglBZGQgQ09NRExHMzJfRHVtcFNCU1BGbGFncygpLgoKCSogZG9jdW1lbnRhdGlvbi93aW5lZGV2LW90aGVyZGVidWcuc2dtbDoKCUFhcm9uIEFydmV5IDxhYXJ2ZXlAY3MuaG1jLmVkdT4KCUFkZGVkIHNlY3Rpb24gIldoaWNoIGNvZGUgaGFzIGJlZW4gdGVzdGVkPyIgZGVzY3JpYmluZyBnY292IHVzYWdlLgoKCSogZGxscy9hZHZhcGkzMi90ZXN0cy9yZWdpc3RyeS5jOiBKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCUFkZCBSZWdVbkxvYWRLZXkgdGVzdC4KCgkqIGRsbHMvdXNlci9tZW51LmM6IEpvc2UgQWxvbnNvIDxhbG9uc29AZXN0YWRhby5jb20uYnI+CglDaGFuZ2UgdGhlIG9yZGVyIG9mIERpc3BhdGNoTWVzc2FnZSBhbmQgbWVzc2FnZSByZW1vdmFsLgoKMjAwNS0wNC0xOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHRvb2xzL3dpZGwvd2lkbC5jOiBKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglBbHdheXMgaW5pdGlhbGl6ZSBoZWFkZXIgZmlsZSBuYW1lLCB0byBwcmV2ZW50ICIjaW5jbHVkZSAobnVsbCkiCglzdGF0ZW1lbnRzIGluIGdlbmVyYXRlZCBmaWxlcy4KCgkqIHRvb2xzL3dpbmUuaW5mOiBCZW5qYW1pbiBDdXRsZXIgPGN1dGxlckBjcy5jb2xvc3RhdGUuZWR1PgoJQWRkIGRlZmF1bHQgcmVnaXN0cnkgZW50cmllcyBmb3IgcG93ZXIgbWFuYWdlbWVudC4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL2F0b20uYzogRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglDb3BpZWQgdGhlIGF0b20gdGVzdHMgZm9yIGdsb2JhbCBhdG9tIHNvIHRoYXQgd2UgY2FuIHRlc3QgbG9jYWwgYXRvbXMKCXRvby4KCgkqIGRsbHMva2VybmVsL2xvY2FsZS5jOgoJUmVtb3ZlZCB1bnVzZWQgZGF0YSBmaWVsZHMgaW4gdGhlIExBTkdfRklORF9EQVRBIHN0cnVjdHVyZS4KCgkqIGRsbHMvbnRkbGwvc3luYy5jLCBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsCgkgIHNlcnZlci9wcm90b2NvbC5kZWY6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCVJlbW92ZWQgdGhlIG5vIGxvbmdlciB1c2VyIEFQQ19BU1lOQyBraW5kIG9mIEFQQy4KCgkqIHdpbmRvd3Mvc3lzY29sb3IuYzogUmVpbiBLbGF6ZXMgPHdpam5Ad2FuYWRvby5ubD4KCUZpeCBhZGRyZXNzaW5nIHRoZSBtYWdpYyBHRElPQkpIRFIgZmllbGQgaW4KCVNZU0NPTE9SX01ha2VPYmplY3RTeXN0ZW0uCgoJKiBkbGxzL3VzZXIvdGV4dC5jOiBQZXRlciBCZXJnIExhcnNlbiA8cGVibEBtYXRoLmt1LmRrPgoJRWxpbWluYXRlIHN0cm5jcHkuIENvcnJlY3QgYSBcMCBhc3NpbmdtZW50IHRvIHRoZSBtb2RzdHIgdmFyaWFibGUuCgoJKiBkbGxzL21zaS9mb3JtYXQuYzogUGV0ZXIgQmVyZyBMYXJzZW4gPHBlYmxAbWF0aC5rdS5kaz4KCVJlbW92ZSAyIGlkZW50aWNhbHMgY2FsbHMgdG8gc3RybGVuVy4KCgkqIGRsbHMvZG1sb2FkZXIvY29udGFpbmVyLmMsIGRsbHMvZG11c2ljL2NvbGxlY3Rpb24uYywKCSAgZGxscy9rZXJuZWwvdGFzay5jLCBkbGxzL3JzYWVuaC9yc2FlbmguYywgZGxscy9zaGx3YXBpL3BhdGguYywKCSAgZGxscy9zaGx3YXBpL3VybC5jLCBkbGxzL3dpbmVkb3MvZGV2aWNlcy5jLCBkbGxzL3dpbmluZXQvdXJsY2FjaGUuYzoKCVBldGVyIEJlcmcgTGFyc2VuIDxwZWJsQG1hdGgua3UuZGs+CglTdHJuY3B5IGVsaW1pbmF0aW9uLgoKCSogZGxscy9kYmdoZWxwL3R5cGUuYzogUGV0ZXIgQmVyZyBMYXJzZW4gPHBlYmxAbWF0aC5rdS5kaz4KCUVsaW1pbmF0ZSBzdHJuY3B5IGFuZCBjb3JyZWN0IHNvbWUgTmFtZUxlbiBidWdzLgoKCSogZGxscy9kYmdoZWxwL21vZHVsZS5jOiBQZXRlciBCZXJnIExhcnNlbiA8cGVibEBtYXRoLmt1LmRrPgoJRWxpbWluYXRpb24gb2YgbHN0cmNweW4sIGFuZCBjb3JyZWN0ZWQgYSBwb3RlbnRpYWwgcG9pbnRlciBidWcuCgoJKiBkbGxzL2NhYmluZXQvY2FiZXh0cmFjdC5jOiBQZXRlciBCZXJnIExhcnNlbiA8cGVibEBtYXRoLmt1LmRrPgoJRWxpbWluYXRlIGEgc3RybmNweSBhbmQgcmVtb3ZlIHVudXNlZCB2YXJpYWJsZS4KCgkqIGRsbHMva2VybmVsL3N5bmMuYywgZGxscy9udGRsbC9maWxlLmMsCgkgIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwgaW5jbHVkZS93aW50ZXJubC5oLAoJICBzZXJ2ZXIvbmFtZWRfcGlwZS5jLCBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvdHJhY2UuYzoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJLSBtb3ZlZCBuYW1lZCBwaXBlIGNyZWF0aW9uIHRvIG50ZGxsCgktIHNlcnZlciBub3cgaGFuZGxlcyB0aGUgbmFtZWQgcGlwZSBmbGFncyBhcyB0aGUgTlRETEwgdmFsdWVzIChub3QgdGhlCgkgIEtFUk5FTDMyIG9uZXMpCgktIG5hbWVkIHBpcGVzIGluIHNlcnZlciBub3cgdXNlIHRoZSBhc3luYyBJTyBtZWNoYW5pc20gZm9yCgkgIGNvbm5lY3Qvd2FpdCBvcHMKCgkqIGRsbHMvZGlucHV0L2RhdGFfZm9ybWF0cy5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQWRkZWQga2V5Ym9hcmQgZGF0YSBmb3JtYXQuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2x0aXBzLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnLmMsCgkgIGRsbHMvZGV2ZW51bS9wYXJzZWRpc3BsYXluYW1lLmMsIGRsbHMvZG1iYW5kL2JhbmQuYywKCSAgZGxscy9kbWNvbXBvcy9jaG9yZG1hcC5jLCBkbGxzL2RtaW1lL2F1ZGlvcGF0aC5jLCBkbGxzL2RtaW1lL2dyYXBoLmMsCgkgIGRsbHMvZG1pbWUvc2VnbWVudC5jLCBkbGxzL2RtbG9hZGVyL2xvYWRlcnN0cmVhbS5jLAoJICBkbGxzL2Rtc2NyaXB0L3NjcmlwdC5jLCBkbGxzL2Rtc3R5bGUvc3R5bGUuYywgZGxscy9nZGkvZm9udC5jLAoJICBkbGxzL2dkaS9mcmVldHlwZS5jLCBkbGxzL2l0c3MvY2htX2xpYi5jLCBkbGxzL21zaS9jb25kLnksCgkgIGRsbHMvbXN2Y3J0L2xvY2FsZS5jLCBkbGxzL21zdmlkZW8vbWNpd25kLmMsCgkgIGRsbHMvbXN2aWRlby9tc3ZpZGVvMTYuYywgZGxscy9vbGVkbGcvaW5zb2JqZGxnLmMsCgkgIGRsbHMvcXVhcnR6L2ZpbHRlcm1hcHBlci5jLCBkbGxzL3NoZWxsMzIvZGVidWdobHAuYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsbGluay5jLCBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGxleGVjLmMsIGRsbHMvc2hlbGwzMi9zeXN0cmF5LmMsIGRsbHMvdXNlci9lZGl0LmMsCgkgIGRsbHMvd2luZWRvcy9pbnQyMS5jLCBkbGxzL3dpbmluZXQvZGlhbG9ncy5jLAoJICBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYywgZGxscy93aW5pbmV0L3V0aWxpdHkuYywKCSAgZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmMsIHByb2dyYW1zL3dpbmVjZmcvZHJpdmVkZXRlY3QuYywKCSAgdG9vbHMvc2ZudDJmbnQuYzoKCVBldGVyIEJlcmcgTGFyc2VuIDxwZWJsQG1hdGgua3UuZGs+CglSZXBsYWNlIHN0cm5jcHkgd2l0aCBtZW1jcHkgb3IgbHN0cmNweW4uCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6IFZpdGFsaXkgTWFyZ29sZW4gPHdpbmUtcGF0Y2hAa2lldmluZm8uY29tPgoJRG9uJ3QgcmVkcmF3IGlmIG5vIGluZm9ybWF0aW9uIGhhcyBjaGFuZ2VkLgoJRml4ZWQgZW5kbGVzcyByZWRyYXcgbG9vcCBpZiBhcHAgdXNpbmcgY2FsbGJhY2sgZm9yIGltYWdlcyBhbmQvb3IKCXRleHQuCglLZWVwIGNvbG9yIGNoYW5nZXMgbWFkZSBieSBhcHAgZm9yIHRoZSBjdXJyZW50IGRyYXcgY3ljbGUuCgoJKiBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYywgaW5jbHVkZS9jb21tZGxnLmg6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCUFkZGVkIHByb3BlciBkZWZpbml0aW9uIGZvciBQUklOVERMR0VYW0FXXSBzdHJ1Y3R1cmVzLgoKCSogcHJvZ3JhbXMvd2luZXRlc3QvZ3VpLmMsIHByb2dyYW1zL3dpbmV0ZXN0L21haW4uYywKCSAgcHJvZ3JhbXMvd2luZXRlc3QvdXRpbC5jLCBwcm9ncmFtcy93aW5ldGVzdC93aW5ldGVzdC5oLAoJICBwcm9ncmFtcy93aW5ldGVzdC93aW5ldGVzdC5yYzoKCUZlcmVuYyBXYWduZXIgPHdmZXJpQHRiYS5lbHRlLmh1PgoJRW5mb3JjZSB2YWxpZCB0YWcgc3ludGF4IGR1cmluZyBpbnB1dC4KCgkqIGRsbHMvbXNhY20vaW1hYWRwMzIvaW1hYWRwMzIuYywgZGxscy9tc3ZjcnQvbWJjcy5jLAoJICBwcm9ncmFtcy93aW5lY2ZnL3dpbmVjZmcuYzoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJRml4ZWQgc29tZSBzaWduZWQgLyB1bnNpZ25lZCBwb2ludGVyIGNhc3RzLgoKCSogZG9jdW1lbnRhdGlvbi9hcmNoaXRlY3R1cmUuc2dtbCwgZG9jdW1lbnRhdGlvbi93aW5lZGV2LWtlcm5lbC5zZ21sOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CgktIFVzaW5nIHVuaWZvcm0gRG9jQm9vayB0YWdzIGZvciBETExzLCBjb21tYW5kcywgZW52aXJvbm1lbnQgdmFycy4uLgoJLSBNb3ZlZCBkZXRhaWxlZCBtZW1vcnkgbWFuYWdlbWVudCBmcm9tIGFyY2hpIHRvIGtlcm5lbChzKSBwYXJ0LgoJLSBFbmhhbmNlZCBwcm9jZXNzIGhhbmRsaW5nIGRlc2NyaXB0aW9uLgoJLSBBZGRlZCBzZWN0aW9uIGFib3V0IDE2IGJpdCBwcm9jZXNzZXMnIHN1cHBvcnQuCgktIEFkZGVkIHNlY3Rpb24gYWJvdXQgRE9TIHN1cHBvcnQuCgoJKiBkb2N1bWVudGF0aW9uL2RlYnVnZ2VyLnNnbWw6IEVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJTWlub3IgY2xlYW51cHMuCgoJKiBkbGxzL2FkdmFwaTMyL3Rlc3RzL3JlZ2lzdHJ5LmM6IEpha29iIEVyaWtzc29uIDxqYWtvdkB2bWxpbnV4Lm9yZz4KCUZhaWwgZ3JhY2VmdWxseSBvbiBwZXJtaXNzaW9uIGRlbmllZC4KCgkqIGRsbHMvbnRkbGwvbnQuYzogQmVuamFtaW4gQ3V0bGVyIDxjdXRsZXJAY3MuY29sb3N0YXRlLmVkdT4KCUFkZCBzZW1pLXN0dWIgZm9yIE50UG93ZXJJbmZvcm1hdGlvbihTeXN0ZW1Qb3dlckNhcGFiaWxpdGllcywgLi4uKS4KCgkqIGRsbHMvY29tY3RsMzIvZGF0ZXRpbWUuYzogRHVhbmUgQ2xhcmsgPGRjbGFya0Bha2FtYWlsLmNvbT4KCVRoZSBkYXRldGltZSBzaG91bGQgYmUgaW5pdGlhbGl6ZWQgd2l0aCBsb2NhbCB0aW1lLgoKCSogZGxscy9hZHZwYWNrL2FkdnBhY2suYywgZGxscy9hZHZwYWNrL2FkdnBhY2suc3BlYywgaW5jbHVkZS9hZHZwdWIuaDoKCVNhbWkgQWFyaW8gPHNhbWkuYWFyaW9Ac3VyZmV1LmZpPgoJQWRkZWQgc3R1YnMgZm9yIFJ1blNldHVwQ29tbWFuZCBhbmQgRGVsTm9kZS4KCgkqIGRsbHMveDExZHJ2L2NsaXBib2FyZC5jOiBFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCUNvcnJlY3RuZXNzIGZvciBjb25zdCBwb2ludGVyIGNhc3RzLgoKCSogcHJvZ3JhbXMvcHJvZ21hbi9kaWFsb2cuYywgcHJvZ3JhbXMvcHJvZ21hbi9wcm9ncmFtLmM6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCVJlbW92ZWQgYSBjb3VwbGUgb2YgdW5uZWVkZWQgY2FzdHMuCgoyMDA1LTA0LTE2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL250ZGxsL3N5bmMuYywgaW5jbHVkZS93aW50ZXJubC5oOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRGVjbGFyZSBhbmQgZGVmaW5lIGEgc3R1YiBmb3IgTnRTaWduYWxBbmRXYWl0Rm9yU2luZ2xlT2JqZWN0LgoKCSogZGxscy9nZGkvZ2RpMTYuYzogUmljaGFyZCBDb2hlbiA8cmljaGFyZEBkYWlqb2J1LmNvLnVrPgoJQ3JlYXRlQml0bWFwMTYgc2hvdWxkIHVzZSBvbmx5IHRoZSBmaXJzdCBieXRlIG9mIHBsYW5lcyAmIGJwcC4KCgkqIGRsbHMvYWR2YXBpMzIvcmVnaXN0cnkuYywgZGxscy9hZHZhcGkzMi90ZXN0cy9yZWdpc3RyeS5jOgoJSmFtZXMgSGF3a2lucyA8dHJ1aWtlbkBnbWFpbC5jb20+CglSZWdEZWxldGVLZXkgZmFpbHMgaWYgdGhlIGxwU3ViS2V5IHBhcmFtIGlzIE5VTEwuCgoJKiBkbGxzL3JpY2hlZDIwL2NhcmV0LmMsIGRsbHMvcmljaGVkMjAvZWRpdG9yLmMsCgkgIGRsbHMvcmljaGVkMjAvZWRpdG9yLmgsIGRsbHMvcmljaGVkMjAvZWRpdHN0ci5oLAoJICBkbGxzL3JpY2hlZDIwL3BhaW50LmMsIGRsbHMvcmljaGVkMjAvcGFyYS5jLCBkbGxzL3JpY2hlZDIwL3J1bi5jLAoJICBkbGxzL3JpY2hlZDIwL3N0eWxlLmMsIGRsbHMvcmljaGVkMjAvd3JhcC5jOgoJS3J6eXN6dG9mIEZvbHRtYW4gPHdkZXZAZm9sdG1hbi5jb20+CgktIHJlbW92ZWQgdHJhaWxpbmcgc3BhY2VzIGZyb20gc29tZSBmaWxlcwoJLSB0YWIgc3VwcG9ydAoJLSBpbmRlbnQgc3VwcG9ydAoKCSogZGxscy9jb21jdGwzMi9kYXRldGltZS5jOiBEdWFuZSBDbGFyayA8ZGNsYXJrQGFrYW1haWwuY29tPgoJQWRkIHN1cHBvcnQgZm9yIGRpcmVjdCBrZXlib2FyZCBpbnB1dCB0byBudW1lcmljIGZpZWxkcy4KCgkqIGRsbHMvaGhjdHJsLm9jeC9oaGN0cmwuYzogTWlrZSBIZWFybiA8bWlrZUBuYXZpLmN4PgoJLSBBZGQgdGV4dCBkdW1waW5nIG9mIHRoZSByZXF1ZXN0ZWQgY29tbWFuZC4KCS0gTWFrZSB0aGUgc3R1YiBtZXNzYWdlIGFwcGVhciBmb3IgbW9yZSBjb21tYW5kcy4KCgkqIGRsbHMvbnRkbGwvbnQuYywgZGxscy9udGRsbC9udGRsbC5zcGVjLCBpbmNsdWRlL3dpbnRlcm5sLmg6CglCZW5qYW1pbiBDdXRsZXIgPGN1dGxlckBjcy5jb2xvc3RhdGUuZWR1PgoJLSBDb3JyZWN0IGFyZ3MgZm9yIE50UG93ZXJJbmZvcm1hdGlvbi4KCS0gQWRkIHN0dWIgZm9yIE50SW5pdGlhdGVQb3dlckFjdGlvbi4KCjIwMDUtMDQtMTUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBsb2FkZXIvcHJlbG9hZGVyLmM6IEFhcm9uIEFydmV5IDxhYXJ2ZXlAY3MuaG1jLmVkdT4KCUFkZGVkIF9fYmJfaW5pdF9mdW5jIGZvciBsaW5raW5nIHB1cnBvc2VzLgoKCSogZGxscy9tc2h0bWwvaHRtbGRvYy5jLCBkbGxzL21zaHRtbC9tc2h0bWxfcHJpdmF0ZS5oLAoJICBkbGxzL21zaHRtbC9vbGVvYmouYywgZGxscy9tc2h0bWwvdmlldy5jOgoJSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCS0gTW9yZSBpbXBsZW1lbnRhdGlvbiBvZiB2aWV3CgktIEFkZGVkIElPbGVJblBsYWNlQWN0aXZlT2JqZWN0CgoJKiBkbGxzL2FkdmFwaTMyL3Rlc3RzL3JlZ2lzdHJ5LmM6IEpha29iIEVyaWtzc29uIDxqYWtvdkB2bWxpbnV4Lm9yZz4KCUVSUk9SX1BSSVZJTEVHRV9OT1RfSEVMRCBjYW4gYmUgcmV0dXJuZWQgZm9yIE5UNC4KCgkqIGRsbHMvYWR2YXBpMzIvdGVzdHMvY3J5cHQuYzogSmFrb2IgRXJpa3Nzb24gPGpha292QHZtbGludXgub3JnPgoJV2luOTggY2FuIHJldHVybiBFUlJPUl9DQUxMX05PVF9JTVBMRU1FTlRFRC4KCgkqIGRsbHMvZGNpbWFuMzIvZGNpbWFuMzIuc3BlYywgZGxscy9kY2ltYW4zMi9kY2ltYW5fbWFpbi5jOgoJQnJpYW4gVmluY2VudCA8dmlubkB0aGVzaGVsbC5jb20+CglBZGQgc3R1YiBmb3IgRENJQ3JlYXRlUHJpbWFyeS4KCgkqIGRsbHMvc2hlbGwzMi9zaGZsZHJfZnMuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCVdoZW4gd2UncmUgaGlkaW5nIGZpbGUgZXh0ZW5zaW9ucyB0aGVuIFNldE5hbWVPZiBzaG91bGQgYXBwZW5kIHRoZQoJb3JpZ2luYWwgZXh0ZW5zaW9uIGlmIFNIR0ROX0ZPUlBBUlNJTkcgaXNuJ3Qgc2V0LgoJVGhlIGZsYWdzIHBhc3NlZCB0byBTZXROYW1lT2YgcmVmZXIgdG8gdGhlIGRzdCBzdHJpbmcgbm90IHRoZSBzcmMKCXBpZGwuCgoJKiBkbGxzL29sZTMyL21vbmlrZXIuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVplcm8gb3V0IGFuIGludmFsaWRhdGVkIHJ1bm5pbmdPYmplY3RUYWJsZUluc3RhbmNlIHBvaW50ZXIuCgoJKiB0b29scy93aW5lZHVtcC9tYWluLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglNZW50aW9uIHRoZSAnZW1mJyBhbmQgJ2xuaycgbW9kZXMgaW4gdGhlIHVzYWdlIHN1bW1hcnkuCglBZGQgLT8gYW5kIC0taGVscCBzeW5vbnltcyBmb3IgLWggYXMgaXMgY3VzdG9tYXJ5LgoJcHV0cygiIikgYWxyZWFkeSBwcmludHMgYSAnXG4nIHNvIHdlIGRvbid0IG5lZWQgYSBzZWNvbmQgb25lLgoKCSogcHJvZ3JhbXMvd2luZW1lbnVidWlsZGVyL3dpbmVtZW51YnVpbGRlci5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUlmIHdpbmVtZW51YnVpbGRlciBpcyBnaXZlbiBhIGxpc3Qgb2YgbWVudXMgdG8gcmVjcmVhdGUsIGl0IHNob3VsZCBub3QKCWdpdmUgdXAgb24gdGhlIGZpcnN0IG1lbnUgdGhhdCBmYWlscy4KCgkqIGRsbHMvY29tY3RsMzIvZGF0ZXRpbWUuYzogRHVhbmUgQ2xhcmsgPGRjbGFya0Bha2FtYWlsLmNvbT4KCUhvdXIgJzAnIGNvcnJlc3BvbmRzIHRvIDEyQU0uCgoJKiBkbGxzL250ZGxsL250LmMsIGRsbHMvbnRkbGwvdGVzdHMvLmN2c2lnbm9yZSwKCSAgZGxscy9udGRsbC90ZXN0cy9NYWtlZmlsZS5pbiwgZGxscy9udGRsbC90ZXN0cy9pbmZvLmM6CglQYXVsIFZyaWVucyA8UGF1bC5WcmllbnNAeHM0YWxsLm5sPgoJU3RhcnQgb2YgdW5pdCB0ZXN0cyBmb3IgKkluZm8qIGZ1bmN0aW9ucy4KCUNoZWNrIG5lZWRlZCBsZW5ndGggcmVnYXJkbGVzcyBvZiBnaXZlbiBsZW5ndGguCglSZXR1cm4gU1RBVFVTX0lOVkFMSURfSU5GT19DTEFTUyBmb3Igbm9uLWltcGxlbWVudGVkIGNsYXNzZXMuCglSZXR1cm4gU1RBVFVTX0FDQ0VTU19WSU9MQVRJT04gaWYgbm8gYnVmZmVyIGdpdmVuLgoKCSogZGxscy9nZGkvdGVzdHMvbWV0YWZpbGUuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJU2ltcGxlIHVuaXQgdGVzdHMgZm9yIEdkaUlzKkRDIGZ1bmN0aW9ucy4KCgkqIGluY2x1ZGUvd3RzYXBpMzIuaDogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWRkIHNvbWUgbW9yZSBXaW5kb3dzIFRlcm1pbmFsIFNlcnZlciBBUEkgZGVmaW5pdGlvbnMuCgoJKiB0b29scy93aWRsL2NsaWVudC5jLCB0b29scy93aWRsL3NlcnZlci5jOgoJSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJUHV0IHNwYWNlIGJldHdlZW4gaW5jbHVkZSBkaXJlY3RpdmUgYW5kIGluY2x1ZGUgZmlsZS4KCgkqIHRvb2xzL3dpZGwvd2lkbC5tYW46IEp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCUFkZCBwcm94eS9zdHViIG9wdGlvbnMgdG8gd2lkbCBtYW4gcGFnZS4KCgkqIGRsbHMvb2xlMzIvb2xlMzIuc3BlYywgZGxscy9vbGUzMi9zdGdfcHJvcC5jLAoJICBkbGxzL29sZTMyL3Rlc3RzL3N0Z19wcm9wLmM6CglKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglJbXBsZW1lbnQgRm10SWRUb1Byb3BTdGdOYW1lICYgUHJvcFN0Z05hbWVUb0ZtdElkLCB3aXRoIHRlc3RzLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBUQl9HRVRCVVRUT05TSVpFIHRvIHJldHVybiB0aGUgY29ycmVjdCB3aWR0aC9oZWlnaHQgZm9yIG5vCglidXR0b25zLgoKCSogZGxscy9jb21jdGwzMi9kYXRldGltZS5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIFVzZSBTZXRXaW5kb3dQb3MgdG8gbW92ZSB0aGUgYnVkZHkgd2luZG93IGludG8gcG9zaXRpb24gaW5zdGVhZCBvZgoJICBkZXN0cm95aW5nIGl0IGFuZCByZWNyZWF0aW5nIGl0IGF0IHRoZSBuZXcgcG9zaXRpb24uCgktIENsZWFyIHRoZSBiYWNrZ3JvdW5kIGluIFdNX1ZTQ1JPTEwgdG8gYXZvaWQgcHJvYmxlbXMgd2l0aAoJICBhbnRpYWxpYXNlZCB0ZXh0IGRyYXdpbmcgb24gdG9wIG9mIGl0c2VsZiBtdWx0aXBsZSB0aW1lcy4KCgkqIGluY2x1ZGUvd2luZ2RpLmg6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBwcm90b3R5cGVzIGZvciBzb21lIEdkaSogZnVuY3Rpb25zLgoKMjAwNS0wNC0xNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvY29tY3RsMzIvdXBkb3duLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglLZWVwIHRyYWNrIG9mIFdTX0RJU0FCTEVEIGV4cGxpY2l0ZWx5LCBhcyBpdCBkb2Vzbid0IGdlbmVyYXRlIGEKCVdNX1NUWUxFQ0hBTkdFRCBtZXNzYWdlLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQWRkIHN1cHBvcnQgZm9yIExWTl9PRFNUQVRFQ0hBTkdFRC4KCU1pbm9yIHR5cG8gZml4ZXMuCgoJKiBkbGxzL2dkaS9kYy5jLCBkbGxzL2dkaS9nZGkzMi5zcGVjOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IEdkaUlzKkRDIGZ1bmN0aW9ucy4KCgkqIGRsbHMvdXNlci90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL3VzZXIvdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvdXNlci90ZXN0cy9tZW51LmM6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglBZGQgYSB0ZXN0IGZvciBhIG1lbnUgcHJvYmxlbSBJIGZvdW5kLgoKCSogZGxscy91c2VyL21lbnUuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJUmVjYWxjdWxhdGUgdGhlIG1lbnUgb24gY2FsbGluZyBNb2RpZnlNZW51IHNvIHRoYXQgdGhlIG1lbnUgaXRlbXMgYXJlCglzaG93biBhdCB0aGUgY29ycmVjdCB3aWR0aC4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzogVml0YWxpeSBNYXJnb2xlbiA8d2luZS1wYXRjaEBraWV2aW5mby5jb20+CglTZW5kIG5vdGlmaWVzIGFmdGVyIGludmFsaWRhdGluZyBjaGFuZ2VkIGFyZWFzLgoJRG9uJ3QgdXNlIGN1c3RvbSBkcmF3IHJldHVybmVkIGNvbG9ycyBmb3IgY29udHJvbC4KCgkqIGRsbHMvb2xlMzIvc3RnX3Byb3AuYzogRml4ZWQgYSBidWZmZXIgb3ZlcmZsb3cuCgoJKiBkbGxzL3gxMWRydi9kaWIuYzogUmVpbiBLbGF6ZXMgPHdpam5Ad2FuYWRvby5ubD4KCUluIFgxMURSVl9ESUJfU2V0SW1hZ2VCaXRzIGF2b2lkIEJhZE1hdGNoIGVycm9ycyB3aGVuIGNhbGxpbmcKCVhHZXRTdWJJbWFnZS4KCgkqIGRsbHMveDExZHJ2L29wZW5nbC5jLCBkbGxzL3gxMWRydi94MTFkcnYuaCwKCSAgZGxscy94MTFkcnYveDExZHJ2X21haW4uYywgZGxscy94MTFkcnYveHZpZG1vZGUuYzoKCUluY2x1ZGUgWG1kLmggaW4geDExZHJ2Lmggd2l0aCB0aGUgcHJvcGVyIGRlZmluZXMgdG8gbWFrZSBpdCB3b3JrLCBhbmQKCXJlbW92ZSByZWxhdGVkIGhhY2tzIGluIHZhcmlvdXMgQyBmaWxlcy4KCgkqIGRsbHMvbXN2Y3J0L3djcy5jOiBSZWluIEtsYXplcyA8d2lqbkB3YW5hZG9vLm5sPgoJRml4IGRlY29kaW5nIHByaW50ZiBmb3JtYXQgaW4gY2FzZSB0aGUgZmllbGQgd2lkdGggc3BlY2lmaWVyIGlzIGEgJyonLgoKCSogdG9vbHMvd3JjL3BhcnNlci55OiBNaWNoYWVsIExpbiA8bWxpbkBjb3J2dS5jb20uYXU+CglDaGFuZ2UgbWVudSBpdGVtIG9wdGlvbnMgdG8gdXNlIG9wdGlvbmFsIGNvbW1hLgoKCSogaW5jbHVkZS93aW51c2VyLmg6IE1pY2hhZWwgTGluIDxtbGluQGNvcnZ1LmNvbS5hdT4KCURlZmluZSBXSU5VU0VSQVBJLgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliLmM6IERhbmllbCBSZW1lbmFrIDxkdHJlbWVuYWtAZ21haWwuY29tPgoJUmVtb3ZlIHVudXNlZCB2YXJpYWJsZSBpbiBfY29weV9hcmcuCgoJKiBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYzogQmVuamFtaW4gQ3V0bGVyIDxjdXRsZXJAY3MuY29sb3N0YXRlLmVkdT4KCUJldHRlciBoYW5kbGluZyBvZiBoSW50ZXJuZXQgPT0gTlVMTCBmb3IgSU5URVJORVRfT1BUSU9OX1BST1hZIGluCglJTkVUX1F1ZXJ5T3B0aW9uSGVscGVyLiBNU0ROIHNheXMgdG8gcmV0dXJuICdnbG9iYWwgcHJveHkgaW5mbycgd2hlbgoJaEludGVybmV0ID09IE5VTEwuIFRoYW5rcyB0byBKdWFuIExhbmcgZm9yIGhlbHBpbmcgd2l0aCB0aGlzLgoKCSogZGxscy9jb21jdGwzMi9kYXRldGltZS5jLCBkbGxzL2NvbWN0bDMyL21vbnRoY2FsLmM6CglEdWFuZSBDbGFyayA8ZGNsYXJrQGFrYW1haWwuY29tPgoJTW9uZGF5IGlzIGRheSBudW1iZXIgJzEnLgoJU2V0IGRheSBvZiB3ZWVrIHdoZW4gYSBkYXkgaXMgc2VsZWN0ZWQgaW4gdGhlIGNhbGVuZGVyLgoJVXNlIGZpeGVkIHdpZHRoIGZpZWxkcyBpbiBkYXRldGltZS4KCURUU19USU1FRk9STUFUIGlzIGEgdHdvIGJpdCBmaWVsZCwgc28gdGVzdCBhY2NvcmRpbmdseS4KCVJlcG9zaXRpb24gYW5kIHJlc2l6ZSB0aGUgdXBkb3duIGNvbnRyb2wgd2hlbiB0aGUgZGF0ZXRpbWUgY29udHJvbCBpcwoJcmVzaXplZC4KCVJlc3BvbmQgdG8gdXBkb3duIGlucHV0cy4KCgkqIGRsbHMvbXNodG1sL01ha2VmaWxlLmluLCBkbGxzL21zaHRtbC9odG1sZG9jLmMsIGRsbHMvbXNodG1sL21haW4uYywKCSAgZGxscy9tc2h0bWwvbXNodG1sX3ByaXZhdGUuaCwgZGxscy9tc2h0bWwvdmlldy5jOgoJSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCUFkZGVkIG1vcmUgaW1wbGVtZW50YXRpb24gb2YgSURvY3VtZW50Vmlldy4KCgkqIHByb2dyYW1zL3JlZ2VkaXQvRW4ucmMsIHByb2dyYW1zL3JlZ2VkaXQvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL3JlZ2VkaXQvZWRpdC5jLCBwcm9ncmFtcy9yZWdlZGl0L2hleGVkaXQuYywKCSAgcHJvZ3JhbXMvcmVnZWRpdC9tYWluLmMsIHByb2dyYW1zL3JlZ2VkaXQvbWFpbi5oLAoJICBwcm9ncmFtcy9yZWdlZGl0L3Jlc291cmNlLmg6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIEFkZCBuZXV0cmFsIEVuZ2xpc2ggcmVzb3VyY2VzLgoJLSBBZGQgYSBjb250cm9sIGZvciBlZGl0aW5nIGJpbmFyeSBkYXRhLgoJLSBBZGQgYSBiaW5hcnkgdmFsdWUgZWRpdG9yIGRpYWxvZy4KCgkqIGRsbHMva2VybmVsL2NvbnNvbGUuYywgcHJvZ3JhbXMvd2luZWNvbnNvbGUvdXNlci5jLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uX3ByaXZhdGUuaCwKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbnNvbGUuYzoKCVJlaW4gS2xhemVzIDx3aWpuQHdhbmFkb28ubmw+CglJbiBBbGxvY0NvbnNvbGUoKSBwYXNzIHRoZSB3U2hvd1dpbmRvdyB2YWx1ZSBhbmQgU1RBUlRGX1VTRVNIT1dXSU5ET1cKCWZsYWcgZnJvbSB0aGUgY2FsbGluZyBwcm9jZXNzIHRvIHRoZSBjb25zb2xlIHByb2Nlc3MuIE1ha2Ugd2luZWNvbnNvbGUKCXVzZSB0aGUgQ21kU2hvdyBwYXJhbWV0ZXIgaW4gdGhlIFNob3dXaW5kb3cgY2FsbC4KCjIwMDUtMDQtMTMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3VzZXIvY29udHJvbHMuaCwgZGxscy91c2VyL3RleHQuYywgZGxscy91c2VyL3VpdG9vbHMuYywKCSAgZGxscy91c2VyL3VzZXJfcHJpdmF0ZS5oLCB3aW5kb3dzL2RlZnduZC5jLCB3aW5kb3dzL25vbmNsaWVudC5jLAoJICB3aW5kb3dzL3N5c2NvbG9yLmM6CglNb3ZlZCBoYW5kbGluZyBvZiB0aGUgNTVBQSBwYXR0ZXJuIGJydXNoIHRvIHN5c2NvbG9yLmMgc28gdGhhdCBpdCBjYW4KCWJlIG1hZGUgYSBzeXN0ZW0gb2JqZWN0IChmb3VuZCBieSBSZWluIEtsYXplcykuCgoJKiBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYzogQmVuamFtaW4gQ3V0bGVyIDxjdXRsZXJAY3MuY29sb3N0YXRlLmVkdT4KCUNoZWNrIGZvciBhbiBpbnZhbGlkIGhJbnRlcm5ldCBoYW5kbGUgaW4gSU5FVF9RdWVyeU9wdGlvbkhlbHBlciBmb3IKCUlOVEVSTkVUX09QVElPTl9QUk9YWSBiZWZvcmUgYXR0ZW1wdGluZyB0byB1c2UgaXQuCgoJKiBkbGxzL2dkaS9iaXRtYXAuYywgZGxscy9nZGkvZ2RpX3ByaXZhdGUuaCwgZGxscy9nZGkvd2luZy5jLAoJICBpbmNsdWRlL2dkaS5oOgoJTW92ZWQgdGhlIEJJVE1BUE9CSiBzdHJ1Y3R1cmUgdG8gZ2RpX3ByaXZhdGUuaC4KCgkqIGRsbHMveDExZHJ2L3hpbS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1laXNzbmVyQHN1c2UuZGU+CglUZXJtaW5hdGUgWENyZWF0ZUlDKCkgYXJndW1lbnQgbGlzdCB3aXRoIE5VTEwgaW5zdGVhZCBvZiBqdXN0IDAuCgoJKiBkbGxzL3gxMWRydi9iaXRtYXAuYzoKCVVzZSBhbiBYIGNvbnRleHQgdG8gYXNzb2NpYXRlIHRoZSBwaHlzIGJpdG1hcCBkYXRhIHRvIGEgYml0bWFwIGhhbmRsZQoJaW5zdGVhZCBvZiBkaXJlY3RseSBhY2Nlc3NpbmcgdGhlIGJpdG1hcCBzdHJ1Y3R1cmUuCgoJKiBkbGxzL3gxMWRydi94MTFkcnYuc3BlYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCVJlZ2lzdGVyQ2xpcGJvYXJkRm9ybWF0IHRha2VzIGEgdW5pY29kZSBzdHJpbmcgbm93LgoKCSogZGxscy9vbGVhdXQzMi9vbGVwaWN0dXJlLmM6CglBbGV4IFZpbGxhY+1zIExhc3NvIDxhX3ZpbGxhY2lzQHBhbG9zYW50by5jb20+CgktIEZpeCBsZWZ0b3ZlciBuZWdhdGl2ZSBzaWduIGluIGhlaWdodCBwYXJhbWV0ZXIgZm9yIHRyYW5zcGFyZW50CgkgIGJpdG1hcC4KCS0gUHJvcGVybHkgYW5ub3VuY2Ugd2hldGhlciBiaXRtYXAgaXMgdHJhbnNwYXJlbnQgaW4gZ2V0X0F0dHJpYnV0ZXMuCgktIEdJRiB0cmFuc3BhcmVuY3kgaXMgbm93IHBhbGV0dGUtaW5kZXggYmFzZWQsIGluc3RlYWQgb2YgUkdCIGJhc2VkLgoJLSBLZWVwIG9yaWdpbmFsIGJpdG1hcCBhbmQgWE9SIG1hc2sgc2VwYXJhdGUsIHNvIHRoYXQgZ2V0X0hhbmRsZQoJICByZXR1cm5zIG9yaWdpbmFsIGJpdG1hcC4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbG9sZS5jOiBNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJQ29ycmVjdCBjb21tZW50cyBvZiBzb21lIGV4cG9ydCBvcmRpbmFscy4KCgkqIGRsbHMvZ2RpL2dkaTMyLnNwZWMsIGRsbHMvb2xlMzIvb2xlMl8xNi5jLCBkbGxzL3gxMWRydi9jbGlwYm9hcmQuYzoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglSZW1vdmUgdGhlIG5lZWQgZm9yIHRoZSBub24tc3RhbmRhcmQgKENsb3NlfERlbGV0ZSlNZXRhRmlsZTE2KCkuCgoJKiBkbGxzL2dkaS9kaWIuYywgZGxscy9nZGkvZ2RpX3ByaXZhdGUuaCwgZGxscy94MTFkcnYvZGliLmMsCgkgIGRsbHMveDExZHJ2L3gxMWRydi5oLCBkbGxzL3gxMWRydi94MTFkcnYuc3BlYzoKCU1vdmVkIHRoZSBkcml2ZXItaW5kZXBlbmRlbnQgcGFydCBvZiBDcmVhdGVESUJTZWN0aW9uIGludG8gR0RJLgoKCSogZGxscy9tc2h0bWwvTWFrZWZpbGUuaW4sIGRsbHMvbXNodG1sL2h0bWxkb2MuYywKCSAgZGxscy9tc2h0bWwvbXNodG1sX3ByaXZhdGUuaCwgZGxscy9tc2h0bWwvb2xlb2JqLmMsCgkgIGRsbHMvbXNodG1sL3ZpZXcuYzoKCUphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CgktIEFkZGVkIElPbGVEb2N1bWVudFZpZXcgaW50ZXJmYWNlLgoJLSBBZGRlZCBpbXBsZW1lbnRhdGlvbiBvZiBEb1ZlcmIgYW5kIENyZWF0ZVZpZXcuCgoJKiBkbGxzL2FkdmFwaTMyL3Rlc3RzL3JlZ2lzdHJ5LmM6IEphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJUGFzcyBhbiBlbXB0eSBzdHJpbmcgaW5zdGVhZCBvZiBOVUxMIHRvIFJlZ0RlbGV0ZUtleSB0byBkZWxldGUgaEtleS4KCgkqIHdpbmRvd3Mvc3B5LmM6IFZpdGFsaXkgTWFyZ29sZW4gPHdpbmUtcGF0Y2hAa2lldmluZm8uY29tPgoJRHVtcCB3aG9sZSBOTUhFQURFUkEgbm90aWZ5IHN0cnVjdHVyZSBmb3IgVHJlZVZpZXdzLgoKCSogZGxscy9jb21jdGwzMi90YWIuYzogVml0YWxpeSBNYXJnb2xlbiA8d2luZS1kZXZlbEBraWV2aW5mby5jb20+CglEcmF3IG9ubHkgdmlzaWJsZSB0YWJzLgoKCSogZGxscy9kc291bmQvcHJvcHNldC5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJRnVsbHkgaW1wbGVtZW50IFdBVkVERVZJQ0VNQVBQSU5HIHByb3BlcnR5IHNldC4KCgkqIGRsbHMvc2hlbGwzMi9kZWJ1Z2hscC5jLCBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvcGlkbC5oLAoJICBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmM6CglIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJQWRkIGEgdW5pY29kZSBwaWRsIHR5cGUuCglJbXByb3ZlIHN1cHBvcnQgZm9yIFBUX1lBR1VJRC4KCUltcHJvdmUgSVNoZWxsTGluayBkZWJ1Z2dpbmcuCgoJKiBkbGxzL3gxMWRydi9iaXRtYXAuYywgZGxscy94MTFkcnYvZGliLmMsIGRsbHMveDExZHJ2L3gxMWRydi5oOgoJU3RvcmUgRElCIHNlY3Rpb24gaW5mb3JtYXRpb24gZGlyZWN0bHkgaW4gdGhlIHBoeXMgYml0bWFwIHN0cnVjdHVyZQoJYW5kIGdldCByaWQgb2YgdGhlIFgxMURSVl9ESUJTRUNUSU9OIHN0cnVjdHVyZS4KCUdldCByaWQgb2YgdGhlIHVudXNlZCBBdXhNb2QgRElCIHN0YXRlLgoKCSogdG9vbHMvd2luZWJ1aWxkL3JlbGF5LmM6IE1hcmN1cyBNZWlzc25lciA8bWVpc3NuZXJAc3VzZS5kZT4KCVVzZSBjb3JyZWN0IG1vdncgaW5zdGVhZCBvZiBtb3ZsIHdoZW4gaGFuZGxpbmcgc2VnbWVudCByZWdpc3RlcnMuCgoJKiBkbGxzL29sZTMyL29sZTIuYywgZGxscy9vbGUzMi9vbGUzMi5zcGVjOgoJSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJSW1wbGVtZW50IFByb3BTeXN7QWxsb2N8RnJlZX1TdHJpbmcsIGFuZCBzdXBwb3J0IEJTVFJzIGluCglQcm9wVmFyaWFudHtDbGVhcnxDb3B5fSB1c2luZyB0aGVtLgoKCSogZGxscy9yaWNoZWQyMC9lZGl0b3IuYywgZGxscy9yaWNoZWQyMC9lZGl0b3IuaCwKCSAgZGxscy9yaWNoZWQyMC9lZGl0c3RyLmgsIGRsbHMvcmljaGVkMjAvcmVhZGVyLmMsIGRsbHMvcmljaGVkMjAvcnRmLmg6CglQaGlsIEtyeWxvdiA8cGhpbEBuZXdzdGFyLnJpbmV0LnJ1PgoJTWFrZSBSVEYgcmVhZGVyIGZhbGwgYmFjayB0byBzaW1wbGUgdGV4dCBpZiBhIGNvcnJlY3QgUlRGIGhlYWRlciBpcwoJbm90IGRldGVjdGVkLiBUaGlzIHNob3VsZCBmaXggc29tZSBpbnN0YWxsZXJzLgoKCSogZGxscy9zaGVsbDMyL3JlZ3N2ci5jLCBpbmNsdWRlL3NobGd1aWQuaDoKCVN0ZXZlbiBFZHdhcmRzIDxzdGV2ZW5fZWQ0MTUzQHlhaG9vLmNvbT4KCVJlZ2lzdGVyIFNoZWxsIERyYWcgYW5kIERyb3AgSGVscGVyLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGxfU3YucmMsIGRsbHMvY29tY3RsMzIvcnNyYy5yYzoKCUFuZHJlYXMgQmplcmtlaG9sdCA8aGFydGVleEBnbWFpbC5jb20+CglTd2VkaXNoIHRyYW5zbGF0aW9uLgoKCSogZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jOiBTdGV2ZW4gRWR3YXJkcyA8c3RldmVuX2VkNDE1M0B5YWhvby5jb20+CglQYXJ0aWFsbHkgaW1wbGVtZW50IENyZWF0ZVByb2Nlc3NBc1VzZXIuCgoJKiBkbGxzL3NoZWxsMzIvc2hmbGRyX3VuaXhmcy5jOgoJTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJSW1wbGVtZW50ZWQgdGhlIFVuaXhGb2xkZXIncyBJU2hlbGxGb2xkZXIyOjpDb21wYXJlSURzIG1ldGhvZC4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzIuc3BlYywgZGxscy9vbGVhdXQzMi92YXJpYW50LmM6CglEYW5pZWwgUmVtZW5hayA8ZHRyZW1lbmFrQGdtYWlsLmNvbT4KCUltcGxlbWVudGVkIFZhcklkaXYuCgoJKiBkbGxzL2dkaS9lbmhtZXRhZmlsZS5jLCBkbGxzL2dkaS90ZXN0cy9tZXRhZmlsZS5jOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBGaXggc2NhbGluZyB3aGVuIGNvbnZlcnRpbmcgTUYgLT4gRU1GLgoJLSBUZXN0cyBmb3IgY29udmVyc2lvbnMgKGFsdGhvdWdoIG5vdCBmb3IgdGhlIGFib3ZlIGJ1ZykuCgoyMDA1LTA0LTEyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9zaGVsbDMyL2ZvbGRlcnMuYywgZGxscy9zaGVsbDMyL3NocmVzLnJjLAoJICBkbGxzL3NoZWxsMzIvc2hyZXNkZWYuaDoKCUh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglCZXR0ZXIgaWNvbiBoYW5kbGluZyBmb3Igc29tZSBzcGVjaWFsIGZvbGRlcnMuCglJZGVudGlmeSBhbmQgYWRkIGRlZmluZXMgZm9yIGEgYnVuY2ggb2Ygc2hlbGwgaWNvbnMuCgoJKiBkbGxzL3gxMWRydi9iaXRibHQuYywgZGxscy94MTFkcnYvYml0bWFwLmMsIGRsbHMveDExZHJ2L2RpYi5jLAoJICBkbGxzL3gxMWRydi9pbml0LmMsIGRsbHMveDExZHJ2L3gxMWRydi5oLCBkbGxzL3gxMWRydi94cmVuZGVyLmM6CglTdG9yZSBhIHBvaW50ZXIgdG8gdGhlIGN1cnJlbnRseSBzZWxlY3RlZCBwaHlzIGJpdG1hcCBpbiB0aGUgZGV2aWNlCglzdHJ1Y3R1cmUuIENyZWF0ZSBhIHBoeXMgYml0bWFwIGZvciB0aGUgZGVmYXVsdCBzdG9jayBiaXRtYXAgdG9vLgoKCSogaW5jbHVkZS93aW5udC5oOiBJdmFuIExlbyBQdW90aSA8aXZhbmxlb0BnbWFpbC5jb20+CglBZGRlZCB0eXBlZGVmIGZvciBERVZJQ0VfUE9XRVJfU1RBVEUuCgoJKiBkbGxzL3NoZWxsMzIvc2hmbGRyX3VuaXhmcy5jOgoJTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJSW1wbGVtZW50ZWQgZW5vdWdoIG9mIElTaGVsbEZvbGRlcjIgdG8gbWFrZSBVbml4Rm9sZGVyIHdvcmsgd2l0aGluIHRoZQoJb3Blbi9zYXZlLWRpYWxvZ3MuCgoJKiBkbGxzL21zaHRtbC9NYWtlZmlsZS5pbiwgZGxscy9tc2h0bWwvaHRtbGRvYy5jLCBkbGxzL21zaHRtbC9tYWluLmMsCgkgIGRsbHMvbXNodG1sL21zaHRtbF9wcml2YXRlLmgsIGRsbHMvbXNodG1sL29sZW9iai5jLAoJICBkbGxzL21zaHRtbC9wZXJzaXN0LmM6CglKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJU3R1YiBpbXBsZW1lbnRhdGlvbiBvZiBJT2xlT2JqZWN0IGFuZCBJT2xlRG9jdW1lbnQuCgoJKiBkbGxzL3gxMWRydi9iaXRtYXAuYywgZGxscy94MTFkcnYvZGliLmMsIGRsbHMveDExZHJ2L3gxMWRydi5oOgoJU3RvcmUgdGhlIGJpdG1hcCBoYW5kbGUgaW4gdGhlIHBoeXMgYml0bWFwIHN0cnVjdHVyZSwgYW5kIGF2b2lkIGEgZmV3Cgltb3JlIEdESV9HZXRPYmpQdHIgY2FsbHMuCgoJKiBkbGxzL3NoZWxsMzIvc2hsdmlldy5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJSWYgSUNvbW1EbGdCcm93c2VyX09uRGVmYXVsdENvbW1hbmQgcmV0dXJucyBhbnl0aGluZyBvdGhlciB0aGFuIFNfT0sKCXRoZW4gd2Ugc2hvdWxkIGNhbGwgdGhlIGRlZmF1bHQgaGFuZGxlci4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJVXNlIEVTX0FVVE9IU0NST0xMIGZvciBlZGl0IGJveC4KCgkqIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jOiBEYW5pZWwgUmVtZW5hayA8ZHRyZW1lbmFrQGdtYWlsLmNvbT4KCVJldHVybiBESVNQX0VfRElWQllaRVJPIGluc3RlYWQgb2YgY3Jhc2hpbmcgd2hlbiBhc2tlZCB0byBkaXZpZGUgYQoJdmFyaWFudCBieSB6ZXJvLgoKCSogZGxscy9zaGVsbDMyL3NoZmxkcl9kZXNrdG9wLmM6IEp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCVVzZSBVbmljb2RlIHN0cmluZyByZXN1bHQgZnJvbSBHZXREaXNwbGF5TmFtZU9mIGlmIGl0IGlzbid0CglyZXByZXNlbnRhYmxlIHVzaW5nIEFOU0kuCgoJKiBkbGxzL21zaS9mb3JtYXQuYzogSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJTG9nIG1pc3NpbmcgZW52aXJvbm1lbnQgdmFycyBmb3IgZWFzaWVyIGRlYnVnZ2luZy4KCgkqIGRsbHMvd2lubW0vd2F2ZW1hcC93YXZlbWFwLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglTdHViIG91dCBEUlZNX01BUFBFUl9SRUNPTkZJR1VSRSBzdXBwb3J0LgoKMjAwNS0wNC0xMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMveDExZHJ2L2JpdG1hcC5jLCBkbGxzL3gxMWRydi9icnVzaC5jLCBkbGxzL3gxMWRydi9kaWIuYywKCSAgZGxscy94MTFkcnYveDExZHJ2Lmg6CglTdG9yZSB0aGUgcGl4bWFwIGRlcHRoIGFuZCB0aGUgRElCU0VDVElPTiBwb2ludGVyIGluIHRoZSBwaHlzIGJpdG1hcAoJc3RydWN0dXJlLiBBdm9pZCBhIGZldyBHRElfR2V0T2JqUHRyIGNhbGxzLgoKCSogaW5jbHVkZS9NYWtlZmlsZS5pbjogQWRkIG5ldyBwb3dycHJvZi5oIGhlYWRlci4KCgkqIGRsbHMvcXVhcnR6L21lbWFsbG9jYXRvci5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglSZXR1cm4gYW4gZXJyb3IgaW5zdGVhZCBvZiBjcmFzaGluZyBsYXRlciBvbiBhIGRpdmlkZSBieSB6ZXJvCglleGNlcHRpb24gd2hlbiBhbiBhbGlnbm1lbnQgb2YgMCBpcyBzcGVjaWZpZWQuCgoJKiBkbGxzL29sZTMyL3N0Z19wcm9wLmMsIGRsbHMvb2xlMzIvdGVzdHMvc3RnX3Byb3AuYzoKCUp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCS0gYWRkIHdyaXRlIHN1cHBvcnQgdG8gSVByb3BlcnR5U3RvcmFnZSwgd2l0aCB0ZXN0cwoJLSBtaXNjLiBjbGVhbnVwcyB0aGUgdGVzdHMgdHVybmVkIHVwCgoJKiBpbmNsdWRlL3Nob2JqaWRsLmlkbDogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBzb21lIG1pc3NpbmcgU0ZHQU9fIGRlZmluZXMgYW5kIGZpeCBTRkdBT19HSE9TVEVELgoKCSogZGxscy9zaGVsbDMyL3NobGZvbGRlci5jLCBkbGxzL3NoZWxsMzIvdGVzdHMvc2hsZm9sZGVyLmM6CglIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJRGlyZWN0b3J5IGl0ZW1zIHNob3VsZCBoYXZlIHRoZSBTRkdPQV9GSUxFU1lTQU5DRVNUT1IgYXR0cmlidXRlLgoJQWRkIGEgdGVzdCBmb3IgdGhpcyBhbmQgY2xlYW51cCB0aGUgc2hsZm9sZGVyIHRlc3QgYSBiaXQuCgoJKiBkbGxzL21zY21zL3Byb2ZpbGUuYywgZGxscy9tc2Ntcy90ZXN0cy9wcm9maWxlLmM6CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglEb24ndCByZWZlcmVuY2UgYzpcd2luZG93cyBkaXJlY3RseS4KCgkqIHRvb2xzL3dpbmUuaW5mOiBKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglSZWdpc3RlciBjb250cm9sXGNsYXNzXHtHVUlEX0RFVklOVEVSRkFDRV9TRVJFTlVNX0JVU19FTlVNRVJBVE9SfS4KCgkqIGluY2x1ZGUvcG93cnByb2YuaCwgaW5jbHVkZS93aW5udC5oOgoJQmVuamFtaW4gQ3V0bGVyIDxjdXRsZXJAY3MuY29sb3N0YXRlLmVkdT4KCUFkZGVkIGZ1bmN0aW9uL2VudW0vc3RydWN0cyBmb3IgcG93ZXIgbWFuYWdlbWVudCBBUEkuCgoJKiBkbGxzL21zaHRtbC9NYWtlZmlsZS5pbiwgZGxscy9tc2h0bWwvaHRtbGRvYy5jLAoJICBkbGxzL21zaHRtbC9tc2h0bWxfcHJpdmF0ZS5oLCBkbGxzL21zaHRtbC9wZXJzaXN0LmM6CglKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJU3R1YiBpbXBsZW1lbnRhdGlvbiBvZCBJUGVyc2lzdCwgSVBlcnNpc3RNb25pa2VyLCBJUGVyc2lzdEZpbGUsCglJTW9uaWtlclByb3AuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9tYWlsc2xvdC5jLCBzZXJ2ZXIvbWFpbHNsb3QuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUNhbGN1bGF0ZSB0aGUgc2l6ZSBvZiB0aGUgbmV4dCBtYWlsc2xvdCBtZXNzYWdlIGNvcnJlY3RseS4KCgkqIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jLCBkbGxzL3dpbmluZXQvdGVzdHMvaHR0cC5jOgoJSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCUVuc3VyZSBBLT5XIHZlcnNpb24gb2YgSW50ZXJuZXRDcmFja1VSTCBwYXNzZXMgY29ycmVjdCBsZW5ndGggdmFsdWVzLAoJYW5kIGFzc29jaWF0ZWQgdGVzdHMuCgoJKiBkbGxzL21zaS9hY3Rpb24uYywgZGxscy9tc2kvY3VzdG9tLmMsIGRsbHMvbXNpL2Zvcm1hdC5jOgoJU3RldmVuIEVkd2FyZHMgPHN0ZXZlbl9lZDQxNTNAeWFob28uY29tPgoJQXZvaWQgdXNpbmcgdmVyLmggaW4gZmF2b3Igb2Ygd2ludmVyLmguCgoJKiBwcm9ncmFtcy93aW5ldGVzdC9ndWkuYywgcHJvZ3JhbXMvd2luZXRlc3QvbWFpbi5jLAoJICBwcm9ncmFtcy93aW5ldGVzdC93aW5ldGVzdC5oOgoJRmVyZW5jIFdhZ25lciA8d2ZlcmlAdGJhLmVsdGUuaHU+CglVc2UgdGhlIHNhbWUgbWF4aW11bSBsZW5ndGggZm9yIHRhZ3MgZ2l2ZW4gb24gdGhlIGNvbW1hbmQgbGluZSBhbmQKCXRhZ3MgZW50ZXJlZCBpbiB0aGUgR1VJLgoKCSogZGxscy9vbGUzMi9kaWN0aW9uYXJ5LmMsIGRsbHMvb2xlMzIvZGljdGlvbmFyeS5oLAoJICBkbGxzL29sZTMyL3N0Z19wcm9wLmMsIGRsbHMvb2xlMzIvdGVzdHMvLmN2c2lnbm9yZSwKCSAgZGxscy9vbGUzMi90ZXN0cy9NYWtlZmlsZS5pbiwgZGxscy9vbGUzMi90ZXN0cy9zdGdfcHJvcC5jOgoJSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJQWRkIHRyYWNlcywgYWRkIHVuaXQgdGVzdHMgZm9yIElQcm9wZXJ0eVN0b3JhZ2UsIGFuZCBmaXggdGhlIHByb2JsZW1zCgl0aGV5IGNhdWdodC4KCgkqIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jOiBKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CgktIHNldCBzaXplIHJlcXVpcmVkIGNvcnJlY3RseSBmb3IgYWxsIHN1cHBvcnRlZCBvcHRpb25zCgktIHRpZHkgdXAgYSBmZXcgbGluZXMgb2YgaW5kZW50aW5nIGluIElORVRfUXVlcnlPcHRpb25IZWxwZXIKCS0gaW1wbGVtZW50IHF1ZXJ5aW5nIElOVEVSTkVUX09QVElPTl9QUk9YWQoKCSogZGxscy9kZHJhdy9kc3VyZmFjZS9kaWIuYzogTWF0dGhldyBNYXN0cmFjY2kgPG1hdHRAYWNsYXJvLmNvbT4KCUNvcnJlY3RseSBsb2NrIGFuZCB1bmxvY2sgc3VyZmFjZSBmb3IgYSBzaW5nbGUtc3VyZmFjZSBCbHQoKSBhbmQKCUJsdEZhc3QoKSBjYWxsLgoKCSogZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jOiBIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCUltcGxlbWVudCBHZXROYW1lZFNlY3VyaXR5SW5mby4KCgkqIGRsbHMveDExZHJ2L2RpYi5jOiBSZWluIEtsYXplcyA8d2lqbkB3YW5hZG9vLm5sPgoJRml4IFgxMURSVl9ESUJfU2V0SW1hZ2VCaXRzX1JMRSg0fDgpIHdoZW4gYW4gbm9uLXplcm8geC1vZmZzZXQKCShhcmd1bWVudCBsZWZ0KSBpcyBzcGVjaWZpZWQuCgoJKiBkbGxzL29wZW5nbDMyL29wZW5nbF9leHQuYzogVG9tIFdpY2tsaW5lIDx0d2lja2xpbmVAZ21haWwuY29tPgoJU3luYyB0byB0aGUgbGF0ZXN0IG9wZW5nbCBzcGVjcy4KCgkqIGRsbHMvcmljaGVkMjAvZWRpdG9yLmM6IEhhbm51IFZhbHRvbmVuIDxIYW5udS5WYWx0b25lbkBodXQuZmk+CglBZGRlZCBtb3VzZXdoZWVsIHN1cHBvcnQuCgoJKiBkbGxzL250ZGxsL3Rlc3RzL3JlZy5jOiBQYXVsIFZyaWVucyA8UGF1bC5WcmllbnNAeHM0YWxsLm5sPgoJRmxhZ3Mgc2hvdWxkIGJlIG9yLWVkLgoKCSogZGxscy9jb21jdGwzMi90YWIuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVRhYiB1bmljb2RpZmljYXRpb24uCgoJKiBkbGxzL2NvbWN0bDMyL21vbnRoY2FsLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglNb250aENhbCB1bmljb2RpZmljYXRpb24uCgoJKiBkbGxzL2tlcm5lbC9zeW5jLmMsIGRsbHMvbnRkbGwvZmlsZS5jLCBpbmNsdWRlL3dpbnRlcm5sLmg6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglNb3ZlIG1haWxzbG90IHNldCBhbmQgcXVlcnkgaW5mbyBpbXBsZW1lbnRhdGlvbiB0byBudGRsbC4KCgkqIGRsbHMvc2hlbGwzMi8uY3ZzaWdub3JlLCBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvc2hlbGwzMi9jbGFzc2VzLmMsIGRsbHMvc2hlbGwzMi9mb2xkZXJzLmMsCgkgIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLAoJICBkbGxzL3NoZWxsMzIvc2hyZXMucmMsIGRsbHMvc2hlbGwzMi9zaHJlc2RlZi5oOgoJSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCB0aGUgaWNvbiByZXNvdXJjZSBpZHMgKG1vc3Qgd2VyZSBvZmYgYnkgb25lKS4KCUZpeCBJRXh0cmFjdEljb25fe0dldEljb25Mb2NhdGlvbixFeHRyYWN0fSB0byB1c2UgLXZlIGljb24gcmVzb3VyY2UKCWlkcyBhbmQgZml4IGJ1Z3MgcmVsYXRpbmcgdG8gY29uZnVzaW9uIGJldHdlZW4gcmVzb3VyY2UgaWRzIGFuZCB0aGUKCXN5c3RlbSBpbWFnZWxpc3QgaW5kaWNpZXMuCglFeHRlbmQgdGhlIHN5c3RlbSBpbWFnZWxpc3QgaW5pdGlhbGl6YXRpb24gaGFjayB0byBsb2FkIGJvdGggK3ZlIGFuZAoJLXZlIHJlc291cmNlIGlkcy4KCUFkZCBhIHByaW50ZXIgaWNvbiAodGhhdCdsbCBiZSB1c2VkIGJ5IGFuIHVwY29taW5nIHByaW50ZXIgZm9sZGVyCglwYXRjaCkuCgoJKiBkbGxzL21wci9tcHJfRXMucmMsIGRsbHMvbXNpL21zaV9Fcy5yYywgZGxscy9zaGRvY3Z3L0VzLnJjLAoJICBkbGxzL3NoZG9jdncvc2hkb2N2dy5yYywgZGxscy93aW5pbmV0L3dpbmluZXRfRXMucmMsCgkgIGRsbHMvd2lubW0vd2lubW1fRXMucmM6CglKb3PpIE1hbnVlbCBGZXJyZXIgT3J0aXogPGptZm8xOTgyQHlhaG9vLmVzPgoJU3BhbmlzaCB0cmFuc2xhdGlvbnMgdXBkYXRlZC4KCgkqIGluY2x1ZGUvb2xlMi5oOiBNaWNoYWVsIExpbiA8bWxpbkBjb3J2dS5jb20uYXU+CglBZGRlZCBtaXNzaW5nIE9sZURyYXcoKSBkZWNsYXJhdGlvbi4KCgkqIGRsbHMvZ2RpL2ZyZWV0eXBlLmM6IFZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCU1ha2Ugc3RhdGljIHNvbWUgZnVuY3Rpb25zIHVzZWQgb25seSBpbiBhIHNpbmdsZSBmaWxlLgoKCSogZGxscy9kc291bmQvcHJpbWFyeS5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJSW5pdGlhbGl6ZSBwcmltYXJ5IGJ1ZmZlciBvbiBvcGVuLgoKCSogZGxscy9zZXR1cGFwaS9kZXZpbnN0LmMsIGluY2x1ZGUvY2ZnbWdyMzIuaDoKCUp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCUltcGxlbWVudCBTZXR1cERpQ2xhc3NOYW1lRnJvbUd1aWRFeEEuCgoJKiBpbmNsdWRlL3Byb3BpZGwuaWRsOiBKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglBZGQgYSBmZXcgbWlzc2luZyBkZWNsYXJhdGlvbnMuCgoJKiBwcm9ncmFtcy9yZWdlZGl0L2xpc3R2aWV3LmMsIHByb2dyYW1zL3JlZ2VkaXQvbWFpbi5jLAoJICBwcm9ncmFtcy9yZWdlZGl0L3RyZWV2aWV3LmM6CglNYXJjdXMgTWVpc3NuZXIgPG1laXNzbmVyQHN1c2UuZGU+CglSZW1vdmVkIGluY2x1c2lvbiBvZiBwcm9jZXNzLmggKG5vdCBuZWVkZWQgYW5kIGJyZWFrcyB3aXRoIGdjYzQpLgoKCSogZGxscy91cmxtb24vdXJsbW9uLnNwZWMsIGRsbHMvdXJsbW9uL3VybG1vbl9tYWluLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBZGQgc3R1YiBmb3IgRmF1bHRJbklFRmVhdHVyZS4KCgkqIGluY2x1ZGUvd3R5cGVzLmlkbDogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWRkIHVDTFNTUEVDLCBDU1BMQVRGT1JNIGFuZCBRVUVSWUNPTlRFWFQgc3RydWN0dXJlcy4KCgkqIGRsbHMvY29tY3RsMzIvc3lzbGluay5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQXVkaXQgdGhlIGNvZGUgYWdhaW5zdCBDb21jdGwzMi5kbGwgdmVyc2lvbiA2LjAuCglIYW5kbGUgbm90aWZpY2F0aW9uIGFuZCBzdHlsZXMgYXMgaW4gdGhlIG90aGVyIGNvbnRyb2xzLgoJTWFpbnRhaW4gdGhlIGNvbnN0IGZvciBzdHJpbmdzIHRocm91Z2hvdXQgcGFyc2luZy4KCgkqIGluY2x1ZGUvTWFrZWZpbGUuaW46IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglSZW1vdmUgcmVmZXJlbmNlIHRvIG5vbmV4aXN0YW50IHN0cm1pZi5oLgoKCSogZGxscy9jb21jdGwzMi9tb250aGNhbC5jOiBVbHJpY2ggQ3pla2FsbGEgPHVscmljaEBjb2Rld2VhdmVycy5jb20+CglDbGVhciBzeXN0ZW10aW1lIHN0cnVjdCBzbyB3ZSBkb24ndCByZXR1cm4gZ2FyYmFnZSBpbiB1bmluaXRpYWxpemVkCglmaWVsZHMuCgoJKiBwcm9ncmFtcy91bmluc3RhbGxlci9Fbi5yYzogSGFubnUgVmFsdG9uZW4gPEhhbm51LlZhbHRvbmVuQGh1dC5maT4KCUZpeCBhIHR5cG8gaW4gdW5pbnN0YWxsZXIncyBlbmdsaXNoIGFwcG5hbWUuCgoJKiB0b29scy93aW5lLmluZjogSGFubnUgVmFsdG9uZW4gPEhhbm51LlZhbHRvbmVuQGh1dC5maT4KCVJ1biBtc2kgZmlsZXMgd2l0aCBtc2lleGVjLgoJQ2hhbmdlIENvbnRyb2wgUGFuZWxcRGVza3RvcCB0byBjb3JyZWN0IGNhc2UuCgoJKiBkbGxzL3gxMWRydi9kaWIuYzogR2xlbm4gV3Vyc3RlciA8Z3d1cnN0ZXJAc2NzLmNhcmxldG9uLmNhPgoJRml4IGFycmF5IGluZGV4IGNyYXNoIGluIGJ1aWRsaW5nIEdESSBwYWxldHRlIGZyb20gbG9naWNhbCBwYWxldHRlLgoKCSogZGxscy9hZHZhcGkzMi9jcnlwdC5jLCBkbGxzL2FkdmFwaTMyL2NyeXB0LmgsCgkgIGRsbHMvYWR2YXBpMzIvdGVzdHMvY3J5cHQuYzoKCU1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCU1ha2UgY3J5cHQgZnVuY3Rpb25zIG1vcmUgcm9idXN0IGluIGNhc2Ugb2YgaW5jb3JyZWN0IGFwaSB1c2FnZS4KCgkqIHNlcnZlci93aW5kb3cuYzogUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CglGaXggcG90ZW50aWFsIHJlZ2lvbiBsZWFrLgoKCSogZGxscy9hZHZhcGkzMi90ZXN0cy9yZWdpc3RyeS5jOiBKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCUNyZWF0ZSB0aGUgJ1Rlc3QnIHZhbHVlIGluIGEgdGVtcG9yYXJ5IHN1YmtleSB0byBhdm9pZCBjb25mbGljdHMKCWJldHdlZW4gdGVzdHMuCgoJKiBERVZFTE9QRVJTLUhJTlRTOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQWRkZWQgY3J5cHRkbGwvIGFuZCBzdGRvbGUzMi50bGIvLgoKCSogZGxscy9kc291bmQvdGVzdHMvZHNvdW5kOC5jLCBpbmNsdWRlL2Rzb3VuZC5oOgoJSmFtZXMgSGF3a2lucyA8dHJ1aWtlbkBnbWFpbC5jb20+CglSZW1vdmUgbm9uc3RhbmRhcmQgdHlwZSBMUExQVk9JRC4KCgkqIGRvY3VtZW50YXRpb24vb2xlLnNnbWw6IE1pa2UgSGVhcm4gPG1pa2VAbmF2aS5jeD4KCU1vcmUgbm90ZXMgYWJvdXQgdGhlIGlubmVyIHdvcmtpbmdzIG9mIERDT00uCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsIGRsbHMvZGRyYXcvZDNkdGV4dHVyZS5jLAoJICBkbGxzL2RkcmF3L21lc2FfcHJpdmF0ZS5oOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUNyZWF0ZSB0aGUgR0wgdGV4dHVyZSBpZCBhdCB0ZXh0dXJlLWJpbmRpbmcgdGltZS4KCgkqIGRsbHMvcmljaGVkMjAvZWRpdG9yLmM6IEtyenlzenRvZiBGb2x0bWFuIDx3ZGV2QGZvbHRtYW4uY29tPgoJLSBFTV9DQU5QQVNURSBpbXBsZW1lbnRlZAoJLSB1cGRhdGVkIFRPRE8gbGlzdCAoaW5jbHVkaW5nIGxpc3Qgb2YgKHVuKWltcGxlbWVudGVkIG1lc3NhZ2VzKQoJLSBmaXhlZCBXTV9QQVNURSAodGhlIHByZXZpb3VzIHZlcnNpb24gbWlnaHQgbm90IGNsb3NlIHRoZSBjbGlwYm9hcmQKCSAgaWYgaXQgZGlkbid0IGNvbnRhaW4gYSB1c2FibGUgZm9ybWF0KQoJLSBzY3JvbGxiYXIgb3BlcmF0aW9ucyAobGlrZSBjbGlja2luZyBvbiBhcnJvd3MpIHNob3VsZCB1cGRhdGUKCSAgc2Nyb2xsYmFyJ3MgY3VycmVudCBwb3NpdGlvbgoKCSogaW5jbHVkZS93aW5kZWYuaDogVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJRml4IGEgdHlwbyBpbiBhIGNvbW1lbnQuCgoJKiBkbGxzL2dkaS9tZXRhZmlsZS5jLCBkbGxzL2dkaS9tZmRydi9pbml0LmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQ2xlYW51cCB0aGUgQVBJIGRvY3MuIEZldyBpbmRlbnRhdGlvbi9mb3JtYXR0aW5nIGZpeGVzLgoKCSogZGxscy93aW5tbS90ZXN0cy9jYXB0dXJlLmMsIGRsbHMvd2lubW0vdGVzdHMvd2F2ZS5jLAoJICBkbGxzL3dpbm1tL3Rlc3RzL3dpbm1tX3Rlc3QuaDoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglDaGFuZ2VkIHJlZ3Jlc3Npb24gdGVzdCB0byBtYWtlIHN1cmUgcG9zaXRpb24gaXMgY29ycmVjdGx5IGNoZWNrZWQKCXdoZW4gYSBkaWZmZXJlbnQgdHlwZSBpcyByZXR1cm5lZC4KCUFkZGVkIEplcmVteSBXaGl0ZSdzIFdBVkVfRk9STUFUX0RJUkVDVC9XQVZFX01BUFBFUiBmaXguCglBZGRlZCB3YXZlSW5HZXRQb3NpdGlvbiBjaGVja3MuCgoJKiBkbGxzL3dpbm1tL3dhdmVtYXAvd2F2ZW1hcC5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQ29ycmVjdGx5IGhhbmRsZSB3aGVyZSB3YXZlT3V0R2V0UG9zaXRpb24gY2hhbmdlcyB0aW1lcG9zLndUeXBlCgliZWNhdXNlIHRoZSByZXF1ZXN0ZWQgdHlwZSBpcyBub3Qgc3VwcG9ydGVkLgoJQWRkZWQgSmVyZW15IFdoaXRlJ3Mgd2F2ZU91dEdldFBvc2l0aW9uIGZpeCB0byB3YXZlSW5HZXRQb3NpdGlvbi4KCgkqIGRsbHMvaGhjdHJsLm9jeC9oaGN0cmwuYzogTWlrZSBIZWFybiA8bWlrZUBuYXZpLmN4PgoJT25seSBkbyB1bmljb2RlIGNvbnZlcnNpb24gaW4gSFRNTCBIZWxwIGNvbnRyb2wgd2hlbiBmaWxlbmFtZSBpcwoJc3BlY2lmaWVkLgoKCSogZGxscy9tc2kvZGlhbG9nLmMsIGRsbHMvbXNpL21zaXByaXYuaCwgZGxscy9tc2kvcmVjb3JkLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglMb2FkIGFuZCBkaXNwbGF5IGJpdG1hcHMgaW4gdGhlIGRpYWxvZ3MuCgoJKiBkbGxzL3VzZXIvdGVzdHMvd2luLmMsIHdpbmRvd3Mvc2Nyb2xsLmM6CglSZWluIEtsYXplcyA8d2lqbkB3YW5hZG9vLm5sPgoJSW4gU2Nyb2xsV2luZG93RXgsIGlmIHRoZSB3aW5kb3cgYWxyZWFkeSBoYXMgYW4gdXBkYXRlIHJlZ2lvbiB0aGVuIGFkZAoJdGhpcyB0byBocmduVXBkYXRlLiBXaXRoIGEgY29uZm9ybWFuY2UgdGVzdC4KCgkqIHByb2dyYW1zL3dpbmV0ZXN0L2d1aS5jLCBwcm9ncmFtcy93aW5ldGVzdC9tYWluLmM6CglGZXJlbmMgV2FnbmVyIDx3ZmVyaUB0YmEuZWx0ZS5odT4KCVNpbGVuY2Ugc29tZSBzaWduZWRuZXNzIHdhcm5pbmdzLgoKMjAwNS0wMy0zMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMveDExZHJ2L2JpdG1hcC5jLCBkbGxzL3gxMWRydi9kaWIuYywgZGxscy94MTFkcnYveDExZHJ2Lmg6CglJbnRyb2R1Y2VkIGFuIFhfUEhZU0JJVE1BUCBzdHJ1Y3R1cmUgdG8gYWxsb3cgc3RvcmluZyBtb3JlIHgxMWRydgoJaW5mb3JtYXRpb24gYWJvdXQgYSBiaXRtYXAgdGhhbiBqdXN0IHRoZSBwaXhtYXAgaWQuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9maWxlLmMsIGRsbHMvdXNlci90ZXN0cy9tc2cuYywKCSAgZGxscy91c2VyL3Rlc3RzL3dpbi5jOgoJUmVpbiBLbGF6ZXMgPHdpam5Ad2FuYWRvby5ubD4KCUZpeCBzb21lIGluY29ycmVjdCB1c2VzIG9mIHRoZSBvayBtYWNybyB3aGVyZSB0aGUgcmVzdWx0IGRlcGVuZHMgb24KCXRoZSBldmFsdWF0aW9uIG9yZGVyIG9mIGl0cyBhcmd1bWVudHMuCgoJKiBkbGxzL21zdmNydC9maWxlLmMsIGRsbHMvbXN2Y3J0L3Rlc3RzL2ZpbGUuYzoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJSW1wbGVtZW50IGFuZCB0ZXN0IF9jaHNpemUuCgoJKiBkbGxzL3gxMWRydi94cmVuZGVyLmM6CglBdm9pZCBkaXJlY3RseSBhY2Nlc3NpbmcgdGhlIEJJVE1BUE9CSiBzdHJ1Y3R1cmUuCgoJKiBkbGxzL3gxMWRydi93aW5kb3cuYywgZGxscy94MTFkcnYveDExZHJ2Lmg6CglSZW1vdmVkIHRoZSBubyBsb25nZXIgbmVlZGVkIFgxMURSVl9nZXRfY2xpZW50X2FyZWFfb2Zmc2V0IGZ1bmN0aW9uLgoKCSogZGxscy94MTFkcnYvZGNlLmMsIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwKCSAgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3RyYWNlLmMsIHNlcnZlci93aW5kb3cuYzoKCVJldHVybiB0aGUgY29vcmRpbmF0ZXMgaW5mb3JtYXRpb24gbmVlZGVkIHRvIHNldHVwIHRoZSBEQyBwYXJhbWV0ZXJzCglpbiB0aGUgZ2V0X3Zpc2libGVfcmVnaW9uIHJlcXVlc3QgaW5zdGVhZCBvZiByZXF1aXJpbmcgdGhlIGNsaWVudCB0bwoJY29tcHV0ZSBpdCBhZ2Fpbi4KCgkqIGRsbHMvdXNlci90ZXN0cy93aW4uYywgd2luZG93cy9zY3JvbGwuYzoKCVJlaW4gS2xhemVzIDx3aWpuQHdhbmFkb28ubmw+CglJZiBTY3JvbGxXaW5kb3dFeCBkbyBub3QgdXNlIHRoZSBEQ1hfVVNFU1RZTEUgdG8gZ2V0IGEgREMuIEluc3RlYWQKCWNhbGN1bGF0ZSBEQ1hfQ0xJUFNJQkxJTkdTLCBEQ1hfUEFSRU5UQ0xJUCBhbmQgRENYX0NMSVBDSElMRFJFTi4gVGhlCglEQ1hfQ0xJUENISUxEUkVOIGlzIG5vdCB1c2VkIHdoZW4gU2Nyb2xsV2luZG93RXggaXMgY2FsbGVkIHdpdGggYQoJU1dfU0NST0xMQ0hJTERSRU4gZmxhZy4gV2l0aCBhIGNvdXBsZSBvZiByZWdyZXNzaW9uIHRlc3RzLgoKCSogZGxscy93aW5zb2NrL3NvY2tldDE2LmM6IFJlaW4gS2xhemVzIDx3aWpuQHdhbmFkb28ubmw+CglGaXggYSBjb3B5JnBhc3RlIGJ1ZyBpbiBnZXRfYnVmZmVyX3BlLgoKCSogZGxscy9vbGUzMi9zdGdfcHJvcC5jLCBkbGxzL29sZTMyL3N0Z19zdHJlYW0uYywKCSAgZGxscy9vbGUzMi9zdG9yYWdlMzIuYywgZGxscy9vbGUzMi9zdG9yYWdlMzIuaDoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUVsaW1pbmF0ZSBmb3J3YXJkIGRlY2xhcmF0aW9ucywgbWFrZSBmdW5jdGlvbnMgc3RhdGljLgoKCSogcHJvZ3JhbXMvd2luZXRlc3QvZ3VpLmMsIHByb2dyYW1zL3dpbmV0ZXN0L21haW4uYywKCSAgcHJvZ3JhbXMvd2luZXRlc3QvcmVzb3VyY2UuaCwgcHJvZ3JhbXMvd2luZXRlc3Qvd2luZXRlc3QuaCwKCSAgcHJvZ3JhbXMvd2luZXRlc3Qvd2luZXRlc3QucmM6CglGZXJlbmMgV2FnbmVyIDx3ZmVyaUB0YmEuZWx0ZS5odT4KCUFzayBmb3IgYSB0YWcgaWYgb25lIHdhcyBub3QgZ2l2ZW4gb24gdGhlIGNvbW1hbmQgbGluZS4KCgkqIGRsbHMvZ2RpL2NsaXBwaW5nLmMsIGRsbHMvZ2RpL2RjLmMsIGRsbHMvZ2RpL2dkaV9wcml2YXRlLmg6CglBZGRlZCBzdXBwb3J0IGZvciB0aGUgREMgbWV0YSByZWdpb24uCgoJKiBkbGxzL21zaHRtbC9NYWtlZmlsZS5pbiwgZGxscy9tc2h0bWwvaHRtbGRvYy5jLCBkbGxzL21zaHRtbC9tYWluLmMsCgkgIGRsbHMvbXNodG1sL21zaHRtbF9wcml2YXRlLmg6CglKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJU3R1YiBpbXBsZW1lbnRhdGlvbiBvZiBIVE1MRG9jdW1lbnQyIGludGVyZmFjZS4KCgkqIGRsbHMvdXNlci90ZXN0cy90ZXh0LmM6IFBhdWwgVnJpZW5zIDxwYXVsLnZyaWVuc0B4czRhbGwubmw+CglVc2UgdGV4dGxlbiBpbnN0ZWFkIG9mIGxlbi4KCVVzZSB0ZXh0aGVpZ2h0IGFzIHRoZSByZXR1cm4gdmFsdWUgb2YgRHJhd1RleHRBLgoKCSogZGxscy9hZHZhcGkzMi90ZXN0cy9zZWN1cml0eS5jOgoJU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtTGluZS5jb20+CglGaXggR2V0RmlsZVNlY3VyaXR5QSB0ZXN0IG9uIFdpbjk4LgoKCSogZGxscy93aW5tbS93aW5lYWxzYS9hdWRpby5jOiBQYXVsIHZhbiBTY2hheWNrIDxwb2xsZWtlQGdtYWlsLmNvbT4KCURvbid0IHN0b3AgbG9va2luZyBmb3IgZGV2aWNlcyBpZiBvbmUgY2FuJ3QgYmUgb3BlbmVkLgoKCSogZGxscy93aW5zcG9vbC9pbmZvLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglTZXQgdGhlIHJlZ2lzdHJ5IGtleXMgdW5kZXIgSENVXFNvZnR3YXJlXE1pY3Jvc29mdFxXaW5kb3dzCglOVFxDdXJyZW50VmVyc2lvbiB0byBtaW1pYyB0aGUgd2luLmluaSB2YWx1ZXMuCgoJKiBkbGxzL3NoZWxsMzIvZGVidWdobHAuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IHVwIFBJREwgZHVtcGluZyBjb2RlLgoKCSogZGxscy94MTFkcnYva2V5Ym9hcmQuYzogQXJpYyBDeXIgPGFjeXJAYWx1bW5pLnV3YXRlcmxvby5jYT4KCUphcGFuZXNlIDEwNiBLZXlib2FyZCBmaXguCgoyMDA1LTAzLTMwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9rZXJuZWwvZmlsZS5jLCBkbGxzL2tlcm5lbC9zeW5jLmMsIGRsbHMva2VybmVsL3Rlc3RzL21haWxzbG90LmMsCgkgIGRsbHMvbnRkbGwvZmlsZS5jLCBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsCgkgIHNlcnZlci9NYWtlZmlsZS5pbiwgc2VydmVyL21haWxzbG90LmMsIHNlcnZlci9wcm90b2NvbC5kZWYsCgkgIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci90cmFjZS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IG1haWxzbG90cy4KCgkqIGRsbHMvdXNlci9tZW51LmMsIGRsbHMvdXNlci90ZXN0cy9tc2cuYywgd2luZG93cy9ub25jbGllbnQuYywKCSAgd2luZG93cy93aW4uYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CgktIE1ha2UgR2V0U3lzdGVtTWVudSByZXNwZWN0IENTX05PQ0xPU0UuCgktIEVuYWJsZU1lbnVJdGVtIHNob3VsZCBub3QgZ2VuZXJhdGUgV01fV0lORE9XUE9TQ0hBTkdJTkcgbWVzc2FnZS4KCS0gTWFrZSBub25jbGllbnQgY29kZSBjaGVjayBmb3IgcHJlc2VuY2Ugb2YgU0NfQ0xPU0UsIG5vdCBDU19OT0NMT1NFCgkgIHdpbmRvdyBjbGFzcyBzdHlsZS4KCS0gQWRkIGEgdGVzdCBjYXNlLgoKCSogZGxscy9hZHZhcGkzMi9jcnlwdC5jOiBNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglSZW1vdmVkIHRoZSBpbmNvbXBsZXRlIHNpZ25hdHVyZSBjaGVja2luZyBjb2RlLgoKCSogZGxscy91c2VyL3BhaW50aW5nLmMsIGRsbHMvdXNlci90ZXN0cy9kY2UuYywgZGxscy94MTFkcnYvZGNlLmMsCgkgIHNlcnZlci93aW5kb3cuYywgd2luZG93cy9ub25jbGllbnQuYzoKCVRoZSB1cGRhdGUgcmVnaW9uIHBhc3NlZCBpbiBXTV9OQ1BBSU5UIGFuZCB0aGUgY2xpcHBpbmcgcmVnaW9uIHBhc3NlZAoJdG8gR2V0RENFeCBoYXZlIHRvIGJlIGluIHNjcmVlbiBjb29yZGluYXRlcy4KCgkqIGRsbHMvY29tY3RsMzIvc3lzbGluay5jLCBkbGxzL2dkaS9wYWxldHRlLmMsIGRsbHMva2VybmVsL2NvbW0uYywKCSAgZGxscy9tc2kvZGlhbG9nLmMsIGRsbHMvbnRkbGwvcnRsc3RyLmMsIGRsbHMvb2xlMzIvY29tcG9iai5jLAoJICBkbGxzL29sZTMyL3Rlc3RzL21hcnNoYWwuYywgZGxscy9vbGVhdXQzMi90eXBlbGliLmgsCgkgIGRsbHMvcnBjcnQ0L3JwY19iaW5kaW5nLmMsIGRsbHMvcnNhZW5oL21waS5jLAoJICBkbGxzL3NoZWxsMzIvc2hmbGRyX3VuaXhmcy5jLCBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYywKCSAgZGxscy93aW5zb2NrL3Rlc3RzL3NvY2suYywgZGxscy94MTFkcnYveGZvbnQuYywKCSAgcHJvZ3JhbXMvcmVnZWRpdC9yZWdwcm9jLmMsIHRvb2xzL3dpZGwvdHlwZWxpYl9zdHJ1Y3QuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQXNzb3J0ZWQgc3BlbGxpbmcgZml4ZXMuCgoJKiBpbmNsdWRlL3VybG1vbi5pZGw6IEphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglBZGRlZCBJTW9uaWtlclByb3AgYW5kIElJbnRlcm5ldFByaW9yaXR5IGludGVyZmFjZXMuCgoJKiBpbmNsdWRlL21zaHRtZGlkLmg6IEphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglBZGRlZCBzb21lIGRlZmluaXRpb25zLgoKCSogZGxscy9rZXJuZWwvY29tcHV0ZXJuYW1lLmM6IEhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJUmV0dXJuIGEgY29tcHV0ZXJuYW1lIGNvbnN0cnVjdGVkIGZyb20gdGhlIGhvc3RuYW1lLgoKCSogZGxscy9rZXJuZWwvbmVfbW9kdWxlLmM6CglCZXR0ZXIgaGFuZGxpbmcgb2YgMTYtYml0IG5hdGl2ZSBkbGxzIHdoZW4gYSAzMi1iaXQgYnVpbHRpbiB3aXRoIHRoZQoJc2FtZSBuYW1lIGV4aXN0czsgc2hvdWxkIGhlbHAgd2l0aCB0aGUgMTYtYml0IGNhcmRzLmRsbCBpc3N1ZS4KCVJlcGxhY2Ugc29tZSBtYWdpYyBlcnJvciBudW1iZXJzIGJ5IHRoZSBjb3JyZXNwb25kaW5nIG5hbWVzLgoKCSogZGxscy91c2VyL3BhaW50aW5nLmMsIGRsbHMvdXNlci90ZXN0cy9kY2UuYywKCSAgZGxscy91c2VyL3VzZXJfcHJpdmF0ZS5oLCBkbGxzL3gxMWRydi9kY2UuYywgZGxscy94MTFkcnYveDExZHJ2LnNwZWMsCgkgIGluY2x1ZGUvd2luLmg6CglPbmx5IHJlc2V0IHRoZSBjbGlwIHJlZ2lvbiBpbiBHZXREQygpIGlmIGEgbmV3IHJlZ2lvbiBpcyBzcGVjaWZpZWQuCglEb24ndCByZWxlYXNlIHRoZSBjbGlwIHJlZ2lvbiBmb3Igd2luZG93IERDcyBpbiBSZWxlYXNlREMoKSwgZXhjZXB0Cgl3aGVuIGNhbGxlZCBmcm9tIEVuZFBhaW50KCkuCglBZGRlZCBhIGJ1bmNoIG9mIHRlc3RzLgoKCSogZGxscy91c2VyL21lbnUuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVplcm8gb3V0IHJldHVybiBzdHJpbmcgaW4gR2V0TWVudVN0cmluZ0EvVy4KCgkqIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy9udGRsbC9zZWMuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVN0dWIgaW1wbGVtZW50YXRpb24gb2YgUnRsQWJzb2x1dGVUb1NlbGZSZWxhdGl2ZVNELgoKCSogZGxscy9kc291bmQvdGVzdHMvZHNvdW5kLmMsIGRsbHMvZHNvdW5kL3Rlc3RzL2Rzb3VuZDguYzoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglLZWVwIGRzb3VuZDguYyBhbmQgZHNvdW5kLmMgaW4gc3luYy4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlcGljdHVyZS5jOgoJQWxleCBWaWxsYWPtcyBMYXNzbyA8YV92aWxsYWNpc0BwYWxvc2FudG8uY29tPgoJSW5pdGlhbGl6ZSBbb3JpZ3xoaW1ldHJpY11bV2lkdGh8SGVpZ2h0XSBmb3IgUElDVFlQRV9JQ09OIGNhc2UuCgoJKiBkbGxzL2FkdmFwaTMyL3JlZ2lzdHJ5LmMsIGRsbHMvbnRkbGwvcmVnLmM6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglNb3ZlIHNhdmVfcmVnaXN0cnkgYW5kIHVubG9hZF9rZXkgc2VydmVyIGNhbGxzIHRvIG50ZGxsLgoKCSogZGxscy9tc2kvYWN0aW9uLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglNYWtlIHN1cmUgdGhlIEdVSUQgb2YgdGhlIHR5cGVsaWIgd2UgYXJlIHJlZ2lzdGVyaW5nIG1hdGNoZXMgdGhlIGd1aWQKCXJlcXVlc3RlZCBmcm9tIE1TSS4gSWYgbm90IHNlYXJjaCB0aGUgZ2l2ZW4gdHlwZWxpYiBmaWxlIHRvIGZpbmQgdGhlCgl0eXBlbGliIHJlcXVlc3RlZCB0byByZWdpc3Rlci4KCjIwMDUtMDMtMjkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBwcm9ncmFtcy93aW5ldGVzdC9tYWluLmM6IEZlcmVuYyBXYWduZXIgPHdmZXJpQHRiYS5lbHRlLmh1PgoJVHJ5IHVzaW5nIGEgc3RhYmxlIHRlbXBvcmFyeSBkaXJlY3RvcnkgYXQgZmlyc3QgdG8gc2lsZW5jZSBab25lQWxhcm0KCXdhcm5pbmdzLgoKCSogZGxscy9hZHZhcGkzMi9zZXJ2aWNlLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCBDaGFuZ2VTZXJ2aWNlQ29uZmlnLgoKCSogZGxscy9tc2FjbS9mb3JtYXQuYywgZGxscy9wc2FwaS9wc2FwaV9tYWluLmMsIGRsbHMvdXNlci90ZXh0LmMsCgkgIGRsbHMvd2luaW5ldC9uZXRjb25uZWN0aW9uLmM6CglQZXRlciBCZXJnIExhcnNlbiA8cGVibEBtYXRoLmt1LmRrPgoJSmFuaXRvcmlhbDogR2V0IHJpZCBvZiBzdHJuY3B5L3N0cm5jcHlXLgoKCSogZGxscy93aW5tbS93aW5lYWxzYS9hdWRpby5jOgoJSmVycnkgSmVua2lucyA8amVycnlfal9qZW5raW5zQHlhaG9vLmNvbT4KCUltcHJvdmUgd2luZWFsc2EgZHNvdW5kIGRyaXZlciBieSBhY2Nlc3Npbmcgc291bmQgZHJpdmVyJ3MgYnVmZmVyCglkaXJlY3RseSBpbiBhbiB1bmRvY3VtZW50ZWQgd2F5LgoKCSogZGxscy9kM2Q4L2RpcmVjdHguYywgZGxscy9kM2Q5L2N1YmV0ZXh0dXJlLmMsCgkgIGRsbHMvZDNkOS9kM2Q5X3ByaXZhdGUuaCwgZGxscy9kM2Q5L2RldmljZS5jLCBkbGxzL2QzZDkvZGlyZWN0eC5jLAoJICBkbGxzL2QzZDkvdGV4dHVyZS5jLCBkbGxzL2QzZDkvdm9sdW1lLmMsIGRsbHMvZDNkOS92b2x1bWV0ZXh0dXJlLmMsCgkgIGRsbHMvd2luZWQzZC9iYXNldGV4dHVyZS5jLCBkbGxzL3dpbmVkM2QvY3ViZXRleHR1cmUuYywKCSAgZGxscy93aW5lZDNkL2RldmljZS5jLCBkbGxzL3dpbmVkM2QvZGlyZWN0eC5jLAoJICBkbGxzL3dpbmVkM2QvZHJhd3ByaW0uYywgZGxscy93aW5lZDNkL2luZGV4YnVmZmVyLmMsCgkgIGRsbHMvd2luZWQzZC9yZXNvdXJjZS5jLCBkbGxzL3dpbmVkM2Qvc3VyZmFjZS5jLAoJICBkbGxzL3dpbmVkM2QvdGV4dHVyZS5jLCBkbGxzL3dpbmVkM2QvdmVydGV4YnVmZmVyLmMsCgkgIGRsbHMvd2luZWQzZC92b2x1bWUuYywgZGxscy93aW5lZDNkL3ZvbHVtZXRleHR1cmUuYywKCSAgZGxscy93aW5lZDNkL3dpbmVkM2RfcHJpdmF0ZS5oLCBpbmNsdWRlL3dpbmUvd2luZWQzZF9pbnRlcmZhY2UuaDoKCU9saXZlciBTdGllYmVyIDxvbGl2ZXJfc3RpZWJlckB5YWhvby5jby51az4KCS0gVm9sdW1lIG5vdyBpbmhlcml0cyBSZXNvdXJjZS4gVGhpcyBpc24ndCB0aGUgd2F5IE1pY3Jvc29mdCBpbXBsZW1lbnRzCgkgIHRoZSBpbnRlcmZhY2UgYnV0IGl0IGlzIG1vcmUgY29ycmVjdCB3YXkgKE1pY3Jvc29mdCBldmVuIGhhdmUgYQoJICByZXNvdXJjZSB0eXBlIG9mIHZvbHVtZSkuCgktIE1vdmVkIHVzYWdlLCBmb3JtYXQsIGFsbG9jYXRlZE1lbW9yeSBhbmQgc2l6ZSBvbnRvIHRoZSByZXNvdXJjZQoJICBjbGFzcyBzdHJ1Y3R1cmUuCgktIFJlZmFjdG9yZWQgUHJlbG9hZCBmb3IgY2xhc3NlcyB0aGF0IGluaGVyaXQgQmFzZVRleHR1cmUsIHByZWxvYWQgbm93CgkgIGJpbmRzIHRoZSB0ZXh0dXJlIGluc3RlYWQgb2YgYmluZCB0ZXh0dXJlIGNhbGxpbmcgcHJlbG9hZCwgYmluZFRleHR1cmUKCSAgYWxsb2NhdGVkIGEgZ2xUZXh0dXJlIGlmIHRoZXJlIGlzbid0IG9uZS4KCS0gQWRkZWQgdHdvIG5ldyBjbGFzcyBzdGF0aWMgbWVtYmVycyBCYXNlVGV4dHVyZV9DbGVhblVwIGFuZAoJICBSZXNvdXJjZV9DbGVhblVwIHRoYXQgc2hvdWxkIGJlIGNhbGxlZCBieSBjbGFzc2VzIHRoYXQgaW1wbGVtZW50CgkgIEJhc2VUZXh0dXJlIG9yIFJlc291cmNlLgoKCSogZGxscy91c2VyL3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMvdXNlci90ZXN0cy9NYWtlZmlsZS5pbiwKCSAgZGxscy91c2VyL3Rlc3RzL2RjZS5jLCBkbGxzL3gxMWRydi9kY2UuYzoKCU9ubHkgcmVzdG9yZSB0aGUgREMgYXR0cmlidXRlcyBvbiB0aGUgbmV4dCBHZXREQywgYW5kIGFkZCBzdXBwb3J0IGZvcgoJdGhlIERDWF9OT1JFU0VUQVRUUlMgZmxhZy4KCUdldCByaWQgb2YgdGhlIERDRSBmbGFncywgc2ltcGxpZnkgdGhlIGNvZGUgYSBiaXQuCglBZGQgc29tZSB0ZXN0IGNhc2VzLgoKCSogZGxscy9vbGVhdXQzMi9vbGVwaWN0dXJlLmM6CglBbGV4IFZpbGxhY+1zIExhc3NvIDxhX3ZpbGxhY2lzQHBhbG9zYW50by5jb20+CglGaXggZmFpbHVyZSB0byBub3RpY2UgdGhlIHVzZSBvZiBhIEdJRiBwYWxldHRlIGluZGV4IGdyZWF0ZXIgb3IgZXF1YWwKCXRvIDEyOCBmb3IgdHJhbnNwYXJlbmN5LgoKCSogcHJvZ3JhbXMvcmVnZWRpdC9Dcy5yYywgcHJvZ3JhbXMvcmVnZWRpdC9EZS5yYywKCSAgcHJvZ3JhbXMvcmVnZWRpdC9Fbi5yYywgcHJvZ3JhbXMvcmVnZWRpdC9Fcy5yYywKCSAgcHJvZ3JhbXMvcmVnZWRpdC9Gci5yYywgcHJvZ3JhbXMvcmVnZWRpdC9JdC5yYywKCSAgcHJvZ3JhbXMvcmVnZWRpdC9KYS5yYywgcHJvZ3JhbXMvcmVnZWRpdC9QbC5yYywKCSAgcHJvZ3JhbXMvcmVnZWRpdC9QdC5yYzoKCUphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglBZGRlZCBFU19BVVRPSFNDUk9MTCBzdHlsZSB0byB0aGUgZWRpdHRleHQgY2hhbmdpbmcgdGV4dCBkYXRhLgoKCSogZGxscy9nZGkvZW5obWV0YWZpbGUuYywgZGxscy9nZGkvdGVzdHMvbWV0YWZpbGUuYzoKCUh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglJbiBhIGNhbGwgdG8gRW51bUVuaE1ldGFGaWxlIHdoZW4gaGRjIGlzIE5VTEwsIGxwUmVjdCBtYXkgYmUgTlVMTC4gQWRkCglhIHRlc3QgZm9yIHRoaXMuCgoJKiBkbGxzL29sZTMyL3N0b3JhZ2UzMi5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJV3JpdGVGbXRVc2VyVHlwZVN0ZyBkb2Vzbid0IHB1bGwgYSBDTFNJRCBmcm9tIHRoZSByZWdpc3RyeSAtIGl0J3MKCXVuY2xlYXIgd2hlbiAoaWYgYXQgYWxsKSB0aGlzIGdldHMgd3JpdHRlbi4KCgkqIGRsbHMvdXNlci9rYmQxNi5jLCBkbGxzL3VzZXIvbHN0ci5jLCBkbGxzL3VzZXIvdXNlcjE2LmM6CglNb3ZlZCAxNi1iaXQgc3RyaW5nIGZ1bmN0aW9ucyB0byB1c2VyMTYuYyBhbmQga2JkMTYuYy4KCgkqIGRsbHMvZGJnaGVscC9kYmdoZWxwX3ByaXZhdGUuaCwgZGxscy9kYmdoZWxwL2VsZl9tb2R1bGUuYywKCSAgZGxscy9kYmdoZWxwL21pbmlkdW1wLmMsIGRsbHMvZGJnaGVscC9tb2R1bGUuYywgZGxscy9kYmdoZWxwL3BhdGguYywKCSAgZGxscy9kYmdoZWxwL3BlX21vZHVsZS5jLCBpbmNsdWRlL2RiZ2hlbHAuaDoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJLSBWYXJpb3VzIGltcHJvdmVtZW50cyBmb3IgbWluaWR1bXAgbW9kdWxlIGluZm9ybWF0aW9uCgkgIC4gYWRkZWQgdGltZXN0YW1wICYgY2hlY2tzdW0gaW4gUEUgbW9kdWxlCgkgIC4gYWRkZWQgc2l6ZSAmIGNoZWNrc3VtIGluIEVMRiBtb2R1bGUKCSAgLiB3aW5lIGxvYWRlciBub3cgYXBwZWFycyB3aXRoIGl0cyBwYXRobmFtZS4KCS0gSW1wbGVtZW50ZWQgUEUgJiBFTEYgdGltZXN0YW1wICYgY2hlY2tzdW0gdmFsaWRhdGlvbiBpbgoJICBTeW1GaW5kRmlsZUluUGF0aC4KCgkqIGRsbHMvdXNlci9NYWtlZmlsZS5pbiwgZGxscy91c2VyL3VpdG9vbHMuYywgd2luZG93cy9yZWN0LmM6CglNb3ZlZCByZWN0YW5nbGUgZnVuY3Rpb25zIHRvIHVpdG9vbHMuYyBhbmQgcmVtb3ZlZCByZWN0LmMuCgoJKiBkbGxzL3dpbnNwb29sL2luZm8uYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVVuaWNvZGlmeSBXSU5TUE9PTF9PcGVuRHJpdmVyUmVnKCkuCgoJKiBkbGxzL29sZTMyL2NvbXBvYmouYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCURvbid0IGNsb3NlIHJlZyBrZXkgaWYgdGhlIG9wZW4gZmFpbGVkLgoKCSogZGxscy9vbGVhdXQzMi90bWFyc2hhbC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1laXNzbmVyQHN1c2UuZGU+CglTZXJpYWxpemUgTlVMTCBwb2ludGVyIGludGVyZmFjZXMgY29ycmVjdGx5LgoKCSogZGxscy91c2VyL3Rlc3RzL21zZy5jLCB3aW5kb3dzL3Njcm9sbC5jOgoJUmVpbiBLbGF6ZXMgPHdpam5Ad2FuYWRvby5ubD4KCVNjcm9sbFdpbmRvdyBzaG91bGQgY2FsbCBTY3JvbGxXaW5kb3dFeCB3aXRoIHRoZSBTV19FUkFTRSBmbGFnCglzZXQuIFdpdGggY29uZm9ybWFuY2UgdGVzdC4KCgkqIHNlcnZlci9mZC5jLCBzZXJ2ZXIvZmlsZS5jLCBzZXJ2ZXIvZmlsZS5oLCBzZXJ2ZXIvc2VyaWFsLmMsCgkgIHNlcnZlci9zb2NrLmM6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCUNsZWFuLXVwIGFzeW5jIElPIGludGVybmFsIGZ1bmN0aW9ucy4KCgkqIGRsbHMvYWR2YXBpMzIvcmVnaXN0cnkuYywgZGxscy9udGRsbC9yZWcuYywgaW5jbHVkZS93aW50ZXJubC5oLAoJICBzZXJ2ZXIvcmVnaXN0cnkuYzoKCUphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJLSBJbXBsZW1lbnQgTnRMb2FkS2V5LgoJLSBGb3J3YXJkIFJlZ0xvYWRLZXkgdG8gTnRMb2FkS2V5LgoKCSogZGxscy91c2VyL3VzZXIxNi5jLCB3aW5kb3dzL3JlY3QuYzoKCU1vdmVkIDE2LWJpdCByZWN0YW5nbGUgZnVuY3Rpb25zIHRvIHVzZXIxNi5jLgoKCSogZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZGxscy9rZXJuZWwvbG9jYWxlLmM6CglUcm95IFJvbGxvIDx3aW5lQHRyb3kucm9sbG8ubmFtZT4KCUltcGxlbWVudCBTZXRDUEdsb2JhbCAoYW4gdW5kb2N1bWVudGVkIFdpbjMyIEFQSSkuCgoJKiBkbGxzL2FkdmFwaTMyL3Rlc3RzL2NyeXB0LmM6IE1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCUFkZGVkIGEgdGVzdCBmb3IgYWR2YXBpMzIsIHdoaWNoIGRvY3VtZW50cyBhIGNyYXNoIGluIHdpbmUgdHJpZ2dlcmVkCglieSBpbmNvcnJlY3QgYXBpIHVzYWdlLgoKCSogZGxscy9vbGUzMi9jbGlwYm9hcmQuYywgZGxscy9vbGUzMi9vbGUyLmM6CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglDaGFuZ2UgcHJvdG90eXBlcyBzbyBnY2Mgd2l0aCBzb21lIHdhcm5pbmdzIGRvZXNuJ3QgYmFyay4KCgkqIHRvb2xzL3dpbmFwaS93aW4zMi5hcGk6IFZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCXJzYWJhc2UgZG9lc24ndCB1c2UgYW55IHR5cGVzIG5vdywgc28gcmVtb3ZlIGl0LgoKCSogZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jLCBkbGxzL2FkdmFwaTMyL3Rlc3RzL3NlY3VyaXR5LmM6CglTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCUZpeCBHZXRGaWxlU2VjdXJpdHlXIGZvciBub3QgZXhpc3RpbmcgZGlyZWN0b3JpZXMvZmlsZXMuCgoJKiBkbGxzL2RiZ2hlbHAvbXNjLmMsIGRsbHMvZGJnaGVscC9zeW1ib2wuYzoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJLSBQREI6IGJldHRlciBjaGVja2luZyBmb3IgZXJyb3IgY29uZGl0aW9ucwoJLSBGaXhlZCBuYW1lIGRlbWFuZ2xpbmcgKHdoZW4gYWN0aXZhdGVkKSB3aGVuIHNlYXJjaGluZyBmb3IgYSBzeW1ib2wKCgkqIGRsbHMvbnRkbGwvdGVzdHMvcmVnLmM6IEphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglGaXhlZCBudGRsbDpyZWcgdGVzdCBvbiB3aW45eC4KCgkqIGRsbHMveDExZHJ2L2tleWJvYXJkLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglIYW5kbGUgY29udHJvbCBjaGFyYWN0ZXJzIGluIFZrS2V5U2NhbkV4IHNpbWlsYXIgdG8gd2hhdCBXaW5kb3dzCglkb2VzLgoKCSogZGxscy91c2VyL3Njcm9sbC5jLCBkbGxzL3VzZXIvdGVzdHMvd2luLmM6CglSZWluIEtsYXplcyA8d2lqbkB3YW5hZG9vLm5sPgoJLSBHZXRTY3JvbGxSYW5nZSBzaG91bGQgcmV0dXJuIGFuIGVtcHR5IHJhbmdlLCBib3RoIHVwcGVyIGFuZCBsb3dlcgoJICBsaW1pdCB6ZXJvLCBpZiB0aGUgd2luZG93IGhhcyBubyBzY3JvbGxiYXJzIChtc2RuKS4KCS0gR2V0U2Nyb2xsSW5mbydzIHJldHVybiB2YWx1ZSBpcyBUUlVFIGlzIG5CYXIgaXMgU0JfQ1RMIG9yIGlmCgkgIGFueXRoaW5nIGlzIGZpbGxlZCBpbiB0aGUgU0NST0xMSU5GTyBzdHJ1Y3R1cmUsIG90aGVyd2lzZSB0aGUgcmV0dXJuCgkgIHZhbHVlIGlzIEZBTFNFLgoKCSogZGxscy9vbGVhdXQzMi90bWFyc2hhbC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1laXNzbmVyQHN1c2UuZGU+CglGaXhlZCBWVF9CU1RSfFZUX0JZUkVGIG1hcnNoYWxsaW5nLgoJQWRkZWQgVlRfSTR8VlRfQllSRUYgbWFyc2hhbGxpbmcuCgoJKiBkbGxzL21zaS9NYWtlZmlsZS5pbiwgZGxscy9tc2kvZGF0YWJhc2UuYywgZGxscy9tc2kvbXNpLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglTcGxpdCBvdXQgZGF0YWJhc2UgZnVuY3Rpb25zLCByZW1vdmUgZGVwZW5kZW5jZSBvbiB3aW5lL3VuaWNvZGUuaC4KCjIwMDUtMDMtMjggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jLCBkbGxzL2RtYmFuZC9iYW5kLmMsIGRsbHMvZG1jb21wb3MvY2hvcmRtYXAuYywKCSAgZGxscy9kbWltZS9hdWRpb3BhdGguYywgZGxscy9kbWltZS9ncmFwaC5jLCBkbGxzL2RtaW1lL3NlZ21lbnQuYywKCSAgZGxscy9pcGhscGFwaS9pZmVudW0uYywgZGxscy9pcGhscGFwaS9pcGhscGFwaV9tYWluLmMsCgkgIGRsbHMva2VybmVsL2F0b20xNi5jLCBkbGxzL2tlcm5lbC9wcm9maWxlLmMsIGRsbHMvcnNhZW5oL3JzYWVuaC5jLAoJICBkbGxzL3NobHdhcGkvcGF0aC5jLCBkbGxzL3NobHdhcGkvc3RyaW5nLmMsIGRsbHMvc2hsd2FwaS91cmwuYywKCSAgZGxscy93aW5pbmV0L2Nvb2tpZS5jLCBkbGxzL3dpbmluZXQvZnRwLmMsIGRsbHMvd2luaW5ldC9odHRwLmMsCgkgIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jLCBkbGxzL2RiZ2hlbHAvZGJnaGVscC5jLAoJICBkbGxzL2RiZ2hlbHAvbW9kdWxlLmMsIGRsbHMvZGJnaGVscC9zeW1ib2wuYywgZGxscy9kc291bmQvY2FwdHVyZS5jLAoJICBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jLCBkbGxzL2Rzb3VuZC9wcm9wc2V0LmMsCgkgIGRsbHMvZHN3YXZlL2Rzd2F2ZS5jLCBkbGxzL2dkaS9lbnYuYywgZGxscy9rZXJuZWwvdGVzdHMvcHJvY2Vzcy5jLAoJICBkbGxzL21zaS9hY3Rpb24uYywgZGxscy9tc2kvYXBwc2VhcmNoLmMsIGRsbHMvbXNpL2RpYWxvZy5jLAoJICBkbGxzL21zaS9mb3JtYXQuYywgZGxscy9tc3ZjcnQvZGlyLmMsIGRsbHMvbXN2aWRlby9tc3ZpZGVvMTYuYywKCSAgZGxscy9vcGVuZ2wzMi93Z2wuYywgZGxscy9xdWFydHovZHNvdW5kcmVuZGVyLmMsCgkgIGRsbHMvcXVhcnR6L3BhcnNlci5jLCBkbGxzL3F1YXJ0ei90cmFuc2Zvcm0uYywKCSAgZGxscy9xdWFydHovdmlkZW9yZW5kZXJlci5jLCBkbGxzL3F1YXJ0ei93YXZlcGFyc2VyLmMsCgkgIGRsbHMvc2V0dXBhcGkvZGV2aW5zdC5jLCBkbGxzL3NldHVwYXBpL3NldHVwY2FiLmMsCgkgIGRsbHMvdGFwaTMyL2Fzc2lzdGVkLmMsIGRsbHMvd2luZXBzL2FmbTJjLmMsIGRsbHMvd2luc29jay9zb2NrZXQuYywKCSAgcHJvZ3JhbXMvbXNpZXhlYy9tc2lleGVjLmMsIHByb2dyYW1zL3JlZ2VkaXQvcmVncHJvYy5jLAoJICBwcm9ncmFtcy93aW5lY2ZnL2RyaXZlLmMsIHByb2dyYW1zL3dpbmVkYmcvbWVtb3J5LmMsCgkgIHByb2dyYW1zL3dpbmVtaW5lL21haW4uYywgd2luZG93cy9zcHkuYzoKCVBldGVyIEJlcmcgTGFyc2VuIDxwZWJsQG1hdGgua3UuZGs+CglKYW5pdG9yaWFsOiBHZXQgcmlkIG9mIHN0cm5jcHkvc3RybmNweVcuCgoJKiBkbGxzL3gxMWRydi9iaXRtYXAuYywgZGxscy94MTFkcnYvY2xpcGJvYXJkLmMsIGRsbHMveDExZHJ2L2RpYi5jLAoJICBkbGxzL3gxMWRydi94MTFkcnYuaDoKCU1lcmdlZCBYMTFEUlZfQklUTUFQX0NyZWF0ZUJpdG1hcEhlYWRlckZyb21QaXhtYXAgaW50bwoJWDExRFJWX0RJQl9DcmVhdGVESUJGcm9tUGl4bWFwIGFuZCBzaW1wbGlmaWVkIHRoZSBjb2RlIGEgYml0LgoKCSogZGxscy9rZXJuZWwvc3luYy5jLCBkbGxzL2tlcm5lbC90ZXN0cy9tYWlsc2xvdC5jLCBkbGxzL250ZGxsL2ZpbGUuYywKCSAgZGxscy9udGRsbC9udC5jLCBpbmNsdWRlL3dpbnRlcm5sLmg6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgQ3JlYXRlTWFpbHNsb3QgdXNpbmcgTnRDcmVhdGVNYWlsc2xvdEZpbGUuCgoJKiBkbGxzL29sZTMyL2NvbXBvc2l0ZW1vbmlrZXIuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlIGZ1bmN0aW9uIHByb3RvdHlwZXMsIG1ha2UgZnVuY3Rpb25zIHN0YXRpYy4KCgkqIHByb2dyYW1zL3djbWQvYmF0Y2guYzogVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJTmF0aXZlIHdjbWQuZXhlIGFjY2VwdHMgQ0FMTHMgdG8gLmV4ZSBmaWxlcy4KCgkqIHRvb2xzL3dpZGwvd2lkbHR5cGVzLmg6IFZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCUtlZXAgdHlwZXMgc29ydGVkIGluIGFscGhhYmV0aWNhbCBvcmRlci4KCgkqIHRvb2xzL3dpZGwvcGFyc2VyLmwsIHRvb2xzL3dpZGwvcGFyc2VyLnk6CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglBZGQgc3VwcG9ydCBmb3Igc2luZ2xlIGluIGlkbCBmaWxlcy4KCgkqIGRsbHMvYWR2YXBpMzIvdGVzdHMvc2VjdXJpdHkuYzoKCVN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJQWRkZWQgYSB0ZXN0IGZvciBHZXRGaWxlU2VjdXJpdHlBLgoKCSogZGxscy9vbGVhdXQzMi90bWFyc2hhbC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1laXNzbmVyQHN1c2UuZGU+CglGaXhlZCBwcHZPYmplY3Qgc2VyaWFsaXplciAoZGVyZWYgdHdpY2UgaW5zdGVhZCBvZiBvbmNlKS4KCUFjdHVhbGx5IHBhc3MgYmFjayByZXR1cm4gdmFsdWUgb2YgcmVtb3RlIGNhbGwgaW4gdHlwZSBtYXJzaGFsbGVyLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvdGltZS5jOiBKYWtvYiBFcmlrc3NvbiA8amFrb3ZAdm1saW51eC5vcmc+CglSZW1vdmUgdGVzdHMgdGhhdCBmYWlsIGJhZGx5IG9uIFdpbmRvd3MgOTguCgoJKiBkbGxzL250ZGxsL3Rlc3RzL2Vycm9yLmM6IFNhdWxpdXMgS3Jhc3Vja2FzIDxzYXVsaXVzMkBhci5maS5sdD4KCUZpeCBhbiBlcnJvciBjb2RlIGZvciBNRS4KCgkqIGluY2x1ZGUvYXhleHRlbmQuaWRsOiBWbGFkZHkgSW1wYWxlciA8dmxhZGR5QHV0Y2hhdC5jb20+CglEZWZpbmUgdGhlIElBTVN0cmVhbUNvbmZpZyBpbnRlcmZhY2UuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYzogSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCUFkZGVkIGNoZWNraW5nIGZvciBhcnRzYyBsaWJyYXJ5LgoKMjAwNS0wMy0yNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMveDExZHJ2L2JpdG1hcC5jLCBkbGxzL3gxMWRydi9icnVzaC5jLCBkbGxzL3gxMWRydi9kaWIuYywKCSAgZGxscy94MTFkcnYvd2luZG93LmMsIGRsbHMveDExZHJ2L3gxMWRkcmF3LmMsIGRsbHMveDExZHJ2L3gxMWRydi5oOgoJQWRkZWQgWDExRFJWX2dldF9waXhtYXAgYW5kIFgxMURSVl9zZXRfcGl4bWFwIGZ1bmN0aW9ucyB0byBhdm9pZAoJZGlyZWN0IGFjY2Vzc2VzIHRvIHRoZSBwaHlzQml0bWFwIGZpZWxkIG9mIHRoZSBiaXRtYXAgc3RydWN0dXJlLgoKCSogZGxscy9vbGUzMi9iaW5kY3R4LmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZSBmdW5jdGlvbiBwcm90b3R5cGVzLCBtYWtlIGZ1bmN0aW9ucyBzdGF0aWMuCgoJKiBkbGxzL29sZWF1dDMyL3RtYXJzaGFsLmM6IE1pa2UgSGVhcm4gPG1pa2VAbmF2aS5jeD4KCUZpeCBCU1RSIHRyYWNpbmcgaW4gdGhlIHR5cGVsaWIgbWFyc2hhbGxlci4KCgkqIGRsbHMvZ2RpL2dkaV9wcml2YXRlLmgsIGRsbHMveDExZHJ2L2JpdG1hcC5jLCBkbGxzL3gxMWRydi9pbml0LmMsCgkgIGRsbHMveDExZHJ2L3gxMWRydi5oLCBpbmNsdWRlL2dkaS5oOgoJU3RvcmUgdGhlIGhhbmRsZSB0byB0aGUgc3RvY2sgYml0bWFwIHdoZW4gdGhlIGZpcnN0IERDIGlzIGNyZWF0ZWQgdG8KCWF2b2lkIGV4cG9ydGluZyB0aGUgREVGQVVMVF9CSVRNQVAgZGVmaW5lLgoKCSogZGxscy9vbGVhdXQzMi90bWFyc2hhbC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1laXNzbmVyQHN1c2UuZGU+CglGb3JtYXQgVlRfVUkxLCBWVF9JMSwgVlRfVUkyLCBWVF9JMiBjb3JyZWN0bHkuCgoJKiBkbGxzL29sZTMyL2RhdGFjYWNoZS5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglSZW1vdmUgdW5uZWNlc3NhcnkgZnVuY3Rpb24gcHJvdG90eXBlcy4KCgkqIGRsbHMvb2xlMzIvYW50aW1vbmlrZXIuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlIGZ1bmN0aW9uIHByb3RvdHlwZXMsIG1ha2UgZnVuY3Rpb25zIHN0YXRpYy4KCgkqIGRsbHMveDExZHJ2L2RjZS5jLCBkbGxzL3gxMWRydi9pbml0LmMsIGRsbHMveDExZHJ2L3gxMWRydi5oOgoJU3RvcmUgdGhlIERDRSBwb2ludGVyIGluIHRoZSBEQyBwaHlzRGV2IHN0cnVjdHVyZSB1c2luZyBhbiB4MTFkcnYgR0RJCgllc2NhcGUuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVVzZSBhcGkgZGVmaW5pdGlvbnMsIHJlbW92ZSBkdXBsaWNhdGUgY29kZS4KCgkqIGRsbHMvc2V0dXBhcGkvc3R1YnMuYzogSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglSZW1vdmUgc3RyYXkgOGJpdCBjaGFyYWN0ZXIuCgoJKiBkbGxzL3dpbm1tL3dpbmVhbHNhL2F1ZGlvLmM6CglKZXJyeSBKZW5raW5zIDxqZXJyeV9qX2plbmtpbnNAeWFob28uY29tPgoJRG9uJ3QgbWlzdGFrZSBmcmFtZXMgZm9yIGJ5dGVzLgoKCSogZGxscy9jb21jdGwzMi9yZWJhci5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglGaXggc2l6ZSBwYXNzZWQgdG8gU1BJX05PTkNMSUVOVE1FVFJJQ1MuCgoJKiBkbGxzL29sZWF1dDMyL3RtYXJzaGFsLmM6IE1hcmN1cyBNZWlzc25lciA8bWVpc3NuZXJAc3VzZS5kZT4KCUFkZGVkIElEaXNwYXRjaDo6R2V0SURzT2ZOYW1lcygpIHNwZWNpYWwgY2FzZSBzZXJpYWxpemluZy4KCUhhbmRsZSBWVF9QVFIgLyBOVUxMIG1hcnNoYWxsaW5nIGNvcnJlY3RseS4KCgkqIHdpbmRvd3Mvbm9uY2xpZW50LmMsIHdpbmRvd3Mvd2lucG9zLmM6CglVbHJpY2ggQ3pla2FsbGEgPHVscmljaEBjb2Rld2VhdmVycy5jb20+CglXaGVuIGNvbXB1dGluZyBub25jbGllbnQgYXJlYSB0YWtlIGludG8gY29uc2lkZXJhdGlvbiB0aGF0IGEgY2hpbGQKCXdpbmRvd3Mgd2l0aCB0aGUgV1NfUE9QVVAgc3R5bGUgY2FuIGhhdmUgYSBtZW51IGJhci4KCjIwMDUtMDMtMjUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2dkaS9kYy5jLCBkbGxzL2dkaS9nZGlfcHJpdmF0ZS5oLCBkbGxzL2dkaS9nZGlvYmouYywKCSAgaW5jbHVkZS9nZGkuaDoKCUV4cGxpY2l0bHkgc3RvcmUgdGhlIHN0YWNrIG9mIHNhdmVkIERDcyBpbiB0aGUgREMgc3RydWN0dXJlIGluc3RlYWQgb2YKCXVzaW5nIHRoZSAxNi1iaXQgaE5leHQgZmllbGQgaW4gdGhlIG9iamVjdCBoZWFkZXIuCgoJKiBkbGxzL2dkaS9jbGlwcGluZy5jLCBkbGxzL2dkaS9kYy5jLCBkbGxzL2dkaS9nZGlfcHJpdmF0ZS5oOgoJTWFpbnRhaW4gdGhlIHN0YWNrIG9mIHNhdmVkIHZpcyByZWdpb25zIGluIHRoZSBEQyBzdHJ1Y3R1cmUgaW5zdGVhZCBvZgoJc3RvcmluZyBpdCBkaXJlY3RseSBpbiB0aGUgcmVnaW9uIG9iamVjdHMuCgoJKiBkbGxzL2NvbWN0bDMyL2FuaW1hdGUuYywgZGxscy9jb21jdGwzMi9jb21tY3RybC5jLAoJICBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jLCBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmMsCgkgIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmMsIGRsbHMvY29tY3RsMzIvc3lzbGluay5jLAoJICBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglVc2Uge0FsbG9jLFJlQWxsb2MsRnJlZX0oKSBpbnN0ZWFkIG9mIEhlYXB7QWxsb2MsUmVBbGxvYyxGcmVlfSgpLgoKCSogZGxscy9zaGVsbDMyL3Rlc3RzL3NobGZpbGVvcC5jOiBQYXVsIFZyaWVucyA8UGF1bC5WcmllbnNAeHM0YWxsLm5sPgoJUHJpbnQgcmV0dmFsIGluIGRlY2ltYWwgdG8gYXZvaWQgY29uZnVzaW9uLgoJTlQ0IGZhaWxzIHdpdGggRVJST1JfSU5WQUxJRF9UQVJHRVRfSEFORExFIGluc3RlYWQgb2YKCUVSUk9SX1JFRElSX1BBVVNFRC4KCVVzZSBzb21lIGNvcnJlY3QgbWVzc2FnZXMgb24gZXJyb3IuCglFeHRyYSB0cmFjaW5nLgoKCSogZGxscy91c2VyL21lbnUuYywgZGxscy91c2VyL3Rlc3RzL3dpbi5jOgoJVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hAY29kZXdlYXZlcnMuY29tPgoJQ2hpbGQgd2luZG93cyB3aXRoIHRoZSBXU19QT1BVUCBzdHlsZSBhcmUgYWxsb3dlZCB0byBoYXZlIGEgbWVudS4KCgkqIGRsbHMvdXVpZC91dWlkLmMsIGluY2x1ZGUvLmN2c2lnbm9yZSwgaW5jbHVkZS9NYWtlZmlsZS5pbiwKCSAgaW5jbHVkZS9tc2h0bWhzdC5pZGw6CglKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJQWRkZWQgbXNodG1oc3QuaWRsLgoKCSogcHJvZ3JhbXMvd2luZXRlc3QvbWFpbi5jOiBGZXJlbmMgV2FnbmVyIDx3ZmVyaUB0YmEuZWx0ZS5odT4KCUNoZWNrIGRlc2t0b3AgdmlzaWJpbGl0eSBhZnRlciBwcm9jZXNzaW5nIGNvbW1hbmQgbGluZSBhcmd1bWVudHMuCgoJKiBkbGxzL3VzZXIvdGVzdHMvbXNnLmMsIGRsbHMvdXNlci90ZXN0cy93aW4uYywgZGxscy94MTFkcnYvc2Nyb2xsLmMsCgkgIHdpbmRvd3Mvc2Nyb2xsLmM6CglSZWluIEtsYXplcyA8d2lqbkB3YW5hZG9vLm5sPgoJU2Nyb2xsREMgYW5kIFgxMURSVl9TQ1JPTExEQyBzaG91bGQgc2Nyb2xsIG9ubHkgcGl4ZWxzIGNvbWluZyBmcm9tCgl3aXRoaW4gdGhlIHZpc2libGUgcmVnaW9uLCBjbGlwcGVkIHRvIHRoZSBjbGlwcGluZyByZWdpb24gaWYgdGhhdAoJZXhpc3RzLiBBZGQgdGhlIGRlc3RpbmF0aW9uIG9mIHBpeGVscyBjb21pbmcgZnJvbSB0aGUgb3V0c2lkZSBvZiB0aGlzCglyZWdpb24gdG8gdGhlIHVwZGF0ZSByZWdpb24uIFdpdGggdGVzdHMgdGhhdCBkZXBlbmQgb24gdGhpcy4KCgkqIGRsbHMvdXNlci9NYWtlZmlsZS5pbiwgZGxscy91c2VyL3BhaW50aW5nLmMsIGRsbHMvdXNlci91c2VyMTYuYywKCSAgZGxscy91c2VyL3VzZXIzMi5zcGVjLCBkbGxzL3VzZXIvdXNlcl9tYWluLmMsCgkgIGRsbHMvdXNlci91c2VyX3ByaXZhdGUuaCwgZGxscy94MTFkcnYvTWFrZWZpbGUuaW4sIGRsbHMveDExZHJ2L2RjZS5jLAoJICBkbGxzL3gxMWRydi93aW5kb3cuYywgZGxscy94MTFkcnYvd2lucG9zLmMsIGRsbHMveDExZHJ2L3gxMWRydi5oLAoJICBkbGxzL3gxMWRydi94MTFkcnYuc3BlYywgaW5jbHVkZS9kY2UuaCwgaW5jbHVkZS93aW4uaCwKCSAgd2luZG93cy9jbGFzcy5jLCB3aW5kb3dzL2RjZS5jLCB3aW5kb3dzL25vbmNsaWVudC5jLCB3aW5kb3dzL3dpbi5jOgoJTW92ZWQgRENFIHN1cHBvcnQgdG8gdGhlIFgxMSBkcml2ZXIuCgoJKiBkbGxzL2tlcm5lbC92aXJ0dWFsLmM6IE1pa2UgSGVhcm4gPG1pa2VAbmF2aS5jeD4KCURvbid0IGZhdWx0IG9uIE5VTEwgcG9pbnRlcnMgaW4gSXMqUHRyIGZ1bmN0aW9ucy4KCgkqIGRsbHMvb2xlYXV0MzIvdG1hcnNoYWwuYzogTWlrZSBIZWFybiA8bWlrZUBuYXZpLmN4PgoJRml4IFBBUkFNRkxBR19GT1VUIHR5cG8gaW4gdGhlIHRtYXJzaGFsbGVyLgoKCSogZGxscy9tc2kvbXNpLmMsIGRsbHMvbXNpL3JlY29yZC5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJVXNlIHN0cmR1cCwgaW1wbGVtZW50IE1zaURhdGFiYXNlSW1wb3J0QS4KCgkqIGRsbHMvdXNlci9tZW51LmM6IFVscmljaCBDemVrYWxsYSA8dWxyaWNoQGNvZGV3ZWF2ZXJzLmNvbT4KCURvbid0IG1hcCBwb2ludCB0byBwYXJlbnQncyBjbGllbnQgd2luZG93IGJlY2F1c2UgdGhlIHJlc3Qgb2YgdGhlIGNvZGUKCWFzc3VtZXMgc2NyZWVuIGNvb3JkaW5hdGVzLgoKCSogZGxscy91c2VyL3VzZXIzMi5zcGVjLCBkbGxzL3gxMWRydi93aW5kb3cuYywgaW5jbHVkZS93aW4uaCwKCSAgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLCBzZXJ2ZXIvcHJvdG9jb2wuZGVmLAoJICBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvdHJhY2UuYywgc2VydmVyL3dpbmRvdy5jLCB3aW5kb3dzL3dpbi5jOgoJUmVwbGFjZSB0aGUgbGlua193aW5kb3cgcmVxdWVzdCBieSBhIHNldF9wYXJlbnQgcmVxdWVzdCBzaW5jZSB0aGF0IGlzCglhbGwgbGlua193aW5kb3cgaXMgdXNlZCBmb3IgYXQgdGhpcyBwb2ludC4KCUdldCByaWQgb2YgdGhlIFdJTl9MaW5rV2luZG93L1VubGlua1dpbmRvdyBmdW5jdGlvbnMuCgoJKiBkbGxzL2NvbWN0bDMyL3VwZG93bi5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJUHJvcGVyIGhhbmRsaW5nIGZvciBHV0xfU1RZTEUuCglNaW5vciBjbGVhbnVwcy4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRml4IGEgbWVtb3J5IGxlYWsgaW4gdG9vbGJhci4gQXZvaWQgY2FzdHMuCgoJKiBkbGxzL2FkdmFwaTMyL3Rlc3RzL3JlZ2lzdHJ5LmM6IEphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJUmVwbGFjZSBhIHRyYWNlIHdpdGggYSBwcmV2aW91c2x5IHJlbW92ZWQgdGVzdC4KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmMsIGRsbHMvY29tY3RsMzIvc3lzbGluay5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUhhbmRsZSB3UGFyYW0gaW4gV01fUEFJTlQgcHJvcGVybHk6IGlmIG5vbi1udWxsLCBpdCBpcyB0aGUgaGRjIHdlIGFyZQoJc3VwcG9zZWQgdG8gdXNlIHRvIGRyYXcgaW50by4KCgkqIGRsbHMvY29tY3RsMzIvcGFnZXIuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUFkZCBSb2JlcnQgU2hlYXJtYW4ncyBleHBsYW5hdGlvbiBhYm91dCBXTV9OQ1BBSU5ULgoJTW92ZSB0ZXN0aW5nIGNvbW1lbnRzIGluIGEgbW9yZSBhcHByb3ByaWF0ZSBwbGFjZS4KCgkqIGRsbHMvcXVhcnR6L3Rlc3RzL2ZpbHRlcmdyYXBoLmM6IEpha29iIEVyaWtzc29uIDxqYWtvdkB2bWxpbnV4Lm9yZz4KCURvbid0IHJ1biBGaWx0ZXJHcmFwaCB0ZXN0cyBpZiBGaWx0ZXJHcmFwaCBmdW5jdGlvbmFsaXR5IGlzIG5vdAoJYXZhaWxhYmxlLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvdGhyZWFkLmM6IEpha29iIEVyaWtzc29uIDxqYWtvdkB2bWxpbnV4Lm9yZz4KCUZpeCB0aHJlYWQgYWZmaW5pdHkgdGVzdCBmb3IgU01QIG1hY2hpbmVzLgoKCSogZGxscy9uZXRhcGkzMi90ZXN0cy9hY2Nlc3MuYzogSmFrb2IgRXJpa3Nzb24gPGpha292QHZtbGludXgub3JnPgoJTm8gbmVlZCBjb250aW51aW5nIHRlc3RzIGlmIG5vIE5ldFVzZXJHZXRJbmZvLgoKMjAwNS0wMy0yNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMveDExZHJ2L2luaXQuYywgZGxscy94MTFkcnYveHJlbmRlci5jOgoJVHJ5IGEgVHJ1ZUNvbG9yIHZpc3VhbCBpZiBYcmVuZGVyIGZhaWxzIHdpdGggYSBEaXJlY3RDb2xvciBvbmUuCgoJKiBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jLAoJICBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYywgZGxscy9jb21tZGxnL3ByaW50ZGxnMTYuYywKCSAgZGxscy9kM2Q4L3N1cmZhY2UuYywgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLAoJICBkbGxzL2RkcmF3L2RzdXJmYWNlL2RpYi5jLCBkbGxzL2RpbnB1dC9kZXZpY2UuYywKCSAgZGxscy9kaW5wdXQvZGlucHV0X21haW4uYywgZGxscy9kaW5wdXQvbW91c2UuYywKCSAgZGxscy9kbXN0eWxlL2NvbW1hbmR0cmFjay5jLCBkbGxzL2RwbGF5eC9kcGxheS5jLAoJICBkbGxzL2RwbGF5eC9kcGxheXNwLmMsIGRsbHMvZHBsYXl4L2RwbGF5eF9nbG9iYWwuYywKCSAgZGxscy9kcGxheXgvZHBsb2JieS5jLCBkbGxzL2RwbGF5eC9sb2JieXNwLmMsCgkgIGRsbHMvZHBsYXl4L25hbWVfc2VydmVyLmMsIGRsbHMvZ2RpL2VuaG1mZHJ2L2luaXQuYywgZGxscy9nZGkvZm9udC5jLAoJICBkbGxzL2dkaS9nZGkxNi5jLCBkbGxzL2dkaS9tZmRydi9iaXRibHQuYywgZGxscy9nZGkvbWZkcnYvZ3JhcGhpY3MuYywKCSAgZGxscy9nZGkvbWZkcnYvaW5pdC5jLCBkbGxzL2dkaS9wYWxldHRlLmMsIGRsbHMvZ2RpL3BhdGguYywKCSAgZGxscy9pbWFnZWhscC9hY2Nlc3MuYywgZGxscy9pbW0zMi9pbW0uYywgZGxscy9pcGhscGFwaS9pZmVudW0uYywKCSAgZGxscy9pcGhscGFwaS9pcGhscGFwaV9tYWluLmMsIGRsbHMvaXBobHBhcGkvaXBzdGF0cy5jLAoJICBkbGxzL2tlcm5lbC9jb21tLmMsIGRsbHMva2VybmVsL2Zvcm1hdF9tc2cuYywgZGxscy9rZXJuZWwvaGVhcC5jLAoJICBkbGxzL2tlcm5lbC9sb2NhbDE2LmMsIGRsbHMva2VybmVsL25lX3NlZ21lbnQuYywKCSAgZGxscy9rZXJuZWwvcmVzb3VyY2UxNi5jLCBkbGxzL2tlcm5lbC90b29saGVscC5jLAoJICBkbGxzL2x6ZXhwYW5kL2x6ZXhwYW5kX21haW4uYywgZGxscy9tYXBpMzIvdXRpbC5jLCBkbGxzL21wci93bmV0LmMsCgkgIGRsbHMvbXNhY20vaW50ZXJuYWwuYywgZGxscy9tc2Ntcy9wcm9maWxlLmMsIGRsbHMvbXNkbW8vZG1vcmVnLmMsCgkgIGRsbHMvbXNpL2FjdGlvbi5jLCBkbGxzL21zaS9jdXN0b20uYywgZGxscy9tc3ZjcnQvcHJvY2Vzcy5jLAoJICBkbGxzL21zdmlkZW8vbXN2aWRlb19tYWluLmMsIGRsbHMvbmV0YXBpMzIvbmJjbWRxdWV1ZS5jLAoJICBkbGxzL25ldGFwaTMyL25ibmFtZWNhY2hlLmMsIGRsbHMvbmV0YXBpMzIvbmJ0LmMsCgkgIGRsbHMvbmV0YXBpMzIvbmV0Ymlvcy5jLCBkbGxzL29sZWF1dDMyL29sZWF1dC5jLAoJICBkbGxzL29sZWF1dDMyL29sZXBpY3R1cmUuYywgZGxscy9vbGVhdXQzMi90eXBlbGliLmMsCgkgIGRsbHMvb2xlZGxnL2luc29iamRsZy5jLCBkbGxzL3F1YXJ0ei9maWx0ZXJncmFwaC5jLAoJICBkbGxzL3JpY2hlZDIwL2VkaXRvci5oLCBkbGxzL3JwY3J0NC9ycGNydDRfbWFpbi5jLAoJICBkbGxzL3JzYWVuaC9oYW5kbGUuYywgZGxscy9yc2FlbmgvaW1wbGdsdWUuYywgZGxscy9yc2FlbmgvcnNhZW5oLmMsCgkgIGRsbHMvc2VjdXIzMi9zZWN1cjMyLmMsIGRsbHMvc2V0dXBhcGkvZGV2aW5zdC5jLAoJICBkbGxzL3NldHVwYXBpL2Rpc2tzcGFjZS5jLCBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmMsCgkgIGRsbHMvc2hsd2FwaS9pc3RyZWFtLmMsIGRsbHMvc2hsd2FwaS9yZWcuYywgZGxscy9zaGx3YXBpL3JlZ3N0cmVhbS5jLAoJICBkbGxzL3NobHdhcGkvc3RyaW5nLmMsIGRsbHMvc2hsd2FwaS91cmwuYywgZGxscy90dHlkcnYvcGFsZXR0ZS5jLAoJICBkbGxzL3VzZXIvZGRlL21pc2MuYywgZGxscy91c2VyL2V4dGljb24uYywgZGxscy91c2VyL2xpc3Rib3guYywKCSAgZGxscy91c2VyL2xzdHIuYywgZGxscy92bmJ0LnZ4ZC92bmJ0LmMsIGRsbHMvd2luYXNwaS93aW5hc3BpMzIuYywKCSAgZGxscy93aW5lZDNkL3N1cmZhY2UuYywgZGxscy93aW5lcHMvZ2x5cGhsaXN0LmMsIGRsbHMvd2luZXBzL2luaXQuYywKCSAgZGxscy93aW5lcHMvcHMuYywgZGxscy93aW5pbmV0L2ludGVybmV0LmMsIGRsbHMvd2luaW5ldC91cmxjYWNoZS5jLAoJICBkbGxzL3dpbm1tL21jaXNlcS9tY2ltaWRpLmMsIGRsbHMvd2lubW0vd2luZWFsc2EvYXVkaW8uYywKCSAgZGxscy93aW5tbS93aW5lYWxzYS9taWRpLmMsIGRsbHMvd2lubW0vd2luZWF1ZGlvaW8vYXVkaW8uYywKCSAgZGxscy93aW5tbS93aW5lb3NzL2RzY2FwdHVyZS5jLCBkbGxzL3dpbm1tL3dpbmVvc3MvZHNyZW5kZXIuYywKCSAgZGxscy93aW5tbS93aW5tbS5jLCBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGRsbHMveDExZHJ2L2JpdGJsdC5jLAoJICBkbGxzL3gxMWRydi9jbGlwYm9hcmQuYywgZGxscy94MTFkcnYvZGliLmMsIGRsbHMveDExZHJ2L3BhbGV0dGUuYywKCSAgZGxscy94MTFkcnYveGRuZC5jLCBkbGxzL3gxMWRydi94Zm9udC5jLCB3aW5kb3dzL3dpbnByb2MuYzoKCUpha29iIEVyaWtzc29uIDxqYWtvdkB2bWxpbnV4Lm9yZz4KCUdldCByaWQgb2YgSGVhcEFsbG9jIGNhc3RzLgoKCSogZGxscy90dHlkcnYvd25kLmMsIGRsbHMvdXNlci91c2VyMzIuc3BlYywgZGxscy94MTFkcnYvZXZlbnQuYywKCSAgZGxscy94MTFkcnYvd2lucG9zLmMsIHdpbmRvd3Mvd2lucG9zLmM6CglBdm9pZCBjYWxsaW5nIFdJTl9MaXN0Q2hpbGRyZW4gZnJvbSB0aGUgZ3JhcGhpY3MgZHJpdmVycy4KCgkqIHNlcnZlci9xdWV1ZS5jLCB3aW5kb3dzL25vbmNsaWVudC5jLCB3aW5kb3dzL3NweS5jOgoJQWRkZWQgc3VwcG9ydCBmb3IgeGJ1dHRvbnMuCgoJKiBkbGxzL3VzZXIvbWVzc2FnZS5jLCBkbGxzL3gxMWRydi9tb3VzZS5jLCBpbmNsdWRlL3dpbnVzZXIuaDoKCUtldmluIEtvbHR6YXUgPGtldmluQHBsb3Aub3JnPgoJQWRkZWQgZnVsbCBzdXBwb3J0IGZvciB4YnV0dG9ucyAoc2lkZSBtb3VzZSBidXR0b25zKS4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL3BpcGUuYzoKCVRha2UgaW50byBhY2NvdW50IHRoZSBtb3JlIGNvcnJlY3QgYmVoYXZpb3Igb2YgcmVjZW50IExpbnV4IGtlcm5lbHMuCgoJKiBkbGxzL21zaS9tc2kuYywgZGxscy9tc2kvbXNpcXVlcnkuYywgZGxscy9tc2kvcGFja2FnZS5jLAoJICBkbGxzL21zaS9wcmV2aWV3LmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglSZXBsYWNlIGluc3RhbmNlcyBvZiBIZWFwQWxsb2MvTXVsdGlCeXRlVG9XaWRlQ2hhciB3aXRoIHRoZSBpbnRlcm5hbGx5CglkZWZpbmVkIHN0cmR1cEF0b1cuCgoJKiBkbGxzL21zaS9hY3Rpb24uYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUlmIHJ1bm5pbmcgaW4gVUkgbW9kZSwgdGhlbiBkaXNwbGF5IHRoZSBVSSBtb2RlIGRpYWxvZ3MgYXQgdGhlIGVuZCBvZgoJdGhlIGluc3RhbGxzLgoKCSogZGxscy9vbGVhdXQzMi92YXJ0eXBlLmM6CglBbGV4IFZpbGxhY+1zIExhc3NvIDxhX3ZpbGxhY2lzQHBhbG9zYW50by5jb20+CglBZnRlciBGbG9hdC0+c3RyaW5nIGNvbnZlcnNpb24gdmlhIHNwcmludGZXKCksIFZhckRlY0Zyb21SWzR8OF0gaXMKCWZvcmNlZCB0byB1c2UgVVMgbG9jYWxlIGZvciBzdHJpbmctPkRlY2ltYWwgY29udmVyc2lvbiwgdG8gYWdyZWUgd2l0aAoJc3ByaW50ZlcoKS4KCgkqIGRsbHMvYWR2YXBpMzIvdGVzdHMvcmVnaXN0cnkuYzogSmFrb2IgRXJpa3Nzb24gPGpha292QHZtbGludXgub3JnPgoJRml4IHNvbWUgV2luZG93cyA5NSBpc3N1ZXMuCgoJKiBkbGxzL3R0eWRydi93bmQuYywgZGxscy91c2VyL21lbnUuYywgZGxscy91c2VyL21lc3NhZ2UuYywKCSAgZGxscy91c2VyL21zZzE2LmMsIGRsbHMvdXNlci9wYWludGluZy5jLCBkbGxzL3VzZXIvc2Nyb2xsLmMsCgkgIGRsbHMveDExZHJ2L2Rlc2t0b3AuYywgZGxscy94MTFkcnYvd2lucG9zLmMsIGluY2x1ZGUvd2luLmgsCgkgIHdpbmRvd3MvY2xhc3MuYywgd2luZG93cy9kY2UuYywgd2luZG93cy9kZWZkbGcuYywgd2luZG93cy9kaWFsb2cuYywKCSAgd2luZG93cy9tZGkuYywgd2luZG93cy9ub25jbGllbnQuYywgd2luZG93cy93aW4uYywgd2luZG93cy93aW5wb3MuYzoKCURvbid0IG1haW50YWluIGEgY2xpZW50LXNpZGUgV05EIHN0cnVjdHVyZSBmb3IgdGhlIGRlc2t0b3Agd2luZG93LgoJTWFkZSBXSU5fR2V0UHRyIHJldHVybiBXTkRfREVTS1RPUCBpbiB0aGF0IGNhc2UuCgoJKiBkbGxzL21zaS9kaWFsb2cuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJTWFrZSBzdXJlIHRoZXJlJ3Mgb25seSBvbmUgcGxhY2Ugd2UgYWxsb2NhdGUgZGlhbG9nIGNvbnRyb2xzLgoKCSogZGxscy9tc2kvcmVnaXN0cnkuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQ2xlYW4gdXAgcmVnaXN0cnkgZnVuY3Rpb25zLgoKCSogZGxscy9yaWNoZWQyMC93cml0ZXIuYzogUGhpbCBLcnlsb3YgPHBoaWxAbmV3c3Rhci5yaW5ldC5ydT4KCUZpeGVkIFx1IGtleXdvcmQgdG8gb3V0cHV0IHNpZ25lZCAxNi1iaXQgdmFsdWVzLiBBbHNvIGZpeGVkIENQX1NZTUJPTAoJY29udmVyc2lvbiBhbmQgdGhlIGRldGVjdGlvbiBvZiB0aGUgZGVmYXVsdCBmb250J3MgY29kZXBhZ2UuCgoJKiBkbGxzL3d0c2FwaTMyL3d0c2FwaTMyLmM6IEhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJUHJldGVuZCB0aGVyZSBhcmUgMCB0ZXJtaW5hbCBzZXJ2ZXIgc2Vzc2lvbnMgYW5kIHByb2Nlc3Nlcy4KCgkqIGRsbHMvbnRkbGwvcmVsYXkuYzogUmVpbiBLbGF6ZXMgPHdpam5Ad2FuYWRvby5ubD4KCVN1cHBvcnQgcmVsYXkgdHJhY2luZyBvZiBmdW5jdGlvbnMgd2l0aCAxOCBhcmd1bWVudHMuCgoJKiBkbGxzL2RpbnB1dC9rZXlib2FyZC5jLCBkbGxzL2RpbnB1dC9tb3VzZS5jOgoJUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CgktIHVzZSBXSU5FX0RJTlBVVF9LRVlCT0FSRF9NQVhfS0VZUyBpbnN0ZWFkIGhhcmQtY29kZWQgMjU2IHZhbHVlCgktIGJldHRlciB1c2Ugb2YgY3JpdGljYWwgc2VjdGlvbgoJLSBzb21lIGNsZWFudXAgdG8gYmV0dGVyIHVuZGVyc3RhbmQgY29kZSBwYXRocwoJLSBsb2dpYyBjb3JyZWN0aW9uIG9uIFNldFdpbmRvd3NIb29rRXhBL1VuaG9va1dpbmRvd3NIb29rRXggb24KCSAga2V5Ym9hcmQuCgoJKiB0b29scy93aWRsL3BhcnNlci55OiBKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJQWRkZWQgaGFuZGxpbmcgb2YgdW5zaWduZWQgdHlwZS4KCgkqIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglUaGUgZGVwdGggb2YgdGhlIGNvbG91ciBiaXRtYXAgbmVlZHMgdG8gbWF0Y2ggdGhhdCBvZiB0aGUgc2NyZWVuLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglDb21wbGV0ZSB0aGUgdW5pY29kaWZpY2F0aW9uIG9mIGNvbWN0bDMydW5kb2MuCgoyMDA1LTAzLTIzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy91c2VyL2hvb2suYywgZGxscy91c2VyL21lc3NhZ2UuYywgaW5jbHVkZS93aW4uaCwgd2luZG93cy91c2VyLmMsCgkgIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3Mvd2lucHJvYy5jOgoJR2V0IHJpZCBvZiB0aGUgd2luZG93IGxvY2sgc3VzcGVuZCBtZWNoYW5pc20uCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWJvZXguYywgZGxscy9jb21jdGwzMi9oZWFkZXIuYywKCSAgZGxscy9jb21jdGwzMi9saXN0dmlldy5jLCBkbGxzL2NvbWN0bDMyL21vbnRoY2FsLmMsCgkgIGRsbHMvY29tY3RsMzIvcmViYXIuYywgZGxscy9jb21jdGwzMi90YWIuYywgZGxscy9jb21tZGxnL2NvbG9yZGxnLmMsCgkgIGRsbHMvY29tbWRsZy9jb2xvcmRsZzE2LmMsIGRsbHMvY29tbWRsZy9maWxlZGxnLmMsCgkgIGRsbHMvY29tbWRsZy9maWxlZGxnYnJvd3Nlci5jLCBkbGxzL2QzZDgvZDNkOF9wcml2YXRlLmgsCgkgIGRsbHMvZDNkOC9kZXZpY2UuYywgZGxscy9kM2Q5L3N1cmZhY2UuYywgZGxscy9kYmdoZWxwL2VsZl9tb2R1bGUuYywKCSAgZGxscy9kYmdoZWxwL21pbmlkdW1wLmMsIGRsbHMvZG1iYW5kL2JhbmQuYywKCSAgZGxscy9kbXN0eWxlL3N0eWxldHJhY2suYywgZGxscy9kcGxheXgvZHBsYXkuYywKCSAgZGxscy9kcGxheXgvZHBsb2JieS5jLCBkbGxzL2dkaS9lbmhtZXRhZmlsZS5jLCBkbGxzL2tlcm5lbC9pbnN0ci5jLAoJICBkbGxzL21hcGkzMi9wcm9wLmMsIGRsbHMvbXNjbXMvcHJvZmlsZS5jLCBkbGxzL21zaS9hcHBzZWFyY2guYywKCSAgZGxscy9tc3JsZTMyL21zcmxlMzIuYywgZGxscy9udGRsbC9maWxlLmMsIGRsbHMvbnRkbGwvc2VydmVyLmMsCgkgIGRsbHMvb2xlMzIvZXJyb3JpbmZvLmMsIGRsbHMvb2xlMzIvaGdsb2JhbHN0cmVhbS5jLAoJICBkbGxzL29sZTMyL21lbWxvY2tieXRlcy5jLCBkbGxzL29sZTMyL21lbWxvY2tieXRlczE2LmMsCgkgIGRsbHMvb2xlMzIvb2xlcHJveHkuYywgZGxscy9vbGUzMi9zdG9yYWdlMzIuaCwKCSAgZGxscy9vbGVhdXQzMi9zYWZlYXJyYXkuYywgZGxscy9vbGVhdXQzMi90eXBlbGliLmMsCgkgIGRsbHMvc2hlbGwzMi9hdXRvY29tcGxldGUuYywgZGxscy9zaGVsbDMyL2NwYW5lbGZvbGRlci5jLAoJICBkbGxzL3NoZWxsMzIvbWVtb3J5c3RyZWFtLmMsIGRsbHMvc2hlbGwzMi9waWRsLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbGZvbGRlci5oLCBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYywKCSAgZGxscy9zaGVsbDMyL3NoZmxkcl9mcy5jLCBkbGxzL3NoZWxsMzIvc2hmbGRyX215Y29tcC5jLAoJICBkbGxzL3NoZWxsMzIvc2hsZXhlYy5jLCBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGxtZW51LmMsIGRsbHMvc2hlbGwzMi9zaHZfYmdfY21lbnUuYywKCSAgZGxscy9zaGx3YXBpL29yZGluYWwuYywgZGxscy9zaGx3YXBpL3JlZy5jLCBkbGxzL3VzZXIvZWRpdC5jLAoJICBkbGxzL3VzZXIvdGVzdHMvc3lzcGFyYW1zLmMsIGRsbHMvd2luZWQzZC9iYXNldGV4dHVyZS5jLAoJICBkbGxzL3dpbmVkM2QvZGV2aWNlLmMsIGRsbHMvd2luZWQzZC9kaXJlY3R4LmMsIGRsbHMvd2luZXBzL2VzY2FwZS5jLAoJICBkbGxzL3dpbmluZXQvaHR0cC5jLCBkbGxzL3dpbm1tL3dpbmVhbHNhL21pZGkuYywKCSAgZGxscy93aW5tbS93aW5lb3NzL21pZGkuYywgZG9jdW1lbnRhdGlvbi9vbGUuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi93aW5lZGV2LWtlcm5lbC5zZ21sLCBpbmNsdWRlL29iamJhc2UuaCwKCSAgaW5jbHVkZS93aW5udC5oLCBsaWJzL3dpbmUvbG9hZGVyLmMsIHByb2dyYW1zL3dpbmVkYmcvYnJlYWsuYywKCSAgdG9vbHMvZm9udF9jb252ZXJ0LnNoLCB0b29scy93cmMvbmV3c3RydWMuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQXNzb3J0ZWQgc3BlbGxpbmcgZml4ZXMuCgoJKiBkbGxzL2FkdmFwaTMyL2V2ZW50bG9nLmM6IEhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJUHJldGVuZCB0aGVyZSBhcmUgMCBsb2cgcmVjb3Jkcy4KCUltcHJvdmUgdHJhY2VzLgoKCSogZGxscy94MTFkcnYvY2xpcGJvYXJkLmM6IFJvbiBKZW5zZW4gPGV0ZWNoQGplbnRyb25pY3MuY29tPgoJQXZvaWQgYmFkIHZpc3VhbCBlcnJvcnMgaW4gdGhyZWFkX3NlbGVjdGlvbl93bmQoKS4KCgkqIGRsbHMvdHR5ZHJ2L3duZC5jLCBkbGxzL3VzZXIvdXNlcjMyLnNwZWMsIGRsbHMveDExZHJ2L3dpbnBvcy5jOgoJR2V0IHJpZCBvZiB0aGUgcmVtYWluaW5nIFdJTl9GaW5kV25kUHRyIGNhbGxzLgoKCSogZGxscy9hZHZhcGkzMi90ZXN0cy9yZWdpc3RyeS5jOiBKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCUFkZCBSZWdTYXZlS2V5LCBSZWdMb2FkS2V5IHRlc3RzLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOgoJSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCU1ha2UgdGhlIHRyZWV2aWV3IGNvcnJlY3RseSBzZWFyY2ggd2hlbiB0aGUgdG9wIGluZGV4IGlzIHNlbGVjdGVkLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvcGlwZS5jOgoJQWxleCBWaWxsYWPtcyBMYXNzbyA8YV92aWxsYWNpc0BwYWxvc2FudG8uY29tPgoJVGVzdCBmb3IgUGVla05hbWVkUGlwZSB3aXRoIHplcm8tbGVuZ3RoIGJ1ZmZlci4KCgkqIGRsbHMvd2lubW0vd2luZWFsc2EvYXVkaW8uYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCURvbid0IGZhaWwgd2hlbiBvcGVuaW5nIGEgZGV2aWNlIGluIGRpcmVjdCBzb3VuZCBtb2RlLiBSYXRoZXIsIHRyeQoJYWx0ZXJuYXRlIGZvcm1hdHMgZmlyc3QgYmVmb3JlIGZhaWxpbmcuCgoJKiBkbGxzL250ZGxsL3ZlcnNpb24uYzogQy4gU2NvdHQgQW5hbmlhbiA8Y3Njb3R0QGNzY290dC5uZXQ+CglUZWFjaCBWRVJTSU9OX0dldExpbmtlZERMTFZlcnNpb24gYWJvdXQgTWluZ3czMiBhcHBsaWNhdGlvbnMuCgoJKiBkbGxzL3VzZXIvbWVzc2FnZS5jLCBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsCgkgIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci9xdWV1ZS5jLCBzZXJ2ZXIvcmVxdWVzdC5oLAoJICBzZXJ2ZXIvdHJhY2UuYzoKCUNyZWF0ZSBhIG5ldyBzZXJ2ZXIgcmVxdWVzdCBmb3IgYWNjZXB0aW5nIGhhcmR3YXJlIG1lc3NhZ2VzIGluc3RlYWQgb2YKCWFidXNpbmcgcmVwbHlfbWVzc2FnZS4KCUFsbG93IHBhc3NpbmcgdGhlIGRldGVybWluZWQgd2luZG93IGZvciBhIGhhcmR3YXJlIG1lc3NhZ2UgYmFjayB0byB0aGUKCXNlcnZlciB0byBoYXZlIGl0IHJlZGlzcGF0Y2ggdGhlIG1lc3NhZ2UgdG8gdGhlIGNvcnJlY3QgdGhyZWFkLgoKCSogZGxscy91c2VyL3Rlc3RzL3dpbi5jLCBkbGxzL3gxMWRydi93aW5kb3cuYywgd2luZG93cy93aW4uYzoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gV2luZG93IHN0eWxlcyBwYXNzZWQgdG8gQ3JlYXRlV2luZG93RXggbXVzdCB0aGUgc2FtZSBhcyBwYXNzZWQgaW4KCSAgQ1JFQVRFU1RSVUNUIGZvciBXTV9DUkVBVEUvV01fTkNDUkVBVEUuCgktIEZpeCBjYXNlcyB3aGVyZSBXU19FWF9XSU5ET1dFREdFIHN0eWxlIGlzIGFwcGxpZWQuCgktIFRlc3RzIGZvciB0aGUgYWJvdmUuCgoJKiBkbGxzL21zaS9tc2kuYywgZGxscy9tc2kvbXNpLnNwZWM6IE1hcmN1cyBNZWlzc25lciA8bWVpc3NuZXJAc3VzZS5kZT4KCUZpeGVkIE1zaURhdGFiYXNlSW1wb3J0QSwgTXNpRGF0YWJhc2VJbXBvcnRXLCBhbmQKCU1zaUNyZWF0ZUFuZFZlcmlmeUluc3RhbGxlckRpcmVjdG9yeSBzdHViIHBhcmFtZXRlciBjb3VudHMuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglDb21wbGV0ZSB1bmljb2RpZmljYXRpb24gb2YgdGhlIHRyZWV2aWV3IGNvbW1vbiBjb250cm9sLgoKCSogZGxscy9jb21jdGwzMi90b29sdGlwcy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQ29tcGxldGUgdW5pY29kaWZpY2F0aW9uIG9mIHRoZSB0b29sdGlwcyBjb21tb24gY29udHJvbC4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQ29tcGxldGUgdW5pY29kaWZpY2F0aW9uIG9mIHRoZSB0b29sYmFyIGNvbW1vbiBjb250cm9sLgoJTW92ZSBhIGhlYWRlciBjb21tZW50IGZvciBjb25zaXN0ZW5jeSB3aXRoIHRoZSBvdGhlciBjb250cm9scy4KCVZlcnkgc21hbGwgYWxpZ25tZW50IGZpeGVzLgoKCSogZGxscy9jb21jdGwzMi9yZWJhci5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQ29tcGxldGUgdW5pY29kaWZpY2F0aW9uIG9mIHRoZSByZWJhciBjb21tb24gY29udHJvbC4KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglDb21wbGV0ZSB1bmljb2RpZmljYXRpb24gb2YgdGhlIHByb3BzaGVldCBjb21tb24gY29udHJvbC4KCgkqIGRsbHMvY29tY3RsMzIvaGVhZGVyLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglDb21wbGV0ZSB1bmljb2RpZmljYXRpb24gb2YgdGhlIGhlYWRlciBjb21tb24gY29udHJvbC4KCgkqIGRsbHMvY29tY3RsMzIvZmxhdHNiLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglDb21wbGV0ZSB1bmljb2RpZmljYXRpb24gb2YgdGhlIGZsYXRzYiBjb21tb24gY29udHJvbC4KCgkqIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUNvbXBsZXRlIHVuaWNvZGlmaWNhdGlvbi4KCgkqIGRsbHMvd2lubW0vd2luZWFsc2EvYXVkaW8uYzogSmVyZW15IFdoaXRlIDxqd2hpdGVAY29kZXdlYXZlcnMuY29tPgoJUmV2YW1wIHRoZSB2b2x1bWUgbG9naWMgdG8gYmUgbW9yZSBzZWxmIGNvbnRhaW5lZCwgZml4IGEgZmV3IGJ1Z3Mgc28KCXRoYXQgdGhlIHZvbHVtZSBpcyBjb3JyZWN0bHkgcmVhZCwgYW5kIGlzIGNvcnJlY3RseSBjb252ZXJ0ZWQgdG8KCXdpbmRvd3Mgc3R5bGUgdm9sdW1lIG51bWJlcnMuCgoyMDA1LTAzLTIyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy91c2VyL21lc3NhZ2UuYzoKCVNpbXBsaWZ5IGhhcmR3YXJlIG1lc3NhZ2UgcHJvY2Vzc2luZyBieSBtZXJnaW5nIHRoZSAicmF3IiBhbmQgImNvb2tlZCIKCXByb2Nlc3NpbmcgaW50byBhIHNpbmdsZSBmdW5jdGlvbi4KCgkqIGRsbHMveDExZHJ2L2Rlc2t0b3AuYywgZGxscy94MTFkcnYvbW91c2UuYywgZGxscy94MTFkcnYvd2luZG93LmMsCgkgIGRsbHMveDExZHJ2L3dpbnBvcy5jOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglGaXggc29tZSAtV3NpZ24tY29tcGFyZSBhbmQgLVd1bmluaXRpYWxpemVkIHdhcm5pbmdzLgoKCSogZGxscy9rZXJuZWwvdmlydHVhbC5jOiBNaWtlIEhlYXJuIDxtaWtlQG5hdmkuY3g+CglMb2cgdG8gK3NlaCB3aGVuIGFuIElzQmFkKiBmdW5jdGlvbiBmYXVsdHMuCgoJKiBkbGxzL3NoZWxsMzIvdGVzdHMvc2hsZmlsZW9wLmM6IEpha29iIEVyaWtzc29uIDxqYWtvdkB2bWxpbnV4Lm9yZz4KCUlmIHRoZSBkZXZpY2UgZ2V0cyBpbnRlcnJ1cHRlZCwgd2UganVzdCBnaXZlIHVwLgoKCSogZGxscy9kc291bmQvdGVzdHMvZHNvdW5kOC5jOiBKYWtvYiBFcmlrc3NvbiA8amFrb3ZAdm1saW51eC5vcmc+CglUZXN0IGZpeC4KCgkqIHdpbmRvd3MvY3Vyc29yaWNvbi5jLCB3aW5kb3dzL3dpbnByb2MuYzoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglFbGltaW5hdGUgdXNlbGVzcyBIZWFwQWxsb2MoKSBjYXN0cy4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL2ZpbGUuYzoKCUZldGNoIGFnYWluIHRoZSBmaWxlIHRpbWUgdG8gY29tcGFyZSBhZ2FpbnN0IHRvIGF2b2lkIHJvdW5kaW5nIGVycm9ycy4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL3BpcGUuYzogSmFrb2IgRXJpa3Nzb24gPGpha292QHZtbGludXgub3JnPgoJQWJvcnQgaWYgd2UgY2FuJ3QgY3JlYXRlIGEgbmFtZWQgcGlwZSBhdCBhbGwuCgoJKiBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmMsIGRsbHMvY29tY2F0L2luZm9ybWF0aW9uLmMsCgkgIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jLCBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmMsCgkgIGRsbHMvb2xlMzIvdGVzdHMvbWFyc2hhbC5jLCBkbGxzL3NobHdhcGkvdGVzdHMvcGF0aC5jLAoJICBkbGxzL3dpbmluZXQvdGVzdHMvaHR0cC5jOgoJSmFrb2IgRXJpa3Nzb24gPGpha292QHZtbGludXgub3JnPgoJRWxpbWluYXRlIEhlYXBBbGxvYyBjYXN0cy4KCgkqIGRsbHMva2VybmVsL3N5bmMuYzogQWxleCBWaWxsYWPtcyBMYXNzbyA8YV92aWxsYWNpc0BwYWxvc2FudG8uY29tPgoJUGVla05hbWVkUGlwZSBub3cgY2hlY2tzIGJvdGggZm9yIGEgTlVMTCBidWZmZXIgYW5kIGEgemVyby1sZW5ndGgKCWJ1ZmZlciBiZWZvcmUgdHJ5aW5nIHRvIHJlY3YoKSBmcm9tIHRoZSBwaXBlLgoKCSogZGxscy9zaGx3YXBpL3Rlc3RzL3NocmVnLmM6IEpha29iIEVyaWtzc29uIDxqYWtvdkB2bWxpbnV4Lm9yZz4KCU1vcmUgdHJhY2UgaW5mby4KCgkqIGRsbHMvc2hlbGwzMi90ZXN0cy9zdHJpbmcuYzogSmFrb2IgRXJpa3Nzb24gPGpha292QHZtbGludXgub3JnPgoJU3RyUmV0VG9TdHJOQVcgcmV0dXJucyBvayBvbiBOVDQsIHRob3VnaCBpdCBzaG91bGQgcmV0dXJuIEZBTFNFLgoKCSogZGxscy9vbGUzMi90ZXN0cy9zdG9yYWdlMzIuYzogSmFrb2IgRXJpa3Nzb24gPGpha292QHZtbGludXgub3JnPgoJTW9yZSB0cmFjZSBpbmZvIGZyb20gc3RvcmFnZTMyIHRlc3QuCgoJKiBkbGxzL250ZGxsL3Rlc3RzL2Vudi5jOiBKYWtvYiBFcmlrc3NvbiA8amFrb3ZAdm1saW51eC5vcmc+CglNb3JlIHRyYWNlIGluZm8uCgoJKiB3aW5kb3dzL3dpbnBvcy5jOiBVbHJpY2ggQ3pla2FsbGEgPHVscmljaEBjb2Rld2VhdmVycy5jb20+CglVc2UgR2V0QW5jZXN0b3IgaW5zdGVhZCBvZiBHZXRQYXJlbnQuCgoJKiBkbGxzL250ZGxsL3RpbWUuYzogUnVzdGFtIENoZXJub3RrYWNoIDxydXN0aWtAdWZwcy5jaHVrb3RrYS5ydT4KCUFkZGVkIHN1cHBvcnQgZm9yIEFOQVQgKEFuYWR5ciBTdGFuZGFyZCBUaW1lKSB0byBUWl9JTkZPLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvZW52aXJvbi5jOiBKYWtvYiBFcmlrc3NvbiA8amFrb3ZAdm1saW51eC5vcmc+CglJZiB0aGUgdmFyaWFibGUgZG9lcyBub3QgZXhpc3QsIGp1c3QgcmV0dXJuLgoKCSogZGxscy9tc2kvdGVzdHMvcmVjb3JkLmM6IEpha29iIEVyaWtzc29uIDxqYWtvdkB2bWxpbnV4Lm9yZz4KCVdpbmRvd3MgOTggZG9lc24ndCBsaWtlIGl0IHdoZW4gd2UgZGVsZXRlIHRoZSB0ZW1wZmlsZS4KCgkqIGRsbHMvbXNpL3Rlc3RzL2RiLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglUZXN0IHBhY2thZ2UgY3JlYXRpb24uCgoJKiBkbGxzL3VzZXIvdGVzdHMvbXNnLmMsIHdpbmRvd3MvbWRpLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJSWYgYW4gTURJIGNoaWxkIGJlY29tZXMgYWN0aXZlIHJlc3RvcmUgcHJldmlvdXNseSBtYXhpbWl6ZWQgTURJCgljaGlsZC4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL2ZpbGUuYzogSmFrb2IgRXJpa3Nzb24gPGpha292QHZtbGludXgub3JnPgoJRml4IHBhdGNoaW5nIGVycm9yIGluIGZpbGUgdGltZSB0ZXN0LgoKCSogZGxscy94MTFkcnYva2V5Ym9hcmQuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBzdXBwb3J0IGZvciBTZXJiaWFuIGN5cmlsbGljIFgxMSBrZXlib2FyZCBsYXlvdXQuCgoJKiBsb2FkZXIvcHJlbG9hZGVyLmM6IE1pa2UgSGVhcm4gPG1pa2VAbmF2aS5jeD4KCUluY3JlYXNlIFBFIHJlc2VydmUgYXJlYSBzaXplIHRvIDUxMk1iLgoKCSogZGxscy9yaWNoZWQyMC9lZGl0b3IuYywgZGxscy9yaWNoZWQyMC9lZGl0c3RyLmgsCgkgIGRsbHMvcmljaGVkMjAvcmVhZGVyLmMsIGRsbHMvcmljaGVkMjAvcnRmLmgsIGRsbHMvcmljaGVkMjAvd3JpdGVyLmM6CglQaGlsIEtyeWxvdiA8cGhpbEBuZXdzdGFyLnJpbmV0LnJ1PgoJTWFkZSBSVEYgcmVhZGVyIGFuZCB3cml0ZXIgaGFuZGxlIGNvZGVwYWdlcyBtb3N0bHkgc2ltaWxhciB0byB0aGUKCW9yaWdpbmFsIHJpY2hlZDIwLmRsbC4KCgkqIGRsbHMvdXNlci9lZGl0LmMsIGRsbHMvdXNlci90ZXN0cy9lZGl0LmM6CglDLiBTY290dCBBbmFuaWFuIDxjc2NvdHRAY3Njb3R0Lm5ldD4KCUVESVRfRU1fU2V0U2VsOiBPbGQvbmV3IHNlbGVjdGlvbiByYW5nZSBvcmRlcmluZyBjb2RlIHdvdWxkIGJyZWFrIHdoZW4KCW9sZF9lbmQgPCBzdGFydCA8IGVuZCA8IG9sZF9zdGFydC4KCVJlc2V0IEVGX1VQREFURSBmbGFnIGFmdGVyIHdlJ3ZlIHNlbnQgdGhlIHVwZGF0ZS4KCgkqIGRsbHMvbXNpL21zaS5yYywgZGxscy9tc2kvbXNpX05sLnJjLCBkbGxzL3NoZG9jdncvTmwucmMsCgkgIGRsbHMvc2hkb2N2dy9zaGRvY3Z3LnJjOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglEdXRjaCByZXNvdXJjZSB0cmFuc2xhdGlvbi4KCgkqIGRsbHMvYWR2YXBpMzIvdGVzdHMvc2VjdXJpdHkuYzogSmFrb2IgRXJpa3Nzb24gPGpha292QHZtbGludXgub3JnPgoJRml4IGZvciBOVDQgYmVoYXZpb3VyLgoKMjAwNS0wMy0yMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMveDExZHJ2L21vdXNlLmMsIGRsbHMveDExZHJ2L3dpbnBvcy5jLCBkbGxzL3gxMWRydi94MTFkZHJhdy5jLAoJICBkbGxzL3gxMWRydi94MTFkcnYuaCwgZGxscy94MTFkcnYveDExZHJ2X21haW4uYywKCSAgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLCBzZXJ2ZXIvcHJvdG9jb2wuZGVmLAoJICBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvdHJhY2UuYywgc2VydmVyL3dpbmRvdy5jOgoJVHJ5IHRvIGFsd2F5cyBrZWVwIHRoZSBzZXJ2ZXIgd2luZG93IFotb3JkZXIgaW4gc3luYyB3aXRoIHRoZSBYMTEgb25lCgl1c2luZyBhIGhldXJpc3RpYyBiYXNlZCBvbiBtb3VzZSBhbmQgZXhwb3NlIGV2ZW50cy4KCgkqIGRsbHMvd2luaW5ldC91cmxjYWNoZS5jLCBpbmNsdWRlL3dpbmluZXQuaDoKCVRyb3kgUm9sbG8gPHdpbmVAdHJveS5yb2xsby5uYW1lPgoJSW1wbGVtZW50IENyZWF0ZVVybENhY2hlRW50cnlXIGFuZCBDb21taXRVcmxDYWNoZUVudHJ5Vy4gUmVwbGFjZSB0aGUKCWV4aXN0aW5nICdBJyB2ZXJzaW9ucyB3aXRoIGNhbGxzIHRvIHRoZSAnVycgdmVyc2lvbnMuCgoJKiBkbGxzL3dpbm1tL3dpbmVhbHNhL2F1ZGlvLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglGaXggZGlyZWN0IHNvdW5kIGNhcGFiaWxpdGllcyB0byBtYXRjaCBoYXJkd2FyZS4KCgkqIHByb2dyYW1zL3dpbmVicm93c2VyL21haW4uYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCB1c2FnZSBwcmludGYuCgoJKiBkbGxzL3dpbm1tL3dpbmVhbHNhL2F1ZGlvLmM6IEZpeGVkIGEgbWlzc2luZyBwYXRjaCBjaHVuay4KCgkqIGRsbHMvY29tY3RsMzIvYW5pbWF0ZS5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJUHVsbCB0aGUgV01fVElNRVIgaGFuZGxpbmcgaW50byBpdHMgb3duIGZ1bmN0aW9uLgoJQU5JTUFURV9EcmF3RnJhbWUgc2hvdWxkbid0IHdvcnJ5IGFib3V0IGxvY2tpbmcsIHRoZSBsb2NrIHNob3VsZCBiZQoJaGVsZCBieSB0aGUgY2FsbGVyLgoKCSogZGxscy9vbGUzMi9jbGlwYm9hcmQuYywgZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvZXJyb3JpbmZvLmMsCgkgIGRsbHMvb2xlMzIvZnRtYXJzaGFsLmMsIGRsbHMvb2xlMzIvb2xlb2JqLmMsCgkgIGRsbHMvb2xlMzIvc3RnX2JpZ2Jsb2NrZmlsZS5jLCBkbGxzL29sZTMyL3N0b3JhZ2UzMi5jLAoJICBkbGxzL3NoZWxsMzIvYXV0b2NvbXBsZXRlLmMsIGRsbHMvc2hlbGwzMi9lbnVtaWRsaXN0LmMsCgkgIGRsbHMvc2hlbGwzMi9mb2xkZXJzLmMsIGRsbHMvc2hlbGwzMi9zaGVsbC5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYywgZGxscy9zaGVsbDMyL3NobG1lbnUuYywKCSAgZGxscy9zaGVsbDMyL3NobHZpZXcuYywgZGxscy9zaGVsbDMyL3Nodl9iZ19jbWVudS5jLAoJICBkbGxzL3NoZWxsMzIvc2h2X2l0ZW1fY21lbnUuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUVsaW1pbmF0ZSBjYXN0cyBvZiB0aGUgcmV0dXJuIHZhbHVlIG9mIEhlYXBBbGxvYy4KCgkqIGRsbHMvcmljaGVkMjAvcmVhZGVyLmMsIGRsbHMvcmljaGVkMjAvcnRmLmg6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglSZW1vdmUgY2FzdHMgYW5kIHVudXNlZCBjb2RlLgoKCSogcHJvZ3JhbXMvcmVnZWRpdC9jaGlsZHduZC5jLCBwcm9ncmFtcy9yZWdlZGl0L2ZyYW1ld25kLmMsCgkgIHByb2dyYW1zL3JlZ2VkaXQvbWFpbi5oOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJQWx3YXlzIGRpc3BsYXkgcGF0aCBpbiBzdGF0dXMgYmFyLgoKCSogcHJvZ3JhbXMvd2luZWJyb3dzZXIvbWFpbi5jOiBIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCVByZXZlbnQgY3Jhc2ggd2hlbiBubyBVUkwgaXMgc3BlY2lmaWVkLgoKCSogZGxscy93aW5zb2NrL3Rlc3RzL3NvY2suYzogVGhvbWFzIEtobyA8dGhvbWFza2hvQGdtYWlsLmNvbT4KCUFkZGVkIHRlc3RzIGZvciBzZW5kdG8sIHJlY3Zmcm9tLCBhbmQgZ2V0c2VydmJ5bmFtZS4KCgkqIGRsbHMvd2lubW0vd2luZWFsc2EvYXVkaW8uYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUNsZWFuIHVwIGhhbmRsZSB1c2FnZS4KCgkqIGRsbHMveDExZHJ2L3dpbnBvcy5jOgoJRG9uJ3QgdHJ5IHRvIHJlc3luYyBaLW9yZGVyIG9uIENvbmZpZ3VyZU5vdGlmeSBldmVudHMsIHRoaXMgY2Fubm90Cgl3b3JrIHJpZ2h0IGFueXdheS4KCgkqIGRsbHMvYXZpZmlsMzIvYXBpLmMsIGRsbHMvaXRzcy9pdHNzLmMsIGRsbHMvb2xlMzIvY29tcG9iai5jLAoJICBkbGxzL3R3YWluL3R3YWluMTZfbWFpbi5jLCBkbGxzL3dpbm1tL21tc3lzdGVtLmM6CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglDb3JyZWN0IGFuZCBjb21wbGV0ZSBzb21lIGFwaSBkb2N1bWVudGF0aW9uLgoKCSogZGxscy9zaGx3YXBpL3Rlc3RzL3BhdGguYywgZGxscy9zaGx3YXBpL3VybC5jOgoJVHJveSBSb2xsbyA8d2luZUB0cm95LnJvbGxvLm5hbWU+CglDb3JyZWN0aW9ucyB0byBVcmxJc1cgYW5kIFVybElzQS4KCVVSTF9JU19PUEFRVUUgcmVzdWx0cyBkZXBlbmQgb25seSBvbiB0aGUgc2NoZW1lLCBub3Qgb24gdGhlIFVSTC4KCVVSTF9JU19GSUxFVVJMIGFsc28gb25seSBkZXBlbmRzIG9uIHRoZSBzY2hlbWUgKCJmaWxlOiIpLgoKCSogZGxscy94MTFkcnYvcGFsZXR0ZS5jOiBHbGVubiBXdXJzdGVyIDxnd3Vyc3RlckBzY3MuY2FybGV0b24uY2E+CglSZW1vdmUgYnJlYWsgc3RhdGVtZW50cyBtaXNzZWQgaW4gbGFzdCBwYXRjaC4KCgkqIHRvb2xzL3dpbmFwaS93aW4xNi5hcGksIHRvb2xzL3dpbmFwaS93aW4zMi5hcGk6CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglUZWFjaCB3aW5hcGkgYWJvdXQgdHlwZXMgbmV3bHkgdXNlZCBpbiB2YXJpb3VzIGRsbHMuCgoJKiB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2Z1bmN0aW9uLnBtLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2xvY2FsLnBtLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX3BhcnNlci5wbToKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCVRlYWNoIHdpbmFwaV9jaGVjayBhYm91dCBvdGhlciBjYWxsaW5nIGNvbnZlbnRpb24gc2hvcnRoYW5kcyAodGhleSBhbGwKCWFyZSByZWFsbHkgc3RkY2FsbCkuCgoJKiBkbGxzL3dpbmVkM2Qvd2luZWQzZC5zcGVjOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJV2luZURpcmVjdDNEQ3JlYXRlIGhhcyAzIGFyZ3MgaW4gdGhlIHNvdXJjZS4KCgkqIGRsbHMvbnRkbGwvbG9hZGVyLmMsIGRsbHMvcmljaGVkMjAvZWRpdG9yLmM6CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglVc2UgIiIgZm9yIFdpbmRvd3MgaW5jbHVkZXMgaW4gZGxscywgaW5zdGVhZCBvZiA8Pi4KCgkqIGRsbHMvYXRsL3JlZ2lzdHJhci5jOiBKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJS2V5IHdvcmRzIGFuZCByZXBsYWNlbWVudHMgYXJlIGNhc2UgaW5zZW5zaXRpdmUuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCWlTZWxlY3RlZEltYWdlIGlzIGFsbG93ZWQgdG8gYmUgMC4KCgkqIGRsbHMvc2hsd2FwaS9yZWcuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJRml4IFNIQ29weUtleSB0byB0cmVhdCBzdHJpbmcgcGFyYW1ldGVyIGNvcnJlY3RseSBhcyBzb3VyY2UgcGF0aAoJaW5zdGVhZCBvZiBkZXN0aW5hdGlvbiBwYXRoLgoKCSogZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jLCBkbGxzL2F2aWZpbDMyL2FwaS5jLAoJICBkbGxzL3dpbmluZXQvdXJsY2FjaGUuYywgZGxscy93dHNhcGkzMi93dHNhcGkzMi5jLCBpbmNsdWRlL2FjbGFwaS5oLAoJICBpbmNsdWRlL3Zmdy5oLCBpbmNsdWRlL3d0c2FwaTMyLmg6CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglGaXhlZCBzb21lIGNhbGxpbmcgY29udmVudGlvbnMuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWJvZXguYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUNvbXBsZXRlIHVuaWNvZGlmaWNhdGlvbi4KCgkqIGRsbHMvY29tY3RsMzIvcGFnZXIuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVByb3BlciBoYW5kbGluZyBmb3IgR1dMX1NUWUxFLgoJU3RvcmUgYW5kIHVzZSBod25kU2VsZiBpbiB0aGUgUEFHRVJfSU5GTy4KCVBhc3MgdGhlIGluZm9QdHIgYXJvdW5kIGluc3RlYWQgb2YgaHduZC4KCVVzZSBwcm9wZXIgdHlwZXMgaW4gdGhlIGZ1bmN0aW9uIHNpZ25hdHVyZXMuCglGaXggYSBmZXcgcmV0dXJuIHN0YXRlbWVudHMuCgoJKiBkbGxzL29sZTMyL3N0b3JhZ2UzMi5jOiBUcm95IFJvbGxvIDx3aW5lQHRyb3kucm9sbG8ubmFtZT4KCUZpeCB0ZXN0IGZvciBTVEdNX1NIQVJFX0VYQ0xVU0lWRSBvbiBuYW1lbGVzcyBEb2NGaWxlcy4KCgkqIHByb2dyYW1zL3JlZ2VkaXQvbGlzdHZpZXcuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBBZGQgaWNvbnMgZm9yIHRoZSB2YWx1ZSBwYW5lLgoJLSBEaXNwbGF5IFJFR19NVUxUSV9TWiB2YWx1ZXMuCgktIE1ha2UgdGhlIGxhY2sgb2Ygc3VwcG9ydCBmb3IgY2VydGFpbiB2YWx1ZSB0eXBlcyBtb3JlIG5vdGljZWFibGUgdG8KCSAgdGhlIHVzZXIuCgoJKiBwcm9ncmFtcy9yZWdlZGl0L2VkaXQuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBEaXNwbGF5IGFuIGVycm9yIG1lc3NhZ2UgaWYgYW55IGVkaXQgb3BlcmF0aW9uIGZhaWxzLgoJLSBNYWtlIGtleSByZW5hbWluZyBmYWlsIGlmIHRoZSBkZXN0aW5hdGlvbiBrZXkgYWxyZWFkeSBleGlzdHMuCgktIEJldHRlciBlcnJvciByZWNvdmVyeSBpbiB0aGUgY2FzZSB3aGVyZSBTSENvcHlLZXkgZmFpbHMuCgoJKiBkbGxzL2RkcmF3L2RjbGlwcGVyL21haW4uYzogQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJUmVtb3ZlZCB3cm9uZyBGSVhNRXMuCgoJKiBkbGxzL3dpbm1tL2RyaXZlci5jLCBkbGxzL3dpbm1tL21jaS5jOgoJRmlsaXAgTmF2YXJhIDx4bmF2YXJhQHZvbG55LmN6PgoJU3BlY2lmeSBjb3JyZWN0IGJ1ZmZlciBzaXplIGluIEdldFByaXZhdGVQcm9maWxlU3RyaW5nVyBjYWxscy4KCgkqIGRsbHMvbnRkbGwvZmlsZS5jOiBJdmFuIExlbyBQdW90aSA8aXZhbmxlb0BnbWFpbC5jb20+CglJbXByb3ZlIHBhcmFtZXRlciBjaGVja2luZyBpbiBOdENyZWF0ZUZpbGUuCglBZGQgZG9jdW1lbnRhdGlvbiBmb3IgZWFfYnVmZmVyIGFuZCBlYV9sZW5ndGguCgoJKiBkbGxzL2RkcmF3L2RzdXJmYWNlL2RpYi5jOiBNYXR0aGV3IE1hc3RyYWNjaSA8bWF0dEBhY2xhcm8uY29tPgoJSWYgYSBGT1VSQ0Mgc3VyZmFjZSBzcGVjaWZpZXMgRERTRF9QSVRDSCwgdXNlIHRoYXQgaW5zdGVhZCBvZgoJZHdMaW5lYXJTaXplLgoKCSogZGxscy9jb21jdGwzMi9hbmltYXRlLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglEZWxldGUgdGhlIGNyaXRpY2FsIHNlY3Rpb24gd2hlbiBmcmVlaW5nIHVwIHRoZSBpbmZvUHRyLgoKCSogZGxscy93aW5tbS93aW5lYWxzYS9hdWRpby5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJUHJpbnQgb3V0IG1lc3NhZ2UgbmFtZSB0byBtYWtlIHJlYWRpbmcgdHJhY2VzIGVhc2llci4KCgkqIGRsbHMvcmljaGVkMjAvY2FyZXQuYywgZGxscy9yaWNoZWQyMC9lZGl0b3IuYywKCSAgZGxscy9yaWNoZWQyMC9lZGl0b3IuaCwgZGxscy9yaWNoZWQyMC9lZGl0c3RyLmgsCgkgIGRsbHMvcmljaGVkMjAvcGFpbnQuYzoKCUtyenlzenRvZiBGb2x0bWFuIDx3ZGV2QGZvbHRtYW4uY29tPgoJLSBQYWdlVXAga2V5IHN1cHBvcnQuCgktIFN1cHBvcnQgZm9yICJub3JtYWwiIHNjcm9sbCBiYXIgZnVuY3Rpb25hbGl0eSAobGluZSBhbmQgcGFnZQoJICBzY3JvbGxpbmcpLgoKMjAwNS0wMy0xOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL3Byb2Nlc3MuYywgZGxscy9udGRsbC90aHJlYWQuYywgaW5jbHVkZS90aHJlYWQuaCwKCSAgaW5jbHVkZS93aW5udC5oLCBpbmNsdWRlL3dpbnRlcm5sLmg6CglBZGRlZCBzdXBwb3J0IGZvciB0aGUgVExTIGV4cGFuc2lvbiBzbG90cywgYWRkaW5nIGFuIGV4dHJhIDEwMjQKCWVudHJpZXMuCgoJKiBkbGxzL3dpbm1tL3dpbmVhbHNhL2F1ZGlvLmMsIGRsbHMvd2lubW0vd2luZWFydHMvYXVkaW8uYywKCSAgZGxscy93aW5tbS93aW5lYXVkaW9pby9hdWRpby5jLCBkbGxzL3dpbm1tL3dpbmVqYWNrL2F1ZGlvLmMsCgkgIGRsbHMvd2lubW0vd2luZW5hcy9hdWRpby5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUZhbGwgYmFjayB0byBkZWZhdWx0IHByZXBhcmUvdW5wcmVwYXJlIGhlYWRlciBmdW5jdGlvbnMuCgoJKiBkbGxzL2Rzb3VuZC9taXhlci5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJRml4IGJsb2NrIGFsaWduIGVycm9yIG1lc3NhZ2UgdG8gc2hvdyBsZW5ndGggYmVmb3JlIGZpeCB1cC4KCgkqIGRsbHMvc2hlbGwzMi9tZW1vcnlzdHJlYW0uYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IHVzYWdlIG9mIFNUR01fIGVudW1lcmF0aW9ucywgcmVtb3ZlIGZvcndhcmQgZGVjbGFyYXRpb24uCgoJKiBkbGxzL3NoZWxsMzIvZGF0YW9iamVjdC5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglSZW1vdmUgZm9yd2FyZCBkZWNsYXJhdGlvbnMgb2YgaW50ZXJmYWNlIG1ldGhvZHMuCgoJKiBkbGxzL3NoZWxsMzIvY3BhbmVsZm9sZGVyLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaDoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZSBhbiB1bnVzZWQgZnVuY3Rpb24uCgoJKiBkbGxzL21zaS9zdW1pbmZvLmMsIGRsbHMvbXNpL3Rlc3RzLy5jdnNpZ25vcmUsCgkgIGRsbHMvbXNpL3Rlc3RzL01ha2VmaWxlLmluLCBkbGxzL21zaS90ZXN0cy9zdW1pbmZvLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CgktIHRlc3QgY2FzZXMgZm9yIHN1bW1hcnkgaW5mb3JtYXRpb24KCS0gZml4IG1lbW9yeSBsZWFrcwoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJSXNzdWUgYSB3YXJuaW5nIGlmIG5vIHNvdW5kIHN5c3RlbSB3YXMgZm91bmQuCgoJKiBkbGxzL3JpY2hlZDIwL2NhcmV0LmMsIGRsbHMvcmljaGVkMjAvZWRpdG9yLmMsCgkgIGRsbHMvcmljaGVkMjAvZWRpdG9yLmgsIGRsbHMvcmljaGVkMjAvZWRpdHN0ci5oLAoJICBkbGxzL3JpY2hlZDIwL3BhaW50LmMsIGRsbHMvcmljaGVkMjAvcnVuLmMsIGRsbHMvcmljaGVkMjAvc3RyaW5nLmMsCgkgIGRsbHMvcmljaGVkMjAvd3JhcC5jOgoJS3J6eXN6dG9mIEZvbHRtYW4gPHdkZXZAZm9sdG1hbi5jb20+CgktIG1hZGUgc3RyaW5nIG9wZXJhdGlvbnMgY29uc2lzdGVudCB3cnQgd2hpdGVzcGFjZSBoYW5kbGluZyAod2hpY2gKCSAgc2hvdWxkIGdyZWF0bHkgaW1wcm92ZSBzdGFiaWxpdHkgb2YgdGhlIHdyYXAgY29kZSBhbmQgZWxpbWluYXRlCgkgIHJlZ3Jlc3Npb25zIG9mIHRoZSBtb3N0IHJlY2VudCB2ZXJzaW9ucykKCS0gY29tcGxldGVseSBuZXcgc2Nyb2xsYmFyIGhhbmRsaW5nIChtdWNoIG1vcmUgcmVsaWFibGUpIGFuZCByZWxhdGVkCgkgIHJlZHJhdyBmaXhlcwoJLSBQYWdlIERvd24gaGFuZGxlciAobm8gUGFnZSBVcCB5ZXQsIGZpeGluZyB3cmFwL3JlZHJhdy9zY3JvbGxiYXIgYnVncwoJICB3YXMgb2YgaGlnaGVyIHByaW9yaXR5KQoKCSogZGxscy9ycGNydDQvcnBjX3NlcnZlci5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglGaXggZGVhZGxvY2sgY2F1c2VkIGJ5IG5vdCBsZWF2aW5nIHRoZSBjcml0aWNhbCBzZWN0aW9uIG9uIGFsbCBjb2RlCglwYXRocy4KCgkqIGRsbHMvb2xlMzIvb2xlMmltcGwuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJRml4IG1lbW9yeSBsZWFrIGluIE9sZUR1cGxpY2F0ZURhdGEgb24gZXJyb3IgcGF0aCAoZm91bmQgYnkgU21hdGNoKS4KCgkqIGRsbHMva2VybmVsL2xvY2FsZS5jOiBVbHJpY2ggQ3pla2FsbGEgPHVscmljaEBjb2Rld2VhdmVycy5jb20+CglHZXRDUEluZm8gc2hvdWxkIHJldHVybiBGQUxTRSBpZiBjYWxsZWQgd2l0aCBOVUxMIGluZm8gYnVmZmVyLgoKCSogZGxscy9hdGwvcmVnaXN0cmFyLmM6IEphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglBZGRlZCBpbXBsZW1lbnRhdGlvbiBvZiBGaWxlW1VuXVJlZ2lzdGVyIGFuZCBSZXNvdXJjZVtVbl1SZWdpc3RlclN6LgoKCSogdG9vbHMvd2luZS5pbmY6IFBhdWwgTWlsbGFyIDxwLm1pbGxhckBwaHlzaWNzLmdsYS5hYy51az4KCUJyaW5nIGRlZmF1bHQgcmVnaXN0cnkgaW4gbGluZSB3aXRoIGltcGxpY2l0IGRlZmF1bHQgYmVoYXZpb3VyIGJ5Cgl1c2luZyB0aGUgLS1hdXRvIG9wdGlvbiB3aXRoIHdpbmVkYmcuCgoJKiBkbGxzL3ZlcnNpb24vaW5zdGFsbC5jOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJQXZvaWQgYSBtYWdpYyBudW1iZXIuCgoyMDA1LTAzLTE4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogcHJvZ3JhbXMvd2luZXRlc3QvdXRpbC5jLCB0b29scy93aW5lZ2NjL3V0aWxzLmM6CglGaXhlZCBvdGhlciBpbnN0YW5jZXMgb2YgdGhlIHhyZWFsbG9jKDApIGJ1Zy4KCgkqIGRsbHMvY29tY3RsMzIvdGVzdHMvdXBkb3duLmMsIGRsbHMvY29tY3RsMzIvdXBkb3duLmM6CglDLiBTY290dCBBbmFuaWFuIDxjc2NvdHRAY3Njb3R0Lm5ldD4KCVVQRE9XTl9HZXRCdWRkeUludCBzaG91bGQgbm90IGZhaWwgd2hlbiB0aGUgY29udHJvbCBpcyBlbXB0eS4KCgkqIHRvb2xzL3dpbmVidWlsZC9idWlsZC5oLCB0b29scy93aW5lYnVpbGQvcmVzMTYuYywKCSAgdG9vbHMvd2luZWJ1aWxkL3JlczMyLmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJLVd1bnNpZ25lZCBmaXhlcy4KCgkqIHRvb2xzL3dpbmVidWlsZC91dGlscy5jOgoJRG9uJ3QgY3Jhc2ggb24geHJlYWxsb2MoMCkgKGZvdW5kIGJ5IEpvbiBHcmlmZml0aHMpLgoKCSogZGxscy9vbGVhdXQzMi90ZXN0cy92YXJ0eXBlLmM6IEphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglGaXhlZCB2YXJ0eXBlIHRlc3QuCgoJKiBkbGxzL21zaS9tc2lwcml2LmgsIGRsbHMvbXNpL3N1bWluZm8uYywgaW5jbHVkZS9tc2kuaCwKCSAgaW5jbHVkZS9tc2lxdWVyeS5oOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IHN1bW1hcnkgaW5mb3JtYXRpb24gbG9hZGluZyBhbmQgc2F2aW5nLgoKCSogZGxscy9zaGx3YXBpL29yZGluYWwuYywgZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglJbXBsZW1lbnQgQDE4OCwxOTAsMTk1LDIwMCwyNTYsNDc4LDQ4MS4KCUlVbmtub3duX0VuYWJsZU1vZGVsZXNzKCkgYWxzbyBoYW5kbGVzIElPbGVJblBsYWNlQWN0aXZlT2JqZWN0LgoKCSogZGxscy9jb21jdGwzMi9hbmltYXRlLmM6CglSZXZlcnQgY2hhbmdlcyB0byB0aGUgcGFpbnRpbmcgY29kZSwgdGhlIFdNX0NUTENPTE9SU1RBVElDIG1lc3NhZ2UKCXNob3VsZCBub3QgYmUgc2VudCBmcm9tIHRoZSBhbmltYXRpb24gdGhyZWFkLgoKCSogZGxscy93aW5tbS93aW5lYWxzYS9hdWRpby5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQWRkIHN1cHBvcnQgZm9yIG1vcmUgdGhhbiBvbmUgc291bmQgY2FyZC4KCUZpeCB3YXZlIG91dCBzdXBwb3J0IHdoZW4gbm8gdm9sdW1lIGNvbnRyb2wgaXMgcHJlc2VudC4KCVVzZSBwcm9wZXIgc3RydWN0dXJlIGZvciB3YXZlIGluIGRldmljZSBjYXBzLgoKCSogZGxscy93aW5tbS90ZXN0cy93YXZlLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglDaGVjayB3YXZlIG91dCB2b2x1bWUgc3VwcG9ydC4KCgkqIGRsbHMvYXRsL2F0bC5yZ3M6IEphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglGaXhlZCBhdGwucmdzLgoKCSogZGxscy9hdGwvcmVnaXN0cmFyLmM6IEphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglLZXlzIG1heSBoYXZlIG9ubHkgb25lIG9mIGF0dHJpYnV0ZXMuCgoJKiBkbGxzL2RpbnB1dC9qb3lzdGlja19saW51eGlucHV0LmM6CglHZXJhbGQgUGZlaWZlciA8Z2VyYWxkQHBmZWlmZXIuY29tPgoJRml4IGNvbXBpbGF0aW9uIG9mIHRoZSBjYXNlIHdpdGhvdXQgcHJvcGVyIExpbnV4IGpveXN0aWNrIHN1cHBvcnQuCgoJKiBkbGxzL3JpY2hlZDIwL2VkaXRvci5jLCBkbGxzL3JpY2hlZDIwL3JlYWRlci5jLCBkbGxzL3JpY2hlZDIwL3J0Zi5oOgoJUGhpbCBLcnlsb3YgPHBoaWxAbmV3c3Rhci5yaW5ldC5ydT4KCUZpeGVkIHN1cHBvcnQgZm9yIFJURiBkb2N1bWVudHMgdXNpbmcgQU5TSSBjaGFyc2V0IGFuZCBhZGRlZCBzdXBwb3J0Cglmb3IgbXVsdGlieXRlIGNoYXJzZXRzLCBzbyB0aGF0IEJJRzUgYW5kIFVURi04IFJURiBkb2N1bWVudHMgYXJlCgl3b3JraW5nIG5vdy4KCjIwMDUtMDMtMTcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC9mb3JtYXRfbXNnLmMsIGRsbHMva2VybmVsL3Rlc3RzL2hlYXAuYywKCSAgZGxscy9tYXBpMzIvaW1hbGxvYy5jLCBkbGxzL29sZTMyL2lmcy5jLCBkbGxzL3NoZWxsMzIvY3BhbmVsZm9sZGVyLmMsCgkgIGRsbHMvc2hlbGwzMi9kcmFnZHJvcGhlbHBlci5jLCBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbG9sZS5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywKCSAgZGxscy9zaGVsbDMyL3NoZmxkcl9kZXNrdG9wLmMsIGRsbHMvc2hlbGwzMi9zaGZsZHJfZnMuYywKCSAgZGxscy9zaGVsbDMyL3NoZmxkcl9teWNvbXAuYywgZGxscy9zaGx3YXBpL3JlZy5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCVVzZSBMTUVNXyBmbGFncyBmb3IgTG9jYWxBbGxvYygpLCBub3QgR01FTV8gKEdsb2JhbEFsbG9jKS4KCgkqIHNlcnZlci9xdWV1ZS5jOgoJUmV2ZXJ0IHRoZSBwcmV2aW91cyBjaGFuZ2UsIHRoaXMgaXMgbm90IHdvcmtpbmcgcmlnaHQgeWV0LgoKCSogZGxscy9zaGVsbDMyL3NobGV4ZWMuYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUZvciBTaGVsbEV4ZWN1dGVFeEEgd2UgbmVlZCB0byBjb3B5IG91dCB0aGUgaFByb2Nlc3MgdmFsdWUgZnJvbSB0aGUgVwoJc3RydWN0dXJlLgoKCSogZGxscy9vbGUzMi9NYWtlZmlsZS5pbiwgZGxscy9vbGUzMi9kaWN0aW9uYXJ5LmMsCgkgIGRsbHMvb2xlMzIvZGljdGlvbmFyeS5oLCBkbGxzL29sZTMyL3N0Z19wcm9wLmM6CglKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglCZWdpbiBpbXBsZW1lbnRpbmcgSVByb3BlcnR5U3RvcmFnZS4KCgkqIGRsbHMveDExZHJ2L3dpbnBvcy5jLCBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsCgkgIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci90cmFjZS5jLCBzZXJ2ZXIvd2luZG93LmM6CglNYWtlIHRoZSBzZXJ2ZXIga25vdyBhYm91dCB0aGUgdmlzaWJsZSBhcmVhIG9mIGEgd2luZG93LCB3aGljaCBpcyB0aGUKCXdpbmRvdyByZWN0IG1pbnVzIHRoZSBjYXB0aW9uIGFuZCBib3JkZXJzIHdoZW4gdGhleSBhcmUgaGFuZGxlZCBieSB0aGUKCXdpbmRvdyBtYW5hZ2VyLgoKCSogZGxscy9rZXJuZWwvY29tbS5jLCBkbGxzL2tlcm5lbC9maWxlLmMsIGRsbHMva2VybmVsL3Rlc3RzL2ZpbGUuYywKCSAgZGxscy9rZXJuZWwvdGVzdHMvZ2VuZXJhdGVkLmMsIGRsbHMvbnRkbGwvbG9hZGVyLmMsCgkgIGRsbHMvcXVhcnR6L2ZpbGVzb3VyY2UuYywgZGxscy93aW5pbmV0L3VybGNhY2hlLmMsCgkgIGRsbHMvd2luc29jay9zb2NrZXQuYywgaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2luaW5ldC5oLAoJICBpbmNsdWRlL3dpbm50Lmg6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJTWF0Y2ggT1ZFUkxBUFBFRCBzdHJ1Y3R1cmUgdG8gdGhlIFNESyBkZWZpbml0aW9uLgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglGYWxsIGJhY2sgdG8gZGVmYXVsdCBoZWFkZXIgcHJlcGFyZSBhbmQgdW5wcmVwYXJlIGZ1bmN0aW9ucy4KCgkqIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlIHNvbWUgZGVhZCBjb2RlIGFuZCBzb21lIGlmZGVmcy4KCgkqIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jLCBkbGxzL3dpbmluZXQvdGVzdHMvaHR0cC5jOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglBZGQgbW9yZSB0ZXN0cyBhbmQgZml4IEludGVybmV0VGltZVRvU3lzdGVtVGltZVcgYWNjb3JkaW5nbHkuCgoJKiBkbGxzL3NoZWxsMzIvZGVidWdobHAuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IGEgcmVncmVzc2lvbiBpbiB0aGUgZmlsZSBvcGVuIGRpYWxvZy4KCgkqIGRsbHMvbnRkbGwvcmVnLmM6IEl2YW4gTGVvIFB1b3RpIDxpdmFubGVvQGdtYWlsLmNvbT4KCUFkZCBwYXJhbWV0ZXIgY2hlY2tpbmcgYW5kIHJlbW92ZSBsYXN0IGZpeG1lLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvdGltZS5jOiBKYWtvYiBFcmlrc3NvbiA8amFrb3ZAdm1saW51eC5vcmc+CglNb3JlIHRyYWNlIGluZm8uCgoJKiBkbGxzL3dpbm1tL3dpbmVhbHNhL2F1ZGlvLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglVc2UgcmVhbCBkZXZpY2UgbmFtZS4KCgkqIGRsbHMvdHR5ZHJ2L3duZC5jLCBkbGxzL3gxMWRydi93aW5wb3MuYywKCSAgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLCBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvdHJhY2UuYywKCSAgc2VydmVyL3dpbmRvdy5jOgoJQ29tcHV0ZSB0aGUgdG9wIGNsaXBwaW5nIHdpbmRvdyBkaXJlY3RseSBvbiB0aGUgc2VydmVyIHNpZGUuCgoJKiBkbGxzL3dpbnNvY2svdGVzdHMvc29jay5jOiBKYWtvYiBFcmlrc3NvbiA8amFrb3ZAdm1saW51eC5vcmc+CglNb3JlIHRyYWNlIGluZm8uCgoJKiBkbGxzL2F0bC9NYWtlZmlsZS5pbjogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IGRlcGVuZGVuY2llcy4KCgkqIGRsbHMvc2hlbGwzMi9zaGZsZHJfZGVza3RvcC5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglDb252ZXJ0IHBhdGggdG8gdW5pY29kZSwgcmVhcnJhbmdlIHRvIHJlbW92ZSBmb3J3YXJkIGRlY2xhcmF0aW9uLgoKCSogZGxscy9yaWNoZWQyMC9lZGl0b3IuYywgZGxscy9yaWNoZWQyMC9yZWFkZXIuYywgZGxscy9yaWNoZWQyMC9ydGYuaDoKCVBoaWwgS3J5bG92IDxwaGlsQG5ld3N0YXIucmluZXQucnU+CglSZXBsYWNlZCBzbG93IGFuZCBvdXRkYXRlZCBjaGFyYWN0ZXIgc2V0IGhhbmRsaW5nIGluIFJURiByZWFkZXIgYnkKCVVuaWNvZGUvY29kZXBhZ2VzIHN1cHBvcnQuIEFkZGVkIGNoYXJzZXQtPmNvZGVwYWdlIGNvbnZlcnNpb24uCgoJKiBpbmNsdWRlL3dpbmJhc2UuaDogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRGVjbGFyZSBpbmxpbmUgc3RyaW5nIGZ1bmN0aW9uIFdJTkFQSSAoZm91bmQgYnkgS3J6eXN6dG9mIEZvbHRtYW4pLgoKCSogaW5jbHVkZS9zaGxndWlkLmgsIGluY2x1ZGUvc2hsb2JqLmg6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJQWRkIHNvbWUgbWlzc2luZyBpbnRlcmZhY2VzLgoKCSogZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvY29tcG9ial9wcml2YXRlLmgsCgkgIGRsbHMvb2xlMzIvbWFyc2hhbC5jLCBkbGxzL29sZTMyL3JwYy5jLCBkbGxzL29sZTMyL3N0dWJtYW5hZ2VyLmMsCgkgIGluY2x1ZGUvb2JqYmFzZS5oOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBBZGQgY3JpdHNlYyBkZWJ1Z2dpbmcgaW5mby4KCS0gTW92ZSB0aGUgbW9kYWwgbG9vcCBjYWxsZWQgZHVyaW5nIFJQQ3MgaW50byBDb1dhaXRGb3JNdWx0aXBsZUhhbmRsZXMuCgktIFVzZSBhIG11dGV4IGZvciBsb25nIHJlbW90aW5nIGNhbGxzIHRvIElSZW1Vbmtub3duIG1ldGhvZHMuCgktIFJlbW92ZSBsb2NraW5nIGluIGFwYXJ0bWVudF9kaXNjb25uZWN0cHJveGllcyBhcyBpdCBpcyBub3QgbmVlZGVkLgoJLSBVc2UgUG9zdE1lc3NhZ2UgaW5zdGVhZCBvZiBTZW5kTWVzc2FnZSBzbyB3ZSBjYW4gcnVuIHRoZSBtZXNzYWdlCgkgIGxvb3Agb3Igbm90IGFzIGFwcHJvcHJpYXRlLgoKCSogZGxscy93aW5tbS9sb2x2bGRydi5jLCBkbGxzL3dpbm1tL3dpbmVtbS5oOgoJSmVyZW15IFdoaXRlIDxqd2hpdGVAY29kZXdlYXZlcnMuY29tPgoJRG8gbm90IGZhbGxiYWNrIHRvIGRlZmF1bHRzIGlmIGEgZHJpdmVyLCBtYXBwZXIsIG9yIG1pZGkgaXMgc3BlY2lmaWVkCglpbiB0aGUgcmVnaXN0cnk7IGNvbnNvbGlkYXRlIE1NRFJWX0luaXQoKSBpbnRvIGEgc2luZ2xlIGZ1bmN0aW9uLgoKCSogZGxscy9vbGUzMi9zdG9yYWdlMzIuYywgZGxscy9vbGUzMi9zdG9yYWdlMzIuaDoKCUp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCUFkZCBhIGNvbW1lbnQgYWJvdXQgYnl0ZSBvcmRlciwgY2hhbmdlIHR5cGVzIHRvIHJlZHVjZSBjYXN0aW5nIGFuZCBub3QKCWNhc3QgYXdheSBjb25zdG5lc3MuCgoJKiBkbGxzL2F0bC9hdGwuc3BlYywgZGxscy9hdGwvcmVnaXN0cmFyLmM6CglKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJQWRkZWQgaW1wbGVtZW50YXRpb24gb2YgRGxsQ2FuVW5sb2FkTm93LgoKCSogZGxscy9yaWNoZWQyMC9jYXJldC5jLCBkbGxzL3JpY2hlZDIwL2VkaXRvci5jLAoJICBkbGxzL3JpY2hlZDIwL2VkaXRvci5oLCBkbGxzL3JpY2hlZDIwL3BhaW50LmMsIGRsbHMvcmljaGVkMjAvcGFyYS5jLAoJICBkbGxzL3JpY2hlZDIwL3JlYWRlci5jLCBkbGxzL3JpY2hlZDIwL3JpY2hvbGUuYywgZGxscy9yaWNoZWQyMC9ydGYuaCwKCSAgZGxscy9yaWNoZWQyMC9ydW4uYywgZGxscy9yaWNoZWQyMC9zdHJpbmcuYywgZGxscy9yaWNoZWQyMC93cmFwLmM6CglLcnp5c3p0b2YgRm9sdG1hbiA8a2ZvbHRtYW5AcG9ydGFsLm9uZXQucGw+CgktIFJURiByZWFkZXIgZG9lc24ndCB1c2UgUmljaEVkaXQgbWVzc2FnZXMgYW55bW9yZSAod2hpY2ggc2F2ZXMgb24KCSAgdW5uZWNlc3NhcnkgcmVwYWludHMpCgktIGFkZGVkIHVuaWNvZGUgY2hhcmFjdGVyIHN1cHBvcnQgdG8gUlRGIGltcG9ydCAobGlrZTogXHUxMjM0NSA/KQoJLSBzbWFsbCBmaXhlcwoJLSBmaXhlZCB3aGl0ZXNwYWNlIGlkZW50aWZpY2F0aW9uIGJ1ZwoJLSByZW1vdmVkIGRyYXdpbmcgb2YgcGFyYWdyYXBoIG1hcmtzCgktIGltcHJvdmVkIHN0dWIgaW1wbGVtZW50YXRpb25zIGZvciBJUmljaEVkaXRPbGUKCjIwMDUtMDMtMTYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3JpY2hlZDIwL3dyaXRlci5jOiBQaGlsIEtyeWxvdiA8cGhpbEBuZXdzdGFyLnJpbmV0LnJ1PgoJSW1wcm92ZWQgUlRGIGV4cG9ydC4KCgkqIGluY2x1ZGUvcmljaGVkaXQuaDogUGhpbCBLcnlsb3YgPHBoaWxAbmV3c3Rhci5yaW5ldC5ydT4KCUFkZGVkIG1pc3NpbmcgUEZFXyBhbmQgUEZBXyBkZWZpbml0aW9ucy4KCgkqIGRsbHMvd2luaW5ldC90ZXN0cy9odHRwLmM6IEpha29iIEVyaWtzc29uIDxqYWtvdkB2bWxpbnV4Lm9yZz4KCVRlc3QgZmFpbGVkIGJlZm9yZSBvbiA5OCwgTlQ0LCAyMDAwIGFuZCBYUC4KCgkqIGRsbHMveDExZHJ2L2tleWJvYXJkLmMsIGRsbHMveDExZHJ2L21vdXNlLmM6CglEb24ndCBmb3JjZSBpbmplY3RlZCBoYXJkd2FyZSBtZXNzYWdlcyB0byBiZSBxdWV1ZWQgaW4gdGhlIGN1cnJlbnQKCXRocmVhZC4KCgkqIHNlcnZlci9xdWV1ZS5jOgoJUXVldWUgaGFyZHdhcmUgbWVzc2FnZXMgZXZlbiBpZiB3ZSBkb24ndCBmaW5kIGEgd2luZG93IGZvciB0aGVtIHRoZQoJZmlyc3QgdGltZSBhcm91bmQuCgoJKiBNYWtlLnJ1bGVzLmluLCBkbGxzL01ha2V0ZXN0LnJ1bGVzLmluLCB0b29scy8uY3ZzaWdub3JlLAoJICB0b29scy9NYWtlZmlsZS5pbiwgdG9vbHMvbWFrZV9jdGVzdHMsIHRvb2xzL21ha2VfY3Rlc3RzLmM6CglDb252ZXJ0ZWQgdGhlIG1ha2VfY3Rlc3RzIHNjcmlwdCB0byBDIChiYXNlZCBvbiBhIHBhdGNoIGJ5IFJveWNlCglNaXRjaGVsbCBJSUkpLgoKCSogc2VydmVyL3dpbmRvdy5jOgoJQ29udmVydGVkIHRoZSB3aW5kb3cgY2hpbGRyZW4gbGlzdHMgdG8gc3RhbmRhcmQgbGlzdHMuCgoJKiBkbGxzL2F0bC8uY3ZzaWdub3JlLCBkbGxzL2F0bC9NYWtlZmlsZS5pbiwgZGxscy9hdGwvYXRsLnJncywKCSAgZGxscy9hdGwvYXRsX21haW4uYywgZGxscy9hdGwvcmVnaXN0cmFyLmMsIGRsbHMvYXRsL3JlZ3N2ci5jLAoJICBkbGxzL2F0bC9yc3JjLnJjOgoJSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCVVzZSBBVExSZWdpc3RyYXIgdG8gcmVnaXN0ZXIgYXRsLmRsbC4KCgkqIGRsbHMvY29tY3RsMzIvdGVzdHMvLmN2c2lnbm9yZSwgZGxscy9jb21jdGwzMi90ZXN0cy9NYWtlZmlsZS5pbiwKCSAgZGxscy9jb21jdGwzMi90ZXN0cy91cGRvd24uYzoKCUMuIFNjb3R0IEFuYW5pYW4gPGNzY290dEBjc2NvdHQubmV0PgoJU3RhcnRlZCBhIHVuaXQgdGVzdCBjYXNlIGZvciB0aGUgdXBkb3duIGNvbnRyb2wuCgoJKiBkbGxzL3NoZWxsMzIvZGVidWdobHAuYzogRmlsaXAgTmF2YXJhIDx4bmF2YXJhQHZvbG55LmN6PgoJX2RiZ19JTEdldE5leHQgcmV0dXJucyBOVUxMIGlmIHBpZGwtPm1raWQuY2IgaXMgemVybywgZml4IHRoZSBsb29wcwoJYWNjb3JkaW5nbHkuCgoJKiBkbGxzL3JpY2hlZDIwL2VkaXRvci5oOiBKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJQ29ycmVjdCBtZW1vcnkgYWxsb2NhdGlvbiBtYWNyby4KCgkqIGluY2x1ZGUvbXNpZGVmcy5oLCBpbmNsdWRlL3Byb3BpZGwuaWRsOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWRkIHByb3BlcnR5IElEcyBmb3IgTVNJIHN1bW1hcnkgaW5mb3JtYXRpb24uCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9wYXRoLmM6IEpha29iIEVyaWtzc29uIDxqYWtvdkB2bWxpbnV4Lm9yZz4KCUZpeCBicm9rZW4gdGVzdC4KCgkqIGRsbHMvZGRyYXcvdGVzdHMvZGRyYXdtb2Rlcy5jOiBKYWtvYiBFcmlrc3NvbiA8amFrb3ZAdm1saW51eC5vcmc+CglTZXREaXNwbGF5TW9kZSBjYW4gcmV0dXJuIERERVJSX1VOU1VQUE9SVEVELiBJZiBpdCBkb2VzLCB3ZSBzaG91bGRuJ3QKCXRyeSB0byByZXN0b3JlIHNvbWV0aGluZyBlaXRoZXIuCgoJKiBkbGxzL250ZGxsL2RpcmVjdG9yeS5jLCBkbGxzL250ZGxsL2ZpbGUuYzoKCVVscmljaCBDemVrYWxsYSA8dWxyaWNoQGNvZGV3ZWF2ZXJzLmNvbT4KCURvbid0IG1hcmsgYSBmaWxlIGFzIHJlYWRvbmx5IGlmIGl0IGhhcyBhbnkgd3JpdGUgYml0IHNldC4KCgkqIHByb2dyYW1zL3VuaW5zdGFsbGVyL21haW4uYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglHZXREbGdJdGVtVGV4dFcgdGFrZXMgYnVmZmVyIGxlbmd0aCBpbiBXQ0hBUnMgbm90IGJ5dGVzLgoKCSogZGxscy9jb21jdGwzMi9hbmltYXRlLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglBdWRpdCB0aGUgY29udHJvbCBhZ2FpbnN0IENvbWN0bDMyLmRsbCB2ZXJzaW9uIDYuMC4KCVByb3BlciBoYW5kbGluZyBvZiBHV0xfU1RZTEUuCglJbXBsZW1lbnQgV01fQ0xPU0UuIEZpeCBXTV9TSVpFIGltcGxlbWVudGF0aW9uLgoJU21hbGwgY2xlYW51cHMuCgoJKiBkbGxzL3NobHdhcGkvdGVzdHMvY2xpc3QuYzogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUZpeCB0d28gZmFpbHVyZXMgYW5kIChob3BlZnVsbHkpIGEgY3Jhc2ggd2l0aCBlYXJseSB2ZXJzaW9ucy4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYzogSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJQ29ycmVjdCByZWdpc3RlcmluZyBzaGVsbCBmb2xkZXJzICh2YWx1ZXMgaW4gU2hlbGwgRm9sZGVycyBrZXkgd2VyZW4ndAoJZ2V0dGluZyB3cml0dGVuKS4KCgkqIGluY2x1ZGUvc2hsb2JqLmg6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBkZWZpbmVzIGZvciBTTERGIGZsYWdzLgoKCSogZGxscy9tc2kvYWN0aW9uLmMsIGRsbHMvbXNpL2FjdGlvbi5oLCBkbGxzL21zaS9jdXN0b20uYywKCSAgZGxscy9tc2kvZGlhbG9nLmMsIGRsbHMvbXNpL2Zvcm1hdC5jLCBkbGxzL21zaS9tc2lwcml2LmgsCgkgIGRsbHMvbXNpL3RhYmxlLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CgktIFJlbmFtZSBkdXBzdHJXIHRvIHN0cmR1cFcsIGFuZCByZW1vdmUgZHVwbGljYXRlIGRlZmluaXRpb24uCgktIE1vdmUgZGVmaW5pdGlvbiBvZiBzdHJpbmcgbWFuaXB1bGF0aW9uIGZ1bmN0aW9ucyB0byBtc2lwcml2LmguCgoJKiBkbGxzL3VzZXIvdGVzdHMvd2luLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBY3R1YWxseSBwcmludCBkd0V4U3R5bGUgaW4gY2FzZSBvZiBhIG1pc21hdGNoLgoKCSogZGxscy93aW5tbS93aW5tbS5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJUHJvdmlkZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIG9mIHdhdmVJblByZXBhcmVIZWFkZXIgYW5kCgl3YXZlSW5VbnByZXBhcmVIZWFkZXIgaWYgZHJpdmVyIGRvZXNuJ3Qgc3VwcG9ydCB0aGVtLgoKCSogZGxscy9kc291bmQvY2FwdHVyZS5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJd2F2ZUluUHJlcGFyZUhlYWRlciBhbmQgd2F2ZUluVW5wcmVwYXJlSGVhZGVyIGFyZSBub3QgcmVhbGx5IG5lZWRlZAoJYmVjYXVzZSB0aGUgY29udGVudHMgZG9uJ3QgY2hhbmdlLgoKCSogZG9jdW1lbnRhdGlvbi9nZXR0aW5nLnNnbWw6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRml4IGEgbGluayB0byBXaW5lJ3MgSG93VG8uCgoJKiBkbGxzL3JpY2hlZDIwL2VkaXRvci5jLCBkbGxzL3JpY2hlZDIwL3JlYWRlci5jLCBkbGxzL3JpY2hlZDIwL3J0Zi5oOgoJS3J6eXN6dG9mIEZvbHRtYW4gPGtmb2x0bWFuQHBvcnRhbC5vbmV0LnBsPgoJLSBVbmtub3duIGRlc3RpbmF0aW9ucyBhcmUgbm93IGNvcnJlY3RseSBza2lwcGVkIChzbyBsb2FkaW5nIGFuIFJURgoJICBmaWxlIGdlbmVyYXRlZCBieSwgZm9yIGV4YW1wbGUsIE9wZW5PZmZpY2UgZG9lc24ndCBwcm9kdWNlIGxvdHMgb2YKCSAgZ2FyYmFnZSBhbnltb3JlKS4KCS0gRm9ybWF0IHN0YWNrIGZvciBSVEYgZ3JvdXBzIChzbyB0aGF0IFJURiByZWFkZXIgY2FuIGNvcnJlY3RseSByZWFkCgkgIHdoYXQgUlRGIHdyaXRlciB3cm90ZSA6KSApCgoJKiBkbGxzL3d0c2FwaTMyL3d0c2FwaTMyLmMsIGRsbHMvd3RzYXBpMzIvd3RzYXBpMzIuc3BlYywKCSAgaW5jbHVkZS93dHNhcGkzMi5oOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglTdHViIGltcGxlbWVudGF0aW9ucyBmb3IgV1RTQ2xvc2VTZXJ2ZXIsIFdUU0Rpc2Nvbm5lY3RTZXNzaW9uLAoJV1RTRW51bWVyYXRlUHJvY2Vzc2Vze0EsV30sIFdUU0VudW1lcmF0ZVNlc3Npb25ze0EsV30sCglXVFNRdWVyeVNlc3Npb25JbmZvcm1hdGlvbkEuCgoyMDA1LTAzLTE1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9kaW5wdXQvZGlucHV0X21haW4uYywgZGxscy9kaW5wdXQvZGlucHV0X3ByaXZhdGUuaCwKCSAgZGxscy9kaW5wdXQvam95c3RpY2tfbGludXguYywgZGxscy9kaW5wdXQvam95c3RpY2tfbGludXhpbnB1dC5jLAoJICBkbGxzL2RpbnB1dC9rZXlib2FyZC5jLCBkbGxzL2RpbnB1dC9tb3VzZS5jOgoJQnVpbGQgYSBzdGF0aWMgbGlzdCBvZiBkZXZpY2VzIGluc3RlYWQgb2YgcmVseWluZyBvbiBFTEYKCWNvbnN0cnVjdG9ycy4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL2Vudmlyb24uYzogSmFrb2IgRXJpa3Nzb24gPGpha292QHZtbGludXgub3JnPgoJTW9yZSB0cmFjZSBpbmZvLgoKCSogZGxscy9hZHZhcGkzMi90ZXN0cy9jcnlwdC5jOiBKYWtvYiBFcmlrc3NvbiA8amFrb3ZAdm1saW51eC5vcmc+CglDcnlwdEFjcXVpcmVDb250ZXh0QSgpIGNhbiByZXR1cm4gTlRFX0ZBSUwgb24gV2luZG93cyA5OC4KCgkqIGRsbHMvZGJnaGVscC9tc2MuYzogRmlsaXAgTmF2YXJhIDx4bmF2YXJhQHZvbG55LmN6PgoJSW5pdGlhbGl6ZSB0aGUgInRvYyIgZmllbGQgaW4gdGhlIHBkYl9sb29rdXAgc3RydWN0dXJlIGluIG9yZGVyIHRvCglwcmV2ZW50IHBkYl9mcmVlX2xvb2t1cCBmcm9tIHRyeWluZyB0byBkZWxldGUgaW52YWxpZCBwb2ludGVycy4KCgkqIGRsbHMvZHNvdW5kL3Byb3BzZXQuYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCVVuY29uZGl0aW9uYWxseSBmcmVlIG1lbW9yeS4gU2hvdWxkIG1ha2Ugc21hdGNoIGhhcHB5LgoKCSogZGxscy9yaWNoZWQyMC9yZWFkZXIuYywgZGxscy9yaWNoZWQyMC9ydGYuaDoKCVBoaWwgS3J5bG92IDxwaGlsQG5ld3N0YXIucmluZXQucnU+CglJbXBsZW1lbnRlZCBoYXNoIHRhYmxlIGxvb2t1cCBmb3IgUlRGIGtleXdvcmRzIGluIFJURiByZWFkZXIuCgoJKiB0b29scy93aW5lYnVpbGQvYnVpbGQuaCwgdG9vbHMvd2luZWJ1aWxkL21haW4uYywKCSAgdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jLCB0b29scy93aW5lYnVpbGQvdXRpbHMuYzoKCVVzZSB0aGUgY29ycmVjdCBmaWxlIG5hbWUgaW4gdGhlICJnZW5lcmF0ZWQgYXV0b21hdGljYWxseSIgY29tbWVudHMuCgoJKiBkbGxzL3JpY2hlZDIwL2VkaXRvci5jLCBkbGxzL3JpY2hlZDIwL3dyaXRlci5jOgoJS3J6eXN6dG9mIEZvbHRtYW4gPGtmb2x0bWFuQHBvcnRhbC5vbmV0LnBsPgoJLSBXTV9DT1BZIChhbmQgV01fQ1VUKSBjYW4gbm93IHB1dCBib3RoIFVuaWNvZGUgYW5kIFJURiBmb3JtYXQgKHRoYW5rcwoJICB0byBQaGlsIEtyeWxvdidzIFJURiBnZW5lcmF0b3IgY29kZSkuCgktIE5ldyBtZXNzYWdlIGltcGxlbWVudGVkIC0gV01fUEFTVEUuCgktIFJURiByZWFkZXI6IHJ0ZlBsYWluIGltcGxlbWVudGVkIChraW5kIG9mKS4KCS0gUlRGIHdyaXRlcjogcmV3cml0dGVuIG1haW4gbG9vcCAodGhlIG9sZCBvbmUgY3Jhc2hlZCBpbiBzb21lCgkgIGNpcmN1bXN0YW5jZXMgd2hlbiBTRkZfU0VMRUNUSU9OIHdhcyB1c2VkKS4KCgkqIGRsbHMvZHNvdW5kL2NhcHR1cmUuYywgZGxscy9kc291bmQvZHNvdW5kLmMsCgkgIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmMsIGRsbHMvZHNvdW5kL2Rzb3VuZF9wcml2YXRlLmgsCgkgIGRsbHMvZHNvdW5kL21peGVyLmMsIGRsbHMvZHNvdW5kL3ByaW1hcnkuYywgZGxscy9kc291bmQvcHJvcHNldC5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUNoYW5nZSBzb21lIGdsb2JhbCB2YXJpYWJsZSBuYW1lcy4KCUNsZWFudXAgdXNhZ2Ugb2YgZ2xvYmFsIGRzb3VuZCB2YXJpYWJsZSB0byBub3QgdXNlIGxvY2FsIHZhcmlhYmxlIG9mCglzYW1lIG5hbWUuCglBbG1vc3QgcmVhZHkgdG8gYWRkIHN1cHBvcnQgZm9yIG1vcmUgdGhhbiBvbmUgc291bmQgY2FyZCBhdCB0aGUgc2FtZQoJdGltZS4KCgkqIERFVkVMT1BFUlMtSElOVFM6IFRvbSBXaWNrbGluZSA8dHdpY2tsaW5lQGdtYWlsLmNvbT4KCUFkZCB0aHJlZSBtaXNzaW5nIGRsbHMgdG8gdGhlIGxpc3QuCgoJKiBkbGxzL2NvbWN0bDMyL2FuaW1hdGUuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUNsZWFudXAgYW5kIHNpbXBsaWZ5IHRoZSBwYWludGluZyBjb2RlLgoJRml4IGEgcG90ZW50aWFsIGJ1ZyBhbG9uZyB0aGUgd2F5LgoKCSogZGxscy93aW5tbS93YXZlbWFwL3dhdmVtYXAuYywgZGxscy93aW5tbS9tY2kuYzoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglGaXggbWVtb3J5IGxlYWsgaW4gZXJyb3IgcGF0aC4KCgkqIGRsbHMvd2lubW0vbG9sdmxkcnYuYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUZpeCBtZW1vcnkgbGVhayB3aGVuIHRoZXJlIGFyZSB0b28gbWFueSBkcml2ZXJzLgoKCSogZGxscy93aW5tbS93aW5tbS5jOiBKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJQXZvaWQgdHJhcCBpbiBtaXhlckdldExpbmVDb250cm9sc0Egd2hlbiBjQ29udHJvbHMgaXMgdW5pbml0aWFsaXplZAoJYW5kIE1JWEVSX0dFVExJTkVDT05UUk9MU1NGX09ORUJZVFlQRSByZXF1ZXN0ZWQuCgoyMDA1LTAzLTE0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9tbGFuZy90ZXN0cy9tbGFuZy5jOgoJU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtTGluZS5jb20+CglNYWtlIG1sYW5nX3Rlc3QuZXhlIGxvYWRhYmxlIG9uIE5UIDQuMC4KCgkqIGRsbHMvcmljaGVkMjAvTWFrZWZpbGUuaW4sIGRsbHMvcmljaGVkMjAvZWRpdG9yLmMsCgkgIGRsbHMvcmljaGVkMjAvZWRpdG9yLmgsIGRsbHMvcmljaGVkMjAvZWRpdHN0ci5oLAoJICBkbGxzL3JpY2hlZDIwL3dyaXRlci5jOgoJUGhpbCBLcnlsb3YgPHBoaWxAbmV3c3Rhci5yaW5ldC5ydT4KCUluaXRpYWwgaW1wbGVtZW50YXRpb24gb2YgRU1fU1RSRUFNT1VUIGFuZCBSVEYgd3JpdGVyLgoKCSogZGxscy9yaWNoZWQyMC9yZWFkZXIuYywgZGxscy9yaWNoZWQyMC9ydGYuaDoKCVBoaWwgS3J5bG92IDxwaGlsQG5ld3N0YXIucmluZXQucnU+CglBZGRlZCAiZ2VuZXJhdG9yIiBSVEYgZGVzdGluYXRpb24gaGFuZGxpbmcuCgoJKiBpbmNsdWRlL3JpY2hlZGl0Lmg6IFBoaWwgS3J5bG92IDxwaGlsQG5ld3N0YXIucmluZXQucnU+CglBZGRlZCBtaXNzaW5nIFBGQV9KVVNUSUZZIGRlZmluaXRpb24uCgoJKiBkbGxzL2FkdmFwaTMyL3Rlc3RzL3NlY3VyaXR5LmM6CglBdm9pZCBhY2Nlc3NpbmcgYW4gdW5pbml0aWFsaXplZCBzdHJpbmcgaW4gdGhlIGZhaWx1cmUgY2FzZS4KCgkqIGRvY3VtZW50YXRpb24vc2FtcGxlcy9jb25maWcsIGRvY3VtZW50YXRpb24vd2luZS5jb25mLm1hbiwKCSAgbWlzYy9yZWdpc3RyeS5jOgoJR2V0IHJpZCBvZiB0aGUgcmVtYWluaW5nIHJlZ2lzdHJ5IGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycy4KCgkqIHNlcnZlci9xdWV1ZS5jOgoJQXZvaWQgcmV0dXJuaW5nIGhhcmR3YXJlIG1lc3NhZ2VzIGlmIHRoZXkgaGF2ZSBubyBjaGFuY2UgdG8gbWF0Y2ggdGhlCglmaWx0ZXIuCgoJKiBkbGxzL2FkdnBhY2svYWR2cGFjay5jLCBkbGxzL2FkdnBhY2svYWR2cGFjay5zcGVjOgoJTWF0dGhldyBNYXN0cmFjY2kgPG1tYXN0cmFjQGNhbmFkYS5jb20+CglJbXBsZW1lbnQgUmVnaXN0ZXJPQ1guCglTdHViIGZvciBEZWxOb2RlUnVuRExMMzIuCgoJKiBkbGxzL3VzZXIvdGVzdHMvbXNnLmMsIGRsbHMvdXNlci90ZXN0cy93aW4uYywgd2luZG93cy93aW4uYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglEbyBub3QgcmVsZWFzZSBjYXB0dXJlIGJlZm9yZSBzZW5kaW5nIFdNX05DREVTVFJPWSBtZXNzYWdlLCB1cGRhdGUgdGhlCgl0ZXN0cyB0byByZWZsZWN0IHRoYXQuCgoJKiBpbmNsdWRlL3NobGd1aWQuaCwgaW5jbHVkZS9zaGxvYmouaCwgaW5jbHVkZS9zaG9iamlkbC5pZGw6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglNb3ZlIGludGVyZmFjZSBkZWNsYXJhdGlvbnMgdG8gc2hvYmppZGwuaWRsLgoKCSogZGxscy91c2VyL2xzdHIuYywgZGxscy91c2VyL21lc3NhZ2UuYzoKCVBldGVyIEJlcmcgTGFyc2VuIDxwZWJsQG1hdGgua3UuZGs+CglBc3NvcnRlZCBtZW1sZWFrIGZpeGVzLiBGb3VuZCBvbiBNaWNoYWVsIFN0ZWZhbml1YyBzbWF0Y2ggbGlzdC4KCgkqIGRvY3VtZW50YXRpb24vc2FtcGxlcy9jb25maWcsIG1pc2MvcmVnaXN0cnkuYywgc2VydmVyL3JlZ2lzdHJ5LmM6CglHZXQgcmlkIG9mIHRoZSByZWdpc3RyeSBzYXZpbmcgbGV2ZWwgaGFjay4KCU1ha2UgcGVyaW9kaWMgc2F2aW5nIHRoZSBkZWZhdWx0IGJlaGF2aW9yLgoKCSogZGxscy9ycGNydDQvcnBjcnQ0X21haW4uYzogUmFsZiBTLiBFbmdlbHNjaGFsbCA8cnNlQGVuZ2Vsc2NoYWxsLmNvbT4KCUZpeCBpbmNvcnJlY3QgcmFuZG9tIG11bHRpY2FzdCBNQUMgYWRkcmVzcyBjcmVhdGlvbi4KCgkqIGRsbHMvbnRkbGwvbnRkbGwuc3BlYzogSXZhbiBMZW8gUHVvdGkgPGl2YW5sZW9AZ21haWwuY29tPgoJVXBkYXRlIG50ZGxsLnNwZWMgYWdhaW5zdCBjdXJyZW50IE1pY3Jvc29mdCBidWlsZC4KCgkqIGRsbHMvYXRsLy5jdnNpZ25vcmUsIGRsbHMvYXRsL01ha2VmaWxlLmluLCBkbGxzL2F0bC9hdGxpZmFjZS5pZGwsCgkgIGRsbHMvYXRsL3JlZ2lzdHJhci5jLCBkbGxzL2F0bC9yZWdzdnIuYzoKCUphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglBZGRlZCBpbXBsZW1lbnRhdGlvbiBvZiBBVExSZWdpc3RyYXIuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6IEV2YW4gRGVhdWJsIDx3aW5lQHdhcnBlZHZpZXcuY29tPgoJVFJFRVZJRVdfRG9TZWxlY3RJdGVtIHNob3VsZCBub3QgZG8gYW55IG9mIHRoZSBUVkdOX0ZJUlNUVklTSUJMRSB3b3JrCglpZiB0aGUgbmV3U2VsZWN0IHBhcmFtZXRlciBpcyBOVUxMLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLCBkbGxzL3NoZWxsMzIvc2hmbGRyX2Rlc2t0b3AuYywKCSAgZGxscy9zaGVsbDMyL3NobHZpZXcuYywgZGxscy9zaGVsbDMyL3Nodl9iZ19jbWVudS5jOgoJTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCS0gc3dpdGNoIHRvIGNvcnJlY3Qgc2hlbGwgZGVza3RvcCBjb250ZXh0IG1lbnUKCS0gbGF1bmNoIGRlc2suY3BsIHdoZW4gYWN0aXZhdGluZyB0aGUgZGVza3RvcCBjb250ZXh0IG1lbnUgZW50cnkKCSAgInByb3BlcnRpZXMiCgktIGRvbid0IHNlbmQgV01fQ09NTUFORCBpZiB3ZSBkaWRuJ3QgZ2V0IGEgc2hlbGwgdmlldyB3aW5kb3cKCgkqIHByb2dyYW1zL3dpbmVkYmcvZGJnLnk6IEMuIFNjb3R0IEFuYW5pYW4gPGNzY290dEBjc2NvdHQubmV0PgoJQWRkIHRTVFJJTkcgdG8gdGhlIHBhdGhuYW1lIHByb2R1Y3Rpb24sIHNvIHRoYXQgeW91IGNhbiBxdW90ZSBhCglwYXRobmFtZSB3aGljaCBjb250YWlucyAnb2RkJyBjaGFyYWN0ZXJzLgoKCSogcHJvZ3JhbXMvd2luZWRiZy9kZWJ1Zy5sOiBDLiBTY290dCBBbmFuaWFuIDxjc2NvdHRAY3Njb3R0Lm5ldD4KCU1vdmUgZGVmaW5pdGlvbiBvZiAndFBBVEgnIHRva2VuIHVwLCBzbyB0aGF0ICcvJywgJy4nIGFuZCAnMHhBJyAoZXRjKQoJYXJlIGxleGVkIGFzIHBhdGhzIChpbiB0aGUgYXBwcm9wcmlhdGUgY29udGV4dHMpIGluc3RlYWQgb2YgYXMKCW9wZXJhdG9yIG9yIG51bWJlciB0b2tlbnMuCglBZGQgJy0nIHRvIHRoZSBzZXQgb2YgY2hhcmFjdGVycyBsZWdhbCBpbiBhIHBhdGhuYW1lLgoKCSogZG9jdW1lbnRhdGlvbi93aW5lZGV2LWtlcm5lbC5zZ21sOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CgktIHJlb3JnYW5pc2F0aW9uIG9mIGZ1bGwgY2hhcHRlcgoJLSByZXdyb3RlIHRoZSBjb25zb2xlIHBhcnQKCS0gYWRkZWQgRlMgZG9jdW1lbnRhdGlvbgoKCSogZGxscy9vbGUzMi9jbGlwYm9hcmQuYzogSm9yaXMgSHVpemVyIDxqb3Jpc2h1aXplckBwbGFuZXQubmw+CglBIGZldyBtZW1vcnkgY2hlY2tzIGF2b2lkaW5nIG1lbW9yeSBsZWFrcy4KCgkqIGRsbHMvd2luZWQzZC9iYXNldGV4dHVyZS5jLCBkbGxzL3dpbmVkM2QvY3ViZXRleHR1cmUuYywKCSAgZGxscy93aW5lZDNkL2RldmljZS5jLCBkbGxzL3dpbmVkM2Qvc3VyZmFjZS5jLAoJICBkbGxzL3dpbmVkM2QvdGV4dHVyZS5jLCBkbGxzL3dpbmVkM2Qvdm9sdW1lLmMsCgkgIGRsbHMvd2luZWQzZC92b2x1bWV0ZXh0dXJlLmMsIGRsbHMvd2luZWQzZC93aW5lZDNkX3ByaXZhdGUuaCwKCSAgaW5jbHVkZS93aW5lL3dpbmVkM2RfaW50ZXJmYWNlLmg6CglPbGl2ZXIgU3RpZWJlciA8b2xpdmVyX3N0aWViZXJAeWFob28uY28udWs+CglFbmNhcHN1bGF0ZSB0ZXh0dXJlLCBzdXJmYWNlIGVuY2Fwc3VsYXRlZC4KCUFkZGVkIEJpbmRUZXh0dXJlLCBHZXRUZXh0dXJlRGltZW5zaW9ucywgVW5CaW5kVGV4dHVyZS4KCVByb3BlciBHZXRDb250YWluZXIgc3VwcG9ydCBmb3Igc3VyZmFjZS4KCVNldENvbnRhaW5lciBhZGRlZCB0byBzdXJmYWNlIGFuZCB2b2x1bWUuCglTZXRJblBidWZmZXJTdGF0ZSBhZGRlZCB0byBzdXJmYWNlICh1bnRpbCBnbCBjb250ZXh0IG1hbmFnZW1lbnQgaXMKCWltcGxlbWVudGVkKS4KCU1pbm9yIGNoYW5nZXM6CgktIEJhc2VUZXh0dXJlIG5vIGxvbmdlciAnaG9sZHMnIGEgcmVmZXJlbmNlIHRvIElXaW5lRDNERGV2aWNlIHRvCgkgIHByZXZlbnQgY2lyY3VsYXIgcmVmZXJlbmNpbmcuCgktIEJldHRlciBtYW5hZ21lbnQgb2YgcmVmZXJpbmdpbmcgZm9yIHRleHR1cmUuCgktIFNvbWUgVE9ETydzIGZvciBpbXBsZW1lbnRpbmcgYSBjb250ZXh0IG1hbmFnZXIuCgktIEJldHRlciBwcmVsb2FkIGltcGxlbWVudGF0aW9uLgoJLSBGaXggY29tcGlsZSB3YXJuaW5nIGluIGRldmljZS5jIFNldC9HZXRTYW1wbGVyU3RhdGUuCgktIEFkZCBRdWVyeUludGVyZmFjZSBzdXBwb3J0IGZvciBzdXJmYWNlLgoJLSBGb3JtYXQgWDhSOEc4QjggYWRkZWQgdG8gbG9ja2luZy4KCgkqIGRsbHMvcnBjcnQ0L25kcl9taWRsLmMsIGRsbHMvcnBjcnQ0L3JwY19iaW5kaW5nLmMsCgkgIGRsbHMvcnBjcnQ0L3JwY19tZXNzYWdlLmMsIGRsbHMvcnBjcnQ0L3JwY19zZXJ2ZXIuYywKCSAgZGxscy9ycGNydDQvcnBjcnQ0LnNwZWMsIGRsbHMvcnBjcnQ0L3JwY3J0NF9tYWluLmM6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIFJwY01nbXRTdG9wU2VydmVyTGlzdGVuIHNob3VsZCBub3QgYWZmZWN0IGF1dG8tbGlzdGVuIGludGVyZmFjZXMuCgktIEltcGxlbWVudCBzdHViIGZvciBScGNSZXZlcnRUb1NlbGZFeC4KCS0gQ2hhbmdlIHRoZSBtb3JlIHZlcmJvc2UgZmlsZXMgdG8gdXNlIGEgbmV3IGRlYnVnIGNoYW5uZWwsICJycGMuIgoKCSogZGxscy9jb21jdGwzMi90ZXN0cy9tcnUuYzogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUNvbW1lbnQgb3V0IGEgdGVzdCB0aGF0IGNyYXNoZXMgb24gZWFybHkgdmVyc2lvbnMuCgoJKiBkbGxzL3NobHdhcGkvcGF0aC5jLCBkbGxzL3NobHdhcGkvdGVzdHMvcGF0aC5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCVRlc3RzIGFuZCBzbWFsbCBmaXggZm9yIFBhdGhNYWtlUHJldHR5KCkuCglGaXggYSBjcmFzaCBhbmQgdGVzdCBmYWlsdXJlIHdpdGggZWFybHkgbmF0aXZlIGRsbHMuCgoJKiBkbGxzL2NvbWN0bDMyL2FuaW1hdGUuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVVuaWNvZGlmaWNhdGlvbiBhbmQgdHlwZXNhZmUgaW50ZXJmYWNlcy4KCgkqIGRsbHMvb2xlYXV0MzIvdG1hcnNoYWwuYzogTWlrZSBIZWFybiA8bWhAY29kZXdlYXZlcnMuY29tPgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBJbXBsZW1lbnQgVlRfQllSRUYgfCBWVF9CU1RSIG1hcnNoYWxsaW5nLgoJLSBBZGQgbW9yZSBpbnRlZ2VyIHR5cGVzIGZvciBtYXJzaGFsaW5nIGFuZCB1bm1hcnNoYWxpbmcuCgktIEltcGxlbWVudCBWVF9CWVJFRiB8IFZUX0JTVFIgdW5tYXJzaGFsaW5nLgoJLSBEb24ndCBhbGxvY2F0ZSBtZW1vcnkgZm9yIFRLSU5EX0RJU1BBVENIL1RLSU5EX0lOVEVSRkFDRQoJICB1bm1hcnNoYWxpbmcgYXMgaXQgd2lsbCBiZSBsb3N0IGluIHRoZSBzdWNjZXNzIGNhc2UgYW5kIGludGVyZmVyZXMKCSAgd2l0aCB0aGUgZmFpbHVyZSBjYXNlLgoKCSogZGxscy9udGRsbC9yZWcuYzogSXZhbiBMZW8gUHVvdGkgPGl2YW5sZW9AZ21haWwuY29tPgoJTWFrZSBSdGwqUmVnaXN0cnkqIGZ1bmN0aW9ucyBjYXNlIGluc2Vuc2l0aXZlLgoKCSogZGxscy9yaWNoZWQyMC9jYXJldC5jOiBHZXJhbGQgUGZlaWZlciA8Z2VyYWxkQHBmZWlmZXIuY29tPgoJTWFrZSBNRV9BcnJvd0xlZnQoKSByZXR1cm4gYSB2YWx1ZSBpbiBldmVyeSBjYXNlLgoKCSogaW5jbHVkZS9ucGFwaS5oOiBNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJRml4IGZ1bmN0aW9uIGRlZmluaXRpb25zIGZvciBtc3ZjIGJ1aWxkLgoKCSogZGxscy9jb21tZGxnL3ByaW50ZGxnLmM6IEp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCUNoYW5nZSBhIGZpeG1lIHRvIGEgd2FybiwgYW5kIHVzZSBXIHZlcnNpb24gb2YgY2FsbC4KCgkqIGRsbHMvZ2RpL21ldGFmaWxlLmM6IFVscmljaCBDemVrYWxsYSA8dWxyaWNoQGNvZGV3ZWF2ZXJzLmNvbT4KCUlmIGEgemVybyBpbmRleCBpcyBwYXNzZWQgdG8gTUVUQV9TRUxFQ1RDTElQUkVHSU9OIHJlc2V0IHRoZSBjbGlwCglyZWdpb24uCgoJKiBwcm9ncmFtcy93aW5ldGVzdC9tYWluLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglTcGVjaWFsIGNhc2UgV2luOXggcGxhdGZvcm1zIGluIHRoZSBkZXNrdG9wIHZpc2liaWxpdHkgdGVzdCwgaW4gV2luOTgKCUdldFVzZXJPYmplY3RJbmZvcm1hdGlvbiBpcyBhIHN0dWIgcmV0dXJuaW5nIEVSUk9SX0NBTExfTk9UX0lNUExFTUVOVEVELgoKCSogZGxscy9uZXRhcGkzMi90ZXN0cy93a3N0YS5jOiBKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglGaXggYSB0ZXN0IHRvIHBhc3MgdW5kZXIgWFAuCgoJKiBkbGxzL3VzZXIvdGVzdHMvbXNnLmMsIGRsbHMvdXNlci90ZXN0cy93aW4uYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglGaXggc29tZSBtc2cuYyBhbmQgd2luLmMgZmFpbHVyZXMgcnVubmluZyBvbiBOVDQgYW5kIFhQLgoKCSogcHJvZ3JhbXMvd2luZWNmZy9kcml2ZS5jLCBwcm9ncmFtcy93aW5lY2ZnL2RyaXZldWkuYzoKCVN0ZXZlbiBFZHdhcmRzIDxzdGV2ZW5fZWQ0MTUzQHlhaG9vLmNvbT4KCVBvcnRpbmcgZml4ZXMuCgoJKiBkbGxzL21zY21zL21zY21zLnNwZWM6IFN0ZXZlbiBFZHdhcmRzIDxzdGV2ZW5fZWQ0MTUzQHlhaG9vLmNvbT4KCUNvcnJlY3QgQ2hlY2tCaXRtYXBCaXRzIGVudHJ5LgoKCSogZGxscy9tYXBpMzIvTWFrZWZpbGUuaW46IFN0ZXZlbiBFZHdhcmRzIDxzdGV2ZW5fZWQ0MTUzQHlhaG9vLmNvbT4KCUxpbmsgbWFwaTMyIHRvIG50ZGxsLgoKCSogZGxscy9udGRsbC90aW1lLmM6IEFsZXggVmlsbGFj7XMgTGFzc28gPGFfdmlsbGFjaXNAcGFsb3NhbnRvLmNvbT4KCUFkZCBFQ1QgdG8gdGltZXpvbmUgbGlzdC4KCgkqIGRsbHMvZHNvdW5kL3Rlc3RzL3Byb3BzZXQuYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCVByaXZhdGUgcHJvcGVydHkgc2V0cyBkbyBub3QgZXhpc3QgaW4gZWFybHkgdmVyc2lvbnMgb2YgRGlyZWN0IFNvdW5kCglzbyBza2lwIHRlc3RzIGlmIG5vdCBzdXBwb3J0ZWQuCglBZGQgdGVzdHMgZm9yIEEsIFcgYW5kIDEgdmFyaWF0aW9ucyBvZiBkYXRhLgoKCSogZGxscy9kc291bmQvcHJvcHNldC5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQWRkIG1pc3NpbmcgZnVuY3Rpb25hbGl0eS4KCUFkZCBtb3JlIGFuZCBiZXR0ZXIgZXJyb3IgbWVzc2FnZXMuCglBZGQgY2hlY2tzIGZvciBmYWlsZWQgSGVhcEFsbG9jLgoKCSogZGxscy94MTFkcnYvY2xpcGJvYXJkLmMsIGRsbHMveDExZHJ2L3hyZW5kZXIuYzoKCVBldGVyIEJlcmcgTGFyc2VuIDxwZWJsQG1hdGgua3UuZGs+CglBc3NvcnRlZCBtZW1sZWFrIGZpeGVzLiBGb3VuZCBvbiBNaWNoYWVsIFN0ZWZhbml1YyBzbWF0Y2ggbGlzdC4KCjIwMDUtMDMtMTEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3dzb2NrMzIvc29ja2V0LmM6IFJlcGxhY2UgY2FsbG9jKCkgYnkgSGVhcEFsbG9jKCkuCgoJKiBpbmNsdWRlL2RpbnB1dC5oOiBHZXQgcmlkIG9mIHZlcnNpb24gI2lmZGVmcy4KCgkqIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmMsIGRsbHMvb2xlMzIvdGVzdHMvc3RvcmFnZTMyLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglTdGdPcGVuU3RvcmFnZSBzaG91bGRuJ3Qgb3BlbiB6ZXJvIGxlbmd0aCBzdG9yYWdlIGZpbGVzLgoKCSogcHJvZ3JhbXMvdW5pbnN0YWxsZXIvQ3MucmMsIHByb2dyYW1zL3VuaW5zdGFsbGVyL0RlLnJjLAoJICBwcm9ncmFtcy91bmluc3RhbGxlci9Fcy5yYywgcHJvZ3JhbXMvdW5pbnN0YWxsZXIvRnIucmMsCgkgIHByb2dyYW1zL3VuaW5zdGFsbGVyL0l0LnJjLCBwcm9ncmFtcy91bmluc3RhbGxlci9QdC5yYywKCSAgcHJvZ3JhbXMvdW5pbnN0YWxsZXIvcnNyYy5yYzoKCUpvbmF0aGFuIEVybnN0IDxKb25hdGhhbkBFcm5zdEZhbWlseS5jaD4KCUludGVybmF0aW9uYWxpemF0aW9uLgoKCSogZG9jdW1lbnRhdGlvbi9zYW1wbGVzL2NvbmZpZywgbWlzYy9yZWdpc3RyeS5jOgoJR2V0IHJpZCBvZiB0aGUgV2luZG93cyByZWdpc3RyeSBsb2FkaW5nIG9uIHN0YXJ0dXAsIHRoaXMgbmVlZHMgdG8gYmUKCWRvbmUgZGlmZmVyZW50bHkuCgoJKiBkbGxzL3dpbnNvY2svdGVzdHMvc29jay5jOiBUaG9tYXMgS2hvIDx0aG9tYXNraG9AZ21haWwuY29tPgoJQWRkZWQgc2VsZWN0X3NlcnZlcigpIHRlc3QgdGhhdCB1c2VzIHNlbGVjdCgpIGluIHNlcnZpbmcgY2xpZW50cy4KCgkqIGRsbHMvd3NvY2szMi9zb2NrZXQuYywgZGxscy93aW5tbS9kcml2ZXIuYywgZGxscy93aW5tbS9tbWlvLmMsCgkgIGRsbHMvd2lubW0vbW1zeXN0ZW0uYywgZGxscy93aW5tbS90aW1lLmM6CglQZXRlciBCZXJnIExhcnNlbiA8cGVibEBtYXRoLmt1LmRrPgoJQXNzb3J0ZWQgbWVtbGVhayBmaXhlcy4gRm91bmQgb24gTWljaGFlbCBTdGVmYW5pdWMgc21hdGNoIGxpc3QuCgoJKiBwcm9ncmFtcy91bmluc3RhbGxlci9Fbi5yYywgcHJvZ3JhbXMvdW5pbnN0YWxsZXIvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL3VuaW5zdGFsbGVyL21haW4uYywgcHJvZ3JhbXMvdW5pbnN0YWxsZXIvcnNyYy5yYzoKCUpvbmF0aGFuIEVybnN0IDxKb25hdGhhbkBFcm5zdEZhbWlseS5jaD4KCUFkZCBzZWFyY2ggZmllbGQgd2l0aCBmaW5kLWFzLXlvdS10eXBlIGZ1bmN0aW9uLgoKCSogdG9vbHMvd2luZWdjYy93aW5lZ2NjLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglVc2UgLWlzeXN0ZW0gZm9yIHN5c3RlbSBpbmNsdWRlcyBhcyB0aGV5IHNob3VsZCBiZSBwcm9jZXNzZWQgYWZ0ZXIgdGhlCgktSSBpbmNsdWRlcy4gU3BvdHRlZCBieSBCb2F6IEhhcnJvc2guCgoJKiBkbGxzL2QzZDkvYmFzZXRleHR1cmUuYywgZGxscy9kM2Q5L2N1YmV0ZXh0dXJlLmMsCgkgIGRsbHMvZDNkOS9pbmRleGJ1ZmZlci5jLCBkbGxzL2QzZDkvcmVzb3VyY2UuYywgZGxscy9kM2Q5L3N1cmZhY2UuYywKCSAgZGxscy9kM2Q5L3RleHR1cmUuYywgZGxscy9kM2Q5L3ZlcnRleGJ1ZmZlci5jLCBkbGxzL2QzZDkvdm9sdW1lLmMsCgkgIGRsbHMvZDNkOS92b2x1bWV0ZXh0dXJlLmMsIGRsbHMvZDNkOS92c2hhZGVyZGVjbGFyYXRpb24uYzoKCU9saXZlciBTdGllYmVyIDxvbGl2ZXJfc3RpZWJlckB5YWhvby5jby51az4KCUNoYW5nZSBBZGRSZWYgaW4gcXVlcnlJbnRlcmZhY2UgdG8gSVVua25vd25fQWRkUmVmLgoJTW92ZSBwcFZvdWxtZSB0byBkM2Q5dm9sb3VtZWltcGwgc3RydWN0dXJlLgoJU29tZSBtaW5vciBzdHlsaXN0aWMgY2hhbmdlcyAobWFraW5nIGV2ZXJ5dGhpbmcgdGhlIHNhbWUpLgoKCSogZGxscy9yaWNoZWQyMC9lZGl0b3IuYywgZGxscy9yaWNoZWQyMC9yZWFkZXIuYywgZGxscy9yaWNoZWQyMC9ydW4uYywKCSAgZGxscy9yaWNoZWQyMC9zdHlsZS5jLCBkbGxzL3JpY2hlZDIwL3VuZG8uYzoKCUtyenlzenRvZiBGb2x0bWFuIDxrZm9sdG1hbkBwb3J0YWwub25ldC5wbD4KCS0gRU1fU1RSRUFNSU4gY2FuIG5vdyBkZWFsIHdpdGggdW5kbyBpbiBhIHJlYXNvbmFibGUgbWFubmVyIChubwoJICBtdWx0aXBsZSB1bmRvIGFjdGlvbnMgaW4gb25lIEVNX1NUUkVBTUlOKS4KCS0gUmVsYXRlZCBjaGFuZ2VzIHRvIHVuZG8gY29kZSAodW1JZ25vcmUgbW9kZSBpcyBub3cgaGFuZGxlZAoJICBjb3JyZWN0bHkpLgoJLSBOdW1lcm91cyBpbXByb3ZlbWVudHMgaW4gdGhlIFJURiByZWFkZXI6IGl0IHJlYWRzIHNvbWUgY2hhcmFjdGVyCgkgIGF0dHJpYnV0ZXMgbm93ICh5b3Ugd2lsbCBoYXZlIHByb3BlciBzbWFsbCBwcmludCBpbiBsaWNlbnNlIGFncmVlbWVudHMKCSAgbm93KS4KCS0gRml4ZWQgYSBtZW1vcnkgb3ZlcndyaXRlIGJ1ZyBpbiBjb252ZXJzaW9uIGZyb20gQ0hBUkZPUk1BVDJBIHRvCgkgIENIQVJGT1JNQVQyVy4KCgkqIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL2NvbXBvYmpfcHJpdmF0ZS5oLAoJICBkbGxzL29sZTMyL21hcnNoYWwuYywgZGxscy9vbGUzMi9ycGMuYywgZGxscy9vbGUzMi9zdHVibWFuYWdlci5jOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBSZW5hbWUgYXBhcnRtZW50IGZ1bmN0aW9ucyB0byBiZWNvbWUgbW9yZSBvYmplY3Qtb3JpZW50ZWQuCgktIFJlbmFtZSByZWdpc3Rlcl9pZnN0dWIgdG8gbWFyc2hhbF9vYmplY3QgdG8gbW9yZSBhY2N1cmF0ZWx5IGRlc2NyaWJlCgkgIHdoYXQgaXQgZG9lcy4KCS0gQWRkIG5ldyBmdW5jdGlvbiwgYXBhcnRtZW50X2dldG94aWQsIHRvIHByZXBhcmUgZm9yIGEgcG9zc2libGUKCSAgZnV0dXJlIHBhdGNoIHdoZXJlIHJlbW90aW5nIGlzIHN0YXJ0ZWQgb24gZGVtYW5kLgoKCSogZGxscy9vbGVhdXQzMi90bWFyc2hhbC5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglBZGQgb3V0ZXIgdW5rbm93biBzdXBwb3J0IGZvciB0eXBlbGliIG1hcnNoYWxlci4KCjIwMDUtMDMtMTAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBWRVJTSU9OLCBjb25maWd1cmUsIEFOTk9VTkNFLCBDaGFuZ2VMb2c6IFJlbGVhc2UgMjAwNTAzMTAuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjIwMDUtMDMtMTAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3NoZG9jdncvc2hkb2N2d19tYWluLmM6IEp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCUZpeCBhIGNyYXNoIGlmIHRoZSBNb3ppbGxhIEFjdGl2ZVggY29udHJvbCBkb2Vzbid0IGltcGxlbWVudAoJRGxsQ2FuVW5sb2FkTm93LgoKCSogZGxscy9vbGUzMi9jb21wb2JqLmM6IEp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCUZpeCB0aGUgY2FsbGluZyBjb252ZW50aW9uIG9mIERsbENhblVubG9hZE5vdy4KCgkqIGRsbHMvbXNpL2FwcHNlYXJjaC5jOiBKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglGaXggYSByZWdyZXNzaW9uIGluIEFwcFNlYXJjaC4KCgkqIGRsbHMvbXNpL21zaXByaXYuaCwgZGxscy9tc2kvcmVnaXN0cnkuYzoKCUp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCUltcGxlbWVudCBNc2lFbnVtUmVsYXRlZFByb2R1Y3RzLgoKCSogZGxscy91c2VyL21lc3NhZ2UuYywgc2VydmVyL3dpbmRvdy5jOgoJQ2xlYXIgdGhlIGludGVybmFsIHBhaW50IGZsYWcgaW4gdGhlIHNlcnZlciBiZWZvcmUgcmV0dXJuaW5nIGEKCVdNX1BBSU5UIG1lc3NhZ2UgdG8gYXZvaWQgYW4gZXh0cmEgc2VydmVyIHJvdW5kLXRyaXAuCgoJKiBwcm9ncmFtcy93aW5ldGVzdC9tYWluLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgYSB0ZXN0IGZvciB0aGUgZGVza3RvcCB2aXNpYmlsaXR5IGJhc2VkIG9uIHRoZSBNU0ROIGFydGljbGUKCXBvaW50ZWQgb3V0IGJ5IFJvYmVydCBTaGVhcm1hbi4KCgkqIGRsbHMvdXNlci90ZXN0cy9saXN0Ym94LmMsIHdpbmRvd3Mvd2lucHJvYy5jOgoJTWFyY3VzIE1laXNzbmVyIDxtZWlzc25lckBzdXNlLmRlPgoJVXNlIDUxMiBieXRlIGJ1ZmZlciBmb3IgYnVmZmVyIG9mIExCX0dFVFRFWFQgYW5kIENCX0dFVExCVEVYVC4KCUFkZGVkIHRlc3RjYXNlIHdpdGggPiAyNTYgYnl0ZSBzdHJpbmcgaW4gbGlzdGJveC4KCgkqIHRvb2xzL3dpbmVzaGVsbGxpbms6IEJyb3VhcmQgTmljb2xhcyA8bmljb2xhcy5icm91YXJkQGxpYmVydHlzdXJmLmZyPgoJRml4IG1lbnUgYmFja3NsYXNoIGVzY2FwaW5nLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvZW52aXJvbi5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJVGVzdCBmb3IgJVN5c3RlbXJvb3QlLgoKCSogZGxscy91c2VyL3Njcm9sbC5jLCBkbGxzL3VzZXIvdXNlcjMyLnNwZWM6CglQaGlsIEtyeWxvdiA8cGhpbEBuZXdzdGFyLnJpbmV0LnJ1PgoJSW1wbGVtZW50ZWQgR2V0U2Nyb2xsQmFySW5mbygpIGZ1bmN0aW9uIGFuZCBTQk1fR0VUU0NST0xMQkFSSU5GTwoJbWVzc2FnZS4KCgkqIGRsbHMvdXNlci9NYWtlZmlsZS5pbiwgZGxscy91c2VyL21lc3NhZ2UuYywgZGxscy91c2VyL21lc3NhZ2UuaCwKCSAgd2luZG93cy9tZXNzYWdlLmM6CglNZXJnZSB0aGUgcmVzdCBvZiB0aGUgbWVzc2FnaW5nIGNvZGUgaW50byBkbGxzL3VzZXIvbWVzc2FnZS5jIGFuZCBnZXQKCXJpZCBvZiB3aW5kb3dzL21lc3NhZ2UuYy4KCgkqIHByb2dyYW1zL3VuaW5zdGFsbGVyL0VuLnJjLCBwcm9ncmFtcy91bmluc3RhbGxlci9tYWluLmMsCgkgIHByb2dyYW1zL3VuaW5zdGFsbGVyL21haW4uaCwgcHJvZ3JhbXMvdW5pbnN0YWxsZXIvcmVzb3VyY2UuaCwKCSAgcHJvZ3JhbXMvdW5pbnN0YWxsZXIvcnNyYy5yYzoKCUpvbmF0aGFuIEVybnN0IDxKb25hdGhhbkBFcm5zdEZhbWlseS5jaD4KCVVzZSBhIGRpYWxvZyBpbnN0ZWFkIG9mIGEgbm9ybWFsIHdpbmRvdy4KCgkqIGRsbHMvdXNlci9tZXNzYWdlLmMsIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwKCSAgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3F1ZXVlLmMsIHNlcnZlci90cmFjZS5jOgoJUHJvcGVybHkgY29wZSB3aXRoIGdldF9tZXNzYWdlIGJlaW5nIGNhbGxlZCByZWN1cnNpdmVseSB3aGlsZQoJcHJvY2Vzc2luZyBhIGhhcmR3YXJlIG1lc3NhZ2UuCgoJKiBkbGxzL3gxMWRydi93aW50YWIuYzogUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CgktIFhMaXN0SW5wdXREZXZpY2VzIHNwZWMgc2F5IHRoYXQgZGV2aWNlIGxpc3Qgc2hvdWxkIGJlIGZyZWVkIHVzaW5nCgkgIFhGcmVlRGV2aWNlTGlzdAoJLSBiZXR0ZXIgcm9idXN0bmVzcyBvbiBYMTFEUlZfQXR0YWNoRXZlbnRRdWV1ZVRvVGFibGV0CgoJKiBkbGxzL21zdmNydC9zY2FuZi5oLCBkbGxzL21zdmNydC90ZXN0cy9zY2FuZi5jOgoJQy4gU2NvdHQgQW5hbmlhbiA8Y3Njb3R0QGNzY290dC5uZXQ+CglBbGxvdyBzY2FuZiB0byBjb250aW51ZSBwYXJzaW5nIGZvcm1hdCBzdHJpbmcgYWZ0ZXIgYSAnJW4nLgoKCSogd2luZG93cy9tZXNzYWdlLmM6CglUYWtlIG1lc3NhZ2UgZmlsdGVyaW5nIGludG8gYWNjb3VudCB3aGVuIHVwZGF0aW5nIHRoZSBzdGF0aWMgZGF0YSBmb3IKCWRvdWJsZSBjbGljayBzdXBwb3J0LgoKCSogZGxscy9nZGkvZ2Rpb2JqLmM6CglBbGxvY2F0ZSBmb250cyBhbmQgcmVnaW9ucyBmcm9tIHRoZSBsYXJnZSBoZWFwIHRvby4KCgkqIHNlcnZlci9yZWdpc3RyeS5jOiBQZXRlciBCZXJnIExhcnNlbiA8cGVibEBtYXRoLmt1LmRrPgoJVG1wIHdhcyBub3QgZnJlZWQgaW4gY2FzZSBvZiBlcnJvcnMgaW4gc2F2ZV9icmFuY2goKS4KCgkqIGRsbHMvcmljaGVkaXQvTWFrZWZpbGUuaW4sIGRsbHMvcmljaGVkaXQvYW5zaV9nZW4uaCwKCSAgZGxscy9yaWNoZWRpdC9hbnNpX3N5bS5oLCBkbGxzL3JpY2hlZGl0L3JlYWRlci5jLAoJICBkbGxzL3JpY2hlZGl0L3JpY2hlZDMyLmgsIGRsbHMvcmljaGVkaXQvcmljaGVkaXQuYywKCSAgZGxscy9yaWNoZWRpdC9ydGYuaCwgZGxscy9yaWNoZWRpdC9ydGYydGV4dC5oLAoJICBkbGxzL3JpY2hlZGl0L3N0ZGNoYXJuYW1lcy5oLCBkbGxzL3JpY2hlZGl0L3RleHQtd3JpdGVyLmMsCgkgIGRsbHMvcmljaGVkaXQvdGV4dF9tYXAuaDoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZvcndhcmQgdGhlIFJpY2hFZGl0IDEuMCBjb250cm9sIHRvIHRoZSBSaWNoRWRpdCAyLjAgY29udHJvbC4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jLCBkbGxzL21zaS9mb3JtYXQuYywgZGxscy9tc2kvbXNpLmMsCgkgIGRsbHMvbXNpL21zaXF1ZXJ5LmMsIGRsbHMvbXNpL3BhY2thZ2UuYywgZGxscy9tc2kvcHJldmlldy5jLAoJICBkbGxzL21zaS9yZWNvcmQuYywgZGxscy9tc2kvc3VtaW5mby5jOgoJSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJLSBtYWtlIHN1cmUgbXNpaGFuZGxlMm1zaWluZm8gaXMgY29ycmVjdGx5IG1hdGNoZWQgd2l0aCBtc2lvYmpfcmVsZWFzZQoJLSBkb24ndCBkbyByZWR1bmRhbnQgTlVMTCBjaGVja3MKCgkqIGluY2x1ZGUvcHJvcGlkbC5pZGw6IEp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCUFkZCBzb21lIG1pc3NpbmcgZGVjbGFyYXRpb25zLgoKCSogZGxscy93aW5pbmV0L2h0dHAuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBGdWxseSBkZWxldGUgY3VzdG9tIGhlYWRlcnMgb24gY29ubmVjdGlvbiBvcGVuaW5nLgoJLSBGcmVlIHVubmVlZGVkIG1lbW9yeSBvbiBjbGVhcmluZyBvZiBzdGFuZGFyZCBoZWFkZXJzLgoJLSBGaXggaW5kZXggc2FuaXR5IHRlc3QgaW4gZGVsZXRlIGZ1bmN0aW9uLgoKCSogZGxscy9hZHZhcGkzMi9zZXJ2aWNlLmM6IEFsZXhhbmRlciBZYXdvcnNreSA8eWF3b3Jza3lAbWlndXNvZnQucnU+CglDb3JyZWN0IGluY29ycmVjdCB1c2Ugb2YgYXJndW1lbnRzIHRvIFF1ZXJ5U2VydmljZUNvbmZpZ0EuIFNwb3R0ZWQgYnkKCVRyb3kgUm9sbG8uCgoJKiBkbGxzL29wZW5nbDMyL3dnbC5jLCBkbGxzL29wZW5nbDMyL3dnbF9leHQuYywKCSAgZGxscy9vcGVuZ2wzMi93Z2xfZXh0Lmg6CglSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCS0gaW1wbGVtZW50cyBXR0xfQVJCX3JlbmRlcl90ZXh0dXJlIHN1cHBvcnQgKG5vIG1vcmUgc3R1YnMpCgktIHBhc3MgZ2xYR2V0UHJvY0FkZHJlc3NBUkIgcHRyIHRvIGluaXRpYWxpc2UgZnVuY3Rpb24KCgkqIGRsbHMvZGRyYXcvZHN1cmZhY2UvZGliLmM6IFBhdWwgVnJpZW5zIDxQYXVsLlZyaWVuc0B4czRhbGwubmw+CglDaGVjayBhbHdheXMgaWYgZGVzdGluYXRpb24gc3VyZmFjZSBpcyBsb2NrZWQuCgoyMDA1LTAzLTA5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy94MTFkcnYvZXZlbnQuYywgZGxscy94MTFkcnYveDExZHJ2Lmg6CglBZGRlZCBXTV9YMTFEUlZfREVMRVRFX1dJTkRPVyBtZXNzYWdlIHRvIGhhbmRsZSBjbG9zZSByZXF1ZXN0cyBzbyB0aGF0Cgl3ZSBjYW4gc2VuZCB0aGUgV01fU1lTQ09NTUFORCB3aXRoIFNlbmRNZXNzYWdlIGluc3RlYWQgb2YgUG9zdE1lc3NhZ2UuCglBZGRlZCBtaXNzaW5nIE5PTkFNRUxFU1NVTklPTiBkZWZpbmUuCgoJKiBkbGxzL3JpY2hlZDIwL2NhcmV0LmMsIGRsbHMvcmljaGVkMjAvZWRpdG9yLmMsCgkgIGRsbHMvcmljaGVkMjAvZWRpdG9yLmgsIGRsbHMvcmljaGVkMjAvZWRpdHN0ci5oLAoJICBkbGxzL3JpY2hlZDIwL3BhaW50LmMsIGRsbHMvcmljaGVkMjAvcnVuLmMsIGRsbHMvcmljaGVkMjAvd3JhcC5jOgoJS3J6eXN6dG9mIEZvbHRtYW4gPGtmb2x0bWFuQHBvcnRhbC5vbmV0LnBsPgoJLSBPcHRpbWl6ZWQgcmVwYWludCBvZiB0aGUgYXJlYSBiZWxvdyB0aGUgdGV4dC4KCS0gTUVfSm9pblJ1bnMgZGlkbid0IG1hcmsgdGhlIHBhcmFncmFwaCBmb3IgcmV3cmFwcGluZywgZml4ZWQuCgktIFJlbW92ZWQgUG9zdFF1aXRNZXNzYWdlKDApIGZyb20gV01fREVTVFJPWSBoYW5kbGVyIChkdWghKS4KCS0gVXNlIG9mIEVNX0dFVE9MRUlOVEVSRkFDRSBpcyByZXBvcnRlZCB3aXRoIEZJWE1FIGluc3RlYWQgb2YgVFJBQ0UKCSAgKGFueSBhcHAgdXNpbmcgdGhpcyBtZXNzYWdlIGlzIGxpa2VseSB0byBlbmNvdW50ZXIgbWFqb3IgcHJvYmxlbXMpLgoKCSogZGxscy9tc2Ntcy9tc2Ntcy5zcGVjLCBkbGxzL21zY21zL21zY21zX21haW4uYywgZGxscy9tc2Ntcy9wcm9maWxlLmMsCgkgIGRsbHMvbXNjbXMvc3R1Yi5jOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CgktIEltcGxlbWVudGF0aW9uIHN0dWJzIGZvciBHZW5lcmF0ZUNvcHlGaWxlUGF0aHMsCgkgIFNwb29sZXJDb3B5RmlsZUV2ZW50LgoJLSBDYWxsIERpc2FibGVUaHJlYWRMaWJyYXJ5Q2FsbHMgb24gcHJvY2VzcyBhdHRhY2guCgktIERvY3VtZW50IG1vcmUgZnVuY3Rpb25zLgoKCSogZGxscy9kZHJhdy9kc3VyZmFjZS9kaWIuYzogUGF1bCBWcmllbnMgPFBhdWwuVnJpZW5zQHhzNGFsbC5ubD4KCUNoZWNrIGZvciBOVUxMIGJlZm9yZSB0b3VjaGluZyBzcmMuCgoJKiBkbGxzL3VzZXIvdXNlcl9tYWluLmMsIGRsbHMvdXNlci91c2VyX3ByaXZhdGUuaCwgZGxscy94MTFkcnYvZXZlbnQuYywKCSAgZGxscy94MTFkcnYva2V5Ym9hcmQuYywgZGxscy94MTFkcnYvbW91c2UuYywgZGxscy94MTFkcnYveDExZHJ2LmgsCgkgIGRsbHMveDExZHJ2L3gxMWRydi5zcGVjLCBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jLCBpbmNsdWRlL3dpbi5oLAoJICB3aW5kb3dzL2lucHV0LmM6CglNb3ZlZCBTZW5kSW5wdXQgYW5kIHJlbGF0ZWQgZnVuY3Rpb25zIHRvIHRoZSBVU0VSIGRyaXZlciB0byBhdm9pZCBhCgludW1iZXIgb2YgZGxsIHNlcGFyYXRpb24gaGFja3MuCgoJKiB3aW5kb3dzL3dpbi5jOiBSZW1vdmUgYSB0cmFjZSB0aGF0J3MgY2F1c2luZyB0b28gbXVjaCBvdXRwdXQuCgoJKiBwcm9ncmFtcy93aW5lY2ZnL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5lY2ZnL2RyaXZldWkuYywKCSAgcHJvZ3JhbXMvd2luZWNmZy9tYWluLmM6CglNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglJbXBsZW1lbnRlZCAnQnJvd3NlJyBmdW5jdGlvbmFsaXR5IGZvciB0aGUgZHJpdmUgbWFwcGluZyBwcm9wZXJ0eQoJc2hlZXQuCgoJKiBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW4sIGRsbHMvc2hlbGwzMi9yZWdzdnIuYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLCBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYywKCSAgZGxscy9zaGVsbDMyL3NoZmxkcl91bml4ZnMuYzoKCU1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCUJlZ2lubmluZyBvZiBhIHNoZWxsIG5hbWVzcGFjZSBleHRlbnNpb24gdG8gYnJvd3NlIHRoZSB1bml4CglmaWxlc3lzdGVtLgoKCSogd2luZG93cy9kZWZ3bmQuYzogS3J6eXN6dG9mIEZvbHRtYW4gPGtyenlzenRvZkBmb2x0bWFuLmNvbT4KCVdNX0NBTkNFTE1PREUgcmVzZXRzIG1lbnUgZmxhZyBpbiB0aGUgZGVmYXVsdCB3aW5kb3cgcHJvY2VkdXJlLgoKCSogZGxscy9yaWNoZWQyMC9lZGl0b3IuYzogUGhpbCBLcnlsb3YgPHBoaWxAbmV3c3Rhci5yaW5ldC5ydT4KCUNoYW5nZWQgYnVmZmVyIHNpemUgZm9yIEVNX1NUUkVBTUlOIG1lc3NhZ2UgdG8gNDA5NiwgYXMgaXQncyB3aGF0IE0kCgl1c2VzLgoKCSogaW5jbHVkZS9yaWNoZWRpdC5oOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglSZW1vdmUgZHVwbGljYXRlIG1lc3NhZ2UgZGVmaW5lcyBpbiBoZWFkZXIuCgoJKiBkbGxzL3VzZXIvbWVudS5jLCBpbmNsdWRlL3dpbnVzZXIuaDoKCU1heGltZSBCZWxsZW5n6SA8bWF4aW1lLmJlbGxlbmdlQGxhcG9zdGUubmV0PgoJSW1wbGVtZW50ZWQgTUlJTV9CSVRNQVAgc3RhdGUuCglIYW5kbGUgTU5TX0NIRUNLT1JCTVAgc3R5bGUuCgoJKiBkbGxzL3VzZXIvc3lzcGFyYW1zLmMsIHdpbmRvd3MvaW5wdXQuYzoKCU1ha2UgdGhlIFN3YXBNb3VzZUJ1dHRvbiBmdW5jdGlvbiBhbmQgdGhlIFNQSV9TRVRNT1VTRUJVVFRPTlNXQVAKCXBhcmFtZXRlciB3b3JrIG9uIHRoZSBzYW1lIGZsYWcuCgoJKiBzZXJ2ZXIvd2luZG93LmM6CglEb24ndCBjaGVjayBjaGlsZHJlbiBvZiBtaW5pbWl6ZWQgd2luZG93cyBpbiBnZXRfdXBkYXRlX3JlZ2lvbi4KCgkqIGRsbHMvcmljaGVkMjAvY2FyZXQuYywgZGxscy9yaWNoZWQyMC9lZGl0b3IuYywKCSAgZGxscy9yaWNoZWQyMC9lZGl0b3IuaCwgZGxscy9yaWNoZWQyMC9lZGl0c3RyLmgsCgkgIGRsbHMvcmljaGVkMjAvbGlzdC5jLCBkbGxzL3JpY2hlZDIwL3BhaW50LmMsIGRsbHMvcmljaGVkMjAvcGFyYS5jLAoJICBkbGxzL3JpY2hlZDIwL3J1bi5jLCBkbGxzL3JpY2hlZDIwL3dyYXAuYzoKCUtyenlzenRvZiBGb2x0bWFuIDxrZm9sdG1hbkBwb3J0YWwub25ldC5wbD4KCVRoZSBtZWFuaW5nIG9mIHRoZSByZXdyYXAgZmxhZyBnb3QgaW52ZXJ0ZWQgKE1FUEZfUkVXUkFQIGluc3RlYWQgb2YKCU1FUEZfV1JBUFBFRCkgZm9yIGNvbnNpc3RlbmN5LgoJTWFqb3IgY29kZSBjbGVhbnVwcyBpbiByZXdyYXAvcmVwYWludCBjb2RlLCBsZWFkaW5nIHRvICJzbWFydGVyIgoJYmVoYXZpb3VyIHdydCByZXBhaW50aW5nIHNlbGVjdGlvbnMuCgoJKiBkbGxzL2RwbGF5eC9kcGxvYmJ5LmM6IFJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJQXZvaWQgQ29udmVydFRvR2xvYmFsSGFuZGxlIGNhbGxzLgoKCSogZGxscy9vbGUzMi9zdG9yYWdlMzIuYywgZGxscy9vbGUzMi90ZXN0cy9zdG9yYWdlMzIuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVNoYXJlZCByZWFkaW5nIG9mIHN0b3JhZ2UgZmlsZXMgcmVxdWlyZXMgU1RHTV9UUkFOU0FDVEVELgoKCSogZGxscy9rZXJuZWwvY29uc29sZS5jOiBHYWJyaWVsIEJ1YWRlcyBSdWJpbyA8YnVidUBkb29wbGV4LmVzPgoJV2hlbiBzZW5kaW5nIG11bHRpLWxpbmUgYm94ZXMgdG8gY29uc29sZSB0aHJvZ2ggV2luZUNvbnNvbGVPdXRwdXRBLAoJb25seSB0aGUgZmlyc3QgbGluZSB3YXMgYmVpbmcgdHJhbnNsYXRlZCBpbnRvIHdpZGUtY2hhcnMuCgoJKiBkbGxzL29sZWF1dDMyL3JlY2luZm8uYzogSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCU1vcmUgaW1wbGVtZW50YXRpb24gb2YgSVJlY29yZEluZm8uCgoJKiB3aW5kb3dzL3NweS5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglBZGQgbWVzc2FnZSBzcHkgc3VwcG9ydCBmb3IgUmljaEVkaXQyMFcgY29udHJvbC4KCjIwMDUtMDMtMDggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3VzZXIvcGFpbnRpbmcuYzoKCVByb2Nlc3Mgb25seSBwZW5kaW5nIGV4cG9zZSBldmVudHMgZHVyaW5nIFJEV19VUERBVEVOT1csIG5vdCBhbGwgdGhlCglvdGhlciBYIGV2ZW50cy4KCgkqIGRsbHMveDExZHJ2L2V2ZW50LmM6CglUYWtlIGludG8gYWNjb3VudCB0aGUgZXZlbnQgbWFzayBwYXNzZWQgdG8gTXNnV2FpdEZvck11bHRpcGxlT2JqZWN0c0V4Cgl0byBhbGxvdyBwcm9jZXNzaW5nIG9ubHkgYSBzdWJzZXQgb2YgdGhlIGF2YWlsYWJsZSBYIGV2ZW50cy4KCgkqIHRvb2xzL3dyYy9wYXJzZXIueToKCUFsbG93IHNwZWNpZnlpbmcgZXh0ZW5kZWQgY29udHJvbCBzdHlsZXMgYWxzbyBpbiBzdGFuZGFyZCBkaWFsb2dzCgkocmVwb3J0ZWQgYnkgTWljaGFlbCBMaW4pLgoKCSogZGxscy9yaWNoZWQyMC9jYXJldC5jLCBkbGxzL3JpY2hlZDIwL2VkaXRvci5jLAoJICBkbGxzL3JpY2hlZDIwL2VkaXRvci5oOgoJS3J6eXN6dG9mIEZvbHRtYW4gPGtmb2x0bWFuQHBvcnRhbC5vbmV0LnBsPgoJLSBzcGVjaWFsaXplZCBoYW5kbGVyIGZvciBTRl9URVhUIChBTlNJIG9yIFVuaWNvZGUpLCBzaW1wbGUgYW5kIGZhc3QKCS0gY2xlYXJzIGNvbnRyb2wncyB0ZXh0IG9uIEVNX1NUUkVBTUlOIHdpdGggbm8gU0ZGX1NFTEVDVElPTgoKCSogZGxscy9yaWNoZWQyMC9yZWFkZXIuYzogS3J6eXN6dG9mIEZvbHRtYW4gPGtmb2x0bWFuQHBvcnRhbC5vbmV0LnBsPgoJLSBTaW5nbGUgcXVvdGVzIGFyZSBub3cgaGFuZGxlZCBwcm9wZXJseSAocHJldmlvdXNseSB0aGV5IHdlcmUKCSAgaW5zZXJ0ZWQgYXMgW1snXV0pLgoJLSBCZXR0ZXIgaGFuZGxpbmcgb2YgY2FsbGJhY2sgZnVuY3Rpb24ncyByZXN1bHRzLgoKCSogZGxscy9tc2Ntcy9sY21zX2FwaS5oLCBkbGxzL21zY21zL21zY21zX21haW4uYywgZGxscy9tc2Ntcy9zdHViLmMsCgkgIGRsbHMvbXNjbXMvdHJhbnNmb3JtLmM6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCS0gSW1wbGVtZW50IFRyYW5zbGF0ZUJpdG1hcEJpdHMuCgktIERvbid0IHBhc3MgYm9ndXMgaW50ZW50IHZhbHVlcyB0byBsY21zLgoKCSogcHJvZ3JhbXMvd2luZXRlc3QvbWFpbi5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJTWFrZSBydW5uaW5nIHRlc3RzIG9uIGEgdmlzaWJsZSBkZXNrdG9wIGEgbWFuZGF0b3J5IHJlcXVpcmVtZW50LgoKCSogZGxscy94MTFkcnYvd2luZG93LmM6IE1heGltZSBCZWxsZW5n6SA8bWF4aW1lLmJlbGxlbmdlQGxhcG9zdGUubmV0PgoJLSBGaXggdW5tb3ZhYmxlIHdpbmRvd3MgaWYgdGhlIHdpbmRvdyBzdHlsZSBpcyBzZXQgdG8gV1NfUE9QVVAgfAoJICBXU19WSVNJQkxFIGFuZCBXU19FWF9BUFBXSU5ET1cuCgktIEZpeCBtZXRhY2l0eSBkaXNwbGF5aW5nIGRlY29yYXRpb25zIHdoZXJlIGl0IHNob3VsZCBub3QuCgoJKiBkbGxzL2RpbnB1dC9rZXlib2FyZC5jLCBkbGxzL3VzZXIvbWVzc2FnZS5jLAoJICBkbGxzL3dpbm1tL21jaWF2aS9tY2lhdmkuYywgd2luZG93cy9xdWV1ZS5jOgoJTWFrZSBzdXJlIHRvIGFsd2F5cyBwYXNzIHZhbGlkIFFTXyogZmxhZ3MgdG8KCU1zZ1dhaXRGb3JNdWx0aXBsZU9iamVjdHMuCgoJKiBNYWtlLnJ1bGVzLmluLCBkbGxzL01ha2VkbGwucnVsZXMuaW4sIGRsbHMvZ2RpL01ha2VmaWxlLmluLAoJICBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwgZGxscy9zaGVsbDMyL01ha2VmaWxlLmluLAoJICBkbGxzL3VzZXIvTWFrZWZpbGUuaW4sIHRvb2xzL3dpbmVidWlsZC9tYWluLmMsCgkgIHRvb2xzL3dpbmVidWlsZC93aW5lYnVpbGQubWFuLmluLCB0b29scy93aW5lZ2NjL3dpbmVnY2MuYzoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglBZGQgc3VwcG9ydCBmb3IgLmV4ZSdzIHdpdGggZXhwb3J0ZWQgZnVuY3Rpb25zLgoKCSogZGxscy94MTFkcnYveGZvbnQuYzogQWRkZWQgc3VwcG9ydCBmb3IgaXNvODg1OS0xNiBjaGFyc2V0LgoKCSogZGxscy9yaWNoZWQyMC9NYWtlZmlsZS5pbiwgZGxscy9yaWNoZWQyMC9lZGl0b3IuYywKCSAgZGxscy9yaWNoZWQyMC9lZGl0b3IuaCwgZGxscy9yaWNoZWQyMC9yaWNob2xlLmMsIGRsbHMvdXVpZC91dWlkLmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IEVNX0dFVE9MRUlOVEVSRkFDRS4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jOiBVbHJpY2ggQ3pla2FsbGEgPHVscmljaEBjb2Rld2VhdmVycy5jb20+CglBbGxvY2F0ZSBzcGFjZSBmb3IgdGVybWluYXRpbmcgbnVsbC4KCgkqIGRsbHMvcmljaGVkMjAvZWRpdG9yLmMsIGRsbHMvcmljaGVkMjAvZWRpdG9yLmgsCgkgIGRsbHMvcmljaGVkMjAvZWRpdHN0ci5oLCBkbGxzL3JpY2hlZDIwL3BhaW50LmMsIGRsbHMvcmljaGVkMjAvcnVuLmMsCgkgIGRsbHMvcmljaGVkMjAvc3R5bGUuYywgZGxscy9yaWNoZWQyMC93cmFwLmM6CglLcnp5c3p0b2YgRm9sdG1hbiA8a2ZvbHRtYW5AcG9ydGFsLm9uZXQucGw+CglPbGQgZm9udCBtYW5hZ2VtZW50IHJlcGxhY2VkIGJ5IHRoZSBjYWNoZS1iYXNlZCBvbmUsIHdoaWNoIGtlZXBzCgltYXhpbXVtIG9mIDEwIEhGT05UcyBhdCBvbmNlLCBpbnN0ZWFkIG9mIG9uZSBwZXIgYSBjb3VwbGUgb2YgcnVucy4KCgkqIGluY2x1ZGUvd2luc29jay5oOgoJRml4ZWQgV1NfRkRfQ0xSIGFuZCBXU19GRF9TRVQgbWFjcm9zIChzcG90dGVkIGJ5IFRob21hcyBLaG8pLgoKCSogZGxscy91cmxtb24vdXJsbW9uLnNwZWM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQWRkIGEgY29tbWVudCBleHBsYWluaW5nIHdoeSBDRExHZXRMb25nUGF0aE5hbWVbQVddIGFuZAoJSXNKSVRJblByb2dyZXNzIGhhdmUgaGFyZGNvZGVkIG9yZGluYWxzLgoKCSogZGxscy9tc2kvYWN0aW9uLmM6IFVscmljaCBDemVrYWxsYSA8dWxyaWNoQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBhIG1lbW9yeSBsZWFrLgoKMjAwNS0wMy0wNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMveDExZHJ2L3gxMWRydi5oOiBBZGRlZCBhIG1pc3NpbmcgcHJvdG90eXBlLgoKCSogZGxscy94MTFkcnYvY2xpcGJvYXJkLmMsIGRsbHMveDExZHJ2L2V2ZW50LmMsIGRsbHMveDExZHJ2L3gxMWRydi5oLAoJICBkbGxzL3gxMWRydi94MTFkcnYuc3BlYywgZGxscy94MTFkcnYveDExZHJ2X21haW4uYywKCSAgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLCBzZXJ2ZXIvY2xpcGJvYXJkLmMsCgkgIHNlcnZlci9wcm90b2NvbC5kZWY6CglVbHJpY2ggQ3pla2FsbGEgPHVscmljaEBjb2Rld2VhdmVycy5jb20+CglDcmVhdGUgYSB0aHJlYWQtc3BlY2lmaWMgc2VsZWN0aW9uIHdpbmRvdyB0byBtYWtlIHN1cmUgd2UgcmVjZWl2ZSB0aGUKCXNlbGVjdGlvbiBldmVudHMgaW4gdGhlIGNvcnJlY3QgdGhyZWFkLgoKCSogZGxscy9rZXJuZWwvbmVfbW9kdWxlLmMsIGRsbHMva2VybmVsL3Byb2Nlc3MuYywKCSAgcHJvZ3JhbXMvd2luZXZkbS9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luZXZkbS93aW5ldmRtLmM6CglSZWluIEtsYXplcyA8d2lqbkB3YW5hZG9vLm5sPgoJU3VwcG9ydCBleGVjdXRpb24gb2YgcGlmIGZpbGVzLgoKCSogZGxscy91c2VyL3Rlc3RzL3N5c3BhcmFtcy5jOiBKdXN0aW4gQ2hldnJpZXIgPGpjaGV2cmllckBuZXhpY29tLm5ldD4KCVBhdWwgVnJpZW5zIDxQYXVsLlZyaWVuc0B4czRhbGwubmw+CgktIENvbnNvbGlkYXRlIGVycm9yIG1lc3NhZ2UgaGFuZGxpbmcuCgktIEFkZCBlcnJvciBjaGVja2luZyB0byBhbGwgaW5pdGlhbCBTeXN0ZW1QYXJhbWV0ZXJzSW5mb0EgY2FsbHMgaW4KCSAgZWFjaCBwYXJhbWV0ZXIgdGVzdCB0byBtYWtlIHN1cmUgdGhhdCBpZiBhIGdpdmVuIHBhcmFtZXRlciBpc24ndAoJICBzdXBwb3J0ZWQgb3IgaGFzIGZhaWxlZCBpbiBzb21lIG90aGVyIHdheSB0aGF0IHdlIHJldHVybiBhbmQgZG9uJ3QKCSAgY29udGludWUgb24gd2l0aCB0aGUgdGVzdC4KCS0gU2V0TGFzdEVycm9yIGJlZm9yZSBjYWxsaW5nIHRlc3RfZXJyb3JfbXNnLgoJLSBTUElfe0dFVCxTRVR9SUNPTlRJVExFV1JBUCBpcyBzdXBwb3J0ZWQgb24gV2luOTguCgoJKiBkbGxzL29sZWF1dDMyL01ha2VmaWxlLmluLCBkbGxzL29sZWF1dDMyL29sZWF1dC5jLAoJICBkbGxzL29sZWF1dDMyL29sZWF1dDMyLnNwZWMsIGRsbHMvb2xlYXV0MzIvcmVjaW5mby5jOgoJSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCS0gSW1wbGVtZW50ZWQgR2V0UmVjb3JkSW5mb0Zyb21UeXBlSW5mbyBhbmQgR2V0UmVjb3JkSW5mb0Zyb21HdWlkLgoJLSBCZWdpbm5pZyBpbXBsZW1lbnRhdGlvbiBvZiBJUmVjb3JkSW5mby4KCgkqIGRsbHMvdXNlci9tZXNzYWdlLmMsIGRsbHMvdXNlci91c2VyX21haW4uYywgZGxscy91c2VyL3VzZXJfcHJpdmF0ZS5oLAoJICB3aW5kb3dzL21lc3NhZ2UuYzoKCU1vdmVkIFRyYW5zbGF0ZU1lc3NhZ2UgYW5kIERpc3BhdGNoTWVzc2FnZSB0byBkbGxzL3VzZXIvbWVzc2FnZS5jLgoJQWRkZWQgc3VwcG9ydCBmb3IgcG9zdGluZyBpbnRlcm5hbCBtZXNzYWdlcy4KCUFkZGVkIHN1cHBvcnQgZm9yIGRyaXZlci1zcGVjaWZpYyBpbnRlcm5hbCBtZXNzYWdlcy4KCgkqIGRsbHMvdXNlci9zeXNwYXJhbXMuYzoKCVNldCBTTV9EQkNTRU5BQkxFRCBhY2NvcmRpbmcgdG8gdGhlIGN1cnJlbnQgbG9jYWxlIGluc3RlYWQgb2YKCWhhcmRjb2RpbmcgaXQgdG8gMCAoZm91bmQgYnkgTWlrZSBNY0Nvcm1hY2spLgoKCSogZGxscy9yaWNoZWQyMC9NYWtlZmlsZS5pbiwgZGxscy9yaWNoZWQyMC9lZGl0b3IuYywKCSAgZGxscy9yaWNoZWQyMC9yZWFkZXIuYywgZGxscy9yaWNoZWQyMC9ydGYuaDoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVBvcnQgdGhlIFJURiBwYXJzZXIgdG8gdGhlIHJpY2hlZGl0IDIuMCBjb250cm9sLgoKCSogZGxscy9vbGUzMi9jb21wb2JqX3ByaXZhdGUuaCwgZGxscy9vbGUzMi9tYXJzaGFsLmM6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglNYWtlIGVhY2ggaWZwcm94eSBoYXZlIGl0cyBvd24gY2hhbm5lbCBidWZmZXIgdG8gZml4IGEgYnVnIHdoZXJlIGEKCXByb3h5IHdpdGggbXVsdGlwbGUgaW50ZXJmYWNlcyBjb3VsZCBpbnZva2UgdGhlIHdyb25nIHN0dWIgYnVmZmVyIG9uCgl0aGUgc2VydmVyLgoKCSogZGxscy94MTFkcnYvd2luZG93LmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBdm9pZCB1bm5lY2Vzc2FyeSB3aW5kb3cgbG9ja2luZyBpbiBYMTFEUlZfRGVzdHJveVdpbmRvdy4KCgkqIGRsbHMvdXNlci90ZXN0cy93aW4uYywgd2luZG93cy9pbnB1dC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCS0gQ2FsbCBTZXRDdXJzb3JQb3MgZm9yIGFuIGluamVjdGVkIG1vdXNlIG1lc3NhZ2Ugb25seSBpZiB3ZSByZWFsbHkKCSAgbmVlZCB0byBtb3ZlIG1vdXNlIHBvaW50ZXIuCgktIEFkZCBhIHRlc3QgY2FzZSBmb3IgbW91c2UgY2xpY2sgaGFuZGxpbmcuCgoJKiBwcm9ncmFtcy93aW5lZGJnL3dpbmVkYmcuYzoKCU1ha2Ugb3V0cHV0IGxpbmUtYnVmZmVyZWQgdG8gYXZvaWQgbWVzc2luZyB1cCBsb2cgZmlsZXMuCgoJKiBkbGxzL29sZTMyL3N0Z19iaWdibG9ja2ZpbGUuYywgZGxscy9vbGUzMi9zdGdfc3RyZWFtLmMsCgkgIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmMsIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmg6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggbW9yZSBpbmNvcnJlY3QgdXNlcyBvZiBTVEdNXyBlbnVtZXJhdGlvbnMuCgoJKiBkbGxzL2RiZ2hlbHAvZGJnaGVscC5jOiBFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCVdoZW4gaW5pdGlhbGl6aW5nIGEgbGl2ZSB0YXJnZXQsIGFzayB0byBsb2FkIG1vZHVsZSBmaWxlIG5hbWVzLCBub3QKCW1vZHVsZSBuYW1lcyAoc3BvdHRlZCBieSBSb2JlcnQgUmVpZikuCgoJKiBkbGxzL2RkcmF3L2RkcmF3X3ByaXZhdGUuaCwgZGxscy9kZHJhdy9kc3VyZmFjZS9kaWIuYywKCSAgZGxscy9kZHJhdy9kc3VyZmFjZS9tYWluLmM6CglNYXR0aGV3IE1hc3RyYWNjaSA8bWF0dEBhY2xhcm8uY29tPgoJQWRkZWQgc3VyZmFjZSBsb2NraW5nLgoKCSogZGxscy91c2VyL3BhaW50aW5nLmM6CglSZXRyeSBzZW5kaW5nIGEgV01fUEFJTlQgaW4gdXBkYXRlX25vdyBhZnRlciB3ZSBzZW50IGFuIGVyYXNlCgltZXNzYWdlLgoKCSogZGxscy9zaGVsbDMyL2RpYWxvZ3MuYywgZGxscy9zaGVsbDMyL2ZvbGRlcnMuYywKCSAgZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jLCBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglVc2UgbHN0cmNtcGlBIGluIHByZWZlcmVuY2UgdG8gc3RyY2FzZWNtcC4KCgkqIGRsbHMvcmljaGVkMjAvZWRpdG9yLmM6CglGaXhlZCBETExfUFJPQ0VTU19ERVRBQ0ggaGFuZGxlciB0byBhY3R1YWxseSB1bnJlZ2lzdGVyIHRoZSB3aW5kb3cKCWNsYXNzZXMuCgoJKiB0b29scy93aW5lZHVtcC9NYWtlZmlsZS5pbiwgdG9vbHMvd2luZWR1bXAvZGVidWcuYywKCSAgdG9vbHMvd2luZWR1bXAvZHVtcC5jLCB0b29scy93aW5lZHVtcC9taW5pZHVtcC5jLAoJICB0b29scy93aW5lZHVtcC9wZS5jLCB0b29scy93aW5lZHVtcC9wZS5oLCB0b29scy93aW5lZHVtcC93aW5lZHVtcC5oOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglDcmVhdGVkIGR1bXAuYyBhcyBhIGNlbnRyYWwgcG9pbnQgZm9yIGZpbGUgZHVtcGluZyAoaW5jbHVkZXMgaGVhZGVyCglhbmFseXNpcywgdXRpbGl0eSBmdW5jcy4uLikuCglBZGRlZCBzdXBwb3J0IGZvciBkdW1waW5nIG1pbmlkdW1wIGZpbGVzLgoKCSogZGxscy9kYmdoZWxwL2RiZ2hlbHAuc3BlYywgZGxscy9kYmdoZWxwL2VsZl9tb2R1bGUuYywKCSAgZGxscy9kYmdoZWxwL21pbmlkdW1wLmMsIGluY2x1ZGUvZGJnaGVscC5oOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglBZGRlZCBzdXBwb3J0IGZvciBtaW5pZHVtcCAocmVhZCAmIHdyaXRlKS4KCgkqIGRsbHMvYXRsL2F0bC5zcGVjLCBkbGxzL2F0bC9yZWdzdnIuYzoKCUphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglBZGQgc3R1YiBmb3IgR2V0Q2xhc3NPYmplY3QgZnVuY3Rpb24uCgoJKiBkbGxzL2RkcmF3L2RkcmF3L3VzZXIuYzogTWF0dGhldyBNYXN0cmFjY2kgPG1tYXN0cmFjQGNhbmFkYS5jb20+CglBZGQgRERDQVBTX09WRVJMQVkgYW5kIEREQ0FQU19PVkVSTEFZU1RSRVRDSCB0byBHZXRDYXBzKCkuCgoJKiBkbGxzL21zdmNydC9maWxlLmMsIGRsbHMvbXN2Y3J0L21zdmNydC5oOgoJSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCU1ha2UgbXN2Y3J0IHByaW50ZiB1c2UgdGhlIGludGVybmFsIHJvdXRpbmVzIHdoaWNoIHVuZGVyc3RhbmQgJVMgYW5kCgklQy4KCgkqIGRsbHMvYWR2YXBpMzIvYWR2YXBpMzIuc3BlYywgZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jOgoJSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCUFkZCBzdHViIGZvciBTZXRTZWN1cml0eUluZm8uCgoJKiBkbGxzL3JpY2hlZDIwL3BhaW50LmM6IEtyenlzenRvZiBGb2x0bWFuIDxrZm9sdG1hbkBwb3J0YWwub25ldC5wbD4KCUFkZGVkIGEgY2hlY2sgZm9yIGVtcHR5IHNjcm9sbGJhciByYW5nZS4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9taXhlci5jOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJTWFrZSB3aW5lb3NzJ3MgbWl4ZXIga25vdyBhYm91dCBEU1RfSEVBRFBIT05FUywgRFNUX0xJTkUgYW5kCglEU1RfVk9JQ0VJTi4gVXNlIHByb3BlciBjb25zdGFudHMgaW5zdGVhZCBvZiAwIGFuZCAxLgoKCSogZGxscy9vbGUzMi9vbGUzMi5zcGVjLCBkbGxzL29sZTMyL3N0b3JhZ2UzMi5jOgoJSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJSW1wbGVtZW50IFN0Z0NyZWF0ZVByb3BTZXRTdGcuCgoJKiBwcm9ncmFtcy93aW5ldGVzdC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luZXRlc3QvbWFpbi5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFub3RoZXIgYXR0ZW1wdCBvZiBhIHRlc3QgZm9yIGEgdmlzaWJsZSBkZXNrdG9wLgoKCSogd2luZG93cy9tc2dib3guYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUNhbGwgUmVsZWFzZURDKCkgd2l0aCBjb3JyZWN0IHdpbmRvdyBoYW5kbGUuCgoJKiBkbGxzL3VzZXIvbWVzc2FnZS5jOiBVbHJpY2ggQ3pla2FsbGEgPHVscmljaEBjb2Rld2VhdmVycy5jb20+CglQcmludCBvdXQgZXJyb3IgbWVzc2FnZSBpZiB3ZSBmYWlsIHRvIHJlbW92ZSBtZXNzYWdlIGZyb20gcXVldWUuCgoyMDA1LTAzLTA1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9yaWNoZWQyMC9yaWNob2xlLmM6IEZpeGVkIERPUyBsaW5lIGVuZGluZ3MuCgoJKiB0b29scy93aW5lZ2NjL01ha2VmaWxlLmluOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJQ3JlYXRlIHN5bWxpbmtzIG5hbWVkIHdpbmVnKysgYW5kIHdpbmVjcHAgd2hpbGUgYnVpbGRpbmcgd2luZWdjYy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL3JpY2hlZDIwLy5jdnNpZ25vcmUsCgkgIGRsbHMvcmljaGVkMjAvTWFrZWZpbGUuaW4sIGRsbHMvcmljaGVkMjAvY2FyZXQuYywKCSAgZGxscy9yaWNoZWQyMC9jb250ZXh0LmMsIGRsbHMvcmljaGVkMjAvZWRpdG9yLmMsCgkgIGRsbHMvcmljaGVkMjAvZWRpdG9yLmgsIGRsbHMvcmljaGVkMjAvZWRpdHN0ci5oLAoJICBkbGxzL3JpY2hlZDIwL2xpc3QuYywgZGxscy9yaWNoZWQyMC9wYWludC5jLCBkbGxzL3JpY2hlZDIwL3BhcmEuYywKCSAgZGxscy9yaWNoZWQyMC9yaWNoZWQyMC5zcGVjLCBkbGxzL3JpY2hlZDIwL3JpY2hvbGUuYywKCSAgZGxscy9yaWNoZWQyMC9yb3cuYywgZGxscy9yaWNoZWQyMC9ydW4uYywgZGxscy9yaWNoZWQyMC9zdHJpbmcuYywKCSAgZGxscy9yaWNoZWQyMC9zdHlsZS5jLCBkbGxzL3JpY2hlZDIwL3VuZG8uYywgZGxscy9yaWNoZWQyMC93cmFwLmM6CglLcnp5c3p0b2YgRm9sdG1hbiA8a2ZvbHRtYW5AcG9ydGFsLm9uZXQucGw+CglJbml0aWFsIGltcGxlbWVudGF0aW9uIG9mIHJpY2hlZDIwLgoKCSogZGxscy9kc291bmQvdGVzdHMvZHNvdW5kLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglEb24ndCBjb25zaWRlciBubyBzb3VuZCBkZXZpY2UgYSBmYWlsdXJlLgoKCSogc2VydmVyL3F1ZXVlLmM6IEF2b2lkIHBvdGVudGlhbCBjcmFzaCB3aGVuIGZyZWVpbmcgYSBtZXNzYWdlIHF1ZXVlLgoJUHJvcGVybHkgaW5pdGlhbGl6ZSBuZXdseSBhbGxvY2F0ZWQgbWVzc2FnZXMuCgoJKiB3aW5kb3dzL3NweS5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglXTV9VU0VSIG1lc3NhZ2VzIHNob3VsZCBiZSBkdW1wZWQgaW4gdGhlIGZvcm1hdCAiV01fVVNFUiArICVkIiB0byBtYWtlCglpdCBlYXNpZXIgdG8gc2VlIHdoYXQgbWVzc2FnZSBpdCBpcyBmb3IgdW5rbm93biBjbGFzc2VzLgoKCSogdG9vbHMvd2lkbC9oZWFkZXIuYywgdG9vbHMvd2lkbC9oZWFkZXIuaCwgdG9vbHMvd2lkbC9wYXJzZXIueToKCUphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglXcml0ZSB1dWlkIG9mIGxpYnJhcnkgaW4gaGVhZGVyLgoKCSogZGxscy9kc291bmQvdGVzdHMvTWFrZWZpbGUuaW4sIGRsbHMvZHNvdW5kL3Rlc3RzL2NhcHR1cmUuYywKCSAgZGxscy9kc291bmQvdGVzdHMvZHMzZC5jLCBkbGxzL2Rzb3VuZC90ZXN0cy9kczNkOC5jLAoJICBkbGxzL2Rzb3VuZC90ZXN0cy9kc291bmQuYywgZGxscy9kc291bmQvdGVzdHMvZHNvdW5kOC5jLAoJICBkbGxzL2Rzb3VuZC90ZXN0cy9kc291bmRfdGVzdC5oLCBkbGxzL2Rzb3VuZC90ZXN0cy9wcm9wc2V0LmM6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJUHJpbnQgZHNvdW5kLmRsbCB2ZXJzaW9uIGZyb20gZmlsZSB2ZXJzaW9uaW5mbyByZXNvdXJjZS4KCgkqIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmMsIGRsbHMvb2xlMzIvdGVzdHMvc3RvcmFnZTMyLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglUZXN0IGFuZCBmaXggZ3JmTW9kZSBoYW5kbGluZyBpbiBTdGdPcGVuRG9jZmlsZS4KCgkqIHByb2dyYW1zL01ha2Vwcm9nLnJ1bGVzLmluOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJQVBQTU9ERSBjYW4gbm93IGJlIG9uZSBvZiAtbXdpbmRvd3Mgb3IgLW1jb25zb2xlLgoKCSogZGxscy91c2VyL3Rlc3RzL3N5c3BhcmFtcy5jOiBQYXVsIFZyaWVucyA8UGF1bC5WcmllbnNAeHM0YWxsLm5sPgoJTGFzdEVycm9yIGlzIG5vdCBzZXQgb24gZmFpbHVyZSBmb3IgKk1PVVNFSE9WRVIqIG9uIFdpbjk4LgoKCSogZGxscy9hZHZhcGkzMi90ZXN0cy9zZWN1cml0eS5jOiBKYWtvYiBFcmlrc3NvbiA8amFrb3ZAdm1saW51eC5vcmc+CglBY2NvdW50IGZvciBwZXJtaXNzaW9ucyBvbiBXaW4yay4KCgkqIGluY2x1ZGUvb2JqYmFzZS5oOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglEZWNsYXJlIHRoZSB2YWx1ZSBvZiBTVEdNX0RJUkVDVF9TV01SLgoKCSogZGxscy9tc3ZjcnQvdGVzdHMvcHJpbnRmLmMsIGRsbHMvbXN2Y3J0L3djcy5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJSGFuZGxlICVscyBpbiBzcHJpbnRmLgoKCSogZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jOiBUcm95IFJvbGxvIDx3aW5lQHRyb3kucm9sbG8ubmFtZT4KCU1ha2UgR2V0RmlsZVNlY3VyaXR5VyByZXR1cm4gYSBzdGFuZGFyZCBTRUNVUklUWV9ERVNDUklQVE9SIGluc3RlYWQgb2YKCWFuIHVuaW5pdGlhbGlzZWQgKGFuZCBpbnZhbGlkKSBvbmUuCgoyMDA1LTAzLTA0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMva2VybmVsL3N5bmMuYywgZGxscy9udGRsbC9zeW5jLmMsCgkgIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jLCBkbGxzL3dpbm1tL3dpbmVvc3MvZHNjYXB0dXJlLmMsCgkgIGRsbHMvd2lubW0vd2luZW9zcy9kc3JlbmRlci5jLCBkbGxzL3dpbm1tL3dpbmVvc3MvbWlkaS5jLAoJICBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGluY2x1ZGUvY29uZmlnLmguaW4sIHNlcnZlci9mZC5jLAoJICBzZXJ2ZXIvZmlsZS5jLCBzZXJ2ZXIvbmFtZWRfcGlwZS5jLCBzZXJ2ZXIvcHJvY2Vzcy5jLAoJICBzZXJ2ZXIvcmVxdWVzdC5jLCBzZXJ2ZXIvc2VyaWFsLmMsIHNlcnZlci9zaWduYWwuYywgc2VydmVyL3RocmVhZC5jOgoJU3RldmVuIEVkd2FyZHMgPHN0ZXZlbl9lZDQxNTNAeWFob28uY29tPgoJQWRkZWQgYSBjaGVjayBmb3IgcG9sbC5oLgoKCSogcHJvZ3JhbXMvd2luZWRiZy9tZW1vcnkuYzogQXZvaWQgYSBjb21waWxlciB3YXJuaW5nLgoKCSogZGxscy9hZHZhcGkzMi9zZXJ2aWNlLmM6IFRyb3kgUm9sbG8gPHdpbmVAdHJveS5yb2xsby5uYW1lPgoJUmV0dXJuIGFuIGVtcHR5IHN0cmluZyBmb3Igc2VydmljZSBkZXBlbmRlbmNpZXMgd2hlbiB0aGVyZSBhcmUgbm8KCWRlcGVuZGVuY2llcywgcmF0aGVyIHRoYW4gYSBOVUxMIHBvaW50ZXIsIHdoaWNoIGNhdXNlcyBzb21lIGFwcHMgdG8KCVNFR1YuCgoJKiBkbGxzL21zaS9kaWFsb2cuYzogVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hAY29kZXdlYXZlcnMuY29tPgoJQWRkIHN1cHBvcnQgZm9yIHJhZGlvIGJ1dHRvbnMuCgoJKiBkbGxzL3VzZXIvdGVzdHMvc3lzcGFyYW1zLmM6IEp1c3RpbiBDaGV2cmllciA8amNoZXZyaWVyQG5leGljb20ubmV0PgoJRXhwYW5kIGNvbmZvcm1hbmNlIHJlZ2lzdHJ5IGVudHJ5IHRlc3QgdG8gaGFuZGxlIHJlZ2lzdHJ5IGVudHJpZXMgdGhhdAoJZGlmZmVyIGJvdGggaW4gS2V5IGFuZCBWYWx1ZSBmcm9tIHRoZSBub3JtLgoJVGFrZSBhZHZhbnRhZ2Ugb2YgZXhwYW5kZWQgcmVnaXN0cnkgdGVzdCB0byBhbGxvdwoJU1BJX3tHRVQsU0VUfVNDUkVFTlJFQURFUiBhbmQgU1BJX3tHRVQsU0VUfUtFWUJPQVJEUFJFRkVSRU5DRSB0byBwYXNzCglvbiBXaW45eC4KCgkqIGRsbHMvb2xlMzIvcnBjLmMsIGRsbHMvb2xlMzIvdGVzdHMvbWFyc2hhbC5jOgoJUm9iIFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJTWlrZSBIZWFybiA8bWhAY29kZXdlYXZlcnMuY29tPgoJLSBBZGQgcmUtZW50cmFuY3kgdGVzdHMgdG8gdGhlIHRlc3Qgc3VpdGUuCgktIFJ1biBSUENzIG9uIGEgbmV3IHRocmVhZCBjbGllbnQgc2lkZSBzbyB3ZSBjYW4gcHVtcCB0aGUgbWVzc2FnZQoJICBsb29wLgoKCSogZGxscy9vbGVhdXQzMi9NYWtlZmlsZS5pbiwgZGxscy9vbGVhdXQzMi9vbGVwaWN0dXJlLmM6CglNYXhpbWUgQmVsbGVuZ+kgPG1heGltZS5iZWxsZW5nZUBsYXBvc3RlLm5ldD4KCUltcGxlbWVudHMgT2xlTG9hZFBpY3R1cmVQYXRoLgoKCSogZGxscy91c2VyL21lc3NhZ2UuYzoKCVN1cHBvcnQgc2VuZGluZyBXTV9QQUlOVCBhY3Jvc3MgcHJvY2Vzc2VzIHdoZW4gaXQgZG9lc24ndCBjb250YWluIGFuCglIREMuCgoJKiBkbGxzL29sZTMyL3N0b3JhZ2UzMi5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgU3RnU2V0VGltZXMuCgoJKiBkbGxzL3JpY2hlZGl0L3JpY2hlZGl0LmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCURvbid0IGNsZWFyIEVTX0FVVE9bSFZdU0NST0xMIGluIHRoZSBlZGl0IGNvbnRyb2wgY3JlYXRlZCBieQoJcmljaGVkaXQuCgoJKiBkbGxzL2FkdmFwaTMyL3NlcnZpY2UuYzogVHJveSBSb2xsbyA8d2luZUB0cm95LnJvbGxvLm5hbWU+CglDb3JyZWN0IGluY29ycmVjdCB1c2Ugb2YgYXJndW1lbnRzIHRvIFF1ZXJ5U2VydmljZUNvbmZpZ1cuCgoJKiBkbGxzL21zdmNydC90ZXN0cy9wcmludGYuYywgZGxscy9tc3ZjcnQvd2NzLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglIYW5kbGUgdGhlIHByaW50ZiAlRiBmb3JtYXQgbW9kaWZpZXIuCgoJKiBpbmNsdWRlL3JpY2hlZGl0Lmg6IEtyenlzenRvZiBGb2x0bWFuIDxrZm9sdG1hbkBvbmV0LnBsPgoJLSBhZGRlZCBtaXNzaW5nIENGTV8gY29uc3RhbnRzIHRvIG1ha2UgUmljaEVkaXQgMi4wIGltcGxlbWVudGF0aW9uCgkgIHBvc3NpYmxlCgktIGFkZGVkIGEgbWlzc2luZyBzdHJ1Y3R1cmUgUEFSQUZPUk1BVDIKCgkqIGRsbHMva2VybmVsL3Byb2ZpbGUuYywgZGxscy9rZXJuZWwvdGVzdHMvcHJvZmlsZS5jOgoJSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCByZWdyZXNzaW9uIGluIEdldFByaXZhdGVQcm9maWxlU2VjdGlvbiBmb3IgbGluZXMgd2l0aG91dCBhbiAnPScuCglBZGQgdGVzdC4KCgkqIGRsbHMvcnBjcnQ0L3JwY19iaW5kaW5nLmM6IE1pa2UgSGVhcm4gPG1oQGNvZGV3ZWF2ZXJzLmNvbT4KCVN1cHByZXNzIHNvbWUgdXNlbGVzcyB3YXJuaW5ncyBpbiB0aGUgUlBDIHJ1bnRpbWUsIGFuZCBtYWtlIGEgZmV3CglUUkFDRXMgdGhhdCB3ZXJlIHJlcG9ydGluZyBwcm9ibGVtcyBpbnRvIFdBUk5zLgoKCSogZGxscy91c2VyL3Rlc3RzL3N5c3BhcmFtcy5jOiBQYXVsIFZyaWVucyA8UGF1bC5WcmllbnNAeHM0YWxsLm5sPgoJQmV0dGVyIHdheSBvZiBoYW5kbGluZyBub24tZXhpc3RlbnQgU3lzdGVtUGFyYW1ldGVyc0luZm9XLgoJU2V0TGFzdEVycm9yIGlmIEdldExhc3RFcnJvciBpcyBjaGVja2VkIGFmdGVyIGEgY2FsbC4KCjIwMDUtMDMtMDMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBwcm9ncmFtcy93aW5lZGJnL2RiZy55LCBwcm9ncmFtcy93aW5lZGJnL2RlYnVnZ2VyLmgsCgkgIHByb2dyYW1zL3dpbmVkYmcvZGlzcGxheS5jLCBwcm9ncmFtcy93aW5lZGJnL21lbW9yeS5jLAoJICBwcm9ncmFtcy93aW5lZGJnL3N0YWNrLmMsIHByb2dyYW1zL3dpbmVkYmcvd2luZWRiZy5jOgoJRml4ZWQgYSBmZXcgcmVncmVzc2lvbnMgaW4gdGhlIGhhbmRsaW5nIG9mIHNlZ21lbnRlZCBhZGRyZXNzZXMuCgoJKiBkbGxzL2QzZDkvZDNkOV9wcml2YXRlLmgsIGRsbHMvZDNkOS9xdWVyeS5jLAoJICBkbGxzL3dpbmVkM2QvTWFrZWZpbGUuaW4sIGRsbHMvd2luZWQzZC9kZXZpY2UuYywKCSAgZGxscy93aW5lZDNkL2RyYXdwcmltLmMsIGRsbHMvd2luZWQzZC9xdWVyeS5jLAoJICBkbGxzL3dpbmVkM2Qvc3RhdGVibG9jay5jLCBkbGxzL3dpbmVkM2Qvc3VyZmFjZS5jLAoJICBkbGxzL3dpbmVkM2QvdXRpbHMuYywgZGxscy93aW5lZDNkL3dpbmVkM2RfcHJpdmF0ZS5oLAoJICBpbmNsdWRlL2QzZDl0eXBlcy5oLCBpbmNsdWRlL3dpbmUvd2luZWQzZF9pbnRlcmZhY2UuaCwKCSAgaW5jbHVkZS93aW5lL3dpbmVkM2RfdHlwZXMuaDoKCU9saXZlciBTdGllYmVyIDxvbGl2ZXJfc3RpZWJlckB5YWhvby5jby51az4KCUFkZGVkIGEgc3R1YmJlZCBvdXQgdmVyc2lvbiBvZiBxdWVyeSB0byBkM2Q5IGFuZCB3aW5lZDNkLgoJVXBkYXRlIHRoZSBkM2Q5IGhlYWRlcnMgYW5kIGNyZWF0ZXMgd2luZWQzZCB0eXBlcyB3aGVyZSBkM2Q5IGFuZCBkM2Q4CglhcmUgaW5jb21wYXRpYmxlLgoKCSogZGxscy9zaGVsbDMyL2NsYXNzZXMuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCURvbid0IHByZXBlbmQgJ1xcJyB0byB0aGUgc3Via2V5IG5hbWUuCgoJKiBkbGxzL2NvbWN0bDMyL2RyYWdsaXN0LmMsIGluY2x1ZGUvY29tbWN0cmwuaDoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglVbmljb2RpZmljYXRpb24uIFNtYWxsIGNsZWFudXBzLgoKCSogZGxscy9udGRsbC9oZWFwLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglEdW1wIEhlYXBXYWxrIGVudHJpZXMuCgoJKiBwcm9ncmFtcy93aW5ldGVzdC9tYWluLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglVc2UgSXNXaW5kb3dWaXNpYmxlIGluc3RlYWQgb2YgR2V0V2luZG93TG9uZyhHV0xfU1RZTEUpICYgV1NfVklTSUJMRQoJYXMgYSB0ZXN0IGZvciBkZXNrdG9wIHZpc2liaWxpdHkuCgoJKiBkbGxzL3dpbm1tL3Rlc3RzL3dhdmUuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVdhcm4gdGhlIHVzZXIgaWYgaGUgaXMgcnVubmluZyB0aGUgdGVzdCBpbiBpbnRlcmFjdGl2ZSBtb2RlIGJ1dCB0aGUKCXNvdW5kIGlzIHR1cm5lZCBvZmYuCgoyMDA1LTAzLTAyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jb21jdGwzMi9yZWJhci5jLCBkbGxzL2NvbWN0bDMyL3N5c2xpbmsuYywgZGxscy9nZGkvcmVnaW9uLmMsCgkgIGRsbHMva2VybmVsL3Byb2Nlc3MuYywgZGxscy9rZXJuZWwvdGVzdHMvZmlsZS5jLCBkbGxzL21zaS9hY3Rpb24uYywKCSAgZGxscy9tc2kvbXNpLmMsIGRsbHMvbXN2Y3J0L2ZpbGUuYywgZGxscy9udGRsbC9yZWcuYywKCSAgZGxscy9vbGUzMi9jbGlwYm9hcmQuYywgZGxscy9vbGVhdXQzMi90eXBlbGliLmMsCgkgIGRsbHMvb2xlYXV0MzIvdmFyZm9ybWF0LmMsIGRsbHMvcmljaGVkaXQvcmVhZGVyLmMsCgkgIGRsbHMvcmljaGVkaXQvcmljaGVkaXQuYywgZGxscy9zaGVsbDMyL2NsaXBib2FyZC5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmMsIGRsbHMvc2hlbGwzMi9zaGZsZHJfZnMuYywKCSAgZGxscy91c2VyL2RkZS9kZGVfcHJpdmF0ZS5oLCBkbGxzL3VzZXIvdGVzdHMvc3lzcGFyYW1zLmMsCgkgIGRsbHMvd2luZWRvcy92eGQuYywgZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmMsCgkgIGRvY3VtZW50YXRpb24vYXJjaGl0ZWN0dXJlLnNnbWwsIGRvY3VtZW50YXRpb24vZ2V0dGluZy5zZ21sLAoJICBpbmNsdWRlL29iamJhc2UuaCwgcHJvZ3JhbXMvY21kbGd0c3QvY21kbGd0c3QuYywKCSAgcHJvZ3JhbXMvd2NtZC93Y21kbWFpbi5jLCBwcm9ncmFtcy93aW5lYm9vdC93aW5lYm9vdC5jLAoJICBwcm9ncmFtcy93aW5lZGJnL2RiX2Rpc2FzbS5jLCBwcm9ncmFtcy93aW5ldmRtL3dpbmV2ZG0uYywKCSAgdG9vbHMvd2lkbC9jbGllbnQuYywgdG9vbHMvd2luZWJ1aWxkL3dpbmVidWlsZC5tYW4uaW4sCgkgIHRvb2xzL3dpbmVkdW1wL3BlLmMsIHRvb2xzL3dpbmVkdW1wL3N5bWJvbC5jLCB0b29scy93cmMvcGFyc2VyLnk6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFzc29ydGVkIHNwZWxsaW5nIGZpeGVzLgoKCSogZGxscy9kM2Q5L2QzZDlfbWFpbi5jLCBkbGxzL2QzZDkvc3VyZmFjZS5jLAoJICBkbGxzL3dpbmVkM2QvYmFzZXRleHR1cmUuYywgZGxscy93aW5lZDNkL2N1YmV0ZXh0dXJlLmMsCgkgIGRsbHMvd2luZWQzZC9kZXZpY2UuYywgZGxscy93aW5lZDNkL2RpcmVjdHguYywKCSAgZGxscy93aW5lZDNkL2luZGV4YnVmZmVyLmMsIGRsbHMvd2luZWQzZC9yZXNvdXJjZS5jLAoJICBkbGxzL3dpbmVkM2Qvc3RhdGVibG9jay5jLCBkbGxzL3dpbmVkM2QvdGV4dHVyZS5jLAoJICBkbGxzL3dpbmVkM2QvdmVydGV4YnVmZmVyLmMsIGRsbHMvd2luZWQzZC92ZXJ0ZXhkZWNsYXJhdGlvbi5jLAoJICBkbGxzL3dpbmVkM2Qvdm9sdW1lLmMsIGRsbHMvd2luZWQzZC92b2x1bWV0ZXh0dXJlLmMsCgkgIGRsbHMvd2luZWQzZC93aW5lZDNkX21haW4uYywgaW5jbHVkZS93aW5lL3dpbmVkM2RfaW50ZXJmYWNlLmg6CglPbGl2ZXIgU3RpZWJlciA8b2xpdmVyX3N0aWViZXJAeWFob28uY28udWs+CglJbXBsZW1lbnRlZCBndWlkcyBmb3Igd2luZWQzZC4KCgkqIGRsbHMvd2lubW0vd2luZWFsc2EvYXVkaW8uYywgZGxscy93aW5tbS93aW5lYXJ0cy9hdWRpby5jLAoJICBkbGxzL3dpbm1tL3dpbmVhdWRpb2lvL2F1ZGlvLmMsIGRsbHMvd2lubW0vd2luZWphY2svYXVkaW8uYywKCSAgZGxscy93aW5tbS93aW5lbmFzL2F1ZGlvLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQXBwbHkgSmVyZW15IFdoaXRlJ3MgU01QVEUgY2FsY3VsYXRpb24gZml4IHRvIGVhY2ggYXVkaW8gZHJpdmVyLgoKCSogZGxscy9kM2Q4L2QzZDhfcHJpdmF0ZS5oLCBkbGxzL2tlcm5lbC9sb2NhbDE2LmMsCgkgIGRsbHMva2VybmVsL3Rlc3RzL3RocmVhZC5jLCBkbGxzL21zY21zL21zY21zX21haW4uYywKCSAgZGxscy9tc2kvYWN0aW9uLmMsIGRsbHMvbnRkbGwvY2Ryb20uYywgZGxscy9udGRsbC9maWxlLmMsCgkgIGRsbHMvb2xlMzIvY2xpcGJvYXJkLmMsIGRsbHMvcXVhcnR6L21haW4uYywKCSAgZGxscy9ycGNydDQvbmRyX21hcnNoYWxsLmMsIGRsbHMvdHdhaW4vdHdhaW4uaCwgZGxscy93aW5lZDNkL3V0aWxzLmMsCgkgIGRsbHMvd2luZXBzL2dyYXBoaWNzLmMsIGRsbHMvd2lubW0vam95c3RpY2svam95c3RpY2suYywKCSAgZGxscy93c29jazMyL3NvY2tldC5jLCBkbGxzL3gxMWRydi9jbGlwYm9hcmQuYywgaW5jbHVkZS9kbXVzaWNjLmgsCgkgIGluY2x1ZGUvd2luZS9ycGNmYy5oLCBwcm9ncmFtcy9ycGNzcy9ycGNzc19tYWluLmMsCgkgIHByb2dyYW1zL3Rhc2ttZ3IvcGVyZmRhdGEuYywgcHJvZ3JhbXMvdGFza21nci9wcm9jcGFnZS5jLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS9jdXJzZXMuYywgcHJvZ3JhbXMvd2luZW1pbmUvbWFpbi5oLAoJICB0b29scy93cmMvcGFyc2VyLnk6CglBdm9pZCBzcGFjZXMgYmVmb3JlIHByZXByb2Nlc3NvciBkaXJlY3RpdmVzLCB0aGF0J3Mgbm90IHBvcnRhYmxlLgoKCSogTWFrZWZpbGUuaW4sIHRvb2xzL01ha2VmaWxlLmluOgoJd2luZXByZWZpeGNyZWF0ZSBhbmQgcmVsYXRlZCBmaWxlcyBuZWVkIHRvIGJlIGluc3RhbGxlZCB3aGVuIGRvaW5nIGFuCglpbnN0YWxsLWxpYi4KCgkqIGRsbHMvd2lubW0vd2F2ZW1hcC93YXZlbWFwLmM6IEplcmVteSBXaGl0ZSA8andoaXRlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFnZ3Jlc3NpdmVseSByb3VuZCB1cCB0byB0aGUgcHJvcGVyIGFsaWdubWVudCB3aGVuIHJlcG9ydGluZyBwb3NpdGlvbgoJb24gc3RyZWFtcyB3aGVyZSB3ZSBhcmUgY29udmVydGluZyB1cC4KCgkqIHdpbmRvd3MvbWRpLmMsIHdpbmRvd3Mvd2luLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQXNrIGZvciBhbiBNREkgY2hpbGQgaWQgaW4gYWxsIGNhc2VzLgoKCSogZGxscy91c2VyL21lbnUuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCURlc3Ryb3lNZW51IHNob3VsZCBub3QgZGVzdHJveSBzeXN0ZW0gbWVudSBwb3B1cCBvd25lci4KCgkqIGRsbHMvZDNkOS9kM2Q5X3ByaXZhdGUuaCwgZGxscy9kM2Q5L2RldmljZS5jLCBkbGxzL2QzZDkvc3VyZmFjZS5jLAoJICBkbGxzL2QzZDkvdmVydGV4ZGVjbGFyYXRpb24uYywgZGxscy93aW5lZDNkL2RldmljZS5jLAoJICBkbGxzL3dpbmVkM2Qvc3VyZmFjZS5jLCBkbGxzL3dpbmVkM2QvdmVydGV4c2hhZGVyLmMsCgkgIGRsbHMvd2luZWQzZC93aW5lZDNkX3ByaXZhdGUuaCwgaW5jbHVkZS93aW5lL3dpbmVkM2RfaW50ZXJmYWNlLmg6CglPbGl2ZXIgU3RpZWJlciA8b2xpdmVyX3N0aWViZXJAeWFob28uY28udWs+CglQdXQgYWxsIHRoZSBzdHVicyBpbiB3aW5lZDNkIGluIHBsYWNlLCB3aXRoIHNvbWUgZnVuY3Rpb25hbGl0eSBjb3BpZWQKCWFjcm9zcyBmcm9tIGQzZDkuCglNYWtlIHN1cmUgYWxsIGQzZDkgZGV2aWNlIGZ1bmN0aW9uIGNhbGwgdGhlaXIgd2luZWQzZCBjb3VudGVycGFydCAob3IKCXBlcmZvcm0gYSBmdW5jdGlvbikuCgoJKiBpbmNsdWRlL2RjZS5oLCB3aW5kb3dzL2RjZS5jOgoJQmVnaW5uaW5ncyBvZiBpbnRlci1wcm9jZXNzIEdldERDIHN1cHBvcnQuCglVc2UgYSBzdGFuZGFyZCBsaXN0IGZvciB0aGUgRENFIGxpc3QuCglTbWFsbCBjbGVhbnVwcy4KCgkqIHNlcnZlci9kZWJ1Z2dlci5jLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcHJvY2Vzcy5oOgoJQ29udmVydCB0aGUgcHJvY2VzcyBkbGwgbGlzdCB0byBhIHN0YW5kYXJkIGxpc3QuCgoJKiBkbGxzL3NoZWxsMzIvc2hmbGRyLmgsIGRsbHMvc2hlbGwzMi9zaGZsZHJfZGVza3RvcC5jLAoJICBkbGxzL3NoZWxsMzIvc2hmbGRyX2ZzLmMsIGRsbHMvc2hlbGwzMi9zaGZsZHJfbXljb21wLmM6CglKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglDb252ZXJ0IG1vcmUgQVBJIGNhbGxzIHRvIFVuaWNvZGUuCgoJKiB0b29scy93aW5lLmRlc2t0b3A6IFNjb3R0IFJpdGNoaWUgPHNjb3R0QG9wZW4tdm90ZS5vcmc+CglBZGQgYWxsIGtub3duIHdpbmRvd3MgZXhlY3V0YWJsZXMgdG8gTUlNRSB0eXBlIGluIHdpbmUuZGVza3RvcC4KCgkqIGRsbHMvY29tY3RsMzIvcmViYXIuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBGaXggb25lIG1vcmUgcGxhY2Ugd2hlcmUgdGhlIGNvZGUgYXNzdW1lcyByb3cgaW5kaWNlcyBhcmUKCSAgemVyby1iYXNlZC4KCS0gRG9jdW1lbnQgYSBrbm93biBidWcgaW4gdGhlIGxheW91dCBjb2RlLgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmMsIGRsbHMvd2lubW0vd2luZW9zcy9kc3JlbmRlci5jOgoJSmVyZW15IFdoaXRlIDxqd2hpdGVAY29kZXdlYXZlcnMuY29tPgoJTW9yZSBjb3JyZWN0bHkgZXN0YWJsaXNoIGNhc2VzIHdoZXJlIHRoZSBPU1MgaW5wdXQgYnVmZmVyIHNob3VsZCBub3QKCWJlIGVuYWJsZWQuCgoJKiBkbGxzL3F1YXJ0ei9hdmlzcGxpdC5jLCBkbGxzL3F1YXJ0ei9kc291bmRyZW5kZXIuYywKCSAgZGxscy9xdWFydHovZmlsdGVyZ3JhcGguYywgZGxscy9xdWFydHovcGluLmMsCgkgIGRsbHMvcXVhcnR6L3Rlc3RzL2ZpbHRlcmdyYXBoLmMsIGRsbHMvcXVhcnR6L3RyYW5zZm9ybS5jLAoJICBkbGxzL3F1YXJ0ei92aWRlb3JlbmRlcmVyLmMsIGRsbHMvcXVhcnR6L3dhdmVwYXJzZXIuYzoKCUNocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUhhbmRsZSBFbmQgT2YgU3RyZWFtIG5vdGlmaWNhdGlvbnMuCglTb21lIEFWSSBTcGxpdHRlciBmaXhlcy4KCgkqIGRsbHMvcnNhZW5oL3Rlc3RzL3JzYWVuaC5jOgoJU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtTGluZS5jb20+CglNYWtlIHJzYWVuaF9jcm9zc3Rlc3QuZXhlIGxvYWRhYmxlIG9uIE5UIDQuMC4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL2xvY2FsZS5jOiBKYWtvYiBFcmlrc3NvbiA8amFrb3ZAdm1saW51eC5vcmc+CglBY2NlcHQgKHNob3J0ZXIpIGRhdGUgZm9ybWF0IGluIFdpbiBOVCBhbmQgV2luIDk1LgoKCSogZGxscy91c2VyL3Rlc3RzL21zZy5jLCBkbGxzL3VzZXIvdGVzdHMvd2luLmMsIHdpbmRvd3Mvd2luLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJUHJvdGVjdCBTZXRQYXJlbnQgZnJvbSBjcmVhdGluZyBjaXJjdWxhciB3aW5kb3cgZGVwZW5kZW5jaWVzLgoJQWRkIGEgdGVzdCBjYXNlLgoKCSogZGxscy9jb21jdGwzMi9zdGF0dXMuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUZpeCBpbmRlbnRhdGlvbiBmb3IgY29uc2lzdGVuY3kgd2l0aCB0aGUgcmVzdCBvZiB0aGUgZmlsZS4KCgkqIGRsbHMva2VybmVsL3Byb2ZpbGUuYywgZGxscy9rZXJuZWwvdGVzdHMvcHJvZmlsZS5jOgoJUmVpbiBLbGF6ZXMgPHdpam5Ad2FuYWRvby5ubD4KCVdoZW4gZW51bWVyYXRpbmcga2V5cyB1c2luZyBHZXQoUHJpdmF0ZSlQcm9maWxlU3RyaW5nIGRvIG5vdCBpbmNsdWRlCglsaW5lcyB3aXRob3V0IGFuICc9JyBjaGFyYWN0ZXIuIEFkZGVkIGEgdGVzdCB0aGF0IHNob3dzIHRoZSBiZWhhdmlvci4KCjIwMDUtMDMtMDEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3gxMWRydi9ldmVudC5jLCBkbGxzL3gxMWRydi94MTFkcnYuaCwgZGxscy94MTFkcnYveGRuZC5jOgoJVXNlIGEgZGlzcGF0Y2ggdGFibGUgdG8gaGFuZGxlIFggY2xpZW50IG1lc3NhZ2VzLgoKCSogc2VydmVyL2ZkLmMsIHNlcnZlci9vYmplY3QuYywgc2VydmVyL29iamVjdC5oLCBzZXJ2ZXIvcXVldWUuYywKCSAgc2VydmVyL3RocmVhZC5jOgoJQ29udmVydCB0aGUgb2JqZWN0IHdhaXQgcXVldWUgdG8gYSBzdGFuZGFyZCBsaXN0LgoKCSogcHJvZ3JhbXMvcmVnZWRpdC9Dcy5yYywgcHJvZ3JhbXMvcmVnZWRpdC9EZS5yYywKCSAgcHJvZ3JhbXMvcmVnZWRpdC9Fbi5yYywgcHJvZ3JhbXMvcmVnZWRpdC9Fcy5yYywKCSAgcHJvZ3JhbXMvcmVnZWRpdC9Gci5yYywgcHJvZ3JhbXMvcmVnZWRpdC9JdC5yYywKCSAgcHJvZ3JhbXMvcmVnZWRpdC9KYS5yYywgcHJvZ3JhbXMvcmVnZWRpdC9ObC5yYywKCSAgcHJvZ3JhbXMvcmVnZWRpdC9QbC5yYywgcHJvZ3JhbXMvcmVnZWRpdC9QdC5yYywKCSAgcHJvZ3JhbXMvcmVnZWRpdC9SdS5yYywgcHJvZ3JhbXMvcmVnZWRpdC9TaS5yYywKCSAgcHJvZ3JhbXMvcmVnZWRpdC9yZXNvdXJjZS5oOgoJUGF1bCBWcmllbnMgPFBhdWwuVnJpZW5zQHhzNGFsbC5ubD4KCUNoYW5nZSBGYXZvdXJpdGUocykgaW50byBGYXZvcml0ZShzKS4KCUNoYW5nZSB2YXJpYWJsZXMgY29udGFpbmluZyBGQVZPVVJJVEUgaW50byBGQVZPUklURS4KCgkqIGRsbHMvdXNlci90ZXN0cy9zeXNwYXJhbXMuYzogSnVzdGluIENoZXZyaWVyIDxqY2hldnJpZXJAbmV4aWNvbS5uZXQ+CgktIENyZWF0ZWQgU1BJX3tHRVQsU0VUfUtFWUJPQVJEUFJFRiBhbmQgU1BJX3tHRVQsU0VUfVNDUkVFTlJFQURFUiB1bml0CgkgIHRlc3RzLgoJLSBSZW1vdmVkIGEgdHJhY2UgdGhhdCBzaG91bGRuJ3QgaGF2ZSBiZWVuIHRoZXJlLgoJLSBBZGQgcmV0dXJuIGNoZWNraW5nIHRvIFNQSV97R0VULFNFVH1XSEVFTFNDUk9MTExJTkVTIGFuZAoJICBTUElfe0dFVCxTRVR9TUVOVVNIT1dERUxBWSB1bml0IHRlc3RzIHNvIHRoZXkgbm8gbG9uZ2VyIHJ1biBvbgoJICBXaW5kb3dzIDk1IHdoZXJlIHRoZXkgYXJlbid0IHN1cHBvcnRlZC4KCS0gQ2hhbmdlZCBtaW5pbXVtIGhvdmVydGltZSBpbiBTUElfe0dFVCxTRVR9TU9VU0VIT1ZFUlRJTUUgdG8gMTAgYXMKCSAgV2luZG93cyBYUCBkZWZhdWx0cyB0byAxMCBhbnkgdmFsdWUgYmVsb3cgdGhhdC4KCgkqIGRsbHMvc2hlbGwzMi9icnNmb2xkZXIuYzogTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJRml4ZWQgcGFyc2luZyBvZiBJVEVNSURMSVNUIGluIEluaXRpYWxpemVUcmVlVmlldy4KCUFkZGVkIHNvbWUgZG9jdW1lbnRhdGlvbi4KCUZpeGVkIGEgY3Jhc2ggb2NjdXJpbmcgd2hlbiB0aGUgdXNlciBkb3VibGUtY2xpY2tzIGEgbGVhZiBpdGVtLgoKCSogZGxscy9tc2kvYWN0aW9uLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglUZXh0IHJlZm9ybWF0dGluZyBwYXRjaCB0byBjbGVhbiB1cCBhbGwgdGhlIHN0YXRpYyBzdHJpbmdzLgoKCSogZGxscy9jb21jdGwzMi9zdGF0dXMuYzogRmlsaXAgTmF2YXJhIDxuYXZhcmFmQHJlYWN0b3MuY29tPgoJSW1wbGVtZW50IFNCX1NFVEJPUkRFUlMuCgoJKiBkbGxzL3NldHVwYXBpL2Rldmluc3QuYywgaW5jbHVkZS93aW5pb2N0bC5oOgoJSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJSW1wbGVtZW50IFNldHVwRGlHZXRDbGFzc0RldnNBL1csIFNldHVwRGlFbnVtRGV2aWNlSW50ZXJmYWNlcywKCVNldHVwRGlEZXN0cm95RGV2aWNlSW5mb0xpc3QsIGFuZCBTZXR1cERpR2V0RGV2aWNlSW50ZXJmYWNlRGV0YWlsQSBmb3IKCXNlcmlhbCBwb3J0cy4KCgkqIHNlcnZlci9yZXF1ZXN0LmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglGaXggYSByYWNlIGNvbmRpdGlvbiBpbiBjcmVhdGVfZGlyKCkuCgoJKiBzZXJ2ZXIvY29uc29sZS5jLCBzZXJ2ZXIvZGVidWdnZXIuYywgc2VydmVyL3Byb2Nlc3MuYywKCSAgc2VydmVyL3Byb2Nlc3MuaCwgc2VydmVyL3B0cmFjZS5jLCBzZXJ2ZXIvcmVxdWVzdC5jLCBzZXJ2ZXIvdGhyZWFkLmg6CglDb252ZXJ0IHRoZSBwZXItcHJvY2VzcyB0aHJlYWQgbGlzdCB0byBhIHN0YW5kYXJkIGxpc3QuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYzogRW1tYW51ZWwgTWFpbGxhcmQgPGUucnN6QGxpYmVydHlzdXJmLmZyPgoJQWRkICctcmVhZF9vbmx5X3JlbG9jcyB3YXJuaW5nJyB0byBMRERMTEZMQUdTIG9uIERhcndpbi4KCgkqIGRsbHMvY29tY3RsMzIvcmViYXIuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBNYWtlIHJvdyBudW1iZXIgYmUgemVyby1iYXNlZC4KCS0gSW1wcm92ZW1lbnRzIHRvIGR1bXBpbmcgZnVuY3Rpb25zIHRvIG5vdCBkdW1wIG91dCBmaWVsZHMgdGhhdCBtYXkKCSAgbm90IGhhdmUgYmVlbiBmaWxsZWQgaW4uCgoJKiBkbGxzL3gxMWRydi9jbGlwYm9hcmQuYzogVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hAY29kZXdlYXZlcnMuY29tPgoJSWYgdW5leHBlY3RlZCBjb25kaXRpb24gb2NjdXJzIGp1c3QgcmVwb3J0IGFuIGVycm9yLgoKCSogZGxscy94MTFkcnYvYml0bWFwLmMsIGRsbHMveDExZHJ2L2RpYi5jOgoJSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUlmIHRoZSBkaWJzZWN0aW9uIGlzIGJhc2VkIG9uIGEgZmlsZS1tYXBwaW5nIG9iamVjdCwgdGhlbiBtYWtlIHN1cmUKCXRoYXQgdGhlIHNlY3Rpb24gaXMgaW4gc3luYyB3aGVuIHRoZSBkaWJzZWN0aW9uIGlzIGRlbGV0ZWQuCgoJKiBkbGxzL2tlcm5lbC9wYXRoLmM6IE1hcmNlbG8gRHVhcnRlIDx3aW5lLWRldmVsQGJvbC5jb20uYnI+CglDb3B5RmlsZSBuZWVkcyB0byByZXRhaW4gdGltZXN0YW1wLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvZmlsZS5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkIGFub3RoZXIgdGVzdCBjYXNlIGZvciBmaWxlIHNoYXJpbmcuCgoJKiBkbGxzL21zaS9hY3Rpb24uYzogSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJRG9uJ3QgaGFyZGNvZGUgd2luZG93cyBvciBzeXN0ZW0gZGlyZWN0b3JpZXMsIGNvcnJlY3QgYSB0eXBvLgoKCSogZGxscy9vbGUzMi9zdGdfcHJvcC5jOiBKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglNb3ZlIHZ0YmwgdG8gZW5kIG9mIGZpbGUgYW5kIGdldCByaWQgb2YgdW5uZWNlc3NhcnkgcHJvdG90eXBlcy4KCgkqIGRsbHMvc2hlbGwzMi9zaGZsZHJfZnMuYzogSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJQ29udmVydCB0YWJzIHRvIHNwYWNlLCB3cmFwIGxvbmcgbGluZXMsIG1ha2UgaW5kZW50aW5nIGNvbnNpc3RlbnQuCgoJKiBkbGxzL2RiZ2hlbHAvZGJnaGVscC5jLCBkbGxzL2RiZ2hlbHAvZGJnaGVscF9wcml2YXRlLmgsCgkgIGRsbHMvZGJnaGVscC9lbGZfbW9kdWxlLmMsIGRsbHMvZGJnaGVscC9tb2R1bGUuYywKCSAgZGxscy9kYmdoZWxwL3BlX21vZHVsZS5jLCBkbGxzL2RiZ2hlbHAvc3RhYnMuYzoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJTWVtb3J5IGNvbnN1bXB0aW9uIG9wdGltaXphdGlvbiB3aGlsZSBsb2FkaW5nIEVMRiBkZWJ1ZyBpbmZvOgoJLSBkb24ndCBtYXAgdHdpY2UgYW4gRUxGIGZpbGUgZm9yIHN5bWJvbCBsb29rdXAgKGluIG5vbiBkZWZlcnJlZCBtb2RlKQoJLSBubyBsb25nZXIgZW50aXJlbHkgbWFwIGFuIEVMRiBmaWxlIGludG8gbWVtb3J5LCBidXQgb25seSB0aGUKCSAgc2VjdGlvbnMgd2UgbmVlZC4KCUFkZGVkIHN1cHBvcnQgZm9yIGxvYWRpbmcgRUxGIG1vZHVsZXMgdGhydSBTeW1Mb2FkTW9kdWxlIGluIGEgbm9uIGxpZmUKCXByb2Nlc3MuCglGYWN0b3Jpc2F0aW9uIG9mIGNvZGUgZm9yIEVMRiBtb2R1bGUgaGFuZGxpbmcuCglGaXhlcyB0byBFTEYgc3ltYm9sIGxvYWRpbmcKCS0gZHJvcHMgc3ltYm9scyBmcm9tIHN5bXRhYiB3aGljaCBhcmUgbmVpdGhlciBmdW5jcyBub3IgZ2xvYmFsCgkgIHZhcmlhYmxlcwoJLSBmaXhlcyBzb21lIGluY29ycmVjdCBzaXplIGNvbXB1dGF0aW9uIGZvciBsYXRlc3QgR0NDIHZlcnNpb25zLgoJU2V2ZXJhbCBjbGVhbnVwcyBhbmQgZml4ZXMuCgoJKiB0b29scy93aW5laW5zdGFsbDogSmVmZiBTbWl0aCA8d2h5ZG91YnRAeWFob28uY29tPgoJQXZvaWRzIGEgc2hpZnQgd2FybmluZyB0aHJvd24gYnkgb2xkZXIgdmVyc2lvbnMgb2YgYmFzaC4KCjIwMDUtMDItMjYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3gxMWRydi9jbGlwYm9hcmQuYywgZGxscy94MTFkcnYvZGdhMi5jLCBkbGxzL3gxMWRydi9ldmVudC5jLAoJICBkbGxzL3gxMWRydi9rZXlib2FyZC5jLCBkbGxzL3gxMWRydi9tb3VzZS5jLCBkbGxzL3gxMWRydi93aW5wb3MuYywKCSAgZGxscy94MTFkcnYvd2ludGFiLmMsIGRsbHMveDExZHJ2L3gxMWRydi5oOgoJVXNlIGEgdGFibGUgb2YgaGFuZGxlcnMgdG8gZGlzcGF0Y2ggWCBldmVudHMgYW5kIGdldCByaWQgb2YgdGhlCglzcGVjaWFsIGNhc2luZyBmb3IgREdBIGFuZCB0YWJsZXQgZXZlbnRzLgoJVW5pZnkgdGhlIGRlY2xhcmF0aW9ucyBvZiBhbGwgdGhlIGV2ZW50IGhhbmRsZXJzLgoKCSogZGxscy9rZXJuZWwvdm9sdW1lLmM6CglGaXhlZCByZWdyZXNzaW9uIGluIFF1ZXJ5RG9zRGV2aWNlQSB3aGVuIHBhc3NlZCBhIE5VTEwgZGV2aWNlIG5hbWUuCgoJKiBzZXJ2ZXIvZGVidWdnZXIuYzoKCUNvbnZlcnRlZCB0aGUgZGVidWcgZXZlbnQgcXVldWUgdG8gYSBzdGFuZGFyZCBsaXN0LgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWM6IFBpZXJyZSBkJ0hlcmJlbW9udCA8c3RlZ2VmaW5AZnJlZS5mcj4KCVN5bnRheCBmaXggaW4gY29uZmlndXJlLmFjLgoKCSogZGxscy9tc2kvdGVzdHMvZGIuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZSBhIHRlbXBvcmFyeSBtc2kgZGF0YWJhc2UgZmlsZS4KCgkqIGRsbHMvc2hlbGwzMi9zaGZsZHJfbXljb21wLmM6IEp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCUNvbnZlcnQgYSBmZXcgY2FsbHMgdG8gVW5pY29kZS4KCgkqIGRsbHMvd2lubW0vbWNpLmM6IENocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUFkZGVkIHNvbWUgbW9yZSBjYXNlcyB0byBNQ0lfTWFwTXNnQXRvVy4KCgkqIHdpbmRvd3MvY3Vyc29yaWNvbi5jOiBKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJTWFrZSBMUl9MT0FEVFJBTlNQQVJFTlQgd29yayBhbmQgZ2l2ZSB0cmFuc3BhcmVudCBpbWFnZXMuCgoyMDA1LTAyLTI1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2VydmVyL2NvbnNvbGUuYzoKCUNvbnZlcnRlZCB0aGUgZ2xvYmFsIHNjcmVlbiBidWZmZXIgbGlzdCB0byBhIHN0YW5kYXJkIGxpc3QuCgoJKiBzZXJ2ZXIvcXVldWUuYzoKCVJlcGxhY2VkIHRoZSBtZXNzYWdlX2xpc3Qgc3RydWN0dXJlIGJ5IGEgc3RhbmRhcmQgbGlzdC4KCgkqIGRsbHMveDExZHJ2L2NsaXBib2FyZC5jLCBkbGxzL3gxMWRydi9ldmVudC5jLCBkbGxzL3gxMWRydi94MTFkcnYuaDoKCU1vdmVkIGNsaXBib2FyZCBldmVudCBoYW5kbGluZyBmdW5jdGlvbnMgYW5kIHNvbWUgcHJpdmF0ZSBkYXRhCglzdHJ1Y3R1cmVzIHRvIGNsaXBib2FyZC5jLgoKCSogc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdGhyZWFkLmg6CglDb252ZXJ0IHRoZSBnbG9iYWwgdGhyZWFkIGxpc3QgdG8gYSBzdGFuZGFyZCBsaXN0LgoKCSogc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3Byb2Nlc3MuaDoKCUNvbnZlcnQgdGhlIGdsb2JhbCBwcm9jZXNzIGxpc3QgdG8gYSBzdGFuZGFyZCBsaXN0LgoKCSogZGxscy9kc291bmQvdGVzdHMvZHMzZC5jLCBkbGxzL2Rzb3VuZC90ZXN0cy9kc291bmQuYywKCSAgZGxscy9kc291bmQvdGVzdHMvZHNvdW5kX3Rlc3QuaDoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglBZGQgc2Vjb25kYXJ5IGJ1ZmZlciBTZXRGcmVxdWVuY3kgdGVzdC4KCgkqIGRsbHMvZHNvdW5kL21peGVyLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglVc2UgbkJsb2NrQWxpZ24gcmF0aGVyIHRoYW4gY2FsY3VsYXRpbmcgaXQuCglBZGQgYSBidWZmZXIgbGVuZ3RoIGFsaWdubWVudCBlcnJvciBtZXNzYWdlLgoKCSogZGxscy9tc3ZjcnQvdGVzdHMvcHJpbnRmLmMsIGRsbHMvbXN2Y3J0L3djcy5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQWR2YW5jZSBvdmVyICogYXJndW1lbnQgZm9yIHByZWNpc2lvbi4KCUhvbm9yIHByZWNpc2lvbiBhcmd1bWVudCBmb3Igc3RyaW5ncy4KCgkqIHNlcnZlci9tdXRleC5jLCBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90aHJlYWQuaDoKCUNvbnZlcnQgdGhlIHBlci10aHJlYWQgbXV0ZXggbGlzdCB0byBhIHN0YW5kYXJkIGxpc3QuCgoJKiBkbGxzL2FkdmFwaTMyL3JlZ2lzdHJ5LmMsIGRsbHMvYWR2YXBpMzIvdGVzdHMvcmVnaXN0cnkuYzoKCUphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJRml4IFJlZ09wZW4vQ2xvc2VLZXkuCgoJKiBkbGxzL3VzZXIvZWRpdC5jOiBMYXVyaSBUdWxtaW4gPHR1bG1pbkBnbWFpbC5jb20+CglNYWtlIHN1cmUgdGhhdCBsYXN0IGxpbmUgaXMgYXQgdGhlIGJvdHRvbSBvZiB0aGUgZWRpdCBjb250cm9sLgoKCSogZGxscy9kc291bmQvZHNvdW5kLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglDaGFuZ2UgU2V0Q29vcGVyYXRpdmVMZXZlbCBGSVhNRSB0byBXQVJOLgoKCSogdG9vbHMvd2luZWR1bXAvbG5rLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUR1bXAgdGhlIHBpZGwgb2YgYSBsbmsgZmlsZS4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYywgZGxscy9zaGVsbDMyL3Rlc3RzL3NoZWxsbGluay5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJLSBpbXBsZW1lbnQgbG9hZGluZyBhbmQgc2F2aW5nIG9mIE1TSSBhZHZlcnRpc2VkIHNob3J0Y3V0IGluZm8KCS0gbWFrZSBtb3JlIHRlc3QgY2FzZXMgcGFzcwoJLSByZWFkIGFuZCB3cml0ZSB0aGUgbG9jYXRpb24gYmxvY2sKCS0gaW1wcm92ZSB0aGUgYmluYXJ5IGNvbXBhdGliaWxpdHkgb2YgbG5rIGZpbGVzCgoJKiBsaWJzL3dwcC9wcGwubDogR2UgdmFuIEdlbGRvcnAgPGd2Z0ByZWFjdG9zLmNvbT4KCVRyZWF0IGFscmVhZHkgcHJlcHJvY2Vzc2VkIGNvZGUganVzdCBsaWtlIG5vcm1hbCAjaW5jbHVkZSdlZCBjb2RlLgoKCSogZGxscy92ZXJzaW9uL3Rlc3RzL2luZm8uYzoKCVN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJRXhjbHVkZSB0d28gdGVzdHMgY3Jhc2hpbmcgb24gV2luTlQ0LgoKCSogZGxscy9jb21jdGwzMi90YWIuYzogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCVJlbW92ZSB1bm5lZWRlZCBjYWxscyB0byBUQUJfR2V0SW5mb1B0cigpLCBjb25zdCBmaXhlcywgaW5saW5lIHNtYWxsCglmdW5jcyAmIHJlbW92ZSB1bnVzZWQgcGFyYW1ldGVycy4KCgkqIGRsbHMvY29tY3RsMzIvc3RyaW5nLmMsIGRsbHMvY29tbWRsZy9jZGxnMzIuYywgZGxscy9rZXJuZWwvY29tbS5jLAoJICBkbGxzL2tlcm5lbC9lZGl0bGluZS5jLCBkbGxzL2tlcm5lbC9wcm9jZXNzLmMsIGRsbHMva2VybmVsL3RodW5rLmMsCgkgIGRsbHMva2VybmVsL3RpbWUuYywgZGxscy9tc2kvbXNpLmMsIGRsbHMvbXN2Y3J0L21iY3MuYywKCSAgZGxscy9udGRsbC9oZWFwLmMsIGRsbHMvbnRkbGwvbGFyZ2VfaW50LmMsIGRsbHMvbnRkbGwvcnRsYml0bWFwLmMsCgkgIGRsbHMvbnRkbGwvcnRsc3RyLmMsIGRsbHMvbnRkbGwvc2VjLmMsIGRsbHMvb2xlMzIvb2xlMi5jLAoJICBkbGxzL29sZWF1dDMyL29sZXBpY3R1cmUuYywgZGxscy9vbGVhdXQzMi90ZXN0cy92YXJ0eXBlLmMsCgkgIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jLCBkbGxzL29sZWF1dDMyL3R5cGVsaWIyLmMsCgkgIGRsbHMvb2xlYXV0MzIvdmFyZm9ybWF0LmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywKCSAgZGxscy9zaGx3YXBpL2Fzc29jLmMsIGRsbHMvc2hsd2FwaS9zdHJpbmcuYywgZGxscy93aW4zMnMvdzMyc3lzLmMsCgkgIGRsbHMvd2luZXBzL2dyYXBoaWNzLmMsIGRsbHMvd2luaW5ldC9uZXRjb25uZWN0aW9uLmMsCgkgIHByb2dyYW1zL3JlZ2VkaXQvcmVncHJvYy5jLCBwcm9ncmFtcy9ydW5kbGwzMi9ydW5kbGwzMi5jLAoJICBwcm9ncmFtcy93aW5lZmlsZS93aW5lZmlsZS5jLCB0b29scy93aWRsL3dyaXRlX21zZnQuYywKCSAgdG9vbHMvd3JjL25ld3N0cnVjLmMsIHdpbmRvd3MvY3Vyc29yaWNvbi5jLCB3aW5kb3dzL3NweS5jLAoJICB3aW5kb3dzL3VzZXIuYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglEb2N1bWVudGF0aW9uIHNwZWxsaW5nIGZpeGVzLgoKCSogc2VydmVyL2ZkLmM6CglSZWd1bGFyIGZpbGVzIGFyZSBhbHdheXMgcmVhZHkgZm9yIEkvTywgbm8gbmVlZCB0byBwb2xsIG9uIHRoZW0uCgoJKiBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90aHJlYWQuaDoKCUNvbnZlcnQgdGhlIEFQQyBxdWV1ZXMgdG8gdXNlIHN0YW5kYXJkIGxpc3RzLgoKCSogZGxscy9jb21tZGxnL2ZvbnRkbGcuYzogVHJveSBSb2xsbyA8d2luZUB0cm95LnJvbGxvLm5hbWU+CglGaXggc3RhY2sgb2JqZWN0IG92ZXJydW4gd2hlbiBhbiBhcHBsaWNhdGlvbiBjYWxscyBDaG9vc2VGb250QS4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IHRoZSBhY3Rpb24gUmVnaXN0ZXJGb250cy4KCgkqIGRsbHMvdXNlci9lZGl0LmM6IExhdXJpIFR1bG1pbiA8dHVsbWluQGdtYWlsLmNvbT4KCUltcGxlbWVudGVkICFFU19BVVRPW0hWXVNDUk9MTC4KCgkqIGRsbHMvZ2RpL2ZyZWV0eXBlLmM6CglUQU5BQkUgSGlyb3NoaSA8aGlyb2t1bl9kYXlvbW9uQGluZm9zZWVrLnRvPiB3cm90ZToKCVJlbW92ZSAoYnVmICYmICFidWZsZW4pIGNoZWNraW5nLgoJRml4ZWQgb3V0bGluZSByZW5kZXJpbmcgd2l0aCBHR09fR1JBWT9fQklUTUFQIG9wdGlvbi4KCUltcHJvdmVkIGZpeGVkLXBpdGNoIGZvbnRzIGRldGVjdGlvbi4KCgkqIHByb2dyYW1zL3dpbmVjZmcvZHJpdmVkZXRlY3QuYywgcHJvZ3JhbXMvd2luZWNmZy9wcm9wZXJ0aWVzLmg6CglQYXVsIHZhbiBTY2hheWNrIDxwb2xsZWtlQGdtYWlsLmNvbT4KCUFzIGxhc3Qgb3B0aW9uIGZvciBkcml2ZSB0eXBlIGRldGVjdGlvbiB3ZSB0cnkgdGhlIGRldmljZSBub2RlIG5hbWUuCgoJKiBkbGxzL29sZTMyL3N0b3JhZ2UzMi5jOiBQYXVsIFZyaWVucyA8UGF1bC5WcmllbnNAeHM0YWxsLm5sPgoJQWRkZWQgc29tZSBUUkFDRSBzdGF0ZW1lbnRzLgoKMjAwNS0wMi0yNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNlcnZlci9yZWdpc3RyeS5jOgoJQ29udmVydCB0aGUga2V5IG5vdGlmaWNhdGlvbnMgbGlzdCB0byBhIHN0YW5kYXJkIGxpc3QuCgoJKiBkbGxzL3VzZXIvcGFpbnRpbmcuYzoKCVJlcGFpbnQgdGhlIG5vbi1jbGllbnQgYXJlYSB0byB3b3JrIGFyb3VuZCBicm9rZW4gV01fUEFJTlQgaGFuZGxlcnMKCWFsc28gd2hlbiBkb2luZyBhIHN5bmNocm9ub3VzIHVwZGF0ZSB3aXRoIFJEV19VUERBVEVOT1cuCgoJKiBkbGxzL29sZTMyL3N0Z19wcm9wLmMsIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmMsCgkgIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmg6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBZGQgc3RydWN0IFN0b3JhZ2VCYXNlSW1wbCBhdCB0aGUgc3RhcnQgb2YgZGVyaXZlZCBzdHJ1Y3R1cmVzIGluc3RlYWQKCW9mIHRyeWluZyB0byBrZWVwIHRoZSBmaXJzdCBtZW1iZXJzIHRoZSBzYW1lLgoKCSogZGxscy91c2VyL3Njcm9sbC5jOiBWaXRhbHkgTGlwYXRvdiA8bGF2QGV0ZXJzb2Z0LnJ1PgoJLSBGaXggc2Nyb2xsYmFyIHNob3cvdXBkYXRlIGNvbmRpdGlvbnMgaW4gU0NST0xMX1NldFNjcm9sbEluZm86IHdlIERPCgkgIE5PVCBzaG93IHNjcm9sbCBiYXIgaWYgb25seSBwYWdlIHBhcmFtZXRlciBjaGFuZ2luZyB3aGVuIHNjcm9sbGJhcgoJICBpcyBkaXNhYmxlZC4KCS0gUmVtb3ZlZCBiQ2hhbmdlUGFyYW1zIGZyb20gU0NST0xMX1NldFNjcm9sbEluZm8gYXMgdW5uZWVkZWQgZmxhZy4KCgkqIGRvY3VtZW50YXRpb24vZmFxLnNnbWw6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglTaG9ydGVuIHRoZSBpZCBvZiB0aGUgcXVlc3Rpb24gdG8gYXZvaWQgamFkZSBlcnJvci4KCgkqIHByb2dyYW1zL3Rhc2ttZ3IvRnIucmMsIHByb2dyYW1zL3Rhc2ttZ3IvdGFza21nci5yYywKCSAgcHJvZ3JhbXMvd2luZWNmZy9Gci5yYywgcHJvZ3JhbXMvd2luZWNmZy93aW5lY2ZnLnJjOgoJSm9uYXRoYW4gRXJuc3QgPEpvbmF0aGFuQEVybnN0RmFtaWx5LmNoPgoJRnJlbmNoIGxvY2FsaXphdGlvbi4KCgkqIHNlcnZlci9mZC5jLCBzZXJ2ZXIvZmlsZS5jLCBzZXJ2ZXIvZmlsZS5oLCBzZXJ2ZXIvc2VyaWFsLmMsCgkgIHNlcnZlci9zb2NrLmM6CglDb252ZXJ0IGFzeW5jIEkvTyBxdWV1ZXMgdG8gc3RhbmRhcmQgbGlzdHMuCgoJKiBkbGxzL3JpY2hlZGl0L3JpY2hlZGl0LmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZSB1bnVzZWQgZGVjbGFyYXRpb24uCgoJKiBkbGxzL3VzZXIvdGVzdHMvbXNnLmMsIHdpbmRvd3Mvd2luLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJUmVsZWFzZSBjYXB0dXJlIGJlZm9yZSBzZW5kaW5nIFdNX05DREVTVFJPWSBtZXNzYWdlLCBkbyBub3Qgc2VuZAoJV01fQ0FQVFVSRUNIQU5HRUQgaW4gdGhhdCBjYXNlLiBBZGQgYSB0ZXN0IGNhc2UgZm9yIHRoYXQgYmVoYXZpb3VyLgoKCSogZGxscy91c2VyL3Rlc3RzL3dpbi5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJR2V0V2luZG93UmVjdCBhbmQgR2V0Q2xpZW50UmVjdCBkbyBub3QgY2hhbmdlIFJFQ1QgY29udGVudHMgaWYgdGhlCglwYXNzZWQgd2luZG93IGhhbmRsZSBpcyBpbnZhbGlkLgoKCSogZGxscy9kc291bmQvdGVzdHMvY2FwdHVyZS5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJVHJ5IG9sZCBidWZmZXIgZGVzY3JpcHRpb24gc3RydWN0dXJlIG9uIGZhaWx1cmUgd2l0aCBuZXcgb25lLgoKCSogZGxscy9rZXJuZWwvZXhjZXB0LmMsIGRsbHMvbnRkbGwvY3JpdHNlY3Rpb24uYywKCSAgZGxscy9udGRsbC9leGNlcHRpb24uYywgZGxscy9udGRsbC9sb2FkZXIuYywKCSAgZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jLCBkbGxzL250ZGxsL3NpZ25hbF9wb3dlcnBjLmMsCgkgIGRsbHMvbnRkbGwvc2lnbmFsX3NwYXJjLmMsIGRsbHMvbnRkbGwvdGVzdHMvZ2VuZXJhdGVkLmMsCgkgIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbm50Lmg6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJTWF0Y2ggUmFpc2VFeGNlcHRpb24gYW5kIEVYQ0VQVElPTl9SRUNPUkQgdG8gU0RLIGRlZmluaXRpb25zLgoKCSogZGxscy9vcGVuZ2wzMi93Z2xfZXh0LmM6IFJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJLSBpbXBsZW1lbnQgcGFydGlhbCBQQnVmZmVyIHN1cHBvcnQKCS0gbWluaW1hbCBwaXhlbCBmb3JtYXQgc3VwcG9ydAoKCSogZGxscy9tc2Rtby9kbW9ydC5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglSZW1vdmUgdGFicywgcmVmb3JtYXQsIG1lcmdlIGNvbW1lbnRzLgoKCSogZGxscy9tc2kvYWN0aW9uLmMsIGRsbHMvbXNpL2FjdGlvbi5oLCBkbGxzL21zaS9tc2lwcml2Lmg6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQWRkIHRoZSBFeGVjdXRlQWN0aW9uIGhhbmRsZXIuCglTdG9yZSB0aGUga2V5cGF0aCwgYW5kIGRvIHJlZmNvdW50aW5nIGFuZCByZWdpc3RyYXRpb24gb2YgU2hhcmVkRExMcy4KCUZpeCBhIGJ1ZyB3aXRoIGhhbmRpbmcgZHdvcmQgdmFsdWVzIGluIHRoZSByZWdpc3RyeS4KCUZpeCBidWdzIHdpdGggd3JpdGluZyByZWdpc3RyeSBrZXlzIHdoZXJlIHZhbHVlID09IE5VTEwuCglNYWtlIHVzZSBvZiBtc2lkZWZzLmguCglMYXkgc29tZSBncm91bmR3b3JrIGZvciB1bmluc3RhbGxzLgoKCSogZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYzogTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5kZT4KCS0gSW1hZ2VMaXN0X0xvYWRJbWFnZXtBLFd9IHdlcmUgYmFzaWNhbHkgYSBjdXQnbidwYXN0ZSBvZiBlYWNoCgkgIG90aGVyLiBSZW1vdmVkIHRoZSBBIHZhcmlhbnQgYW5kIGRpZCBhIEEtPlcgdHJhbnNsYXRpb24uCgktIEltYWdlTGlzdF9Mb2FkSW1hZ2VXOiBnZXQgdGhlIGJpdG1hcCBzaXplIGZyb20gdGhlIGltYWdlIGl0c2VsZiBhbmQKCSAgbm90IGZyb20gdGhlIG1hc2sgKEltYWdlTGlzdF9Mb2FkSW1hZ2VBIGRpZCB0aGF0KS4KCgkqIGRvY3VtZW50YXRpb24vd2luZWRldi1rZXJuZWwuc2dtbDogQnJpYW4gVmluY2VudCA8dmlubkB0aGVzaGVsbC5jb20+CglDbGVhbiB1cCByZWZlcmVuY2VzIHRvIHRocmVhZGluZyBpbiBEZXZlbG9wZXIncyBHdWlkZS4KCgkqIGRvY3VtZW50YXRpb24vZmFxLnNnbWw6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglDYW4gd2UgYnVuZGxlIGV2ZXJ0aGluZyB0b2dldGhlcj8KCVN1Z2dlc3RlZCBieSBHcmFoYW0gVG9hbCA8Z3RvYWxAZ3RvYWwuY29tPi4KCgkqIGRvY3VtZW50YXRpb24vZGVidWdnaW5nLnNnbWw6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglBZGQgaW5mbyBvbiBidWlsZGluZyBkeW5hbWljIHN0cmluZ3MgZm9yIGxvZ2dpbmcuCglSZW9yZGVyIHNvbWUgcG9pbnRzIGZvciBhIG1vcmUgbG9naWNhbCBvcmdhbml6YXRpb24uCgoJKiBkbGxzL21zaS9tc2kuYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCURvIHNvbWUgYmFzaWMgd29yayB3aXRoIHJlZ2lzdHJ5IGNvbXBvbmVudCBwYXRocy4KCgkqIGluY2x1ZGUvbXNpZGVmcy5oOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJRGVmaW5lIG1zaWRiQ29tcG9uZW50QXR0cmlidXRlcy4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jOiBVbHJpY2ggQ3pla2FsbGEgPHVscmljaEBjb2Rld2VhdmVycy5jb20+CglQcmV2ZW50IGFjY2Vzc2luZyBmcmVlZCBtZW1vcnkgaW4gZmFpbHVyZSBjYXNlLgoKCSogZGxscy9kM2Q4L2RpcmVjdHguYywgZGxscy93aW5lZDNkL2RldmljZS5jOgoJSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCUNvcnJlY3QgaGFuZGxpbmcgb2YgdW51c3VhbCB2ZW5kb3Igc3RyaW5ncyBpbiBkM2Q4LCBhbmQgY2hlY2sgZm9yIGEKCXN0YXRlYmxvY2sgYmVmb3JlIHRyeWluZyB0byByZWxlYXNlIGl0IGluIHdpbmVkM2QuCgoJKiBkbGxzL3VzZXIvZWRpdC5jOiBMYXVyaSBUdWxtaW4gPHR1bG1pbkBnbWFpbC5jb20+CglDb250cm9scyB3aXRoIEVTX1JJR0hUIG9yIEVTX0NFTlRFUiBzaG91bGRuJ3QgaGF2ZSBFU19BVVRPSFNDUk9MTC4KCjIwMDUtMDItMjMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3gxMWRydi9ldmVudC5jOgoJUmV2ZXJ0IFNDX0NMT1NFIGNoYW5nZSwgdGhpcyBpcyBjYXVzaW5nIGRlYWRsb2Nrcy4KCgkqIGRvY3VtZW50YXRpb24vdGhyZWFkaW5nLnNnbWw6IFJlbW92ZWQgbm8gbG9uZ2VyIHVzZWQgdGhyZWFkaW5nLnNnbWwuCgoJKiBkb2N1bWVudGF0aW9uL3dpbmVkZXYta2VybmVsLnNnbWw6CglCaWxsIE1lZGxhbmQgPGJpbGxtZWRsYW5kQG1lcmN1cnlzcGVlZC5jb20+CglDb3JyZWN0IGEgY291cGxlIG9mIG1pbm9yIGRvY3VtZW50YXRpb24gdHlwb3MuCgoJKiB0b29scy93aWRsL2NsaWVudC5jLCB0b29scy93aWRsL3BhcnNlci55LCB0b29scy93aWRsL3Byb3h5LmgsCgkgIHRvb2xzL3dpZGwvc2VydmVyLmMsIHRvb2xzL3dpZGwvd2lkbC5jLCB0b29scy93aWRsL3dpZGwuaDoKCVJlbW92ZWQgdGhlIHVzZWxlc3MgcHJveHkuaCBoZWFkZXIgZmlsZS4KCUZpeGVkIGEgY291cGxlIG9mIHdhcm5pbmdzLgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmMsIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5oOgoJSmVyZW15IFdoaXRlIDxqd2hpdGVAY29kZXdlYXZlcnMuY29tPgoJTW9yZSBjb3JyZWN0IGZpeCBmb3IgZHNwIGVtcHR5IGNhc2UuCgoJKiBwcm9ncmFtcy93aW5lZmlsZS9EZS5yYzogSGVubmluZyBHZXJoYXJkdCA8aGVubmluZy5nZXJoYXJkdEB3ZWIuZGU+CglTbWFsbCBmaXggZm9yIHRoZSBHZXJtYW4gcmVzb3VyY2UgZmlsZS4KCgkqIHByb2dyYW1zL3Rhc2ttZ3IvRGUucmMsIHByb2dyYW1zL3Rhc2ttZ3IvdGFza21nci5yYywKCSAgcHJvZ3JhbXMvd2luZWNmZy9EZS5yYywgcHJvZ3JhbXMvd2luZWNmZy93aW5lY2ZnLnJjOgoJSGVubmluZyBHZXJoYXJkdCA8aGVubmluZy5nZXJoYXJkdEB3ZWIuZGU+CglBZGRlZCBHZXJtYW4gbGFuZ3VhZ2Ugc3VwcG9ydC4KCgkqIHRvb2xzL3dpbmVpbnN0YWxsOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJU3VnZ2VzdCBtYWtlIHVuaW5zdGFsbCBpbiBjYXNlIHRoZSB1c2VyIHRyaWVkIG1ha2UgaW5zdGFsbC4KCgkqIHRvb2xzL3dpZGwvTWFrZWZpbGUuaW4sIHRvb2xzL3dpZGwvY2xpZW50LmMsIHRvb2xzL3dpZGwvaGVhZGVyLmMsCgkgIHRvb2xzL3dpZGwvcGFyc2VyLmwsIHRvb2xzL3dpZGwvcGFyc2VyLnksIHRvb2xzL3dpZGwvc2VydmVyLmMsCgkgIHRvb2xzL3dpZGwvd2lkbC5jLCB0b29scy93aWRsL3dpZGwuaCwgdG9vbHMvd2lkbC93aWRsdHlwZXMuaDoKCUVyaWMgS29obCA8ZXJpYy5rb2hsQHQtb25saW5lLmRlPgoJLSBBZGQgYmFzaWMgc3VwcG9ydCBmb3IgY3JlYXRpbmcgY2xpZW50IGFuZCBzZXJ2ZXIgc3R1YiBmaWxlcy4KCS0gU3VwcG9ydCBpbXBsaWNpdF9oYW5kbGUgYXR0cmlidXRlIGluIElETCBmaWxlcy4KCS0gQnVpbGQgbWl4ZWQtbW9kZSBzdHViIGZpbGVzLgoKCSogZGxscy9yc2FiYXNlL01ha2VmaWxlLmluLCBkbGxzL3JzYWJhc2UvbWFpbi5jLAoJICBkbGxzL3JzYWJhc2UvcnNhYmFzZS5zcGVjOgoJTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJTWFkZSByc2FiYXNlIGZvcndhcmQgZXZlcnl0aGluZyB0byByc2FlbmguCgoJKiBkbGxzL2tlcm5lbC9jcHUuYywgZGxscy9udGRsbC9udC5jOiBSZWluIEtsYXplcyA8d2lqbkB3YW5hZG9vLm5sPgoJTnRRdWVyeVBlcmZvcm1hbmNlQ291bnRlciBzaG91bGQgcmV0dXJuIGEgZnJlcXVlbmN5IG9mIDExOTMxODJIeiBhbmQKCWNvdW50cyBsaWtlIGluIFdpbmRvd3MuIFNvbWUgYXBwbGljYXRpb25zIGRlcGVuZCBvbiB0aGF0LgoJU2ltcGxpZnkgUXVlcnlQZXJmb3JtYW5jZUNvdW50ZXIgYSBiaXQuCgoJKiBkbGxzL3dpbm1tL3Rlc3RzL3dhdmUuYzogSmVyZW15IFdoaXRlIDxqd2hpdGVAY29kZXdlYXZlcnMuY29tPgoJQW4gaW50ZXJhY3RpdmUgdGVzdCBzaG91bGQgaGF2ZSB2b2x1bWUsIGVsc2UgYSByYXRpb25hbCB1c2VyIHdpbGwKCWRlY2lkZSBpdCBpcyBicm9rZW4uCgoJKiBkbGxzL3NoZWxsMzIvc2hmbGRyX215Y29tcC5jLCBkbGxzL3NoZWxsMzIvc2hsZnNiaW5kLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglSZW1vdmUgdGFicyBhbmQgcmVmb3JtYXQuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFkZCB0aGUgLW5vbmFtZSBmbGFnIHRvIG1hdGNoIHRoZSBQbGF0Zm9ybSBTREsuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzogSmVyZW15IFdoaXRlIDxqd2hpdGVAY29kZXdlYXZlcnMuY29tPgoJSW4gY2FsY3VsYXRpbmcgdGhlIFNNUFRFIHRpbWUsIHdlIHdvdWxkIHJvdW5kIGluY29ycmVjdGx5ICgwOjA6NC4zMAoJaW5zdGVhZCBvZiAwOjA6NS4wIFt0aGUgbGFzdCBjb2x1bW4gb25seSBnb2VzIHRvIDI5XSkuCgoJKiBkbGxzL3NoZWxsMzIvZW51bWlkbGlzdC5jLCBkbGxzL3NoZWxsMzIvZW51bWlkbGlzdC5oLAoJICBkbGxzL3NoZWxsMzIvcGlkbC5oLCBkbGxzL3NoZWxsMzIvc2hmbGRyLmgsCgkgIGRsbHMvc2hlbGwzMi9zaGZsZHJfZGVza3RvcC5jLCBkbGxzL3NoZWxsMzIvc2hmbGRyX2ZzLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CgktIGhhbmRsZSBJRmlsZVN5c3RlbUJpbmREYXRhIGluIElTRl9EZXNrdG9wX2ZuUGFyc2VEaXNwbGF5TmFtZQoJLSBtb3JlIFVuaWNvZGUgY29udmVyc2lvbgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglEb24ndCBoYXJkY29kZSBvcmRpbmFscyBpZiB3aGljaCBhcmUgbm90IGhhcmRjb2RlZCBvbiBXaW5kb3dzLgoKCSogZGxscy9tc2kvZm9ybWF0LmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglNYWtlIHN1cmUgZm9ybWF0cyBsaWtlIFtcXF1dIGFuZCBbXFxbXSB3b3JrIHByb3Blcmx5LgoKCSogZGxscy9hZHZhcGkzMi90ZXN0cy9jcnlwdC5jOiBKYWtvYiBFcmlrc3NvbiA8amFrb3ZAdm1saW51eC5vcmc+CglBcHBhcmVudGx5IE5UNCBjYW4gYWxzbyByZXR1cm4gRVJST1JfRU5WVkFSX05PVF9GT1VORC4KCgkqIGRsbHMvdXNlci90ZXN0cy9tc2cuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCS0gUGFzcyBvcmlnaW5hbCB3UGFyYW0gdG8gQ2FsbE5leHRIb29rRXguCgktIEF2b2lkIHBsYXlpbmcgZ2FtZXMgd2l0aCBmb2N1cyBpbiBhIG5ld2x5IGNyZWF0ZWQgdGhyZWFkLCB0aGF0IGxlYWRzCgkgIHRvIGFsbCBraW5kcyBvZiBtaXNiZWhhdmlvdXJzIGFuZCBmYWlsdXJlcyBpbiB3aW5kb3cgYWN0aXZhdGlvbgoJICB1bmRlciBXaW5kb3dzLgoKCSogZGxscy9kc291bmQvdGVzdHMvY2FwdHVyZS5jLCBkbGxzL2Rzb3VuZC90ZXN0cy9kczNkLmMsCgkgIGRsbHMvZHNvdW5kL3Rlc3RzL2RzM2Q4LmMsIGRsbHMvZHNvdW5kL3Rlc3RzL2Rzb3VuZC5jLAoJICBkbGxzL2Rzb3VuZC90ZXN0cy9kc291bmQ4LmMsIGRsbHMvZHNvdW5kL3Rlc3RzL3Byb3BzZXQuYzoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglGaXggdGVzdHMgZm9yIHdpbjl4IGFuZCBvbGQgdmVyc2lvbnMgb2YgRGlyZWN0WC4KCgkqIGRsbHMvd2ludHJ1c3Qvd2ludHJ1c3Quc3BlYywgZGxscy93aW50cnVzdC93aW50cnVzdF9tYWluLmM6CglNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmRlPgoJU3R1YiBmb3IgQ3J5cHRDQVRBZG1pblJlbGVhc2VDb250ZXh0LgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6IEplcmVteSBXaGl0ZSA8andoaXRlQGNvZGV3ZWF2ZXJzLmNvbT4KCVdoZW4gd2UgZ2V0IGRvd24gdG8gdGhlIGxhc3QgZnJhZ21lbnQgb3IgdHdvIGluIG91ciBvdXRwdXQgdG8gdGhlIERTUCwKCXdlIHNob3VsZCB1c2UgdGhlIFNORF9EU1BfUE9TVCBpb2N0bCB0byBsZXQgdGhlIHNvdW5kIGNhcmQga25vdyB0bwoJZmx1c2ggdGhvc2UgZnJhZ21lbnRzLiAgVGhpcyBhbGxvd3MgdXMgdG8gcHJlY2lzZWx5IGtub3cgd2hlbiB0aGUKCWJ1ZmZlciBpcyBlbXB0eSwgYW5kIGZpeGVzIGFub3RoZXIgc2V0IG9mIHdpbm1tIHRlc3RzLgoKCSogZGxscy93aW5tbS90ZXN0cy93YXZlLmM6IEplcmVteSBXaGl0ZSA8andoaXRlQGNvZGV3ZWF2ZXJzLmNvbT4KCVdoZW4gdGVzdGluZyB0aGUgV0FWRV9NQVBQRVIgZGV2aWNlLCBpdCBzZWVtcyBpbmFwcHJvcHJpYXRlICh0byBtZSkgdG8KCWRlbWFuZCBXQVZFX0ZPUk1BVF9ESVJFQ1Q7IHRoaXMgZml4ZXMgYW5vdGhlciBzbGV3IG9mIHRlc3RzLgoKCSogZGxscy93aW5tbS93YXZlbWFwL3dhdmVtYXAuYzogSmVyZW15IFdoaXRlIDxqd2hpdGVAY29kZXdlYXZlcnMuY29tPgoJV2hlbiB3ZSBhcmUgY29udmVydGluZyBmcm9tIG9uZSBzYW1wbGUgcmF0ZSB0byBhbm90aGVyLCB3ZSBkbyBoYXZlIHRvCglhZGp1c3Qgd2hlbiBjYWxjdWxhdGluZyBUSU1FX1NBTVBMRVMuCgoJKiBkbGxzL3gxMWRydi94cmVuZGVyLmM6IEphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglUYWtlIGludG8gYWNjb3VudCBhZGRpdGlvbmFsIHJlcXVlc3RlZCBzcGFjaW5nIG9uIGJyZWFrIGNoYXJhY3RlcnMuCgoJKiBkbGxzL3dpbmVkM2QvZGlyZWN0eC5jOiBKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJRW5hYmxlIHBhcnNpbmcgb2YgdmVuZG9yIHN0cmluZ3Mgbm90IG1hdGNoaW5nIHRoZSBleHBlY3RlZCB0ZW1wbGF0ZS4KCgkqIGRsbHMvY29tY3RsMzIvaGVhZGVyLmM6IE1heGltZSBCZWxsZW5n6SA8bWF4aW1lLmJlbGxlbmdlQGxhcG9zdGUubmV0PgoJQ29ycmVjdGx5IGRpc3BsYXlzIHRoZSB0ZXh0IHdpdGggZWxsaXBzaXMgd2hlbiB0aGVyZSBpcyBub3QgZW5vdWdoCglyb29tIGluIGEgaGVhZGVyIGl0ZW0gYW5kIGFuIGltYWdlIGZyb20gYW4gaW1hZ2VsaXN0IGlzIGRpc3BsYXllZCBvbgoJdGhlIHJpZ2h0IG9mIHRoZSB0ZXh0LgoKCSogcHJvZ3JhbXMvd2luZW1pbmUvUGwucmM6IEphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglUcmFuc2xhdGlvbiB1cGRhdGUuCgoJKiBkbGxzL21zaS9tc2kucmMsIGRsbHMvbXNpL21zaV9Fcy5yYzoKCUpvc+kgTWFudWVsIEZlcnJlciBPcnRpeiA8am1mbzE5ODJAeWFob28uZXM+CglBZGRlZCBNU0kgU3BhbmlzaCByZXNvdXJjZXMuCgoyMDA1LTAyLTIyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2VydmVyL3JlZ2lvbi5jLCBzZXJ2ZXIvdXNlci5oOgoJUmVtb3ZlZCBubyBsb25nZXIgdXNlZCBjcmVhdGVfcmVnaW9uIGZ1bmN0aW9uLCBhbmQgZGlyZWN0bHkgZXhwb3J0CgljcmVhdGVfZW1wdHlfcmVnaW9uIGluc3RlYWQuCgoJKiBkbGxzL3VzZXIvdGVzdHMvd2luLmMsIGRsbHMveDExZHJ2L3dpbmRvdy5jLCBkbGxzL3gxMWRydi93aW5wb3MuYywKCSAgc2VydmVyL3dpbmRvdy5jOgoJQWxsb3cgdGhlIGNsaWVudCByZWN0YW5nbGUgdG8gYmUgb2YgYXJiaXRyYXJ5IHNpemUgYW5kIGRpbWVuc2lvbnMsCglyZWdhcmRsZXNzIG9mIHRoZSB3aW5kb3cgcmVjdGFuZ2xlLgoKCSogZGxscy9nZGkvZm9udC5jOiBUQU5BQkUgSGlyb3NoaSA8aGlyb2t1bl9kYXlvbW9uQGluZm9zZWVrLnRvPgoJQWRkZWQgTXVsdGlieXRlIGNoYXJhY3RlciBzZXQgc3VwcG9ydCBpbiBHZXRHbHlwaE91dGxpbmVBLgoKCSogZGxscy9nZGkvZGliLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglEb24ndCBob2xkIHRoZSBHREkgbG9jayB3aGVuIGNhbGxpbmcgRENfR2V0RENVcGRhdGUuCgoJKiBkbGxzL2NyeXB0ZGxsL01ha2VmaWxlLmluLCBkbGxzL2NyeXB0ZGxsL2NyeXB0ZGxsLnNwZWM6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCUZvcndhcmQgTUQ1e0ZpbmFsLEluaXQsVXBkYXRlfSB0byBhZHZhcGkzMi4KCgkqIGRsbHMvbnRkbGwvaGFuZGxldGFibGUuYywgZGxscy9udGRsbC9oZWFwLmMsIGRsbHMvbnRkbGwvbG9hZGVyLmMsCgkgIGRsbHMvbnRkbGwvcmVsYXkuYywgZGxscy9udGRsbC90aHJlYWQuYywgZGxscy9udGRsbC92aXJ0dWFsLmM6CglJdmFuIExlbyBQdW90aSA8aXZhbmxlb0BnbWFpbC5jb20+CglSZXBsYWNlIEdldEN1cnJlbnRQcm9jZXNzKCkgd2l0aCBOdEN1cnJlbnRQcm9jZXNzKCkgaW4gbnRkbGwuCgoJKiBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW5udC5oOgoJSXZhbiBMZW8gUHVvdGkgPGl2YW5sZW9AZ21haWwuY29tPgoJQWRkZWQgYSBjb3VwbGUgb2YgZGVmaW5lcy4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglNYWtlIHN1cmUgc3RyaW5ncyBhcmUgbnVsbCB0ZXJtaW5hdGVkLgoKCSogcHJvZ3JhbXMvd2luZW1lbnVidWlsZGVyL3dpbmVtZW51YnVpbGRlci5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJV2hlbiBydW5uaW5nIGEgc2Vjb25kIHRpbWUsIGRvbid0IGZhaWwgaWYgd2UgY2FuJ3QgZXh0cmFjdCBhbiBpY29uLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOiBNYXJ0aWpuIFZlcm5vb2lqIDx5dXhkd2E3MDJAc25lYWtlbWFpbC5jb20+CglTY3JvbGwgaW5zdGVhZCBvZiByZXBhaW50aW5nIHdoZW4gZXhwYW5kaW5nL2NvbGxhcHNpbmcgdHJlZXMuCglEb24ndCByZXBhaW50IG9uIGhvdmVyIGlmICdob3QgdHJhY2tpbmcnIGlzbid0IG9uLgoKCSogZGxscy9pdHNzL2l0c3MuYzogSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCUFkZGVkIGltcGxlbWVudGF0aW9uIG9mIExvY2tTZXJ2ZXIuCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCVRoZSB0eXBlbGliIGNhY2hlIHNob3VsZCB0YWtlIHRoZSB0eXBlbGliIHJlc291cmNlIGluZGV4IGludG8KCWFjY291bnQuCgoJKiBkbGxzL3VzZXIvdGVzdHMvbXNnLmM6IENvc21ldGljIGZpeGVzLgoKCSogZGxscy9rZXJuZWwvc3RyaW5nLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsIGluY2x1ZGUvd2luYmFzZS5oOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJTWFrZSBsc3RyKiBmdW5jdGlvbnMgaW5saW5lIGluc2lkZSBXaW5lLgoKCSogZGxscy9zaGVsbDMyL3BpZGwuaCwgZGxscy9zaGVsbDMyL3NoZmxkcl9mcy5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJLSBoYW5kbGUgSUZpbGVTeXN0ZW1CaW5kRGF0YSBpbiBJU2hlbGxGb2xkZXI6OlBhcnNlRGlzcGxheU5hbWUKCS0gY29udmVydCBJU2hlbGxGb2xkZXI6OlBhcnNlRGlzcGxheU5hbWUgdG8gdXNlIFVuaWNvZGUKCgkqIGRsbHMvbXNpL2FjdGlvbi5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJVXBkYXRlIHRoZSBpbnN0YWxsZWQgc3RhdGUgZm9yIGNvbXBvbmVudHMgZHVyaW5nIENvc3RGaW5hbGl6ZS4gTGF5aW5nCglncm91bmR3b3JrIHRvIGJlIGFibGUgdG8gc3RhcnQgcHJvY2Vzc2luZyB1bmluc3RhbGwgbG9naWMgYXMgd2VsbC4KCgkqIGRsbHMvdXNlci90ZXN0cy93aW4uYywgd2luZG93cy9ub25jbGllbnQuYzoKCVJlaW4gS2xhemVzIDx3aWpuQHdhbmFkb28ubmw+CglEZWZXaW5kb3dQcm9jJ3MgV01fTkNDQUxDIGhhbmRsZXIgbXVzdCBub3Qgc3VidHJhY3Qgc3BhY2UgZm9yCglzY3JvbGxiYXJzIGlmIHRoZXJlIGlzIG5vdCBlbm91Z2ggc3BhY2UgZm9yIGl0IGFueXdheS4gV2l0aCB0ZXN0cyB0bwoJY29uZmlybSB0aGUgYmVoYXZpb3IuCgoJKiBkbGxzL3VzZXIvdGVzdHMvbXNnLmM6IFN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJTWFrZSB1c2VyMzJfY3Jvc3N0ZXN0LmV4ZSBsb2FkYWJsZSBvbiBOVCAzLjUxLgoKCSogZGxscy91c2VyL3Rlc3RzL21zZy5jLCB3aW5kb3dzL21lc3NhZ2UuYzoKCURpc3BhdGNoTWVzc2FnZSBuZWVkcyB0byByZXBhaW50IHRoZSBub24tY2xpZW50IGFyZWEgaWYgdGhlIFdNX1BBSU5UCgloYW5kbGVyIGRpZG4ndCBkbyBpdC4KCgkqIGRsbHMvdXNlci90ZXN0cy9jbGFzcy5jLCB3aW5kb3dzL2NsYXNzLmM6CglKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJTWFrZSBSZWdpc3RlckNsYXNzRXhBIGNoZWNrIHRoYXQgcmVzZXJ2ZWQgYnl0ZXMgaXMgYSB2YWxpZCB2YWx1ZS4KCVRlc3RzIHRvIGNvbmZpcm0gdGhpcyBiZWhhdmlvdXIuCgoJKiBkbGxzL3VzZXIvc3lzcGFyYW1zLmM6IEp1c3RpbiBDaGV2cmllciA8amNoZXZyaWVyQG5leGljb20ubmV0PgoJUG9pbnQgS0VZQk9BUkRQUkVGIGFuZCBTQ1JFRU5SRUFERVIgdG8gcmVnaXN0cnkga2V5cyBhbmQgdmFsdWVzIHRoYXQKCW1hdGNoIG5hdGl2ZS4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlcGljdHVyZS5jLCBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYywKCSAgZGxscy9vbGVhdXQzMi91c3JtYXJzaGFsLmMsIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCVVzZSB2YXJpYW50IG1hY3JvcyBpbnN0ZWFkIG9mIGFjY2Vzc2luZyB0aGUgdW5pb24gZGlyZWN0bHkuCgoJKiBkbGxzL21zaS9hY3Rpb24uYzogU3RldmVuIEVkd2FyZHMgPHN0ZXZlbkBjb2Rld2VhdmVycy5jb20+CglDb3JyZWN0IHR5cG8uCgoJKiBwcm9ncmFtcy93aW5lZGJnL2RiZy55LCB0b29scy93aW5lZHVtcC9lbWYuYywgdG9vbHMvd2luZWR1bXAvbG5rLmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJVXNlIGNvbmZpZy5oICYgSEFWRV8gd2hlcmUgbmVlZGVkLCAtVyBmaXhlcy4KCgkqIGRsbHMvbWFwaTMyL3Byb3AuYzogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUZpeCByYWNlIGluIElNQVBJUHJvcF9SZWxlYXNlKCksIC1XIGZpeGVzLgoKCSogZGxscy9zaGVsbDMyL3BpZGwuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQ2xlYW51cCwgY3JlYXRlIHVuaWNvZGUgdmVyc2lvbnMgb2YgX0lMQ3JlYXRlRnJvbVBhdGgsCglfSUxDcmVhdGVHdWlkRnJvbVN0ciwgYW5kIF9JTENyZWF0ZUZyb21GaW5kRGF0YS4KCgkqIGRsbHMvcXVhcnR6L2FjbXdyYXBwZXIuYzogQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJRml4ZWQgQUNNIFdyYXBwZXIuCgoJKiBkbGxzL250ZGxsL3RpbWUuYzoKCURhcnJ5bCBEaXhvbiA8ZXNyZXZlcl9vdHVhQHB5dGhvbmhhY2tlci5pcy1hLWdlZWsubmV0PgoJQWRkZWQgc3VwcG9ydCBmb3IgTlpEVCAoTmV3IFplYWxhbmQgRGF5bGlnaHQgVGltZSkgdG8gVFpfSU5GTy4KCgkqIGRsbHMvdW5pY293cy9NYWtlZmlsZS5pbiwgZGxscy91bmljb3dzL21haW4uYywKCSAgZGxscy91bmljb3dzL3VuaWNvd3Muc3BlYzoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJQWRkIElzRGVzdGluYXRpb25SZWFjaGFibGVXLgoKMjAwNS0wMi0yMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGRsbHMva2VybmVsL3RocmVhZC5jOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglJbXBsZW1lbnRhdGlvbiBzdHViIGZvciBRdWV1ZVVzZXJXb3JrSXRlbS4KCgkqIGRsbHMvb2xlMzIvTWFrZWZpbGUuaW4sIGRsbHMvb2xlMzIvc3RnX3Byb3AuYywKCSAgZGxscy9vbGUzMi9zdG9yYWdlMzIuYywgZGxscy9vbGUzMi9zdG9yYWdlMzIuaCwKCSAgZGxscy9vbGUzMi90ZXN0cy9zdG9yYWdlMzIuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCBhbmQgdGVzdCBJUHJvcGVydHlTZXRTdG9yYWdlLgoKCSogZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZGxscy9rZXJuZWwvdG9vbGhlbHAuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglJbXBsZW1lbnQgJ1cnIHZhcmlhbnRzIG9mIFByb2Nlc3MzMkZpcnN0IC8gTmV4dCBBUElzCgoJKiBkbGxzL2dkaS9mb250LmMsIGRsbHMvZ2RpL2dkaTE2LmM6CglBbGV4IFZpbGxhY+1zIExhc3NvIDxhX3ZpbGxhY2lzQHBhbG9zYW50by5jb20+CglJbXBsZW1lbnRlZCBHZXRHbHlwaE91dGxpbmUxNi4KCgkqIGRsbHMvdXNlci9zeXNwYXJhbXMuYywgZGxscy91c2VyL3Rlc3RzL3N5c3BhcmFtcy5jOgoJSnVzdGluIENoZXZyaWVyIDxqY2hldnJpZXJAbmV4aWNvbS5uZXQ+CgktIEltcGxlbWVudCBTUElfe0dFVCxTRVR9UE9XRVJPRkZBQ1RJVkUgYW5kIFNQSV9TRVRMT1dQT1dFUkFDVElWRS4KCS0gQ29ycmVjdGVkIFNQSV9HRVRMT1dQT1dFUkFDVElWRSB0byB1c2UgYW4gaW5kZXggKGluc3RlYWQgb2YgaXRzIFNQSQoJICB2YWx1ZSkgdG8gYXZvaWQgYW4gb3V0IG9mIGJvdW5kcyBjb25kaXRpb24uCgktIENyZWF0ZWQgdW5pdCB0ZXN0cyBmb3IgU1BJX3tHRVQsU0VUfVBPV0VST0ZGQUNUSVZFIGFuZAoJICBTUElfe0dFVCxTRVQpU0VUTE9XUE9XRVJBQ1RJVkUuCgoJKiBpbmNsdWRlL3dpbnVzZXIuaDogVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJQWRkIGEgZGVmaW5pdGlvbiBmb3IgT3BlbklucHV0RGVza3RvcCgpLgoJQWRkIGNvbnN0YW50cyBmb3IgUEJUX0FQTSogcGFyYW1ldGVycy4KCgkqIGRsbHMvdXNlci9lZGl0LmM6IExhdXJpIFR1bG1pbiA8bGF1cmlfQHV0LmVlPgoJSG9yaXpvbnRhbCBzY3JvbGxiYXIgaXMgaGlkZGVuIHdoZW4gZWRpdCBjb250cm9sIGlzIGVtcHRpZWQuCgoJKiBwcm9ncmFtcy93aW5lbWluZS9QbC5yYzogTWFyY2VsbyBEdWFydGUgPHdpbmUtZGV2ZWxAYm9sLmNvbS5icj4KCVN5bmMgUG9saXNoIHJlc291cmNlcy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCU1heGltZSBCZWxsZW5n6SA8bWF4aW1lLmJlbGxlbmdlQGxhcG9zdGUubmV0PgoJVGFrZSBpbnRvIGFjY291bnQgdGhlIG5ldyBzaXplIG9mIGEgY29sdW1uIHdoZW4gdGhlIGhlYWRlciBzaXplCgljaGFuZ2UuCgoJKiBkbGxzL3F1YXJ0ei9hY213cmFwcGVyLmMsIGRsbHMvcXVhcnR6L2F2aWRlYy5jLAoJICBkbGxzL3F1YXJ0ei90cmFuc2Zvcm0uYywgZGxscy9xdWFydHovdHJhbnNmb3JtLmg6CglDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglJbXByb3ZlZCBBVklEZWMuCglBZGRlZCAyIG5ldyBjYWxsYmFjayBmdW5jdGlvbnMgdG8gdGhlIHRyYW5zZm9ybSB0ZW1wbGF0ZSBhbmQgbW92ZWQgYWxsCglvZiB0aGVtIGludG8gYSBmdW5jcyB0YWJsZS4KCgkqIGRsbHMvYWR2YXBpMzIvcmVnaXN0cnkuYywgZGxscy9hZHZhcGkzMi90ZXN0cy9yZWdpc3RyeS5jOgoJSmFtZXMgSGF3a2lucyA8dHJ1aWtlbkBnbWFpbC5jb20+CglBZGQgUmVnT3BlbktleSwgUmVnQ2xvc2VLZXkgdGVzdHMuCgoJKiBkbGxzL21wci9tcHJfRGUucmMsIGRsbHMvbXByL21wcl9Fbi5yYywgZGxscy9tcHIvbXByX0ZyLnJjLAoJICBkbGxzL21wci9tcHJfUHQucmMsIGRsbHMvc2hkb2N2dy9EZS5yYywgZGxscy9zaGRvY3Z3L0VuLnJjLAoJICBkbGxzL3NoZG9jdncvRnIucmMsIGRsbHMvc2hkb2N2dy9QdC5yYywKCSAgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfU2kucmMsIHByb2dyYW1zL3dpbmVjZmcvRW4ucmMsCgkgIHByb2dyYW1zL3dpbmVjZmcvTmwucmM6CglNYXJjZWxvIER1YXJ0ZSA8d2luZS1kZXZlbEBib2wuY29tLmJyPgoJVXNlICJNUyBTaGVsbCBEbGciIGV2ZXJ5d2hlcmUgZXhjZXB0IGZvciBKYXBhbmVzZS4KCgkqIGRsbHMvbXNjbXMvTWFrZWZpbGUuaW4sIGRsbHMvbXNjbXMvaGFuZGxlLmMsIGRsbHMvbXNjbXMvbGNtc19hcGkuaCwKCSAgZGxscy9tc2Ntcy9tc2Ntc19tYWluLmMsIGRsbHMvbXNjbXMvbXNjbXNfcHJpdi5oLAoJICBkbGxzL21zY21zL3Byb2ZpbGUuYywgZGxscy9tc2Ntcy9zdHViLmMsIGRsbHMvbXNjbXMvdHJhbnNmb3JtLmMsCgkgIGluY2x1ZGUvaWNtLmg6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCS0gQWRkIHN1cHBvcnQgZm9yIGNvbG9yIHRyYW5zZm9ybSBoYW5kbGVzLgoJLSBJbXBsZW1lbnQgQ3JlYXRlQ29sb3JUcmFuc2Zvcm17QSxXfSwgQ3JlYXRlTXVsdGlQcm9maWxlVHJhbnNmb3JtLAoJICBEZWxldGVDb2xvclRyYW5zZm9ybS4KCS0gRG9uJ3QgZGVwZW5kIG9uIGxjbXMgZm9yIHRoZSBpbXBsZW1lbnRhdGlvbiBvZgoJICBJc0NvbG9yUHJvZmlsZVRhZ1ByZXNlbnQuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGxmaWxlb3AuYzoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJLSBSZXZlcnQgd3JvbmcgLW5vbmFtZSBtYXJrdXAgZm9yIERyYWcqLCBEb0Vudmlyb25tZW50U3Vic3QgYW5kCgkgIFNIR2V0TmV3TGlua0luZm97QSxXfS4KCS0gQWxzbyBtYXJrIHN0dWIgZXhwb3J0cyAtbm9uYW1lIHdoZW4gdGhleSBhcmUgZXhwb3J0ZWQgYnkgb3JkaW5hbAoJICBvbmx5IG9uIHdpbjk4LzJrLgoJLSBJbXBsZW1lbnRhdGlvbiBsZXZlbCBzdHVicyBmb3IgU2hlQ2hhbmdlRGlyQSwgU2hlR2V0RGlyQSwKCSAgU0hIZWxwU2hvcnRjdXRzX1J1bkRMTHtBLFd9LgoJLSBOZXcgc3BlYyBmaWxlIHN0dWJzIGZvciBDb250cm9sX1J1bkRMTEFzVXNlclcsCgkgIEZpeHVwT3B0aW9uYWxDb21wb25lbnRzLCBPQ0luc3RhbGwsIFNIQ2hhbmdlTm90aWZ5U3VzcGVuZFJlc3VtZSwKCSAgU0hDcmVhdGVQcm9jZXNzQXNVc2VyVywgU0hFeHRyYWN0SWNvbnNXLAoJICBTSEludm9rZVByaW50ZXJDb21tYW5ke0EsV30sIFNISXNGaWxlQXZhaWxhYmxlT2ZmbGluZSwKCSAgU0hMb2FkTm9ubG9hZGVkSWNvbk92ZXJsYXlJZGVudGlmaWVycywgU0hQYXRoUHJlcGFyZUZvcldyaXRle0EsV30sCgkgIFNoZWxsRXhlY19SdW5ETEx7LEEsV30sIFNIR2V0SWNvbk92ZXJsYXlJbmRleHtBLFd9LgoKCSogZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3NoZmxkcl9kZXNrdG9wLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglSZW1vdmUgdGFicyBhbmQgbWFrZSBmb3JtYXR0aW5nIGNvbnNpc3RlbnQuCgoJKiBkbGxzL29sZWF1dDMyL29sZWF1dDMyLnNwZWMsIGRsbHMvb2xlYXV0MzIvb2xlcGljdHVyZS5jLAoJICBpbmNsdWRlL29sZWN0bC5oOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJQWRkIGEgc3R1YiBmb3IgT2xlTG9hZFBpY3R1cmVQYXRoKCkuCgoJKiBpbmNsdWRlL3dpbnVzZXIuaDogVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJQWRkIExXQV8gY29uc3RhbnRzLCB1c2VkIGluIHtTL0d9TGF5ZXJlZFdpbmRvd0F0dHJpYnV0ZXMoKS4KCgkqIGRsbHMvb2xlMzIvbWFyc2hhbC5jOiBNaWtlIEhlYXJuIDxtaEBjb2Rld2VhdmVycy5jb20+CglBdm9pZCBpbmZpbml0ZSBsb29wIHdoZW4gZG9pbmcgYSB0eXBlbGliIG1hcnNoYWxsZWQKCUlVbmtub3duOjpRdWVyeUludGVyZmFjZSBieSBvbmx5IGRvaW5nIGFuIGV4dHJhIFFJIGlmIHJlcXVlc3RlZCBJSUQgaXMKCW5vdCBlcXVhbCB0byBtYXJzaGFsbGVkIElJRC4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jOiBNaWtlIEhlYXJuIDxtaEBjb2Rld2VhdmVycy5jb20+CglBbGxvdyBsb2FkaW5nIG9mIGJ1aWx0aW4gdHlwZWxpYnMuCgoJKiBkbGxzL2NvbWN0bDMyL2hlYWRlci5jOiBNYXhpbWUgQmVsbGVuZ+kgPG1heGltZS5iZWxsZW5nZUBsYXBvc3RlLm5ldD4KCUZpeCBTZXRJdGVtIHNvIHRoYXQgaXRlbXMgZG9uJ3QgZ2V0IHdyb25nbHkgcmUtb3JkZXJlZC4KCgkqIGRsbHMvd2luc3Bvb2wvaW5mby5jLCBkbGxzL3dpbnNwb29sL3dpbnNwb29sLmRydi5zcGVjLAoJICBpbmNsdWRlL3dpbnNwb29sLmg6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCVN0dWIgaW1wbGVtZW50YXRpb25zIGZvciBBYm9ydFByaW50ZXIsIEFkZFBvcnRFeHtBLFd9LAoJQWRkUHJpbnRlckNvbm5lY3Rpb257QSxXfSwgQ29ubmVjdFRvUHJpbnRlckRsZywKCURlbGV0ZVByaW50ZXJDb25uZWN0aW9ue0EsV30sIEVudW1Gb3Jtc3tBLFd9LCBFbnVtUHJpbnRlckRhdGF7QSxXXSwKCUV4dERldmljZU1vZGUsIEZpbmR7Q2xvc2UsRmlyc3QsTmV4dH1QcmludGVyQ2hhbmdlTm90aWZpY2F0aW9uLAoJRnJlZVByaW50ZXJOb3RpZnlJbmZvLCBTY2hlZHVsZUpvYi4KCgkqIGRsbHMvdXNlci9tZW51LmMsIGRsbHMvdXNlci90ZXN0cy9tc2cuYywgZGxscy91c2VyL3Rlc3RzL3Jlc291cmNlLnJjOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVRha2UgU2hpZnQga2V5IHN0YXRlIGludG8gYWNjb3VudCB3aGlsZSBwcm9jZXNzaW5nIGFuIGFjY2VsZXJhdG9yLgoJQWRkIGEgY291cGxlIG9mIHRlc3QgY2FzZXMuCgoJKiBwcm9ncmFtcy90YXNrbWdyL0VuLnJjLCBwcm9ncmFtcy90YXNrbWdyL3Rhc2ttZ3IucmM6CglNYXJjZWxvIER1YXJ0ZSA8d2luZS1kZXZlbEBib2wuY29tLmJyPgoJQ2xlYW51cCB0YXNrbWdyIHJlc291cmNlIGZpbGUgKGdldCByaWQgb2YgQysrIHN0eWxlIGNvbWVudHMsIHVzZSAiTVMKCVNoZWxsIERsZyIgZm9yIGRpYWxvZ3MsIGV0YykuCglQcmVwYXJhdGlvbiBmb3IgdHJhbnNsYXRvcnMgKG1vdmUgZW5nbGlzaCByZXNvdXJjZXMgdG8gRW4ucmMpLgoKCSogZGxscy91c2VyL2xpc3Rib3guYzogTWF4aW1lIEJlbGxlbmfpIDxtYXhpbWUuYmVsbGVuZ2VAbGFwb3N0ZS5uZXQ+CglSZXZlcnNlIHRoZSBvcmRlciBmb3IgZGVsZXRpbmcgdGhlIGl0ZW1zIGluIHJlc2V0Y29udGVudCB0byBjb3JyZWN0bHkKCWVtcHR5IGEgY29tYm9ib3hleC4KCgkqIGluY2x1ZGUvd3R5cGVzLmlkbDogVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJQWRkZWQgTFBEV09SRCBkZWZpbml0aW9uLgoKCSogdG9vbHMvd2luZW1ha2VyOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCU9ubHkgJ2ZpeCcgdGhlIG5hbWVzIG9mIHNvdXJjZSBmaWxlcyBhbmQgZGlyZWN0b3JpZXMgKHRoaXMgd2F5Cglkb2N1bWVudGF0aW9uIGZpbGVzIGFyZSB1bmhhcm1lZCkuCglCZXR0ZXIgaGFuZGxlIE1ha2VmaWxlcyBnZW5lcmF0ZWQgYnkgV2luZW1ha2VyLiBJbiBwYXJ0aWN1bGFyLCBkb24ndAoJcmVuYW1lIHRoZW0gdG8gbWFrZWZpbGUud2luIQoKCSogcHJvZ3JhbXMvbXNpZXhlYy9tc2lleGVjLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglUaGUgdmFsdWVzIGFyZSBxdW90ZWQgYW5kIHNwYWNlcyBhZGRlZCwgc28gaGF2aW5nIHNwYWNlcyBpbiB0aGUKCXByb3BlcnRpZXMgcmVzdWx0cyBpbiBzcGFjZXMgaW4gdGhlIHZhbHVlcyB3aGljaCBpcyBpbmNvcnJlY3QuCgoJKiBpbmNsdWRlL3JpY2hvbGUuaWRsOiBWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglBZGRlZCBJUmljaEVkaXRPbGVDYWxsYmFjay4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaDogVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJQ29ycmVjdCB0aGUgbnVtYmVyIG9mIGFyZ3Mgb2YgU05ETVNHQSBpbiBMaXN0Vmlld19HZXRTdWJJdGVtUmVjdC4KCgkqIGRsbHMvbnRkbGwvbnQuYzogSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJRml4IE50UXVlcnlQZXJmb3JtYW5jZUNvdW50ZXIgcGFyYW1ldGVyIGNoZWNraW5nLiBTcG90dGVkIGJ5IEFsZXgKCVdvb2RzLgoKMjAwNS0wMi0xOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvb2xlMzIvZmlsZW1vbmlrZXIuYywgZGxscy9vbGUzMi9pdGVtbW9uaWtlci5jOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBCZXR0ZXIgdHJhY2luZy4KCS0gU21hbGwgY2xlYW51cCBvZiBjcmVhdGlvbiBmdW5jdGlvbnMuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjOiBIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCU1hcmsgZXhwb3J0cyAtbm9uYW1lIHdoZW4gdGhleSBhcmUgZXhwb3J0ZWQgYnkgb3JkaW5hbCBvbmx5IG9uCgl3aW45OC8yay4KCgkqIE1ha2VmaWxlLmluOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJZGxscy9fX2luc3RhbGwtbGliX18gYW5kIHByb2dyYW1zL19faW5zdGFsbF9fIHNob3VsZCBub3QgZm9yY2UgdGhlCglpbnN0YWxsYXRpb24gb2YgdGhlIFdpbmUgaGVhZGVycyBhcyB0aGlzIGlzIGNvbnRyYXJ5IHRvIHRoZSBwdXJwb3NlIG9mCglpbnN0YWxsLWxpYi4KCgkqIGRsbHMvb2xlMzIvY29tcG9ial9wcml2YXRlLmgsIGRsbHMvb2xlMzIvbWFyc2hhbC5jLAoJICBkbGxzL29sZTMyL3N0dWJtYW5hZ2VyLmMsIGRsbHMvb2xlMzIvdGVzdHMvbWFyc2hhbC5jOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBNb3ZlIG1hcnNoYWxpbmcgc3RhdGUgbWFjaGluZSBpbnRvIHN0dWIgbWFuYWdlciBmcm9tIGlmc3R1Yi4KCS0gQWRkIGFkZGl0aW9uYWwgbmVlZGVkIHN0YXRlcyBmb3IgdGFibGUtd2VhayBtYXJzaGFsaW5nLCBhcyBzaG93biBieQoJICB0ZXN0cy4KCS0gUHJvdGVjdCBleHRlcm5hbCByZWZlcmVuY2UgY291bnQgZnJvbSB1bmRlcmZsb3dzL292ZXJmbG93cy4KCgkqIHNlcnZlci9xdWV1ZS5jOiBLcnp5c3p0b2YgRm9sdG1hbiA8a2ZvbHRtYW5AcG9ydGFsLm9uZXQucGw+CglFbnN1cmUgdGhhdCBjYXJldCBwb3NpdGlvbiBpcyBub3QgcmVzZXQgdG8gKDAsIDApIHdoZW4gQ3JlYXRlQ2FyZXQgaXMKCWNhbGxlZCBzZWNvbmQgdGltZSB3aXRoIHRoZSBzYW1lIHdpbmRvdy4KCgkqIGRsbHMvdXNlci90ZXN0cy9tc2cuYywgd2luZG93cy93aW4uYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CgktIEFsd2F5cyB1bmxpbmsgY2hpbGRyZW4gYmVmb3JlIHNlbmRpbmcgV01fTkNERVNUUk9ZIG1lc3NhZ2UuCgktIEZpeCBvcmRlciBvZiBXTV9ERVNUUk9ZIG1lc3NhZ2VzIGZvciB0aGUgY2hpbGRyZW4ncyByZWN1cnNpb24uCgktIERlc3Ryb3lXaW5kb3cgc2hvdWxkIGhpZGUgb25seSB2aXNpYmxlIHdpbmRvd3MuCgktIEFkZCBhIHRlc3QgY2FzZSBmb3IgdGhlIGFib3ZlIGZpeGVzLgoKCSogZGxscy94MTFkcnYvZXZlbnQuYzogVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hAY29kZXdlYXZlcnMuY29tPgoJRHVwbGljYXRlIFdpbmRvd3MgYmVoYXZpb3VyIGFuZCB1c2UgU2VuZE1lc3NhZ2UgZm9yIHRoZSBTQ19DTE9TRQoJc3lzdGVtIGNvbW1hbmQgaW5zdGVhZCBvZiBQb3N0TWVzc2FnZS4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJRml4ZWQgcHJvYmxlbXMgd2l0aCBteSBjb2RlIGZvciBmaW5kaW5nIHRoZSBQYWNrYWdlQ29kZS4KCgkqIHRvb2xzL3dpbmVkdW1wL2xuay5jOiBHZXJhbGQgUGZlaWZlciA8Z2VyYWxkQHBmZWlmZXIuY29tPgoJVXNlIHN0ZGxpYi5oIGluc3RlYWQgb2Ygbm9uLXN0YW5kYXJkIG1hbGxvYy5oLgoKCSogaW5jbHVkZS9iYXNldHNkLmgsIGluY2x1ZGUvd2lubnQuaDogSmFtZXMgSGF3a2lucyA8dHJ1aWtlbkBnbWFpbC5jb20+CglDb25kaXRpb25hbGx5IGFkZCBERUNMU1BFQ19BTElHTig4KSB0byB3aW5lJ3MgNjQtYml0IHR5cGVzIGFuZCBsZWF2ZQoJdGhlIG1vZGlmaWVyIG9mZiB3aGVuIGNvbXBpbGluZyB3aXRoIG1zdmMuCgoJKiBkbGxzL3dpbm1tL21jaS5jOiBDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglGaXhlZCBvZmZzZXRzIGNhbGN1bGF0aW9ucy4KCgkqIHRvb2xzL3dpbmVkdW1wL2xuay5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglEdW1wIG91dCBtb3JlIGRldGFpbHMgb24gdGhlIHRhcmdldCBvZiBhIGxpbmsuCgoJKiBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL29kYmNpbnN0Lmg6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBvZGJjaW5zdC5oLgoKCSogcHJvZ3JhbXMvd2luZW1lbnVidWlsZGVyL3dpbmVtZW51YnVpbGRlci5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJU21hbGwgaW5kZW50YXRpb24gZml4ZXMuCgoJKiBkbGxzL2Rzb3VuZC90ZXN0cy9jYXB0dXJlLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglGaXggY2FwdHVyZSB0ZXN0IHRvIHBhc3Mgb24gd2luZG93cyA5OCB3aGVuIG5vIHNvdW5kIGNhcmQgcHJlc2VudCBvcgoJZGV2aWNlIGFscmVhZHkgaW4gdXNlLgoKCSogZGxscy93aW5tbS90ZXN0cy90aW1lci5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJRml4IHRpbWVyIHRlc3RzIHRvIHBhc3Mgb24gd2luZG93cyA5OC4KCgkqIGRsbHMvZHNvdW5kL3Rlc3RzL2Rzb3VuZC5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJRml4IGJsb2NrIGFsaWduIHRlc3QuCgoJKiBkbGxzL29sZWF1dDMyL29sZWZvbnQuYzoKCUFsZXggVmlsbGFj7XMgTGFzc28gPGFfdmlsbGFjaXNAcGFsb3NhbnRvLmNvbT4KCUltcGxlbWVudCBPbGVGb250SW1wbF9RdWVyeVRleHRNZXRyaWNzLgoKCSogZGxscy9tc3ZjcnQvZGlyLmM6IEd1bm5hciBEYWxzbmVzIDxoYXJkb25Ab25saW5lLm5vPgoJV2hlbiBnZXR0aW5nIGN1cnJlbnQgZGlyZWN0b3J5IG9uIGEgZHJpdmUgZGlmZmVyZW50IGZyb20gdGhlIHdvcmtpbmcKCWRyaXZlLCBfZ2V0ZGN3ZCBpbmNvcnJlY3RseSBwYXNzZWQgIlg6XCIgKFggPSBhbnkgZHJpdmUpIGFzIHBhdGggdG8KCUdldEZ1bGxQYXRoTmFtZS4gIlg6IiAod2l0aG91dCB0aGUgYmFja3NsYXNoKSBpcyB0aGUgY29ycmVjdCB0aGluZyB0bwoJdXNlLgoKMjAwNS0wMi0xNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvdXNlci9zY3JvbGwuYzogVml0YWx5IExpcGF0b3YgPGxhdkBldGVyc29mdC5ydT4KCVJlbmFtZSBTQ1JPTExfR2V0U2Nyb2xsQmFySW5mbyB0byBTQ1JPTExfR2V0SW50ZXJuYWxJbmZvIGFuZCBtYWtlCglhbGxvY2F0aW9uIG9mIGEgbmV3IGluZm8gc3RydWN0dXJlIG9wdGlvbmFsLgoJQWRkIHNvbWUgZGVzY3JpcHRpb25zLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsbGluay5jLCBwcm9ncmFtcy93aW5lbWVudWJ1aWxkZXIvd2luZW1lbnVidWlsZGVyLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQ29udmVydCB3aW5lbWVudWJ1aWxkZXIgdG8gdW5pY29kZS4KCgkqIHRvb2xzL3dpbmVkdW1wL01ha2VmaWxlLmluLCB0b29scy93aW5lZHVtcC9sbmsuYywKCSAgdG9vbHMvd2luZWR1bXAvbWFpbi5jLCB0b29scy93aW5lZHVtcC93aW5lZHVtcC5oOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWRkIGR1bXBpbmcgb2YgbG5rIGZpbGVzLgoKCSogZGxscy9tc3ZpZGVvL21zdmlkZW9fbWFpbi5jOiBEYXZpZCBTbWl0aCA8ZHNtaXRoQGFsZ29uZXQuc2U+CglGaXggZm9yIElDSW5mbygpIGluIG1zdmlkZW8gd2hlbiBpdCBpcyB1c2VkIHRvIGFzayBmb3IgYSBjb2RlYyBieQoJaW5kZXguCgoJKiBkbGxzL2FkdmFwaTMyL3Rlc3RzL2NyeXB0LmM6IEpha29iIEVyaWtzc29uIDxqYWtvdkB2bWxpbnV4Lm9yZz4KCUFwcGFyZW50bHkgTlQ0IGNhbiBhbHNvIHJldHVybiBFUlJPUl9FTlZWQVJfTk9UX0ZPVU5ELgoKCSogZGxscy9zaGVsbDMyL3NobGZpbGVvcC5jOiBKb3JpcyBIdWl6ZXIgPGpvcmlzaHVpemVyQHBsYW5ldC5ubD4KCS0gcmVuYW1lZCBmaWxlX29wZXJhdGlvbl9kZWxldGUgYW5kIHRvIHNoZmlsZW9wc19kZWxldGUKCS0gcmVuYW1lZCBmaWxlX29wZXJhdGlvbl9jaGVja0ZsYWdzIHRvIHNoZmlsZW9wc19jaGVja19mbGFncwoJLSBhZGRlZCBoZWxwZXIgZnVuY3Rpb24gc2hmaWxlb3BzX2RvX29wZXJhdGlvbigpCgktIGFkZGVkIGhlbHBlciBmdW5jdGlvbiBzaGZpbGVvcHNfZ2V0X3BhcmVudF9hdHRyKCkKCS0gYWRkZWQgaGVscGVyIGZ1bmN0aW9uIHNoZmlsZW9wc19nZXRfcGFyZW50X2F0dHIyKCkKCS0gdmFyaW91cyBjbGVhbnVwcyBpbiBTSEZpbGVPcGVyYXRpb25XIHVzaW5nIHRoZXNlIGZ1bmN0aW9ucwoKMjAwNS0wMi0xNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvYXZpZmlsMzIvYXZpZmlsZV9Fcy5yYywgZGxscy9jb21jdGwzMi9jb21jdGxfRXMucmMsCgkgIGRsbHMvY29tbWRsZy9jZGxnX0VzLnJjLCBkbGxzL21wci9tcHJfRXMucmMsIGRsbHMvbXNhY20vbXNhY21fRXMucmMsCgkgIGRsbHMvbXNybGUzMi9tc3JsZV9Fcy5yYywgZGxscy9vbGVhdXQzMi9vbGVhdXQzMl9Fcy5yYywKCSAgZGxscy9vbGVkbGcvb2xlZGxnX0VzLnJjLCBkbGxzL3NlcmlhbHVpL0VzLnJjLCBkbGxzL3NldHVwYXBpL0VzLnJjLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9Fcy5yYywgZGxscy9zaGx3YXBpL3NobHdhcGlfRXMucmMsCgkgIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX0VzLnJjLCBkbGxzL3dpbmVwcy93cHNfRXMucmMsCgkgIGRsbHMvd2luaW5ldC93aW5pbmV0X0VzLnJjLCBkbGxzL3dpbm1tL3dpbm1tX0VzLnJjLAoJICBwcm9ncmFtcy9jbG9jay9Fcy5yYywgcHJvZ3JhbXMvY21kbGd0c3QvRXMucmMsCgkgIHByb2dyYW1zL25vdGVwYWQvRXMucmMsIHByb2dyYW1zL3Byb2dtYW4vRXMucmMsCgkgIHByb2dyYW1zL3JlZ2VkaXQvRXMucmMsIHByb2dyYW1zL3N0YXJ0L0VzLnJjLCBwcm9ncmFtcy92aWV3L0VzLnJjLAoJICBwcm9ncmFtcy93Y21kL0VzLnJjLCBwcm9ncmFtcy93aW5lY2ZnL0VzLnJjLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZV9Fcy5yYywgcHJvZ3JhbXMvd2luZWZpbGUvRXMucmMsCgkgIHByb2dyYW1zL3dpbmVtaW5lL0VzLnJjLCBwcm9ncmFtcy93aW5oZWxwL0VzLnJjOgoJQWxleCBWaWxsYWPtcyBMYXNzbyA8YV92aWxsYWNpc0BwYWxvc2FudG8uY29tPgoJQ2hhbmdlIFNVQkxBTkdfREVGQVVMVCB0byBTVUJMQU5HX05FVVRSQUwgZm9yIExBTkdfU1BBTklTSCBpbiBhbGwKCXJlc291cmNlcywgc28gdGhhdCBTcGFuaXNoIGxvY2FsZXMgb3RoZXIgdGhhbiBTcGFpbiBhbHNvIHVzZSBTcGFuaXNoCglyZXNvdXJjZXMuCgoJKiBkbGxzL21zaS9tc2kucmMsIGRsbHMvbXNpL21zaV9Gci5yYywgZGxscy9zaGRvY3Z3L0ZyLnJjLAoJICBkbGxzL3NoZG9jdncvc2hkb2N2dy5yYzoKCUpvbmF0aGFuIEVybnN0IDxKb25hdGhhbkBFcm5zdEZhbWlseS5jaD4KCUFkZCBGcmVuY2ggcmVzb3VyY2VzLgoKCSogZGxscy9tc2kvbXNpLmMsIGRsbHMvbXNpL3JlZ2lzdHJ5LmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglNb3ZlIHByb2R1Y3QsIGZlYXR1cmUgYW5kIGNvbXBvbmVudCBlbnVtZXJhdGlvbiBmdW5jdGlvbnMgdG8KCXJlZ2lzdHJ5LmMuCgoJKiBkbGxzL3dpbm1tL3Rlc3RzL3dhdmUuYzogSmFtZXMgSGF3a2lucyA8dHJ1aWtlbkBnbWFpbC5jb20+CglGaXggaW1wcm9wZXIgdHlwZS1jb252ZXJzaW9ucy4KCgkqIGluY2x1ZGUvd2lubnQuaDogSXZhbiBMZW8gUHVvdGkgPGl2YW5sZW9AZ21haWwuY29tPgoJQWRkIEVWRU5UX1FVRVJZX1NUQVRFIGRlZmluZS4KCgkqIGRsbHMvdXNlci9wYWludGluZy5jLCBkbGxzL3VzZXIvdGVzdHMvd2luLmM6CglSZWluIEtsYXplcyA8d2lqbkB3YW5hZG9vLm5sPgoJQ2FsbGluZyBWYWxpZGF0ZVJlY3Qgb3IgVmFsaWRhdGVSZ24gb24gYSB3aW5kb3dzIGFsc28gdmFsaWRhdGVzIHRoZQoJY2hpbGRyZW4uIEFkZCBhIHRlc3QgdG8gc2hvdyB0aGUgYmVoYXZpb3IuCgoJKiBwcm9ncmFtcy93aW5lY2ZnL2F1ZGlvLmM6IFBhdWwgdmFuIFNjaGF5Y2sgPHBvbGxla2VAZ21haWwuY29tPgoJQ2hhbmdlIGRldGVjdGlvbiBvcmRlciB0bzogT1NTLUFMU0EtQVJUUy1KQUNLLgoKCSogZGxscy91c2VyL2VkaXQuYzogVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IEVTX0NFTlRFUiBhbmQgRVNfUklHSFQgYWxpZ25tZW50IHN0eWxlcy4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYywgZGxscy9zaGVsbDMyL3Rlc3RzL3NoZWxsbGluay5jOgoJSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCVNldFBhdGgoIiIpIHNob3VsZCByZXR1cm4gU19PSy4KCVNldFBhdGgoIm5vbmV4aXN0ZW50X3BhdGgiKSBzaG91bGQgcmV0dXJuIFNfRkFMU0UuCgoJKiBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLCBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjOgoJVGhvbWFzIFdlaWRlbm11ZWxsZXIgPHdpbmUtcGF0Y2hlc0ByZWFjdHNvZnQuY29tPgoJRm9yd2FyZCB0byB1c2VyMzIgd2hlbiBhcHByb3ByaWF0ZS4KCgkqIGRsbHMvZHNvdW5kL21peGVyLmMsIGRsbHMvZHNvdW5kL3ByaW1hcnkuYzoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglTb21lIGJsb2NrIGFsaWduIGNsZWFudXBzLgoKCSogZGxscy9tc2kvZGlhbG9nLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBhIGJvcmRlciB0byB0aGUgZWRpdCBjb250cm9sLCBhZGQgc29tZSBtb3JlIGNvbnRyb2xzLgoKCSogZGxscy9tc2kvc3VtaW5mby5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggdXAgdGhlIHN1bW1hcnkgaW5mb3JtYXRpb24gY29kZSBhIGxpdHRsZS4KCgkqIGRsbHMvbXNpL21zaS5jLCBkbGxzL21zaS9tc2kuc3BlYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglTdHVicyBmb3IgTXNpVXNlRmVhdHVyZS4KCgkqIGRsbHMvZHNvdW5kL2J1ZmZlci5jLCBkbGxzL2Rzb3VuZC90ZXN0cy9kczNkLmMsCgkgIGRsbHMvZHNvdW5kL3Rlc3RzL2RzM2Q4LmMsIGRsbHMvZHNvdW5kL3Rlc3RzL2Rzb3VuZC5jLAoJICBkbGxzL2Rzb3VuZC90ZXN0cy9kc291bmQ4LmMsIGRsbHMvZHNvdW5kL3Rlc3RzL2Rzb3VuZF90ZXN0Lmg6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJRml4ZWQgaW52YWxpZCBidWZmZXIgc2l6ZSBieSByb3VuZGluZyB1cCB0byBuZXh0IG11bHRpcGxlIG9mCgluQmxvY2tBbGlnbi4KCUFkZGVkIHRlc3QgdG8gdmVyaWZ5IGJ1ZmZlciByb3VuZGluZyBiZWhhdmlvci4KCgkqIGRsbHMveDExZHJ2L3dpbnBvcy5jOiBMYXVyaSBUdWxtaW4gPGxhdXJpX0B1dC5lZT4KCU1ha2UgbWluaW1pemVkIHdpbmRvd3Mgc3RheSBtaW5pbWl6ZWQuCgoJKiBkbGxzL21zaS9wYWNrYWdlLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZSBjb25zdCBkZWNsYXJhdGlvbiBmcm9tIG5vbi1jb25zdCBmdW5jdGlvbi4KCgkqIGRsbHMvbXNpL3RhYmxlLmMsIGRsbHMvbXNpL3doZXJlLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBbGxvdyBNc2lWaWV3RXhlY3V0ZSB0byBiZSBjYWxsZWQgdHdpY2Ugb24gdGhlIHNhbWUgcXVlcnkuCgoJKiBkbGxzL21zaS9tc2lxdWVyeS5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgTXNpRGF0YWJhc2VHZXRQcmltYXJ5S2V5cy4KCgkqIGRsbHMvbXNpL21zaS5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglNc2lHZXRDb21wb25lbnRQYXRoIHNob3VsZCBhbGxvdyBudWxsIHBvaW50ZXJzIGZvciBwY2NoQnVmIGFuZAoJbHBQYXRoQnVmLgoKCSogcHJvZ3JhbXMvd2luZW1lbnVidWlsZGVyL3dpbmVtZW51YnVpbGRlci5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJU21hbGwgZml4ZXMsIGluZGVudGF0aW9uIGFuZCBjb21tZW50cy4KCjIwMDUtMDItMTUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmMsIGRsbHMvY29tbWRsZy9jb2xvcmRsZy5jLAoJICBkbGxzL2NvbW1kbGcvY29sb3JkbGcxNi5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jLAoJICBkbGxzL2NvbW1kbGcvZmluZGRsZy5jLCBkbGxzL2NvbW1kbGcvZm9udGRsZzE2LmMsCgkgIGRsbHMvc2VyaWFsdWkvY29uZmRsZy5jLCBkbGxzL3NoZWxsMzIvZGlhbG9ncy5jLAoJICBkbGxzL3NobHdhcGkvbXNnYm94LmMsIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsIGRsbHMvdXNlci9jb250cm9scy5oLAoJICBkbGxzL3VzZXIvZGVza3RvcC5jLCBkbGxzL3VzZXIvZGlhbG9nMTYuYywgZGxscy91c2VyL2ljb250aXRsZS5jLAoJICBkbGxzL3dpbmVwcy9kcml2ZXIuYywgZGxscy94MTFkcnYvd2luZG93LmMsIGRsbHMveDExZHJ2L3dpbnBvcy5jLAoJICBpbmNsdWRlL3dpbmRvd3N4LmgsIGluY2x1ZGUvd2ludXNlci5oLCBwcm9ncmFtcy90YXNrbWdyL2FwcGxwYWdlLmMsCgkgIHByb2dyYW1zL3Rhc2ttZ3IvcHJvY2xpc3QuYywgcHJvZ3JhbXMvd2luZWNmZy9hcHBkZWZhdWx0cy5jLAoJICBwcm9ncmFtcy93aW5lY2ZnL2F1ZGlvLmMsIHByb2dyYW1zL3dpbmVjZmcvZHJpdmV1aS5jLAoJICBwcm9ncmFtcy93aW5lY2ZnL3gxMWRydmRsZy5jLCBwcm9ncmFtcy93aW5lY29uc29sZS9kaWFsb2cuYywKCSAgd2luZG93cy9jbGFzcy5jLCB3aW5kb3dzL2RlZmRsZy5jLCB3aW5kb3dzL2RlZnduZC5jLAoJICB3aW5kb3dzL2RpYWxvZy5jLCB3aW5kb3dzL21kaS5jLCB3aW5kb3dzL25vbmNsaWVudC5jLCB3aW5kb3dzL3dpbi5jLAoJICB3aW5kb3dzL3dpbnByb2MuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CgktIEZpeCBwcm90b3R5cGVzIG9mIEdldENsYXNzTG9uZ0EvVywgR2V0Q2xhc3NMb25nUHRyQS9XIGFuZAoJICBTZXRDbGFzc0xvbmdBL1cgYWNjb3JkaW5nIHRvIFNESyBkZWZpbml0aW9ucy4KCS0gQWRkIHByb3RvdHlwZXMgZm9yIFNldENsYXNzTG9uZ1B0ckEvVywgcHJvdGVjdCBzb21lIEdXTF8gYW5kIEdDTF8KCSAgY29uc3RhbnRzIGZyb20gdXNpbmcgaW4gV2luZSBvciBpbiBfV0lONjQgbW9kZS4KCS0gRml4IGFsbCBwbGFjZXMgaW4gV2luZSBhZmZlY3RlZCBieSB0aGUgYWJvdmUgY2hhbmdlcy4KCgkqIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL29sZXByb3h5LmMsIGRsbHMvb2xlMzIvcnBjLmM6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIFVzZSBJX1JwY0dldEJ1ZmZlciwgaW5zdGVhZCBvZiBvdXIgb3duIGJ1ZmZlciByb3V0aW5lcyB0byBmaXggYW4KCSAgb2NjYXNpb25hbCB0ZXN0IGNyYXNoIGNhdXNlZCBieSBoZWFwIGNvcnJ1cHRpb24uCgktIFplcm8gdGhlIG1lbW9yeSBibG9jayBwYXNzZWQgdG8gUnBjU2VydmVyUmVnaXN0ZXJJZkV4IHNvIHdlIGRvbid0CgkgIHBhc3MgZ2FyYmFnZSBpbiBzb21lIG9mIHRoZSBmaWVsZHMgd2UgZG9uJ3QgZmlsbCBpbi4KCS0gUmV0dXJuIHRoZSBjb3JyZWN0IGVycm9yIGNvZGUgZnJvbSBjcmVhdGVfc2VydmVyIGFuZCBmaXggdHdvIGhhbmRsZQoJICBsZWFrcy4KCS0gVE9ETyB1cGRhdGUuCgoJKiBkbGxzL250ZGxsL3J0bHN0ci5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJVXNlIGxvY2FsIGJ1ZmZlciBpbiBSdGxVcGNhc2VVbmljb2RlU3RyaW5nVG9Db3VudGVkT2VtU3RyaW5nLCBpZgoJYXBwcm9wcmlhdGUuCgoJKiBkbGxzL250ZGxsL3JlZy5jLCBkbGxzL250ZGxsL3Rlc3RzL3JlZy5jLCBpbmNsdWRlL3dpbnRlcm5sLmg6CglJdmFuIExlbyBQdW90aSA8aXZhbmxlb0BnbWFpbC5jb20+CglNb3ZlIFJ0bCpSZWdpc3RyeSogc3RydWN0cywgZGVmaW5lcyBhbmQgcHJvdG90eXBlcyB0byB3aW50ZXJubC5oLgoJRml4IHR3byBmdW5jdGlvbiBkZWNsYXJhdGlvbnMuCgoJKiBkbGxzL21zaS9tc2kucmMsIGRsbHMvbXNpL21zaV9EZS5yYywgZGxscy9zaGRvY3Z3L0RlLnJjLAoJICBkbGxzL3NoZG9jdncvc2hkb2N2dy5yYywgcHJvZ3JhbXMvd2luZWZpbGUvRGUucmM6CglIZW5uaW5nIEdlcmhhcmR0IDxoZW5uaW5nLmdlcmhhcmR0QHdlYi5kZT4KCUFkZC91cGRhdGVkIEdlcm1hbiByZXNvdXJjZXMuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlaW5kZW50IHNvbWUgY29kZSB0byBpbXByb3ZlIHJlYWRhYmlsaXR5LgoKCSogZGxscy9ycGNydDQvcnBjX2JpbmRpbmcuYywgZGxscy9ycGNydDQvcnBjX21lc3NhZ2UuYywKCSAgZGxscy9ycGNydDQvcnBjcnQ0LnNwZWM6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIEFkZCBhIHN0dWIgaW1wbGVtZW50YXRpb24gb2YgUnBjSW1wZXJzb25hdGVDbGllbnQuCgktIE1vcmUgdHJhY2luZywgcGFydGljdWxhcmx5IG9uIGVycm9yIHBhdGhzLgoKCSogZGxscy9rZXJuZWwvdm9sdW1lLmM6IFBhdWwgdmFuIFNjaGF5Y2sgPHBvbGxla2VAZ21haWwuY29tPgoJT25seSBzdG9wIHdyaXRpbmcgYSB2b2x1bWUgbGFiZWwgaWYgd2UgZm91bmQgYSBub24gd3JpdGFibGUgZmF0CglwYXJ0aXRpb24uCgoJKiBkbGxzL29sZTMyL2dpdC5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglUaGUgR2xvYmFsIEludGVyZmFjZSBUYWJsZSBzaG91bGQgZG8gdGFibGUtc3Ryb25nIG1hcnNoYWxpbmcgaW5zdGVhZAoJb2Ygbm9ybWFsIG1hcnNoYWxpbmcgc28gdGhhdCBhbiBpbnRlcmZhY2UgY2FuIGJlIHJldHJpZXZlZCBtb3JlIHRoYW4KCW9uZSB0aW1lLgoKCSogZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvY29tcG9ial9wcml2YXRlLmgsCgkgIGRsbHMvb2xlMzIvbWFyc2hhbC5jLCBkbGxzL29sZTMyL3JwYy5jOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBSZW1vdmUgY3J1ZnQgbGVmdCBvdmVyIGZyb20gcHJldmlvdXMgUlBDIGJhY2tlbmQgaW1wbGVtZW50YXRpb24gaW4KCSAgdGhlIGFwYXJ0bWVudCBzdHJ1Y3R1cmUuCgktIERvbid0IHBhc3MgYW4gSVBJRCBieSB2YWx1ZSBmb3IgcHJveHlfbWFuYWdlcl9jcmVhdGVfaWZwcm94eS4KCS0gRGlzYWJsZSBtb3JlIG9mIFJQQ19VbnJlZ2lzdGVySW50ZXJmYWNlIHRvIHByZXZlbnQgdGhlIFJQQyBydW50aW1lCgkgIHVzaW5nIGZyZWVkIG1lbW9yeS4KCS0gUmVuYW1lIHZhcmlvdXMgZXh0ZXJuYWwgUlBDIGJhY2tlbmQgZnVuY3Rpb25zIHNvIHRoYXQgdGhleSBhbGwgaGF2ZQoJICB0aGUgc2FtZSAiUlBDXyIgcHJlZml4LgoJLSBSZWR1Y2UgdGhlIHRpbWVvdXQgb2YgdGhlIGZ1bmN0aW9uIHRoYXQgY29ubmVjdHMgdG8gYSBsb2NhbCBzZXJ2ZXIKCSAgdG8gMzBzLCBsaWtlIG5hdGl2ZS4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgaW5jbHVkZS9zaGVsbGFwaS5oOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRGVmaW5lIHNvbWUgZXh0cmEgU0hGR0kgdmFsdWVzLgoKCSogZGxscy91c2VyL3N5c3BhcmFtcy5jLCBpbmNsdWRlL3dpbnVzZXIuaDoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBzb21lIG1vcmUgU1BJIHZhbHVlcy4KCgkqIGRsbHMvcnBjcnQ0L3JwY19zZXJ2ZXIuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJRml4IFJQQyBzZXJ2ZXIgdGhyZWFkIHJhY2UuCgoJKiBkbGxzL3JwY3J0NC9ycGNfYmluZGluZy5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglFUlJPUl9JT19QRU5ESU5HIGlzIGV4cGVjdGVkLCBzbyBkb24ndCByZXR1cm4gYW4gZXJyb3IuCgoJKiBkbGxzL2RpbnB1dC9qb3lzdGlja19saW51eGlucHV0LmMsIGRsbHMvZGlucHV0L2tleWJvYXJkLmMsCgkgIGRsbHMvZGlucHV0L21vdXNlLmM6CglDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglJbXBsZW1lbnRlZCBHZXRQcm9wZXJ0eSBtZXRob2QgZm9yIGtleWJvYXJkIGRldmljZS4KCgkqIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL2NvbXBvYmpfcHJpdmF0ZS5oLAoJICBkbGxzL29sZTMyL21hcnNoYWwuYywgZGxscy9vbGUzMi9ycGMuYywgZGxscy9vbGUzMi9zdHVibWFuYWdlci5jOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJTWFrZSBDT00gdXNlIHRoZSBSUEMgcnVudGltZSBhcyB0aGUgYmFja2VuZCBmb3IgUlBDIGNhbGxzLiBCYXNlZCBvbiBhCglwYXRjaCBieSBPdmUgS+V2ZW4uCgoyMDA1LTAyLTE0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9udGRsbC90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL250ZGxsL3Rlc3RzL01ha2VmaWxlLmluLAoJICBkbGxzL250ZGxsL3Rlc3RzL3JlZy5jOgoJQnJhZCBEZU1vcnJvdwoJVGVzdHMgZm9yIHRoZSBudGRsbCByZWdpc3RyeSBmdW5jdGlvbnMuCgoJKiBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvbnRkbGwvcmVnLmM6CglJdmFuIExlbyBQdW90aSA8aXZhbmxlb0BnbWFpbC5jb20+CglBZGQgaW1wbGVtZW50YXRpb24gZm9yIFJ0bFF1ZXJ5UmVnaXN0cnlWYWx1ZXMsIFJ0bENoZWNrUmVnaXN0cnlLZXkgYW5kCglSdGxEZWxldGVSZWdpc3RyeVZhbHVlLgoKCSogZGxscy9hZHZhcGkzMi90ZXN0cy9zZWN1cml0eS5jLCBkbGxzL2dkaS90ZXN0cy9tZXRhZmlsZS5jLAoJICBkbGxzL21sYW5nL3Rlc3RzL21sYW5nLmMsIGRsbHMvbXN2Y3J0L3Rlc3RzL2ZpbGUuYywKCSAgZGxscy9udGRsbC90ZXN0cy9wYXRoLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQ2FzdCB0aGUgR2V0UHJvY0FkZHJlc3MoKSByZXR1cm4gdmFsdWUgdG8gYXZvaWQgd2FybmluZ3MgYWJvdXQgdGhlCglmdW5jdGlvbiBwb2ludGVyIGJlaW5nIG9mIHRoZSB3cm9uZyB0eXBlLgoJRml4IGFzc29ydGVkIHNpZ25lZC91bnNpZ25lZCBjb21wYXJpc29uIHdhcm5pbmdzLgoKCSogZGxscy9yaWNoZWRpdC9yZWFkZXIuYywgZGxscy9yaWNoZWRpdC9ydGYuaCwKCSAgZGxscy9yaWNoZWRpdC9zdGRjaGFybmFtZXMuaCwgZGxscy9yaWNoZWRpdC90ZXh0X21hcC5oOgoJUultaSBBc3NhaWxseSA8cmVtaS5hc3NhaWxseUBmcmVlLmZyPgoJY2hhciAtPiBjb25zdCBjaGFyIGZpeGVzLgoKCSogcHJvZ3JhbXMvd2luZWNmZy9tYWluLmM6IE1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCUFkZGVkIHN1cHBvcnQgZm9yIGNvbW1hbmQgbGluZSBwYXJhbWV0ZXIgJy9EJyB0byBkbyBkcml2ZSBkZXRlY3Rpb24KCWZyb20gd2luZXByZWZpeGNyZWF0ZS4KCgkqIHByb2dyYW1zL3dpbmVjZmcvZHJpdmVkZXRlY3QuYzoKCU1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCUluY2x1ZGUgY29uZmlnLmggdG8gcmVlbmFibGUgcmVhZGluZyAvZXRjL2ZzdGFiIG9uIHBsYXRmb3JtcyB0aGF0CglzdXBwb3J0IGl0LgoJSW1wbGVtZW50ZWQgYSBibGFjayBsaXN0IG9mIG1vdW50IGRpcmVjdG9yaWVzLCB3aGljaCBzaG91bGQgbm90IGJlCgltYXBwZWQuCglFbnN1cmUgdGhhdCB0aGUgdXNlcidzIGhvbWUgZGlyZWN0b3J5IGlzIG1hcHBlZC4KCgkqIGRsbHMvcnNhZW5oL3JzYWVuaC5jOiBNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglDaGVjayBwZHdEYXRhTGVuIHBhcmFtIGZvciBub24gTlVMTCduZXNzLgoJSW1wbGVtZW50ZWQgUFBfSU1QTFRZUEUgYW5kIFBQX1ZFUlNJT04gcHJvdmlkZXIgcGFyYW1zLgoKCSogcHJvZ3JhbXMvd2luZWNmZy9kcml2ZS5jOiBNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglTZXQgcG9pbnRlcnMgdG8gTlVMTCBpbiBkZWxldGVfZHJpdmUgdG8gcHJldmVudCBoZWFwIGNvcnJ1cHRpb24gaW4KCWxvYWRfZHJpdmVzLgoKCSogZGxscy93aW5tbS90ZXN0cy90aW1lci5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQWRkIHNvbWUgbWlzc2luZyBcbnMuCgoJKiBkbGxzL21zY21zL2hhbmRsZS5jLCBkbGxzL21zY21zL2ljYy5jLCBkbGxzL21zY21zL21zY21zX3ByaXYuaCwKCSAgZGxscy9tc2Ntcy9wcm9maWxlLmMsIGRsbHMvbXNjbXMvdGVzdHMvcHJvZmlsZS5jOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglJbXBsZW1lbnQgYW5kIHRlc3QgYWNjZXNzIGZsYWdzIGZvciBjb2xvciBwcm9maWxlcy4KCVdyaXRlIHRoZSBjb2xvciBwcm9maWxlIGJhY2sgdG8gZGlzayB3aGVuIGl0IHdhcyBvcGVuZWQgZm9yIHdyaXRpbmcuCgoJKiBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYywgZGxscy9tc3ZjcnQvdGVzdHMvcHJpbnRmLmMsCgkgIGRsbHMvbXN2Y3J0L3djcy5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWRkIGhhbmRsaW5nIG9mICV3cywgJVMgYW5kICVDIHRvIF92bnModylwcmludGYsIGltcHJvdmUgc3ByaW50ZgoJdGVzdHMuCgoJKiBkbGxzL3VzZXIvZGRlL2NsaWVudC5jLCBkbGxzL3VzZXIvZGRlL2RkZV9wcml2YXRlLmgsCgkgIGRsbHMvdXNlci9kZGUvZGRlbWwxNi5jLCBkbGxzL3VzZXIvZGRlL21pc2MuYywKCSAgZGxscy91c2VyL2RkZS9zZXJ2ZXIuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglNYWtlIERERSBpbXBsZW1lbnRhdGlvbiBhbHdheXMgd29yayBpbnRlcm5hbGx5IGluIFVuaWNvZGUuCgoJKiBkbGxzL2FkdmFwaTMyL3Rlc3RzL3NlY3VyaXR5LmM6CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglTdXBwcmVzcyBhIHdhcm5pbmcuCgoJKiBkbGxzL3NoZWxsMzIvdGVzdHMvc2hlbGxsaW5rLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJVGVzdCB0aGUgaW50ZXJhY3Rpb24gYmV0d2VlbiBJU2hlbGxMaW5rOjpTZXRJRExpc3QoKSBhbmQKCUlTaGVsbExpbms6OlNldFBhdGgoKS4KCUNoZWNrIHdoYXQgZGVmYXVsdCB2YWx1ZXMgb25lIGdldHMgb24gYSBmcmVzaCBJU2hlbGxMaW5rIG9iamVjdC4KCUFkZCBzb21lIG1vcmUgdGVzdHMgdmVyaWZ5aW5nIG5vdGhpbmcgaXMgbG9zdCBpbiBhbiBJU2hlbGxMaW5rCglzYXZlL2xvYWQgY3ljbGUuIE1lcmdlZCB0aGUgZW1wdHkgc2hlbGxsaW5rIHRlc3Qgd2l0aCB0aGVzZS4KCgkqIGRsbHMvZ2RpL3JlZ2lvbi5jOiBSZWluIEtsYXplcyA8d2lqbkB3YW5hZG9vLm5sPgoJUkVHSU9OX0ZyYW1lUmduIGNvbXB1dGVzIHRoZSBmcmFtZSByZWdpb24gaW5zaWRlIHRoZSBvcmlnaW5hbCByZWdpb24uCgoJKiBkbGxzL3VzZXIvZWRpdC5jOiBMYXVyaSBUdWxtaW4gPGxhdXJpX0B1dC5lZT4KCVVwZGF0ZSBzY3JvbGwgaW5mbyBvbiBXTV9TRVRURVhULgoKCSogcHJvZ3JhbXMvbm90ZXBhZC9kaWFsb2cuYzogTGF1cmkgVHVsbWluIDxsYXVyaV9AdXQuZWU+CglJbXBsZW1lbnQgd29yZCB3cmFwLgoKCSogZG9jdW1lbnRhdGlvbi9SRUFETUUucHQsIGRvY3VtZW50YXRpb24vUkVBRE1FLnB0X2JyOgoJTWFyY2VsbyBEdWFydGUgPHdpbmUtZGV2ZWxAYm9sLmNvbS5icj4KCVVwZGF0ZSBSRUFETUUgZm9yIFB0X2JyIGFuZCBQdC4KCgkqIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL2NvbXBvYmpfcHJpdmF0ZS5oLCBkbGxzL29sZTMyL3JwYy5jLAoJICBkbGxzL29sZTMyL3N0dWJtYW5hZ2VyLmM6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglJbnZva2Ugb2JqZWN0cyBpbiBTVEEncyBpbiB0aGUgY29ycmVjdCB0aHJlYWQgYnkgc2VuZGluZyBtZXNzYWdlcyB0bwoJdGhlIGhpZGRlbiBhcGFydG1lbnQgd2luZG93LgoKCSogZGxscy9yaWNoZWRpdC9yaWNoZWRpdC5jOgoJSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCU1ha2UgdGhlIGVkaXQgZmllbGQgY3JlYXRlZCBmcm9tIGEgcmljaGVkaXQgY29udHJvbCB3aGljaCB3YXMgY3JlYXRlZAoJd2l0aCBFU19ESVNBQkxFTk9TQ1JPTEwsIG5vdCBoYXZlIHRoZSBFU19OVU1CRVIgc3R5bGUgYW5kIGhlbmNlIGFjY2VwdAoJYWxwaGFudW1lcmljIGlucHV0LgoKCSogZGxscy9jb21tZGxnL2NkbGdfRW4ucmMsIGRsbHMvY29tbWRsZy9jZGxnX1B0LnJjLAoJICBkbGxzL2NvbW1kbGcvY2RsZ194eC5yYywgZGxscy9tcHIvbXByX1B0LnJjLCBkbGxzL21zaS9tc2kucmMsCgkgIGRsbHMvbXNpL21zaV9QdC5yYywgZGxscy9vbGVhdXQzMi9vbGVhdXQzMi5yYywgZGxscy9zaGRvY3Z3L0VuLnJjLAoJICBkbGxzL3NoZG9jdncvUHQucmMsIGRsbHMvc2hkb2N2dy9zaGRvY3Z3LnJjLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9QdC5yYywgZGxscy93aW5pbmV0L3dpbmluZXRfUHQucmMsCgkgIHByb2dyYW1zL3dpbmVjZmcvUHQucmMsIHByb2dyYW1zL3dpbmVmaWxlL1B0LnJjOgoJTWFyY2VsbyBEdWFydGUgPHdpbmUtZGV2ZWxAYm9sLmNvbS5icj4KCVVwZGF0ZSB0aGUgcmVzb3VyY2VzIGZvciBQb3J0dWd1ZXNlLgoKCSogZGxscy9kZHJhdy9kM2RfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L2QzZGRldmljZS9tYWluLmMsCgkgIGRsbHMvZGRyYXcvbWVzYS5jLCBkbGxzL2RkcmF3L21lc2FfcHJpdmF0ZS5oLAoJICBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsIGRsbHMvZGRyYXcvZGlyZWN0M2QvbWVzYS5jLAoJICBkbGxzL2RkcmF3L2RzdXJmYWNlL21haW4uYzoKCUNocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUhhbmRsZSBtb3JlIHByb3Blcmx5IHZlcnNpb25zIGZvciBEaXJlY3QzRCBhbmQgRGlyZWN0M0REZXZpY2UKCW9iamVjdHMuCgoJKiBkb2N1bWVudGF0aW9uL2dldHRpbmcuc2dtbDoKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCUFkZCAyIG1pc3NpbmcgdGFncyBpbiBnZXR0aW5nLnNnbWwuCgoJKiBkbGxzL2dkaS9kaWIuYywgZGxscy9vbGVhdXQzMi9vbGVwaWN0dXJlLmMsIGRsbHMvd2luZXBzL3BzLmMsCgkgIHdpbmRvd3MvY3Vyc29yaWNvbi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglDaGVjayBmb3Igb3ZlcmZsb3dzIHdpdGggQ2xyVXNlZC4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jLCBkbGxzL29sZTMyL2Vycm9yaW5mby5jLCBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU91dHB1dCBzb21lIG1vcmUgaW5mb3JtYXRpb25zLgoJTWFyayBvbmUgZ2xvYmFsIHZhcmlhYmxlIHN0YXRpYy4KCgkqIGRsbHMvbXNpL01ha2VmaWxlLmluLCBkbGxzL21zaS9kZWxldGUuYywgZGxscy9tc2kvcXVlcnkuaCwKCSAgZGxscy9tc2kvc3FsLnk6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgU1FMIGRlbGV0ZSBxdWVyeS4KCgkqIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmM6IEZpbGlwIE5hdmFyYSA8eG5hdmFyYUB2b2xueS5jej4KCURvbid0IGNyYXNoIGlmIFNoZWxsRm9sZGVyIGRvZXNuJ3QgaW1wbGVtZW50IHRoZSBJSURfSVNGSGVscGVyCglpbnRlcmZhY2UuCgoJKiBkbGxzL2FkdmFwaTMyL3Rlc3RzL2NyeXB0LmMsIGRsbHMvYWR2YXBpMzIvdGVzdHMvc2VjdXJpdHkuYzoKCVN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJTWFrZSBhZHZhcGkzMl90ZXN0LmV4ZSBsb2FkYWJsZSBvbiBOVCAzLjUxLgoKCSogdG9vbHMvd2lkbC90eXBlbGliLmM6IFZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCUEgUlBDX0ZDX0VOVU0xNiBpcyBhIFZUX1VTRVJERUZJTkVELgoKCSogZGxscy9zZXR1cGFwaS9taXNjLmMsIGRsbHMvc2V0dXBhcGkvc2V0dXBhcGkuc3BlYywKCSAgaW5jbHVkZS9zZXR1cGFwaS5oOgoJRXJpYyBLb2hsIDxlcmljLmtvaGxAdC1vbmxpbmUuZGU+CglJbXBsZW1lbnQgRGVsYXllZE1vdmUgYW5kIEZpbGVFeGlzdHMuCgoJKiBwcm9ncmFtcy93aW5lZGJnL2luZm8uYzogT2xpdmVyIFN0aWViZXIgPG9saXZlcl9zdGllYmVyQHlhaG9vLmNvLnVrPgoJTWVudGlvbiBidCBbYWxsIHwgPHRpZD5dLgoKCSogZGxscy9nZGkvdGVzdHMvYnJ1c2guYzogUultaSBBc3NhaWxseSA8cmVtaS5hc3NhaWxseUBmcmVlLmZyPgoJU21hbGwgY2hhciAtPiBjb25zdCBjaGFyIGZpeC4KCgkqIGRsbHMvc2hlbGwzMi9zaGxleGVjLmM6IEdlIHZhbiBHZWxkb3JwIDxndmdAcmVhY3Rvcy5jb20+CglFcnJvciBudW1iZXJzID49IDMyIGFyZSB0byBiZSBleHBlY3RlZC4KCgkqIGRsbHMvbnRkbGwvdGltZS5jOiBNYXJjZWxvIER1YXJ0ZSA8d2luZS1kZXZlbEBib2wuY29tLmJyPgoJLSBDb3JyZWN0IHRpbWUgem9uZSBmb3IgQlJUIGFuZCBCUlNULgoJLSBCZXR0ZXIgZXhwbGFpbmVkIGZpeG1lLgoKCSogZGxscy9hZHZwYWNrL3Rlc3RzL01ha2VmaWxlLmluLCBkbGxzL2FkdnBhY2svdGVzdHMvYWR2cGFjay5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUxvYWQgYWR2cGFjay5kbGwgYXQgcnVudGltZSB0byBhdm9pZCBsaW5rIHByb2JsZW1zIHdpdGggdGhlIHBsYXRmb3JtCglzZGsuCgoJKiBkbGxzL3dpbnNvY2svdGVzdHMvcHJvdG9jb2wuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglUZXN0cyBjYW5ub3QgdXNlIHdpbmUvZGVidWcuaCBiZWNhdXNlIGl0IGRvZXMgbm90IGV4aXN0IG9uIFdpbmRvd3MuCgoJKiBkbGxzL3VzZXIvdGVzdHMvZWRpdC5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJRVNfQ09NQk8gaXMgbm90IGRlZmluZWQgaW4gdGhlIFdpbmRvd3MgaGVhZGVycy4gU28gZGVmaW5lIGl0IGlmCgluZWNlc3Nhcnkgc28gdGhlIHRlc3QgY2FuIGJlIGNvbXBpbGVkIG9uIFdpbmRvd3MuCgoJKiBkbGxzL29sZTMyL3Rlc3RzL21hcnNoYWwuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJTWFrZSBPbGUgdGVzdHMgcnVuIG9uIFdpbmRvd3MgOTUuCgoJKiBwcm9ncmFtcy93Y21kL2J1aWx0aW5zLmM6CglKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJTWFrZSAnZXhpc3QnIGluIHdjbWQgaGFuZGxlIGJvdGggZmlsZSBhbmQgZGlyZWN0b3JpZXMuCgoJKiBwcm9ncmFtcy93aW5lY2ZnL2RyaXZlZGV0ZWN0LmMsIHByb2dyYW1zL3dpbmVjZmcvd2luZWNmZy5oOgoJTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJRml4ZWQgYXV0b21hdGljIGRyaXZlIGRldGVjdGlvbiBmb3IgdGhlIGNhc2UgdGhhdCB0aGUgcm9vdCBkaXJlY3RvcnkKCWlzIG5vdCBhbHJlYWR5IG1hcHBlZC4KCgkqIGRsbHMvd2lubW0vdGVzdHMvLmN2c2lnbm9yZSwgZGxscy93aW5tbS90ZXN0cy9NYWtlZmlsZS5pbiwKCSAgZGxscy93aW5tbS90ZXN0cy90aW1lci5jLCBkbGxzL3dpbm1tL3RpbWUuYzoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglBZGRlZCBwYXJhbWV0ZXIgY2hlY2tpbmcgdG8gdGltZUdldERldkNhcHMuCglBZGRlZCB0aW1lciB0ZXN0cy4KCgkqIGRsbHMvY29tbWRsZy9mb250ZGxnLmM6IE1pa2UgSGVhcm4gPG1oQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlc3BlY3QgdGhlIGZsYWdzIG1lbWJlciBvZiB0aGUgQ0hPT1NFRk9OVCBzdHJ1Y3R1cmUsIGFuZCBkb24ndAoJYXR0ZW1wdCB0byBwcm9jZXNzIGJvZ3VzIHN0cmluZ3MuCgoyMDA1LTAyLTExICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogVkVSU0lPTiwgY29uZmlndXJlLCBBTk5PVU5DRSwgQ2hhbmdlTG9nOiBSZWxlYXNlIDIwMDUwMjExLgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoyMDA1LTAyLTExICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZG9jdW1lbnRhdGlvbi9NYWtlZmlsZS5pbiwgZG9jdW1lbnRhdGlvbi9jb21waWxpbmcuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9nZXR0aW5nLnNnbWwsIGRvY3VtZW50YXRpb24vaW5zdGFsbGluZy5zZ21sLAoJICBkb2N1bWVudGF0aW9uL2ludHJvZHVjdGlvbi5zZ21sLCBkb2N1bWVudGF0aW9uL3dpbmUtdXNlci5zZ21sOgoJU2NvdHQgUml0Y2hpZSA8c2NvdHRAb3Blbi12b3RlLm9yZz4KCVVzZXIgR3VpZGUgQ2hhcHRlciAyIHJld3JpdGUuCgoJKiBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmMsIGRsbHMvbnRkbGwvbnQuYywKCSAgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLCBpbmNsdWRlL3dpbm50LmgsIGluY2x1ZGUvd2ludGVybmwuaCwKCSAgc2VydmVyL29iamVjdC5oLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcHJvdG9jb2wuZGVmLAoJICBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvdG9rZW4uYywgc2VydmVyL3RyYWNlLmM6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIEltcGxlbWVudCBBZGp1c3RUb2tlblByaXZpbGVnZXMsIER1cGxpY2F0ZVRva2VuRXggYW5kCgkgIEdldFRva2VuSW5mb3JtYXRpb24gKGZvciB0aGUgVG9rZW5Qcml2aWxlZ2VzIGNhc2UpLgoJLSBSZXR1cm4gU1RBVFVTX05PX1RPS0VOIGZvciBPcGVuVGhyZWFkVG9rZW4gd2hlbiB0aGVyZSBpcyBubyB0b2tlbgoJICBzZXQgZm9yIHRoZSB0aHJlYWQuCgoJKiBkbGxzL2Rzb3VuZC9idWZmZXIuYywgZGxscy9kc291bmQvY2FwdHVyZS5jLCBkbGxzL2Rzb3VuZC9kc291bmQuYywKCSAgZGxscy9kc291bmQvZHNvdW5kX21haW4uYywgZGxscy9kc291bmQvcHJpbWFyeS5jLAoJICBkbGxzL2Rzb3VuZC9wcm9wc2V0LmMsIGRsbHMvZHNvdW5kL3NvdW5kM2QuYzoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglSZW1vdmVkIHByaW50aW5nIG9mIHRocmVhZCBpZCBmb3IgQWRkUmVmIGFuZCBSZWxlYXNlIGJlY2F1c2UKCVdJTkVERUJVRz0rdGlkIGdpdmVzIHRoZSBzYW1lIHJlc3VsdC4KCUdlbmVyYWwgY29uc2lzdGVuY3kgY2xlYW51cC4KCjIwMDUtMDItMTAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC9wcm9maWxlLmM6CglGaXhlZCBwcm9maWxlIGNhY2hlIGZsdXNoaW5nIHdoZW4gbm8gZmlsZW5hbWUgaXMgc3BlY2lmaWVkIChyZXBvcnRlZAoJYnkgTWlrZSBIZWFybikuCgoJKiBkbGxzL2Rzb3VuZC90ZXN0cy9kczNkOC5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCURvbid0IGxpbmsgd2l0aCBEaXJlY3RTb3VuZENyZWF0ZTggYXMgdGhpcyBwcmV2ZW50cyBydW5uaW5nIHdpdGggb2xkZXIKCXZlcnNpb25zIG9mIERpcmVjdFguCgoJKiBkbGxzL250ZGxsL3ZlcnNpb24uYzogTWlrZSBIZWFybiA8bWhAY29kZXdlYXZlcnMuY29tPgoJQWx0ZXIgdGhlIHZlcnNpb24gaGV1cmlzdGljcyBhIGJpdC4KCgkqIHByb2dyYW1zL3dpbmVkYmcvZ2RicHJveHkuYzoKCU9saXZlciBTdGllYmVyIDxvbGl2ZXJfc3RpZWJlckB5YWhvby5jby51az4KCUFkZGVkIHZDb250IHN1cHBvcnQuCgoJKiBkbGxzL29wZW5nbDMyL29wZW5nbF9leHQuYzogVG9tIFdpY2tsaW5lIDx0d2lja2xpbmVAc2l0ZXN0YXIubmV0PgoJU3luYyB0byBsYXRlc3QgT3BlbkdMIHNwZWNpZmljYXRpb25zLgoKCSogcHJvZ3JhbXMvbXNpZXhlYy9tc2lleGVjLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVNldCBmdWxsIFVJIG1vZGUgYnkgZGVmYXVsdC4KCgkqIGRsbHMvZHNvdW5kL3Rlc3RzL2RzM2QuYywgZGxscy9kc291bmQvdGVzdHMvZHMzZDguYywKCSAgZGxscy9kc291bmQvdGVzdHMvZHNvdW5kLmMsIGRsbHMvZHNvdW5kL3Rlc3RzL2Rzb3VuZDguYzoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglQcmludCBpbmZvIGFib3V0IHByaW1hcnkgYnVmZmVyIGZvcm1hdC4KCgkqIGRsbHMvZDNkOS9kZXZpY2UuYzogUGF1bCBWcmllbnMgPFBhdWwuVnJpZW5zQHhzNGFsbC5ubD4KCUNoZWNrIHRoYXQgcHBaU3RlbmNpbFN1cmZhY2UgaXMgbm90IG51bGwuCgoJKiBhY2xvY2FsLm00LCBkbGxzL2FkdmFwaTMyL3Rlc3RzL2NyeXB0LmMsCgkgIGRsbHMvY29tY3RsMzIvdGVzdHMvaW1hZ2VsaXN0LmMsIGRsbHMvZHBsYXl4L25hbWVfc2VydmVyLmMsCgkgIGRsbHMva2VybmVsL3Rlc3RzL2RpcmVjdG9yeS5jLCBkbGxzL2tlcm5lbC90ZXN0cy9maWxlLmMsCgkgIGRsbHMva2VybmVsL3Rlc3RzL21haWxzbG90LmMsIGRsbHMva2VybmVsL3Rlc3RzL3BhdGguYywKCSAgZGxscy9semV4cGFuZC90ZXN0cy9semV4cGFuZF9tYWluLmMsIGRsbHMvbWFwaTMyL3Rlc3RzL3Byb3AuYywKCSAgZGxscy9tc2kvdGFibGUuYywgZGxscy9tc3JsZTMyL21zcmxlMzIuYywgZGxscy9tc3ZjcnQvZW52aXJvbi5jLAoJICBkbGxzL21zdmNydC90ZXN0cy9lbnZpcm9uLmMsIGRsbHMvcXVhcnR6L2FjbXdyYXBwZXIuYywKCSAgZGxscy9yc2FlbmgvcnNhZW5oLmMsIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYywKCSAgZGxscy9zaGVsbDMyL3Rlc3RzL3NoZWxscGF0aC5jLCBkbGxzL3NoZWxsMzIvdGVzdHMvc2hsZmlsZW9wLmMsCgkgIGRsbHMvc2hsd2FwaS90ZXN0cy9jbGlzdC5jLCBkbGxzL3dpbmVkM2QvZGlyZWN0eC5jLAoJICBkbGxzL3dpbmVkb3MvcHBkZXYuYywgZG9jdW1lbnRhdGlvbi9jb25maWd1cmluZy5zZ21sLAoJICBwcm9ncmFtcy93Y21kL0VuLnJjLCBwcm9ncmFtcy93Y21kL1J1LnJjLCBwcm9ncmFtcy93Y21kL1NpLnJjLAoJICB0b29scy93aW5lYnVpbGQvc3BlYzMyLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFzc29ydGVkIHNwZWxsaW5nIGZpeGVzLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWM6IEFsZXggV29vZHMgPHdpbmUtZGV2ZWxAZ2libGV0cy5vcmc+CglIYW5kbGUgaG9zdF9jcHUgb2YgeDg2XzY0IGxpa2Ugb3RoZXIgeDg2cy4KCgkqIHByb2dyYW1zL21zaWV4ZWMvTWFrZWZpbGUuaW4sIHByb2dyYW1zL21zaWV4ZWMvbXNpZXhlYy5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJUmVhZCBhcmdzIGZyb20gdGhlIHJlZ2lzdHJ5IHdoZW4gcGFzc2VkIHRoZSAvQCBmbGFnLgoKCSogZGxscy9tc2kvbXNpLmMsIGluY2x1ZGUvbXNpLmg6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVVwZGF0ZSBoZWFkZXJzLCBhZGQgTXNpR2V0VXNlckluZm9BIHN0dWIgaW1wbGVtZW50YXRpb24uCgoJKiBkbGxzL3NlcmlhbHVpL1B0LnJjLCBkbGxzL3NldHVwYXBpL1B0LnJjLCBwcm9ncmFtcy9jbG9jay9QdC5yYywKCSAgcHJvZ3JhbXMvY21kbGd0c3QvUHQucmMsIHByb2dyYW1zL25vdGVwYWQvUHQucmMsCgkgIHByb2dyYW1zL3Byb2dtYW4vUHQucmMsIHByb2dyYW1zL3JlZ2VkaXQvUHQucmMsIHByb2dyYW1zL3N0YXJ0L1B0LnJjLAoJICBwcm9ncmFtcy92aWV3L1B0LnJjLCBwcm9ncmFtcy93Y21kL1B0LnJjLCBwcm9ncmFtcy93aW5lY2ZnL1B0LnJjLAoJICBwcm9ncmFtcy93aW5lZmlsZS9QdC5yYywgcHJvZ3JhbXMvd2luZW1pbmUvUHQucmMsCgkgIHByb2dyYW1zL3dpbmhlbHAvUHQucmM6CglBbelyaWNvIEpvc+kgTWVsbyA8bW1vZGVtMDBAbmV0dmlzYW8ucHQ+CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJVHJhbnNsYXRlIHRoZSBXaW5lIHJlc291cmNlcyB0byBQb3J0dWd1ZXNlLgoKCSogZGxscy9xdWFydHovTWFrZWZpbGUuaW4sIGRsbHMvcXVhcnR6L21haW4uYywKCSAgZGxscy9xdWFydHovcXVhcnR6X3ByaXZhdGUuaCwgZGxscy9xdWFydHovcmVnc3ZyLmMsCgkgIGRsbHMvcXVhcnR6L3dhdmVwYXJzZXIuYywgaW5jbHVkZS91dWlkcy5oOgoJQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJQWRkZWQgV0FWRSBwYXJzZXIuCgoJKiBwcm9ncmFtcy9tc2lleGVjL21zaWV4ZWMuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQ29udmVydCB0byBVbmljb2RlLgoKCSogZGxscy9kc291bmQvbWl4ZXIuYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCVNpZ25lZC91bnNpZ25lZCBmaXggYW5kIGNvZGUgY2xlYW51cC4KCgkqIGRsbHMvc2hsd2FwaS90ZXN0cy9wYXRoLmM6IFBhdWwgVnJpZW5zIDxQYXVsLlZyaWVuc0B4czRhbGwubmw+CglVc2UgYWxpYXNlcyBmb3IgY2FsbHMgdG8gb3JkaW5hbHMuCgoJKiBkbGxzL21zaS9tc2kuYywgZGxscy9tc2kvbXNpLnNwZWM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgc3R1YnMgZm9yIE1zaUdldFNob3J0Y3V0VGFyZ2V0QS9XLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGcuYywgZGxscy9jb21tZGxnL2ZpbGVkbGcxNi5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCURvIG5vdCBmb3JnZXQgdG8gYWxsb2NhdGUgaW50ZXJuYWwgT1BFTkZJTEVOQU1FVyBzdHJ1Y3R1cmUgZm9yIDE2LWJpdAoJR2V0T3BlbkZpbGVOYW1lLCBpbml0aWFsaXplIGl0IGJ5IHplcm9zIGZvciAxNi9BIGNhc2VzLgoKCSogZGxscy9tc2kvYWN0aW9uLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglBZGQgdGhlIFJlZ2lzdGVyVXNlciBhY3Rpb24uCgoJKiBkbGxzL2Rzb3VuZC9idWZmZXIuYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUFsd2F5cyBhbGxvY2F0ZSBhbiBlbXB0eSBidWZmZXIuCgoyMDA1LTAyLTA5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy93aW5tbS9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS9kcml2ZXIuYywgZGxscy93aW5tbS9tY2kuYywKCSAgZGxscy93aW5tbS9tY2lhbmltL21jaWFuaW0uYywgZGxscy93aW5tbS9tY2lhdmkvaW5mby5jLAoJICBkbGxzL3dpbm1tL21jaWF2aS9tY2lhdmkuYywgZGxscy93aW5tbS9tY2lhdmkvbWNpYXZpX3Jlcy5yYywKCSAgZGxscy93aW5tbS9tY2lhdmkvcHJpdmF0ZV9tY2lhdmkuaCwgZGxscy93aW5tbS9tY2lhdmkvd25kLmMsCgkgIGRsbHMvd2lubW0vbWNpY2RhL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL21jaWNkYS9tY2ljZGEuYywKCSAgZGxscy93aW5tbS9tY2lzZXEvbWNpbWlkaS5jLCBkbGxzL3dpbm1tL21lc3NhZ2UxNi5jLAoJICBkbGxzL3dpbm1tL21taW8uYywgZGxscy93aW5tbS9tbXN5c3RlbS5jLCBkbGxzL3dpbm1tL21tc3lzdGVtLnNwZWMsCgkgIGRsbHMvd2lubW0vd2luZW1tLmgsIGRsbHMvd2lubW0vd2lubW0uYywgZGxscy93aW5tbS93aW5tbS5zcGVjLAoJICBkbGxzL3dpbm1tL3dpbm1tX3Jlcy5yYywgZGxscy93aW5tbS9tY2l3YXZlL21jaXdhdmUuYywKCSAgaW5jbHVkZS9tbXN5c3RlbS5oOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CgktIHJld3JpdGUgTUNJIGludGVyZmFjZXMgYXMgVW5pY29kZSBpbnRlcmZhY2UgKGFzIGl0IHNob3VsZCBiZSkKCS0gbWFkZSBzb21lIHdpbm1tIEFQSXMgcmVseSBvbiB0aGUgVW5pY29kZSB2ZXJzaW9uIGZvciB0aGUgY29yZQoJICBpbXBsZW1lbnRhdGlvbiAoaW5zdGVhZCBvZiBBbnNpIGZsYXZvcikKCgkqIGRsbHMvcnNhZW5oL3JzYWVuaC5jLCBkbGxzL3JzYWVuaC90ZXN0cy9yc2FlbmguYzoKCU1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCUltcGxlbWVudGVkIENQR2V0UHJvdlBhcmFtJ3MgUFBfRU5VTUNPTlRBSU5FUlMgcGFyYW1ldGVyIHR5cGUuCglBZGRlZCBjb3JyZXNwb25kaW5nIHRlc3QuCglSZW1vdmVkIHNvbWUgdGFicyB0aGF0IHNsaXBwZWQgaW4gd2l0aCB0aGUgbGFzdCBwYXRjaC4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jLCBkbGxzL21zaS9mb3JtYXQuYzoKCVVscmljaCBDemVrYWxsYSA8dWxyaWNoQGNvZGV3ZWF2ZXJzLmNvbT4KCUhhbmRsZSAwIGxlbmd0aCBidWZmZXJzIGluIE1TSV9Gb3JtYXRSZWNvcmRXLgoJUmVtb3ZlIHVudXNlZCBidWZmZXIgaW4gZGVmb3JtYXRfc3RyaW5nLgoKCSogZGxscy9kYmdoZWxwL21zYy5jOiBNaWtlIEhlYXJuIDxtaEBjb2Rld2VhdmVycy5jb20+CglDaGFuZ2UgYW4gRVJSIHRvIGEgV0FSTi4KCgkqIHRvb2xzL3dpbmVidWlsZC9pbXBvcnQuYzogTWFyY3VzIE1laXNzbmVyIDxtZWlzc25lckBzdXNlLmRlPgoJUHV0IGdlbmVyYXRlZCBpbXBvcnQgdGFibGUgY29kZSBpbnRvIC50ZXh0IHNlZ21lbnQuCgoJKiBwcm9ncmFtcy9tc2lleGVjL21zaWV4ZWMuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJLSBRdW90ZSB0aGUgcGFyYW1ldGVyIHN0cmluZ3MgcGFzc2VkIHRvIE1zaUluc3RhbGxQcm9kdWN0LgoJLSBSZXR1cm4gdGhlIGVycm9yIGNvZGUgdGhhdCB0aGUgTXNpKiBmdW5jdGlvbiByZXR1cm5lZCB3aGVuIHdlIHF1aXQuCgoJKiBkbGxzL21zaS9jdXN0b20uYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCURvIG5vdCB0cmFjayB0aGUgdGVtcCBmaWxlcyBmb3IgY3VzdG9tIGFjdGlvbnMgYmFzZWQgb24gdGhlIG5hbWUgZnJvbQoJdGhlIHRhYmxlIGJlY2F1c2UgdGhlbiB3ZSBnZXQgY29uZmxpY3RzIGFuZCBmaWxlcyBub3QgdHJhY2tlZCBvcgoJY2xlYW5lZCB1cC4KCgkqIGRsbHMvZHNvdW5kL2J1ZmZlci5jLCBkbGxzL2Rzb3VuZC9wcmltYXJ5LmM6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJRmlsbCBuZXcgc29mdHdhcmUgYnVmZmVycyB3aXRoIHNpbGVuY2UuCgoJKiBkbGxzL3gxMWRydi93aW5kb3cuYywgZGxscy94MTFkcnYvd2lucG9zLmM6CglNYWtlIHRoZSB3aW4gZGF0YSBwb2ludGVyIG9ubHkgYXZhaWxhYmxlIGluIHRoZSB0aHJlYWQgdGhhdCBvd25zIHRoZQoJd2luZG93LgoKCSogdG9vbHMvY29uZmlnLmd1ZXNzLCB0b29scy9jb25maWcuc3ViOiBVcGdyYWRlIHRvIHRoZSBsYXRlc3QgdmVyc2lvbi4KCgkqIHByb2dyYW1zL21zaWV4ZWMvbXNpZXhlYy5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CgktIEZpeCBtc2lleGVjJ3MgY29tbWFuZCBsaW5lIHBhcnNpbmcuCgktIERvbid0IGFsbG9jYXRlIG1lbW9yeSBmb3IgZml4ZWQgc2l6ZSBzdHJ1Y3R1cmUuCgktIFJlbW92ZSBhIGZldyBub24tdGFiIGluZGVudHMsIHNpbmNlIHRoZSByZXN0IG9mIHRoZSBmaWxlIHVzZXMgdGFiYmVkCgkgIGluZGVudC4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IFJlZ2lzdGVyRXh0ZW5zaW9uSW5mbyBhbmQgUmVnaXN0ZXJNSU1FSW5mby4KCgkqIGRsbHMvbXNpL2N1c3RvbS5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglIYW5kbGUgYSBudW1iZXIgYXMgYSBwYXJhbWV0ZXIgZm9yIGN1c3RvbSBhY3Rpb24gMTkuCgoJKiBkbGxzL250ZGxsL2RpcmVjdG9yeS5jOgoJQ29uc2lkZXIgYW55IGNoYXJhY3RlciBhYm92ZSAweDdmIHRvIGJlIGludmFsaWQgaW4gYSBET1Mgc2hvcnQgbmFtZS4KCgkqIGRsbHMvaXRzcy9tb25pa2VyLmM6IFRvbSBGb2dhbCA8dGZvZ2FsQGNpc3VuaXgudW5oLmVkdT4KCVNpbXBsZSBhZ2dyZWdhdGlvbiBmaXguCgoJKiBkbGxzL21zaS9jb25kLnk6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglEbyBub3QgbGltaXQgcHJvcGVydGllcyB0byAyNTYgY2hhcmFjdGVycyB3aGVuIGV2YWx1YXRpbmcgdGhlbS4KCgkqIGRsbHMveDExZHJ2L2tleWJvYXJkLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGQgc3VwcG9ydCBmb3IgVHVya2lzaCAodHIpIFgxMSBrZXlib2FyZCBsYXlvdXQuCgoJKiBkbGxzL3NoZWxsMzIvY3BhbmVsZm9sZGVyLmM6IEdlIHZhbiBHZWxkb3JwIDxndmdAcmVhY3Rvcy5jb20+CgktIEZpeCBxdW90aW5nIG9mIC5jcGwgZmlsZW5hbWUuCgktIFVzZSAiY3Bsb3BlbiIgdmVyYiB0byBleGVjdXRlIC5jcGwgZmlsZXMuCgoJKiBkbGxzL21zaS9hY3Rpb24uYywgZGxscy9tc2kvY3VzdG9tLmMsIGRsbHMvbXNpL2RpYWxvZy5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJLSBhZGQgc3VwcG9ydCBmb3IgRWRpdCBib3hlcyBpbiBNU0kgZGlhbG9ncwoJLSBydW4gdGhlIG1lc3NhZ2UgbG9vcCB3aGVuIHdhaXRpbmcgZm9yIHRocmVhZHMgb3IgcHJvY2Vzc2VzCgoJKiBkbGxzL21zaS9tc2kuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IGEgbWVtb3J5IGxlYWsgaW4gTXNpQ29uZmlndXJlUHJvZHVjdEV4Vy4KCjIwMDUtMDItMDggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3dpbmUvd2luZWQzZF9nbC5oOgoJSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCUF2b2lkIGNvbXBpbGUgd2FybmluZ3MuCgoJKiB0b29scy93aWRsL3dyaXRlX21zZnQuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBzdXBwb3J0IGZvciBtb2R1bGVzLgoKCSogZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvY29tcG9ial9wcml2YXRlLmgsCgkgIGRsbHMvb2xlMzIvb2xlMzIuc3BlYywgZGxscy9vbGUzMi9yZWdzdnIuYywgZGxscy9vbGUzMi9zdHVibWFuYWdlci5jLAoJICBkbGxzL29sZTMyL3Rlc3RzL21hcnNoYWwuYzoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gSW1wbGVtZW50IENvRGlzY29ubmVjdE9iamVjdC4KCS0gQ2hhbmdlIENvTG9ja09iamVjdEV4dGVybmFsIHNvIHRoYXQgaXQgZG9lcyB0aGUgY29ycmVjdCBhY3Rpb24gbm93CgkgIGFuZCBlbGltaW5hdGUgYSBmYWlyIGZldyBsaW5lcyBvZiBub3cgcmVkdW5kYW50IGNvZGUuCgktIFJlbmFtZSBPTEUzMl9EbGx7UmVnaXN0ZXIsVW5yZWdpc3Rlcn1TZXJ2ZXIgdG8KCSAgRGxse1JlZ2lzdGVyLFVucmVnaXN0ZXJ9U2VydmVyLgoKCSogdG9vbHMvd2lkbC93cml0ZV9tc2Z0LmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglDaGVjayBpZiB3ZSd2ZSBhbHJlYWR5IGFkZGVkIHRoZSBwdHIgdG8gaWZhY2UgdHlwZWRlc2MgYmVmb3JlIGFkZGluZyBhCgluZXcgb25lLgoKCSogZGxscy91c2VyL3Rlc3RzL21zZy5jLCB3aW5kb3dzL3Njcm9sbC5jOgoJUmVpbiBLbGF6ZXMgPHdpam5Ad2FuYWRvby5ubD4KCVNjcm9sbFdpbmRvd0V4IHdoZW4gY2FsbGVkIHdpdGggdGhlIFNXX0VSQVNFIGZsYWcgZG9lcyBub3Qgc2VuZCBhCglXTV9FUkFTRUJLR05EIG1lc3NhZ2UsIGl0IGp1c3Qgc2V0cyB0aGUgZXJhc2UgZmxhZy4gV2l0aCBzb21lIHRlc3RzCgl0aGF0IHNob3cgdGhpcyBiZWhhdmlvci4KCgkqIGRsbHMvbXNpL2N1c3RvbS5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJTWFrZSBhIHRlbXAgZmlsZSBmb3IgZWFjaCBkbGwgc2F2ZWQgZm9yIGN1c3RvbSBhY3Rpb25zLiBUaGlzIHByZXZlbnRzCgluYW1lIGNvbGxpc2lvbnMgZnJvbSBjYXVzaW5nIGN1c3RvbSBhY3Rpb25zIHRvIGZhaWwuCgoJKiBkbGxzL21zaS9hY3Rpb24uYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBsb2dpYyB0byBiZSBhYmxlIHRvIHJlc29sdmUgdGhlIFNvdXJjZURpciBiYXNlZCBvbgoJQ3VycmVudFBhdGguIEFsc28gYWRkIGxvZ2ljIHRvIGdldCB0aGUgc291cmNlIGxvY2F0aW9ucyBvZiBhIGZpbGUgaWYKCWl0IGlzIG5vdCBpbiBhIGNhYmluZXQuCgoJKiBkbGxzL29sZTMyL21hcnNoYWwuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJTW92ZSBvYmplY3QtdG8tc3R1Yi1tYW5hZ2VyIG1hcHBpbmcgcnVsZSB0byByZWdpc3Rlcl9pZnN0dWIuCgoJKiBkbGxzL21zaS9jcmVhdGUuYywgZGxscy9tc2kvZGlzdGluY3QuYywgZGxscy9tc2kvaW5zZXJ0LmMsCgkgIGRsbHMvbXNpL21zaXByaXYuaCwgZGxscy9tc2kvbXNpcXVlcnkuYywgZGxscy9tc2kvb3JkZXIuYywKCSAgZGxscy9tc2kvc2VsZWN0LmMsIGRsbHMvbXNpL3RhYmxlLmMsIGRsbHMvbXNpL3VwZGF0ZS5jLAoJICBkbGxzL21zaS93aGVyZS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IE1zaU1vZGlmeVZpZXcgYW5kIE1zaVZpZXdHZXRDb2x1bW5JbmZvIHRvIHVzZSBNU0lSRUNPUkQqIG5vdAoJTVNJSEFORExFLgoKCSogZGxscy9xdWFydHovTWFrZWZpbGUuaW4sIGRsbHMvcXVhcnR6L2F2aXNwbGl0LmMsCgkgIGRsbHMvcXVhcnR6L3BhcnNlci5jLCBkbGxzL3F1YXJ0ei9wYXJzZXIuaDoKCUNocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUFkZGVkIHBhcnNlciB0ZW1wbGF0ZSBhbmQgbWFkZSBBVklTcGxpdHRlciB1c2UgaXQuCgoJKiBkbGxzL3ZlcnNpb24vdGVzdHMvaW5mby5jOgoJU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtTGluZS5jb20+CglGaXhlZCBHZXRGaWxlVmVyc2lvbkluZm9TaXplQSB0ZXN0cyBvbiBXaW45NS4KCgkqIHRvb2xzL3dpZGwvd3JpdGVfbXNmdC5jOiBWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglTdXBwb3J0IHNvbWUgbW9yZSBhdHRyaWJ1dGVzIGZvciBpbnRlcmZhY2UgcHJvcGVydGllcy4KCgkqIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jLCBkbGxzL3dpbmluZXQvdXJsY2FjaGUuYywKCSAgZGxscy93aW5pbmV0L3dpbmluZXQuc3BlYzoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJU3R1YiBpbXBsZW1lbnRhdGlvbnMgZm9yIERlbGV0ZVVybENhY2hlQ29udGFpbmVye0EsV30sCglDcmVhdGVDYWNoZUNvbnRhaW5lcntBLFd9LCBGaW5kRmlyc3RVcmxDYWNoZUNvbnRhaW5lcntBLFd9LAoJRmluZE5leHRVcmxDYWNoZUNvbnRhaW5lcntBLFd9LgoJSGFuZGxlIHRoZSBjYXNlIHdoZXJlIHRoZSBzdXBwbGllZCBidWZmZXIgc2l6ZSBpcyB0b28gc21hbGwgaW4KCUludGVybmV0UXVlcnlPcHRpb24uCgoJKiBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGUzMi9jb21wb2JqX3ByaXZhdGUuaCwKCSAgZGxscy9vbGUzMi9vbGUzMl9tYWluLmMsIGRsbHMvb2xlMzIvcnBjLmMsCgkgIGRsbHMvb2xlMzIvdGVzdHMvbWFyc2hhbC5jOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBTcGxpdCB1cCBhcGFydG1lbnQgY3JlYXRpb24gc28gdGhhdCB0aGUgbG9uZyBjb2RlIHBhdGhzIHRoYXQgZG9uJ3QKCSAgbmVlZCBsb2NraW5nIG5vIGxvbmdlciBoYXZlIGxvY2tpbmcuCgktIEFkZCBzcGVjaWFsIGNhc2VzIGZvciB0aGUgdGhyZWFkcyB0aGF0IGpvaW4gYXBhcnRtZW50cyBidXQgY2FuJ3QKCSAgaW5jcmVhc2UgdGhlIHJlZmNvdW50IG9mIHRoZSBhcGFydG1lbnQuCgktIEZyZWUgVExTIHN0b3JhZ2Ugb24gdGhyZWFkIGRlc3RydWN0aW9uIChpbmNsdWRpbmcgcmVsZWFzaW5nIHRoZQoJICBhcGFydG1lbnQgdGhlIHRocmVhZCBpcyBpbiwgaWYgYW55LCBhbmQgc28gbWFraW5nIGFub3RoZXIgdGVzdAoJICBwYXNzKS4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlYXV0LmM6IFBhdWwgVnJpZW5zIDxQYXVsLlZyaWVuc0B4czRhbGwubmw+CglBZGQgV2luWFAgdG8gT2FCdWlsZFZlcnNpb24uCgoJKiB0b29scy93aWRsL3dyaXRlX21zZnQuYzogVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJU3VwcG9ydCBBVFRSX1JFQURPTkxZIGZvciBpbnRlcmZhY2UgcHJvcGVydGllcy4KCgkqIGluY2x1ZGUvbXNpZGVmcy5oOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBZGQgdGhlIG1zaWRiQ3VzdG9tQWN0aW9uIGFuZCBtc2lkYkZlYXR1cmVBdHRyaWJ1dGVzIGVudW1lcmF0aW9ucy4KCgkqIGRsbHMvbXNpL2RpYWxvZy5jLCBkbGxzL21zaS9tc2lwcml2Lmg6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CgktIGZpeCB0aGUgZGlhbG9nIGZvbnQKCS0gYWxsb3cgd2FpdGluZyBvbiBhIGhhbmRsZSB3aGlsZSBydW5uaW5nIHRoZSBtZXNzYWdlIGxvb3AKCgkqIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL2NvbXBvYmpfcHJpdmF0ZS5oLAoJICBkbGxzL29sZTMyL21hcnNoYWwuYywgZGxscy9vbGUzMi9ycGMuYywgZGxscy9vbGUzMi9zdHVibWFuYWdlci5jOgoJTWlrZSBIZWFybiA8bWhAY29kZXdlYXZlcnMuY29tPgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBSZXdvcmsgUlBDIGRpc3BhdGNoIGxheWVyIHRvIGJlIHNpbXBsZXIgYW5kIG5vdCBnZXQgY29uZnVzZWQgYnkKCSAgc2VydmVyL2NsaWVudCBkdWFsaXR5LgoJLSBNYWtlIHRocmVhZHMgc2h1dCBkb3duIGF0IHRoZSByaWdodCB0aW1lIGFuZCBub3QgYWNjZXNzIGZyZWVkIG1lbW9yeQoJICBhZnRlciBhcGFydG1lbnQgZGVzdHJ1Y3Rpb24uCgktIFJlbmFtZSBzdHViX2Rpc3BhdGNoX3RocmVhZCB0byBjbGllbnRfZGlzcGF0Y2hfdGhyZWFkLgoJLSBBZGQgc29tZSBtb3JlIHRyYWNpbmcKCS0gQ2hlY2sgcmV0dXJuIHZhbHVlIG9mIFdhaXROYW1lZFBpcGUuCgktIENoYW5nZSBuYW1lZCBwaXBlIHRpbWVvdXRzIHRvIDAuNXMsIHdoaWNoIHNob3VsZCBiZSBlbm91Z2ggZm9yIGV2ZW4KCSAgdGhlIHNsb3dlc3QgbWFjaGluZXMuCgoJKiBzZXJ2ZXIvbmFtZWRfcGlwZS5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglTdXBwb3J0IFdhaXROYW1lZFBpcGUgdGltZW91dHMuCgoJKiBkbGxzL21zaS9jb25kLnk6IEp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCUlkZW50aWZpZXJzIGV2YWx1YXRlIHRvIHRydWUgaWYgdGhleSBhcmUgbm9uLWVtcHR5LCByZWdhcmRsZXNzIG9mCgl2YWx1ZS4KCgkqIGRsbHMvbnRkbGwvdGltZS5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglSZXBsYWNlIDEwMDAwMDAwIHdpdGggVElDS1NQRVJTRUMgdG8gbWFrZSBpdCBtb3JlIG9idmlvdXMgd2hhdCB0aGUKCWNvZGUgaXMgZG9pbmcuCgoJKiBNYWtlLnJ1bGVzLmluOiBWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglNYWtlIHRsYiBnZW5lcmF0aW9uIGZyb20gaWRsIGZpbGVzIGRlcGVuZGVudCBvbiB3aWRsLgoKCSogZG9jdW1lbnRhdGlvbi9mYXEuc2dtbDogU2NvdHQgUml0Y2hpZSA8c2NvdHRAb3Blbi12b3RlLm9yZz4KCVJlbW92ZSB0d28gYW5jaWVudCBGQVEgZW50cmllcyB0aGF0IGRpZCBtb3JlIGhhcm0gdGhhbiBnb29kLgoJUmVwbGFjZSBhIHJlZmVyZW5jZSB0byB3aW5lLmNvbmYgd2l0aCB+Ly53aW5lL2NvbmZpZy4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlYXV0LmM6IE1pa2UgSGVhcm4gPG1oQGNvZGV3ZWF2ZXJzLmNvbT4KCVJldHVybiBPTEUgYXV0b21hdGlvbiBidWlsZCB2YWx1ZSBhcyB3aW4yayBieSBkZWZhdWx0LgoKCSogZGxscy9tc2kvLmN2c2lnbm9yZSwgZGxscy9tc2kvTWFrZWZpbGUuaW4sIGRsbHMvbXNpL21zaS5jLAoJICBkbGxzL21zaS9tc2kucmMsIGRsbHMvbXNpL21zaV9Fbi5yYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCBhbmQgZG9jdW1lbnQgTXNpTG9hZFN0cmluZy4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jOiBNaWtlIEhlYXJuIDxtaEBjb2Rld2VhdmVycy5jb20+CglDb3JyZWN0bHkgZW5zdXJlIHByb3BlcnRpZXMgc2V0IGZyb20gcmVzb2x2ZWQgZGlyZWN0b3J5IHBhdGhzIGFyZQoJYmFja3NsYXNoIHRlcm1pbmF0ZWQuCgoJKiBkbGxzL2RpbnB1dC9kZXZpY2UuYzogQ2FybG9zIExvemFubyA8Y2xvemFub0BhbmRhZ28uY29tPgoJRml4IHJlZ3Jlc3Npb24gaW4gRmFsbG91dCBnYW1lLgoKCSogZGxscy9kM2Q4L2RldmljZS5jLCBkbGxzL3dpbmVkM2QvZGV2aWNlLmM6CglDYXJsb3MgTG96YW5vIDxjbG96YW5vQGFuZGFnby5jb20+CglDaGVjayB0aGF0IHBzdHJlYW0gaXMgbm90IG51bGwuCgoJKiBkbGxzL3dpbmluZXQvd2luaW5ldC5zcGVjOiBTdGV2ZW4gRWR3YXJkcyA8c3RldmVuX2VkNDE1M0B5YWhvby5jb20+CglDb3JyZWN0IHNwZWMgZW50cnkgZm9yIEZpbmRGaXJzdFVybENhY2hlRW50cnlFeC4KCgkqIHRvb2xzL3dpZGwvdHlwZWxpYi5jLCB0b29scy93aWRsL3R5cGVsaWJfc3RydWN0LmgsCgkgIHRvb2xzL3dpZGwvd3JpdGVfbXNmdC5jOgoJSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBWQVJJQU5UX0JPT0wuCglGaXggQ1VSUkVOQ1kgYWxpZ25tZW50LgoJQSBmdW5jdGlvbiB3aXRoIGEgW3JldHZhbF0gcGFyYW0gaGFzIGEgYml0IHNldCBpbiB0aGUgRktDQ0lDIGJpdGZpZWxkLgoJVHdvIGZ1bmN0aW9ucyB3aXRoIHRoZSBzYW1lIG5hbWUgc2hhcmUgdGhlIHNhbWUgaWQuCglUaGUgcGFyYW0gbmFtZXMgb2YgcHJvcHB1dCBhbmQgcHJvcHB1dHJlZiBmdW5jdGlvbnMgZG9uJ3QgZ28gaW50byB0aGUKCXR5cGVsaWIuCgoJKiBkbGxzL3VzZXIvdGVzdHMvc3lzcGFyYW1zLmM6IFBhdWwgVnJpZW5zIDxQYXVsLlZyaWVuc0B4czRhbGwubmw+CglFeHRyYSB0cmFjaW5nIGZvciBTUElfR0VUSUNPTlRJVExFV1JBUC4KCgkqIGRsbHMvbXNpL2FwcHNlYXJjaC5jOiBKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglJZiBhIGZ1bGwgcGF0aCBpc24ndCBzcGVjaWZpZWQsIHNlYXJjaCBhY3Jvc3MgYWxsIGZpeGVkIGRyaXZlcy4KCgkqIHByb2dyYW1zL3dpbmVjZmcvRW4ucmMsIHByb2dyYW1zL3dpbmVjZmcvZHJpdmV1aS5jOgoJS3JpcyBNYXJzaCA8bW9vZ21hbkBnbWFpbC5jb20+CglGaXhlZCB3aW5kb3cgaGVpZ2h0IHRvIHNob3cgYWxsIGRhdGEgcHJvcGVybHkuCglDbGVhbmVkIHVwIGRyaXZlcy0+YWR2YW5jZWQgaW5mb3JtYXRpb24gdmlzdWFscy4KCgkqIGRsbHMva2VybmVsL3N5bmMuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJQ29udmVydCBsYXN0IGVycm9yIGZyb20gTlRTVEFUVVMgdG8gYSBET1MgZXJyb3IgY29kZSBpbiBXYWl0TmFtZWRQaXBlCglhbmQgQ29ubmVjdE5hbWVkUGlwZS4KCgkqIHNlcnZlci93aW5kb3cuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJRG9uJ3Qgb3ZlcndyaXRlIGxhc3QgYnl0ZSBvZiB0aGUgd2luZG93IHN0cnVjdHVyZSBhcyB3ZSBtaWdodCBub3QgaGF2ZQoJYWxsb2NhdGVkIHRoZSBtZW1vcnkgZm9yIGl0IGlmIGV4dHJhYnl0ZXMgd2FzIDAuCgoyMDA1LTAyLTAzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGcuYywgZGxscy9jb21tZGxnL2ZpbGVkbGcxNi5jLAoJICBkbGxzL2NvbW1kbGcvZmlsZWRsZzMxLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnMzEuaDoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglNYWtlIEdldE9wZW5GaWxlTmFtZVcgd2l0aCBhbiBvbGQgc3R5bGUgb3BlbiBmaWxlIGRpYWxvZyB3b3JrIHdpdGggdGhlCglvcmlnaW5hbCBPUEVORklMRU5BTUVXIHN0cnVjdHVyZSwgbWFraW5nIHN1cmUgdGhhdCBhbGwgY2hhbmdlcyBhcmUKCXBhc3NlZCBiYWNrIHRvIHRoZSBjYWxsZXIuCgoJKiBkbGxzL3NobHdhcGkvdGVzdHMvc2hyZWcuYzogUGF1bCBWcmllbnMgPFBhdWwuVnJpZW5zQHhzNGFsbC5ubD4KCU1vcmUgdmVyYm9zaXR5IG9mIGVycm9ycy4KCgkqIGRsbHMvdXJsbW9uL3NlY19tZ3IuYywgZGxscy91cmxtb24vdW1vbi5jLCBkbGxzL3VybG1vbi91cmxtb25fbWFpbi5jLAoJICBkbGxzL3VybG1vbi91cmxtb25fbWFpbi5oOgoJSmFtZXMgSGF3a2lucyA8dHJ1aWtlbkBnbWFpbC5jb20+CglQcm9wZXJseSBpbXBsZW1lbnQgRGxsQ2FuVW5sb2FkTm93IHJlZiBjb3VudGluZy4KCgkqIGRsbHMva2VybmVsL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC9hdG9tLmMsIGRsbHMva2VybmVsL2F0b20xNi5jOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglNb3ZlZCAxNiBiaXQgYXRvbSBzdXBwb3J0IHRvIGRsbHMva2VybmVsL2F0b20xNi5jLgoKCSogZGxscy90dHlkcnYvd25kLmMsIGRsbHMvdXNlci9ob29rLmMsIGRsbHMvdXNlci9tZXNzYWdlLmMsCgkgIGRsbHMvdXNlci90ZXN0cy9tc2cuYywgZGxscy94MTFkcnYvd2luZG93LmMsCgkgIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwgc2VydmVyL2hvb2suYywgc2VydmVyL3Byb3RvY29sLmRlZiwKCSAgc2VydmVyL3F1ZXVlLmMsIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RyYWNlLmMsIHNlcnZlci91c2VyLmgsCgkgIHdpbmRvd3Mvbm9uY2xpZW50LmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkIHN1cHBvcnQgZm9yIHdpbmV2ZW50IGhvb2tzLgoKCSogZGxscy90dHlkcnYvd25kLmMsIGRsbHMveDExZHJ2L3dpbmRvdy5jLCBkbGxzL3gxMWRydi93aW5wb3MuYywKCSAgZGxscy94MTFkcnYveDExZHJ2LmgsIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwKCSAgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3RyYWNlLmMsIHNlcnZlci93aW5kb3cuYzoKCVByb3Blcmx5IGNvbXB1dGUgdGhlIGNsaWVudCBhcmVhIHZhbGlkIHJlY3RzIGFuZCBwYXNzIHRoZW0gdG8gdGhlCglzZXJ2ZXIgaW4gc2V0X3dpbmRvd19wb3MgdG8gYXZvaWQgaW52YWxpZGF0aW5nIGFyZWFzIHRoYXQgcmVtYWluCgl2YWxpZC4KCgkqIGRsbHMvc2V0dXBhcGkvZGV2aW5zdC5jLCBkbGxzL3NldHVwYXBpL3NldHVwYXBpX3ByaXZhdGUuaCwKCSAgZGxscy9zZXR1cGFwaS9zZXR1cGNhYi5jOgoJRXJpYyBLb2hsIDxlcmljLmtvaGxAdC1vbmxpbmUuZGU+CgktIEltcGxlbWVudCBTZXR1cERpQnVpbGRDbGFzc0luZm9MaXN0RXhBLAoJICBTZXR1cERpQ2xhc3NHdWlkc0Zyb21OYW1lRXhBLCBTZXR1cERpQ3JlYXRlRGV2aWNlSW5mb0xpc3RFeEEgYW5kCgkgIFNldHVwRGlPcGVuQ2xhc3NSZWdLZXlFeEEgdXNpbmcgTXVsdGlCeXRlVG9Vbmljb2RlLgoJLSBSZXRyaWV2ZSBPUyB2ZXJzaW9uIHVwb24gcHJvY2VzcyBhdHRhY2guCgoJKiB0b29scy93aWRsL3BhcnNlci5sLCB0b29scy93aWRsL3BhcnNlci55LCB0b29scy93aWRsL3R5cGVsaWIuYywKCSAgdG9vbHMvd2lkbC93aWRsdHlwZXMuaCwgdG9vbHMvd2lkbC93cml0ZV9tc2Z0LmM6CglIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJQ29jbGFzcyBzdXBwb3J0LgoKCSogZGxscy9zaGx3YXBpL3BhdGguYywgZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYywKCSAgZGxscy9zaGx3YXBpL3Rlc3RzL3BhdGguYzoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJSW1wbGVtZW50IGFuZCB0ZXN0IFBhdGhJc1ZhbGlkQ2hhcntBLFd9LgoKCSogc2VydmVyL25hbWVkX3BpcGUuYzoKCUZpeGVkIHJlZmNvdW50IGhhbmRsaW5nICh3YWl0aW5nIGNsaWVudHMgbXVzdCBub3QgaW5jcmVhc2UgdGhlCglyZWZjb3VudCBvZiB0aGUgcGlwZSkuCglDb252ZXJ0ZWQgbGlua2VkIGxpc3RzIHRvIHVzZSB0aGUgc3RhbmRhcmQgZnVuY3Rpb25zLgoJU21hbGwgY2xlYW51cHMuCgoJKiBzZXJ2ZXIvbWFpbi5jLCBzZXJ2ZXIvcmVxdWVzdC5jOgoJTWFrZSBzdXJlIGxlYWtlZCBvYmplY3RzIGFyZSBwcmludGVkIGV2ZW4gaWYgYSBmaWxlIGRlc2NyaXB0b3IgaXMKCXN0aWxsIG9wZW4uCgoJKiBzZXJ2ZXIvZmQuYzogRml4ZWQgcG90ZW50aWFsIGNyYXNoIGluIGZkX2R1bXAgZnVuY3Rpb24uCgoJKiBkbGxzL2tlcm5lbC9zeW5jLmM6IEFzeW5jIGNhbGxiYWNrIGZ1bmN0aW9uIG11c3QgYmUgc3RkY2FsbC4KCgkqIGRsbHMvbXNpL2RpYWxvZy5jLCBkbGxzL21zaS9tc2lxdWVyeS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJLSBpbXBsZW1lbnQgY2hlY2tib3hlcyBpbiBkaWFsb2dzCgktIHVzZSBUZXh0U3R5bGUgZW51bWVyYXRpb24gaW5zdGVhZCBvZiBudW1iZXJzCgktIGZpeCBNU0lfSXRlcmF0ZVJlY29yZHMgdG8gcmV0dXJuIHRoZSBjb3JyZWN0IGNvdW50CgoJKiBkbGxzL21zaS9hcHBzZWFyY2guYzogSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJU2ltcGxpZnkgQXBwU2VhcmNoIGVycm9yIGNoZWNraW5nLgoKCSogcHJvZ3JhbXMvd2luZWNmZy9Fbi5yYzogUGF1bCB2YW4gU2NoYXljayA8cG9sbGVrZUBnbWFpbC5jb20+CglDbGVhbiB1cCBhYm91dCBkaWFsb2cuIFJlbW92ZSBncm91cGJveCwgcG9zaXRpb24gbG9nbyBjb3JyZWN0bHkuCgoyMDA1LTAyLTAyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9vbGUzMi9tYXJzaGFsLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gUGFzcyB0aGUgb3JpZ2luYWwgSUlEIHRvIElNYXJzaGFsX1VubWFyc2hhbEludGVyZmFjZSBhbmQgcXVlcnkgZm9yCgkgIHRoZSByZXF1ZXN0ZWQgaW50ZXJmYWNlLgoJLSBVbm1hcnNoYWxpbmcgSUlEX05VTEwgbWVhbnMgdXNlIHRoZSBJSUQgdGhlIGludGVyZmFjZSB3YXMgb3JpZ2luYWxseQoJICBtYXJzaGFsZWQgd2l0aC4KCgkqIGRsbHMvdXNlci9saXN0Ym94LmMsIGRsbHMvdXNlci90ZXN0cy9saXN0Ym94LmM6CglMYXVyaSBUdWxtaW4gPGxhdXJpX0B1dC5lZT4KCUFkZCB0ZXN0IGZvciBMQl9TRUxJVEVNUkFOR0UgYW5kIG1ha2UgaXQgcGFzcy4KCgkqIGluY2x1ZGUvbW1zeXN0ZW0uaDogTGF1cmkgVHVsbWluIDxsYXVyaV9AdXQuZWU+CglBZGRlZCBzb21lIG1vcmUgZGVmaW5lcy4KCgkqIHRvb2xzL3dpZGwvcGFyc2VyLnksIHRvb2xzL3dpZGwvdHlwZWxpYi5jLCB0b29scy93aWRsL3R5cGVsaWIuaCwKCSAgdG9vbHMvd2lkbC93aWRsdHlwZXMuaCwgdG9vbHMvd2lkbC93cml0ZV9tc2Z0LmM6CglIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJQWRkIHN1cHBvcnQgZm9yIHR5cGVkZWZzLgoKCSogZGxscy9zZXR1cGFwaS9taXNjLmMsIGRsbHMvc2V0dXBhcGkvc2V0dXBhcGkuc3BlYywKCSAgaW5jbHVkZS9zZXR1cGFwaS5oOgoJRXJpYyBLb2hsIDxlcmljLmtvaGxAdC1vbmxpbmUuZGU+CgktIEltcGxlbWVudCBEb2VzVXNlckhhdmVQcml2aWxlZ2UsIEVuYWJsZVByaXZpbGVnZSwgSXNVc2VyQWRtaW4sCgkgIE11bHRpQnl0ZVRvVW5pY29kZSBhbmQgVW5pY29kZVRvTXVsdGlCeXRlLgoJLSBTb3J0IHByb3RvdHlwZXMgaW4gc2V0dXBhcGkuaCBhbmQgYSBmZXcgZnVuY3Rpb24gaW4gc3BlYy4KCgkqIGRsbHMvd2luaW5ldC9odHRwLmM6IERhdmlkIE1jQ3VsbG91Z2ggPGRhdmlkbUBzbmFwZ2Vhci5jb20+CglIVFRQX0h0dHBTZW5kUmVxdWVzdFcgd2FzIGdldHRpbmcgaW52b2tlZCB3aXRoIGEgbnVsbCB2ZXJiLCBkZWZhdWx0IHRvCgl0aGUgR0VUIG1ldGhvZC4KCgkqIGRsbHMvbXNpL2RpYWxvZy5jLCBkbGxzL21zaS9tc2lwcml2LmgsIGRsbHMvbXNpL21zaXF1ZXJ5LmMsCgkgIGRsbHMvbXNpL3BhY2thZ2UuYywgZGxscy9tc2kvcHJldmlldy5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWRkIG1vcmUgZGlhbG9nIGNvbnRyb2xzLCBkbyBzb21ldGhpbmcgd2hlbiB0aGV5J3JlIGNsaWNrZWQgb24uCgoJKiBpbmNsdWRlL21zaWRlZnMuaDogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWRkIHRoZSBtc2lkYlRleHRTdHlsZVN0eWxlQml0cyBlbnVtZXJhdGlvbi4KCgkqIGRsbHMvdXNlci90ZXN0cy93aW4uYywgaW5jbHVkZS93aW4uaCwgd2luZG93cy9tZGkuYywgd2luZG93cy93aW4uYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglVc2UgdGhlIGlkRmlyc3RDaGlsZCBzcGVjaWZpZWQgaW4gdGhlIE1ESUNsaWVudCdzIENMSUVOVENSRUFURVNUUlVDVAoJd2hlbiBjcmVhdGluZyBNREkgY2hpbGRyZW4uIEFkZCBhIHRlc3QgY2FzZSBmb3IgdGhlIGRlc2lyZWQKCWJlaGF2aW91ci4KCgkqIGRsbHMvZG1zY3JpcHQvZG1zY3JpcHRfbWFpbi5jLCBkbGxzL2Rtc2NyaXB0L2Rtc2NyaXB0X3ByaXZhdGUuaCwKCSAgZGxscy9kbXNjcmlwdC9zY3JpcHQuYywgZGxscy9kbXNjcmlwdC9zY3JpcHR0cmFjay5jOgoJSmFtZXMgSGF3a2lucyA8dHJ1aWtlbkBnbWFpbC5jb20+CglQcm9wZXJseSBpbXBsZW1lbnQgRGxsQ2FuVW5sb2FkIHJlZiBjb3VudGluZy4KCgkqIGRsbHMvZG1pbWUvYXVkaW9wYXRoLmMsIGRsbHMvZG1pbWUvZG1pbWVfbWFpbi5jLAoJICBkbGxzL2RtaW1lL2RtaW1lX3ByaXZhdGUuaCwgZGxscy9kbWltZS9ncmFwaC5jLAoJICBkbGxzL2RtaW1lL2x5cmljc3RyYWNrLmMsIGRsbHMvZG1pbWUvbWFya2VydHJhY2suYywKCSAgZGxscy9kbWltZS9wYXJhbWNvbnRyb2x0cmFjay5jLCBkbGxzL2RtaW1lL3BhdHRlcm50cmFjay5jLAoJICBkbGxzL2RtaW1lL3BlcmZvcm1hbmNlLmMsIGRsbHMvZG1pbWUvc2VnbWVudC5jLAoJICBkbGxzL2RtaW1lL3NlZ21lbnRzdGF0ZS5jLCBkbGxzL2RtaW1lL3NlZ3RyaWdnZXJ0cmFjay5jLAoJICBkbGxzL2RtaW1lL3NlcXRyYWNrLmMsIGRsbHMvZG1pbWUvc3lzZXh0cmFjay5jLAoJICBkbGxzL2RtaW1lL3RlbXBvdHJhY2suYywgZGxscy9kbWltZS90aW1lc2lndHJhY2suYywKCSAgZGxscy9kbWltZS90b29sLmMsIGRsbHMvZG1pbWUvd2F2ZXRyYWNrLmM6CglKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCVByb3Blcmx5IGltcGxlbWVudCBEbGxDYW5VbmxvYWROb3cgcmVmIGNvdW50aW5nLgoKCSogZGxscy9tc2kvZm9ybWF0LmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglDbGVhbnVwIHByb2Nlc3NpbmcgYSBiaXQgbW9yZS4KCUFsbG93IGZvciBuZXN0ZWQga2V5cyB0byB3b3JrIHByb3Blcmx5LgoKCSogZGxscy9tc2kvYXBwc2VhcmNoLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglGaXggYSBjb3B5IGFuZCBwYXN0ZSBlcnJvciwgY2hlY2sgZm9yIGEgbnVsbCB2YWx1ZSBhbmQgZGlzY2FyZAoJdW5uZWVkZWQgZXJyb3JzLgoKCSogZGxscy9tc2kvY29uZC55OiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglNc2lFdmFsdWF0ZUNvbmRpdGlvbiByZXR1cm5zIGFuIGVycm9yIHdoZW4gcGFzc2VkIE5VTEwgYXMgYQoJY29uZGl0aW9uLgoKCSogZGxscy9tc2kvYWN0aW9uLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglGaW5pc2ggdXAgdGhlIGZyYW1ld29yayBieSBzdHViYmluZyBvdXQgYWxsIHRoZSByZW1haW5pbmcgU3RhbmRhcmQKCWFjdGlvbnMuCglBIGZpeCB0byBkZWZvcm1hdF9zdHJpbmcgc28gaXQgb25seSByZXR1cm5zIGEgbnVsbCByZXR1cm4gaWYgeW91Cglwcm92aWRlZCBhIG51bGwgYnVmZmVyLgoKMjAwNS0wMi0wMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvdXNlci91c2VyMzIuc3BlYywgaW5jbHVkZS93aW4uaCwgd2luZG93cy93aW4uYzoKCVJlbW92ZWQgdGhlIG5vIGxvbmdlciB1c2VkIFdJTl9TZXRFeFN0eWxlIGZ1bmN0aW9uLgoKCSogZGxscy9jb21jdGwzMi9zdGF0dXMuYywgZGxscy91c2VyL2ZvY3VzLmMsIGRsbHMvdXNlci9tZW51LmMsCgkgIGRsbHMveDExZHJ2L3dpbmRvdy5jLCBkbGxzL3gxMWRydi93aW5wb3MuYywgZGxscy94MTFkcnYveDExZHJ2LmgsCgkgIGluY2x1ZGUvd2ludXNlci5oLCB3aW5kb3dzL3dpbnBvcy5jOgoJU3RvcmUgdGhlICJtYW5hZ2VkIiBmbGFnIGFzIGEgd2luZG93IHByb3BlcnR5IGluc3RlYWQgb2YgdGhlCglXaW5lLXNwZWNpZmljIFdTX0VYX01BTkFHRUQgc3R5bGUgYml0LgoKCSogZGxscy93aW5pbmV0L2Z0cC5jLCBkbGxzL3dpbmluZXQvaHR0cC5jLCBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYywKCSAgZGxscy93aW5pbmV0L3VybGNhY2hlLmMsIGRsbHMvd2luaW5ldC93aW5pbmV0LnNwZWMsCgkgIGluY2x1ZGUvd2luaW5ldC5oOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CgktIFN0dWIgaW1wbGVtZW50YXRpb25zIGZvciBGdHBHZXRGaWxlU2l6ZSwgRnRwQ29tbWFuZHtBLFd9LAoJICBIdHRwU2VuZFJlcXVlc3RFeFcsIEludGVybmV0R2V0TGFzdFJlc3BvbnNlSW5mb1csCgkgIEludGVybmV0Q29uZmlybVpvbmVDcm9zc2luZ3tBLFd9LCBJbnRlcm5ldERpYWx7QSxXfSwKCSAgSW50ZXJuZXRHb09ubGluZXtBLFd9LCBJbnRlcm5ldEhhbmdVcCwgQ3JlYXRlTUQ1U1NPSGFzaCwKCSAgSW50ZXJuZXRDbGVhckFsbFBlclNpdGVDb29raWVEZWNpc2lvbnMsCgkgIEludGVybmV0RW51bVBlclNpdGVDb29raWVEZWNpc2lvbntBLFd9LCBJbnRlcm5ldEdldENvb2tpZUV4e0EsV30sCgkgIEludGVybmV0R2V0UGVyU2l0ZUNvb2tpZURlY2lzaW9ue0EsV30sCgkgIEludGVybmV0U2V0UGVyU2l0ZUNvb2tpZURlY2lzaW9ue0EsV30sIEludGVybmV0U2V0Q29va2llRXh7QSxXfSwKCSAgUmVzdW1lU3VzcGVuZGVkRG93bmxvYWQsIFJldHJpZXZlVXJsQ2FjaGVFbnRyeUZpbGVXLAoJICBVbmxvY2tVcmxDYWNoZUVudHJ5RmlsZVcsIHtDcmVhdGUsRGVsZXRlfVVybENhY2hlRW50cnlXLAoJICBDb21taXRVcmxDYWNoZUVudHJ5VywgUmV0cmlldmVVcmxDYWNoZUVudHJ5U3RyZWFtVywKCSAgRmluZENsb3NlVXJsQ2FjaGUsIEZpbmRGaXJzdFVybENhY2hlRW50cnlFeHtBLFd9LAoJICBGaW5kRmlyc3RVcmxDYWNoZUdyb3VwLCBGaW5kTmV4dFVybENhY2hlRW50cnl7LEV4fXtBLFd9LAoJICBGaW5kTmV4dFVybENhY2hlR3JvdXAsIFNldFVybENhY2hlRW50cnlHcm91cHtBLFd9LAoJICB7R2V0LFNldH1VcmxDYWNoZUdyb3VwQXR0cmlidXRle0EsV30sIFNldFVybENhY2hlQ29uZmlnSW5mb3tBLFd9LgoJLSBTcGVjIGZpbGUgc3R1YnMgZm9yIG5ldyB1bmRvY3VtZW50ZWQgZnVuY3Rpb25zCgkgIEZvcmNlTmV4dXNMb29rdXB7LEV4V30sIEZ0cHtHZXQsUHV0fUZpbGVFeCwgSHR0cENoZWNrRGF2Q29tcGxpYW5jZSwKCSAgSW50ZXJuZXRBbGdJZFRvU3RyaW5ne0EsV30sIEludGVybmV0Rm9ydGV6emFDb21tYW5kLAoJICBJbnRlcm5ldEdldENlcnRCeVVSTEEsIEludGVybmV0UXVlcnlGb3J0ZXp6YVN0YXR1cywKCSAgSW50ZXJuZXRTZWN1cml0eVByb3RvY29sVG9TdHJpbmd7QSxXfSwgSW50ZXJuZXRTZXREaWFsU3RhdGV7QSxXfSwKCSAgSW50ZXJuZXRTaG93U2VjdXJpdHlJbmZvQnlVUkx7QSxXfSwgSXNVcmxDYWNoZUVudHJ5RXhwaXJlZHtBLFd9LAoJICBQcml2YWN5e0dldCxTZXR9Wm9uZVByZWZlcmVuY2VXLCBSZWdpc3RlclVybENhY2hlTm90aWZpY2F0aW9uLAoJICBVcmxab25lc0RldGFjaC4KCS0gVXNlIG1lbWNweSBpbnN0ZWFkIG9mIHN0cm5jcHkgaW4gSW50ZXJuZXRHZXRMYXN0UmVzcG9uc2VJbmZvQS4KCS0gQWRkIGFuZCBpbXByb3ZlIHNvbWUgdHJhY2VzLgoJLSBGaXggbXkgb3duIGNvZGluZyBzdHlsZSBpbiBJbnRlcm5ldFRpbWVUb1N5c3RlbVRpbWVXLgoJLSBGaXggYSBjb3VwbGUgb2Ygc2lnbmVkbmVzcyB3YXJuaW5ncy4KCgkqIHRvb2xzL3dpZGwvcGFyc2VyLmwsIHRvb2xzL3dpZGwvcGFyc2VyLnksCgkgIHRvb2xzL3dpZGwvdHlwZWxpYl9zdHJ1Y3QuaCwgdG9vbHMvd2lkbC93aWRsdHlwZXMuaCwKCSAgdG9vbHMvd2lkbC93cml0ZV9tc2Z0LmM6CglIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJQWRkIHN1cHBvcnQgZm9yIGRpc3BpbnRlcmZhY2VzIChzbGlnaHRseSBoYWNrZWQgYmVjYXVzZSB3ZSBmb3JjZSB0aGUKCWltcG9ydCBvZiBzdGRvbGUyLnRsYikuCglBZGQgcHJvcHB1dHJlZiBhdHRyaWJ1dGUuCgoJKiBkbGxzL3VzZXIvZGRlL2NsaWVudC5jLCBkbGxzL3VzZXIvZGRlL2RkZV9wcml2YXRlLmgsCgkgIGRsbHMvdXNlci9kZGUvbWlzYy5jLCBkbGxzL3VzZXIvZGRlL3NlcnZlci5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUhhbmRsZSBDQlJfQkxPQ0sgaW4gRVhFQ1VURSBhbmQgQURWSVNFIERERSB0cmFuc2FjdGlvbnMuCgoJKiBkbGxzL2Rzb3VuZC9kc291bmQuYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUZpeCBwcmltYXJ5IGJ1ZmZlciBtZW1vcnkgbGVhay4KCgkqIGRsbHMvdXNlci9zeXNwYXJhbXMuYzogSnVzdGluIENoZXZyaWVyIDxqY2hldnJpZXJAbmV4aWNvbS5uZXQ+CgktIFNQSV9HRVRXT1JLQVJFQTogUmVhZCB3b3JrIGFyZWEgaW5mb3JtYXRpb24gZnJvbSBzeXN0ZW0gbWV0cmljcwoJICBpbml0aWFsbHkgb25seSBhbmQgbm90IGZyb20gYSBXSU5FIHNwZWNpZmljIHJlZ2lzdHJ5IGVudHJ5LgoJLSBTUElfU0VUV09SS0FSRUE6IERvbid0IHNhdmUgd29yayBhcmVhIGluZm9ybWF0aW9uIHRvIHJlZ2lzdHJ5LgoKCSogZGxscy9tc2kvYWN0aW9uLmMsIGRsbHMvbXNpL2FjdGlvbi5oLCBkbGxzL21zaS9jdXN0b20uYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglDb250aW51ZWQgd29yayB0byBzaW1wbGlmeSB0aGUgUHJvY2Vzc0FjdGlvbiBjYWxsLCBhbHNvIHNwbGl0IGl0IGludG8KCWEgUHJvY2Vzc0FjdGlvbiBhbmQgUHJvY2Vzc1VJQWN0aW9uIGZvciBmdXR1cmUgZGlhbG9nIGJveCB3b3JrLgoJQWxzbyBmaXggYSBidWcgaW4gZGVmb3JtYXRfc3RyaW5nIHdoZXJlIGkgd2FzIG5vdCBmcmVlaW5nIHRoZSBjcmVhdGVkCglyZWNvcmQuCgoJKiBNYWtlLnJ1bGVzLmluOiBEb24ndCBjbGVhbiBhbGwgdGxiIGZpbGVzLCBvbmx5IHRoZSBvbmVzIHdlIGdlbmVyYXRlZC4KCgkqIGRsbHMvZHhkaWFnbi9jb250YWluZXIuYywgZGxscy9keGRpYWduL2R4ZGlhZ19tYWluLmMsCgkgIGRsbHMvZHhkaWFnbi9keGRpYWdfcHJpdmF0ZS5oLCBkbGxzL2R4ZGlhZ24vcHJvdmlkZXIuYzoKCUphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJUHJvcGVybHkgaW1wbGVtZW50IERsbENhblVubG9hZE5vdyByZWYgY291bnRpbmcuCgoJKiBkbGxzL21zaS9NYWtlZmlsZS5pbiwgZGxscy9tc2kvYWN0aW9uLmMsIGRsbHMvbXNpL2FjdGlvbi5oLAoJICBkbGxzL21zaS9hcHBzZWFyY2guYzoKCUp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCVBhcnRpYWxseSBpbXBsZW1lbnQgQXBwU2VhcmNoIGFjdGlvbi4KCgkqIGRsbHMvcXVhcnR6L01ha2VmaWxlLmluLCBkbGxzL3F1YXJ0ei9hY213cmFwcGVyLmMsCgkgIGRsbHMvcXVhcnR6L2F2aWRlYy5jLCBkbGxzL3F1YXJ0ei9tYWluLmMsCgkgIGRsbHMvcXVhcnR6L3F1YXJ0el9wcml2YXRlLmgsIGRsbHMvcXVhcnR6L3JlZ3N2ci5jOgoJQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJQWRkZWQgQUNNIFdyYXBwZXIgZmlsdGVyLgoJQ2xlYW5lZCB1cCBBVklEZWMuCgoJKiBkbGxzL2Rzd2F2ZS9kc3dhdmUuYywgZGxscy9kc3dhdmUvZHN3YXZlX21haW4uYywKCSAgZGxscy9kc3dhdmUvZHN3YXZlX3ByaXZhdGUuaDoKCUphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJUHJvcGVybHkgaW1wbGVtZW50IERsbENhblVubG9hZE5vdyByZWYgY291bnRpbmcuCgoJKiBkb2N1bWVudGF0aW9uL2ZvbnRzLnNnbWw6IFRvbSBXaWNrbGluZSA8dHdpY2tsaW5lQHNpdGVzdGFyLm5ldD4KCUZpeCBhIGJyb2tlbiBsaW5rLgoKCSogZGxscy9tc2kvbXNpLnNwZWMsIGRsbHMvbXNpL3N1bWluZm8uYywgaW5jbHVkZS9tc2kuaDoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglBZGRlZCBzb21lIG1vcmUgc3VtaW5mbyBzdHVicy4KCgkqIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL21hcnNoYWwuYywgZGxscy9vbGUzMi9vbGUzMl9tYWluLmgsCgkgIGRsbHMvb2xlMzIvdGVzdHMvbWFyc2hhbC5jOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBBZGQgY29kZSBmb3IgZGVzdHJveWluZyB0aGUgdGhyZWFkLWxvY2FsIHN0b3JhZ2UgZGF0YSwgYnV0IGRvbid0IHVzZQoJICBpdCB5ZXQuCgktIERvbid0IHJlbGVhc2UgYXBhcnRtZW50IG9uIGNoYW5naW5nIG1vZGVzIGJlY2F1c2Ugd2UgZGlkbid0IGFkZCBhCgkgIHJlZmVyZW5jZSBhbnl3aGVyZS4KCS0gUXVpZXRlbiB0aGUgUlBDX0VfRElTQ09OTkVDVEVEIGVycm9yIG1lc3NhZ2UgYXMgaXQgaXMgYW4gZXhwZWN0ZWQKCSAgcmV0dXJuIGNvZGUuCgktIFRyZWF0IElJRF9OVUxMIHRoZSBzYW1lIGFzIElJRF9JVW5rbm93bi4KCS0gTWFrZSB0ZXN0cyBjb21waWxlIG9uIFdpbjk1IGFnYWluLgoJLSBGaXggY29weStwYXN0ZSBlcnJvciB3aGVyZSB0aGUgdGVzdCBmYWlsdXJlIHNob3VsZCBiZSBmcm9tIHRoZQoJICBDb1VubWFyc2hhbEludGVyZmFjZSBmdW5jdGlvbi4KCjIwMDUtMDEtMzEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL21zaS9mb3JtYXQuYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUEgcmV3b3JraW5nIG9mIGZvcm1hdC5jIHRvIHJlbW92ZSB0aGUgcmVjdXJzaW9uLCBjbGVhbiB0aGluZ3MgdXAgYW5kCglzdGFiaWxpemUgYmVoYXZpb3IgdG8gbWF0Y2ggd2luZG93cy4KCgkqIGRsbHMvZG1iYW5kL2JhbmQuYywgZGxscy9kbWJhbmQvYmFuZHRyYWNrLmMsCgkgIGRsbHMvZG1iYW5kL2RtYmFuZF9tYWluLmMsIGRsbHMvZG1iYW5kL2RtYmFuZF9wcml2YXRlLmgsCgkgIGRsbHMvZG1zeW50aC9kbXN5bnRoX21haW4uYywgZGxscy9kbXN5bnRoL2Rtc3ludGhfcHJpdmF0ZS5oLAoJICBkbGxzL2Rtc3ludGgvc3ludGguYywgZGxscy9kbXN5bnRoL3N5bnRoc2luay5jOgoJSmFtZXMgSGF3a2lucyA8dHJ1aWtlbkBnbWFpbC5jb20+CglQcm9wZXJseSBpbXBsZW1lbnQgRGxsQ2FuVW5sb2FkTm93IHJlZiBjb3VudGluZy4KCgkqIGRsbHMvdXNlci91c2VyMzIuc3BlYywgaW5jbHVkZS93aW4uaCwgd2luZG93cy93aW4uYzoKCVdJTl9MaXN0UGFyZW50cyBubyBsb25nZXIgbmVlZHMgdG8gYmUgZXhwb3J0ZWQsIG1ha2UgaXQgc3RhdGljLgoKCSogZGxscy9kM2Q4L2RpcmVjdHguYywgZGxscy93aW5lZDNkL2RpcmVjdHguYywgZGxscy94MTFkcnYvbW91c2UuYywKCSAgZGxscy94MTFkcnYvd2luZG93LmMsIGRsbHMveDExZHJ2L3dpbnBvcy5jLCBkbGxzL3gxMWRydi94MTFkcnYuaDoKCU9ubHkgY3JlYXRlIGFuIFggd2luZG93IGZvciB0b3AtbGV2ZWwgd2luZG93cywgbm90IGZvciBjaGlsZCB3aW5kb3dzLgoJR2V0IHJpZCBvZiB0aGUgWCBjbGllbnQgd2luZG93IHRvbywgaXQncyBubyBsb25nZXIgbmVlZGVkLgoKCSogZGxscy9kYmdoZWxwL2VsZl9tb2R1bGUuYzogU2lsZW5jZSBhIG5vaXN5IEZJWE1FLgoKCSogdG9vbHMvd2lkbC93cml0ZV9tc2Z0LmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglEeW5hbWljYWxseSBhbGxvY2F0ZSB0aGUgdHlwZSBkYXRhIHN0b3JhZ2UuCglTcGxpdCB0aGUgZnVuY3Rpb24gYW5kIHZhcmlhYmxlIHR5cGUgZGF0YSBpbnRvIHR3byAtIHRoaXMgd2lsbCBiZQoJbmVlZGVkIGZvciBkaXNwaW50ZXJmYWNlcy4KCgkqIGRsbHMvcXVhcnR6L01ha2VmaWxlLmluLCBkbGxzL3F1YXJ0ei9hdmlkZWMuYywgZGxscy9xdWFydHovcmVnc3ZyLmMsCgkgIGRsbHMvcXVhcnR6L3RyYW5zZm9ybS5jLCBkbGxzL3F1YXJ0ei90cmFuc2Zvcm0uaDoKCUNocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUFkZGVkIHRyYW5zZm9ybSBmaWx0ZXIgdGVtcGxhdGUgYW5kIG1hZGUgQVZJRGVjIHVzZSBpdC4KCUZpeGVkIG1lbW9yeSBsZWFrIGluIHJlZ2lzdGVyX2ZpbHRlcnMgZnVuY3Rpb24uCgoJKiBkbGxzL2tlcm5lbC9jaGFuZ2UuYywgZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYzoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJU3R1YiBpbXBsZW1lbnRhdGlvbiBmb3IgUmVhZERpcmVjdG9yeUNoYW5nZXNXLgoKCSogZGxscy9tc2kvYWN0aW9uLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglFbGltaW5hdGUgdGhlIGdpYW50IGlmLi4gZWxzZSBpZiBibG9jayBmcm9tIEFDVElPTl9Qcm9jZXNzQWN0aW9uIGluCglmYXZvciBvZiBhIHRhYmxlIG9mIGhhbmRsZXJzLgoJUmV0dXJuIGNvZGUgb2YgdGhlIGluc3RhbGwgc2hvdWxkIG5vdCBkZXBlbmQgb24gdGhlIHJldHVybiBjb2RlIG9mIHRoZQoJZmluYWwgYWN0aW9uLgoJVXBkYXRlIGNvbXBvbmVudCBpbnN0YWxsZWQgc3RhdGVzIGFzIHRoZXkgYXJlIGluc3RhbGxlZCBzbyB0aGF0Cgljb25kaXRpb25zIGJhc2VkIG9uIGNvbXBvbmVudCBzdGF0ZXMgYXJlIGF0IGxlYXN0IGEgbGl0dGxlIG1vcmUKCWNvcnJlY3QuCglBZGQgaWNvbiBhbmQgYXJndW1lbnQgd2hlbiByZWdlc3RlcmluZyBjbHNpZHMuCglBZGQgYSBzdHViIGZvciBSZXNvbHZlU291cmNlIGJlY2F1c2Ugd2UgZG8gdGhhdCB3b3JrIGp1c3Qgbm90IGluCglSZXNvbHZlU291cmNlIGxpa2Ugd2Ugc2hvdWxkLgoJV2hlbiBxdWVyaW5nIGEgQ29tcG9uZW50IHN0YXRlIHJldHVybiB0aGUgY29ycmVjdCBzdGF0ZS4KCgkqIHByb2dyYW1zL3dpbmVkYmcvaW5mby5jOiBNaWtlIEhlYXJuIDxtaEBjb2Rld2VhdmVycy5jb20+CglTaG93IHdpbmRvdyBvd25lciB0aHJlYWQgaW4gd2luZWRiZy4KCgkqIGRsbHMvZGJnaGVscC9zeW1ib2wuYywgaW5jbHVkZS9kYmdoZWxwLmgsIHByb2dyYW1zL3dpbmVkYmcvYnJlYWsuYywKCSAgcHJvZ3JhbXMvd2luZWRiZy9kYmcueSwgcHJvZ3JhbXMvd2luZWRiZy9kZWJ1Zy5sLAoJICBwcm9ncmFtcy93aW5lZGJnL21lbW9yeS5jLCBwcm9ncmFtcy93aW5lZGJnL3NvdXJjZS5jLAoJICBwcm9ncmFtcy93aW5lZGJnL3N0YWNrLmMsIHByb2dyYW1zL3dpbmVkYmcvc3ltYm9sLmMsCgkgIHByb2dyYW1zL3dpbmVkYmcvdHlwZXMuYzoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJQ2xlYW51cCBvZiBkYmdoZWxwLmggKGFuZCBhIGNvdXBsZSBvZiBkZWZpbml0aW9uIGZpeGVzKS4gVGhlCglkaXNwbGFjZW1lbnRzIChpbiBtb3N0IG9mIHRoZSBmdW5jdGlvbnMpIGFyZSBub3Qgb3B0aW9uYWwuCgoJKiBkbGxzL29sZWF1dDMyL29sZWZvbnQuYywgZGxscy9vbGVhdXQzMi90eXBlbGliLmM6CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglSZW1vdmUgbWVzc2FnZSB0ZWxsaW5nIHVzZXJzIHRvIGNvcHkgbmF0aXZlIHN0ZG9sZTMyLnRsYiBvdmVyIGFzIHdlCglub3cgcHJvdmlkZSBpdC4KCUJldHRlciB0cmFjZSBpbiBMb2FkVHlwZUxpYi4KCUNoYW5nZSBkZWJ1ZyBtZXNzYWdlcyB0eXBlIHRvIHJlZmxlY3Qgd2UgcHJvdmlkZSBzdGRvbGUzMi50bGIuCgoJKiBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL21zaWRlZnMuaDoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCB0aGUgbXNpZGVmcy5oIGhlYWRlci4KCgkqIGRvY3VtZW50YXRpb24vZmFxLnNnbWwsIGRvY3VtZW50YXRpb24vaW50cm9kdWN0aW9uLnNnbWw6CglUb20gV2lja2xpbmUgPHR3aWNrbGluZUBzaXRlc3Rhci5uZXQ+CglSZW1vdmUgb3V0ZGF0ZWQgaW5mb3JtYXRpb24gZnJvbSB0aGUgaW50cm9kdWN0aW9uIHBhZ2UgYW5kIHRoZSBGQVEuCgoJKiBpbmNsdWRlL2R4ZGlhZy5oOiBUcm95IFJvbGxvIDx3aW5lQHRyb3kucm9sbG8ubmFtZT4KCUNvcnJlY3QgZXJyb3JzIGluIHRoZSBtYWNyb3MgZm9yIHR3byBEeERpYWcgbWV0aG9kIGNhbGxzLgoKCSogZGxscy9vcGVuZ2wzMi93Z2xfZXh0LmM6IFRyb3kgUm9sbG8gPHdpbmVAdHJveS5yb2xsby5uYW1lPgoJQWRkIHN0dWJzIGZvciB3Z2xTd2FwSW50ZXJ2YWxFWFQgJiB3Z2xHZXRTd2FwSW50ZXJ2YWxFWFQuCgoJKiBkbGxzL29sZWF1dDMyL3NhZmVhcnJheS5jLCBkbGxzL29sZWF1dDMyL3Rlc3RzL3NhZmVhcnJheS5jOgoJUmVpbiBLbGF6ZXMgPHdpam5Ad2FuYWRvby5ubD4KCVNhZmVBcnJheURlc3Ryb3koKSByZXR1cm5zIHN1Y2Nlc3Mgd2hlbiBjYWxsZWQgd2l0aCBhIE5VTEwKCXBvaW50ZXIuIEFkZGVkIHRvIHRoZSB0ZXN0IGNhc2VzLgoKCSogZGxscy9tc2kvcmVjb3JkLmMsIGRsbHMvbXNpL3Rlc3RzL3JlY29yZC5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCVNldHRpbmcgYSByZWNvcmQgdG8gYW4gZW1wdHkgc3RyaW5nIGlzIHRoZSBzYW1lIGFzIG1ha2luZyBpdCBudWxsLgoKCSogd2luZG93cy9kY2UuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVJlcGxhY2UgYSBEUFJJTlRGIHdpdGggVFJBQ0UuCgoJKiB0b29scy93aWRsL3dyaXRlX21zZnQuYzogVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJQ2hlY2sgdGhhdCB0aGVyZSBhcmUgc29tZSBtZXRob2RzIHRvIGl0ZXJhdGUgdGhyb3VnaCBiZWZvcmUgaXRlcmF0aW5nCgl0aHJvdWdoIHRoZW0uCgoJKiBkbGxzL3NobHdhcGkvdGVzdHMvc2hyZWcuYzogUGF1bCBWcmllbnMgPFBhdWwuVnJpZW5zQHhzNGFsbC5ubD4KCS0gbmV3IHRlc3QKCS0gY2hhbmdlZCB0ZXN0IHRvIHJlZmxlY3Qgd2luZG93cyByZXN1bHRzCgoJKiBkbGxzL29sZTMyL3Rlc3RzL21hcnNoYWwuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlIHRlc3QgdGhhdCBmYWlscyBvbiBXaW45OCBhbmQgaXMgbm90IHVzZWZ1bC4KCgkqIGRsbHMvZGJnaGVscC9zdGFicy5jOiBFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCVZhcmlvdXMgZml4ZXMgZm9yIEMrKyBjbGFzcyBwYXJzaW5nIChuZXN0aW5nLCB0ZW1wbGF0ZXMpIChmcm9tIHRlc3QKCWNhc2VzIHByb3ZpZGVkIGJ5IE1pY2hhZWwgTGluKS4KCgkqIGRsbHMvcnNhZW5oL3JzYWVuaC5jLCBkbGxzL3JzYWVuaC90ZXN0cy9yc2FlbmguYzoKCU1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCU1vdmVkIFBLQ1MxICMyIHVuLS9wYWRkaW5nIGZyb20gSW1wb3J0LS9FeHBvcnRLZXkgdG8gaGVscGVyCglmdW5jdGlvbnMuCglTdXBwb3J0IFJTQSBlbi0vZGVjcnlwdGlvbiB2aWEgQ1BFbmNyeXB0IGFuZCBDUERlY3J5cHQuCglBZGRlZCB0ZXN0IGNhc2UgZm9yIFJTQSBlbi0vZGVjcnlwdGlvbi4KCjIwMDUtMDEtMjggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3gxMWRydi9kZXNrdG9wLmMsIGRsbHMveDExZHJ2L2V2ZW50LmMsIGRsbHMveDExZHJ2L3dpbmRvdy5jLAoJICBkbGxzL3gxMWRydi93aW5wb3MuYywgZGxscy94MTFkcnYveDExZHJ2LmgsIGluY2x1ZGUvd2luLmg6CglVc2UgYW4gWCBjb250ZXh0IHRvIGFzc29jaWF0ZWQgdGhlIHgxMWRydiBwcml2YXRlIHdpbmRvdyBkYXRhIHRvIGEKCXdpbmRvdyBoYW5kbGUgaW5zdGVhZCBvZiBhY2Nlc3NpbmcgdGhlIFdORCBzdHJ1Y3R1cmUgZGlyZWN0bHkuCgoJKiBkbGxzL3VzZXIvcGFpbnRpbmcuYzoKCUZpeGVkIGJ1ZyB0aGF0IGNhdXNlZCB0aGUgd2hvbGUgd2luZG93IHRvIGJlIHJlcGFpbnRlZCBieSBSZWRyYXdXaW5kb3cKCXdoZW4gdGhlIHBhc3NlZCByZWdpb24gd2FzIGVtcHR5LgoKCSogZGxscy9kc291bmQvY2FwdHVyZS5jLCBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jLAoJICBkbGxzL2Rzb3VuZC9wcm9wc2V0LmMsIGRsbHMvd2lubW0vd2luZWFsc2EvYXVkaW8uYywKCSAgZGxscy93aW5tbS93aW5lYXJ0cy9hdWRpby5jLCBkbGxzL3dpbm1tL3dpbmVhdWRpb2lvL2F1ZGlvLmMsCgkgIGRsbHMvd2lubW0vd2luZWphY2svYXVkaW8uYywgZGxscy93aW5tbS93aW5lbmFzL2F1ZGlvLmMsCgkgIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jLCBpbmNsdWRlL2RzZHJpdmVyLmg6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJRml4IHN0cnVjdHVyZSBtZW1iZXIgbmFtZSB0byBtYXRjaCB3aW5kb3dzIGhlYWRlcnMgYW5kIGZpeCB1cCBhbGwKCXVzZXMuCglOYW1lbGVzcyBzdHJ1Y3QgZml4IGZvciBkc291bmQvcHJvcHNldC5jIHRvIGNvbXBpbGUgb24gYm90aCB3aW5kb3dzCglhbmQgd2luZS4KCgkqIGRsbHMvb2xlMzIvY29tcG9iai5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglSZWxlYXNlIHRoZSBjbGllbnQgc2VjdXJpdHkgb2JqZWN0cyB3aGVuIG5vIGxvbmdlciBuZWVkZWQgKHJlcG9ydGVkIGJ5CglNaWtlIE1jQ29ybWFjaykuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCVRob21hcyBXZWlkZW5tdWVsbGVyIDx3aW5lLXBhdGNoZXNAcmVhY3Rzb2Z0LmNvbT4KCVdoZW4gYSB0b29sYmFyIGRvZXNuJ3QgaGF2ZSB0aGUgVEJTVFlMRV9GTEFUIHN0eWxlIHJlZHJhd2luZyB0aGUKCWJ1dHRvbnMgd2hlbiBtb3ZpbmcgdGhlIG1vdXNlIGlzIG5vdCBuZWNlc3NhcnkuCgoJKiBNYWtlLnJ1bGVzLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9NYWtlZmlsZS5pbiwKCSAgZGxscy9zdGRvbGUzMi50bGIvLmN2c2lnbm9yZSwgZGxscy9zdGRvbGUzMi50bGIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvc3Rkb2xlMzIudGxiL3JzcmMucmMsIGRsbHMvc3Rkb2xlMzIudGxiL3N0ZF9vbGVfdjEuaWRsLAoJICBkbGxzL3N0ZG9sZTMyLnRsYi9zdGRvbGUzMi50bGIuc3BlYzoKCUh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglBZGRlZCBzdGRvbGUzMi50bGIuCgoJKiBkbGxzL2QzZDkvZDNkOV9wcml2YXRlLmgsIGRsbHMvZDNkOS9kZXZpY2UuYywgZGxscy9kM2Q5L2RpcmVjdHguYywKCSAgZGxscy9kM2Q5L3F1ZXJ5LmMsIGRsbHMvZDNkOS90ZXh0dXJlLmMsCgkgIGRsbHMvZDNkOS92ZXJ0ZXhkZWNsYXJhdGlvbi5jOgoJUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CgktIGFkZCB2ZXJ0ZXggRGVjbGFyYXRpb24gc3VwcG9ydCAodXNpbmcgd2luZWQzZCkKCS0gbWluaW1hbCBpbXBsIGZvciBTZXRSZW5kZXJUYXJnZXQgYW5kIENyZWF0ZVF1ZXJ5IChuZWVkZWQgdG8gZ2V0CgkgIHNvbWUgc2FtcGxlcyB3b3JraW5nKQoJLSByZW1vdmUgbm8gbG9uZ2VyIG5lZWRlZCAjdW5kZWYgR0xfVkVSU0lPTl8xXzQKCgkqIGRsbHMvY29tbWRsZy9jZGxnMzIuYywgZGxscy9rZXJuZWwvdGVzdHMvY29tbS5jLAoJICBkbGxzL2tlcm5lbC90ZXN0cy9jb25zb2xlLmMsIGRsbHMvbHpleHBhbmQvdGVzdHMvbHpleHBhbmRfbWFpbi5jLAoJICBsb2FkZXIvcHJlbG9hZGVyLmM6CglS6W1pIEFzc2FpbGx5IDxyZW1pLmFzc2FpbGx5QGZyZWUuZnI+CgljaGFyIC0+IGNvbnN0IGNoYXIgZml4ZXMuCgoJKiB0b29scy93cmMvcGFyc2VyLnk6CglBdm9pZCBhc3NlcnRpb24gZmFpbHVyZSB3aGVuIGxvYWRpbmcgYW4gZW1wdHkgZGF0YSBmaWxlLgoKCSogdG9vbHMvd2lkbC90eXBlbGliLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglTdHJ1Y3RzIHdpdGggcHRycyBhcmUgYWxzbyBWVF9VU0VSREVGSU5FRC4KCgkqIGRsbHMvbXNpL01ha2VmaWxlLmluLCBkbGxzL21zaS9kaWFsb2cuYywgZGxscy9tc2kvbXNpLmMsCgkgIGRsbHMvbXNpL21zaXByaXYuaCwgZGxscy9tc2kvcGFja2FnZS5jLCBkbGxzL21zaS9wcmV2aWV3LmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgTXNpUHJldmlld0RpYWxvZy4KCgkqIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL21hcnNoYWwuYywgZGxscy9vbGUzMi9ycGMuYywKCSAgZGxscy9vbGUzMi90ZXN0cy9tYXJzaGFsLmMsIGRsbHMvb2xlMzIvdGVzdHMvbW9uaWtlci5jOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBNb3JlIHRlc3RzLgoJLSBDaGFuZ2UgcmV0dXJuIGNvZGUgb2YgQ29HZXRQU0Nsc2lkIHRvIG1hdGNoIHRlc3QgcmVzdWx0LgoJLSBEbyBhIHNsaWdodCBoYWNrIHRvIG1ha2UgSVJlbVVua25vd24gcHJveGllcyBiZSBhZGRlZCBhZnRlciB0aGUKCSAgcHJveHkgdGhhdCB1c2VzIHRoZW0gdG8gc3RvcCB0aGVtIGJlaW5nIHVzZWQgYWZ0ZXIgdGhleSBhcmUKCSAgZGVzdHJveWVkLgoJLSBGaXggbXVsdGlwbGUgbG9jYWwgc2VydmVyIGNvbm5lY3Rpb25zLgoKCSogZGxscy9udGRsbC9udC5jLCBpbmNsdWRlL3dpbnRlcm5sLmg6IFJlaW4gS2xhemVzIDx3aWpuQHdhbmFkb28ubmw+CglJbiBOdFF1ZXJ5U3lzdGVtSW5mb3JtYXRpb24sIGhhbmRsZSByZXF1ZXN0IGZvciBpbmZvcm1hdGlvbiBjbGFzcyAxLAoJbm93IG5hbWVkIFN5c3RlbUNwdUluZm9ybWF0aW9uLiBSZXR1cm4gc29tZSBkdW1teSBkYXRhIGZvciBub3cuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9zZW5zYXBpLy5jdnNpZ25vcmUsCgkgIGRsbHMvc2Vuc2FwaS9NYWtlZmlsZS5pbiwgZGxscy9zZW5zYXBpL3NlbnNhcGkuYywKCSAgZGxscy9zZW5zYXBpL3NlbnNhcGkuc3BlYywgaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9zZW5zYXBpLmg6CglTdGV2ZW4gRWR3YXJkcyA8c3RldmVuQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBhIHN0dWIgZGxsIGZvciB0aGUgU3lzdGVtIEV2ZW50IE5vdGlmaWNhdGlvbiBTZXJ2aWNlLgoKCSogdG9vbHMvd2luZWdjYy9NYWtlZmlsZS5pbiwgdG9vbHMvd2luZWdjYy93aW5lZ2NjLm1hbjoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglBZGRlZCBhIG5ldyBtYW4gcGFnZSBmb3Igd2luZWdjYy4KCgkqIGRsbHMvd2luZWQzZC92ZXJ0ZXhkZWNsYXJhdGlvbi5jOgoJUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CgktIGNvbnZlcnQgRDNEOCBWZXJ0ZXhEZWNsIHRvIEQzRDkgZm9ybWF0IChEM0RWRVJURVhFTEVNRU5UOSB2ZWN0b3IpCgkgIHdoaWxlIHBhcnNpbmcKCS0gZGlzcGxheSByZXN1bHQgb24gdHJhY2VzCgoJKiBkbGxzL3dpbmVwcy90cnVldHlwZS5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJQWRkIGEgZmV3IG1pc3NpbmcgUmVnQ2xvc2VLZXkgY2FsbHMuCgoJKiBkbGxzL3VzZXIvbHN0ci5jOiBUb255IExhbWJyZWd0cyA8dG9ueV9sYW1icmVndHNAdGVsdXNwbGFuZXQubmV0PgoJRml4IGJ1ZyBpbiBDaGFyUHJldkV4QSgpLgoKCSogZGxscy9yc2FlbmgvdGVzdHMvcnNhZW5oLmM6IE1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCUFkZGVkIGEgdGVzdCBjYXNlIGZvciBoYXNoaW5nIHdpdGggc2NoYW5uZWwgbWFjIGtleXMuCgoJKiBkbGxzL2tlcm5lbC9jcHUuYzogT2xpdmVyIFN0aWViZXIgPG9saXZlcl9zdGllYmVyQHlhaG9vLmNvLnVrPgoJRmlsbCBpbiB0aGUgaW5mb3JtYXRpb24gaW4gVmVuZG9ySWRlbnRpZmllciBhbmQgbWFrZSBhIGJldHRlciBlZmZvcnQKCWF0IGZpbGxpbmcgaW4gSWRlbnRpZmllciBpbiB0aGUgcmVnaXN0cnkga2V5LgoKCSogaW5jbHVkZS9tc2lxdWVyeS5oOiBKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglSZW1vdmUgZHVwbGljYXRlIGRlZmluaXRpb24uCgoJKiBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGUzMi9vbGUzMi5zcGVjOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBJbXBsZW1lbnQgQ29TZXRQcm94eUJsYW5rZXQsIENvUXVlcnlQcm94eUJsYW5rZXQgYW5kIENvQ29weVByb3h5LgoJLSBVcGRhdGUgdG9kbyBsaXN0LgoKCSogZGxscy9tc3ZjcnQvc2NhbmYuaCwgZGxscy9tc3ZjcnQvdGVzdHMvc2NhbmYuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglGaXggaGFuZGxpbmcgb2YgRU9GIGZvciB0aGUgJyVjJyBhbmQgJyVDJyBjYXNlcyBpbiBzY2FuZigpLgoJQWRkIGNvbmZvcm1hbmNlIHRlc3RzIHRvIHZlcmlmeSB0aGUgYmVoYXZpb3Igb2YgJyVjJy4KCUltcHJvdmUgc29tZSBvZiB0aGUgdGVzdCdzIGVycm9yIG1lc3NhZ2VzLgoKCSogZGxscy94MTFkcnYva2V5Ym9hcmQuYzogT2xpdmVyIFN0aWViZXIgPG9saXZlcl9zdGllYmVyQHlhaG9vLmNvLnVrPgoJU2VuZCBhIHNjYW5jb2RlIHRocm91Z2ggZm9yIHRoZSA1IGtleSB3aGVuIG51bWxvY2sgaXNuJ3Qgb24uCgoyMDA1LTAxLTI3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9hZHZhcGkzMi90ZXN0cy9yZWdpc3RyeS5jOgoJRG9uJ3QgbWFrZSB0aGUgdGVzdCBrZXkgdm9sYXRpbGUsIHRoYXQgY2FuIGJyZWFrIG90aGVyIHRlc3RzLgoKCSogZGxscy91c2VyL2hvb2suYywgZGxscy91c2VyL3Rlc3RzL21zZy5jLCBzZXJ2ZXIvaG9vay5jLAoJICBzZXJ2ZXIvdHJhY2UuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGQgbW9yZSB0ZXN0cyBmb3Igb2xkIHN0eWxlIGhvb2tzIGFuZCB3aW5ldmVudCBob29rcywgbWFrZSB0aGVtIHBhc3MKCXVuZGVyIFdpbmUuCgoJKiBkbGxzL21zaS9hY3Rpb24uYywgZGxscy9tc2kvYWN0aW9uLmgsIGRsbHMvbXNpL21zaXByaXYuaDoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglFbmFibGUgdGhlIHVwZGF0aW5nIG9mIEZlYXR1cmUgYW5kIHRodXMgdGhlIHJlc3VsdGluZyBjb21wb25lbnQKCXN0YXRlcy4KCVJ1biB0aGUgZW5kIG9mIGluc3RhbGwgYWN0aW9ucyBmb3Igc3VzcGVuZCBhbmQgdXNlciBleGl0IHN0YXRlcyBhcwoJd2VsbC4KCVN0YXJ0IHB1dHRpbmcgaW4gcGxhY2UgYSBjdXJyZW50bHkgcnVubmluZyBzdGF0ZSBmb3IgZnV0dXJlIHVpIHVzZS4KCgkqIGRsbHMvbXNpL3BhY2thZ2UuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJLSBpbXBsZW1lbnQgTXNpT3BlblBhY2thZ2VFeCwgYW5kIGZvcndhcmQgTXNpT3BlblBhY2thZ2UgdGhlcmUKCS0gbWFrZSBhIE1TSV9DcmVhdGVQYWNrYWdlIGZ1bmN0aW9uIGFuZCB1c2UgaXQgaW4gTVNJX09wZW5QYWNrYWdlCgktIG1vdmUgTXNpT3BlblBhY2thZ2VBIGRvd24gd2l0aCB0aGUgcmVzdCBvZiB0aGUgQVBJIGZ1bmN0aW9ucwoKCSogZGxscy9udGRsbC90aW1lLmM6IFRyb3kgUm9sbG8gPHdpbmVAdHJveS5yb2xsby5uYW1lPgoJQWRkIFRaX0lORk8gZW50cnkgdG8gbWF0Y2ggKGluY29ycmVjdCkgQXVzdHJhbGlhbiBFYXN0ZXJuIERheWxpZ2h0CglUaW1lIGluZm9ybWF0aW9uIGdpdmVuIGJ5IHNvbWUgc3lzdGVtcy4KCgkqIGRsbHMvb2xlYXV0MzIvdG1hcnNoYWwuYzogTWlrZSBIZWFybiA8bWhAY29kZXdlYXZlcnMuY29tPgoJLSBDaGFuZ2Ugc29tZSBGSVhNRXMgdG8gRVJScyB0byByZWZsZWN0IHRoZSBmYWN0IHRoYXQgbm90aGluZyBuZWVkcwoJICBmaXhpbmcuCgktIEZpeCBzb21lIG1lbW9yeSBsZWFrcyBvbiBlcnJvciBwYXRocyBpbiBfbWFyc2hhbF9pbnRlcmZhY2UuCgoJKiBkbGxzL3VzZXIvdGVzdHMvc3lzcGFyYW1zLmM6IFBhdWwgVnJpZW5zIDxQYXVsLlZyaWVuc0B4czRhbGwubmw+CglDaGVjayBmb3IgYXZhaWxhYmlsaXR5IG9mIFNQSV9HRVRJQ09OVElUTEVXUkFQLgoKCSogd2luZG93cy93aW4uYywgd2luZG93cy93aW5wb3MuYzoKCUF2b2lkIGEgZmV3IG1vcmUgdXNlcyBvZiBXSU5fRmluZFduZFB0ci4KCgkqIGluY2x1ZGUvLmN2c2lnbm9yZSwgaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9zZW5zZXZ0cy5pZGw6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBpZGwgZmlsZSBmb3IgdGhlIFN5c3RlbSBFdmVudCBOb3RpZmNhdGlvbiBTZXJ2aWNlcyBBUEkKCShTRU5TQVBJKS4KCgkqIGRsbHMvc2hkb2N2dy9jbGFzc2luZm8uYywgZGxscy9zaGRvY3Z3L2V2ZW50cy5jLAoJICBkbGxzL3NoZG9jdncvZmFjdG9yeS5jLCBkbGxzL3NoZG9jdncvbWlzYy5jLAoJICBkbGxzL3NoZG9jdncvb2xlb2JqZWN0LmMsIGRsbHMvc2hkb2N2dy9wZXJzaXN0LmMsCgkgIGRsbHMvc2hkb2N2dy9zaGRvY3Z3LmgsIGRsbHMvc2hkb2N2dy9zaGRvY3Z3X21haW4uYywKCSAgZGxscy9zaGRvY3Z3L3dlYmJyb3dzZXIuYzoKCUphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJUHJvcGVybHkgaW1wbGVtZW50IERsbENhblVubG9hZE5vdyByZWYgY291bnRpbmcuIE1ha2Ugc3VyZSB0aGUgbW96aWxsYQoJY29udHJvbCBpcyByZWFkeSB0byB1bmxvYWQgYXMgd2VsbC4KCgkqIGRsbHMvbXNpL3Rlc3RzL2RiLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVRlc3QgZGlmZmVyZW50IHR5cGVzIG9mIGRvZGd5IHF1ZXJpZXMuCgoJKiBkbGxzL21zaS9jdXN0b20uYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCBjdXN0b20gYWN0aW9uIHR5cGUgMTksIEhhbHQgaW5zdGFsbCBhbmQgZGlzcGxheSBlcnJvcgoJbWVzc2FnZS4KCgkqIGRsbHMvbXNpL3BhY2thZ2UuYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCU1zaUdldFByb3BlcnR5IGRvZXMgbm90IHJldHVybiBhbnkgZXJyb3Igb24gbWlzc2luZyBwcm9wZXJ0aWVzLgoKCSogZGxscy9kZHJhdy9kZHJhdy9tYWluLmM6IFJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJU2V0IGRlZmF1bHQgdmlkZW8gbWVtb3J5IHRvIDY0TWIgKHdhcyAxNk1iKSBhcyBtYW55IGQzZDkgZGVtb3MgdXNlCglkM2Q3IGNvZGUgdG8gZ2V0IGF2YWlsYWJsZSB2aWRlbyBtZW1vcnkgc2l6ZSAoZXggQ29uZmlnU3lzdGVtLmV4ZSBvbgoJZDNkOSBzZGspLgoKCSogZGxscy9keGRpYWduL01ha2VmaWxlLmluLCBkbGxzL2R4ZGlhZ24vY29udGFpbmVyLmMsCgkgIGRsbHMvZHhkaWFnbi9keGRpYWdfcHJpdmF0ZS5oLCBkbGxzL2R4ZGlhZ24vcHJvdmlkZXIuYzoKCVJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJLSBzb21lIGZpeGVzIG9uIHN1YiBjb250YWluZXJzIHN1cHBvcnQKCS0gYWRkIHN1cHBvcnQgZm9yIHByb3BlcnRpZXMgKFZBUklBTlQpCgktIGhhcmQgY29kZWQgc2ltcGxlIGluaXQgZm9yIHJvb3QgY29udGFpbmVyIChnZXR0aW5nIHNpbXBsZSBkeDkKCSAgdmVyc2lvbiBjaGVja3Mgd29ya2luZykKCgkqIGRsbHMva2VybmVsL2xjZm9ybWF0LmM6IFZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCUNoYW5nZSBVVEYtOCBuYW1lIGJhY2sgdG8gSVNPLTg4NTktMS4KCgkqIGRsbHMvd2luZWQzZC9kZXZpY2UuYywgZGxscy93aW5lZDNkL2RpcmVjdHguYywKCSAgZGxscy93aW5lZDNkL3ZlcnRleGRlY2xhcmF0aW9uLmMsIGluY2x1ZGUvd2luZS93aW5lZDNkX2ludGVyZmFjZS5oOgoJUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CgktIGZpeCB0eXBvIGluIHdpbmVkM2RfaW50ZXJmYWNlLmgKCS0gYWRkIG5lZWRlZCBkZWZpbmVzIGluIHdpbmVkM2RfaW50ZXJmYWNlLmgKCS0gYWRkIElXaW5lRDNEVmVydGV4RGVjbGFyYXRpb25JbXBsX1BhcnNlVG9rZW45IGZvciBkZWJ1ZyB0cmFjZXMKCS0gZml4IFBhcnNlRGVjbGFyYXRpb245CgktIGxpbWl0IGZsb29kIG9mIHRyYWNlcyAoc2luZ2xlIHNob3QgdHJhY2VzKQoKCSogZGxscy9vbGUzMi9tYXJzaGFsLmMsIGRsbHMvb2xlMzIvdGVzdHMvbWFyc2hhbC5jOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJR2l2ZSBJVW5rbm93biBpdHMgb3duIGlmc3R1YiB0byBmaXggcmVmLWNvdW50aW5nIGFuZCBpcGlkIHN0b3JhZ2UKCWlzc3Vlcy4KCjIwMDUtMDEtMjYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmMsIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jLAoJICBkbGxzL2RwbGF5eC9kcGxheXhfZ2xvYmFsLmMsIGRsbHMvZHBsYXl4L2RwbG9iYnkuYywKCSAgZGxscy9tc2kvYWN0aW9uLmMsIGRsbHMvbXNpL2N1c3RvbS5jLCBkbGxzL21zaS9mb3JtYXQuYywKCSAgZGxscy9tc2kvdGFibGUuYywgZGxscy9yc2FlbmgvbXBpLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLAoJICBkbGxzL3dpbmluZXQvY29va2llLmMsIGRsbHMvd2luaW5ldC9odHRwLmMsIGRvY3VtZW50YXRpb24vb2xlLnNnbWwsCgkgIHByb2dyYW1zL3dpbmVkYmcvZGJfZGlzYXNtLmMsIHRvb2xzL3dpbmFwaS9tYWtlX3BhcnNlci5wbToKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQXNzb3J0ZWQgc3BlbGxpbmcgZml4ZXMuCgoJKiBkbGxzL29sZTMyL2NvbXBvYmpfcHJpdmF0ZS5oLCBkbGxzL29sZTMyL21hcnNoYWwuYywKCSAgZGxscy9vbGUzMi9vbGVwcm94eS5jLCBkbGxzL29sZTMyL3JwYy5jLCBkbGxzL29sZTMyL3N0dWJtYW5hZ2VyLmMsCgkgIGRsbHMvb2xlMzIvdGVzdHMvbWFyc2hhbC5jOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBNYWtlIHByb3h5IG1hbmFnZXIgdXNlIElNdWx0aVFJIGluc3RlYWQgb2YgSUludGVybmFsVW5rbm93biBhcyB0ZXN0cwoJICBzaG93IHRoYXQgSUludGVybmFsVW5rbm93biBpc24ndCBleHBvc2VkLgoJLSBJbXBsZW1lbnQgSU11bHRpUUkgb24gdG9wIG9mIElSZW1Vbmtub3duIGNhbGxzLgoJLSBTaWxlbmNlIHNvbWUgZml4bWVzIHRoYXQgb2NjdXIgZHVyaW5nIHRlc3RzIGFuZCBkb24ndCBnaXZlIHVzIGFueQoJICB1c2VmdWwgaW5mb3JtYXRpb24uCgktIEZpeCB0eXBvIGluIGNsYXNzIGZhY3RvcnkgcHJveHkgdGhhdCBjYXVzZWQgdXMgdG8gdXNlIHRoZSB3cm9uZwoJICBvZmZzZXQgaW50byB0aGUgQ0ZQcm94eSBzdHJ1Y3R1cmUsIGNhdXNpbmcgdXMgdG8gbm90IGNhbGwgdGhlCgkgIG91dGVyX3Vua25vd24gcHJvcGVybHkuCgoJKiBkbGxzL3dpbmVkM2QvZGlyZWN0eC5jLCBkbGxzL3dpbmVkM2QvZHJhd3ByaW0uYywKCSAgaW5jbHVkZS93aW5lL3dpbmVkM2RfZ2wuaDoKCVJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJLSBhIHZlcnkgYmFzaWMgYmxlbmRpbmcgc3VwcG9ydCBvbiBmYXN0IGRyYXdpbmcgcGF0aCAodG8gaGF2ZSBiZXR0ZXIKCSAgcGVyZm9ybWFuY2VzIG9uIGxhc3QgZ2FtZXMpCgktIHNvbWUgZGVmaW5lcyBmb3IgVkJPIHN1cHBvcnQKCgkqIGRsbHMvd2luZWQzZC9kZXZpY2UuYywgZGxscy93aW5lZDNkL3ZlcnRleGRlY2xhcmF0aW9uLmMsCgkgIGRsbHMvd2luZWQzZC93aW5lZDNkX3ByaXZhdGUuaCwgaW5jbHVkZS93aW5lL3dpbmVkM2RfaW50ZXJmYWNlLmg6CglSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCS0gVmVydGV4RGVjbGFyYXRpb24gZGV2aWNlIEFQSXMKCS0gRDNEOSBkZWNsYXJhdGlvbnMgcGFyc2luZwoJLSBhIGxpdHRsZSBiZXR0ZXIgQVBJcyAodHJ5aW5nIHRvIGF2b2lkIGNvbXBpbGUgcHJvYmxlbXMpCgoJKiBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGUzMi9jb21wb2JqX3ByaXZhdGUuaCwKCSAgZGxscy9vbGUzMi9tYXJzaGFsLmMsIGRsbHMvb2xlMzIvb2xlcHJveHkuYywgZGxscy9vbGUzMi9ycGMuYywKCSAgZGxscy9vbGUzMi9zdHVibWFuYWdlci5jOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBVc2UgSW50ZXJsb2NrZWRJbmNyZW1lbnQgZm9yIHRoZSBpcGlkIGNvdW50ZXIgaW5zdGVhZCBvZiBhIGNyaXRpY2FsCgkgIHNlY3Rpb24gKHN1Z2dlc3RlZCBieSBNaWtlIEhlYXJuKS4KCS0gUmVtb3ZlIGEgbGluZSBhZGRlZCBieSBhIGJhZCBtZXJnZS4KCS0gSW1wbGVtZW50IFJlbVVua1N0dWJfRGlzY29ubmVjdC4KCS0gUmVtb3ZlIGFsbCBvZiB0aGUgUlBDIGRpc2Nvbm5lY3QgY29kZS4KCgkqIGRsbHMvb2xlMzIvbWFyc2hhbC5jLCBkbGxzL29sZTMyL3JwYy5jLCBkbGxzL29sZTMyL3N0dWJtYW5hZ2VyLmMsCgkgIGRsbHMvb2xlMzIvdGVzdHMvbWFyc2hhbC5jOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBJbXBsZW1lbnQgSVJlbVVua25vd24uCgktIFVzZSBJUmVtVW5rbm93biBmb3IgbGlmZS1jeWNsZSBtYW5hZ2VtZW50IGluc3RlYWQgb2YgdGhlIGN1cnJlbnQKCSAgaGFja3MuCgoJKiBpbmNsdWRlL3dpbnRlcm5sLmgsIGRsbHMva2VybmVsL2NwdS5jLCBkbGxzL250ZGxsL250LmMsCgkgIGRsbHMvbnRkbGwvbnRkbGwuc3BlYzoKCVJlaW4gS2xhemVzIDx3aWpuQHdhbmFkb28ubmw+CglHZXQgcmlkIG9mIHRoZSByZHRzYyBjcHUgaW5zdHJ1Y3Rpb24gbWV0aG9kIGZvciBjYWxjdWxhdGlvbiBvZiB0aGUKCXBlcmZvcm1hbmNlIGNvdW50ZXIuIFB1dCB0aGUgY2FsY3VsYXRpb24gKGJhc2VkIG9uIGdldHRpbWVvZmRheSkgaW4KCU50UXVlcnlQZXJmb3JtYW5jZUNvdW50ZXIoKSBhbmQgdXNlIHRoYXQgaW4gdGhlIGtlcm5lbCBmdW5jdGlvbnMuCgoJKiBkbGxzL2Rtc2NyaXB0L3NjcmlwdC5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVJlbW92ZSB1bm5lZWRlZCBOVUxMIGNhc3QuCgoJKiB0b29scy93aWRsL3R5cGVsaWJfc3RydWN0LmgsIHRvb2xzL3dpZGwvd3JpdGVfbXNmdC5jOgoJSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCVdoZW4gYWRkaW5nIGFuIGludGVyZmFjZSwgbWlkbCBhZGRzIHRoZSBpbmhlcml0ZWQgaW50ZXJmYWNlIGZpcnN0Cgl1bmxlc3MgdGhlIGluaGVyaXRlZCBpbnRlcmZhY2UgZG9lc24ndCBpdHNlbGYgaW5oZXJpdC4KCUZpeCB0aGUgaWQsIHNpemV2ZnQgYW5kIGRhdGF0eXBlMiBmaWVsZHMgZm9yIGludGVyZmFjZXMgdGhhdCBpbmhlcml0LgoJUHJldmVudCBhIGNyYXNoIGlmIHRoZSB0eXBlbGliIGlzIGVtcHR5LgoJQ2xhcmlmeSBhIGZldyBtb3JlIGVudHJpZXMgb24gdHlwZWxpYl9zdHJ1Y3QuaAoKCSogZGxscy9tc2kvcmVjb3JkLmMsIGRsbHMvbXNpL3Rlc3RzL3JlY29yZC5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IE1zaVJlY29yZFNldFN0cmluZyBmb3IgTlVMTCBzdHJpbmdzIGFuZCB1cGRhdGUgdGVzdCBjYXNlLgoKCSogZGxscy94MTFkcnYveHJlbmRlci5jOiBHbGVubiBXdXJzdGVyIDxnd3Vyc3RlckBzY3MuY2FybGV0b24uY2E+CglEaXNhYmxlIGFudGlhbGlhc2luZyBvZiBmb250cyB3aGlsZSB3b3JraW5nIGluIGEgcGFsZXR0ZS4KCgkqIGRsbHMvc2V0dXBhcGkvTmwucmMsIHByb2dyYW1zL25vdGVwYWQvTmwucmMsIHByb2dyYW1zL3Byb2dtYW4vTmwucmMsCgkgIHByb2dyYW1zL3JlZ2VkaXQvTmwucmMsIHByb2dyYW1zL3N0YXJ0L05sLnJjLAoJICBwcm9ncmFtcy93aW5lZmlsZS9ObC5yYywgcHJvZ3JhbXMvd2luaGVscC9ObC5yYzoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJRG9uJ3QgdXNlIHV0ZjggaW4gcmMgZmlsZXMuCgoJKiBkbGxzL29sZWF1dDMyL3RtYXJzaGFsLmM6IE1pa2UgSGVhcm4gPG1oQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBhIHR5cG8sIHByb3BhZ2F0ZSBlcnJvcnMgYmV0dGVyIGZyb20gaW5zaWRlIHRoZSB0eXBlbGliCgltYXJzaGFsbGVyLgoKCSogZGxscy9nZGkvbWV0YWZpbGUuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUdldE1ldGFGaWxlIGNoZWNrcyBib3RoIHRoZSB2ZXJzaW9uIGFuZCB0aGUgaGVhZGVyIHNpemUgd2hlbiBpdCB0cmllcwoJdG8gbG9hZCBhIG1ldGFmaWxlLiAgUG93ZXJwb2ludCBYUCBkZXBlbmRzIG9uIHRoaXMuCgoJKiBkbGxzL2RtdXNpYy9idWZmZXIuYywgZGxscy9kbXVzaWMvY2xvY2suYywgZGxscy9kbXVzaWMvY29sbGVjdGlvbi5jLAoJICBkbGxzL2RtdXNpYy9kbXVzaWMuYywgZGxscy9kbXVzaWMvZG11c2ljX21haW4uYywKCSAgZGxscy9kbXVzaWMvZG11c2ljX3ByaXZhdGUuaCwgZGxscy9kbXVzaWMvZG93bmxvYWQuYywKCSAgZGxscy9kbXVzaWMvZG93bmxvYWRlZGluc3RydW1lbnQuYywgZGxscy9kbXVzaWMvaW5zdHJ1bWVudC5jLAoJICBkbGxzL2RtdXNpYy9wb3J0LmMsIGRsbHMvZG11c2ljL3BvcnRkb3dubG9hZC5jLCBkbGxzL2RtdXNpYy90aHJ1LmM6CglKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCVByb3Blcmx5IGltcGxlbWVudCBEbGxDYW5VbmxvYWROb3cgcmVmIGNvdW50aW5nLgoKCSogZGxscy9tc2kvbXNpLmMsIGRsbHMvbXNpL21zaS5zcGVjLCBkbGxzL21zaS9tc2lwcml2LmgsCgkgIGRsbHMvbXNpL3JlZ2lzdHJ5LmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgYSBmZXcgbW9yZSBzdHViIGltcGxlbWVudGF0aW9ucy4KCgkqIHRvb2xzL3dpZGwvcGFyc2VyLmwsIHRvb2xzL3dpZGwvcGFyc2VyLnksIHRvb2xzL3dpZGwvcHJveHkuYywKCSAgdG9vbHMvd2lkbC90eXBlbGliLmMsIHRvb2xzL3dpZGwvd2lkbC5jLCB0b29scy93aWRsL3dpZGwuaCwKCSAgdG9vbHMvd2lkbC93aWRsLm1hbjoKCUh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglGaXggdHlwZWxpYiBvbmx5IG9wdGlvbi4KCU1ha2UgLXQgYW5kIC1oIG9wdGlvbnMgaW5jbHVzaXZlLgoKMjAwNS0wMS0yNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbXNpL01ha2VmaWxlLmluLCBkbGxzL21zaS9hY3Rpb24uYywgZGxscy9tc2kvYWN0aW9uLmgsCgkgIGRsbHMvbXNpL2N1c3RvbS5jLCBkbGxzL21zaS9mb3JtYXQuYywgZGxscy9tc2kvbXNpcHJpdi5oLAoJICBkbGxzL21zaS9wYWNrYWdlLmMsIGRsbHMvbXNpL3JlY29yZC5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gYWN0aW9uLmMgaXMgZ2V0dGluZyB0b28gYmlnLCBzbyBzcGxpdCBvdXQgYWxsIHRoZSBoYW5kbGluZyBvZgoJICBDdXN0b21BY3Rpb25zIGludG8gY3VzdG9tLmMuIENsZWFuZWQgdXAgYSBsb3Qgb2YgdGhlIGhhbmRsaW5nIG9mCgkgIGN1c3RvbSBhY3Rpb25zIGluY2x1ZGluZyBzY3JpcHRpbmcgYWN0aW9ucyBhbmQgcHJvY2Vzc2luZyByZXR1cm4KCSAgY29kZXMuCgktIE1pa2UgTWNDb3JtYWNrIHBvaW50ZWQgb3V0IHRoYXQgTXNpRm9ybWF0UmVjb3JkIGlzIGJhc2ljYWxseSB0aGUKCSAgc2FtZSBhcyBpbnRlcm5hbCBmdW5jdGlvbiBkZWZvcm1hdF9zdHJpbmcuIFNvIGJyb2tlIGRlZm9ybWF0X3N0cmluZwoJICBvdXQgYW5kIHVwZGF0ZWQgaXQgdG8gZnVuY3Rpb24gYXMgTXNpRm9ybWF0UmVjb3JkIGFuZCBpbXBsZW1lbnRlZAoJICBNc2lGb3JtYXRSZWNvcmQuCgktIEEgbnVtYmVyIG9mIHJhbmRvbSBmaXhlcyB0byBhY3Rpb24uYyBpbmNsdWRpbmcgcHJvcGVybHkgY2FsY3VsYXRpbmcKCSAgdGhlIGxlbmd0aCBmb3IgdGhlIExvY2FsUGFja2FnZSBuYW1lLCBub3QgZm9yY2luZyBhIHJlYm9vdCB3aGVuCgkgIHJlYWxseSB3ZSBzaG91bGQganVzdCByZXR1cm4gRVJST1JfSU5TVEFMTF9TVVNQRU5EIGFuZCBoYW5kbGluZwoJICBSRUdfTVVMVElfU1ogbm93IHRoYXQgd2UgY2FuIGRlZm9ybWF0IHRoZSBwcm9wZXJseS4KCgkqIHByb2dyYW1zL3dpbmhlbHAvaGxwMnNnbWwuYywgcHJvZ3JhbXMvd2luaGVscC9obHBmaWxlLmMsCgkgIHByb2dyYW1zL3dpbmhlbHAvbWFjcm8ubGV4LmwsIHByb2dyYW1zL3dpbmhlbHAvd2luaGVscC5jOgoJS2VuIEJlbGxlYXUgPGphbWV6QGl2aWMucWMuY2E+CgktIFVzZWQgd2luZV9kYmdzdHJfYSB0byBwcmV2ZW50IGFuIG92ZXJmbG93LgoJLSBJbXByb3ZlZCBzdXBwb3J0IHRvIGNhbGwgbWFjcm9zIHdpdGggYSB2YXJpYWJsZSBudW1iZXIgb2YKCSAgcGFyYW1ldGVycy4KCS0gUHV0IGEgY2hlY2sgdG8gcHJldmVudCBhbiBvdXQgb2YgYm91bmRzIGFjY2Vzcy4KCgkqIGRsbHMvZGlucHV0L2pveXN0aWNrX2xpbnV4LmMsIGRsbHMvZGlucHV0L21vdXNlLmM6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQ29weSBkYXRhIHN0cnVjdHVyZXMgb25lIGF0IGEgdGltZSB1c2luZyBzdXBwbGllZCBzaXplLgoKCSogdG9vbHMvd2lkbC9wYXJzZXIueSwgdG9vbHMvd2lkbC90eXBlbGliLmMsIHRvb2xzL3dpZGwvdHlwZWxpYi5oLAoJICB0b29scy93aWRsL3dpZGx0eXBlcy5oLCB0b29scy93aWRsL3dyaXRlX21zZnQuYzoKCUh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglBZGQgZW51bSBzdXBwb3J0LgoJQW5vdGhlciBhdHRlbXB0IGF0IGdldHRpbmcgdGhlIGFsaWdubWVudCBiaXRzIGNvcnJlY3QuCgoJKiBkbGxzL29kYmMzMi9vZGJjMzIuc3BlYywgZGxscy9vZGJjMzIvcHJveHlvZGJjLmMsCgkgIGRsbHMvb2RiYzMyL3Byb3h5b2RiYy5oOgoJQWxleCBWaWxsYWPtcyBMYXNzbyA8YV92aWxsYWNpc0BwYWxvc2FudG8uY29tPgoJSW1wbGVtZW50ZWQgVW5pY29kZSBwcm94eSBmb3IgT0RCQy4KCgkqIGRsbHMvb2xlMzIvcmVnc3ZyLmMsIGRsbHMvb2xlYXV0MzIvcmVnc3ZyLmM6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIE1vdmUgT0xFIGF1dG9tYXRpb24gaW50ZXJmYWNlIHJlZ2lzdHJhdGlvbiB0byBvbGVhdXQzMi4KCS0gQWRkIElSZW1Vbmtub3duIHRvIGxpc3Qgb2YgaW50ZXJmYWNlcyB0byByZWdpc3Rlci4KCgkqIGRsbHMvb2xlMzIvb2xlcHJveHkuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJUHJveGllcy9zdHVicyBmb3IgSVJlbVVua25vd24gbWV0aG9kcywgYmFzZWQgb24gY29kZSB3cml0dGVuIGJ5IE92ZQoJS+V2ZW4uCgoJKiB0b29scy93aWRsL3dyaXRlX21zZnQuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBlbmNvZGluZyBmb3IgVlRfUjguCglCdWcgZml4OiBJbml0aWFsaXNlIGNoaWxkX3NpemUuCgoJKiBkbGxzL3NldHVwYXBpL21pc2MuYywgZGxscy9zZXR1cGFwaS9zZXR1cGFwaS5zcGVjOgoJRXJpYyBLb2hsIDxlcmljLmtvaGxAdC1vbmxpbmUuZGU+CglJbXBsZW1lbnQgRHVwbGljYXRlU3RyaW5nIGFuZCBRdWVyeVJlZ2lzdHJ5VmFsdWUuCgoJKiBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYzoKCUFsZXggVmlsbGFj7XMgTGFzc28gPGFfdmlsbGFjaXNAcGFsb3NhbnRvLmNvbT4KCUluaXRpYWxpemUgdGVtcG9yYXJ5IHZhcmlhbnRzIGJlZm9yZSBjYWxsaW5nIFZhcmlhbnRDaGFuZ2VUeXBlRXguCgoJKiBkbGxzL3dpbmluZXQvaHR0cC5jOiBNYXhpbWUgQmVsbGVuZ+kgPG1heGltZS5iZWxsZW5nZUBsYXBvc3RlLm5ldD4KCVJlcGxhY2UgJ1wnIHdpdGggJy8nIGluIHRoZSBVUkwgaW4gSFRUUF9IdHRwU2VuZFJlcXVlc3RXLgoKCSogcHJvZ3JhbXMvd2luZXBhdGgvd2luZXBhdGguYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglDb252ZXJ0IHByb2dyYW1zL3dpbmVwYXRoIHRvIHVuaWNvZGUsIHByaW50IHRoZSBvdXRwdXQgc3RyaW5nIHVzaW5nCglVbml4IGxvY2FsZS4KCgkqIGRsbHMvbXNpL21zaS5zcGVjLCBkbGxzL21zaS9yZWdpc3RyeS5jLCBkbGxzL21zaS90ZXN0cy9kYi5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50LCB0ZXN0IGFuZCBkb2N1bWVudCBNc2lEZWNvbXBvc2VEZXNjcmlwdG9yLgoKCSogdG9vbHMvd2lkbC9wYXJzZXIueTogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCXVuc2lnbmVkIGNoYXIgc3VwcG9ydC4KCgkqIGRsbHMvdXNlci90ZXN0cy9tc2cuYzogQWRkZWQgYSBjb3VwbGUgb2YgU2V0V2luZG93UG9zIHRlc3RzLgoKCSogZGxscy91c2VyL3Rlc3RzL21zZy5jLCBkbGxzL3gxMWRydi93aW5wb3MuYzoKCVJlaW4gS2xhemVzIDx3aWpuQHdhbmFkb28ubmw+CglNYWtlIFNob3dXaW5kb3coLi4uLFNXX1NIT1dOQSkgYWxzbyB3b3JrIG9uIGFscmVhZHkgdmlzaWJsZSB3aW5kb3dzCgl3aXRoIHNvbWUgY29uZm9ybWFuY2UgdGVzdHMuCgoJKiBkbGxzL21zaS9hY3Rpb24uYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCVVzZSB0aGUgbmV3IHJlZ2lzdHJ5IGZ1bmN0aW9ucyBpbiByZWdpc3RyeS5jLgoJRG8gbm90IGZvcmNlIGEgcmVib290LCBqdXN0IHJldHVybiBFUlJPUl9JTlNUQUxMX1NVU1BFTkQgYW5kIHdyaXRlCglzb21lIGtleXMgdG8gdGhlIHJlZ2lzdHJ5LgoKCSogZGxscy9tc2kvTWFrZWZpbGUuaW4sIGRsbHMvbXNpL21zaS5jLCBkbGxzL21zaS9tc2lwcml2LmgsCgkgIGRsbHMvbXNpL3JlZ2lzdHJ5LmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJTW92ZSB0aGUgZ3VpZCBzcXVpc2hpbmcgZnVuY3Rpb25zIG91dCBvZiBtc2kuYyBhbmQgbWFrZSBhIG5ldwoJcmVnaXN0cnkuYyBmaWxlLiBBbHNvIGNsZWFuIHVwIGFsbCB0aGUgdmFyaW91cyByZWdpc3RyeSBrZXlzIHdlIG5lZWQKCXRvIG9wZW4gYW5kIGNyZWF0ZSB0byB0aGlzIG1vZHVsZSBhbmQgbW9kaWZ5IHRoZSBmdW5jdGlvbnMgZm9yIG1zaS5jCgl0byBjYWxsIHRoZXNlIGZ1bmN0aW9ucy4KCgkqIGRsbHMvdXNlci9zY3JvbGwuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJQWRkIGEgc3VtbWFyeSBsaW5lIGZvciBzZXZlcmFsIHNjcm9sbGJhciBmdW5jdGlvbnMuCgoJKiBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGUzMi9jb21wb2JqX3ByaXZhdGUuaCwKCSAgZGxscy9vbGUzMi9tYXJzaGFsLmMsIGRsbHMvb2xlMzIvcnBjLmMsIGRsbHMvb2xlMzIvc3R1Ym1hbmFnZXIuYzoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gR2VuZXJhdGUgbWFjaGluZS1sb2NhbCBJUElEcy4KCS0gTWFrZSBwaXBlcyBiZSB1bmlxdWVseSBpZGVudGlmaWVkIG9ubHkgYnkgdGhlaXIgSVBJRC4KCgkqIHRvb2xzL3dpZGwvd3JpdGVfbXNmdC5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJQWRkIGludGVyZmFjZSBpbmhlcml0YW5jZS4KCgkqIGRsbHMvZGV2ZW51bS9jcmVhdGVkZXZlbnVtLmM6CglDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglGaXhlZCBwaW4gZGlyZWN0aW9uIHdoZW4gcmVnaXN0ZXJpbmcgYXVkaW8gaW5wdXQgZGV2aWNlLgoKCSogZGxscy9zaGx3YXBpL3Rlc3RzL3N0cmluZy5jOiBIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCVN0cklzSW50bEVxdWFsIGFuZCBJbnRsU3RyRXFXb3JrZXIgbWF5IGJlIGFic2VudC4KCjIwMDUtMDEtMjQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9NYWtlZmlsZS5pbiwgZGxscy93dHNhcGkzMi8uY3ZzaWdub3JlLAoJICBkbGxzL3d0c2FwaTMyL01ha2VmaWxlLmluLCBkbGxzL3d0c2FwaTMyL3d0c2FwaTMyLmMsCgkgIGRsbHMvd3RzYXBpMzIvd3RzYXBpMzIuc3BlYywgaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS93dHNhcGkzMi5oOgoJVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgV1RTQVBJMzIuRExMLgoKCSogZGxscy9hZHZhcGkzMi9zZXJ2aWNlLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUNvbnZlcnQgc2VydmljZXMgdG8gdXNlIHBpcGVzIGZvciBSUEMgaW5zdGVhZCBvZiBzaGFyZWQgbWVtb3J5LgoKCSogZGxscy9kbXN0eWxlL2F1ZGl0aW9udHJhY2suYywgZGxscy9kbXN0eWxlL2Nob3JkdHJhY2suYywKCSAgZGxscy9kbXN0eWxlL2NvbW1hbmR0cmFjay5jLCBkbGxzL2Rtc3R5bGUvZG1zdHlsZV9tYWluLmMsCgkgIGRsbHMvZG1zdHlsZS9kbXN0eWxlX3ByaXZhdGUuaCwgZGxscy9kbXN0eWxlL21vdGlmdHJhY2suYywKCSAgZGxscy9kbXN0eWxlL211dGV0cmFjay5jLCBkbGxzL2Rtc3R5bGUvc3R5bGUuYywKCSAgZGxscy9kbXN0eWxlL3N0eWxldHJhY2suYzoKCUphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJUHJvcGVybHkgaW1wbGVtZW50IERsbENhblVubG9hZE5vdyByZWYgY291bnRpbmcuCgoJKiBkbGxzL3gxMWRydi94cmVuZGVyLmM6IEdsZW5uIFd1cnN0ZXIgPGd3dXJzdGVyQHNjcy5jYXJsZXRvbi5jYT4KCURpc2FibGUgYW50aWFsaWFzaW5nIGlmIHRoZSBmb250IGRpY3RhdGVzIGl0LgoKCSogZGxscy94MTFkcnYveHJlbmRlci5jOiBHbGVubiBXdXJzdGVyIDxnd3Vyc3RlckBzY3MuY2FybGV0b24uY2E+CglTcGxpdCBjYWNoaW5nIG9mIGFudGlhbGlhc2VkIGFuZCBub24tYW50aWFsaWFzZWQgZ2x5cGhzLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvY3J5cHRkbGwvLmN2c2lnbm9yZSwKCSAgZGxscy9jcnlwdGRsbC9NYWtlZmlsZS5pbiwgZGxscy9jcnlwdGRsbC9jcnlwdGRsbC5jLAoJICBkbGxzL2NyeXB0ZGxsL2NyeXB0ZGxsLnNwZWM6CglVbHJpY2ggQ3pla2FsbGEgPHVscmljaEBjb2Rld2VhdmVycy5jb20+CglBZGQgc3R1YiB2ZXJzaW9uIG9mIGNyeXB0ZGxsLmRsbC4KCgkqIGRsbHMvZ2RpL2ZyZWV0eXBlLmM6IFRyb3kgUm9sbG8gPHdpbmVAdHJveS5yb2xsby5uYW1lPgoJRG9uJ3QgcmVmdXNlIHRvIHByb2Nlc3MgVkRNWCByYXRpbyBlbnRyaWVzIHdpdGggYkNoYXJTZXQgPT0gMC4gVGhlc2UKCWVudHJpZXMgYXJlIGF0IGxlYXN0IGFzIHVzZWZ1bCBhcyB0aG9zZSB3aXRoIGJDaGFyU2V0ID09IDEuIEFkZAoJY29tbWVudCBjb250YWluaW5nIFVSTCBvZiBkb2N1bWVudGF0aW9uIGZvciBWRE1YIHJlY29yZHMuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzogVGludXMgPG8xMTJ3OHIwMkBzbmVha2VtYWlsLmNvbT4KCVByb3Blcmx5IGFsbG93IHJlbW92aW5nIHRvb2xiYXIgYml0bWFwcyBieSBjaGFuZ2luZyBpdCBpbnRvIDAuCgoJKiBkbGxzL3gxMWRydi9rZXlib2FyZC5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJUHV0IEJyYXppbGlhbiBBQk5UMiBrZXlib2FyZCBsYXlvdXRzIGluIGxpbmUgd2l0aCBhcHByb3ByaWF0ZSB2aXJ0dWFsCglrZXlib2FyZCBtYXBzLgoKCSogZGxscy94MTFkcnYvd2ludGFiLmM6IFJvYmVydCBOb3J0aCA8N293bnEwazQwMkBzbmVha2VtYWlsLmNvbT4KCUJyaW5nIHdpbnRhYiBpbiBsaW5lIHdpdGggSmVyZW15J3MgWDExIGV2ZW50IHRpbWluZyBwYXRjaGVzIGFnYWluLgoKCSogZGxscy94MTFkcnYvd2ludGFiLmM6IFJvYmVydCBOb3J0aCA8N293bnEwazQwMkBzbmVha2VtYWlsLmNvbT4KCUFkZCB0aGUgcnVsZSB0aGF0IGludmVydGVkIGN1cnNvciBoYXMgLXZlIGFsdGl0dWRlLCBtYXRjaGluZyBiZWhhdmlvdXIKCW9uIFdpbmRvd3Mgd2Fjb20gdGFibGV0cy4KCgkqIGRsbHMveDExZHJ2L3dpbnRhYi5jOiBSb2JlcnQgTm9ydGggPDdvd25xMGs0MDJAc25lYWtlbWFpbC5jb20+CglQYWNrZXRzIGZyb20gZXJhc2VyIGN1cnNvcnMgYXJlIG1hcmtlZCBhcyBpbnZlcnRlZCwgbWF0Y2hpbmcgYmVoYXZpb3IKCW9uIFdpbmRvd3MgV2Fjb20gdGFibGV0cy4KCgkqIGRsbHMvd2ludGFiMzIvY29udGV4dC5jOiBSb2JlcnQgTm9ydGggPDdvd25xMGs0MDJAc25lYWtlbWFpbC5jb20+CglXVEVuYWJsZSwgd2hlbiBjYWxsZWQgdG8gZGlzYWJsZSB0YWJsZXQgY29udGV4dCwgY2xlYXJzIGNvbnRleHQgcXVldWUsCglhcyBwZXIgd2ludGFiIHNwZWMuCgoJKiBkbGxzL2Rzb3VuZC9wcmltYXJ5LmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglEb24ndCBhbGxvdyBvdGhlciB0aHJlYWRzIHRvIGFjY2VzcyB0aGUgcHJpbWFyeSBidWZmZXIgd2hpbGUgdGhlCglmb3JtYXQgaXMgYmVpbmcgY2hhbmdlZC4KCgkqIGRsbHMveDExZHJ2L3dpbnRhYi5jOiBSb2JlcnQgTm9ydGggPDdvd25xMGs0MDJAc25lYWtlbWFpbC5jb20+CgktIEluIHdpbnRhYidzIGRlZmF1bHQgc3lzdGVtIGNvbnRleHQsIGNoYW5nZSBjb250ZXh0IG9wdGlvbnMgdG8gbWF0Y2gKCSAgV2Fjb20gdGFibGV0IGluIHdpbmRvd3MuCgktIENoYW5nZSBkZXZpY2Ugb3JpZW50YXRpb24gdW5pdCBkZWZpbml0aW9uIHRvIGFuZ3VsYXIuCgktIFVzZSBNYWNyb3Mgd2hlcmUgYXBwcm9wcmlhdGUgdG8gZGVmaW5lIGN1cnNvciBhbmQgZGV2aWNlIGRlZmF1bHRzLgoKCSogZGxscy93aW50YWIzMi9jb250ZXh0LmM6IFJvYmVydCBOb3J0aCA8N293bnEwazQwMkBzbmVha2VtYWlsLmNvbT4KCS0gQ29ycmVjdCBvdmVyZmxvdyAxIG1lc3NhZ2UgdG9vIGVhcmx5LgoJLSBPdmVyZmxvdyBub3cgZ29pbmcgb250byBtZXNzYWdlIHF1ZXVlLgoJLSBPdmVyZmxvdyBzdGF0ZSBjb3JyZWN0bHkgb3ItZWQgd2l0aCBvdGhlciBwYWNrZXQgc3RhdHVzLgoKCSogZGxscy9zZXR1cGFwaS9NYWtlZmlsZS5pbiwgZGxscy9zZXR1cGFwaS9taXNjLmMsCgkgIGRsbHMvc2V0dXBhcGkvc2V0dXBhcGkuc3BlYzoKCUVyaWMgS29obCA8ZXJpYy5rb2hsQHQtb25saW5lLmRlPgoJSW1wbGVtZW50IE15RnJlZSwgTXlNYWxsb2MgYW5kIE15UmVhbGxvYy4KCgkqIHRvb2xzL3dpZGwvd3JpdGVfbXNmdC5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJQWRkIHJlZmVyZW5jZWQgdHlwZXMgdGhhdCBhcmVuJ3QgYWxyZWFkeSBpbiB0aGUgdHlwZWxpYi4KCgkqIGRsbHMvZHNvdW5kL2J1ZmZlci5jLCBkbGxzL2Rzb3VuZC9jYXB0dXJlLmMsIGRsbHMvZHNvdW5kL2Rzb3VuZC5jLAoJICBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jLCBkbGxzL2Rzb3VuZC9taXhlci5jLAoJICBkbGxzL2Rzb3VuZC9wcmltYXJ5LmMsIGRsbHMvZHNvdW5kL3Byb3BzZXQuYywgZGxscy9kc291bmQvcmVnc3ZyLmMsCgkgIGRsbHMvZHNvdW5kL3NvdW5kM2QuYzoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglSZW1vdmUgdW51c2VkIGluY2x1ZGVzLgoKCSogZGxscy9tc2kvbXNpLmMsIGRsbHMvbXNpL21zaXByaXYuaCwgZGxscy9tc2kvcGFja2FnZS5jOgoJQXZvaWQgdW5uZWNlc3NhcnkgcnVuLXRpbWUgaW5pdGlhbGl6YXRpb25zLgoKCSogZGxscy9yc2FlbmgvcnNhZW5oLmMsIGRsbHMvcnNhZW5oL3Rlc3RzL3JzYWVuaC5jOgoJTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJU3VwcG9ydCBmb3IgVExTMSBwc2V1ZG8gcmFuZG9tIGZ1bmN0aW9uLgoJU29tZSBoZWxwZXIgZnVuY3Rpb25zIGZvciBEQVRBX0JMT0Incy4KCUNvbXB1dGluZyBUTFMxIG1hc3RlciBzZWNyZXQgZnJvbSB0aGUgcHJlLW1hc3RlciBzZWNyZXQuCglEZXJpdmluZyB0aGUgbWFzdGVyIGhhc2ggZnJvbSB0aGUgbWFzdGVyIHNlY3JldC4KCURlcml2aW5nIFRMUzEgTUFDIGFuZCBlbmNyeXB0aW9uIGtleXMgZnJvbSB0aGUgbWFzdGVyIGhhc2guCglUZXN0cyBmb3IgbW9zdCBvZiB0aGUgYWJvdmUuCgoJKiBkbGxzL250ZGxsL2xvYWRlci5jLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGluY2x1ZGUvd2ludGVybmwuaDoKCUl2YW4gTGVvIFB1b3RpIDxpdmFubGVvQGdtYWlsLmNvbT4KCUFkZGVkIE50TG9hZERyaXZlciBhbmQgTnRVbmxvYWREcml2ZXIgc3R1YnMuCgoJKiBkbGxzL2QzZDkvYmFzZXRleHR1cmUuYywgZGxscy9kM2Q5L2N1YmV0ZXh0dXJlLmMsIGRsbHMvZDNkOS9kZXZpY2UuYywKCSAgZGxscy9kM2Q5L2RpcmVjdHguYywgZGxscy9kM2Q5L2luZGV4YnVmZmVyLmMsCgkgIGRsbHMvZDNkOS9waXhlbHNoYWRlci5jLCBkbGxzL2QzZDkvcXVlcnkuYywgZGxscy9kM2Q5L3Jlc291cmNlLmMsCgkgIGRsbHMvZDNkOS9zdGF0ZWJsb2NrLmMsIGRsbHMvZDNkOS9zdXJmYWNlLmMsIGRsbHMvZDNkOS9zd2FwY2hhaW4uYywKCSAgZGxscy9kM2Q5L3RleHR1cmUuYywgZGxscy9kM2Q5L3ZlcnRleGJ1ZmZlci5jLAoJICBkbGxzL2QzZDkvdmVydGV4ZGVjbGFyYXRpb24uYywgZGxscy9kM2Q5L3ZlcnRleHNoYWRlci5jLAoJICBkbGxzL2QzZDkvdm9sdW1lLmMsIGRsbHMvZDNkOS92b2x1bWV0ZXh0dXJlLmMsCgkgIGRsbHMvZDNkOC9iYXNldGV4dHVyZS5jLCBkbGxzL2QzZDgvY3ViZXRleHR1cmUuYywgZGxscy9kM2Q4L2RldmljZS5jLAoJICBkbGxzL2QzZDgvZGlyZWN0eC5jLCBkbGxzL2QzZDgvaW5kZXhidWZmZXIuYywgZGxscy9kM2Q4L3Jlc291cmNlLmMsCgkgIGRsbHMvZDNkOC9zdXJmYWNlLmMsIGRsbHMvZDNkOC9zd2FwY2hhaW4uYywgZGxscy9kM2Q4L3RleHR1cmUuYywKCSAgZGxscy9kM2Q4L3ZlcnRleGJ1ZmZlci5jLCBkbGxzL2QzZDgvdm9sdW1lLmMsCgkgIGRsbHMvZDNkOC92b2x1bWV0ZXh0dXJlLmM6CglQYXVsIFZyaWVucyA8UGF1bC5WcmllbnNAeHM0YWxsLm5sPgoJLSB1c2UgSW50ZXJsb2NrZWQqIGZ1bmN0aW9ucyBpbiBBZGRSZWYgYW5kIFJlbGVhc2UuCgktIHN0b3JlIHRoZSByZXN1bHQgb2YgdGhlIEludGVybG9ja2VkIGZ1bmN0aW9ucyBhbmQgdXNlIG9ubHkgdGhpcy4KCgkqIGRvY3VtZW50YXRpb24vZmFxLnNnbWw6CglUb255IExhbWJyZWd0cyA8dG9ueV9sYW1icmVndHNAdGVsdXNwbGFuZXQubmV0PgoJQWRkIG1pc3NpbmcgLydzIHRvIHVybHMgaHR0cDovL3d3dy5jeWd3aW4uY29tIGFuZAoJaHR0cDovL3d3dy5taW5ndy5vcmcuCgoJKiBkbGxzL3VzZXIvc3lzcGFyYW1zLmM6IEJlcm5kIEZ1aHJtYW5uIDxzaWx2ZXJiYW5hbmFAZ214LmRlPgoJQWRkZWQgZml4bWUgbWFjcm9zIGluIFN5c3RlbVBhcmFtZXRlcnNJbmZvVyBmb3Igc2V2ZXJhbCBhY3Rpb24gbnVtYmVycwoJdGhhdCBhcmUgeWV0IHVuaW1wbGVtZW50ZWQuCgoJKiB0b29scy93aWRsL3dyaXRlX21zZnQuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBoYW5kbGluZyBvZiB2b2lkLgoKCSogZGxscy9kc291bmQvYnVmZmVyLmMsIGRsbHMvZHNvdW5kL2NhcHR1cmUuYywgZGxscy9kc291bmQvZHNvdW5kLmMsCgkgIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmMsIGRsbHMvZHNvdW5kL21peGVyLmMsCgkgIGRsbHMvZHNvdW5kL3ByaW1hcnkuYywgZGxscy9kc291bmQvcHJvcHNldC5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCVVzZSBXaW5kb3dzIG1lbW9yeSBmdW5jdGlvbnMuCgoJKiBkbGxzL3dpbnRhYjMyL2NvbnRleHQuYywgZGxscy93aW50YWIzMi93aW50YWIzMi5jLAoJICBkbGxzL3gxMWRydi93aW50YWIuYzoKCVJvYmVydCBOb3J0aCA8N293bnEwazQwMkBzbmVha2VtYWlsLmNvbT4KCS0gRG9uJ3QgcG9zdCBtZXNzYWdlcyBvbiBXaW5lIG1lc3NhZ2UgcXVldWUsIGlmIHRhYmxldCBjb250ZXh0IGZsYWdzCgkgIHBvc3RpbmcgYXJlIGRpc2FibGVkLgoJLSBXaGVuIHBvc3RpbmcgbWVzc2FnZXMgb24gV2luZSBtZXNzYWdlIHF1ZXVlLCB1c2UgbWVzc2FnZSBiYXNlIHN0b3JlZAoJICBpbiB0YWJsZXQgY29udGV4dCwgbm90IHRoZSBkZWZhdWx0IG1lc3NhZ2UgYmFzZS4KCS0gRW5zdXJlIHRoYXQgWDExIFByb3hpbWl0eSBldmVudHMgcHV0IG1lc3NhZ2VzIG9udG8gV2ludGFiIG1lc3NhZ2UKCSAgcXVldWUuCgoJKiBkbGxzL2QzZHJtL3ZlcnNpb24ucmMsIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvZDNkcm0uaDoKCVBldGVyIEJlcmcgTGFyc2VuIDxwZWJsQG1hdGgua3UuZGs+CglBZGRlZCBhIHNpbXBsZSBkM2RybS5oIGhlYWRlci4KCUNvcnJlY3RlZCBhIGNvcHkvcGFzdGUgdHlwbyBmcm9tIGQzZGltLgoKCSogZGxscy9kbXN0eWxlL2F1ZGl0aW9udHJhY2suYywgZGxscy9kbXN0eWxlL2Nob3JkdHJhY2suYywKCSAgZGxscy9kbXN0eWxlL2NvbW1hbmR0cmFjay5jLCBkbGxzL2Rtc3R5bGUvZG1zdHlsZV9tYWluLmMsCgkgIGRsbHMvZG1zdHlsZS9tb3RpZnRyYWNrLmMsIGRsbHMvZG1zdHlsZS9tdXRldHJhY2suYywKCSAgZGxscy9kbXN0eWxlL3N0eWxlLmMsIGRsbHMvZG1zdHlsZS9zdHlsZXRyYWNrLmMsCgkgIGRsbHMvZG1zY3JpcHQvZG1zY3JpcHRfbWFpbi5jLCBkbGxzL2Rtc2NyaXB0L3NjcmlwdC5jLAoJICBkbGxzL2Rtc2NyaXB0L3NjcmlwdHRyYWNrLmM6CglQYXVsIFZyaWVucyA8UGF1bC5WcmllbnNAeHM0YWxsLm5sPgoJLSB1c2UgSW50ZXJsb2NrZWQqIGZ1bmN0aW9ucyBpbiBBZGRSZWYgYW5kIFJlbGVhc2UuCgktIHN0b3JlIHRoZSByZXN1bHQgb2YgdGhlIEludGVybG9ja2VkIGZ1bmN0aW9ucyBhbmQgdXNlIG9ubHkgdGhpcy4KCgkqIGRsbHMvY29tbWRsZy9jZGxnX0VzLnJjOiBKb3PpIE1hbnVlbCBGZXJyZXIgT3J0aXogPGptZm8xOTgyQHlhaG9vLmVzPgoJVXBkYXRlZCBTcGFuaXNoIHJlc291cmNlcy4KCgkqIGRsbHMvcnNhZW5oL2ltcGxnbHVlLmM6IE1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCVJlbW92ZWQgYW5vdGhlciBjaGVjayBmb3IgdmFsaWQnbmVzcyBvZiBhbGdpZC4gSXQncyByZWR1bmRhbnQuCgoJKiBkbGxzL2QzZDgvc2hhZGVyLmMsIGRsbHMvZGlucHV0L2RpbnB1dF9tYWluLmMsCgkgIGRsbHMvZGlucHV0L2pveXN0aWNrX2xpbnV4LmMsIGRsbHMvb2xlYXV0MzIvdGVzdHMvdmFydGVzdC5jOgoJUultaSBBc3NhaWxseSA8cmVtaS5hc3NhaWxseUBmcmVlLmZyPgoJY2hhciAtPiBjb25zdCBjaGFyIGZpeGVzLgoKCSogaW5jbHVkZS93aW5jcnlwdC5oOiBNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglBZGRlZCBDUllQVF9TRVJWRVIgZGVmaW5lLgoKCSogdG9vbHMvd2lkbC93cml0ZV9tc2Z0LmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglBZGQgc3VwcG9ydCBmb3IgaGlkZGVuIGFuZCByZXN0cmljdGVkIGZ1bmN0aW9uIGF0dHJpYnV0ZXMuCglBZGQgc3VwcG9ydCBmb3Igb2RsIGludGVyZmFjZSBhdHRyaWJ1dGUuCgoJKiBkbGxzL250ZGxsL2hlYXAuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2UgSGVhcEZyZWUoTlVMTCkgY2FzZSBmYXN0ZXIgYnkgcmV0cmlldmluZyBoZWFwIHBvaW50ZXIgYWZ0ZXIgdGhlCgltZW1vcnkgYmxvY2sgcG9pbnRlciB0ZXN0LgoKCSogZGxscy9kc291bmQvZHNvdW5kLmMsIGRsbHMvZHNvdW5kL2Rzb3VuZF9wcml2YXRlLmgsCgkgIGRsbHMvZHNvdW5kL21peGVyLmM6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJRml4ZWQgbWVtb3J5IGxlYWsgaW4gbWl4ZXIgY29kZS4KCgkqIGRsbHMvY29tbWRsZy9jZGxnLmgsIGRsbHMvY29tbWRsZy9jZGxnX0VuLnJjLAoJICBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYzoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gRHJhdyBhIHJlcHJlc2VudGF0aW9uIG9mIGEgZG9jdW1lbnQgaW4gdGhlIHBhZ2Ugc2V0dXAgZGlhbG9nLgoJLSBDaGFuZ2Ugc29tZSBGSVhNRSdzIHRvIFRSQUNFJ3MgYmVjYXVzZSBldmVyeXRoaW5nIHdlIG5lZWQgaXMKCSAgaW1wbGVtZW50ZWQgYW5kIHRoZXkgZmlyZSBmb3Igb25lcyB0aGF0IHdlIGRvbid0IG5lZWQgdG8gaW1wbGVtZW50LgoKCSogZGxscy9udGRsbC92aXJ0dWFsLmM6IEdlcmFsZCBQZmVpZmVyIDxnZXJhbGRAcGZlaWZlci5jb20+CglGaXggZm9ybWF0IHN0cmluZyBpbiBOdFF1ZXJ5VmlydHVhbE1lbW9yeSgpLgoKCSogZGxscy9tc2kvcGFja2FnZS5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJVGhlIG5ldyBJbnNlcnQgZml4ZXMgbm93IHByb3Blcmx5IHJlcXVpcmUgPyw/IGluc3RlYWQgb2YganVzdCA/IGZvcgoJdGhlIEluc2VydCBjYWxsLiBUaGlzIGZpeCBtb2RpZmllcyB0aGUgTVNJX1NldFByb3BlcnR5IHF1ZXJ5IHRvIGJlCgljb3JyZWN0LgoKCSogZGxscy9tc2kvc3VtaW5mby5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQW4gaW1wbGVtZW50YXRpb24gb2YgTXNpU3VtbWFyeUluZm9HZXRQcm9wZXJ0eVcgYmFzZWQgb2ZmIG9mCglNc2lTdW1tYXJ5SW5mb0dldFByb3BlcnR5QS4KCgkqIGRsbHMvb2xlMzIvY29tcG9ial9wcml2YXRlLmgsIGRsbHMvb2xlMzIvbWFyc2hhbC5jOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBBZGQgYSBuZXcgZmxhZyBTT1JGUF9OT0xJRkVUSU1FTUdNVCB0byB0ZWxsIHRoZSBwcm94eSBtYW5hZ2VyIG5vdCB0bwoJICBjYWxsIGFueSBJUmVtVW5rbm93biBmdW5jdGlvbnMuCgktIE1vdmUgdGhlIGxvdy1sZXZlbCB1bm1hcnNoYWxpbmcgY29kZSBpbnRvIGEgbmV3IGZ1bmN0aW9uLAoJICB1bm1hcnNoYWxfb2JqZWN0LCBzbyB0aGF0IGl0IGNhbiBiZSBlYXNpbHkgcmV1c2VkIGZvciB1bm1hcnNoYWxpbmcKCSAgSVJlbVVua25vd24uCgoJKiBkbGxzL3gxMWRydi93aW50YWIuYzogUm9iZXJ0IE5vcnRoIDw3b3ducTBrNDAyQHNuZWFrZW1haWwuY29tPgoJR2VuZXJhdGUgV2ludGFiIHBhY2tldHMgZm9yIFhJbnB1dCBidXR0b24gdXAvZG93biBldmVudHMuCgoJKiBkbGxzL21zaS9tc2kuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJSW5kZW50YXRpb24gYW5kIHN0eWxlIGNsZWFudXAuCgoyMDA1LTAxLTIxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy91c2VyL3Rlc3RzL21zZy5jLCBkbGxzL3gxMWRydi93aW5wb3MuYzoKCVR3ZWFrIFNldFdpbmRvd1BvcyBmbGFncyBoYW5kbGluZyB0byBtYWtlIGEgZmV3IG1vcmUgb2YgdGhlIG1lc3NhZ2luZwoJdGVzdHMgcGFzcy4KCgkqIHRvb2xzL3dpZGwvd3JpdGVfbXNmdC5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJQml0IDB4MDIwMCBhbHdheXMgYXBwZWFycyB0byBiZSBzZXQgaW4gdGhlIHR5cGVpbmZvJ3MKCXR5cGVraW5kL2FsaWdubWVudCBtZW1iZXIuCgoJKiB3aW5kb3dzL3dpbnBvcy5jOgoJTWF4IHRyYWNraW5nIHNpemUgaW4gV01fR0VUTUlOTUFYSU5GTyBzaG91bGQgdGFrZSBpbnRvIGFjY291bnQgdGhlCgl3aW5kb3cgZnJhbWUuCgoJKiB0b29scy93aWRsL3dyaXRlX21zZnQuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCVtsb2NhbF0gZnVuY3Rpb25zIHNob3VsZCBub3QgYmUgd3JpdHRlbiB0byB0aGUgdHlwZWxpYi4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jLCBkbGxzL21zaS9tc2lwcml2LmgsIGRsbHMvbXNpL21zaXF1ZXJ5LmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglNb3ZlIE9wZW5RdWVyeSBpbnRvIG1zaXF1ZXJ5LmMgYW5kIG1ha2UgaXQgbm9uLXN0YXRpYy4KCgkqIGRsbHMvY29tY3RsMzIvc3RhdHVzLmM6IEd1bm5hciBEYWxzbmVzIDxoYXJkb25Ab25saW5lLm5vPgoJR2UgdmFuIEdlbGRvcnAgPGd2Z0ByZWFjdG9zLmNvbT4KCVNUQVRVU0JBUl9TZXRUZXh0VDoKCS0gbnRleHQgd2Fzbid0IGZyZWVkIG9uIHJldHVybiBpZiB0ZXh0IHdhcyB1bmljb2RlCgktIHBhcnQtPnRleHQgd2FzIGFsd2F5cyBmcmVlZCwgYnV0IGlmIHRoZSBwcmV2aW91cyBzdHlsZSB3YXMKCSAgU0JUX09XTkVSRFJBVywgcGFydC0+dGV4dCB3b3VsZCBjb250YWluIDMyYml0IGRhdGEKCS0gZnJlZSBvbGQgdGV4dCBpZiBuZXcgc3R5bGUgaXMgU0JUX09XTkVSRFJBVyBidXQgb2xkIHN0eWxlIHdhc24ndAoKCSogZGxscy9zaGx3YXBpL3Rlc3RzL3NocmVnLmM6IFBhdWwgVnJpZW5zIDxQYXVsLlZyaWVuc0B4czRhbGwubmw+CgktIE1vcmUgdmVyYm9zZSBvdXRwdXQgb2YgZXJyb3JzLgoJLSBCYWlsIG91dCBpZiBmaXJzdCB0ZXN0IGZhaWxzIChwcm9kdWNlIG9uZSBlcnJvciBvbmx5KS4KCgkqIGRsbHMvdHR5ZHJ2L3duZC5jLCBkbGxzL3VzZXIvc2Nyb2xsLmMsIGRsbHMvdXNlci91c2VyMzIuc3BlYywKCSAgZGxscy94MTFkcnYvd2luZG93LmMsIGRsbHMveDExZHJ2L3dpbnBvcy5jLCBpbmNsdWRlL3dpbi5oLAoJICB3aW5kb3dzL2RlZnduZC5jLCB3aW5kb3dzL3dpbi5jOgoJTWFrZSBXSU5fU2V0U3R5bGUgbW9yZSB0aHJlYWQtc2FmZSBieSBzcGVjaWZ5aW5nIHRoZSBiaXRzIHRvIGNoYW5nZQoJaW5zdGVhZCBvZiB0aGUgbmV3IHZhbHVlLgoKCSogdG9vbHMvd2lkbC9wcm94eS5jOiBS6W1pIEFzc2FpbGx5IDxyZW1pLmFzc2FpbGx5QGZyZWUuZnI+CglTbWFsbCBjaGFyIC0+IGNvbnN0IGNoYXIgZml4LgoKCSogZGxscy9kM2R4OC9kM2R4YnVmZmVyLmMsIGRsbHMvZG1iYW5kL2JhbmQuYywgZGxscy9kbWJhbmQvYmFuZHRyYWNrLmMsCgkgIGRsbHMvZG1iYW5kL2RtYmFuZF9tYWluLmM6CglQYXVsIFZyaWVucyA8UGF1bC5WcmllbnNAeHM0YWxsLm5sPgoJLSBVc2UgSW50ZXJsb2NrZWQqIGZ1bmN0aW9ucyBpbiBBZGRSZWYgYW5kIFJlbGVhc2UuCgktIFN0b3JlIHRoZSByZXN1bHQgb2YgdGhlIEludGVybG9ja2VkIGZ1bmN0aW9ucyBhbmQgdXNlIG9ubHkgdGhpcy4KCgkqIGRsbHMvbXNpL01ha2VmaWxlLmluLCBkbGxzL21zaS9tc2kuc3BlYywgZGxscy9tc2kvbXNpcHJpdi5oLAoJICBkbGxzL21zaS9wcmV2aWV3LmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBzdHViIGltcGxlbWVudGF0aW9ucyBmb3IgTXNpUHJldmlld0RpYWxvZyBhbmQKCU1zaVByZXZpZXdCaWxsYm9hcmQuCgoJKiBkbGxzL21zaS9tc2lxdWVyeS5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglMb2NrIHJlY29yZCBpbiBNc2lWaWV3RXhlY3V0ZSwgbW92ZSBzdHVicyB0byBlbmQuCgoJKiBkbGxzL3NoZWxsMzIvc2hsdmlldy5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgR2V0QWR2aXNlIGFuZCBTZXRBZHZpc2UuCgoJKiBpbmNsdWRlL250c2VjYXBpLmg6IEp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCUFkZGVkIHNvbWUgZGVmaW5pdGlvbnMuCgoJKiBkbGxzL29sZTMyL3JwYy5jOiBNaWtlIEhlYXJuIDxtaEBjb2Rld2VhdmVycy5jb20+CglWYXJpb3VzIGZvcm1hdHRpbmcvc3R5bGUgY2hhbmdlcy4KCgkqIHByb2dyYW1zL3dpbmV0ZXN0L01ha2VmaWxlLmluOgoJU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtTGluZS5jb20+CglJbmNsdWRlIG5ldyB0ZXN0cy4KCgkqIGRsbHMvcXVhcnR6L3JlZ3N2ci5jOiBNaWtlIEhlYXJuIDxtaEBjb2Rld2VhdmVycy5jb20+CglGaXggaGVhcCBjb3JydXB0aW9uIGluIHF1YXJ0eiBzZXJ2ZXIgcmVnaXN0cmF0aW9uLCBhZGQgc29tZQoJd2hpdGVzcGFjZSwgYnJlYWsgb3V0IG9mIGxvb3AgaWYgb3V0IG9mIG1lbW9yeS4KCjIwMDUtMDEtMjAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3VzZXIvc3lzcGFyYW1zLmMsIGRsbHMvdXNlci90ZXN0cy9zeXNwYXJhbXMuYzoKCUp1c3RpbiBDaGV2cmllciA8amNoZXZyaWVyQG5leGljb20ubmV0PgoJLSBJbXBsZW1lbnRlZCBTUElfU0VUSUNPTk1FVFJJQ1MuCgktIEZpeGVkIFNQSV9HRVRJQ09OVElUTEVMT0dGT05UIHRvIG9ubHkgcmV0dXJuIHZhbHVlcyByZXRyaWV2ZWQgZnJvbQoJICB3aW4uaW5pIG9uIGZpcnN0IGNhbGwgYW5kIHJldHVybiBhIGNhY2hlZCB2ZXJzaW9uIGluIHN1YnNlcXVlbnQKCSAgY2FsbHMuCgktIENyZWF0ZWQgdW5pdCB0ZXN0IGZvciBTUElfe0dFVCxTRVR9SUNPTk1FVFJJQ1MuCgoJKiBkbGxzL21zaS9pbnNlcnQuYywgZGxscy9tc2kvc3FsLnksIGRsbHMvbXNpL3Rlc3RzL2RiLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggYW5kIHRlc3QgaW5zZXJ0aW5nIHJlY29yZHMuCgoJKiBkbGxzL3gxMWRydi9ldmVudC5jLCBkbGxzL3gxMWRydi93aW5kb3cuYywgZGxscy94MTFkcnYveDExZHJ2LmgsCgkgIGRsbHMveDExZHJ2L3hmb250LmM6CglS6W1pIEFzc2FpbGx5IDxyZW1pLmFzc2FpbGx5QGZyZWUuZnI+CglBZGRlZCBtaXNzaW5nIGRlY2xhcmF0aW9ucy4KCgkqIGRsbHMvbXNpL2hhbmRsZS5jLCBkbGxzL21zaS9tc2kuYywgZGxscy9tc2kvbXNpcHJpdi5oLAoJICBkbGxzL21zaS9tc2lxdWVyeS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IHJlZmNvdW50aW5nLCB1c2UgSW50ZXJsb2NrZWQgZnVuY3Rpb25zLgoKCSogdG9vbHMvd2lkbC9wYXJzZXIueTogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCURvbid0IHNldCBBVFRSX0lOIG9yIEFUVFJfT1VUIGJ5IGRlZmF1bHQgLSB0aGlzIGVzc2VudGlhbGx5IHJldmVydHMKCXJldi4gMS4yMS4gIFRoZSBwcm94eSBjb2RlIG11c3QgZXhwbGljaXRseSBhZGQgdGhlc2UgaWYgdGhleSdyZQoJbmVlZGVkLgoKCSogdG9vbHMvd2lkbC93cml0ZV9tc2Z0LmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglCZXR0ZXIgZ3VpZCBoYXNoLgoKCSogZGxscy91c2VyL21lbnUuYywgZGxscy91c2VyL3Njcm9sbC5jLCBkbGxzL3gxMWRydi9ldmVudC5jLAoJICBkbGxzL3gxMWRydi93aW5kb3cuYywgZGxscy94MTFkcnYvd2lucG9zLmMsIHdpbmRvd3MvZGlhbG9nLmMsCgkgIHdpbmRvd3MvbWRpLmMsIHdpbmRvd3Mvbm9uY2xpZW50LmMsIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3Mvd2lucG9zLmM6CglSZXBsYWNlIGEgbnVtYmVyIG9mIGNhbGxzIHRvIFdJTl9GaW5kV25kUHRyIGJ5IFdJTl9HZXRQdHIuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9hZHZwYWNrL01ha2VmaWxlLmluLAoJICBkbGxzL2FkdnBhY2svYWR2cGFjay5jLCBkbGxzL2FkdnBhY2svYWR2cGFjay5zcGVjLAoJICBkbGxzL2FkdnBhY2svdGVzdHMvLmN2c2lnbm9yZSwgZGxscy9hZHZwYWNrL3Rlc3RzL01ha2VmaWxlLmluLAoJICBkbGxzL2FkdnBhY2svdGVzdHMvYWR2cGFjay5jLCBpbmNsdWRlL2FkdnB1Yi5oOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUFkZGVkIHN0dWJzIGZvciBOZWVkUmVib290SW5pdCBhbmQgTmVlZFJlYm9vdC4KCUFkZGVkIGltcGxlbWVudGF0aW9ucyBmb3IgR2V0VmVyc2lvbkZyb21GaWxlIGFuZAoJR2V0VmVyc2lvbkZyb21GaWxlRXguCglBZGRlZCB0ZXN0IGZvciBHZXRWZXJzaW9uRnJvbUZpbGUuCgoJKiBkbGxzL250ZGxsL3ZpcnR1YWwuYywgZGxscy9wc2FwaS9wc2FwaS5zcGVjLCBkbGxzL3BzYXBpL3BzYXBpX21haW4uYywKCSAgaW5jbHVkZS9wc2FwaS5oLCBpbmNsdWRlL3dpbnRlcm5sLmg6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCVN0dWIgaW1wbGVtZW50YXRpb25zIGZvciBFbnVtUGFnZUZpbGVze0EsV30sIEdldFByb2Nlc3NJbWFnZUZpbGVOYW1le0EsV30uCglJbXBsZW1lbnQgR2V0UGVyZm9ybWFuY2VJbmZvLCBHZXRQcm9jZXNzTWVtb3J5SW5mbyBvbiB0b3Agb2YKCU50UXVlcnlJbmZvcm1hdGlvblByb2Nlc3MgYW5kIEdldFdzQ2hhbmdlcywgUXVlcnlXb3JraW5nU2V0eyxFeH0gb24KCXRvcCBvZiBOdFF1ZXJ5VmlydHVhbE1lbW9yeS4KCgkqIGRsbHMvdXNlci9taXNjLmMsIGRsbHMvdXNlci91c2VyMzIuc3BlYzoKCVRhbmFiZSBIaXJvc2hpIDxoaXJva3VuX2RheW9tb25AaW5mb3NlZWsudG8+CglBZGRlZCBzdHVicyBmb3IgU2VuZElNRU1lc3NhZ2VFeFtBLFddLgoKCSogZGxscy9tc2kvdGFibGUuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IGEgYnVnIGNhdXNlZCBieSBmcmVlaW5nIG1lbW9yeSB0b28gc29vbiBpbiB0aGUgdGFibGUgY29kZS4KCgkqIHRvb2xzL3dpZGwvd3JpdGVfbXNmdC5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJTUlETCBhZGRzIHR3byBzZXRzIG9mIGN1c3RvbSBkYXRhIHRvIHRoZSBsaWJyYXJ5OiBvbmUgaXMgYSB0aW1lc3RhbXAKCWFuZCB0aGUgc2Vjb25kIGlzIE1JREwncyB2ZXJzaW9uIG51bWJlci4KCgkqIGRsbHMvY29tbWRsZy9jZGxnX1J1LnJjOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQ29ycmVjdCBjb29yZGluYXRlcyBvZiBhIGNvdXBsZSBvZiBjb250cm9scy4KCgkqIGluY2x1ZGUvbXNpcXVlcnkuaDogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRGVjbGFyZSB0aGUgcHJldmlldyBmdW5jdGlvbnMuCgoJKiBkbGxzL2QzZHhvZi9kM2R4b2YuYywgZGxscy9kM2R4b2YvZDNkeG9mX3ByaXZhdGUuaDoKCVBhdWwgVnJpZW5zIDxQYXVsLlZyaWVuc0B4czRhbGwubmw+CgktIFVzZSBJbnRlcmxvY2tlZCogZnVuY3Rpb25zIGluIEFkZFJlZiBhbmQgUmVsZWFzZS4KCS0gU3RvcmUgdGhlIHJlc3VsdCBvZiB0aGUgSW50ZXJsb2NrZWQgZnVuY3Rpb25zIGFuZCB1c2Ugb25seSB0aGlzLgoKCSogZGxscy9udGRsbC90aW1lLmM6IFRvbnkgTGFtYnJlZ3RzIDx0b255X2xhbWJyZWd0c0B0ZWx1c3BsYW5ldC5uZXQ+CglBZGRlZCB0aW1lIHpvbmUgaW5mb3JtYXRpb24gZm9yIFNBTVQgKFNhbWFyYSBTdGFuZGFyZCBUaW1lKS4KCgkqIGRsbHMvbnRkbGwvc2VjLmM6IFVscmljaCBDemVrYWxsYSA8dWxyaWNoQGNvZGV3ZWF2ZXJzLmNvbT4KCUFDTCBmaXhlcyBhbmQgY2xlYW51cHMuCgoJKiBkbGxzL2NmZ21ncjMyL2NmZ21ncjMyLnNwZWMsIGRsbHMvY2ZnbWdyMzIvbWFpbi5jOgoJPEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglBZGRlZCBzb21lIHN0dWIgaW1wbGVtZW50YXRpb25zLgoKCSogZGxscy9tc2kvYWN0aW9uLmMsIGRsbHMvbXNpL2NvbmQueSwgZGxscy9tc2kvZGlzdGluY3QuYywKCSAgZGxscy9tc2kvbXNpLmMsIGRsbHMvbXNpL29yZGVyLmMsIGRsbHMvbXNpL3BhY2thZ2UuYywKCSAgZGxscy9tc2kvc3RyaW5nLmMsIGRsbHMvbXNpL3N1bWluZm8uYywgZGxscy9tc2kvdGFibGUuYywKCSAgZGxscy9tc2kvd2hlcmUuYzoKCU1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuZGU+CglEbyBub3QgY2hlY2sgZm9yIG5vbiBOVUxMIHBvaW50ZXIgYmVmb3JlIEhlYXBGcmVlJ2luZyBpdC4gSXQncwoJcmVkdW5kYW50LgoKCSogZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvbWFyc2hhbC5jOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBDb25zb2xpZGF0ZSBtb3JlIHN0dWIgY3JlYXRpb24gZGV0YWlscyBpbnRvIHJlZ2lzdGVyX2lmc3R1Yi4KCS0gUmVwbGFjZSB0aGUgY3VycmVudCB3aW5lX21hcnNoYWxfaWQgc3RydWN0dXJlIHdpdGggU1RET0JKUkVGIGZvciB0aGUKCSAgb24tdGhlLXdpcmUgZm9ybWF0LgoKCSogZGxscy9uZXRhcGkzMi9uZXRhcGkzMi5zcGVjLCBkbGxzL25ldGFwaTMyL3drc3RhLmMsCgkgIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvbG0uaCwgaW5jbHVkZS9sbWpvaW4uaDoKCVVscmljaCBDemVrYWxsYSA8dWxyaWNoQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIHN0dWIgaW1wbGVtZW50YXRpb24gb2YgTmV0R2V0Sm9pbkluZm9ybWF0aW9uLgoKMjAwNS0wMS0xOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL2xvY2FsZS5jLCBkbGxzL2tlcm5lbC9ubHMvdWtyLm5scywgZGxscy9tbGFuZy9tbGFuZy5jLAoJICBkbGxzL3gxMWRydi9rZXlib2FyZC5jLCBkbGxzL3gxMWRydi94Zm9udC5jLAoJICBsaWJzL3VuaWNvZGUvTWFrZWZpbGUuaW4sIGxpYnMvdW5pY29kZS9jXzIxODY2LmMsCgkgIGxpYnMvdW5pY29kZS9jcG1hcC5wbCwgbGlicy91bmljb2RlL2NwdGFibGUuYzoKCU9sZWggUi4gTnlreWZvcmNoeW4gPG5pY2tAcHUuaWYudWE+CglVa3JhaW5pYW4gY29kZXBhZ2UgMjE4NjYgYWRkZWQgYW5kIHJlc3BlY3RpdmUgZmlsZXMgY29ycmVjdGVkLiBUd28KCWtleWJvYXJkIGxheW91dHMgKGZvciBVa3JhaW5pYW4gYW5kIFJ1c3NpYW4pIGFkZGVkLgoKCSogaW5jbHVkZS93aW5lL3dpbmVkM2RfaW50ZXJmYWNlLmg6CglNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmRlPgoJSGFjayB0byBmaXggdGhlIGNvbXBpbGUuCgoJKiB3aW5kb3dzL3dpbi5jOiBVbHJpY2ggQ3pla2FsbGEgPHVscmljaEBjb2Rld2VhdmVycy5jb20+CglIYW5kbGUgY2FzZSB3aGVuIG9ubHkgaGVpZ2h0IGlzIHNldCB0byBDV19VU0VERUZBVUxULgoKCSogZG9jdW1lbnRhdGlvbi93aW5lZGV2LWNvZGluZy5zZ21sOgoJQmlsbCBNZWRsYW5kIDxiaWxsbWVkbGFuZEBtZXJjdXJ5c3BlZWQuY29tPgoJVHJpdmlhbCBsYW5ndWFnZSBjb3JyZWN0aW9ucyB0byB0aGUgV2luZSBEZXZlbG9wZXIncyBHdWlkZSBjb2RpbmcKCXNlY3Rpb24uCgoJKiBkbGxzL3VzZXIvZWRpdC5jOiBMYXVyaSBUdWxtaW4gPGxhdXJpX0B1dC5lZT4KCVJlcG9zaXRpb24gY2FyZXQgYWZ0ZXIgd2luZG93IHJlc2l6ZS4KCgkqIGRsbHMvd2luZWQzZC9NYWtlZmlsZS5pbiwgZGxscy93aW5lZDNkL3ZlcnRleGRlY2xhcmF0aW9uLmMsCgkgIGRsbHMvd2luZWQzZC93aW5lZDNkX3ByaXZhdGUuaCwgaW5jbHVkZS93aW5lL3dpbmVkM2RfaW50ZXJmYWNlLmg6CglSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCUJlZ2luIHN1cHBvcnQgb2YgVmVydGV4RGVjbGFyYXRpb24gb24gd2luZWQzZCB1c2luZyBkM2Q4IGNvZGUgYmFzZQoJKGhhbmRsaW5nIGQzZDggYW5kIGQzZDkgc3BlY3MpLgoKCSogd2luZG93cy9jdXJzb3JpY29uLmM6IFZpdGFseSBMaXBhdG92IDxsYXZAZXRlcnNvZnQucnU+CglBZGQgRklYTUUgZm9yIGZpbGUgd2l0aCBicm9rZW4gY291bnRlcnMuCgoJKiBkbGxzL3VzZXIvZWRpdC5jOiBMYXVyaSBUdWxtaW4gPGxhdXJpX0B1dC5lZT4KCURvbid0IHJlY2FsY3VsYXRlIGxpbmUgaW5kZXhlcyBpZiBudW1iZXIgb2YgbGluZXMgZG9lc24ndCBjaGFuZ2UuCgoJKiB0b29scy93aWRsL3R5cGVsaWJfc3RydWN0LmgsIHRvb2xzL3dpZGwvd3JpdGVfbXNmdC5jOgoJSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBwcm9wZ2V0IGFuZCBwcm9wcHV0IGZ1bmN0aW9uIGF0dHJpYnV0ZXMuCglDbGFyaWZ5IHRoZSBtZWFuaW5nIG9mIHRoZSBGS0NDSUMgYml0IGZpZWxkLgoKCSogZGxscy9tc2kvYWN0aW9uLmMsIGRsbHMvbXNpL21zaXByaXYuaDoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglRdWl0ZSBhIGZldyBmaXhlczoKCS0gQWxsb3cgZm9yIHRoZSBxdWVpbmcgb2YgY3VzdG9tIGFjdGlvbnMgdG8gdHJpZ2dlciBvbiB0aGUKCSAgSW5zdGFsbEV4ZWN1dGUgb3IgSW5zdGFsbEV4ZWN1dGVBZ2FpbiBhY3Rpb25zLgoJLSBhbGxvdyBmb3IgdGhlIHF1ZWluZyBvZiBjdXN0b20gYWN0aW9ucyB0byB0cmlnZ2VyIG9uCgkgIEluc3RhbGxGaW5hbGl6ZS4KCS0gUHJvcGVybHkgc2V0IHRoZSBDdXN0b21BY3Rpb25EYXRhIHByb3BlcnR5IGZvciBzYWlkIHF1ZXVlZCBhY3Rpb25zLgoJLSBJbXBsZW1lbnQgUmVnaXN0ZXJQcm9kdWN0LgoJLSBCZWdpbm5pbmcgaW1wbGVtZW50YXRpb24gb2YgRm9yY2VSZWJvb3QuCgktIERvbid0IGtpbGwgaW5zdGFsbCBpZiBhbiBpdGVtIHRvIGJlIGR1cGxpY2F0ZWQgZG9lcyBub3QgZXhpc3QuCgktIFdyaXRlIG91dCBTb3VyY2VMaXN0IGFuZCBMYXN0VXNlZFNvdXJjZSBmb3IgcmVzdW1pbmcgaW5zdGFsbHMuCgktIFVzZSByZWdzdnIzMiB0byByZWdpc3RlciBzZWxmIHJlZyBkbGxzLgoKCSogZGxscy9zaGRvY3Z3L21pc2MuYywgZGxscy9zaGRvY3Z3L3NoZG9jdncuc3BlYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVN0dWIgZGVmaW5pdGlvbiBmb3IgT3BlblVybC4KCgkqIGluY2x1ZGUvd2luLmgsIHdpbmRvd3Mvd2luLmM6CglSZW1vdmVkIG5vIGxvbmdlciB1c2VkIFdJTl9JbnRlcm5hbFNob3dPd25lZFBvcHVwcyBmdW5jdGlvbi4KCgkqIGRsbHMvdHR5ZHJ2L3duZC5jOgoJU3RvcmUgdGhlIHdpbmRvdyBpZCBhcyBhIHByb3BlcnR5IGluc3RlYWQgb2YgYWNjZXNzaW5nIHRoZSBXTkQKCXN0cnVjdHVyZSBkaXJlY3RseS4KCUZldGNoIHRoZSB1cGRhdGUgcmVnaW9uIGZyb20gdGhlIHNlcnZlciBhbmQgcmVtb3ZlIGEgbG90IG9mIG9ic29sZXRlCgljb2RlLgoKCSogZGxscy9rZXJuZWwvY3B1LmM6IFJlaW4gS2xhemVzIDx3aWpuQHdhbmFkb28ubmw+CglSZXR1cm4gYSBmaXhlZCBmcmVxdWVuY3kgb2YgMTE5MzE4MiBIeiBmb3IgdGhlIFBlcmZvcm1hbmNlIENvdW50ZXIuCgoJKiBkbGxzL2tlcm5lbC9zeW5jLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCBUcmFuc2FjdE5hbWVkUGlwZSBmb3IgdGhlIG5vbi1vdmVybGFwcGVkIGNhc2UuCgoJKiBkbGxzL2F0bC9hdGwuc3BlYywgZGxscy9hdGwvYXRsX21haW4uYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVN0dWIgaW1wbGVtZW50YXRpb24gZm9yIHNvbWUgZnVuY3Rpb25zLgoKCSogZGxscy9vbGUzMi9tYXJzaGFsLmMsIGRsbHMvb2xlMzIvb2xlcHJveHkuYywKCSAgZGxscy9vbGUzMi90ZXN0cy9tYXJzaGFsLmM6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIEluaXRpYWxpemUgcHB2IHBvaW50ZXIgaW4gQ2xpZW50SWRlbnRpdHlfUXVlcnlJbnRlcmZhY2UgdG8gTlVMTCBhcwoJICBhcHBzIGRlcGVuZCBvbiB0aGlzLgoJLSBEb24ndCByZWxlYXNlIElScGNQcm94eUJ1ZmZlciBvbiBpZnByb3h5IGRlc3RydWN0aW9uIC0gdGhlIGNhbGxlcgoJICB3aWxsIGRvIHRoaXMgZm9yIHVzLgoJLSBNYWtlIGZpbmRfcHJveHlfbWFuYWdlciBhZGQgYSByZWZlcmVuY2UgdG8gdGhlIHByb3h5IG1hbmFnZXIgYW5kCgkgIG1ha2UgcHJveHlfbWFuYWdlcl9jb25zdHJ1Y3QgcmV0dXJuIGFuIG9iamVjdCB3aXRoIGEgdmFsaWQKCSAgcmVmLWNvdW50LgoJLSBSZW1vdmUgc3RyYXkgbm90IG9wZXJhdG9yIHRvIGZpeCBhIG1lbW9yeSBsZWFrIC8gY3Jhc2ggaW4KCSAgcHJveHlfbWFuYWdlcl9kZXN0cm95LgoJLSBNb3JlIGRlYnVnIG1lc3NhZ2VzLCBlc3BlY2lhbGx5IG9uIGVycm9ycy4KCS0gRml4IHJlZi1jb3VudCBsZWFrIGluIHRoZSBDbGFzcyBGYWN0b3J5IHByb3h5LgoJLSBBZGQgYSB0ZXN0IGNhc2UgZm9yIElDbGFzc0ZhY3RvcnlfQ3JlYXRlSW5zdGFuY2UuCgoJKiBwcm9ncmFtcy93aW5lY2ZnL2RyaXZldWkuYzogUGF1bCB2YW4gU2NoYXljayA8cG9sbGVrZUBnbWFpbC5jb20+CglSZXNldCB0aGUgdHlwZSBkcm9wZG93biB3aGVuIHNlbGVjdGluZyBhbm90aGVyIGRyaXZlLgoKCSogZGxscy92ZXJzaW9uL3Rlc3RzL2luZm8uYzoKCVN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJRml4ZWQgR2V0RmlsZVZlcnNpb25JbmZvU2l6ZUEgdGVzdHMgb24gV2luTUUuCgoJKiBkbGxzL3JzYWVuaC9yc2FlbmguYzogTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJQXZvaWQgY29kZSBkdXBsaWNhdGlvbiBieSBtb3ZpbmcgaGFuZGxlIGxvb2t1cCBpbnRvIGdldF9hbGdpZF9pbmZvLgoKCSogZGxscy93aW5lZDNkL2Jhc2V0ZXh0dXJlLmMsIGRsbHMvd2luZWQzZC9pbmRleGJ1ZmZlci5jLAoJICBkbGxzL3dpbmVkM2QvcmVzb3VyY2UuYywgZGxscy93aW5lZDNkL3N1cmZhY2UuYywKCSAgZGxscy93aW5lZDNkL3ZlcnRleGJ1ZmZlci5jOgoJSm9yaXMgSHVpemVyIDxqb3Jpc2h1aXplckBwbGFuZXQubmw+CglHZXQgcmlkIG9mIHNvbWUgVFJBQ0UoLi4uLCBUaGlzLT5yZXNvdXJjZS5yZWYpLgoKCSogdG9vbHMvd2lkbC93cml0ZV9tc2Z0LmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglQYWQgc21hbGwgc3RyaW5ncyBvdXQgdG8gZWlnaHQgYnl0ZXMuCglGaXggJ2hhcyBkZWZhdWx0IHZhbHVlcycgZmxhZy4KCgkqIGRsbHMvbXNpL21zaS5jLCBkbGxzL21zaS9tc2kuc3BlYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglEbyBhIHZlcnkgYmFzaWMgZmlyc3QgaW1wbGVtZW50YXRpb24gb2YgTXNpQ29uZmlndXJlUHJvZHVjdEV4VyBmb3IKCW1zaWV4ZWMgL0AgIHdoZW4gcnVuIGFzIGEgcmVib290LgoJQWxzbyBhZGQgYSBudW1iZXIgb2YgbmV3IHN0dWJzIGZvciB0aGUgb2ZmaWNlIHhwIGFuZCAyazMgaW5zdGFsbCBhbmQKCXN0YXJ0dXAgcHJvY2Vzcy4KCgkqIGluY2x1ZGUvbXNpLmg6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIGRlZmluaXRpb24gZm9yIHRoZSBVU0VSSU5GT1NUQVRFIGVudW1lcmF0aW9uLgoKCSogZGxscy9zZXR1cGFwaS9kZXZpbnN0LmMsIGRsbHMvc2V0dXBhcGkvc2V0dXBhcGkuc3BlYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBzb21lIHN0dWIgaW1wbGVtZW50YXRpb25zLgoKMjAwNS0wMS0xOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvdXNlci9tc2cxNi5jLCBpbmNsdWRlL3dpbnBvcy5oLCB3aW5kb3dzL2RlZnduZC5jLAoJICB3aW5kb3dzL3dpbnBvcy5jOgoJTW92ZWQgRGVmV2luZG93UHJvYzE2IHRvIG1zZzE2LmMgYW5kIGNsZWFuZWQgdXAgYSBmZXcgcmVsYXRlZCB0aGluZ3MuCgoJKiBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYywgZGxscy93aW5pbmV0L3Rlc3RzL2h0dHAuYywKCSAgZGxscy93aW5pbmV0L3dpbmluZXQuc3BlYywgaW5jbHVkZS93aW5pbmV0Lmg6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCUltcGxlbWVudCBhbmQgdGVzdCBJbnRlcm5ldFRpbWV7RnJvbSxUb31TeXN0ZW1UaW1le0EsV30uCglDb3JyZWN0IHNwZWxsaW5nIGluIEludGVybmV0Q2hlY2tDb25uZWN0aW9uQS4KCgkqIGRsbHMvZDNkOS9jdWJldGV4dHVyZS5jLCBkbGxzL2QzZDkvZGV2aWNlLmMsIGRsbHMvZDNkOS9kaXJlY3R4LmMsCgkgIGRsbHMvZDNkOS9pbmRleGJ1ZmZlci5jLCBkbGxzL2QzZDkvc3VyZmFjZS5jLCBkbGxzL2QzZDkvdGV4dHVyZS5jLAoJICBkbGxzL2QzZDkvdmVydGV4YnVmZmVyLmMsIGRsbHMvZDNkOS92b2x1bWUuYywKCSAgZGxscy9kM2Q5L3ZvbHVtZXRleHR1cmUuYywgZGxscy93aW5lZDNkL2RldmljZS5jLAoJICBkbGxzL3dpbmVkM2QvZGlyZWN0eC5jLCBkbGxzL3dpbmVkM2Qvc3VyZmFjZS5jLAoJICBkbGxzL3dpbmVkM2Qvd2luZWQzZF9wcml2YXRlLmgsIGluY2x1ZGUvZDNkOXR5cGVzLmgsCgkgIGluY2x1ZGUvd2luZS93aW5lZDNkX2ludGVyZmFjZS5oOgoJSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCS0gSGFuZGxlIGZhaWx1cmVzIHRvIGFsbG9jYXRlIHN0b3JhZ2UgbW9yZSBncmFjZWZ1bGx5LgoJLSBPbmx5IHByb3RvdHlwZSB0aGUgaW50ZXJmYWNlcyB3aGljaCBhcmUgc3ViY2xhc3NlZCAoSSBvdmVyZGlkIGl0CgkgIGxhc3QgdGltZSEpLgoJLSBJbXBsZW1lbnQgR2V0L1NldCBUZXh0dXJlIGFuZCBHZXRCYWNrQnVmZmVyLCBwbHVzIGRldmljZSdzCgkgIEdldERpc3BsYXlNb2RlIC8gR2V0RGV2aWNlQ2Fwcy4KCS0gTWFrZSBzb21lIG9mIHRoZSBkM2Q5IHNrZWxldG9uIGNvZGUgaXNzdWUgZml4bWUncyB0byBoaWdobGlnaHQgY29kZQoJICB3aGljaCBoYXNuJ3QgYmVlbiBtaWdyYXRlZCB5ZXQuCgktIENvcnJlY3QgdGhlIGQzZDkgaGVhZGVycyBmb3IgRDNEU1VSRkFDRV9ERVNDIHdoaWNoIGNhdXNlZCBzdGFjawoJICBjb3JydXB0aW9uIGluIGRlbW9zLgoKCSogaW5jbHVkZS93aW5zdmMuaDogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWRkIGRlZmluaXRpb25zIGZvciBzZXNzaW9uIGNoYW5nZSBub3RpZmljYXRpb25zLgoKCSogZGxscy9tcHIvbmV0c3BpLmgsIGRsbHMvbXByL25wcy5jLCBpbmNsdWRlL01ha2VmaWxlLmluLAoJICBpbmNsdWRlL25ldHNwaS5oOgoJSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJTWFrZSBuZXRzcGkuaCBwcml2YXRlLCBhcyBzb21lIG9mIGl0cyBkZWNsYXJhdGlvbnMgY29uZmxpY3Qgd2l0aAoJbnBhcGkuaC4gIFNwb3R0ZWQgYnkgUGF1bCBWcmllbnMuCgoJKiBkbGxzL3NldHVwYXBpL3F1ZXVlLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglDb3B5IHRoZSBpbXBsZW1lbnRhdGlvbiBmcm9tIFNldHVwRGVmYXVsdFF1ZXVlQ2FsbGJhY2tBIGFuZCBtYWtlIGl0CglXLgoKCSogdG9vbHMvd2lkbC93cml0ZV9tc2Z0LmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglBZGQgYSBtaXNzaW5nIGJyZWFrIHRvIGZpeCB0eXBlaW5mbyB2ZXJzaW9uIHJlZ3Jlc3Npb24uCgoJKiBkbGxzL3NobHdhcGkvcGF0aC5jLCBkbGxzL3NobHdhcGkvcmVnLmMsIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWM6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCVN0dWIgaW1wbGVtZW50YXRpb25zIGZvciBQYXRoVW5FeHBhbmRFbnZTdHJpbmdzU0hSZWdFbnVtVVNWYWx1ZXtBLFd9LAoJU0hSZWdDcmVhdGVVU0tleXtBLFd9LCBTSFJlZ0RlbGV0ZUVtcHR5VVNLZXl7QSxXfSwKCVNIUmVnRGVsZXRlVVNWYWx1ZXtBLFd9LCBTSFJlZ0VudW1VU1ZhbHVle0EsV30uCgoyMDA1LTAxLTE3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy91c2VyL2NvbnRyb2xzLmgsIGRsbHMvdXNlci9tZW51LmMsIGRsbHMvdXNlci91c2VyMzIuc3BlYywKCSAgZGxscy94MTFkcnYvd2lucG9zLmMsIGluY2x1ZGUvbm9uY2xpZW50LmgsIHdpbmRvd3MvZGVmd25kLmMsCgkgIHdpbmRvd3MvbWRpLmMsIHdpbmRvd3Mvbm9uY2xpZW50LmMsIHdpbmRvd3Mvd2lucG9zLmM6CglHZXQgcmlkIG9mIG5vbmNsaWVudC5oIGFuZCBvZiB0aGUgY29ycmVzcG9uZGluZyBleHBvcnRlZCBmdW5jdGlvbnMgaW4KCXVzZXIzMi5zcGVjLgoKCSogZGxscy9vbGVhdXQzMi90ZXN0cy92YXJ0ZXN0LmMsIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jOgoJQWxleCBWaWxsYWPtcyBMYXNzbyA8YV92aWxsYWNpc0BwYWxvc2FudG8uY29tPgoJV2hlbiBwYXJzaW5nIGFuIGhleC9vY3QgaW50ZWdlciB2YWx1ZSwgY29weSB2YWx1ZSB2ZXJiYXRpbSBpbiBWQVJJQU5ULAoJcmF0aGVyIHRoYW4gYSBuZWdhdGVkIHZhbHVlLiBBZGQgdGVzdCBjYXNlIGZvciB0aGlzIGJlaGF2aW9yLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfRGUucmM6CglIZW5uaW5nIEdlcmhhcmR0IDxoZW5uaW5nLmdlcmhhcmR0QHdlYi5kZT4KCUEgc21hbGwgc3BlbGxpbmcgZml4IGFuZCBhIHNtYWxsIHVwZGF0ZSAodGhhbmsgdG8gQW5kcmVhcyBNb2hyKS4KCgkqIGRsbHMvb2xlMzIvbWFyc2hhbC5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglJbml0aWFsaXplIGNsc2lkIG1lbWJlciB0byB0aGUgbWFyc2hhbGVyIGNsc2lkIHRvIGZpeCBjdXN0b20KCW1hcnNoYWxpbmcuCgoJKiBkbGxzL3VzZXIvZWRpdC5jOiBMYXVyaSBUdWxtaW4gPGxhdXJpX0B1dC5lZT4KCU1ha2UgbG9uZyBsaW5lcyBiZWhhdmUgbmljZWx5LgoKCSogZGxscy94MTFkcnYvY2xpcGJvYXJkLmMsIGRsbHMveDExZHJ2L2V2ZW50LmMsIGRsbHMveDExZHJ2L21vdXNlLmMsCgkgIGRsbHMveDExZHJ2L3Njcm9sbC5jLCBkbGxzL3gxMWRydi93aW5kb3cuYywgZGxscy94MTFkcnYvd2lucG9zLmMsCgkgIGRsbHMveDExZHJ2L3gxMWRydi5oLCBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jLCB3aW5kb3dzL2RlZnduZC5jOgoJQXZvaWQgbW9zdCByZWZlcmVuY2VzIHRvIHRoZSBpbnRlcm5hbHMgb2YgdGhlIFdORCBzdHJ1Y3R1cmUgYnkgcGFzc2luZwoJYXJvdW5kIGFuIHgxMWRydl93aW5fZGF0YSBwb2ludGVyIGluc3RlYWQuCgoJKiBkbGxzL3VzZXIvZWRpdC5jLCBkbGxzL3VzZXIvdXNlcjMyLnNwZWMsIGRsbHMveDExZHJ2L3dpbnBvcy5jOgoJUmVtb3ZlZCBhIGNvdXBsZSBvZiB1bm5lY2Vzc2FyeSBjYWxscyB0byBXSU5fU3VzcGVuZFduZHNMb2NrLgoKCSogZGxscy9zaGx3YXBpL3Rlc3RzL3NocmVnLmM6IFBhdWwgVnJpZW5zIDxQYXVsLlZyaWVuc0B4czRhbGwubmw+CglVc2UgYSByZWdpc3RyeSBrZXkgZm9yIGNvcHlpbmcsIHRoYXQncyBrbm93biBvbiBldmVyeSBzeXN0ZW0uCgoJKiBkbGxzL2NvbW1kbGcvY2RsZ19Gci5yYywgZGxscy9tcHIvbXByLnJjLCBkbGxzL21wci9tcHJfRnIucmMsCgkgIGRsbHMvb2xlZGxnL29sZWRsZ19Gci5yYywgZGxscy9vbGVkbGcvcnNyYy5yYywKCSAgZGxscy93aW5pbmV0L3dpbmluZXRfRnIucmM6CglKb25hdGhhbiBFcm5zdCA8Sm9uYXRoYW5ARXJuc3RGYW1pbHkuY2g+CglVcGRhdGVkIEZyZW5jaCByZXNvdXJjZXMuCgoJKiBkbGxzL21zdmlkZW8vZHJhd2RpYi5jLCBkbGxzL21zdmlkZW8vbXN2ZnczMi5zcGVjLAoJICBkbGxzL21zdmlkZW8vbXN2aWRlb19tYWluLmMsIGluY2x1ZGUvdmZ3Lmg6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCVN0dWIgaW1wbGVtZW50YXRpb25zIGZvciBEcmF3RGliQ2hhbmdlUGFsZXR0ZSwgRHJhd0RpYkdldEJ1ZmZlciwKCURyYXdEaWJUaW1lLCBJQ1NlcUNvbXByZXNzRnJhbWV7LEVuZCxTdGFydH0uCglGb3J3YXJkIEdldE9wZW5GaWxlTmFtZVByZXZpZXcgdG8gR2V0T3BlbkZpbGVOYW1lUHJldmlld0EuCgoJKiBkbGxzL3NobHdhcGkvcmVnLmMsIGRsbHMvc2hsd2FwaS90ZXN0cy9zaHJlZy5jOgoJUGF1bCBWcmllbnMgPFBhdWwuVnJpZW5zQHhzNGFsbC5ubD4KCUNoYW5nZSB0aGUgb3JkZXIgb2YgU3JjIGFuZCBEc3QgaW4gQ29weUtleSBjYWxscy9mdW5jdGlvbnMuCgoJKiB3aW5kb3dzL3dpbnBvcy5jOiBTbWFsbCBvcHRpbWl6YXRpb24gaW4gV0lOUE9TX0dldFdpbk9mZnNldC4KCgkqIGRsbHMvdXNlci91c2VyX21haW4uYywgZGxscy91c2VyL3VzZXJfcHJpdmF0ZS5oLAoJICBkbGxzL3gxMWRydi93aW5wb3MuYywgZGxscy94MTFkcnYveDExZHJ2LnNwZWM6CglSZW1vdmVkIHVudXNlZCBGb3JjZVdpbmRvd1JhaXNlIGZ1bmN0aW9uLgoKCSogZGxscy9kM2Q5L2Jhc2V0ZXh0dXJlLmMsIGRsbHMvZDNkOS9jdWJldGV4dHVyZS5jLAoJICBkbGxzL2QzZDkvZDNkOV9wcml2YXRlLmgsIGRsbHMvZDNkOS9kZXZpY2UuYywgZGxscy9kM2Q5L3Jlc291cmNlLmMsCgkgIGRsbHMvZDNkOS9zdXJmYWNlLmMsIGRsbHMvZDNkOS90ZXh0dXJlLmMsIGRsbHMvZDNkOS92b2x1bWUuYywKCSAgZGxscy9kM2Q5L3ZvbHVtZXRleHR1cmUuYywgZGxscy93aW5lZDNkL01ha2VmaWxlLmluLAoJICBkbGxzL3dpbmVkM2QvYmFzZXRleHR1cmUuYywgZGxscy93aW5lZDNkL2N1YmV0ZXh0dXJlLmMsCgkgIGRsbHMvd2luZWQzZC9kZXZpY2UuYywgZGxscy93aW5lZDNkL2RyYXdwcmltLmMsCgkgIGRsbHMvd2luZWQzZC9pbmRleGJ1ZmZlci5jLCBkbGxzL3dpbmVkM2Qvc3VyZmFjZS5jLAoJICBkbGxzL3dpbmVkM2QvdGV4dHVyZS5jLCBkbGxzL3dpbmVkM2QvdXRpbHMuYywKCSAgZGxscy93aW5lZDNkL3ZlcnRleGJ1ZmZlci5jLCBkbGxzL3dpbmVkM2Qvdm9sdW1lLmMsCgkgIGRsbHMvd2luZWQzZC92b2x1bWV0ZXh0dXJlLmMsIGRsbHMvd2luZWQzZC93aW5lZDNkX3ByaXZhdGUuaCwKCSAgaW5jbHVkZS93aW5lL3dpbmVkM2RfaW50ZXJmYWNlLmg6CglKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJLSBBZGQgdGV4dHVyZSBzdXBwb3J0IGZvciBhbGwgdGhlIHRleHR1cmUgdHlwZXMgZm9yIGQzZDktPndpbmVkM2QuCgktIEFkZCBwcm90b3R5cGVzIGZvciB0aGUgQ09NIGludGVyZmFjZXMuCgktIEZpeCBzb21lIGluY29ycmVjdCB0eXBlcyBmcm9tIHRoZSBsYXN0IHBhdGNoLgoKCSogZGxscy93aW5tbS93aW5tbV9EZS5yYzogS2xlbWVucyBGcmllZGwgPGtsZW1lbnNfZnJpZWRsQGdteC5uZXQ+CglIZW5uaW5nIEdlcmhhcmR0IDxoZW5uaW5nLmdlcmhhcmR0QHdlYi5kZT4KCVNwZWxsaW5nIGZpeGVzLgoKCSogZGxscy9jb21tZGxnL2NkbGdfRGUucmMsIGRsbHMvbXByL21wcl9EZS5yYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfRGUucmMsIGRsbHMvd2luaW5ldC93aW5pbmV0X0RlLnJjLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZV9EZS5yYzoKCUhlbm5pbmcgR2VyaGFyZHQgPGhlbm5pbmcuZ2VyaGFyZHRAd2ViLmRlPgoJVXBkYXRlIEdlcm1hbiByZXNvdXJjZXMuCgoJKiBpbmNsdWRlL3dpbmNyeXB0Lmg6IE1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCUFkZGVkIGRlZmluaXRpb25zIG9mIFRMUzFQUkYgYWxnb3JpdGhtIGlkZW50aWZpZXJzLgoKCSogZGxscy9zaGx3YXBpL3Rlc3RzL2NsaXN0LmM6IFBhdWwgVnJpZW5zIDxQYXVsLlZyaWVuc0B4czRhbGwubmw+CglVc2UgSW50ZXJsb2NrZWQqIGZ1bmN0aW9ucyBpbiBBZGRSZWYgYW5kIFJlbGVhc2UuCgoJKiBwcm9ncmFtcy93aW5lY2ZnL2xpYnJhcmllcy5jOiBHZXJhbGQgUGZlaWZlciA8Z2VyYWxkQHBmZWlmZXIuY29tPgoJVXNlIHN3aXRjaCBzdGF0ZW1lbnRzIGluc3RlYWQgb2YgaWYtY2FzY2FkZXMuIEF2b2lkIHdhcm5pbmdzLgoKCSogZGxscy9yc2FlbmgvcnNhZW5oLmM6IE1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCU1vdmVkIEhNQUMgaW5pdGlhbGl6YXRpb24gYW5kIGZpbmFsaXphdGlvbiBjb2RlIHRvCglpbml0Xy9maW5hbGl6ZV9oYXNoLgoJUmVtb3ZlZCB0aGUgcmVkdW5kYW50IHBLZXlDb250YWluZXIgZnVuY3Rpb24gcGFyYW1ldGVyIGZyb20KCWluaXRfaGFzaC4KCgkqIHRvb2xzL3dpZGwvd3JpdGVfbXNmdC5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJQWRkIFZUX1ZBUklBTlQgc3VwcG9ydC4KCUZpeCBmb3IgdGhlIGNhc2Ugd2hlbiB0aGVyZSBpcyBubyBoZWxwc3RyaW5nZGxsLgoJRml4IGZvciBwYXJhbWV0ZXIgYXJyYXlzLgoKCSogZGxscy9tc2kvYWN0aW9uLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnRhdGlvbnMgZm9yIFNlbGZSZWdNb2R1bGVzIGFuZCBQdWJsaXNoRmVhdHVyZXMuCglTZXQgZGVmYXVsdCBBQ1RJT04gcHJvcGVydHkgZm9yIEluc3RhbGwuCglEZWZvcm1hdCBtb3JlIHRoYW4gSlVTVCBwcm9wZXJ0aWVzIHByb3Blcmx5LiBBbGxvd3MgZm9yIEZpbGVzIGFuZAoJQ29tcG9uZW50IHBhdGhzIGluIGRlZm9ybWF0LgoJUHJvcGVybHkgZGVmb3JtYXQgYSBMYXVuY2hDb25kaXRpb24gZmFpbHVyZSBkaWFsb2cgYm94LgoJUmVzb2x2ZSBhbmQgc2F2ZSByZWdpc3RyeSBLZXlwYXRocy4KCVdyaXRlIHRoZSBGZWF0dXJlcyBwdWJsaXNoZWQga2V5cyBtb3JlIGNvcnJlY3RseS4gU3RpbGwgc29tZQoJcHJvYmxlbXMuCgoJKiBkbGxzL21zaS9tc2kuYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpcnN0IHBhc3MgaW1wbGVtZW50IGlvbiBvZiBNc2lRdWVyeVByb2R1Y3RTdGF0ZVtBL1ddIGFzIHdlbGwgYXMgYSBmZXcKCWZpeGVzIGZvciBNc2lHZXRDb21wb25lbnRQYXRoLgoKCSogZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvY29tcG9ial9wcml2YXRlLmgsCgkgIGRsbHMvb2xlMzIvbWFyc2hhbC5jLCBkbGxzL29sZTMyL3N0dWJtYW5hZ2VyLmMsCgkgIGRsbHMvb2xlMzIvdGVzdHMvbWFyc2hhbC5jOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IHRhYmxlIG1hcnNoYWxpbmcuCgoJKiBwcm9ncmFtcy93aW5ldGVzdC9NYWtlZmlsZS5pbjoKCVN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJSW5jbHVkZSBuZXcgdGVzdHMuCgoJKiBkbGxzL2NvbWN0bDMyL3RyYWNrYmFyLmM6IFBhdWwgVnJpZW5zIDxQYXVsLlZyaWVuc0B4czRhbGwubmw+CglSZW1vdmUgdGhlIGNoZWNraW5nL3NldHRpbmcgb2YgdGhlIGRlZmF1bHRzIGluIFRSQUNLQkFSX0NyZWF0ZS4KCgkqIGRsbHMvY29tY3RsMzIvcGFnZXIuYzogUGF1bCBWcmllbnMgPFBhdWwuVnJpZW5zQHhzNGFsbC5ubD4KCVJlbW92ZSBuZWVkbGVzcyBjaGVjayBmb3IgaG9yaXpvbnRhbCBvciB2ZXJ0aWNhbCBwYWdlci4KCjIwMDUtMDEtMTQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC9jb21tLmMsIGRsbHMva2VybmVsL2ZpbGUuYywgZGxscy9udGRsbC9maWxlLmMsCgkgIGRsbHMvbnRkbGwvc3luYy5jLCBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGluY2x1ZGUvYXN5bmMuaCwKCSAgaW5jbHVkZS90aHJlYWQuaCwgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLCBzZXJ2ZXIvTWFrZWZpbGUuaW4sCgkgIHNlcnZlci9hc3luYy5jLCBzZXJ2ZXIvYXN5bmMuaCwgc2VydmVyL2ZkLmMsIHNlcnZlci9maWxlLmMsCgkgIHNlcnZlci9maWxlLmgsIHNlcnZlci9uYW1lZF9waXBlLmMsIHNlcnZlci9wcm9jZXNzLmMsCgkgIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci9yZXF1ZXN0LmMsIHNlcnZlci9yZXF1ZXN0LmgsCgkgIHNlcnZlci9zZXJpYWwuYywgc2VydmVyL3NpZ25hbC5jLCBzZXJ2ZXIvc29jay5jLCBzZXJ2ZXIvdGhyZWFkLmMsCgkgIHNlcnZlci90cmFjZS5jOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CgktIGdvdCByaWQgb2YgaW5jbHVkZS9hc3luYy5oCgktIGZpeGVkIHNvbWUgb3ZlcmxhcHBlZCBpc3N1ZXMgaW4gc29ja2V0IGhhbmRsaW5nCgktIG1vdmVkIGtlcm5lbDMyLkNhbmNlbElvIGltcGxlbWVudGF0aW9uIHRvIG50ZGxsCgoJKiBwcm9ncmFtcy93aW5lY2ZnL2FwcGRlZmF1bHRzLmMsIHByb2dyYW1zL3dpbmVjZmcvYXVkaW8uYywKCSAgcHJvZ3JhbXMvd2luZWNmZy9saWJyYXJpZXMuYywgcHJvZ3JhbXMvd2luZWNmZy93aW5lY2ZnLmMsCgkgIHByb2dyYW1zL3dpbmVjZmcveDExZHJ2ZGxnLmM6CglDcmVzdGV6IExlb25hcmQgPGNsZW9uYXJkQGdvLnJvPgoJRml4IGFkZCBhcHBsaWNhdGlvbiAobWVtb3J5IGVycm9yKS4KCUZpeCBhcHBseSBidXR0b24gbGlnaHRpbmcgdXAgaW4gYXVkaW8gdGFiLgoJRml4IHZpZGVvIHRhYihjcmFzaCB3aGVuIGNoZWNraW5nIGRlc2t0b3AsIGFwcGx5IGJ1dHRvbiBub3QgbGlnaHRpbmcKCXVwLgoJRGVhbCB3aXRoIGludmFsaWQgRGVza3RvcCByZWdpc3RyeSB2YWx1ZSBpbiB2aWRlbyB0YWIuCglGaXggYXBwbHkgYnV0dG9uIGluIGxpYnJhcmllcyB0YWIuCglDbGVhbmVkIHVwIGFuZCBkb2N1bWVudGVkIGFsbCB0aGUgY29udmVyc2lvbnMgaW4gdGhlIGxpYnJhcmllcyB0YWIuCgoJKiBkbGxzL2l0c3MvaXRzcy5jLCBkbGxzL2l0c3MvaXRzcy5zcGVjOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlIE1PRFVMRU5BTUUgcHJlZml4IGZyb20KCURsbHtHZXRDbGFzc09iamVjdCxSZWdpc3RlclNlcnZlcixDYW5VbmxvYWROb3d9IGZ1bmN0aW9ucy4KCgkqIHRvb2xzL3dpZGwvd3JpdGVfbXNmdC5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJQWRkIHN1cHBvcnQgZm9yIEJTVFIgZGVmYXVsdCB2YWx1ZXMuCgoJKiBkbGxzL29sZTMyL2NvbXBvYmpfcHJpdmF0ZS5oOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIFJlbW92ZSBvYnNvbGV0ZSBzdHJ1Y3RzLCByZWFycmFuZ2UgdGhpbmdzIHRvIGdyb3VwIHRoZSBzdHJ1Y3RzCgkgIHRvZ2V0aGVyIGFuZCB0byBncm91cCBzaW1pbGFyIGZ1bmN0aW9ucy4KCS0gRG9jdW1lbnQgdGhyZWFkLXNhZmV0eSBvZiBtZW1iZXJzIG9mIHN0cnVjdHMuCgoJKiBkbGxzL29sZTMyL21hcnNoYWwuYywgZGxscy9vbGUzMi90ZXN0cy9tYXJzaGFsLmM6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglNYWtlIHByb3h5IHNodXRkb3duIHRlc3Qgc3VjY2VlZCBieSByZWxlYXNpbmcgdGhlIGNoYW5uZWwgb24KCWRpc2Nvbm5lY3QuCgoJKiBkbGxzL3gxMWRydi9ldmVudC5jLCBkbGxzL3gxMWRydi9rZXlib2FyZC5jLCBkbGxzL3gxMWRydi9tb3VzZS5jLAoJICBkbGxzL3gxMWRydi93aW5kb3cuYywgZGxscy94MTFkcnYvd2ludGFiLmMsIGRsbHMveDExZHJ2L3gxMWRydi5oLAoJICBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jOgoJSmVyZW15IFdoaXRlIDxqd2hpdGVAY29kZXdlYXZlcnMuY29tPgoJRml4IFgxMSBldmVudCB0aW1pbmcgc28gdGhhdCB3ZSBjb3JyZWN0bHkgY29ycmVsYXRlIFgxMSB0aW1pbmcgYW5kCglXaW5lIHRpbWluZyBhbmQgZHluYW1pY2FsbHkgYWRqdXN0IGl0IGFzIHdlIGdvLgoKCSogZGxscy9tc2kvbXNpLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglBY3R1YWxseSBzdGFydCBvbiBhbiBpbXBsZW1lbnRpb24gZm9yIE1zaUdldENvbXBvbmVudFBhdGhXIHRoYXQgc2hvdWxkCgloYW5kbGUgYWxsIGtleXBhdGhzIHRoYXQgYXJlIGZpbGVzLgoKCSogZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvaWZzLmMsIGRsbHMvb2xlMzIvb2xlMi5jLAoJICBkbGxzL29sZTMyL29sZTJzdHVicy5jOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBBZGQgZG9jdW1lbnRhdGlvbiBmb3IgbW9zdCBDbyogZnVuY3Rpb25zLgoJLSBNb3ZlIHNldmVyYWwgZnVuY3Rpb25zIGludG8gZGlmZmVyZW50IGZpbGVzIHRvIGdyb3VwIHRoZW0gd2l0aAoJICBzaW1pbGFyIGZ1bmN0aW9ucy4KCgkqIGRsbHMvZG1zeW50aC9kbXN5bnRoX21haW4uYywgZGxscy9kbXN5bnRoL3N5bnRoLmMsCgkgIGRsbHMvZG1zeW50aC9zeW50aHNpbmsuYywgZGxscy9kcG5ldC9hZGRyZXNzLmMsIGRsbHMvZHBuZXQvY2xpZW50LmM6CglKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCS0gVXNlIEludGVybG9ja2VkKiBpbnN0ZWFkIG9mICsrLy0tIGluIEFkZFJlZi9SZWxlYXNlLgoJLSBVc2Ugb25seSBzdG9yZWQgcmVzdWx0IG9mIEludGVybG9ja2VkKiBpbiBBZGRSZWYvUmVsZWFzZS4KCS0gRXhwYW5kIFRSQUNFcyB0byBkaXNwbGF5IHRoZSByZWYgY291bnQuCgoJKiBkbGxzL3NoZWxsMzIvc2hsZmlsZW9wLmM6IEpvcmlzIEh1aXplciA8am9yaXNodWl6ZXJAcGxhbmV0Lm5sPgoJLSBhZGQgZmlsZV9vcGVyYXRpb25fZGVsZXRlCgktIGFkZCBmaWxlX29wZXJhdGlvbl9jaGVja0ZsYWdzCgktIHVzZSB0aGVzZSBpbiBTSEZpbGVPcGVyYXRpb25XIHJlcGxhY2luZyBpbmxpbmUgY29kZQoKCSogZGxscy9hZHZhcGkzMi9zZXJ2aWNlLmMsIGluY2x1ZGUvd2luc3ZjLmg6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXgsIGFkZCBhbmQgcmVhcnJhbmdlIHdpbnN2Yy5oIGRlY2xhcmF0aW9ucy4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jOiBNYXJjdXMgTWVpc3NuZXIgPG1laXNzbmVyQHN1c2UuZGU+CglJbml0aWFsaXplIHJjIGluIGNyZWF0ZV9jb21wb25lbnRfZGlyZWN0b3J5KCkuCgoJKiB0b29scy93aWRsL3R5cGVsaWIuYywgdG9vbHMvd2lkbC93cml0ZV9tc2Z0LmM6CglIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJQWRkIHN1cHBvcnQgZm9yIGludGVyZmFjZSBwdHJzIGluY2x1ZGluZyB0aGUgc3BlY2lhbCBjYXNlcyBmb3IKCUlVbmtub3duIGFuZCBJRGlzcGF0Y2guCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jOiBVbHJpY2ggQ3pla2FsbGEgPHVscmljaEBjb2Rld2VhdmVycy5jb20+CglHZXRGaWxlTmFtZTMxVyBzaG91bGQgY2FsbCB1bmljb2RlIHZlcnNpb24gb2YgRkQzMV9BbGxvY1ByaXZhdGUuCgoJKiBkbGxzL3VzZXIvdGVzdHMvc3lzcGFyYW1zLmM6IEp1c3RpbiBDaGV2cmllciA8amNoZXZyaWVyQG5leGljb20ubmV0PgoJQ3JlYXRlZCB1bml0IHRlc3QgZm9yIFNQSV97R0VULFNFVH1NSU5JTUlaRURNRVRSSUNTLgoKCSogZGxscy91c2VyL3N5c3BhcmFtcy5jOiBKdXN0aW4gQ2hldnJpZXIgPGpjaGV2cmllckBuZXhpY29tLm5ldD4KCS0gSW1wbGVtZW50ZWQgU1BJX0dFVE1JTklNSVpFRE1FVFJJQ1MgY2FsY3VsYXRlZCBmcm9tIHZhbHVlcyByZXR1cm5lZAoJICBieSBHZXRTeXN0ZW1NZXRyaWNzLgoJLSBJbXBsZW1lbnRlZCBTUElfU0VUTUlOSU1JWkVETUVUUklDUy4gRGV0ZXJtaW5lZCB0aGF0IHRoZSB2YWx1ZXMgc2V0CgkgIGhlcmUgYXJlIHZhbGlkIGZvciB0aGUgY3VycmVudCBzZXNzaW9uIG9ubHkgYW5kIHdpbGwgbm90IHBlcnNpc3QKCSAgYWNyb3NzIHJlYm9vdHMuCgoJKiBkbGxzL29sZTMyL2NvbXBvYmpfcHJpdmF0ZS5oLCBkbGxzL29sZTMyL21hcnNoYWwuYywgZGxscy9vbGUzMi9ycGMuYywKCSAgZGxscy9vbGUzMi9zdHVibWFuYWdlci5jLCBkbGxzL29sZTMyL3Rlc3RzL21hcnNoYWwuYzoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gVGhlIGFwYXJ0bWVudCByZWZlcmVuY2Ugc2hvdWxkIGJlIGhlbGQgd2hpbGUgdGhlIHN0dWIgbWFuYWdlcgoJICByZWZlcmVuY2UgaXMgaGVsZC4KCS0gRml4IHNhbWUgYXBhcnRtZW50LXVubWFyc2hhbCBkZXRlY3Rpb24uCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglVc2UgdGhlIExWQ0ZNVF97TEVGVCxSSUdIVCxDRU5URVJ9IGVudW1lcmF0aW9uIGZsYWdzIHByb3Blcmx5LgoKCSogZGxscy93aW5lZG9zL2ludDIxLmM6IFJlaW4gS2xhemVzIDx3aWpuQHdhbmFkb28ubmw+CglJbiBpbnQyMV9pb2N0bCAtIGdldCBkZXZpY2UgZGF0YS0sIHNldCB0aGUgImlzIGNvbnNvbGUiIGJpdHMgaWYgdGhlCglkZXZpY2UgaGFuZGxlIGlzIGEgdHR5IG9yIGEgcHJvcGVyIGNvbnNvbGUgaW8gaGFuZGxlLgoKCSogZGxscy9hZHZhcGkzMi9zZXJ2aWNlLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCU1vdmUgYWxsIHNlcnZpY2Ugc3R1YnMgdG9nZXRoZXIsIG1ha2UgdGhlbSBjb25zaXN0ZW50LgoKCSogZGxscy9kbXVzaWMvYnVmZmVyLmMsIGRsbHMvZG11c2ljL2Nsb2NrLmMsIGRsbHMvZG11c2ljL2NvbGxlY3Rpb24uYywKCSAgZGxscy9kbXVzaWMvZG11c2ljLmMsIGRsbHMvZG11c2ljL2RtdXNpY19tYWluLmMsCgkgIGRsbHMvZG11c2ljL2Rvd25sb2FkLmMsIGRsbHMvZG11c2ljL2Rvd25sb2FkZWRpbnN0cnVtZW50LmMsCgkgIGRsbHMvZG11c2ljL2luc3RydW1lbnQuYywgZGxscy9kbXVzaWMvcG9ydC5jLAoJICBkbGxzL2RtdXNpYy9wb3J0ZG93bmxvYWQuYywgZGxscy9kbXVzaWMvdGhydS5jLCBkbGxzL2Rzd2F2ZS9kc3dhdmUuYywKCSAgZGxscy9kc3dhdmUvZHN3YXZlX21haW4uYywgZGxscy9keGRpYWduL2NvbnRhaW5lci5jLAoJICBkbGxzL2R4ZGlhZ24vcHJvdmlkZXIuYywgZGxscy9tc2Rtby9kbW9yZWcuYywgZGxscy9vbGVhdXQzMi9jb25ucHQuYywKCSAgZGxscy9vbGVhdXQzMi9kaXNwYXRjaC5jLCBkbGxzL29sZWF1dDMyL29sZXBpY3R1cmUuYywKCSAgZGxscy9vbGVhdXQzMi90bWFyc2hhbC5jLCBkbGxzL3NoZG9jdncvY2xhc3NpbmZvLmMsCgkgIGRsbHMvc2hkb2N2dy9ldmVudHMuYywgZGxscy9zaGRvY3Z3L2ZhY3RvcnkuYywgZGxscy9zaGRvY3Z3L21pc2MuYywKCSAgZGxscy9zaGRvY3Z3L29sZW9iamVjdC5jLCBkbGxzL3NoZG9jdncvcGVyc2lzdC5jLAoJICBkbGxzL3NoZG9jdncvd2ViYnJvd3Nlci5jLCBkbGxzL3NoZWxsMzIvYXV0b2NvbXBsZXRlLmMsCgkgIGRsbHMvc2hlbGwzMi9jcGFuZWxmb2xkZXIuYywgZGxscy9zaGVsbDMyL2RhdGFvYmplY3QuYywKCSAgZGxscy9zaGVsbDMyL2RyYWdkcm9waGVscGVyLmMsIGRsbHMvc2hlbGwzMi9lbnVtaWRsaXN0LmMsCgkgIGRsbHMvc2hlbGwzMi9mb2xkZXJzLmMsIGRsbHMvc2hlbGwzMi9tZW1vcnlzdHJlYW0uYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsbGluay5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYywKCSAgZGxscy9zaGVsbDMyL3NoZmxkcl9kZXNrdG9wLmMsIGRsbHMvc2hlbGwzMi9zaGZsZHJfZnMuYywKCSAgZGxscy9zaGVsbDMyL3NoZmxkcl9teWNvbXAuYywgZGxscy9zaGVsbDMyL3NobGZzYmluZC5jLAoJICBkbGxzL3NoZWxsMzIvc2hsdmlldy5jLCBkbGxzL3NoZWxsMzIvc2h2X2JnX2NtZW51LmMsCgkgIGRsbHMvc2hlbGwzMi9zaHZfaXRlbV9jbWVudS5jOgoJSmFtZXMgSGF3a2lucyA8dHJ1aWtlbkBnbWFpbC5jb20+CgktIFVzZSBJbnRlcmxvY2tlZCogaW5zdGVhZCBvZiArKy8tLSBpbiBBZGRSZWYvUmVsZWFzZS4KCS0gVXNlIG9ubHkgc3RvcmVkIHJlc3VsdCBvZiBJbnRlcmxvY2tlZCogaW4gQWRkUmVmL1JlbGVhc2UuCgktIEV4cGFuZCBUUkFDRXMgdG8gZGlzcGxheSB0aGUgcmVmIGNvdW50LgoKCSogZGxscy9tc2kvYWN0aW9uLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglGaXJzdCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgV3JpdGVJbmlWYWx1ZXMgYWN0aW9uLgoKCSogZGxscy9vbGUzMi9ycGMuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBEb24ndCB1c2UgdGhlIHBpcGUgY2FjaGluZyBjb2RlIGJlY2F1c2UgaXQgZG9lc24ndCB3b3JrIGNvcnJlY3RseSBhdAoJICB0aGUgbW9tZW50LgoJLSBBbHdheXMgd3JpdGUgZGlzY29ubmVjdCByZXBseSBwYWNrZXQsIGV2ZW4gaW4gZmFpbHVyZSBjYXNlcy4KCgkqIGluY2x1ZGUvd2ludXNlci5oLCB3aW5kb3dzL3NweS5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBXTV9HRVRPQkpFQ1QgZGVmaW5pdGlvbiwgcmVtb3ZlIFdNX09USEVSV0lORE9XQ1JFQVRFRCBkZWZpbmUuCgoJKiBkb2N1bWVudGF0aW9uL3BhdGNoZXMuc2dtbDogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVN1Z2dlc3QgdGVzdGluZyBwYXRjaGVzIGluIGEgZ2VudGxlciB3YXkuCglFbmNvdXJhZ2UgcGVvcGxlIHRvIHN1Ym1pdCB0ZXN0cyB3aXRoIHRoZWlyIHBhdGNoZXMgYXMgd2VsbC4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0RlLnJjOiBLbGVtZW5zIEZyaWVkbCA8a2xlbWVuc19mcmllZGxAZ214Lm5ldD4KCVVwZGF0ZSBHZXJtYW4gbGFuZ3VhZ2UgZmlsZS4KCgkqIGRsbHMvYWR2YXBpMzIvc2VydmljZS5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglDbGVhbnVwIHNlcnZpY2UgaGFuZGxlcy4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUluY3JlYXNlIHRoZSByZXF1aXJlZCByZWN0YW5nbGUgc2l6ZSBiZWZvcmUgZHJhd2luZyBiaWcgKy8tLgoKCSogZGxscy9nZGkvbWZkcnYvb2JqZWN0cy5jLCBkbGxzL2dkaS90ZXN0cy9tZXRhZmlsZS5jOgoJV2FsdCBPZ2J1cm4gPHJldWJlbkB1Z2NzLmNhbHRlY2guZWR1PgoJRml4IEJTX1BBVFRFUk4gYnJ1c2hlcyBpbiBtZmRydi4gIFVuLWNvbW1lbnQgdGhlIGNvcnJlc3BvbmRpbmcgdGVzdC4KCgkqIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmM6IEphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJUmV0dXJuIENMQVNTX0VfTk9BR0dSRUdBVElPTiBpZiBwVW5rT3V0ZXIgaXMgbm9uLW51bGwuCgoJKiBkbGxzL21zaS9hY3Rpb24uYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUN1c3RvbSBhY3Rpb25zIGNhbiBoYXZlIG51bGwgaW4gdGhlaXIgdGFyZ2V0IHBhcmFtZXRlcnMsIGhhbmRsZSB0aGF0Cgl3aXRob3V0IGNyYXNoaW5nLiBBbHNvIGVuYWJsZSBkZWZvcm1hdGluZyBvZiBsaW5lcyBncmVhdGVyIHRoYW4gMjU2CgljaGFyYWN0ZXJzLgoKCSogZGxscy9vbGUzMi9jb21wb2JqLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCURlc3Ryb3kgc3R1YnMgb24gYXBhcnRtZW50IHNodXRkb3duLgoKCSogZGxscy9ycGNydDQvcnBjcnQ0X21haW4uYywgaW5jbHVkZS9ycGNkY2UuaDoKCUdlIHZhbiBHZWxkb3JwIDxndmdAcmVhY3Rvcy5jb20+CglGaXggcHJvdG90eXBlcyBhY2NvcmRpbmcgdG8gUFNESy4KCgkqIGRsbHMvb2xlMzIvcnBjLmM6IE1pa2UgSGVhcm4gPG1oQGNvZGV3ZWF2ZXJzLmNvbT4KCUZvcmNlIGNvbnRleHQgc3dpdGNoIG9uIGNoYW5idWYgZGlzY29ubmVjdCB0byBhdm9pZCBhIHJhY2UgaW4gdGhlIHRlc3QKCXN1aXRlLgoKCSogaW5jbHVkZS93aW5lL2xpc3QuaDogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJQWRkIGEgTElTVF9GT1JfRUFDSF9FTlRSWSBsaXN0IGhlbHBlci4KCgkqIGRsbHMvYXZpZmlsMzIvYWNtc3RyZWFtLmMsIGRsbHMvYXZpZmlsMzIvYXZpZmlsZS5jLAoJICBkbGxzL2F2aWZpbDMyL2VkaXRzdHJlYW0uYywgZGxscy9hdmlmaWwzMi9nZXRmcmFtZS5jLAoJICBkbGxzL2F2aWZpbDMyL2ljbXN0cmVhbS5jLCBkbGxzL2F2aWZpbDMyL3RtcGZpbGUuYywKCSAgZGxscy9hdmlmaWwzMi93YXZmaWxlLmM6CglQYXVsIFZyaWVucyA8UGF1bC5WcmllbnNAeHM0YWxsLm5sPgoJLSB1c2UgSW50ZXJsb2NrZWQqIGZ1bmN0aW9ucyBpbiBBZGRSZWYgYW5kIFJlbGVhc2UuCgktIHN0b3JlIHRoZSByZXN1bHQgb2YgdGhlIEludGVybG9ja2VkIGZ1bmN0aW9ucyBhbmQgdXNlIG9ubHkgdGhpcy4KCjIwMDUtMDEtMTIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL29sZTMyL2NvbXBvYmouYzogQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJQ29Jbml0aWFsaXplKEV4KSBzaG91bGQgcmV0dXJuIFNfRkFMU0Ugd2hlbiBDT00gaXMgYWxyZWFkeSBpbml0aWFsaXplZAoJZm9yIHRoZSBjdXJyZW50IHRocmVhZC4KCgkqIGRsbHMvZ2RpL2dkaTMyLnNwZWMsIHdpbmRvd3MvZGNlLmM6CglVc2UgdGhlIGV4cG9ydGVkIGZ1bmN0aW9ucyBTYXZlREMvUmVzdG9yZURDIGluc3RlYWQgb2YgU2V0RENTdGF0ZTE2LgoKCSogZGxscy93aW5tbS93aW5lYWxzYS9hdWRpby5jLCBkbGxzL3dpbm1tL3dpbmVhdWRpb2lvL2F1ZGlvLmMsCgkgIGRsbHMvd2lubW0vd2luZW9zcy9kc2NhcHR1cmUuYywgZGxscy93aW5tbS93aW5lb3NzL2RzcmVuZGVyLmM6CglKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCS0gVXNlIEludGVybG9ja2VkKiBpbnN0ZWFkIG9mICsrLy0tIGluIEFkZFJlZi9SZWxlYXNlLgoJLSBVc2Ugb25seSBzdG9yZWQgcmVzdWx0IG9mIEludGVybG9ja2VkKiBpbiBBZGRSZWYvUmVsZWFzZS4KCS0gRXhwYW5kIFRSQUNFcyB0byBkaXNwbGF5IHRoZSByZWYgY291bnQuCgoJKiBkbGxzL3VybG1vbi9zZWNfbWdyLmMsIGRsbHMvdXJsbW9uL3Vtb24uYzoKCUphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJLSBVc2Ugb25seSBzdG9yZWQgcmVzdWx0IG9mIEludGVybG9ja2VkKiBpbiBBZGRSZWYvUmVsZWFzZS4KCS0gRXhwYW5kIFRSQUNFcyB0byBkaXNwbGF5IHRoZSByZWYgY291bnQuCgoJKiBkbGxzL3dpbmVkM2QvZGV2aWNlLmMsIGRsbHMvd2luZWQzZC9kaXJlY3R4LmMsCgkgIGRsbHMvd2luZWQzZC9zdGF0ZWJsb2NrLmM6CglKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCVVzZSBvbmx5IHN0b3JlZCByZXN1bHQgb2YgSW50ZXJsb2NrZWQqIGluIEFkZFJlZi9SZWxlYXNlLgoKCSogZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvY29tcG9ial9wcml2YXRlLmg6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIERvY3VtZW50IENvU2V0U3RhdGUgJiBDb0dldFN0YXRlLgoJLSBSZXdyaXRlIHRoZW0gdG8gb25seSByZXRyaWV2ZSBUTFMgaW5mbyBvbmNlLgoJLSBSZW1vdmUgdHJhaWxpbmcgd2hpdGVzcGFjZSBpbiBDT01fQ3VycmVudEluZm8uCgoJKiBkbGxzL29sZTMyL21hcnNoYWwuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlIHdpbmVfbWFyc2hhbF9kYXRhOiBpdCBpcyB1bm5lZWRlZCBhbmQgdGhlcmUgaXMgbm8gZXF1aXZhbGVudCBpbgoJU1RET0JKUkVGLgoKCSogZGxscy9zaGx3YXBpL2Fzc29jLmMsIGRsbHMvc2hsd2FwaS9pc3RyZWFtLmMsCgkgIGRsbHMvc2hsd2FwaS9yZWdzdHJlYW0uYzoKCUphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJLSB1c2Ugb25seSBzdG9yZWQgcmVzdWx0IG9mIEludGVybG9ja2VkKiBpbiBBZGRSZWYvUmVsZWFzZQoJLSBleHBhbmQgVFJBQ0VzIHRvIGRpc3BsYXkgdGhlIHJlZiBjb3VudAoKCSogZGxscy9hdmlmaWwzMi9hY21zdHJlYW0uYywgZGxscy9hdmlmaWwzMi9pY21zdHJlYW0uYzoKCVBhdWwgVnJpZW5zIDxQYXVsLlZyaWVuc0B4czRhbGwubmw+CgktIEZpeCBsb2dpYyBpbiBTdHJlYW1fZm5SZWxlYXNlLCByZWZjb3VudCBzaG91bGQgYmUgZGVjcmVtZW50ZWQgYmVmb3JlCgkgIHRoZSB0ZXN0IGZvciAwLgoJLSBVc2UgSW50ZXJsb2NrZWQqIGZ1bmN0aW9ucyBpbiBTdHJlYW1fZm5SZWxlYXNlIC4KCS0gU3RvcmUgdGhlIHJlc3VsdCBvZiB0aGUgSW50ZXJsb2NrZWQgZnVuY3Rpb25zIGFuZCB0aGlzIGluIHRoZQoJICBUUkFDRS4KCgkqIHRvb2xzL3dpZGwvdHlwZWxpYi5jLCB0b29scy93aWRsL3R5cGVsaWIuaCwgdG9vbHMvd2lkbC93cml0ZV9tc2Z0LmM6CglIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJQmV0dGVyIHR5cGUgZW5jb2RpbmcuICAoSW50ZXJmYWNlIHB0cnMgc3RpbGwgbm90IHRoZXJlIHlldCkuCgoJKiBkbGxzL29sZTMyL3Rlc3RzL21hcnNoYWwuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBGb3JjZSBjcmVhdGlvbiBvZiB0aHJlYWQgcXVldWUgdG8gc3RvcCBQb3N0VGhyZWFkTWVzc2FnZSBmcm9tCgkgIGZhaWxpbmcuCgktIFJlbW92ZSBpbmNvcnJlY3QgY29tbWVudC4KCgkqIGRsbHMvdXNlci9zeXNwYXJhbXMuYzogSnVzdGluIENoZXZyaWVyIDxqY2hldnJpZXJAbmV4aWNvbS5uZXQ+CgktIFJldmVydCBwcmV2aW91cyBjaGFuZ2Ugb2YgYm9yZGVyIG1ldHJpYyB0byByZWZlcmVuY2UgdGhlCgkgIHJlZ2lzdHJ5LiBUZXN0aW5nIG9uIFdpbjk4L1dpblhQIHNob3dlZCB0aGF0IHJlZ2FyZGxlc3Mgb2YgdGhlCgkgICJCb3JkZXJXaWR0aCIgdmFsdWUgQ01fQ3tYLFl9Qk9SREVSIGFsd2F5cyByZXR1cm5zIDEuCgktIFBvaW50IFNQSV9TRVRCT1JERVIgdG8gIkJvcmRlcldpZHRoIiB1bmRlciAiSEtDVVxDb250cm9sCgkgIFBhbmVsXERlc2t0b3BcV2luZG93TWV0cmljcyIgaW5zdGVhZCBvZiAiSEtDVVxDb250cm9sIFBhbmVsXERlc2t0b3AiCgkgIHRvIG1ha2UgaXQgbWF0Y2ggV2luZG93cy4KCgkqIGluY2x1ZGUvd2luZS9saXN0Lmg6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBMSVNUX0ZPUl9FQUNIX1NBRkUgLSBhIGxpc3QgaXRlcmF0aW9uIG1hY3JvIHRoYXQgaXMgc2FmZSBhZ2FpbnN0CglyZW1vdmFsLgoKCSogZGxscy9vbGUzMi9ycGMuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJVGhlIHdheSBhcGFydG1lbnRzIGFyZSB1c2VkIGhhcyBjaGFuZ2VkLCBzbyBmaXggdXAgdGhlIGhhY2tzIGluIHRoZQoJUlBDIGNvZGUgdGhhdCBoYXZlbid0IHlldCBiZWVuIHVwZGF0ZWQuCgoJKiBkbGxzL29sZTMyL2NvbXBvYmouYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBNYWtlIE1UQSBkeW5hbWljYWxseSBhbGxvY2F0ZWQgc28gdGhhdCBwcm94aWVzIGFuZCBvdGhlciByZXNvdXJjZXMKCSAgYXJlIGZyZWVkIGF0IHRoZSBwcm9wZXIgdGltZS4KCS0gQ2hhbmdlZC9yZW1vdmVkIHNvbWUgaW5jb3JyZWN0IGNvbW1lbnRzIHJlZ2FyZGluZyBhcGFydG1lbnRzLgoKCSogZGxscy9kbWNvbXBvcy9jaG9yZG1hcC5jLCBkbGxzL2RtY29tcG9zL2Nob3JkbWFwdHJhY2suYywKCSAgZGxscy9kbWNvbXBvcy9jb21wb3Nlci5jLCBkbGxzL2RtY29tcG9zL3NpZ25wb3N0dHJhY2suYzoKCVBhdWwgVnJpZW5zIDxQYXVsLlZyaWVuc0B4czRhbGwubmw+CgktIHVzZSBJbnRlcmxvY2tlZCogZnVuY3Rpb25zIGluIEFkZFJlZiBhbmQgUmVsZWFzZS4KCS0gc3RvcmUgdGhlIHJlc3VsdCBvZiB0aGUgSW50ZXJsb2NrZWQgZnVuY3Rpb25zIGFuZCB1c2Ugb25seSB0aGlzLgoKMjAwNS0wMS0xMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIEFOTk9VTkNFLCBDaGFuZ2VMb2csIFZFUlNJT04sIGNvbmZpZ3VyZTogUmVsZWFzZSAyMDA1MDExMS4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KMjAwNS0wMS0xMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvZG1pbWUvYXVkaW9wYXRoLmMsIGRsbHMvZG1pbWUvZG1pbWVfbWFpbi5jLCBkbGxzL2RtaW1lL2dyYXBoLmMsCgkgIGRsbHMvZG1pbWUvbHlyaWNzdHJhY2suYywgZGxscy9kbWltZS9tYXJrZXJ0cmFjay5jLAoJICBkbGxzL2RtaW1lL3BhcmFtY29udHJvbHRyYWNrLmMsIGRsbHMvZG1pbWUvcGF0dGVybnRyYWNrLmMsCgkgIGRsbHMvZG1pbWUvcGVyZm9ybWFuY2UuYywgZGxscy9kbWltZS9zZWdtZW50LmMsCgkgIGRsbHMvZG1pbWUvc2VnbWVudHN0YXRlLmMsIGRsbHMvZG1pbWUvc2VndHJpZ2dlcnRyYWNrLmMsCgkgIGRsbHMvZG1pbWUvc2VxdHJhY2suYywgZGxscy9kbWltZS9zeXNleHRyYWNrLmMsCgkgIGRsbHMvZG1pbWUvdGVtcG90cmFjay5jLCBkbGxzL2RtaW1lL3RpbWVzaWd0cmFjay5jLAoJICBkbGxzL2RtaW1lL3Rvb2wuYywgZGxscy9kbWltZS93YXZldHJhY2suYzoKCVBhdWwgVnJpZW5zIDxQYXVsLlZyaWVuc0B4czRhbGwubmw+CgktIHVzZSBJbnRlcmxvY2tlZCogZnVuY3Rpb25zIGluIEFkZFJlZiBhbmQgUmVsZWFzZS4KCS0gc3RvcmUgdGhlIHJlc3VsdCBvZiB0aGUgSW50ZXJsb2NrZWQgZnVuY3Rpb25zIGFuZCB1c2Ugb25seSB0aGlzLgoKCSogZGxscy9udGRsbC9sb2FkZXIuYzogTWlrZSBIZWFybiA8bWlrZUBuYXZpLmN4PgoJR2l2ZSBhIG1vcmUgaW5mb3JtYXRpdmUgZXJyb3Igd2hlbiBhIERMTCBmYWlscyB0byBpbml0aWFsaXplIGR1cmluZwoJc3RhcnR1cC4KCgkqIGRsbHMvdXNlci9tZW51LmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglNYWtlIEFsdCBwcmVzcy9yZWxlYXNlIHRlc3QgYWN0dWFsbHkgcGFzcyBmb3Igbm90IG1hbmFnZWQgd2luZG93cy4KCgkqIGRsbHMvZHBsYXl4L2RwY2xhc3NmYWN0b3J5LmMsIGRsbHMvbXNpL21zaS5jOgoJUGF1bCBWcmllbnMgPFBhdWwuVnJpZW5zQHhzNGFsbC5ubD4KCVVzZSBJbnRlcmxvY2tlZCogZnVuY3Rpb25zIGluIEFkZFJlZiBhbmQgUmVsZWFzZS4KCgkqIGRsbHMvdXNlci90ZXN0cy9tc2cuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBXbUNyZWF0ZUN1c3RvbURpYWxvZ1NlcSBtZXNzYWdlIHNlcXVlbmNlIGZvciAyNTYgY29sb3IgbW9kZS4KCgkqIGRsbHMvb2xlMzIvY29tcG9iai5jOiBCaWxsIE1lZGxhbmQgPGJpbGxtZWRsYW5kQG1lcmN1cnlzcGVlZC5jb20+CglDb3JyZWN0ZWQgdGVzdGluZyBmb3IgbXVsdGl0aHJlYWRlZCAoYmFzZWQgdXBvbiBvYnNlcnZhdGlvbnMgYnkgUGF1bAoJVnJpZW5zLCBDaHJpc3RpYW4gQ29zdGEgYW5kIFJvYmVydCBTaGVhcm1hbikuCglBZGRlZCBUUkFDRSBmb3IgaW52ZXN0aWdhdGluZyBPWElEIGVycm9ycy4KCgkqIGRsbHMvcXVhcnR6L3JlZ3N2ci5jOiBQYXVsIFZyaWVucyA8UGF1bC5WcmllbnNAeHM0YWxsLm5sPgoJQWRkIGFuIGV4dHJhIGNsYXNzIHRvIHJlZ2lzdGVyLgoKCSogZGxscy91c2VyL3BhaW50aW5nLmMsIGRsbHMveDExZHJ2L2Rlc2t0b3AuYywgc2VydmVyL3dpbmRvdy5jOgoJRGVza3RvcCB3aW5kb3cgaXMgcmVwYWludGVkIG9uIFdNX0VSQVNFQktHTkQsIGl0IG11c3QgbmV2ZXIgZ2V0IGEKCVdNX1BBSU5ULgoKCSogZGxscy94MTFkcnYvZXZlbnQuYzogV2FybmluZyBmaXguCgoJKiBkbGxzL3VzZXIvY29tbTE2LmM6IEFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCVJlYWQvd3JpdGUgY29tcGxldGlvbiBmdW5jdGlvbnMgZ2V0IFdpbmRvd3MgZXJyb3IgY29kZXMsIG5vdCBOVCBzdGF0dXMKCWNvZGVzLgoKCSogZGxscy91c2VyL3VzZXJfcHJpdmF0ZS5oLCBkbGxzL3gxMWRydi9jbGlwYm9hcmQuYywKCSAgZGxscy94MTFkcnYveDExZHJ2LmgsIHdpbmRvd3MvY2xpcGJvYXJkLmM6CglKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJR2V0IHJpZCBvZiBXLT5BIGNhbGxzLgoKCSogZGxscy9rZXJuZWwvZmlsZS5jOiBSZWluIEtsYXplcyA8d2lqbkB3YW5hZG9vLm5sPgoJbWVtaWNtcFcoKSBjb3VudCBhcmUgV0NIQVIncyBub3QgYnl0ZXMuIEZpeGVzIG9wZW5pbmcgQ09OIGRldmljZS4KCgkqIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmMsIGRsbHMvb2xlMzIvdGVzdHMvc3RvcmFnZTMyLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglUZXN0cyBhbmQgZml4ZXMgZm9yIFN0Z09wZW5TdG9yYWdlLgoKCSogZGxscy9kbWltZS9wZXJmb3JtYW5jZS5jOiBDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglXYWl0IHVudGlsIHRoZSB0aHJlYWQgaGFzIGNyZWF0ZWQgaXRzIG1lc3NhZ2UgcXVldWUgYmVmb3JlIHBvc3RpbmcgYQoJbWVzc2FnZSBvdGhlcndpc2UgaXQgd2lsbCBiZSBsb3N0LgoKCSogaW5jbHVkZS93aW5lL2xpYnJhcnkuaCwgaW5jbHVkZS93aW5lL3BvcnQuaCwgbGlicy93cHAvcHJlcHJvYy5jOgoJUultaSBBc3NhaWxseSA8cmVtaS5hc3NhaWxseUBmcmVlLmZyPgoJQWRkZWQgbWlzc2luZyBkZWNsYXJhdGlvbnMgaW4gc29tZSBoZWFkZXJzLgoKCSogZGxscy9vbGUzMi90ZXN0cy9tYXJzaGFsLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCB0ZXN0cyBmb3IgdHJ5aW5nIHRvIHVubWFyc2hhbCBmcm9tIGEgYmFkIHN0cmVhbSBhbmQgZm9yIHRlc3RpbmcKCXdoYXQgaW50ZXJmYWNlcyB0aGUgcHJveHkgZXhwb3Nlcy4KCgkqIGRsbHMvb2xlMzIvY29tcG9ial9wcml2YXRlLmgsIGRsbHMvb2xlMzIvbWFyc2hhbC5jLCBkbGxzL29sZTMyL3JwYy5jLAoJICBkbGxzL29sZTMyL3N0dWJtYW5hZ2VyLmM6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIERvY3VtZW50IGhvdyB0aHJlYWQtc2FmZXR5IGlzIGVuc3VyZWQgZm9yIGVhY2ggbWVtYmVyIG9mIHRoZQoJICBzdHViX21hbmFnZXIgYW5kIGlmc3R1YiBzdHJ1Y3RzLgoJLSBNYWtlIHN0dWJfbWFuYWdlciByZWYgY291bnRlZCB0byBlbnN1cmUgaXQgZG9lc24ndCBnZXQgZnJlZWQgd2hpbHN0CgkgIGl0IGlzIHN0aWxsIGJlaW5nIHVzZWQuCgktIGlmc3R1YnMgYXJlIG5vdyBmcmVlZCBvbmx5IHdoZW4gdGhlIGNvbnRyb2xsaW5nIHN0dWJfbWFuYWdlciBpcyBmcmVlZC4KCS0gUmVuYW1lIHN0dWJfbWFuYWdlcl9yZWYvdW5yZWYgdG8gc3R1Yl9tYW5hZ2VyX2V4dF9hZGRyZWYvcmVsZWFzZQoJICByZXNwZWN0aXZlbHkgYW5kIG1ha2UgdGhlbiB0YWtlIGFuIHVuc2lnbmVkIGxvbmcgdG8gcHJldmVudAoJICBtYWxpY2lvdXMgY2FsbGVycyBmcm9tIHBhc3NpbmcgaW4gYSBuZWdhdGl2ZSB2YWx1ZSBhbmQgY29ycnVwdGluZwoJICB0aGUgcmVmIGNvdW50LgoKCSogd2luZG93cy9kZWZ3bmQuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBtb3JlIHRlc3RzIGZvciBrZXlib2FyZC9tZW51IGFjdGl2YXRpb24gYmVoYXZpb3VyLCBtYWtlIHRoZSB0ZXN0cwoJcGFzcyB1bmRlciBXaW5lLgoKCSogZGxscy9vbGUzMi9zdGdfc3RyZWFtLmMsIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmMsCgkgIGRsbHMvb2xlMzIvdGVzdHMvc3RvcmFnZTMyLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglUZXN0IGFuZCBmaXggYSBmZXcgcHJvYmxlbXMgd2l0aCBPTEUgc3RvcmFnZSBzdHJlYW1zLgoKCSogZG9jdW1lbnRhdGlvbi9vbGUuc2dtbDogQmlsbCBNZWRsYW5kIDxiaWxsbWVkbGFuZEBtZXJjdXJ5c3BlZWQuY29tPgoJTWlub3IgdHlwbyBjb3JyZWN0aW9uIGFuZCB0ZXJtIGV4cGFuc2lvbiBjaGFuZ2VzLgoKCSogZGxscy9rZXJuZWwvcHJvZmlsZS5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIERvbid0IHVzZSBhbiBpbnZhbGlkIGZpbGUgaGFuZGxlLiBJbiB0aGlzIGNhc2UgaW52YWxpZCBmaWxlIGhhbmRsZQoJICBtZWFucyB0aGF0IHRoZSBmaWxlIGhhc24ndCB5ZXQgYmVlbiBjcmVhdGVkLgoJLSBPbmx5IGNhbGwgR2V0RmlsZVRpbWUgd2hlbiB3ZSBhcmUgYmVpbmcgbG9nZ2VkIGZvciBhIHRpbnkKCSAgcGVyZm9ybWFuY2UgaW1wcm92ZW1lbnQuCgktIFJlaW5kZW50IHRvIDQgc3BhY2VzLgoKCSogZGxscy9jb21jdGwzMi9tb250aGNhbC5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglVc2UgdGhlIERyYXdGb2N1c1JlY3QgZnVuY3Rpb24gdG8gZHJhdyB0aGUgZm9jdXMgcmVjdCwgaW5zdGVhZCBvZiBhCglicm9rZW4gaG9tZS1icmV3ZWQgc29sdXRpb24uCgoJKiBkbGxzL3NoZWxsMzIvYnJzZm9sZGVyLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCURvbid0IHNvcnQgdGhlIGNoaWxkcmVuIG9mIE15IENvbXB1dGVyIGluIHNoZWxsIGJyb3dzZSBmb3IgZm9sZGVyCglkaWFsb2cuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCURvbid0IGhpZ2hsaWdodCB0ZXh0IGluIG5vbi1UVlNfVFJBQ0tTRUxFQ1QgbW9kZS4KCgkqIHRvb2xzL3dpbmVtYWtlcjogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglGaXggZGxsIGhhbmRsaW5nLgoJVGFrZSBETExfUEFUSCBhbmQgTElCUkFSSUVTIGludG8gYWNjb3VudC4KCVNpbXBsaWZ5IGEgY2hlY2sgZm9yIHBhdGhzIHRoYXQgZG9uJ3Qgc3RhcnQgd2l0aCBhICcvJy4KCgkqIHRvb2xzL3dpZGwvdHlwZWxpYl9zdHJ1Y3QuaCwgdG9vbHMvd2lkbC93cml0ZV9tc2Z0LmM6CglIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJQWRkIGhlbHAqIGF0dHJpYnV0ZXMgZm9yIHR5cGVpbmZvcyBhbmQgZnVuY3Rpb25zLgoKCSogZGxscy91c2VyL21lbnUuYywgZGxscy91c2VyL3Rlc3RzL21zZy5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBtb3JlIHRlc3RzIGZvciBrZXlib2FyZC9tZW51IGFjdGl2YXRpb24gYmVoYXZpb3VyLCBtYWtlIHRoZSB0ZXN0cwoJcGFzcyB1bmRlciBXaW5lLgoKMjAwNS0wMS0xMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvdXNlci9saXN0Ym94LmMsIGRsbHMvdXNlci90ZXN0cy9saXN0Ym94LmM6CglMYXVyaSBUdWxtaW4gPGxhdXJpX0B1dC5lZT4KCUZpeGVzIHRvIHRoZSBoYW5kbGluZyBvZiBMQlNfRVhURU5ERURTRUwgc3R5bGUsIHdpdGggdGVzdHMuCgoJKiB0b29scy93aWRsL3BhcnNlci5sLCB0b29scy93aWRsL3BhcnNlci55LCB0b29scy93aWRsL3dpZGx0eXBlcy5oLAoJICB0b29scy93aWRsL3dyaXRlX21zZnQuYzoKCUh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglBZGQgc3VwcG9ydCBmb3IgdGhlIGhlbHAqIGF0dHJpYnV0ZXMgb24gdHlwZSBsaWJyYXJpZXMuCgoJKiBwcm9ncmFtcy93aW5lYnJvd3Nlci9tYWluLmM6IFJlaW4gS2xhemVzIDx3aWpuQHdhbmFkb28ubmw+CglJZiB0aGUgYXJndW1lbnQgaXMgYSBsb2NhbCBmaWxlLCBwYXNzIGl0cyBVbml4IG5hbWUgdG8gdGhlIGJyb3dzZXIuCgoJKiBwcm9ncmFtcy9yZWdlZGl0L2NoaWxkd25kLmMsIHByb2dyYW1zL3JlZ2VkaXQvZWRpdC5jLAoJICBwcm9ncmFtcy9yZWdlZGl0L2ZyYW1ld25kLmMsIHByb2dyYW1zL3JlZ2VkaXQvbWFpbi5oLAoJICBwcm9ncmFtcy9yZWdlZGl0L3RyZWV2aWV3LmM6CglDcmVzdGV6IExlb25hcmQgPGNsZW9uYXJkQGdvLnJvPgoJSW1wbGVtZW50IFJlZnJlc2guCglGaXggYnVnIHdpdGggYWxsIEhLRVlfIHJvb3RzIGFsd2F5cyBzaG93aW5nIGV4cGFuZGFibGUuCgoJKiBkbGxzL3dpbnNvY2svYXN5bmMuYywgZGxscy93aW5zb2NrL3NvY2tldC5jLAoJICBkbGxzL3dpbnNvY2svd3MyXzMyLnNwZWMsIGluY2x1ZGUvd2luc29jazIuaDoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJU3R1YiBpbXBsZW1lbnRhdGlvbnMgZm9yIFdQVUNvbXBsZXRlT3ZlcmxhcHBlZFJlcXVlc3QsCglXU0FEdXBsaWNhdGVTb2NrZXRXLCBXU0FFbnVtTmFtZVNwYWNlUHJvdmlkZXJze0EsV30sIFdTQUdldFFPU0J5TmFtZSwKCVdTQUdldFNlcnZpY2VDbGFzc0luZm97QSxXfSwgV1NBR2V0U2VydmljZUNsYXNzTmFtZUJ5Q2xhc3NJZHtBLFd9LAoJV1NBTG9va3VwU2VydmljZUVuZCwgV1NBTG9va3VwU2VydmljZU5leHR7QSxXfSwKCVdTQVByb3ZpZGVyQ29uZmlnQ2hhbmdlLCAgV1NBU2V0U2VydmljZXtBLFd9LCBXU0NFbmFibGVOU1Byb3ZpZGVyLAoJV1NDR2V0UHJvdmlkZXJQYXRoLCBXU0NJbnN0YWxsTmFtZVNwYWNlLCAgV1NDV3JpdGVQcm92aWRlck9yZGVyLgoJSW1wbGVtZW50YXRpb25zIGZvciBXU0FOdG9obCwgV1NBTnRvaHMsIFdTQVNvY2tldEEtPlcgY3Jvc3NjYWxsLgoJQXZvaWQgTlVMTCBkZXJlZmVyZW5jZXMgaW4gV1NBU3RyaW5nVG9BZGRyZXNze0EsV30gYW5kCglXU0FBZGRyZXNzVG9TdHJpbmd7QSxXfS4KCgkqIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBpbWFnZSBsaXN0IG1hc2sgYW5kIGJsZW5kaW5nLgoKCSogZGxscy9tc3ZjcnQvZmlsZS5jOiBCaWxsIE1lZGxhbmQgPGJpbGxtZWRsYW5kQG1lcmN1cnlzcGVlZC5jb20+CglPbmx5IHJlcG9ydCB0aGUgdW5zdXBwb3J0ZWQgZmxhZ3MuCglLZWVwIHF1aWV0IGFib3V0IGhpbnRzLgoKCSogZGxscy9tcHIvbXByLnJjLCBkbGxzL21wci9tcHJfRW4ucmMsIGRsbHMvbXByL21wcnJlcy5oLAoJICBkbGxzL21wci9ucHMuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBwcm94eSBhdXRoZW50aWNhdGlvbiBkaWFsb2cuCgoJKiBwcm9ncmFtcy93aW5lY2ZnL3dpbmVjZmcuYzogTWlrZSBIZWFybiA8bWlrZUBuYXZpLmN4PgoJRGVsZXRlIHRoZSBcciBub3QgdGhlIFxuIGluIFBSSU5URVJST1IuCgoJKiBwcm9ncmFtcy93aW5lY2ZnL2RyaXZlLmM6IE1pa2UgSGVhcm4gPG1pa2VAbmF2aS5jeD4KCURvIG5vdCBhcHBseSBjaGFuZ2VzIGp1c3QgYmVjYXVzZSBRdWVyeURvc0RldmljZSByZXZlcnNlZCB0aGUKCXNsYXNoZXMuCglDaGFuZ2UgYW4gRVJSIHRvIGEgV0FSTiwgaXQncyBjb21tb24gZm9yIGl0IHRvIG9jY3VyLgoKCSogZGxscy9jb21jdGwzMi9oZWFkZXIuYzogRXZhbiBEZWF1YmwgPHdpbmVAd2FycGVkdmlldy5jb20+CglHZXRJdGVtQS9XIG9uIGhlYWRlciBjb250cm9scyBzaG91bGQgaGFuZGxlIG1lc3NhZ2UgZXZlbiBpZiBpbmRleCBpcwoJaW52YWxpZC4KCgkqIHRvb2xzL3dpZGwvcGFyc2VyLnksIHRvb2xzL3dpZGwvd2lkbHR5cGVzLmgsIHRvb2xzL3dpZGwvd3JpdGVfbXNmdC5jOgoJSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBzdXBwb3J0IGZvciBvcHRpb25hbCBhcmd1bWVudHMgYW5kIHNvbWUgc3VwcHBvcnQgZm9yIHRoZQoJZGVmYXVsdHZhbHVlIGF0dHJpYnV0ZXMuCglCZXR0ZXIgY2FsY3VsYXRpb24gb2YgdGhlIHR5cGVpbmZvJ3MgcmVzMyBtZW1iZXIgKGF0IGxlYXN0IGZvcgoJaW50ZXJmYWNlcykuCgoJKiBkbGxzL21zaHRtbC9tYWluLmMsIGRsbHMvdXVpZC91dWlkLmMsIGluY2x1ZGUvLmN2c2lnbm9yZSwKCSAgaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9tc2h0bWRpZC5oLCBpbmNsdWRlL21zaHRtbC5pZGwsCgkgIGluY2x1ZGUvb2xlY3RsLmgsIGluY2x1ZGUvdXVpZHMuaDoKCUphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglBZGRlZCBtc2h0bWwuaWRsLgoKCSogZGxscy9kZHJhdy9kM2R0ZXh0dXJlLmMsIGRsbHMvZGRyYXcvZDNkdmlld3BvcnQuYywKCSAgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLCBkbGxzL21hcGkzMi9wcm9wLmMsCgkgIGRsbHMvbWFwaTMyL3Rlc3RzL3Byb3AuYywgZGxscy9tc2kvYWN0aW9uLmMsIGRsbHMvbXNpL3Rlc3RzL2RiLmMsCgkgIGRsbHMvbXNpL3Rlc3RzL3JlY29yZC5jLCBpbmNsdWRlL29sZWF1dG8uaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQXNzb3J0ZWQgc3BlbGxpbmcgZml4ZXMuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy93aW5tbS93aW5lYWxzYS9NYWtlZmlsZS5pbiwKCSAgZGxscy93aW5tbS93aW5lYWxzYS9hdWRpby5jLCBkbGxzL3dpbm1tL3dpbmVhbHNhL2F1ZGlvXzA1LmMsCgkgIGRsbHMvd2lubW0vd2luZWFsc2EvbWlkaS5jLCBpbmNsdWRlL2NvbmZpZy5oLmluOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJT25seSB1c2UgQWxzYSBpZiAxLjAgaXMgZGV0ZWN0ZWQuCgoJKiBkbGxzL2NvbW1kbGcvY29sb3JkbGcuYywgZGxscy9jb21tZGxnL2ZpbGVkbGcuYywKCSAgZGxscy9jb21tZGxnL2ZpbGVkbGdicm93c2VyLmg6CglKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJR2V0IHJpZCBvZiBXLT5BIGNhbGxzLgoKCSogdG9vbHMvd2lkbC93cml0ZV9tc2Z0LmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglBZGQgc3VwcG9ydCBmb3IgaGlkZGVuLCByZXN0cmljdGVkIGFuZCB2ZXJzaW9uIGF0dHJpYnV0ZXMgb24KCXR5cGVpbmZvcy4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYjIuYzogQW5vdGhlciB3YXJuaW5nIGZpeC4KCgkqIGRsbHMvZ2RpL2RjLmMsIGRsbHMvZ2RpL2dkaV9wcml2YXRlLmg6CglS6W1pIEFzc2FpbGx5IDxyZW1pLmFzc2FpbGx5QGZyZWUuZnI+CglJbXBsZW1lbnRlZCBHZXRMYXlvdXQgYW5kIFNldExheW91dC4KCgkqIGRsbHMvcnNhZW5oL3JzYWVuaC5jOiBNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglTdXBwb3J0IGZvciBnZW5lcmF0aW5nIGFuZCBleHBvcnRpbmcgUENUMSwgU1NMMi8zIGFuZCBUTFMxIG1hc3RlcgoJc2VjcmV0cy4gRW5zdXJlIHRoYXQgdGhlc2UgYXJlIG5vdCB1c2VkIGluIENQRW5jcnlwdCwgQ1BEZWNyeXB0IG9yCglDUERlcml2ZUtleS4KCgkqIGRsbHMvcnNhZW5oL2ltcGxnbHVlLmM6IE1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCVJlbW92ZWQgY2hlY2sgZm9yIHZhbGlkJ25lc3Mgb2YgYWxnaWQuIEl0J3MgcmVkdW5kYW50LgoKCSogaW5jbHVkZS93aW5jcnlwdC5oOiBNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglBZGRlZCBTQ0hBTk5FTF9BTEcgdHlwZWRlZi4KCUNvcnJlY3RlZCBzdHJ1Y3QgdGFnIGluIEhNQUNfSU5GTyB0eXBlZGVmLgoKCSogZGxscy9vbGUzMi9zdG9yYWdlMzIuYywgZGxscy9vbGUzMi90ZXN0cy9zdG9yYWdlMzIuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVRlc3QgYW5kIGZpeCBTdGdDcmVhdGVEb2NGaWxlIGdyZk1vZGVzLgoKCSogZGxscy9kc291bmQvdGVzdHMvY2FwdHVyZS5jLCBkbGxzL2Rzb3VuZC90ZXN0cy9kczNkLmMsCgkgIGRsbHMvZHNvdW5kL3Rlc3RzL2RzM2Q4LmMsIGRsbHMvZHNvdW5kL3Rlc3RzL2Rzb3VuZC5jLAoJICBkbGxzL2Rzb3VuZC90ZXN0cy9kc291bmQ4LmMsIGRsbHMvZHNvdW5kL3Rlc3RzL3Byb3BzZXQuYzoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglSZW1vdmUgdW5uZWVkZWQgaW5jbHVkZXMuCgoJKiBkbGxzL2Ftc3RyZWFtL2Ftc3RyZWFtLmMsIGRsbHMvY29tY2F0L2ZhY3RvcnkuYywKCSAgZGxscy9jb21jYXQvaW5mb3JtYXRpb24uYywgZGxscy9jb21jYXQvbWFuYWdlci5jLAoJICBkbGxzL2NvbW1kbGcvZmlsZWRsZ2Jyb3dzZXIuYywgZGxscy9kZXZlbnVtL21lZGlhY2F0ZW51bS5jOgoJUGF1bCBWcmllbnMgPFBhdWwuVnJpZW5zQHhzNGFsbC5ubD4KCS0gdXNlIEludGVybG9ja2VkKiBmdW5jdGlvbnMgaW4gQWRkUmVmIGFuZCBSZWxlYXNlLgoJLSBzdG9yZSB0aGUgcmVzdWx0IG9mIHRoZSBJbnRlcmxvY2tlZCBmdW5jdGlvbnMgYW5kIHVzZSBvbmx5IHRoaXMuCgoyMDA1LTAxLTA5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9kZXZlbnVtL21lZGlhY2F0ZW51bS5jLCBkbGxzL3F1YXJ0ei9lbnVtbW9uaWtlci5jLAoJICBkbGxzL3F1YXJ0ei9maWx0ZXJncmFwaC5jLCBkbGxzL3F1YXJ0ei9maWx0ZXJtYXBwZXIuYzoKCUNocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUZpeGVkIGVycm9yIGhhbmRsaW5nIGluIEdyYXBoYnVpbGRlcl9SZW5kZXJGaWxlLgoJSW1wcm92ZWQgdHJhY2VzLgoKCSogZGxscy9tc2kvcmVjb3JkLmMsIGRsbHMvbXNpL3Rlc3RzL3JlY29yZC5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IE1zaVJlY29yZFNldFN0cmVhbUEvVyBhbmQgYWRkIHRlc3RzIGZvciByZWNvcmRzIGNvbnRhaW5pbmcKCXN0cmVhbXMuCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIyLmM6IEF2b2lkIHdhcm5pbmdzLgoKCSogbGlicy93cHAvcHJlcHJvYy5jOiBKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJLSBGaXhlZCBpbmZpbml0ZSBsb29wIGJ1Zy4KCS0gQ29kZSBjbGVhbnVwLgoKCSogcHJvZ3JhbXMvd2luZWNmZy9kcml2ZS5jOiBNaWtlIEhlYXJuIDxtaWtlQG5hdmkuY3g+CglGaXggYSBtZW1vcnkgbWFuYWdlbWVudCBidWcgaW4gYXBwbHlfZHJpdmVfY2hhbmdlcyB0byBzdG9wIHdpbmVjZmcKCWRlbGV0aW5nIGFsbCB0aGUgZHJpdmUgZGVmaW5pdGlvbnMgaW4gc29tZSBjYXNlcy4KCgkqIHByb2dyYW1zL3dpbmVjZmcvZHJpdmV1aS5jOiBNaWtlIEhlYXJuIDxtaWtlQG5hdmkuY3g+CglNYWtlIHRoZSBVSSB1cGRhdGUgcHJvcGVybHkgd2hlbiB0aGUgdXNlciBhZGRzL3JlbW92ZXMgZHJpdmVzLgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglUaGUgdmFsdWUgb2YgYSBwYWNrZWQgVkFSSUFOVCBjYW4gYmUgdXAgdG8gMUwgPDwgMjYgLSAxLgoKCSogdG9vbHMvd2lkbC9wYXJzZXIubCwgdG9vbHMvd2lkbC9wYXJzZXIueSwgdG9vbHMvd2lkbC93aWRsdHlwZXMuaCwKCSAgdG9vbHMvd2lkbC93cml0ZV9tc2Z0LmM6CglIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJQWRkIGF0dHJpYnV0ZXMgY29udHJvbCwgaGlkZGVuIGFuZCByZXN0cmljdGVkLgoJQ29ycmVjdGx5IHNldCB0aGUgbGliZmxhZ3MgZm9yIHRoZXNlIGF0dHJpYnV0ZXMuCgoJKiB3aW5kb3dzL3dpbnByb2MuYzogSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCUdldCByaWQgb2YgSEVBUF9zdHJkdXBXdG9BIGNhbGxzLgoKCSogZGxscy9kM2Q4L2QzZDhfcHJpdmF0ZS5oLCBkbGxzL2QzZDgvZGlyZWN0eC5jLCBkbGxzL2QzZDgvc3VyZmFjZS5jLAoJICBkbGxzL2QzZDkvZDNkOV9wcml2YXRlLmgsIGRsbHMvZDNkOS9kZXZpY2UuYywgZGxscy9kM2Q5L2RpcmVjdHguYywKCSAgZGxscy9kM2Q5L3N1cmZhY2UuYywgZGxscy93aW5lZDNkL01ha2VmaWxlLmluLAoJICBkbGxzL3dpbmVkM2QvYmFzZXRleHR1cmUuYywgZGxscy93aW5lZDNkL2RldmljZS5jLAoJICBkbGxzL3dpbmVkM2QvZGlyZWN0eC5jLCBkbGxzL3dpbmVkM2QvaW5kZXhidWZmZXIuYywKCSAgZGxscy93aW5lZDNkL3Jlc291cmNlLmMsIGRsbHMvd2luZWQzZC9zdGF0ZWJsb2NrLmMsCgkgIGRsbHMvd2luZWQzZC9zdXJmYWNlLmMsIGRsbHMvd2luZWQzZC91dGlscy5jLAoJICBkbGxzL3dpbmVkM2QvdmVydGV4YnVmZmVyLmMsIGRsbHMvd2luZWQzZC93aW5lZDNkX3ByaXZhdGUuaCwKCSAgaW5jbHVkZS9kM2Q5dHlwZXMuaCwgaW5jbHVkZS93aW5lL3dpbmVkM2RfaW50ZXJmYWNlLmg6CglKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJQWRkIHJlbmRlciB0YXJnZXQgc3VwcG9ydCwgYW5kIGVuc3VyZSB0aGVyZSBpcyBhIGZyb250IGFuZCBiYWNrIGJ1ZmZlcgoJY3JlYXRlZCBkdXJpbmcgZGV2aWNlIGNyZWF0aW9uLgoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWFpbi5jLCBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsCgkgIGRsbHMvZGRyYXcvZDNkZXhlY3V0ZWJ1ZmZlci5jLCBkbGxzL2RkcmF3L2QzZGxpZ2h0LmMsCgkgIGRsbHMvZGRyYXcvZDNkbWF0ZXJpYWwuYywgZGxscy9kZHJhdy9kM2R2ZXJ0ZXhidWZmZXIuYywKCSAgZGxscy9kZHJhdy9kM2R2aWV3cG9ydC5jLCBkbGxzL2RkcmF3L2RjbGlwcGVyL21haW4uYywKCSAgZGxscy9kZHJhdy9kZHJhdy9tYWluLmMsIGRsbHMvZGRyYXcvZHBhbGV0dGUvbWFpbi5jLAoJICBkbGxzL2RkcmF3L2RzdXJmYWNlL21haW4uYywgZGxscy9kZHJhdy9tYWluLmMsCgkgIGRsbHMvb2xlYXV0MzIvdGVzdHMvc2FmZWFycmF5LmMsIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jLAoJICBkbGxzL29sZWF1dDMyL3R5cGVsaWIyLmMsIGRsbHMvb2xlMzIvZXJyb3JpbmZvLmMsIGRsbHMvb2xlMzIvaWZzLmMsCgkgIGRsbHMvb2xlMzIvb2xlb2JqLmM6CglQYXVsIFZyaWVucyA8UGF1bC5WcmllbnNAeHM0YWxsLm5sPgoJLSB1c2UgSW50ZXJsb2NrZWQqIGZ1bmN0aW9ucyBpbiBBZGRSZWYgYW5kIFJlbGVhc2UuCgktIHN0b3JlIHRoZSByZXN1bHQgb2YgdGhlIEludGVybG9ja2VkIGZ1bmN0aW9ucyBhbmQgdXNlIG9ubHkgdGhpcy4KCgkqIGRsbHMvcXVhcnR6L3JlZ3N2ci5jOiBDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglBZGRlZCByZWdpc3RyYXRpb24gZm9yIHF1YXJ0eiBmaWx0ZXJzLgoKCSogZGxscy9kc291bmQvdGVzdHMvY2FwdHVyZS5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJRG9uJ3QgbmVlZCB0byB3b3JyeSBhYm91dCB3aW5kb3dzIG1lc3NhZ2VzLgoKCSogbGlicy93cHAvd3BwLmM6IEphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglBZGRlZCBpbml0aWFsaXppbmcgcHBfc3RhdHVzLmlucHV0IGF0IGJlZ2luIG9mIHdwcF9wYXJzZS4KCgkqIGRsbHMvbWFwaTMyL3Byb3AuYywgZGxscy9tYXBpMzIvdGVzdHMvcHJvcC5jLAoJICBkbGxzL21zYWNtL2ltYWFkcDMyL2ltYWFkcDMyLmMsIGRsbHMvbXNhY20vbXNhZHAzMi9tc2FkcDMyLmMsCgkgIGRsbHMvbXNhY20vbXNnNzExL21zZzcxMS5jLCBkbGxzL21zYWNtL3BjbWNvbnZlcnRlci5jLAoJICBkbGxzL21zYWNtL3dpbmVtcDMvbXBlZ2wzLmMsIGRsbHMvbXNybGUzMi9tc3JsZTMyLmMsCgkgIGRsbHMvb2xlMzIvZnRtYXJzaGFsLmMsIGRsbHMvb2xlYXV0MzIvb2xlcGljdHVyZS5jLAoJICBkbGxzL29sZWF1dDMyL3RtYXJzaGFsLmMsIGRsbHMvb2xlYXV0MzIvdmFyZm9ybWF0LmMsCgkgIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jLCBkbGxzL3F1YXJ0ei9zeXN0ZW1jbG9jay5jLAoJICBkbGxzL3JzYWVuaC9yc2FlbmguYywgZGxscy9zaGRvY3Z3L3NoZG9jdndfbWFpbi5jLAoJICBkbGxzL3NoZWxsMzIvc2hsdmlldy5jLCBkbGxzL3NobHdhcGkvc3RyaW5nLmMsCgkgIGRsbHMvd2luYXNwaS93aW5hc3BpMTYuYywgZGxscy93aW5lcHMvYml0bWFwLmMsIGRsbHMvd2luZXBzL2RyaXZlci5jLAoJICBkbGxzL3dpbmVwcy9lc2NhcGUuYywgZGxscy94MTFkcnYvd2ludGFiLmMsIGRsbHMveDExZHJ2L3hmb250LmMsCgkgIGRsbHMvY29tY3RsMzIvY29tYm9leC5jLCBkbGxzL2NvbWN0bDMyL2RhdGV0aW1lLmMsCgkgIGRsbHMvY29tY3RsMzIvZmxhdHNiLmMsIGRsbHMvY29tY3RsMzIvaGVhZGVyLmMsCgkgIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYywgZGxscy9jb21jdGwzMi9tb250aGNhbC5jLAoJICBkbGxzL2NvbWN0bDMyL25hdGl2ZWZvbnQuYywgZGxscy9jb21jdGwzMi9wYWdlci5jLAoJICBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jLCBkbGxzL2NvbWN0bDMyL3JlYmFyLmMsCgkgIGRsbHMvY29tY3RsMzIvc21vb3Roc2Nyb2xsLmMsIGRsbHMvY29tY3RsMzIvc3RhdHVzLmMsCgkgIGRsbHMvY29tY3RsMzIvdGFiLmMsIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jLAoJICBkbGxzL2NvbWN0bDMyL3Rvb2x0aXBzLmMsIGRsbHMvY29tY3RsMzIvdHJhY2tiYXIuYywKCSAgZGxscy9jb21jdGwzMi90cmVldmlldy5jLCBkbGxzL2NvbW1kbGcvY29sb3JkbGcuYywKCSAgZGxscy9kM2Q4L2N1YmV0ZXh0dXJlLmMsIGRsbHMvZDNkOC90ZXh0dXJlLmMsIGRsbHMvZDNkOC91dGlscy5jLAoJICBkbGxzL2QzZDkvY3ViZXRleHR1cmUuYywgZGxscy9kM2Q5L3RleHR1cmUuYywKCSAgZGxscy9kM2Q5L3ZvbHVtZXRleHR1cmUuYywgZGxscy9kYmdoZWxwL3R5cGUuYywgZGxscy9kZHJhdy9tZXNhLmMsCgkgIGRsbHMvZG1iYW5kL2JhbmQuYywgZGxscy9kbWNvbXBvcy9jaG9yZG1hcC5jLCBkbGxzL2RtaW1lL2F1ZGlvcGF0aC5jLAoJICBkbGxzL2RtaW1lL2dyYXBoLmMsIGRsbHMvZG1pbWUvcGVyZm9ybWFuY2UuYywKCSAgZGxscy9kbWxvYWRlci9jb250YWluZXIuYywgZGxscy9kbXNjcmlwdC9zY3JpcHQuYywKCSAgZGxscy9kbXN0eWxlL3N0eWxlLmMsIGRsbHMvZG11c2ljL2NvbGxlY3Rpb24uYywKCSAgZGxscy9kc291bmQvY2FwdHVyZS5jLCBkbGxzL2Rzb3VuZC9wcm9wc2V0LmMsIGRsbHMvZHN3YXZlL2Rzd2F2ZS5jOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglSZW1vdmVkIGV4Y2Vzc2l2ZSBzdGF0ZW1lbnQgKGJyZWFrIGFmdGVyIHJldHVybiBvciBnb3RvLCBub3QgdXNlZnVsCglicmVhaywgbm90IG5lZWRlZCB2YXJzLi4uKQoKCSogZGxscy91c2VyL21lc3NhZ2UuYywgaW5jbHVkZS93aW51c2VyLmg6CglWaXRhbHkgTGlwYXRvdiA8bGF2QGV0ZXJzb2Z0LnJ1PgoJQWRkZWQgaGFuZGxpbmcgb2YgU0JNX0dFVFNDUk9MTEJBUklORk8gbWVzc2FnZS4KCgkqIGRsbHMvZHNvdW5kL3Rlc3RzL2NhcHR1cmUuYywgZGxscy9kc291bmQvdGVzdHMvZHMzZC5jLAoJICBkbGxzL2Rzb3VuZC90ZXN0cy9kczNkOC5jLCBkbGxzL2Rzb3VuZC90ZXN0cy9kc291bmQuYywKCSAgZGxscy9kc291bmQvdGVzdHMvZHNvdW5kOC5jLCBkbGxzL2Rzb3VuZC90ZXN0cy9wcm9wc2V0LmM6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJSW5pdGlhbGl6ZSBhbmQgdW5pbml0aWFsaXplIENPTSBwcm9wZXJseS4KCgkqIGRsbHMvY29tbWRsZy9jZGxnX0VzLnJjOiBKb3PpIE1hbnVlbCBGZXJyZXIgT3J0aXogPGptZm8xOTgyQHlhaG9vLmVzPgoJVXBkYXRlZCBTcGFuaXNoIHJlc291cmNlLgoKCSogZGxscy93aW5lZDNkL2RpcmVjdHguYzogT2xpdmVyIFN0aWViZXIgPG9saXZlcl9zdGllYmVyQHlhaG9vLmNvLnVrPgoJQ29ycmVjdCBsb29wIGNoZWNrIGZvciBlbnVtIGRpc3BsYXkgYW5kIGluY2x1ZGUgMzJiaXQgbW9kZXMgaW4gMjRiaXQuCgoJKiBkbGxzL2NvbW1kbGcvY2RsZy5oLCBkbGxzL2NvbW1kbGcvY2RsZ19Fbi5yYywKCSAgZGxscy9jb21tZGxnL2NkbGdfUGwucmMsIGRsbHMvY29tbWRsZy9maWxlZGxnLmMsCgkgIGRsbHMvY29tbWRsZy9maWxlZGxnMzEuYzoKCUphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglNb3ZlZCBzYXZlKiBzdHJpbmdzIHRvIHJlc291cmNlcy4KCjIwMDUtMDEtMDggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3VzZXIvdXNlcjMyLnNwZWM6IEh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCVJldmVydCBHZXRTY3JvbGxCYXJJbmZvIHNwZWMgZW50cnkgYmFjayB0byBhIHN0dWIgdG8gZml4IGNvbXBpbGF0aW9uCglmYWlsdXJlLgoKMjAwNS0wMS0wNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHRvb2xzL2MybWFuLnBsOiBDcmVhdGUgdGhlIG91dHB1dCBkaXJlY3RvcnkgaWYgbmVlZGVkLgoKCSogZGxscy9NYWtlZGxsLnJ1bGVzLmluOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJVXNlIHRoZSBzb3VyY2UgZGlyIGFzIHRoZSBkb2N1bWVudGF0aW9uIHJvb3QgZGlyLgoKCSogZGxscy91c2VyL21pc2MuYywgZGxscy91c2VyL3VzZXIzMi5zcGVjLCBpbmNsdWRlL01ha2VmaWxlLmluLAoJICBpbmNsdWRlL3dpbm5sczMyLmg6CglEaWVnbyBQZXR0ZW7yIDxmbGFtZWV5ZXNAdXNlcnMuYmVybGlvcy5kZT4KCUFkZGVkIHN0dWIgaW1wbGVtZW50YXRpb24gZm9yIFdJTk5MUyogZnVuY3Rpb25zLgoKCSogZGxscy93aW5pbmV0L2h0dHAuYywgZGxscy93aW5pbmV0L2ludGVybmV0LmM6CglEaWVnbyBQZXR0ZW7yIDxmbGFtZWV5ZXNAdXNlcnMuYmVybGlvcy5kZT4KCUdldCByaWQgb2YgRFBSSU5URi4KCgkqIGRsbHMva2VybmVsL2xjZm9ybWF0LmM6IFZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCVVzZSBHZXRMb2NhbFRpbWUgKHR6LWRlcGVuZGFudCkgaW5zdGVhZCBvZiBHZXRTeXN0ZW1UaW1lIChVVEMpIGluCglHZXRUaW1lRm9ybWF0LgoKCSogZGxscy9tc2kvYWN0aW9uLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglNYWtlIGFsbCBjdXN0b20gdHlwZSAxIGFjdGlvbnMgaGFwcGVuIGluIGEgc2VwZXJhdGUgdGhyZWFkIGFuZCBjbG9zZQoJYWxsIGhhbmRsZXMgZm9yIHRoYXQgdGhyZWFkIHdoZW4gaXQgZXhpdHMuIEhvbm9ycyB0aGUgY29uY2VwdCBvZgoJdGVtcG9yYXJ5IE1TSSBoYW5kbGVzIGZvciBjdXN0b20gYWN0aW9ucy4KCgkqIGRsbHMvYWR2YXBpMzIvcmVnaXN0cnkuYywgZGxscy9kZHJhdy9kc3VyZmFjZS91c2VyLmMsCgkgIGRsbHMvZHBsYXl4L2RwbGF5LmMsIGRsbHMvZHBsYXl4L2RwbGF5eF9tZXNzYWdlcy5jLAoJICBkbGxzL2RwbGF5eC9kcGxvYmJ5LmMsIGRsbHMva2VybmVsL2NvbW0uYywgZGxscy9rZXJuZWwvc3luYy5jLAoJICBkbGxzL3JwY3J0NC9ycGNfYmluZGluZy5jLCBkbGxzL3JwY3J0NC9ycGNfc2VydmVyLmMsCgkgIGRsbHMvc2hsd2FwaS90aHJlYWQuYywgZGxscy91c2VyL2NvbW0xNi5jLCBkbGxzL3dpbmVkb3MvZG9zdm0uYywKCSAgZGxscy93aW5lZG9zL21vZHVsZS5jLCBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYywKCSAgZGxscy93aW5tbS9tY2lhdmkvbWNpYXZpLmMsIGRsbHMvd2lubW0vbWNpYXZpL21tb3V0cHV0LmMsCgkgIGRsbHMvd2lubW0vbWNpd2F2ZS9tY2l3YXZlLmMsIGRsbHMvd2luc29jay9zb2NrZXQuYywKCSAgZGxscy93aW5zb2NrL3Rlc3RzL3NvY2suYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVVzZSBDcmVhdGVFdmVudFcgaW4gcHJlZmVyZW5jZSB0byBDcmVhdGVFdmVudEEgZm9yIHVubmFtZWQgZXZlbnRzLgoKCSogZGxscy9xdWFydHovcmVnc3ZyLmM6IFBhdWwgVnJpZW5zIDxwYXVsLnZyaWVuc0B4czRhbGwubmw+CgktIE1lZGlhIFR5cGVzIChhbmQgRXh0ZW5zaW9ucykgc2hvdWxkIHVzZSAiU291cmNlIEZpbHRlciIgaW5zdGVhZCBvZgoJICAiRmlsZSBTb3VyY2UiLgoJLSBSZW1vdmVkIGZpbGVzb3VyY2VfdmFsdWVuYW1lLgoJLSBGaXhlZCB0eXBvIGZvciBzb21lIGNsYXNzLW5hbWVzLgoJLSBGaXhlZCB0eXBvIGluIE1QRUcxU3lzdGVtIE1lZGlhIFR5cGUuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6IENyZXN0ZXogTGVvbmFyZCA8Y2xlb25hcmRAZ28ucm8+CglGaXggYnVnIHdpdGggVHJlZXZpZXdfU2VsZWN0SXRlbSByZXNlbGVjdGluZyB0aGUgc2FtZSBpdGVtLgoKCSogZGxscy9udGRsbC9jZHJvbS5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIEFkZCBhIGNvbXBsZXRlLCBzb3J0ZWQgbGlzdGVkIG9mIElPQ1RMUyBpbXBsZW1lbnRlZCBpbiB0aGUgZmlsZS4KCS0gRHVtcCB0cmFjayBudW1iZXJzIGFmdGVyIHRoZXkgaGF2ZSBiZWVuIGZpbGxlZCBpbi4KCgkqIGRsbHMvb2xlMzIvY29tcG9ial9wcml2YXRlLmgsIGRsbHMvb2xlMzIvbWFyc2hhbC5jLAoJICBkbGxzL29sZTMyL3N0dWJtYW5hZ2VyLmM6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglSZW5hbWUgaWlkIGluIHdpbmVfbWFyc2hhbF9pZCB0byBpcGlkIGFuZCB1c2UgSVBJRHMgaW5zdGVhZCBvZiBJSURzIGluCgl0aGUgc3R1YiBtYW5hZ2VyLgoKCSogZGxscy9vbGUzMi9ycGMuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJVGhlIGN1cnJlbnQgYXJjaGl0ZWN0dXJlIGNhbm5vdCBoYW5kbGUgcGlwZXMgY2hhbmdpbmcgYWRkcmVzcywgc28gdXNlCglhIHN0YXRpYyBhcnJheS4gRml4ZXMgbWVtb3J5IGNvcnJ1cHRpb24gdGhhdCBzb21ldGltZXMgb2NjdXJzIHdoZW4KCXVzaW5nIG11bHRpcGxlIHBpcGVzLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvY2FwaTIwMzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvY2FwaTIwMzIvY2FwMjB3eHguYywgaW5jbHVkZS9jb25maWcuaC5pbjoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJTG9hZCBsaWJjYXBpMjAuc28uKiBkeW5hbWljYWxseSBvbiBkZW1hbmQuCgoyMDA1LTAxLTA2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogdG9vbHMvd2lkbC9NYWtlZmlsZS5pbiwgdG9vbHMvd2lkbC9oYXNoLmMsIHRvb2xzL3dpZGwvaGFzaC5oLAoJICB0b29scy93aWRsL2hlYWRlci5jLCB0b29scy93aWRsL3BhcnNlci55LCB0b29scy93aWRsL3R5cGVsaWIuYywKCSAgdG9vbHMvd2lkbC90eXBlbGliLmgsIHRvb2xzL3dpZGwvdHlwZWxpYl9zdHJ1Y3QuaCwKCSAgdG9vbHMvd2lkbC93aWRsdHlwZXMuaCwgdG9vbHMvd2lkbC93cml0ZV9tc2Z0LmM6CglIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJSW5pdGlhbCBzdXBwb3J0IGZvciB0eXBlbGliIGdlbmVyYXRpb24uCgoJKiBkbGxzL250ZGxsL2ZpbGUuYzogUmVpbiBLbGF6ZXMgPHdpam5Ad2FuYWRvby5ubD4KCU9uIExpbnV4LCB1c2UgZnN0YXRmcyBpbnN0ZWFkIG9mIGZzdGF0dmZzLiBJdCBpcyB0b28gYnVnZ3kuCgoJKiBkbGxzL29sZTMyL3N0dWJtYW5hZ2VyLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCU5vIG5lZWQgdG8gYWRkIGEgcmVmZXJlbmNlIHRvIHRoZSBhcGFydG1lbnQgZnJvbSBuZXdfc3R1Yl9tYW5hZ2VyIGFzCgl3ZSBkb24ndCBob2xkIG9uIHRvIGFuIGFwYXJ0bWVudCBwb2ludGVyLgoKCSogZGxscy91c2VyL3Rlc3RzL21zZy5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkIGEgd2luZG93cyBldmVudHMgaG9vayB0byB0aGUgbWVzc2FnZSB0ZXN0LgoKCSogZGxscy9tc2kvaGFuZGxlLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCU1zaUNsb3NlQWxsSGFuZGxlcyBvbmx5IGNsb3NlcyBoYW5kbGVzIGFsbG9jYXRlZCBpbiB0aGUgY2FsbGluZwoJdGhyZWFkLgoKCSogZGxscy9tc2kvdGVzdHMvLmN2c2lnbm9yZSwgZGxscy9tc2kvdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvbXNpL3Rlc3RzL3JlY29yZC5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWRkIHRlc3QgZm9yIHJlY29yZHMuCgoJKiBkbGxzL21zaS9yZWNvcmQuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IHJlY29yZHMgYWNjb3JkaW5nIHRvIHRlc3QgY2FzZXMuCgoJKiB0b29scy93aW5lLmluZjogVml0YWx5IExpcGF0b3YgPGxhdkBldGVyc29mdC5ydT4KCUFkZCBWTU0zMkZpbGVzIHNlY3Rpb24uCgoJKiBpbmNsdWRlL21zaS5oLCBpbmNsdWRlL21zaXF1ZXJ5Lmg6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglEZWNsYXJlIG1vcmUgZnVuY3Rpb25zLgoKCSogZGxscy9jb21jdGwzMi9zdGF0dXMuYzogVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hAY29kZXdlYXZlcnMuY29tPgoJV01fR0VUVEVYVExFTkdUSCBzaG91bGQgcmV0dXJuIHplcm8gZm9yIG93bmVyIGRyYXduIHN0YXR1cyBiYXJzLgoKCSogZGxscy9jb21tZGxnL2NkbGcuaCwgZGxscy9jb21tZGxnL2NkbGdfRW4ucmMsCgkgIGRsbHMvY29tbWRsZy9jZGxnX1BsLnJjLCBkbGxzL2NvbW1kbGcvZm9udGRsZy5jOgoJSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCU1vdmVkIHN0cmluZyB0byByZXNvdXJjZXMuCgoJKiBkb2N1bWVudGF0aW9uL2RvY3VtZW50YXRpb24uc2dtbDogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVByZWZlciBXIHRvIEEgZm9yIGRvY3VtZW50YXRpb24uIFByZWZlciB0aGUgbm9uLWlubGluZWQgc3R5bGUgb2YKCWRvY3VtZW50YXRpb24sIGl0J3MgdGhlIG1vc3QgY29tbW9ubHkgdXNlZCBvbmUsIHdlIHNob3VsZCBzdGFuZGFyZGl6ZQoJb24gaXQuCgoJKiBkbGxzL3VzZXIvc3lzcGFyYW1zLmMsIHRvb2xzL3dpbmUuaW5mOgoJSnVzdGluIENoZXZyaWVyIDxqY2hldnJpZXJAbmV4aWNvbS5uZXQ+CgktIE9idGFpbiBib3JkZXIgc2l6ZSBvZiB3aW5kb3dzIGZyb20gcmVnaXN0cnkgaWYgYXZhaWxhYmxlLgoJLSBPYnRhaW4gaWNvbiBzaXplIGZyb20gcmVnaXN0cnkgaWYgYXZhaWxhYmxlLgoJLSBDcmVhdGUgYSBXaW5kb3dNZXRyaWNzIHNlY3Rpb24gaW4gdGhlIGRlZmF1bHQgcmVnaXN0cnkgYW5kIHBvcHVsYXRlCgkgIGl0IHdpdGggYWxsIGN1cnJlbnRseSBzdXBwb3J0ZWQgbWV0cmljcyAodGhhdCBhcmUgc2V0dXAgdG8gcmVhZCBmcm9tCgkgIHRoZSByZWdpc3RyeSkuCgoJKiBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGUzMi9jb21wb2JqX3ByaXZhdGUuaDoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gTWFrZSBzdHJ1Y3Qgb2xldGxzIHJlZiBjb3VudGVkIHNvIHRoYXQgaXQgaXMgb25seSBkZXRhY2hlZCBmcm9tIHRoZQoJICBhcGFydG1lbnQgb24gdGhlIGZpbmFsIENvVW5pbml0aWFsaXplLgoJLSBEZWNyZWFzZSB0aGUgc2l6ZSBvZiB0aGUgY3JpdCBzZWMgb24gZGVzdHJveWluZyBhbiBhcGFydG1lbnQgLSBpdCBpcwoJICBvbmx5IG5lZWRlZCBmb3IgdG91Y2hpbmcgdGhlIGFwYXJ0bWVudCBsaXN0LgoJLSBTbWFsbCBjbGVhbnVwcy4KCgkqIGRsbHMvb2xlMzIvcnBjLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUNvbm5lY3ROYW1lZFBpcGUgcmV0dXJuaW5nIEVSUk9SX1BJUEVfQ09OTkVDVEVEIGlzIG5vdCBhbiBlcnJvci4KCgkqIGRsbHMvcXVhcnR6L2F2aWRlYy5jLCBkbGxzL3F1YXJ0ei9hdmlzcGxpdC5jLAoJICBkbGxzL3F1YXJ0ei9kc291bmRyZW5kZXIuYywgZGxscy9xdWFydHovZW51bWZpbHRlcnMuYywKCSAgZGxscy9xdWFydHovZW51bW1lZGlhLmMsIGRsbHMvcXVhcnR6L2VudW1tb25pa2VyLmMsCgkgIGRsbHMvcXVhcnR6L2VudW1waW5zLmMsIGRsbHMvcXVhcnR6L2VudW1yZWdmaWx0ZXJzLmMsCgkgIGRsbHMvcXVhcnR6L2ZpbGVzb3VyY2UuYywgZGxscy9xdWFydHovZmlsdGVyZ3JhcGguYywKCSAgZGxscy9xdWFydHovZmlsdGVybWFwcGVyLmMsIGRsbHMvcXVhcnR6L21lbWFsbG9jYXRvci5jLAoJICBkbGxzL3F1YXJ0ei9waW4uYywgZGxscy9xdWFydHovc3lzdGVtY2xvY2suYywKCSAgZGxscy9xdWFydHovdmlkZW9yZW5kZXJlci5jOgoJUGF1bCBWcmllbnMgPFBhdWwuVnJpZW5zQHhzNGFsbC5ubD4KCS0gVXNlIEludGVybG9ja2VkKiBmdW5jdGlvbnMgaW4gQWRkUmVmIGFuZCBSZWxlYXNlLgoJLSBTdG9yZSB0aGUgcmVzdWx0IG9mIHRoZSBJbnRlcmxvY2tlZCBmdW5jdGlvbnMgYW5kIHVzZSBvbmx5IHRoaXMuCgoJKiBkbGxzL250ZGxsL3RpbWUuYzogVG9ueSBMYW1icmVndHMgPHRvbnlfbGFtYnJlZ3RzQHRlbHVzcGxhbmV0Lm5ldD4KCUFkZCBCcmF6aWxpYW4gc3RhbmRhcmQgdGltZS4KCgkqIGRsbHMvcnNhZW5oL3JzYWVuaC5jOiBNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglSZWdpc3RlciByc2FlbmggYXMgYSBSU0EgU0NoYW5uZWwgcHJvdmlkZXIuCglSZWdpc3RlciByc2FlbmggYXMgZGVmYXVsdCBSU0EgU0NoYW5uZWwgcHJvdmlkZXIuCgoJKiBkbGxzL21zaS9hY3Rpb24uYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gUHJvcGVybHkgZGVmb3JtYXQga2V5cyB3cml0dGVuIHRvIHRoZSByZWdpc3RyeS4KCS0gQmVjYXVzZSBkaXJlY3RvcnkgbWFwcGluZ3MgY2FuIGNoYW5nZSBiZXR3ZWVuIHRoZSBDb3N0RmluYWxpemUgc3RlcAoJICBhbmQgdGhlIEluc3RhbGxGaWxlcyBzdGVwIHdlIG5lZWQgdG8gZG8gYSBmaW5hbCByZXNvbHV0aW9uIG9mIHRoZQoJICB0YXJnZXQgZmlsZSBuYW1lIGJlZm9yZSBpbnN0YWxsaW5nLgoKMjAwNS0wMS0wNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHRvb2xzL3dpZGwvdXRpbHMuYywgdG9vbHMvd2lkbC93aWRsLmM6CglIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJQnJpbmcgdGhlIGRlYnVnIGZ1bmN0aW9ucyBpbnRvIGxpbmUgd2l0aCB0aGUgcmVzdCBvZiBXaW5lIGJ5IG5vdAoJYXBwZW5kaW5nIGEgJ1xuJy4KCgkqIGRsbHMvb2xlMzIvb2xlcHJveHkuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJVGhlIGNoYW5uZWwgYnVmZmVyIGNhbiBiZSBOVUxMIGlmIHRoZSBwcm94eSBpcyBkaXNjb25uZWN0ZWQsIHNvIGNoZWNrCglmb3IgdGhpcyBiZWZvcmUgcmVsZWFzaW5nIGl0LgoKCSogZGxscy9vbGUzMi9ycGMuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBGaXggcmFjZSBvbiBhcGFydG1lbnQgY3JlYXRpb24uCgktIERpc3BsYXkgZXJyb3JzIGluIGRlY2ltYWwgdG8gbWFrZSBzZWFyY2hpbmcgZm9yIHRoZSBtZWFuaW5nIGluCgkgIHdpbmVycm9yLmggZWFzaWVyLgoKCSogZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvY29tcG9ial9wcml2YXRlLmgsCgkgIGRsbHMvb2xlMzIvZXJyb3JpbmZvLmMsIGRsbHMvb2xlMzIvbWFyc2hhbC5jLCBkbGxzL29sZTMyL3JwYy5jLAoJICBkbGxzL29sZTMyL3N0dWJtYW5hZ2VyLmM6CglNaWtlIEhlYXJuIDxtaEBjb2Rld2VhdmVycy5jb20+CgktIE1ha2UgYXBhcnRtZW50IGFjY2VzcyB0aHJlYWQtc2FmZSBieSBpbnRyb2R1Y2luZyByZWZjb3VudGluZyBhbmQKCSAgd2lkZXIgdXNhZ2Ugb2YgdGhlIGFwYXJ0bWVudCBsb2NrLgoJLSBSZXdvcmsgT0xFIFRMUyBtYW5hZ2VtZW50IHRvIGVsaW1pbmF0ZSB1bmluaXRpYWxpc2VkIGFwYXJ0bWVudHMgYW5kCgkgIHBhcmVudCBjaGFpbmluZy4KCgkqIHByb2dyYW1zL3dpbmV0ZXN0L21haW4uYzogRmVyZW5jIFdhZ25lciA8d2ZlcmlAYWZhdmFudC5lbHRlLmh1PgoJUmV0dXJuIGEgdHJ1ZSBib29sZWFuIHZhbHVlICgwIG9yIDEpLgoKCSogZGxscy9yc2FlbmgvcnNhZW5oLmM6IE1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCUFkZGVkIGxpc3Qgb2Ygc3VwcG9ydGVkIGFsZ29yaXRobXMgZm9yIFNDaGFubmVsIHBlcnNvbmFsaXR5LgoKCSogZGxscy9tc2kvYWN0aW9uLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglXaGVuIGNoZWNraW5nIGZvciBhbiBleGlzdGluZyAubG5rIHNob3J0Y3V0IGV4dGVuc2lvbiBvbiB0aGUgZmlsZW5hbWUKCWRvIG5vdCBqdXN0IHNlYXJjaCBmb3IgJy4nIGJ1dCBhY3R1YWxseSB2ZXJpZnkgaXQgaXMgJy5sbmsnLgoKCSogdG9vbHMvd2lkbC9wYXJzZXIueSwgdG9vbHMvd2lkbC90eXBlbGliLmMsIHRvb2xzL3dpZGwvdHlwZWxpYi5oLAoJICB0b29scy93aWRsL3dpZGx0eXBlcy5oOgoJSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCVN0b3JlIGludGVyZmFjZXMsIHN0cnVjdHMsIGNvY2xhc3NlcyBhbmQgbW9kdWxlcyB0aGF0IGFyZSB0byBiZQoJd3JpdHRlbiBpbnRvIGEgdHlwZWxpYiBpbiBhIGxpc3QuCgoJKiBkbGxzL2dkaS9mcmVldHlwZS5jLCBkbGxzL2dkaS9nZGlvYmouYzoKCVZpdGFseSBMaXBhdG92IDxsYXZAZXRlcnNvZnQucnU+CglTcGVsbGluZyBmaXhlcy4KCgkqIGRsbHMvbXNpL01ha2VmaWxlLmluLCBkbGxzL21zaS9wYWNrYWdlLmM6CglWaXRhbHkgTGlwYXRvdiA8bGF2QGV0ZXJzb2Z0LnJ1PgoJR2V0IHJlYWwgc2NyZWVuIHByb3BlcnRpZXMuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9tc2kvTWFrZWZpbGUuaW4sCgkgIGRsbHMvbXNpL3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMvbXNpL3Rlc3RzL01ha2VmaWxlLmluLAoJICBkbGxzL21zaS90ZXN0cy9kYi5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWRkIGEgc2ltcGxlIHRlc3QgY2FzZSBmb3IgTVNJIGRhdGFiYXNlcy4KCgkqIGRsbHMvZ2RpL2ZvbnQuYywgaW5jbHVkZS93aW5nZGkuaDogVml0YWx5IExpcGF0b3YgPGxhdkBldGVyc29mdC5ydT4KCUFkZCBkZXNjcmlwdGlvbiBmb3IgRXh0VGV4dE91dCAoYWxzbyBpbmNsdWRlIGNvbW1lbnRzIGZyb20gU2hhY2hhcgoJU2hlbWVzaCkgYW5kIG1pc3NlZCBjb25zdGFudHMgRVRPX05VTUVSSUNTTE9DQUwsIEVUT19OVU1FUklDU0xBVElOLAoJRVRPX1BEWSBpbiB3aW5nZGkuaC4KCgkqIHRvb2xzL3dpbmVkdW1wL3NlYXJjaC5jOiBQZXRlciBCZXJnIExhcnNlbiA8cGVibEBtYXRoLmt1LmRrPgoJRml4IGEgcmV0dXJuIHR5cGUgYnVnIGFmdGVyIGFsbG93aW5nICdmb28gKmZ1bmN0aW9ubmFtZSgpJwoJcHJvdG90eXBlcy4gSW4gJ3Vuc2lnbmVkIGNoYXIgKmZ1bmN0aW9ubmFtZSgpJyBjaGFyIHdhcyBub3Qgc2VlbjsKCXRoZXJlZm9yZSBpbXBsaWNpdCAndW5zaWduZWQgaW50Jy4KCgkqIGRsbHMvZG1zdHlsZS9kbXN0eWxlX3ByaXZhdGUuaCwgZGxscy9kbXN0eWxlL3N0eWxlLmMsCgkgIGRsbHMvZG1zdHlsZS9zdHlsZXRyYWNrLmM6CglSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCS0gaGFuZGxlIFN0eWxlUmVmcyBsaXN0IG9uIERNU3R5bGVUcmFja3MKCS0gaGFuZGxlIFBhcnRSZWZzIGxpc3Qgb24gRE1TdHlsZXMKCS0gYmVnaW4gb2YgUGFydHMgbGlzdCBzdXBwb3J0IG9uIERNU3R5bGVzIChmb3Igbm93IG9ubHkgc29tZSBhcnJheQoJICBjaGVja3MpCgktIGZpeCBJRGlyZWN0TXVzaWNTdHlsZTo6UXVlcnlJbnRlcmZhY2UKCgkqIGRsbHMvcnNhZW5oL3JzYWVuaC5jLCBkbGxzL3JzYWVuaC90ZXN0cy9yc2FlbmguYzoKCU1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCVNldCBsYXN0IGVycm9yIGlmIGR3RmxhZ3MgYXJlIG5vbiB6ZXJvIGluIENQUmVsZWFzZUNvbnRleHQuCglBZGRlZCBjb3JyZXNwb25kaW5nIHRlc3QuCgoJKiBkbGxzL29sZTMyL3JwYy5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBbGxvdyBDT00gdG8gc3RhcnQgc2VydmljZXMgY29udGFpbmluZyBDT00gc2VydmVycy4KCjIwMDUtMDEtMDQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL21zaS9hY3Rpb24uYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gQ3VzdG9tQWN0aW9uIDM1IHNob3VsZCBjYWxsIFNldFRhcmdldFBhdGggbm90IGp1c3Qgc2V0IHRoZSBwcm9wZXJ0eS4KCS0gVEFSR0VURElSIGFuZCBTT1VSQ0VESVIgbWF5IG5vdCBiZSBlbnRyaWVzIDAgaW4gdGhlIGRpcmVjdG9yeQoJICB0YWJsZXMuIFNvIHdoZW4gcmVzb2x2aW5nIHRoZSBmb2xkZXIgd2UgbmVlZCB0byBzZWVrIHRoZW0gb3V0LgoJLSBXaGVuIHdlIGhhbmRsZSBTZXRUYXJnZXRQYXRoIHdlIG5lZWQgdG8gYmUgc3VyZSB0byByZWNhbGN1bGF0ZSB0aGUKCSAgcmVzdWx0aW5nIHBhdGhzIGFzIHRoaW5ncyB3aXRoIHRoZSBub3cgc2V0IERpcmVjdG9yeSBhcyB0aGUgcGFyZW50CgkgIHdpbGwgY2hhbmdlLgoKCSogZGxscy9tc2kvYWN0aW9uLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglDaGFuZ2UgaG93IHdlIGluc3RhbGwgZmlsZXMgc28gdGhhdCB3ZSBleHRyYWN0IGZpbGVzIGFzIHdlIG5lZWQgdGhlbSwKCWN1dHMgZG93biBvbiBleHRyYWN0aW9uIHRpbWUgYW5kIHVudXNlZCBmaWxlcy4KCgkqIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYywgZGxscy9jb21jdGwzMi90cmVldmlldy5jLAoJICBkbGxzL2RpbnB1dC9tb3VzZS5jLCBkbGxzL3dpbm1tL3dpbmVvc3MvbWlkaS5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBc3NvcnRlZCBzcGVsbGluZyBmaXhlcy4KCgkqIGRsbHMvZ2RpL2dkaV9wcml2YXRlLmgsIGRsbHMvZ2RpL3ByaW50ZHJ2LmMsIGRsbHMvd2luZXBzL2VzY2FwZS5jLAoJICBkbGxzL3dpbmVwcy9wc2Rydi5oOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQ29udmVydCBTdGFydERvYyB0byBVbmljb2RlLgoKCSogZGxscy93aW5pbmV0L2ludGVybmV0LmMsIGRsbHMvd2luaW5ldC91dGlsaXR5LmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJRml4ICdTZW5kQXN5bmNDYWxsYmFjaycgd2hlbiBpdCdzIHJlYWxseSBhc3luY2hyb25vdXMuCgoJKiBkbGxzL21zdmNydC9tc3ZjcnQuaCwgaW5jbHVkZS9tc3ZjcnQvc3RkaW8uaDoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglmcG9zX3Qgc2hvdWxkIGJlIDY0IGJpdHMgKHZlcmlmaWVkIHdpdGggbmF0aXZlIE1TVkNSVC5ETEwpCgoJKiBkbGxzL21zdmNydC9maWxlLmM6IExpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglIYW5kbGUgYnVmZmVyaW5nIGluIGZnZXRwb3MgLyBmc2V0cG9zLgoKCSogZGxscy9tc2kvYWN0aW9uLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZSB1bm5lZWRlZCB3aGl0ZXNwYWNlLCBpbmRlbnQgY29ycmVjdGx5LgoKCSogZGxscy92ZXJzaW9uL2luZm8uYywgZGxscy92ZXJzaW9uL3Rlc3RzL2luZm8uYzoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglQcmV2ZW50IGNyYXNoIGZyb20gaW52YWxpZCBsYXN0IHBhcmFtZXRlciBpbiBHZXRGaWxlVmVyc2lvbkluZm8uCglQcmV2ZW50IGNyYXNoIGluIFZlclF1ZXJ5VmFsdWUgd2hlbiByZXR1cm4gc2l6ZSBub3QgcmVxdWVzdGVkLgoJR2V0RmlsZVZlcnNpb25JbmZvIGFuZCBWZXJRdWVyeVZhbHVlIHBhcmFtZXRlciB0ZXN0cyBhZGRlZC4KCgkqIGRsbHMvY29tbWRsZy9jZGxnX0NuLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19EZS5yYywKCSAgZGxscy9jb21tZGxnL2NkbGdfRW4ucmMsIGRsbHMvY29tbWRsZy9jZGxnX0VzLnJjLAoJICBkbGxzL2NvbW1kbGcvY2RsZ19Gci5yYywgZGxscy9jb21tZGxnL2NkbGdfSXQucmMsCgkgIGRsbHMvY29tbWRsZy9jZGxnX1BsLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19QdC5yYywKCSAgZGxscy9jb21tZGxnL2NkbGdfU2kucmMsIGRsbHMvY29tbWRsZy9jZGxnX1N2LnJjLAoJICBkbGxzL2NvbW1kbGcvY2RsZ19UaC5yYzoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUNoYW5nZSBkaWFsb2cgdGVtcGxhdGVzIHRvIG5vdCBleHBsaWNpdGx5IHNwZWNpZnkgZXh0ZW5kZWQgd2luZG93CglzdHlsZXMgZm9yIHRoZSBzdGF0aWMgcmVjdHMgb24gdGhlIFBhZ2UgU2V0dXAgZGlhbG9nIGFzIHRoZSBvbmVzCglzcGVjaWZpZWQgd2VyZSB3cm9uZyBhbnl3YXkuCgoJKiBkbGxzL3gxMWRydi9jbGlwYm9hcmQuYywgZGxscy94MTFkcnYvZXZlbnQuYywgZGxscy94MTFkcnYveDExZHJ2LmgsCgkgIGRvY3VtZW50YXRpb24vc2FtcGxlcy9jb25maWc6CglVbHJpY2ggQ3pla2FsbGEgPHVscmljaEBjb2Rld2VhdmVycy5jb20+CglBbHdheXMgY2xlYXJBbGxTZWxlY3Rpb25zIHNpbmNlIG5vdCBjbGVhcmluZyBDTElQQk9BUkQgY2FuIGdldCB1cyBpbnRvCglhbiBvZGQgc3RhdGUuCgoJKiB0b29scy93aWRsL3BhcnNlci55OiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJQWRkIHRoZSBwcmVjZWRlbmNlIG9mIHRoZSBjb25kaXRpb25hbCBvcGVyYXRvci4KCgkqIGRsbHMvcnNhZW5oL3JzYWVuaC5jOiBNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglBbHdheXMgc2V0IEVSUk9SX1NVQ0NFU1MgaW4gY2FzZSBvZiBzdWNjZXNzIGluIENQQWNxdWlyZUNvbnRleHQuCgoJKiB3aW5kb3dzL3dpbnBvcy5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJRG9uJ3QgdG91Y2ggdGhlIHJlY3QgaWYgaHduZCBpcyBpbnZhbGlkLgoKCSogZGxscy9vbGUzMi9tYXJzaGFsLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gQWRkIHRyYWNpbmcgZm9yIHByb3h5IHJlZiBjb3VudCBmdW5jdGlvbnMuCgktIFJlbGVhc2UgdGhlIGNoYW5uZWwgb24gcHJveHkgZGVzdHJ1Y3Rpb24uCgoJKiBkbGxzL29sZTMyL2NvbXBvYmouYzogTWlrZSBIZWFybiA8bWhAY29kZXdlYXZlcnMuY29tPgoJQWRkIGEgRENPTSB0b2RvIGxpc3QuCgoJKiB0b29scy93aW5lZHVtcC9NYWtlZmlsZS5pbiwgdG9vbHMvd2luZWR1bXAvZW1mLmMsCgkgIHRvb2xzL3dpbmVkdW1wL21haW4uYywgdG9vbHMvd2luZWR1bXAvd2luZWR1bXAuaDoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUV4dGVuZCB3aW5lZHVtcCB0byBhbGxvdyBkdW1waW5nIGVuaGFuY2VkIG1ldGEgZmlsZXMuCgoJKiBkbGxzL2FkdmFwaTMyL3Rlc3RzL2NyeXB0LmM6IEpha29iIEVyaWtzc29uIDxqYWtvdkB2bWxpbnV4Lm9yZz4KCU9uIE5UNCB3ZSBjYW4gYWxzbyBnZXQgRVJST1JfUklORzJfU1RBQ0tfSU5fVVNFIGZyb20KCUNyeXB0QWNxdWlyZUNvbnRleHQoKS4KCgkqIGluY2x1ZGUvbXNpLmg6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIHNvbWUgZXh0cmEgZnVuY3Rpb25zLgoJUmVtb3ZlZCBwYXJhbWV0ZXIgbmFtZSBmb3IgY29uc2lzdGVuY3kgd2l0aCBvdGhlciBkZWNsYXJhdGlvbnMuCgoJKiBpbmNsdWRlL2RjZS5oLCB3aW5kb3dzL2RjZS5jOgoJUmVtb3ZlIHRoZSBubyBsb25nZXIgbmVlZGVkIERDRV9FeGNsdWRlUmduIGZ1bmN0aW9uIGFuZAoJRENYX0tFRVBDTElQUkdOIHN0eWxlLgoKCSogZGxscy91c2VyL3BhaW50aW5nLmM6CglVc2UgdGhlIERDIG9yaWdpbiB0byBtYXAgY29vcmRpbmF0ZXMgaW4gRXhjbHVkZVVwZGF0ZVJnbiBpbnN0ZWFkIG9mCgljYWxsaW5nIGFuIGludGVybmFsIERDRSBmdW5jdGlvbi4KCgkqIGRsbHMvbnRkbGwvZXJyb3IuYywgZGxscy9udGRsbC9oZWFwLmMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywKCSAgaW5jbHVkZS90aHJlYWQuaCwgaW5jbHVkZS93aW50ZXJubC5oOgoJRml4ZWQgdGhlIEZJWE1FIGluIFJ0bE50U3RhdHVzVG9Eb3NFcnJvciwgYW5kIGltcGxlbWVudGVkCglSdGxHZXRMYXN0TnRTdGF0dXMgYW5kIFJ0bFNldExhc3RXaW4zMkVycm9yQW5kTnRTdGF0dXNGcm9tTnRTdGF0dXMuCgoJKiBkbGxzL250ZGxsL3ZpcnR1YWwuYywgc2VydmVyL21hcHBpbmcuYzoKCVN1cHBvcnQgbWFwcGluZyBub24gcGFnZS1hbGlnbmVkIGJpbmFyaWVzIGZvciBTRUNfSU1BR0UgbWFwcGluZ3MuCgoJKiBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGUzMi9jb21wb2JqX3ByaXZhdGUuaCwKCSAgZGxscy9vbGUzMi9tYXJzaGFsLmM6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgcHJveHkgbWFuYWdlci4KCgkqIGRvY3VtZW50YXRpb24vUEFDS0FHSU5HOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVJlbW92ZWQgd2hpdGVzcGFjZSBhdCBlbmQgb2YgbGluZXMsIHVwZGF0ZWQgYSBiaXQuCgoJKiBpbmNsdWRlL2Ftc3RyZWFtLmlkbCwgaW5jbHVkZS9kZHN0cmVhbS5pZGwsIGluY2x1ZGUvbW1zdHJlYW0uaWRsOgoJSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCVVuY29tbWVudGVkICdvcHRpb25hbCcgYXR0cmlidXRlcy4KCgkqIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvY2ZnbWdyMzIuaDoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBjZmdtZ3IzMi5oIGhlYWRlci4KCgkqIHdpbmRvd3MvY3Vyc29yaWNvbi5jOiBVbHJpY2ggQ3pla2FsbGEgPHVscmljaEBjb2Rld2VhdmVycy5jb20+CglXaGVuIGxvYWRpbmcgYSBiaXRtYXAgaW50byBhIGRpYnNlY3Rpb24gdGhlIHJlc3VsdCBjYW5ub3QgYmUKCWNvbXByZXNzZWQuCgoJKiB3aW5kb3dzL2RlZnduZC5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJSGFuZGxlIElNRSBtZXNzYWdlcyBpbiB0aGUgZGVmYXVsdCB1bmljb2RlIHdpbmRvdyBwcm9jZWR1cmUgdG9vLgoKCSogZG9jdW1lbnRhdGlvbi9jb21waWxpbmcuc2dtbDogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUF1Z21lbnQgdGhlIGNvbXBpbGluZyBkb2N1bWVudGF0aW4gd2l0aCB0aGUgYWN0dWFsIGNvbW1hbmRzLgoKCSogZG9jdW1lbnRhdGlvbi93aW5lLWRldmVsLnNnbWw6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglIaWRlIGF1dGhvcnMsIHdlIGRvbid0IGtub3cgaG93IHRvIGZvcm1hdCB0aGVtLgoKCSogZG9jdW1lbnRhdGlvbi9nZXR0aW5nLnNnbWw6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglSZW1vdmUgYmFzaGluZyBvZiBwYWNrYWdlcywgdmFsdWUganVkZ21lbnRzLgoKCSogZG9jdW1lbnRhdGlvbi9SRUFETUUuZGUsIGRvY3VtZW50YXRpb24vUkVBRE1FLmZyLAoJICBkb2N1bWVudGF0aW9uL1JFQURNRS5pdCwgZG9jdW1lbnRhdGlvbi9SRUFETUUucHQsCgkgIGRvY3VtZW50YXRpb24vUkVBRE1FLnB0X2JyOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJS2VlcCBhbGwgUkVBTURFcyBpbiBzeW5jLgoKCSogZGxscy91c2VyL3N0YXRpYy5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglGaXggY29sb3VycyB1c2VkIGZvciBTU18qUkVDVCwgU1NfKkZSQU1FLgoKCSogZGxscy9yc2FlbmgvcnNhZW5oLmM6IE1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCUFkZGVkIHN1cHBvcnQgZm9yIG1hY2hpbmUga2V5c2V0cy4KCgkqIGRsbHMvb2xlMzIvb2xlcHJveHkuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJTWFrZSB0aGUgQ2xhc3NGYWN0b3J5IHByb3h5IHN1cHBvcnQgYWdncmVnYXRpb24uCgoyMDA1LTAxLTAzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9kY2ltYW4zMi9kY2ltYW4zMi5zcGVjLCBkbGxzL2RkcmF3L2RkcmF3LnNwZWMsCgkgIGRsbHMvdXNlci91c2VyLmV4ZS5zcGVjLCBkbGxzL3ZlcnNpb24vdmVyc2lvbi5zcGVjLAoJICBkbGxzL3dpbm1tL3dpbm1tLnNwZWM6CglHZXQgcmlkIG9mIHRoZSBUaHVua0RhdGEgc3R1YnMsIHRoZXNlIGFyZSBub3QgZnVuY3Rpb25zLgoKCSogZGxscy9hdmlmaWwzMi9NYWtlZmlsZS5pbiwgZGxscy9hdmlmaWwzMi9hdmlmaWwzMi5zcGVjLCBpbmNsdWRlL3Zmdy5oOgoJRml4ZWQgQ0xTSURfQVZJU2ltcGxlVW5NYXJzaGFsIGV4cG9ydC4KCgkqIGRsbHMvcmFzYXBpMzIvcmFzYXBpLmMsIGRsbHMvcmFzYXBpMzIvcmFzYXBpMzIuc3BlYzoKCUF2b2lkIGR1bXBpbmcgdGhlIGNvbnRlbnRzIG9mIG91dHB1dCBzdHJpbmdzLgoKCSogZGxscy91bmljb3dzL21haW4uYywgZGxscy91bmljb3dzL3VuaWNvd3Muc3BlYzoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJUmVtb3ZlIG1vc3QgcmVtYWluaW5nIHN0dWJzIGZyb20gdW5pY293cy4KCgkqIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYywgZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGluY2x1ZGUvc2hlbGxhcGkuaCwgaW5jbHVkZS9zaGxvYmouaDoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJU3R1YiBpbXBsZW1lbnRhdGlvbnMgZm9yIFNIVXBkYXRlSW1hZ2VBLCBTSEhhbmRsZVVwZGF0ZUltYWdlLAoJU0hPYmplY3RQcm9wZXJ0aWVzLCBTSEdldE5ld0xpbmtJbmZve0EsV30sIFNIU3RhcnROZXRDb25uZWN0aW9uRGlhbG9nLAoJU0hFbXB0eVJlY3ljbGVCaW57QSxXfSwgU0hGb3JtYXREcml2ZSwgU0hRdWVyeVJlY3ljbGVCaW57QSxXfS4KCSdIZWFwQWxsb2MgY2FuIGZhaWwnIGZpeCBmb3IgRXh0cmFjdEljb25FeEEuCglJbXBsZW1lbnQgRXh0cmFjdEFzc29jaWF0ZWRJY29uQSAtPiBXLgoJQ29ycmVjdCBwcm90b3R5cGUgZm9yIFNIT2JqZWN0UHJvcGVydGllcy4KCUZvcndhcmQgU0hHZXROZXdMaW5rSW5mbyB0byBTSEdldE5ld0xpbmtJbmZvQS4KCgkqIGRsbHMvd2luc3Bvb2wvaW5mby5jLCBkbGxzL3dpbnNwb29sL3dpbnNwb29sLmRydi5zcGVjOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglTdHViIGltcGxlbWVudGF0aW9ucyBmb3IgQWRkTW9uaXRvclcsIERlbGV0ZVByaW50ZXJEcml2ZXJXLAoJRGVsZXRlTW9uaXRvclcsIERlbGV0ZVBvcnRXLCBHZXRQcmludFByb2Nlc3NvckRpcmVjdG9yeVcsCglBZGRQcmludFByb2Nlc3NvcntBLFd9LCBBZGRQcmludFByb3ZpZG9ye0EsV30sCglBZHZhbmNlZERvY3VtZW50UHJvcGVydGllc3tBLFd9LCBFbnVtUG9ydHNXLCBBZGRQb3J0e0EsV30sCglDb25maWd1cmVQb3J0e0EsV30sIERlbGV0ZVByaW50UHJvY2Vzc29ye0EsV30sCglEZWxldGVQcmludFByb3ZpZG9ye0EsV30sIEVudW1QcmludFByb2Nlc3NvckRhdGF0eXBlc3tBLFd9LAoJR2V0Sm9ie0EsV30uCgoJKiBkbGxzL3F1YXJ0ei9hdmlkZWMuYywgZGxscy9xdWFydHovYXZpc3BsaXQuYywKCSAgZGxscy9xdWFydHovZmlsdGVyZ3JhcGguYywgZGxscy9xdWFydHovcGluLmM6CglDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglJbXBsZW1lbnRlZCBJTWVkaWFDb250cm9sX1J1biB0aGF0IGV4cGxvcmVzIHRoZSBncmFwaCwgY291bnRzCglyZW5kZXJlcnMgYW5kIHN0YXJ0cyBmaWx0ZXJzLgoJQmV0dGVyIGltcGxlbWVudGF0aW9uIG9mIElCYXNlRmlsdGVyX1J1biBmb3IgQVZJIFNQbGl0dGVyIGFuZCBBVkkKCURlY29tcHJlc3Nvci4KCVVzZSB0aGUgc3RhbmRhcmQgbWVtb3J5IGFsbG9jYXRvciB3aGVuIGFuIG91dHB1dCBwaW4gZG9lcyBub3QgcHJvdmlkZQoJYW55IGFsbG9jYXRvci4KCVNldCBhbGxvY2F0b3IgcHJvcGVydGllcyBmb3IgQVZJIERlY29tcHJlc3NvciBvdXRwdXQgcGluIGFuZCB1cGRhdGUKCXRoZSBidWZmZXJzIHNpemUgYXQgY29ubmVjdGlvbiB0aW1lLgoKCSogZGxscy9zaGx3YXBpL3N0cmluZy5jOiBKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJR2V0IHJpZCBvZiBXLT5BIGNhbGxzLgoKCSogZGxscy9nZGkvdGVzdHMvZ2Rpb2JqLmM6IEpha29iIEVyaWtzc29uIDxqYWtvdkB2bWxpbnV4Lm9yZz4KCUFkZCByZXR1cm4gdmFsdWUgdG8gR2V0T2JqZWN0IGVycm9yIG1lc3NhZ2UuCgoJKiB0b29scy93aW5lZHVtcC9mdW5jdGlvbl9ncmVwLnBsOiBQZXRlciBCZXJnIExhcnNlbiA8cGVibEBtYXRoLmt1LmRrPgoJQ3VycmVudGx5IGEgJy8vKioqKicgaXMgbWF0Y2hlZCBhcyBhbiAvKiBjb21tZW50IC0gZGlzYWxsb3cgYSAnLycgaW4KCWZyb250IG9mIHRoZSAnLyonIG1hdGNoLiBBbiAnZXh0ZXJuICJDIiB7JyBjYW4gYmUgc3BsaXQgaW4gc2V2ZXJhbAoJbGluZXMgLSBhbGxvdyAnXG4nIGFzIHNwYWNlLCBhbmQgbG9va291dCBmb3IgdGhlIHJlc3QgaWYgcGFydGlhbAoJZm91bmQuCgoJKiB0b29scy93aW5lZHVtcC9zZWFyY2guYzogUGV0ZXIgQmVyZyBMYXJzZW4gPHBlYmxAbWF0aC5rdS5kaz4KCUluIGZ1bmN0aW9uX2dyZXAucGwgYW5kIHN5bWJvbC5jL3N5bWJvbF9jbGVhbl9zdHJpbmcgc3BhY2VzIGJldHdlZW4KCXRoZSBmdW5jdGlvbiBuYW1lIGFuZCAqIGFyZSByZW1vdmVkLiBGeC4gdGhlIHR5cGUgJ3ZvaWQgKiBmb28oKScgaXMKCXJldHVybmVkIGFzICd2b2lkICpmb28oKScuIFJlY29nbml6ZWQgdGhpcyBhcyBhIHZhbGlkIHByb3RvdHlwZSBpbgoJc3ltYm9sX3NlYXJjaC4KCgkqIHRvb2xzL3dpbmVkdW1wL3N5bWJvbC5jOiBQZXRlciBCZXJnIExhcnNlbiA8cGVibEBtYXRoLmt1LmRrPgoJQWRkZWQgdGhlIHdvcmQgIkZMT0FUIiB0byBiZSByZWNvZ25pemVkIGFzIGFyZ3VtZW50IHR5cGUgZmxvYXQuCgoJKiBpbmNsdWRlL2RwbG9iYnkuaDogUGV0ZXIgQmVyZyBMYXJzZW4gPHBlYmxAbWF0aC5rdS5kaz4KCURlZmluZSBEaXJlY3RQbGF5TG9iYnlDcmVhdGUgdG8gYmUgZWl0aGVyIHRoZSBXIG9yIEEgdmVyc2lvbi4KCgkqIGluY2x1ZGUvd2luY3J5cHQuaDogTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJQWRkZWQgc29tZSBkZWZpbmVzIGNvbmNlcm5pbmcgU0NoYW5uZWwgQ1NQcy4KCgkqIGRsbHMvcnNhZW5oL2ltcGxnbHVlLmM6IE1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCUFkaGVyZSB0byBjb25zdCduZXNzIG9mIHRoZSBpbnB1dCBkYXRhIGluIGVuY3J5cHRfYmxvY2tfaW1wbC4KCgkqIGRsbHMvY29tY3RsMzIvdGFiLmM6IFZpdGFseSBMaXBhdG92IDxsYXZAZXRlcnNvZnQucnU+CglBZGQgY29tbWVudHMsIGZpeCBuZWdhdGl2ZSB2YWx1ZSBmcm9tIEdldEN1ckZvY3VzLgoKCSogd2luZG93cy91c2VyLmM6CglVc2UgRXhpdFByb2Nlc3MgdG8gdGVybWluYXRlIHRoZSBwcm9jZXNzIGluIEV4aXRXaW5kb3dzRXggc28gdGhhdCBpdAoJZ2V0cyBhIGNoYW5jZSB0byBjbGVhbiB0aGluZ3MgdXAuCgoJKiBkbGxzL2FkdmFwaTMyL2FkdmFwaTMyLnNwZWM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBzb21lIG1pc3NpbmcgZGVjbGFyYXRpb25zIGluIHRoZSBzcGVjIGZpbGUuCgoJKiBkbGxzL3NobHdhcGkvb3JkaW5hbC5jOiBKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJR2V0IHJpZCBvZiBXLT5BIGNhbGxzLgoKCSogZGxscy93aW5lZG9zL2Rvc3ZtLmMsIGRsbHMvd2luZWRvcy9pbnRlcnJ1cHRzLmMsIGRsbHMvd2luZWRvcy92eGQuYzoKCURpZWdvIFBldHRlbvIgPGZsYW1lZXllc0B1c2Vycy5iZXJsaW9zLmRlPgoJR2V0IHJpZCBvZiBEUFJJTlRGLgoKCSogZGxscy9tc2kvYWN0aW9uLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglJbXByb3ZlIHByb2dyZXNzIGJhciB0cmFja2luZy4KCgkqIHRvb2xzL3dpbmVkdW1wL2xlLmMsIHRvb2xzL3dpbmVkdW1wL3dpbmVkdW1wLmg6IFdhcm5pbmcgZml4ZXMuCgoJKiBkbGxzL2FkdmFwaTMyL2FkdmFwaS5jLCBkbGxzL2FkdmFwaTMyL2FkdmFwaTMyLnNwZWMsCgkgIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYywgZGxscy9hZHZhcGkzMi9zZXJ2aWNlLmMsCgkgIGluY2x1ZGUvbG1zZXJ2ZXIuaCwgaW5jbHVkZS9udHNlY2FwaS5oLCBpbmNsdWRlL3dpbmJhc2UuaCwKCSAgaW5jbHVkZS93aW5zdmMuaDoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJU3R1YiBpbXBsZW1lbnRhdGlvbnMgZm9yIEdldEtlcm5lbE9iamVjdFNlY3VyaXR5LAoJR2V0UHJpdmF0ZU9iamVjdFNlY3VyaXR5LCBHZXRTZXJ2aWNlS2V5TmFtZXtBLFd9LAoJSW1wZXJzb25hdGVOYW1lZFBpcGVDbGllbnQsIEluaXRpYXRlU3lzdGVtU2h1dGRvd257QSxXfSwKCUlzVG9rZW5SZXN0cmljdGVkLCBMb2dvblVzZXJ7QSxXfSwgTG9va3VwQWNjb3VudE5hbWVXLAoJTG9va3VwUHJpdmlsZWdlRGlzcGxheU5hbWV7QSxXfSwgTWFwR2VuZXJpY01hc2ssCglPYmplY3RDbG9zZUF1ZGl0QWxhcm17QSxXfSwgT2JqZWN0T3BlbkF1ZGl0QWxhcm17QSxXfSwKCU9iamVjdFByaXZpbGVnZUF1ZGl0QWxhcm17QSxXfSwgUHJpdmlsZWdlZFNlcnZpY2VBdWRpdEFsYXJte0EsV30sCglRdWVyeVNlcnZpY2VMb2NrU3RhdHVze0EsV30sIFNldEFjbEluZm9ybWF0aW9uLAoJU2V0UHJpdmF0ZU9iamVjdFNlY3VyaXR5LCBTZXRTZWN1cml0eURlc2NyaXB0b3JDb250cm9sLAoJU2V0U2VydmljZUJpdHMsIExzYVNldEluZm9ybWF0aW9uUG9saWN5LCBMc2FMb29rdXBOYW1lcywKCUxzYUVudW1lcmF0ZVRydXN0ZWREb21haW5zLgoKCSogZGxscy9zaGx3YXBpL29yZGluYWwuYzogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCURvY3VtZW50YXRpb24gZml4LgoKCSogZGxscy9zaGx3YXBpL3Rlc3RzL3BhdGguYywgZGxscy9zaGx3YXBpL3VybC5jOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglJbXBsZW1lbnQgYW5kIHRlc3QgVVJMSVNfVVJMIGZsYWcgaW4gVXJsSXMoKS4KCgkqIGRsbHMvcXVhcnR6L3JlZ3N2ci5jOiBDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglBZGRlZCByZWdpc3RyYXRpb24vdW5yZWdpc3RyYXRpb24gb2YgbWVkaWEgdHlwZXMuCgoJKiBkbGxzL21hcGkzMi9tYXBpMzIuc3BlYywgZGxscy9tYXBpMzIvcHJvcC5jLAoJICBkbGxzL21hcGkzMi90ZXN0cy9wcm9wLmMsIGRsbHMvbWFwaTMyL3V0aWwuYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglJbXBsZW1lbnQgQ3JlYXRlSVByb3AgJiBtb3N0IG9mIE1BUEkncyBJTUFQSVByb3AgJiBJUHJvcERhdGEgaWZhY2VzLgoJSW1wbGVtZW50IEZCYWRFbnRyeUxpc3QgYW5kIG1ha2UgRkJhZFByb3AgdXNlIGl0LgoJVGVzdCBDcmVhdGVJUHJvcCwgc3RhcnQgb2YgdGVzdHMgZm9yIElQcm9wRGF0YSBpbnRlcmZhY2UuCgoJKiBkbGxzL3VzZXIvbWlzYy5jLCBkbGxzL3VzZXIvdXNlcjMyLnNwZWMsIGluY2x1ZGUvd2ludXNlci5oOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglTdHViIGltcGxlbWVudGF0aW9ucyBmb3IgR2V0QWx0VGFiSW5mb3tBLFd9LgoJRm9yd2FyZCBHZXRBbHRUYWJJbmZvIHRvIEdldEFsdFRhYkluZm9BLgoKCSogZGxscy91c2VyL3N5c3BhcmFtcy5jOiBKdXN0aW4gQ2hldnJpZXIgPGpjaGV2cmllckBuZXhpY29tLm5ldD4KCUNvbnZlcnRlZCBzeXN0ZW0gbWV0cmljcyB0byBVbmljb2RlLgoKCSogd2luZG93cy91c2VyLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CgktIElmIGdpdmVuIHRoZSBFV1hfRk9SQ0UgZmxhZywgRXhpdFdpbmRvd3NFeCgpIHNob3VsZCBub3Qgc2VuZCB0aGUKCSAgV01fe1FVRVJZfUVORFNFU1NJT04gbWVzc2FnZXMuCgktIEFkZCBzdXBwb3J0IGZvciBFV1hfRk9SQ0VJRkhVTkcuCgktIEV4aXRXaW5kb3dzRXgoKSBzaG91bGQgcmV0dXJuIHRydWUgaWYgaXQgc3VjY2VlZHMsIGV2ZW4gaWYgdGhlIHVzZXIKCSAgY2FuY2VscyB0aGUgc2h1dGRvd24uCgktIERvbid0IGNyYXNoIGlmIHRoZXJlIGFyZSBubyB3aW5kb3dzLgoKCSogZGxscy9tc2kvbXNpLmMsIGRsbHMvbXNpL21zaS5zcGVjOgoJU3RldmVuIEVkd2FyZHMgPHN0ZXZlbkBjb2Rld2VhdmVycy5jb20+CglBZGQgYW5kIGZpeCBzb21lIHN0dWJzLgoKCSogTElDRU5TRSwgaW5jbHVkZS93aW5lL3dpbmVfY29tbW9uX3Zlci5yYzoKCUl2YW4gTGVvIFB1b3RpIDxpdmFubGVvQGdtYWlsLmNvbT4KCVVwZGF0ZSBjb3B5cmlnaHQgaW5mbyBmb3IgdGhlIG5ldyB5ZWFyLgoKCSogZGxscy91c2VyL2hvb2suYzogSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCUdldCByaWQgb2YgSEVBUF9zdHJkdXBXdG9BIGNhbGxzLgoKCSogZGxscy9tc2kvYWN0aW9uLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglCZSBzdXJlIHRoYXQgc2V0IHBhdGhzIGFyZSB0ZXJtaW5hdGVkIHdpdGggYSBiYWNrc2xhc2guCgoJKiBkbGxzL2FkdmFwaTMyL2V2ZW50bG9nLmMsIGRsbHMvZGJnaGVscC9jb2ZmLmMsCgkgIGRsbHMvZG1pbWUvcGVyZm9ybWFuY2UuYywgZGxscy9rZXJuZWwvcHJvZmlsZS5jLAoJICBkbGxzL2tlcm5lbC9yZXNvdXJjZS5jLCBkbGxzL29sZTMyL2JpbmRjdHguYywKCSAgZGxscy9vbGVhdXQzMi90eXBlbGliMi5jLCBkbGxzL3dpbmVwcy90eXBlNDIuYywgZGxscy93aW5pbmV0L2Z0cC5jLAoJICBkbGxzL3dpbmluZXQvaHR0cC5jLCBkbGxzL3dpbm1tL3dpbmVvc3MvbWl4ZXIuYywKCSAgZGxscy94MTFkcnYveHJlbmRlci5jOgoJTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5kZT4KCURvIG5vdCBjaGVjayBmb3Igbm9uIE5VTEwgcG9pbnRlciBiZWZvcmUgSGVhcEZyZWUnaW5nIGl0LiBJdCdzCglyZWR1bmRhbnQuCgoJKiBkbGxzL2dkaS9lbmhtZXRhZmlsZS5jLCBkbGxzL21zdmNydC9jcHAuYywgZGxscy9vbGVhdXQzMi9zYWZlYXJyYXkuYzoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJU29tZSBtaXNzaW5nIGNvbnN0IGNvcnJlY3RuZXNzIGZpeGVzLgoKCSogdG9vbHMvd2luZWR1bXAvTWFrZWZpbGUuaW4sIHRvb2xzL3dpbmVkdW1wL2xlLmMsIHRvb2xzL3dpbmVkdW1wL3BlLmM6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQWRkZWQgcGFydGlhbCBWeEQgc3VwcG9ydC4KCgkqIHdpbmRvd3MvY2xpcGJvYXJkLmM6IFVscmljaCBDemVrYWxsYSA8dWxyaWNoQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBjb21tZW50IGFib3V0IENMSVBCT0FSRF9TZXRDbGlwYm9hcmRPd25lci4KCgkqIGRsbHMvZG1iYW5kL2RtdXRpbHMuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCURlYnVnIGZpeGVzIGFuZCBjbGVhbnVwLgoKCSogZG9jdW1lbnRhdGlvbi9SRUFETUUuZXMsIHByb2dyYW1zL3dpbmVmaWxlL0VzLnJjOgoJSm9z6SBNYW51ZWwgRmVycmVyIE9ydGl6IDxqbWZvMTk4MkB5YWhvby5lcz4KCUFkZGVkIFNwYW5pc2ggdHJhbnNsYXRpb24uCgoJKiBwcm9ncmFtcy93aW5lY2ZnL2FwcGRlZmF1bHRzLmMsIHByb2dyYW1zL3dpbmVjZmcvd2luZWNmZy5jOgoJTWlrZSBIZWFybiA8bWlrZUBuYXZpLmN4PgoJLSBGaW5pc2ggb2ZmIHRoZSAiUmVtb3ZlIEFwcGxpY2F0aW9uIiBidXR0b24uCgktIEFsbG93IHJlbW92YWwgb2Yga2V5cyBmcm9tIHRoZSBvdmVybGF5LgoJLSBPbmUgb3IgdHdvIHdoaXRlc3BhY2UgZml4ZXMuCgoJKiBkbGxzL3gxMWRydi9rZXlib2FyZC5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJLSBEbyBub3QgcHJpbnQgRklYTUUgaW4gWDExRFJWX0dldEtleWJvYXJkTGF5b3V0IGlmIGR3VGhyZWFkaWQKCSAgaWRlbnRpZmllcyBjdXJyZW50IHRocmVhZC4KCS0gTWFrZSBYMTFEUlZfR2V0S2V5Ym9hcmRMYXlvdXRMaXN0IGZvbGxvdyB0aGUgc2FtZSBydWxlIGFzCgkgIFgxMURSVl9HZXRLZXlib2FyZExheW91dCBhbmQgWDExRFJWX0dldEtleWJvYXJkTGF5b3V0TmFtZSBmb3IgQ0pLCgkgIGxvY2FsZXMuCgktIFRoZXJlIGlzIG5vIG5lZWQgdG8gaGF2ZSAweGUwMDEgaW4gdGhlIGhpZ2ggd29yZCBvZiBKYXBhbmVzZQoJICBrZXlib2FyZCBsYXlvdXRzIGxjaWRzIGluIG1haW5fa2V5X3RhYiwgdGhlIGFib3ZlIEFQSXMgdGFrZSBjYXJlIG9mCgkgIGl0LgoJLSBIaWdoIHdvcmQgb2YgYSByZXR1cm5lZCBrZXlib2FyZCBsYXlvdXQgZHVwbGljYXRlcyBsb3cgd29yZCBmb3Igbm9uCgkgIENKSyBsb2NhbGVzIHVuZGVyIFdpbmRvd3MuCgoJKiBkbGxzL2tlcm5lbC9zeW5jLmMsIGRsbHMvbnRkbGwvZmlsZS5jLCBkbGxzL250ZGxsL3J0bC5jOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglGaXhlZCBzb21lIHJlZ3Jlc3Npb25zIGZyb20gdGhlIHByZXZpb3VzIGNoYW5nZS4KCgkqIGRsbHMvZGRyYXcvZGRyYXcvbWFpbi5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL2RpYi5jOgoJQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJSGFuZGxlIGNvcnJlY3RseSBERFNEX0xJTkVBUlNJWkUgZmxhZyBmb3IgRk9VUkNDIHRleHR1cmVzLgoKCSogZGxscy91c2VyL3Rlc3RzL2xpc3Rib3guYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUFkZCB0ZXN0IGZvciB0aGUgbGlzdGJveCBpdGVtIGhlaWdodC4KCgkqIGRsbHMvaXRzcy9pdHNzLmMsIGRsbHMvaXRzcy9tb25pa2VyLmMsIGRsbHMvaXRzcy9zdG9yYWdlLmM6CglKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJSW1wbGVtZW50ZWQgRGxsQ2FuVW5sb2FkTm93LgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jOiBKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJR2V0IHJpZCBvZiBXLT5BIGNhbGwuCgoJKiBwcm9ncmFtcy93aW5lZGJnL3dpbmVkYmcubWFuOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCVR5cG9zL2dyYW1tYXIgZml4ZXMuCgoJKiBkbGxzL3NobHdhcGkvdXJsLmM6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglDb25zdCBjb3JyZWN0bmVzcyBmaXguCgoJKiBkbGxzL3NobHdhcGkvdGVzdHMvc2hyZWcuYzogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCVVzZSBBc2NpaSBmdW5jdGlvbnMgZXhwbGljaXRseS4KCgkqIGRsbHMvdXNlci9zdGF0aWMuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVNTX0NFTlRFUklNQUdFIGhhcyBiZWVuIGltcGxlbWVudGVkLgoKCSogZGxscy9yc2FlbmgvcnNhZW5oLmMsIGluY2x1ZGUvd2luY3J5cHQuaDoKCU1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCUltcGxlbWVudGVkIHBhcmFsbGVsIGhhc2hpbmcgaW4gQ1BFbmNyeXB0IGFuZCBDUERlY3J5cHQuCglJbXBsZW1lbnRlZCBDUEhhc2hTZXNzaW9uS2V5LgoKCSogZGxscy9vbGUzMi9zdHVibWFuYWdlci5jOiBNaWtlIEhlYXJuIDxtaEBjb2Rld2VhdmVycy5jb20+CglDb21tZW50IG91dCBhbiBhc3NlcnQsIGFzIHdlIGRvbid0IHlldCBpbXBsZW1lbnQgSVJlbVVua25vd24uCgoJKiBkbGxzL2dkaS9nZGkzMi5zcGVjLCBkbGxzL2dkaS9wYWxldHRlLmM6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCVN0dWIgaW1wbGVtZW50YXRpb25zIGZvciBHZXRMb2dDb2xvclNwYWNle0EsV30uCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBkbGxzL2tlcm5lbC9sY2Zvcm1hdC5jOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglTdHViIGltcGxlbWVudGF0aW9ucyBmb3IgRW51bURhdGVGb3JtYXRzRXh7QSxXfS4KCgkqIGRsbHMvcmFzYXBpMzIvcmFzYXBpLmMsIGRsbHMvcmFzYXBpMzIvcmFzYXBpMzIuc3BlYywgaW5jbHVkZS9yYXMuaDoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJU3R1YiBpbXBsZW1lbnRhdGlvbnMgZm9yIFJhc0Nvbm5lY3Rpb25Ob3RpZmljYXRpb257QSxXfSwKCVJhc0NyZWF0ZVBob25lYm9va0VudHJ5e0EsV30sIFJhc0RlbGV0ZVN1YkVudHJ5e0EsV30sIFJhc0RpYWx7QSxXfSwKCVJhc0VkaXRQaG9uZWJvb2tFbnRyeXtBLFd9LCBSYXNHZXRDb25uZWN0U3RhdHVze0EsV30sCglSYXNHZXRFbnRyeURpYWxQYXJhbXNXLCBSYXNIYW5nVXBXLCBSYXNHZXRFbnRyeVByb3BlcnRpZXNXLAoJUmFzR2V0RXJyb3JTdHJpbmd7QSxXfSwgUmFzR2V0UHJvamVjdGlvbkluZm97QSxXfSwKCVJhc1JlbmFtZUVudHJ5e0EsV30sIFJhc1NldEVudHJ5RGlhbFBhcmFtc3tBLFd9LAoJUmFzU2V0U3ViRW50cnlQcm9wZXJ0aWVze0EsV30uCgoJKiBkbGxzL21zaS9hY3Rpb24uYywgZGxscy9tc2kvbXNpcHJpdi5oLCBkbGxzL21zaS9wYWNrYWdlLmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJRnJlZSBhbGxvY2F0ZWQgYnVmZmVycy4KCgkqIFJFQURNRTogSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglSZW1vdmUgb2Jzb2xldGUgaW5mby4KCgkqIHRvb2xzL3dpZGwvcGFyc2VyLmwsIHRvb2xzL3dpZGwvcGFyc2VyLnksIHRvb2xzL3dpZGwvd2lkbHR5cGVzLmg6CglKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJQWRkZWQgb3B0aW9uYWwsIGRlZmF1bHR2YWx1ZSBhbmQgdmFyYXJnLgoKCSogZGxscy9yc2FlbmgvbXBpLmMsIGRsbHMvcnNhZW5oL3JzYS5jOgoJTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJU21hbGwgYnVnZml4ZXMgYmFja3BvcnRlZCBmcm9tIHRoZSBMaWJUb21DcnlwdCB2MS4wcmMxIHJlbGVhc2UuCgoJKiBpbmNsdWRlL29iamlkbC5pZGw6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBkZWZpbml0aW9uIG9mIElJbnRlcm5hbFVua25vd24uCgoyMDA0LTEyLTI3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9tc2kvaGFuZGxlLmMsIGRsbHMvbXNpL21zaXByaXYuaCwgZGxscy9tc2kvcmVjb3JkLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgdGhyZWFkIHNhZmV0eSBmb3IgcmVjb3Jkcy4KCgkqIGRsbHMvb2xlMzIvY29tcG9ial9wcml2YXRlLmgsIGRsbHMvb2xlMzIvcnBjLmM6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIE1vdmUgbmFtZWQgcGlwZSBtYWNyb3MgaW50byBycGMuYy4KCS0gUmVtb3ZlIHVubmVlZGVkIGZ1bmN0aW9uLgoKCSogZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvY29tcG9ial9wcml2YXRlLmgsIGRsbHMvb2xlMzIvcnBjLmM6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgQ09NIGxvY2FsIHNlcnZlcnMgdXNpbmcgdGFibGUgbWFyc2hhbGluZyB0byBhdm9pZCBkb2luZyB0aGUKCW1hcnNoYWxpbmcgaW4gYSBjaGlsZCB0aHJlYWQgd2hlcmUgQ09NIGhhcyBub3QgYmVlbiBpbml0aWFsaXplZC4KCgkqIGRsbHMvb2xlMzIvTWFrZWZpbGUuaW4sIGRsbHMvb2xlMzIvY29tcG9iai5jLAoJICBkbGxzL29sZTMyL2NvbXBvYmpfcHJpdmF0ZS5oLCBkbGxzL29sZTMyL21hcnNoYWwuYywgZGxscy9vbGUzMi9ycGMuYywKCSAgZGxscy9vbGUzMi9zdHVibWFuYWdlci5jLCBkbGxzL29sZTMyL3Rlc3RzL21hcnNoYWwuYzoKCU1pa2UgSGVhcm4gPG1oQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gSW1wbGVtZW50IHRoZSBDT00gc3R1YiBtYW5hZ2VyLCByZWZhY3RvciB0aGUgY3VycmVudCBzdHViIGNvZGUuCgktIEJlZ2luIGltcGxlbWVudGluZyBpbnRlcmZhY2Ugc3R1YnMuCgoJKiBkbGxzL21zaS9hY3Rpb24uYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCVBhcnNlIG91dCB0aGUgZnVsbCBmZWF0dXJlcyBieSB1c2luZyB0aGUgJywnIGNoYXJhY3RlciBhbmQgZG8KCWNvbXBhcmlzb25zIGJhc2VkIG9uIHRoZSBmdWxsIGZlYXR1cmUgbmFtZXMuCgoJKiBkbGxzL21zaS9hY3Rpb24uYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUNvbnRpbnVlIHdoZW4gYSBkdXBsaWNhdGUgY29tcG9uZW50IGlzIGZvdW5kIGFuZCBsb2FkZWQuCgoJKiBkbGxzL21zaS9hY3Rpb24uYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gUmV3b3JrIGhvdyB3ZSBoYW5kbGUgRmVhdHVyZSBhbmQgQ29tcG9uZW50IFN0YXRlcy4gSSBoYXZlIGNvbmZpcm1lZAoJICBmcm9tIHRlc3RpbmcgdGhhdCwgYWx0aG91Z2ggZG9jdW1lbnRlZCBub3doZXJlLCBoYXZpbmcgQURETE9DQUwgb24KCSAgdGhlIGluc3RhbGwgbGluZSBvdmVycmlkZXMgSU5TVEFMTExFVkVMLgoJLSBUcmFjayBhbGwgZmlsZXMgZXh0cmFjdGVkIGZyb20gY2FiaW5lbnRzIGFzIHRlbXBmaWxlcyBzbyB0aGV5IGNhbiBiZQoJICByZW1vdmVkIGF0IHRoZSBlbmQgb2YgdGhlIGluc3RhbGwgdG8gbm90IGxlYXZlIHVuaW5zdGFsbGVkIGJ1dAoJICB1bmNhYmJlZCBmaWxlcyBsYXlpbmcgYXJvdW5kLgoKCSogZGxscy9tc2kvYWN0aW9uLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglNb3ZlIEluc3RhbGwgRmVhdHVyZXMgc2VsZWN0aW9uIGFuZCBldmFsdWF0aW9uIGludG8gQ29zdEZpbmFsaXplLgoKCSogZGxscy9tc2kvYWN0aW9uLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglBbGxvdyBmb3IgZW5kIG9mIGluc3RhbGwgYWN0aW9ucy4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJLSBDcmVhdGUgdGhlIHNob3J0Y3V0IGRpcmVjdG9yeSBpZiBpdCBkb2VzIG5vdCBleGlzdC4KCS0gU2V0IHRoZSBJTlNUQUxMTEVWRUwgaW4gQ29zdEZpbmFsaXplIGlmIGl0IGlzIG5vdCBzZXQuCgoJKiBkbGxzL21zaS9hY3Rpb24uYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUVsaW1pbmF0ZSBzb21lIGZpeGVkIGxlbmd0aCBidWZmZXJzLgoKCSogZGxscy9hZHZhcGkzMi90ZXN0cy9zZWN1cml0eS5jLCBkbGxzL2dkaS90ZXN0cy9icnVzaC5jLAoJICBkbGxzL2dkaS90ZXN0cy9nZGlvYmouYywgZGxscy9nZGkvdGVzdHMvbWV0YWZpbGUuYywKCSAgZGxscy9semV4cGFuZC90ZXN0cy9semV4cGFuZF9tYWluLmMsIGRsbHMvbXNjbXMvdGVzdHMvcHJvZmlsZS5jLAoJICBkbGxzL21zdmNydC90ZXN0cy9maWxlLmMsIGRsbHMvc2hlbGwzMi90ZXN0cy9zaGVsbHBhdGguYywKCSAgZGxscy9zaGx3YXBpL3Rlc3RzL29yZGluYWwuYywgZGxscy93aW5pbmV0L3Rlc3RzL2h0dHAuYzoKCVJlaW4gS2xhemVzIDx3aWpuQHdhbmFkb28ubmw+CglDb3JyZWN0IGNhc2VzIHdoZXJlIGFyZ3VtZW50cyBvZiBvaygpIGNhbGxzIGRlcGVuZCBvbiB0aGUgb3JkZXIgaW4KCXdoaWNoIHRoZXkgYXJlIGV2YWx1YXRlZC4KCgkqIGRsbHMvYWR2YXBpMzIvc2VydmljZS5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggQ3JlYXRlU2VydmljZSdzIGVycm9yIGNvZGUgZm9yIGEgc2VydmljZSB0aGF0IGFscmVhZHkgZXhpc3RzLgoKCSogZGxscy9tc2kvcGFja2FnZS5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJSW5jbHVkZSBhIFN5c3RlbTE2Rm9sZGVyIGRlZmluaXRpb24uCgoJKiBpbmNsdWRlL3VybG1vbi5pZGw6IEphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglBZGRlZCBJSW50ZXJuZXRCaW5kSW5mbywgSUludGVybmV0UHJvdG9jb2xSb290LCBJSW50ZXJuZXRQcm90b2NvbFNpbmsKCWFuZCBJSW50ZXJuZXRQcm90b2NvbCBkZWNsYXJhdGlvbnMuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9jaGFuZ2UuYywgZGxscy9rZXJuZWwvdGVzdHMvZmlsZS5jLAoJICBkbGxzL2tlcm5lbC90ZXN0cy9wcm9jZXNzLmMsIGRsbHMva2VybmVsL3Rlc3RzL3RocmVhZC5jLAoJICBkbGxzL2tlcm5lbC90ZXN0cy90aW1lLmMsIGRsbHMvdXNlci90ZXN0cy9jbGlwYm9hcmQuYywKCSAgZGxscy91c2VyL3Rlc3RzL21zZy5jLCBkbGxzL3VzZXIvdGVzdHMvdGV4dC5jLCBkbGxzL3VzZXIvdGVzdHMvd2luLmM6CglSZWluIEtsYXplcyA8d2lqbkB3YW5hZG9vLm5sPgoJQ29ycmVjdCBjYXNlcyB3aGVyZSBhcmd1bWVudHMgb2Ygb2soKSBjYWxscyBkZXBlbmQgb24gdGhlIG9yZGVyIGluCgl3aGljaCB0aGV5IGFyZSBldmFsdWF0ZWQuCgoJKiBkbGxzL2dkaS9nZGkzMi5zcGVjLCBkbGxzL2dkaS9wYWxldHRlLmMsIGluY2x1ZGUvd2luZ2RpLmg6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCVN0dWIgaW1wbGVtZW50YXRpb25zIGZvciBHZXRJQ01Qcm9maWxlVywgU2V0SUNNUHJvZmlsZXtBLFd9LAoJVXBkYXRlSUNNUmVnS2V5e0EsV30uCglGb3J3YXJkIFVwZGF0ZUlDTVJlZ0tleSB0byBVcGRhdGVJQ01SZWdLZXlBLgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliMi5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJRml4IHR5cGVsaWIgZ2VuZXJhdGlvbiBvZiBDQVJSQVlzLgoKCSogZGxscy9rZXJuZWwvY3B1LmM6IExpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglGaXggbm9uLVJURFNDIGNhc2UgZm9yIFF1ZXJ5UGVyZm9ybWFuY2VGcmVxdWVuY3kuCgoJKiBkbGxzL3F1YXJ0ei9hdmlkZWMuYywgZGxscy9xdWFydHovYXZpc3BsaXQuYywKCSAgZGxscy9xdWFydHovZHNvdW5kcmVuZGVyLmMsIGRsbHMvcXVhcnR6L2ZpbGVzb3VyY2UuYywKCSAgZGxscy9xdWFydHovZmlsdGVyZ3JhcGguYywgZGxscy9xdWFydHovcGluLmMsCgkgIGRsbHMvcXVhcnR6L3ZpZGVvcmVuZGVyZXIuYzoKCUNocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUluaXRpYWxpemUgdGhlIENPTSBsaWJyYXJpZXMgZm9yIHRoZSBuZXdseSBjcmVhdGVkIHdvcmtlciB0aHJlYWQgaW4KCXRoZSBBVkkgc3BsaXR0ZXIuCglGaXhlZCBzb21lIHJldHVybmVkIGVycm9yIGNvZGVzLgoJU2hvdyByZWZjb3VudCBpbiB0aGUgQWRkUmVmL1JlbGVhc2UgdHJhY2VzIGluIGZpbHRlci4KCUFkZGVkIDI0IGJpdHMgc291cmNlIGluIHRoZSB2aWRlbyByZW5kZXJlci4KCgkqIHRvb2xzL3dpZGwvd2lkbC5jOiBWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglHZW5lcmF0ZSBvbmx5IHdhbnRlZCBmaWxlcy4KCgkqIGRsbHMvZGRyYXcvZGRyYXcvbWFpbi5jLCBkbGxzL2RkcmF3L2RkcmF3X3ByaXZhdGUuaDoKCUNocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUZha2UgbGluZSBzd2VlcGluZyBvZiB0aGUgbW9uaXRvci4KCgkqIGRsbHMvYWR2YXBpMzIvc2VydmljZS5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglEb24ndCB1c2UgUnRsQ3JlYXRlVW5pY29kZVN0cmluZ0Zyb21Bc2NpaXosIGl0IGRvZXNuJ3QgcHJlc2VydmUgTlVMTC4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJRW5hYmxlIGFzeW5jaHJvbm91cyBkbGwgY3VzdG9tIGFjdGlvbiBjYWxscy4KCgkqIGRsbHMvYXRsL2F0bC5zcGVjLCBkbGxzL2F0bC9hdGxfbWFpbi5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJU3R1YiBpbXBsZW1lbnRhdGlvbiBmb3IgQXRsTW9kdWxlUmVnaXN0ZXJTZXJ2ZXIuCgoJKiBkbGxzL2tlcm5lbC9oZWFwLmM6IFBhdWwgVnJpZW5zIDxQYXVsLlZyaWVuc0B4czRhbGwubmw+CglJbml0aWFsaXplIGR3T1NWZXJzaW9uSW5mb1NpemUgaW4gR2xvYmFsTWVtb3J5U3RhdHVzLgoKCSogZGxscy9uZXRhcGkzMi90ZXN0cy9hY2Nlc3MuYzogSmFrb2IgRXJpa3Nzb24gPGpha292QHZtbGludXgub3JnPgoJRml4IHRlc3QgZmFpbHVyZSBvbiBXaW5kb3dzIDIwMDAuCgoJKiB0b29scy93aWRsL3BhcnNlci55OiBKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJRml4ZWQgZGVmaW5pbmcgRElJRHMuCgoJKiBkbGxzL3gxMWRydi93aW5kb3cuYzogTWlrZSBIZWFybiA8bWhAY29kZXdlYXZlcnMuY29tPgoJRml4IFhsaWIgbG9ja2luZyBpbiBjcmVhdGVfZGVza3RvcC4KCgkqIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL2NvbXBvYmpfcHJpdmF0ZS5oLAoJICBkbGxzL29sZTMyL21hcnNoYWwuYywgZGxscy9vbGUzMi9ycGMuYzoKCU1pa2UgSGVhcm4gPG1oQGNvZGV3ZWF2ZXJzLmNvbT4KCVByb3BhZ2F0ZSBhcGFydG1lbnRzIHRocm91Z2ggdGhlIGludGVybWVkaWF0ZSB0aHJlYWRzLCBtYWtlIGxpc3RlbmVyCgl0aHJlYWQgYXBhcnRtZW50IHNjb3BlZC4KCgkqIGRsbHMvYXZpZmlsMzIvYXBpLmMsIGRsbHMvYXZpZmlsMzIvYXZpZmlsMzIuc3BlYywgaW5jbHVkZS92ZncuaDoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJU3R1YiBpbXBsZW1lbnRhdGlvbnMgZm9yIEFWSU1ha2VTdHJlYW1Gcm9tQ2xpcGJvYXJkLCBBVklTYXZle0EsV30uCglGb3J3YXJkIEFWSUJ1aWxkRmlsdGVyLCBBVklGaWxlQ3JlYXRlU3RyZWFtLCBBVklGaWxlT3BlbiwgQVZJU2F2ZSwKCUVkaXRTdHJlYW1TZXRJbmZvLCBFZGl0U3RyZWFtU2V0TmFtZSB0byB0aGVpciByZXNwZWN0aXZlICpBIHZhcmlhbnRzLgoKCSogZGxscy9kaW5wdXQvbW91c2UuYzogTmVpbCBPbHZlciA8b2x2ZXJAbWF0aC5tY2dpbGwuY2E+CglUaGUgZmxhZyBmb3IgYSBtb3VzZSBidXR0b24gZG93biBpbiB0aGUgc3RydWN0dXJlIHJldHVybmVkIGJ5CglHZXREZXZpY2VTdGF0ZSBzaG91bGQgYmUgMHg4MCAob25seSB0aGUgaGlnaCBiaXQgc2V0KSwgbm90IDB4ZmYuCgoyMDA0LTEyLTIzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy93aW5lZG9zL3ZnYS5jLCBkbGxzL3dpbmVwcy9jbGlwcGluZy5jLCBkbGxzL3dpbmVwcy9lc2NhcGUuYywKCSAgZGxscy93aW5lcHMvaW5pdC5jLCBkbGxzL3dpbmVwcy9wcGQuYywgZGxscy93aW5lcHMvdHlwZTQyLmMsCgkgIGRsbHMvd2luaW5ldC9jb29raWUuYywgZGxscy93aW5pbmV0L2Z0cC5jLCBkbGxzL3dpbmluZXQvaHR0cC5jLAoJICBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYywgZGxscy93aW5tbS9kcml2ZXIuYywgZGxscy93aW5tbS9tY2kuYywKCSAgZGxscy93aW5tbS9tY2lhdmkvbWNpYXZpLmMsIGRsbHMvd2lubW0vbWNpd2F2ZS9tY2l3YXZlLmMsCgkgIGRsbHMvd2lubW0vcGxheXNvdW5kLmMsIGRsbHMvd2lubW0vd2luZWFsc2EvbWlkaS5jLAoJICBkbGxzL3dpbm1tL3dpbmVhcnRzL2F1ZGlvLmMsIGRsbHMvd2lubW0vd2luZW9zcy9kc2NhcHR1cmUuYywKCSAgZGxscy93aW5tbS93aW5lb3NzL2RzcmVuZGVyLmMsIGRsbHMvd2lubW0vd2luZW9zcy9taWRpLmMsCgkgIGRsbHMvd2luc29jay9zb2NrZXQuYywgZGxscy93aW5zb2NrL3NvY2tldDE2LmMsIGRsbHMvd2luc3Bvb2wvaW5mby5jLAoJICBkbGxzL3gxMWRydi9kaWIuYywgZGxscy94MTFkcnYvcGFsZXR0ZS5jLCBkbGxzL3gxMWRydi90ZXh0LmMsCgkgIGRsbHMveDExZHJ2L3hmb250LmMsIGRsbHMveDExZHJ2L3hyYW5kci5jLCBkbGxzL3gxMWRydi94cmVuZGVyLmMsCgkgIGRsbHMvbXByL3duZXQuYywgZGxscy9tc2FjbS9pbnRlcm5hbC5jLCBkbGxzL21zZG1vL2Rtb3JlZy5jLAoJICBkbGxzL21zdmNydC9kYXRhLmMsIGRsbHMvbXN2Y3J0L21haW4uYywgZGxscy9tc3ZpZGVvL2RyYXdkaWIuYywKCSAgZGxscy9tc3ZpZGVvL21jaXduZC5jLCBkbGxzL21zdmlkZW8vbXN2aWRlb19tYWluLmMsCgkgIGRsbHMvbmV0YXBpMzIvbmJuYW1lY2FjaGUuYywgZGxscy9vbGUzMi9iaW5kY3R4LmMsCgkgIGRsbHMvb2xlMzIvY2xpcGJvYXJkLmMsIGRsbHMvb2xlMzIvZGF0YWNhY2hlLmMsCgkgIGRsbHMvb2xlMzIvZGVmYXVsdGhhbmRsZXIuYywgZGxscy9vbGUzMi9maWxlbW9uaWtlci5jLAoJICBkbGxzL29sZTMyL2l0ZW1tb25pa2VyLmMsIGRsbHMvb2xlMzIvb2xlMi5jLCBkbGxzL29sZTMyL3N0b3JhZ2UzMi5jLAoJICBkbGxzL29sZWF1dDMyL29sZWZvbnQuYywgZGxscy9vbGVhdXQzMi9vbGVwaWN0dXJlLmMsCgkgIGRsbHMvb2xlYXV0MzIvdHlwZWxpYjIuYywgZGxscy9vcGVuZ2wzMi93Z2wuYywgZGxscy9rZXJuZWwvY29tbS5jLAoJICBkbGxzL2tlcm5lbC9jb25zb2xlLmMsIGRsbHMva2VybmVsL2VkaXRsaW5lLmMsIGRsbHMva2VybmVsL2Vudmlyb24uYywKCSAgZGxscy9rZXJuZWwvZmlsZS5jLCBkbGxzL2tlcm5lbC9maWxlMTYuYywgZGxscy9rZXJuZWwvZm9ybWF0X21zZy5jLAoJICBkbGxzL2tlcm5lbC9nbG9iYWwxNi5jLCBkbGxzL2tlcm5lbC9sY2Zvcm1hdC5jLAoJICBkbGxzL2tlcm5lbC9sb2NhbDE2LmMsIGRsbHMva2VybmVsL2xvY2FsZS5jLCBkbGxzL2tlcm5lbC9uZV9tb2R1bGUuYywKCSAgZGxscy9rZXJuZWwvcGF0aC5jLCBkbGxzL2tlcm5lbC9wcm9jZXNzLmMsIGRsbHMva2VybmVsL3Byb2ZpbGUuYywKCSAgZGxscy9rZXJuZWwvcmVzb3VyY2UuYywgZGxscy9rZXJuZWwvc3luYy5jLAoJICBkbGxzL2tlcm5lbC90ZXN0cy9hbGxvYy5jLCBkbGxzL2tlcm5lbC90aW1lLmMsIGRsbHMva2VybmVsL3ZvbHVtZS5jLAoJICBkbGxzL2x6ZXhwYW5kL2x6ZXhwYW5kX21haW4uYywgZGxscy9kbXNjcmlwdC9zY3JpcHQuYywKCSAgZGxscy9kcGxheXgvZHBsYXkuYywgZGxscy9kcGxheXgvZHBsYXlzcC5jLCBkbGxzL2Rzb3VuZC9idWZmZXIuYywKCSAgZGxscy9kc291bmQvY2FwdHVyZS5jLCBkbGxzL2Rzb3VuZC9wcmltYXJ5LmMsIGRsbHMvZ2RpL2JpdG1hcC5jLAoJICBkbGxzL2dkaS9kYy5jLCBkbGxzL2dkaS9kcml2ZXIuYywgZGxscy9nZGkvZm9udC5jLAoJICBkbGxzL2dkaS9mcmVldHlwZS5jLCBkbGxzL2dkaS9nZGkxNi5jLCBkbGxzL2dkaS9tZXRhZmlsZS5jLAoJICBkbGxzL2dkaS9wYWxldHRlLmMsIGRsbHMvZ2RpL3BhdGguYywgZGxscy9nZGkvcHJpbnRkcnYuYywKCSAgZGxscy9nZGkvbWZkcnYvaW5pdC5jLCBkbGxzL2dkaS9tZmRydi90ZXh0LmMsIGRsbHMvaW1tMzIvaW1tLmMsCgkgIGRsbHMvaXBobHBhcGkvaWZlbnVtLmMsIGRsbHMvZDNkOC9kZXZpY2UuYywgZGxscy9kM2Q4L3N0YXRlYmxvY2suYywKCSAgZGxscy9kM2Q4L3ZlcnRleGJ1ZmZlci5jLCBkbGxzL2QzZHg4L2QzZHhidWZmZXIuYywKCSAgZGxscy9kYmdoZWxwL21zYy5jLCBkbGxzL2RiZ2hlbHAvc3RhYnMuYywKCSAgZGxscy9kZHJhdy9kM2RleGVjdXRlYnVmZmVyLmMsIGRsbHMvZGRyYXcvZDNkdGV4dHVyZS5jLAoJICBkbGxzL2RldmVudW0vbWVkaWFjYXRlbnVtLmMsIGRsbHMvZGlucHV0L2pveXN0aWNrX2xpbnV4LmMsCgkgIGRsbHMvZGlucHV0L2pveXN0aWNrX2xpbnV4aW5wdXQuYywgZGxscy9kaW5wdXQva2V5Ym9hcmQuYywKCSAgZGxscy9kaW5wdXQvbW91c2UuYywgZGxscy9hZHZhcGkzMi9yZWdpc3RyeS5jLAoJICBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmMsIGRsbHMvYWR2YXBpMzIvc2VydmljZS5jLAoJICBkbGxzL2NvbWN0bDMyL2FuaW1hdGUuYywgZGxscy9jb21jdGwzMi9zeXNsaW5rLmMsCgkgIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jLAoJICBkbGxzL2NvbW1kbGcvZmlsZWRsZzMxLmMsIGRsbHMvY29tbWRsZy9mb250ZGxnLmMsCgkgIGRsbHMvY29tbWRsZy9mb250ZGxnMTYuYywgZGxscy9jb21tZGxnL3ByaW50ZGxnLmMsCgkgIGRsbHMvc2hsd2FwaS9tc2dib3guYywgZGxscy9zaGx3YXBpL29yZGluYWwuYywKCSAgZGxscy9zaGx3YXBpL3JlZ3N0cmVhbS5jLCBkbGxzL3VybG1vbi91bW9uLmMsIGRsbHMvdXNlci9idXR0b24uYywKCSAgZGxscy91c2VyL2NvbWJvLmMsIGRsbHMvdXNlci9lZGl0LmMsIGRsbHMvdXNlci9saXN0Ym94LmMsCgkgIGRsbHMvdXNlci9sc3RyLmMsIGRsbHMvdXNlci9tZW51LmMsIGRsbHMvdXNlci9tZXNzYWdlLmMsCgkgIGRsbHMvdm5idC52eGQvdm5idC5jLCBkbGxzL3dpbmVkM2QvaW5kZXhidWZmZXIuYywKCSAgZGxscy93aW5lZDNkL3ZlcnRleGJ1ZmZlci5jLCB3aW5kb3dzL2N1cnNvcmljb24uYywgd2luZG93cy9kZWZ3bmQuYywKCSAgd2luZG93cy9tZGkuYywgd2luZG93cy93aW4uYywgd2luZG93cy93aW5wcm9jLmMsCgkgIGRsbHMvcXVhcnR6L21lbWFsbG9jYXRvci5jLCBkbGxzL3JpY2hlZGl0L3JlYWRlci5jLAoJICBkbGxzL3JwY3J0NC9ycGNfYmluZGluZy5jLCBkbGxzL3JwY3J0NC9ycGNfbWVzc2FnZS5jLAoJICBkbGxzL3JwY3J0NC9ycGNfc2VydmVyLmMsIGRsbHMvcnNhZW5oL2hhbmRsZS5jLCBkbGxzL3JzYWVuaC9yc2FlbmguYywKCSAgZGxscy9zZXJpYWx1aS9jb25mZGxnLmMsIGRsbHMvc2V0dXBhcGkvcGFyc2VyLmMsCgkgIGRsbHMvc2V0dXBhcGkvc2V0dXB4X21haW4uYywgZGxscy9zaGVsbDMyL2F1dG9jb21wbGV0ZS5jLAoJICBkbGxzL3NoZWxsMzIvYnJzZm9sZGVyLmMsIGRsbHMvc2hlbGwzMi9waWRsLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZGxscy9zaGVsbDMyL3NoZWxsbGluay5jLAoJICBkbGxzL3NoZWxsMzIvc2hsZXhlYy5jLCBkbGxzL3NoZWxsMzIvc2hsZmlsZW9wLmMsCgkgIHByb2dyYW1zL3JlZ2VkaXQvcmVncHJvYy5jLCBwcm9ncmFtcy9ydW5kbGwzMi9ydW5kbGwzMi5jLAoJICBwcm9ncmFtcy93aW5lY2ZnL2FwcGRlZmF1bHRzLmMsIHByb2dyYW1zL3dpbmVjZmcvZHJpdmV1aS5jLAoJICBwcm9ncmFtcy93aW5lY2ZnL3dpbmVjZmcuYywgcHJvZ3JhbXMvd2luZWNvbnNvbGUvZGlhbG9nLmMsCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25zb2xlLmMsIHByb2dyYW1zL3dpbmVkYmcvc3RhY2suYywKCSAgcHJvZ3JhbXMvd2luZW1lbnVidWlsZGVyL3dpbmVtZW51YnVpbGRlci5jLAoJICBwcm9ncmFtcy93aW5oZWxwL2hscGZpbGUuYywgcHJvZ3JhbXMvd2luaGVscC9tYWNyby5sZXgubDoKCU1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuZGU+CglEbyBub3QgY2hlY2sgZm9yIG5vbiBOVUxMIHBvaW50ZXIgYmVmb3JlIEhlYXBGcmVlJ2luZyBpdC4gSXQncwoJcmVkdW5kYW50LgoKCSogZGxscy9ycGNydDQvcnBjcnQ0LnNwZWMsIGRsbHMvcnBjcnQ0L3JwY3J0NF9tYWluLmMsCgkgIGRsbHMvcnBjcnQ0L3Rlc3RzL3JwYy5jLCBpbmNsdWRlL3JwY2RjZS5oOgoJQmlsbCBNZWRsYW5kIDxiaWxsbWVkbGFuZEBtZXJjdXJ5c3BlZWQuY29tPgoJSW1wbGVtZW50ZWQgRGNlRXJyb3JJbnFUZXh0LgoKCSogZGxscy91c2VyL3N5c3BhcmFtcy5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglEdW1wIGtub3duIGJ1dCB1bmltcGxlbWVudGVkIFN5c3RlbVBhcmFtZXRlckluZm8gYWN0aW9ucy4KCgkqIGluY2x1ZGUvd2ludXNlci5oOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglEZWNsYXJlIFNldExheWVyZWRXaW5kb3dBdHRyaWJ1dGVzLgoKCSogZGxscy9tc2kvbXNpLmMsIGRsbHMvbXNpL21zaS5zcGVjOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIE1zaVNldEV4dGVybmFsVUlXLgoKCSogZGxscy9tc2kvYWN0aW9uLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglNYWtlIHN1cmUgdG8gaW5jbHVkZSB0cmFpbGluZyBiYWNrc2xhc2ggaW4gcGF0aC4KCgkqIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jLCBkbGxzL3dpbmluZXQvaW50ZXJuZXQuaCwKCSAgZGxscy93aW5pbmV0L3V0aWxpdHkuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglBZGRlZC9pbXByb3ZlZCBUUkFDRWluZy4KCjIwMDQtMTItMjIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL21zaS9wYWNrYWdlLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglCbGFuayB0aGUgcHJvcGVydHkgYnVmZmVycyBldmVuIGlmIHRoZSBwcm9wZXJ0eSBpcyBub3QgZm91bmQuCgoJKiBkbGxzL21zaS9hY3Rpb24uYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCU1vdmUgYXJvdW5kIGFuZCByZW5hbWUgc29tZSBmdW5jdGlvbnMuCgoJKiBkbGxzL2dkaS9lbmhtZXRhZmlsZS5jLCBkbGxzL2dkaS9tZXRhZmlsZS5jLCBkbGxzL2tlcm5lbC9jb21tLmMsCgkgIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL3N0Z19iaWdibG9ja2ZpbGUuYywKCSAgZGxscy93aW5lZG9zL2RldmljZXMuYywgZGxscy93aW5lZG9zL2ludDIxLmMsIGRsbHMvd2luZWRvcy9pbnQyNS5jLAoJICBkbGxzL3dpbmVkb3MvaW50MjYuYywgZGxscy93aW5lZG9zL3ZnYS5jLAoJICBwcm9ncmFtcy93aW5lYm9vdC93aW5lYm9vdC5jLCBwcm9ncmFtcy93aW5lY2ZnL2RyaXZlLmMsCgkgIHByb2dyYW1zL3dpbmVkYmcvZGJnLnksIHByb2dyYW1zL3dpbmVkYmcvd2luZWRiZy5jOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglSZWFkRmlsZSBhbmQgV3JpdGVGaWxlIG11c3QgYmUgcGFzc2VkIGEgcGFyYW1ldGVyIGZvciB0aGUgbnVtYmVyIG9mCgloYW5kbGVkIGJ5dGVzIHdoZW4gbm8gb3ZlcmxhcHBlZCBvcGVyYXRpb24gaXMgZG9uZS4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJQ29udmVydCBwZXItcHJvY2VzcyBob3N0ZW50LCBzZXJ2ZW50IGFuZCBwcm90ZW50IGJ1ZmZlcnMgaW50bwoJcGVyLXRocmVhZCBidWZmZXJzLgoKCSogaW5jbHVkZS9hY2xhcGkuaDogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRGVjbGFyZSBHZXRTZWN1cml0eUluZm8uCgoJKiBkbGxzL21zaS9wYWNrYWdlLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglJbmNsdWRlIHRoZSB0cmFpbGluZyBiYWNrc2xhc2ggb24gdGhlIFdpbmRvd3Mgdm9sdW1lLgoKCSogZGxscy9tc2kvYWN0aW9uLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglGaXggaW5jb3JyZWN0IHJldHVybiBjb2RlIGNoZWNrLgoKCSogd2luZG93cy9tZXNzYWdlLmM6IFJ1c3MgQW5kZXJzc29uIDxtYXRjaG1vdmllQHlhaG9vLmNvbT4KCVRoZSBXTV9NT1VTRVdIRUVMIG1lc3NhZ2UgaXMgc3BlY2lmaWVkIHRvIGhhdmUgYWJzb2x1dGUgc2NyZWVuCgljb29yZGluYXRlcy4KCgkqIGRsbHMvY29tbWRsZy9jZGxnLmgsIGRsbHMvY29tbWRsZy9mb250ZGxnLmMsIGRsbHMvY29tbWRsZy9mb250ZGxnMTYuYzoKCUphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglVbmljb2RpZmllZCBmb250ZGxnLgoKCSogZGxscy94MTFkcnYvY2xpcHBpbmcuYzogRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglGaXhlZCBidWcgd2l0aCB1bnNpZ25lZCBpbmRleCBpbiBkZWNyZWFzaW5nIGxvb3AuCgoJKiBkbGxzL21zaS9hY3Rpb24uYywgZGxscy9tc2kvcGFja2FnZS5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBmb2xkZXIgcmVzb2x1dGlvbi4KCgkqIGRsbHMvY2FiaW5ldC9jYWJleHRyYWN0LmM6IFJldmVydCBwcmV2aW91cyBwYXRjaCwgdGhhdCdzIG5vdCBhIGxlYWsuCgoJKiBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmMsIGRsbHMvbnRkbGwvc2VjLmMsIGluY2x1ZGUvd2ludGVybmwuaDoKCUZpeGVkIHByb3RvdHlwZXMgb2YgYSBjb3VwbGUgb2YgbnRkbGwgZnVuY3Rpb25zLgoJUmVwbGFjZWQgdGhlIENhbGxXaW4zMlRvTnQgbWFjcm8gYnkgYSBwcm9wZXIgZnVuY3Rpb24uCglQQk9PTCBjYW5ub3QgYmUgY2FzdCB0byBQQk9PTEVBTiwgd2UgbmVlZCB0byB1c2UgYW4gaW50ZXJtZWRpYXRlCgl2YXJpYWJsZS4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglSZW1vdmUgbW9yZSBmaXhlZCBsZW5ndGggYnVmZmVycywgcmV3cml0ZSBmdW5jdGlvbnMgdG8gcmV0dXJuCgltYWxsb2MnZWQgbWVtb3J5LgoKCSogZGxscy9tc2kvcXVlcnkuaCwgZGxscy9tc2kvdGFibGUuYywgZGxscy9tc2kvd2hlcmUuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBzZWxlY3Rpbmcgc3RyaW5nIGNvbHVtbnMgYW5kIG1hdGNoaW5nIGFnYWluc3QgYSB3aWxkY2FyZC4KCgkqIGRsbHMvZG1iYW5kL2JhbmQuYywgZGxscy9kbWJhbmQvYmFuZHRyYWNrLmMsCgkgIGRsbHMvZG1jb21wb3MvY2hvcmRtYXAuYywgZGxscy9kbWNvbXBvcy9jaG9yZG1hcHRyYWNrLmMsCgkgIGRsbHMvZG1jb21wb3Mvc2lnbnBvc3R0cmFjay5jLCBkbGxzL2RtaW1lL2F1ZGlvcGF0aC5jLAoJICBkbGxzL2RtaW1lL2dyYXBoLmMsIGRsbHMvZG1pbWUvbHlyaWNzdHJhY2suYywKCSAgZGxscy9kbWltZS9tYXJrZXJ0cmFjay5jLCBkbGxzL2RtaW1lL3BhcmFtY29udHJvbHRyYWNrLmMsCgkgIGRsbHMvZG1pbWUvcGF0dGVybnRyYWNrLmMsIGRsbHMvZG1pbWUvc2VnbWVudC5jLAoJICBkbGxzL2RtaW1lL3NlZ21lbnRzdGF0ZS5jLCBkbGxzL2RtaW1lL3NlZ3RyaWdnZXJ0cmFjay5jLAoJICBkbGxzL2RtaW1lL3NlcXRyYWNrLmMsIGRsbHMvZG1pbWUvc3lzZXh0cmFjay5jLAoJICBkbGxzL2RtaW1lL3RlbXBvdHJhY2suYywgZGxscy9kbWltZS90aW1lc2lndHJhY2suYywKCSAgZGxscy9kbWltZS90b29sLmMsIGRsbHMvZG1pbWUvd2F2ZXRyYWNrLmMsIGRsbHMvZG1sb2FkZXIvY29udGFpbmVyLmMsCgkgIGRsbHMvZG1sb2FkZXIvbG9hZGVyc3RyZWFtLmMsIGRsbHMvZG1zY3JpcHQvc2NyaXB0dHJhY2suYywKCSAgZGxscy9kbXN0eWxlL2F1ZGl0aW9udHJhY2suYywgZGxscy9kbXN0eWxlL2Nob3JkdHJhY2suYywKCSAgZGxscy9kbXN0eWxlL2NvbW1hbmR0cmFjay5jLCBkbGxzL2Rtc3R5bGUvbW90aWZ0cmFjay5jLAoJICBkbGxzL2Rtc3R5bGUvbXV0ZXRyYWNrLmMsIGRsbHMvZG1zdHlsZS9zdHlsZS5jLAoJICBkbGxzL2Rtc3R5bGUvc3R5bGV0cmFjay5jLCBkbGxzL2RtdXNpYy9idWZmZXIuYywKCSAgZGxscy9kbXVzaWMvY29sbGVjdGlvbi5jLCBkbGxzL2RtdXNpYy9kb3dubG9hZC5jLAoJICBkbGxzL2RtdXNpYy9kb3dubG9hZGVkaW5zdHJ1bWVudC5jLCBkbGxzL2RtdXNpYy9pbnN0cnVtZW50LmMsCgkgIGRsbHMvZHN3YXZlL2Rzd2F2ZS5jLCBkbGxzL21zdmlkZW8vbXN2aWRlb19tYWluLmMsCgkgIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsIGRsbHMvd2lubW0vbW1pby5jLCBkbGxzL3dpbnRhYjMyL3dpbnRhYjMyLmMsCgkgIHByb2dyYW1zL3JlZ2VkaXQvZnJhbWV3bmQuYywgcHJvZ3JhbXMvcmVnZWRpdC9tYWluLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVJlbW92ZSB1bm5lZWRlZCBOVUxMIGNhc3RzLgoKCSogZGxscy9tc2kvYWN0aW9uLmMsIGRsbHMvbXNpL21zaXByaXYuaCwgZGxscy9tc2kvcGFja2FnZS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlIGEgbG90IG9mIGZpeGVkIGxlbmd0aCBidWZmZXJzLgoKCSogZGxscy93aW5lZDNkL2RldmljZS5jLCB0b29scy93aW5lZHVtcC9zZWFyY2guYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJU3BlbGxpbmcgZml4ZXMuCgoJKiBkbGxzL2NvbW1kbGcvY2RsZy5oLCBkbGxzL2NvbW1kbGcvY2RsZ19Dbi5yYywKCSAgZGxscy9jb21tZGxnL2NkbGdfRGUucmMsIGRsbHMvY29tbWRsZy9jZGxnX0VuLnJjLAoJICBkbGxzL2NvbW1kbGcvY2RsZ19Fcy5yYywgZGxscy9jb21tZGxnL2NkbGdfRnIucmMsCgkgIGRsbHMvY29tbWRsZy9jZGxnX0l0LnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19ObC5yYywKCSAgZGxscy9jb21tZGxnL2NkbGdfUGwucmMsIGRsbHMvY29tbWRsZy9jZGxnX1B0LnJjLAoJICBkbGxzL2NvbW1kbGcvY2RsZ19SdS5yYywgZGxscy9jb21tZGxnL2NkbGdfU2kucmMsCgkgIGRsbHMvY29tbWRsZy9jZGxnX1NrLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19Tdi5yYywKCSAgZGxscy9jb21tZGxnL2NkbGdfVGgucmMsIGRsbHMvY29tbWRsZy9jZGxnX1VrLnJjLAoJICBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglSZXBsYWNlICdBbGwgeHh4IHBhZ2VzJyB0ZXh0IGluIGNvbW1vbiBwcmludCBkaWFsb2cgYnkgc2ltcGxlICdBbGwnLgoKCSogZGxscy9rZXJuZWwvcHJvZmlsZS5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJUGVyZm9ybSBjYXNlIGluc2Vuc2l0aXZlIGNvbXBhcmlzb24gd2l0aCBjYWNoZWQgaW5pIGZpbGUgbmFtZS4KCgkqIGRsbHMva2VybmVsL2ZpbGUuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVVuY29tbWVudCBjYWxsIHRvIEZsdXNoQ29uc29sZUlucHV0QnVmZmVyIGluIEZsdXNoRmlsZUJ1ZmZlcnMuCgoJKiBwcm9ncmFtcy93aW5ldGVzdC9tYWluLmM6IEpha29iIEVyaWtzc29uIDxqYWtvdkB2bWxpbnV4Lm9yZz4KCUFkZCBhIGNoZWNrIGlmIHdlIGFyZSBydW5uaW5nIG9uIGEgdmlzaWJsZSBkZXNrdG9wLiBDcmVkaXRzIHRvIERtaXRyeQoJVGltb3Noa292IGZvciB0aGUgZWFzeSB0ZXN0LgoKMjAwNC0xMi0yMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvYWR2YXBpMzIvYWR2YXBpMzIuc3BlYywgZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jLAoJICBkbGxzL250ZGxsL3NlYy5jLCBpbmNsdWRlL2FjbGFwaS5oLCBpbmNsdWRlL3dpbmJhc2UuaCwKCSAgaW5jbHVkZS93aW5zdmMuaCwgaW5jbHVkZS93aW50ZXJubC5oOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglTdHViIGltcGxlbWVudGF0aW9ucyBmb3IgQWRqdXN0VG9rZW5Hcm91cHMsIEFyZUFsbEFjY2Vzc2VzR3JhbnRlZCwKCUNyZWF0ZVByaXZhdGVPYmplY3RTZWN1cml0eSwgQ3JlYXRlUHJvY2Vzc0FzVXNlcntBLFd9LAoJRGVzdHJveVByaXZhdGVPYmplY3RTZWN1cml0eSwgRHVwbGljYXRlVG9rZW57LEV4fSwKCUVudW1EZXBlbmRlbnRTZXJ2aWNlc3tBLFd9LCBHZXRFZmZlY3RpdmVSaWdodHNGcm9tQWNse0EsV30sCglDb252ZXJ0U3RyaW5nU2VjdXJpdHlEZXNjcmlwdG9yVG9TZWN1cml0eURlc2NyaXB0b3JBLiBJbXBsZW1lbnRhdGlvbnMKCWZvciBCdWlsZEV4cGxpY2l0QWNjZXNzV2l0aE5hbWV7QSxXfSwKCUJ1aWxkVHJ1c3RlZVdpdGhPYmplY3RzQW5kTmFtZXtBLFd9LAoJQnVpbGRUcnVzdGVlV2l0aE9iamVjdHNBbmRTaWR7QSxXfS4KCUNvcnJlY3QgcHJvdG90eXBlIGZvciBJbml0aWFsaXplQWNsLCBSdGxDb3B5U2lkIGFuZCBSdGxHZXRBY2UuCglVc2UgdGhlIENhbGxXaW4zMlRvTnQgbWFjcm8gb25seSB3aXRoIGZ1bmN0aW9ucyB0aGF0IHJldHVybiBhbgoJTlRTVEFUVVMuCgoJKiBkbGxzL2tlcm5lbC9maWxlLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglQb3N0cG9uZSBjcmVhdGlvbiBkaXNwb3NpdGlvbiBjaGVjayBpbiBDcmVhdGVGaWxlIHVudGlsIGl0J3MgcmVhbGx5Cgl1c2VkLgoKCSogZGxscy9hZHZhcGkzMi9zZXJ2aWNlLmM6IEl2YW4gTGVvIFB1b3RpIDxwdW90aUBpbndpbmQuaXQ+CglJbiBPcGVuU0NNYW5hZ2VyVygpIGFsbG93IGxwRGF0YWJhc2VOYW1lIHRvIGJlIGFuIGVtcHR5IHN0cmluZy4KCgkqIGluY2x1ZGUvZDNkLmgsIGluY2x1ZGUvZGRyYXcuaDogUGV0ZXIgQmVyZyBMYXJzZW4gPHBlYmxAbWF0aC5rdS5kaz4KCUFkZGVkIEQzREVSUl9DT0xPUktFWUFUVEFDSEVEIGFuZCBEREdESV9HRVRIT1NUSURFTlRJRklFUi4KCgkqIGRsbHMvdXNlci90ZXN0cy9kaWFsb2cuYywgZGxscy91c2VyL3Rlc3RzL3Jlc291cmNlLnJjLCB3aW5kb3dzL2RpYWxvZy5jOgoJVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hAY29kZXdlYXZlcnMuY29tPgoJSWYgYSBkaWFsb2cgd2l0aCB0aGUgRFNfQ09OVFJPTCBzdHlsZSBpcyBub3QgdmlzaWJsZSB0aGVuIGlnbm9yZQoJZGVmYXVsdCBmb2N1cyBhc3NpZ25tZW50LgoKCSogZGxscy9vbGUzMi90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL29sZTMyL3Rlc3RzL01ha2VmaWxlLmluLAoJICBkbGxzL29sZTMyL3Rlc3RzL21hcnNoYWwuYywgZGxscy9vbGUzMi90ZXN0cy9tb25pa2VyLmM6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglBZGQgdGVzdHMgZm9yIG1vbmlrZXIgYW5kIG1hcnNoYWxpbmcgZnVuY3Rpb25zLgoKCSogZGxscy9nZGkvZW5obWV0YWZpbGUuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQ2hlY2sgdmFsdWVzIHBhc3NlZCBpbiB0byBTZXRXaW5NZXRhRmlsZUJpdHMsIG5vdCBvdXIgbG9jYWwgY29weS4KCgkqIGRsbHMvZ2RpL2VuaG1mZHJ2L2dyYXBoaWNzLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCU91dHB1dCBFTVJfUE9MWUdPTjE2IHJlY29yZHMgd2hlbiBwb3NzaWJsZS4KCgkqIGRsbHMvZGRyYXcvZHN1cmZhY2UvZGliLmM6IENyZXN0ZXogTGVvbmFyZCA8Y2xlb25hcmRAZ28ucm8+CglDaGVjayBmb3IgbWFsZm9ybWVkIHNvdXJjZSByZWN0IGluIERJQl9EaXJlY3REcmF3U3VyZmFjdF9CbHRGYXN0LCBhbmQKCXJldHVybiBEREVSUl9JTlZBTElEX1JFQ1QuCgoJKiBkbGxzL2dkaS9mb250LmMsIGRsbHMvZ2RpL2ZyZWV0eXBlLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRnVsbHkgaW5pdGlhbGl6ZSBORVdURVhUTUVUUklDRVhXIHN0cnVjdHVyZSBmb3IgYml0bWFwIGZvbnRzLgoKCSogZGxscy93aW5pbmV0L2Nvb2tpZS5jLCBkbGxzL3dpbmluZXQvZnRwLmMsIGRsbHMvd2luaW5ldC9odHRwLmMsCgkgIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jOgoJTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5kZT4KCURvIG5vdCBjaGVjayBmb3Igbm9uIE5VTEwgcG9pbnRlciBiZWZvcmUgSGVlcEZyZWUnaW5nIGl0LiBJdCdzCglyZWR1bmRhbnQuCgoJKiBkbGxzL21hcGkzMi90ZXN0cy9pbWFsbG9jLmM6IEpha29iIEVyaWtzc29uIDxqYWtvdkB2bWxpbnV4Lm9yZz4KCVRoZXJlIG1heSBiZSBubyBkZWZhdWx0IE1BUEkgbWFsbG9jIGluc3RhbGxlZC4KCgkqIGRsbHMvdXNlci9mb2N1cy5jLCBkbGxzL3VzZXIvdGVzdHMvd2luLmM6CglSZWluIEtsYXplcyA8d2lqbkB3YW5hZG9vLm5sPgoJWW91IGNhbiBtYWtlIGFuIGludmlzaWJsZSB3aW5kb3cgdGhlIGFjdGl2ZSB3aW5kb3cuCgoJKiBkbGxzL2FkdmFwaTMyL2FkdmFwaTMyLnNwZWMsIGRsbHMvYWR2YXBpMzIvY3J5cHQuYzoKCU1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCVJlc3BlY3QgdGhlIHNEZXNjcmlwdGlvbiBwYXJhbWV0ZXIgaW4gQ3J5cHRTaWduSGFzaCBhbmQKCUNyeXB0VmVyaWZ5U2lnbmF0dXJlLgoKMjAwNC0xMi0yMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvYXZpZmlsMzIvYXBpLmMsIGRsbHMvYXZpZmlsMzIvd2F2ZmlsZS5jLAoJICBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYywgZGxscy9kYmdoZWxwL21zY3ZwZGIuaCwKCSAgZGxscy9nZGkvZW5obWZkcnYvb2JqZWN0cy5jLCBkbGxzL2tlcm5lbC90ZXN0cy9kaXJlY3RvcnkuYywKCSAgZGxscy9rZXJuZWwvdGltZS5jLCBkbGxzL21hcGkzMi91dGlsLmMsIGRsbHMvbXNybGUzMi9tc3JsZTMyLmMsCgkgIGRsbHMvbnRkbGwvdGVzdHMvcnRsLmMsIGRsbHMvb2xlMzIvbWFyc2hhbC5jLAoJICBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYywgZGxscy9xdWFydHovZmlsdGVyZ3JhcGguYywKCSAgZGxscy9yc2FlbmgvaGFuZGxlLmMsIGRsbHMvcnNhZW5oL21waS5jLCBkbGxzL3dpbmVkM2QvZGV2aWNlLmMsCgkgIGRsbHMvd2luc29jay9zb2NrZXQuYywgZG9jdW1lbnRhdGlvbi9ydW5uaW5nLnNnbWw6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFzc29ydGVkIHNwZWxsaW5nIGZpeGVzLgoKCSogZGxscy93aW5tbS93aW5lYWxzYS9hdWRpby5jLCBkbGxzL3dpbm1tL3dpbmVhcnRzL2F1ZGlvLmMsCgkgIGRsbHMvd2lubW0vd2luZWF1ZGlvaW8vYXVkaW8uYywgZGxscy93aW5tbS93aW5lamFjay9hdWRpby5jLAoJICBkbGxzL3dpbm1tL3dpbmVuYXMvYXVkaW8uYywgZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQSBkcml2ZXIgZG9lcyBub3QgaGF2ZSB0byBzdXBwb3J0IGFsbCBmb3JtYXRzLgoKCSogZGxscy91c2VyL2NvbW0xNi5jLCBkbGxzL3VzZXIvZGRlL2RkZW1sMTYuYywgZGxscy91c2VyL2V4dGljb24uYywKCSAgZGxscy91c2VyL2ZvY3VzLmMsIGRsbHMvdXNlci9saXN0Ym94LmMsIGRsbHMvdXNlci9sc3RyLmMsCgkgIGRsbHMvdXNlci9taXNjLmMsIGRsbHMvdXNlci9uZXR3b3JrLmMsIGRsbHMvdXNlci9wcm9wZXJ0eS5jLAoJICBkbGxzL3VzZXIvc3RhdGljLmMsIGRsbHMvdXNlci90ZXh0LmMsIGRsbHMvdXNlci91c2VyX21haW4uYywKCSAgZGxscy94MTFkcnYvdGV4dC5jLCBkbGxzL3gxMWRydi93aW5kb3cuYywgZGxscy94MTFkcnYvd2lucG9zLmMsCgkgIGRsbHMveDExZHJ2L3gxMWRkcmF3LmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJUmVtb3ZlIHVubmVlZGVkIGhlYWRlcnMgdG8gcmVkdWNlIHVubmVlZGVkIHJlYnVpbGRzLgoKCSogZGxscy91cmxtb24vdGVzdHMvTWFrZWZpbGUuaW4sIGRsbHMvdXJsbW9uL3Rlc3RzL3VybC5jLAoJICBkbGxzL3VybG1vbi91bW9uLmMsIGluY2x1ZGUvdXJsbW9uLmlkbDoKCUphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CgktIEFkZGVkIHRlc3Qgb2YgQmluZFRvU3RvcmFnZS4KCS0gQWRkZWQgc29tZSBkZWNsYXJhdGlvbnMgdG8gdXJsbW9uLmlkbC4KCgkqIGxpYnMvd2luZS9jb25maWcuYzoKCUZpeCBsb25nIHN0YW5kaW5nIHJlZ3Jlc3Npb24gaW4gdGhlIGJ1aWxkaW5nIG9mIHRoZSBzZXJ2ZXIgZGlyZWN0b3J5CgluYW1lIChmb3VuZCBieSBOaWdlbCBSb3dlKS4KCgkqIGRsbHMvYWR2YXBpMzIvY3J5cHQuYzogTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJaXhlZCBjYWxjdWxhdGlvbiBvZiBidWZmZXIgc2l6ZSBpbiBDUllQVF9BTlNJVG9Vbmljb2RlIGFuZAoJQ1JZUFRfVW5pY29kZVRvQU5TSS4KCgkqIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5oOiBTdGV2ZW4gRWR3YXJkcyA8c3RldmVuX2VkNDE1M0B5YWhvby5jb20+CglNU1ZDIHBvcnRpbmcgZml4ZXMuCgoJKiBkbGxzL3dpbm1tL3dhdmVtYXAvd2F2ZW1hcC5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJUmV0dXJuIGFjdHVhbCByZXN1bHQgb24gZXJyb3IuCgoJKiBkbGxzL2RkcmF3L2RpcmVjdDNkL21lc2EuYzogQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJRW5hYmxlIGNyZWF0aW9uIG9mIHRoZSBSR0IgZGV2aWNlLgoKCSogZGxscy9xdWFydHovYXZpZGVjLmMsIGRsbHMvcXVhcnR6L2F2aXNwbGl0LmMsCgkgIGRsbHMvcXVhcnR6L2Rzb3VuZHJlbmRlci5jLCBkbGxzL3F1YXJ0ei9tZW1hbGxvY2F0b3IuYywKCSAgZGxscy9xdWFydHovdmlkZW9yZW5kZXJlci5jOgoJQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJRml4ZWQgTWVkaWFTYW1wbGUgcGFzc2luZy4gVGhpcyBpcyB0aGUgdXBzdHJlYW0gZmlsdGVyIHRoYXQgcmVsZWFzZXMKCWl0LgoJU2V0IHBwTWVkaWFUeXBlIHRvIE5VTEwgd2hlbiByZXR1cm5pbmcgU19GQUxTRSBpbgoJSU1lZGlhU2FtcGxlX0dldE1lZGlhVHlwZSAocmVxdWlyZWQgYnkgbmF0aXZlIFF1YXJ0eiBkbGwpLgoJQWRkZWQgc3VwcG9ydCBmb3IgMzItYml0IGRlcHRoIHNvdXJjZSBpbiB2aWRlbyByZW5kZXJlci4KCgkqIGRsbHMvb2xlYXV0MzIvdG1hcnNoYWwuYzogQmlsbCBNZWRsYW5kIDxiaWxsbWVkbGFuZEBtZXJjdXJ5c3BlZWQuY29tPgoJRnVsbHkgaW5pdGlhbGlzZSB0aGUgc3RydWN0dXJlIHRvIHByZXZlbnQgaWxsLWRlZmluZWQgYmVoYXZpb3VyLgoKCSogZGxscy9tc2Ntcy9NYWtlZmlsZS5pbiwgZGxscy9tc2Ntcy9tc2Ntcy5zcGVjLCBkbGxzL21zY21zL3Byb2ZpbGUuYywKCSAgZGxscy9tc2Ntcy9zdHViLmMsIGRsbHMvbXNjbXMvdGVzdHMvcHJvZmlsZS5jLCBpbmNsdWRlL2ljbS5oOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglTdHViIGltcGxlbWVudGF0aW9ucyBmb3IgYWxsIGRvY3VtZW50ZWQgZnVuY3Rpb25zLgoKCSogZGxscy9yc2FlbmgvcnNhZW5oLmM6IE1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCVJlc3BlY3Qgc0Rlc2NyaXB0aW9uIHBhcmFtZXRlciBpbiBDUFNpZ25IYXNoIGFuZCBDUFZlcmlmeVNpZ25hdHVyZS4KCgkqIGRsbHMvY29tY3RsMzIvZGF0ZXRpbWUuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBNYWtlIHRoZSBtb250aCBjYWxlbmRhciBjaGlsZCB3aW5kb3cgYXV0by1zaXplIGluc3RlYWQgb2YgdXNpbmcgYQoJICBoYXJkIGNvZGVkIDIwMHB4LgoJLSBVc2UgU2V0Rm9jdXMgd2hlbiB0aGUgY29udHJvbCBpcyBjbGlja2VkIG9uIHRvIGdldCB0aGUgY29ycmVjdAoJICBiZWhhdmlvdXIgd2hlbiBhbm90aGVyIGNvbnRyb2wgY2xpY2tlZCBvbi4KCS0gRm9yY2UgdGhlIFdTX0VYX0NMSUVOVEVER0Ugc3R5bGUsIGluc3RlYWQgb2YgZW11bGF0aW5nIGl0LgoKCSogZGxscy91c2VyL3Rlc3RzL21zZy5jOiBSZWluIEtsYXplcyA8d2lqbkB3YW5hZG9vLm5sPgoJLSBtYWtlIHN1cmUgdGhhdCB0ZXN0cyBtYXJrZWQgYXMgdG9kb193aW5lIGFuZCBhY3R1YWxseSBzdWNjZWVkIHVuZGVyCgkgIHdpbmUgd2lsbCBiZSBjb3VudGVkIGFzIGZhaWx1cmVzCgktIHJlbW92ZSB0b2RvX3dpbmUgZnJvbSBhIGJ1bmNoIG9mIHRlc3RzCgktIGxvZyB0aGUgbGluZSBudW1iZXJzIG9mIHRoZSBhY3R1YWwgdGVzdHMsIG5vdCB0aG9zZSBvZiBhIGhlbHBlcgoJICBmdW5jdGlvbi4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hAY29kZXdlYXZlcnMuY29tPgoJQWRkIHBhcnRpYWwgaGFuZGxlciBmb3IgV01fUFJJTlRDTElFTlQuCgoJKiBpbmNsdWRlL3JwYy5oLCBpbmNsdWRlL3JwY25kci5oOiBQZXRlciBCZXJnIExhcnNlbiA8cGVibEBtYXRoLmt1LmRrPgoJUmVtb3ZlIGNvbXBpbGVyIHdhcm5pbmdzIGZvciB0aGUgIyBub3QgYmVpbmcgYXQgdGhlIHN0YXJ0IG9mIHRoZQoJbGluZS4KCgkqIHRvb2xzL3dpbmVkdW1wL21haW4uYywgdG9vbHMvd2luZWR1bXAvc2VhcmNoLmMsCgkgIHRvb2xzL3dpbmVkdW1wL3dpbmVkdW1wLmg6CglQZXRlciBCZXJnIExhcnNlbiA8cGVibEBtYXRoLmt1LmRrPgoJQWxsb3cgc2V2ZXJhbCAtSSBwYXJhbWV0ZXJzIHRvIGJlIGdpdmVuIC0gY3VycmVudGx5IGp1c3QgdGhlIGxhc3QgaXMKCXVzZWQuIFJlbW92ZSBvYnZpb3VzIHdyb25nIGJpbmFyaWVzIHdoZW4gc2VhcmNoaW5nIGZvciB0aGUgZGVmaW5pdGlvbgoJb2YgYSBmdW5jdGlvbnMgZGVmaW5pdGlvbi4gUmVhbGx5IGp1c3Qgc3RyaXAgYSAnLmRsbCcgZXh0ZW5zaW9uIGFuZAoJbm90IGFsc28gJy5kbGwuZm9vcmJhci5zcGVjJy4KCgkqIHRvb2xzL3dpbmVkdW1wL2Z1bmN0aW9uX2dyZXAucGw6IFBldGVyIEJlcmcgTGFyc2VuIDxwZWJsQG1hdGgua3UuZGs+CglXYXJ6b25lIDIxMDAgaGFzIGluIGEgaGVhZGVyIGEgZGVmaW5pdGlvbiB0aGF0IGVuZHMgd2l0aCBhIHNsYXNoLiBBcwoJJy4nIGRvZXMgbm90IGluY2x1ZGUgJ1xuJyB3aW5lZHVtcCBrZWVwcyBsb29raW5nIGFoZWFkIHVudGlsIGVvZi4KCjIwMDQtMTItMTcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL250ZGxsL3JlZy5jLCBkbGxzL250ZGxsL3J0bC5jLCBkbGxzL250ZGxsL3J0bGJpdG1hcC5jLAoJICBkbGxzL250ZGxsL3NlYy5jLCBkbGxzL250ZGxsL3N0cmluZy5jLCBkbGxzL250ZGxsL3N5bmMuYywKCSAgZGxscy9udGRsbC90ZXN0cy9lcnJvci5jLCBkbGxzL250ZGxsL3Rlc3RzL2xhcmdlX2ludC5jLAoJICBkbGxzL250ZGxsL3Rlc3RzL3J0bC5jLCBkbGxzL250ZGxsL3Rlc3RzL3N0cmluZy5jLAoJICBkbGxzL250ZGxsL3ZlcnNpb24uYywgZGxscy9udGRsbC93Y3N0cmluZy5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCVJlbW92ZSB1bm5lZWRlZCBoZWFkZXJzIHRvIHJlZHVjZSB1bm5lZWRlZCByZWJ1aWxkcy4KCgkqIGRsbHMveDExZHJ2L3gxMWRydi5oOiBS6W1pIEFzc2FpbGx5IDxyZW1pLmFzc2FpbGx5QGZyZWUuZnI+CgktIHJlbW92ZWQgdW51c2VkIHRhZ1BBTEVUVEVPQkogYW5kIHRhZ1dJTkRPV1BPUwoJLSB0YWdCSVRNQVBPQkogaXMgZGVjbGFyZWQgdHdpY2UsIHJlbW92ZWQgb25lLgoKCSogZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jLCBkbGxzL3NoZWxsMzIvcGlkbC5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGRsbHMvc2hlbGwzMi9zaGxleGVjLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGxmaWxlb3AuYywgaW5jbHVkZS9zaGVsbGFwaS5oOgoJUmVtb3ZlIHNvbWUgbm8gbG9uZ2VyIG5lZWRlZCBBVyBmdW5jdGlvbnMuCgoJKiBkbGxzL29sZWF1dDMyL3Rlc3RzL3ZhcnR5cGUuYzoKCUV4cGFuZCB0aGUgQ09QWVRFU1QgbWFjcm8gdG8gYXZvaWQgdHJvdWJsZSB3aXRoIDY0LWJpdCB0eXBlcy4KCgkqIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsIGRsbHMvc2hsd2FwaS9zdG9wd2F0Y2guYywKCSAgZGxscy9zaGx3YXBpL3Rlc3RzL2Nsc2lkLmMsIGRsbHMvc2hsd2FwaS90ZXN0cy9vcmRpbmFsLmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJUmVtb3ZlIHVubmVlZGVkIGhlYWRlcnMgdG8gcmVkdWNlIHVubmVlZGVkIHJlYnVpbGRzLgoKCSogZGxscy93aW5lZDNkL3dpbmVkM2RfcHJpdmF0ZS5oOgoJUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CglGaXhlZCBidWlsZCBwcm9ibGVtIHdpdGggR0xfVkVSU0lPTl8xXzIuCgoJKiBkbGxzL250ZGxsL3ZlcnNpb24uYzogVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJQmV0dGVyIGRldGVjdCBhIGRsbCdzIFdpbmRvd3MgdmVyc2lvbi4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWM6IFJlaW4gS2xhemVzIDx3aWpuQHdhbmFkb28ubmw+CglTaGVsbEV4ZWN1dGVFeCwgRXh0cmFjdEljb25FeCwgU0hGaWxlT3BlcmF0aW9uLCBTSEdldEZpbGVJbmZvLAoJU0hHZXRQYXRoRnJvbUlETGlzdCBzcGVjIGVudHJpZXMgYWx3YXlzIHJlZmVyIHRvIHRoZSBBbnNpCgl2ZXJzaW9uLiBQcm9ibGVtIGZvdW5kIGJ5IFBhdWwgVnJpZW5zLgoKCSogZGxscy93aW5tbS9sb2x2bGRydi5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJUmV0dXJuIGZsYWcgZm9yIERSVk1fTUFQUEVSX1BSRUZFUlJFRF9HRVQuCgoJKiBpbmNsdWRlL21tZGRrLmg6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglBZGRlZCBhIG1pc3NpbmcgZGVmaW5lLgoKCSogZGxscy9rZXJuZWwvbW9kdWxlLmM6IEFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCUZpeGVkIGEgdHlwby4KCgkqIGRsbHMva2VybmVsL3BhdGguYywgaW5jbHVkZS93aW5iYXNlLmg6CglBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CglHZXRUZW1wUGF0aCooKSB1c2VzIERXT1JEIHBhcmFtZXRlcnMgaW5zdGVhZCBvZiBVSU5ULgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglGaXggY29tbWVudCB0byByZWZsZWN0IHJlYWxpdHkgYW5kIGluZGVlZCB0aGUgY29kZS4KCgkqIGluY2x1ZGUvb2JqaWRsLmlkbDogU2VyZ2UgUy4gU3Bpcmlkb25vZmYgPHNzc0Bjb3JiaW5hLm5ldD4KCUlNZXNzYWdlRmlsdGVyOjpIYW5kbGVJbmNvbWluZ0NhbGwgbXVzdCBiZSBIYW5kbGVJbkNvbWluZ0NhbGwgYXMgcGVyCglNUyBoZWFkZXJzLgoKCSogZGxscy91c2VyL3N0YXRpYy5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgU1NfQ0VOVEVSSU1BR0UgZm9yIHN0YXRpYyBjb250cm9sLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIEFkZCBjb2RlIGZvciBob3QgdHJhY2tpbmcuCgktIERyYXcgaG90IGl0ZW1zIHdpdGggdW5kZXJsaW5lIGFuZCB3aXRoIGhpZ2hsaWdodCBjb2xvdXIgd2l0aAoJICBUVlNfVFJBQ0tTRUxFQ1Qgc3R5bGUuCgktIFNldCBjdXJzb3IgdG8gaGFuZCBjdXJzb3Igd2l0aCBUVlNfVFJBQ0tTRUxFQ1Qgc3R5bGUuCgktIE1ha2Ugc3VyZSB1SW50ZXJuYWxTdGF0dXMgaXMgY29uc2lzdGVudCB3aXRoIGFjdHVhbCBzY3JvbGxiYXIgc3RhdGUKCSAgYnkgZm9yY2luZyBzY3JvbGxiYXJzIG9mZiBpbiBXTV9DUkVBVEUgaGFuZGxlci4KCgkqIGRsbHMvY29tY3RsMzIvZGF0ZXRpbWUuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBJbXBsZW1lbnQgV01fRU5BQkxFIGhhbmRsZXIgdG8gdXBkYXRlIGNhY2hlZCBjb250cm9sIHN0eWxlIHdoZW4gdGhlCgkgIGNvbnRyb2wgaXMgZGlzYWJsZWQuCgktIE1vdmUgYmFja2dyb3VuZCBkcmF3aW5nIGludG8gV01fRVJBU0VCS0dORCBoYW5kbGVyIGFuZCBkcmF3IHRoZQoJICBiYWNrZ3JvdW5kIGRpZmZlcmVudGx5IHdoZW4gZGlzYWJsZWQuCgktIENoYW5nZSBXTV9QQUlOVCBoYW5kbGVyIHRvIGRyYXcgdGV4dCB3aXRoIHRyYW5zcGFyZW50IGJhY2tncm91bmQgYW5kCgkgIHdpdGggdGhlIGNvcnJlY3QgY29sb3VyIGZvciB0aGUgc3R5bGUuCgktIEluaXRpYWxpemUgc2VsZWN0ZWQgZmllbGQgdG8gLTEgaW5zdGVhZCBvZiAwIHNvIHRoYXQgdGhlIGNvbnRyb2wKCSAgbm90aWNlcyB3aGVuIGZpZWxkIDAgaXMgc2VsZWN0ZWQuCgoJKiBkbGxzL3VzZXIvdGVzdHMvd2luLmMsIGRsbHMveDExZHJ2L21vdXNlLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkIGEgbW91c2UgaW5wdXQgdGVzdCBjYXNlLCBtYWtlIHRoZSB0ZXN0IHBhc3MgdW5kZXIgV2luZS4KCjIwMDQtMTItMTYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL250ZGxsL3ZlcnNpb24uYzogSXZhbiBMZW8gUHVvdGkgPHB1b3RpQGlud2luZC5pdD4KCUJldHRlciBFWEUgdmVyc2lvbiBjaGVjayBpbiBWRVJTSU9OX0dldExpbmtlZERsbFZlcnNpb24uCgoJKiBkbGxzL3VuaWNvd3MvTWFrZWZpbGUuaW4sIGRsbHMvdW5pY293cy9tYWluLmMsCgkgIGRsbHMvdW5pY293cy91bmljb3dzLnNwZWM6CglBZGRlZCBhIGZldyBmdW5jdGlvbnMgdGhhdCBhcmUgbm93IGltcGxlbWVudGVkLgoKCSogZGxscy9zaGVsbDMyL2NoYW5nZW5vdGlmeS5jLCBkbGxzL3NoZWxsMzIvY3BhbmVsZm9sZGVyLmMsCgkgIGRsbHMvc2hlbGwzMi9lbnVtaWRsaXN0LmMsIGRsbHMvc2hlbGwzMi9mb2xkZXJzLmMsCgkgIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYywgZGxscy9zaGVsbDMyL3BpZGwuYywKCSAgZGxscy9zaGVsbDMyL3NoZWxscmVnLmMsIGRsbHMvc2hlbGwzMi9zaGZsZHJfbXljb21wLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGxleGVjLmMsIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYywKCSAgZGxscy9zaGVsbDMyL3NobGZzYmluZC5jLCBkbGxzL29sZWF1dDMyL29sZTJkaXNwLmMsCgkgIGRsbHMvb2xlYXV0MzIvdG1hcnNoYWwuYywgZGxscy9vbGVhdXQzMi90eXBlbGliLmMsCgkgIGRsbHMvb2xlYXV0MzIvdHlwZWxpYjE2LmMsIGRsbHMvb2xlYXV0MzIvdHlwZWxpYjIuYywKCSAgZGxscy9nZGkvYml0bWFwLmMsIGRsbHMvZ2RpL2ljbS5jLCBkbGxzL2dkaS93aW5nLmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJUmVtb3ZlIHVubmVlZGVkIGhlYWRlcnMgdG8gcmVkdWNlIHVubmVlZGVkIHJlYnVpbGRzLgoKCSogZG9jdW1lbnRhdGlvbi9SRUFETUUuZnI6IFZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCVVwZGF0ZSBGcmVlQlNEIGluZm9zLgoKCSogZGxscy9uZXRhcGkzMi9uZXRiaW9zLmM6IEp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCUluIE5ldGJpb3MoKSwKCS0gc2V0IG5jYl9yZXRjb2RlIGFuZCBuY2JfY21kX2NwbHQgZm9yIE5DQl9BREROQU1FCgktIGFsd2F5cyBtYWtlIHN1cmUgYWRhcHRlcnMgaGF2ZSBiZWVuIGVudW1lcmF0ZWQuCgoJKiBkbGxzL3ZlcnNpb24vdGVzdHMvaW5mby5jOgoJU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtTGluZS5jb20+CglGaXhlZCB0ZXN0cyBvZiBHZXRGaWxlVmVyc2lvbkluZm9TaXplQSBmb3Igd2luMmszLgoKCSogZGxscy9tc2kvc3FsLnk6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglMZXQgbmVnYXRpdmUgbnVtYmVyIGJlIHBhcnNlZCBjb3JyZWN0bHkuIE5lZWRlZCBmb3IgYWNjZXNzaW5nIGFjdGlvbnMKCXdpdGggc2VxdWVuY2VzIHN1Y2ggYXMgLTEuCgoJKiBkbGxzL21zaS9wYWNrYWdlLmM6IFZpdGFseSBMaXBhdG92IDxsYXZAZXRlcnNvZnQucnU+CglBZGQgU2NyZWVuWCwgU2NyZWVuWSwgQ29sb3JCaXRzIGluc3RhbGxlciBwcm9wZXJ0aWVzLgoKCSogZGxscy9tc2kvYWN0aW9uLmMsIGluY2x1ZGUvbXNpcXVlcnkuaDoKCVZpdGFseSBMaXBhdG92IDxsYXZAZXRlcnNvZnQucnU+CglBZGQgZGVzY3JpcHRpb24gZm9yIE1zaUdldE1vZGUsIE1TSVJVTk1PREUgY29uc3RhbnRzLgoKCSogZGxscy9xdWFydHovYXZpc3BsaXQuYywgZGxscy9xdWFydHovZmlsdGVyZ3JhcGguYywgZGxscy9xdWFydHovcGluLmMsCgkgIGRsbHMvcXVhcnR6L3N5c3RlbWNsb2NrLmMsIGRsbHMvcXVhcnR6L3Rlc3RzL2ZpbHRlcmdyYXBoLmM6CglDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglNYW55IGZpeGVzIHRvIHRoZSBzeXN0ZW0gY2xvY2sgaW1wbGVtZW50YXRpb24uCglFbnN1cmUgdGhlcmUgaXMgYSBjbG9jayBiZWZvcmUgZG9pbmcgYW55IEFkZFJlZiBvciBSZWxlYXNlIGluIHRoZSBBVkkKCXNwbGl0dGVyLgoJSW1wcm92ZWQgdGVzdHMgYSBiaXQuCglNaXNjIGZpeGVzIGFuZCB0cmFjZXMgY2xlYW4tdXAuCgoJKiBkbGxzL29sZTMyL2lmcy5jOiBHZSB2YW4gR2VsZG9ycCA8Z3ZnQHJlYWN0b3MuY29tPgoJQWxsb2NhdGUgY29ycmVjdCBhbW91bnQgb2YgbWVtb3J5LgoKCSogdG9vbHMvd2luZXByZWZpeGNyZWF0ZS5pbjogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFsbG93IHdpbmVwcmVmaXhjcmVhdGUgdG8gcnVuIHRvIHRoZSBlbmQgd2hlbiBjb25maWd1cmluZyBmcm9tIHRoZQoJc291cmNlIHRyZWUuCgoyMDA0LTEyLTE1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9hZHZhcGkzMi9jcnlwdC5jLCBkbGxzL2FkdmFwaTMyL2NyeXB0X21kNC5jLAoJICBkbGxzL2FkdmFwaTMyL2NyeXB0X21kNS5jLCBkbGxzL2FkdmFwaTMyL2NyeXB0X3NoYS5jLAoJICBkbGxzL2NvbWN0bDMyL2ZsYXRzYi5jLCBkbGxzL2NvbWN0bDMyL3Ntb290aHNjcm9sbC5jLAoJICBkbGxzL2NvbWN0bDMyL3N5c2xpbmsuYywgZGxscy9jb21jdGwzMi90ZXN0cy9kcGEuYywKCSAgZGxscy9rZXJuZWwvbmVfbW9kdWxlLmMsIGRsbHMva2VybmVsL3Bvd2VybWdudC5jLCBkbGxzL2tlcm5lbC90aW1lLmMsCgkgIGRsbHMva2VybmVsL3V0dGh1bmsuYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglSZW1vdmUgdW5uZWVkZWQgaGVhZGVycyB0byByZWR1Y2UgdW5uZWVkZWQgcmVidWlsZHMuCgoJKiBkbGxzL2FkdnBhY2svYWR2cGFjay5jLCBkbGxzL2FkdnBhY2svYWR2cGFjay5zcGVjLAoJICBkbGxzL2RjaW1hbjMyL2RjaW1hbjMyLnNwZWMsIGRsbHMvZGNpbWFuMzIvZGNpbWFuX21haW4uYywKCSAgZGxscy9tc2ltZzMyL21zaW1nMzIuc3BlYywgZGxscy9tc2ltZzMyL21zaW1nMzJfbWFpbi5jLAoJICBkbGxzL3dpbnNwb29sL3dpbnNwb29sLmRydi5zcGVjOgoJSXQgbWFrZXMgbm8gc2Vuc2UgdG8gZXhwb3J0IHRoZSBkbGwgZW50cnkgcG9pbnQgYXMgc3R1Yi4KCgkqIFJFQURNRSwgbGlicy93aW5lL21tYXAuYzogR2VyYWxkIFBmZWlmZXIgPGdlcmFsZEBwZmVpZmVyLmNvbT4KCU1ha2UgdXMgd29yayBvbiBGcmVlQlNEIGFnYWluIGJ5IHdvcmtpbmcgYXJvdW5kIHRoZWlyIGRpZmZlcmVudCBtbWFwKCkKCWltcGxlbWVudGF0aW9uLgoKCSogZGxscy9zaGx3YXBpL3Rlc3RzL29yZGluYWwuYzoKCVN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJRml4ZWQgdGVzdHMgb2YgR2V0QWNjZXB0TGFuZ3VhZ2VzQSBmb3Igd2luOTguCgoJKiBkbGxzL3NobHdhcGkvdGVzdHMvc2hyZWcuYzogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCVVzZSB0aGUgQSB2ZXJzaW9uIG9mIGNhbGxzIHdoZW4gcGFzc2luZyBBU0NJSSBzdHJpbmdzLgoKCSogaW5jbHVkZS9nZGkuaDogUultaSBBc3NhaWxseSA8cmVtaS5hc3NhaWxseUBmcmVlLmZyPgoJUENfU1lTX01BUFBFRCBpcyB1bnVzZWQsIHJlbW92ZSBpdC4KCgkqIGRsbHMvc2hsd2FwaS93c3ByaW50Zi5jOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJSW5jbHVkZSBzaGx3YXBpLmggdG8gZ2V0IHByb3RvdHlwZXMsIGFuZCBjb3JyZWN0IDIgd3Jvbmcgb25lcy4KCgkqIGRsbHMva2VybmVsL3Byb2Nlc3MuYzogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCURvY3VtZW50YXRpb24gZml4ZXMuCgoJKiBkbGxzL2tlcm5lbC9jb25zb2xlLmMsIHNlcnZlci9wcm9jZXNzLmM6CglSZWluIEtsYXplcyA8d2lqbkB3YW5hZG9vLm5sPgoJQSBzdGFydGluZyBwcm9jZXNzIG11c3Qgb2JleSB0aGUgU1RBUlRGX1VTRVNUREhBTkRMRVMgZmxhZyBhbmQgdXNlIHRoZQoJc3RhbmRhcmQgaW8gaGFuZGxlcyBmcm9tIHRoZSBTdGFydHVwSW5mbyBzdHJ1Y3R1cmUsIGV2ZW4gaWYgaXQgaXMKCXN0YXJ0aW5nIGEgbmV3IGNvbnNvbGUuCgoJKiBkbGxzL29sZWF1dDMyL29sZWF1dDMyLnJjLCBkbGxzL29sZWF1dDMyL29sZWF1dDMyX1J1LnJjOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBSdXNzaWFuIHRyYW5zbGF0aW9ucy4KCjIwMDQtMTItMTQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC9leGNlcHQuYywgZGxscy9udGRsbC9leGNlcHRpb24uYywgZGxscy9udGRsbC9sb2FkZXIuYywKCSAgcHJvZ3JhbXMvd2luZWRiZy93aW5lZGJnLmM6CglHZW5lcmF0ZSBzdHViIGVudHJpZXMgb24gdGhlIGZseSBmb3IgbWlzc2luZyBlbnRyeSBwb2ludHMgaW5zdGVhZCBvZgoJcmV0dXJuaW5nIGEgZGVhZGJlZWYgcG9pbnRlci4KCgkqIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGRsbHMva2VybmVsL2xjZm9ybWF0LmM6CglLZW4gQmVsbGVhdSA8amFtZXpAaXZpYy5xYy5jYT4KCUltcGxlbWVudGVkIEVudW1DYWxlbmRhckluZm8oQS9XL0V4QS9FeFcpLgoKCSogZGxscy9vbGUzMi9tYXJzaGFsLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gQWRkIGRvY3VtZW50YXRpb24gdG8gc2V2ZXJhbCBmdW5jdGlvbnMuCgktIENvZGluZyBzdHlsZSBjaGFuZ2VzIGFjY29yZGluZyB0byB0aGUgc3R5bGUgTWlrZSBhbmQgSSBoYXZlIGFncmVlZAoJICB1cG9uIGZvciBDT00gcmVsYXRlZCBmaWxlcy4KCgkqIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL21hcnNoYWwuYywKCSAgZGxscy9vbGUzMi9tZW1sb2NrYnl0ZXMuYywgZGxscy9vbGUzMi9ycGMuYzoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZSB1bm5lZWRlZCBpbmNsdWRlcyBhbmQgdGhlIHVudXNlZCBDT01QT0JKX2hJbnN0YW5jZTMyIHZhcmlhYmxlLgoKCSogZGxscy9hZHZhcGkzMi9hZHZhcGkuYzogSmFtZXMgSGF3a2lucyA8dHJ1aWtlbkBnbWFpbC5jb20+CglNaW5vciBkb2N1bWVudGF0aW9uIGFkZGl0aW9uLgoKCSogZGxscy9hZHZhcGkzMi9jcnlwdC5jOiBKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCUNsZWFudXAgc29tZSBkb2N1bWVudGF0aW9uLgoKCSogZGxscy9vbGUzMi9tYXJzaGFsLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCVVzZSBPQkpSRUYgb24gdGhlIHdpcmUgZm9yIGdlbmVyaWMgbWFyc2hhbGluZyBmdW5jdGlvbnMuCgoJKiBkbGxzL21zdmNydC9tc3ZjcnQuaCwgZGxscy9tc3ZjcnQvcHJvY2Vzcy5jOgoJSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJSW1wbGVtZW50IF9wb3BlbiBhbmQgX3BjbG9zZSwgYW5kIHVzZSBkZWJ1Z3N0cl9hIHRvIGF2b2lkIGEgY3Jhc2gKCXRyYWNpbmcgbG9uZyBjb21tYW5kIGxpbmVzLgoKCSogZGxscy9tc3ZjcnQvZGF0YS5jOiBKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglVc2UgZGVidWdzdHJfYSB0byBhdm9pZCBjcmFzaCB0cmFjaW5nIGxvbmcgY29tbWFuZCBsaW5lLgoKCSogZGxscy9tc3ZjcnQvZmlsZS5jOiBKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CgktIG1ha2UgZmlsZSBmdW5jdGlvbnMgKG1vc3RseSkgdGhyZWFkLXNhZmUKCS0gdXBkYXRlIGEgY291cGxlIHRyYWNlcwoKCSogZGxscy9kM2Q5L2RldmljZS5jLCBkbGxzL3dpbmVkM2QvZGV2aWNlLmMsIGRsbHMvd2luZWQzZC9kaXJlY3R4LmMsCgkgIGRsbHMvd2luZWQzZC9kcmF3cHJpbS5jLCBkbGxzL3dpbmVkM2Qvc3RhdGVibG9jay5jLAoJICBkbGxzL3dpbmVkM2Qvd2luZWQzZF9wcml2YXRlLmgsIGluY2x1ZGUvd2luZS93aW5lZDNkX2ludGVyZmFjZS5oOgoJSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCUFkZCBDbGVhciwgUHJlc2VudCBhbmQgRW5kU2NlbmUgc3VwcG9ydCBhbmQgZml4IGEgYnVnIGluIHRoZSBkcmF3aW5nCgljb2RlLgoKCSogd2luZG93cy9tc2dib3guYzogVGhvbWFzIFdlaWRlbm11ZWxsZXIgPHczc2Vla0ByZWFjdG9zLm9yZz4KCU1lc3NhZ2VCb3hJbmRpcmVjdEEoKSBzaG91bGQgY2hlY2sgd2hldGhlciB0aGUgTUJfVVNFUklDT04gYml0IGlzIHNldAoJdG8gcHJldmVudCBhbiBleGNlcHRpb24uCgoJKiBkbGxzL21zYWNtL21zZzcxMS9tc2c3MTEuYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUZpeCBhIHR5cG8gdGhhdCBkaWRuJ3QgYWxsb3cgcGNtIHRvIG11bGF3IGNvbnZlcnNpb25zLgoKCSogZGxscy9vbGVhdXQzMi90bWFyc2hhbC5jLCBkbGxzL3JwY3J0NC9uZHJfbWlkbC5jOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IFJQQ19FX0RJU0NPTk5FQ1RFRCBpbiBwcm94aWVzLgoKCSogcHJvZ3JhbXMvd2luZWZpbGUvd2luZWZpbGUuYzogUGlvdHIgQ2FiYW4gPHBpbzEzQHBvY3p0YS5vbmV0LnBsPgoJRml4ZWQgZGlzcGxheSBidWcuCgoJKiBkb2N1bWVudGF0aW9uL3dpbmVsaWItYmluZGxscy5zZ21sLCBkb2N1bWVudGF0aW9uL3dpbmVsaWItaW50cm8uc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi93aW5lbGliLXRvb2xraXQuc2dtbDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJUmVtb3ZlIHJlZmVyZW5jZXMgdG8gLi9jb25maWd1cmUgYW5kIE1ha2VmaWxlLmluIGZpbGVzLgoKCSogZGxscy9tc2Ntcy90ZXN0cy9wcm9maWxlLmMsIGRsbHMvbXN2Y3J0L3Rlc3RzL2ZpbGUuYywKCSAgZGxscy9yc2FlbmgvdGVzdHMvcnNhZW5oLmMsIGRsbHMvdXNlci90ZXN0cy9tc2cuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQWRkIHRyYWlsaW5nICdcbidzIHRvIG9rKCkgY2FsbHMuCgoJKiB0b29scy9maW5kZnVuYywgdG9vbHMvZm9udF9jb252ZXJ0LnNoOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglVc2UgJz0nIGluc3RlYWQgb2YgJz09JyBpbiAvYmluL3NoIHNjcmlwdHMgdG8gYXZvaWQgcG9ydGFiaWxpdHkKCXByb2JsZW1zLgoKCSogZGxscy9jYWJpbmV0L2NhYmluZXRfbWFpbi5jLCBkbGxzL2dkaS9yZWdpb24uYywgZGxscy9yc2FlbmgvcnNhZW5oLmMsCgkgIGRsbHMvc2hsd2FwaS9zdHJpbmcuYywgZGxscy9zaGx3YXBpL3VybC5jLCBkbGxzL3gxMWRydi9wYWxldHRlLmMsCgkgIGRsbHMveDExZHJ2L3dpbmRvdy5jOgoJTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5kZT4KCU1pc3NpbmcgSGVhcEZyZWUncyArIDEgTG9jYWxGcmVlIChmb3VuZCBieSBzbWF0Y2gpLgoKCSogZGxscy9vbGUzMi9oZ2xvYmFsc3RyZWFtLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVkIGluY29ycmVjdCB1bnNpZ25lZCB0ZXN0LgoKMjAwNC0xMi0xMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvY29tY3RsMzIvdGVzdHMvaW1hZ2VsaXN0LmMsIGRsbHMvZGV2ZW51bS9jcmVhdGVkZXZlbnVtLmMsCgkgIGRsbHMvZGV2ZW51bS9kZXZlbnVtX3ByaXZhdGUuaCwgZGxscy9kc291bmQvdGVzdHMvZHNvdW5kX3Rlc3QuaCwKCSAgZGxscy9nbHUzMi9nbHUuYywgZGxscy9rZXJuZWwvdGVzdHMvcGlwZS5jLAoJICBkbGxzL2tlcm5lbC90ZXN0cy90aHJlYWQuYywgZGxscy9tc2FjbS93aW5lYWNtLmgsIGRsbHMvbXNpL3NxbC55LAoJICBkbGxzL21zdmNydC9tc3ZjcnQuaCwgZGxscy9vbGUzMi9jb21wb2JqLmMsCgkgIGRsbHMvb2xlMzIvY29tcG9ial9wcml2YXRlLmgsIGRsbHMvb2xlMzIvaWZzLmgsIGRsbHMvb2xlMzIvbW9uaWtlci5jLAoJICBkbGxzL29sZTMyL29sZTIuYywgZGxscy9vbGUzMi9vbGVvYmouYywgZGxscy9vbGVhdXQzMi90eXBlbGliLmMsCgkgIGRsbHMvcmljaGVkaXQvcmVhZGVyLmMsIGRsbHMvcmljaGVkaXQvcnRmMnRleHQuaCwKCSAgZGxscy9zaGVsbDMyL3VuZG9jc2hlbGwuaCwgZGxscy91eHRoZW1lL3V4dGhlbWVkbGwuaCwKCSAgZGxscy93aW5hc3BpL2FzcGkuYywgZGxscy93aW5hc3BpL3dpbmVzY3NpLmgsIGRsbHMvd2luZWRvcy92Z2EuaCwKCSAgZGxscy93aW5pbmV0L2ludGVybmV0LmMsIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5oLAoJICBkbGxzL3dpbnNwb29sL3dzcG9vbC5jLCBpbmNsdWRlL2ltbS5oLCBpbmNsdWRlL21zaS5oLAoJICBpbmNsdWRlL21zdmNydC9laC5oLCBpbmNsdWRlL21zdmNydC9zdGRkZWYuaCwKCSAgaW5jbHVkZS9tc3ZjcnQvc3RkbGliLmgsIGluY2x1ZGUvc2hsd2FwaS5oLCBpbmNsdWRlL3V4dGhlbWUuaDoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJRml4ZWQgc29tZSBlcnJvcnMgaW4gZnVuY3Rpb24gcHJvdG90eXBlcy4KCgkqIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy9udGRsbC9udGRsbF9taXNjLmgsIGRsbHMvbnRkbGwvc3luYy5jLAoJICBkbGxzL250ZGxsL3RpbWUuYywgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLAoJICBpbmNsdWRlL3dpbnRlcm5sLmgsIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci9yZXF1ZXN0LmgsCgkgIHNlcnZlci90aW1lci5jLCBzZXJ2ZXIvdHJhY2UuYzoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCBOdFF1ZXJ5VGltZXIuCgoJKiBwcm9ncmFtcy93aW5oZWxwL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5oZWxwL2NhbGxiYWNrLmMsCgkgIHByb2dyYW1zL3dpbmhlbHAvaGxwZmlsZS5jLCBwcm9ncmFtcy93aW5oZWxwL21hY3JvLmMsCgkgIHByb2dyYW1zL3dpbmhlbHAvbWFjcm8uaCwgcHJvZ3JhbXMvd2luaGVscC9tYWNyby5sZXgubCwKCSAgcHJvZ3JhbXMvd2luaGVscC93aW5oZWxwLmMsIHByb2dyYW1zL3dpbmhlbHAvd2luaGVscC5oOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CgktIGFkZGVkIHN1cHBvcnQgcGx1Zy1pbiBETExzIGZvciB3aW5oZWxwCgktIGFkZGVkIHByZWxpbWluYXJ5IHN1cHBvcnQgZm9yIHBsdWctaW4gY2FsbGJhY2sgaW50byB3aW5oZWxwCgktIHJld3JvdGUgYWxsIHRoZSBtYWNyb3MgYWNjb3JkaW5nbHkgKG1hY3JvIGVudHJ5LXBvaW50IGhhcyB0byBoYXZlCgkgIFdJTkFQSSBjYWxsaW5nIGNvbnZlbnRpb24pCgktIHNvbWUgZml4ZXMgZm9yIGVtYmVkZGVkIGltYWdlcyBkZWNvbXByZXNzaW9uCgktIG1pc2MgY2xlYW51cHMKCgkqIGRsbHMvZDNkOS9kZXZpY2UuYywgZGxscy93aW5lZDNkL2RldmljZS5jLCBkbGxzL3dpbmVkM2QvZGlyZWN0eC5jLAoJICBkbGxzL3dpbmVkM2QvZHJhd3ByaW0uYywgZGxscy93aW5lZDNkL3N0YXRlYmxvY2suYywKCSAgZGxscy93aW5lZDNkL3V0aWxzLmMsIGRsbHMvd2luZWQzZC93aW5lZDNkX3ByaXZhdGUuaCwKCSAgaW5jbHVkZS93aW5lL3dpbmVkM2RfaW50ZXJmYWNlLmg6CglKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJQWRkIHtHLFN9ZXRSZW5kZXJTdGF0ZSBhbmQge0csU31ldFRleHR1cmVTdGFnZVN0YXRlIHN1cHBvcnQsIGFuZAoJZW5zdXJlIHRoZSBzdGF0ZWJsb2NrIGlzIGZ1bGx5IHBvcHVsYXRlZCBhdCBkZXZpY2Ugc3RhcnR1cC4KCgkqIGRsbHMvbXNhY20vcGNtY29udmVydGVyLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglNYWtlIHRoZSBQQ00gY29udmVyc2lvbiByb3V0aW5lcyBvZiBtc2FjbSBwcm9kdWNlIGlkZW50aWNhbCByZXN1bHRzIHRvCgl0aGUgbmF0aXZlIGRsbC4KCUFsbG93IGFueSBQQ00gdG8gUENNIGNvbnZlcnNpb24sIG5vdCBqdXN0IGFkdmVydGlzZWQgb25lcy4KCgkqIGRsbHMvb2xlYXV0MzIvb2FpZGxfcC5jOiBIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCUZpeCBjb21waWxhdGlvbiB3aXRoIEdDQyA0LgoKCSogZGxscy9yc2FlbmgvaW1wbGdsdWUuYywgZGxscy9yc2FlbmgvcnNhZW5oLmMsCgkgIGRsbHMvcnNhZW5oL3Rlc3RzL3JzYWVuaC5jOgoJTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJSW1wbGVtZW50ZWQgQ1BTaWduSGFzaCBhbmQgQ1BWZXJpZnlTaWduYXR1cmUuCglBZGRlZCB0ZXN0cyBmb3IgQ1BWZXJpZnlTaWduYXR1cmUuCglGaXhlZCBtaW5vciBidWdzIGluIGltcGxnbHVlLmMuCgoJKiBkbGxzL21zY21zL2ljYy5jLCBkbGxzL21zY21zL21zY21zLnNwZWMsIGRsbHMvbXNjbXMvbXNjbXNfcHJpdi5oLAoJICBkbGxzL21zY21zL3Byb2ZpbGUuYywgZGxscy9tc2Ntcy90ZXN0cy9wcm9maWxlLmMsIGluY2x1ZGUvaWNtLmg6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCVRlc3QgYW5kIGltcGxlbWVudCBTZXRDb2xvclByb2ZpbGVFbGVtZW50LgoJRG9jdW1lbnQgbW9yZSBmdW5jdGlvbnMuCgoJKiBkbGxzL2lwaGxwYXBpL2lmZW51bS5jLCBkbGxzL2lwaGxwYXBpL2lmZW51bS5oLAoJICBkbGxzL2lwaGxwYXBpL2lwaGxwYXBpX21haW4uYywgZGxscy9pcGhscGFwaS9pcHN0YXRzLmMsCgkgIGRsbHMvaXBobHBhcGkvaXBzdGF0cy5oOgoJSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJLSB1c2UgSGVhcCBmdW5jdGlvbnMgcmF0aGVyIHRoYW4gbGliYyBmb3IgbWVtIGFsbG9jYXRpb24KCS0gZG9jdW1lbnQgYSBidW5jaCBvZiBmdW5jdGlvbnMKCgkqIGRsbHMvc2V0dXBhcGkvcXVldWUuYzogR2VyYWxkIFBmZWlmZXIgPGdlcmFsZEBwZmVpZmVyLmNvbT4KCVVzZSBwcm9wZXIgdHlwZSBmb3IgZm91cnRoIHBhcmFtZXRlciB0byBWZXJRdWVyeVZhbHVlVygpLgoKCSogZm9udHMvd2luZV9jb3VyaWVyLnNmZCwgZm9udHMvd2luZV9zYW5zX3NlcmlmLnNmZCwgZm9udHMvd2luZV9zeXN0ZW0uc2ZkOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBteSBuYW1lIHRvIHRoZSBmb250cyBjb3B5cmlnaHQgc3RyaW5nLgoKCSogZGxscy9kaW5wdXQvam95c3RpY2tfbGludXguYywgZGxscy9kaW5wdXQvam95c3RpY2tfbGludXhpbnB1dC5jLAoJICBkbGxzL2RpbnB1dC9rZXlib2FyZC5jLCBkbGxzL2RpbnB1dC9tb3VzZS5jOgoJQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJSGFuZGxlIGRldmljZSBjbGFzcyBpbiBEWDggZW51bWVyYXRpb24gKGZvdW5kIGJ5IFJvYmVydCBSZWlmKS4KCUZpeGVkIHJlbWFpbmluZyBEWDggZGV2aWNlIHR5cGVzLgoJRmFjdG9yaXplZCBhIGJpdCBHZXRDYXBhYmlsaXRpZXMgZm9yIGtleWJvYXJkIGFuZCBtb3VzZS4KCgkqIGluY2x1ZGUvYW1zdHJlYW0uaWRsLCBpbmNsdWRlL21sYW5nLmlkbDoKCUphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglBZGRlZCBDTXVsdGlMYW5ndWFnZSBhbmQgQU1NdWx0aU1lZGlhU3RyZWFtIGNvY2xhc3MgZGVjbGFyYXRpb25zLgoKCSogZGxscy9nZGkvZnJlZXR5cGUuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBhbHdheXMgZmFsc2UgdGVzdC4gIFNwb3R0ZWQgYnkgRXJpYyBQb3VlY2guCgoJKiBkbGxzL3dpbmVkb3MvaW50MjEuYywgZGxscy9pdHNzL3N0b3JhZ2UuYzoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJRml4ZWQgY29weSZwYXN0ZSBlcnJvci4KCgkqIGRsbHMvZHBsYXl4L2RwbGF5eF9tZXNzYWdlcy5jLCBkbGxzL3dpbmluZXQvdXRpbGl0eS5jOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglGaXhlZCBhcnJheSBpbmRleCBvdmVyZmxvdy4KCgkqIHRvb2xzL3dpbmVtYWtlcjogTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJRml4ZWQgY29tcGlsYXRpb24gd2l0aCBwZXJsIDUuOC4KCjIwMDQtMTItMTAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYywgZGxscy9jb21jdGwzMi90ZXN0cy8uY3ZzaWdub3JlLAoJICBkbGxzL2NvbWN0bDMyL3Rlc3RzL01ha2VmaWxlLmluLCBkbGxzL2NvbWN0bDMyL3Rlc3RzL21ydS5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUltcGxlbWVudCB0aGUgcmVtYWluaW5nIE1SVSBmdW5jdGlvbnMsIGZpeCBhIGNvdXBsZSBvZiBkaWZmZXJlbmNlcwoJZnJvbSBuYXRpdmUgY29tY3RsMzIsIGFkZCB0ZXN0cyBvZiBNUlUgYmVoYXZpb3VyIGFuZCBkb2N1bWVudGF0aW9uLgoKCSogZGxscy9tc3ZjcnQvZmlsZS5jLCBkbGxzL21zdmNydC9tYWluLmMsIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjLAoJICBkbGxzL21zdmNydDQwL21zdmNydDQwLnNwZWM6CglSZWluIEtsYXplcyA8d2lqbkB3YW5hZG9vLm5sPgoJLSBpbXBsZW1lbnQgX19waW9pbmZvLCBfX2JhZGlvaW5mbyBhbmQgX2FkanVzdF9mZGl2CgktIHJlbW92ZSBhbGwgc3R1YnMgb2YgZGF0YSBpdGVtIGZyb20gdGhlIHNwZWMgZmlsZSwgdGhvc2UgYWN0dWFsbHkgbWF5CgkgIGhpZGUgcHJvYmxlbXMuCgoJKiBkbGxzL21zaS9tc2kuYywgZGxscy9tc2kvbXNpcXVlcnkuYywgZGxscy9tc2kvdGFibGUuYzoKCU1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuZGU+CglBZGQgbWlzc2luZyBIZWFwRnJlZSdzIChmb3VuZCBieSBzbWF0Y2gpLgoKMjAwNC0xMi0wOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvdXNlci9jb21iby5jLCBkbGxzL3gxMWRydi93aW5kb3cuYywgZGxscy94MTFkcnYvd2lucG9zLmM6CglBZGRlZCBzb21lIHNhbml0eSBjaGVja3Mgb24gd2luZG93IGRpbWVuc2lvbnMuCgoJKiBkbGxzL250ZGxsL2RpcmVjdG9yeS5jOgoJRml4ZWQgcmVhZF9kaXJlY3RvcnlfZ2V0ZGVudHMgZm9yIGxhcmdlIGRpcmVjdG9yaWVzIChmb3VuZCBieSBSZWluCglLbGF6ZXMpLgoKCSogZGxscy9hZHZhcGkzMi9zZXJ2aWNlLmM6IEFsZXhhbmRlciBZYXdvcnNreSA8eWF3b3Jza3lAbWlndXNvZnQucnU+CglDaGVjayBzZXJ2aWNlIGRhdGFiYXNlIG5hbWUgaW4gT3BlblNDTWFuYWdlcigpLgoKCSogZGxscy9tc3ZjcnQvZmlsZS5jLCBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYzoKCUp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCS0gaW1wbGVtZW50IF9kdXAsIF9kdXAyLCBhbmQgX3BpcGUKCS0gbWFrZSBtYXggZmlsZSBkZXNjcmlwdG9ycyAyMDQ4IHRvIG1hdGNoIE1TCgktIGluY3JlYXNlIG1heCBmaWxlIHN0cmVhbXMgdG8gbWF0Y2gKCgkqIGRsbHMvYXZpZmlsMzIvYXZpZmlsZS5jLCBkbGxzL2NvbWN0bDMyL2RhdGV0aW1lLmMsCgkgIGRsbHMvY29tY3RsMzIvdGFiLmMsIGRsbHMvY29tbWRsZy9wcmludGRsZy5jLCBkbGxzL2QzZDgvZGV2aWNlLmMsCgkgIGRsbHMvZDNkOC9kcmF3cHJpbS5jLCBkbGxzL2QzZDgvdXRpbHMuYywKCSAgZGxscy9kM2Q4L3ZzaGFkZXJkZWNsYXJhdGlvbi5jLCBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsCgkgIGRsbHMvZGRyYXcvZDNkdGV4dHVyZS5jLCBkbGxzL2RkcmF3L2QzZHZlcnRleGJ1ZmZlci5jLAoJICBkbGxzL2RkcmF3L2RzdXJmYWNlL2Zha2V6YnVmZmVyLmMsIGRsbHMvZGRyYXcvbWVzYS5jLAoJICBkbGxzL2RtaW1lL3BlcmZvcm1hbmNlLmMsIGRsbHMvZG1sb2FkZXIvY2xhc3NmYWN0b3J5LmMsCgkgIGRsbHMvZG1sb2FkZXIvbG9hZGVyLmMsIGRsbHMvZHNvdW5kL3NvdW5kM2QuYywgZGxscy9pdHNzL2NobV9saWIuYywKCSAgZGxscy9rZXJuZWwvdGVzdHMvbG9jYWxlLmMsIGRsbHMvbXN2Y3J0L2xvY2suYywKCSAgZGxscy9vbGUzMi9jb21wb3NpdGVtb25pa2VyLmMsIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmMsCgkgIGRsbHMvcXVhcnR6L3N5c3RlbWNsb2NrLmMsIGRsbHMvc2VyaWFsdWkvY29uZmRsZy5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYywgZGxscy91c2VyL21lbnUuYywgZGxscy93aW5hc3BpL3dpbmFzcGkxNi5jLAoJICBkbGxzL3dpbmVkM2QvZGV2aWNlLmMsIGRsbHMvd2luZWQzZC9kaXJlY3R4LmMsCgkgIGRsbHMvd2luZWQzZC9kcmF3cHJpbS5jLCBkbGxzL3dpbmVwcy9nbHlwaGxpc3QuYywKCSAgZGxscy93aW5tbS9tY2l3YXZlL21jaXdhdmUuYywgcHJvZ3JhbXMvcmVnZWRpdC9mcmFtZXduZC5jLAoJICBwcm9ncmFtcy91bmluc3RhbGxlci9tYWluLmMsIHdpbmRvd3Mvd2lucHJvYy5jOgoJSmFuaXRvcmlhbDogQyBib29sZWFucyBtdXN0IG5vdCBiZSBjb21wYXJlZCBhZ2FpbnN0IFRSVUUuCgoJKiBkbGxzL3VzZXIvTWFrZWZpbGUuaW4sIGRsbHMvdXNlci9zeXNwYXJhbXMuYywgZGxscy91c2VyL3VzZXJfbWFpbi5jLAoJICBkbGxzL3VzZXIvdXNlcl9wcml2YXRlLmgsIHdpbmRvd3Mvc3lzbWV0cmljcy5jLCB3aW5kb3dzL3N5c3BhcmFtcy5jOgoJTWVyZ2VkIHN5c3RlbSBtZXRyaWNzIHN1cHBvcnQgaW50byBzeXNwYXJhbXMuYywgYW5kIG1vdmVkIHRoYXQgZmlsZSB0bwoJdGhlIGRsbHMvdXNlciBkaXJlY3RvcnkuCgoJKiBkbGxzL2RtY29tcG9zL2Nob3JkbWFwLmMsIGRsbHMvZG1jb21wb3MvY2hvcmRtYXB0cmFjay5jLAoJICBkbGxzL2RtY29tcG9zL2NvbXBvc2VyLmMsIGRsbHMvZG1jb21wb3MvZG1jb21wb3NfbWFpbi5jLAoJICBkbGxzL2RtY29tcG9zL2RtY29tcG9zX3ByaXZhdGUuaCwgZGxscy9kbWNvbXBvcy9zaWducG9zdHRyYWNrLmM6CglKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCVByb3Blcmx5IGltcGxlbWVudCBEbGxDYW5VbmxvYWROb3cgcmVmIGNvdW50aW5nLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfRXMucmM6CglKb3PpIE1hbnVlbCBGZXJyZXIgT3J0aXogPGptZm8xOTgyQHlhaG9vLmVzPgoJQWRkZWQgc29tZSBTcGFuaXNoIHRyYW5zbGF0aW9ucy4KCgkqIGRsbHMvZ2RpL2dkaTMyLnNwZWMsIHdpbmRvd3Mvbm9uY2xpZW50LmM6CglSZW1vdmUgYSBmZXcgbm8gbG9uZ2VyIG5lZWRlZCAxNi1iaXQgZXhwb3J0cyBmcm9tIGdkaTMyLgoKCSogZGxscy90dHlkcnYvZGMuYywgZGxscy90dHlkcnYvdHR5ZHJ2LmgsIGRsbHMvdHR5ZHJ2L3R0eWRydi5zcGVjLAoJICBkbGxzL3R0eWRydi93bmQuYzoKCVVzZSBhbiBlc2NhcGUgbWVjaGFuaXNtIHNpbWlsYXIgdG8gdGhlIHgxMWRydiBvbmUgdG8gc2V0IHRoZSBEQwoJb3JpZ2luLgoKCSogZGxscy9kM2Q5L2RldmljZS5jLCBkbGxzL3dpbmVkM2QvTWFrZWZpbGUuaW4sIGRsbHMvd2luZWQzZC9kZXZpY2UuYywKCSAgZGxscy93aW5lZDNkL2RyYXdwcmltLmMsIGRsbHMvd2luZWQzZC91dGlscy5jLAoJICBkbGxzL3dpbmVkM2Qvd2luZWQzZF9wcml2YXRlLmgsIGluY2x1ZGUvd2luZS93aW5lZDNkX2ludGVyZmFjZS5oOgoJSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCUFkZCB7RyxTfWV0SW5kaWNlcywge0csU31WaWV3cG9ydCBhbmQgZW5hYmxlIHRoZSBiYXNpYyBkcmF3aW5nCglmdW5jdGlvbmFsaXR5IGludG8gd2luZWQzZCBhbmQgY2FsbCBmcm9tIGQzZDkuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9DYS5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfQ24ucmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0NzLnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9EYS5yYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfRGUucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0VuLnJjLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9Fby5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfRXMucmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0ZpLnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9Gci5yYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfSHUucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0l0LnJjLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9KYS5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfS28ucmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX05sLnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9Oby5yYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfUGwucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX1B0LnJjLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9SdS5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfU2kucmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX1NrLnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9Tdi5yYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfVWsucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX1dhLnJjLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9aaC5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jOgoJS2xlbWVucyBGcmllZGwgPGZyaWs4NUBob3RtYWlsLmNvbT4KCU1vcmUgV2luZG93cy1saWtlIEFib3V0IGRpYWxvZy4KCgkqIGRsbHMvZ2RpL3Rlc3RzL21ldGFmaWxlLmM6IFdhbHQgT2didXJuIDxyZXViZW5AdWdjcy5jYWx0ZWNoLmVkdT4KCUFkZGVkIHNvbWUgdGVzdHMgZm9yIHdpbi1mb3JtYXQgbWV0YWZpbGVzLgoKCSogZGxscy9kZXZlbnVtL21lZGlhY2F0ZW51bS5jOiBDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglJbml0aWFsaXplIHRoZSBoa2V5IG1lbWJlciB3aGVuIGNyZWF0aW5nIHRoZSBwcm9wZXJ5IGJhZyBvYmplY3QuCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZSB0aGUgcmVtYWluaW5nIGRlcGVuZGVuY2llcyBvbiBpbnRlcm5hbCBzdHJ1Y3R1cmVzIGZyb20gSW52b2tlLgoKMjAwNC0xMi0wOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvaW1tMzIvaW1tLmM6CglSZXZlcnQgcHJldmlvdXMgY2hhbmdlIHNpbmNlIGl0IGNhdXNlcyBhIGNyYXNoIGluIGRlc2t0b3AgbW9kZS4KCgkqIGRsbHMvdXNlci9wYWludGluZy5jOiBSZWluIEtsYXplcyA8d2lqbkB3YW5hZG9vLm5sPgoJR2V0VXBkYXRlUmVjdCBjYW4gYmUgY2FsbGVkIHdpdGggYSBOVUxMIHJlY3QuCgoJKiBkbGxzL3VzZXIvbWVzc2FnZS5jLCBkbGxzL3VzZXIvdXNlcjMyLnNwZWMsIGluY2x1ZGUvd2ludXNlci5oOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJU3R1YiBpbXBsZW1lbnRhdGlvbiBmb3IgR2V0TGFzdElucHV0SW5mby4KCgkqIGRsbHMvY29tY3RsMzIvc3lzbGluay5jOiBUaG9tYXMgV2VpZGVubfxsbGVyIDx3M3NlZWtAZ21haWwuY29tPgoJRnJlZSBhbGxvY2F0ZWQgZm9udCBoYW5kbGVzIHdoZW4gY29udHJvbCBpcyBkZXN0cm95ZWQuCgoJKiBkbGxzL3F1YXJ0ei9zeXN0ZW1jbG9jay5jOiBDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglBbGxvY2F0ZSB0aGUgcHJvcGVyIHNpemUgZm9yIHRoZSBTeXN0ZW1DbG9jayBvYmplY3QuCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUdldFR5cGVBdHRyIHNob3VsZCBkZWVwIGNvcHkgdGhlIHR5cGVkZXNjLgoKCSogZGxscy91c2VyL2J1dHRvbi5jLCBkbGxzL3VzZXIvY29tYm8uYywgZGxscy91c2VyL2NvbW0xNi5jLAoJICBkbGxzL3VzZXIvY29udHJvbHMuaCwgZGxscy91c2VyL2Rlc2t0b3AuYywgZGxscy91c2VyL2RpYWxvZzE2LmMsCgkgIGRsbHMvdXNlci9kaXNwbGF5LmMsIGRsbHMvdXNlci9lZGl0LmMsIGRsbHMvdXNlci9mb2N1cy5jLAoJICBkbGxzL3VzZXIvaG9vay5jLCBkbGxzL3VzZXIvaG9vazE2LmMsIGRsbHMvdXNlci9saXN0Ym94LmMsCgkgIGRsbHMvdXNlci9tZW51LmMsIGRsbHMvdXNlci9tZXNzYWdlLmMsIGRsbHMvdXNlci9tZXNzYWdlLmgsCgkgIGRsbHMvdXNlci9tc2cxNi5jLCBkbGxzL3VzZXIvcmVzb3VyY2UuYywgZGxscy91c2VyL3Njcm9sbC5jLAoJICBkbGxzL3VzZXIvc3RhdGljLmMsIGRsbHMvdXNlci90ZXh0LmMsIGRsbHMvdXNlci91aXRvb2xzLmMsCgkgIGRsbHMvdXNlci91c2VyMTYuYywgZGxscy91c2VyL3VzZXJfbWFpbi5jLCBkbGxzL3VzZXIvdXNlcl9wcml2YXRlLmgsCgkgIGRsbHMvdXNlci93bmQxNi5jLCBkbGxzL3gxMWRydi94MTFkcnYuaCwgZGxscy94MTFkcnYveDExZHJ2X21haW4uYywKCSAgaW5jbHVkZS91c2VyLmgsIGluY2x1ZGUvd2luLmgsIHdpbmRvd3MvY2xhc3MuYywgd2luZG93cy9jbGlwYm9hcmQuYywKCSAgd2luZG93cy9jdXJzb3JpY29uLmMsIHdpbmRvd3MvZGNlLmMsIHdpbmRvd3MvZGVmd25kLmMsCgkgIHdpbmRvd3MvZGlhbG9nLmMsIHdpbmRvd3MvaW5wdXQuYywgd2luZG93cy9tZGkuYywgd2luZG93cy9tZXNzYWdlLmMsCgkgIHdpbmRvd3MvbXNnYm94LmMsIHdpbmRvd3Mvbm9uY2xpZW50LmMsIHdpbmRvd3MvcXVldWUuYywKCSAgd2luZG93cy9zY3JvbGwuYywgd2luZG93cy9zcHkuYywgd2luZG93cy9zeXNjb2xvci5jLAoJICB3aW5kb3dzL3N5c21ldHJpY3MuYywgd2luZG93cy9zeXNwYXJhbXMuYywgd2luZG93cy91c2VyLmMsCgkgIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3Mvd2lucG9zLmMsIHdpbmRvd3Mvd2lucHJvYy5jOgoJTW92ZWQgcHJpdmF0ZSBVU0VSIGRlZmluaXRpb25zIHRvIGEgbmV3IHVzZXJfcHJpdmF0ZS5oIGhlYWRlciwgYW5kCglyZW1vdmVkIHRoZSBnbG9iYWwgdXNlci5oLgoKCSogZGxscy9vbGUzMi9jb21wb2JqX3ByaXZhdGUuaCwgZGxscy9vbGUzMi9tYXJzaGFsLmMsIGRsbHMvb2xlMzIvcnBjLmM6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIE1ha2UgdGhlIHdpbmVfbWFyc2hhbF9pZCBzdHJ1Y3R1cmUgbW9yZSBsaWtlIHRoZSBEQ09NIE9CSlJFRgoJICBzdHJ1Y3R1cmUsIGJ5IHJlcGxhY2luZyB0aGUgcHJvY2VzcyBpZCBmaWVsZCBieSBhcGFydG1lbnQgaWQgKE9YSUQpLAoJICBjaGFuZ2luZyB0aGUgdXNlcnMgb2YgdGhlIHByb2Nlc3MgaWQgZmllbGQgdG8gdXNlIHRoZSBuZXcgZmllbGQgYW5kCgkgIHJlbmFtaW5nIHRoZSBvYmplY3RpZCBmaWVsZCB0byBvaWQuCgktIEZpeCBTdGRNYXJzaGFsSW1wbF9Vbm1hcnNoYWxJbnRlcmZhY2UgdG8gaW52YWxpZGF0ZSBhbmQgcmVsZWFzZSBpdHMKCSAgc3R1YiB3aGVuIGRvaW5nIGEgc2FtZSBhcGFydG1lbnQgbWFyc2hhbC4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJRml4IHJldHVybiB2YWx1ZSBvZiBHZXRWYXJJbmRleE9mTWVtSWQuCgoJKiBkbGxzL3VzZXIva2JkMTYuYywgZGxscy91c2VyL21vdXNlMTYuYywgZGxscy91c2VyL3VzZXIxNi5jLAoJICB3aW5kb3dzL2NsaXBib2FyZC5jLCB3aW5kb3dzL2lucHV0LmMsIHdpbmRvd3Mvc3lzY29sb3IuYywKCSAgd2luZG93cy9zeXNtZXRyaWNzLmMsIHdpbmRvd3MvdXNlci5jOgoJTW92ZWQgc29tZSBtb3JlIDE2LWJpdCBVU0VSIGZ1bmN0aW9ucyB0byB0aGUgY29ycmVzcG9uZGluZyAxNi1iaXQKCWZpbGVzLgoKCSogZGxscy91c2VyL01ha2VmaWxlLmluLCBkbGxzL3VzZXIvdXNlcl9tYWluLmMsIGluY2x1ZGUvdXNlci5oLAoJICB3aW5kb3dzL3BhaW50aW5nLmM6CglNb3ZlZCBwYWxldHRlIGZ1bmN0aW9ucyB0byB1c2VyX21haW4uYyBhbmQgcmVtb3ZlZAoJd2luZG93cy9wYWludGluZy5jLgoKCSogZGxscy9udGRsbC9kaXJlY3RvcnkuYzogR2VyYWxkIFBmZWlmZXIgPGdlcmFsZEBwZmVpZmVyLmNvbT4KCUF2b2lkIGEgd2FybmluZyBvbiBGcmVlQlNELgoKCSogZGxscy9hZHZhcGkzMi9hZHZhcGkzMi5zcGVjLCBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglTdHViIGltcGxlbWVudGF0aW9ucyBmb3IgTHNhKFN0b3JlL1JldHJpZXZlKVByaXZhdGVEYXRhLgoKCSogZGxscy9hZHZhcGkzMi9zZXJ2aWNlLmM6IEFsZXhhbmRlciBZYXdvcnNreSA8eWF3b3Jza3lAbWlndXNvZnQucnU+CglOb3RpZnkgU3RhcnRTZXJ2aWNlIHdoZW4gc2VydmljZSBjb250cm9sIGRpc3BhdGNoZXIgaGFzIGJlZW4KCXN0YXJ0ZWQuIE90aGVyd2lzZSBTdGFydFNlcnZpY2UgdGVybWluYXRlcyBzZXJ2aWNlIHByb2Nlc3MuCgoJKiBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYywgaW5jbHVkZS93dHlwZXMuaWRsOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJTWFrZSB0aGUgREVDSU1BTF9TRVRaRVJPIG1hY3JvIHRha2UgYSBERUNJTUFMIGluc3RlYWQgb2YgYSBERUNJTUFMKiBhcwoJaW4gdGhlIE1pY3Jvc29mdCBoZWFkZXJzIGFuZCBmaXggdXAgdGhlIG9ubHkgY2FsbGVyLgoKCSogZGxscy93aW5tbS93aW5lbW0uaCwgZGxscy93aW5tbS93aW5tbS5jLCBpbmNsdWRlL2Rzb3VuZC5oLAoJICBpbmNsdWRlL21tc3lzdGVtLmg6CglHZSB2YW4gR2VsZG9ycCA8Z3ZnQHJlYWN0b3MuY29tPgoJTWF0Y2ggUFNESyBkZWZpbml0aW9ucyBmb3IgTFBDV0FWRUZPUk1BVEVYLgoKCSogZGxscy9zaGx3YXBpL3Rlc3RzL29yZGluYWwuYzoKCVN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJRml4ZWQgdGVzdHMgb2YgR2V0QWNjZXB0TGFuZ3VhZ2VzQSBmb3Igd2luOXgvTUUuCgoJKiBkbGxzL25ldGFwaTMyL25idC5jOiBKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglDb252ZXJ0IHNvbWUgcmVnaXN0cnkgY2FsbHMgZnJvbSBBIHRvIFcuCgoJKiBkbGxzL3VybG1vbi90ZXN0cy91cmwuYywgZGxscy91cmxtb24vdW1vbi5jOgoJSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCS0gSW1wbGVtZW50ZWQgQ3JlYXRlQXN5bmNCaW5kQ3R4LgoJLSBBZGRlZCB0ZXN0LgoKCSogZGxscy93aW5tbS93aW5lamFjay9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS93aW5lamFjay9hdWRpby5jOgoJTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJRml4ZWQgbGlua2luZyBpc3N1ZXMuCgoJKiB0b29scy9jMm1hbi5wbDogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCVBhcmFtIGRlc2NyaXB0aW9ucyBjYW4gYmUgPjEgbGluZXMuCglBbGxvdyAnLScgaW4gY29tbWVudCBuYW1lcywgY29udmVydCBpdCB0byBzcGFjZSBvbiBkaXNwbGF5LgoJQWxsb3cgc3RydWN0IG1lbWJlcnMgdG8gYmUgZG9jdW1lbnRlZCAoYXV0b21hdGljYWxseSwgb25lIGRheSkuCglBbGxvdyBmb3IgbWFueSBjb21tZW50cyB3aGljaCBzdGFydCB3aXRoICJuYW1lIChkbGwub3JkKQoJZGVzY3JpcHRpb24iLgoKCSogaW5jbHVkZS9jb21tY3RybC5oOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJVW5pY29kZSBmaXhlcy4KCgkqIGRsbHMvdXNlci9ob29rLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglJbmRpY2F0ZSB0aGF0IHN1cHBvcnQgZm9yIEhDQlRfU1lTQ09NTUFORCBob29rcyBpcyBpbXBsZW1lbnRlZC4KCjIwMDQtMTItMDcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3VzZXIvdGVzdHMvbXNnLmM6CglBZGRlZCBhIGJ1bmNoIG9mIHRlc3RzIGZvciB2YXJpb3VzIGJlaGF2aW9ycyBvZiBSZWRyYXdXaW5kb3cuCgoJKiBkbGxzL3R0eWRydi93bmQuYywgZGxscy91c2VyL3BhaW50aW5nLmMsIGRsbHMveDExZHJ2L3dpbmRvdy5jLAoJICBkbGxzL3gxMWRydi93aW5wb3MuYywgZGxscy94MTFkcnYveDExZHJ2LmgsIGluY2x1ZGUvd2luLmgsCgkgIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwgc2VydmVyL3Byb3RvY29sLmRlZiwKCSAgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3RyYWNlLmMsIHNlcnZlci93aW5kb3cuYywKCSAgd2luZG93cy9wYWludGluZy5jLCB3aW5kb3dzL3dpbi5jOgoJTW92ZWQgdXBkYXRlIHJlZ2lvbiBoYW5kbGluZyB0byB0aGUgc2VydmVyLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGluY2x1ZGUvY29uZmlnLmguaW4sIHRvb2xzL3dpbmVidWlsZC9tYWluLmMsCgkgIHRvb2xzL3dpbmVnY2Mvd2luZWdjYy5jOgoJUGF1bCBNaWxsYXIgPHBhdWxtQGFzdHJvLmdsYS5hYy51az4KCUNoZWNrIGZvciBmZWF0dXJlcyBtaXNzaW5nIGluIG1pbmd3IGVudmlyb25tZW50LCBhbGxvd2luZyB0b29scwoJc3ViZGlyZWN0b3J5IHRvIGJlIGNyb3NzLWJ1aWx0IGFnYWluLgoKCSogZGxscy9tc3ZjcnQvZmlsZS5jOiBKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglGbHVzaCBmaWxlIGluIGZwdXRjIHdoZW4gY2hhcmFjdGVyIGlzICdcbicuCgoJKiBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGUzMi9jb21wb2JqX3ByaXZhdGUuaCwKCSAgZGxscy9vbGUzMi9tYXJzaGFsLmMsIGRsbHMvb2xlMzIvcnBjLmM6CglNaWtlIEhlYXJuIDxtaEBjb2Rld2VhdmVycy5jb20+CglSZW5hbWUgdGhlIFNUVUJNR1IgdGhyZWFkIHRvIG1vcmUgYWNjdXJhdGVseSByZWZsZWN0IGl0cyBwdXJwb3NlLgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglSZW1vdmUgSW52b2tlJ3MgZGVwZW5kZW5jZSBvbiB0aGUgaW50ZXJuYWwgVExCRnVuY0Rlc2Mgc3RydWN0dXJlLgoJRml4IG1lbW9yeSBsZWFrcyBpbiBzb21lIGZhaWx1cmUgY2FzZXMuCgoJKiB0b29scy93cmMvZ2VucmVzLmM6IFJlbW92ZWQgYW4gdW51c2VkIGZ1bmN0aW9uLgoKCSogZGxscy9udGRsbC9NYWtlZmlsZS5pbiwgZGxscy9udGRsbC9oYW5kbGV0YWJsZS5jLAoJICBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvbnRkbGwvdGVzdHMvcnRsLmMsIGluY2x1ZGUvd2ludGVybmwuaDoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCBoYW5kbGUgdGFibGVzIGFuZCBhZGQgdGVzdHMgZm9yIHRoZW0uCgoJKiBkbGxzL21zY21zL01ha2VmaWxlLmluLCBkbGxzL21zY21zL2ljYy5jLCBkbGxzL21zY21zL21zY21zLnNwZWMsCgkgIGRsbHMvbXNjbXMvbXNjbXNfcHJpdi5oLCBkbGxzL21zY21zL3Byb2ZpbGUuYywKCSAgZGxscy9tc2Ntcy90ZXN0cy9wcm9maWxlLmMsIGluY2x1ZGUvaWNtLmg6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCU1vdmUgSUNDIHByb2ZpbGUgaGFuZGxpbmcgaW50byBpdHMgb3duIGZpbGUuCglUZXN0IEdldENvbG9yUHJvZmlsZUZyb21IYW5kbGUgYW5kIFNldENvbG9yUHJvZmlsZUhlYWRlci4KCVRlc3QgYW5kIHBhcnRpYWxseSBpbXBsZW1lbnQge0csU31ldFN0YW5kYXJkQ29sb3JTcGFjZVByb2ZpbGV7QSxXfS4KCUltcHJvdmUgZXhpc3RpbmcgdGVzdHMgYW5kIGZpeCBhbnkgYnVncyB0aGV5IHJldmVhbGVkLgoKCSogZGxscy9kZXZlbnVtL2NyZWF0ZWRldmVudW0uYywgZGxscy9kZXZlbnVtL2RldmVudW1fbWFpbi5jLAoJICBkbGxzL2RldmVudW0vZGV2ZW51bV9wcml2YXRlLmgsIGRsbHMvZGV2ZW51bS9mYWN0b3J5LmMsCgkgIGRsbHMvZGV2ZW51bS9tZWRpYWNhdGVudW0uYywgZGxscy9kZXZlbnVtL3BhcnNlZGlzcGxheW5hbWUuYzoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUNsZWFuIHVwIGRldmVudW0gYW5kIHByb3Blcmx5IGltcGxlbWVudCBEbGxDYW5VbmxvYWROb3cgcmVmIGNvdW50aW5nLgoKCSogZGxscy93aW5tbS93aW5lamFjay9hdWRpby5jOiBGaXhlZCBjb21waWxlIGVycm9yLgoKCSogZGxscy9kM2Q5L2Jhc2V0ZXh0dXJlLmMsIGRsbHMvZDNkOS9kM2Q5X3ByaXZhdGUuaCwKCSAgZGxscy9kM2Q5L3Jlc291cmNlLmMsIGRsbHMvd2luZWQzZC9NYWtlZmlsZS5pbiwKCSAgZGxscy93aW5lZDNkL2Jhc2V0ZXh0dXJlLmMsIGRsbHMvd2luZWQzZC93aW5lZDNkX3ByaXZhdGUuaCwKCSAgaW5jbHVkZS93aW5lL3dpbmVkM2RfaW50ZXJmYWNlLmg6CglKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJQWRkIEJhc2VUZXh0dXJlIGNsYXNzIHN1cHBvcnQsIGNhbGwgZnJvbSBkM2Q5LgoKCSogZGxscy9jb21jdGwzMi9kYXRldGltZS5jLCBkbGxzL2NvbWN0bDMyL3JlYmFyLmMsCgkgIGRsbHMvY29tY3RsMzIvdG9vbHRpcHMuYzoKCUZpbGlwIE5hdmFyYSA8eG5hdmFyYUB2b2xueS5jej4KCS0gRG9uJ3QgdXNlIERyYXdFZGdlIHdpdGggTlVMTCBkZXZpY2UgY29udGV4dCwgaXQncyBpbnZhbGlkIGNhbGwgYW5kCgkgIHNldHMgbGFzdCBlcnJvci4KCS0gVG9vbHRpcCBpY29ucyBtdXN0IGJlIGRlc3Ryb3llZCB3aXRoIERlc3Ryb3lJY29uIGFuZCBub3Qgd2l0aAoJICBEZWxldGVPYmplY3QuCgktIFJlYmFyIGN1cnNvcnMgbXVzdCBiZSBkZXN0cm95ZWQgd2l0aCBEZXN0cm95Q3Vyc29yIGFuZCBub3Qgd2l0aAoJICBEZWxldGVPYmplY3QuCgoJKiBkbGxzL2FkdmFwaTMyL3NlcnZpY2UuYzogQWxleGFuZGVyIFlhd29yc2t5IDx5YXdvcnNreUBtaWd1c29mdC5ydT4KCUltcGxlbWVudGVkIFJlZ2lzdGVyU2VydmljZUN0cmxIYW5kbGVyLCBDb250cm9sU2VydmljZS4KCgkqIGRsbHMvZHNvdW5kL2Rzb3VuZC5jOiBUb21hcyBWYW5layA8VG9tYXMuVmFuZWtAZmJsLmN6PgoJRml4ZWQgbm8gbWVtb3J5IGNvbmRpdGlvbiB0ZXN0IGluIElEaXJlY3RTb3VuZEltcGxfQ3JlYXRlLgoKCSogZGxscy9rZXJuZWwvc3luYy5jOiBKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglVc2UgVyBjYWxscyByYXRoZXIgdGhhbiBBIGluIENyZWF0ZVBpcGUuCgoJKiBkbGxzL2RpbnB1dC9kaW5wdXRfbWFpbi5jLCBkbGxzL2RpbnB1dC9qb3lzdGlja19saW51eC5jLAoJICBkbGxzL2RpbnB1dC9qb3lzdGlja19saW51eGlucHV0LmM6CglDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglGaXhlZCBlbnVtZXJhdGlvbiBvZiBqb3lzdGlja3MgaW4gRFg4LgoJRml4ZWQgc29tZSB0cmFjZXMuCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUdldEZ1bmNJbmRleE9mTWVtSWQgc2hvdWxkIHJlc3BlY3QgaW52a2luZCBhbmQgcmV0dXJuCglUWVBFX0VfRUxFTUVOVE5PVEZPVU5EIGlmIHRoZSBmdW5jdGlvbiBjYW5ub3QgYmUgZm91bmQuCgoyMDA0LTEyLTA2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy93aW5tbS9qb3lzdGljay5jLCBkbGxzL3dpbm1tL2pveXN0aWNrL01ha2VmaWxlLmluLAoJICBkbGxzL3dpbm1tL2pveXN0aWNrL2pveXN0aWNrLmMsIGRsbHMvd2lubW0vbWVzc2FnZTE2LmMsCgkgIGRsbHMvd2lubW0vbW1zeXN0ZW0uYywgZGxscy93aW5tbS9wbGF5c291bmQuYywgZGxscy93aW5tbS93aW5tbS5jLAoJICBkbGxzL3dpbm1tL21pZGltYXAvbWlkaW1hcC5jLCBkbGxzL3dpbm1tL3dhdmVtYXAvd2F2ZW1hcC5jLAoJICBkbGxzL3dpbm1tL3dpbmVhbHNhL2F1ZGlvLmMsIGRsbHMvd2lubW0vd2luZWFsc2EvYXVkaW9fMDUuYywKCSAgZGxscy93aW5tbS93aW5lYWxzYS9taWRpLmMsIGRsbHMvd2lubW0vd2luZWFydHMvYXVkaW8uYywKCSAgZGxscy93aW5tbS93aW5lYXVkaW9pby9hdWRpby5jLCBkbGxzL3dpbm1tL3dpbmVqYWNrL2F1ZGlvLmMsCgkgIGRsbHMvd2lubW0vd2luZW5hcy9hdWRpby5jLCBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYywKCSAgZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmgsIGRsbHMvd2lubW0vd2luZW9zcy9kc2NhcHR1cmUuYywKCSAgZGxscy93aW5tbS93aW5lb3NzL2RzcmVuZGVyLmMsIGRsbHMvd2lubW0vd2luZW9zcy9taWRpLmMsCgkgIGRsbHMvd2lubW0vd2luZW9zcy9taXhlci5jLCBkbGxzL3dpbm1tL3dpbmVvc3MvbW1hdXguYzoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJRmlsaXAgTmF2YXJhIDx4bmF2YXJhQHZvbG55LmN6PgoJMzIgYml0IGxvdyBsZXZlbCBkcml2ZXJzIG5vdyB1c2UgYSBVbmljb2RlIGludGVyZmFjZSAodXNlZCB0byBiZSBBTlNJKToKCS0gU2VuZCB0aGUgKl9HRVRERVZDQVBTIG1lc3NhZ2VzIGluIHVuaWNvZGUgZm9ybWF0IGZyb20gdGhlCgkgICpHZXREZXZDYXBzVyBmdW5jdGlvbiBhbmQgY2FsbCB0aGUgKkdldERldkNhcHNXIGZyb20gdGhlaXIgcmVzcGVjdGl2ZQoJICBBbnNpIHZlcnNpb25zLgoJLSBNb2RpZnkgYWxsIGxvdyBsZXZlbCBkcml2ZXJzIHRvIGNvcnJlY3RseSBwcm9jZXNzIHRoZSAqX0dFVERFVkNBUFMKCSAgbWVzc2FnZXMgYXMgdW5pY29kZS4KCS0gKl9HRVRERVZDQVBTIG1lc3NhZ2VzIGFyZSBub3cgbWFwcGVkIGZyb20vdG8gdW5pY29kZSBmb3IgMTYgYml0IGNvZGUuCgktIFJlbW92ZWQgYWxsIFNvdW5kQmxhc3RlciBuYW1pbmcgb2xkaWVzLgoJQmV0dGVyIHVzZSBvZiBzb21lIHVuaWNvZGUgZnVuY3Rpb25zIChpbnN0ZWFkIG9mIEFuc2kpIGluIHdpbm1tLgoKCSogZGxscy9kM2Q5L3ZlcnRleHNoYWRlci5jLCBpbmNsdWRlL3VzZXIuaCwgbGlicy91bmljb2RlL3V0ZjguYywKCSAgcHJvZ3JhbXMvd2NtZC9kaXJlY3RvcnkuYywgc2VydmVyL29iamVjdC5jLCBzZXJ2ZXIvdHJhY2UuYywKCSAgdG9vbHMvd2lkbC9wYXJzZXIubCwgdG9vbHMvd2lkbC90eXBlbGliLmMsIHRvb2xzL3dpbmVkdW1wL21haW4uYywKCSAgdG9vbHMvd2luZWR1bXAvbmUuYywgdG9vbHMvd2luZWR1bXAvcGUuYywgdG9vbHMvd2luZWR1bXAvc2VhcmNoLmMsCgkgIHRvb2xzL3dtYy9sYW5nLmMsIHRvb2xzL3dtYy9tY2wuYywgd2luZG93cy9jdXJzb3JpY29uLmMsCgkgIHdpbmRvd3MvZGlhbG9nLmMsIHdpbmRvd3MvbWRpLmMsIHdpbmRvd3Mvc3B5LmM6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCUFub3RoZXIgcm91bmQgb2YgY29uc3QgY29ycmVjdG5lc3MgZml4ZXMuCgoJKiBkbGxzL2ltbTMyL2ltbS5jOiBJdmFuIExlbyBQdW90aSA8cHVvdGlAaW53aW5kLml0PgoJUmVnaXN0ZXIgdGhlIElNRSBjbGFzcyB3aGVuIGltbTMyLmRsbCBpcyBsb2FkZWQuCgoJKiBkbGxzL2FkdmFwaTMyL3Rlc3RzL2NyeXB0LmM6CglTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCUZpeCBtaXNzaW5nIGltcG9ydHMgb24gTlQ0LgoKCSogZGxscy9kc291bmQvcHJvcHNldC5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJUmV0dXJuIHRoZSBhY3R1YWwgZGV2aWNlIGludGVyZmFjZSBuYW1lLgoJRml4ZXMgc29tZSBtZW1vcnkgbGVha3MuCgoJKiBkbGxzL3gxMWRydi9rZXlib2FyZC5jOiBKZWFuLU1pY2hlbCBEYXVsdCA8am1kYXVsdEBtYW5kcmFrZXNvZnQuY29tPgoJQWRkZWQgYW5vdGhlciBDYW5hZGlhbiBrZXlib2FyZCBsYXlvdXQuCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmM6IEZpeGVkIGEgbGVhayBpbiBnZXRzb2NrbmFtZS4KCVJlcGxhY2VkIG1hbGxvYyBieSBIZWFwQWxsb2MuCgoJKiBkbGxzL250ZGxsL2RpcmVjdG9yeS5jOgoJVXNlIGEgZGlyZWN0IGdldGRlbnRzIHN5c2NhbGwgb24gTGludXggdG8gYXZvaWQgcmVseWluZyBvbgoJaW1wbGVtZW50YXRpb24gZGV0YWlscyBvZiBzZWVrZGlyL3RlbGxkaXIuCgoJKiB0b29scy9mbnQyYmRmLmMsIHRvb2xzL3dpbmVkdW1wL3BlLmMsIHRvb2xzL3dpbmVnY2Mvd2luZWdjYy5jLAoJICB0b29scy93cmMvZHVtcHJlcy5jLCB0b29scy93cmMvZ2VucmVzLmMsIHRvb2xzL3dyYy9yZWFkcmVzLmM6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCUFub3RoZXIgY291cGxlIG9mIG1pc3Npbmcgc3RhdGljIGRlZmluaXRpb25zLgoKCSogZG9jdW1lbnRhdGlvbi9jb25maWd1cmluZy5zZ21sLCBkb2N1bWVudGF0aW9uL2ZhcS5zZ21sLAoJICBkb2N1bWVudGF0aW9uL3J1bm5pbmcuc2dtbDoKCURpZWdvIFBldHRlbvIgPGZsYW1lZXllc0B1c2Vycy5iZXJsaW9zLmRlPgoJVXBkYXRlZCB0aGUgZG9jdW1lbnRhdGlvbiB0ZWxsaW5nIHRvIHVzZSB0aGUKCUhLRVlfQ1VSUkVOVF9VU0VSL0Vudmlyb25tZW50IGtleSBpbnN0ZWFkIG9mIHRoZSBbd2luZV0gc2VjdGlvbiBmb3IKCVBhdGgsIFRlbXAgYW5kIFN5c3RlbSB2YXJpYWJsZXMuCgoJKiBkbGxzL3VzZXIvdGVzdHMvbXNnLmMsIGRsbHMveDExZHJ2L3dpbnBvcy5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVNob3dXaW5kb3cgYWN0aXZhdGVzIG9ubHkgYSBiZWluZyBtYXhpbWl6ZWQgY2hpbGQgd2luZG93LCBhZGQgYSBjb3VwbGUKCW9mIG1lc3NhZ2UgdGVzdHMgZm9yIE1ESSBjaGlsZCBhY3RpdmF0aW9uLgoKCSogcHJvZ3JhbXMvd2luZWRiZy9kZWJ1Z2dlci5oLCBwcm9ncmFtcy93aW5lZGJnL21lbW9yeS5jOgoJSmVyZW15IFdoaXRlIDxqd2hpdGVAY29kZXdlYXZlcnMuY29tPgoJUHJvcGVybHkgcmVzcGVjdCBhIGRpc2Fzc2VtYmxlIHgseSBjb21tYW5kIChwcmlvciBiZWhhdmlvciB3b3VsZCBkbwoJeS14IGluc3RydWN0aW9ucywgbm8gbWF0dGVyIGhvdyB3aWRlIGVhY2ggaW5zdHJ1Y3Rpb24gd2FzKS4KCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywgZGxscy9kZHJhdy9kZHJhdy9oYWwuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBdm9pZCBjcmFzaGVzIGluIGRkcmF3LmRsbCB3aGVuIGxvYWRpbmcgaXQgd2l0aG91dCB4MTFkcnYsIGZvcgoJaW5zdGFuY2UgZnJvbSB3aW5lcHJlZml4Y3JlYXRlIGluIGEgdGV4dCBtb2RlIGNvbnNvbGUuCgoJKiBkbGxzL3NldHVwYXBpL2Rldmluc3QuYywgZGxscy9zZXR1cGFwaS9zZXR1cGFwaS5zcGVjOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJU3R1YiBpbXBsZW1lbnRhdGlvbiBmb3IgU2V0dXBEaU9wZW5EZXZpY2VJbnRlcmZhY2UuCgoJKiBkbGxzL21zaS9yZWNvcmQuYzogVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hAY29kZXdlYXZlcnMuY29tPgoJU2V0IHRoZSBvdXQgYnVmZmVyIGNvdW50IHRvIHplcm8gb24gcmVhZCBlcnJvci4KCgkqIGRsbHMvbXNpL3RhYmxlLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCB0cmFuc3Bvc2l0aW9uIG9mIDQgYnl0ZSB2YWx1ZXMgd2hlbiByZWFkaW5nIGluIHRhYmxlIGRhdGEgZnJvbQoJc3RvcmFnZS4KCgkqIGRsbHMvYWR2YXBpMzIvYWR2YXBpMzIuc3BlYywgZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jLAoJICBkbGxzL2FkdmFwaTMyL3NlcnZpY2UuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVN0dWIgaW1wbGVtZW50YXRpb25zIGZvciBEZWNyeXB0RmlsZSwgRW5jcnlwdEZpbGUgYW5kCglHZXRTZXJ2aWNlRGlzcGxheU5hbWUuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmM6IEVyaWMgS29obCA8ZXJpYy5rb2hsQHQtb25saW5lLmRlPgoJRHJhd1N0YXR1c1RleHQoKSBtdXN0IG5vdCBwcm9jZXNzIHByZWZpeCBjaGFyYWN0ZXJzLgoKCSogcHJvZ3JhbXMvbm90ZXBhZC9kaWFsb2cuYzogSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJU2VuZCBFTV9TRVRNT0RJRlkgYWZ0ZXIgc2F2aW5nLgoKCSogZGxscy9tc3ZjcnQvZmlsZS5jOiBKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglTZXQgc3RfbW9kZSBiaXRzIGluIF9mc3RhdGk2NC4KCgkqIGluY2x1ZGUvd2ludXNlci5oOiBS6W1pIEFzc2FpbGx5IDxyZW1pLmFzc2FpbGx5QGZyZWUuZnI+CglBZGRlZCB0d28gbWlzc2luZyBzdHlsZXMuCgoJKiBkbGxzL2QzZDgvc2hhZGVyLmM6IENocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCVMvVyB2c2hhZGVyIGZpeGVzIChzcG90dGVkIGJ5IEVyaWMgUG91ZWNoKS4KCgkqIHdpbmRvd3MvbWRpLmM6IEZpbGlwIE5hdmFyYSA8eG5hdmFyYUB2b2xueS5jej4KCURvbid0IGNhbGwgU2V0U2Nyb2xsSW5mbyB3aXRoIFNCX0JPVEggYmFyIHR5cGUuCgoJKiBkbGxzL2NhYmluZXQvZmRpLmM6IEZpbGlwIE5hdmFyYSA8eG5hdmFyYUB2b2xueS5jej4KCURvbid0IHRyeSB0byBmcmVlIHBvaW50ZXIgZnJvbSB1bmlvbiB0aGF0IGlzbid0IHVzZWQuCgoJKiBkbGxzL21zdmNydC9wcm9jZXNzLmM6IEp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCW1zdmNydF9zcGF3biBzaG91bGQgZnJlZSBTVEFSVFVQSU5GT0EncyBscFJlc2VydmVkMiwgbm90IGl0cyBhZGRyZXNzLgoKCSogZGxscy93aW50YWIzMi9jb250ZXh0LmM6IFJvYmVydCBOb3J0aCA8N293bnEwazQwMkBzbmVha2VtYWlsLmNvbT4KCVNldCB0aGUgdmFsdWVzIFdUSW5mb0EgcmV0dXJucyBmcm9tIHNjcmVlbiBzaXplIGZvciBDVFhfU1lTRVhUWCBhbmQKCUNUWF9TWVNFWFRZIGNvbnRleHQgZmllbGRzLCB0byBtYXRjaCBXaW5kb3dzIGJlaGF2aW91ci4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBpbmNsdWRlL2NvbmZpZy5oLmluOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJUmVtb3ZlIHNvbWUgdW51c2VkIHRlc3RzLgoKCSogZGxscy9vbGUzMi9jbGlwYm9hcmQuYywgZGxscy9vbGUzMi9vbGUyLmMsIGRsbHMvcmljaGVkaXQvcmljaGVkaXQuYywKCSAgZGxscy9zZXR1cGFwaS92aXJ0Y29weS5jLCBkbGxzL3NoZWxsMzIvc2hsdmlldy5jLAoJICBkbGxzL3NoZWxsMzIvc3lzdHJheS5jLCBkbGxzL3VzZXIvdGVzdHMvaW5wdXQuYywKCSAgcHJvZ3JhbXMvcnVuZGxsMzIvcnVuZGxsMzIuYywgcHJvZ3JhbXMvdmlldy9pbml0LmM6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglSZW1vdmUgdW5uZWNlc3NhcnkgV05EUFJPQyBjYXN0cy4KCgkqIGRsbHMvcXVhcnR6L2ZpbHRlcmdyYXBoLmM6IENocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUJldHRlciBoYW5kbGluZyBvZiBlcnJvcnMgaW4gUmVuZGVyRmlsZS4KCgkqIGRsbHMvc2hlbGwzMi90ZXN0cy9zaGxmaWxlb3AuYzoKCVN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJRml4IG1pc3NpbmcgaW1wb3J0cyBvZiB0aGUgdGVzdCBwcm9ncmFtIG9uIE5UNC4KCgkqIGluY2x1ZGUvb2JqYmFzZS5oOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglSZW1vdmUgZHVwbGljYXRlIGZ1bmN0aW9uIGRlY2xhcmF0aW9uLgoKCSogZGxscy9kc291bmQvYnVmZmVyLmMsIGRsbHMvZHNvdW5kL3Byb3BzZXQuYzoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglBbHdheXMgY3JlYXRlIGEgcHJvcGVydHkgc2V0IGZvciBzZWNvbmRhcnkgYnVmZmVycy4KCgkqIGRsbHMvZGJnaGVscC9wZV9tb2R1bGUuYzogSmFtZXMgSGF3a2lucyA8dHJ1aWtlbkBnbWFpbC5jb20+CglSZW1vdmUgYysrLXN0eWxlIGNvbW1lbnQuCgoJKiBkbGxzL3dpbmluZXQvaHR0cC5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglNYWtlIHN1cmUgdG8gaW5zZXJ0IHRoZSBwcm94eSBhdXRoZW50aWNhdGlvbiBoZWFkZXIgaWYgbmVjZXNzYXJ5LgoKCSogZGxscy9udGRsbC90aW1lLmM6IFN0ZXdhcnQgQWxsZW4gPHNyYWxsZUBtd2ViLmNvLnphPgoJQWRkZWQgU0FTVCAoU291dGggQWZyaWNhbiBTdGFuZGFyZCBUaW1lKSwgY29ycmVjdGVkIENBVCB0byBDZW50cmFsCglBZnJpY2FuIFRpbWUuCgoJKiBkbGxzL2tlcm5lbC9jb21wdXRlcm5hbWUuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVBlcmZvcm0gaG9zdCBuYW1lIGluaXRpYWxpemF0aW9uIGlmIGNvbXB1dGVyIG5hbWUgY2FuJ3QgYmUgcmVhZCBmcm9tCglyZWdpc3RyeS4KCgkqIGRsbHMvcnNhZW5oL2ltcGxnbHVlLmM6IE1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCUFkZGVkIGEgbWlzc2luZyBicmVhayBpbiBlbmNyeXB0X2Jsb2NrX2ltcGwuCgoJKiBkbGxzL2FkdmFwaTMyL3NlcnZpY2UuYzogQWxleGFuZGVyIFlhd29yc2t5IDx5YXdvcnNreUBtaWd1c29mdC5ydT4KCUltcGxlbWVudGVkIFNldFNlcnZpY2VTdGF0dXMsIFF1ZXJ5U2VydmljZVN0YXR1cy4KCgkqIGRsbHMvYWR2YXBpMzIvdGVzdHMvY3J5cHQuYzogSmFtZXMgSGF3a2lucyA8dHJ1aWtlbkBnbWFpbC5jb20+CglPbmx5IGNhbGwgdGVzdF9zZXRfcHJvdmlkZXJfZXgoKSBvbmNlLgoKCSogZGxscy9zaGVsbDMyL3ZlcnNpb24uaDogSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJUmV2ZXJ0IHNoZWxsMzIgdmVyc2lvbiB0byBXaW4ySyBTUDQgbGV2ZWwuCgoyMDA0LTEyLTAyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglBbGxvY2F0ZSB0aGUgVFlQRUFUVFIgcmF0aGVyIHRoYW4gY29weWluZyBpdC4KCUZvciBhIGR1YWwgaW50ZXJmYWNlIHRoZSBkaXNwaW50ZXJmYWNlJ3MgY2Z1bmNzIHNob3VsZCBpbmNsdWRlIHRoZQoJaW5oZXJpdGVkIGZ1bmN0aW9ucywgY2JTaXplVmZ0IHNob3VsZCBqdXN0IGJlIHRoZSBzaXplIG9mIElEaXNwYXRjaCdzCgl2dGJsIGFuZCB3ZSBzaG91bGQgc3RyaXAgVFlQRUZMQUdfRk9MRUFVVE9NQVRJT04uCgoJKiBkb2N1bWVudGF0aW9uL1BBQ0tBR0lORzogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCVNwZWxsaW5nL2dyYW1tYXIgZml4ZXMuCgoJKiB0b29scy9mb250X2NvbnZlcnQuc2g6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglVc2UgbWt0ZW1wIGlmIHdlIGRvbid0IGhhdmUgdGVtcGZpbGUuCglVc2UgdGhlIGluc3RhbGxlZCB2ZXJzaW9uIG9mIGZudDJiZGYgaWYgcHJlc2VudC4KCVF1b3RlIHRoZSBwYXR0ZXJuIGdpdmVuIHRvIGBmaW5kYC4KCUNvcHkgdGhlIGZvbnRzIHRvIHRoZSB0ZW1wIHdvcmtpbmcgZGlyIGJlZm9yZSBwcm9jZXNzaW5nLgoJQWx3YXlzIGRlbGV0ZSB0aGUgdGVtcCBkaXJlY3RvcnkgYmVmb3JlIGV4aXRpbmcuCglJbnN0YWxsIGZvbnRzIGNvbXByZXNzZWQgYnkgZGVmYXVsdC4KCgkqIGRsbHMvYWR2YXBpMzIvc2VydmljZS5jOiBBbGV4YW5kZXIgWWF3b3Jza3kgPHlhd29yc2t5QG1pZ3Vzb2Z0LnJ1PgoJQmFzaWMgaW1wbGVtZW50YXRpb24gb2Ygc2VydmljZSBjb250cm9sIGRpc3BhdGNoZXIuCgoJKiB0b29scy93aW5lYnVpbGQvbWFpbi5jLCB0b29scy93aW5lZ2NjL3dpbmVnY2MuYzoKCUNsZWFuIHVwIHRlbXAgZmlsZXMgYWxzbyB3aGVuIGtpbGxlZCBieSBhIHNpZ25hbC4KCgkqIGRsbHMvbXN2Y3J0L2NwcGV4Y2VwdC5jLCBkbGxzL21zdmNydC9leGNlcHQuYywKCSAgZGxscy9tc3ZjcnQvdGVzdHMvY3BwLmMsIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYywKCSAgZGxscy9udGRsbC92aXJ0dWFsLmMsIGxpYnMvd2luZS9sZHQuYywgbG9hZGVyL2t0aHJlYWQuYywKCSAgbG9hZGVyL3ByZWxvYWRlci5jLCBzZXJ2ZXIvZmQuYzoKCVBldGVyIENoYXBtYW4gPDlnZnJ5ZTIwMkBzbmVha2VtYWlsLmNvbT4KCUZpeCB1cCBzZXZlcmFsIGlubGluZSBhc3NlbWJsZXIgYmxvY2tzIHNvIHRoYXQgdGhleSBwcm9kdWNlIGNvcnJlY3QKCWNvZGUgd2l0aCB0aGUgLWZvbWl0LWZyYW1lLXBvaW50ZXIgZ2NjIGZsYWcuCgoJKiBkbGxzL2FkdnBhY2svYWR2cGFjay5jLCBkbGxzL3NldHVwYXBpL01ha2VmaWxlLmluLAoJICBkbGxzL3NldHVwYXBpL2Rldmluc3QuYywgZGxscy9zZXR1cGFwaS9wYXJzZXIuYywKCSAgZGxscy9zZXR1cGFwaS9zZXR1cGFwaS5zcGVjLCBkbGxzL3NldHVwYXBpL3N0dWJzLmMsCgkgIGluY2x1ZGUvc2V0dXBhcGkuaDoKCUVyaWMgS29obCA8ZXJpYy5rb2hsQHQtb25saW5lLmRlPgoJSW1wbGVtZW50IFNldHVwRGlCdWlsZENsYXNzSW5mb0xpc3QoRXhXKSwKCVNldHVwRGlDbGFzc0d1aWRzRnJvbU5hbWUoVy9FeFcpLCBTZXR1cERpQ2xhc3NOYW1lRnJvbUd1aWQoVy9FeFcpLAoJU2V0dXBEaUdldEFjdHVhbFNlY3Rpb25Ub0luc3RhbGxXLCBTZXR1cERpR2V0Q2xhc3NEZXNjcmlwdGlvbihXL0V4VyksCglTZXR1cERpSW5zdGFsbENsYXNzVyBwYXJ0aWFsbHksIFNldHVwRGlPcGVuQ2xhc3NSZWdLZXkoRXhXKSwKCVNldHVwT3Blbk1hc3RlckluZi4KCgkqIGRsbHMva2VybmVsL3N5bmMuYywgZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL250ZGxsL3N5bmMuYywKCSAgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLCBpbmNsdWRlL3dpbnRlcm5sLmgsIHNlcnZlci9ldmVudC5jLAoJICBzZXJ2ZXIvbXV0ZXguYywgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3NlbWFwaG9yZS5jLAoJICBzZXJ2ZXIvdGltZXIuYywgc2VydmVyL3RyYWNlLmM6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCS0gbW92ZWQgZXZlbnQsIHNlbWFwaG9yZSwgbXV0ZXggaW1wbGVtZW50YXRpb24gZnJvbSBrZXJuZWwzMiB0byBudGRsbAoJLSBhZGRlZCBtdXRhbnQgaW1wbGVtZW50YXRpb24gaW4gbnRkbGwsIGFuZCB1c2UgaXQgZm9yIG11dGV4CgkgIGltcGxlbWVudGF0aW9uIGluIGtlcm5lbDMyCgktIGFkZGVkIGFjY2VzcyBwYXJhbWV0ZXIgb24gZXZlbnQsIHNlbWFwaG9yZSwgdGltZXIgY3JlYXRpb24gaW4KCSAgd2luZXNlcnZlciAoYXMgbnRkbGwgaW50ZXJmYWNlIHJlcXVpcmVzIGl0KQoJLSBhZGRlZCBtaXNzaW5nIGRlZmluaXRpb25zIGluIGluY2x1ZGUvd2ludGVybmwuaAoKCSogZGxscy9jYWJpbmV0L2NhYmV4dHJhY3QuYzogSmFtZXMgSGF3a2lucyA8dHJ1aWtlbkBnbWFpbC5jb20+CglGaXggY2FiZXh0cmFjdCBtZW1vcnkgbGVhay4KCjIwMDQtMTItMDEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBBTk5PVU5DRSwgQ2hhbmdlTG9nLCBWRVJTSU9OLCBjb25maWd1cmU6IFJlbGVhc2UgMjAwNDEyMDEuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjIwMDQtMTItMDEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC90aHJlYWQuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFsd2F5cyBjcmVhdGUgYSBzdXNwZW5kZWQgdGhyZWFkIGluIENyZWF0ZVRocmVhZCBhbmQgcmVzdW1lIGl0IGlmCglDUkVBVEVfU1VTUEVOREVEIGZsYWcgaXMgbm90IHNldCBhcyBXaW5kb3dzIGRvZXMuCgoJKiBkbGxzL3JzYWVuaC9pbXBsZ2x1ZS5jLCBkbGxzL3JzYWVuaC9yc2FlbmguYzoKCU1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCU1vdmVkIGNvZGUgc3BlY2lmaWMgdG8gQ1BHZW5LZXksIENQRGVyaXZlS2V5IG9yIENQSW1wb3J0S2V5IGZyb20KCW5ld19rZXkgaW50byB0aGUgcmVzcGVjdGl2ZSBmdW5jdGlvbnMuCgoJKiBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGUzMi9tYXJzaGFsLmMsIGRsbHMvb2xlMzIvb2xlMzIuc3BlYywKCSAgaW5jbHVkZS9vYmpiYXNlLmg6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIEFkZCBzb21lIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucyB0byBvYmpiYXNlLmguCgktIEFkZCBzdHVicyBmb3Igc2VydmVyIHJlZiBjb3VudGluZy4KCS0gSW1wbGVtZW50IEhSRVNVTFQgbWFyc2hhbGluZy4KCgkqIGRsbHMvd2lubW0vbG9sdmxkcnYuYzogRmlsaXAgTmF2YXJhIDx4bmF2YXJhQHZvbG55LmN6PgoJLSBDaGVjayB0aGUgcmV0dXJuIHZhbHVlIGZyb20gKl9HRVROVU1ERVZTIG1lc3NhZ2UgYXMgcGVyIEtCOTA1NjIuCgktIEZpeCB0eXBvIGluIE1NRFJWX0luc3RhbGxNYXAuCgoJKiBkbGxzL2FkdmFwaTMyL3NlcnZpY2UuYzogQWxleGFuZGVyIFlhd29yc2t5IDx5YXdvcnNreUBtaWd1c29mdC5ydT4KCUludHJvZHVjZWQgc2VydmljZSB0aHJlYWQuCgoJKiBpbmNsdWRlL3dpbmdkaS5oOiBS6W1pIEFzc2FpbGx5IDxyZW1pLmFzc2FpbGx5QGZyZWUuZnI+CglBZGQgc29tZSBtaXJyb3JpbmcgZGVmaW5lcy4KCgkqIGRsbHMvdXNlci90ZXh0LmM6IEJpbGwgTWVkbGFuZCA8YmlsbG1lZGxhbmRAbWVyY3VyeXNwZWVkLmNvbT4KCUlmIHRoZSBidWZmZXIgaXMgbm8gbG9uZ2VyIHN0YXRpYyB0aGUgbmFtZXMgc2hvdWxkIHJlZmxlY3QgdGhhdC4KCUFsc28gbWluaW1pc2UgdGhlIHVzZSBvZiB0aGUgY29uc3RhbnQuCgoJKiBkbGxzL2FkdmFwaTMyL2FkdmFwaS5jLCBkbGxzL2FkdmFwaTMyL2FkdmFwaTMyLnNwZWM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBhIHN0dWIgaW1wbGVtZW50YXRpb24gZm9yIEdldEN1cnJlbnRId1Byb2ZpbGVXLgoKCSogZGxscy9jb21jdGwzMi9hbmltYXRlLmM6IFVscmljaCBDemVrYWxsYSA8dWxyaWNoQGNvZGV3ZWF2ZXJzLmNvbT4KCVByZXZlbnQgdGhlIGFuaW1hdGlvbiB0aHJlYWQgZnJvbSB3YWl0aW5nIG9uIGl0c2VsZiB3aGVuIGl0IHN0b3BzLgoKMjAwNC0xMS0zMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvYWR2YXBpMzIvcmVnaXN0cnkuYywgZGxscy9hZHZhcGkzMi9zZXJ2aWNlLmMsCgkgIGRsbHMvYWR2YXBpMzIvdGVzdHMvcmVnaXN0cnkuYywgZGxscy9jYWJpbmV0L2NhYmV4dHJhY3QuYywKCSAgZGxscy9jcnlwdDMyL21haW4uYywgZGxscy9kM2Q4L2RldmljZS5jLCBkbGxzL2QzZDgvZHJhd3ByaW0uYywKCSAgZGxscy9kM2Q4L3NoYWRlci5jLCBkbGxzL2QzZDgvdnNoYWRlcmRlY2xhcmF0aW9uLmMsCgkgIGRsbHMvZDNkOS9waXhlbHNoYWRlci5jLCBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsCgkgIGRsbHMvZGRyYXcvZDNkbGlnaHQuYywgZGxscy9kZHJhdy9oZWxwZXIuYywKCSAgZGxscy9kZXZlbnVtL2RldmVudW1fbWFpbi5jLCBkbGxzL2RwbGF5eC9kcGxvYmJ5LmMsCgkgIGRsbHMvZHBuZXQvYWRkcmVzcy5jLCBkbGxzL2dkaS9kcml2ZXIuYywKCSAgZGxscy9nZGkvZW5obWZkcnYvZ3JhcGhpY3MuYywgZGxscy9nZGkvdGVzdHMvbWV0YWZpbGUuYywKCSAgZGxscy9pbW0zMi9pbW0uYywgZGxscy9tc2Rtby9kbW9yZWcuYywgZGxscy9tc3ZjcnQvZGlyLmMsCgkgIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL3N0b3JhZ2UuYywgZGxscy9vbGUzMi9zdG9yYWdlMzIuYywKCSAgZGxscy9vbGVhdXQzMi90eXBlbGliMi5jLCBkbGxzL29sZWRsZy9pbnNvYmpkbGcuYywKCSAgZGxscy9vcGVuZ2wzMi93Z2wuYywgZGxscy9xdWFydHovYXZpc3BsaXQuYywKCSAgZGxscy9xdWFydHovZmlsdGVybWFwcGVyLmMsIGRsbHMvcnBjcnQ0L2Nwcm94eS5jLAoJICBkbGxzL3JwY3J0NC9uZHJfbWFyc2hhbGwuYywgZGxscy9zZXR1cGFwaS9pbnN0YWxsLmMsCgkgIGRsbHMvc2hlbGwzMi9jaGFuZ2Vub3RpZnkuYywgZGxscy9zaGVsbDMyL2RlYnVnaGxwLmMsCgkgIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLAoJICBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmMsIGRsbHMvc2hlbGwzMi9zaHBvbGljeS5jLAoJICBkbGxzL3NobHdhcGkvY2xpc3QuYywgZGxscy9zaGx3YXBpL3VybC5jLCBkbGxzL3VzZXIvZXh0aWNvbi5jLAoJICBkbGxzL3VzZXIvbXNnMTYuYywgZGxscy91c2VyL3Jlc291cmNlLmMsIGRsbHMvdmVyc2lvbi9yZXNvdXJjZS5jLAoJICBkbGxzL3dpbmVkb3MvcHBkZXYuYywgZGxscy93aW5lcHMvZXNjYXBlLmMsIGRsbHMvd2luZXBzL2luaXQuYywKCSAgZGxscy93aW5tbS9tY2kuYywgZGxscy93aW5zcG9vbC9pbmZvLmMsIGRsbHMveDExZHJ2L2RpYi5jLAoJICBkbGxzL3gxMWRydi9kaWJfY29udmVydC5jLCBkbGxzL3gxMWRydi9kaWJfZHN0X3N3YXAuYywKCSAgZGxscy94MTFkcnYvZGliX3NyY19zd2FwLmMsIGRsbHMveDExZHJ2L2luaXQuYywgZGxscy94MTFkcnYvb3BlbmdsLmMsCgkgIGRsbHMveDExZHJ2L3BhbGV0dGUuYywgZGxscy94MTFkcnYveGZvbnQuYywgZGxscy94MTFkcnYveHJlbmRlci5jLAoJICBpbmNsdWRlL3dpbmUvc2VydmVyLmgsIGxpYnMvdW5pY29kZS9jcHRhYmxlLmMsIGxpYnMvdW5pY29kZS93Y3RvbWIuYywKCSAgcHJvZ3JhbXMvcnBjc3MvZXBtYXBfc2VydmVyLmMsIHByb2dyYW1zL3Rhc2ttZ3IvZGJnY2hubC5jLAoJICBwcm9ncmFtcy91bmluc3RhbGxlci9tYWluLmMsIHByb2dyYW1zL3dpbmVmaWxlL3dpbmVmaWxlLmMsCgkgIHByb2dyYW1zL3dpbmVtZW51YnVpbGRlci93aW5lbWVudWJ1aWxkZXIuYywgc2VydmVyL2RlYnVnZ2VyLmMsCgkgIHNlcnZlci9yZWdpc3RyeS5jOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglDb25zdCBjb3JyZWN0bmVzcyBmaXhlcy4KCgkqIHdpbmRvd3MvbXNnYm94LmM6IEl2YW4gTGVvIFB1b3RpIDxwdW90aUBpbndpbmQuaXQ+CglJbXBsZW1lbnQgdGFzayBtb2RhbCBtZXNzYWdlIGJveGVzLgoKCSogZGxscy91cmxtb24vc2VjX21nci5jLCBkbGxzL3VybG1vbi91bW9uLmMsIGRsbHMvdXJsbW9uL3VybG1vbi5zcGVjLAoJICBkbGxzL3VybG1vbi91cmxtb25fbWFpbi5jLCBkbGxzL3VybG1vbi91cmxtb25fbWFpbi5oLAoJICBpbmNsdWRlL3VybG1vbi5pZGw6CglKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJLSBBZGRlZCBzdHViIGltcGxlbWVudGF0aW9uIG9mIElJbnRlcm5ldFpvbmVNYW5hZ2VyIGludGVyZmFjZS4KCS0gQWRkZWQgaW1wbGVtZW50YXRpb24gb2YgQ29JbnRlcm5ldENyZWF0ZVpvbmVNYW5hZ2VyIGZ1bmN0aW9uLgoJLSBBZGRlZCBzdHViIGltcGxlbWVudGF0aW9uIG9mIFVybE1rR2V0U2Vzc2lvbk9wdGlvbiBhbmQgY29ycmVjdGVkCgkgIGRlY2xhcmF0aW9uIG9mIFVybE1rU2V0U2Vzc2lvbk9wdGlvbi4KCS0gQ29kZSBjbGVhbnVwLgoKCSogZGxscy9tc2Ntcy9oYW5kbGUuYywgZGxscy9tc2Ntcy9tc2Ntcy5zcGVjLCBkbGxzL21zY21zL21zY21zX3ByaXYuaCwKCSAgZGxscy9tc2Ntcy9wcm9maWxlLmMsIGRsbHMvbXNjbXMvdGVzdHMvcHJvZmlsZS5jLCBpbmNsdWRlL2ljbS5oOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglJbmZyYXN0cnVjdHVyZSBmb3IgaGFuZGxpbmcgSUNDIHByb2ZpbGVzLgoJQWx3YXlzIGxvYWQgY29sb3IgcHJvZmlsZXMgaW50byBtZW1vcnkuCglJbXBsZW1lbnQgYW5kIHRlc3QgR2V0Q29sb3JQcm9maWxlRWxlbWVudCBhbmQgR2V0Q29sb3JQcm9maWxlSGVhZGVyLgoJSW1wbGVtZW50IEdldENvbG9yUHJvZmlsZUZyb21IYW5kbGUgYW5kIFNldENvbG9yUHJvZmlsZUhlYWRlci4KCgkqIGRsbHMvd2luZWQzZC9kZXZpY2UuYzogQWRhbSBELiBNb3NzIDxhZGFtQGdpbXAub3JnPgoJRml4IGNvbXBpbGF0aW9uLgoKCSogcHJvZ3JhbXMvd2luZWNmZy93aW5lY2ZnLmM6IEdlcmFsZCBQZmVpZmVyIDxnZXJhbGRAcGZlaWZlci5jb20+CglBZ2FpbiByZW5hbWUgZ2V0a2V5KCkgYW5kIHNldGtleSgpIGZvciBGcmVlQlNELgoKCSogZGxscy93aW5lcHMvYml0bWFwLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglGb3IgYSAxNS8xNiBicHAgZGliIHdlIHNlbmQgUkdCIHRyaXBsZXMgdG8gdGhlIHByaW50ZXIgc28gdGhlIHNpemUKCW11bHRpcGxpZXIgaXMgMyBub3QgMi4KCgkqIGRsbHMvcnNhZW5oL01ha2VmaWxlLmluLCBkbGxzL3JzYWVuaC9kZXMuYywgZGxscy9yc2FlbmgvaW1wbGdsdWUuYywKCSAgZGxscy9yc2FlbmgvaW1wbGdsdWUuaCwgZGxscy9yc2FlbmgvaW1wbG9zc2wuYywKCSAgZGxscy9yc2FlbmgvaW1wbG9zc2wuaCwgZGxscy9yc2FlbmgvbWQyLmMsIGRsbHMvcnNhZW5oL21waS5jLAoJICBkbGxzL3JzYWVuaC9yYzIuYywgZGxscy9yc2FlbmgvcmM0LmMsIGRsbHMvcnNhZW5oL3JzYS5jLAoJICBkbGxzL3JzYWVuaC9yc2FlbmguYywgZGxscy9yc2FlbmgvdG9tY3J5cHQuaDoKCU1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCUluY29ycG9yYXRlZCBMaWJUb21DcnlwdCBjb2RlIGludG8gcnNhZW5oIHRvIGdldCByaWQgb2YgT3BlblNTTAoJZGVwZW5kZW5jaWVzLgoKCSogZGxscy9jb21jYXQvY29tY2F0X21haW4uYywgZGxscy9kM2R4b2YvbWFpbi5jLCBkbGxzL21wci9tcHIuc3BlYywKCSAgZGxscy9tcHIvbXByX21haW4uYywgZGxscy9vbGVhdXQzMi9vbGVhdXQuYywKCSAgZGxscy9vbGVwcm8zMi9vbGVwcm8zMnN0dWJzLmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJRW5zdXJlIERsbENhblVubG9hZE5vdyBpcyBhIHRydWx5IHZvaWQgZnVuY3Rpb24sIGFuZCBnaXZlIGl0IGEgdW5pcXVlCgluYW1lIHNvIGl0IGNhbiBiZSBkb2N1bWVudGVkIHBlci1kbGwuCgoJKiBkbGxzL21hcGkzMi9NYWtlZmlsZS5pbiwgZGxscy9tYXBpMzIvaW1hbGxvYy5jLAoJICBkbGxzL21hcGkzMi9tYXBpMzIuc3BlYywgZGxscy9tYXBpMzIvbWFwaTMyX21haW4uYywKCSAgZGxscy9tYXBpMzIvdGVzdHMvLmN2c2lnbm9yZSwgZGxscy9tYXBpMzIvdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvbWFwaTMyL3Rlc3RzL2ltYWxsb2MuYywgZGxscy9tYXBpMzIvdGVzdHMvdXRpbC5jLAoJICBkbGxzL21hcGkzMi91dGlsLmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJSW1wbGVtZW50IERsbE1haW4sIERsbENhblVubG9hZE5vdywgV3JhcFByb2dyZXNzLAoJTUFQSUdldERlZmF1bHRNYWxsb2MsIElzQmFkQm91bmRlZFN0cmluZ1B0ciwgVUZyb21TeiwgVWxGcm9tU3pIZXgsCglDYk9mRW5jb2RlZC4KCUFkZCB0ZXN0cyBmb3IgdGhlIGFib3ZlLgoKCSogZGxscy9jb21jdGwzMi9tb250aGNhbC5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJLSBQYXNzIGluZm9QdHIgYXJvdW5kIGluIG1vbnRoIGNhbGVuZGFyIGNvbnRyb2wuCgktIEFkZCBzdXBwb3J0IGZvciBXTV9TRVRGT05UIGFuZCBXTV9HRVRGT05UIG1lc3NhZ2VzLgoKCSogZGxscy9hZHZhcGkzMi9jcnlwdC5jLCBkbGxzL2FkdmFwaTMyL3Rlc3RzL2NyeXB0LmMsCgkgIGRsbHMvYXZpZmlsMzIvYXZpZmlsZS5jLCBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jOgoJSmFtZXMgSGF3a2lucyA8dHJ1aWtlbkBnbWFpbC5jb20+CglGaXhlZCBhIGZldyBtZW1vcnkgbGVha3MuCgoJKiBkbGxzL2FkdmFwaTMyL3NlcnZpY2UuYzogQWxleGFuZGVyIFlhd29yc2t5IDx5YXdvcnNreUBtaWd1c29mdC5ydT4KCU1lcmdlIFVuaWNvZGUgYW5kIEFTQ0lJIHZlcnNpb25zIG9mIFN0YXJ0U2VydmljZUN0cmxEaXNwYXRjaGVyLgoJSW1wbGVtZW50IFN0YXJ0U2VydmljZUN0cmxEaXNwYXRjaGVyQSBvbiB0aGUgdG9wIG9mCglTdGFydFNlcnZpY2VDdHJsRGlzcGF0Y2hlclcuCglHZXQgcmlkIG9mIEhFQVBfc3RyZHVwV3RvQS4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglTdG9yZSB0aGUgbmV3IHN0eWxlIGJlZm9yZSByZWRyYXdpbmcgYW5kIHJlcG9zaXRpb25pbmcgdGhlIGNvbnRyb2wuCgoJKiBkbGxzL25ldGFwaTMyL25ldGJpb3MuYzogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUFsbG93IE5DQlJFU0VUIGFuZCBOQ0JBREROQU1FIHRvIHdvcmsgZXZlbiBpZiB0aGVyZSBhcmUgbm8gYWRhcHRlcnMuCgoJKiB3aW5kb3dzL2RlZnduZC5jOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJR2V0TW9kdWxlSGFuZGxlQS0+R2V0TW9kdWxlSGFuZGxlVy4KCgkqIERFVkVMT1BFUlMtSElOVFM6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglVc2UgYSBGSVhNRSBzdHlsZSB0aGF0IHdpbGwgYWN0dWFsbHkgY29tcGlsZS4KCgkqIGluY2x1ZGUvd2ludXNlci5oOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJR2F0aGVyIGFsbCBEcmF3VGV4dCBmbGFncyB0b2dldGhlciwgY29udmVydCB0aGVtIHRvIGhleCBmb3IKCXJlYWRhYmlsaXR5LgoKCSogZGxscy91c2VyL3RleHQuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCURyYXdUZXh0RXggc2hvdWxkIGFsbG9jYXRlIHRleHQgYnVmZmVyIG9uIHN0YWNrIGZvciB0aHJlYWQgc2FmZW5lc3MuCgoyMDA0LTExLTI5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9udGRsbC9lbnYuYzoKCUZpeGVkIFJ0bEV4cGFuZEVudmlyb25tZW50U3RyaW5nc19VIHRvIG5vdCBkZXBlbmQgb24gdGhlIHN0cmluZyBiZWluZwoJbnVsbC10ZXJtaW5hdGVkIChzcG90dGVkIGJ5IEFsZXhhbmRlciBZYXdvcnNreSkuCgoJKiBkbGxzL3VzZXIvdGVzdHMvbXNnLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIHNvbWUgdGVzdHMgZm9yIHRpbWVyIGZ1bmN0aW9ucy4KCgkqIGRsbHMvdXNlci9NYWtlZmlsZS5pbiwgZGxscy91c2VyL21lc3NhZ2UuYywgZGxscy91c2VyL3VzZXJfbWFpbi5jLAoJICBkbGxzL3VzZXIvd2lucHJvYy5oLCB3aW5kb3dzL3RpbWVyLmMsIHdpbmRvd3Mvd2luLmM6CglHZXQgcmlkIG9mIHRoZSBjbGllbnQtc2lkZSB3aW5kb3cgdGltZXIgc3RydWN0dXJlcy4KCgkqIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3F1ZXVlLmMsCgkgIHNlcnZlci90cmFjZS5jOgoJQ29udmVydGVkIHRoZSB0aW1lciBsaXN0IHRvIHVzZSBzdGFuZGFyZCBsaXN0IGZ1bmN0aW9ucy4KCUFsbG9jYXRlIGEgdGltZXIgaWQgd2hlbiB0aGUgd2luZG93IGlzIDAgaW5zdGVhZCBvZiByZWx5aW5nIG9uIHRoZQoJY2xpZW50IHRvIGRvIGl0LgoJQWxsb3cgc2V0dGluZyB0aW1lcnMgb24gd2luZG93cyBiZWxvbmdpbmcgdG8gb3RoZXIgdGhyZWFkcyAoZm91bmQgYnkKCU1pa2UgTWNDb3JtYWNrKS4KCgkqIGRsbHMvYXZpZmlsMzIvYXBpLmMsIGRsbHMvYXZpZmlsMzIvaWNtc3RyZWFtLmMsCgkgIGRsbHMvY29tbWRsZy9wcmludGRsZy5jLCBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYywKCSAgZGxscy93aW5tbS9wbGF5c291bmQuYywgZGxscy93aW5tbS93aW5lYWxzYS9hdWRpby5jLAoJICBkbGxzL3dpbm1tL3dpbmVhbHNhL21pZGkuYywgZGxscy93aW5tbS93aW5lYXJ0cy9hdWRpby5jLAoJICBkbGxzL3dpbm1tL3dpbmVuYXMvYXVkaW8uYywgcHJvZ3JhbXMvY2xvY2svbWFpbi5jLAoJICBwcm9ncmFtcy9jb250cm9sL2NvbnRyb2wuYywgcHJvZ3JhbXMvdGFza21nci9kYmdjaG5sLmMsCgkgIHByb2dyYW1zL3ZpZXcvdmlldy5jLCBwcm9ncmFtcy93Y21kL2J1aWx0aW5zLmMsCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL2N1cnNlcy5jLCBwcm9ncmFtcy93aW5lY29uc29sZS91c2VyLmMsCgkgIHByb2dyYW1zL3dpbmVwYXRoL3dpbmVwYXRoLmM6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCU1hZGUgc29tZSBmdW5jdGlvbnMgYW5kIHZhcmlhYmxlcyBzdGF0aWMuCgoJKiBkb2N1bWVudGF0aW9uL2ludHJvZHVjdGlvbi5zZ21sOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJRml4ZWQgbWlzc2luZyA8L3NlY3QyPiB0YWcuCgoJKiBkbGxzL2QzZDkvZGV2aWNlLmMsIGRsbHMvd2luZWQzZC9kZXZpY2UuYywKCSAgZGxscy93aW5lZDNkL2luZGV4YnVmZmVyLmMsIGRsbHMvd2luZWQzZC93aW5lZDNkX3ByaXZhdGUuaCwKCSAgaW5jbHVkZS93aW5lL3dpbmVkM2RfaW50ZXJmYWNlLmg6CglKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJSW1wbGVtZW50IE1hdGVyaWFsLCBDbGlwIHBsYW5lIGFuZCBMaWdodCBzdXBwb3J0IHBsdXMKCU11bHRpcGx5VHJhbnNmb3JtLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvZGlyZWN0b3J5LmM6IEd1bm5hciBEYWxzbmVzIDxoYXJkb25Ab25saW5lLm5vPgoJQWRkZWQgYSB0ZXN0IHRvIG1ha2Ugc3VyZSB0aGF0IENyZWF0ZURpcmVjdG9yeUEvVyBkb2VzIG5vdCBjcmVhdGUKCW11bHRpcGxlIG5vbi1leGlzdGluZyBkaXJlY3RvcmllcyBpbiB0aGUgcGF0aCBnaXZlbi4KCgkqIGRsbHMvdXNlci9jb21iby5jOiBFcmljIEtvaGwgPGVyaWMua29obEB0LW9ubGluZS5kZT4KCUY0IGtleSBmbGlwcyB0aGUgbGlzdGJveCBpbiBkZWZhdWx0IChub3QgZXh0ZW5kZWQgVUkpIG1vZGUuCgoJKiBkbGxzL3F1YXJ0ei9hdmlkZWMuYywgZGxscy9xdWFydHovYXZpc3BsaXQuYzoKCUNocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUFWSSBkZWNvbXByZXNzb3I6CgktIE1ha2UgY29waWVzIG9mIGJpdG1hcCBoZWFkZXIgZnJvbSBtZWRpYSB0eXBlIGZvciBpbnB1dCBhbmQgb3V0cHV0CgkgIGFuZCB1cGRhdGUgdGhlbSB3aGVuIG5lZWRlZC4KCS0gRml4ZWQgc3VidHlwZSBmb3IgMzItYml0IGRlcHRoIGluIFF1ZXJ5QWNjZXB0LgoJQVZJIHNwbGl0dGVyOgoJLSBGaXhlZCBoYW5kbGluZyBvZiByZWMgbGlzdC4KCgkqIHByb2dyYW1zL3JlZ2VkaXQvQ3MucmMsIHByb2dyYW1zL3JlZ2VkaXQvRGUucmMsCgkgIHByb2dyYW1zL3JlZ2VkaXQvRW4ucmMsIHByb2dyYW1zL3JlZ2VkaXQvRXMucmMsCgkgIHByb2dyYW1zL3JlZ2VkaXQvRnIucmMsIHByb2dyYW1zL3JlZ2VkaXQvSXQucmMsCgkgIHByb2dyYW1zL3JlZ2VkaXQvSmEucmMsIHByb2dyYW1zL3JlZ2VkaXQvUGwucmMsCgkgIHByb2dyYW1zL3JlZ2VkaXQvUHQucmM6CglKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJQWRkZWQgc29tZSBvcHRpb25zIHRvIHBvcHVwIG1lbnUuCgoJKiBkbGxzL3F1YXJ0ei90ZXN0cy9maWx0ZXJncmFwaC5jOiBBZGRlZCBtaXNzaW5nIENvSW5pdGlhbGl6ZS4KCgkqIGRsbHMvb2xlMzIvZXJyb3JpbmZvLmM6IE1pa2UgSGVhcm4gPG1oQGNvZGV3ZWF2ZXJzLmNvbT4KCVRyYWNlIHRoZSBPTEUgZXJyb3IgaW5mbyBzdHJpbmdzLgoKCSogZGxscy9vbGUzMi9jb21wb2JqLmM6IE1pa2UgSGVhcm4gPG1oQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gSW1wcm92ZSBPTEUgZnVuY3Rpb24gZG9jdW1lbnRhdGlvbi4KCS0gQmFpbCBvdXQgd2l0aCBDT19FX05PVElOSVRJQUxJWkVEIHdoZW4gYXB0IGlzIG51bGwuCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZ2Jyb3dzZXIuaDoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUNGTV9HRVRTUEVDIGFsd2F5cyByZXR1cm5zIGEgc3BhY2Utc2VwYXJhdGVkIGxpc3QuCgoyMDA0LTExLTI4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy91c2VyL21zZzE2LmMsIGRsbHMvdXNlci93aW5wcm9jLmgsIGRsbHMvdXNlci93bmQxNi5jLAoJICB3aW5kb3dzL2NsYXNzLmMsIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL3RpbWVyLmM6CglUYWtlIGFkdmFudGFnZSBvZiB0aGUgbmV3IHdpbnByb2MgaGFuZGxpbmcgdG8gbW92ZSBzb21lIG1vcmUgZnVuY3Rpb25zCgl0byAxNi1iaXQgZmlsZXMuCglUSU1FUl9Jc1RpbWVyVmFsaWQgaXMgbm8gbG9uZ2VyIG5lY2Vzc2FyeSBub3cgdGhhdCB3aW5wcm9jcyBhcmUgbmV2ZXIKCWZyZWVkLgoKCSogd2luZG93cy93aW5wcm9jLmM6CglGaXhlZCBpc192YWxpZF93aW5wcm9jIHRvIGF2b2lkIGJlaW5nIG9wdGltaXplZCBvdXQgYnkgcmVjZW50IGdjYwoJdmVyc2lvbnMuCgoJKiBkbGxzL2QzZDgvZGV2aWNlLmMsIGRsbHMvZDNkOS9kZXZpY2UuYywgZGxscy93aW5lZDNkL2RldmljZS5jLAoJICBkbGxzL3dpbmVkM2QvZGlyZWN0eC5jLCBkbGxzL3dpbmVkM2QvcmVzb3VyY2UuYywKCSAgZGxscy93aW5lZDNkL3N0YXRlYmxvY2suYywgZGxscy93aW5lZDNkL3ZlcnRleGJ1ZmZlci5jLAoJICBkbGxzL3dpbmVkM2Qvd2luZWQzZF9wcml2YXRlLmgsIGluY2x1ZGUvd2luZS93aW5lZDNkX2ludGVyZmFjZS5oOgoJSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCUFkZCBHZXQvU2V0IFRyYW5zZm9ybSBzdXBwb3J0LCBwbHVzIEJlZ2luU2NlbmUgKGRvZXMgbm90aGluZykuCgoJKiBkbGxzL21zdmNydC90ZXN0cy9wcmludGYuYzogRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglGaXhlZCBmaWxlIG5hbWUgd2hlbiBvcGVuaW5nIE5VTC4KCgkqIHRvb2xzL3dpbmUuaW5mOiBIYWppbWUgU2VnYXdhIDxoYWppbWVAc2lkZW5ldC5kZG8uanA+CglNYWtlIGZvbGRlcnMgb3BlbiBjb3JyZWN0bHkgaW4gV2luZG93cyBFeHBsb3Jlci4KCgkqIGRvY3VtZW50YXRpb24vUEFDS0FHSU5HOiBNYXJjdXMgTWVpc3NuZXIgPG1laXNzbmVyQHN1c2UuZGU+CglVcGRhdGVkIFBBQ0tBR0lORyBob3d0by4KCgkqIGRsbHMvd2luZXBzL3BwZC5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJUHJvdGVjdCBzc2NhbmZzIHdpdGggYSAiQyIgbG9jYWxlIHNvIHRoYXQgdGhleSBzdGlsbCB3b3JrIHdpdGggbmV3CglnbGliY3MgaW4gYSBsb2NhbGUgZG9lc24ndCB1c2UgYSAnLicgYXMgYSBkZWNpbWFsIHNlcGFyYXRvci4KCgkqIGRsbHMva2VybmVsL2ZpbGUuYywgZGxscy9rZXJuZWwvdGVzdHMvZmlsZS5jLCBkbGxzL250ZGxsL2ZpbGUuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGQgYSB0ZXN0IGZvciBSZWFkRmlsZS9Xcml0ZUZpbGUgZmF1bHQgaGFuZGxpbmcsIG1ha2UgaXQgcGFzcyB1bmRlcgoJV2luZS4KCgkqIGRsbHMvdXNlci9lZGl0LmMsIGRsbHMvdXNlci90ZXN0cy9lZGl0LmM6CglHZSB2YW4gR2VsZG9ycCA8Z3ZnQHJlYWN0b3MuY29tPgoJLSBGaXggdmVydGljYWwgcG9zaXRpb24gb2YgdGV4dCBpbiBzaW5nbGUtbGluZSBlZGl0IGNvbnRyb2xzLgoJLSBBZGQgdGVzdHMgZm9yIHRoaXMuCgoJKiBkbGxzL3dpbnRhYjMyL2NvbnRleHQuYzogUm9iZXJ0IE5vcnRoIDw3b3ducTBrNDAyQHNuZWFrZW1haWwuY29tPgoJLSBFbnN1cmUgdGhhdCBpZiBidWZmZXIgcG9pbnRlciBpcyBudWxsLCBxdWV1ZSBpcyBmbHVzaGVkLgoJLSBFbnN1cmUgdGhhdCBjb3JyZWN0IHBhY2tldHMgYXJlIGNvcGllZCBpbnRvIG91dHB1dCBidWZmZXIuCgktIFVzZSBtZW1tb3ZlIHdoZW4gbW92aW5nIHBhY2tldHMgd2l0aGluIHF1ZXVlLCBhcyBzb3VyY2UgYW5kIGRlc3QKCSAgd2lsbCB0eXBpY2FsbHkgb3ZlcmxhcC4KCS0gV2hlbiBtb3ZpbmcgcGFja2V0cyBpbiBxdWV1ZSwgZW5zdXJlIGNvcnJlY3QgbnVtYmVyIG9mIHBhY2tldHMgYXJlCgkgIG1vdmVkLgoKCSogZGxscy9tc2kvbXNpcHJpdi5oLCBkbGxzL21zaS9wYWNrYWdlLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CgktIERvbid0IGxpbWl0IHRoZSBzaXplIG9mIHRoZSBwcm9wZXJ0eSB0aGF0IGNhbiBiZSByZXRyaWV2ZWQgYnkKCSAgTXNpR2V0UHJvcGVydHkuCgktIE1ha2UgTXNpR2V0UHJvcGVydHkgQS9XIGltcGxlbWVudGF0aW9ucyBtb3JlIGNvbnNpc3RlbnQuCgoJKiBwcm9ncmFtcy93aW5lY2ZnL2RyaXZlZGV0ZWN0LmM6IEdlcmFsZCBQZmVpZmVyIDxnZXJhbGRAcGZlaWZlci5jb20+CglGaXggY29tcGlsYXRpb24gb24gc3lzdGVtcyB3aGljaCBkbyBub3QgaGF2ZSA8bW50ZW50Lmg+LgoKMjAwNC0xMS0yNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvdXNlci93aW5wcm9jLmgsIHdpbmRvd3MvY2xhc3MuYywgd2luZG93cy9kZWZkbGcuYywKCSAgd2luZG93cy90aW1lci5jLCB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3dpbnByb2MuYzoKCUNoYW5nZWQgd2lucHJvYyBhbGxvY2F0aW9uIHRvIGJlIGJhc2VkIG9ubHkgb24gdGhlIHByb2NlZHVyZSBhZGRyZXNzLAoJdG8gYXZvaWQgdGhlIG5lZWQgdG8ga2VlcCB0cmFjayBvZiB3aW5wcm9jcyBmb3IgZWFjaCB3aW5kb3cgYW5kIGNsYXNzLgoKCSogaW5jbHVkZS93aW51c2VyLmg6IEVyaWMgRnJpYXMgPGVmcmlhc0BzeW5jYWQuY29tPgoJTW9yZSBwb3J0YWJsZSBQT0lOVFNUT1BPSU5UIG1hY3JvLgoKCSogaW5jbHVkZS93aW5nZGkuaDogUHJldmVudCB1c2Ugb2YgTUFLRVBPSU5UUyBpbiBXaW5lIGNvZGUuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWJvZXguYywgZGxscy9jb21jdGwzMi9kYXRldGltZS5jLAoJICBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmMsIGRsbHMvY29tY3RsMzIvcmViYXIuYywKCSAgZGxscy9jb21jdGwzMi9zeXNsaW5rLmMsIGRsbHMvY29tY3RsMzIvdHJhY2tiYXIuYywKCSAgZGxscy9jb21jdGwzMi91cGRvd24uYywgcHJvZ3JhbXMvcmVnZWRpdC9saXN0dmlldy5jLAoJICBwcm9ncmFtcy93aW5lZmlsZS93aW5lZmlsZS5jOgoJQXZvaWQgdXNpbmcgdGhlIE1BS0VQT0lOVFMgbWFjcm8sIGl0J3MgYnJva2VuIG9uIGJpZyBlbmRpYW4uCgoJKiBkbGxzL2QzZDkvZDNkOV9wcml2YXRlLmgsIGRsbHMvZDNkOS9pbmRleGJ1ZmZlci5jLAoJICBkbGxzL2QzZDkvdmVydGV4YnVmZmVyLmMsIGRsbHMvd2luZWQzZC9NYWtlZmlsZS5pbiwKCSAgZGxscy93aW5lZDNkL2RldmljZS5jLCBkbGxzL3dpbmVkM2QvaW5kZXhidWZmZXIuYywKCSAgZGxscy93aW5lZDNkL3ZlcnRleGJ1ZmZlci5jLCBkbGxzL3dpbmVkM2Qvd2luZWQzZF9wcml2YXRlLmgsCgkgIGluY2x1ZGUvd2luZS93aW5lZDNkX2ludGVyZmFjZS5oOgoJSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCUFkZCBpbmRleGJ1ZmZlciBzdXBwb3J0IGludG8gd2luZWQzZC4KCgkqIGRsbHMvb2xlMzIvb2xlMmltcGwuYywgZGxscy9vbGUzMi9vbGUyc3R1YnMuYzoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCBPbGVEdXBsaWNhdGVEYXRhLgoKCSogZGxscy93aW5zcG9vbC9pbmZvLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVJldHVybiBjb3JyZWN0IGVycm9yIGNvZGUgaW4gRW51bVByaW50ZXJzLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGcuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IG9mbi5uRmlsZU9mZnNldCB3aGVuIG11bHRpcGxlIGZpbGVzIGFyZSBzZWxlY3RlZC4KCgkqIGRsbHMvZ2RpL2JydXNoLmMsIGRsbHMvZ2RpL3Rlc3RzLy5jdnNpZ25vcmUsCgkgIGRsbHMvZ2RpL3Rlc3RzL01ha2VmaWxlLmluLCBkbGxzL2dkaS90ZXN0cy9icnVzaC5jOgoJS2V2aW4gS29sdHphdSA8a2V2aW5AcGxvcC5vcmc+CglDcmVhdGVCcnVzaEluZGlyZWN0IHNob3VsZCBub3QgcmV0dXJuIGEgc3RvY2sgYnJ1c2guCgoJKiBkbGxzL2dkaS9tZmRydi9iaXRibHQuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUF2b2lkIHNvbWUgZGlyZWN0IGFjY2Vzc2VzIHRvIERDIGludGVybmFscyBmcm9tIG1ldGFmaWxlIGRyaXZlci4KCgkqIGRsbHMva2VybmVsL2ZpbGUuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZSB1c2VsZXNzIGNhbGxzIHRvIElzQmFkUmVhZFB0ciBmcm9tIFJlYWRGaWxlIGFuZCBXcml0ZUZpbGUuCgoyMDA0LTExLTIzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy91c2VyL21lc3NhZ2UuYywgZGxscy91c2VyL3Rlc3RzL21zZy5jOgoJRml4ZWQgaGFuZGxpbmcgb2YgTlVMTCBwb2ludGVyIGluIFBlZWtNZXNzYWdlVywgd2l0aCB0ZXN0IChyZXBvcnRlZCBieQoJRXJpYyBGcmlhcykuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9tc2Ntcy9tc2Ntc19wcml2LmgsIGluY2x1ZGUvY29uZmlnLmguaW46CglLZXZpbiBLb2x0emF1IDxrZXZpbkBwbG9wLm9yZz4KCUxvb2sgZm9yIGxjbXMuaCBpbiBsY21zL2xjbXMuaC4KCgkqIGRsbHMvbnRkbGwvbG9hZGVyLmM6CglBcHBlbmQgLmRsbCBleHRlbnNpb24gaW4gYWxsIGNhc2VzIChzcG90dGVkIGJ5IE1pa2UgSGVhcm4pLgoKCSogZGxscy9hbXN0cmVhbS92ZXJzaW9uLnJjLCBkbGxzL2NhcmRzL3ZlcnNpb24ucmMsCgkgIGRsbHMvZDNkOC92ZXJzaW9uLnJjLCBkbGxzL2QzZDkvdmVyc2lvbi5yYywgZGxscy9kM2RpbS92ZXJzaW9uLnJjLAoJICBkbGxzL2QzZHJtL3ZlcnNpb24ucmMsIGRsbHMvZDNkeG9mL3ZlcnNpb24ucmMsIGRsbHMvZGRyYXcvdmVyc2lvbi5yYywKCSAgZGxscy9kZXZlbnVtL2RldmVudW0ucmMsIGRsbHMvZGlucHV0L3ZlcnNpb24ucmMsCgkgIGRsbHMvZGlucHV0OC92ZXJzaW9uLnJjLCBkbGxzL2RtYmFuZC92ZXJzaW9uLnJjLAoJICBkbGxzL2RtY29tcG9zL3ZlcnNpb24ucmMsIGRsbHMvZG1pbWUvdmVyc2lvbi5yYywKCSAgZGxscy9kbWxvYWRlci92ZXJzaW9uLnJjLCBkbGxzL2Rtc2NyaXB0L3ZlcnNpb24ucmMsCgkgIGRsbHMvZG1zdHlsZS92ZXJzaW9uLnJjLCBkbGxzL2Rtc3ludGgvdmVyc2lvbi5yYywKCSAgZGxscy9kbXVzaWMvdmVyc2lvbi5yYywgZGxscy9kbXVzaWMzMi92ZXJzaW9uLnJjLAoJICBkbGxzL2RwbGF5L3ZlcnNpb24ucmMsIGRsbHMvZHBsYXl4L3ZlcnNpb24ucmMsIGRsbHMvZHBuZXQvdmVyc2lvbi5yYywKCSAgZGxscy9kcG5ocGFzdC92ZXJzaW9uLnJjLCBkbGxzL2Rzb3VuZC92ZXJzaW9uLnJjLAoJICBkbGxzL2Rzd2F2ZS92ZXJzaW9uLnJjLCBkbGxzL2R4ZGlhZ24vdmVyc2lvbi5yYywgZGxscy9nZGkvdmVyc2lvbi5yYywKCSAgZGxscy9oaGN0cmwub2N4L3ZlcnNpb24ucmMsIGRsbHMvbXByL3ZlcnNpb24ucmMsIGRsbHMvbXNkbW8vcnNyYy5yYywKCSAgZGxscy9tc2kvdmVyc2lvbi5yYywgZGxscy9tc3dzb2NrL3ZlcnNpb24ucmMsCgkgIGRsbHMvb3BlbmdsMzIvdmVyc2lvbi5yYywgZGxscy9xY2FwL3ZlcnNpb24ucmMsCgkgIGRsbHMvcXVhcnR6L3ZlcnNpb24ucmMsIGRsbHMvc2hlbGwzMi92ZXJzaW9uMTYucmMsCgkgIGRsbHMvd2luaW5ldC92ZXJzaW9uLnJjLCBkbGxzL3dpbnNvY2svdmVyc2lvbi5yYywKCSAgZGxscy93c29jazMyL3ZlcnNpb24ucmM6CglUb20gV2lja2xpbmUgPHR3aWNrbGluZUBzaXRlc3Rhci5uZXQ+CglWZXJzaW9uIHJlc291cmNlcyBjbGVhbnVwLgoKCSogZGxscy9kM2Q4L2QzZDhfbWFpbi5jLCBkbGxzL2QzZDgvZGlyZWN0eC5jLCBkbGxzL2QzZDkvZDNkOV9tYWluLmMsCgkgIGRsbHMvZDNkOS9kZXZpY2UuYywgZGxscy9kM2Q5L2RpcmVjdHguYywgZGxscy9kM2Q5L3ZlcnRleGJ1ZmZlci5jLAoJICBkbGxzL3dpbmVkM2QvZGV2aWNlLmMsIGRsbHMvd2luZWQzZC9kaXJlY3R4LmMsCgkgIGRsbHMvd2luZWQzZC9yZXNvdXJjZS5jLCBkbGxzL3dpbmVkM2Qvc3RhdGVibG9jay5jLAoJICBkbGxzL3dpbmVkM2QvdmVydGV4YnVmZmVyLmMsIGRsbHMvd2luZWQzZC93aW5lZDNkX21haW4uYywKCSAgZGxscy93aW5lZDNkL3dpbmVkM2RfcHJpdmF0ZS5oLCBpbmNsdWRlL3dpbmUvd2luZWQzZF9pbnRlcmZhY2UuaDoKCUphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CgktIEltcGxlbWVudCBTZXRTdHJlYW1Tb3VyY2UKCS0gRW5zdXJlIHdpbmVkM2Qgb2JqZWN0cyBtYWludGFpbiBhIHJlZmVyZW5jZSBjb3VudCBvZiBhdCBsZWFzdCB0aGF0CgkgIG9mIHRoZSBkM2R4IHZlcnNpb24uCgoJKiBwcm9ncmFtcy93aW5lY2ZnL0VuLnJjLCBwcm9ncmFtcy93aW5lY2ZnL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy93aW5lY2ZnL2FwcGRlZmF1bHRzLmMsIHByb2dyYW1zL3dpbmVjZmcvZHJpdmUuYywKCSAgcHJvZ3JhbXMvd2luZWNmZy9kcml2ZWRldGVjdC5jLCBwcm9ncmFtcy93aW5lY2ZnL2RyaXZldWkuYywKCSAgcHJvZ3JhbXMvd2luZWNmZy9yZXNvdXJjZS5oLCBwcm9ncmFtcy93aW5lY2ZnL3dpbmVjZmcuYywKCSAgcHJvZ3JhbXMvd2luZWNmZy93aW5lY2ZnLmgsIHByb2dyYW1zL3dpbmVjZmcveDExZHJ2ZGxnLmM6CglNaWtlIEhlYXJuIDxtaWtlQG5hdmkuY3g+CgktIE1vcmUgaGVhcGlmaWNhdGlvbi4KCS0gU3BsaXQgZHJpdmUgY29kZSBpbnRvIGNvcmUsIFVJIGFuZCBhdXRvZGV0ZWN0LgoJLSBJbXBsZW1lbnQgZHJpdmUgYXV0b2RldGVjdGlvbi4KCS0gU2xpZ2h0IHJlZGVzaWduIG9mIGRyaXZlIHRhYi4KCS0gQ29kZSBjbGVhbnVwLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGluY2x1ZGUvY29uZmlnLmguaW46CglIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJV2UgZG9uJ3QgdXNlIERHQSB2ZXJzaW9uIDEgc28gcmVtb3ZlIHRoZSBjb25maWd1cmUgY2hlY2sgZm9yIGl0LgoKCSogZGxscy94MTFkcnYvZGliLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCVdoZW4gY2hhbmdpbmcgZnJvbSBESUJfU3RhdHVzX0dkaU1vZCB0byBESUJfU3RhdHVzX0dkaU1vZCwgd2UgaGF2ZSB0bwoJc2V0IHRoZSBwcmV2aW91cyBzdGF0dXMgdG8gRElCX1N0YXR1c19HZGlNb2QsIG90aGVyd2lzZSBhCglub24tY29tbWl0dGluZyB1bmxvY2sgY291bGQgaW5jb3JyZWN0bHkgcmV2ZXJ0IHRoZSBESUIgdG8gYW5vdGhlcgoJc3RhdGUsIHJhdGhlciB0aGFuIHRoZSBjb3JyZWN0IERJQl9TdGF0dXNfR2RpTW9kLgoKCSogZGxscy9nZGkvZGMuYywgZGxscy9nZGkvZ2RpX3ByaXZhdGUuaCwgZGxscy9nZGkvZ2Rpb2JqLmMsCgkgIGRsbHMvZ2RpL3Rlc3RzL2dkaW9iai5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCVNldCB0aGUgbWl0ZXIgbGltaXQgaW4gdGhlIERDIHN0YXRlLgoJT25seSBTZXRMYXN0RXJyb3IoKSBpbiBvYmplY3QgZnVuY3Rpb25zIHdoZXJlIG5hdGl2ZSBkb2VzLgoJVGVzdCB0aGUgZXJyb3IgY29tZGl0aW9ucyBvZiB0aGUgZ2Rpb2JqIGZ1bmN0aW9ucy4KCU1pbm9yIGRvY3VtZW50YXRpb24gdXBkYXRlcy4KCgkqIHByb2dyYW1zL21zaWV4ZWMvbXNpZXhlYy5jOiBIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCVVzZSBzdHJpbmcgZnVuY3Rpb25zIHRoYXQgYXJlIFdpbmRvd3MgbG9jYWxlIGF3YXJlLgoKMjAwNC0xMS0yMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGxpYnMvd2luZS93aW5lLmRlZiwgbGlicy93aW5lL3dpbmUubWFwOgoJRXJpYyBGcmlhcyA8ZWZyaWFzQHN5bmNhZC5jb20+CglFeHBvcnQgd2luZV9wdGhyZWFkX2dldF9jdXJyZW50X3RlYi4KCgkqIGxpYnMvd2luZS9wb3J0LmM6IEVyaWMgRnJpYXMgPGVmcmlhc0BzeW5jYWQuY29tPgoJRml4IFNwYXJjIGFzc2VtYmx5IGNvZGUgaW4gd2luZV9zd2l0Y2hfdG9fc3RhY2suCgoJKiB0b29scy93aW5lZ2NjL3dpbmVnY2MuYzogUGFzcyBETExGTEFHUyB0byB3aW5lYnVpbGQgdG9vLgoKCSogdG9vbHMvd2luYXBpL21zdmNtYWtlcjogU3RldmVuIEVkd2FyZHMgPHN0ZXZlbl9lZDQxNTNAeWFob28uY29tPgoJRGVmaW5lICJXSU5WRVI9MHgwNTAxIF9XSU4zMl9XSU5OVD0weDA1MDEgX1dJTjMyX0lFPTB4MDYwMCIgZm9yIGFsbAoJdGhlIHRhcmdldHMuCgoJKiBkbGxzL2RiZ2hlbHAvZWxmX21vZHVsZS5jLCBkbGxzL2RiZ2hlbHAvc3ltYm9sLmMsCgkgIGRsbHMvZGJnaGVscC90eXBlLmMsIHByb2dyYW1zL3dpbmVkYmcvc3ltYm9sLmM6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCUZpeGVkIHJlZ3Jlc3Npb25zIGludHJvZHVjZWQgd2hlbiBtb3ZpbmcgYWRkcmVzc2VzIGFzIDY0Yml0IHZhbHVlcy4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL3Byb2Nlc3MuYzogS2V2aW4gS29sdHphdSA8a2V2aW5AcGxvcC5vcmc+CglQcmV2ZW50IGVudmlyb25tZW50IHRlc3QgZnJvbSBjcmFzaGluZyB3aGVuIGVudmlyb25tZW50IGlzIGxhcmdlLgoKCSogREVWRUxPUEVSUy1ISU5UUzogVG9tIFdpY2tsaW5lIDx0d2lja2xpbmVAc2l0ZXN0YXIubmV0PgoJQWRkZWQgYWR2cGFjay5kbGwsIHJzYWVuaC5kbGwsIHN0cm1paWRzLmxpYi4KCgkqIHByb2dyYW1zL21zaWV4ZWMvbXNpZXhlYy5jOiBIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCUhhbmRsZSB1bmtub3duIHBhcmFtZXRlcnMgbW9yZSBncmFjZWZ1bGx5LgoKCSogd2luZG93cy9pbnB1dC5jOiBFcmljIEZyaWFzIDxlZnJpYXNAc3luY2FkLmNvbT4KCUZpeGVkIEtFWUxQIHN0cnVjdHVyZSBmb3IgYmlnIGVuZGlhbi4KCgkqIGRsbHMva2VybmVsL3BhdGguYzogQWxleGFuZGVyIFlhd29yc2t5IDx5YXdvcnNreUBtaWd1c29mdC5ydT4KCUNoYW5nZWQgYWxsb2NhdGlvbiBvZiBhcmd1bWVudHMgaW4gU2VhcmNoUGF0aEEgc28gcGF0aCBpcyBub3QgbGltaXRlZAoJYnkgc2l6ZSBvZiBURUIgc3RhdGljIGJ1ZmZlci4KCgkqIHByb2dyYW1zL3dpbmVmaWxlL3dpbmVmaWxlLmMsIHByb2dyYW1zL3dpbmVmaWxlL3dpbmVmaWxlLmg6CglNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJVW5pY29kaWZ5IHN0cmluZyBjb25zdGFudHMuCgoJKiBwcm9ncmFtcy93aW5lZmlsZS9zcGxpdHBhdGguYzogTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCXNwbGl0cGF0aCBtYWludGFpbmFuY2UuCgoJKiBkbGxzL2dkaS9lbmhtZXRhZmlsZS5jLCBkbGxzL2dkaS9lbmhtZmRydi9vYmplY3RzLmMsCgkgIGRsbHMvZ2RpL2dkaV9wcml2YXRlLmg6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJU3VwcG9ydCBtb25vIHBhdHRlcm4gYnJ1c2hlcyBpbiBFTUYncy4KCgkqIGRsbHMvZ2RpL21mZHJ2L29iamVjdHMuYzogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUF2b2lkIG1hZ2ljIG51bWJlci4KCgkqIGRsbHMvZ2RpL2JpdG1hcC5jOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJSW1wbGVtZW50IENyZWF0ZUJpdG1hcCB1c2luZyBDcmVhdGVCaXRtYXBJbmRpcmVjdCBzbyB3ZSBjYW4gaGFuZGxlCglmdW5reSBhbGlnbm1lbnQgcGFkZGluZ3MuCglTZXRMYXN0RXJyb3IoKSBvbiBmYWlsdXJlLCBkb2N1bWVudGF0aW9uIGNsZWFudXAuCgoJKiB0b29scy93cmMvcGFyc2VyLnk6IFJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCUFsbG93IG5lZ2F0aXZlIG51bWJlcnMgaW4gUkNEQVRBIHJlc291cmNlcyBsaWtlIFJDLkVYRSBkb2VzLgoJRml4IGZhbHNlIG91dCBvZiAxNiBiaXRzIHJhbmdlIHdhcm5pbmcuCgoJKiBkbGxzL3gxMWRydi94cmVuZGVyLmM6IEdsZW5uIFd1cnN0ZXIgPGd3dXJzdGVyQHNjcy5jYXJsZXRvbi5jYT4KCVVzZSBwaHlzRGV2LT50ZXh0UGl4ZWwgaW5zdGVhZCBvZiBHZXRUZXh0Q29sb3IgZm9yIEV4dFRleHRPdXQuCgoyMDA0LTExLTIxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvbHpleHBhbmQvTWFrZWZpbGUuaW4sCgkgIGRsbHMvbHpleHBhbmQvdGVzdHMvLmN2c2lnbm9yZSwgZGxscy9semV4cGFuZC90ZXN0cy9NYWtlZmlsZS5pbiwKCSAgZGxscy9semV4cGFuZC90ZXN0cy9semV4cGFuZF9tYWluLmM6CglFdmFuIEcuIFBhcnJ5IDxlcGFycnlAY3MuaG1jLmVkdT4KCUFkZGVkIHNvbWUgdGVzdHMgZm9yIGx6ZXhwYW5kLgoKCSogZGxscy9kYmdoZWxwL01ha2VmaWxlLmluLCBkbGxzL2RiZ2hlbHAvY29mZi5jLCBkbGxzL2RiZ2hlbHAvbXNjLmMsCgkgIGRsbHMvZGJnaGVscC9tc2N2cGRiLmg6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCS0gbW92ZWQgaW50byBuZXcgbXNjdnBkYi5oIChvdXQgb2YgbXNjLmMpIGFsbCB0eXBlcyBhbmQgZGVmaW5lcyBuZWVkZWQKCSAgdG8gcGFyc2UgZGVidWcgZmlsZXMgZ2VuZXJhdGVkIGJ5IE1TIHRvb2xzCgktIG1vdmVkIGludG8gY29mZi5jIChhbmQgb3V0IG9mIG1zYy5jKSB0aGUgQ09GRiBoYW5kbGluZwoJLSBjbGVhbmVkIGxvdHMgb2YgdHlwZXMgKGFkZCBjb25zaXN0ZW5jeSBhY3Jvc3Mgc3RydWN0cykKCS0gdmVyc2lvbmluZyBvZiBzb21lIGRlZmluZXMgYW5kIHR5cGVzICh0byBmb2xsb3cgTVMgdG9vbHMgZXZvbHV0aW9uKQoJLSBlbmhhbmNlZCBWMiBvZiBzeW1ib2xzIHBhcnNpbmcgKHNvbWUgbW9yZSB0eXBlcyByZWNvZ25pemVkLCBzdXBwb3J0CgkgIG9mIGltcG9ydGVkIC5wZGIgZmlsZXMpCgktIGFkZGVkIHN1cHBvcnQgZm9yIG5ld2VzdCAucGRiIGZvcm1hdAoKCSogZGxscy9hZHZhcGkzMi9zZXJ2aWNlLmM6IEFsZXhhbmRlciBZYXdvcnNreSA8eWF3b3Jza3lAbWlndXNvZnQucnU+CglNb3ZlIHVwIFNFUlZfKiBmdW5jdGlvbnMuCgoJKiBwcm9ncmFtcy93aW5lY2ZnL0VzLnJjLCBwcm9ncmFtcy93aW5lZmlsZS9Fbi5yYywKCSAgcHJvZ3JhbXMvd2luZWZpbGUvRXMucmMsIHByb2dyYW1zL3dpbmhlbHAvRXMucmM6CglKb3PpIE1hbnVlbCBGZXJyZXIgT3J0aXogPGptZm8xOTgyQHlhaG9vLmVzPgoJVXBkYXRlZCBTcGFuaXNoIHRyYW5zbGF0aW9ucy4KCgkqIGluY2x1ZGUvaWNtLmgsIGRsbHMvbXNjbXMvbGNtc19hcGkuaCwgZGxscy9tc2Ntcy9tc2Ntcy5zcGVjLAoJICBkbGxzL21zY21zL21zY21zX21haW4uYywgZGxscy9tc2Ntcy9wcm9maWxlLmMsCgkgIGRsbHMvbXNjbXMvdGVzdHMvcHJvZmlsZS5jOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglJbXBsZW1lbnQgYW5kIHRlc3QgR2V0Q29sb3JQcm9maWxlRWxlbWVudFRhZywKCUdldENvdW50Q29sb3JQcm9maWxlRWxlbWVudHMgYW5kIElzQ29sb3JQcm9maWxlVGFnUHJlc2VudC4gU3R1YgoJR2V0U3RhbmRhcmRDb2xvclNwYWNlUHJvZmlsZXtBLFd9LgoKCSogZGxscy9rZXJuZWwvbG9jYWxlLmMsIGRsbHMva2VybmVsL3Rlc3RzL2xvY2FsZS5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUNhbGwgQ29tcGFyZVN0cmluZ0Egd2l0aCBMT0NBTEVfVVNFX0NQX0FDUCBmbGFnIHNldCBmcm9tIGxzdHJjbXBBIGFuZAoJbHN0cmNtcGlBIGluIG9yZGVyIHRvIGltcHJvdmUgc3BlZWQuIEFkZCBhIHRlc3QgY2FzZSBjb25maXJtaW5nIHRoYXQKCUNvbXBhcmVTdHJpbmcgYW5kIExDTWFwU3RyaW5nIGFjY2VwdCBMT0NBTEVfVVNFX0NQX0FDUC4KCgkqIHdpbmRvd3MvZGVmd25kLmM6IFN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJUmVtb3ZlZCBXLT5BIGZyb20gREVGV05EX0ltbUlzVUlNZXNzYWdlVy4KCgkqIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jLCBkbGxzL3dpbmluZXQvcmVzb3VyY2UuaCwKCSAgZGxscy93aW5pbmV0L3dpbmluZXRfRW4ucmM6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIE1ha2UgSW50ZXJuZXRHZXRDb25uZWN0ZWRTdGF0ZUV4QSBub3QgY3Jhc2gsIGJ5IG1ha2luZwoJICBJbnRlcm5ldEdldENvbm5lY3RlZFN0YXRlRXhXIGZpbGwgaW4gdGhlIGJ1ZmZlciBjb3JyZWN0bHkuCgktIFJlbW92ZSB0aGUgZHVtcGluZyBvZiBzdHJpbmdzIHRoYXQgd2lsbCBvbmx5IGNvbnRhaW4gZ2FyYmFnZS4KCS0gRG9jdW1lbnQgZnVuY3Rpb24uCgoJKiBkbGxzL21zdmNydC9sb2NhbGUuYzogQmlsbCBNZWRsYW5kIDxiaWxsbWVkbGFuZEBtZXJjdXJ5c3BlZWQuY29tPgoJRG9uJ3QgbWVzcyB1cCB0aGUgbXN2Y3J0IGNvZGVwYWdlIG9uIGUuZy4gX01CX0NQX0FOU0kuCgoJKiBkbGxzL3VzZXIvcmVzb3VyY2UuYzogRXJpYyBGcmlhcyA8ZWZyaWFzQHN5bmNhZC5jb20+CglBY2NlbGVyYXRvciByZXNvdXJjZSBzdHJ1Y3QgZml4IGZvciBzcGFyYy4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCVRoZSBkZWZhdWx0IGZvbnQgZm9yIHRoZSB0cmVldmlldyBzaG91bGQgYmUgdGhlIGljb24gdGl0bGUgZm9udC4KCgkqIHRvb2xzL3dpbmVidWlsZC9wYXJzZXIuYzogRXJpYyBGcmlhcyA8ZWZyaWFzQHN5bmNhZC5jb20+CglIYW5kbGUgYSBkZWYgZmlsZSB3aGVyZSB0aGUgbmFtZXMgb2YgdGhlIGV4cG9ydGVkIGZ1bmN0aW9ucyBhcmUgbGlzdGVkCgl3aXRob3V0IGJlaW5nIGZvbGxvd2VkIGJ5IGFuIGVxdWFscyBzaWduIGFuZCBhbiBhbGlhcy4KCgkqIGRsbHMvd2luZXBzL3BwZC5jOiBFcmljIEZyaWFzIDxlZnJpYXNAc3luY2FkLmNvbT4KCUZpeGVkIGZpbGUgaGFuZGxlIGxlYWsuCgoJKiBkbGxzL250ZGxsL3NpZ25hbF9zcGFyYy5jOiBFcmljIEZyaWFzIDxlZnJpYXNAc3luY2FkLmNvbT4KCVBlcm1pdCB1bmFsaWduZWQgbWVtb3J5IGFjY2VzcyBvbiBzcGFyYy4KCgkqIHRvb2xzL3dyYy9nZW5yZXMuYzogRXJpYyBGcmlhcyA8ZWZyaWFzQHN5bmNhZC5jb20+CglGaXhlZCBlcnJvciB3cml0aW5nIGNvbnRyb2wgSURzIGluIGRpYWxvZ2V4IG9uIHNwYXJjLgoKCSogZGxscy93aW5tbS93aW5tbS5jOiBS6W1pIEFzc2FpbGx5IDxyZW1pLmFzc2FpbGx5QGZyZWUuZnI+CglBZGQgc29tZSBtaXNzaW5nIGVycm9yIHZhbHVlcyBpbiBXSU5NTV9FcnJvclRvU3RyaW5nLgoKCSogd2luZG93cy9kaWFsb2cuYzogRXJpYyBGcmlhcyA8ZWZyaWFzQHN5bmNhZC5jb20+CglGaXhlZCBkaWFsb2dleCByZXNvdXJjZSBsb2FkaW5nIG9uIHNwYXJjLgoKCSogZGxscy9nZGkvYnJ1c2guYzogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCVNlYXJjaCB0aGUgd2hvbGUgdGFibGUgd2hlbiBjcmVhdGluZyBzb2xpZCBicnVzaGVzLgoKCSogZGxscy9udGRsbC90aW1lLmM6IEFsZXhhbmRlciBZYXdvcnNreSA8eWF3b3Jza3lAbWlndXNvZnQucnU+CglBZGRlZCBOT1ZUIHRpbWV6b25lIGluZm8uCgoJKiBkbGxzL3V4dGhlbWUvZHJhdy5jOiBLZXZpbiBLb2x0emF1IDxrZXZpbkBwbG9wLm9yZz4KCUZpeCBjbGlwcGluZyBmb3IgRHJhd1RoZW1lUGFyZW50QmFja2dyb3VuZC4KCgkqIFJFQURNRTogR2VyYWxkIFBmZWlmZXIgPGdlcmFsZEBwZmVpZmVyLmNvbT4KCVVwZGF0ZSBGcmVlQlNEIGluZm8uCgoJKiBpbmNsdWRlL21tc3lzdGVtLmg6IFLpbWkgQXNzYWlsbHkgPHJlbWkuYXNzYWlsbHlAZnJlZS5mcj4KCUFkZGVkIHNvbWUgc3RydWN0dXJlIHRhZ3MgYW5kIGVycm9yIGRlZmluZXMuCgoJKiBkbGxzL2tlcm5lbC9maWxlLmMsIGRsbHMvbnRkbGwvZmlsZS5jOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglNb3ZlZCBrZXJuZWwzMi5EZWxldGVGaWxlVyBjb3JlIGltcGxlbWVudGF0aW9uIHRvIG50ZGxsLk50RGVsZXRlRmlsZS4KCjIwMDQtMTEtMTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL21wci8uY3ZzaWdub3JlLCBkbGxzL29sZTMyLy5jdnNpZ25vcmUsIGRsbHMvb2xlYXV0MzIvLmN2c2lnbm9yZSwKCSAgZGxscy9zaGVsbDMyLy5jdnNpZ25vcmU6CglSZW1vdmVkIGEgY291cGxlIG9mIG5vIGxvbmdlciBuZWVkZWQgZW50cmllcy4KCgkqIGRsbHMvdXNlci9kaXNwbGF5LmM6IEZpeCBjb25mbGljdGluZyBzdHJ1Y3R1cmUgdGFnLgoKCSogZGxscy93aW5tbS93aW5lb3NzL2RzY2FwdHVyZS5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJT25lIHN0ZXAgY2xvc2VyIHRvIGdldHRpbmcgaGFyZHdhcmUgYWNjZWxlcmF0ZWQgY2FwdHVyZSB3b3JraW5nLgoKCSogZm9udHMvTWFrZWZpbGUuaW4sIGZvbnRzL3dpbmVfc3lzdGVtLnNmZCwgdG9vbHMvc2ZudDJmbnQuYzoKCUh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglDYWxjdWxhdGluZyB0aGUgYXZlcmFnZSB3aWR0aCBkb2Vzbid0IHNlZW0gcG9zc2libGUsIHNvIHNldCBpdAoJbWFudWFsbHkgaW5zdGVhZC4KCUZpeCB0aGUgY29weXJpZ2h0IGluIHdpbmVfc3lzdGVtLgoKCSogZGxscy9tc2Ntcy9tc2Ntcy5zcGVjLCBkbGxzL21zY21zL3Byb2ZpbGUuYywgaW5jbHVkZS9pY20uaDoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJSW1wbGVtZW50IElzUHJvZmlsZVZhbGlkLgoJRG9jdW1lbnQgYWxsIGZ1bmN0aW9ucy4KCgkqIGRsbHMvdmVyc2lvbi90ZXN0cy9pbmZvLmM6CglTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCUZpeGVkIEdldEZpbGVWZXJzaW9uSW5mb1NpemVBIHRlc3RzIG9uIE5ULgoKCSogcHJvZ3JhbXMvd2luZWZpbGUvRW4ucmM6IE1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CglGaXggRW5nbGlzaCBtZW51IHRleHQuCgoJKiBkbGxzL3F1YXJ0ei9maWx0ZXJncmFwaC5jOiBDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglJbXBsZW1lbnRlZCBJR3JhcGhCdWlsZGVyIG1ldGhvZHM6IENvbm5lY3QsIFJlbmRlciwgUmVuZGVyRmlsZSAmCglBZGRTb3VyY2VGaWx0ZXIuCglGaXhlZCBmaWx0ZXIgbmFtZSBnZW5lcmF0aW9uIGluIElHcmFwaEJ1aWxkZXI6OkFkZEZpbHRlci4KCgkqIGRsbHMvc2hlbGwzMi9tZW1vcnlzdHJlYW0uYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBVc2UgbW9yZSBzcGVjaWZpYyBlcnJvciBjb2RlcyB0aGFuIEVfRkFJTCwgd2hlcmUgcG9zc2libGUuCgktIE1vdmUgdnRhYmxlIHRvIGVuZCwgZ2l2ZSBpdCB0aGUgY29uc3QgbW9kaWZpZXIsIGFuZCByZW1vdmUgdW5uZWVkZWQKCSAgZnVuY3Rpb24gZGVjbGFyYXRpb25zLgoKCSogZGxscy9hZHZhcGkzMi90ZXN0cy9yZWdpc3RyeS5jOiBKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCUFkZGVkIGJlZ2lubmluZ3Mgb2YgUmVnUXVlcnlWYWx1ZUV4IHRlc3RzLgoKCSogaW5jbHVkZS9jb21tY3RybC5oOiBBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CglDb3JyZWN0IG9yZGVyaW5nIG9mIHNvbWUgZGVmaW5lcy4KCgkqIGRsbHMveDExZHJ2L3hyZW5kZXIuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUZhbGxiYWNrIHRvIHNvbWUgc2Vuc2libGUgZGVmYXVsdCB2YWx1ZXMgd2hlbiB1bmRlcmxpbmluZyBhbmQgc3RyaWtpbmcKCW91dCBiaXRtYXAgZm9udHMuCglSb3RhdGUgdGhlIHN0cmlrZW91dCBsaW5lIGlmIHRoZSBlc2NhcGVtZW50IGlzIG5vbi16ZXJvLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBaYWNoIEdvcm1hbiA8emFjaEBhcmNoZXR5cGVhdWN0aW9uLmNvbT4KCUFkZCB0aGUgRFRfTk9QUkVGSVggZmxhZyB3aGVuIGNhbGxpbmcgRHJhd1RleHQoKSBmb3Igc2luZ2xlLWxpbmUKCWxpc3R2aWV3IGNvbnRyb2xzLgoKCSogZGxscy9tc2Ntcy8uY3ZzaWdub3JlLCBkbGxzL21zY21zL01ha2VmaWxlLmluLCBkbGxzL21zY21zL3ZlcnNpb24ucmM6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCUFkZCB2ZXJzaW9uIGluZm9ybWF0aW9uLgoKCSogZGxscy9kZHJhdy9kZHJhdy9tYWluLmMsIGRsbHMvZGRyYXcvbWVzYS5jOgoJQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJRml4ZWQgY29sb3JrZXkgY29udmVyc2lvbi4KCUhhbmRsZSBudWxsIHN1cmZhY2UgcG9pbnRlciB3aGVuIGNyZWF0aW5nIHN1cmZhY2UuCgoJKiBkbGxzL2l0c3MvaXRzcy5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglVc2UgaW50ZXJsb2NrZWQgZnVuY3Rpb25zIGZvciB0aHJlYWQgc2FmZXR5LgoKCSogZGxscy9xdWFydHovZW51bXBpbnMuYzogQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJRml4ZWQgSUVudW1QaW5zSW1wbF9OZXh0LgoKCSogZGxscy9kYmdoZWxwL2RiZ2hlbHAuYywgZGxscy9kYmdoZWxwL2RiZ2hlbHBfcHJpdmF0ZS5oLAoJICBkbGxzL2RiZ2hlbHAvc3ltYm9sLmM6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCS0gaW1wbGVtZW50IFN5bVVuRE5hbWUgYW5kIFVuZGVjb3JhdGVTeW1ib2xOYW1lIG9uIHRvcCBvZgoJICBtc3ZjcnQuX191bkROYW1lCgktIGltcGxlbWVudCBTWU1PUFRfVU5ETkFNRSBzdXBwb3J0CgoJKiBpbmNsdWRlL3dpbnVzZXIuaDogUultaSBBc3NhaWxseSA8cmVtaS5hc3NhaWxseUBmcmVlLmZyPgoJQWRkZWQgc29tZSBzdHJ1Y3R1cmUgdGFncy4KCgkqIGluY2x1ZGUvbWxhbmcuaWRsLCBpbmNsdWRlL3dpbm50Lmg6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJVXNlIF9XSU5OVF8gYXMgZXhjbHVzaW9uIGRlZmluZSBmb3Igc291cmNlIGNvbXBhdGliaWxpdHkuCgoJKiBkbGxzL2F2aWZpbDMyL2F2aWZpbDMyLnNwZWM6IENocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCU1hcHBlZCBBVklTdHJlYW1PcGVuRnJvbUZpbGUgdG8gQVZJU3RyZWFtT3BlbkZyb21GaWxlQS4KCgkqIGRsbHMvZHNvdW5kL2NhcHR1cmUuYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCVJlbW92ZSB0cmFpbGluZyB3aGl0ZSBzcGFjZSBpbnRyb2R1Y2VkIGluIHByZXZpb3VzIHBhdGNoLgoJRml4ZWQgSURpcmVjdFNvdW5kQ2FwdHVyZUJ1ZmZlcl9TdG9wIHRvIGFsbG93IGFub3RoZXIgU3RhcnQgdG8KCXN1Y2NlZWQuCglSZW1vdmVkIE9TUyBjZW50cmljIGJ1ZmZlciByZWNyZWF0aW9uIGhhY2sgd2hlbiBkb2luZyBoYXJkd2FyZQoJYWNjZWxlcmF0aW9uLgoJQ2xlYW5lZCB1cCBlcnJvciByZXBvcnRpbmcgYW5kIHRyYWNpbmcuCgoJKiBkbGxzL3NobHdhcGkvdGVzdHMvc2hyZWcuYzogSmFtZXMgSGF3a2lucyA8dHJ1aWtlbkBnbWFpbC5jb20+CglNYWtlIGZvdXIgc2hyZWcgdGVzdHMgcGFzcyBvbiBYUC4KCgkqIGRsbHMvc2hkb2N2dy9zaGRvY3Z3LnNwZWMsIGRsbHMvc2hkb2N2dy9zaGRvY3Z3X21haW4uYzoKCUNocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUFkZGVkIHN0dWIgZm9yIFNldFF1ZXJ5TmV0U2Vzc2lvbkNvdW50LgoKCSogZGxscy93aW5pbmV0L2ludGVybmV0LmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCVBhc3MgdGhlIGFkZHJlc3Mgb2YgdGhlIGhhbmRsZSByYXRoZXIgdGhhbiBqdXN0IHRoZSBoYW5kbGUgdG8gZml4IGEKCWNyYXNoIHdpdGggSUUuCgoJKiBkbGxzL2ltYWdlaGxwL2ltYWdlaGxwLnNwZWM6IENocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUZpeGVkIHNvbWUgZm9yd2FyZHMuCgoyMDA0LTExLTEwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jcnlwdDMyL2NlcnQuYywgZGxscy9jcnlwdDMyL2NyeXB0MzIuc3BlYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcHJvdmUgdGhlIENlcnRTdG9yZSBjb2RlIGEgbGl0dGxlLgoKCSogZGxscy9hZHZhcGkzMi9hZHZhcGkzMi5zcGVjLCBkbGxzL2FkdmFwaTMyL3NlcnZpY2UuYzoKCUphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CgktIFN0dWIgU2V0U2VydmljZU9iamVjdFNlY3VyaXR5IHRvIHByZXRlbmQgdG8gd29yayAocmV0dXJuIHRydWUpLgoJLSBDaGFuZ2UgUXVlcnlTZXJ2aWNlT2JqZWN0U2VjdXJpdHkgc28gaXQgaW5pdGlhbGl6ZXMgdGhlIEFDTCB3aXRoIGEKCSAgbnVsbCBEQUNMLCBhbmQgcmV0dXJuIGFzIHRob3VnaCBpdCB3b3JrZWQuCgktIENoYW5nZWQgUXVlcnlTZXJ2aWNlU3RhdHVzIHRvIHRlbGwgaWYgdGhlIHNlcnZpY2UgaXMgcnVubmluZyBieSB0aGUKCSAgcHJlc2VuY2Ugb2Ygc29tZSBuYW1lZCBzaGFyZWQgc3RvcmFnZSAtIGNvcGllZCBmcm9tIFN0YXJ0U2VydmljZSB3aGVuCgkgIGl0IGNoZWNrcyB0byBzZWUgaWYgaXRzIGFscmVhZHkgcnVubmluZy4KCgkqIGRsbHMvc2hsd2FwaS90ZXN0cy9zaHJlZy5jOiBKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCVVzZSBTSERlbGV0ZUtleSB0byByZW1vdmUgbGVmdG92ZXIga2V5cyBmcm9tIHRoZSBzaHJlZyB0ZXN0cy4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIFNldCBjYWNoZSBiaXRtYXAgZGltZW5zaW9ucyBjb3JyZWN0bHkgd2hlbiBhIDB4MCBpbWFnZSBsaXN0IGlzIHVzZWQuCgktIE9wdGltaXplIFdNX1NUWUxFQ0hBTkdFRCBoYW5kbGVyIHRvIG9ubHkgcmVkcmF3IHdoZW4gYSBDQ1NfKiBzdHlsZQoJICBpcyBjaGFuZ2VkLCBsaWtlIG5hdGl2ZS4KCgkqIGRsbHMvcnNhZW5oL3JzYWVuaC5jOiBNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglDUEFjcXVpcmVDb250ZXh0OiBTZXQgbGFzdCBlcnJvciB0byBFUlJPUl9TVUNDRVNTIGluIGNhc2Ugb2Ygc3VjY2Vzcy4KCjIwMDQtMTEtMDkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJQWRkIGEgZmlyc3QgQUNfQ0hFQ0tfSEVBREVSUywgZm9yY2luZyBjaGVja2luZyBvZiB0aGUgZGVmYXVsdCBpbmNsdWRlcwoJZXZlbiB3aGVuIGJ1aWxkaW5nIHdpbmUgd2l0aG91dCBYMTEuCgoJKiBkbGxzL250ZGxsL2ZpbGUuYzogSGFtaXNoIDxoYW1pc2hfbm9zcGFtQHlhaG9vLmNvbT4KCUZpeCBmb3IgYXN5bmMgd3JpdGVzIHRvIGNvbW0gcG9ydHMuCgoJKiBkbGxzL3NobHdhcGkvdGVzdHMvb3JkaW5hbC5jOgoJU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtTGluZS5jb20+CglGaXhlZCB0ZXN0cyBvZiBHZXRBY2NlcHRMYW5ndWFnZXNBIGZvciBwbGF0Zm9tcyA5OCxNRSxOVDQuCgoJKiBkbGxzL3ZlcnNpb24vdGVzdHMvaW5mby5jOgoJU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtTGluZS5jb20+CglGaXhlZCBHZXRGaWxlVmVyc2lvbkluZm9TaXplQSB0ZXN0cyBvbiBOVDQgcGxhdGZvcm0uCgoJKiBkbGxzL2Rzb3VuZC9jYXB0dXJlLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglSZW1vdmUgcmVkdW5kYW50IEdVSUQgY2hlY2suCgoJKiBkbGxzL2NvbWN0bDMyL3VwZG93bi5jLCB3aW5kb3dzL3NweS5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCS0gZG8gbm90IG1vdmUgdXBkb3duIGNvbnRyb2wgYW5kIGJ1ZGR5IGlmIGFuIGFsaWdubWVudCB3YXMgbm90IHJlcXVlc3RlZAoJLSBpbiBVRE1fU0VUQUNDRUwgaGFuZGxlciBkbyBub3QgZm9yZ2V0IHRvIHVwZGF0ZSBudW1iZXIgb2YgYWNjZWxlcmF0b3JzCgktIHVwZGF0ZSBhcnJvd3MgaW5mbyBpbiBXTV9MQlVUVE9ORE9XTiBhcyB3ZWxsIGFzIGluIFdNX01PVVNFTU9WRQoJLSB1c2UgYWNjZWxlcmF0b3JzIGluIFdNX0xCVVRUT05ET1dOIGhhbmRsZXIKCgkqIGRsbHMvdXh0aGVtZS9kcmF3LmM6IEtldmluIEtvbHR6YXUgPGtldmluQHBsb3Aub3JnPgoJSW1wbGVtZW50YXRpb24gb2YgR2V0VGhlbWVCYWNrZ3JvdW5kRXh0ZW50LgoJUGFydGlhbCBpbXBsZW1lbnRhdGlvbiBvZiBHZXRUaGVtZUJhY2tncm91bmRSZWdpb24uCglDb3JyZWN0IGEgZmV3IGNvbW1lbnRzLgoKCSogZGxscy94MTFkcnYveHJlbmRlci5jOiBLZXZpbiBLb2x0emF1IDxrZXZpbkBwbG9wLm9yZz4KCUNoYW5nZSBBbHBoYUJsZW5kIHRvIHVzZSBkZXN0aW5hdGlvbiBkaW1lbnNpb25zIHJhdGhlciB0aGVuIHNvdXJjZS4KCgkqIGRsbHMvdXh0aGVtZS9zeXN0ZW0uYzogS2V2aW4gS29sdHphdSA8a2V2aW5AcGxvcC5vcmc+CglGaXggY3Jhc2ggd2hlbiBubyB0aGVtZSBpcyBzZXQgYW5kIGFwcGxpY2F0aW9uIGlnbm9yZXMgZXJyb3JzLgoKCSogZGxscy9vbGVhdXQzMi9vbGVwaWN0dXJlLmM6IFdhbHQgT2didXJuIDxyZXViZW5AdWdjcy5jYWx0ZWNoLmVkdT4KCUluIE9sZVBpY3R1cmVJbXBsX0xvYWQsIGFsd2F5cyB1c2UgRElCX1JHQl9DT0xPUlMgYmVjYXVzZSBubyBpbmRleGVkCglwYWxldHRlIGhhcyBiZWVuIGRlZmluZWQuCgoyMDA0LTExLTA4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gYk50ZlVuaWNvZGUgaXMgYSBkdXAnIG9mIGJVbmljb2RlIHNvIHJlbW92ZSBpdCBhbmQgZml4IHRoZSBmZXcKCSAgcGxhY2VzIHdoZXJlIGl0IHdhcyB1c2VkLgoJLSBSZW1vdmUgYSBsb2FkIG9mIHVzZWxlc3MgTlVMTCBpbmZvUHRyIGNoZWNrcy4KCS0gSGFyZGNvZGUgdGhlIGRlZmF1bHQgcGFkZGluZyBsaWtlIG5hdGl2ZSBpbnN0ZWFkIG9mIHVzaW5nIGEgd2Fja3kgZm9ybXVsYS4KCS0gUmVwbGFjZSBzb21lIHRhYnMgd2l0aCBzcGFjZXMgYW5kIHJlbW92ZSBOTUhEUiBjYXN0cy4KCgkqIGRsbHMvdXNlci9tZW51LmM6IFdpbGxpYW0gUG9ldHJhIFlvZ2EgSCA8d2lsbGlhbXBvZXRyYUB5YWhvby5jb20+CglHaXZlIHRoZSBmaXJzdCBtZW51IGl0ZW0gb2YgYSBwb3B1cCBtZW51IGEgZGlzdGFuY2Ugb2YgMSBwaXhlbCB0byB0aGUKCXRvcCBib3JkZXIuCgoJKiB3aW5kb3dzL25vbmNsaWVudC5jOiBXaWxsaWFtIFBvZXRyYSBZb2dhIEggPHdpbGxpYW1wb2V0cmFAeWFob28uY29tPgoJRml4IHRoZSBzaXplIGFuZCBwb3NpdGlvbiBvZiB0aGUgc3lzdGVtIG1lbnUgaWNvbiBvbiB0aGUgY2FwdGlvbiBiYXIuCgoJKiBkbGxzL21zdmNydC9jcHAuYywgZGxscy9tc3ZjcnQvdGVzdHMvY3BwLmM6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCU5vdyB0aGF0IG5hbWUgdW5kZWNvcmF0aW9uIHdvcmtzLCBmaXggdGhlIHR5cGUgaW5mby4KCgkqIGRsbHMvbXN2Y3J0L01ha2VmaWxlLmluLCBkbGxzL21zdmNydC9tYWluLmMsIGRsbHMvbXN2Y3J0L3VuZG5hbWUuYzoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJSW1wbGVtZW50ZWQgX191bkROYW1lIGFuZCBfX3VuRE5hbWVFeCBmdW5jdGlvbnMuCgoJKiBkbGxzL3VzZXIvZWRpdC5jLCBkbGxzL3VzZXIvdGVzdHMvLmN2c2lnbm9yZSwKCSAgZGxscy91c2VyL3Rlc3RzL01ha2VmaWxlLmluLCBkbGxzL3VzZXIvdGVzdHMvZWRpdC5jOgoJVml0YWxpeSBNYXJnb2xlbiA8d2luZS1wYXRjaEBraWV2aW5mby5jb20+CgktIHJldHVybiAid2FudCBhbGwga2V5cyIgZm9yIFdNX0dFVERMR0NPREUgd2hlbiBtdWx0aS1saW5lCgktIHNpbmdsZS1saW5lIGVkaXQgY29udHJvbCBkb2VzIG5vdCB3YW50IGFsbCBtZXNzYWdlcwoJLSBhZGRpdGlvbmFsIHN0eWxlIGNvbWJpbmF0aW9ucyBhcmUgcG9zc2libGUgZm9yIGJvdGggbXVsdGktbGluZSBhbmQKCSAgc2luZ2xlLWxpbmUgZWRpdCBjb250cm9scwoJLSB0ZXN0cyB0byBjb25maXJtIGl0CgoJKiBkbGxzL2NvbWN0bDMyL21vbnRoY2FsLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglEaW1lbnNpb25zIG9mIG1vbnRoIGNhbGVuZGFyIGNvbnRyb2wgc2hvdWxkIG5vdCBkZXBlbmQgb24gdGhlIGNsaWVudAoJd2luZG93IHNpemUuCgoJKiBkbGxzL2hoY3RybC5vY3gvLmN2c2lnbm9yZSwgZGxscy9oaGN0cmwub2N4L01ha2VmaWxlLmluLAoJICBkbGxzL2hoY3RybC5vY3gvdmVyc2lvbi5yYzoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJQWRkIHZlcnNpb24gaW5mb3JtYXRpb24uCgoJKiBkbGxzL2RiZ2hlbHAvZGJnaGVscF9wcml2YXRlLmgsIGRsbHMvZGJnaGVscC9lbGZfbW9kdWxlLmMsCgkgIGRsbHMvZGJnaGVscC9tZW1vcnkuYywgZGxscy9kYmdoZWxwL21vZHVsZS5jLAoJICBkbGxzL2RiZ2hlbHAvcGVfbW9kdWxlLmMsIGRsbHMvZGJnaGVscC9zdGFicy5jOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CgktIGZpeGVkIGxvYWRpbmcgc3RhYnMgZnJvbSBQRSBtb2R1bGVzIGNvbXBpbGVkIHdpdGggTWluZ1cKCS0gZW5oYW5jZSBzb21lIGxvYWRpbmcgbG9naWMgYmV0d2VlbiBFTEYvUEUgRExMIHBhaXJzCgktIHJlbW92ZWQgdW51c2VkIGluZGlyZWN0IG1lbW9yeSBhY2Nlc3MgZnVuY3Rpb24KCS0gZ2V0IHJpZCBvZiBzb21lIEdDQyBnZW5lcmF0ZWQgc3ltYm9scwoKCSogcHJvZ3JhbXMvd2luZWRiZy9icmVhay5jLCBwcm9ncmFtcy93aW5lZGJnL2RiZy55LAoJICBwcm9ncmFtcy93aW5lZGJnL2RlYnVnZ2VyLmgsIHByb2dyYW1zL3dpbmVkYmcvbWVtb3J5LmMsCgkgIHByb2dyYW1zL3dpbmVkYmcvd2luZWRiZy5jOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CgktIGZpeGVkIHJlZ3Jlc3Npb24gaW4gd2F0Y2hwb2ludCBzZXR0aW5nIChieSBhZGRyKQoJLSBpbiBiYWNrdHJhY2UsIHNob3cgYXQgbGVhc3QgbW9kdWxlIHdoZW4gbm8gc3ltYm9sIGlzIGZvdW5kCgktIHByb3RlY3QgZXZlbnQgcGFyc2luZyBmcm9tIGNvbW1hbmQgbGluZSAod2hlbiBubyByZWFsIG51bWJlcikKCgkqIGRsbHMveDExZHJ2L2tleWJvYXJkLmM6IFdhbHQgT2didXJuIDxyZXViZW5AdWdjcy5jYWx0ZWNoLmVkdT4KCVR1cm4gSVNPX0xlZnRfVGFiIGJhY2sgaW50byBhIHRhYiBjaGFyYWN0ZXIgaWYgbmVlZGVkLgoKCSogZGxscy9vbGVhdXQzMi9vbGVhdXQuYzoKCVdpbGxpYW0gUG9ldHJhIFlvZ2EgSCA8d2lsbGlhbXBvZXRyYUB5YWhvby5jb20+CglVc2UgQ09MT1JfTUVOVUJBUiAoaW5zdGVhZCBvZiBDT0xPUl9HUkFESUVOVElOQUNUSVZFQ0FQVElPTikgYXMgdGhlCgl1cHBlciBsaW1pdCBpbiBHZXRTeXNDb2xvcigpIHZhbGlkYXRpb24uCgoJKiBkbGxzL3VzZXIvdWl0b29scy5jOiBXaWxsaWFtIFBvZXRyYSBZb2dhIEggPHdpbGxpYW1wb2V0cmFAeWFob28uY29tPgoJRml4IHRoZSBidXR0b24gZWRnZSBjb2xvciwgYnkgdXNpbmcgdGhlIEJGX1NPRlQgYm9yZGVyIHN0eWxlIGZvcgoJYnV0dG9ucy4KCgkqIGluY2x1ZGUvd2ludXNlci5oOiBS6W1pIEFzc2FpbGx5IDxyZW1pLmFzc2FpbGx5QGZyZWUuZnI+CglBZGQgc29tZSBzdHJ1Y3R1cmUgdGFncy4KCjIwMDQtMTEtMDYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL250ZGxsL2xvYWRlci5jOgoJRnJlZSB0aGUgbWVtb3J5IHZpZXcgYmVmb3JlIHdlIHVubG9hZCBhIGJ1aWx0aW4gZGxsIHRvIGF2b2lkIGEgcmFjZQoJY29uZGl0aW9uLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvdGltZS5jLCBkbGxzL2tlcm5lbC90aW1lLmMsCgkgIGRsbHMvbXN2Y3J0L3Rlc3RzL3RpbWUuYywgZGxscy9tc3ZjcnQvdGltZS5jLAoJICBkbGxzL250ZGxsL3Rlc3RzL3RpbWUuYywgZGxscy9udGRsbC90aW1lLmM6CglSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CgktIFJ0bFRpbWVGaWVsZHNUb1RpbWUgc2hvdWxkIG5vdCBub3JtYWxpemUgdGhlIHRpbWUgZmllbGRzCgkgIHN0cnVjdHVyZS4gSW5zdGVhZCByZXR1cm4gZXJyb3Igd2hlbiBpdCBpcyBnaXZlbiBhbiB1bm9ybWFsaXplZAoJICBkYXRlLgoJLSBVc2UgYmV0dGVyIGFsZ29yaXRobXMgZm9yIFJ0bFRpbWVUb1RpbWVGaWVsZHMgYW5kCgkgIFJ0bFRpbWVGaWVsZHNUb1RpbWUuIFJ0bFRpbWVUb1RpbWVGaWVsZHMgaXMgYWJvdXQgMyB0aW1lcyBmYXN0ZXIuCgktIEFkZCB0ZXN0cyBmb3IgUnRsVGltZUZpZWxkc1RvVGltZS4KCS0gU3lzdGVtVGltZVRvRmlsZVRpbWUgbXVzdCBmYWlsIGlmIFJ0bFRpbWVGaWVsZHNUb1RpbWUgZmFpbHMuIFVzZXJzCgkgIG9mIFN5c3RlbVRpbWVUb0ZpbGVUaW1lIG11c3QgZG8gbGlrZXdpc2UuCgktIFJlbW92ZSBhIHRvZG9fd2luZSBmcm9tIFN5c3RlbVRpbWVUb0ZpbGVUaW1lIHRlc3RzLgoJLSBTaW5jZSBtc3ZjcnQubWt0aW1lIG11c3QgYWNjZXB0IHVubm9ybWFsaXplZCBkYXRlcywgaXQgY2Fubm90IHVzZQoJICBTeXN0ZW1UaW1lVG9GaWxlVGltZSBhbmQgZG8gdGhlIGNhbGN1bGF0aW9ucyBpdHNlbGYuCgktIEFkZCBzb21lIHRlc3RzIGZvciBta3RpbWUgYWNjZXB0aW5nIHVubm9ybWFsaXplZCBkYXRlcy4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlZm9udC5jOiBNaWtlIEhlYXJuIDxtaWtlQG5hdmkuY3g+CglTdXBwb3J0IGFzc2lnbmluZyBmb250IG9iamVjdHMgdG8gb3RoZXIgZm9udCBvYmplY3RzLgoKCSogZGxscy9jb21jdGwzMi9hbmltYXRlLmMsIGRsbHMvY29tY3RsMzIvY29tYm9leC5jLAoJICBkbGxzL2NvbWN0bDMyL2RhdGV0aW1lLmMsIGRsbHMvY29tY3RsMzIvZmxhdHNiLmMsCgkgIGRsbHMvY29tY3RsMzIvaGVhZGVyLmMsIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYywKCSAgZGxscy9jb21jdGwzMi9tb250aGNhbC5jLCBkbGxzL2NvbWN0bDMyL25hdGl2ZWZvbnQuYywKCSAgZGxscy9jb21jdGwzMi9yZWJhci5jLCBkbGxzL2NvbWN0bDMyL3N5c2xpbmsuYywKCSAgZGxscy9jb21jdGwzMi90cmVldmlldy5jOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlIHVubmVjZXNzYXJ5IFdORFBST0MgY2FzdHMuCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmM6IEdlcmFsZCBQZmVpZmVyIDxnZXJhbGRAcGZlaWZlci5jb20+CglGaXggZm9ybWF0IHN0cmluZyBpbiBXU0FBZGRyZXNzVG9TdHJpbmdBKCkuCgoJKiBpbmNsdWRlL3dpbmUvbGlzdC5oOiBNaWtlIEhlYXJuIDxtaWtlQG5hdmkuY3g+CglEb2N1bWVudCB0aGUgbGlua2VkIGxpc3Qgc3VwcG9ydCBjb2RlLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmMsIGluY2x1ZGUvY29tbWN0cmwuaDoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCBUQk5fUkVTVE9SRSBub3RpZmljYXRpb24uCgoJKiBwcm9ncmFtcy93aW5lZGJnL3N0YWNrLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUxpbWl0IFN0YWNrV2FsayBpdGVyYXRpb25zIHRvIHByZXZlbnQgaW5maW5pdGUgbG9vcC4KCjIwMDQtMTEtMDQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9yc2FlbmgvLmN2c2lnbm9yZSwKCSAgZGxscy9yc2FlbmgvTWFrZWZpbGUuaW4sIGRsbHMvcnNhZW5oL2hhbmRsZS5jLCBkbGxzL3JzYWVuaC9oYW5kbGUuaCwKCSAgZGxscy9yc2FlbmgvaW1wbG9zc2wuYywgZGxscy9yc2FlbmgvaW1wbG9zc2wuaCwgZGxscy9yc2FlbmgvcnNhZW5oLmMsCgkgIGRsbHMvcnNhZW5oL3JzYWVuaC5zcGVjLCBkbGxzL3JzYWVuaC90ZXN0cy8uY3ZzaWdub3JlLAoJICBkbGxzL3JzYWVuaC90ZXN0cy9NYWtlZmlsZS5pbiwgZGxscy9yc2FlbmgvdGVzdHMvcnNhZW5oLmMsCgkgIGluY2x1ZGUvY29uZmlnLmguaW4sIHRvb2xzL3dpbmUuaW5mOgoJTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJSW1wbGVtZW50ZWQgYSBzdWJzdGFudGlhbCBwYXJ0IG9mIHJzYWVuaC5kbGwuCgoJKiBkb2N1bWVudGF0aW9uL3dpbmUtZGV2ZWwuc2dtbCwgZG9jdW1lbnRhdGlvbi93aW5lZGV2LWtlcm5lbC5zZ21sOgoJTWlrZSBIZWFybiA8bWlrZUBuYXZpLmN4PgoJRG9jdW1lbnQgaG93IFNFSCB3b3JrcyBpbiBXaW5lLgoKCSogZGxscy9rZXJuZWwvbG9jYWxlLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGQgdW5peCBsb2NhbGUgdG8gY29kZSBwYWdlIG1hcHBpbmcgZm9yIElTTy04ODU5LTE2LgoKCSogZGxscy93aW5zb2NrL01ha2VmaWxlLmluLCBkbGxzL3dpbnNvY2svc29ja2V0LmMsCgkgIGRsbHMvd2luc29jay90ZXN0cy9zb2NrLmM6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCUltcGxlbWVudCBXU0FBZGRyZXNzVG9TdHJpbmd7QSxXfS4KCUFkZCB0ZXN0cyBmb3IgV1NBQWRkcmVzc1RvU3RyaW5ne0EsV30gYW5kIFdTQVN0cmluZ1RvQWRkcmVzc3tBLFd9LgoJQWRkIFRSQUNFcyB0byBXU0FTdHJpbmdUb0FkZHJlc3N7QSxXfS4KCgkqIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jLCBkbGxzL3dpbmluZXQvd2luaW5ldC5zcGVjOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudGVkIEludGVybmV0R2V0Q29ubmVjdGVkU3RhdGVFeEEuCgoJKiBkbGxzL21zdmNydC90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL21zdmNydC90ZXN0cy9NYWtlZmlsZS5pbiwKCSAgZGxscy9tc3ZjcnQvdGVzdHMvcHJpbnRmLmMsIGRsbHMvbXN2Y3J0L3Rlc3RzL3NjYW5mLmM6CglBbmV1cmluIFByaWNlIDx3aW5lQHNoYWRvdmFsZC5keW5kbnMub3JnPgoJLSBNb3ZlIHByaW50ZiB0ZXN0cyBmcm9tIHNjYW5mLmMgdG8gcHJpbnRmLmMgKGFuZCBmaXggb25lIG9uIHRoZQoJICB3YXkpLgoJLSBBZGQgc29tZSBtb3JlLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYywgZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jLAoJICBkbGxzL3NoZWxsMzIvdW5kb2NzaGVsbC5oLCBpbmNsdWRlL3NobG9iai5oOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudGF0aW9uIG9mIFBhdGhDbGVhbnVwU3BlYy4KCgkqIGxpYnMvd2luZS9tbWFwLmM6IEdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJRGlzYWJsZSBtZW1vcnkgcmVzZXJ2YXRpb24gY29kZSBvbiBGcmVlQlNELCB3aGVyZSBpdCBqdXN0IGRvZXNuJ3QKCXdvcmsuCgoJKiBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmMsIGRsbHMvYWR2YXBpMzIvc2VydmljZS5jLAoJICBkbGxzL2FkdmFwaTMyL3Rlc3RzL3NlY3VyaXR5LmMsIGRsbHMvbnRkbGwvbnQuYywgaW5jbHVkZS93aW50ZXJubC5oOgoJSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJLSBpbXBsZW1lbnQgTG9va3VwUHJpdmlsZWdlTmFtZQoJLSBjb3JyZWN0IExvb2t1cFByaXZpbGVnZVZhbHVlIChoYWQgYSBidWZmZXIgb3ZlcnJ1biBhbmQgc29tZXRpbWVzCgkgIHJldHVybmVkIGluY29ycmVjdCBMVUlEcyBmb3Igd2VsbC1rbm93biB2YWx1ZXMpCgktIG1ha2UgQWxsb2NhdGVMb2NhbGx5VW5pcXVlSWQgbGVzcyBvYnZpb3VzbHkgaW5jb3JyZWN0CgktIGFkZCBhIGJ1bmNoIG9mIHRlc3QgY2FzZXMKCjIwMDQtMTEtMDMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC90YXNrLmMsIGRsbHMva2VybmVsL3Rlc3RzL2NoYW5nZS5jLAoJICBkbGxzL2tlcm5lbC90ZXN0cy90aHJlYWQuYywgZGxscy93aW5tbS9tbXN5c3RlbS5jOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJRml4IGJyb2tlbiB0aHJlYWQgc3RhcnQgcm91dGluZXMuCgoJKiB3aW5kb3dzL21zZ2JveC5jOiBJdmFuIExlbyBQdW90aSA8cHVvdGlAaW53aW5kLml0PgoJUHJvcGVyIGltcGxlbWVudGF0aW9uIG9mIHN5c21vZGFsIG1lc3NhZ2UgYm94ZXMuCgoJKiBkbGxzL21zdmNydC9maWxlLmM6IFRvbnkgTGFtYnJlZ3RzIDx0b255X2xhbWJyZWd0c0B0ZWx1c3BsYW5ldC5uZXQ+CglGaXggdXAgaW5pdF9mcCB0ZXN0IGZvciBmcmVvcGVuLgoKCSogZGxscy9tc2kvYWN0aW9uLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglIYW5kbGUgMyBtb3JlIGN1c3RvbSBhY3Rpb24gdHlwZXMKCgkqIGRsbHMvYWR2YXBpMzIvdGVzdHMvc2VjdXJpdHkuYzogSmFrb2IgRXJpa3Nzb24gPGpha292QHZtbGludXgub3JnPgoJQWxsb2NhdGVBbmRJbml0aWFsaXplU2lkIGRvZXMgbm90IHdvcmsgb24gV2luOTguCgoJKiBkbGxzL21zY21zL3Byb2ZpbGUuYywgZGxscy9tc2Ntcy90ZXN0cy9wcm9maWxlLmM6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCUltcHJvdmUge1VuaW5zdGFsbCxJbnN0YWxsfUNvbG9yUHJvZmlsZXtBLFd9LgoJQmV0dGVyIHRlc3RzIGZvciB0aGVzZSBmdW5jdGlvbnMuCgoJKiBkbGxzL3dpbm1tL3Rlc3RzL2NhcHR1cmUuYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCURvbid0IGNvbnNpZGVyIGEgTU1TWVNFUlJfTk9UU1VQUE9SVEVEIGZhaWx1cmUgYSB0ZXN0IGZhaWx1cmUuCgoyMDA0LTExLTAyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogdG9vbHMvbWFrZV9yZXF1ZXN0czogUmVzdG9yZSBjaHVuayBvZiBjb2RlIGxvc3QgaW4gcHJldmlvdXMgY2hhbmdlcy4KCgkqIGRsbHMvbnRkbGwvc3luYy5jOiBKZXJlbXkgV2hpdGUgPGp3aGl0ZUBjb2Rld2VhdmVycy5jb20+CglUdW5lIHRoZSBiZWhhdmlvciBvZiBTbGVlcCgpIGFuZCBXYWl0eHh4KCkgdG8gbW9yZSBjbG9zZWx5IHJlc2VtYmxlCglXaW5kb3dzIGJlaGF2aW9yLiAgVGhlIGtleSBpcyB0byB5aWVsZCBpbiBhIFNsZWVwIGFuZCBpbiBhbnkgV2FpdCB0aGF0Cgl0aW1lcyBvdXQuCgoJKiBkb2N1bWVudGF0aW9uL3Rlc3Rpbmcuc2dtbDogSXZhbiBMZW8gUHVvdGkgPHB1b3RpQGlud2luZC5pdD4KCURvd25sb2FkaW5nIHRoZSBwbGF0Zm9ybSBzZGsgZG9lc24ndCByZXF1aXJlIElFIGFueSBtb3JlLgoKCSogZGxscy93aW5tbS90aW1lLmM6IEplcmVteSBXaGl0ZSA8andoaXRlQGNvZGV3ZWF2ZXJzLmNvbT4KCVRoZSBTbGVlcCgwKSBpbiB0aGlzIGxvb3AgaXMgaW5jb3JyZWN0LCBhbmQgc2hvdWxkIGJlIHJlbW92ZWQuICBUaGlzCglmaXhlcyBpVHVuZXMgYW5kIGEgZ2FtZSByZXBvcnRlZCBieSBjaGUuCgoJKiBkbGxzL3dpbmVwcy9iaXRtYXAuYywgZGxscy93aW5lcHMvcHMuYywgZGxscy93aW5lcHMvcHNkcnYuaDoKCUh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglTY2FsZSB0aGUgcGF0dGVybnMgc28gdGhhdCB0aGV5J3JlIHJlbmRlcmVkIGF0IDMwMGRwaS4KCUNyZWF0ZSB0aGUgaW1hZ2UgZGljdGlvbmFyeSBvbmNlLCByYXRoZXIgdGhhbiBldmVyeSB0aW1lIHRoZSBQYWludFByb2MKCWlzIGNhbGxlZCAtIHNob3VsZCBzcGVlZCBwcmludGluZyB1cCBzb21ld2hhdC4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYywgZGxscy93aW5zb2NrL3dzMl8zMi5zcGVjOgoJU3RlZmFuIET2c2luZ2VyIDxzdGVmYW5kb2VzaW5nZXJAZ214LmF0PgoJQWRkZWQgV1NBQWRkcmVzc1RvU3RyaW5nQS9XIHN0dWJzLgoKCSogZGxscy9udGRsbC90aW1lLmM6IFZpdGFseSBMaXBhdG92IDxsYXZAZXRlcnNvZnQucnU+CglBZGRlZCBNU0sgdGltZXpvbmUgaW5mby4KCgkqIGRsbHMvd2luc29jay9wcm90b2NvbC5jOiBIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCU1ha2Ugc3VyZSB3ZSBtYXRjaCBvdXRwdXQgb2YgV2luMmsgcHJvdG9jb2wgZW51bWVyYXRpb24gZnVuY3Rpb25zLgoKCSogZGxscy9udGRsbC90aW1lLmM6IE1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCUFkZGVkIENFVCB0aW1lem9uZSBpbmZvLgoKCSogZGxscy9nZGkvYml0bWFwLmMsIGRsbHMvZ2RpL2RpYi5jLCBkbGxzL2dkaS90ZXN0cy9iaXRtYXAuYywKCSAgZGxscy94MTFkcnYvZGliLmM6CglNaWNoYWVsIEthdWZtYW5uIDxoYWxsb0BtaWNoYWVsLWthdWZtYW5uLmNoPgoJLSBFeHRlbmRlZCBzdXBwb3J0IGZvciBCSVRNQVBDT1JFSU5GTyAvIEJJVE1BUENPUkVIRUFERVIgc3RydWN0dXJlcy4KCS0gQWx3YXlzIGNhbGN1bGF0ZSB0aGUgbG9jYXRpb24gb2YgdGhlIGNvbG9yIHRhYmxlLgoJLSBDcmVhdGVDb21wYXRpYmxlQml0bWFwOiBDcmVhdGUgYSBESUIgc2VjdGlvbiBpZiBuZWNlc3NhcnkuCgktIEFkZGVkIHNvbWUgdGVzdHMuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmM6IEZhYnJpY2UgTeluYXJkIDxtZW5hcmQuZmFicmljZUB3YW5hZG9vLmZyPgoJQ2hlY2sgdGhlIHR5cGUgb2YgZXJyb3IgcmV0dXJuZWQgYnkgU0hDcmVhdGVEaXJlY3RvcnlFeFcuCgoJKiBkbGxzL250ZGxsL3RpbWUuYzogUm9nZXIgT2xzb24gPHU2MEBjb21jYXN0Lm5ldD4KCUFkZCBQYWNpZmljIFN0YW5kYXJkIFRpbWUgKFBTVCkgdG8gVFpfSU5GTy4KCjIwMDQtMTEtMDEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL3VzZXIuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJU3RhcnQgdGhlIHJlYm9vdCBwcm9jZXNzIGluIEV4aXRXaW5kb3dzRXguCgoJKiBkbGxzL3NoZG9jdncvLmN2c2lnbm9yZSwgZGxscy9zaGRvY3Z3L01ha2VmaWxlLmluLAoJICBkbGxzL3NoZG9jdncvc2hkb2N2dy5yYywgZGxscy9zaGRvY3Z3L3NoZG9jdndfbWFpbi5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRG93bmxvYWQgdGhlIE1vemlsbGEgQWN0aXZlIFggY29udHJvbCBvbiBkZW1hbmQuCgoJKiBkbGxzL3dpbnNvY2svcHJvdG9jb2wuYywgZGxscy93aW5zb2NrL3Rlc3RzLy5jdnNpZ25vcmUsCgkgIGRsbHMvd2luc29jay90ZXN0cy9NYWtlZmlsZS5pbiwgZGxscy93aW5zb2NrL3Rlc3RzL3Byb3RvY29sLmMsCgkgIGRsbHMvd2luc29jay93czJfMzIuc3BlYywgaW5jbHVkZS93aW5zb2NrMi5oOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglGaWxsIFdTQVBST1RPQ09MX0lORk8gc3RydWN0dXJlcyBpbnN0ZWFkIG9mIFBST1RPQ09MX0lORk8gc3RydWN0dXJlcy4KCUltcGxlbWVudCBXU0NFbnVtUHJvdG9jb2xzKCkuCglBZGQgc29tZSB0ZXN0cy4KCgkqIGRsbHMvY29tY3RsMzIvbmF0aXZlZm9udC5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQ29udmVydCBOYXRpdmVGb250IGNvbnRyb2wgdG8gdW5pY29kZSwgdXNlIGhickJhY2tncm91bmQgYXMgaW4gbmF0aXZlLgoKCSogZGxscy9hZHZwYWNrL2FkdnBhY2suYywgZGxscy9hZHZwYWNrL2FkdnBhY2suc3BlYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGQgc2ltcGxlIGltcGxlbWVudGF0aW9uIG9mIGFkdnBhY2suRG9JbmZJbnN0YWxsLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglEbyBub3QgcmV0cmlldmUgaW5mb1B0ciB0d2ljZSBpbiBUb29sYmFyV2luZG93UHJvYyBlbnRyeS4KCgkqIGRsbHMvYWR2YXBpMzIvY3J5cHQuYzogTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJQ3J5cHRHZXRVc2VyS2V5OiBTZXQgcmV0dXJuIGtleSBoYW5kbGUgdG8gemVybyBpbiBjYXNlIG9mIGZhaWx1cmUuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglTZW5kIG5vdGlmaWNhdGlvbiBtZXNzYWdlcyBpbiB0aGUgZm9ybWF0IGRpY3RhdGVkIGJ5CglpbmZvUHRyLT5ub3RpZnlGb3JtYXQuCgoJKiB0b29scy9NYWtlZmlsZS5pbjogVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJUHV0ICQoRlJFRVRZUEVMSUJTKSBhcyB0aGUgbGFzdCBwYXJ0LCBhcyBpdCBjYW4gaW5jbHVkZSB0aGUgZGlyIG9mIGFuCglvbGRlciBXaW5lIGluc3RhbGwgd2hpY2ggZG8gbm90IGhhdmUgdGhlIHNhbWUgZXhwb3J0cyAocmVwb3J0ZWQgYnkKCWpvb2tlKS4KCgkqIGRsbHMva2VybmVsL2xvY2FsZS5jLCBkbGxzL2tlcm5lbC90ZXN0cy9sb2NhbGUuYzoKCVN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJU2V0IHRoZSBjb3JyZWN0IGxhc3QgZXJyb3IgaW4gRW51bVVJTGFuZ3VhZ2VzQSwgd2l0aCB0ZXN0cy4KCgkqIGluY2x1ZGUvd2ludXNlci5oLCB3aW5kb3dzL3N5c2NvbG9yLmM6CglXaWxsaWFtIFBvZXRyYSBZb2dhIEggPHdpbGxpYW1wb2V0cmFAeWFob28uY29tPgoJQWRkIENPTE9SX01FTlVISUxJR0hUIGFuZCBDT0xPUl9NRU5VQkFSIHRvIHRoZSBzeXN0ZW0gY29sb3JzLgoKMjAwNC0xMC0zMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvdXNlci9tc2cxNi5jLCBkbGxzL3VzZXIvcGFpbnRpbmcuYywgaW5jbHVkZS93aW4uaCwKCSAgd2luZG93cy9tZXNzYWdlLmM6CglHZXQgcmlkIG9mIHRoZSBXSU5fTkVFRFNfQkVHSU5QQUlOVCBmbGFnLCBXaW5kb3dzIHdpbGwgaGFwcGlseSBsb29wCglmb3JldmVyIHRvbyBpZiBXTV9QQUlOVCBpcyBub3QgaGFuZGxlZCBwcm9wZXJseS4KCgkqIGRvY3VtZW50YXRpb24vaW50cm9kdWN0aW9uLnNnbWw6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQmFzZWQgb24gdGhlIGxhc3QgMzYrIG1vbnRocyBXaW5lIGlzIHJlbGVhc2VkIG9uY2UgYSBtb250aCBvbgoJYXZlcmFnZS4KCUFzc29ydGVkIHNwZWxsaW5nIGZpeGVzIGFuZCB0d2Vha3MuCgoJKiBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9DYS5yYywgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfQ3MucmMsCgkgIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX0RhLnJjLCBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9EZS5yYywKCSAgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfRW4ucmMsIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX0VvLnJjLAoJICBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9Fcy5yYywgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfRmkucmMsCgkgIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX0ZyLnJjLCBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9IdS5yYywKCSAgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfSXQucmMsIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX0phLnJjLAoJICBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9Lby5yYywgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfTmwucmMsCgkgIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX05vLnJjLCBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9QbC5yYywKCSAgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfUHQucmMsIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX1J1LnJjLAoJICBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9TaS5yYywgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfU2sucmMsCgkgIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX1N2LnJjLCBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9Vay5yYywKCSAgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfV2EucmMsIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX1poLnJjOgoJSXZhbiBMZW8gUHVvdGkgPHB1b3RpQGlud2luZC5pdD4KCVJlbW92ZSBEU19TWVNNT0RBTCBmcm9tIG1zZ2JveCByZXNvdXJjZS4KCgkqIGRsbHMva2VybmVsL3Byb2Nlc3MuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBzdXBwb3J0IGZvciBSRUdfRVhQQU5EX1NaIGluIHNldF9yZWdpc3RyeV92YXJpYWJsZXMoKS4KCUZpeCBwcm9jZXNzaW5nIG9mIGVudmlyb25tZW50IHZhcmlhYmxlcyB0aGF0IGFyZSB0b28gYmlnICg+MTAyNAoJY2hhcmFjdGVycyk6IHRoZXkgc2hvdWxkIGJlIHRydW5jYXRlZCwgbm90IGlnbm9yZWQuCgoJKiB0b29scy9jMm1hbi5wbCwgdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMucG0sCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfbG9jYWwucG0sIHRvb2xzL3dpbmVtYWtlcjoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQWx0ZXIgdGhlIGZ1bmN0aW9ucyBkZWNsYXJhdGlvbiBvcmRlciBvciBwcmVkZWNsYXJlIHRoZW0gc28gcGVybCBjYW4KCWNoZWNrIHRoZSBwcm90b3R5cGVzLgoKCSogZGxscy9udGRsbC90ZXN0cy90aW1lLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJI2lmZGVmIG91dCB0aGUgdGVzdHMgaWYgY29tcGlsaW5nIHdpdGggdGhlIFBsYXRmb3JtIFNESyBoZWFkZXJzIHNpbmNlCgl0aGV5IGFyZSBtaXNzaW5nIFRJTUVfRklFTERTLgoKCSogZGxscy9ycGNydDQvdGVzdHMvZ2VuZXJhdGVkLmMsIHRvb2xzL3dpbmFwaS90ZXN0cy5kYXQ6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCU1JRExfU1RVQl9NRVNTQUdFLlVuaXF1ZVB0ckNvdW50IGhhcyBiZWVuIHJlbmFtZWQgaW4gdGhlIGxhdGVzdCBTREsgc28KCWlnbm9yZSBpdC4KCjIwMDQtMTAtMjkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3dpbnNwb29sL2luZm8uYywgZGxscy93aW5zcG9vbC93aW5zcG9vbC5kcnYuc3BlYzoKCVVscmljaCBDemVrYWxsYSA8dWxyaWNoQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBzdHVicyBmb3IgRW51bVByaW50UHJvY2Vzc29yc0FXLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvdGltZS5jLCBkbGxzL2tlcm5lbC90aW1lLmM6CglSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CgktIFNpbXBsaWZ5IHRoZSBjYWxjdWxhdGlvbiBpbiBUSU1FX0RheWxpZ2h0Q29tcGFyZURhdGU7CgktIEV4cGFuZCB0aGUgbnVtYmVyIG9mIGFwcGxpY2FibGUgdGVzdCBjYXNlcy4KCgkqIGRsbHMvdXNlci90ZXN0cy9pbnB1dC5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQ2xlYW4gdXAgdXNlcjMyL2lucHV0LmMgdGVzdCwgcmVtb3ZlIHRoZSB3cm9uZyBhc3N1bXB0aW9uIHRoYXQgYQoJd2luZG93IGFsd2F5cyByZWNlaXZlcyBpbnB1dCBmb2N1cyB1cG9uIGNyZWF0aW9uLgoKCSogaW5jbHVkZS93aW5pbmV0Lmg6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCURlZmluZSBzb21lIGV4dHJhIEhUVFBfUVVFUlkgdmFsdWVzLgoKCSogd2luZG93cy91c2VyLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUtpbGwgYWxsIHdpbmUgcHJvY2Vzc2VzIHdoZW4gZG9pbmcgRXhpdFdpbmRvd3NFeC4KCjIwMDQtMTAtMjggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2RpbnB1dC9rZXlib2FyZC5jOgoJVG9yYmr2cm4gQW5kZXJzc29uIDxUb3Jiam9ybi5FLkFuZGVyc3NvbkB0aWV0b2VuYXRvci5jb20+CglGaXhlZCBzaXplIGNoZWNrIGluIEdldERldmljZURhdGEuCgoJKiBkbGxzL3dpbmluZXQvdGVzdHMvaHR0cC5jOiBKYWtvYiBFcmlrc3NvbiA8amFrb3ZAdm1saW51eC5vcmc+CglTdXBwb3NlZGx5IGZpeCBodHRwIHRlc3Qgb24gV2luZG93cy4KCgkqIGRsbHMva2VybmVsL3ZvbHVtZS5jOiBSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglJbiBWT0xVTUVfUmVhZEZBVFN1cGVyYmxvY2s6CgktIGRvIG5vdCB0ZXN0IG9uIHRoZSBKTVAgaW5zdHJ1Y3Rpb246IG1vc3QgYm9vdCBibG9ja3MgaGF2ZSB0aGF0CgktIHRlc3QgaW5zdGVhZCBvbiB0aGUgIkZBVCIgc3RyaW5ncyBmaXJzdCwgYmVmb3JlIHRoZSBzaXplCgkgIGNhbGN1bGF0aW9uCgktIGRvIHNvbWUgcGFyYW1ldGVyIGNoZWNraW5nIHRvIHByZXZlbnQgYXJpdGhtZXRpYyBlcnJvcnMKCS0gdXNlIG1lYW5pbmdmdWwgbmFtZXMgaW5zdGVhZCBvZiBibG9jayBvZmZzZXRzCgkoYmFzZWQgb24gYSByZWplY3RlZCBwYXRjaCBmcm9tIFZpbmNlbnQgQulyb24pLgoKCSogZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jOgoJUm9sZiBLYWxiZXJtYXR0ZXIgPHJvbGYua2FsYmVybWF0dGVyQGNpdGVuZy5jb20+CglVc2UgU0hDcmVhdGVEaXJlY3RvcnlFeCBmdW5jdGlvbiBpbnN0ZWFkIG9mIGRvaW5nIGV4cGxpY2l0IHJlY3Vyc2l2ZQoJZGlyZWN0b3J5IGNyZWF0aW9uLgoKCSogZGxscy9zaGVsbDMyL3Rlc3RzL3NobGZpbGVvcC5jOgoJUm9sZiBLYWxiZXJtYXR0ZXIgPHJvbGYua2FsYmVybWF0dGVyQGNpdGVuZy5jb20+CglBZGQgdGVzdCBmb3IgU0hDcmVhdGVEaXJlY3RvcnlFeCBmdW5jdGlvbi4KCUZpeGVkIHNvbWUgdHlwb3MuCgoyMDA0LTEwLTI3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2VydmVyL3F1ZXVlLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglUYWtlIGludG8gYWNjb3VudCB3aW5kb3cgdmlzaWJpbGl0eSB3aGVuIHNlYXJjaGluZyBmb3IgYSB0YXJnZXQgZm9yIGEKCWhhcmR3YXJlIG1vdXNlIG1lc3NhZ2UuCgoJKiBzZXJ2ZXIvdXNlci5oLCBzZXJ2ZXIvd2luZG93LmM6IEFkZGVkIGlzX3dpbmRvd192aXNpYmxlIGZ1bmN0aW9uLgoKCSogZGxscy9jb21jdGwzMi9jb21ib2V4LmM6CglVc2UgY29ycmVjdCB0eXBlIGluc3RlYWQgb2Ygdm9pZCogaW4gaXRlbSBsaW5rZWQgbGlzdC4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0ZyLnJjOgoJRmFicmljZSBN6W5hcmQgPG1lbmFyZC5mYWJyaWNlQHdhbmFkb28uZnI+CglTb21lIEZyZW5jaCB0cmFuc2xhdGlvbnMgYWRkZWQuCgoJKiBkbGxzL2tlcm5lbC90aW1lLmMsIGluY2x1ZGUvd2luYmFzZS5oOgoJUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJLSBSZW9yZGVyZWQgc29tZSBjb2RlIGZyb20gdGhlIGV4aXN0aW5nIGhlbHBlciBfR2V0VGltZVpvbmVCaWFzIHRvCgkgIG1ha2UgaXQgbW9yZSBnZW5lcmFsIHVzZWZ1bCAoYW5kIGNoYW5nZWQgdGhlIGhlbHBlciBuYW1lcyB0bwoJICBUSU1FX3h5eikuCgktIE1ha2UgR2V0VGltZVpvbmVJbmZvcm1hdGlvbiByZXR1cm4gdGhlIGNvcnJlY3Qgem9uZSBpZCBjb25zdGFudHMuCgktIENoYW5nZWQgc29tZSAiY29uc3QgTFBYX1lfWiIgZGVjbGFyYXRpb25zIHRvICJjb25zdCBYX1lfWiAqIi4KCgkqIGRsbHMvc2hlbGwzMi9zaGxmaWxlb3AuYzoKCVJvbGYgS2FsYmVybWF0dGVyIDxyb2xmLmthbGJlcm1hdHRlckBjaXRlbmcuY29tPgoJRml4IGJhZCBtZW1vcnkgYWxsb2NhdGlvbiBmb3IgdW5pY29kZSBidWZmZXIuCgoJKiBkbGxzL3NobHdhcGkvdGVzdHMvb3JkaW5hbC5jOgoJU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtTGluZS5jb20+CglGaXhlZCBHZXRBY2NlcHRMYW5ndWFnZXNBIHRlc3RzIGZvciBXaW45OC4KCgkqIGRsbHMvdXNlci90ZXN0cy9tc2cuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUZsdXNoIHBlbmRpbmcgbWVzc2FnZXMgYmVmb3JlIHRlc3RpbmcgcGFpbnRpbmcgbWVzc2FnZSBzZXF1ZW5jZXMuCgoJKiBkbGxzL21zdmNydC90aW1lLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCUluIE1TVkNSVF9sb2NhbHRpbWUoKSByZXR1cm4gdG1faXNkc3QgPSAwIHdoZW4gdGhlcmUgYXJlIG5vIGRheWxpZ2h0Cgl0aW1lIGNoYW5nZXMgaW4gdGhlIGxvY2FsIHRpbWUgem9uZS4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYzogSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJX1NIRXhwYW5kRW52aXJvbm1lbnRTdHJpbmdzIHNob3VsZCByZXR1cm4gaW5wdXQgc3RyaW5nIGlmIG5vICUgZm91bmQKCXRvIGV4cGFuZCwgYW5kIHNob3VsZCBjYWxsIEV4cGFuZEVudmlyb25tZW50U3RyaW5nc1cgaWYgaXQgZG9lc24ndAoJaGFuZGxlIGFuIGVudmlyb25tZW50IHZhcmlhYmxlIGRpcmVjdGx5LiAgQmFzZWQgb24gYSBwYXRjaCBmcm9tIERhbgoJS2VnZWwuCgoJKiBpbmNsdWRlL3dpbnVzZXIuaDogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBwcm9wZXIgcHJvdG90eXBlcyBmb3IgR2V0Q2xhc3NMb25nUHRyQS9XIGZvciBfV0lONjQgY2FzZS4KCgkqIGRsbHMvY29tY3RsMzIvY29tYm9leC5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJTWlub3IgY2xlYW51cHMuCgoJKiBkbGxzL2NvbWN0bDMyL2hvdGtleS5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJVXNlIHR5cGVzYWZlIHNpZ25hdHVyZSB3aGVyZSBwb3NzaWJsZS4KCgkqIGRsbHMvY29tY3RsMzIvc3RhdHVzLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglSZW5hbWUgU1RBVFVTV0lORE9XSU5GTyB0byBTVEFUVVNfSU5GTywgZm9yIGNvbnNpc3RlbmN5IHdpdGggb3RoZXIKCWNvbnRyb2xzLiBGaXggc29tZSBwcm90b3R5cGVzLiBBbHdheXMgcGFzcyBpbmZvUHRyIGFyb3VuZC4KCgkqIGRsbHMvY29tY3RsMzIvcHJvZ3Jlc3MuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCU1pbm9yIGNsZWFudXBzLgoKCSogZGxscy9jb21jdGwzMi9pcGFkZHJlc3MuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVVzZSBVbmljb2RlIGZ1bmN0aW9ucyB3aGVyZSBwb3NzaWJsZS4KCgkqIGRsbHMvYWR2cGFjay9hZHZwYWNrLmMsIGRsbHMvYWR2cGFjay9hZHZwYWNrLnNwZWM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBZGQgc3R1YiBpbXBsZW1lbnRhdGlvbnMgZm9yIExhdW5jaElORlNlY3Rpb24oRXgpLgoKCSogZGxscy9hZHZhcGkzMi9jcnlwdC5jOiBNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglDcnlwdENyZWF0ZUhhc2g6IFNldCByZXR1cm5lZCBoYXNoIGhhbmRsZSB0byB6ZXJvIGluIGNhc2Ugb2YgZmFpbHVyZS4KCgkqIHNlcnZlci9mZC5jOiBBZGRlZCBmYWxsYmFjayBzeXNjYWxscyBmb3IgZXBvbGwgZnVuY3Rpb25zLgoKCSogZGxscy9tcHIvTWFrZWZpbGUuaW4sIGRsbHMvbXByL21wci5yYywgZGxscy9vbGUzMi9NYWtlZmlsZS5pbiwKCSAgZGxscy9vbGUzMi9vbGUzMnJlcy5yYywgZGxscy9vbGVhdXQzMi9NYWtlZmlsZS5pbiwKCSAgZGxscy9vbGVhdXQzMi9vbGVhdXQzMi5yYywgZGxscy9zaGVsbDMyL01ha2VmaWxlLmluLAoJICBkbGxzL3NoZWxsMzIvc2hyZXMucmM6CglHZSB2YW4gR2VsZG9ycCA8Z3ZnQHJlYWN0b3MuY29tPgoJVXNlIG9ubHkgb25lIC5yZXMgZmlsZS4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL3gxMWRydi94cmVuZGVyLmMsIGluY2x1ZGUvY29uZmlnLmguaW46CglLZXZpbiBLb2x0emF1IDxrZXZpbkBwbG9wLm9yZz4KCUFkZCBzdHJldGNoaW5nIHN1cHBvcnQgdG8gQWxwaGFCbGVuZC4KCjIwMDQtMTAtMjYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkb2N1bWVudGF0aW9uL01ha2VmaWxlLmluLCBkb2N1bWVudGF0aW9uL2FyY2hpdGVjdHVyZS5zZ21sLAoJICBkb2N1bWVudGF0aW9uL2NvbnNvbGVzLnNnbWwsIGRvY3VtZW50YXRpb24vY3ZzLXJlZ3Jlc3Npb24uc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9pMThuLnNnbWwsIGRvY3VtZW50YXRpb24vaW1wbGVtZW50YXRpb24uc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9wb3J0aW5nLnNnbWwsIGRvY3VtZW50YXRpb24vd2luZS1kZXZlbC5zZ21sLAoJICBkb2N1bWVudGF0aW9uL3dpbmVkZXYtY29kaW5nLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vd2luZWRldi1ncmFwaGljYWwuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi93aW5lZGV2LWtlcm5lbC5zZ21sLAoJICBkb2N1bWVudGF0aW9uL3dpbmVkZXYtb3RoZXJkZWJ1Zy5zZ21sLAoJICBkb2N1bWVudGF0aW9uL3dpbmVkZXYtd2luZG93aW5nLnNnbWw6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCVJlb3JnYW5pemluZyB3aW5lLWRldmVsOgoJLSBraWxsaW5nIHRoZSBhZHZhbmNlZCBwYXJ0IChhbmQgbW92aW5nIGl0cyBjaGFwdGVycyBpbiBib3RoCgkgIGRldmVsb3BpbmcgV2luZSBhbmQgV2luZSBhcmNoaSBwYXJ0cykKCS0gY3JlYXRpbmcgYSBuZXcgYm9vayBvbiBjb2RpbmcgcHJhY3RpY2VzIGZyb20gaTE4bi5zZ21sLCBwYXRjaGVzLnNnbWwKCSAgYW5kIHBvcnRpbmcuc2dtbAoJLSBjcmVhdGluZyBhIG5ldyBib29rIG9uIHNvbWUgZGVidWdnaW5nIHN0cmF0ZWdpZXMgZnJvbSB0aGUgb2xkCgkgIGFkdmFuY2VkIGJvb2sgYW5kIGN2cy1yZWdyZXNzaW9uLnNnbWwKCS0gY3JlYXRpbmcgYSBuZXcgYm9vayBvbiB0aGUga2VybmVsIG1vZHVsZXMgKE5URExMICYgS0VSTkVMMzIpIGZyb20KCSAgYXJjaGl0ZWN0dXJlLnNnbWwgLyByZWxhdGVkIERMTHMgYW5kIGFkZHJlc3Mtc3BhY2Uuc2dtbCwKCSAgY29uc29sZS5zZ21sLCB0aHJlYWRpbmcuc2dtbAoJLSBjcmVhdGluZyBhIG5ldyBib29rIG9uIHRoZSB3aW5kb3dpbmcgZnJvbSBhcmNoaXRlY3R1cmUuc2dtbCAvIFVTRVIzMgoJICBhbmQgcmVsYXRlZAoJLSBjcmVhdGluZyBhIG5ldyBib29rIG9uIHRoZSBncmFwaGljYWwgcGFydHMgZnJvbSBhcmNoaXRlY3R1cmUuc2dtbCAvCgkgIEdESTMyIGFuZCByZWxhdGVkCglPdGhlciBjaGFuZ2VzOgoJLSByZW1vdmVkIGxpc3Qgb2YgRExMcyBhbmQgdGhlaXIgcm9sZSAoZnJvbSB0aGUgbW9kdWxlcyBvdmVydmlldykKCS0gcmVtb3ZlZCBpbiBYMTEga2V5Ym9hcmQgbWFwcGluZyBzZWN0aW9uIHRoZSBwYXJ0IHJlbGF0ZWQgdG8gc3VibWl0IGEKCSAgcGF0Y2gKCgkqIGRsbHMvd2lubW0vd2luZW9zcy9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmMsCgkgIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5oLCBkbGxzL3dpbm1tL3dpbmVvc3MvZHNjYXB0dXJlLmMsCgkgIGRsbHMvd2lubW0vd2luZW9zcy9kc3JlbmRlci5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCVNwbGl0IHVwIGF1ZGlvLmMgaW50byB0aHJlZSBzZXBhcmF0ZSAuYyBmaWxlczoKCWF1ZGlvLmM6IE9TUyBmdW5jdGlvbnMgYW5kIHdhdmVJbiBhbmQgd2F2ZU91dCBkcml2ZXIgZnVuY3Rpb25zLgoJZHNjYXB0dXJlLmM6IGRpcmVjdCBzb3VuZCBjYXB0dXJlIGRyaXZlciBpbXBsZW1lbnRhdGlvbi4KCWRzcmVuZGVyLmM6IGRpcmVjdCBzb3VuZCByZW5kZXJlciBkcml2ZXIgaW1wbGVtZW50YXRpb24uCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy90aW1lLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBzb21lIHRlc3RzIGZvciB0aW1lIGNvbnZlcnNpb24gZnVuY3Rpb25zLgoKCSogZGxscy91c2VyL2xpc3Rib3guYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCU1vdmUgdGhlIGh3bmQgc2VsZiBpbnRvIHRoZSBsaXN0Ym94IExCX0RFU0NSIHN0cnVjdC4KCVVzZSBwcm9wZXIgdHlwZXMvbmFtZXMgaW4gYWxsIGNhc2VzLgoJRml4IHNvbWUgYmFkIGluZGVudGF0aW9uLgoKCSogZGxscy93aW5tbS90ZXN0cy93YXZlLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+Cgl3aW4gOXggZG9lc24ndCBhbHdheXMgc3VwcG9ydCB3YXZlT3V0R2V0RGV2Q2Fwc1cgc28gZG9uJ3QgZ2VuZXJhdGUgYW4KCWVycm9yIGZvciBNTVNZU0VSUl9OT1RTVVBQT1JURUQuCglQbGF5IG9uZSBzZWNvbmQgb2Ygc2lsZW5jZSBmb3IgZWFjaCBzb3VuZCBjYXJkIHdoZW4gbm90IGluIGludGVyYWN0aXZlCgltb2RlLgoKCSogZGxscy91c2VyL2J1dHRvbi5jLCBkbGxzL3VzZXIvdGVzdHMvbXNnLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJTWFrZSBidXR0b24gcmV0dXJuIGV4YWN0bHkgdGhlIHNhbWUgZGlhbG9nIGNvZGVzIGFzIFdpbmRvd3MgZG9lcy4KCUFkZCBhIHRlc3QgY2FzZS4KCgkqIGRsbHMvc2hlbGwzMi90ZXN0cy9zaGVsbHBhdGguYywgZGxscy9zaGVsbDMyL3ZlcnNpb24uaDoKCUp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCVVwZGF0ZSBzaGVsbDMyJ3MgdmVyc2lvbiB0byBXaW5YUCBsZXZlbC4KCgkqIGRsbHMvZHNvdW5kL3Rlc3RzL2Rzb3VuZDguYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCVZlcmlmeUNlcnRpZmljYXRpb24gaXMgbm90IGFsd2F5cyBpbXBsZW1lbnRlZC4KCgkqIGRsbHMva2VybmVsL2NvbW0uYzogQ29udmVydCBDb21tQ29uZmlnRGlhbG9nIHRvIFVuaWNvZGUuCgoJKiBkbGxzL2NvbWN0bDMyL3RhYi5jOiBUaG9yc3RlbiBLYW5pIDxiZWViaXhAZ214Lm5ldD4KCVVzZSBhZGRyZXNzIG9mIHRhYl9pdGVtLmV4dHJhIHdoZW4gYnVpbGRpbmcgZHJhd2l0ZW1zdHJ1Y3QuCgoJKiBkbGxzL3NoZWxsMzIvZGVidWdobHAuYywgZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3BpZGwuaCwKCSAgZGxscy9zaGVsbDMyL3Rlc3RzL3NoZWxscGF0aC5jOgoJSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJRml4IENTSURMX0NPTlRST0xTIGFuZCBDU0lETF9QUklOVEVSUyBQSURMIHR5cGVzLCBhbmQgdXBkYXRlIHRlc3RzIG5vdwoJdGhhdCB0aGV5IHBhc3MuCgoJKiBkbGxzL2tlcm5lbC9jb21tLmMsIGRsbHMvc2VyaWFsdWkvTWFrZWZpbGUuaW4sCgkgIGRsbHMvc2VyaWFsdWkvY29uZmRsZy5jLCBkbGxzL3NlcmlhbHVpL3NlcmlhbHVpLnNwZWM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglTRVJJQUxVSTogY29udmVydCB0byBVbmljb2RlLgoKCSogdG9vbHMvd2luYXBpL2NfZnVuY3Rpb24ucG0sIHRvb2xzL3dpbmFwaS9jX3BhcnNlci5wbSwKCSAgdG9vbHMvd2luYXBpL2NfdHlwZS5wbSwgdG9vbHMvd2luYXBpL2NvbmZpZy5wbSwKCSAgdG9vbHMvd2luYXBpL2Z1bmN0aW9uLnBtLCB0b29scy93aW5hcGkvbWFrZV9maWx0ZXIsCgkgIHRvb2xzL3dpbmFwaS9tYWtlX3BhcnNlci5wbSwgdG9vbHMvd2luYXBpL21zdmNtYWtlciwKCSAgdG9vbHMvd2luYXBpL29wdGlvbnMucG0sIHRvb2xzL3dpbmFwaS90ZXN0cy5wbSwgdG9vbHMvd2luYXBpL3R5cGUucG0sCgkgIHRvb2xzL3dpbmFwaS91dGlsLnBtLCB0b29scy93aW5hcGkvd2luYXBpLnBtLAoJICB0b29scy93aW5hcGkvd2luYXBpX2NoZWNrX29wdGlvbnMucG0sIHRvb2xzL3dpbmFwaS93aW5hcGlfY2xlYW51cCwKCSAgdG9vbHMvd2luYXBpL3dpbmFwaV9leHRyYWN0LCB0b29scy93aW5hcGkvd2luYXBpX2ZpeHVwLAoJICB0b29scy93aW5hcGkvd2luYXBpX2ZpeHVwX2RvY3VtZW50YXRpb24ucG0sCgkgIHRvb2xzL3dpbmFwaS93aW5hcGlfZml4dXBfZWRpdG9yLnBtLAoJICB0b29scy93aW5hcGkvd2luYXBpX2ZpeHVwX3N0YXRlbWVudHMucG0sCgkgIHRvb2xzL3dpbmFwaS93aW5hcGlfbW9kdWxlX3VzZXIucG0sIHRvb2xzL3dpbmFwaS93aW5hcGlfdGVzdDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQWRkIGZ1bmN0aW9uIHByb3RvdHlwZXMuCglDaGFuZ2UgdGhlIHdheSBmdW5jdGlvbnMgYXJlIGNhbGxlZCBhbmQgZWl0aGVyIGFsdGVyIHRoZWlyIGRlY2xhcmF0aW9uCglvcmRlciBvciBwcmVkZWNsYXJlIHRoZW0gc28gcGVybCBjYW4gY2hlY2sgdGhlIHByb3RvdHlwZXMuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy90aW1lLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCUNvcnJlY3RseSB1c2UgdGhlIHJldHVybiB2YWx1ZSBvZiBHZXRUaW1lWm9uZUluZm9ybWF0aW9uLgoKCSogZGxscy9jb21jdGwzMi9kYXRldGltZS5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJSW1wbGVtZW50IHByb3BlciBHV0xfU1RZTEUgaGFuZGxpbmcsIHByb3BlciByZWFjdGlvbiB0byBzdHlsZSBjaGFuZ2VzLgoJTWVyZ2Uge3tJbmMsRGVjfXJlbWVudCxSZXNldHtVcCxEb3dufX1GaWVsZCBpbnRvIG9uZSBtZXRob2QuIEZpeCBhCglidW5jaCBvZiBidWdzIGluIHRoZSBwcm9jZXNzLiAgSW1wbGVtZW50IERUTV9bR1NdRVRNQ0ZPTlQuIEluZGVudGF0aW9uCglmaXhlcywgY2xlYW51cHMuCgoyMDA0LTEwLTI1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogcHJvZ3JhbXMvdmlldy9Dcy5yYywgcHJvZ3JhbXMvdmlldy92aWV3cmMucmMsIHByb2dyYW1zL3djbWQvQ3MucmMsCgkgIHByb2dyYW1zL3djbWQvd2NtZHJjLnJjLCBwcm9ncmFtcy93aW5lY2ZnL0NzLnJjLAoJICBwcm9ncmFtcy93aW5lY2ZnL3dpbmVjZmcucmMsIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25zb2xlX0NzLnJjLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZV9yZXMucmMsIHByb2dyYW1zL3dpbmVmaWxlL0NzLnJjLAoJICBwcm9ncmFtcy93aW5lZmlsZS9yc3JjLnJjLCBwcm9ncmFtcy93aW5lbWluZS9Dcy5yYywKCSAgcHJvZ3JhbXMvd2luZW1pbmUvcnNyYy5yYywgcHJvZ3JhbXMvd2luaGVscC9Dcy5yYywKCSAgcHJvZ3JhbXMvd2luaGVscC9yc3JjLnJjOgoJRGF2aWQgS3JlZGJhIDxrcmVkYmFAaWJvdC5jYXMuY3o+CglOZXcgQ3plY2ggcmVzb3VyY2VzLgoKCSogZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jOiBKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglBdm9pZCBjb3B5aW5nIGludmFsaWQgZGF0YSBvbiBlcnJvci4KCgkqIHRvb2xzL3dpbmVkdW1wL2Z1bmN0aW9uX2dyZXAucGw6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRml4IHN0cmluZyBoYW5kbGluZy4KCUVuYWJsZSBwZXJsIHdhcm5pbmdzCglBZGQgYSBwcm9wZXIgLS1oZWxwIG9wdGlvbiBhbmQgdXNhZ2UuCgoJKiB0b29scy93aW5hcGkvbWFrZV9maWx0ZXJfb3B0aW9ucy5wbSwgdG9vbHMvd2luYXBpL29wdGlvbnMucG06CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUZpeCB0aGUgdXNhZ2UgZm9yIG5vbi1ib29sZWFuIG9wdGlvbnMsIGFsd2F5cyBwcmludCB0aGUKCWRlc2NyaXB0aW9uLiBUaGlzIGZpeGVzIHRoZSBvdXRwdXQgb2YgJ21ha2VfZmlsdGVyIC0taGVscCcuCgoJKiBpbmNsdWRlL2ltYWdlaGxwLmg6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJSW5jbHVkZSB3aW50cnVzdC5oLgoKCSogaW5jbHVkZS93aW5jcnlwdC5oOiBNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglBZGRlZCBkZWZpbmUgZm9yIENVUl9CTE9CX1ZFUlNJT04uCgoJKiBkbGxzL3VzZXIvZWRpdC5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJVXNlIHByb3BlciB0eXBlcy9uYW1lcyBpbiBhbGwgY2FzZXMuIEZpeCBzb21lIGluZGVudGF0aW9uLgoKCSogZGxscy9tc3ZjcnQvdGVzdHMvdGltZS5jLCBkbGxzL21zdmNydC90aW1lLmM6CglSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglDb3JyZWN0bHkgdXNlIHRoZSByZXR1cm5lZCB2YWx1ZSBmcm9tIEdldFRpbWVab25lSW5mb3JtYXRpb24uCgoJKiBkbGxzL29sZTMyL2NvbXBvYmouYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCS0gUmVtb3ZlIGJvZ3VzIHVzZSBvZiBuU3RhdENvdW50ZXIgYW5kIGhPbGVBdXQzMiBpbiBDb1NldFN0YXRlLgoJLSBSZW1vdmUgYSBjb21tZW50IGFib3V0IHByb3RlY3RpbmcgcGVyIHRocmVhZCBkYXRhIGJ5IGEgY3JpdGljYWwgc2VjdGlvbi4KCgkqIGluY2x1ZGUvdGxoZWxwMzIuaDogUGV0ZXIgUXVpcmluZyA8cHF1aXJpbmdAaG90bWFpbC5jb20+CglBZGRlZCBIRjMyX0RFRkFVTFQgYW5kIEhGMzJfU0hBUkVEIHZhbHVlcy4KCgkqIGRsbHMvY29tY3RsMzIvdXBkb3duLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglVc2Ugb25seSBVbmljb2RlIGZ1bmN0aW9ucywgaXQgbWFrZXMgaXQgZWFzaWVyIHRvIHNlZSB3ZSBhcmUgZnVsbHkKCVVuaWNvZGUgY29tcGxpYW50LgoKCSogZG9jdW1lbnRhdGlvbi9pbnRyb2R1Y3Rpb24uc2dtbDogU2NvdHQgUml0Y2hpZSA8c2NvdHRAb3Blbi12b3RlLm9yZz4KCVJldmlzZWQgV2luZSBVc2VyIEd1aWRlIGludHJvZHVjdGlvbi4KCgkqIGRsbHMva2VybmVsL2Vudmlyb24uYywgZGxscy9rZXJuZWwvcHJvY2Vzcy5jLCBkbGxzL250ZGxsL2Vudi5jOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CgktIGZpeGVkIHRoZSB3YXkgbGVuZ3RoIG9mIG1zdmNydCBydW50aW1lIGluZm8gaXMgcGFzc2VkCgktIGFsd2F5cyByZXR1cm4gYSBOVUxMIHJ1bnRpbWUgaW5mbyBidWZmZXIgaW4gY2hpbGQgaWYgcGFyZW50J3MKCSAgcnVudGltZSBpbmZvIGlzIE5VTEwKCS0gZml4ZWQgdHlwbyBpbiBzdGFydHVwaW5mbyBzaXplCgoJKiBkbGxzL3dpbm1tL3Rlc3RzL2NhcHR1cmUuYywgZGxscy93aW5tbS90ZXN0cy9taXhlci5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCURvbid0IGNvbnNpZGVyIG5vIGRyaXZlciBhIHRlc3QgZmFpbHVyZS4KCgkqIGRsbHMvZHNvdW5kL3Rlc3RzL2NhcHR1cmUuYywgZGxscy9kc291bmQvdGVzdHMvZHNvdW5kLmMsCgkgIGRsbHMvZHNvdW5kL3Rlc3RzL2Rzb3VuZDguYzoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglEb24ndCBjb25zaWRlciBhIGRldmljZSBpbiB1c2UgYSBmYWlsdXJlLgoKCSogZGxscy9zaGVsbDMyL3Rlc3RzL3NobGZvbGRlci5jOiBTYW1pIEFhcmlvIDxzYW1pLmFhcmlvQHN1cmZldS5maT4KCUNoZWNrIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIFNIR2V0RGVza3RvcEZvbGRlciBjYWxsLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gRG9uJ3QgZmlsbCBpbiBhbnkgbW9yZSBpbmZvcm1hdGlvbiB0aGFuIG5hdGl2ZSBkb2VzIGZvciBub3RpZmljYXRpb25zLgoJLSBTdG9yZSBoaXQgY29kZSBpbiBhIHNpZ25lZCBpbnRlZ2VyIHNvIHRoYXQgd2UgY2FuIHNlZSB3aGV0aGVyIGl0IGlzCgkgIGxlc3MgdGhhbiB6ZXJvLgoKCSogZGxscy9jb21jdGwzMi90b29sdGlwcy5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIERvbid0IGxlYWsgbWVtb3J5IHdoZW4gYW4gYXBwIHNlbmRzIFRUTV9TRVRUSVRMRSB0d2ljZS4KCS0gQW4gbFBhcmFtIG9mIDAgaW5kaWNhdGVzIHRoYXQgdGhlIHRpdGxlIHNob3VsZCBiZSByZW1vdmVkLgoKCSogZG9jdW1lbnRhdGlvbi93aW5lLmNvbmYubWFuOiBNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmRlPgoJLSBBZGQgaW5mbyB0aGF0IHRoZSB3aW5lIGNvbmZpZyBmaWxlIGhhcy9uZWVkcyBhIGhlYWRlciBsaW5lLgoJLSBSZW1vdmUgc29tZSBpbmZvcyByZWdhcmRpbmcgZW50cmllcyB3aGljaCB3ZXJlIHJlbW92ZWQgbGF0ZWx5IGZyb20KCSAgdGhlIGNvbmZpZyBmaWxlLgoKCSogZGxscy9zZXR1cGFwaS9kaXJpZC5jOiBKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglVc2Ugc2hlbGwzMiB0byBnZXQgdGhlIHVzZXIgcHJvZmlsZSBkaXIuCgoJKiBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmM6IEp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCVVwZGF0ZSBjb21tZW50IGZvciBMc2FPcGVuUG9saWN5LgoKMjAwNC0xMC0yMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvYXZpZmlsMzIvZXh0cmFjaHVuay5jLCBkbGxzL2NvbWN0bDMyL3Rlc3RzL2ltYWdlbGlzdC5jLAoJICBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsIGRsbHMvZHBsYXl4L2RwbGF5eF9tZXNzYWdlcy5oLAoJICBkbGxzL2tlcm5lbC9oZWFwLmMsIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL3NoZWxsMzIvc2hsZmlsZW9wLmMsCgkgIGRsbHMvd2luZWQzZC9kZXZpY2UuYywgZGxscy93aW5lZDNkL2RpcmVjdHguYywgZGxscy93aW5lZG9zL2ludDIxLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFzc29ydGVkIHNwZWxsaW5nIGZpeGVzLgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliLmMsIGRsbHMvb2xlYXV0MzIvdHlwZWxpYjIuYzoKCUNvbnZlcnRlZCBtb3JlIG9mIHRoZSAoVW4pUmVnaXN0ZXJUeXBlTGliIGNvZGUgdG8gVW5pY29kZS4KCUZhY3RvcmVkIG91dCBzb21lIGNvbW1vbiByb3V0aW5lcy4KCgkqIHdpbmRvd3MvbXNnYm94LmM6CglSZW1vdmVkIHdyb25nIEZJWE1FIGZvciBNQl9BUFBMTU9EQUwgKHJlcG9ydGVkIGJ5IEl2YW4gTGVvIFB1b3RpKS4KCgkqIHRvb2xzL3Rlc3RydW46IEdldCByaWQgb2YgdGhpcyBvYnNvbGV0ZSBzY3JpcHQuCgoJKiB0b29scy93aW5lLmluZjogSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJU2hlbGwgcmVnaXN0cnkgZW50cmllcyBhcmUgbm93IGNyZWF0ZWQgYnkgc2hlbGwzMiwgZG9uJ3QgaGFyZGNvZGUgdGhlbQoJaW4gd2luZS5pbmYuCgoJKiBkbGxzL21zaS9hY3Rpb24uYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCURvbid0IHJlcmVnaXN0ZXIgUHJvZ0lkcyBvdmVyIGFuZCBvdmVyLCBhbHNvIHdyaXRlIG91dCB0aGUgbWFpbiBrZXkKCWJlZm9yZSB0cnlpbmcgdG8gcmVnaXN0ZXIgdGhlIFBhcmVudC4gVGhpcyBhdm9pZHMgbG9vcHMgaWYgYSBQcm9nSWQKCWhhcyBpdHNlbGYgYXMgYSBwYXJlbnQgb3IgdGhlcmUgaXMgYSBsb29wIGluIGRlcGVuZGVuY2llcy4KCgkqIHRvb2xzL3dpbmVjb25mOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFkZCBmdW5jdGlvbiBwcm90b3R5cGVzLgoJQ2hhbmdlIHRoZSB3YXkgZnVuY3Rpb25zIGFyZSBjYWxsZWQgYW5kIHRoZWlyIGRlY2xhcmF0aW9uIG9yZGVyIHNvCglwZXJsIGNhbiBjaGVjayB0aGUgcHJvdG90eXBlcy4KCgkqIGRsbHMvcHNhcGkvdGVzdHMvbW9kdWxlLmM6CglTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCUZpeGVkIEdldE1vZHVsZUJhc2VOYW1lQSB0ZXN0cyBmb3IgV2luWFAuCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJVXNlIFVuaWNvZGUgZnVuY3Rpb25zIGluIFJlZ2lzdGVyVHlwZUxpYi4KCgkqIGRsbHMvdXNlci90ZXN0cy9tc2cuYywgZGxscy94MTFkcnYva2V5Ym9hcmQuYywgaW5jbHVkZS93aW51c2VyLmg6CglWS18wLTkgYW5kIFZLX0EtWiBhcmUgbm90IGRlZmluZWQgaW4gdGhlIFdpbmRvd3MgaGVhZGVycywgcmVtb3ZlZCB0aGVtCgkoc3BvdHRlZCBieSBGcmFuY29pcyBHb3VnZXQpLgoKCSogZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jOiBBdm9pZCBjb3B5aW5nIGludmFsaWQgZGF0YSBvbiBlcnJvci4KCgkqIGRsbHMvc2hlbGwzMi90ZXN0cy9zaGVsbHBhdGguYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglGaXggdGhlIGZ1bmN0aW9uIHBvaW50ZXIgZGVjbGFyYXRpb25zIHNvIE1TVkMgbGlrZXMgdGhlbS4KCUNTSURMX1BST0ZJTEVTIGlzIG5vdCBkZWZpbmVkIGluIHRoZSBXaW5kb3dzIFNESy4KCXNucHJpbnRmIGFuZCBzdHJjYXNlY21wIGRvbid0IGV4aXN0IG9uIFdpbmRvd3MuIFJlcGxhY2UgdGhlbSB3aXRoCgl3bnNwcmludGZBIGFuZCBsc3RyY21waUEgcmVzcGVjdGl2ZWx5LgoKCSogaW5jbHVkZS93aW5iYXNlLmg6CglGaXhlZCBkZWZpbml0aW9uIG9mIE1BWF9DT01QVVRFUk5BTUVfTEVOR1RIIChzcG90dGVkIGJ5IE1pa2UKCU1jQ29ybWFjaykuCgoJKiBkbGxzL21zY21zL2hhbmRsZS5jLCBkbGxzL21zY21zL21zY21zX21haW4uYywgZGxscy9tc2Ntcy9wcm9maWxlLmMsCgkgIGRsbHMvbXNjbXMvdGVzdHMvcHJvZmlsZS5jLCBpbmNsdWRlL2ljbS5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglGbGVzaCBvdXQgdGhlIGljbS5oIGhlYWRlciAoYWRkIENPTE9STUFUQ0hTRVRVUCAmIGNvKSBzbyBpdCBpcwoJbmVjZXNzYXJ5IHRvIGZpcnN0IGluY2x1ZGUgd2ludXNlci5oIGxpa2Ugb24gV2luZG93cy4KCgkqIHRvb2xzL3dpbmFwaS9jX3BhcnNlci5wbSwgdG9vbHMvd2luYXBpL21ha2VfcGFyc2VyLnBtLAoJICB0b29scy93aW5hcGkvbXN2Y21ha2VyLCB0b29scy93aW5hcGkvd2luYXBpLnBtLAoJICB0b29scy93aW5hcGkvd2luYXBpX2V4dHJhY3QsIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLnBtLAoJICB0b29scy93aW5hcGlfY2hlY2svbmF0aXZlYXBpLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2NoZWNrLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2Z1bmN0aW9uLnBtLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2xvY2FsLnBtOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglSZXZpZXcgYW5kIGZpeCByZWd1bGFyIGV4cHJlc3Npb25zIG9mIHRoZSBmb3JtIC9eZm9vfGJhciQvLgoJUmVwbGFjZSByZWd1bGFyIGV4cHJlc3Npb25zIHdpdGggc2ltcGxlIHN0cmluZyBjb21wYXJpc29ucyB3aGVyZQoJcG9zc2libGUuCglVc2UgJyg/OnN1YnJlZ2V4cCknIGluc3RlYWQgb2YgJyhzdWJyZWdleHApJyB3aGVyZXZlciBwb3NzaWJsZS4KCSdkbGxzL2dkaScgZG9lcyBub3QgaGF2ZSBhIHdpbjE2ZHJ2IHN1YmRpcmVjdG9yeSBhbnltb3JlIHNvIHNpbXBsaWZ5CglyZWd1bGFyIGV4cHJlc3Npb25zIGFjY29yZGluZ2x5LgoKCSogZGxscy9rZXJuZWwvaGVhcC5jLCBkbGxzL2tlcm5lbC9uZV9tb2R1bGUuYywgZGxscy9rZXJuZWwvc2VsZWN0b3IuYywKCSAgZGxscy9rZXJuZWwvdGh1bmsuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJVGhlcmUgaXMgbm8gcG9pbnQgbWFraW5nICctLXJlZ2lzdGVyJyBmdW5jdGlvbnMgc3RkY2FsbCBzbyBqdXN0CglpbXBsZW1lbnQgdGhlbSBhcyBjZGVjbC4KCgkqIGRsbHMvc2hsd2FwaS90ZXN0cy9vcmRpbmFsLmM6CglTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCUZpeGVkIEdldEFjY2VwdExhbmd1YWdlc0EgdGVzdHMgZm9yIFdpblhQLgoKCSogZGxscy9udGRsbC90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL250ZGxsL3Rlc3RzL01ha2VmaWxlLmluLAoJICBkbGxzL250ZGxsL3Rlc3RzL3RpbWUuYywgZGxscy9udGRsbC90aW1lLmM6CglSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglDb3JyZWN0IHRoZSBjYWxjdWxhdGlvbiBvZiB0aGUgeWVhciBmb3IgdGhlIDMxJ3N0IG9mIERlY2VtYmVyIG9mIDIwMDAKCWFuZCBldmVyeSA0MDAgeWVhcnMgYWZ0ZXIgdGhhdC4gQWRkIGEgdGVzdCB1c2VkIHRvIGZpbmQgdGhpcyBidWcuCgoJKiBwcm9ncmFtcy93aW5lZmlsZS93aW5lZmlsZS5jOiBNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJRml4IGluZGVudGluZyBvZiBsYXN0IHBhdGNoICh0YWJzIGluc3RlYWQgb2Ygc3BhY2VzKS4KCgkqIGRsbHMvc2hlbGwzMi90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL3NoZWxsMzIvdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvc2hlbGwzMi90ZXN0cy9zaGVsbGxpbmsuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBhIHRlc3QgZm9yIGNyZWF0aW5nIGVtcHR5IHNoZWxsbGluayBmaWxlcy4KCgkqIGRsbHMvY29tY3RsMzIvZGF0ZXRpbWUuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUF1ZGl0IHRoZSBEYXRlIFRpbWUgQ29udHJvbC4gVW5pY29kaWZpY2F0aW9uLgoJVHlwZSBzYWZlIGZ1bmN0aW9ucyAocGFzcyBpbmZvUHRyIGFuZCB0eXBlIHNhZmUgdmFsdWVzIGFyb3VuZCkuCglTb21lIGNsZWFudXAgYW5kIGluZGVudGF0aW9uIGZpeGVzLgoKCSogZGxscy9kc291bmQvdGVzdHMvY2FwdHVyZS5jLCBkbGxzL2Rzb3VuZC90ZXN0cy9kc291bmRfdGVzdC5oOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCURvbid0IGNvbnNpZGVyIGEgYmFkIGZvcm1hdCBhbiBlcnJvciB1bmxlc3MgdGhlIGNhcGFiaWxpdGllcyBzYXkgaXQKCXNob3VsZCBiZSBzdXBwb3J0ZWQuCglEb24ndCBjb25zaWRlciBhIGRldmljZSBhbHJlYWR5IGluIHVzZSBhbiBlcnJvci4KCjIwMDQtMTAtMjEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3NoZWxsMzIvc2hsZmlsZW9wLmM6CglSb2xmIEthbGJlcm1hdHRlciA8cm9sZi5rYWxiZXJtYXR0ZXJAY2l0ZW5nLmNvbT4KCS0gU0hDcmVhdGVEaXJlY3Rvcnkgc2hvdWxkIGNyZWF0ZSBpbnRlcm1lZGlhdGUgZGlyZWN0b3JpZXMgaWYKCSAgbmVjZXNzYXJ5LgoJLSBSZW1vdmUgZXh0cmEgYm9vbGVhbiBwYXJhbWV0ZXIgaW4gU0hOb3RpZnlNb3ZlRmlsZSBhcyBpdCBpcyBub3QKCSAgdXNlZC4KCS0gVXNlIGluIFNIRmlsZU9wZXJhdGlvbiB0aGUgZnVuY3Rpb24gU0hOb3RpZnlDcmVhdGVEaXJlY3RvcnkgaW5zdGVhZAoJICBvZiBTSENyZWF0ZURpcmVjdG9yeUV4IGFzIGl0IGRvZXMgbm90IGFueW1vcmUgd2hhdCBpcyBuZWVkZWQgaGVyZS4KCS0gRml4IHNldmVyYWwgdW5zaWduZWQvc2lnbmVkIG1pc21hdGNoIHdhcm5pbmdzLgoKCSogdG9vbHMvd2luYXBpL3dpbjMyLmFwaTogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglTdGFuZGFyZGl6ZSBvbiAnJWxvbmcgLS1wb2ludGVyJy4KCVVwZGF0ZSBpdCB0byBtYXRjaCB0aGUgbGF0ZXN0IHNvdXJjZS4gRml4ZXMgbWFueSB3aW5hcGlfY2hlY2sKCXdhcm5pbmdzLgoKCSogZGxscy9jb21jdGwzMi9tb250aGNhbC5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJTW9udGhjYWxfU2V0UmFuZ2U6IFNldCBwcm9wZXIgdmFsdWUgZm9yIG1pbiBkYXRlLgoKCSogZG9jdW1lbnRhdGlvbi9zYW1wbGVzL2NvbmZpZzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVJlbW92ZSBlbnYgdmFsdWVzIGZyb20gY29uZmlnLCB0aGV5IGFyZSBub3cgbWFpbnRhaW5lZCBpbiB0aGUKCXJlZ2lzdHJ5LgoKCSogZGxscy93aW50cnVzdC93aW50cnVzdF9tYWluLmMsIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvbXNjYXQuaCwKCSAgaW5jbHVkZS93aW5jcnlwdC5oLCBpbmNsdWRlL3dpbnRydXN0LmgsIHRvb2xzL3dpbmFwaS93aW4zMi5hcGk6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUZpeCBzb21lIGlzc3VlcyByZXBvcnRlZCBieSB3aW5hcGlfY2hlY2s6CglBZGQgbXNjYXQuaCBhbmQgd2ludHJ1c3QuaDsgdXBkYXRlIHdpbmNyeXB0LmguCglGaXggdGhlIENyeXB0Q0FUQWRtaW5BY3F1aXJlQ29udGV4dCgpIGFuZCBXaW5WZXJpZnlUcnVzdCgpIHByb3RvdHlwZXMKCXNvIHRoZXkgdXNlIHRoZSBwcm9wZXIgdHlwZXMuCglVcGRhdGUgdGhlIHdpbnRydXN0IHNlY3Rpb24gb2Ygd2luMzIuYXBpLgoKCSogZGxscy9jb21jdGwzMi9jb21ib2V4LmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUFsd2F5cyByZW1vdmUgV1NfQk9SREVSIHN0eWxlIGZyb20gQ29tYm9Cb3hFeCBjb250cm9sLgoKCSogZGxscy9zaGVsbDMyL3NobGV4ZWMuYzogR2UgdmFuIEdlbGRvcnAgPGd2Z0ByZWFjdG9zLmNvbT4KCS0gRG9uJ3QgZG91YmxlLXF1b3RlIGFuIGFscmVhZHkgZG91YmxlLXF1b3RlZCBhcmd1bWVudC4KCS0gUHJvcGVybHkgaW5jcmVtZW50IHRoZSBmbXQgcG9pbnRlci4KCgkqIGRsbHMvZDNkOS9kZXZpY2UuYywgZGxscy93aW5lZDNkL01ha2VmaWxlLmluLCBkbGxzL3dpbmVkM2QvZGV2aWNlLmMsCgkgIGRsbHMvd2luZWQzZC9kaXJlY3R4LmMsIGRsbHMvd2luZWQzZC9zdGF0ZWJsb2NrLmMsCgkgIGRsbHMvd2luZWQzZC93aW5lZDNkX3ByaXZhdGUuaCwgaW5jbHVkZS93aW5lL3dpbmVkM2RfaW50ZXJmYWNlLmg6CglKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJSW1wbGVtZW50IHRoZSBiZWdpbm5pbmdzIG9mIHRoZSBzdGF0ZWJsb2NrIGNsYXNzLCBhbmQgYSBmaXJzdCBtZXRob2QKCXRvIHVzZSBpdC4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOiBUaG9yc3RlbiBLYW5pIDxiZWViaXhAZ214Lm5ldD4KCURvbid0IGFkZCBleHRyYSBPRkZTRVRfWC9ZIHRvIHRoZSBjYWxjdWxhdGlvbiBvZiByY0JpdG1hcC50b3AvbGVmdCwKCWp1c3QgdXNlIEdldFN5c3RlbU1ldHJpY3MuCgoJKiB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2xvY2FsLnBtOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVdhcm4gYWJvdXQgaW1wbGVtZW50aW5nIGEgLXJlZ2lzdGVyIGZ1bmN0aW9uIGFzIHN0ZGNhbGwuCgoJKiB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2NoZWNrOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFkZCBzdXBwb3J0IGZvciBpbmNsdWRlL21zdmNydC4gRml4ZXMgYSBidW5jaCBvZiBzcHVyaW91cyB3YXJuaW5ncy4KCVJlbW92ZSBrbHVkZ2VzIGZvciBrZXJuZWxfcHJpdmF0ZS5oLCBnZGlfcHJpdmF0ZS5oLCBudGRsbF9taXNjLmgsCgl0c194bGliLmgsIHgxMWRydi5oIGFuZCB4MTFmb250LmguIFRoZXkgYXJlIG5vdCBuZWVkZWQgYW55bW9yZS4KCgkqIGRsbHMvZHNvdW5kL2NhcHR1cmUuYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCVRyYWlsaW5nIHdoaXRlIHNwYWNlIGNsZWFudXAuCglBZGQgSUNsYXNzRmFjdG9yeS0+Q3JlYXRlSW5zdGFuY2UgYWdncmVnYXRpb24gY2hlY2tzLgoJSUlEX0lEaXJlY3RTb3VuZENhcHR1cmUgYW5kIElJRF9JRGlyZWN0U291bmRDYXB0dXJlOCBhcmUgc2FtZSBzbwoJcmVtb3ZlIHJlZHVuZGFudCBjaGVjay4KCUFsbG9jYXRlIGNhcHR1cmUgYnVmZmVyIGZvciBodyBkcml2ZXIgaWYgbmVjZXNzYXJ5LgoKCSogZGxscy9hZHZhcGkzMi9zZXJ2aWNlLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCBDaGFuZ2VTZXJ2aWNlQ29uZmlnMkEgdXNpbmcgQ2hhbmdlU2VydmljZUNvbmZpZzJXLgoKCSogZGxscy9zaGVsbDMyL3JlZ3N2ci5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9Fbi5yYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLCBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmMsCgkgIGRsbHMvc2hlbGwzMi9zaHJlc2RlZi5oLCBkbGxzL3NoZWxsMzIvdGVzdHMvLmN2c2lnbm9yZSwKCSAgZGxscy9zaGVsbDMyL3Rlc3RzL01ha2VmaWxlLmluLCBkbGxzL3NoZWxsMzIvdGVzdHMvc2hlbGxwYXRoLmMsCgkgIGluY2x1ZGUvd2ludXNlci5oOgoJSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJLSB0aGUgY29ycmVjdCByZWdpc3RyeSBsb2NhdGlvbiB0byBvdmVycmlkZSBpcyBVc2VyIFNoZWxsIEZvbGRlcnMsIG5vdAoJICBTaGVsbCBGb2xkZXJzCgktIGlmIFVzZXIgU2hlbGwgRm9sZGVycyBkb2Vzbid0IGV4aXN0IGluIEhLQ1UsIEhLTE0gc2hvdWxkIGJlIHRyaWVkCgktIFNIR2V0U3BlY2lhbEZvbGRlclBhdGggc2hvdWxkIGNhbGwgU0hHZXRGb2xkZXJQYXRoLCBub3QgdmljZS12ZXJzYQoJLSB0aGUgZGVmYXVsdCB2YWx1ZXMgc2hvdWxkIGJlIGxvY2FsaXphYmxlCgktIHNvbWUgb2YgdGhlIHBhcmFtZXRlciBjaGVja2luZyBhbmQgcmV0dXJuZWQgTFBJVEVNSURMSVNUcyB3ZXJlIGEgYml0CgkgIG9mZgoKCSogdG9vbHMvbWFrZV9yZXF1ZXN0czogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglEZWNsYXJlIERPX0RVTVBfRlVOQygpIGJlZm9yZSBjYWxsaW5nIGl0IGFuZCBjYWxsIG5vcm1hbGx5IHNvIHRoYXQKCXBlcmwgY2FuIGNoZWNrIGl0cyBwcm90b3R5cGUuCgoJKiB0b29scy9tYWtlX2F1dGhvcnM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJU3RyaWN0aWZpZWQuCgoJKiBkbGxzL3dpbm1tL3dpbmVhdWRpb2lvL2F1ZGlvaW8uYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglSZW1vdmUgSEFWRV9MSUJBVURJT0lPX01JREkgYW5kIExJQkFVRElPSU9fTWlkaUluaXQoKS4KCgkqIGRsbHMvZGJnaGVscC9kYmdoZWxwLnNwZWMsIGRsbHMvZGJnaGVscC9wYXRoLmMsCgkgIGRsbHMvZGJnaGVscC9zb3VyY2UuYywgZGxscy9kYmdoZWxwL3R5cGUuYywgdG9vbHMvd2luYXBpL3dpbjMyLmFwaToKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRml4IHRoZSBkZWNsYXJhdGlvbiBvZiBTeW1FbnVtU3ltYm9scygpIGluIGRiZ2hlbHAuc3BlYy4KCVVzZSBQVk9JRCBpbnN0ZWFkIG9mIHZvaWQqIGZvciBjb25zaXN0ZW5jeS4KCVVwZGF0ZSB0aGUgZGJnaGVscCBzZWN0aW9uIGluIHdpbjMyLmFwaS4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfbG9jYWwucG06IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJTWFrZSB0aGUgJ3dyb25nIGFyZ3VtZW50IGNvdW50JyB3YXJuaW5nIGNsZWFyZXIgd2hlbiBkZWFsaW5nIHdpdGggbG9uZwoJdnMuICJsb25nIGxvbmciIGlzc3Vlcy4KCgkqIGRsbHMvbnRkbGwvdGltZS5jOiBSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglDb3JyZWN0IHRoZSBjYWxjdWxhdGlvbiBvZiB0aGUgeWVhciBmb3IgdGhlIDMxJ3N0IG9mIERlY2VtYmVyIG9mIGxlYXAKCXllYXJzLgoKCSogZGxscy9tc3ZjcnQvbXN2Y3J0LmgsIGRsbHMvbXN2Y3J0L3RpbWUuYzoKCVJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCS0gbWt0aW1lIHNob3VsZCBjb21wdXRlIHRoZSB0bV93ZGF5LCB0bV95ZGF5IGFuZCByZW5vcm1hbGl6ZSB0aGUKCSAgb3RoZXIgZmllbGRzIG9mIHRoZSBzdXBwbGllZCB0bSBzdHJ1Y3R1cmUuCgktIGFkZCBwcm90b3R5cGUgZGVjbGFyYXRpb25zIGZvciB0aGUgdGltZSBmdW5jdGlvbnMuCgoJKiBkbGxzL2NvbWN0bDMyL3JlYmFyLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUNvcnJlY3QgdGhlIGRhdGUgb2YgdGhlIGNvbXBsZXRlbmVzcyBhdWRpdC4KCgkqIGluY2x1ZGUvd2luc3ZjLmg6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCURlZmluZSBTRVJWSUNFX05PX0NIQU5HRSBhbmQgUmVnaXN0ZXJTZXJ2aWNlQ3RybEhhbmRsZXJFeC4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfcGFyc2VyLnBtOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglGaXggZXNjYXBlZCBxdW90ZSBoYW5kbGluZyBpbiBzdHJpbmdzLgoJUHJvcGVybHkgaGFuZGxlIEMgYW5kIEMrKyBjb21tZW50IHBhcnNpbmcuCgoJKiBkbGxzL29sZWF1dDMyL3Rlc3RzL3ZhcnRlc3QuYywgZGxscy9vbGVhdXQzMi92YXJpYW50LmM6CglXYWx0IE9nYnVybiA8cmV1YmVuQHVnY3MuY2FsdGVjaC5lZHU+CglWYXJQYXJzZU51bUZyb21TdHI6IEtlZXAgemVyb3MgYWZ0ZXIgZGVjaW1hbCBwb2ludCwgY29ycmVjdGx5IGtlZXAKCXRyYWNrIG9mIHRyYWlsaW5nIHplcm9zIGluIGEgZGVjaW1hbCBudW1iZXIuCglWYXJOdW1Gcm9tUGFyc2VOdW06IERvbid0IGVycm9yIG9uIGRlY2ltYWwgZXhwcmVzc2lvbnMgZm9yIHplcm8uCgoJKiBpbmNsdWRlL3NoZWxsYXBpLmg6IFJvbGYgS2FsYmVybWF0dGVyIDxyb2xmLmthbGJlcm1hdHRlckBjaXRlbmcuY29tPgoJQWRkIHByb3RvdHlwZSBmb3IgU0hGcmVlTmFtZU1hcHBpbmdzLgoKCSogZGxscy94MTFkcnYvd2ludGFiLmM6IFJvYmVydCBOb3J0aCA8N293bnEwazQwMkBzbmVha2VtYWlsLmNvbT4KCUZpeCBXVEluZm9BIGluIHdpbnRhYi5jIHNvIGl0IGNhbiBub3cgdGFrZSBscE91dHB1dCA9PSBOVUxMLCBhcyBwZXIKCXN0YW5kYXJkLgoKCSogZGxscy9jb21jdGwzMi9tb250aGNhbC5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQXVkaXQgdGhlIG1vbnRoIGNhbGVuZGFyLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gRHJhdyB3aXRoIElMRF9UUkFOU1BBUkVOVCBpbnN0ZWFkIG9mIElMRF9OT1JNQUwgdG8gZHJhdyBiaXRtYXBzIGZyb20KCSAgdGhlIG5hdGl2ZSBzaGVsbCBpbWFnZSBsaXN0IHByb3Blcmx5IChyZXBvcnRlZCBieSBUaG9yc3RlbiBLYW5pKS4KCS0gUmV3cml0ZSBUT09MQkFSX05vdGlmeUZvcm1hdCB0byBhdm9pZCBzaWRlLWVmZmVjdHMuCgoJKiBkbGxzL2FkdmFwaTMyL3NlcnZpY2UuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IENoYW5nZVNlcnZpY2VDb25maWdBIHVzaW5nIENoYW5nZVNlcnZpY2VDb25maWdXLgoKCSogcHJvZ3JhbXMvd2luZWZpbGUvRGUucmMsIHByb2dyYW1zL3dpbmVmaWxlL0VuLnJjLAoJICBwcm9ncmFtcy93aW5lZmlsZS9yZXNvdXJjZS5oLCBwcm9ncmFtcy93aW5lZmlsZS93aW5lZmlsZS5jOgoJTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCS0gdXNlIElEX1NFTEVDVF9GT05UIGluIGdlcm1hbiBtZW51CgktIG1vdmUgc3RyaW5nIGNvbnN0YW50cyBpbnRvIHN0cmluZyByZXNvdXJjZXMKCgkqIGRsbHMvZHNvdW5kL3Rlc3RzL2RzM2QuYywgZGxscy9kc291bmQvdGVzdHMvZHMzZDguYywKCSAgZGxscy9kc291bmQvdGVzdHMvZHNvdW5kLmMsIGRsbHMvZHNvdW5kL3Rlc3RzL2Rzb3VuZDguYywKCSAgZGxscy9kc291bmQvdGVzdHMvcHJvcHNldC5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCURvbid0IGNvbnNpZGVyIGEgZGV2aWNlIHRoYXQgaXMgYWxyZWFkeSBpbiB1c2UgYSB0ZXN0IGZhaWx1cmUuCgoyMDA0LTEwLTE5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogQU5OT1VOQ0UsIENoYW5nZUxvZywgVkVSU0lPTiwgY29uZmlndXJlOiBSZWxlYXNlIDIwMDQxMDE5LgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoyMDA0LTEwLTE5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGcuYywgZGxscy9rZXJuZWwvcHJvY2Vzcy5jLCBkbGxzL2tlcm5lbC9zeW5jLmMsCgkgIGRsbHMvcnBjcnQ0L3JwY19zZXJ2ZXIuYywgZGxscy9zaGVsbDMyL3NoZWxsb2xlLmMsCgkgIGRsbHMvdXNlci93aW5wcm9jLmgsIGRsbHMvd2lubW0vZHJpdmVyLmMsIGRsbHMvd2lubW0vd2luZW1tLmgsCgkgIGRsbHMvd2lubW0vd2lubW0uYywgZGxscy93aW5zb2NrL3NvY2tldC5jLAoJICBwcm9ncmFtcy93aW5oZWxwL2hscDJzZ21sLmM6CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglGaXggdmFyaW91cyBmdW5jdGlvbiBwcm90b3R5cGVzLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvaXRzcy9jaG1fbGliLmMsIGluY2x1ZGUvY29uZmlnLmguaW4sCgkgIGluY2x1ZGUvd2luZS9wb3J0LmgsIGxpYnMvcG9ydC9NYWtlZmlsZS5pbiwgbGlicy9wb3J0L2Zmcy5jOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglBZGQgZmZzKCkgdG8gcG9ydGluZyBsaWJyYXJ5LCBuZWVkZWQgYnkgTWluR1cuCgoJKiBwcm9ncmFtcy93aW5lY2ZnL3dpbmVjZmcuYzogQW5pc2ggTWlzdHJ5IDxtaXN0cnkuN0Bvc3UuZWR1PgoJUmVuYW1lIGdldGtleSBhbmQgc2V0a2V5IGZvciBGcmVlQlNELgoKCSogZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZGxscy9rZXJuZWwvbG9jYWxlLmM6CglTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCUFkZGVkIGR1bW15IGltcGxlbWVudGF0aW9uIGZvciBFbnVtVUlMYW5ndWFnZXNBL1cuCgoJKiB0b29scy93aW5lYnVpbGQvbWFpbi5jOgoJd2luZWJ1aWxkIHNob3VsZG4ndCBkZXBlbmQgb24gdGhlIE5PX1RSQUNFX01TR1MgZGVmaW5lLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvTWFrZWRsbC5ydWxlcy5pbiwKCSAgZGxscy9NYWtldGVzdC5ydWxlcy5pbiwgZGxscy9keGVycjgvTWFrZWZpbGUuaW4sCgkgIGRsbHMvZHhlcnI5L01ha2VmaWxlLmluLCBkbGxzL2R4Z3VpZC9NYWtlZmlsZS5pbiwKCSAgZGxscy9zdHJtaWlkcy9NYWtlZmlsZS5pbiwgZGxscy91dWlkL01ha2VmaWxlLmluLAoJICBpbmNsdWRlL2NvbmZpZy5oLmluLCBpbmNsdWRlL3dpbmUvZGVidWcuaCwKCSAgcHJvZ3JhbXMvTWFrZXByb2cucnVsZXMuaW4sIHByb2dyYW1zL2F2aXRvb2xzL01ha2VmaWxlLmluOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJVXNlIGEgbmV3IERMTERFRlMgdmFyaWFibGUgaW4gY29uZmlndXJlL01ha2VmaWxlcyB0byBhY3R1YWxseSByZW1vdmUKCWFsbCB0aGUgZGVidWcgbWVzc2FnZXMgKG1pbnVzIEVSUnMpIGlmIHRoZSB1c2VyIGRlY2lkZXMgc28uCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWJvZXguYywgZGxscy9jb21jdGwzMi9jb21jdGwzMi5oLAoJICBkbGxzL2NvbWN0bDMyL2NvbWN0bDMyLnNwZWMsIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYzoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCBTZXRQYXRoV29yZEJyZWFrUHJvYyBhbmQgTWlycm9ySWNvbi4KCgkqIGRsbHMvY29tY3RsMzIvcmViYXIuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJUmViYXIgY29tcGxldGVuZXNzIGF1ZGl0LgoKCSogd2luZG93cy9ub25jbGllbnQuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJV2luZG93cyB3aXRoIFdTX0VYX1RPT0xXSU5ET1cgc3R5bGUgc2hvdWxkIG5vdCBoYXZlIG1pbi9tYXggYnV0dG9ucy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjOiBXYXJyZW4gQmFpcmQgPHdhcnJlbi5iYWlyZEBjaW1tZXRyeS5jb20+CgktIGFkZGVkIC1mUElDIHRvIHRoZSBMRERMTEZMQUdTIGxpbmUgZm9yIEhQVVg7IHdpbmVnY2MgbmVlZHMgdG8gcGFzcwoJICAtZlBJQyB0byB0aGUgbGluayBsaW5lIHRvIGtlZXAgdGhlIGhwIGxpbmtlciBoYXBweQoJLSBzZXQgRExMRVhUIHRvIC5zbCBvbiBIUFVYCgoJKiBkbGxzL2FkdmFwaTMyL3JlZ2lzdHJ5LmM6CglSZWdRdWVyeVZhbHVlVyBtdXN0IHJldHVybiBjb3VudCBpbiBieXRlcyBmb3IgZW1wdHkgc3RyaW5nIHRvby4KCgkqIGRsbHMvZHNvdW5kL3Rlc3RzL2NhcHR1cmUuYywgZGxscy9kc291bmQvdGVzdHMvZHMzZC5jLAoJICBkbGxzL2Rzb3VuZC90ZXN0cy9kczNkOC5jLCBkbGxzL2Rzb3VuZC90ZXN0cy9kc291bmQuYywKCSAgZGxscy9kc291bmQvdGVzdHMvZHNvdW5kOC5jLCBkbGxzL2Rzb3VuZC90ZXN0cy9wcm9wc2V0LmM6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJRG9uJ3QgY29uc2lkZXIgZmFpbHVyZSB3aXRoIERTRVJSX05PRFJJVkVSIGEgdGVzdCBmYWlsdXJlLgoKCSogZGxscy91c2VyL21lbnUuYywgZGxscy91c2VyL3VzZXIzMi5zcGVjOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2UgVHJhbnNsYXRlQWNjZWxlcmF0b3JBIGhhbmRsZSBuYXRpb25hbCBjaGFyYWN0ZXJzLgoKCSogZGxscy9jb21jdGwzMi90b29sdGlwcy5jOiBHZSB2YW4gR2VsZG9ycCA8Z3ZnQHJlYWN0b3MuY29tPgoJUGFzcyBjb3JyZWN0IHVpUGFyYW0gZm9yIFNQSV9HRVROT05DTElFTlRNRVRSSUNTLgoKCSogdG9vbHMvd2luZS5pbmY6IFJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCUFkZCBIS0xNLCVDdXJyZW50dmVyc2lvbiVcU2V0dXAsIkJvb3REaXIiIHRvIHRoZSBpbnN0YWxsYXRpb24KCWRlZmF1bHRzLgoKCSogZGxscy93aW50cnVzdC9NYWtlZmlsZS5pbjoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUFkZCBrZXJuZWwzMiBhcyBpbXBvcnQgZm9yIHdpbnRydXN0LgoKCSogZGxscy9rZXJuZWwvc3luYy5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgQ2FsbE5hbWVkUGlwZUEgdXNpbmcgQ2FsbE5hbWVkUGlwZVcuCgoJKiBkbGxzL29sZWF1dDMyL3Rlc3RzL3ZhcnRlc3QuYywgZGxscy9vbGVhdXQzMi92YXJpYW50LmM6CglXYWx0IE9nYnVybiA8cmV1YmVuQHVnY3MuY2FsdGVjaC5lZHU+CglLZWVwICJ0cmFpbGluZyIgemVyb3Mgb24gd2hvbGUgbnVtYmVyIHBhcnQgb2YgYSBkZWNpbWFsLgoJQWRkIGFuIGV4YW1wbGUgb2YgdGhpcyB0byB0ZXN0cy4KCgkqIGRsbHMvb2xlYXV0MzIvdGVzdHMvc2FmZWFycmF5LmM6CglXYWx0IE9nYnVybiA8cmV1YmVuQHVnY3MuY2FsdGVjaC5lZHU+CglUZXN0IHRoYXQgU2FmZUFycmF5RGVzdHJveURhdGEga2VlcHMgdGhlIHBvaW50ZXIgaWYgRkFERl9TVEFUSUMgaXMKCXNldCwgbnVsbHMgaXQgb3RoZXJ3aXNlLgoKCSogZGxscy9vbGVhdXQzMi9zYWZlYXJyYXkuYzogV2FsdCBPZ2J1cm4gPHJldWJlbkB1Z2NzLmNhbHRlY2guZWR1PgoJU2FmZUFycmF5RGVzdHJveURhdGEgLSBrZWVwIHBvaW50ZXIsIGRvbid0IGRlc3Ryb3kgZGF0YSBpZiBGQURGX1NUQVRJQwoJaXMgc2V0LgoKCSogZGxscy9tc3ZjcnQvY3BwLmMsIGRsbHMvbXN2Y3J0L2NwcGV4Y2VwdC5jLCBkbGxzL21zdmNydC9jcHBleGNlcHQuaDoKCU91dHB1dCB0aGUgdmlydHVhbCB0YWJsZXMgZm9yIHRoZSBleGNlcHRpb24gY2xhc3NlcyB1c2luZyBhc3NlbWJseSBzbwoJdGhhdCB0aGV5IGNhbiBoYXZlIHRoZSBjb3JyZWN0IGxheW91dCwgYW5kIGdldCByaWQgb2YgdGhlCgljb3JyZXNwb25kaW5nIGhhY2tzIGluIFJUVElfR2V0T2JqZWN0TG9jYXRvci4KCUJ1aWxkIG1vcmUgb2YgdGhlIGNvZGUgb24gbm9uLWkzODYgcGxhdGZvcm1zIHRvby4KCVByb3RlY3QgX19SVER5bmFtaWNDYXN0IGFuZCBmcmllbmRzIHdpdGggZXhjZXB0aW9uIGhhbmRsZXJzLgoJRml4IGhhbmRsaW5nIG9mIHRoZSB2dGFibGUgcG9pbnRlciBzbyB0aGF0IHdlIGRvbid0IG5lZWQgdG8gZGVjbGFyZQoJYWxsIG9iamVjdCBwb2ludGVycyBhcyB0eXBlX2luZm8uCgoJKiBzZXJ2ZXIvbWFpbi5jOiBCaWxsIE1lZGxhbmQgPGJpbGxtZWRsYW5kQG1lcmN1cnlzcGVlZC5jb20+CglBZGRlZCBhIHZlcnNpb24gb3B0aW9uIHRvIHRoZSB3aW5lc2VydmVyLgoKCSogaW5jbHVkZS90Y2hhci5oOiBNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJLSBGaXggdHlwbyBpbiBlcnJvciBtZXNzYWdlCgktIFNlcGFyYXRlIHdpbnRfdCBkZWZpbml0aW9uIGZyb20gd2N0eXBlX3QgZGVmaW5pdGlvbiAobmVlZGVkIGZvcgoJICBDeWd3aW4gdGFyZ2V0KS4KCgkqIGxvYWRlci9rdGhyZWFkLmM6IEhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJUHJvdGVjdCB1c2Ugb2YgcHRocmVhZCBmdW5jdGlvbnMgd2l0aCAjaWZkZWYgSEFWRV9QVEhSRUFEX0guCgoJKiBkbGxzL3NoZWxsMzIvc2hsbWVudS5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglDb252ZXJ0IHRoZSBzaGVsbG1lbnUgY29kZSB0byB1c2UgdW5pY29kZS4KCjIwMDQtMTAtMTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3dpbm1tL3Rlc3RzL2NhcHR1cmUuYywgZGxscy93aW5tbS90ZXN0cy9taXhlci5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCURvbid0IGNvbnNpZGVyIE1NU1lTRVJSX05PVFNVUFBPUlRFRCBhbiBlcnJvciBmb3Igd2lkZSBmdW5jdGlvbnMuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmM6IEdlIHZhbiBHZWxkb3JwIDxndmdAcmVhY3Rvcy5jb20+CglEb24ndCBmcmVlIHN1YmNsYXNzIHN0YWNrIHdoaWxlIGl0J3Mgc3RpbGwgaW4gdXNlLgoKCSogZG9jdW1lbnRhdGlvbi9jb25maWd1cmluZy5zZ21sOiBJdmFuIExlbyBQdW90aSA8cHVvdGlAaW53aW5kLml0PgoJUmVtb3ZpbmcgcmVmZXJlbmNlcyB0byBub3cgb2Jzb2xldGUgd2luZXNldHVwdGssIGFzIHJlcXVlc3RlZCBieSB1c2Vycy4KCgkqIGRsbHMvbXN2Y3J0L2NwcC5jLCBkbGxzL21zdmNydC9jcHBleGNlcHQuYywgZGxscy9tc3ZjcnQvY3BwZXhjZXB0Lmg6CglGaXhlZCBfX1JURHluYW1pY0Nhc3QgdG8gcmV0dXJuIHRoZSBjb3JyZWN0IHBvaW50ZXIgZm9yIG11bHRpcGxlCglpbmhlcml0YW5jZSBoaWVyYXJjaGllcyAodGhhbmtzIHRvIE11c2UgUmVzZWFyY2ggZm9yIGhlbHAgd2l0aCB0aGlzCglvbmUpLgoJQWRkZWQgc29tZSBkZWJ1ZyBvdXRwdXQuCgoJKiBkbGxzL29kYmMzMi9NYWtlZmlsZS5pbiwgZGxscy9vZGJjMzIvcHJveHlvZGJjLmM6CglCaWxsIE1lZGxhbmQgPGJpbGxtZWRsYW5kQG1lcmN1cnlzcGVlZC5jb20+CglEdXJpbmcgc3RhcnR1cCBvZiB0aGUgY29ubmVjdGlvbiB0byBhbiBleHRlcm5hbCBPREJDIHByb3ZpZGVyCgkoZS5nLiB1bml4T0RCQykgcmVwbGljYXRlIHRoYXQgcHJvdmlkZXIncyBkcml2ZXIgYW5kIERTTiBkYXRhIHRvIHRoZQoJcmVnaXN0cnkgc28gdGhhdCBXaW5kb3dzIHByb2dyYW1zIHRoYXQgYWN0dWFsbHkgcXVlcnkgdGhlIHJlZ2lzdHJ5CglyYXRoZXIgdGhhbiB0aGUgT0RCQyB3aWxsIGZpbmQgYXQgbGVhc3Qgc29tZSBpbmZvcm1hdGlvbi4KCgkqIGRsbHMvZGJnaGVscC9kYmdoZWxwX3ByaXZhdGUuaCwgZGxscy9kYmdoZWxwL21lbW9yeS5jLAoJICBkbGxzL29sZTMyL2RhdGFjYWNoZS5jLCBkbGxzL29sZWF1dDMyL29sZWZvbnQuYywKCSAgZGxscy9vbGVhdXQzMi9vbGVwaWN0dXJlLmMsIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jLAoJICBkbGxzL3NoZWxsMzIvc2hsdmlldy5jLCBpbmNsdWRlL2F4Y29yZS5pZGw6CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglGaXggc29tZSB0eXBlcyBwcm9ibGVtcy4KCgkqIGRsbHMvb2xlYXV0MzIvdGVzdHMvdmFydGVzdC5jOiBXYWx0IE9nYnVybiA8cmV1YmVuQHVnY3MuY2FsdGVjaC5lZHU+CglUZXN0IHplcm8gZXhwb25lbnRzIHdpdGggYW5kIHdpdGhvdXQgc2lnbnMuCgoJKiBkbGxzL3dpbmVkb3MvZG9zZXhlLmgsIGRsbHMvd2luZWRvcy9pbnRlcnJ1cHRzLmMsCgkgIGRsbHMvd2luZWRvcy9yZWxheS5jOgoJTWFya3VzIEFtc2xlciA8bWFya3VzLmFtc2xlckBvcmliaS5vcmc+CglQdXNoIG9uIHN0YWNrIGluIDE2IGJpdCBtb2RlIHdpdGggc2VnbWVudCB3cmFwIGFyb3VuZC4KCgkqIGluY2x1ZGUvLmN2c2lnbm9yZSwgaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9yaWNoZWRpdC5oLAoJICBpbmNsdWRlL3JpY2hvbGUuaCwgaW5jbHVkZS9yaWNob2xlLmlkbDoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIGFuIElETCBmaWxlIGZvciBSaWNoZWRpdCdzIE9MRSBpbnRlcmZhY2UuCgoJKiBkbGxzL3NoZWxsMzIvc2hsZmlsZW9wLmM6CglSb2xmIEthbGJlcm1hdHRlciA8cm9sZi5rYWxiZXJtYXR0ZXJAY2l0ZW5nLmNvbT4KCU1vZGlmeSBBTlNJIGZ1bmN0aW9ucyB0byBhbGxvY2F0ZSBpbnRlcm1lZGlhdGUgVW5pY29kZSBzdHJpbmdzIG9uIHRoZQoJaGVhcCBpbnN0ZWFkIG9mIHN0YWNrLgoKCSogZGxscy93aW5tbS9tbXN5c3RlbS5jLCBkbGxzL3dpbm1tL3RpbWUuYywgZGxscy93aW5tbS93aW5lbW0uaDoKCUplcmVteSBXaGl0ZSA8andoaXRlQGNvZGV3ZWF2ZXJzLmNvbT4KCVJldmlzZSB3aW5tbS90aW1lLmMgdG8gZml4IHRpbWVyIHJlc29sdXRpb24gYXQgMSBtcy4gVGhpcyB0aGVuIGFsbG93cwoJYSBtdWNoIG1vcmUgZWZmaWNpZW50IGltcGxlbWVudGF0aW9uIG9mIHRpbWVyIGV2ZW50cyBhbmQgdGltZUdldFRpbWUsCglhbmQgY2FsbGVycyB0aGF0IHVzZWQgc3ViIDEwIG1zIHJlc29sdXRpb24gd2lsbCBub3cgZ2V0IGNvcnJlY3QKCXJlc3VsdHMuCgoJKiBsb2FkZXIva3RocmVhZC5jOiBSZXN0b3JlIGxvc3QgY2h1bmsgb2YgcHJldmlvdXMgcGF0Y2guCgoJKiBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL2V4ZGlzcC5pZGwsIGluY2x1ZGUvZXhkaXNwaWQuaDoKCUphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CgktIEFkZGVkIGRpc3BpbnRlcmZhY2VzOiBEV2ViQnJvd3NlckV2ZW50cyBhbmQgRFdlYkJyb3dzZXJFdmVudHMyLgoJLSBBZGRlZCBjb2NsYXNzOiBXZWJCcm93c2VyLgoJLSBBZGRlZCBleGRpc3BpZC5oLgoKCSogZGxscy9udGRsbC9leGNlcHRpb24uYywgbGlicy9wb3J0L2ludGVybG9ja2VkLmMsIGxvYWRlci9rdGhyZWFkLmMsCgkgIHByb2dyYW1zL3dpbmVkYmcvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmVkYmcvYmVfYWxwaGEuYywKCSAgcHJvZ3JhbXMvd2luZWRiZy9nZGJwcm94eS5jLCBwcm9ncmFtcy93aW5lZGJnL3dpbmVkYmcuYywKCSAgdG9vbHMvd2luZWJ1aWxkL2ltcG9ydC5jLCB0b29scy93aW5lYnVpbGQvc3BlYzMyLmM6CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglBZGQgc29tZSBtb3JlIEFscGhhIGFzbSBjb2RlIGFuZCBBbHBoYS1zcGVjaWZpYyBwYXJ0cy4KCgkqIGRsbHMvdXNlci9kaXNwbGF5LmMsIGRsbHMvdXNlci9tZXNzYWdlLmMsIGRsbHMvdXNlci91c2VyX21haW4uYywKCSAgd2luZG93cy9jdXJzb3JpY29uLmMsIHdpbmRvd3MvZGNlLmMsIHdpbmRvd3Mvc3lzcGFyYW1zLmMsCgkgIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3Mvd2lucG9zLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJUHJvdGVjdCBVU0VSMzIgYWdhaW5zdCBlYXJseSBncmFwaGljcyBkcml2ZXIgdW5sb2FkaW5nLgoKCSogZGxscy91c2VyL2NvbWJvLmMsIGRsbHMvdXNlci9jb250cm9scy5oLCBkbGxzL3VzZXIvbGlzdGJveC5jLAoJICBpbmNsdWRlL3dpbnVzZXIuaDoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglJbXBsZW1lbnQgTEJTX0NPTUJPQk9YLCBhbmQgbWFrZSB1c2Ugb2YgaXQuCglCZXR0ZXIgc2VwYXJhdGlvbiBiZXR3ZWVuIHRoZSBMaXN0Ym94IGFuZCBDb21ib2JveC4KCUhhdmUgYSBzaW5nbGUgc2V0IG9mIHduZHByb2NzLCBqdXN0IGxpa2UgV2luZG93cy4KCgkqIGRsbHMvYW1zdHJlYW0vYW1zdHJlYW0uYywgZGxscy9pdHNzL2l0c3MuYywgZGxscy9xdWFydHovZmlsZXNvdXJjZS5jLAoJICBkbGxzL3F1YXJ0ei9maWx0ZXJncmFwaC5jOgoJSm9yaXMgSHVpemVyIDxqb3Jpc2h1aXplckBwbGFuZXQubmw+CglBZGRlZCBJQ2xhc3NGYWN0b3J5LT5DcmVhdGVJbnN0YW5jZSBhZ2dyZWdhdGlvbiBjaGVja3MuCgoJKiBkbGxzL21zdmlkZW8vZHJhd2RpYi5jOgoJUGV0ZXIgUmlvY3JldXggPHBhcit3aW5lX3BhdGNoZXNAc2lsaXN0aXguY29tPgoJIE1ha2UgRHJhd0RpYkRyYXcgaG9ub3VyIHRoZSBEREZfQkFDS0dST1VORFBBTCBmbGFnLgoKCSogZGxscy93aW5lZG9zL21vZHVsZS5jOiBNYXJrdXMgQW1zbGVyIDxtYXJrdXMuYW1zbGVyQG9yaWJpLm9yZz4KCUluaXRpYWxpemUgLkNPTSBzdGFjay4KCgkqIGRsbHMvd2ludHJ1c3Qvd2ludHJ1c3Quc3BlYywgZGxscy93aW50cnVzdC93aW50cnVzdF9tYWluLmM6CglTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCUFkZGVkIHN0dWIgZm9yIENyeXB0Q0FUQWRtaW5BY3F1aXJlQ29udGV4dC4KCgkqIGRsbHMvbnRkbGwvdGltZS5jOiBSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglJbiBSdGxRdWVyeVRpbWV6b25lSW5mb3JtYXRpb24gdXNlIGluZm9ybWF0aW9uIGZyb20gdGhlIHJlZ2lzdHJ5IGlmIGl0CglpcyBhdmFpbGFibGUuCgoJKiBkbGxzL2dkaS9wYWxldHRlLmM6IERvdWcgUGF1bCA8ZG91Z0BlbGVtZW50YWwuYXRoLmN4PgoJR2xlbm4gV3Vyc3RlciA8Z3d1cnN0ZXJAc2NzLmNhcmxldG9uLmNhPgoJRG9uJ3QgdW5yZWFsaXplIHRoZSBwYWxldHRlIGJ5IGNhbGxpbmcgU2V0UGFsZXR0ZUVudHJpZXMuCglDaGVjayBwZUZsYWdzIGZvciBQQ19SRVNFUlZFRC4KCgkqIGRsbHMveDExZHJ2L3BhbGV0dGUuYzogRG91ZyBQYXVsIDxkb3VnQGVsZW1lbnRhbC5hdGguY3g+CglHbGVubiBXdXJzdGVyIDxnd3Vyc3RlckBzY3MuY2FybGV0b24uY2E+CglDaGFuZ2UgcmVhZGluZyBvZiBQQ18oRVhQTElDSVR8Tk9DT0xMQVBTRXxSRVNFUlZFRCkgdG8gaGFuZGxlIG11bHRpcGxlCgl2YWx1ZXMuCgoJKiBwcm9ncmFtcy9jbG9jay9Dcy5yYywgcHJvZ3JhbXMvY2xvY2svcnNyYy5yYywKCSAgcHJvZ3JhbXMvY21kbGd0c3QvQ3MucmMsIHByb2dyYW1zL2NtZGxndHN0L2NtZGxnci5yYywKCSAgcHJvZ3JhbXMvbm90ZXBhZC9Dcy5yYywgcHJvZ3JhbXMvbm90ZXBhZC9yc3JjLnJjLAoJICBwcm9ncmFtcy9wcm9nbWFuL0NzLnJjLCBwcm9ncmFtcy9wcm9nbWFuL3JzcmMucmMsCgkgIHByb2dyYW1zL3JlZ2VkaXQvQ3MucmMsIHByb2dyYW1zL3JlZ2VkaXQvcnNyYy5yYywKCSAgcHJvZ3JhbXMvc3RhcnQvQ3MucmMsIHByb2dyYW1zL3N0YXJ0L3JzcmMucmMsCgkgIHByb2dyYW1zL3VuaW5zdGFsbGVyL3JzcmMucmM6CglEYXZpZCBLcmVkYmEgPGtyZWRiYUBpYm90LmNhcy5jej4KCUFkZGVkIHNvbWUgQ3plY2ggcmVzb3VyY2VzLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gVEJOX0RFTEVUSU5HQlVUVE9OIHNlbmRzIHRoZSBjb21tYW5kIElELCBub3QgdGhlIGluZGV4LgoJLSBGaWxsIGluIHRiQnV0dG9uIHN0cnVjdHVyZSBmb3IgVEJOX0RFTEVUSU5HQlVUVE9OIG5vdGlmaWNhdGlvbi4KCS0gRG9jdW1lbnQgVEJOX1FVRVJZKiBzZW5kaW5nIGluZGljZXMuCgoJKiBkbGxzL3dpbnNwb29sL2luZm8uYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IHBvcnQgZW51bWVyYXRpb24uCgoJKiBkbGxzL2tlcm5lbC9jcHUuYzogSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglBdm9pZCB1c2luZyBnZXR0aW1lb2ZkYXkoKS4KCgkqIGRsbHMvZ2RpL2ZyZWV0eXBlLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCVRlc3Qgd2hldGhlciB0aGUgZnRfZW5jb2RpbmcncyBhcmUgZGVmaW5lZCwgbm90IHRoZSBGVF9FTkNPRElORydzLgoKCSogZGxscy91c2VyL21pc2MuYywgZGxscy91c2VyL3VzZXIzMi5zcGVjOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTdHViIGZ1bmN0aW9uIGZvciBPcGVuSW5wdXREZXNrdG9wLgoKCSogZGxscy9ycGNydDQvY3Byb3h5LmMsIGRsbHMvcnBjcnQ0L3JwY3J0NC5zcGVjOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWRkIHN0dWIgaW1wbGVtZW50YXRpb24gZm9yIENyZWF0ZVByb3h5RnJvbVR5cGVJbmZvLgoKCSogaW5jbHVkZS9iYXNldHNkLmg6IFZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCVVuaWZvcm1pemUgZW5kaWFubmVzcyBkZWZpbml0aW9uLgoKCSogZGxscy94MTFkcnYveDExZHJ2X21haW4uYzoKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCVByb3RlY3Qgc29tZSBtb3JlIHR5cGVzIHdoaWNoIGNhbiBiZSByZWRlY2xhcmVkIGluIFhtZC5oLgoKCSogcHJvZ3JhbXMvd2luZWNmZy9saWJyYXJpZXMuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglSZXR1cm4gb3V0IG9mIHRoZSBkZWZhdWx0IGNhc2UsIGFzc2VydCgpIGlzIHJlbW92ZWQgd2l0aCAtRE5ERUJVRy4KCgkqIGRsbHMvZHNvdW5kL3Rlc3RzL2RzM2QuYywgZGxscy9kc291bmQvdGVzdHMvZHMzZDguYywKCSAgZGxscy9kc291bmQvdGVzdHMvZHNvdW5kLmMsIGRsbHMvZHNvdW5kL3Rlc3RzL2Rzb3VuZDguYywKCSAgZGxscy9kc291bmQvdGVzdHMvcHJvcHNldC5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUZpeCBzb21lIHBsYWNlcyB3aGVyZSBubyBkcml2ZXIgcHJlc2VudCBjYXVzZXMgcHJvYmxlbXMuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMyLnNwZWMsIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmM6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgSW1hZ2VMaXN0X1NldENvbG9yVGFibGUuCgoJKiBkbGxzL2dkaS9kaWIuYywgaW5jbHVkZS93aW5nZGkuaDoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCVRoZSAiY29sb3JzIiBwYXJhbWV0ZXIgb2YgU2V0RElCQ29sb3JUYWJsZSBzaG91bGQgYmUgQ09OU1QuCgoJKiBkbGxzL2FkdmFwaTMyL2NyeXB0LmM6IE1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCUZpeGVkIGEgdHlwbyBpbiBDcnlwdEV4cG9ydEtleS4KCgkqIHRvb2xzL3dpZGwvaGVhZGVyLmMsIHRvb2xzL3dpZGwvcGFyc2VyLnksIHRvb2xzL3dpZGwvd2lkbHR5cGVzLmg6CglKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJQWRkZWQgd3JpdGluZyBmb3J3YXJkIGRlY2xhcmF0aW9uIG9mIGRpc3BpbnRlcmZhY2UuCgoJKiBkbGxzL29sZTMyL2NvbXBvYmouYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJSW1wcm92ZSBwcm94eSBkZXN0cnVjdGlvbiBjb21tZW50LgoKCSogZGxscy9udGRsbC9zZXJ2ZXIuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJTWFzayBTSUdDSExEIHRvIHByZXZlbnQgcGFydGlhbCB3cml0ZXMgaW4gdGhlIG5ld19wcm9jZXNzIHNlcnZlcgoJY2FsbC4KCgkqIGluY2x1ZGUvd2ludXNlci5oOgoJV2lsbGlhbSBQb2V0cmEgWW9nYSBIYWRpc29lc2VuIDx3aWxsaWFtcG9ldHJhQHlhaG9vLmNvbT4KCUFkZGVkIHNvbWUgc3lzdGVtIG1ldHJpY3MgZGVmaW5pdGlvbnMuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLCBkbGxzL3NoZWxsMzIvc2hsZmlsZW9wLmM6CglSb2xmIEthbGJlcm1hdHRlciA8cm9sZi5rYWxiZXJtYXR0ZXJAY2l0ZW5nLmNvbT4KCUFkZGVkIFNIRnJlZU5hbWVNYXBwaW5ncyBpbXBsZW1lbnRhdGlvbi4KCgkqIGxvYWRlci9rdGhyZWFkLmM6IFZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCUZpeCB0aGUgZGVjbGFyYXRpb24gb2YgcHRocmVhZF9tdXRleGF0dHJfZ2V0dHlwZSgpLgoKMjAwNC0xMC0xNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbXN2Y3J0L2NwcC5jOiBGaXhlZCBzcGVsbGluZyBvZiAnaGllcmFyY2h5Jy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL2dkaS9wcmludGRydi5jLCBpbmNsdWRlL2NvbmZpZy5oLmluOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglBZGRlZCBjaGVjayBmb3IgZm9yaygpIHRvIGZpeCB0aGUgTWluR1cgYnVpbGQuCgoJKiB0b29scy93aW5lLmluZiwgd2luZG93cy9zeXNwYXJhbXMuYzogSXZhbiBMZW8gUHVvdGkgPHB1b3RpQGlud2luZC5pdD4KCUltcGxlbWVudCBhY3Rpb24gODMgaW4gU3lzdGVtUGFyYW1ldGVyc0luZm8oKS4KCgkqIHNlcnZlci9NYWtlZmlsZS5pbiwgc2VydmVyL2NvbnRleHRfYWxwaGEuYzoKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCUNyZWF0ZSB0aGUgbmVjZXNzYXJ5IGZ1bmN0aW9ucyBmb3Igd2luZXNlcnZlciBjb250ZXh0cyBmb3IgQWxwaGEuCgoJKiBkbGxzL2NvbWN0bDMyL3Rlc3RzL2ltYWdlbGlzdC5jOiBHZXJhbGQgUGZlaWZlciA8Z2VyYWxkQHBmZWlmZXIuY29tPgoJQ29tcGxldGVseSBkaXNhYmxlIHVudXNlZCBmdW5jdGlvbiBzaG93X2ltYWdlKCkuCgoJKiBkbGxzL2QzZDkvYmFzZXRleHR1cmUuYywgZGxscy9kM2Q5L2N1YmV0ZXh0dXJlLmMsCgkgIGRsbHMvZDNkOS9kM2Q5X3ByaXZhdGUuaCwgZGxscy9kM2Q5L2RldmljZS5jLCBkbGxzL2QzZDkvZGlyZWN0eC5jLAoJICBkbGxzL2QzZDkvaW5kZXhidWZmZXIuYywgZGxscy9kM2Q5L3BpeGVsc2hhZGVyLmMsIGRsbHMvZDNkOS9xdWVyeS5jLAoJICBkbGxzL2QzZDkvcmVzb3VyY2UuYywgZGxscy9kM2Q5L3N0YXRlYmxvY2suYywgZGxscy9kM2Q5L3N1cmZhY2UuYywKCSAgZGxscy9kM2Q5L3N3YXBjaGFpbi5jLCBkbGxzL2QzZDkvdGV4dHVyZS5jLCBkbGxzL2QzZDkvdmVydGV4YnVmZmVyLmMsCgkgIGRsbHMvZDNkOS92ZXJ0ZXhkZWNsYXJhdGlvbi5jLCBkbGxzL2QzZDkvdmVydGV4c2hhZGVyLmMsCgkgIGRsbHMvZDNkOS92b2x1bWUuYywgZGxscy9kM2Q5L3ZvbHVtZXRleHR1cmUuYywKCSAgZGxscy9kM2Q5L3ZzaGFkZXJkZWNsYXJhdGlvbi5jLCBkbGxzL3dpbmVkM2QvTWFrZWZpbGUuaW4sCgkgIGRsbHMvd2luZWQzZC9kZXZpY2UuYywgZGxscy93aW5lZDNkL3Jlc291cmNlLmMsCgkgIGRsbHMvd2luZWQzZC92ZXJ0ZXhidWZmZXIuYywgZGxscy93aW5lZDNkL3dpbmVkM2RfcHJpdmF0ZS5oLAoJICBpbmNsdWRlL3dpbmUvd2luZWQzZF9pbnRlcmZhY2UuaDoKCUphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CgktIEFkZCBzdXBwb3J0IChhcyBmYXIgYXMgd2FzIHByZXZpb3VzbHkpIGZvciB0aGUgVmVydGV4QnVmZmVyIGFuZAoJICBSZXNvdXJjZSBjbGFzc2VzIGluIHdpbmVkM2QgYW5kIHVzZSB3aGVuIGNhbGxlZCBmcm9tIGQzZDkuCgktIFJlZHVjZSB0aGUgaGVhZGVyIGluY2x1ZGVzIGluIGFsbCB0aGUgZDNkOSBpbnRlcmZhY2UgdG8gb25lIGNvbW1vbgoJICBzZXQgaW4gdGhlIHByaXZhdGUgaGVhZGVyLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWM6IFZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCURvbid0IGJ1aWxkIHdpbmUtcHJlbG9hZGVyIGZvciBvdGhlciBjcHVzIHRoYW4geDg2LgoKCSogZGxscy93aW5tbS93aW5lb3NzL21peGVyLmM6IEhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJZ2V0TWVzc2FnZSgpIGlzIG9ubHkgZGVmaW5lZCB3aGVuIEhBVkVfT1NTIGlzIGRlZmluZWQuCgoJKiBkbGxzL3RhcGkzMi9hc3Npc3RlZC5jLCBkbGxzL3RhcGkzMi9saW5lLmMsIGRsbHMvdGFwaTMyL3Bob25lLmMsCgkgIGRsbHMvdGFwaTMyL3RhcGkzMi5zcGVjLCBpbmNsdWRlL3RhcGkuaDoKCVJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCVByb3ZpZGUgYW4gJ0EnIHZlcnNpb24gb2YgYXBwcm9wcmlhdGUgZnVuY3Rpb25zLgoKCSogZGxscy9tc3ZjcnQvZmlsZS5jLCBkbGxzL21zdmNydC9tc3ZjcnQuaCwgZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWM6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCVByZWZpeCBfZnNvcGVuIHdpdGggTVNWQ1JUXyB0byBhdm9pZCBjb2xsaXNpb24gd2l0aCBNaW5HVyBoZWFkZXIuCglUeXBvIGZpeC4KCgkqIHRvb2xzL3dpbmVidWlsZC9pbXBvcnQuYzogVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJRG9uJ3QgdXNlIG1hZ2ljIHNpemVzLCBhY3R1YWxseSBjYWxjdWxhdGUgdGhlbS4KCgkqIHRvb2xzL3dpbmVidWlsZC9zcGVjMTYuYzogVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJT25seSBjb21waWxlIEJ1aWxkQ2FsbEZyb20xNkZ1bmMgb24geDg2LgoKCSogZGxscy9zaGx3YXBpL3JlZy5jLCBkbGxzL3NobHdhcGkvdGVzdHMvc2hyZWcuYzoKCUJpbGwgTWVkbGFuZCA8YmlsbG1lZGxhbmRAbWVyY3VyeXNwZWVkLmNvbT4KCUZpeCBTSERlbGV0ZUtleSBzbyB0aGF0IGl0IHdpbGwgaGFuZGxlIGRlbGV0aW5nIGEga2V5IHdpdGggbW9yZSB0aGFuCglvbmUgc3Via2V5LiAgQWxzbyBpbmNsdWRlcyB0ZXN0LgoKCSogaW5jbHVkZS93aW51c2VyLmg6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBkZWNsYXJhdGlvbnMgZm9yIEdldENsYXNzTG9uZ1B0cntBLFd9LCBHQ0xQXyogZGVmaW5lcyBhbmQgdXNlcgoJb2JqZWN0IGluZm9ybWF0aW9uIGRlZmluZXMuCgoyMDA0LTEwLTExICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9kYmdoZWxwL2RiZ2hlbHAuc3BlYywgZGxscy9kYmdoZWxwL3NvdXJjZS5jLAoJICBkbGxzL2RiZ2hlbHAvc3ltYm9sLmMsIGRsbHMvZGJnaGVscC90eXBlLmMsIGluY2x1ZGUvZGJnaGVscC5oLAoJICBwcm9ncmFtcy90YXNrbWdyL2RiZ2NobmwuYywgcHJvZ3JhbXMvd2luZWRiZy9tZW1vcnkuYywKCSAgcHJvZ3JhbXMvd2luZWRiZy9zeW1ib2wuYzoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBmdW5jdGlvbiBhbmQgc3RydWN0dXJlIGZpZWxkIHR5cGVzIHNvIHdlIGFyZSBjb21wYXRpYmxlIHdpdGggdGhlCgluYXRpdmUgZGJnaGVscC4KCgkqIGRsbHMva2VybmVsL3Byb2Nlc3MuYywgZGxscy9rZXJuZWwvdmlydHVhbC5jLCBkbGxzL250ZGxsL2Vudi5jLAoJICBkbGxzL250ZGxsL2hlYXAuYywgZGxscy9udGRsbC9sb2FkZXIuYywgZGxscy9udGRsbC9yZWxheS5jLAoJICBkbGxzL250ZGxsL3RocmVhZC5jLCBkbGxzL250ZGxsL3ZpcnR1YWwuYywgaW5jbHVkZS93aW50ZXJubC5oOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJRml4IE50QWxsb2NhdGVWaXJ0dWFsTWVtb3J5IGRlY2xhcmF0aW9uIGFuZCBmaXggdXNlcnMgb2YgdGhlCglmdW5jdGlvbi4KCgkqIGluY2x1ZGUvbXN2Y3J0L3N5cy90eXBlcy5oOiBNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJRGVmaW5lIHBpZF90IGFuZCBzc2l6ZV90IGlmIG5vdCBhbHJlYWR5IGRlZmluZWQuCgoJKiBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYzogV2FsdCBPZ2J1cm4gPHJldWJlbkB1Z2NzLmNhbHRlY2guZWR1PgoJQWxsb3cgZXhwb25lbnRzIG9mIHplcm8gKGxpa2UgIjEuMDAwRTAiKSB0byBwYXJzZQoJY29ycmVjdGx5LiBQcmV2aW91c2x5LCB0aGV5IGNhdXNlZCBESVNQX0VfVFlQRU1JU01BVENILgoKCSogaW5jbHVkZS93aW5lL3BvcnQuaDoKCUFkZGVkIGZvcndhcmQgZGVjbGFyYXRpb24gb2Ygc3RydWN0IHRpbWV2YWwgZm9yIGZ1dGltZXMuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWxfbWFpbi5jLCBkbGxzL2tlcm5lbC9zeW5jLmMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywKCSAgZGxscy9udGRsbC9zeW5jLmMsIGluY2x1ZGUvd2ludGVybmwuaDoKCUltcGxlbWVudGVkIE50WWllbGRFeGVjdXRpb24uCgoJKiBkbGxzL2RiZ2hlbHAvZGJnaGVscF9wcml2YXRlLmgsIGRsbHMvZGJnaGVscC9tc2MuYywKCSAgZGxscy9kYmdoZWxwL3BlX21vZHVsZS5jOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBNb3ZlIGhlYWRlciBwYXJzaW5nIHRvIGNhbGxlcnMgb2YgcGVfbG9hZF9kZWJ1Z19kaXJlY3RvcnkuCgktIEFkZCBzdHVicyBhbmQgc3RydWN0dXJlcyBmb3IgTEZfUFJPQ0VEVVJFIHR5cGVzLgoKCSogaW5jbHVkZS93aW5jcnlwdC5oOiBNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglBZGRlZCBITUFDX0lORk8gdHlwZWRlZi4KCgkqIGRsbHMvd2lubW0vbWNpc2VxL21jaW1pZGkuYywgZGxscy93aW5tbS93aW5lb3NzL21pZGkuYywKCSAgZGxscy93aW5tbS93aW5lb3NzL21peGVyLmMsIGRsbHMvd2lubW0vd2lubW0uYywKCSAgZG9jdW1lbnRhdGlvbi9tdWx0aW1lZGlhLnNnbWw6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCS0gYnJpbmcgdGhlIG11bHRpbWVkaWEgZG9jIHVwLXRvLWRhdGUKCS0gbW92ZWQgdGhlIFRPRE8gZnJvbSB0aGUgZG9jIGludG8gdGhlIGNvZGUKCgkqIGRsbHMvdXNlci90ZXN0cy9tc2cuYywgZGxscy91c2VyL3Rlc3RzL3dpbi5jLCB3aW5kb3dzL21kaS5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCS0gV01fTURJU0VUTUVOVSBoYW5kbGVyIHNob3VsZCB1cGRhdGUgbmV3IGZyYW1lIG1lbnUgb25seSBpZiBhbiBhY3RpdmUKCSAgYW5kIG1heGltaXplZCBNREkgY2hpbGQgaXMgdmlzaWJsZS4KCS0gQWRkIGEgdGVzdCBjYXNlIGZvciBNREkgY2hpbGQgYWN0aXZhdGlvbiBzZXF1ZW5jZS4KCgkqIGRsbHMvZ2RpL3Rlc3RzL2JpdG1hcC5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJQXBwYXJlbnRseSB0aGlzIHBvcnRpb24gb2YgdGhlIHRlc3Qgd2FzIGZhaWxpbmcgdW5kZXIgc29tZSB2ZXJzaW9ucyBvZgoJd2lueHAsIHNvIHJlbW92ZSBpdC4KCgkqIHRvb2xzL3dpZGwvaGVhZGVyLmMsIHRvb2xzL3dpZGwvaGVhZGVyLmgsIHRvb2xzL3dpZGwvcGFyc2VyLnksCgkgIHRvb2xzL3dpZGwvcHJveHkuYywgdG9vbHMvd2lkbC90eXBlbGliLmMsIHRvb2xzL3dpZGwvd2lkbC5jOgoJSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCS0gQWRkZWQgY3JlYXRpb24gb2YgZGlzcGludGVyZmFjZSBoZWFkZXIuCgktIEFkZGVkIGNyZWF0aW9uIG9mIGNvY2xhc3MgaGVhZGVyLgoJLSBBZGRlZCBtZXNzYWdlcyB3aGVuIGZvcGVuIGZhaWxzLgoKCSogZGxscy9rZXJuZWwvZG9zbWVtLmM6IEhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJQXZvaWQgdXNpbmcgZ2V0dGltZW9mZGF5LgoKCSogZGxscy9rZXJuZWwvZmlsZS5jOiBIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCUluY2x1ZGUgc3RkaW8uaCBmb3IgTWluR1cuCgoJKiBkbGxzL2FkdmFwaTMyL2NyeXB0LmM6IE1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCUNyeXB0RGVyaXZlS2V5IC0gc2V0IHJldHVybiBrZXkgaGFuZGxlIHRvIE5VTEwgaW4gY2FzZSBvZiBmYWlsdXJlLgoKCSogZGxscy9zaGVsbDMyL3Rlc3RzL3NobGZvbGRlci5jOgoJVml0YWxpeSBNYXJnb2xlbiA8d2luZS1wYXRjaEBraWV2aW5mby5jb20+CglTb3J0IGZpbGVzL2ZvbGRlcnMgYmVmb3JlIHRlc3RpbmcuCgoJKiBpbmNsdWRlL3dpbm50Lmg6IEFkYW0gRC4gTW9zcyA8YWRhbUBnaW1wLm9yZz4KCURlZmluZSBWRVJfU1VJVEVfQkxBREUuCgoJKiB0b29scy93aW5hcGkvbXN2Y21ha2VyOiBTdGV2ZW4gRWR3YXJkcyA8c3RldmVuX2VkNDE1M0B5YWhvby5jb20+CglDb3JyZWN0bHkgZGVmaW5lIFdJTlZFUiwgX1dJTjMyX1dJTk5UIGFuZCBfV0lOMzJfSUUgdmVyc2lvbnMgaW4gYWxsCgljYXNlcy4KCgkqIHdpbmRvd3MvZGlhbG9nLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglVbmljb2RpZnkgRElBTE9HX0RsZ0RpclNlbGVjdC4gVXNlIFNlbmRNZXNzYWdlVyB3aGVuZXZlciBwb3NzaWJsZS4KCgkqIGRsbHMvdXNlci9saXN0Ym94LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglBdWRpdCB0aGUgbGlzdGJveCBjb250cm9sLgoJRml4IHNvbWUgaW5kZW50YXRpb24gcHJvYmxlbXMuCgoJKiBsaWJzL3BvcnQvaW50ZXJsb2NrZWQuYywgbGlicy93aW5lL3BvcnQuYzoKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCUltcGxlbWVudCBpbnRlcmxvY2tlZCogYW5kIHdpbmVfc3dpdGNoX3RvX3N0YWNrIGZvciBBbHBoYS4KCjIwMDQtMTAtMDkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2NvbWN0bDMyL3RhYi5jOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJSXRlbXMgYXJlIHZhcmlhYmxlIHNpemVkLCB1c2UgYW4gYWNjZXNzb3IgdG8gZ2V0IGF0IHRoZW0uCglDb21iaW5lIEEvVyBjYWxscyB0b2dldGhlciB0byByZW1vdmUgZHVwbGljYXRpb24uCglEb24ndCBsZWFrIHRleHQgd2hlbiByZW1vdmluZy9jaGFuZ2luZyBpdGVtcy4KCVR1cm4gb2ZmIGhvdCB0cmFja2luZyB3aGVuIHdlIGRlbGV0ZSB0aGUgbGFzdCBpdGVtLgoJVXNlIHRoZSAnZGVsZXRlIDEgaXRlbScgbG9naWMgd2hlbiBkZWxldGluZyBhbGwgaXRlbXMuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9udGRsbC9zeW5jLmMsIGluY2x1ZGUvY29uZmlnLmguaW46CglKZXJlbXkgV2hpdGUgPGp3aGl0ZUBjb2Rld2VhdmVycy5jb20+CglNYWRlIE50RGVsYXlFeGVjdXRpb24gd2l0aCBhIDAgdGltZW91dCB5aWVsZCB0aGUgQ1BVLCBhcyBpdCBpcwoJc3VwcG9zZWQgdG8uCgoyMDA0LTEwLTA4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWM6CglCdWlsZCBXaW5lIGFzIDMyLWJpdCBieSBkZWZhdWx0IG9uIHg4Ni02NCwgYW5kIGFkZGVkIGEgLS1lbmFibGUtd2luNjQKCW9wdGlvbiBmb3IgcGVvcGxlIHdobyB3YW50IHRvIHBsYXkgd2l0aCA2NC1iaXQgc3VwcG9ydC4KCgkqIGRsbHMvdXNlci90ZXN0cy9tc2cuYywgd2luZG93cy9tZGkuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglQcm9wZXJseSBoYW5kbGUgdGhlIGNhc2Ugd2hlbiBsYXN0IE1ESSBjaGlsZCBpcyBiZWluZyBkZXN0cm95ZWQuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9jb25zb2xlLmM6IEZlcmVuYyBXYWduZXIgPHdmZXJpQGFmYXZhbnQuZWx0ZS5odT4KCVVuY29uZGl0aW9uYWxseSBvcGVuIGEgZnJlc2ggY29uc29sZSBmb3IgdGhlIHRlc3RzLgoKCSogZGxscy9tc2kvYWN0aW9uLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglQcm9wZXJseSBjb21wYXJlIGZpbGUgdmVyc2lvbnMgd2hlbiB1cGdyYWRpbmcgZmlsZXMgc28gdGhhdCBuZXcKCXZlcnNpb25zIGdldCBwcm9wZXJseSBpbnN0YWxsZWQuCgoJKiB0b29scy93aW5lYnVpbGQvYnVpbGQuaCwgdG9vbHMvd2luZWJ1aWxkL2ltcG9ydC5jLAoJICB0b29scy93aW5lYnVpbGQvbWFpbi5jLCB0b29scy93aW5lYnVpbGQvd2luZWJ1aWxkLm1hbi5pbiwKCSAgdG9vbHMvd2luZWdjYy9NYWtlZmlsZS5pbiwgdG9vbHMvd2luZWdjYy93aW5lZ2NjLmM6CglBZGRlZCAtLWxkLWNtZCBhbmQgLS1ubS1jbWQgb3B0aW9ucyBpbiB3aW5lYnVpbGQsIGFuZCBtYWtlIHdpbmVnY2MKCXBhc3MgdGhlIHByb3BlciBsZCBjb21tYW5kLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGcxNi5jLCBkbGxzL21zY21zL3Byb2ZpbGUuYzoKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCUJldHRlciBkb2N1bWVudCBzb21lIGFwaXMgaW4gY29tbWRsZyBhbmQgbXNjbXMuCgoJKiB0b29scy93aW5hcGkvd2luMTYuYXBpLCB0b29scy93aW5hcGkvd2luMzIuYXBpOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJVXBkYXRlIHR5cGVzIGNoZWNrZWQgYnkgd2luYXBpX2NoZWNrLgoKCSogaW5jbHVkZS9leGRpc3AuaWRsOiBKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJQWRkZWQgSVdlYkJyb3dzZTIgaW50ZXJmYWNlLgoKCSogZGxscy9rZXJuZWwvcGF0aC5jLCBkbGxzL3F1YXJ0ei9tYWluLmM6CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglDb3JyZWN0IHRoZSBjYWxsaW5nIGNvbnZlbnRpb24gb2YgR2V0U3lzdGVtV293NjREaXJlY3Rvcnl7QSxXfSwKCUFtcEZhY3RvclRvREIgYW5kIERCVG9BbXBGYWN0b3IuCgoJKiBkbGxzL2QzZDgvZDNkOF9wcml2YXRlLmgsIGRsbHMvZDNkOC9kZXZpY2UuYywgZGxscy9kM2Q4L2RpcmVjdHguYywKCSAgZGxscy9kM2Q5L2RldmljZS5jLCBkbGxzL2QzZDkvZGlyZWN0eC5jLCBkbGxzL3dpbmVkM2QvZGlyZWN0eC5jLAoJICBkbGxzL3dpbmVkM2Qvd2luZWQzZF9wcml2YXRlLmgsIGluY2x1ZGUvZDNkOXR5cGVzLmgsCgkgIGluY2x1ZGUvd2luZS93aW5lZDNkX2ludGVyZmFjZS5oOgoJSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCUNvcHkgYW5kIHRpZHkgdXAgdGhlIGNvZGUgZnJvbSBkeDggY3JlYXRlIGRldmljZSBpbnRvIHdpbmVkM2QuIENhbGwKCWZyb20gd2luZWQzZCBhbmQgZDNkOCwgYnV0IHNob3J0IHRlcm0gb25seSB1c2UgdGhlIGNvZGUgZm9yIHJlYWwgZnJvbQoJZDNkOS4KCgkqIGRsbHMvdXNlci9zY3JvbGwuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUF1ZGl0IHRoZSBzY3JvbGwgY29udHJvbC4KCVJlb3JnYW5pemUgdGhlIGRvY3VtZW50YXRpb24gaW4gYSBtb3JlIHJlYWRhYmxlIGZvcm1hdC4KCgkqIGRsbHMvdXNlci9lZGl0LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglBdWRpdCB0aGUgZWRpdCBjb250cm9sLgoKCSogcHJvZ3JhbXMvd2luZWZpbGUvRnIucmM6IFN5bHZhaW4gUGV0cmVvbGxlIDxzcGV0cmVvbGxlQHlhaG9vLmZyPgoJVXBkYXRlIEZyZW5jaCB0cmFuc2xhdGlvbi4KCgkqIGRsbHMveDExZHJ2L2tleWJvYXJkLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglEaXNhYmxlIHJlbWFpbmluZyBwaWVjZSBvZiB0aGUgY29kZSB3aGljaCBhdXRvIGFzc2lnbnMgdmlydHVhbCBrZXkKCWNvZGVzLCBpdCBicmVha3MgVktfT0VNXzEwMiBpbiBmaW5uaXNoL3N3ZWRpc2gga2V5Ym9hcmQgbGF5b3V0cy4KCgkqIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvcmVhc29uLmgsIGluY2x1ZGUvd2lucmVnLmgsCgkgIGluY2x1ZGUvd2ludXNlci5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBzb21lIHJlYXNvbiBjb2RlcyBmb3IgRXhpdFdpbmRvd3NFeCgpLgoJQWxzbyBhZGQgRVdYX0ZPUkNFSUZIVU5HLgoKCSogcHJvZ3JhbXMvbm90ZXBhZC9tYWluLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglCcmluZyB1cCB0aGUgRmlsZS0+U2F2ZSBkaWFsb2cgd2hlbiByZWNlaXZpbmcgV01fUVVFUllFTkRTRVNTSU9OLgoKCSogZGxscy9oaGN0cmwub2N4L2hoY3RybC5jLCBkbGxzL2hoY3RybC5vY3gvaGhjdHJsLm9jeC5zcGVjLAoJICBpbmNsdWRlL2h0bWxoZWxwLmg6CglKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJLSBBZGRlZCBkb1dpbk1haW4gc3R1YgoJLSBGaXhlZCBodG1saGVscC5oCgoJKiBkbGxzL3dpbmluZXQvbmV0Y29ubmVjdGlvbi5jOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJUmVtb3ZlICNpZmRlZiBIQVZFX1NZU19UWVBFU19ILgoKMjAwNC0xMC0wNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvYWR2YXBpMzIvY3J5cHRfbWQ0LmMsIGRsbHMvYWR2YXBpMzIvY3J5cHRfbWQ1LmM6CglSZW1vdmVkIHdyb25nIG1lbXNldCBjYWxscy4KCgkqIGRsbHMvYWR2YXBpMzIvYWR2YXBpMzIuc3BlYzoKCUZpeGVkIE1ENEZpbmFsL01ENUZpbmFsIGVudHJpZXMgKHNwb3R0ZWQgYnkgVmluY2VudCBC6XJvbikuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9tc2Ntcy9NYWtlZmlsZS5pbiwgZGxscy9tc2Ntcy9oYW5kbGUuYywKCSAgZGxscy9tc2Ntcy9sY21zX2FwaS5oLCBkbGxzL21zY21zL21zY21zLnNwZWMsCgkgIGRsbHMvbXNjbXMvbXNjbXNfbWFpbi5jLCBkbGxzL21zY21zL21zY21zX3ByaXYuaCwKCSAgZGxscy9tc2Ntcy9wcm9maWxlLmMsIGRsbHMvbXNjbXMvdGVzdHMvLmN2c2lnbm9yZSwKCSAgZGxscy9tc2Ntcy90ZXN0cy9NYWtlZmlsZS5pbiwgZGxscy9tc2Ntcy90ZXN0cy9wcm9maWxlLmMsCgkgIGluY2x1ZGUvY29uZmlnLmguaW4sIGluY2x1ZGUvaWNtLmg6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCUltcGxlbWVudCBjb2xvciBwcm9maWxlIGhhbmRsZXMuCglJbXBsZW1lbnQgT3BlbkNvbG9yUHJvZmlsZXtBLFd9IGFuZCBDbG9zZUNvbG9yUHJvZmlsZS4KCUltcGxlbWVudCBHZXRDb2xvckRpcmVjdG9yeXtBLFd9IGFuZCBJbnN0YWxsQ29sb3JQcm9maWxle0EsV30uCglJbXBsZW1lbnQgVW5pbnN0YWxsQ29sb3JQcm9maWxle0EsV30uCglEeW5hbWljYWxseSBsb2FkIGxpYmxjbXMuCglBZGQgdGVzdHMuCgoJKiB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL25hdGl2ZWFwaS5wbSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3ByZXByb2Nlc3Nvci5wbSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9jX3BhcnNlci5wbSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9jaGVjaywKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9kb2N1bWVudGF0aW9uLnBtLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2Z1bmN0aW9uLnBtLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2dsb2JhbC5wbSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9sb2NhbC5wbSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9wYXJzZXIucG06CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFkZCBmdW5jdGlvbiBwcm90b3R5cGVzLgoJTW9kaWZ5IGZ1bmN0aW9uIGNhbGxzIHNvIHRoZSBwcm90b3R5cGVzIGFyZSBjaGVja2VkLgoKCSogbGlicy9wb3J0L2Z1dGltZXMuYzogSmVyZW15IFdoaXRlIDxqd2hpdGVAY29kZXdlYXZlcnMuY29tPgoJTmVlZCB0byBpbmNsdWRlIHN5cy90aW1lLmguCgoJKiBwcm9ncmFtcy93aW5lZmlsZS9Fbi5yYywgcHJvZ3JhbXMvd2luZWZpbGUvSXQucmMsCgkgIHByb2dyYW1zL3dpbmVmaWxlL1BsLnJjLCBwcm9ncmFtcy93aW5lZmlsZS9yZXNvdXJjZS5oLAoJICBwcm9ncmFtcy93aW5lZmlsZS93aW5lZmlsZS5jOgoJTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCS0gcmVtb3ZlIHVudXNlZCBJRFNfRklMRV9NT1ZFX0VSUk9SCgktIHVzZSBTZXRXaW5kb3dGb250KCkgaW5zdGVhZCBvZiBTZW5kTWVzc2FnZShXTV9TRVRGT05UKQoJLSByZW1vdmUgdW51c2VkIGNvbW1lbnQKCS0gdXNlIEdFVF9YX0xQQVJBTSgpIGluc3RlYWQgb2YgR0VUX1hfTFBBUkFNKCkKCS0gcmVtb3ZlIG9sZCBfUk9TXyBwcmVwcm9jZXNzb3Igc3RhdGVtZW50cwoKCSogZGxscy9jb21tZGxnL2ZvbnRkbGcuYzogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUNvbnN0aWZ5IHNvbWUgc3RhdGljcyBhbmQgbWFrZSB0aGVtIHNtYWxsZXIuCgoJKiBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jLCBkbGxzL2NvbWN0bDMyL3Rlc3RzL2ltYWdlbGlzdC5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUltYWdlTGlzdF9NZXJnZSBzaG91bGQgbm90IGZhaWwgaWYgaW5kaWNlcyBhcmUgYmFkLgoJQWRkIHRlc3RzIGZvciB0aGlzIGNhc2UsIGEgdmlzaWJsZSB0ZXN0IG1vZGUgYW5kIGZpeCBEcmF3SW5kaXJlY3QgdGVzdAoJdW5kZXIgc29tZSBuYXRpdmUgY29tY3RsMzIuZGxsJ3MuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglEcmF3ICsvLSBjb3JyZWN0bHkgZm9yIGxhcmdlIGljb24gc2l6ZXMuCgoJKiBpbmNsdWRlL3dpbnVzZXIuaDogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUFkZCBtaXNzaW5nIE9EU18gY29uc3RhbnRzLCB0YWduYW1lLgoKCSogZGxscy9kYmdoZWxwL2RiZ2hlbHBfcHJpdmF0ZS5oOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCVZlY3RvcnMgbmVlZCBhbGwgMzIgYml0cyB0byBoYW5kbGUgX3JlYWxseV8gbGFyZ2UgYXBwcy4KCgkqIHRvb2xzL2dlbnBhdGNoOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVRoZSBnZW5lcmF0ZWQgcGF0Y2ggd2FzIG1pc3NpbmcgYSBsaW5lIG9mIHRoZSBkaWZmLgoJZ2VucGF0Y2ggd2FzIGFsc28gZGVwZW5kaW5nIG9uIHRoZSBuZXcgZmlsZXMgYmVpbmcgbGlzdGVkIGZpcnN0IGJ5CgknY3ZzIGRpZmYnICh3aGljaCBpcyB0aGUgY2FzZSBidXQgSSdtIG5vdCBzdXJlIHRoZXJlIGlzIGFueSBoYXJkCglndWFyYW50ZWUpLgoJVXNlICdwZXJsIC13JyBmb3IgbW9yZSBjaGVja2luZywgZml4IHRoZSByZXN1bHRpbmcgJ3VuZGVmaW5lZCB2YWx1ZScKCXdhcm5pbmdzLiBJbiBtYW55IGNhc2VzIHdlIGRvbid0IGp1c3Qgd2FudCAkb3B0aW9uc3t4eHh9IHRvIGV4aXN0LCB3ZQoJd2FudCBpdCB0byBiZSBkZWZpbmVkLgoJUmVzdHJpY3QgdGhlIHNjb3BlIG9mIHZhcmlhYmxlcyBhbmQgcmVtb3ZlIHVubmVlZGVkIHZhcmlhYmxlcy4KCgkqIHByb2dyYW1zL3dpbmVmaWxlL3dpbmVmaWxlLmM6IE1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CglGaXggIm1vdmUgZmlsZSIgaW1wbGVtZW50YXRpb24sIGluIGRldGFpbDoKCS0gdXNlIFRDSEFSIHRvIG1ha2UgdGhlIGNvZGUgVU5JQ09ERSBjb21wYXRpYmxlCgktIHBhc3MgcmV0dXJuIHN0cmluZyBidWZmZXIgdG8gdGhlIGRpYWxvZyBwcm9jZWR1cmUKCS0gY2FsbCBkaXNwbGF5X2Vycm9yKCkgaW4gY2FzZSBvZiBlcnJvcnMgdG8gZGlzcGxheSB0aGUgV0lOMzIgZXJyb3IKCSAgbWVzc2FnZQoJLSB1c2Ugc2xhc2ggaW5zdGVhZCBvZiBiYWNrIHNsYXNoIGZvciB1bml4IGZpbGUgc3lzdGVtIGNvbXBhdGliaWxpdHkKCS0gZm9ybWF0IHRoZSBjb2RlIGVxdWFsbHkgdG8gdGhlIHJlbWFpbmluZyB3aW5lZmlsZSBjb2RlCgoJKiBkbGxzL250ZGxsL2ZpbGUuYywgaW5jbHVkZS93aW5lL3BvcnQuaCwgbGlicy9wb3J0L01ha2VmaWxlLmluLAoJICBsaWJzL3BvcnQvZnV0aW1lcy5jOgoJQWRkZWQgYSBmYWxsYmFjayBpbXBsZW1lbnRhdGlvbiBvZiBmdXRpbWVzLgoKCSogZGxscy9kM2Q5L2QzZDlfcHJpdmF0ZS5oLCBkbGxzL2QzZDkvZGV2aWNlLmMsIGRsbHMvZDNkOS9kaXJlY3R4LmMsCgkgIGRsbHMvd2luZWQzZC9NYWtlZmlsZS5pbiwgZGxscy93aW5lZDNkL2RldmljZS5jLAoJICBkbGxzL3dpbmVkM2QvZGlyZWN0eC5jLCBkbGxzL3dpbmVkM2Qvd2luZWQzZF9wcml2YXRlLmgsCgkgIGluY2x1ZGUvd2luZS93aW5lZDNkX2ludGVyZmFjZS5oOgoJSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCUFkZCBhIElXaW5lRDNERGV2aWNlIG9iamVjdCB0eXBlIChlbXB0eSBmb3Igbm93KSwgYW5kIGNyZWF0ZSBvbmUgd2hlbgoJYW4gSURpcmVjdDNERGV2aWNlIG9iamVjdCBpcyBjcmVhdGVkLgoKCSogdG9vbHMvd2luYXBpL21ha2VfZmlsdGVyX29wdGlvbnMucG0sCgkgIHRvb2xzL3dpbmFwaS9tc3ZjbWFrZXJfb3B0aW9ucy5wbSwKCSAgdG9vbHMvd2luYXBpL3dpbmFwaV9jaGVja19vcHRpb25zLnBtLAoJICB0b29scy93aW5hcGkvd2luYXBpX2NsZWFudXBfb3B0aW9ucy5wbSwKCSAgdG9vbHMvd2luYXBpL3dpbmFwaV9leHRyYWN0X29wdGlvbnMucG0sCgkgIHRvb2xzL3dpbmFwaS93aW5hcGlfZml4dXBfb3B0aW9ucy5wbSwKCSAgdG9vbHMvd2luYXBpL3dpbmFwaV90ZXN0X29wdGlvbnMucG06CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCURvbid0IGltcG9ydCBwYXJzZV9jb21tYV9saXN0KCkgdW5sZXNzIG5lY2Vzc2FyeS4KCXdpbmFwaV9jaGVja19vcHRpb25zLnBtOiBGaXggdHlwbyBpbiB0aGUgcGFyc2VfY29tbWFfbGlzdCgpCglyZWZlcmVuY2UuCgoJKiBkbGxzL2FkdnBhY2svYWR2cGFjay5jLCBkbGxzL2FkdnBhY2svcmVnLmM6CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglVc2UgdGhlIHByb3BlciAjaW5jbHVkZSBmaWxlIGRlbGltaXRlciBpbiBhZHZwYWNrLgoKCSogcHJvZ3JhbXMvd2luZWZpbGUvRW4ucmMsIHByb2dyYW1zL3dpbmVmaWxlL0l0LnJjLAoJICBwcm9ncmFtcy93aW5lZmlsZS9QbC5yYywgcHJvZ3JhbXMvd2luZWZpbGUvcmVzb3VyY2UuaCwKCSAgcHJvZ3JhbXMvd2luZWZpbGUvd2luZWZpbGUuYywgcHJvZ3JhbXMvd2luZWZpbGUvd2luZWZpbGUuaDoKCU1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CglJbW1lZGlhdGVseSByZWZyZXNoIGNoaWxkIHdpbmRvd3MgYWZ0ZXIgY2hhbmdpbmcgdGhlIGZvbnQuCgoJKiBNYWtlLnJ1bGVzLmluLCBNYWtlZmlsZS5pbjoKCUZvcmNlIGFsbCB0aGUgdG9vbHMgdG8gYmUgcmVidWlsdCBiZWZvcmUgbWFrZSBkZXBlbmQsIG90aGVyd2lzZSBtYWtlCgl3aWxsIHRyeSB0byBkbyB0aGF0IGZyb20gdGhlIGluY2x1ZGUgZGlyZWN0b3J5LgoKCSogZGxscy91c2VyL21lc3NhZ2UuYywgZGxscy91c2VyL3BhaW50aW5nLmMsIHdpbmRvd3MvcGFpbnRpbmcuYywKCSAgd2luZG93cy93aW5wcm9jLmM6CglPbmx5IHNlbmQgV01fUEFJTlRJQ09OIGFuZCBXTV9JQ09ORVJBU0VCS0dORCB0byAxNi1iaXQgd2luZG93cyAoZm91bmQKCWJ5IEplcmVteSBXaGl0ZSkuCgoJKiBkbGxzL2Ftc3RyZWFtL2Ftc3RyZWFtLmMsIGRsbHMvYW1zdHJlYW0vbWFpbi5jLCBkbGxzL2F0bC9hdGxfbWFpbi5jLAoJICBkbGxzL2F2aWZpbDMyL2FwaS5jLCBkbGxzL2F2aWZpbDMyL2ZhY3RvcnkuYywKCSAgZGxscy9jb21jYXQvY29tY2F0X3ByaXZhdGUuaCwgZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmMsCgkgIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmMsIGRsbHMvY29tbWRsZy9maWxlZGxnLmMsCgkgIGRsbHMvY29tbWRsZy9maWxlZGxnYnJvd3Nlci5jLCBkbGxzL2QzZDgvc3VyZmFjZS5jLAoJICBkbGxzL2QzZDgvdm9sdW1lLmMsIGRsbHMvZDNkOS9zdXJmYWNlLmMsIGRsbHMvZDNkOS92b2x1bWUuYywKCSAgZGxscy9kM2R4b2YvZDNkeG9mLmMsIGRsbHMvZDNkeG9mL21haW4uYywgZGxscy9kZHJhdy9kc3VyZmFjZS9tYWluLmMsCgkgIGRsbHMvZGRyYXcvbWFpbi5jLCBkbGxzL2RldmVudW0vZGV2ZW51bV9wcml2YXRlLmgsCgkgIGRsbHMvZGlucHV0L2RpbnB1dF9tYWluLmMsIGRsbHMvZHBsYXl4L2RwY2xhc3NmYWN0b3J5LmMsCgkgIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmMsIGRsbHMvaXRzcy9pdHNzLmMsIGRsbHMvaXRzcy9tb25pa2VyLmMsCgkgIGRsbHMvaXRzcy9zdG9yYWdlLmMsIGRsbHMvbWFwaTMyL3V0aWwuYywgZGxscy9tbGFuZy9tbGFuZy5jLAoJICBkbGxzL21zZG1vL2Rtb3J0LmMsIGRsbHMvbXNpL2FjdGlvbi5jLCBkbGxzL21zaS9tc2kuYywKCSAgZGxscy9tc2kvbXNpcXVlcnkuYywgZGxscy9tc2kvc3VtaW5mby5jLCBkbGxzL21zaS90YWJsZS5jLAoJICBkbGxzL29sZTMyL2FudGltb25pa2VyLmMsIGRsbHMvb2xlMzIvYmluZGN0eC5jLAoJICBkbGxzL29sZTMyL2NsaXBib2FyZC5jLCBkbGxzL29sZTMyL2NvbXBvYmouYywKCSAgZGxscy9vbGUzMi9jb21wb3NpdGVtb25pa2VyLmMsIGRsbHMvb2xlMzIvZGF0YWNhY2hlLmMsCgkgIGRsbHMvb2xlMzIvZGVmYXVsdGhhbmRsZXIuYywgZGxscy9vbGUzMi9maWxlbW9uaWtlci5jLAoJICBkbGxzL29sZTMyL2Z0bWFyc2hhbC5jLCBkbGxzL29sZTMyL2dpdC5jLCBkbGxzL29sZTMyL2hnbG9iYWxzdHJlYW0uYywKCSAgZGxscy9vbGUzMi9pZnMuYywgZGxscy9vbGUzMi9pdGVtbW9uaWtlci5jLCBkbGxzL29sZTMyL21hcnNoYWwuYywKCSAgZGxscy9vbGUzMi9tZW1sb2NrYnl0ZXMuYywgZGxscy9vbGUzMi9tb25pa2VyLmMsIGRsbHMvb2xlMzIvb2xlMi5jLAoJICBkbGxzL29sZTMyL29sZTJpbXBsLmMsIGRsbHMvb2xlMzIvb2xlb2JqLmMsIGRsbHMvb2xlMzIvb2xlcHJveHkuYywKCSAgZGxscy9vbGUzMi9ycGMuYywgZGxscy9vbGUzMi9zdGdfYmlnYmxvY2tmaWxlLmMsCgkgIGRsbHMvb2xlMzIvc3RnX3N0cmVhbS5jLCBkbGxzL29sZTMyL3N0b3JhZ2UzMi5jLAoJICBkbGxzL29sZWF1dDMyL2Nvbm5wdC5jLCBkbGxzL29sZWF1dDMyL2Rpc3BhdGNoLmMsCgkgIGRsbHMvb2xlYXV0MzIvb2FpZGxfcC5jLCBkbGxzL29sZWF1dDMyL29sZWF1dC5jLAoJICBkbGxzL29sZWF1dDMyL29sZXBpY3R1cmUuYywgZGxscy9vbGVhdXQzMi90bWFyc2hhbC5jLAoJICBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYywgZGxscy9vbGVhdXQzMi90eXBlbGliMi5jLAoJICBkbGxzL29sZWF1dDMyL3Vzcm1hcnNoYWwuYywgZGxscy9xdWFydHovZW51bW1vbmlrZXIuYywKCSAgZGxscy9xdWFydHovZmlsdGVyZ3JhcGguYywgZGxscy9xdWFydHovcXVhcnR6X3ByaXZhdGUuaCwKCSAgZGxscy9ycGNydDQvY3Byb3h5LmMsIGRsbHMvcnBjcnQ0L2Nwc2YuYywgZGxscy9ycGNydDQvY3N0dWIuYywKCSAgZGxscy9ycGNydDQvbmRyX21pZGwuYywgZGxscy9ycGNydDQvbmRyX29sZS5jLAoJICBkbGxzL3NoZG9jdncvc2hkb2N2d19tYWluLmMsIGRsbHMvc2hlbGwzMi9hdXRvY29tcGxldGUuYywKCSAgZGxscy9zaGVsbDMyL2Jyc2ZvbGRlci5jLCBkbGxzL3NoZWxsMzIvY3BhbmVsZm9sZGVyLmMsCgkgIGRsbHMvc2hlbGwzMi9kYXRhb2JqZWN0LmMsIGRsbHMvc2hlbGwzMi9kcmFnZHJvcGhlbHBlci5jLAoJICBkbGxzL3NoZWxsMzIvZW51bWlkbGlzdC5jLCBkbGxzL3NoZWxsMzIvZm9sZGVycy5jLAoJICBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmMsIGRsbHMvc2hlbGwzMi9tZW1vcnlzdHJlYW0uYywKCSAgZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9sZS5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgZGxscy9zaGVsbDMyL3NoZmxkcl9kZXNrdG9wLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGZsZHJfZnMuYywgZGxscy9zaGVsbDMyL3NoZmxkcl9teWNvbXAuYywKCSAgZGxscy9zaGVsbDMyL3NobGV4ZWMuYywgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jLAoJICBkbGxzL3NoZWxsMzIvc2hsZnNiaW5kLmMsIGRsbHMvc2hlbGwzMi9zaGxtZW51LmMsCgkgIGRsbHMvc2hlbGwzMi9zaHZfYmdfY21lbnUuYywgZGxscy9zaGVsbDMyL3Nodl9pdGVtX2NtZW51LmMsCgkgIGRsbHMvc2hsd2FwaS9jbGlzdC5jLCBkbGxzL3NobHdhcGkvaXN0cmVhbS5jLAoJICBkbGxzL3NobHdhcGkvcmVnc3RyZWFtLmMsIGRsbHMvc2hsd2FwaS90aHJlYWQuYywgZGxscy91cmxtb24vdW1vbi5jLAoJICBkbGxzL3VybG1vbi91cmxtb25fbWFpbi5jLCBpbmNsdWRlL29iamJhc2UuaCwKCSAgcHJvZ3JhbXMvd2luZW1lbnVidWlsZGVyL3dpbmVtZW51YnVpbGRlci5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglEb24ndCBkZWZpbmUgQ09CSk1BQ1JPUyBpbiBvYmpiYXNlLmguCglVcGRhdGUgdGhlIFdpbmUgc291cmNlcyBhY2NvcmRpbmdseS4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfbG9jYWwucG06IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRml4IGFuICd1bmluaXRpYWxpemVkIHZhbHVlJyB3YXJuaW5nLgoKCSogZGxscy9vbGVhdXQzMi92YXJ0eXBlLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRml4IHRoZSBWYXJJNEZyb21JMiBBUEkgZG9jdW1lbnRhdGlvbi4KCgkqIGRsbHMvc2hlbGwzMi90ZXN0cy9zaGxmb2xkZXIuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglDb25mb3JtYW5jZSB0ZXN0cyBtdXN0IG5vdCBpbmNsdWRlIHdpbmUvZGVidWcuaC4KCgkqIHByb2dyYW1zL3dpbmVmaWxlL3dpbmVmaWxlLmM6IE1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CglGaXggc2lnc2VndiB3aGVuIGRvdWJsZSBjbGlja2luZyBkaXJlY3RvcnkgZW50cmllcy4KCjIwMDQtMTAtMDYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL2V4ZGlzcC5pZGwsIHRvb2xzL3dpZGwvcGFyc2VyLnk6CglBbGxvdyBkZWZpbmVkIHR5cGVzIHRvIGJlIHVzZWQgYXMgZnVuY3Rpb24gbmFtZXMuCgoJKiBkbGxzL2FkdmFwaTMyL01ha2VmaWxlLmluLCBkbGxzL2FkdmFwaTMyL2FkdmFwaTMyLnNwZWMsCgkgIGRsbHMvYWR2YXBpMzIvY3J5cHRfbWQ0LmMsIGRsbHMvYWR2YXBpMzIvY3J5cHRfbWQ1LmMsCgkgIGRsbHMvYWR2YXBpMzIvdGVzdHMvLmN2c2lnbm9yZSwgZGxscy9hZHZhcGkzMi90ZXN0cy9NYWtlZmlsZS5pbiwKCSAgZGxscy9hZHZhcGkzMi90ZXN0cy9jcnlwdF9tZDQuYywgZGxscy9hZHZhcGkzMi90ZXN0cy9jcnlwdF9tZDUuYzoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJSW1wbGVtZW50IE1EezQsNX1Jbml0IE1EezQsNX1VcGRhdGUgYW5kIE1EezQsNX1GaW5hbC4KCUFkZCB0ZXN0cyBmb3IgdGhlc2UgZnVuY3Rpb25zLgoKCSogd2luZG93cy9zcHkuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2UgbWVzc2FnZSBzcHkgdGhyZWFkIHNhZmUuCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGRsbHMvd2luc29jay90ZXN0cy9zb2NrLmM6CglSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CgktIEZpeCBXU19nZXRzb2Nrb3B0IGZvciB0aGUgb3B0aW9ucyBTT19MSU5HRVIsIFNPX1JDVlRJTUVPIGFuZAoJICBTT19TTkRUSU1FTyBieSBhZGRpbmcgZGF0YSBjb252ZXJzaW9uIGZyb20gVW5peCB0byB3aW5kb3dzLgoJLSBBZGRlZCBhIHRlc3QgZm9yIHRoaXMuCgoJKiBwcm9ncmFtcy93aW5lZmlsZS93aW5lZmlsZS5jOiBNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJLSByZW1vdmUgdHJhaWxpbmcgc2VtaWNvbG9ucyBmcm9tIGNvbnN0YW50IGRlZmluaXRpb25zCgktIGFkZCBzb21lIGNvbW1lbnRzCgktIG1ha2UgdGltZV90b19maWxldGltZSgpIGEgc3RhdGljIGZ1bmN0aW9uCgoJKiB0b29scy93aW5hcGkvbXN2Y21ha2VyOiBNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJRml4IGdlbmVyYXRpb24gb2YgY29uZmlnLmguCgoJKiBpbmNsdWRlL3dpbnVzZXIuaDogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBwcm90b3R5cGVzIGZvciBHZXRXaW5kb3dMb25nUHRyL1NldFdpbmRvd0xvbmdQdHIuCgoJKiBkbGxzL3VzZXIvdGVzdHMvbXNnLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglTa2lwIGludGVydGhyZWFkIG1lc3NhZ2UgdGVzdCB1bmRlciB3aW45eCwgaXQgY2F1c2VzIGEgY3Jhc2ggdGhlcmUuCgoJKiBkbGxzL2QzZDgvZGlyZWN0eC5jLCBkbGxzL2QzZDkvZGlyZWN0eC5jLCBkbGxzL3dpbmVkM2QvZGlyZWN0eC5jLAoJICBkbGxzL3dpbmVkM2Qvd2luZWQzZF9wcml2YXRlLmgsIGluY2x1ZGUvd2luZS93aW5lZDNkX2dsLmgsCgkgIGluY2x1ZGUvd2luZS93aW5lZDNkX2ludGVyZmFjZS5oOgoJSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCU1vdmUgdGhlIEdldERldmljZUNhcHMgaW50byB0aGUgd2luZWQzZCBsaWJyYXJ5IGFuZCBjYWxsIGZyb20gZDNkOS4KCgkqIGRsbHMvdXNlci9jb21iby5jOiBTdGV2ZW4gRWR3YXJkcyA8c3RldmVuQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZSB1c2VsZXNzIEZJWE1FIGluIGNvbW1lbnQuCgoJKiB0b29scy93aW5hcGkvbXN2Y21ha2VyOiBNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJRml4IG1zdmNtYWtlciBpbXBvcnRzLgoKCSogZGxscy9zaGVsbDMyL3NobGZpbGVvcC5jOgoJUm9sZiBLYWxiZXJtYXR0ZXIgPHJvbGYua2FsYmVybWF0dGVyQGNpdGVuZy5jb20+CglGaXggYnVnIGZvdW5kIGJ5IFBpb3RyIENhYmFuLCB3aGVyZSBvdXIgZnVuY3Rpb24gdHJpZWQgdG8gZGVsZXRlIGEKCWRpcmVjdG9yeSBldmVuIHRob3VnaCB0aGUgdXNlciBjYW5jZWxlZCB0aGUgb3BlcmF0aW9uLgoKMjAwNC0xMC0wNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvdXNlci9tZW51LmMsIGRsbHMvdXNlci90ZXN0cy9tc2cuYywgZGxscy91c2VyL3Rlc3RzL3Jlc291cmNlLnJjLAoJICBkbGxzL3gxMWRydi9rZXlib2FyZC5jLCB3aW5kb3dzL2RlZnduZC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBhIHRlc3QgY2FzZSBmb3IgYWNjZWxlcmF0b3JzLCBtYWtlIHRoZSB0ZXN0IHBhc3Mgb24gV2luZS4KCgkqIGRsbHMvdXNlci90ZXN0cy9tc2cuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIGEgdGVzdCBjYXNlIGZvciBpbnRlci10aHJlYWQgRGlzcGF0Y2hNZXNzYWdlLgoKCSogd2luZG93cy9tZXNzYWdlLmM6CglQcmV2ZW50IERpc3BhdGNoTWVzc2FnZSBmcm9tIGRpc3BhdGNoaW5nIGEgbWVzc2FnZSB0byBhIGRpZmZlcmVudAoJdGhyZWFkIChyZXBvcnRlZCBieSBEbWl0cnkgVGltb3Noa292KS4KCgkqIGRsbHMvd2luZXBzL3BzLmMsIGRsbHMvd2luZXBzL3BzZHJ2LmgsIGRsbHMvd2luZXBzL3R5cGU0Mi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglNYWtlIHN1cmUgUG9zdFNjcmlwdCBmbG9hdHMgYXJlIHByaW50ZWQgd2l0aCBMQ19OVU1FUklDPSJDIi4KCgkqIGRsbHMvdXNlci9saXN0Ym94LmMsIGRsbHMvdXNlci90ZXN0cy9saXN0Ym94LmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJRHJhdyBiYWNrZ3JvdW5kIG9mIHRoZSBlbXB0eSBzZWxlY3RlZCBpdGVtIGluIGVtcHR5IGxpc3RzLgoJRG9uJ3QgZHJhdyBhIGZvY3VzIHJlY3QgaWYgd2UgZG9udCBoYXZlIHRoZSBmb2N1cy4KCURvbid0IHNlbGVjdCBpdGVtcyBvbiBrZXkgdXAvZG93biBpbiBtdWx0aS1zZWxlY3QgbGlzdHMuCglIYW5kbGUgTEJTX05PU0VMIGNvcnJlY3RseSwgZml4IHJlbWFpbmluZyB0b2RvX3dpbmUgdGVzdHMuCgoJKiBkbGxzL3NobHdhcGkvdGVzdHMvcGF0aC5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJVGVzdHMgZm9yIFBhdGhDcmVhdGVGcm9tVXJsLCBQYXRoSXNVUkwsIFVybENyZWF0ZUZyb21QYXRoIGFuZAoJVXJsVW5lc2NhcGUuCgoJKiBkbGxzL3NobHdhcGkvdXJsLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglSZXdyaXRlIFVybENyZWF0ZUZyb21QYXRoLgoKCSogaW5jbHVkZS93aW5lL3BvcnQuaDogTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCURvbid0IHVzZSAiLnByZXZpb3VzIiBmb3IgQ3lnd2luIGJ1aWxkLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jLCBkbGxzL2NvbWN0bDMyL3VwZG93bi5jLAoJICBkbGxzL2RiZ2hlbHAvc3ltYm9sLmMsIGRsbHMvb2xlMzIvZGF0YWNhY2hlLmMsCgkgIGRsbHMvb2xlMzIvZGVmYXVsdGhhbmRsZXIuYywgZGxscy9vbGVhdXQzMi9vbGVmb250LmMsCgkgIGRsbHMvcXVhcnR6L2ZpbHRlcm1hcHBlci5jLCBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmMsCgkgIGRsbHMvd2luZWQzZC9kaXJlY3R4LmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFzc29ydGVkIHNwZWxsaW5nIGZpeGVzLgoKCSogdG9vbHMvd2luYXBpL21zdmNtYWtlcjogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglJZGVudGlmeSBjb21tLmRydiBhcyBhIDE2Yml0IGRsbC4KCgkqIGRsbHMvYXZpZmlsMzIvYWNtc3RyZWFtLmMsIGRsbHMvYXZpZmlsMzIvYXZpZmlsZS5jLAoJICBkbGxzL2F2aWZpbDMyL2ZhY3RvcnkuYywgZGxscy9hdmlmaWwzMi9pY21zdHJlYW0uYywKCSAgZGxscy9hdmlmaWwzMi93YXZmaWxlLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVJlcGxhY2Ugc29tZSBJVW5rbm93bl9RdWVyeUludGVyZmFjZSgpIGNhbGxzIHdpdGggdGhlIHNwZWNpZmljIGNhbGwKCWZvciB0aGUgb2JqZWN0IGJlaW5nIHVzZWQuCgoJKiBkbGxzL2NvbW1kbGcvY2RsZ19QbC5yYywgcHJvZ3JhbXMvY2xvY2svUGwucmMsCgkgIHByb2dyYW1zL2Nsb2NrL3JzcmMucmMsIHByb2dyYW1zL3dpbmVtaW5lL1BsLnJjOgoJSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCUFkZGVkL3VwZGF0ZWQgUG9saXNoIHRyYW5zbGF0aW9ucy4KCgkqIHRvb2xzL3dpbmFwaS9vdXRwdXQucG06IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJTGltaXQgdGhlIGxlbmd0aCBvZiBwcm9ncmVzcyBtZXNzYWdlcyB0byBsZXNzIHRoYW4gJENPTFVNTlMgfHwgODAKCWNoYXJhY3RlcnMgc28gdGhleSBkb24ndCB3cmFwICh3aGljaCB3b3VsZCBjYXVzZSB0aGVtIHRvIGJlIGJhZGx5CgllcmFzZWQpLgoJTWFrZSBnb29kIHVzZSBvZiB0aGUgJ3gnLCB0aGUgcGVybCBzdHJpbmcgbXVsdGlwbGljYXRpb24gb3BlcmF0b3IuCglBZGQgZnVuY3Rpb24gcHJvdG90eXBlcy4KCgkqIHRvb2xzL3dpbmFwaS9tc3ZjbWFrZXI6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQWRkIGZ1bmN0aW9uIHByb3RvdHlwZXMuCgoJKiBkbGxzL29sZWF1dDMyL2Rpc3BhdGNoLmMsIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jOgoJSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCBDcmVhdGVEaXNwVHlwZUluZm8uCgoJKiBkbGxzL3NobHdhcGkvcGF0aC5jLCBpbmNsdWRlL3NobHdhcGkuaDoKCUh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglSZXdyaXRlIFBhdGhDcmVhdGVGcm9tVXJsLgoKCSogTWFrZS5ydWxlcy5pbiwgdG9vbHMvd2lkbC9oZWFkZXIuYywgdG9vbHMvd2lkbC93aWRsLmMsCgkgIHRvb2xzL3dpZGwvd2lkbC5oLCB0b29scy93aWRsL3dpZGwubWFuOgoJUmVtb3ZlZCBubyBsb25nZXIgbmVlZGVkIElDT00gY29tcGF0aWJpbGl0eSBtb2RlIGluIHdpZGwuCgoJKiBkbGxzL3VzZXIvY29tYm8uYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUF1ZGl0IGNvbWJvIGNvbnRyb2wgY29kZS4KCUNoYW5nZSBbR1NdZXRXaW5kb3dMb25neyxQdHJ9QSB0byBbR1NdZXRXaW5kb3dMb25neyxQdHJ9Vy4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaCwgaW5jbHVkZS9kM2QuaCwgaW5jbHVkZS9kM2Q4LmgsIGluY2x1ZGUvZDNkOS5oLAoJICBpbmNsdWRlL2QzZHg4Y29yZS5oLCBpbmNsdWRlL2RkcmF3LmgsIGluY2x1ZGUvZGlucHV0LmgsCgkgIGluY2x1ZGUvZG1wbHVnaW4uaCwgaW5jbHVkZS9kbXVzaWNjLmgsIGluY2x1ZGUvZG11c2ljaS5oLAoJICBpbmNsdWRlL2RtdXNpY3MuaCwgaW5jbHVkZS9kcGFkZHIuaCwgaW5jbHVkZS9kcGxheS5oLAoJICBpbmNsdWRlL2RwbGF5OC5oLCBpbmNsdWRlL2RwbG9iYnkuaCwgaW5jbHVkZS9kc2RyaXZlci5oLAoJICBpbmNsdWRlL2Rzb3VuZC5oLCBpbmNsdWRlL2R4ZGlhZy5oLCBpbmNsdWRlL2R4ZmlsZS5oLAoJICBpbmNsdWRlL21hcGlkZWZzLmgsIGluY2x1ZGUvbWFwaXV0aWwuaCwgaW5jbHVkZS9tYXBpeC5oLAoJICBpbmNsdWRlL29iamJhc2UuaCwgaW5jbHVkZS9vbGVkbGcuaCwgaW5jbHVkZS9zaGxvYmouaCwKCSAgaW5jbHVkZS9zaGx3YXBpLmgsIGluY2x1ZGUvdmZ3Lmg6CglHZXQgcmlkIG9mIHRoZSBub24tc3RhbmRhcmQgSXh4eF9NRVRIT0RTIG1hY3JvIGRlZmluaXRpb25zLCBkZWNsYXJlCgl0aGUgaW50ZXJmYWNlcyBleHBsaWNpdGx5IGluc3RlYWQuCgoJKiBkbGxzL2F2aWZpbDMyL2VkaXRzdHJlYW0uYywgZGxscy9kcGxheXgvZHBsYXlzcC5oLAoJICBkbGxzL2RwbGF5eC9sb2JieXNwLmgsIGRsbHMvb2xlMzIvaWZzLmgsIGRsbHMvc2hlbGwzMi9zaGVsbGZvbGRlci5oLAoJICBpbmNsdWRlL3dpbmUvd2luZWQzZF9pbnRlcmZhY2UuaDoKCUF2b2lkIGRlcGVuZGluZyBvbiB0aGUgbm9uLXN0YW5kYXJkIElVbmtub3duX01FVEhPRFMgbWFjcm8gaW4gV2luZQoJaW50ZXJuYWwgaGVhZGVycy4KCgkqIGRvY3VtZW50YXRpb24vcGF0Y2hlcy5zZ21sOgoJVG9ueSBMYW1icmVndHMgPHRvbnlfbGFtYnJlZ3RzQHRlbHVzcGxhbmV0Lm5ldD4KCUFzayBmb3IgbGluayBpZiBwYXRjaCBpcyByZWxhdGVkIHRvIGEgYnVnIGluIEJ1Z3ppbGxhLgoKCSogZGxscy9zaGx3YXBpL3VybC5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJRml4IFVybFVuZXNjYXBlVy4KCgkqIGRsbHMvdXNlci9zdGF0aWMuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUF1ZGl0IHRoZSBzdGF0aWMgY29udHJvbCBjb2RlLgoJQ2hhbmdlIFtHU11ldFdpbmRvd0xvbmd7LFB0cn1BIHRvIFtHU11ldFdpbmRvd0xvbmd7LFB0cn1XLgoKCSogZGxscy91c2VyL2J1dHRvbi5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQXVkaXQgYW5kIGRvY3VtZW50IGJ1dHRvbiBjb2RlLgoJQ2hhbmdlIFtHU11ldFdpbmRvd0xvbmd7LFB0cn1BIHRvIFtHU11ldFdpbmRvd0xvbmd7LFB0cn1XLgoJQ2hhbmdlIFdNX0dFVERMR0NPREUgYXMgcGVyIHRoZSBNU0ROIGRvY3VtZW50YXRpb24uCgoJKiBNYWtlZmlsZS5pbjogSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+Cgljcm9zc3Rlc3QgdGFyZ2V0IGRlcGVuZHMgb24gaW5jbHVkZSBmaWxlcy4KCgkqIGRsbHMvcXVhcnR6L2ZpbHRlcmdyYXBoLmMsIGluY2x1ZGUvLmN2c2lnbm9yZSwgaW5jbHVkZS9NYWtlZmlsZS5pbiwKCSAgaW5jbHVkZS9jb250cm9sLmgsIGluY2x1ZGUvY29udHJvbC5pZGwsIGluY2x1ZGUvdXVpZHMuaDoKCUNvbnZlcnRlZCBjb250cm9sLmggdG8gaWRsLgoKCSogaW5jbHVkZS9hbXZpZGVvLmlkbCwgaW5jbHVkZS9leGRpc3AuaWRsLCBpbmNsdWRlL29jaWRsLmlkbDoKCVVzZSBwcm9wZ2V0L3Byb3BwdXQgYXR0cmlidXRlcyB3aGVyZSBhcHByb3ByaWF0ZS4KCgkqIHRvb2xzL3dpZGwvaGVhZGVyLmMsIHRvb2xzL3dpZGwvcGFyc2VyLmwsIHRvb2xzL3dpZGwvcGFyc2VyLnksCgkgIHRvb2xzL3dpZGwvd2lkbHR5cGVzLmg6CglBZGRlZCBzdXBwb3J0IGZvciB0aGUgcHJvcGdldC9wcm9wcHV0IGZ1bmN0aW9uIGF0dHJpYnV0ZXMuCgoJKiBkbGxzL2QzZDgvZGlyZWN0eC5jLCBkbGxzL2QzZDkvZGlyZWN0eC5jLCBkbGxzL3dpbmVkM2QvZGlyZWN0eC5jLAoJICBkbGxzL3dpbmVkM2QvdXRpbHMuYywgZGxscy93aW5lZDNkL3dpbmVkM2RfcHJpdmF0ZS5oLAoJICBpbmNsdWRlL3dpbmUvd2luZWQzZF9pbnRlcmZhY2UuaDoKCUphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglNb3ZlIHRoZSBDaGVjayogdHlwZSBmdW5jdGlvbnMgaW50byB3aW5lZDNkIGFuZCBjb3B5IGZyb20gZDNkOSwgYW5kCglmbGFnIHRoYXQgdGhleSBhcmUgbW9zdGx5IHN0dWJzLgoKCSogcHJvZ3JhbXMvd2luZXRlc3Qvc2VuZC5jOiBGZXJlbmMgV2FnbmVyIDx3ZmVyaUBhZmF2YW50LmVsdGUuaHU+CglRdW90ZSBldmVyeXRoaW5nIGZvciBjb25zaXN0ZW5jeS4KCVJGQyAyMDY4IGdvdCBzdXBlcnNlZGVkIGJ5IFJGQyAyNjE2LgoKCSogZGxscy9zaGx3YXBpL3VybC5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJUGF0aElzVVJMIHNob3VsZCByZXR1cm4gVFJVRSBldmVuIGlmIGEgc2NoZW1lIGlzIHVua25vd24uCgoJKiBkbGxzL3VzZXIvdGVzdHMvbXNnLmMsIHdpbmRvd3MvbWRpLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJSWYgdGhlcmUgbm8gTURJIGNoaWxkIHRvIGFjdGl2YXRlIHNldCBod25kQWN0aXZlQ2hpbGQgdG8gMCBpbgoJV01fTURJREVTVFJPWSBoYW5kZXIsIGFkZCBhIHRlc3QgY2FzZS4KCgkqIGRsbHMvYWR2YXBpMzIvdGVzdHMvLmN2c2lnbm9yZSwgZGxscy9hZHZhcGkzMi90ZXN0cy9jcnlwdC5jLAoJICBkbGxzL3JzYWJhc2UvbWFpbi5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2UgYWR2YXBpMzIvY3J5cHQuYyB0ZXN0IHBhc3MgdW5kZXIgd2luMmsgU1A0LCBkbyBzdHJpY3RlciBlcnJvcgoJY2hlY2tpbmcsIGNvbW1lbnQgb3V0IGEgY291cGxlIG9mIHRlc3RzIGZhaWxpbmcgdW5kZXIgd2luMmssIGFkZCBhCglub3RlIHdoeSBSU0FfQ1BBY3F1aXJlQ29udGV4dCBtYXkgZmFpbC4KCgkqIGRsbHMvZGJnaGVscC9wYXRoLmM6IFdvbGZnYW5nIFNjaHdvdHplciA8d29sZmdhbmcuc2Nod290emVyQGdteC5uZXQ+CglNYWtlU3VyZURpcmVjdG9yeVBhdGhFeGlzdHM6IFJlY3Vyc2l2ZWx5IGNyZWF0ZSBwYXRoIHVwIHRvIGxhc3QgJ1xcJy4KCjIwMDQtMTAtMDQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmM6IEZpeGVkIHR5cG8gaW4gUHJvZ3JhbXNXLgoJQ2hhbmdlZCB0aGUgY2FzZSBvZiB3aW5kb3dzIGFuZCBzeXN0ZW0gZGlyZWN0b3JpZXMgdG8gbWF0Y2ggdGhlCglkaXJlY3RvcmllcyB3ZSBjcmVhdGUgYnkgZGVmYXVsdC4KCgkqIGluY2x1ZGUvZHhmaWxlLmg6CglGaXhlZCBpbmNvbXBhdGlibGUgSURJUkVDVFhGSUxFT0JKRUNUX01FVEhPRFMgbWFjcm8sIGFuZCBhZGRlZAoJSVVOS05PV05fTUVUSE9EUy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBsaWJzL3dpbmUvY29uZmlnLmM6CglTdGV2ZW4gRWR3YXJkcyA8c3RldmVuQGNvZGV3ZWF2ZXJzLmNvbT4KCUNoZWNrIGZvciBnZXR1aWQgYW5kIGF2b2lkIHRoZSB1c2Ugb2YgaXQgaW4gbGlid2luZSBpZiB3ZSBkb24ndCBoYXZlCglpdC4KCgkqIGRsbHMvYWR2YXBpMzIvTWFrZWZpbGUuaW4sIGRsbHMvYWR2YXBpMzIvYWR2YXBpMzIuc3BlYywKCSAgZGxscy9hZHZhcGkzMi9jcnlwdC5oLCBkbGxzL2FkdmFwaTMyL2NyeXB0X2Rlcy5jLAoJICBkbGxzL2FkdmFwaTMyL2NyeXB0X2xtaGFzaC5jLCBkbGxzL2FkdmFwaTMyL2NyeXB0X3NoYS5jLAoJICBkbGxzL2FkdmFwaTMyL3Rlc3RzL01ha2VmaWxlLmluLCBkbGxzL2FkdmFwaTMyL3Rlc3RzL2NyeXB0X2xtaGFzaC5jOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglJbXBsZW1lbnQgU3lzdGVtRnVuY3Rpb24wMDYoKS4KCUFkZCBhIHRlc3QgZm9yIFN5c3RlbUZ1bmN0aW9uMDA2KCkuCgoJKiBkbGxzL2RiZ2hlbHAvZWxmX21vZHVsZS5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglBZGQgc3VwcG9ydCBmb3IgLmdudV9kZWJ1Z2xpbmsuCgoJKiBkbGxzL3dpbm1tL3dpbmVhbHNhL2F1ZGlvLmM6CglKZXJyeSBKZW5raW5zIDxqZXJyeV9qX2plbmtpbnNAeWFob28uY29tPgoJRml4IGFuIGVycm9yIG1lc3NhZ2UuCgoJKiBkbGxzL3dpbnNwb29sL2luZm8uYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IHBvcnQgZW51bWVyYXRpb24uCgoJKiBkbGxzL2NvbWN0bDMyL2FuaW1hdGUuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUlmIGFuIGFuaW1hdGlvbiBpcyBhbHJlYWR5IHBsYXlpbmcgZG8gbm90IHJlc3RhcnQgaXQuCglSZW1vdmUgV01fQ0xPU0UgaGFuZGxlciwgaXQgbGVhZHMgdG8gYSBtZW1vcnkgY29ycnVwdGlvbiBsYXRlciBvbi4KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglDaGVjayB0byBtYWtlIHN1cmUgUHJvcFNoZWV0SW5mbyogaXMgbm90IG51bGwgYmVmb3JlIGRlcmVmZXJlbmNpbmcgaXQKCWZvciBzb21lIHdpbmRvd3MgbWVzc2FnZXMuCgoJKiBpbmNsdWRlLy5jdnNpZ25vcmUsIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvbWVkaWFvYmouaCwKCSAgaW5jbHVkZS9tZWRpYW9iai5pZGw6CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglDcmVhdGUgbWVkaWFvYmouaCBmcm9tIG1lZGlhb2JqLmlkbC4KCgkqIGRsbHMvdXNlci9tZXNzYWdlLmMsIGRsbHMvdXNlci90ZXN0cy9tc2cuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGQgbW9yZSBtZXNzYWdlIGNvbnZlcnNpb24gdGVzdHMsIG1ha2UgdGhlIHRlc3RzIHBhc3MgdW5kZXIgV2luZS4KCgkqIGRsbHMvZHBsYXl4L2RwbGF5c3AuaCwgZGxscy9kcGxheXgvbG9iYnlzcC5oLCBpbmNsdWRlL2RzZHJpdmVyLmgsCgkgIGluY2x1ZGUvd2luZS93aW5lZDNkX2ludGVyZmFjZS5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglEb24ndCB1c2UgQ09CSk1BQ1JPUyBvbiBpbnRlcm5hbCBpbnRlcmZhY2VzLgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jLCBpbmNsdWRlL3dpbnNvY2syLmg6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIEZpeCBjYWxjdWxhdGlvbiBvZiByZXF1aXJlZCBidWZmZXIgc2l6ZS4KCS0gQWRkIHN1cHBvcnQgZm9yIGRldGVjdGluZyB0aGUgSUZGX01VTFRJQ0FTVCBmbGFnLgoJLSBTdHViIGZvciBTSU9fQUREUkVTU19MSVNUX0NIQU5HRS4KCgkqIGluY2x1ZGUvZDNkLmgsIGluY2x1ZGUvZDNkOC5oLCBpbmNsdWRlL2QzZDkuaCwgaW5jbHVkZS9kZHJhdy5oLAoJICBpbmNsdWRlL2RpbnB1dC5oLCBpbmNsdWRlL2RwYWRkci5oLCBpbmNsdWRlL2RwbGF5LmgsCgkgIGluY2x1ZGUvZHBsYXk4LmgsIGluY2x1ZGUvZHBsb2JieS5oLCBpbmNsdWRlL2Rzb3VuZC5oLAoJICBpbmNsdWRlL2R4ZGlhZy5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglGaXggaW5jb3JyZWN0IHVzYWdlIG9mIENPQkpNQUNST1MuCglEdXBsaWNhdGUgYW5kIGFkYXB0IHRoZSBDT00gYWNjZXNzIG1hY3JvcyBzbyB0aGV5IGFsc28gd29yayBpbiBDKysuCglGaXggdGhlIElEaXJlY3RQbGF5WCBhY2Nlc3MgbWFjcm9zLgoKCSogaW5jbHVkZS9kM2R4OGNvcmUuaCwgaW5jbHVkZS9kbXBsdWdpbi5oLCBpbmNsdWRlL2RtdXNpY2MuaCwKCSAgaW5jbHVkZS9kbXVzaWNpLmgsIGluY2x1ZGUvZG11c2ljcy5oLCBpbmNsdWRlL2R4ZmlsZS5oLAoJICBpbmNsdWRlL21hcGlkZWZzLmgsIGluY2x1ZGUvbWFwaXV0aWwuaCwgaW5jbHVkZS9tYXBpeC5oLAoJICBpbmNsdWRlL29sZWRsZy5oLCBpbmNsdWRlL3NobG9iai5oLCBpbmNsdWRlL3NobHdhcGkuaCwgaW5jbHVkZS92ZncuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRml4IGluY29ycmVjdCB1c2FnZSBvZiBDT0JKTUFDUk9TLgoKCSogcHJvZ3JhbXMvd2luZXRlc3QvbWFpbi5jOiBGZXJlbmMgV2FnbmVyIDx3ZmVyaUBhZmF2YW50LmVsdGUuaHU+CglEbyBub3Qgb2ZmZXIgc3VibWl0dGluZyB0aGUgcmVwb3J0IGlmIHRoZSAtbyBvcHRpb24gd2FzIGdpdmVuLgoKCSogcHJvZ3JhbXMvd2NtZC9QbC5yYywgcHJvZ3JhbXMvd2NtZC93Y21kcmMucmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX1BsLnJjOgoJUGlvdHIgQ2FiYW4gPHBpbzEzQHBvY3p0YS5vbmV0LnBsPgoJQWRkZWQgUG9saXNoIHRyYW5zbGF0aW9uLgoKCSogdG9vbHMvd2luZS5pbmY6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGQgaWNjdmlkLmRsbCB0byBhbiBpbml0aWFsIFdpbmUgY29uZmlndXJhdGlvbi4KCgkqIGRsbHMvYWR2YXBpMzIvdGVzdHMvY3J5cHRfc2hhLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQXZvaWQgYSBjcmFzaCBpbiBhZHZhcGkzMi90ZXN0X3NoYV9jdHguYyB0ZXN0IGlmIHJlcXVpcmVkIGVudHJ5IHBvaW50cwoJYXJlIG1pc3NpbmcuCgoJKiBkbGxzL2RiZ2hlbHAvc3RhYnMuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBDaGVjayBmb3Igc3RyaW5nIHBvaW50ZXIgYmVpbmcgb3V0c2lkZSBvZiB0aGUgc3RyaW5nIHRhYmxlLgoJLSBPbmx5IHBhcnNlIHR5cGVkZWZzIG9uIHN0YWJzIGVudHJpZXMgdGhhdCBjYW4gaGF2ZSB0aGVtLgoKCSogZGxscy9kYmdoZWxwL21zYy5jLCBkbGxzL2RiZ2hlbHAvcGVfbW9kdWxlLmM6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglGaXggdGhlIGxvYWRpbmcgLmRiZyBmaWxlcyBieSBubyBsb25nZXIgdXNpbmcgUnRsSW1hZ2VOdEhlYWRlciB3aGljaAoJd291bGQgcmV0dXJuIE5VTEwgYW5kIHVzaW5nIGxvb2tpbmcgYXQgdGhlIElNQUdFX1NFUEFSQVRFX0RFQlVHX0hFQURFUgoJZGlyZWN0bHkgaW5zdGVhZC4KCgkqIHByb2dyYW1zL21zaWV4ZWMvbXNpZXhlYy5jOiBLZXZpbiBLb2x0emF1IDxrZXZpbkBwbG9wLm9yZz4KCUNvcnJlY3QgcHJvYmxlbSB3aXRoIC9pIGFyZ3VtZW50IGhhbmRsaW5nLgoKCSogZGxscy93aW5tbS93aW5lYWxzYS9hdWRpby5jOgoJSmVycnkgSmVua2lucyA8amVycnlfal9qZW5raW5zQHlhaG9vLmNvbT4KCURvbid0IHVzZSB0aGUgU05EX1BDTV9BU1lOQyBmbGFnIGZvciB0aGUgbW9tZW50LgoKCSogZGxscy9pbW0zMi9pbW0uYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJUHJldmVudCBjcmFzaCB1c2luZyBDSksgbG9jYWxlIGJ1dCBubyBpbnB1dCBtZXRob2QuCgoJKiBkbGxzL2NvbWN0bDMyL2FuaW1hdGUuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCURvIG5vdCB1c2UgR2xvYmFsRnJlZSBmb3IgYSBtZW1vcnkgcmV0dXJuZWQgYnkgTG9hZFJlc291cmNlLgoKCSogZGxscy9udGRsbC90aW1lLmM6IEZpbGlwIE5hdmFyYSA8eG5hdmFyYUB2b2xueS5jej4KCUFkZCBVVEMgdG8gdGhlIHRpbWUgem9uZSBsaXN0LgoKCSogcHJvZ3JhbXMvd2luZXRlc3Qvc2VuZC5jOiBGZXJlbmMgV2FnbmVyIDx3ZmVyaUBhZmF2YW50LmVsdGUuaHU+CgktIFVzZSBhIG1vcmUgdW5pcXVlIHNlcGFyYXRvciBzdHJpbmcuCgktIEFkZCBzb21lIHF1b3RpbmcgdG8gcGxlYXNlIENHSS5wbS0zLjA1LgoKCSogdG9vbHMvYnVnX3JlcG9ydC5wbDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglTd2l0Y2ggdG8gJ3BlcmwgLXcnIGFuZCBhZGQgJ3VzZSBzdHJpY3Q7Jy4KCUFkZCBwcm90b3R5cGVzIHRvIGFsbCBmdW5jdGlvbnMuCglSZW1vdmUgJGJhc2h2ZXIgYW5kICRvdXRmbGFncywgdGhleSBhcmUgbm90IHVzZWQuCgoJKiBpbmNsdWRlL3dpbnNwb29sLmg6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRml4IHRoZSBKb2JJZCBmaWVsZCBjYXNlLgoKCSogaW5jbHVkZS90bGhlbHAzMi5oOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFkZCBIRUFQRU5UUlkzMiBhbmQgdGhlIHJlbGF0ZWQgQVBJcy4KCgkqIGluY2x1ZGUvbG1jb25zLmg6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQWRkIEFQSV9SRVRfVFlQRSBhbmQgTkVUX0FQSV9GVU5DVElPTi4KCgkqIHRvb2xzL3dpbmFwaS9tc3ZjbWFrZXI6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJSGFuZGxlIHRoZSBzdGF0aWMgbGlicmFyaWVzIGxpbmtlZCB0byB1c2luZyBFWFRSQUxJQlMuCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmM6IFJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCS0gVGltZSBvdXQgb24gcmVjdiBmcm9tIGFuZCBzZW5kIHRvIGJsb2NraW5nIHNvY2tldHMuCgktIEZpeCB0aW1lb3V0IGNhbGN1bGF0aW9uIGluIFdTX3NldHNvY2tvcHQuCgoJKiBkbGxzL3VzZXIvdGVzdHMvbXNnLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCB0ZXN0cyBmb3IgY29udmVyc2lvbiBvZiBtZXNzYWdlIHBhcmFtZXRlcnMuCgoJKiBkbGxzL3NobHdhcGkvdGVzdHMvcGF0aC5jLCBkbGxzL3NobHdhcGkvdXJsLmM6CglIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJVXJsRXNjYXBlIGhhcyBkaWZmZXJlbnQgcnVsZXMgZGVwZW5kaW5nIG9uIHRoZSBwcm90b2NvbC4KCUFkZGVkIGEgbG9hZCBvZiB0ZXN0cy4KCgkqIGRsbHMvY29tY3RsMzIvcmViYXIuYzogVml0YWxpeSBNYXJnb2xlbiA8d2luZS1wYXRjaEBraWV2aW5mby5jb20+CglEb24ndCBsb29zZSBsYXN0IGJhbmQgb24gaW5zZXJ0LgoKCSogZGxscy9zaGVsbDMyL3NobGZvbGRlci5jOiBHZSB2YW4gR2VsZG9ycCA8Z3ZnQHJlYWN0b3MuY29tPgoJQ2FuJ3QgcGFzcyBOVUxMIGFzIGRlZmF1bHQgdmFsdWUgdG8gR2V0UHJpdmF0ZVByb2ZpbGVTdHJpbmcuCgoJKiBkbGxzL2RiZ2hlbHAvZWxmX21vZHVsZS5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglSZXdyaXRlIGEgc2VjdGlvbiBvZiBjb2RlIHNvIHRoYXQgaXQgZG9lc24ndCB1c2UgZXhpdCgwKSB3aGVuIG91dCBvZgoJbWVtb3J5LgoKCSogZGxscy9kYmdoZWxwL21vZHVsZS5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglQcmludCBvdXQgYSBzbGlnaHRseSBtb3JlIGluZm9ybWF0aXZlIG1lc3NhZ2UgaWYgYW4gRUxGIG1vZHVsZSBmYWlscwoJdG8gbG9hZC4KCgkqIHRvb2xzL2MybWFuLnBsOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFkZCBwcm90b3R5cGVzIHRvIGFsbCBmdW5jdGlvbnMuCglNb3ZlICdtYWluJyB0byB0aGUgZW5kIHNvIHdlIGRvbid0IGhhdmUgdG8gcHJlLWRlY2xhcmUgYWxsIHRoZQoJZnVuY3Rpb25zLgoKCSogdG9vbHMvbWFrZV9yZXF1ZXN0czogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBZGQgJ3VzZSBzdHJpY3QnLgoJQWRkIHByb3RvdHlwZXMgdG8gYWxsIGZ1bmN0aW9ucy4KCU1vdmUgJ21haW4nIHRvIHRoZSBlbmQgc28gd2UgZG9uJ3QgaGF2ZSB0byBwcmUtZGVjbGFyZSBhbGwgdGhlCglmdW5jdGlvbnMuCgoyMDA0LTA5LTI5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9pY21wL2ljbXBfbWFpbi5jOiBBdm9pZCB1c2luZyBnZXR0aW1lb2ZkYXkuCgoJKiBkbGxzL2QzZDgvZGlyZWN0eC5jLCBkbGxzL2QzZDkvZGlyZWN0eC5jLCBkbGxzL3dpbmVkM2QvZGlyZWN0eC5jLAoJICBkbGxzL3dpbmVkM2Qvd2luZWQzZF9wcml2YXRlLmgsIGluY2x1ZGUvd2luZS93aW5lZDNkX2dsLmgsCgkgIGluY2x1ZGUvd2luZS93aW5lZDNkX2ludGVyZmFjZS5oOgoJSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCU1vdmUgaW50byB3aW5lZDNkIGFuZCBjYWxsIGZyb20gZDNkOSB0aGUgR2V0QWRhcHRlcklkIGZ1bmN0aW9uIGFuZAoJY29weSBhbGwgdGhlIGdsIGRlY2xhcmF0aW9ucyBpbnRvIHRoZSBtb3JlIGdsb2JhbCB3aW5lZDNkX2dsIGhlYWRlcgoJZmlsZS4KCgkqIGRsbHMvc2hlbGwzMi8uY3ZzaWdub3JlLCBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvc2hlbGwzMi9mb2xkZXJzLmMsIGRsbHMvc2hlbGwzMi9zaHJlcy5yYzoKCUtsZW1lbnMgRnJpZWRsIDxmcmlrODVAaG90bWFpbC5jb20+CglNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJLSBkcml2ZSBpY29uIGFydHdvcmsKCS0gZGlzcGxheSBkaWZmZXJlbnQgZHJpdmUgaWNvbnMgZGVwZW5kaW5nIG9uIHRoZSBkcml2ZSB0eXBlCgoJKiBkbGxzL3NobHdhcGkvdXJsLmMsIGluY2x1ZGUvc2hsd2FwaS5oOgoJSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCVBhcnNlVVJMIGlzIG5vdyBkb2N1bWVudGVkLCBzbyBtb3ZlIGl0IGludG8gc2hsd2FwaS5oLgoKCSogZGxscy94MTFkcnYvZXZlbnQuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUlnbm9yZSBGb2N1c091dCBldmVudCBpZiB0aGVyZSBpcyBubyBldmVudCB3aW5kb3cuCgoJKiBkbGxzL2tlcm5lbC9yZXNvdXJjZS5jOiBWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglLZWVwIHRoZSBvcmlnaW5hbCByZXNvdXJjZXMgaWYgIWJEZWxldGVFeGlzdGluZ1Jlc291cmNlcyBpbgoJQmVnaW5VcGRhdGVSZXNvdXJjZVcuCglQYXNzIHRoZSBjb3JyZWN0IGhhbmRsZSB0byBjYWxsYmFjayBmdW5jdGlvbnMgaW4KCUJlZ2luVXBkYXRlUmVzb3VyY2VXLgoJRml4IGEgYnVnIHdoaWxlIHNhdmluZyBkYXRhIGluIG1lbW9yeSBpbiBVcGRhdGVSZXNvdXJjZVcuCgoJKiBkbGxzL3VzZXIvZWRpdC5jOiBKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCUxpbWl0IHNjcm9sbGluZyBvZiB0aGUgZWRpdCBjb250cm9sIHRvIHRoZSBsYXN0IGxpbmUgb2YgdGV4dC4KCjIwMDQtMDktMjggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3NoZWxsMzIvZm9sZGVycy5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglTaW1wbGlmeSBnZXR0aW5nIGN1c3RvbSBpY29ucyBmb3IgYSBmb2xkZXIgYnkgdXRpbGlzaW5nIHRoZSBuZXcKCVNIRUxMMzJfR2V0Q3VzdG9tRm9sZGVyQXR0cmlidXRlIGZ1bmN0aW9uLgoKCSogZGxscy9zaGVsbDMyL3NoZmxkci5oLCBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmM6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIEFkZCBzdXBwb3J0IGZvciBjdXN0b20gc2hlbGwgZm9sZGVycywgc3VjaCBhcyB0aGUgSGlzdG9yeSBmb2xkZXIuCgktIEFsd2F5cyB0cnkgdG8gaW5pdGlhbGl6ZSBmb2xkZXIgdXNpbmcgSVBlcnNpc3RGb2xkZXIzIGludGVyZmFjZSBhbmQKCSAgdGhlbiBmYWxsIGJhY2sgb24gSVBlcnNpc3RGb2xkZXIgaWYgbm90IHN1cHBvcnRlZC4KCgkqIGRsbHMvYW1zdHJlYW0vbWFpbi5jLCBkbGxzL2QzZHhvZi9tYWluLmMsIGRsbHMvZGRyYXcvbWFpbi5jLAoJICBkbGxzL2RwbmV0L2RwbmV0X21haW4uYywgZGxscy9keGRpYWduL2R4ZGlhZ19tYWluLmMsCgkgIGRsbHMvaXRzcy9pdHNzLmMsIGRsbHMvbWxhbmcvbWxhbmcuYywgZGxscy9xdWFydHovbWFpbi5jOgoJSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBhIHJlZmVyZW5jZSBsZWFrIG9uIGZhaWx1cmUgKHNwb3R0ZWQgYnkgUm9iIFNoZWFybWFuKS4KCU1vdmUgc29tZSBjb2RlIG92ZXIgdG8gdGhlIEludGVybG9ja2VkKiBmdW5jdGlvbnMuCgoJKiBkbGxzL3VybG1vbi9NYWtlZmlsZS5pbiwgZGxscy91cmxtb24vc2VjX21nci5jLCBkbGxzL3VybG1vbi91bW9uLmMsCgkgIGRsbHMvdXJsbW9uL3VybG1vbl9tYWluLmMsIGRsbHMvdXJsbW9uL3VybG1vbl9tYWluLmgsCgkgIGluY2x1ZGUvdXJsbW9uLmlkbDoKCUh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglTdHViIGltcGxlbWVudGF0aW9uIG9mIElJbnRlcm5ldFNlY3VyaXR5TWFuYWdlci4KCUFkZCBhIGNsYXNzZmFjdG9yeS4KCUZpeCBjYWxsaW5nIGNvbnZlbnRpb24gb2YgQ29JbnRlcm5ldENyZWF0ZVNlY3VyaXR5TWFuYWdlci4KCgkqIGRsbHMva2VybmVsL3dvd3RodW5rLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gRG9uJ3QgcGVyZm9ybSBldmVudCBjaGVjayBpZiBpbiBzeXN0ZW0gY29kZS4gRml4ZXMgaW5maW5pdGUKCSAgcmVjdXJzaW9uIGJ1Zy4KCS0gRml4IHN0YWNrIGNvcnJ1cHRpb24gdGhhdCBjb3VsZCBvY2N1ciBpbiBLMzJXb3dDYWxsYmFjazE2RXggaWYgYW4KCSAgZXZlbnQgY2hlY2sgd2FzIGluc2VydGVkLgoKCSogZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYywgZGxscy9jb21jdGwzMi90ZXN0cy9pbWFnZWxpc3QuYzoKCU1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuY29tPgoJLSBuYXRpdmUgSW1hZ2VMaXN0X1JlbW92ZSBkb3NuJ3Qgc3BpdCBvdXQgYW4gZXJyb3IgbWVzc2FnZSB3aGVuCgkgIGRlbGV0aW5nIGFuIGluZGV4IG91dCBvZiByYW5nZSBzbyBkb24ndCBkbyB0aGF0IGVpdGhlcgoJLSBhZGQgMiBJbWFnZUxpc3RfUmVtb3ZlIHRlc3RzCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCURldGVybWluZSB3aGV0aGVyIHRvIGRvIGxhYmVsIGVkaXQgYmVmb3JlIHNlbmRpbmcgTk1fQ0xJQ0suCgoJKiBwcm9ncmFtcy93aW5lY2ZnL0VuLnJjLCBwcm9ncmFtcy93aW5lY2ZnL2RyaXZlLmMsCgkgIHByb2dyYW1zL3dpbmVjZmcvd2luZWNmZy5jLCBwcm9ncmFtcy93aW5lY2ZnL3dpbmVjZmcuaCwKCSAgcHJvZ3JhbXMvd2luZWNmZy94MTFkcnZkbGcuYzoKCU1pa2UgSGVhcm4gPG1pa2VAbmF2aS5jeD4KCS0gc3dpdGNoIHgxMWRydmRsZyB0byBrZXJuZWxfc3R5bGUsIGFuZCBjbGVhbiB1cCBzb21lIHN1cGVyZmxvdXMgY29kZQoJLSBtb3JlIHdpbjMyIGhlYXBpZmljYXRpb24KCS0gbW92ZSBnZXREaWFsb2dJdGVtVGV4dCBpbnRvIGhlYWRlciBhbmQgcmVuYW1lLCB1c2Ugc29tZSBtb3JlIGluCgkgIHgxMWRydiBwYWdlCgktIG1ha2UgbGFiZWwgcGhyYXNpbmcgY29uc2lzdGVudCBpbiB4MTFkcnYgcGFnZQoKCSogcHJvZ3JhbXMvd2luZWNmZy9Fbi5yYywgcHJvZ3JhbXMvd2luZWNmZy9hcHBkZWZhdWx0cy5jLAoJICBwcm9ncmFtcy93aW5lY2ZnL2F1ZGlvLmMsIHByb2dyYW1zL3dpbmVjZmcvZHJpdmUuYywKCSAgcHJvZ3JhbXMvd2luZWNmZy9saWJyYXJpZXMuYywgcHJvZ3JhbXMvd2luZWNmZy9tYWluLmMsCgkgIHByb2dyYW1zL3dpbmVjZmcvcmVzb3VyY2UuaCwgcHJvZ3JhbXMvd2luZWNmZy93aW5lY2ZnLmMsCgkgIHByb2dyYW1zL3dpbmVjZmcvd2luZWNmZy5oLCBwcm9ncmFtcy93aW5lY2ZnL3gxMWRydmRsZy5jOgoJTWlrZSBIZWFybiA8bWlrZUBuYXZpLmN4PgoJLSByZXdyaXRlIHRoZSB0cmFuc2FjdGlvbiBzeXN0ZW0gdG8gYmUgYmFzZWQgb24gYSBzZXR0aW5ncyBvdmVybGF5LAoJICB0byBoYXZlIGEgbmljZXIgQVBJLCBhbmQgdG8gYWN0dWFsbHkgd29yayAoYWx3YXlzIGEgYm9udXMpCgktIGNoYW5nZSB0aGUgbGlicmFyaWVzIHBhZ2UgdG8gYmUgYmFzZWQgb24gYSBsaXN0Ym94IHJhdGhlciB0aGFuIGEKCSAgdHJlZXZpZXcsIGNsZWFuIHVwIGFuZCBzaHJpbmsgdGhlIGNvZGUKCS0gYWRkIGFjY2VsZXJhdG9yIGtleXMgdG8gdGhlIGxpYnJhcmllcyBwYWdlLCBmb2N1cyBtYW5hZ2VtZW50CgktIG1ha2UgdGhlIHdpbmRvdyB0aXRsZSByZWZsZWN0IHdoYXQgdGhlIHVzZXIgaXMgY3VycmVudGx5IGVkaXRpbmcKCS0gcmVtb3ZlIGJvZ3VzIHJvb3Qgd2FybmluZwoJLSByZW1vdmUgc29tZSB1bnVzZWQgY29udHJvbCBJRHMgaW4gcmVzb3VyY2UuaAoJLSBzdGFydCBjb252ZXJ0aW5nIHRoZSB4MTFkcnYgZGlhbG9nIHRvIGtlcm5lbF9zdHlsZSBmcm9tIGphdmFTdHlsZQoJLSBidWdmaXhpbmcKCgkqIHByb2dyYW1zL3dpbmVjZmcvRW4ucmMsIHByb2dyYW1zL3dpbmVjZmcvYXBwZGVmYXVsdHMuYywKCSAgcHJvZ3JhbXMvd2luZWNmZy9wcm9wZXJ0aWVzLmMsIHByb2dyYW1zL3dpbmVjZmcvcmVzb3VyY2UuaCwKCSAgcHJvZ3JhbXMvd2luZWNmZy93aW5lY2ZnLmMsIHByb2dyYW1zL3dpbmVjZmcvd2luZWNmZy5oLAoJICBwcm9ncmFtcy93aW5lY2ZnL3dpbmVjZmcucmMsIHByb2dyYW1zL3dpbmVjZmcveDExZHJ2ZGxnLmM6CglNaWtlIEhlYXJuIDxtaWtlQG5hdmkuY3g+CgktIGludHJvZHVjZSBrZXlwYXRoKCkgZnVuY3Rpb24KCS0gcmV3cml0ZSBhbmQgY2xlYW4gdXAgYXBwZGVmYXVsdHMuYywgdXNlIGEgbGlzdHZpZXcgcmF0aGVyIHRoYW4KCSAgdHJlZXZpZXcKCS0gdXNhYmlsaXR5IHR3ZWFrOiByZXZlcnNlIHdpbmRvd3MgdmVyc2lvbiBjb21ibyBzbyBtb3JlIHJlY2VudAoJICB2ZXJzaW9ucyBjb21lIGZpcnN0CgktIHVzYWJpbGl0eSB0d2VhazogaW1wcm92ZSB0aGUgYWRkIGFwcGxpY2F0aW9uIG9wZW4gZGlhbG9nIGJveAoJLSBhZGQgYWNjZWxlcmF0b3Iga2V5cwoJLSBlbmFibGUvZGlzYWJsZSBjb250cm9scyBjb3JyZWN0bHkKCS0gYmVnaW4gdG8gc3RhbmRhcmRpc2Ugb24gdW5kZXJzY29yZV9zdHlsZSBmb3IgY29uc2lzdGVuY3kgd2l0aCB0aGUKCSAgcmVzdCBvZiB3aW5lCgktIGNvbW1lbnQgb3V0IHRoZSB0cmFuc2xhdGlvbnMgZm9yIG5vdywgdGhlIFVJIHdpbGwgYmUgY2hhbmdpbmcgbW9yZQoJLSBiZWdpbiBwaGFzaW5nIG91dCBsaWJjIG1hbGxvYyBpbiBmYXZvdXIgb2YgdGhlIHdpbjMyIGhlYXAKCgkqIHByb2dyYW1zL3dpbmVmaWxlL0l0LnJjOiBJdmFuIExlbyBQdW90aSA8cHVvdGlAaW53aW5kLml0PgoJVHJhbnNsYXRpb24gdXBkYXRlLgoKCSogaW5jbHVkZS9wc3RvcmUuaWRsOiBGaWxpcCBOYXZhcmEgPHhuYXZhcmFAdm9sbnkuY3o+CglGaXggSURMIHByb3RvdHlwZXMgb2YgSVBTdG9yZTo6V3JpdGVJdGVtIGFuZCBJUFN0b3JlOjpDbG9zZUl0ZW0uCgoJKiBkbGxzL2F0bC9hdGwuc3BlYywgZGxscy9hdGwvYXRsX21haW4uYywgZGxscy9hdGwvYXRsYmFzZS5oOgoJSmFtZXMgSGF3a2lucyA8dHJ1aWtlbkBnbWFpbC5jb20+CglTdHViIGltcGxlbWVudGF0aW9uIG9mIEF0bE1vZHVsZVVucmVnaXN0ZXJTZXJ2ZXJFeC4KCgkqIHRvb2xzL3dpbmVwcmVmaXhjcmVhdGUuaW46IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgbWlzc2luZyBkaXJlY3RvcmllcyBtZW50aW9uZWQgaW4gc2hlbGxwYXRoLmMuCgoJKiBmb250cy8uY3ZzaWdub3JlLCBmb250cy9NYWtlZmlsZS5pbiwgZm9udHMvd2luZV9zYW5zX3NlcmlmLnNmZDoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGQgY3lyaWxsaWMgZ2x5cGhzIHRvIHdpbmVfc2Fuc19zZXJpZiBhdCAyMCBwcGVtLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJSXRlbSBoZWlnaHQvZXhwYW5kIGJ1dHRvbiB3aWR0aCBtdXN0IGJlID49IHRoYW4gaW1hZ2VsaXN0IHNpemUuCglBdm9pZCBhIG1hZ2ljIG51bWJlciwgYWRkIEZJWE1FIGZvciBpbmNvcnJlY3QgKy8tIGRyYXdpbmcuCgoJKiBwcm9ncmFtcy93aW5lY2ZnL21haW4uYzogTWlrZSBIZWFybiA8bWlrZUBuYXZpLmN4PgoJRGlzcGxheSBtZXNzYWdlIGJveCB0byBhbGVydCB1c2VycyBtb3JlIHJlbGlhYmx5IHRoYXQgd2luZWNmZyBpcwoJdW5maW5pc2hlZC4KCgkqIGRvY3VtZW50YXRpb24vZGVidWdnZXIuc2dtbCwgcHJvZ3JhbXMvd2luZWRiZy9icmVhay5jLAoJICBwcm9ncmFtcy93aW5lZGJnL2RiZy55LCBwcm9ncmFtcy93aW5lZGJnL2RlYnVnZ2VyLmgsCgkgIHByb2dyYW1zL3dpbmVkYmcvZGlzcGxheS5jLCBwcm9ncmFtcy93aW5lZGJnL2V4cHIuYywKCSAgcHJvZ3JhbXMvd2luZWRiZy9tZW1vcnkuYywgcHJvZ3JhbXMvd2luZWRiZy9zb3VyY2UuYywKCSAgcHJvZ3JhbXMvd2luZWRiZy9zeW1ib2wuYywgcHJvZ3JhbXMvd2luZWRiZy90eXBlcy5jLAoJICBwcm9ncmFtcy93aW5lZGJnL3dpbmVkYmcuYzoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJLSBmaXhlZCByZWdyZXNzaW9uIGluIGN0cmwtYyBoYW5kbGluZwoJLSBmaXhlZCByZWdyZXNzaW9uIGluICdpbmZvIHN5bWJvbCBYWFhYJyBjb21tYW5kIChhbmQgZW5oYW5jZWQKCSAgcHJlc2VudGF0aW9uKQoJLSBmaXhlZCByZWdyZXNzaW9uIGluIGxpbmUgc3RlcHBpbmcKCS0gZml4ZWQgcmVncmVzc2lvbiBpbiAmIChhZGRyZXNzIG9wZXJhdG9yKSBoYW5kbGluZwoJLSBmaXhlZCBzb21lIGJhZCBtb2R1bGUgcmVmZXJlbmNlIGZvciBsb2NhbCBzeW1ib2xzCgktIGVuaGFuY2VkIHJlZ2lzdGVyIHByZXNlbnRhdGlvbiBhcyBsb2NhbCB2YXJpYWJsZXMKCS0gYWRkZWQgd2FybmluZyB3aGVuIGxhdW5jaGluZyBhIGRlYnVnZ2VlIHdoaWNoIGlzbid0IGEgV2luZSBhcHAKCS0gcmVtb3ZlZCB0aGUgJ2xvY2FsJyBleHRlbnNpb24gb2YgZGlzcGxheSBjb21tYW5kIChhbmQgY2hlY2sgd2hlbgoJICBzZXR0aW5nIHRoZSBkaXNwbGF5IHdoZXRoZXIgdGhlIGV4cHIgaGFzIGEgbG9jYWwgYmluZGluZykKCS0gc2ltcGxpZmllZCBleGNlcHRpb24gaGFuZGxpbmcsIGFuZCBmYWN0b3JpemVkIHNvbWUgY29kZSB3aGVuCgkgIGRlYnVnZ2VyIHN0b3BzCgoJKiB0b29scy93aWRsL3BhcnNlci55OiBGaWxpcCBOYXZhcmEgPHhuYXZhcmFAdm9sbnkuY3o+CgktIEZvcmNlIGRlZmF1bHQgW2luXSBhdHRyaWJ1dGUgb24gYWxsIHBhcmFtZXRlcnMgd2hlcmUgZXhwbGljaXQgW2luXQoJICBvciBbb3V0XSBhdHRyaWJ1dGVzIGFyZW4ndCBzcGVjaWZpZWQuCgktIEZvcmNlIGRlZmF1bHQgW291dF0gYXR0cmlidXRlIG9uIHJldHVybiB2YWx1ZXMuCgoJKiBkbGxzL2QzZDgvTWFrZWZpbGUuaW4sIGRsbHMvZDNkOC9kM2Q4X21haW4uYywKCSAgZGxscy9kM2Q4L2QzZDhfcHJpdmF0ZS5oLCBkbGxzL2QzZDgvZGlyZWN0eC5jLCBkbGxzL2QzZDkvZGlyZWN0eC5jLAoJICBkbGxzL3dpbmVkM2QvTWFrZWZpbGUuaW4sIGRsbHMvd2luZWQzZC9kaXJlY3R4LmMsCgkgIGRsbHMvd2luZWQzZC91dGlscy5jLCBkbGxzL3dpbmVkM2Qvd2luZWQzZF9tYWluLmMsCgkgIGRsbHMvd2luZWQzZC93aW5lZDNkX3ByaXZhdGUuaCwgaW5jbHVkZS93aW5lL3dpbmVkM2RfaW50ZXJmYWNlLmg6CglKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJLSBNYWtlIGQzZDgga25vdyBhYm91dCB0aGUgd2luZWQzZCBkZXZpY2UgYW5kIHN0YXJ0IHVzaW5nIGl0LgoJLSBNb3ZlIHNvbWUgb2YgdGhlIHNjcmVlbiBtb2RlIHJlbGF0ZWQgZnVuY3Rpb25zIGludG8gd2luZWQzZCBhbmQgYWRkCgkgIHVudGVzdGVkIHN1cHBvcnQgZm9yIHRoZSBuZXcgZDNkOSBvcHRpb25zIG9mIHByb3ZpZGluZyB0aGUgZm9ybWF0IHRvCgkgIHNvbWUgb2YgdGhlIGNhbGxzLgoJLSBNb3ZlIG90aGVyIGZ1bmN0aW9ucyBmcm9tIHRoZSBkaXJlY3R4IGludGVyZmFjZSBpbnRvIHRoZSBjb21tb24KCSAgbGlicmFyeSBhbmQgaW1wbGVtZW50IHRoZSBjYWxscyBmcm9tIGQzZDkgYXMgd2VsbC4KCS0gQ29weSBhY3Jvc3MgdGhlIGZpcnN0IG9mIHRoZSBmdW5jdGlvbnMgdXNlZCB0byBtYWtlIHRyYWNlcyBtb3JlIHJlYWRhYmxlLAoJICBjcmVhdGluZyB1dGlscy5jIHRvIHN0b3JlIHRoZW0gaW4uIEV2ZW50dWFsbHkgdGhlIG9uZXMgaW4gZDNkOCB3aWxsIGJlCgkgIHJlbW92ZWQgYnV0IGZvciBub3cganVzdCBkdXBsaWNhdGUgdGhlIGNvZGUuCgoJKiB3aW5kb3dzL2N1cnNvcmljb24uYzogTWljaGFlbCBLYXVmbWFubiA8aGFsbG9AbWljaGFlbC1rYXVmbWFubi5jaD4KCURJQl9GaXhDb2xvcnNUb0xvYWRmbGFnczogU3VwcG9ydCBiaXRtYXBzIHdpdGggYSBCSVRNQVBDT1JFSEVBREVSCglwcm9wZXJseS4KCjIwMDQtMDktMjcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBsaWJzL3dpbmUvY29uZmlnLmM6CglCYXNlIHRoZSBzZXJ2ZXIgZGlyZWN0b3J5IG5hbWUgb24gdGhlIHVpZCwgbm90IHRoZSB1c2VybmFtZS4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2FkdnBhY2svLmN2c2lnbm9yZSwKCSAgZGxscy9hZHZwYWNrL01ha2VmaWxlLmluLCBkbGxzL2FkdnBhY2svYWR2cGFjay5jLAoJICBkbGxzL2FkdnBhY2svYWR2cGFjay5zcGVjLCBkbGxzL2FkdnBhY2svcmVnLmMsIGluY2x1ZGUvTWFrZWZpbGUuaW4sCgkgIGluY2x1ZGUvYWR2cHViLmg6CglIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJUGFydGlhbCBpbXBsZW1lbnRhdGlvbiBvZiBhZHZwYWNrLlJlZ0luc3RhbGwuCgoJKiBwcm9ncmFtcy93aW5lZmlsZS9Fbi5yYywgcHJvZ3JhbXMvd2luZWZpbGUvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL3dpbmVmaWxlL1BsLnJjLCBwcm9ncmFtcy93aW5lZmlsZS9yZXNvdXJjZS5oLAoJICBwcm9ncmFtcy93aW5lZmlsZS9yZXNvdXJjZS5yYywgcHJvZ3JhbXMvd2luZWZpbGUvd2luZWZpbGUuYywKCSAgcHJvZ3JhbXMvd2luZWZpbGUvd2luZWZpbGUuaDoKCVBpb3RyIENhYmFuIDxwaW8xM0Bwb2N6dGEub25ldC5wbD4KCS0gYWRkZWQgY2hvb3NpbmcgZm9udHMKCS0gYWRkZWQgZmlsZSBtb3ZpbmcKCgkqIGRsbHMvYWR2YXBpMzIvc2VydmljZS5jOiBBbGV4YW5kZXIgWWF3b3Jza3kgPHlhd29yc2t5QG1pZ3Vzb2Z0LnJ1PgoJU3RhcnQgb25seSBmaXJzdCBzZXJ2aWNlIGluIHRoZSBzZXJ2aWNlIHRhYmxlLgoKCSogZGxscy93aW5tbS93aW5lYWxzYS9taWRpLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglDYWxsIEdldFByb2Nlc3NIZWFwKCkgaW5zdGVhZCBvZiBwYXNzaW5nIGl0cyBhZGRyZXNzLgoKCSogZGxscy9zaGVsbDMyL2RpYWxvZ3MuYzogR2UgdmFuIEdlbGRvcnAgPGd2Z0ByZWFjdG9zLmNvbT4KCUNhbGwgR2V0UHJvY2Vzc0hlYXAoKSBpbnN0ZWFkIG9mIHBhc3NpbmcgaXRzIGFkZHJlc3MuCgoJKiBkbGxzL3gxMWRydi9kaWIuYzogTWljaGFlbCBLYXVmbWFubiA8aGFsbG9AbWljaGFlbC1rYXVmbWFubi5jaD4KCSAtIEFkZCBhcyBtYW55IGVudHJpZXMgdG8gdGhlIGNvbG9yIG1hcCBhcyBzcGVjaWZpZWQgYnkgdGhlIERJQi4KCSAtIFN1cHBvcnQgYml0bWFwcyB3aXRoIGEgQklUTUFQVns0LDV9SEVBREVSLgoKCSogZGxscy9vbGVhdXQzMi90bWFyc2hhbC5jLCBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRnVuY3Rpb24gcmV0dXJuIHR5cGVzIGNhbm5vdCBiZSBjb25zdC4KCgkqIHRvb2xzL3dpbmVzaGVsbGxpbms6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUmVtb3ZlIC0tIGZyb20gc2hlbGwgZW50cmllcywgc2luY2Ugd2luZSBubyBsb25nZXIgZmlsdGVycyBpdC4KCgkqIGRvY3VtZW50YXRpb24vcGF0Y2hlcy5zZ21sOiBIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCVN1Z2dlc3QgcnVubmluZyBjb25mb3JtYW5jZSB0ZXN0cyBwcmlvciB0byBzZW5kaW5nIGEgcGF0Y2guCgoJKiBkbGxzL2RiZ2hlbHAvZGJnaGVscF9wcml2YXRlLmgsIGRsbHMvZGJnaGVscC9tb2R1bGUuYywKCSAgZGxscy9kYmdoZWxwL3N5bWJvbC5jLCBkbGxzL2RiZ2hlbHAvdHlwZS5jOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CgktIG5vdyBzdG9yaW5nIHZlY3RvciBvZiB0eXBlcyBvbiBhIHBlciBtb2R1bGUgYmFzaXMgKGFuZCBnaXZpbmcgaXQKCSAgYmFjayBpbiBTeW1FbnVtVHlwZXMpCgktIGZsYWdnaW5nIGxvY2FsIHJlZ2lzdGVyIHZhcnMgYXMgbG9jYWwgdG9vCgoJKiBkb2N1bWVudGF0aW9uL1BBQ0tBR0lORzogSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglTdWdnZXN0IGluc3RhbGxpbmcgTGl0dGxlQ01TIHRvIFdpbmUgcGFja2FnZXJzLgoKCSogcHJvZ3JhbXMvd2luaGVscC9tYWNyby5jOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJU3R1YiBNQUNST19KdW1wQ29udGV4dCB0byBhdCBsZWFzdCBicmluZyB1cCB0aGUgaGVscCBmaWxlLgoKMjAwNC0wOS0yNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvY29tY3RsMzIvaG90a2V5LmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gSW1wbGVtZW50IFdTX0RJU0FCTEVEIHN0eWxlLgoJLSBJc3N1ZSBFTl9DSEFOR0Ugbm90aWZpY2F0aW9uLgoKCSogd2luZG93cy9ub25jbGllbnQuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJQ2hlY2sgaW4gY2xpZW50IGFyZWEgYmVmb3JlIGNhcHRpb24gYXJlYSwgYmVjYXVzZSB0aGUgYXBwIG1heSBoYXZlCgljaGFuZ2VkIHRoZSBOQyBhcmVhIGluIFdNX05DQ0FMQ1NJWkUuCgoJKiBkbGxzL3NobHdhcGkvcGF0aC5jLCBkbGxzL3NobHdhcGkvdGVzdHMvcGF0aC5jOgoJSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCBQYXRoU2VhcmNoQW5kUXVhbGlmeS4KCgkqIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWM6CglHZSB2YW4gR2VsZG9ycCA8Z3ZnQHJlYWN0b3MuY29tPgoJU0hHZXRBcHBDb21wYXRGbGFncyB0YWtlcyA0IGJ5dGVzIG9mIHBhcmFtZXRlcnMuCgoJKiBwcm9ncmFtcy93aW5oZWxwL3dpbmhlbHAuYzogS2VuIEJlbGxlYXUgPGphbWV6QGl2aWMucWMuY2E+CgktIFJlbW92ZWQgY29kZSB0aGF0IHRvb2sgdGhlIGZvY3VzIGF3YXkgZnJvbSB0aGUgYnV0dG9ucy4KCS0gTWFrZSB0aGUgYnV0dG9ucyBmb3J3YXJkIFdNX0tFWURPV04gdG8gdGhlaXIgcGFyZW50LgoKCSogZGxscy9hZHZhcGkzMi9zZXJ2aWNlLmM6IEFsZXhhbmRlciBZYXdvcnNreSA8eWF3b3Jza3lAbWlndXNvZnQucnU+CglSZXN0cnVjdHVyZWQgY29kZSBvZiBTdGFydFNlcnZpY2VDdHJsRGlzcGF0Y2hlckEvVy4KCjIwMDQtMDktMjQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL29sZTMyL2FudGltb25pa2VyLmMsIGRsbHMvb2xlMzIvYmluZGN0eC5jLAoJICBkbGxzL29sZTMyL2NsaXBib2FyZC5jLCBkbGxzL29sZTMyL2NvbXBvc2l0ZW1vbmlrZXIuYywKCSAgZGxscy9vbGUzMi9kYXRhY2FjaGUuYywgZGxscy9vbGUzMi9kZWZhdWx0aGFuZGxlci5jLAoJICBkbGxzL29sZTMyL2ZpbGVtb25pa2VyLmMsIGRsbHMvb2xlMzIvaGdsb2JhbHN0cmVhbS5jLAoJICBkbGxzL29sZTMyL2l0ZW1tb25pa2VyLmMsIGRsbHMvb2xlMzIvbWFyc2hhbC5jLAoJICBkbGxzL29sZTMyL21lbWxvY2tieXRlcy5jLCBkbGxzL29sZTMyL21lbWxvY2tieXRlczE2LmMsCgkgIGRsbHMvb2xlMzIvbW9uaWtlci5jLCBkbGxzL29sZTMyL29sZW9iai5jLCBkbGxzL29sZTMyL29sZXByb3h5LmMsCgkgIGRsbHMvb2xlMzIvcnBjLmMsIGRsbHMvb2xlMzIvc3RnX3N0cmVhbS5jLCBkbGxzL29sZTMyL3N0b3JhZ2UuYywKCSAgZGxscy9vbGUzMi9zdG9yYWdlMzIuYywgZGxscy9vbGVhdXQzMi9jb25ucHQuYywKCSAgZGxscy9vbGVhdXQzMi9kaXNwYXRjaC5jLCBkbGxzL3VybG1vbi91bW9uLmM6CglKb3JpcyBIdWl6ZXIgPGpvcmlzaHVpemVyQHBsYW5ldC5ubD4KCVJlZiBjb3VudCBpbmNyZW1lbnQvZGVjcmVtZW50IGNsZWFudXAuCgoJKiB3aW5kb3dzL3N5c3BhcmFtcy5jOiBIYWppbWUgU2VnYXdhIDx3aW5ldGlwc0BzaWRlbmV0LmRkby5qcD4KCUFkZGVkIFN0YXR1c0ZvbnRTaXplIGFuZCBNZXNzYWdlRm9udFNpemUgZW50cmllcyBpbiB3aW4uaW5pLgoKCSogZGxscy9nZGkvZ2Rpb2JqLmM6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglVc2UgYSAoc2VlbWluZ2x5IHhwIGRlZmF1bHQpIHdpZHRoIG9mIDcgZm9yIHN5c3RlbSBmb250cy4KCgkqIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYywgZGxscy9zaGVsbDMyL3NocmVzLnJjOgoJTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCS0gVXNlIHN5c3RlbSBtZXRyaWNzIHRvIGRldGVybWluZSBpY29uIHNpemVzLgoJLSBNb3ZlIGludmFsaWQgaW5kZXggZnJvbSAxIHRvIDAuCgoJKiBsb2FkZXIvcHJlbG9hZGVyLmM6CglTdXBwb3J0IGNvbXBpbGluZyB3aXRoIC1mUElDIGZvciBwZW9wbGUgd2hvIHNvbWVob3cgdGhpbmsgdGhpcyBpcyBhCglnb29kIGlkZWEuCgoJKiBkb2N1bWVudGF0aW9uL3dpbmVsaWItaW50cm8uc2dtbDoKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCUNoYW5nZSB0aGUgc2FtcGxlIGFwcCBmcm9tIHdpbmVtaW5lIHRvIG5vdGVwYWQgZm9yIHdpbmVtYWtlciBpbiB0aGUKCVdpbmVsaWIgVXNlciBHdWlkZS4KCgkqIGRsbHMvdXNlci9tZW51LmMsIGluY2x1ZGUvd2ludXNlci5oOgoJUmljaGFyZCBDb2hlbiA8cmljaGFyZEBkYWlqb2J1LmNvLnVrPgoJTWVudUl0ZW1Gcm9tUG9pbnQgc2hvdWxkbid0IGNyYXNoIGlmIHRoZXJlJ3Mgbm8gbWVudS4KCgkqIGRsbHMvbnRkbGwvbG9hZG9yZGVyLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglNYWtlIFdJTkVETExPVkVSUklERVMgYWxzbyBtYXRjaCBmb3IgKmRsbC4KCjIwMDQtMDktMjMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLCBkbGxzL3dpbmluZXQvZGlhbG9ncy5jLCBpbmNsdWRlL3dpbnVzZXIuaDoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCURvbid0IGRlZmluZSBHV0xfVVNFUkRBVEEsIEdXTF9JRCwgR1dMX0hXTkRQQVJFTlQsIEdXTF9ISU5TVEFOQ0UgYW5kCglHV0xfV05EUFJPQyB3aGVuIGNvbXBpbGluZyB0aGUgV2luZSBzb3VyY2UuCgoJKiBwcm9ncmFtcy93aW5oZWxwL2hscGZpbGUuYywgcHJvZ3JhbXMvd2luaGVscC93aW5oZWxwLmM6CglLZW4gQmVsbGVhdSA8amFtZXpAaXZpYy5xYy5jYT4KCS0gUmVtb3ZlZCB0aGUgZGVwcmVjYXRlZCBPRl9TRUFSQ0ggZmxhZy4KCS0gSGFuZGxlIHF1b3RlcyBpbiBjb21tYW5kLWxpbmUgcGFyc2luZy4KCgkqIGRsbHMvd2luaW5ldC9odHRwLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCVVzZSBkeW5hbWljYWxseSBhbGxvY2F0ZWQgaGVhcCBhbGxvY2F0ZWQgYnVmZmVycyBpbgoJSFRUUF9JbnRlcnByZXRIVFRQSGVhZGVyIHRvIGF2b2lkIGJ1ZmZlciBvdmVyZmxvdyBvbiBsYXJnZSBoZWFkZXJzLgoKCSogZGxscy93aW5pbmV0L2ludGVybmV0LmMsIGRsbHMvd2luaW5ldC90ZXN0cy9odHRwLmM6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIERvbid0IGNyYXNoIG9uIGRvdWJsZSBJbnRlcm5ldENsb3NlSGFuZGxlLgoJLSBUZXN0IGNhc2UgZm9yIHRoaXMuCgoJKiBkbGxzL3VzZXIvdGVzdHMvd2luLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CgktIFNraXAgc2hlbGwgd2luZG93IHRlc3Qgb24gV2luOXggYW5kIHJlc3RvcmUgaXRzIGZ1bmN0aW9uYWxpdHkgb24gTlQKCSAgcGxhdGZvcm1zLgoJLSBVc2Uga2V5YmRfZXZlbnQgaW5zdGVhZCBvZiBTZW5kSW5wdXQgaW4gb3JkZXIgdG8gcGVyZm9ybSBrZXlib2FyZAoJICBpbnB1dCB0ZXN0IG9uIFdpbjk1IGFzIHdlbGwuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmM6IE1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CglBdCBsZWFzdCBwcmludCBtZXNzYWdlIGlmIHdlJ3JlIG5vdCByZXR1cm5pbmcgcmVxdWVzdGVkIGRhdGEuCgoJKiBkbGxzL2NvbWN0bDMyL2hvdGtleS5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIE1ha2UgdGhlIGNvbnRyb2wgbG9vayBtb3JlIGxpa2UgbmF0aXZlIGJ5IHVzaW5nIHRoZSByaWdodCBmb250IGFuZAoJICBzcGFjaW5nLgoJLSBVc2UgVGV4dE91dFcgcmF0aGVyIHRoYW4gRHJhd1RleHRXIGFzIHdlIGRvbid0IHVzZSBhbnkgZmVhdHVyZXMgb2YKCSAgRHJhd1RleHRXLgoJLSBGaXggY2FyZXQgc2l6ZSBhbmQgcG9zaXRpb24uCgktIEltcGxlbWVudCBXTV9DSEFSIGFuZCBXTV9TWVNDSEFSIG1lc3NhZ2VzLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOiBGaWxpcCBOYXZhcmEgPHhuYXZhcmFAdm9sbnkuY3o+CglGaXggb2J2aW91c2x5IHdyb25nIGNvbmRpdGlvbiBpbiBhbiAiaWYiIHN0YXRlbWVudC4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOiBGaWxpcCBOYXZhcmEgPHhuYXZhcmFAdm9sbnkuY3o+CglBZGQgbm90ZSBhYm91dCB1bmltcGxlbWVudGVkIFRCX1NBVkVSRVNUT1JFIG1lc3NhZ2UuCgoJKiBkbGxzL2NvbW1kbGcvZm9udGRsZy5jOiBTdGV2ZW4gRWR3YXJkcyA8c3RldmVuX2VkNDE1M0B5YWhvby5jb20+CglSZW1vdmUgdW5uZWVkZWQgaW5jbHVkZSBzdGF0ZW1lbnRzLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGluY2x1ZGUvY29uZmlnLmguaW4sIHNlcnZlci9mZC5jOgoJQWRkZWQgc3VwcG9ydCBmb3IgZXBvbGwoKSBhcyBhbiBhbHRlcm5hdGl2ZSB0byBwb2xsKCkgKGJhc2VkIG9uIHRoZQoJd29yayBvZiBTaGFjaGFyIFNoZW1lc2ggYW5kIE1pa2UgTWNDb3JtYWNrKS4KCgkqIGRsbHMvZDNkOS9NYWtlZmlsZS5pbiwgZGxscy9kM2Q5L2QzZDlfbWFpbi5jLAoJICBkbGxzL2QzZDkvZDNkOV9wcml2YXRlLmgsIGRsbHMvZDNkOS9kaXJlY3R4LmMsCgkgIGRsbHMvd2luZWQzZC9NYWtlZmlsZS5pbiwgZGxscy93aW5lZDNkL2RpcmVjdHguYywKCSAgZGxscy93aW5lZDNkL3ZlcnRleHNoYWRlci5jLCBkbGxzL3dpbmVkM2Qvd2luZWQzZC5zcGVjLAoJICBkbGxzL3dpbmVkM2Qvd2luZWQzZF9tYWluLmMsIGRsbHMvd2luZWQzZC93aW5lZDNkX3ByaXZhdGUuaCwKCSAgaW5jbHVkZS93aW5lL3dpbmVkM2RfaW50ZXJmYWNlLmg6CglKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJQ3JlYXRlIGEgd2luZWQzZCBpbnRlcmZhY2UsIGFuZCBnZW5lcmF0ZSBhIHdpbmVkM2Qgb2JqZWN0IGluIHRoZSBkM2Q5CgljcmVhdGUgbWV0aG9kLiBNYWtlIHRoZSBmaXJzdCAoc2ltcGxlKSBjYWxsIGltcGxlbWVudGF0aW9uIGludG8gdGhlCgluZXcgd2luZWQzZCBpbnRlcmZhY2UuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9EZS5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfRW4ucmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0VzLnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9JdC5yYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfSmEucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX1B0LnJjLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9Vay5yYzoKCUdlIHZhbiBHZWxkb3JwIDxndmdAcmVhY3Rvcy5jb20+CglTb21lIHdpbmRyZXMgdmVyc2lvbnMgZG9uJ3QgbGlrZSBQT1BVUCIiLCBjaGFuZ2UgdG8gUE9QVVAgIiIuCgoJKiBkbGxzL2RiZ2hlbHAvc3RhY2suYywgcHJvZ3JhbXMvd2luZWRiZy9zdGFjay5jOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJRml4IGRlYnVnZ2VyIGZvciBmbGF0IFBDIGFuZCBub24tZmxhdCBmcmFtZS4KCgkqIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYzogU3RldmVuIEVkd2FyZHMgPHN0ZXZlbl9lZDQxNTNAeWFob28uY29tPgoJUmVtb3ZlIHNvbWUgdW5uZWVkZWQgaW5jbHVkZSBzdGF0ZW1lbnRzLgoKCSogdG9vbHMvd2luYXBpL21zdmNtYWtlcjogU3RldmVuIEVkd2FyZHMgPHN0ZXZlbl9lZDQxNTNAeWFob28uY29tPgoJRGVmaW5lIF9XSU4zMl9XSU5OVCBhbmQgX1dJTjMyX0lFIHZlcnNpb25zIGZvciBNU19WQyBCdWlsZC4KCjIwMDQtMDktMjIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL2RlZnduZC5jLCB3aW5kb3dzL2RpYWxvZy5jLCB3aW5kb3dzL21kaS5jLCB3aW5kb3dzL21lc3NhZ2UuYywKCSAgd2luZG93cy93aW4uYywgd2luZG93cy93aW5wcm9jLmMsIGRsbHMvY29tbWRsZy9jb2xvcmRsZzE2LmMsCgkgIGRsbHMvY29tbWRsZy9maWxlZGxnLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnMTYuYywKCSAgZGxscy9jb21tZGxnL2ZpbmRkbGcuYywgZGxscy9jb21tZGxnL2ZvbnRkbGcxNi5jLAoJICBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYywgZGxscy9jb21tZGxnL3ByaW50ZGxnMTYuYzoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUdldFdpbmRvd0xvbmcgLT4gR2V0V2luZG93TG9uZ1B0ci4KCgkqIGRsbHMvbnRkbGwvcmVzb3VyY2UuYzogUmljaGFyZCBDb2hlbiA8cmljaGFyZEBkYWlqb2J1LmNvLnVrPgoJTW92ZSBUUkFDRSBpbnNpZGUgVFJZIGJsb2NrLgoKCSogZGxscy9tc2FjbS9tc2FjbS5yYywgZGxscy9tc2FjbS9tc2FjbV9QbC5yYywKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbnNvbGVfUGwucmMsCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25zb2xlX3Jlcy5yYywgcHJvZ3JhbXMvd2luZWZpbGUvUGwucmMsCgkgIHByb2dyYW1zL3dpbmVmaWxlL3JzcmMucmMsIHByb2dyYW1zL3dpbmhlbHAvUGwucmMsCgkgIHByb2dyYW1zL3dpbmhlbHAvcnNyYy5yYzoKCVBpb3RyIENhYmFuIDxwaW8xM0Bwb2N6dGEub25ldC5wbD4KCUFkZGVkIFBvbGlzaCB0cmFuc2xhdGlvbi4KCgkqIGFjbG9jYWwubTQsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjOgoJV2FycmVuIEJhaXJkIDx3YXJyZW4uYmFpcmRAY2ltbWV0cnkuY29tPgoJRml4IGF1dG9jb25mIHRvIGhhdmUgYSBuZXcgV0lORV9UUllfU0hMSUJfRkxBR1MgZnVuY3Rpb24gdGhhdCB0ZXN0cyBpZgoJdGhlIHByb3ZpZGVkIGZsYWdzIGNhbiBiZSB1c2VkIHRvIGxpbmsgYSBzaGFyZWQgbGlicmFyeS4KCUFkZGVkIHRlc3QgZm9yIGJ1aWxkaW5nIHNoYXJlZCBsaWJzIG9uIEhQLVVYIHdpdGggZ2NjLgoKCSogZGxscy9zaGVsbDMyL2F1dG9jb21wbGV0ZS5jLCBkbGxzL3NoZWxsMzIvZGlhbG9ncy5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmMsCgkgIGRsbHMveDExZHJ2L2Rlc2t0b3AuYywgZGxscy94MTFkcnYvd2luZG93LmMsIGRsbHMveDExZHJ2L3gxMWRkcmF3LmMsCgkgIGRsbHMvdXNlci9kaWFsb2cxNi5jLCBkbGxzL3VzZXIvbWVzc2FnZS5jLCBkbGxzL3VzZXIvbXNnMTYuYzoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUdldFdpbmRvd0xvbmcgLT4gR2V0V2luZG93TG9uZ1B0ci4KCgkqIGRsbHMvbWxhbmcvbWxhbmcuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2UgbWxhbmcgcmV0dXJuIHRoZSBzYW1lIGNvZGUgcGFnZSBkZXNjcmlwdGlvbnMgYXMgV2luZG93cywgc29tZQoJYXBwbGljYXRpb25zIGRlcGVuZCBvbiBpdC4KCgkqIHByb2dyYW1zL3dpbmVtaW5lL0RlLnJjLCBwcm9ncmFtcy93aW5lbWluZS9Fbi5yYywKCSAgcHJvZ3JhbXMvd2luZW1pbmUvRXMucmMsIHByb2dyYW1zL3dpbmVtaW5lL0ZyLnJjLAoJICBwcm9ncmFtcy93aW5lbWluZS9JdC5yYywgcHJvZ3JhbXMvd2luZW1pbmUvTmwucmMsCgkgIHByb2dyYW1zL3dpbmVtaW5lL1B0LnJjLCBwcm9ncmFtcy93aW5lbWluZS9SdS5yYywKCSAgcHJvZ3JhbXMvd2luZW1pbmUvU2kucmMsIHByb2dyYW1zL3dpbmVtaW5lL21haW4uYzoKCVJpY2hhcmQgQ29oZW4gPHJpY2hhcmRAZGFpam9idS5jby51az4KCS0gUmVtb3ZlIG9ic29sZXRlIGhhbmRsaW5nIG9mIFdJTkVfU1RSSUNUL05VTExfSEFORExFLgoJLSBBbGxvdyBtb3JlIGNoYXJhY3RlcnMgZm9yIFdpbmRvdyB0aXRsZSAoZm9yIEZyIGxvY2FsZSkuCgktIEhhcmRjb2RlIHRoZSBpY29uIG5hbWUgLSBzbyB0aGF0IGl0J3MgaW5kZXBlbmRlbnQgb2YgbG9jYWxlLgoJLSBTaG9ydGVuIHRoZSB0ZXh0IGluIHRoZSBBYm91dCBib3ggc28gdGhhdCBpdCBkb2Vzbid0IHdyYXAuCgktIFVzZSBIS0NVIGluc3RlYWQgb2YgSEtMTSBmb3Igc2F2aW5nIHN0dWZmLgoJLSBTYXZlIFlQb3MgcHJvcGVybHkuCgktIHVzZSBBZGp1c3RXaW5kb3dSZWN0IGluc3RlYWQgb2YgY2FsY3VsYXRpbmcgdGhlIHdpbmRvdyBzaXplIHVzaW5nCgkgIEdldFN5c3RlbU1ldHJpY3MKCS0gQ29wZSB3aXRoIHRoZSB1c2VyIG1vdmluZyB0aGUgd2luZG93IG9mZnNjcmVlbiBhbmQgbW92ZSBpdCBiYWNrLgoKCSogcHJvZ3JhbXMvd2luZWNvbnNvbGUvdXNlci5jOiBSaWNoYXJkIENvaGVuIDxyaWNoYXJkQGRhaWpvYnUuY28udWs+CglDaGFuZ2UgdmFyaWFibGUgbmFtZSBmcm9tIGwgdG8gay4KCgkqIGRsbHMvb2xlYXV0MzIvdGVzdHMvdmFydHlwZS5jLCBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYzoKCUh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglEb24ndCB0cmFzaCB0aGUgZHN0IHZhcmlhbnQgaWYgd2UgY2FuJ3QgZG8gdGhlIHR5cGUgY29udmVyc2lvbi4KCUFkZCBhIHRlc3QgZm9yIHRoaXMuCgoJKiBwcm9ncmFtcy93aW5lZmlsZS93aW5lZmlsZS5jLCBwcm9ncmFtcy93aW5lZmlsZS93aW5lZmlsZS5oOgoJTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCS0gSGFuZGxlICIuIiBhbmQgIi4uIiBhcyBzcGVjaWFsIGNhc2UgYW5kIG1vdmUgdGhlbSBhdCB0aGUgdmVyeSBmaXJzdAoJICBiZWdpbm5pbmcgb2YgZGlyZWN0b3J5IGxpc3RpbmdzLgoJLSBSZW1vdmUgdW51c2VkIHZhcmlhYmxlIHdTdHJpbmdUYWJsZU9mZnNldC4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYzogTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCVN0b3JlIGFic29sdXRlIHBhdGggaW4gLmxuayBmaWxlLgoKCSogZGxscy9jb21tZGxnL3ByaW50ZGxnLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglBdm9pZCBXLT5BIHRyYW5zaXRpb25zLgoKCSogZGxscy9jb21jdGwzMi9jb21tY3RybC5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJV2Ugbm93IGhhdmUgSUNDX0xJTktfQ0xBU1MuCgoJKiBERVZFTE9QRVJTLUhJTlRTOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJV2Ugbm8gbG9uZ2VyIGhhdmUgYSBzZXBhcmF0ZSBzZXR1cHgvIERMTCBkaXIuCgoJKiBkbGxzL2NvbWN0bDMyL3N0cmluZy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQ2xlYW51cCBXLT5BIHRyYW5zaXRpb24uCgoJKiBkbGxzL3NobHdhcGkvdXJsLmMsIGluY2x1ZGUvc2hsd2FwaS5oOgoJU3RldmVuIEVkd2FyZHMgPHN0ZXZlbl9lZDQxNTNAeWFob28uY29tPgoJTW92ZSBVUkxfU0NIRU1FIHR5cGVkZWYgdG8gbWF0Y2ggUFNESy4KCgkqIERFVkVMT1BFUlMtSElOVFMsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL01ha2VmaWxlLmluLAoJICBkbGxzL21zY21zLy5jdnNpZ25vcmUsIGRsbHMvbXNjbXMvTWFrZWZpbGUuaW4sIGRsbHMvbXNjbXMvbXNjbXMuc3BlYywKCSAgZGxscy9tc2Ntcy9tc2Ntc19tYWluLmMsIGluY2x1ZGUvY29uZmlnLmguaW4sIGluY2x1ZGUvaWNtLmg6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCUJlZ2lubmluZ3Mgb2YgYW4gTVNDTVMgaW1wbGVtZW50YXRpb24gYmFzZWQgb24gTGl0dGxlQ01TLgoKCSogZGxscy9vbGVhdXQzMi9vbGVwaWN0dXJlLmM6CglBbGV4IFZpbGxhY+1zIExhc3NvIDxhX3ZpbGxhY2lzQHBhbG9zYW50by5jb20+CglQYXJ0aWFsIGltcGxlbWVudGF0aW9uIGZvciBPTEVQaWN0dXJlSW1wbF9TYXZlLgoKCSogZGxscy9udGRsbC92aXJ0dWFsLmM6IEFsZXhhbmRlciBZYXdvcnNreSA8eWF3b3Jza3lAbWlndXNvZnQucnU+CglNb3ZlZCBUUkFDRXMgdG8gdGhlIGJlZ2lubmluZyBvZiBmdW5jdGlvbnMuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmM6IE1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CglJbXBsZW1lbnQgSVNoZWxsTGlua0E6OlJlc29sdmUgYW5kIElTaGVsbExpbmtXOjpSZXNvbHZlLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBkbGxzL3NoZWxsMzIvdmVyc2lvbi5oLAoJICBkbGxzL3NoZWxsMzIvdmVyc2lvbi5yYzoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCVNoYXJlIHZlcnNpb24gaW5mb3JtYXRpb24gYmV0d2VlbiBEbGxHZXRWZXJzaW9uIGFuZCByZXNvdXJjZSBmaWxlLgoKCSogZGxscy93aW5tbS9sb2x2bGRydi5jOiBSZXZlcnQgYnJva2VuIGNoYW5nZSBpbiBwcmV2aW91cyBwYXRjaC4KCgkqIGRsbHMva2VybmVsL3RocmVhZC5jOiBBbGV4YW5kZXIgWWF3b3Jza3kgPHlhd29yc2t5QG1pZ3Vzb2Z0LnJ1PgoJTW92ZWQgY29kZSBmcm9tIENyZWF0ZVRocmVhZCB0byBDcmVhdGVSZW1vdGVUaHJlYWQuCgoJKiBkbGxzL29sZTMyL3N0b3JhZ2UuYywgZGxscy9vbGUzMi9zdG9yYWdlMzIuYywKCSAgZGxscy9vbGUzMi90ZXN0cy9wcm9wdmFyaWFudC5jLCBkbGxzL29sZWF1dDMyL29sZXBpY3R1cmUuYywKCSAgZGxscy9vcGVuZ2wzMi93Z2wuYywgZGxscy9xdWFydHovZW51bXJlZ2ZpbHRlcnMuYywKCSAgZGxscy9xdWFydHovZmlsdGVybWFwcGVyLmMsIGRsbHMvcXVhcnR6L21haW4uYywKCSAgZGxscy9yaWNoZWRpdC9yZWFkZXIuYywgZGxscy9ycGNydDQvcnBjX3NlcnZlci5jLAoJICBkbGxzL3JwY3J0NC9ycGNydDRfbWFpbi5jLCBkbGxzL3NlcmlhbHVpL2NvbmZkbGcuYywKCSAgZGxscy9zZXR1cGFwaS9kaXNrc3BhY2UuYywgZGxscy9zZXR1cGFwaS9wYXJzZXIuYywKCSAgZGxscy9zZXR1cGFwaS9xdWV1ZS5jLCBkbGxzL3R0eWRydi9wYWxldHRlLmMsIGRsbHMvdXJsbW9uL3Vtb24uYywKCSAgZGxscy91c2VyL2NvbW0xNi5jLCBkbGxzL3VzZXIvdGVzdHMvbXNnLmMsIGRsbHMvdXh0aGVtZS9zdHlsZW1hcC5jLAoJICBkbGxzL3V4dGhlbWUvc3lzdGVtLmMsIGRsbHMvd2luZWRvcy9kb3Njb25mLmMsIGRsbHMvd2luZWRvcy9pbnQyMS5jLAoJICBkbGxzL3dpbmVkb3MvaW9wb3J0cy5jLCBkbGxzL3dpbmVkb3MvdmdhLmMsIGRsbHMvd2luZWRvcy92eGQuYywKCSAgZGxscy93aW5lcHMvY2xpcHBpbmcuYywgZGxscy93aW5lcHMvZ3JhcGhpY3MuYywgZGxscy93aW5lcHMvcHMuYywKCSAgZGxscy93aW5lcHMvdGV4dC5jLCBkbGxzL3dpbmVwcy90eXBlMWFmbS5jLCBkbGxzL3dpbmVwcy90eXBlNDIuYywKCSAgZGxscy93aW5tbS9sb2x2bGRydi5jLCBkbGxzL3dpbm1tL21tc3lzdGVtLmMsIGRsbHMvd2lubW0vd2lubW0uYywKCSAgZGxscy93aW5zb2NrL3NvY2tldC5jLCBkbGxzL3dpbnRhYjMyL2NvbnRleHQuYywgbGlicy93aW5lL2RlYnVnLmMsCgkgIHByb2dyYW1zL2F2aXRvb2xzL2F2aWluZm8uYywgcHJvZ3JhbXMvbm90ZXBhZC9kaWFsb2cuYywKCSAgcHJvZ3JhbXMvcmVnZWRpdC9saXN0dmlldy5jLCBwcm9ncmFtcy9yZWdlZGl0L3JlZ3Byb2MuYywKCSAgcHJvZ3JhbXMvdGFza21nci9kYmdjaG5sLmMsIHByb2dyYW1zL3VuaW5zdGFsbGVyL21haW4uYywKCSAgcHJvZ3JhbXMvd2NtZC9iYXRjaC5jLCBwcm9ncmFtcy93aW5lYm9vdC93aW5lYm9vdC5jLAoJICBwcm9ncmFtcy93aW5lY2ZnL2RyaXZlLmMsIHByb2dyYW1zL3dpbmVjb25zb2xlL2N1cnNlcy5jLAoJICBwcm9ncmFtcy93aW5lZGJnL2JyZWFrLmMsIHByb2dyYW1zL3dpbmVtZW51YnVpbGRlci93aW5lbWVudWJ1aWxkZXIuYywKCSAgcHJvZ3JhbXMvd2luZW1pbmUvbWFpbi5jLCBwcm9ncmFtcy93aW5oZWxwL3dpbmhlbHAuYywKCSAgc2VydmVyL3JlZ2lzdHJ5LmMsIHNlcnZlci90cmFjZS5jOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglGaXggc2lnbmVkL3Vuc2lnbmVkIGNvbXBhcmlzb24gd2FybmluZ3MuCgoyMDA0LTA5LTIxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS93aW5lL3VuaWNvZGUuaDoKCUdldCByaWQgb2YgdGhlIGFzc2VtYmx5IGNvZGUsIGl0IGRvZXNuJ3QgcmVhbGx5IGltcHJvdmUgYW55dGhpbmcKCShyZXBvcnRlZCBieSBSZWluIEtsYXplcykuCgoJKiBwcm9ncmFtcy93aW5lbWVudWJ1aWxkZXIvd2luZW1lbnVidWlsZGVyLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQWRkIHN1cHBvcnQgZm9yIHRoZSBDU0lETF9DT01NT05fKiBsb2NhdGlvbnMuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglGaXggQ1NJRExfQ09NTU9OX3tTVEFSVE1FTlUsUFJPR1JBTVMsREVTS1RPUERJUkVDVE9SWX0gc28gdGhleSBhbGwgdXNlCglwYXRocyBpbiAnQWxsIFVzZXJzJyBsaWtlIENTSURMX0NPTU1PTl9TVEFSVFVQLgoJVGhlIENTSURMX0NPTU1PTl9QUk9HUkFNUyBmaXggc29sdmVzIG1hbnkgbWVudSBjcmVhdGlvbiBwcm9ibGVtcy4KCgkqIGRsbHMvY29tY3RsMzIvaG90a2V5LmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gU3RhdHVzIHVwZGF0ZS4KCS0gU2hvdWxkIGNyZWF0ZSBIT1RLRVlfSU5GTyBzdG9yYWdlIGluIFdNX05DQ1JFQVRFIHJhdGhlciB0aGFuIGluCgkgIFdNX0NSRUFURSBzbyB0aGF0IHdlIGNhbiBhbHNvIGFkZCB0aGUgV1NfRVhfQ0xJRU5URURHRSBzdHlsZS4KCS0gUmVtb3ZlIGNvZGUgdGhhdCBkcmF3cyB0aGUgY2xpZW50IGVkZ2U7IGl0IGlzIGFscmVhZHkgZHJhd24gYnkKCSAgRGVmV2luZG93UHJvYy4KCgkqIGRsbHMvc2hlbGwzMi9zaHZfaXRlbV9jbWVudS5jOiBNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJTWF0Y2ggY2xhc3MgbmFtZSB1c2VkIGJ5IFdpbmRvd3MuCgoJKiB0b29scy93aWRsL3Byb3h5LmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVZhcmlvdXMgZm9ybWF0dGluZyBmaXhlcy4KCgkqIGRsbHMvZGlucHV0L2tleWJvYXJkLmMsIGRsbHMvZGlucHV0L21vdXNlLmM6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQWRkIGR4MyBjYXBhYmlsaXRpZXMuCgoJKiBkbGxzL2QzZDgvZGlyZWN0eC5jOiBKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJRG9uJ3QgaGlkZSBhbmQgcmVzdG9yZSB0aGUgd2luZG93IHdoZW4gY2hhbmdpbmcgaXQgdG8gYmUgYSBwb3B1cAoJc3R5bGUuCgoJKiB3aW5kb3dzL21kaS5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRml4IFdNX01ESVJFRlJFU0hNRU5VIGZvciB0aGUgY2FzZSB3aGVuIHNlcGFyYXRvciBpcyBhdCB0aGUgcG9zaXRpb24KCTAuCgoJKiBkbGxzL2l0c3MvLmN2c2lnbm9yZSwgZGxscy9vbGUzMi8uY3ZzaWdub3JlLCBpbmNsdWRlLy5jdnNpZ25vcmU6CglJZ25vcmUgdGhlIGdlbmVyYXRlZCBoZWFkZXIgZmlsZXMuCgoJKiBNYWtlLnJ1bGVzLmluLCBNYWtlZmlsZS5pbiwgZGxscy9pdHNzL01ha2VmaWxlLmluLCBkbGxzL2l0c3MvaXRzcy5oLAoJICBkbGxzL29sZTMyL01ha2VmaWxlLmluLCBkbGxzL29sZTMyL2Rjb20uaCwgaW5jbHVkZS9NYWtlZmlsZS5pbiwKCSAgaW5jbHVkZS9hY3RpdnNjcC5oLCBpbmNsdWRlL2Ftc3RyZWFtLmgsIGluY2x1ZGUvYW12aWRlby5oLAoJICBpbmNsdWRlL2F1c3RyZWFtLmgsIGluY2x1ZGUvY29tY2F0LmgsIGluY2x1ZGUvZGRzdHJlYW0uaCwKCSAgaW5jbHVkZS9kaXNwZXguaCwgaW5jbHVkZS9kb2NvYmouaCwgaW5jbHVkZS9leGRpc3AuaCwKCSAgaW5jbHVkZS9tbGFuZy5oLCBpbmNsdWRlL21tc3RyZWFtLmgsIGluY2x1ZGUvb2FpZGwuaCwKCSAgaW5jbHVkZS9vYmppZGwuaCwgaW5jbHVkZS9vY2lkbC5oLCBpbmNsdWRlL29sZWlkbC5oLAoJICBpbmNsdWRlL3Byb3BpZGwuaCwgaW5jbHVkZS9wc3RvcmUuaCwgaW5jbHVkZS9zZXJ2cHJvdi5oLAoJICBpbmNsdWRlL3NobGRpc3AuaCwgaW5jbHVkZS9zaG9iamlkbC5oLCBpbmNsdWRlL3NodHlwZXMuaCwKCSAgaW5jbHVkZS9zdHJtaWYuaCwgaW5jbHVkZS91bmtud24uaCwgaW5jbHVkZS91cmxtb24uaCwKCSAgaW5jbHVkZS93dHlwZXMuaDoKCUJ1aWxkIHRoZSAuaCBmaWxlcyBmcm9tIHRoZWlyIGlkbCBzb3VyY2UgYXQgY29tcGlsZSB0aW1lLCBhbmQgcmVtb3ZlCgl0aGVtIGZyb20gQ1ZTLgoKCSogZGxscy9vbGVhdXQzMi9vbGVmb250LmMsIGRsbHMvb2xlYXV0MzIvb2xlcGljdHVyZS5jOgoJSmFtZXMgSGF3a2lucyA8dHJ1aWtlbkBnbWFpbC5jb20+CglVc2UgSW50ZXJsb2NrZWREZWNyZW1lbnQgYW5kIEludGVybG9ja2VkSW5jcmVtZW50IGluc3RlYWQgb2YgKysvLS0uCgoJKiBkbGxzL3VzZXIvdGVzdHMvbXNnLmMsIHdpbmRvd3MvbWRpLmMsIHdpbmRvd3Mvd2luLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJTWFrZSBtZXNzYWdlIGZsb3cgZm9yIE1ESSBjcmVhdGlvbi9hY3RpdmF0aW9uL2Rlc3RydWN0aW9uIG1vcmUgbGlrZSBpbgoJV2luZG93cy4gQWRkIGEgYnVuY2ggb2YgTURJIG1lc3NhZ2UgdGVzdHMuCgoJKiBkbGxzL250ZGxsL250ZGxsX21pc2MuaCwgZGxscy9udGRsbC90aHJlYWQuYywgZGxscy9udGRsbC92aXJ0dWFsLmM6CglBbGV4YW5kZXIgWWF3b3Jza3kgPHlhd29yc2t5QG1pZ3Vzb2Z0LnJ1PgoJTWFrZSBSdGxDcmVhdGVVc2VyVGhyZWFkIGZhaWwgaWYgcHJvY2VzcyBoYW5kbGUgaXMgbm90IGZvciB0aGUgY3VycmVudAoJcHJvY2Vzcy4KCgkqIGRsbHMvYWR2YXBpMzIvc2VydmljZS5jOiBBbGV4YW5kZXIgWWF3b3Jza3kgPHlhd29yc2t5QG1pZ3Vzb2Z0LnJ1PgoJUGFzcyBhcmd1bWVudHMgdG8gdGhlIHNlcnZpY2UgcHJvZ3JhbS4KCjIwMDQtMDktMjAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBwcm9ncmFtcy9tc2lleGVjL21zaWV4ZWMuYzoKCUFkZGVkIC9yZWdzZXJ2ZXIgYW5kIC91bnJlZ3NlcnZlciBvcHRpb25zLgoKCSogTWFrZS5ydWxlcy5pbiwgTWFrZWZpbGUuaW4sIGRsbHMvaXRzcy9NYWtlZmlsZS5pbiwKCSAgZGxscy9vbGUzMi9NYWtlZmlsZS5pbiwgaW5jbHVkZS9NYWtlZmlsZS5pbjoKCUJ1aWxkIGlkbCBmaWxlcyBhcyBwYXJ0IG9mIHRoZSBub3JtYWwgYnVpbGQgcHJvY2Vzcy4KCgkqIGRsbHMvc2hlbGwzMi9zaHZfaXRlbV9jbWVudS5jOiBNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJQ29ycmVjdCBzZXR0aW5nIG9mIGRlZmF1bHQgbWVudSBpdGVtIGluIHNoZWxsIGNvbnRleHQgbWVudXMuCgoJKiBmb250cy8uY3ZzaWdub3JlLCBmb250cy9NYWtlZmlsZS5pbiwgZm9udHMvd2luZV9zYW5zX3NlcmlmLnNmZDoKCUh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglBZGQgYSAyMCBwcGVtIHN0cmlrZSB3aXRoIGNwMTI1MiBjb3ZlcmFnZSB0byBXaW5lIFNhbnMgU2VyaWYuCglBZGQgVSsyMDFhIHRvIGFsbCBzdHJpa2VzLgoKCSogZGxscy91c2VyL2NvbnRyb2xzLmgsIGRsbHMvdXNlci9tZW51LmMsIHdpbmRvd3Mvd2luLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJTWFrZSBtZW51IGNvZGUgY29wZSB3aXRoIFdNX1NZU0tFWSovV01fU1lTQ0hBUiBtZXNzYWdlcy4KCVVuYmxvY2sgbWVudSBsb29wIGlmIGEgd2luZG93IGJlaW5nIGRlc3Ryb3llZCBvd25zIGEgdHJhY2tlZCBtZW51LgoKCSogZGxscy9nZGkvZGliLmMsIHdpbmRvd3MvY3Vyc29yaWNvbi5jOgoJTWljaGFlbCBLYXVmbWFubiA8aGFsbG9AbWljaGFlbC1rYXVmbWFubi5jaD4KCUZpeCBhIHJlZ3Jlc3Npb24gY2F1c2VkIGJ5IGFuIGVhcmxpZXIgcGF0Y2ggZm9yIENyZWF0ZURJQml0bWFwLgoKCSogZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvb2xlMzIuc3BlYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUNvU3VzcGVuZENsYXNzT2JqZWN0cyBzdHViIGltcGxlbWVudGF0aW9uLgoKCSogaW5jbHVkZS93aW5zdmMuaDogQWxleGFuZGVyIFlhd29yc2t5IDx5YXdvcnNreUBtaWd1c29mdC5ydT4KCUFkZGVkIHNlcnZpY2UgZGF0YWJhc2UgbmFtZXMuCgoJKiBkbGxzL3F1YXJ0ei9maWx0ZXJtYXBwZXIuYzogQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJQWRkZWQgc3VwcG9ydCBmb3IgUkVHRklMVEVSMiBzdHJ1Y3R1cmUgd2l0aCBkd1ZlcnNpb24gZXF1YWwgdG8gMSB3aGVuCglyZWdpc3RlcmluZyBmaWx0ZXJzLgoJRml4ZWQgZGVmYXVsdCBjYXRlZ29yeSB3aGVuIFJlZ2lzdGVyRmlsdGVyIGlzIGNhbGxlZCB3aXRob3V0IG9uZQoJc3BlY2lmaWVkLgoKCSogZGxscy93aW5pbmV0L2h0dHAuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJQWx3YXlzIHJlcGxhY2Ugd2hhdGV2ZXIgaXMgYWxyZWFkeSBpbiB0aGUgSFRUUCAiSG9zdCIgaGVhZGVyLgoKCSogc2VydmVyL2ZkLmM6IE1vdmVkIHRpbWVvdXQgcHJvY2Vzc2luZyB0byBhIHNlcGFyYXRlIGZ1bmN0aW9uLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGxfQ24ucmMsIGRsbHMvY29tY3RsMzIvY29tY3RsX0NzLnJjLAoJICBkbGxzL2NvbWN0bDMyL2NvbWN0bF9EZS5yYywgZGxscy9jb21jdGwzMi9jb21jdGxfRW4ucmMsCgkgIGRsbHMvY29tY3RsMzIvY29tY3RsX0VzLnJjLCBkbGxzL2NvbWN0bDMyL2NvbWN0bF9Gci5yYywKCSAgZGxscy9jb21jdGwzMi9jb21jdGxfSXQucmMsIGRsbHMvY29tY3RsMzIvY29tY3RsX0phLnJjLAoJICBkbGxzL2NvbWN0bDMyL2NvbWN0bF9Lby5yYywgZGxscy9jb21jdGwzMi9jb21jdGxfTmwucmMsCgkgIGRsbHMvY29tY3RsMzIvY29tY3RsX1BsLnJjLCBkbGxzL2NvbWN0bDMyL2NvbWN0bF9QdC5yYywKCSAgZGxscy9jb21jdGwzMi9jb21jdGxfUnUucmMsIGRsbHMvY29tY3RsMzIvY29tY3RsX1NpLnJjLAoJICBkbGxzL2NvbWN0bDMyL2NvbWN0bF9UaC5yYywgZGxscy9jb21jdGwzMi9jb21jdGxfVWsucmMsCgkgIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmM6CglGaWxpcCBOYXZhcmEgPHhuYXZhcmFAdm9sbnkuY3o+CgktIEltcGxlbWVudCBQU01fSU5ERVhUT0lELCBQU01fSU5ERVhUT1BBR0UgYW5kIFBTTV9QQUdFVE9JTkRFWCBtZXNzYWdlcy4KCS0gUGFydGlhbGx5IGltcGxlbWVudCB0aGUgUFNIX1dJWkFSRENPTlRFWFRIRUxQIGFuZCBQU0hfTk9DT05URVhUSEVMUAoJICBzdHlsZXMuCgoJKiBpbmNsdWRlL2NvbW1kbGcuaCwgaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2luZGVmLmgsCgkgIGluY2x1ZGUvd2luZ2RpLmgsIGluY2x1ZGUvd2ludXNlci5oLCBpbmNsdWRlL3d0eXBlcy5oLAoJICBpbmNsdWRlL3d0eXBlcy5pZGw6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJVXNlIGNvcnJlY3QgdGFnIG5hbWVzIGZvciBjb21wYXRhYmlsaXR5IHdpdGggZndkIGRlY2xzLgoJU29tZSBvbGQgY29kZSBjaGVja3MgdGhhdCBfV0lOREVGXyBpcyBkZWZpbmVkIGluIHdpbmRlZi5oLgoKCSogZGxscy9zaGVsbDMyL3NoZmxkcl9teWNvbXAuYzogTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCU1ha2UgZHJpdmUgbGV0dGVycyBpbiBQSURMcyBhbHdheXMgdXBwZXJjYXNlIHRvIGVuYWJsZSBQSURMCgljb21wYXJpc29uLgoKCSogcHJvZ3JhbXMvbm90ZXBhZC9tYWluLmM6IE1pY2hhZWwgS2F1Zm1hbm4gPGhhbGxvQG1pY2hhZWwta2F1Zm1hbm4uY2g+CglBZGRlZCBhIDNEIGJvcmRlciBmb3IgTm90ZXBhZCdzIGVkaXQgY29udHJvbC4KCgkqIGRsbHMvb2xlYXV0MzIvc2FmZWFycmF5LmMsIGRsbHMvb2xlYXV0MzIvdGVzdHMvc2FmZWFycmF5LmM6CglNYXJjdXMgTWVpc3NuZXIgPG1laXNzbmVyQG5vdmVsbC5jb20+CglTYWZlQXJyYXlHZXRFbGVtZW50IG9uIGEgVkFSSUFOVCBhcnJheSBkb2VzIG5vdCBmcmVlIHRoZSBwcmV2aW91cwoJVkFSSUFOVCBpbiB0aGUgcGFzc2VkIHBvaW50ZXIuIEFkZGVkIHRlc3RjYXNlLgoKCSogZGxscy93aW5lZG9zL2ludDMzLmMsIGRsbHMvd2luZWRvcy92Z2EuYywgZGxscy93aW5lZG9zL3ZnYS5oOgoJSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJQWRkZWQgc3VwcG9ydCBmb3IgaW50MzMgc2hvdy9oaWRlIG1vdXNlIGN1cnNvciBjYWxscy4KCgkqIHRvb2xzL3dpZGwvcGFyc2VyLnksIHRvb2xzL3dpZGwvcHJveHkuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcHJvdmUgdGhlIGhhbmRsaW5nIG9mIGNvbXBsZXggZGF0YSB0eXBlcyAoc3RyaW5ncyBhbmQgc3RydWN0cykuCgoJKiBkbGxzL3gxMWRydi9zY3JvbGwuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJWDExRFJWX1Njcm9sbERDIHNob3VsZCBub3QgaGF2ZSBhIFdJTkFQSSBhdHRyaWJ1dGUuCgoJKiBkbGxzL2NvbWN0bDMyL3BhZ2VyLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCURvY3VtZW50IHN0YXR1cyBvZiBjb250cm9sIGFnYWluc3QgdjYuMCBvZiBuYXRpdmUgdmVyc2lvbi4KCgkqIGRsbHMvd2luaW5ldC9mdHAuYywgZGxscy93aW5pbmV0L2h0dHAuYywgZGxscy93aW5pbmV0L2ludGVybmV0LmMsCgkgIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5oLCBkbGxzL3dpbmluZXQvdXRpbGl0eS5jOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJSW50ZXJuZXRTZXRTdGF0dXNDYWxsYmFjayBjYW4gYmUgdXNlZCBvbiBhbnkgaGFuZGxlIGFuZCBjYWxsYmFja3MgYXJlCglpbmhlcml0ZWQgYnkgZGVyaXZlZCBoYW5kbGVzLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gRml4IHNvbWUgVFJBQ0VzCgktIE1vcmUgQS0+VyBjb252ZXJzaW9ucyBtaXNzZWQgYnkgcHJldmlvdXMgcGF0Y2guCgktIEZpeCBvZmYtYnktb25lIGVycm9yIGluIHZhbGlkYXRpbmcgZHJhZy1uLWRyb3AgZnJvbSBhdmFpbGFibGUKCSAgYnV0dG9ucyBsaXN0IGJveCB0byBhY3R1YWwgYnV0dG9ucyBsaXN0IGJveC4KCS0gVW5pY29kZSBmbGFnIHNob3VsZCBiZSBiYXNlZCBvbiB0aGUgbm90aWZpY2F0aW9uIHdpbmRvdy4KCjIwMDQtMDktMTcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3gxMWRydi93aW5wb3MuYywgc2VydmVyL3JlZ2lvbi5jLCBzZXJ2ZXIvdXNlci5oLAoJICBzZXJ2ZXIvd2luZG93LmMsIHdpbmRvd3Mvd2lucG9zLmM6CglEb24ndCBib3RoZXIgdG8gcmV0dXJuIHBhcnRpYWwgcmVnaW9uIGRhdGEgaW4gZ2V0X3dpbmRvd19yZWdpb24gYW5kCglnZXRfdmlzaWJsZV9yZWdpb24sIHJldHVybiBTVEFUVVNfQlVGRkVSX09WRVJGTE9XIGluc3RlYWQuCgoJKiBkbGxzL2FkdmFwaTMyL01ha2VmaWxlLmluLCBkbGxzL2FkdmFwaTMyL2FkdmFwaTMyLnNwZWMsCgkgIGRsbHMvYWR2YXBpMzIvY3J5cHRfc2hhLmMsIGRsbHMvYWR2YXBpMzIvdGVzdHMvLmN2c2lnbm9yZSwKCSAgZGxscy9hZHZhcGkzMi90ZXN0cy9NYWtlZmlsZS5pbiwgZGxscy9hZHZhcGkzMi90ZXN0cy9jcnlwdF9zaGEuYzoKCUZpbGlwIE5hdmFyYSA8eG5hdmFyYUB2b2xueS5jej4KCUltcGxlbWVudCBBX1NIQSogZnVuY3Rpb25zIHByZXNlbnQgaW4gV2luZG93cyBYUCBhbmQgbGF0ZXIgc3lzdGVtcy4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglNYWtlIHN1cmUgcGF0aHMgZW5kIHdpdGggYSBzbGFzaCBiZWZvcmUgY29uY2F0ZW5hdGluZyBmaWxlIG5hbWVzLgoKCSogZGxscy9kc291bmQvYnVmZmVyLmMsIGRsbHMvZHNvdW5kL2NhcHR1cmUuYywgZGxscy9kc291bmQvcHJpbWFyeS5jLAoJICBkbGxzL2Rzb3VuZC9wcm9wc2V0LmMsIGRsbHMvZHNvdW5kL3NvdW5kM2QuYzoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglDbGVhbnVwIHJlZmVyZW5jZSBjb3VudGluZy4KCUFkZFJlZiBhbmQgUmVsZWFzZSByZXR1cm4gVUxPTkcuCgoJKiBkbGxzL2RpbnB1dC9kZXZpY2UuYywgZGxscy9kaW5wdXQvZGlucHV0X21haW4uYywKCSAgZGxscy9kaW5wdXQvam95c3RpY2tfbGludXguYywgZGxscy9kaW5wdXQvam95c3RpY2tfbGludXhpbnB1dC5jLAoJICBkbGxzL2RpbnB1dC9rZXlib2FyZC5jLCBkbGxzL2RpbnB1dC9tb3VzZS5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCVVzZSBJbnRlcmxvY2tlZEluY3JlbWVudC9JbnRlcmxvY2tlZERlY3JlbWVudCBmb3IgcmVmZXJlbmNlIGNvdW50aW5nLgoJRml4IGJ1ZyBpbiBlZmZlY3QgZW51bWVyYXRpb24gdGhhdCBjcmFzaGVkIGR4Y2Fwc3ZpZXdlci4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbHRpcHMuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJVXNlIFVuaWNvZGUgd2luZG93IG1lc3NhZ2VzLgoKMjAwNC0wOS0xNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGZvbnRzLy5jdnNpZ25vcmUsIGZvbnRzL01ha2VmaWxlLmluLCBmb250cy93aW5lX21hcmxldHQuc2ZkOgoJVHJhbnNHYW1pbmcKCUFkZCBhIE1hcmxldHQgcmVwbGFjZW1lbnQgZm9udC4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL3dpbmluZXQvaW50ZXJuZXQuaCwKCSAgZGxscy93aW5pbmV0L25ldGNvbm5lY3Rpb24uYywgaW5jbHVkZS9jb25maWcuaC5pbiwKCSAgaW5jbHVkZS93aW5lL3BvcnQuaDoKCUF2b2lkIHVzaW5nIHNvY2tsZW5fdC4KCgkqIGRsbHMvZ2RpL3Rlc3RzL2JpdG1hcC5jLCBkbGxzL3gxMWRydi9iaXRibHQuYzoKCUh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglXaGVuIHdlIGJsaXQgd2l0aCBhIG1vbm9jaHJvbWUgZGlic2VjdGlvbiBhcyB0aGUgc291cmNlIHdlIHNob3VsZCB1c2UKCXRoZSBjb2xvdXIgdGFibGUgb2YgdGhhdCBkaWIuCglBZGRlZCBhIHRlc3QgZm9yIHRoaXMuCgoJKiBkbGxzL2F2aWZpbDMyL2F2aWZpbGUuYzogSmFtZXMgSGF3a2lucyA8dHJ1aWtlbkBnbWFpbC5jb20+CglVc2UgSW50ZXJsb2NrZWREZWNyZW1lbnQgYW5kIEludGVybG9ja2VkSW5jcmVtZW50IGluc3RlYWQgb2YgKysvLS0uCgoJKiBkbGxzL3VzZXIvZWRpdC5jOiBVbHJpY2ggQ3pla2FsbGEgPHVscmljaEBjb2Rld2VhdmVycy5jb20+CglIYW5kbGUgcGFpbnRpbmcgdGhlIGJvcmRlciBpZiBXU19FWF9DTElFTlRFREdFIGlzIG5vdCBzZXQuCgoJKiBkbGxzL2FkdmFwaTMyL2FkdmFwaTMyLnNwZWMsIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYywKCSAgZGxscy9hZHZhcGkzMi90ZXN0cy9zZWN1cml0eS5jOgoJSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJLSBjb3JyZWN0IENvbnZlcnRTdHJpbmdTaWRUb1NpZFcgYW5kIENvbnZlcnRTaWRUb1N0cmluZ1NpZFcsIHdpdGgKCSAgdGVzdHMKCS0gYWRkIENvbnZlcnRTdHJpbmdTaWRUb1NpZEEKCS0gYWRkIG1pc3NpbmcgZXhwb3J0cyBmb3IgQ29udmVydFN0cmluZ1NpZFRvU2lkQS9XCgoJKiBkbGxzL2FkdmFwaTMyL3NlcnZpY2UuYzogQWxleGFuZGVyIFlhd29yc2t5IDx5YXdvcnNreUBtaWd1c29mdC5ydT4KCVBhc3MgYXJndlswXSAoc2VydmljZSBuYW1lKSB0byB0aGUgc2VydmljZSBwcm9ncmFtLgoKCSogZGxscy9nZGkvdGVzdHMvYml0bWFwLmMsIGRsbHMveDExZHJ2L2RpYi5jLCBkbGxzL3gxMWRydi94MTFkcnYuaDoKCUh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglJdCdzIGltcG9ydGFudCB0byBrZWVwIHRoZSBvcmlnaW5hbCBkaWIgY29sb3VyIHRhYmxlIGFuZCBub3QganVzdCB0aGUKCWNvbG91ciBtYXBwaW5nIGFzc29jaWF0ZWQgd2l0aCBhIGRpYiBzZWN0aW9uIC0gaXQncyB0aGlzIHRhYmxlIHRoYXQKCUdldERJQkNvbG9yVGFibGUgc2hvdWxkIHJldHJpZXZlLgoJQWRkZWQgc29tZSBHZXRESUJDb2xvclRhYmxlIHRlc3RzLgoKCSogZGxscy91c2VyL3Rlc3RzL3dpbi5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkIGEgdGVzdCBjYXNlIGZvciBXTV9LRVkqIHRvIFdNX1NZU0tFWSogbWVzc2FnZSBjb252ZXJzaW9uLgoKCSogZGxscy91c2VyL21lbnUuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFjY2VwdCBXTV9TWVNDSEFSIG1lc3NhZ2UgZm9yIHByb2Nlc3NzaW5nIGluIFRyYW5zbGF0ZUFjY2VsZXJhdG9yVy4KCgkqIGRsbHMvYWR2YXBpMzIvYWR2YXBpMzIuc3BlYzoKCUFsZXhhbmRlciBZYXdvcnNreSA8eWF3b3Jza3lAbWlndXNvZnQucnU+CglBZGRlZCBzdHVicyBmb3IgTUQ0LCBNRDUgYW5kIFNIQSBmdW5jdGlvbnMuCgoJKiBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLCBkbGxzL3NobHdhcGkvdXJsLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggc29tZSAtV3NpZ25lZC1jb21wYXJlIHdhcm5pbmdzLgoKCSogZGxscy9vbGVhdXQzMi90ZXN0cy92YXJ0eXBlLmM6IEphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJVXNlIEludGVybG9ja2VkRGVjcmVtZW50IGFuZCBJbnRlcmxvY2tlZEluY3JlbWVudCBpbnN0ZWFkIG9mICsrLy0tLgoKCSogZGxscy9kc291bmQvYnVmZmVyLmMsIGRsbHMvZHNvdW5kL2NhcHR1cmUuYywgZGxscy9kc291bmQvZHNvdW5kLmMsCgkgIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmMsIGRsbHMvZHNvdW5kL3ByaW1hcnkuYywKCSAgZGxscy9kc291bmQvcHJvcHNldC5jLCBkbGxzL2Rzb3VuZC9zb3VuZDNkLmM6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQ2xlYW51cCByZWZlcmVuY2UgY291bnRpbmcuCgoJKiBkbGxzL29sZWF1dDMyL29sZXBpY3R1cmUuYzoKCUFsZXggVmlsbGFj7XMgTGFzc28gPGFfdmlsbGFjaXNAcGFsb3NhbnRvLmNvbT4KCUFkZCBkZS1pbnRlcmxlYXZpbmcgZm9yIEdJRiBpbWFnZXMuCgoJKiBkbGxzL2NvbWN0bDMyL3BhZ2VyLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gRG9uJ3QgdXNlIFRyYWNrTW91c2VFdmVudHMvV01fTU9VU0VMRUFWRSBBUEkgZm9yIGhhbmRsaW5nIHRoZSBob3QKCSAgYnV0dG9uOyB1c2UgcGxhaW4gbW91c2UgY2FwdHVyZSBpbnN0ZWFkIGxpa2UgbmF0aXZlLgoJLSBSZXR1cm4gb25seSBIVFRSQU5TUEFSRU5UL0hUQ0xJRU5UIGZyb20gV01fTkNISVRURVNUIGFuZCByZW1vdmUKCSAgYXNzb2NpYXRlZCBoYWNrcyBvZiBXTV9TRVRDVVJTT1IsIFdNX05DTEJVVFRPTkRPV04gYW5kCgkgIFdNX05DTEJVVFRPTlVQLgoJLSBSZWZhY3RvciBzdGF0ZSBjaGFuZ2UgY29kZSBzbyB0aGF0IHN0YXRlIGNoYW5nZXMgZG9uJ3QgaGFwcGVuIGFzCgkgIHNpZGUgZWZmZWN0cyBmcm9tIG1lc3NhZ2VzIHN1Y2ggYXMgV01fTkNDQUxDU0laRSwgaW5zdGVhZCBvbmx5IGZyb20KCSAgdXNlciBpbnB1dCBtZXNzYWdlcyBsaWtlIFdNX01PVVNFTU9WRS4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglVc2UgVW5pY29kZSB3aW5kb3cgbWVzc2FnZXMuCgoJKiBkbGxzL2hoY3RybC5vY3gvaGhjdHJsLmMsIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvaHRtbGhlbHAuaDoKCUphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglBZGRlZCBodG1saGVscC5oLgoKMjAwNC0wOS0xNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvdXNlci9tZXNzYWdlLmMsIHdpbmRvd3MvY3Vyc29yaWNvbi5jLCB3aW5kb3dzL3dpbnByb2MuYzoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglVc2UgdGhlIFcgdmVyc2lvbiBvZiB0aGUgZnVuY3Rpb24gd2VyZSB3ZSBjYW4uCgoJKiBkbGxzL2dkaS9mcmVldHlwZS5jOiBWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglVc2UgdGhlIHByZWZlcnJlZCBGVF9FTkNPRElORyB2YWx1ZXMgcmF0aGVyIHRoYW4gZnRfZW5jb2RpbmcuCgoJKiBkbGxzL3gxMWRydi93aW5wb3MuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZSBhIHN0cmF5ICdlbHNlJyBsZWZ0IGJ5IGEgcHJldmlvdXMgcGF0Y2guCgoJKiBkbGxzL21sYW5nL21sYW5nLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVJldHVybiBDTEFTU19FX05PQUdHUkVHQVRJT04gaWYgcFVua091dGVyIGlzIG5vbi1udWxsLgoKCSogZGxscy9rZXJuZWwvcHJvY2Vzcy5jLCBkbGxzL250ZGxsL2xvYWRlci5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJVXNlIEZJTEVfU0hBUkVfREVMRVRFIHdoZW4gbG9hZGluZyBtb2R1bGVzLCBhcyBydW5uaW5nIGFuIGV4ZSB0aGF0J3MKCWdvaW5nIHRvIGJlIGRlbGV0ZWQgc2hvdWxkIHdvcmsuCgoyMDA0LTA5LTE0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogQU5OT1VOQ0UsIENoYW5nZUxvZywgVkVSU0lPTiwgY29uZmlndXJlOiBSZWxlYXNlIDIwMDQwOTE0LgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoyMDA0LTA5LTE0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9zaGVsbDMyL3NobGV4ZWMuYzogSmVucyBDb2xsaW4gPGplbnMuY29sbGluQGxha2hlaS5jb20+CglBZGRlZCBsb29rdXAgb2YgZW52aXJvbm1lbnQgdmFycyBpbiBTSEVMTF9BcmdpZnlXLgoKCSogZGxscy9hZHZhcGkzMi9zZXJ2aWNlLmM6IEFsZXhhbmRlciBZYXdvcnNreSA8eWF3b3Jza3lAbWlndXNvZnQucnU+CglQcm9wZXIgZmluYWxpemF0aW9uIGluIFN0YXJ0U2VydmljZVcuCgoJKiBkbGxzL3dpbmluZXQvaHR0cC5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglEb24ndCBsZXQgYXBwbGljYXRpb25zIGFkZCBDb25uZWN0aW9uIGhlYWRlciB0byByZXF1ZXN0LgoKCSogZGxscy9udGRsbC9maWxlLmMsIGRsbHMvc2hsd2FwaS9yZWcuYywgZGxscy90d2Fpbi9SRUFETUUsCgkgIGRsbHMvdHdhaW4vZHNfaW1hZ2UuYywgZGxscy90d2Fpbi9kc21fY3RybC5jLCBkbGxzL3R3YWluL3R3YWluX2kuaCwKCSAgZGxscy93aW5hc3BpL2FzcGkuaCwgZGxscy93aW5hc3BpL3dpbmFzcGkxNi5jLAoJICBkbGxzL3dpbmFzcGkvd2luYXNwaTMyLmMsIGRsbHMvd2luYXNwaS93aW5lc2NzaS5oLCBpbmNsdWRlL3dpbmJhc2UuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQXNzb3J0ZWQgc3BlbGxpbmcgZml4ZXMuCgoJKiBkbGxzL250ZGxsL250LmMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYzoKCVN0ZXZlbiBFZHdhcmRzIDxzdGV2ZW5fZWQ0MTUzQHlhaG9vLmNvbT4KCUFkZGVkIHN0dWIgZm9yIE50U2h1dGRvd25TeXN0ZW0uCgoJKiBkbGxzL3VzZXIvdXNlcjMyLnNwZWMsIHdpbmRvd3Mvd2luLmM6CglTdGV2ZW4gRWR3YXJkcyA8c3RldmVuX2VkNDE1M0B5YWhvby5jb20+CglBZGRlZCBzdHViIGZvciBTd2l0Y2hEZXNrdG9wLgoKCSogdG9vbHMvd2lkbC9oZWFkZXIuYywgdG9vbHMvd2lkbC9wYXJzZXIueToKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCURldGVybWluZSBSUEMgc3RydWN0IHR5cGVzIG1vcmUgZXhhY3RseS4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL29sZWF1dDMyL29sZXBpY3R1cmUuYywKCSAgaW5jbHVkZS9jb25maWcuaC5pbjoKCU1hcmN1cyBNZWlzc25lciA8bWVpc3NuZXJAc3VzZS5kZT4KCUF1dG9kZXRlY3QgbGliZ2lmIHNvIGV4dGVuc2lvbiBhbmQgdHJ5IHRvIGxvYWQgaXQuCgoJKiBkbGxzL2FkdmFwaTMyL2FkdmFwaTMyLnNwZWMsIGRsbHMvYWR2YXBpMzIvc2VydmljZS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJU3R1YiBpbXBsZW1lbnRhdGlvbiBmb3IgUXVlcnlTZXJ2aWNlT2JqZWN0U2VjdXJpdHkuCgoJKiBmb250cy8uY3ZzaWdub3JlLCBmb250cy9NYWtlZmlsZS5pbiwgZm9udHMvd2luZV9jb3VyaWVyLnNmZDoKCUh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglBZGQgY3AxMjUwIGdseXBocyB0byBXaW5lIENvdXJpZXIuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmM6IEp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCUFkZGVkIHN1cHBvcnQgZm9yIERMTFZFUlNJT05JTkZPMiBpbiBEbGxHZXRWZXJzaW9uLgoKCSogaW5jbHVkZS93aW5lL3JwY2ZjLmg6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIG1pc3NpbmcgcnBjIHR5cGUuCgoJKiBkbGxzL21sYW5nL21sYW5nLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVVzZSBJbnRlcmxvY2tlZCogZnVuY3Rpb25zIGluIEFkZFJlZiBhbmQgUmVsZWFzZS4KCgkqIGRsbHMvYWR2YXBpMzIvY3J5cHQuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJTWFrZSBzdXJlIG5vdCB0byBpbnRlcmZlcmUgd2l0aCB0aGUgbGFzdGVycm9yIHZhbHVlIHJldHVybmVkIGJ5IHRoZQoJQ1NQIGluIENyeXB0QWNxdWlyZUNvbnRleHRBLgoKCSogREVWRUxPUEVSUy1ISU5UUzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWRkIGRldiBoaW50IGxpbmUgZm9yIGl0c3MgKHBhcnQgb2YgaHRtbCBoZWxwKS4KCgkqIGRsbHMva2VybmVsL3Jlc291cmNlLmM6IFZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCUltcGxlbWVudCBCZWdpblVwZGF0ZVJlc291cmNlIGFuZCBVcGRhdGVSZXNvdXJjZS4KCVN0dWIgb3V0IGEgYml0IG1vcmUgb2YgRW5kVXBkYXRlUmVzb3VyY2UuCgoJKiBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jOiBGaWxpcCBOYXZhcmEgPHhuYXZhcmFAdm9sbnkuY3o+CglTdGF0dXMgdXBkYXRlLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gTWFrZSBjdXN0b21pemF0aW9uIGxpc3QgYm94ZXMgaW50byBkcmFnIGxpc3QgYm94ZXMuCgktIE9yZGVyIGF2YWlsYWJsZSBidXR0b25zIGluIHRoZSBzYW1lIHdheSBhcyB0aGUgbmF0aXZlIHZlcnNpb24uCgoJKiBkbGxzL2NvbWN0bDMyL2RyYWdsaXN0LmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gQ2xlYXIgZGF0YSBzdHJ1Y3R1cmUgYWZ0ZXIgZHJhZ2dpbmcuCgktIFdNX1NFVENVUlNPUiBkb2VzIG5vdCBuZWVkIHRvIGJlIGhhbmRsZWQgYXMgaXQgaXMgbm90IHNlbnQgd2hpbHN0CgkgIHRoZSB3aW5kb3cgaXMgY2FwdHVyZWQuCgktIE1ha2UgdURyYWdMaXN0TWVzc2FnZSBub24tc3RhdGljIHNvIHRoYXQgd2UgY2FuIHJlLXVzZSBpdAoJICBlbHNld2hlcmUuCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmM6IFJvZGVyaWNrIENvbGVuYnJhbmRlciA8dGh1bmRlcmJpcmQya0BnbXgubmV0PgoJR2VyYWxkIFBmZWlmZXIgPGdlcmFsZEBwZmVpZmVyLmNvbT4KCU1ha2UgV1MyX3NlbmQoKSwgV1NfZ2V0c29ja29wdCgpLCBhbmQgV1Nfc2V0c29ja29wdCgpIElQWCBzdXBwb3J0IHdvcmsKCW9uIEZyZWVCU0QuCgoJKiBkbGxzL3VzZXIvdGVzdHMvbXNnLmM6CglTdG9wIHRlc3RpbmcgYSBzZXF1ZW5jZSB1cG9uIHRoZSBmaXJzdCBleHBlY3RlZCBlcnJvciwgdG8gYXZvaWQKCXNwdXJpb3VzIGVycm9ycyBsYXRlciBvbi4KCgkqIGRsbHMvY29tY3RsMzIvaXBhZGRyZXNzLmMsIGRsbHMvY29tY3RsMzIvc3RhdHVzLmMsCgkgIGRsbHMvY29tY3RsMzIvdHJhY2tiYXIuYywgZGxscy9jb21jdGwzMi91cGRvd24uYzoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCVNldCBjbGFzcyBoYnJCYWNrZ3JvdW5kIGFuZCBzdHlsZSB0byB0aGUgc2FtZSBhcyBuYXRpdmUuCgoJKiBkbGxzL2NvbWN0bDMyL3BhZ2VyLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gU2V0IGhickJhY2tncm91bmQgY2xhc3MgcHJvcGVydHkgdG8gc2FtZSB2YWx1ZSBhcyBuYXRpdmUuCgktIFVzZSBVbmljb2RlIHdpbmRvdyBmdW5jdGlvbnMgaW5zdGVhZCBvZiBBTlNJLgoKCSogZGxscy9jb21jdGwzMi90YWIuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBTZXQgaGJyQmFja2dyb3VuZCBjbGFzcyBwcm9wZXJ0eSB0byBzYW1lIHZhbHVlIGFzIG5hdGl2ZS4KCS0gUmVtb3ZlIG5vIGxvbmdlciBuZWVkZWQgV01fRVJBU0VCS0dORCBoYW5kbGVyLgoJLSBVc2UgVW5pY29kZSB3aW5kb3cgZnVuY3Rpb25zIGluc3RlYWQgb2YgQU5TSS4KCgkqIHByb2dyYW1zL3dpbmVtZW51YnVpbGRlci93aW5lbWVudWJ1aWxkZXIuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSWYgd2UgZG8gbm90IGhhdmUgYW4gSWNvbnNEaXIsIHVzZSB0aGUgdGVtcCBkaXJlY3RvcnkuCgoyMDA0LTA5LTEzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9zaGVsbDMyL3NobGZvbGRlci5jLCBkbGxzL3NoZWxsMzIvdGVzdHMvLmN2c2lnbm9yZSwKCSAgZGxscy9zaGVsbDMyL3Rlc3RzL01ha2VmaWxlLmluLCBkbGxzL3NoZWxsMzIvdGVzdHMvc2hsZm9sZGVyLmM6CglWaXRhbGl5IE1hcmdvbGVuIDx3aW5lLXBhdGNoQGtpZXZpbmZvLmNvbT4KCUlTaGVsbEZvbGRlcjo6Q29tcGFyZUlEcyAtIHJldHVybiBvbmx5IC0xLzAvMSBpbiBsb3dlciAxNiBiaXQuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmMsIGRsbHMvZ2RpL2VuaG1ldGFmaWxlLmMsIGRsbHMvZ2RpL3dpbmcuYywKCSAgd2luZG93cy9kY2UuYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglDcmVhdGVEQ0EgLT4gQ3JlYXRlRENXCgoJKiBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jOiBGaWxpcCBOYXZhcmEgPHhuYXZhcmFAdm9sbnkuY3o+CglGaXggcmVzaXppbmcgb2Ygd2l6YXJkcy4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYywgZGxscy93aW5zb2NrL3dzMl8zMi5zcGVjLCBpbmNsdWRlL3dpbnNvY2syLmg6CglBbmRyZWFzIFJvc2VuYmVyZyA8YW5kcmVhc19yb3NlbmJlcmdAd2ViLmRlPgoJSW1wbGVtZW50YXRpb24gb2YgV1NBU3RyaW5nVG9BZGRyZXNzKEEvVyksIFdTQUh0b25sLCBXU0FIdG9ucy4KCgkqIGRsbHMvZ2RpL2RpYi5jLCBkbGxzL2dkaS9lbmhtZXRhZmlsZS5jLCBkbGxzL2dkaS90ZXN0cy8uY3ZzaWdub3JlLAoJICBkbGxzL2dkaS90ZXN0cy9NYWtlZmlsZS5pbiwgZGxscy9nZGkvdGVzdHMvYml0bWFwLmMsCgkgIHdpbmRvd3MvY3Vyc29yaWNvbi5jOgoJTWljaGFlbCBLYXVmbWFubiA8aGFsbG9AbWljaGFlbC1rYXVmbWFubi5jaD4KCUh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglDcmVhdGVESUJpdG1hcCBzaG91bGQgcmV0dXJuIGJpdG1hcHMgYXQgdGhlIGRlcHRoIG9mIHRoZSBzdXBwbGllZCBkYy4KCUFkZCBhIHRlc3QgdG8gZXhlcmNpc2UgdGhpcyBiZWhhdmlvdXIuCgoJKiBkbGxzL3dpbmluZXQvaHR0cC5jLCBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYywKCSAgZGxscy93aW5pbmV0L2ludGVybmV0Lmg6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglTdG9yZSBIVFRQIGhvc3QgaGVhZGVyIGluIHRoZSBzYW1lIHdheSBhcyBtb3N0IG90aGVyIGhlYWRlcnMuCgoJKiBkbGxzL3VzZXIvdGVzdHMvbXNnLmMsIHdpbmRvd3Mvbm9uY2xpZW50LmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkIHN1cHBvcnQgZm9yIEhDQlRfU1lTQ09NTUFORCBob29rLCBhZGQgbG9nZ2luZyBmb3IgSENCVF9TWVNDT01NQU5ECglpbiB0aGUgbWVzc2FnZSB0ZXN0LgoKCSogZGxscy93aW5pbmV0L2h0dHAuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBSZW1vdmUgdW51c2VkIHZhcmlhYmxlIGhJQy4KCS0gUmVtb3ZlIGNoZWNrIGZvciBIVFRQIHNpZ25hdHVyZSBpbiBzZXJ2ZXIgcmVwbHkuCgktIEZpeCBzdHVwaWQgZXJyb3Igd2l0aCBmcmVlaW5nIHRoZSB3cm9uZyBidWZmZXIuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6IFZpdGFsaXkgTWFyZ29sZW4gPHdpbmUtcGF0Y2hAa2lldmluZm8uY29tPgoJTWFrZSBzdXJlIFRyZWVWaWV3IGdldHMgcmVkcmF3biBhZnRlciBjYWxsaW5nIEVuc3VyZVZpc2libGUuCgoJKiBmb250cy8uY3ZzaWdub3JlLCBmb250cy9NYWtlZmlsZS5pbiwgZm9udHMvd2luZV9zeXN0ZW0uc2ZkOgoJSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBjcDEyNTAgZ2x5cGhzIHRvIFdpbmUgU3lzdGVtLgoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYzogRmlsaXAgTmF2YXJhIDx4bmF2YXJhQHZvbG55LmN6PgoJRmlsbCB0aGUgYXJlYSBuZXh0IHRvIHdhdGVybWFyayBiaXRtYXAgd2l0aCB3aW5kb3cgY29sb3IgYW5kIHN1YmNsYXNzCglleHRlcmlvciB3aXphcmQgcGFnZXMgdG8gc3VwcHJlc3MgZHJhd2luZyBiYWNrZ3JvdW5kLgoKCSogZGxscy9kaW5wdXQvZGlucHV0X21haW4uYywgZGxscy9kaW5wdXQvZGlucHV0X3ByaXZhdGUuaCwKCSAgZGxscy9kaW5wdXQvam95c3RpY2tfbGludXguYywgZGxscy9kaW5wdXQvam95c3RpY2tfbGludXhpbnB1dC5jLAoJICBkbGxzL2RpbnB1dC9rZXlib2FyZC5jLCBkbGxzL2RpbnB1dC9tb3VzZS5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUFkZGVkIHN1cHBvcnQgZm9yIG11bHRpcGxlIGRldmljZXMuCgoJKiBkbGxzL3VzZXIvdGVzdHMvbXNnLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGQgYSBidW5jaCBvZiBuZXcgTURJIHRlc3RzLgoKCSogTWFrZS5ydWxlcy5pbjogVHVybiBvbiB3YXJuaW5ncyB3aGVuIGJ1aWxkaW5nIHRoZSAuZGVmIGZpbGUuCgoJKiBkbGxzL250ZGxsL2RpcmVjdG9yeS5jOgoJRG9uJ3QgdHJ5IHRvIHN0YXQgbmV0d29yayBtb3VudHMgaW4gcGFyc2VfbW91bnRfZW50cmllcywgd2UgY2FuJ3QKCXJldHVybiBhIG1lYW5pbmdmdWwgZGV2aWNlIGZvciB0aGVtIGFueXdheSAoc3VnZ2VzdGVkIGJ5IFJvYmVydAoJU2hlYXJtYW4pLgoKCSogZGxscy9zaGx3YXBpL29yZGluYWwuYywgZGxscy9zaGx3YXBpL3JlZy5jLAoJICBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjLCBkbGxzL3NobHdhcGkvc3RyaW5nLmMsCgkgIGRsbHMvc2hsd2FwaS90ZXN0cy9zdHJpbmcuYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglJbXBsZW1lbnQgU0hTaW11bGF0ZURyb3AsIE1JTUVfR2V0RXh0ZW5zaW9uQS9XLCBTdHJDcHlOWEEvVywKCVNIQW5zaVRvQW5zaSwgU0hVbmljb2RlVG9Vbmljb2RlLgoKCSogZGxscy9tYXBpMzIvbWFwaTMyLnNwZWMsIGRsbHMvbWFwaTMyL3Byb3AuYywKCSAgZGxscy9tYXBpMzIvdGVzdHMvdXRpbC5jLCBkbGxzL21hcGkzMi91dGlsLmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJSW1wbGVtZW50IEhyR2V0T25lUHJvcCwgSHJTZXRPbmVQcm9wLCBGUHJvcEV4aXN0cywgRnJlZVBhZHJsaXN0LAoJRnJlZVByb3dzLCBTY0R1cFByb3BzZXQsIEhleEZyb21CaW4sIEZCaW5Gcm9tSGV4LCBGRXF1YWxOYW1lcy4KCUZpeCAyIGNhc2VzIHdoZXJlIGl0ZXJhdGluZyBvdmVyIHZhbHVlIGFycmF5cyByZXVzZWQgYSBsb29wIHZhcmlhYmxlCglpbmNvcnJlY3RseS4KCgkqIHRvb2xzL3dpbmUuaW5mOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJSGVsdiBzaG91bGQgYmUgYW4gYWxpYXMgZm9yIE1TIFNhbnMgU2VyaWYuIFNwb3R0ZWQgYnkgRnJhbmNvaXMuCgoJKiBkbGxzL3R3YWluL2NhcGFiaWxpdHkuYywgZGxscy90d2Fpbi9kc19hdWRpby5jLAoJICBkbGxzL3R3YWluL3R3YWluMTZfbWFpbi5jLCBkbGxzL3R3YWluL3R3YWluMzJfbWFpbi5jLAoJICBkbGxzL3R3YWluL3R3YWluX2kuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglNYWtlIHN1cmUgd2UgaW5jbHVkZSBjb25maWcuaCBiZWZvcmUgaW5jbHVkaW5nIHR3YWluX2kuaC4KCUZpeGVzIGFuIGFjdGl2ZURTLmRldmljZUhhbmRsZSBjb3JydXB0aW9uIGJ1Zy4KCgkqIHRvb2xzL3dpZGwvcGFyc2VyLnksIHRvb2xzL3dpZGwvcHJveHkuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcHJvdmUgcHJveHkgY29kZSBnZW5lcmF0ZWQgZm9yIG9haWRsLmlkbC4KCgkqIGRsbHMvY29tY3RsMzIvaGVhZGVyLmM6IFZpdGFsaXkgTWFyZ29sZW4gPHdpbmUtcGF0Y2hAa2lldmluZm8uY29tPgoJU2VuZCBjb3JyZWN0IHRyYWNpbmcgbm90aWZpY2F0aW9uIG1lc3NhZ2VzLgoKCSogZGxscy9rZXJuZWwvY29uc29sZS5jLCBkbGxzL2tlcm5lbC90ZXN0cy9jb25zb2xlLmM6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCUZpeGVkIChmaW5hbGx5KSBTY3JvbGxDb25zb2xlU2NyZWVuQnVmZmVyIGltcGxlbWVudGF0aW9uLgoKCSogZGxscy9udGRsbC9ydGwuYywgZGxscy9udGRsbC9ydGxiaXRtYXAuYywgZGxscy9udGRsbC9zdHJpbmcuYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglEb2N1bWVudGF0aW9uIHVwZGF0ZXMuCgoJKiBmb250cy93aW5lX3NhbnNfc2VyaWYuc2ZkOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJRml4IHRoZSBzaXplIG9mIHRoZSAnRycgYXQgMTYgcHBlbS4gVGhhbmtzIHRvIERtaXRyeSBmb3Igc3BvdHRpbmcKCXRoaXMuCgoJKiBkbGxzL2dkaS9kYy5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJV2hlbiBEQyBtYXBwaW5nIGNoYW5nZXMgcmVzZWxlY3QgY3VycmVudCBwZW4gdG8gdXBkYXRlIHBoeXNpY2FsCgl3aWR0aC4KCgkqIGRsbHMvZGlucHV0L2RldmljZV9wcml2YXRlLmgsIGRsbHMvZGlucHV0L2pveXN0aWNrX2xpbnV4LmMsCgkgIGRsbHMvZGlucHV0L2pveXN0aWNrX2xpbnV4aW5wdXQuYywgZGxscy9kaW5wdXQvbW91c2UuYzoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglBZGQgYnVmZmVyZWQgbW9kZSB0byBqb3lzdGljay4KCUFkZCBKb3lzdGlja1dJbXBsX0dldERldmljZUluZm8uCgoJKiBkbGxzL3VzZXIvdGVzdHMvbXNnLmMsIGRsbHMveDExZHJ2L3dpbnBvcy5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUxvZyBmbGFncyBmb3IgV01fV0lORE9XUE9TQ0hBTkdJTkcvV01fV0lORE9XUE9TQ0hBTkdFRCBtZXNzYWdlcywgbWFrZQoJdGhlIHRlc3RzIHBhc3Mgb24gV2luOTUvV2luOTgvV2luMjAwMCwgZml4IHNvbWUgdGVzdCBmYWlsdXJlcyB1bmRlcgoJV2luZS4KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmM6IEZpbGlwIE5hdmFyYSA8eG5hdmFyYUB2b2xueS5jej4KCUNvcnJlY3QgZGlzcGxheWluZyBvZiB3aXphcmQgc3VidGl0bGUuCgoyMDA0LTA5LTEwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9kc291bmQvYnVmZmVyLmMsIGRsbHMvZHNvdW5kL2NhcHR1cmUuYywgZGxscy9kc291bmQvZHNvdW5kLmM6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJUmVtb3ZlIGxvY2sgbmFtZSBmcm9tIGxvY2sgZGVidWcgc3RydWN0dXJlIGJlZm9yZSBkZWxldGlvbiBzbyBpdCBnZXRzCglmcmVlZCBwcm9wZXJseS4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIFVzZSBGREkgZnVuY3Rpb25zIGxpa2UgbmF0aXZlIGluc3RlYWQgb2YgYWR2cGFjay5FeHRyYWN0RmlsZXMgYW5kCgkgIGNhYmluZXQuRXh0cmFjdCAod2hpY2ggZG9lc24ndCB3b3JrIHdpdGggbmF0aXZlIGNhYmluZXQpCgktIElmIE1vdmVGaWxlIGZhaWxzIHRoZSBtZXNzYWdlIG5vdyBkaXNwbGF5ZXMgdGhlIGNvcnJlY3QgbGFzdCBlcnJvcgoJICBhbmQgYmFpbHMgcmF0aGVyIHRoYW4gc2lsZW50bHkgYnJlYWtpbmcgdGhlIGluc3RhbGwuCgoJKiBkbGxzL3VzZXIvbWVudS5jOiBNaWNoYWVsIEthdWZtYW5uIDxoYWxsb0BtaWNoYWVsLWthdWZtYW5uLmNoPgoJTWFrZSB0aGUgbWVudXMgb2YgRGVscGhpIGFwcGxpY2F0aW9ucyB3b3JrLgoKCSogZGxscy91c2VyL3Rlc3RzL2RpYWxvZy5jLCB3aW5kb3dzL2RlZmRsZy5jLCB3aW5kb3dzL2RpYWxvZy5jOgoJWmFjaCBHb3JtYW4gPHphY2hAYXJjaGV0eXBlYXVjdGlvbi5jb20+CglUaGUgaW5pdGlhbCBkaWFsb2cgZm9jdXMgc2hvdWxkIGJlIGVzdGFibGlzaGVkIGJ5IHRoZSBkZWZhdWx0IGhhbmRsZXIKCWZvciBTZXRGb2N1cygpLCBub3QgaW4gdGhlIGRpYWxvZyBjcmVhdGlvbiBjb2RlLgoKCSogZGxscy91c2VyL3Rlc3RzL2RpYWxvZy5jLCB3aW5kb3dzL2RpYWxvZy5jOgoJWmFjaCBHb3JtYW4gPHphY2hAYXJjaGV0eXBlYXVjdGlvbi5jb20+CglNb2RhbCBkaWFsb2dzIHNob3VsZCBub3QgYmUgc2hvd24gdmlhIFNob3dXaW5kb3cgdW50aWwgdGhlIG1lc3NhZ2UKCXF1ZXVlIGZpcnN0IHJ1bnMgZW1wdHkuIFRoaXMgYWxsb3dzIGFsbCBpbml0aWFsaXphdGlvbiB0byBjb21wbGV0ZQoJYmVmb3JlIGEgZGVmYXVsdCBmb2N1cyBpcyBhc3NpZ25lZC4KCgkqIGRsbHMva2VybmVsL21vZHVsZS5jLCBkbGxzL2tlcm5lbC9uZV9tb2R1bGUuYywgZGxscy9rZXJuZWwvcHJvY2Vzcy5jOgoJQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJRG9uJ3QgcmVqZWN0IE9TLzIgcHJvZ3JhbXMsIHRyeSB0byBjYXJyeSBvbiBpbiBET1MgbW9kZS4KCgkqIGRsbHMvdXNlci90ZXN0cy9kaWFsb2cuYywgZGxscy91c2VyL3Rlc3RzL3Jlc291cmNlLnJjOgoJWmFjaCBHb3JtYW4gPHphY2hAYXJjaGV0eXBlYXVjdGlvbi5jb20+CglBZGRlZCB0ZXN0cyBmb3IgZGVmYXVsdCBmb2N1cyBhc3NpZ25tZW50IGluIGRpYWxvZ3MuCgoJKiBpbmNsdWRlL3dpbnRlcm5sLmg6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglEb2N1bWVudCBhbGwgdGhlIHN0cnVjdHVyZSBtZW1iZXJzIHVwIHRvIFNlc3Npb25JZCBpbiB0aGUgUEVCLgoKCSogZGxscy9hZHZhcGkzMi9zZXJ2aWNlLmM6IEFsZXhhbmRlciBZYXdvcnNreSA8eWF3b3Jza3lAbWlndXNvZnQucnU+CglJbXBsZW1lbnRlZCBMb2NrU2VydmljZURhdGFiYXNlIGFuZCBVbmxvY2tTZXJ2aWNlRGF0YWJhc2UuCgoJKiBkbGxzL3NobHdhcGkvcGF0aC5jOiBEaWVnbyBQZXR0ZW7yIDxkZ3A4NUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CglBZGQgc3VwcG9ydCBmb3IgZmlsZTovLy8gdXJscyBpbiBQYXRoQ3JlYXRlRnJvbVVybC4KCgkqIGRsbHMvd2luaW5ldC9odHRwLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglTdHJpcCBkYW5nbGluZyBcclxuIGZyb20gSFRUUF9IdHRwU2VuZFJlcXVlc3QuCgoJKiBkbGxzL2F2aWZpbDMyL2F2aWZpbGVfUGwucmMsIGRsbHMvYXZpZmlsMzIvcnNyYy5yYzoKCUphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglBZGRlZCBQb2xpc2ggdHJhbnNsYXRpb24uCgoJKiBkbGxzL3gxMWRydi9kaWIuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCVdlIHdhbnQgYWxsIDFicHAgZGlic2VjdGlvbnMgdG8gaGF2ZSBhIG1vbm9jaHJvbWUgYml0bWFwIGFuZAoJZXZlcnl0aGluZyBlbHNlIHRvIGJlIGF0IHRoZSBzY3JlZW4gZGVwdGguCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy90aW1lLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCUFkZCB0ZXN0cyBvZiBUelNwZWNpZmljTG9jYWxUaW1lVG9TeXN0ZW1UaW1lIGFuZAoJU3lzdGVtVGltZVRvVHpTcGVjaWZpY0xvY2FsVGltZS4KCgkqIGRsbHMva2VybmVsL3RpbWUuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJRml4ZWQgVHpTcGVjaWZpY0xvY2FsVGltZVRvU3lzdGVtVGltZSBhbmQKCVN5c3RlbVRpbWVUb1R6U3BlY2lmaWNMb2NhbFRpbWU6CgktIHRha2UgdGhlIHRpbWUgb2YgZGF5IGludG8gdGhlIGNhbGN1bGF0aW9uLCBzbyB0aGUgYmlhcyBpcyBjYWxjdWxhdGVkCgkgIGNvcnJlY3RseSBkdXJpbmcgdGhlIHRyYW5zaXRpb24gZGF5czsKCS0gdGhlIHRyYW5zaXRpb24gdGltZXMgYXJlIGV4cHJlc3NlZCBhcyBsb2NhbCB0aW1lLCBub3Qgc3lzdGVtIHRpbWU7CgktIGNvcnJlY3QgdGhlIGRheWxpZ2h0IGxvZ2ljIGZvciB1c2Ugb24gdGhlIHNvdXRoZXJuIGhlbWlzcGhlcmU7CgktIGJlYXV0aWZ5IHNvbWUgTE9OR0xPTkcgYXJpdGhtZXRpYy4KCgkqIGRsbHMvZGJnaGVscC9kYmdoZWxwLnNwZWM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCBJbWFnZURpcmVjdG9yeUVudHJ5VG9EYXRhIGJ5IGZvcndhcmRpbmcgaXQgdG8gdGhlIG50ZGxsCglpbXBsZW1lbnRhdGlvbiBvZiB0aGUgZnVuY3Rpb24uCgoJKiB0b29scy93aWRsL3Byb3h5LmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCU91dHB1dCBOZHJDb252ZXJ0LCBOZHJDbGVhck91dFBhcmFtZXRlcnMgYW5kIElJRCBjb25zdHJhaW50cy4KCgkqIGRsbHMvZHNvdW5kL2J1ZmZlci5jLCBkbGxzL2Rzb3VuZC9wcmltYXJ5LmM6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJUmV0dXJuIGVycm9yIGZyb20gbG93IGxldmVsIGRyaXZlciB3aGVuIG5lY2Vzc2FyeS4KCjIwMDQtMDktMDkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL29sZTMyL2FudGltb25pa2VyLmMsIGRsbHMvb2xlMzIvYmluZGN0eC5jLAoJICBkbGxzL29sZTMyL2NsaXBib2FyZC5jLCBkbGxzL29sZTMyL2NvbXBvc2l0ZW1vbmlrZXIuYywKCSAgZGxscy9vbGUzMi9maWxlbW9uaWtlci5jLCBkbGxzL29sZTMyL2l0ZW1tb25pa2VyLmMsCgkgIGRsbHMvb2xlMzIvbWFyc2hhbC5jLCBkbGxzL29sZTMyL21vbmlrZXIuYywgZGxscy9vbGUzMi9vbGUxNi5jLAoJICBkbGxzL29sZTMyL29sZW9iai5jLCBkbGxzL29sZTMyL29sZXByb3h5LmMsIGRsbHMvb2xlMzIvcnBjLmMsCgkgIGRsbHMvb2xlMzIvc3RvcmFnZS5jLCBkbGxzL29sZTMyL3N0b3JhZ2UzMi5jLCBkbGxzL29sZWF1dDMyL2Nvbm5wdC5jLAoJICBkbGxzL29sZWF1dDMyL2Rpc3BhdGNoLmMsIGRsbHMvb2xlYXV0MzIvb2xlZm9udC5jLAoJICBkbGxzL29sZWF1dDMyL29sZXBpY3R1cmUuYywgZGxscy9vbGVhdXQzMi90bWFyc2hhbC5jLAoJICBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYywgZGxscy9vbGVhdXQzMi90eXBlbGliMi5jLCBpbmNsdWRlL29iamJhc2UuaDoKCUdldCByaWQgb2YgdGhlIG5vbi1zdGFuZGFyZCBJQ09NX1RISVMgbWFjcm8uCgoJKiBkbGxzL2RpbnB1dC9kZXZpY2UuYywgZGxscy9kaW5wdXQvZGlucHV0X21haW4uYywKCSAgZGxscy9kaW5wdXQvam95c3RpY2tfbGludXguYywgZGxscy9kaW5wdXQvam95c3RpY2tfbGludXhpbnB1dC5jLAoJICBkbGxzL2RpbnB1dC9rZXlib2FyZC5jLCBkbGxzL2RpbnB1dC9tb3VzZS5jLCBkbGxzL2Rzb3VuZC9idWZmZXIuYywKCSAgZGxscy9kc291bmQvY2FwdHVyZS5jLCBkbGxzL2Rzb3VuZC9kc291bmQuYywKCSAgZGxscy9kc291bmQvZHNvdW5kX21haW4uYywgZGxscy9kc291bmQvcHJpbWFyeS5jLAoJICBkbGxzL2Rzb3VuZC9wcm9wc2V0LmMsIGRsbHMvZHNvdW5kL3NvdW5kM2QuYywKCSAgZGxscy9zaGVsbDMyL2F1dG9jb21wbGV0ZS5jLCBkbGxzL3NoZWxsMzIvY3BhbmVsZm9sZGVyLmMsCgkgIGRsbHMvc2hlbGwzMi9kYXRhb2JqZWN0LmMsIGRsbHMvc2hlbGwzMi9lbnVtaWRsaXN0LmMsCgkgIGRsbHMvc2hlbGwzMi9mb2xkZXJzLmMsIGRsbHMvc2hlbGwzMi9tZW1vcnlzdHJlYW0uYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsbGluay5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYywKCSAgZGxscy9zaGVsbDMyL3NobGZzYmluZC5jLCBkbGxzL3NoZWxsMzIvc2hsdmlldy5jLAoJICBkbGxzL3NoZWxsMzIvc2h2X2JnX2NtZW51LmMsIGRsbHMvc2hlbGwzMi9zaHZfaXRlbV9jbWVudS5jOgoJUmVtb3ZlZCBzb21lIG1vcmUgdXNlcyBvZiB0aGUgbm9uLXN0YW5kYXJkIElDT01fVEhJUyBtYWNyby4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL2NvbnNvbGUuYzogQ29tbWVudCBvdXQgYW4gdW5yZWxpYWJsZSB0ZXN0LgoKCSogZGxscy9vbGUzMi9vbGUyLmMsIGRsbHMvb2xlMzIvdGVzdHMvcHJvcHZhcmlhbnQuYywKCSAgZGxscy9vbGVjbGkvb2xlY2xpMTYuYywgZGxscy9vbGVjbGkvb2xlY2xpX21haW4uYywKCSAgaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9vYmpiYXNlLmgsIGluY2x1ZGUvb2JqaWRsLmgsCgkgIGluY2x1ZGUvb2JqaWRsLmlkbCwgaW5jbHVkZS9wcm9waWRsLmgsIGluY2x1ZGUvcHJvcGlkbC5pZGwsCgkgIGluY2x1ZGUvc2hvYmppZGwuaCwgaW5jbHVkZS9zaG9iamlkbC5pZGw6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCU1vdmUgdGhlIFBST1BWQVJJQU5UIGRlY2xhcmF0aW9uIGZyb20gb2JqaWRsLmlkbCB0byBwcm9waWRsLmlkbC4KCU1vdmUgcmVsYXRlZCBBUEkgZGVjbGFyYXRpb25zIGZyb20gaW5kaXZpZHVhbCBDIGZpbGVzIHRvIHByb3BpZGwuaWRsLgoJUmVtb3ZlIHVuZWVkZWQgaW5jbHVkZSBvZiBwcm9waWRsLmggaW4gdGhlIHByb3B2YXJpYW50LmMgdGVzdC4KCgkqIGRsbHMvbXByL21wci5yYywgZGxscy9tcHIvbXByX05sLnJjLCBkbGxzL3NobHdhcGkvc2hsd2FwaS5yYywKCSAgZGxscy9zaGx3YXBpL3NobHdhcGlfTmwucmM6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCUR1dGNoIHJlc291cmNlIHRyYW5zbGF0aW9uLgoKCSogZGxscy91c2VyL2VkaXQuYzogVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hAY29kZXdlYXZlcnMuY29tPgoJQWxsb3cgY29weWluZyBzZWxlY3Rpb24gd2hlbiBjb250cm9sIGlzIHJlYWQgb25seS4KCgkqIHRvb2xzL3dpZGwvcHJveHkuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJT3V0cHV0IGludGVybWVkaWF0ZSB2YXJpYWJsZXMgZm9yIHRoZSBtZXRob2QgdG8gd3JpdGUgaW50byBpbiBzdHVicy4KCgkqIGRsbHMvdXJsbW9uL3VybG1vbi5zcGVjLCBkbGxzL3VybG1vbi91cmxtb25fbWFpbi5jOgoJSmFtZXMgSGF3a2lucyA8dHJ1aWtlbkBnbWFpbC5jb20+CglBZGRlZCBzdHViIGZvciBJc1ZhbGlkVVJMLgoKCSogZGxscy9kaW5wdXQvam95c3RpY2tfbGludXguYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCW9mZnNldHMgYXJyYXkgaXMgdGhlIHNpemUgb2YgdGhlIHdpbmUgZGF0YSBmb3JtYXQgc28gdGhlcmUgaXMgbm8gbmVlZAoJdG8gcmVhbGxvY2F0ZSBpdCB3aGVuIHRoZSBmb3JtYXQgY2hhbmdlcy4KCgkqIGRsbHMvdHR5ZHJ2L01ha2VmaWxlLmluLCBkbGxzL3R0eWRydi93bmQuYywgZGxscy91c2VyL3VzZXIzMi5zcGVjLAoJICBkbGxzL3gxMWRydi93aW5kb3cuYywgZGxscy94MTFkcnYvd2lucG9zLmMsIGRsbHMveDExZHJ2L3gxMWRydi5oLAoJICBpbmNsdWRlL3dpbi5oLCB3aW5kb3dzL3dpbi5jOgoJR2V0IHJpZCBvZiB0aGUgV0lOX1NldFJlY3RhbmdsZXMgZXhwb3J0IGZyb20gdXNlcjMyLgoKCSogc2VydmVyL2ZkLmM6CglUYWtlIGNhcmUgdG8gbm90IGNsb3NlIHRoZSBmaWxlIGhhbmRsZSBpZiB0aGVyZSBhcmUgb3V0c3RhbmRpbmcgbG9ja3MKCWFuZCB0aGUgZGlyZWN0b3J5IG9wdGlvbnMgZG9uJ3QgbWF0Y2guCgoJKiBkbGxzL2tlcm5lbC9wcm9jZXNzLmM6CglGaXhlZCB0aGUgY2hlY2sgZm9yIHJlbW92YWJsZSBtZWRpYSBpbiBsb2FkX3BlX2V4ZSAoc3BvdHRlZCBieQoJRnJhbmNvaXMgR291Z2V0KS4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbHRpcHMuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBTdGF0dXMgdXBkYXRlLgoJLSBSZW1vdmUgbm8gbG9uZ2VyIHZhbGlkIGNvbW1lbnQuCgktIE1pbm9yIGNvZGluZyBzdHlsZSBjbGVhbnVwcy4KCgkqIGRsbHMvZGlucHV0L21vdXNlLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglGaXhlcyBhIG1vdXNlIHJlZ3Jlc3Npb24gZHVlIHRvIHN0cnVjdHVyZSBzaXplIGNoYW5nZS4KCjIwMDQtMDktMDggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3VzZXIvdGVzdHMvbXNnLmM6IEZpeGVkIHNvbWUgbWVzc2FnZSBzZXF1ZW5jZXMgdG8gc3VjY2VlZCBvbiBYUC4KCUFkZGVkIHNvbWUgdGVzdHMgZm9yIHNob3dpbmcvaGlkaW5nIGEgY2hpbGQgd2luZG93IHdpdGggYW4gaW52aXNpYmxlCglwYXJlbnQuCgoJKiBkbGxzL2RpbnB1dC9qb3lzdGlja19saW51eC5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJLSBBZGQgbGludXggdG8gZGlucHV0IGF4aXMgbWFwcGluZyB1c2luZyBIS0xNL1NvZnR3YXJlL1dpbmUvZGlucHV0CgkgIHJlZ2lzdHJ5IHNldHRpbmdzLgoJLSBGaXggc29tZSBmb3JtYXQgbWFwcGluZyBidWdzLgoJLSBBZGRzIEdldERldmljZUluZm8uCgktIEFkZHMgIFNldFByb3BlcnR5IERJUEhfREVWSUNFIHN1cHBvcnQgZm9yIHNldHRpbmcgYWxsIHByb3BlcnRpZXMuCgktIFVzZSB3aW5kb3dzIGNvbXBhdGlibGUgb2JqZWN0IG5hbWluZy4KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmM6IEZpbGlwIE5hdmFyYSA8eG5hdmFyYUB2b2xueS5jej4KCURvIG5vdCBkaXN0aW5ndWlzaCBleHRlcmlvciB3aXphcmQgcGFnZXMgYnkgdGhlaXIgcG9zaXRpb24sIGJ1dAoJaW5zdGVhZCBleHBlY3QgdGhhdCBldmVyeSBwYWdlIGluIHdpemFyZCB0aGF0IGRvZXNuJ3QgaGF2ZSBoZWFkZXIgaXMKCWV4dGVyaW9yLgoKCSogZGxscy93aW5pbmV0L2ludGVybmV0LmM6IEtyenlzenRvZiBGb2x0bWFuIDxrZm9sdG1hbkBwb3J0YWwub25ldC5wbD4KCU1ha2Ugc3VyZSBJbnRlcm5ldFJlYWRGaWxlIHJldHVybnMgZnVsbCBidWZmZXJzLgoKCSogZGxscy9kc291bmQvdGVzdHMvY2FwdHVyZS5jLCBkbGxzL2Rzb3VuZC90ZXN0cy9kczNkOC5jLAoJICBkbGxzL2Rzb3VuZC90ZXN0cy9kc291bmQ4LmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJTWFrZSB0aGUgZHNvdW5kIHRlc3RzIHJ1biB3aXRoIERpcmVjdFggPCA4LgoKCSogZGxscy9kc291bmQvdGVzdHMvcHJvcHNldC5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZSB0aGUgZ2V0X2h3bmQoKSBpbXBsZW1lbnRhdGlvbiBmcm9tIHByb3BzZXQuYyBhbmQgcmV1c2UgdGhlCgljb21tb24gb25lLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvdGltZXIuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglTZXQgX1dJTjMyX1dJTk5UIHRvIDB4MDUwMSBzbyB3ZSBnZXQgdGhlIGRlZmluaXRpb24gb2YKCVBUSU1FUkFQQ1JPVVRJTkUgZnJvbSB0aGUgV2luZG93cyBoZWFkZXJzLgoKCSogZGxscy9vbGUzMi90ZXN0cy9wcm9wdmFyaWFudC5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVRoZSB1bmlvbiBpbiBQUk9QVkFSSUFOVCBpcyBhbHdheXMgbmFtZWxlc3Mgb24gV2luZG93cy4gU28gZGVmaW5lIGEKCW1hY3JvIHRvIGRlYWwgd2l0aCBpdCBjb3JyZWN0bHkuCgoJKiBkbGxzL3dpbmVkb3MvaW50MjEuYzogTWFya3VzIEFtc2xlciA8bWFya3VzLmFtc2xlckBvcmliaS5vcmc+CglSZXNwZWN0IGdpdmVuIGJ1ZmZlciBzaXplIGluIEdFVCBFWFRFTkRFRCBDT1VOVFJZIElORk9STUFUSU9OLgoKCSogZGxscy9tc3ZjcnQvbXN2Y3J0LmgsIGRsbHMvbXN2Y3J0L3Rlc3RzL2hlYWRlcnMuYywKCSAgZGxscy9tc3ZjcnQvdGltZS5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQWRkZWQgTVNWQ1JUX0NMT0NLU19QRVJfU0VDIGRlZmluZS4KCgkqIHRvb2xzL3dpZGwvcHJveHkuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJR2VuZXJhdGUgc29tZSBtYXJzaGFsbGluZyBjb2RlIGZvciBzdHVicy4KCgkqIHNlcnZlci9mZC5jOgoJQ29udmVydGVkIHRoZSB0aW1lb3V0IGxpc3QgdG8gdXNlIHRoZSBzdGFuZGFyZCBsaXN0IGZ1bmN0aW9ucy4KCgkqIGRsbHMvZDNkOC9iYXNldGV4dHVyZS5jLCBkbGxzL2QzZDgvY3ViZXRleHR1cmUuYywgZGxscy9kM2Q4L2RldmljZS5jLAoJICBkbGxzL2QzZDgvZGlyZWN0eC5jLCBkbGxzL2QzZDgvZHJhd3ByaW0uYywgZGxscy9kM2Q4L2luZGV4YnVmZmVyLmMsCgkgIGRsbHMvZDNkOC9yZXNvdXJjZS5jLCBkbGxzL2QzZDgvc3VyZmFjZS5jLCBkbGxzL2QzZDgvc3dhcGNoYWluLmMsCgkgIGRsbHMvZDNkOC90ZXh0dXJlLmMsIGRsbHMvZDNkOC91dGlscy5jLCBkbGxzL2QzZDgvdmVydGV4YnVmZmVyLmMsCgkgIGRsbHMvZDNkOC92b2x1bWUuYywgZGxscy9kM2Q4L3ZvbHVtZXRleHR1cmUuYywKCSAgZGxscy9kM2Q5L2Jhc2V0ZXh0dXJlLmMsIGRsbHMvZDNkOS9jdWJldGV4dHVyZS5jLCBkbGxzL2QzZDkvZGV2aWNlLmMsCgkgIGRsbHMvZDNkOS9kaXJlY3R4LmMsIGRsbHMvZDNkOS9pbmRleGJ1ZmZlci5jLAoJICBkbGxzL2QzZDkvcGl4ZWxzaGFkZXIuYywgZGxscy9kM2Q5L3F1ZXJ5LmMsIGRsbHMvZDNkOS9yZXNvdXJjZS5jLAoJICBkbGxzL2QzZDkvc3RhdGVibG9jay5jLCBkbGxzL2QzZDkvc3VyZmFjZS5jLCBkbGxzL2QzZDkvc3dhcGNoYWluLmMsCgkgIGRsbHMvZDNkOS90ZXh0dXJlLmMsIGRsbHMvZDNkOS92ZXJ0ZXhidWZmZXIuYywKCSAgZGxscy9kM2Q5L3ZlcnRleGRlY2xhcmF0aW9uLmMsIGRsbHMvZDNkOS92ZXJ0ZXhzaGFkZXIuYywKCSAgZGxscy9kM2Q5L3ZvbHVtZS5jLCBkbGxzL2QzZDkvdm9sdW1ldGV4dHVyZS5jLAoJICBkbGxzL2QzZDkvdnNoYWRlcmRlY2xhcmF0aW9uLmMsIGRsbHMvZDNkeDgvZDNkeGJ1ZmZlci5jLAoJICBkbGxzL2RkcmF3L2QzZGRldmljZS9tYWluLmMsIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywKCSAgZGxscy9kZHJhdy9kY2xpcHBlci9tYWluLmMsIGRsbHMvZGRyYXcvZGRyYXcvaGFsLmMsCgkgIGRsbHMvZGRyYXcvZGRyYXcvbWFpbi5jLCBkbGxzL2RkcmF3L2RkcmF3L3VzZXIuYywKCSAgZGxscy9kZHJhdy9kcGFsZXR0ZS9oYWwuYywgZGxscy9kZHJhdy9kcGFsZXR0ZS9tYWluLmMsCgkgIGRsbHMvZGRyYXcvZHN1cmZhY2UvZGliLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UvZmFrZXpidWZmZXIuYywKCSAgZGxscy9kZHJhdy9kc3VyZmFjZS9tYWluLmMsIGRsbHMvZGRyYXcvbWFpbi5jLCBkbGxzL3F1YXJ0ei9hdmlkZWMuYywKCSAgZGxscy9xdWFydHovYXZpc3BsaXQuYywgZGxscy9xdWFydHovY29udHJvbC5jLAoJICBkbGxzL3F1YXJ0ei9kc291bmRyZW5kZXIuYywgZGxscy9xdWFydHovZW51bWZpbHRlcnMuYywKCSAgZGxscy9xdWFydHovZW51bW1lZGlhLmMsIGRsbHMvcXVhcnR6L2VudW1tb25pa2VyLmMsCgkgIGRsbHMvcXVhcnR6L2VudW1waW5zLmMsIGRsbHMvcXVhcnR6L2VudW1yZWdmaWx0ZXJzLmMsCgkgIGRsbHMvcXVhcnR6L2ZpbGVzb3VyY2UuYywgZGxscy9xdWFydHovZmlsdGVybWFwcGVyLmMsCgkgIGRsbHMvcXVhcnR6L21haW4uYywgZGxscy9xdWFydHovbWVtYWxsb2NhdG9yLmMsIGRsbHMvcXVhcnR6L3Bpbi5jLAoJICBkbGxzL3F1YXJ0ei9zeXN0ZW1jbG9jay5jLCBkbGxzL3F1YXJ0ei92aWRlb3JlbmRlcmVyLmMsCgkgIGRsbHMvd2lubW0vd2luZWFsc2EvYXVkaW8uYywgZGxscy93aW5tbS93aW5lYWxzYS9hdWRpb18wNS5jLAoJICBkbGxzL3dpbm1tL3dpbmVhdWRpb2lvL2F1ZGlvLmMsIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOgoJUmVtb3ZlZCBzb21lIG1vcmUgdXNlcyBvZiB0aGUgbm9uLXN0YW5kYXJkIElDT01fVEhJUyBtYWNyby4KCgkqIGRsbHMvZGRyYXcvY29udmVydC5jLCBkbGxzL2RkcmF3L2QzZGNvbW1vbi5jLAoJICBkbGxzL2RkcmF3L2QzZGRldmljZS9tYWluLmMsIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywKCSAgZGxscy9kZHJhdy9kM2RleGVjdXRlYnVmZmVyLmMsIGRsbHMvZGRyYXcvZDNkdmVydGV4YnVmZmVyLmMsCgkgIGRsbHMvZGRyYXcvZGRyYXcvaGFsLmMsIGRsbHMvZGRyYXcvZGRyYXcvbWFpbi5jLAoJICBkbGxzL2RkcmF3L2RwYWxldHRlL21haW4uYywgZGxscy9kZHJhdy9kc3VyZmFjZS9kaWIuYywKCSAgZGxscy9kZHJhdy9kc3VyZmFjZS9tYWluLmMsIGRsbHMvZGRyYXcvbWVzYS5jLCBkbGxzL2RpbnB1dC9kZXZpY2UuYywKCSAgZGxscy9kaW5wdXQvZGV2aWNlX3ByaXZhdGUuaCwgZGxscy9kaW5wdXQvZGlucHV0X21haW4uYywKCSAgZGxscy9kaW5wdXQvam95c3RpY2tfbGludXguYywgZGxscy9kaW5wdXQvbW91c2UuYywKCSAgZGxscy9kbWxvYWRlci9sb2FkZXIuYywgZGxscy9kbXVzaWMvY29sbGVjdGlvbi5jLAoJICBkbGxzL2Rzb3VuZC9idWZmZXIuYywgZGxscy9kc291bmQvY2FwdHVyZS5jLCBkbGxzL2Rzb3VuZC9kc291bmQuYywKCSAgZGxscy9kc291bmQvbWl4ZXIuYywgZGxscy9kc291bmQvcHJvcHNldC5jLCBkbGxzL2dkaS9lbmhtZXRhZmlsZS5jLAoJICBkbGxzL2dkaS9lbmhtZmRydi9ncmFwaGljcy5jLCBkbGxzL2dkaS9mb250LmMsIGRsbHMvZ2RpL2ZyZWV0eXBlLmMsCgkgIGRsbHMvZ2RpL2dkaW9iai5jLCBkbGxzL2dkaS9tZmRydi9ncmFwaGljcy5jLAoJICBkbGxzL2dkaS9tZmRydi9vYmplY3RzLmMsIGRsbHMvZ2RpL21mZHJ2L3RleHQuYywgZGxscy9nZGkvcGFpbnRpbmcuYywKCSAgZGxscy9nZGkvcGF0aC5jLCBkbGxzL2ltbTMyL2ltbS5jLCBkbGxzL2lwaGxwYXBpL2lmZW51bS5jLAoJICBkbGxzL21zYWNtL2ZpbHRlci5jLCBkbGxzL21zYWNtL2Zvcm1hdC5jLCBkbGxzL21zYWNtL2ludGVybmFsLmMsCgkgIGRsbHMvbXNhY20vbXNhY20zMl9tYWluLmMsIGRsbHMvbXNhY20vcGNtY29udmVydGVyLmMsCgkgIGRsbHMvbXNkbW8vZG1vcmVnLmMsIGRsbHMvbXN2Y3J0L2ZpbGUuYywgZGxscy9tc3ZpZGVvL21zdmlkZW9fbWFpbi5jLAoJICBkbGxzL25ldGFwaTMyL25idC5jOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglGaXggc2lnbmVkL3Vuc2lnbmVkIGNvbXBhcmlzb24gd2FybmluZ3MuCgoJKiBzZXJ2ZXIvcmVnaW9uLmMsIHNlcnZlci91c2VyLmg6CglBZGRlZCB4b3JfcmVnaW9uLCBmaXhlZCByZWN0X2luX3JlZ2lvbi4KCgkqIGRsbHMvcnBjcnQ0L25kcl9taWRsLmMsIGRsbHMvcnBjcnQ0L3Rlc3RzLy5jdnNpZ25vcmUsCgkgIGRsbHMvcnBjcnQ0L3Rlc3RzL01ha2VmaWxlLmluLCBkbGxzL3JwY3J0NC90ZXN0cy9nZW5lcmF0ZWQuYywKCSAgaW5jbHVkZS9ycGNkY2UuaCwgaW5jbHVkZS9ycGNuZHIuaCwgdG9vbHMvd2luYXBpL2NfcGFyc2VyLnBtLAoJICB0b29scy93aW5hcGkvdGVzdHMuZGF0OgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglGaXggYW5kIHVuaWZ5IHBhcnNpbmcgb2YgY2FsbGluZyBjb252ZW50aW9ucy4KCUhhY2sgaGFuZGxpbmcgb2YgJ3N0cnVjdCB7IH0gKk5EUl9TQ09OVEVYVDsnIHNvIHdlIGRvbid0IGNhdXNlIGEgcGFyc2UKCWVycm9yIGFzIHRoaXMgaXMgYSB2YWxpZCBDIGNvbnN0cnVjdC4KCUdlbmVyYXRlIHR5cGUgdGVzdHMgZm9yIHJwY3J0NC4KCVJlbW92ZSBQUlBDX0JJTkRJTkdfVkVDVE9SIGFuZCBQVVVJRF9WRUNUT1IsIHRoZXkgZG9uJ3QgZXhpc3Qgb24KCVdpbmRvd3MuCglGaXggdGhlIE1JRExfU1RVQl9NRVNTQUdFLCBNSURMX1NFUlZFUl9JTkZPIGFuZAoJTUlETF9TVFVCTEVTU19QUk9YWV9JTkZPIHN0cnVjdHMuCglBZGQgTkRSX0FMTE9DX0FMTF9OT0RFU19DT05URVhULCBORFJfUE9JTlRFUl9RVUVVRV9TVEFURSBhbmQKCUNTX1NUVUJfSU5GTy4KCgkqIGRsbHMvc2hsd2FwaS91cmwuYzogRGllZ28gUGV0dGVu8iA8ZGdwODVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoJQWRkIHN1cHBvcnQgaW4gVXJsSXMoKSBmb3IgVVJMSVNfRElSRUNUT1JZIGFuZCBVUkxJU19GSUxFVVJMIGZsYWdzLgoKCSogZGxscy93aW5pbmV0L2ludGVybmV0LmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglHZXQgZnVsbCBidWZmZXJzIGluIEludGVybmV0X1JlYWRmaWxlLgoKCSogZGxscy9rZXJuZWwvY29uc29sZS5jLCBkbGxzL2tlcm5lbC90ZXN0cy9jb25zb2xlLmMsIGRsbHMvbnRkbGwvZW52LmMsCgkgIGluY2x1ZGUvd2ludGVybmwuaCwgc2VydmVyL2NvbnNvbGUuYywgc2VydmVyL3RyYWNlLmM6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCS0gY3RybC1jIGVuYWJsaW5nIGZsYWcgaXMgbm93IGluaGVyaXRlZAoJLSBmaXhlZCBjb25zb2xlLXJlbGF0ZWQgZmllbGRzIGluIFJUTF9VU0VSX1BST0NFU1NfUEFSQU1FVEVSUwoJLSB2YXJpb3VzIGNsZWFuLXVwIGluIGtlcm5lbDMyLlNldENvbnNvbGVDdHJsSGFuZGxlcgoJLSBvbmx5IHNlbmQgYSBjb25zb2xlIGV2ZW50IG9uY2UgdG8gYSBwcm9jZXNzIGFuZCBub3QgdG8gYWxsIHRoZQoJICBwcm9jZXNzJyB0aHJlYWRzCgoJKiBkbGxzL2QzZDgvY3ViZXRleHR1cmUuYywgZGxscy9kM2Q4L2RldmljZS5jLCBkbGxzL2QzZDgvZHJhd3ByaW0uYywKCSAgZGxscy9kM2Q4L3N0YXRlYmxvY2suYywgZGxscy9kM2Q4L3RleHR1cmUuYywKCSAgZGxscy9kM2Q4L3ZvbHVtZXRleHR1cmUuYywgZGxscy9kM2Q5L2N1YmV0ZXh0dXJlLmMsCgkgIGRsbHMvZDNkOS90ZXh0dXJlLmM6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCUZpeCBzaWduZWQvdW5zaWduZWQgY29tcGFyaXNvbiB3YXJuaW5ncy4KCjIwMDQtMDktMDcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL2tlcm5lbC90ZXN0cy9NYWtlZmlsZS5pbiwKCSAgZGxscy9rZXJuZWwvdGVzdHMvdGltZXIuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBhIHRlc3QgZm9yIHRpbWVycy4KCgkqIHNlcnZlci9mZC5jOgoJTWFrZSBzdXJlIHRvIHJ1biB0aHJvdWdoIHRoZSBwb2xsIGxvb3Agb25jZSBiZWZvcmUgcHJvY2Vzc2luZyBuZXdseQoJYWRkZWQgdGltZXJzIChyZXBvcnRlZCBieSBNaWtlIE1jQ29ybWFjaykuCgoJKiBkbGxzL250ZGxsL3RpbWUuYzoKCUF2b2lkIGludGVnZXIgb3ZlcmZsb3dzIGluIE5URExMX2dldF9zZXJ2ZXJfdGltZW91dCAoc3BvdHRlZCBieSBNaWtlCglNY0Nvcm1hY2spLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGRsbHMvc2hlbGwzMi90ZXN0cy9nZW5lcmF0ZWQuYywKCSAgaW5jbHVkZS9zaGxvYmouaCwgdG9vbHMvd2luYXBpL2NfcGFyc2VyLnBtLCB0b29scy93aW5hcGkvdGVzdHMuZGF0OgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglGaXggY19wYXJzZXIucG0gc28gaXQgaGFuZGxlcyAnY29uc3QnIHByZWNlZWRpbmcgYSAnKicuCglBZGQgbWlzc2luZyAjcHJhZ21hIHBhY2sgZGlyZWN0aXZlcyBmb3IgdGhlIG5ldyBzaGxvYmouaCB0eXBlcy4KCUZpeCBzb21lIGZpZWxkIG5hbWVzIGluIENTRlYgYW5kIFFDTUlORk8uCglVcGRhdGUgdGhlIGdlbmVyYXRlZCB0ZXN0cyB0byBhbHNvIGNoZWNrIHNodHlwZXMuaCBhbmQgdGVzdCBzb21lIG1vcmUKCXR5cGVzLgoKCSogZGxscy93aW5lZG9zL2ludDIxLmM6IE1hcmt1cyBBbXNsZXIgPG1hcmt1cy5hbXNsZXJAb3JpYmkub3JnPgoJRml4IGZpbGVuYW1lIHRlcm1pbmF0b3IgdGFibGUsIGNvcnJlY3QgZXhjbHVkZV9sYXN0IHZhbHVlLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvd2luZWRvcy9pbnQxMy5jLCBpbmNsdWRlL2NvbmZpZy5oLmluOgoJUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJRml4IGNvbXBpbGUgZXJyb3Igd2l0aCBpbmNsdWRlIGZpbGVzIGZyb20gTGludXggMi42LjcrLgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jLCBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL3dzbndsaW5rLmg6CglSb2RlcmljayBDb2xlbmJyYW5kZXIgPHRodW5kZXJiaXJkMmtAZ214Lm5ldD4KCS0gc2V0IGlweCBwYWNrZXQgdHlwZQoJLSBhZGQgc3VwcG9ydCBmb3IgcmV0cmlldmluZyBzb21lIGlweCBpbmZvCgoJKiB0b29scy93aW5lYnVpbGQvcmVzMzIuYzoKCUZpbGwgaW4gdGhlIHByb3BlciBvZmZzZXRzIGluIHRoZSByZXNvdXJjZSBkaXJlY3RvcnkgaW5zdGVhZCBvZgoJcmVseWluZyBvbiB0aGUgY29tcGlsZXIgdG8gZG8gaXQuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2x0aXBzLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCB0aXRsZXMuCgoJKiBkbGxzL2NvbWN0bDMyLy5jdnNpZ25vcmUsIGRsbHMvY29tY3RsMzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvY29tY3RsMzIvY29tY3RsMzIuaCwgZGxscy9jb21jdGwzMi9yc3JjLnJjOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJQWRkIDE2eDE2IGVycm9yLCBpbmZvIGFuZCB3YXJuaW5nIGljb25zLgoKCSogZG9jdW1lbnRhdGlvbi90ZXN0aW5nLnNnbWw6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQWRkIHRyYWlsaW5nICdcbidzIHRvIG9rKCkgYW5kIHRyYWNlKCkgY2FsbHMuCglQb2ludCB0byB0aGUgcHJlLWNvbXBpbGVkIHdpbmV0ZXN0IGJpbmFyaWVzLgoJQSBjb3VwbGUgb2Ygc21hbGwgdHdlYWtzIGhlcmUgYW5kIHRoZXJlLgoKCSogZGxscy9vbGVhdXQzMi90bWFyc2hhbC5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIE1ha2UgdHlwZWxpYiBtYXJzaGFsZXIgdGhyZWFkLXNhZmUgKHByb2JsZW0gcmVwb3J0ZWQgYnkgQXJpYwoJICBTdGV3YXJ0KS4KCS0gU2V2ZXJhbCBzbWFsbCBjbGVhbnVwcy4KCgkqIHByb2dyYW1zL3dpbmhlbHAvd2luaGVscC5jLCBwcm9ncmFtcy93aW5oZWxwL3dpbmhlbHAuaDoKCVl2b24gQmVsbGVhdSA8amFtZXpAaXZpYy5xYy5jYT4KCS0gSW1wbGVtZW50ZWQga2V5Ym9hcmQgbmF2aWdhdGlvbiAoVXAgLyBEb3duIC8gUGdVcCAvIFBnRG4gLyBFU0MpLgoJLSBTaGFkb3cgd2luZG93cyAoYmVoaW5kIHBvcHVwcykgd2VyZSByZWFjdGluZyB0byBtb3VzZSBjbGlja3MgYW5kCgkgIHdlcmUgZ29pbmcgb3ZlciB0aGUgcG9wdXAuIE1ha2UgdGhlbSBjbG9zZSB0aGUgcG9wdXAgaW5zdGVhZC4KCS0gVGl0bGUgd2FzIG5vdCBkaXNwbGF5ZWQgd2hlbiB0aGUgaGVscCBmaWxlIHdhcyBvcGVuZWQgYnkgdGhlIGNvbW1hbmQKCSAgbGluZS4KCS0gQ29ycmVjdGVkIGluY29ycmVjdCBsaW5rcyBiZWhhdmlvciAoaW4gcmVsYXRpb24gd2l0aCB0aGUgc2Nyb2xsYmFyKS4KCgkqIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYzoKCVdvbGZnYW5nIFNjaHdvdHplciA8d29sZmdhbmcuc2Nod290emVyQGdteC5uZXQ+CglMb29rdXBBY2NvdW50TmFtZUEgc3R1YiBhbHdheXMgcmV0dXJucyBhIHZhbGlkIFNJRC4KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmM6IEZpbGlwIE5hdmFyYSA8eG5hdmFyYUB2b2xueS5jej4KCS0gUmV2ZXJ0IGluY29ycmVjdCBjaGFuZ2UgdG8gdGFiIGNvbnRyb2wgcmVzaXppbmcgZnJvbSByZXZpc2lvbiAxLjEwOS4KCS0gTW92ZSB0aGUgcHJvcGVydHkgc2hlZXQgcmVzaXppbmcgY29kZSBmcm9tIFBST1BTSEVFVF9DcmVhdGVQYWdlIHRvCgkgIFBST1BTSEVFVF9TZXRDdXJTZWwuIEl0IG5lZWRzIHRvIGJlIGV4ZWN1dGVkIG9uIGV2ZXJ5IHBhZ2UgY2hhbmdlCgkgIGJlY2F1c2UgdGhlIGFwcGxpY2F0aW9uIGNhbiBtb2RpZnkgaXQgZHVyaW5nIHRoZSBub3RpZmljYXRpb25zLgoKCSogZGxscy9nZGkvdGVzdHMvZ2VuZXJhdGVkLmMsIHRvb2xzL3dpbmFwaS90ZXN0cy5kYXQ6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVRlc3Qgc29tZSBtb3JlIGdkaSB0eXBlcy4KCgkqIGRsbHMvd2luZWRvcy9pbnQyMS5jLCBkbGxzL3dpbmVkb3MvaW50MjUuYywgZGxscy93aW5lZG9zL2ludDI2LmM6CglBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CgktIGZpeCBpbnQyMSBibG9jayBkZXZpY2UgcmVhZC93cml0ZQoJLSBtb3ZlZCBkZXZpY2UgYmxvY2sgYWNjZXNzIGxvZyBtZXNzYWdlcyB0byBpbm5lciBmdW5jdGlvbiB1c2VkIGJ5IHR3bwoJICBkaWZmZXJlbnQgcGxhY2VzCgktIHJlbW92ZWQgYm9ndXMgQ2xvc2VIYW5kbGUoKQoKCSogZGxscy9vbGUzMi9jb21wb2JqLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBzb21lIHdhcm5pbmdzIGZvdW5kIHdpdGggLVdzaWduLWNvbXBhcmUuCgoJKiBwcm9ncmFtcy93aW5ldGVzdC9tYWluLmM6IEZlcmVuYyBXYWduZXIgPHdmZXJpQGFmYXZhbnQuZWx0ZS5odT4KCUFzIHRlc3QgcnVucyBhcmUgbm90IGludm9rZWQgZnJvbSB0aGUgb3B0aW9uIHBhcnNpbmcgbG9vcCBhbnltb3JlLCB3ZQoJY2FuIHN3aXRjaCBiYWNrIHRvIGxpYmMncyBzdHJ0b2soKSBpbXBsZW1lbnRhdGlvbi4KCgkqIGRsbHMvdXJsbW9uL3Rlc3RzL2dlbmVyYXRlZC5jLCB0b29scy93aW5hcGkvdGVzdHMuZGF0OgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglUZXN0IHNvbWUgbW9yZSB1cmxtb24gdHlwZXMuCgoJKiBkbGxzL29sZWF1dDMyL29sZWZvbnQuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglSZW1vdmUgYm9ndXMgI2RlZmluZSBzdGF0ZW1lbnQuCgoJKiBkbGxzL3VzZXIvYnV0dG9uLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglSZXNldCBCVVRUT05fSEFTRk9DVVMgc3RhdGUgaW4gV01fS0lMTEZPQ1VTIGhhbmRsZXIgYmVmb3JlIGNhbGxpbmcKCVJlbGVhc2VDYXB0dXJlLgoKCSogaW5jbHVkZS9kaW5wdXQuaDogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUFkZGVkIG1pc3Npbmcgc3RydWN0LgoKCSogZGxscy9kc291bmQvYnVmZmVyLmMsIGRsbHMvZHNvdW5kL2Rzb3VuZC5jLAoJICBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jLCBkbGxzL2Rzb3VuZC9kc291bmRfcHJpdmF0ZS5oLAoJICBkbGxzL2Rzb3VuZC9taXhlci5jLCBkbGxzL2Rzb3VuZC9wcmltYXJ5LmM6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQ29uc29saWRhdGUgc2Vjb25kYXJ5IGJ1ZmZlciBsaXN0IHByb2Nlc3NpbmcgYW5kIGxvY2tpbmcuCglUd28gbmV3IGZ1bmN0aW9ucyBEU09VTkRfQWRkQnVmZmVyIGFuZCBEU09VTkRfUmVtb3ZlQnVmZmVyCgloYXZlIGJlZW4gYWRkZWQgYW5kIHRoZSBsb2NraW5nIGhhcyBiZWVuIG1vdmVkIGludG8gdGhlc2UgZnVuY3Rpb25zLgoJUmVuYW1lZCBJRGlyZWN0U291bmQgbG9jayB0byBidWZmZXJfbGlzdF9sb2NrLgoJUmVtb3ZlZCByZWR1bmRhbnQgdGVzdCBmb3IgSUlEX0lEaXJlY3RTb3VuZE5vdGlmeSBhbmQKCUlJRF9JRGlyZWN0U291bmROb3RpZnk4IGJlY2F1c2UgdGhleSBhcmUgdGhlIHNhbWUuCglSZW1vdmVkIGNoZWNrIGZvciBpbnZhbGlkIGJ1ZmZlcnMgb24gbGlzdCBiZWNhdXNlIHRoYXQgc2hvdWxkbid0CgloYXBwZW4gYW55bW9yZSBiZWNhdXNlIG9mIGZpeGVkIDNkIGJ1ZmZlciByZWZlcmVuY2UgY291bnRpbmcuCglNaW5vciBjb2RlIGNsZWFudXBzLgoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYzogRmlsaXAgTmF2YXJhIDx4bmF2YXJhQHZvbG55LmN6PgoJLSBEcmF3IHRoZSBXaXphcmQ5NyBoZWFkZXIgYml0bWFwcyBiZWZvcmUgZHJhd2luZyB0aGUgaGVhZGVyIHN0cmluZ3MuCgktIENlbnRlciB0aGUgaGVhZGVyIGJpdG1hcCBvZiB0aGUgbmV3IFdpemFyZDk3IGNvcnJlY3RseS4KCS0gRGlzcGxheSB0aGUgY29ycmVjdCB3aXphcmQgdGl0bGUgZm9yIGFueSB3aXphcmQgdHlwZSBhbmQgZG8gbm90CgkgIGNoYW5nZSBpdCBmb3IgcmVxdWxhciBwcm9wZXJ0eSBzaGVldHMuCgoyMDA0LTA5LTA2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9hdmlmaWwzMi9hY21zdHJlYW0uYywgZGxscy9hdmlmaWwzMi9hdmlmaWxlLmMsCgkgIGRsbHMvYXZpZmlsMzIvZWRpdHN0cmVhbS5jLCBkbGxzL2F2aWZpbDMyL2ZhY3RvcnkuYywKCSAgZGxscy9hdmlmaWwzMi9nZXRmcmFtZS5jLCBkbGxzL2F2aWZpbDMyL2ljbXN0cmVhbS5jLAoJICBkbGxzL2F2aWZpbDMyL3RtcGZpbGUuYywgZGxscy9hdmlmaWwzMi93YXZmaWxlLmMsCgkgIGRsbHMvZDNkeG9mL2QzZHhvZi5jLCBkbGxzL2QzZHhvZi9tYWluLmMsIGRsbHMvZG1jb21wb3MvY29tcG9zZXIuYywKCSAgZGxscy9kbWNvbXBvcy9kbWNvbXBvc19tYWluLmMsIGRsbHMvZG1jb21wb3Mvc2lnbnBvc3R0cmFjay5jLAoJICBkbGxzL2RtaW1lL2RtaW1lX21haW4uYywgZGxscy9kbWltZS9wYXR0ZXJudHJhY2suYywKCSAgZGxscy9kbWltZS9wZXJmb3JtYW5jZS5jLCBkbGxzL2RtaW1lL3NlZ21lbnRzdGF0ZS5jLAoJICBkbGxzL2RtaW1lL3Rvb2wuYywgZGxscy9kbXN0eWxlL2Rtc3R5bGVfbWFpbi5jLAoJICBkbGxzL2Rtc3ludGgvZG1zeW50aF9tYWluLmMsIGRsbHMvZG1zeW50aC9zeW50aC5jLAoJICBkbGxzL2Rtc3ludGgvc3ludGhzaW5rLmMsIGRsbHMvZG11c2ljL2J1ZmZlci5jLCBkbGxzL2RtdXNpYy9jbG9jay5jLAoJICBkbGxzL2RtdXNpYy9kbXVzaWMuYywgZGxscy9kbXVzaWMvZG11c2ljX21haW4uYywKCSAgZGxscy9kbXVzaWMvZG93bmxvYWQuYywgZGxscy9kbXVzaWMvZG93bmxvYWRlZGluc3RydW1lbnQuYywKCSAgZGxscy9kbXVzaWMvcG9ydC5jLCBkbGxzL2RtdXNpYy9wb3J0ZG93bmxvYWQuYywgZGxscy9kbXVzaWMvdGhydS5jLAoJICBkbGxzL2RwbGF5eC9kcGNsYXNzZmFjdG9yeS5jLCBkbGxzL2RwbGF5eC9kcGxheS5jLAoJICBkbGxzL2RwbGF5eC9kcGxheXNwLmMsIGRsbHMvZHBsYXl4L2RwbG9iYnkuYywgZGxscy9kcGxheXgvbG9iYnlzcC5jLAoJICBkbGxzL2R4ZGlhZ24vY29udGFpbmVyLmMsIGRsbHMvZHhkaWFnbi9keGRpYWdfbWFpbi5jLAoJICBkbGxzL2R4ZGlhZ24vcHJvdmlkZXIuYywgZGxscy9zaGRvY3Z3L2NsYXNzaW5mby5jLAoJICBkbGxzL3NoZG9jdncvZXZlbnRzLmMsIGRsbHMvc2hkb2N2dy9mYWN0b3J5LmMsIGRsbHMvc2hkb2N2dy9taXNjLmMsCgkgIGRsbHMvc2hkb2N2dy9vbGVvYmplY3QuYywgZGxscy9zaGRvY3Z3L3BlcnNpc3QuYywKCSAgZGxscy9zaGRvY3Z3L3dlYmJyb3dzZXIuYzoKCVJlbW92ZWQgc29tZSB1c2VzIG9mIHRoZSBub24tc3RhbmRhcmQgSUNPTV9USElTIG1hY3JvLgoKCSogZGxscy9tc3dzb2NrL21zd3NvY2suc3BlYywgZGxscy93aW5zb2NrL01ha2VmaWxlLmluLAoJICBkbGxzL3dpbnNvY2svcHJvdG9jb2wuYywgZGxscy93aW5zb2NrL3NvY2tldC5jLAoJICBkbGxzL3dzb2NrMzIvcHJvdG9jb2wuYywgZGxscy93c29jazMyL3dzb2NrMzIuc3BlYzoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJTW92ZSBpbXBsZW1lbnRhdGlvbiBvZiBFbnVtUHJvdG9jb2xze0EsV30gZnJvbSB3c29jazMyIHRvIHdzMl8zMi4KCUZvcndhcmQge21zd3NvY2ssd3NvY2szMn0uRW51bVByb3RvY29sc3tBLFd9IHRvIHdzMl8zMi5XU0FFbnVtUHJvdG9jb2xze0EsV30uCglJbXByb3ZlIHNvbWUgdHJhY2VzLgoKCSogZGxscy9vbGUzMi9vbGUyLmMsIGRsbHMvb2xlMzIvdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvb2xlMzIvdGVzdHMvcHJvcHZhcmlhbnQuYzoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gRml4IFByb3BWYXJpYW50Q29weSBmb3IgVlRfTFBTVFIgYW5kIFZUX0xQV1NUUi4KCS0gVGVzdCBjYXNlIFZUX0JTVFIsIFZUX0xQU1RSIGFuZCBWVF9MUFdTVFIuCgoJKiBkbGxzL250ZGxsL3Rlc3RzL2dlbmVyYXRlZC5jLCB0b29scy93aW5hcGkvdGVzdHMuZGF0OgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglUZXN0IHNvbWUgbW9yZSBudGRsbCB0eXBlcy4KCXRlc3RzLmRhdDogUmVtb3ZlIHR5cGVzIHRoYXQgZG9uJ3QgZXhpc3QsIHdoZXRoZXIgaW4gdGhlIFdpbmRvd3Mgb3IKCVdpbmUgaGVhZGVycy4KCgkqIGRsbHMvbnRkbGwvdGltZS5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJTW9yZSBkZWZpbmVzIGZvciBUWl9JTkZPLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gT2JleSBUQkNEUkZfTk9PRkZTRVQgZm9yIHRoZSBidXR0b24gdGV4dC4KCS0gTWFrZSBhbmNob3IgaGlnaGxpZ2h0aW5nIGJlaGF2ZSBtb3JlIGxpa2UgbmF0aXZlIHZlcnNpb24uCgktIERvbid0IHJlY2FsY3VsYXRlIHRvb2xiYXIgaW4gVE9PTEJBUl9Vbmt3bjQ2MC4KCS0gT2JleSBXTV9TRVRSRURSQVcgZm9yIHRoZSBXTV9FUkFTRUJLR05EIG1lc3NhZ2UgYXMgd2VsbCBhcwoJICBXTV9QQUlOVC4KCgkqIGRsbHMvZGlucHV0L2RldmljZS5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJV2hlbiBhY3R1YWwgb2Zmc2V0IGRvZXNuJ3QgbWF0Y2ggdGhlIHNwZWNpZmllZCBvZmZzZXQsIHVzZSB0aGUgYWN0dWFsCglvZmZzZXQuCgoJKiBkbGxzL21zaS9tc2kuYywgZGxscy9tc2kvbXNpLnNwZWMsIGRsbHMvbXNpL3BhY2thZ2UuYywgaW5jbHVkZS9tc2kuaDoKCUtldmluIEtvbHR6YXUgPGtldmluQHBsb3Aub3JnPgoJUGFydGlhbCBpbXBsZW1lbnRhdGlvbiBvZiBNc2lHZXRGaWxlVmVyc2lvbkEvVy4KCgkqIGluY2x1ZGUvZ3VpZGRlZi5oLCBpbmNsdWRlL3JwY3Byb3h5Lmg6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglNYWtlIEdVSURzIG5vbi1jb25zdCB3aGVuIGNvbXBpbGluZyBNSURML3dpZGwgZ2VuZXJhdGVkIHByb3hpZXMuCgoJKiBkbGxzL2Ftc3RyZWFtL2Ftc3RyZWFtLmMsIGRsbHMvYW1zdHJlYW0vbWFpbi5jLAoJICBkbGxzL2NvbWNhdC9mYWN0b3J5LmMsIGRsbHMvY29tY2F0L2luZm9ybWF0aW9uLmMsCgkgIGRsbHMvY29tbWRsZy9maWxlZGxnYnJvd3Nlci5jLCBkbGxzL2RldmVudW0vY3JlYXRlZGV2ZW51bS5jLAoJICBkbGxzL2RldmVudW0vZmFjdG9yeS5jLCBkbGxzL2RldmVudW0vbWVkaWFjYXRlbnVtLmMsCgkgIGRsbHMvZGV2ZW51bS9wYXJzZWRpc3BsYXluYW1lLmMsIGRsbHMvZG1iYW5kL2RtYmFuZF9tYWluLmMsCgkgIGRsbHMvZG1sb2FkZXIvY2xhc3NmYWN0b3J5LmMsIGRsbHMvZG1zY3JpcHQvZG1zY3JpcHRfbWFpbi5jLAoJICBkbGxzL2RwbmV0L2FkZHJlc3MuYywgZGxscy9kcG5ldC9jbGllbnQuYywgZGxscy9kcG5ldC9kcG5ldF9tYWluLmMsCgkgIGRsbHMvZHN3YXZlL2Rzd2F2ZV9tYWluLmMsIGRsbHMvaXRzcy9pdHNzLmMsIGRsbHMvaXRzcy9tb25pa2VyLmMsCgkgIGRsbHMvaXRzcy9zdG9yYWdlLmMsIGRsbHMvbWxhbmcvbWxhbmcuYywgZGxscy9tc2Rtby9kbW9yZWcuYywKCSAgZGxscy9tc2kvbXNpLmMsIGRsbHMvb2xlMzIvZnRtYXJzaGFsLmMsIGRsbHMvb2xlMzIvaWZzLmMsCgkgIGRsbHMvb2xlYXV0MzIvb2xlZm9udC5jLCBkbGxzL3JwY3J0NC9jcHNmLmMsIGRsbHMvcnBjcnQ0L2NzdHViLmMsCgkgIGRsbHMvcnBjcnQ0L25kcl9vbGUuYywgZGxscy9zaGVsbDMyL2RyYWdkcm9waGVscGVyLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGZsZHJfZGVza3RvcC5jLCBkbGxzL3NoZWxsMzIvc2hmbGRyX2ZzLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGZsZHJfbXljb21wLmMsIGRsbHMvc2hsd2FwaS9hc3NvYy5jLAoJICBkbGxzL3NobHdhcGkvaXN0cmVhbS5jLCBkbGxzL3NobHdhcGkvcmVnc3RyZWFtLmMsIGRsbHMvdXJsbW9uL3Vtb24uYzoKCVJlbW92ZWQgc29tZSB1c2VzIG9mIHRoZSBub24tc3RhbmRhcmQgSUNPTV9USElTIG1hY3JvLgoKCSogZGxscy9nZGkvdGVzdHMvZ2VuZXJhdGVkLmMsIGRsbHMva2VybmVsL3Rlc3RzL2dlbmVyYXRlZC5jLAoJICBkbGxzL250ZGxsL3Rlc3RzL2dlbmVyYXRlZC5jLCBkbGxzL3NoZWxsMzIvdGVzdHMvZ2VuZXJhdGVkLmMsCgkgIGRsbHMvc2hsd2FwaS90ZXN0cy9nZW5lcmF0ZWQuYywgZGxscy91cmxtb24vdGVzdHMvZ2VuZXJhdGVkLmMsCgkgIGRsbHMvdXNlci90ZXN0cy9nZW5lcmF0ZWQuYywgZGxscy93aW5pbmV0L3Rlc3RzL2dlbmVyYXRlZC5jLAoJICB0b29scy93aW5hcGkvd2luYXBpX3Rlc3Q6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCURpc2FibGUgTVNWQyB3YXJuaW5nIDQxMTYgdG8gYXZvaWQgdGhlICd1bm5hbWVkIHR5cGUgZGVmaW5pdGlvbiBpbgoJcGFyZW50aGVzZXMnIHdhcm5pbmcgY2F1c2VkIGJ5IFRZUEVfQUxJR05NRU5UKCkuCgoJKiBkbGxzL2FkdmFwaTMyL3NlcnZpY2UuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJUmV0dXJuIHRoZSBjb3JyZWN0IGVycm9yIHdoZW4gT3BlblNlcnZpY2UgaXMgY2FsbGVkIHdpdGggYQoJbm9uLWV4aXN0aW5nIHNlcnZpY2UuCgoJKiBkbGxzL2NvbW1kbGcvY2RsZ19QbC5yYzogSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCVRyYW5zbGF0aW9uIHVwZGF0ZS4KCgkqIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbmdkaS5oOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCU1vdmUgTXVsRGl2IHByb3RvdHlwZSBmcm9tIHdpbmdkaS5oIHRvIHdpbmJhc2UuaCB3aGVyZSBpdCBiZWxvbmdzLgoKCSogaW5jbHVkZS93aW5jcnlwdC5oOiBNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglBZGRlZCBzb21lIGRlZmluZXMgZm9yIENyeXB0e0dldC9TZXR9S2V5UGFyYW0uCgoJKiBkbGxzL3dpbmluZXQvaHR0cC5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQ2hlY2sgZm9yIG1vcmUgc3RhbmRhcmQgaGVhZGVycy4KCgkqIHRvb2xzL2JpbjJyZXMuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJRml4IGJpbjJyZXMgaGVscCB0ZXh0LgoKCSogZGxscy9udGRsbC9jcml0c2VjdGlvbi5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglJbXByb3ZlIGRvY3VtZW50YXRpb24gZm9yIGNyaXRpY2FsIHNlY3Rpb25zLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMi5oLCBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmM6CglLZXZpbiBLb2x0emF1IDxrZXZpbkBwbG9wLm9yZz4KCUZpeCBidWcgd2l0aCBjaGFpbmVkIG1lc3NhZ2VzLgoKCSogdG9vbHMvd2lkbC9wcm94eS5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CgktIG1ha2UgdGhlIHdpZGwgZ2VuZXJhdGVkIHByb3h5LXN0dWIgY29kZSBjb21waWxhYmxlCgktIGdlbmVyYXRlIG1hcnNoYWxsaW5nIGFuZCB1bm1hcnNoYWxsaW5nIGNvZGUgZm9yIHByb3hpZXMKCS0gZ2VuZXJhdGUgZXhjZXB0aW9uIGhhbmRsaW5nIGNvbnN0cnVjdHMKCgkqIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvc2NoZW1hZGVmLmgsIGluY2x1ZGUvdG1zY2hlbWEuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRGVmaW5lIHRoZSB0bXNjaGVtYS5oIGNvbnN0YW50cyB1c2luZyBlbnVtZXJhdGlvbnMgYW5kIHRoZSBtYWNyb3MKCXByb3ZpZGVkIGJ5IHNjaGVtYWRlZi5oLgoKCSogZGxscy93aW5pbmV0L2Z0cC5jOiBLcnp5c3p0b2YgRm9sdG1hbiA8a2ZvbHRtYW5AcG9ydGFsLm9uZXQucGw+CgktIFJldmVyc2VkIHRoZSBhc3NlcnRpb24gY2F1c2luZyBJbnRlcm5ldENvbm5lY3QgdG8gYWx3YXlzIGZhaWwuCgktIEZUUF9Db252ZXJ0RmlsZVByb3A6IFdJTjMyX0ZJTkRfREFUQSBjb250YWlucyBwcm9wZXIgbW9kaWZpY2F0aW9uCgkgIGFuZCBjcmVhdGlvbiB0aW1lLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmM6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIEFkZCBleHBvcnRzIGZvciBtaXNzaW5nIG9yZGluYWxzIDE5MS0xOTQuCgktIFN0dWIgZm9yIFNIVXBkYXRlSW1hZ2VXLgoKCSogZGxscy9xdWFydHovbWFpbi5jLCBkbGxzL3F1YXJ0ei9xdWFydHouc3BlYzoKCUNocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUFkZGVkIHN0dWJzIGZvciBBbXBGYWN0b3JUb0RCIGFuZCBEQlRvQW1wRmFjdG9yLgoJQWRkZWQgR2V0UHJveHlEbGxJbmZvLgoKCSogZGxscy9kYmdoZWxwL3N0YWJzLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUJldHRlciBmaXggZm9yIGluY2x1ZGVzIHdpdGggcmVsYXRpdmUgcGF0aHMuCgoyMDA0LTA5LTAzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvd2luaW5ldC9NYWtlZmlsZS5pbiwKCSAgZGxscy93aW5pbmV0L2Z0cC5jLCBkbGxzL3dpbmluZXQvaW50ZXJuZXQuaCwKCSAgZGxscy93aW5pbmV0L25ldGNvbm5lY3Rpb24uYywgaW5jbHVkZS93aW5zb2NrLmg6CglTdGV2ZW4gRWR3YXJkcyA8c3RldmVuX2VkNDE1M0B5YWhvby5jb20+CglVc2UgV2luZG93cyBzb2NrZXRzIHdoZW4gYnVpbGRpbmcgV2luaW5ldCBvbiBNaW5ndy4KCgkqIGRsbHMvZGlucHV0L2pveXN0aWNrX2xpbnV4LmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglSZWFkIGRldmljZSBuYW1lIGZyb20gZGV2aWNlIGlmIHBvc3NpYmxlLgoJRml4IGVudW1lcmF0ZSBvcGVuIGJ1Zy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL3dpbmluZXQvY29va2llLmMsCgkgIGRsbHMvd2luaW5ldC9kaWFsb2dzLmMsIGRsbHMvd2luaW5ldC9odHRwLmMsIGRsbHMvd2luaW5ldC91cmxjYWNoZS5jLAoJICBkbGxzL3dpbmluZXQvdXRpbGl0eS5jLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBpbmNsdWRlL3dpbmUvcG9ydC5oOgoJQWRkZWQgY29uZmlndXJlIGNoZWNrIGZvciBzb2NrbGVuX3QuCgoJKiBkb2N1bWVudGF0aW9uL3Rlc3Rpbmcuc2dtbDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglSZW1vdmUgdW51c2VkIDxzY3JlZW4+IHNlY3Rpb24uCgoJKiBkbGxzL3V4dGhlbWUvc3R5bGVtYXAuYywgaW5jbHVkZS90bXNjaGVtYS5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglGaXggdHlwbyBpbiBSQlNfVU5DSEVDS0VESE9UIChzcG90dGVkIGJ5IEphbiBTY2h3ZWl6ZXIpLgoJRml4IHRoZSBIU0FTXyBlbnVtZXJhdGlvbi4KCgkqIGluY2x1ZGUvcnBjbmRyLmg6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVVzZSBvbmx5IHN0YW5kYXJkIEMgdHlwZXMgaW4gcnBjaGRyLmguCgoJKiBsaWJzL3dpbmUvbG9hZGVyLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpbGwgaW4gdGhlIE1aIGhlYWRlciBpbiBidWlsdGluIFBFIERMTHMuCgoJKiBkbGxzL3NobHdhcGkvdGVzdHMvb3JkaW5hbC5jOgoJU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtTGluZS5jb20+CglGaXhlZCB0ZXN0IG9mIEdldEFjY2VwdExhbmd1YWdlc0Egb24gTlQ0LgoKCSogZGxscy9kaW5wdXQvZGF0YV9mb3JtYXRzLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglSZW1vdmVkIHRyYWlsaW5nIHdoaXRlIHNwYWNlLgoJQWRkZWQgbW91c2UgZm9ybWF0cy4KCgkqIGRsbHMva2VybmVsL2Vudmlyb24uYywgZGxscy9rZXJuZWwvcHJvY2Vzcy5jLCBkbGxzL21zdmNydC9maWxlLmMsCgkgIGRsbHMvbXN2Y3J0L21zdmNydC5oLCBkbGxzL21zdmNydC9wcm9jZXNzLmMsCgkgIGRsbHMvbXN2Y3J0L3Rlc3RzL2ZpbGUuYzoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJLSBtc3ZjcnQ6IHRoZSBmaWxlIGRlc2NyaXB0b3JzIGFyZSBub3cgaW5oZXJpdGVkIGJldHdlZW4gcGFyZW50L2NoaWxkCgkgIHByb2Nlc3NlcwoJLSBrZXJuZWwzMi5DcmVhdGVQcm9jZXNzOiBtYWtlIHVzZSBvZiB0aGUgKnJlc2VydmVkMiBmaWVsZHMgZm9yCgkgIEMtUnVuVGltZSBkYXRhIGluaGVyaXRhbmNlCgoJKiBkbGxzL29sZTMyL29sZTIuYywgZGxscy9vbGUzMi90ZXN0cy8uY3ZzaWdub3JlLAoJICBkbGxzL29sZTMyL3Rlc3RzL01ha2VmaWxlLmluLCBkbGxzL29sZTMyL3Rlc3RzL3Byb3B2YXJpYW50LmM6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIEZpeCBQcm9wVmFyaWFudENsZWFyIHRvIHJlamVjdCBpbnZhbGlkIHR5cGVzLgoJLSBEb24ndCBjcmFzaCBvbiBOVUxMIHBvaW50ZXJzLgoJLSBBZGQgdGVzdCBjYXNlLgoKCSogZGxscy9ycGNydDQvTWFrZWZpbGUuaW4sIGRsbHMvcnBjcnQ0L3JwY19iaW5kaW5nLmMsCgkgIGRsbHMvcnBjcnQ0L3JwY19zZXJ2ZXIuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUF2b2lkIG5vbi1zdGFuZGFyZCB0eXBlcyBpbiBycGNkY2VwLmguCgoJKiBpbmNsdWRlL3JwY25kci5oOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFkZGVkIG1pc3NpbmcgZmllbGQgdG8gTUlETF9TVFVCX01FU1NBR0UuCgoJKiBpbmNsdWRlL3JwY2RjZXAuaDogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQXZvaWQgbm9uLXN0YW5kYXJkIHR5cGVzLgoKCSogaW5jbHVkZS9ycGNwcm94eS5oOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglVcGRhdGUgYSB1cmwuCgoJKiBkbGxzL3NobHdhcGkvcGF0aC5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglEb24ndCByZWFkIHBhc3QgZW5kIG9mIHRhYmxlIGluIFBhdGhGaWxlRXhpc3RzRGVmRXh0Vy4KCjIwMDQtMDktMDIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2FkdmFwaTMyL3JlZ2lzdHJ5LmMsIGRsbHMvYWR2YXBpMzIvc2VydmljZS5jLAoJICBkbGxzL2F2aWZpbDMyL2FjbXN0cmVhbS5jLCBkbGxzL2F2aWZpbDMyL2FwaS5jLAoJICBkbGxzL2F2aWZpbDMyL2F2aWZpbGUuYywgZGxscy9hdmlmaWwzMi9lZGl0c3RyZWFtLmMsCgkgIGRsbHMvYXZpZmlsMzIvaWNtc3RyZWFtLmMsIGRsbHMvYXZpZmlsMzIvdG1wZmlsZS5jLAoJICBkbGxzL2NhYmluZXQvY2FiZXh0cmFjdC5jLCBkbGxzL2NhYmluZXQvY2FiaW5ldF9tYWluLmMsCgkgIGRsbHMvY2FiaW5ldC9mZGkuYywgZGxscy9jb21jdGwzMi9jb21ib2V4LmMsCgkgIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jLCBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmMsCgkgIGRsbHMvY29tY3RsMzIvZGF0ZXRpbWUuYywgZGxscy9jb21jdGwzMi9oZWFkZXIuYywKCSAgZGxscy9jb21jdGwzMi9saXN0dmlldy5jLCBkbGxzL2NvbWN0bDMyL3JlYmFyLmMsCgkgIGRsbHMvY29tY3RsMzIvc3lzbGluay5jLCBkbGxzL2NvbWN0bDMyL3RhYi5jLAoJICBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYywgZGxscy9jb21jdGwzMi90b29sdGlwcy5jLAoJICBkbGxzL2NvbWN0bDMyL3RyYWNrYmFyLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnMzEuYzoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJRml4IHNpZ25lZC91bnNpZ25lZCBjb21wYXJpc29uIHdhcm5pbmdzLgoKCSogZGxscy93aW5tbS93aW5lb3NzL21peGVyLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCUZpeCBhIGhlYXAgY29ycnVwdGlvbiBpbiBNSVhfSW5pdCAoIHNpemVvZigpICE9IHN0cmxlbigpICkuCgoJKiBpbmNsdWRlL2RpbnB1dC5oOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQWRkZWQgc29tZSBtaXNzaW5nIGRlZmluZXMuCgoJKiBkbGxzL3NobHdhcGkvcGF0aC5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglVc2UgdGhlIEFDUCBkZWZpbmUgaW4gTUIvV0MgY29udmVyc2lvbiBmdW5jdGlvbnMuCgoJKiBkbGxzL3VzZXIvcGFpbnRpbmcuYywgZGxscy91c2VyL3Rlc3RzL21zZy5jOgoJR2V0VXBkYXRlUmVjdCBzaG91bGQgcmV0dXJuIFRSVUUgZXZlbiBpZiBvbmx5IHRoZSBub24tY2xpZW50IGFyZWEgaXMKCWludmFsaWQgKHJlcG9ydGVkIGJ5IFJlaW4gS2xhemVzKS4KCgkqIGRsbHMvZGlucHV0L2RldmljZS5jLCBkbGxzL2RpbnB1dC9kZXZpY2VfcHJpdmF0ZS5oLAoJICBkbGxzL2RpbnB1dC9qb3lzdGlja19saW51eC5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUFkZGVkIHN1cHBvcnQgZm9yIGFsdGVybmF0ZSBkYXRhIGZvcm1hdHMuCgoJKiBkbGxzL21sYW5nL3Rlc3RzL21sYW5nLmMsIGRsbHMvb2xlMzIvdGVzdHMvc3RvcmFnZTMyLmMsCgkgIGRsbHMvdXNlci90ZXN0cy9jbGlwYm9hcmQuYywgZGxscy91c2VyL3Rlc3RzL2RpYWxvZy5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBZGRlZCBtaXNzaW5nIHRyYWlsaW5nICdcbidzIHRvIG9rKCkgY2FsbHMuCgoJKiBpbmNsdWRlL3JwYy5oLCBpbmNsdWRlL3JwY2RjZS5oOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJVXNlIHN0YW5kYXJkIHR5cGVzIGluIHJwY3J0NCBoZWFkZXJzIHNvIHRoZXkgY2FuIGJlIHVzZWQgdG8gYnVpbGQgTUlETAoJZ2VuZXJhdGVkIHByb3h5IGNvZGUuCgoJKiBkbGxzL3NobHdhcGkvcGF0aC5jOiBKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCUZpeCBidWZmZXIgb3ZlcmZsb3cgaW4gUGF0aFNldERsZ0l0ZW1QYXRoVyB0aGF0IGxlZCB0byBhIHRyYXNoZWQKCXN0YWNrLgoKCSogZGxscy9nZGkvY2xpcHBpbmcuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJRGVmYXVsdCBjbGlwcGluZyByZWdpb24gc2hvdWxkIGJlIHJlc29sdXRpb24gb2YgdGhlIERDLCBub3QgdGhlCgljdXJyZW50IHZpc2libGUgcmVnaW9uLgoKCSogZGxscy9jb21jdGwzMi90ZXN0cy9pbWFnZWxpc3QuYzoKCUZlcmVuYyBXYWduZXIgPHdmZXJpQGFmYXZhbnQuZWx0ZS5odT4KCUFkZGVkIFxuIHRvIG9rKCkgc3RyaW5ncyBpbiB0aGUgaW1hZ2VsaXN0IHRlc3RzLgoKCSogdG9vbHMvd2lkbC9wcm94eS5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglPdXRwdXQgY29kZSB0byBjbGVhciBPVVQgdmFyaWFibGVzIGluIHByb3h5IGNvZGUuCgoJKiBkbGxzL2dkaS90ZXN0cy9nZGlvYmouYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIGEgdGVzdCBzaG93aW5nIGhvdyBHREkgc2NhbGVzIGJpdG1hcCBmb250IG1ldHJpY3MuCgoJKiBkbGxzL2F0bC9hdGwuc3BlYywgZGxscy9hdGwvYXRsX21haW4uYzoKCVN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJQWRkZWQgc3R1YiBmb3IgQXRsTW9kdWxlVXBkYXRlUmVnaXN0cnlGcm9tUmVzb3VyY2VELgoKCSogZG9jdW1lbnRhdGlvbi90ZXN0aW5nLnNnbWw6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJVXBkYXRlIHRoZSBpbnN0cnVjdGlvbnMgZGVzY3JpYmluZyBob3cgdG8gY29tcGlsZSB0aGUgY29uZm9ybWFuY2UKCXRlc3RzIHdpdGggTVNWQyBhbmQgdGhlIE1pY3Jvc29mdCBoZWFkZXJzLgoKCSogZGxscy9vbGVhdXQzMi90ZXN0cy92YXJ0eXBlLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRGV0ZWN0IHdoZXRoZXIgVmlzdWFsIFN0dWRpbyBjYW4gY2FzdCBfX3VpbnQ2NCdzIHRvIGZsb2F0cyBhbmQgZGlzYWJsZQoJdGhlIHJlbGV2YW50IHRlc3RzIGlmIGl0IGNhbm5vdC4KCUZpeCBhIGRvdWJsZSB0byBmbG9hdCBsaXRlcmFsIGNvbnZlcnNpb24gd2FybmluZy4KCjIwMDQtMDktMDEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzZXJ2ZXIvcmVnaW9uLmMsIHNlcnZlci91c2VyLmg6IEFkZGVkIHJlY3RfaW5fcmVnaW9uIGZ1bmN0aW9uLgoKCSogZGxscy91c2VyL01ha2VmaWxlLmluLCBkbGxzL3VzZXIva2JkMTYuYywKCSAgZGxscy91c2VyL2tleWJvYXJkLmRydi5zcGVjLCBkbGxzL3VzZXIvbWVzc2FnZS5jLCBkbGxzL3VzZXIvbW91c2UuYywKCSAgZGxscy91c2VyL21vdXNlMTYuYywgd2luZG93cy9pbnB1dC5jLCB3aW5kb3dzL2tleWJvYXJkLmM6CglNb3ZlZCBrZXlib2FyZC5jIHRvIGRsbHMvdXNlci9rYmQxNi5jLgoJS2V5Ym9hcmQsIG1vdXNlIGFuZCBkaXNwbGF5IGRyaXZlcnMgYXJlIDE2LWJpdCBvbmx5LgoKCSogZGxscy9vcGVuZ2wzMi93Z2wuYzogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUNvbnZlcnQgbW9zdGx5IHVzZWxlc3MgRVJSIHRvIFdBUk4gbWVzc2FnZS4KCgkqIGRsbHMvYWR2YXBpMzIvdGVzdHMvY3J5cHQuYzogSmFtZXMgSGF3a2lucyA8dHJ1aWtlbkBnbWFpbC5jb20+CgktIHJlbW92ZSB1bm5lY2Vzc2FyeSB0eXBlIGNvbnZlcnNpb25zCgktIGFkZGVkIHRlc3RzIGZvciBjcnlwdAoKCSogZGxscy91c2VyL01ha2VmaWxlLmluLCBkbGxzL3VzZXIvY2FjaGUuYywgZGxscy91c2VyL2NvbnRyb2xzLmgsCgkgIGRsbHMvdXNlci90ZXh0LmMsIGRsbHMvdXNlci91aXRvb2xzLmMsIGluY2x1ZGUvdXNlci5oLAoJICB3aW5kb3dzL2RlZnduZC5jLCB3aW5kb3dzL25vbmNsaWVudC5jLCB3aW5kb3dzL3BhaW50aW5nLmM6CglNb3ZlZCBzb21lIHdpbmRvdyBwYWludGluZyBmdW5jdGlvbnMgdG8gdWl0b29scy5jLgoKCSogZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jLCBpbmNsdWRlL3dpbmUvZXhjZXB0aW9uLmgsIGluY2x1ZGUvd2lubnQuaCwKCSAgd2luZG93cy9kcml2ZXIuYzoKCUdldCByaWQgb2YgdGhlIFdJTkVfVU5VU0VEIG1hY3JvLgoKCSogZGxscy94MTFkcnYvd2lucG9zLmM6CglXZSBzdGlsbCBuZWVkIHRvIGxvb2sgZm9yIHRoZSB0b3AgcGFyZW50IHRoYXQgZG9lc24ndCBjbGlwIHNpYmxpbmdzIGluCglHZXREQyBiZWNhdXNlIG9mIHRoZSBYIHdpbmRvdyBjbGlwcGluZy4KCgkqIGRsbHMvZ2RpL2ZvbnQuYywgZGxscy9nZGkvdGVzdHMvLmN2c2lnbm9yZSwKCSAgZGxscy9nZGkvdGVzdHMvTWFrZWZpbGUuaW4sIGRsbHMvZ2RpL3Rlc3RzL2dkaW9iai5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWRkIGEgYmFzaWMgR0RJIExPR0ZPTlQgdGVzdCwgZml4IGEgY291cGxlIG9mIGZhaWx1cmVzLgoKCSogZGxscy9hZHZhcGkzMi9zZXJ2aWNlLmM6IEFsZXhhbmRlciBZYXdvcnNreSA8eWF3b3Jza3lAbWlndXNvZnQucnU+CglJbXBsZW1lbnRlZCBRdWVyeVNlcnZpY2VDb25maWdBLgoKCSogZm9udHMvLmN2c2lnbm9yZSwgZm9udHMvTWFrZWZpbGUuaW4sIGZvbnRzL3dpbmVfc3lzdGVtLnNmZDoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGQgY3lyaWxsaWMgZ2x5cGhzIHRvIFdpbmUgU3lzdGVtLgoKCSogZGxscy9hdGwvYXRsX21haW4uYzogU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtTGluZS5jb20+CglDaGVjayBmb3IgTlVMTCBiZWZvcmUgZG9pbmcgSXNFcXVhbEdVSUQoKSBpbgoJQXRsSW50ZXJuYWxRdWVyeUludGVyZmFjZS4KCgkqIGluY2x1ZGUvd2lubnQuaDogRml4ZWQgYWxpZ25tZW50IG9mIFRPS0VOX1NUQVRJU1RJQ1MuCgoJKiBkbGxzL21zdmNydC9leGNlcHQuYywgZGxscy9tc3ZjcnQvbG9jYWxlLmMsIGRsbHMvd2lubW0vbW1zeXN0ZW0uYzoKCUZ1bmN0aW9uIHBhcmFtZXRlcnMgZG9uJ3QgbmVlZCBXSU5FX1VOVVNFRC4KCgkqIGRsbHMvZ2RpL2dkaV9wcml2YXRlLmgsIGRsbHMvZ2RpL3BhdGguYywgZGxscy9tc3ZjcnQvbWFpbi5jLAoJICBkbGxzL29sZTMyL2NvbXBvYmpfcHJpdmF0ZS5oLCBpbmNsdWRlL3N0YWNrZnJhbWUuaDoKCUlubGluZSBmdW5jdGlvbnMgZG9uJ3QgbmVlZCBXSU5FX1VOVVNFRC4KCgkqIGRsbHMvb2xlYXV0MzIvdGVzdHMvc2FmZWFycmF5LmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJUmVtb3ZlIHJlZmVyZW5jZXMgdG8gSUNPTV9USElTIGFuZCBXSU5FX1VOVVNFRCBhcyB0aGV5IGRvbid0IGV4aXN0IG9uCglXaW5kb3dzLgoJRGVmaW5lIENPQkpNQUNST1Mgc28gd2UgZ2V0IHRoZSBJUmVjb3JkSW5mb18qIG1hY3Jvcy4KCgkqIGRsbHMvbnRkbGwvdGVzdHMvZ2VuZXJhdGVkLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRml4L3VwZGF0ZSB0aGUgVE9LRU5fU1RBVElTVElDUyBjaGVjay4KCgkqIHRvb2xzL3dpbmFwaS93aW5hcGlfdGVzdDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglEb24ndCBvdXRwdXQgdGhlIERFQ0xTUEVDX0FMSUdOKCkgZGlyZWN0aXZlcyBpbiB0aGUgVFlQRV9GSUVMRCB0ZXN0cy4KCgkqIGluY2x1ZGUvZGlucHV0Lmg6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglBZGRlZCBzb21lIG1pc3NpbmcgTFBDIHR5cGVkZWZzLgoKCSogZGxscy94MTFkcnYvLmN2c2lnbm9yZSwgZGxscy94MTFkcnYvTWFrZWZpbGUuaW4sCgkgIGRsbHMveDExZHJ2L3dpbmVjbGlwc3J2LmMsIGRvY3VtZW50YXRpb24vUEFDS0FHSU5HLAoJICBkb2N1bWVudGF0aW9uL3NhbXBsZXMvY29uZmlnLCBkb2N1bWVudGF0aW9uL3dpbmUubWFuLmluOgoJd2luZWNsaXBzcnYgaXMgbm8gbG9uZ2VyIHVzZWQsIHJlbW92ZSBpdC4KCgkqIGRsbHMvbnRkbGwvdGVzdHMvcnRsYml0bWFwLmMsIGluY2x1ZGUvd2ludGVybmwuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRGlzYWJsZSB0aGUgUnRsQml0TWFwIHRlc3RzIGlmIGNvbXBpbGluZyB3aXRoIHRoZSBNaWNyb3NvZnQgaGVhZGVycyBhcwoJdGhleSBhcmUgbWlzc2luZyBjcml0aWNhbCBzdHJ1Y3R1cmUgYW5kIEFQSSBkZWNsYXJhdGlvbnMuCgoJKiBkbGxzL3NobHdhcGkvc3RyaW5nLmMsIGRvY3VtZW50YXRpb24vaW1wbGVtZW50YXRpb24uc2dtbCwKCSAgcHJvZ3JhbXMvdGFza21nci9vcHRubWVudS5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBc3NvcnRlZCBzcGVsbGluZyBmaXhlcy4KCgkqIGluY2x1ZGUvZGlucHV0Lmg6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglBZGRlZCBzb21lIG1pc3NpbmcgZGZpbmVzLgoKCSogZGxscy9xdWFydHovZmlsdGVybWFwcGVyLmM6IENocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUZpeGVkIEZpbHRlck1hcHBlcjJfQ3JlYXRlQ2F0ZWdvcnkuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBzdXBwb3J0IGZvciB0aGUgQVVESU9ERVYgYW5kIE1JWEVSREVWIGVudmlyb25tZW50IHZhcmlhYmxlcy4KCjIwMDQtMDgtMzEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2RpbnB1dC9NYWtlZmlsZS5pbiwgZGxscy9kaW5wdXQvZGF0YV9mb3JtYXRzLmMsCgkgIGRsbHMvZGlucHV0L2RldmljZS5jLCBkbGxzL2RpbnB1dC9kZXZpY2VfcHJpdmF0ZS5oLAoJICBkbGxzL2RpbnB1dC9qb3lzdGlja19saW51eC5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUFkZGVkIGRlZmF1bHQgZGF0YSBmb3JtYXRzIGZvciBjX2RmRElKb3lzdGljayBhbmQgY19kZkRJSm95c3RpY2syLgoJQWRkZWQgb2JqZWN0IHByb3BlcnRpZXMgZm9yIG1vcmUgdGhhbiBvbmUgb2JqZWN0LgoJQWRkZWQgZXJyb3IgY2hlY2tzIGZvciBhY3F1aXJlZC4KCURlZmF1bHQgdG8gdXNpbmcgY19kZkRJSm95c3RpY2syIGRhdGEgZm9ybWF0LgoJVHJ5IHRvIHVzZSB1c2VyIHN1cHBsaWVkIGRhdGEgZm9ybWF0cyAob25seSB3b3JrcyBpZiBzYW1lIGFzIG9uZSBvZgoJdGhlIGRlZmF1bHRzKS4KCUNvZGUgY2xlYW51cCwgZXJyb3IgY2hlY2tpbmcgYW5kIHRyYWNpbmcgYWRkZWQuCglBZGRlZCBzdXBwb3J0IGZvciB1cCB0byA4IGF4aXMuCgoJKiBkbGxzL2Rzb3VuZC9kc291bmQuYywgZGxscy9kc291bmQvdGVzdHMvZHMzZC5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCURvbid0IHVzZSBEU0JDQVBTX3tDVFJMREVGQVVMVCxDVFJMQUxMfSBpbiBjYXBhYmlsaXR5LWR1bXBpbmcKCWZ1bmN0aW9ucyBzaW5jZSB0aGV5IGFyZSBub3RoaW5nIGJ1dCBhIGNvbWJpbmF0aW9uIG9mIG90aGVyIGZsYWdzIGFuZAoJYXJlIHRodXMgcmVkdW5kYW50LgoKCSogZGxscy9hZHZhcGkzMi9zZXJ2aWNlLmM6IEFsZXhhbmRlciBZYXdvcnNreSA8eWF3b3Jza3lAbWlndXNvZnQucnU+CglFeHBhbmQgSW1hZ2VQYXRoIGluIFF1ZXJ5U2VydmljZUNvbmZpZ1cuCgoJKiBkbGxzL2l0c3MvY2htX2xpYi5jLCBkbGxzL2l0c3MvY2htX2xpYi5oLCBkbGxzL2l0c3MvbHp4LmMsCgkgIGRsbHMvaXRzcy9senguaDoKCUdldCByaWQgb2YgQ1ZTIGtleXdvcmRzLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsCgkgIGRsbHMvc2hlbGwzMi91bmRvY3NoZWxsLmgsIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsCgkgIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWMsIGRsbHMvc2hsd2FwaS90ZXN0cy9vcmRpbmFsLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCURvbid0IGV4cG9ydCB0aGUgc2hlbGwzMiBTSEFsbG9jU2hhcmVkIGZ1bmN0aW9ucyBieSBuYW1lLgoJSW1wbGVtZW50IHRoZW0gYnkgY2FsbGluZyBvdXQgdGhlaXIgc2hsd2FwaSBlcXVpdmFsZW50ICh3aGljaCBoYWQgYQoJbXVjaCBtb3JlIGNvbXBsZXRlIGltcGxlbWVudGF0aW9uIGFueXdheSkuCglGaXggdGhlIHByb3RvdHlwZSBvZiBzaGx3YXBpJ3MgU0hBbGxvY1NoYXJlZCgpLgoJRG9uJ3QgY3Jhc2ggaWYgbHB2RGF0YSBpcyBOVUxMIGluIFNIQWxsb2NTaGFyZWQoKS4KCUFkZCBhIGNvbmZvcm1hbmNlIHRlc3QgdG8gc2hsd2FwaS4KCgkqIGRsbHMvd2lubW0vdGVzdHMvY2FwdHVyZS5jLCBkbGxzL3dpbm1tL3Rlc3RzL21peGVyLmMsCgkgIGRsbHMvd2lubW0vdGVzdHMvd2F2ZS5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCURvbid0IGluY2x1ZGUgJ21tZGRrLmgnLCBpdCdzIG5vdCBuZWVkZWQuIFRoZSB3aW5tbSB0ZXN0cyBjYW4gbm93IGJlCgljb21waWxlZCBvbiBXaW5kb3dzIHdpdGhvdXQgdGhlIERESy4KCgkqIGRsbHMvY29tY3RsMzIvdGVzdHMvaW1hZ2VsaXN0LmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJTVNWQyBkb2VzIG5vdCBsaWtlIHRoZSB0eXBlb2YoKSBpbiB0aGUgZnVuY3Rpb24gcG9pbnRlciBkZWNsYXJhdGlvbi4KCUZpeCBhIHdhcm5pbmcuCgoJKiBpbmNsdWRlL3dpbmRlZi5oLCBpbmNsdWRlL3dpbnRlcm5sLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFkZCBQU1ogdG8gd2luZGVmLmguCglBZGQgYSBjb3VwbGUgbWlzc2luZyBkZWNsYXJhdGlvbnMgdG8gd2ludGVybmwuaC4KCVR3ZWFrIFZNX0NPVU5URVJTIHRvIG1hdGNoIHRoZSBkZGsgZGVjbGFyYXRpb24uCgoJKiBkbGxzL2FkdmFwaTMyL3NlcnZpY2UuYzogQWxleGFuZGVyIFlhd29yc2t5IDx5YXdvcnNreUBtaWd1c29mdC5ydT4KCVNhbml0eSBjaGVjayB3aGVuIGNsb3Npbmcgc2VydmljZSBoYW5kbGUuCgoJKiBkbGxzL3ZlcnNpb24vaW5mby5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJU2V0IGxhc3QgZXJyb3IgdmFsdWVzIGNvbXBhdGlibGUgd2l0aCBXaW45eCBpbXBsZW1lbnRhdGlvbgoJb2YgR2V0RmlsZVZlcnNpb25JbmZvU2l6ZSwgUXVpY2tlbiBpbnN0YWxsZXIgZGVwZW5kcyBvbiBpdC4KCgkqIGRsbHMvd2luZXBzL2dlbmVyaWMucHBkOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJVXNlIDEvNCIgbWFyZ2lucyBmb3Igc29tZSBzdGFuZGFyZCBwYXBlciBzaXplcy4KCVR1cm4gVHlwZTQyIHN1cHBvcnQgb2ZmIGJ5IGRlZmF1bHQuCglCdW1wIHRoZSBGaWxlVmVyc2lvbi4KCgkqIGZvbnRzL3dpbmVfY291cmllci5zZmQ6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglDb21wbGV0ZSBjcDEyNTIgY292ZXJhZ2UuCglGaXggaGVpZ2h0IG9mICdJJy4KCgkqIERFVkVMT1BFUlMtSElOVFMsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL3VzZXIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvdXNlci9idXR0b24uYywgZGxscy91c2VyL2NvbWJvLmMsIGRsbHMvdXNlci9kZXNrdG9wLmMsCgkgIGRsbHMvdXNlci9lZGl0LmMsIGRsbHMvdXNlci9pY29udGl0bGUuYywgZGxscy91c2VyL2xpc3Rib3guYywKCSAgZGxscy91c2VyL21lbnUuYywgZGxscy91c2VyL3Njcm9sbC5jLCBkbGxzL3VzZXIvc3RhdGljLmMsCgkgIGRsbHMvdXNlci91aXRvb2xzLmMsIHRvb2xzL3dpbmFwaS9tc3ZjbWFrZXIsCgkgIHRvb2xzL3dpbmFwaS93aW5hcGlfY2xlYW51cDoKCU1vdmVkIGFsbCBmaWxlcyBmcm9tIHRoZSBjb250cm9scy8gZGlyZWN0b3J5IHRvIGRsbHMvdXNlci4KCgkqIGRsbHMvY29tbWRsZy9mb250ZGxnMTYuYywgZGxscy9nZGkvZW5obWV0YWZpbGUuYywgZGxscy9nZGkvZ2RpMTYuYywKCSAgZGxscy9nZGkvbWZkcnYvZ3JhcGhpY3MuYywgZGxscy9nZGkvbWZkcnYvdGV4dC5jLCBkbGxzL2dkaS9wZW4uYywKCSAgZGxscy91c2VyL2hvb2sxNi5jLCBkbGxzL3VzZXIvdXNlcjE2LmMsIGRsbHMvdXNlci93bmQxNi5jLAoJICBpbmNsdWRlL3dpbmUvd2luZ2RpMTYuaCwgd2luZG93cy9jdXJzb3JpY29uLmMsIHdpbmRvd3MvZGVmd25kLmMsCgkgIHdpbmRvd3Mvbm9uY2xpZW50LmMsIHdpbmRvd3Mvc3lzcGFyYW1zLmMsIHdpbmRvd3Mvd2lucG9zLmMsCgkgIHdpbmRvd3Mvd2lucHJvYy5jOgoJR2V0IHJpZCBvZiB0aGUgbm9uLXN0YW5kYXJkIENPTlZfUE9JTlQgYW5kIENPTlZfUkVDVCBmdW5jdGlvbnMuCgoyMDA0LTA4LTMwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9hZHZhcGkzMi9jcnlwdC5jOiBKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCU1ha2UgQ3J5cHRTZXRQcm92aWRlckV4IG9ubHkgZGVsZXRlIHRoZSAnTmFtZScgdmFsdWUgYW5kIG5vdCBkZWxldGUKCXRoZSBlbnRpcmUgJ1R5cGUgWFhYJyBrZXkgd2hlbiBkZWxldGluZyB0aGUgZGVmYXVsdCBwcm92aWRlci4KCgkqIGRsbHMvYWR2YXBpMzIvc2VydmljZS5jOiBBbGV4YW5kZXIgWWF3b3Jza3kgPHlhd29yc2t5QG1pZ3Vzb2Z0LnJ1PgoJQ2hhbmdlZCBTQ19IQU5ETEVzIGZyb20gSEtFWXMgdG8gcG9pbnRlcnMgdG8gaW50ZXJuYWwgc3RydWN0dXJlcy4KCgkqIGRsbHMvdXNlci9NYWtlZmlsZS5pbiwgd2luZG93cy9tZGkuYywgd2luZG93cy9zdHJ1Y3QzMi5jLAoJICB3aW5kb3dzL3N0cnVjdDMyLmgsIHdpbmRvd3Mvd2lucHJvYy5jOgoJUmVtb3ZlZCBzdHJ1Y3QzMi5bY2hdLgoKCSogZGxscy9kYmdoZWxwL2RiZ2hlbHAuYywgZGxscy9kYmdoZWxwL2RiZ2hlbHBfcHJpdmF0ZS5oLAoJICBkbGxzL2RiZ2hlbHAvZWxmX21vZHVsZS5jLCBkbGxzL2RiZ2hlbHAvbW9kdWxlLmMsIGRsbHMvZGJnaGVscC9tc2MuYywKCSAgZGxscy9kYmdoZWxwL3BlX21vZHVsZS5jLCBkbGxzL2RiZ2hlbHAvc3RhYnMuYywKCSAgZGxscy9kYmdoZWxwL3N5bWJvbC5jOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CgktIEZpeCBkZWJ1ZyBpbmZvIGxvb2stdXAgKGJ1ZyBpbiB0cmFuc2xhdGluZyB0aGUgUlZBIG9mIHRoZSBkZWJ1ZwoJICBkaXJlY3RvcnkpLgoJLSBGaXggY29kZSBmb3IgYWRkaW5nIFBFIGV4cG9ydCB0YWJsZSBhcyBkZWJ1ZyBpbmZvIChjcmFzaCB3aXRoIE5VTEwKCSAgcGFzc2VkIHRvIFJ0bEltYWdlRGlyZWN0b3J5RW50cnlUb0RhdGEpLgoJLSBGaXggY29tcHV0YXRpb24gb2Ygbm9uLXJlbG9jYXRhYmxlIEVMRiBzaGFyZWQgb2JqZWN0cyBzaXplLgoJLSBGaXggbG9hZGluZyAod2hpbGUgcGFyc2luZyB0aGUgbGluayBtYXApIG9mIG5ldyBub24tcmVsb2NhdGFibGUgRUxGCgkgIHNoYXJlZCBvYmplY3RzIChubyBsb25nZXIgdGFrZSBhY2NvdW50IGxvYWQtYWRkcmVzcyBvZiBsaW5rLW1hcCkuCgktIEZpbmlzaGVkIHRoZSBBVVRPX1BVQkxJQywgTk9fUFVCTElDUyBhbmQgUFVCTElDU19PTkxZIHN1cHBvcnQgZm9yIFBFIGFuZCBFTEYuCgktIENsZWFuZWQgdXAgcHVibGljIHN5bWJvbCBtYW5hZ2VtZW50ICh3aGljaCBzaG91bGQgbm93IHByb3Blcmx5IHdvcmspLgoKCSogZGxscy9hdGwvcmVnc3ZyLmMsIGRsbHMvbWxhbmcvTWFrZWZpbGUuaW4sIGRsbHMvbWxhbmcvbWxhbmcuYywKCSAgZGxscy9tbGFuZy9yZWdzdnIuYywgdG9vbHMvd2luZS5pbmY6CglTdGV2ZW4gRWR3YXJkcyA8c3RldmVuX2VkNDE1M0B5YWhvby5jb20+CglBZGQgRGxsUmVnaXN0ZXJTZXJ2ZXIgYW5kIGZyaWVuZHMgZm9yIG1sYW5nLgoKCSogcHJvZ3JhbXMvbm90ZXBhZC9tYWluLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglBbHNvIHJlY29nbml6ZSAnLycgYXMgdGhlIHN0YXJ0IG9mIGFuIG9wdGlvbi4KCUltcGxlbWVudCAnbm90ZXBhZCAvcCcuCglTaW1wbGlmeSBtYW55IHN0cmluZyBwYXJzaW5nIGxvb3BzLgoKCSogcHJvZ3JhbXMvd2luZW1lbnVidWlsZGVyL3dpbmVtZW51YnVpbGRlci5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBhIG1lbW9yeSBsZWFrLgoJSW1wcm92ZSB0aGUgR2V0RnVsbFBhdGhOYW1lKCkgZXJyb3IgY2hlY2tzLgoJU3RyaWN0ZXIgbWF0Y2ggY2hlY2sgaW4gR2V0TGlua0xvY2F0aW9uKCkuCglDbGFyaWZ5IHRoZSAnVW5rbm93biBsaW5rIGxvY2F0aW9uJyBtZXNzYWdlLgoKCSogZGxscy9yaWNoZWRpdC9yZWFkZXIuYzogRXZhbiBEZWF1YmwgPHdpbmVAd2FycGVkdmlldy5jb20+CglTdG9wIHByb2Nlc3NpbmcgaW5wdXQgc3RyZWFtIHdoZW4gdGhlIG91dGVybW9zdCBSVEYgZ3JvdXAgaXMgY2xvc2VkLgoKCSogZGxscy91c2VyL3VzZXIxNi5jLCB3aW5kb3dzL3BhaW50aW5nLmM6CglNb3ZlZCBhIGNvdXBsZSBvZiAxNi1iaXQgZnVuY3Rpb25zIHRvIHVzZXIxNi5jLgoKCSogZm9udHMvLmN2c2lnbm9yZSwgZm9udHMvTWFrZWZpbGUuaW4sIGZvbnRzL3dpbmVfY291cmllci5zZmQ6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkIGN5cmlsbGljIGdseXBocyB0byBXaW5lIENvdXJpZXIgYXQgMTMgcGl4ZWwgc2l6ZS4KCgkqIGluY2x1ZGUvZGlucHV0Lmg6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglBZGRlZCBzb21lIG1pc3NpbmcgZGVmaW5pdGlvbnMuCgoJKiBkbGxzL3VzZXIvY29tbTE2LmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVVzZSBIZWFwIGZ1bmN0aW9ucyBpbnN0ZWFkIG9mIG1hbGxvYy9mcmVlLgoKCSogaW5jbHVkZS9yaWNoZWRpdC5oOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBzb21lIGRlZmluZXMgdXNlZCBpbiBSaWNoRWRpdCAyLjAuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9maWxlLmM6IEZpbGlwIE5hdmFyYSA8eG5hdmFyYUB2b2xueS5jej4KCS0gRG9uJ3QgZXhwZWN0IHRoYXQgZHJpdmUgQzogZXhpc3RzLCB1c2UgdGhlIGRyaXZlIFdpbmRvd3MgaXMKCSAgaW5zdGFsbGVkIG9uIGluc3RlYWQuCgktIFJlbW92ZSBtaXNsZWFkaW5nIG1lc3NhZ2UgYWJvdXQgZmlsZSBtYXBwaW5nLgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliMi5jOiBGaWxpcCBOYXZhcmEgPHhuYXZhcmFAdm9sbnkuY3o+CglGb3Igbm9uLW92ZXJsYXBwZWQgd3JpdGVzIHRoZSBscE51bWJlck9mQnl0ZXNXcml0dGVuIHBhcmFtZXRlciBvZgoJV3JpdGVGaWxlIG11c3RuJ3QgYmUgTlVMTC4KCgkqIHByb2dyYW1zL21zaWV4ZWMvbXNpZXhlYy5jOiBLZXZpbiBLb2x0emF1IDxrZXZpbkBwbG9wLm9yZz4KCUNvcnJlY3QgcGFyc2luZyBvZiAvaSBhcmd1bWVudC4KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmM6IEZpbGlwIE5hdmFyYSA8eG5hdmFyYUB2b2xueS5jej4KCUZpeCBsb2FkaW5nIHdpemFyZCB0aXRsZSBhbmQgc3VidGl0bGUgZnJvbSByZXNvdXJjZXMuCgoJKiBkbGxzL2NvbW1kbGcvY2RsZ19QbC5yYzogSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCVBvbGlzaCB0cmFuc2xhdGlvbiB1cGRhdGUuCgoJKiBkbGxzL29sZWF1dDMyL29sZWF1dDMyLnJjLCBkbGxzL29sZWF1dDMyL29sZWF1dDMyX1BsLnJjOgoJSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCUFkZGVkIFBvbGlzaCB0cmFuc2xhdGlvbi4KCgkqIGRsbHMvZGRyYXcvbWFpbi5jOiBKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCUFkZGVkIEFQSSBkb2N1bWVudGF0aW9uIGZvciBEaXJlY3REcmF3RW51bWVyYXRlRXguCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJVEJfTUFSS0lURU0gc2hvdWxkIHJlZHJhdyBidXR0b24uCgoJKiBkbGxzL3gxMWRydi9pbml0LmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglTcGVsbGluZyBmaXguCgoJKiBkbGxzL250ZGxsL250LmMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVN0dWIgaW1wbGVtZW50YXRpb25zIGZvciBOdEFkanVzdEdyb3Vwc1Rva2VuIGFuZCBOdEFsZXJ0VGhyZWFkLgoKCSogZGxscy93aW5tbS90ZXN0cy9jYXB0dXJlLmMsIGRsbHMvd2lubW0vdGVzdHMvd2F2ZS5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCVRlc3QgMzIgYml0IGZsb2F0IHNhbXBsZXMuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvbWl4ZXIuYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCVJvdW5kIHJlc3VsdHMgb2YgY29udmVyc2lvbnMgYmV0d2VlbiBPU1MgYW5kIHdpbmRvd3MgdmFsdWVzLgoKMjAwNC0wOC0yNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHRvb2xzL3dpbmVidWlsZC9wYXJzZXIuYzoKCVByaW50IGEgd2FybmluZyB3aGVuIERsbFJlZ2lzdGVyU2VydmVyIGFuZCBzaW1pbGFyIGZ1bmN0aW9ucyBhcmUgbm90CgltYXJrZWQgcHJpdmF0ZS4KCgkqIGRsbHMvd2lubW0vdGVzdHMvbWl4ZXIuYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUFkZHMgdGVzdHMgdG8gcmVhZCBhbmQgd3JpdGUgY29udHJvbCBkZXRhaWxzLgoKCSogZGxscy93aW5tbS93aW5lb3NzL21peGVyLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglTZXQgcHJvcGVyIHRhcmdldCB0eXBlLgoJU2V0IHByb3BlciBtYXggYW5kIHN0ZXAgZm9yIG11eCBjb250cm9sLgoKCSogZGxscy9tbGFuZy9tbGFuZy5zcGVjLCBkbGxzL21zaS9tc2kuc3BlYzoKCUFkZGVkIGEgZmV3IG1pc3NpbmcgLXByaXZhdGUgZmxhZ3MuCgoJKiBkbGxzL3JpY2hlZGl0L01ha2VmaWxlLmluLCBkbGxzL3JpY2hlZGl0L2NoYXJsaXN0LmMsCgkgIGRsbHMvcmljaGVkaXQvY2hhcmxpc3QuaCwgZGxscy9yaWNoZWRpdC9yZWFkZXIuYywKCSAgZGxscy9yaWNoZWRpdC9yaWNoZWRpdC5jLCBkbGxzL3JpY2hlZGl0L3J0Zi5oLAoJICBkbGxzL3JpY2hlZGl0L3RleHQtd3JpdGVyLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglVc2UgYnVmZmVycyByYXRoZXIgdGhhbiBsaW5rZWQgbGlzdHMgZm9yIGlucHV0IGFuZCBvdXQgYnVmZmVycy4KCVN0b3AgcmVhZGluZyBpbnB1dCBhdCBhIG51bCBieXRlLgoKCSogZGxscy9vbGVhY2MvbWFpbi5jLCBkbGxzL29sZWFjYy9vbGVhY2Muc3BlYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIERsbFJlZ2lzdGVyU2VydmVyL0RsbFVucmVnaXN0ZXJTZXJ2ZXIgY2FsbHMuCgoJKiBpbmNsdWRlL3dpbnVzZXIuaDogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRGVmaW5lIGEgY291cGxlIG1vcmUgU1BJXyBjb25zdGFudHMuCgoJKiB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX3BhcnNlci5wbToKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJSGFjayB3aW5hcGlfcGFyc2VyIHNvIHdlIHJlY29nbmlzZSBFbGZXKGF1eHZfdCkgYXMgYSB0eXBlLiBGaXhlcyB0aGUKCXNjcmlwdHMgdGhhdCBjb21wdXRlIEFQSSBzdGF0aXN0aWNzLgoKCSogaW5jbHVkZS93aW5udC5oLCBpbmNsdWRlL3dpbnRlcm5sLmg6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBhIGZldyBtb3JlIHByb3RvdHlwZXMgdG8gdGhlIGhlYWRlcnMuCgoJKiBkbGxzL250ZGxsL2ZpbGUuYywgZGxscy9udGRsbC9udGRsbC5zcGVjOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgc3R1YiBpbXBsZW1lbnRhdGlvbnMgZm9yIE50RGVsZXRlRmlsZSBhbmQgTnRDYW5jZWxJb0ZpbGUuCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYzogSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCUFkZGVkIHN1cG9ydCBmb3Igb3B0aW9uYWwgYXJndW1lbnRzIGluIElUeXBlSW5mbzo6SW52b2tlLgoKMjAwNC0wOC0yNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvdXNlci90ZXN0cy93aW4uYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUJ1dHRvbiBzaG91bGQgZG8gUmVsZWFzZUNhcHR1cmUoKSBvbiBXTV9LSUxMRk9DVVMgaWYgaXQncyBpbiBhIHByZXNzZWQKCXN0YXRlLgoJQWRkIGEgY29tcHJlaGVuc2l2ZSB0ZXN0IGNhc2UgZm9yIGNhcHR1cmUgYmVoYXZpb3VyLgoKCSogZGxscy91c2VyL3Rlc3RzL21zZy5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQnV0dG9uIHNob3VsZCBzZW5kIEJNX1NFVFNUQVRFIG1lc3NhZ2UgYWZ0ZXIgaXQgaGFzIGNoYW5nZWQgaXRzCglpbnRlcm5hbCBzdGF0ZS4KCgkqIGRsbHMveDExZHJ2L2luaXQuYywgZGxscy94MTFkcnYveDExZHJ2LmgsIGRsbHMveDExZHJ2L3hmb250LmMsCgkgIGRvY3VtZW50YXRpb24vc2FtcGxlcy9jb25maWcsIHRvb2xzL3dpbmUuaW5mOgoJSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCURlcHJlY2F0ZSB0aGUgIlJlc29sdXRpb24iIGVudHJ5IGluIHRoZSBjb25maWcgZmlsZSBpbiBmYXZvdXIgb2YKCUhLRVlfQ1VSUk5FVF9DT05GSUdcU29mdHdhcmVcRm9udHNcTG9nUGl4ZWxzLgoKCSogZGxscy9nZGkvZnJlZXR5cGUuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUZyZWVUeXBlIGRvZXNuJ3Qgc3VwcGx5IGEgY2hhcm1hcCBmb3IgYml0bWFwIGZvbnRzLCBzbyB3ZSBtdXN0IGRvIG91cgoJb3duIG1hcHBpbmcuICBUaGFua3MgdG8gRG1pdHJ5IGZvciB0ZXN0aW5nLgoKCSogcHJvZ3JhbXMvcmVnZWRpdC9EZS5yYywgcHJvZ3JhbXMvcmVnZWRpdC9Fbi5yYywKCSAgcHJvZ3JhbXMvcmVnZWRpdC9Fcy5yYywgcHJvZ3JhbXMvcmVnZWRpdC9Gci5yYywKCSAgcHJvZ3JhbXMvcmVnZWRpdC9JdC5yYywgcHJvZ3JhbXMvcmVnZWRpdC9ObC5yYywKCSAgcHJvZ3JhbXMvcmVnZWRpdC9QbC5yYywgcHJvZ3JhbXMvcmVnZWRpdC9QdC5yYywKCSAgcHJvZ3JhbXMvcmVnZWRpdC9SdS5yYywgcHJvZ3JhbXMvcmVnZWRpdC9TaS5yYzoKCUh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglDaGFuZ2UgU3lzdGVtIHRvIE1TIFNoZWxsIERsZy4KCgkqIGRsbHMvYWR2YXBpMzIvcmVnaXN0cnkuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBmdWxsIG5hbWUgb2YgSEtFWV9DVVJSRU5UX0NPTkZJRy4KCgkqIGRsbHMvd2luaW5ldC91cmxjYWNoZS5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglEb24ndCB1c2UgZnJlZWQgbWVtb3J5LgoKCSogZGxscy9jb21jdGwzMi90ZXN0cy9pbWFnZWxpc3QuYzoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUFsbG93IGltYWdlIGxpc3QgdGVzdHMgdG8gY29tcGlsZSBhbmQgcnVuIG9uIG9sZCBwbGF0Zm9ybXMuCgoJKiBkbGxzL2tlcm5lbC9kZWJ1Z2dlci5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglJbXByb3ZlIGRvY3VtZW50YXRpb24gZm9yIGRlYnVnZ2VyIGZ1bmN0aW9ucy4KCgkqIGRsbHMvdXNlci90ZXN0cy9tc2cuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBtc2cgdGVzdCBmYWlsdXJlcyB3aGVuIHJ1biB1bmRlciB3aW4yay4KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUNhbGN1bGF0ZSB0aGUgY29ycmVjdCBzaXplIG9mIGRpYWxvZyB0ZW1wbGF0ZXMgaW4gdGhlIHByb3BzaGVldAoJY29udHJvbC4KCgkqIGRsbHMveDExZHJ2L3dpbmRvdy5jOiBFdmFuIERlYXVibCA8d2luZUB3YXJwZWR2aWV3LmNvbT4KCUZpeCBhbiBFUlIgbG9nIGluIFgxMURSVl9DcmVhdGVXaW5kb3cuCgoJKiBkbGxzL3ZlcnNpb24vaW5mby5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJVHJ5IHRvIGF2b2lkIGxvYWRpbmcgMTYtYml0IERMTHMgaW50byBtZW1vcnkgZm9yIGFjY2Vzc2luZyB2ZXJzaW9uCglpbmZvLCB0aGlzIG1pZ2h0IGxlYWQgdG8gdW5kZXNpcmVkIHNpZGUgZWZmZWN0cyBsaWtlIGxvYWRpbmcgYSBidW5jaAoJb2Ygb3RoZXIgMTYtYml0IERMTHMuCgoJKiBkbGxzL2FkdmFwaTMyL3NlcnZpY2UuYzogQWxleGFuZGVyIFlhd29yc2t5IDx5YXdvcnNreUBtaWd1c29mdC5ydT4KCVN0YXJ0U2VydmljZSBtdXN0IHBhc3MgZnVsbCBjb21tYW5kIGxpbmUgdG8gc2VydmljZSBwcm9ncmFtLgoKCSogZGxscy91c2VyL3Rlc3RzL21zZy5jOgoJQWRkZWQgc29tZSB0ZXN0cyBmb3IgcGFpbnQgbWVzc2FnZXMgYW5kIHVwZGF0ZSByZWdpb25zLgoKCSogZGxscy91c2VyL3BhaW50aW5nLmMsIHdpbmRvd3MvcGFpbnRpbmcuYzoKCUdldFVwZGF0ZVJnbiBzaG91bGQgY2xpcCB0aGUgcmV0dXJuZWQgcmVnaW9uIHRvIHRoZSBjbGllbnQgYXJlYS4KCUNoYW5nZWQgR2V0VXBkYXRlUmVjdCBhbmQgRXhjbHVkZVVwZGF0ZVJnbiB0byBjYWxsIEdldFVwZGF0ZVJnbi4KCU1vdmVkIHRoZXNlIDMgZnVuY3Rpb25zIHRvIGRsbHMvdXNlci9wYWludGluZy5jLgoKCSogd2luZG93cy9ub25jbGllbnQuYzogUHJpbnQgdGhlIFdpbmRvdyBjYXB0aW9uIHVzaW5nIFVuaWNvZGUgY2FsbHMuCglEb24ndCBzZW5kIFdNX0dFVFRFWFQgdG8gcmV0cmlldmUgdGhlIGNhcHRpb24gdGV4dC4KCgkqIGRsbHMvY29tY3RsMzIvdGVzdHMvc3ViY2xhc3MuYywgZGxscy9tc3ZjcnQvdGVzdHMvdGltZS5jLAoJICBkbGxzL3F1YXJ0ei9hdmlkZWMuYywgZGxscy9xdWFydHovZHNvdW5kcmVuZGVyLmMsCgkgIGRsbHMvcXVhcnR6L3ZpZGVvcmVuZGVyZXIuYywgZGxscy93aW5tbS90ZXN0cy9jYXB0dXJlLmMsCgkgIGRsbHMvd2lubW0vdGVzdHMvd2F2ZS5jLCBpbmNsdWRlL2Jhc2V0c2QuaCwgaW5jbHVkZS93aW5udC5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBc3NvcnRlZCBzcGVsbGluZyBmaXhlcy4KCgkqIGRsbHMvY3J5cHQzMi9jZXJ0LmM6IFN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJQWRkZWQgbWlzc2luZyBsaW5lIGJyZWFrLgoKCSogZGxscy9udGRsbC9udC5jOiBKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJRG9uJ3QgY2xlYXIgdGhlIGluZm9ybWF0aW9uIHN0cnVjdHVyZSBmb3Igbm9uIHN1cHBvcnRlZCBjYXNlcy4KCgkqIGRsbHMvYWR2YXBpMzIvYWR2YXBpMzIuc3BlYywgZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jOgoJRXZhbiBEZWF1YmwgPHdpbmVAd2FycGVkdmlldy5jb20+CglBZGRlZCBHZXRTZWN1cml0eUluZm8gc3R1Yi4KCgkqIGRsbHMvb2xlYXV0MzIvdmFyZm9ybWF0LmM6CglKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJRW5zdXJlIGRpZ2l0cyBhcmUgcHJpbnRhYmxlIGNoYXJhY3RlcnMgZnJvbSBvbGVhdXQzMiBGb3JtYXQgY29tbWFuZC4KCjIwMDQtMDgtMjUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3VzZXIvdGVzdHMvbXNnLmM6CglBbGxvdyBlbmFibGluZyBvciBkaXNhYmxpbmcgdG9kb193aW5lIGZvciBlYWNoIG1lc3NhZ2Ugc2VxdWVuY2Ugc28KCXRoYXQgd2UgY2FuIHByb3Blcmx5IHRlc3QgdGhlIHNlcXVlbmNlcyB0aGF0IGFyZSBhbHJlYWR5IGNvcnJlY3QuCgoJKiBkbGxzL3NoZG9jdncvc2hkb2N2d19tYWluLmM6IEphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglBZGRlZCBtZXNzYWdlIGJveCB0byBpbmZvcm0gdXNlciB0aGF0IG9uZSBuZWVkcyBNb3ppbGxhIEFjdGl2ZVguCgoJKiBkbGxzL2NvbWN0bDMyL2FuaW1hdGUuYywgZGxscy9jb21jdGwzMi9jb21ib2V4LmMsCgkgIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYywgZGxscy9jb21jdGwzMi9kYXRldGltZS5jLAoJICBkbGxzL2NvbWN0bDMyL2ZsYXRzYi5jLCBkbGxzL2NvbWN0bDMyL2hlYWRlci5jLAoJICBkbGxzL2NvbWN0bDMyL2hvdGtleS5jLCBkbGxzL2NvbWN0bDMyL2lwYWRkcmVzcy5jLAoJICBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmMsIGRsbHMvY29tY3RsMzIvbW9udGhjYWwuYywKCSAgZGxscy9jb21jdGwzMi9uYXRpdmVmb250LmMsIGRsbHMvY29tY3RsMzIvcGFnZXIuYywKCSAgZGxscy9jb21jdGwzMi9wcm9ncmVzcy5jLCBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jLAoJICBkbGxzL2NvbWN0bDMyL3JlYmFyLmMsIGRsbHMvY29tY3RsMzIvc3RhdHVzLmMsCgkgIGRsbHMvY29tY3RsMzIvc3lzbGluay5jLCBkbGxzL2NvbWN0bDMyL3RhYi5jLAoJICBkbGxzL2NvbWN0bDMyL3Rvb2x0aXBzLmMsIGRsbHMvY29tY3RsMzIvdHJhY2tiYXIuYywKCSAgZGxscy9jb21jdGwzMi90cmVldmlldy5jLCBkbGxzL2NvbWN0bDMyL3VwZG93bi5jOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJUmVwbGFjZSBHZXRXaW5kb3dMb25nIGJ5IEdldFdpbmRvd0xvbmdQdHIuCgoJKiBkbGxzL21zaS9jcmVhdGUuYywgZGxscy9tc2kvZGlzdGluY3QuYywgZGxscy9tc2kvaW5zZXJ0LmMsCgkgIGRsbHMvbXNpL29yZGVyLmMsIGRsbHMvbXNpL3VwZGF0ZS5jLCBkbGxzL21zaS93aGVyZS5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUZyZWUgbWVtb3J5IGFmdGVyIHdlIGZpbmlzaCB1c2luZyBpdCBpbnN0ZWFkIG9mIGp1c3QgYmVmb3JlLgoKCSogZGxscy9nZGkvZ2Rpb2JqLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglNYWtlIHRoZSBERUZBVUxUX0dVSV9GT05UIHNjYWxhYmxlIHdpdGggc2NyZWVuIHJlc29sdXRpb24gYW5kIGxldCBpdAoJYmUgOHB0IE1TIFNoZWxsIERsZyBmb3Igc2ltcGxlIHNjcmlwdHMuCgoJKiBkbGxzL3dpbm1tL21jaS5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRml4IGFuIG9idmlvdXMgdHlwbyBsZWFkaW5nIHRvIGEgY3Jhc2guCgoJKiBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2UgU2V0VG9rZW5JbmZvcm1hdGlvbiBjYWxsIE50U2V0SW5mb3JtYXRpb25Ub2tlbi4KCgkqIGRsbHMvaWNjdmlkL2ljY3ZpZC5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglTaWduZWQgY29tcGFyZSBmaXhlcy4KCgkqIGRsbHMvaXRzcy9jaG1fbGliLmMsIGRsbHMvaXRzcy9pdHNzLmMsIGRsbHMvaXRzcy9pdHNzdG9yLmgsCgkgIGRsbHMvaXRzcy9tb25pa2VyLmMsIGRsbHMvaXRzcy9zdG9yYWdlLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggdGhlIElUUyBtb25pa2VyIGltcGxlbWVudGF0aW9uLgoKCSogZG9jdW1lbnRhdGlvbi9jdnMtcmVncmVzc2lvbi5zZ21sOiBJdmFuIExlbyBQdW90aSA8cHVvdGlAaW53aW5kLml0PgoJVXBkYXRlIGN2cyBjb21tYW5kIGxpbmUuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBTZW5kIE5NX0xET1dOIG5vdGlmaWNhdGlvbi4KCS0gTk1fUkRCTENMSyBvbmx5IG5lZWRzIHRvIHNlbmQgYSBOTUhEUiBzdHJ1Y3R1cmUuCgktIE9uIG1vdXNlIG5vdGlmaWNhdGlvbnMgcmV0dXJuaW5nIDAgRGVmV25kUHJvYyBzaG91bGQgYmUgY2FsbGVkLgoKCSogaW5jbHVkZS9jb21tY3RybC5oOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglCcmluZyBjb21tb24gY29udHJvbCBoZWFkZXIgdXAgdG8gZGF0ZSB3aXRoIG5ldyBhZGRpdGlvbnMgaW4gWFAuCgoJKiBkbGxzL3dpbm1tL3dpbmVhbHNhL2F1ZGlvLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglBZGRlZCAzMiBiaXQgZmxvYXQgc3VwcG9ydC4KCgkqIGRsbHMvZHNvdW5kL2Rzb3VuZC5jLCBkbGxzL2Rzb3VuZC90ZXN0cy9kczNkLmMsCgkgIGRsbHMvZHNvdW5kL3Rlc3RzL2RzM2Q4LmMsIGRsbHMvZHNvdW5kL3Rlc3RzL2Rzb3VuZC5jLAoJICBkbGxzL2Rzb3VuZC90ZXN0cy9kc291bmQ4LmMsIGRsbHMvZHNvdW5kL3Rlc3RzL2Rzb3VuZF90ZXN0Lmg6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJRGlyZWN0U291bmQ4IGRvZXNuJ3QgYWNjZXB0IDNEIHN0ZXJlbyBzZWNvbmRhcnkgYnVmZmVycyBidXQKCURpcmVjdFNvdW5kIGRvZXMuCglBZGRlZCB0ZXN0cy4KCgkqIGluY2x1ZGUva3NtZWRpYS5oOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQWRkZWQgSUVFRSBmbG9hdCBhdWRpbyBkYXRhIHR5cGUuCgoJKiBtaXNjL3JlZ2lzdHJ5LmM6IEFsZXggVmlsbGFj7XMgTGFzc28gPGFfdmlsbGFjaXNAcGFsb3NhbnRvLmNvbT4KCURvIG5vdCBhc3N1bWUgSEtFWV9DVVJSRU5UX1VTRVIvRW52aXJvbm1lbnQgZXhpc3RzID09PiBjb25maWcgZmlsZSB3YXMKCW1pZ3JhdGVkLiBJbnN0ZWFkIHRlc3QgZm9yIGV2ZXJ5IGtleSB0byBtaWdyYXRlIHVuZGVyCglIS0VZX0NVUlJFTlRfVVNFUi9FbnZpcm9ubWVudC4KCgkqIGRsbHMvdXNlci90ZXN0cy9nZW5lcmF0ZWQuYywgZGxscy9nZGkvdGVzdHMvZ2VuZXJhdGVkLmMsCgkgIGRsbHMva2VybmVsL3Rlc3RzL2dlbmVyYXRlZC5jLCBkbGxzL250ZGxsL3Rlc3RzL2dlbmVyYXRlZC5jLAoJICBkbGxzL3NoZWxsMzIvdGVzdHMvZ2VuZXJhdGVkLmMsIGRsbHMvd2luaW5ldC90ZXN0cy9nZW5lcmF0ZWQuYywKCSAgdG9vbHMvd2luYXBpL3Rlc3RzLmRhdDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRW5hYmxlIHRoZSBkaXNhYmxlZCB0ZXN0cyBpbiB0ZXN0cy5kYXRhIG9yIGFkZCBhIGNvbW1lbnQgZGVzY3JpYmluZwoJd2h5IHRoZSB0eXBlIGNhbm5vdCBiZSB0ZXN0ZWQuCglVcGRhdGUgdGhlIGdlbmVyYXRlZCBmaWxlcywgdGhleSBjb21waWxlIGFuZCBydW4gc3VjY2Vzc2Z1bGx5IGJvdGggb24KCVdpbmRvd3MgKHdpdGggdGhlIFdpbmRvd3MgaGVhZGVycykgYW5kIGluIFdpbmUuCgoJKiBkbGxzL29sZWF1dDMyL3Rlc3RzL3ZhcnR5cGUuYywgZGxscy9vbGVhdXQzMi92YXJpYW50LmM6CglKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJRml4IGhhbmRsaW5nIG9mIFZBUklBTlQgd2l0aCBWVF9CWVJFRiBhbmQgbnVsbCBwb2ludGVyIGluCglWYXJpYW50Q2hhbmdlVHlwZUV4LgoKMjAwNC0wOC0yNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2l0c3MvLmN2c2lnbm9yZSwKCSAgZGxscy9pdHNzL01ha2VmaWxlLmluLCBkbGxzL2l0c3MvY2htX2xpYi5jLCBkbGxzL2l0c3MvY2htX2xpYi5oLAoJICBkbGxzL2l0c3MvaXRzcy5jLCBkbGxzL2l0c3MvaXRzcy5oLCBkbGxzL2l0c3MvaXRzcy5pZGwsCgkgIGRsbHMvaXRzcy9pdHNzLnNwZWMsIGRsbHMvaXRzcy9senguYywgZGxscy9pdHNzL2x6eC5oLAoJICBkbGxzL2l0c3MvbW9uaWtlci5jLCBkbGxzL2l0c3Mvc3RvcmFnZS5jOgoJU3Rld2FydCBDYWllPGt5ekB1a2xpbnV4Lm5ldD4KCUplZCBXaW5nIDxqZWR3aW5AdWdjcy5jYWx0ZWNoLmVkdT4KCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIGFuIGltcGxlbWVuYXRpb24gb2YgSVRTUy5ETEwuCgoJKiBkbGxzL21zaS9yZWNvcmQuYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUdldHRpbmcgdGhlIHN0cmluZyBmb3IgYSBudWxsIGZpZWxkIHNob3VsZCBub3QgY3JlYXRlIGFuIGVycm9yLiBBZGQgYQoJbWlzc2luZyBicmVhay4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL2dlbmVyYXRlZC5jLCBkbGxzL250ZGxsL3Rlc3RzL2dlbmVyYXRlZC5jLAoJICBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW5udC5oLCB0b29scy93aW5hcGkvdGVzdHMuZGF0OgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglGaXggYWxpZ25tZW50IGlzc3VlcyBmb3IgTUVNT1JZU1RBVFVTRVgsIFdJTjMyX1NUUkVBTV9JRCBhbmQKCUlPX0NPVU5URVJTLiBUaGUgY29ycmVzcG9uZGluZyB0ZXN0cyBub3cgc3VjY2VlZCBib3RoIHdoZW4gY29tcGlsZWQKCXdpdGggdGhlIFdpbmRvd3MgaGVhZGVycyBhbmQgd2hlbiBjb21waWxlZCB3aXRoIHRoZSBXaW5lIGhlYWRlcnMuCgoJKiB3aW5kb3dzL3Njcm9sbC5jOiBSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglXaGVuIHRoZXJlIGFyZSBubyBwaXhlbHMgdG8gc2Nyb2xsLCBTY3JvbGxXaW5kb3dFeCBtdXN0IHN0aWxsIHNjcm9sbAoJY2hpbGRyZW4gYW5kIHVwZGF0ZSB0aGUgaHJnblVwZGF0ZSBhbmQgcmNVcGRhdGUgYXJndW1lbnRzLgoKCSogZGxscy9kZHJhdy9kY2xpcHBlci9tYWluLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCBJRGlyZWN0RHJhd0NsaXBwZXJfR2V0Q2xpcExpc3QgZm9yIGNhc2Ugd2hlcmUgd2UgaGF2ZSBhCgloYW5kbGUgdG8gYSB3aW5kb3cuCgoJKiBkbGxzL3gxMWRydi93aW5wb3MuYzoKCUluIEdldERDIHVzZSB0aGUgcGFyZW50IGRyYXdhYmxlIHdoZW4gRENYX1BBUkVOVENMSVAgaXMgc2V0LgoKCSogZm9udHMvLmN2c2lnbm9yZSwgZm9udHMvTWFrZWZpbGUuaW4sIGZvbnRzL3dpbmVfc2Fuc19zZXJpZi5zZmQ6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkIGN5cmlsbGljIGdseXBocyB0byB3aW5lX3NhbnNfc2VyaWYgYXQgMTMgYW5kIDE2IHBpeGVsIHNpemVzLgoKCSogZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZGxscy9rZXJuZWwva3JubDM4Ni5leGUuc3BlYywKCSAgZGxscy9rZXJuZWwvcHJvY2Vzcy5jLCBpbmNsdWRlL3dpbmJhc2UuaDoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIEdldFByb2Nlc3NJZC4KCgkqIGRsbHMvb2xlYXV0MzIvdGVzdHMvc2FmZWFycmF5LmM6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglNb3JlIHNhZmUgYXJyYXkgdGVzdHMuCgoJKiBkbGxzL2NvbWN0bDMyL3Rlc3RzL2ltYWdlbGlzdC5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJVGVzdHMgZm9yIGljb24gYW5kIGJpdG1hcCBhZGRpbmcgYW5kIHJlbW92aW5nIGFuZCBiaXRtYXAgZHJhd2luZyB3aXRoCglpbWFnZSBsaXN0cy4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglGaXggcmVncmVzc2lvbiB3aXRoIElFJ3MgTWVudSBCYXIuCgoJKiBkbGxzL2F2aWZpbDMyL2F2aWZpbGVfQ3MucmMsIGRsbHMvYXZpZmlsMzIvYXZpZmlsZV9EZS5yYywKCSAgZGxscy9hdmlmaWwzMi9hdmlmaWxlX0VuLnJjLCBkbGxzL2F2aWZpbDMyL2F2aWZpbGVfRXMucmMsCgkgIGRsbHMvYXZpZmlsMzIvYXZpZmlsZV9Gci5yYywgZGxscy9hdmlmaWwzMi9hdmlmaWxlX0l0LnJjLAoJICBkbGxzL2F2aWZpbDMyL2F2aWZpbGVfTmwucmMsIGRsbHMvYXZpZmlsMzIvYXZpZmlsZV9QdC5yYywKCSAgZGxscy9hdmlmaWwzMi9hdmlmaWxlX1J1LnJjLCBkbGxzL2F2aWZpbDMyL2F2aWZpbGVfU2kucmMsCgkgIGRsbHMvY29tY3RsMzIvY29tY3RsX0NuLnJjLCBkbGxzL2NvbWN0bDMyL2NvbWN0bF9Dcy5yYywKCSAgZGxscy9jb21jdGwzMi9jb21jdGxfRGUucmMsIGRsbHMvY29tY3RsMzIvY29tY3RsX0VuLnJjLAoJICBkbGxzL2NvbWN0bDMyL2NvbWN0bF9Fcy5yYywgZGxscy9jb21jdGwzMi9jb21jdGxfRnIucmMsCgkgIGRsbHMvY29tY3RsMzIvY29tY3RsX0l0LnJjLCBkbGxzL2NvbWN0bDMyL2NvbWN0bF9Lby5yYywKCSAgZGxscy9jb21jdGwzMi9jb21jdGxfTmwucmMsIGRsbHMvY29tY3RsMzIvY29tY3RsX1BsLnJjLAoJICBkbGxzL2NvbWN0bDMyL2NvbWN0bF9QdC5yYywgZGxscy9jb21jdGwzMi9jb21jdGxfUnUucmMsCgkgIGRsbHMvY29tY3RsMzIvY29tY3RsX1NpLnJjLCBkbGxzL2NvbWN0bDMyL2NvbWN0bF9UaC5yYywKCSAgZGxscy9jb21jdGwzMi9jb21jdGxfVWsucmMsIGRsbHMvY29tbWRsZy9jZGxnX0NhLnJjLAoJICBkbGxzL2NvbW1kbGcvY2RsZ19Dbi5yYywgZGxscy9jb21tZGxnL2NkbGdfQ3MucmMsCgkgIGRsbHMvY29tbWRsZy9jZGxnX0RhLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19EZS5yYywKCSAgZGxscy9jb21tZGxnL2NkbGdfRW4ucmMsIGRsbHMvY29tbWRsZy9jZGxnX0VvLnJjLAoJICBkbGxzL2NvbW1kbGcvY2RsZ19Fcy5yYywgZGxscy9jb21tZGxnL2NkbGdfRmkucmMsCgkgIGRsbHMvY29tbWRsZy9jZGxnX0ZyLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19IdS5yYywKCSAgZGxscy9jb21tZGxnL2NkbGdfSXQucmMsIGRsbHMvY29tbWRsZy9jZGxnX0tvLnJjLAoJICBkbGxzL2NvbW1kbGcvY2RsZ19ObC5yYywgZGxscy9jb21tZGxnL2NkbGdfTm8ucmMsCgkgIGRsbHMvY29tbWRsZy9jZGxnX1BsLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19QdC5yYywKCSAgZGxscy9jb21tZGxnL2NkbGdfUnUucmMsIGRsbHMvY29tbWRsZy9jZGxnX1NpLnJjLAoJICBkbGxzL2NvbW1kbGcvY2RsZ19Tay5yYywgZGxscy9jb21tZGxnL2NkbGdfU3YucmMsCgkgIGRsbHMvY29tbWRsZy9jZGxnX1RoLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19Vay5yYywKCSAgZGxscy9jb21tZGxnL2NkbGdfV2EucmMsIGRsbHMvY29tbWRsZy9jZGxnX1poLnJjLAoJICBkbGxzL29sZWRsZy9vbGVkbGdfQ3MucmMsIGRsbHMvb2xlZGxnL29sZWRsZ19EZS5yYywKCSAgZGxscy9vbGVkbGcvb2xlZGxnX0VuLnJjLCBkbGxzL29sZWRsZy9vbGVkbGdfRXMucmMsCgkgIGRsbHMvb2xlZGxnL29sZWRsZ19JdC5yYywgZGxscy9vbGVkbGcvb2xlZGxnX05sLnJjLAoJICBkbGxzL29sZWRsZy9vbGVkbGdfUHQucmMsIGRsbHMvc2VyaWFsdWkvQ3MucmMsIGRsbHMvc2VyaWFsdWkvRGUucmMsCgkgIGRsbHMvc2VyaWFsdWkvRW4ucmMsIGRsbHMvc2VyaWFsdWkvRXMucmMsIGRsbHMvc2VyaWFsdWkvRnIucmMsCgkgIGRsbHMvc2VyaWFsdWkvSXQucmMsIGRsbHMvc2VyaWFsdWkvTmwucmMsIGRsbHMvc2VyaWFsdWkvUHQucmMsCgkgIGRsbHMvc2VyaWFsdWkvUnUucmMsIGRsbHMvc2V0dXBhcGkvQ3MucmMsIGRsbHMvc2V0dXBhcGkvRGUucmMsCgkgIGRsbHMvc2V0dXBhcGkvRW4ucmMsIGRsbHMvc2V0dXBhcGkvRXMucmMsIGRsbHMvc2V0dXBhcGkvRnIucmMsCgkgIGRsbHMvc2V0dXBhcGkvSXQucmMsIGRsbHMvc2V0dXBhcGkvTmwucmMsIGRsbHMvc2V0dXBhcGkvUHQucmMsCgkgIGRsbHMvc2V0dXBhcGkvUnUucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0NhLnJjLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9Dbi5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfQ3MucmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0RhLnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9EZS5yYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfRW4ucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0VvLnJjLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9Fcy5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfRmkucmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0ZyLnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9IdS5yYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfSXQucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0phLnJjLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9Lby5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfTmwucmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX05vLnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9QbC5yYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfUHQucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX1J1LnJjLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9TaS5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfU2sucmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX1N2LnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9Vay5yYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfV2EucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX1poLnJjLAoJICBkbGxzL3VzZXIvdGVzdHMvcmVzb3VyY2UucmMsIGRsbHMvd2luZXBzL3dwc19Dcy5yYywKCSAgZGxscy93aW5lcHMvd3BzX0RlLnJjLCBkbGxzL3dpbmVwcy93cHNfRW4ucmMsIGRsbHMvd2luZXBzL3dwc19Fcy5yYywKCSAgZGxscy93aW5lcHMvd3BzX0ZyLnJjLCBkbGxzL3dpbmVwcy93cHNfSXQucmMsIGRsbHMvd2luZXBzL3dwc19Lby5yYywKCSAgZGxscy93aW5lcHMvd3BzX05sLnJjLCBkbGxzL3dpbmVwcy93cHNfUHQucmMsIGRsbHMvd2luZXBzL3dwc19SdS5yYywKCSAgZGxscy93aW5lcHMvd3BzX1NpLnJjLCBkbGxzL3dpbmVwcy93cHNfU2sucmMsCgkgIGRsbHMvd2luaW5ldC93aW5pbmV0X0NzLnJjLCBkbGxzL3dpbmluZXQvd2luaW5ldF9EZS5yYywKCSAgZGxscy93aW5pbmV0L3dpbmluZXRfRW4ucmMsIGRsbHMvd2luaW5ldC93aW5pbmV0X0VzLnJjLAoJICBkbGxzL3dpbmluZXQvd2luaW5ldF9Gci5yYywgZGxscy93aW5pbmV0L3dpbmluZXRfSXQucmMsCgkgIGRsbHMvd2luaW5ldC93aW5pbmV0X05sLnJjLCBkbGxzL3dpbmluZXQvd2luaW5ldF9QdC5yYywKCSAgZGxscy93aW5pbmV0L3dpbmluZXRfUnUucmMsIGRsbHMvd2luaW5ldC93aW5pbmV0X1NpLnJjLAoJICBwcm9ncmFtcy9jbWRsZ3RzdC9EZS5yYywgcHJvZ3JhbXMvY21kbGd0c3QvRW4ucmMsCgkgIHByb2dyYW1zL2NtZGxndHN0L0VzLnJjLCBwcm9ncmFtcy9jbWRsZ3RzdC9Gci5yYywKCSAgcHJvZ3JhbXMvY21kbGd0c3QvSXQucmMsIHByb2dyYW1zL2NtZGxndHN0L05sLnJjLAoJICBwcm9ncmFtcy9jbWRsZ3RzdC9QdC5yYywgcHJvZ3JhbXMvY21kbGd0c3QvUnUucmMsCgkgIHByb2dyYW1zL2NtZGxndHN0L1NpLnJjLCBwcm9ncmFtcy9ub3RlcGFkL0RhLnJjLAoJICBwcm9ncmFtcy9ub3RlcGFkL0RlLnJjLCBwcm9ncmFtcy9ub3RlcGFkL0VuLnJjLAoJICBwcm9ncmFtcy9ub3RlcGFkL0VzLnJjLCBwcm9ncmFtcy9ub3RlcGFkL0ZpLnJjLAoJICBwcm9ncmFtcy9ub3RlcGFkL0ZyLnJjLCBwcm9ncmFtcy9ub3RlcGFkL0h1LnJjLAoJICBwcm9ncmFtcy9ub3RlcGFkL0l0LnJjLCBwcm9ncmFtcy9ub3RlcGFkL05sLnJjLAoJICBwcm9ncmFtcy9ub3RlcGFkL1BsLnJjLCBwcm9ncmFtcy9ub3RlcGFkL1B0LnJjLAoJICBwcm9ncmFtcy9ub3RlcGFkL1J1LnJjLCBwcm9ncmFtcy9ub3RlcGFkL1NpLnJjLAoJICBwcm9ncmFtcy9ub3RlcGFkL1NrLnJjLCBwcm9ncmFtcy9ub3RlcGFkL1N3LnJjLAoJICBwcm9ncmFtcy9ub3RlcGFkL1RoLnJjLCBwcm9ncmFtcy9ub3RlcGFkL1dhLnJjLAoJICBwcm9ncmFtcy9ub3RlcGFkL1poLnJjLCBwcm9ncmFtcy9yZWdlZGl0L0RlLnJjLAoJICBwcm9ncmFtcy9yZWdlZGl0L0VuLnJjLCBwcm9ncmFtcy9yZWdlZGl0L0VzLnJjLAoJICBwcm9ncmFtcy9yZWdlZGl0L0ZyLnJjLCBwcm9ncmFtcy9yZWdlZGl0L0l0LnJjLAoJICBwcm9ncmFtcy9yZWdlZGl0L05sLnJjLCBwcm9ncmFtcy9yZWdlZGl0L1BsLnJjLAoJICBwcm9ncmFtcy9yZWdlZGl0L1B0LnJjLCBwcm9ncmFtcy9yZWdlZGl0L1J1LnJjLAoJICBwcm9ncmFtcy9yZWdlZGl0L1NpLnJjLCBwcm9ncmFtcy93aW5lY2ZnL0VuLnJjLAoJICBwcm9ncmFtcy93aW5lY2ZnL0VzLnJjLCBwcm9ncmFtcy93aW5lY2ZnL0l0LnJjLAoJICBwcm9ncmFtcy93aW5lY2ZnL1B0LnJjLCBwcm9ncmFtcy93aW5lY2ZnL1J1LnJjLAoJICBwcm9ncmFtcy93aW5lY2ZnL1NpLnJjLCBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZV9EZS5yYywKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbnNvbGVfRW4ucmMsCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25zb2xlX0VzLnJjLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZV9Gci5yYywKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbnNvbGVfSHUucmMsCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25zb2xlX05sLnJjLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZV9QdC5yYywKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbnNvbGVfUnUucmMsCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25zb2xlX1poLnJjLCBwcm9ncmFtcy93aW5lZmlsZS93aW5lZmlsZS5jOgoJSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUNoYW5nZSBkaWFsb2dzIHRvIHVzZSBNUyBTaGVsbCBEbGcgcmF0aGVyIHRoYW4gSGVsdiBvciBNUyBTYW5zIFNlcmlmLgoKCSogZGxscy94MTFkcnYvd2lucG9zLmM6CglXaGVuIHBvc3NpYmxlLCB1c2UgdGhlIFggd2luZG93IG9mIHRoZSByZXF1ZXN0ZWQgd2luZG93IGluIEdldERDCglpbnN0ZWFkIG9mIHRoZSBwYXJlbnQgdG8gYXZvaWQgdHJvdWJsZSB3aXRoIE9wZW5HTCBjbGlwcGluZy4KCgkqIGRsbHMvbWFrZV9kbGxzOiBSZW1vdmVkIGRlYnVnIHRyYWNlLgoKCSogZGxscy9xdWFydHovTWFrZWZpbGUuaW4sIGRsbHMvcXVhcnR6L2F2aWRlYy5jLAoJICBkbGxzL3F1YXJ0ei9kc291bmRyZW5kZXIuYywgZGxscy9xdWFydHovbWFpbi5jLAoJICBkbGxzL3F1YXJ0ei9xdWFydHpfcHJpdmF0ZS5oLCBkbGxzL3F1YXJ0ei9yZWdzdnIuYywKCSAgZGxscy9xdWFydHovdmlkZW9yZW5kZXJlci5jOgoJQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJQWRkZWQgVmlkZW8gUmVuZGVyZXIgKGJhc2VkIG9uIERpcmVjdCBEcmF3KS4KCUFkZGVkIERpcmVjdCBTb3VuZCBBdWRpbyBSZW5kZXJlci4KCUFkZGVkIEFWSSBEZWNvbXByZXNzb3IgKFZGVyBkZWNvbXByZXNzb3JzIHdyYXBwZXIpLgoKCSogZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jOiBQaWVycmUgZCdIZXJiZW1vbnQgPHN0ZWdlZmluQGZyZWUuZnI+CglBZGRlZCBzaWduYWwgc3VwcG9ydCBmb3IgRGFyd2luL2kzODYuCgoJKiB3aW5kb3dzL2RpYWxvZy5jOiBVbHJpY2ggQ3pla2FsbGEgPHVscmljaEBjb2Rld2VhdmVycy5jb20+CglTZXQgV1NfRVhfQ09OVFJPTFBBUkVOVCB3aGVuIGRpYWxvZyBoYXMgRFNfQ09OVFJPTC4KCjIwMDQtMDgtMjMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2Ftc3RyZWFtL2Ftc3RyZWFtLmMsIGRsbHMvYW1zdHJlYW0vbWFpbi5jLAoJICBkbGxzL2F2aWZpbDMyL2FjbXN0cmVhbS5jLCBkbGxzL2F2aWZpbDMyL2F2aWZpbGUuYywKCSAgZGxscy9hdmlmaWwzMi9lZGl0c3RyZWFtLmMsIGRsbHMvYXZpZmlsMzIvZmFjdG9yeS5jLAoJICBkbGxzL2F2aWZpbDMyL2dldGZyYW1lLmMsIGRsbHMvYXZpZmlsMzIvaWNtc3RyZWFtLmMsCgkgIGRsbHMvYXZpZmlsMzIvdG1wZmlsZS5jLCBkbGxzL2F2aWZpbDMyL3dhdmZpbGUuYywKCSAgZGxscy9jb21jYXQvZmFjdG9yeS5jLCBkbGxzL2NvbWNhdC9pbmZvcm1hdGlvbi5jLAoJICBkbGxzL2NvbWNhdC9tYW5hZ2VyLmMsIGRsbHMvY29tY2F0L3JlZ2lzdGVyLmMsCgkgIGRsbHMvY29tbWRsZy9maWxlZGxnYnJvd3Nlci5jLCBkbGxzL2QzZDgvYmFzZXRleHR1cmUuYywKCSAgZGxscy9kM2Q4L2N1YmV0ZXh0dXJlLmMsIGRsbHMvZDNkOC9kZXZpY2UuYywgZGxscy9kM2Q4L2RpcmVjdHguYywKCSAgZGxscy9kM2Q4L2luZGV4YnVmZmVyLmMsIGRsbHMvZDNkOC9yZXNvdXJjZS5jLCBkbGxzL2QzZDgvc3VyZmFjZS5jLAoJICBkbGxzL2QzZDgvc3dhcGNoYWluLmMsIGRsbHMvZDNkOC90ZXh0dXJlLmMsIGRsbHMvZDNkOC92ZXJ0ZXhidWZmZXIuYywKCSAgZGxscy9kM2Q4L3ZvbHVtZS5jLCBkbGxzL2QzZDgvdm9sdW1ldGV4dHVyZS5jLAoJICBkbGxzL2QzZDkvYmFzZXRleHR1cmUuYywgZGxscy9kM2Q5L2N1YmV0ZXh0dXJlLmMsIGRsbHMvZDNkOS9kZXZpY2UuYywKCSAgZGxscy9kM2Q5L2RpcmVjdHguYywgZGxscy9kM2Q5L2luZGV4YnVmZmVyLmMsCgkgIGRsbHMvZDNkOS9waXhlbHNoYWRlci5jLCBkbGxzL2QzZDkvcXVlcnkuYywgZGxscy9kM2Q5L3Jlc291cmNlLmMsCgkgIGRsbHMvZDNkOS9zdGF0ZWJsb2NrLmMsIGRsbHMvZDNkOS9zdXJmYWNlLmMsIGRsbHMvZDNkOS9zd2FwY2hhaW4uYywKCSAgZGxscy9kM2Q5L3RleHR1cmUuYywgZGxscy9kM2Q5L3ZlcnRleGJ1ZmZlci5jLAoJICBkbGxzL2QzZDkvdmVydGV4ZGVjbGFyYXRpb24uYywgZGxscy9kM2Q5L3ZlcnRleHNoYWRlci5jLAoJICBkbGxzL2QzZDkvdm9sdW1lLmMsIGRsbHMvZDNkOS92b2x1bWV0ZXh0dXJlLmMsCgkgIGRsbHMvZDNkeDgvZDNkeGJ1ZmZlci5jLCBkbGxzL2QzZHhvZi9kM2R4b2YuYywgZGxscy9kM2R4b2YvbWFpbi5jLAoJICBkbGxzL2RkcmF3L2QzZGV4ZWN1dGVidWZmZXIuYywgZGxscy9kZHJhdy9kM2RsaWdodC5jLAoJICBkbGxzL2RkcmF3L2QzZG1hdGVyaWFsLmMsIGRsbHMvZGRyYXcvZDNkdGV4dHVyZS5jLAoJICBkbGxzL2RkcmF3L2QzZHZlcnRleGJ1ZmZlci5jLCBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsCgkgIGRsbHMvZGRyYXcvZDNkdmlld3BvcnQuYywgZGxscy9kZHJhdy9kY2xpcHBlci9tYWluLmMsCgkgIGRsbHMvZGRyYXcvbWFpbi5jLCBkbGxzL2RkcmF3L2RkcmF3L2hhbC5jLCBkbGxzL2RkcmF3L2RkcmF3L21haW4uYywKCSAgZGxscy9kZHJhdy9kZHJhdy90aHVua3MuYywgZGxscy9kZHJhdy9kZHJhdy91c2VyLmMsCgkgIGRsbHMvZGRyYXcvZGlyZWN0M2QvbWVzYS5jLCBkbGxzL2RkcmF3L2RwYWxldHRlL2hhbC5jLAoJICBkbGxzL2RkcmF3L2RwYWxldHRlL21haW4uYywgZGxscy9kZHJhdy9kc3VyZmFjZS9kaWIuYywKCSAgZGxscy9kZHJhdy9kc3VyZmFjZS9mYWtlemJ1ZmZlci5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL2dhbW1hLmMsCgkgIGRsbHMvZGRyYXcvZHN1cmZhY2UvaGFsLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UvdGh1bmtzLmMsCgkgIGRsbHMvZGRyYXcvZHN1cmZhY2UvdXNlci5jLCBkbGxzL2RldmVudW0vY3JlYXRlZGV2ZW51bS5jLAoJICBkbGxzL2RldmVudW0vZmFjdG9yeS5jLCBkbGxzL2RldmVudW0vbWVkaWFjYXRlbnVtLmMsCgkgIGRsbHMvZGV2ZW51bS9wYXJzZWRpc3BsYXluYW1lLmMsIGRsbHMvZGlucHV0L2RpbnB1dF9tYWluLmMsCgkgIGRsbHMvZGlucHV0L2pveXN0aWNrX2xpbnV4LmMsIGRsbHMvZGlucHV0L2pveXN0aWNrX2xpbnV4aW5wdXQuYywKCSAgZGxscy9kaW5wdXQva2V5Ym9hcmQuYywgZGxscy9kaW5wdXQvbW91c2UuYywgZGxscy9kbWJhbmQvYmFuZC5jLAoJICBkbGxzL2RtYmFuZC9iYW5kdHJhY2suYywgZGxscy9kbWJhbmQvZG1iYW5kX21haW4uYywKCSAgZGxscy9kbWNvbXBvcy9jaG9yZG1hcC5jLCBkbGxzL2RtY29tcG9zL2Nob3JkbWFwdHJhY2suYywKCSAgZGxscy9kbWNvbXBvcy9jb21wb3Nlci5jLCBkbGxzL2RtY29tcG9zL2RtY29tcG9zX21haW4uYywKCSAgZGxscy9kbWNvbXBvcy9zaWducG9zdHRyYWNrLmMsIGRsbHMvZG1pbWUvYXVkaW9wYXRoLmMsCgkgIGRsbHMvZG1pbWUvZG1pbWVfbWFpbi5jLCBkbGxzL2RtaW1lL2dyYXBoLmMsCgkgIGRsbHMvZG1pbWUvbHlyaWNzdHJhY2suYywgZGxscy9kbWltZS9tYXJrZXJ0cmFjay5jLAoJICBkbGxzL2RtaW1lL3BhcmFtY29udHJvbHRyYWNrLmMsIGRsbHMvZG1pbWUvcGF0dGVybnRyYWNrLmMsCgkgIGRsbHMvZG1pbWUvcGVyZm9ybWFuY2UuYywgZGxscy9kbWltZS9zZWdtZW50LmMsCgkgIGRsbHMvZG1pbWUvc2VnbWVudHN0YXRlLmMsIGRsbHMvZG1pbWUvc2VndHJpZ2dlcnRyYWNrLmMsCgkgIGRsbHMvZG1pbWUvc2VxdHJhY2suYywgZGxscy9kbWltZS9zeXNleHRyYWNrLmMsCgkgIGRsbHMvZG1pbWUvdGVtcG90cmFjay5jLCBkbGxzL2RtaW1lL3RpbWVzaWd0cmFjay5jLAoJICBkbGxzL2RtaW1lL3Rvb2wuYywgZGxscy9kbWltZS93YXZldHJhY2suYywKCSAgZGxscy9kbWxvYWRlci9jbGFzc2ZhY3RvcnkuYywgZGxscy9kbWxvYWRlci9jb250YWluZXIuYywKCSAgZGxscy9kbWxvYWRlci9sb2FkZXIuYywgZGxscy9kbWxvYWRlci9sb2FkZXJzdHJlYW0uYywKCSAgZGxscy9kbXNjcmlwdC9kbXNjcmlwdF9tYWluLmMsIGRsbHMvZG1zY3JpcHQvc2NyaXB0LmMsCgkgIGRsbHMvZG1zY3JpcHQvc2NyaXB0dHJhY2suYywgZGxscy9kbXN0eWxlL2F1ZGl0aW9udHJhY2suYywKCSAgZGxscy9kbXN0eWxlL2Nob3JkdHJhY2suYywgZGxscy9kbXN0eWxlL2NvbW1hbmR0cmFjay5jLAoJICBkbGxzL2Rtc3R5bGUvZG1zdHlsZV9tYWluLmMsIGRsbHMvZG1zdHlsZS9tb3RpZnRyYWNrLmMsCgkgIGRsbHMvZG1zdHlsZS9tdXRldHJhY2suYywgZGxscy9kbXN0eWxlL3N0eWxlLmMsCgkgIGRsbHMvZG1zdHlsZS9zdHlsZXRyYWNrLmMsIGRsbHMvZG1zeW50aC9kbXN5bnRoX21haW4uYywKCSAgZGxscy9kbXN5bnRoL3N5bnRoLmMsIGRsbHMvZG1zeW50aC9zeW50aHNpbmsuYywgZGxscy9kbXVzaWMvYnVmZmVyLmMsCgkgIGRsbHMvZG11c2ljL2Nsb2NrLmMsIGRsbHMvZG11c2ljL2NvbGxlY3Rpb24uYywgZGxscy9kbXVzaWMvZG11c2ljLmMsCgkgIGRsbHMvZG11c2ljL2RtdXNpY19tYWluLmMsIGRsbHMvZG11c2ljL2Rvd25sb2FkLmMsCgkgIGRsbHMvZG11c2ljL2Rvd25sb2FkZWRpbnN0cnVtZW50LmMsIGRsbHMvZG11c2ljL2luc3RydW1lbnQuYywKCSAgZGxscy9kbXVzaWMvcG9ydC5jLCBkbGxzL2RtdXNpYy9wb3J0ZG93bmxvYWQuYywgZGxscy9kbXVzaWMvdGhydS5jLAoJICBkbGxzL2RwbGF5eC9kcGNsYXNzZmFjdG9yeS5jLCBkbGxzL2RwbGF5eC9kcGxheS5jLAoJICBkbGxzL2RwbGF5eC9kcGxheXNwLmMsIGRsbHMvZHBsYXl4L2RwbG9iYnkuYywgZGxscy9kcGxheXgvbG9iYnlzcC5jLAoJICBkbGxzL2RwbmV0L2FkZHJlc3MuYywgZGxscy9kcG5ldC9jbGllbnQuYywgZGxscy9kcG5ldC9kcG5ldF9tYWluLmMsCgkgIGRsbHMvZHNvdW5kL2J1ZmZlci5jLCBkbGxzL2Rzb3VuZC9jYXB0dXJlLmMsIGRsbHMvZHNvdW5kL2Rzb3VuZC5jLAoJICBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jLCBkbGxzL2Rzb3VuZC9wcmltYXJ5LmMsCgkgIGRsbHMvZHNvdW5kL3Byb3BzZXQuYywgZGxscy9kc291bmQvc291bmQzZC5jLCBkbGxzL2Rzd2F2ZS9kc3dhdmUuYywKCSAgZGxscy9kc3dhdmUvZHN3YXZlX21haW4uYywgZGxscy9keGRpYWduL2NvbnRhaW5lci5jLAoJICBkbGxzL2R4ZGlhZ24vZHhkaWFnX21haW4uYywgZGxscy9keGRpYWduL3Byb3ZpZGVyLmMsCgkgIGRsbHMvbWxhbmcvbWxhbmcuYywgZGxscy9tc2Rtby9kbW9yZWcuYywgZGxscy9tc2kvbXNpLmMsCgkgIGRsbHMvb2xlMzIvYW50aW1vbmlrZXIuYywgZGxscy9vbGUzMi9iaW5kY3R4LmMsCgkgIGRsbHMvb2xlMzIvY2xpcGJvYXJkLmMsIGRsbHMvb2xlMzIvY29tcG9zaXRlbW9uaWtlci5jLAoJICBkbGxzL29sZTMyL2RhdGFjYWNoZS5jLCBkbGxzL29sZTMyL2RlZmF1bHRoYW5kbGVyLmMsCgkgIGRsbHMvb2xlMzIvZXJyb3JpbmZvLmMsIGRsbHMvb2xlMzIvZmlsZW1vbmlrZXIuYywKCSAgZGxscy9vbGUzMi9mdG1hcnNoYWwuYywgZGxscy9vbGUzMi9naXQuYywgZGxscy9vbGUzMi9oZ2xvYmFsc3RyZWFtLmMsCgkgIGRsbHMvb2xlMzIvaWZzLmMsIGRsbHMvb2xlMzIvaXRlbW1vbmlrZXIuYywgZGxscy9vbGUzMi9tYXJzaGFsLmMsCgkgIGRsbHMvb2xlMzIvbWVtbG9ja2J5dGVzLmMsIGRsbHMvb2xlMzIvbW9uaWtlci5jLCBkbGxzL29sZTMyL29sZW9iai5jLAoJICBkbGxzL29sZTMyL29sZXByb3h5LmMsIGRsbHMvb2xlMzIvcnBjLmMsIGRsbHMvb2xlMzIvc3RnX3N0cmVhbS5jLAoJICBkbGxzL29sZTMyL3N0b3JhZ2UzMi5jLCBkbGxzL29sZWF1dDMyL2Nvbm5wdC5jLAoJICBkbGxzL29sZWF1dDMyL2Rpc3BhdGNoLmMsIGRsbHMvb2xlYXV0MzIvb2xlZm9udC5jLAoJICBkbGxzL29sZWF1dDMyL29sZXBpY3R1cmUuYywgZGxscy9vbGVhdXQzMi90ZXN0cy9zYWZlYXJyYXkuYywKCSAgZGxscy9vbGVhdXQzMi90ZXN0cy92YXJ0eXBlLmMsIGRsbHMvb2xlYXV0MzIvdG1hcnNoYWwuYywKCSAgZGxscy9vbGVhdXQzMi90eXBlbGliLmMsIGRsbHMvb2xlYXV0MzIvdHlwZWxpYjIuYywKCSAgZGxscy9xdWFydHovYXZpc3BsaXQuYywgZGxscy9xdWFydHovZW51bWZpbHRlcnMuYywKCSAgZGxscy9xdWFydHovZW51bW1lZGlhLmMsIGRsbHMvcXVhcnR6L2VudW1tb25pa2VyLmMsCgkgIGRsbHMvcXVhcnR6L2VudW1waW5zLmMsIGRsbHMvcXVhcnR6L2VudW1yZWdmaWx0ZXJzLmMsCgkgIGRsbHMvcXVhcnR6L2ZpbGVzb3VyY2UuYywgZGxscy9xdWFydHovZmlsdGVyZ3JhcGguYywKCSAgZGxscy9xdWFydHovZmlsdGVybWFwcGVyLmMsIGRsbHMvcXVhcnR6L21haW4uYywKCSAgZGxscy9xdWFydHovbWVtYWxsb2NhdG9yLmMsIGRsbHMvcXVhcnR6L3Bpbi5jLAoJICBkbGxzL3F1YXJ0ei9zeXN0ZW1jbG9jay5jLCBkbGxzL3JwY3J0NC9jcHJveHkuYywgZGxscy9ycGNydDQvY3BzZi5jLAoJICBkbGxzL3JwY3J0NC9uZHJfb2xlLmMsIGRsbHMvc2hkb2N2dy9jbGFzc2luZm8uYywKCSAgZGxscy9zaGRvY3Z3L2V2ZW50cy5jLCBkbGxzL3NoZG9jdncvZmFjdG9yeS5jLCBkbGxzL3NoZG9jdncvbWlzYy5jLAoJICBkbGxzL3NoZG9jdncvb2xlb2JqZWN0LmMsIGRsbHMvc2hkb2N2dy9wZXJzaXN0LmMsCgkgIGRsbHMvc2hkb2N2dy93ZWJicm93c2VyLmMsIGRsbHMvc2hlbGwzMi9hdXRvY29tcGxldGUuYywKCSAgZGxscy9zaGVsbDMyL2NwYW5lbGZvbGRlci5jLCBkbGxzL3NoZWxsMzIvZGF0YW9iamVjdC5jLAoJICBkbGxzL3NoZWxsMzIvZHJhZ2Ryb3BoZWxwZXIuYywgZGxscy9zaGVsbDMyL2VudW1pZGxpc3QuYywKCSAgZGxscy9zaGVsbDMyL2ZvbGRlcnMuYywgZGxscy9zaGVsbDMyL21lbW9yeXN0cmVhbS5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9sZS5jLAoJICBkbGxzL3NoZWxsMzIvc2hmbGRyX2Rlc2t0b3AuYywgZGxscy9zaGVsbDMyL3NoZmxkcl9mcy5jLAoJICBkbGxzL3NoZWxsMzIvc2hmbGRyX215Y29tcC5jLCBkbGxzL3NoZWxsMzIvc2hsZnNiaW5kLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmMsIGRsbHMvc2hlbGwzMi9zaHZfYmdfY21lbnUuYywKCSAgZGxscy9zaGVsbDMyL3Nodl9pdGVtX2NtZW51LmMsIGRsbHMvc2hsd2FwaS9hc3NvYy5jLAoJICBkbGxzL3NobHdhcGkvaXN0cmVhbS5jLCBkbGxzL3NobHdhcGkvcmVnc3RyZWFtLmMsIGRsbHMvdXJsbW9uL3Vtb24uYywKCSAgZGxscy93aW5tbS93aW5lYWxzYS9hdWRpby5jLCBkbGxzL3dpbm1tL3dpbmVhbHNhL2F1ZGlvXzA1LmMsCgkgIGRsbHMvd2lubW0vd2luZWF1ZGlvaW8vYXVkaW8uYywgZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmMsCgkgIGluY2x1ZGUvb2JqYmFzZS5oOgoJR2V0IHJpZCBvZiB0aGUgbm8gbG9uZ2VyIHVzZWQgSUNPTV9NU1ZUQUJMRV9DT01QQVRfRHVtbXlSVFRJVkFMVUUKCW1hY3JvLgoKCSogZGxscy9tc3ZjcnQvc2NhbmYuaCwgZGxscy9udGRsbC9ydGxiaXRtYXAuYywKCSAgZGxscy9udGRsbC90ZXN0cy9ydGxiaXRtYXAuYywgZGxscy9udGRsbC90aHJlYWQuYywKCSAgaW5jbHVkZS93aW50ZXJubC5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglVcGRhdGUgUlRMX0JJVE1BUCBhbmQgUlRMX0JJVE1BUF9SVU4gdG8gbWF0Y2ggdGhlIDIwMDAgRERLLgoJT25seSB0ZXN0IHRoZSBSdGx7SW5pdGlhbGl6ZSxTZXRBbGwsQ2xlYXJBbGx9Qml0cyBtYWNyb3MgaWYgdGhleSBhcmUKCWRlZmluZWQuCgoJKiBkbGxzL2hoY3RybC5vY3gvTWFrZWZpbGUuaW4sIGRsbHMvaGhjdHJsLm9jeC9oaGN0cmwub2N4LnNwZWMsCgkgIGRsbHMvaGhjdHJsLm9jeC9yZWdzdnIuYywgdG9vbHMvd2luZS5pbmY6CglTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCUFkZGVkIGVtcHR5IERsbFJlZ2lzdGVyU2VydmVyLgoKCSogZGxscy9kZHJhdy9kY2xpcHBlci9tYWluLmMsIGRsbHMvZGRyYXcvZGNsaXBwZXIvbWFpbi5oOgoJVG9iaWFzIEJ1cm51cyA8YnVybnVzQGdteC5kZT4KCS0gTGltaXQgbnVtYmVyIG9mIEZJWE1FKClzIGluIENsaXBwZXJfU2V0Q2xpcExpc3QgYW5kIGRvY3VtZW50CgkgIGZ1bmN0aW9uLgoJLSBEb2N1bWVudCBDbGlwcGVyX0dldENsaXBMaXN0LgoKCSogZGxscy9vbGUzMi9kY29tLmgsIGluY2x1ZGUvYWN0aXZzY3AuaCwgaW5jbHVkZS9hbXN0cmVhbS5oLAoJICBpbmNsdWRlL2FtdmlkZW8uaCwgaW5jbHVkZS9hdXN0cmVhbS5oLCBpbmNsdWRlL2NvbWNhdC5oLAoJICBpbmNsdWRlL2Rkc3RyZWFtLmgsIGluY2x1ZGUvZGlzcGV4LmgsIGluY2x1ZGUvZG9jb2JqLmgsCgkgIGluY2x1ZGUvZXhkaXNwLmgsIGluY2x1ZGUvbWxhbmcuaCwgaW5jbHVkZS9tbXN0cmVhbS5oLAoJICBpbmNsdWRlL29haWRsLmgsIGluY2x1ZGUvb2JqYmFzZS5oLCBpbmNsdWRlL29iamlkbC5oLAoJICBpbmNsdWRlL29jaWRsLmgsIGluY2x1ZGUvb2xlaWRsLmgsIGluY2x1ZGUvcHN0b3JlLmgsCgkgIGluY2x1ZGUvcnBjcHJveHkuaCwgaW5jbHVkZS9zZXJ2cHJvdi5oLCBpbmNsdWRlL3NobGRpc3AuaCwKCSAgaW5jbHVkZS9zaGxvYmouaCwgaW5jbHVkZS9zaG9iamlkbC5oLCBpbmNsdWRlL3N0cm1pZi5oLAoJICBpbmNsdWRlL3Vua253bi5oLCBpbmNsdWRlL3Vua253bi5pZGwsIGluY2x1ZGUvdXJsbW9uLmgsCgkgIHRvb2xzL3dpZGwvaGVhZGVyLmM6CglHZXQgcmlkIG9mIHRoZSBJQ09NX01TVlRBQkxFX0NPTVBBVCBzdXBwb3J0LCBnKysgbm8gbG9uZ2VyIHJlcXVpcmVzCgl0aGlzLgoKCSogc2VydmVyL2NsaXBib2FyZC5jOiBVbHJpY2ggQ3pla2FsbGEgPHVscmljaEBjb2Rld2VhdmVycy5jb20+CglUaGUgY2xpcGJvYXJkIG93bmVyIGNhbiBiZSBzZXQgYnkgdGhlIHRocmVhZCB0aGF0IGhhcyB0aGUgY2xpcGJvYXJkCglvcGVuLgoKCSogZGxscy9kYmdoZWxwL3N0YWJzLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCVN0b3JlIHRoZSBjdXJyZW50IHNvdXJjZSBkaXJlY3RvcnkgYW5kIHVzZSBpdCB3aGVuIGVuY291bnRlcmluZyBhCglyZWxhdGl2ZSBpbmNsdWRlIHNvIHRoYXQgdGhlIGZ1bGwgcGF0aCB0byBpdCBpcyBzdG9yZWQgaW5zdGVhZC4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2Ugc3VyZSBleGVQYXRoIGNvbnRhaW5zIHRoZSBwYXRoIHNpbmNlIGl0IGlzIHVzZWQgbGF0ZXIgaW4gdGhlCglmdW5jdGlvbiBhcyB3ZWxsLgoKCSogZGxscy9tbGFuZy9tbGFuZy5jLCBkbGxzL21sYW5nL3Rlc3RzL21sYW5nLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRW51bWVyYXRlIGFsbCBhdmFpbGFibGUgc2NyaXB0cyBpbiBJTXVsdGlMYW5ndWFnZTJfRW51bVNjcmlwdHMsIGFkZAoJZml4ZWQvcHJvcG9ydGlvbmFsIGZvbnQgbmFtZXMgaW50byBtbGFuZyBkYXRhYmFzZS4KCgkqIGRsbHMva2VybmVsL2xvY2FsZS5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJR2V0Q1BJbmZvKEV4KSBzaG91bGQgd29yayBvbiBDUF9VVEY3L0NQX1VURjggcHNldWRvIGNvZGUgcGFnZXMsIGFzCglJc1ZhbGlkQ29kZVBhZ2UgZG9lcy4KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkanVzdCB0aGUgdGFiIGNvbnRlbnRzIHRvIGZpeCB0aGUgcHJvcHNoZWV0IGJldHdlZW4gUFNNX0tJTExBQ1RJVkUKCWFuZCBQU01fU0VUQUNUSVZFLgoKCSogZGxscy9kc291bmQvdGVzdHMvY2FwdHVyZS5jLCBkbGxzL2Rzb3VuZC90ZXN0cy9kczNkLmMsCgkgIGRsbHMvZHNvdW5kL3Rlc3RzL2RzM2Q4LmMsIGRsbHMvZHNvdW5kL3Rlc3RzL2Rzb3VuZC5jLAoJICBkbGxzL2Rzb3VuZC90ZXN0cy9kc291bmQ4LmMsIGRsbHMvZHNvdW5kL3Rlc3RzL3Byb3BzZXQuYzoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglPbmx5IHByaW50IGZvcm1hdCBpbmZvIHdoZW4gaW4gaW50ZXJhY3RpdmUgbW9kZSBmb3IgY2FwdHVyZSB0ZXN0LgoJQ2xlYW51cCBlcnJvciBhbmQgaW5mbyBtZXNzZ2VzLgoKCSogaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2lubnQuaDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglNb3ZlIExEVF9FTlRSWSB0byB3aW5udC5oLgoKMjAwNC0wOC0yMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRvY3VtZW50YXRpb24vZGVidWdnZXIuc2dtbCwgcHJvZ3JhbXMvd2luZWRiZy9icmVhay5jLAoJICBwcm9ncmFtcy93aW5lZGJnL2RiZy55LCBwcm9ncmFtcy93aW5lZGJnL2RlYnVnZ2VyLmgsCgkgIHByb2dyYW1zL3dpbmVkYmcvZGlzcGxheS5jLCBwcm9ncmFtcy93aW5lZGJnL2V4cHIuYywKCSAgcHJvZ3JhbXMvd2luZWRiZy9nZGJwcm94eS5jLCBwcm9ncmFtcy93aW5lZGJnL21lbW9yeS5jLAoJICBwcm9ncmFtcy93aW5lZGJnL3N0YWNrLmMsIHByb2dyYW1zL3dpbmVkYmcvc3ltYm9sLmMsCgkgIHByb2dyYW1zL3dpbmVkYmcvdHlwZXMuYywgcHJvZ3JhbXMvd2luZWRiZy93aW5lZGJnLmM6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCS0gZml4ZWQgYnJlYWtwb2ludCBlbmFibGVkL2Rpc2FibGVkIHN0YXRlIG1hbmFnZW1lbnQKCS0gZml4ZWQgcmVjdXJzaW9uIGluIHR5cGUgcHJpbnRpbmcKCS0gbm93IGFsbCB0eXBlLWlkIGFyZSBzdG9yZWQgd2l0aCB0aGUgYmFzZSBhZGRyZXNzIG9mIHRoZSBtb2R1bGUgd2hpY2gKCSAgZGVmaW5lcyB0aGUgdHlwZSAoc3RydWN0IGRiZ190eXBlIHRha2VzIGNhcmUgb2YgdGhpcyBwYWlyaW5nKQoJLSBmaXhlZCBhIGNvdXBsZSBvZiBidWdzIGluIGRpc3BsYXkgaGFuZGxpbmcKCS0gZml4ZWQgc3RyaW5ncyBwcmludCBhbmQgZXhhbWluYXRpb24KCgkqIE1ha2UucnVsZXMuaW4sIGRsbHMvb2xlMzIvTWFrZWZpbGUuaW4sIGRsbHMvb2xlMzIvZGNvbS5oLAoJICBpbmNsdWRlL01ha2VmaWxlLmluOgoJQWRkZWQgcmVjdXJzaXZlIGlkbCB0YXJnZXQgdG8gYWxsb3cgdXBkYXRpbmcgaWRsIGZpbGVzIHByaXZhdGUgdG8gYQoJZGxsLgoKCSogaW5jbHVkZS91bmtud24uaCwgdG9vbHMvd2lkbC9oZWFkZXIuYzoKCU91dHB1dCBCRUdJTi9FTkRfSU5URVJGQUNFIGZvciBDKysgYmFzZSBjbGFzc2VzIHRvby4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzIuaCwgZGxscy9jb21jdGwzMi9jb21tY3RybC5jLAoJICBkbGxzL2NvbWN0bDMyL3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMvY29tY3RsMzIvdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvY29tY3RsMzIvdGVzdHMvc3ViY2xhc3MuYzoKCUtldmluIEtvbHR6YXUgPGtldmluQHBsb3Aub3JnPgoJTWFrZSBTZXRXaW5kb3dTdWJjbGFzcyBiZWhhdmUgd2l0aCBTZXRXaW5kb3dMb25nIHN1YmNsYXNzZXMuCglBbGxvdyB1bmxpbWl0ZWQgbnVtYmVyIG9mIHN1YmNsYXNzZXMuCglDb3JyZWN0IGlzc3VlIHdoZW4gU2VuZE1lc3NhZ2UgaXMgY2FsbGVkIGZyb20gd2l0aGluIGEgc3ViY2xhc3MgcHJvYy4KCUFkZCByZWdyZXNzaW9uIHRlc3QuCgoJKiBkbGxzL250ZGxsL3Rlc3RzL2dlbmVyYXRlZC5jLCBpbmNsdWRlL3dpbm50LmgsCgkgIHRvb2xzL3dpbmFwaS90ZXN0cy5kYXQ6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVVwZGF0ZSBGUE9fREFUQSBhbmQgSU1BR0VfTE9BRF9DT05GSUdfRElSRUNUT1JZIHRvIG1hdGNoIHRoZSBsYXRlc3QKCXBsYXRmb3JtIFNESy4gVGhpcyBoZWxwcyBjb21waWxlIHRoZSBudGRsbCB0ZXN0cyBvbiBXaW5kb3dzLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGRsbHMvc2hlbGwzMi90ZXN0cy9nZW5lcmF0ZWQuYywKCSAgZGxscy9zaGVsbDMyL3VuZG9jc2hlbGwuaCwgaW5jbHVkZS9zaGxvYmouaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJTW92ZWQgZGVjbGFyYXRpb25zIGZyb20gdW5kb2NzaGVsbC5oIHRvIHNobG9iai5oIHRvIG1hdGNoIHRoZSBsYXRlc3QKCXBsYXRmb3JtIFNESy4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9taXhlci5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQWRkZWQgc3VwcG9ydCBmb3IgbXVsdGlwbGUgbWl4ZXJzLgoJR2V0IG1peGVyIG5hbWUgZnJvbSBPU1MuCglNb3JlIHRyYWNpbmcuCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJWSBjb29yZGluYXRlIG9mIHRoZSAibWFnaWMiIHN0YXRpYyBjb250cm9sIHNob3VsZCBiZSB0cmVhdGVkCglpbmNsdXNpdmVseS4KCgkqIGRsbHMvZGJnaGVscC9kYmdoZWxwX3ByaXZhdGUuaCwgZGxscy9kbWJhbmQvZG1iYW5kX3ByaXZhdGUuaCwKCSAgZGxscy9kbWJhbmQvZG11dGlscy5jLCBkbGxzL2RtY29tcG9zL2RtY29tcG9zX3ByaXZhdGUuaCwKCSAgZGxscy9kbWltZS9kbWltZV9wcml2YXRlLmgsIGRsbHMvZG1pbWUvZG11dGlscy5jLAoJICBkbGxzL2RtbG9hZGVyL2RtbG9hZGVyX3ByaXZhdGUuaCwgZGxscy9kbXNjcmlwdC9kbXNjcmlwdF9wcml2YXRlLmgsCgkgIGRsbHMvZG1zdHlsZS9kbXN0eWxlX3ByaXZhdGUuaCwgZGxscy9kbXN0eWxlL2RtdXRpbHMuYywKCSAgZGxscy9kbXN5bnRoL2Rtc3ludGhfcHJpdmF0ZS5oLCBkbGxzL2RtdXNpYy9kbXVzaWNfcHJpdmF0ZS5oLAoJICBkbGxzL2RtdXNpYzMyL2RtdXNpYzMyX21haW4uYywgZGxscy9kc3dhdmUvZHN3YXZlX3ByaXZhdGUuaCwKCSAgZGxscy9keGRpYWduL2R4ZGlhZ19wcml2YXRlLmgsIGRsbHMvbXNpL21zaXByaXYuaCwgZGxscy9tc2kvcXVlcnkuaCwKCSAgZGxscy9vbGUzMi9lcnJvcmluZm8uYywgZGxscy9vbGVhdXQzMi9oYXNoLmMsCgkgIGRsbHMvb2xlYXV0MzIvb2xlZm9udC5jLCBkbGxzL29sZWF1dDMyL3NhZmVhcnJheS5jLAoJICBkbGxzL29sZWF1dDMyL3ZhcmZvcm1hdC5jLCBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYywKCSAgZGxscy9vbGVhdXQzMi92YXJpYW50LmgsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwKCSAgZGxscy9zaGVsbDMyL3NobHZpZXcuYywgZGxscy9zaGx3YXBpL29yZGluYWwuYywgaW5jbHVkZS9vYmpiYXNlLmgsCgkgIGluY2x1ZGUvdW5rbnduLmgsIGluY2x1ZGUvdW5rbnduLmlkbCwgcHJvZ3JhbXMvd2luZWRiZy9kZWJ1Z2dlci5oOgoJRG9uJ3QgZGVmaW5lIEJFR0lOX0lOVEVSRkFDRSBpbiB1bmtud24uaC4KCgkqIGluY2x1ZGUvYWN0aXZzY3AuaCwgaW5jbHVkZS9hbXN0cmVhbS5oLCBpbmNsdWRlL2FtdmlkZW8uaCwKCSAgaW5jbHVkZS9hdXN0cmVhbS5oLCBpbmNsdWRlL2NvbWNhdC5oLCBpbmNsdWRlL2Rkc3RyZWFtLmgsCgkgIGluY2x1ZGUvZGlzcGV4LmgsIGluY2x1ZGUvZG9jb2JqLmgsIGluY2x1ZGUvZXhkaXNwLmgsCgkgIGluY2x1ZGUvbWxhbmcuaCwgaW5jbHVkZS9tbXN0cmVhbS5oLCBpbmNsdWRlL29haWRsLmgsCgkgIGluY2x1ZGUvb2JqaWRsLmgsIGluY2x1ZGUvb2NpZGwuaCwgaW5jbHVkZS9vbGVpZGwuaCwKCSAgaW5jbHVkZS9wc3RvcmUuaCwgaW5jbHVkZS9zZXJ2cHJvdi5oLCBpbmNsdWRlL3NobGRpc3AuaCwKCSAgaW5jbHVkZS9zaG9iamlkbC5oLCBpbmNsdWRlL3N0cm1pZi5oLCBpbmNsdWRlL3Vua253bi5oLAoJICBpbmNsdWRlL3Vua253bi5pZGwsIGluY2x1ZGUvdXJsbW9uLmgsIHRvb2xzL3dpZGwvaGVhZGVyLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglHZW5lcmF0ZSBCRUdJTl9JTlRFUkZBQ0UsRU5EX0lOVEVSRkFDRSBtYWNyb3MgaW5zdGVhZCBvZgoJSUNPTV9NU1ZUQUJMRV9DT01QQVRfRklFTERTLgoKCSogZGxscy9nZGkvdGVzdHMvZ2VuZXJhdGVkLmMsIGRsbHMvbXN2Y3J0L2V4Y2VwdC5jLAoJICBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jLCBkbGxzL250ZGxsL3Rlc3RzL2dlbmVyYXRlZC5jLAoJICBpbmNsdWRlL3dpbmdkaS5oLCBpbmNsdWRlL3dpbm50LmgsIHRvb2xzL3dpbmFwaS90ZXN0cy5kYXQ6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVJlbW92ZSB0aGVzZSBXaW5lLW9ubHkgdHlwZXM6CgkgIEVudW1JQ01Qcm9maWxlc1Byb2NDYWxsYmFjawoJICBQRVhDRVBUSU9OX1JFR0lTVFJBVElPTl9SRUNPUkQKCURvbid0IHRlc3QgdGhlc2UgV2luZS1vbmx5IHR5cGVzOgoJICBFTVJTRVRURVhUSlVTVElGSUNBVElPTgoJICBFWENFUFRJT05fUkVHSVNUUkFUSU9OX1JFQ09SRAoJUmVtb3ZlIEVYQ0VQVElPTl9GUkFNRSwgaXQgZG9lc24ndCBleGlzdCBhdCBhbGwuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvbWl4ZXIuYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUZpeGVkIGJ1ZyBpbiB2b2x1bWUgY29udHJvbCBzdGVwIHNpemUgc28gdGhhdCBpdCBhY3R1YWxseSB3b3Jrcy4KCUFkZGVkIGFkZGl0aW9uYWwgZGVidWcgdHJhY2luZy4KCUNvZGUgY2xlYW51cC4KCgkqIHRvb2xzL3dpbmFwaS9jX3BhcnNlci5wbTogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglERUNMQVJFX09MRF9IQU5ETEUgaXMgbm90IHVzZWQgYW55bW9yZS4KCgkqIHRvb2xzL3NmbnQyZm50LmM6IEdlcmFsZCBQZmVpZmVyIDxnZXJhbGRAcGZlaWZlci5jb20+CglJbmNsdWRlIDxzdGRsaWIuaD4gZm9yIGEgcHJvdG90eXBlIG9mIGV4aXQoKS4KCgkqIHByb2dyYW1zL3dpbmVjZmcvTmwucmMsIHByb2dyYW1zL3dpbmVjZmcvd2luZWNmZy5yYzoKCVJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCUFkZGVkIER1dGNoIHRyYW5zbGF0aW9uLgoKCSogZGxscy9jb21jdGwzMi90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL2NvbWN0bDMyL3Rlc3RzL01ha2VmaWxlLmluLAoJICBkbGxzL2NvbWN0bDMyL3Rlc3RzL2ltYWdlbGlzdC5jOgoJTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5kZT4KCVRlc3QgY2FzZSBmb3IgaG90c3BvdCBoYW5kbGluZy4KCgkqIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmM6IE1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuZGU+CgktIEZpeCBob3RzcG90IGhhbmRsaW5nCgktIFJlbW92ZSB1bnVzZWQgZmxhZyBmcm9tIHRoZSBJbnRlcm5hbERyYWcgc3RydWN0LgoKMjAwNC0wOC0yMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvZHNvdW5kL2NhcHR1cmUuYywgZGxscy9kc291bmQvZHNvdW5kLmMsCgkgIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmMsIGRsbHMvZHNvdW5kL2Rzb3VuZF9wcml2YXRlLmgsCgkgIGRsbHMvZHNvdW5kL3Byb3BzZXQuYywgZGxscy93aW5tbS9sb2x2bGRydi5jLAoJICBkbGxzL3dpbm1tL3dpbmVhbHNhL2F1ZGlvLmMsIGRsbHMvd2lubW0vd2luZWFydHMvYXVkaW8uYywKCSAgZGxscy93aW5tbS93aW5lYXVkaW9pby9hdWRpby5jLCBkbGxzL3dpbm1tL3dpbmVqYWNrL2F1ZGlvLmMsCgkgIGRsbHMvd2lubW0vd2luZW5hcy9hdWRpby5jLCBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYywKCSAgaW5jbHVkZS9tbWRkay5oOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCVJlbW92ZSB3aW5lIHNwZWNpZmljIERSVl9RVUVSWURTT1VOREdVSUQgbWVzc2FnZSBhbmQgY2FsY3VsYXRlIGl0IGluCglkc291bmQuZGxsIChsaWtlIGluIDJrL3hwKS4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlZm9udC5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBpbXBsZW1lbnRhdGlvbiBmb3IgSVBlcnNpc3RQcm9wZXJ0eUJhZ19Mb2FkIG9uIE9MRUZvbnQgKGJhc2VkIG9uCglhIHBhdGNoIGJ5IEFsZXggVmlsbGFj7XMgTGFzc28pLgoKCSogZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJVW5pY29kaWZ5IGEgbG9hZCBvZiBzdHJpbmdzLgoKCSogZGxscy9nZGkvYnJ1c2guYzogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCVJldHVybiBhIHN0b2NrIGJydXNoIHdoZW4gYXNraW5nIGZvciBhIGJydXNoIHdpdGggdGhlIHNhbWUKCWNoYXJhY3RlcmlzdGljcywgYXMgcGVyIG5hdGl2ZS4gRG9jdW1lbnQgdGhlIGJydXNoIGZ1bmN0aW9ucy4KCgkqIGRsbHMvc2hlbGwzMi90ZXN0cy9nZW5lcmF0ZWQuYywgaW5jbHVkZS9zaGxvYmouaCwKCSAgdG9vbHMvd2luYXBpL2NfcGFyc2VyLnBtLCB0b29scy93aW5hcGkvY190eXBlLnBtLAoJICB0b29scy93aW5hcGkvd2luYXBpX3Rlc3Q6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUZpeCBwYWNraW5nIGJ1ZyBpbiBzaGxvYmouaC4KCUZpeCB0aGUgZGVjbGFyYXRpb24gb2YgYml0ZmllbGRzIHNvIHRoZWlyIGxheW91dCBtYXRjaGVzIHdoYXQgTVNWQwoJZ2VuZXJhdGVzLgoJTW9kaWZ5IHdpbmFwaV90ZXN0IHRvIGNvbXB1dGUgdGhlIGJpdGZpZWxkcyBzaXplL2FsaWdubWVudCBsaWtlIE1TVkMKCWRvZXMuCglVcGRhdGUgdGhlIGltcGFjdGVkIGdlbmVyYXRlZC5jIGZpbGVzLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsbGluay5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJSW4gSVBlcnNpc3RGaWxlX1NhdmUgaWYgdGhlIGV4ZSBmaWxlIGlzIG5vdCBmb3VuZCwgdHJ1c3QgdGhlIHBhdGggd2UKCWFyZSBnaXZlbiBhbmQgYWxsb3cgY3JlYXRpb24gb2YgdGhlIGxpbmsuCgoJKiBkbGxzL3dpbm1tL21jaWNkYS9tY2ljZGEuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBJbnB1dCBwYXRoIGNhbiBoYXZlIHRyYWlsaW5nIHNsYXNoLgoJLSBJbXByb3ZlIHNvbWUgZGVidWdnaW5nIG1lc3NhZ2VzLgoKCSogZGxscy9nZGkvY2xpcHBpbmcuYywgaW5jbHVkZS93aW5nZGkuaDoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gRml4IHR5cGUgaW4gR2V0UmFuZG9tUmVnaW9uIGZ1bmN0aW9uLgoJLSBBZGQgcHJvdG90eXBlIHRvIGhlYWRlci4KCgkqIGRsbHMvYWR2YXBpMzIvY3J5cHQuYzogSmFtZXMgSGF3a2lucyA8dHJ1aWtlbkBnbWFpbC5jb20+CglFbmFibGUgRVJST1JfTU9SRV9EQVRBIHRvIGJlIHNldCBpbiBDcnlwdEdldERlZmF1bHRQcm92aWRlci4KCgkqIGRsbHMvYWR2YXBpMzIvdGVzdHMvY3J5cHQuYzogSmFtZXMgSGF3a2lucyA8dHJ1aWtlbkBnbWFpbC5jb20+CglBZGRlZCB0ZXN0cyBmb3IgQ3J5cHRTZXRQcm92aWRlckV4LgoKCSogaW5jbHVkZS93aW50ZXJubC5oOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBwcm90b3R5cGVzIGZvciBhIGZldyBtb3JlIE5hdGl2ZSBBUEkgZnVuY3Rpb25zLgoKCSogZGxscy93aW5tbS93aW5lb3NzL21peGVyLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglDaGFuZ2Ugc3RlcCBzaXplIGZyb20gMCB0byAxIGZvciB2b2x1bWUgY29udHJvbHMgdG8gc3RvcCBkaXZpZGUgYnkKCXplcm8gaW4gYXBwLgoJQ2hhbmdlIGRlYnVnIGNoYW5uZWwgdG8gbWl4ZXIuCglBZGQgbW9yZSB0cmFjaW5nIGFuZCBlcnJvcnMuCgoyMDA0LTA4LTE5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9rZXJuZWwvdGVzdHMvZ2VuZXJhdGVkLmMsIGRsbHMvbnRkbGwvdGVzdHMvZ2VuZXJhdGVkLmMsCgkgIGRsbHMvc2hlbGwzMi90ZXN0cy9nZW5lcmF0ZWQuYywgdG9vbHMvd2luYXBpL3Rlc3RzLmRhdDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJUmVtb3ZlIHR5cGVzIHRoYXQgZG9uJ3QgZXhpc3QgZnJvbSB0ZXN0cy5kYXQuCglEb24ndCB0ZXN0IHR5cGVzIHRoYXQgaGF2ZSBhIHBsYXRmb3JtIGRlcGVuZGVudCBsYXlvdXQuCglEb24ndCB0ZXN0IFdpbmUtb25seSB0eXBlcy4KCUhlbHBzIGdldCB0aGUgZ2VuZXJhdGVkIHRlc3RzIGNvbXBpbGluZyBvbiBXaW5kb3dzLgoKCSogZGxscy9vbGVhdXQzMi90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL29sZWF1dDMyL3Rlc3RzL01ha2VmaWxlLmluLAoJICBkbGxzL29sZWF1dDMyL3Rlc3RzL3R5cGVsaWIuYywgZGxscy9vbGVhdXQzMi90eXBlbGliLmM6CglKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJUmVmIGNvdW50aW5nIGZpeGVzLgoKCSogZm9udHMvZ2VudHRmLmZmOiBHZW5lcmF0ZSB0aGUgLnR0ZiBmaWxlIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4KCgkqIGRsbHMvc2hsd2FwaS90ZXN0cy9nZW5lcmF0ZWQuYywgaW5jbHVkZS9zaGx3YXBpLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUZpeCBwYWNraW5nIG9mIHNobHdhcGkuaAoJQWRkIGEgREVDTFNQRUNfQUxJR04oOCkgdG8gZm9yY2UgRExMVkVSU0lPTklORk8yIHRvIGhhdmUgdGhlIGNvcnJlY3QKCWFsaWdubWVudC4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzIuaCwgZGxscy9jb21jdGwzMi9jb21tY3RybC5jLAoJICBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gSW1wbGVtZW50IGluc2VydCBtYXJrcy4KCS0gUmVhcnJhbmdlIFRPT0xCQVJfSU5GTy4KCgkqIGRsbHMvd2luaW5ldC91cmxjYWNoZS5jLCBkbGxzL3dpbmluZXQvd2luaW5ldC5zcGVjOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJRml4IHR5cGUgb2YgRGVsZXRlSUUzQ2FjaGUgZnVuY3Rpb24uCgoJKiBkbGxzL3dpbm1tL3dpbmVhbHNhL2F1ZGlvLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglBZGRlZCAyNC8zMiBiaXQgc2FtcGxlIHNpemUgYW5kIDQvNiBjaGFubmVsIHN1cHBvcnQuCglBZGRlZCBkc291bmQgY2FwdHVyZSB3aW5lIHNwZWNpZmljIG1lc3NhZ2Ugc3VwcG9ydC4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2Ftc3RyZWFtL01ha2VmaWxlLmluLAoJICBkbGxzL2RldmVudW0vTWFrZWZpbGUuaW4sIGRsbHMvbXNodG1sL01ha2VmaWxlLmluLAoJICBkbGxzL3F1YXJ0ei9NYWtlZmlsZS5pbiwgZGxscy9xdWFydHovdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvc3RybWlpZHMvLmN2c2lnbm9yZSwgZGxscy9zdHJtaWlkcy9NYWtlZmlsZS5pbiwKCSAgZGxscy9zdHJtaWlkcy9zdHJtaWlkcy5jLCBkbGxzL3V1aWQvdXVpZC5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBZGRlZCAnc3RybWlpZHMubGliJy4KCU1vdmVkIENMU0lEX0ZpbHRlckdyYXBoIGFuZCB0aGUgcmVsYXRlZCBHVUlEcyB0byBzdHJtaWlkcy4KCgkqIGRsbHMvcXVhcnR6L3Rlc3RzL2ZpbHRlcmdyYXBoLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRGVmaW5lIENPQkpNQUNST1MuIEZpeGVzIGNvbXBpbGF0aW9uIG9uIFdpbmRvd3MuCgoJKiBkbGxzL3NoZWxsMzIvdGVzdHMvZ2VuZXJhdGVkLmMsIGluY2x1ZGUvc2hlbGxhcGkuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQWRkIG5ldyBmaWVsZHMgdG8gdGhlIE5PVElGWUlDT05EQVRBIHN0cnVjdHVyZSBzbyBpdCBtYXRjaGVzIHRoZQoJbGF0ZXN0IHBsYXRmb3JtIFNESy4KCVVwZGF0ZSBzaGVsbDMyL3Rlc3RzL2dlbmVyYXRlZC5jLiBJdCBub3cgd29ya3Mgd2hlbiBjb21waWxlZCB3aXRoIHRoZQoJV2luZG93cyBoZWFkZXJzLgoKCSogZGxscy9jb21jdGwzMi90b29sdGlwcy5jOiBVbHJpY2ggQ3pla2FsbGEgPHVscmljaEBjb2Rld2VhdmVycy5jb20+CglDbGVhciB0b29sdGlwIHdoZW4gdGV4dCBpcyBzZXQgdG8gTlVMTC4KCVJlcGFpbnQgdG9vbHRpcCB3aGVuIGl0ZW0gaW5mbyBjaGFuZ2VzLgoKCSogZGxscy9jb21jdGwzMi9jb21ib2V4LmM6IFVscmljaCBDemVrYWxsYSA8dWxyaWNoQGNvZGV3ZWF2ZXJzLmNvbT4KCUZvcndhcmQgZm9jdXMgdG8gY29tYm9ib3gsIG90aGVyd2lzZSBlZGl0IGNvbnRyb2wgd29uJ3QgZ2V0IGZvY3VzLgoKCSogZGxscy9jb21jdGwzMi90YWIuYzogVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hAY29kZXdlYXZlcnMuY29tPgoJVGhlIHJlY3RhbmdsZSBwYXNzZWQgaW4gRFJBV0lURU1TVFJVQ1QgaXMgc2xpZ2h0bHkgdG9vIGxhcmdlIGFzCgljb21wYXJlZCB3aXRoIFdpbmRvd3MuCgoJKiBmb250cy93aW5lX3N5c3RlbS5zZmQ6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglDb21wbGV0ZSBjcDEyNTIgZm9yIFN5c3RlbS4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIEZpeCBhbmNob3IgaGlnaGxpZ2h0aW5nLgoJLSBSZW1vdmUgcmVkdW5kYW50IHRlc3QgaW4gVE9PTEJBUl9EcmF3QnV0dG9uLgoKCSogZGxscy93aW5pbmV0L2ludGVybmV0LmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUJldHRlciBUUkFDRSdzIGZvciBzb21lIEludGVybmV0KiBmdW5jdGlvbnMuCgoJKiBkbGxzL2FkdmFwaTMyL2FkdmFwaTMyLnNwZWMsIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYywKCSAgZGxscy9hZHZhcGkzMi90ZXN0cy9zZWN1cml0eS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IEJ1aWxkVHJ1c3RlZVdpdGhTaWQsIGltcGxlbWVudCBhbmQgdGVzdCBCdWlsZFRydXN0ZWVXaXRoTmFtZS4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOiBKb2huIEsuIEhvaG0gPGpob2htQGFjbS5vcmc+CglDb25zaXN0ZW50bHkgc3VnZ2VzdCBwcm9wZXIgRW11bGF0aW9uIHJhdGhlciB0aGFuIEVtdWxhdGVkIGZvcgoJSGFyZHdhcmVBY2NlbGVyYXRpb24gaW4gW2Rzb3VuZF0gc2VjdGlvbiBvZiBjb25maWcgZmlsZS4KCgkqIGRsbHMvbnRkbGwvZmlsZS5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglIYW5kbGUgRUNPTk5SRVNFVCBpbiBGSUxFX0dldE50U3RhdHVzLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvZmlsZS5jLCBkbGxzL250ZGxsL2ZpbGUuYzoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gRXJyb3JzIHNob3VsZCBvbmx5IGJlIHJlcG9ydGVkIHRvIEkvTyBjb21wbGV0aW9uIHJvdXRpbmUgYWZ0ZXIKCSAgTnRSZWFkRmlsZSBoYXMgc3VjY2VlZGVkLgoJLSBUZXN0IGNhc2UgZm9yIHRoaXMgYmVoYXZpb3VyLgoKCSogZGxscy9xdWFydHovZmlsZXNvdXJjZS5jLCBkbGxzL3F1YXJ0ei9waW4uYzoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gUmVtb3ZlIGR1cGxpY2F0ZWQgY29kZSBpbiBmaWxlIHJlYWRlci4KCS0gVXNlIG5ldyBDcmVhdGVTcGVjaWZpYyBmdW5jdGlvbiBmb3IgZmlsZSByZWFkZXIgdGhhdCBkb2Vzbid0IHF1ZXJ5CgkgIGZvciBJTWVtSW5wdXRQaW4uCgktIEdldCByaWQgb2YgaW5lZmZpY2llbnQgdXNlIG9mIElNZW1JbnB1dFBpbiBpbiBnZW5lcmFsIHBpbiBjb2RlLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMva2VybmVsL01ha2VmaWxlLmluLAoJICBkbGxzL250ZGxsL01ha2VmaWxlLmluLCBkbGxzL250ZGxsL2ZpbGUuYywgdG9vbHMvd2luZWdjYy93aW5lZ2NjLmM6CglFbW1hbnVlbCBNYWlsbGFyZCA8ZS5yc3pAbGliZXJ0eXN1cmYuZnI+CgktIFVwZGF0ZSBidWlsZCBzeXN0ZW0gdG8gc3VwcG9ydCBJT0tpdCBhbmQgQ29yZUZvdW5kYXRpb24gZnJhbWV3b3JrcwoJICBvbiBEYXJ3aW4uCgktIEFkZCBzdXBwb3J0IGZvciB0aGUgLWZyYW1ld29yayAibmFtZSIgbGlua2VyIG9wdGlvbi4KCS0gTnRRdWVyeVZvbHVtZUluZm9ybWF0aW9uRmlsZSBzZXQgZGV2aWNlIGluZm8gb24gRGFyd2luLgoKCSogZGxscy93aW5tbS90ZXN0cy9jYXB0dXJlLmMsIGRsbHMvd2lubW0vdGVzdHMvd2F2ZS5jLAoJICBkbGxzL3dpbm1tL3Rlc3RzL3dpbm1tX3Rlc3QuaDoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglBZGRlZCAzMiBiaXQgc2FtcGxlIHNpemUgdGVzdHMgYW5kIDQgYW5kIDYgY2hhbm5lbCB0ZXN0cy4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQ2xlYW51cCBtZXNzYWdlcyBpbiBzdXBwb3J0ZWRGb3JtYXQuCgoJKiBkbGxzL3dpbm1tL3dhdmVtYXAvd2F2ZW1hcC5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJRG9uJ3QgdHJ5IHRvIGZpbmQgYWx0ZXJuYXRlIGZvcm1hdHMgZm9yIG5vbiBQQ00gZm9ybWF0cy4KCgkqIGRsbHMvd2luaW5ldC91cmxjYWNoZS5jLCBkbGxzL3dpbmluZXQvd2luaW5ldC5zcGVjOgoJU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtTGluZS5jb20+CglBZGRlZCBzdHViIGZvciBEZWxldGVJRTNDYWNoZS4KCgkqIHdpbmRvd3MvZGVmZGxnLmM6IFphY2ggR29ybWFuIDx6YWNoQGFyY2hldHlwZWF1Y3Rpb24uY29tPgoJV2hlbiBzZWFyY2hpbmcgZm9yIHRoZSBERUZQVVNIQlVUVE9OIGluIGEgZGlhbG9nLCByZWN1cnNlIGludG8gY2hpbGQKCXdpbmRvd3Mgd2l0aCB0aGUgV1NfRVhfQ09OVFJPTFBBUkVOVCBzdHlsZSAoaWYgdGhleSBhcmUgdmlzaWJsZSBhbmQKCWVuYWJsZWQpLgoKCSogdG9vbHMvd3JjL3BhcnNlci55OiBaYWNoIEdvcm1hbiA8emFjaEBhcmNoZXR5cGVhdWN0aW9uLmNvbT4KCVdTX1RBQlNUT1Agc2hvdWxkIG5vdCBiZSBhIGRlZmF1bHQgc3R5bGUgZm9yIEdST1VQQk9YIGNvbnRyb2xzLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWM6IFZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCVNob3cgdGhlIHByb3BlciBtYWtlIGNvbW1hbmQgYXQgdGhlIGVuZCBvZiBjb25maWd1cmUuCgoyMDA0LTA4LTE4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS93aW5jcnlwdC5oOiBNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglBZGRlZCBzb21lIGRlZmluZXMgZm9yIENQU2V0S2V5UGFyYW0uCgoJKiBkbGxzL3NobHdhcGkvdGVzdHMvb3JkaW5hbC5jOgoJU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtTGluZS5jb20+CglGaXhlZCB0ZXN0cyBvZiBHZXRBY2NlcHRMYW5ndWFnZXNBIGZvciB3aW4yayBhbmQgd2luIFhQLgoKCSogZGxscy94MTFkcnYvd2luZG93LmMsIGRsbHMveDExZHJ2L3dpbnBvcy5jLCBkbGxzL3gxMWRydi94MTFkcnYuaDoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUFsbG93IHRoZSB1c2VyIHRvIG1vdmUgbWFuYWdlZCB3aW5kb3dzIGJ5IGRyYWdnaW5nIG9uIEhUQ0FQVElPTgoJYXJlYXMuCgoJKiBkbGxzL21zaS9wYWNrYWdlLmMsIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYzoKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCURvbid0IGhhcmRjb2RlIGM6XHdpbmRvd3MgcGF0aHMgaW4gbXNpLmRsbC4KCgkqIHByb2dyYW1zL3dpbmVtZW51YnVpbGRlci93aW5lbWVudWJ1aWxkZXIuYzoKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCURvbid0IGhhcmRjb2RlIEM6XHdpbmRvd3Ncc3lzdGVtXHN0YXJ0LmV4ZS4KCgkqIGRsbHMva2VybmVsL3Byb2Nlc3MuYzoKCVRoZSBhcmd2IGFycmF5IHBhc3NlZCB0byB0aGUgYXBwIG5lZWRzIHRvIGJlIGluIHRoZSBBbnNpIGNvZGVwYWdlLCBub3QKCXRoZSBVbml4IG9uZS4KCgkqIGRsbHMvY29tbWRsZy9wcmludGRsZy5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJRml4IHByaW50ZXIgc2VsZWN0aW9uIGluIFBEX1BSSU5UU0VUVVAgdHlwZSBkaWFsb2dzLgoKCSogaW5jbHVkZS93aW5nZGkuaDogQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJQWRkZWQgT0JKX0NPTE9SU1BBQ0UgZGVmaW5lLgoKCSogZGxscy9udGRsbC9maWxlLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCURvIG5vdCBtYWtlIGEgZGlyZWN0b3J5IHJlYWQtb25seS4KCgkqIHByb2dyYW1zL3dpbmV0ZXN0L3NlbmQuYzogRmVyZW5jIFdhZ25lciA8d2ZlcmlAYWZhdmFudC5lbHRlLmh1PgoJQXZvaWQgY3Jhc2hpbmcgb24gdW5zdWNjZXNzZnVsIHNlbmQuCgoJKiBkbGxzL2Rzb3VuZC90ZXN0cy9jYXB0dXJlLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglDbGVhbnVwIG1lc3NhZ2VzLgoKCSogZGxscy9vbGVhdXQzMi9vbGVwaWN0dXJlLmM6CglBbGV4IFZpbGxhY+1zIExhc3NvIDxhX3ZpbGxhY2lzQHBhbG9zYW50by5jb20+CglBZGQgZGV0ZWN0aW9uIG9mIGdyYXBoaWMgZmlsZSBoZWFkZXIgaW4gcGljdHVyZSBsb2FkLCB0cmVhdCBpdCBhcwoJbm8taGVhZGVyIGNhc2UuCgoJKiBkbGxzL2Rzb3VuZC9idWZmZXIuYywgZGxscy9kc291bmQvY2FwdHVyZS5jLCBkbGxzL2Rzb3VuZC9kc291bmQuYywKCSAgZGxscy9kc291bmQvZHNvdW5kX3ByaXZhdGUuaCwgZGxscy9kc291bmQvbWl4ZXIuYywKCSAgZGxscy9kc291bmQvcHJpbWFyeS5jLCBkbGxzL2Rzb3VuZC9wcm9wc2V0LmMsIGRsbHMvZHNvdW5kL3NvdW5kM2QuYzoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglBbGxvY2F0ZSB3YXZlIGZvcm1hdCBzdHJ1Y3R1cmUgZHluYW1pY2FsbHkgYmFzZWQgb24gZm9ybWF0LgoJUmVtb3ZlIGZvcm1hdCBjaGVja3MgdG8gYWxsb3cgZHJpdmVyIHRvIGRlY2lkZSBpZiBmb3JtYXQgc3VwcG9ydGVkLgoJQ29kZSBjbGVhbnVwcy4KCgkqIGRsbHMvZHNvdW5kL3Rlc3RzL2RzM2QuYywgZGxscy9kc291bmQvdGVzdHMvZHMzZDguYzoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglDbGVhbnVwIHNvbWUgbW9yZSBtZXNzYWdlcy4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJU29tZSBzb3VuZCBjYXJkcyBoYXZlIGRpZmZlcmVudCBjYXBhYmlsaXRpZXMgd2hlbiBkb2luZyBmdWxsIGR1cGxleCBzbwoJYWRkIGR1cGxleCBjYXBzIGFuZCByZXR1cm4gdGhlbSB3aGVuIG5lY2Vzc2FyeS4KCUNsZWFuIHVwIGV2ZW50IG1lc3NhZ2UgcHJpbnRpbmcuCgoJKiBkbGxzL29sZWF1dDMyL29sZXBpY3R1cmUuYzoKCUFsZXggVmlsbGFj7XMgTGFzc28gPGFfdmlsbGFjaXNAcGFsb3NhbnRvLmNvbT4KCUFwcGx5IEhJTUVUUklDIHRyYW5zZm9ybWF0aW9uIG9uIGljb25zLCBqdXN0IGxpa2UgYml0bWFwcy4KCgkqIGRsbHMvZGV2ZW51bS9kZXZlbnVtLnJjOiBKb3PpIE1hbnVlbCBGZXJyZXIgT3J0aXogPGptZm8xOTgyQHlhaG9vLmVzPgoJQWRkZWQgU3BhbmlzaCB0cmFuc2xhdGlvbi4KCgkqIGRsbHMva2VybmVsL2NvbW0uYywgZGxscy9rZXJuZWwvZmlsZS5jLCBkbGxzL2tlcm5lbC9zeW5jLmMsCgkgIGRsbHMva2VybmVsL3Z4ZC5jLCBkbGxzL250ZGxsL2Nkcm9tLmMsIGRsbHMvbnRkbGwvZGlyZWN0b3J5LmMsCgkgIGRsbHMvbnRkbGwvZmlsZS5jLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvbnRkbGwvc2VydmVyLmMsCgkgIGRsbHMvbnRkbGwvdmlydHVhbC5jLCBkbGxzL3dpbmVkb3MvaW50MTMuYywgZGxscy93aW5lZG9zL2ludDIxLmMsCgkgIGRsbHMvd2luc29jay9zb2NrZXQuYywgaW5jbHVkZS93aW5lL3NlcnZlci5oLAoJICBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsIG1pc2MvcmVnaXN0cnkuYywgc2VydmVyL2ZkLmMsCgkgIHNlcnZlci9maWxlLmMsIHNlcnZlci9maWxlLmgsIHNlcnZlci9uYW1lZF9waXBlLmMsCgkgIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci9zZXJpYWwuYywgc2VydmVyL3NvY2suYywgc2VydmVyL3RyYWNlLmM6CglGZCB0eXBlIGlzIG5vIGxvbmdlciB1c2VkLCBnZXQgcmlkIG9mIGl0LgoKMjAwNC0wOC0xNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL2ZpbGUuYywgZGxscy9udGRsbC9maWxlLmMsIGluY2x1ZGUvYXN5bmMuaCwKCSAgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLCBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvc2VyaWFsLmMsCgkgIHNlcnZlci9zb2NrLmM6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCS0gYmV0dGVyIHN1cHBvcnQgZm9yIG5vbi1ibG9ja2luZyBDT01NIGFuZCBzb2NrZXQgcmVhZC93cml0ZXM6CgkgICsgYWRkZWQgbmVjZXNzYXJ5IHNlbWFudGljcyB0byBmZCBmbGFncwoJICArIG5vIGxvbmdlciB1c2VzIGZkIHR5cGUgKGJ1dCBmZCBmbGFncykgcmVhZC93cml0ZSBzZW1hbnRpYyBiZWhhdmlvcgoJLSBmaXhlZCBzb2NrZXQgY29kZSB0byB1c2UgdGhlIHByb3BlciBtYW5pZmVzdCBjb25zdGFudHMKCS0gZml4ZXMgZm9yIGtlcm5lbDMyLkdldE92ZXJsYXBwZWRSZXN1bHQgd2l0aG91dCBoRXZlbnQgc2V0CgktIGluIG50ZGxsLk50e1JlYWR8V3JpdGV9RmlsZQoJICArIGFsd2F5cyByZXNldCB0aGUgZXZlbnQKCSAgKyBhZGRlZCBzdXBwb3J0IGZvciBsb25nbG9uZyBvZmZzZXRzCgkgICsgYmV0dGVyIG9iamVjdCBkaXNwb3NhbCBpbiBlcnJvciBoYW5kbGluZyBjb2RlIHBhdGhzCgoJKiBNYWtlLnJ1bGVzLmluLCBNYWtlZmlsZS5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuYWMsCgkgIGZvbnRzLy5jdnNpZ25vcmUsIGZvbnRzL01ha2VmaWxlLmluLCBmb250cy9nZW50dGYuZmYsCgkgIGZvbnRzL3dpbmVfY291cmllci5zZmQsIGZvbnRzL3dpbmVfc2Fuc19zZXJpZi5zZmQsCgkgIGZvbnRzL3dpbmVfc3lzdGVtLnNmZCwgdG9vbHMvLmN2c2lnbm9yZSwgdG9vbHMvTWFrZWZpbGUuaW4sCgkgIHRvb2xzL2ZudDJmb24uYywgdG9vbHMvc2ZudDJmbnQuYzoKCUh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglGaXJzdCBzdGFiIGF0IFdpbmUgdmVyc2lvbnMgb2YgQ291cmllciwgU3lzdGVtIGFuZCBNUyBTYW5zIFNlcmlmCglmb250cy4KCgkqIGRsbHMvYWR2YXBpMzIvc2VydmljZS5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJTGV0IFN0YXJ0U2VydmljZUN0cmxEaXNwYXRjaGVyIGhhbmRsZSBzZXJ2aWNlcyBub3Qgc3RhcnRlZCBieQoJU3RhcnRTZXJ2aWNlLgoKCSogZGxscy9udGRsbC9udC5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgaGFuZGxpbmcgb2YgVG9rZW5QcmltYXJ5R3JvdXAuCgoJKiBkbGxzL3gxMWRydi93aW5wb3MuYzoKCUtyaXNobmEgTXVydGh5IDxLcmlzaG5hLk11cnRoeUBndXB0YXdvcmxkd2lkZS5jb20+CglBbGxvdyByZXNpemluZyB3aW5kb3dzIHdpdGhvdXQgdGhpY2tmcmFtZSBzdHlsZS4KCgkqIGRsbHMvbWFrZV9kbGxzOiBBTFROQU1FUyBoYXMgYmVlbiByZW1vdmVkLCB1c2UgU1BFQ19TUkNTMTYgaW5zdGVhZC4KCgkqIGRvY3VtZW50YXRpb24vY29uZmlndXJpbmcuc2dtbDogRmVyZ2FsIERhbHkgPGZlcmdhbEBlc2F0Y2xlYXIuaWU+CglEb2N1bWVudCBkb3NkZXZpY2VzL3VuYyBtYXBwaW5nLgoKCSogZGxscy9udGRsbC9udC5jLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGluY2x1ZGUvd2ludGVybmwuaDoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVN0dWIgaW1wbGVtZW50YXRpb24gZm9yIE50U2V0SW5mb3JtYXRpb25Ub2tlbi4KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUFsd2F5cyByZWRyYXcgZGlhbG9nIG9uIGNoYW5naW5nIGJldHdlZW4gcGFnZXMuCgoJKiBkbGxzL2NhcGkyMDMyL2NhcDIwd3h4LmM6IE1hcmN1cyBNZWlzc25lciA8bWVpc3NuZXJAc3VzZS5kZT4KCU5ld2VyIGRlcGVuZGVudCBsaW51eCBoZWFkZXJzIGhhdmUgX191c2VyIG5vdGF0aW9ucywgd2hpY2ggd2UgbmVlZCB0bwoJcHJvdmlkZS4gRGVmaW5lIGl0IHRvIGJlIGVtcHR5LgoKCSogZGxscy9nZGkvZnJlZXR5cGUuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUNvbnZlcnQgaW5zdGFsbGVkIGZvbnQgbGlzdCB0byBsaXN0LmguCgoJKiBkbGxzL2FkdmFwaTMyL2NyeXB0LmM6IEphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJSWYgcHN6VHlwZU5hbWUgaXMgdG9vIHNtYWxsIHRvIGhvbGQgdGhlIHR5cGUgbmFtZSBpbgoJQ3J5cHRFbnVtUHJvdmlkZXJUeXBlcywgcmV0dXJuIEVSUk9SX01PUkVfREFUQS4KCgkqIGRsbHMvYWR2YXBpMzIvdGVzdHMvY3J5cHQuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlIHVubmVjZXNzYXJ5IGNhc3RzIGluIGNyeXB0IHRlc3RzLgoKCSogREVWRUxPUEVSUy1ISU5UUzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJVXBkYXRlIGRpcmVjdG9yeSBsaXN0LgoKMjAwNC0wOC0xNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvd2lubW0vd2lubW0uYywgZGxscy93aW5tbS93aW5tbS5zcGVjOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglJbXBsZW1lbnRlZCB0aGUgbW1UYXNrKiBmdW5jdGlvbnMuCgoJKiBkbGxzL3VzZXIvdGVzdHMvd2luLmM6IEZlcmVuYyBXYWduZXIgPHdmZXJpQGFmYXZhbnQuZWx0ZS5odT4KCVRoZSBkZXNrdG9wIHByb2Nlc3MgaXMgbm90IGF1dG9tYXRpY2FsbHkgcmVzdGFydGVkIHVuZGVyIFdpbjk1LCBzbwoJc3RvcCBraWxsaW5nIGl0LgoKCSogZGxscy9tYXBpMzIvdGVzdHMvcHJvcC5jOiBGZXJlbmMgV2FnbmVyIDx3ZmVyaUBhZmF2YW50LmVsdGUuaHU+CglUZXJtaW5hdGUgdGVzdCBsb29wIG9uIHRoZSBmaXJzdCBlcnJvciB0byBhdm9pZCBleGNlc3NpdmUgbG9nIHZvbHVtZS4KCgkqIGRsbHMvc2hlbGwzMi9zaGxleGVjLmM6IEdlIHZhbiBHZWxkb3JwIDxndmdAcmVhY3Rvcy5jb20+CglIYW5kbGUgc2hlbGwgbGluayBmaWxlcyBjb250YWluZWQgaW4gZG91YmxlIHF1b3Rlcy4KCgkqIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50ZWQgR2V0L1NldEZpbGVTZWN1cml0eSBBLT5XLgoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYzogWmFjaCBHb3JtYW4gPHphY2hAYXJjaGV0eXBlYXVjdGlvbi5jb20+CglPSyBidXR0b24gc2hvdWxkIGJlIGRlZmF1bHQgaW4gbm9uLXdpemFyZCBwcm9wZXJ0eSBzaGVldHMuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9xdWFydHovTWFrZWZpbGUuaW4sCgkgIGRsbHMvcXVhcnR6L3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMvcXVhcnR6L3Rlc3RzL01ha2VmaWxlLmluLAoJICBkbGxzL3F1YXJ0ei90ZXN0cy9maWx0ZXJncmFwaC5jOgoJQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJQWRkZWQgdGVzdHMgZm9yIGZpbHRlcmdyYXBoLgoKCSogZGxscy9jb21tZGxnL2NkbGdfQ2EucmMsIGRsbHMvY29tbWRsZy9jZGxnX0NuLnJjLAoJICBkbGxzL2NvbW1kbGcvY2RsZ19Dcy5yYywgZGxscy9jb21tZGxnL2NkbGdfRGEucmMsCgkgIGRsbHMvY29tbWRsZy9jZGxnX0RlLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19Fbi5yYywKCSAgZGxscy9jb21tZGxnL2NkbGdfRW8ucmMsIGRsbHMvY29tbWRsZy9jZGxnX0VzLnJjLAoJICBkbGxzL2NvbW1kbGcvY2RsZ19GaS5yYywgZGxscy9jb21tZGxnL2NkbGdfRnIucmMsCgkgIGRsbHMvY29tbWRsZy9jZGxnX0h1LnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19JdC5yYywKCSAgZGxscy9jb21tZGxnL2NkbGdfS28ucmMsIGRsbHMvY29tbWRsZy9jZGxnX05sLnJjLAoJICBkbGxzL2NvbW1kbGcvY2RsZ19Oby5yYywgZGxscy9jb21tZGxnL2NkbGdfUGwucmMsCgkgIGRsbHMvY29tbWRsZy9jZGxnX1B0LnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19SdS5yYywKCSAgZGxscy9jb21tZGxnL2NkbGdfU2kucmMsIGRsbHMvY29tbWRsZy9jZGxnX1NrLnJjLAoJICBkbGxzL2NvbW1kbGcvY2RsZ19Tdi5yYywgZGxscy9jb21tZGxnL2NkbGdfVGgucmMsCgkgIGRsbHMvY29tbWRsZy9jZGxnX1VrLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19XYS5yYywKCSAgZGxscy9jb21tZGxnL2NkbGdfWmgucmMsIGRsbHMvY29tbWRsZy9maWxlZGxnLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJLSBVc2UgIk1TIFNoZWxsIERsZyIgaW4gdGhlIE9wZW4gRmlsZSBkaWFsb2cgdGVtcGxhdGVzIGFzIGluIFdpbmRvd3MKCS0gUmVzaXplIGNoaWxkIGRpYWxvZyB3aGVuIGl0cyBjb250cm9scyBhcmUgbW92ZWQgcmVsYXRpdmVseSBzdGMzMgoJICAibWFnaWMiIGNvbnRyb2wuCgoJKiBkbGxzL3JzYWJhc2UvbWFpbi5jOiBNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglSZWdpc3RlciBUeXBlTmFtZSByZWdpc3RyeSBrZXkgdmFsdWUuCgoJKiBkbGxzL2FkdmFwaTMyL2NyeXB0LmM6IEphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJRml4IGFsbG9jIHRlc3QgaW4gQ3J5cHRFbnVtUHJvdmlkZXJUeXBlc1cgdGhhdCBmYWlsZWQgaWYgdGhlIGFsbG9jCglzdWNjZWVkZWQuCgoJKiBkbGxzL2FkdmFwaTMyL3Rlc3RzL2NyeXB0LmM6IEphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJRml4ZWQgYSBmZXcgY3J5cHQgdGVzdCBidWdzLgoKCSogZGxscy93aW5tbS90ZXN0cy9taXhlci5jLCBkbGxzL3dpbm1tL3Rlc3RzL3dhdmUuYzoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglBZGRlZCB0ZXN0IGZvciBXQVZFRk9STUFURVhURU5TSUJMRSBzdXBwb3J0LgoJRXJyb3IgbWVzc2FnZSBjbGVhbnVwLgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglBZGRlZCBXQVZFRk9STUFURVhURU5TSUJMRSBzdXBwb3J0LgoKCSogaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9rcy5oLCBpbmNsdWRlL2tzZ3VpZC5oLAoJICBpbmNsdWRlL2tzbWVkaWEuaDoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglBZGRzIGVub3VnaCBvZiBrcy5oLCBrc2d1aWQuaCBhbmQga3NtZWRpYS5oIHRvIHN0YXJ0IGFkZGluZyBzdXBwb3J0Cglmb3IgV0FWRUZPUk1BVEVYVEVOU0lCTEUuCgoJKiBkbGxzL250ZGxsL2ZpbGUuYywgZGxscy9udGRsbC9udGRsbC5zcGVjLCBpbmNsdWRlL3dpbnRlcm5sLmg6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglTdHViIGltcGxlbWVudGF0aW9uIGFuZCBkZWNsYXJhdGlvbiBmb3IgTnRDcmVhdGVOYW1lZFBpcGVGaWxlLgoKCSogZGxscy9tbGFuZy9tbGFuZy5jLCBkbGxzL21sYW5nL3Rlc3RzL21sYW5nLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IElNdWx0aUxhbmd1YWdlMl9HZXRDaGFyc2V0SW5mbywgYWRkIGEgdGVzdCBjYXNlIGZvciBpdC4KCgkqIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYywgZGxscy9hZHZhcGkzMi90ZXN0cy9zZWN1cml0eS5jLAoJICBpbmNsdWRlL2FjbGFwaS5oOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRGVjbGFyYXRpb24sIGltcGxlbWVudGlvbiBhbmQgdGVzdCBmb3IgQnVpbGRUcnVzdGVlV2l0aFNpZC4KCgkqIGRsbHMvcXVhcnR6L3Bpbi5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglGaXggcG90ZW50aWFsIHJhY2UgaW4gSVBpbkltcGxfQ29ubmVjdGVkVG8uCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYzoKCU1ha2Ugc3VyZSB3ZSBjaGVjayBmb3IgZWdyZXAgYmVmb3JlIHdlIHVzZSBpdC4KCgkqIGRsbHMvb3BlbmdsMzIvd2dsLmMsIGRsbHMvb3BlbmdsMzIvd2dsLmgsIGluY2x1ZGUvd2luZGVmLmgsCgkgIGluY2x1ZGUvd2luZ2RpLmg6CglBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CglNb3ZlIHNvbWUgT3BlbkdMIGRlZmluZXMgZnJvbSB0aGUgcHJpdmF0ZSB3Z2wuaCBoZWFkZXIgdG8gd2hlcmUgdGhleQoJYmVsb25nLgoKCSogZGxscy9xdWFydHovYXZpc3BsaXQuYzogQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJQWRkZWQgaGFuZGxpbmcgb2YgJ2lkeDEnIChpbmRleCkgY2h1bmsuCglBZGRlZCBoYW5kbGluZyBvZiAncmVjICcgbGlzdCB0aGF0IGVtYmVkcyBzdHJlYW1zIGRhdGEuCglEaXNhYmxlZCBjaGVja2luZyBvZiB0aGUgVFdPQ0Mgb2Ygc3RyZWFtcyBkYXRhIGNodW5rLiBJdCBpcyBub3QKCXJlbGV2YW50IGluIGF2aSBmaWxlcy4KCU9ubHkgcmVsZWFzZSBtZWRpYSBzYW1wbGUgd2hlbiB0aGUgZGVsaXZlcnkgdG8gdGhlIGRvd25zdHJlYW0gZmlsdGVyCglkb2VzIG5vdCBzdWNjZWVkZWQuCglTb21lIGNsZWFuLXVwLgoKCSogZGxscy9hdmlmaWwzMi9hdmlmaWxlX0NzLnJjLCBkbGxzL2F2aWZpbDMyL3JzcmMucmMsCgkgIGRsbHMvY29tY3RsMzIvY29tY3RsX0NzLnJjLCBkbGxzL2NvbWN0bDMyL3JzcmMucmMsIGRsbHMvbXByL21wci5yYywKCSAgZGxscy9tcHIvbXByX0NzLnJjLCBkbGxzL21zYWNtL21zYWNtLnJjLCBkbGxzL21zYWNtL21zYWNtX0NzLnJjLAoJICBkbGxzL21zcmxlMzIvbXNybGVfQ3MucmMsIGRsbHMvbXNybGUzMi9yc3JjLnJjLAoJICBkbGxzL29sZWRsZy9vbGVkbGdfQ3MucmMsIGRsbHMvb2xlZGxnL3JzcmMucmMsIGRsbHMvc2VyaWFsdWkvQ3MucmMsCgkgIGRsbHMvc2VyaWFsdWkvc2VyaWFsdWlfcmMucmMsIGRsbHMvc2V0dXBhcGkvQ3MucmMsCgkgIGRsbHMvc2V0dXBhcGkvc2V0dXBhcGkucmMsIGRsbHMvd2luZXBzL3JzcmMucmMsCgkgIGRsbHMvd2luZXBzL3dwc19Dcy5yYywgZGxscy93aW5pbmV0L3JzcmMucmMsCgkgIGRsbHMvd2luaW5ldC93aW5pbmV0X0NzLnJjLCBkbGxzL3dpbm1tL3dpbm1tX0NzLnJjLAoJICBkbGxzL3dpbm1tL3dpbm1tX3Jlcy5yYzoKCURhdmlkIEtyZWRiYSA8a3JlZGJhQGlib3QuY2FzLmN6PgoJQWRkZWQgQ3plY2ggcmVzb3VyY2VzLgoKCSogaW5jbHVkZS9wcnNodC5oLCB3aW5kb3dzL3NweS5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglEZWZpbmUgbmV3IHByb3BzaGVldCBtZXNzYWdlcy4KCgkqIGRsbHMvZHNvdW5kL2J1ZmZlci5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJRGVsZXRlIGJ1ZmZlciBhcnJheSB3aGVuIHJlbGVhc2luZyBsYXN0IGJ1ZmZlci4KCgkqIGRsbHMvZHNvdW5kL2NhcHR1cmUuYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUFsbG93IHByb3BlciByZWxlYXNlIHdoaWxlIGNhcHR1cmluZy4KCgkqIGRsbHMvbnRkbGwvc2VjLmM6IEdlcmFsZCBQZmVpZmVyIDxnZXJhbGRAcGZlaWZlci5jb20+CglGaXggaW5jb3JyZWN0IHNpemVvZiBpbiBSdGxDcmVhdGVTZWN1cml0eURlc2NyaXB0b3IoKS4KCgkqIGRsbHMvYWR2YXBpMzIvYWR2YXBpMzIuc3BlYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWRkIHNvbWUgc3R1YiBkZWNsYXJhdGlvbnMuCgoJKiBkb2N1bWVudGF0aW9uL2ZhcS5zZ21sOiBUb20gV2lja2xpbmUgPHR3aWNrbGluZUBzaXRlc3Rhci5uZXQ+CglSZW1vdmUgcmV3aW5kIHNlY3Rpb24gZHVlIHRvIGxhY2sgb2YgdXBkYXRlcy4KCVJlbW92ZSBvbGQgbGlzdCBvZiBjb250cmlidXRvcnMgdGhhdCBnYXZlIHRvIHRoZSB3cGYuCglMaW5rIHRvIGhpc3RvcnkgcGFnZSBpbiBxdWVzdGlvbiBhc2tpbmcgYWJvdXQgd2luZSdzIGhpc3RvcnkuCglDaGFuZ2UgV2luZVggbmFtZSB0byBDZWRlZ2EuCglVc2UgY3VycmVudCB3aW5lIHZlcnNpb24gaW4gYW5zd2VyLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGcuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJRml4IGEgY3Jhc2ggc2F2aW5nIGEgZmlsZSB3aXRob3V0IGZpbGUgbmFtZSBleHRlbnNpb24gYW5kIHdpdGhvdXQKCWV4dGVuc2lvbiBmaWx0ZXIuCgoJKiBkbGxzL3NoZWxsMzIvc2hsZmlsZW9wLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUNsZWFuIHVwIG1lc3N5IGNvbW1lbnQgaW4gU0hGaWxlT3BlcmF0aW9uLgoJUmVkdWNlIHRoZSBudW1iZXIgb2YgZ290byBsYWJlbHMgaW4gU0hGaWxlT3BlcmF0aW9uIGJ5IG9uZS4KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmM6IFphY2ggR29ybWFuIDx6YWNoQGFyY2hldHlwZWF1Y3Rpb24uY29tPgoJUHJvcHNoZWV0IHBhZ2VzIG5lZWQgV1NfRVhfQ09OVFJPTFBBUkVOVCBzdHlsZS4KCgkqIGRsbHMvbWxhbmcvbWxhbmcuYywgZGxscy9tbGFuZy9tbGFuZy5zcGVjOgoJU3RldmVuIEVkd2FyZHMgPHN0ZXZlbl9lZDQxNTNAeWFob28uY29tPgoJQWRkZWQgc3R1YnMgZm9yIExjaWRUb1JmYzE3NjZbQS9XXS4KCgkqIGRsbHMvcXVhcnR6L3Bpbi5jOiBDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglGaXhlZCBhIGJ1ZyB0aGF0IG1hZGUgdGhlIGNvbm5lY3Rpb24gcG9zc2libGUgd2hlcmVhcyBubyBzdWl0YWJsZQoJbWVkaWEgdHlwZSBoYXMgYmUgZm91bmQgZHVyaW5nIHRoZSBuZWdvdGlhdGlvbi4KCUZpeGVkIHRoZSByZWxlYXNlIG9mIHRoZSBtZWRpYSBzYW1wbGUgaW4gUHVsbFBpbl9UaHJlYWRfUHJvY2Vzcy4KCUFkZGVkIGFuZCBmaXhlZCBhIGxvdCBvZiB0cmFjZXMuCgoJKiBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL2Rldmd1aWQuaDoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglkZXZndWlkLmggZGVmaW5lcyBkZXZpY2UgY2xhc3MgR1VJRHMgdXNlZCBpbiBkZXZpY2UgZGV0ZWN0aW9uIGFuZAoJY2xhc3NpZmljYXRpb24uCgoJKiBpbmNsdWRlL250ZGRzdG9yLmg6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglBZGQgc29tZSBHVUlEcyBmcm9tIHRoZSB3aW4yayBEREsgdGhhdCBhcmUgdXNlZCBmb3IgVVNCIGRldmljZXMuCgoJKiBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmMsIGluY2x1ZGUvbnRzZWNhcGkuaDoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCU1vdmUgZGVjbGFyYXRpb24gb2YgTFNBKiBzdHJ1Y3RzIHRvIG50c2VjYXBpLmguCgoJKiBkbGxzL3NoZWxsMzIvdGVzdHMvZ2VuZXJhdGVkLmMsIGRsbHMvdXNlci90ZXN0cy9nZW5lcmF0ZWQuYywKCSAgdG9vbHMvd2luYXBpL3dpbmFwaV90ZXN0OgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBZGQgdGhlIENDSElMRFJFTl9USVRMRUJBUisxIGFuZCBOVU1fUE9JTlRTIG1hY3Jvcy4KCUFkZCBhIGNvdXBsZSBiYXNlIHR5cGVzIHRoYXQgd2luYXBpX3Rlc3QgZG9lcyBub3Qga25vdyBob3cgdG8gcGFyc2UuCglGaXggYSBidWcgc28gdGhhdCAnc2lnbmVkJyBhbmQgJ3Vuc2lnbmVkJyBhcmUgcmVjb2duaXNlZCBhcyB2YWxpZAoJdHlwZXMuCgoyMDA0LTA4LTEzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogQU5OT1VOQ0UsIENoYW5nZUxvZywgVkVSU0lPTiwgY29uZmlndXJlOiBSZWxlYXNlIDIwMDQwODEzLgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoyMDA0LTA4LTEzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy93aW5lZG9zL2ludDIxLmMsIGRsbHMvd2luZWRvcy92Z2EuYzoKCU1hcmt1cyBBbXNsZXIgPG1hcmt1cy5hbXNsZXJAb3JpYmkub3JnPgoJQWRkIERPUyBlZGl0aW5nIGtleSBzdXBwb3J0IGluIEJVRkZFUkVEIElOUFVULgoKCSogZGxscy91c2VyL3Rlc3RzL2RpYWxvZy5jLCB3aW5kb3dzL2RlZmRsZy5jOgoJV01fTkVYVERMR0NUTCBzaG91bGQgbm90IGNoYW5nZSB0aGUgZGVmYXVsdCBidXR0b24gSUQgKGJhc2VkIG9uIGEKCXBhdGNoIGJ5IEtyaXNobmEgTXVydGh5KS4KCgkqIGRsbHMvY29tbWRsZy9jZGxnX1BsLnJjOiBKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJVHJhbnNsYXRpb24gdXBkYXRlLgoKCSogZGxscy9jb21tZGxnL2ZvbnRkbGcuYzogSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCUZpeCBhIGJ1ZyBpbiBwYXNzaW5nIHBhcmFtZXRlcnMgdG8gQ0ZuX1dNSW5pdERpYWxvZyBhbmQgQ0ZuX1dNQ29tbWFuZAoJaW4gRm9ybWF0Q2hhckRsZ1Byb2NXLgoKCSogZGxscy9udGRsbC90ZXN0cy9lbnYuYywgZGxscy9udGRsbC90ZXN0cy9nZW5lcmF0ZWQuYywKCSAgZGxscy9udGRsbC90ZXN0cy9sYXJnZV9pbnQuYywgZGxscy9udGRsbC90ZXN0cy9udGRsbF90ZXN0LmgsCgkgIGRsbHMvbnRkbGwvdGVzdHMvcGF0aC5jLCBkbGxzL250ZGxsL3Rlc3RzL3J0bC5jLAoJICBkbGxzL250ZGxsL3Rlc3RzL3J0bGJpdG1hcC5jLCBkbGxzL250ZGxsL3Rlc3RzL3J0bHN0ci5jLAoJICBkbGxzL250ZGxsL3Rlc3RzL3N0cmluZy5jLCB0b29scy93aW5hcGkvdGVzdHMuZGF0OgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBdm9pZCBhbm5veWluZyAnbWFjcm8gcmVkZWZpbml0aW9uJyB3YXJuaW5ncyBieSBkZWZpbmluZwoJV0lOMzJfTk9fU1RBVFVTIGF0IHRoZSByaWdodCB0aW1lLgoJRGVmaW5lIF9XSU4zMl9XSU5OVCBvdGhlcndpc2Ugd2UgYXJlIG1pc3Npbmcgc29tZSBzeW1ib2xzIHdpdGggdGhlCglXaW5kb3dzIGhlYWRlcnMuCgoJKiBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmMsIGRsbHMvbnRkbGwvb20uYywgZGxscy9udGRsbC9zZWMuYywKCSAgZGxscy9udGRsbC90ZXN0cy9nZW5lcmF0ZWQuYywgaW5jbHVkZS93aW5udC5oLAoJICB0b29scy93aW5hcGkvdGVzdHMuZGF0OgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglGaXggdGhlIFBTSUQgYW5kIFBTRUNVUklUWV9ERVNDUklQVE9SIHR5cGVzLgoJQWRkIFBJU0lEIGFuZCBQSVNFQ1VSSVRZX0RFU0NSSVBUT1IuCgoJKiBkbGxzL250ZGxsL2Nkcm9tLmMsIGRsbHMvbnRkbGwvZGlyZWN0b3J5LmMsIGRsbHMvbnRkbGwvcGF0aC5jLAoJICBkbGxzL250ZGxsL3JlZy5jLCBkbGxzL250ZGxsL3JlbGF5LmMsIGRsbHMvbnRkbGwvcmVzb3VyY2UuYywKCSAgZGxscy9udGRsbC9zZXJ2ZXIuYywgZGxscy9udGRsbC90aW1lLmMsIGRsbHMvbnRkbGwvdmVyc2lvbi5jOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglGaXggc2lnbmVkL3Vuc2lnbmVkIGNvbXBhcmlzb24gd2FybmluZ3MuCgoJKiBkbGxzL3dpbm1tL3Rlc3RzL3dhdmUuYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCU1vcmUgV0FWRU9VVENBUFNXIHRlc3RzLgoKCSogZGxscy9tc3ZjcnQvZXhjZXB0LmMsIGRsbHMvbnRkbGwvdGVzdHMvZ2VuZXJhdGVkLmMsCgkgIHRvb2xzL3dpbmFwaS90ZXN0cy5kYXQ6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVRoZSBXaW5kb3dzIGhlYWRlcnMgZG9uJ3QgZGVmaW5lIFBFWENFUFRJT05fUkVHSVNUUkFUSU9OX1JFQ09SRC4KCVJlbW92ZSBpdC4KCgkqIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYywgZGxscy9udGRsbC90aHJlYWQuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCBTZXRUaHJlYWRUb2tlbiB1c2luZyBOdFNldEluZm9ybWF0aW9uVGhyZWFkLgoKCSogZGxscy93aW5pbmV0L3Rlc3RzL2dlbmVyYXRlZC5jLCBkbGxzL3dpbmluZXQvdGVzdHMvd2luaW5ldF90ZXN0LmgsCgkgIHRvb2xzL3dpbmFwaS90ZXN0cy5kYXQ6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUZpeCBjb21waWxhdGlvbiBvZiB0aGUgd2luaW5ldCBnZW5lcmF0ZWQgdGVzdHMgd2l0aCB0aGUgV2luZG93cwoJaGVhZGVycy4KCgkqIGRsbHMvb2xlYXV0MzIvdGVzdHMvdmFydGVzdC5jLCBkbGxzL29sZWF1dDMyL3Rlc3RzL3ZhcnR5cGUuYywKCSAgZGxscy93aW5tbS90ZXN0cy9taXhlci5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglUaGUgV2luZG93cyBoZWFkZXJzIHN1cHBvcnQgZm9yIE5PTkFNRUxFU1NVTklPTiBhbmQgTk9OQU1FTEVTU1NUUlVDVAoJaXMgdW51c2FibGUuIFNvIGRvbid0IGZvcmNlIHRoaXMgbW9kZS4gSW5zdGVhZCBjaGVjayB3aGV0aGVyCglOT05BTUVMRVNTVU5JT04gYW5kL29yIE5PTkFNRUxFU1NTVFJVQ1QgYXJlIHNldCAoYnkgdGhlIFdpbmUgaGVhZGVycykKCWFuZCBkZWZpbmUgY3VzdG9tIGFjY2VzcyBtYWNyb3MgYWNjb3JkaW5nbHkuCgoJKiBkbGxzL3F1YXJ0ei9maWxlc291cmNlLmMsIGRsbHMvcXVhcnR6L21lbWFsbG9jYXRvci5jOgoJQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJQWRkZWQgbWlzc2luZyBpbml0aWFsaXphdGlvbiBvZiB0aGUgZmlsZXNvdXJjZSBvdXRwdXQgcGluIGNyaXRpY2FsCglzZWN0aW9uLgoJQXZvaWQgaW5kZWZpbml0ZSB3YWl0IHdoZW4gY2FsbGluZyBHZXRPdmVybGFwcGVkUmVzdWx0LgoJRml4ZWQgaW5pdGlhbCByZWZjb3VudCBvZiB0aGUgSU1lbUFsbG9jYXRvciBvYmplY3QuCglJbXByb3ZlZCBzb21lIHRyYWNlcy4KCgkqIGRsbHMvZ2RpL2JpdG1hcC5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJSWYgYSBkZXZpY2UgZG9lc24ndCBzdXBwb3J0IGRldmljZSBiaXRtYXBzLCB0aGVuIHN0b3JlIHRoZSBiaXRzIG9uIHRoZQoJZ2RpIHNpZGUuCgoJKiBwcm9ncmFtcy9ub3RlcGFkL1BsLnJjLCBwcm9ncmFtcy9ub3RlcGFkL3JzcmMucmM6CglKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJQWRkZWQgUG9saXNoIHRyYW5zbGF0aW9uLgoKCSogZGxscy93aW5zcG9vbC93aW5zcG9vbC5kcnYuc3BlYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBmaXJzdCBwYXJhbWV0ZXIgb2YgR2V0RGVmYXVsdFByaW50ZXJBfFcuCgoJKiBpbmNsdWRlL21tcmVnLmg6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglBZGQgV0FWRV9GT1JNQVRfRVhURU5TSUJMRS4KCgkqIGRsbHMveDExZHJ2L2RpYi5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJU3luYyB3aXRoIGRpYnNlY3Rpb24gaW4gU2V0RElCaXRzVG9EZXZpY2UuCgoJKiBkbGxzL2tlcm5lbC9oZWFwLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglGaXggQlNEIGJ1aWxkLgoKCSogZGxscy93aW5tbS90ZXN0cy93aW5tbV90ZXN0Lmg6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJVGhlIFdpbmRvd3MgaGVhZGVycyBkb24ndCBkZWZpbmUgdGhlIERSVl9RVUVSWURFVklDRUlOVEVSRkFDRShTSVpFKQoJbWFjcm9zLgoKCSogZGxscy9udGRsbC90ZXN0cy9nZW5lcmF0ZWQuYywgaW5jbHVkZS93aW5udC5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglSZW5hbWUgUmVzb3VyY2VIYW5kbGUgdG8gUmVzZXJ2ZWQgaW4gdGhlIElNQUdFX1JFU09VUkNFX0RBVEFfRU5UUlkKCXN0cnVjdHVyZSB0byBtYXRjaCB0aGUgV2luZG93cyBoZWFkZXJzLgoKCSogZGxscy9hZHZhcGkzMi9jcnlwdC5jLCBkbGxzL2FkdmFwaTMyL3Rlc3RzL2NyeXB0LmM6CglKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCUlmIHRoZSBwc3pQcm92TmFtZSBwYXJhbSBvZiBDcnlwdEVudW1Qcm92aWRlcnMgaXMgdG9vIHNtYWxsIHRvIGhvbGQKCXRoZSBwcm92aWRlciBuYW1lLCBTZXRMYXN0RXJyb3IgdG8gRVJST1JfTU9SRV9EQVRBLgoKCSogZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYzogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCU1ha2UgcGF0dGVybiBicnVzaCBkYXRhIGNvbnN0LgoKCSogZGxscy9kc291bmQvdGVzdHMvZHMzZC5jLCBkbGxzL2Rzb3VuZC90ZXN0cy9kczNkOC5jLAoJICBkbGxzL2Rzb3VuZC90ZXN0cy9kc291bmQuYywgZGxscy9kc291bmQvdGVzdHMvZHNvdW5kOC5jLAoJICBkbGxzL2Rzb3VuZC90ZXN0cy9wcm9wc2V0LmM6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJTW9yZSBkc291bmQgdGVzdHMgZXJyb3IgbWVzc2FnZSBjbGVhbnVwcy4KCU9ubHkgZGlzcGxheSB2ZXJib3NlIGluZm9ybWF0aW9uIHdoZW4gaW4gaW50ZXJhY3RpdmUgbW9kZS4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQmV0dGVyIG1tYXAgZmFpbHVyZSBlcnJvciBtZXNzYWdlLgoKCSogZGxscy9jb21jYXQvY29tY2F0X3ByaXZhdGUuaCwgZGxscy9kbWJhbmQvZG11dGlscy5oLAoJICBkbGxzL2RtY29tcG9zL2RtY29tcG9zX3ByaXZhdGUuaCwgZGxscy9kbWltZS9kbXV0aWxzLmgsCgkgIGRsbHMvZG1sb2FkZXIvZG1sb2FkZXJfcHJpdmF0ZS5oLCBkbGxzL2Rtc2NyaXB0L2Rtc2NyaXB0X3ByaXZhdGUuaCwKCSAgZGxscy9kbXN0eWxlL2RtdXRpbHMuaCwgZGxscy9kbXVzaWMvZG11c2ljX3ByaXZhdGUuaCwKCSAgZGxscy9kc3dhdmUvZHN3YXZlX3ByaXZhdGUuaCwgZGxscy9tbGFuZy9tbGFuZy5jLAoJICBkbGxzL29sZTMyL2NvbXBvYmpfcHJpdmF0ZS5oLCBkbGxzL29sZWF1dDMyL3RtYXJzaGFsLmMsCgkgIGRsbHMvcXVhcnR6L3F1YXJ0el9wcml2YXRlLmgsIGRsbHMvcnBjcnQ0L2Nwcm94eS5jLAoJICBkbGxzL3VybG1vbi91cmxtb25fbWFpbi5oLCBpbmNsdWRlL29iamJhc2UuaDoKCU1vdmVkIElDT01fVEhJU19NVUxUSSBkZWZpbml0aW9uIG91dCBvZiBvYmpiYXNlLmggYW5kIGludG8gdGhlIGZpbGVzCgl0aGF0IHVzZSBpdC4KCgkqIGRsbHMva2VybmVsL2tlcm5lbF9tYWluLmM6CglXZSBkb24ndCBuZWVkIHRoZSBzaGFyZWQgaGVhcCBvbiBub24taTM4NiBwbGF0Zm9ybXMuCgoJKiBkbGxzL2tlcm5lbC9oZWFwLmMsIGluY2x1ZGUvd2luYmFzZS5oOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCVVzZSBHbG9iYWxNZW1vcnlTdGF0dXNFeCBpbiBHbG9iYWxNZW1vcnlTdGF0dXMgcmF0aGVyIHRoYW4gdGhlIG90aGVyCgl3YXkgYXJvdW5kLgoKCSogZGxscy93aW5lZG9zL2ludDIxLmM6IE1hcmt1cyBBbXNsZXIgPG1hcmt1cy5hbXNsZXJAb3JpYmkub3JnPgoJTWFrZSBGSU5ERklSU1Qgd29ya2luZyB3aXRoIC8uCgoJKiB3aW5kb3dzL21kaS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUlmIHRoZSBjdXJyZW50IG1lbnUgaGFuZGxlIGlzIGFscmVhZHkgc2V0LCBkbyBub3Qgc2V0IGl0IGFnYWluLgoKCSogZGxscy93aW5lZG9zL21vZHVsZS5jOiBNYXJrdXMgQW1zbGVyIDxtYXJrdXMuYW1zbGVyQG9yaWJpLm9yZz4KCU1ha2UgZW52aXJvbm1lbnQgdmFyaWFibGVzIHVwcGVyY2FzZS4KCgkqIGRsbHMvYXRsL01ha2VmaWxlLmluLCBkbGxzL2F0bC9hdGwuc3BlYywgZGxscy9hdGwvcmVnc3ZyLmMsCgkgIHRvb2xzL3dpbmUuaW5mOgoJU3RldmVuIEVkd2FyZHMgPHN0ZXZlbl9lZDQxNTNAeWFob28uY29tPgoJSW1wbGVtZW50ZWQgRGxsUmVnaXN0ZXJTZXJ2ZXIgYW5kIERsbFVucmVnaXN0ZXJTZXJ2ZXIuCgoyMDA0LTA4LTEyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9hbXN0cmVhbS9hbXN0cmVhbS5jLCBkbGxzL2Ftc3RyZWFtL21haW4uYywKCSAgZGxscy9hdmlmaWwzMi9hY21zdHJlYW0uYywgZGxscy9hdmlmaWwzMi9hdmlmaWxlLmMsCgkgIGRsbHMvYXZpZmlsMzIvZWRpdHN0cmVhbS5jLCBkbGxzL2F2aWZpbDMyL2ZhY3RvcnkuYywKCSAgZGxscy9hdmlmaWwzMi9nZXRmcmFtZS5jLCBkbGxzL2F2aWZpbDMyL2ljbXN0cmVhbS5jLAoJICBkbGxzL2F2aWZpbDMyL3RtcGZpbGUuYywgZGxscy9hdmlmaWwzMi93YXZmaWxlLmMsCgkgIGRsbHMvY29tY2F0L2NvbWNhdF9wcml2YXRlLmgsIGRsbHMvY29tY2F0L2ZhY3RvcnkuYywKCSAgZGxscy9jb21jYXQvaW5mb3JtYXRpb24uYywgZGxscy9jb21jYXQvbWFuYWdlci5jLAoJICBkbGxzL2NvbWNhdC9yZWdpc3Rlci5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZ2Jyb3dzZXIuYywKCSAgZGxscy9kM2Q4L2Jhc2V0ZXh0dXJlLmMsIGRsbHMvZDNkOC9jdWJldGV4dHVyZS5jLAoJICBkbGxzL2QzZDgvZDNkOF9wcml2YXRlLmgsIGRsbHMvZDNkOC9kZXZpY2UuYywgZGxscy9kM2Q4L2RpcmVjdHguYywKCSAgZGxscy9kM2Q4L2luZGV4YnVmZmVyLmMsIGRsbHMvZDNkOC9yZXNvdXJjZS5jLCBkbGxzL2QzZDgvc3VyZmFjZS5jLAoJICBkbGxzL2QzZDgvc3dhcGNoYWluLmMsIGRsbHMvZDNkOC90ZXh0dXJlLmMsIGRsbHMvZDNkOC92ZXJ0ZXhidWZmZXIuYywKCSAgZGxscy9kM2Q4L3ZvbHVtZS5jLCBkbGxzL2QzZDgvdm9sdW1ldGV4dHVyZS5jLAoJICBkbGxzL2QzZDkvYmFzZXRleHR1cmUuYywgZGxscy9kM2Q5L2N1YmV0ZXh0dXJlLmMsCgkgIGRsbHMvZDNkOS9kM2Q5X3ByaXZhdGUuaCwgZGxscy9kM2Q5L2RldmljZS5jLCBkbGxzL2QzZDkvZGlyZWN0eC5jLAoJICBkbGxzL2QzZDkvaW5kZXhidWZmZXIuYywgZGxscy9kM2Q5L3BpeGVsc2hhZGVyLmMsIGRsbHMvZDNkOS9xdWVyeS5jLAoJICBkbGxzL2QzZDkvcmVzb3VyY2UuYywgZGxscy9kM2Q5L3N0YXRlYmxvY2suYywgZGxscy9kM2Q5L3N1cmZhY2UuYywKCSAgZGxscy9kM2Q5L3N3YXBjaGFpbi5jLCBkbGxzL2QzZDkvdGV4dHVyZS5jLCBkbGxzL2QzZDkvdmVydGV4YnVmZmVyLmMsCgkgIGRsbHMvZDNkOS92ZXJ0ZXhkZWNsYXJhdGlvbi5jLCBkbGxzL2QzZDkvdmVydGV4c2hhZGVyLmMsCgkgIGRsbHMvZDNkOS92b2x1bWUuYywgZGxscy9kM2Q5L3ZvbHVtZXRleHR1cmUuYywKCSAgZGxscy9kM2R4OC9kM2R4OGNvcmVfcHJpdmF0ZS5oLCBkbGxzL2QzZHg4L2QzZHhidWZmZXIuYywKCSAgZGxscy9kM2R4b2YvZDNkeG9mLmMsIGRsbHMvZDNkeG9mL21haW4uYywKCSAgZGxscy9kZHJhdy9kM2RleGVjdXRlYnVmZmVyLmMsIGRsbHMvZGRyYXcvZDNkbGlnaHQuYywKCSAgZGxscy9kZHJhdy9kM2RtYXRlcmlhbC5jLCBkbGxzL2RkcmF3L2QzZHRleHR1cmUuYywKCSAgZGxscy9kZHJhdy9kM2R2ZXJ0ZXhidWZmZXIuYywgZGxscy9kZHJhdy9kM2R2aWV3cG9ydC5jLAoJICBkbGxzL2RkcmF3L21haW4uYywgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLAoJICBkbGxzL2RkcmF3L2RjbGlwcGVyL21haW4uYywgZGxscy9kZHJhdy9kZHJhdy9oYWwuYywKCSAgZGxscy9kZHJhdy9kZHJhdy9tYWluLmMsIGRsbHMvZGRyYXcvZGRyYXcvdGh1bmtzLmMsCgkgIGRsbHMvZGRyYXcvZGRyYXcvdXNlci5jLCBkbGxzL2RkcmF3L2RpcmVjdDNkL21lc2EuYywKCSAgZGxscy9kZHJhdy9kcGFsZXR0ZS9oYWwuYywgZGxscy9kZHJhdy9kcGFsZXR0ZS9tYWluLmMsCgkgIGRsbHMvZGRyYXcvZHN1cmZhY2UvZGliLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UvZmFrZXpidWZmZXIuYywKCSAgZGxscy9kZHJhdy9kc3VyZmFjZS9nYW1tYS5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL2hhbC5jLAoJICBkbGxzL2RkcmF3L2RzdXJmYWNlL21haW4uaCwgZGxscy9kZHJhdy9kc3VyZmFjZS90aHVua3MuYywKCSAgZGxscy9kZHJhdy9kc3VyZmFjZS90aHVua3MuaCwgZGxscy9kZHJhdy9kc3VyZmFjZS91c2VyLmMsCgkgIGRsbHMvZGV2ZW51bS9jcmVhdGVkZXZlbnVtLmMsIGRsbHMvZGV2ZW51bS9mYWN0b3J5LmMsCgkgIGRsbHMvZGV2ZW51bS9tZWRpYWNhdGVudW0uYywgZGxscy9kZXZlbnVtL3BhcnNlZGlzcGxheW5hbWUuYywKCSAgZGxscy9kaW5wdXQvZGlucHV0X21haW4uYywgZGxscy9kaW5wdXQvam95c3RpY2tfbGludXguYywKCSAgZGxscy9kaW5wdXQvam95c3RpY2tfbGludXhpbnB1dC5jLCBkbGxzL2RpbnB1dC9rZXlib2FyZC5jLAoJICBkbGxzL2RpbnB1dC9tb3VzZS5jLCBkbGxzL2RtYmFuZC9iYW5kLmMsIGRsbHMvZG1iYW5kL2JhbmR0cmFjay5jLAoJICBkbGxzL2RtYmFuZC9kbWJhbmRfbWFpbi5jLCBkbGxzL2RtYmFuZC9kbWJhbmRfcHJpdmF0ZS5oLAoJICBkbGxzL2RtY29tcG9zL2Nob3JkbWFwLmMsIGRsbHMvZG1jb21wb3MvY2hvcmRtYXB0cmFjay5jLAoJICBkbGxzL2RtY29tcG9zL2NvbXBvc2VyLmMsIGRsbHMvZG1jb21wb3MvZG1jb21wb3NfbWFpbi5jLAoJICBkbGxzL2RtY29tcG9zL2RtY29tcG9zX3ByaXZhdGUuaCwgZGxscy9kbWNvbXBvcy9zaWducG9zdHRyYWNrLmMsCgkgIGRsbHMvZG1pbWUvYXVkaW9wYXRoLmMsIGRsbHMvZG1pbWUvZG1pbWVfbWFpbi5jLAoJICBkbGxzL2RtaW1lL2RtaW1lX3ByaXZhdGUuaCwgZGxscy9kbWltZS9ncmFwaC5jLAoJICBkbGxzL2RtaW1lL2x5cmljc3RyYWNrLmMsIGRsbHMvZG1pbWUvbWFya2VydHJhY2suYywKCSAgZGxscy9kbWltZS9wYXJhbWNvbnRyb2x0cmFjay5jLCBkbGxzL2RtaW1lL3BhdHRlcm50cmFjay5jLAoJICBkbGxzL2RtaW1lL3BlcmZvcm1hbmNlLmMsIGRsbHMvZG1pbWUvc2VnbWVudC5jLAoJICBkbGxzL2RtaW1lL3NlZ21lbnRzdGF0ZS5jLCBkbGxzL2RtaW1lL3NlZ3RyaWdnZXJ0cmFjay5jLAoJICBkbGxzL2RtaW1lL3NlcXRyYWNrLmMsIGRsbHMvZG1pbWUvc3lzZXh0cmFjay5jLAoJICBkbGxzL2RtaW1lL3RlbXBvdHJhY2suYywgZGxscy9kbWltZS90aW1lc2lndHJhY2suYywKCSAgZGxscy9kbWltZS90b29sLmMsIGRsbHMvZG1pbWUvd2F2ZXRyYWNrLmMsCgkgIGRsbHMvZG1sb2FkZXIvY2xhc3NmYWN0b3J5LmMsIGRsbHMvZG1sb2FkZXIvY29udGFpbmVyLmMsCgkgIGRsbHMvZG1sb2FkZXIvZG1sb2FkZXJfcHJpdmF0ZS5oLCBkbGxzL2RtbG9hZGVyL2xvYWRlci5jLAoJICBkbGxzL2RtbG9hZGVyL2xvYWRlcnN0cmVhbS5jLCBkbGxzL2Rtc2NyaXB0L2Rtc2NyaXB0X21haW4uYywKCSAgZGxscy9kbXNjcmlwdC9kbXNjcmlwdF9wcml2YXRlLmgsIGRsbHMvZG1zY3JpcHQvc2NyaXB0LmMsCgkgIGRsbHMvZG1zY3JpcHQvc2NyaXB0dHJhY2suYywgZGxscy9kbXN0eWxlL2F1ZGl0aW9udHJhY2suYywKCSAgZGxscy9kbXN0eWxlL2Nob3JkdHJhY2suYywgZGxscy9kbXN0eWxlL2NvbW1hbmR0cmFjay5jLAoJICBkbGxzL2Rtc3R5bGUvZG1zdHlsZV9tYWluLmMsIGRsbHMvZG1zdHlsZS9kbXN0eWxlX3ByaXZhdGUuaCwKCSAgZGxscy9kbXN0eWxlL21vdGlmdHJhY2suYywgZGxscy9kbXN0eWxlL211dGV0cmFjay5jLAoJICBkbGxzL2Rtc3R5bGUvc3R5bGUuYywgZGxscy9kbXN0eWxlL3N0eWxldHJhY2suYywKCSAgZGxscy9kbXN5bnRoL2Rtc3ludGhfbWFpbi5jLCBkbGxzL2Rtc3ludGgvZG1zeW50aF9wcml2YXRlLmgsCgkgIGRsbHMvZG1zeW50aC9zeW50aC5jLCBkbGxzL2Rtc3ludGgvc3ludGhzaW5rLmMsIGRsbHMvZG11c2ljL2J1ZmZlci5jLAoJICBkbGxzL2RtdXNpYy9jbG9jay5jLCBkbGxzL2RtdXNpYy9jb2xsZWN0aW9uLmMsIGRsbHMvZG11c2ljL2RtdXNpYy5jLAoJICBkbGxzL2RtdXNpYy9kbXVzaWNfbWFpbi5jLCBkbGxzL2RtdXNpYy9kbXVzaWNfcHJpdmF0ZS5oLAoJICBkbGxzL2RtdXNpYy9kb3dubG9hZC5jLCBkbGxzL2RtdXNpYy9kb3dubG9hZGVkaW5zdHJ1bWVudC5jLAoJICBkbGxzL2RtdXNpYy9pbnN0cnVtZW50LmMsIGRsbHMvZG11c2ljL3BvcnQuYywKCSAgZGxscy9kbXVzaWMvcG9ydGRvd25sb2FkLmMsIGRsbHMvZG11c2ljL3RocnUuYywKCSAgZGxscy9kcGxheXgvZHBjbGFzc2ZhY3RvcnkuYywgZGxscy9kcGxheXgvZHBsYXkuYywKCSAgZGxscy9kcGxheXgvZHBsYXlzcC5jLCBkbGxzL2RwbGF5eC9kcGxvYmJ5LmMsIGRsbHMvZHBsYXl4L2xvYmJ5c3AuYywKCSAgZGxscy9kcG5ldC9hZGRyZXNzLmMsIGRsbHMvZHBuZXQvY2xpZW50LmMsIGRsbHMvZHBuZXQvZHBuZXRfbWFpbi5jLAoJICBkbGxzL2RwbmV0L2RwbmV0X3ByaXZhdGUuaCwgZGxscy9kc291bmQvYnVmZmVyLmMsCgkgIGRsbHMvZHNvdW5kL2NhcHR1cmUuYywgZGxscy9kc291bmQvZHNvdW5kLmMsCgkgIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmMsIGRsbHMvZHNvdW5kL3ByaW1hcnkuYywKCSAgZGxscy9kc291bmQvcHJvcHNldC5jLCBkbGxzL2Rzb3VuZC9zb3VuZDNkLmMsIGRsbHMvZHN3YXZlL2Rzd2F2ZS5jLAoJICBkbGxzL2Rzd2F2ZS9kc3dhdmVfbWFpbi5jLCBkbGxzL2Rzd2F2ZS9kc3dhdmVfcHJpdmF0ZS5oLAoJICBkbGxzL2R4ZGlhZ24vY29udGFpbmVyLmMsIGRsbHMvZHhkaWFnbi9keGRpYWdfbWFpbi5jLAoJICBkbGxzL2R4ZGlhZ24vZHhkaWFnX3ByaXZhdGUuaCwgZGxscy9keGRpYWduL3Byb3ZpZGVyLmMsCgkgIGRsbHMvbWxhbmcvbWxhbmcuYywgZGxscy9tc2Rtby9kbW9yZWcuYywgZGxscy9tc2kvbXNpLmMsCgkgIGRsbHMvb2xlMzIvYW50aW1vbmlrZXIuYywgZGxscy9vbGUzMi9iaW5kY3R4LmMsCgkgIGRsbHMvb2xlMzIvY2xpcGJvYXJkLmMsIGRsbHMvb2xlMzIvY29tcG9ial9wcml2YXRlLmgsCgkgIGRsbHMvb2xlMzIvY29tcG9zaXRlbW9uaWtlci5jLCBkbGxzL29sZTMyL2RhdGFjYWNoZS5jLAoJICBkbGxzL29sZTMyL2RlZmF1bHRoYW5kbGVyLmMsIGRsbHMvb2xlMzIvZXJyb3JpbmZvLmMsCgkgIGRsbHMvb2xlMzIvZmlsZW1vbmlrZXIuYywgZGxscy9vbGUzMi9mdG1hcnNoYWwuYywgZGxscy9vbGUzMi9naXQuYywKCSAgZGxscy9vbGUzMi9oZ2xvYmFsc3RyZWFtLmMsIGRsbHMvb2xlMzIvaWZzLmMsCgkgIGRsbHMvb2xlMzIvaXRlbW1vbmlrZXIuYywgZGxscy9vbGUzMi9tYXJzaGFsLmMsCgkgIGRsbHMvb2xlMzIvbWVtbG9ja2J5dGVzLmMsIGRsbHMvb2xlMzIvbWVtbG9ja2J5dGVzMTYuYywKCSAgZGxscy9vbGUzMi9tb25pa2VyLmMsIGRsbHMvb2xlMzIvb2xlMTYuYywgZGxscy9vbGUzMi9vbGVvYmouYywKCSAgZGxscy9vbGUzMi9vbGVwcm94eS5jLCBkbGxzL29sZTMyL3JwYy5jLCBkbGxzL29sZTMyL3N0Z19zdHJlYW0uYywKCSAgZGxscy9vbGUzMi9zdG9yYWdlLmMsIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmMsIGRsbHMvb2xlYXV0MzIvY29ubnB0LmMsCgkgIGRsbHMvb2xlYXV0MzIvZGlzcGF0Y2guYywgZGxscy9vbGVhdXQzMi9vbGVmb250LmMsCgkgIGRsbHMvb2xlYXV0MzIvb2xlcGljdHVyZS5jLCBkbGxzL29sZWF1dDMyL3RtYXJzaGFsLmMsCgkgIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jLCBkbGxzL29sZWF1dDMyL3R5cGVsaWIyLmMsCgkgIGRsbHMvb2xlYXV0MzIvdGVzdHMvc2FmZWFycmF5LmMsIGRsbHMvb2xlYXV0MzIvdGVzdHMvdmFydHlwZS5jLAoJICBkbGxzL3F1YXJ0ei9lbnVtbW9uaWtlci5jLCBkbGxzL3F1YXJ0ei9maWx0ZXJncmFwaC5jLAoJICBkbGxzL3F1YXJ0ei9maWx0ZXJtYXBwZXIuYywgZGxscy9xdWFydHovbWFpbi5jLAoJICBkbGxzL3F1YXJ0ei9zeXN0ZW1jbG9jay5jLCBkbGxzL3JwY3J0NC9jcHJveHkuYywgZGxscy9ycGNydDQvY3BzZi5jLAoJICBkbGxzL3JwY3J0NC9uZHJfb2xlLmMsIGRsbHMvc2hkb2N2dy9jbGFzc2luZm8uYywKCSAgZGxscy9zaGRvY3Z3L2V2ZW50cy5jLCBkbGxzL3NoZG9jdncvZmFjdG9yeS5jLCBkbGxzL3NoZG9jdncvbWlzYy5jLAoJICBkbGxzL3NoZG9jdncvb2xlb2JqZWN0LmMsIGRsbHMvc2hkb2N2dy9wZXJzaXN0LmMsCgkgIGRsbHMvc2hkb2N2dy93ZWJicm93c2VyLmMsIGRsbHMvc2hlbGwzMi9hdXRvY29tcGxldGUuYywKCSAgZGxscy9zaGVsbDMyL2NwYW5lbGZvbGRlci5jLCBkbGxzL3NoZWxsMzIvZGF0YW9iamVjdC5jLAoJICBkbGxzL3NoZWxsMzIvZHJhZ2Ryb3BoZWxwZXIuYywgZGxscy9zaGVsbDMyL2VudW1pZGxpc3QuYywKCSAgZGxscy9zaGVsbDMyL2ZvbGRlcnMuYywgZGxscy9zaGVsbDMyL21lbW9yeXN0cmVhbS5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9sZS5jLAoJICBkbGxzL3NoZWxsMzIvc2hmbGRyX2Rlc2t0b3AuYywgZGxscy9zaGVsbDMyL3NoZmxkcl9mcy5jLAoJICBkbGxzL3NoZWxsMzIvc2hmbGRyX215Y29tcC5jLCBkbGxzL3NoZWxsMzIvc2hsZnNiaW5kLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmMsIGRsbHMvc2hlbGwzMi9zaHZfYmdfY21lbnUuYywKCSAgZGxscy9zaGVsbDMyL3Nodl9pdGVtX2NtZW51LmMsIGRsbHMvc2hsd2FwaS9hc3NvYy5jLAoJICBkbGxzL3NobHdhcGkvaXN0cmVhbS5jLCBkbGxzL3NobHdhcGkvcmVnc3RyZWFtLmMsIGRsbHMvdXJsbW9uL3Vtb24uYywKCSAgZGxscy93aW5tbS93aW5lYWxzYS9hdWRpby5jLCBkbGxzL3dpbm1tL3dpbmVhbHNhL2F1ZGlvXzA1LmMsCgkgIGRsbHMvd2lubW0vd2luZWF1ZGlvaW8vYXVkaW8uYywgZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmMsCgkgIGluY2x1ZGUvb2JqYmFzZS5oLCBpbmNsdWRlL3JwY3Byb3h5Lmg6CglHZXQgcmlkIG9mIHRoZSBub24tc3RhbmRhcmQgSUNPTV9WVEFCTEUgbWFjcm8uCgoJKiBpbmNsdWRlL3NldHVwYXBpLmg6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglBZGRlZCBzb21lIG1vcmUgbmVlZGVkIHN0cnVjdHMgYW5kIGNvbnN0YW50cy4KCgkqIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsIGluY2x1ZGUvc2hsd2FwaS5oOgoJSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCUltcGxlbWVudGVkIElzT1MgZnVuY3Rpb24uCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2x0aXBzLmM6IFRob21hcyBXZWlkZW5t/GxsZXIgPHczc2Vla0ByZWFjdG9zLmNvbT4KCUNvcnJlY3QgdG9vbHRpcHMgYmVoYXZpb3IuCgoJKiBpbmNsdWRlL250ZGRzdG9yLmg6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglBZGRlZCAyIG1vcmUgYnVzIHR5cGVzLgoKCSogZGxscy9nZGkvZGliLmMsIGRsbHMveDExZHJ2L2RpYi5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJUmVwZWN0IHRoZSB3aWR0aCBvZiBib3RoIHRoZSBzcmMgYW5kIGRzdCB3aGVuIGNhbGN1bGF0aW5nIGhvdyBtYW55CglwaXhlbHMgdG8gY29weSBpbiBhIGRpYiA8LT4gYm1wIG9wZXJhdGlvbi4KCgkqIGxpYnMvTWFrZWxpYi5ydWxlcy5pbjogRW1tYW51ZWwgTWFpbGxhcmQgPGUucnN6QGxpYmVydHlzdXJmLmZyPgoJRGVmaW5lIC1pbnN0YWxsX25hbWUgZm9yIGR5bmFtaWNzIGxpYnJhcmllcyB0byBwcmV2ZW50IHVzYWdlIG9mCglEWUxEX0xJQlJBUllfUEFUSC4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJUHJldmVudCBsaXN0dmlldyBmcm9tIGNyYXNoaW5nIHdoZW4gYSBudWxsIHNvcnQgZnVuY3Rpb24gaXMgcGFzc2VkIHRvCglMVk1fU09SVElURU1TLgoKCSogZGxscy9kc291bmQvbWl4ZXIuYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCVNwZWVkIHVwIG1peGluZyBhbmQgdW5taXhpbmcgYnkgbW92aW5nIHNhbXBsZSBzaXplIGFuZCBidWZmZXIgd3JhcAoJdGVzdHMgdG8gb3V0c2lkZSB0aGUgbG9vcC4gIFRoZSBjb2RlIGlzIG5vdCBhcyBjb21wYWN0IG9yIHByZXR0eSBidXQKCWl0IHNob3VsZCBiZSBmYXN0ZXIuCgoJKiBkbGxzL2F2aWZpbDMyL2FjbXN0cmVhbS5jLCBkbGxzL2F2aWZpbDMyL2F2aWZpbGUuYywKCSAgZGxscy9hdmlmaWwzMi9lZGl0c3RyZWFtLmMsIGRsbHMvYXZpZmlsMzIvZmFjdG9yeS5jLAoJICBkbGxzL2F2aWZpbDMyL2dldGZyYW1lLmMsIGRsbHMvYXZpZmlsMzIvaWNtc3RyZWFtLmMsCgkgIGRsbHMvYXZpZmlsMzIvdG1wZmlsZS5jLCBkbGxzL2F2aWZpbDMyL3dhdmZpbGUuYywKCSAgZGxscy9jb21jYXQvY29tY2F0X3ByaXZhdGUuaCwgZGxscy9jb21jYXQvaW5mb3JtYXRpb24uYywKCSAgZGxscy9kM2Q4L2QzZDhfcHJpdmF0ZS5oLCBkbGxzL2QzZDkvZDNkOV9wcml2YXRlLmgsCgkgIGRsbHMvZDNkeDgvZDNkeDhjb3JlX3ByaXZhdGUuaCwgZGxscy9kZXZlbnVtL2RldmVudW1fcHJpdmF0ZS5oLAoJICBkbGxzL2RpbnB1dC9kZXZpY2VfcHJpdmF0ZS5oLCBkbGxzL2RpbnB1dC9kaW5wdXRfbWFpbi5jLAoJICBkbGxzL2RtYmFuZC9kbWJhbmRfbWFpbi5jLCBkbGxzL2RtY29tcG9zL2RtY29tcG9zX21haW4uYywKCSAgZGxscy9kbWNvbXBvcy9kbWNvbXBvc19wcml2YXRlLmgsIGRsbHMvZG1pbWUvZG1pbWVfbWFpbi5jLAoJICBkbGxzL2RtaW1lL2RtaW1lX3ByaXZhdGUuaCwgZGxscy9kbWxvYWRlci9kbWxvYWRlcl9wcml2YXRlLmgsCgkgIGRsbHMvZG1zY3JpcHQvZG1zY3JpcHRfbWFpbi5jLCBkbGxzL2Rtc3R5bGUvZG1zdHlsZV9tYWluLmMsCgkgIGRsbHMvZG1zeW50aC9kbXN5bnRoX21haW4uYywgZGxscy9kbXN5bnRoL2Rtc3ludGhfcHJpdmF0ZS5oLAoJICBkbGxzL2RtdXNpYy9kbXVzaWNfbWFpbi5jLCBkbGxzL2RtdXNpYy9kbXVzaWNfcHJpdmF0ZS5oLAoJICBkbGxzL2RwbGF5eC9kcGNsYXNzZmFjdG9yeS5jLCBkbGxzL2RwbGF5eC9kcGxheV9nbG9iYWwuaCwKCSAgZGxscy9kcGxheXgvZHBsYXlzcC5jLCBkbGxzL2RwbGF5eC9kcGxvYmJ5LmMsIGRsbHMvZHBsYXl4L2xvYmJ5c3AuYywKCSAgZGxscy9kcG5ldC9kcG5ldF9tYWluLmMsIGRsbHMvZHBuZXQvZHBuZXRfcHJpdmF0ZS5oLAoJICBkbGxzL2Rzb3VuZC9kc291bmRfcHJpdmF0ZS5oLCBkbGxzL2Rzd2F2ZS9kc3dhdmVfbWFpbi5jLAoJICBkbGxzL2R4ZGlhZ24vZHhkaWFnX21haW4uYywgZGxscy9keGRpYWduL2R4ZGlhZ19wcml2YXRlLmgsCgkgIGRsbHMvbXNkbW8vZG1vcmVnLmMsIGRsbHMvbXNpL21zaS5jLCBkbGxzL29sZTMyL2JpbmRjdHguYywKCSAgZGxscy9vbGUzMi9jbGlwYm9hcmQuYywgZGxscy9vbGUzMi9jb21wb3NpdGVtb25pa2VyLmMsCgkgIGRsbHMvb2xlMzIvZnRtYXJzaGFsLmMsIGRsbHMvb2xlMzIvZ2l0LmMsIGRsbHMvb2xlMzIvaGdsb2JhbHN0cmVhbS5jLAoJICBkbGxzL29sZTMyL2lmcy5jLCBkbGxzL29sZTMyL21lbWxvY2tieXRlcy5jLAoJICBkbGxzL29sZTMyL21lbWxvY2tieXRlczE2LmMsIGRsbHMvb2xlMzIvbW9uaWtlci5jLAoJICBkbGxzL29sZTMyL29sZTE2LmMsIGRsbHMvb2xlMzIvb2xlb2JqLmMsIGRsbHMvb2xlMzIvc3RvcmFnZS5jLAoJICBkbGxzL29sZTMyL3N0b3JhZ2UzMi5oLCBkbGxzL29sZWF1dDMyL2Rpc3BhdGNoLmMsCgkgIGRsbHMvb2xlYXV0MzIvb2xlZm9udC5jLCBkbGxzL29sZWF1dDMyL29sZXBpY3R1cmUuYywKCSAgZGxscy9vbGVhdXQzMi90ZXN0cy92YXJ0eXBlLmMsIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jLAoJICBkbGxzL29sZWF1dDMyL3R5cGVsaWIyLmMsIGRsbHMvcXVhcnR6L2VudW1tb25pa2VyLmMsCgkgIGRsbHMvcXVhcnR6L2ZpbHRlcm1hcHBlci5jLCBkbGxzL3F1YXJ0ei9zeXN0ZW1jbG9jay5jLAoJICBkbGxzL3JwY3J0NC9uZHJfb2xlLmMsIGRsbHMvc2hkb2N2dy9zaGRvY3Z3LmgsCgkgIGRsbHMvc2hlbGwzMi9hdXRvY29tcGxldGUuYywgZGxscy9zaGVsbDMyL2NwYW5lbGZvbGRlci5jLAoJICBkbGxzL3NoZWxsMzIvZGF0YW9iamVjdC5jLCBkbGxzL3NoZWxsMzIvZHJhZ2Ryb3BoZWxwZXIuYywKCSAgZGxscy9zaGVsbDMyL2VudW1pZGxpc3QuYywgZGxscy9zaGVsbDMyL2ZvbGRlcnMuYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsbGluay5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYywKCSAgZGxscy9zaGVsbDMyL3NoZmxkcl9kZXNrdG9wLmMsIGRsbHMvc2hlbGwzMi9zaGZsZHJfZnMuYywKCSAgZGxscy9zaGVsbDMyL3NoZmxkcl9teWNvbXAuYywgZGxscy9zaGVsbDMyL3NobGZzYmluZC5jLAoJICBkbGxzL3NoZWxsMzIvc2hsdmlldy5jLCBkbGxzL3NoZWxsMzIvc2h2X2JnX2NtZW51LmMsCgkgIGRsbHMvc2hlbGwzMi9zaHZfaXRlbV9jbWVudS5jLCBkbGxzL3NobHdhcGkvYXNzb2MuYywKCSAgZGxscy9zaGx3YXBpL2lzdHJlYW0uYywgZGxscy9zaGx3YXBpL3JlZ3N0cmVhbS5jLAoJICBkbGxzL3dpbm1tL3dpbmVhbHNhL2F1ZGlvLmMsIGRsbHMvd2lubW0vd2luZWFsc2EvYXVkaW9fMDUuYywKCSAgZGxscy93aW5tbS93aW5lYXVkaW9pby9hdWRpby5jLCBkbGxzL3dpbm1tL3dpbmVqYWNrL2F1ZGlvLmMsCgkgIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jLCBpbmNsdWRlL29iamJhc2UuaDoKCUdldCByaWQgb2YgdGhlIG5vbi1zdGFuZGFyZCBJQ09NX1ZGSUVMRCBtYWNyby4KCgkqIGRsbHMvYXZpZmlsMzIvZWRpdHN0cmVhbS5jLCBkbGxzL2RwbGF5eC9kcGxheXNwLmgsCgkgIGRsbHMvZHBsYXl4L2xvYmJ5c3AuaCwgZGxscy9vbGUzMi9pZnMuaCwgZGxscy9zaGVsbDMyL3NoZWxsZm9sZGVyLmgsCgkgIGluY2x1ZGUvY29udHJvbC5oLCBpbmNsdWRlL2QzZC5oLCBpbmNsdWRlL2QzZDguaCwgaW5jbHVkZS9kM2Q5LmgsCgkgIGluY2x1ZGUvZDNkeDhjb3JlLmgsIGluY2x1ZGUvZGRyYXcuaCwgaW5jbHVkZS9kaW5wdXQuaCwKCSAgaW5jbHVkZS9kbXBsdWdpbi5oLCBpbmNsdWRlL2RtdXNpY2MuaCwgaW5jbHVkZS9kbXVzaWNpLmgsCgkgIGluY2x1ZGUvZG11c2ljcy5oLCBpbmNsdWRlL2RwYWRkci5oLCBpbmNsdWRlL2RwbGF5LmgsCgkgIGluY2x1ZGUvZHBsYXk4LmgsIGluY2x1ZGUvZHBsb2JieS5oLCBpbmNsdWRlL2RzZHJpdmVyLmgsCgkgIGluY2x1ZGUvZHNvdW5kLmgsIGluY2x1ZGUvZHhkaWFnLmgsIGluY2x1ZGUvZHhmaWxlLmgsCgkgIGluY2x1ZGUvbWFwaWRlZnMuaCwgaW5jbHVkZS9tYXBpdXRpbC5oLCBpbmNsdWRlL21hcGl4LmgsCgkgIGluY2x1ZGUvbWVkaWFvYmouaCwgaW5jbHVkZS9vYmpiYXNlLmgsIGluY2x1ZGUvb2xlZGxnLmgsCgkgIGluY2x1ZGUvc2hsb2JqLmgsIGluY2x1ZGUvc2hsd2FwaS5oLCBpbmNsdWRlL3Zmdy5oOgoJR2V0IHJpZCBvZiB0aGUgbm9uLXN0YW5kYXJkIElDT01fREVGSU5FIG1hY3JvLgoKCSogZGxscy9kc291bmQvdGVzdHMvZHMzZC5jLCBkbGxzL2Rzb3VuZC90ZXN0cy9kc291bmQuYzoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglTdGFydCBjbGVhbmluZyB1cCBlcnJvciBtZXNzYWdlcy4KCURvbid0IHByaW50IHZlcmJvc2UgaW5mbyB1bmxlc3MgaW4gaW50ZXJhY3RpdmUgbW9kZSBvciBkZWJ1Z2dpbmcuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYzoKCUF1dG9tYXRpY2FsbHkgZGlzYWJsZSAxNi1iaXQgc3VwcG9ydCBpbiB0aGUgUEUgYnVpbGQuCgoJKiBkb2N1bWVudGF0aW9uL3NhbXBsZXMvY29uZmlnOiBUb20gV2lja2xpbmUgPHR3aWNrbGluZUBzaXRlc3Rhci5uZXQ+CglVc2UgYnVpbHRpbiBtc2kuZGxsLgoKCSogZGxscy9hZHZhcGkzMi90ZXN0cy9jcnlwdC5jOiBKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCUFkZGVkIHRlc3RzIGZvciBDcnlwdEVudW1Qcm92aWRlcnMuCgoJKiBkbGxzL2FkdmFwaTMyL2NyeXB0LmM6IEphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJQ2xlYW51cCBBLT5XIGNyb3NzIGNhbGwgaW4gQ3J5cHRFbnVtUHJvdmlkZXJzLgoKMjAwNC0wOC0xMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvTWFrZWRsbC5ydWxlcy5pbiwgZGxscy9hdmlmaWwzMi9NYWtlZmlsZS5pbiwKCSAgZGxscy9jb21tZGxnL01ha2VmaWxlLmluLCBkbGxzL2N0bDNkL01ha2VmaWxlLmluLAoJICBkbGxzL2dkaS9NYWtlZmlsZS5pbiwgZGxscy9pbW0zMi9NYWtlZmlsZS5pbiwKCSAgZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sIGRsbHMvbHpleHBhbmQvTWFrZWZpbGUuaW4sCgkgIGRsbHMvbXNhY20vTWFrZWZpbGUuaW4sIGRsbHMvbXN2aWRlby9NYWtlZmlsZS5pbiwKCSAgZGxscy9vbGUzMi9NYWtlZmlsZS5pbiwgZGxscy9vbGVhdXQzMi9NYWtlZmlsZS5pbiwKCSAgZGxscy9vbGVjbGkvTWFrZWZpbGUuaW4sIGRsbHMvb2xlc3ZyL01ha2VmaWxlLmluLAoJICBkbGxzL3Jhc2FwaTMyL01ha2VmaWxlLmluLCBkbGxzL3NldHVwYXBpL01ha2VmaWxlLmluLAoJICBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW4sIGRsbHMvdHdhaW4vTWFrZWZpbGUuaW4sCgkgIGRsbHMvdXNlci9NYWtlZmlsZS5pbiwgZGxscy92ZXJzaW9uL01ha2VmaWxlLmluLAoJICBkbGxzL3dpbjMycy9NYWtlZmlsZS5pbiwgZGxscy93aW5hc3BpL01ha2VmaWxlLmluLAoJICBkbGxzL3dpbmVkb3MvTWFrZWZpbGUuaW4sIGRsbHMvd2luZXBzL01ha2VmaWxlLmluLAoJICBkbGxzL3dpbm1tL01ha2VmaWxlLmluLCBkbGxzL3dpbm5scy9NYWtlZmlsZS5pbiwKCSAgZGxscy93aW5zb2NrL01ha2VmaWxlLmluLCBkbGxzL3dpbnRhYjMyL01ha2VmaWxlLmluOgoJQXZvaWQgc29tZSBub24tcG9ydGFibGUgbWFrZWZpbGUgY29uc3RydWN0cywgYW5kIGdldCByaWQgb2YgdGhlCglBTFROQU1FUyB2YXJpYWJsZS4KCgkqIERFVkVMT1BFUlMtSElOVFM6IFRvbSBXaWNrbGluZSA8dHdpY2tsaW5lQHNpdGVzdGFyLm5ldD4KCVVwZGF0ZSB0aGUgZGxscyBzZWN0aW9uLgoKCSogZGxscy94MTFkcnYvY2xpcGJvYXJkLmMsIGRsbHMveDExZHJ2L2NsaXBwaW5nLmMsCgkgIGRsbHMveDExZHJ2L2Rlc2t0b3AuYywgZGxscy94MTFkcnYvZGliLmMsIGRsbHMveDExZHJ2L2V2ZW50LmMsCgkgIGRsbHMveDExZHJ2L2dyYXBoaWNzLmMsIGRsbHMveDExZHJ2L2tleWJvYXJkLmMsCgkgIGRsbHMveDExZHJ2L3BhbGV0dGUuYywgZGxscy94MTFkcnYvdGV4dC5jLCBkbGxzL3gxMWRydi94MTFkZHJhdy5jLAoJICBkbGxzL3gxMWRydi94Zm9udC5jLCBkbGxzL3gxMWRydi94aW0uYywgZGxscy94MTFkcnYveHJhbmRyLmMsCgkgIGRsbHMveDExZHJ2L3hyZW5kZXIuYywgZGxscy94MTFkcnYveHZpZG1vZGUuYzoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJRml4IHNpZ25lZC91bnNpZ25lZCBjb21wYXJpc29uIHdhcm5pbmdzLgoKCSogZGxscy9NYWtlZmlsZS5pbiwgZGxscy9tYWtlX2RsbHMsIGxvYWRlci9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvTWFrZWZpbGUuaW4sIHByb2dyYW1zL2F2aXRvb2xzL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy9tYWtlX3Byb2dzLCBwcm9ncmFtcy93aW5ldGVzdC9NYWtlZmlsZS5pbjoKCUF2b2lkIHNvbWUgbm9uLXBvcnRhYmxlIG1ha2VmaWxlIGNvbnN0cnVjdHMuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IEZpbGlwIE5hdmFyYSA8eG5hdmFyYUB2b2xueS5jej4KCURvbid0IHVwZGF0ZSBpbmZvUHRyLT5kd1N0eWxlIGluIExJU1RWSUVXX1dpbmRvd1Byb2MuIEl0J3MgYWxyZWFkeQoJaGFuZGxlZCBpbiBMSVNUVklFV19TdHlsZUNoYW5nZWQgYW5kIExJU1RWSUVXX0NyZWF0ZSBwcm9jZXNzaW5nLgoJSWdub3JlIFdTX1ZTQ1JPTEwvV1NfSFNDUk9MTCBmbGFncyBpbiBpbmZvUHRyLT5kd1N0eWxlIGJlY2F1c2UgdGhleSdyZQoJbm90IGFsd2F5cyB1cC10by1kYXRlLgoKCSogZGxscy9zaGVsbDMyL3Rlc3RzL2dlbmVyYXRlZC5jLCBpbmNsdWRlL3NobG9iai5oLCB0b29scy93aW5hcGkvdGVzdHMuZGF0OgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglSZW1vdmUgTFBGSUxFU1lTVEVNQklORERBVEEgYXMgaXQncyBub3QgZGVmaW5lZCBpbiB0aGUgc3RhbmRhcmQKCVdpbmRvd3MgaGVhZGVycy4KCgkqIGRsbHMvZG1iYW5kL2RtYmFuZF9wcml2YXRlLmgsIGRsbHMvZG1iYW5kL2RtdXRpbHMuYywKCSAgZGxscy9kbWNvbXBvcy9kbWNvbXBvc19wcml2YXRlLmgsIGRsbHMvZG1pbWUvZG1pbWVfcHJpdmF0ZS5oLAoJICBkbGxzL2RtaW1lL2RtdXRpbHMuYywgZGxscy9kbWxvYWRlci9kbWxvYWRlcl9wcml2YXRlLmgsCgkgIGRsbHMvZG1zY3JpcHQvZG1zY3JpcHRfcHJpdmF0ZS5oLCBkbGxzL2Rtc3R5bGUvZG1zdHlsZV9wcml2YXRlLmgsCgkgIGRsbHMvZG1zdHlsZS9kbXV0aWxzLmMsIGRsbHMvZG1zeW50aC9kbXN5bnRoX3ByaXZhdGUuaCwKCSAgZGxscy9kbXVzaWMvZG11c2ljX3ByaXZhdGUuaCwgZGxscy9kc3dhdmUvZHN3YXZlX3ByaXZhdGUuaCwKCSAgZGxscy9tc2kvcmVjb3JkLmMsIGRsbHMvb2xlMzIvZXJyb3JpbmZvLmMsIGRsbHMvb2xlYXV0MzIvb2xlZm9udC5jLAoJICBkbGxzL29sZWF1dDMyL3NhZmVhcnJheS5jLCBkbGxzL29sZWF1dDMyL3Rlc3RzL29sZWZvbnQuYywKCSAgZGxscy9vbGVhdXQzMi92YXJpYW50LmMsIGRsbHMvb2xlYXV0MzIvdmFydHlwZS5jLAoJICBkbGxzL3NoZWxsMzIvc2hsdmlldy5jLCBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLAoJICBkbGxzL3VybG1vbi90ZXN0cy91cmwuYywgaW5jbHVkZS9hY3RpdnNjcC5oLCBpbmNsdWRlL2Ftc3RyZWFtLmgsCgkgIGluY2x1ZGUvYW12aWRlby5oLCBpbmNsdWRlL2F1c3RyZWFtLmgsIGluY2x1ZGUvY29tY2F0LmgsCgkgIGluY2x1ZGUvZGRzdHJlYW0uaCwgaW5jbHVkZS9kaXNwZXguaCwgaW5jbHVkZS9kb2NvYmouaCwKCSAgaW5jbHVkZS9leGRpc3AuaCwgaW5jbHVkZS9tbGFuZy5oLCBpbmNsdWRlL21tc3RyZWFtLmgsCgkgIGluY2x1ZGUvb2FpZGwuaCwgaW5jbHVkZS9vYmppZGwuaCwgaW5jbHVkZS9vY2lkbC5oLCBpbmNsdWRlL29sZWlkbC5oLAoJICBpbmNsdWRlL3BzdG9yZS5oLCBpbmNsdWRlL3NlcnZwcm92LmgsIGluY2x1ZGUvc2hsZGlzcC5oLAoJICBpbmNsdWRlL3Nob2JqaWRsLmgsIGluY2x1ZGUvc3RybWlmLmgsIGluY2x1ZGUvdW5rbnduLmgsCgkgIGluY2x1ZGUvdXJsbW9uLmgsIHRvb2xzL3dpZGwvaGVhZGVyLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCU1vZGlmeSB3aWRsIHRvIHB1dCB0aGUgQyBDT00gbWFjcm9zIGluc2lkZSBhbiAjaWZkZWYgQ09CSk1BQ1JPUyBibG9jawoJYXMgaXMgZG9uZSBpbiB0aGUgV2luZG93cyBoZWFkZXJzLgoJQWRkICNkZWZpbmUgQ09CSk1BQ1JPUyB3aGVyZSBuZWVkZWQgaW4gV2luZS4KCUZpeGVzIHRoZSBjb21waWxhdGlvbiBvZiB0aGUgb2xlYXV0MzIvdGVzdHMvb2xlZm9udC5jIGFuZAoJdXJsbW9uL3Rlc3RzL3VybC5jIGNvbmZvcm1hbmNlIHRlc3RzIHdpdGggdGhlIFdpbmRvd3MgaGVhZGVycy4KCgkqIGRsbHMvbXN2Y3J0L3Rlc3RzL2hlYWRlcnMuYywgdG9vbHMvd2luYXBpL21zdmNtYWtlcjoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRG9uJ3QgZGVmaW5lIF9fV0lORV9VU0VfTVNWQ1JUIGluIHRoZSBWaXN1YWwgQysrIHByb2plY3QuIEl0IGlzIG5vdAoJbmVlZGVkIGFzIGl0IGlzIGRlZmluZWQgYnkgdGhlIFdpbmUgaGVhZGVycy4KCVVzZSBfX1dJTkVfVVNFX01TVkNSVCB0byBkZXRlY3Qgd2hldGhlciB3ZSBhcmUgYmVpbmcgY29tcGlsZWQgd2l0aCB0aGUKCVdpbmUgTVNWQ1JUIGhlYWRlcnMgb3IgdGhlIFdpbmRvd3Mgb25lcy4gSW4gdGhlIGxhdHRlciBjYXNlOgoJIC0gZG9uJ3QgdHJ5IHRvIGluY2x1ZGUgdGhlIFdpbmUtc3BlY2lmaWMgbXN2Y3J0IGhlYWRlcnMKCSAtIHNraXAgYWxsIHRoZSBoZWFkZXJzLmMgdGVzdHMgc2luY2UgdGhlcmUncyBubyBNU1ZDUlRfKiBzeW1ib2xzIHRvCgkgICBjaGVjawoKCSogZGxscy9tc2FjbS9maWx0ZXIuYywgZGxscy9tc2FjbS9tc2FjbTMyX21haW4uYywKCSAgZGxscy9tc2FjbS9tc2FjbV9tYWluLmMsIGRsbHMvbXNhY20vcGNtY29udmVydGVyLmMsCgkgIGRsbHMvbXNhY20vc3RyZWFtLmMsIGRsbHMvbXNhY20vdGVzdHMvbXNhY20uYywgaW5jbHVkZS9tbXJlZy5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBZGQgc29tZSBtaXNzaW5nIGRlZmluaXRpb25zIHRvIG1tcmVnLmguCglBZGQgI2RlZmluZSBOT0JJVE1BUCB3aGVyZSBuZWVkZWQgaW4gdGhlIFdpbmUgc291cmNlcy4KCUZpeGVzIHRoZSBjb21waWxhdGlvbiBvZiBtc2FjbS90ZXN0cy9tc2FjbS5jIHdpdGggdGhlIFdpbmRvd3MKCWhlYWRlcnMuCgoJKiBkbGxzL21sYW5nL3Rlc3RzL21sYW5nLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRG9uJ3QgaW5jbHVkZSB3aW5lL2RlYnVnLmggd2hlbiBjb21waWxpbmcgb24gV2luZG93cy4KCUdldENQSW5mb0V4QSgpIGlzIG1pc3Npbmcgb24gc29tZSBXaW5kb3dzIHBsYXRmb3JtcywgbG9hZCBpdAoJZHluYW1pY2FsbHkuCgoJKiBkbGxzL2dkaS9mcmVldHlwZS5jLCBkbGxzL3gxMWRydi94cmVuZGVyLmM6CglIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJRG9uJ3QgdHJ5IHRvIHJvdGF0ZSBiaXRtYXAgZm9udHMuCgoJKiBkbGxzL21sYW5nL21sYW5nLmMsIGRsbHMvbWxhbmcvdGVzdHMvbWxhbmcuYywgaW5jbHVkZS9tbGFuZy5oLAoJICBpbmNsdWRlL21sYW5nLmlkbCwgcHJvZ3JhbXMvd2luZXRlc3QvTWFrZWZpbGUuaW46CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJLSBhZGQgc3R1YmJlZCBzdXBwb3J0IGZvciBJRW51bVNjcmlwdCBpbnRlcmZhY2UKCS0gQ29udmVydElOZXRNdWx0aUJ5dGVUb1VuaWNvZGUvQ29udmVydElOZXRVbmljb2RlVG9NdWx0aUJ5dGUgc2hvdWxkCgkgIHJldHVybiByZXF1aXJlZCB0YXJnZXQgbGVuZ3RoIGlmIHRoZSB0YXJnZXQgYnVmZmVyIGlzIE5VTEwKCS0gYWRkIHRoZSB0ZXN0cyBmb3IgYWxsIHRoZSBhYm92ZQoJLSBmaXggSU11bHRpTGFuZ3VhZ2UyIHZ0YWJsZSAoaXQgd2FzIG1pc3NpbmcgQ29udmVydFN0cmluZ0Zyb21Vbmljb2RlRXgpCgoJKiB0b29scy93aW5lcHJlZml4Y3JlYXRlLmluOiBIZW5uaW5nIEdlcmhhcmR0IDxoZW5uaW5nLmdlcmhhcmR0QHdlYi5kZT4KCVByb2dyYW0gRmlsZXMgZGlyZWN0b3J5IHNob3VsZCBub3QgYmUgaW4gd2luZG93cyBkaXJlY3RvcnkuCgoJKiBkbGxzL250ZGxsL3Rlc3RzL3BhdGguYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglSZXBsYWNlIHN0cmNhc2VjbXAoKSB3aXRoIGxzdHJjbXBpQSgpIHRvIGhlbHAgY29tcGlsYXRpb24gd2l0aCBXaW5kb3dzCgloZWFkZXJzLgoKCSogZGxscy9nZGkvYml0Ymx0LmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglGaXggbWFza2JsdCB0byB3b3JrIHdpdGggYW55IHNldCBvZiByb3BzIGFuZCB0byBhbHNvIHRha2UgaW50byBhY2NvdW50Cgl0aGUgY3VycmVudCBicnVzaC4gIEl0IGFsc28gbm93IHdvcmtzIGlmIHRoZSBtYXNrIGJpdG1hcCBpcyBhbHJlYWR5CglzZWxlY3RlZCBpbnRvIGEgZGMuCgoJKiBkbGxzL3gxMWRydi9icnVzaC5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJRXZlciBzaW5jZSB3aW45OCBwYXR0ZXJuIGJydXNoZXMgaGF2ZSBiZWVuIGFibGUgdG8gYmUgbGFyZ2VyIHRoYW4gOHg4CglwaXhlbHMsIHNvIHJlbW92ZSB0aGlzIHJlc3RyaWN0aW9uLgoKCSogZGxscy91c2VyL3Rlc3RzL21zZy5jLCBkbGxzL3VzZXIvdGVzdHMvc3lzcGFyYW1zLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCURlZmluZSBfV0lOMzJfV0lOTlQgb3RoZXJ3aXNlIHdlIGFyZSBtaXNzaW5nIHNvbWUgZGVmaW5pdGlvbnMgd2l0aCB0aGUKCVdpbmRvd3MgaGVhZGVycy4KCgkqIGRsbHMvd2lubW0vdGVzdHMvbWl4ZXIuYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCU9ubHkgcHJpbnQgb3V0IHZlcmJvc2UgaW5mb3JtYXRpb24gd2hlbiBpbiBpbnRlcmFjdGl2ZSBtb2RlLgoKCSogZGxscy9tc2FjbS90ZXN0cy9tc2FjbS5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJT25seSBwcmludG91dCBpbmZvcm1hdGlvbiB3aGVuIGluIGludGVyYWN0aXZlIG1vZGUuCgoJKiBkbGxzL2dkaS9mcmVldHlwZS5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJRG9uJ3QgZXZlciByZXR1cm4gYSBiaXRtYXAgZm9udCBpZiB0aGUgZHJpdmVyIGNhbid0IHVzZSBpdC4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9taXhlci5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJT25seSBjb3B5IG51bWJlciBvZiBieXRlcyBzcGVjaWZpZWQgdXAgdG8gc2l6ZSBvZiBEZXZDYXBzIHN0cnVjdHVyZS4KCgkqIGRsbHMvYXRsL2F0bC5zcGVjLCBkbGxzL2F0bC9hdGxfbWFpbi5jOgoJU3RldmVuIEVkd2FyZHMgPHN0ZXZlbl9lZDQxNTNAeWFob28uY29tPgoJSW1wbGVtZW50ZWQgQXRsTW9kdWxlVGVybS4KCgkqIGRsbHMvZHNvdW5kL3ByaW1hcnkuYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUZpeGVkIGEgYnVnIHdoZXJlIGZyZXFBZGp1c3Qgd2FzIG5vdCBiZWluZyB1cGRhdGVkIHByb3Blcmx5IHdoZW4gdGhlCglwcmltYXJ5IGJ1ZmZlciBmb3JtYXQgY2hhbmdlZC4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL29sZTMyL01ha2VmaWxlLmluLAoJICBkbGxzL29sZTMyL3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMvb2xlMzIvdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvb2xlMzIvdGVzdHMvc3RvcmFnZTMyLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBhIHRlc3QgZm9yIHN0YXQnaW5nIGEgbWVtb3J5IGJhc2VkIHN0b3JhZ2UgZmlsZS4KCjIwMDQtMDgtMTAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC9hdG9tLmMsIGRsbHMva2VybmVsL2NvbXB1dGVybmFtZS5jLAoJICBkbGxzL2tlcm5lbC9jb25zb2xlLmMsIGRsbHMva2VybmVsL2NwdS5jLCBkbGxzL2tlcm5lbC9lZGl0bGluZS5jLAoJICBkbGxzL2tlcm5lbC9nbG9iYWwxNi5jLCBkbGxzL2tlcm5lbC9uZV9tb2R1bGUuYywKCSAgZGxscy9rZXJuZWwvcmVzb3VyY2UuYywgZGxscy9rZXJuZWwvc3luYy5jLCBkbGxzL2tlcm5lbC92b2x1bWUuYzoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJRml4IHNpZ25lZC91bnNpZ25lZCBjb21wYXJpc29uIHdhcm5pbmdzLgoKCSogZGxscy94MTFkcnYvd2lucG9zLmM6IFVscmljaCBDemVrYWxsYSA8dWxyaWNoQGNvZGV3ZWF2ZXJzLmNvbT4KCUF2b2lkIGhvbGRpbmcgeDExZHJ2IGxvY2sgd2hpbGUgY2FsbGluZyBmdW5jdGlvbiB0aGF0IGdyYWJzIGdkaQoJbG9jay4gUHJldmVudHMgcG90ZW50aWFsIGRlYWRseSBlbWJyYWNlLgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jOiBVbHJpY2ggQ3pla2FsbGEgPHVscmljaEBjb2Rld2VhdmVycy5jb20+CglIYW5kbGUgRUlOVFIgd2hlbiBwb2xsaW5nLgoKCSogZGxscy9nZGkvZnJlZXR5cGUuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCVdlIGRvbid0IGN1cnJlbnRseSBzdXBwb3J0IGhvcml6b250YWwgc3RyZXRjaGluZyBvZiBiaXRtYXAgZm9udHMsIHNvCgl3ZSBzaG91bGQgaWdub3JlIGxmV2lkdGguCgoJKiBkbGxzL29sZTMyL3N0b3JhZ2UzMi5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglzdGF0IG9uIG1lbW9yeSBzdG9yYWdlIHNob3VsZCByZXR1cm4gYSBOVUxMIG5hbWUsIG5vdCAiIi4KCgkqIGRsbHMvd2luaW5ldC9odHRwLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCB0aGUgcHJvY2Vzc2luZyBvZiB0aGUgbHBzekhlYWRlcnMgZmllbGQgaW4gSHR0cFNlbmRSZXF1ZXN0LgoKMjAwNC0wOC0wOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL2NvbW0uYywgZGxscy9rZXJuZWwvdGVzdHMvbWFpbHNsb3QuYywKCSAgZGxscy9rZXJuZWwvdGVzdHMvcHJvY2Vzcy5jLCBkbGxzL2tlcm5lbC90ZXN0cy90aHJlYWQuYzoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJRml4IHNpZ25lZC91bnNpZ25lZCBjb21wYXJpc29uIHdhcm5pbmdzLgoKCSogZGxscy93aW5lZG9zL21vZHVsZS5jOiBNYXJrdXMgQW1zbGVyIDxtYXJrdXMuYW1zbGVyQG9yaWJpLm9yZz4KCUZpeCBFWEVDIGZ1bmN0aW9uIDAxIChsb2FkIGJ1dCBkb24ndCBleGVjdXRlKTogaW5pdGlhbCBheCBoYXMgdG8gYmUgb24KCWNoaWxkJ3Mgc3RhY2suCgoJKiBkbGxzL3dpbmVkb3MvaW50MjEuYzogTWFya3VzIEFtc2xlciA8bWFya3VzLmFtc2xlckBvcmliaS5vcmc+CglGaXhlZCBkcml2ZSBtYXBwaW5nIGluIEdFVCBBTExPQ0FUSU9OLgoKCSogY29udHJvbHMvYnV0dG9uLmMsIGRsbHMvdXNlci90ZXN0cy9tc2cuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglGaXggYnV0dG9uIGJlaGF2aW91ciBvbiBXTV9TRVRGT0NVUy9XTV9LSUxMRk9DVVMgd2l0aCBhIHRlc3QgY2FzZS4KCgkqIGRsbHMvZ2RpL2ZyZWV0eXBlLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglHZXRDaGFyQUJDV2lkdGhzIHNob3VsZCBmYWlsIGZvciBub24tc2NhbGFibGUgZm9udHMuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzogRmlsaXAgTmF2YXJhIDx4bmF2YXJhQHZvbG55LmN6PgoJRml4IFRPT0xCQVJfRHJhd01hc2tlZCB0byBjb3JyZWN0bHkgdXNlIGltYWdlIGxpc3QgbWFzay4KCgkqIGNvbnRyb2xzL2xpc3Rib3guYzoKCUtyaXNobmEgTXVydGh5IDxLcmlzaG5hLk11cnRoeUBndXB0YXdvcmxkd2lkZS5jb20+CglSZXBsYWNlZCBMSVNUQk9YX1NldENhcmV0SW5kZXgoKSB3aXRoIExJU1RCT1hfTW92ZUNhcmV0KCkgaW4KCUxCX1NFTEVDVFNUUklORyBoYW5kbGVyIHNvIHRoYXQgdGhlIGNhcmV0IG1vdmVzIHRvIHRoZSBpbmRleCBhbmQgaXRlbQoJaXMgaGlnaGxpZ2h0ZWQuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJRGVsZXRlIHRoZSBhYm91dCBkaWFsb2cgZm9udCB3aGVuIHRoZSBkaWFsb2cgaXMgY2xvc2VkLgoKCSogZGxscy9kc291bmQvYnVmZmVyLmMsIGRsbHMvZHNvdW5kL3ByaW1hcnkuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglSZW1vdmUgdGhlIGFzc2VydCgpcyB0aGF0IGNoZWNrZWQgdGhhdCBJRGlyZWN0U291bmRCdWZmZXJfTG9jaygpIGlzCglnaXZlbiB0d28gZGlzdGluY3QgcG9pbnRlcnMuCgoJKiBwcm9ncmFtcy93aW5lbWluZS9Fcy5yYzogSm9z6SBNYW51ZWwgRmVycmVyIE9ydGl6IDxqbWZvMTk4MkB5YWhvby5lcz4KCVVwZGF0ZWQgdHJhbnNsYXRpb24uCgoJKiBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCBBLT5XIGNhbGwgZm9yIFNldE5hbWVkU2VjdXJpdHlJbmZvLgoKCSogZGxscy9jcnlwdDMyL2NlcnQuYywgZGxscy9jcnlwdDMyL2NyeXB0MzIuc3BlYywgaW5jbHVkZS93aW5lcnJvci5oOgoJU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtTGluZS5jb20+CglBZGRlZCBzdHViIGZvciBDZXJ0RmluZENlcnRpZmljYXRlSW5TdG9yZS4KCgkqIGRsbHMvd2lubW0vdGVzdHMvbWl4ZXIuYzogSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJRml4IGNvbXBpbGF0aW9uIG9mIHdpbm1tIHRlc3RzLgoKCSogZGxscy9nZGkvZnJlZXR5cGUuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCVRyeSBoYXJkZXIgdG8gbWF0Y2ggdG8gYSBmb250IGlmIHRoZSBmYW1pbHkgbmFtZSBpcyBtYXRjaGVzLCBidXQgdGhlCglzdHlsZSBpcyBkb2Vzbid0LgoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYzogRmlsaXAgTmF2YXJhIDx4bmF2YXJhQHZvbG55LmN6PgoJVXNlIGNvcnJlY3QgZGlhbG9nIHRpdGxlIGZvciBXaXphcmQgOTcgYW5kIGNvcnJlY3RseSBkaXNwbGF5IGhlYWRlcgoJYml0bWFwIGZvciBvbGQtc3R5bGUgV2l6YXJkIDk3LgoKCSogZGxscy9hZHZhcGkzMi9jcnlwdC5jOiBKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCU1ha2UgQ3J5cHRFbnVtUHJvdmlkZXJzQSBwY2JQcm92TmFtZSBwYXJhbWV0ZXIgY29udGFpbiB0aGUgY29ycmVjdAoJc2l6ZSBvZiB0aGUgcHJvdmlkZXIgbmFtZSBvbiByZXR1cm4uCgoJKiBkbGxzL2Rzb3VuZC90ZXN0cy9jYXB0dXJlLmMsIGRsbHMvZHNvdW5kL3Rlc3RzL2RzM2QuYywKCSAgZGxscy9kc291bmQvdGVzdHMvZHMzZDguYywgZGxscy9kc291bmQvdGVzdHMvZHNvdW5kLmMsCgkgIGRsbHMvZHNvdW5kL3Rlc3RzL2Rzb3VuZDguYywgZGxscy91c2VyL3Rlc3RzL2NsYXNzLmMsCgkgIGRsbHMvdXNlci90ZXN0cy9kaWFsb2cuYywgZGxscy91c2VyL3Rlc3RzL3Jlc291cmNlLmMsCgkgIGRsbHMvdXNlci90ZXN0cy9zeXNwYXJhbXMuYywgZGxscy91c2VyL3Rlc3RzL3dpbi5jOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglGaXggc2lnbmVkL3Vuc2lnbmVkIGNvbXBhcmlzb24gd2FybmluZ3MuCgoJKiBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jOiBFcmljIEtvaGwgPGVyaWMua29obEB0LW9ubGluZS5kZT4KCU1vdmUgd2F0ZXJtYXJrIGFuZCBoZWFkZXIgYml0bWFwIGxvYWRpbmcgY29kZSBmcm9tCglQUk9QU0hFRVRfQ3JlYXRlUGFnZSBpbnRvIGl0cyBvd24gZnVuY3Rpb24gUFJPUFNIRUVUX0xvYWRXaXphcmRCaXRtYXBzCglhbmQgY2FsbCB0aGlzIGZ1bmN0aW9uIGZyb20gcHJvcGVydHkgc2hlZXQncyBkaWFsb2cgcHJvY2VkdXJlLgoKCSogZGxscy9zaGVsbDMyL2RpYWxvZ3MuYywgZGxscy9zaGVsbDMyL3N5c3RyYXkuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVVzZSBIZWFwIGZ1bmN0aW9uIGluIHByZWZlcmVuY2UgdG8gbWFsbG9jL2ZyZWUuCgoJKiBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmMsIGluY2x1ZGUvd2luYmFzZS5oOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IGRlZmluaXRpb24gb2YgTG9va3VwUHJpdmlsZWdlTmFtZVcgYW5kIGRlY2xhcmUgaXQuCgoJKiBkbGxzL3dpbmluZXQvZnRwLmMsIGRsbHMvd2luaW5ldC9odHRwLmMsIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jLAoJICBkbGxzL3dpbmluZXQvaW50ZXJuZXQuaCwgZGxscy93aW5pbmV0L25ldGNvbm5lY3Rpb24uYywKCSAgZGxscy93aW5pbmV0L3VybGNhY2hlLmMsIGRsbHMvd2luaW5ldC91dGlsaXR5LmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggd2FybmluZ3MgZ2VuZXJhdGVkIHdpdGggLVdzaWduLWNvbXBhcmUuCgoJKiBkbGxzL2dkaS9mcmVldHlwZS5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJQnJlYWsgYW5kIGRlZmF1bHQgY2hhciBhcmUgYm90aCByZWxhdGl2ZSB0byBmaXJzdCBjaGFyIGluIHRoZSB3aW5mbnQKCWhlYWRlci4KCgkqIGRsbHMvcmljaGVkaXQvY2hhcmxpc3QuYywgZGxscy9yaWNoZWRpdC9jaGFybGlzdC5oOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlIGRlYWQgY29kZS4KCgkqIGRsbHMvc2hsd2FwaS90ZXN0cy9wYXRoLmMsIGRsbHMvd2luc29jay90ZXN0cy9zb2NrLmM6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCUZpeCBzaWduZWQvdW5zaWduZWQgY29tcGFyaXNvbiB3YXJuaW5ncy4KCgkqIGRsbHMvYWR2YXBpMzIvY3J5cHQuYzogSmFtZXMgSGF3a2lucyA8dHJ1aWtlbkBnbWFpbC5jb20+CglGaXggYWxsb2MgZmFpbHVyZSBjaGVjayBpbiBDcnlwdEVudW1Qcm92aWRlcnNXLgoKCSogcHJvZ3JhbXMvbXNpZXhlYy8uY3ZzaWdub3JlLCBwcm9ncmFtcy9tc2lleGVjL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy9tc2lleGVjL3ZlcnNpb24ucmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBhIHZlcnNpb24gcmVzb3VyY2UuCgoJKiBkbGxzL3gxMWRydi90ZXh0LmM6IExpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglEbyBub3QgaW5pdGlhbGl6ZSB2YXJpYWJsZXMgYmVmb3JlIGdvaW5nIGludG8gdGhlIFJlbmRlciBzaG9ydC1jdXQuCgoJKiBkbGxzL2RiZ2hlbHAvc3ltYm9sLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+Cgltb2R1bGUtPmFkZHJfc29ydHRhYiBtYXkgYmUgTlVMTCBkdWUgdG8gYSBoYWNrIGluCgllbGZfbmV3X3dpbmVfdGh1bmtzLgoKCSogZGxscy9kc291bmQvdGVzdHMvZHNvdW5kLmMsIGRsbHMvZHNvdW5kL3Rlc3RzL2Rzb3VuZDguYzoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglUZXN0IGRpZmZlcmVudCBwcmltYXJ5IGJ1ZmZlciBmb3JtYXRzIHdoaWxlIGtlZXBpbmcgdGhlIHNlY29uZGFyeQoJYnVmZmVyIGZvcm1hdCBjb25zdGFudC4KCgkqIGRsbHMvc2hlbGwzMi9kZWJ1Z2hscC5jLCBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvcGlkbC5oOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglNYXJrZWQgc29tZSBmdW5jdGlvbnMgaW4gZGVidWdobHAgYXMgc3RhdGljLgoJRG8gbm90IHVzZSBSRUZJSUQgYXMgcmV0dXJuLCBidXQgSUlEKi4KCgkqIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmM6IE9maXIgUGV0cnVza2EgPGhhdGt5QHVzZXJzLnNmLm5ldD4KCURlZmF1bHQgRGVza3RvcERvdWJsZUJ1ZmZlcmVkIHRvIHRydWUuCgoJKiBkbGxzL3dpbm1tL21jaWF2aS9tbW91dHB1dC5jOiBNaWtlIEhlYXJuIDxtaWtlQG5hdmkuY3g+CglPbmx5IHRyYWNlIEZPVVJDQyBoYW5kbGVyIHdoZW4gb25lIGlzIHNwZWNpZmllZAoKCSogZGxscy9hZHZhcGkzMi90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL2FkdmFwaTMyL3Rlc3RzL01ha2VmaWxlLmluLAoJICBkbGxzL2FkdmFwaTMyL3Rlc3RzL3NlY3VyaXR5LmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBhIHRlc3QgZm9yIENvbnZlcnRTaWRUb1N0cmluZ1NpZFcuCgoJKiBkbGxzL2FkdmFwaTMyL2FkdmFwaTMyLnNwZWMsIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudGVkIENvbnZlcnRTaWRUb1N0cmluZ1NpZEEvVy4KCgkqIGRsbHMvd2lubW0vdGVzdHMvLmN2c2lnbm9yZSwgZGxscy93aW5tbS90ZXN0cy9NYWtlZmlsZS5pbiwKCSAgZGxscy93aW5tbS90ZXN0cy9taXhlci5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUFkZGVkIHNvbWUgbWl4ZXIgdGVzdHMuCgoJKiBwcm9ncmFtcy93aW5lbWluZS9EZS5yYzogSGVubmluZyBHZXJoYXJkdCA8aGVubmluZy5nZXJoYXJkdEB3ZWIuZGU+CglUcmFuc2xhdGlvbiB1cGRhdGUuCgoJKiBwcm9ncmFtcy93aW5lbWluZS9Gci5yYzogVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJVHJhbnNsYXRpb24gdXBkYXRlLgoKCSogcHJvZ3JhbXMvd2luZW1pbmUvUHQucmM6IE1hcmNlbG8gRHVhcnRlIDx3aW5lLWRldmVsQGJvbC5jb20uYnI+CglUcmFuc2xhdGlvbiB1cGRhdGUuCgoJKiBkbGxzL3dpbm1tL3dpbm1tLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglDaGFuZ2UgTUlYRVJfR2V0RGV2IHRvIHRha2UgcG9pbnRlciB0byByZXR1cm5lZCBhZGRyZXNzIHBvaW50ZXIgYW5kCglyZXR1cm4gb25lIG9mIDMgcG9zc2libGUgcmV0dXJuIHZhbHVlcyByYXRoZXIgdGhhbiBhbiBhZGRyZXNzIG9yCglOVUxMLgoKCSogaW5jbHVkZS9tbXN5c3RlbS5oOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQWRkZWQgbWlzc2luZyBkZWZpbmUuCgoJKiBkbGxzL250ZGxsL3ZlcnNpb24uYzogVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJVXBkYXRlIFdpblhQIHZlcnNpb24gdG8gU1AyLgoKMjAwNC0wOC0wNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvY29tY3RsMzIvTWFrZWZpbGUuaW4sIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYywKCSAgZGxscy9jb21jdGwzMi9zeXNsaW5rLmMsIGluY2x1ZGUvY29tbWN0cmwuaDoKCVRob21hcyBXZWlkZW5t/GxsZXIgPHczc2Vla0ByZWFjdG9zLm9yZz4KCUltcGxlbWVudGVkIHN5c2xpbmsgY29udHJvbC4KCgkqIHByb2dyYW1zL3dpbmVtaW5lL0RlLnJjLCBwcm9ncmFtcy93aW5lbWluZS9Fbi5yYywKCSAgcHJvZ3JhbXMvd2luZW1pbmUvRXMucmMsIHByb2dyYW1zL3dpbmVtaW5lL0ZyLnJjLAoJICBwcm9ncmFtcy93aW5lbWluZS9JdC5yYywgcHJvZ3JhbXMvd2luZW1pbmUvTmwucmMsCgkgIHByb2dyYW1zL3dpbmVtaW5lL1BsLnJjLCBwcm9ncmFtcy93aW5lbWluZS9QdC5yYywKCSAgcHJvZ3JhbXMvd2luZW1pbmUvUnUucmMsIHByb2dyYW1zL3dpbmVtaW5lL1NpLnJjLAoJICBwcm9ncmFtcy93aW5lbWluZS9tYWluLmMsIHByb2dyYW1zL3dpbmVtaW5lL3Jlc291cmNlLmgsCgkgIHByb2dyYW1zL3dpbmVtaW5lL3JzcmMucmM6CglKYWNlayBDYWJhbjxqYWNrQGl0bWEucHdyLndyb2MucGw+CgktIEFkZGVkIFBvbGlzaCB0cmFuc2xhdGlvbi4KCS0gTW92ZWQgY29uc3QgIk5vYm9keSIgc3RyaW5nIHRvIHJlc291cmNlcyB0byBtYWtlIHRyYW5zbGF0aW9uCgkgIHBvc3NpYmxlLgoKCSogZGxscy9nZGkvYml0Ymx0LmMsIGRsbHMvZ2RpL2dkaV9wcml2YXRlLmgsIGRsbHMveDExZHJ2L3gxMWRydi5oLAoJICBkbGxzL3gxMWRydi94cmVuZGVyLmM6CglIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJQWN0dWFsbHkgcGFzcyB0aGUgYmxlbmQgZnVuY3Rpb24gb24gdG8gdGhlIGdyYXBoaWNzIGRyaXZlci4KCgkqIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYzogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCURvbid0IGxlYWsgY2FjaGUgaW1hZ2VsaXN0cyBvbiBleGl0LgoKCSogZGxscy93aW5pbmV0L3Rlc3RzL2h0dHAuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWRkIGFub3RoZXIgdGVzdCBmb3IgSW50ZXJuZXRDcmFja1VybFcuCgoJKiBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IHRoZSBkd1VybFBhdGhMZW5ndGggcmV0dXJuZWQgYnkgSW50ZXJuZXRDcmFja1VybCB3aGVuCglscHN6RXh0cmFJbmZvIGlzIG51bGwuCgoJKiBpbmNsdWRlL21tc3lzdGVtLmg6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglBZGRlZCBDQVBTMiBzdHJ1Y3R1cmVzLgoKCSogZGxscy9tbGFuZy9tbGFuZy5jLCBkbGxzL21sYW5nL21sYW5nLnNwZWMsIGluY2x1ZGUvbWxhbmcuaCwKCSAgaW5jbHVkZS9tbGFuZy5pZGw6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IENvbnZlcnRJTmV0TXVsdGlCeXRlVG9Vbmljb2RlLCBDb252ZXJ0SU5ldFVuaWNvZGVUb011bHRpQnl0ZQoJYW5kIElzQ29udmVydElOZXRTdHJpbmdBdmFpbGFibGUgYnkgbW92aW5nIGNvbW1vbiBjb2RlIGFyb3VuZCwgYWRkIGEKCXN0dWIgZm9yIENvbnZlcnRJTmV0U3RyaW5nLgoKCSogaW5jbHVkZS9wc3RvcmUuaCwgaW5jbHVkZS9wc3RvcmUuaWRsOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IGRlY2xhcmF0aW9uIG9mIE9wZW5JdGVtLgoKCSogZGxscy9nZGkvZnJlZXR5cGUuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCU1haW50YWluIGEgY2FjaGUgKGN1cnJlbnRseSBvZiB1cCB0byAxMCkgb2YgdW51c2VkIGZvbnRzLiAgVGhpcyBzcGVlZHMKCXVwIGFwcHMgdGhhdCByZXBlYXRlZGx5IHJlY3JlYXRlIHRoZSBzYW1lIGZvbnQuCgoJKiBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCBBLT5XIGNhbGwgZm9yIEdldE5hbWVkU2VjdXJpdHlJbmZvLgoKCSogZGxscy9kZHJhdy9kM2RfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L2QzZGRldmljZS9tYWluLmMsCgkgIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywgZGxscy9kZHJhdy9kM2RleGVjdXRlYnVmZmVyLmM6CglDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglJbXBsZW1lbnRlZCBJRGlyZWN0M0REZXZpY2V7MiwzfTo6R2V0TGlnaHRTdGF0ZS4KCUZpeGVkIHRyYWNlcyBpbiBleGVjdXRlIGJ1ZmZlcnMuCglVcGRhdGVkIGNvcHlyaWdodCBpbmZvLgoKCSogZGxscy9tc2kvYWN0aW9uLmMsIGRsbHMvbXNpL3N0cmluZy5jLCBkbGxzL21zaS90b2tlbml6ZS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IHdhcm5pbmdzIGZvdW5kIHdpdGggLVdzaWduLWNvbXBhcmUuCgoJKiBkbGxzL2Rzb3VuZC9idWZmZXIuYywgZGxscy9kc291bmQvY2FwdHVyZS5jLCBkbGxzL2Rzb3VuZC9kc291bmQuYzoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglBZGRzIGRlYnVnIG5hbWUgdG8gcmVtYWluaW5nIGNyaXRpY2FsIHNlY3Rpb25zLgoKMjAwNC0wOC0wNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL29sZWF1dDMyL01ha2VmaWxlLmluLAoJICBkbGxzL29sZWF1dDMyL29sZXBpY3R1cmUuYywgaW5jbHVkZS9jb25maWcuaC5pbjoKCUh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglkbG9wZW4gbGlidW5naWYgYW5kIGxpYmpwZWcuCgoJKiBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmMsIGRsbHMvd2luZWRvcy9kb3N2bS5jOgoJTWFya3VzIEFtc2xlciA8bWFya3VzLmFtc2xlckBvcmliaS5vcmc+CglQYXNzIGRlYnVnIGV4Y2VwdGlvbnMgdG8gd2luZWRvcy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL21sYW5nLy5jdnNpZ25vcmUsCgkgIGRsbHMvbWxhbmcvTWFrZWZpbGUuaW4sIGRsbHMvbWxhbmcvbWxhbmcuYywgZGxscy9tbGFuZy9tbGFuZy5zcGVjLAoJICBkbGxzL21sYW5nL3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMvbWxhbmcvdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvbWxhbmcvdGVzdHMvbWxhbmcuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBhbiBpbXBsZW1lbnRhdGlvbiBvZiBtbGFuZy5kbGwgYW5kIHRlc3QgY2FzZXMgZm9yIGl0LgoKCSogcHJvZ3JhbXMvcHJvZ21hbi9Fcy5yYywgcHJvZ3JhbXMvcHJvZ21hbi9yc3JjLnJjLAoJICBwcm9ncmFtcy91bmluc3RhbGxlci9yc3JjLnJjLCBwcm9ncmFtcy93aW5lY2ZnL0VzLnJjOgoJSm9z6SBNYW51ZWwgRmVycmVyIE9ydGl6IDxqbWZvMTk4MkB5YWhvby5lcz4KCVVwZGF0ZWQgc29tZSBTcGFuaXNoIHRyYW5zbGF0aW9ucy4KCgkqIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmM6IEZpbGlwIE5hdmFyYSA8eG5hdmFyYUB2b2xueS5jej4KCURlc3Ryb3kgYXNzb2NpYXRlZCBsaXN0dmlldyB3aGVuIElTaGVsbFZpZXcgaXMgZGVzdHJveWVkLgoKCSogZGxscy9nZGkvZnJlZXR5cGUuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUNvbnZlcnQgZ2RpIGZvbnQgbGlzdCB0byB1c2UgbGlzdC5oLgoKCSogcHJvZ3JhbXMvd2NtZC9EZS5yYzogSGVubmluZyBHZXJoYXJkdCA8aGVubmluZy5nZXJoYXJkdEB3ZWIuZGU+CglVcGRhdGVkIHRoZSBHZXJtYW4gdHJhbnNsYXRpb24uCgoJKiBkbGxzL3gxMWRydi94cmVuZGVyLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglBZGRlZCB0b3AtZG93biBkaWIgc3VwcG9ydCB0byBBbHBoYUJsZW5kLgoKCSogZGxscy91dWlkL3V1aWQuYywgaW5jbHVkZS9tbGFuZy5oLCBpbmNsdWRlL21sYW5nLmlkbDoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBDTFNJRCBhbmQgSUlEcyBmb3IgbWxhbmcuCgoJKiBkbGxzL2tlcm5lbC9wcm9jZXNzLmMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy9udGRsbC9wcm9jZXNzLmMsCgkgIGluY2x1ZGUvd2ludGVybmwuaDoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCU1vdmVkIEZsdXNoSW5zdHJ1Y3Rpb25DYWNoZSB0byBudGRsbC4KCgkqIGRsbHMvZHNvdW5kL2Rzb3VuZC5jLCBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglBZGQgQ1JJVElDQUxfU0VDVElPTiBkZWJ1ZyBpbmZvLgoKMjAwNC0wOC0wMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvd2lubW0vdGVzdHMvY2FwdHVyZS5jLCBkbGxzL3dpbm1tL3Rlc3RzL3dhdmUuYywKCSAgZGxscy93aW5tbS90ZXN0cy93aW5tbV90ZXN0Lmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJUGxheSBiYWNrIHdoYXQgaGFzIGJlZW4gcmVjb3JkZWQgd2hlbiBpbiBpbnRlcmFjdGl2ZSBtb2RlIHNvIHRoYXQgdGhlCgl1c2VyIGNhbiB2ZXJpZnkgdGhhdCB0aGUgcmVjb3JkaW5nIGlzIGNvcnJlY3QuCgoJKiBkbGxzL250ZGxsL2xvYWRlci5jLCBkbGxzL250ZGxsL3JlbGF5LmM6CglNYWtlIHJlbGF5IGFuZCBzbm9vcGluZyB3b3JrIGZvciBMb2FkTGlicmFyeStHZXRQcm9jQWRkcmVzcyBzZXF1ZW5jZQoJKGJhc2VkIG9uIGEgcGF0Y2ggYnkgRG1pdHJ5IFRpbW9zaGtvdikuCgoJKiBkbGxzL2RkcmF3L2RzdXJmYWNlL2RpYi5jOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSBhZGQgUzNUQyBzdXBwb3J0IHRvIEJsdEZhc3QgKGZpeGVzIE5PTEYpCgktIHByb3BlciBzdXJmYWNlIHVubG9ja2luZyBpbiBjYXNlIG9mIGVycm9yIGluIHRoZSBCbHQgY2FzZQoKCSogZGxscy9jb21tZGxnL2ZvbnRkbGcuYzogSmFtZXMgSGF3a2lucyA8dHJ1aWtlbkBnbWFpbC5jb20+CglDbGVhbnVwIEEtPlcgY3Jvc3MgY2FsbHMuCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmgsIGRsbHMvY29tY3RsMzIvcHJvZ3Jlc3MuYzoKCVRob21hcyBXZWlkZW5tdWVsbGVyIDx3aW5lLXBhdGNoZXNAcmVhY3Rzb2Z0LmNvbT4KCUFkZGVkIHN1cHBvcnQgZm9yIFBCU19NQVJRVUVFIHN0eWxlLgoKCSogZGxscy9nZGkvYml0Ymx0LmMsIGRsbHMvZ2RpL2RyaXZlci5jLCBkbGxzL2dkaS9lbmhtZmRydi9pbml0LmMsCgkgIGRsbHMvZ2RpL2dkaV9wcml2YXRlLmgsIGRsbHMvZ2RpL21mZHJ2L2luaXQuYywgZGxscy94MTFkcnYveDExZHJ2LmgsCgkgIGRsbHMveDExZHJ2L3gxMWRydi5zcGVjLCBkbGxzL3gxMWRydi94cmVuZGVyLmM6CglIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IEFscGhhQmxlbmQgdXNpbmcgdGhlIFhSRU5ERVIgZXh0ZW5zaW9uLgoKCSogZGxscy9hZHZhcGkzMi9jcnlwdC5jOgoJRml4ZWQgc29tZSBtb3JlIGZyZWVpbmcgaXNzdWVzIGluIENyeXB0QWNxdWlyZUNvbnRleHRBLgoKCSogZGxscy9zaGVsbDMyL2RpYWxvZ3MuYzogSmVucyBDb2xsaW4gPGplbnMuY29sbGluQGxha2hlaS5jb20+CglVc2UgU2hlbGxFeGVjdXRlIGluc3RlYWQgb2YgQ3JlYXRlUHJvY2VzcyBpbiBydW4gZGlhbG9nLgoKCSogZGxscy9vbGUzMi9tYXJzaGFsLmMsIGRsbHMvb2xlMzIvcnBjLmM6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIEFkZCBzdGF0aWMgdG8gbm9uLWV4cG9ydGVkIG1hcnNoYWwgZnVuY3Rpb25zLgoJLSBSZW1vdmUgdW51c2VkIG1hcnNoYWwgZnVuY3Rpb25zLgoJLSBSZW5hbWUgc2V2ZXJhbCBSUEMgZnVuY3Rpb25zLgoKCSogZGxscy9kc291bmQvbWl4ZXIuYzogR2VyYWxkIFBmZWlmZXIgPGdlcmFsZEBwZmVpZmVyLmNvbT4KCUF2b2lkIHVzaW5nIHJvdW5kKCksIHdoaWNoIGlzIHVucG9ydGFibGUuCgoJKiBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGUzMi9jb21wb2JqX3ByaXZhdGUuaCwKCSAgZGxscy9vbGUzMi9tYXJzaGFsLmM6CglNaWtlIEhlYXJuIDxtaEBjb2Rld2VhdmVycy5jb20+CglEaXNjb25uZWN0IHByb3hpZXMgYXQgQ09NIHNodXRkb3duIHRvIHJlbGVhc2UgdGhlIGNvcnJlc3BvbmRpbmcKCXN0dWJzLgoKCSogZGxscy9kZHJhdy9kM2R2aWV3cG9ydC5jOiBDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglJbXByb3ZlZCBJRGlyZWN0M0RWaWV3cG9ydEltcGxfM18yXzFfVHJhbnNmb3JtVmVydGljZXMgc3R1Yi4KCgkqIGRsbHMvZHNvdW5kL2Rzb3VuZC5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQ2hlY2sgdGhlIHJldHVybiB2YWx1ZSBvZiBJRGlyZWN0U291bmRJbXBsX0NyZWF0ZSgpIHRvIGRldGVjdCBlcnJvcnMuCglBbHdheXMgc2V0ICpwcERTIHRvIE5VTEwgaW4gY2FzZSBvZiBlcnJvci4KCgkqIGRsbHMvZGRyYXcvZDNkZXhlY3V0ZWJ1ZmZlci5jOgoJQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJRml4ZWQgRDNET1BfU1RBVEVMSUdIVCBvcGNvZGUuCglJbXBsZW1lbnRlZCBfZHVtcF9EM0RFWEVDVVRFQlVGRkVSREVTQy4KCgkqIGRsbHMvd2luZXBzL2Rvd25sb2FkLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQ2hlY2sgcmV0dXJuIHZhbHVlIG9mIGdldF9iYm94KCkuCgoJKiBwcm9ncmFtcy93aW5lZGJnL2dkYnByb3h5LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUmVwbGFjZWQgdW5kZWZpbmVkIEMgZXhwcmVzc2lvbi4KCgkqIGRsbHMvd2ludGFiMzIvY29udGV4dC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVJlcGxhY2VkIGluY29ycmVjdCBDIGNvbXBhcmlzb24gY29uc3RydWN0LgoKCSogZGxscy9jb21jdGwzMi9jb21tY3RybC5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQ3JlYXRlIHRvb2xiYXIgd2l0aCBhIG5vdCB6ZXJvIGRlZmF1bHQgc2l6ZSwgaXQgYWxsb3dzIGFwcGxpY2F0aW9ucwoJd2hpY2ggY2hlY2sgdG9vbGJhciBzaXplIGJlZm9yZSBhZGRpbmcgYnV0dG9ucyB0byBpdCB3b3JrLgoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglJbXBsZW1lbnRlZCBQU01fSU5ERVhUT0hXTkQuCgoJKiBkbGxzL2RkcmF3L2QzZF9wcml2YXRlLmgsIGRsbHMvZGRyYXcvZGRyYXdfcHJpdmF0ZS5oOgoJQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJTW92ZWQgbGlidHhjX2R4dCBkZWZpbml0aW9ucyBpbnRvIGRkcmF3IGhlYWRlcnMuCgoJKiBkbGxzL2RkcmF3L2RkcmF3L21haW4uYzogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gRml4IGNvbXBpbGF0aW9uIG9uIGJveGVzIHdpdGhvdXQgT3BlbkdMIGluc3RhbGxlZC4KCS0gUHJpbnQgdGhlIHdhcm5pbmcgbWVzc2FnZSBvbmx5IG9uY2UuCgoyMDA0LTA3LTMwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvZGRyYXcvZDNkX3ByaXZhdGUuaCwKCSAgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLCBkbGxzL2RkcmF3L2QzZHRleHR1cmUuYywKCSAgZGxscy9kZHJhdy9kZHJhdy9tYWluLmMsIGRsbHMvZGRyYXcvZGRyYXdfcHJpdmF0ZS5oLAoJICBkbGxzL2RkcmF3L2RzdXJmYWNlL2RpYi5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL21haW4uYywKCSAgZGxscy9kZHJhdy9tYWluLmMsIGRsbHMvZGRyYXcvbWVzYS5jLCBkbGxzL2RkcmF3L21lc2FfcHJpdmF0ZS5oLAoJICBpbmNsdWRlL2NvbmZpZy5oLmluOgoJQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJQWRkZWQgbmF0aXZlIGFuZCBlbXVsYXRlZCBTM1RDIHN1cHBvcnQuCgoJKiBwcm9ncmFtcy93Y21kL2J1aWx0aW5zLmM6CglGaXhlZCBidWcgd2l0aCAlIHNpZ25zIGluIGhlbHAgb3V0cHV0IChyZXBvcnRlZCBieSBIZW5uaW5nIEdlcmhhcmR0KS4KCgkqIGRsbHMvbnRkbGwvdmVyc2lvbi5jOiBJdmFuIExlbyBQdW90aSA8cHVvdGlAaW53aW5kLml0PgoJRml4IGRsbCB2ZXJzaW9uIGRldGVjdGlvbi4KCgkqIGRsbHMvb2xlMzIvY29tcG9iai5jOiBNaWtlIEhlYXJuIDxtaEBjb2Rld2VhdmVycy5jb20+CglEb24ndCBtYXJzaGFsIElDbGFzc0ZhY3RvcnkgaW50byB0aGUgbG9jYWwgc2VydmVyIHBpcGUgdW50aWwgd2UgaGF2ZQoJY29ubmVjdGVkLCBvdGhlcndpc2Ugd2UgbWlnaHQgZW5kIHVwIHdpdGggc3R1YnMgdGhhdCBhcmUgbmV2ZXIgdXNlZC4KCgkqIGRsbHMvb2xlYXV0MzIvdG1hcnNoYWwuYzogTWlrZSBIZWFybiA8bWhAY29kZXdlYXZlcnMuY29tPgoJRGlzY29ubmVjdCB0aGUgc2VydmVyIG9iamVjdCBmcm9tIHRoZSBzdHViIG9uIHN0dWIgZGVzdHJ1Y3Rpb24uCgoJKiBkbGxzL29sZTMyL3JwYy5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglNaWtlIEhlYXJuIDxtaEBjb2Rld2VhdmVycy5jb20+CglGaXggaW5maW5pdGUgbG9vcHMgYnkgY2hlY2tpbmcgdGhlIHJldHVybiB2YWx1ZSBvZiBfaW52b2tlX29uZXJlcSBhbmQKCWJhaWxpbmcgYXBwcm9wcmlhdGVseS4KCgkqIGRsbHMvZHNvdW5kL3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMvZHNvdW5kL3Rlc3RzL01ha2VmaWxlLmluLAoJICBkbGxzL2Rzb3VuZC90ZXN0cy9kczNkLmMsIGRsbHMvZHNvdW5kL3Rlc3RzL2RzM2Q4LmMsCgkgIGRsbHMvZHNvdW5kL3Rlc3RzL2Rzb3VuZC5jLCBkbGxzL2Rzb3VuZC90ZXN0cy9kc291bmQ4LmMsCgkgIGRsbHMvZHNvdW5kL3Rlc3RzL2Rzb3VuZF90ZXN0Lmg6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJUmVmYWN0b3JlZCBjb21tb24gdGVzdCBjb2RlIGludG8gc3Vicm91dGluZXMuCglBZGRlZCB0ZXN0cyBmb3IgY29ycmVjdCBDb21wYWN0IGJlaGF2aW9yLgoJQWRkZWQgdGVzdHMgZm9yIGFsbCBwb3NzaWJsZSBJRGlyZWN0U291bmRbOF0gY3JlYXRpb24gbW9kZXMgd2l0aCBnb29kCglhbmQgYmFkIGFyZ3VtZW50cy4KCVNwbGl0IGRzb3VuZC5jIGFuZCBkczNkLmMgaW50byBzZXBhcmF0ZSBmaWxlcyBmb3IgSURpcmVjdFNvdW5kIGFuZAoJSURpcmVjdFNvdW5kOCBpbnRlcmZhY2VzIGFuZCBhZGRlZCBjb2RlIHRvIG5vdCBleGVjdXRlIElEaXJlY3RTb3VuZDgKCXRlc3RzIHdoZW4gcnVuIHdpdGggYSBkc291bmQuZGxsIG9mIHZlcnNpb24gNyBvciBlYXJsaWVyLiAgV2Ugc2hvdWxkCglub3cgYmUgYWJsZSB0byBydW4gdGhlc2UgdGVzdHMgb24gYSBXaW5kb3dzIHN5c3RlbSB3aXRoIERYNyBvciBlYXJsaWVyCgkodW50ZXN0ZWQpLgoKCSogZGxscy9kc291bmQvZHNvdW5kLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglBZGRlZCBlcnJvciBjaGVja2luZyB0byBJRGlyZWN0U291bmRfQ29tcGFjdC4KCUZpeGVkIElEaXJlY3RTb3VuZEltcGxfQ3JlYXRlIHRvIHJldHVybiBEU0VSUl9OT0RSSVZFUiBmb3IgYSBiYWQKCWRldmljZSBJSUQuCgoJKiBwcm9ncmFtcy9tc2lleGVjL21zaWV4ZWMuYzoKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCVJlZmFjdG9yIHNvbWUgb3RoZXIgY29kZSBpbiBtc2lleGVjLgoKCSogZGxscy9pbWFnZWhscC9pbWFnZWhscF9tYWluLmM6CglUaG9tYXMgV2VpZGVubXVlbGxlciA8d2luZS1wYXRjaGVzQHJlYWN0c29mdC5jb20+CglJbXBsZW1lbnRhdGlvbiBvZiBUb3VjaEZpbGVUaW1lcygpLCB0aGFua3MgdG8gRmxvcmlhbiBTdGluZ2xtYXlyIGZvcgoJc3VibWl0dGluZyBhIHJvdWdoIGRyYWZ0LgoKCSogcHJvZ3JhbXMvbXNpZXhlYy9tc2lleGVjLmM6CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglSZWZhY3RvciBzb21lIG9mIHRoZSBzdHJpbmcgcHJvY2Vzc2luZyBpbiBtc2lleGVjLgoKCSogZGxscy9yaWNoZWRpdC9yaWNoZWRpdC5jLCBpbmNsdWRlL3JpY2hlZGl0Lmg6CglKYWNlayBDYWJhbjxqYWNrQGl0bWEucHdyLndyb2MucGw+CglBZGRlZCBFTV9TQ1JPTExDQVJFVCBkZWZpbml0aW9uIGluIGluY2x1ZGUvcmljaGVkaXQuaCBhbmQgaGFuZGxpbmcgaW4KCVdpbmRvd1Byb2MuCgoJKiBwcm9ncmFtcy93aW5lY2ZnL0VuLnJjLCBwcm9ncmFtcy93aW5lY2ZnL0VzLnJjLAoJICBwcm9ncmFtcy93aW5lY2ZnL0l0LnJjLCBwcm9ncmFtcy93aW5lY2ZnL1B0LnJjLAoJICBwcm9ncmFtcy93aW5lY2ZnL1J1LnJjOgoJSmFtZXMgSGF3a2lucyA8dHJ1aWtlbkBnbWFpbC5jb20+CglVbmRlciB0aGUgRHJpdmVzIHRhYiwgcmVtb3ZlIHRoZSAnV2luZG93cyBEcml2ZScgc2VjdGlvbi4KCgkqIHByb2dyYW1zL3djbWQvRGUucmMsIHByb2dyYW1zL3djbWQvd2NtZHJjLnJjOgoJSGVubmluZyBHZXJoYXJkdCA8aGVubmluZy5nZXJoYXJkdEB3ZWIuZGU+CglBZGRlZCBhIEdlcm1hbiB0cmFuc2xhdGlvbiB0byB3Y21kLgoKCSogZGxscy9rZXJuZWwvbG9jYWxlLmMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy9udGRsbC9yZXNvdXJjZS5jLAoJICBpbmNsdWRlL3dpbnRlcm5sLmg6CglBZGRlZCBzdXBwb3J0IGZvciBnZXR0aW5nIGFuZCBzZXR0aW5nIHRoZSBVSSBsYW5ndWFnZS4KCgkqIG1pc2MvcmVnaXN0cnkuYzogVHJveSBSb2xsbyA8d2luZUB0cm95LnJvbGxvLm5hbWU+CglQcm9jZXNzIHNpYmxpbmcga2V5cyBpdGVyYXRpdmVseSwgdGhlcmVieSBwcmV2ZW50aW5nIGV4aGF1c3Rpb24gb2YgdGhlCglzdGFjay4KCgkqIHByb2dyYW1zL3dpbmVjZmcvRW4ucmMsIHByb2dyYW1zL3dpbmVjZmcvRXMucmMsCgkgIHByb2dyYW1zL3dpbmVjZmcvSXQucmMsIHByb2dyYW1zL3dpbmVjZmcvUHQucmMsCgkgIHByb2dyYW1zL3dpbmVjZmcvUnUucmMsIHByb2dyYW1zL3dpbmVjZmcvU2kucmMsCgkgIHByb2dyYW1zL3dpbmVjZmcvbWFpbi5jLCBwcm9ncmFtcy93aW5lY2ZnL3Jlc291cmNlLmgsCgkgIHByb2dyYW1zL3dpbmVjZmcvd2luZWNmZy5oLCBwcm9ncmFtcy93aW5lY2ZnL3gxMWRydmRsZy5jOgoJSmFtZXMgSGF3a2lucyA8dHJ1aWtlbkBnbWFpbC5jb20+CglSZW5hbWUgWDExIERyaXZlciB0YWIgb2Ygd2luZWNmZyB0byBHcmFwaGljcy4KCgkqIHByb2dyYW1zL21zaWV4ZWMvbXNpZXhlYy5jOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJSW1wbGVtZW50IHByb3BlciBwcm9wZXJ0aWVzIGhhbmRsaW5nIG9uIHRoZSBjb21tYW5kbGluZSBpbiBtc2lleGVjLgoKCSogZGxscy9hZHZhcGkzMi9jcnlwdC5jOiBNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglGaXhlZCBhIHBvdGVudGlhbCBkb3VibGUgY2FsbCB0byBDUllQVF9GcmVlIG9uIHZhcmlhYmxlICJ0ZW1wIi4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL3JzYWJhc2UvTWFrZWZpbGUuaW4sCgkgIGRsbHMvcnNhYmFzZS90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL3JzYWJhc2UvdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvcnNhYmFzZS90ZXN0cy9yc2FiYXNlLmM6CglNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglBZGRlZCBhIHRpbnkgdW5pdCB0ZXN0IGZvciByc2FiYXNlLmRsbC4KCgkqIHRvb2xzL01ha2VmaWxlLmluLCB0b29scy93aW5lLmRlc2t0b3A6CglDaHJpc3RpYW4gTmV1bWFpciA8Y2hyaXNAZ25vbWUtZGUub3JnPgoJQWRkZWQgc3VwcG9ydCBmb3IgdGhlIGZyZWVkZXNrdG9wLm9yZyBNSU1FIHN5c3RlbS4KCgkqIGNvbnRyb2xzL2NvbWJvLmMsIGRsbHMvZDNkOC9zaGFkZXIuYywgZGxscy9kM2Q4L3ZzaGFkZXJkZWNsYXJhdGlvbi5jLAoJICBkbGxzL2QzZDkvdnNoYWRlcmRlY2xhcmF0aW9uLmMsIGRsbHMvZ2RpL2RpYi5jLAoJICBkbGxzL29sZTMyL29sZXByb3h5LmM6CglKZXJvZW4gSmFuc3NlbiA8amFwakB4czRhbGwubmw+CglVcGRhdGVkIHNvbWUgTVNETiBsaW5rcyBpbiB0aGUgY29kZS4KCgkqIGRsbHMvb2xlMzIvbWFyc2hhbC5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglFbWl0IGZpeG1lIGZvciBrbm93biBsb2NhbCB3cm9uZyBiZWhhdmlvdXIuCgoJKiBkbGxzL2RldmVudW0vZGV2ZW51bS5yYzogSGVubmluZyBHZXJoYXJkdCA8aGVubmluZy5nZXJoYXJkdEB3ZWIuZGU+CglBZGRlZCBHZXJtYW4gcmVzb3VyY2VzIGZvciBkZXZlbnVtLgoKCSogZGxscy9tc2kvYWN0aW9uLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglVc2UgY29ycmVjdCBjYWxsaW5nIGNvbnZlbnRpb24gZm9yIHRoZSBjdXN0b20gYWN0aW9uIGhhbmRsZXJzLgoKMjAwNC0wNy0yOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbXNpL3N0cmluZy5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJTWFrZSB0aGUgbXNpc3RyaW5nX21ha2VoYXNoIHJldHVybiBzb21ldGhpbmcgb3RoZXIgdGhhbiBqdXN0IDEgb3IKCTAuIEFsc28gaGFuZGxlIHRoZSBjYXNlIHdoZXJlIHRoZSBzdHJpbmcgb3Igc3RvcmVkIHN0cmluZyBpcyBudWxsLgoKCSogZGxscy9zaGVsbDMyL3NocG9saWN5LmM6IEZpbGlwIE5hdmFyYSA8eG5hdmFyYUB2b2xueS5jej4KCUFkZCBSRVNUX05PTkxFR0FDWVNIRUxMTU9ERSBwb2xpY3kuCgoJKiBkbGxzL29sZTMyL2NvbXBvYmpfcHJpdmF0ZS5oLCBkbGxzL29sZTMyL21hcnNoYWwuYywgZGxscy9vbGUzMi9ycGMuYzoKCU1pa2UgSGVhcm4gPG1oQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCBkaXNjb25uZWN0IGZvciBwcm94aWVzIHNvIHRoYXQgc3R1YnMgYXJlIHByb3Blcmx5CglkZXN0cm95ZWQuCgoJKiBkbGxzL250ZGxsL3ZlcnNpb24uYzogSXZhbiBMZW8gUHVvdGkgPHB1b3RpQGlud2luZC5pdD4KCUNoYW5nZSB0aGUgTlQgc2VydmljZSBwYWNrIHZlcnNpb24gZnJvbSA2IHRvIDZhLCBjb3JyZWN0IHdpbjJrMyBuYW1lLgoKCSogcHJvZ3JhbXMvd2luZWNmZy9Fbi5yYywgcHJvZ3JhbXMvd2luZWNmZy9Fcy5yYywKCSAgcHJvZ3JhbXMvd2luZWNmZy9JdC5yYywgcHJvZ3JhbXMvd2luZWNmZy9QdC5yYywKCSAgcHJvZ3JhbXMvd2luZWNmZy9SdS5yYywgcHJvZ3JhbXMvd2luZWNmZy9TaS5yYzoKCUphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJUmVtb3ZlZCB0aGUgJ1dpbmRvd3MgTG9vazonIG9wdGlvbiBmcm9tIHdpbmVjZmcuCgoJKiBwcm9ncmFtcy9tc2lleGVjL21zaWV4ZWMuYzoKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCUluIHRoZSBhYnNlbmNlIG9mIGFueSBvdGhlciBvcHRpb24gdG8gbXNpZXhlYywgdHJlYXQgdGhlIGNvbW1hbmRsaW5lCglhcyBhIHBhY2thZ2UgbmFtZSB0byBpbnN0YWxsLgoKCSogZGxscy9vbGUzMi9tb25pa2VyLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCURvY3VtZW50IHdyb25nIGJlaGF2aW91ciBmb3IgSVJ1bm5pbmdPYmplY3RUYWJsZS4KCgkqIGRsbHMvb2xlMzIvbWFyc2hhbC5jOiBNaWtlIEhlYXJuIDxtaEBjb2Rld2VhdmVycy5jb20+CglGaXggcmVmIGNvdW50aW5nIGluIFN0ZE1hcnNoYWxJbXBsX01hcnNoYWxJbnRlcmZhY2UgZm9yIGNhc2Ugd2hlcmUgdGhlCglzdHViIGFscmVhZHkgZXhpc3RzLgoKCSogZGxscy9vbGUzMi9jb21wb2JqLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBzb21lIGluYWNjdXJhY2llcyBpbiBhIGNvbW1lbnQgYW5kIHJlZm9ybWF0LgoKCSogZGxscy9vbGUzMi9ycGMuYzogTWlrZSBIZWFybiA8bWhAY29kZXdlYXZlcnMuY29tPgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJQWRkIGEgY29tbWVudCBvbiB0aGUgU2VuZFJlY2VpdmUgYmVoYXZpb3VyLiBJbXByb3ZlIHR3byBvdGhlcnMuCgoJKiBkbGxzL2RldmVudW0vZGV2ZW51bS5yYywgZGxscy93aW5tbS93aW5tbV9yZXMucmMsCgkgIHByb2dyYW1zL3Byb2dtYW4vUHQucmMsIHByb2dyYW1zL3dpbmVtaW5lL3JzcmMucmM6CglNYXJjZWxvIER1YXJ0ZSA8d2luZS1kZXZlbEBib2wuY29tLmJyPgoJTG9jYWxpemF0aW9uIG9mIGRldmVudW0gdG8gUG9ydHVndWVzZSBhbmQgbWlub3IgY29ycmVjdGlvbnMuCgoJKiBkb2N1bWVudGF0aW9uL29sZS5zZ21sOiBNaWtlIEhlYXJuIDxtaWtlQG5hdmkuY3g+CglBZGQgRENPTSBkb2N1bWVudGF0aW9uIHRvIGRldmVsb3BlcnMgZ3VpZGUuCgoJKiBkbGxzL21zaS9tc2kuYywgZGxscy9tc2kvbXNpLnNwZWMsIGluY2x1ZGUvbXNpLmgsCgkgIHByb2dyYW1zL21zaWV4ZWMvbXNpZXhlYy5jOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJSW1wbGVtZW50IHBhdGNoaW5nIGluIG1zaWV4ZWMuCgoJKiBpbmNsdWRlL3dpbmNyeXB0Lmg6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUluY2x1ZGUgZGVjbGFyYXRpb25zIG5lZWRlZCBmb3IgZGV2ZWxvcGluZyBjcnlwdG9ncmFwaGljIHNlcnZpY2UKCXByb3ZpZGVycy4KCgkqIGRsbHMvbXNpL2NvbmQueTogVHJveSBSb2xsbyA8d2luZUB0cm95LnJvbGxvLm5hbWU+CglGaXggcGFyc2luZyBvZiBzdHJpbmcgbGl0ZXJhbHMuCgoJKiBwcm9ncmFtcy93aW5lY2ZnL0VuLnJjLCBwcm9ncmFtcy93aW5lY2ZnL0l0LnJjLAoJICBwcm9ncmFtcy93aW5lY2ZnL1B0LnJjLCBwcm9ncmFtcy93aW5lY2ZnL3gxMWRydmRsZy5jOgoJSmFtZXMgSGF3a2lucyA8dHJ1aWtlbkBnbWFpbC5jb20+CglSZW1vdmUgdGhlIFVzZVRha2VGb2N1cyBvcHRpb24gZnJvbSB3aW5lY2ZnLgoKCSogdG9vbHMvYzJtYW4ucGw6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBjMm1hbiBmb3IgdGhlIGNhc2Ugd2hlcmUgZnVuY3Rpb24gcGFyYW1ldGVycyBhcmUgb24gbW9yZSB0aGFuIG9uZQoJbGluZS4KCgkqIGRsbHMvbnRkbGwvc2VydmVyLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCURvY3VtZW50YXRpb24gZm9yIFdpbmUgY2xpZW50LXNpZGUgc2VydmVyIGludGVyZmFjZS4KCgkqIHRvb2xzL3dpbmVidWlsZC9pbXBvcnQuYzogTWFyY3VzIE1laXNzbmVyIDxtZWlzc25lckBzdXNlLmRlPgoJVXNlICJMRCIgaW5zdGVhZCBvZiAibGQiIGluIHdpbmVidWlsZCB0byBiZSBhYmxlIHRvIHVzZSBhIGRpZmZlcmVudCBsZAoJb3IgbGQgb3B0aW9ucy4KCjIwMDQtMDctMjQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2FkdmFwaTMyL3JlZ2lzdHJ5LmMsIGRsbHMvYWR2YXBpMzIvdGVzdHMvcmVnaXN0cnkuYzoKCURvbid0IGNyYXNoIG9uIE5VTEwgZGF0YSBpbiBSZWdTZXRWYWx1ZUV4QSAocmVwb3J0ZWQgYnkgTWlrZSBIZWFybiBhbmQKCUFuZHJlYXMgTW9ocikuCglSZW1vdmVkIGEgY291cGxlIG9mIHVubmVjZXNzYXJ5IHZlcnNpb24gY2hlY2tzLgoKCSogbGlicy93aW5lL21tYXAuYzoKCVJlc2VydmUgdGhlIERPUyBhcmVhIGluIG1tYXBfaW5pdCBpZiBpdCB3YXNuJ3QgYWxyZWFkeSBkb25lIGJ5IHRoZQoJcHJlbG9hZGVyLgoKCSogcHJvZ3JhbXMvbXNpZXhlYy9tc2lleGVjLmM6CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglJbXByb3ZlIG1zaWV4ZWMgdXNhZ2UgcHJvbXB0LgoKCSogZGxscy9hZHZhcGkzMi9jcnlwdC5jLCBkbGxzL2FkdmFwaTMyL3Rlc3RzL2NyeXB0LmM6CglNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CgktIENoYW5nZWQgc29tZSBGSVhNRXMgdG8gVFJBQ0VzLCBzaW5jZSB0aGV5IHJlcG9ydCBvbiBhIHByb2JsZW0gaW4gdGhlCgkgIHdheSB0aGUgY2xpZW50IHVzZXMgdGhlIGRsbCByYXRoZXIgdGhhbiBpbiB0aGUgZGxsIGl0c2VsZi4KCS0gQ292ZXIgdGhlIGNhc2UsIHdoZW4gdGhlIHBzelByb3ZpZGVyIHBhcmFtZXRlciBwb2ludHMgdG8gYW4gZW1wdHkKCSAgc3RyaW5nLgoJLSBGaXhlZCBzb21lIGltcHJlY2lzaW9ucyBpbiBlcnJvciByZXBvcnRpbmcuCgktIFJlbW92ZWQgdGhlICJ3aW5lX3RvZG8ncyIgYXJyb3VuZCB0aGUgY29ycmVzcG9uZGluZyB1bml0LXRlc3RzLgoKCSogY29udHJvbHMvZWRpdC5jOiBLcmlzaG5hIE11cnRoeSA8S3Jpc2huYS5NdXJ0aHlAZ3VwdGF3b3JsZHdpZGUuY29tPgoJTW9kaWZpZWQgRURJVF9XTV9DaGFyKCkgdG8gcmVzdHJpY3Qga2V5aW5nIGluIG9mIGxldHRlcnMgb3RoZXIgdGhhbgoJbnVtYmVycyB3aGVuIEVTX05VTUJFUiBzdHlsZSBpcyBzZXQuCgoyMDA0LTA3LTIzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9tc2kvbXNpLmMsIGluY2x1ZGUvbXNpLmgsIHByb2dyYW1zL21zaWV4ZWMvbXNpZXhlYy5jLAoJICBwcm9ncmFtcy9tc2lleGVjL21zaWV4ZWMuaDoKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCUltcGxlbWVudCBsb2dnaW5nIGluIG1zaWV4ZWMuCglDb3JyZWN0IE1zaUVuYWJsZUxvZ3tBLFd9IHByb3RvdHlwZS4KCgkqIGluY2x1ZGUvbXNpLmgsIHByb2dyYW1zL21zaWV4ZWMvbXNpZXhlYy5jOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJSW1wbGVtZW50IHRoZSBVSSBsZXZlbCBjaGFuZ2UgcGFydCBvZiBtc2lleGVjLgoKCSogcHJvZ3JhbXMvbXNpZXhlYy9tc2lleGVjLmM6CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglBZGQgdGhlIGNvcnJlY3QgZGVmYXVsdCBtb2RlIHRvIHRoZSByZXBhaXIgb3B0aW9uLgoKCSogcHJvZ3JhbXMvbXNpZXhlYy9tc2lleGVjLmM6CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglEdW1wICh2aWEgVFJBQ0VzKSBhbGwgdGhlIGFyZ3VtZW50cyBvZiBtc2lleGVjLgoKCSogZGxscy9rZXJuZWwvbG9jYWxlLmM6IFZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCVJlbW92ZSBsYXN0IHdpbmVkZWZhdWx0LnJlZyByZWZlcmVuY2UgaW4gdGhlIGNvZGUuCgoJKiBkbGxzL21zdmNydC9tYmNzLmMsIGRsbHMvbnRkbGwvdGVzdHMvcnRsLmMsIGRsbHMvb2xlMzIvYmluZGN0eC5jLAoJICBkbGxzL29sZTMyL2ZpbGVtb25pa2VyLmMsIGRsbHMvc2hlbGwzMi9jbGFzc2VzLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGxmaWxlb3AuYywgcHJvZ3JhbXMvd2NtZC9Fbi5yYywgcHJvZ3JhbXMvd2NtZC9SdS5yYywKCSAgcHJvZ3JhbXMvd2NtZC9TaS5yYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQXNzb3J0ZWQgc3BlbGxpbmcgZml4ZXMuCgoJKiBkbGxzL3dpbm1tL3dpbmVhbHNhL2F1ZGlvLmMsIGRsbHMvd2lubW0vd2luZWFydHMvYXVkaW8uYywKCSAgZGxscy93aW5tbS93aW5lYXVkaW9pby9hdWRpby5jLCBkbGxzL3dpbm1tL3dpbmVqYWNrL2F1ZGlvLmMsCgkgIGRsbHMvd2lubW0vd2luZW5hcy9hdWRpby5jLCBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBieXRlc190b19tbXRpbWUoKSB0byBjb252ZXJ0IHRoZSBzdHJlYW0gcG9zaXRpb24gZnJvbSBieXRlcyB0bwoJdGhlIHJlcXVlc3RlZCBNTVRJTUUgZm9ybWF0LiBUaGlzIGZ1bmN0aW9uIHNob3VsZCBiZSBpZGVudGljYWwgaW4gYWxsCglkcml2ZXJzLgoJUmVtb3ZlIHRoZSBjb3JyZXNwb25kaW5nIGNvZGUgZnJvbSB3b2RHZXRQb3NpdGlvbigpIGFuZAoJd2lkR2V0UG9zaXRpb24oKSBhbmQgdXNlIGJ5dGVzX3RvX21tdGltZSgpIGluc3RlYWQuCglieXRlc190b19tbXRpbWUoKSB1c2VzIG5vIGZsb2F0aW5nLXBvaW50IGFyaXRobWV0aWMgdG8gY29tcHV0ZQoJVElNRV9TTVBURSBhbmQgbm8gbG9uZ2VyIHVzZXMgcm91bmQoKS4gSXQgc2hvdWxkIGhhdmUgbm8gaW50ZWdlcgoJb3ZlcmZsb3dzIGVpdGhlci4KCgkqIGluY2x1ZGUvbXNpLmgsIHByb2dyYW1zL21zaWV4ZWMvbXNpZXhlYy5jLAoJICBwcm9ncmFtcy9tc2lleGVjL21zaWV4ZWMuaDoKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCUltcGxlbWVudCB0aGUgYWR2ZXJ0aXNlIHBhcnQgb2YgbXNpZXhlYy4KCgkqIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgSU5URVJORVRfT1BUSU9OX0NPTk5FQ1RFRF9TVEFURS4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0ZyLnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9QdC5yYywKCSAgcHJvZ3JhbXMvbm90ZXBhZC9EZS5yYzoKCU1hcmNlbG8gRHVhcnRlIDx3aW5lLWRldmVsQGJvbC5jb20uYnI+CglGcmVuY2ggdHJhbnNsYXRpb24gYW5kIG90aGVyIGFkanVzdG1lbnRzLgoKCSogZGxscy9kc291bmQvYnVmZmVyLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglTbWFsbCBjbGVhbnVwIGluIElEaXJlY3RTb3VuZEJ1ZmZlckltcGxfU2V0UGFuKCkuCgoJKiBkbGxzL2Rzb3VuZC90ZXN0cy9kczNkLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglDaGVjayB0aGF0IG1vZGlmeWluZyB0aGUgc2Vjb25kYXJ5IGJ1ZmZlciB2b2x1bWUvcGFuIGRvZXMgbm90IGNoYW5nZQoJdGhlIHByaW1hcnkgYnVmZmVyJ3Mgdm9sdW1lIGFuZCBwYW4uCgoJKiBkbGxzL29sZTMyL3JwYy5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglTZXQgUlBDIGRhdGEgcmVwcmVzZW50YXRpb24uCgoJKiBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGUzMi9tYXJzaGFsLmMsIGRsbHMvb2xlMzIvcnBjLmM6CglNaWtlIEhlYXJuIDxtaEBjb2Rld2VhdmVycy5jb20+CglQYXNzIC1FbWJlZGRpbmcgc3dpdGNoIHRvIEVYRSBzZXJ2ZXJzLCBtb3JlIHRyYWNpbmcuCgoJKiBkbGxzL2tlcm5lbC9yZXNvdXJjZTE2LmM6CglBdm9pZCBsdmFsdWUgY2FzdHMgKGJhc2VkIG9uIGEgcGF0Y2ggYnkgTWFyY3VzIE1laXNzbmVyKS4KCgkqIGRsbHMvZGV2ZW51bS9kZXZlbnVtLnJjOiBJdmFuIExlbyBQdW90aSA8cHVvdGlAaW53aW5kLml0PgoJQWRkZWQgSXRhbGlhbiBzdHJpbmdzLgoKCSogZGxscy9kc291bmQvZHNvdW5kLmMsIGRsbHMvZHNvdW5kL2Rzb3VuZF9wcml2YXRlLmgsCgkgIGRsbHMvZHNvdW5kL21peGVyLmMsIGRsbHMvZHNvdW5kL3ByaW1hcnkuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglGaXggdGhlIHZvbHVtZSBhbmQgYmFsYW5jZSBvZiBwcmltYXJ5IGJ1ZmZlcnMgc28gaXQgaXMgdGhlIHN5c3RlbSdzCgl2b2x1bWUgYW5kIGJhbGFuY2UsIGxpa2Ugb24gV2luZG93cy4KCgkqIGRsbHMvd2lubW0vdGVzdHMvd2lubW1fdGVzdC5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVNvcnQgdGhlIHdpbm1tIHRlc3QgZm9ybWF0cyBieSBpbmNyZWFzaW5nIHNhbXBsaW5nIHJhdGUuCgoJKiBkbGxzL3dpbm1tL3Rlc3RzL2NhcHR1cmUuYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCVRlc3Qgd2F2ZUluR2V0RGV2Q2Fwc1cuCgoJKiBkbGxzL3dpbm1tL3Rlc3RzL3dhdmUuYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCVdpbmRvd3MgOTUgZG9lc24ndCBzdXBwb3J0IHdhdmVPdXRHZXREZXZDYXBzVy4KCjIwMDQtMDctMjIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL21zdmNydDIwL21zdmNydDIwLnNwZWM6CglSZW1vdmVkIHNvbWUgZnVuY3Rpb25zIHRoYXQgZG9uJ3QgZXhpc3QgaW4gbXN2Y3J0MjAgKHJlcG9ydGVkIGJ5IEphbgoJVmFuIEJ1Z2dlbmhvdXQpLgoKCSogZGxscy9vbGUzMi9jb21wb2JqX3ByaXZhdGUuaCwgZGxscy9vbGUzMi9tYXJzaGFsLmMsCgkgIGRsbHMvb2xlMzIvb2xlcHJveHkuYywgZGxscy9vbGUzMi9ycGMuYzoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gUmVtb3ZlIHVubmVlZGVkIFNUVUJNR1JfU3RhcnQgY2FsbC4KCS0gQ2xlYW51cCBjb21wb2JqX3ByaXZhdGUuaC4KCgkqIGRsbHMvcXVhcnR6L2F2aXNwbGl0LmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCWNraWRKVU5LIGlzIGEgRk9VUkNDIG5vdCBhIFRXT0NDIHNvIHJld3JpdGUgdGhlIGNhc2Ugc3RhdGVtZW50CglhcHByb3ByaWF0ZWx5LgoKCSogcHJvZ3JhbXMvbm90ZXBhZC9EZS5yYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCB1cCBzb21lIHNtYWxsIHByb2JsZW1zIGluIHRoZSBHZXJtYW4gc3RyaW5nIHRhYmxlLgoKCSogZGxscy9hdmlmaWwzMi9hdmlmaWxlLmMsIGRsbHMvYXZpZmlsMzIvZWRpdHN0cmVhbS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCAyIG1vcmUgY2FzdGVkIGx2YWx1ZSBpc3N1ZXMuCgoJKiBwcm9ncmFtcy93aW5ldGVzdC9tYWluLmM6IEZlcmVuYyBXYWduZXIgPHdmZXJpQGFmYXZhbnQuZWx0ZS5odT4KCS0gUmVtb3ZlIHRoZSAtdSBvcHRpb24sIHRoZSBVUkwgaXMgaW4gYSByZXNvdXJjZSBub3cuCgktIFJlc2V0IHRoZSBXSU5FVEVTVF8qIGVudmlyb25tZW50YWwgdmFyaWFibGVzIHRvIHRoZWlyIGRlZmF1bHRzCgkgIGJlZm9yZSBmb3JraW5nIHRoZSB0ZXN0cy4KCS0gQWRkIHRoZSAtZSBvcHRpb24gdG8gb3B0aW9uYWxseSBwcmVzZXJ2ZSB0aGUgZW52aXJvbm1lbnQuCgoJKiBkbGxzL3dpbmluZXQvaHR0cC5jOiBGaXhlZCBhIGNvdXBsZSBvZiBvZmYtYnktb25lIGVycm9ycy4KCgkqIGRsbHMvZHNvdW5kL3Rlc3RzL01ha2VmaWxlLmluLCBkbGxzL2Rzb3VuZC90ZXN0cy9jYXB0dXJlLmMsCgkgIGRsbHMvZHNvdW5kL3Rlc3RzL2Rzb3VuZC5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCURvd25ncmFkZSB0ZXN0cyB0byBEWDggbGV2ZWwgc28gaXQgY2FuIGJ1aWxkIG9uIGFsbCB3aW5kb3dzCglwbGF0Zm9ybXMuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bF9EZS5yYywgZGxscy9jb21tZGxnL2NkbGdfRGUucmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0RlLnJjLCBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9EZS5yYywKCSAgcHJvZ3JhbXMvY21kbGd0c3QvRGUucmMsIHByb2dyYW1zL25vdGVwYWQvRGUucmMsCgkgIHByb2dyYW1zL3JlZ2VkaXQvRGUucmMsIHByb2dyYW1zL3VuaW5zdGFsbGVyL3JzcmMucmM6CglIZW5uaW5nIEdlcmhhcmR0IDxoZW5uaW5nLmdlcmhhcmR0QHdlYi5kZT4KCU1pbm9yIGZpeGVzIGFuZCB1cGRhdGVzIHRvIHRoZSBHZXJtYW4gcmVzb3VyY2UgZmlsZXMuCgoJKiBkbGxzL29sZTMyL21hcnNoYWwuYzogTWlrZSBIZWFybiA8bWhAY29kZXdlYXZlcnMuY29tPgoJUm9iIFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IFN0ZE1hcnNoYWw6OlJlbGVhc2VNYXJzaGFsRGF0YS4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBsaWJzL3dpbmUvTWFrZWZpbGUuaW46CglFbW1hbnVlbCBNYWlsbGFyZCA8ZS5yc3pAbGliZXJ0eXN1cmYuZnI+CglTZXQgc2VnbWVudCBhZGRyZXNzIG9mIHdpbmUgZXhlY3V0YWJsZSBhbmQgbGlid2luZS5keWxpYiBvbiBEYXJ3aW4uCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9JdC5yYywgcHJvZ3JhbXMvd2luZWNmZy9JdC5yYywKCSAgcHJvZ3JhbXMvd2luZWNmZy93aW5lY2ZnLnJjOgoJSXZhbiBMZW8gUHVvdGkgPHB1b3RpQGlud2luZC5pdD4KCUFkZGVkIEl0YWxpYW4gcmVzb3VyY2VzLgoKCSogZGxscy94MTFkcnYveHJlbmRlci5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJRHJhdyB1bmRlcmxpbmUgYW5kIHN0cmlrZW91dCBsaW5lcyBpbiB0aGUgbm9uLXhyZW5kZXIgY2FzZXMgdG9vLgoKCSogcHJvZ3JhbXMvd2luZXRlc3QvTWFrZWZpbGUuaW46IEZlcmVuYyBXYWduZXIgPHdmZXJpQGFmYXZhbnQuZWx0ZS5odT4KCUluY2x1ZGUgdGhlIGRzb3VuZCB0ZXN0cy4KCgkqIGRsbHMvb2xlMzIvcnBjLmM6IE1pa2UgSGVhcm4gPG1oQGNvZGV3ZWF2ZXJzLmNvbT4KCVVucmVmIHN0dWIgYWZ0ZXIgaW52b2tpbmcgb24gaXQuCgoJKiBkbGxzL2F2aWZpbDMyL2V4dHJhY2h1bmsuYzogR2VyYWxkIFBmZWlmZXIgPGdlcmFsZEBwZmVpZmVyLmNvbT4KCVJlbW92ZSB1c2VzIG9mIHRoZSBjYXN0LWFzLWx2YWx1ZSBHQ0MgZXh0ZW5zaW9uIHdoaWNoIGhhcyBiZWVuCglkZXByZWNhdGVkLgoKCSogZGxscy9hZHZhcGkzMi9jcnlwdC5jLCBkbGxzL2FkdmFwaTMyL3Rlc3RzL2NyeXB0LmM6CglNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CgktIEZpeGVkIGEgcHJvYmxlbSB3aXRoIGR3UHJvdlR5cGUgdmFsdWVzIGdyZWF0ZXIgdGhhbiA5OSBpbgoJICBDUllQVF9HZXRUeXBlS2V5TmFtZS4KCS0gRml4ZWQgZXJyb3IgcmVwb3J0aW5nIGluIHRoZSBjYXNlIG9mIGR3UHJvdlR5cGUgPT0gMC4KCS0gUmVtb3ZlZCAidG9kb193aW5lIiBmcm9tIHRoZSBjb3JyZXNwb25kaW5nIHVuaXQgdGVzdC4KCgkqIGRsbHMvZ2RpL2ZyZWV0eXBlLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglNYWtlIHRtVW5kZXJsaW5lZCBhbmQgdG1TdHJ1Y2tPdXQgcmVmbGVjdCB0aGUgdmFsdWVzIHVzZWQgdG8gY3JlYXRlCgl0aGUgZm9udC4KCgkqIGRsbHMvZHNvdW5kL2Rzb3VuZC5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJRHVtcCBEaXJlY3RTb3VuZCBjYXBhYmlsaXRpZXMgZmxhZ3MuCgoJKiBkbGxzL2Rzb3VuZC9wcm9wc2V0LmMsIGRsbHMvZHNvdW5kL3Rlc3RzL3Byb3BzZXQuYywKCSAgZGxscy9keGd1aWQvZHhndWlkLmM6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJUmVtb3ZlcyBkc2NvbmYgSUlEcyBmcm9tIGR4Z3VpZC5saWIuCglGaXhlcyBwcm9wc2V0IGZpbGVzIGZvciBtaXNzaW5nIElJRHMuCgoyMDA0LTA3LTIxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZG9jdW1lbnRhdGlvbi9QQUNLQUdJTkcsIGRvY3VtZW50YXRpb24vY29uZmlndXJpbmcuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9pbXBsZW1lbnRhdGlvbi5zZ21sLCBkb2N1bWVudGF0aW9uL211bHRpbWVkaWEuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9wcmludGluZy5zZ21sLCBkb2N1bWVudGF0aW9uL3JlZ2lzdHJ5LnNnbWw6CglJdmFuIExlbyBQdW90aSA8cHVvdGlAaW53aW5kLml0PgoJUmVtb3ZlIHJlZmVyZW5jZXMgdG8gZGVidWdtc2cgYW5kIHdpbmVkZWZhdWx0LnJlZy4KCgkqIGRsbHMvbXByL21wci5yYywgZGxscy9tcHIvbXByX0l0LnJjLCBkbGxzL3NobHdhcGkvc2hsd2FwaS5yYywKCSAgZGxscy9zaGx3YXBpL3NobHdhcGlfSXQucmMsIHByb2dyYW1zL3JlZ2VkaXQvSXQucmM6CglJdmFuIExlbyBQdW90aSA8cHVvdGlAaW53aW5kLml0PgoJQWRkZWQgSXRhbGlhbiByZXNvdXJjZXMuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmM6IEZpbGlwIE5hdmFyYSA8eG5hdmFyYUB2b2xueS5jej4KCUZpeCBDcmVhdGVNYXBwZWRCaXRtYXAgZm9yIHBhbGV0dGUtbGVzcyBiaXRtYXBzLgoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYzogRmlsaXAgTmF2YXJhIDx4bmF2YXJhQHZvbG55LmN6PgoJLSBQcm9wZXJseSBjYWxjdWxhdGUgY2FwdGlvbiBsZW5ndGggd2hlbiBjb252ZXJ0aW5nIG11bHRpLWJ5dGUgc3RyaW5nCgkgIHRvIHdpZGUgY2hhcmFjdGVyIG9uZS4KCS0gV2l6YXJkIGNvbnRlbnRzIHNob3VsZG4ndCBiZSBtb3ZlZCBieSB0aGUgc2l6ZSBvZiB3YXRlcm1hcmsgYml0bWFwLgoJLSBGaXggUFNIX1dJWkFSRDk3X1tORVcvT0xEXSBjaGVja3MuCgktIEJsaXQgdGhlIHdhdGVybWFyayBldmVuIGlmIFBTSF9VU0VIQk1XQVRFUk1BUksgZmxhZyBpc24ndCBzZXQgYW5kCgkgIGJsaXQgb25seSB0aGUgcGFydCB0aGF0IGZpdHMgaW50byB0aGUgZGlhbG9nLgoKCSogZGxscy93aW5pbmV0L2h0dHAuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJSHR0cFF1ZXJ5SW5mbyByZXR1cm5zIGJ1ZmZlciBsZW5ndGggaW5jbHVkaW5nIG51bGwgdGVybWluYXRvciBvbgoJaW5zdWZmaWNpZW50IGJ1ZmZlciBsZW5ndGggYW5kIGJ1ZmZlciBsZW5ndGggZXhjbHVkaW5nIG51bGwgdGVybWluYXRvcgoJb24gc3VjY2VzczoKCS0gRml4IEhUVFBfSHR0cFF1ZXJ5SW5mb1cgZm9yIHRoZXNlIHNlbWFudGljcy4KCS0gRml4IEh0dHBRdWVyeUluZm9BIHRvIGNvcnJlY3RseSBjb3B5IHRoZSBudWxsIHRlcm1pbmF0b3IgaW4gdGhlIGNhbGwKCSAgdG8gV2lkZUNoYXJUb011bHRpQnl0ZS4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVVuaWNvZGUgZmlsZSBkaWFsb2dzIHNlbmQgYW5kIHJlY2VpdmUgdW5pY29kZSBtZXNzYWdlcy4KCgkqIHByb2dyYW1zL3JlZ2VkaXQvRGUucmMsIHByb2dyYW1zL3JlZ2VkaXQvRnIucmMsCgkgIHByb2dyYW1zL3JlZ2VkaXQvSXQucmM6CglNYXJjZWxvIER1YXJ0ZSA8d2luZS1kZXZlbEBib2wuY29tLmJyPgoJVmlzdWFsIHVwZGF0ZXMgYW5kIHRyYW5zbGF0aW9ucyBmb3IgcmVnZWRpdC4KCgkqIGRsbHMvYWR2YXBpMzIvdGVzdHMvLmN2c2lnbm9yZSwgZGxscy9hZHZhcGkzMi90ZXN0cy9NYWtlZmlsZS5pbiwKCSAgZGxscy9hZHZhcGkzMi90ZXN0cy9jcnlwdC5jOgoJTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJQWRkZWQgc29tZSB1bml0IHRlc3RzIGZvciB0aGUgQ3J5cHRBY3F1aXJlQ29udGV4dCBBUEkgZnVuY3Rpb24uCgoJKiBkbGxzL29sZTMyL2NvbXBvYmouYzogTWlrZSBIZWFybiA8bWhAY29kZXdlYXZlcnMuY29tPgoJRml4IG1pc2xlYWRpbmcgd2FybmluZyBvbGUgQ29HZXRDbGFzc09iamVjdC4KCgkqIGRsbHMvd2luaW5ldC9jb29raWUuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJUmV3cml0ZSBjb29raWVzIHRvIHVzZSBzaGFyZWQgbGlzdC5oIGxpc3QgY29kZS4KCgkqIGRsbHMvd2luaW5ldC9odHRwLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBIVFRQIFBPU1QgcmVxdWVzdHMuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9nZGkvTWFrZWZpbGUuaW4sIGRsbHMvZ2RpL2JpdG1hcC5jLAoJICBkbGxzL2dkaS9icnVzaC5jLCBkbGxzL2dkaS9jbGlwcGluZy5jLCBkbGxzL2dkaS9kYy5jLCBkbGxzL2dkaS9kaWIuYywKCSAgZGxscy9nZGkvZW5obWV0YWZpbGUuYywgZGxscy9nZGkvZm9udC5jLCBkbGxzL2dkaS9nZGlfcHJpdmF0ZS5oLAoJICBkbGxzL2dkaS9nZGlvYmouYywgZGxscy9nZGkvbWV0YWZpbGUuYywgZGxscy9nZGkvcGFsZXR0ZS5jLAoJICBkbGxzL2dkaS9wZW4uYywgZGxscy9nZGkvcmVnaW9uLmM6CglNb3ZlZCBhbGwgZmlsZXMgZnJvbSB0aGUgb2JqZWN0cy8gZGlyZWN0b3J5IHRvIGRsbHMvZ2RpLgoJTWVyZ2VkIHRleHQuYyBpbnRvIGZvbnQuYyBhbmQgZGN2YWx1ZXMuYyBpbnRvIGRjLmMuCgoJKiBkbGxzL2dkaS9NYWtlZmlsZS5pbiwgZGxscy9nZGkvcGFpbnRpbmcuYzoKCU1vdmVkIExpbmVEREEgaW1wbGVtZW50YXRpb24gdG8gZGxscy9nZGkvcGFpbnRpbmcuYy4KCgkqIGRsbHMvd2lubW0vdGVzdHMvd2F2ZS5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJTWFrZSBzdXJlIHdlIHdvbid0IGdldCBhbiBvdmVyZmxvdyBpbiBjaGVja19wb3NpdGlvbigpIGV2ZW4gaWYgd2UgcGxheQoJbG9uZ2VyIHRlc3QgdG9uZXMuCgoJKiBkbGxzL2Rzb3VuZC9jYXB0dXJlLmMsIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmMsCgkgIGRsbHMvZHNvdW5kL2Rzb3VuZF9wcml2YXRlLmgsIGRsbHMvZHNvdW5kL3Rlc3RzL2Rzb3VuZC5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCVNhdmUgZW51bWVyYXRlZCBHVUlEcyBpbiBhIGdsb2JhbCBhcnJheSBzbyB0aGV5IHBlcnNpc3QgYWZ0ZXIKCWVudW1lcmF0aW9uLgoJV2hpdGUgc3BhY2UgY2xlYW51cC4KCUFkZCB0ZXN0cyBmb3Igb3BlbmluZyBkZWZhdWx0IGRldmljZXMuCgoJKiBkbGxzL3NobHdhcGkvc3RyaW5nLmMsIGRsbHMvc2hsd2FwaS90ZXN0cy9zdHJpbmcuYzoKCUZpeGVkIGZsYWdzIGhhbmRsaW5nIGluIFN0cklzSW50bEVxdWFsQS9XIChzcG90dGVkIGJ5IEphbWVzIEhhd2tpbnMpLgoKCSogZGxscy93aW5tbS90ZXN0cy93YXZlLmMsIGRsbHMvd2lubW0vd2lubW0uYzoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglBZGRzICpHZXREZXZDYXBzVyBiYWQgcG9pbnRlciBjaGVjay4KCUFkZHMgd2F2ZU91dEdldERldkNhcHNXIHRlc3QuCgoJKiBkbGxzL3V1aWQvdXVpZC5jLCBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL2FjdGl2c2NwLmgsCgkgIGluY2x1ZGUvYWN0aXZzY3AuaWRsLCBpbmNsdWRlL2Rpc3BleC5oLCBpbmNsdWRlL2Rpc3BleC5pZGw6CglLZXZpbiBLb2x0emF1IDxrZXZpbkBwbG9wLm9yZz4KCUFkZCBpZGwgZmlsZXMgcmVxdWlyZWQgZm9yIHNjcmlwdGluZy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBsb2FkZXIvcHRocmVhZC5jOgoJRW1tYW51ZWwgTWFpbGxhcmQgPGUucnN6QGxpYmVydHlzdXJmLmZyPgoJd2luZV9wdGhyZWFkX2luaXRfdGhyZWFkOiByZXRyaWV2ZSB0aGUgc3RhY2sgaW5mbyBvbiBEYXJ3aW4uCgoJKiBwcm9ncmFtcy93aW5lY2ZnL0VuLnJjLCBwcm9ncmFtcy93aW5lY2ZnL1B0LnJjOgoJTWFyY2VsbyBEdWFydGUgPHdpbmUtZGV2ZWxAYm9sLmNvbS5icj4KCVZpc3VhbCB1cGRhdGVzIHRvIFdpbmVjZmcuCgoJKiBkbGxzL3dpbm1tL3dpbm1tLmMsIGRsbHMvd2lubW0vd2lubW0uc3BlYywgaW5jbHVkZS9tbWRkay5oOgoJRmlsaXAgTmF2YXJhIDx4bmF2YXJhQHZvbG55LmN6PgoJLSBJbXBsZW1lbnRhdGlvbiBvZiBtbVRhc2tDcmVhdGUuIEJhc2VkIG9uIHBhdGNoIGJ5IEVyaWMgUG91ZWNoLgoJLSBGYWxsYmFjayBpbXBsZW1lbnRhdGlvbiBpbiB3YXZlT3V0W1VuXVByZXBhcmVIZWFkZXIuCgoJKiBkb2N1bWVudGF0aW9uL3JlZ2lzdHJ5LnNnbWw6IEl2YW4gTGVvIFB1b3RpIDxwdW90aUBpbndpbmQuaXQ+CglGaXggd2luZS51c2VycmVnIG5hbWUgKHNwb3R0ZWQgYnkgRGF2ZSBXYXNoYnVybikuCgoyMDA0LTA3LTIwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS93aW4uaCwgd2luZG93cy93aW4uYywgd2luZG93cy93aW5wb3MuYzoKCUdldCByaWQgb2Ygd2luZG93IHJlZ2lvbiBvbiB0aGUgY2xpZW50IHNpZGUuCgoJKiBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci9yZWdpb24uYywKCSAgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3RyYWNlLmMsIHNlcnZlci91c2VyLmgsIHNlcnZlci93aW5kb3cuYywKCSAgd2luZG93cy93aW5wb3MuYzoKCU1vdmVkIHRoZSBXaW5kb3dGcm9tUG9pbnQgZnVuY3Rpb25hbGl0eSB0byB0aGUgc2VydmVyIHNvIHRoYXQgd2UgY2FuCglwcm9wZXJseSB0YWtlIGludG8gYWNjb3VudCB0aGUgd2luZG93IHJlZ2lvbi4KCgkqIGRsbHMva2VybmVsL2Zvcm1hdF9tc2cuYzoKCVJld3JvdGUgbG9hZF9tZXNzYWdlQS9XIHRvIGRlYWwgcHJvcGVybHkgd2l0aCBtdWx0aWJ5dGUgY2hhcmFjdGVycy4KCgkqIGRsbHMvd2lubW0vdGVzdHMvd2F2ZS5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJUmV2ZXJ0IG15IHByZXZpb3VzIGluY29ycmVjdCBjaGVja19wb3NpdGlvbigpIHBhdGNoOiBXaW5kb3dzIHJldHVybnMKCWV4YWN0bHkgdGhlIG51bWJlciBvZiBzYW1wbGVzL2J5dGVzIHBsYXllZCAobm8gcGx1cyBvbmUgdGhlcmUpLgoJTW9kaWZ5IGNoZWNrX3Bvc2l0aW9uKCkgdG8gd29yayBvZmYgdGhlIGFjdHVhbCBudW1iZXIgb2YgYnl0ZXMgYXMKCWNhbGN1bGF0ZWQgYnkgd2F2ZV9nZW5lcmF0ZV9sYSgpLiBUaGlzIGZpeGVzIHByb2JsZW1zIGR1ZSB0byByb3VuZGluZwoJd2hlbiBkdXJhdGlvbiBpcyBub3QgYSBuZWF0IGludGVnZXIuCglSb3VuZCB1cCB0aGUgZnJhbWUgZmllbGQgd2hlbiBjaGVja2luZyBUSU1FX1NNUFRFLgoKCSogZGxscy91c2VyL3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMvdXNlci90ZXN0cy9NYWtlZmlsZS5pbiwKCSAgZGxscy91c2VyL3Rlc3RzL3RleHQuYzoKCVphY2ggR29ybWFuIDx6YWNoQGFyY2hldHlwZWF1Y3Rpb24uY29tPgoJQWRkIHRlc3QgdG8gZGVtb25zdHJhdGUgRHJhd1RleHQoKSB3aXRoIERUX0NBTENSRUNUIGluY29ycmVjdCBiZWhhdmlvcgoJaW4gTU1fSElFTkdMSVNIIG1hcHBpbmcgbW9kZS4KCgkqIHByb2dyYW1zL3Byb2dtYW4vRGUucmMsIHByb2dyYW1zL3Byb2dtYW4vcnNyYy5yYzoKCUhlbm5pbmcgR2VyaGFyZHQgPGhlbm5pbmcuZ2VyaGFyZHRAd2ViLmRlPgoJVXBkYXRlZCB0aGUgR2VybWFuIHRyYW5zbGF0aW9uLgoKCSogdG9vbHMvd3JjL3BhcnNlci55OgoJRml4ZWQgaGFuZGxpbmcgb2YgTEFOR1VBR0Ugc3RhdGVtZW50IGZvciBtZXNzYWdlIHRhYmxlcyAoZm91bmQgYnkKCVpoYW5ncm9uZyBIdWFuZykuCgoJKiBkbGxzL3dpbm1tL3Rlc3RzL3dhdmUuYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCU5vdGlmeSB3aGVuIHBvc2l0aW9uIGZvcm1hdCBub3Qgc3VwcG9ydGVkLgoJVGVzdCB0aGF0IHBvc2l0aW9uIGlzIDAgYXQgc3RhcnQuCgoJKiBkbGxzL21zaS9hY3Rpb24uYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUlmIHRoZSBkYXRhIHRhYmxlIGZvciBhIGNhbGxlZCBhY3Rpb24gZG9lcyBub3QgZXhpc3QgKGZvciBleGFtcGxlCglDcmVhdGVGb2xkZXJzIHdhbnRzIGEgQ3JlYXRlRm9sZGVyIHRhYmxlIHRvIHJlYWQgdGhlIGRhdGEgZnJvbSkgZG8gbm90CglmYWlsLCBpbnN0ZWFkIGp1c3QgZG8gbm90IHBlcmZvcm0gdGhlIGFjdGlvbi4KCgkqIHRvb2xzL3dtYy93cml0ZS5jOiBaaGFuZ3JvbmcgSHVhbmcgPGh6aHJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoJQ2FsbCB3aW5lX2NwX3djc3RvbWJzKCkgdG8gcmV0cmlldmUgYWN0dWFsIGxlbmd0aCBvZiBidWZmZXIgYmVmb3JlCgljb252ZXJzaW9uLgoKCSogZGxscy93aW5pbmV0L2h0dHAuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJRml4IHN0cmluZyBsZW5ndGggcmV0dXJuIGZyb20gSHR0cFF1ZXJ5SW5mb0EuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9wcm9jZXNzLmM6IE1pa2UgSGVhcm4gPG1pa2VAbmF2aS5jeD4KCU1ha2UgU1RBUlRVUElORk8ubHBEZXNrdG9wIHRlc3RzIHBhc3Mgb24gTlQuCgoyMDA0LTA3LTE5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy93aW5pbmV0L2Z0cC5jLCBkbGxzL3dpbmluZXQvaHR0cC5jLCBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYywKCSAgZGxscy93aW5pbmV0L2ludGVybmV0LmgsIGRsbHMvd2luaW5ldC91dGlsaXR5LmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglVc2UgcG9pbnRlcnMgaW50ZXJuYWxseSBhbmQgcmVmY291bnQgYWxsIG9iamVjdHMuCgoJKiBkbGxzL21zaS9jb25kLnksIGRsbHMvbXNpL21zaXByaXYuaCwgZGxscy9tc2kvcGFja2FnZS5jOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglTZXQgVmVyc2lvbk1zaSBwcm9wZXJ0eS4KCUFjY2VwdCBhIGRvdCBpbiBhIG51bWJlciB2YWx1ZS4KCgkqIGRsbHMvbXN2Y3J0L2Vudmlyb24uYywgZGxscy9tc3ZjcnQvdGVzdHMvLmN2c2lnbm9yZSwKCSAgZGxscy9tc3ZjcnQvdGVzdHMvTWFrZWZpbGUuaW4sIGRsbHMvbXN2Y3J0L3Rlc3RzL2Vudmlyb24uYzoKCU1pa2UgSGVhcm4gPG1oQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBzb21lIHRlc3QgY2FzZXMgZm9yIF93cHV0ZW52LCBmaXggZGVsZXRpb24gb2Ygbm9uLWV4aXN0ZW50CgllbnZpcm9ubWVudCB2YXJpYWJsZXMsIHJldHVybiAtMSBvbiBlcnJvci4KCgkqIGNvbnRyb2xzL21lbnUuYzogWmFjaCBHb3JtYW4gPHphY2hAYXJjaGV0eXBlYXVjdGlvbi5jb20+CglTZXQgdGhlIHRvcF9wb3B1cCBnbG9iYWwgdmFyaWFibGUgdG8gemVybyBpbiBNRU5VX0V4aXRUcmFja2luZygpLAoJZml4aW5nIE1FTlVfSXNNZW51QWN0aXZlKCkgYW5kIHRoZXJlZm9yZSBWS19GMSBXTV9IRUxQIG1lc3NhZ2UKCWdlbmVyYXRpb24uCgoJKiBkbGxzL3dpbm1tL3dpbmVhbHNhL2F1ZGlvLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQ2hlY2sgdGhhdCB3ZSBhcmUgc3RpbGwgcGxheWluZyBpbiB3b2RVcGRhdGVQbGF5ZWRUb3RhbCgpLiBJZiBub3QsCgl0aGVuIHRoZSB2YWx1ZSByZXR1cm5lZCBieSBzbmRfcGNtX2RlbGF5KCkgaXMgbm90IHVzYWJsZSBzbyBhc3N1bWUKCWRlbGF5PTAuIFRoaXMgZ2V0cyB0aGUgd2lubW0gdGVzdCB0byBjb21wbGV0ZSBpbiBpbnRlcmFjdGl2ZSBtb2RlIHdpdGgKCXdpbmVhbHNhLgoKCSogZGxscy9kc291bmQvdGVzdHMvZHMzZC5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJTWFrZSB0aGUgbGlzdGVuZXIvc291bmQgcG9zaXRpb24gdXBkYXRlIGR1cmF0aW9uIGFuZCBUSU1FX1NMSUNFCglpbmRlcGVuZGVudC4KCVNldCB0aGUgc291bmQgYW5kIGxpc3RlbmVyIHZlbG9jaXR5IGFuZCBpbmNyZWFzZSB0aGUgc291bmQgc291cmNlCgl2ZWxvY2l0eSBzbyB3ZSBtYXkgZ2V0IHNvbWUgZG9wcGxlciBlZmZlY3QuCglBZGRlZCBzb21lIHRyYWNlcyBzbyBvbmUgY2FuIG1vbml0b3IgdGhlIGxpc3RlbmVyL3NvdW5kIHBvc2l0aW9ucyB3aXRoCglXSU5FVEVTVF9ERUJVRz0zLgoKCSogZGxscy93aW5tbS90ZXN0cy93YXZlLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglJbiBpbnRlcmFjdGl2ZSBtb2RlLCBjaGVjayB0aGF0IHRoZSB0b25lIGR1cmF0aW9uIGlzIHdpdGhpbiAxMCUgb2YgdGhlCglleHBlY3RlZCB2YWx1ZS4KCgkqIGRsbHMvbXNpL21zaS5jLCBkbGxzL21zaS9tc2kuc3BlYywgaW5jbHVkZS9tc2kuaCwKCSAgcHJvZ3JhbXMvbXNpZXhlYy9tc2lleGVjLmM6CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglJbXBsZW1lbnQgdGhlIHJlcGFpciBtZWNoYW5pc20gaW4gbXNpZXhlYywgYW5kIHN0dWIgaXQgb3V0IGluCgltc2kuZGxsLgoKCSogZGxscy93aW5pbmV0L2h0dHAuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJSG9ub3VyIElOVEVSTkVUX0ZMQUdfTk9fQ09PS0lFUy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjOiBFbW1hbnVlbCBNYWlsbGFyZCA8ZS5yc3pAbGliZXJ0eXN1cmYuZnI+CglCdWlsZCB3aW5lLXB0aHJlYWQgb24gRGFyd2luLgoKCSogZGxscy93aW5pbmV0L2h0dHAuYywgZGxscy93aW5pbmV0L2ludGVybmV0Lmg6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglGaXggSHR0cFF1ZXJ5SW5mbyhIVFRQX1FVRVJZX1JBV19IRUFERVJTKikgc28gdGhhdCBpdCByZXR1cm5zIHRoZQoJYWN0dWFsIGhlYWRlcnMgcmVjZWl2ZWQsIG5vdCBqdXN0IHJlY29uc3RpdHV0aW5nIHRoZW0gZnJvbSBwcm9jZXNzZWQKCWRhdGEuCgoJKiBkbGxzL21wci9tcHIucmMsIGRsbHMvbXByL21wcl9QdC5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfUHQucmMsCgkgIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnJjLCBkbGxzL3NobHdhcGkvc2hsd2FwaV9QdC5yYywKCSAgcHJvZ3JhbXMvcmVnZWRpdC9QdC5yYywgcHJvZ3JhbXMvd2luZWNmZy9QdC5yYzoKCU1hcmNlbG8gRHVhcnRlIDx3aW5lLWRldmVsQGJvbC5jb20uYnI+CglVcGRhdGUgbG9jYWxpemF0aW9uIGZvciBQb3J0dWd1ZXNlIGxhbmd1YWdlLgoKCSogZGxscy93aW5tbS90ZXN0cy93YXZlLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglGaXggdGhlIGNoZWNrX3Bvc2l0aW9uKCkgdGVzdDogb24gV2luZG93cyB3YXZlT3V0R2V0UG9zaXRpb24oKSByZXR1cm5zCgl0aGUgbnVtYmVyIG9mIHNhbXBsZXMgcGxheWVkIHBsdXMgb25lIChhbHNvIG9uZSBleHRyYSBzYW1wbGUgZm9yIHRoZQoJYnl0ZSBjb3VudCkuCgoJKiBkbGxzL3dpbm1tL3dpbmVhbHNhL2F1ZGlvLmMsIGRsbHMvd2lubW0vd2luZWFydHMvYXVkaW8uYywKCSAgZGxscy93aW5tbS93aW5lYXVkaW9pby9hdWRpby5jLCBkbGxzL3dpbm1tL3dpbmVqYWNrL2F1ZGlvLmMsCgkgIGRsbHMvd2lubW0vd2luZW5hcy9hdWRpby5jLCBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglVc2Ugcm91bmQoKSBpbnN0ZWFkIG9mIGNlaWwoKSBpbiB3b2RHZXRQb3NpdGlvbihUSU1FX1NNUFRFKS4KCUZpeGVzIHRoZSBjb3JyZXNwb25kaW5nIHdpbm1tIGNvbmZvcm1hbmNlIHRlc3QuCgoJKiBkbGxzL2Rzb3VuZC9kc291bmQuYywgZGxscy9kc291bmQvZHNvdW5kX21haW4uYywKCSAgZGxscy9kc291bmQvZHNvdW5kX3ByaXZhdGUuaCwgZGxscy9kc291bmQvdGVzdHMvZHNvdW5kLmM6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJRG8gaW5pdGlhbGl6YXRpb24gdG8gbWF0Y2ggd2luZG93cyBiZWhhdmlvciAod2l0aCB0ZXN0KS4KCgkqIHByb2dyYW1zL21zaWV4ZWMvbXNpZXhlYy5jOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJQ2xlYW51cCBvZiB0aGUgcHJvcGVydGllcyBsYXN0IHNwYWNlIHJlbW92YWwsIHNpbmNlIGl0IGNhbiBiZSB1c2VkIG5vdAoJb25seSB3aXRoIEluc3RhbGwuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgcHJvZ3JhbXMvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL21zaWV4ZWMvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvbXNpZXhlYy9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvbXNpZXhlYy9tc2lleGVjLmMsIHByb2dyYW1zL21zaWV4ZWMvbXNpZXhlYy5oOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJRmlyc3QgZHJhZnQgZm9yIGEgbXNpZXhlYy5leGUgcmVwbGFjZW1lbnQuCgoJKiB0b29scy93aW5laW5zdGFsbDogUGF1bCBWcmllbnMgPHB2cmllbnNAeHM0YWxsLm5sPgoJQ3JlYXRlIH4vLndpbmUgaWYgbm90IHByZXNlbnQgZHVyaW5nIHdpbmVpbnN0YWxsLgoKCSogZGxscy9jb21tZGxnL3ByaW50ZGxnLmM6IEphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJQmV0dGVyIGZpeCBmb3IgY29sbGF0ZSBpY29uIGJlaGF2aW9yLgoKCSogZGxscy9tc2kvYWN0aW9uLmMsIGRsbHMvbXNpL21zaXF1ZXJ5LmMsIGRsbHMvbXNpL3NxbC55OgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IHRoZSByZXR1cm4gY29kZSBvZiBNc2lEYXRhYmFzZU9wZW5WaWV3LgoKCSogZGxscy9kc291bmQvdGVzdHMvZHNvdW5kLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglGaXhlcyB0aGUgcmlnaHQgYnVncyBhbmQga2VlcHMgaW50ZW50IG9mIHRlc3QuCglBZGRzIG1vcmUgcmVmZXJlbmNlIGNvdW50IGNoZWNrcy4KCgkqIHByb2dyYW1zL3dpbmVtaW5lL0RlLnJjLCBwcm9ncmFtcy93aW5lbWluZS9yc3JjLnJjOgoJSGVubmluZyBHZXJoYXJkdCA8aGVubmluZy5nZXJoYXJkdEB3ZWIuZGU+CglBZGRlZCBhIEdlcm1hbiB0cmFuc2xhdGlvbiBmb3IgV2luZU1pbmUuCgoJKiBwcm9ncmFtcy9yZWdlZGl0L0RlLnJjOgoJTWljaGFlbCBKdW5nIDxtanVuZ0B2bHNpLmluZm9ybWF0aWsudHUtZGFybXN0YWR0LmRlPgoJQWRkZWQgc29tZSBHZXJtYW4gdHJhbnNsYXRpb25zLgoKCSogaW5jbHVkZS93aW5udC5oOiBFbW1hbnVlbCBNYWlsbGFyZCA8ZS5yc3pAbGliZXJ0eXN1cmYuZnI+CglSZW1vdmUgaW1wbGVtZW50YXRpb24gb2YgTnRDdXJyZW50VGViIGZvciBwcGMgaG9zdC4KCgkqIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWM6CglTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCUZvcndhcmQgc2hsd2FwaS40NTkvNDYwIChTSEV4cGFuZEVudmlyb25tZW50U3RyaW5nc0EvVykgdG8KCWtlcm5lbDMyLkV4cGFuZEVudmlyb25tZW50U3RyaW5nc0EvVy4KCgkqIGRsbHMvd2luaW5ldC9jb29raWUuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJRml4IHNpemUgcmV0dXJuIGZyb20gSW50ZXJuZXRHZXRDb29raWVXLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6IEZpbGlwIE5hdmFyYSA8eG5hdmFyYUB2b2xueS5jej4KCVVzZSBzeXN0ZW0gbWV0cmljcyB2YWx1ZXMgaW4gVE9PTEJBUl9EcmF3UGF0dGVybiBpbnN0ZWFkIG9mIGhhcmRjb2RlZAoJdmFsdWVzLgoKMjAwNC0wNy0xNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIEFOTk9VTkNFLCBDaGFuZ2VMb2csIFZFUlNJT04sIGNvbmZpZ3VyZTogUmVsZWFzZSAyMDA0MDcxNi4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KMjAwNC0wNy0xNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWM6CglJbXBsZW1lbnRlZCBHZXRVSVZlcnNpb24gKGJhc2VkIG9uIGEgcGF0Y2ggYnkgU3RlZmFuIExlaWNodGVyKS4KCgkqIGRsbHMvZHNvdW5kL3Rlc3RzL2Rzb3VuZC5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJRG9uJ3QgdHJ5IHRvIGNyZWF0ZSBhIElEaXJlY3RTb3VuZDNEQnVmZmVyLCBwYXJ0bHkgdG8ga2VlcCB0aGlzIHRlc3QKCXNpbXBsZSBhbmQgcGFydGx5IGJlY2F1c2UgaXQncyBnb2luZyB0byBmYWlsIHNpbmNlIHdlIGRpZCBub3QgcmVxdWVzdAoJRFNCQ0FQU19DVFJMM0QuIEZpeGVzIGEgY3Jhc2ggb24gV2luZG93cy4KCURvbid0IHJlcXVlc3QgdW5uZWVkZWQgY2Fwcy4KCgkqIGRsbHMva2VybmVsL2xvY2FsZS5jOiBTaGFjaGFyIFNoZW1lc2ggPHdpbmUtcGF0Y2hlc0BzaGVtZXNoLmJpej4KCVN5c3RlbSBkZWZhdWx0IGxvY2FsZSBpbiBXaW5kb3dzIGRldGVybWluZXMgdGhlIEFOU0kgZW5jb2RpbmcKCShMQ19DVFlQRSBvbiBVbml4KS4KCgkqIGRsbHMvY29tbWRsZy9wcmludGRsZy5jOiBKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCUZpeGVkIGNvbGxhdGUgaWNvbiBiZWhhdmlvci4KCgkqIGRsbHMvZHNvdW5kL3Rlc3RzL2Rzb3VuZC5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJR2V0IGFuZCBwcmludCB0aGUgRGlyZWN0U291bmQgcHJpbWFyeSBidWZmZXIgdm9sdW1lLgoKCSogZGxscy9kc291bmQvdGVzdHMvZHMzZC5jLCBkbGxzL2Rzb3VuZC90ZXN0cy9kc291bmRfdGVzdC5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUtlZXAgdHJhY2sgb2YgaG93IG11Y2ggaGFzIGJlZW4gcGxheWVkIGFuZCBnZXQgcmlkIG9mIGxhc3RfcG9zLiBUaGlzCglmaXhlcyBhIGJ1ZyB3aGVyZSBidWZmZXJfc2VydmljZSgpIHdvdWxkIG5vdCBkZXRlY3QgdGhhdCBldmVyeXRoaW5nCgloYWQgYmVlbiBwbGF5ZWQuCglDaGVjayB0aGF0IHRoZSBhY3R1YWwgc291bmQgZHVyYXRpb24gd2FzIHdpdGhpbiAxMCUgb2YgdGhlIGV4cGVjdGVkCgl2YWx1ZS4KCU1ha2UgQlVGRkVSX0xFTiBhbmQgVElNRV9TTElDRSBpbmRlcGVuZGVudCwgbWFrZSBzdXJlIFRJTUVfU0xJQ0UgZG9lcwoJbm90IGRpdmlkZSBCVUZGRVJfTEVOIHRvIHNwaWNlIHRoaW5ncyB1cCBhIGJpdC4KCgkqIGRsbHMvdXNlci90ZXN0cy9kaWFsb2cuYzoKCUtyaXNobmEgTXVydGh5IDxLcmlzaG5hLk11cnRoeUBndXB0YXdvcmxkd2lkZS5jb20+CglBZGRlZCByZWdyZXNzaW9uIHRlc3QgZm9yIFdNX05FWFRETEdDVEwgYW5kIGRlZmF1bHQgYnV0dG9uIElECgliZWhhdmlvci4KCgkqIG1pc2MvcmVnaXN0cnkuYzogS2V2aW4gS29sdHphdSA8a2V2aW5AcGxvcC5vcmc+CglQcmV2ZW50IGdhcmJhZ2UgYmVpbmcgcGFzc2VkIGZvciB3aW5kb3dzIGRpcmVjdG9yeS4KCgkqIGRsbHMvZHNvdW5kL3Rlc3RzL2Rzb3VuZC5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQ2FsbCBJRGlyZWN0U291bmQ6OkluaXRpYWxpemUoKSBhcyBwZXIgTVNETiBiZWZvcmUgdXNpbmcgdGhlCglEaXJlY3RTb3VuZCBvYmplY3QuIEZpeGVzIGEgY3Jhc2ggb24gV2luZG93cy4KCgkqIGRsbHMvZHNvdW5kL3Rlc3RzL2RzM2QuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCU9uIFdpbmRvd3MgR2V0UGFuKCkgbWF5IG5vdCByZXR1cm4gdGhlIHZhbHVlIHRoYXQgd2FzIGp1c3Qgc2V0IHdpdGgKCVNldFBhbigpLgoKCSogZGxscy9tc2h0bWwvbWFpbi5jLCBkbGxzL21zaHRtbC9tc2h0bWwuc3BlYzoKCVN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJQWRkZWQgc3R1YnMgZm9yIERsbEluc3RhbGwgYW5kIERsbFJlZ2lzdGVyU2VydmVyLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6IEZpbGlwIE5hdmFyYSA8eG5hdmFyYUB2b2xueS5jej4KCU1ha2UgdGhlIHBhdHRlcm4gZHJhd2luZyBpbiBUT09MQkFSX0RyYXdQYXR0ZXJuIGxvb2sgYmV0dGVyLgoKCSogZGxscy9tc3JsZTMyL21zcmxlMzIuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCBsdmFsdWUgY2FzdHMgZm9yIG5ldyBjb21waWxlci4KCgkqIGRsbHMvYWR2YXBpMzIvY3J5cHQuYzoKCUZpeGVkIHNvbWUgZHVwbGljYXRlIENSWVBUX0ZyZWUgY2FsbHMgKHNwb3R0ZWQgYnkgTWljaGFlbCBKdW5nKS4KCgkqIGluY2x1ZGUvd2luY3J5cHQuaDogTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJQWRkZWQgUFJPVl9FTlVNQUxHU1tfRVhdIHN0cnVjdHMgYW5kIHR5cGVkZWZzLgoJQWRkZWQgc29tZSBkZWZpbmVzLgoKCSogZGxscy9tc2kvYWN0aW9uLmMsIGRsbHMvd2luaW5ldC9odHRwLmMsIGluY2x1ZGUvbW1zeXN0ZW0uaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQXNzb3J0ZWQgc3BlbGxpbmcgZml4ZXMuCgoJKiB0b29scy9tYWtlX2N0ZXN0cywgdG9vbHMvd2luYXBpL21zdmNtYWtlcjoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglGaXggbXN2Y21ha2VyIHNvIHRoZSBnZW5lcmF0ZWQgdGVzdGxpc3QuYyBmaWxlcyBpbmNsdWRlIHN0ZGFyZy5oLgoJQWRkIGNvbW1lbnRzIHBvaW50aW5nIG91dCB0aGUgcmVsYXRpb24gYmV0d2VlbiBtc3ZjbWFrZXIgYW5kCgltYWtlX2N0ZXN0cy4KCgkqIGRsbHMvY29tbWRsZy9wcmludGRsZy5jOiBKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCUNoZWNrIGZvciBlbXB0eSBQcmludGVyTmFtZSBpbiBQUklOVERMR19XTUNvbW1hbmRXLgoKCSogZGxscy9zaGVsbDMyL3NobHZpZXcuYzogTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCURpc3Rpbmd1aXNoIGJldHdlZW4gT3BlbiBhbmQgRXhwbG9yZSBjb21tYW5kcy4KCUV4ZWN1dGUgaXRlbXMgYnkgZGVmYXVsdC4KCgkqIGRsbHMva2VybmVsL3Byb2Nlc3MuYywgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLAoJICBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvdHJhY2UuYzoKCVBhc3MgdGhlIGVudmlyb25tZW50IGZvciBhIGNoaWxkIHByb2Nlc3MgdGhyb3VnaCB0aGUgc2VydmVyIGluc3RlYWQgb2YKCXJlbHlpbmcgb24gdGhlIFVuaXggZW52aXJvbm1lbnQuCgoJKiB0b29scy93aW5lLmluZjoKCVNwZWNpZnkgdGhlIFBBVEggdmFyaWFibGUgaW4gdXBwZXJjYXNlIHRvIGF2b2lkIGdldHRpbmcgdHdvIGZsYXZvcnMgb2YKCVBBVEggd2hlbiBjb252ZXJ0aW5nIHRoZSBVbml4IGVudmlyb25tZW50LgoKCSogZGxscy9tc3ZjcnQvcHJvY2Vzcy5jOiBJbXBsZW1lbnRlZCBfc3Bhd25sZSBhbmQgX3NwYXdubHBlLgoKCSogdG9vbHMvd2luZXdyYXBwZXI6CglJbnZva2Ugd2luZXByZWZpeGNyZWF0ZSBpZiB0aGUgLndpbmUgZGlyZWN0b3J5IGRvZXMgbm90IGV4aXN0LgoKCSogZGxscy9rZXJuZWwvcHJvZmlsZS5jOgoJU3VwcG9ydCBmb3IgbGFyZ2UgcHJvZmlsZSB2YWx1ZXMgKGJhc2VkIG9uIGEgcGF0Y2ggYnkgUm9iZXJ0CglTaGVhcm1hbikuCglGaXhlZCBQUk9GSUxFX0ZsdXNoRmlsZSB0byBjb3JyZWN0bHkgdHJ1bmNhdGUgdGhlIGZpbGUgYmVmb3JlIHNhdmluZwoJaXQuCgoJKiBwcm9ncmFtcy93aW5lZGJnL3dpbmVkYmcuYzogUGllcnJlIGQnSGVyYmVtb250IDxzdGVnZWZpbkBmcmVlLmZyPgoJRGVmaW5lIHRoZSBiYWNrZW5kX2NwdSByZWdhcmRpbmcgdGhlIGhvc3QgcHJvY2Vzc29yLgoKCSogZGxscy9zaGx3YXBpL29yZGluYWwuYywgZGxscy9zaGx3YXBpL3Rlc3RzL29yZGluYWwuYzoKCVN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJUmVtb3ZlZCB0aGUgY3Jvc3NjYWxscyAodW5pY29kZSB0byBhc2NpaSkgZnJvbSBHZXRBY2NlcHRMYW5ndWFnZXNXLgoJUmVtb3ZlZCB0b2RvX3dpbmUgZnJvbSBHZXRBY2NlcHRMYW5ndWFnZXNBIHRlc3RzLgoKCSogZGxscy9jb21jdGwzMi90YWIuYzogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCURvbid0IGNyYXNoIG9uIE5VTEwgdGFiIHRleHQuCgoyMDA0LTA3LTE1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogcHJvZ3JhbXMvd2luZWNvbnNvbGUvY3Vyc2VzLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIG9uZSBsdmFsdWUgY2FzdGVkIGFzc2lnbm1lbnQgZm9yIHRoZSBuZXcgY29tcGlsZXIuCgoJKiBkbGxzL3NobHdhcGkvbXNnYm94LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRG8gbm90IGFzc2lnbiB0byBjYXN0ZWQgdmFsdWVzLgoKCSogZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvcnBjLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggYSBmZXcgc2VyaW91cyByYWNlIGNvbmRpdGlvbnMgaW4gdGhlIE9MRSBvYmplY3QgcGlwZSBzZXJ2ZXIuCgoJKiBkbGxzL2tlcm5lbC9wcm9jZXNzLmMsIGRsbHMvbnRkbGwvbG9hZGVyLmMsIGRsbHMvbnRkbGwvbG9hZG9yZGVyLmMsCgkgIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy9udGRsbC9udGRsbF9taXNjLmg6CglTZXQgdGhlIHN5c3RlbSBkaXJlY3RvcnkgaW4gbnRkbGwgYXMgc29vbiBhcyB3ZSBoYXZlIGRldGVybWluZWQgaXQuCgoJKiBkbGxzL3dpbjMycy93MzJza2VybmVsLmM6CglEb24ndCBnZXQgc3lzdGVtIGRpcmVjdG9yeSBmcm9tIHRoZSBlbnZpcm9ubWVudCwgdXNlCglHZXRTeXN0ZW1EaXJlY3RvcnkgaW5zdGVhZC4KCgkqIHNlcnZlci9uYW1lZF9waXBlLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBhIGRvdWJsZSBmcmVlIGluIHRoZSBuYW1lZCBwaXBlIGNvZGUuCgoJKiBkbGxzL2FkdmFwaTMyL2NyeXB0LmM6IE1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCVVzZSBSZWdRdWVyeVZhbHVlRXhBIGluc3RlYWQgb2YgUmVnUXVlcnlWYWx1ZUEgaW4KCUNyeXB0RW51bVByb3ZpZGVyVHlwZXMuCgoJKiB0b29scy93aW5lYnVpbGQvc3BlYzMyLmM6IFBpZXJyZSBkJ0hlcmJlbW9udCA8c3RlZ2VmaW5AZnJlZS5mcj4KCURhcndpbi9NYWMgT1MgWCBXZWFrIGltcG9ydCB3b3JrYXJvdW5kLgoKCSogdG9vbHMvd2luZWJ1aWxkL2ltcG9ydC5jOiBQaWVycmUgZCdIZXJiZW1vbnQgPHN0ZWdlZmluQGZyZWUuZnI+CgktIEJlIG1vcmUgYWNjdXJhdGUgb24gRGFyd2luIHN0YWNrIHNpemUuCgktIERlbGF5IGltcG9ydCBmaXggb24gUG93ZXJQQyBob3N0cy4KCgkqIGRsbHMvd2luaW5ldC9odHRwLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gQ2hhbmdlIHRoZSB3YXkgdGhhdCB0aGUgcmVzcG9uc2UgaGVhZGVycyBhcmUgcmVjb25zdHJ1Y3RlZCB0byByZWR1Y2UKCSAgdGhlIGNoYW5jZSBvZiBtZW1vcnkgYmVpbmcgaW5jb3JyZWN0bHkgYWxsb2NhdGVkLgoJLSBSZXR1cm4gdGhlIGNvcnJlY3QgZXJyb3Igd2hlbiBhIGhlYWRlciBpcyBub3QgZm91bmQuCgktIHJlbW92ZSBhbGwgdGhlIHJlc3BvbnNlIGhlYWRlcnMgYmVmb3JlIHJlY2VpdmluZyBuZXcgb25lcyBzbyB0aGF0IHdlCgkgIGRvbid0IG1lcmdlIGhlYWRlcnMgZnJvbSB0d28gcmVzcG9uc2VzLgoJLSBBZGQgZXh0cmEgc3RhbmRhcmQgZmllbGRzLgoJLSBTcGxpdCB0aGUgc3RhdHVzIGxpbmUgaW50byBodHRwIHZlcnNpb24sIHN0YXR1cyBjb2RlIGFuZCBzdGF0dXMgdGV4dAoJICBhbmQgc3RvcmUgdGhvc2UgaW4gdGhlIHJlc3BvbnNlIGRhdGEsIHdpdGhvdXQgdXNpbmcgdXNlIGEgZmFrZQoJICBmaWVsZC4KCjIwMDQtMDctMTQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jOgoJS3Jpc2huYSBNdXJ0aHkgPEtyaXNobmEuTXVydGh5QGd1cHRhd29ybGR3aWRlLmNvbT4KCUFkZCB0aGUgc2VsZWN0ZWQgZXh0ZW5zaW9uIGZyb20gZmlsZSB0eXBlIGZpbHRlciBpZiBmaWxlIG5hbWUgZG9lcyBub3QKCWNvbnRhaW4gdGhlIGZpbGUgZXh0ZW5zaW9uLgoKCSogZGxscy91c2VyL2RkZS9jbGllbnQuYzogRXJpYyBGcmlhcyA8ZWZyaWFzQHN5bmNhZC5jb20+CglGaXhlZCBtZW1vcnkgYWxsb2NhdGlvbiBidWcuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBbiBTTkRDVExfRFNQX1NFVERVUExFWCBmYWlsdXJlIHNob3VsZCBiZSBhIFdBUk4oKSwgbm90IGFuIEVSUigpLAoJc2luY2UgdGhlIE9TUyBzcGVjaWZpY2F0aW9ucyBzYXkgd2UgaGF2ZSB0byBjYWxsIGl0IGJlZm9yZSBrbm93aW5nIGlmCgl0aGUgc291bmQgY2FyZCBpcyBmdWxsLWR1cGxleCBjYXBhYmxlLgoKCSogaW5jbHVkZS93aW5yZWcuaDogTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJQWRkZWQgUmVnT3BlbkN1cnJlbnRVc2VyIHByb3RvdHlwZS4KCgkqIGRsbHMvbnRkbGwvdmVyc2lvbi5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJUmVwb3J0IHdpbjJrIHNlcnZpY2UgcGFjayA0IGluc3RlYWQgb2YgMy4KCgkqIGRsbHMvbXNpL3BhY2thZ2UuYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCB0aGUgZnVuY3Rpb25hbGl0eSB0aGF0IGFsbG93cyBvbmUgdG8gY2FsbCBNc2lPcGVuUGFja2FnZQoJd2l0aCAjbm5uIHdoZXJlIG5ubiBpcyBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIGhhbmRsZSB0byBhbiBvcGVuCglkYXRhYmFzZS4KCgkqIHRvb2xzL3dpbmUuaW5mOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJVW5jb21tZW50IGltcGxlbWVudGVkIGluIFdpbmUgbXN2aWRjMzIgKE1TVkMvQ1JBTSkgY29kZWMuCgoJKiBkbGxzL3dpbm1tL21jaWF2aS9tY2lhdmkuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2UgaXQgcG9zc2libGUgdG8gb3BlbiByZWFkLW9ubHkgQVZJIGZpbGVzIGZvciBhIHBsYXliYWNrLgoKCSogZGxscy9tc2kvdmVyc2lvbi5yYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCVVwZGF0ZSB0aGUgTVNJIHZlcnNpb24gdG8gYmUgdGhlIHNhbWUgYXMgb24gd2luMmsuCgoJKiBkbGxzL2dkaS9mcmVldHlwZS5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJRml4IGZvbnQgcmVwbGFjZW1lbnRzIHRvIHdvcmsgd2l0aCBiaXRtYXAgZm9udHMuCglFbnVtZXJhdGUgU3lzdGVtLCBUZXJtaW5hbCwgRml4ZWRTeXMgaW4gdGhhdCBvcmRlci4KCgkqIHRvb2xzL3dpbmVidWlsZC9pbXBvcnQuYzogUGllcnJlIGQnSGVyYmVtb250IDxzdGVnZWZpbkBmcmVlLmZyPgoJRGVsYXllZCBpbXBvcnQgZml4IGZvciBEYXJ3aW4gYW5kIFBvd2VyUEMgSG9zdC4KCgkqIGRsbHMvdXNlci90ZXN0cy9jbGFzcy5jLCBkbGxzL3VzZXIvdGVzdHMvcmVzb3VyY2UucmM6CglTYW1pIEFhcmlvIDxzYW1pLmFhcmlvQHN1cmZldS5maT4KCUFkZGVkIHRlc3RzIGZvciByZWdpc3RlcmluZyBhIGRpYWxvZyBib3ggY3JlYXRlZCBieSB1c2luZyB0aGUgQ0xBU1MKCWRpcmVjdGl2ZSBpbiBhIHJlc291cmNlIGZpbGUsIHRoZW4gY3JlYXRpbmcgdGhlIGRpYWxvZyB1c2luZwoJQ3JlYXRlRGlhbG9nUGFyYW0uCgoJKiBkbGxzL3VzZXIvY29udHJvbHMuaCwgZGxscy91c2VyL2RpYWxvZzE2LmMsIHdpbmRvd3MvZGVmZGxnLmMsCgkgIHdpbmRvd3MvZGlhbG9nLmM6CglBbGxvY2F0ZSB0aGUgZGlhbG9nIGluZm8gaW4gRElBTE9HX0NyZWF0ZUluZGlyZWN0IGlmIHRoaXMgd2Fzbid0CglhbHJlYWR5IGRvbmUgYnkgdGhlIGRpYWxvZyBwcm9jZWR1cmUuCgoJKiBkbGxzL2RiZ2hlbHAvc3RhYnMuYzogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCVByZXZlbnQgdGhlIGRlYnVnIGJ1ZmZlciBmcm9tIG92ZXJmbG93aW5nIG9uIGxvbmcgc3RhYnMuCgoJKiBkbGxzL2RiZ2hlbHAvc3RhYnMuYzogRml4ZWQgaGFuZGxpbmcgb2YgaW5jbHVkZXMgc3RhY2suCgoJKiBkbGxzL2NvbW1kbGcvTWFrZWZpbGUuaW4sIGRsbHMvY29tbWRsZy9maWxlZGxnLmMsCgkgIGRsbHMvY29tbWRsZy9maWxlZGxnMTYuYywgZGxscy9jb21tZGxnL2ZpbGVkbGczMS5jLAoJICBkbGxzL2NvbW1kbGcvZmlsZWRsZzMxLmg6CglHZSB2YW4gR2VsZG9ycCA8Z3ZnQHJlYWN0b3MuY29tPgoJRml4IDE2LzMyIGJpdCBzZXBhcmF0aW9uLgoKMjAwNC0wNy0xMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvb2xlZGxnL29sZWRsZ19EZS5yYywgZGxscy9zZXJpYWx1aS9EZS5yYywKCSAgZGxscy93aW5tbS93aW5tbV9EZS5yYywgZGxscy93aW5tbS93aW5tbV9yZXMucmMsCgkgIHByb2dyYW1zL2NtZGxndHN0L0RlLnJjLCBwcm9ncmFtcy9jbWRsZ3RzdC9jbWRsZ3IucmMsCgkgIHByb2dyYW1zL3N0YXJ0L0RlLnJjLCBwcm9ncmFtcy9zdGFydC9yc3JjLnJjLCBwcm9ncmFtcy92aWV3L0RlLnJjLAoJICBwcm9ncmFtcy92aWV3L3ZpZXdyYy5yYzoKCUhlbm5pbmcgR2VyaGFyZHQgPGhlbm5pbmcuZ2VyaGFyZHRAd2ViLmRlPgoJTW9yZSBHZXJtYW4gdHJhbnNsYXRpb25zLgoKCSogZGxscy9kc291bmQvYnVmZmVyLmMsIGRsbHMvZHNvdW5kL2Rzb3VuZC5jLAoJICBkbGxzL2Rzb3VuZC9kc291bmRfcHJpdmF0ZS5oLCBkbGxzL2Rzb3VuZC9wcmltYXJ5LmMsCgkgIGRsbHMvZHNvdW5kL3Byb3BzZXQuYywgZGxscy9kc291bmQvc291bmQzZC5jLAoJICBkbGxzL2Rzb3VuZC90ZXN0cy9kc291bmQuYzoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglSZW1vdmUgRGlyZWN0U291bmQgcmVmZXJlbmNlIGNvdW50cyBieSBidWZmZXJzIGFuZCBhZGQgRGVzdHJveQoJZnVuY3Rpb25zIHRvIGJ1ZmZlciBjb21wb25lbnRzIGFuZCBEaXJlY3RTb3VuZCB0byBhbGxvdyBwcm9wZXIKCWRlc3RydWN0aW9uIGV2ZW4gd2l0aCBvdXRzdGFuZGluZyByZWZlcmVuY2VzLgoJUmVtb3ZlIHRyYWlsaW5nIHdoaXRlIHNwYWNlLgoJQWRkIHRlc3RzIGZvciBwcm9wZXIgcmVsZWFzZSBldmVuIHdpdGggYWN0aXZlIGJ1ZmZlcnMuCgoJKiBkbGxzL3dpbmluZXQvaHR0cC5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglBY2NlcHQgaGVhZGVycyB3aXRob3V0IFxyXG4gZW5kaW5nIGluIEh0dHBBZGRSZXF1ZXN0SGVhZGVycy4KCgkqIGRsbHMvYWR2YXBpMzIvY3J5cHQuYywgZGxscy9hZHZhcGkzMi9jcnlwdC5oOgoJTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJUmVmZXJlbmNlIGNvdW50aW5nIGZvciBDUllQVFBST1Ygb2JqZWN0cy4KCUltcGxlbWVudGVkIENyeXB0Q29udGV4dEFkZFJlZi4KCgkqIGRsbHMva2VybmVsL3ZvbHVtZS5jOiBSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglJbiBHZXRWb2x1bWVJbmZvcm1hdGlvblcgaGFuZGxlIHRoZSBjYXNlIHdoZW4gdGhlcmUgYXJlIG5vIHBlcm1pc3Npb25zCglhY2Nlc3NpbmcgdGhlIGRldmljZSB0aGUgc2FtZSB3YXkgYXMgd2hlbiBubyBkZXZpY2UgaXMgZm91bmQuCgoJKiBkbGxzL2FkdmFwaTMyL3JlZ2lzdHJ5LmM6IEphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJQWRkZWQgYW5kIGNsZWFuZWQgQVBJIGRvY3MuCgoJKiBkbGxzL2dkaS9kcml2ZXIuYywgZGxscy91c2VyL3VzZXJfbWFpbi5jOgoJQWxsb3cgc3BlY2lmeWluZyBtdWx0aXBsZSBncmFwaGljcyBkcml2ZXJzIGFuZCB1c2UgdGhlIGZpcnN0IG9uZSB0aGF0Cglsb2FkcyBzdWNjZXNzZnVsbHkuCgoJKiBkbGxzL3gxMWRydi9iaXRtYXAuYywgZGxscy94MTFkcnYvaW5pdC5jLCBkbGxzL3gxMWRydi94MTFkcnYuaCwKCSAgZGxscy94MTFkcnYveDExZHJ2X21haW4uYzoKCU1ha2UgeDExZHJ2IGZhaWwgdG8gbG9hZCB3aGVuIGl0IGNhbid0IG9wZW4gdGhlIGRpc3BsYXksIGluc3RlYWQgb2YKCWtpbGxpbmcgdGhlIHdob2xlIHByb2Nlc3MuCgoJKiB0b29scy93aW5lZHVtcC9uZS5jOgoJQWRkZWQgc3VwcG9ydCBmb3IgZHVtcGluZyBleHBvcnRlZCBlbnRyeSBwb2ludHMgaW4gTkUgbW9kdWxlcy4KCgkqIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvdHdhaW4vLmN2c2lnbm9yZSwgZGxscy90d2Fpbi9NYWtlZmlsZS5pbiwKCSAgZGxscy90d2Fpbi90d2Fpbi5zcGVjLCBkbGxzL3R3YWluL3R3YWluMTZfbWFpbi5jOgoJTWlrZSBIZWFybiA8bWhAY29kZXdlYXZlcnMuY29tPgoJQWRkIGEgMTYgYml0IHBhaXIgRExMIGZvciBUV0FJTi4KCjIwMDQtMDctMTIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb250cm9scy9jb21iby5jLCB3aW5kb3dzL25vbmNsaWVudC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCBzd2l0Y2ggKHVuc2lnbmVkIGludCkgeyBjYXNlIC0xIC8gLTI6IH0gcHJvYmxlbXMuCgoJKiBkbGxzL21zdmNydC90ZXN0cy9oZWFkZXJzLmM6IFBpZXJyZSBkJ0hlcmJlbW9udCA8c3RlZ2VmaW5AZnJlZS5mcj4KCURvbid0IHRlc3QgaTM4NiB0eXBlcyBvbiBub24gaTM4Ni4KCgkqIGRsbHMvdXJsbW9uL3Vtb24uYywgZGxscy91cmxtb24vdXJsbW9uLnNwZWM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBhIGZldyBzdHViIGltcGxlbWVudGF0aW9ucy4KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudGVkIFBTTV9IV05EVE9JTkRFWC4KCgkqIGRsbHMvYWR2YXBpMzIvYWR2YXBpLmMsIGRsbHMvYWR2YXBpMzIvY3J5cHQuYywKCSAgZGxscy9hZHZhcGkzMi9ldmVudGxvZy5jOgoJSmFtZXMgSGF3a2lucyA8dHJ1aWtlbkBnbWFpbC5jb20+CglBZGRlZCBzb21lIG1vcmUgQVBJIGRvY3MuCgoJKiBkbGxzL21zaS9jb25kLnk6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglQcm9wZXJseSBoYW5kbGUgcXVvdGVkIG51bWJlciBsaXRlcmFscyBpbiBNU0kgY29uZGl0aW9uIHN0YXRlbWVudHMuCgoJKiBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglBZGQgc3R1YnMgZm9yIHNvbWUgbmV3IHByb3BlcnR5IHNoZWV0IG1lc3NhZ2VzLgoKCSogZGxscy91c2VyL3Rlc3RzL3Jlc291cmNlLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBhIHJlZ3Jlc3Npb24gdGVzdCBmb3IgYWNjZWxlcmF0b3JzLgoKCSogZGxscy91c2VyL3Jlc291cmNlLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gV2luZG93cyBhbHdheXMgc3RyaXBzIHRoZSBoaWdoIGJpdCAoMHg4MCkgb2YgdGhlIGZWaXJ0IG1lbWJlciBpbiB0aGUKCSAgYWNjZWxlcmF0b3Igc3RydWN0dXJlLgoJLSBJZiB0aGUgRlZJUlRLRVkgYml0IG9mIGZWaXJ0IGlzIHNldCwgdGhlIHZhbHVlIG9mIHRoZSBrZXkgZmllbGQgaXMKCSAgbGltaXRlZCB0byB0aGUgcmFuZ2Ugb2Ygb25lIGJ5dGUuCgktIFJlbW92ZSBhbm5veWluZyBmaXhtZXMgYWJvdXQgYWNjZWxlcmF0b3IgdGFibGUgY2hlY2tpbmcuICBXaW5kb3dzCgkgIGFwcGVhcnMgdG8gZG8gbm8gbW9yZSBjaGVja2luZyB0aGFuIHRoZSBhYm92ZS4KCgkqIGRsbHMvbXNybGUzMi9tc3JsZV9KYS5yYywgZGxscy9tc3JsZTMyL3JzcmMucmMsIGRsbHMvd2luaW5ldC9yc3JjLnJjLAoJICBkbGxzL3dpbmluZXQvd2luaW5ldF9KYS5yYywgcHJvZ3JhbXMvcmVnZWRpdC9KYS5yYywKCSAgcHJvZ3JhbXMvd2NtZC9KYS5yYywgcHJvZ3JhbXMvd2NtZC93Y21kcmMucmM6CglIYWppbWUgU2VnYXdhIDx3aW5ldGlwc0BzaWRlbmV0LmRkby5qcD4KCUFkZGVkIEphcGFuZXNlIHRyYW5zbGF0aW9uIGZvciBtc3JsZTMyLCB3aW5pbmV0LCB3Y21kLgoJRml4ZWQgdW50cmFuc2xhdGVkIG1lc3NhZ2VzIG9mIHJlZ2VkaXQuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9Fbi5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfRXMucmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0ZyLnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9JdC5yYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfUHQucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX1VrLnJjLAoJICBkbGxzL3NoZWxsMzIvc2hyZXMucmM6CglKb3PpIE1hbnVlbCBGZXJyZXIgT3J0aXogPGptZm8xOTgyQHlhaG9vLmVzPgoJVXBkYXRlZCB0aGUgU3BhbmlzaCBzaGVsbDMyIHRyYW5zbGF0aW9uIGFuZCBtYWRlIHNvbWUgY29ycmVjdGlvbnMgdG8KCW90aGVyIGxhbmd1YWdlIGZpbGVzLgoKCSogaW5jbHVkZS9wcnNodC5oOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglBZGQgZGVmaW5pdGlvbnMgZm9yIHY1LjgwIG1lc3NhZ2VzLgoKCSogZGxscy9tc2kvYWN0aW9uLmM6IEhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJRml4IGNvbW1hbmQgbGluZSBwYXJzaW5nLgoKCSogZGxscy91c2VyL3Jlc291cmNlLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gQ29weUFjY2VsZXJhdG9yVGFibGUgY2FuIGNhdXNlIGEgYnVmZmVyIG92ZXJmbG93IGJlY2F1c2UgaXQgdXNlcyBhbgoJICBpbmNvcnJlY3QgY29tcGFyaXNvbiBiZXR3ZWVuIHRoZSBudW1iZXIgb2YgYWNjZWxlcmF0b3IgZW50cmllcwoJICBhdmFpbGFibGUgYW5kIHRoZSBudW1iZXIgb2YgYWNjZWxlcmF0b3IgZW50cmllcyBpbiB0aGUgb3V0cHV0IGJ1ZmZlci4KCS0gTXkgdGVzdHMgc2hvdyB0aGF0IENvcHlBY2NlbGVyYXRvclRhYmxlIGFsd2F5cyBzdHJpcHMgdGhlIGhpZ2ggYml0CgkgIG9mIHRoZSBmVmlydCBtZW1iZXIgb2YgdGhlIGFjY2VsIHN0cnVjdC4KCS0gQ2FsbGluZyBEZXN0cm95QWNjZWxlcmF0b3JUYWJsZSB3aXRoIGEgTlVMTCBhY2NlbGVyYXRvciBzaG91bGQKCSAgcmV0dXJuIEZBTFNFLgoKCSogZGxscy9tcHIvbXByLnJjLCBkbGxzL21wci9tcHJfRGUucmMsIGRsbHMvbXNhY20vbXNhY20ucmMsCgkgIGRsbHMvbXNhY20vbXNhY21fRGUucmMsIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzJfRGUucmMsCgkgIGRsbHMvb2xlZGxnL29sZWRsZ19EZS5yYywgZGxscy9vbGVkbGcvcnNyYy5yYywgZGxscy9zZXJpYWx1aS9EZS5yYywKCSAgZGxscy9zZXJpYWx1aS9zZXJpYWx1aV9yYy5yYywgZGxscy9zZXR1cGFwaS9EZS5yYywKCSAgZGxscy9zZXR1cGFwaS9zZXR1cGFwaS5yYywgZGxscy9zaGx3YXBpL3NobHdhcGkucmMsCgkgIGRsbHMvc2hsd2FwaS9zaGx3YXBpX0RlLnJjLCBkbGxzL3dpbmluZXQvcnNyYy5yYywKCSAgZGxscy93aW5pbmV0L3dpbmluZXRfRGUucmM6CglIZW5uaW5nIEdlcmhhcmR0IDxoZW5uaW5nLmdlcmhhcmR0QHdlYi5kZT4KCVRyYW5zbGF0ZWQgc29tZSBFbmdsaXNoIHJlc291cmNlIGZpbGVzIGludG8gR2VybWFuLgoKCSogZGxscy9kbWxvYWRlci9sb2FkZXJzdHJlYW0uYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCAoTFBESVJFQ1RNVVNJQ0xPQURFUjgpIGNhc3QuCgoJKiBvYmplY3RzL3JlZ2lvbi5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglGaXggYSBmZXcgcmVnaW9uIGRlYnVnIG1lc3NhZ2VzLgoKCSogZGxscy9tc2kvbXNpLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCU1pbm9yIHNwZWxsaW5nIGZpeC4KCgkqIGRsbHMvdXNlci9leHRpY29uLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVN0b3AgUHJpdmF0ZUV4dHJhY3RJY29ucyBmcm9tIGNyYXNoaW5nIGdpdmVuIGFuIGludmFsaWQgaWNvbiBpbmRleC4KCgkqIGRsbHMvd2luZWRvcy9pbnQyMS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVJlbW92ZSBsdmFsdWUgY2FzdHMgdGhhdCBhcmUgbm8gbG9uZ2VyIHN1cHBvcnRlZC4KCgkqIGRsbHMvbXNpL3RhYmxlLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZSBhIHBpZWNlIG9mIGRlYWQgY29kZSBjYXVzaW5nIGEgd2FybmluZy4KCgkqIGRsbHMvc2VjdXIzMi9zZWN1cjMyLmMsIGRsbHMvc2VjdXIzMi9zZWN1cjMyLnNwZWM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBZGQgc3R1YiBpbXBsZW1lbnRhdGlvbiBmb3IgR2V0Q29tcHV0ZXJPYmplY3ROYW1lLgoKCSogaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9zZWNleHQuaDoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBzZWNleHQuaC4KCgkqIGRsbHMvc2hlbGwzMi9jb250cm9sLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwKCSAgZGxscy9zaGVsbDMyL3NoZWxsb2xlLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIGRvdWJsZSBhcHBsZXQgPSBhcHBsZXQgPSBhc3NpZ25tZW50LgoJUmVtb3ZlZCBzaWNfaGRwYSBvbmx5IHVzZWQgaW4gMSBDIGZpbGUgYXMgc3RhdGljIHZhci4KCU1ha2UgVlRfU2hlbGxfSU1hbGxvYzMyIGFuZCByZWxhdGVkIHZhcmlhYmxlcyBzdGF0aWMuCgoJKiBkbGxzL29sZTMyL3JlZ3N2ci5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUlJRF9JT2JqZWN0V2l0aFNpdGUgaXMgYWxyZWFkeSBpbiBsaWJ1dWlkLCBubyBuZWVkIHRvIGRlY2xhcmUgaGVyZS4KCgkqIGRsbHMvb2xlMzIvaWZzLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSU1hbGxvYyB2dGFibGVzIGFyZSBzdGF0aWMuCgoJKiBkbGxzL2RwbGF5eC9kcGxheS5jLCBkbGxzL2RwbGF5eC9kcGxheV9nbG9iYWwuaDoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJTW92ZSBkZWZpbml0aW9ucyBvZiBzdGF0aWMgdnRhYmxlcyBmcm9tIGhlYWRlciB0byBkcGxheS5jLgoKCSogbWlzYy9yZWdpc3RyeS5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQWRkIEhLRVlfRFlOX0RBVEFcQ29uZmlnIE1hbmFnZXJcRW51bSB0byByZWdpc3RyeS4KCgkqIHByb2dyYW1zL3dpbmVkYmcvc3RhY2suYzogRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglGaXhlZCByZWdyZXNzaW9uIG9uICdidCA8dGlkPicgY29tbWFuZC4KCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYzogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUJldHRlciBoYW5kbGUgdGhlIGZyYW1lLWJ1ZmZlciBsb2NraW5nIGNhc2UuCgoJKiBkbGxzL3BzYXBpL3Rlc3RzL21vZHVsZS5jOgoJU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtTGluZS5jb20+CglGaXggdGVzdHMgb2YgR2V0TW9kdWxlRmlsZU5hbWVBIG9uIDk4L1hQLgoKCSogZGxscy94MTFkcnYvZGliX2NvbnZlcnQuYywgZGxscy94MTFkcnYvZGliX3NyY19zd2FwLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVJlcGxhY2VkIGx2YWx1ZSBjYXN0cyAvIHBvc3RpbmNyZW1lbnQgbWl4ZXMuCgoJKiBkbGxzL2Rzb3VuZC90ZXN0cy9NYWtlZmlsZS5pbiwgZGxscy9kc291bmQvdGVzdHMvZHNvdW5kLmM6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJLSBDcmVhdGUgSURpcmVjdFNvdW5kIGFuZCBJRGlyZWN0U291bmQ4IG9iamVjdHMgdXNpbmcgdGhlCgkgIENvQ3JlYXRlSW5zdGFuY2UgQ09NIGZ1bmN0aW9uIHRvIHRlc3QgdGhlIENsYXNzIEZhY3RvcnkgaW50ZXJmYWNlcy4KCS0gQ3JlYXRlIElEaXJlY3RTb3VuZCBhbmQgSURpcmVjdFNvdW5kOCBvYmplY3RzIHVzaW5nIENyZWF0ZURpcmVjdFNvdW5kCgkgIGFuZCBDcmVhdGVEaXJlY3RTb3VuZDggdXNpbmcgYSBOVUxMIGRldmljZSBHVUlELgoKMjAwNC0wNy0wOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jLCBkbGxzL21zaS9jb25kLnksIGRsbHMvbXNpL21zaS5jLCBkbGxzL21zaS9wYWNrYWdlLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgTXNpVmVyaWZ5UGFja2FnZSwgY29zbWV0aWMgZml4ZXMuCgoJKiBkbGxzL3NoZWxsMzIvZGlhbG9ncy5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9Fbi5yYywgZGxscy9zaGVsbDMyL3NocmVzZGVmLmgsCgkgIGRsbHMvc2hlbGwzMi91bmRvY3NoZWxsLmgsIGluY2x1ZGUvc2hsb2JqLmg6CglNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJR2UgdmFuIEdlbGRvcnAgPGd2Z0ByZWFjdG9zLmNvbT4KCUltcGxlbWVudCBNZXNzYWdlQm94LWJhc2VkIFJlc3RhcnREaWFsb2coKSBhbmQgUmVzdGFydERpYWxvZ0V4KCksIHVzZQoJc3RyaW5nIHJlc291cmNlcyBmb3IgRXhpdFdpbmRvd3NEaWFsb2coKSB0byBhbGxvdwoJaW50ZXJuYXRpb25hbGl6YXRpb24uCgoJKiBkbGxzL21zaS9hY3Rpb24uYywgZGxscy9tc2kvY29uZC55LCBkbGxzL21zaS9jcmVhdGUuYywKCSAgZGxscy9tc2kvZGlzdGluY3QuYywgZGxscy9tc2kvaGFuZGxlLmMsIGRsbHMvbXNpL2luc2VydC5jLAoJICBkbGxzL21zaS9tc2kuYywgZGxscy9tc2kvbXNpcHJpdi5oLCBkbGxzL21zaS9tc2lxdWVyeS5jLAoJICBkbGxzL21zaS9vcmRlci5jLCBkbGxzL21zaS9wYWNrYWdlLmMsIGRsbHMvbXNpL3JlY29yZC5jLAoJICBkbGxzL21zaS9zZWxlY3QuYywgZGxscy9tc2kvc3VtaW5mby5jLCBkbGxzL21zaS90YWJsZS5jLAoJICBkbGxzL21zaS91cGRhdGUuYywgZGxscy9tc2kvd2hlcmUuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglSZWZjb3VudCBhbGwgb2JqZWN0cywgYW5kIHVzZSBwb2ludGVycyBpbnRlcm5hbGx5LgoKCSogZGxscy9rZXJuZWwvZmlsZS5jOiBSb2IgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglBZGQgVFJBQ0UgdG8gUmVhZEZpbGVFeC4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jLCBkbGxzL21zaS9tc2kuYywgZGxscy9tc2kvbXNpcHJpdi5oOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVdyaXRlIHRoZSBlbmNvZGVkIEdVSURzIGZvciBwcm9kdWN0IHJlZ2lzdHJhdGlvbiBpbiB0aGUgSW5zdGFsbGVyCglyZWdpc3RyeS4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jLCBkbGxzL21zaS9tc2kuYywgZGxscy9tc2kvbXNpLnNwZWMsCgkgIGRsbHMvbXNpL21zaXF1ZXJ5LmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQ2xlYW51cCBvZiBhY3Rpb25zLgoKCSogZGxscy9tc2kvbXNpLnNwZWMsIGRsbHMvbXNpL21zaXF1ZXJ5LmMsIGRsbHMvbXNpL3JlY29yZC5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBhIHN0dWIgZm9yIE1zaU1vZGlmeVZpZXcsIGZpeCBhIGNvdXBsZSBvZiBidWdzLgoKCSogZGxscy9tc2kvYWN0aW9uLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUNvc21ldGljIGZpeGVzLgoKCSogZGxscy9tc2kvYWN0aW9uLmMsIGRsbHMvbXNpL21zaS5jLCBkbGxzL21zaS9tc2lwcml2LmgsCgkgIGRsbHMvbXNpL3BhY2thZ2UuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgbG9nZ2luZy4KCgkqIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmM6IE1pa2UgSGVhcm4gPG1oQGNvZGV3ZWF2ZXJzLmNvbT4KCU91dHB1dCBYMTEgcHJvdG9jb2wgZXJyb3JzIGJlZm9yZSBicmVha2luZyBpbnRvIGRlYnVnZ2VyLgoKCSogZGxscy9kc291bmQvZHNvdW5kLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglCZXR0ZXIgZXJyb3IgY2hlY2tpbmcgYW5kIHJlY292ZXJ5LgoKCSogY29udHJvbHMvc2Nyb2xsLmMsIGRsbHMvdXNlci90ZXN0cy9tc2cuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGQgYSB0ZXN0IGNhc2UgZm9yIHNjcm9sbCBBUElzLCBmaXggYSBmZXcgYnVncyBzcG90dGVkIGJ5IGl0LgoKMjAwNC0wNy0wOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHByb2dyYW1zL25vdGVwYWQvbWFpbi5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkIFdTX0hTQ1JPTEwgc3R5bGUgdG8gdGhlIG5vdGVwYWQncyBlZGl0IGNvbnRyb2wuCgoJKiBpbmNsdWRlL3dpbmdkaS5oLCBvYmplY3RzL2dkaW9iai5jOgoJQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJU2V2ZXJhbCBHREkgb2JqZWN0IGhhbmRsaW5nIGZ1bmN0aW9ucyBhcmUgZGVmaW5lZCB0byB0YWtlIGEgSEdESU9CSgoJaW5zdGVhZCBvZiBhIEhBTkRMRS4KCgkqIGRsbHMvZHNvdW5kL2Rzb3VuZC5jLCBkbGxzL29sZTMyL2NvbXBvYmouYywgaW5jbHVkZS9zaGx3YXBpLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFzc29ydGVkIHNwZWxsaW5nIGZpeGVzLgoKCSogY29udHJvbHMvc2Nyb2xsLmM6IFRyb3kgUm9sbG8gPHdpbmVAdHJveS5yb2xsby5uYW1lPgoJLSBTZXR0aW5nIHRoZSBzY3JvbGwgcmFuZ2Ugd2l0aCB0aGUgImJSZWRyYXciIGZsYWcgc2V0IHRvIHRydWUgb24gYQoJICBub24tY29udHJvbCBzY3JvbGxiYXIgcmVzdWx0ZWQgaW4gdGhlIHNjcm9sbGJhciBiZWluZyBkcmF3biBvdmVyIHRoZQoJICB3aG9sZSB3aW5kb3cgYXJlYS4KCS0gSWYgeW91IGRvbid0IHNldCBXU19IU0NST0xML1dTX1ZTQ1JPTEwgb24gd2luZG93IGNyZWF0aW9uLCBzZXR0aW5nIGEgc2Nyb2xsCgkgIHJhbmdlIGRvZXMgbm90aGluZy4gU2V0dGluZyB0aGUgc2Nyb2xsIHJhbmdlIHRvIGEgbm9uLXplcm8gcmFuZ2Ugc2hvdWxkIGNhdXNlCgkgIHNjcm9sbCBiYXJzIHRvIGJlIGRpc3BsYXllZC4gU2V0dGluZyB0aGUgcmFuZ2UgdG8gYSB6ZXJvIHJhbmdlCgkgIHNob3VsZCBjYXVzZSB0aGUgcmVsZXZhbnQgc2Nyb2xsIGJhciB0byBiZSBoaWRkZW4uCgoJKiBkbGxzL3gxMWRydi9jbGlwYm9hcmQuYzogVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hAY29kZXdlYXZlcnMuY29tPgoJSWYgdGhlIHNlbGVjdGlvbiBvd25lciBkb2Vzbid0IHVuZGVyc3RhbmQgVEFSR0VUUywgdHJ5IHJldHJpZXZpbmcKCVhBX1NUUklORy4KCgkqIGRsbHMveDExZHJ2L2V2ZW50LmM6IFVscmljaCBDemVrYWxsYSA8dWxyaWNoQGNvZGV3ZWF2ZXJzLmNvbT4KCUhhbmRsZSBjYXNlIHdoZW4gZGF0YSB0eXBlIGlzIG5vdCByZWdpc3RlcmVkLgoKCSogcHJvZ3JhbXMvcmVnZWRpdC9jaGlsZHduZC5jLCBwcm9ncmFtcy9yZWdlZGl0L3JlZ3Byb2MuYywKCSAgcHJvZ3JhbXMvcmVnZWRpdC90cmVldmlldy5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUFkZGVkIEhLRVlfRFlOX0RBVEEgc3VwcG9ydC4KCjIwMDQtMDctMDcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBkbGxzL2tlcm5lbC90aHJlYWQuYzoKCVJvZ2VyIE9sc29uIDx1NjBAY29tY2FzdC5uZXQ+CglBZGRlZCBzdHViIGZvciBDcmVhdGVSZW1vdGVUaHJlYWQoKS4KCgkqIGluY2x1ZGUvZHNvdW5kLmg6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglOdW1iZXIgb2YgYXJndW1lbnRzIHRvIElEaXJlY3RTb3VuZEJ1ZmZlcjhfR2V0T2JqZWN0SW5QYXRoIHdhcyB3cm9uZy4KCgkqIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYywgaW5jbHVkZS93aW5udC5oOgoJR2UgdmFuIEdlbGRvcnAgPGd2Z0ByZWFjdG9zLmNvbT4KCUFkZCBtaXNzaW5nIHByaXZpbGVnZSBuYW1lcy4KCgkqIGRsbHMva2VybmVsL2xvY2FsZS5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJSW5pdGlhbGl6ZSBhbHNvIEFDUCwgT0VNQ1AgYW5kIE1BQ0NQIGluIHJlZ2lzdHJ5IG9uIGxvY2FsZSBjaGFuZ2UuCgoJKiBkbGxzL250ZGxsL2RpcmVjdG9yeS5jOiBFbW1hbnVlbCBNYWlsbGFyZCA8ZS5yc3pAbGliZXJ0eXN1cmYuZnI+CglBZGRlZCBEYXJ3aW4gc3VwcG9ydCBpbiBnZXRfZGVmYXVsdF9kcml2ZV9kZXZpY2UuCgoyMDA0LTA3LTA2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy94MTFkcnYvd2lucG9zLmM6IEZpeGVkIFgxMURSVl9HZXREQyBmb3IgdGhlIGRlc2t0b3Agd2luZG93LgoJVXNlIHRoZSBjbGllbnQgd2luZG93IGFzIGRyYXdhYmxlIHdoZW4gcG9zc2libGUuCgoJKiBzZXJ2ZXIvd2luZG93LmM6CglnZXRfdmlzaWJsZV9yZWdpb246IGRvIG5vdCBjbGlwIG91dCBzaWJsaW5ncyBvZiB0aGUgdG9wLWxldmVsIHdpbmRvdy4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL2ZpbGUuYywgZGxscy9rZXJuZWwvdnhkLmM6CglNaWtlIEhlYXJuIDxtaWtlQG5hdmkuY3g+CglDb3JyZWN0IGVycm9yIGNvZGUgcmV0dXJuZWQgYnkgQ3JlYXRlRmlsZSB3aGVuIGdpdmVuIGEgbm9uLWV4aXN0ZW50CglWeEQgb24gTlQsIGFkZCBhIHRlc3QgY2FzZS4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglSZWZjb3VudGluZyBmaXhlcy4KCgkqIGRsbHMvb2xlMzIvY29tcG9iai5jOiBNaWtlIEhlYXJuIDxtaEBjb2Rld2VhdmVycy5jb20+CglBZGQgc29tZSBleHBsYW5hdGlvbnMgdG8gY29tcG9iai5jLCBpbXBsZW1lbnQgZmx1c2hpbmcgbWVzc2FnZSBxdWV1ZQoJb24gc2h1dGRvd24uCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUNyZWF0ZSBhIHRvb2x0aXAgb24gZGVtYW5kIGluIHRoZSBMaXN0dmlldy4KCgkqIGRvY3VtZW50YXRpb24vY29uZmlndXJpbmcuc2dtbDoKCVJpY2hhcmQgU3RvbmVob3VzZSA8cmljaGFyZEByc3RvbmVob3VzZS5jby51az4KCVVwZGF0ZWQgZm9yIHRoZSBuZXcgJ2Rvc2RldmljZXMnIGRpcmVjdG9yeSBzeXN0ZW0uCgoJKiBwcm9ncmFtcy93aW5ldGVzdC9tYWluLmMsIHByb2dyYW1zL3dpbmV0ZXN0L3NlbmQuYzoKCUZlcmVuYyBXYWduZXIgPHdmZXJpQGFmYXZhbnQuZWx0ZS5odT4KCVN1cHByZXNzIHNvbWUgbW9yZSBlcnJvciBtZXNzYWdlIGJveGVzLgoJVHJ1bmNhdGUgcmVwb3J0IGZpbGUgaWYgdG9vIGJpZy4KCgkqIGRsbHMvbWFwaTMyL3Rlc3RzL3Byb3AuYzogRmVyZW5jIFdhZ25lciA8d2ZlcmlAYWZhdmFudC5lbHRlLmh1PgoJQXZvaWQgc2VnZmF1bHRzIG9uIHVuaW5pdGlhbGl6ZWQgZGF0YS4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaDogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUZpeCBhIHR5cG8gaW4gdGhlIFRhYkN0cmxfU2V0SXRlbSBtYWNyby4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2F0bC8uY3ZzaWdub3JlLAoJICBkbGxzL2F0bC9NYWtlZmlsZS5pbiwgZGxscy9hdGwvYXRsLnNwZWMsIGRsbHMvYXRsL2F0bF9tYWluLmMsCgkgIGRsbHMvYXRsL2F0bGJhc2UuaDoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglGaXJzdCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgQWR2YW5jZWQgVGVtcGxhdGUgTGlicmFyeSwgd2l0aCBqdXN0IGEgZmV3CglmdW5jdGlvbnMgaW1wbGVtZW50ZWQuCgoJKiBkbGxzL250ZGxsL250LmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglSZXBvcnQgTk9UX0lNUExFTUVOVEVEIGZvciBub3QgaW1wbGVtZW50ZWQgdG9rZW4gY2xhc3Nlcy4KCgkqIHNlcnZlci9maWxlLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVRyYW5zbGF0ZSBFTk9ERVYgYW5kIEVOWElPIGVycm9yIGNvZGVzIHRvIE5UIHN0YXR1cyBjb2Rlcy4KCgkqIGluY2x1ZGUvZHNvdW5kLmg6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglBZGRlZCBzb21lIG1pc3NpbmcgKipMUExQIHR5cGVkZWZzLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWM6IEVtbWFudWVsIE1haWxsYXJkIDxlLnJzekBsaWJlcnR5c3VyZi5mcj4KCUNoZWNrIGZvciAtbHJlc29sdiBmb3IgRGFyd2luLgoKCSogaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9tbGFuZy5oLCBpbmNsdWRlL21sYW5nLmlkbDoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBNdWx0aSBMYW5ndWFnZSBzdXBwb3J0IElETCBhbmQgaGVhZGVycy4KCgkqIGRsbHMvZHNvdW5kL2J1ZmZlci5jLCBkbGxzL2Rzb3VuZC9wcmltYXJ5LmMsIGluY2x1ZGUvZHNvdW5kLmg6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJRml4IElEaXJlY3RTb3VuZEJ1ZmZlcjhfSW5pdGlhbGl6ZSBmdW5jdGlvbiBwcm90b3R5cGUgYW5kIHVzZS4KCgkqIHRvb2xzL3dyYy9uZXdzdHJ1Yy5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUdlbmVyaWMgU0tJUF9UQUcgdG8gc2tpcCBhIG51bWJlciBvZiBieXRlcywgdXNlIGl0IHdoZXJlIGFwcGxpY2FibGUuCgoJKiB3aW5kb3dzL3dpbnByb2MuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglSZXBsYWNlIGx2YWx1ZSBjYXN0cyBvZiBwb3N0IGluY3JlbWVudHMgZm9yIG5ld2VyIGNvbXBpbGVyLgoKCSogZGxscy9kc291bmQvZHNvdW5kX21haW4uYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUNyZWF0ZSBEaXJlY3RTb3VuZCBvciBEaXJlY3RTb3VuZDggZGVwZW5kaW5nIG9uIHJpaWQuCgoJKiBkbGxzL21zaS90YWJsZS5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBbGxvdyBiaW5hcnkgZmllbGRzIHdpdGggc3RyZWFtIG5hbWVzIGxvbmdlciB0aGFuIHRhYmxlIG5hbWVzLgoKCSogZGxscy9tc2kvYWN0aW9uLmMsIGRsbHMvbXNpL3BhY2thZ2UuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnRlZCBDcmVhdGVTaG9ydGN1dCBhbmQgUHVibGlzaFByb2R1Y3QuCgoJKiBkbGxzL21zaS9hY3Rpb24uYywgZGxscy9tc2kvY3JlYXRlLmMsIGRsbHMvbXNpL2Rpc3RpbmN0LmMsCgkgIGRsbHMvbXNpL2luc2VydC5jLCBkbGxzL21zaS9tc2lwcml2LmgsIGRsbHMvbXNpL21zaXF1ZXJ5LmMsCgkgIGRsbHMvbXNpL29yZGVyLmMsIGRsbHMvbXNpL3NlbGVjdC5jLCBkbGxzL21zaS90YWJsZS5jLAoJICBkbGxzL21zaS91cGRhdGUuYywgZGxscy9tc2kvd2hlcmUuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZldGNoIGJpbmFyeSBzdHJlYW1zIGF0IHRoZSB0YWJsZSBsZXZlbC4KCgkqIGRsbHMvbXNpL3BhY2thZ2UuYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCU1zaUdldFByb3BlcnR5IHNob3VsZCByZXR1cm4gZW1wdHkgc3RyaW5ncyBvbiBlcnJvci4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50ZWQgcmVnaXN0ZXJpbmcgQ2xhc3NlcyBhbmQgUHJvZ0lELgoKCSogZGxscy9tc2kvYWN0aW9uLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnRlZCBSZWdpc3RlclR5cGVMaWJyYXJpZXMuCgoJKiBkbGxzL21zaS9hY3Rpb24uYywgZGxscy9tc2kvY29uZC55LCBkbGxzL21zaS9tc2lwcml2LmgsCgkgIGRsbHMvbXNpL3BhY2thZ2UuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnRlZCBQcm9jZXNzQ29tcG9uZW50cy4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jLCBkbGxzL21zaS9wYWNrYWdlLmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJU2VuZCBwcm9ncmVzcyBhbmQgYWN0aW9uIG1lc3NhZ2VzLgoKCSogZGxscy9tc2kvYWN0aW9uLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglBbGxvdyBBRERMT0NBTCB0byBvdmVycmlkZSBJTlNUQUxMTEVWRUwsIGltcGxlbWVudCBMYXVuY2hDb25kaXRpb25zLgoKCSogbG9hZGVyL3ByZWxvYWRlci5jOiBBdm9pZCB1c2luZyBzdHJsZW4uCgoJKiBkbGxzL21zdmNydC90ZXN0cy9oZWFkZXJzLmM6IEFkZGVkIHRlc3RzIGZvciBkaXZfdCBhbmQgbGRpdl90LgoKCSogZGxscy9tc3ZjcnQvbXN2Y3J0Lmg6IFBpZXJyZSBkJ0hlcmJlbW9udCA8c3RlZ2VmaW5AZnJlZS5mcj4KCURlZmluZSBNU1ZDUlRfZGl2X3QgYW5kIE1TVkNSVF9sZGl2X3QuCgoJKiBpbmNsdWRlL2FjbGFwaS5oOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBZGQgdHJ1c3RlZSBmdW5jdGlvbnMuCgoJKiBkbGxzL2Rzb3VuZC9kc291bmQuYywgZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJR2V0IGNlcnRpZmljYXRpb24gZm9yIFZlcmlmeUNlcnRpZmljYXRpb24gZnJvbSBkcml2ZXIgdG8gbWF0Y2gKCUdldENhcHMuCglDaGFuZ2UgT1NTIGRyaXZlciB0byByZXBvcnQgY2VydGlmaWVkLgoJQ2hhbmdlIE9TUyBkcml2ZXIgdG8gc2hvdyBtZXNzYWdlIG5hbWUgcmF0aGVyIHRoYW4gbnVtYmVyIGluIHRyYWNlcy4KCgkqIGRsbHMvZGRyYXcvZHN1cmZhY2UvZGliLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQ09QWV9DT0xPUktFWV9GWDogRG8gbm90IHVzZSBsdmFsdWUgY2FzdHMuCgoJKiBkbGxzL21zaS9hY3Rpb24uYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBidWdzIGluIHJlc29sdmVfZm9sZGVyLgoKMjAwNC0wNy0wNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jLCBkbGxzL21zaS9wYWNrYWdlLmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQWN0aXZhdGUgZmVhdHVyZXMgYW5kIGNvbXBvbmVudHMgYmFzZWQgb24gdGhlaXIgdmFyaW91cyBjb25kaXRpb25zLgoKCSogZGxscy9tc2kvTWFrZWZpbGUuaW4sIGRsbHMvbXNpL2FjdGlvbi5jLCBkbGxzL21zaS9jb25kLnksCgkgIGRsbHMvbXNpL21zaXByaXYuaCwgZGxscy9tc2kvcGFja2FnZS5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUJlZ2lubmluZ3Mgb2YgY29zdGluZyBhbmQgb3JnYW5pemluZyBpbnRvIGNvbXBvbmVudHMgYW5kIGZlYXR1cmVzLgoKCSogZGxscy9tc2kvYWN0aW9uLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglGaXggY29tbWFuZCBsaW5lIHByb2Nlc3NpbmcgYW5kIGZvbGRlciBwYXRocy4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jLCBkbGxzL21zaS9tc2lwcml2LmgsIGRsbHMvbXNpL3BhY2thZ2UuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglGaXggTXNpR2V0VGFyZ2V0UGF0aCwgTXNpR2V0U291cmNlUGF0aCBhbmQgTXNpU2V0VGFyZ2V0UGF0aC4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jLCBkbGxzL21zaS9tc2kuYywgZGxscy9tc2kvbXNpcHJpdi5oLAoJICBkbGxzL21zaS9wYWNrYWdlLmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJVXNlIHRoZSBuZXdseSBpbXBsZW1lbnRlZCBVUERBVEUgY29kZSB0byBzZXQgcHJvcGVydGllcy4KCgkqIGRsbHMvbXNpL01ha2VmaWxlLmluLCBkbGxzL21zaS9xdWVyeS5oLCBkbGxzL21zaS9zcWwueSwKCSAgZGxscy9tc2kvdXBkYXRlLmMsIGRsbHMvbXNpL3doZXJlLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgdGhlIFVQREFURSBxdWVyeS4KCgkqIGRsbHMvbXNpL3F1ZXJ5LmgsIGRsbHMvbXNpL3NxbC55LCBkbGxzL21zaS93aGVyZS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQ3JlYXRlIHRoZSBXSEVSRSBwYXJ0IG9mIGEgcXVlcnkgaW4gb25lIGZ1bmN0aW9uIGNhbGwuCgoJKiBkbGxzL21zaS9hY3Rpb24uYywgZGxscy9tc2kvbXNpLmMsIGRsbHMvbXNpL21zaS5zcGVjLAoJICBkbGxzL21zaS9tc2lwcml2LmgsIGRsbHMvbXNpL3BhY2thZ2UuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgU2V0VGFyZ2V0UGF0aCwgc3RhcnQgdGhlIGJhc2ljcyBmb3IgdHJhY2tpbmcgVUkgbGV2ZWwuCgoJKiBwcm9ncmFtcy93aW5lZGJnL2luZm8uYywgcHJvZ3JhbXMvd2luZWRiZy9zeW1ib2wuYywKCSAgcHJvZ3JhbXMvd2luZWRiZy93aW5lZGJnLmM6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCS0gZW5oYW5jZWQgJ2luZm8gc2hhcmUnIG91dHB1dAoJLSBtYWRlIHVzZSBvZiBuZXcgZGJnaGVscCBwdXJlIEVMRiBzeW1ib2wgbG9va3VwCgoJKiBkbGxzL21zaS9hY3Rpb24uYywgZGxscy9tc2kvcGFja2FnZS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQ29zbWV0aWMgZml4ZXMuCgoJKiBkbGxzL3dpbmluZXQvaHR0cC5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglCdWlsZCBodHRwIHJlcXVlc3RzIGluIGEgbW9yZSBjb25zaXN0ZW50IHdheS4KCUZpeCB0aGUgc2l6ZSBvZiB0aGUgcmVxdWVzdCBidWZmZXIuCglEb24ndCB0cnkgY29udmVydGluZyB0aGUgb3B0aW9uYWwgaW5mb3JtYXRpb24gZnJvbSBXIHRvIEEuCgoJKiBkbGxzL2RtaW1lL3BlcmZvcm1hbmNlLmM6IEZpeGVkIGEgd2FybmluZy4KCgkqIGRsbHMvZHNvdW5kL01ha2VmaWxlLmluLCBkbGxzL2Rzb3VuZC9kc291bmQuYywKCSAgZGxscy9kc291bmQvZHNvdW5kLnNwZWMsIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmMsCgkgIGRsbHMvZHNvdW5kL2Rzb3VuZF9wcml2YXRlLmgsIGRsbHMvZHNvdW5kL3Rlc3RzL2Rzb3VuZC5jLAoJICBpbmNsdWRlL2Rzb3VuZC5oOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCVNlcGFyYXRlZCBEaXJlY3RTb3VuZENyZWF0ZTggaW50byB0d28gZnVuY3Rpb25zIGFuZCBhZGRlZCBhCglJRGlyZWN0U291bmQgaW1wbGVtZW50YXRpb24uCglBZGRlZCBwcm9wZXIgQ09NIGJlaGF2aW9yIGZvciBRdWVyeUludGVyZmFjZSBmb3IgSURpcmVjdFNvdW5kIGFuZAoJSURpcmVjdFNvdW5kOC4KCUZpeGVkIGEgYnVnIGluIHRoZSBkc291bmQuaCBoZWFkZXIgZmlsZSBmb3IgSURpcmVjdFNvdW5kOAoJQ3JlYXRlU291bmRCdWZmZXIgYW5kIER1cGxpY2F0ZVNvdW5kQnVmZmVyLgoJQWRkZWQgbmV3IHRlc3RzIGZvciBwcm9wZXIgQ09NIGJlaGF2aW9yIGFuZCBlbmFibGVzIHNvbWUgY29tbWVudGVkIG91dAoJY29kZSBmb3IgdGVzdHMgdGhhdCB3b3JrIG9uIHdpbmRvd3MuICBBZGRlZCBuZXcgdGVzdHMgZm9yCglJRGlyZWN0U291bmQ4LgoKCSogZGxscy9hdmlmaWwzMi9hcGkuYywgZGxscy9hdmlmaWwzMi9hdmlmaWxlLmMsIGRsbHMvYXZpZmlsMzIvd2F2ZmlsZS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IHN0cmluZyBjb252ZXJzaW9uIGJ1Z3MuCgoJKiBkbGxzL3NoZWxsMzIvYXV0b2NvbXBsZXRlLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBhIGJ1ZmZlciBvdmVycnVuIGluIGF1dG9jb21wbGV0ZS4KCgkqIGRsbHMvZGJnaGVscC9kYmdoZWxwLmMsIGRsbHMvZGJnaGVscC9kYmdoZWxwX3ByaXZhdGUuaCwKCSAgZGxscy9kYmdoZWxwL2VsZl9tb2R1bGUuYywgZGxscy9kYmdoZWxwL21vZHVsZS5jLAoJICBkbGxzL2RiZ2hlbHAvc3RhYnMuYywgZGxscy9kYmdoZWxwL3N5bWJvbC5jOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CgktIGFkZGVkIHN1cHBvcnQgZm9yIEdDQyBzdGF0aWMgbG9jYWwgdmFyaWFibGVzCgktIGZpeGVkIHNvbWUgYnVncyBpbiBTWU1PUFRfTk9fUFVCTElDUyBhbmQgU1lNT1BUX1BVQkxJQ1NfT05MWQoJICBoYW5kbGluZwoJLSBpbiBzdGFicyBwYXJzaW5nLCBqdXN0IGRyb3AgYW55IGRlYnVnIGluZm8gZm9yIGEgbW9kdWxlIGlmIHN0YWJzCgkgIHBhcnNpbmcgZmFpbHMgKGluc3RlYWQgb2YgYXNzZXJ0KCknaW5nKQoJLSBzeW1ib2wgbG9va3VwIG5vdyBhbGxvd3MgbG9va3VwIGluIHB1cmUgRUxGIG1vZHVsZXMKCS0gZml4ZWQgc29tZSBidWdzIGluIHN5bWJvbCBlbnVtZXJhdGlvbgoKCSogZGxscy9vbGVhdXQzMi9zYWZlYXJyYXkuYywgZGxscy9vbGVhdXQzMi92YXJmb3JtYXQuYywKCSAgZGxscy9vbGVhdXQzMi92YXJpYW50LmMsIGRsbHMvb2xlYXV0MzIvdmFydHlwZS5jOgoJTWlrZSBIZWFybiA8bWhAY29kZXdlYXZlcnMuY29tPgoJTW92ZSB2YXJpYW50IGNvZGUgdG8gaXRzIG93biBkZWJ1ZyBjaGFubmVsLgoKCSogZGxscy9tcHIvbXByLnJjLCBkbGxzL21wci9tcHJfRXMucmM6CglKb3PpIE1hbnVlbCBGZXJyZXIgT3J0aXogPGptZm8xOTgyQHlhaG9vLmVzPgoJQWRkZWQgU3BhbmlzaCB0cmFuc2xhdGlvbi4KCgkqIGRsbHMva2VybmVsL2xvY2FsZS5jOiBWaXRhbHkgTGlwYXRvdiA8bGF2QGFsdGxpbnV4LnJ1PgoJUmV0dXJuIHByb3BlciBjb2RlcGFnZSB2YWx1ZSBpbiBHZXRDUEluZm9FeC4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJU3RhcnQgaW1wbGVtZW50aW5nIEZlYXR1cmUgYW5kIENvbXBvbmVudCBsZXZlbCBpbnN0YWxsIGNvbnRyb2wuCgoJKiBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWxsb2NhdGUgdGhlIGNvcnJlY3Qgc2l6ZSBzdHJpbmcgaW4gSW50ZXJuZXRDcmFja1VybC4KCgkqIGRsbHMvc2hsd2FwaS9hc3NvYy5jLCBkbGxzL3NobHdhcGkvcmVnLmMsIGRsbHMvc2hsd2FwaS91cmwuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBtZW1vcnkgYWxsb2NhdGlvbiBwcm9ibGVtcy4KCjIwMDQtMDYtMzAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL21zaS9yZWNvcmQuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IHJldHJpZXZhbCBvZiBudWwgcmVjb3JkcyBhcyBzdHJpbmdzLgoKCSogZGxscy9tc2kvaW5zZXJ0LmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCB0aGUgSU5TRVJUIHF1ZXJ5IHdoZW4gaW5zZXJ0aW5nIGludGVnZXJzIGludG8gYSB0YWJsZS4KCgkqIGRsbHMvbXNpL01ha2VmaWxlLmluLCBkbGxzL21zaS9hY3Rpb24uYywgZGxscy9tc2kvY29uZC55LAoJICBkbGxzL21zaS9tc2kuYywgZGxscy9tc2kvbXNpcHJpdi5oLCBkbGxzL21zaS9wYWNrYWdlLmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJU3RhcnQgaW1wbGVtZW50aW5nIE1zaU9wZW5QYWNrYWdlLgoKCSogZGxscy9tc2kvbXNpLmMsIGRsbHMvbXNpL3JlY29yZC5jLCBkbGxzL21zaS9zdHJpbmcuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVNldCB0aGUgc3RvcmFnZSBmaWxlJ3MgR1VJRCBzbyBuYXRpdmUgTVNJIHJlY29nbml6ZXMgaXQuCglGaXggY3Jhc2ggd2hlbiBpbnNlcnRpbmcgbXVsdGlwbGUgY29sdW1ucyB0aGF0IGFyZSBpbnZhbGlkLgoKCSogZGxscy9tc2kvY3JlYXRlLmMsIGRsbHMvbXNpL3NxbC55OgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJSGFjayBmaWVsZCB0eXBlcywgZml4IHJlZiBjb3VudGluZy4KCgkqIGRsbHMvbXNpL3JlY29yZC5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggYnVmZmVyIG92ZXJmbG93LgoKCSogZGxscy9tc2kvbXNpcHJpdi5oLCBkbGxzL21zaS9zcWwueSwgZGxscy9tc2kvc3RyaW5nLmMsCgkgIGRsbHMvbXNpL3RhYmxlLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggdGhlIFVQREFURSBxdWVyeS4KCgkqIGRsbHMvbXNpL2NyZWF0ZS5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJRml4IGZpZWxkIG51bWJlcmluZyBzbyB0aGUgQ1JFQVRFIHF1ZXJ5IHdvcmtzIGZvciBtdWx0aXBsZSBjb2x1bW5zLgoKCSogZGxscy9tc2kvaW5zZXJ0LmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglGaXggdGhlIElOU0VSVCBxdWVyeS4KCgkqIGRsbHMvbXNpL2luc2VydC5jLCBkbGxzL21zaS9tc2lwcml2LmgsIGRsbHMvbXNpL3F1ZXJ5LmgsCgkgIGRsbHMvbXNpL3JlY29yZC5jLCBkbGxzL21zaS9zZWxlY3QuYywgZGxscy9tc2kvc3FsLnksCgkgIGRsbHMvbXNpL3N0cmluZy5jLCBkbGxzL21zaS90YWJsZS5jLCBkbGxzL21zaS90b2tlbml6ZS5jLAoJICBkbGxzL21zaS93aGVyZS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJTWFrZSB0aGUgU1FMIGluc2VydCBxdWVyeSB3b3JrLgoKCSogZGxscy9oaGN0cmwub2N4L2hoY3RybC5jLCBkbGxzL2ltbTMyL2ltbS5jLCBkbGxzL21wci93bmV0LmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglIZWFwQWxsb2MgZm9yIFdTVFIgbXVzdCBhbGxvY2F0ZSBsZW4qIHNpemVvZihXQ0hBUlMpLgoKCSogZGxscy9tc2kvYWN0aW9uLmM6IFN0ZXZlbiBFZHdhcmRzIDxzdGV2ZW5fZWQ0MTUzQHlhaG9vLmNvbT4KCUZpeGVkIEV4dHJhY3QgcHJvdG90eXBlLgoKCSogZGxscy91c2VyL3Rlc3RzL21zZy5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkIG1vcmUgTURJIG1lc3NhZ2UgdGVzdHMuCgoJKiB3aW5kb3dzL21kaS5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRG8gbm90IGRvIFNldFdpbmRvd1BvcyhTV1BfRlJBTUVDSEFOR0VEKSBpbiB0aGUKCURlZkZyYW1lUHJvYyhXTV9TRVRURVhUKSBoYW5kbGVyLCBEZWZXaW5kb3dQcm9jIGFscmVhZHkgdGFrZXMgY2FyZSBvZgoJaXQuCgoJKiBkbGxzL2NvbW1kbGcvY2RsZ19DYS5yYywgZGxscy9jb21tZGxnL2NkbGdfRGUucmMsCgkgIGRsbHMvY29tbWRsZy9jZGxnX0ZyLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19SdS5yYywKCSAgZGxscy9jb21tZGxnL2NkbGdfVWsucmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRml4IGNvbnRyb2wgY29vcmRpbmF0ZXMgaW4gR2VybWFuIGFuZCBGcmVuY2ggdmVyc2lvbnMgb2Ygb3BlbiBmaWxlCglkaWFsb2cuCglSZW1vdmUgZHVwbGljYXRlIGNvbnRyb2wgaWRzIGluIENhdGFsYW4sIFJ1c3NpYW4gYW5kIFVrcmFpbmlhbgoJZGlhbG9ncy4KCgkqIGRsbHMvb2RiYzMyL3Byb3h5b2RiYy5jOiBCaWxsIE1lZGxhbmQgPGJpbGxtZWRsYW5kQG1lcmN1cnlzcGVlZC5jb20+CglTZXQgUlRMRF9HTE9CQUwgd2hlbiBsb2FkaW5nIHRoZSBvZGJjIGRyaXZlciBtYW5hZ2VyIHNvIHRoYXQgd2hlbiBpdAoJbG9hZHMgIGl0cyBvd24gZHJpdmVyIHRoYXQgZHJpdmVyIGNhbiBjYWxsIGJhY2sgaW50byB0aGUgbWFuYWdlciAoYXMKCXRoZSBPcmFjbGUgQmV0YSBkcml2ZXIgZG9lcywgZm9yIGV4YW1wbGUpLgoKCSogZGxscy9vbGUzMi9tYXJzaGFsLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglSZXR1cm4gYW4gZXJyb3IgaW4gQ29NYXJzaGFsSW50ZXJmYWNlIGlmIHRoZSBJVW5rbm93biBwb2ludGVyIGlzIE5VTEwKCWFuZCBkb24ndCBjcmFzaC4KCgkqIGRsbHMvc2hlbGwzMi9zaGxmc2JpbmQuYywgaW5jbHVkZS9zaGxvYmouaDoKCUdlIHZhbiBHZWxkb3JwIDxndmdAcmVhY3Rvcy5jb20+CglGaXggSUZpbGVTeXN0ZW1CaW5kRGF0YSBtZXRob2Qgb3JkZXIuCgoJKiBkbGxzL3dpbm1tL2RyaXZlci5jLCBkbGxzL3dpbm1tL21jaS5jLCBkbGxzL3dpbm1tL3dpbmVtbS5oLAoJICBkbGxzL3dpbm1tL3dpbm1tLmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJTG9va3VwIGRyaXZlciBpbmZvcm1hdGlvbiBpbiByZWdpc3RyeSBhbmQgc3lzdGVtLmluaS4KCU1ha2UgdGhlIGNvZGUgaW5zcGVjdCB0aGUgcmVnaXN0cnkvc3lzdGVtLmluaSBhdCBjYWxsIHRpbWUsIHJhdGhlcgoJdGhlbiBpbml0aWFsaXphdGlvbiB0aW1lLgoJQ29kZSBjbGVhbnVwcy4KCgkqIGRsbHMvbXNhY20vTWFrZWZpbGUuaW4sIGRsbHMvbXNhY20vaW50ZXJuYWwuYzoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglMb29rIHVwIGRyaXZlciBpbmZvIGluIHRoZSByZWdpc3RyeSBhcyB3ZWxsIGFzIGluIHN5c3RlbS5pbmkuCgoJKiB3aW5kb3dzL2RyaXZlci5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJU21hbGwgZG9jdW1lbnRhdGlvbiBjbGVhbnVwLgoKMjAwNC0wNi0yOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbXN2aWRlby9NYWtlZmlsZS5pbiwgZGxscy9tc3ZpZGVvL21zdmlkZW8xNi5jLAoJICBkbGxzL21zdmlkZW8vbXN2aWRlb19tYWluLmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJTG9vayB1cCBkcml2ZXIgaW5mbyBpbiB0aGUgcmVnaXN0cnkgYXMgd2VsbCBhcyBpbiBzeXN0ZW0uaW5pLgoJQ2xlYW51cCBoYW5kbGluZyBvZiBkcml2ZXIgZW51bWVyYXRpb24gYW5kIGZvdXJDQy4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jLCBkbGxzL21zaS9tc2kuc3BlYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgTXNpR2V0U291cmNlUGF0aC4KCUltcGxlbWVudCBCaW5hcnkgYW5kIER3b3JkIGRhdGEgdHlwZSBmb3IgcmVnaXN0cnkgd3JpdGluZy4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jLCBkbGxzL21zaS9tc2kuYywgZGxscy9tc2kvbXNpLnNwZWM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJSGFuZGxlIGN1c3RvbSBhY3Rpb25zIHR5cGUgMSBhbmQgMi4KCgkqIGRsbHMvbXNpL21zaS5jLCBkbGxzL21zaS9tc2lwcml2LmgsIGRsbHMvbXNpL3RhYmxlLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglEdW1wIGRhdGFiYXNlIHRhYmxlIG5hbWVzIG9uIHN0YXJ0dXAuCgoJKiBkbGxzL3gxMWRydi93aW5wb3MuYywgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLAoJICBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvcmVnaW9uLmMsIHNlcnZlci9yZXF1ZXN0LmgsCgkgIHNlcnZlci90cmFjZS5jLCBzZXJ2ZXIvdXNlci5oLCBzZXJ2ZXIvd2luZG93LmMsIHdpbmRvd3Mvd2lucG9zLmM6CglBZGRlZCBzdXBwb3J0IGZvciB3aW5kb3cgcmVnaW9ucyBpbiB0aGUgc2VydmVyLgoKCSogZGxscy9tc2kvbXNpcXVlcnkuYywgZGxscy9tc2kvcmVjb3JkLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggcmVmY291bnRpbmcgb2Ygc3RyZWFtcy4KCgkqIG9iamVjdHMvcmVnaW9uLmM6IElnbm9yZSBlbXB0eSByZWN0YW5nbGVzIGluIEV4dENyZWF0ZVJlZ2lvbi4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jLCBkbGxzL21zaS9jb25kLnksIGRsbHMvbXNpL21zaS5zcGVjLAoJICBkbGxzL21zaS9tc2lwcml2LmgsIGRsbHMvbXNpL21zaXF1ZXJ5LmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IE1zaUdldFRhcmdldFBhdGhBL1cuCgoJKiBkbGxzL21zaS9tc2lwcml2LmgsIGRsbHMvbXNpL21zaXF1ZXJ5LmMsIGRsbHMvbXNpL3JlY29yZC5jLAoJICBkbGxzL21zaS90YWJsZS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWxsb3cgcmVhZGluZyByZWNvcmRzIGNvbnRhaW5pbmcgc3RyZWFtcy4KCjIwMDQtMDYtMjggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL21zaS9jb25kLnk6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVkIHRoZSB3YXkgdGhlIHBhcnNlciB0YWtlcyBpbnB1dCBzdHJpbmdzLgoKCSogZGxscy94MTFkcnYvd2lucG9zLmM6CglVc2UgWDExRFJWX0dldFJlZ2lvbkRhdGEgdG8gaW1wbGVtZW50IFgxMURSVl9TZXRXaW5kb3dSZ24gaW5zdGVhZCBvZgoJZHVwbGljYXRpbmcgdGhhdCBmdW5jdGlvbmFsaXR5LgoKCSogZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYzogRmlsaXAgTmF2YXJhIDx4bmF2YXJhQHZvbG55LmN6PgoJU2V0IHRoZSBwYWxldHRlIGZvciBpbWFnZSBsaXN0IERJQnMgdGhhdCBoYXMgOCBvciBsZXNzIGJpdHMgcGVyCglwaXhlbC4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbHRpcHMuYywgaW5jbHVkZS9jb21tY3RybC5oOgoJUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCVN0YXJ0IG9mIGJhbGxvb24gdGlwIHN1cHBvcnQuCgoJKiBwcm9ncmFtcy91bmluc3RhbGxlci9tYWluLmM6IEhhbm51IFZhbHRvbmVuIDxIYW5udS5WYWx0b25lbkBodXQuZmk+CglEb24ndCBkaXNwbGF5IHRoZSBjb21tYW5kbGluZSB0ZXh0IChBIHRyYWNlIHN0aWxsIGdpdmVzIGl0KS4KCVNldCBhIGZldyBmb250cyB0byBhdm9pZCB1c2luZyB0aGUgaG9ycmlibGUgc3lzdGVtIGZvbnQgb24gbmF0aXZlCglXaW5kb3dzLgoKCSogZGxscy92ZXJzaW9uL3Rlc3RzL2luZm8uYzoKCVN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJRml4ZWQgdGVzdHMgb2YgR2V0RmlsZVZlcnNpb25JbmZvU2l6ZUEgZm9yIHdpbjk4IC8gWFAuCgoJKiBkbGxzL29sZWF1dDMyL3RtYXJzaGFsLmM6IE1pa2UgSGVhcm4gPG1oQGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2UgdHlwZWxpYiBtYXJzaGFsbGVyIHNhZmUgZm9yIHN5c3RlbXMgdGhhdCBkb24ndCBhbGxvdyBleGVjdXRhYmxlCgljb2RlIG9uIHRoZSBoZWFwLCBwbHVnIGEgbGVhayBvZiB0aGUgYXNzZW1ibHkgc3R1YiBibG9jay4KCgkqIHByb2dyYW1zL2Nsb2NrL0VzLnJjLCBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZV9Fcy5yYywKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbnNvbGVfcmVzLnJjLCBwcm9ncmFtcy93aW5lZmlsZS9Fcy5yYywKCSAgcHJvZ3JhbXMvd2luZWZpbGUvcnNyYy5yYzoKCUpvc+kgTWFudWVsIEZlcnJlciBPcnRpeiA8am1mbzE5ODJAeWFob28uZXM+CglBZGRlZCBzb21lIFNwYW5pc2ggdHJhbnNsYXRpb25zLgoKCSogZGxscy9hdmlmaWwzMi9hdmlmaWxlX0phLnJjLCBkbGxzL2F2aWZpbDMyL3JzcmMucmMsIGRsbHMvbXByL21wci5yYywKCSAgZGxscy9tcHIvbXByX0phLnJjLCBkbGxzL21zYWNtL21zYWNtLnJjLCBkbGxzL21zYWNtL21zYWNtX0phLnJjLAoJICBkbGxzL29sZWRsZy9vbGVkbGdfSmEucmMsIGRsbHMvb2xlZGxnL3JzcmMucmMsIGRsbHMvc2VyaWFsdWkvSmEucmMsCgkgIGRsbHMvc2VyaWFsdWkvc2VyaWFsdWlfcmMucmMsIGRsbHMvc2V0dXBhcGkvSmEucmMsCgkgIGRsbHMvc2V0dXBhcGkvc2V0dXBhcGkucmMsIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnJjLAoJICBkbGxzL3NobHdhcGkvc2hsd2FwaV9KYS5yYywgZGxscy93aW5lcHMvcnNyYy5yYywKCSAgZGxscy93aW5lcHMvd3BzX0phLnJjLCBkbGxzL3dpbm1tL3dpbm1tX0phLnJjLAoJICBkbGxzL3dpbm1tL3dpbm1tX3Jlcy5yYywgcHJvZ3JhbXMvbm90ZXBhZC9KYS5yYywKCSAgcHJvZ3JhbXMvbm90ZXBhZC9yc3JjLnJjLCBwcm9ncmFtcy9yZWdlZGl0L0phLnJjLAoJICBwcm9ncmFtcy9yZWdlZGl0L3JzcmMucmM6CglIYWppbWUgU2VnYXdhIDx3aW5ldGlwc0BzaWRlbmV0LmRkby5qcD4KCUFkZGVkIHNvbWUgSmFwYW5lc2UgdHJhbnNsYXRpb25zLgoKCSogZGxscy9tc2kvTWFrZWZpbGUuaW4sIGRsbHMvbXNpL2FjdGlvbi5jLCBkbGxzL21zaS9jb25kLnksCgkgIGRsbHMvbXNpL2hhbmRsZS5jLCBkbGxzL21zaS9tc2kuYywgZGxscy9tc2kvbXNpLnNwZWMsCgkgIGRsbHMvbXNpL21zaXByaXYuaCwgZGxscy9tc2kvc3FsLnksIGRsbHMvbXNpL3RhYmxlLmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJU3RhcnQgaW1wbGVtZW50aW5nIGFjdGlvbnMuCgoJKiBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbG9sZS5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywKCSAgZGxscy9zaGVsbDMyL3NobGZpbGVvcC5jLCBpbmNsdWRlL3NobG9iai5oOgoJR2UgdmFuIEdlbGRvcnAgPGd2Z0ByZWFjdG9zLmNvbT4KCU1hdGNoIHByb3RvdHlwZXMgdG8gUGxhdGZvcm0gU0RLLgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliLmM6IE1pa2UgSGVhcm4gPG1oQGNvZGV3ZWF2ZXJzLmNvbT4KCUR1bXAgZnVuY3Rpb24gcmV0dXJuIHR5cGUgaW4gdHlwZWxpYiB0cmFjZXMsIGFkZCB0cmFjZSBzdXBwb3J0IGZvcgoJVlRfSFJFU1VMVC4KCgkqIGRsbHMvb2xlYXV0MzIvb2FpZGxfcC5jOiBNaWtlIEhlYXJuIDxtaEBjb2Rld2VhdmVycy5jb20+CglDaGFuZ2UgUkVGSUlEIHRvIElJRCogZm9yIHN0YWNrIGRlY2xhcmF0aW9ucyB0byBhdm9pZCBpbml0aWFsaXplcnMKCWJlaW5nIGRpc2NhcmRlZC4KCgkqIGRsbHMvc2hsd2FwaS90ZXN0cy9vcmRpbmFsLmM6CglTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCVNraXAgdGVzdHMgb2YgR2V0QWNjZXB0TGFuZ3VhZ2VzQSBpZiBhIGNvcnJlY3QgY2FsbCB0byB0aGUgZnVuY3Rpb24KCWRvZXMgbm90IHJldHVybiBhbnl0aGluZyB1c2VmdWwuCgoJKiBkbGxzL3BzYXBpL3Rlc3RzL21vZHVsZS5jOgoJU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtTGluZS5jb20+CglTa2lwIHRlc3RzIHdpdGhvdXQgZXJyb3IgaWYgcHNhcGkuZGxsIGNvdWxkIG5vdCBiZSBsb2FkZWQuCgoJKiBkb2N1bWVudGF0aW9uL3NhbXBsZXMvY29uZmlnOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQ2hhbmdlIGRlc2t0b3Agc2l6ZSBmb3IgX0lOUzU1NzYuX01QLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6IFJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CgktIENsZWFuIHVwIHRoZSBtYXNrIGRyYXdpbmcgY29kZS4KCS0gSW1wcm92ZSBiaXRtYXAgbm90IGZvdW5kIG1lc3NhZ2UuCgoJKiBkbGxzL3dpbmluZXQvaHR0cC5jLCBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYzoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglGaXggdGhlIGZ1bmN0aW9uIG5hbWVzIGluIHNvbWUgb2YgdGhlIGNvbW1lbnRzLgoKCSogbG9hZGVyL3ByZWxvYWRlci5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglEZWZpbmUgQVRfU1lTSU5GT18qIGlmIGl0J3MgbWlzc2luZy4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaDogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUNvcnJlY3Qgc3RydWN0IHRhZyBuYW1lIGZvciBVREFDQ0VMLgoJQWRkIG1pc3NpbmcgVENJVEVNSEVBREVSIGFuZCBvbGQgbmFtZXMgVENfSVRFTUhFQURFUi9UQ19JVEVNLgoKMjAwNC0wNi0yNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbXNpL21zaXByaXYuaCwgZGxscy9tc2kvc3RyaW5nLmMsIGRsbHMvbXNpL3RhYmxlLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglQdWxsIHRoZSBjb2RlcGFnZSBmcm9tIHRoZSBzdHJpbmcgdGFibGUuCgoJKiBkbGxzL21zaS9zcWwueSwgZGxscy9tc2kvd2hlcmUuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBjcmFzaCB0aGF0IG9jY3VycmVkIHdoZW4gYW4gaW52YWxpZCBxdWVyeSBzdHJpbmcgd2FzIGRlbGV0ZWQKCXR3aWNlLgoKCSogbG9hZGVyL3ByZWxvYWRlci5jOgoJUmVtb3ZlIHRoZSBBVF9TWVNJTkZPIGFuZCBBVF9TWVNJTkZPX0VIRFIgdmFsdWVzIGlmIHRoZSBzeXNpbmZvIHBhZ2UKCWlzIGluIG9uZSBvZiBvdXIgcmVzZXJ2ZWQgcmFuZ2VzLgoKCSogZGxscy9tc2kvbXNpcHJpdi5oLCBkbGxzL21zaS9xdWVyeS5oLCBkbGxzL21zaS9zcWwueSwKCSAgZGxscy9tc2kvc3RyaW5nLmMsIGRsbHMvbXNpL3doZXJlLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgcXVlcmllcyBieSBzdHJpbmcgdmFsdWUuCgoJKiBpbmNsdWRlL21zaS5oLCBpbmNsdWRlL21zaXF1ZXJ5Lmg6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJVXBkYXRlIGhlYWRlciBkZWNsYXJhdGlvbnMgZm9yIG1zaS4KCjIwMDQtMDYtMjUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3VzZXIvdGVzdHMvLmN2c2lnbm9yZSwgZGxscy91c2VyL3Rlc3RzL01ha2VmaWxlLmluLAoJICBkbGxzL3VzZXIvdGVzdHMvY2xpcGJvYXJkLmMsIGRsbHMveDExZHJ2L2NsaXBib2FyZC5jLAoJICBzZXJ2ZXIvY2xpcGJvYXJkLmMsIHdpbmRvd3MvY2xpcGJvYXJkLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkIGEgdGVzdCBjYXNlIGZvciBjbGlwYm9hcmQgZnVuY3Rpb25hbGl0eSBhbmQgZml4IHNvbWUgYnVncyByZXZlYWxlZAoJYnkgaXQuCgoJKiBkbGxzL21zdmNydC9NYWtlZmlsZS5pbiwgZGxscy9tc3ZjcnQvY29uc29sZS5jLCBkbGxzL21zdmNydC9jcHAuYywKCSAgZGxscy9tc3ZjcnQvY3BwZXhjZXB0LmMsIGRsbHMvbXN2Y3J0L2N0eXBlLmMsIGRsbHMvbXN2Y3J0L2RhdGEuYywKCSAgZGxscy9tc3ZjcnQvZGlyLmMsIGRsbHMvbXN2Y3J0L2Vudmlyb24uYywgZGxscy9tc3ZjcnQvZXJybm8uYywKCSAgZGxscy9tc3ZjcnQvZXhjZXB0LmMsIGRsbHMvbXN2Y3J0L2V4aXQuYywgZGxscy9tc3ZjcnQvZmlsZS5jLAoJICBkbGxzL21zdmNydC9oZWFwLmMsIGRsbHMvbXN2Y3J0L2xvY2FsZS5jLCBkbGxzL21zdmNydC9tYWluLmMsCgkgIGRsbHMvbXN2Y3J0L21hdGguYywgZGxscy9tc3ZjcnQvbWJjcy5jLCBkbGxzL21zdmNydC9taXNjLmMsCgkgIGRsbHMvbXN2Y3J0L21zdmNydC5oLCBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYywgZGxscy9tc3ZjcnQvcHJvY2Vzcy5jLAoJICBkbGxzL21zdmNydC9zY2FuZi5jLCBkbGxzL21zdmNydC9zdHJpbmcuYywKCSAgZGxscy9tc3ZjcnQvdGVzdHMvLmN2c2lnbm9yZSwgZGxscy9tc3ZjcnQvdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvbXN2Y3J0L3Rlc3RzL2hlYWRlcnMuYywgZGxscy9tc3ZjcnQvdGhyZWFkLmMsCgkgIGRsbHMvbXN2Y3J0L3RpbWUuYywgZGxscy9tc3ZjcnQvd2NzLmMsIGluY2x1ZGUvbXN2Y3J0L2NvbmlvLmgsCgkgIGluY2x1ZGUvbXN2Y3J0L2N0eXBlLmgsIGluY2x1ZGUvbXN2Y3J0L2RpcmVjdC5oLAoJICBpbmNsdWRlL21zdmNydC9kb3MuaCwgaW5jbHVkZS9tc3ZjcnQvZWguaCwgaW5jbHVkZS9tc3ZjcnQvZXJybm8uaCwKCSAgaW5jbHVkZS9tc3ZjcnQvZmNudGwuaCwgaW5jbHVkZS9tc3ZjcnQvZmxvYXQuaCwgaW5jbHVkZS9tc3ZjcnQvaW8uaCwKCSAgaW5jbHVkZS9tc3ZjcnQvbG9jYWxlLmgsIGluY2x1ZGUvbXN2Y3J0L21hbGxvYy5oLAoJICBpbmNsdWRlL21zdmNydC9tYXRoLmgsIGluY2x1ZGUvbXN2Y3J0L21iY3R5cGUuaCwKCSAgaW5jbHVkZS9tc3ZjcnQvbWJzdHJpbmcuaCwgaW5jbHVkZS9tc3ZjcnQvcHJvY2Vzcy5oLAoJICBpbmNsdWRlL21zdmNydC9zZWFyY2guaCwgaW5jbHVkZS9tc3ZjcnQvc2V0am1wLmgsCgkgIGluY2x1ZGUvbXN2Y3J0L3N0ZGRlZi5oLCBpbmNsdWRlL21zdmNydC9zdGRpby5oLAoJICBpbmNsdWRlL21zdmNydC9zdGRsaWIuaCwgaW5jbHVkZS9tc3ZjcnQvc3RyaW5nLmgsCgkgIGluY2x1ZGUvbXN2Y3J0L3N5cy9zdGF0LmgsIGluY2x1ZGUvbXN2Y3J0L3N5cy90aW1lYi5oLAoJICBpbmNsdWRlL21zdmNydC9zeXMvdHlwZXMuaCwgaW5jbHVkZS9tc3ZjcnQvc3lzL3V0aW1lLmgsCgkgIGluY2x1ZGUvbXN2Y3J0L3RpbWUuaCwgaW5jbHVkZS9tc3ZjcnQvd2NoYXIuaCwKCSAgaW5jbHVkZS9tc3ZjcnQvd2N0eXBlLmgsIGluY2x1ZGUvd2luc29jay5oOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVNwbGl0IHRoZSBNU1ZDUlQgaW1wbGVtZW50YXRpb24gaGVhZGVycyBmcm9tIHRoZSBwdWJsaWMgaGVhZGVycy4KCUZpeCBzb21lIG5hbWluZyBjb252ZW50aW9ucyBhYmVycmF0aW9ucy4KCUFkZCB0ZXN0cyB0byBlbnN1cmUgY29uc2lzdGVuY3kgYmV0d2VlbiB0aGUgdHdvIHNldHMgb2Ygc3ltYm9scy4KCgkqIGluY2x1ZGUvd2luZGVmLmgsIGluY2x1ZGUvd2ludXNlci5oOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUNvcnJlY3QgdGFnIG5hbWVzIGZvciBSRUNUTCBhbmQgU0NST0xMSU5GTyBzdHJ1Y3RzLgoKCSogZGxscy9yc2FiYXNlL21haW4uYzoKCU1pY2hhZWwgSnVuZyA8bWp1bmdAcmJnLmluZm9ybWF0aWsudHUtZGFybXN0YWR0LmRlPgoJQ2hhbmdlZCB0eXBlIG9mICJTaWduYXR1cmUiIHJlZ2lzdHJ5IGtleSB2YWx1ZSB0byBSRUdfQklOQVJZLgoKMjAwNC0wNi0yNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL2hlYXAuYzoKCUluIEdsb2JhbE1lbW9yeVN0YXR1cywgYWxzbyBjYXAgdGhlIHN1bSBvZiBkd0F2YWlsUGh5cyBhbmQKCWR3QXZhaWxQYWdlRmlsZSBhdCAyR2IgdG8gYXZvaWQgYSBidWcgaW4gUGhvdG9zaG9wIDQuCgoJKiBsb2FkZXIva3RocmVhZC5jOgoJVXNlIHdpbmVfZGxzeW0gaW5zdGVhZCBvZiBkbHN5bSB0byBhdm9pZCB0aGUgZ2xpYmMgZGxlcnJvciBidWcuCglDYWxsIGRsc3ltIHdpdGggUlRMRF9ERUZBVUxUIGZvciBzeW1ib2xzIHRoYXQgd2UgZG9uJ3QgcmVkZWZpbmUgdG8KCXdvcmsgYXJvdW5kIGFub3RoZXIgZ2xpYmMgYnVnLgoKCSogZGxscy94MTFkcnYvd2lucG9zLmM6IFJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CglGaXggc21hbGwgbWlzdGFrZSBpbiB0aGUgcHJldmlvdXMgdmlzaWJsZSByZWdpb24gcGF0Y2guCgoyMDA0LTA2LTIzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy91c2VyL3Rlc3RzL21zZy5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkIGEgcHJvdG90eXBlIGZvciBNREkgbWVzc2FnZSB0ZXN0cy4KCgkqIHdpbmRvd3MvbWRpLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglNYWtlIHN1cmUgdGhhdCBib3RoIGRlYWN0aXZhdGVkIGFuZCBhY3RpdmF0ZWQgTURJIGNoaWxkcmVuIHJlY2VpdmUKCVdNX01ESUFDVElWQVRFIG1lc3NhZ2UgaW4gYWxsIGNhc2VzLgoKCSogZGxscy94MTFkcnYvd2lucG9zLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglXTV9XSU5ET1dQT1NDSEFOR0VEIHNob3VsZCBhbHdheXMgY29udGFpbiBhIGZpbmFsIHdpbmRvdyBwb3NpdGlvbi4KCgkqIGRsbHMveDExZHJ2L3dpbnBvcy5jLCBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsCgkgIHNlcnZlci9NYWtlZmlsZS5pbiwgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3JlZ2lvbi5jLAoJICBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvdHJhY2UuYywgc2VydmVyL3VzZXIuaCwgc2VydmVyL3dpbmRvdy5jOgoJTW92ZWQgdmlzaWJsZSByZWdpb24gY2FsY3VsYXRpb24gdG8gdGhlIHNlcnZlci4KCgkqIHdpbmRvd3MvbXVsdGltb24uYzoKCUZpeGVkIHdyb25nIFVuaWNvZGUgc3RyaW5nIHN5bnRheCBpbiBHZXRNb25pdG9ySW5mb1cuCgoJKiBkbGxzL29sZWF1dDMyL3RtYXJzaGFsLmMsIGRsbHMvcnBjcnQ0L3JwY19iaW5kaW5nLmM6CglNaWtlIEhlYXJuIDxtaEBjb2Rld2VhdmVycy5jb20+CgktIERvbid0IEVSUiBvbiBhIHVzZWQgY29ubmVjdGlvbiBiZWluZyBkZXN0cm95ZWQuCgktIERvbid0IHByaW50IGFuIGV4dHJhIG5ld2xpbmUgaW4gdGhlIG9sZXJlbGF5IGNvZGUuCgoJKiBwcm9ncmFtcy93aW5lZGJnL2RiZy55LCBwcm9ncmFtcy93aW5lZGJnL2RlYnVnLmwsCgkgIHByb2dyYW1zL3dpbmVkYmcvZGVidWdnZXIuaCwgcHJvZ3JhbXMvd2luZWRiZy9zdGFjay5jLAoJICBwcm9ncmFtcy93aW5lZGJnL3dpbmVkYmcuYzoKCU1pa2UgSGVhcm4gPG1pa2VAbmF2aS5jeD4KCUFkZCBhIC0tY29tbWFuZCBvcHRpb24gdG8gd2luZWRiZywgYWRkIGFuICJhbGwiIG9wdGlvbiB0byB0aGUKCWJhY2t0cmFjZSBjb21tYW5kLgoKMjAwNC0wNi0yMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbnRkbGwvdmlydHVhbC5jOgoJV2Ugbm8gbG9uZ2VyIG5lZWQgdG8gbWFrZSB0aGUgaW1wb3J0IGRpcmVjdG9yeSB3cml0YWJsZSwgdGhlIGxvYWRlcgoJdGFrZXMgY2FyZSBvZiB0aGF0IG5vdy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBsb2FkZXIvTWFrZWZpbGUuaW4sIGxvYWRlci9wcmVsb2FkZXIuYzoKCURvIGRpcmVjdCBMaW51eCBzeXN0ZW0gY2FsbHMgaW4gdGhlIHByZWxvYWRlciB0byBhdm9pZCB0cm91YmxlIHdpdGgKCXNvbWUgYnJva2VuIHN0YXRpYyBsaWJjcy4KCgkqIGRsbHMvbnRkbGwvbG9hZGVyLmM6IEZpbGlwIE5hdmFyYSA8bmF2YXJhZkByZWFjdG9zLmNvbT4KCVVucHJvdGVjdCBJbXBvcnQgQWRkcmVzcyBUYWJsZSB3aGlsZSBmaWxsaW5nIGl0LgoKCSogcHJvZ3JhbXMvd2luZWRiZy9zdGFjay5jOiBFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCUZpeCBjb21waWxlIGVycm9yIG9uIG5vbi1pMzg2LgoKMjAwNC0wNi0yMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvc2V0dXBhcGkvc2V0dXBjYWIuYywgZGxscy94MTFkcnYva2V5Ym9hcmQuYywKCSAgcHJvZ3JhbXMvd2luZWxhdW5jaGVyLmluLCB3aW5kb3dzL21zZ2JveC5jOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJUmVwbGFjZSBzb21lIG1vcmUgLWRlYnVnbXNnIHJlZmVyZW5jZXMgZm9yIFdJTkVERUJVRy4KCgkqIGRsbHMvbnRkbGwvdmVyc2lvbi5jOiBNaWtlIEhlYXJuIDxtaWtlQG5hdmkuY3g+CglEZWZhdWx0IHRvIFdpbjk4IGluIERMTCBsaW5rYWdlIGhldXJpc3RpY3MuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9DYS5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfQ24ucmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0NzLnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9EYS5yYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfRGUucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0VuLnJjLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9Fby5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfRXMucmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0ZpLnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9Gci5yYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfSHUucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0l0LnJjLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9KYS5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfS28ucmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX05sLnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9Oby5yYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfUGwucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX1B0LnJjLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9SdS5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfU2kucmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX1NrLnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9Tdi5yYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfVWsucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX1dhLnJjLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9aaC5yYzoKCVJveWNlIE1pdGNoZWxsIElJSSA8cm95Y2UzQGV2MS5uZXQ+CglTaGVsbDMyIHJ1biBkaWFsb2cgY29tYm9ib3ggc2hvdWxkIGFsc28gaGF2ZSBXU19UQUJTVE9QIHN0eWxlLgoKCSogZGxscy9kM2Q4L3V0aWxzLmM6IENocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCVNvbWUgbW9yZSB0ZXh0dXJlIG9wcyBmaXhlcy4KCjIwMDQtMDYtMTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3gxMWRydi93aW5wb3MuYzoKCU9ubHkgdW5tYXAgdGhlIHdpbmRvdyB3aGVuIGl0IGdldHMgbW92ZWQgb2ZmLXNjcmVlbiBieSB0aGUgYXBwLCBub3QgYnkKCXRoZSB3aW5kb3cgbWFuYWdlci4KCgkqIGRvY3VtZW50YXRpb24vc2FtcGxlcy9jb25maWcsCgkgIHByb2dyYW1zL3dpbmVtZW51YnVpbGRlci93aW5lbWVudWJ1aWxkZXIuYzoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkBhbHVtLndwaS5lZHU+CglIYXJkY29kZSAid2luZXNoZWxsbGluayIgaW4gd2luZW1lbnVidWlsZGVyLCByZW1vdmUgaXQgZnJvbSB0aGUgY29uZmlnCglmaWxlLgoKCSogY29udHJvbHMvZWRpdC5jOiBLcmlzaG5hIE11cnRoeSA8S3Jpc2huYS5NdXJ0aHlAZ3VwdGF3b3JsZHdpZGUuY29tPgoJTW9kaWZpZWQgRURJVF9FTV9VbmRvKCk6IFJlbW92ZWQgdW5kbyBidWZmZXIgbGVuZ3RoIGNoZWNrIGZvcgoJZW1wdHkuIEVESVRfRU1fUmVwbGFjZVNlbCgpIGlzIGNhbGxlZCB3aXRoIHNlbmRfdXBkYXRlIHBhcmFtZXRlciBzZXQKCXRvIFRSVUUuCgoJKiB3aW5kb3dzL21zZ2JveC5jOiBNaWtlIEhlYXJuIDxtaWtlQG5hdmkuY3g+CglBZGQgYSBkZWRpY2F0ZWQgZGVidWcgY2hhbm5lbCBmb3IgbWVzc2FnZSBib3hlcyB3aGljaCBvdXRwdXRzIHRoZQoJY29udGVudHMgb2YgdGhlIG1lc3NhZ2UuCgoJKiBkbGxzL3gxMWRydi93aW5wb3MuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVNob3dXaW5kb3cgc2hvdWxkbid0IGZpeCBTV1BfIGZsYWdzLCBpdCdzIHRoZSBqb2Igb2YgU2V0V2luZG93UG9zLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGluY2x1ZGUvY29uZmlnLmguaW4sCgkgIHRvb2xzL3dpbmVidWlsZC9pbXBvcnQuYzoKCVBpZXJyZSBkJ0hlcmJlbW9udCA8c3RlZ2VmaW5AZnJlZS5mcj4KCS0gRGV0ZWN0aW9uIG9mIC5zaXplIGluc3RydWN0aW9uLgoJLSBEZXRlY3Rpb24gb2YgdGhlIGFzc2VtYmxlciBuYW1lIHByZWZpeC4KCgkqIGRsbHMvbnRkbGwvcmVsYXkuYzogUGllcnJlIGQnSGVyYmVtb250IDxzdGVnZWZpbkBmcmVlLmZyPgoJRml4IGEgY29tcGlsZSBlcnJvciBmb3IgU05PT1BfR2V0UHJvY0FkZHJlc3MgYW5kIFJFTEFZX0dldFByb2NBZGRyZXNzCglvbiBub24taTM4Ni4KCgkqIGRsbHMvdXNlci90ZXN0cy9tc2cuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCB0ZXN0cyBmb3IgY2hpbGQgYWN0aXZhdGlvbiBieSBTaG93V2luZG93L1NldFdpbmRvd1Bvcy4KCgkqIGRsbHMvZ2RpL2VuaG1mZHJ2L2luaXQuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCURvIG5vdCBhbGxvdyBjcmVhdGlvbiBvZiBub3QgYWxpZ25lZCBFTUYgcmVjb3JkcyBieSBHREkgY29kZS4KCgkqIGNvbnRyb2xzL21lbnUuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVVzZSBiZXR0ZXIgZGltZW5zaW9ucyBmb3IgTURJIHN5c3RlbSBtZW51IGJ1dHRvbnMgdG8gYXZvaWQgTURJIGNsaWVudAoJd2luZG93IHJlc2l6aW5nLgoKCSogZGxscy9zaGx3YXBpL3Rlc3RzL29yZGluYWwuYzoKCVN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJQWRkIGxvZ2dpbmcgdG8gdGhlIEdldEFjY2VwdExhbmd1YWdlc0EgdGVzdHMuCgoJKiBkbGxzL250ZGxsL2xvYWRlci5jLCBkbGxzL250ZGxsL250ZGxsX21pc2MuaCwgZGxscy9udGRsbC92aXJ0dWFsLmM6CglBZGRlZCBzdXBwb3J0IGZvciB0aGUgSU1BR0VfRklMRV9MQVJHRV9BRERSRVNTX0FXQVJFIGZsYWcuCgoJKiBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW4sIGRsbHMvc2hlbGwzMi9jbGlwYm9hcmQuYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLCBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmMsCgkgIGRsbHMvc2hlbGwzMi9zaHZfYmdfY21lbnUuYywgZGxscy9zaGVsbDMyL3Nodl9pdGVtX2NtZW51LmM6CglSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJTWFrZSBvbGUzMiBhIGRlbGF5LWxvYWQgaW1wb3J0IG9mIHNoZWxsMzIuCgoyMDA0LTA2LTE3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9udGRsbC9jcml0c2VjdGlvbi5jOgoJVGFrZSBzcGluIGNvdW50IGludG8gYWNjb3VudCBpbiBSdGxFbnRlckNyaXRpY2FsU2VjdGlvbi4KCgkqIGRsbHMvbnRkbGwvZmlsZS5jOgoJRG9uJ3QgdXNlIGxzZWVrIHdoZW4gdHJ1bmNhdGluZyBhIGZpbGUgdG8gYXZvaWQgY29ycnVwdGluZyB0aGUgY3VycmVudAoJZmlsZSBwb3NpdGlvbi4KCgkqIGRsbHMvb2xlYXV0MzIvdG1hcnNoYWwuYzogTWlrZSBIZWFybiA8bWhAY29kZXdlYXZlcnMuY29tPgoJRml4IHR5cGVsaWIgbWFyc2hhbGxlciByZWxheWluZywgYWRkIGEgY29tbWVudCBkZXNjcmliaW5nIHdoYXQgaXQgaXMsCglkb24ndCBwcmludCB0aGUgdWdseSBMIiIgcGFydHMgb2YgVW5pY29kZSBzdHJpbmdzIGluIHRoZSByZWxheSB0cmFjZS4KCgkqIGRsbHMvZHNvdW5kL3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMvZHNvdW5kL3Rlc3RzL01ha2VmaWxlLmluLAoJICBkbGxzL2Rzb3VuZC90ZXN0cy9jYXB0dXJlLmMsIGRsbHMvZHNvdW5kL3Rlc3RzL2RzM2QuYywKCSAgZGxscy9kc291bmQvdGVzdHMvZHNvdW5kLmMsIGRsbHMvZHNvdW5kL3Rlc3RzL2Rzb3VuZF90ZXN0Lmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJU3BsaXQgdGhlICdkc291bmQnIHRlc3QgaW50byB0d28gcGFydHM6CgktIHRoZSBzb3VuZCBmb3JtYXQgdGVzdC4gUGxheXMgYSA1IHNlY29uZCByZWZlcmVuY2UgdG9uZSB0byBoZWxwCgkgIGRlYnVnIGlzc3VlcyB3aXRoIHRoZSB0b25lIGR1cmF0aW9uIGFuZCBoZWxwIGRldGVjdCBzdHV0dGVyIGlzc3Vlcy4KCSAgUHJpbnRzIGV4cGxhbmF0aW9ucyBkZXNjcmliaW5nIHRoZSBzb3VuZCBmb3JtYXQgaW50ZXJhY3RpdmUKCSAgdGVzdC4gVGhlbiBwbGF5cyBhIDEgc2Vjb25kIHRlc3QgdG9uZSBmb3IgZWFjaCBzdXBwb3J0ZWQgc291bmQKCSAgZm9ybWF0LgoJLSB0aGUgM0Qgc291bmQgdGVzdHMuIFBlcmZvcm1zIHRoZSB2b2x1bWUsIHBhbm5pbmcsIG1vdmluZyBsaXN0ZW5lcgoJICB0ZXN0cywgZXRjLgoKCSogcHJvZ3JhbXMvd2luZXRlc3QvTWFrZWZpbGUuaW46IEZlcmVuYyBXYWduZXIgPHdmZXJpQGFmYXZhbnQuZWx0ZS5odT4KCUluY2x1ZGUgbmV3IG9yIGZvcmdvdHRlbiB0ZXN0cy4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL3Byb2ZpbGUuYzoKCVN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJRml4IHRoZSBHZXRQcml2YXRlUHJvZmlsZUludEEgdGVzdHMgZm9yIHRoZSB3aW45eCBwbGF0Zm9ybS4KCgkqIGRsbHMvdXNlci90ZXN0cy93aW4uYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2UgdXNlci90ZXN0cy93aW4uYyB0ZXN0cyBwYXNzIHVuZGVyIFdpbmRvd3M5OC4KCgkqIHNlcnZlci9xdWV1ZS5jOgoJUHJvcGVybHkgcmVzZXQgbXNnX3RocmVhZCB3aGVuIHJlbGVhc2luZyB0aGUgdGhyZWFkIGlucHV0IHN0cnVjdHVyZS4KCgkqIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYzogUGllcnJlIGQnSGVyYmVtb250IDxzdGVnZWZpbkBmcmVlLmZyPgoJSGlkZSB0aGUgX2luaXQgYW5kIF9maW5pIHdyYXBwZXJzIG9uIGRhcndpbi4KCgkqIGRsbHMvb2xlMzIvbWFyc2hhbC5jOiBJdmFuIExlbyBQdW90aSA8cHVvdGlAaW53aW5kLml0PgoJUmVtb3ZlZCB0aGUgd2luZWRlZmF1bHQucmVnIG1lc3NhZ2UuCgoJKiBkbGxzL3JwY3J0NC9ycGNfYmluZGluZy5jLCBkbGxzL3JwY3J0NC9ycGNfc2VydmVyLmM6CglNaWtlIEhlYXJuIDxtaWtlQG5hdmkuY3g+CglSZW1vdmUgdGhlIFJQQyBjb25uZWN0aW9uIGNhY2hlIGFzIFdpbmRvd3MgZG9lcyBub3QgYWxsb3cgbXVsdGlwbGUKCWJpbmRzIG9uIHRoZSBzYW1lIGNvbm5lY3Rpb24uCgoJKiBpbmNsdWRlL3dpbnVzZXIuaDogQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJQWRkZWQgc29tZSBtaXNzaW5nIHN0YXRpYyBjb250cm9sIHN0eWxlcy4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL2RpcmVjdG9yeS5jOgoJQWRkZWQgYSBjb3VwbGUgb2YgdGVzdHMgZm9yIFNldEN1cnJlbnREaXJlY3RvcnlBLgoKCSogZGxscy93aW5lZG9zL2ludDIxLmM6CglDaGVjayBmb3Igbm9uLWV4aXN0ZW50IGRpcmVjdG9yeSBpbiBJTlQyMV9TZXRDdXJyZW50RGlyZWN0b3J5IHRvCglyZXR1cm4gYSBwcm9wZXIgZXJyb3Igd2hlbiB0aGUgZGlyZWN0b3J5IGlzIG5vdCBvbiB0aGUgY3VycmVudCBkcml2ZS4KCgkqIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsIGRsbHMvc2hsd2FwaS90ZXN0cy9vcmRpbmFsLmM6CglTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCUFkZGVkIHRlc3RzIGZvciBHZXRBY2NlcHRMYW5ndWFnZXNBLgoKMjAwNC0wNi0xNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvcnBjcnQ0L3JwY19iaW5kaW5nLmM6IE1pa2UgSGVhcm4gPG1pa2VAbmF2aS5jeD4KCUNvcnJlY3QgY29ubmVjdGlvbiByZWxlYXNlcyBvbiBlcnJvciBwYXRoIGluIFJQQ1JUNF9PcGVuQmluZGluZy4KCgkqIGRsbHMvd2luc3Bvb2wvdGVzdHMvaW5mby5jOgoJU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtTGluZS5jb20+CglBZGRlZCBzb21lIGxvZ2dpbmcgdG8gdGhlIEdldFByaW50ZXJEcml2ZXJEaXJlY3RvcnlBIHRlc3RzLgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglMb2cgdGhlIGZvcm1hdCB3aGVuIG1hcHBpbmcgdGhlIHNvdW5kIGRldmljZSAob3IgZmFpbGluZyB0bykuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9nZGkvZnJlZXR5cGUuYywgaW5jbHVkZS9jb25maWcuaC5pbiwKCSAgb2JqZWN0cy9mb250LmM6CglIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJQWRkIHN1cHBvcnQgZm9yIGJpdG1hcCBmb250cy4KCgkqIHByb2dyYW1zL3dpbmV0ZXN0L01ha2VmaWxlLmluOiBBZGRlZCBtaXNzaW5nIGRlcGVuZGVuY3kuCgoJKiBkbGxzL250ZGxsL2Nkcm9tLmM6IEdlcmFsZCBQZmVpZmVyIDxnZXJhbGRAcGZlaWZlci5jb20+CglSZW1vdmUgaW5jb3JyZWN0IHN1cHBvcnQgZm9yIEZyZWVCU0QgYW5kIE5ldEJTRCBpbgoJRFZEX1N0YXJ0U2Vzc2lvbigpLgoKCSogZGxscy9yc2FiYXNlL21haW4uYzogR2VyYWxkIFBmZWlmZXIgPGdlcmFsZEBwZmVpZmVyLmNvbT4KCUF2b2lkIHVudXNlZCB2YXJpYWJsZSB3YXJuaW5nLgoKCSogZGxscy94MTFkcnYveHJlbmRlci5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlIGFuIGluY29ycmVjdCBMZWF2ZUNyaXRpY2FsU2VjdGlvbi4KCgkqIGRsbHMva2VybmVsL25lX21vZHVsZS5jLCBkbGxzL2tlcm5lbC9uZV9zZWdtZW50LmMsCgkgIGRsbHMva2VybmVsL3RodW5rLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIHNvbWUgaWxsZWdhbCBsdmFsdWUgY2FzdHMgLyBpbmNyZW1lbnRzLgoKMjAwNC0wNi0xNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIFZFUlNJT04sIGNvbmZpZ3VyZSwgQU5OT1VOQ0UsIENoYW5nZUxvZzogUmVsZWFzZSAyMDA0MDYxNS4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KMjAwNC0wNi0xNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIEFVVEhPUlM6IFVwZGF0ZWQgYXV0aG9ycyBsaXN0LgoKCSogcHJvZ3JhbXMvd2luZXRlc3QvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvd2luZXRlc3QvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L1JFQURNRSwgcHJvZ3JhbXMvd2luZXRlc3QvZGlzdC5yYywKCSAgcHJvZ3JhbXMvd2luZXRlc3QvZ3VpLmMsIHByb2dyYW1zL3dpbmV0ZXN0L2d1aS5yYywKCSAgcHJvZ3JhbXMvd2luZXRlc3QvZ3VpcmVzLmgsIHByb2dyYW1zL3dpbmV0ZXN0L21haW4uYywKCSAgcHJvZ3JhbXMvd2luZXRlc3QvbWFrZXRlc3QsIHByb2dyYW1zL3dpbmV0ZXN0L3Jlc291cmNlLmgsCgkgIHByb2dyYW1zL3dpbmV0ZXN0L3NlbmQuYywgcHJvZ3JhbXMvd2luZXRlc3QvdXRpbC5jLAoJICBwcm9ncmFtcy93aW5ldGVzdC93aW5ldGVzdC5oLCBwcm9ncmFtcy93aW5ldGVzdC93aW5ldGVzdC5yYzoKCUZlcmVuYyBXYWduZXIgPHdmZXJpQGFmYXZhbnQuZWx0ZS5odT4KCS0gUmVzb3VyY2Ugc2NyaXB0IHJlc3RydWN0dXJpbmcuCgktIEJ1aWxkIGluZm8gZXQgYWwuIGlzIGdpdmVuIGJ5IGZpbGVzIGluc3RlYWQgb2YgZW52LiB2YXJzLgoJLSBTdG9yZSB0aGF0IGluZm9ybWF0aW9uIGluIHJlc291cmNlcy4KCS0gTWFrZSB0aGUgbWFpbiB3aW5kb3dzIG5vdCByZXNpemVhYmxlLgoJLSBJbnNpc3Qgb24gY3JlYXRpbmcgYSBmcmVzaCBsb2cgZmlsZS4KCS0gSW50cm9kdWNlIHRoZSBtYWtlIGRpc3QgdGFyZ2V0LgoKCSogbGlicy93aW5lL2NvbmZpZy5jLCBsb2FkZXIvcHJlbG9hZGVyLmM6CglBZGQgdGhlIHByZWxvYWRlciBpdHNlbGYgYXMgYXJndlswXSBhbmQgcmVtb3ZlIGl0IGFnYWluIGJlZm9yZSBydW5uaW5nCgl0aGUgcmVhbCBsb2FkZXIsIHRoaXMgd2F5IHRoZSBwcyBvdXRwdXQgbWFrZXMgbW9yZSBzZW5zZS4KCgkqIGRsbHMvZG1sb2FkZXIvbG9hZGVyLmMsIGRsbHMva2VybmVsL3Rlc3RzL2xvY2FsZS5jLAoJICBkbGxzL21zaS9zdHJpbmcuYywgbG9hZGVyL21haW4uaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQXNzb3J0ZWQgc3BlbGxpbmcgYW5kIGNhc2UgZml4ZXMuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCB0aGUgY2hlY2sgZm9yIFNORENUTF9EU1BfR0VUQ0FQUyBzbyB0aGF0IGl0IGlzIGNvbXBsaWFudCB3aXRoIHRoZQoJT1NTIHNwZWNpZmljYXRpb24uCglPbmx5IHRlc3QgdGhlIGRpZmZlcmVudCBmb3JtYXRzIGlmIHRyYWNpbmcgaXMgb24uCgoJKiBkbGxzL3dpbnNwb29sL3Rlc3RzL2luZm8uYzoKCVN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJRml4IHRoZSB0ZXN0cyBvZiBHZXREZWZhdWx0UHJpbnRlckEgb24gd2luMmsgaWYgbm8gZGVmYXVsdCBwcmludGVyIGlzCgljb25maWd1cmVkLgoKCSogZGxscy93aW5tbS93aW5lYXJ0cy9hdWRpby5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUNoYW5nZSB0aGUgQVJUU19Jbml0KCkgZXJyb3IgbWVzc2FnZSBmcm9tIGFuIEVSUigpIHRvIGEgV0FSTigpIHNpbmNlCglpdCBjYW4gaGFwcGVuIGluIHBlcmZlY3RseSBub3JtYWwgY29uZGl0aW9ucy4KCgkqIGluY2x1ZGUvZHBhZGRyLmgsIGluY2x1ZGUvdXh0aGVtZS5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglEb24ndCB1c2UgVW5pY29kZSBzdHJpbmcgbGl0ZXJhbHMgdW5sZXNzIHdlIHNwZWNpZmljYWxseSBrbm93IHRoZXkgZG8KCXdoYXQgd2Ugd2FudCB0by4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL3BzYXBpL01ha2VmaWxlLmluLAoJICBkbGxzL3BzYXBpL3BzYXBpX21haW4uYywgZGxscy9wc2FwaS90ZXN0cy8uY3ZzaWdub3JlLAoJICBkbGxzL3BzYXBpL3Rlc3RzL01ha2VmaWxlLmluLCBkbGxzL3BzYXBpL3Rlc3RzL21vZHVsZS5jOgoJU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtTGluZS5jb20+CglNb3ZlZCBpbXBsZW1lbnRhdGlvbiBvZiBHZXRNb2R1bGVCYXNlTmFtZSBmcm9tIGFzY2lpIHRvIHVuaWNvZGUsIGFkZGVkCglzb21lIHRlc3RzIGZvciBHZXRNb2R1bGVCYXNlTmFtZUEuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLAoJICBkbGxzL3NoZWxsMzIvc2hsZXhlYy5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVNIRUxMX0V4ZWN1dGVXKCkgcGFzc2VzIGEgVW5pY29kZSBlbnZpcm9ubWVudCB0byBDcmVhdGVQcm9jZXNzVygpIHNvCglpdCBtdXN0IHNwZWNpZnkgdGhlIENSRUFURV9VTklDT0RFX0VOVklST05NRU5UIGZsYWcuIEFsc28gdGhlCglTSEVMTF9FeGVjdXRlVzMyKCkgZnVuY3Rpb25zIHdpbGwgYWx3YXlzIGJlIGNhbGxlZCB3aXRoIGEgVW5pY29kZQoJZW52aXJvbm1lbnQgc28gYWRqdXN0IHRoZWlyIHByb3RvdHlwZSBhY2NvcmRpbmdseS4KCgkqIGRsbHMvdXNlci90ZXN0cy93aW4uYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBhIHRlc3QgZm9yIGNsaWVudC9ub25jbGllbnQgd2luZG93IGRpbWVuc2lvbnMgY2FsY3VsYXRpb24uCgoJKiBkb2N1bWVudGF0aW9uL2FyY2hpdGVjdHVyZS5zZ21sLCBkb2N1bWVudGF0aW9uL3RocmVhZGluZy5zZ21sLAoJICBkb2N1bWVudGF0aW9uL3dpbmUtZGV2ZWwuc2dtbDoKCU1pa2UgSGVhcm4gPG1oQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBkb2N1bWVudGF0aW9uIG9uIHRoZSBXaW5lIGluaXRpYWxpemF0aW9uIHByb2Nlc3MuCgoJKiBkbGxzL3VzZXIvdXNlcl9tYWluLmMsIGRsbHMveDExZHJ2L3Njcm9sbC5jLCBkbGxzL3gxMWRydi94MTFkcnYuc3BlYywKCSAgaW5jbHVkZS91c2VyLmgsIHdpbmRvd3Mvc2Nyb2xsLmM6CglVbHJpY2ggQ3pla2FsbGEgPHVscmljaEBjb2Rld2VhdmVycy5jb20+CglTY3JvbGxEQyBzaG91bGQgdGFrZSBpbnRvIGFjY291bnQgb3ZlcmxhcHBlZCB3aW5kb3dzLiBXaXRoIHRoaXMgY2hhbmdlCglTY3JvbGxXaW5kb3dFeCBjYW4gYmUgbW92ZWQgb3V0IG9mIFgxMWRydi4KCgkqIGRsbHMvc2hlbGwzMi9zaGxleGVjLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglGaXggd2FybmluZ3MgaW50cm9kdWNlZCBieSBteSBsYXN0IHBhdGNoLgoKCSogZGxscy9rZXJuZWwvbG9jYWxlLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CgktIEZpeCBlcnJvbmVvdXMgdXNlIG9mIExPQ0FMRV9TREFURSBpbiB0aGUgcGxhY2Ugb2YgTE9DQUxFX1NTSE9SVERBVEUuCgktIEZpeCBpbmNvcnJlY3QgYXNzdW1wdGlvbnMgYWJvdXQgZm9ybWF0IHN0cmluZ3Mgd2hlbiBwYXJzaW5nIGRhdGUKCSAgZm9ybWF0cyBhbmQgc2V0dGluZyBMT0NBTEVfSURBVEUgYW5kIExPQ0FMRV9JTERBVEUgdmFsdWVzLgoKCSogcHJvZ3JhbXMvcmVnZWRpdC9EZS5yYywgcHJvZ3JhbXMvcmVnZWRpdC9yc3JjLnJjOgoJTWljaGFlbCBGcml0c2NoZXIgPG1pY2hhZWxAZnJpdHNjaGVyLm5ldD4KCUFkZGVkIGEgR2VybWFuIHRyYW5zbGF0aW9uIG9mIFJlZ2VkaXQuCgoJKiBkbGxzL3gxMWRydi94cmVuZGVyLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglEb24ndCBhbGxvY2F0ZSBhIGdseXBoc2V0IHVudGlsIHdlIGFjdHVhbGx5IG5lZWQgaXQuCgoJKiBkbGxzL2tlcm5lbC9maWxlLmM6CglBZGRlZCBtYWdpYyBudW1iZXIgaW4gdGhlIEZpbmRGaXJzdEZpbGUgc3RydWN0dXJlIHRvIGFsbG93IG1vcmUgcm9idXN0CglkZXRlY3Rpb24gb2YgYmFkIGhhbmRsZXMgKHdpdGggaGVscCBmcm9tIEFyaWMgU3Rld2FydCkuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBkbGxzL2tlcm5lbC9rZXJuZWxfbWFpbi5jLAoJICBkbGxzL2tlcm5lbC9zeW5jLmMsIGRsbHMvbnRkbGwvY3JpdHNlY3Rpb24uYywgZGxscy9udGRsbC9udGRsbC5zcGVjLAoJICBkbGxzL250ZGxsL3RocmVhZC5jLCBpbmNsdWRlL3dpbnRlcm5sLmg6CglTdG9yZSB0aGUgbnVtYmVyIG9mIHByb2Nlc3NvcnMgaW4gdGhlIFBFQiBzdHJ1Y3R1cmUuCglNb3JlIGNvcnJlY3Qgc3VwcG9ydCBmb3Igc2V0dGluZyBjcml0aWNhbCBzZWN0aW9uIHNwaW4gY291bnRzIChiYXNlZAoJb24gYSBwYXRjaCBieSBSb2JlcnQgU2hlYXJtYW4pLgoKCSogZGxscy9udGRsbC9oZWFwLmMsIGRsbHMvbnRkbGwvbG9hZGVyLmMsIGRsbHMvbnRkbGwvbG9hZG9yZGVyLmMsCgkgIGRsbHMvbnRkbGwvbnRkbGxfbWlzYy5oLCBkbGxzL250ZGxsL3JlbGF5LmMsIGRsbHMvbnRkbGwvcmVzb3VyY2UuYywKCSAgZGxscy9udGRsbC9ydGwuYywgZGxscy9udGRsbC9ydGxiaXRtYXAuYywgZGxscy9udGRsbC92aXJ0dWFsLmM6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCUNvbnN0IGNvcnJlY3RuZXNzLgoKCSogZGxscy9udGRsbC9jZHJvbS5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJU3VwcG9ydCBmb3IgcmVhZGluZyBlbmNyeXB0ZWQgRFZEcy4KCgkqIGRsbHMvc2hlbGwzMi9zaGxleGVjLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglSZXN0b3JlIGRlZmF1bHQgIm9wZW4iIGZ1bmN0aW9uYWxpdHkgb2YgU2hlbGxFeGVjdXRlLgoKMjAwNC0wNi0xNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL2ZpbGUuYywgaW5jbHVkZS93aW5iYXNlLmg6CglSZXdyb3RlIFNldEZpbGVQb2ludGVyIHRvIHVzZSBTZXRGaWxlUG9pbnRlckV4LgoKCSogZGxscy91c2VyL2RkZS9zZXJ2ZXIuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCAncG9pbnRlcnMgYXJlIG5vdCBwZXJtaXR0ZWQgYXMgY2FzZSB2YWx1ZXMnIGNvbXBpbGUgZXJyb3IuCgoJKiBwcm9ncmFtcy9yZWdlZGl0L3RyZWV2aWV3LmM6CglSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJLSBVc2UgaG91cmdsYXNzIGN1cnNvciBmb3IgYmV0dGVyIGZlZWRiYWNrIHdoZW4gZXhwYW5kaW5nIG5vZGVzLgoJLSBUdXJuIG9mZiByZWRyYXdpbmcgd2hlbiBleHBhbmRpbmcgdG8gbWFrZSBpdCBmYXN0ZXIuCgoJKiBhY2xvY2FsLm00LCBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYzoKCVBpZXJyZSBkJ0hlcmJlbW9udCA8c3RlZ2VmaW5AZnJlZS5mcj4KCS0gc3RyaXAgc3VwcG9ydCBmb3IgZGFyd2luCgktIFdJTkVfR0VUX1NPTkFNRSBzdXBwb3J0IGZvciBkYXJ3aW4KCgkqIGRsbHMvc2hlbGwzMi9zaGxleGVjLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglJZ25vcmUgRGRlQ2xpZW50VHJhbnNhY3Rpb24gZXJyb3IgaW4gU2hlbGxFeGVjdXRlLgoKCSogZGxscy94MTFkcnYvd2lucG9zLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglEbyBub3RoaW5nIGluIFNob3dXaW5kb3coU1dfU0hPVykgaWYgYSB3aW5kb3cgaXMgYWxyZWFkeSB2aXNpYmxlLgoKCSogZGxscy9kYmdoZWxwL2RiZ2hlbHAuc3BlYywgZGxscy9kYmdoZWxwL21zYy5jLCBkbGxzL2RiZ2hlbHAvcGF0aC5jLAoJICBkbGxzL2RiZ2hlbHAvcGVfbW9kdWxlLmMsIGRsbHMvZGJnaGVscC90eXBlLmMsIGluY2x1ZGUvZGJnaGVscC5oOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CgktIGltcGxlbWVudGVkIEVudW1EaXJUcmVlLCBTZWFyY2hUcmVlRm9yRmlsZSwgU3ltRmluZEZpbGVJblBhdGgsCgkgIFN5bU1hdGNoRmlsZU5hbWUKCS0gbWFkZSB1c2Ugb2YgU3ltRmluZEZpbGVJblBhdGggdG8gbG9va3VwIC5kYmcgYW5kIC5wZGIgZmlsZXMKCS0gZml4ZWQgYSBjcmFzaCBpbiBDb2RlVmlldyBlbnVtIGhhbmRsaW5nCgoJKiBkbGxzL29sZTMyL21hcnNoYWwuYywgZGxscy9vbGUzMi9vbGVwcm94eS5jLAoJICBkbGxzL29sZWF1dDMyL3RtYXJzaGFsLmMsIGRsbHMvcnBjcnQ0L2Nwcm94eS5jOgoJUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCS0gRml4IHJlZiBjb3VudCBvbiBzdGFuZGFyZCBwcm94eSBjcmVhdGlvbi4KCS0gUmVsZWFzZSBjaGFubmVsIGJ1ZmZlciBpbiBTdGRNYXJzaGFsX1VubWFyc2hhbEludGVyZmFjZSwgc2luY2Ugd2Ugbm8KCSAgbG9uZ2VyIHVzZSBpdCBhbmQgdGhlIHByb3h5IHNob3VsZCBoYXZlIHRha2VuIGEgcmVmZXJlbmNlIG9uIGl0LgoJLSBBZGQgYSBmZXcgY29tbWVudHMuCgoJKiBkbGxzL3dpbmluZXQvaHR0cC5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglQYXNzIHBvaW50ZXJzIGFyb3VuZCBpbnRlcm5hbGx5IGluc3RlYWQgb2YgaGFuZGxlcy4KCgkqIGRsbHMvbXN2Y3J0ZC9kZWJ1Zy5jLCBkbGxzL21zdmNydGQvbXN2Y3J0ZC5zcGVjOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUFkZGVkIHN0dWIgZm9yIF9DcnRDaGVja01lbW9yeS4KCgkqIGRsbHMva2VybmVsL2ZpbGUuYywgZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudGVkIFNldEZpbGVQb2ludGVyRXguCgoJKiBjb250cm9scy9zY3JvbGwuYywgd2luZG93cy93aW5wcm9jLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgMzItPjE2IG1hcHBpbmcgZm9yIFNCTV9HRVRSQU5HRS9TQk1fU0VUUkFOR0UgbWVzc2FnZXMuCglBZGRlZCBzdXBwb3J0IGZvciBTQk1fR0VUUkFOR0UxNiBtZXNzYWdlIGluIHRoZSBzY3JvbGxiYXIgd2luZG93Cglwcm9jLgoKCSogZGxscy93aW5tbS93YXZlbWFwL3dhdmVtYXAuYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUFkZGVkIHRyYWNpbmcgdG8gYWxsIGZ1bmN0aW9ucy4KCUFkZGVkIGVycm9yIGV4cGxhbmF0aW9ucy4KCUNoYW5nZWQgZGVidWcgY2hhbm5lbCBmcm9tIG1zYWNtIHRvIHdhdmVtYXAgc28gbm90IGNvbmZ1c2VkIHdpdGgKCW1zYWNtLgoKCSogZGxscy93aW5tbS90ZXN0cy9jYXB0dXJlLmMsIGRsbHMvd2lubW0vdGVzdHMvd2F2ZS5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCVJlbW92ZWQgMTEgYml0IHNhbXBsZSBzaXplIGNhcHR1cmUgdGVzdCBiZWNhdXNlIGF0IGxlYXN0IDIKCW1hbnVmYWN0dXJlcnMgc291bmQgY2FyZHMgb24gdHdvIGRpZmZlcmVudCBPU3Mgc2VlbSB0byBzdXBwb3J0IHRoaXMuCglBZGRlZCBzb21lIGludmFsaWQgcGFyYW1ldGVyIGNoZWNrcyB0byB3YXZlW0luLE91dF1HZXREZXZDYXBzLgoJT25lIHRlc3QgaXMgY29tbWVudGVkIG91dCBiZWNhdXNlIHdpbmUgZG9lc24ndCBoYW5kbGUgaXQgcHJvcGVybHkuCglNaW5vciBpbmZvIHByaW50aW5nIGNsZWFudXAuCgoJKiBkbGxzL3NoZWxsMzIvc2hsZXhlYy5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkIHN1cHBvcnQgZm9yIHF1b3RpbmcgImZpbGU6Ly8lMSIgbGlrZSBmb3JtYXQgc3RyaW5ncy4KCgkqIGluY2x1ZGUvd2luZS9saWJyYXJ5LmgsIGxpYnMvd2luZS9sb2FkZXIuYywgbG9hZGVyL21haW4uYzoKCVlldCBhbm90aGVyIGZpeCBmb3IgdGhlIE1hY09TIFggZW52aXJvbiBicmFpbiBkYW1hZ2UuCgoJKiBkbGxzL2tlcm5lbC9jb25zb2xlLmMsIGRsbHMva2VybmVsL2Rvc21lbS5jLAoJICBkbGxzL2tlcm5lbC9mb3JtYXRfbXNnLmMsIGRsbHMva2VybmVsL2hlYXAuYywgZGxscy9rZXJuZWwvaW5zdHIuYywKCSAgZGxscy9rZXJuZWwvbG9jYWxlLmMsIGRsbHMva2VybmVsL3Byb2ZpbGUuYywgZGxscy9rZXJuZWwvc2VsZWN0b3IuYywKCSAgZGxscy9rZXJuZWwvdGhyZWFkLmMsIG1pc2MvcmVnaXN0cnkuYzoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJQ29uc3QgY29ycmVjdG5lc3MsIHBvaW50ZXIgY2FzdCBjb3JyZWN0bmVzcywgcmVtb3ZlZCBleHRyYW5lb3VzICc7Jy4KCgkqIGRsbHMva2VybmVsL3Byb2Nlc3MuYywgZGxscy9udGRsbC9wcm9jZXNzLmMsCgkgIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwgc2VydmVyL3Byb2Nlc3MuYywKCSAgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3RyYWNlLmM6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCS0gQWRkZWQgUHJvY2Vzc0Jhc2ljSW5mb3JtYXRpb24gY2xhc3MgdG8gbnRkbGwuTnRRdWVyeUluZm9ybWF0aW9uUHJvY2Vzcy4KCS0gTWFrZSB1c2Ugb2YgaXQgaW4ga2VybmVsMzIuCgoJKiBpbmNsdWRlL3dpbmUvcG9ydC5oOiBQaWVycmUgZCdIZXJiZW1vbnQgPHN0ZWdlZmluQGZyZWUuZnI+CglEb24ndCB1c2UgLnByZXZpb3VzIGluc3RydWN0aW9uIG9uIERhcndpbi4KCgkqIGRsbHMva2VybmVsL3N5bmMuYzogUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCVVzZSB0aGUgc2FtZSBwYXRoIHRyYW5zZm9ybWF0aW9uIGZvciBXYWl0TmFtZWRQaXBlIGFuZAoJQ3JlYXRlTmFtZWRQaXBlLgoKCSogZGxscy93aW5tbS93aW5lYWxzYS9hdWRpby5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJUmVzZXQgcGxheWVkIHZhcmlhYmxlcyBvbiBvcGVuLgoKCSogZGxscy9rZXJuZWwvYWN0Y3R4LmM6IFJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCVNldCBsYXN0IGVycm9yIHZhbHVlIHRvIEVSUk9SX0NBTExfTk9UX0lNUExFTUVOVEVEIGluIFF1ZXJ5QWN0Q3R4VygpCgl0byBtYWtlIFBob3Rvc2hvcCA3LjAgd29yayBhZ2Fpbi4KCgkqIGRvY3VtZW50YXRpb24vaW1wbGVtZW50YXRpb24uc2dtbDogT2ZpciBQZXRydXNrYSA8aGF0a3lAdXNlcnMuc2YubmV0PgoJUmVwbGFjZSAtZGVidWdtc2cgYnkgV0lORURFQlVHLgoKCSogZGxscy94MTFkcnYveDExZHJ2X21haW4uYzogTWlrZSBIZWFybiA8bWlrZUBuYXZpLmN4PgoJTWFrZSBVc2VYcmFuZHIgZGVmYXVsdCB0byB0cnVlIGluIHRoZSBubyBjb25maWcgZmlsZSBjYXNlLgoKCSogZGxscy91c2VyL2RkZS9jbGllbnQuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVNldCBsYXN0IERERSBlcnJvciBpbiBYVFlQX0VYRUNVVEUgaGFuZGxlciBhY2NvcmRpbmcgdG8gdGhlIHZhbHVlCglyZXR1cm5lZCBieSBhbiBhcHBsaWNhdGlvbi4KCgkqIGluY2x1ZGUvZGRlbWwuaDogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBDQlJfQkxPQ0sgZGVmaW5pdGlvbi4KCgkqIGRsbHMvZDNkOC9kZXZpY2UuYywgZGxscy9kM2Q4L3V0aWxzLmMsIGRsbHMvZDNkOC92ZXJzaW9uLnJjOgoJUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CgktIGZpeCB2ZXJzaW9uIHN0cmluZwoJLSBzb21lIGZpeGVzIHRvIEFUSSBzcGVjaWZpYyBwYXRocyBvZiBzZXRfdGV4X29wIChDaHJpc3RpYW4gbmVlZHMgdG8KCSAgY29tcGxldGUgaXQpCgktIGZpeCB1c2Ugb2YgR0xfU1VQUE9SVChOVl9URVhHRU5fUkVGTEVDVElPTikuIEkgaGF2ZSB1c2VkIHRoZSB3cm9uZwoJICBkZWZpbmUsIEknbGwgZ2V0IGEgYnJvd24gcGFwZXIgYmFnIDooCgoJKiBkbGxzL2ljY3ZpZC9pY2N2aWQuYzogUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCVN1cHBvcnQgMTUtIGFuZCAxNi1iaXQgY29sb3VyIG91dHB1dC4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGxmaWxlb3AuYzoKCVVscmljaCBDemVrYWxsYSA8dWxyaWNoQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudGVkIFJlYWxEcml2ZVR5cGUuCgoJKiBkbGxzL3dpbmluZXQvdXRpbGl0eS5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXhlZCBBU0NJSSByZWRpcmVjdCBjYWxsYmFja3MuCgoJKiBjb250cm9scy9zY3JvbGwuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2UgU2V0U2Nyb2xsUmFuZ2UgYmVoYXZlIGxpa2UgR2V0U2Nyb2xsUmFuZ2UgZG9lcywgaS5lLiBzZW5kCgltZXNzYWdlcyB0byB0aGUgY29udHJvbCBmb3IgU0JfQ1RMIGNhc2UuCgoJKiBkbGxzL3dpbm1tL3BsYXlzb3VuZC5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggUGxheVNvdW5kLgoKCSogZGxscy9kZXZlbnVtL21lZGlhY2F0ZW51bS5jOgoJUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCUF2b2lkIGNyYXNoIGJ5IHBhc3NpbmcgcG9pbnRlciB0byBSZWdTZXRWYWx1ZUV4LgoKCSogZGxscy93aW5zcG9vbC90ZXN0cy9pbmZvLmM6CglTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCUxvZyB0aGUgbGFzdCBlcnJvciB0b28gaWYgdGhlIHRlc3RzIGZhaWwgd2l0aG91dCBkZWZhdWx0IHByaW50ZXIuCgoJKiBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL2FjbGFwaS5oOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWRkIHRoZSBhY2xhcGkuaCBoZWFkZXIgZmlsZS4KCgkqIGRsbHMvd2lubW0vd2lubW0uYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCURvbid0IHRyeSB0byBtYXAgdGhlIG1hcHBlciBkZXZpY2UuCgoyMDA0LTA2LTA0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL21haW4uYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglNb3ZlIHRoZSBGUFMgY29tcHV0YXRpb24gZnJvbSB0aGUgRDNEIGNvZGUgdG8gdGhlIGNvbW1vbiBjb2RlLgoKCSogZGxscy9kM2R4b2YvZDNkeG9mLmMsIGRsbHMvZDNkeG9mL2QzZHhvZl9wcml2YXRlLmgsCgkgIGRsbHMvZDNkeG9mL21haW4uYzoKCUNocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCVJlbW92ZWQgY29tcGlsYXRpb24gd2FybmluZ3MgKyBzb21lIGZpeGVzLgoKCSogZGxscy91c2VyL3Rlc3RzL3N5c3BhcmFtcy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJV2luIDIwMDAsIFhQLCBldGMuIGZhaWwgdGhlIHN5c3BhcmFtcyB0ZXN0cyB3aGVuIHJ1bgoJbm9uLWludGVyYWN0aXZlbHksIHNvIGF2b2lkIHJ1bm5pbmcgdGhlIHRlc3RzIGluIHRoYXQgY2FzZS4KCgkqIGRsbHMvY29tY3RsMzIvdGFiLmM6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglJbXBsZW1lbnRlZCBUQ01fU0VUSVRFTUVYVFJBLgoKCSogZGxscy9kaW5wdXQvZGlucHV0X21haW4uYywgZGxscy9kaW5wdXQvZGlucHV0X3ByaXZhdGUuaCwKCSAgZGxscy9kaW5wdXQvam95c3RpY2tfbGludXguYywgZGxscy9kaW5wdXQvam95c3RpY2tfbGludXhpbnB1dC5jLAoJICBkbGxzL2RpbnB1dC9rZXlib2FyZC5jLCBkbGxzL2RpbnB1dC9tb3VzZS5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gc29tZSBuZXcgbG9nZ2luZyBvbiBkZXZpY2UgZW51bWVyYXRpb24KCS0gZml4IHZlcnNpb24gc2V0dGluZyBpbiBEaXJlY3RJbnB1dENyZWF0ZShBL1cpIGZ1bmN0aW9ucwoKCSogZGxscy9rZXJuZWwvcHJvY2Vzcy5jOiBSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglGaXggYSBjcmFzaCB3aGVuIGxhdW5jaGluZyBVbml4IGV4ZWN1dGFibGVzLgoKCSogd2luZG93cy9zcHkuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVByaW50IG1lYW5pbmdmdWwgbWVzc2FnZSB2YWx1ZXMgaW5zdGVhZCBvZiB2YWd1ZSBuYW1lcyBmb3IgdW5rbm93bgoJbWVzc2FnZXMuCgoJKiBkbGxzL3dpbnNwb29sL3Rlc3RzL2luZm8uYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVNvbWUgb2Ygb3VyIHRlc3RlcnMgZG9uJ3QgaGF2ZSBhIGRlZmF1bHQgcHJpbnRlciwgc2ltcGx5IHNraXAgdGhlCgl3aW5zcG9vbCB0ZXN0cyBpZiB0aGF0J3MgdGhlIGNhc2UuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9kaXJlY3RvcnkuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUluIFdpbjl4LCB7Q3JlYXRlLFJlbW92ZX1EaXJlY3RvcnkgcmV0dXJucyBFUlJPUl9QQVRIX05PVF9GT1VORCB3aGVuCglnaXZlbiBkaXJlY3RvcmllcyBjb250YWluaW5nICcqJyBvciAnPycuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9hbGxvYy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJV2luOXggZG9lcyBub3QgY29udmVydCBGSVhFRCB0byBNT1ZFQUJMRS4gSXQgYWxzbyBkaXNjYXJkcyBsb2NrZWQKCW1lbW9yeS4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUNsZWFyIHRoZSBzdGF0ZSBpbWFnZSBiaXRzIG9ubHkgaWYgTFZTX0VYX0NIRUNLQk9YRVMgaXMgc2V0LgoJRml4IG9idmlvdXMgbG9naWNhbCBlcnJvciBpbiBmb2N1cyBoYW5kbGluZy4KCUluZGVudGF0aW9uIGFuZCBmb3JtYXR0aW5nIGZpeGVzLgoJKGJhc2VkIG9uIGEgcGF0Y2ggYnkgS3Jpc2huYSBNdXJ0aHkpLgoKCSogZGxscy93aW5tbS90ZXN0cy9jYXB0dXJlLmMsIGRsbHMvd2lubW0vdGVzdHMvd2F2ZS5jLAoJICBkbGxzL3dpbm1tL3Rlc3RzL3dpbm1tX3Rlc3QuaDoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglUcmVhdCBXQVZFX01BUFBFUiBhcyBhIHJlYWwgZGV2aWNlIGFuZCBwZXJmb3JtcyBhbGwgdGVzdHMgb24gaXQuCglBZGRlZCAxNjAwMEh6IGJlY2F1c2Ugd2luOXggaGFyZHdhcmUgc3BlYyByZXF1aXJlcyBpdC4KCgkqIGRsbHMvd2lubW0vd2F2ZW1hcC93YXZlbWFwLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglIYW5kbGUgY2FzZSB3aGVyZSBwYXJ0aWFsIHN0cnVjdHVyZSB1cGRhdGUgcmVxdWVzdGVkLgoJTWlub3Igd2hpdGUgc3BhY2UgY2xlYW51cC4KCgkqIGxpYnMvd2luZS9tbWFwLmM6IEF2b2lkIHplcm8gc2l6ZSBhbGxvY2F0aW9ucy4KCgkqIGRvY3VtZW50YXRpb24vZGVidWdnZXIuc2dtbCwgZG9jdW1lbnRhdGlvbi9kZWJ1Z2dpbmcuc2dtbCwKCSAgcHJvZ3JhbXMvd2luZWRiZy9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luZWRiZy9iZV9jcHUuaCwKCSAgcHJvZ3JhbXMvd2luZWRiZy9iZV9pMzg2LmMsIHByb2dyYW1zL3dpbmVkYmcvYmVfcHBjLmMsCgkgIHByb2dyYW1zL3dpbmVkYmcvYnJlYWsuYywgcHJvZ3JhbXMvd2luZWRiZy9kYl9kaXNhc20uYywKCSAgcHJvZ3JhbXMvd2luZWRiZy9kYmcueSwgcHJvZ3JhbXMvd2luZWRiZy9kZWJ1Zy5sLAoJICBwcm9ncmFtcy93aW5lZGJnL2RlYnVnZ2VyLmgsIHByb2dyYW1zL3dpbmVkYmcvZGlzcGxheS5jLAoJICBwcm9ncmFtcy93aW5lZGJnL2VsZi5jLCBwcm9ncmFtcy93aW5lZGJnL2V4cHIuYywKCSAgcHJvZ3JhbXMvd2luZWRiZy9leHRfZGVidWdnZXIuYywgcHJvZ3JhbXMvd2luZWRiZy9nZGJwcm94eS5jLAoJICBwcm9ncmFtcy93aW5lZGJnL2hhc2guYywgcHJvZ3JhbXMvd2luZWRiZy9pbmZvLmMsCgkgIHByb2dyYW1zL3dpbmVkYmcvaW50dmFyLmgsIHByb2dyYW1zL3dpbmVkYmcvbWVtb3J5LmMsCgkgIHByb2dyYW1zL3dpbmVkYmcvbW9kdWxlLmMsIHByb2dyYW1zL3dpbmVkYmcvbXNjLmMsCgkgIHByb2dyYW1zL3dpbmVkYmcvcGUuYywgcHJvZ3JhbXMvd2luZWRiZy9yZWdpc3RlcnMuYywKCSAgcHJvZ3JhbXMvd2luZWRiZy9zb3VyY2UuYywgcHJvZ3JhbXMvd2luZWRiZy9zdGFicy5jLAoJICBwcm9ncmFtcy93aW5lZGJnL3N0YWNrLmMsIHByb2dyYW1zL3dpbmVkYmcvc3ltYm9sLmMsCgkgIHByb2dyYW1zL3dpbmVkYmcvdHlwZXMuYywgcHJvZ3JhbXMvd2luZWRiZy93aW5lZGJnLmMsCgkgIHByb2dyYW1zL3dpbmVkYmcvd2luZWRiZy5tYW46CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCS0gYWxsIHN5bWJvbCBpbmZvcm1hdGlvbiBzdG9yYWdlIGlzIG5vdyBtb2R1bGUgcmVsYXRpdmUsIHNvIHdlIGNhbgoJICB1bmxvYWQgYSBtb2R1bGUgKGFuZCBpdCdzIGRlYnVnZ2luZyBpbmZvcm1hdGlvbiksIGFuZCBhIHByb2Nlc3MKCSAgd2l0aG91dCBwYWluCgktIHBvcnRhYmlibGl0eSB0byBhbm90aGVyIENQVSBzaG91bGQgYmUgZWFzaWVyIG5vdyAoQ1BVIGRlcGVuZGVudCBiYWNrZW5kKQoJLSBzcGVlZCB1cCBtZW1vcnkgYWxsb2NhdGlvbgoJLSBzdGFicyByZWxhdGVkIGZpeGVzOgoJICAgICAgKyBub3cgY29ycmVjdGx5IGhhbmRsaW5nIHN5bWJvbCdzIHNpemUKCSAgICAgICsgYmxvY2tzIHt9IGluIGZ1bmN0aW9ucyBhcmUgbm93IGNvcnJlY3RseSByZWNvZ25pemVkIGFuZCBzdG9yZWQKCSAgICAgICAgKGFsc28gYXBwbGllcyB0byBsb2NhbCB2YXJpYWJsZXMgc2NvcGluZykKCSAgICAgICsgYmV0dGVyIGJhc2ljIHR5cGVzIG1hbmFnZW1lbnQgKGxlc3Mgd2lsZCBndWVzc2VzIGluIHRoZSBjb2RlKQoJICAgICAgKyBmdWxsIHN1cHBvcnQgb2YgaW5saW5lIGZ1bmN0aW9ucyAoc291cmNlIHN0ZXBwaW5nIG5vdyBzaG93cyB0aGUKCSAgICAgICAgY29kZSBpbiAuaCBmaWxlcyBmb3IgZXhhbXBsZSkKCS0gcmVtb3ZhbCBvZiBleHRlcm5hbCBkZWJ1Z2dlciAoYXR0YWNoaW5nIHdpdGggZ2RiIGlzIGp1c3QgZmluZSB0bwoJICBkZWJ1ZyB3aW5lZGJnKQoJLSBmaXhlZCBhIGNvdXBsZSBvZiBpc3N1ZXMgZm9yIHN5bWJvbCBhZGRyZXNzIGhhbmRsaW5nIChhZGRyZXNzCgkgIGxvb2t1cCwgaW5jb3JyZWN0IHR5cGUgYmluZGluZykKCS0gd2luZWRiZyBub3cgaGFzIGEgbWFuIHBhZ2UKCjIwMDQtMDYtMDMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBsb2FkZXIvcHJlbG9hZGVyLmM6CglNYWtlIGl0IHBvc3NpYmxlIHRvIGFkZCBhdXhpbGlhcnkgdmFsdWVzIHRvIHRoZSBleGlzdGluZyBhcnJheTsgdGhpcwoJaXMgcmVxdWlyZWQgZm9yIG9sZGVyIGtlcm5lbHMuCgoJKiBkbGxzL3VzZXIvdGVzdHMvbXNnLmMsIGRsbHMveDExZHJ2L3dpbnBvcy5jOgoJTWlrZSBIZWFybiA8bWhAY29kZXdlYXZlcnMuY29tPgoJSWdub3JlIGF0dGVtcHRzIHRvIGhpZGUgYW4gYWxyZWFkeSBpbnZpc2libGUgd2luZG93LiBBZGQgYSB0ZXN0IGNhc2UKCWZvciB0aGlzIGJlaGF2aW91ciwgcGFzc2VzIG9uIFdpbmUgYW5kIFdpbmRvd3MgMjAwMC4KCgkqIGRsbHMvd2luZWRvcy9pbnQyMS5jOiBSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglJbiBJTlQyMV9HZXRGcmVlRGlza1NwYWNlIGFkanVzdCB0aGUgc2VjdG9ycy1wZXItY2x1c3RlciB2YWx1ZSB0byBtYWtlCgl0aGUgdG90YWwgbnVtYmVyIG9mIGNsdXN0ZXJzIGZpdCBpbiBhIDE2IGJpdCByZWdpc3Rlci4KCgkqIGluY2x1ZGUvd2ludXNlci5oOiBBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CglBZGRpdGlvbmFsIEtMRl94eHggZGVmaW5lcy4KCgkqIGRsbHMvbXN2aWRlby9kcmF3ZGliLmMsIGRsbHMvbXN2aWRlby9tc3ZmdzMyLnNwZWM6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCVN0dWIgZm9yIERyYXdEaWJQcm9maWxlRGlzcGxheS4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL2xvY2FsZS5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJSSBnb3QgdGhlIHRlc3QgZm9yIGZhaWx1cmUgb24gTlQgd3JvbmcgaW4gbXkgbGFzdCBwYXRjaC4gVGhlIGZ1bmN0aW9uCglyZXR1cm5zIDAgb24gZXJyb3IgYW5kIHNldHMgbGFzdCBlcnJvciB0byBFUlJPUl9JTlZBTElEX0ZMQUdTLgoKCSogZGxscy9yc2FiYXNlL21haW4uYzogUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CglDcmVhdGVkIG1vcmUgbmVlZGVkIHJlZ2lzdHJ5IGtleSBpbiBEbGxSZWdpc3RlclNlcnZlci4KCgkqIGxpYnMvd2luZS9tbWFwLmM6CglDaGVjayBmb3IgZXhpc3RpbmcgcmVzZXJ2ZWQgYXJlYXMgaW4gbW1hcF9pbml0IHRvIGF2b2lkIGRvaW5nCglkdXBsaWNhdGUgd29yay4KCgkqIGRsbHMvbnRkbGwvbnRkbGwuc3BlYzogUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CglBZGRlZCBfdnNud3ByaW50ZiAobmVlZGVkIGJ5IHNvbWUgbmF0aXZlIFhQIGRsbHMpLgoKCSogZGxscy9rZXJuZWwvbW9kdWxlLmMsIGRsbHMva2VybmVsL3Byb2Nlc3MuYywgaW5jbHVkZS9tb2R1bGUuaDoKCVNldCB0aGUgV0lORVBSRUxPQURSRVNFUlZFIHZhcmlhYmxlIHdoZW4gc3RhcnRpbmcgYSBuZXcgcHJvY2Vzcy4KCgkqIGluY2x1ZGUvd2luZS9wb3J0Lmg6IEhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJTWluR1cgcG9ydGFiaWxpdHkgZml4LgoKCSogZGxscy91c2VyL3Rlc3RzL21zZy5jLCBkbGxzL3VzZXIvdGVzdHMvd2luLmMsIHdpbmRvd3Mvd2luLmM6CglVbHJpY2ggQ3pla2FsbGEgPHVscmljaEBjb2Rld2VhdmVycy5jb20+CglFbmFibGVXaW5kb3cgc2hvdWxkIG5vdCByZW1vdmUgdGhlIGZvY3VzIG9mIGNoaWxkIHdpbmRvd3MuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9kM2R4b2YvLmN2c2lnbm9yZSwKCSAgZGxscy9kM2R4b2YvTWFrZWZpbGUuaW4sIGRsbHMvZDNkeG9mL2QzZHhvZi5jLAoJICBkbGxzL2QzZHhvZi9kM2R4b2Yuc3BlYywgZGxscy9kM2R4b2YvZDNkeG9mX3ByaXZhdGUuaCwKCSAgZGxscy9kM2R4b2YvbWFpbi5jLCBkbGxzL2QzZHhvZi9yZWdzdnIuYywgZGxscy9kM2R4b2YvdmVyc2lvbi5yYywKCSAgZGxscy9keGd1aWQvZHhndWlkLmMsIGRvY3VtZW50YXRpb24vc2FtcGxlcy9jb25maWcsCgkgIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvZHhmaWxlLmgsIHRvb2xzL3dpbmUuaW5mOgoJQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJQWRkZWQgZDNkeG9mIGRsbCwgcGFydCBvZiBEaXJlY3QzRC4KCjIwMDQtMDYtMDIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBsb2FkZXIvcHJlbG9hZGVyLmM6CglBZGRlZCBzdXBwb3J0IGZvciBzcGVjaWZ5aW5nIHRoZSBQRSBleGUgYWRkcmVzcyByYW5nZSB0aHJvdWdoIHRoZQoJV0lORVBSRUxPQURSRVNFUlZFIGVudmlyb25tZW50IHZhcmlhYmxlLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWM6IEFkZGVkIGNoZWNrIGZvciBzdGF0aWMgbGliYy4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOiBVbHJpY2ggQ3pla2FsbGEgPHVscmljaEBjb2Rld2VhdmVycy5jb20+CglIYW5kbGUgY2FzZSB3aGVuIGl0ZW0gdGV4dCBpcyBlbXB0eS4KCUFjY29yZGluZyB0byBNU0ROLCBsZW5ndGggc2hvdWxkIGJlIHJldHVybmVkIHdoZW4gbFBhcmFtIGlzIE5VTEwuCgoJKiBkbGxzL3NoZWxsMzIvY2hhbmdlbm90aWZ5LmM6IFVscmljaCBDemVrYWxsYSA8dWxyaWNoQGNvZGV3ZWF2ZXJzLmNvbT4KCVdoZW4gd2Ugc2VuZCBvdXQgYSBub3RpZmljYXRpb24gdG8gYSByZWdpc3RlcmVkIHdpbmRvdyB3aXRoCglTSENOUkZfTmV3RGVsaXZlcnksIHdlIHNob3VsZCBzZW5kIGEgTFBOT1RJRklDQVRJT05MSVNUIGFuZCB0aGUKCXByb2Nlc3MgaWQgb2YgdGhlIGNhbGxlci4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnMTYuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJSW4gRklMRURMR19TY2FuRGlyIGRvIG5vdCB0cnkgdG8gc2V0IHRoZSBjdXJyZW50IGRpcmVjdG9yeSB0byBhIHBhdGgKCXRoYXQgaXMgZW1wdHkuCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGRsbHMvd2luc29jay93czJfMzIuc3BlYzoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJU3R1YiBmb3IgV1NDVW5JbnN0YWxsTmFtZVNwYWNlLgoKCSogZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZGxscy9rZXJuZWwvcGF0aC5jOgoJUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CglTZW1pIHN0dWJzIGZvciBHZXRTeXN0ZW1Xb3c2NERpcmVjdG9yeVtBV10uCgoJKiBkbGxzL2RpbnB1dC9kZXZpY2UuYywgZGxscy9kaW5wdXQvZGV2aWNlX3ByaXZhdGUuaCwKCSAgZGxscy9kaW5wdXQvam95c3RpY2tfbGludXguYywgZGxscy9kaW5wdXQvam95c3RpY2tfbGludXhpbnB1dC5jLAoJICBkbGxzL2RpbnB1dC9tb3VzZS5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gc29tZSBUUkFDRWluZyBpbXByb3ZlbWVudHMKCS0gZml4IG1vdXNlIEFjcXVpcmUgd2hpY2ggc3dpdGNoZWQgcmlnaHQgYW5kIG1pZGRsZSBidXR0b25zCgktIHJlc2V0IHRoZSBtb3VzZSBjdXJzb3IgYXQgaXRzIG9yaWdpbmFsIGxvY2F0aW9uIG9uIFVuYWNxdWlyaW5nIHRoZQoJICBkZXZpY2UKCgkqIGRsbHMva2VybmVsL3Rlc3RzL3BhdGguYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCURvIG5vdCBmaXggdGhlIGRyaXZlIGxldHRlciB0byAnQycsIGl0IGZhaWxzIG9uIG90aGVyIHBlb3BsZSdzIGJveGVzLgoKCSogZGxscy9yc2FiYXNlL21haW4uYzogUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCUNyZWF0ZWQgbmVlZGVkIHJlZ2lzdHJ5IGtleSBpbiBEbGxSZWdpc3RlclNlcnZlci4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOiBSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJRG9uJ3QgZHJhdyB3aG9sZSBidXR0b24gcHJlc3NlZCB3aGVuIHNlcGFyYXRlIGRyb3Bkb3duIHByZXNzZWQsIGp1c3QKCXRoZSBzZXBhcmF0ZSBkcm9wZG93biBpdHNlbGYuCgoJKiBkbGxzL2QzZDgvdXRpbHMuYzogUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CglDb21waWxlIGZpeC4KCgkqIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjLCBkbGxzL21zdmNydC93Y3MuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUNvcHkgdGhlIHZzbnByaW50ZlcgaW1wbGVtZW50YXRpb24gZnJvbSBsaWJ1bmljb2RlLnNvIHRvIG1zdmNydCBhbmQKCWFkZCBhIGhhbmRsZXIgZm9yIHRoZSAlUyBmbGFnLiAgVGhhdCByZXF1aXJlcyBhIGNvbnZlcnNpb24gdG8gdW5pY29kZQoJYW5kIGtub3dsZWRnZSBvZiB0aGUgY3VycmVudCBBU0NJSSBjb2RlIHBhZ2UuCgoJKiBkb2N1bWVudGF0aW9uL2FkZHJlc3Mtc3BhY2Uuc2dtbCwgZG9jdW1lbnRhdGlvbi9hcmNoaXRlY3R1cmUuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9jb25maWd1cmluZy5zZ21sOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglVcGRhdGVkIHRoZSBkb2N1bWVudGF0aW9uIG9uIFdpbmUgYXJjaGl0ZWN0dXJlICYgZnVuZGFtZW50YWxzLgoKCSogZGxscy9zZXR1cGFwaS9zZXR1cGNhYi5jOgoJU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtTGluZS5jb20+CglSZXBsYWNlZCB0aGUgY2FsbCB0byBHZXRGdWxsUGF0aE5hbWVBIGJ5IGEgY2FsbCB0byBHZXRGdWxsUGF0aE5hbWVXIHRvCglnZXQgcmlkIG9mIHRoZSBXLT5BIGNyb3NzIGNhbGxzLgoKMjAwNC0wNi0wMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvd2lubW0vd2luZWFsc2EvYXVkaW8uYywgZGxscy93aW5tbS93aW5lYXJ0cy9hdWRpby5jLAoJICBkbGxzL3dpbm1tL3dpbmVhdWRpb2lvL2F1ZGlvLmMsIGRsbHMvd2lubW0vd2luZWphY2svYXVkaW8uYywKCSAgZGxscy93aW5tbS93aW5lbmFzL2F1ZGlvLmMsIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUZpeCBjYWxjdWxhdGlvbiBvZiBTTVBURSB0aW1lIChyb3VuZCB1cCB0byBmdWxsIGZyYW1lKS4KCU1vcmUgYWNjdXJhdGUgbXMgY2FsY3VsYXRpb24uCgoJKiBkbGxzL3dpbm1tL3Rlc3RzL3dhdmUuYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUFkZGVkIGEgdGVzdCB0byBjaGVjayBwbGF5YmFjayBwb3NpdGlvbiBhZnRlciBkb25lIHBsYXlpbmcuCgoJKiBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLCBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjOgoJUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CglTdHViIGZvciBTSEZsdXNoU0ZDYWNoZVdyYXAuCgoJKiBkbGxzL3dpbmluZXQvZGlhbG9ncy5jLCBkbGxzL3dpbmluZXQvaHR0cC5jLCBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBwcm94eSBzdXBwb3J0LCByZW1vdmUgdHlwZWNhc3RzLgoKCSogZGxscy93aW5tbS93YXZlbWFwL3dhdmVtYXAuYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCVJldHVybnMgcHJvcGVyIGVycm9yIGNvZGUgd2hlbiB0cnlpbmcgdG8gZ2V0IGNhcHMgd2hlbiBubyBkZXZpY2VzCglwcmVzZW50LgoKCSogbG9hZGVyL3ByZWxvYWRlci5jOiBBIGZldyBzbWFsbCBmaXhlcy4KCgkqIGRsbHMvdXNlci90ZXN0cy93aW4uYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVRlc3Qgd2hldGhlciB3ZSBjYW4gZGVzdHJveSBhIG1lbnUgYXNzaWduZWQgdG8gYSB3aW5kb3cuCgoJKiBpbmNsdWRlL3dpbmRlZi5oLCBpbmNsdWRlL3d0eXBlcy5oLCBpbmNsdWRlL3d0eXBlcy5pZGw6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJQWRkZWQgUFBPSU5UTCwgYSBwb2ludGVyIHRvIGEgUE9JTlRMIHN0cnVjdC4KCgkqIGRsbHMvc2hsd2FwaS9NYWtlZmlsZS5pbjogSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglMaW5rIHRvIG50ZGxsLgoKCSogZGxscy9rZXJuZWwvZXhjZXB0LmM6IE1pa2UgSGVhcm4gPG1oQGNvZGV3ZWF2ZXJzLmNvbT4KCVVzZSBUUkFDRSByYXRoZXIgdGhhbiBGSVhNRSBmb3IgY2hlY2tfcmVzb3VyY2Vfd3JpdGUuCgoJKiBkbGxzL2hoY3RybC5vY3gvTWFrZWZpbGUuaW4sIGRsbHMvaGhjdHJsLm9jeC9oaGN0cmwuYzoKCU1pa2UgSGVhcm4gPG1oQGNvZGV3ZWF2ZXJzLmNvbT4KCURpc3BsYXkgbW9yZSBpbmZvcm1hdGl2ZSBtZXNzYWdlIHdoZW4gSHRtbEhlbHAgc3R1YiBpcyBpbnZva2VkLCBhZGQKCUEvVyBjb252ZXJzaW9uIGNvZGUsIHJlbW92ZSB1c2VsZXNzIChhbmQgd3JvbmcpIGh1bmdhcmlhbiBub3RhdGlvbgoJZnJvbSBmdW5jdGlvbiBwcm90b3R5cGVzLgoKCSogZGxscy9kbWltZS9zZWdtZW50LmM6IFJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJQ29ycmVjdCB0eXBvIGluIExvYWRXYXZlICh3YXZlIGlzIGFuIERNT2JqZWN0IG5vdCBhIERNVHJhY2spLgoKCSogdG9vbHMvd3JjL25ld3N0cnVjLmM6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglBbHNvIGhhbmRsZSBPUzIgdjEueCAoQUtBIHdpbmRvd3MgMi4wKSBiaXRtYXBzLgoKCSogb2JqZWN0cy9nZGlvYmouYzogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCVNldE1pdGVyTGltaXQ6IFJldHVybiBzdWNjZXNzOiBzb21lIGNhbGxlcnMgY2hlY2sgdGhpcy4KCgkqIGRsbHMvd2luaW5ldC9mdHAuYywgZGxscy93aW5pbmV0L2ludGVybmV0LmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJRml4IHRoZSBjYXNlIHdoZXJlIGxwc3pTZWFyY2hGaWxlIGlzIE5VTEwgaW4gRnRwRmluZEZpcnN0RmlsZS4KCgkqIGluY2x1ZGUvZXhkaXNwLmgsIGluY2x1ZGUvZXhkaXNwLmlkbDoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIGRlZmluaXRpb25zIGZvciB0aGUgSVNoZWxsV2luZG93cyBpbnRlcmZhY2UuCgoJKiBpbmNsdWRlL3NobGRpc3AuaCwgaW5jbHVkZS9zaGxkaXNwLmlkbDoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIGRlZmluaXRpb25zIGZvciB0aGUgSUZvbGRlclZpZXdPQyBpbnRlcmZhY2UuCgoJKiBkbGxzL3dpbm1tL3dhdmVtYXAvd2F2ZW1hcC5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJRml4ZWQgYSBidWcgd2hlcmUgd3JvbmcgYSByZXR1cm4gdmFsdWUgd2FzIHJldHVybmVkIHdoZW4gbWFwcGluZyBpcwoJbm90IHBvc3NpYmxlLgoKCSogZGxscy9tc2FjbS9kcml2ZXIuYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUFkZGVkIHRyYWNlIGFuZCBkZWJ1ZyBwcmludGluZyBpbmZvLgoKCSogZGxscy93aW5tbS9sb2x2bGRydi5jLCBkbGxzL3dpbm1tL3dpbmVtbS5oLCBkbGxzL3dpbm1tL3dpbm1tLmM6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQWRkZWQgc29tZSB0cmFjZSBhbmQgZGVidWcgcHJpbnRpbmcuCgoJKiBkbGxzL3dpbm1tL3Rlc3RzL2NhcHR1cmUuYywgZGxscy93aW5tbS90ZXN0cy93YXZlLmM6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQWRkZWQgYW5vdGhlciBwb3NzaWJsZSB3aW5kb3dzIGZhaWx1cmUgbW9kZS4KCgkqIGRsbHMvdXNlci90ZXN0cy9tc2cuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBkaWFsb2cgY2xhc3MgbmFtZSB0byB0aGUgbGlzdCBvZiBjbGFzc2VzIGhhbmRsZWQgYnkgaG9vaywgYWRkIGhvb2sKCW1lc3NhZ2VzIHRvIHRoZSBtb2RhbCBkaWFsb2cgbWVzc2FnZSB0ZXN0LgoKMjAwNC0wNS0zMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL2xvY2FsZS5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJTlQgNC4wIGRvZXNuJ3Qgc3VwcG9ydCBNQVBfRVhQQU5EX0xJR0FUVVJFUyBzbyBza2lwIHRlc3QgaWYgaXQgcmV0dXJucwoJRVJST1JfSU5WQUxJRF9GTEFHUy4KCgkqIGRsbHMvbnRkbGwvc2VydmVyLmM6CglVc2Ugd2luZV9leGVjX3dpbmVfYmluYXJ5IGluIGFsbCBjYXNlcyB0byBzdGFydCB0aGUgc2VydmVyLgoKCSogbGlicy93aW5lL2NvbmZpZy5jOiBDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglGaXhlZCBwcmVsb2FkZXJfZXhlYy4KCgkqIHRvb2xzL3dyYy93cmMubWFuOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRG9jdW1lbnQgdGhlIC0tdmVyYm9zZSBzd2l0Y2guCgoyMDA0LTA1LTI5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS93aW5lL2xpYnJhcnkuaCwgaW5jbHVkZS93aW5lL3BvcnQuaCwgbGlicy93aW5lL2xvYWRlci5jLAoJICBsb2FkZXIvbWFpbi5jOgoJUGFzcyB0aGUgZW52aXJvbiB2YXJpYWJsZSBmcm9tIG1haW4gdG8gdHJ5IHRvIGF2b2lkIERhcndpbidzCglfTlNHZXRFbnZpcm9uKCkgdWdsaW5lc3MuCgoJKiBkbGxzL29sZTMyL21hcnNoYWwuYzogUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCUZpeGVkIENvTWFyc2hhbEludGVyVGhyZWFkSW50ZXJmYWNlSW5TdHJlYW0gYW5kCglDb0dldEludGVyZmFjZUFuZFJlbGVhc2VTdHJlYW0uCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYzogSXZhbiBMZW8gUHVvdGkgPHB1b3RpQGlud2luZC5pdD4KCVJlbW92ZWQgZGNvbSBsaW5rLgoKCSogY29udHJvbHMvZWRpdC5jOiBLcmlzaG5hIE11cnRoeSA8S3Jpc2huYS5NdXJ0aHlAZ3VwdGF3b3JsZHdpZGUuY29tPgoJRURJVF9FTV9SZXBsYWNlU2VsIHNob3VsZCBzaW1wbHkgdHJ1bmNhdGUgY2hhcmFjdGVycyB0aGF0IGV4Y2VlZCB0aGUKCWxpbWl0LgoKMjAwNC0wNS0yOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL2tlcm5lbC9wcm9jZXNzLmMsIGRsbHMvbnRkbGwvc2VydmVyLmMsCgkgIGluY2x1ZGUvd2luZS9saWJyYXJ5LmgsIGxpYnMvd2luZS9jb25maWcuYywgbG9hZGVyLy5jdnNpZ25vcmUsCgkgIGxvYWRlci9NYWtlZmlsZS5pbiwgbG9hZGVyL2dsaWJjLmMsIGxvYWRlci9tYWluLmMsIGxvYWRlci9tYWluLmgsCgkgIGxvYWRlci9wcmVsb2FkZXIuYzoKCUluaXRpYWwgdmVyc2lvbiBvZiB0aGUgV2luZSBwcmVsb2FkZXIsIHVzZWQgdG8gcmVzZXJ2ZSBtZW1vcnkKCWFyZWFzIGF0IHN0YXJ0dXAuIEJhc2VkIG9uIHRoZSB3b3JrIG9mIE1pa2UgTWNDb3JtYWNrLgoKCSogc2VydmVyL3VzZXIuYywgd2luZG93cy93aW4uYzoKCU9ubHkgYWxsb2NhdGUgZXZlbi1udW1iZXJlZCB3aW5kb3cgaGFuZGxlcywgTVMgUHJvamVjdCBkZXBlbmRzIG9uIHRoYXQKCShmb3VuZCBieSBEbWl0cnkgVGltb3Noa292KS4KCgkqIGluY2x1ZGUvd2luZS9wb3J0Lmg6CglNYWtlIHN1cmUgX19BU01fR0xPQkFMX0ZVTkMgZ2VuZXJhdGVzIGNvZGUgaW4gdGhlIHRleHQgc2VnbWVudC4KCgkqIGRsbHMva2VybmVsL25lX3NlZ21lbnQuYzogTWlrZSBIZWFybiA8bWhAY29kZXdlYXZlcnMuY29tPgoJUHJpbnQgbW9kdWxlIG5hbWUgd2hlbiBjYWxsaW5nIExpYk1haW4uCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglNYWtlIHN1cmUgdGhhdCB0aGUgc2l6ZSBvZiB0aGUgYnVmZmVyIHBhc3NlZCB0byBSZWdTZXRWYWx1ZUV4VyBpcyBpbgoJYnl0ZXMgbm90IFdDSEFScy4KCgkqIHdpbmRvd3Mvc3B5LmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGQgc29tZSBuZXcgbWVzc2FnZSBuYW1lcyB0byB0aGUgbWVzc2FnZSBzcHkuCgoJKiBkbGxzL3VzZXIvdGVzdHMvY2xhc3MuYywgd2luZG93cy9jbGFzcy5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBhIHRlc3QgZm9yIGFjY2Vzc2luZyBjbGFzc2VzIGZyb20gYW5vdGhlciB0aHJlYWQuCglGaXggVW5yZWdpc3RlckNsYXNzIGJlaGF2aW91ciB3aXRoIE5VTEwgaEluc3RhbmNlLgoKCSogZG9jdW1lbnRhdGlvbi9NYWtlZmlsZS5pbiwgZG9jdW1lbnRhdGlvbi9hZGRyZXNzLXNwYWNlLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vd2luZS1kZXZlbC5zZ21sOgoJTWlrZSBIZWFybiA8bWhAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgZG9jdW1lbnRhdGlvbiBvbiB0aGUgYWRkcmVzcyBzcGFjZSBsYXlvdXQgaW4gV2luZS4KCgkqIHRvb2xzL3dpbmUuaW5mOgoJVXNlIHByb3BlciBkaXJpZHMgaW5zdGVhZCBvZiBoYXJkY29kaW5nIGM6XFByb2dyYW0gRmlsZXMuCgoJKiBkbGxzL250ZGxsL3ZpcnR1YWwuYywgbGlicy93aW5lL21tYXAuYzoKCURvbid0IHJlbHkgb24gdGhlIHJlc2VydmVkIGFyZWEgbGlzdCBiZWluZyBlbXB0eSBpbiByZXNlcnZlX2FyZWEsCglzaW5jZSB0aGUgcHJlbG9hZGVyIHdpbGwgbmVlZCB0byBhZGQgdGhpbmdzIHRvIHRoZSBsaXN0IGJlZm9yZQoJc3RhcnR1cC4KCgkqIGRsbHMva2VybmVsL2Rvc21lbS5jOgoJRW5zdXJlIHRoYXQgd2UgY2FuIGluaXRpYWxpemUgdGhlIERPUyBtZW1vcnkgYXJlYSBjb3JyZWN0bHkgZXZlbiBpZiBpdAoJaGFzIGJlZW4gcHJlLXJlc2VydmVkIGFscmVhZHkuCgoJKiBkbGxzL3NldHVwYXBpL01ha2VmaWxlLmluLCBkbGxzL3NldHVwYXBpL2RpcmlkLmM6CglBZGRlZCBzdXBwb3J0IGZvciBkaXJpZHMgdGhhdCBtYXAgdG8gYSBDU0lETCB2YWx1ZSAoYmFzZWQgb24gYSBwYXRjaAoJYnkgTWlrZSBNY0Nvcm1hY2spLgoKCSogZGxscy94MTFkcnYvaW5pdC5jOiBNaWtlIEhlYXJuIDxtaWtlQG5hdmkuY3g+CglEZWZhdWx0IHRvIDk2ZHBpIHdoZW4gbm90IHNwZWNpZmllZCBpbiB0aGUgY29uZmlnIGZpbGUuCgoJKiBkbGxzL2QzZDgvZDNkY29yZV9nbC5oLCBkbGxzL2QzZDgvdXRpbHMuYzoKCUNocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUltcGxlbWVudGVkIHNvbWUgdGV4dHVyZSBvcGVyYXRpb25zIHVzaW5nIEFUSV90ZXh0dXJlX2Vudl9jb21iaW5lMy4KCUZpeGVkIEQzRFRPUF9MRVJQLgoJRml4ZWQgc29tZSBjaGVja0dMY2FsbCBlcnJvciBtZXNzYWdlcy4KCjIwMDQtMDUtMjcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3dpbm1tL3dpbm1tLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglGaXhlZCBtaXNzaW5nIGludmVyc2lvbiBpbiBiaXQgbWFuaXB1bGF0aW9uLgoKCSogZGxscy93aW5tbS9sb2x2bGRydi5jLCBkbGxzL3dpbm1tL3dpbm1tLmM6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJRml4ZWQgYSBwcm9ibGVtIHdlcmUgYSB0cmFjZSBhY2Nlc3NlcyBhIGRhdGEgbWVtYmVyIHRoYXQgbWF5IGJlCglvdXRzaWRlIG9mIHRoZSBhY3R1YWwgZGF0YSBzdHJ1Y3R1cmUgcGFzc2VkIGluLgoJQWRkZWQgc29tZSBtb3JlIGRlYnVnIHRyYWNlcy4KCgkqIGRsbHMvc2hlbGwzMi9icnNmb2xkZXIuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUFzc3VtZSBNQVhfUEFUSCBsZW5ndGggZm9yIHBzekRpc3BsYXlOYW1lLgoKCSogZGxscy9tc3ZjcnQvZmlsZS5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJRml4ZWQgdHlwby4KCgkqIGluY2x1ZGUvY29tbWRsZy5oOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJR2l2ZSBhIHN0cnVjdCB0YWcgdG8gT1BFTklMRU5BTUVBL1cgdG8gYWxsb3cgZm9yd2FyZCBkZWNsYXJhdGlvbnMuCgoJKiBkbGxzL2tlcm5lbC9zbm9vcDE2LmM6IFJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCUZpeCB0aGUgbWlzc2luZyB0cmVhZCBJRCBvZiBzb21lIHNub29wIHJldHVybiB0cmFjZXMuCgoJKiBkbGxzL3dpbm1tL3Rlc3RzL2NhcHR1cmUuYywgZGxscy93aW5tbS90ZXN0cy93YXZlLmMsCgkgIGRsbHMvd2lubW0vdGVzdHMvd2lubW1fdGVzdC5oOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUFkZGVkIFdBVkVfTUFQUEVEIGZsYWcgdGVzdC4KCUFkZGVkIDgwMDAgSHogdGVzdCBhcyBhIHR5cGljYWxseSBzdXBwb3J0ZWQgZm9ybWF0LgoJQWRkZWQgMTIwMDAgSHogdGVzdCBhcyBhIHR5cGljYWxseSB1bnN1cHBvcnRlZCBmb3JtYXQuCglUZXN0IGVycm9yIHJlcG9ydGluZyBiZXR0ZXIgYnkgdGVzdGluZyB1bnN1cHBvcnRlZCBmb3JtYXRzLgoJVGVzdCB1c2luZyBQQ01XQVZFRk9STUFUIGluIHBsYWNlIG9mIFdBVkVGT1JNQVRFWC4KCgkqIGRsbHMvYXZpZmlsMzIvYXZpZmlsZV9JdC5yYywgZGxscy9jb21jdGwzMi9jb21jdGxfSXQucmMsCgkgIGRsbHMvY29tbWRsZy9jZGxnX0l0LnJjLCBkbGxzL2QzZHJtL2QzZHJtX21haW4uYywKCSAgZGxscy9kM2RybS92ZXJzaW9uLnJjLCBkbGxzL21zYWNtL21zYWNtX0l0LnJjLAoJICBkbGxzL21zcmxlMzIvbXNybGVfSXQucmMsIGRsbHMvb2xlZGxnL29sZWRsZ19JdC5yYywKCSAgZGxscy9xY2FwL3ZlcnNpb24ucmMsIGRsbHMvc2VyaWFsdWkvSXQucmMsIGRsbHMvc2V0dXBhcGkvSXQucmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0l0LnJjLCBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9JdC5yYywKCSAgZGxscy93aW5lcHMvd3BzX0l0LnJjLCBkbGxzL3dpbmluZXQvd2luaW5ldF9JdC5yYywKCSAgZGxscy93aW5tbS93aW5tbV9JdC5yYywgZG9jdW1lbnRhdGlvbi9SRUFETUUuaXQsCgkgIGRvY3VtZW50YXRpb24vY29uZmlndXJpbmcuc2dtbCwgaW5jbHVkZS93aW5lL3dpbmVfY29tbW9uX3Zlci5yYywKCSAgcHJvZ3JhbXMvY2xvY2svSXQucmMsIHByb2dyYW1zL2NtZGxndHN0L0l0LnJjLAoJICBwcm9ncmFtcy9ub3RlcGFkL0l0LnJjLCBwcm9ncmFtcy9wcm9nbWFuL0l0LnJjLAoJICBwcm9ncmFtcy9yZWdlZGl0L0l0LnJjLCBwcm9ncmFtcy9yZWdlZGl0L3Jlc291cmNlLnJjLAoJICBwcm9ncmFtcy9zdGFydC9JdC5yYywgcHJvZ3JhbXMvdW5pbnN0YWxsZXIvcnNyYy5yYywKCSAgcHJvZ3JhbXMvdmlldy9JdC5yYywgcHJvZ3JhbXMvd2luZWZpbGUvSXQucmMsCgkgIHByb2dyYW1zL3dpbmVtaW5lL0l0LnJjLCB0b29scy9idWdfcmVwb3J0LnBsOgoJSXZhbiBMZW8gUHVvdGkgPHB1b3RpQGlud2luZC5pdD4KCUNoYW5nZWQgbXkgbmFtZSwgc28gdXBkYXRlIGNvcHlyaWdodCBpbmZvLgoKCSogZGxscy94MTFkcnYveHJlbmRlci5jOiBUcm95IFJvbGxvIDx3aW5lQHRyb3kucm9sbG8ubmFtZT4KCU1ha2UgdW5kZXJsaW5pbmcgb2YgZm9udHMgZHJhd24gYXQgYW4gYW5nbGUgZm9sbG93IHRoZSB0ZXh0LgoKCSogb2JqZWN0cy9kaWIuYzogQWxleCBWaWxsYWPtcyBMYXNzbyA8YV92aWxsYWNpc0BwYWxvc2FudG8uY29tPgoJUmV0dXJuIGxpbmUgY291bnQgd2hlbiB0aGUgYml0cyBwYXJhbWV0ZXIgaXMgTlVMTC4KCgkqIGRsbHMvZDNkOC9kM2Q4LnNwZWMsIGRsbHMvZDNkOC9kM2Rjb3JlX2dsLmgsIGRsbHMvZDNkOC9kaXJlY3R4LmMsCgkgIGRsbHMvZDNkOC9zaGFkZXIuYywgZGxscy9kM2Q4L3V0aWxzLmMsCgkgIGRsbHMvZDNkOC92c2hhZGVyZGVjbGFyYXRpb24uYzoKCVJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJLSB0aGUgaGFyZHdhcmUgR0wgdmVuZG9ycyAoTlZpZGlhIGFuZCBBVEkpIGNhbiBzdXBwb3J0IG1vcmUgdGhhbiA5NQoJY29uc3RhbnRzICh0aGUgTWVzYSBidWcpIGFuZCBWUmFsbHkgdXNlIHRoZSAwLi45NSBpbmRleGVzIHNvIGZpeCBpdAoJLSBmaXggbm9ybWFsaXplIGZvciBzb21lIEhXIFZlcnRleFNoYWRlciBpbnB1dHMKCS0gdHJ5aW5nIHRvIGZpeCB0aGUgY29tYmluYXRpb24gb2YgTlZfdGV4dHVyZV9jb21iaW5lXzQgd2l0aAoJdGV4dHVyZV9jb21iaW5lX0VYVCAoaW1wbCBvZiBEM0RUT1BfRElTQUJMRSwgRDNEVE9QX01PRFVMQVRFIGZvcgoJTlZfdGV4dHVyZV9jb21iaW5lXzQpCgktIGlmIHNoYWRlcnMgZGlzYWJsZWQgZGVjbGFyZSB0byBzdXBwb3J0IDAgZm9yIE1heFZlcnRleFNoYWRlckNvbnN0LgoKCSogZGxscy91c2VyL3Rlc3RzL2RpYWxvZy5jOiBLZXZpbiBLb2x0emF1IDxrZXZpbkBwbG9wLm9yZz4KCVJlbW92ZSBwYXJ0IG9mIHRlc3QgdGhhdCBjcmFzaGVzIHdpbjk1LgoKCSogZGxscy9vbGVhdXQzMi9vbGVhdXQuYywgZGxscy9vbGVhdXQzMi9vbGVhdXQzMi5zcGVjOgoJQWxleCBWaWxsYWPtcyBMYXNzbyA8YV92aWxsYWNpc0BwYWxvc2FudG8uY29tPgoJQWRkZWQgc3R1YiBmb3IgR2V0UmVjb3JkSW5mb0Zyb21HdWlkcy4KCgkqIGxpYnMvd2luZS9tbWFwLmM6IEtldmluIEtvbHR6YXUgPGtldmluQHBsb3Aub3JnPgoJRml4ZWQgbGFzdCBtbWFwIGlzc3VlIHdpdGggbWluZ3cgd2luZG93cyBidWlsZC4KCgkqIGRsbHMvZG1pbWUvc2VnbWVudC5jOiBSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCVN1cHBvcnQgbG9hZGluZyBvZiBXYXZlIHNlZ21lbnRzIG9uIElEaXJlY3RNdXNpY1NlZ21lbnQ4LgoKCSogZGxscy9kaW5wdXQvam95c3RpY2tfbGludXguYywgZGxscy9kaW5wdXQvam95c3RpY2tfbGludXhpbnB1dC5jOgoJQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJRml4ZWQgam95c3RpY2sgZGV2aWNlIHR5cGUgZm9yIGRpbnB1dDguCgoJKiBkbGxzL3NoZWxsMzIvY29udHJvbC5jOiBTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCU1vdmVkIHN0dWIgb2YgQ29udHJvbF9GaWxsQ2FjaGVfUnVuRExMIGZyb20gYXNjaWkgdG8gdW5pY29kZS4KCgkqIGRsbHMvZG1pbWUvcGVyZm9ybWFuY2UuYzogUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CgktIGRvbid0IHVzZSBhIHN0dXBpZCAid2hpbGUgKDEpOyIgdGhyZWFkIHdoZW4gRE1QZXJmb3JtYW5jZSBNU0cgUXVldWUgZW1wdHkKCS0gdHJ5IHRvIHVzZSBsYXRlbmN5IGFuZCBNU0cgc3luY2hybyBmb3IgdGltZW91dCAoYnV0IGFzIGknbSBub3QgYQoJICBzb3VuZCBleHBlcnQgZG9uJ3QgZXhwZWN0IHRvbyBtdWNoKQoKMjAwNC0wNS0yNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGxpYnMvd2luZS9tbWFwLmM6IFBvcnRhYmlsaXR5IGZpeC4KCgkqIGluY2x1ZGUvd2luZS9wb3J0LmgsIGxpYnMvd2luZS9jb25maWcuYywgbGlicy93aW5lL2xvYWRlci5jOgoJTW92ZWQgZW52aXJvbiBkZWZpbml0aW9uIHRvIHBvcnQuaC4KCgkqIGNvbnRyb2xzL2VkaXQuYzogVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hAY29kZXdlYXZlcnMuY29tPgoJRml4IHVwZGF0ZSByZWdpb24gY2FsY3VsYXRpb24gZm9yIHRoZSBjYXNlIHdoZXJlIGEgd29yZCB3cmFwcyB1cCB0bwoJdGhlIHByZXZpb3VzIGxpbmUuCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmg6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglBZGQgYSBjb3VwbGUgb2YgbWlzc2luZyBsaXN0dmlldyBtYWNyb3MuCgoJKiB3aW5kb3dzL21kaS5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRG8gbm90IGFjdGl2YXRlIGFuIE1ESSBjaGlsZCBpZiB0aGUgY2hpbGQgaXMgaW52aXNpYmxlLgoKCSogdG9vbHMvd2luZWdjYy93aW5lZ2NjLmM6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglBbHdheXMgdXNlICQoQ0MpIGZvciBidWlsZGluZyB0aGUgZ2VuZXJhdGVkIC5zcGVjLmMgZmlsZS4KCgkqIGRsbHMva2VybmVsL2hlYXAuYzoKCUFsbG9jYXRlIHRoZSBzaGFyZWQgaGVhcCBpbnNpZGUgdGhlIFdpbjl4IHNoYXJlZCBtZW1vcnkgYXJlYS4KCgkqIGRsbHMva2VybmVsL2tlcm5lbF9tYWluLmM6CglPbmx5IGNyZWF0ZSB0aGUgc2hhcmVkIGhlYXAgd2hlbiBXaW5kb3dzIHZlcnNpb24gaXMgV2luOXguCgoJKiBsaWJzL3dpbmUvY29uZmlnLmMsIGxpYnMvd2luZS9sb2FkZXIuYzoKCUVtbWFudWVsIE1haWxsYXJkIDxlLnJzekBsaWJlcnR5c3VyZi5mcj4KCUFkZGVkIGVudmlyb24gc3VwcG9ydCBmb3IgRGFyd2luLgoKCSogY29udHJvbHMvc3RhdGljLmM6IE9sZWcgUHJva2hvcm92IDx4b2xlZ3Byb0ByYmNtYWlsLnJ1PgoJUmVtb3ZlZCBEVF9OT0NMSVAgZm9ybWF0IGZsYWcuCgoJKiBjb250cm9scy9zdGF0aWMuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJV2hlbiByZXBhaW50aW5nIGEgc3RhdGljIGNvbnRyb2wsIHdpdGggU1NfQklUTUFQIHN0eWxlLCBkbyBub3QgZXJhc2UKCXRoZSBiYWNrZ3JvdW5kLiBLZWVwIHNlbmRpbmcgdGhlIFdNX0NUTENPTE9SU1RBVElDIG5vdGlmaWNhdGlvbiBhcwoJV2luZG93cyBkb2VzLgoKCSogbGlicy93aW5lL3BvcnQuYzoKCUVtbWFudWVsIE1haWxsYXJkIDxtYWlsbGFyZC5lbW1hbnVlbEBsaWJlcnR5c3VyZi5mcj4KCUFkanVzdCBzdGFjayBwb2ludGVyIGluIHdpbmVfc3dpdGNoX3RvX3N0YWNrIHRvIHByZXZlbnQgc2VnbWVudGF0aW9uCglmYXVsdCBvbiBkYXJ3aW4vcHBjLgoKCSogZGxscy93aW5pbmV0L2Z0cC5jLCBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYywgZGxscy93aW5pbmV0L2ludGVybmV0LmgsCgkgIGRsbHMvd2luaW5ldC91dGlsaXR5LmMsIGRsbHMvd2luaW5ldC93aW5pbmV0LnNwZWM6CglLZXZpbiBLb2x0emF1IDxrZXZpbkBwbG9wLm9yZz4KCU1vdmUgYWxsIEZUUCBmdW5jdGlvbnMgdG8gdW5pY29kZS4KCUltcHJvdmUgRlRQIExJU1QgcGFyc2luZy4KCgkqIGRsbHMva2VybmVsL3Byb2Nlc3MuYywgZGxscy9udGRsbC92aXJ0dWFsLmMsIGluY2x1ZGUvd2luZS9saWJyYXJ5LmgsCgkgIGxpYnMvd2luZS9NYWtlZmlsZS5pbiwgbGlicy93aW5lL2xvYWRlci5jLCBsaWJzL3dpbmUvbW1hcC5jLAoJICBsaWJzL3dpbmUvcG9ydC5jLCBsaWJzL3dpbmUvd2luZS5kZWYsIGxpYnMvd2luZS93aW5lLm1hcCwKCSAgbG9hZGVyL21haW4uYzoKCUFkZGVkIHN1cHBvcnQgZm9yIG1hbmFnaW5nIHJlc2VydmVkIG1lbW9yeSBhcmVhcyBpbiBsaWJ3aW5lIGFuZCBudGRsbC4KCVRyeSB0byByZXNlcnZlIGV2ZXJ5dGhpbmcgYWJvdmUgMHg4MDAwMDAwMCBvbiBzdGFydHVwLgoKCSogZGxscy9zaGx3YXBpL3N0b3B3YXRjaC5jOgoJU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtTGluZS5jb20+CglNb3ZlZCBzdHViIG9mIFN0b3BXYXRjaCBmcm9tIGFzY2lpIHRvIHVuaWNvZGUuCgoJKiBkbGxzL2FkdmFwaTMyL2FkdmFwaTMyLnNwZWMsIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYzoKCVdpbGxpYW0gTGFodGkgPGNvbXB1dGVybWFuNDEzQGV6cnMuY29tPgoJSW1wbGVtZW50ZWQgQXJlQW55QWNjZXNzZXNHcmFudGVkLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvZmlsZS5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQXZvaWQgYSBmYWlsdXJlIHVuZGVyIFdpbjl4LgoKMjAwNC0wNS0yNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvZGJnaGVscC9lbGZfbW9kdWxlLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglGaXggZWxmX3JlYWRfd2luZV9sb2FkZXJfZGJnX2luZm8oKSBmb3IgdGhlICFfX0VMRl9fIGNhc2UuCgoJKiBkbGxzL3VzZXIvdGVzdHMvbXNnLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGQgbWVzc2FnZSB0ZXN0IGZvciBEcmF3TWVudUJhci4KCgkqIGRsbHMvdXNlci90ZXN0cy93aW4uYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBhIHRlc3QgZm9yIGZvY3VzIGNoYW5nZSBvbiBTaG93V2luZG93KGNoaWxkLCBTV19ISURFKS4KCgkqIGRsbHMvZGJnaGVscC9kYmdoZWxwLmMsIGRsbHMvZGJnaGVscC9lbGZfbW9kdWxlLmMsCgkgIGRsbHMvZGJnaGVscC9tb2R1bGUuYywgZGxscy9kYmdoZWxwL21zYy5jLCBkbGxzL2RiZ2hlbHAvcGVfbW9kdWxlLmMsCgkgIGRsbHMvZGJnaGVscC9zeW1ib2wuYywgZGxscy9kYmdoZWxwL3R5cGUuYzoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJLSBzb21lIG1vcmUgZml4ZXMgdG8gZWxmIG1vZHVsZSdzIHN5bWJvbCB0YWJsZSBoYW5kbGluZyAoaW5jbHVkaW5nCgkgIHN0YXRpYy9nbG9iYWwgZGlmZiBmb3IgdmFyaWFibGVzKQoJLSBub3cgcmUtc3luY2hyb25pemluZyBFTEYgbGlzdCBpbiBhbGwgY2FzZXMgKG5vIGxvbmdlciBkZXBlbmRpbmcgb24KCSAgUlRfQ09OU0lTVEVOVCBzdGF0ZSkKCS0gbm93IHNob3VsZCBiZSBhYmxlIHRvIGRpZmZlcmVudGlhdGUgcHJvcGVybHkgYSBuYXRpdmUgZnJvbSBhIGJ1aWx0aW4KCSAgbW9kdWxlCgktIGluIHN5bWJvbCBsb29rdXAsIG5vdyB1c2luZyBzaXplIG9mIHN5bWJvbCAoaWYga25vd24pCgktIFN5bUdldFR5cGVJbmZvIG5vdyBjaGVja3MgYW5kIHVzZXMgQmFzZUFkZHJlc3MKCS0gaW4gTVNDLUNWLCByZWFsbHkgZ2VuZXJhdGUgdGh1bmsgb2JqZWN0cwoKCSogZGxscy9udGRsbC9kaXJlY3RvcnkuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUN5Z3dpbidzIG1udGVudC5oIHJlcXVpcmVzIHN0ZGlvLmggdG8gYmUgaW5jbHVkZWQgZmlyc3QuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9waXBlLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglFeHBsaWNpdGx5IHNwZWNpZnkgbmFtZSBvZiB0aGUgcGlwZSBpbiB0aGUgcGlwZSB0ZXN0LgoKCSogZGxscy9rZXJuZWwvdG9vbGhlbHAuYzogRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglTb21lIGZpeGVzIHRvIG1vZHVsZSBicm93c2luZy4KCjIwMDQtMDUtMjIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzZXJ2ZXIvZmQuYzoKCU1ha2Ugc3VyZSB3ZSBkb24ndCB0cnVuY2F0ZSB0aGUgZmlsZSBvbiBvcGVuIGJlZm9yZSB3ZSBoYXZlIGNoZWNrZWQKCXRoZSBzaGFyaW5nIG1vZGVzICh0aGFua3MgdG8gRG1pdHJ5IFRpbW9zaGtvdiBmb3IgdGhlIHRlc3QgY2FzZSkuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9maWxlLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGQgYSB0ZXN0IGZvciBvcGVuaW5nIGFuIGFscmVhZHkgb3BlbmVkIGZpbGUgZm9yIHdyaXRpbmcgaW4gYSBub3QKCWNvbXBhdGlibGUgc2hhcmluZyBtb2RlLgoKCSogZGxscy9rZXJuZWwvZmlsZS5jOiBDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglBZGRlZCBzb21lIHRyYWNlcyB0byBrZXJuZWwgZmlsZSBmdW5jdGlvbnMuCgoyMDA0LTA1LTIxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9rZXJuZWwvdGVzdHMvdmlydHVhbC5jLCBkbGxzL2tlcm5lbC92aXJ0dWFsLmMsCgkgIGRsbHMvbnRkbGwvdmlydHVhbC5jLCBpbmNsdWRlL3dpbmUvbGlzdC5oOgoJQ29udmVydGVkIHRoZSBtZW1vcnkgdmlld3MgbGlzdCB0byB1c2UgdGhlIHN0YW5kYXJkIGZ1bmN0aW9ucyBmcm9tCgl3aW5lL2xpc3QuaC4KCVJlc3RydWN0dXJlZCBzb21lIGZ1bmN0aW9ucyB0byBhbHdheXMgcmV0dXJuIHByb3BlciBOVCBzdGF0dXMgY29kZXMuCglBIGNvdXBsZSBvZiBvcHRpbWl6YXRpb25zLgoJQWRkZWQgYSBmZXcgdGVzdHMgZm9yIGZpbGUgbWFwcGluZ3MuCgoJKiBkbGxzL2RwbGF5Ly5jdnNpZ25vcmUsIGRsbHMvZHBsYXkvTWFrZWZpbGUuaW4sIGRsbHMvZHBsYXkvdmVyc2lvbi5yYywKCSAgZGxscy9xY2FwL3FjYXBfbWFpbi5jLCBkb2N1bWVudGF0aW9uL3NhbXBsZXMvY29uZmlnOgoJVG9tIFdpY2tsaW5lIDx0d2lja2xpbmVAc2l0ZXN0YXIubmV0PgoJLSBhZGQgdmVyc2lvbiBpbmZvIHRvIGRwbGF5LmRsbAoJLSBhZGQgbGljZW5jZSBpbmZvIHRvIHFjYXAKCS0gYWRkIGQzZHJtIGFuZCBkcG5ocGFzdCB0byBkbGwgb3ZlcnJpZGVzCgoJKiBkbGxzL3dpbm1tL3Rlc3RzL2NhcHR1cmUuYywgZGxscy93aW5tbS90ZXN0cy93YXZlLmMsCgkgIGRsbHMvd2lubW0vdGVzdHMvd2lubW1fdGVzdC5oOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUZpeGVkIGEgYnVnIEkgaW50cm9kdWNlZCBpbiB3YXZlSW5HZXREZXZDYXBzQShXQVZFX01BUFBFUikgdGVzdC4KCU1vdmVkIGZvcm1hdCBzdHJ1Y3R1cmUgYXJyYXkgdG8gaGVhZGVyIGZpbGUgYW5kIHJlc3RvcmVkCglOQl9XSU5fRk9STUFUUyBtYWNybyB0byBjYWxjdWxhdGUgYXJyYXkgc2l6ZS4KCUFkZGVkIG1vcmUgZXJyb3IgcmVzdWx0cyBhbmQgdXNlZCBtYWNybyBhcyBzdWdnZXN0ZWQgYnkgQW5kcmVhcyBNb2hyLgoJQ2xlYW5lZCB1cCBlcnJvciByZXN1bHQgcHJpbnRpbmcgdG8gYmUgbW9yZSBjb25zaXN0ZW50LgoKCSogZGxscy9kM2Q4L2QzZGNvcmVfZ2wuaCwgZGxscy9kM2Q4L2RpcmVjdHguYzoKCUNocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUFkZGVkIHJldHJpZXZhbCBvZiBBVEkgaW5mby4KCgkqIGRsbHMvZDNkOC9zdXJmYWNlLmMsIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL2RhdGFjYWNoZS5jLAoJICBkbGxzL29sZTMyL2RlZmF1bHRoYW5kbGVyLmMsIGRsbHMvb2xlMzIvZmlsZW1vbmlrZXIuYywKCSAgZGxscy9vbGUzMi9pZnMuYywgZGxscy9vbGUzMi9pdGVtbW9uaWtlci5jLCBkbGxzL29sZTMyL21hcnNoYWwuYywKCSAgZGxscy9vbGUzMi9tb25pa2VyLmMsIGRsbHMvb2xlMzIvb2xlMi5jLCBkbGxzL29sZTMyL29sZTJpbXBsLmMsCgkgIGRsbHMvb2xlMzIvb2xlcHJveHkuYywgZGxscy9vbGUzMi9zdG9yYWdlMzIuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUmV2ZXJ0IGJyb2tlbiBzdHJpY3QgYWxpYXNpbmcgZml4LgoKCSogb2JqZWN0cy9mb250LmM6IFJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCUxldCBHZXRGb250TGFuZ3VhZ2VJbmZvKCkgcmV0dXJuIHRoZSBHQ1BfUkVPUkRFUiBmbGFnIG9ubHkgaW4gY2FzZSB0aGUKCURDIGFsaWdubWVudCBpcyByaWdodC10by1sZWZ0LgoKCSogZGxscy91c2VyL3Rlc3RzL2NsYXNzLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGQgYSB0ZXN0IGZvciB3aW5kb3cncyBoaW5zdGFuY2UuCgoyMDA0LTA1LTIwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy93aW5tbS90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL3dpbm1tL3Rlc3RzL01ha2VmaWxlLmluLAoJICBkbGxzL3dpbm1tL3Rlc3RzL2NhcHR1cmUuYywgZGxscy93aW5tbS90ZXN0cy93YXZlLmMsCgkgIGRsbHMvd2lubW0vdGVzdHMvd2lubW1fdGVzdC5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVNwbGl0IG9mZiB0aGUgd2lubW0gY2FwdHVyZSB0ZXN0LgoKCSogZGxscy9rZXJuZWwvdGVzdHMvbW9kdWxlLmM6IERvbid0IHVzZSB0aGUgV2luZSBkZWJ1ZyBmdW5jdGlvbnMuCglGaXhlZCB3cm9uZyBBL1cgbGVuZ3RoIGNoZWNrcy4KCgkqIGRsbHMvdXNlci90ZXN0cy9tc2cuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCS0gTWFrZSBuZXcgdGVzdHMgcGFzcyBvbiB3aW4yayBTUDQgYW5kIHdpbjk1IE9TUjIuCgktIEFkZCBsb2dnaW5nIG9mIHNvbWUgdXNlZnVsIG1lc3NhZ2VzIGluIHRoZSBwYXJlbnQgd2luZG93LgoJLSBBZGQgbG9nZ2luZyBvZiB3cGFyYW0gZm9yIFdNX0lNRV9TRVRDT05URVhULgoKCSogZGxscy93aW5tbS90ZXN0cy93YXZlLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglBZGQgYSA1IHNlY29uZCB0ZXN0IHRvbmUgdG8gaGVscCBkZWJ1ZyBpc3N1ZXMgd2l0aCB0aGUgdG9uZSBkdXJhdGlvbgoJYW5kIGhlbHAgZGV0ZWN0IHN0dXR0ZXIgaXNzdWVzLgoJQWRkIGV4cGxhbmF0aW9ucyBkZXNjcmliaW5nIHRoZSBpbnRlcmFjdGl2ZSB0ZXN0LgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglVc2UgdHJpZ2dlcnMgdG8gZGlzYWJsZSB0aGUgc291bmQgaW5wdXQvb3V0cHV0IHNpZGUgd2UgZG9uJ3QgY2FyZQoJYWJvdXQgd2hlbiBpbiBwc2V1ZG8gZnVsbGR1cGxleCBtb2RlLgoKCSogZGxscy9kbWltZS9kbWltZV9wcml2YXRlLmgsIGRsbHMvZG1pbWUvZ3JhcGguYzoKCVJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJQmV0dGVyIGhhbmRsaW5nIG9mIFVzZXIgSURpcmVjdE11c2ljVG9vbHMuCgoyMDA0LTA1LTE5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9kM2Q4L2QzZDhfcHJpdmF0ZS5oLCBkbGxzL2QzZDgvZGV2aWNlLmMsIGRsbHMvZDNkOC9kaXJlY3R4LmMsCgkgIGRsbHMvZDNkOC9zdGF0ZWJsb2NrLmMsIGRsbHMvZDNkOC9zdXJmYWNlLmMsIGRsbHMvZDNkOC91dGlscy5jOgoJUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CgktIGZpcnN0IGRyYWZ0IG9mIEQzRENMSVBTVEFUVVM4IGhhbmRsaW5nIChub3QgcmVhbGx5IHVzZWQgZm9yIG5vdykKCS0gYWRkIGEgbmV3IERFQlVHX1NJTkdMRV9NT0RFICNkZWZpbmUgKGZvciBkZWJ1ZyBjYXBzIG5lZWRzKQoJLSBiZXR0ZXIgdHJhY2VzIGZvciBzdXJmYWNlIGR1bXBpbmcKCS0gbXVjaCBiZXR0ZXIgVGV4dHVyZSBzdXBwb3J0IG9uIFV0aWxpdGllcyBmdW5jdGlvbnMgYW5kIG9uCgkgIENoZWNrRGV2aWNlVHlwZQoJLSBEM0RSU19aVklTSUJMRSBhcyB1bnN1cHBvcnRlZCAoYXMgc2VlbiBpbiBtc2RuKQoKCSogZGxscy9kbWltZS9hdWRpb3BhdGguYywgZGxscy9kbWltZS9kbWltZV9wcml2YXRlLmgsCgkgIGRsbHMvZG1pbWUvc2VndHJpZ2dlcnRyYWNrLmMsIGRsbHMvZG1pbWUvdGVtcG90cmFjay5jOgoJUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CgktIEJldHRlciBsb2FkaW5nIG9mIElEaXJlY3RNdXNpY1NlZ1RyaWdnZXJUcmFjayAoaW50ZXJuYWwgbGlzdCBvZgoJICBzdWJ0cmFja3MpCgktIEJldHRlciBzdHVicyBmb3IgSURpcmVjdE11c2ljVGVtcG9UcmFjazo6SW5pdFBsYXkgYW5kCgkgIElEaXJlY3RNdXNpY1RlbXBvVHJhY2s6OkVuZFBsYXkgKEluaXRQbGF5IHNob3VsZCByZXR1cm4gYSB2YWxpZAoJICBtZW1vcnkgcG9pbnRlciBzbyBhbGxvY2F0ZSBpdCkuIFNob3VsZCBiZSBleHRlbmRlZCBmb3IgYWxsCgkgIElEaXJlY3RNdXNpY1RyYWNrIG9iamVjdHMuCgoJKiBkbGxzL2RldmVudW0vZGV2ZW51bV9tYWluLmMsIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmMsCgkgIGRsbHMva2VybmVsL2NvbnNvbGUuYywgZGxscy9rZXJuZWwvbW9kdWxlLmMsIGRsbHMva2VybmVsL25lX21vZHVsZS5jLAoJICBkbGxzL2tlcm5lbC90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL2tlcm5lbC90ZXN0cy9NYWtlZmlsZS5pbiwKCSAgZGxscy9rZXJuZWwvdGVzdHMvbW9kdWxlLmMsIGRsbHMva2VybmVsL3ZlcnNpb24uYywKCSAgZGxscy9tc3ZjcnQvZGF0YS5jLCBkbGxzL3BzYXBpL3BzYXBpX21haW4uYywgZGxscy9ycGNydDQvY3BzZi5jLAoJICBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywKCSAgZGxscy9zaGx3YXBpL29yZGluYWwuYywgZGxscy9zaGx3YXBpL3VybC5jLCBkbGxzL3VzZXIvaG9vay5jLAoJICBkbGxzL3ZlcnNpb24vaW5mby5jLCBkbGxzL3dpbm1tL3BsYXlzb3VuZC5jLAoJICBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jLAoJICBwcm9ncmFtcy93aW5lbWVudWJ1aWxkZXIvd2luZW1lbnVidWlsZGVyLmM6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCUdldE1vZHVsZUZpbGVOYW1lW0FXXSBkb2Vzbid0IHRlcm1pbmF0ZSB0aGUgc3RyaW5nIGlmIHRoZSBidWZmZXIgaXMKCXRvbyBzbWFsbC4KCjIwMDQtMDUtMTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2RiZ2hlbHAvZGJnaGVscC5jLCBkbGxzL2RiZ2hlbHAvZGJnaGVscF9wcml2YXRlLmgsCgkgIGRsbHMvZGJnaGVscC9lbGZfbW9kdWxlLmMsIGRsbHMvZGJnaGVscC9tb2R1bGUuYywgZGxscy9kYmdoZWxwL21zYy5jLAoJICBkbGxzL2RiZ2hlbHAvcGVfbW9kdWxlLmMsIGRsbHMvZGJnaGVscC9zdGFicy5jLAoJICBkbGxzL2RiZ2hlbHAvc3RvcmFnZS5jLCBkbGxzL2RiZ2hlbHAvc3ltYm9sLmMsIGRsbHMvZGJnaGVscC90eXBlLmMsCgkgIGluY2x1ZGUvY3Zjb25zdC5oLCBpbmNsdWRlL2RiZ2hlbHAuaDoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJLSByZW1vdmVkIGZpbGUgZXh0ZW5zaW9uIGZyb20gbW9kdWxlIChhbmQgc3VmZml4ZWQgRUxGIG1vZHVsZXMgd2l0aAoJICA8ZWxmPikKCS0gYWRkZWQgZ2VuZXJpYyB0aHVuayBzdXBwb3J0IGZvciBidWlsdGluIG1vZHVsZXMgKHdpdGggdGhlIGhlbHAgb2YKCSAgd2luZWJ1aWxkJ3MgbmV3IG1hcmtlcnMgZm9yIHRodW5rcykKCS0gZm9yIEVMRiBtb2R1bGVzLCBubyBsb25nZXIgZ2VuZXJhdGluZyBTeW1UYWdQdWJsaWNTeW1ib2xzIG9iamVjdHMKCSAgZnJvbSBFTEYgcHVibGljIHN5bWJvbCB0YWJsZQoJLSBiZWNhdXNlIG9mIGxhc3QgcG9pbnQsIHJld3JvdGUgc3RhYnMgc3ltYm9scycgYWRkcmVzcyBhbmQgc2l6ZQoJICBtYW5hZ2VtZW50IGJ5IHBhcnNpbmcgZGlyZWN0bHkgdGhlIHN5bXRhYiBpbnN0ZWFkIG9mIHVzaW5nCgkgIFN5bVRhZ1B1YmxpY1N5bWJvbHMgb2JqZWN0cwoJLSBjbGVhbmVkIHVwIFN5bVRhZ1B1YmxpY1N5bWJvbHMgb2JqZWN0IG5hbWVzIGZvciBuYXRpdmUgbW9kdWxlcwoJLSBmaXhlZCBvZmYgYnkgb25lIGVycm9ycyBpbiBhcnJheSBtYW5hZ2VtZW50CgktIFN5bUxvYWRNb2R1bGUoaFByb2MsMCwwLDAsMCkgKHdpbmUgZXh0ZW5zaW9uKSB3aWxsIGZvcmNlIHRoZQoJICByZXN5bmNocm9uaXphdGlvbiBvZiBpbnRlcm5hbCBFTEYgbW9kdWxlcyBsaXN0KQoJLSBuZXcgb3B0aW9uICgweDQwMDAwMDAwKSBmb3IgU3lte0dldHxTZXR9T3B0aW9uIHRvIHJlcG9ydCBFTEYgbW9kdWxlcwoJICBpbiBTeW1FbnVtTW9kdWxlcyAoYXMgd2VsbCBhcyBsb2FkZXIgd2l0aCA8d2luZS1sb2FkZXI+KQoJLSBzb21lIG1pbm9yIGludGVybmFsIGNsZWFuLXVwcwoJLSBlbmhhbmNlZCBjb25zdCBjb3JyZWN0bmVzcwoKCSogdG9vbHMvd2luZWJ1aWxkL2ltcG9ydC5jLCB0b29scy93aW5lYnVpbGQvcGFyc2VyLmMsCgkgIHRvb2xzL3dpbmVidWlsZC9yZWxheS5jLCB0b29scy93aW5lYnVpbGQvcmVzMzIuYywKCSAgdG9vbHMvd2luZWJ1aWxkL3NwZWMxNi5jOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CgktIGFkZGVkIHNpemUgaW5mb3JtYXRpb24gYWJvdXQgbW9zdCBvZiB0aGUgZ2VuZXJhdGVkIHRodW5rcyAoaW1wb3J0LAoJICAxNi8zMiByZWxheS4uLikKCS0gbWFya2VkIHRoZSB3aW5lIHRodW5rcyBieSBpbnNlcnRpbmcgc3BlY2lmaWMgc3ltYm9scyAodG8gYmUgbWFuYWdlZAoJICBieSB3aW5lJ3MgZGJnaGVscCkKCS0gcmVtb3ZlZCB0aGUgc3RhYnMgZ2VuZXJhdGlvbjoKCSAgKyBtb3N0bHkgdXNlZCBieSB3aW5lZGJnLCBhbmQgdGhlIHByZXZpb3VzIGl0ZW0gd2lsbCByZXBsYWNlIGl0IGZvcgoJICAgIGRiZ2hlbHAKCSAgKyBzdGlsbCBicm9rZW4gZm9yIGdkYiBhbnl3YXkKCS0gZW5oYW5jZWQgY29uc3QgY29ycmVjdG5lc3MKCgkqIHdpbmRvd3MvZGlhbG9nLmM6CglBY3RpdmF0ZSBhbm90aGVyIHdpbmRvdyB3aGVuIHRoZSBkaWFsb2cgZ2V0cyBoaWRkZW4gaW4gRW5kRGlhbG9nLgoKCSogZGxscy91c2VyL3Rlc3RzL21zZy5jLCBkbGxzL3VzZXIvdGVzdHMvcmVzb3VyY2UucmM6CglBZGRlZCBzb21lIG9wdGlvbmFsIG1lc3NhZ2VzIHRvIG1ha2UgYWxsIHRlc3RzIHN1Y2NlZWQgb24gWFAuCglBZGRlZCB0ZXN0cyBmb3IgRW5kRGlhbG9nIGFuZCBhIHNpbXBsZSBtb2RhbCBkaWFsb2cuCgoJKiBkbGxzL2dkaS9wYWludGluZy5jLCBkbGxzL2tlcm5lbC9yZWdpc3RyeTE2LmMsIGRsbHMva2VybmVsL3N5bmMuYywKCSAgaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2luY29uLmgsIGluY2x1ZGUvd2luZ2RpLmg6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCUFkZGVkIHNvbWUgbWlzc2luZyBwcm90b3R5cGVzLgoKCSogZGxscy93aW5lcHMvY2xpcHBpbmcuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCVdoZW4gYnVpbGRpbmcgUG9zdFNjcmlwdCBwYXRocyB3aXRoIHRoZSAqX1BBVEggZXNjYXBlcywgZG9uJ3QgY2xpcCB0aGUKCXBhdGggYnVpbGRpbmcgcHJpbWl0aXZlcy4gIFRoZSBjbGlwcGluZyBjb21lcyBpbnRvIHBsYXkgd2hlbiB3ZQoJYWN0dWFsbHkgZHJhdyBzb21ldGhpbmcuCgoJKiBkbGxzL21zaS8uY3ZzaWdub3JlLCBkbGxzL21zaS9NYWtlZmlsZS5pbiwgZGxscy9tc2kvdmVyc2lvbi5yYzoKCUNocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUFkZGVkIHZlcnNpb24gaW5mbyB0byBNU0kgZGxsLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvbXN2Y3J0ZC9NYWtlZmlsZS5pbiwKCSAgZGxscy9tc3ZjcnRkL2RlYnVnLmMsIGRsbHMvbXN2Y3J0ZC9tc3ZjcnRkLnNwZWMsCgkgIGRsbHMvbXN2Y3J0ZC90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL21zdmNydGQvdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvbXN2Y3J0ZC90ZXN0cy9kZWJ1Zy5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglJbXBsZW1lbnRlZCB0aGUgZGVidWcgdmVyc2lvbiBvZiBvcGVyYXRvciBuZXcgKEMrKykuCgoJKiBERVZFTE9QRVJTLUhJTlRTLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9NYWtlZmlsZS5pbiwKCSAgZGxscy9kM2RybS8uY3ZzaWdub3JlLCBkbGxzL2QzZHJtL01ha2VmaWxlLmluLCBkbGxzL2QzZHJtL2QzZHJtLnNwZWMsCgkgIGRsbHMvZDNkcm0vZDNkcm1fbWFpbi5jLCBkbGxzL2QzZHJtL3ZlcnNpb24ucmM6CglJdmFuIExlbyBNdXJyYXktU21pdGggPHB1b3RpQGlud2luZC5pdD4KCUFkZGVkIGVtcHR5IChzdHVicyBpbiBzcGVjIG9ubHkpIGQzZHJtLgoKCSogd2luZG93cy93aW4uYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCU9ubHkgY2hpbGQgd2luZG93cyByZWNlaXZlIFdNX1NIT1dXSU5ET1cgaW4gRGVzdHJveVdpbmRvdygpIHVuZGVyCglXaW5kb3dzLgoKCSogZGxscy91c2VyL3Rlc3RzL3dpbi5jOiBBZGRlZCBhIGNvdXBsZSBvZiB0ZXN0cyBmb3IgU2V0QWN0aXZlV2luZG93LgoKCSogZGxscy9kM2Q4L2RpcmVjdHguYywgZGxscy9kM2Q4L3NoYWRlci5jOgoJQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJRW5hYmxlZCBwaXhlbCBzaGFkZXJzIDEuNC4KCUZpeGVkIGhhbmRsaW5nIG9mIG1hY3JvcyBhdCB0aGUgZW5kIG9mIHZlcnRleCBzaGFkZXJzLgoJSGFuZGxlZCBOT1AgYW5kIFBIQVNFIGluc3RydWN0aW9ucy4KCUZpeGVkIHZlcnNpb25zIG9mIHNldmVyYWwgaW5zdHJ1Y3Rpb25zLgoJSW1wcm92ZWQgcGl4ZWwgc2hhZGVyIGR1bXAgdHJhY2VzLgoJRml4ZWQgd3JpdGUgbWFzay4KCUZpeGVkIFgyIGFuZCAtWDIgc291cmNlIG1vZGlmaWVycyBhbmQgaW1wbGVtZW50cyBEWiBhbmQgRFcgb25lcy4KCUltcGxlbWVudGVkIHRleGNyZCwgdGV4bGQsIHRleG0zeDNwYWQsIHRleG0zeDN0ZXgsIHRleG0zeDNzcGVjIGFuZAoJdGV4bTN4M3ZzcGVjIGluc3RydWN0aW9ucyAoYW5kIHBhcnRpYWxseSB0ZXhiZW0pLgoJQWRkZWQgY25kLCBjbXAgYW5kIGxycCBpbnN0cnVjdGlvbnMuCglSZXdyaXRlIG9mIHRoZSAiYXV0b3BhcmFtIiBjb2RlIHNvIHdlIGNhbiBhZGQgbW9yZSBjb21wbGljYXRlZAoJaW5zdHJ1Y3Rpb25zIChvbmx5IGNuZCBhbmQgY21wIGFzIHdlbGwgYXMgc2ltcGxlIGluc3RydWN0aW9ucyB1c2UgdGhhdAoJY29kZSBhdCB0aGUgbW9tZW50KS4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOiBSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJLSBUQk5fRFJBR09VVCBhbmQgTk1fUkRCTENMSyBub3RpZmljYXRpb25zLgoJLSBSZW1vdmUgdW5uZWVkZWQgbWVtYmVyIG9mIHByaXZhdGUgdG9vbGJhciBzdHJ1Y3QuCgoyMDA0LTA1LTE3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9udGRsbC9kaXJlY3RvcnkuYzoKCUFkZGVkIHN1cHBvcnQgZm9yIG1hcHBpbmcgVU5DIGZpbGVuYW1lcyB0byB0aGUgZG9zZGV2aWNlcyBkaXJlY3RvcnkuCgoJKiBkbGxzL2RiZ2hlbHAvc3ltYm9sLmMsIGRsbHMvZHNvdW5kL2NhcHR1cmUuYywKCSAgZGxscy9keGRpYWduL2R4ZGlhZ19tYWluLmMsIGRsbHMvZHhkaWFnbi9yZWdzdnIuYywKCSAgZGxscy9rZXJuZWwvd293dGh1bmsuYywgZGxscy9tcHIvbXByX21haW4uYywgZGxscy9tc2kvbXNpLmMsCgkgIGRsbHMvbXN2Y3J0L2Rpci5jLCBkbGxzL21zdmNydC9taXNjLmMsIGRsbHMvbnRkbGwvdGhyZWFkLmMsCgkgIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmMsIGRsbHMvcnBjcnQ0L3JwY19iaW5kaW5nLmMsCgkgIGRsbHMvc2VjdXIzMi9zZWN1cjMyLmMsIGRsbHMvc2VjdXIzMi93cmFwcGVyLmMsCgkgIGRsbHMvc2V0dXBhcGkvZGV2aW5zdDE2LmMsIGRsbHMvc2V0dXBhcGkvc2V0dXB4MTYuaCwKCSAgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGRsbHMvdXh0aGVtZS91eHRoZW1lLnNwZWMsCgkgIGRsbHMvd2luaW5ldC93aW5pbmV0LnNwZWMsIGRsbHMveDExZHJ2L3gxMWRydi5zcGVjOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIGlzc3VlcyBmb3VuZCBieSB3aW5hcGlfY2hlY2suCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMyLnNwZWMsIGRsbHMvY29tY3RsMzIvc3RyaW5nLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCVN0clNwblcgZG9lc24ndCBleGlzdCBpbiBjb21jdGwzMi5kbGwgYnV0IFN0ckNTcG5XIGRvZXMuCgoJKiBkbGxzL3VybG1vbi91bW9uLmMsIGluY2x1ZGUvdXJsbW9uLmgsIGluY2x1ZGUvdXJsbW9uLmlkbDoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQWRkZWQgdGhlIElJbnRlcm5ldFNlc3Npb24gaW50ZXJmYWNlLgoKCSogdG9vbHMvd2luYXBpL3dpbjE2LmFwaSwgdG9vbHMvd2luYXBpL3dpbjMyLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9sb2NhbC5wbSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9wYXJzZXIucG06CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gQVBJIGZpbGVzIHVwZGF0ZS4KCS0gTWlub3IgYnVnIGZpeGVzLgoKCSogZGxscy9tc3ZjcnQvc2NhbmYuaDogUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CglGaXggc2NhbmYgaGFuZGxpbmcgb2YgZmxvYXQgbnVtYmVycyAoYmVnaW5uaW5nIHdpdGggYSBkb3QpLgoKCSogY29udHJvbHMvY29tYm8uYzogVGhvbWFzIFdlaWRlbm11ZWxsZXIgPHczc2Vla0ByZWFjdG9zLmNvbT4KCUNvbWJvYm94IHBvcHVwcyBzaG91bGQgYmUgYWx3YXlzLW9uLXRvcC4KCgkqIGRsbHMvZDNkOC9kcmF3cHJpbS5jOiBDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglIYW5kbGUgWFlaUkhXIHZlcnRleCBtb2RlIGNvcnJlY3RseSBpbiBzbG93IHBhdGguCgoJKiBkbGxzL2RtaW1lL2RtaW1lX3ByaXZhdGUuaCwgZGxscy9kbWltZS9zZWdtZW50LmMsCgkgIGRsbHMvZG1pbWUvdGVtcG90cmFjay5jOgoJUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CgktIEZpcnN0IGRyYWZ0cyBmb3IgSURpcmVjdE11c2ljU2VnbWVudDo6R2V0UGFyYW0gYW5kCgkgIElEaXJlY3RNdXNpY1RlbXBvVHJhY2s6OkdldFBhcmFtIChuZWVkIG1vZGlmIG9uIExvYWQpLgoJLSBSZXR1cm4gdmFsdWUgZml4ZXMgZm9yIEdldENsYXNzSUQgb2YgVGVtcG9UcmFjayBhbmQgU2VnbWVudC4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzIuaCwgZGxscy9jb21jdGwzMi9jb21tY3RybC5jOgoJRmlsaXAgTmF2YXJhIDx4bmF2YXJhQHZvbG55LmN6PgoJLSBMZXQgdGhlIHN1YmNsYXNzaW5nIHN0YWNrIGdyb3cgdGhlIG9wcG9zaXRlIHdheSB0byBtYWtlIHRoZSBjb2RlCgkgIG1vcmUgdHJhbnNwYXJlbnQuCgktIFJlbW92ZSBTdWJjbGFzc1duZFByb2MgYW5kIG1vdmUgaXRzIGxvZ2ljIHRvIERlZlN1YmNsYXNzUHJvYy4KCgkqIGRsbHMvYWR2YXBpMzIvY3J5cHQuYzogSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJLSBJZiBhIGNyeXB0byBwcm92aWRlciBkb2VzIG5vdCBoYXZlIGEgU2lnbmF0dXJlIGluIHRoZSByZWdpc3RyeSwKCSAgY2hlY2sgZm9yIHRoZSBwcmVzZW5jZSBvZiB0aGUgU2lnSW5GaWxlIHZhbHVlIGJlZm9yZSBmYWlsaW5nLgoJLSBHZXQgcmlkIG9mIGEgY291cGxlIHJlZHVuZGFudCBhc3NpZ25tZW50cy4KCjIwMDQtMDUtMTQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBERVZFTE9QRVJTLUhJTlRTLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sCgkgIGRsbHMvbnRkbGwvZmlsZS5jLCBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsCgkgIHNlcnZlci9NYWtlZmlsZS5pbiwgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3JlcXVlc3QuaCwKCSAgc2VydmVyL3NtYi5jLCBzZXJ2ZXIvdHJhY2UuYzoKCVJlbW92ZWQgdGhlIG5vIGxvbmdlciB1c2VkIFNNQiBmaWxlIEkvTyBzdXBwb3J0LCB3ZSBjYW4ndCBkbyByZWxpYWJsZQoJZmlsZSBJL08gaW4gdXNlciBzcGFjZSBhbnl3YXkuCgoJKiBkbGxzL250ZGxsL3BhdGguYywgZGxscy9udGRsbC90ZXN0cy9wYXRoLmM6CglCZXR0ZXIgZml4IGZvciByZW1vdmluZyB0cmFpbGluZyBzcGFjZXMgaW4gUnRsR2V0RnVsbFBhdGhOYW1lX1UuCglOZWVkIHRvIHJlbW92ZSB0cmFpbGluZyBkb3RzIHRvbyAocmVwb3J0ZWQgYnkgS2VuIEJlbGxlYXUpLgoKCSogZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL2tlcm5lbF9wcml2YXRlLmgsCgkgIGRsbHMva2VybmVsL3Byb2Nlc3MuYywgbWlzYy9yZWdpc3RyeS5jOgoJVXNlIGVudmlyb25tZW50IHZhcmlhYmxlcyBpbnN0ZWFkIG9mIGNvbmZpZyBmaWxlIGVudHJpZXMgdG8gc3BlY2lmeQoJcGF0aCwgcHJvZmlsZSwgdGVtcCwgd2luZG93cyBhbmQgc3lzdGVtIGRpcmVjdG9yaWVzLgoJQ29udmVydCBleGlzdGluZyBjb25maWcgZmlsZSBlbnRyaWVzIHRvIHJlZ2lzdHJ5IHZhbHVlcyB1bmRlcgoJSEtDVVxFbnZpcm9ubWVudC4KCgkqIHRvb2xzL3dpbmUuaW5mOiBBZGRlZCBFbnZpcm9ubWVudCBzZWN0aW9uLgoJRml4ZWQgcGF0aCBvZiBzaGVsbCBmb2xkZXJzIGtleSBpbiBIS0VZX1VTRVJTLgoKCSogZGxscy9hbXN0cmVhbS92ZXJzaW9uLnJjLCBkbGxzL2QzZDgvdmVyc2lvbi5yYywgZGxscy9kM2Q5L3ZlcnNpb24ucmMsCgkgIGRsbHMvZDNkaW0vdmVyc2lvbi5yYywgZGxscy9kZHJhdy92ZXJzaW9uLnJjLAoJICBkbGxzL2RldmVudW0vZGV2ZW51bS5yYywgZGxscy9kaW5wdXQvdmVyc2lvbi5yYywKCSAgZGxscy9kaW5wdXQ4L3ZlcnNpb24ucmMsIGRsbHMvZG1iYW5kL3ZlcnNpb24ucmMsCgkgIGRsbHMvZG1jb21wb3MvdmVyc2lvbi5yYywgZGxscy9kbWltZS92ZXJzaW9uLnJjLAoJICBkbGxzL2RtbG9hZGVyL3ZlcnNpb24ucmMsIGRsbHMvZG1zY3JpcHQvdmVyc2lvbi5yYywKCSAgZGxscy9kbXN0eWxlL3ZlcnNpb24ucmMsIGRsbHMvZG1zeW50aC92ZXJzaW9uLnJjLAoJICBkbGxzL2RtdXNpYy92ZXJzaW9uLnJjLCBkbGxzL2RtdXNpYzMyL3ZlcnNpb24ucmMsCgkgIGRsbHMvZHBsYXl4L3ZlcnNpb24ucmMsIGRsbHMvZHBuZXQvdmVyc2lvbi5yYywKCSAgZGxscy9kcG5ocGFzdC92ZXJzaW9uLnJjLCBkbGxzL2Rzb3VuZC92ZXJzaW9uLnJjLAoJICBkbGxzL2Rzd2F2ZS92ZXJzaW9uLnJjLCBkbGxzL2R4ZGlhZ24vdmVyc2lvbi5yYywgZGxscy9tc2Rtby9yc3JjLnJjLAoJICBkbGxzL3FjYXAvLmN2c2lnbm9yZSwgZGxscy9xY2FwL01ha2VmaWxlLmluLCBkbGxzL3FjYXAvdmVyc2lvbi5yYywKCSAgZGxscy9xdWFydHovdmVyc2lvbi5yYzoKCUl2YW4gTGVvIE11cnJheS1TbWl0aCA8cHVvdGlAaW53aW5kLml0PgoJVXBkYXRlZCB0aGUgdmVyc2lvbiBpbmZvIG9mIGFsbCBEaXJlY3RYIGRsbHMgdG8gdGhlIHZlcnNpb24gbnVtYmVycyBvZgoJRGlyZWN0WCA5LjBiIGZvciBXaW5kb3dzIDIwMDAvWFAuCgoJKiBkbGxzL2RtaW1lL2RtaW1lX3ByaXZhdGUuaCwgZGxscy9kbWltZS9zZWdtZW50LmMsCgkgIGRsbHMvZG1zdHlsZS9kbXN0eWxlX3ByaXZhdGUuaCwgZGxscy9kbXN0eWxlL3N0eWxlLmM6CglSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCS0gUGFyc2UgRE1TdHlsZSBtb3RpZnMgKGllIHBhdHRlcm5zKSBhbmQgYmFuZHMgKGZpbGwgbGlzdHMpLgoJLSBJbXBsZW1lbnQgIElEaXJlY3RNdXNpY1NlZ21lbnQ4OjpJbnNlcnRUcmFjayBhbmQKCSAgSURpcmVjdE11c2ljU2VnbWVudDg6OlJlbW92ZVRyYWNrIChub3cgRW51bVRyYWNrIEdldFBhcmFtLCBhbmQKCSAgR2V0VHJhY2sgc2hvdWxkIGJlIGVhc3kgdG8gZG8pLgoKCSogZG9jdW1lbnRhdGlvbi9mYXEuc2dtbDogVG9tIFdpY2tsaW5lIDx0d2lja2xpbmVAc2l0ZXN0YXIubmV0PgoJU29tZSB1cGRhdGVzIHRvIHRoZSBmYXEuCgoJKiBkbGxzL2tlcm5lbC9wcm9jZXNzLmM6CglTZXQgZW52aXJvbm1lbnQgdmFyaWFibGVzIGZyb20gdGhlIEhLQ1VcRW52aXJvbm1lbnQga2V5IHRvby4KCU1vdmVkIGN1cnJlbnQgZGlyZWN0b3J5IGluaXRpYWxpc2F0aW9uIHRvIHByb2Nlc3MuYy4KCU1ha2Ugc3VyZSB0byBhbHdheXMgcGFzcyB0aGUgY29ycmVjdCBjdXJyZW50IGRpcmVjdG9yeSBpbiB0aGUgcHJvY2VzcwoJcGFyYW1ldGVycyBmb3IgY2hpbGQgcHJvY2Vzc2VzLgoKCSogZGxscy9kbWJhbmQvTWFrZWZpbGUuaW4sIGRsbHMvZG1iYW5kL2JhbmQuYywgZGxscy9kbWJhbmQvYmFuZHRyYWNrLmMsCgkgIGRsbHMvZG1iYW5kL2RtYmFuZF9tYWluLmMsIGRsbHMvZG1iYW5kL2RtYmFuZF9wcml2YXRlLmgsCgkgIGRsbHMvZG1iYW5kL2RtdXRpbHMuYywgZGxscy9kbWJhbmQvZG11dGlscy5oLCBkbGxzL2RtaW1lL01ha2VmaWxlLmluLAoJICBkbGxzL2RtaW1lL2RtaW1lX21haW4uYywgZGxscy9kbWltZS9kbWltZV9wcml2YXRlLmgsCgkgIGRsbHMvZG1pbWUvZG11dGlscy5jLCBkbGxzL2RtaW1lL2RtdXRpbHMuaCwgZGxscy9kbWltZS9zZWdtZW50LmMsCgkgIGRsbHMvZG1pbWUvc2VndHJpZ2dlcnRyYWNrLmMsIGRsbHMvZG1zdHlsZS9NYWtlZmlsZS5pbiwKCSAgZGxscy9kbXN0eWxlL2Rtc3R5bGVfbWFpbi5jLCBkbGxzL2Rtc3R5bGUvZG1zdHlsZV9wcml2YXRlLmgsCgkgIGRsbHMvZG1zdHlsZS9kbXV0aWxzLmMsIGRsbHMvZG1zdHlsZS9kbXV0aWxzLmgsIGRsbHMvZG1zdHlsZS9zdHlsZS5jOgoJUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CgktIEFkZCB0aGUgc2FtZSBuZXcgZmlsZXMgKGRtdXRpbHMuYy9kbXV0aWxzLmgpIGludG8gZG1pbWUsZG1iYW5kIGFuZAoJICBkbXN0eWxlIGRpcmVjdG9yeSB0aGF0IHNoYXJlIHRoZSBkZWJ1ZyBhbmQgaGVscGVyIGZ1bmN0aW9ucyBmb3IgZG11c2ljCgkgIGRsbHMgKGFzIFJvaydzIGlkZWEgZm9yIGRtbG9hZGVyKS4KCS0gVXNlIG5ldyBoZWxwZXJzIGZ1bmN0aW9ucyB0byBsb2FkIFJlZmVyZW5jZXMgb24KCSAgSURpcmVjdE11c2ljU2VnVHJpZ2dlclRyYWNrIGxvYWRpbmcgKGN1cnJlbnRseSB0aGV5IGxlYWspLgoJLSBJRGlyZWN0TXVzaWNTdHlsZSAoYWxtb3N0IHBhcnRpYWwpIGxvYWRpbmcuCgktIE1pbm9yIGZpeGVzLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvcGF0aC5jOgoJRml4ZWQgc29tZSBvZiB0aGUgR2V0U2hvcnRQYXRoTmFtZSB0ZXN0cyB0byB1c2UgdGhlIHNob3J0IHZlcnNpb24gb2YKCXRoZSBjdXJyZW50IGRpcmVjdG9yeSB3aGVyZSBuZWVkZWQuCgoJKiBkbGxzL3dpbm1tL3Rlc3RzL3dhdmUuYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCVByaW50IGh1bWFuLXJlYWRhYmxlIGNhcGFiaWxpdGllcyBmbGFnLgoKCSogc2VydmVyL3JlZ2lzdHJ5LmM6CglNYWtlIHN1cmUgdG8gc2F2ZSB0aGUgcmVnaXN0cnkgZmlsZXMgZXZlbiBpZiB3ZSBmYWlsZWQgdG8gbG9hZCB0aGVtLgoKCSogZGxscy93aW5tbS93aW5lYXJ0cy9hdWRpby5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJU2FtcGxlIHJhdGUgc2FuaXR5IGNoZWNrLgoJRml4IFNNUFRFIHRpbWUuCgoJKiB0b29scy93aW5laW5zdGFsbCwgdG9vbHMvd2luZXByZWZpeGNyZWF0ZS5pbjoKCU1ha2Ugd2luZWluc3RhbGwgdXNlIHdpbmVwcmVmaXhjcmVhdGUgaW5zdGVhZCBvZiBkdXBsaWNhdGluZyB0aGUKCWZ1bmN0aW9uYWxpdHkuCgoyMDA0LTA1LTEzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9rZXJuZWwvY2hhbmdlLmMsIGRsbHMva2VybmVsL2ZpbGUuYywKCSAgZGxscy9rZXJuZWwva2VybmVsX3ByaXZhdGUuaCwgZGxscy9rZXJuZWwvbW9kdWxlLmMsCgkgIGRsbHMva2VybmVsL3BhdGguYywgZGxscy9rZXJuZWwvcHJvY2Vzcy5jLCBkbGxzL2tlcm5lbC92b2x1bWUuYzoKCUFkZGVkIHByb3BlciBzdXBwb3J0IGZvciBzd2l0Y2hpbmcgZmlsZSBBUElzIGJldHdlZW4gQU5TSSBhbmQgT0VNCgljb2RlcGFnZXMuIE9wdGltaXplZCBzb21lIG9mIHRoZSBBLT5XIGNvbnZlcnNpb25zIGJ5IHVzaW5nIHRoZQoJcGVyLXRocmVhZCBVbmljb2RlIHN0cmluZyBidWZmZXIuCgoJKiBkbGxzL3dpbm1tL3Rlc3RzL3dhdmUuYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCXdhdmVPdXRHZXREZXZDYXBzQSBjYW4gZmFpbCB3aXRoIE1NU1lTRVJSX0JBRERFVklDRUlEIG9yCglNTVNZU0VSUl9OT0RSSVZFUiB3aGVuIG5vIGRyaXZlcnMgcHJlc2VudC4KCUFkZCBiZXR0ZXIgZXJyb3IgbWVzc2FnZXMuCgoJKiBkbGxzL2RpbnB1dDgvdmVyc2lvbi5yYzogSXZhbiBMZW8gTXVycmF5LVNtaXRoIDxwdW90aUBpbndpbmQuaXQ+CglVcGRhdGUgdG8gdmVyc2lvbiA5LgoKCSogb2JqZWN0cy9lbmhtZXRhZmlsZS5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWNjZXB0IEVNUl9FWFRURVhUT1VUIHJlY29yZHMgd2l0aCBlbXJ0ZXh0Lm9mZkR4IHNldCB0byAwLgoKCSogREVWRUxPUEVSUy1ISU5UUzogVG9tIFdpY2tsaW5lIDx0d2lja2xpbmVAc2l0ZXN0YXIubmV0PgoJQWRkIG5ldyBkbGxzIGFuZCBmaXggYWxwaGFiZXRpY2FsIGxvY2F0aW9uIG9mIGEgY291cGxlIGRsbHMuCgoJKiBkbGxzL250ZGxsL3BhdGguYywgZGxscy9udGRsbC90ZXN0cy9wYXRoLmM6CglSZW1vdmUgdHJhaWxpbmcgc3BhY2VzIGZyb20gdGhlIGZpbGVuYW1lIGluIFJ0bEdldEZ1bGxQYXRoTmFtZV9VLgoKCSogZGxscy9kbWJhbmQvYmFuZC5jLCBkbGxzL2RtYmFuZC9iYW5kdHJhY2suYywKCSAgZGxscy9kbWJhbmQvZG1iYW5kX21haW4uYywgZGxscy9kbWJhbmQvZG1iYW5kX3ByaXZhdGUuaCwKCSAgZGxscy9kbWltZS9zZWdtZW50LmMsIGRsbHMvZG1pbWUvc2VndHJpZ2dlcnRyYWNrLmMsCgkgIGRsbHMvZG1zdHlsZS9jaG9yZHRyYWNrLmM6CglSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCS0gRmV3ZXIgRklYTUVzLgoJLSBCZXR0ZXIgdHJhY2VzLgoJLSBJRGlyZWN0TXVzaWNCYW5kIGxvYWRpbmcgZml4ZXM6CgkgIC0gbG9hZCBjb3JyZWN0bHkgaW5zdHJ1bWVudHMgKGFuZCBSZWZlcmVuY2VzCgkgIC0gbG9hZCBJRGlyZWN0TXVzaWNDb2xsZWN0aW9uIG9iamVjdCAodXNpbmcgRE1Mb2FkZXIpCgkgIC0gaW5zZXJ0IHRoZSB0d28gb24gdGhlIGxpc3QKCS0gSURpcmVjdE11c2ljQmFuZFRyYWNrIGxvYWRpbmcgZml4ZXMgKGZpbGwgT0JKRUNUREVTQyBhbmQgcGFyc2UgVU5GTwoJICBpbmZvcykuCgoJKiBkb2N1bWVudGF0aW9uL2ZhcS5zZ21sOiBUb20gV2lja2xpbmUgPHR3aWNrbGluZUBzaXRlc3Rhci5uZXQ+CglTb21lIHVwZGF0ZXMgdG8gdGhlIGZhcS4KCgkqIHByb2dyYW1zL3dpbmVjZmcvZHJpdmUuYzogQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQGFsdW0ud3BpLmVkdT4KCUZyZWUgdXAgdGhlIG9yaWdpbmFsIGJ1ZmZlciBwb2ludGVyIGluc3RlYWQgb2YgdGhlIG9uZSB3ZSBhZHZhbmNlZC4KCU9ubHkgY2FsbCBnZXREcml2ZSgpIG9uY2UgaW5zaWRlIG9mIGFkZERyaXZlKCkuCgoJKiBkbGxzL3dpbmluZXQvZnRwLmMsIGRsbHMvd2luaW5ldC9odHRwLmMsIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jLAoJICBkbGxzL3dpbmluZXQvaW50ZXJuZXQuaDoKCUtldmluIEtvbHR6YXUgPGtldmluQHBsb3Aub3JnPgoJUHJldmVudCBtZW1vcnkgbGVhayBhbmQgc3VwZXJmbHVvdXMgc3RhdHVzIG5vdGlmaWNhdGlvbnMuCgoJKiBkbGxzL21zdmNydC9maWxlLmM6IEZpeGVkIGNvcHkvcGFzdGUgYnVnIGluIHByZXZpb3VzIGNoYW5nZS4KCgkqIGRsbHMvZG1sb2FkZXIvTWFrZWZpbGUuaW4sIGRsbHMvZG1sb2FkZXIvY2xhc3NmYWN0b3J5LmMsCgkgIGRsbHMvZG1sb2FkZXIvY29udGFpbmVyLmMsIGRsbHMvZG1sb2FkZXIvZGVidWcuYywKCSAgZGxscy9kbWxvYWRlci9kZWJ1Zy5oLCBkbGxzL2RtbG9hZGVyL2RtbG9hZGVyX21haW4uYywKCSAgZGxscy9kbWxvYWRlci9kbWxvYWRlcl9wcml2YXRlLmgsIGRsbHMvZG1sb2FkZXIvbG9hZGVyLmMsCgkgIGRsbHMvZG1sb2FkZXIvbG9hZGVyc3RyZWFtLmM6CglSb2sgTWFuZGVsamMgPHJvay5tYW5kZWxqY0BnaW1iLm9yZz4KCWRtbG9hZGVyOiBjb21wbGV0ZSByZXdyaXRlIGFuZCBmdWxsIGltcGxlbWVudGF0aW9uLgoKMjAwNC0wNS0xMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvZG1iYW5kL2JhbmQuYzogUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CglJRGlyZWN0TXVzaWNCYW5kIGxvYWRpbmcuCgoJKiBkbGxzL2FkdmFwaTMyL2NyeXB0LmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVBhc3MgY3J5cHQgcHJvdmlkZXIgYW5kIHR5cGUgdG8gQ1BBY3F1aXJlQ29udGV4dC4KCgkqIGRsbHMvbXN2Y3J0L21hdGguYywgZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWMsCgkgIGRsbHMvbXN2Y3J0MjAvbXN2Y3J0MjAuc3BlYywgZGxscy9tc3ZjcnQ0MC9tc3ZjcnQ0MC5zcGVjLAoJICBkbGxzL21zdmNydGQvbXN2Y3J0ZC5zcGVjOgoJRml4ZWQgdGhlIHByb3RvdHlwZXMgb2YgdGhlIF9hZGpfZmRpdl8qIGZ1bmN0aW9ucy4KCgkqIGRsbHMvZG1iYW5kL2JhbmR0cmFjay5jLCBkbGxzL2RtYmFuZC9kbWJhbmRfcHJpdmF0ZS5oLAoJICBkbGxzL2RtaW1lL3NlZ21lbnQuYywgZGxscy9kbWltZS9zZWd0cmlnZ2VydHJhY2suYywKCSAgZGxscy9kbWltZS90ZW1wb3RyYWNrLmMsIGRsbHMvZG1zdHlsZS9jaG9yZHRyYWNrLmMsCgkgIGRsbHMvZG1zdHlsZS9zdHlsZXRyYWNrLmM6CglSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCS0gU2VnbWVudCBsb2FkaW5nIGZpeCAoY29ycmVjdCBGT1VSQ0NfUklGRiB0cmFja3MgaGFuZGxpbmcpLgoJLSBJRGlyZWN0TXVzaWNTdHlsZVRyYWNrIGxvYWRpbmcgKG5lZWQgRE0gUmVmZXJlbmNlcykuCgktIElEaXJlY3RNdXNpY0JhbmRUcmFjayBsb2FkaW5nIChuZWVkIElEaXJlY3RNdXNpY0JhbmQgbG9hZGluZykuCgoJKiBkbGxzL2RpbnB1dDgvLmN2c2lnbm9yZSwgZGxscy9kaW5wdXQ4L01ha2VmaWxlLmluLAoJICBkbGxzL2RpbnB1dDgvdmVyc2lvbi5yYzoKCVRvbSBXaWNrbGluZSA8dHdpY2tsaW5lQHNpdGVzdGFyLm5ldD4KCUFkZGVkIHZlcnNpb24gaW5mby4KCgkqIGRsbHMvd2luZXBzL2VzY2FwZS5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJVGhlIFBvc3RTY3JpcHQgY2xpcCBvcGVyYXRvciBkb2Vzbid0IGNsZWFyIHRoZSBjdXJyZW50IHBhdGgsIHNvIGFmdGVyCgl0aGUgQ0xJUF9UT19QQVRIIGVzY2FwZSB3ZSB3YW50IHRvIGNsZWFyIGl0IG91cnNlbHZlcy4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJTWF4aW1lIEJlbGxlbmfpIDxtYXhpbWUuYmVsbGVuZ2VAbGFwb3N0ZS5uZXQ+CglBZGQgRFRfRU5EX0VMTElQU0lTIGFzIGRlZmF1dCBzdHlsZSBmb3IgdGV4dC4KCgkqIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jOiBLZXZpbiBLb2x0emF1IDxrZXZpbkBwbG9wLm9yZz4KCVByb3Blcmx5IHJldHJpZXZlIGFuZCByZWxlYXNlIGhhbmRsZXMuCgoJKiBkbGxzL21zdmNydC9kYXRhLmMsIGRsbHMvbXN2Y3J0L2ZpbGUuYywgaW5jbHVkZS9tc3ZjcnQvc3RkaW8uaDoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJLSByZXdyb3RlIHRoZSBmaWxlIGNvZGUgc28gdGhhdCBzdHJlYW1zIG1hbmFnZSBsb3cgbGV2ZWwgZmlsZSBkZXNjCgkgICh0aGUgY29kZSB3YXMgd3JpdHRlbiB0aGUgb3RoZXIgd2F5IGFyb3VuZCkKCS0gcmV3b3JrZWQgdGhlIGZsYWcgaGFuZGxpbmcgY29kZSAobm93IHRoZSBzdHJlYW0uX2ZsYWcgaXMgY2xvc2VyIHRvCgkgIHdoYXQgTVMgZG9lcykKCS0gc2ltcGxpZmllZCB0ZW1wIGZpbGVzIGhhbmRsaW5nIGJ5IHVzaW5nIEZJTEVfRkxBR19ERUxFVEVfT05fQ0xPU0UgaW4KCSAgQ3JlYXRlRmlsZQoJLSBmaXhlZCBhIGNvdXBsZSBvZiBidWdzCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jOgoJV29sZmdhbmcgU2Nod290emVyIDx3b2xmZ2FuZy5zY2h3b3R6ZXJAZ214Lm5ldD4KCVN1cHBvcnQgbHBzdHJDdXN0b21GaWx0ZXIgYW5kIHJldHVybiBuRmlsdGVySW5kZXggaW4gZmlsZSBkaWFsb2cuCgoJKiB0b29scy93aW5lLmluZjogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUFkZHMgbXNnNzExIHdpbmVtcDMgdG8gbGlzdCBvZiBjb2RlY3MuCgoyMDA0LTA1LTExICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9kbWltZS9kbWltZV9tYWluLmMsIGRsbHMvZG1pbWUvZG1pbWVfcHJpdmF0ZS5oLAoJICBkbGxzL2RtaW1lL3BlcmZvcm1hbmNlLmMsIGRsbHMvZG1pbWUvc2VnbWVudC5jLAoJICBkbGxzL2RtaW1lL3NlZ3RyaWdnZXJ0cmFjay5jLCBkbGxzL2Rtc2NyaXB0L3NjcmlwdC5jLAoJICBkbGxzL2Rtc3R5bGUvY2hvcmR0cmFjay5jLCBkbGxzL2Rtc3R5bGUvZG1zdHlsZV9wcml2YXRlLmgsCgkgIGluY2x1ZGUvZG11c2ljZi5oOgoJUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CgktIFR5cG8gZml4IGluIGRtdXNpY2YuaC4KCS0gSURpcmVjdE11c2ljQ2hvcmRUcmFjayBsb2FkaW5nLgoJLSBNYW55IElzRGlydHkgYW5kIEdldENsYXNzSUQgc3R1YnMuCgoJKiBkbGxzL2ltYWdlaGxwL2ludGVncml0eS5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgSW1hZ2VFbnVtZXJhdGVDZXJ0aWZpY2F0ZXMgYW5kIEltYWdlR2V0Q2VydGlmaWNhdGVIZWFkZXIuCgoJKiBkbGxzL3gxMWRydi9rZXlib2FyZC5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRml4IENyb2F0aWFuIGtleWJvYXJkIGxheW91dCB0byBiZXR0ZXIgbWF0Y2ggdGhlIFhGcmVlODYgb25lLgoKCSogZGxscy91c2VyL3Rlc3RzL3dpbi5jLCB3aW5kb3dzL3dpbi5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCS0gQWRkIGEgdGVzdCBmb3IgR2V0V2luZG93SW5mbywgaXQgc2hvdWxkIG5vdCBjaGVjayBjYlNpemUgbWVtYmVyIG9mCgkgIHRoZSBXSU5ET1dJTkZPIHN0cnVjdHVyZS4KCS0gQWRkIHRlc3RzIGZvciB3aW5kb3cgc3RhdGUgYXQgdGhlIHRpbWUgdGhlIHN5c3RlbSBjYWxscwoJICBIQ0JUX0NSRUFURVdORCAoZmFpbGluZyB1bmRlciBXaW5lIGF0IHRoZSBtb21lbnQpLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBVbHJpY2ggQ3pla2FsbGEgPHVscmljaEBjb2Rld2VhdmVycy5jb20+CglIYW5kbGUgY2FzZSB3aGVyZSBpdGVyYXRvciByYW5nZSBjb250YWlucyAwIGVsZW1lbnRzLgoKCSogZGxscy9udGRsbC9zZXJ2ZXIuYywgbGlicy93aW5lL2NvbmZpZy5jLCB0b29scy93aW5lcHJlZml4Y3JlYXRlLmluOgoJSW5pdGlhbCBzdXBwb3J0IGZvciBhdXRvbWF0aWNhbGx5IGNyZWF0aW5nIHRoZSB+Ly53aW5lIGRpcmVjdG9yeSBvbgoJc3RhcnR1cC4KCgkqIHdpbmRvd3Mvc3lzY29sb3IuYywgd2luZG93cy9zeXNtZXRyaWNzLmM6CglKYWtlIEhhbWJ5IDxqaGFtYnlAYW5vYmplY3QuY29tPgoJU2V2ZXJhbCBvZiB0aGUgcmVnaXN0cnkga2V5cyBmb3Igc3lzdGVtIGNvbG9ycyBhbmQgc3lzdGVtIG1ldHJpY3Mgd2VyZQoJaW5jb3JyZWN0LgoKCSogZGxscy93aW5tbS93aW5lYWxzYS9hdWRpby5jLCBkbGxzL3dpbm1tL3dpbmVhcnRzL2F1ZGlvLmMsCgkgIGRsbHMvd2lubW0vd2luZWphY2svYXVkaW8uYywgZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQWRkIGFuIGludGVyZmFjZSBuYW1lIHRvIHdpbmVvc3MsIHdpbmVhbHNhLCB3aW5lYXJ0cyBhbmQgd2luZWphY2suCglBZGQgc3VwcG9ydCBmb3Igd2F2ZSBpbnRlcmZhY2UgbWVzc2FnZSB3aGVyZSBtaXNzaW5nLgoKCSogZGxscy9kbWltZS9hdWRpb3BhdGguYywgZGxscy9kbWltZS9kbWltZV9tYWluLmMsCgkgIGRsbHMvZG1pbWUvZG1pbWVfcHJpdmF0ZS5oLCBkbGxzL2RtaW1lL3NlZ21lbnQuYywKCSAgZGxscy9kbWltZS9zZWd0cmlnZ2VydHJhY2suYywgZGxscy9kbWltZS90ZW1wb3RyYWNrLmM6CglSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCS0gTWFueSBJRGlyZWN0TXVzaWNTZWdtZW50IGZpeGVzIChsb2FkaW5nKS4KCS0gQXVkaW9QYXRoIGNyYXNoIGZpeCAoZG9uJ3QgdXNlIERTb3VuZCBBUElzIGlmIGJ1ZmZlciBpcyBudWxsKS4KCS0gTW92ZSBnZW5lcmljIGZ1bmN0aW9ucyB0byBkbWltZV9tYWluLmMgZm9yIGZ1dHVyZSByZXVzZSAoZnJvbQoJICBzZWdtZW50LmMpLgoJLSBJRGlyZWN0TXVzaWNUZW1wb1RyYWNrIGxvYWRpbmcgKG1hbnkgdGVtcG8gY2FzZSBtdXN0IGJlIGhhbmRsZWQpLgoJLSBJRGlyZWN0TXVzaWNTZWdUcmlnZ2VyVHJhY2sgbG9hZGluZyBpbXBsZW1lbnRhdGlvbiAobm93CgkgIERNUkYvRGlyZWN0TXVzaWMgUmVmZXJlbmNlcyBsb2FkaW5nIHNob3VsZCBiZSBkb25lKS4KCgkqIGRvY3VtZW50YXRpb24vdGhyZWFkaW5nLnNnbWwsIGRvY3VtZW50YXRpb24vd2luZS1kZXZlbC5zZ21sOgoJTWlrZSBIZWFybiA8bWhAY29kZXdlYXZlcnMuY29tPgoJQWRkIHNvbWUgZG9jdW1lbnRhdGlvbiBvbiBob3cgdGhyZWFkaW5nIGlzIGltcGxlbWVudGVkIGluIFdpbmUuCglDb3ZlcnMgYmFzaWMgV2luMzIgdGhyZWFkaW5nIHByaW1pdGl2ZXMsIHN5c2xldmVscywgdGhlIFRFQiBhbmQKCXB0aHJlYWRzIHZzIGt0aHJlYWRzLgoKMjAwNC0wNS0xMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvYWR2YXBpMzIvYWR2YXBpLmM6CglGaXhlZCBidWZmZXIgc2l6ZSBoYW5kbGluZyBpbiBHZXRVc2VyTmFtZUEgKHJlcG9ydGVkIGJ5IEhhbm51CglWYWx0b25lbikuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMyLmgsIGRsbHMvY29tY3RsMzIvY29tY3RsX0NuLnJjLAoJICBkbGxzL2NvbWN0bDMyL2NvbWN0bF9EZS5yYywgZGxscy9jb21jdGwzMi9jb21jdGxfRW4ucmMsCgkgIGRsbHMvY29tY3RsMzIvY29tY3RsX0VzLnJjLCBkbGxzL2NvbWN0bDMyL2NvbWN0bF9Gci5yYywKCSAgZGxscy9jb21jdGwzMi9jb21jdGxfSXQucmMsIGRsbHMvY29tY3RsMzIvY29tY3RsX0phLnJjLAoJICBkbGxzL2NvbWN0bDMyL2NvbWN0bF9Lby5yYywgZGxscy9jb21jdGwzMi9jb21jdGxfTmwucmMsCgkgIGRsbHMvY29tY3RsMzIvY29tY3RsX1BsLnJjLCBkbGxzL2NvbWN0bDMyL2NvbWN0bF9QdC5yYywKCSAgZGxscy9jb21jdGwzMi9jb21jdGxfUnUucmMsIGRsbHMvY29tY3RsMzIvY29tY3RsX1NpLnJjLAoJICBkbGxzL2NvbWN0bDMyL2NvbWN0bF9UaC5yYywgZGxscy9jb21jdGwzMi9jb21jdGxfVWsucmMsCgkgIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmM6CglNYXhpbWUgQmVsbGVuZ+kgPG1heGltZS5iZWxsZW5nZUBsYXBvc3RlLm5ldD4KCUltcGxlbWVudGVkIFBTSF9XSVpBUkQ5N19PTEQgYW5kIFBTSF9XSVpBUkQ5N19ORVcgcHJvcGVydHkgc2hlZXQKCXN0eWxlcy4KCgkqIGRsbHMvZDNkOC9kZXZpY2UuYzogQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJRml4ZWQgVyBidWZmZXIgaGFuZGxpbmcuCgoJKiB3aW5kb3dzL2NsaXBib2FyZC5jOiBVbHJpY2ggQ3pla2FsbGEgPHVscmljaEBjb2Rld2VhdmVycy5jb20+CglGaXggY2xpcGJvYXJkIHJlZ3Jlc3Npb24uCgoJKiBkbGxzL3VzZXIvdGVzdHMvbXNnLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGQgbW9yZSBTaG93V2luZG93L1NldFdpbmRvd1BvcyB0ZXN0cy4KCgkqIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jOiBLZXZpbiBLb2x0emF1IDxrZXZpbkBwbG9wLm9yZz4KCUNsZWFudXAgY29udmVyc2lvbiBmcm9tIEEtPlcuCgoJKiBpbmNsdWRlL3RocmVhZC5oOiBFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCUJldHRlciBoYXZlIGludGVybmFsICYgZXh0ZXJuYWwgVEVCIGRlZmluaXRpb25zIGhhdmUgdGhlIHNhbWUgc2l6ZS4KCgkqIGluY2x1ZGUvd2ludGVybmwuaDogRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglGaXhlZCBhIG1pc3NpbmcgdHlwZWRlZi4KCgkqIGRsbHMvZDNkOC9kM2Q4X21haW4uYywgZGxscy9kM2Q4L2QzZDhfcHJpdmF0ZS5oLAoJICBkbGxzL2QzZDgvZDNkY29yZV9nbC5oLCBkbGxzL2QzZDgvZGV2aWNlLmMsIGRsbHMvZDNkOC9kaXJlY3R4LmMsCgkgIGRsbHMvZDNkOC9kcmF3cHJpbS5jLCBkbGxzL2QzZDgvc2hhZGVyLmM6CglDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglJbXBsZW1lbnRlZCBwaXhlbCBzaGFkZXJzIHVzaW5nIEFSQl9mcmFnbWVudF9wcm9ncmFtIGV4dGVuc2lvbi4KCgkqIGRsbHMvbXNhY20vZm9ybWF0LmMsIGRsbHMvbXNhY20vcGNtY29udmVydGVyLmMsCgkgIGRsbHMvbXNhY20vdGVzdHMvbXNhY20uYzoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglNb3JlIHBhcmFtZXRlciBjaGVja2luZyBmaXhlcyB3aXRoIHRlc3RzLgoKCSogZGxscy9vbGVhdXQzMi9vbGVwaWN0dXJlLmM6CglNYXhpbWUgQmVsbGVuZ+kgPG1heGltZS5iZWxsZW5nZUBsYXBvc3RlLm5ldD4KCUNvcnJlY3RseSBjcmVhdGUgdGhlIGJ5dGUgYXJyYXkgb2YgZ2lmIGltYWdlcyB0byBtYXRjaCB3aGF0CglDcmVhdGVESUJpdG1hcCBleHBlY3RzLgoKCSogZGxscy9kbWltZS9hdWRpb3BhdGguYywgZGxscy9kbWltZS9kbWltZV9tYWluLmMsCgkgIGRsbHMvZG1pbWUvZG1pbWVfcHJpdmF0ZS5oLCBkbGxzL2RtaW1lL3BlcmZvcm1hbmNlLmMsCgkgIGRsbHMvZG1pbWUvc2VnbWVudC5jLCBkbGxzL2Rtc2NyaXB0L2Rtc2NyaXB0X3ByaXZhdGUuaCwKCSAgZGxscy9kbXNjcmlwdC9zY3JpcHQuYzoKCVJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJLSBSZWxlYXNlIERTQnVmZmVyIG9uIEF1ZGlvUGF0aCBkZXN0cnVjdGlvbi4KCS0gU2VtaSBzdHViIGZvciBBdWRpb1BhdGggQWN0aXZhdGUuCgktIElEaXJlY3RNdXNpY1BlcmZvcm1hbmNlODo6Q3JlYXRlQXVkaW9QYXRoIHN0dWIuCgktIE1vc3Qgb2YgdGhlIElEaXJlY3RNdXNpY1NlZ21lbnQ4X1tTZXQsR2V0XSogKHVzaW5nIGhlYWRlcikuCgktIExvYWQgb2YgU3RyZWFtZXIgSURpcmVjdE11c2ljU2VnbWVudDggaGVhZGVyLgoKCSogaW5jbHVkZS9vYmppZGwuaCwgaW5jbHVkZS9vYmppZGwuaWRsOgoJSmFrZSBIYW1ieSA8amhhbWJ5QGFub2JqZWN0LmNvbT4KCUlNZXNzYWdlRmlsdGVyOjpIYW5kbGVJbkNvbWluZ0NhbGwoKSBzaG91bGQgYmUgSGFuZGxlSW5jb21pbmdDYWxsKCkuCgoJKiBkbGxzL3RhcGkzMi9saW5lLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCUltcGxlbWVudGF0aW9uIG9mIGxpbmVHZXRUcmFuc2xhdGVDYXBzLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGxfVWsucmMsIGRsbHMvY29tbWRsZy9jZGxnX1VrLnJjLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9Vay5yYywgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfVWsucmM6CglJbHlhIEtvcm5peWtvIDxrX2lseWFAdWtyLm5ldD4KCUVuY29kaW5nIGZpeGVzIGluIFVrcmFpbmlhbiB0cmFuc2xhdGlvbi4KCjIwMDQtMDUtMDcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkb2N1bWVudGF0aW9uL3NhbXBsZXMvY29uZmlnLCBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsCgkgIG1pc2MvcmVnaXN0cnkuYywgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3JlZ2lzdHJ5LmMsCgkgIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci90cmFjZS5jOgoJTW92ZWQgbG9hZGluZyBvZiB0aGUgaG9tZSByZWdpc3RyeSBmaWxlcyB0byB0aGUgc2VydmVyLCB0aGVyZSdzIG5vCglyZWFsIG5lZWQgdG8gbWFrZSB0aGVzZSBjb25maWd1cmFibGUuCgoJKiBkbGxzL2FkdmFwaTMyL2FkdmFwaS5jLCBkbGxzL250ZGxsL3JlZy5jLCBkbGxzL250ZGxsL3NlYy5jOgoJVXNlIHRoZSBVbml4IGNvZGVwYWdlIHRvIGNvbnZlcnQgdGhlIHVzZXIgbmFtZSB0byBVbmljb2RlLgoKCSogZGxscy9tcHIvd25ldC5jOiBLcmlzaG5hIE11cnRoeSA8S3Jpc2huYS5NdXJ0aHlAZ3VwdGF3b3JsZHdpZGUuY29tPgoJV05ldEdldENvbm5lY3Rpb24oKTogdXNlIFF1ZXJ5RG9zRGV2aWNlIHRvIHJldHVybiBhIGZha2UgcmVtb3RlIG5hbWUKCWluc3RlYWQgb2YgdGhlIGRyaXZlIGxhYmVsLgoKCSogZGxscy91cmxtb24vdW1vbi5jLCBpbmNsdWRlL3VybG1vbi5oLCBpbmNsdWRlL3VybG1vbi5pZGw6CglLZXZpbiBLb2x0emF1IDxrZXZpbkBwbG9wLm9yZz4KCUltcGxlbWVudGVkIElzQXN5bmNNb25pa2VyLgoKCSogZGxscy91c2VyL3Rlc3RzL3dpbi5jLCBkbGxzL3gxMWRydi93aW5kb3cuYywgd2luZG93cy93aW5wb3MuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglNYWtlIFdNX0dFVE1JTk1BWElORk8gZGVmYXVsdCBiZWhhdmlvdXIgbW9yZSBsaWtlIHRoZSBXaW5kb3dzIG9uZS4KCgkqIGRsbHMvc2V0dXBhcGkvc2V0dXBhcGkuc3BlYywgZGxscy9zZXR1cGFwaS9zdHVicy5jOgoJTWF0dGhldyBEYXZpc29uIDxtamQ3N0BjYW0uYWMudWs+CglVcGRhdGUgc3BlYyBmaWxlLgoKCSogY29udHJvbHMvZWRpdC5jOiBLcmlzaG5hIE11cnRoeSA8S3Jpc2huYS5NdXJ0aHlAZ3VwdGF3b3JsZHdpZGUuY29tPgoJRU1fVU5ETyBzaG91bGQgYWx3YXlzIHJldHVybiBUUlVFIGZvciBzaW5nbGUgbGluZSBlZGl0LgoKMjAwNC0wNS0wNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIFJFQURNRSwgZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL3Byb2Nlc3MuYywKCSAgZG9jdW1lbnRhdGlvbi9SRUFETUUuZGUsIGRvY3VtZW50YXRpb24vUkVBRE1FLmZyLAoJICBkb2N1bWVudGF0aW9uL1JFQURNRS5pdCwgZG9jdW1lbnRhdGlvbi9SRUFETUUucHRfYnIsCgkgIGRvY3VtZW50YXRpb24vcnVubmluZy5zZ21sLCBkb2N1bWVudGF0aW9uL3dpbmUuY29uZi5tYW4sCgkgIGRvY3VtZW50YXRpb24vd2luZS5tYW4uaW4sIGluY2x1ZGUvb3B0aW9ucy5oLCBtaXNjL29wdGlvbnMuYywKCSAgdG9vbHMvd2luZWdjYy93aW5lZ2NjLmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJUmVtb3ZlIHRoZSBsYXN0IHJlbWFpbmluZyB3aW5lIG9wdGlvbnMgd2hlbiBydW5uaW5nIHByb2dyYW1zLgoJS2VlcCBzdXBwb3J0IGZvciAtLWhlbHAsIGFuZCAtLXZlcnNpb24gd2hlbiB0aGV5IGFyZSB0aGUgb25seSBvcHRpb25zCglvbiB0aGUgY29tbWFuZCBsaW5lLgoKCSogcHJvZ3JhbXMvd2luZWNmZy9kcml2ZS5jOgoJRml4ZWQgY3Jhc2ggd2hlbiBzZWxlY3RpbmcgdGhlIGRyaXZlIGxldHRlciBjb21ibyBib3guCgoJKiBzZXJ2ZXIvcmVnaXN0cnkuYzoKCVJlbW92ZWQgaGFuZGxpbmcgb2Ygc3BlY2lhbCByb290IGtleXMsIHRoaXMgaXMgZG9uZSBieSB0aGUgY2xpZW50IG5vdy4KCgkqIGRsbHMvdXNlci9tZXNzYWdlLmM6IEFuZHJleSBQYW5vdiA8cGF2QG1ldGliLnJ1PgoJSW4gZ2V0X2J1ZmZlcl9zcGFjZSgpIGZ1bmN0aW9uLCBIZWFwUmVBbGxvYygpIHdpbGwgbm90IGFsbG9jYXRlIG1lbW9yeQoJaWYgcGFzc2VkICpidWZmZXIgdmFsdWUgaXMgTlVMTC4KCgkqIGRsbHMveDExZHJ2L2NsaXBib2FyZC5jLCBkbGxzL3gxMWRydi94MTFkcnYuaCwgaW5jbHVkZS91c2VyLmgsCgkgIHdpbmRvd3MvY2xpcGJvYXJkLmM6CglVbHJpY2ggQ3pla2FsbGEgPHVscmljaEBjb2Rld2VhdmVycy5jb20+CglBbGxvdyBhcHBsaWNhdGlvbnMsIHVuZGVyIGNlcnRhaW4gY29uZGl0aW9ucywgdG8gc2V0IGRhdGEgaW50byB0aGUKCWNsaXBib2FyZCBldmVuIGlmIHRoZXkgYXJlIG5vdCB0aGUgY2xpcGJvYXJkIG93bmVycy4KCgkqIGRsbHMvaXBobHBhcGkvdGVzdHMvaXBobHBhcGkuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglJdCdzIE9LIHRvIGhhdmUgZHdOdW1FbnRyaWVzID09IDAgaWYgdGhlcmUgaXMgbm8gbmV0d29yayBjb25uZWN0aW9uLgoKCSogZGxscy9kbWltZS9kbWltZV9wcml2YXRlLmgsIGRsbHMvZG1pbWUvcGVyZm9ybWFuY2UuYzoKCVJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJLSBQTXNnIHByb2Nlc3NpbmcgdGhyZWFkIChjdXJyZW50bHkgb25seSBOb3RpZmljYXRpb25zIGhhbmRsaW5nKQoJLSBhIGNoYWluZWQgbGlzdCBidWcKCS0gdGhyZWFkLXNhZmUgbGlzdHMKCS0gcmVhbCBjbG9zZSBvbiBDbG9zZURvd24KCjIwMDQtMDUtMDUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBBTk5PVU5DRSwgQ2hhbmdlTG9nLCBWRVJTSU9OLCBjb25maWd1cmU6IFJlbGVhc2UgMjAwNDA1MDUuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjIwMDQtMDUtMDUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkb2N1bWVudGF0aW9uL1JFQURNRS5kZSwgZG9jdW1lbnRhdGlvbi9SRUFETUUuZnIsCgkgIGRvY3VtZW50YXRpb24vUkVBRE1FLml0LCBkb2N1bWVudGF0aW9uL1JFQURNRS5wdF9icjoKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCUtlZXAgdGhlIHRyYW5zbGF0ZWQgUkVBRE1FcyBpbiBzeW5jIHdpdGggdGhlIEVuZ2xpc2ggb25lLgoKCSogZGxscy9xdWFydHovTWFrZWZpbGUuaW4sIGRsbHMvcXVhcnR6L21haW4uYywKCSAgZGxscy9xdWFydHovcXVhcnR6X3ByaXZhdGUuaCwgZGxscy9xdWFydHovcmVnc3ZyLmMsCgkgIGRsbHMvcXVhcnR6L3N5c3RlbWNsb2NrLmM6CglSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCUltcGxlbWVudGVkIFN5c3RlbUNsb2NrIChJUmVmZXJlbmNlQ2xvY2sgYnkgZHNob3cpLgoKCSogY29udHJvbHMvc2Nyb2xsLmM6CglSZW1vdmUgYml0bWFwcyB0aGF0IHdlcmUgb25seSB1c2VkIGZvciB0aGUgMy4xIGxvb2suCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jOiBXb2xmZ2FuZyBTY2h3b3R6ZXIgPHdvc2Nod290QGdteC5uZXQ+CglVcGRhdGUgT0ZOX1JFQURPTkxZIGZsYWcgd2hlbiBjbG9zaW5nIGZpbGUgZGlhbG9nLgoKCSogdG9vbHMvd2luZXByZWZpeGNyZWF0ZS5pbjoKCUFkZGVkIG9wdGlvbnMgdG8gdXBkYXRlIGFuIGV4aXN0aW5nIFdJTkVQUkVGSVggZGlyZWN0b3J5IGFuZCB0byBydW4KCWZyb20gaW5zaWRlIGEgV2luZSBzb3VyY2UgdHJlZS4KCgkqIGRsbHMva2VybmVsL3Byb2Nlc3MuYzoKCVNldCBhZGRpdGlvbmFsIGVudmlyb25tZW50IHZhcmlhYmxlcyBhdCBzdGFydHVwIGZyb20KCUhLTE1cU3lzdGVtXEN1cnJlbnRDb250cm9sU2V0XENvbnRyb2xcU2Vzc2lvbiBNYW5hZ2VyXEVudmlyb25tZW50LgoKCSogZGxscy93aW5tbS93aW5lYWxzYS9hdWRpby5jOgoJSmFtZXMgQ291cnRpZXItRHV0dG9uIDxKYW1lc0BzdXBlcmJ1Zy5kZW1vbi5jby51az4KCVVwZGF0ZWQgdG8gdGhlIG5ldyBhbHNhIGFwaS4KCgkqIGRsbHMvdXNlci90ZXN0cy9tc2cuYzoKCUEgY291cGxlIG9mIGNoYW5nZXMgdG8gYXZvaWQgc29tZSBmYWlsdXJlcyBvbiBYUC4KCgkqIGRsbHMvc2V0dXBhcGkvZGlyaWQuYzogQWRkZWQgc3VwcG9ydCBmb3IgRElSSURfVVNFUlBST0ZJTEUuCgoJKiBjb250cm9scy9pY29udGl0bGUuYzogU3RldmVuIEVkd2FyZHMgPHN0ZXZlbl9lZDQxNTNAeWFob28uY29tPgoJUmVtb3ZlIHVudXNlZCBoZWFkZXIuCgoJKiBwcm9ncmFtcy93aW5ldGVzdC9tYWluLmM6IEZlcmVuYyBXYWduZXIgPHdmZXJpQGFmYXZhbnQuZWx0ZS5odT4KCVRoZSBtc2FjbSBkaXJlY3RvcnkgaXMgc3BlY2lhbC4KCgkqIGRsbHMvb2xlYXV0MzIvdGVzdHMvdmFydHlwZS5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCVRyYWNlIHRoZSBzeXN0ZW0gYW5kIHVzZXIgbG9jYWxlcyB1cG9uIHN0YXJ0dXAuCglQcmludCB0aGUgcmV0dXJuZWQgc3RyaW5nIGlmIFZhckRhdGVDaGFuZ2VUeXBlRXggZmFpbHMuCgoJKiBkbGxzL2RtaW1lL2RtaW1lX3ByaXZhdGUuaCwgZGxscy9kbWltZS9wZXJmb3JtYW5jZS5jOgoJUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CgktIGZpeCBjUmVmIExlYWsgKGluaXQgdG8gMSwgc2hvdWxkIGJlIDApIG9mIElETVBlcmZvcm1hbmNlCgktIFNlbmRQTXNnIGltcGxlbWVudGF0aW9uCgktIGJlZ2luIG9mIFBlcmZvcm1hbmNlIFByb2Nlc3NpbmcgcXVldWVzIGltcGxlbWVudGF0aW9uCgoJKiBkbGxzL250ZGxsL2RlYnVndG9vbHMuYywgZGxscy9udGRsbC9sb2FkZXIuYzoKCUluaXRpYWxpemUgbnRkbGwgZGVidWdnaW5nIGVhcmxpZXIgb24gc28gdGhhdCB3ZSBjYW4gdHJhY2UgdGhlIHNlcnZlcgoJc3RhcnR1cCB0b28uCgoJKiBkbGxzL2tlcm5lbC9jb25zb2xlLmMsIGluY2x1ZGUvd2luY29uLmg6CglSZXBsYWNlZCBMUElOUFVUX1JFQ09SRCBieSBQSU5QVVRfUkVDT1JELgoKCSogREVWRUxPUEVSUy1ISU5UUywgUkVBRE1FLCBkb2N1bWVudGF0aW9uL1BBQ0tBR0lORzoKCVN0ZXZlbiBFZHdhcmRzIDxzdGV2ZW5fZWQ0MTUzQHlhaG9vLmNvbT4KCU1pbm9yIGRvY3VtZW50YXRpb24gdXBkYXRlcy4KCgkqIGRsbHMvbnRkbGwvZW52LmM6CglGaXhlZCBSdGxTZXRFbnZpcm9ubWVudFZhcmlhYmxlIHRvIGRlYWwgcHJvcGVybHkgd2l0aCBVbmljb2RlIHN0cmluZ3MKCXRoYXQgYXJlbid0IG51bGwtdGVybWluYXRlZC4KCgkqIGRsbHMvbnRkbGwvdGVzdHMvcnRsc3RyLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJV2Ugc2hvdWxkIG5vdCBtYWtlIGRlc3RzdHJpbmcgc3RhdGljIHNpbmNlIHdlIGNvdW50IG9uIGl0IGJlaW5nIGZyZXNoCglhbmQgY2xlYW4gd2hlbiBlbnRlcmluZyB0ZXN0X1J0bENvcHlTdHJpbmcoKS4KCgkqIGRsbHMvdXNlci90ZXN0cy9tc2cuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBZGQgdHJhaWxpbmcgJ1xuJ3MgdG8gb2soKSBjYWxscy4KCgkqIGRsbHMvZG1pbWUvYXVkaW9wYXRoLmMsIGRsbHMvZG1pbWUvZG1pbWVfcHJpdmF0ZS5oLAoJICBkbGxzL2RtaW1lL3BlcmZvcm1hbmNlLmMsIGRsbHMvZG1pbWUvc2VnbWVudC5jOgoJUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CgktIGZpeCBEaXJlY3RTb3VuZCBDcmVhdGlvbiBieSBkbXVzaWMgKGZpeCByZWNlbnQgVW5yZWFsMiByZWdyZXNzaW9uKQoJICB1c2luZyBSb2JlcnQgUmVpZiBwYXRjaAoJLSB1c2Ugb2YgRm9yZWdyb3VuZFdpbmRvdyBpZiBoV25kIGlzIE5VTEwgKGFzIHNwZWNpZmllZCBvbiBtc2RuIGRvY3MpCgktIGJlZ2luIG9mIFBlcmZvcm1hbmNlIFBNc2cgaW1wbGVtZW50YXRpb24gKHdlIHNob3VsZCB1c2UgYSBwcm9jZXNzaW5nCgkgIHRocmVhZCkKCS0gYmV0dGVyIFNlZ21lbnQgbG9hZGluZwoJLSBzb21lIHN0dWJzIGZvciBJc0RpcnR5IChhbHdheXMgRkFMU0UpCgoJKiBkbGxzL2Rtc2NyaXB0L3NjcmlwdC5jOiBSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCU1ha2UgSURpcmVjdE11c2ljU2NyaXB0SW1wbF9JRGlyZWN0TXVzaWNTY3JpcHRfQ2FsbFJvdXRpbmUgcmV0dXJuIFNfT0sKCSh3aXRoIEVfTk9USU1QTCB3ZSBoYXZlIHNvbWUgYXBwcyBjcmFzaGVzKS4KCgkqIGRsbHMvdXJsbW9uL3VybG1vbi5zcGVjLCBkbGxzL3VybG1vbi91cmxtb25fbWFpbi5jLCBpbmNsdWRlL3VybG1vbi5oLAoJICBpbmNsdWRlL3VybG1vbi5pZGw6CglLZXZpbiBLb2x0emF1IDxrZXZpbkBwbG9wLm9yZz4KCUltcGxlbWVudGVkIENvSW50ZXJuZXRDb21iaW5lVXJsIGFuZCBDb0ludGVybmV0Q29tcGFyZVVybC4KCgkqIGRsbHMvZDNkOC9kZXZpY2UuYywgZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmMsCgkgIGRvY3VtZW50YXRpb24vbXVsdGltZWRpYS5zZ21sLCBwcm9ncmFtcy90YXNrbWdyL3Rhc2ttZ3IuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQXNzb3J0ZWQgc3BlbGxpbmcgZml4ZXMuCgoJKiBkbGxzL3NobHdhcGkvdGVzdHMvc3RyaW5nLmM6IEpha29iIEVyaWtzc29uIDxqYWtvdkB2bWxpbnV4Lm9yZz4KCVdpbmRvd3MgOTUgaGFzIG5vIFN0clJldFRvQlNUUiwgYWRkIGR5bmFtaWMgbG9va3VwIHRvIGF2b2lkIGJsb2NraW5nCglkaWFsb2cuCgoJKiBkbGxzL3VzZXIvdGVzdHMvaW5wdXQuYzogSmFrb2IgRXJpa3Nzb24gPGpha292QHZtbGludXgub3JnPgoJUHJldmVudCBXaW5kb3dzIDk1IGZyb20gYmxvY2tpbmcgb24gbGlua2luZyBpc3N1ZS4KCgkqIGRsbHMvd2lubW0vd2luZWphY2svYXVkaW8uYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+Cgl3aW5lamFjay5kcnYgb25seSBzdXBwb3J0cyAxNmJpdCBzb3VuZCBzbyB3ZSBjYW4gc2ltcGxpZnkgdGhlIHNvdW5kCglmb3JtYXQgY2hlY2tzLgoKCSogZGxscy93aW5tbS93aW5lYXJ0cy9hcnRzLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglJZiBBUlRTX1dhdmVJbml0KCkgZmFpbGVkIHRoZW4gdHJhbnNtaXQgdGhlIGZhaWx1cmUgdXBzdHJlYW0gaW4KCUFSVFNfRHJpdmVyUHJvYygpLgoKCSogcHJvZ3JhbXMvd2luZXRlc3QvTWFrZWZpbGUuaW46IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglBZGRlZCBtc2FjbTMyIHRvIHRoZSB0ZXN0cy4KCgkqIGRsbHMvd2lubW0vbG9sdmxkcnYuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVRha2luZyBpbnRvIGFjY291bnQgd2F2ZW1hcCBhbmQgbWlkaW1hcCB0aGVyZSBjYW4gYmUgdXAgdG8gOCBvdXRwdXQKCWRyaXZlcnMuIFNvIGluY3JlYXNlIHRoZSBzaXplIG9mIHRoZSBNTURydnMgYXJyYXkgYWNjb3JkaW5nbHkuCglTa2lwIGFscmVhZHkgbG9hZGVkIGRyaXZlcnMgYmVmb3JlIGNvbXBsYWluaW5nIChhc3NlcnRpbmcpIHRoYXQgdGhleQoJZG9uJ3QgZml0IGluIHRoZSBNTURydnMgYXJyYXkuCgoyMDA0LTA1LTA0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy91c2VyL3Rlc3RzL3dpbi5jOgoJU29tZSBtb3JlIHRlc3RzIGZvciBmb2N1cyBiZWhhdmlvciB3aGVuIGhpZGluZy9zaG93aW5nIHdpbmRvd3MuCgoJKiBkbGxzL2NvbWN0bDMyL2hlYWRlci5jLCBkbGxzL2dkaS9wcmludGRydi5jLCBkbGxzL2lwaGxwYXBpL2lwc3RhdHMuYywKCSAgZGxscy9rZXJuZWwvdGVzdHMvbWFpbHNsb3QuYywgZGxscy9rZXJuZWwvdGVzdHMvcGlwZS5jLAoJICBkbGxzL21zdmNydC90ZXN0cy9maWxlLmMsIGRsbHMvbXN2Y3J0L3Rlc3RzL3NjYW5mLmMsCgkgIGRsbHMvbXN2Y3J0L3Rlc3RzL3N0cmluZy5jLCBkbGxzL29sZTMyL3N0b3JhZ2UzMi5jLAoJICBkbGxzL3NobHdhcGkvcmVnLmMsIGRsbHMvdXJsbW9uL3Vtb24uYywgZGxscy91c2VyL3Rlc3RzL3Jlc291cmNlLmMsCgkgIGRsbHMvd2luZXBzL2Rvd25sb2FkLmMsIGRsbHMvd2luZXBzL3Blbi5jLCBkbGxzL3dpbmVwcy9wcy5jLAoJICBkbGxzL3dpbmVwcy9wc2Rydi5oLCBkbGxzL3dpbmVwcy90eXBlNDIuYywgZGxscy94MTFkcnYvd2luZWNsaXBzcnYuYywKCSAgZGxscy94MTFkcnYveHJlbmRlci5jLCBwcm9ncmFtcy9jbG9jay9tYWluLmMsCgkgIHByb2dyYW1zL2NtZGxndHN0L2NtZGxndHN0LmMsIHByb2dyYW1zL3djbWQvYmF0Y2guYywKCSAgcHJvZ3JhbXMvd2NtZC9idWlsdGlucy5jLCBwcm9ncmFtcy93Y21kL2RpcmVjdG9yeS5jLAoJICBwcm9ncmFtcy93Y21kL3djbWQuaCwgcHJvZ3JhbXMvd2NtZC93Y21kbWFpbi5jLAoJICBwcm9ncmFtcy93aW5ldGVzdC9tYWluLmMsIHByb2dyYW1zL3dpbmV0ZXN0L3NlbmQuYywKCSAgcHJvZ3JhbXMvd2luaGVscC9zdHJpbmcuYywgcHJvZ3JhbXMvd2luaGVscC93aW5oZWxwLmgsCgkgIHRvb2xzL3dpZGwvd2lkbC5jLCB0b29scy93bWMvbWNsLmMsIHRvb2xzL3dtYy9tY3kueSwKCSAgdG9vbHMvd21jL3V0aWxzLmMsIHRvb2xzL3dyYy9yZWFkcmVzLmMsIHRvb2xzL3dyYy93cmMuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJTWFrZSBvdXIgYXNjaWkgc3RyaW5ncyBzdGF0aWMgY29uc3QuCglSZW1vdmUgYSBjb3VwbGUgc3RyaW5nIHZhcmlhYmxlcyB0aGF0IHdlcmUgdXNlZCBvbmx5IG9uY2UgYW5kIHVzZSB0aGUKCXN0cmluZyBsaXRlcmFsIGRpcmVjdGx5LgoKCSogZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvZGF0YWNhY2hlLmMsCgkgIGRsbHMvb2xlMzIvZGVmYXVsdGhhbmRsZXIuYywgZGxscy9vbGUzMi9maWxlbW9uaWtlci5jLAoJICBkbGxzL29sZTMyL2lmcy5jLCBkbGxzL29sZTMyL2l0ZW1tb25pa2VyLmMsIGRsbHMvb2xlMzIvbWFyc2hhbC5jLAoJICBkbGxzL29sZTMyL21vbmlrZXIuYywgZGxscy9vbGUzMi9vbGUyLmMsIGRsbHMvb2xlMzIvb2xlMmltcGwuYywKCSAgZGxscy9vbGUzMi9vbGVwcm94eS5jLCBkbGxzL29sZTMyL3N0b3JhZ2UzMi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCBzdHJpY3QgYWxpYXNpbmcgaXNzdWVzIGluIGRsbHMvb2xlMzIuCgoJKiBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jOgoJRG9uJ3QgY2xvc2UgdGhlIGN1cnJlbnQgdGhyZWFkIGRpc3BsYXkgb24gcHJvY2VzcyBleGl0LCB3ZSBkb24ndCBjbG9zZQoJdGhlIG90aGVyIG9uZXMgYW55d2F5LiBTaG91bGQgYXZvaWQgWFJlbmRlciBlcnJvciBpbiBtZXRhZmlsZSB0ZXN0LgoKCSogcHJvZ3JhbXMvd2luZWNmZy9Fbi5yYywgcHJvZ3JhbXMvd2luZWNmZy9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvd2luZWNmZy9kcml2ZS5jLCBwcm9ncmFtcy93aW5lY2ZnL3Jlc291cmNlLmgsCgkgIHByb2dyYW1zL3dpbmVjZmcvd2luZWNmZy5jLCBwcm9ncmFtcy93aW5lY2ZnL3dpbmVjZmcuaDoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkBhbHVtLndwaS5lZHU+CglJbXBsZW1lbnRlZCBhbiBhcnJheSBvZiAyNiBkcml2ZXMgYW5kIGludGVyZmFjZSBmdW5jdGlvbnMgZm9yIGFkZGluZywKCWNvcHlpbmcsIG1vdmluZyBhbmQgZGVsZXRpbmcgZHJpdmVzLgoJQWRkZWQgYSAiU2hvdy9IaWRlIEFkdmFuY2VkIiBidXR0b24gaW4gdGhlIGRyaXZlIGVkaXQgZGlhbG9nIHRoYXQKCXRvZ2dsZXMgdGhlIGRpc3BsYXkgb2YgYWR2YW5jZWQgb3B0aW9ucyBhbmQgcmVzaXplcy9tb3ZlcyBjb250cm9scy4KCURpc2FibGUgdGhlICdhdXRvZGV0ZWN0JyByYWRpbyBidXR0b24gaW4gdGhlIGRyaXZlIGVkaXQgZGlhbG9nIHVudGlsCgl3ZSBoYXZlIGF1dG9kZXRlY3Rpb24gc3VwcG9ydC4KCU1hcCB3aW5kb3cgJ3gnIGJ1dHRvbiB0byBkaWFsb2cgY2xvc2UuCgoJKiBwcm9ncmFtcy9yZWdlZGl0L0VuLnJjLCBwcm9ncmFtcy9yZWdlZGl0L0VzLnJjLAoJICBwcm9ncmFtcy9yZWdlZGl0L0ZyLnJjLCBwcm9ncmFtcy9yZWdlZGl0L0l0LnJjLAoJICBwcm9ncmFtcy9yZWdlZGl0L05sLnJjLCBwcm9ncmFtcy9yZWdlZGl0L1BsLnJjLAoJICBwcm9ncmFtcy9yZWdlZGl0L1B0LnJjLCBwcm9ncmFtcy9yZWdlZGl0L1J1LnJjLAoJICBwcm9ncmFtcy9yZWdlZGl0L1NpLnJjLCBwcm9ncmFtcy9yZWdlZGl0L2NoaWxkd25kLmMsCgkgIHByb2dyYW1zL3JlZ2VkaXQvZWRpdC5jLCBwcm9ncmFtcy9yZWdlZGl0L2ZyYW1ld25kLmMsCgkgIHByb2dyYW1zL3JlZ2VkaXQvbGlzdHZpZXcuYywgcHJvZ3JhbXMvcmVnZWRpdC9tYWluLmMsCgkgIHByb2dyYW1zL3JlZ2VkaXQvbWFpbi5oLCBwcm9ncmFtcy9yZWdlZGl0L3Jlc291cmNlLmgsCgkgIHByb2dyYW1zL3JlZ2VkaXQvcnNyYy5yYzoKCUtyenlzenRvZiBGb2x0bWFuIDxrZm9sdG1hbkBwb3J0YWwub25ldC5wbD4KCS0gRjIgaXMgbm93IGFuIGFjY2VsZXJhdG9yIGZvciByZW5hbWUKCS0gcGFuZWwgc3dpdGNoaW5nIHZpYSBUQUIgZG9lc24ndCB1c2UgSXNEaWFsb2dNZXNzYWdlIGFueW1vcmUKCS0gZm9jdXMgaXMgY29ycmVjdGx5IHNldCBhZnRlciBtYWluIHdpbmRvdyBhY3RpdmF0aW9uIChBbHQrVEFCIGV0YyksCgkgIHJlbW92ZWQgc29tZSBmb2N1cy1yZWxhdGVkIGJ1Z3MKCS0gcHJlc3NpbmcgRU5URVIgb3IgZG91YmxlLWNsaWNraW5nIGEgdmFsdWUgZWRpdHMgaXQKCS0gc2V0dGluZyBhIHZhbHVlIHRvIGFuIGVtcHR5IHN0cmluZyBpcyBub3cgYWxsb3dlZAoJLSBhZGRpbmcgYSBuZXcgdmFsdWUgc3RhcnRzIHJlbmFtZSBhdXRvbWF0aWNhbGx5CgktIHJlbmFtaW5nIGEgdmFsdWUgZG9lc24ndCBtb3ZlIHRoZSBjdXJzb3IKCS0gcmVtb3ZlZCBzb21lIHVubmVjZXNzYXJ5IGNvZGUgKE5NX1JDTElDSyBpbiBMaXN0VmlldyBldGMpCgktIHJpZ2h0LWNsaWNrIG9uIHRyZWUgdmlldyBkaXNwbGF5cyAiTmV3Li4uIiBtZW51CgktIGRlZmF1bHQgdmFsdWVzIGFyZSB0cmVhdGVkIGxpa2UgaW4gV2luZG93cyBSZWdFZGl0IChkaXNwbGF5ZWQgZXZlbgoJICB3aGVuIHRoZXkgYXJlbid0IHBoeXNpY2FsbHkgcHJlc2VudCwgY2FuJ3QgYmUgcmVuYW1lZCBvciBkZWxldGVkKQoJLSBQb2xpc2ggdHJhbnNsYXRpb24gaGFkIHNvbWUgd2VpcmQgY2hhcmFjdGVycyBhZGRlZCBiZWZvcmUgUG9saXNoCgkgIGxldHRlcnMKCgkqIGRsbHMvcmljaGVkaXQvcmljaGVkaXQuYzogVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hAY29kZXdlYXZlcnMuY29tPgoJRGVsZWdhdGVzIG1lc3NhZ2VzIGRpcmVjdGx5IHRvIHRoZSBlZGl0IGNvbnRyb2wgd2luZG93IHByb2MgaW5zdGVhZCBvZgoJY29udGFpbmluZyBhbiBlZGl0IGNvbnRyb2wuIEZpeGVzIHByb2JsZW1zIHdpdGggc3ViY2xhc3NpbmcgdGhlCglyaWNoZWRpdCBjb250cm9sLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglNYXhpbWUgQmVsbGVuZ+kgPG1heGltZS5iZWxsZW5nZUBsYXBvc3RlLm5ldD4KCUFkZCBOTV9SQ0xJQ0sgbm90aWZpY2F0aW9uIHN1cHBvcnQgZm9yIHRvb2xiYXJzLgoKCSogZGxscy9vbGVhdXQzMi9vbGVwaWN0dXJlLmM6CglNYXhpbWUgQmVsbGVuZ+kgPG1heGltZS5iZWxsZW5nZUBsYXBvc3RlLm5ldD4KCS0gRml4IHBhbGV0dGUgY3JlYXRpb24uCgktIEZpeCB1cHNpZGUgZG93biBHaWYuCgktIEFkZCBzdXBwb3J0IGZvciB0cmFuc3BhcmVudCBHaWYuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9waXBlLmM6CglBdm9pZCBraWxsaW5nIHRocmVhZHMgd2l0aCBUZXJtaW5hdGVUaHJlYWQsIHRoaXMgY2FuIGNhdXNlIGRlYWRsb2Nrcy4KCgkqIGluY2x1ZGUvYXhjb3JlLmlkbCwgaW5jbHVkZS9iYXNldHNkLmgsIGluY2x1ZGUvc3RybWlmLmgsCgkgIGluY2x1ZGUvd2lubnQuaCwgaW5jbHVkZS93dHlwZXMuaCwgaW5jbHVkZS93dHlwZXMuaWRsOgoJRXhwbGljaXRseSBzcGVjaWZ5IGFsaWdubWVudCBvZiA2NC1iaXQgdHlwZXMuCgoJKiBkbGxzL2dkaS90ZXN0cy9nZW5lcmF0ZWQuYywgZGxscy9rZXJuZWwvdGVzdHMvZ2VuZXJhdGVkLmMsCgkgIGRsbHMvbnRkbGwvdGVzdHMvZ2VuZXJhdGVkLmMsIGRsbHMvc2hlbGwzMi90ZXN0cy9nZW5lcmF0ZWQuYywKCSAgZGxscy9zaGx3YXBpL3Rlc3RzL2dlbmVyYXRlZC5jLCBkbGxzL3VybG1vbi90ZXN0cy9nZW5lcmF0ZWQuYywKCSAgZGxscy91c2VyL3Rlc3RzL2dlbmVyYXRlZC5jLCBkbGxzL3dpbmluZXQvdGVzdHMvZ2VuZXJhdGVkLmM6CglVcGRhdGVkIHRoZSBhdXRvLWdlbmVyYXRlZCB0ZXN0cy4KCgkqIHRvb2xzL3dpbmFwaS9jX3R5cGUucG0sIHRvb2xzL3dpbmFwaS90ZXN0cy5kYXQsCgkgIHRvb2xzL3dpbmFwaS93aW5hcGlfdGVzdDoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJLSBBc3N1bWUgOCBieXRlIG1heGltdW0gYWxpZ25tZW50LgoJLSBTeW5jIHR5cGUgdGVzdGluZyBkYXRhIHdpdGggdGhlIGhlYWRlcnMuCgoyMDA0LTA1LTAzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9rZXJuZWwvdm9sdW1lLmM6CglNYWtlIEdldFZvbHVtZUluZm9ybWF0aW9uIGRlZmF1bHQgdG8gcmVwb3J0aW5nIE5URlMgZm9yIG5vbi1GQVQKCWZpbGVzeXN0ZW1zLgoKCSogZGxscy9rZXJuZWwvZmlsZS5jOiBPRl9DUkVBVEUgc2hvdWxkIGZvcmNlIHdyaXRlIGFjY2VzcyBpbiBPcGVuRmlsZS4KCgkqIGRsbHMvY29tbWRsZy9jZGxnX0NuLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19EZS5yYywKCSAgZGxscy9jb21tZGxnL2NkbGdfRW4ucmMsIGRsbHMvY29tbWRsZy9jZGxnX0VzLnJjLAoJICBkbGxzL2NvbW1kbGcvY2RsZ19Gci5yYywgZGxscy9jb21tZGxnL2NkbGdfSXQucmMsCgkgIGRsbHMvY29tbWRsZy9jZGxnX0phLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19Lby5yYywKCSAgZGxscy9jb21tZGxnL2NkbGdfUHQucmMsIGRsbHMvY29tbWRsZy9jZGxnX1J1LnJjLAoJICBkbGxzL2NvbW1kbGcvY2RsZ19TaS5yYywgZGxscy9jb21tZGxnL2NkbGdfU2sucmMsCgkgIGRsbHMvY29tbWRsZy9jZGxnX1N2LnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19UaC5yYywKCSAgZGxscy9jb21tZGxnL2NkbGdfVWsucmMsIGRsbHMvY29tbWRsZy9jZGxnX1poLnJjOgoJUGF2ZWwgUm9za2luIDxwcm9za2lAZ251Lm9yZz4KCU1ha2UgdGhlIGZpbGUgdHlwZSBjb21ib2JveCBub24tZWRpdGFibGUuCgoJKiBpbmNsdWRlL21hcGlkZWZzLmgsIGluY2x1ZGUvbWFwaXV0aWwuaDoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglBZGQgdGhlIElNQVBJUHJvcC9JUHJvcERhdGEgZGVmaW5pdGlvbnMuCgoJKiBpbmNsdWRlL3dpbmUvdGVzdC5oOiBGZXJlbmMgV2FnbmVyIDx3ZmVyaUBhZmF2YW50LmVsdGUuaHU+CglEaXNhYmxlIGJ1ZmZlcmluZyBvZiB0ZXN0IG91dHB1dCB0byBrZWVwIG1vcmUgaW5mb3JtYXRpb24gaW4gY2FzZSBvZiBhCgljcmFzaC4KCgkqIGRsbHMvbWFwaTMyL21hcGkzMi5zcGVjLCBkbGxzL21hcGkzMi9wcm9wLmMsCgkgIGRsbHMvbWFwaTMyL3Rlc3RzL3Byb3AuYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglJbXBsZW1lbnQgYW5kIHRlc3QgU2NDb3B5UHJvcHMvU2NSZWxvY1Byb3BzLgoKCSogZGxscy9rZXJuZWwvcHJvZmlsZS5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJU3RyaXAgbGVhZGluZyB3aGl0ZXNwYWNlIHdoZW4gYWRkaW5nIGEgbmV3IHZhbHVlIGFuZCBub3QganVzdCB3aGVuCglyZXBsYWNpbmcgYSBjdXJyZW50IHZhbHVlLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvbXNhY20vTWFrZWZpbGUuaW4sCgkgIGRsbHMvbXNhY20vdGVzdHMvLmN2c2lnbm9yZSwgZGxscy9tc2FjbS90ZXN0cy9NYWtlZmlsZS5pbiwKCSAgZGxscy9tc2FjbS90ZXN0cy9tc2FjbS5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUFkZGVkIHRlc3RzIGZvciBtc2FjbTMyLmRsbC4KCgkqIGRsbHMvbXNhY20vZHJpdmVyLmMsIGRsbHMvbXNhY20vZm9ybWF0LmMsIGRsbHMvbXNhY20vbXNhY20zMl9tYWluLmM6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQmV0dGVyIGZ1bmN0aW9uIHBhcmFtZXRlciBjaGVja2luZy4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnLmM6CglXb2xmZ2FuZyBTY2h3b3R6ZXIgPHdvbGZnYW5nLnNjaHdvdHplckBnbXgubmV0PgoJTWFrZSBmaWxlIGRpYWxvZyBzdXBwb3J0IEZORVJSX0JVRkZFUlRPU01BTEwgaWYgYnVmZmVyIHRvbyBzbWFsbC4KCgkqIGRvY3VtZW50YXRpb24vZGVidWdnaW5nLnNnbWw6CglBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CglVc2UgV0lORURFQlVHIGluc3RlYWQgb2YgLS1kZWJ1Z21zZy4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL2NvbnNvbGUuYzogSmFrb2IgRXJpa3Nzb24gPGpha292QHZtbGludXgub3JnPgoJUHJldmVudCBmcm9tIGNyYXNoaW5nL2hhbmdpbmcgaW4gV2luZG93cyA5NSBPU1IyLgoKCSogZGxscy91cmxtb24vTWFrZWZpbGUuaW4sIGRsbHMvdXJsbW9uL3Rlc3RzLy5jdnNpZ25vcmUsCgkgIGRsbHMvdXJsbW9uL3Rlc3RzL01ha2VmaWxlLmluLCBkbGxzL3VybG1vbi90ZXN0cy91cmwuYywKCSAgZGxscy91cmxtb24vdW1vbi5jOgoJS2V2aW4gS29sdHphdSA8a2V2aW5AcGxvcC5vcmc+CglIYW5kbGUgY29udGV4dCBpbiBDcmVhdGVVUkxNb25pa2VyLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglNYXhpbWUgQmVsbGVuZ+kgPG1heGltZS5iZWxsZW5nZUBsYXBvc3RlLm5ldD4KCUZpeCB0aGUgc2l6ZSBvZiB0aGUgbGlzdHZpZXcgaXRlbXMgaW4gdGhlIGN1c3RvbWl6ZSBkaWFsb2cuCgoJKiBkbGxzL2NmZ21ncjMyL2NmZ21ncjMyLnNwZWM6IE1hdHRoZXcgRGF2aXNvbiA8bWpkNzdAY2FtLmFjLnVrPgoJVXBkYXRlZCB0byBpbmNsdWRlIGZ1bmN0aW9ucyBmcm9tIHdpbmRvd3MgOThTRS4KCjIwMDQtMDUtMDIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2QzZDgvZGV2aWNlLmMsIGRsbHMvZDNkOC9kaXJlY3R4LmMsIGRsbHMvZDNkOC9kcmF3cHJpbS5jLAoJICBkbGxzL2QzZDgvc3VyZmFjZS5jOgoJQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCUZpeGVzIGZvciByZW5kZXJpbmcgdGFyZ2V0cy4KCgkqIGRsbHMvY29tY3RsMzIvcmViYXIuYzogR2UgdmFuIEdlbGRvcnAgPGd2Z0ByZWFjdG9zLmNvbT4KCUFsd2F5cyByZXNldCBBVVRPX1JFU0laRSBmbGFnIG9uIGV4aXQgZnJvbSBSRUJBUl9Gb3JjZVJlc2l6ZS4KCgkqIGRsbHMvd2luZXBzL3RleHQuYzogR2VyYWxkIFBmZWlmZXIgPGdlcmFsZEBwZmVpZmVyLmNvbT4KCUluY2x1ZGUgPHN0ZGxpYi5oPiB0byBvYnRhaW4gYSBwcm90b3R5cGUgb2YgYWJzKCkuCgoJKiBkbGxzL3dpbnNwb29sL2luZm8uYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglVc2UgbWVtY3B5IGluc3RlYWQgb2Ygd2VpcmQgY2FzdHMuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCU1heGltZSBCZWxsZW5n6SA8bWF4aW1lLmJlbGxlbmdlQGxhcG9zdGUubmV0PgoJRml4IFRCX0dFVFNUWUxFIG1lc3NhZ2UgdG8gcmV0dXJuIHRoZSBzdHlsZSBvZiB0aGUgdG9vbGJhciBhbmQgbm90IHRoZQoJc3R5bGUgb2YgYSBidXR0b24uCgoJKiBkbGxzL29sZTMyL21hcnNoYWwuYywgZGxscy9vbGUzMi9vbGUzMi5zcGVjOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglJbXBsZW1lbnRlZCBDb1JlbGVhc2VNYXJzaGFsRGF0YS4KCgkqIGRsbHMvc2hlbGwzMi9hdXRvY29tcGxldGUuYzoKCU1heGltZSBCZWxsZW5n6SA8bWF4aW1lLmJlbGxlbmdlQGxhcG9zdGUubmV0PgoJRml4IGEgc3RyaW5nIGFsbG9jYXRpb24uCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnRlZCBUVlNfTk9TQ1JPTEwuCgoyMDA0LTA1LTAxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL2ZpbGUuYywgZGxscy9rZXJuZWwvZmlsZTE2LmMsCgkgIGRsbHMva2VybmVsL2tlcm5lbF9tYWluLmMsIGRsbHMva2VybmVsL2tlcm5lbF9wcml2YXRlLmgsCgkgIGRsbHMva2VybmVsL3BhdGguYywgZGxscy9rZXJuZWwvcHJvY2Vzcy5jLCBkbGxzL2tlcm5lbC9wcm9maWxlLmMsCgkgIGRsbHMva2VybmVsL3Rhc2suYywgZGxscy9rZXJuZWwvdm9sdW1lLmMsIGRsbHMva2VybmVsL3Z4ZC5jLAoJICBmaWxlcy9kaXJlY3RvcnkuYywgZmlsZXMvZmlsZS5jLCBmaWxlcy9zbWIuYywgaW5jbHVkZS9maWxlLmgsCgkgIG1pc2MvcmVnaXN0cnkuYzoKCU1vdmVkIG1vc3QgcmVtYWluaW5nIGZpbGUgZnVuY3Rpb25zIHRvIGRsbHMva2VybmVsLgoJUmVtb3ZlZCBmaWxlcy9maWxlLmMgYW5kIGluY2x1ZGUvZmlsZS5oLgoKCSogZGxscy9rZXJuZWwvdm9sdW1lLmM6CglGaXhlZCBsYXN0IGVycm9yIGNvZGUgY2hlY2sgaW4gR2V0Vm9sdW1lSW5mb3JtYXRpb25XLCBvcGVuaW5nIGEKCW5vbi1leGlzdGVudCBkZXZpY2UgcmV0dXJucyBFUlJPUl9GSUxFX05PVF9GT1VORCBub3cuCgoJKiBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsIHNlcnZlci9maWxlLmMsIHNlcnZlci9tYXBwaW5nLmMsCgkgIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci9zaWduYWwuYywKCSAgc2VydmVyL3RyYWNlLmM6CglVc2UgcHJlYWQvcHdyaXRlIGV2ZXJ5d2hlcmUgdG8gYXZvaWQgY2hhbmdpbmcgdGhlIGZpbGUgcG9zaXRpb24gd2hpbGUKCXRoZSBjbGllbnQgaXMgdXNpbmcgaXQuCglHZXQgcmlkIG9mIHRoZSBubyBsb25nZXIgdXNlZCB0cnVuY2F0ZV9maWxlIHJlcXVlc3QuCgoJKiBkbGxzL2tlcm5lbC9maWxlLmMsIGRsbHMvbnRkbGwvZmlsZS5jLCBmaWxlcy9maWxlLmM6CglSZWltcGxlbWVudGVkIEdldEZpbGVUeXBlIGFuZCBTZXRFbmRPZkZpbGUgdXNpbmcgbnRkbGwgZnVuY3Rpb25zLgoKCSogbGlicy9NYWtlZmlsZS5pbjogUGllcnJlIGQnSGVyYmVtb250IDxzdGVnZWZpbkBmcmVlLmZyPgoJU3VwcG9ydCBEYXJ3aW4gdmVyc2lvbmluZyBjb252ZW50aW9uLgoKCSogcHJvZ3JhbXMvcmVnZWRpdC9Fbi5yYywgcHJvZ3JhbXMvcmVnZWRpdC9Fcy5yYywKCSAgcHJvZ3JhbXMvcmVnZWRpdC9JdC5yYywgcHJvZ3JhbXMvcmVnZWRpdC9QbC5yYywKCSAgcHJvZ3JhbXMvcmVnZWRpdC9yc3JjLnJjOgoJS3J6eXN6dG9mIEZvbHRtYW4gPGtmb2x0bWFuQHBvcnRhbC5vbmV0LnBsPgoJLSBjaGFuZ2VkIENhbmNlbCBERUZQVVNIQlVUVE9OIHRvIFBVU0hCVVRUT04KCS0gZml4ZWQgY2FwdGlvbiBJRERfRURJVF9EV09SRCBmcm9tICJFZGl0IFN0cmluZyIgdG8gIkVkaXQgRFdPUkQiCgktIGFkZGVkIFBvbGlzaCB0cmFuc2xhdGlvbgoKCSogZGxscy9tYXBpMzIvbWFwaTMyLnNwZWMsIGRsbHMvbWFwaTMyL3V0aWwuYywgaW5jbHVkZS9NYWtlZmlsZS5pbiwKCSAgaW5jbHVkZS94Y21jLmg6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5AYWx1bS53cGkuZWR1PgoJU3R1YiBjbWNfcXVlcnlfY29uZmlndXJhdGlvbigpIGFuZCBhZGQgeGNtYy5oIGhlYWRlciBmaWxlLgoKMjAwNC0wNC0zMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL2ZpbGUuYywgZGxscy9rZXJuZWwvc3luYy5jLCBkbGxzL250ZGxsL2ZpbGUuYywKCSAgZmlsZXMvZmlsZS5jLCBpbmNsdWRlL3dpbnRlcm5sLmg6CglBZGRlZCBhIGZldyBtb3JlIGluZm8gY2xhc3NlcyBpbiBOdFF1ZXJ5SW5mb3JtYXRpb25GaWxlLgoJVXNlIE5UIGZpbGUgbmFtZXMgaW4gQ3JlYXRlTmFtZWRQaXBlVy4KCVJlaW1wbGVtZW50ZWQgR2V0RmlsZUluZm9ybWF0aW9uQnlIYW5kbGUsIEdldEZpbGVTaXplIGFuZCBHZXRGaWxlVGltZQoJdXNpbmcgbnRkbGwgZnVuY3Rpb25zLgoKCSogZGxscy9udGRsbC9maWxlLmMsIGZpbGVzL2ZpbGUuYzoKCU1vdmVkIHN1cHBvcnQgZm9yIG9wZW5pbmcgbmFtZWQgcGlwZXMgdG8gbnRkbGwuCgoJKiBzZXJ2ZXIvcmVnaXN0cnkuYzoKCUF2b2lkIGF1dG9kZXRlY3RpbmcgdGhlIHByZWZpeCB3aGVuIGxvYWRpbmcgdGhlIGNvbmZpZyBmaWxlIHNpbmNlIHRoZQoJZmlyc3Qga2V5IG1heSBiZSBuYW1lZCAnd2luZScuCgoJKiBkbGxzL2tlcm5lbC92b2x1bWUuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUZpeGVkIGJ1ZmZlciBvdmVyZmxvdy4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzIuc3BlYywgZGxscy9vbGVhdXQzMi92YXJpYW50LmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJSW1wbGVtZW50IFZhckRhdGVGcm9tVWRhdGVFeC4KCgkqIGRsbHMvb2xlMzIvbWFyc2hhbC5jLCBkbGxzL29sZTMyL3N0b3JhZ2UuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgbHZhbHVlIGNhc3RzLgoKCSogZGxscy9vbGUzMi9vbGUzMi5zcGVjLCBkbGxzL29sZTMyL3N0b3JhZ2UzMi5jLCBpbmNsdWRlL29iamJhc2UuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglBZGQgYSBzdHViIGZvciBTdGdDcmVhdGVTdG9yYWdlRXgoKS4gUmV0dXJucwoJU1RHX0VfVU5JTVBMRU1FTlRFREZVTkNUSU9OIGFzIHBlciBNU0ROLiBGaXhlcyBhbiBlcnJvciBzYXZpbmcgZmlsZXMKCWluIFdvcmQgWFAuCgoJKiBkbGxzL2tlcm5lbC9wYXRoLmM6CglVc2UgUnRsRG9zUGF0aE5hbWVUb050UGF0aE5hbWVfVSB0byBidWlsZCB0aGUgcmVnaXN0cnkgZW50cmllcyBmb3IKCU1PVkVGSUxFX0RFTEFZX1VOVElMX1JFQk9PVC4KCgkqIGRsbHMvZGJnaGVscC9kYmdoZWxwX3ByaXZhdGUuaCwgZGxscy9kYmdoZWxwL3N0YWNrLmMsCgkgIGRsbHMvZGJnaGVscC9zeW1ib2wuYywgZGxscy9kYmdoZWxwL3R5cGUuYzoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJLSBmaXhlZCBzb21lIGJ1Z3MgaW4gU3RhY2tXYWxrIChjbGFpbWVkIGZvciBidXQgZm9yZ290dGVuIGluIGxhc3QKCSAgcGF0Y2gpCgktIHJlbW92ZWQgbG9jYXRpb24gZmllbGQgaW4gc3ltdF9kYXRhLCBhbmQgcmV3b3JrZWQgdGhlIGFjdHVhbAoJICBsb2NhdGlvbiBvZiBpbmZvcm1hdGlvbiBiYXNlZCBvbiB0aGUgJ2tpbmQnIGZpZWxkCgktIHNob3J0ZW4gZGVidWcgY2hhbm5lbCBuYW1lCgktIGFkZGVkIHN1cHBvcnQgZm9yIGJpdGZpZWxkIGluIHN0cnVjdDpzCgktIGNsZWFuZWQgdXAgc291cmNlIGxpbmUgaW5mb3JtYXRpb24gc3VwcG9ydAoJLSBub3cgc3RvcmluZyBjb25zdGFudHMgdmFsdWVzIGFzIFZBUklBTlQKCgkqIGRsbHMvdXNlci90ZXN0cy9tc2cuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVJlcGxhY2Ugd1BhcmFtIHZhbHVlcyBmb3IgV01fUEFSRU5UTk9USUZZIG1lc3NhZ2UgYnkgYXBwcm9wcmlhdGUKCXN5bWJvbGljIG5hbWVzLgoKCSogZGxscy93aW5tbS90ZXN0cy93YXZlLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglZb3UgaGF2ZSB0byBoYXZlIGF0IGxlYXN0IG9uZSBkZXZpY2UgYmVmb3JlIHlvdSBjYW4gaGF2ZSBhIGRlZmF1bHQKCWRldmljZS4KCgkqIGRsbHMvc2hlbGwzMi9hdXRvY29tcGxldGUuYzoKCU1heGltZSBCZWxsZW5n6SA8bWF4aW1lLmJlbGxlbmdlQGxhcG9zdGUubmV0PgoJLSBGaXggdGhlIHJldHVybiBrZXkgaGFuZGxpbmcgYW5kIGNsZWFuIHVwIHRoZSBjb2RlLgoJLSBBZGQgc3VwcG9ydCBmb3IgcXVpY2tDb21wbGV0ZSB3aXRoIEN0cmwrUmV0dXJuLgoKCSogZGxscy9xdWFydHovZmlsdGVyZ3JhcGguYzogQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJRW5hYmxlIHF1ZXJ5aW5nIG9mIElJRF9GaWx0ZXJHcmFwaCBpbnRlcmZhY2UgZnJvbSBmaWx0ZXJncmFwaCBtYW5hZ2VyCgkoc3BvdHRlZCBieSBSb2JlcnQgUmVpZikuCgoyMDA0LTA0LTI5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvbnRkbGwvY2Ryb20uYywgZGxscy9udGRsbC9kaXJlY3RvcnkuYywKCSAgZGxscy9udGRsbC9maWxlLmMsIGluY2x1ZGUvY29uZmlnLmguaW46CglBZGRlZCBhdXRvLWRldGVjdGlvbiBvZiBET1MgZHJpdmUgZGV2aWNlcyBiYXNlZCBvbiBmaW5kaW5nIHRoZQoJY29ycmVzcG9uZGluZyBtb3VudCBwb2ludCBpbiAvZXRjL210YWIgb3IgL2V0Yy9mc3RhYi4KCgkqIGRsbHMva2VybmVsL2hlYXAuYzoKCUNyZWF0ZSB0aGUgc3lzdGVtIGhlYXAgZXZlbnQgYmVmb3JlIHRoZSBzaGFyZWQgbWFwcGluZyB0byBhdm9pZCBhIHJhY2UKCWNvbmRpdGlvbi4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJU3R1YiBpbXBsZW1lbnRhdGlvbiBmb3IgU0hGaW5kRmlsZXMuCgoJKiBkbGxzL3dpbmVwcy90ZXh0LmMsIGRsbHMveDExZHJ2L3hyZW5kZXIuYzoKCUtyenlzenRvZiBGb2x0bWFuIDxrZm9sdG1hbkBwb3J0YWwub25ldC5wbD4KCU1ha2Ugc3VyZSBhc2NlbnQvZGVzY2VudCB2YWx1ZXMgZG9uJ3QgYmVjb21lIG5lZ2F0aXZlIGFmdGVyIGNvb3JkaW5hdGUKCW1hcHBpbmcuCgoJKiBkbGxzL3VzZXIvdGVzdHMvbXNnLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGQgYSB0ZXN0IGZvciBjcmVhdGlvbiBvZiBhIG1heGltaXplZCBjaGlsZCB3aW5kb3cuCgoJKiBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL3BzdG9yZS5oLCBpbmNsdWRlL3BzdG9yZS5pZGw6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBwc3RvcmUuaCBhbmQgYW4gSURMIGZpbGUgdG8gZ2VuZXJhdGUgaXQuCgoJKiBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwvcHJvY2Vzcy5jLCBkbGxzL2tlcm5lbC92b2x1bWUuYywKCSAgZGxscy9udGRsbC9kaXJlY3RvcnkuYywgZG9jdW1lbnRhdGlvbi9zYW1wbGVzL2NvbmZpZywKCSAgZG9jdW1lbnRhdGlvbi93aW5lLmNvbmYubWFuLCBkb2N1bWVudGF0aW9uL3dpbmUubWFuLmluLAoJICBmaWxlcy9kaXJlY3RvcnkuYywgZmlsZXMvZHJpdmUuYywgZmlsZXMvZmlsZS5jLCBpbmNsdWRlL2ZpbGUuaCwKCSAgbWlzYy9yZWdpc3RyeS5jOgoJVXNlIHN5bWxpbmtzIGluIGRvc2RldmljZXMvIGZvciB0aGUgZHJpdmUgZGV2aWNlcyB0b28uCglTdG9yZSBkcml2ZSB0eXBlcyBpbiB0aGUgcmVnaXN0cnkgaW5zdGVhZCBvZiBpbiB0aGUgY29uZmlnIGZpbGUuCglBZGRlZCBzb21lIG1vcmUgY29kZSB0byBjb252ZXJ0IGV4aXN0aW5nIGNvbmZpZyB0byB0aGUgbmV3IHNjaGVtZS4KCgkqIGRsbHMvd2lubW0vd2luZWFsc2EvYXVkaW8uYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUZvcmdvdCB0byBsaW1pdCBjYXB0dXJlIHNhbXBsZSByYXRlcy4KCgkqIGRsbHMvZDNkOC9kM2Q4X3ByaXZhdGUuaCwgZGxscy9kM2Q4L2QzZGNvcmVfZ2wuaCwgZGxscy9kM2Q4L2RldmljZS5jLAoJICBkbGxzL2QzZDgvZGlyZWN0eC5jLCBkbGxzL2QzZDgvZHJhd3ByaW0uYywgZGxscy9kM2Q4L3N1cmZhY2UuYywKCSAgZGxscy9kM2Q4L3V0aWxzLmM6CglSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCS0gRml4IGNvbXBpbGF0aW9uIGFnYWluIHVzaW5nIG9sZGVycyBHTCBoZWFkZXJzCgkgIChnbENvbXByZXNzZWRUZXhJbWFnZTJEQVJCIHByb2JsZW0pLgoJLSBGaXggdHlwbyBvbiBjb25zdGFudC4KCS0gRGV0ZWN0aW9uIG9mIE5WaWRpYSB0ZXh0dXJlX3NoYWRlciBhbmQgcmVnaXN0ZXJfY29tYmluZXJzCgkgIGV4dGVuc2lvbnMuCgktIEJlZ2luIHRvIGltcGxlbWVudCBCVU1QTUFQUElORyB1c2luZyBOVmlkaWEgVGV4dHVyZSBzaGFkZXIgZXh0ZW5zaW9uCgkgIChub3QgcmVhbGx5IHdvcmtpbmcgZm9yIG5vdykuCgoyMDA0LTA0LTI4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL2tlcm5lbF9tYWluLmMsCgkgIGRsbHMva2VybmVsL3RpbWUuYywgZmlsZXMvZGlyZWN0b3J5LmMsIGZpbGVzL2Rvc19mcy5jLCBmaWxlcy9kcml2ZS5jLAoJICBmaWxlcy9maWxlLmMsIGluY2x1ZGUvZmlsZS5oOgoJUmVtb3ZlZCBhIG51bWJlciBvZiBpbnRlcm5hbCBmaWxlIGZ1bmN0aW9ucyB0aGF0IGFyZSBubyBsb25nZXIgdXNlZC4KCgkqIGRsbHMvdXNlci90ZXN0cy93aW4uYzoKCUFkZGVkIHRlc3QgZm9yIHNldHRpbmcgZm9jdXMgdG8gYW4gaW52aXNpYmxlIHdpbmRvdy4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL2ZpbGUuYzogSmFrb2IgRXJpa3Nzb24gPGpha292QHZtbGludXgub3JnPgoJRml4ZWQgdGVzdHMgdG8gc3VjY2VlZCBvbiBhbGwgV2luZG93cyB2ZXJzaW9ucy4KCgkqIGRsbHMvd2lubW0vdGVzdHMvd2F2ZS5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQW5vdGhlciBlcnJvciByZXR1cm4gdmFsdWUgY2hlY2sgYWRkZWQgYWZ0ZXIgbG9va2luZyBhdCB0aGUgd2luZG93cwoJdGVzdHMgcmVzdWx0cy4KCVJlcGxhY2VkIC0xIHdpdGggV0FWRV9NQVBQRVIuCgoJKiBkbGxzL3JwY3J0NC9NYWtlZmlsZS5pbiwgZGxscy9ycGNydDQvcnBjcnQ0X21haW4uYzoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJUmVpbXBsZW1lbnQgVXVpZENyZWF0ZSgpIHdpdGggV2luMzIgQVBJcy4KCgkqIGRsbHMva2VybmVsL2ZpbGUxNi5jLCBkbGxzL2tlcm5lbC9wYXRoLmMsIGRsbHMva2VybmVsL3Byb2Nlc3MuYywKCSAgZmlsZXMvZHJpdmUuYywgaW5jbHVkZS9maWxlLmg6CglSZWltcGxlbWVudGVkIEdldC9TZXRDdXJyZW50RGlyZWN0b3J5VyB1c2luZyB0aGUgY29ycmVzcG9uZGluZyBudGRsbAoJZnVuY3Rpb25zLgoKCSogZGxscy94MTFkcnYvd2luZG93LmM6CglGaXhlZCB1bnNpZ25lZCBjb21wYXJpc29uIGlzc3VlIGluIHByZXZpb3VzIGNoYW5nZS4KCgkqIGRsbHMvbXNpL21zaS5jLCBkbGxzL21zaS9tc2kuc3BlYywgaW5jbHVkZS9tc2kuaDoKCVJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJLSBhZGQgc29tZSBwcm90b3R5cGVzL3R5cGVkZWZzIHRvIG1zaS5oCgktIGltcGxlbWVudHMgc29tZSBBIC0+IFcgY2FsbHMgKFcgY2FsbHMgbXVzdCBiZSBpbXBsZW1lbnRlZCkKCgkqIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYywgZGxscy9kM2Q4L3NoYWRlci5jLCBkbGxzL21hcGkzMi9wcm9wLmMsCgkgIGRsbHMvbWFwaTMyL3V0aWwuYywgZG9jdW1lbnRhdGlvbi9idWdzLnNnbWwsIGluY2x1ZGUvbWFwaXRhZ3MuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQXNzb3J0ZWQgc3BlbGxpbmcgZml4ZXMuCgoJKiBkbGxzL3dpbm1tL3dpbmVhbHNhL2F1ZGlvLmM6IE92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJRml4ZWQgYSBjb3VwbGUgb2YgYnVncy4KCgkqIGRvY3VtZW50YXRpb24vZGVidWdnaW5nLnNnbWw6CglBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CglFeHBsYWluIGhvdyB0byByZWR1Y2UgbG9nIHNpemUsIHVzaW5nIHBpcGVzLgoKMjAwNC0wNC0yNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMveDExZHJ2L3dpbmRvdy5jLCBkbGxzL3gxMWRydi93aW5wb3MuYywgZGxscy94MTFkcnYveDExZHJ2Lmg6CglSZXBsYWNlIGVtcHR5IHdpbmRvdyByZWN0IGNoZWNrcyBieSBhIG5ldyBYMTFEUlZfaXNfd2luZG93X3JlY3RfbWFwcGVkCglmdW5jdGlvbiBzbyB0aGF0IHdlIGNhbiByZXVzZSB0aGF0IHN1cHBvcnQgZm9yIG9mZi1zY3JlZW4gd2luZG93cy4KCgkqIGRvY3VtZW50YXRpb24vb2xlLnNnbWw6IFdpbGxpYW0gTGFodGkgPGNvbXB1dGVybWFuNDEzQGV6cnMuY29tPgoJRml4ZWQgdHlwby4KCgkqIGRsbHMvbXByL3B3Y2FjaGUuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50ZWQgV05ldEVudW1DYWNoZWRQYXNzd29yZHMuCgoJKiBkbGxzL29sZWF1dDMyL3Rlc3RzL3NhZmVhcnJheS5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUZpeCBmYWlsdXJlcyB1bmRlciB3aW4yay4KCgkqIGRsbHMvb2xlYXV0MzIvdGVzdHMvdmFydGVzdC5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCVVwZGF0ZSBWYXJYb3IsVmFyQWJzLFZhck5vdCBmb3IgYWxsIGlucHV0IHR5cGVzLgoJVGVzdCBWYXJPcjsgZml4IGEgZmFpbHVyZSB3aXRoIGxhdGVyIG9sZWF1dDMyIHZlcnNpb25zLgoJU3BlZWQgdXAgY29tcGlsYXRpb24gYnkgc2hhcmluZyBmYWlsdXJlIHN0cmluZ3MuCgoJKiBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYzogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUltcGxlbWVudCBWYXJPci4KCUZpeGVzIGZvciB1bnRlc3RlZCBWYXJYb3IsVmFyQWJzLFZhck5vdCBpbnB1dCB0eXBlcy4KCgkqIHdpbmRvd3MvbWRpLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglCZWZvcmUgcmVtb3ZpbmcgbWVudSBpdGVtcyBpbiB0aGUgTURJIFdpbmRvdyBtZW51IGNoZWNrIHdoZXRoZXIgYSBtZW51CglpdGVtIGZvbGxvd2luZyBhIHNlcGFyYXRvciBoYXMgb3VyICJtYWdpYyIgdmFsdWUuCgoJKiBkbGxzL3NobHdhcGkvdXJsLmMsIGRsbHMvc2hsd2FwaS90ZXN0cy9wYXRoLmM6CglLZXZpbiBLb2x0emF1IDxrZXZpbkBwbG9wLm9yZz4KCUFsbG93IFVybENvbWJpbmUgdG8gY2FsY3VsYXRlIHNpemUgb2YgcmVxdWlyZWQgYnVmZmVyLgoKCSogZGxscy93aW5tbS90ZXN0cy93YXZlLmMsIGRsbHMvd2lubW0vd2luZWFsc2EvYXVkaW8uYzoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglSZXN0b3JlIHRoZSAyIE1IeiBzYW1wbGUgcmF0ZSB0ZXN0IGFuZCBmaXggdGhlIHdpbmVhbHNhIGRyaXZlciBmb3IKCXJlYXNvbmFibGUgbGltaXRzLgoKCSogZGxscy9rZXJuZWwvdm9sdW1lLmM6CglEZWZpbmVEb3NEZXZpY2VXOiBpbXBsZW1lbnRlZCB0aGUgREREX1JFTU9WRV9ERUZJTklUSU9OIGZsYWcuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9kaXJlY3RvcnkuYywgZGxscy9rZXJuZWwvdGVzdHMvZmlsZS5jLAoJICBkbGxzL2tlcm5lbC90ZXN0cy9wYXRoLmM6CglSZW1vdmVkIHRvZG9fd2luZSBmcm9tIHNvbWUgdGVzdHMgdGhhdCBzdWNjZWVkIG5vdy4KCgkqIGRsbHMva2VybmVsL3BhdGguYywgZmlsZXMvZGlyZWN0b3J5LmMsIHNlcnZlci9mZC5jOgoJUmVpbXBsZW1lbnRlZCBDcmVhdGVEaXJlY3RvcnlXIGFuZCBSZW1vdmVEaXJlY3RvcnlXIHVzaW5nIG50ZGxsCglmdW5jdGlvbnMuCgoJKiBkbGxzL2tlcm5lbC9wYXRoLmMsIGRsbHMva2VybmVsL3ZvbHVtZS5jLCBkbGxzL250ZGxsL2RpcmVjdG9yeS5jLAoJICBkbGxzL250ZGxsL2ZpbGUuYywgaW5jbHVkZS93aW50ZXJubC5oOgoJUGFzcyB0aGUgY3JlYXRpb24gZGlzcG9zaXRpb24gdG8gd2luZV9udF90b191bml4X2ZpbGVfbmFtZSBzbyB0aGF0IGl0CgljYW4gcmV0dXJuIHRoZSBjb3JyZWN0IGVycm9yIGNvZGUgaW4gYWxsIGNhc2VzLgoJQ2hhbmdlZCBNb3ZlRmlsZUV4VyB0byB1c2Ugd2luZV9udF90b191bml4X2ZpbGVfbmFtZSB0byBhdm9pZAoJY29tcHV0aW5nIHRoZSBOVCBuYW1lIHR3aWNlLgoJRml4ZWQgY3Jhc2ggaW4gR2V0RHJpdmVUeXBlVyB3aXRoIGEgTlVMTCByb290LgoKMjAwNC0wNC0yNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsX1VrLnJjLCBkbGxzL2NvbWN0bDMyL3JzcmMucmMsCgkgIGRsbHMvY29tbWRsZy9jZGxnX1VrLnJjLCBkbGxzL2NvbW1kbGcvcnNyYy5yYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfVWsucmMsIGRsbHMvc2hlbGwzMi9zaHJlcy5yYywKCSAgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzIucmMsIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX1VrLnJjOgoJSWx5YSBLb3JuaXlrbyA8a19pbHlhQHVrci5uZXQ+CglBZGRlZCBVa3JhaW5pYW4gdHJhbnNsYXRpb25zLgoKCSogZGxscy9kM2Q4L2QzZDhfcHJpdmF0ZS5oLCBkbGxzL2QzZDgvZGV2aWNlLmMsIGRsbHMvZDNkOC9kcmF3cHJpbS5jLAoJICBkbGxzL2QzZDgvc3VyZmFjZS5jLCBkbGxzL2QzZDgvdXRpbHMuYzoKCUNocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUltcGxlbWVudGVkIGZhc3QgcmVuZGVyaW5nIHRvIGEgdGV4dHVyZSB1c2luZyBnbENvcHlUZXhJbWFnZTJECglGaXhlZCBTZXRWaWV3cG9ydC4KCUZpeGVkIFNldFJlbmRlclRhcmdldCAoYmFzZWQgb24gSmFzb24gRWRtZWFkZXMnIHdvcmspLgoJSW1wcm92ZWQgdHJhY2UuCgoJKiBkbGxzL3JwY3J0NC9ycGNfYmluZGluZy5jLCBkbGxzL3JwY3J0NC9ycGNfYmluZGluZy5oLAoJICBkbGxzL3JwY3J0NC9ycGNfZGVmcy5oLCBkbGxzL3JwY3J0NC9ycGNfbWVzc2FnZS5jLAoJICBkbGxzL3JwY3J0NC9ycGNfbWVzc2FnZS5oLCBkbGxzL3JwY3J0NC9ycGNfc2VydmVyLmM6CglGaWxpcCBOYXZhcmEgPHhuYXZhcmFAdm9sbnkuY3o+CglNYWtlIFJQQ1JUNCB1c2UgV2luZG93cyBjb21wYXRpYmxlIHByb3RvY29sIChEQ0UgdjUuMCkgZm9yCgljb21tdW5pY2F0aW9uLgoKCSogaW5jbHVkZS90Y2hhci5oOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRGVmaW5lIF9UW1VTWF0/Q0hBUi9fVElOVC9UQ0hBUiB0eXBlcywgZm9yIGNvbXBhdGliaWxpdHkuCglEbyBub3QgZGVwZW5kIG9uIG90aGVyIGZpbGVzIGJlaW5nIGluY2x1ZGVkIGZpcnN0LgoJSGF2ZSB0aGUgc2FtZSBpbmNsdWRlIGdyYXBoIGFzIHRoZSBNUyBoZWFkZXJzLgoJUHJvdGVjdCBhZ2FpbnN0IHRyeWluZyB0byB1c2UgbGliYyB3aGVuIG5vdCBwb3NzaWJsZS4KCUNsZWFudXBzLgoKCSogaW5jbHVkZS9tc3ZjcnQvY3R5cGUuaCwgaW5jbHVkZS9tc3ZjcnQvc3RkaW8uaCwKCSAgaW5jbHVkZS9tc3ZjcnQvd2NoYXIuaCwgaW5jbHVkZS9tc3ZjcnQvd2N0eXBlLmg6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRml4IHRoZSBfV0NUWVBFX1RfREVGSU5FRCBzZW50cnkgZm9yIGNvbXBhdGliaWxpdHkuCgoJKiBkbGxzL3dpbm1tL3dpbmVhbHNhL2F1ZGlvLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJTWFrZSBzdXJlIHRoZSAnYWxzYSBoYW5kbGUnIGlzIGluaXRpYWxpemVkIHRvIE5VTEwgYmVmb3JlIGNhbGxpbmcKCXNuZF9wY21fb3BlbigpLiBPdGhlcndpc2UgaWYgaXQgZmFpbHMgd2UgZ2V0IGEgY3Jhc2ggdHJ5aW5nIHRvIGNsb3NlCglhbiBpbnZhbGlkIGFsc2EgaGFuZGxlLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvcGlwZS5jOiBEdWFuZSBDbGFyayA8ZGNsYXJrQGFrYW1haWwuY29tPgoJQWRkIHRlc3Rpbmcgb2YgUGVla05hbWVkUGlwZSwgbXVsdGlwbGUgd3JpdGVzLCBhbmQgbWVzc2FnZSBtb2RlLgoKCSogZGxscy93aW5tbS90ZXN0cy93YXZlLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+Cgl3YXZlT3V0R2V0RGV2Q2FwcygtMS4uLikgbXVzdCByZXR1cm4gdGhlIGNhcGFiaWxpdGllcyBvZiB0aGUgV2F2ZQoJbWFwcGVyLgoJRFJWX1FVRVJZREVWSUNFSU5URVJGQUNFIGlzIG5vdCBzdXBwb3J0ZWQgb24gYWxsIFdpbmRvd3MgdmVyc2lvbnMuCglDaGVjayB0aGUgbGVuZ3RoIHJldHVybmVkIGJ5IERSVl9RVUVSWURFVklDRUlOVEVSRkFDRVNJWkUgYW5kIGZpeAoJbWVtb3J5IGxlYWsuCglTb21lIFdpbmRvd3Mgc291bmQgZHJpdmVycyBhbGxvdyB3aWxkIGZyZXF1ZW5jaWVzIHN1Y2ggYXMgdGhlIDJNSHoKCW9uZS4gU28gbW9kaWZ5IHRoaXMgdGVzdCB0byB1c2UgYW4gaW52YWxpZCBudW1iZXIgb2YgYml0cyBwZXIgc2FtcGxlCglpbnN0ZWFkIChob3BlZnVsbHkgdGhhdCB3aWxsIGZhaWwgcmVhbGx5IGV2ZXJ5d2hlcmUpLgoKCSogdG9vbHMvd2lkbC9wYXJzZXIubCwgdG9vbHMvd2lkbC9wYXJzZXIueSwgdG9vbHMvd2lkbC93aWRsdHlwZXMuaDoKCUZpbGlwIE5hdmFyYSA8eG5hdmFyYUB2b2xueS5jej4KCU1ha2Ugd2lkbCBwYXJzZSB0aGUgJ3RyYW5zbWl0X2FzJyBhbmQgJ2VuZHBvaW50JyBrZXl3b3Jkcy4KCgkqIGRsbHMvc2hlbGwzMi9zaGxleGVjLmMsIGRsbHMvdXNlci9kZGUvZGRlX3ByaXZhdGUuaCwKCSAgZGxscy91c2VyL2RkZS9taXNjLmMsIGRsbHMvdXNlci9kZGUvc2VydmVyLmMsIGluY2x1ZGUvZGRlbWwuaDoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglGaXggdGhlIERERSBQRk5DQUxMQkFDSyBwcm90b3R5cGUuCgoJKiBkbGxzL2QzZDgvZGV2aWNlLmMsIGRsbHMvZDNkOC9zaGFkZXIuYywgZGxscy9kM2Q4L3N0YXRlYmxvY2suYywKCSAgZGxscy9kM2Q4L3N1cmZhY2UuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgc29tZSBzdHJpY3QgYWxpYXNpbmcgaXNzdWVzIGluIGRsbHMvZDNkOC4KCUluY29ycG9yYXRlZCBidWdmaXggZnJvbSBDaHJpc3RpYW4gQ29zdGEgaW4gdnNoYWRlcl9leHBwLgoKCSogZG9jdW1lbnRhdGlvbi9kZWJ1Z2dlci5zZ21sOiBJdmFuIExlbyBNdXJyYXktU21pdGggPHB1b3RpQGlud2luZC5pdD4KCVJlcGxhY2UgLS1kZWJ1Z21zZyBieSBXSU5FREVCVUcuCgoJKiBkbGxzL2QzZDgvZDNkY29yZV9nbC5oLCBkbGxzL2QzZDgvZGV2aWNlLmMsIGRsbHMvZDNkOC9kaXJlY3R4LmMsCgkgIGRsbHMvZDNkOC9zdXJmYWNlLmMsIGRsbHMvZDNkOC91dGlscy5jOgoJUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CgktIGltcGxlbWVudCBTZXRSZW5kZXJTdGF0ZSBEM0RSU19GT0dFTkFCTEUvRDNEUlNfUkFOR0VGT0dFTkFCTEUKCS0gaW1wbGVtZW50IFNldFJlbmRlclN0YXRlIEQzRFJTX1JBTkdFRk9HRU5BQkxFCgktIGZpeCBTZXRSZW5kZXJTdGF0ZSBEM0RSU19GT0dWRVJURVhNT0RFIENhcHMvRGV0ZWN0aW9uIHRyYWNlcwoJLSBmaXggSURpcmVjdDNEODo6R2V0QWRhcHRlcklkZW50aWZpZXIgdG8gdXNlIEZpbGxHTENhcHMgYW5kIHByb3ZpZGUKCSAgbW9yZSBleGFjdCBpbmZvcyAoZHJpdmVyIHZlcnNpb25zLCB2ZW5kb3IsIC4uLikKCS0gc3BsaXQgRmFrZSBHTCBDb250ZXh0IGNyZWF0aW9uIGZyb20gR2V0RGV2aWNlQ2FwcyBmb3IgZXh0ZXJuYWwgdXNlCgktIGFkZCBhIG5ldyBjaGFubmVsIChkM2RfY2FwcykgZm9yIGFsbCBJRGlyZWN0M0Q4IENhcHMvZGV0ZWN0aW9uIHRyYWNlcwoJLSByZW5hbWUgZnBzIGNoYW5uZWwgdG8gZDNkX2ZwcwoJLSBoaWdoIHVzZSBvZiBydW50aW1lIGRldGVjdGVkIE9wZW5HTCBDYXBzIGluc3RlYWQgb2YgZGVmaW5lcwoJLSB1cGRhdGUgc3VwcG9ydGVkIENhcHMgdXNpbmcgcnVudGltZSBkZXRlY3Rpb24KCgkqIGRsbHMvc2hlbGwzMi9hdXRvY29tcGxldGUuYzoKCU1heGltZSBCZWxsZW5n6SA8bWF4aW1lLmJlbGxlbmdlQGxhcG9zdGUubmV0PgoJSW1wbGVtZW50ZWQgdGhlIEFDT19BVVRPU1VHR0VTVCwgQUNPX0FVVE9BUFBFTkQsIEFDT19VUERPV05LRVlEUk9QU0xJU1QKCXN0eWxlcy4KCgkqIGRsbHMveDExZHJ2L2JpdGJsdC5jOiBKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglJZiBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIGFyZSB0aGUgc2FtZSBvYmplY3QsIGRvbid0IGxvY2sgdGhlIG9iamVjdAoJdHdpY2UgYXMgaXQgd2lsbCBvbmx5IGJlIHVubG9ja2VkIG9uY2UuCgoJKiBkbGxzL3dpbmVkM2QvdmVydGV4c2hhZGVyLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgcG9zaXRpb24gb2YgdG1wLmYgYXNzaWduZWQgbGlrZSBpbiBkbGxzL2QzZDgvc2hhZGVyLmMuCglGaXhlZCBzdHJpY3QgYWxpYXNpbmcgcHJvYmxlbS4KCgkqIGRsbHMvd2luZWRvcy9pbnQyMS5jOiBKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglJbXBsZW1lbnQgRE9TNyBjYW5vbmljYWxpemUgcGF0aCBmdW5jdGlvbiBhcyBhIGNvbnZlcnNpb24gdG8gc2hvcnQKCWZpbGUgbmFtZS4KCgkqIHdpbmRvd3MvbWRpLmM6IER1YW5lIENsYXJrIDxkY2xhcmtAYWthbWFpbC5jb20+CglBZGQgdHJhY2luZyBtZXNzYWdlcyB0byBNREkuCgoJKiBkbGxzL3dpbm1tL3dpbmVqYWNrL2phY2suYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBhIHdhcm5pbmcgaW4gSkFDS19kcnZMb2FkKCkuCgoJKiBkbGxzL3dpbm1tL3dpbmVhbHNhL2F1ZGlvLmMsIGRsbHMvd2lubW0vd2luZWFydHMvYXVkaW8uYywKCSAgZGxscy93aW5tbS93aW5lYXVkaW9pby9hdWRpby5jLCBkbGxzL3dpbm1tL3dpbmVqYWNrL2F1ZGlvLmMsCgkgIGRsbHMvd2lubW0vd2luZW5hcy9hdWRpby5jLCBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglXZSBvbmx5IHN1cHBvcnQgOCBhbmQgMTYgYml0IHNvdW5kIHNvIHdlIHNob3VsZCByZWplY3QgdGhlIG90aGVyCglmb3JtYXRzLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGcxNi5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUlmIGxwc3RyVGl0bGUgaXMgTlVMTCwgc2V0IGl0IHRvIGVpdGhlciAnT3BlbiBGaWxlJyBvciAnU2F2ZSBhcycuCglDb25zdGlmeSB0aGUgc3RyaW5nIGNvbnN0YW50cy4KCgkqIGRsbHMvdXNlci9kZGUvY2xpZW50LmMsIGRsbHMvdXNlci9kZGUvc2VydmVyLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQ2FsbCBhcHByb3ByaWF0ZSBEZWZXaW5kb3dQcm9jIGluIERERSBjbGllbnQvc2VydmVyIHdpbmRvdyBwcm9jcwoJZGVwZW5kaW5nIG9uIHdoZXRoZXIgYSB3aW5kb3cgcHJvYyBpcyB1bmljb2RlIG9yIEFOU0kuCgoyMDA0LTA0LTIzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9rZXJuZWwvdm9sdW1lLmMsIGZpbGVzL2RyaXZlLmM6CglSZWltcGxlbWVudGVkIEdldExvZ2ljYWxEcml2ZXMsIEdldExvZ2ljYWxEcml2ZVN0cmluZ3MgYW5kCglHZXREcml2ZVR5cGUgdXNpbmcgdGhlIG5ldyBzeW1saW5rIG1lY2hhbmlzbS4KCU1hZGUgR2V0RHJpdmVUeXBlIGF0dGVtcHQgdG8gYXV0b2RldGVjdCB0aGUgdHlwZSBpZiBub3Qgc3BlY2lmaWVkIGluCgl0aGUgcmVnaXN0cnkuCgoJKiBwcm9ncmFtcy93aW5ldGVzdC9tYWluLmM6IEZlcmVuYyBXYWduZXIgPHdmZXJpQGFmYXZhbnQuZWx0ZS5odT4KCVJlbW92ZSB0aGUgd2luZWxvYWRlciB2YXJpYWJsZS4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL21hcGkzMi90ZXN0cy8uY3ZzaWdub3JlLAoJICBkbGxzL21hcGkzMi90ZXN0cy9NYWtlZmlsZS5pbiwgZGxscy9tYXBpMzIvdGVzdHMvcHJvcC5jLAoJICBkbGxzL21hcGkzMi90ZXN0cy91dGlsLmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJVGVzdHMgZm9yIG5ld2x5IGFkZGVkIE1BUEkgZnVuY3Rpb25zLgoKCSogZGxscy9tYXBpMzIvTWFrZWZpbGUuaW4sIGRsbHMvbWFwaTMyL21hcGkzMi5zcGVjLAoJICBkbGxzL21hcGkzMi9tYXBpMzJfbWFpbi5jLCBkbGxzL21hcGkzMi9wcm9wLmMsIGRsbHMvbWFwaTMyL3V0aWwuYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglJbXBsZW1lbnQgTUFQSSBwcm9wZXJ0eSAmIHV0aWxpdHkgZnVuY3Rpb25zLgoKCSogZGxscy91dWlkL3V1aWQuYywgaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9tYXBpY29kZS5oLAoJICBpbmNsdWRlL21hcGlkZWZzLmgsIGluY2x1ZGUvbWFwaWd1aWQuaCwgaW5jbHVkZS9tYXBpdGFncy5oLAoJICBpbmNsdWRlL21hcGl1dGlsLmgsIGluY2x1ZGUvbWFwaXZhbC5oLCBpbmNsdWRlL21hcGl4Lmg6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJVXBkYXRlL0FkZCBNQVBJIGhlYWRlcnMuCgoJKiBkbGxzL250ZGxsL2Nkcm9tLmMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZmlsZXMvZHJpdmUuYywKCSAgbWlzYy9yZWdpc3RyeS5jOgoJTW92ZWQgY3JlYXRpb24gb2YgdGhlIENEUk9NIHJlZ2lzdHJ5IGtleXMgaW50byB0aGUgcmVnaXN0cnkgbG9hZGluZwoJY29kZS4KCgkqIGRsbHMvYWR2YXBpMzIvcmVnaXN0cnkuYywgZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jLAoJICBkbGxzL2FkdmFwaTMyL3NlcnZpY2UuYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglEb2N1bWVudGF0aW9uIGZpeGVzLgoKCSogZGxscy9zaGVsbDMyL3NobGV4ZWMuYywgZGxscy91c2VyL2RkZS9taXNjLmMsCgkgIGRsbHMvdXNlci90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL3VzZXIvdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvdXNlci90ZXN0cy9kZGUuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglGaXggYSBidWcgaW4gU2hlbGxFeGVjdXRlIHdoaWNoIGNhbGxlZCBEZGVDcmVhdGVTdHJpbmdIYW5kbGVXIHdpdGggYQoJd3JvbmcgcGFyYW1ldGVyLiBSZXZlcnQgcHJldmlvdXMgZXJyb25lb3VzIGZpeC4KCgkqIGRsbHMvb2xlYXV0MzIvdGVzdHMvdmFydHlwZS5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCVRlc3QgQ2xlYXJDdXN0RGF0YSgpIGFuZCBVSU5ULT5JNCBjb252ZXJzaW9uLgoKCSogZGxscy9vbGVhdXQzMi9vbGVhdXQzMi5zcGVjLCBkbGxzL29sZWF1dDMyL3R5cGVsaWIyLmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJSW1wbGVtZW50IENsZWFyQ3VzdERhdGEuCgoJKiBkbGxzL29sZWF1dDMyL3ZhcnR5cGUuYzogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUNoZWNrIHRoZSBjb3JyZWN0IHBhcmFtIGZvciAyIERFQ0lNQUwgb3BlcmF0aW9ucy4KCgkqIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJQ29udmVyc2lvbiBmcm9tIFZUX1VJTlQgdG8gVlRfSTQgaWdub3JlcyBvdmVyZmxvdy4KCgkqIHRvb2xzL2MybWFuLnBsOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJQWNjZXB0IGV4cG9ydHMgd2l0aCAnQCcgaW4gdGhlaXIgbmFtZS4KCUxpbmsgdG8gd2luZWhxIHNvdXJjZSBmb3IgaW1wbGVtZW50ZWQgZnVuY3Rpb25zLgoKCSogZGxscy9kM2Q4L3NoYWRlci5jOiBSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCURvbid0IHRyeSB0byBjcmVhdGUgSFcgVmVydGV4IFNoYWRlcnMgd2hlbiBjb2RlIGlzIE5VTEwgKGllIHVzZQoJZGVmYXVsdCByZW5kZXJpbmcgY29kZSB1c2luZyBWZXJ0ZXhTaGFkZXJEZWNsYXJhdGlvbiBmb3IgZGF0YXMpIGFzIEdMCglkcml2ZXJzIGRvbid0IGxpa2UgZW1wdHkgcHJvZ3JhbXMuCgoJKiBkbGxzL2QzZDgvZGlyZWN0eC5jOiBSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCUZpeCBzb21lIHJhbmRvbSBjcmFzaGVzIGZvdW5kIG9uIHNvbWUgZ2FtZXMgaW4gdGhlIG5ldyBjb2RlIChsaXZlCglHTFgvR0wgZHJpdmVycykuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWxfcHJpdmF0ZS5oLCBkbGxzL2tlcm5lbC92b2x1bWUuYywKCSAgZGxscy9udGRsbC9kaXJlY3RvcnkuYywgZmlsZXMvZmlsZS5jOgoJTW92ZWQgc3VwcG9ydCBmb3Igb3BlbmluZyBET1MgZGV2aWNlIGZpbGVzIHRvIG50ZGxsLgoKCSogcHJvZ3JhbXMvd2luZXRlc3QvbWFpbi5jOiBGZXJlbmMgV2FnbmVyIDx3ZmVyaUBhZmF2YW50LmVsdGUuaHU+CglVbmNvbmRpdGlvbmFsbHkgdGVzdCBXaW5lIHByZXNlbmNlLgoJQWRkIHRoZSBCdWlsZCBpbmZvIHNlY3Rpb24gdG8gdGhlIG91dHB1dC4KCgkqIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGRsbHMva2VybmVsL3BhdGguYywKCSAgZGxscy9udGRsbC9kaXJlY3RvcnkuYywgZGxscy9udGRsbC9maWxlLmMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywKCSAgZGxscy9udGRsbC9udGRsbF9taXNjLmgsIGluY2x1ZGUvd2ludGVybmwuaCwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvbWFpbi5jOgoJTWFrZSBESVJfbnRfdG9fdW5peCByZXR1cm4gU1RBVFVTX05PX1NVQ0hfRklMRSBpbnN0ZWFkIG9mCglTVEFUVVNfT0JKRUNUX05BTUVfTk9UX0ZPVU5EIHRvIGluZGljYXRlIHRoYXQgdGhlIGxhc3QgY29tcG9uZW50CglkaWRuJ3QgZXhpc3QgdG8gYWxsb3cgZGlzdGluZ3Vpc2hpbmcgaXQgZnJvbSBsZWdpdGltYXRlIGVycm9ycy4KCUV4cG9ydCBpdCBmcm9tIG50ZGxsLCByZW5hbWVkIHRvIHdpbmVfbnRfdG9fdW5peF9maWxlX25hbWUuCgoJKiBmaWxlcy9maWxlLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglVc2UgYSBwYXNzZWQgU2VjdXJpdHlEZXNjcmlwdG9yIGluIENyZWF0ZUZpbGVXLgoKCSogZGxscy9vbGVhdXQzMi90ZXN0cy92YXJ0ZXN0LmM6IENocmlzIE1vcmdhbiA8Y21vcmdhbkBhbHVtLndwaS5lZHU+CglTa2lwIG92ZXIgbW9zdCBvZiB0aGUgdW51c2VkIHZhcmlhbnQgdHlwZXMgdG8gc3BlZWQgdXAgdGhlIHZhcmlhbnQKCXRlc3RzLgoKCSogbWlzYy9yZWdpc3RyeS5jOgoJVXNlIE50T3BlbkZpbGUgaW5zdGVhZCBvZiBGSUxFX0NyZWF0ZUZpbGUgdG8gb3BlbiBVbml4IGZpbGVzLgoKCSogcHJvZ3JhbXMvd2luZXRlc3QvbWFpbi5jOiBKYWtvYiBFcmlrc3NvbiA8amFrb3ZAdm1saW51eC5vcmc+CglBZGRlZCBXaW5lIGRldGVjdGlvbi4KCjIwMDQtMDQtMjIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3NoZWxsMzIvc2hsZXhlYy5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJRGRlQ2xpZW50VHJhbnNhY3Rpb24gcmV0dXJucyB6ZXJvIG9uIGVycm9yLgoKCSogZGxscy91c2VyL2RkZS9taXNjLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglVbmljb2RlIHZlcnNpb24gb2YgRGRlQ3JlYXRlU3RyaW5nSGFuZGxlIHNob3VsZCBpZ25vcmUgY29kZXBhZ2UgcGFyYW1ldGVyLgoKCSogZGxscy9kM2Q4L2QzZGNvcmVfZ2wuaCwgZGxscy9kM2Q4L2RpcmVjdHguYzoKCVJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJLSBtb3JlIEZJWE1FIC0+IFRSQUNFCgktIGJlZ2luIHZlbmRvci9jYXJkIGRldGVjdGlvbiAodmVyc2lvbnMvbmFtZXMpCgoJKiBpbmNsdWRlL3dpbmUvcG9ydC5oOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkIHNvbWUgY29tcGF0aWJpbGl0eSBtYWNyb3MuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9maWxlLmM6IEpha29iIEVyaWtzc29uIDxqYWtvdkB2bWxpbnV4Lm9yZz4KCVdoZW4gdGhlIFdpbmRvd3MgZGlyZWN0b3J5IHdhcyBzb21ldGhpbmcgZWxzZSB0aGFuIEM6XFdJTkRPV1MKCXRlc3RfR2V0VGVtcEZpbGVOYW1lQSgpIGZhaWxlZC4KCgkqIHByb2dyYW1zL3dpbmV0ZXN0L21haW4uYywgcHJvZ3JhbXMvd2luZXRlc3QvdXRpbC5jLAoJICBwcm9ncmFtcy93aW5ldGVzdC93aW5ldGVzdC5oOgoJRmVyZW5jIFdhZ25lciA8d2ZlcmlAYWZhdmFudC5lbHRlLmh1PgoJLSBjb25zdGlmeSBzb21lIHN0cmluZ3MKCS0gaW50cm9kdWNlIC11IG9wdGlvbiB0byB3cml0ZSBhcmNoaXZlIHVybCBpbnRvIHRoZSByZXBvcnQKCS0gYnVtcCBvdXRwdXQgZm9ybWF0IHZlcnNpb24gdG8gMwoKCSogZmlsZXMvZmlsZS5jOiBNYWtlIENyZWF0ZUZpbGVXIHVzZSBOdENyZWF0ZUZpbGUuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9NYWtlZmlsZS5pbiwKCSAgZGxscy9oaGN0cmwub2N4Ly5jdnNpZ25vcmUsIGRsbHMvaGhjdHJsLm9jeC9NYWtlZmlsZS5pbiwKCSAgZGxscy9oaGN0cmwub2N4L2hoY3RybC5jLCBkbGxzL2hoY3RybC5vY3gvaGhjdHJsLm9jeC5zcGVjOgoJS3J6eXN6dG9mIEZvbHRtYW4gPGtmb2x0bWFuQHBvcnRhbC5vbmV0LnBsPgoJQWRkZWQgZHVtbXkgaGhjdHJsLm9jeCB3aXRoIHN0dWJzIG9mIEh0bWxIZWxwQSBhbmQgSHRtbEhlbHBXLgoKCSogdG9vbHMvd2lkbC9oZWFkZXIuYywgdG9vbHMvd2lkbC9oZWFkZXIuaCwgdG9vbHMvd2lkbC9wYXJzZXIueSwKCSAgdG9vbHMvd2lkbC93aWRsdHlwZXMuaDoKCUZpbGlwIE5hdmFyYSA8eG5hdmFyYUB2b2xueS5jej4KCU1ha2Ugd2lkbCBjb21waWxlIHdpdGhvdXQgbW9zdCBvZiBXaW5kb3dzL1dpbmUgaGVhZGVycywgc28gaXQgY2FuIGJlCglyZXVzZWQgYnkgb3RoZXIgcHJvamVjdHMuCgoyMDA0LTA0LTIxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy91c2VyL3VzZXJfbWFpbi5jOgoJUHJlbG9hZCBrZXlib2FyZC5kcnYgd2hlbiBXaW5kb3dzIHZlcnNpb24gaXMgV2luOXguCgoJKiBkbGxzL2tlcm5lbC9wYXRoLmMsIGZpbGVzL2ZpbGUuYzoKCUNoYW5nZWQgTW92ZUZpbGVFeCB0byB1c2UgbnRkbGwgZnVuY3Rpb25zLCBhbmQgbW92ZWQgaXQgdG8KCWRsbHMva2VybmVsL3BhdGguYy4KCgkqIGRsbHMvbnRkbGwvZGlyZWN0b3J5LmMsIGRsbHMvbnRkbGwvZmlsZS5jOgoJUHJvcGVybHkgc2V0IElPX1NUQVRVU19CTE9DSy5JbmZvcm1hdGlvbiBpbiBOdENyZWF0ZUZpbGUuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglEZWxldGluZyBjb2x1bW4gemVybyBzaG91bGQgb25seSBkZWxldGUgdGhlIGNvbHVtbiBhbmQgbm90IHRoZSBpdGVtCglkYXRhLgoKCSogZGxscy9uZXRhcGkzMi9hcGlidWYuYywgZGxscy9uZXRhcGkzMi90ZXN0cy9hcGlidWYuYzoKCUp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCUZpeCBOZXRBcGlCdWZmZXJSZWFsbG9jYXRlIGFuZCB0ZXN0cyBiYXNlZCBvbiByZXN1bHRzIGZyb20gd2luZXRlc3QuCgoJKiBkbGxzL2QzZDgvZGlyZWN0eC5jOiBDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglDb252ZXJ0ZWQgc29tZSBGSVhNRXMgaW50byBUUkFDRXMuCgoJKiBkbGxzL2NvbWN0bDMyL21vbnRoY2FsLmM6IEtyenlzenRvZiBGb2x0bWFuIDxrZm9sdG1hbkBwb3J0YWwub25ldC5wbD4KCS0gbmV4dC9wcmV2IG1vbnRoIGRvbid0IHN0aWNrIGFueW1vcmUKCS0gbWluL21heCByYW5nZXMgaW5pdGlhbGl6ZWQgdG8gc29tZSByZWFzb25hYmxlIHZhbHVlcwoJLSBmaXhlZCBzb21lIGJ1Z3MgY2F1c2VkIGJ5IHJldmVyc2VkIG9yZGVyIG9mIGFyZ3VtZW50cyBvZiBNT05USENBTF9Db3B5VGltZQoJLSB1cGRhdGUgY3VycmVudCBtb250aC95ZWFyIGFmdGVyIHNldHRpbmcgY3VycmVudCBkYXRlCgktIGNoYW5naW5nIG1vbnRocyBldGMgZG9lc24ndCBzZW5kIE1DTl9TRUxFQ1QgKHdoaWNoIGNvdWxkIGJlIHNlbnQKCSAgb25seSBhZnRlciBhIHBhcnRpY3VsYXIgZGF5IHdhcyBjbGlja2VkKQoJLSBjaGFuZ2VkIChoaXQgJiYgTUNIVF9DQUxFTkRBUkRBVEUpIHRvIChoaXQgPT0gTUNIVF9DQUxFTkRBUkRBVEUpCgoJKiBkbGxzL2NvbWN0bDMyL2RhdGV0aW1lLmM6IEtyenlzenRvZiBGb2x0bWFuIDxrZm9sdG1hbkBwb3J0YWwub25ldC5wbD4KCS0gbWFrZSBtb250aGNhbCBhIGNoaWxkIG9mIGRhdGV0aW1lIChpdCB3YXMgYSBzaWJsaW5nIGJlZm9yZSwgY2F1c2luZwoJICBjb21wbGV0ZWx5IGluY29ycmVjdCBtZXNzYWdlIGZsb3cpCgktIHVwZGF0ZSBtb250aGNhbCBhZnRlciBkYXRlIGNoYW5nZSBpbiBkYXRldGltZQoJLSBjaG9vc2UgZGlmZmVyZW50IGNvb3JkaW5hdGVzIHdoZW4gRFRTX1NIT1dOT05FIGlzIG5vdCB1c2VkCgktIGVtYmVkZGVkIG1vbnRoY2FsIGlzIG5vdyAyMDAgcGl4ZWxzIHdpZGUKCS0gc2VsZWN0aW5nIGEgZGF5IGluIGVtYmVkZGVkIG1vbnRoY2FsIHVwZGF0ZXMgdGhlIGRhdGV0aW1lIGFuZCBoaWRlcwoJICB0aGUgbW9udGhjYWwKCS0gY2hhbmdpbmcgbW9udGhzL3llYXJzIGJ5IGNsaWNraW5nIG1vbnRoIG5hbWUveWVhciBpbiB0aXRsZSBiYXIgd29ya3MKCS0gZW1iZWRkZWQgbW9udGggY2FsZW5kYXIgaXMgY29ycmVjdGx5IGRlc3Ryb3llZCAoaXQgdXNlZCB0byBzdGljayBvbgoJICB0aGUgc2NyZWVuIGxvbmcgYWZ0ZXIgdGhlIGRhdGV0aW1lJ3MgY29udGFpbmVyIHdhcyBjbG9zZWQpCgoJKiBvYmplY3RzL2VuaG1ldGFmaWxlLmM6IERhdmUgQmVsYW5nZXIgPGRhdmUuYmVsYW5nZXJAY2ltbWV0cnkuY29tPgoJRml4IGJhZCBFTUYgZXh0ZW50cyBpbiBTZXRXaW5NZXRhRmlsZUJpdHMuCgoJKiBkbGxzL2tlcm5lbC9jcHUuYzogRW1tYW51ZWwgTWFpbGxhcmQgPGUucnN6QGxpYmVydHlzdXJmLmZyPgoJR2V0U3lzdGVtSW5mbyBzdXBwb3J0IGZvciBEYXJ3aW4uCgoJKiBpbmNsdWRlL3dpbnRlcm5sLmg6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBzb21lIHZhbHVlcyB0byB0aGUgU1lTVEVNX0lORk9STUFUSU9OX0NMQVNTIGVudW1lcmF0aW9uLgoKMjAwNC0wNC0yMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRvY3VtZW50YXRpb24vY29uZmlndXJpbmcuc2dtbCwgZG9jdW1lbnRhdGlvbi9kZWJ1Z2dpbmcuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9pbXBsZW1lbnRhdGlvbi5zZ21sLCBkb2N1bWVudGF0aW9uL29wZW5nbC5zZ21sLAoJICBkb2N1bWVudGF0aW9uL3dpbmVsaWItYmluZGxscy5zZ21sOgoJSXZhbiBMZW8gTXVycmF5LVNtaXRoIDxwdW90aUBpbndpbmQuaXQ+CglSZXBsYWNlIC0tZGVidWdtc2cgd2l0aCBXSU5FREVCVUcuCgoJKiBkbGxzL2QzZDgvc2hhZGVyLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRml4ZWQgdHlwb3MuCgoJKiBwcm9ncmFtcy93aW5ldGVzdC9zZW5kLmM6IEpha29iIEVyaWtzc29uIDxqYWtvdkB2bWxpbnV4Lm9yZz4KCUZpeGVkIHR5cG8uCgoJKiBkbGxzL2QzZDgvZDNkY29yZV9nbC5oOiBSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCUZpeCB0aGUgZDNkY29yZV9nbCBwYXJ0IG9mIEhXIHZlcnRleCBzaGFkZXIgc3VwcG9ydCBmb3IgYnJva2VucyBHTAoJaGVhZGVycy4KCgkqIGRsbHMva2VybmVsL2ZpbGUuYywgZGxscy9udGRsbC9maWxlLmMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywKCSAgZmlsZXMvZmlsZS5jLCBpbmNsdWRlL3dpbnRlcm5sLmg6CglSZWltcGxlbWVudGVkIEdldEZpbGVBdHRyaWJ1dGVzRXhXIGFuZCBHZXRDb21wcmVzc2VkRmlsZVNpemVXIHVzaW5nCgl0aGUgY29ycmVzcG9uZGluZyBudGRsbCBmdW5jdGlvbmFsaXR5LgoKCSogZGxscy9kYmdoZWxwL2VsZl9tb2R1bGUuYywgZGxscy9kYmdoZWxwL3N0YWNrLmMsCgkgIGRsbHMvZGV2ZW51bS9jcmVhdGVkZXZlbnVtLmMsIGRsbHMvZGV2ZW51bS9kZXZlbnVtX3ByaXZhdGUuaCwKCSAgZGxscy9zaGx3YXBpL3VybC5jLCBkb2N1bWVudGF0aW9uL3J1bm5pbmcuc2dtbCwgaW5jbHVkZS93aW5zcG9vbC5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBc3NvcnRlZCBzcGVsbGluZyBmaXhlcy4KCVJlbW92ZSB3c3pSZWdTZXBhcmF0b3IgZnJvbSBkZXZlbnVtX3ByaXZhdGUuaCBzaW5jZSBpdCdzIG5laXRoZXIKCWV4cG9ydGVkIGJ5IGNyZWF0ZWRldmVudW0uYyBub3IgdXNlZCBieSBhbnlvbmUgZWxzZS4KCgkqIGRsbHMvdXNlci90ZXN0cy9tc2cuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBhIG1lc3NhZ2UgdGVzdCBmb3IgY3VzdG9tIGRpYWxvZyBpbml0aWFsaXphdGlvbi4KCgkqIHdpbmRvd3MvZGVmZGxnLmMsIHdpbmRvd3MvZGlhbG9nLmM6CglTYW50b3NoIFNpZGRoZXNod2FyIDxzYW50b3NoLnNAc29uYXRhLXNvZnR3YXJlLmNvbT4KCUFsbG9jYXRlIERJQUxPR0lORk8gc3RydWN0dXJlIGluIERlZkRsZ1Byb2MgaW5zdGVhZCBvZiBpbgoJRElBTE9HX0NyZWF0ZUluZGlyZWN0LCBzbyB0aGF0IGl0IGdldHMgY3JlYXRlZCBjb3JyZWN0bHkgZm9yIG5vbgoJdGVtcGxhdGUtYmFzZWQgZGlhbG9ncy4KCgkqIGRvY3VtZW50YXRpb24vYnVncy5zZ21sOiBJdmFuIExlbyBNdXJyYXktU21pdGggPHB1b3RpQGlud2luZC5pdD4KCVJlcGxhY2UgLS1kZWJ1Z21zZyB3aXRoIFdJTkVERUJVRy4KCgkqIHByb2dyYW1zL3dpbmV0ZXN0L01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5ldGVzdC9tYWluLmM6CglGZXJlbmMgV2FnbmVyIDx3ZmVyaUBhZmF2YW50LmVsdGUuaHU+CgktIENoYW5nZSB0byBjb25zb2xlIG1vZGUgc28gdGhhdCB3aW5ldGVzdCBydW5zIHVuZGVyIFdpblJhc2guCgktIE1vdmUgZnJvbSBzcGF3bnZwKCkgdG8gQ3JlYXRlUHJvY2VzcygpLgoJLSBGb3JjZSBhIDItbWludXRlIHRpbWVvdXQgb24gaW5kaXZpZHVhbCB0ZXN0cy4KCgkqIGRsbHMvbmV0YXBpMzIvdGVzdHMvd2tzdGEuYywgZGxscy9vbGUzMi9zdG9yYWdlMzIuYywKCSAgZGxscy9vbGVhdXQzMi9vbGVmb250LmMsIGRsbHMvb2xlYXV0MzIvdHlwZWxpYjIuYywKCSAgZGxscy9zaGVsbDMyL3NobGZzYmluZC5jLCBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLCBkbGxzL3VybG1vbi91bW9uLmMsCgkgIGRsbHMvd2luaW5ldC9odHRwLmMsIGRsbHMvd3NvY2szMi9wcm90b2NvbC5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglNYWtlIFVuaWNvZGUgc3RyaW5ncyAnc3RhdGljIGNvbnN0Jy4KCgkqIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYywgZGxscy9jb21jdGwzMi9jb21ib2V4LmMsCgkgIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jLCBkbGxzL2NvbWN0bDMyL2lwYWRkcmVzcy5jLAoJICBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmMsIGRsbHMvY29tY3RsMzIvdHJhY2tiYXIuYywKCSAgZGxscy9jb21jdGwzMi90cmVldmlldy5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jLAoJICBkbGxzL2R4ZXJyOC9keGVycjguYywgZGxscy9keGVycjkvZHhlcnI5LmMsIGRsbHMvZ2RpL2ZyZWV0eXBlLmMsCgkgIGRsbHMva2VybmVsL3Rlc3RzL2ZpbGUuYywgZGxscy9rZXJuZWwvdGVzdHMvZm9ybWF0X21zZy5jLAoJICBkbGxzL250ZGxsL3Rlc3RzL3J0bHN0ci5jLCBkbGxzL29sZTMyL2FudGltb25pa2VyLmMsCgkgIGRsbHMvb2xlMzIvZmlsZW1vbmlrZXIuYywgZGxscy9vbGUzMi9zdG9yYWdlMzIuYywKCSAgZGxscy9vbGVhdXQzMi9vbGVmb250LmMsIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jLAoJICBkbGxzL3F1YXJ0ei9maWxlc291cmNlLmMsIGRsbHMvc2V0dXBhcGkvZGlza3NwYWNlLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZGxscy9zaGVsbDMyL3NobGZpbGVvcC5jLAoJICBkbGxzL3NobHdhcGkvcmVnLmMsIGRsbHMvc2hsd2FwaS9zdHJpbmcuYywgZGxscy9zaGx3YXBpL3VybC5jLAoJICBkbGxzL3VzZXIvdGVzdHMvY2xhc3MuYywgZGxscy91eHRoZW1lL21zc3R5bGVzLmMsCgkgIGRsbHMvdXh0aGVtZS9zeXN0ZW0uYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJTWFrZSBVbmljb2RlIHN0cmluZ3Mgc3RhdGljIGNvbnN0LgoKCSogZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL250ZGxsL3Jlc291cmNlLmMsCgkgIGluY2x1ZGUvd2ludGVybmwuaDoKCVJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CglTdHViIGFuZCBkb2N1bWVudGF0aW9uIGZvciBSdGxGb3JtYXRNZXNzYWdlLgoKCSogZGxscy9udGRsbC9wYXRoLmM6IE1pbm9yIGZpeGVzLgoKCSogZGxscy9rZXJuZWwvZmlsZS5jLCBkbGxzL2tlcm5lbC9rZXJuZWxfbWFpbi5jLAoJICBkbGxzL250ZGxsL2RpcmVjdG9yeS5jLCBkbGxzL250ZGxsL2ZpbGUuYywgZGxscy9udGRsbC9sb2FkZXIuYywKCSAgZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL250ZGxsL250ZGxsX21pc2MuaCwgZmlsZXMvZmlsZS5jLAoJICBpbmNsdWRlL3dpbnRlcm5sLmgsIGluY2x1ZGUvZmlsZS5oOgoJUmVpbXBsZW1lbnRlZCBHZXRGaWxlQXR0cmlidXRlc1csIFNldEZpbGVBdHRyaWJ1dGVzVyBhbmQgU2V0RmlsZVRpbWUKCXVzaW5nIHRoZSBjb3JyZXNwb25kaW5nIG50ZGxsIGZ1bmN0aW9uYWxpdHkuCgoJKiBjb250cm9scy9pY29udGl0bGUuYywgZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYywgZGxscy9tc2FjbS9mb3JtYXQuYywKCSAgZGxscy9tc2FjbS9pbnRlcm5hbC5jLCBkbGxzL21zYWNtL3dpbmVhY20uaCwKCSAgZGxscy9tc2FjbS9pbWFhZHAzMi9pbWFhZHAzMi5jLCBkbGxzL21zYWNtL21zYWRwMzIvbXNhZHAzMi5jLAoJICBkbGxzL21zYWNtL21zZzcxMS9tc2c3MTEuYywgZGxscy9tc2FjbS93aW5lbXAzL21wZWdsMy5jLAoJICBkbGxzL21zdmlkZW8vbXN2aWRlb19tYWluLmMsIGRsbHMvb2xlYXV0MzIvdGVzdHMvdmFydGVzdC5jLAoJICBkbGxzL3NlY3VyMzIvc2VjdXIzMi5jLCBkbGxzL3NobHdhcGkvcGF0aC5jLCBkbGxzL3VybG1vbi91bW9uLmMsCgkgIGRsbHMvdXh0aGVtZS9tc3N0eWxlcy5jLCBkbGxzL3dpbm1tL3BsYXlzb3VuZC5jLAoJICBkbGxzL3dzb2NrMzIvcHJvdG9jb2wuYywgcHJvZ3JhbXMvd2luZWNvbnNvbGUvZGlhbG9nLmMsCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL3VzZXIuYywgdG9vbHMvd21jL21jbC5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglNYWtlIHN0YXRpYyBVbmljb2RlIHN0cmluZ3MgY29uc3QuCgoJKiBkbGxzL2QzZDgvZDNkOF9tYWluLmMsIGRsbHMvZDNkOC9zaGFkZXIuYzoKCUNocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUZpeGVkIHJlbGF0aXZlIGFkZHJlc3NpbmcuCglFbmFibGUgaHcgdmVydGV4IHNoYWRlcnMgYnkgZGVmYXVsdC4KCU1vdmVkIHJlZ2lzdHJ5IGQzZCBjb25maWcga2V5IHRvIFNvZnR3YXJlXFdpbmVcRGlyZWN0M0QuCgoyMDA0LTA0LTE5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy93aW5lZG9zL2ludDIxLmMsIGluY2x1ZGUvd2lubnQuaDoKCUZpeGVkL3VwZGF0ZWQgdGhlIGZpbGUgYXR0cmlidXRlcyBkZWZpbmVzLgoKCSogTWFrZWZpbGUuaW46IGNyb3NzdGVzdCB0YXJnZXQgbmVlZHMgdGhlIHRvb2xzIHRvIGJlIGJ1aWx0IGZpcnN0LgoKCSogdG9vbHMvd2lkbC9oZWFkZXIuYywgdG9vbHMvd2lkbC9wYXJzZXIubCwgdG9vbHMvd2lkbC9wYXJzZXIueSwKCSAgdG9vbHMvd2lkbC93aWRsdHlwZXMuaDoKCVJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CgktIEhhbmRsZSAiPyA6IiBjb25kaXRpb25hbHMuCgktIEFsbG93IFtoYW5kbGVdIGF0dHJpYnV0ZSBmb3IgdHlwZXMuCgoJKiBkb2N1bWVudGF0aW9uL2FyY2hpdGVjdHVyZS5zZ21sOgoJSXZhbiBMZW8gTXVycmF5LVNtaXRoIDxwdW90aUBpbndpbmQuaXQ+CglVc2UgV0lORURFQlVHIGluc3RlYWQgb2YgLS1kZWJ1Z21zZy4KCgkqIHByb2dyYW1zL25vdGVwYWQvSXQucmM6IEl2YW4gTGVvIE11cnJheS1TbWl0aCA8cHVvdGlAaW53aW5kLml0PgoJU21hbGwgZml4LgoKCSogZGxscy93aW5tbS93aW5lYWxzYS9hdWRpby5jOiBPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUFkZGVkIGRldGVjdGlvbiBvZiA0OGtIeiBhbmQgOTZrSHogc3VwcG9ydC4gRml4ZWQgYSB0aGlua28sIGFuZCBzb21lCgltaXNsZWFkaW5nIGluZGVudGF0aW9uLgoKCSogZGxscy9kM2Q4L2QzZDhfcHJpdmF0ZS5oLCBkbGxzL2QzZDgvZDNkY29yZV9nbC5oLCBkbGxzL2QzZDgvZGV2aWNlLmMsCgkgIGRsbHMvZDNkOC9kaXJlY3R4LmMsIGRsbHMvZDNkOC9zaGFkZXIuYzoKCVJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJLSBmaXggdGhlIFNldFRleHR1cmVTdGFnZVN0YXRlIGZvciBEM0RUQUREUkVTU19NSVJST1IgdXNpbmcgZHluYW1pYyBHTAoJICBkZXRlY3Rpb24gKGFuZCBub3QgYnVpbGQgdGltZSBHTCBoZWFkZXJzKQoJLSBhZGQgYSBuZXcgZGVidWcgY2hhbm5lbCBmb3IgaGFyZHdhcmUgdmVydGV4IHNoYWRlcnMKCS0gaGFyZHdhcmUgVlMgImNvbXBpbGVyIiBmaXhlczoKCSAgLT4gc3BlY2lhbCBjYXNlIGZvciBhZGRyZXNzIHJlZ2lzdGVycyAoTU9WIG11c3QgYmUgcmVwbGFjZWQgYnkgQVJMKQoJICAtPiBhZGQgbGluZSBudW1iZXJzIHRvIHRyYWNlIChiZXR0ZXIgdG8gZmluZCB3aHkgTlZpZGlhIGRyaXZlcnMgY29tcGxhaW5zKQoJICAtPiBvbmUgcGFyc2UgdG8gZGV0ZXJtaW5lIHRlbXBvcmFyeSBhbmQgYWRkcmVzcyByZWdpc3RlcnMgbmVlZHMKCSAgICAoQHRvZG86IGNoZWNrIEdMIGxpbWl0cykKCSAgLT4gcmVtb3ZlIGR1cGxpY2F0ZSB0cmFjZXMgZnJvbSBHZW5lcmljIFBhcnNlUHJvZ3JhbQoKCSogZGxscy9ycGNydDQvcnBjX2JpbmRpbmcuYywgZGxscy9ycGNydDQvcnBjX2VwbWFwLmMsCgkgIGRsbHMvcnBjcnQ0L3JwY19zZXJ2ZXIuYywgaW5jbHVkZS9ycGNkY2UuaDoKCUZpbGlwIE5hdmFyYSA8eG5hdmFyYUB2b2xueS5jej4KCUZpeCBzb21lIFJQQyBwcm90b3R5cGVzIHRvIGdldCBpdCBjb21waWxpbmcgd2l0aCBXMzJBUEkuCgoJKiBvYmplY3RzL21ldGFmaWxlLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglGaXggQ29weU1ldGFGaWxlQSB0byB3b3JrIHdpdGggTlVMTCBmaWxlbmFtZS4KCgkqIGRsbHMvYWR2YXBpMzIvc2VydmljZS5jLCBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYywKCSAgZGxscy9jcnlwdDMyL21haW4uYywgZGxscy9kZXZlbnVtL2RldmVudW1fbWFpbi5jLAoJICBkbGxzL2RldmVudW0vbWVkaWFjYXRlbnVtLmMsIGRsbHMvZ2RpL2ZyZWV0eXBlLmMsIGRsbHMva2VybmVsL2NvbW0uYywKCSAgZGxscy9rZXJuZWwvZm9ybWF0X21zZy5jLCBkbGxzL2tlcm5lbC9sb2NhbGUuYywgZGxscy9tc2h0bWwvbWFpbi5jLAoJICBkbGxzL21zaS9jcmVhdGUuYywgZGxscy9tc2kvaW5zZXJ0LmMsIGRsbHMvbXNpL21zaS5jLAoJICBkbGxzL21zaS9yZWNvcmQuYywgZGxscy9tc2kvc3VtaW5mby5jLCBkbGxzL21zaS90YWJsZS5jLAoJICBkbGxzL25ldGFwaTMyL2FjY2Vzcy5jLCBkbGxzL25ldGFwaTMyL3Rlc3RzL2FjY2Vzcy5jLAoJICBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYywgZGxscy9xdWFydHovZmlsZXNvdXJjZS5jLAoJICBkbGxzL3JpY2hlZGl0L3JpY2hlZGl0LmMsIGRsbHMvc2hkb2N2dy9zaGRvY3Z3X21haW4uYywKCSAgZGxscy9zaGVsbDMyL2Jyc2ZvbGRlci5jLCBkbGxzL3NoZWxsMzIvY2xhc3Nlcy5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmMsIGRsbHMvdXJsbW9uL3Vtb24uYywgZGxscy91eHRoZW1lL3N5c3RlbS5jLAoJICBkbGxzL3dpbmluZXQvY29va2llLmMsIGRsbHMvd2luaW5ldC9kaWFsb2dzLmMsIGRsbHMvd2luaW5ldC9odHRwLmMsCgkgIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jLCBwcm9ncmFtcy93aW5lbWVudWJ1aWxkZXIvd2luZW1lbnVidWlsZGVyLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCU1ha2UgVW5pY29kZSBjb25zdCBzdHJpbmdzIHN0YXRpYyBzbyB0aGV5IGFyZSBub3QgY29waWVkIHRvIHRoZSBzdGFjawoJZWFjaCB0aW1lIHdlIGVudGVyIHRoZSBmdW5jdGlvbi4KCgkqIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwgZGxscy9zaGVsbDMyL2F1dG9jb21wbGV0ZS5jLAoJICBkbGxzL3NoZWxsMzIvZGVidWdobHAuYywgZGxscy9zaGVsbDMyL3JlZ3N2ci5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsIGRsbHMvc2hlbGwzMi9zaGVsbG9sZS5jLAoJICBkbGxzL3V1aWQvdXVpZC5jLCBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL3NobGRpc3AuaCwKCSAgaW5jbHVkZS9zaGxkaXNwLmlkbCwgaW5jbHVkZS9zaGxndWlkLmg6CglNYXhpbWUgQmVsbGVuZ+kgPG1heGltZS5iZWxsZW5nZUBsYXBvc3RlLm5ldD4KCUFkZCB0aGUgSUF1dG9Db21wbGV0ZSBhbmQgSUF1dG9Db21wbGV0ZTIgaW1wbGVtZW50YXRpb24gKGJ1dCBtZXRob2RzCglzdHViYmVkIGZvciBub3cpLgoKCSogZGxscy9zaGVsbDMyL2Jyc2ZvbGRlci5jOgoJV29sZmdhbmcgU2Nod290emVyIDx3b2xmZ2FuZy5zY2h3b3R6ZXJAZ214Lm5ldD4KCVNIQnJvd3NlRm9yRm9sZGVyOiBzdXBwb3J0IGxwQnJvd3NlSW5mby0+cHN6RGlzcGxheU5hbWUgYmVpbmcgTlVMTC4KCgkqIGRsbHMvbnRkbGwvbnQuYzogTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5kZT4KCU50UXVlcnlJbmZvcm1hdGlvblRva2VuIGlzbid0IGEgc3R1YiBzbyBjaGFuZ2UgdGhlIEZJWE1FIHRvIGEgVFJBQ0UuCgoJKiBkbGxzL01ha2VkbGwucnVsZXMuaW46IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgRExMTU9ERSBoYW5kbGluZyAoLS1tb2RlIGlzIG5vdyAtLXN1YnN5c3RlbSBhbmQgdXNlcyAtV2IpLgoKCSogZGxscy93aW5tbS93aW5lYWxzYS9hdWRpby5jOiBPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUNvZGUgYW5kIGNvbmNlcHRzIG1lcmdlZCBpbiBmcm9tIHdpbmVvc3MgaW4gb3JkZXIgdG8gZ2V0IHRoZQoJbm9uLWRzb3VuZCB3YXZlIG91dHB1dCBwZXJmb3JtYW5jZSBpbiB3aW5lYWxzYSB0byBhbiBhY2NlcHRhYmxlCglsZXZlbC4gSXQncyBzdGlsbCBwb3NzaWJsZSB0byBkbyBiZXR0ZXIgdGhhbiB0aGUgY3VycmVudCBjb2RlLCBidXQKCXRoaXMgc2hvdWxkIGRvIGZvciBub3cuCgoJKiBkbGxzL3JwY3J0NC9jcHJveHkuYzogSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglGaXggY29tcGlsZXIgd2FybmluZy4KCgkqIGRsbHMva2VybmVsL2xvY2FsZS5jLCBkbGxzL250ZGxsL3J0bHN0ci5jOgoJRml4ZWQgbnRkbGxfd2NzdG91bWJzIGFuZCBXaWRlQ2hhclRvTXVsdGlCeXRlIHRvIHNldCB0aGUgJ3VzZWQnIGZsYWcKCWZvciBVVEYtOCBjb2RlcGFnZSB0b28uIFRoaXMgd2FzIGNhdXNpbmcgRElSX250X3RvX3VuaXggdG8gZmFpbCBpbgoJc29tZSBjYXNlcyAodHJhY2tlZCBkb3duIHdpdGggaGVscCBmcm9tIEFsZXggUGFzYWR5bikuCgoJKiBkbGxzL3VybG1vbi9NYWtlZmlsZS5pbiwgZGxscy91cmxtb24vcmVnc3ZyLmMsCgkgIGRsbHMvdXJsbW9uL3VybG1vbl9tYWluLmM6CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglNb3JlIGNvbXBsZXRlIGltcGxlbWVudGF0aW9uIG9mIERsbChVbilSZWdpc3RlclNlcnZlciBpbiB1cmxtb24sIGJhc2VkCglvbiB0aGUgd29yayBvZiBKb2huIEsuIEhvaG0gZm9yIG90aGVyIGRsbHMuCgoJKiBkbGxzL2RpbnB1dC9qb3lzdGlja19saW51eGlucHV0LmM6CglDaHJpc3RvcGggRnJpY2sgPGZyaWNrQHNjLW5ldHdvcmtzLmRlPgoJLSBhZGRlZCBjb2RlIHRvIGhhdmUgdGhlIGpveXN0aWNrIHN0YXRlIGJlIHNldCB0byB0aGUgYXNzdW1lZCBjZW50ZXIKCSAgdmFsdWVzIG9mIHRoZSBqb3lzdGljayBtYXBwZWQgdG8gdGhlIHJhbmdlIHRoZSBhcHBsaWNhdGlvbiB3YW50cwoJICB0aGVtCgktIGdlbmVyYXRlIGV2ZW50cyBhZnRlciBzZXR0aW5nIHRoZSBhcHJvcGlhdGUgdmFsdWVzIGluIFRoaXMtPmpzCgktIHJlcGxhY2VkIG1hZ2ljIGludHMgd2l0aCBkZWZpbmVzIGZyb20gbGludXgvaW5wdXQuaAoJLSByZW1vdmVkIG1hcHBpbmcgY29kZSB0aGF0IGdlbmVyYXRlZCB3cm9uZyB2YWx1ZXMgZm9yIGF4ZXMsIHRoYXQgaGF2ZQoJICB0aGUgY2VudGVyIG9uIHRoZSBtaW4gb3IgbWF4CgoJKiBkbGxzL2Rzb3VuZC9idWZmZXIuYywgZGxscy9kc291bmQvY2FwdHVyZS5jLAoJICBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jLCBpbmNsdWRlL2Rzb3VuZC5oOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUZpeGVzIHN1cHBvcnQgZm9yIG9sZGVyIHZlcnNpb25zIG9mIGRpcmVjdCBzb3VuZC4KCUFkZHMgc3VwcG9ydCBmb3IgZGVsZXRpbmcgbm90aWZpY2F0aW9uIGFycmF5LgoJTWlub3IgZGVidWcgYW5kIHdoaXRlIHNwYWNlIGNsZWFudXBzLgoKCSogZGxscy9kYmdoZWxwL2RiZ2hlbHAuYywgZGxscy9kYmdoZWxwL2RiZ2hlbHBfcHJpdmF0ZS5oLAoJICBkbGxzL2RiZ2hlbHAvbXNjLmMsIGRsbHMvZGJnaGVscC9zdGFicy5jLCBkbGxzL2RiZ2hlbHAvc3ltYm9sLmMsCgkgIGRsbHMvZGJnaGVscC90eXBlLmM6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCS0gaW1wbGVtZW50ZWQgc3VwcG9ydCBmb3IgZnVuY3Rpb24gZGVidWcgc3RhcnQvc3RvcCBhbmQgbGFiZWxzIChtc2MuYwoJICBhbmQgc3RhYnMuYykKCS0gc3RhcnRlZCBpbXBsZW1lbnRpbmcgdHlwZWRlZiBzdXBwb3J0CgktIGZ1bmN0aW9ucyBub3cgaGF2ZSBhIHJlYWwgZnVuY3Rpb24gc2lnbmF0dXJlIChvbmx5IGluIHN0YWJzLmMsIHN0aWxsCgkgIHRvIGJlIGRvbmUgaW4gbXNjLmMpCgktIHNtYWxsIGVuaGFuY2VtZW50cyB0byBUSV9HRVRfVFlQRSBmb3IgZnVuY3Rpb25zCgktIGFkZGVkIHN1cHBvcnQgZm9yIGZ1bmN0aW9ucycgYmxvY2sgYW5kIGxvY2FsIHZhcmlhYmxlcyBpbiByZWdpc3RlcnMKCSAgKG1zYy5jKQoJLSBmaXhlZCBzb21lIGJ1Z3MgaW4gU3RhY2tXYWxrCgktIGNvbnN0YW50cyBhcmUgbm93IHN0b3JlZCBhcyB2YXJpYW50cyAoaW5zdGVhZCBvZiB1bnNpZ25lZCBpbnRzKQoJLSBmaXhlZCByZWd1bGFyIGV4cHJlc3Npb24gbWFuYWdlbWVudCAoZGJnaGVscCdzIFJFIGFyZSBub3QgdGhlIHNhbWUKCSAgYXMgUE9TSVggb25lcykKCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOiBSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJLSBPcHRpbWlzZSBhY2Nlc3NpbmcgdG9vbGJhciBzdHlsZSBieSBzdG9yaW5nIGl0IGluIHRoZSBUT09MQkFSX0lORk8KCSAgc3RydWN0dXJlLgoJLSBSZXBsYWNlIHtHZXQsU2V0fVdpbmRvd0xvbmcgYnkge0dldCxTZXR9V2luZG93TG9uZ1B0ciB3aGVyZQoJICBhcHByb3ByaWF0ZS4KCgkqIGRsbHMvZHhkaWFnbi9NYWtlZmlsZS5pbiwgZGxscy9keGRpYWduL2NvbnRhaW5lci5jLAoJICBkbGxzL2R4ZGlhZ24vZHhkaWFnX3ByaXZhdGUuaCwgZGxscy9keGRpYWduL3Byb3ZpZGVyLmMsCgkgIGluY2x1ZGUvZHhkaWFnLmg6CglSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCS0gZml4IGR4ZGlhZy5oIChhZ2FpbikKCS0gSUR4RGlhZ0NvbnRhaW5lckltcGwgaW1wbGVtZW50YXRpb24KCS0gSUR4RGlhZ1Byb3ZpZGVyOjpHZXRSb290Q29udGFpbmVyICh0aGF0IGNyZWF0ZXMgdGhlIHJvb3QgY29udGFpbmVyKQoKCSogZGxscy9ycGNydDQvcnBjX21lc3NhZ2UuYzogRmlsaXAgTmF2YXJhIDx4bmF2YXJhQHZvbG55LmN6PgoJUHJldmVudCBjcmFzaGVzIGluIElfUnBjU2VuZCBvbiBXaW5kb3dzIFhQLgoKMjAwNC0wNC0xNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL3ZvbHVtZS5jLCBmaWxlcy9kcml2ZS5jOgoJUmVpbXBsZW1lbnRlZCBHZXREaXNrRnJlZVNwYWNlVyBhbmQgR2V0RGlza0ZyZWVTcGFjZUV4VyBvbiB0b3Agb2YgdGhlCgljb3JyZXNwb25kaW5nIG50ZGxsIGZ1bmN0aW9ucy4KCgkqIGRsbHMva2VybmVsL2NoYW5nZS5jLCBkbGxzL2tlcm5lbC9maWxlLmM6CglNYWtlIEZpbmRGaXJzdEZpbGVFeFcgYW5kIEZpbmRGaXJzdENoYW5nZU5vdGlmaWNhdGlvblcgdXNlIE50T3BlbkZpbGUKCWRpcmVjdGx5IHNvIHRoYXQgdGhleSBjYW4gdGFrZSBhZHZhbnRhZ2Ugb2YgdGhlIEZJTEVfRElSRUNUT1JZX0ZJTEUKCW9wdGlvbi4KCgkqIGxpYnMvTWFrZWZpbGUuaW46IEVtbWFudWVsIE1haWxsYXJkIDxlLnJzekBsaWJlcnR5c3VyZi5mcj4KCUNyZWF0ZSBzeW1saW5rcyBmb3IgLmR5bGliIGxpYnJhcmllcyB0b28uCgoJKiBkbGxzL2FkdmFwaTMyL2FkdmFwaTMyLnNwZWMsIGRsbHMvYWR2YXBpMzIvY3J5cHQuYzoKCU1pa2UgSGVhcm4gPG1pa2VAbmF2aS5jeD4KCURvY3VtZW50YXRpb24gZm9yIFN5c3RlbUZ1bmN0aW9uMDQwIGFuZCBTeXN0ZW1GdW5jdGlvbjA0MSBoYXMgYmVjb21lCglhdmFpbGFibGUsIHNvIHN0dWIgdGhlbSBvdXQgaW4gY2FzZSBhcHBsaWNhdGlvbnMgdXNlIHRoZW0uCgoJKiBkbGxzL2RiZ2hlbHAvc3RhY2suYzogRW1tYW51ZWwgTWFpbGxhcmQgPGUucnN6QGxpYmVydHlzdXJmLmZyPgoJRml4ZWQgYSBjb21waWxlIGVycm9yIG9uIG5vbi1pMzg2LgoKCSogZGxscy94MTFkcnYva2V5Ym9hcmQuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCS0gc3RhcnQgYXNzaWduaW5nIGN1c3RvbSBWSyBjb2RlcyBmcm9tIFZLX09FTV84IHNpbmNlIHRoaXMgY29kZQoJICBhbHJlYWR5IHByZXNlbnRzIGluIHRoZSBsYXlvdXQgdGFibGVzCgktIHNlYXJjaCB0aGUgbGF5b3V0IHRhYmxlcyBvbmx5IGlmIFhMb29rdXBTdHJpbmcgcmV0dXJuZWQgbm9uIHplcm8KCSAgbnVtYmVyIG9mIGNoYXJhY3RlcnMgZm9yIGEga2V5c3ltLCBvdGhlcndpc2UgdGhhdCdzIGEgbm9uIGNoYXJhY3RlcgoJICBrZXkKCS0gYXZvaWQgaW5zZXJ0aW5nIFZLX09FTV94IGNvZGVzIGludG8gdW5hc3NpZ25lZCBwb3NpdGlvbnMgc2luY2UgdGhlc2UKCSAgY29kZXMgbWlnaHQgYWxyZWFkeSBiZSBpbiB0aGUgbGF5b3V0IHRhYmxlLCB0aHVzIGNyZWF0aW5nIGEgY29uZmxpY3QKCgkqIGRsbHMvbnRkbGwvcmVsYXkuYzogRW1tYW51ZWwgTWFpbGxhcmQgPGUucnN6QGxpYmVydHlzdXJmLmZyPgoJRml4IGEgY29tcGlsZSBlcnJvciBmb3IgU05PT1BfR2V0UHJvY0FkZHJlc3Mgb24gbm9uLWkzODYuCgoyMDA0LTA0LTE2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9rZXJuZWwvcHJvY2Vzcy5jLCBkbGxzL250ZGxsL2RpcmVjdG9yeS5jLCBkbGxzL250ZGxsL2ZpbGUuYywKCSAgc2VydmVyL2ZpbGUuYywgc2VydmVyL3RyYWNlLmM6CglGaXhlZCBhIG51bWJlciBvZiBOVCBzdGF0dXMgdmFsdWVzIHRvIGJlIGNsb3NlciB0byBOVCBiZWhhdmlvci4KCgkqIHRvb2xzL3dpbmVnY2Mvd2luZWdjYy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJSW1wbGVtZW50IHN1cHBvcnQgZm9yIHRoZSAteCA8bGFuZz4gb3B0aW9uLgoKCSogY29udHJvbHMvbWVudS5jOiBHZSB2YW4gR2VsZG9ycCA8Z3ZnQHJlYWN0b3MuY29tPgoJU2V0dXAgbWVudSBkcmF3aW5nIGNvbG9ycyBiZWZvcmUgY2FsbGluZyBvd25lciBkcmF3IHJvdXRpbmUuCgoJKiBkbGxzL3JpY2hlZGl0L3JlYWRlci5jOiBHZSB2YW4gR2VsZG9ycCA8Z3ZnQHJlYWN0b3MuY29tPgoJLSBXb3JrIGFyb3VuZCBwcm9ibGVtIGluIE5TSVMgaW5zdGFsbGVycyB3aGljaCBjYW4ndCBoYW5kbGUgMSBjaGFyIGF0CgkgIGEgdGltZSByZWFkaW5nIG9mIFJURiB0ZXh0LgoJLSBJbmNyZWFzZSBidWZmZXIgdG8gNDA5NiBieXRlcyBmb3IgYmV0dGVyIGNvbXBhdGliaWxpdHkuCgoJKiB0b29scy93aW5lZ2NjL01ha2VmaWxlLmluOiBQYXVsIFZyaWVucyA8cHZyaWVuc0B4czRhbGwubmw+CglDb3JyZWN0IHJlbW92aW5nIHdpbmVnKysgbGluayBvbiBhbiB1bmluc3RhbGwuCgoJKiBkbGxzL2tlcm5lbC9wcm9jZXNzLmMsIGRsbHMva2VybmVsL3Rhc2suYywgZGxscy9udGRsbC9lbnYuYywKCSAgZGxscy9udGRsbC9wYXRoLmMsIGluY2x1ZGUvd2ludGVybmwuaCwgaW5jbHVkZS90aHJlYWQuaCwKCSAgc2VydmVyL3RyYWNlLmM6CglSdGxTZXRDdXJyZW50RGlyZWN0b3J5X1U6IHN0b3JlIGEgaGFuZGxlIHRvIHRoZSBjdXJyZW50IGRpcmVjdG9yeQoJYWxvbmcgd2l0aCBpdHMgbmFtZS4KCgkqIGZpbGVzL2ZpbGUuYywgc2VydmVyL2ZkLmMsIHNlcnZlci9maWxlLmMsIHNlcnZlci9maWxlLmgsCgkgIHNlcnZlci90cmFjZS5jOgoJQWRkZWQgc3VwcG9ydCBmb3IgRklMRV9ESVJFQ1RPUllfRklMRSBhbmQgRklMRV9OT05fRElSRUNUT1JZX0ZJTEUgb3BlbgoJb3B0aW9ucy4KCgkqIG1pc2Mvb3B0aW9ucy5jOiBSZW1vdmVkIHN1cHBvcnQgZm9yIHRoZSAtLWRlYnVnbXNnIG9wdGlvbi4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2R4ZGlhZ24vLmN2c2lnbm9yZSwKCSAgZGxscy9keGRpYWduL01ha2VmaWxlLmluLCBkbGxzL2R4ZGlhZ24vZHhkaWFnX21haW4uYywKCSAgZGxscy9keGRpYWduL2R4ZGlhZ19wcml2YXRlLmgsIGRsbHMvZHhkaWFnbi9keGRpYWduLnNwZWMsCgkgIGRsbHMvZHhkaWFnbi9wcm92aWRlci5jLCBkbGxzL2R4ZGlhZ24vcmVnc3ZyLmMsCgkgIGRsbHMvZHhkaWFnbi92ZXJzaW9uLnJjLCB0b29scy93aW5lLmluZjoKCVJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJQWRkZWQgZHhkaWFnbi5kbGwgd2l0aCBhIHNpbXBsZSBpbXBsZW1lbnRhdGlvbiBvZiBJRHhEaWFnUHJvdmlkZXIuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWxfcHJpdmF0ZS5oLCBkbGxzL2tlcm5lbC90YXNrLmMsIGRsbHMvbnRkbGwvcGF0aC5jLAoJICBpbmNsdWRlL3RocmVhZC5oOgoJQWRkZWQgaGFjayB0byBmZXRjaCB0aGUgY3VycmVudCBkaXJlY3RvcnkgZnJvbSB0aGUgc3Vic3lzdGVtIHRpZCBzbwoJdGhhdCBpdCBpcyBoYW5kbGVkIGNvcnJlY3RseSBpbiBudGRsbCBhbHNvIGZvciAxNi1iaXQgdGFza3MuCgoJKiBkbGxzL2tlcm5lbC9maWxlMTYuYywgZGxscy93aW5lZG9zL2ludDIxLmM6CglVcGRhdGUgdGhlIGRyaXZlIGVudmlyb25tZW50IHN0cmluZ3Mgd2hlbiBjaGFuZ2luZyB0aGUgY3VycmVudAoJZGlyZWN0b3J5IGZyb20gMTYtYml0IG9yIERPUyBjb2RlLgoKMjAwNC0wNC0xNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvZHhkaWFnLmg6IFJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJRml4ZWQgc29tZSBidWdzLgoKCSogZGxscy9kM2Q4L01ha2VmaWxlLmluLCBkbGxzL2QzZDgvZDNkOF9tYWluLmMsCgkgIGRsbHMvZDNkOC9kM2Q4X3ByaXZhdGUuaCwgZGxscy9kM2Q4L2QzZGNvcmVfZ2wuaCwgZGxscy9kM2Q4L2RldmljZS5jLAoJICBkbGxzL2QzZDgvZGlyZWN0eC5jLCBkbGxzL2QzZDgvZHJhd3ByaW0uYywgZGxscy9kM2Q4L3NoYWRlci5jLAoJICBkbGxzL2QzZDgvdnNoYWRlcmRlY2xhcmF0aW9uLmM6CglKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJQWRkZWQgc3VwcG9ydCBmb3IgdmVydGV4IHNoYWRlciAodXNpbmcgQVJCX3ZlcnRleF9wcm9ncmFtIGV4dGVuc2lvbikuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWxfbWFpbi5jLCBkbGxzL2tlcm5lbC90YXNrLmMsIGRsbHMvbnRkbGwvdGhyZWFkLmMsCgkgIGluY2x1ZGUvdGhyZWFkLmg6CglHZXQgcmlkIG9mIHRoZSBURUIgZmxhZ3MsIHRoZXkgYXJlIG5vIGxvbmdlciB1c2VkLgoKCSogZGxscy9zaGVsbDMyL3BpZGwuYzogSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJQ29ycmVjdCByZXR1cm4gdmFsdWUgaW4gYSBjb3VwbGUgb2YgZXJyb3IgY2FzZXMuCgoJKiBpbmNsdWRlL3d0eXBlcy5oLCBpbmNsdWRlL3d0eXBlcy5pZGw6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJUHJldmVudCBDWSB0eXBlIGZyb20gYmVpbmcgcmVkZWZpbmVkLgoKCSogZGxscy9kYmdoZWxwL2VsZl9tb2R1bGUuYywgZGxscy9kYmdoZWxwL3N0YWJzLmM6CglLZXZpbiBLb2x0emF1IDxrZXZpbkBwbG9wLm9yZz4KCUZpeCBhIGZldyBjb21waWxlIGVycm9ycyB3aGVuIGNyb3NzIGNvbXBpbGluZy4KCgkqIHByb2dyYW1zL3dpbmVkYmcvd2luZWRiZy5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJSGF2ZSB3aW5lZGJnIHNlbmQgaXRzIG91dHB1dCB0byBzdGRlcnIgd2hlbiBpbnZva2VkIHdpdGggdGhlIC0tYXV0bwoJb3B0aW9uLgoKCSogZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3BpZGwuaCwKCSAgZGxscy9zaGVsbDMyL3NoZmxkcl9teWNvbXAuYzoKCU1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CgktIG1ha2UgZHJpdmUgbGV0dGVycyBpbiBQSURMcyBhbHdheXMgdXBwZXJjYXNlIHRvIGVuYWJsZSBQSURMCgkgIGNvbXBhcmlzb24KCS0gVW5pY29kaWZ5IF9JTENyZWF0ZURyaXZlKCkKCgkqIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvZHhkaWFnLmg6CglSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCUFkZGVkIHRoZSBkeGRpYWcuaCBoZWFkZXIuCgoJKiBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmM6IE1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CglDb3JyZWN0IGVycm9yIGhhbmRsaW5nIGluIFNIRUxMMzJfUGFyc2VOZXh0RWxlbWVudCgpLgoKCSogdG9vbHMvd2luZWluc3RhbGw6CglPbmx5IGNyZWF0ZSB0aGUgZGV2aWNlIHN5bWxpbmtzIHRoZSBmaXJzdCB0aW1lIGFyb3VuZC4KCgkqIGRsbHMva2VybmVsL2tlcm5lbF9wcml2YXRlLmgsIGRsbHMva2VybmVsL21vZHVsZS5jLAoJICBkbGxzL2tlcm5lbC90YXNrLmM6CglTdGFydGVkIGltcGxlbWVudGluZyBzdXBwb3J0IGZvciB0aGUgU3ViU3lzdGVtVGliIGZpZWxkIGluIHRoZSBURUIgb2YKCTE2LWJpdCB0aHJlYWRzLiBUaGlzIGFsbG93cyBHZXRNb2R1bGVGaWxlTmFtZVcgdG8gYXZvaWQgY2FsbGluZyAxNi1iaXQKCWZ1bmN0aW9ucy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjOiBLZXZpbiBLb2x0emF1IDxrZXZpbkBwbG9wLm9yZz4KCUFkZCBhZGRpdGlvbmFsIG5hbWVzIG9mIG1pbmd3IHRvb2xzLgoKMjAwNC0wNC0xNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvb3BlbmdsMzIvbWFrZV9vcGVuZ2wsIGRsbHMvb3BlbmdsMzIvb3BlbmdsX2V4dC5jOgoJQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJQWRkZWQgZ2xEZWxldGVPYmplY3RCdWZmZXJBVEkgZnVuY3Rpb24uCglGaXggZm9yIHR5cGVzIHRoYXQgaGF2ZSBhIGNvbW1vbiByb290LgoKCSogZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3BpZGwuaCwKCSAgZGxscy9zaGVsbDMyL3NoZmxkcl9kZXNrdG9wLmMsIGRsbHMvc2hlbGwzMi9zaGZsZHJfZnMuYzoKCU1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CglSZXR1cm4gImZpbGUgbm90IGZvdW5kIiBlcnJvciB2YWx1ZXMgaW5zdGVhZCBvZiBFX0lOVkFMSURBUkcgaWYKCV9JTENyZWF0ZUZyb21QYXRoQSgpIGZhaWxlZCB0byBmaW5kIGZpbGVzLgoKCSogZGxscy9nZGkvZnJlZXR5cGUuYywgZGxscy9nZGkvcHJpbnRkcnYuYywgZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywKCSAgZGxscy9rZXJuZWwvcHJvY2Vzcy5jLCBkbGxzL250ZGxsL2RpcmVjdG9yeS5jLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsCgkgIGRsbHMvd2luZWRvcy9kb3Njb25mLmMsIGZpbGVzL2Rvc19mcy5jLCBpbmNsdWRlL3dpbmJhc2UuaCwKCSAgcHJvZ3JhbXMvd2luZW1lbnVidWlsZGVyL3dpbmVtZW51YnVpbGRlci5jLAoJICBwcm9ncmFtcy93aW5lcGF0aC93aW5lcGF0aC5jOgoJTW92ZWQgd2luZV9nZXRfdW5peF9maWxlX25hbWUgaW1wbGVtZW50YXRpb24gdG8gbnRkbGwsIGFuZCBjaGFuZ2VkIGl0Cgl0byByZXR1cm4gYW4gYWxsb2NhdGVkIGJ1ZmZlciBpbnN0ZWFkIG9mIGEgZml4ZWQgc2l6ZSBvbmUuCgoJKiBkbGxzL2dkaS9iaXRibHQuYywgZGxscy9nZGkvZ2RpMzIuc3BlYywgZGxscy9tc2ltZzMyL21zaW1nMzIuc3BlYywKCSAgZGxscy9tc2ltZzMyL21zaW1nMzJfbWFpbi5jLCBpbmNsdWRlL3dpbmdkaS5oOgoJS2V2aW4gS29sdHphdSA8a2V2aW5AcGxvcC5vcmc+CglQYXJ0aWFsIHN0dWIgb2YgR2RpQWxwaGFCbGVuZC9BbHBoYUJsZW5kLgoKCSogZGxscy94MTFkcnYva2V5Ym9hcmQuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUEgd29ya2Fyb3VuZCBmb3IgbWlzc2luZyByZWFsIHN1cHBvcnQgZm9yIGtleWJvYXJkIGxheW91dCBBUElzLgoKCSogb2JqZWN0cy90ZXh0LmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglQcmludCBzb3VyY2UgY2hhcnNldCBhcyB3ZWxsIGFzIGEgcmVzdWx0aW5nIGNvZGVwYWdlIGluIEZPTlRfbWJ0b3djLgoKCSogZGxscy9rZXJuZWwvY29tbS5jOiBSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglBZGQgbWlzc2luZyBQT1NJWCBiYXVkIHJhdGVzIHRvIEdldENvbW1TdGF0ZSBhbmQgU2V0Q29tbVN0YXRlLgoKCSogZGxscy9zaGVsbDMyL2NwYW5lbGZvbGRlci5jLCBkbGxzL3NoZWxsMzIvZGVidWdobHAuYywKCSAgZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3BpZGwuaDoKCUp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCUNvcnJlY3Qgc29tZSBQSURMIHR5cGVzIGFuZCBlbGltaW5hdGUgc29tZSBtYWdpYyBudW1iZXJzIGluIFBJREwKCWFsbG9jYXRpb247IGNvcnJlY3QgYSBjb3B5LXBhc3RvIGZyb20gYSBwcmV2aW91cyBwYXRjaC4KCgkqIGRsbHMvc2hlbGwzMi9mb2xkZXJzLmM6IEp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCUlmIGEgZm9sZGVyIGNvbnRhaW5zIGEgZGVza3RvcC5pbmksIGNoZWNrIGl0IGZvciB0aGUgaWNvbiBsb2NhdGlvbgoJYmVmb3JlIHVzaW5nIHRoZSBkZWZhdWx0IGZvbGRlciBpY29uLgoKCSogZGxscy9udGRsbC9kaXJlY3RvcnkuYzoKCUFkZGVkIHN1cHBvcnQgZm9yIHJlc3RhcnRpbmcgZGlyZWN0b3J5IHNjYW5zIG9uIHBsYXRmb3JtcyB3aGVyZQoJc2Vla2RpciByZXR1cm4gdmFsdWVzIGNhbm5vdCBiZSByZXVzZWQgb24gYSBkaWZmZXJlbnQgZGlyZWN0b3J5CglvYmplY3QuCglBZGRlZCBzb21lIGNoZWNrcyBmb3IgaW52YWxpZCBmaWxlIG5hbWVzIGluIERJUl9udF90b191bml4LgoKCSogZGxscy9udGRsbC9wYXRoLmM6CglGaXhlZCBoYW5kbGluZyBvZiBcXD9cIHByZWZpeCBpbiBSdGxEb3NQYXRoTmFtZVRvTnRQYXRoTmFtZV9VLgoJRml4ZWQgcGFyc2luZyBvZiBVTkMgZmlsZSBuYW1lcyBpbiBSdGxHZXRGdWxsUGF0aE5hbWVfVS4KCgkqIGRsbHMva2VybmVsL3Z4ZC5jLCBkbGxzL3dpbmVkb3MvaW50MjEuYzoKCVJlcGxhY2VkIGNyZWF0ZV9maWxlIHNlcnZlciByZXF1ZXN0cyBieSBhIGNhbGwgdG8gTnRDcmVhdGVGaWxlLgoKCSogZGxscy9ycGNydDQvcnBjX2JpbmRpbmcuYywgZGxscy9ycGNydDQvcnBjcnQ0LnNwZWMsIGluY2x1ZGUvcnBjZGNlLmg6CglGaWxpcCBOYXZhcmEgPHhuYXZhcmFAdm9sbnkuY3o+CglGaXggdGhlIGNhc2Ugb2YgUnBjTmV0d29ya0lzUHJvdHNlcVZhbGlkW0FXXSAod2FzCglScGNOZXR3b3JrSXNQcm90U2VxVmFsaWRbQVddKSBuYW1lcy4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzogTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCVJldHVybiBUUlVFIGZvciBUVk1fRVhQQU5EIGlmIHRyZWV2aWV3IGl0ZW0gaXMgYWxyZWFkeSBleHBhbmRlZC4KCgkqIGRsbHMvY29tY3RsMzIvcmViYXIuYzogRmlsaXAgTmF2YXJhIDx4bmF2YXJhQHZvbG55LmN6PgoJRm9yY2UgcmVzaXplIGJlZm9yZSBjYWxsaW5nIFJCTl9IRUlHSFRDSEFOR0Ugbm90aWZpY2F0aW9uLgoKMjAwNC0wNC0xMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvaW1hZ2VobHAvaW1hZ2VobHAuc3BlYzogRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglVcGRhdGVkIHRvIGxhdGVzdCB2ZXJzaW9uJ3MgZXhwb3J0cywgYW5kIGFkZGVkIGEgZmV3IG1vcmUgZm9yd2FyZHMuCgoJKiBkbGxzL2tlcm5lbC9jb25zb2xlLmM6IENocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUZpeGVkIHR5cG8uCgoJKiBkb2N1bWVudGF0aW9uL2ZhcS5zZ21sOgoJVG9ueSBMYW1icmVndHMgPHRvbnlfbGFtYnJlZ3RzQHRlbHVzcGxhbmV0Lm5ldD4KCUFkZCBiaXQgYWJvdXQgbm90IGJlaW5nIGFibGUgdG8gdXNlIFdpbmRvd3MgZHJpdmVycyB0byBQcmludCBldGMuCgoJKiBkbGxzL3VzZXIvdGVzdHMvd2luLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGQgYSB0ZXN0IGZvciBHV19IV05ETEFTVC4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYzoKCUp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCUFkZCBzdHViIGZvciBTaGVsbERERUluaXQgdG8gbGV0IFdpbmRvd3MgZXhwbG9yZXIuZXhlIGdldCBwYXN0IHRoZQoJYmVnaW5uaW5nLgoKCSogZGxscy9zaGVsbDMyL3NobHZpZXcuYzogSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJSVNoZWxsVmlldyBzZWVtcyByZWFzb25hYmx5IGNvbXBsZXRlLCBjaGFuZ2UgYSBGSVhNRSB0byBhIFRSQUNFIHRvCglzcGVlZCB1cCBvcGVuL3NhdmUgZGlhbG9ncy4KCgkqIGRsbHMvd2luaW5ldC9odHRwLmM6IEZpeGVkIGEgd2FybmluZy4KCgkqIHByb2dyYW1zL3dpbmV0ZXN0L3V0aWwuYzogR2VyYWxkIFBmZWlmZXIgPGdlcmFsZEBwZmVpZmVyLmNvbT4KCURvIG5vdCBpbmNsdWRlIDx3aW5kb3dzLmg+LCB0byBhdm9pZCBkdXBsaWNhdGUgZGVjbGFyYXRpb24gb2YKCXNlbGVjdCgpLgoKCSogZGxscy9zaGVsbDMyL2NwYW5lbGZvbGRlci5jLCBkbGxzL3NoZWxsMzIvc2hmbGRyX2Rlc2t0b3AuYywKCSAgZGxscy9zaGVsbDMyL3NoZmxkcl9mcy5jLCBkbGxzL3NoZWxsMzIvc2hmbGRyX215Y29tcC5jOgoJTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCUNvcnJlY3QgSVNoZWxsRm9sZGVyOjpHZXRBdHRyaWJ1dGVzT2YoKSBmb3IgdGhlIGNhc2UgKnJnZkluT3V0PTAuCgoJKiBkbGxzL3NoZWxsMzIvc2hsZXhlYy5jOiBNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJQ2hlY2sgZm9yIGZvbGRlcnMgaW4gU2hlbGxFeGVjdXRlKCkuCgoyMDA0LTA0LTEyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy92ZXJzaW9uL2luZm8uYzoKCVNldCBsYXN0IGVycm9yIHRvIDAgb24gc3VjY2VzcyBpbiBWRVJTSU9OX0dldEZpbGVWZXJzaW9uSW5mb19QRSBub3cKCXRoYXQgTG9hZExpYnJhcnlXIGRvZXNuJ3QgZG8gdGhpcyBhbnltb3JlLgoKCSogZGxscy9udGRsbC9kaXJlY3RvcnkuYywgZGxscy9udGRsbC9maWxlLmMsIGRsbHMvbnRkbGwvbG9hZGVyLmMsCgkgIGRsbHMvbnRkbGwvbnRkbGxfbWlzYy5oLCBkbGxzL250ZGxsL3BhdGguYzoKCUltcGxlbWVudGVkIE50Q3JlYXRlbEZpbGUgdXNpbmcgdGhlIG5ldyBzeW1saW5rIHNjaGVtZS4KCVVzZSBOdENyZWF0ZUZpbGUgaW4gdGhlIGxvYWRlciwgYW5kIGdldCByaWQgb2YgdGhlIENyZWF0ZUZpbGVXIHVwY2FsbAoJaGFjay4KCgkqIGRsbHMvaWNtcC9pY21wX21haW4uYywgaW5jbHVkZS93aW5lcnJvci5oLCBzZXJ2ZXIvZmlsZS5jLAoJICBzZXJ2ZXIvc29jay5jLCBzZXJ2ZXIvdHJhY2UuYzoKCUZpbGlwIE5hdmFyYSA8eG5hdmFyYUB2b2xueS5jej4KCUdldCByaWQgb2Ygbm9uLXN0YW5kYXJkIEVSUk9SX1VOS05PV04gdmFsdWUuCgoJKiBkbGxzL3dpbmluZXQvY29va2llLmMsIGRsbHMvd2luaW5ldC9kaWFsb2dzLmMsIGRsbHMvd2luaW5ldC9odHRwLmMsCgkgIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQ29udmVydCB1bmljb2RlIHN0cmluZ3MgdG8gY29uc3QuCgoJKiBkbGxzL3VzZXIvdGVzdHMvbXNnLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGQgV01fUVVFUllORVdQQUxFVFRFIGluIGFwcHJvcHJpYXRlIHBsYWNlcyBvZiB0aGUgbWVzc2FnZSB0ZXN0LgoKCSogZGxscy9zaGVsbDMyL3NobGV4ZWMuYzogTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCS0gcmVuYW1lICd3c3pDb21tYW5kbGluZScgdG8gJ3dzelBhcmFtZXRlcnMnCgktIHNlcGFyYXRlIG91dCBjb21tYW5kIGxpbmUgYXJndW1lbnRzIGZyb20gZXhlY3V0YWJsZSBmaWxlIG5hbWUKCgkqIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYzogTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCS0gZWxpbWluYXRlIE1TVkMgdHlwZSBjb252ZXJzaW9uIHdhcm5pbmcKCS0gSVNoZWxsTGluazo6R2V0SWNvbkxvY2F0aW9uKCk6IGdldCBpY29ucyBmb3Igc2hlbGwgbGlua3MgaWYgbm90CgkgIGFscmVhZHkgc2V0CgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUNsZWFudXAgcmVmZXJlbmNlIGNvdW50aW5nLgoJTW92ZSBub3RpZnkgYXJyYXkgdG8gYnVmZmVyLgoJQWRkIHN0YXRlIGluZm8gYW5kIGZpeCBHZXRTdGF0dXMuCglSZW1vdmUgdW5uZWNlc3NhcnkgZHJpdmVyIGRlc2NyaXB0aW9uIGZsYWdzLgoKCSogZGxscy9hZHZhcGkzMi9zZXJ2aWNlLmM6CglPcGVuU2VydmljZVc6IGRvbid0IHVzZSB0aGUgcmVxdWVzdGVkIHNlcnZpY2UgYWNjZXNzIHJpZ2h0cyBmb3IgdGhlCglyZWdpc3RyeSBrZXkgYWNjZXNzIHJpZ2h0cywgdGhleSBhcmUgbm90IHRoZSBzYW1lIHRoaW5nLgoKCSogZGxscy9rZXJuZWwva2VybmVsX21haW4uYywgZGxscy9rZXJuZWwvcHJvY2Vzcy5jOgoJQ3JlYXRlIHRoZSBkZXZpY2VzIGVhcmxpZXIgb24gZHVyaW5nIHN0YXJ0dXAuCgoJKiBkbGxzL2FkdmFwaTMyL2FkdmFwaTMyLnNwZWM6IE9wZW5TQ01hbmFnZXJBL1cgYXJndW1lbnRzIGFyZSBzdHJpbmdzLgoKCSogZG9jdW1lbnRhdGlvbi9kZWJ1Z2dlci5zZ21sOiBKZWZmIDxqZWZmbEBkZWZjZW4uZ292LmF1PgoJQ2xhcmlmeSB0aGUgYXR0YWNoIGNvbW1hbmQuCgoJKiBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYywgZGxscy9zaGVsbDMyL3NobGV4ZWMuYywKCSAgZGxscy9zaGx3YXBpL29yZGluYWwuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQXNzb3J0ZWQgc3BlbGxpbmcgZml4ZXMuCgoJKiBkbGxzL2RkcmF3L2QzZHRleHR1cmUuYywgZGxscy9kZHJhdy9kZHJhd19wcml2YXRlLmgsCgkgIGRsbHMvZGRyYXcvZHN1cmZhY2UvbWFpbi5jLCBkbGxzL2RkcmF3L2hlbHBlci5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUFkZCB0aGUgcG9zc2liaWxpdHkgdG8gc2F2ZSBhIHNuYXBzaG90IG9mIHRoZSBiYWNrYnVmZmVyIGF0CglmbGlwLXRpbWUuCgoJKiBkbGxzL2RpbnB1dC9rZXlib2FyZC5jOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSBiZXR0ZXIgbG9nIHRoZSBHZXREZXZpY2VTdGF0ZSBmdW5jdGlvbgoJLSBsb2cgY2hhbmdlcyB0byB0aGUgRElucHV0S2V5U3RhdGUgdGFibGUKCgkqIGRsbHMva2VybmVsL2NvbW0uYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJRml4IEdldENvbW1TdGF0ZSBhbmQgU2V0Q29tbVN0YXRlLCBzbyB0aGF0IHRoZXNlIGZ1bmN0aW9ucyBjYW4gYmUgdXNlZAoJdG8gc2V0L2NsZWFyL3JlYWQgdGhlIERUUiBhbmQgUlRTIGxpbmVzLgoKCSogZGxscy9tc2kvbXNpLmMsIGRsbHMvbXNpL21zaS5zcGVjOiBIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCUNvcnJlY3Qgc3BlYyBlbnRyeSBmb3IgTXNpTG9hZFN0cmluZyouCglQc2V1ZG8gc3R1YnMgZm9yIE1zaUxvY2F0ZUNvbXBvbmVudCouCgoJKiBkbGxzL3VzZXIvdGVzdHMvd2luLmMsIGRsbHMveDExZHJ2L3dpbmRvdy5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBhIHRlc3QgY2FzZSBmb3IgY2hpbGRyZW4gWiBvcmRlcmluZyBhdCB3aW5kb3cgY3JlYXRpb24gdGltZS4KCgkqIGRsbHMvdGFwaTMyL2Fzc2lzdGVkLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCUltcGxlbWVudCB0YXBpR2V0TG9jYXRpb25JbmZvLgoKCSogZG9jdW1lbnRhdGlvbi9zYW1wbGVzL2NvbmZpZywgdG9vbHMvd2luZWluc3RhbGw6CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglSZW1vdmUgIlBhdGgiIGxpbmVzIGZyb20gc2FtcGxlIGNvbmZpZy4KCVNldHVwIHRoZSBsaW5rcyBmb3IgdGhlIGRlZmF1bHQgRE9TIGRyaXZlcyBpbiB3aW5laW5zdGFsbC4KCgkqIHRvb2xzL3dyYy93cmMuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUFkZCBzdXBwb3J0IGZvciAtLXZlcmJvc2UgZm9yIGNvbXBhdGliaWxpdHkuCgoJKiBkbGxzL2NvbW1kbGcvTWFrZWZpbGUuaW4sIGRsbHMvY29tbWRsZy9maWxlZGxnLmMsCgkgIGRsbHMvY29tbWRsZy9maWxlZGxnMTYuYzoKCUh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglBZGQgYmFjayB3aW4xNiBzdHlsZSBkaWFsb2dzIGZvciB3aW4zMiBhcHBzLgoKCSogaW5jbHVkZS9pbW0uaDogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCURvbid0IGRlY2xhcmUgR0RJIHN0dWZmIHdoZW4gTk9HREkgaXMgZGVmaW5lZC4KCgkqIGRsbHMvb2xlMzIvZGVmYXVsdGhhbmRsZXIuYywgZGxscy9vbGUzMi9maWxlbW9uaWtlci5jLAoJICBkbGxzL3NoZG9jdncvb2xlb2JqZWN0LmMsIGluY2x1ZGUvd2luZXJyb3IuaDoKCUZpbGlwIE5hdmFyYSA8eG5hdmFyYUB2b2xueS5jej4KCUdldCByaWQgb2YgRV9VTlNQRUMgbm9uLXN0YW5kYXJkIGVycm9yIHZhbHVlLgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglSZW1vdmUgdHJhaWxpbmcgd2hpdGUgc3BhY2UuCglDbGVhbnVwIHdoaXRlIHNwYWNlIGFuZCBmb3JtYXQgaW4gZGlyZWN0IHNvdW5kIGNhcHR1cmUgcm91dGluZXMuCgoyMDA0LTA0LTA5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogdG9vbHMvd3JjL3BhcnNlci5sOgoJRml4ZWQgbGluZSBudW1iZXIgaGFuZGxpbmcgZm9yIGVzY2FwZWQgZW5kIG9mIGxpbmVzIGluc2lkZSBzdHJpbmdzLgoKCSogdG9vbHMvd2luZWR1bXAvUkVBRE1FLCB0b29scy93aW5lZHVtcC93aW5lZHVtcC5tYW46CglNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmRlPgoJLSByZW1vdmUgZnJvbSBSRUFETUUgdGhlIHN0dWZmIHRoYXQncyBhbHJlYWR5IGluIHRoZSBtYW4gcGFnZQoJLSBtb3JlIHN0dWZmIGdvZXMgZnJvbSBSRUFETUUgdG8gdGhlIG1hbiBwYWdlCgktIHNwZWxsaW5nIGZpeGVzCgoJKiBkbGxzL3gxMWRydi9rZXlib2FyZC5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQ29uZGl0aW9uYWxseSBjb21waWxlIGNvZGUgd2hpY2ggdXNlcyBYS19FdXJvU2lnbiBkZWZpbml0aW9uLgoKCSogZGxscy92ZXJzaW9uL01ha2VmaWxlLmluOiBIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCUxpbmsgdG8gbnRkbGwuCgoJKiBkbGxzL21zaS9tc2kuc3BlYzogSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglDb3JyZWN0IHNwZWMgZW50cnkgZm9yIERsbEdldENsYXNzT2JqZWN0LgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglQYXRjaCB0aGUgZnJhZ21lbnQgc2l6ZSBpZiBpdCBkb2VzIG5vdCBtYXRjaCB0aGUgY3VycmVudCBzb3VuZAoJZm9ybWF0LiBUaGlzIHNhdmVzIHVzIGZyb20gdHJpZ2dlcmluZyBhIGtlcm5lbCBmcmVlemUgb24gc29tZSBPU1MgMi40CgkrIFNvdW5kQmxhc3RlciAxNiBzeXN0ZW1zLgoKCSogZGxscy9zaGVsbDMyL3NobGV4ZWMuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglDbGVhbnVwIHRoZSBoYW5kbGluZyBvZiB0aGUgZXh0ZW5zaW9uIGluIFNIRUxMX0ZpbmRFeGVjdXRhYmxlKCk6CgktIEVsaW1pbmF0ZSB0aGUgY29ycmVzcG9uZGluZyBmaXhlZC1zaXplIGJ1ZmZlciB3aGljaCByZW1vdmVzIHRoZQoJICBsaW1pdGF0aW9uIHRvIDMgY2hhcmFjdGVyIGV4dGVuc2lvbnMuCgktIEZpeCBoYW5kbGluZyBvZiB0aGUgdHJhaWxpbmcgJy4nIGNhc2UuCgktIERvIGEgY2FzZS1pbnNlbnNpdGl2ZSBjaGVjayBmb3IgdGhlIGV4dGVuc2lvbiBpbiB3aW4uaW5pLgoJSW5jcmVhc2UgdGhlIHNpemUgb2YgdGhlIGNvbW1hbmQgYnVmZmVyIHRvIDEwMjQuCgoJKiBkbGxzL21zdmNydC9wcm9jZXNzLmMsIGRsbHMvc2hsd2FwaS90aHJlYWQuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJVXNlIG5hbWVkIGNvbnN0YW50cyBpbnN0ZWFkIG9mIG1hZ2ljIG51bWJlcnMuCgoJKiBpbmNsdWRlL21zdmNydC9tYXRoLmg6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglBZGRlZCBkZWZpbml0aW9uIGZvciBIVUdFX1ZBTC4KCgkqIHRvb2xzL3dpbmVnY2Mvd2luZWdjYy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJU3BlY2lmeSB0aGUgcmlnaHQgbmFtZSBmb3IgdGhlIFdpbmVsaWIgc2hhcmVkIG9iamVjdC4KCgkqIGluY2x1ZGUvd2luZ2RpLmg6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglBZGQgc3RydWN0IG5hbWUgZm9yIEJJVE1BUElORk8uCgoyMDA0LTA0LTA4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogQU5OT1VOQ0UsIENoYW5nZUxvZywgVkVSU0lPTiwgY29uZmlndXJlOiBSZWxlYXNlIDIwMDQwNDA4LgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoyMDA0LTA0LTA4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9zaGVsbDMyL2VudW1pZGxpc3QuYywgZGxscy9zaGVsbDMyL2VudW1pZGxpc3QuaCwKCSAgZGxscy9zaGVsbDMyL3NoZmxkcl9kZXNrdG9wLmMsIGRsbHMvc2hlbGwzMi9zaGZsZHJfZnMuYywKCSAgZGxscy9zaGVsbDMyL3NoZmxkcl9teWNvbXAuYzoKCUp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCS0gbW92ZSBDcmVhdGVNeUNvbXBFbnVtTGlzdCBhbmQgQ3JlYXRlRGVza3RvcEVudW1MaXN0IHRvIHRoZWlyCgkgIHJlc3BlY3RpdmUgZmlsZXMKCS0gcmV3cml0ZSBDcmVhdGVGb2xkZXJFbnVtTGlzdCB0byBvbmx5IEZpbmRGaXJzdEZpbGUvRmluZE5leHRGaWxlIG9uY2UKCgkqIGRsbHMvbXN2Y3J0L21hdGguYzogUG9ydGFiaWxpdHkgZml4LgoKCSogZGxscy9tc3ZjcnQvd2NzLmM6IERhdmUgQmVsYW5nZXIgPGRhdmUuYmVsYW5nZXJAY2ltbWV0cnkuY29tPgoJd2NzdG9kOiBhZGRlZCBleHBvbmVudCBwYXJzaW5nIGFuZCBmaXhlZCBoYW5kbGluZyBvZiBuZWdhdGl2ZSBzaWduLgoKCSogZGxscy94MTFkcnYvd2lucG9zLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglSZXN0b3JlIGNvcnJlY3QgZm9jdXMgaGFuZGxpbmcgZm9yIFNob3dXaW5kb3coU1dfSElERSkgY2FzZS4KCgkqIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwgc2VydmVyL2ZkLmMsIHNlcnZlci9maWxlLmMsCgkgIHNlcnZlci9maWxlLmgsIHNlcnZlci9uYW1lZF9waXBlLmMsIHNlcnZlci9wcm90b2NvbC5kZWYsCgkgIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci9zZXJpYWwuYywgc2VydmVyL3NtYi5jLCBzZXJ2ZXIvc29jay5jLAoJICBzZXJ2ZXIvdHJhY2UuYzoKCVJlbW92ZWQgdGhlIGdldF9maWxlX2luZm8gcmVxdWVzdC4KCgkqIGRsbHMveDExZHJ2L3dpbnBvcy5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJUmV2ZXJ0IGFuIGVycm9uZW91cyBwYXRjaC4KCgkqIGRsbHMvdXNlci90ZXN0cy9tc2cuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBXTV9TRVRSRURSQVcgdGVzdC4KCgkqIGRsbHMva2VybmVsL3Byb2ZpbGUuYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUVtcHR5IHZhbHVlcyBuZWVkIHRvIGJlIHByZXNlcnZlZCBhcyBlbXB0eSB2YWx1ZXMgYW5kIG5vdCBhc3N1bWVkIHRvCgliZSBub25leGlzdGVudCB2YWx1ZXMuCgoJKiBpbmNsdWRlL3RhcGkuaDogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJQWRkIHNvbWUgc3RydWN0dXJlcyBhbmQgZGVmaW5lcy4KCgkqIHRvb2xzL3dpbmVidWlsZC9pbXBvcnQuYywgdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jLAoJICB0b29scy93aW5lYnVpbGQvd2luZWJ1aWxkLm1hbi5pbjoKCUF1dG9tYXRpY2FsbHkgZGV0ZWN0IHdoZXRoZXIgdGhlIGVudHJ5IHBvaW50IGlzIG1haW4gb3IgV2luTWFpbgoJaW5zdGVhZCBvZiBkZXBlbmRpbmcgb24gdGhlIHN1YnN5c3RlbSB0eXBlLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvZmlsZS5jLCBkbGxzL250ZGxsL2ZpbGUuYywgZmlsZXMvZmlsZS5jLAoJICBpbmNsdWRlL3dpbmJhc2UuaDoKCVJlcGxhY2UgdGhlIGdldF9maWxlX2luZm8gcmVxdWVzdCBieSBhbiBmc3RhdCgpIG9uIHRoZSBjbGllbnQgc2lkZS4KCgkqIGRsbHMvbnRkbGwvcnRsc3RyLmM6IFJvbGYgS2FsYmVybWF0dGVyIDxyb2xmLmthbGJlcm1hdHRlckBjaXRlbmcuY29tPgoJRml4IGJhZCBpbml0aWFsaXphdGlvbiBvZiBVbmljb2RlIGxlbmd0aCBwYXJhbWV0ZXJzIGluCglSdGxTdHJpbmdGcm9tR1VJRC4KCgkqIGRsbHMvZHBuZXQvYWRkcmVzcy5jLCBkbGxzL2RwbmV0L2NsaWVudC5jLAoJICBkbGxzL2RwbmV0L2RwbmV0X3ByaXZhdGUuaDoKCVJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJLSBhZGQgdHJhY2VzIHRvIGNsaWVudC5jIGFuZCBhZGRyZXNzLmMgc3R1YiBmdW5jdGlvbnMKCS0gaW1wbGVtZW50IHNvbWUgZGVidWdnaW5nIGZ1bmN0aW9ucyAoZGVidWdzdHJfU1ApCgktIGltcGxlbWVudCBJRGlyZWN0UGxheThBZGRyZXNzOjpHZXRTUC9JRGlyZWN0UGxheThBZGRyZXNzOjpTZXRTUAoKCSogZGxscy9zaGVsbDMyL2NwYW5lbC5oLCBkbGxzL3NoZWxsMzIvY3BhbmVsZm9sZGVyLmMsCgkgIGRsbHMvc2hlbGwzMi9lbnVtaWRsaXN0LmMsIGRsbHMvc2hlbGwzMi9lbnVtaWRsaXN0LmgsCgkgIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9waWRsLmgsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwgZGxscy9zaGVsbDMyL3NoZmxkcl9kZXNrdG9wLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGZsZHJfZnMuYywgZGxscy9zaGVsbDMyL3NoZmxkcl9teWNvbXAuYzoKCUp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCU1vdmUgY29udHJvbCBwYW5lbCBhcHBsZXQgZW51bWVyYXRpb24gdG8gY3BhbmVsZm9sZGVyLmMuCgoyMDA0LTA0LTA3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9udGRsbC9maWxlLmMsIGZpbGVzL2ZpbGUuYywgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLAoJICBzZXJ2ZXIvZmlsZS5jLCBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvdHJhY2UuYzoKCUhhbmRsZSB0aGUgc2V0X2ZpbGVfcG9pbnRlciByZXF1ZXN0IG9uIHRoZSBjbGllbnQgc2lkZS4KCgkqIGluY2x1ZGUvd2luZS93aW5lX2NvbW1vbl92ZXIucmM6CglTdGV2ZW4gRWR3YXJkcyA8c3RldmVuX2VkNDE1M0B5YWhvby5jb20+CglGaXggY29tcGlsaW5nIHVuZGVyIE1TX1ZDIDYuCgoJKiBkbGxzL3NoZWxsMzIvcGlkbC5jOiBNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJLSBTSEJpbmRUb1BhcmVudCgpOiByZXF1ZXN0IGNvcnJlY3QgQ09NIGludGVyZmFjZSBmcm9tIGRlc2t0b3AuCgktIF9JTENyZWF0ZUZyb21GaW5kRGF0YUEoKTogdHlwZSBjYXN0IHRvIGVsaW1pbmF0ZSBNU1ZDIGNvbXBpbGVyCgkgIHdhcm5pbmcuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9kcG5ldC8uY3ZzaWdub3JlLAoJICBkbGxzL2RwbmV0L01ha2VmaWxlLmluLCBkbGxzL2RwbmV0L2FkZHJlc3MuYywgZGxscy9kcG5ldC9jbGllbnQuYywKCSAgZGxscy9kcG5ldC9kcG5ldC5zcGVjLCBkbGxzL2RwbmV0L2RwbmV0X21haW4uYywKCSAgZGxscy9kcG5ldC9kcG5ldF9wcml2YXRlLmgsIGRsbHMvZHBuZXQvcGVlci5jLCBkbGxzL2RwbmV0L3JlZ3N2ci5jLAoJICBkbGxzL2RwbmV0L3NlcnZlci5jLCBkbGxzL2RwbmV0L3ZlcnNpb24ucmMsIHRvb2xzL3dpbmUuaW5mOgoJUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CglBZGRlZCBzaW1wbGUgZHBuZXQuZGxsIGltcGxlbWVudGF0aW9uLgoKCSogZGxscy9zaGVsbDMyL2NwYW5lbGZvbGRlci5jLCBkbGxzL3NoZWxsMzIvcGlkbC5jLAoJICBkbGxzL3NoZWxsMzIvcGlkbC5oLCBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmM6CglKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CgktIGNvbW1lbnQgZml4ZXMKCS0gaW1wcm92ZWQgZXJyb3IgY2hlY2tpbmcgYW5kIGNvbmZvcm1hbmNlIHdpdGggV2luZG93cwoJLSByZW1vdmUgc29tZSBzcHVyaW91cyBlcnJvciBtZXNzYWdlcwoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvdXNlci9taXNjLmMsCgkgIGRsbHMvdXNlci9yZXNvdXJjZS5jLCBkbGxzL3VzZXIvdXNlcjMyLnNwZWMsIGRsbHMvdmRtZGJnLy5jdnNpZ25vcmUsCgkgIGRsbHMvdmRtZGJnL01ha2VmaWxlLmluLCBkbGxzL3ZkbWRiZy92ZG1kYmcuYywKCSAgZGxscy92ZG1kYmcvdmRtZGJnLnNwZWM6CglTYW1pIEFhcmlvIDxzYW1pLmFhcmlvQHN1cmZldS5maT4KCVN0dWJzIHRvIHByZXZlbnQgdGFza21nci5leGUgZnJvbSBjcmFzaGluZyBvciBhYm9ydGluZyBkdXJpbmcKCXN0YXJ0dXAuCgoJKiBmaWxlcy9maWxlLmM6IEJldHRlciBmYWxsYmFjayBpbiBTZXRGaWxlVGltZSB3aGVuIGZ1dGltZXMgaXMgbWlzc2luZy4KCgkqIGRvY3VtZW50YXRpb24vdGVzdGluZy5zZ21sOiBNaWNoYWVsIEphY29ic2VuIDxpbV9ub3R0QGhvdG1haWwuY29tPgoJQ2xlYW5lZCB1cCB0aGUgdGV4dCBjb25jZXJuaW5nIHRoZSBuZWVkIGZvciBjb25mb3JtYW5jZSB0ZXN0cy4KCgkqIGRsbHMvZGJnaGVscC9lbGZfbW9kdWxlLmM6IEdlcmFsZCBQZmVpZmVyIDxnZXJhbGRAcGZlaWZlci5jb20+CglDYXN0IHRoaXJkIHBhcmFtZXRlciBvZiBlbGZfc2VhcmNoX2FuZF9sb2FkX2ZpbGUoKSB0byBwcm9wZXIgdHlwZS4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJRml4IGR1bWIgZXJyb3IgZnJvbSByZXYuIDEuMTU4LgoKCSogZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL250ZGxsL3J0bC5jLCBpbmNsdWRlL3dpbnRlcm5sLmg6CglSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCS0gZml4IERiZ1ByaW50IGFuZCBpbXBsZW1lbnQgRGJnUHJpbnRFeAoJLSBzdHViIGZvciBOdEltcGVyc29uYXRlQW5vbnltb3VzVG9rZW4KCgkqIGRsbHMvYWR2YXBpMzIvYWR2YXBpMzIuc3BlYzoKCVJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJQWRkZWQgc29tZSBzdHVicy4KCgkqIGluY2x1ZGUvZHBhZGRyLmgsIGluY2x1ZGUvZHBsYXk4Lmg6CglSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCUNvcnJlY3QgZHBsYXk4IGhlYWRlcnMgZm9yIGZ1dHVyZSB1c2UuCgoJKiBkbGxzL3V4dGhlbWUvc3lzdGVtLmMsIGRsbHMvdXh0aGVtZS91eHRoZW1lLnNwZWM6CglLZXZpbiBLb2x0emF1IDxrZXZpbkBwbG9wLm9yZz4KCUltcGxlbWVudCBDaGVja1RoZW1lU2lnbmF0dXJlLgoKCSogdG9vbHMvbWFrZWRlcC5jOgoJQWRkZWQgc29tZSBjaGVja3MgZm9yIHRoZSBjb25maWcuaCBpbmNsdXNpb24gcnVsZXMgaW4gdGhlIFdpbmUgdHJlZS4KCgkqIGRsbHMvZGRyYXcvbWFpbi5jLCBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmMsIGRsbHMvdXNlci9jb21tMTYuYywKCSAgZGxscy93aW5lcHMvdHlwZTEuYywgZGxscy93aW5lcHMvdHlwZTQyLmM6CglGaXhlZCBhIGNvdXBsZSBvZiBoZWFkZXIgZmlsZXMgb3JkZXJpbmcgaXNzdWVzLgoKCSogZGxscy9udGRsbC9maWxlLmM6CglCZXR0ZXIgc3VwcG9ydCBmb3IgZGV2aWNlIGhhbmRsZXMgaW4gTnRRdWVyeVZvbHVtZUluZm9ybWF0aW9uRmlsZS4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL3gxMWRydi94cmFuZHIuYywgaW5jbHVkZS9jb25maWcuaC5pbjoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUxvYWQgdGhlIFhSYW5kUiBleHRlbnNpb24gZHluYW1pY2FsbHkgKHdpdGggaGVscCBmcm9tIEFsZXggUGFzYWR5bikuCgoJKiBmaWxlcy9zbWIuYzogSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJUHJvcGVybHkgbWFwIFNNQiBlcnJvcnMgdXNpbmcgRE9TLXN0eWxlIGVycm9yIGNvZGVzLgoKCSogZGxscy9zaGVsbDMyL3NobGV4ZWMuYzogTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCVJlc29sdmUgc2hlbGwgc2hvcnRjdXRzIGFuZCBwcm9jZXNzIElEIGxpc3RzIGluIFNoZWxsRXhlY3V0ZSgpCglmdW5jdGlvbnMuCgoyMDA0LTA0LTA2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9rZXJuZWwvdm9sdW1lLmMsIGRsbHMva2VybmVsL3Z4ZC5jLCBkbGxzL3dpbmVkb3MvaW50MjEuYywKCSAgZmlsZXMvZmlsZS5jLCBpbmNsdWRlL2ZpbGUuaCwgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLAoJICBtaXNjL3JlZ2lzdHJ5LmMsIHNlcnZlci9maWxlLmMsIHNlcnZlci9maWxlLmgsIHNlcnZlci9tYXBwaW5nLmMsCgkgIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci90cmFjZS5jOgoJR2V0IHJpZCBvZiB0aGUgcmVtb3ZhYmxlIG1lZGlhIGhhbmRsaW5nIGluIHRoZSBzZXJ2ZXIuCgoJKiBkbGxzL250ZGxsL2ZpbGUuYywgZGxscy9udGRsbC9sb2FkZXIuYywgZGxscy9udGRsbC9udGRsbF9taXNjLmgsCgkgIGRsbHMvbnRkbGwvdmlydHVhbC5jLCBpbmNsdWRlL3dpbnRlcm5sLmgsIHNlcnZlci9wcm9jZXNzLmM6CglIYW5kbGUgZmlsZSBtYXBwaW5ncyBvbiByZW1vdmFibGUgbWVkaWEgZW50aXJlbHkgaW5zaWRlIG50ZGxsLgoKCSogZGxscy9zaGVsbDMyL2RlYnVnaGxwLmMsIGRsbHMvc2hlbGwzMi9lbnVtaWRsaXN0LmMsCgkgIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9waWRsLmgsCgkgIGRsbHMvc2hlbGwzMi9zaGZsZHJfZGVza3RvcC5jLCBkbGxzL3NoZWxsMzIvc2hmbGRyX215Y29tcC5jOgoJSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJLSByZW5hbWUgUFRfU1BFQ0lBTCB0byBQVF9TSEVMTEVYVAoJLSByZW1vdmUgdW5uZWNlc3NhcmlseSBjb21wbGV4IF9JTENyZWF0ZQoJLSBjb21iaW5lIF9JTENyZWF0ZVZhbHVlIGFuZCBfSUxDcmVhdGVGb2xkZXIsIHNpbmNlIHRoZWlyIG91dHB1dHMKCSAgZGlmZmVyZWQgYnkgb25seSBvbmUgYnl0ZS4KCgkqIGRsbHMvbnRkbGwvdmlydHVhbC5jOgoJRml4ZWQgc29tZSBwb3RlbnRpYWwgcmFjZXMgaW4gdGhlIGhhbmRsaW5nIG9mIHRoZSB2aWV3IHN0cnVjdHVyZXMuCgoJKiBkbGxzL3dpbmVkb3MvaW50MTUuYzogRmxvcmlhbiBHb3RoIDxDYXB0YWluc2lmZmZAZ214LmRlPgoJQWRkZWQgc29tZSBtb3JlIHN0dWJzIGFmdGVyIGV4YW1pbmluZyB0aGUgZG9zYm94IHNvdXJjZSBjb2RlLgoKCSogZGxscy9kYmdoZWxwL3N0b3JhZ2UuYzogR2VyYWxkIFBmZWlmZXIgPGdlcmFsZEBwZmVpZmVyLmNvbT4KCUF2b2lkIGNvbXBpbGVyIHdhcm5pbmcgaW4gdmVjdG9yX3Bvc2l0aW9uKCkuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYzogU2hhY2hhciBTaGVtZXNoIDx3aW5lLXBhdGNoZXNAc2hlbWVzaC5iaXo+CglTdGF0aWMgbGlicmFyaWVzIG5hbWVzIGZvciBJQ1UgYXJlIGxpYnNpY3UqLmEgbm93LgoJQWRkIHByaW50b3V0IG9mIHRoZSBsaW5raW5nIHRlc3QuCgoJKiBkbGxzL3VzZXIvdGVzdHMvbXNnLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglNYWtlIHVzZSBvZiB0aGUgJ2RlZndpbnByb2MnIGZsYWcgaW4gdGhlIG1lc3NhZ2UgdGVzdC4KCgkqIGRsbHMvZGlucHV0L01ha2VmaWxlLmluLCBkbGxzL2RpbnB1dC9kaW5wdXRfbWFpbi5jLAoJICBkbGxzL2RpbnB1dC9yZWdzdnIuYywgdG9vbHMvd2luZS5pbmY6CglKYW1lcyBQZXJyeSA8amFtZXNwQGVwY2MuZWQuYWMudWs+CglNYWtlIGRpbnB1dC5kbGwgc2VsZiByZWdpc3Rlci4KCgkqIGRsbHMvZHNvdW5kL2NhcHR1cmUuYywgZGxscy9kc291bmQvdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvZHNvdW5kL3Rlc3RzL2NhcHR1cmUuYzoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglGaXhlZCBkZWFkbG9jayBpbiBjYXB0dXJlIGNhbGxiYWNrLgoJRml4ZWQgY2FwdHVyZSB0ZXN0IHRvIGNoZWNrIGFsbCBub3RpZmljYXRpb25zLgoJQWRkZWQgYmV0dGVyIGRlYnVnIG1lc3NhZ2VzIHRvIGNhcHR1cmUgdGVzdC4KCgkqIGRsbHMvbnRkbGwvZmlsZS5jOgoJUGFydGlhbCBpbXBsZW1lbnRhdGlvbiBvZiBOdFF1ZXJ5Vm9sdW1lSW5mb3JtYXRpb25GaWxlLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGluY2x1ZGUvY29uZmlnLmguaW4sIGluY2x1ZGUvd2luZS9wb3J0LmgsCgkgIGxpYnMvcG9ydC9NYWtlZmlsZS5pbiwgbGlicy9wb3J0L2ZzdGF0dmZzLmM6CglBZGRlZCBzdXBwb3J0IGZvciBmc3RhdHZmcy4KCgkqIGRsbHMvY29tbWRsZy9jZGxnX0VzLnJjLCBkbGxzL21zYWNtL21zYWNtLnJjLCBkbGxzL21zYWNtL21zYWNtX0VzLnJjLAoJICBkbGxzL29sZWRsZy9vbGVkbGdfRXMucmMsIGRsbHMvb2xlZGxnL3JzcmMucmMsCgkgIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnJjLCBkbGxzL3NobHdhcGkvc2hsd2FwaV9Fcy5yYywKCSAgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfRXMucmMsIGRsbHMvd2luZXBzL3dwc19Fcy5yYywKCSAgcHJvZ3JhbXMvY2xvY2svRXMucmMsIHByb2dyYW1zL2NtZGxndHN0L0VzLnJjLAoJICBwcm9ncmFtcy9jbWRsZ3RzdC9jbWRsZ3IucmMsIHByb2dyYW1zL25vdGVwYWQvRXMucmMsCgkgIHByb2dyYW1zL3Byb2dtYW4vRXMucmMsIHByb2dyYW1zL3JlZ2VkaXQvRXMucmMsIHByb2dyYW1zL3djbWQvRXMucmMsCgkgIHByb2dyYW1zL3djbWQvd2NtZHJjLnJjOgoJSm9z6SBNYW51ZWwgRmVycmVyIE9ydGl6IDxqbWZvMTk4MkB5YWhvby5lcz4KCVVwZGF0ZWQgU3BhbmlzaCB0cmFuc2xhdGlvbnMuCgoJKiBkbGxzL3NoZWxsMzIvZGVidWdobHAuYywgZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3BpZGwuaCwKCSAgZGxscy9zaGVsbDMyL3NoZmxkcl9kZXNrdG9wLmMsIGRsbHMvc2hlbGwzMi9zaGZsZHJfbXljb21wLmM6CglKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglSZW5hbWUgUFRfTVlDT01QIHRvIFBUX0dVSUQsIGFuZCB0aGUgY29ycmVzcG9uZGluZyB1bmlvbiBtZW1iZXIgZnJvbQoJbXljb21wIHRvIGd1aWQuCgoJKiBkbGxzL3VzZXIvbWlzYy5jOiBTYW1pIEFhcmlvIDxzYW1pLmFhcmlvQHN1cmZldS5maT4KCUZpeCByZXR1cm4gdHlwZXMgb2YgR2V0VGhyZWFkRGVza3RvcCBhbmQgT3BlbkRlc2t0b3BBLgoKMjAwNC0wNC0wNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbXByLy5jdnNpZ25vcmUsIGRsbHMvbXByL01ha2VmaWxlLmluLCBkbGxzL21wci9tcHIucmMsCgkgIGRsbHMvbXByL21wcl9Fbi5yYywgZGxscy9tcHIvbXByX21haW4uYywgZGxscy9tcHIvbXBycmVzLmgsCgkgIGRsbHMvbXByL3ZlcnNpb24ucmMsIGRsbHMvbXByL3duZXQuYywgZGxscy9tcHIvd25ldHByaXYuaCwKCSAgaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9ucGFwaS5oOgoJSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJLSBpbXBsZW1lbnQgbG9hZGluZyBuZXR3b3JrIHByb3ZpZGVycwoJLSBpbXBsZW1lbnQgZW51bWVyYXRpb24gZnVuY3Rpb25zCgktIHNvbWUgaW1wcm92ZWQgZXJyb3IgY2hlY2tpbmcgYW5kIEEtPlcgY29udmVyc2lvbgoKCSogZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jOiBKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglVc2Ugc3ltYm9saWMgY29uc3RhbnRzIGZvciBtYWdpYyBudW1iZXJzIGluIFNIR2V0Rm9sZGVyUGF0aFcsIGF2b2lkCglkb2luZyBNdWx0aUJ5dGVUb1dpZGVDaGFyIG9uIHZhbHVlcyB0aGF0IGRvbid0IG5lZWQgaXQsCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy92ZXJzaW9uL01ha2VmaWxlLmluLAoJICBkbGxzL3ZlcnNpb24vdGVzdHMvLmN2c2lnbm9yZSwgZGxscy92ZXJzaW9uL3Rlc3RzL01ha2VmaWxlLmluLAoJICBkbGxzL3ZlcnNpb24vdGVzdHMvaW5mby5jOgoJU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtTGluZS5jb20+CglBZGRlZCB0ZXN0cyBmb3IgR2V0RmlsZVZlcnNpb25JbmZvU2l6ZUEuCgoJKiBkbGxzL3ZlcnNpb24vaW5mby5jOiBTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCU1vdmVkIGltcGxlbWVudGF0aW9uIG9mIEdldEZpbGVWZXJzaW9uSW5mb1NpemUgZnJvbSBhc2NpaSB0byB1bmljb2RlLAoJZml4ZWQgZmFpbGluZywgY3Jhc2hpbmcgdGVzdCBjYXNlcy4KCgkqIGRsbHMvaW1hZ2VobHAvTWFrZWZpbGUuaW4sIGRsbHMvaW1hZ2VobHAvYWNjZXNzLmMsCgkgIGRsbHMvaW1hZ2VobHAvZGVidWcuYywgZGxscy9pbWFnZWhscC9pbWFnZWhscC5zcGVjLAoJICBkbGxzL2ltYWdlaGxwL2ltYWdlaGxwX21haW4uYywgZGxscy9pbWFnZWhscC9zeW1ib2wuYywKCSAgaW5jbHVkZS9pbWFnZWhscC5oOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglNb3ZlZCBxdWl0ZSBhIGZldyBmdW5jdGlvbnMgdG8gZGJnaGVscCAocmVtb3ZlZCBkZWJ1Zy5jIGFuZCBzeW1ib2wuYwoJZmlsZXMpLgoKCSogcHJvZ3JhbXMvdGFza21nci9kYmdjaG5sLmM6IEVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJU2V0IGNvcnJlY3Qgb3B0aW9ucyBmb3IgZGJnaGVscCAoRUxGIGxvYWRpbmcgJiBwYXJzaW5nIHNwZWVkKS4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYywgZGxscy93aW5zb2NrL3dzMl8zMi5zcGVjLCBpbmNsdWRlL3dpbnNvY2syLmgsCgkgIGluY2x1ZGUvd3R5cGVzLmgsIGluY2x1ZGUvd3R5cGVzLmlkbDoKCVJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCVN0dWIgaW1wbGVtZW50YXRpb24gZm9yIFdTQUxvb2t1cFNlcnZpY2VCZWdpbkEvVy4KCgkqIGRsbHMvc2hlbGwzMi9mb2xkZXJzLmM6IEp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCUdldCByaWQgb2YgYSBmZXcgcG9pbnRsZXNzIEEvVyBjb252ZXJzaW9ucy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2RiZ2hlbHAvLmN2c2lnbm9yZSwKCSAgZGxscy9kYmdoZWxwL01ha2VmaWxlLmluLCBkbGxzL2RiZ2hlbHAvZGJnaGVscC5jLAoJICBkbGxzL2RiZ2hlbHAvZGJnaGVscC5zcGVjLCBkbGxzL2RiZ2hlbHAvZGJnaGVscF9wcml2YXRlLmgsCgkgIGRsbHMvZGJnaGVscC9lbGZfbW9kdWxlLmMsIGRsbHMvZGJnaGVscC9pbWFnZS5jLAoJICBkbGxzL2RiZ2hlbHAvbWVtb3J5LmMsIGRsbHMvZGJnaGVscC9taW5pZHVtcC5jLAoJICBkbGxzL2RiZ2hlbHAvbW9kdWxlLmMsIGRsbHMvZGJnaGVscC9tc2MuYywgZGxscy9kYmdoZWxwL3BhdGguYywKCSAgZGxscy9kYmdoZWxwL3BlX21vZHVsZS5jLCBkbGxzL2RiZ2hlbHAvc291cmNlLmMsCgkgIGRsbHMvZGJnaGVscC9zdGFicy5jLCBkbGxzL2RiZ2hlbHAvc3RhY2suYywgZGxscy9kYmdoZWxwL3N0b3JhZ2UuYywKCSAgZGxscy9kYmdoZWxwL3N5bWJvbC5jLCBkbGxzL2RiZ2hlbHAvdHlwZS5jLCBpbmNsdWRlL01ha2VmaWxlLmluLAoJICBpbmNsdWRlL2N2Y29uc3QuaCwgaW5jbHVkZS9kYmdoZWxwLmg6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCUZpcnN0IHNob3QgYXQgaW1wbGVtZW50aW5nIGRiZ2hlbHAuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9Dbi5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfRGUucmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0VuLnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9Fcy5yYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfRnIucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0l0LnJjLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9KYS5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfUHQucmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX1NpLnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9Tay5yYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfWmgucmM6CglNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJQWRkIHJlc291cmNlIHN0cmluZ3MgZm9yIGNvbnRyb2wgcGFuZWwgZm9sZGVyLgoKCSogZGxscy9zaGVsbDMyL3NobGV4ZWMuYzogTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCU9wdGltaXphdGlvbjogbnVsbCB0ZXJtaW5hdGUgc3RyaW5nIGJ1ZmZlcnMgaW5zdGVhZCBvZiBmaWxsaW5nIHRoZW0KCWNvbXBsZXRlbHkgd2l0aCAwLgoKCSogZGxscy9zaGVsbDMyL2ZvbGRlcnMuYzogTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCUdldCBpY29ucyBmb3Igc2hlbGwgbGluayBmaWxlcy4KCgkqIGRsbHMvbnRkbGwvcGF0aC5jLCBpbmNsdWRlL3dpbnRlcm5sLmg6CglGaXhlZCBSdGxEb3NQYXRoTmFtZVRvTnRQYXRoTmFtZV9VIHByb3RvdHlwZS4KCgkqIGRsbHMvd2lubW0vbWNpYXZpL21tb3V0cHV0LmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRmFsbGJhY2sgdG8gYSBjb21wcmVzc2lvbiBzY2hlbWUgc3BlY2lmaWVkIGluIHRoZSBzdHJlYW0gZm9ybWF0IGluIHRoZQoJY2FzZSBGT1VSQ0MgaGFuZGxlciBkb2VzIG5vdCBleGlzdCBvciBmb3JtYXQgaXMgbm90IHN1cHBvcnRlZC4KCgkqIGluY2x1ZGUvd2luY3J5cHQuaDogSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJQWRkIGEgYnVuY2ggb2YgbWlzc2luZyBkZWNsYXJhdGlvbnMuCgoJKiBpbmNsdWRlL3dpbm50Lmg6IEp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCWlmZGVmIGd1YXJkIFRDSEFSIGRlY2xhcmF0aW9uIGxpa2UgUFNESyBkb2VzLgoKCSogZGxscy9uZXRhcGkzMi9uZXRhcGkzMi5jLCBkbGxzL25ldGFwaTMyL25ldGFwaTMyLnNwZWMsCgkgIGRsbHMvbmV0YXBpMzIvdGVzdHMvYWNjZXNzLmMsIGRsbHMvbmV0YXBpMzIvdGVzdHMvd2tzdGEuYywKCSAgZGxscy9uZXRhcGkzMi93a3N0YS5jOgoJSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJLSBmaXggYSBjb3VwbGUgdGVzdHMgYW5kIHRyYWNlcwoJLSBhZGQgYSBjb3VwbGUgc3R1YnMgcmVxdWlyZWQgYnkgbmF0aXZlIG50bGFubWFuLmRsbAoKCSogZGxscy94MTFkcnYvY2xpcGJvYXJkLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCURvIG5vdCBjcmFzaCBpZiB0aGUgY2xpcGJvYXJkIGZvcm1hdCBpcyB1bmtub3duLgoKCSogZGxscy9xdWFydHovZmlsdGVyZ3JhcGguYzogTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5jb20+CglGaXggY3V0J24ncGFzdGUgZXJyb3I6IGxlYXZlIHRoZSBDcml0aWNhbFNlY3Rpb24gbm90IGVudGVyIGl0IGFnYWluCgkoZm91bmQgYnkgc21hdGNoKS4KCgkqIGRsbHMvd2lubW0vbWNpLmMsIGRsbHMvd2lubW0vbWVzc2FnZTE2LmMsIGRsbHMvd2lubW0vd2lubW1fcmVzLnJjLAoJICBpbmNsdWRlL3dpbmUvbW1zeXN0ZW0xNi5oOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CgktIGltcGxlbWVudGVkIE1DSV9TT1VORCBjb21tYW5kCgktIGZpeGVkIE1DSSBjb21tYW5kIHRhYmxlIGluIHJlc291cmNlCgktIGFkZGVkIGEgVE9ETyBsaXN0IG9uIE1DSSBoYW5kbGluZwoKCSogZGxscy9rZXJuZWwvbG9jYWxlLmMsIGRsbHMva2VybmVsL3Rlc3RzL2xvY2FsZS5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUFkZCBiZXR0ZXIgTlVMTCBjaGVja3MgdG8gbHN0cmNtcFtpXShBL1cpIGZ1bmN0aW9ucy4KCgkqIG9iamVjdHMvcmVnaW9uLmM6IFJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CglEb2N1bWVudGF0aW9uIGZvciBtb3N0IG9mIHRoZSByZWdpb24gZnVuY3Rpb25zLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsbGluay5jOiBNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJLSBmaXggZGlydHkgZmxhZyBvbiBzaGVsbGxpbmsgbG9hZGluZyBhbmQgc2F2aW5nCgktIHVwZGF0ZSBhYnNvbHV0ZSBwYXRoIHdoZW4gY2hhbmdpbmcgcmVsYXRpdmUgcGF0aAoKCSogZGxscy91eHRoZW1lL3N5c3RlbS5jOiBLZXZpbiBLb2x0emF1IDxrZXZpbkBwbG9wLm9yZz4KCUltcGxlbWVudGVkIEVudW1UaGVtZXMuCgoyMDA0LTA0LTAzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9rZXJuZWwvZmlsZS5jLCBkbGxzL2tlcm5lbC90ZXN0cy9maWxlLmMsIGRsbHMva2VybmVsL3ZvbHVtZS5jLAoJICBmaWxlcy9maWxlLmM6CglSZWltcGxlbWVudGVkIERlbGV0ZUZpbGUgYnkgdXNpbmcgQ3JlYXRlRmlsZSB3aXRoCglGSUxFX0ZMQUdfREVMRVRFX09OX0NMT1NFLiBBZGRlZC9maXhlZCBhIGZldyB0ZXN0cy4KCjIwMDQtMDQtMDIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC92b2x1bWUuYywgZGxscy9rZXJuZWwvdnhkLmMsIGRvY3VtZW50YXRpb24vd2luZS5jb25mLm1hbiwKCSAgZmlsZXMvZHJpdmUuYywgZmlsZXMvZmlsZS5jLCBpbmNsdWRlL2ZpbGUuaCwgbWlzYy9yZWdpc3RyeS5jOgoJUmVtb3ZlZCB0aGUgRmFpbFJlYWRPbmx5IG9wdGlvbiwgdGhpcyBpcyBub3cgdGhlIGRlZmF1bHQgYmVoYXZpb3IuCgoJKiBpbmNsdWRlL21zdmNydC9saW1pdHMuaDoKCUZlbGl4IE5hd290aG5pZyA8ZmVsaXgubmF3b3RobmlnQHQtb25saW5lLmRlPgoJRGVmaW5lIGFsbCBtYWNyb3MgZGVzY3JpYmVkIG9uIE1TRE4uCgoJKiBkbGxzL2NvbW1kbGcvY2RsZ19Fbi5yYzogUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCVNlcGFyYXRlIFVTIEVuZ2xpc2ggcmVzb3VyY2VzIGZyb20gRW5nbGlzaCBvbmVzLgoKCSogZGxscy9kM2Q4L2QzZGNvcmVfZ2wuaDogUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CglGaXggdGhlIEdMX01BWF9WRVJURVhfVU5JVFNfQVJCIHVuZGVjbGFyZWQgY29tcGlsYXRpb24gZXJyb3IuCgoJKiBkbGxzL250ZGxsL3RpbWUuYzogQSBjb3VwbGUgb2Ygb3B0aW1pemF0aW9ucyBhbmQgYnVnIGZpeGVzLgoKCSogZGxscy91c2VyL3Rlc3RzL21zZy5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkIG5ldyB0ZXN0cyBmb3IgdmFyaW91cyB3aW5kb3cgY3JlYXRpb24vcG9zaXRpb25pbmcgYmVoYXZpb3Vycy4KCgkqIGRsbHMveDExZHJ2L3dpbnBvcy5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkIFNXUF9OT1pPUkRFUiBpbiB0aGUgY2FzZSBpdCdzIG5vdCBuZWVkZWQuCgoJKiBkbGxzL3gxMWRydi93aW5wb3MuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUEgZGVjaXNpb24gd2hldGhlciBhZGQgU1dQX05PQUNUSVZBVEUgb3Igbm90IHNob3VsZCBiZSBiYXNlZCBvbgoJR2V0QWN0aXZlV2luZG93KCkgdGVzdC4KCgkqIGRsbHMveDExZHJ2L3dpbnBvcy5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJU2hvd1dpbmRvdyBzaG91bGQgbm90IG9wdGltaXplIFNXX0hJREUsIGl0J3MgdGhlIGpvYiBvZiBTZXRXaW5kb3dQb3MuCgoJKiBkbGxzL3gxMWRydi93aW5wb3MuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVNlbmRpbmcgV01fU0hPV1dJTkRPVyBpcyBhIGpvYiBvZiBTZXRXaW5kb3dQb3MuCgoJKiBkbGxzL3gxMWRydi93aW5kb3cuYywgd2luZG93cy93aW4uYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglTZXR0aW5nIFdTX1ZJU0lCTEUgc3R5bGUgZG9lcyBub3QgcmVxdWlyZSBhbnkgc3BlY2lhbCBoYW5kbGluZy4KCgkqIHdpbmRvd3Mvd2luLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglXTV9QQVJFTlROT1RJRlkgc2hvdWxkIG5vdCBiZSBzZW50IHRvIFdTX1BPUFVQIHdpbmRvd3MuCgoJKiBzZXJ2ZXIvZmQuYywgc2VydmVyL2ZpbGUuYywgc2VydmVyL2ZpbGUuaDoKCU1vdmVkIEZJTEVfREVMRVRFX09OX0NMT1NFIHN1cHBvcnQgdG8gdGhlIGlub2RlIG9iamVjdCBzbyB0aGF0IHdlCglyZWFsbHkgd2FpdCBmb3IgdGhlIGxhc3QgY2xvc2UuCglBZGRlZCBGSUxFX1NIQVJFX0RFTEVURSBzdXBwb3J0LgoKCSogaW5jbHVkZS93aW5lL3VuaWNvZGUuaCwgbGlicy91bmljb2RlL3N0cmluZy5jLAoJICBsaWJzL3VuaWNvZGUvd2luZV91bmljb2RlLmRlZiwgbGlicy91bmljb2RlL3dpbmVfdW5pY29kZS5tYXA6CglBZGRlZCBtZW1pY21wVy4KCgkqIGRsbHMva2VybmVsL3Byb2ZpbGUuYzoKCURvbid0IHRyeSB0byBnZXQgdGhlIGZpbGUgdGltZSBpZiB0aGUgZmlsZSB3YXNuJ3QgZm91bmQuCgoJKiBjb250cm9scy9tZW51LmM6IEJvYmJ5IEJpbmdoYW0gPGJpbmdoYW0uMjFAb3N1LmVkdT4KCUZpeCB0cmFja2luZyB0aGUgY3VycmVudGx5IGhpZ2hsaWdodGVkIGl0ZW0gaW4gbWVudXMgd2hlbiB0aGUgbW91c2UKCWJ1dHRvbiBpcyBub3QgaGVsZCBkb3duLgoKCSogZGxscy9udGRsbC90aW1lLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCUZpeCBpbmNvcnJlY3QgY2FsY3VsYXRpb24gb2YgbGVhcCB5ZWFyIGluIFJ0bFRpbWVGaWVsZHNUb1RpbWUoKS4KCgkqIGRsbHMva2VybmVsL2NvbnNvbGUuYywgZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYzoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJR2V0Q29uc29sZUluZm8oKSBwc2V1ZG8gc3R1Yi4KCgkqIGRsbHMvbmV0YXBpMzIvbmV0YXBpMzIuYywgZGxscy9uZXRhcGkzMi9uZXRhcGkzMi5zcGVjOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglOZXRTZXJ2ZXJHZXRJbmZvKCkgcHNldWRvIHN0dWIuCgoJKiBkbGxzL2dkaS9wYWludGluZy5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggYnVnIGluIEdkaUdyYWRpZW50RmlsbC4KCgkqIGRsbHMvZG1zY3JpcHQvc2NyaXB0LmM6IFJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJSW5pdGlhbGl6ZSBjb3JyZWN0bHkgdGhlIERNVVNfT0JKRUNUREVTQyBsb2NhbCBzdHJ1Y3R1cmUuCgoyMDA0LTA0LTAxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29udHJvbHMvZWRpdC5jLCBjb250cm9scy9tZW51LmMsIGNvbnRyb2xzL3VpdG9vbHMuYywKCSAgZGxscy91c2VyL3VzZXJfbWFpbi5jLCBkb2N1bWVudGF0aW9uL1BBQ0tBR0lORywKCSAgZG9jdW1lbnRhdGlvbi9jb25maWd1cmluZy5zZ21sLCBkb2N1bWVudGF0aW9uL3NhbXBsZXMvY29uZmlnLAoJICBkb2N1bWVudGF0aW9uL3dpbmUuY29uZi5tYW4sIGluY2x1ZGUvdXNlci5oLCBwcm9ncmFtcy93aW5lY2ZnL0VuLnJjLAoJICBwcm9ncmFtcy93aW5lY2ZnL0VzLnJjLCBwcm9ncmFtcy93aW5lY2ZnL1B0LnJjLAoJICBwcm9ncmFtcy93aW5lY2ZnL1J1LnJjLCBwcm9ncmFtcy93aW5lY2ZnL1NpLnJjLAoJICBwcm9ncmFtcy93aW5lY2ZnL2FwcGRlZmF1bHRzLmMsIHByb2dyYW1zL3dpbmVjZmcvcHJvcGVydGllcy5jLAoJICBwcm9ncmFtcy93aW5lY2ZnL3Byb3BlcnRpZXMuaCwgcHJvZ3JhbXMvd2luZWNmZy9yZXNvdXJjZS5oLAoJICBwcm9ncmFtcy93aW5lY2ZnL3dpbmVjZmcuYzoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglSZW1vdmUgdGhlIHJlc3Qgb2YgdGhlIFR3ZWFrIGxvb2sgaGFjay4KCgkqIGRsbHMvbnRkbGwvc3luYy5jOiBSb2xmIEthbGJlcm1hdHRlciA8cm9sZi5rYWxiZXJtYXR0ZXJAY2l0ZW5nLmNvbT4KCU50UHVsc2VFdmVudDogRG9uJ3QgcHJpbnQgRklYTUUgZm9yIGFuIG9wdGlvbmFsIHBhcmFtZXRlciBpZiBpdCBpc24ndAoJdXNlZC4KCgkqIGluY2x1ZGUvc2hlbGxhcGkuaDogUm9sZiBLYWxiZXJtYXR0ZXIgPHJvbGYua2FsYmVybWF0dGVyQGNpdGVuZy5jb20+CglBZGQgc29tZSBkZWNsYXJhdGlvbnMgZm9yIGFkZGl0aW9uYWwgU0hGaWxlT3BlcmF0aW9uIGZlYXR1cmVzLgoKCSogZGxscy9zaGVsbDMyL3NobGV4ZWMuYzoKCVJvbGYgS2FsYmVybWF0dGVyIDxyb2xmLmthbGJlcm1hdHRlckBjaXRlbmcuY29tPgoJVXNlIG5hbWVkIGNvbnN0YW50IGluc3RlYWQgb2YgYSBzaW1wbGUgbnVtYmVyIChnZXRzIHJpZCBvZiBzaWduZWQKCXdhcm5pbmcgdG9vKS4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOiBSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJLSBGaXggTEJ1dHRvbkRvd24gZnJvbSBwcmV2aW91cyBjaGFuZ2UuCgktIERvbid0IHVzZSBCRl9BREpVU1QgZmxhZyBmb3IgZHJvcGRvd24gYnV0dG9ucy4KCS0gRml4IExCdXR0b25EYmxDbGsuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2x0aXBzLmM6CglSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJLSBUVE1fVFJBQ0tBQ1RJVkFURSBjYW4gaGF2ZSBOVUxMIGxQYXJhbSB3aGVuIGRlYWN0aXZhdGluZy4KCS0gRmFjdG9yIG91dCBjb21tb24gY29kZSBmcm9tIFRPT0xUSVBTX0RlbFRvb2x7QSxXfS4KCS0gVXBkYXRlIGFsbCBpbmRpY2VzIGNvcnJlY3RseSBhZnRlciBkZWxldGUuCgoJKiB0b29scy8uY3ZzaWdub3JlLCB0b29scy9NYWtlZmlsZS5pbiwgdG9vbHMvd2luZXByZWZpeGNyZWF0ZS5pbjoKCUJlZ2lubmluZ3Mgb2YgYSBzY3JpcHQgdG8gaW5pdGlhbGl6ZSB0aGUgLndpbmUgZGlyZWN0b3J5ICh3aXRoIGhlbHAKCWZyb20gQ2hyaXMgTW9yZ2FuKS4KCgkqIGNvbnRyb2xzL2J1dHRvbi5jLCBjb250cm9scy9jb21iby5jLCBjb250cm9scy9lZGl0LmMsCgkgIGNvbnRyb2xzL2xpc3Rib3guYywgY29udHJvbHMvbWVudS5jLCBjb250cm9scy9zY3JvbGwuYywKCSAgY29udHJvbHMvc3RhdGljLmMsIGRsbHMvdXNlci91c2VyX21haW4uYywKCSAgZG9jdW1lbnRhdGlvbi9zYW1wbGVzL2NvbmZpZywgaW5jbHVkZS9ub25jbGllbnQuaCwgaW5jbHVkZS91c2VyLmgsCgkgIHdpbmRvd3MvZGVmd25kLmMsIHdpbmRvd3MvbWRpLmMsIHdpbmRvd3MvbXNnYm94LmMsCgkgIHdpbmRvd3Mvbm9uY2xpZW50LmMsIHdpbmRvd3Mvc3lzY29sb3IuYywgd2luZG93cy9zeXNtZXRyaWNzLmMsCgkgIHdpbmRvd3Mvc3lzcGFyYW1zLmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJUmVtb3ZlIHRoZSBzdXBwb3J0IGZvciB0aGUgV2luIDMuMSBMb29rLgoKCSogZGxscy9pbW0zMi9pbW0zMi5zcGVjLCBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLAoJICBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvdXNlci9taXNjLmMsIGRsbHMvdXNlci91c2VyMzIuc3BlYzoKCVJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJQWRkZWQgc29tZSBzdHVicy4KCgkqIGRsbHMvbnRkbGwvcGF0aC5jOgoJTWFrZSBSdGxHZXRGdWxsUGF0aE5hbWVfVSBoYW5kbGUgVW5peCBwYXRocywgdXNpbmcgdGhlIG5ldyBzeW1saW5rcwoJc2NoZW1lLgoKCSogZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jOiBLZXZpbiBLb2x0emF1IDxrZXZpbkBwbG9wLm9yZz4KCUFkZGVkIHN1cHBvcnQgZm9yIENTSURMX1JFU09VUkNFUyBwYXRoLgoKMjAwNC0wMy0zMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvY2FyZHMvLmN2c2lnbm9yZSwgZGxscy9jYXJkcy9NYWtlZmlsZS5pbjoKCWpyLmJtcCBpc24ndCBnZW5lcmF0ZWQuCgoJKiBkbGxzL3dpbmluZXQvaHR0cC5jOiBGaXhlZCBsZW5ndGggaGFuZGxpbmcgaW4gSHR0cFF1ZXJ5SW5mb1cuCgoJKiB0b29scy9jMm1hbi5wbDogUGF1bCBWcmllbnMgPHB2cmllbnNAeHM0YWxsLm5sPgoJQWRkZWQgbWlzc2luZyBjb21tYSBpbiBpbmRleC5odG1sLgoKCSogZGxscy9vcGVuZ2wzMi8uY3ZzaWdub3JlLCBkbGxzL29wZW5nbDMyL01ha2VmaWxlLmluLAoJICBkbGxzL29wZW5nbDMyL3ZlcnNpb24ucmM6CglUb20gV2lja2xpbmUgPHR3aWNrbGluZUBza3liZXN0LmNvbT4KCVNldCB2ZXJzaW9uIHRvIFdpbiBYUCBTZXJ2aWNlIHBhdGNoIDIuCgoJKiBkbGxzL2QzZDgvdXRpbHMuYywgZGxscy9vbGVhdXQzMi9zYWZlYXJyYXkuYywgZG9jdW1lbnRhdGlvbi9mYXEuc2dtbDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQXNzb3J0ZWQgc3BlbGxpbmcgYW5kIGNhc2UgZml4ZXMuCgoJKiBkbGxzL3dpbm1tL3dpbmVhbHNhL2F1ZGlvLmM6CglGZWxpeCBOYXdvdGhuaWcgPGZlbGl4Lm5hd290aG5pZ0B0LW9ubGluZS5kZT4KCURvbid0IGZyZWUgQUxTQSBkZXZpY2Ugc3RyaW5nIHdoZW4gdGhlIGRldmljZSBpcyBjbG9zZWQgc2luY2UgaXQgbWlnaHQKCWJlIHJlb3BlbmVkLgoKCSogaW5jbHVkZS93aW5zb2NrLmgsIGluY2x1ZGUvd3MydGNwaXAuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJTWFrZSBzdXJlIGlwX21yZXEgaXMgbm90IGV4cG9ydGVkIGJ5IHdpbnNvY2syLmguCglBZGQgaXBfbXJlcSwgaXBfbXJlcV9zb3VyY2UgYW5kIGlwX21zZmlsdGVyIHRvIHdzMnRjcGlwLmguCgoJKiBkbGxzL2dkaS9wYWludGluZy5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglPcHRpbWl6ZSBHZGlHcmFkaWVudEZpbGwgYnkgZHJhd2luZyBsaW5lcyBpbnN0ZWFkIG9mIHBpeGVscy4KCgkqIGRsbHMvdXJsbW9uL3Vtb24uYzogS2V2aW4gS29sdHphdSA8a2V2aW5AcGxvcC5vcmc+CglJbXBsZW1lbnRlZCBJc0VxdWFsLgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglNb3JlIGR1cGxleCBtb2RlIHNvdW5kY2FyZCBpbmZvLgoKCSogZGxscy9tYXBpMzIvbWFwaTMyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsCgkgIHRvb2xzL3dpbmVidWlsZC9wYXJzZXIuYzoKCURvIG5vdCBzdHJpcCBzdGRjYWxsIGRlY29yYXRpb24gaW4gc3BlYyBmaWxlcy4KCUZpeGVkIG1hcGkzMiBvcmRpbmFscy4KCgkqIHRvb2xzL3dpbmVnY2Mvd2luZWdjYy5jOgoJRml4ZWQgaGFuZGxpbmcgb2YgLnNvIGFuZCAuYSBsaWJyYXJpZXMgc3BlY2lmaWVkIGFzIGlucHV0IGZpbGVzLgoKCSogcHJvZ3JhbXMvd2luZXRlc3QvbWFpbi5jOiBGZXJlbmMgV2FnbmVyIDx3ZmVyaUBhZmF2YW50LmVsdGUuaHU+CglHaXZlIFNldEVycm9yTW9kZSB0aGUgcmlnaHQgYXJndW1lbnQgdG8gc3VwcHJlc3MgY3Jhc2ggZGlhbG9ncy4KCgkqIHRvb2xzL2J1Z19yZXBvcnQucGw6IEl2YW4gTGVvIE11cnJheS1TbWl0aCA8cHVvdGlAaW53aW5kLml0PgoJU21hbGwgZml4LgoKMjAwNC0wMy0zMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL3ZvbHVtZS5jLCBmaWxlcy9kcml2ZS5jOgoJR2V0IHRoZSBkcml2ZSByb290IGRpcmVjdG9yaWVzIGZyb20gdGhlIHN5bWxpbmtzIGluIGRvc2RldmljZXMvIGlmCgl0aGV5IGV4aXN0LgoJQWRkZWQgY3JlYXRpb24gb2YgZHJpdmUgc3ltbGlua3MgaW4gdGhlIGRldmljZSB0cmFuc2l0aW9uIGNvZGUuCgoJKiBkbGxzL2tlcm5lbC92b2x1bWUuYzoKCUFkZGVkIHN1cHBvcnQgZm9yIERPUyBkcml2ZXMgaW4gUXVlcnlEb3NEZXZpY2UgYW5kIERlZmluZURvc0RldmljZS4KCgkqIHByb2dyYW1zL3JlZ2VkaXQvcmVzb3VyY2UucmM6IEl2YW4gTGVvIE11cnJheS1TbWl0aCA8cHVvdGlAaW53aW5kLml0PgoJRml4ZWQgc29tZSB2YWx1ZXMuCgoJKiBkbGxzL3dpbmVkb3MvaW50MTYuYywgZGxscy93aW5lZG9zL2ludDE3LmM6CglGbG9yaWFuIEdvdGggPENhcHRhaW5zaWZmZkBnbXguZGU+CglBZGRlZCBzb21lIHN0dWJzLgoKCSogZGxscy9tc2kvTWFrZWZpbGUuaW4sIGRsbHMvbXNpL21zaS5jLCBkbGxzL21zaS9tc2kuc3BlYywKCSAgZGxscy9tc2kvbXNpcHJpdi5oLCBkbGxzL21zaS9yZWdzdnIuYywgdG9vbHMvd2luZS5pbmY6CglSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCUltcGxlbWVudCBEbGxHZXRDbGFzc09iamVjdCwgRGxsUmVnaXN0ZXJTZXJ2ZXIsIERsbFVucmVnaXN0ZXJTZXJ2ZXIKCShhcyB0aGUgaW50ZXJmYWNlcyBhcmVuJ3QgZG9jdW1lbnRlZCB3ZSBvbmx5IGhhdmUgc3R1YnMpLgoKCSogZGxscy94MTFkcnYvZGliLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglXZSBkb24ndCBzdXBwb3J0IEdldERJQml0cyB3aXRoIEJJX1JMRTQvOCwgc28gZm9yIG5vdyByZXR1cm4gYW4KCXVuY29tcHJlc3NlZCBiaXRtYXAgaWYgdGhlIGJpdHMgYnVmZmVyIGlzIGxhcmdlIGVub3VnaC4KCgkqIG9iamVjdHMvZGliLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglTZWxlY3QgdGhlIGRpYnNlY3Rpb24gaW50byBhIGRjIGJlZm9yZSBjYWxsaW5nIEdldERJQkNvbG9yVGFibGUuCgoJKiBkbGxzL2tlcm5lbC9sb2NhbGUuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBDUDkzMiwgQ1A5MzYsIENQOTQ5IGFuZCBDUDk1MCB0byB0aGUgY2hhcnNldCBtYXAuCgoJKiBkbGxzL3dpbmluZXQvY29va2llLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVVuaWNvZGlmeSB0aGUgY29va2llIGhhbmRsaW5nIGNvZGUuCgoJKiBkbGxzL3dpbmluZXQvaHR0cC5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggdGhlIEh0dHBRdWVyeUluZm9BIGZ1bmN0aW9uIGJ1ZmZlciBzaXplLgoKCSogZGxscy9rZXJuZWwvbmVfbW9kdWxlLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBidWlsdGluIE5FIG1vZHVsZSByZWZjb3VudGluZyBvZiAzMmJpdCBwYXJlbnQuCgoJKiBkbGxzL2QzZDgvZDNkY29yZV9nbC5oLCBkbGxzL2QzZDgvZGV2aWNlLmMsIGRsbHMvZDNkOC9kaXJlY3R4LmMsCgkgIGRsbHMvZDNkOC91dGlscy5jOgoJUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CgktIG1vcmUgRXh0ZW5zaW9ucyB3b3JrIChiZWdpbiB0byBkZXRlY3QgQVRJIGV4dGVuc2lvbnMpCgktIHRyeSB0byBmaXggRDNEVEFERFJFU1NfQk9SREVSLCBEM0RUQUREUkVTU19NSVJST1IsCgkgIEQzRFRBRERSRVNTX01JUlJPUk9OQ0UgdXNpbmcgT3BlbkdMIGV4dGVuc2lvbnMKCS0gYmV0dGVyIHNldF90ZXhfb3A6IG5vdyB1c2UgUnVudGltZSBFeHRlbnNpb24gc3VwcG9ydCAoYW5kIG5vdAoJICBjb21waWxlIHN1cHBvcnQpCgoJKiBkbGxzL29sZTMyL29sZTIuYzogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCVJlZ2lzdGVyRHJhZ0Ryb3A6IGZhaWwgb24gTlVMTCBkcm9wIHRhcmdldC4KCgkqIGxvYWRlci9wdGhyZWFkLmM6CglGaXhlZCByb3VuZGluZyBidWcgaW4gdGhlIHN0YWNrIGluZm8gY2FsY3VsYXRpb24gd2hlbiB3ZSBkb24ndCBoYXZlCglwdGhyZWFkX2dldGF0dHJfbnAuCgoJKiBkbGxzL3dpbmluZXQvY29va2llLmMsIGRsbHMvd2luaW5ldC9kaWFsb2dzLmMsIGRsbHMvd2luaW5ldC9mdHAuYywKCSAgZGxscy93aW5pbmV0L2h0dHAuYywgZGxscy93aW5pbmV0L2ludGVybmV0LmMsCgkgIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5oLCBkbGxzL3dpbmluZXQvbmV0Y29ubmVjdGlvbi5jLAoJICBkbGxzL3dpbmluZXQvdXRpbGl0eS5jLCBkbGxzL3dpbmluZXQvd2luaW5ldC5zcGVjLCBpbmNsdWRlL3dpbmluZXQuaDoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUNvbnZlcnQgdGhlIHdpbmluZXQgSFRUUCBmdW5jdGlvbnMgdG8gVW5pY29kZS4KCgkqIHByb2dyYW1zL3dpbmVjZmcveDExZHJ2ZGxnLmM6IENocmlzIE1vcmdhbiA8Y21vcmdhbkBhbHVtLndwaS5lZHU+CglJbnZhbGlkICJEZXNrdG9wIiB2YWx1ZXMgd291bGQgY3Jhc2ggd2luZWNmZywgdXNlIHRoZSBkZWZhdWx0IHZhbHVlCglpbnN0ZWFkLgoKCSogZGxscy9jb21tZGxnL2NkbGdfUHQucmM6IE1hcmNlbG8gRHVhcnRlIDx3aW5lLWRldmVsQGJvbC5jb20uYnI+CglNaW5vciB1cGRhdGVzIGluIHJlc291cmNlIGZvciBQb3J0dWd1ZXNlLgoKCSogcHJvZ3JhbXMvcmVnZWRpdC9yZXNvdXJjZS5yYzogSXZhbiBMZW8gTXVycmF5LVNtaXRoIDxwdW90aUBpbndpbmQuaXQ+CglJbXByb3ZlZCB2ZXJzaW9uIHJlc291cmNlIGluZm8uCgoJKiBpbmNsdWRlL3dpbmUvd2luZV9jb21tb25fdmVyLnJjOgoJSXZhbiBMZW8gTXVycmF5LVNtaXRoIDxwdW90aUBpbndpbmQuaXQ+CglJbiByZXNvdXJjZSBpbmZvIGFsbG93IE9yaWdpbmFsRmlsZW5hbWUgYW5kIEludGVybmFsTmFtZSB0byBiZQoJZGlmZmVyZW50LgoKCSogcHJvZ3JhbXMvd2luZXRlc3QvbWFpbi5jLCBwcm9ncmFtcy93aW5ldGVzdC91dGlsLmM6CglGZXJlbmMgV2FnbmVyIDx3ZmVyaUBhZmF2YW50LmVsdGUuaHU+CglEb24ndCBleHBlY3Qgc3Rkb3V0IGJlIHVzYWJsZSBhZnRlciBleGNoYW5naW5nIGZpbGUgZGVzY3JpcHRvcnMgdW5kZXIKCWl0LgoKMjAwNC0wMy0yOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRvY3VtZW50YXRpb24vYnVncy5zZ21sLCBkb2N1bWVudGF0aW9uL2NvbmZpZ3VyaW5nLnNnbWw6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5AYWx1bS53cGkuZWR1PgoJUmVtb3ZlIHJlZmVyZW5jZXMgdG8gd2luZWNoZWNrIGZyb20gdGhlIGRvY3VtZW50YXRpb24gYW5kIGluc2VydCBhCglUT0RPIHRoYXQgIG1lbnRpb25zIHRoYXQgdGhlIGZ1bmN0aW9uYWxpdHkgaXMgdG8gYmUgbW92ZWQgaW50bwoJd2luZWNmZy4KCgkqIHByb2dyYW1zL3Byb2dtYW4vcnNyYy5yYzogSXZhbiBMZW8gTXVycmF5LVNtaXRoIDxwdW90aUBpbndpbmQuaXQ+CglFbmFibGUgSXRhbGlhbiB0cmFuc2xhdGlvbnMuCgoJKiBwcm9ncmFtcy9wcm9nbWFuL0l0LnJjOiBGaXhlZCBsYW5ndWFnZSBkZWNsYXJhdGlvbnMuCgoJKiBkbGxzL2tlcm5lbC92ZXJzaW9uLnJjOiBJdmFuIExlbyBNdXJyYXktU21pdGggPHB1b3RpQGlud2luZC5pdD4KCVdJTkVfRklMRURFU0NSSVBUSU9OX1NUUiBpcyBhbHJlYWR5IGRlZmluZWQgaW4gd2luZV9jb21tb25fdmVyLnJjLgoKCSogZGxscy9vbGVhY2MvbWFpbi5jLCBkbGxzL29sZWFjYy9vbGVhY2Muc3BlYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVN0dWIgaW1wbGVtZW50YXRpb25zIGZvciBMcmVzdWx0RnJvbU9iamVjdCBhbmQKCUFjY2Vzc2libGVPYmplY3RGcm9tV2luZG93LgoKCSogZGxscy9nZGkvZW5obWZkcnYvZ3JhcGhpY3MuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJV3JpdGUgRU1SUE9MWUxJTkUxNiBpZiBwb2ludHMgZml0IGludG8gYSBTSE9SVC4KCgkqIGluY2x1ZGUvd2luZS93aW5nZGkxNi5oLCBpbmNsdWRlL3dpbmdkaS5oLCBvYmplY3RzL2VuaG1ldGFmaWxlLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglNb3ZlIEVNUioxNiBkZWZpbml0aW9ucyB0byB3aW5nZGkuaCwgYXMgdGhleSdyZSBwYXJ0IG9mIHRoZSBXSU4zMiBBUEkuCgoJKiBkbGxzL3gxMWRydi9rZXlib2FyZC5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRml4IFNsb3ZlbmlhbiBrZXlib2FyZCBsYXlvdXQgdG8gYmV0dGVyIG1hdGNoIHRoZSBYRnJlZTg2IG9uZS4KCgkqIGNvbnRyb2xzL3Njcm9sbC5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJU2Nyb2xsYmFyIHNob3VsZCBhbHNvIHJlYWN0IG9uIFdNX0xCVVRUT05EQkxDTEsuCgoJKiBkbGxzL2tlcm5lbC9sb2NhbGUuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBUcmFkaXRpb25hbCBDaGluZXNlIEJpZzUgYW5kIFNpbXBsaWZpZWQgQ2hpbmVzZSBHQksgbWFwcGluZ3MuCgoJKiBkbGxzL3dpbm1tL3dpbmVhbHNhL2F1ZGlvLmM6IFN5bHZhaW4gUGV0cmVvbGxlIDxzcGV0cmVvbGxlQHlhaG9vLmZyPgoJRml4ZWQgZXJyb3IgcmVwb3J0aW5nLgoKCSogZGxscy93aW5ubHMvd2lubmxzLmMsIGRsbHMvd2lubmxzL3dpbm5sczMyLnNwZWM6CglDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglBZGRlZCBzdHViIGZvciBXSU5OTFMzMkVuYWJsZUlNRS4KCgkqIGNvbnRyb2xzL2VkaXQuYywgdG9vbHMvd2luZWNoZWNrOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJQWRkIHNvbWUgVFJBQ0VpbmcgdG8gdGhlIGVkaXQgY29udHJvbC4KCgkqIGRsbHMvb2xlMzIvY29tcG9iai5jOiBXYXJyZW4gVHVya2FsIDx3dEBtaWRzb3V0aC5yci5jb20+CglGaXhlZCB0aGUgaW1wbGVtZW50YXRpb24gb2YgQ29UcmVhdEFzQ2xhc3MuCgoJKiBkbGxzL3VybG1vbi91bW9uLmMsIGluY2x1ZGUvdXJsbW9uLmgsIGluY2x1ZGUvdXJsbW9uLmlkbDoKCUtldmluIEtvbHR6YXUgPGtldmluQHBsb3Aub3JnPgoJSW1wbGVtZW50IGxvYWRpbmcgYW5kIHNhdmluZyB0byBhIHN0cmVhbSwgYW5kIGEgZmV3IG90aGVyIGJhc2ljCglmdW5jdGlvbnMuCgoJKiBvYmplY3RzL2RpYi5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJSG9ub3VyIERJQl9QQUxfQ09MT1JTIHdoZW4gdGhlIGJpdG1hcCBkZXB0aHMgbWF0Y2guCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCVByaW50IG91dCBzb3VuZCBjYXJkIGluZm8gZm9yIHBsYXliYWNrLCBjYXB0dXJlIGFuZCBkdXBsZXggbW9kZXMuCglIYXJkd2FyZSBjYXBhYmlsaXRpZXMgY2FuIHZhcnkgZGVwZW5kaW5nIG9uIHVzYWdlIG1vZGUuCglQcmludCBvdXQgZm9ybWF0IHJlcXVlc3RlZCBhbmQgYWN0dWFsIGZvcm1hdCByZXR1cm5lZC4KCgkqIGRsbHMvZ2RpL2dkaV9wcml2YXRlLmgsIGRsbHMvZ2RpL21mZHJ2L2luaXQuYywgb2JqZWN0cy9tZXRhZmlsZS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJVW5pY29kaWZ5IENyZWF0ZU1ldGFGaWxlLgoKCSogZGxscy9rZXJuZWwvc3luYy5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglVc2UgQ3JlYXRlRXZlbnRXIGluIHByZWZlcmVuY2UgdG8gQ3JlYXRlRXZlbnRBLgoKCSogZGxscy9jYXJkcy8uY3ZzaWdub3JlLCBkbGxzL2NhcmRzL01ha2VmaWxlLmluLCBkbGxzL2NhcmRzL2NhcmRzLmMsCgkgIGRsbHMvY2FyZHMvY2FyZHMuaCwgZGxscy9jYXJkcy9jYXJkcy5yYzoKCVNhbWkgTm9wYW5lbiA8eGFzbXhAb3B0b25saW5lLm5ldD4KCUltcGxlbWVudGVkIGludmlzaWJsZWdob3N0LCBkZWNreCBhbmQgZGVja28gZHJhd2luZyBtb2RlcywgYW5kCglpbXByb3ZlZCBnaG9zdCBkcmF3aW5nIG1vZGUuCgoyMDA0LTAzLTI3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9rZXJuZWwvdGVzdHMvZmlsZS5jLCBzZXJ2ZXIvZmQuYywgc2VydmVyL2ZpbGUuYywgc2VydmVyL2ZpbGUuaDoKCUNoZWNrIGZpbGUgc2hhcmluZyBwZXJtaXNzaW9ucyBiYXNlZCBvbiB0aGUgZmlsZSBpbm9kZSBpbnN0ZWFkIG9mIHRoZQoJZmlsZSBuYW1lLgoJQWRkZWQgcmVncmVzc2lvbiB0ZXN0IGZvciBzaGFyaW5nIHBlcm1pc3Npb25zLgoKCSogZmlsZXMvZmlsZS5jOgoJRml4ZWQgY29weS9wYXN0ZSBlcnJvciBpbiBwcmV2aW91cyBwYXRjaCAoc3BvdHRlZCBieSBEaW1pdHJpZQoJTy4gUGF1bikuCgoJKiB0b29scy93aW5lYnVpbGQvcmVsYXkuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBhIGZldyBtaXNzaW5nIF9fQVNNX05BTUUgbWFjcm9zLgoKCSogZGxscy93aW5tbS90ZXN0cy93YXZlLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglDbGVhbiB1cCB3aGl0ZSBzcGFjZXMuCglGaXggc3BlbGxpbmcgZXJyb3IuCglJbXByb3ZlIGNhcHR1cmUgZXJyb3IgbWVzc2FnZXMuCglGaXggZXJyb3IgcmVwb3J0aW5nIHdoZW4gY2FwdHVyaW5nIGZyb20gbm9uZXhpc3RlbnQgZGV2aWNlLgoKCSogdG9vbHMvYnVnX3JlcG9ydC5wbDogSXZhbiBMZW8gTXVycmF5LVNtaXRoIDxwdW90aUBpbndpbmQuaXQ+CglVc2UgV0lORURFQlVHIGluc3RlYWQgb2YgLS1kZWJ1Z21zZy4KCgkqIGRsbHMvZDNkOC9kM2Rjb3JlX2dsLmgsIGRsbHMvZDNkOC9kZXZpY2UuYzoKCVJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJLSBzdXBwb3J0IG9mIEQzRFRTU19NQVhNSVBMRVZFTAoJLSBzdXBwb3J0IG9mIEQzRFRTU19NSVBNQVBMT0RCSUFTICh1c2luZyBFWFRfVEVYVFVSRV9MT0RfQklBUyBleHRlbnNpb24pCgktIGNvcnJlY3Qgc3VwcG9ydCBvZiBEM0RUU1NfTUFYQU5JU09UUk9QWSBmb3IgRDNEVFNTX01BR0ZJTFRFUiBhbmQKCSAgRDNEVFNTX01JTkZJTFRFUgoJLSBmaXhlcyBmb3IgRDNEVFNTX01BR0ZJTFRFUiBhbmQgRDNEVFNTX01BR0ZJTFRFUgoKCSogZGxscy91c2VyL3Rlc3RzL21zZy5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJV29ya2Fyb3VuZCBhIG1zdmNydC5yZWFsbG9jIGJ1ZyB1bmRlciBXaW45eCBieSB1c2luZyBXaW4zMiBBUElzIGluc3RlYWQuCglUYWtlIGludG8gYWNjb3VudCB0aGF0IEhlYXBSZWFsbG9jIG1heSBtb3ZlIHRoZSBhbGxvY2F0ZWQgbWVtb3J5IGJsb2NrLgoKCSogZGxscy9zaGVsbDMyL3NobGV4ZWMuYzogTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCUNhbGwgSVNoZWxsRXhlY3V0ZUhvb2sgaW50ZXJmYWNlIGZvciBTaGVsbEV4ZWN1dGUoKSBjYWxscyB3aXRoIElECglsaXN0cy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBmaWxlcy9maWxlLmMsIGluY2x1ZGUvY29uZmlnLmguaW4sCgkgIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwgc2VydmVyL2ZpbGUuYywgc2VydmVyL3Byb3RvY29sLmRlZiwKCSAgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3RyYWNlLmM6CglVc2UgZnV0aW1lcygpIGluc3RlYWQgb2YgdXRpbWUoKSB0byBpbXBsZW1lbnQgU2V0RmlsZVRpbWUsIHNvIHRoYXQgaXQKCWNhbiBiZSBkb25lIG9uIHRoZSBjbGllbnQgc2lkZS4KCgkqIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwgZGxscy9zaGVsbDMyL2NvbnRyb2wuYywKCSAgZGxscy9zaGVsbDMyL2NwYW5lbC5oLCBkbGxzL3NoZWxsMzIvY3BhbmVsZm9sZGVyLmMsCgkgIGRsbHMvc2hlbGwzMi9lbnVtaWRsaXN0LmMsIGRsbHMvc2hlbGwzMi9mb2xkZXJzLmMsCgkgIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9waWRsLmgsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwgZGxscy9zaGVsbDMyL3NoZWxsb2xlLmM6CglNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJSW1wbGVtZW50YXRpb24gb2YgdGhlIGNvbnRyb2wgcGFuZWwgZm9sZGVyIGluIHNoZWxsIG5hbWVzcGFjZS4KCgkqIGRsbHMvd2lubW0vd2luZWFsc2EvTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vd2luZWFsc2EvYXVkaW8uYzoKCU1pa2UgSGVhcm4gPG1oQGNvZGV3ZWF2ZXJzLmNvbT4KCUFsbG93IGNvbmZpZ3VyYXRpb24gb2Ygb3V0cHV0IGRldmljZXMgdG8gdXNlIGFuZCBjaGFuZ2Ugc3RhbmRhcmQKCW91dHB1dCBwbHVnaW4gcmVxdWVzdGVkIHRvICJkZWZhdWx0Ii4KCgkqIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWM6CglVbHJpY2ggQ3pla2FsbGEgPHVscmljaEBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgRml4U2xhc2hlc0FuZENvbG9uVyBhbmQgYWRkIHN0dWIgZm9yIFNIR2V0QXBwQ29tcGF0RmxhZ3MuCgoJKiBkbGxzL3gxMWRydi9wYWxldHRlLmM6CglBdm9pZCBjcmFzaCBpbiBYMTFEUlZfSXNTb2xpZENvbG9yIGZvciBUcnVlQ29sb3IgZGlzcGxheXMuCgoJKiBkbGxzL3gxMWRydi9kaWIuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUJ1aWxkIHRoZSBjb3JyZWN0IGNvbG91ciBtYXAgd2hlbiB0aGUgbW9kZSBpcyBESUJfUEFMX0NPTE9SUy4KCgkqIG9iamVjdHMvZGliLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglXaGVuIHVzaW5nIERJQl9QQUxfQ09MT1JTIHNlbGVjdCB0aGUgY3VycmVudCBwYWxldHRlIGludG8gdGhlIG1lbW9yeQoJZGMgc28gdGhhdCBTZXRESUJpdHMgd29ya3MgY29ycmVjdGx5LgoKCSogZGxscy9kZHJhdy9tZXNhLmM6IEphbWVzIFBlcnJ5IDxqYW1lc3BAZXBjYy5lZC5hYy51az4KCUZpeCBoYW5kbGluZyBvZiBEM0RCTEVORF9CT1RIKiBibGVuZCBtb2Rlcy4KCjIwMDQtMDMtMjYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC9maWxlMTYuYzoKCUZpeGVkIEdldERyaXZlVHlwZTE2IHJldHVybiB2YWx1ZSBmb3Igbm9uLWV4aXN0ZW50IGRyaXZlcy4KCUZpeGVkIGJ1ZyBpbiBPcGVuRmlsZTE2IGludHJvZHVjZWQgYnkgcHJldmlvdXMgY2hhbmdlLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLCBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGxleGVjLmM6CglNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJLSBGaXggaGFuZGxpbmcgb2YgJTIsICUzLCAuLi4gYW5kIGxvd2VyIGNhc2UgZm9ybWF0IGNoYXJhY3RlcnMgaW4KCSAgU0hFTExfQXJnaWZ5VygpLgoJLSBNb3ZlICIlSSIgZXhwYW5zaW9uIGZyb20gU2hlbGxFeGVjdXRlRXgoKSBpbnRvIGNvbW1vbiBmdW5jdGlvbgoJICBTSEVMTF9BcmdpZnlXKCkuCgktIFBhc3MgYnVmZmVyIGxlbmd0aCB0byBTSEVMTF9GaW5kRXhlY3V0YWJsZSgpLgoJLSBGSVhNRSBjb21tZW50IGZvciBsZW4gcGFyYW1hdGVyIGluIFNIRUxMX0FyZ2lmeVcoKS4KCglHZSB2YW4gR2VsZG9ycCA8Z2VAZ3NlLm5sPgoJLSBBZGQgZG91YmxlIHF1b3RhdGlvbiBtYXJrcyB1bmxlc3Mgd2UgYWxyZWFkeSBoYXZlIHRoZW0gKGUuZy46ICIlMSIKCSAgJSogZm9yIGV4ZWZpbGUpLgoJLSBSZW1vdmUgdW5uZWNlc3NhcnkgZG91YmxlIHF1b3RhdGlvbiBtYXJrcyBhbmQgY29tbWFuZCBsaW5lIGFyZ3VtZW50cy4KCgkqIGRsbHMvdXNlci90ZXN0cy9tc2cuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBhIHByb2NlZHVyZSBmb3IgbG9nZ2luZyBXTV9QQVJFTlROT1RJRlkgbWVzc2FnZXMuCgoJKiBkbGxzL2tlcm5lbC9maWxlMTYuYywgZGxscy9rZXJuZWwvcGF0aC5jLCBmaWxlcy9kaXJlY3RvcnkuYzoKCVN0b3JlIHRoZSB3aW5kb3dzIGFuZCBzeXN0ZW0gZGlyZWN0b3JpZXMgYXMgbG9uZyBwYXRoIG5hbWVzLgoJTW92ZWQgR2V0VGVtcFBhdGggYW5kIEdldFRlbXBEcml2ZSB0byBkbGxzL2tlcm5lbC4KCgkqIGRsbHMvdXNlci90ZXN0cy9tc2cuYywgd2luZG93cy93aW4uYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglNYWtlIERlc3Ryb3lXaW5kb3coKSBub3QgbWVzcyB3aXRoIGEgd2luZG93IGZvY3VzLCB0aGlzIHNob3VsZCBiZQoJdGFrZW4gY2FyZSBvZiBieSBTaG93V2luZG93KFNXX0hJREUpLgoJQWRkIGEgdGVzdCBmb3IgRGVzdHJveVdpbmRvdygpIG9uIGEgZm9jdXNlZCBjaGlsZC4KCgkqIGRsbHMvdXNlci90ZXN0cy9tc2cuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCAnaG9vaycgZmxhZyBmb3IgbWVzc2FnZXMuIEFkZCBhIHRlc3QgZm9yIENCVCBob29rIG1lc3NhZ2VzLgoKMjAwNC0wMy0yNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL2tlcm5lbF9wcml2YXRlLmgsIGRsbHMva2VybmVsL21vZHVsZS5jLAoJICBkbGxzL2tlcm5lbC9wYXRoLmMsIGRsbHMva2VybmVsL3Byb2Nlc3MuYywgZmlsZXMvZGlyZWN0b3J5LmMsCgkgIGluY2x1ZGUvZmlsZS5oOgoJUmVpbXBsZW1lbnRlZCBTZWFyY2hQYXRoVyB1c2luZyBudGRsbCBmdW5jdGlvbnMuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmM6IE1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CglJbXBsZW1lbnRhdGlvbiBvZiBJUGVyc2lzdEZpbGU6OklzRGlydHkoKS4KCgkqIGluY2x1ZGUvd2luc29jay5oOiBGZWxpeCBOYXdvdGhuaWcgPGZlbGl4Lm5hd290aG5pZ0B0LW9ubGluZS5kZT4KCURlZmluZSBpcF9tcmVxLgoKCSogaW5jbHVkZS9tc3ZjcnQvZmxvYXQuaDogRmVsaXggTmF3b3RobmlnIDxmZWxpeC5uYXdvdGhuaWdAdC1vbmxpbmUuZGU+CglEZWZpbmUgKEwpREJMXyogYW5kIEZMVF8qLgoKCSogZGxscy91c2VyL3Rlc3RzL21zZy5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkICdvcHRpb25hbCcgZmxhZyBmb3IgbWVzc2FnZXMsIG1ha2UgdGhlIHRlc3QgcnVuIHVuZGVyIHdpbjJrLgoKCSogZGxscy9rZXJuZWwvZmlsZS5jLCBkbGxzL2tlcm5lbC9maWxlMTYuYywgZmlsZXMvZmlsZS5jOgoJU3BsaXQgT3BlbkZpbGUgaW1wbGVtZW50YXRpb24gaW4gc2VwYXJhdGUgMTYtIGFuZCAzMi1iaXQgdmVyc2lvbnMsIGFuZAoJY2hhbmdlZCBpdCB0byB1c2UgZXhwb3J0ZWQgQVBJcyBpbnN0ZWFkIG9mIGludGVybmFsIGZ1bmN0aW9ucyB3aGVyZQoJcG9zc2libGUuCgoJKiBkbGxzL2tlcm5lbC93b3d0aHVuay5jOgoJQ2hhbmdlZCBMb2FkTGlicmFyeUV4MzJXMTYgdG8gdXNlIE9wZW5GaWxlMTYgdG8gbG9vayBmb3IgdGhlIGZpbGUKCWluc3RlYWQgb2YgRElSX1NlYXJjaFBhdGguCgoJKiBkbGxzL3dpbmluZXQvZGlhbG9ncy5jLCBkbGxzL3dpbmluZXQvZnRwLmMsIGRsbHMvd2luaW5ldC9odHRwLmMsCgkgIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jLCBkbGxzL3dpbmluZXQvaW50ZXJuZXQuaCwKCSAgZGxscy93aW5pbmV0L3V0aWxpdHkuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUNvbnZlcnQgV0lOSU5FVEFQUElORk9BIHN0cnVjdHVyZSB0byB1bmljb2RlLgoKCSogaW5jbHVkZS93aW51c2VyLmg6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCURlZmluZSBmbGFncyBmb3IgR2V0VXNlck9iamVjdEluZm9ybWF0aW9uLgoKCSogZGxscy93aW5lZG9zL2ludDE1LmM6IEZsb3JpYW4gR290aCA8Q2FwdGFpbnNpZmZmQGdteC5kZT4KCUFkZGVkIHN0dWJzIGZvciBhIGZldyBmdW5jdGlvbnMuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9NYWtlZGxsLnJ1bGVzLmluLCBpbmNsdWRlL2NvbmZpZy5oLmluOgoJUmVtb3ZlZCBjaGVjayBmb3IgLWxtLCB3aW5lZ2NjIHRha2VzIGNhcmUgb2YgdGhhdC4KCgkqIHRvb2xzL3dpbmVidWlsZC9idWlsZC5oLCB0b29scy93aW5lYnVpbGQvaW1wb3J0LmMsCgkgIHRvb2xzL3dpbmVidWlsZC9tYWluLmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYywKCSAgdG9vbHMvd2luZWJ1aWxkL3V0aWxzLmMsIHRvb2xzL3dpbmVidWlsZC93aW5lYnVpbGQubWFuLmluLAoJICB0b29scy93aW5lZ2NjL3dpbmVnY2MuYzoKCVJlcGxhY2VkIHRoZSAtLW1vZGUgd2luZWJ1aWxkIG9wdGlvbiBieSBhIC0tc3Vic3lzdGVtIG9wdGlvbiBmb3IKCWJldHRlciBjb21wYXRpYmlsaXR5IHdpdGggdGhlIFBFIGJpbnV0aWxzLgoKCSogdG9vbHMvd2luZWdjYy9NYWtlZmlsZS5pbjogVGFrZSBFWEVFWFQgaW50byBhY2NvdW50IGZvciBQRSBidWlsZHMuCgoJKiBkbGxzL21zdmNydC90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL21zdmNydC90ZXN0cy9NYWtlZmlsZS5pbiwKCSAgZGxscy9tc3ZjcnQvdGVzdHMvdGltZS5jLCBkbGxzL21zdmNydC90aW1lLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglDb3JyZWN0IGVycm9ycyB3aXRoIG1vdmUgdG8ga2VybmVsIHRpbWUgZnVuY3Rpb25zLgoJQWRkIHRlc3QgY2FzZS4KCgkqIGluY2x1ZGUvbXN2Y3J0L3djaGFyLmg6IEZlbGl4IE5hd290aG5pZyA8ZmVsaXgubmF3b3RobmlnQHQtb25saW5lLmRlPgoJRGVmaW5lIHN0YXQgaW4gbXN2Y3J0L3djaGFyLmguCgoyMDA0LTAzLTI0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogcHJvZ3JhbXMvd2luZXRlc3QvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmV0ZXN0L2d1aS5yYywKCSAgcHJvZ3JhbXMvd2luZXRlc3QvbWFpbi5jLCBwcm9ncmFtcy93aW5ldGVzdC9tYWtldGVzdCwKCSAgcHJvZ3JhbXMvd2luZXRlc3Qvc2VuZC5jOgoJRmVyZW5jIFdhZ25lciA8d2ZlcmlAYWZhdmFudC5lbHRlLmh1PgoJLSBFeHRyYWN0IHJldmlzaW9uIGluZm8gZnJvbSBDVlMvRW50cmllcy4KCS0gI2luY2x1ZGUgIndpbmV0ZXN0LnJjIiBpbnRvIGd1aS5yYy4gIE1pbkdXIGNhbid0IGxpbmsgaW4KCSAgbW9yZSB0aGFuIG9uZSByZXNvdXJjZSBmaWxlcy4KCS0gRW5sYXJnZSBjaHVuayBzaXplIG9mIG5ldHdvcmsgdHJhbnNmZXIuCgoJKiBkbGxzL2NhcmRzL2NhcmRzLmMsIGRsbHMvY2FyZHMvY2FyZHMuaDoKCVNhbWkgTm9wYW5lbiA8eGFzbXhAb3B0b25saW5lLm5ldD4KCUltcGxlbWVudGVkIGNhcmQgZHJhd2luZyBtb2RlIGZsYWcgZm9yIHJvdW5kaW5nIGNhcmQgY29ybmVycy4KCgkqIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjOiBSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglUaGUgbmFtZSBpcyBfbG9uZ2ptcGV4ICh3aXRoIHRoZSB1bmRlcnNjb3JlKS4KCgkqIGRsbHMvZGlucHV0L2pveXN0aWNrX2xpbnV4aW5wdXQuYzoKCUNocmlzdG9waCBGcmljayA8ZnJpY2tAU0MtTmV0d29ya3MuZGU+CgktIEFkZGVkIG1pc3NpbmcgYnJlYWsgc3RhdGVtZW50LgoJLSBDaGFuZ2VkIHRoZSBtYXBwaW5nIG9mIHRoZSBheGlzIHRvIGEgc2ltcGxlciBmb3JtdWxhLCB0aGF0IGlnbm9yZXMKCSAgdGhlIG1pZGRsZSBvZiBhbiBheGlzLgoJLSBNaW4vbWF4IHZhbHVlcyB3aGVyZSBpbml0YWxpemVkIHN3aXRjaGVkLgoJLSBBZGRlZCB0aGUgbWlzc2luZyBidXR0b24gYW5kIGF4aXMgZXZlbnRzIHRoYXQgYXJlIHJlZ2lzdGVyZWQgZWFybGllcgoJICBpbiB0aGUgY29kZSBidXQgbmV2ZXIgbWFkZSBpdCB0byB0aGUgYXBwbGljYXRpb24uCgktIEFkZGVkIGEgbGl0dGxlIG1vcmUgZGVzY3JpcHRpdmUgY29tbWVudCBhYm91dCB0aGUgZGVhZHpvbmUuCgoJKiB0b29scy93aW5lYnVpbGQvYnVpbGQuaCwgdG9vbHMvd2luZWJ1aWxkL2ltcG9ydC5jLAoJICB0b29scy93aW5lYnVpbGQvbWFpbi5jLCB0b29scy93aW5lYnVpbGQvc3BlYzMyLmMsCgkgIHRvb2xzL3dpbmVidWlsZC93aW5lYnVpbGQubWFuLmluOgoJUmVtb3ZlZCB0aGUgVW5pY29kZSBleGUgbW9kZXMsIGFuZCBpbnN0ZWFkIGRldGVjdCBhdXRvbWF0aWNhbGx5IHdoaWNoCgltb2RlIHRvIHVzZSBiYXNlZCBvbiB0aGUgZXhpc3RlbmNlIG9mIG1haW4gb3Igd21haW4uCgoJKiBkbGxzLyovLmN2c2lnbm9yZToKCS5zcGVjLmMgZmlsZXMgYXJlIG5vIGxvbmdlciB1c2VkIGZvciAzMi1iaXQgZGxscy4KCgkqIE1ha2UucnVsZXMuaW4sIGRsbHMvTWFrZWRsbC5ydWxlcy5pbiwgdG9vbHMvd2luZWdjYy9NYWtlZmlsZS5pbjoKCUJ1aWxkIHRoZSBkbGxzIHdpdGggd2luZWdjYy4KCjIwMDQtMDMtMjMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2NvbWN0bDMyL3JlYmFyLmMsIGRsbHMvZDNkOC91dGlscy5jLCBkbGxzL2tlcm5lbC9sb2NhbGUuYywKCSAgZGxscy9udGRsbC9ydGxzdHIuYywgZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvaWZzLmMsCgkgIGRsbHMvb2xlYXV0MzIvc2FmZWFycmF5LmMsIGRsbHMvb2xlYXV0MzIvdGVzdHMvdmFydHlwZS5jLAoJICBkbGxzL29sZWF1dDMyL3ZhcnR5cGUuYywgZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jLAoJICBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLAoJICBwcm9ncmFtcy9hdml0b29scy9hdmlwbGF5LmMsIHRvb2xzL3dpbmVkdW1wL21pc2MuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQXNzb3J0ZWQgc3BlbGxpbmcgZml4ZXMuCgoJKiBkbGxzL2QzZDgvZGV2aWNlLmM6IE9maXIgUGV0cnVza2EgPGhhdGt5QHVzZXJzLnNmLm5ldD4KCUtlZXAgdGhlIGNoZWNrR0xjYWxsIGdsQWN0aXZlVGV4dHVyZS9nbEFjdGl2ZVRleHR1cmVBUkIgc2VwYXJhdGlvbiBpbgoJYWxsIHRoZSBmaWxlLgoKCSogZGxscy9jb21jdGwzMi8uY3ZzaWdub3JlLCBkbGxzL2NvbWN0bDMyL01ha2VmaWxlLmluLAoJICBkbGxzL2NvbWN0bDMyL2NvbWN0bDMyLmgsIGRsbHMvY29tY3RsMzIvcnNyYy5yYywKCSAgZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJLSBBZGQgY3Vyc29yIHJlc291cmNlLgoJLSBJbXBsZW1lbnQgVEJfTU9WRUJVVFRPTi4KCS0gSW1wbGVtZW50IGRyYWcgY3VzdG9taXNlLgoJLSBTZW5kIFRCTl9UT09MQkFSQ0hBTkdFIGFuZCBUQk5fREVMRVRJTkdCVVRUT04uCgoJKiB0b29scy93aW5lZ2NjL3dpbmVnY2MuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUFkZCBhIGRlZmF1bHQgLmRsbCBleHRlbnNpb24gb25seSB3aGVuIG5vIGV4dGVuc2lvbiBpcyBwcmVzZW50LgoKCSogcHJvZ3JhbXMvcmVnZWRpdC9yZWdwcm9jLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglDb21wdXRlIGR3TGVuIGFmdGVyIHBhc3NpbmcgdGhlIHN0cmluZyB0aHJvdWdoCglSRUdQUk9DX3VuZXNjYXBlX3N0cmluZygpIHNvIHdlIGRvbid0IHNhdmUgZ2FyYmFnZSBjaGFyYWN0ZXJzIGluIHRoZQoJcmVnaXN0cnkuCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsIGRsbHMvZGRyYXcvZDNkZXhlY3V0ZWJ1ZmZlci5jLAoJICBkbGxzL2RkcmF3L2QzZGxpZ2h0LmMsIGRsbHMvZGRyYXcvZGlyZWN0M2QvbWVzYS5jOgoJQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJRG8gbm90IHJldHVybiBhbiBlcnJvciB3aGVuIHNldHRpbmcgYSBtYXRlcmlhbCB0byBOVUxMLgoJRml4ZWQgYWNjZXNzIHRvIGQzZCBwcml2YXRlIGRhdGEuCgoJKiBkbGxzL2QzZDgvZGV2aWNlLmM6IE9maXIgUGV0cnVza2EgPGhhdGt5QHVzZXJzLnNmLm5ldD4KCURlZmluZSBFWFRSQV9UUkFDRVMgaW5zdGVhZCBvZiAjaWYgMC4KCgkqIGRsbHMvY2FyZHMvY2FyZHMuYzogQWRkZWQgbWlzc2luZyBcbiBpbiB0cmFjZS4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBwcm9ncmFtcy9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvdGFza21nci8uY3ZzaWdub3JlLCBwcm9ncmFtcy90YXNrbWdyL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy90YXNrbWdyL2Fib3V0LmMsIHByb2dyYW1zL3Rhc2ttZ3IvYWZmaW5pdHkuYywKCSAgcHJvZ3JhbXMvdGFza21nci9hcHBscGFnZS5jLCBwcm9ncmFtcy90YXNrbWdyL2NvbHVtbi5jLAoJICBwcm9ncmFtcy90YXNrbWdyL2NvbHVtbi5oLCBwcm9ncmFtcy90YXNrbWdyL2RiZ2NobmwuYywKCSAgcHJvZ3JhbXMvdGFza21nci9kZWJ1Zy5jLCBwcm9ncmFtcy90YXNrbWdyL2VuZHByb2MuYywKCSAgcHJvZ3JhbXMvdGFza21nci9ncmFwaC5jLCBwcm9ncmFtcy90YXNrbWdyL2dyYXBoY3RsLmMsCgkgIHByb2dyYW1zL3Rhc2ttZ3IvZ3JhcGhjdGwuaCwgcHJvZ3JhbXMvdGFza21nci9vcHRubWVudS5jLAoJICBwcm9ncmFtcy90YXNrbWdyL3BlcmZkYXRhLmMsIHByb2dyYW1zL3Rhc2ttZ3IvcGVyZmRhdGEuaCwKCSAgcHJvZ3JhbXMvdGFza21nci9wZXJmcGFnZS5jLCBwcm9ncmFtcy90YXNrbWdyL3ByaW9yaXR5LmMsCgkgIHByb2dyYW1zL3Rhc2ttZ3IvcHJvY2xpc3QuYywgcHJvZ3JhbXMvdGFza21nci9wcm9jcGFnZS5jLAoJICBwcm9ncmFtcy90YXNrbWdyL3Jlc291cmNlLmgsIHByb2dyYW1zL3Rhc2ttZ3IvcnVuLmMsCgkgIHByb2dyYW1zL3Rhc2ttZ3IvdGFza21nci5jLCBwcm9ncmFtcy90YXNrbWdyL3Rhc2ttZ3IuaCwKCSAgcHJvZ3JhbXMvdGFza21nci90YXNrbWdyLnJjLCBwcm9ncmFtcy90YXNrbWdyL3RyYXlpY29uLmM6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCVBvcnRlZCB0aGUgUmVhY3RPUyB0YXNrbWdyIHdyaXR0ZW4gYnkgQnJpYW4gUGFsbWVyLgoKCSogdG9vbHMvd2luZWdjYy91dGlscy5jLCB0b29scy93aW5lZ2NjL3V0aWxzLmgsIHRvb2xzL3dpbmVnY2Mvd2luZWdjYy5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUZpcnN0IGN1dCBhdCAtc2hhcmVkIHN1cHBvcnQuCgoyMDA0LTAzLTIyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9udGRsbC90ZXN0cy9wYXRoLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglBZGRlZCBzb21lIHRlc3RzIGZvciBSdGxHZXRGdWxsUGF0aE5hbWVfVS4KCgkqIGRsbHMvbnRkbGwvcGF0aC5jOgoJTW92ZWQgc2xhc2ggY29udmVyc2lvbiB0byBjb2xsYXBzZV9wYXRoLCBhbmQgcmVtb3ZlIGR1cGxpY2F0ZQoJYmFja3NsYXNoZXMgdG9vLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsbGluay5jOiBNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJRml4IGZvciByZWNlbnQgc2hlbGxsaW5rIHBhdGNoLCB3aGljaCByZW1vdmVkIHRoZSBpbXBvcnRhbnQgcGFydCBvZgoJcmV0dXJuaW5nIHRoZSByZXN1bHQgcG9pbnRlciBmcm9tIElTaGVsbExpbmtfQ29uc3RydWN0RnJvbUZpbGUoKS4KCgkqIGRsbHMvc2hlbGwzMi9waWRsLmM6IFJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CglBbGxvdyBwYXNzaW5nIE5VTEwgdG8gSUxGaW5kTGFzdElELgoKCSogaW5jbHVkZS9ycGNuZHIuaDogUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCUFkZGVkIHNvbWUgZGVjbGFyYXRpb25zLgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliLmM6IFJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CglCU1RSIG9mIGxlbmd0aCAwIGlzIGFsbG93ZWQuCgoJKiBkbGxzL2RkcmF3L2RkcmF3L21haW4uYzogQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJRW5hYmxlIGNyZWF0aW9uIG9mIGEgemJ1ZmZlciBpbiBzeXN0ZW0gbWVtb3J5LgoKCSogZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jOiBNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJRml4IHJlY2VudCBVbmljb2RlLWlmaWNhdGlvbiBwYXRjaC4KCgkqIHByb2dyYW1zL3djbWQvYnVpbHRpbnMuYywgcHJvZ3JhbXMvd2NtZC93Y21kLmgsCgkgIHByb2dyYW1zL3djbWQvd2NtZG1haW4uYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCBzZXRsb2NhbC9lbmRsb2NhbC4KCgkqIGRsbHMvd2luaW5ldC9odHRwLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWxsb2NhdGUgdGhlIGNvcnJlY3QgbnIgb2YgYnl0ZXMgZm9yIGxwc3pDb29raWVzIGluIEhUVFBfSHR0cE9wZW5SZXF1ZXN0QS4KCUFsbG9jYXRlIHRoZSBjb3JyZWN0IG5yIG9mIGJ5dGVzIGZvciByZXF1ZXN0IHN0cmluZ2xlbiB3aXRob3V0IG9wdGlvbnMuCgoJKiBkbGxzL2FkdmFwaTMyL2FkdmFwaS5jLCBkbGxzL2FkdmFwaTMyL2FkdmFwaTMyLnNwZWM6CglKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglTdHViIENvbW1hbmRMaW5lRnJvbU1zaURlc2NyaXB0b3IgdG8gcHJldmVudCBhIGNyYXNoIGluIEFjY2VsZXJ5cwoJTWF0ZXJpYWxzIFN0dWRpby4KCgkqIHRvb2xzL3dpbmFwaS9tc3ZjbWFrZXI6IFN0ZXZlbiBFZHdhcmRzIDxzdGV2ZW5fZWQ0MTUzQHlhaG9vLmNvbT4KCVJlbW92ZSByZWZlcmVuY2UgdG8gb2xkIGdyYXBoaWNzIGRpcmVjdG9yeQoKCSogZGxscy91cmxtb24vTWFrZWZpbGUuaW4sIGRsbHMvdXJsbW9uL3Vtb24uYzoKCUtldmluIEtvbHR6YXUgPGtldmluQHBsb3Aub3JnPgoJSW1wbGVtZW50IEZpbmRNaW1lRnJvbURhdGEuCgoJKiBkbGxzL2lwaGxwYXBpL3Rlc3RzL2lwaGxwYXBpLmM6IEhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJRG9uJ3QgaW5jbHVkZSBjb25maWcuaC4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJVXBkYXRlIHBhdGggZnJvbSByZWxhdGl2ZSBwYXRoIG9uIGxvYWRpbmcuCgoJKiB0b29scy93aW5lYnVpbGQvc3BlYzMyLmM6IFBpZXJyZSBkJ0hlcmJlbW9udCA8c3RlZ2VmaW5AZnJlZS5mcj4KCURhcndpbiBzdXBwb3J0IGZvciBfaW5pdC9fZmluaSBmdW5jdGlvbnMgYW5kIF9lbmQgc3ltYm9sLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvLmN2c2lnbm9yZSwgZGxscy9rZXJuZWwvdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMva2VybmVsL3Rlc3RzL3RpbWUuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUFkZGVkIHRlc3RzIGZvciB0aW1lIGZ1bmN0aW9ucy4KCgkqIGRsbHMvc2hlbGwzMi9mb2xkZXJzLmMsIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmg6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglVbmljb2RlLWlmeSB0aGUgaWNvbiBjYWNoZSBhbmQgU0hHZXRGaWxlSW5mby4KCgkqIHdpbmRvd3Mvc3lzcGFyYW1zLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCUNvcnJlY3RseSBzaXplIHRoZSBzcGlfbG9hZGVkIGFycmF5IHByZXZlbnRzIG92ZXJ3cml0aW5nIG9mIHN5c3RlbQoJcGFyYW1ldGVycy4KCgkqIGRsbHMvd2luaW5ldC9odHRwLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWxsb2NhdGUgY29ycmVjdCBudW1iZXIgb2YgcG9pbnRlcnMgZm9yIHN6QWNjZXB0VHlwZXMsIHNpbmNlIHdlIG5lZWQKCWl0IE5VTEwgdGVybWluYXRlZC4KCUhlYXBSZUFsbG9jIHdpbGwgbW9kaWZ5IHRoZSBwb2ludGVyLCBzbyBzdG9yZSBpdCB0aGVyZS4KCgkqIGRvY3VtZW50YXRpb24vZGRyYXcuc2dtbDogUnVkb2xmIEthc3RsIDxjaGU2NjZAdW5pLmRlPgoJQWRkZWQgbWlzc2luZyBwYXJhIHRhZy4KCgkqIGRsbHMvc2hsd2FwaS90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL3NobHdhcGkvdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvc2hsd2FwaS90ZXN0cy9vcmRpbmFsLmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJVGVzdCBTSFNlYXJjaE1hcEludC4KCgkqIGRsbHMvb2xlYXV0MzIvdGVzdHMvdmFydGVzdC5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCVRlc3RzIGZvciBWYXJYb3IvVmFyRXF2LgoKCSogZGxscy9vbGVhdXQzMi9vbGVhdXQzMi5zcGVjLCBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglJbXBsZW1lbnQgVmFyWG9yIGFuZCBzaW1wbGlmeSBWYXJFcXYgdG8gdXNlIGl0LgoKCSogaW5jbHVkZS9ycGNuZHIuaDogRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglBZGRlZCBDKysgc3VwcG9ydC4KCgkqIGRsbHMvd3NvY2szMi9wcm90b2NvbC5jOiBIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCVBvcnRpbmcgZml4ZXMuCgoyMDA0LTAzLTIwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29udHJvbHMvbGlzdGJveC5jOiBGaXhlZCB0eXBvIGluIHByZXZpb3VzIGNoYW5nZS4KCgkqIGZpbGVzL2ZpbGUuYzogQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJRml4ZWQgT3BlbkZpbGUgcmV0dXJuZWQgdmFsdWUgd2hlbiBPRl9FWElTVCBmbGFnIGlzIHNwZWNpZmllZC4KCgkqIHdpbmRvd3MvZGlhbG9nLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglDaGFuZ2Ugb3JkZXIgb2YgRW5hYmxlV2luZG93L0Rlc3Ryb3lXaW5kb3cgaW4gdGhlIGNhc2Ugb2YgZmFpbHVyZSBpbgoJRElBTE9HX0NyZWF0ZUNvbnRyb2xzMzIuCgoJKiBkb2N1bWVudGF0aW9uL01ha2VmaWxlLmluLCBkb2N1bWVudGF0aW9uL2RkcmF3LnNnbWwsCgkgIGRvY3VtZW50YXRpb24vZGRyYXcudHh0LCBkb2N1bWVudGF0aW9uL3dpbmUtZGV2ZWwuc2dtbDoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkBhbHVtLndwaS5lZHU+CglDb252ZXJ0IGRkcmF3LnR4dCB0byBkZHJhdy5zZ21sIGFuZCBhZGQgaXQgdG8gdGhlIHdpbmUtZGV2ZWwKCWRvY3VtZW50YXRpb24uCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jOiBSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglGaXggYSBwb3NzaWJsZSBudWxsIHBvaW50ZXIgY3Jhc2ggaW4gRklMRURMRzk1X0xPT0tJTl9Jbml0LgoKCSogcHJvZ3JhbXMvd2luZXRlc3QvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmV0ZXN0L21haW4uYywKCSAgcHJvZ3JhbXMvd2luZXRlc3QvbWFrZXRlc3Q6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQWRkIHJldmlzaW9uIHN1cHBvcnQgdG8gd2luZXRlc3QuZXhlLgoKCSogdG9vbHMvd2luZS5pbmY6IEtldmluIEtvbHR6YXUgPGtldmluQHBsb3Aub3JnPgoJQWRkIENvbnRlbnQgVHlwZXMgZm9yIGEgZmV3IGNvbW1vbiBleHRlbnNpb25zLgoKCSogZGxscy9tc2kvTWFrZWZpbGUuaW4sIGRsbHMvbXNpL2luc2VydC5jLCBkbGxzL21zaS9xdWVyeS5oLAoJICBkbGxzL21zaS9zcWwueSwgZGxscy9tc2kvd2hlcmUuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVN0YXJ0IGltcGxlbWVudGluZyB0aGUgU1FMIGluc2VydCBxdWVyeS4KCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYzogQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJSW1wcm92ZSBEM0Q3IGNvbXBhdGliaWxpdHkuCgoJKiBkbGxzL2QzZDgvZGV2aWNlLmM6IENocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUFkZFJlZiB0ZXh0dXJlIG9ubHkgaWYgdGhlcmUgaXMgb25lIGZvciB0aGUgcmVxdWVzdGVkIHN0YWdlLgoKCSogZGxscy9rZXJuZWwva2VybmVsX21haW4uYywgZGxscy9rZXJuZWwva2VybmVsX3ByaXZhdGUuaCwKCSAgZGxscy9rZXJuZWwvdm9sdW1lLmMsIGRvY3VtZW50YXRpb24vc2FtcGxlcy9jb25maWcsCgkgIGRvY3VtZW50YXRpb24vd2luZS5jb25mLm1hbiwgZmlsZXMvZG9zX2ZzLmMsIGZpbGVzL2RyaXZlLmMsCgkgIGZpbGVzL2ZpbGUuYywgaW5jbHVkZS9maWxlLmg6CglSZXdyb3RlIGhhbmRsaW5nIG9mIENPTSBhbmQgTFBUIGRldmljZXMgdG8gdXNlIHN5bWxpbmtzIGluCgkkV0lORVBSRUZJWC9kb3NkZXZpY2VzLCB3aXRoIHN1aXRhYmxlIGRlZmF1bHRzIGlmIHRoZSBzeW1saW5rcyBhcmUKCW1pc3NpbmcuCglSZXdyb3RlIFF1ZXJ5RG9zRGV2aWNlIGFuZCBEZWZpbmVEb3NEZXZpY2UgdG8gdXNlIHRoZSBuZXcgc2NoZW1lLgoJQWRkZWQgdGVtcG9yYXJ5IGNvZGUgdG8gY3JlYXRlIHRoZSBzeW1saW5rcyBiYXNlZCBvbiB0aGUgY29udGVudHMgb2YKCXRoZSBjb25maWcgZmlsZS4KCjIwMDQtMDMtMTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC9mb3JtYXRfbXNnLmM6IFVscmljaCBDemVrYWxsYSA8dWxyaWNoQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCB0eXBvIGluIEZvcm1hdE1lc3NhZ2VXLgoKCSogcHJvZ3JhbXMvd2luZXRlc3Qvc2VuZC5jLCBwcm9ncmFtcy93aW5ldGVzdC91dGlsLmM6CglGZXJlbmMgV2FnbmVyIDx3ZmVyaUBhZmF2YW50LmVsdGUuaHU+CgktIFJlZmFjdG9yIGFuZCBmaXggY29ubmVjdGlvbiBvcGVuaW5nLgoJLSBUYXJnZXQgdGVzdC53aW5laHEub3JnLgoKCSogZGxscy93aW5tbS9tY2lhdmkvbWNpYXZpLmMsIGRsbHMvd2lubW0vbWNpYXZpL3ByaXZhdGVfbWNpYXZpLmg6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJSnVzdCB1cGRhdGUgZnJvbS90byBwb2ludGVycyBhbmQgZXhpdCBvbiBhIHN1YnNlcXVlbnQgTUNJX1BMQVkKCWNvbW1hbmQuCgoJKiBkbGxzL3VzZXIvdGVzdHMvd2luLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGQgYSB0ZXN0IGNhc2Ugd2hpY2ggY29uZmlybXMgdGhhdCBTZXRNZW51IGltcGxlbWVudGF0aW9uIGluIFdpbmUgaXMKCWNvcnJlY3QuCgoJKiBkbGxzL2NvbWN0bDMyL3JlYmFyLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2Ugc3VyZSB0aGUgcmViYXIgc2l6ZSBpcyBhYm92ZSBhIG1pbmltdW0uCgoJKiBkbGxzL21zaS9jcmVhdGUuYywgZGxscy9tc2kvaGFuZGxlLmMsIGRsbHMvbXNpL21zaS5jLAoJICBkbGxzL21zaS9tc2lwcml2LmgsIGRsbHMvbXNpL21zaXF1ZXJ5LmMsIGRsbHMvbXNpL3JlY29yZC5jLAoJICBkbGxzL21zaS9zdHJpbmcuYywgZGxscy9tc2kvc3VtaW5mby5jLCBkbGxzL21zaS90YWJsZS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IGhhbmRsZSBhbGxvY2F0aW9uIGFuZCB0aGUgQ1JFQVRFIFRBQkxFIHF1ZXJ5LgoKCSogZGxscy9udGRsbC9sb2FkZXIuYzoKCUFkZGVkIHdvcmthcm91bmQgZm9yIGJyb2tlbiBkbGxzIHRoYXQgbW9kaWZ5IGVieCBpbiB0aGVpciBlbnRyeSBwb2ludAoJKHJlcG9ydGVkIGJ5IENocmlzdGlhbiBDb3N0YSkuCgoJKiBwcm9ncmFtcy93aW5ldGVzdC9ndWkuYywgcHJvZ3JhbXMvd2luZXRlc3QvbWFpbi5jLAoJICBwcm9ncmFtcy93aW5ldGVzdC9zZW5kLmM6CglGZXJlbmMgV2FnbmVyIDx3ZmVyaUBhZmF2YW50LmVsdGUuaHU+CgktIEZpeCByZXBvcnQoKSBkaXNwYXRjaC4KCS0gU3RyaXAgIl90ZXN0Li4uIiBmcm9tIHRlc3QgZmlsZSBuYW1lcy4KCS0gVXNlIG15c3RydG9rKCkgZm9yIGNvbW1hbmQgbGluZSBwYXJzaW5nIHRvIGF2b2lkIGNvbGxpc2lvbiB3aXRoIHRoZQoJICBvbmUgaW4gZ2V0X3N1YnRlc3RzKCkuCgktIENoYW5nZSBVc2VyLUFnZW50IEhUVFAgaGVhZGVyIHRvICJXaW5ldGVzdCBTaGVsbCIuCgoJKiBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYywgZGxscy9tc3ZjcnQvdGVzdHMvLmN2c2lnbm9yZSwKCSAgZGxscy9tc3ZjcnQvdGVzdHMvTWFrZWZpbGUuaW4sIGRsbHMvbXN2Y3J0L3Rlc3RzL3N0cmluZy5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJUmVsYXkgbXN2Y3J0X21lbWNweSB0byBtZW1tb3ZlLCBDU3RyaW5nOjpJbnNlcnQgc2VlbXMgdG8gcmVseSBvbiB0aGF0CgliZWhhdmlvdXIuIEFkZCBhIHRlc3QgY2FzZS4KCgkqIGRsbHMvc2hlbGwzMi9zaGxleGVjLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCUluIFNIRUxMX0V4ZWN1dGVXLCBpZiBhIG5ldyBjdXJyZW50IGRpcmVjdG9yeSBpcyBzcGVjaWZpZWQsIGNoYW5nZSB0bwoJaXQgYmVmb3JlIGNhbGxpbmcgQ3JlYXRlUHJvY2VzcyBzbyB0aGF0IGl0IHdpbGwgZmluZCB0aGUgY29ycmVjdAoJZXhlY3V0YWJsZS4KCgkqIGRsbHMva2VybmVsL2Zvcm1hdF9tc2cuYzogVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hAY29kZXdlYXZlcnMuY29tPgoJQ29udmVydCBGb3JtYXRNZXNzYWdlVyB0byB1c2UgdW5pY29kZSBmdW5jdGlvbnMuCgoJKiBkbGxzL3VzZXIvY29tbTE2LmM6CglHZXQgcmlkIG9mIHRoZSByZWdpc3RyeSBsb29rdXBzLCByZWx5IGVudGlyZWx5IG9uIHRoZSBrZXJuZWwgZGV2aWNlcwoJaW5zdGVhZC4KCgkqIHByb2dyYW1zL3dpbmVjZmcvbWFpbi5jOgoJQXZvaWQgaW5jbHVkaW5nIHdpbmRvd3MuaCBzaW5jZSBpdCBjb25mbGljdHMgd2l0aCB1bmlzdGQuaC4KCgkqIGRsbHMveDExZHJ2L2V2ZW50LmM6IE1pa2UgSGVhcm4gPG1oQGNvZGV3ZWF2ZXJzLmNvbT4KCVRoZSBLZXltYXBOb3RpZnkgZXZlbnQgZG9lcyBub3QgdXNlIHRoZSB3aW5kb3cgbWVtYmVyLCBzbyBkb24ndCB3YXJuCglhYm91dCBpdCBiZWluZyB1bmtub3duLgoKCSogZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWMsIGRsbHMvbXN2Y3J0L3RpbWUuYzoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJUmVpbXBsZW1lbnQgdGltZSBmdW5jdGlvbnMgd2l0aCBXaW4zMiBBUElzLgoJSW1wbGVtZW50IGxvY2FsdGltZSgpL2dtdGltZSgpLgoKCSogZGxscy9tc2kvY3JlYXRlLmMsIGRsbHMvbXNpL2Rpc3RpbmN0LmMsIGRsbHMvbXNpL21zaS5jLAoJICBkbGxzL21zaS9tc2lwcml2LmgsIGRsbHMvbXNpL29yZGVyLmMsIGRsbHMvbXNpL3F1ZXJ5LmgsCgkgIGRsbHMvbXNpL3NlbGVjdC5jLCBkbGxzL21zaS9zcWwueSwgZGxscy9tc2kvc3RyaW5nLmMsCgkgIGRsbHMvbXNpL3RhYmxlLmMsIGRsbHMvbXNpL3Rva2VuaXplLmMsIGRsbHMvbXNpL3doZXJlLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXJzdCBnbyBhdCB3cml0ZSBzdXBwb3J0LgoKCSogZGxscy91c2VyL3Rlc3RzL3N5c3BhcmFtcy5jLCB3aW5kb3dzL3N5c3BhcmFtcy5jOgoJSnVzdGluIENoZXZyaWVyIDxqY2hldnJpZXJAbmV4aWNvbS5uZXQ+CglJbXBsZW1lbnRlZCBTUEl7R0VULFNFVH1NT1VTRUhPVkVSV0lEVEgsIFNQSXtHRVQsU0VUfU1PVVNFSE9WRVJIRUlHSFQsCglTUEl7R0VULFNFVH1NT1VTRUhPVkVSVElNRSwgU1BJe0dFVCxTRVR9TU9VU0VTQ1JPTExMSU5FUywKCVNQSXtHRVQsU0VUfU1FTlVTSE9XREVMQVkuCgoyMDA0LTAzLTE4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZmlsZXMvZG9zX2ZzLmMsIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwgc2VydmVyL2ZpbGUuYywKCSAgc2VydmVyL2ZpbGUuaCwgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3JlcXVlc3QuaCwKCSAgc2VydmVyL3NlcmlhbC5jLCBzZXJ2ZXIvdHJhY2UuYzoKCU1ha2UgdGhlIHN0YW5kYXJkIGNyZWF0ZV9maWxlIHJlcXVlc3QgaGFuZGxlIHNlcmlhbCBwb3J0cyB0b28sIGFuZAoJcmVtb3ZlIHRoZSBjcmVhdGVfc2VyaWFsIHJlcXVlc3QuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLAoJICBkbGxzL3NoZWxsMzIvc2hsZXhlYy5jOgoJTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCUV4cGFuZCBlbnZpcm9ubWVudCBzdHJpbmdzIGluIGNvbW1hbmQsIHBhcmFtZXRlciBhbmQgZGlyZWN0b3J5IHN0cmluZ3MKCW9mIFNoZWxsRXhlY3V0ZUV4VzMyKCkuCgoJKiBkbGxzL21zaS9tc2kuYywgZGxscy9tc2kvbXNpcHJpdi5oLCBkbGxzL21zaS9tc2lxdWVyeS5jLAoJICBkbGxzL21zaS9zdHJpbmcuYywgZGxscy9tc2kvdGFibGUuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVdoZW4gbG9hZGluZyB0YWJsZSBkYXRhLCBzcGxpdCBpdCB1cCBpbnRvIHJvd3MuCgoJKiBwcm9ncmFtcy93Y21kL2J1aWx0aW5zLmMsIHByb2dyYW1zL3djbWQvd2NtZG1haW4uYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVkIGhhbmRsaW5nIG9mICJlY2hvLiIKCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOiBSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJLSBGaXggU2V0Qml0bWFwU2l6ZS4KCS0gRml4IFNldEJ1dHRvbkluZm8uCgoJKiBjb250cm9scy9tZW51LmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglUcmFuc2xhdGVBY2NlbGVyYXRvciBzaG91bGQgb25seSBpZ25vcmUgY29tbWFuZHMgd2hlbiBtb3VzZSBjYXB0dXJlIGlzCglpbiBlZmZlY3Qgb3IgdGhlIHdpbmRvdyBpcyBkaXNhYmxlZCwgaWYgdGhlIGNvbW1hbmQgY29ycmVzcG9uZHMgdG8gYQoJbWVudSBpdGVtLiAgT3RoZXJ3aXNlIGl0IHNob3VsZCBwcm9jZXNzIHRoZW0gYXMgbm9ybWFsLgoKCSogY29udHJvbHMvbGlzdGJveC5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJSW52YWxpZGF0ZSB0aGUgZm9jdXNlZCBpdGVtIHdoZW4gc2Nyb2xsaW5nIGhvcml6b250YWxseSBzbyB0aGF0IGl0CglyZXBhaW50cyBjb3JyZWN0bHkuCgoJKiBkbGxzL3NobHdhcGkvLmN2c2lnbm9yZSwgZGxscy9zaGx3YXBpL01ha2VmaWxlLmluLAoJICBkbGxzL3NobHdhcGkvbXNnYm94LmMsIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsCgkgIGRsbHMvc2hsd2FwaS9yZXNvdXJjZS5oLCBkbGxzL3NobHdhcGkvc2hsd2FwaS5yYywKCSAgZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYywgZGxscy9zaGx3YXBpL3NobHdhcGlfRW4ucmMsCgkgIGRsbHMvc2hsd2FwaS9zdHJpbmcuYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglJbXBsZW1lbnQgU0hNZXNzYWdlQm94Q2hlY2sgZnVuY3Rpb25zICYmIGFkZCBkaWFsb2cgcmVzb3VyY2VzLgoJQWRkIFNIV2FpdEZvclNlbmRNZXNzYWdlVGhyZWFkLCBTSEFuc2lUb1VuaWNvZGVDUCxTSFN0cmlwTW5ldW1vbmljVywKCVNIU2VhcmNoTWFwSW50LgoKCSogZGxscy9udGRsbC9NYWtlZmlsZS5pbiwgZGxscy9udGRsbC9kZWJ1Z2J1ZmZlci5jLAoJICBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGluY2x1ZGUvd2ludGVybmwuaDoKCVJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJU3R1YiBpbXBsZW1lbnRhdGlvbnMgb2YgUnRsQ3JlYXRlUXVlcnlEZWJ1Z0J1ZmZlciwKCVJ0bERlc3Ryb3lRdWVyeURlYnVnQnVmZmVyIGFuZCBSdGxRdWVyeVByb2Nlc3NEZWJ1Z0luZm9ybWF0aW9uLgoKCSogZGxscy9rZXJuZWwvc3luYy5jOiBSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCVJlbW92ZSBkdXBsaWNhdGUgY29kZSBieSB1c2luZyBOdCogZnVuY3Rpb25zIGZvciBQdWxzZUV2ZW50LAoJUmVzZXRFdmVudCBhbmQgU2V0RXZlbnQuCgoJKiBkbGxzL2tlcm5lbC9jb25zb2xlLmM6IFJpY2hhcmQgQ29oZW4gPHJpY2hhcmRAZGFpam9idS5jby51az4KCUFkZGVkIHNvbWUgdHJhY2VzLgoKCSogZGxscy93aW5tbS9tY2lhdmkvbWNpYXZpLmM6IENocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCVJlbGVhc2UgbG9jayBiZWZvcmUgd2F2ZSBjYWxscyB0aGF0IGdlbmVyYXRlIG5vdGlmaWNhdGlvbi4KCgkqIGRsbHMvYWR2YXBpMzIvcmVnaXN0cnkuYzogSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJQWxsb3cgUmVnQ29ubmVjdFJlZ2lzdHJ5VyB0byB0aGUgbG9jYWwgbWFjaGluZSBuYW1lLgoKMjAwNC0wMy0xNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL2ZpbGUuYywgZGxscy9rZXJuZWwvdGVzdHMvZmlsZS5jLCBmaWxlcy9kb3NfZnMuYzoKCVJlaW1wbGVtZW50ZWQgRmluZEZpcnN0RmlsZS9GaW5kTmV4dEZpbGUgb24gdG9wIG9mCglOdFF1ZXJ5RGlyZWN0b3J5RmlsZS4KCgkqIGRsbHMvbXNpL01ha2VmaWxlLmluLCBkbGxzL21zaS9tc2kuYywgZGxscy9tc2kvbXNpcHJpdi5oLAoJICBkbGxzL21zaS9zdHJpbmcuYywgZGxscy9tc2kvdGFibGUuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCU1vdmUgdGhlIHN0cmluZyB0YWJsZSBvdXQgaW50byBhIHNlcGFyYXRlIGZpbGUsIGltcHJvdmUgbG9va3Vwcy4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzIuc3BlYywgZGxscy9vbGVhdXQzMi92YXJpYW50LmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJSW1wbGVtZW50IFZhckVxdi4KCgkqIGRsbHMva2VybmVsL2NvbnNvbGUuYzogUmljaGFyZCBDb2hlbiA8cmljaGFyZEBkYWlqb2J1LmNvLnVrPgoJRml4IHJlbGF0aXZlIHNjcmVlbiByZXNpemluZy4KCgkqIHRvb2xzL3dpbmVidWlsZC9pbXBvcnQuYzogUmljaGFyZCBDb2hlbiA8cmljaGFyZEBkYWlqb2J1LmNvLnVrPgoJUmVtb3ZlIC4gZnJvbSBkZWZhdWx0IGxpYnJhcnkgc2VhcmNoIHBhdGguCgoJKiBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZS5jOgoJUmljaGFyZCBDb2hlbiA8cmljaGFyZEBkYWlqb2J1LmNvLnVrPgoJRml4IGN1cnNvciBwb3NpdGlvbiBvcHRpbWl6YXRpb24uCgoJKiB3aW5kb3dzL3BhaW50aW5nLmM6IFJpY2hhcmQgQ29oZW4gPHJpY2hhcmRAZGFpam9idS5jby51az4KCUZJWE1FXyh3aW4pIC0+IEZJWE1FLgoKCSogZGxscy9zaGx3YXBpL3JlZy5jOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJTWFrZSBjb3BpZXMgb2Yga2V5cyB3aGVuIGNyZWF0aW5nLCBmcmVlIHRoZW0gd2hlbiBkb25lLgoJVXNlIEtFWV9BTExfQUNDRVNTIHdoZW4gd3JpdGluZyBVUyByZWcgdmFsdWVzLgoJU0hSZWdXcml0ZVVTVmFsdWVXOiBIYW5kbGUgYWxsIGZsYWcgY29tYmluYXRpb25zLgoJTWFrZSBzb21lIEEgY2FsbHMgdXNlIHRoZSBXIHZlcnNpb24uCgoJKiBkbGxzL29sZWF1dDMyL3Rlc3RzL29sZWZvbnQuYywgZGxscy9vbGVhdXQzMi90ZXN0cy9zYWZlYXJyYXkuYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglVc2UgZnVuY3Rpb24gcHRycyBmb3IgY2FsbCBvbmx5IHByZXNlbnQgaW4gbGF0ZXIgdmVyc2lvbnMuCglGaXggdGVzdHMgdGhhdCBmYWlsIHdpdGggb2xkIHZlcnNpb25zLgoKCSogZGxscy9pY2N2aWQvaWNjdmlkLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUNvcnJlY3QgZ2VvbWV0cnkgZXJyb3IgaW4gdGhlIElDQ1ZJRCBjb2RlYy4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOiBSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJLSBEb2N1bWVudGF0aW9uIHVwZGF0ZS4KCS0gQmV0dGVyIGhvdCBpdGVtIGhhbmRsaW5nLgoJLSBGaXggRHJhd01hc2tlZCB0byBhbHdheXMgdXNlIHRoZSByaWdodCBpbWFnZSBsaXN0IGFuZCBiaXRtYXAgaW5kZXguCgoJKiBkbGxzL250ZGxsL3BhdGguYzoKCVJld3JvdGUgdGhlIGNvbGxhcHNpbmcgb2YgLiBhbmQgLi4gaW4gUnRsR2V0RnVsbFBhdGhOYW1lX1UgZm9yIGJldHRlcgoJY29tcGF0aWJpbGl0eS4KCgkqIGRsbHMva2VybmVsL3BhdGguYzoKCVJldHJpZXZlIGEgc2hvcnQgbmFtZSBpbiBHZXRTaG9ydFBhdGhOYW1lVyBpZiB0aGUgbG9uZyBuYW1lIGNvbnRhaW5zCglzcGFjZXMuCgoJKiBjb250cm9scy9saXN0Ym94LmMsIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvd2luZWRvcy9pbnQyMS5jOgoJRmluZEZpcnN0RmlsZSBjYW4gcmV0dXJuIGFuIGVtcHR5IHNob3J0IG5hbWUgaWYgdGhlIGxvbmcgbmFtZSBpcyBhCgl2YWxpZCBET1MgbmFtZSwgZml4ZWQgY2FsbGVycyB0byBoYW5kbGUgdGhhdCBwcm9wZXJseS4KCgkqIGRsbHMvc2V0dXBhcGkvTWFrZWZpbGUuaW4sIGRsbHMvc2V0dXBhcGkvZGlza3NwYWNlLmMsCgkgIGRsbHMvc2V0dXBhcGkvc2V0dXBhcGkuc3BlYywgZGxscy9zZXR1cGFwaS9zdHVicy5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUJlZ2lubmluZ3Mgb24gaW1wbGVtZW50YXRpb25zIG9mIFNldHVwQ3JlYXRlRGlza1NwYWNlTGlzdEEvVywKCVNldHVwUXVlcnlTcGFjZVJlcXVpcmVkT25Ecml2ZUEsIFNldHVwRGVzdHJveURpc2tTcGFjZUxpc3QgYW5kCglTZXR1cEFkZEluc3RhbGxTZWN0aW9uVG9EaXNrU3BhY2VMaXN0QSBmb3IgTURBQyBpbnN0YWxsLgoKCSogZGxscy9kc291bmQvZHNvdW5kX21haW4uYywgZGxscy9kc291bmQvZHNvdW5kX3ByaXZhdGUuaCwKCSAgZGxscy9kc291bmQvc291bmQzZC5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCVJlbW92ZSB1bnVzZWQgbG9jay4KCgkqIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGRsbHMva2VybmVsL3N5bmMuYzoKCVJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJQWRkZWQgc3R1YiBmb3IgU2lnbmFsT2JqZWN0QW5kV2FpdC4KCgkqIGRsbHMvd2luc3Bvb2wvaW5mby5jLCBkbGxzL3dpbnNwb29sL3dpbnNwb29sLmRydi5zcGVjOgoJU3RldmVuIEVkd2FyZHMgPHN0ZXZlbl9lZDQxNTNAeWFob28uY29tPgoJQWRkIHN0dWJzIGZvciBFbnVtTW9uaXRvcnNbQS9XXS4KCjIwMDQtMDMtMTYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2RkcmF3L2RzdXJmYWNlL2RpYi5jOiBFbGlhcyBSb3NzIDxnZW5tYW5AbWFpc29uLW90YWt1Lm5ldD4KCUFkZGVkIDI0LWJpdCBjb2xvciBrZXkgc3VwcG9ydCBpbiBESUJfRGlyZWN0RHJhd1N1cmZhY2VfQmx0RmFzdC4KCgkqIGRsbHMvbXNpL01ha2VmaWxlLmluOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRXhwbGljaXRseSBzcGVjaWZ5IG91dHB1dCBmaWxlIG5hbWVzIGZvciBiaXNvbi4KCgkqIGRsbHMvbnRkbGwvZGlyZWN0b3J5LmM6IE9fRElSRUNUT1JZIGlzIG5vdCByZWFsbHkgbmVlZGVkLgoKCSogZGxscy9tc2kvTWFrZWZpbGUuaW4sIGRsbHMvbXNpL2NyZWF0ZS5jLCBkbGxzL21zaS9tc2kuYywKCSAgZGxscy9tc2kvbXNpcHJpdi5oLCBkbGxzL21zaS9xdWVyeS5oLCBkbGxzL21zaS9zcWwueSwKCSAgZGxscy9tc2kvdG9rZW5pemUuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUV4dGVuZCB0aGUgcGFyc2VyIHRvIGRlYWwgd2l0aCB0aGUgQ1JFQVRFIFRBQkxFIHF1ZXJ5LiBUaGUgcXVlcnkKCWRvZXNuJ3QgZG8gYW55dGhpbmcgYXMgeWV0LgoKCSogZGxscy9tc3ZjcnQvZGlyLmMsIGRsbHMvbXN2Y3J0L2Vycm5vLmMsIGRsbHMvbXN2Y3J0L2V4aXQuYywKCSAgZGxscy9tc3ZjcnQvZmlsZS5jLCBkbGxzL21zdmNydC9tYXRoLmMsIGRsbHMvbXN2Y3J0L21zdmNydC5oLAoJICBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYywgZGxscy9tc3ZjcnQvcHJvY2Vzcy5jLCBkbGxzL21zdmNydC9zdHJpbmcuYywKCSAgaW5jbHVkZS9tc3ZjcnQvZGlyZWN0LmgsIGluY2x1ZGUvbXN2Y3J0L2Rvcy5oLCBpbmNsdWRlL21zdmNydC9pby5oLAoJICBpbmNsdWRlL21zdmNydC9zdGRpby5oLCBpbmNsdWRlL21zdmNydC9zdGRsaWIuaCwKCSAgaW5jbHVkZS9tc3ZjcnQvc3RyaW5nLmgsIGluY2x1ZGUvbXN2Y3J0L3N5cy9zdGF0LmgsCgkgIGluY2x1ZGUvbXN2Y3J0L3RpbWUuaCwgaW5jbHVkZS9tc3ZjcnQvd2NoYXIuaDoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJLSBQcmVmaXggbWFueSBtb3JlIGZ1bmN0aW9ucywgdHlwZXMsIHN0cnVjdHMsIGV0Yy4gd2l0aCBNU1ZDUlRfLgoJLSBDb3JyZWN0IHByb3RvdHlwZXMgZm9yIF9tZW1jY3B5KCkvX21lbWljbXAoKS4KCS0gImRlZmluZSBiZWZvcmUgdXNlIiByZW9yZGVyaW5nIGluIGZpbGUuYy4KCS0gVXNlIHRoZSBuZXcgbWF0aC5oL2Zsb2F0LmguCgoJKiBkbGxzL29sZWF1dDMyL3Rlc3RzL3ZhcnRlc3QuYywgZGxscy9vbGVhdXQzMi92YXJpYW50LmM6CglGYWJpYW4gQ2VuZWRlc2UgPENlbmVkZXNlQGluZGVsLmNoPgoJTGV0IFZhclBhcnNlTnVtRnJvbVN0ciBhbmQgVmFyTnVtRnJvbVBhcnNlTnVtIGNvcGUgd2l0aCBoZXggYW5kIG9jdAoJc3RyaW5ncy4gTmVlZGVkIGZyb20gVkIgY29udmVyc2lvbnMgc3VjaCBhcyBDTG5nLCBDSW50LCBDQnl0ZS4uLgoKCSogZGxscy9jb21jdGwzMi9yZWJhci5jOiBGaWxpcCBOYXZhcmEgPHhuYXZhcmFAdm9sbnkuY3o+CglTdXBwb3J0IGZvciBSQkJTX0hJREVUSVRMRSBzdHlsZS4KCgkqIGRsbHMvY2FyZHMvY2FyZHMuYywgZGxscy9jYXJkcy9jYXJkcy5oOgoJU2FtaSBOb3BhbmVuIDx4YXNteEBvcHRvbmxpbmUubmV0PgoJLSBFbnVtZXJhdGVkIGRpZmZlcmVudCBkcmF3aW5nIG1vZGVzLgoJLSBJbXBsZW1lbnRlZCBISUxJVEUsIFJFTU9WRSBhbmQgR0hPU1QgZHJhd2luZyBtb2Rlcy4KCgkqIGRsbHMvc2V0dXBhcGkvc2V0dXBhcGkuc3BlYywgZGxscy9zZXR1cGFwaS9zdHVicy5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIHN0dWJzIG5lZWRlZCBieSBzb21lIFdpbmRvd3MgVXBkYXRlIGluc3RhbGxzLgoKCSogY29udHJvbHMvc2Nyb2xsLmM6IFVscmljaCBDemVrYWxsYSA8dWxyaWNoQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBjYXN0IHRvIGNvcnJlY3RseSBpbnRlcnByZXQgc2lnbmVkIGNvb3JkaW5hdGUgdmFsdWVzLgoKCSogZGxscy9tc2kvLmN2c2lnbm9yZSwgZGxscy9tc2kvTWFrZWZpbGUuaW4sIGRsbHMvbXNpL2NvbmQueSwKCSAgZGxscy9tc2kvbXNpLnNwZWMsIGRsbHMvbXNpL3NxbC55LCBkbGxzL21zaS90b2tlbml6ZS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJU3RhcnQgaW1wbGVtZW50YXRpb24gb2YgTXNpRXZhbHVhdGVDb25kaXRpb25BL1cuCgoJKiBNYWtlLnJ1bGVzLmluLCBSRUFETUUsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLAoJICBkb2N1bWVudGF0aW9uL1JFQURNRS5kZSwgZG9jdW1lbnRhdGlvbi9SRUFETUUuZnIsCgkgIGRvY3VtZW50YXRpb24vUkVBRE1FLml0LCBkb2N1bWVudGF0aW9uL1JFQURNRS5wdCwKCSAgZG9jdW1lbnRhdGlvbi9SRUFETUUucHRfYnI6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglSZXF1aXJlIGJpc29uIHRvIGNvbXBpbGUgV2luZS4KCgkqIGRsbHMvbnRkbGwvbG9hZGVyLmMsIGRsbHMvbnRkbGwvbnRkbGxfbWlzYy5oLCBkbGxzL250ZGxsL3JlbGF5LmM6CglNaWtlIEhlYXJuIDxtaEBjb2Rld2VhdmVycy5jb20+CgktIEFkZCBkZWJ1ZyBTbm9vcEZyb21JbmNsdWRlL1Nub29wRnJvbUV4Y2x1ZGUgb3B0aW9ucy4KCS0gQ29ycmVjdCBUUkFDRSBkZWJ1ZyBjaGFubmVsIHVzYWdlIGluIFNOT09QX1NldHVwRExMLgoJLSBSZWZhY3RvciBjaGVja19yZWxheV9mcm9tX3JlbGF5LgoKCSogZGxscy93aW5tbS9tY2lhdmkvd25kLmM6IENocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUFkZGVkIHN1cHBvcnQgZm9yIE1DSV9ER1ZfV0hFUkVfTUFYIGZsYWcgaW4gTUNJQVZJX21jaVdoZXJlLgoJRml4ZWQgV0hFUkVfV0lORE9XLgoKCSogcHJvZ3JhbXMvd2luZWNmZy9tYWluLmM6IE5lZWQgdG8gaW5jbHVkZSBjb25maWcuaC4KCgkqIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sIGRsbHMvbnRkbGwvZGlyZWN0b3J5LmMsIGRsbHMvbnRkbGwvZmlsZS5jLAoJICBkbGxzL250ZGxsL250ZGxsX21pc2MuaCwgaW5jbHVkZS93aW50ZXJubC5oOgoJSW1wbGVtZW50ZWQgTnRRdWVyeURpcmVjdG9yeUZpbGUgKHBhcnRseSBiYXNlZCBvbiBhIHBhdGNoIGJ5IEVyaWMKCVBvdWVjaCkuCgoJKiBkb2N1bWVudGF0aW9uL2ZhcS5zZ21sOiBJdmFuIExlbyBNdXJyYXktU21pdGggPHB1b3RpQGlud2luZC5pdD4KCUEgZmV3IHVwZGF0ZXMuCgoJKiBkbGxzL2tlcm5lbC9pbnN0ci5jLCBkbGxzL2tlcm5lbC93b3d0aHVuay5jLCB0b29scy93aW5lYnVpbGQvcmVsYXkuYzoKCUp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCURQTUkgcHJvZ3JhbXMgbm93IGhhbmRsZSBwZW5kaW5nIGV2ZW50cy4KCgkqIGRsbHMvd2lubW0vbWNpYXZpL21tb3V0cHV0LmM6CglDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglIYW5kbGUgYXZpIGZpbGVzIHdpdGggbm9uIHN0YW5kYXJkIHZpZGVvIHN0cmVhbSBuYW1lcy4KCgkqIGRsbHMvd2lubW0vbWNpLmM6IENocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCU1DSSBzdHJpbmdzIGFyZSBjYXNlIGluc2Vuc2l0aXZlLgoJRml4ZWQgYSByZXR1cm5lZCBlcnJvciB2YWx1ZS4KCgkqIGRsbHMvd2lubW0vbW1pby5jOiBDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglEZWZhdWx0IHRvIEZPVVJDQ19ET1MgaWYgbm8gSU9Qcm9jIGZvdW5kLgoKCSogZGxscy93aW5tbS9tY2lhdmkvbWNpYXZpLmM6IENocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUZpeGVkIGRlYWRsb2NrIHdoZW4gc3RvcHBpbmcgcGxheWJhY2suCgoJKiBkbGxzL2RkcmF3L2RkcmF3X3ByaXZhdGUuaDogQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJRERfU1RSVUNUX0NPUFlfQllTSVpFOiBEbyBub3QgY2xlYXIgbW9yZSB0aGF0IHN0cnVjdCBzaXplLgoKCSogZGxscy9zaGx3YXBpL3Rlc3RzL3BhdGguYywgZGxscy9zaGx3YXBpL3VybC5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJVXJsQ2Fub25pY2FsaXplVzogUmVtb3ZlIFxyIGFuZCBcbiBhdCB0aGUgZW5kIG9mIGxwc3pVcmxDcHksIHdpdGggdGVzdAoJY2FzZXMuCgoJKiBkbGxzL3dpbmluZXQvaHR0cC5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJSFRUUF9IdHRwU2VuZFJlcXVlc3RBOiBSZW1vdmUgXHIgYW5kIFxuIGF0IHRoZSBlbmQgb2YKCWxwd2hyLT5scHN6UGF0aC4KCjIwMDQtMDMtMTUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9jYXJkcy8uY3ZzaWdub3JlLAoJICBkbGxzL2NhcmRzL01ha2VmaWxlLmluLCBkbGxzL2NhcmRzL2NhcmRzLmMsIGRsbHMvY2FyZHMvY2FyZHMuaCwKCSAgZGxscy9jYXJkcy9jYXJkcy5yYywgZGxscy9jYXJkcy9jYXJkcy5zcGVjLCBkbGxzL2NhcmRzL3ZlcnNpb24ucmM6CglTYW1pIE5vcGFuZW4gPHhhc214QG9wdG9ubGluZS5uZXQ+CglJbml0aWFsIGltcGxlbWVudGF0aW9uIG9mIGNhcmRzLmRsbC4KCgkqIGRsbHMvY29tY3RsMzIvdXBkb3duLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglXaGVuIHNldHRpbmcgdGhlIGJ1ZGR5IHRvIDAgdGhlbiB3ZSBtdXN0IHN0aWxsIHJlc2l6ZSB0aGUgdXBkb3duCgljb250cm9sLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6IFJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CgktIERvY3VtZW50IGNvbXBsZXRlbmVzcy4KCS0gRmluaXNoIHRvb2x0aXAgc3VwcG9ydC4KCgkqIHByb2dyYW1zL3JlZ2VkaXQvY2hpbGR3bmQuYywgcHJvZ3JhbXMvcmVnZWRpdC9lZGl0LmMsCgkgIHByb2dyYW1zL3JlZ2VkaXQvZnJhbWV3bmQuYywgcHJvZ3JhbXMvcmVnZWRpdC9saXN0dmlldy5jLAoJICBwcm9ncmFtcy9yZWdlZGl0L21haW4uaCwgcHJvZ3JhbXMvcmVnZWRpdC90cmVldmlldy5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVByb3Blcmx5IGltcGxlbWVudCBhbGwga2V5IG9wZXJhdGlvbnM6IG5ldywgZGVsZXRlLCByZW5hbWUuCglGaXggcmVuYW1lIGNvbW1hbmQgdG8gaGFuZGxlIGJvdGgga2V5cyBhbmQgdmFsdWVzLgoKCSogZG9jdW1lbnRhdGlvbi9jb25maWd1cmluZy5zZ21sOiBCb2F6IEhhcnJvc2ggPGJvYXpAaGlzaG9tZS5uZXQ+CglUaXBzIGZvciB1c2luZyBuYXRpdmUgTVMgU1FMIE9EQkMgZHJpdmVycy4KCgkqIGluY2x1ZGUvbXNpLmg6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCURlY2xhcmUgTXNpR2V0UHJvZHVjdFByb3BlcnR5QS9XLgoKCSogZGxscy9jb21jdGwzMi91cGRvd24uYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIENTX0hSRURSQVcuCgoJKiBwcm9ncmFtcy93aW5lY2ZnL21haW4uYzogQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQGFsdW0ud3BpLmVkdT4KCU1lc3NhZ2UgYm94IHRvIHN1Z2dlc3QgdGhlIHVzZXIgbm90IHJ1biB3aW5lIGFzIHJvb3QuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2x0aXBzLmM6CglSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJLSBVbmljb2RlIG5vdGlmaWNhdGlvbiBkZXRlY3Rpb24gc2hvdWxkIGJlIGxvY2FsIHRvIGVhY2ggdG9vbC4KCS0gSW1wbGVtZW50IFRUTl9HRVRESVNQSU5GT1cgbm90aWZpY2F0aW9uLgoKCSogZGxscy9rZXJuZWwvaW5zdHIuYzogSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJRW11bGF0aW5nIFNUSSBpbnN0cnVjdGlvbiBub3cgcmFpc2VzIGFuIGV4Y2VwdGlvbiBpZiB0aGVyZSBhcmUgcGVuZGluZwoJZXZlbnRzLgoKCSogdG9vbHMvd2luZWJ1aWxkL2J1aWxkLmgsIHRvb2xzL3dpbmVidWlsZC9wYXJzZXIuYywKCSAgdG9vbHMvd2luZWJ1aWxkL3NwZWMxNi5jLCB0b29scy93aW5lYnVpbGQvd2luZWJ1aWxkLm1hbi5pbjoKCUp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCVJlbW92ZSBzdXBwb3J0IGZvciBnZW5lcmF0aW5nIGludGVycnVwdCBoYW5kbGVycy4KCgkqIHByb2dyYW1zL3dpbmVtaW5lL0l0LnJjOiBPbGVnIFByb2tob3JvdiA8eG9sZWdwcm9AcmJjbWFpbC5ydT4KCUZpeCBzbWFsbCB0eXBvLgoKCSogcHJvZ3JhbXMvcmVnZWRpdC9tYWluLmMsIHByb2dyYW1zL3JlZ2VkaXQvcnNyYy5yYzoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglBZGQgYWxsIG5lZWRlZCBhY2NlbGVyYXRvcnMgdG8gcmVnZWRpdC4gQ2xlYW51cHMuCgoJKiBkbGxzL3NldHVwYXBpL3NldHVwYXBpLnNwZWMsIGRsbHMvc2V0dXBhcGkvc3R1YnMuYywgaW5jbHVkZS9zZXR1cGFwaS5oOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgU2V0dXBDcmVhdGVEaXNrU3BhY2VMaXN0IHN0dWIuCgoJKiBkbGxzL250ZGxsL3ZpcnR1YWwuYzogTWlrZSBIZWFybiA8bWlrZUBuYXZpLmN4PgoJSW1wcm92ZSBtZXNzYWdlIGdpdmVuIG9uIGltYWdlIG1hcCBmYWlsdXJlLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6IFJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CgktIEhvbm91ciBXTV9TRVRSRURSQVcuCgktIEZpeCBhbGwgY2FsbHMgb2YgSW52YWxpZGF0ZVJlY3QuCgoJKiB0b29scy93aW5lZ2NjL3V0aWxzLmM6IFBpZXJyZSBkJ0hlcmJlbW9udCA8c3RlZ2VmaW5AZnJlZS5mcj4KCVN1cHBvcnQgRGFyd2luICIuZHlsaWIiLgoKCSogcHJvZ3JhbXMvcmVnZWRpdC9JdC5yYzogSXZhbiBMZW8gTXVycmF5LVNtaXRoIDxwdW90aUBpbndpbmQuaXQ+CglBZGRlZCAiY2FuJ3QgcXVlcnkga2V5IiB0cmFuc2xhdGlvbi4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYjIuYzogQWxhc3RhaXIgQnJpZGdld2F0ZXIgPG55ZWZAc29mdGhvbWUubmV0PgoJSW1wbGVtZW50YXRpb24gb2YgSUNyZWF0ZVR5cGVJbmZvMl9TZXRIZWxwQ29udGV4dCwKCUlDcmVhdGVUeXBlSW5mbzJfU2V0VHlwZURlc2NBbGlhcywgSVR5cGVMaWIyX0dldFR5cGVJbmZvQ291bnQsCglJVHlwZUxpYjJfR2V0VHlwZUluZm9UeXBlLCBhbmQgSVR5cGVMaWIyX0lzTmFtZS4KCUZpeCB0byBJQ3JlYXRlVHlwZUluZm8yX1NldFZhck5hbWUgdG8gZml4IGEgY2FzZSB3aGVyZSBtdWx0aXBsZQoJaW5zdGFuY2VzIG9mIHRoZSBzYW1lIG5hbWUgYXJlIHVzZWQgaW4gdGhlIHNhbWUgdHlwZWxpYi4KCjIwMDQtMDMtMTMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIyLmM6IEFsYXN0YWlyIEJyaWRnZXdhdGVyIDxueWVmQHNvZnRob21lLm5ldD4KCUltcGxlbWVudGVkIElUeXBlTGliMl9HZXRUeXBlSW5mbygpIGFuZAoJSVR5cGVMaWIyX0dldFR5cGVJbmZvT2ZHdWlkKCkuCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIyLmM6IEFsYXN0YWlyIEJyaWRnZXdhdGVyIDxueWVmQHNvZnRob21lLm5ldD4KCUltcHJvdmUgaG93IHRoZSBHVUlEIGhhc2ggc3lzdGVtIHdvcmtzLiBNYWlubHkgYSBjbGVhbnVwIHNvIHRoYXQgdGhlCgloYXNoIGxvb2t1cHMgY2FuIGJlIGRvbmUgZnJvbSBvdGhlciBmdW5jdGlvbnMuCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIuaCwgZGxscy9vbGVhdXQzMi90eXBlbGliMi5jOgoJQWxhc3RhaXIgQnJpZGdld2F0ZXIgPG55ZWZAc29mdGhvbWUubmV0PgoJUmVuYW1lIHNvbWUgb2YgdGhlIGZpZWxkcyBpbiB0eXBlbGliLmggdG8gbWFrZXMgbW9yZSBldm9jYXRpdmUgdGhhbgoJJ3VuazAwJy4KCgkqIGRsbHMvY29tY3RsMzIvcmViYXIuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJTWFrZSBzdXJlIHRvIHRha2UgYWNjb3VudCBvZiBoaWRkZW4gYmFuZHMgZHVyaW5nIGxheW91dC4KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmM6IEp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCVByZXZlbnQgbmVnYXRpdmUgY29vcmRzIGZvciBsaW5lLCB0dXJuIG9mZiByZWRyYXcgd2hlbiBpbml0aWFsaXppbmcsCglkb2N1bWVudCBvbmUgZGlmZmVyZW5jZSBpbiBuYXRpdmUvYnVpbHRpbiBiZWhhdmlvci4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOiBSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJLSBJbXBsZW1lbnQgVEJfTE9BRElNQUdFUywgVEJfTUFQQUNDRUxFUkFUT1J7QSxXfSwgVEJfTUFSS0JVVFRPTiBhbmQKCSAgdW5kb2N1bWVudGVkIG1lc3NhZ2UgMHg0NjAuCgktIEJldHRlciBkZWJ1ZyBvdXRwdXQgb2YgdW5kb2N1bWVudGVkIG1lc3NhZ2UgMHg0NUQuCgoyMDA0LTAzLTEyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9tc2FjbS9wY21jb252ZXJ0ZXIuYywgZGxscy9tc2FjbS9zdHJlYW0uYzoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglGaXhlZCBidWcgd2hlbiBQQ01XQVZFRk9STUFUIGlzIHBhc3NlZCBpbnRvIGFjbVN0cmVhbU9wZW4uCglGaXhlZCBidWcgd2hlcmUgaW50ZXJwb2xhdGlvbiBpcyBkb25lIHdpdGggZGF0YSBwYXN0IGVuZCBvZiBidWZmZXIuIEEKCXByb3BlciBmaXggd291bGQgYmUgdG8gcHJvamVjdCB0aGUgbGFzdCBzYW1wbGUgYmFzZWQgb24gdGhlIHByZXZpb3VzCgl0d28gYnV0IHRoYXQgcmVxdWlyZXMgc2lnbmlmaWNhbnQgY2hhbmdlcy4KCUFkZGVkIFRSQUNFIGFuZCBXQVJOIHdoZXJlIG5lZWRlZC4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOiBSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJLSBBZGQgc3VwcG9ydCBmb3IgYSB0b29sYmFyIGdsb2JhbCBpTGlzdEdhcC4KCS0gTWFrZSBUT09MQkFSX0NhbGNUb29sYmFyIGFuZCBUT09MQkFSX0RyYXdCdXR0b24gbm90IHJlbHkgb24gIm1hZ2ljCgkgIG51bWJlcnMiIGFuZCBjYWxjdWxhdGUgc2l6ZXMgYW5kIHBvc2l0aW9ucyBtb3JlIGxpa2UgbmF0aXZlLgoKCSogZGxscy9jb21jdGwzMi9yZWJhci5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglEb24ndCBjYWxjdWxhdGUgdGhlIHJlZHVuZGFudCBhbmQgdW51c2VkIFJFQkFSX1JPVyBzdHJ1Y3R1cmVzLgoKCSogZGxscy9NYWtlZmlsZS5pbiwgZGxscy9tYWtlX2RsbHM6CglGaXhlZCBpbXBsaWIgdGFyZ2V0IGJyb2tlbiBieSBwcmV2aW91cyBjaGFuZ2UuCgoJKiBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL21zdmNydC9mbG9hdC5oLCBpbmNsdWRlL21zdmNydC9tYXRoLmg6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCVRoZSBiZWdpbm5pbmdzIG9mIG1hdGguaCBhbmQgZmxvYXQuaC4KCgkqIGRsbHMvZGRyYXcvZHN1cmZhY2UvZGliLmMsIGRsbHMvZ2RpL2dkaV9wcml2YXRlLmgsIGRsbHMveDExZHJ2L2RpYi5jLAoJICBkbGxzL3gxMWRydi94MTFkcnYuaCwgaW5jbHVkZS93aW5lL3dpbmdkaTE2LmgsIGluY2x1ZGUvd2luZ2RpLmgsCgkgIG9iamVjdHMvZGliLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQ3JlYXRlRElCU2VjdGlvbiB0YWtlcyBhIGNvbnN0IHBvaW50ZXIgdG8gQklUTUFQSU5GTy4KCgkqIHByb2dyYW1zL3JlZ2VkaXQvRW4ucmMsIHByb2dyYW1zL3JlZ2VkaXQvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL3JlZ2VkaXQvZWRpdC5jLCBwcm9ncmFtcy9yZWdlZGl0L2ZyYW1ld25kLmMsCgkgIHByb2dyYW1zL3JlZ2VkaXQvbWFpbi5oLCBwcm9ncmFtcy9yZWdlZGl0L3Jlc291cmNlLmg6CglaaW1sZXIgQXR0aWxhIDxoaWphc3p1QGhsZnNsaW51eC5odT4KCUFkZCBkZWxldGUga2V5IHN1cHBvcnQuCgoJKiBwcm9ncmFtcy93aW5lY2ZnL0VuLnJjLCBwcm9ncmFtcy93aW5lY2ZnL0VzLnJjLAoJICBwcm9ncmFtcy93aW5lY2ZnL1B0LnJjLCBwcm9ncmFtcy93aW5lY2ZnL1J1LnJjLAoJICBwcm9ncmFtcy93aW5lY2ZnL2RyaXZlLmMsIHByb2dyYW1zL3dpbmVjZmcvcmVzb3VyY2UuaDoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglSZW1vdmUgdGhlIEZpbGVTeXN0ZW0gb3B0aW9uIGZyb20gdGhlIGRyaXZlIGNvbmZpZ3VyYXRpb24uCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUVuYWJsZSBleGFjdCBwb3NpdGlvbiBjYWxjdWxhdGlvbiB3aGVuIGhhcmR3YXJlIHN1cHBvcnRzIGl0LgoKCSogaW5jbHVkZS9tbXJlZy5oOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQWRkZWQgV0FWRUZPUk1BVEVYVEVOU0lCTEUuCgoJKiBkbGxzL2NvbWN0bDMyL3JlYmFyLmM6IFVscmljaCBDemVrYWxsYSA8dWxyaWNoQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCByZWJhciBiYW5kIGluc2VydGlvbiBhbmQgbm9uLWNsaWVudCBjYWxjdWxhdGlvbiBpbiBwYWdlciBjb250cm9sLgoKCSogZGxscy9rZXJuZWwvZXhjZXB0LmMsIHRvb2xzL3dpbmUuaW5mOgoJV2Ugbm8gbG9uZ2VyIG5lZWQgdG8gcGFzcyAtLWRlYnVnbXNnIC1hbGwgdG8gd2luZWRiZy4KCgkqIGZpbGVzL2ZpbGUuYzogU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtTGluZS5jb20+CglGaXhlZCB0eXBvIGluIERPUyBkZXZpY2UgY2hlY2sgaW4gQ3JlYXRlRmlsZVcuCgoJKiBkbGxzL250ZGxsL2NyaXRzZWN0aW9uLmMsIGRsbHMvbnRkbGwvZW52LmMsIGRsbHMvbnRkbGwvZmlsZS5jLAoJICBkbGxzL250ZGxsL2xvYWRlci5jLCBkbGxzL250ZGxsL250ZGxsX21pc2MuaCwgZGxscy9udGRsbC9wYXRoLmMsCgkgIGRsbHMvbnRkbGwvcmVnLmMsIGRsbHMvbnRkbGwvcmVsYXkuYywgZGxscy9udGRsbC9ydGxzdHIuYywKCSAgZGxscy9udGRsbC9zZWMuYzoKCUdldCByaWQgb2YgbnRkbGxfZ2V0X3Byb2Nlc3NfaGVhcCBhbmQgbnRkbGxfZ2V0X3Byb2Nlc3NfcG10cyBieSB1c2luZwoJc3RhbmRhcmQgQVBJcyBpbnN0ZWFkLgoKCSogZGxscy93aW5lZG9zL2ludDIxLmMsIGZpbGVzL2ZpbGUuYywgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLAoJICBpbmNsdWRlL3dpbnRlcm5sLmgsIHNlcnZlci9maWxlLmMsIHNlcnZlci9wcm90b2NvbC5kZWYsCgkgIHNlcnZlci90cmFjZS5jOgoJQ2hhbmdlZCB0aGUgY3JlYXRlX2ZpbGUgc2VydmVyIHJlcXVlc3QgdG8gdGFrZSBOdENyZWF0ZUZpbGUgZmxhZ3MKCWluc3RlYWQgb2YgQ3JlYXRlRmlsZVcgb25lcyAoYmFzZWQgb24gYSBwYXRjaCBieSBFcmljIFBvdWVjaCkuCgoJKiBkbGxzL2RtaW1lL3NlZ21lbnQuYywgZGxscy9kbWxvYWRlci9jb250YWluZXIuYywKCSAgZGxscy9kbWxvYWRlci9sb2FkZXIuYywgZGxscy9kbXNjcmlwdC9zY3JpcHQuYzoKCVJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJLSBzY3JpcHRzIHN1Yi1jb250YWluZXJzIGxvYWRpbmcKCS0gYmV0dGVyIHNlZ21lbnRzIExvYWQgYW5kIFBhcnNlRGVzY3JpcHRvciBiZWhhdmlvcnMKCgkqIGRsbHMvY29tbWRsZy9maWxldGl0bGUuYywgaW5jbHVkZS9jb21tZGxnLmg6CglHZSB2YW4gR2VsZG9ycCA8Z3ZnQHJlYWN0b3MuY29tPgoJQ2hhbmdlIEdldEZpbGVUaXRsZUEvVyBwcm90b3R5cGUgdG8gbWF0Y2ggUFNESy4KCjIwMDQtMDMtMTEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC9wcm9jZXNzLmMsIGRvY3VtZW50YXRpb24vd2luZS5tYW4uaW4sIG1pc2Mvb3B0aW9ucy5jOgoJR2V0IHJpZCBvZiB0aGUgV0lORU9QVElPTlMgdmFyaWFibGUgYW5kIGluc3RlYWQgdXNlIFdJTkVERUJVRyB0bwoJaW5oZXJpdCBkZWJ1ZyBvcHRpb25zLgoJU3RhcnQgZGVwcmVjYXRpbmcgdGhlIC0tZGVidWdtc2cgb3B0aW9uLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6IEdlIHZhbiBHZWxkb3JwIDxndmdAcmVhY3Rvcy5jb20+CglFeHBsaWNpdGx5IGFzayBmb3IgaW1hZ2UgbGlzdCB3aXRoIHNjcmVlbiBkZXB0aCBhcyBJTENfQ09MT1IgY2FuL3dpbGwKCWxpbWl0IHRoZSBkZXB0aCB0byA0YnBwIG5vdy4KCgkqIGRsbHMva2VybmVsL2NvbnNvbGUuYywgZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywKCSAgZGxscy9rZXJuZWwva2VybmVsX3ByaXZhdGUuaCwgZmlsZXMvZmlsZS5jOgoJVGhlIE9wZW5Db25zb2xlVyBpbmhlcml0IGFyZ3VtZW50IGlzIGEgYm9vbGVhbiBub3QgYQoJU0VDVVJJVFlfQVRUUklCVVRFUyBwb2ludGVyLgoKCSogdG9vbHMvd2luZWdjYy93aW5lZ2NjLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglCdWlsZCBhbGwgZmlsZSBjb25zaXN0ZW50bHksIHdpdGhvdXQgc2hvcnRjdXRzLgoJRG8gbm90IHBhc3Mgd2luZWJ1aWxkIGVzY2FwZWQgb3B0aW9ucyB0byB0aGUgY29tcGlsZXIuCgoJKiBwcm9ncmFtcy93aW5oZWxwL01ha2VmaWxlLmluOiBNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmRlPgoJQWRkIHRoZSBMREZMQUdTIHdoZW4gbGlua2luZyBobHAyc2dtbC4KCgkqIGRsbHMvbnRkbGwvd2NzdHJpbmcuYzogSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+Cglfd3Rve2wsaSxpNjR9IHBhcmFtZXRlcnMgYXJlIGNvbnN0LgoKCSogZGxscy9jb21jdGwzMi9jb21tY3RybC5jOgoJUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCUZpeCBzdWJjbGFzc2luZyB0byBzdXBwb3J0IG5lc3RlZCBtZXNzYWdlcy4KCgkqIHByb2dyYW1zL3dpbmVicm93c2VyL21haW4uYzoKCVdlIHNob3VsZCBubyBsb25nZXIgbmVlZCB0byB1bnNldCBUTVAgYW5kIFRFTVAuCgoJKiBkbGxzL3VzZXIvdGVzdHMvd2luLmMsIGRsbHMveDExZHJ2L3dpbnBvcy5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVdpbmRvd3MgdHJ1bmNhdGVzIHdpbmRvd3MgY29vcmRpbmF0ZXMgYXQgMTYgYml0cyB3aGVuIG1vdmluZyBvcgoJcmVzaXppbmcgYSB3aW5kb3cuCgoJKiBkb2N1bWVudGF0aW9uL1JFQURNRS5kZTogQ2hyaXN0aWFuIEJyaXR6IDxjYnJpdHpAZ214Lm5ldD4KCUNvcnJlY3Rpb24gb2Ygc21hbGwgc3BlbGxpbmcgbWlzdGFrZXMuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzogUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCVJld3JpdGUgZHJhd2luZyBjb2RlLgoKCSogaW5jbHVkZS9jb21tY3RybC5oOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQWRkZWQgc29tZSBtaXNzaW5nIGRlZmluZXMuCgoJKiBkbGxzL2tlcm5lbC9wcm9jZXNzLmMsIGZpbGVzL2RpcmVjdG9yeS5jOgoJRG8gbm90IHB1dCB0aGUgVEVNUCBhbmQgVE1QIHZhcmlhYmxlcyBpbnRvIHRoZSBVbml4IGVudmlyb25tZW50LCB1c2UKCVdJTkVURU1QIGFuZCBXSU5FVE1QIGluc3RlYWQsIGxpa2Ugd2UgYWxyZWFkeSBkbyBmb3IgUEFUSC4KCgkqIGRsbHMva2VybmVsL2V4Y2VwdC5jOgoJUmVtb3ZlIHRoZSBXSU5FREVCVUcgdmFyaWFibGUgZnJvbSB0aGUgZW52aXJvbm1lbnQgb2YgdGhlIGRlYnVnZ2VyCglwcm9jZXNzLgoKCSogZGxscy9udGRsbC90aW1lLmMsIGZpbGVzL3NtYi5jOiBQb3J0YWJpbGl0eSBmaXhlcy4KCgkqIGRvY3VtZW50YXRpb24vY29uZmlndXJpbmcuc2dtbDogQWRkZWQgYSBjb3VwbGUgb2YgbWlzc2luZyBjbG9zZSB0YWdzLgoKCSogZGxscy9tc3ZjcnQvdGltZS5jOiBIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCUltcGxlbWVudCBfZnRpbWUgd2l0aCBXaW4zMiBBUElzLgoKCSogY29udHJvbHMvbWVudS5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJV2UgbmVlZCB0byBzZXQgdGhlIG5ldyB0ZXh0IGV2ZW4gaWYgdGhlIG9sZCB0ZXh0IHN0cmluZyB3YXMgTlVMTC4KCgkqIGRsbHMvY29tY3RsMzIvYW5pbWF0ZS5jOgoJRG8gbm90IGtpbGwgdGhlIGFuaW1hdGlvbiB0aHJlYWQgd2l0aCBUZXJtaW5hdGVUaHJlYWQsIGxldCBpdCBmaW5pc2gKCXByb3Blcmx5LgoJRml4ZWQgYSBjb3VwbGUgb2YgcmFjZXMgd2l0aCB0aGUgYW5pbWF0aW9uIHRocmVhZC4KCgkqIGRsbHMvY29tY3RsMzIvY29tYm9leC5jLCBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmMsCgkgIGRsbHMvY29tY3RsMzIvaXBhZGRyZXNzLmMsIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYywKCSAgZGxscy9jb21jdGwzMi9wcm9ncmVzcy5jOgoJUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCVNwZWxsaW5nIGZpeGVzLgoKCSogZGxscy9jb21jdGwzMi9kcmFnbGlzdC5jOgoJUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCS0gRG9jdW1lbnQgY29udHJvbCBjb21wbGV0ZW5lc3MuCgktIFJlbW92ZSB1bm5lZWRlZCBpbmNsdWRlLgoJLSBGaXggVEVYVCBkZWZpbmUuCgktIEZpeCB0YWJzLgoJLSBTbWFsbCBvcHRpbWlzYXRpb24gaW4gRHJhd0luc2VydC4KCgkqIGRsbHMvbXN2Y3J0L3Rlc3RzL2hlYXAuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUhlYXAgdGVzdHMgY2xlYW51cC4KCgkqIGRsbHMvZ2RpL2VuaG1mZHJ2L2JpdGJsdC5jLCBkbGxzL2dkaS9lbmhtZmRydi9ncmFwaGljcy5jLAoJICBkbGxzL2dkaS9lbmhtZmRydi9tYXBwaW5nLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRWxpbWluYXRlIHNvbWUgdW5uZWNlc3NhcnkgZGlyZWN0IGFjY2Vzc2VzIHRvIERDIGludGVybmFscyBmcm9tIEVNRgoJZHJpdmVyLgoKMjAwNC0wMy0wOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIEFOTk9VTkNFLCBDaGFuZ2VMb2csIFZFUlNJT04sIGNvbmZpZ3VyZTogUmVsZWFzZSAyMDA0MDMwOS4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KMjAwNC0wMy0wOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL2ZpbGUxNi5jLCBkbGxzL2tlcm5lbC9wcm9maWxlLmMsIGZpbGVzL2RpcmVjdG9yeS5jLAoJICBmaWxlcy9kcml2ZS5jOgoJTW92ZWQgYSBudW1iZXIgb2YgMTYtYml0IGZ1bmN0aW9ucyB0byBmaWxlMTYuYy4KCgkqIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvbWFrZV9kbGxzOgoJRG8gbm90IGNyZWF0ZSBzeW1saW5rcyBmb3IgdGhlIFBFIGJ1aWxkIHNpbmNlIHRoZXkgY2FuIGNvbmZsaWN0IHdpdGgKCXRoZSBkaXJlY3RvcnkgbmFtZXMuCgoJKiBsaWJzL3BvcnQvc3RhdHZmcy5jOiBDaGVjayB0aGF0IHdlIGhhdmUgc3RhdGZzIGJlZm9yZSB1c2luZyBpdC4KCgkqIGluY2x1ZGUvd2luZS9wb3J0Lmg6CglBZGRlZCBkZWZpbml0aW9ucyBmb3IgU19JWFVTUiwgU19JWEdSUCBhbmQgU19JWE9USC4KCgkqIHRvb2xzL3dpbmVnY2MvdXRpbHMuYzogY2htb2QgaXMgbW9yZSBwb3J0YWJsZSB0aGFuIGZjaG1vZC4KCgkqIGZpbGVzL2Rvc19mcy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJTWFrZSBJU19FTkRfT0ZfTkFNRSBhbiBpbmxpbmUgZnVuY3Rpb24uCgoJKiBkbGxzL2tlcm5lbC9uZV9tb2R1bGUuYywgZGxscy9rZXJuZWwvbmVfc2VnbWVudC5jLAoJICBkbGxzL2tlcm5lbC9wcm9jZXNzLmMsIGRsbHMva2VybmVsL3N5bmMuYywgZGxscy9rZXJuZWwvdGFzay5jLAoJICBkbGxzL2tlcm5lbC90aW1lLmMsIGRsbHMvd2luZWRvcy9pbnQyMS5jLCBmaWxlcy9kaXJlY3RvcnkuYywKCSAgZmlsZXMvZG9zX2ZzLmMsIGZpbGVzL2RyaXZlLmMsIGZpbGVzL2ZpbGUuYywgZmlsZXMvc21iLmMsCgkgIGluY2x1ZGUvZHJpdmUuaCwgaW5jbHVkZS9maWxlLmg6CglSZW1vdmVkIHNvbWUgdW5uZWNlc3NhcnkgZGVmaW5pdGlvbnMgZnJvbSBmaWxlLmguCglHb3QgcmlkIG9mIGRyaXZlLmguCgoJKiBkbGxzL250ZGxsL3J0bHN0ci5jOgoJQVNDSUkgc3RyaW5nIGNvbXBhcmlzb25zIHNob3VsZCBub3QgZGVwZW5kIG9uIHRoZSBsb2NhbGUuCgoJKiBkbGxzL2NvbWN0bDMyLy5jdnNpZ25vcmUsIGRsbHMvY29tY3RsMzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvY29tY3RsMzIvY29tY3RsMzIuaCwgZGxscy9jb21jdGwzMi9kcmFnbGlzdC5jLAoJICBkbGxzL2NvbWN0bDMyL3JzcmMucmM6CglSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJLSBJbXBsZW1lbnQgdGhlIGRyYWcgbGlzdCBjb250cm9sLgoJLSBGaXggdGFicyBpbiBMQkl0ZW1Gcm9tUHQuCgoJKiB3aW5kb3dzL21kaS5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJV2UgbmVlZCB0byBhdCBsZWFzdCByZWZyZXNoIHRoZSB3aW5kb3cgbWVudSBpbiBDaGlsZEFjdGl2YXRlLCBzbyBmb3IKCW5vdyByZW1vdmUgdGhlICdpcyBhbHJlYWR5IGFjdGl2YXRlZCcgb3B0aW1pemF0aW9uLgoKCSogREVWRUxPUEVSUy1ISU5UUywgY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvZHhlcnI4Ly5jdnNpZ25vcmUsIGRsbHMvZHhlcnI4L01ha2VmaWxlLmluLAoJICBkbGxzL2R4ZXJyOC9keGVycjguYywgZGxscy9keGVycjgvZXJyb3JzLmF3aywgZGxscy9keGVycjgvZXJyb3JzLmRhdCwKCSAgZGxscy9keGVycjgvZXJyb3JzLmgsIGRsbHMvZHhlcnI4L21ha2VfZXJyb3JzLAoJICBkbGxzL2R4ZXJyOS8uY3ZzaWdub3JlLCBkbGxzL2R4ZXJyOS9NYWtlZmlsZS5pbiwKCSAgZGxscy9keGVycjkvZHhlcnI5LmMsIGRsbHMvZHhlcnI5L2Vycm9ycy5hd2ssIGRsbHMvZHhlcnI5L2Vycm9ycy5kYXQsCgkgIGRsbHMvZHhlcnI5L2Vycm9ycy5oLCBkbGxzL2R4ZXJyOS9tYWtlX2Vycm9yczoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglBZGRlZCBkeGVycjggYW5kIGR4ZXJyOSBsaWJyYXJpZXMuCgoJKiBkb2N1bWVudGF0aW9uL2NvbmZpZ3VyaW5nLnNnbWwsIGRvY3VtZW50YXRpb24vc2FtcGxlcy9jb25maWcsCgkgIGRvY3VtZW50YXRpb24vd2luZS5jb25mLm1hbiwgZmlsZXMvZGlyZWN0b3J5LmMsIGZpbGVzL2Rvc19mcy5jLAoJICBmaWxlcy9kcml2ZS5jLCBpbmNsdWRlL2RyaXZlLmgsIGluY2x1ZGUvZmlsZS5oOgoJR2V0IHJpZCBvZiB0aGUgRmlsZXN5c3RlbSBvcHRpb24gaW4gdGhlIGRyaXZlIGNvbmZpZywgdGhpcyB3YXMgbW9yZQoJY29uZnVzaW5nIHRoYW4gdXNlZnVsLgoKCSogaW5jbHVkZS93aW5lL3BvcnQuaDogQWRkZWQgc3RhdHZmcyBwcm90b3R5cGUuCgoJKiBkbGxzL2Rtc2NyaXB0L2Rtc2NyaXB0X3ByaXZhdGUuaCwgZGxscy9kbXNjcmlwdC9zY3JpcHQuYzoKCVJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJQmV0dGVyIGRtc2NyaXB0IGxvYWRpbmcgKG5vdyB3ZSBsb2FkIHRoZSBzY3JpcHQgdmVyc2lvbiwgc2NyaXB0CglsYW5ndWFnZSBpZGVudGlmaWVyIGFuZCB0aGUgc2NyaXB0IHNvdXJjZSkuCgoJKiBkbGxzL2dkaS90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL2dkaS90ZXN0cy9NYWtlZmlsZS5pbiwKCSAgZGxscy9nZGkvdGVzdHMvbWV0YWZpbGUuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBhbiBFTUYgdGVzdCBzdWl0ZS4KCgkqIHdpbmRvd3MvbWRpLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglXaW5kb3dzIGFsd2F5cyBhZGRzIGEgc2VwYXJhdG9yIHRvIHRoZSBib3R0b20gb2YgdGhlIG5ldyB3aW5kb3cKCW1lbnUuIFRoYW5rcyB0byBEbWl0cnkgVGltb3Noa292IGZvciBjb25maXJtaW5nIHRoaXMuCgoJKiBkbGxzL2dkaS9mcmVldHlwZS5jOiBSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJQ2hlY2sgZm9yIE5VTEwgcG9pbnRlcnMgcmV0dXJuZWQgYnkgSGVhcEFsbG9jLgoKCSogZGxscy9NYWtldGVzdC5ydWxlcy5pbiwgcHJvZ3JhbXMvTWFrZXByb2cucnVsZXMuaW4sCgkgIHByb2dyYW1zL2F2aXRvb2xzL01ha2VmaWxlLmluLCBwcm9ncmFtcy9jbG9jay9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvY21kbGd0c3QvTWFrZWZpbGUuaW4sIHByb2dyYW1zL2NvbnRyb2wvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL2V4cGFuZC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvbm90ZXBhZC9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvcHJvZ21hbi9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvcmVnZWRpdC9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvcmVnc3ZyMzIvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3JwY3NzL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy9ydW5kbGwzMi9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvc3RhcnQvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL3VuaW5zdGFsbGVyL01ha2VmaWxlLmluLCBwcm9ncmFtcy92aWV3L01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy93Y21kL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5lYm9vdC9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvd2luZWJyb3dzZXIvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmVjZmcvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5lZGJnL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy93aW5lZmlsZS9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luZW1lbnVidWlsZGVyL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy93aW5lbWluZS9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luZXBhdGgvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5ldmRtL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy93aW5oZWxwL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW52ZXIvTWFrZWZpbGUuaW46CglUYWtlIGFkdmFudGFnZSBvZiB0aGUgbmV3IHdpbmVnY2MgLUIgc3VwcG9ydC4KCgkqIHRvb2xzL3dpbmVnY2MvdXRpbHMuYywgdG9vbHMvd2luZWdjYy91dGlscy5oLCB0b29scy93aW5lZ2NjL3dpbmVnY2MuYzoKCUFsbG93IG11bHRpcGxlIC1CIG9wdGlvbnMuCglEbyBub3QgcGFzcyB0aGUgLUJ0b29scy93aW5lYnVpbGQgbWFnaWMgb3B0aW9uIHRvIHRoZSBjb21waWxlciB0bwoJYXZvaWQgd2FybmluZ3MuCglQYXNzIHRvIHRoZSBsaW5rZXIgZXZlbiB0aGUgbGlicmFyaWVzIHdlIGRpZG4ndCBmaW5kIGluIHRoZSBsaWIgc2VhcmNoCglwYXRoLCBpbiBjYXNlIHdlIGFyZSBub3QgdXNpbmcgdGhlIHN0YW5kYXJkIHBhdGhzLgoKCSogdG9vbHMvd2luZWdjYy93aW5lZ2NjLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglBZGQgYSB3aW5lIHNwZWNpZmljIG1vZGUuIElmIGlzIGFjdGl2YXRlZCBpZiB0aGUgLUIgcHJlZml4IGVuZHMgd2l0aAoJL3Rvb2xzL3dpbmVidWlsZC4gSWYgeW91IGhhcHBlbiB0byBoYXZlIHN1Y2ggYSBwcmVmaXgsIGJ1dCB5b3UgZG9uJ3QKCXdhbnQgdGhpcyBiZWhhdmlvdXIsIHNpbXBseSBhZGQgYSB0cmFpbGluZyAnLycuIEluIHRoaXMgc3BlY2lhbCBtb2RlLAoJbm8gZGVmYXVsdCBXaW4zMiBETExzIGFyZSBsaW5rZWQgaW4sIHdlIGRvbid0IGZvcmNlIHRoZSBzaG9ydCB3Y2hhcl90LAoJYW5kIHRoZSBzdGFuZGFyZCBkaXJzIGFyZSBub3Qgc2VhcmNoZWQuCgoJKiB0b29scy93aWRsL01ha2VmaWxlLmluLCB0b29scy93aWRsL3dpZGwubWFuOgoJSGFubnUgVmFsdG9uZW4gPEhhbm51LlZhbHRvbmVuQGh1dC5maT4KCUFkZGVkIGEgbWFuIHBhZ2UgZm9yIHdpZGwuCgoJKiB0b29scy93aW5lZ2NjL3V0aWxzLmMsIHRvb2xzL3dpbmVnY2Mvd2luZWdjYy5jOgoJRml4ZWQgYSBjb3VwbGUgb2YgY3Jhc2hlcy4KCgkqIHRvb2xzL2JpbjJyZXMuYzogUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCUFjY2VwdCAnLXYnIGZsYWcuCgoJKiBkbGxzL2dkaS9mcmVldHlwZS5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJQWRkIHJlZ2lzdHJ5IGVudHJpZXMgZm9yIGFueSBmb250cyBmb3VuZCBieSBmb250Y29uZmlnIG9yIHRoYXQgYXJlIGluCgl0aGUgRm9udERpcnMgZGlyZWN0b3JpZXMuCgoJKiB0b29scy93aW5lZ2NjL3V0aWxzLmMsIHRvb2xzL3dpbmVnY2MvdXRpbHMuaCwKCSAgdG9vbHMvd2luZWdjYy93aW5lZ2NjLmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQWRkIC1CIHByZWZpeCBzdXBwb3J0LiBTbWFsbCBjb25zaXN0ZW5jeSBjbGVhbnVwcy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2Ftc3RyZWFtLy5jdnNpZ25vcmUsCgkgIGRsbHMvYW1zdHJlYW0vTWFrZWZpbGUuaW4sIGRsbHMvYW1zdHJlYW0vYW1zdHJlYW0uYywKCSAgZGxscy9hbXN0cmVhbS9hbXN0cmVhbS5zcGVjLCBkbGxzL2Ftc3RyZWFtL2Ftc3RyZWFtX3ByaXZhdGUuaCwKCSAgZGxscy9hbXN0cmVhbS9tYWluLmMsIGRsbHMvYW1zdHJlYW0vcmVnc3ZyLmMsCgkgIGRsbHMvYW1zdHJlYW0vdmVyc2lvbi5yYywgZGxscy91dWlkL3V1aWQuYywgaW5jbHVkZS9NYWtlZmlsZS5pbiwKCSAgaW5jbHVkZS9hbXN0cmVhbS5oLCBpbmNsdWRlL2Ftc3RyZWFtLmlkbCwgaW5jbHVkZS9hdXN0cmVhbS5oLAoJICBpbmNsdWRlL2F1c3RyZWFtLmlkbCwgaW5jbHVkZS9kZHJhdy5oLCBpbmNsdWRlL2Rkc3RyZWFtLmgsCgkgIGluY2x1ZGUvZGRzdHJlYW0uaWRsLCBpbmNsdWRlL21tc3RyZWFtLmgsIGluY2x1ZGUvbW1zdHJlYW0uaWRsLAoJICB0b29scy93aW5lLmluZjoKCUNocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUFkZCBhbXN0cmVhbSBkbGwgKE11bHRpTWVkaWEgU3RyZWFtcyksIHBhcnQgb2YgRGlyZWN0IFNob3cuCgoJKiBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwvdm9sdW1lLmMsIGRsbHMvbnRkbGwvZmlsZS5jLAoJICBkb2N1bWVudGF0aW9uL3NhbXBsZXMvY29uZmlnLCBkb2N1bWVudGF0aW9uL3dpbmUuY29uZi5tYW4sCgkgIGZpbGVzL2RyaXZlLmMsIGluY2x1ZGUvZHJpdmUuaCwgaW5jbHVkZS93aW5udC5oOgoJUmVpbXBsZW1lbnRlZCBHZXRWb2x1bWVJbmZvcm1hdGlvbiBhbmQgU2V0Vm9sdW1lTGFiZWw7IHZvbHVtZSBsYWJlbAoJYW5kIHNlcmlhbCBudW1iZXIgYXJlIG5vdyBzdG9yZWQgaW4gdGhlIGZpbGVzeXN0ZW0gaW5zdGVhZCBvZiBpbiB0aGUKCWNvbmZpZyBmaWxlIChwYXJ0bHkgYmFzZWQgb24gYSBwYXRjaCBieSBFcmljIFBvdWVjaCkuCgoJKiB0b29scy93aW5lZ2NjL3dpbmVnY2MuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVN1cHBvcnQgcHJvY2Vzc29ycyBtYWRlIHVwIG9mIGRpZmZlcmVudCBjb21tYW5kcy4KCVJlbmFtZSBzb21lIHByb2Nlc3NvciBlbnVtcyBmb3IgY29uc2lzdGVuY3kuCgoJKiBkb2N1bWVudGF0aW9uL1JFQURNRS5kZTogQ2hyaXN0aWFuIEJyaXR6IDxjYnJpdHpAZ214Lm5ldD4KCUFkZGVkIEdlcm1hbiB0cmFuc2xhdGlvbiBvZiB0aGUgUkVBRE1FIGZpbGUuCgoJKiBkbGxzL3VzZXIvbWlzYy5jLCBkbGxzL3VzZXIvdXNlcjMyLnNwZWM6CglCb2JieSBCaW5naGFtIDxiaW5naGFtLjIxQG9zdS5lZHU+CglTdHViIEVudW1EZXNrdG9wc1cgZm9yIG5vdy4KCUltcGxlbWVudCBFbnVtRGVza3RvcHNBIGluIHRlcm1zIG9mIEVudW1EZXNrdG9wc1cuCgoJKiBkbGxzL2tlcm5lbC9sb2NhbGUuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCURvIG5vdCB0YWtlIGludG8gYWNjb3VudCBMQ19DVFlQRSBhbmQgTENfTUVTU0FHRVMgd2hpbGUgZGV0ZWN0aW5nIGEKCXVzZXIgbG9jYWxlLgoKMjAwNC0wMy0wNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMveDExZHJ2L2RpYi5jOiBKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJQ2FsY3VsYXRlIHRoZSBzaXplIG9mIEJJX0JJVEZJRUxEUyBkaWIgc2VjdGlvbnMgdmlhIHRoZSB3aWR0aCBhbmQKCWhlaWdodC4KCgkqIGRsbHMvd2luc3Bvb2wvaW5mby5jLCBkbGxzL3dpbnNwb29sL3Rlc3RzL2luZm8uYzoKCVN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJTW92ZWQgaW1wbGVtZW50YXRpb24gb2YgR2V0RGVmYXVsdFByaW50ZXIgZnJvbSBhc2NpaSB0byB1bmljb2RlLCBhZGRlZAoJdGVzdHMgZm9yIEdldERlZmF1bHRQcmludGVyQS4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBsaWJzL3BvcnQvc3RhdHZmcy5jOgoJQWRkZWQgY2hlY2sgZm9yIGZfbmFtZWxlbiBpbiBzdHJ1Y3Qgc3RhdGZzLgoKCSogZGxscy9kbWltZS9wZXJmb3JtYW5jZS5jOiBSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCUZpeCBvbmUgdWdseSBidWcgKGhvcnJpYmxlIGNhc3QpIGludG8gZG11c2ljIGNvZGUgdG8gZ2V0IFVucmVhbDIKCWNyYXNoaW5nIGxhdGVyICh3aGVuIHRyeWluZyB0byBsYXVuY2ggbG9hZGVkIHNvdW5kKSA6KQoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6IFJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CglEb24ndCBhbGxvY2F0ZSBzcGFjZSBmb3IgdGV4dCB3aGVuIG5NYXhUZXh0Um93cyA9IDAuCgoyMDA0LTAzLTA1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGZpbGVzL2RyaXZlLmMsIGluY2x1ZGUvY29uZmlnLmguaW4sCgkgIGluY2x1ZGUvd2luZS9wb3J0LmgsIGxpYnMvcG9ydC9NYWtlZmlsZS5pbiwgbGlicy9wb3J0L3N0YXRmcy5jLAoJICBsaWJzL3BvcnQvc3RhdHZmcy5jOgoJVXNlIHN0YXR2ZnMgaW5zdGVhZCBvZiBzdGF0ZnMsIGFuZCBwcm92aWRlIGEgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBpbgoJbGlid2luZV9wb3J0IGlmIG5lY2Vzc2FyeS4KCgkqIGRsbHMvbnRkbGwvY2Ryb20uYzoKCURvIG5vdCBzdG9yZSB0aGUgVW5peCBmaWxlIGRlc2NyaXB0b3IgaW4gdGhlIGNhY2hlIHN0cnVjdHVyZS4KCVByb3RlY3QgdGhlIGdsb2JhbCBjYWNoZSB3aXRoIGEgY3JpdGljYWwgc2VjdGlvbi4KCgkqIGRsbHMvdXNlci91c2VyMzIuc3BlYywgd2luZG93cy91c2VyLmM6CglSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJU3R1YiBmb3IgUmVnaXN0ZXJEZXZpY2VOb3RpZmljYXRpb25XLgoKCSogZGxscy93aW5tbS9tbWlvLmM6IEphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglIYW5kbGUgcGxheWluZyBvZiBmaWxlcyBjb250YWluaW5nIGEgJysnIGFzIHBhcnQgb2YgdGhlIGZpbGVuYW1lLgoKCSogZGxscy9xdWFydHovZmlsdGVyZ3JhcGguYzogQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJSW1wbGVtZW50ZWQgSU1lZGlhRXZlbnRTaW5rIGFuZCBJTWVkaWFFdmVudEV4IGludGVyZmFjZXMuCgoyMDA0LTAzLTA0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9udGRsbC9jZHJvbS5jLCBkbGxzL250ZGxsL2ZpbGUuYywgZGxscy9udGRsbC9udGRsbC5zcGVjLAoJICBkbGxzL250ZGxsL250ZGxsX21pc2MuaCwgZmlsZXMvZHJpdmUuYywgZmlsZXMvZmlsZS5jLCBpbmNsdWRlL2ZpbGUuaCwKCSAgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLCBzZXJ2ZXIvTWFrZWZpbGUuaW4sIHNlcnZlci9kZXZpY2UuYywKCSAgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3RyYWNlLmM6CglPcGVuIGEgcmVhbCBmaWxlIGhhbmRsZSBmb3IgZHJpdmUgZGV2aWNlcywgYW5kIGdldCByaWQgb2YgdGhlIHNlcnZlcgoJZGV2aWNlIGhhY2tzIChiYXNlZCBvbiBhIHBhdGNoIGJ5IEVyaWMgUG91ZWNoKS4KCgkqIGRsbHMvZGRyYXcvZHN1cmZhY2UvZGliLmMsIGRsbHMvZ2RpL2VuaG1mZHJ2L2JpdGJsdC5jLAoJICBkbGxzL2dkaS9lbmhtZmRydi9lbmhtZXRhZmlsZWRydi5oLCBkbGxzL2dkaS9lbmhtZmRydi9vYmplY3RzLmMsCgkgIGRsbHMvZ2RpL2dkaV9wcml2YXRlLmgsIGRsbHMvZ2RpL21mZHJ2L2JpdGJsdC5jLAoJICBkbGxzL2dkaS9tZmRydi9tZXRhZmlsZWRydi5oLCBkbGxzL2dkaS9tZmRydi9vYmplY3RzLmMsCgkgIGRsbHMvZ2RpL3BhaW50aW5nLmMsIGRsbHMvZ2RpL3dpbmcuYywgZGxscy90dHlkcnYvcGFsZXR0ZS5jLAoJICBkbGxzL3gxMWRydi9iaXRtYXAuYywgZGxscy94MTFkcnYvYnJ1c2guYywgZGxscy94MTFkcnYvZGliLmMsCgkgIGRsbHMveDExZHJ2L3BhbGV0dGUuYywgZGxscy94MTFkcnYveDExZGRyYXcuYywgaW5jbHVkZS9iaXRtYXAuaCwKCSAgaW5jbHVkZS9nZGkuaCwgaW5jbHVkZS9wYWxldHRlLmgsIG9iamVjdHMvYml0bWFwLmMsIG9iamVjdHMvYnJ1c2guYywKCSAgb2JqZWN0cy9kaWIuYywgb2JqZWN0cy9nZGlvYmouYywgb2JqZWN0cy9tZXRhZmlsZS5jLAoJICBvYmplY3RzL3BhbGV0dGUuYzoKCU1vdmVkIG1vcmUgR0RJIGRlZmluaXRpb25zIHRvIGdkaV9wcml2YXRlLmguCglHZXQgcmlkIG9mIGJpdG1hcC5oIGFuZCBwYWxldHRlLmguCgoJKiBkbGxzL3NoZWxsMzIvc2hsZXhlYy5jOiBNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJRW51bWVyYXRlIGFsbCAic2hlbGxcPHZlcmI+XGNvbW1hbmQiIGVudHJpZXMgaW4gdGhlIHJlZ2lzdHJ5IGluc3RlYWQKCW9mIHNlYXJjaGluZyBvbmx5IGZvciAic2hlbGxcb3Blblxjb21tYW5kIiBlbnRyaWVzLgoKCSogZGxscy9nZGkvZ2RpX3ByaXZhdGUuaCwgZGxscy90dHlkcnYvZGMuYywgZGxscy90dHlkcnYvdHR5ZHJ2LnNwZWMsCgkgIGRsbHMvd2luZXBzL2luaXQuYywgZGxscy93aW5lcHMvcHNkcnYuaCwgZGxscy93aW5lcHMvd2luZXBzLnNwZWMsCgkgIGRsbHMveDExZHJ2L2luaXQuYywgZGxscy94MTFkcnYveDExZHJ2LnNwZWMsIG9iamVjdHMvZGMuYzoKCUNoYW5nZWQgdGhlIENyZWF0ZURDIGRyaXZlciBlbnRyeSBwb2ludCB0byB1c2UgYW4gSERDIGluc3RlYWQgb2YgYSBEQwoJcG9pbnRlci4KCgkqIGRsbHMveDExZHJ2L2JpdG1hcC5jLCBkbGxzL3gxMWRydi9kaWIuYywgZGxscy94MTFkcnYvaW5pdC5jLAoJICBkbGxzL3gxMWRydi94MTFkcnYuaDoKCUdldCByaWQgb2YgdGhlIFgxMURSVl9EQ19GdW5jcyBoYWNrLgoJUmVtb3ZlZCBhIGNvdXBsZSBvZiB1bnVzZWQgYml0bWFwIGZ1bmN0aW9ucy4KCgkqIGRsbHMvcXVhcnR6L01ha2VmaWxlLmluLCBkbGxzL3F1YXJ0ei9lbnVtZmlsdGVycy5jLAoJICBkbGxzL3F1YXJ0ei9lbnVtcmVnZmlsdGVycy5jLCBkbGxzL3F1YXJ0ei9maWx0ZXJncmFwaC5jLAoJICBkbGxzL3F1YXJ0ei9maWx0ZXJtYXBwZXIuYywgZGxscy9xdWFydHovcXVhcnR6X3ByaXZhdGUuaDoKCUNocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUltcGxlbWVudGVkIElGaWx0ZXJHcmFwaEltcGxfRW51bUZpbHRlcnMgYW5kIElFbnVtRmlsdGVycyBpbnRlcmZhY2UuCglSZW5hbWVkIGNvbnN0cnVjdG9yIG9mIElFbnVtUmVnRmlsdGVycyBpbnRlcmZhY2UuCglTbWFsbCBmaXggaW4gSUZpbHRlck1hcHBlcl9FbnVtTWF0Y2hpbmdGaWx0ZXJzLgoKCSogZGxscy9pbW0zMi9pbW0uYywgZGxscy9pbW0zMi9pbW0zMi5zcGVjOiBKZXNzZSBBbGxlbiA8dWhfamFAZ214Lm5ldD4KCUFkZGVkIEltbUFzc29jaWF0ZUNvbnRleHRFeCBzdHViLgoKCSogdG9vbHMvd2luZWdjYy93aW5lZ2NjLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglQcmVzZXJ2ZSB0aGUgcmVsYXRpdmUgb3JkZXIgb2YgZmlsZXMgYW5kIGxpYnJhcmllcy4gV2UgZG8gc28gYnkKCW1haW50YWluaW5nIGEgdW5pcXVlIGxpc3Qgb2YgZmlsZXMgYW5kIGxpYiwgZWFjaCBtYXJrZWQgd2l0aCB0aGUKCWFwcHJvcHJpYXRlIG1ldGFkYXRhLgoKCSogZGxscy9nZGkvZW5obWZkcnYvZW5obWV0YWZpbGVkcnYuaCwgZGxscy9nZGkvZW5obWZkcnYvb2JqZWN0cy5jLAoJICBkbGxzL2dkaS9nZGlfcHJpdmF0ZS5oLCBkbGxzL2dkaS9tZmRydi9tZXRhZmlsZWRydi5oLAoJICBkbGxzL2dkaS9tZmRydi9vYmplY3RzLmMsIGRsbHMvdHR5ZHJ2L29iamVjdHMuYywKCSAgZGxscy90dHlkcnYvdHR5ZHJ2LnNwZWMsIGRsbHMvd2luZXBzL2ZvbnQuYywgZGxscy93aW5lcHMvd2luZXBzLnNwZWMsCgkgIGRsbHMveDExZHJ2L3RleHQuYywgZGxscy94MTFkcnYveDExZHJ2LmgsIGRsbHMveDExZHJ2L3gxMWRydi5zcGVjLAoJICBkbGxzL3gxMWRydi94Zm9udC5jLCBvYmplY3RzL2ZvbnQuYzoKCVBhc3MgdGhlIGdkaUZvbnQgb2JqZWN0IHRvIHRoZSBTZWxlY3RGb250IGRyaXZlciBlbnRyeSBwb2ludCBzbyB0aGF0Cgl3ZSBkb24ndCBuZWVkIHRvIGxvb2sgaW50byB0aGUgREMgc3RydWN0dXJlIGZvciBpdC4KCgkqIGRsbHMveDExZHJ2L3RleHQuYywgZGxscy94MTFkcnYveHJlbmRlci5jOgoJQXZvaWQgZGlyZWN0IGFjY2Vzc2VzIHRvIHRoZSB4Zm9ybVdvcmxkMlZwb3J0IERDIGZpZWxkLgoKCSogZGxscy9nZGkvZW5obWZkcnYvZW5obWV0YWZpbGVkcnYuaCwgZGxscy9nZGkvZW5obWZkcnYvZ3JhcGhpY3MuYywKCSAgZGxscy9nZGkvZ2RpX3ByaXZhdGUuaCwgZGxscy9nZGkvbWZkcnYvbWV0YWZpbGVkcnYuaCwKCSAgZGxscy9nZGkvbWZkcnYvdGV4dC5jLCBkbGxzL3R0eWRydi9ncmFwaGljcy5jLCBkbGxzL3R0eWRydi90dHlkcnYuaCwKCSAgZGxscy90dHlkcnYvdHR5ZHJ2LnNwZWMsIGRsbHMvd2luZXBzL3BzZHJ2LmgsIGRsbHMvd2luZXBzL3RleHQuYywKCSAgZGxscy93aW5lcHMvd2luZXBzLnNwZWMsIGRsbHMveDExZHJ2L3RleHQuYywgZGxscy94MTFkcnYveDExZHJ2LmgsCgkgIGRsbHMveDExZHJ2L3gxMWRydi5zcGVjLCBkbGxzL3gxMWRydi94cmVuZGVyLmMsIG9iamVjdHMvdGV4dC5jOgoJUGFzcyB0aGUgYnJlYWtFeHRyYSB2YWx1ZSBpbiB0aGUgRXh0VGV4dE91dCBkcml2ZXIgY2FsbCwgc2luY2UgdGhlcmUKCWlzIG5vIGZ1bmN0aW9uIHRvIHJldHJpZXZlIGl0IGZyb20gdGhlIEhEQy4KCgkqIGNvbnRyb2xzL2Rlc2t0b3AuYywgZGxscy91c2VyL2NvbnRyb2xzLmgsIHdpbmRvd3Mvc3lzcGFyYW1zLmM6CglKdXN0aW4gQ2hldnJpZXIgPGJ1cm5lcjFAaG90bWFpbC5jb20+CglNb3ZlIGltcGxlbWVudGF0aW9uIG9mIFN5c1BhcmFtZXRlcnNJbmZvIGZyb20gQXNjaWkgdG8gVW5pY29kZS4KCjIwMDQtMDMtMDMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL01ha2V0ZXN0LnJ1bGVzLmluLCBwcm9ncmFtcy9NYWtlcHJvZy5ydWxlcy5pbjoKCUF2b2lkIHNvbWUgcmVkdW5kYW50IGxpYnJhcmllcyBvbiB0aGUgd2luZWdjYyBjb21tYW5kIGxpbmUuCgoJKiB0b29scy93aW5lZ2NjL3dpbmVnY2MuYzoKCVB1dCB0aGUgLnNwZWMubyBmaWxlIGZpcnN0IGFuZCB0aGUgc28gbGlicmFyaWVzIGxhc3Qgb24gdGhlIGxpbmsKCWNvbW1hbmQgbGluZS4KCgkqIGRsbHMvbnRkbGwvZGVidWd0b29scy5jOgoJU21hcnRlciBhbGxvY2F0aW9uIGFsZ29yaXRobSBmb3IgdGhlIHN0cmluZyBidWZmZXIsIHRvIGFsbG93CglkaXNwbGF5aW5nIG1vcmUgY2hhcmFjdGVycyBmb3Igc3RyaW5ncyB3aXRob3V0IHRvbyBtYW55IGVzY2FwZXMuCgoJKiBkbGxzL3dpbmVwcy9idWlsdGluLmMsIGRsbHMveDExZHJ2L3RleHQuYywgaW5jbHVkZS9nZGkuaCwKCSAgb2JqZWN0cy9kYy5jLCBvYmplY3RzL2ZvbnQuYzoKCUNoYW5nZWQgdGhlIEdldFRleHRFeHRlbnRQb2ludCBncmFwaGljcyBkcml2ZXIgZW50cnkgcG9pbnQgdG8gcmV0dXJuCglkZXZpY2UgY29vcmRpbmF0ZXMuCglSZW1vdmVkIG5vdCB1c2VkIGJyZWFrQ291bnQgZmllbGQgaW4gdGhlIERDIHN0cnVjdHVyZS4KCgkqIE1ha2UucnVsZXMuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCB0b29scy93aW5lZ2NjL01ha2VmaWxlLmluOgoJUmVuYW1lZCB0aGUgc3ltYm9sIGZvciB0aGUgY3BwIGJpbmFyeSB0byBhdm9pZCBjb25mbGljdHMgd2l0aAoJY29uZmlndXJlIGludGVybmFscy4KCgkqIGRsbHMvc2hsd2FwaS90ZXN0cy9wYXRoLmMsIGRsbHMvc2hsd2FwaS91cmwuYzoKCUtldmluIEtvbHR6YXUgPGtldmluQHBsb3Aub3JnPgoJRml4IFVybENhbm9uaWNhbGl6ZSBhbmQgYWRkIHJlZ3Jlc3Npb24gdGVzdC4KCgkqIHRvb2xzL3dpbmVnY2MvdXRpbHMuYywgdG9vbHMvd2luZWdjYy91dGlscy5oLAoJICB0b29scy93aW5lZ2NjL3dpbmVnY2MuYzoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglEb24ndCB0aWUgdGhlIHNjcmlwdCBuYW1lIHRvIHRoZSAuZXhlLnNvIG5hbWUuCgoJKiBkbGxzL3ZuYnQudnhkL01ha2VmaWxlLmluOiBIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCUxpbmsgdG8gd3MyXzMyLgoKCSogZGxscy9nZGkvZ2RpMTYuYywgZGxscy9nZGkvZ2RpX3ByaXZhdGUuaCwgaW5jbHVkZS9nZGkuaCwKCSAgb2JqZWN0cy9kYy5jOgoJSW1wbGVtZW50ZWQgR2V0L1NldEJvdW5kc1JlY3QgYmFzZWQgb24gYSBwYXRjaCBieSBLZW4gQmVsbGVhdS4KCgkqIGRsbHMvc2hsd2FwaS91cmwuYzogS2V2aW4gS29sdHphdSA8a2V2aW5AcGxvcC5vcmc+CglQcmV2ZW50IGNyYXNoIHdpdGggaW52YWxpZCBhcmdzIGluIGEgZmV3IFVSTCBmdW5jdGlvbnMuCgoJKiBkbGxzL3NoZWxsMzIvc2hsZXhlYy5jOiBNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJRml4IGJ1ZmZlciBsZW5ndGggdXNhZ2UgZm9yIFJlZ1F1ZXJ5VmFsdWVXKCkgY2FsbHMgYXQgdmFyaW91cyBwbGFjZXMuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzogUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCS0gU3VwcG9ydCBjdXN0b20gY2hlY2sgYmFja2dyb3VuZC4KCS0gUmVkdWNlIG51bWJlciBvZiBwYXJhbWV0ZXJzIG5lZWRlZCBmb3IgRHJhd1N0cmluZyBmdW5jdGlvbi4KCgkqIGluY2x1ZGUvcnBjbmRyLmgsIGluY2x1ZGUvd2luZS9ycGNmYy5oOgoJUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCS0gQWRkIG1vcmUgUlBDIGZvcm1hdCBjaGFyYWN0ZXJzLgoJLSBBZGQgc29tZSBORFIgZnVuY3Rpb25zIGFuZCBzdHJ1Y3R1cmVzLgoKCSogdG9vbHMvd2luZW1ha2VyOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFkZCBDRVhUUkEgQU5EIENYWEVYVFJBIGZpZWxkcyBzbyB3ZSBjYW4gcGFzcyAtbW5vLWN5Z3dpbiB0byB3aW5lZ2NjCglidXQgbm90IHRvIHdyYyB3aGljaCBjaG9rZXMgb24gaXQuIEFkZCBSQ0VYVFJBIGZvciBzeW1ldHJ5IGFuZCBmb3IgdGhlCgl1c2VyLgoJUmVtb3ZlIFRfSU5JVCBhbmQgZ2V0X2RlZmF1bHRfaW5pdCgpLiBUaGVzZSBhcmUgb2Jzb2xldGUgKHVzZWQgdG8KCXNlbGVjdCB0aGUgZW50cnktcG9pbnQsIFdpbk1haW4gb3IgbWFpbikuCglJZiB0aGUgZGlyZWN0b3J5IGNvbnRhaW5zIGhlYWRlcnMsIHRoZW4gYWRkICcuJyB0byBJTkNMVURFX1BBVEguCglTcGVjaWZ5IC1tbm9jeWd3aW4gZHVyaW5nIHRoZSBsaW5rIHN0YWdlIGlmIHdlIGFyZSB0byBsaW5rIHdpdGggdGhlCgltc3ZjcnQuCglUcmFuc2Zvcm0gWFhYX0FQUE1PREUgaW50byBYWFhfTERGTEFHUyBmb3IgbW9yZSBmbGV4aWJpbGl0eS4KCUNvcnJlY3RseSBwYXNzICctbWNvbnNvbGUnIG9yICctbXdpbmRvd3MnIHRvIHRoZSBsaW5rIHN0YWdlLgoJUmVtb3ZlIFhYWF9CQVNFTU9EVUxFLCBYWFhfU1BFQ19TUkNTIGFuZCBTUEVDX1NSQ1MuIFRoZXkgYXJlCglvYnNvbGV0ZS4KCUFkZCBpbXBsaWNpdCBidWlsZCBydWxlcyBmb3IgLmMsIC5jcHAsIC5jeHggZmlsZXMgc28gdGhhdCBvdXIgc2V0dGluZ3MKCShlLmcuIElOQ0xVREVfUEFUSCkgYXJlIHVzZWQuCglGaXggdGhlIHJ1bGUgZm9yIGJ1aWxkaW5nIFJDIGZpbGVzIChpdCB3YXMgaW52YWxpZCBhbmQgcmVqZWN0ZWQgYnkKCW1ha2UpLiBDb252ZXJ0IGl0IHRvIGFuIGltcGxpY2l0IHJ1bGUgbGlrZSB0aGUgb3RoZXJzLgoJQWRkIHJ1bGVzIGZvciAnbWFrZSBjbGVhbicuCglBZGQgdGhlIG1pc3NpbmcgcnVsZXMgZm9yIHJlY3Vyc2l2ZSBjb21waWxhdGlvbi4KCVJlbW92ZSBvYnNvbGV0ZSBlbGVtZW50cyBmcm9tIHRoZSBsaW5rIGNvbW1hbmQgKExERExMRkxBR1MsCglBTExfTElCUkFSWV9QQVRILCBMSUJTKS4KCgkqIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvZXZjb2RlLmg6CglDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglBZGRlZCBldmNvZGUuaCBpbmNsdWRlLgoKCSogZGxscy9xdWFydHovZmlsdGVyZ3JhcGguYzogQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJSGFuZGxlIG51bGwgYW5kIGR1cGxpY2F0ZSBuYW1lIHdoZW4gYWRkaW5nIGEgZmlsdGVyIHRvIHRoZQoJZmlsdGVyZ3JhcGguCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBkbGxzL2tlcm5lbC90aW1lLmM6CglSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglJbXBsZW1lbnRlZCBHZXREYXlsaWdodEZsYWcuCgoyMDA0LTAzLTAyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9hZHZhcGkzMi90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL2NvbWN0bDMyL3Rlc3RzLy5jdnNpZ25vcmUsCgkgIGRsbHMvZGRyYXcvdGVzdHMvLmN2c2lnbm9yZSwgZGxscy9kc291bmQvdGVzdHMvLmN2c2lnbm9yZSwKCSAgZGxscy9nZGkvdGVzdHMvLmN2c2lnbm9yZSwgZGxscy9pcGhscGFwaS90ZXN0cy8uY3ZzaWdub3JlLAoJICBkbGxzL2tlcm5lbC90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL21zdmNydC90ZXN0cy8uY3ZzaWdub3JlLAoJICBkbGxzL25ldGFwaTMyL3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMvbnRkbGwvdGVzdHMvLmN2c2lnbm9yZSwKCSAgZGxscy9vbGVhdXQzMi90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL3JwY3J0NC90ZXN0cy8uY3ZzaWdub3JlLAoJICBkbGxzL3NoZWxsMzIvdGVzdHMvLmN2c2lnbm9yZSwgZGxscy9zaGx3YXBpL3Rlc3RzLy5jdnNpZ25vcmUsCgkgIGRsbHMvdXJsbW9uL3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMvdXNlci90ZXN0cy8uY3ZzaWdub3JlLAoJICBkbGxzL3dpbmluZXQvdGVzdHMvLmN2c2lnbm9yZSwgZGxscy93aW5tbS90ZXN0cy8uY3ZzaWdub3JlLAoJICBkbGxzL3dpbnNvY2svdGVzdHMvLmN2c2lnbm9yZSwgZGxscy93aW5zcG9vbC90ZXN0cy8uY3ZzaWdub3JlLAoJICBwcm9ncmFtcy9hdml0b29scy8uY3ZzaWdub3JlLCBwcm9ncmFtcy9jbG9jay8uY3ZzaWdub3JlLAoJICBwcm9ncmFtcy9jbWRsZ3RzdC8uY3ZzaWdub3JlLCBwcm9ncmFtcy9jb250cm9sLy5jdnNpZ25vcmUsCgkgIHByb2dyYW1zL2V4cGFuZC8uY3ZzaWdub3JlLCBwcm9ncmFtcy9ub3RlcGFkLy5jdnNpZ25vcmUsCgkgIHByb2dyYW1zL3Byb2dtYW4vLmN2c2lnbm9yZSwgcHJvZ3JhbXMvcmVnZWRpdC8uY3ZzaWdub3JlLAoJICBwcm9ncmFtcy9yZWdzdnIzMi8uY3ZzaWdub3JlLCBwcm9ncmFtcy9ycGNzcy8uY3ZzaWdub3JlLAoJICBwcm9ncmFtcy9ydW5kbGwzMi8uY3ZzaWdub3JlLCBwcm9ncmFtcy9zdGFydC8uY3ZzaWdub3JlLAoJICBwcm9ncmFtcy91bmluc3RhbGxlci8uY3ZzaWdub3JlLCBwcm9ncmFtcy92aWV3Ly5jdnNpZ25vcmUsCgkgIHByb2dyYW1zL3djbWQvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvd2luZWJvb3QvLmN2c2lnbm9yZSwKCSAgcHJvZ3JhbXMvd2luZWJyb3dzZXIvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvd2luZWNmZy8uY3ZzaWdub3JlLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS8uY3ZzaWdub3JlLCBwcm9ncmFtcy93aW5lZGJnLy5jdnNpZ25vcmUsCgkgIHByb2dyYW1zL3dpbmVmaWxlLy5jdnNpZ25vcmUsIHByb2dyYW1zL3dpbmVtZW51YnVpbGRlci8uY3ZzaWdub3JlLAoJICBwcm9ncmFtcy93aW5lbWluZS8uY3ZzaWdub3JlLCBwcm9ncmFtcy93aW5lcGF0aC8uY3ZzaWdub3JlLAoJICBwcm9ncmFtcy93aW5ldGVzdC8uY3ZzaWdub3JlLCBwcm9ncmFtcy93aW5ldmRtLy5jdnNpZ25vcmUsCgkgIHByb2dyYW1zL3dpbmhlbHAvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvd2ludmVyLy5jdnNpZ25vcmU6CglXZSBubyBsb25nZXIgdXNlIHRoZSAuZXhlLnNwZWMuYyBmaWxlcy4KCgkqIHByb2dyYW1zL01ha2Vwcm9nLnJ1bGVzLmluLCBwcm9ncmFtcy9hdml0b29scy9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvY2xvY2svTWFrZWZpbGUuaW4sIHByb2dyYW1zL2NtZGxndHN0L01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy9jb250cm9sL01ha2VmaWxlLmluLCBwcm9ncmFtcy9leHBhbmQvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL25vdGVwYWQvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3Byb2dtYW4vTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL3JlZ2VkaXQvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3JlZ3N2cjMyL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy9ycGNzcy9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvcnVuZGxsMzIvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL3N0YXJ0L01ha2VmaWxlLmluLCBwcm9ncmFtcy91bmluc3RhbGxlci9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvdmlldy9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2NtZC9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvd2luZWJvb3QvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmVicm93c2VyL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy93aW5lY2ZnL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5lY29uc29sZS9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvd2luZWRiZy9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luZWZpbGUvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL3dpbmVtZW51YnVpbGRlci9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luZW1pbmUvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL3dpbmVwYXRoL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5ldGVzdC9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvd2luZXZkbS9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luaGVscC9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvd2ludmVyL01ha2VmaWxlLmluOgoJQnVpbGQgYWxsIHRoZSBwcm9ncmFtcyB3aXRoIHdpbmVnY2MuCgoJKiBwcm9ncmFtcy93aW5ldGVzdC9ndWkucmM6IEl2YW4gTGVvIE11cnJheS1TbWl0aCA8cHVvdGlAaW53aW5kLml0PgoJTWFrZSBzdXJlIHRleHQgaXNuJ3QgY3V0IG9mZiBieSB0aGUgY2xvc2UgYnV0dG9uLgoKCSogZGxscy9pbW0zMi9pbW0uYywgZGxscy9yc2FiYXNlL21haW4uYywgZGxscy9zaGx3YXBpL2Fzc29jLmMsCgkgIGRsbHMvdXh0aGVtZS9kcmF3LmMsIGRsbHMveDExZHJ2L2tleWJvYXJkLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFzc29ydGVkIHNwZWxsaW5nIGFuZCBjYXNlIGZpeGVzLgoKCSogZGxscy94MTFkcnYvd2luZG93LmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglFbmFibGUgcmVzaXppbmcgaWYgV1NfVEhJQ0tGUkFNRSBpcyBzZXQuCgoJKiBkbGxzL29wZW5nbDMyL21ha2Vfb3BlbmdsLCBkbGxzL29wZW5nbDMyL29wZW5nbF9leHQuYywKCSAgZGxscy9vcGVuZ2wzMi9vcGVuZ2xfbm9ybS5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gc3luYyB1cCB3aXRoIGxhdGVzdCBPcGVuR0wgc3BlY2lmaWNhdGlvbnMKCS0gc29tZSBmaXhlcyBpbiBtYWtlX29wZW5nbCB0byBzdXBwb3J0IHRoZSBuZXcgdHlwZXMKCgkqIGluY2x1ZGUvd2luc29jazIuaDogSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglBZGRlZCBwcm90b2NvbCB0eXBlIGNvbnN0YW50cy4KCgkqIHRvb2xzL3dpbmVpbnN0YWxsOiBEYW4gS2VnZWwgPGRhbmtAa2VnZWwuY29tPgoJRml4ZWQgdHlwbyBpbiB0ZXN0IGFyZ3VtZW50cy4KCgkqIE1ha2UucnVsZXMuaW4sIGRsbHMvTWFrZXRlc3QucnVsZXMuaW46IEJ1aWxkIHRoZSB0ZXN0cyB3aXRoIHdpbmVnY2MuCgoJKiB0b29scy93aW5lZ2NjL3V0aWxzLmMsIHRvb2xzL3dpbmVnY2MvdXRpbHMuaCwKCSAgdG9vbHMvd2luZWdjYy93aW5lZ2NjLmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQWRkIHN1cHBvcnQgZm9yIHBhc3Npbmcgb3B0aW9ucyB0byB3aW5lYnVpbGQgdmlhIC1XYi4KCUdlbmVyYXRlIG9ubHkgdGhlIGxvYWRlciBzY3JpcHQgd2hlbiBnaXZlbiBqdXN0IHRoZSAuZXhlLnNvLgoJQWRkIGZ1bmN0aW9uIHRvIGRlbGV0ZSBlbGVtZW50IGZyb20gYSBzdHJhcnJheS4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjOgoJV2UgbmVlZCB0byB1c2UgQUNfQ0hFQ0tfVE9PTCB0byBjaGVjayBmb3IgY3BwIGluIG9yZGVyIHRvIHN1cHBvcnQKCWNyb3NzLWNvbXBpbGF0aW9uIHByb3Blcmx5LgoKCSogaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9keGVycjguaCwgaW5jbHVkZS9keGVycjkuaDoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglBZGRlZCBkeGVycjguaCBhbmQgZHhlcnI5LmggaGVhZGVyIGZpbGVzLgoKCSogZGxscy9yYXNhcGkzMi9yYXNhcGkuYywgZGxscy9yYXNhcGkzMi9yYXNhcGkzMi5zcGVjOgoJQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJQWRkZWQgc3R1YiBmb3IgUmFzR2V0RW50cnlQcm9wZXJ0aWVzQS4KCgkqIHRvb2xzL3dpbmVkdW1wL291dHB1dC5jOgoJUmVtb3ZlZCBvYnNvbGV0ZSBkZWZpbml0aW9ucyBmcm9tIGdlbmVyYXRlZCBtYWtlZmlsZXMuCgoJKiB0b29scy93aW5lZ2NjL3dpbmVnY2MuYzoKCVJlbW92ZWQgb2Jzb2xldGUgLS1kbGwgb3B0aW9uIGZyb20gbG9hZGVyIHNjcmlwdC4KCUFkZGVkIHN1cHBvcnQgZm9yIFdJTkVCVUlMRCBlbnZpcm9ubWVudCB2YXJpYWJsZS4KCURvbid0IGdlbmVyYXRlIHRoZSBsb2FkZXIgc2NyaXB0IGlmIHRoZSBvdXRwdXQgZmlsZSBuYW1lIGVuZHMgaW4KCS5leGUuc28uCglGaXhlZCBoYW5kbGluZyBvZiAtTCBvcHRpb24uCglTdGF0aWMgbGlicmFyaWVzIGhhdmUgdG8gYmUgbGlua2VkIGluIGFmdGVyIG9iamVjdCBmaWxlcy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL3NlY3VyMzIvLmN2c2lnbm9yZSwKCSAgZGxscy9zZWN1cjMyL01ha2VmaWxlLmluLCBkbGxzL3NlY3VyMzIvc2VjdXIzMi5jLAoJICBkbGxzL3NlY3VyMzIvc2VjdXIzMi5zcGVjLCBkbGxzL3NlY3VyMzIvc2VjdXIzMl9wcml2LmgsCgkgIGRsbHMvc2VjdXIzMi90aHVua3MuYywgZGxscy9zZWN1cjMyL3RodW5rcy5oLCBkbGxzL3NlY3VyMzIvd3JhcHBlci5jLAoJICBpbmNsdWRlL3dpbmVycm9yLmg6CglKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglBZGRlZCBhIHNlY3VyMzIuZGxsIHRoYXQgbG9hZHMgb3RoZXIgU1NQIERMTHMgYW5kIGZvcndhcmRzIGNhbGxzIHRvCgl0aGVtLgoKCSogZGxscy9jb21jdGwzMi90YWIuYzogVml0YWxpeSBNYXJnb2xlbiA8d2luZS1wYXRjaEBraWV2aW5mby5jb20+CglBZGp1c3QgYWxsIGRpbWVuc2lvbnMgdG8gbWF0Y2ggbmF0aXZlLgoJSW52YWxpZGF0ZSB3aG9sZSB0YWIgYXJlYSB3aGVuIG11bHRpLWxpbmUuCglJbiB2ZXJ0aWNhbCB0YWIgcGxhY2VtZW50IGdvIGZyb20gdG9wIHRvIGJvdHRvbS4KCUZpeCBhbm5veWluZyB2aXN1YWwgYXJ0aWZhY3RzLgoKCSogTWFrZS5ydWxlcy5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGluY2x1ZGUvY29uZmlnLmguaW4sCgkgIHRvb2xzL3dpbmVnY2MvTWFrZWZpbGUuaW4sIHRvb2xzL3dpbmVnY2MvdXRpbHMuYywKCSAgdG9vbHMvd2luZWdjYy91dGlscy5oLCB0b29scy93aW5lZ2NjL3dpbmVnY2MuYzoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglJbnN0cnVtZW50IHdpbmVnY2MgdG8gdXNlIHRoZSBjb21waWxlcnMgYW5kIG9wdGlvbnMgZGV0ZWN0ZWQgYXQKCWNvbmZpZ3VyZSB0aW1lLiBBZGQgc3VwcG9ydCBmb3IgcGFyc2luZy9mb3JtYXR0aW5nIGEgc3RyaW5nIGFycmF5Cglmcm9tL3RvIGEgY2hhciBzdHJpbmcuIEFkZCBvcHRpb24gdG8gZGlzYWJsZSBzaG9ydCB3Y2hhciBzdXBwb3J0IGluCgl3aW5lZ2NjLgoKCSogZmlsZXMvZG9zX2ZzLmM6IFJlbW92ZWQgdXNlbGVzcyAjaWZkZWYgU0laRU9GX0xPTkdfTE9ORy4KCjIwMDQtMDMtMDEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL21zdmlkZW8vbWNpd25kLmMsIGRsbHMvd2lubW0vbWNpYXZpL21jaWF2aS5jLAoJICBkbGxzL3dpbm1tL21jaWF2aS9tbW91dHB1dC5jLCBkbGxzL3dpbm1tL21jaWF2aS9wcml2YXRlX21jaWF2aS5oLAoJICBkbGxzL3dpbm1tL21jaWF2aS93bmQuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CgktIEFkZCBhIGxvdCBvZiB0cmFjZXMgdG8gbWFrZSBkZWJ1Z2dpbmcgYSBiaXQgZWFzaWVyLgoJLSBBZGQgc3VwcG9ydCBmb3IgTUNJV05ERl9OT0FVVE9TSVpFTU9WSUUsIE1DSVdOREZfTk9BVVRPU0laRVdJTkRPVwoJICBhbmQgTUNJV05ERl9OT0VSUk9SRExHIGZsYWdzIGluIHRoZSBNQ0lXbmRDbGFzcyBpbXBsZW1lbnRhdGlvbi4KCS0gSW1wbGVtZW50IHN1cHBvcnQgZm9yIE1DSV9VUERBVEUgaW4gdGhlIE1DSUFWSSBkcml2ZXIgYW5kIHVzZSBpdCBpbgoJICB0aGUgTUNJV25kQ2xhc3MgV01fUEFJTlQgaGFuZGxlci4KCS0gUmVpbXBsZW1lbnQgTUNJX1NUT1AgY29tbWFuZCBpbiB0aGUgTUNJQVZJIGRyaXZlciB2aWEgYW4gZXZlbnQuCgktIEFkZCBhIHRlc3QgcHJldmVudGluZyB0aGUgTUNJQVZJIGRyaXZlciB0byBjcmFzaCBhZnRlciBNQ0lfU0VFSwoJICBiZWhpbmQgYW4gZW5kIG9mIHN0cmVhbS4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL3ZuYnQudnhkLy5jdnNpZ25vcmUsCgkgIGRsbHMvdm5idC52eGQvTWFrZWZpbGUuaW4sIGRsbHMvdm5idC52eGQvdm5idC5jLAoJICBkbGxzL3ZuYnQudnhkL3ZuYnQudnhkLnNwZWM6CglKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CgktIFRoZSB2aXJ0dWFsIG5ldGJpb3MgZGV2aWNlIGRyaXZlciBpcyBwcm9wZXJseSBuYW1lZCB2bmJ0LnZ4ZCwgbm90CgkgIHZuYi52eGQuCgktIE1ha2UgaXQgbm90IGRlcGVuZCBvbiBVTklYIGluY2x1ZGVzLgoKCSogZGxscy9zaGVsbDMyL01ha2VmaWxlLmluOiBIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCUV4cG9ydCBMQ19BTEwgYmVmb3JlIGNhbGxpbmcgc2VkLgoKCSogZGxscy9xdWFydHovTWFrZWZpbGUuaW4sIGRsbHMvcXVhcnR6L2VudW1yZWdmaWx0ZXJzLmMsCgkgIGRsbHMvcXVhcnR6L2ZpbHRlcm1hcHBlci5jLCBkbGxzL3F1YXJ0ei9xdWFydHpfcHJpdmF0ZS5oOgoJQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJSW1wbGVtZW50ZWQgSUZpbHRlck1hcHBlciBhbmQgSUVudW1SZWdGaWx0ZXJzIGludGVyZmFjZXMuCglGaXhlZCBJRmlsdGVyTWFwcGVyMl9FbnVtTWF0Y2hpbmdGaWx0ZXJzLgoKCSogcHJvZ3JhbXMvd2luZXRlc3Qvc2VuZC5jOiBKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglDb25uZWN0IHRvIHdpbmVocS5vcmcgYnkgaXRzIG5hbWUgcmF0aGVyIHRoYW4gYnkgaXRzIElQIGFkZHIuCgoJKiBwcm9ncmFtcy93aW5lbWluZS9Fbi5yYywgcHJvZ3JhbXMvd2luZW1pbmUvRXMucmMsCgkgIHByb2dyYW1zL3dpbmVtaW5lL0ZyLnJjLCBwcm9ncmFtcy93aW5lbWluZS9JdC5yYywKCSAgcHJvZ3JhbXMvd2luZW1pbmUvTmwucmMsIHByb2dyYW1zL3dpbmVtaW5lL1B0LnJjLAoJICBwcm9ncmFtcy93aW5lbWluZS9SdS5yYywgcHJvZ3JhbXMvd2luZW1pbmUvU2kucmMsCgkgIHByb2dyYW1zL3dpbmVtaW5lL21haW4uYywgcHJvZ3JhbXMvd2luZW1pbmUvcmVzb3VyY2UuaCwKCSAgcHJvZ3JhbXMvd2luZW1pbmUvcnNyYy5yYzoKCU9sZWcgUHJva2hvcm92IDx4b2xlZ3Byb0ByYmNtYWlsLnJ1PgoJLSBrZXkgYWNjZWxlcmF0b3JzIGZvciAiTmV3IEdhbWUiIGFuZCBleGl0CgktIGF1dG8gZmxhZyBhZnRlciBzdWNjZXNzZnVsIGdhbWUgdGhvc2UgZW50cmllcyB3aGljaCB3ZXJlIG5vdCBmbGFnZ2VkCgkgIGJ5IHBsYXllciBkdXJpbmcgdGhlIGdhbWUgaGltc2VsZgoKCSogaW5jbHVkZS9vYmppZGwuaWRsLCBpbmNsdWRlL3VybG1vbi5oLCBpbmNsdWRlL3VybG1vbi5pZGw6CglLZXZpbiBLb2x0emF1IDxrZXZpbkBwbG9wLm9yZz4KCURlZmluZSBNS1NZU19VUkxNT05JS0VSLgoKCSogZGxscy9zaGVsbDMyL3NobGV4ZWMuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBhIG1pc3NpbmcgJ1xcJy4KCgkqIHByb2dyYW1zL3dpbmV0ZXN0L3NlbmQuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVN1Ym1pdCByZXN1bHRzIHRvIFdpbmVIUS4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzogU3RldmUgTHVzdGJhZGVyIDxzbHVzdGJhZGVyQHZlcml6b24ubmV0PgoJSGFuZGxlIHRoZSBmaXJzdFZpc2libGUgaXRlbSBiZWluZyBOVUxMIGluCglUUkVFVklFV19VcGRhdGVTY3JvbGxCYXJzKCkuCgoJKiBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL3NzcGkuaDogSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJQWRkZWQgc3NwaS5oLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvZDNkOC9zaGFkZXIuYywKCSAgZGxscy9kaW5wdXQvam95c3RpY2tfbGludXguYywgZGxscy9pcGhscGFwaS9pcHN0YXRzLmMsCgkgIGRsbHMvbmV0YXBpMzIvbmJ0LmMsIGRsbHMvd2luZWQzZC92ZXJ0ZXhzaGFkZXIuYywKCSAgZGxscy93aW5lZG9zL3BwZGV2LmMsIGRsbHMvd2lubW0vam95c3RpY2svam95c3RpY2suYywKCSAgZGxscy93aW5zb2NrL3NvY2tldC5jLCBmaWxlcy9kb3NfZnMuYywgaW5jbHVkZS9jb25maWcuaC5pbiwKCSAgc2VydmVyL2NoYW5nZS5jOgoJUG9ydGFiaWxpdHkgZml4ZXMgZm9yIExTQiBjb21wYXRpYmlsaXR5LgoKCSogZGxscy9uZXRhcGkzMi9uZXRhcGkzMi5jLCBkbGxzL25ldGFwaTMyL25ldGFwaTMyLnNwZWM6CglKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglJbXBsZW1lbnQgTmV0cE5ldGJpb3NTdGF0dXNUb0FwaVN0YXR1cy4KCgkqIGRsbHMvbnRkbGwvdGltZS5jOiBSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglJbiBUSU1FX0dldEJpYXMgbWFrZSBzdXJlIHRoZXJlIGlzIGEgY2FjaGVkIHZhbHVlIGZvciBkYXlsaWdodCBhcwoJd2VsbC4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlYXV0LmMsIGluY2x1ZGUvb2xlYXV0by5oOgoJTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCUNvcnJlY3QgcmV0dXJuIHR5cGUgb2YgU3lzU3RyaW5nTGVuKCkgYW5kIFN5c1N0cmluZ0J5dGVMZW4oKS4KCgkqIGRsbHMvc2hlbGwzMi9zaGxleGVjLmM6IE1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CglTZXQgZXJyb3IgY29kZSBFUlJPUl9EREVfRkFJTCBpZiB0aGUgRERFIGNvbm5lY3Rpb24gZmFpbGVkIGluCglTaGVsbEV4ZWN1dGUoKS4KCgkqIGRsbHMvcnNhYmFzZS9NYWtlZmlsZS5pbiwgZGxscy9yc2FiYXNlL21haW4uYywgdG9vbHMvd2luZS5pbmY6CglKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglNYWtlIHJzYWJhc2UuZGxsIHNlbGYtcmVnaXN0ZXIuCgoJKiBkbGxzL2NyeXB0MzIvTWFrZWZpbGUuaW4sIGRsbHMvY3J5cHQzMi9jZXJ0LmMsCgkgIGRsbHMvY3J5cHQzMi9jcnlwdDMyLnNwZWMsIGRsbHMvY3J5cHQzMi9tYWluLmMsIGluY2x1ZGUvd2luY3J5cHQuaDoKCUp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCS0gY29ycmVjdCBzb21lIHByb3RvdHlwZXMsIGFkZCBzb21lIGRlZmluZXMKCS0gc3R1YiBhIGNvdXBsZSBtb3JlIGZ1bmN0aW9ucwoKCSogaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9sbWNvbnMuaCwgaW5jbHVkZS9sbXNlcnZlci5oLAoJICBpbmNsdWRlL2xtc2hhcmUuaDoKCUp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCURlY2xhcmUgYSBmZXcgbW9yZSBOZXQgYXBpcyBhbmQgY29uc3RhbnRzLgoKMjAwNC0wMi0yOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIE1ha2VmaWxlLmluOiBSZW1vdmUgdGhlICQoZGF0YWRpcikvd2luZSBkaXJlY3Rvcnkgb24gdW5pbnN0YWxsLgoKCSogZG9jdW1lbnRhdGlvbi9zYW1wbGVzL3N5c3RlbS5pbmk6IE5vIGxvbmdlciBuZWVkZWQuCgoJKiBkbGxzL3dpbmVwcy9NYWtlZmlsZS5pbiwgZGxscy93aW5lcHMvZ2VuZXJpYy5wcGQsCgkgIGRvY3VtZW50YXRpb24vc2FtcGxlcy9nZW5lcmljLnBwZDoKCU1vdmVkIGdlbmVyaWMucHBkIHRvIGRsbHMvd2luZXBzLCBhbmQgaW5zdGFsbCBpdCBpbiBkYXRhZGlyLgoKCSogZGxscy9tc3dzb2NrL21zd3NvY2suYywgZGxscy9tc3dzb2NrL21zd3NvY2suc3BlYywKCSAgZGxscy93aW5zb2NrL2FzeW5jLmMsIGRsbHMvd2luc29jay9zb2NrZXQuYywgaW5jbHVkZS9tc3dzb2NrLmgsCgkgIGluY2x1ZGUvd2luc29jay5oOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglNb3JlIHN0dWJzIGFuZCBiZXR0ZXIgaGVhZGVycyBmb3IgbXN3c29jay5kbGwuCgoJKiBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLCBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBTSE1lbnVJbmRleEZyb21JRCBhbmQgU0hDb0NyZWF0ZUluc3RhbmNlQUMuCgoyMDA0LTAyLTI3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogdG9vbHMvd2luZWluc3RhbGwsIHdpbmVkZWZhdWx0LnJlZzoKCVVzZSB0aGUgbmV3IC5pbmYgc2NyaXB0IGluc3RlYWQgb2Ygd2luZWRlZmF1bHQucmVnLgoJUmVtb3ZlZCBzb21lIG9ic29sZXRlIGNvZGUuCgoJKiB0b29scy9NYWtlZmlsZS5pbiwgdG9vbHMvd2luZS5pbmY6CglBZGRlZCB3aW5lLmluZiBzZXR1cGFwaSBzY3JpcHQgdG8gc2V0dXAgdGhlIGluaXRpYWwgV2luZSByZWdpc3RyeQoJKGJhc2VkIG9uIHRoZSB3b3JrIG9mIENocmlzIE1vcmdhbiBhbmQgQnJpYW4gVmluY2VudCkuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9tc3JsZTMyLy5jdnNpZ25vcmUsCgkgIGRsbHMvbXNybGUzMi9NYWtlZmlsZS5pbiwgZGxscy9tc3JsZTMyL21zcmxlMzIuYywKCSAgZGxscy9tc3JsZTMyL21zcmxlMzIuc3BlYywgZGxscy9tc3JsZTMyL21zcmxlX0RlLnJjLAoJICBkbGxzL21zcmxlMzIvbXNybGVfRW4ucmMsIGRsbHMvbXNybGUzMi9tc3JsZV9Fcy5yYywKCSAgZGxscy9tc3JsZTMyL21zcmxlX0ZyLnJjLCBkbGxzL21zcmxlMzIvbXNybGVfSXQucmMsCgkgIGRsbHMvbXNybGUzMi9tc3JsZV9ObC5yYywgZGxscy9tc3JsZTMyL21zcmxlX1B0LnJjLAoJICBkbGxzL21zcmxlMzIvbXNybGVfUnUucmMsIGRsbHMvbXNybGUzMi9tc3JsZV9TaS5yYywKCSAgZGxscy9tc3JsZTMyL21zcmxlX3ByaXZhdGUuaCwgZGxscy9tc3JsZTMyL3JzcmMucmM6CglNb3ZlZCBtc3JsZTMyIHRvIHRoZSB0b3AtbGV2ZWwgZGxscyBkaXJlY3RvcnkuCgoJKiBkbGxzL2ltbTMyL2ltbS5jLCBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBkbGxzL2tlcm5lbC9tb2R1bGUuYywKCSAgZGxscy9uZXRhcGkzMi93a3N0YS5jLCBkbGxzL29sZWF1dDMyL3NhZmVhcnJheS5jLAoJICBkbGxzL29sZWF1dDMyL3ZhcmZvcm1hdC5jLCBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYywKCSAgZGxscy9yYXNhcGkzMi9yYXNhcGkzMi5zcGVjLCBkbGxzL3dpbmVwcy93aW5lcHMuc3BlYywKCSAgZGxscy93aW5pbmV0L25ldGNvbm5lY3Rpb24uYywgZGxscy94MTFkcnYveDExZHJ2LnNwZWMsCgkgIGRsbHMveDExZHJ2L3hpbS5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIGlzc3VlcyBmb3VuZCBieSB3aW5hcGlfY2hlY2suCgoJKiBkbGxzL3NoZWxsMzIvc3lzdHJheS5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUZpeGVkIGljb24gbGVhay4KCgkqIGRsbHMvd2lubW0vd2lubW0uYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUNsZWFudXAgcHJlcGFyZS91bnByZXBhcmUgaGVhZGVyIHBhcmFtZXRlciBjaGVja2luZy4KCUZpeCBtaWRpSW5HZXREZXZDYXBzVy4KCgkqIGluY2x1ZGUvZHNvdW5kLmg6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglBZGRlZCBtaXNzaW5nICNkZWZpbmUgZm9yIERTX0lOQ09NUExFVEUuCgoJKiB0b29scy93aW5hcGkvd2luMzIuYXBpOiBQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUFQSSBmaWxlcyB1cGRhdGUuCgoJKiBkbGxzL2tlcm5lbC9hY3RjdHguYywgaW5jbHVkZS93aW5iYXNlLmg6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUFkZGVkIHByb3BlciBoZWFkZXJzIGZvciB0aGUgKkFjdEN0eCogZnVuY3Rpb25zLgoKCSogaW5jbHVkZS93aW5udC5oOiBQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUFkZGVkIG1hY3JvIERFRkFVTFRfVU5SRUFDSEFCTEUuCgoJKiBkbGxzL21zdmlkZW8vbWNpd25kLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglGaXggYSB0eXBvIGluIGEgY29tbWVudC4KCgkqIHRvb2xzL3dpbmVtYWtlciwgdG9vbHMvd2luZW1ha2VyLm1hbjoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglHZW5lcmF0ZSBhIHNpbXBsZSBNYWtlZmlsZSB0aGF0IHVzZXMgd2luZWdjYyB0byBjb21waWxlLgoJTm8gbG9uZ2VyIGdlbmVyYXRlIGEgY29uZmlndXJlIHNjcmlwdCwgdGhhdCdzIHByb2plY3QgcG9saWN5LgoKCSogZGxscy9jb21jYXQvcmVnc3ZyLmMsIGRsbHMvZG1pbWUvcmVnc3ZyLmMsIGRsbHMvZG1zdHlsZS9yZWdzdnIuYywKCSAgZGxscy9vbGUzMi9yZWdzdnIuYywgZGxscy9zaGVsbDMyL3JlZ3N2ci5jOgoJU3luYyBzb21lIG9mIHRoZSBkbGwgcmVnaXN0cmF0aW9ucyB3aXRoIHRoZSBjb250ZW50cyBvZgoJd2luZWRlZmF1bHQucmVnLgoKCSogZGxscy9zZXR1cGFwaS9pbnN0YWxsLmM6CglTUElOU1RfVU5SRUdTVlIgbXVzdCB1c2UgdGhlIFVucmVnaXN0ZXJEbGxzIHNlY3Rpb24sIG5vdCB0aGUKCVJlZ2lzdGVyRGxscyBvbmUuCgoJKiBkbGxzL3NldHVwYXBpL2luc3RhbGwuYywgZGxscy9zZXR1cGFwaS9zZXR1cGFwaS5zcGVjLAoJICBkbGxzL3NldHVwYXBpL3NldHVweF9tYWluLmMsIGRsbHMvc2V0dXBhcGkvc3R1YnMuYywKCSAgaW5jbHVkZS9zZXR1cGFwaS5oOgoJSW1wbGVtZW50ZWQgSW5zdGFsbEhpbmZTZWN0aW9uIChiYXNlZCBvbiBhIHBhdGNoIGJ5IENocmlzIE1vcmdhbikuCgoJKiBkbGxzL2FkdmFwaTMyL2NyeXB0LmM6IFJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CgktIFJlbW92ZSBkdXBsaWNhdGUgZnJlZS4KCS0gUmVtb3ZlIGRlYnVnIG1lc3NhZ2UgdGhhdCBkdW1wcyBpbnZhbGlkIHN0cmluZy4KCgkqIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYywgZGxscy9jb21jdGwzMi9kcmFnbGlzdC5jLAoJICBkbGxzL2NvbWN0bDMyL2ZsYXRzYi5jLCBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jLAoJICBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jLCBkbGxzL2NvbWN0bDMyL3Ntb290aHNjcm9sbC5jOgoJUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCVVwZGF0ZSBjb21tb24gY29udHJvbCBmdW5jdGlvbiBkb2N1bWVudGF0aW9uLgoKCSogZGxscy9udGRsbC9ydGxzdHIuYzogUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCVVwZGF0ZSBkb2N1bWVudGF0aW9uIGZvciBSdGwgZnVuY3Rpb25zLgoKCSogZGxscy91eHRoZW1lL2RyYXcuYzogS2V2aW4gS29sdHphdSA8a2V2aW5AcGxvcC5vcmc+CglJbXBsZW1lbnQgR2V0VGhlbWVUZXh0TWV0cmljcy4KCgkqIGRsbHMvcnBjcnQ0L3JwY19iaW5kaW5nLmMsIGRsbHMvcnBjcnQ0L3JwY19tZXNzYWdlLmMsCgkgIGRsbHMvcnBjcnQ0L3JwY19zZXJ2ZXIuYzoKCVJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CgktIEZpeCBhIGJhZCB1c2Ugb2YgSGVhcFJlYWxsb2MuCgktIEZpeCBlcnJvciByZXR1cm4gY29kZXMuCgktIEltcHJvdmUgdHJhY2VzLgoKCSogZGxscy9jb21jdGwzMi9yZWJhci5jOiBNYXR0IENoYXBtYW4gPG1hdHRoZXdjQGNzZS51bnN3LmVkdS5hdT4KCVJFQkFSX0xheW91dCBzaG91bGQgcmVzcGVjdCB0aGUgbWluaW11bSBzaXplIG9mIGJhbmRzIGV2ZW4gd2hlbgoJUkJCU19GSVhFRFNJWkUgaXMgbm90IHNldC4KCgkqIGRsbHMvbXN2aWRlby9tY2l3bmQuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVVzZSBzb21lIGhldXJpc3RpY3MgdG8gZGVjaWRlIHdoYXQgdHlwZSBvZiBNQ0lXTkRNX09QRU4gbWVzc2FnZSB0bwoJdXNlLgoKCSogZGxscy9zZXR1cGFwaS9pbnN0YWxsLmMsIGRsbHMvc2V0dXBhcGkvcGFyc2VyLmMsCgkgIGRsbHMvc2V0dXBhcGkvcXVldWUuYywgZGxscy9zZXR1cGFwaS9zZXR1cGFwaV9wcml2YXRlLmgsCgkgIGluY2x1ZGUvc2V0dXBhcGkuaDoKCUFkZGVkIHN1cHBvcnQgZm9yIHRoZSBSZWdpc3RlckRsbHMgc2VjdGlvbiAocGFydGx5IGJhc2VkIG9uIGEgcGF0Y2ggYnkKCUNocmlzIE1vcmdhbikuCgoJKiBkbGxzL250ZGxsL3RpbWUuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUNhY2hlIHRoZSByZXN1bHQgb2YgVElNRV9HZXRCaWFzIGZvciB1cCB0byAxIHNlY29uZC4KCgkqIGRsbHMvY29tY3RsMzIvcmViYXIuYzogTWF0dCBDaGFwbWFuIDxtYXR0aGV3Y0Bjc2UudW5zdy5lZHUuYXU+CglSRUJBUl9TaG93QmFuZCBuZWVkcyB0byBmb3JjZSBsYXlvdXQgb2YgdGhlIHJlYmFyIGFmdGVyIGEgYmFuZCBpcwoJaGlkZGVuL3VuaGlkZGVuLgoKCSogZGxscy93aW5tbS9tY2lhdmkvd25kLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglDb252ZXJ0IE1DSUFWSSB3aW5kb3cgc3VwcG9ydCB0byB1bmljb2RlLgoJQWxsb3cgbXVsdGlwbGUgc2ltdWx0YW5lb3VzIE1DSUFWSSBkcml2ZXIgaW5zdGFuY2VzLgoKCSogdG9vbHMvd2luZWdjYy93aW5ld3JhcC5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJUmVtb3ZlIHRoZSBubyBsb25nZXIgdXNlZCB3aW5ld3JhcCB1dGlsaXR5LgoKMjAwNC0wMi0yNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL3N5bmMuYywgZGxscy9rZXJuZWwvc3lzbGV2ZWwuYywKCSAgZGxscy9tc25ldDMyL21zbmV0X21haW4uYywgZGxscy93aW50cnVzdC93aW50cnVzdF9tYWluLmMsCgkgIHdpbmRvd3MvdXNlci5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVJlbW92ZSB0aGUgd2luMzIgZGVidWcgY2hhbm5lbCwgbWlzYyBjbGVhbnVwIG9mIGRlYnVnZ2luZyBjb2RlLgoKCSogZG9jdW1lbnRhdGlvbi90ZXN0aW5nLnNnbWw6IEhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJRG9jdW1lbnQgYnVpbGRpbmcgdGVzdHMgd2l0aCBNaW5HVy4KCgkqIGRsbHMva2VybmVsL3RpbWUuYzogTWlrZSBIZWFybiA8bWhAY29kZXdlYXZlcnMuY29tPgoJVXNlIHRpbWUgcmF0aGVyIHRoYW4gd2luMzIgZGVidWcgY2hhbm5lbCBmb3Iga2VybmVsIHRpbWUgZnVuY3Rpb25zLgoKCSogd2luZG93cy9kY2UuYzogTWlrZSBIZWFybiA8bWhAY29kZXdlYXZlcnMuY29tPgoJQWRkIGEgY29tbWVudCB0byBleHBsYWluIHRoZSBMb2NrV2luZG93VXBkYXRlIHNpdHVhdGlvbi4KCgkqIGluY2x1ZGUvZGlnaXRhbHYuaDogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBBL1cgbWFwcGluZyBmb3IgTUNJX0RHVl9XSU5ET1dfUEFSTVMuCgoJKiB0b29scy93aW5lZ2NjL3V0aWxzLmMsIHRvb2xzL3dpbmVnY2MvdXRpbHMuaCwKCSAgdG9vbHMvd2luZWdjYy93aW5lZ2NjLmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRm9yIHN0YXRpYyBsaWJzICguYSkgd2UgbmVlZCB0byBwYXNzIHRoZSBhY3R1YWwgZmlsZW5hbWUgdG8gd2luZWJ1aWxkLAoJbm90IGEgLWwgc3dpdGNoLiBEbyBub3QgcmVtb3ZlIHRoZSBmaWxlIGV4dGVuc2lvbiB0byBnZXQgdG8gdGhlIGJhc2UKCW5hbWUgaWYgaXQncyBub3QgLmV4ZSBvciAuZXhlLnNvLiBMaW5rIHNoZWxsMzIgYnkgZGVmYXVsdCBmb3IgR1VJCglwcm9ncmFtcy4gRml4IHBhcnNpbmcgb2Ygb3B0aW9ucyB3aXRoIGFyZ3VtZW50cy4KCgkqIGRsbHMvd2lubW0vd2lubW0uYzogU2VhbiBZb3VuZyA8c2VhbkBtZXNzLm9yZz4KCUNoZWNrIHVTaXplIHBhcmFtZXRlciBpbiB3YXZlT3V0VW5wcmVwYXJlSGVhZGVyIGFuZAoJd2F2ZU91dFByZXBhcmVIZWFkZXIuCgoJKiBkbGxzL29sZWF1dDMyL29sZWF1dDMyLnNwZWMsIGRsbHMvb2xlYXV0MzIvdGVzdHMvdmFydGVzdC5jLAoJICBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYzoKCUZhYmlhbiBDZW5lZGVzZSA8Q2VuZWRlc2VAaW5kZWwuY2g+CglWYXJSb3VuZCBpbXBsZW1lbnRhdGlvbiAod2l0aG91dCB0eXBlIERFQ0lNQUwgeWV0KSB3aXRoIHRlc3QgZnVuY3Rpb24uCgoJKiBkbGxzL250ZGxsL3RpbWUuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUNhbGwgVElNRV9HZXRCaWFzIHJhdGhlciB0aGFuIFJ0bFF1ZXJ5VGltZVpvbmVJbmZvIGlmIHdlJ3JlIG9ubHkKCWludGVyZXN0ZWQgaW4gdGhlIGJpYXMgLSBpdCdzIGZhc3Rlci4KCjIwMDQtMDItMjUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC9sb2NhbGUuYywgZGxscy9vbGVhdXQzMi92YXJpYW50LmMsIGRsbHMvd2luZXBzL2luaXQuYzoKCUZpeGVkIGNhbGxlcnMgb2YgR2V0TG9jYWxlSW5mb1cgdG8gdXNlIHRoZSBjb3JyZWN0IGJ1ZmZlciBzaXplLgoKCSogZGxscy9rZXJuZWwvdnhkLmM6CglSZXR1cm4gdGhlIHJpZ2h0IGVycm9yIGNvZGUgZm9yIG5vbi1leGlzdGVudCBWeEQgbW9kdWxlcy4KCgkqIGRsbHMvZG1iYW5kL2JhbmQuYywgZGxscy9kbWJhbmQvYmFuZHRyYWNrLmMsCgkgIGRsbHMvZG1iYW5kL2RtYmFuZF9tYWluLmMsIGRsbHMvZG1iYW5kL2RtYmFuZF9wcml2YXRlLmgsCgkgIGRsbHMvZG1jb21wb3MvY2hvcmRtYXAuYywgZGxscy9kbWNvbXBvcy9jaG9yZG1hcHRyYWNrLmMsCgkgIGRsbHMvZG1jb21wb3MvY29tcG9zZXIuYywgZGxscy9kbWNvbXBvcy9kbWNvbXBvc19tYWluLmMsCgkgIGRsbHMvZG1jb21wb3MvZG1jb21wb3NfcHJpdmF0ZS5oLCBkbGxzL2RtY29tcG9zL3NpZ25wb3N0dHJhY2suYywKCSAgZGxscy9kbWltZS9hdWRpb3BhdGguYywgZGxscy9kbWltZS9kbWltZV9tYWluLmMsCgkgIGRsbHMvZG1pbWUvZG1pbWVfcHJpdmF0ZS5oLCBkbGxzL2RtaW1lL2dyYXBoLmMsCgkgIGRsbHMvZG1pbWUvbHlyaWNzdHJhY2suYywgZGxscy9kbWltZS9tYXJrZXJ0cmFjay5jLAoJICBkbGxzL2RtaW1lL3BhcmFtY29udHJvbHRyYWNrLmMsIGRsbHMvZG1pbWUvcGF0dGVybnRyYWNrLmMsCgkgIGRsbHMvZG1pbWUvcGVyZm9ybWFuY2UuYywgZGxscy9kbWltZS9zZWdtZW50LmMsCgkgIGRsbHMvZG1pbWUvc2VnbWVudHN0YXRlLmMsIGRsbHMvZG1pbWUvc2VndHJpZ2dlcnRyYWNrLmMsCgkgIGRsbHMvZG1pbWUvc2VxdHJhY2suYywgZGxscy9kbWltZS9zeXNleHRyYWNrLmMsCgkgIGRsbHMvZG1pbWUvdGVtcG90cmFjay5jLCBkbGxzL2RtaW1lL3RpbWVzaWd0cmFjay5jLAoJICBkbGxzL2RtaW1lL3Rvb2wuYywgZGxscy9kbWltZS93YXZldHJhY2suYywgZGxscy9kbWxvYWRlci9jb250YWluZXIuYywKCSAgZGxscy9kbWxvYWRlci9kbWxvYWRlcl9tYWluLmMsIGRsbHMvZG1sb2FkZXIvZG1sb2FkZXJfcHJpdmF0ZS5oLAoJICBkbGxzL2RtbG9hZGVyL2xvYWRlci5jLCBkbGxzL2RtbG9hZGVyL2xvYWRlcnN0cmVhbS5jLAoJICBkbGxzL2Rtc2NyaXB0L2Rtc2NyaXB0X21haW4uYywgZGxscy9kbXNjcmlwdC9kbXNjcmlwdF9wcml2YXRlLmgsCgkgIGRsbHMvZG1zY3JpcHQvcmVnc3ZyLmMsIGRsbHMvZG1zY3JpcHQvc2NyaXB0LmMsCgkgIGRsbHMvZG1zY3JpcHQvc2NyaXB0dHJhY2suYywgZGxscy9kbXN0eWxlL2F1ZGl0aW9udHJhY2suYywKCSAgZGxscy9kbXN0eWxlL2Nob3JkdHJhY2suYywgZGxscy9kbXN0eWxlL2NvbW1hbmR0cmFjay5jLAoJICBkbGxzL2Rtc3R5bGUvZG1zdHlsZV9tYWluLmMsIGRsbHMvZG1zdHlsZS9kbXN0eWxlX3ByaXZhdGUuaCwKCSAgZGxscy9kbXN0eWxlL21vdGlmdHJhY2suYywgZGxscy9kbXN0eWxlL211dGV0cmFjay5jLAoJICBkbGxzL2Rtc3R5bGUvc3R5bGUuYywgZGxscy9kbXN0eWxlL3N0eWxldHJhY2suYywKCSAgZGxscy9kbXN5bnRoL2Rtc3ludGhfbWFpbi5jLCBkbGxzL2Rtc3ludGgvZG1zeW50aF9wcml2YXRlLmgsCgkgIGRsbHMvZG1zeW50aC9zeW50aC5jLCBkbGxzL2Rtc3ludGgvc3ludGhzaW5rLmMsIGRsbHMvZG11c2ljL2J1ZmZlci5jLAoJICBkbGxzL2RtdXNpYy9jbG9jay5jLCBkbGxzL2RtdXNpYy9jb2xsZWN0aW9uLmMsIGRsbHMvZG11c2ljL2RtdXNpYy5jLAoJICBkbGxzL2RtdXNpYy9kbXVzaWNfbWFpbi5jLCBkbGxzL2RtdXNpYy9kbXVzaWNfcHJpdmF0ZS5oLAoJICBkbGxzL2RtdXNpYy9kb3dubG9hZC5jLCBkbGxzL2RtdXNpYy9kb3dubG9hZGVkaW5zdHJ1bWVudC5jLAoJICBkbGxzL2RtdXNpYy9pbnN0cnVtZW50LmMsIGRsbHMvZG11c2ljL3BvcnQuYywKCSAgZGxscy9kbXVzaWMvcG9ydGRvd25sb2FkLmMsIGRsbHMvZG11c2ljL3RocnUuYywgZGxscy9kc3dhdmUvZHN3YXZlLmMsCgkgIGRsbHMvZHN3YXZlL2Rzd2F2ZV9tYWluLmMsIGRsbHMvZHN3YXZlL2Rzd2F2ZV9wcml2YXRlLmgsCgkgIGluY2x1ZGUvZG11c2ljaS5oOgoJUm9rIE1hbmRlbGpjIDxyb2subWFuZGVsamNAZ2ltYi5vcmc+CglBZGRlZCBuYW1lIHJlc29sdmluZyBmb3IgQ0xTSURzLCBJSURzLCBHVUlEcyBhbmQgcmV0dXJuIGNvZGVzLgoKCSogZGxscy9vcGVuZ2wzMi93Z2wuYzogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUhhbmRsZSBwcm9wZXIgc3Vic3RyYWN0aW9uIG9mIHVuc2lnbmVkIG51bWJlcnMuCgoJKiBERVZFTE9QRVJTLUhJTlRTOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQWRkIFZNTSBWeEQuCgoJKiBkbGxzL250ZGxsL3RpbWUuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCVNwZWVkIHVwIFJ0bFRpbWVGaWVsZHNUb1RpbWUuCgoJKiBwcm9ncmFtcy93aW5lZGJnL21lbW9yeS5jOiBNYXR0IENoYXBtYW4gPG1hdHRoZXdjQGNzZS51bnN3LmVkdS5hdT4KCUZpeCBkdW1waW5nIG9mIFVuaWNvZGUgc3RyaW5ncy4KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmM6IE1hdHQgQ2hhcG1hbiA8bWF0dGhld2NAY3NlLnVuc3cuZWR1LmF1PgoJRml4IGEgcmVlbnRyYW5jeSBpc3N1ZSBpbiB0aGUgcHJvcGVydHkgc2hlZXQgaW1wbGVtZW50YXRpb24gYnkgbm90CgljYWNoaW5nIGEgcG9pbnRlciB0aGF0IGNhbiBjaGFuZ2UuCgoJKiBkbGxzL29sZWF1dDMyL3ZhcnR5cGUuYzogRmFiaWFuIENlbmVkZXNlIDxDZW5lZGVzZUBpbmRlbC5jaD4KCU5vIHNpZ24gZXh0ZW5zaW9uIGZvciBuZWdhdGl2ZSB2YWx1ZXMuCgoyMDA0LTAyLTI0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9udGRsbC9sb2Fkb3JkZXIuYzoKCVR3ZWFrIHRoZSBsb2FkIG9yZGVyIGFsZ29yaXRobSBhIGJpdCB0byBiZXR0ZXIgcmVmbGVjdCB0aGUgdXNlcidzCglpbnRlbnRpb24sIGJ5IHRha2luZyBpbnRvIGFjY291bnQgbm9uLXdpbGRjYXJkIG1vZHVsZSBzcGVjaWZpY2F0aW9ucwoJZm9yIGFsbCBkaXJlY3Rvcmllcy4KCgkqIGRsbHMvbnRkbGwvbG9hZGVyLmM6CglSZXR1cm4gcmlnaHQgYXdheSBmcm9tIGltcG9ydF9kbGwgd2hlbiBhIGRsbCBpcyBub3QgZm91bmQgdG8gYXZvaWQKCWRpc3BsYXlpbmcgbWFueSB1c2VsZXNzIGZ1bmN0aW9uIGVycm9ycy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjOgoJTW9yZSByb2J1c3QgZml4IGZvciB0aGUgYXJ0c2MtY29uZmlnIGJyZWFrYWdlLgoKCSogcHJvZ3JhbXMvd2luZWRiZy9lbGYuYzogWW9yaWNrIEhhcmR5IDx5aEBtZXRyb3dlYi5jby56YT4KCVVzZSBTSE5fVU5ERUYgaW5zdGVhZCBvZiBTVE5fVU5ERUYgdG8gc3BlY2lmeSB1bmRlZmluZWQgc2VjdGlvbgoJaW5kZXguCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvbWlkaS5jOiBDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglSZXBsYWNlZCB0aGUgdGltZXIgYW5kIGl0cyBjYWxsYmFjayBieSBhIHRocmVhZCBmb3IgcmVjZWl2aW5nIG1pZGkgaW4KCWV2ZW50cy4KCUhhbmRsZWQgRFJWTV9FWElUIGluIE9TU19taWRNZXNzYWdlLgoKCSogZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJU2V0IFNBX1JFU1RBUlQgc2lnYWN0aW9uIGZsYWcgZm9yIG90aGVyIEJTRHMgYmVzaWRlIE5ldEJTRC4KCgkqIGRsbHMvb3BlbmdsMzIvd2dsLmM6IExpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIGZpeCAnZW1wdHknIGdseXBocwoJLSBpbXBsZW1lbnQgcHJvcGVyIGJpdG1hcCBjb29yZGluYXRlcwoKCSogZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZmlsZXMvZGlyZWN0b3J5LmMsIGZpbGVzL2Rvc19mcy5jLAoJICBmaWxlcy9maWxlLmMsIGluY2x1ZGUvZmlsZS5oOgoJUmVtb3ZlZCBzb21lIG9mIHRoZSBET1MgZGV2aWNlIGhhY2tzIChiYXNlZCBvbiBhIHBhdGNoIGJ5IEVyaWMKCVBvdWVjaCkuCgoJKiBkbGxzL21zdmNydC9zY2FuZi5oOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJSW1wbGVtZW50IEk2NCBtb2RpZmllciwgbW92ZSBXQVJOIHRvIFRSQUNFLgoKCSogZGxscy93aW5lZG9zL2ludDIxLmM6CglDaGFuZ2VkIGhhbmRsaW5nIG9mIHNwZWNpYWwgRE9TIGRldmljZXMgdG8gdXNlIHJlYWwgZmlsZSBoYW5kbGVzCglpbnN0ZWFkIG9mIHRoZSBzZXJ2ZXIgZGV2aWNlIG9iamVjdC4KCgkqIGRsbHMva2VybmVsL3N5bmMuYywgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLAoJICBzZXJ2ZXIvbmFtZWRfcGlwZS5jLCBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvdHJhY2UuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCSBQYXNzIGluaGVyaXQgaGFuZGxlIGZsYWcgcHJvcGVybHkgZm9yIENyZWF0ZU5hbWVkUGlwZS4KCgkqIGRsbHMvY29tbWRsZy9jZGxnX0l0LnJjOiBJdmFuIExlbyBNdXJyYXktU21pdGggPHB1b3RpQGlud2luZC5pdD4KCUl0YWxpYW4gdXBkYXRlLgoKCSogZGxscy9jb21jdGwzMi90b29sdGlwcy5jOiBDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglBY2NlcHQgbnVsbCBtb2R1bGUgaW5zdGFuY2UsIExvYWRzdHJpbmcgY2FuIGhhbmRsZSBpdC4KCgkqIGRsbHMvd2lubW0vd2lubW0uYzogQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJRml4ZWQgd2F2ZUluR2V0RGV2Q2Fwc1cuCgoJKiBkbGxzL250ZGxsL3RpbWUuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCVNwZWVkIHVwIFJ0bFRpbWVUb1RpbWVGaWVsZHMuCgoJKiBwcm9ncmFtcy91bmluc3RhbGxlci9tYWluLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQ29udmVydCBhcHAgZGVzY3JpcHRpb24gZmllbGQgdG8gdW5pY29kZSBhbmQgdXNlIENQX1VOSVhDUCB3aGVuCglwcmludGluZyBpdCBvbiB0aGUgY29uc29sZS4KCgkqIHRvb2xzL3dpbmVnY2MvLmN2c2lnbm9yZSwgdG9vbHMvd2luZWdjYy9NYWtlZmlsZS5pbiwKCSAgdG9vbHMvd2luZWdjYy91dGlscy5jLCB0b29scy93aW5lZ2NjL3V0aWxzLmgsCgkgIHRvb2xzL3dpbmVnY2Mvd2luZWdjYy5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCU1lcmdlIHdpbmV3cmFwIGludG8gd2luZWdjYy4gTWFueSBjbGVhbnVwcy4KCgkqIHByb2dyYW1zL3dpbmVkYmcvZWxmLmMsIHByb2dyYW1zL3dpbmVkYmcvbW9kdWxlLmM6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCS0gZml4ZWQgRUxGIG1vZHVsZXMnIHNpemUgaW5mb3JtYXRpb24KCS0gZml4ZWQgY29udGFpbmVycycgdGVzdHMKCgkqIGRsbHMvd2luZWRvcy9wcGRldi5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJSU9fcHBfb3V0cDogQWxsb3cgdG8gc3dpdGNoIGRpcmVjdGlvbiBvZiB0aGUgcHJpbnRlciBwb3J0LgoKCSogZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYzoKCU1heGltZSBCZWxsZW5n6SA8bWF4aW1lLmJlbGxlbmdlQGxhcG9zdGUubmV0PgoJRml4IGEgcmVncmVzc2lvbiBpbiBJbWFnZUxpc3RfQ3JlYXRlIHdoZW4gY3JlYXRpbmcgYSBkaWJzZWN0aW9uLgoKCSogZGxscy9vcGVuZ2wzMi93Z2wuYzogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCVVzZSB0aGUgTlVMTCBtYXRyaXggaW5zdGVhZCBvZiBnaXZpbmcgYSBiYWRseSBmaWxsZWQgaWRlbnRpdHkgbWF0cml4LgoKCSogZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jOiBLZXZpbiBLb2x0emF1IDxrZXZpbkBwbG9wLm9yZz4KCUZpbGwgdW51c2VkIGdhcCB0byBmaXggbG9va3VwcyBwYXN0IENTSURMX0NPTk5FQ1RJT05TLgoKMjAwNC0wMi0yMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC92eGQuYywKCSAgZGxscy92bW0udnhkLy5jdnNpZ25vcmUsIGRsbHMvdm1tLnZ4ZC9NYWtlZmlsZS5pbiwKCSAgZGxscy92bW0udnhkL3ZtbS5jLCBkbGxzL3ZtbS52eGQvdm1tLnZ4ZC5zcGVjLAoJICBkbGxzL3Z3aW4zMi52eGQvdndpbjMyLmMsIGRsbHMvdndpbjMyLnZ4ZC92d2luMzIudnhkLnNwZWM6CglBbGxvdyB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIFZ4RENhbGwgZW50cnkgcG9pbnRzIHRvIGJlIG1vdmVkIHRvCglzZXBhcmF0ZSBWeEQgZGxscy4KCU1vdmVkIFZNTSBjb2RlIHRvIGEgc2VwYXJhdGUgZGxsLCBhbmQgcmVtb3ZlZCB0aGUgcmVnaXN0cnkgY2FsbHMgdG8KCWdldCByaWQgb2YgdGhlIGNvZGUgZHVwbGljYXRpb24gd2l0aCBhZHZhcGkzMi4KCgkqIHByb2dyYW1zL3dpbmV0ZXN0L2d1aS5jLCBwcm9ncmFtcy93aW5ldGVzdC9tYWluLmMsCgkgIHByb2dyYW1zL3dpbmV0ZXN0L3NlbmQuYzoKCUZlcmVuYyBXYWduZXIgPHdmZXJpQGFmYXZhbnQuZWx0ZS5odT4KCVJlcG9ydCB0aGUgZXJyb3Igc2VudCBieSB0aGUgQ0dJIHNjcmlwdC4KCU1ha2UgcHJvZ3Jlc3MgYmFyIHNlbGVjdGlvbiBleHBsaWNpdC4KCgkqIHRvb2xzL3dpbmVnY2Mvd2luZWdjYy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJUmV3cml0ZSB3aW5lZ2NjIGluIHByZXBhcmF0aW9uIGZvciBtZXJnaW5nIHdpdGggd2luZXdyYXAuCglXZSBub3cgaGF2ZSBjb21wcmVoZW5zaXZlIChhbmQgY29ycmVjdCkgb3B0aW9ucyBwYXJzaW5nLgoKCSogZGxscy9zaGRvY3Z3L3NoZG9jdndfbWFpbi5jOiBNaWtlIEhlYXJuIDxtaEBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgU0hET0NWV19EbGxHZXRWZXJzaW9uLiBJdCByZXR1cm5zIHRoZSBzYW1lIGluZm9ybWF0aW9uIGFzCgl0aGUgV2luOTgvSUU2IGltcGxlbWVudGF0aW9uIGRvZXMuCgoyMDA0LTAyLTIwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jYXBpMjAzMi9jYXAyMHd4eC5jLCBkbGxzL2NhcGkyMDMyL2NhcDIwd3h4LmgsCgkgIGRsbHMvZGRyYXcvbWFpbi5jLCBkbGxzL2dsdXQzMi9nbHV0LmMsCgkgIGRsbHMvaXBobHBhcGkvdGVzdHMvaXBobHBhcGkuYywgZGxscy9rZXJuZWwvcHJvY2Vzcy5jLAoJICBkbGxzL2tlcm5lbC90YXNrLmMsIGRsbHMva2VybmVsL3RodW5rLmMsIGRsbHMvbXN2aWRjMzIvbXN2aWRlbzEuYywKCSAgZGxscy9udGRsbC9leGNlcHRpb24uYywgZGxscy9vbGUzMi9tb25pa2VyLmMsIGRsbHMvcXVhcnR6L21haW4uYywKCSAgZGxscy9zZXR1cGFwaS9zZXR1cGNhYi5jLCBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGxmaWxlb3AuYywgZGxscy9zaGx3YXBpL29yZGluYWwuYywKCSAgZGxscy93aW4zMnMvd2luMzJzMTYuYywgZGxscy93aW5hc3BpL3dpbmFzcGkxNi5jLAoJICBkbGxzL3dpbmVkb3MvZG9zdm0uYywgZGxscy93aW5tbS9tY2lhdmkvbWNpYXZpLmMsCgkgIGRsbHMvd2lubW0vd2luZWphY2svYXVkaW8uYywgZGxscy94MTFkcnYvd2ludGFiLmMsIGxvYWRlci9nbGliYy5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIGlzc3VlcyBmb3VuZCBieSB3aW5hcGlfY2hlY2suCgoJKiBkbGxzL2NvbWN0bDMyL3N0cmluZy5jOgoJUmVtb3ZlZCBhIGNvdXBsZSBvZiB1bm5lZWRlZCBoZWxwZXIgZnVuY3Rpb25zLgoKCSogdG9vbHMvd2luZWdjYy93aW5ld3JhcC5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRml4IHR5cG8gaW50cm9kdWNlZCBkdXJpbmcgdGhlIHBhdGggc2VhcmNoIHJlb3JnYW5pemF0b24uCgoJKiB0b29scy93aW5hcGkvd2luMTYuYXBpLCB0b29scy93aW5hcGkvd2luMzIuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2NoZWNrLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2RvY3VtZW50YXRpb24ucG0sCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfbG9jYWwucG0sCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfcGFyc2VyLnBtOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIEFQSSBmaWxlcyB1cGRhdGUuCgktIE1pbm9yIGJ1ZyBmaXhlcy4KCgkqIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmM6IFVscmljaCBDemVrYWxsYSA8dWxyaWNoQGNvZGV3ZWF2ZXJzLmNvbT4KCVVzZSBkaWJzZWN0aW9ucyBmb3IgdGhlIGltYWdlcy4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJSWYgVEJTVFlMRV9FWF9ISURFQ0xJUFBFREJVVFRPTlMgaXMgc2V0IHRoZW4gaW52YWxpZGF0ZSB0aGUgYXJlYSB0aGF0CgljaGFuZ2VzIGluIGEgcmVzaXplLgoJRG9uJ3QgY2FsbCBTV1AgdW5sZXNzIHdlJ3JlIGFjdHVhbGx5IGFkanVzdGluZyBhbnl0aGluZy4KCgkqIHByb2dyYW1zL3dpbmV0ZXN0L21haW4uYzogRmVyZW5jIFdhZ25lciA8d2ZlcmlAYWZhdmFudC5lbHRlLmh1PgoJQWRkIGEgZnJlZSgpIGNhbGwgYXQgdGhlIGVuZC4KCgkqIGRsbHMveDExZHJ2L2NsaXBib2FyZC5jLCBkbGxzL3gxMWRydi9ldmVudC5jLCBkbGxzL3gxMWRydi93aW5kb3cuYywKCSAgZGxscy94MTFkcnYveDExZHJ2Lmg6CglVbHJpY2ggQ3pla2FsbGEgPHVscmljaEBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnRlZCByZW5kZXJpbmcgc3ludGhlc2l6ZWQgQklUTUFQIGFuZCBESUIgZm9ybWF0cy4KCgkqIGRsbHMva2VybmVsL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC9kZXZpY2UuYywgZGxscy9rZXJuZWwvdnhkLmMsCgkgIGZpbGVzL2ZpbGUuYywgaW5jbHVkZS9maWxlLmg6CglDcmVhdGUgcmVhbCBmaWxlIGhhbmRsZXMgZm9yIFZ4RHMgaW5zdGVhZCBvZiB1c2luZyB0aGUgc2VydmVyIGRldmljZQoJb2JqZWN0IGhhY2sgKHBhcnRseSBiYXNlZCBvbiBhIHBhdGNoIGJ5IEVyaWMgUG91ZWNoKS4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzIuc3BlYywgZGxscy9jb21jdGwzMi9zdHJpbmcuYywKCSAgZGxscy9zaGx3YXBpL3N0cmluZy5jOgoJUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCS0gSW1wbGVtZW50IHN0cmluZyBmdW5jdGlvbnMgaW4gY29tY3RsMzIuCgktIFVzZSBDb21wYXJlU3RyaW5nIGluIHNobHdhcGkgd2hlcmV2ZXIgcG9zc2libGUgaW5zdGVhZCBvZiB1Z2x5CgkgIGhlbHBlcnMuCgoJKiBkbGxzL3VzZXIvd2lucHJvYy5oLCB3aW5kb3dzL3dpbnByb2MuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglGaXJzdCBzdGVwIGluIHVzaW5nIGZhc3RlciBhcHByb2FjaCBmb3IgQTwtPlcgbWVzc2FnZSBtYXBwaW5nLgoKCSogREVWRUxPUEVSUy1ISU5UUzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVVwZGF0ZSBERVZFTE9QRVJTLUhJTlRTIHdpdGggdGhlIG5ld2x5IGFkZGVkIFZ4RHMuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglMVk5fQkVHSU5SRFJBRyBpcyBpbXBsZW1lbnRlZCBub3cuIEZpeCB0eXBvLgoKCSogZGxscy91eHRoZW1lL2RyYXcuYywgZGxscy91eHRoZW1lL21ldHJpYy5jLCBkbGxzL3V4dGhlbWUvbXNzdHlsZXMuYywKCSAgZGxscy91eHRoZW1lL21zc3R5bGVzLmgsIGRsbHMvdXh0aGVtZS9wcm9wZXJ0eS5jOgoJS2V2aW4gS29sdHphdSA8a2V2aW5AcGxvcC5vcmc+CglJbXBsZW1lbnRlZCBzeXN0ZW0gbWV0cmljIGZ1bmN0aW9ucy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL01ha2VmaWxlLmluLAoJICBkbGxzL2lmc21nci52eGQvLmN2c2lnbm9yZSwgZGxscy9pZnNtZ3IudnhkL01ha2VmaWxlLmluLAoJICBkbGxzL2lmc21nci52eGQvaWZzbWdyLmMsIGRsbHMvaWZzbWdyLnZ4ZC9pZnNtZ3IudnhkLnNwZWMsCgkgIGRsbHMva2VybmVsL2RldmljZS5jLCBkbGxzL21tZGV2bGRyLnZ4ZC8uY3ZzaWdub3JlLAoJICBkbGxzL21tZGV2bGRyLnZ4ZC9NYWtlZmlsZS5pbiwgZGxscy9tbWRldmxkci52eGQvbW1kZXZsZHIuYywKCSAgZGxscy9tbWRldmxkci52eGQvbW1kZXZsZHIudnhkLnNwZWMsIGRsbHMvbW9ub2RlYmcudnhkLy5jdnNpZ25vcmUsCgkgIGRsbHMvbW9ub2RlYmcudnhkL01ha2VmaWxlLmluLCBkbGxzL21vbm9kZWJnLnZ4ZC9tb25vZGViZy5jLAoJICBkbGxzL21vbm9kZWJnLnZ4ZC9tb25vZGViZy52eGQuc3BlYywgZGxscy92ZGhjcC52eGQvLmN2c2lnbm9yZSwKCSAgZGxscy92ZGhjcC52eGQvTWFrZWZpbGUuaW4sIGRsbHMvdmRoY3AudnhkL3ZkaGNwLmMsCgkgIGRsbHMvdmRoY3AudnhkL3ZkaGNwLnZ4ZC5zcGVjLCBkbGxzL3ZuZXRiaW9zLnZ4ZC8uY3ZzaWdub3JlLAoJICBkbGxzL3ZuZXRiaW9zLnZ4ZC9NYWtlZmlsZS5pbiwgZGxscy92bmV0Ymlvcy52eGQvdm5ldGJpb3MuYywKCSAgZGxscy92bmV0Ymlvcy52eGQvdm5ldGJpb3MudnhkLnNwZWMsIGRsbHMvdnRkYXBpLnZ4ZC8uY3ZzaWdub3JlLAoJICBkbGxzL3Z0ZGFwaS52eGQvTWFrZWZpbGUuaW4sIGRsbHMvdnRkYXBpLnZ4ZC92dGRhcGkuYywKCSAgZGxscy92dGRhcGkudnhkL3Z0ZGFwaS52eGQuc3BlYywgZGxscy92d2luMzIudnhkLy5jdnNpZ25vcmUsCgkgIGRsbHMvdndpbjMyLnZ4ZC9NYWtlZmlsZS5pbiwgZGxscy92d2luMzIudnhkL3Z3aW4zMi5jLAoJICBkbGxzL3Z3aW4zMi52eGQvdndpbjMyLnZ4ZC5zcGVjOgoJQWRkZWQgc3VwcG9ydCBmb3IgaW1wbGVtZW50aW5nIFZ4RHMgYXMgc2VwYXJhdGUgZGxscyBhbmQgbG9hZGluZyB0aGVtCglvbiBkZW1hbmQuCglNb3ZlZCBhbGwgdGhlIERldmljZUlvQ29udHJvbCBjb2RlIGludG8gdGhlIHJlc3BlY3RpdmUgVnhEIGRsbHMuCgoJKiBkb2N1bWVudGF0aW9uL3J1bm5pbmcuc2dtbDogQnJpYW4gVmluY2VudCA8dmlubkB0aGVzaGVsbC5jb20+CglSZW1vdmUgcmVmZXJlbmNlIHRvIENhbG1pcmEgZmlsZSBtYW5hZ2VyLCBhZGQgYml0IGFib3V0IFdpbmVmaWxlLgoKCSogcHJvZ3JhbXMvd2luZXRlc3QvZ3VpLmM6IEdlcmFsZCBQZmVpZmVyIDxnZXJhbGRAcGZlaWZlci5jb20+CglGaXggbm9uLXN0YW5kYXJkIGNvZGUgaW4gcmVwb3J0KCkuCgoJKiBvYmplY3RzL21ldGFmaWxlLmM6IFVscmljaCBDemVrYWxsYSA8dWxyaWNoQGNvZGV3ZWF2ZXJzLmNvbT4KCUdldCB0aGUgcmVjdGFuZ2xlIGZyb20gdGhlIGRjIGFuZCB1bmNvbW1lbnQgUGxheUVuaE1ldGFGaWxlIGluCglHZXRXaW5NZXRhRmlsZUJpdHMuCgoJKiBkbGxzL2dkaS9nZGkzMi5zcGVjLCBvYmplY3RzL3BhbGV0dGUuYzoKCVJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCUFkZCBzdHViIGltcGxlbWVudGF0aW9uIGZvciBTZXRJQ01Qcm9maWxlQSgpLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50ZWQgTElTVFZJRVdfQXBwcm94aW1hdGVWaWV3UmVjdCBmb3IgTFZTX1JFUE9SVC4KCgkqIGRsbHMveDExZHJ2L3BhbGV0dGUuYzogRmlubG8gQm95ZGUgPGZpbkBuZWVwcy5uZXQ+CglGaXggZm9yIGRlYWRsb2NrIHdoZW4gdXNpbmcgcHJpdmF0ZSBjb2xvcm1hcC4KCjIwMDQtMDItMTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBwcm9ncmFtcy93aW5ldGVzdC9ndWkuYywgcHJvZ3JhbXMvd2luZXRlc3QvbWFpbi5jLAoJICBwcm9ncmFtcy93aW5ldGVzdC9tYWtldGVzdCwgcHJvZ3JhbXMvd2luZXRlc3QvdXRpbC5jLAoJICBwcm9ncmFtcy93aW5ldGVzdC93aW5ldGVzdC5oOgoJRmVyZW5jIFdhZ25lciA8d2ZlcmlAYWZhdmFudC5lbHRlLmh1PgoJLSBjb21tYW5kIGxpbmUgaGFuZGxpbmcgKEdVSSB3aWxsIGZvbGxvdykKCS0gc3RyaXAgLmV4ZVsuc29dIGZyb20gdGVzdCBuYW1lcwoJLSB2ZXJzaW9uIDIgb3V0cHV0CgoJKiBkbGxzL3dpbm1tL3dpbmVhbHNhL21pZGkuYzogQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJUmVwbGFjZWQgdGhlIHRpbWVyIGFuZCBpdHMgY2FsbGJhY2sgYnkgYSB0aHJlYWQgZm9yIHJlY2VpdmluZyBtaWRpIGluCglldmVudHMuCglGaXhlZCB0aW1lIG9mIE1JTV9MT05HREFUQSBub3RpZmljYXRpb24uCglIYW5kbGVkIERSVk1fRVhJVCBpbiBBTFNBX21pZE1lc3NhZ2UuCgoJKiBkbGxzL29sZTMyL2lmcy5jOiBNaWtlIEhlYXJuIDxtaEBjb2Rld2VhdmVycy5jb20+CglUbyByZWR1Y2UgZGVidWdnaW5nIG5vaXNlLCBtYWtlIElNYWxsb2MzMi9JTWFsbG9jU3B5IGltcGxlbWVudGF0aW9ucwoJb3V0cHV0IHRvIHRoZSBuZXcgb2xlbWFsbG9jIGRlYnVnIGNoYW5uZWwuCgoJKiBkbGxzL21zdmNydC9maWxlLmMsIGRsbHMvbXN2Y3J0L3NjYW5mLmMsIGRsbHMvbXN2Y3J0L3NjYW5mLmgsCgkgIGluY2x1ZGUvbXN2Y3J0L3N0ZGlvLmg6CglGaXhlZCB2YXJhcmdzIGhhbmRsaW5nIGluIHRoZSBzY2FuZiBmdW5jdGlvbnMgKHNwb3R0ZWQgYnkgRXJpYwoJUG91ZWNoKS4KCgkqIGluY2x1ZGUvd2ludXNlci5oOiBLZXZpbiBLb2x0emF1IDxrZXZpbkBwbG9wLm9yZz4KCURlZmluZSBTUElfKiB2YWx1ZXMgaW50cm9kdWNlZCBpbiBYUC4KCgkqIGRsbHMveDExZHJ2L2NsaXBib2FyZC5jOgoJVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2guY3pla2FsbGFAdXRvcm9udG8uY2E+CglBZHZhbmNlIGluZGV4IGFzIHdlIHNldCB0aGUgYXRvbSB2YWx1ZXMuCgoJKiBkbGxzL21hcGkzMi9tYXBpMzIuc3BlYzogTWlrZSBIZWFybiA8bWhAY29kZXdlYXZlcnMuY29tPgoJVGhlIHByZXNlbmNlIG9mIEZHZXRDb21wb25lbnRQYXRoIGlzIHVzZWQgdG8gY2hlY2sgaWYgbWFwaTMyLmRsbCBpcwoJdGhlIE91dGxvb2sgdmVyc2lvbiBvciBub3QuIEl0J3MgY29tbW9uIHRvIEdldFByb2NBZGRyZXNzIGZvciBpdCwgc28KCWxldCdzIG5vdCBleHBvcnQgaXQgYXMgb3RoZXJ3aXNlIGFwcHMgbWF5IGNhbGwgaXQuCgoyMDA0LTAyLTE3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogdG9vbHMvd2luZWR1bXAvTWFrZWZpbGUuaW4sIHRvb2xzL3dpbmVkdW1wL3dpbmVkdW1wLm1hbjoKCU1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuZGU+CglBZGRlZCB3aW5lZHVtcCBtYW4gcGFnZSwgaGVhdmlseSBiYXNlZCBvbiB0aGUgUkVBRE1FIGZpbGUuCgoJKiBkbGxzL3NobHdhcGkvTWFrZWZpbGUuaW4sIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsCgkgIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWMsIGRsbHMvc2hsd2FwaS9zdG9wd2F0Y2guYywKCSAgZGxscy9zaGx3YXBpL3N0cmluZy5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCVN0dWIgdGhlIHN0b3B3YXRjaCBBUEkuCglJbXBsZW1lbnQgRG9lc1N0cmluZ1JvdW5kVHJpcFcsQDM3MS0zLEAzOTIuCglNb3ZlIGEgY291cGxlIG9mIHN0cmluZyBmdW5jdGlvbnMgaW50byBzdHJpbmcuYwoKCSogZGxscy9zZXR1cGFwaS9zdHVicy5jOiBGaXhlZCBhIHRyYWNlLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBGYWJpYW4gQ2VuZWRlc2UgPENlbmVkZXNlQGluZGVsLmNoPgoJTGlzdFZpZXcgc2hvdWxkIGJlaGF2ZSBpbiBPV05FUkRSQVcgYXMgaW4gRlVMTFJPV1NFTEVDVC4gVGhpcyBhbGxvd3MKCXRvIHNlbGVjdCBjZWxscyBub3QgaW4gdGhlIGZpcnN0IGNvbHVtbiBpbiBSRVBPUlQgbW9kZSB3aXRoIE9XTkVSRFJBVwoJc3R5bGUgc2V0LgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMi5zcGVjLCBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYzoKCVJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CglGb3J3YXJkIHNvbWUgd3JhcHBlciBmdW5jdGlvbnMgc2luY2Ugd2UgZG9uJ3QgY2FyZSBhYm91dCBjb21wYXRpYmlsaXR5Cgl3aXRoIFdpbjk4IGluIHRoaXMgY2FzZS4KCgkqIGRsbHMva2VybmVsL2luc3RyLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJU3VwcG9ydCBlbXVsYXRpb24gb2YgdGhlIHByaXZpbGVnZWQgbW92IGRyNyxlYXggaW5zdHJ1Y3Rpb24uCgoJKiBkbGxzL21zaS9tc2kuYywgZGxscy9tc2kvbXNpLnNwZWMsIGRsbHMvc2V0dXBhcGkvc2V0dXBhcGkuc3BlYywKCSAgZGxscy9zZXR1cGFwaS9zdHVicy5jLCBpbmNsdWRlL3NldHVwYXBpLmg6CglDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglBZGRlZCBzb21lIHN0dWJzLgoKCSogZGxscy91eHRoZW1lL3N5c3RlbS5jOiBLZXZpbiBLb2x0emF1IDxrZXZpbkBwbG9wLm9yZz4KCUNvcnJlY3RlZCBtZXRob2Qgb2YgY3JlYXRpbmcgcmVnaXN0cnkga2V5cywgYm90aCB0byBmaXggYW4gaXNzdWUgd2hlcmUKCXRoZXkgd2VyZSBub3QgY3JlYXRlZCBhbmQgdG8gYWN0IG1vcmUgbGlrZSBXaW5kb3dzLgoKCSogZGxscy9jb21jdGwzMi9NYWtlZmlsZS5pbiwgZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmMsCgkgIGRsbHMvY29tY3RsMzIvc3RyaW5nLmM6CglSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJTW92ZSBzdHJpbmcgZnVuY3Rpb25zIHRvIHNlcGFyYXRlIGZpbGUuCgoJKiBNYWtlLnJ1bGVzLmluLCBkbGxzL01ha2VkbGwucnVsZXMuaW4sIGRsbHMvZ2RpL01ha2VmaWxlLmluLAoJICBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwgZGxscy9zaGVsbDMyL01ha2VmaWxlLmluLAoJICBkbGxzL3VzZXIvTWFrZWZpbGUuaW4sIHRvb2xzL3dpbmVidWlsZC9idWlsZC5oLAoJICB0b29scy93aW5lYnVpbGQvaW1wb3J0LmMsIHRvb2xzL3dpbmVidWlsZC9tYWluLmMsCgkgIHRvb2xzL3dpbmVidWlsZC9wYXJzZXIuYywgdG9vbHMvd2luZWJ1aWxkL3V0aWxzLmMsCgkgIHRvb2xzL3dpbmVidWlsZC93aW5lYnVpbGQubWFuLmluOgoJQWRkZWQgc3VwcG9ydCBmb3IgYnVpbGRpbmcgYSBkbGwgZnJvbSBhIC5kZWYgZmlsZSBmb3IgY2FzZXMgd2hlcmUgd2UKCWRvbid0IHdhbnQgdG8gd3JpdGUgYSBmdWxsIC5zcGVjLgoJUmVuYW1lZCAtLXNwZWMgb3B0aW9uIHRvIC0tZGxsIGZvciBjb25zaXN0ZW5jeS4KCgkqIGNvbnRyb2xzL21lbnUuYywgZGxscy91c2VyL3Rlc3RzL21zZy5jLCBpbmNsdWRlL3dpbi5oLCB3aW5kb3dzL3dpbi5jOgoJSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCVNldE1lbnUgc2hvdWxkIGFsd2F5cyBjYWxsIFNldFdpbmRvd1BvcyB3aGV0aGVyIHRoZSB3aW5kb3cgaXMgdmlzaWJsZQoJb3Igbm90LiBIb3dldmVyIHdlIHNob3VsZG4ndCBjYWxsIFNXUCBmcm9tIENyZWF0ZVdpbmRvd0V4LgoJQWRkZWQgYSB0ZXN0IGZvciB0aGlzIGJlaGF2aW91ci4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jLCBpbmNsdWRlL2NvbW1jdHJsLmg6CglSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJLSBGaXggc29tZSB0cmFjZXMuCgktIFRoZSBUQk1fR0VUKkhPVExJU1QgZnVuY3Rpb25zIHRha2UgaW1hZ2VsaXN0IElEIGluIHdQYXJhbS4KCS0gSW1wbGVtZW50IFRCTV9HRVRTVFJJTkd7QSxXfS4KCS0gSW1wbGVtZW50IHVuZG9jdW1lbnRlZCAweDQ2MiBtZXNzYWdlLgoKCSogcHJvZ3JhbXMvd2luZWNmZy9Fbi5yYywgcHJvZ3JhbXMvd2luZWNmZy9saWJyYXJpZXMuYywKCSAgcHJvZ3JhbXMvd2luZWNmZy9yZXNvdXJjZS5oOgoJUm9iZXJ0IHZhbiBIZXJrIDxyb2JlcnRAcm9iZXJ0dmFuaGVyay5ubD4KCUFsbG93IHVzZXIgdG8gY2hvb3NlICJuYXRpdmUiLCAibmF0aXZlLGJ1aWx0aW4iLCAiYnVpbHRpbiIsCgkiYnVpbHRpbixuYXRpdmUiIGFuZCAiZGlzYWJsZSIgZm9yIGVhY2ggbGlicmFyeSB0aGV5IG92ZXJyaWRlLgoKCSogZGxscy9vbGVhdXQzMi92YXJpYW50LmM6IEZhYmlhbiBDZW5lZGVzZSA8Q2VuZWRlc2VAaW5kZWwuY2g+CglBY2NlcHQgVlRfQk9PTCBtaXhlZCB3aXRoIGFub3RoZXIgdHlwZSBhcyB2YWxpZCBjb21iaW5hdGlvbiBpbgoJVmFyT3IvVmFyQW5kLgoKCSogaW5jbHVkZS9zaGx3YXBpLmg6IEZpeGVkIEludGxTdHJFcVdvcmtlckEvVyBwcm90b3R5cGVzLgoKCSogZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYywgZGxscy9zaGx3YXBpL3N0cmluZy5jLAoJICBkbGxzL3NobHdhcGkvdGVzdHMvc3RyaW5nLmM6CglSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJLSBBZGQgSW50bFN0ckVxV29ya2VyQS9XLgoJLSBTdHJDbXAgdGVzdHMuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYzoKCVJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CglEb2N1bWVudGF0aW9uIHVwZGF0ZS4KCgkqIGRsbHMvbnRkbGwvdmlydHVhbC5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJV3JpdGUgc2VjdGlvbiBhY2Nlc3MgYWxzbyBhc3N1bWVzIHJlYWQgYWNjZXNzLgoKCSogZGxscy91eHRoZW1lL21zc3R5bGVzLmMsIGRsbHMvdXh0aGVtZS9tc3N0eWxlcy5oLAoJICBkbGxzL3V4dGhlbWUvc3lzdGVtLmM6CglLZXZpbiBLb2x0emF1IDxrZXZpbkBwbG9wLm9yZz4KCUtlZXAgdHJhY2sgb2YgdGhlbWUgZmlsZW5hbWUgd2l0aGluIFRIRU1FX0ZJTEUuCgoyMDA0LTAyLTE2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9NYWtlZGxsLnJ1bGVzLmluOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFsbG93IHNwZWNpZmljYXRpb24gb2YgIkRMTE1PREU9bmF0aXZlIiBmb3IgbmF0aXZlIGRsbHMuCgoJKiBkbGxzL01ha2V0ZXN0LnJ1bGVzLmluLCBwcm9ncmFtcy9NYWtlcHJvZy5ydWxlcy5pbiwKCSAgcHJvZ3JhbXMvYXZpdG9vbHMvTWFrZWZpbGUuaW4sIHRvb2xzL3dpbmVidWlsZC9tYWluLmMsCgkgIHRvb2xzL3dpbmVidWlsZC93aW5lYnVpbGQubWFuLmluOgoJUmVuYW1lZCAtLWV4ZS1tb2RlIG9wdGlvbiB0byAtLW1vZGUgbm93IHRoYXQgaXQgY2FuIGJlIHVzZWQgZm9yIGRsbHMKCXRvby4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzogTWlrZSBIZWFybiA8bWlrZUB0aGVvcmV0aWMuY29tPgoJR3JvdyB0aGUgdHJlZXZpZXcgY29udHJvbCBleHBhbmRlciBidXR0b24gYnkgMXB4IGluIGVhY2ggZGlyZWN0aW9uIHRvCgltYXRjaCB0aGUgbmF0aXZlIGxvb2suCgoJKiBkbGxzL2RkcmF3L3Rlc3RzL01ha2VmaWxlLmluOiBTYW1pIEFhcmlvIDxzYW1pLmFhcmlvQHN1cmZldS5maT4KCU5vIG5lZWQgdG8gbGluayBhZ2FpbnN0IHRoZSB1dWlkIGxpYnJhcnkuCgoJKiBkbGxzL3gxMWRydi90ZXh0LmMsIGRsbHMveDExZHJ2L3hyZW5kZXIuYzoKCVRoZSBjbGlwIHJlY3RhbmdsZSBmb3IgRXh0VGV4dE91dCBpcyBpbiBsb2dpY2FsIGNvb3Jkcy4KCgkqIGRsbHMvaWNjdmlkL2ljY3ZpZC5jLCBkbGxzL21zdmlkYzMyL21zdmlkZW8xLmMsCgkgIGRsbHMvbXN2aWRlby9tc3ZpZGVvX21haW4uYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglUYWtlIHBhbGV0dGUgaW50byBhY2NvdW50IHdoaWxlIHJlc3BvbmRpbmcgb24KCUlDTV9ERUNPTVBSRVNTX0dFVEZPUk1BVC4KCgkqIERFVkVMT1BFUlMtSElOVFM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglBZGQgdGhlIG5ldyBSU0EgZW5jcnlwdGlvbiBETEwuCgoJKiBkbGxzL3V4dGhlbWUvTWFrZWZpbGUuaW4sIGRsbHMvdXh0aGVtZS9kcmF3LmMsCgkgIGRsbHMvdXh0aGVtZS9tc3N0eWxlcy5jLCBkbGxzL3V4dGhlbWUvbXNzdHlsZXMuaCwKCSAgZGxscy91eHRoZW1lL3Byb3BlcnR5LmM6CglLZXZpbiBLb2x0emF1IDxrZXZpbkBwbG9wLm9yZz4KCUltcGxlbWVudCBEcmF3VGhlbWVCYWNrZ3JvdW5kRXgsIERyYXdUaGVtZVRleHQsIEdldFRoZW1lVGV4dEV4dGVudC4KCgkqIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglObyBuZWVkIHRvIGNoZWNrIGZvciBEbGxFbnRyeVBvaW50IHN0eWxlIGNvbnN0YW50cy4KCgkqIGRsbHMvd2luaW5ldC9mdHAuYzogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCVN0b3JlIHBvaW50ZXJzIGluIHRoZSBpbnRlcm5hbCBzdHJ1Y3R1cmVzIGFuZCBub3QgaGFuZGxlcy4KCgkqIGRsbHMvZGRyYXcvdGVzdHMvZGRyYXdtb2Rlcy5jOiBTYW1pIEFhcmlvIDxzYW1pLmFhcmlvQHN1cmZldS5maT4KCUFkZGVkIHN1cmZhY2UgdGVzdHMuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUFkZCBzZWNvbmRhcnkgYnVmZmVyIGFycmF5LgoKMjAwNC0wMi0xMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIEFOTk9VTkNFLCBDaGFuZ2VMb2csIFZFUlNJT04sIGNvbmZpZ3VyZTogUmVsZWFzZSAyMDA0MDIxMy4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KMjAwNC0wMi0xMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHRvb2xzL3dpbmVidWlsZC9idWlsZC5oLCB0b29scy93aW5lYnVpbGQvaW1wb3J0LmMsCgkgIHRvb2xzL3dpbmVidWlsZC9tYWluLmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYywKCSAgdG9vbHMvd2luZWJ1aWxkL3dpbmVidWlsZC5tYW4uaW46CglBZGRlZCBuYXRpdmUgbW9kZSBkbGwgc3VwcG9ydCAoYmFzZWQgb24gYSBwYXRjaCBieSBNYXJjdXMgTWVpc3NuZXIpLgoKCSogbGlicy9wb3J0L2dldG9wdC5jLCBsaWJzL3BvcnQvZ2V0b3B0MS5jOgoJRG9uJ3QgYnVpbGQgZ2V0b3B0IGF0IGFsbCBpZiBpdCdzIG5vdCBuZWVkZWQuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglXb3JrIHRvd2FyZCBwcm9wZXJseSB1cGRhdGluZyB0aGUgU2VsZWN0aW9uTWFyayB3aGVuIHRoZSBzZWxlY3RlZAoJc3RhdGUgY2hhbmdlZCBpbnNpZGUgYSBsaXN0Ym94LgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglFbmFibGUgaGFyZHdhcmUgc2Vjb25kYXJ5IGJ1ZmZlciBzdXBwb3J0IG9uIGNhcmRzIHRoYXQgc3VwcG9ydCBpdCAoU0IKCWxpdmUgYW5kIGF1ZGlneSkuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCVNhdmUgb3NzIGRldmljZSBmZCBhbmQgY3JlYXRpb24gZmxhZ3MgaW4gZHNvdW5kIGJ1ZmZlciBvYmplY3QuCgoJKiBkbGxzL2dkaS9nZGkzMi5zcGVjLCBkbGxzL3R0eWRydi93bmQuYzoKCUdldCByaWQgb2YgYSBmZXcgMTYtYml0IGV4cG9ydHMgaW4gZ2RpMzIuCgoJKiBkbGxzL3NoZG9jdncvc2hkb2N2d19tYWluLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVVzZSB0aGUgTW96aWxsYSBBY3RpdmUgWCBjb250cm9sIGluIHBsYWNlIG9mIHRoZSBJRTYgQWN0aXZlIFgKCWNvbnRyb2wuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCVNwbGl0IGJ1ZmZlciBjcmVhdGlvbiBmdW5jdGlvbiBpbnRvIHByaW1hcnkgYW5kIHNlY29uZGFyeSBidWZmZXIKCWNyZWF0aW9uIGZ1bmN0aW9ucy4gU2Vjb25kYXJ5IGJ1ZmZlciBjcmVhdGlvbiBmdW5jdGlvbiBpcyBzdHViYmVkCglvdXQuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgd2luZWRlZmF1bHQucmVnLCBkbGxzL01ha2VmaWxlLmluLAoJICBkbGxzL3JzYWJhc2UvLmN2c2lnbm9yZSwgZGxscy9yc2FiYXNlL01ha2VmaWxlLmluLAoJICBkbGxzL3JzYWJhc2UvbWFpbi5jLCBkbGxzL3JzYWJhc2UvcnNhYmFzZS5zcGVjOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IGVub3VnaCBvZiByc2FiYXNlLmRsbCB0byBnZXQgU3RlYW0gdG8gbG9naW4uCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCU1vdmVkIGRzb3VuZCBtbWFwIG1hcHBpbmcgaW5mbyBpbnRvIGRzb3VuZCBvYmplY3RzLgoKCSogZGxscy93aW5tbS93aW5lYWxzYS9hdWRpby5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJVXNlIHBpcGUgc3luYyBjb2RlIGZyb20gd2luZW9zcy4KCgkqIGRsbHMvZ2RpL2dkaV9wcml2YXRlLmgsIGRsbHMvd2luZXBzL2NsaXBwaW5nLmMsIGRsbHMveDExZHJ2L2JpdGJsdC5jLAoJICBkbGxzL3gxMWRydi9jbGlwcGluZy5jLCBkbGxzL3gxMWRydi9ncmFwaGljcy5jLCBkbGxzL3gxMWRydi9pbml0LmMsCgkgIGRsbHMveDExZHJ2L3RleHQuYywgZGxscy94MTFkcnYveDExZHJ2LmgsIGRsbHMveDExZHJ2L3hyZW5kZXIuYywKCSAgaW5jbHVkZS9nZGkuaCwgb2JqZWN0cy9jbGlwcGluZy5jLCBvYmplY3RzL2RjLmM6CglNb3ZlZCBoR0NDbGlwUmduIGhhbmRsaW5nIHRvIHRoZSBncmFwaGljcyBkcml2ZXIuCgoJKiBkbGxzL2Rzb3VuZC9wcmltYXJ5LmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglQcm9wZXJseSByZWxlYXNlIGhhcmR3YXJlIHByaW1hcnkgYnVmZmVyIHdoZW4gY2hhbmdpbmcgZm9ybWF0cy4KCgkqIGRsbHMvd2lubW0vd2luZWFsc2EvYXVkaW8uYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCURvbid0IG5lZWQgcHJpbWFyeSBsb2NrLiBGaXhlcyBlcnJvciBpbiBkc291bmQgdGVzdHMgaW4gaW50ZXJhY3RpdmUKCW1vZGUuCgoJKiBkb2N1bWVudGF0aW9uL2dldHRpbmcuc2dtbDogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUZpeCBsb2NhdGlvbiBvZiB0aGUgRnJlZUJTRCBwb3J0ICh0aGFua3MgdG8gbGF6eWJvbmVzKS4KCgkqIHRvb2xzL3dpbmVnY2Mvd2luZXdyYXAuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUZvciBlYWNoIGxpYiBkaXIsIGxvb2sgZm9yIC5zbywgLmRlZi4gYW5kIC5hIGZpbGVzLCBpbnN0ZWFkIG9mIHRoZQoJb3RoZXIgd2F5IGFyb3VuZC4KCgkqIGluY2x1ZGUvZ2RpLmgsIG9iamVjdHMvYml0bWFwLmMsIG9iamVjdHMvZGMuYywgb2JqZWN0cy9mb250LmM6CglSZW1vdmVkIGEgY291cGxlIG9mIHVudXNlZCBmaWVsZHMgaW4gdGhlIERDIHN0cnVjdHVyZS4KCgkqIERFVkVMT1BFUlMtSElOVFM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglSZW1vdmUgdGhlIG9ic29sZXRlIGdyYXBoaWNzLyBkaXJlY3RvcnkuCglVc2UgdGhlIHByZWZlcmVkIG1ldGhvZCBkb2N1bWVudGluZyBzdHlsZS4KCVJlbW92ZSBpcnJlbGV2YW50IHNlY3Rpb24gYWJvdXQgaW50ZXJuYWwgbmFtZXMuCgoJKiBkbGxzL3gxMWRydi9iaXRibHQuYywgZGxscy94MTFkcnYvdGV4dC5jLCBkbGxzL3gxMWRydi94cmVuZGVyLmM6CglHZXQgcmlkIG9mIGEgZmV3IG1vcmUgcmVmZXJlbmNlcyB0byB0aGUgREMgc3RydWN0dXJlLgoKCSogZGxscy94MTFkcnYvZGVza3RvcC5jLCBkbGxzL3gxMWRydi93aW5wb3MuYywgZGxscy94MTFkcnYveDExZHJ2LmgsCgkgIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmMsIGRsbHMveDExZHJ2L3hyYW5kci5jLAoJICBkbGxzL3gxMWRydi94dmlkbW9kZS5jOgoJQWxleCBQYXNhZHluIDxhanBAbWFpbC51dGV4YXMuZWR1PgoJVXBkYXRlIHRoZSBkZXNrdG9wIHdpbmRvdyBzaXplIGFuZCBzZW5kIFdNX0RJU1BMQVlDSEFOR0Ugb24gcmVzb2x1dGlvbgoJY2hhbmdlcy4KCjIwMDQtMDItMTIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9kaW5wdXQvTWFrZWZpbGUuaW4sCgkgIGRsbHMvZGlucHV0L2pveXN0aWNrX2xpbnV4LmMsIGRsbHMvZGlucHV0L2pveXN0aWNrX2xpbnV4aW5wdXQuYywKCSAgZGxscy9kaW5wdXQva2V5Ym9hcmQuYywgZGxscy9kaW5wdXQvbW91c2UuYzoKCVdlIGRvbid0IHJlYWxseSBuZWVkIHN1YmRpcmVjdG9yaWVzIGluIGRsbHMvZGlucHV0LgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvZ2RpL01ha2VmaWxlLmluLCBkbGxzL2dkaS9iaXRibHQuYywKCSAgZGxscy9nZGkvbWFwcGluZy5jLCBkbGxzL2dkaS9wYWludGluZy5jLCBkbGxzL2dkaS9wYXRoLmM6CglNb3ZlZCByZW1haW5pbmcgZmlsZXMgZnJvbSBncmFwaGljcy8gdG8gZGxscy9nZGkuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgbGlicy9NYWtlbGliLnJ1bGVzLmluLAoJICBsaWJzL3VuaWNvZGUvTWFrZWZpbGUuaW4sIGxpYnMvdW5pY29kZS93aW5lX3VuaWNvZGUubWFwLAoJICBsaWJzL3dpbmUvTWFrZWZpbGUuaW4sIGxpYnMvd2luZS93aW5lLm1hcDoKCUFkZGVkIHZlcnNpb24gc2NyaXB0cyBmb3IgbGlid2luZSBhbmQgbGlid2luZV91bmljb2RlLgoKCSogZG9jdW1lbnRhdGlvbi9mYXEuc2dtbDoKCUEgMC45IHJlbGVhc2UgaW4gMjAwMyBzZWVtcyB1bmxpa2VseSBhdCB0aGlzIHBvaW50IChzcG90dGVkIGJ5IENsYXkKCUFzaGJ5KS4KCgkqIHdpbmRvd3Mvc3lzcGFyYW1zLmMsIHdpbmVkZWZhdWx0LnJlZzoKCUp1c3RpbiBDaGV2cmllciA8YnVybmVyMUBob3RtYWlsLmNvbT4KCUltcGxlbWVudGVkIFNQSV9HRVRHUkFESUVOVENBUFRJT05TLCBTUElfR0VURk9OVFNNT09USElORywKCVNQSV9HRVRIT1RUUkFDS0lORywgU1BJX0dFVExJU1RCT1hTTU9PVEhTQ1JPTExJTkcgYW5kCglTUElfR0VUS0VZQk9BUkRDVUVTIHN5c3RlbSBwYXJhbWV0ZXIgY2FsbHMuCgoJKiBpbmNsdWRlL3dpbmUvcG9ydC5oOiBTdGV2ZW4gRWR3YXJkcyA8c3RldmVuX2VkNDE1M0B5YWhvby5jb20+CglXaW5kb3dzIHBvcnRpbmcgZml4IC0gRGVmaW5lIE9fTk9OQkxPQ0sgaWYgbm90IGRlZmluZWQuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglGaXggYSBUUkFDRS4KCgkqIGRsbHMvZ2RpL2ZyZWV0eXBlLmMsIGRsbHMvZ2RpL2dkaV9wcml2YXRlLmgsIG9iamVjdHMvZm9udC5jOgoJSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUdldENoYXJBQkNXaWR0aHMgcmV0dXJucyB0aGUgd2lkdGhzIG9mIHVucm90YXRlZCBnbHlwaHMgbGlrZQoJR2V0Q2hhcldpZHRoIGFscmVhZHkgZG9lcy4KCgkqIGRsbHMvd2luZXBzL2VzY2FwZS5jLCBkbGxzL3dpbmVwcy9ncmFwaGljcy5jLCBkbGxzL3dpbmVwcy9wcy5jLAoJICBkbGxzL3dpbmVwcy9wc2Rydi5oOgoJSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUJyYWNrZXQgY29kZSBpbnNlcnRlZCBieSB0aGUgUEFTU1RIUk9VR0ggZXNjYXBlcyBieQoJJSV7QmVnaW4sRW5kfURvY3VtZW50LiBUaGlzIHN0b3BzIGN1cHMnIHBzdG9wcyBiZWNvbWluZyBjb25mdXNlZCBpZiBpdAoJY29tZXMgYWNyb3NzIGFuICUlRU9GIGluIGFuIGltcG9ydGVkIGVwcyBmaWxlLgoJVGhlIGhhY2sgaW4gUFNEUlZfUmVjdGFuZ2xlIHRvIGZpeCBlcHMgZmlsZXMgaW4gb2ZmaWNlMmsgdHVybnMgb3V0IHRvCgliZSBhbG1vc3Qgd2hhdCBXaW5kb3dzIHJlYWxseSBkb2VzIC0gdXBkYXRlIHRoZSBjb2RlIGFuZCB0aGUgY29tbWVudAoJdG8gbWF0Y2ggV2luZG93cyBiZWhhdmlvdXIgbW9yZSBwcmVjaXNlbHkuCgoJKiBkbGxzL3dpbmVwcy9kb3dubG9hZC5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJTWFrZSBzdXJlIHRoYXQgdGhlIGZvbnQgcHBlbSBpcyBhbHdheXMgcG9zaXRpdmUuICBUaGFua3MgdG8gZ3NsaW5rLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglEbyBub3QgbGVhdmUgbm90IGluaXRpYWxpemVkIGZpZWxkcyBpbiB0aGUgc3RydWN0dXJlIHBhc3NlZCB0bwoJU2hlbGxFeGVjdXRlRXhXMzIuCgoJKiBkbGxzL3NoZWxsMzIvc2hsZXhlYy5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJVHJhbnNsYXRlIHRoZSByZXR1cm5lZCBoSW5zdEFwcCBmcm9tIHRoZSB1bmljb2RlIHdvcmtlciBmdW5jdGlvbi4KCgkqIGRsbHMva2VybmVsL3N5bmMuYzogRGF2aWQgSGFtbWVydG9uIDxkYXZpZEB0cmFuc2dhbWluZy5jb20+CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglDb21wbGV0ZWQgUGVla05hbWVkUGlwZSBpbXBsZW1lbnRhdGlvbi4KCgkqIHdpbmVkZWZhdWx0LnJlZzogUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCS0gQWRkZWQgTXkgQ29tcHV0ZXIuCgktIFVwZGF0ZWQgaW5zdGFsbGVkIERYIFZlcnNpb24uCgoJKiBkbGxzL2dkaS9NYWtlZmlsZS5pbiwgZGxscy9nZGkvZGlzcGRpYi5jLCBkbGxzL2dkaS9kcml2ZXIuYywKCSAgZGxscy9nZGkvZW52LmMsIGRsbHMvZ2RpL2dkaTE2LmM6CglNb3ZlZCBzb21lIGNvZGUgb3V0IG9mIHRoZSBncmFwaGljcy8gZGlyZWN0b3J5IGludG8gZGxscy9nZGkuCgoJKiBkbGxzL3VzZXIvdGVzdHMvLmN2c2lnbm9yZSwgZGxscy91c2VyL3Rlc3RzL01ha2VmaWxlLmluLAoJICBkbGxzL3VzZXIvdGVzdHMvZGlhbG9nLmMsIHdpbmRvd3MvZGlhbG9nLmM6CglCaWxsIE1lZGxhbmQgPGJpbGxtZWRsYW5kQG1lcmN1cnlzcGVlZC5jb20+CglBZGRlZCB0aGUgYXV0b21hdGljIHRhYmJpbmcgaW4gSXNEaWFsb2dNZXNzYWdlLgoJQWRkZWQgY29ycmVjdGlvbnMgdG8gR2V0TmV4dFRhYi9Hcm91cEl0ZW0uCglJbmNsdWRlZCB0ZXN0cy4KCgkqIGRsbHMva2VybmVsL2ZsYXR0aHVuay5oLCBkbGxzL2tlcm5lbC90aHVuay5jOgoJR2V0IHJpZCBvZiB0aGUgZmxhdHRodW5rLmggaGVhZGVyLgoKCSogY29udHJvbHMvZWRpdC5jLCBjb250cm9scy9tZW51LmMsIGRsbHMvY29tbWRsZy9jb2xvcmRsZzE2LmMsCgkgIGRsbHMvY29tbWRsZy9maWxlZGxnMTYuYywgZGxscy9jb21tZGxnL2ZpbmRkbGcuYywKCSAgZGxscy9jb21tZGxnL2ZvbnRkbGcxNi5jLCBkbGxzL29wZW5nbDMyL3dnbC5jLCBkbGxzL3VzZXIvdXNlcl9tYWluLmMsCgkgIGRsbHMvdXNlci93aW5wcm9jLmgsIGluY2x1ZGUvdXNlci5oLCB3aW5kb3dzL2NsYXNzLmMsCgkgIHdpbmRvd3MvY3Vyc29yaWNvbi5jLCB3aW5kb3dzL21kaS5jLCB3aW5kb3dzL21zZ2JveC5jOgoJQXZvaWQgYSBmZXcgbW9yZSBHZXRNb2R1bGVIYW5kbGUgY2FsbHMuCgoJKiB0b29scy93aWRsL3BhcnNlci55OiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCURvbid0IGFkZCBpbXBvcnRlZCBjb25zdHJ1Y3RzIHRvIGFueSB0eXBlbGliIG91dHB1dCBieSBkZWZhdWx0LgoKCSogZGxscy9rZXJuZWwvZG9zbWVtLmMsIGRsbHMva2VybmVsL2Zvcm1hdF9tc2cuYywKCSAgZGxscy9rZXJuZWwva2VybmVsX21haW4uYywgZGxscy9rZXJuZWwva2VybmVsX3ByaXZhdGUuaCwKCSAgZGxscy9rZXJuZWwvbG9jYWxlLmMsIGRsbHMva2VybmVsL25lX3NlZ21lbnQuYywKCSAgZGxscy9rZXJuZWwvcHJvY2Vzcy5jLCBkbGxzL2tlcm5lbC90aHVuay5jLCBkbGxzL2tlcm5lbC90b29saGVscC5oOgoJU3RvcmUgdGhlIGtlcm5lbDMyIG1vZHVsZSBoYW5kbGUgZ2xvYmFsbHkgdG8gYXZvaWQgc29tZQoJR2V0TW9kdWxlSGFuZGxlIGNhbGxzIHRoYXQgY2FuIGNhdXNlIGRlYWRsb2NrcyB3aXRoIHRoZSBsb2FkZXIKCXNlY3Rpb24uCglNb3ZlZCBzb21lIDE2LWJpdCBkZWZpbml0aW9ucyBvdXQgb2Yga2VybmVsX3ByaXZhdGUuaC4KCjIwMDQtMDItMTEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBsb2FkZXIvcHRocmVhZC5jOiBCZXR0ZXIgZml4IGZvciB0aGUgdGhyZWFkIGV4aXQgcmFjZSBvbiBwdGhyZWFkcy4KCgkqIERFVkVMT1BFUlMtSElOVFM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglEb2N1bWVudCBmb3VyIG5ldyBkbGxzOiBkc3dhdmUsIGljY3ZpZCwgbXN2Y3J0NDAsIGFuZCBtc3ZpZGMzMi4KCgkqIHRvb2xzL3dpZGwvcGFyc2VyLmwsIHRvb2xzL3dpZGwvcGFyc2VyLnksIHRvb2xzL3dpZGwvd2lkbHR5cGVzLmg6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVBhcnNlIHRoZSBbaW5wdXRfc3luY10gYXR0cmlidXRlLgoKCSogZGxscy9kZHJhdy9kc3VyZmFjZS9kaWIuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVRoZXJlIGlzIG5vIHBvaW50IGluIHNwZWNpZnlpbmcgYm90aCBNRU1fUkVTRVJWRSBhbmQgTUVNX0NPTU1JVCBmb3IKCVZpcnR1YWxBbGxvYy4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQUZNVF9BQzMgbWlnaHQgYmUgbm90IGRlZmluZWQgaW4gdGhlIHN5c3RlbSBoZWFkZXJzLgoKCSogZGxscy9udGRsbC92aXJ0dWFsLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBdm9pZCBkb3VibGUgY2hlY2tpbmcgZnJlZSB0eXBlIGZsYWdzIGluIE50RnJlZVZpcnR1YWxNZW1vcnkuCgoJKiB0b29scy93aW5lYnVpbGQvYnVpbGQuaCwgdG9vbHMvd2luZWJ1aWxkL2ltcG9ydC5jLAoJICB0b29scy93aW5lYnVpbGQvbWFpbi5jLCB0b29scy93aW5lYnVpbGQvcGFyc2VyLmMsCgkgIHRvb2xzL3dpbmVidWlsZC9yZXMxNi5jLCB0b29scy93aW5lYnVpbGQvcmVzMzIuYywKCSAgdG9vbHMvd2luZWJ1aWxkL3NwZWMxNi5jLCB0b29scy93aW5lYnVpbGQvc3BlYzMyLmM6CglTdG9yZSBhbGwgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGN1cnJlbnQgZGxsIGluIGEgc3RydWN0dXJlIGluc3RlYWQgb2YKCXVzaW5nIGdsb2JhbCB2YXJpYWJsZXMgdG8gbWFrZSBpdCBlYXNpZXIgdG8gcmV1c2UgdGhlIHBhcnNpbmcKCXJvdXRpbmVzLgoKCSogZGxscy9udGRsbC92aXJ0dWFsLmM6CglEb24ndCByZXF1ZXN0IFBST1RfRVhFQyBwZXJtaXNzaW9ucyB3aGVuIG1hcHBpbmcgYW4gaW1hZ2UgZmlsZSB0bwoJYXZvaWQgcHJvYmxlbXMgb24gbm9leGVjIGZpbGVzeXN0ZW1zIHdpdGgga2VybmVsIDIuNi4KCgkqIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLAoJICBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgZGxscy9zaGVsbDMyL3VuZG9jc2hlbGwuaCwKCSAgaW5jbHVkZS9zaGVsbGFwaS5oLCBpbmNsdWRlL3NobG9iai5oOgoJTW92ZWQgc29tZSBtb3JlIGRlZmluaXRpb25zIG91dCBvZiB1bmRvY3NoZWxsLmggaW50byB0aGUgZXhwb3J0ZWQKCWhlYWRlcnMuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCU9ubHkgcmVkcmF3IGJ1dHRvbiBpbiBQcmVzc0J1dHRvbiBhbmQgSW5kZXRlcm1pbmF0ZSBpZiBpdHMgc3RhdGUgaGFzCgljaGFuZ2VkLgoKCSogbG9hZGVyL2dsaWJjLmM6CglEb24ndCBkZXBlbmQgb24gdGhlIG5hbWUgb2YgdGhlIG1haW4gYmluYXJ5LCBhbHdheXMgbG9hZAoJd2luZS1ba3BddGhyZWFkIG5vIG1hdHRlciB3aGF0LgoKCSogZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3VuZG9jc2hlbGwuaCwgaW5jbHVkZS9zaGxvYmouaCwKCSAgcHJvZ3JhbXMvd2luZWZpbGUvd2luZWZpbGUuYzoKCU1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CgktIG1vdmUgc29tZSBQSURMIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucyBmcm9tIHVuZG9jc2hlbGwuaCBpbnRvIHB1YmxpYwoJICBoZWFkZXIsIGFzIHRoZXkgYXJlIG5vIGxvbmdlciB1bmRvY3VtZW50ZWQKCS0gaW1wbGVtZW50IGNvbnRleHQgbWVudSBzdXBwb3J0IGZvciBXaW5lZmlsZQoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglIb25vdXIgVEJfU0VUTUFYVEVYVFJPV1MuCgoyMDA0LTAyLTEwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9uZXRhcGkzMi9uYm5hbWVjYWNoZS5jLCBkbGxzL25ldGFwaTMyL25ibmFtZWNhY2hlLmgsCgkgIGRsbHMvbmV0YXBpMzIvbmV0YXBpMzIuYywgZGxscy9uZXRhcGkzMi93a3N0YS5jLCBpbmNsdWRlL2xtc3RhdHMuaDoKCVN0ZXZlbiBFZHdhcmRzIDxzdGV2ZW5fZWQ0MTUzQHlhaG9vLmNvbT4KCVBvcnRpbmcgRml4ZXMgZm9yIE1pbmd3L01TVkMuCgoJKiBpbmNsdWRlL3dpbmUvdGVzdC5oOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVJlbW92ZSB0aGUgd2luZXRlc3Rfb2soKSBoYWNrIHRoYXQgYWRkcyBhIHRyYWlsaW5nICdcbicgaWYgaXQgaXMKCW1pc3NpbmcuCgoJKiBjb250cm9scy9zdGF0aWMuYzogR2UgdmFuIEdlbGRvcnAgPGdlQGdzZS5ubD4KCVNldCB1cHBlci1sZWZ0IGNvcm5lciBvZiBkZXN0aW5hdGlvbiB0byAoMCwgMCksIHVzaW5nCglHZXRCaXRtYXBEaW1lbnNpb25FeCBkb2Vzbid0IG1ha2Ugc2Vuc2UuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzogVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hAY29kZXdlYXZlcnMuY29tPgoJQWRkIHN1cHBvcnQgZm9yIEJUTlNfV0hPTEVEUk9QRE9XTi4KCVBvcHVsYXRlIGJ1dHRvbiByZWN0IHdoZW4gc2VuZGluZyBUQk5fRFJPUERPV04uCgoJKiBzZXJ2ZXIvY2hhbmdlLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglBZGQgdGhlIEZfTk9USUZZIGRlZmluZXMgaWYgd2UncmUgY29tcGlsaW5nIHdpdGggbGludXggYW5kIHRoZXkncmUgbm90CglpbiB0aGUgc3lzdGVtIGhlYWRlciBmaWxlcy4KCgkqIGluY2x1ZGUvd2luYmFzZS5oOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkIEdldFByb2Nlc3NIZWFwcygpIHByb3RvdHlwZS4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL3ZpcnR1YWwuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglGaXggYSBjb3VwbGUgb2YgY29weS9wYXN0ZSBlcnJvcnMuCgoJKiBwcm9ncmFtcy93aW5lcGF0aC93aW5lcGF0aC5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglVc2UgR2V0RnVsbFBhdGhOYW1lIHRvIGNvbnZlcnQgdW5peCBwYXRoIG5hbWVzIHRvIERPUyBvbmVzLgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliMi5jOiBBbGFzdGFpciBCcmlkZ2V3YXRlciA8bnllZkBzb2Z0aG9tZS5uZXQ+CglTdXBwb3J0IGZvciBhIHNtYWxsIGhhbmRmdWwgbW9yZSByZXR1cm4gdmFsdWUvYXJndW1lbnQvdmFyaWFibGUgdHlwZXMuCgoJKiBpbmNsdWRlL3VzZXIuaCwgd2luZG93cy9zeXNtZXRyaWNzLmM6CglEeW5hbWljYWxseSByZXRyaWV2ZSB0aGUgbWV0cmljcyB0aGF0IGRlcGVuZCBvbiB0aGUgc2NyZWVuIHNpemUgKGJhc2VkCglvbiBhIHBhdGNoIGJ5IEFsZXggUGFzYWR5bikuCglHZXQgcmlkIG9mIHRoZSBubyBsb25nZXIgdXNlZCBTTV9XSU5FX0JQUCBtZXRyaWMuCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIyLmM6IEFsYXN0YWlyIEJyaWRnZXdhdGVyIDxueWVmQHNvZnRob21lLm5ldD4KCUZpeGVzIGFuZCBzdXBwb3J0IGZvciBUeXBlSW5mbyBhbGlnbm1lbnQgdmFsdWVzLgoKCSogZGxscy9zaGx3YXBpL3Rlc3RzL01ha2VmaWxlLmluLCBkbGxzL3NobHdhcGkvdGVzdHMvc3RyaW5nLmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJVGVzdCBTdHJSZXRUb0JTVFIuCgoJKiBkbGxzL3NobHdhcGkvTWFrZWZpbGUuaW4sIGRsbHMvc2hsd2FwaS9hc3NvYy5jLAoJICBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjLCBkbGxzL3NobHdhcGkvc3RyaW5nLmMsIGluY2x1ZGUvc2hsd2FwaS5oOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUFkZCBzb21lIG1pc3NpbmcgcHJvdG90eXBlcywgZml4IEFzc29jSXNEYW5nZXJvdXMuCglJbXBsZW1lbnQgU3RyUmV0VG9CU1RSLCBkZWxheS1pbXBvcnQgb2xlYXV0MzIuCgoJKiBkbGxzL3NoZWxsMzIvdGVzdHMvLmN2c2lnbm9yZSwgZGxscy9zaGVsbDMyL3Rlc3RzL01ha2VmaWxlLmluLAoJICBkbGxzL3NoZWxsMzIvdGVzdHMvc3RyaW5nLmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJVGVzdHMgZm9yIFN0clJldFRvU3RyQVcuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxzdHJpbmcuYywgZGxscy9zaGVsbDMyL3NobHZpZXcuYywKCSAgZGxscy9zaGVsbDMyL3VuZG9jc2hlbGwuaDoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglTdHJSZXRUb1N0ck4gcmV0dXJucyBCT09MIGFuZCBzaG91bGRuJ3QgY3Jhc2ggb24gTlVMTCBkZXN0LgoKCSogZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvY29tcG9ial9wcml2YXRlLmgsCgkgIGRsbHMvb2xlMzIvZXJyb3JpbmZvLmM6CglSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJLSBDb1NldFN0YXRlIGluZm8gc2hvdWxkIGJlIHRocmVhZCBsb2NhbC4KCS0gU2V0RXJyb3JJbmZvIHNob3VsZCBhbGxvY2F0ZSBhbiBhcGFydG1lbnQgd2hlbiBubyBhcGFydG1lbnQgcHJlc2VudC4KCgkqIGRsbHMveDExZHJ2L2tleWJvYXJkLmM6CglMZW9uYXJkbyBRdWlqYW5vIFZpbmNlbnppIDxscXVpamFub0Bob3Rwb3AuY29tPgoJRml4ZWQgTGF0aW4gQW1lcmljYW4ga2V5Ym9hcmQuCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIyLmM6IEFsYXN0YWlyIEJyaWRnZXdhdGVyIDxueWVmQHNvZnRob21lLm5ldD4KCVN0dWJiZWQtb3V0IGltcGxlbWVudGF0aW9uIG9mIHRoZSBJVHlwZUxpYiBpbnRlcmZhY2UuCglBIGZpeCB0byBJQ3JlYXRlVHlwZUluZm86OkFkZFJlZlR5cGVJbmZvKCkgdG8gdXNlIFJlbGVhc2UoKSBpbnN0ZWFkIG9mCgloYWNraW5nIGEgcmVmY291bnQgZGlyZWN0bHkuCglBIG1pc3NlZCBBUEkgZG9jIGNvbW1lbnQgZm9yIHRoZSBJVHlwZUluZm8gaW50ZXJmYWNlLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGQgcGFydGlhbCBzdXBwb3J0IGZvciBzb21lIHVuZG9jdW1lbnRlZCB0b29sYmFyIG1lc3NhZ2VzLgoKMjAwNC0wMi0wOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvY29tY3RsMzIvcmViYXIuYywgZGxscy9kM2Q4L2RldmljZS5jLAoJICBkbGxzL2tlcm5lbC90ZXN0cy90aHJlYWQuYywgZGxscy9tc3ZjcnQvY3BwLmMsCgkgIGRsbHMvbXN2aWRjMzIvbXN2aWRlbzEuYywgZGxscy9udGRsbC90ZXN0cy9ydGwuYywKCSAgZGxscy9vbGVhdXQzMi90eXBlbGliMi5jLCBkbGxzL3NoZG9jdncvY2xhc3NpbmZvLmMsCgkgIGRsbHMvdXh0aGVtZS9zdHlsZW1hcC5jLCBkbGxzL3dpbmluZXQvZnRwLmMsIGRsbHMvd2luaW5ldC9odHRwLmMsCgkgIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jLCBkbGxzL3gxMWRydi94aW0uYywgZG9jdW1lbnRhdGlvbi9idWdzLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vZmFxLnNnbWwsIGRvY3VtZW50YXRpb24vZ2V0dGluZy5zZ21sLAoJICBkb2N1bWVudGF0aW9uL2luc3RhbGxpbmcuc2dtbCwgcHJvZ3JhbXMvd2luZWRiZy9lbGYuYywKCSAgcHJvZ3JhbXMvd2luZWZpbGUvd2luZWZpbGUuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQXNzb3J0ZWQgc3BlbGxpbmcgYW5kIGNhc2UgZml4ZXMuCgoJKiBjb250cm9scy9tZW51LmM6CglGaXhlZCBUcmFja1BvcHVwTWVudSByZXR1cm4gdmFsdWUgKGJhc2VkIG9uIGEgcGF0Y2ggYnkgQW5kcmVhcwoJUm9zZW5iZXJnKS4KCgkqIGRsbHMvd2luaW5ldC9odHRwLmMsIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jLAoJICBkbGxzL3dpbmluZXQvaW50ZXJuZXQuaCwgZGxscy93aW5pbmV0L3V0aWxpdHkuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglCZXR0ZXIgVFJBQ0VpbmcgaW4gc29tZSBmdW5jdGlvbnMuCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIyLmM6IEFsYXN0YWlyIEJyaWRnZXdhdGVyIDxueWVmQHNvZnRob21lLm5ldD4KCVByZWxpbWluYXJ5IHN1cHBvcnQgZm9yIElDcmVhdGVUeXBlSW5mbzo6QWRkSW1wbFR5cGUoKS4KCVN1cHBvcnQgZm9yIElDcmVhdGVUeXBlSW5mbzo6U2V0SW1wbFR5cGVGbGFncygpLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglUQl9BRERCVVRUT05TIGNhbiBwYXNzIGEgc3RyaW5nIHB0ciBpbnN0ZWFkIG9mIGFuIGluZGV4LgoJVEJfR0VUQlVUVE9OSU5GTyBvbmx5IHJldHVybnMgYSBzdHJpbmcgaWYgaXQncyBub3QgaW4gdGhlIGludGVybmFsCglzdHJpbmcgbGlzdC4KCgkqIGRsbHMvd2luaW5ldC9odHRwLmMsIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jLAoJICBkbGxzL3dpbmluZXQvaW50ZXJuZXQuaDoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglJbXBsZW1lbnRlZCBwcm9wZXIgYXN5bmNocm9ub3VzIEludGVybmV0T3BlblVybCBoYW5kbGluZy4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYjIuYzogQWxhc3RhaXIgQnJpZGdld2F0ZXIgPG55ZWZAc29mdGhvbWUubmV0PgoJUHJlbGltaW5hcnkgc3VwcG9ydCBmb3IgcmVjb3JkaW5nIGN1c3RvbSBkYXRhIGluIGEgdHlwZSBsaWJyYXJ5LgoKCSogdG9vbHMvd2luZWdjYy93aW5lZ2NjLmM6IGxpYndpbmVfdXVpZCBoYXMgYmVlbiByZW5hbWVkIHRvIGxpYnV1aWQuCgoJKiBmaWxlcy9maWxlLmM6IFBvZmlzIDxwb2Zpc0Bwb3J0dWdhbG1haWwucHQ+CglEb24ndCBwcmludCBGSVhNRSBmb3IgRklMRV9BVFRSSUJVVEVfVEVNUE9SQVJZLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWM6CglXb3JrYXJvdW5kIGZvciBicm9rZW4gYXJ0c2MtY29uZmlnIHNjcmlwdCAoYmFzZWQgb24gYSBwYXRjaCBieQoJc3RpcmxpbmdAa2MucnIuY29tKS4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jLAoJICBkbGxzL3NoZWxsMzIvc2hsdmlldy5jLCBwcm9ncmFtcy93aW5lZmlsZS93aW5lZmlsZS5jOgoJSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCVVzZSB0aGUgQlROU18qIHRvb2xiYXIgYnV0dG9uIHN0eWxlIGRlZmluZXMgcmF0aGVyIHRoYW4gdGhlIG91dGRhdGVkCglUQlNUWUxFXyouCgoJKiB0b29scy93aW5lYnVpbGQvaW1wb3J0LmM6CglSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJRml4IHByb2MgbmFtZSByZXBvcnRlZCBpbiBkZWxheSBsb2FkIGZhaWx1cmUuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL2tlcm5lbC90ZXN0cy9NYWtlZmlsZS5pbiwKCSAgZGxscy9rZXJuZWwvdGVzdHMvdmlydHVhbC5jLCBkbGxzL250ZGxsL3ZpcnR1YWwuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGQgYSB0ZXN0IGNhc2UgZm9yIFZpcnR1YWwqIEFQSXMsIGZpeCBhIGZldyBidWdzIGRpc2NvdmVyZWQgYnkgaXQuCgoJKiBpbmNsdWRlL3NldHVwYXBpLmg6IEp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCURlY2xhcmUgc29tZSBTZXR1cERpIGZ1bmN0aW9ucyBhbmQgcmVsYXRlZCBjb25zdGFudHMuCgoJKiBwcm9ncmFtcy91bmluc3RhbGxlci9tYWluLmM6IEhhbm51IFZhbHRvbmVuIDxIYW5udS5WYWx0b25lbkBodXQuZmk+CglSZW1vdmUgc29tZSB1c2VsZXNzIGNvbW1lbnRzIGFuZCByZWFycmFuZ2UgdGhlIEdVSSBhIGJpdC4KCgkqIGRsbHMvc2hlbGwzMi9waWRsLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCB0aGUgYm91bmRzIGNoZWNraW5nIGluIFNIR2V0UGF0aEZyb21JRExpc3RBL1cuCgoJKiBkbGxzL3dpbmluZXQvZnRwLmMsIGRsbHMvd2luaW5ldC9odHRwLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJUmVwb3J0IHJlYWwgaGFuZGxlcyB0byB0aGUgYXBwbGljYXRpb24sIG5vdCBXaW5lIGludGVybmFsIG9uZXMuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUZpeGVkIGEgcHJvYmxlbSBvbiBCU0QuCglGaXhlZCBhIHRyYWNlLgoKCSogZGxscy9pcGhscGFwaS9pZmVudW0uaDogSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJUmVtb3ZlIGRlYWQgY29tbWVudC4KCgkqIGRsbHMvbXN2Y3J0L2ZpbGUuYzogQWxmb25zIEhvb2dlcnZvcnN0IDxhbGZvbnNAcHJvdGV1cy5kZW1vbi5ubD4KCUZpeCBpbmZpbml0ZSBsb29wIGluIF9mbHVzaGFsbC4KCgkqIGluY2x1ZGUvZ3VpZGRlZi5oOiBKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CgkjaWZkZWYgZ3VhcmQgdGhlIGRlY2xhcmF0aW9uIG9mIHR5cGUgSUlEIHRvIGJlIGNvbXBhdGlibGUgd2l0aAoJbWlkbC1nZW5lcmF0ZWQgc3R1YnMuCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIyLmM6IEFsYXN0YWlyIEJyaWRnZXdhdGVyIDxueWVmQHNvZnRob21lLm5ldD4KCVN1cHBvcnQgZm9yIHJlY29yZGluZyB0aGUgU1lTS0lORCBvZiB0aGUgdHlwZSBsaWJyYXJ5LgoKCSogZGxscy9rZXJuZWwvdGVzdHMvZmlsZS5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWxsb3cgY29tcGlsYXRpb24gd2l0aCBNU1ZDLgoKCSogb2JqZWN0cy9iaXRtYXAuYywgb2JqZWN0cy9kYy5jLCBvYmplY3RzL2RpYi5jLCBvYmplY3RzL2VuaG1ldGFmaWxlLmMsCgkgIG9iamVjdHMvZm9udC5jLCBvYmplY3RzL2dkaW9iai5jLCBvYmplY3RzL21ldGFmaWxlLmMsCgkgIG9iamVjdHMvcGFsZXR0ZS5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCURvY3VtZW50YXRpb24gZml4ZXMuCgoJKiBkbGxzL2NvbW1kbGcvY2RsZ19UaC5yYywgZGxscy9jb21tZGxnL3JzcmMucmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJVGhhaSBsYW5ndWFnZSB0cmFuc2xhdGlvbi4KCgkqIGRsbHMvbXN2Y3J0L2Rpci5jOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJVXNlIFVuaWNvZGUgY2FsbHMgaW5zdGVhZCBvZiBBU0NJSSB3aGVyZSBhcHBsaWNhYmxlLgoJRG9jdW1lbnRhdGlvbiB1cGRhdGVzLgoKCSogdG9vbHMvYzJtYW4ucGw6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglBbGxvdyBBUEktZG9jIGdlbmVyYXRpb24gZm9yIG5vbiBXSU5BUEkgY2FsbHMgKGUuZy4gbXN2Y3J0KS4KCgkqIGRsbHMvZHhndWlkL01ha2VmaWxlLmluLCBkbGxzL3V1aWQvTWFrZWZpbGUuaW46CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJRGVmaW5lIGVtcHR5IHJ1bGVzIGZvciBkb2N1bWVudGF0aW9uIGdlbmVyYXRpb24uCgoyMDA0LTAyLTA3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9rZXJuZWwvcHJvZmlsZS5jLCBpbmNsdWRlL3dpbmUvdW5pY29kZS5oOgoJQWRkZWQgbWVtY2hyVyBhbmQgbWVtcmNoclcgdG8gdGhlIGV4cG9ydGVkIFVuaWNvZGUgZnVuY3Rpb25zLgoKCSogZGxscy9rZXJuZWwvbG9jYWxlLmM6CglBZGRlZCBtaXNzaW5nIHBhcmFtZXRlciBjaGVjayBpbiBTZXRMb2NhbGVJbmZvQSByZXZlYWxlZCBieSB0aGUKCXByb2ZpbGUgY29kZSBjaGFuZ2VzLgoKCSogZGxscy9rZXJuZWwvcHJvZmlsZS5jOiBSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJLSBVc2UgV2luMzIgaW5zdGVhZCBvZiBVbml4IGZpbGUgZnVuY3Rpb25zLgoJLSBQcm9jZXNzIGZpbGVzIGZ1bGx5IGluIFVuaWNvZGUuCgktIEFkZCBVbmljb2RlIGZpbGUgZGV0ZWN0aW9uLgoKCSogZGxscy9vcGVuZ2wzMi9NYWtlZmlsZS5pbiwgZGxscy9vcGVuZ2wzMi9tYWtlX29wZW5nbCwKCSAgZGxscy9vcGVuZ2wzMi9vcGVuZ2wzMi5zcGVjLCBkbGxzL29wZW5nbDMyL3dnbC5jLAoJICBkbGxzL29wZW5nbDMyL3dnbF9leHQuYywgZGxscy9vcGVuZ2wzMi93Z2xfZXh0Lmg6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJQmVnaW5uaW5nIG9mIGluZnJhc3RydWN0dXJlIHRvIHN1cHBvcnQgV0dMIGV4dGVuc2lvbnMuCgoJKiBkb2N1bWVudGF0aW9uL3Rlc3Rpbmcuc2dtbDogTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5kZT4KCVVwZGF0ZSBkb2MgYWJvdXQgY3Jvc3MtY29tcGlsaW5nIG9mIHRoZSBXaW5lIHRlc3RzLgoKCSogZGxscy9rZXJuZWwvbGNmb3JtYXQuYywgZGxscy9rZXJuZWwvdGVzdHMvbG9jYWxlLmM6CglCaWxsIE1lZGxhbmQgPGJpbGxtZWRsYW5kQG1lcmN1cnlzcGVlZC5jb20+CglDb3JyZWN0IEdldE51bWJlckZvcm1hdCBmb3IgbmVnYXRpdmUgbnVtYmVycyB3aXRoIGUuZy4gMyBsZWFkaW5nCglkaWdpdHMuCgoJKiB3aW5kb3dzL3N5c21ldHJpY3MuYzogQWxleCBQYXNhZHluIDxhanBAbWFpbC51dGV4YXMuZWR1PgoJUmVwb3J0IHRoZSBtb3VzZSB3aGVlbCBhcyBwcmVzZW50IGluIHRoZSBzeXN0ZW0gbWV0cmljcy4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJQWRkIGEgbWlzc2luZyByZXR1cm4uCgoJKiBkbGxzL29sZTMyL3N0b3JhZ2UuYzogVHJveSBSb2xsbyA8d2luZUB0cm95LnJvbGxvLm5hbWU+CglBZGRlZCBkb2N1bWVudGF0aW9uIGZvciBEb2NGaWxlcywgYmFzZWQgb24gdGhlIENvclZ1IGltcGxlbWVudGF0aW9uIG9mCglEb2NGaWxlcy4KCgkqIGRsbHMva2VybmVsL3Byb2Nlc3MuYywgZGxscy9udGRsbC9sb2FkZXIuYywgaW5jbHVkZS93aW50ZXJubC5oOgoJR2V0IHBvaW50ZXIgdG8gQ3JlYXRlRmlsZVcgZWFybGllciBvbiBkdXJpbmcgc3RhcnR1cC4KCU1ha2Ugc3VyZSB3ZSBkb24ndCBjcmFzaCB3aGVuIGxvYWRpbmcgYSBkbGwgYmVmb3JlIHRoZSBtb2RyZWYgZm9yIHRoZQoJbWFpbiBleGUgaGFzIGJlZW4gY3JlYXRlZC4KCgkqIHRvb2xzL3dpbmVjaGVjazogTGVvbmFyZG8gUXVpamFubyBWaW5jZW56aSA8bHF1aWphbm9AaG90cG9wLmNvbT4KCUFkZGVkIGNoZWNrIGZvciB1bmhpZGUgb3B0aW9uLgoKCSogZGxscy93aW5pbmV0L2Z0cC5jLCBkbGxzL3dpbmluZXQvaHR0cC5jLCBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYywKCSAgZGxscy93aW5pbmV0L2ludGVybmV0Lmg6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgcHJvcGVyIEhJTlRFUk5FVCBoYW5kbGVzLgoKCSogZGxscy9udGRsbC90ZXN0cy9lbnYuYywgZGxscy9udGRsbC90ZXN0cy9lcnJvci5jLAoJICBkbGxzL250ZGxsL3Rlc3RzL2xhcmdlX2ludC5jLCBkbGxzL250ZGxsL3Rlc3RzL3BhdGguYywKCSAgZGxscy9udGRsbC90ZXN0cy9ydGwuYywgZGxscy9udGRsbC90ZXN0cy9ydGxzdHIuYywKCSAgZGxscy9udGRsbC90ZXN0cy9zdHJpbmcuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQWRkIHRyYWlsaW5nICdcbidzIHRvIG9rKCkgY2FsbHMuCgoJKiBkbGxzL250ZGxsL3Rlc3RzL3J0bGJpdG1hcC5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFkZCB0cmFpbGluZyAnXG4ncyB0byBvaygpIGNhbGxzLgoJU3BlbGxpbmcgZml4ZXMgaW4gdGhlIG9rKCkgbWVzc2FnZXMuCgoJKiBkbGxzL3V4dGhlbWUvbXNzdHlsZXMuYzogS2V2aW4gS29sdHphdSA8a2V2aW5AcGxvcC5vcmc+CglQcm9jZXNzIGNvbG9yIG1ldHJpY3MgZm9yIHRoZW1lcy4KCgkqIGRsbHMvY29tY3RsMzIvdGFiLmM6IFZpdGFsaXkgTWFyZ29sZW4gPHdpbmUtcGF0Y2hAa2lldmluZm8uY29tPgoJLSBGaXggaGFuZGxpbmcgb2YgVENTX1JBR0dFRFJJR0hUIHN0eWxlLgoJLSBDbGlwIFVwRG93biBjb250cm9sIG9ubHkgaWYgaXQgaXMgcHJlc2VudC4KCS0gQWRkIFRvRG9zLgoKCSogcHJvZ3JhbXMvd2luZWNmZy9Fbi5yYywgcHJvZ3JhbXMvd2luZWNmZy9Fcy5yYywKCSAgcHJvZ3JhbXMvd2luZWNmZy9QdC5yYywgcHJvZ3JhbXMvd2luZWNmZy9SdS5yYywKCSAgcHJvZ3JhbXMvd2luZWNmZy9TaS5yYywgcHJvZ3JhbXMvd2luZWNmZy9hcHBkZWZhdWx0cy5jLAoJICBwcm9ncmFtcy93aW5lY2ZnL21haW4uYywgcHJvZ3JhbXMvd2luZWNmZy9wcm9wZXJ0aWVzLmMsCgkgIHByb2dyYW1zL3dpbmVjZmcvcHJvcGVydGllcy5oLCBwcm9ncmFtcy93aW5lY2ZnL3Jlc291cmNlLmgsCgkgIHByb2dyYW1zL3dpbmVjZmcvd2luZWNmZy5oLCBwcm9ncmFtcy93aW5lY2ZnL3gxMWRydmRsZy5jOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQGFsdW0ud3BpLmVkdT4KCVJlbmFtZSAnR2VuZXJhbCB0YWInIHRvICdBYm91dCcsIG1vdmUgdG8gdGhlIGxhc3QgcG9zaXRpb24uCglNYWtlIGFwcGxpY2F0aW9ucyB0YWIgaGFuZGxlIGdsb2JhbCBhbmQgcGVyLWFwcCB3aW52ZXIsIGRvc3ZlciBhbmQKCXdpbmVsb29rIHNldHRpbmdzLCBtaXJyb3JpbmcgdGhlIExpYnJhcmllcyB0YWIuICBDb2RlIGNvcGllZCBmcm9tCglSb2JlcnQgdmFuIEhlcmsncyBsaWJyYXJpZXMgdGFiLgoJTW92ZSBnbG9iYWwvYXBwIHNwZWNpZmljIGZ1bmN0aW9uIGFuZCBnbG9iYWwgdG8gdGhlIHgxMWRydiB0YWIgd2hlcmUKCWl0IGlzIGN1cnJlbnRseSB1c2VkLgoJQWRkIGEgY291cGxlIG9mIHByb3BlcnR5IGhlbHBlciBmdW5jdGlvbnMuCglTZXQgM0QgYm9yZGVyIGFyb3VuZCB0cmVldmlldyBjb250cm9scy4KCVJlbW92ZWQgaW52YWxpZCByZXNvdXJjZXMgZnJvbSBsYW5ndWFnZXMgb3RoZXIgdGhhbiBFbi4KCjIwMDQtMDItMDYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jOiBUcmFjZSByZWdpc3RlciBjb250ZW50cyBvbiBleGNlcHRpb24uCgoJKiBkbGxzL2Rzb3VuZC9idWZmZXIuYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUZhbGxiYWNrIHRvIHNvZnR3YXJlIGJ1ZmZlciBpZiBmYWlsZWQgdG8gY3JlYXRlIGhhcmR3YXJlIGJ1ZmZlci4KCU1pbm9yIGNvZGUgY2xlYW51cHMuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9jaGFuZ2UuYywgZGxscy9rZXJuZWwvdGVzdHMvaGVhcC5jLAoJICBkbGxzL2tlcm5lbC90ZXN0cy9sb2NhbGUuYywgZGxscy9rZXJuZWwvdGVzdHMvbWFpbHNsb3QuYywKCSAgZGxscy9rZXJuZWwvdGVzdHMvcGF0aC5jLCBkbGxzL2tlcm5lbC90ZXN0cy9waXBlLmMsCgkgIGRsbHMva2VybmVsL3Rlc3RzL3Byb2Nlc3MuYywgZGxscy9rZXJuZWwvdGVzdHMvcHJvZmlsZS5jLAoJICBkbGxzL2tlcm5lbC90ZXN0cy90aHJlYWQuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQWRkIHRyYWlsaW5nICdcbidzIHRvIG9rKCkgY2FsbHMuCgoJKiBkbGxzL29sZWF1dDMyL3Rlc3RzL3ZhcnRlc3QuYzogQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQGFsdW0ud3BpLmVkdT4KCUltcGxlbWVudCB0ZXN0cyBmb3IgVmFyTW9kKCkuCglBZGRlZCBjaGFyICp2dHN0cigpIHRvIGVuaGFuY2UgdGVzdCBkZWJ1Z2dpbmcgYnkgcmV0dXJuaW5nIGEgdGV4dAoJc3RyaW5nIHRoYXQgY29ycmVzcG9uZHMgdG8gdGhlIGlucHV0IHR5cGUuCgoJKiBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYzogQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQGFsdW0ud3BpLmVkdT4KCUltcGxlbWVudCBWYXJNb2QoKS4KCUFkZCBhIGZldyB0cmFjZSBvdXRwdXRzLgoJRml4IFZhck5vdCgpIHdpdGggVlRfQ1kuCglGaXggVmFyUGFyc2VOdW1Gcm9tU3RyKCkgdG8gd29yayBjb3JyZWN0bHkgd2l0aCBOVU1QUlNfSEVYX09DVCBmbGFnLgoKCSogcHJvZ3JhbXMvd2luZWRiZy9lbGYuYzogRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglGaXhlZCB0eXBvLgoKCSogZGxscy9kc291bmQvZHNvdW5kX21haW4uYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUZhbGxiYWNrIHRvIHNvZnR3YXJlIGJ1ZmZlciBpZiBkdXBsaWNhdGluZyBoYXJkd2FyZSBidWZmZXIgZmFpbHMuCgoJKiBkbGxzL2Rzb3VuZC9wcmltYXJ5LmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglBY3R1YWwgYnVmZmVyIGZvcm1hdCBtYXkgYmUgZGlmZmVyZW50IGZyb20gcmVxdWVzdGVkIGZvcm1hdCBzbyB1c2UKCXJldHVybmVkIG9uZSBmb3IgY2FsY3VsYXRpb24uCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCVNob3cgc291bmQgY2FyZCBpbmZvIGluIHRyYWNlLgoKCSogcHJvZ3JhbXMvd2luZW1pbmUvSXQucmM6IEl2YW4gTGVvIE11cnJheS1TbWl0aCA8cHVvdGlAaW53aW5kLml0PgoJVHJhbnNsYXRlICJvcHRpb25zIi4KCgkqIGRsbHMvdXNlci90ZXN0cy93aW4uYywgd2luZG93cy93aW4uYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGQgYSB0ZXN0IGNhc2UgYW5kIGEgZml4IGZvciB0aGUgd2luZG93IHN0eWxlcyBzdGF0ZSBhdCB0aGUgd2luZG93CgljcmVhdGlvbiB0aW1lLgoKCSogZGxscy94MTFkcnYvd2luZG93LmM6IEFsZXggUGFzYWR5biA8YWpwQG1haWwudXRleGFzLmVkdT4KCU1ha2UgZnVsbC1zY3JlZW4gcG9wdXAgd2luZG93cyBtYW5hZ2VkLgoKCSogZGxscy9uZXRhcGkzMi9hY2Nlc3MuYywgZGxscy9uZXRhcGkzMi9uZXRhcGkzMi5zcGVjOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQGFsdW0ud3BpLmVkdT4KCVN0dWIgTmV0VXNlckVudW0oKS4KCgkqIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJUHJvcGVybHkgaGFuZGxlIGFzeW5jaHJvbm91cyBIdHRwU2VuZFJlcXVlc3RBLgoKCSogcHJvZ3JhbXMvcmVnZWRpdC9lZGl0LmM6IFJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CglDYW5jZWwgcmVuYW1lIGlmIHZhbHVlIHRvIHJlbmFtZSB0byBhbHJlYWR5IGV4aXN0cy4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jLCBkbGxzL2NvbWN0bDMyL3Rlc3RzL2RwYS5jOgoJUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCUZpeCBuR3JvdyBpbml0aWFsaXphdGlvbiBpbiBEUEFfQ3JlYXRlRXguCgoyMDA0LTAyLTA1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9rZXJuZWwvdGhyZWFkLmMsIGluY2x1ZGUvd2luZS9wdGhyZWFkLmgsIGxvYWRlci9rdGhyZWFkLmMsCgkgIGxvYWRlci9wdGhyZWFkLmM6CglSZXZlcnQgdGhlIHRocmVhZCBleGl0IHJhY2UgZml4IGZvciBub3csIGl0IGRvZXNuJ3Qgd29yayByaWdodCBvbgoJcHRocmVhZHMuCgoJKiBkbGxzL2tlcm5lbC90aHJlYWQuYywgZGxscy9udGRsbC90aHJlYWQuYywgaW5jbHVkZS93aW5lL3B0aHJlYWQuaCwKCSAgbGlicy93aW5lL3BvcnQuYywgbGlicy93aW5lL3dpbmUuZGVmLCBsb2FkZXIva3RocmVhZC5jLAoJICBsb2FkZXIvcHRocmVhZC5jOgoJRml4ZWQgYSBjb3VwbGUgb2YgcmFjZSBjb25kaXRpb25zIGluIHRoZSB3aW5lX3B0aHJlYWQgcm91dGluZXMgYXQKCXRocmVhZCBzdGFydHVwIGFuZCBleGl0LgoKCSogc2VydmVyL3JlcXVlc3QuYzoKCURvIGEgcHJvdG9jb2wgZXJyb3IgaW5zdGVhZCBvZiBjcmFzaGluZyBpZiB0aGUgcmVwbHkgZmQgaGFzIG5vdCBiZWVuCglzZXQuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL2tlcm5lbC90ZXN0cy9NYWtlZmlsZS5pbiwKCSAgZGxscy9rZXJuZWwvdGVzdHMvY2hhbmdlLmMsIHNlcnZlci9jaGFuZ2UuYzoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJSW1wcm92ZWQgZXJyb3IgcmVwb3J0aW5nLgoJQWRkIHNvbWUgbm90aWZpY2F0aW9uIHR5cGVzIGFuZCBhIHRlc3QuCgoJKiBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLCBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjOgoJSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJU3R1YiBmb3IgTUxJc01MSEluc3RhbmNlLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGluY2x1ZGUvY29uZmlnLmguaW4sIHByb2dyYW1zL3dpbmVkYmcvZWxmLmM6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCS0gRml4ZWQgYnJva2VuIHdpbmVkYmcgY29tcGlsYXRpb24gb24gQlNELgoJLSBGaXhlZCBzb21lIGNvcm5lciBjYXNlIGhhbmRsaW5nIGluIEVMRiBsaXN0IHdhbGtpbmcgKHJlcG9ydGVkIGJ5CgkgIFJvYmVydCBTaGVhcm1hbikuCgoJKiB3aW5kb3dzL3VzZXIuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJQ2hhbmdlIHJldHVybiBjb2RlIGZyb20gRXhpdFdpbmRvd3NFeCgpIChhbmQgd2l0aCB0aGF0IHJlbGF0ZWQKCUV4aXRXaW5kb3dzKiBmdW5jdGlvbnMpIGZyb20gRkFMU0UgdG8gVFJVRS4KCgkqIGRsbHMvd2lubW0vd2luZWFsc2EvbWlkaS5jLCBkbGxzL3dpbm1tL3dpbmVvc3MvbWlkaS5jOgoJQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJQWRkZWQgbWlzc2luZyBub3RpZmljYXRpb25zIHRvIE1JRElfTm90aWZ5Q2xpZW50LgoJTWFkZSBjaGVja3MgbGVzcyBzdHJpY3QgaW4gbWlkUHJlcGFyZSwgb25seSByZXR1cm4gYW4gZXJyb3IgZm9yIGJ1ZmZlcgoJaW4gcXVldWUuCglGaXhlZCB0aW1lIG9mIGlucHV0IGV2ZW50cyBpbiBBbHNhIGRyaXZlci4KCgkqIGRsbHMvdXh0aGVtZS9kcmF3LmM6IEtldmluIEtvbHR6YXUgPGtldmluQHBsb3Aub3JnPgoJSW1wbGVtZW50IElzVGhlbWVCYWNrZ3JvdW5kUGFydGlhbGx5VHJhbnNwYXJlbnQsCglEcmF3VGhlbWVQYXJlbnRCYWNrZ3JvdW5kLCBhbmQgYmVnaW5uaW5ncyBvZiBvdGhlciBkcmF3aW5nIGZ1bmN0aW9ucy4KCgkqIGRsbHMva2VybmVsL3Byb2Nlc3MuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IGluY29ycmVjdCBHZXRMb25nUGF0aE5hbWUgdXNhZ2UgZXhwb3NlZCBieSBFcmljJ3MgZmlsZW5hbWUKCXBhdGNoZXMuCgoyMDA0LTAyLTAzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS93aW5nZGkuaDogS2V2aW4gS29sdHphdSA8a2V2aW5AcGxvcC5vcmc+CglBZGQgZGVmaW5lIE1BS0VST1A0LgoKCSogZGxscy94MTFkcnYva2V5Ym9hcmQuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUlzc3VlIFdBUk4gaW5zdGVhZCBvZiBGSVhNRSB3aGVuIHRoZXJlIGFyZSBtaXNtYXRjaGVzIGJldHdlZW4gaGFyZAoJY29kZWQgYW5kIHJlYWwga2V5Ym9hcmQgbGF5b3V0cy4KCgkqIGluY2x1ZGUvc2hsb2JqLmg6IEp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCURlY2xhcmUgU0hHZXRGb2xkZXJQYXRoIGFuZCByZWxhdGVkIGNvbnN0YW50cy4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYjIuYzogQWxhc3RhaXIgQnJpZGdld2F0ZXIgPG55ZWZAc29mdGhvbWUubmV0PgoJU3R1YmJlZC1vdXQgaW1wbGVtZW50YXRpb24gb2YgdGhlIElUeXBlSW5mbzIgaW50ZXJmYWNlIGZvciB0aGUKCUlDcmVhdGVUeXBlSW5mbzIgaW1wbGVtZW50YXRpb24uCglJbXBsZW1lbnRhdGlvbiBvZiBJVHlwZUluZm8yX2ZuR2V0Q29udGFpbmluZ1R5cGVMaWIoKS4KCVByZWxpbWluYXJ5IGltcGxlbWVudGF0aW9uIG9mIElDcmVhdGVUeXBlSW5mbzJfZm5BZGRSZWZUeXBlSW5mbygpLgoKCSogcHJvZ3JhbXMvd2luZWRiZy9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luZWRiZy9kZWJ1Z2dlci5oLAoJICBwcm9ncmFtcy93aW5lZGJnL2VsZi5jLCBwcm9ncmFtcy93aW5lZGJnL2dkYnByb3h5LmMsCgkgIHByb2dyYW1zL3dpbmVkYmcvaGFzaC5jLCBwcm9ncmFtcy93aW5lZGJnL21lbW9yeS5jLAoJICBwcm9ncmFtcy93aW5lZGJnL21vZHVsZS5jLCBwcm9ncmFtcy93aW5lZGJnL21zYy5jLAoJICBwcm9ncmFtcy93aW5lZGJnL3BlLmMsIHByb2dyYW1zL3dpbmVkYmcvc3RhYnMuYywKCSAgcHJvZ3JhbXMvd2luZWRiZy93aW5lZGJnLmM6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCS0gbm93IGRldGVjdGluZyBEd2FyZiBkZWJ1ZyBpbmZvcm1hdGlvbiBpbiBFTEYgbW9kdWxlcyAoYnV0IGRvbid0IGxvYWQKCSAgaXQpCgktIHNlcGFyYXRlZCBtb2R1bGUgbWFuYWdlbWVudCAocGUuYywgZWxmLmMpIGZyb20gZGVidWcgaW5mb3JtYXRpb24KCSAgbWFuYWdlbWVudCAoc3RhYnMuYywgbXNjLmMpCgktIHdvcmtlZCBhcm91bmQgbmV3IHdpbmUtcHRocmVhZCBhbmQgd2luZS1rdGhyZWFkIGxvYWRlcnMgKG5vIGxvbmdlcgoJICB1c2UgIndpbmUiIGFzIGRlZmF1bHQgbG9hZGVyKQoJLSBiZXR0ZXIgY29udmVyZ2VuY2Ugb2YgZ2RiLXByb3h5IGFuZCB3aW5lZGJnIGZvciBFTEYgaGFuZGxpbmcKCS0gZml4ZWQgRUxGIGxpbmstbWFwIHdhbGtpbmcgLSBub3cgdXNpbmcgYWxsIGxvYWRlZCBzaGFyZWQgbGlicyAtCgkgICh3aXRoIHRoZSBoZWxwIG9mIFJvYmVydCBTaGVhcm1hbikKCS0gYWRkZWQgYSBiaXQgb2YgY29uc3QgY29ycmVjdG5lc3MKCgkqIGRsbHMvaW1tMzIvaW1tLmMsIGRsbHMvaW1tMzIvaW1tMzIuc3BlYzoKCUtlbiBCZWxsZWF1IDxqYW1lekBpdmljLnFjLmNhPgoJQWRkZWQgc3R1YiBmb3IgSW1tRGlzYWJsZUlNRS4KCgkqIGRsbHMveDExZHJ2L3h2aWRtb2RlLmM6IEFsZXggUGFzYWR5biA8YWpwQG1haWwudXRleGFzLmVkdT4KCVVzZSB0aGUgZmlyc3QgbW9kZSBpbiB0aGUgWFZpZE1vZGUgbW9kZSBsaXN0IGFzIHRoZSBkZWZhdWx0LgoKCSogZGxscy9zaGVsbDMyL3NobHZpZXcuYzogVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hAY29kZXdlYXZlcnMuY29tPgoJU2V0IHRoZSBpdGVtIG1hc2sgYmVmb3JlIGNhbGxpbmcgR2V0SXRlbS4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlcGljdHVyZS5jOiBLaXJpbGwgU21lbGtvdiA8a2lyckBsYW5kYXUucGh5cy5zcGJ1LnJ1PgoJT0xFUGljdHVyZUltcGxfTG9hZDogZml4IGZvciBoZWFkZXJsZXNzIHBpY3R1cmVzLgoKCSogdG9vbHMvd2luZW1ha2VyOiBLaXJpbGwgU21lbGtvdiA8a2lyckBsYW5kYXUucGh5cy5zcGJ1LnJ1PgoJVHJ5IHRvIHVzZSAtZnNob3J0LXdjaGFyIGlmIHBvc3NpYmxlLgoKCSogd2luZG93cy9tZGkuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2UgdGhlIE1ESSBXaW5kb3cgbWVudSByZWZyZXNoaW5nIFdpbmRvd3MgY29tcGF0aWJsZS4KCVNpbXBsaWZ5IE1ESSBjaGlsZCB2aXNpYmlsaXR5IGNoZWNrLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglEcmF3IGRpc2FibGVkIHRvb2xiYXIgYnV0dG9ucyBjb3JyZWN0bHkuCgoyMDA0LTAyLTAyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9nZGkvZ2RpMzIuc3BlYywgZGxscy9tc2ltZzMyL01ha2VmaWxlLmluLAoJICBkbGxzL21zaW1nMzIvbXNpbWczMi5zcGVjLCBkbGxzL21zaW1nMzIvbXNpbWczMl9tYWluLmM6CglLZXZpbiBLb2x0emF1IDxrZXZpbkBwbG9wLm9yZz4KCUltcGxlbWVudGF0aW9uIG9mIGdkaTMyLkdkaVRyYW5zcGFyZW50Qmx0IGFuZCBtc2ltZzMyLlRyYW5zcGFyZW50Qmx0LgoKCSogaW5jbHVkZS9jb21tY3RybC5oOiBFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCUFkZGVkIExpc3RWaWV3X0dldEhlYWRlciBtYWNyby4KCgkqIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmM6IFVscmljaCBDemVrYWxsYSA8dWxyaWNoQGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2UgU0hDaGFuZ2VOb3RpZnlSZWdpc3RlciBiZSByZWN1cnNpdmUgc28gdGhhdCB3aWxsIGdldCBhbGwKCW5vdGlmaWNhdGlvbnMuCgoJKiBkbGxzL3NoZWxsMzIvY2hhbmdlbm90aWZ5LmM6IFVscmljaCBDemVrYWxsYSA8dWxyaWNoQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBTSENoYW5nZU5vdGlmeSB0byBzZW5kIGNvcnJlY3QgbFBhcmFtIGFuZCB3UGFyYW0gdmFsdWVzLgoKCSogZGxscy9nZGkvZnJlZXR5cGUuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUd1bGltQ2hlIGhhcyB0aGUgSXNGaXhlZFBpdGNoIGZsYWcgc2V0LCB5ZXQgY29udGFpbnMgZ2x5cGhzIG9mCglkaWZmZXJpbmcgd2lkdGhzLiAgVG8gY29wZSB3aXRoIHRoaXMgd2UgbmVlZCB0byBjYWxsIEZUX0xvYWRfR2x5cGgKCXdpdGggdGhlIEZUX0xPQURfSUdOT1JFX0dMT0JBTF9BRFZBTkNFX1dJRFRIIGZsYWcgaW4gb3JkZXIgdG8gZ2V0CgliYWNrIHRoZSBjb3JyZWN0IGdseXBoIG1ldHJpY3MgZnJvbSBGcmVlVHlwZS4KCgkqIHRvb2xzL3dpbmV3cmFwcGVyOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVByZXNlcnZlIHRoZSBvcmlnaW5hbCBXSU5FRExMUEFUSCBzbyB3ZSBjYW4gbG9hZCBvdXQtb2YtdHJlZSBXaW5lbGliCglhcHBsaWNhdGlvbnMuCgoJKiB0b29scy93aW5lbWFrZXI6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJTGluayB3aXRoIG1zdmNydCBhbmQgdXNlIHRoZSBtc3ZjcnQgaGVhZGVycyBieSBkZWZhdWx0IHRvIGltcHJvdmUgdGhlCglWaXN1YWwgQysrIGNvbXBhdGliaWxpdHkuCglBZGQgYSAnLS1ub21zdmNydCcgb3B0aW9uIHRvIGdlbmVyYXRlIG1ha2VmaWxlcyB0aGF0IGRvIG5vdCB1c2UKCW1zdmNydC4KCgkqIHdpbmRvd3MvbWRpLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglUZXN0IHdoZXRoZXIgYW4gYWN0aXZlIG1heGltaXplZCBNREkgY2hpbGQgaXMgdmlzaWJsZS4KCjIwMDQtMDEtMzAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL250ZGxsL3ZpcnR1YWwuYzoKCUFkZGVkIG1lbW9yeSBjb25zdHJhaW50IHRvIGF2b2lkIG1pc2NvbXBpbGF0aW9uIG9mIHRoZSB1bmFsaWduZWRfbW1hcAoJZnVuY3Rpb24gKHdpdGggaGVscCBmcm9tIFBhdWwgU3RyZWl0bWFuKS4KCgkqIGRvY3VtZW50YXRpb24vY29uZmlndXJpbmcuc2dtbCwgZG9jdW1lbnRhdGlvbi9mb250cy5zZ21sLAoJICBkb2N1bWVudGF0aW9uL2ltcGxlbWVudGF0aW9uLnNnbWwsIGRvY3VtZW50YXRpb24vcHJpbnRpbmcuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9yZWdpc3RyeS5zZ21sLCBkb2N1bWVudGF0aW9uL3J1bm5pbmcuc2dtbDoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglNb3ZlIGtleWJvYXJkIHByb2dyYW1taW5nIGluc3RydWN0aW9ucyB0byB0aGUgRGV2ZWwgR3VpZGUuCglDbGVhbnVwIHVwIGEgYnVuY2ggb2YgYml0cyB0aGF0IGRvbid0IGJlbG9uZyBpbiBhIGJvb2suCgoJKiBkbGxzL2RkcmF3L2RkcmF3L21haW4uYywgZGxscy9kZHJhdy9kc3VyZmFjZS9tYWluLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJRml4IHBhbGV0dGUgZGVsZXRpb24gaXNzdWUgc2VlbiBpbiBEdW5nZW9uS2VlcGVyLgoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJRml4IHRoZSBaIHRyYW5zZm9ybSBpbiB0aGUgWFlSWkhXIGNhc2UuCgoJKiBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwvYWN0Y3R4LmMsCgkgIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJQWRkIHN0dWJzIGZvciB0aGUgQWN0aXZhdGlvbiBDb250ZXh0IEFQSSAoWFArKS4KCgkqIGRsbHMvcmljaGVkaXQvcmVhZGVyLmMsIGRsbHMvcmljaGVkaXQvcmljaGVkaXQuYywKCSAgZGxscy9yaWNoZWRpdC9ydGYuaCwgZGxscy9yaWNoZWRpdC90ZXh0LXdyaXRlci5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlIGdsb2JhbCB2YXJpYWJsZXMgZnJvbSB0aGUgcmljaGVkaXQgY29udHJvbC4KCgkqIGRsbHMveDExZHJ2L3dpbnRhYi5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJVGhlIE5WSURJQSBncmFwaGljcyBkZXZpY2UgY29tZXMgdXAgYXMgYW4gWCBleHRlbnNpb24gZXZlbnQsIGJ1dAoJdGhyb3dzIGFuIGVycm9yIChCYWRNYXRjaCkgd2hlbiBxdWVyeWluZyBmb3IgdGhlIGJ1dHRvbnMuIENhdGNoIHRoaXMKCWVycm9yIGFuZCBhbmQgZGlzY2FyZCB0aGF0IGRldmljZSBmcm9tIGJlaW5nIGEgdGFibGV0IGRldmljZS4KCgkqIGRsbHMvbmV0YXBpMzIvbmJ0LmM6IEp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCS0gZml4IGJyb2FkY2FzdCBhZGRyZXNzIGZvciBuYW1lIGxvb2t1cHMgYWZ0ZXIgaXBobHBhcGkgY2hhbmdlCgktIGZpeCBiYWQgcmVnaXN0cnkga2V5IG9wZW5pbmcKCgkqIHRvb2xzL3dpbmVtYWtlcjogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglVcGRhdGUgdGhlIGhhbmRsaW5nIG9mIHV1aWQuCglNb2RpZnkgdGhlIGF1dG9jb25mIHNjcmlwdCB0byBkZXRlY3QgJy16IGRlZnMnIGFuZCAnLWluaXQvLWZpbmknLgoKCSogZGxscy94MTFkcnYveDExZHJ2X21haW4uYzogQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQGFsdW0ud3BpLmVkdT4KCUlmIHVuYWJsZSB0byBvcGVuIGFuIFgxMSBkaXNwbGF5IG1lbnRpb24gdGhhdCBYIG5lZWRzIHRvIGJlIHJ1bm5pbmcKCWFuZCB0aGF0ICRESVNQTEFZIG11c3QgYmUgc2V0IGNvcnJlY3RseS4KCgkqIGRsbHMvc2hlbGwzMi9zaGZsZHJfbXljb21wLmM6IE1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CgktIHJlbW92ZSB1bm5lY2Nlc2FyeSBJU0ZfTXlDb21wdXRlcl9Db25zdHJ1Y3RvcigpIGRlY2xhcmF0aW9uCgktIGltcHJvdmUgcmV0dXJuZWQgZXJyb3IgY29kZSBvZiBJU0ZfTXlDb21wdXRlcl9mblBhcnNlRGlzcGxheU5hbWUoKQoJLSByZW1vdmUgd3JvbmcgY29tbWVudCBmcm9tIElTRl9NeUNvbXB1dGVyX2ZuR2V0RGlzcGxheU5hbWVPZigpCgoyMDA0LTAxLTI4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy93aW4uYywgd2luZG93cy93aW5wcm9jLmM6CglGaXhlZCAxNi1iaXQgTURJIHN1cHBvcnQgKGJhc2VkIG9uIGEgcGF0Y2ggYnkgRG1pdHJ5IFRpbW9zaGtvdikuCgoJKiBkbGxzL3VzZXIvaG9vazE2LmMsIGluY2x1ZGUvd2luZS93aW51c2VyMTYuaCwgd2luZG93cy9zdHJ1Y3QzMi5jOgoJbHBDcmVhdGVQYXJhbXMgc2hvdWxkIGJlIGEgU0VHUFRSIGluIDE2LWJpdCBjb2RlLgoKCSogZGxscy9rZXJuZWwvZXhjZXB0LmM6CglNYWtlIHN1cmUgdGhhdCB0aGVyZSBpcyBleHRyYSBpbmZvcm1hdGlvbiBpbiB0aGUgZXhjZXB0aW9uIHJlY29yZAoJYmVmb3JlIGFjY2Vzc2luZyBpdCBpbiBjaGVja19yZXNvdXJjZV93cml0ZS4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYjIuYzogQWxhc3RhaXIgQnJpZGdld2F0ZXIgPG55ZWZAc29mdGhvbWUubmV0PgoJUHJlbGltaW5hcnkgaW1wbGVtZW50YXRpb24gb2YgSUNyZWF0ZVR5cGVJbmZvMl9mbkFkZEZ1bmNEZXNjKCkgYW5kCglJQ3JlYXRlVHlwZUluZm8yX2ZuU2V0RnVuY0FuZFBhcmFtTmFtZXMoKS4KCgkqIGRvY3VtZW50YXRpb24vTWFrZWZpbGUuaW4sIGRvY3VtZW50YXRpb24vd2luZWxpYi1iaW5kbGxzLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vd2luZWxpYi1tZmMuc2dtbCwgZG9jdW1lbnRhdGlvbi93aW5lbGliLXBrZy5zZ21sLAoJICBkb2N1bWVudGF0aW9uL3dpbmVsaWItcG9ydGluZy5zZ21sLCBkb2N1bWVudGF0aW9uL3dpbmVsaWItdXNlci5zZ21sOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVJlbW92ZSBhIGJ1bmNoIG9mIGR1bW15IGFuZC9vciBvYnNvbGV0ZSBpbmZvIGZyb20gdGhlIFdpbmVsaWIKCURldmVsb3BlcnMgR3VpZGUuCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGRsbHMvd2luc29jay93czJfMzIuc3BlYzoKCUNocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUFkZCBzdHViIGZvciBXU0FTdHJpbmdUb0FkZHJlc3NBLgoKCSogZGxscy9vbGUzMi9vbGUyLmM6IEdlIHZhbiBHZWxkb3JwIDxnZUBnc2Uubmw+CglEb24ndCBkZXBlbmQgb24gdXNlcjMyLWludGVybmFsIGltcGxlbWVudGF0aW9uIG9mIGFjY2VsZXJhdG9yIHRhYmxlcy4KCgkqIGRsbHMvdmVyc2lvbi9pbmZvLmM6IFJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CglBbGxvdyBWZXJRdWVyeVZhbHVlVyB0byBxdWVyeSAxNi1iaXQgcmVzb3VyY2VzLgoKCSogcHJvZ3JhbXMvd2luZWRiZy9icmVhay5jOiBFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCS0gbm93IHJlcG9ydGluZyBtZXNzYWdlIG9uIGJvZ3VzIGxpbmUgbnVtYmVyIGluICdicCA8bnVtPicgY29tbWFuZHMKCSAgKHVzZWZ1bCB3aGVuIHVzZXIgdGhpbmtzIDxudW0+IGlzIGEgbGluZWFyIGFkZHJlc3MpCgktIGZpeGVkIGJvZ3VzIHJldHVybiB2YWx1ZSBpbiBERUJVR19BZGRCcmVha3BvaW50CgoJKiBkbGxzL3dpbm1tL21jaWF2aS9tbW91dHB1dC5jOiBFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCUZpeGVkIHN5bmNocm9uaXphdGlvbiBpc3N1ZS4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYjIuYzogQWxhc3RhaXIgQnJpZGdld2F0ZXIgPG55ZWZAc29mdGhvbWUubmV0PgoJSW1wcm92ZW1lbnRzIHRvIElDcmVhdGVUeXBlSW5mbzJfZm5BZGRWYXJEZXNjKCkuCglBIHNlcGFyYXRlIGZ1bmN0aW9uIHRvIGVuY29kZSBUWVBFSU5GTyBzdHJ1Y3R1cmVzLgoKMjAwNC0wMS0yNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvdXNlci93aW5wcm9jLmgsIHdpbmRvd3Mvd2lucHJvYy5jOgoJUHJvcGVybHkgdHJhbnNsYXRlIHRoZSBtZXNzYWdlIHJlc3VsdCBmb3IgV01fR0VUVEVYVC1zdHlsZSBtZXNzYWdlcy4KCgkqIGRsbHMvd2lubW0vd2luZWFydHMvTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vd2luZWF1ZGlvaW8vTWFrZWZpbGUuaW4sCgkgIGRsbHMvd2lubW0vd2luZWphY2svTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vd2luZW5hcy9NYWtlZmlsZS5pbjoKCUFsbCBzb3VuZCBkcml2ZXJzIG5lZWQgLWxkeGd1aWQuCgoJKiBkbGxzL25ldGFwaTMyL3Rlc3RzL2FjY2Vzcy5jLCBkbGxzL25ldGFwaTMyL3Rlc3RzL2FwaWJ1Zi5jLAoJICBkbGxzL25ldGFwaTMyL3Rlc3RzL3drc3RhLmMsIGRsbHMvc2hsd2FwaS90ZXN0cy9jbGlzdC5jLAoJICBkbGxzL3NobHdhcGkvdGVzdHMvY2xzaWQuYywgZGxscy9zaGx3YXBpL3Rlc3RzL3BhdGguYywKCSAgZGxscy9zaGx3YXBpL3Rlc3RzL3NocmVnLmMsIGRsbHMvc2hsd2FwaS90ZXN0cy9zdHJpbmcuYywKCSAgZGxscy9rZXJuZWwvdGVzdHMvZmlsZS5jLCBkbGxzL2tlcm5lbC90ZXN0cy9mb3JtYXRfbXNnLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFkZCB0cmFpbGluZyAnXG4ncyB0byBvaygpIGNhbGxzLgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jOiBBbGV4ZXkgU3Bpcmlkb25vdiA8bGVzaGFAbmV0bWFuLnJ1PgoJRml4ZWQgdHlwbyBpbiBtZW1zZXQgY2FsbC4KCgkqIGRsbHMva2VybmVsL2NvbnNvbGUuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVVzZSBjYXNlIGluc2Vuc2l0aXZlIGNvbXBhcmlzb24gd2l0aCBwc2V1ZG8gY29uc29sZSBoYW5kbGUgbmFtZXMgaW4KCU9wZW5Db25zb2xlLgoKCSogZGxscy91c2VyL2ZvY3VzLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglNU0ROIGlzIHdyb25nOiBXTV9OQ0FDVElWQVRFIHRha2VzIHRoZSBzYW1lIGxQYXJhbSBhcyBXTV9BQ1RJVkFURS4KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmM6IFVscmljaCBDemVrYWxsYSA8dWxyaWNoQGNvZGV3ZWF2ZXJzLmNvbT4KCVdlIHNob3VsZCBmb3J3YXJkIFdNX0NPTU1BTkQgbm90aWZpY2F0aW9uIHRvIHRoZSBhY3RpdmUgcGFnZSBmb3IgYW55CglhZGRpdGlvbmFsIG5vbi1zdGFuZGFyZCBjb250cm9scyBpbiB0aGUgcHJvcGVydHkgc2hlZXQgZnJhbWUuCgoJKiBwcm9ncmFtcy9yZWdlZGl0L2VkaXQuYzogSm9obiBLLiBIb2htIDxqaG9obUBhY20ub3JnPgoJQWxsb3cgcmVnZWRpdCB0byBlZGl0IChEZWZhdWx0KSBrZXkgdmFsdWVzLgoKCSogZG9jdW1lbnRhdGlvbi9vcGVuZ2wuc2dtbDogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVJlbW92ZSBvYnNvbGV0ZSBzZWN0aW9uIGFib3V0IHRocmVhZC1zYWZldHkuCglDbGVhbnVwIHNlY3Rpb24gb24gY29uZmlndXJhdGlvbiwgbWVyZ2VkIHRoZSByZW1haW5pbmcgYml0IGludG8gdGhlCgkiS25vd24gcHJvYmxlbXMiIHNlY3Rpb24uCglNaXNjZWxsYW5lb3VzIGNsZWFudXBzIGFuZCBzaW1wbGlmaWNhdGlvbnMuCgoJKiBkb2N1bWVudGF0aW9uL2ltcGxlbWVudGF0aW9uLnNnbWw6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJUmVmb3JtYXQgYW5kIGNsZWFudXAgdGhlIHNocmluay5jIGZpbGUgaW5jbHVkZWQgaW4gdGhlIGRvY3VtZW50YXRpb24KCWZvciBjb25zaXN0ZW5jeSB3aXRoIHRoZSBXaW5lIHNvdXJjZS4KCgkqIGRvY3VtZW50YXRpb24vd2luZWxpYi1wb3J0aW5nLnNnbWwsIGRvY3VtZW50YXRpb24vd2luZWxpYi11c2VyLnNnbWw6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJUmVtb3ZlIG9ic29sZXRlIGluZm8gYWJvdXQgd3JhcHBlcnMsIHRoZXkgYXJlIG5vIGxvbmdlciBuZWNlc3NhcnkuCgoJKiBERVZFTE9QRVJTLUhJTlRTOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJVXBkYXRlIHRoZSBkZXZlbG9wZXIgaGludHMgdG8gcmVmbGVjdCB0aGUgdXVpZCBsaWJzIG1vdmUuCglNYWtlIHN1cmUgYWxsIGRpcmVjdG9yaWVzIGVuZCB3aXRoIGEgLywgZm9yIGNvbnNpc3RlbmN5LgoKCSogaW5jbHVkZS91eHRoZW1lLmg6IEtldmluIEtvbHR6YXUgPGtldmluQHBsb3Aub3JnPgoJQWRkIG1pc3NpbmcgRFRCR18qIGRlZmluZXMuCgoJKiBkbGxzL2NvbWN0bDMyL3Rlc3RzL3RhYi5jLCBkbGxzL21zdmNydC90ZXN0cy9maWxlLmMsCgkgIGRsbHMvbXN2Y3J0L3Rlc3RzL2hlYXAuYywgZGxscy9tc3ZjcnQvdGVzdHMvc2NhbmYuYywKCSAgZGxscy9vbGVhdXQzMi90ZXN0cy9vbGVmb250LmMsIGRsbHMvb2xlYXV0MzIvdGVzdHMvdmFydHlwZS5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBZGQgdHJhaWxpbmcgJ1xuJ3MgdG8gb2soKSBjYWxscy4KCgkqIHByb2dyYW1zL3dpbmVkYmcvaW5mby5jOiBTYW1pIEFhcmlvIDxzYW1pLmFhcmlvQHN1cmZldS5maT4KCUZpeCBhIGRlYnVnIG1lc3NhZ2UuCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIyLmM6IEFsYXN0YWlyIEJyaWRnZXdhdGVyIDxueWVmQHNvZnRob21lLm5ldD4KCUEgc21hbGwgbnVtYmVyIG9mIGNsZWFudXBzLgoJQSBuZXcgZnVuY3Rpb24gdG8gZmluZCBhIGdpdmVuIE5BTUUgaW4gYSB0eXBlIGxpYnJhcnkuCglTdXBwb3J0IGZvciBncm93aW5nIGEgdGxiIHNlZ21lbnQgd2hlbiBpdCBvdmVyZmxvd3MuCglEdXBsaWNhdGUgR1VJRCBlbGltaW5hdGlvbi4KCUdVSUQgaGFzaCBmaXhlcy4KCU5BTUUgaGFzaCBmaXhlcy4KCUR1cGxpY2F0ZSBTVFJJTkcgZWxpbWluYXRpb24gZml4ZXMuCglEdXBsaWNhdGUgSU1QT1JUIGVsaW1pbmF0aW9uIGZpeGVzLgoJVHlwZSBpbmZvcm1hdGlvbiBzYXZlIG9yZGVyaW5nIGZpeGVzLgoJU3VwcG9ydCBmb3Igd3JpdGluZyBvdXQgdGhlIENVU1REQVRBIGFuZCBDVVNUREFUQUdVSUQgc2VnbWVudHMuCgoJKiB3aW5kb3dzL21kaS5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJLSBBZGQgdGhlIHNhbWUgcHJvdGVjdGlvbiB0byBNRElfQXVnbWVudEZyYW1lTWVudSBhcyBvbmUgZXhpc3RpbmcgaW4KCSAgTURJX1Jlc3RvcmVGcmFtZU1lbnUgYWdhaW5zdCByZXBldGl0aXZlIGNhbGxzLgoJLSBVc2UgV2luZG93cyBkZWZhdWx0IGljb24gZm9yIHN5c3RlbSBtZW51IGJpdG1hcCBpZiB0aGVyZSBpcyBubyBvbmUKCSAgc3VwcGxpZWQgYnkgYSBjaGlsZCB3aW5kb3cgYXMgV2luZG93cyBkb2VzLgoJLSBVc2UgR2V0U3lzdGVtTWVudSgpIHRvIGxvYWQgc3lzdGVtIG1lbnUgZm9yIGEgY2hpbGQgd2luZG93LAoJICBvdGhlcndpc2UgdGhlcmUgaXMgbm8gd2F5IHRvIGdlbmVyYXRlIFdNX1NZU0NPTU1BTkQgbWVudSBtZXNzYWdlcy4KCS0gUmVzdG9yZSBjaGVjayBpbiBXTV9TSVpFIE1ESSBjaGlsZCBoYW5kbGVyIGVycm9uZW91c2x5IHJlbW92ZWQKCSAgZWFybGllci4KCgkqIGRsbHMveDExZHJ2L2tleWJvYXJkLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglCYWNrIG91dCBhbiB1bmludGVudGlvbmFsIGNoYW5nZSB0aGF0IHNudWNrIGluIHdpdGggdGhlIFhJTSBjaGFuZ2UuCgoJKiBNYWtlLnJ1bGVzLmluLCBkbGxzL2F2aWZpbDMyL01ha2VmaWxlLmluLCBkbGxzL2NvbWNhdC9NYWtlZmlsZS5pbiwKCSAgZGxscy9jb21tZGxnL01ha2VmaWxlLmluLCBkbGxzL2QzZDgvTWFrZWZpbGUuaW4sCgkgIGRsbHMvZDNkOS9NYWtlZmlsZS5pbiwgZGxscy9kM2R4OC9NYWtlZmlsZS5pbiwKCSAgZGxscy9kZHJhdy9NYWtlZmlsZS5pbiwgZGxscy9kZHJhdy90ZXN0cy9NYWtlZmlsZS5pbiwKCSAgZGxscy9kZXZlbnVtL01ha2VmaWxlLmluLCBkbGxzL2RpbnB1dC9NYWtlZmlsZS5pbiwKCSAgZGxscy9kaW5wdXQ4L01ha2VmaWxlLmluLCBkbGxzL2RtYmFuZC9NYWtlZmlsZS5pbiwKCSAgZGxscy9kbWNvbXBvcy9NYWtlZmlsZS5pbiwgZGxscy9kbWltZS9NYWtlZmlsZS5pbiwKCSAgZGxscy9kbWxvYWRlci9NYWtlZmlsZS5pbiwgZGxscy9kbXNjcmlwdC9NYWtlZmlsZS5pbiwKCSAgZGxscy9kbXN0eWxlL01ha2VmaWxlLmluLCBkbGxzL2Rtc3ludGgvTWFrZWZpbGUuaW4sCgkgIGRsbHMvZG11c2ljL01ha2VmaWxlLmluLCBkbGxzL2RtdXNpYzMyL01ha2VmaWxlLmluLAoJICBkbGxzL2RwbGF5eC9NYWtlZmlsZS5pbiwgZGxscy9kc291bmQvTWFrZWZpbGUuaW4sCgkgIGRsbHMvZHNvdW5kL3Rlc3RzL01ha2VmaWxlLmluLCBkbGxzL2Rzd2F2ZS9NYWtlZmlsZS5pbiwKCSAgZGxscy9tc2Rtby9NYWtlZmlsZS5pbiwgZGxscy9tc2h0bWwvTWFrZWZpbGUuaW4sCgkgIGRsbHMvbXNpL01ha2VmaWxlLmluLCBkbGxzL21zaXN5cy9NYWtlZmlsZS5pbiwKCSAgZGxscy9vbGUzMi9NYWtlZmlsZS5pbiwgZGxscy9vbGVhdXQzMi9NYWtlZmlsZS5pbiwKCSAgZGxscy9vbGVhdXQzMi90ZXN0cy9NYWtlZmlsZS5pbiwgZGxscy9xdWFydHovTWFrZWZpbGUuaW4sCgkgIGRsbHMvcnBjcnQ0L01ha2VmaWxlLmluLCBkbGxzL3NoZG9jdncvTWFrZWZpbGUuaW4sCgkgIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwgZGxscy9zaGx3YXBpL01ha2VmaWxlLmluLAoJICBkbGxzL3VybG1vbi9NYWtlZmlsZS5pbiwgZGxscy93aW5lZDNkL01ha2VmaWxlLmluLAoJICBkbGxzL3dpbm1tL3dpbmVhbHNhL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL3dpbmVhcnRzL01ha2VmaWxlLmluLAoJICBkbGxzL3dpbm1tL3dpbmVhdWRpb2lvL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL3dpbmVqYWNrL01ha2VmaWxlLmluLAoJICBkbGxzL3dpbm1tL3dpbmVuYXMvTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vd2luZW9zcy9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvd2luZWZpbGUvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmVtZW51YnVpbGRlci9NYWtlZmlsZS5pbjoKCU9ubHkgbGluayBhZ2FpbnN0IGxpYmR4Z3VpZCB3aGVyZSBuZWNlc3NhcnkuCgoJKiBjb250cm9scy9tZW51LmMsIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYywKCSAgZGxscy9hdmlmaWwzMi9lZGl0c3RyZWFtLmMsIGRsbHMvY2FiaW5ldC9jYWJleHRyYWN0LmMsCgkgIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYywgZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYywKCSAgZGxscy9jb21tZGxnL2ZpbGVkbGcuYywgZGxscy9kZHJhdy9tZXNhLmMsIGRsbHMvZ2RpL2JpZGkuYywKCSAgZGxscy9rZXJuZWwvY29tcHV0ZXJuYW1lLmMsIGRsbHMva2VybmVsL25lX3NlZ21lbnQuYywKCSAgZGxscy9tc3ZpZGVvL21zcmxlMzIvbXNybGUzMi5jLCBkbGxzL25ldGFwaTMyL25idC5jLAoJICBkbGxzL29sZWF1dDMyL3R5cGVsaWIyLmMsIGRsbHMvcnBjcnQ0L3JwY19iaW5kaW5nLmMsCgkgIGRsbHMvcnBjcnQ0L3JwY19zZXJ2ZXIuYywgZGxscy9zZXR1cGFwaS9zZXR1cGNhYi5jLAoJICBkbGxzL3NoZWxsMzIvY2hhbmdlbm90aWZ5LmMsIGRsbHMvc2hlbGwzMi9waWRsLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGxmaWxlb3AuYywgZGxscy9zaGVsbDMyL3NobGZzYmluZC5jLAoJICBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLCBkbGxzL3NobHdhcGkvcmVnLmMsIGRsbHMvc2hsd2FwaS90aHJlYWQuYywKCSAgZGxscy91c2VyL2V4dGljb24uYywgZGxscy91c2VyL3Jlc291cmNlLmMsIGRsbHMvd2luaW5ldC91cmxjYWNoZS5jLAoJICBkbGxzL3dpbm1tL3dpbmVhbHNhL2F1ZGlvXzA1LmMsIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jLAoJICBkbGxzL3dzb2NrMzIvc2VydmljZS5jLCBkbGxzL3dzb2NrMzIvc29ja2V0LmMsIGRsbHMveDExZHJ2L3hyYW5kci5jLAoJICB3aW5kb3dzL3VzZXIuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQWRkIG1pc3NpbmcgJ1xuJ3MgdG8gZGVidWcgdHJhY2VzLgoKMjAwNC0wMS0yNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIE1ha2UucnVsZXMuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL01ha2VkbGwucnVsZXMuaW4sCgkgIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvTWFrZXRlc3QucnVsZXMuaW4sIGRsbHMvZHhndWlkLy5jdnNpZ25vcmUsCgkgIGRsbHMvZHhndWlkL01ha2VmaWxlLmluLCBkbGxzL2R4Z3VpZC9keDhndWlkLmMsCgkgIGRsbHMvZHhndWlkL2R4OWd1aWQuYywgZGxscy9keGd1aWQvZHhndWlkLmMsIGRsbHMvbWFrZV9kbGxzLAoJICBkbGxzL3V1aWQvLmN2c2lnbm9yZSwgZGxscy91dWlkL01ha2VmaWxlLmluLCBkbGxzL3V1aWQvdXVpZC5jLAoJICBsaWJzL01ha2VmaWxlLmluLCBwcm9ncmFtcy9NYWtlcHJvZy5ydWxlcy5pbjoKCU1vdmVkIGxpYnV1aWQgdG8gdGhlIGRsbHMgZGlyZWN0b3J5LCBhbmQgbW92ZWQgdGhlIERpcmVjdFggR1VJRHMgaW50bwoJYSBzZXBhcmF0ZSBsaWJkeGd1aWQgbGlicmFyeS4KCgkqIGRsbHMvdXh0aGVtZS9tc3N0eWxlcy5jOiBLZXZpbiBLb2x0emF1IDxrZXZpbkBwbG9wLm9yZz4KCUVuc3VyZSBNU1NUWUxFU19TZXRBY3RpdmVUaGVtZSBmYWlscyBwcm9wZXJseSB3aGVuIHRoZW1lIGlzIGludmFsaWQuCgoJKiBkb2N1bWVudGF0aW9uL3Rlc3Rpbmcuc2dtbDogQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQGFsdW0ud3BpLmVkdT4KCVZpc3VhbCBTdHVkaW8gNiB1c2VycyBzaG91bGQgZ2V0IHRoZSBwcm9jZXNzb3IgcGFjay4gIE5vdGUgdGhpcyBpbiB0aGUKCVZpc3VhbCBDKysgc2VjdGlvbi4KCgkqIGRsbHMvYWR2YXBpMzIvdGVzdHMvcmVnaXN0cnkuYywgZGxscy9ycGNydDQvdGVzdHMvcnBjLmMsCgkgIGRsbHMvc2hlbGwzMi90ZXN0cy9zaGxmaWxlb3AuYywgZGxscy9rZXJuZWwvdGVzdHMvYWxsb2MuYywKCSAgZGxscy9rZXJuZWwvdGVzdHMvY29uc29sZS5jLCBkbGxzL2tlcm5lbC90ZXN0cy9kaXJlY3RvcnkuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQWRkIHRyYWlsaW5nICdcbidzIHRvIG9rKCkgY2FsbHMuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYywgZGxscy9jb21jdGwzMi9jb21tY3RybC5jOgoJVGhlcmUgaXMgbm8gbmVlZCBmb3IgYSBwcml2YXRlIGhlYXAgaW4gY29tY3RsMzIsIG1lbW9yeSBhbGxvY2F0aW9ucwoJc2hvdWxkIGdvIHRvIHRoZSBzdGFuZGFyZCBwcm9jZXNzIGhlYXAgKHJlcG9ydGVkIGJ5IEdlIHZhbiBHZWxkb3JwKS4KCgkqIGNvbnRyb2xzL2VkaXQuYywgZGxscy91c2VyL21lc3NhZ2UuYywgd2luZG93cy9kZWZ3bmQuYywKCSAgd2luZG93cy93aW5wcm9jLmM6CglZb3NoaXJvIFRha2VubyA8dGFyby14QGp1c3RzeXN0ZW0uY28uanA+CglJbiBXaW5kb3dzLCB0aGUgbGVhZGluZyBieXRlIGZvciBtdWx0aWJ5dGUgY2hhcmFjdGVycyBhcmUgc2V0IHRvIHVwcGVyCglieXRlLiBJZiBzaW5nbGUgYnl0ZSBjaGFyYWN0ZXIgaXMgdXNlZCwgdGhlIHVwcGVyIGJ5dGUgaXMgc2V0IHRvIDAuCgoJKiB3aW5kb3dzL21kaS5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJSW4gdGhlIFdNX01ESVNFVE1FTlUgaGFuZGxlciB1c2UgYW4gZXhpc3RpbmcgZnJhbWUgbWVudSBpZiB0aGUgcGFzc2VkCgl2YWx1ZSBpcyAwLgoJVmlzaW8gZXhwZWN0cyB0aGF0IHNlcGFyYXRvciBpbiB0aGUgV2luZG93IG1lbnUgaGFzIElEIDAuCglDb3BlIHdpdGggYSBkZXN0cm95ZWQgbWVudSBoYW5kbGUgaW4gV01fTURJUkVGUkVTSE1FTlUgaGFuZGxlci4KCgkqIGRsbHMvZ2x1dDMyL2dsdXQuYzogSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCUFkZGVkIGdsdXRDcmVhdGVNZW51V2l0aEV4aXQsIGdsdXRDcmVhdGVXaW5kb3dXaXRoRXhpdCBhbmQKCWdsdXRJbml0V2l0aEV4aXQgZnVuY3Rpb25zLgoKCSogZGxscy91eHRoZW1lL21zc3R5bGVzLmM6IFZpdGFsaXkgTWFyZ29sZW4gPHdpbmUtcGF0Y2hAa2lldmluZm8uY29tPgoJUHJldmVudCBzZWdmYXVsdCBpZiBubyB0aGVtZSBpcyBzZXQuCgoJKiBkbGxzL3VzZXIvd3NwcmludGYuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVNtYWxsIGZpeCBmb3IgdGhlIFdQUl9TSUdORUQgY2FzZSAoY291bnQgdGhlIHNpZ24pLgoKCSogZGxscy9ycGNydDQvcnBjX2JpbmRpbmcuYzoKCUdyZWdvcnkgTS4gVHVybmVyIDxnbXR1cm5lcjAwN0BhbWVyaXRlY2gubmV0PgoJV2luZSBhbHNvIHN1cHBvcnRzIHRoZSBuY2Fjbl9ucCBwcm90b2NvbCBzZXF1ZW5jZS4KCgkqIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwgZGxscy9zaGVsbDMyL3BpZGwuYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmg6CglNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJLSBkb24ndCBsaW5rIGRpcmVjdGx5IHRvIE5URExMOyB1c2UgTXVsdGlCeXRlVG9XaWRlQ2hhcigpIGluc3RlYWQgb2YKCSAgUnRsQ3JlYXRlVW5pY29kZVN0cmluZ0Zyb21Bc2NpaXooKQoJLSBkaXJlY3RseSBjYWxsIEluaXRDb21tb25Db250cm9sc0V4KCkKCgkqIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYzogTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCS0gZGVmaW5lIGFkZGl0aW9uYWwgc2hlbGwgcGF0aHMgZm9yIENTSURMXy4uLiBjb25zdGFudHMKCS0gcmVtb3ZlIHNvbWUgc3VwZXJmbHVvdXMgY29tbWFzCgoyMDA0LTAxLTIzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jb21jdGwzMi9yZWJhci5jLCBkbGxzL29sZTMyL2NvbXBvYmouYywKCSAgZGxscy9vbGUzMi9maWxlbW9uaWtlci5jLCBkbGxzL29sZTMyL2lmcy5oLCBkbGxzL29sZTMyL2l0ZW1tb25pa2VyLmMsCgkgIGRsbHMvb2xlMzIvb2xlMi5zcGVjLCBkbGxzL29sZTMyL29sZTJfMTYuYywgZGxscy9vbGUzMi9zdG9yYWdlMzIuYywKCSAgZGxscy9vbGVhdXQzMi9vbGUyZGlzcC5oLCBkbGxzL29sZWNsaS9vbGVjbGkxNi5jLAoJICBkbGxzL29sZWNsaS9vbGVjbGlfbWFpbi5jLCBkbGxzL29sZXN2ci9vbGVzdnJfbWFpbi5jLAoJICBpbmNsdWRlL2NvbW1jdHJsLmgsIGluY2x1ZGUvb2JqYmFzZS5oLCBpbmNsdWRlL3d0eXBlcy5oLAoJICBpbmNsdWRlL3d0eXBlcy5pZGwsIHdpbmRvd3Mvc3B5LmM6CglNb3ZlZCBhIGZldyByZW1haW5pbmcgMTYtYml0IGRlZmluaXRpb25zIG91dCBvZiB0aGUgc3RhbmRhcmQgaGVhZGVycy4KCgkqIGRsbHMvc2hsd2FwaS9wYXRoLmMsIGRsbHMvc2hsd2FwaS9zdHJpbmcuYywgZGxscy9zaGx3YXBpL3VybC5jLAoJICBpbmNsdWRlL3NobHdhcGkuaDoKCUdlIHZhbiBHZWxkb3JwIDxnZUBnc2Uubmw+CglGaXggdmFyaW91cyBmdW5jdGlvbiBwcm90b3R5cGVzIHRvIGNvbmZvcm0gdG8gUFNESy4KCgkqIGRsbHMvd2luaW5ldC90ZXN0cy9odHRwLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQWRkIHRyYWlsaW5nICdcbidzIHRvIG9rKCkgY2FsbHMuCglGaXggYSBjb3VwbGUgb2Ygc3BlbGxpbmcgZXJyb3JzLgoKCSogZGxscy9kbXVzaWMvZG11c2ljLmMsIGRsbHMvZHBsYXl4L2RwbGF5LmMsIGRsbHMvZHBsYXl4L2RwbG9iYnkuYywKCSAgZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvb2xlMnN0dWJzLmMsIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbG9sZS5jLCBpbmNsdWRlL29iamJhc2UuaCwgaW5jbHVkZS9vbGUyLmg6CglHZSB2YW4gR2VsZG9ycCA8Z2VAZ3NlLm5sPgoJRml4IHZhcmlvdXMgZnVuY3Rpb24gcHJvdG90eXBlcyB0byBjb25mb3JtIHRvIFBTREsuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9kcml2ZS5jLCBkbGxzL2tlcm5lbC90ZXN0cy9lbnZpcm9uLmMsCgkgIGRsbHMvdXNlci90ZXN0cy9jbGFzcy5jLCBkbGxzL3VzZXIvdGVzdHMvbGlzdGJveC5jLAoJICBkbGxzL3VzZXIvdGVzdHMvcmVzb3VyY2UuYywgZGxscy91c2VyL3Rlc3RzL3N5c3BhcmFtcy5jLAoJICBkbGxzL3VzZXIvdGVzdHMvd2luLmMsIGRsbHMvdXNlci90ZXN0cy93c3ByaW50Zi5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBZGQgdHJhaWxpbmcgJ1xuJ3MgdG8gb2soKSBjYWxscy4KCgkqIGRsbHMvd2luaW5ldC90ZXN0cy9odHRwLmMsIGRvY3VtZW50YXRpb24vYnVncy5zZ21sOgoJU3lsdmFpbiBQZXRyZW9sbGUgPHNwZXRyZW9sbGVAeWFob28uZnI+Cgl3aW5laHEuY29tIC0+IHdpbmVocS5vcmcKCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsX0NuLnJjLCBkbGxzL2NvbWN0bDMyL2NvbWN0bF9EZS5yYywKCSAgZGxscy9jb21jdGwzMi9jb21jdGxfRW4ucmMsIGRsbHMvY29tY3RsMzIvY29tY3RsX0VzLnJjLAoJICBkbGxzL2NvbWN0bDMyL2NvbWN0bF9Gci5yYywgZGxscy9jb21jdGwzMi9jb21jdGxfSXQucmMsCgkgIGRsbHMvY29tY3RsMzIvY29tY3RsX0phLnJjLCBkbGxzL2NvbWN0bDMyL2NvbWN0bF9Lby5yYywKCSAgZGxscy9jb21jdGwzMi9jb21jdGxfTmwucmMsIGRsbHMvY29tY3RsMzIvY29tY3RsX1BsLnJjLAoJICBkbGxzL2NvbWN0bDMyL2NvbWN0bF9QdC5yYywgZGxscy9jb21jdGwzMi9jb21jdGxfUnUucmMsCgkgIGRsbHMvY29tY3RsMzIvY29tY3RsX1NpLnJjLCBkbGxzL2NvbWN0bDMyL2NvbWN0bF9UaC5yYzoKCUh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglUaGUgdGFiIGNvbnRyb2wgc2hvdWxkIGJlIG11bHRpbGluZS4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOiBHZSB2YW4gR2VsZG9ycCA8Z2VAZ3NlLm5sPgoJRGlzY2FyZCBtb3VzZSBidXR0b24gdXAgZXZlbnRzIGlmIG5vIGJ1dHRvbiBpcyBjdXJyZW50bHkgcHJlc3NlZC4KCgkqIGRsbHMvc2hlbGwzMi9zaGZsZHJfZGVza3RvcC5jOiBNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJLSBJU0ZfRGVza3RvcF9mbkdldFVJT2JqZWN0T2YoKTogYWxsb3cgY29udGV4dCBtZW51IG9uIHRoZSBkZXNrdG9wCgkgIHdpdGhvdXQgYW55IHNlbGVjdGVkIGl0ZW07IHByZXNlcnZlIHJldHVybiBlcnJvciBjb2Rlcy4KCS0gSVNGX0Rlc2t0b3BfZm5HZXREaXNwbGF5TmFtZU9mKCk6IGRvbid0IGluaXRpYWxpemUgd2hvbGUgY2hhcmFjdGVyCgkgIGFycmF5IHdpdGggemVyby4KCgkqIGRsbHMvc2hlbGwzMi9zaGZsZHJfZnMuYzogTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCS0gSVNoZWxsRm9sZGVyX2ZuUGFyc2VEaXNwbGF5TmFtZSgpOiByZXR1cm4gRV9JTlZBTElEQVJHIGluc3RlYWQgb2YKCSAgRV9PVVRPRk1FTU9SWS4KCS0gSVNoZWxsRm9sZGVyX2ZuR2V0VUlPYmplY3RPZigpOiBwcmVzZXJ2ZSByZXR1cm4gZXJyb3IgY29kZXMuCgktIElTaGVsbEZvbGRlcl9mbkdldERpc3BsYXlOYW1lT2YoKTogZG9uJ3QgaW5pdGlhbGl6ZSB3aG9sZSBjaGFyYWN0ZXIKCSAgYXJyYXkgd2l0aCB6ZXJvLgoKCSogZGxscy9zaGVsbDMyL3NobGZvbGRlci5jOiBNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJSW1wcm92ZWQgZXJyb3IgaGFuZGxpbmcuCglTSEVMTDMyX0dldEl0ZW1BdHRyaWJ1dGVzKCk6IHN1cHBvcnQgZm9yIFNGR0FPX0xJTksgYXR0cmlidXRlLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvbXN2aWRjMzIvLmN2c2lnbm9yZSwKCSAgZGxscy9tc3ZpZGMzMi9NYWtlZmlsZS5pbiwgZGxscy9tc3ZpZGMzMi9tc3ZpZGMzMi5zcGVjLAoJICBkbGxzL21zdmlkYzMyL21zdmlkZW8xLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglNZXJnZWQgZmZtcGVnJ3MgTVMgVmlkZW8gMSBkZWNvZGVyIGJ5IE1pa2UgTWVsYW5zb24uCgoJKiBkbGxzL3V4dGhlbWUvZHJhdy5jLCBkbGxzL3V4dGhlbWUvbWV0cmljLmMsIGRsbHMvdXh0aGVtZS9tc3N0eWxlcy5jLAoJICBkbGxzL3V4dGhlbWUvbXNzdHlsZXMuaCwgZGxscy91eHRoZW1lL3Byb3BlcnR5LmMsCgkgIGRsbHMvdXh0aGVtZS9zdHlsZW1hcC5jLCBkbGxzL3V4dGhlbWUvc3lzdGVtLmMsIGRsbHMvdXh0aGVtZS91eGluaS5jOgoJS2V2aW4gS29sdHphdSA8a2V2aW5AcGxvcC5vcmc+CglMb2FkIHByb3BlcnRpZXMgZnJvbSB0aGUgdGhlbWUgaW5pLgoJSW1wbGVtZW50ZWQgbW9zdCBvZiB0aGUgR2V0VGhlbWUqIGZ1bmN0aW9ucy4KCgkqIGRsbHMvc2hlbGwzMi9zaGZsZHJfbXljb21wLmM6IE1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CglJU0ZfTXlDb21wdXRlcl9mbkdldERpc3BsYXlOYW1lT2YoKTogcmV0dXJuIENMU0lEIHBhdGhzIG9mIHZpcnR1YWwKCWZvbGRlcnMgcm9vdGVkIHVuZGVyICJNeSBDb21wdXRlciIgZm9sZGVyLCBiZXR0ZXIgZXJyb3IgaGFuZGxpbmcuCgoJKiBkbGxzL3NoZWxsMzIvc2hmbGRyX2Rlc2t0b3AuYzogTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCVJldHVybiAnTXkgQ29tcHVlcicgUElETCB3aGVuIGNhbGxpbmcgRGVza3RvcC0+UGFyc2VEaXNwbGF5TmFtZSgpIHdpdGgKCWVtcHR5IHBhdGggc3RyaW5nLgoKCSogZGxscy9jb21jdGwzMi8uY3ZzaWdub3JlLCBkbGxzL2NvbWN0bDMyL01ha2VmaWxlLmluLAoJICBkbGxzL2NvbWN0bDMyL3JzcmMucmM6CglHZSB2YW4gR2VsZG9ycCA8Z2VAZ3NlLm5sPgoJR2VuZXJhdGUgYWxsIGJpbmFyeSByZXNvdXJjZXMgdXNpbmcgYmluMnJlcy4KCgkqIGRsbHMvd2luZXBzL3BzLmM6IEJsYWtlIExldmVyZXR0IDxibGV2ZXJldHRAYXR0Lm5ldD4KCVByaW50aW5nIGEgZGFzaGVkIGxpbmUgY2F1c2VzIGFsbCBsYXRlciBzb2xpZCBsaW5lcyBpbiBwb3N0c2NyaXB0CglvdXRwdXQgdG8gYmUgZGFzaGVkLgoKCSogZGxscy9nZGkvdGVzdHMvZ2VuZXJhdGVkLmMsIGRsbHMva2VybmVsL3Rlc3RzL2dlbmVyYXRlZC5jLAoJICBkbGxzL250ZGxsL3Rlc3RzL2dlbmVyYXRlZC5jLCBkbGxzL3NoZWxsMzIvdGVzdHMvZ2VuZXJhdGVkLmMsCgkgIGRsbHMvc2hsd2FwaS90ZXN0cy9nZW5lcmF0ZWQuYywgZGxscy91cmxtb24vdGVzdHMvZ2VuZXJhdGVkLmMsCgkgIGRsbHMvdXNlci90ZXN0cy9nZW5lcmF0ZWQuYywgZGxscy93aW5pbmV0L3Rlc3RzL2dlbmVyYXRlZC5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBZGQgdHJhaWxpbmcgJ1xuJ3MgdG8gb2soKSBjYWxscy4KCUNoZWNrIHdoZXRoZXIgX01TQ19WRVIgaXMgZGVmaW5lZC4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL2F0b20uYywgZGxscy9rZXJuZWwvdGVzdHMvY29kZXBhZ2UuYywKCSAgZGxscy93aW5zb2NrL3Rlc3RzL3NvY2suYywgZGxscy93aW5zcG9vbC90ZXN0cy9pbmZvLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFkZCB0cmFpbGluZyAnXG4ncyB0byBvaygpIGNhbGxzLgoKCSogZGxscy9kM2Q4L2RpcmVjdHguYywgZGxscy9kbWxvYWRlci9sb2FkZXJzdHJlYW0uYywgZGxscy9rZXJuZWwvY3B1LmMsCgkgIGRsbHMva2VybmVsL2ZpbGUuYywgZGxscy9rZXJuZWwvc3lzdGVtLmMsIGRsbHMva2VybmVsL3RpbWUuYywKCSAgZGxscy9rZXJuZWwvdmlydHVhbC5jLCBkbGxzL250ZGxsL2Nkcm9tLmMsIGRsbHMvbnRkbGwvZmlsZS5jLAoJICBkbGxzL250ZGxsL3N5bmMuYywgZGxscy9udGRsbC90aW1lLmMsIGRsbHMvbnRkbGwvdmlydHVhbC5jLAoJICBkbGxzL29sZTMyL2FudGltb25pa2VyLmMsIGRsbHMvb2xlMzIvY29tcG9iai5jLAoJICBkbGxzL29sZTMyL2NvbXBvc2l0ZW1vbmlrZXIuYywgZGxscy9vbGUzMi9kYXRhY2FjaGUuYywKCSAgZGxscy9vbGUzMi9maWxlbW9uaWtlci5jLCBkbGxzL29sZTMyL2dpdC5jLAoJICBkbGxzL29sZTMyL2hnbG9iYWxzdHJlYW0uYywgZGxscy9vbGUzMi9pdGVtbW9uaWtlci5jLAoJICBkbGxzL29sZTMyL21lbWxvY2tieXRlcy5jLCBkbGxzL29sZTMyL21lbWxvY2tieXRlczE2LmMsCgkgIGRsbHMvb2xlMzIvb2xlcHJveHkuYywgZGxscy9vbGUzMi9ycGMuYywKCSAgZGxscy9vbGUzMi9zdGdfYmlnYmxvY2tmaWxlLmMsIGRsbHMvb2xlMzIvc3RnX3N0cmVhbS5jLAoJICBkbGxzL29sZTMyL3N0b3JhZ2UuYywgZGxscy9vbGUzMi9zdG9yYWdlMzIuYywKCSAgZGxscy9vbGVhdXQzMi9vbGVmb250LmMsIGRsbHMvb2xlYXV0MzIvdG1hcnNoYWwuYywKCSAgZGxscy9vbGVhdXQzMi92YXJ0eXBlLmMsIGRsbHMvcnBjcnQ0L25kcl9vbGUuYywKCSAgZGxscy9zaGVsbDMyL3NoZmxkcl9teWNvbXAuYywgZGxscy9zaGx3YXBpL2lzdHJlYW0uYywKCSAgZGxscy91cmxtb24vdW1vbi5jLCBkbGxzL3dpbmVkb3MvaW50MmYuYywgZGxscy93aW5lZG9zL3ZnYS5jLAoJICBkbGxzL3dpbmVkb3MvdnhkLmMsIGZpbGVzL2Rvc19mcy5jLCBmaWxlcy9kcml2ZS5jLCBmaWxlcy9maWxlLmMsCgkgIGluY2x1ZGUvb2JqYmFzZS5oLCBpbmNsdWRlL3dpbm50LmgsIG1pc2MvcmVnaXN0cnkuYywKCSAgcHJvZ3JhbXMvcnBjc3MvcnBjc3NfbWFpbi5jLCBwcm9ncmFtcy93Y21kL2RpcmVjdG9yeS5jOgoJR2UgdmFuIEdlbGRvcnAgPGdlQGdzZS5ubD4KCVJlbmFtZSBMQVJHRV9JTlRFR0VSIGFuZCBVTEFSR0VfSU5URUdFUiBtZW1iZXJzICJzIiB0byAidSIgdG8gY29uZm9ybQoJd2l0aCBQU0RLLgoKCSogZG9jdW1lbnRhdGlvbi9pbnN0YWxsaW5nLnNnbWw6CglJdmFuIExlbyBNdXJyYXktU21pdGggPHB1b3RpQGlud2luZC5pdD4KCUltcHJvdmVkIFJQTSBpbnN0YWxsYXRpb24gaW5zdHJ1Y3Rpb25zLgoKCSogZGxscy9jb21tZGxnL2NkbGdfSXQucmMsIGRsbHMvd2luZXBzL3dwc19JdC5yYywKCSAgcHJvZ3JhbXMvcmVnZWRpdC9Fcy5yYywgcHJvZ3JhbXMvcmVnZWRpdC9Gci5yYywKCSAgcHJvZ3JhbXMvcmVnZWRpdC9JdC5yYywgcHJvZ3JhbXMvcmVnZWRpdC9ObC5yYywKCSAgcHJvZ3JhbXMvcmVnZWRpdC9SdS5yYywgcHJvZ3JhbXMvcmVnZWRpdC9TaS5yYzoKCUl2YW4gTGVvIE11cnJheS1TbWl0aCA8cHVvdGlAaW53aW5kLml0PgoJUmVzb3VyY2UgdXBkYXRlcy4KCjIwMDQtMDEtMjEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBBTk5PVU5DRSwgQ2hhbmdlTG9nLCBWRVJTSU9OLCBjb25maWd1cmU6IFJlbGVhc2UgMjAwNDAxMjEuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjIwMDQtMDEtMjEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmMsIGRsbHMvc2hlbGwzMi91bmRvY3NoZWxsLmgsCgkgIGluY2x1ZGUvc2hsb2JqLmg6CglSb2xmIEthbGJlcm1hdHRlciA8cm9sZi5rYWxiZXJtYXR0ZXJAY2l0ZW5nLmNvbT4KCUltcGxlbWVudCBQYXRoR2V0U2hvcnRQYXRoQS9XIGFuZCBjaGFuZ2UgaXRzIHByb3RvdHlwZSB0byBtYXRjaCB0aGUKCWRvY3VtZW50YXRpb24gb24gTVNETi4KCgkqIGRsbHMvc2hlbGwzMi9jbGlwYm9hcmQuYzogTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCU9ubHkgcmV0dXJuIHZhbGlkIGZpbGUgc3lzdGVtIG5hbWVzIGZyb20gUmVuZGVyRklMRU5BTUVBL1coKSBieSB1c2luZwoJU0hFTExfR2V0UGF0aEZyb21JRExpc3RBL1coKS4KCgkqIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9waWRsLmg6CglNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJR2UgdmFuIEdlbGRvcnAgPGdlQGdzZS5ubD4KCVJlaW1wbGVtZW50YXRpb24gb2YgU0hHZXRQYXRoRnJvbUlETGlzdEEvVygpIHVzaW5nIHRoZSBuZXcgaGVscGVyCglmdW5jdGlvbnMgU0hFTExfR2V0UGF0aEZyb21JRExpc3RBL1coKS4gVGhlIG5ldyBpbXBsZW1lbnRhdGlvbiBhdm9pZHMKCXVzaW5nIElTaGVsbEZvbGRlcjo6R2V0RGlzcGxheU5hbWVPZigpLCBzbyB0aGF0IGl0CgktIHJldHVybnMgdGhlIGFic29sdXRlIGZpbGUgc3lzdGVtIHBhdGgsIG5vdCByZWxhdGl2ZSB0byB0aGUgZGVrc3RvcAoJLSByZXR1cm5zIEZBTFNFIGFzIGVycm9yIGNvZGUgaWYgdGhlIHBhdGggY2FuIG5vdCBjb252ZXJ0ZWQgaW4gYSB2YWxpZAoJICBmaWxlIHN5c3RlbSBwYXRoCgktIGRvZXNuJ3QgcmV0dXJuIHZpcnR1YWwgQ0xTSUQgcGF0aHMKCgkqIGRsbHMvb2xlYXV0MzIvTWFrZWZpbGUuaW4sIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzIuc3BlYywKCSAgZGxscy9vbGVhdXQzMi90eXBlbGliLmgsIGRsbHMvb2xlYXV0MzIvdHlwZWxpYjIuYzoKCUFsYXN0YWlyIEJyaWRnZXdhdGVyIDxueWVmQHNvZnRob21lLm5ldD4KCUluaXRpYWwgaW1wbGVtZW50YXRpb24gb2YgQ3JlYXRlVHlwZUxpYjIoKSBhbmQgdGhlIElDcmVhdGVUeXBlTGliMiBhbmQKCUlDcmVhdGVUeXBlSW5mbzIgaW50ZXJmYWNlcy4KCgkqIHdpbmRvd3Mvc3B5LmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglBZGQgY29ycmVjdCB0cmVldmlldyBzdHJ1Y3RzIHRvIG1lc3NhZ2Ugc3B5LgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJTW92ZSB0aGUgc2VsZWN0aW9uIHRvIHRoZSBwcmV2aW91cyBzaWJsaW5nIGlmIGl0IGNhbid0IGdvIHRvIHRoZSBuZXh0CglvciB0aGUgcGFyZW50LgoJRml4IHRoZSBzZWxlY3Rpb24gY2hhbmdlIGxvZ2ljLgoKCSogZGxscy9zaGVsbDMyL2ZvbGRlcnMuYywgZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaDoKCU1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CglVc2UgZnVsbCBwYXRocyBpbnN0ZWFkIG9mIG9ubHkgZmlsZW5hbWVzIGluIGljb24gY2FjaGUgdG8gZGlzdGluZ3Vpc2gKCWJldHdlZW4gZGlmZmVyZW50IGZpbGVzIHdpdGggdGhlIHNhbWUgbmFtZS4KCgkqIGRsbHMvc2hlbGwzMi9waWRsLmM6IE1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CglJbXBsZW1lbnRlZCBTSEdldFJlYWxJREwoKS4KCgkqIGRsbHMvaW1tMzIvTWFrZWZpbGUuaW4sIGRsbHMvaW1tMzIvaW1tLmMsIGRsbHMvaW1tMzIvaW1tMzIuc3BlYywKCSAgZGxscy94MTFkcnYvTWFrZWZpbGUuaW4sIGRsbHMveDExZHJ2L2V2ZW50LmMsIGRsbHMveDExZHJ2L2tleWJvYXJkLmMsCgkgIGRsbHMveDExZHJ2L3dpbmRvdy5jLCBkbGxzL3gxMWRydi94MTFkcnYuaCwgZGxscy94MTFkcnYveDExZHJ2LnNwZWMsCgkgIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmMsIGRsbHMveDExZHJ2L3hpbS5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCVVzZSBYMTEgWElNIGNhbGxiYWNrcyB0byBlbmFibGUgZnVsbCBJTUUgc3VwcG9ydC4KCUNvcnJlY3Qgc29tZSB0aW1pbmcgaXNzdWVzIHdpdGggWElNIGlucHV0LgoJU3RhcnQgdG8gcHJvdmlkZSB0aGUgZnJhbWV3b3JrIGZvciB0aGUgTVNJTUUgbWVzc2FnZXMuCgoJKiBwcm9ncmFtcy9ydW5kbGwzMi9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvcnVuZGxsMzIvcnVuZGxsMzIuYzoKCURvbid0IGxpbmsgZGlyZWN0bHkgdG8gMTYtYml0IEFQSXMgZm9yIHBvcnRhYmlsaXR5IHJlYXNvbnMgKGJhc2VkIG9uIGEKCXBhdGNoIGJ5IFN0ZXZlbiBFZHdhcmRzKS4KCgkqIHdpbmRvd3MvcGFpbnRpbmcuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJSW4gUkRXX1VwZGF0ZVJnbigpLCBpZiBoUmduIGlzIHplcm8sIGNsZWFyIHRoZSB3aW5kb3dzIHVwZGF0ZSByZWdpb24KCWlmIGl0IGlzIGFuIGVtcHR5IHJlZ2lvbi4KCjIwMDQtMDEtMjAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL29sZWF1dDMyL3Rlc3RzL3ZhcnRlc3QuYywgZGxscy9vbGVhdXQzMi90ZXN0cy92YXJ0eXBlLmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJUmVtb3ZlIHRlc3RzIHRoYXQgYXJlIGNvdmVyZWQgYnkgdmFydHlwZS5jLgoJQ2FsbCBieSBwb2ludGVyIGZvciBtb3JlIGZ1bmN0aW9ucyBub3QgYXZhaWxhYmxlIGluIGVhcmx5IHZlcnNpb25zLgoJQWRkIHRlc3RzIGZvciBWYXJGaXgvVmFySW50L1Zhck5lZywgVmFyRm9ybWF0ICJvbi9vZmYveWVzL25vIi4KCUZpeCB0ZXN0cyB0aGF0IGFzc3VtZWQgcmVsYXRpdmUgZGF0ZXMuCglNYWtlIEJTVFIgY29weSB0ZXN0IHNlcGFyYXRlLgoKCSogZGxscy9zaGVsbDMyL3BpZGwuYzogTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCS0gU0hHZXREYXRhRnJvbUlETGlzdEEvVygpOiBoYW5kbGUgZHJpdmVzIHdoZW4gcmV0cmlldmluZyBmaWxlCgkgIGF0dHJpYnV0ZXMKCS0gZml4ZWQgZXJyb3IgaGFuZGxpbmcgdG8gYXZvaWQgR1BGcwoKCSogdG9vbHMvd2luYXBpL2NfdHlwZS5wbTogSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglGaXhlZCBtaXN1c2Ugb2Ygc2NhbGFyIHJlZmVyZW5jZSB2YXJpYWJsZS4KCgkqIGRsbHMvcnBjcnQ0L3JwY19iaW5kaW5nLmMsIGluY2x1ZGUvcnBjZGNlLmg6CglNaWtlIEhlYXJuIDxtaWtlQHRoZW9yZXRpYy5jb20+CglJbXBsZW1lbnRlZCBScGNJc1Byb3RTZXFWYWxpZC4KCgkqIGRsbHMvb3BlbmdsMzIvd2dsLmMsIGRsbHMvb3BlbmdsMzIvd2dsLmgsIGRsbHMvdHR5ZHJ2L2JpdG1hcC5jLAoJICBkbGxzL3R0eWRydi9ncmFwaGljcy5jLCBkbGxzL3R0eWRydi9vYmplY3RzLmMsIGRsbHMvdHR5ZHJ2L3VzZXIuYywKCSAgZGxscy90dHlkcnYvd25kLmMsIGRsbHMvd2luZXBzL2Rvd25sb2FkLmMsIGRsbHMvd2luZXBzL3Blbi5jLAoJICBkbGxzL3gxMWRydi9jbGlwYm9hcmQuYywgZGxscy94MTFkcnYvY2xpcHBpbmcuYywgZGxscy94MTFkcnYvaW5pdC5jLAoJICBkbGxzL3gxMWRydi9vcGVuZ2wuYywgZGxscy94MTFkcnYvd2lucG9zLmMsIGRsbHMveDExZHJ2L3dpbnRhYi5jLAoJICBkbGxzL3gxMWRydi94MTFkcnYuaCwgZGxscy94MTFkcnYveDExZHJ2X21haW4uYywKCSAgZGxscy94MTFkcnYveDExZm9udC5oLCBkbGxzL3gxMWRydi94dmlkbW9kZS5jOgoJUmVtb3ZlZCBzb21lIHVubmVjZXNzYXJ5IGluY2x1c2lvbnMgb2YgZ2RpLmguCgoJKiBkbGxzL2dkaS9tZmRydi90ZXh0LmMsIGRsbHMva2VybmVsL2xvY2FsZS5jLCBpbmNsdWRlL3dpbmUvdW5pY29kZS5oLAoJICBsaWJzL3VuaWNvZGUvTWFrZWZpbGUuaW4sIGxpYnMvdW5pY29kZS9jXzA0Mi5jLAoJICBsaWJzL3VuaWNvZGUvY3BtYXAucGwsIGxpYnMvdW5pY29kZS9jcHRhYmxlLmMsIGxpYnMvdW5pY29kZS9tYnRvd2MuYywKCSAgbGlicy91bmljb2RlL3djdG9tYi5jLCBsaWJzL3VuaWNvZGUvd2luZV91bmljb2RlLmRlZiwgb2JqZWN0cy9mb250LmMsCgkgIG9iamVjdHMvdGV4dC5jOgoJUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJRml4IE11bHRpQnl0ZVRvV2lkZUNoYXIgYW5kIFdpZGVDaGFyVG9NdWx0aUJ5dGUgd2hlbiBjYWxsZWQgd2l0aCBjb2RlCglwYWdlIENQX1NZTUJPTC4KCVJlbW92ZSB0aGUgc3ltYm9sIGZvbnQgZnJvbSB0aGUgY29kZSBwYWdlIHRhYmxlLCBzbyBpdCBpcyBub3QgcmVwb3J0ZWQKCWFzIGEgdmFsaWQvc3VwcG9ydGVkL2luc3RhbGxlZCBjb2RlIHBhZ2UuCglSZW1vdmUgd29ya2Fyb3VuZHMgZm9yIHRoZSBiYWRseSBiZWhhdmVkIE11bHRpQnl0ZVRvV2lkZUNoYXIgYW5kIGNvLgoJaW4gYSBmZXcgcGxhY2VzLgoKCSogZGxscy9tc3ZpZGVvL01ha2VmaWxlLmluLCBkbGxzL3V4dGhlbWUvdXh0aGVtZS5zcGVjLAoJICBsaWJzL3dpbmUvd2luZS5kZWY6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRml4ZWQgc29tZSBwcm9ibGVtcyBmb3VuZCB3aGlsZSBjb21waWxpbmcgYW5kIGxpbmtpbmcgV2luZSB1bmRlcgoJQ3lnd2luLgoKCSogZGxscy9tc3ZpZGVvL21jaXduZC5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJTWFrZSBNQ0lXbmQgcGxheSBhIGJpdCBiZXR0ZXIgYXMgYW4gTURJIGNoaWxkLgoKCSogZGxscy93aW5lcHMvYnVpbHRpbi5jLCBkbGxzL3dpbmVwcy9wcy5jLCBkbGxzL3gxMWRydi9iaXRibHQuYywKCSAgZGxscy94MTFkcnYvZGliLmMsIGRsbHMveDExZHJ2L2dyYXBoaWNzLmMsIGRsbHMveDExZHJ2L3BhbGV0dGUuYywKCSAgZGxscy94MTFkcnYvdGV4dC5jLCBkbGxzL3gxMWRydi94Zm9udC5jLCBkbGxzL3gxMWRydi94cmVuZGVyLmM6CglHZXQgcmlkIG9mIHNvbWUgZGlyZWN0IGFjY2Vzc2VzIHRvIHRoZSBEQyBzdHJ1Y3R1cmUgZnJvbSBvdXRzaWRlIEdESS4KCgkqIGRsbHMvbXNhY20vaW1hYWRwMzIvaW1hYWRwMzIuYywgZGxscy9tc2FjbS9tc2FjbWRydi5oLAoJICBkbGxzL21zYWNtL21zYWRwMzIvbXNhZHAzMi5jLCBkbGxzL21zYWNtL21zZzcxMS9tc2c3MTEuYywKCSAgZGxscy9tc2FjbS93aW5lbXAzL21wZWdsMy5jLCBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL21zYWNtZHJ2Lmg6CglNb3ZlZCBtc2FjbWRydi5oIHRvIGluY2x1ZGUgZGlyZWN0b3J5IHRvIGF2b2lkIGludGVyLWRsbCBoZWFkZXIKCWRlcGVuZGVuY2llcy4KCgkqIGRsbHMvc2V0dXBhcGkvZGV2aW5zdDE2LmMsIGRsbHMvc2V0dXBhcGkvc2V0dXB4LnNwZWM6CglSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglTdHViIGZvciBEaUJ1aWxkQ2xhc3NEcnZMaXN0KCkuCgoJKiBkbGxzL2tlcm5lbC9wcm9jZXNzLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglBdm9pZCBkdXBsaWNhdGUgJz1DOicgZW50cmllcyBpbiB0aGUgY2hpbGQgcHJvY2VzcyBlbnZpcm9ubWVudC4KCgkqIGRsbHMvaWNjdmlkL2ljY3ZpZC5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgSUNNX0RFQ09NUFJFU1NFWCwgZml4IHNvbWUgYnVncy4KCgkqIGRvY3VtZW50YXRpb24vUkVBRE1FLml0OiBJdmFuIExlbyBNdXJyYXktU21pdGggPHB1b3RpQGlud2luZC5pdD4KCVVwZGF0ZWQuCgoJKiB0b29scy93aW5hcGkvd2luYXBpX3Rlc3Q6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJR2VuZXJhdGUgb2soIi4uLlxuIikgY2FsbHMuCgoJKiBkbGxzL2Rzb3VuZC90ZXN0cy9jYXB0dXJlLmMsIGRsbHMvZHNvdW5kL3Rlc3RzL2Rzb3VuZC5jLAoJICBkbGxzL2RkcmF3L3Rlc3RzL2RkcmF3bW9kZXMuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQWRkIHRyYWlsaW5nICdcbidzIHRvIG9rKCkgY2FsbHMuCgoJKiBkbGxzL3VzZXIvdGVzdHMvd2luLmMsIGluY2x1ZGUvd2luLmgsIHdpbmRvd3MvbWRpLmMsIHdpbmRvd3Mvd2luLmMsCgkgIHdpbmRvd3Mvd2lucHJvYy5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCU1lcmdlIHRoZSBNREkgYW5kIGNvbW1vbiB3aW5kb3cgY3JlYXRpb24gY29kZS4gQ2hhbmdlIHRoZSB3YXkgTURJCgljaGlsZHJlbiBhcmUgbWFuYWdlZCBpbiBNRElDbGllbnQuCglBZGQgc3VwcG9ydCBmb3IgTURJQ1JFQVRFU1RSVUNUIEE8LT5XIGNvbnZlcnNpb25zLgoJQWRkIHN1cHBvcnQgZm9yIFdNX01ESVJFRlJFU0hNRU5VLgoKCSogZGxscy9rZXJuZWwvcHJvY2Vzcy5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJRml4IGEgZmlsZSBkZXNjcmlwdG9yIGxlYWsgaW4gY3JlYXRlX3Byb2Nlc3MoKS4KCgkqIHByb2dyYW1zL3JlZ2VkaXQvRXMucmMsIHByb2dyYW1zL3JlZ2VkaXQvRnIucmMsCgkgIHByb2dyYW1zL3JlZ2VkaXQvSXQucmMsIHByb2dyYW1zL3JlZ2VkaXQvTmwucmMsCgkgIHByb2dyYW1zL3JlZ2VkaXQvUnUucmMsIHByb2dyYW1zL3JlZ2VkaXQvU2kucmM6CglJdmFuIExlbyBNdXJyYXktU21pdGggPHB1b3RpQGlud2luZC5pdD4KCVlldCBhZ2FpbiBjYXRjaGluZyB1cCB3aXRoIEVuLnJjLgoKCSogcHJvZ3JhbXMvd2luZWNmZy9Fbi5yYywgcHJvZ3JhbXMvd2luZWNmZy9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvd2luZWNmZy9hdWRpby5jLCBwcm9ncmFtcy93aW5lY2ZnL2RyaXZlLmMsCgkgIHByb2dyYW1zL3dpbmVjZmcvbWFpbi5jLCBwcm9ncmFtcy93aW5lY2ZnL3Byb3BlcnRpZXMuYywKCSAgcHJvZ3JhbXMvd2luZWNmZy9wcm9wZXJ0aWVzLmgsIHByb2dyYW1zL3dpbmVjZmcvcmVzb3VyY2UuaCwKCSAgcHJvZ3JhbXMvd2luZWNmZy93aW5lY2ZnLmg6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5AYWx1bS53cGkuZWR1PgoJQWRkIGF1ZGlvIHRhYiB3aXRoIGZpcnN0IHBhc3MgYXQgYXV0b2RldGVjdGlvbiBvZiBhdWRpbyBkcml2ZXIuCglEb3VibGUgY2xpY2tpbmcgYSBkcml2ZSBlbnRyeSBicmluZ3MgdXAgZHJpdmUgZWRpdCB3aW5kb3cuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUFkZGVkIG5vdGlmeSBhbmQgcHJvcGVydHkgc2V0IHRvIGRzb3VuZCBvdXRwdXQgZHJpdmVyLgoJQ2xlYW5lZCB1cCBleGlzdGluZyBub3RpZnkgYW5kIHByb3BlcnR5IHNldCBmb3IgY2FwdHVyZS4KCgkqIGRsbHMvd2lubW0vbWNpYXZpL21jaWF2aS5jLCBkbGxzL3dpbm1tL21jaXNlcS9tY2ltaWRpLmMsCgkgIGRsbHMvd2lubW0vbWNpd2F2ZS9tY2l3YXZlLmMsIGRsbHMvd2lubW0vcGxheXNvdW5kLmMsCgkgIGRsbHMvd2lubW0vd2luZW1tLmg6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJRml4ZWQgdGhyZWFkIGhhbmRsZSBsZWFrcy4KCgkqIGRsbHMva2VybmVsL3BhdGguYywgZGxscy9udGRsbC9wYXRoLmMsIGZpbGVzL2Rvc19mcy5jOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CgktIFJ0bEdldEZ1bGxQYXRoTmFtZV9VOiByZXdyaXR0ZW4gc28gdGhhdCB0aGUgc291cmNlICYgZGVzdGluYXRpb24KCSAgYnVmZmVyIGNhbiBiZSB0aGUgc2FtZQoJLSBHZXRGdWxsUGF0aE5hbWVbQVddOiBub3cgY2FsbCBSdGxHZXRGdWxsUGF0aE5hbWVfVQoJLSBHZXRTaG9ydFBhdGhOYW1lVzogZml4ZWQgcmVncmVzc2lvbiBpbnRyb2R1Y2VkIGluIGxhc3QgcGF0Y2gKCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwgZGxscy9zaGVsbDMyL3NoZWxsbGluay5jLAoJICBkbGxzL3NoZWxsMzIvc2hmbGRyX2Rlc2t0b3AuYywgZGxscy9zaGVsbDMyL3NoZmxkcl9mcy5jLAoJICBkbGxzL3NoZWxsMzIvc2hmbGRyX215Y29tcC5jOgoJTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCS0gZml4IHR5cG9zIGluIHNoZWxsbGluay5jIGhlYWRlciBjb21tZW50IGFuZCBhIHN0cnVjdCBjb21tZW50CgktIGNvcnJlY3RlZCBTQ0ZfVU5JQ09ERSBjb25zdGFudCBhbmQgdXNlIHRoZSB2YWx1ZSBvZiBTQ0ZfVU5DIGluc3RlYWQKCS0gaW1wbGVtZW50ZWQgSVNoZWxsTGlua19Db25zdHJ1Y3RGcm9tRmlsZSgpIHRvIHJlYWQgc2hlbGwgbGlua3MgZnJvbQoJICBmaWxlcwoJLSBjYWxsIElTaGVsbExpbmtfQ29uc3RydWN0RnJvbUZpbGUoKSBpbiBJU0ZfLi4uX2ZuR2V0VUlPYmplY3RPZigpCgkgIHdoZW4gYmVpbmcgcXVlcmllZCBmb3IgSVNoZWxsTGluayBpbnRlcmZhY2UKCgkqIHByb2dyYW1zL3JlZ2VkaXQvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvcmVnZWRpdC9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvcmVnZWRpdC9yZXNvdXJjZS5oLCBwcm9ncmFtcy9yZWdlZGl0L3Jlc291cmNlLnJjLAoJICBwcm9ncmFtcy9yZWdlZGl0L3RyZWV2aWV3LmM6CglUaG9tYXMgV2VpZGVubXVlbGxlciA8aW5mb0B3M3NlZWsuZGU+CglSZWdlZGl0IEdVSSBlbmhhbmNlbWVudHMgd2l0aCBuZXcgV2luZG93cy1saWtlIGljb25zLgoKCSogZGxscy9zaGVsbDMyL3NoZmxkci5oOiBNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJLSBmaXggdHlwbwoJLSByZXR1cm4gc3RyaW5nIGxlbmd0aCBmcm9tIFNIRUxMMzJfR1VJRFRvU3RyaW5nQSgpCgoJKiBkbGxzL3dpbmVkb3MvbW9kdWxlLmM6IE1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuZGU+CglGaXhlZCBET1MgRVhFIGxvYWRlciBmb3IgdGhlIGNhc2Ugd2hlcmUgd2UgcmVhbHkgaGF2ZSBvbmx5IDQgYnl0ZXMgb24KCXRoZSBsYXN0IHBhZ2Ugb2YgdGhlIGV4ZS4KCgkqIHByb2dyYW1zL3JlZ2VkaXQvSXQucmM6IEl2YW4gTGVvIE11cnJheS1TbWl0aCA8cHVvdGlAaW53aW5kLml0PgoJWWV0IGFub3RoZXIgdXBkYXRlLgoKCSogZG9jdW1lbnRhdGlvbi9wcmludGluZy5zZ21sOiBJdmFuIExlbyBNdXJyYXktU21pdGggPHB1b3RpQGlud2luZC5pdD4KCVJlbW92ZSBvYnNvbGV0ZSBpbmZvcm1hdGlvbiBhYm91dCB3aW4zLjEgZHJpdmVycy4KCgkqIGxvYWRlci9tYWluLmM6CglEaXNhYmxlIHRoZSBleGVjIHNoaWVsZCB3b3JrYXJvdW5kIGZvciBub3csIGl0J3MgY2F1c2luZyB0b28gbXVjaAoJdHJvdWJsZS4KCgkqIGluY2x1ZGUvcHNocGFjazguaDogUmVtb3ZlZCB1c2VsZXNzIHdhcm5pbmcuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9kbWJhbmQvYmFuZC5jLAoJICBkbGxzL2RtYmFuZC9iYW5kdHJhY2suYywgZGxscy9kbWJhbmQvZG1iYW5kX21haW4uYywKCSAgZGxscy9kbWJhbmQvZG1iYW5kX3ByaXZhdGUuaCwgZGxscy9kbWJhbmQvcmVnc3ZyLmMsCgkgIGRsbHMvZG1iYW5kL3ZlcnNpb24ucmMsIGRsbHMvZG1jb21wb3MvY2hvcmRtYXAuYywKCSAgZGxscy9kbWNvbXBvcy9jaG9yZG1hcHRyYWNrLmMsIGRsbHMvZG1jb21wb3MvY29tcG9zZXIuYywKCSAgZGxscy9kbWNvbXBvcy9kbWNvbXBvc19tYWluLmMsIGRsbHMvZG1jb21wb3MvZG1jb21wb3NfcHJpdmF0ZS5oLAoJICBkbGxzL2RtY29tcG9zL3JlZ3N2ci5jLCBkbGxzL2RtY29tcG9zL3NpZ25wb3N0dHJhY2suYywKCSAgZGxscy9kbWNvbXBvcy92ZXJzaW9uLnJjLCBkbGxzL2RtaW1lL01ha2VmaWxlLmluLAoJICBkbGxzL2RtaW1lL2F1ZGlvcGF0aC5jLCBkbGxzL2RtaW1lL2RtaW1lX21haW4uYywKCSAgZGxscy9kbWltZS9kbWltZV9wcml2YXRlLmgsIGRsbHMvZG1pbWUvZ3JhcGguYywKCSAgZGxscy9kbWltZS9seXJpY3N0cmFjay5jLCBkbGxzL2RtaW1lL21hcmtlcnRyYWNrLmMsCgkgIGRsbHMvZG1pbWUvcGFyYW1jb250cm9sdHJhY2suYywgZGxscy9kbWltZS9wYXR0ZXJudHJhY2suYywKCSAgZGxscy9kbWltZS9wZXJmb3JtYW5jZS5jLCBkbGxzL2RtaW1lL3JlZ3N2ci5jLCBkbGxzL2RtaW1lL3NlZ21lbnQuYywKCSAgZGxscy9kbWltZS9zZWdtZW50c3RhdGUuYywgZGxscy9kbWltZS9zZWd0cmlnZ2VydHJhY2suYywKCSAgZGxscy9kbWltZS9zZXF0cmFjay5jLCBkbGxzL2RtaW1lL3NvbmcuYywgZGxscy9kbWltZS9zeXNleHRyYWNrLmMsCgkgIGRsbHMvZG1pbWUvdGVtcG90cmFjay5jLCBkbGxzL2RtaW1lL3RpbWVzaWd0cmFjay5jLAoJICBkbGxzL2RtaW1lL3Rvb2wuYywgZGxscy9kbWltZS92ZXJzaW9uLnJjLCBkbGxzL2RtaW1lL3dhdmV0cmFjay5jLAoJICB3aW5lZGVmYXVsdC5yZWcsIGRsbHMvZG1sb2FkZXIvY29udGFpbmVyLmMsCgkgIGRsbHMvZG1sb2FkZXIvZG1sb2FkZXJfbWFpbi5jLCBkbGxzL2RtbG9hZGVyL2RtbG9hZGVyX3ByaXZhdGUuaCwKCSAgZGxscy9kbWxvYWRlci9sb2FkZXIuYywgZGxscy9kbWxvYWRlci9sb2FkZXJzdHJlYW0uYywKCSAgZGxscy9kbWxvYWRlci9yZWdzdnIuYywgZGxscy9kbWxvYWRlci92ZXJzaW9uLnJjLAoJICBkbGxzL2Rtc2NyaXB0L2Rtc2NyaXB0X21haW4uYywgZGxscy9kbXNjcmlwdC9kbXNjcmlwdF9wcml2YXRlLmgsCgkgIGRsbHMvZG1zY3JpcHQvcmVnc3ZyLmMsIGRsbHMvZG1zY3JpcHQvc2NyaXB0LmMsCgkgIGRsbHMvZG1zY3JpcHQvc2NyaXB0dHJhY2suYywgZGxscy9kbXNjcmlwdC92ZXJzaW9uLnJjLAoJICBkbGxzL2Rtc3R5bGUvTWFrZWZpbGUuaW4sIGRsbHMvZG1zdHlsZS9hdWRpdGlvbnRyYWNrLmMsCgkgIGRsbHMvZG1zdHlsZS9jaG9yZHRyYWNrLmMsIGRsbHMvZG1zdHlsZS9jb21tYW5kdHJhY2suYywKCSAgZGxscy9kbXN0eWxlL2Rtc3R5bGVfbWFpbi5jLCBkbGxzL2Rtc3R5bGUvZG1zdHlsZV9wcml2YXRlLmgsCgkgIGRsbHMvZG1zdHlsZS9tZWxvZHlmb3JtdWxhdGlvbnRyYWNrLmMsIGRsbHMvZG1zdHlsZS9tb3RpZnRyYWNrLmMsCgkgIGRsbHMvZG1zdHlsZS9tdXRldHJhY2suYywgZGxscy9kbXN0eWxlL3JlZ3N2ci5jLAoJICBkbGxzL2Rtc3R5bGUvc3R5bGUuYywgZGxscy9kbXN0eWxlL3N0eWxldHJhY2suYywKCSAgZGxscy9kbXN0eWxlL3ZlcnNpb24ucmMsIGRsbHMvZG1zeW50aC9kbXN5bnRoX21haW4uYywKCSAgZGxscy9kbXN5bnRoL2Rtc3ludGhfcHJpdmF0ZS5oLCBkbGxzL2Rtc3ludGgvcmVnc3ZyLmMsCgkgIGRsbHMvZG1zeW50aC9zeW50aC5jLCBkbGxzL2Rtc3ludGgvc3ludGhzaW5rLmMsCgkgIGRsbHMvZG1zeW50aC92ZXJzaW9uLnJjLCBkbGxzL2RtdXNpYy9idWZmZXIuYywgZGxscy9kbXVzaWMvY2xvY2suYywKCSAgZGxscy9kbXVzaWMvY29sbGVjdGlvbi5jLCBkbGxzL2RtdXNpYy9kbXVzaWMuYywKCSAgZGxscy9kbXVzaWMvZG11c2ljX21haW4uYywgZGxscy9kbXVzaWMvZG11c2ljX3ByaXZhdGUuaCwKCSAgZGxscy9kbXVzaWMvZG93bmxvYWQuYywgZGxscy9kbXVzaWMvZG93bmxvYWRlZGluc3RydW1lbnQuYywKCSAgZGxscy9kbXVzaWMvaGVscGVyLmMsIGRsbHMvZG11c2ljL2luc3RydW1lbnQuYywgZGxscy9kbXVzaWMvcG9ydC5jLAoJICBkbGxzL2RtdXNpYy9wb3J0ZG93bmxvYWQuYywgZGxscy9kbXVzaWMvcmVnc3ZyLmMsIGRsbHMvZG11c2ljL3RocnUuYywKCSAgZGxscy9kbXVzaWMvdmVyc2lvbi5yYywgZGxscy9kbXVzaWMzMi9kbXVzaWMzMl9tYWluLmMsCgkgIGRsbHMvZG11c2ljMzIvdmVyc2lvbi5yYywgZGxscy9kc3dhdmUvLmN2c2lnbm9yZSwKCSAgZGxscy9kc3dhdmUvTWFrZWZpbGUuaW4sIGRsbHMvZHN3YXZlL2Rzd2F2ZS5jLAoJICBkbGxzL2Rzd2F2ZS9kc3dhdmUuc3BlYywgZGxscy9kc3dhdmUvZHN3YXZlX21haW4uYywKCSAgZGxscy9kc3dhdmUvZHN3YXZlX3ByaXZhdGUuaCwgZGxscy9kc3dhdmUvcmVnc3ZyLmMsCgkgIGRsbHMvZHN3YXZlL3ZlcnNpb24ucmMsIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvZGxzMS5oLAoJICBpbmNsdWRlL2RsczIuaCwgaW5jbHVkZS9kbWRscy5oLCBpbmNsdWRlL2RtZXJyb3IuaCwKCSAgaW5jbHVkZS9kbXBsdWdpbi5oLCBpbmNsdWRlL2RtdXNidWZmLmgsIGluY2x1ZGUvZG11c2ljYy5oLAoJICBpbmNsdWRlL2RtdXNpY2YuaCwgaW5jbHVkZS9kbXVzaWNpLmgsIGluY2x1ZGUvZG11c2ljcy5oLAoJICBsaWJzL3V1aWQvZHhndWlkLmM6CglSb2sgTWFuZGVsamMgPHJvay5tYW5kZWxqY0BnaW1iLm9yZz4KCS0gdXBkYXRlZCByZXNvdXJjZXMgdG8gRFg5CgktIGNvbXBsZXRlbHkgcmV3cml0dGVuIGhlYWRlcnMgKERYOSBjb21wYXQuOyBsb29rIG11Y2ggbmljZXIgbm93IDs9KQoJLSByZW1vdmVkIElEaXJlY3RNdXNpY1NvbmcgYW5kIElEaXJlY3RNdXNpY01lbG9keUZvcm11bGF0aW9uVHJhY2sKCSAgKHdoaWNoIGFyZSByZW1vdmVkIGZyb20gRFg5OyB3ZXJlbid0IGltcGxlbWVudGVkIGluIERYOCBhbnl3YXkpCgktIGNvbWJpbmVkL3NpbXBsaWZpZWQgSURpcmVjdE11c2ljU29tZXRoaW5nIC8gSURpcmVjdE11c2ljT2JqZWN0IC8KCSAgSVBlcnNpc3RTdHJlYW0gZm9yIG9iamVjdHMgdGhhdCBzdXBwb3J0IGxvYWRpbmcKCS0gaW1wbGVtZW50ZWQgSURpcmVjdE11c2ljT2JqZWN0IG9uIGFsbCBzdWNoIG9iamVjdHM7IHZpYSBnZW5lcmljCgkgIGZ1bmN0aW9ucwoJLSBjb21iaW5lZCBJRGlyZWN0TXVzaWNUcmFjayg4KS9JUGVyc2lzdFN0cmVhbSBvbiBhbGwgdHJhY2tzCgktIGZ1bGx5IGltcGxlbWVudGVkIElEaXJlY3RNdXNpY0NvbnRhaW5lciAoYXQgbGVhc3QgOTAlIGlmIHRoZXJlIGFyZQoJICBubyBwcml2YXRlIGludGVyZmFjZXMpCgktIGltcGxlbWVudGVkIElEaXJlY3RNdXNpY0NvbGxlY3Rpb24gKDk5JSB3b3JrICYgTVMgY29tcGxpYW50CgkgIGJlaGF2aW91cjsgZXhjZXB0IGZvciBpbnN0cnVtZW50cykKCS0gdHJpZWQgdG8gaW1wbGVtZW50IElEaXJlY3RNdXNpY0luc3RydW1lbnQgKHVuZm9ydHVuYXRlbHkgdXNlcyBzb21lCgkgIGRpcnR5IHByaXZhdGUgaW50ZXJmYWNlcy4uLiA6KAoJLSBhZGRlZCBkc3dhdmUuZGxsOyBEaXJlY3RNdXNpYyBXYXZlCgktIHNvbWUgY2hhbmdlcyBpbiBzdHlsZQoJLSBtYW55LCBtYW55IG1vcmUgOykKCjIwMDQtMDEtMTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3NoZWxsMzIvc2hmbGRyLmgsIGRsbHMvc2hlbGwzMi9zaGZsZHJfZGVza3RvcC5jLAoJICBkbGxzL3NoZWxsMzIvc2hmbGRyX2ZzLmM6CglNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJLSBtb3ZlIElTaGVsbEZvbGRlcl9mbkdldERpc3BsYXlOYW1lT2YoKSBjb250ZW50cyBpbnRvIGEgbmV3IGZ1bmN0aW9uCgkgIFNIRUxMX0ZTX1Byb2Nlc3NEaXNwbGF5RmlsZW5hbWUoKSB0byBjYWxsIGl0IGFsc28gaW4KCSAgSVNGX0Rlc2t0b3BfZm5HZXREaXNwbGF5TmFtZU9mKCkgYW5kIGRvIHRoZSBzYW1lIGZpbGUgc3lzdGVtCgkgIHByb2Nlc3NpbmcgZm9yIHRoZSBkZXNrdG9wIGxldmVsCgktIGhhbmRsZSBoaWRkZW4gZmlsZSBleHRlbnNpb25zIGluIFNIRUxMX0ZTX1Byb2Nlc3NEaXNwbGF5RmlsZW5hbWUoKSwKCSAgdGhhdCBhcmUgY29uZmlndXJlZCBieSAiTmV2ZXJTaG93RXh0IiBpbiB0aGUgcmVnaXN0cnkKCgkqIGRsbHMvb2xlMzIvaWZzLmM6IEdlIHZhbiBHZWxkb3JwIDxnZUBnc2Uubmw+CglTd2FwIGFyZ3VtZW50cyBvZiBMb2NhbEFsbG9jIGFuZCBvbmx5IHVwZGF0ZSBNYWxsb2MzMiBibG9jayBvbgoJc3VjY2Vzc2Z1bCBhbGxvY2F0aW9uLgoKCSogZG9jdW1lbnRhdGlvbi9idWdzLnNnbWw6IEl2YW4gTGVvIE11cnJheS1TbWl0aCA8cHVvdGlAaW53aW5kLml0PgoJQWRkZWQgYSBsaW5rIHRvIHRoZSBNaWNyb3NvZnQgZG93bmxvYWQgcGFnZSBvZiB0aGUgVmlzdWFsIEJhc2ljCglydW50aW1lIGVudmlyb25tZW50LgoKCSogZGxscy9udGRsbC9zZXJ2ZXIuYzogRml4ZWQgYW4gZXJyb3IgbWVzc2FnZS4KCgkqIGRsbHMvdXh0aGVtZS9tc3N0eWxlcy5jLCBkbGxzL3V4dGhlbWUvbXNzdHlsZXMuaCwKCSAgZGxscy91eHRoZW1lL3N0eWxlbWFwLmMsIGRsbHMvdXh0aGVtZS9zeXN0ZW0uYywgZGxscy91eHRoZW1lL3V4aW5pLmMsCgkgIGRsbHMvdXh0aGVtZS91eHRoZW1lLnNwZWM6CglLZXZpbiBLb2x0emF1IDxrZXZpbkBwbG9wLm9yZz4KCUZ1bGwgaW1wbGVtZW50YXRpb24gb2YgT3BlblRoZW1lRGF0YSwgQ2xvc2VUaGVtZURhdGEsIGFuZAoJSXNUaGVtZVBhcnREZWZpbmVkCglFeHBvcnQgdW5kb2N1bWVudGVkIGZ1bmN0aW9ucyBieSBvcmRpbmFsIG9ubHkgKHRvIG1hdGNoIE1pY3Jvc29mdCdzCgl1eHRoZW1lKS4KCgkqIGRsbHMvZ2RpL2ZyZWV0eXBlLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglGaXggY29tcGlsYXRpb24gaWYgRnJlZXR5cGUgaXNuJ3QgaW5zdGFsbGVkLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGcuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCURpcmVjdGx5IHVzZSB0aGUgaG9vayBwcm9jIGZvciB0aGUgY3VzdG9tIHRlbXBsYXRlIGRpYWxvZyByYXRoZXIgdGhhbgoJY2FsbGluZyBpdCB0aHJvdWdoIGFub3RoZXIgZGxncHJvYy4KCURlbGl2ZXIgdGhlIG9sZCBzdHlsZSBmaWxlX29rIG1lc3NhZ2Ugd2l0aCBTZW5kTWVzc2FnZSwgdGhpcyBhbGxvd3MKCXRoZSBkaWFsb2cgdG8gYmUgc3ViY2xhc3NlZCAoYXMgQVRML1dUTCBkb2VzKS4KCU9ubHkgZGVsaXZlciB0aGlzIG1lc3NhZ2UgaWYgdGhlIGFwcCBkaWRuJ3QgcmVqZWN0IHRoZSBXTV9OT1RJRlkKCW1lc3NhZ2UuCgoJKiBkbGxzL29sZWF1dDMyL3Rlc3RzL3ZhcnR5cGUuYzogSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglBZGQgbWlzc2luZyBjb21tYS4KCgkqIGRsbHMvY29tY3RsMzIvdGVzdHMvZHBhLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRFBBX0NyZWF0ZSBpcyBtaXNzaW5nIGZyb20gYWxsIHJlY2VudCBpbXBvcnQgbGlicmFyaWVzIHNvIHVzZQoJR2V0UHJvY0FkZHJlc3MgdG8gbG9hZCBpdC4KCUFkZCAnXG4nIHRvICdvaycgY2FsbHMuCgoJKiBkbGxzL3NobHdhcGkvcGF0aC5jLCBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjLCBpbmNsdWRlL3NobHdhcGkuaDoKCVJvbGYgS2FsYmVybWF0dGVyIDxyb2xmLmthbGJlcm1hdHRlckBjaXRlbmcuY29tPgoJSW1wbGVtZW50ZWQgUGF0aEZpbGVFeGlzdHNBbmRBdHRyaWJ1dGVzQS9XIGZ1bmN0aW9uLgoKCSogZGxscy9vbGUzMi9zdGdfYmlnYmxvY2tmaWxlLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCURvbid0IHVzZSBDcmVhdGVGaWxlTWFwcGluZyBvbiBhIHplcm8gbGVuZ3RoIGZpbGUuCgoJKiBkbGxzL2NvbWN0bDMyL3Rlc3RzL3RhYi5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFkZCB0cmFpbGluZyAnXG4ncyB0byBvaygpIGNhbGxzLgoKMjAwNC0wMS0xOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvZ2RpL2ZyZWV0eXBlLmMsIGRsbHMvZ2RpL2dkaV9wcml2YXRlLmgsIGRsbHMvd2luZXBzL2J1aWx0aW4uYywKCSAgZGxscy94MTFkcnYveDExZHJ2LmgsIGRsbHMveDExZHJ2L3hmb250LmMsIGluY2x1ZGUvZ2RpLmgsCgkgIG9iamVjdHMvZm9udC5jOgoJVXNlIHRoZSBleHBvcnRlZCBGT05URU5VTVBST0NXIGFzIHBhcmFtZXRlciBpbiB0aGUgRW51bURldmljZUZvbnRzCglkcml2ZXIgZnVuY3Rpb24gaW5zdGVhZCBvZiBkZWZpbmluZyBhIHByaXZhdGUgZnVuY3Rpb24gdHlwZS4KCgkqIHRvb2xzL2JpbjJyZXMuYzoKCVdpbmRvd3MgcmVuYW1lKCkgbmVlZHMgYW4gdW5saW5rKCkgZmlyc3QgKHJlcG9ydGVkIGJ5IFN0ZXZlbgoJRWR3YXJkcykuCgoJKiB0b29scy93cmMvTWFrZWZpbGUuaW4sIHRvb2xzL3dyYy90cmFuc2xhdGlvbi5jLCB0b29scy93cmMvd3JjLmM6CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglBZGRlZCBhIG5ldyBmbGFnIHRvIHdyYywgdG8gYmUgdXNlZCB0byBhc3Nlc3MgdHJhbnNsYXRpb25zCglhZHZhbmNlbWVudC4KCgkqIGRsbHMvb2xlZGxnL29sZWRsZ19QdC5yYywgZGxscy9vbGVkbGcvcnNyYy5yYywKCSAgcHJvZ3JhbXMvcmVnZWRpdC9Fbi5yYywgcHJvZ3JhbXMvcmVnZWRpdC9QdC5yYywKCSAgcHJvZ3JhbXMvd2luZWNmZy9QdC5yYzoKCU1hcmNlbG8gRHVhcnRlIDx3aW5lLWRldmVsQGJvbC5jb20uYnI+CglVcGRhdGUgb2YgUG9ydHVndWVzZSByZXNvdXJjZXMuCgoJKiBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmMsIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmM6CglNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJU2hlbGxWaWV3X0NyZWF0ZUxpc3QoKSwgU0lDX0luaXRpYWxpemUoKTogZW5hYmxlIHRyYW5zcGFyZW50IGljb25zIG9uCgl0aGUgZGVza3RvcC4KCgkqIGRsbHMvc2hlbGwzMi9tZW1vcnlzdHJlYW0uYzogTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCUlTdHJlYW1fZm5Xcml0ZTogb25seSByZXR1cm4gd3JpdGUgY291bnQgaWYgdGhlIGdpdmVuIHBvaW50ZXIKCXBhcmFtZXRlciBpcyBub3QgTlVMTC4KCgkqIGRsbHMvdHR5ZHJ2L2RjLmMsIGRsbHMvd2luZXBzL2luaXQuYywgZGxscy94MTFkcnYvYml0Ymx0LmMsCgkgIGRsbHMveDExZHJ2L2JpdG1hcC5jLCBkbGxzL3gxMWRydi9icnVzaC5jLCBkbGxzL3gxMWRydi9kaWIuYywKCSAgZGxscy94MTFkcnYvZ3JhcGhpY3MuYywgZGxscy94MTFkcnYvaW5pdC5jLCBkbGxzL3gxMWRydi9wYWxldHRlLmMsCgkgIGRsbHMveDExZHJ2L3gxMWRydi5oLCBkbGxzL3gxMWRydi94cmVuZGVyLmMsIGdyYXBoaWNzL2JpdGJsdC5jLAoJICBpbmNsdWRlL2dkaS5oLCBvYmplY3RzL2JpdG1hcC5jLCBvYmplY3RzL2RjLmM6CglSZW1vdmVkIHRoZSBiaXRzUGVyUGl4ZWwgZmllbGQgaW4gdGhlIGdlbmVyaWMgREMgc3RydWN0dXJlLCBhbmQgbGVhdmUKCWl0IHVwIHRvIHRoZSBncmFwaGljcyBkcml2ZXIgdG8gZGVmaW5lIGl0IGlmIG5lY2Vzc2FyeS4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCURvIG5vdCBjYWNoZSByZXN1bHRzIG9mIGNoZWNrcyB3aXRoIHNpZGUgZWZmZWN0cy4KCgkqIGRvY3VtZW50YXRpb24vZ2V0dGluZy5zZ21sOiBJdmFuIExlbyBNdXJyYXktU21pdGggPHB1b3RpQGlud2luZC5pdD4KCVVuaWZvcm1pemUgdGhlIGN2cyBkb3dubG9hZCBpbnN0cnVjdGlvbnMgd2l0aCB0aGUgb25lcyBvbiBXaW5lSFEuCgoJKiBkbGxzL2tlcm5lbC9sb2NhbGUuYywgZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL250ZGxsL250ZGxsX21pc2MuaCwKCSAgZGxscy9udGRsbC9ydGxzdHIuYzoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJQWRkZWQgc3VwcG9ydCBmb3IgVW5peCBjb2RlIHBhZ2UgaW4gTlRETEwuCgoJKiBkbGxzL3VzZXIvdGVzdHMvaW5wdXQuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBZGQgdHJhaWxpbmcgJ1xuJ3MgdG8gb2soKSBjYWxscy4KCgkqIGRsbHMveDExZHJ2L3hmb250LmM6IE1hcmNlbG8gRHVhcnRlIDx3aW5lLWRldmVsQGJvbC5jb20uYnI+CglGaXhlZCB0eXBvcy4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLmRhdCwgdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMucG0sCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfZ2xvYmFsLnBtOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglHZXQgcmlkIG9mIHRoZSBzdGF0aWMgbW9kdWxlIGxpc3QuCgoJKiBkbGxzL3NoZWxsMzIvZGVidWdobHAuYywgZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3BpZGwuaDoKCU1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CgktIGRlY2xhcmUgUFRfUkFTX0ZPTERFUiBmb3IgdGhlICJSQVMgQ29ubmVjdGlvbnMiIGZvbGRlcgoJLSBoYW5kbGUgUFRfUkFTX0ZPTERFUiBhbmQgUFRfTkVUUFJPVklERVIgaW4gZGVidWdnaW5nIGZ1bmN0aW9ucyBhbmQKCSAgX0lMR2V0VGV4dFBvaW50ZXIoKSAvIF9JTEdldFNUZXh0UG9pbnRlcigpCgoJKiBkbGxzL3NobHdhcGkvcmVnLmMsIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWM6CglTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCUFkZGVkIHN0dWIgZm9yIFNIUmVnaXN0ZXJWYWxpZGF0ZVRlbXBsYXRlLgoKCSogZGxscy9zaGVsbDMyL21lbW9yeXN0cmVhbS5jOiBNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJQ3JlYXRlU3RyZWFtT25GaWxlKCk6IHVzZSBmbGFnIEZJTEVfU0hBUkVfUkVBRCBmb3Igb3BlbmluZyBPTEUgc3RyZWFtCglmaWxlcyB0byBlbmFibGUgZmlsZSBzaGFyaW5nLgoKMjAwNC0wMS0xNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbXNodG1sL01ha2VmaWxlLmluLCBkbGxzL21zaHRtbC9kb2N1bWVudC5jLCBkbGxzL21zaHRtbC9tYWluLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglUcnkgdXNpbmcgdGhlIE1vemlsbGEgQWN0aXZlIFggY29udHJvbCBpbiBNU0hUTUwuCgoJKiBkbGxzL3NoZWxsMzIvY2xhc3Nlcy5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsCgkgIGRsbHMvc2hlbGwzMi9zaGxleGVjLmM6CglGaXhlZCBIQ1JfR2V0RXhlY3V0ZUNvbW1hbmRXKCkgYmVoYXZpb3Igd2l0aCBhIGNsYXNzIG5hbWUgKGJhc2VkIG9uIGEKCXBhdGNoIGJ5IE1hcnRpbiBGdWNocykuCglSZW1vdmVkIGEgY291cGxlIG9mIG5vIGxvbmdlciB1c2VkIGZ1bmN0aW9ucy4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYywKCSAgZGxscy9zaGVsbDMyL3VuZG9jc2hlbGwuaDoKCU1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CglDb3JyZWN0ZWQgZGVmaW5pdGlvbiBvZiBQYXRoWWV0QW5vdGhlck1ha2VVbmlxdWVOYW1lKCkuCgoJKiBkbGxzL21zYWNtL2Zvcm1hdC5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJRml4IGltcHJvcGVyIFdBVkVGT1JNQVRFWCBzaXplIGNhbGN1bGF0aW9uIGZvciBub24gUENNIGZvcm1hdHMuCgoJKiBwcm9ncmFtcy9yZWdlZGl0L2VkaXQuYywgcHJvZ3JhbXMvcmVnZWRpdC9mcmFtZXduZC5jLAoJICBwcm9ncmFtcy9yZWdlZGl0L2xpc3R2aWV3LmMsIHByb2dyYW1zL3JlZ2VkaXQvbWFpbi5oOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUZpeCB2YWx1ZSByZW5hbWluZy4gQ2xlYW51cCBjb2RlLCBmaXggYSBmZXcgbGVha3MuCgoJKiBkbGxzL2tlcm5lbC9kZWJ1Z2dlci5jLCBkbGxzL2tlcm5lbC9lZGl0bGluZS5jLCBkbGxzL29sZTMyL2NvbXBvYmouYywKCSAgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jLCBkbGxzL3dpbnRhYjMyL3dpbnRhYjMyLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFzc29ydGVkIHNwZWxsaW5nIGZpeGVzLgoKCSogZGxscy91eHRoZW1lL01ha2VmaWxlLmluLCBkbGxzL3V4dGhlbWUvbWFpbi5jLAoJICBkbGxzL3V4dGhlbWUvbXNzdHlsZXMuYywgZGxscy91eHRoZW1lL21zc3R5bGVzLmgsCgkgIGRsbHMvdXh0aGVtZS9wcm9wZXJ0eS5jLCBkbGxzL3V4dGhlbWUvc3R5bGVtYXAuYywKCSAgZGxscy91eHRoZW1lL3N5c3RlbS5jLCBkbGxzL3V4dGhlbWUvdXhpbmkuYywKCSAgZGxscy91eHRoZW1lL3V4dGhlbWVkbGwuaDoKCUtldmluIEtvbHR6YXUgPGtldmluQHBsb3Aub3JnPgoJQWRkIElOSSBmaWxlIHByb2Nlc3NpbmcuCglGdWxsIGltcGxlbWVudGF0aW9uIG9mIEdldFRoZW1lRG9jdW1lbnRhdGlvblByb3BlcnR5LgoJRGVmaW5lIHN0cmluZyBtYXBzIGZvciBwYXJzaW5nIElOSSBmaWxlcyBpbnRvIHVzZWFibGUgZm9ybS4KCUltcGxlbWVudGVkICh1bmRvY3VtZW50ZWQpIEFwcGx5VGhlbWUgdG8gc2VsZWN0IGN1cnJlbnQgdGhlbWUuCgoJKiBkbGxzL2tlcm5lbC9maWxlLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJUmV0dXJuIEhGSUxFX0VSUk9SIGluc3RlYWQgb2YgLTEgaW4gX2xyZWFkLgoKCSogZGxscy9vbGUzMi9oZ2xvYmFsc3RyZWFtLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglUcmFjZSB0aGUgaGlnaCBwYXJ0IG9mIHRoZSBTZWVrIG9mZnNldC4KCgkqIGluY2x1ZGUvd2luYmFzZS5oOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBTeXN0ZW1UaW1lVG9UelNwZWNpZmljTG9jYWxUaW1lIGRlZmluaXRpb24uCgoJKiBpbmNsdWRlL3VybG1vbi5oLCBpbmNsdWRlL3VybG1vbi5pZGw6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQWRkIGEgY291cGxlIG9mIG1pc3NpbmcgZGVmaW5pdGlvbnMgdG8gdXJsbW9uLmguCgoJKiBwcm9ncmFtcy9yZWdlZGl0L2NoaWxkd25kLmMsIHByb2dyYW1zL3JlZ2VkaXQvbGlzdHZpZXcuYywKCSAgcHJvZ3JhbXMvcmVnZWRpdC9tYWluLmM6CglUaG9tYXMgV2VpZGVubXVlbGxlciA8aW5mb0B3M3NlZWsuZGU+CglGaXhlZCBoYW5kbGluZyBvZiBjb250cm9sIGZvY3VzLgoKCSogcHJvZ3JhbXMvcmVnZWRpdC9Fbi5yYzogVGhvbWFzIFdlaWRlbm11ZWxsZXIgPGluZm9AdzNzZWVrLmRlPgoJRW5hYmxlIHRoZSBoZWxwIG1lbnUgZm9yIHJlZ2VkaXQuCgoJKiBkbGxzL250ZGxsL3ZpcnR1YWwuYzoKCUNoZWNrIGZvciBvdmVybGFwcGluZyBtZW1vcnkgdmlld3MgYW5kIGRlbGV0ZSB0aGUgb2ZmZW5kaW5nIHZpZXcgaWYKCW5lY2Vzc2FyeSwgdG8gZW5zdXJlIHdlIG5ldmVyIGhhdmUgdHdvIHZpZXdzIGNvdmVyaW5nIHRoZSBzYW1lCglhZGRyZXNzLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvZmlsZS5jLCBmaWxlcy9maWxlLmM6CglNaWtlIEhlYXJuIDxtaWtlQHRoZW9yZXRpYy5jb20+CgktIEVuc3VyZSB3ZSBjb3JyZWN0bHkgYWRkIGEgYmFja3NsYXNoIGxpa2UgV2luZG93cyA5OC9YUCBkby4KCS0gR2VuZXJhdGUgZmlsZW5hbWVzIHRoYXQgbG9vayBsaWtlIFdpbmRvd3MgZG9lcyAobm8gbGVmdCBkaWdpdAoJICBwYWRkaW5nKS4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYzogRmlsaXAgTmF2YXJhIDx4bmF2YXJhQHZvbG55LmN6PgoJLSBNb3ZlZCBhY3R1YWwgY29kZSBmcm9tIFNIR2V0U3BlY2lhbEZvbGRlclBhdGhBIHRvIFNIR2V0Rm9sZGVyUGF0aFcsCgkgIGFkanVzdGVkIGFuZCB1bmljb2RpZmllZCBpdC4KCS0gUmV3cm90ZSBTSEdldEZvbGRlclBhdGhBIHRvIGNhbGwgU0hHZXRGb2xkZXJQYXRoVy4KCS0gUmV3cm90ZSBTSEdldFNwZWNpYWxGb2xkZXJQYXRoW0FXXSB0byBjYWxsIFNIR2V0Rm9sZGVyUGF0aFtBV10uCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9Dcy5yYywgZGxscy9zaGVsbDMyL3NocmVzZGVmLmg6CglGaWxpcCBOYXZhcmEgPHhuYXZhcmFAdm9sbnkuY3o+CglDb21wbGV0ZSBDemVjaCB0cmFuc2xhdGlvbiBvZiBzaGVsbDMyIHJlc291cmNlcy4KCgkqIGRsbHMvYWR2YXBpMzIvYWR2YXBpMzIuc3BlYywgZGxscy9hZHZhcGkzMi9yZWdpc3RyeS5jOgoJUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCVBhcnRpYWxseSBpbXBsZW1lbnQgUmVnT3BlblVzZXJDbGFzc2VzUm9vdC4KCgkqIGRvY3VtZW50YXRpb24vZ2V0dGluZy5zZ21sOiBJdmFuIExlbyBNdXJyYXktU21pdGggPHB1b3RpQGlud2luZC5pdD4KCVdlIG5vdyBoYXZlIG9mZmljaWFsIHBhY2thZ2VzLgoKCSogcHJvZ3JhbXMvcmVnZWRpdC9lZGl0LmMsIHByb2dyYW1zL3JlZ2VkaXQvZnJhbWV3bmQuYywKCSAgcHJvZ3JhbXMvcmVnZWRpdC9tYWluLmg6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJU3RyZWFtbGluZSB0aGUgZWRpdGluZyBpbnRlcmZhY2VzIGEgYml0LgoJT3BlbiB0aGUgcmVnaXN0cnkgd2l0aCBvbmx5IHRoZSByZXF1aXJlZCBwZXJtaXNzaW9ucyBmb3IgdGhlCglvcGVyYXRpb24uIEZpeCBhIGZldyBsZWFrcy4KCgkqIGRsbHMva2VybmVsL2NvbW0uYzogVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJTW92ZSB0aGUgaW1wbGVtZW50YXRpb24gb2YgR2V0RGVmYXVsdENvbW1Db25maWcgZnJvbSBBIHRvIFcuCglHZXQgcmlkIG9mIGEgVy0+QSBjcm9zcyBjYWxsIGF0IHRoZSBzYW1lIHRpbWUuCgoJKiBkbGxzL2tlcm5lbC9jb21tLmM6IFZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCVVuaWNvZGlmeSBzb21lIGNvbW0gZnVuY3Rpb25zLgoJR2V0IHJpZCBvZiBzb21lIFctPkEgY3Jvc3MgY2FsbHMgYWxvbmcgdGhlIHdheS4KCgkqIHByb2dyYW1zL3JlZ2VkaXQvRW4ucmMsIHByb2dyYW1zL3JlZ2VkaXQvbGlzdHZpZXcuYywKCSAgcHJvZ3JhbXMvcmVnZWRpdC9tYWluLmMsIHByb2dyYW1zL3JlZ2VkaXQvbWFpbi5oLAoJICBwcm9ncmFtcy9yZWdlZGl0L3Jlc291cmNlLmg6CglUaG9tYXMgV2VpZGVubXVlbGxlciA8aW5mb0B3M3NlZWsuZGU+CglBZGRlZCBjb250ZXh0IG1lbnUgc3VwcG9ydC4KCgkqIGRsbHMvd2luaW5ldC90ZXN0cy9odHRwLmM6IE1pa2UgSGVhcm4gPG1pa2VAdGhlb3JldGljLmNvbT4KCUNoYW5nZSBVUkwgdXNlZCBpbiBodHRwIHRlc3RzIHRvIGJlIGEgI2RlZmluZSBzbyBpdCBjYW4gYmUgY2hhbmdlZAoJZWFzaWx5IGluIGZ1dHVyZSwgYW5kIG1ha2UgaXQgcG9pbnQgdG8gd2luZWhxLgoKCSogZGxscy91c2VyL3Rlc3RzL2lucHV0LmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJVGhlIE1TVkMgaGVhZGVycyB3b24ndCBnaXZlIGEgbmFtZSB0byB0aGUgbmFtZWxlc3MgdW5pb24gb2YgSU5QVVQKCWRlc3BpdGUgb3VyIHJlcXVlc3QgKE5PTkFNRUxFU1NVTklPTikuIFNvIGRlZmluZSBvdXIgb3duIHR5cGUgYW5kIHVzZQoJaXQgaW5zdGVhZC4KCVJlbW92ZSB1c2VsZXNzIE5PTkFNRUxFU1NTVFJVQ1QuCglGaXggc2lnbmVkL3Vuc2lnbmVkIHdhcm5pbmcuCgoJKiBkbGxzL3VzZXIvdGVzdHMvY2xhc3MuYywgZGxscy91c2VyL3Rlc3RzL3dpbi5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglXZSBuZWVkIHRvIHNldCBfV0lOMzJfV0lOTlQgdG8gMHg1MDEgdG8gZ2V0IENTX0RST1BTSEFET1cgYW5kCglJQ09OX1NNQUxMMi4KCgkqIGRsbHMvc2hsd2FwaS90ZXN0cy9jbHNpZC5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCU1TVkMgZG9lcyBub3Qgd2FudCAnZXh0ZXJuJyB2YXJpYWJsZXMgdG8gYmUgaW5pdGlhbGl6ZWQgaW5zaWRlCglmdW5jdGlvbnMuCgoJKiBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJR2V0IHJpZCBvZiBhIFctPkEgY3Jvc3MgY2FsbCBpbiBJbWFnZUxpc3RfTG9hZEltYWdlVy4KCgkqIGRsbHMvZ2RpL2JpZGkuYzogVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJRml4IGNvbXBpbGF0aW9uIHdpdGggSUNVIGFmdGVyIGludHJvZHVjdGlvbiBvZiBnZGlfcHJpdmF0ZS5oLgoKCSogZGxscy90d2Fpbi9kc21fY3RybC5jOiBWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglJbml0aWFsaXplIGEgcG9pbnRlciBiZWZvcmUgZGVyZWZlcmVuY2luZyBpdC4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLmRhdDoKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCVlldCBhbm90aGVyIG5ldyBzcGVjIGZpbGUsIHRoaXMgdGltZSBpY2N2aWQuc3BlYy4KCgkqIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYzogUm9iZXJ0IEx1bm5vbiA8Ym9ibEBvcHR1c2hvbWUuY29tLmF1PgoJU2F2ZSBVRVNQIGluc3RlYWQgb2YgRVNQIHdoZXJlIFVFU1AgZGVmaW5lZC4KCgkqIHByb2dyYW1zL3JlZ2VkaXQvZnJhbWV3bmQuYzogVGhvbWFzIFdlaWRlbm11ZWxsZXIgPGluZm9AdzNzZWVrLmRlPgoJSW1wbGVtZW50ZWQgVmlld3xTcGxpdC4KCgkqIHByb2dyYW1zL3JlZ2VkaXQvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3JlZ2VkaXQvYWJvdXQuYzoKCVRob21hcyBXZWlkZW5tdWVsbGVyIDxpbmZvQHczc2Vlay5kZT4KCVNpbXBsaWZ5IHRoZSBBYm91dCBkaWFsb2cgY29kZS4KCgkqIHByb2dyYW1zL3JlZ2VkaXQvdHJlZXZpZXcuYzogVGhvbWFzIFdlaWRlbm11ZWxsZXIgPGluZm9AdzNzZWVrLmRlPgoJRXhwYW5kIHRoZSB0cmVldmlldyBvbiBzdGFydHVwLgoKMjAwNC0wMS0xNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvZ2RpL2ZyZWV0eXBlLmMsIGRsbHMvd2luZXBzL2Rvd25sb2FkLmMsIGRsbHMvd2luZXBzL2dyYXBoaWNzLmMsCgkgIGRsbHMvd2luZXBzL3Blbi5jLCBkbGxzL3dpbmVwcy9wc2Rydi5oLCBkbGxzL3dpbmVwcy90ZXh0LmMsCgkgIGRsbHMveDExZHJ2L2dyYXBoaWNzLmMsIGRsbHMveDExZHJ2L3Blbi5jLCBkbGxzL3gxMWRydi90ZXh0LmMsCgkgIGRsbHMveDExZHJ2L3gxMWRydi5oLCBkbGxzL3gxMWRydi94Zm9udC5jLCBkbGxzL3gxMWRydi94cmVuZGVyLmMsCgkgIGluY2x1ZGUvZ2RpLmg6CglHZXQgcmlkIG9mIHRoZSBnbG9iYWwgSU5URVJOQUxfW1hZXVdTVE9EUyBtYWNyb3MuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLAoJICBkbGxzL3NoZWxsMzIvc2hsZXhlYy5jOgoJTWFyY2VsbyBEdWFydGUgPHdpbmUtZGV2ZWxAYm9sLmNvbS5icj4KCS0gR2V0IHJpZCBvZiBXLT5BIGNhbGxzIGZvciBzaGxleGVjLgoJLSBJbXBsZW1lbnRhdGlvbiBvZiBGaW5kRXhlY3V0YWJsZVcuCgoJKiB0b29scy93aW5lYnVpbGQvc3BlYzMyLmM6CglUd2Vha2VkIHRoZSBpbml0IGNvZGUgc28gdGhhdCBpdCB3b3JrcyBwcm9wZXJseSBubyBtYXR0ZXIgd2hhdCBsaW5rZXIKCW9wdGlvbnMgYXJlIHVzZWQuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9pY2N2aWQvLmN2c2lnbm9yZSwKCSAgZGxscy9pY2N2aWQvTWFrZWZpbGUuaW4sIGRsbHMvaWNjdmlkL2ljY3ZpZC5jLAoJICBkbGxzL2ljY3ZpZC9pY2N2aWQuc3BlYzoKCVRpbSBGZXJndXNvbiA8VGltLkZlcmd1c29uQGluZm90ZWNoLm1vbmFzaC5lZHUuYXU+CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglQb3J0IFRpbSBGZXJndXNvbidzIElDQ1ZJRCBjb2RlYyB0byBXaW5lLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvcGF0aC5jLCBmaWxlcy9kb3NfZnMuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVByZXNlcnZlIHRyYWlsaW5nIGJhY2tzbGFzaGVzIGluIEdldEZ1bGxQYXRoTmFtZS4KCgkqIHByb2dyYW1zL3dpbmV0ZXN0Ly5jdnNpZ25vcmUsIHByb2dyYW1zL3dpbmV0ZXN0L01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy93aW5ldGVzdC9ndWkuYywgcHJvZ3JhbXMvd2luZXRlc3QvZ3VpLnJjLAoJICBwcm9ncmFtcy93aW5ldGVzdC9ndWlyZXMuaCwgcHJvZ3JhbXMvd2luZXRlc3QvbWFpbi5jLAoJICBwcm9ncmFtcy93aW5ldGVzdC9zZW5kLmMsIHByb2dyYW1zL3dpbmV0ZXN0L3V0aWwuYywKCSAgcHJvZ3JhbXMvd2luZXRlc3Qvd2luZXRlc3QuaDoKCUZlcmVuYyBXYWduZXIgPHdmZXJpQGFmYXZhbnQuZWx0ZS5odT4KCUFkZGVkIGdyYXBoaWNhbCBmZWVkYmFjay4KCgkqIHRvb2xzL3dpbmVkdW1wL21haW4uYywgdG9vbHMvd2luZWR1bXAvcGUuYywKCSAgdG9vbHMvd2luZWR1bXAvd2luZWR1bXAuaDoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJQmUgbW9yZSBzdHJpY3QgYWJvdXQgY2hlY2tzIChlc3BlY2lhbGx5IGluIFJWQSB0cmFuc2xhdGlvbnMpLgoKCSogZGxscy9nZGkvZHJpdmVyLmMsIGRsbHMvZ2RpL2VuaG1mZHJ2L2luaXQuYywKCSAgZGxscy9nZGkvZW5obWZkcnYvb2JqZWN0cy5jLCBkbGxzL2dkaS9mcmVldHlwZS5jLCBkbGxzL2dkaS9nZGkxNi5jLAoJICBkbGxzL2dkaS9nZGlfbWFpbi5jLCBkbGxzL2dkaS9nZGlfcHJpdmF0ZS5oLCBkbGxzL2dkaS9tZmRydi9pbml0LmMsCgkgIGRsbHMvZ2RpL21mZHJ2L21hcHBpbmcuYywgZGxscy9nZGkvbWZkcnYvb2JqZWN0cy5jLAoJICBkbGxzL2dkaS9wcmludGRydi5jLCBkbGxzL2dkaS93aW5nLmMsIGRsbHMveDExZHJ2L2JpdGJsdC5jLAoJICBkbGxzL3gxMWRydi9iaXRtYXAuYywgZGxscy94MTFkcnYvZ3JhcGhpY3MuYywgZGxscy94MTFkcnYvaW5pdC5jLAoJICBkbGxzL3gxMWRydi90ZXh0LmMsIGRsbHMveDExZHJ2L3hyZW5kZXIuYywgZ3JhcGhpY3MvYml0Ymx0LmMsCgkgIGdyYXBoaWNzL2VzY2FwZS5jLCBncmFwaGljcy9tYXBwaW5nLmMsIGdyYXBoaWNzL3BhaW50aW5nLmMsCgkgIGdyYXBoaWNzL3BhdGguYywgaW5jbHVkZS9nZGkuaCwgaW5jbHVkZS93aW5lL3dpbmdkaTE2LmgsCgkgIG9iamVjdHMvYml0bWFwLmMsIG9iamVjdHMvYnJ1c2guYywgb2JqZWN0cy9jbGlwcGluZy5jLCBvYmplY3RzL2RjLmMsCgkgIG9iamVjdHMvZGN2YWx1ZXMuYywgb2JqZWN0cy9kaWIuYywgb2JqZWN0cy9lbmhtZXRhZmlsZS5jLAoJICBvYmplY3RzL2ZvbnQuYywgb2JqZWN0cy9nZGlvYmouYywgb2JqZWN0cy9tZXRhZmlsZS5jLAoJICBvYmplY3RzL3BhbGV0dGUuYywgb2JqZWN0cy9wZW4uYywgb2JqZWN0cy9yZWdpb24uYywgb2JqZWN0cy90ZXh0LmMsCgkgIHdpbmRvd3MvZGNlLmMsIHdpbmRvd3Mvbm9uY2xpZW50LmMsIHdpbmRvd3MvcGFpbnRpbmcuYzoKCU1vdmVkIGEgYnVuY2ggb2YgZGVmaW5pdGlvbnMgZnJvbSBnZGkuaCBpbnRvIGEgbmV3IGdkaV9wcml2YXRlLmggdG8KCW1ha2Ugc3VyZSB3ZSBkb24ndCB1c2UgdGhlbSBvdXRzaWRlIG9mIGdkaTMyLgoKCSogZGxscy9pcGhscGFwaS9pcGhscGFwaV9tYWluLmMsIGRsbHMva2VybmVsL2RldmljZS5jLAoJICBkbGxzL25ldGFwaTMyL25idC5jOgoJRGVmaW5lIElOQUREUl9OT05FIGlmIG5lZWRlZCAocmVwb3J0ZWQgYnkgUm9iZXJ0IEx1bm5vbikuCgoJKiBwcm9ncmFtcy93aW5ldGVzdC9NYWtlZmlsZS5pbjoKCUF2b2lkIG5vbi1wb3J0YWJsZSBzdHJpcCAtcyAocmVwb3J0ZWQgYnkgUm9iZXJ0IEx1bm5vbikuCgoJKiBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwvcGF0aC5jLAoJICBkbGxzL2tlcm5lbC90ZXN0cy9wYXRoLmMsIGRsbHMvbnRkbGwvcGF0aC5jLCBmaWxlcy9kb3NfZnMuYzoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJUmVpbXBsZW1lbnRlZCBHZXR7U2hvcnR8TG9uZ31QYXRoTmFtZSBhbmQgdXBkYXRlZCB0aGUgcmVncmVzc2lvbgoJdGVzdHMuCgoyMDA0LTAxLTE0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy93aW5tbS93aW5lYXVkaW9pby9hdWRpby5jOiBSb2JlcnQgTHVubm9uIDxib2JsQG9wdHVzaG9tZS5jb20uYXU+CglGaXhlZCB0eXBlIG1pc21hdGNoIGluIHdpZERzQ3JlYXRlLgoKCSogZGxscy9pcGhscGFwaS9pZmVudW0uYzogUm9iZXJ0IEx1bm5vbiA8Ym9ibEBvcHR1c2hvbWUuY29tLmF1PgoJQ29ycmVjdGVkIGNvZGUgdG8gYWNxdWlyZSBtdHUgdW5kZXIgU29sYXJpcy4KCgkqIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYzoKCUZpeGVkIF9fc2lnaW5mbyB0eXBlIGZvciBTb2xhcmlzIChiYXNlZCBvbiBhIHBhdGNoIGJ5IFJvYmVydCBMdW5ub24pLgoKCSogZGxscy9uZXRhcGkzMi9uYnQuYzogUm9iZXJ0IEx1bm5vbiA8Ym9ibEBvcHR1c2hvbWUuY29tLmF1PgoJRkRfU0VUIGlzIG5vdCBhIHR5cGUgY2hhbmdlZCB0byBzdHJ1Y3QgZmRfc2V0LgoJUmVvcmRlcmVkIGhlYWRlcnMgdG8gYXZvaWQgaW5jbHVkaW5nIHN5cy9zZWxlY3QuaCBiZWZvcmUgd2luYmFzZS5oLgoKCSogdG9vbHMvYmluMnJlcy5jOiBSb2JlcnQgTHVubm9uIDxib2JsQG9wdHVzaG9tZS5jb20uYXU+CglJbmNsdWRlZCBsaW1pdHMuaCB0byByZXNvbHZlIG1pc3NpbmcgbWFjcm8gZGVmaW5pdGlvbi4KCgkqIExJQ0VOU0UsIGluY2x1ZGUvd2luZS93aW5lX2NvbW1vbl92ZXIucmM6CglJdmFuIExlbyBNdXJyYXktU21pdGggPHB1b3RpQGlud2luZC5pdD4KCVVwZGF0ZWQgY29weXJpZ2h0IGluZm9ybWF0aW9uLgoKCSogZGxscy9nZGkvZ2RpMzIuc3BlYywgZGxscy94MTFkcnYvY2xpcHBpbmcuYywgZGxscy94MTFkcnYvaW5pdC5jLAoJICBkbGxzL3gxMWRydi9zY3JvbGwuYywgZGxscy94MTFkcnYvd2lucG9zLmMsIGRsbHMveDExZHJ2L3gxMWRydi5oOgoJTW92ZWQgU2V0RHJhd2FibGUsIFN0YXJ0R3JhcGhpY3NFeHBvc3VyZXMgYW5kIEVuZEdyYXBoaWNzRXhwb3N1cmVzCglmdW5jdGlvbmFsaXR5IHRvIHgxMWRydiBlc2NhcGVzIHNvIHRoYXQgd2UgZG9uJ3QgaGF2ZSB0byBhY2Nlc3MgdGhlIERDCglzdHJ1Y3R1cmUgZGlyZWN0bHkuCgoJKiBkbGxzL2tlcm5lbC9maWxlLmMsIGRsbHMva2VybmVsL2ZpbGUxNi5jLCBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLAoJICBkbGxzL3dpbmVkb3MvaW50MjEuYywgZmlsZXMvZmlsZS5jOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CgktIGdvdCByaWQgb2YgRklMRV9EdXAyIGV4cG9ydCBmcm9tIGtlcm5lbDMyCgktIG1vdmUgYWxsIGRvcyBoYW5kbGUgcmVsYXRlZCBjb2RlIGludG8gZGxscy9rZXJuZWwzMgoKMjAwNC0wMS0xMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvZ2RpL2dkaTMyLnNwZWMsIGRsbHMveDExZHJ2L2JpdG1hcC5jLCBkbGxzL3gxMWRydi9icnVzaC5jLAoJICBkbGxzL3gxMWRydi9kaWIuYywgZGxscy94MTFkcnYveDExZHJ2LmgsIGluY2x1ZGUvYml0bWFwLmgsCgkgIG9iamVjdHMvZGliLmMsIHdpbmRvd3MvY3Vyc29yaWNvbi5jOgoJTW92ZWQgc29tZSBjb2RlIGFyb3VuZCB0byBhdm9pZCBleHBvcnRpbmcgRElCIGZ1bmN0aW9ucyBmcm9tIGdkaTMyLgoKCSogcHJvZ3JhbXMvcmVnZWRpdC9lZGl0LmMsIHByb2dyYW1zL3JlZ2VkaXQvZnJhbWV3bmQuYywKCSAgcHJvZ3JhbXMvcmVnZWRpdC9saXN0dmlldy5jLCBwcm9ncmFtcy9yZWdlZGl0L21haW4uaDoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglBZGQgdmFsdWUgcmVuYW1lIHN1cHBvcnQgdG8gcmVnZWRpdC4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzIuc3BlYywgZGxscy9vbGVhdXQzMi92YXJpYW50LmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJSW1wbGVtZW50ZWQgVmFySW50LCBWYXJGaXgsIFZhck5lZy4KCgkqIGRsbHMvb2xlYXV0MzIvdmFydHlwZS5jOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJVXNlIGludGVnZXIgbWF0aCBpbiBWYXJDeUludCwgZG9jcy4KCgkqIGRsbHMvbXN2Y3J0L21haW4uYywgZGxscy9tc3ZjcnQvbXN2Y3J0LmgsIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjOgoJUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJVHdvICJ1bmtub3duIiBwYXJhbWV0ZXJzIG9mIF91bkROYW1lKCkgdHVybiBvdXQgdG8gYmUgdGhlIG91dHB1dAoJc3RyaW5nIGFuZCBpdCBsZW5ndGguIElmIHBvc3NpYmxlLCB1c2UgdGhlc2UgaW5zdGVhZCBvZiBhbGxvY2F0aW5nIGEKCW5ldyBvbmUuIFB1dCB0aGUgY29kZSBpbiBfdW5ETmFtZUV4KCkgYW5kIGNhbGwgdGhhdCBmcm9tIF91bkROYW1lKCkuCgoJKiBkbGxzL2F2aWZpbDMyL3JzcmMucmM6IFRvbSBXaWNrbGluZSA8dHdpY2tsaW5lQHNreWJlc3QuY29tPgoJRml4ZWQgdmVyc2lvbiBpbmZvLgoKCSogcHJvZ3JhbXMvd2luZWJyb3dzZXIvbWFpbi5jOiBUb20gV2lja2xpbmUgPHR3aWNrbGluZUBza3liZXN0LmNvbT4KCUFkZCBkaWxsbyBhcyBhIGJyb3dzZXIgdG8gc2VhcmNoIGZvci4KCgkqIGRsbHMvbXN2Y3J0L01ha2VmaWxlLmluLCBkbGxzL21zdmNydC9kaXIuYywgZGxscy9tc3ZjcnQvZXJybm8uYywKCSAgZGxscy9tc3ZjcnQvZXhpdC5jLCBkbGxzL21zdmNydC9maWxlLmMsIGRsbHMvbXN2Y3J0L2xjb252LmMsCgkgIGRsbHMvbXN2Y3J0L2xvY2FsZS5jLCBkbGxzL21zdmNydC9tYXRoLmMsIGRsbHMvbXN2Y3J0L21zdmNydC5oLAoJICBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYzoKCUltcGxlbWVudGVkIHRoZSByZW1haW5pbmcgNjQtYml0IGZpbGUgZnVuY3Rpb25zLCBhbmQgYWRkZWQgYSBmZXcgb3RoZXIKCWZ1bmN0aW9ucyBhbmQgZXhwb3J0ZWQgdmFyaWFibGVzLgoJUmVtb3ZlZCB0aGUgYWxtb3N0IGVtcHR5IGxjb252LmMgZmlsZS4KCgkqIGRsbHMvbXN2Y3J0ZC9kZWJ1Zy5jLCBkbGxzL21zdmNydGQvbXN2Y3J0ZC5zcGVjOgoJSW1wbGVtZW50ZWQgYSBmZXcgbW9yZSBjcnQqIGZ1bmN0aW9ucy4KCVJlcGxhY2VkIG1vc3QgcmVtYWluaW5nIHN0dWJzIGJ5IGZvcndhcmRzIHRvIG1zdmNydC4KCgkqIGRsbHMveDExZHJ2L2RpYi5jOiBBdm9pZCBkaXJlY3QgYWNjZXNzIHRvIHRoZSBwYWxldHRlIHN0cnVjdHVyZS4KCgkqIGRsbHMvZ2RpL01ha2VmaWxlLmluLCBkbGxzL2dkaS9nZGkzMi5zcGVjLCBkbGxzL2dkaS9pY20uYywKCSAgaW5jbHVkZS93aW5nZGkuaDoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgc3R1YiBmb3IgRW51bUlDTVByb2ZpbGVzQS9XLgoKCSogZGxscy93aW5zb2NrL3Rlc3RzL3NvY2suYzogSmVyZW15IFdoaXRlIDxqd2hpdGVAY29kZXdlYXZlcnMuY29tPgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVRlc3QgdGhlIGJlaGF2aW9yIG9mIGJpbmQoKSB3cnQuIFNPX1JFVVNFQUREUi4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYzogSmVyZW15IFNoYXcgPGplcmVteS5zaGF3QGxpbmRvd3MuY29tPgoJUmVtb3ZlIGZvcmNlZCBXU19TT19SRVVTRUFERFIgb24gYWxsIGJpbmRzLgoKCSogZGxscy9jb21jdGwzMi9hbmltYXRlLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglGaXggYSByYWNlIHRoYXQgY2F1c2VkIHRoZSBNaWNyb3NvZnQgVmlld2VycyAnZmlsZSBleHRyYWN0aW9uJwoJYW5pbWF0aW9uIHRvIHNvbWV0aW1lcyBoYXZlIGEgcGluayBiYWNrZ3JvdW5kLgoKCSogcHJvZ3JhbXMvcmVnZWRpdC9yZWdlZGl0LmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglEbyBhIFNlYXJjaFBhdGggYmVmb3JlIG9wZW5pbmcgdGhlIGZpbGUgdG8gaW1wcm92ZSBjb21wYXRpYmlsaXR5IHdpdGgKCXRoZSBuYXRpdmUgcmVnZWRpdC4KCgkqIHByb2dyYW1zL3JlZ2VkaXQvdGVzdHMvb3JpZy5yZWcsIHByb2dyYW1zL3JlZ2VkaXQvdGVzdHMvcmVnZWRpdC5wbDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJUmVtb3ZlIHJlZmVyZW5jZXMgdG8gcmVnYXBpLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMuZGF0OgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJQWRkIHlldCBhbm90aGVyIHNwZWMgZmlsZSBmb3IgYSBuZXcgZGxsLgoKCSogZGxscy9udGRsbC90ZXN0cy9lbnYuYzogVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJUmVtb3ZlIGEgIlwiIGZyb20gYSBtdWx0aWxpbmUgc3RyaW5nIGNvbnN0YW50IGJ5IHNwbGl0dGluZyBpdCBpbiB0d28uCgoJKiBvYmplY3RzL21ldGFmaWxlLmM6IFZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCVJlbW92ZWQgYSBXLT5BIGNyb3NzLWNhbGwgKENvcHlNZXRhRmlsZVctPkNvcHlNZXRhRmlsZUEpLgoKCSogZGxscy9tc3ZjcnQ0MC9tc3ZjcnQ0MC5zcGVjOiBBZGRlZCBhbGwgdGhlIG1pc3NpbmcgZnVuY3Rpb25zLgoKCSogZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWM6IF9zZXRfZXJyb3JfbW9kZSBpcyBjZGVjbCBub3Qgc3RkY2FsbC4KCgkqIGRsbHMvbXN2Y3J0ZC9tc3ZjcnRkLnNwZWM6IEFuZHLpIEpvaGFuc2VuIDxhbmRyZWpvaEBjMmkubmV0PgoJRm9yd2FyZCBfc2V0X2Vycm9yX21vZGUgdG8gbXN2Y3J0LgoKCSogZGxscy93aW5lcHMvaW5pdC5jLCBpbmNsdWRlL2dkaS5oLCBvYmplY3RzL2RjLmM6CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglHZXQgcmlkIG9mIGEgVy0+QSBjcm9zc2NhbGwgKFJlc2V0RENBLT5SZXNldERDVykuCgoJKiBkbGxzL3dpbm1tL3dpbmVhbHNhL21pZGkuYzogQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJQWRkZWQgTWlkaSBJTiBzdXBwb3J0LgoKMjAwNC0wMS0xMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCUhhbmRsZSB0aGUgY2FzZXMgd2hlbiBpbml0ZGlyIGlzIGVpdGhlciBpbnZhbGlkLCBvciBzcGVjaWZpZXMgYSBmaWxlLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvbXN2Y3J0NDAvLmN2c2lnbm9yZSwKCSAgZGxscy9tc3ZjcnQ0MC9NYWtlZmlsZS5pbiwgZGxscy9tc3ZjcnQ0MC9tc3ZjcnQ0MC5jLAoJICBkbGxzL21zdmNydDQwL21zdmNydDQwLnNwZWM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglTdHViIGVub3VnaCBvZiBNU1ZDUlQ0MCB0byBtYWtlIElFNCBpbnN0YWxsIHdvcmsuCgoJKiBkbGxzL3VzZXIvdXNlcl9tYWluLmMsIGRsbHMveDExZHJ2L3Njcm9sbC5jLCBkbGxzL3gxMWRydi94MTFkcnYuc3BlYywKCSAgaW5jbHVkZS91c2VyLmgsIHdpbmRvd3Mvc2Nyb2xsLmM6CglTY3JvbGxEQyBkb2Vzbid0IG5lZWQgdG8gYmUgaW4gdGhlIGdyYXBoaWNzIGRyaXZlci4KCgkqIG9iamVjdHMvZGMuYzogTWlrZSBIZWFybiA8bWlrZUB0aGVvcmV0aWMuY29tPgoJQ2hhbmdlIEdldFRyYW5zZm9ybSBzdHViIHRvIHVzZSB0aGUgc3RhbmRhcmQgRklYTUUgcmF0aGVyIHRoYW4gRVJSLgoKCSogZGxscy93aW5lcHMvd2luZXBzLnNwZWM6IFZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCUNyZWF0ZURDIGlzIFVuaWNvZGUgbm93LCBjaGFuZ2UgdGhlIHNwZWMgZmlsZSBhY2NvcmRpbmdseS4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLmRhdDoKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCUFkZCBzcGVjIGZpbGVzIGZvciBuZXcgZGxscy4KCgkqIGRsbHMvcmljaGVkaXQvcmVhZGVyLmM6IEJpbGwgTWVkbGFuZCA8YmlsbG1lZGxhbmRAbWVyY3VyeXNwZWVkLmNvbT4KCUNvcnJlY3QgaGFuZGxpbmcgb2YgZm9udCB0YWJsZSB3aGVuIHRoZSBmb250IG5hbWUgaXMgbm90IHRoZSBsYXN0Cgl0aGluZyBpbiB0aGUgZW50cnkgKGkuZS4gaXMgZm9sbG93ZWQgYnkgdGhlIGZvbnQgYWx0bmFtZSBpbiBhIGdyb3VwKS4KCgkqIGRsbHMvb2xlYXV0MzIvc2FmZWFycmF5LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJU2FmZUFycmF5UmVkaW06IFVzZSB0aGUgY29ycmVjdCBzaXplIGZvciByZXNpemUgdG9vLgoKCSogZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZGxscy9rZXJuZWwvdG9vbGhlbHAuYywKCSAgaW5jbHVkZS90bGhlbHAzMi5oOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglJbXBsZW1lbnRlZCBUb29saGVscDMyUmVhZFByb2Nlc3NNZW1vcnkuCgoJKiBkbGxzL3dpbm1tL21tc3lzdGVtLmMsIGRsbHMvd2lubW0vdGltZS5jLCBkbGxzL3dpbm1tL3dpbmVtbS5oOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CgktIGltcGxlbWVudGVkIFRJTUVfS0lMTF9TWUNIUk9OT1VTIHRpbWVyIGZsYWdzCgktIHRpbWVLaWxsVGltZXIgaXMgbm93IHRocmVhZCBzYWZlCgktIHJlcGxhY2VkIHNvbWUgaURhdGEgYXR0cmlidXRlcyBieSBnbG9iYWwgdmFyaWFibGVzCgoJKiBkbGxzL2Rzb3VuZC9kc291bmRfcHJpdmF0ZS5oLCBkbGxzL2Rzb3VuZC9taXhlci5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCVJlZHVjZSB0aGUgdXNlIG9mIHRoZSBkc291bmQgZ2xvYmFsIHZhcmlhYmxlIGJ5IHBhc3NpbmcgYWRkcmVzcyB0bwoJZnVuY3Rpb25zLgoKMjAwNC0wMS0wOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL2hlYXAuYywgZGxscy9rZXJuZWwvbG9jYWwxNi5jLCBkbGxzL29sZWF1dDMyL3RtYXJzaGFsLmMsCgkgIGRsbHMvcnBjcnQ0L2Nwcm94eS5jLCBkbGxzL3dpbmVkb3MvbW9kdWxlLmMsIGRsbHMvd2luZWRvcy94bXMuYywKCSAgaW5jbHVkZS9jdXJzb3JpY29uLmgsIGluY2x1ZGUvbWlzY2VtdS5oLCBpbmNsdWRlL21vZHVsZS5oLAoJICBpbmNsdWRlL3dpbmUvd2luYmFzZTE2LmgsIGluY2x1ZGUvd2luZS93aW51c2VyMTYuaCwgaW5jbHVkZS93aW5udC5oLAoJICBpbmNsdWRlL3dpbnVzZXIuaDoKCUdldCByaWQgb2Ygbm8gbG9uZ2VyIG5lZWRlZCBXSU5FX1BBQ0tFRCBkZWZpbmUuCgoJKiBkbGxzL2Rzb3VuZC9idWZmZXIuYywgZGxscy9kc291bmQvZHNvdW5kX21haW4uYywKCSAgZGxscy9kc291bmQvZHNvdW5kX3ByaXZhdGUuaCwgZGxscy9kc291bmQvcHJpbWFyeS5jLAoJICBpbmNsdWRlL2Rzb3VuZC5oOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUFkZGVkIHNvbWUgbWlzc2luZyBkZWZpbmVzIGFuZCBhIHN0cnVjdC4KCUZpeGVkIHNvbWUgY29uc3QgKiBhcmd1bWVudHMuCgoJKiBkbGxzL250ZGxsL2ZpbGUuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBbGxvdyBvZmZzZXQgb2YgTlVMTCB0byBOdFdyaXRlRmlsZS4KCgkqIGRsbHMvd2lubW0vd2luZWFydHMvYXVkaW8uYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCBIZWFwUmVhbGxvYyB0eXBvLgoKCSogdG9vbHMvd2luZWdjYy93aW5ld3JhcC5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJUmVtb3ZlIHRoZSB3cmFwcGVyIGdlbmVyYXRpb24gZnJvbSB3aW5ld3JhcCwgaXQgaXMgbm8gbG9uZ2VyIG5lY2Vzc2FyeQoJKGZpeGVkIGJ5IEFsZXhhbmRyZSdzIGNvbnN0cnVjdG9yIHBhdGNoKS4KCgkqIGRsbHMvY29tbWRsZy9wcmludGRsZy5jLCBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuaCwKCSAgZGxscy9jb21tZGxnL3ByaW50ZGxnMTYuYzoKCVNvbWUgbW9yZSBXaW4xNi9XaW4zMiBzZXBhcmF0aW9uIChiYXNlZCBvbiBhIHBhdGNoIGJ5IFN0ZXZlbgoJRWR3YXJkcykuCgoJKiBkbGxzL3dpbmVkb3MvaW50MTAuYzogTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5kZT4KCS0gYWRkIFZFU0EgbW9kZSAweDZhIChzYW1lIGFzIDB4MTAyKQoJLSBhZGQgYSBtYWNybyB0byBjaGVjayBpZiBhIG1vZGUgaXMgYSBWRVNBIG1vZGUKCS0gb3V0cHV0IHRoZSB1bnN1cHBvcnRlZCBWR0EgbW9kZSBpbiBoZXggKGFsbCBWR0EvVkVTQSBkb2NzIHVzZSBoZXgKCSAgZm9yIHRoYXQpCgoJKiBkbGxzL3dpbm1tL3dpbmVqYWNrL2F1ZGlvLmMsIGRsbHMvd2lubW0vd2luZWphY2svd2luZWphY2suZHJ2LnNwZWMsCgkgIGRsbHMvd2lubW0vd2luZWFydHMvYXVkaW8uYywgZGxscy93aW5tbS93aW5lYXJ0cy93aW5lYXJ0cy5kcnYuc3BlYzoKCUplcmVteSBTaGF3IDxqZXJlbXkuc2hhd0BsaW5kb3dzLmNvbT4KCUFkZGVkIHdhdmUtaW4gc3VwcG9ydCBhbmQgZml4ZWQgYSBmZXcgYnVncyBpbiB0aGUgd2F2ZS1vdXQgY29kZS4KCgkqIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmM6CglSZW1vdmVkIFhJbml0VGhyZWFkcyBjYWxsLCB0aGUgWCBsaWJyYXJpZXMgc3RpbGwgaGF2ZSB0b28gbWFueSBidWdzIHRvCgltYWtlIHRoaXMgdmlhYmxlLgoKCSogZGxscy9vbGVhdXQzMi9zYWZlYXJyYXkuYywgZGxscy9vbGVhdXQzMi90ZXN0cy92YXJ0eXBlLmMsCgkgIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglDb3B5IEJTVFJzIGJ5dGUgd2lzZS4KCUFkZGVkIGEgdGVzdGNhc2UgZm9yIGJ5dGUgd2lzZSBjb3B5IG9mIFZUX0JTVFIgdmFyaWFudCB3aXRoCglWYXJpYW50Q29weSgpLgoKCSogaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9kYnQuaDoKCVVscmljaCBDemVrYWxsYSA8dWxyaWNoLmN6ZWthbGxhQHV0b3JvbnRvLmNhPgoJQWRkZWQgaGVhZGVyIGRidC5oLgoKCSogZGxscy91c2VyL3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMvdXNlci90ZXN0cy9NYWtlZmlsZS5pbiwKCSAgZGxscy91c2VyL3Rlc3RzL3Jlc291cmNlLmMsIGRsbHMvdXNlci90ZXN0cy9yZXNvdXJjZS5yYzoKCUZlcmVuYyBXYWduZXIgPHdmZXJpQGFmYXZhbnQuZWx0ZS5odT4KCVBpbiBkb3duIExvYWRTdHJpbmdBIGJlaGF2aW91ciBvbiBkaWZmZXJlbnQgYnVmZmVyIGxlbmd0aHMuCgoJKiBkbGxzL3NoZWxsMzIvc2h2X2JnX2NtZW51LmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRml4IGFuIElFIGNyYXNoIGFuZCBtYWtlIHRoZSAiQ3JlYXRlIEZvbGRlciIgZnVuY3Rpb25hbGl0eSBpbgoJRmF2b3JpdGVzIHdvcmsuCgoJKiBkbGxzL3JwY3J0NC9ycGNfc2VydmVyLmM6IE92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJQXZvaWQgZnJlZWluZyByZXF1ZXN0IHBhY2tldCB0b28gZWFybHkgaWYgYW4gZXhjZXB0aW9uIG9jY3Vycy4KCgkqIGRsbHMvcnBjcnQ0L3JwY19iaW5kaW5nLmM6IE92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJUHJvcGVybHkgaGFuZGxlIGRlc3Ryb3lpbmcgdGhlIGZpcnN0IGNvbm5lY3Rpb24gaW4gdGhlIGNvbm5lY3Rpb24KCWNhY2hlLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvZmlsZS5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglSZWdyZXNzaW9uIHRlc3QgZm9yIGZpbGVzIHdpdGggemVybyBsZW5ndGguCgoJKiBzZXJ2ZXIvbWFwcGluZy5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglNYXBwaW5nIGEgemVybyBzaXplIGZpbGUgc2hvdWxkIGZhaWwuCgoJKiB0b29scy93aW5lZ2NjL3dpbmV3cmFwLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglEbyBub3QgZmFpbCBpZiB3ZSBjYW4ndCBsb2FkIHNvbWUgbGlicyBpbiB0aGUgd3JhcHBlci4KCU5vIG5lZWQgdG8gbGluayB0aGUgd3JhcHBlciB3aXRoIGFsbCBsaWJzLCB3ZSBrbm93IHdoYXQgd2UgbmVlZC4KCgkqIHRvb2xzL3dpbmVnY2Mvd2luZXdyYXAuYzoKCUlmIHN1cHBvcnRlZCwgYWRkIC1pbml0IGFuZCAtZmluaSBmbGFncyB0byB0aGUgbGlua2VyIGludm9jYXRpb24uCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy93aW50YWIzMi9NYWtlZmlsZS5pbiwKCSAgZGxscy93aW50YWIzMi9jb250ZXh0LmMsIGRsbHMvd2ludGFiMzIvd2ludGFiMzIuYywKCSAgZGxscy93aW50YWIzMi93aW50YWJfaW50ZXJuYWwuaCwgZGxscy94MTFkcnYvTWFrZWZpbGUuaW4sCgkgIGRsbHMveDExZHJ2L2V2ZW50LmMsIGRsbHMveDExZHJ2L3dpbnRhYi5jLCBkbGxzL3gxMWRydi94MTFkcnYuaCwKCSAgZGxscy94MTFkcnYveDExZHJ2LnNwZWMsIGluY2x1ZGUvY29uZmlnLmguaW4sIGluY2x1ZGUvd2ludGFiLmg6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJRW5hYmxlIFRhYmxldCBzdXBwb3J0IHdpdGggYm90aCBUaWx0IGFuZCBQcmVzc3VyZS4KCjIwMDQtMDEtMDggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2QzZDgvZDNkY29yZV9nbC5oLCBkbGxzL3R3YWluL3R3YWluLmgsIGluY2x1ZGUvd2luZS9tbXN5c3RlbTE2Lmg6CglUaGVyZSdzIG5vIG5lZWQgZm9yIERVTU1ZVU5JT05OQU1FIGluIHByaXZhdGUgaGVhZGVycy4KCgkqIGluY2x1ZGUvY29tbWRsZy5oOiBLZXZpbiBLb2x0emF1IDxrZXZpbkBwbG9wLm9yZz4KCURlZmluZSBPUEVORklMRU5BTUVfU0laRV9WRVJTSU9OXzQwMC4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBpbmNsdWRlL3dpbmUvcG9ydC5oLAoJICBsaWJzL3BvcnQvTWFrZWZpbGUuaW4sIGxpYnMvcG9ydC9yZWFkbGluay5jOgoJQWRkZWQgY29uZmlndXJlIGNoZWNrIGZvciByZWFkbGluay4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL2tlcm5lbC9wcm9jZXNzLmMsIGRsbHMvbnRkbGwvbG9hZGVyLmMsCgkgIGluY2x1ZGUvY29uZmlnLmguaW4sIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYzoKCUlmIHN1cHBvcnRlZCBieSB0aGUgbGlua2VyLCBwcmV2ZW50IHRoZSBFTEYgbG9hZGVyIGZyb20gY2FsbGluZyB0aGUKCWRsbCBjb25zdHJ1Y3RvcnMgYXQgbG9hZCB0aW1lIGFuZCBjYWxsIHRoZW0gZnJvbSB0aGUgZGxsIGVudHJ5IHBvaW50CglpbnN0ZWFkLgoKCSogZGxscy9rZXJuZWwvdGh1bmsuYzogTWlrZSBIZWFybiA8bWlrZUB0aGVvcmV0aWMuY29tPgoJQWx3YXlzIHByaW50IGEgbWVzc2FnZSBmb3IgZ2VuZXJpYyBzdHVicy4KCgkqIGRsbHMveDExZHJ2L2NsaXBib2FyZC5jLCBkb2N1bWVudGF0aW9uL3NhbXBsZXMvY29uZmlnOgoJVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hAY29kZXdlYXZlcnMuY29tPgoJQWRkIG9wdGlvbiB0byB1c2UgdGhlIHByaW1hcnkgc2VsZWN0aW9uIGluIGFkZGl0aW9uIHRvIHRoZSBjbGlwYm9hcmQKCXNlbGVjdGlvbi4KCgkqIGRsbHMvY2FiaW5ldC9jYWJleHRyYWN0LmMsIGRsbHMvY2FiaW5ldC9jYWJpbmV0LmgsCgkgIGRsbHMvY2FiaW5ldC9jYWJpbmV0X21haW4uYzoKCVN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJQWRkZWQgdGhlIGxpbmtlZCBsaXN0IHdpdGggdGhlIG5hbWUgb2YgZmlsZXMgb2YgdGhlIENBQiBhcmNoaXZlLgoKCSogZGxscy93aW5tbS9tY2lhbmltL21jaWFuaW0uYywgZGxscy93aW5tbS9tY2ljZGEvbWNpY2RhLmMsCgkgIGRsbHMvd2lubW0vbWNpc2VxL21jaW1pZGkuYywgZGxscy93aW5tbS9tY2l3YXZlL21jaXdhdmUuYzoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJLSBBcHBsaWVkIHRvIGFsbCBNQ0kgZHJpdmVycyBEbWl0cnkncyBmaXggZm9yIE1DSV9TVEFUVVNfVElNRV9GT1JNQVQKCSAgKHdhc24ndCByZXR1cm5pbmcgc3RyaW5nIHJlc291cmNlIElEKS4KCS0gRml4ZWQgbWNpc2VxIHdoZW4gb3BlbmVkIHdpdGhvdXQgYSBmaWxlbmFtZS4KCgkqIGRsbHMvaXBobHBhcGkvdGVzdHMvaXBobHBhcGkuYzogSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglSZW1vdmUgc29tZSB1bnVzZWQgaGVhZGVycy4KCgkqIHByb2dyYW1zL3JlZ2VkaXQvSXQucmM6IEl2YW4gTGVvIE11cnJheS1TbWl0aCA8cHVvdGlAaW53aW5kLml0PgoJQnJvdWdodCB1cCB0byBkYXRlIHRvIERpbWkncyBsYXRlc3QgcGF0Y2guCgoJKiBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL2ljbS5oOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWRkIGljbS5oIGZvciBjb2xvdXIgbWFuYWdlbWVudC4KCgkqIGluY2x1ZGUvc2hsb2JqLmg6IEtldmluIEtvbHR6YXUgPGtldmluQHBsb3Aub3JnPgoJRGVmaW5lIHN0cnVjdHMgRklMRURFU0NSSVBUT1IgYW5kIEZJTEVHUk9VUERFU0NSSVBUT1IgdXNlZCB3aXRoIHRoZQoJY2xpcGJvYXJkIGZvcm1hdCBDRl9GSUxFR1JPVVBERVNDUklQVE9SLgoKMjAwNC0wMS0wNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL2tlcm5lbF9wcml2YXRlLmgsIGRsbHMva2VybmVsL3Byb2Nlc3MuYywKCSAgZGxscy9rZXJuZWwvcHRocmVhZC5jLCBkbGxzL250ZGxsL2RlYnVndG9vbHMuYywKCSAgZGxscy9udGRsbC9udGRsbF9taXNjLmgsIGRsbHMvbnRkbGwvdGhyZWFkLmMsIGRsbHMvbnRkbGwvdmlydHVhbC5jOgoJRG9uJ3QgdXNlIGNvbnN0cnVjdG9ycyBmb3IgbnRkbGwgYW5kIGtlcm5lbDMyIGluaXRpYWxpemF0aW9uLgoKCSogdG9vbHMvd2lkbC9NYWtlZmlsZS5pbiwgdG9vbHMvd2lkbC9oZWFkZXIuYywgdG9vbHMvd2lkbC9oZWFkZXIuaCwKCSAgdG9vbHMvd2lkbC9wYXJzZXIubCwgdG9vbHMvd2lkbC9wYXJzZXIueSwgdG9vbHMvd2lkbC9wcm94eS5jLAoJICB0b29scy93aWRsL3Byb3h5LmgsIHRvb2xzL3dpZGwvdHlwZWxpYi5jLCB0b29scy93aWRsL3R5cGVsaWIuaCwKCSAgdG9vbHMvd2lkbC93aWRsLmMsIHRvb2xzL3dpZGwvd2lkbC5oLCB0b29scy93aWRsL3dpZGx0eXBlcy5oOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglBZGRlZCBydWxlcyB0byBwYXJzZSBsaWJyYXJ5LCBjb2NsYXNzLCBkaXNwaW50ZXJmYWNlLCBhbmQgbW9kdWxlCglkZWZpbml0aW9ucywgYW5kIGEgbnVtYmVyIG9mIGF0dHJpYnV0ZXMsIGFuZCBjbGVhbmVkIHVwIGEgZmV3IHRoaW5ncy4KCVN0YXJ0ZWQgb24gYSB0eXBlbGliIGdlbmVyYXRpb24gZnJhbWV3b3JrLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvaXBobHBhcGkvTWFrZWZpbGUuaW4sCgkgIGRsbHMvaXBobHBhcGkvaXBobHBhcGlfbWFpbi5jLCBkbGxzL2lwaGxwYXBpL3Rlc3RzLy5jdnNpZ25vcmUsCgkgIGRsbHMvaXBobHBhcGkvdGVzdHMvTWFrZWZpbGUuaW4sIGRsbHMvaXBobHBhcGkvdGVzdHMvaXBobHBhcGkuYzoKCUp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCUZpeGVkIHRoZSBkd0JDYXN0QWRkciBtZW1iZXIgb2YgTUlCX0lQQUREUlJPVywgYWRkZWQgYSB0ZXN0IHByb2dyYW0uCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmMsIGRsbHMvbXNpL3N1bWluZm8uYywKCSAgZGxscy9zaGVsbDMyL2Jyc2ZvbGRlci5jOgoJUmVtb3ZlZCBpbmNvcnJlY3QgdXNlcyBvZiBEVU1NWVVOSU9OTkFNRS4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjOiAgV2ltIExld2lzIDx3aW1sQHVuZGVyaGlsbC5oaGhoLm9yZz4KCUZpeGVkIHNoZWxsIHF1b3Rpbmcgb2YgdGhlIGlubGluZS1hc20gdGVzdHMgc28gdGhhdCB0aGV5IHdvcmsgcHJvcGVybHkKCXdpdGggdGhlIHBka3NoIHRoYXQgc2hpcHMgd2l0aCBPcGVuQlNELgoKCSogcHJvZ3JhbXMvd2luZWNmZy9Fbi5yYywgcHJvZ3JhbXMvd2luZWNmZy9Fcy5yYywKCSAgcHJvZ3JhbXMvd2luZWNmZy9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luZWNmZy9QdC5yYywKCSAgcHJvZ3JhbXMvd2luZWNmZy9SdS5yYywgcHJvZ3JhbXMvd2luZWNmZy9TaS5yYywKCSAgcHJvZ3JhbXMvd2luZWNmZy9saWJyYXJpZXMuYywgcHJvZ3JhbXMvd2luZWNmZy9tYWluLmMsCgkgIHByb2dyYW1zL3dpbmVjZmcvcmVzb3VyY2UuaCwgcHJvZ3JhbXMvd2luZWNmZy93aW5lY2ZnLmMsCgkgIHByb2dyYW1zL3dpbmVjZmcvd2luZWNmZy5oOgoJUm9iZXJ0IHZhbiBIZXJrIDxyb2JlcnRAcm9iZXJ0dmFuaGVyay5ubD4KCUFkZGVkIGEgdGFic2hlZXQgdGhhdCBhbGxvd3MgdGhlIHVzZXIgdG8gY2hhbmdlIHRoZSBkbGwgb3ZlcnJpZGVzLAoJYm90aCBnbG9iYWxseSBhbmQgcGVyIGFwcC4KCjIwMDQtMDEtMDYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2NvbWN0bDMyL3RhYi5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jLAoJICBkbGxzL2NvbW1kbGcvZmluZGRsZzMyLmMsIGRsbHMvZDNkOC9kM2Q4X3ByaXZhdGUuaCwKCSAgZGxscy9kM2Q4L2RldmljZS5jLCBkbGxzL2QzZDgvZGlyZWN0eC5jLCBkbGxzL2QzZDgvZHJhd3ByaW0uYywKCSAgZGxscy9kM2Q4L3N0YXRlYmxvY2suYywgZGxscy9kM2Q4L3N1cmZhY2UuYywgZGxscy9kM2Q4L3V0aWxzLmMsCgkgIGRsbHMvZDNkOC92b2x1bWUuYywgZGxscy9kaW5wdXQvam95c3RpY2svbGludXhpbnB1dC5jLAoJICBkbGxzL2RpbnB1dC9tb3VzZS9tYWluLmMsIGRsbHMvaWNtcC9pcC5oLCBkbGxzL2tlcm5lbC90ZXN0cy9sb2NhbGUuYywKCSAgZGxscy9tc3ZjcnQvZmlsZS5jLCBkbGxzL21zdmNydC9tYWluLmMsIGRsbHMvb2xlMzIvY2xpcGJvYXJkLmMsCgkgIGRsbHMvb2xlMzIvY29tcG9zaXRlbW9uaWtlci5jLCBkbGxzL29sZTMyL2Vycm9yaW5mby5jLAoJICBkbGxzL29sZTMyL2ZpbGVtb25pa2VyLmMsIGRsbHMvb2xlYXV0MzIvb2xlYXV0LmMsCgkgIGRsbHMvb2xlYXV0MzIvdGVzdHMvdmFydGVzdC5jLCBkbGxzL29sZWF1dDMyL3Rlc3RzL3ZhcnR5cGUuYywKCSAgZGxscy9vbGVhdXQzMi92YXJmb3JtYXQuYywgZGxscy9vbGVhdXQzMi92YXJpYW50LmMsCgkgIGRsbHMvb2xlYXV0MzIvdmFydHlwZS5jLCBkbGxzL3NoZWxsMzIvcGlkbC5oLCBkbGxzL3NoZWxsMzIvc2hsZXhlYy5jLAoJICBkbGxzL3NoZWxsMzIvc2hsbWVudS5jLCBkbGxzL3NobHdhcGkvcGF0aC5jLCBkbGxzL3VzZXIvcmVzb3VyY2UuYywKCSAgZGxscy91eHRoZW1lL3N5c3RlbS5jLCBkbGxzL3V4dGhlbWUvdXh0aGVtZWRsbC5oLAoJICBkbGxzL3dpbmVkb3MvaW50MTAuYywgZGxscy93aW5tbS93aW5lYXVkaW9pby9hdWRpby5jLAoJICBkbGxzL3dpbm1tL3dpbmVtbS5oLCBkbGxzL3dpbnNwb29sL2luZm8uYywgZGxscy94MTFkcnYveGZvbnQuYywKCSAgZG9jdW1lbnRhdGlvbi9nZXR0aW5nLnNnbWwsIGZpbGVzL2ZpbGUuYywgaW5jbHVkZS9zaGx3YXBpLmgsCgkgIHByb2dyYW1zL3djbWQvd2NtZG1haW4uYywgdG9vbHMvYzJtYW4ucGwsIHRvb2xzL3dpbmVkdW1wL1JFQURNRSwKCSAgdG9vbHMvd2luZWluc3RhbGw6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFzc29ydGVkIHNwZWxsaW5nIGZpeGVzLgoKCSogaW5jbHVkZS9zaGxndWlkLmgsIGluY2x1ZGUvc2hvYmppZGwuaCwgaW5jbHVkZS9zaG9iamlkbC5pZGw6CglNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJRGVmaW5lIElTaGVsbEV4ZWN1dGVIb29rIGludGVyZmFjZS4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjOiBIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCVVzZSBnY2MncyAtcGlwZSBvcHRpb24gdG8gcmVkdWNlIGNvbXBpbGUgdGltZS4KCgkqIGRsbHMvbXN2Y3J0L3NjYW5mLmgsIGRsbHMvbXN2Y3J0L3Rlc3RzL3NjYW5mLmM6CglQZXRlciBCZXJnIExhcnNlbiA8cGVibEBtYXRoLmt1LmRrPgoJJVthLXpdIGFuZCAlW3otYV0gYXJlIGludGVycHJldGVkIGFzIGVxdWl2YWxlbnQgdG8gJVthYmNkZS4uLnpdLgoJQWRkZWQgc29tZSBzY2FuZiB0ZXN0cy4KCgkqIHdpbmRvd3MvZGlhbG9nLmM6IENvbnZlcnRlZCBEbGdEaXJMaXN0IHRvIFVuaWNvZGUuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgcHJvZ3JhbXMvTWFrZWZpbGUuaW4sIHByb2dyYW1zL21ha2VfcHJvZ3MsCgkgIHdpbmVkZWZhdWx0LnJlZywgcHJvZ3JhbXMvd2luZWJyb3dzZXIvLmN2c2lnbm9yZSwKCSAgcHJvZ3JhbXMvd2luZWJyb3dzZXIvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmVicm93c2VyL21haW4uYywKCSAgdG9vbHMvd2luZWluc3RhbGw6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5AYWx1bS53cGkuZWR1PgoJQWRkZWQgd2luZWJyb3dzZXIgYXBwIHRoYXQgbGF1bmNoZXMgYSBVbml4IGJyb3dzZXIuCgoJKiBkbGxzL2F2aWZpbDMyL2FwaS5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLAoJICBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYywgZGxscy9zaGVsbDMyL3VuZG9jc2hlbGwuaCwgaW5jbHVkZS9zaGxvYmouaDoKCVNIQ29DcmVhdGVJbnN0YW5jZSBpcyBub3cgZG9jdW1lbnRlZCAoc3BvdHRlZCBieSBGcmFuY29pcyBHb3VnZXQpLgoJSXRzIGZpcnN0IGFyZ3VtZW50IHNob3VsZCBiZSBhIFVuaWNvZGUgc3RyaW5nLgoKCSogd2luZG93cy9xdWV1ZS5jOiBSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJQWRkIG1pc3NpbmcgXG4gb24gZXJyb3IgbWVzc2FnZS4KCgkqIGRsbHMvYWR2YXBpMzIvY3J5cHQuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgbWlzc2luZyBMRiBpbiB0cmFjZS4KCgkqIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbjogSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglNYWtlIHN1cmUgc2VkIHVzZXMgdGhlIHJpZ2h0IGxvY2FsZS4KCgkqIGRsbHMvd2lubW0vbWNpYXZpL21jaWF2aS5jLCBkbGxzL3dpbm1tL21jaWF2aS9wcml2YXRlX21jaWF2aS5oLAoJICBkbGxzL3dpbm1tL21jaWF2aS93bmQuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglSZWdpc3RlciB3aW5kb3cgY2xhc3Mgb24gbWNpYXZpIGRyaXZlciBsb2FkaW5nLCBhbmQgdW5yZWdpc3RlciBpdCBvbgoJZHJpdmVyIHVubG9hZGluZy4KCgkqIGRsbHMvd2lubW0vbWNpYXZpL2luZm8uYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVJldHVybiBjb3JyZWN0IHJlc291cmNlIGlkIGZvciB0aW1lIGZvcm1hdCBzdHJpbmdzLgoKCSogcHJvZ3JhbXMvd2luZW1lbnVidWlsZGVyL3dpbmVtZW51YnVpbGRlci5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUltcHJvdmUgZXJyb3IgcmVwb3J0aW5nLgoKCSogcHJvZ3JhbXMvcmVnZWRpdC9Fbi5yYywgcHJvZ3JhbXMvcmVnZWRpdC9lZGl0LmMsCgkgIHByb2dyYW1zL3JlZ2VkaXQvZnJhbWV3bmQuYywgcHJvZ3JhbXMvcmVnZWRpdC9tYWluLmgsCgkgIHByb2dyYW1zL3JlZ2VkaXQvcmVzb3VyY2UuaDoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglBZGQgbmV3IHZhbHVlIHN1cHBvcnQuIE1pc2MgaW1wcm92ZW1lbnRzIGFuZCBjbGVhbnVwcy4KCgkqIGRsbHMvbXN2Y3J0L3NjYW5mLmg6IFBldGVyIEJlcmcgTGFyc2VuIDxwZWJsQG1hdGgua3UuZGs+CglBZGRlZCBfQklUTUFQU0laRV8gYW5kIHNwbGl0IF9DT05WRVJUXyBtYWNybyB0byByZW1vdmUgI2lmZGVmcy4KCgkqIHByb2dyYW1zL3JlZ2VkaXQvSXQucmM6IEl2YW4gTGVvIE11cnJheS1TbWl0aCA8cHVvdGlAaW53aW5kLml0PgoJVXBkYXRlZCBJdGFsaWFuIHJlc291cmNlcy4KCgkqIG9iamVjdHMvZW5obWV0YWZpbGUuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+Cgl4TnVtIHNob3VsZCBiZSB5TnVtIGluIG9uZSBwbGFjZS4KCgkqIGRsbHMvZDNkOC9kcmF3cHJpbS5jOiBKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJRml4IHRoZSBkcmF3KnByaW1pdGl2ZVVQIGNhbGxzIHNvIHRoZXkgd29yayBkaXJlY3RseSBhZnRlciBhIGRyYXcKCXdoaWNoIHVzZXMgdmVydGV4IHNoYWRlcnMuCgoJKiBkbGxzL29wZW5nbDMyL21ha2Vfb3BlbmdsLCBkbGxzL29wZW5nbDMyL29wZW5nbDMyLnNwZWMsCgkgIGRsbHMvb3BlbmdsMzIvd2dsLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJSW1wbGVtZW50IHdnbFVzZUZvbnRCaXRtYXBzVy4KCjIwMDQtMDEtMDUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2dkaS9mcmVldHlwZS5jLCBkbGxzL2dkaS9wcmludGRydi5jLCBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLAoJICBkbGxzL3dpbmVkb3MvZG9zY29uZi5jLCBmaWxlcy9kb3NfZnMuYywgaW5jbHVkZS93aW5iYXNlLmgsCgkgIHByb2dyYW1zL3dpbmVtZW51YnVpbGRlci93aW5lbWVudWJ1aWxkZXIuYywKCSAgcHJvZ3JhbXMvd2luZXBhdGgvd2luZXBhdGguYzoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJTWFkZSB3aW5lX2dldF91bml4X2ZpbGVfbmFtZSB0YWtlIGEgVW5pY29kZSBzdHJpbmcgcG9pbnRlci4KCgkqIGRsbHMvd2lubW0vbWNpYXZpL21tb3V0cHV0LmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWNjZXB0IGFsbCBzdGFuZGFyZCBESUIgY29tcHJlc3Npb25zIGluIHRoZSBtY2lhdmkgZHJpdmVyLgoKCSogZGxscy9udGRsbC9sb2Fkb3JkZXIuYywgZG9jdW1lbnRhdGlvbi9zYW1wbGVzL2NvbmZpZywKCSAgZG9jdW1lbnRhdGlvbi93aW5lLmNvbmYubWFuLCBkb2N1bWVudGF0aW9uL3dpbmUubWFuLmluOgoJVXBkYXRlcyBmb3IgdGhlIG5ldyBsb2Fkb3JkZXIgaGFuZGxpbmcgb2YgMTYtYml0IGRsbHMuCgoJKiBkb2N1bWVudGF0aW9uL2NvbmZpZ3VyaW5nLnNnbWwsIGRvY3VtZW50YXRpb24vZ2V0dGluZy5zZ21sOgoJSXZhbiBMZW8gTXVycmF5LVNtaXRoIDxwdW90aUBpbndpbmQuaXQ+CglEb2N1bWVudGF0aW9uIHVwZGF0ZXMuCgoJKiBwcm9ncmFtcy9yZWdlZGl0L0VuLnJjLCBwcm9ncmFtcy9yZWdlZGl0L2VkaXQuYywKCSAgcHJvZ3JhbXMvcmVnZWRpdC9mcmFtZXduZC5jLCBwcm9ncmFtcy9yZWdlZGl0L21haW4uaCwKCSAgcHJvZ3JhbXMvcmVnZWRpdC9yZXNvdXJjZS5oLCBwcm9ncmFtcy9yZWdlZGl0L3RyZWV2aWV3LmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQWRkIHZhbHVlIGRlbGV0ZSwgYW5kIGR3b3JkIGVkaXQgc3VwcG9ydC4KCgkqIGRsbHMvd2lubW0vbWNpYXZpL21tb3V0cHV0LmMsIGRsbHMvd2lubW0vbWNpYXZpL3ByaXZhdGVfbWNpYXZpLmg6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRGVjb2RlIHN0cmVhbSBudW1iZXIgZnJvbSBBVkkgZnJhbWUgZGF0YSBhbmQgYXNzaWduIHRoZSBkYXRhIHRvCglhcHByb3ByaWF0ZSBzdHJlYW1zLgoKCSogZGxscy9zaGVsbDMyL3NobGZpbGVvcC5jLCBpbmNsdWRlL3NoZWxsYXBpLmg6CglNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJQ29ycmVjdCByZXR1cm4gdHlwZSBvZiBTSEZpbGVPcGVyYXRpb25BL1cuCgoJKiBkbGxzL3NldHVwYXBpL3BhcnNlci5jLCBkbGxzL3NldHVwYXBpL3N0dWJzLmMsIGluY2x1ZGUvc2V0dXBhcGkuaDoKCVN0ZXZlbiBFZHdhcmRzIDxzdGV2ZW5fZWQ0MTUzQHlhaG9vLmNvbT4KCU1TVkMgcG9ydGluZyBmaXhlcy4KCgkqIGRvY3VtZW50YXRpb24vcmVnaXN0cnkuc2dtbDogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglEcm9wIHBhcmFncmFwaCBkZXNjcmliaW5nIG5vIGxvbmdlciBleGlzdGluZyByZWdjbGVhbi5leGUuCgoJKiBkbGxzL2RpbnB1dC9qb3lzdGljay9saW51eC5jLCBkbGxzL2RpbnB1dC9qb3lzdGljay9saW51eGlucHV0LmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUhhbmRsZSBESUpPWVNUQVRFIGFuZCBESUpPWVNUQVRFMiBzdHJ1Y3RzLCBmYWlsIG9uIHVua25vd24gc2l6ZXMuCgoyMDA0LTAxLTAzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9rZXJuZWwvbmVfbW9kdWxlLmM6CglBbHdheXMgdHJ5IHRvIGxvYWQgdGhlIDMyLWJpdCBvd25lciBkbGwgaW5zdGVhZCBvZiBkaXJlY3RseSBsb2FkaW5nCgl0aGUgLnNvIGZpbGUgZm9yIDE2LWJpdCBidWlsdGlucy4gTWFrZSB0aGUgbG9hZCBvcmRlciBmb3IgMTYtYml0IGRsbHMKCWFsd2F5cyBtYXRjaCB0aGUgbG9hZCBvcmRlciBvZiB0aGVpciAzMi1iaXQgb3duZXIgKGlmIGFueSkuCgoJKiBkbGxzL2RtaW1lL2RtaW1lX3ByaXZhdGUuaCwgZGxscy9kbXVzaWMvZG11c2ljX3ByaXZhdGUuaDoKCUF2b2lkIHJlZmVyZW5jaW5nIGEgcHJpdmF0ZSBoZWFkZXIgaW4gYW5vdGhlciBkbGwuCgoJKiBkbGxzL2FkdmFwaTMyL3JlZ2lzdHJ5LmMsIGRsbHMva2VybmVsL3Z4ZC5jLCBkbGxzL250ZGxsL3JlZy5jLAoJICBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsIHNlcnZlci9wcm90b2NvbC5kZWYsCgkgIHNlcnZlci9yZWdpc3RyeS5jLCBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvdHJhY2UuYzoKCU1pa2UgSGVhcm4gPG1pa2VAdGhlb3JldGljLmNvbT4KCUltcGxlbWVudGVkIFJlZ0ZsdXNoS2V5IGFuZCBOdEZsdXNoS2V5LgoKCSogcHJvZ3JhbXMvcmVnZWRpdC9Fbi5yYywgcHJvZ3JhbXMvcmVnZWRpdC9lZGl0LmMsCgkgIHByb2dyYW1zL3JlZ2VkaXQvZnJhbWV3bmQuYywgcHJvZ3JhbXMvcmVnZWRpdC9tYWluLmgsCgkgIHByb2dyYW1zL3JlZ2VkaXQvcmVzb3VyY2UuaDoKCVppbWxlciBBdHRpbGEgPGhpamFzenVAaGxmc2xpbnV4Lmh1PgoJQWRkZWQgc3VwcG9ydCBmb3IgY3JlYXRpbmcgbmV3IGtleXMuCgoyMDA0LTAxLTAyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy93aW5lZG9zL2ludDEwLmM6IE1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuZGU+CglGaWxsIGluIHRoZSBjb2xvciBNYXNrU2l6ZSBhbmQgRmllbGRQb3NpdGlvbiBmaWVsZHMgaW4gdGhlCglNb2RlSW5mb0Jsb2NrLgoKCSogaW5jbHVkZS93aW5lL2xpYnJhcnkuaCwgbGlicy93aW5lL2xvYWRlci5jLCBsaWJzL3dpbmUvd2luZS5kZWY6CglBZGRlZCB3aW5lX2RsbF9nZXRfb3duZXIgZnVuY3Rpb24gdGhhdCByZXRyaWV2ZXMgdGhlIDMyLWJpdCBkbGwKCWNvbnRhaW5pbmcgYSBnaXZlbiAxNi1iaXQgZGxsIGJ5IHJlYWRpbmcgdGhlIHN5bWxpbmssIHNvIHRoYXQgd2UgZG9uJ3QKCW5lZWQgdG8gZGxvcGVuIGl0LgoKCSogZGxscy9NYWtlZmlsZS5pbiwgZGxscy9tYWtlX2RsbHM6CglNYWtlIHN5bWxpbmtzIGZvciAxNi1iaXQgZmlsZXMgcG9pbnQgdG8gdGhlIDMyLWJpdCBzeW1saW5rIHNvIHRoYXQKCXRoZXkgZG9uJ3QgY29udGFpbiBhIHBhdGguCgoJKiBkbGxzL3VzZXIvd25kMTYuYywgd2luZG93cy9tZGkuYzoKCVN0ZXZlbiBFZHdhcmRzIDxzdGV2ZW5fZWQ0MTUzQHlhaG9vLmNvbT4KCVNwbGl0IHVwIHRoZSBXaW4xNi8zMiBNREkgc3VwcG9ydCBhIGJpdC4KCgkqIGRsbHMvY29tY3RsMzIvcmViYXIuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJT24gYSBSQl9TRVRCQU5ESU5GTyBtZXNzYWdlIG9ubHkgcmVkcmF3IHRoZSByZWJhciBpZiBzb21ldGhpbmcKCWNoYW5nZWQuCgoJKiBkbGxzL3dpbmVkb3MvaW50MTAuYzogTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5kZT4KCVVzZSBhIHN0cnVjdCBhcyBzcGVjaWZpZWQgaW4gdGhlIFZCRSAzLjAgc3RhbmRhcmQgZm9yIHRoZQoJTW9kZUluZm9CbG9jay4gQ29kZSB3aXNlIHRoaXMgaXMgYSBOT1AuCgoJKiBkbGxzL25ldGFwaTMyL25iY21kcXVldWUuYywgZGxscy9uZXRhcGkzMi9uYnQuYywKCSAgZGxscy9uZXRhcGkzMi9uZXRiaW9zLmgsIGluY2x1ZGUvbmIzMC5oOgoJU3RldmVuIEVkd2FyZHMgPHN0ZXZlbl9lZDQxNTNAeWFob28uY29tPgoJRml4IGNvbXBpbGluZyBuZXRhcGkzMiBvbiBNU1ZDIHdpdGggUFNESyBoZWFkZXJzLgoKCSogZGxscy93aW5tbS93aW5lYWxzYS9hdWRpby5jOiBDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglGaXggY29tcGlsYXRpb24gaXNzdWUgd2l0aCBBTFNBIDAuNS4KCgkqIGRsbHMvY2FiaW5ldC9jYWJpbmV0X21haW4uYzogTWlrZSBIZWFybiA8bWlrZUB0aGVvcmV0aWMuY29tPgoJcmVzdWx0MiBzZWVtcyB0byBiZSBvcHRpb25hbCwgbWFraW5nIGl0IDAgYWxsb3dzIElFIHRvIGNvbnRpbnVlLgoKCSogZGxscy9zaGVsbDMyL3N5c3RyYXkuYzogU3RldmVuIEVkd2FyZHMgPHN0ZXZlbl9lZDQxNTNAeWFob28uY29tPgoJVXBkYXRlIHRoZSBub3RlcyBvbiBob3cgV0lORSB1c2VzIHRoZSBTeXN0cmF5IHVuZGVyIEtERS4KCgkqIHRvb2xzL3dyYy9wYXJzZXIueTogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQXZvaWQgYSBjcmFzaCBpZiB0aGUgZGlhbG9nIHN0eWxlIGlzIG1pc3NpbmcuCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmM6IFdpbSBMZXdpcyA8d2ltbEBoaGhoLm9yZz4KCUNsZWFyIHN0cnVjdCBzb2NrYWRkcl9pcHggZGlyZWN0bHkgaW5zdGVhZCBvZiBqdXN0IHRoZSBzaXB4X3plcm8KCWZpZWxkLgoKCSogc2VydmVyL2ZkLmMsIHNlcnZlci9maWxlLmM6IFdpbSBMZXdpcyA8d2ltbEBoaGhoLm9yZz4KCUVPVkVSRkxPVyBkb2VzIG5vdCBleGlzdCBvbiBPcGVuQlNELgoKCSogZGxscy93aW5lZG9zL2ludDEwLmM6IE1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuZGU+CglTZXQgdGhlICJieXRlcyBwZXIgc2NhbiBsaW5lIiBmaWVsZCB3aGVuIGdlbmVyYXRpbmcgdGhlIG1vZGUgaW5mbwoJYmxvY2suCgoJKiBkbGxzL2NyeXB0MzIvY3J5cHQzMi5zcGVjLCBkbGxzL2NyeXB0MzIvbWFpbi5jOgoJUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCUFkZGVkIHN0dWIgZm9yIENlcnRGcmVlQ2VydGlmaWNhdGVDb250ZXh0LgoKCSogZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfSXQucmM6CglJdmFuIExlbyBNdXJyYXktU21pdGggPHB1b3RpQGlud2luZC5pdD4KCUNvbXBsZXRlZCBJdGFsaWFuIGxhbmd1YWdlIHN1cHBvcnQuCgoJKiBkbGxzL25ldGFwaTMyL25idC5jOiBKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglGaXggY29uZmxpY3RpbmcgcmVnaXN0cnkgdmFsdWUgbmFtZXMsIGFuZCB0cnkgYm90aCBXaW45eCBhbmQgV2luTlQKCWxvY2F0aW9ucyBmb3IgTmV0QlQgcmVnaXN0cnkgdmFsdWVzLgoKCSogZGxscy9rZXJuZWwvZGV2aWNlLmM6IEp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCVByb3Blcmx5IEwyLWVuY29kZSB0aGUgTmV0QklPUyBzY29wZSBJRCBpbiBEZXZpY2VJb19WTkIsIHNvCglpcGNvbmZpZy5leGUgYW5kIHdpbmlwY2ZnLmV4ZSBkaXNwbGF5IGl0LgoKCSogZGxscy9pcGhscGFwaS9pcGhscGFwaV9tYWluLmM6IEp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCUFkZCB0cmFjaW5nLCBhZGQgV0lOUyBjb25maWd1cmF0aW9uIHRvIEdldEFkYXB0ZXJzSW5mbywgY29ycmVjdAoJU2NvcGVJRCByZWFkaW5nIGluIEdldEZpeGVkSW5mby4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVdoZW4gY2hlY2tpbmcgZm9yIGdldGhvc3RieW5hbWVfcl82IG5vdCB0cnkgdG8gY29tcGlsZSBidXQgdHJ5IHRvCglsaW5rLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGluY2x1ZGUvY29uZmlnLmguaW46CglVcGRhdGVkIGNvbmZpZ3VyZSB3aXRoIGF1dG9jb25mIDIuNTguIFNldCB0aGUgYnVnIHJlcG9ydCBhZGRyZXNzLgoKCSogZGxscy9vbGVhdXQzMi90ZXN0cy92YXJ0ZXN0LmMsIGRsbHMvb2xlYXV0MzIvdGVzdHMvdmFydHlwZS5jOgoJQ29tbWVudGVkIG91dCB0ZXN0cyB0aGF0IGFzc3VtZSB0aGF0IHRoZSBjdXJyZW50IHllYXIgaXMgMjAwMy4KCgkqIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX0NhLnJjLCBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9EZS5yYywKCSAgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfRW4ucmMsIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX0ZpLnJjLAoJICBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9Gci5yYywgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfTmwucmMsCgkgIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX1B0LnJjLCB3aW5kb3dzL25vbmNsaWVudC5jOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQGFsdW0ud3BpLmVkdT4KCU1ha2UgdGhlIGRlYnVnIG1hcmsgcHJpbnRpbmcgdW5jb25kaXRpb25hbCBpbnN0ZWFkIG9mIGNvbmRpdGlvbmFsIHVwb24KCXRoZSAgU0hFTEwgZGVidWcgY2hhbm5lbC4gIE1ha2UgbWFyayB0ZXh0IG9idmlvdXMgYnkgY2hhbmdpbmcgdGhlCglvdXRwdXQgdGV4dCB0byAnRGVidWcgbWFyayByZXF1ZXN0ZWQgYnkgdXNlcicgYW5kIGFkZGluZyAnRGVidWcgbWFyaycKCXRvIHRoZSBtZW51IHJlc291cmNlIHRleHQuCgoJKiBwcm9ncmFtcy93aW5lZmlsZS9JdC5yYywgcHJvZ3JhbXMvd2luZWZpbGUvcnNyYy5yYzoKCUl2YW4gTGVvIE11cnJheS1TbWl0aCA8cHVvdGlAaW53aW5kLml0PgoJQWRkZWQgSXRhbGlhbiByZXNvdXJjZXMuCgoJKiBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYywgZGxscy9jb21tZGxnL3ByaW50ZGxnLmgsCgkgIGRsbHMvY29tbWRsZy9wcmludGRsZzE2LmMsIGRsbHMvd2luc3Bvb2wvaW5mby5jOgoJUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCVJlbW92ZSBQUklOVERMR19HZXREZWZhdWx0UHJpbnRlck5hbWU7IHVzZSBXaW4zMiBHZXREZWZhdWx0UHJpbnRlckEvVwoJaW5zdGVhZC4KCgkqIGRsbHMvd2lubW0vbWNpYXZpL21tb3V0cHV0LmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlIGEgc3RyYXkgTGVhdmVDcml0aWNhbFNlY3Rpb24oKS4KCgkqIGRsbHMvbXN2aWRlby9tY2l3bmQuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVRyYWNrYmFyIHJhbmdlIHNob3VsZCBiZSBmaXhlZCBvbmx5IGluIHRoZSBjYXNlIG9mIHN1Y2Nlc3NmdWwKCW1jaVNlbmRTdHJpbmdXLiBJdCdzIGJldHRlciB0byBpbml0aWFsaXplIGR3Q2FsbGJhY2sgcGFyYW1ldGVyIGlmCglNQ0lfTk9USUZZIGlzIHNwZWNpZmllZC4KCgkqIGRsbHMvY29tbWRsZy9jZGxnX0NuLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19EZS5yYywKCSAgZGxscy9jb21tZGxnL2NkbGdfRW4ucmMsIGRsbHMvY29tbWRsZy9jZGxnX0ZyLnJjLAoJICBkbGxzL2NvbW1kbGcvY2RsZ19QdC5yYywgZGxscy9jb21tZGxnL2NkbGdfUnUucmMsCgkgIGRsbHMvY29tbWRsZy9jZGxnX1NpLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19Tay5yYywKCSAgZGxscy9jb21tZGxnL2NkbGdfU3YucmMsIGRsbHMvY29tbWRsZy9jZGxnX1poLnJjLAoJICBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZ2Jyb3dzZXIuaDoKCVBoaWwgS3J5bG92IDxwaGlsQG5ld3N0YXIucmluZXQucnU+CglJbXBsZW1lbnRlZCBPRk5fT1ZFUldSSVRFUFJPTVBUIGFuZCBPRk5fRVhURU5TSU9ORElGRkVSRU5UIGZsYWdzLgoJQ2hhbmdlZCBJRExfT1ZFUldSSVRFRklMRSBzdHJpbmcgcmVzb3VyY2UgSUQgdG8gSURTX09WRVJXUklURUZJTEUuCglVc2UgdGhlIGV4dGVuZGVkIFVJIGZvciB0aGUgIkxvb2sgSW4iIGNvbWJvLgoJU2VsZWN0IHRoZSB0ZXh0IGluIHRoZSAiRmlsZSBuYW1lIiBmaWVsZCBhZnRlciBmaWxsaW5nIGl0LgoKMjAwNC0wMS0wMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvd2lubW0vbWNpLmMsIGRsbHMvd2lubW0vbWNpYXZpL2luZm8uYywKCSAgZGxscy93aW5tbS9tY2lhdmkvbWNpYXZpLmMsIGRsbHMvd2lubW0vbWNpYXZpL21tb3V0cHV0LmMsCgkgIGRsbHMvd2lubW0vbWNpYXZpL3ByaXZhdGVfbWNpYXZpLmgsIGRsbHMvd2lubW0vbWNpYXZpL3duZC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCU11Y2ggaW1wcm92ZWQgbWNpYXZpIGRyaXZlci4gRml4ZWQgc3luY2hyb25pemF0aW9uLCBSSUZGIGZpbGUgd2l0aAoJbWFueSBzdHJlYW1zIHBhcnNpbmcsIGFkZGVkIHN1cHBvcnQgZm9yIHNvbWUgTUNJX1BVVCBhbmQgTUNJX1dIRVJFCgljYXNlcy4KCgkqIGRsbHMvbXN2aWRlby9tY2l3bmQuYywgZGxscy9tc3ZpZGVvL21zdmZ3MzIuc3BlYywgaW5jbHVkZS92ZncuaDoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGQgc3VwcG9ydCBmb3IgbWFueSBNQ0lXTkRNXyBtZXNzYWdlcyBhbmQgc29tZSBNQ0lfIGNvbW1hbmRzIGluIHRoZQoJTUNJV25kQ2xhc3MgaW1wbGVtZW50YXRpb24uCglNQ0lXbmRSZWdpc3RlckNsYXNzKCkgdGFrZXMgbm8gcGFyYW1ldGVycyBhY2NvcmRpbmcgdG8gUGxhdGZvcm0gU0RLCgloZWFkZXJzLgoKCSogZGxscy93aW5tbS9kcml2ZXIuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVVzZSBjb3JyZWN0IHBvaW50ZXIgdG8gYW4gaW50ZXJuYWwgZHJpdmVyIGRlc2NyaXB0aW9uLgoKCSogZGxscy93aW5tbS93aW5tbS5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkIE1DSV9TWVNJTkZPIGNvbW1hbmQgVyB0byBBIG1hcHBpbmcuCgoyMDAzLTEyLTMxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy91c2VyL3Rlc3RzL3dpbi5jLCBkbGxzL3gxMWRydi93aW5kb3cuYywgaW5jbHVkZS91c2VyLmgsCgkgIGluY2x1ZGUvd2luLmgsIHdpbmRvd3MvZGVmd25kLmMsIHdpbmRvd3Mvbm9uY2xpZW50LmMsIHdpbmRvd3Mvd2luLmM6CglTdG9yZSB3aW5kb3cgaWNvbnMgaW4gdGhlIHdpbmRvdyBzdHJ1Y3R1cmUgc28gdGhhdCBXTV9TRVRJQ09OIGNhbiBkbwoJdGhlIHJpZ2h0IHRoaW5nIChiYXNlZCBvbiBhIHBhdGNoIGJ5IEFyaWMgU3Rld2FydCkuCgoJKiBkbGxzL3dpbm1tL2pveXN0aWNrLmMsIGRsbHMvd2lubW0vbG9sdmxkcnYuYywgZGxscy93aW5tbS9tbXN5c3RlbS5jLAoJICBkbGxzL3dpbm1tL3RpbWUuYywgZGxscy93aW5tbS93aW5lbW0uaCwgZGxscy93aW5tbS93aW5tbS5jLAoJICBpbmNsdWRlL2RpZ2l0YWx2LmgsIGluY2x1ZGUvbW1zeXN0ZW0uaDoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglGaXggbWFueSBmdW5jdGlvbiBwcm90b3R5cGVzIGFuZCBkYXRhIHR5cGVzIGFjY29yZGluZyB0byBQbGF0Zm9ybSBTREsKCWRlZmluaXRpb25zLgoKCSogZGxscy9tc3ZpZGVvL21jaXduZC5jLCBkbGxzL3dpbm1tL21jaS5jLCBkbGxzL3dpbm1tL21jaWF2aS9pbmZvLmMsCgkgIGRsbHMvd2lubW0vbWNpYXZpL21jaWF2aS5jLCBkbGxzL3dpbm1tL21jaWF2aS9tbW91dHB1dC5jLAoJICBkbGxzL3dpbm1tL21jaWF2aS9wcml2YXRlX21jaWF2aS5oLCBkbGxzL3dpbm1tL21jaWF2aS93bmQuYywKCSAgZGxscy93aW5tbS93aW5tbS5jLCBpbmNsdWRlL21tc3lzdGVtLmg6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkIFVuaWNvZGUtPkFOU0kgTUNJIG1lc3NhZ2UgbWFwcGluZywgaW1wbGVtZW50IG1jaVNlbmRDb21tYW5kVywgZml4CglhIGJ1ZyB3aXRoIGEgd2luZG93IGNyZWF0aW9uIGJlbG9uZ2luZyB0byBhbm90aGVyIGhJbnN0YW5jZSwgYWRkCglzdXBwb3J0IGZvciBNQ0lfV0lORE9XIGNvbW1hbmQgaW4gbWNpYXZpLmRydiwgYWRkIHN1cHBvcnQgZm9yIE1DSV9QTEFZCglhbmQgTUNJX1NUT1AgaW4gdGhlIE1DSVduZENsYXNzIGltcGxlbWVudGF0aW9uLgoKCSogZGxscy9vbGVhdXQzMi9zYWZlYXJyYXkuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCBzaXplIGNhbGN1bGF0aW9uIG9uIHJlZGltIGlmIG9sZCBzaXplIHdhcyAwLgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6IEdlcmFsZCBQZmVpZmVyIDxnZXJhbGRAcGZlaWZlci5jb20+CglJbXByb3ZlIGVycm9yIG1lc3NhZ2VzIGluIE9TU19XYXZlT3V0SW5pdCgpIGFuZCBPU1NfV2F2ZUluSW5pdCgpIGFuZAoJd2FybiBpbnN0ZWFkIG9mIGFib3J0aW5nIGluIGNhc2Ugb2YgcHJvYmxlbXMgcmVhZGluZyBtaXhlciBpbmZvLgoKCSogZGxscy9jYWJpbmV0Ly5jdnNpZ25vcmUsIGRsbHMvY2FiaW5ldC9NYWtlZmlsZS5pbiwKCSAgZGxscy9jYWJpbmV0L2NhYmluZXQucmM6CglTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCUFkZGVkIGZpbGUgdmVyc2lvbiByZXNvdXJjZS4KCgkqIGRsbHMvdXNlci9tc2cxNi5jOiBSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglJc2RpYWxvZ01lc3NhZ2UxNiBtdXN0IG5vdCBwcm9jZXNzIG1lc3NhZ2VzIHRoYXQgYXJlIG5vdCBpbnRlbmRlZCBmb3IKCXRoZSBkaWFsb2cgYm94LgoKCSogZG9jdW1lbnRhdGlvbi9zYW1wbGVzL2NvbmZpZzogTWlrZSBIZWFybiA8bWlrZUB0aGVvcmV0aWMuY29tPgoJUmVtb3ZlIERDT00gY29uZmlnIGZpbGUgZW50cmllcywgYXMgdGhleSBoYXZlIG5vIGVmZmVjdC4KCgkqIGRsbHMva2VybmVsL21vZHVsZS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVJlbW92ZWQgdG9vIHN0cmljdCBoZWFkZXIgY2hlY2sgdG8gZW5hYmxlIGV4ZWN1dGlvbiBvZiBoYW5kY29kZWQgUEUKCWV4ZXMuCgoJKiBkbGxzL250ZGxsL2xvYWRlci5jOiBNaWtlIEhlYXJuIDxtaWtlQHRoZW9yZXRpYy5jb20+CglQcmludCBleGUgbmFtZSB3aGVuIGluaXRpYWxpemF0aW9uIGZhaWxzLgoKCSogREVWRUxPUEVSUy1ISU5UUzogVG9tIFdpY2tsaW5lIDx0d2lja2xpbmVAc2t5YmVzdC5jb20+CglBZGQgbmV3ZGV2LCB1cGRhdGVkIERNdXNpYyBzZWN0aW9uLCBzbWFsbCBmaXggdG8gZHBuaHBhc3QuCgoJKiBkbGxzL3dpbmluZXQvdXJsY2FjaGUuYzogR2VyYWxkIFBmZWlmZXIgPGdlcmFsZEBwZmVpZmVyLmNvbT4KCVJlbW92ZSBVUkxDYWNoZV9GaW5kRW50cnkoKSB3aGljaCBpcyBub3QgdXNlZCBhbnkgbG9uZ2VyLgoKMjAwMy0xMi0zMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL25ld2Rldi8uY3ZzaWdub3JlLAoJICBkbGxzL25ld2Rldi9NYWtlZmlsZS5pbiwgZGxscy9uZXdkZXYvbWFpbi5jLCBkbGxzL25ld2Rldi9uZXdkZXYuc3BlYzoKCVVscmljaCBDemVrYWxsYSA8dWxyaWNoLmN6ZWthbGxhQHV0b3JvbnRvLmNhPgoJQWRkIHN0dWJiZWQgdmVyc2lvbiBvZiBuZXdkZXYuZGxsLgoKCSogZGxscy9jb21tZGxnLy5jdnNpZ25vcmUsIGRsbHMvY29tbWRsZy9NYWtlZmlsZS5pbiwKCSAgZGxscy9jb21tZGxnL2NkbGcuaCwgZGxscy9jb21tZGxnL2NkbGdfeHgucmMsIGRsbHMvY29tbWRsZy9mb250ZGxnLmMsCgkgIGRsbHMvY29tbWRsZy9mb250ZGxnMTYuYywgaW5jbHVkZS93aW5nZGkuaDoKCVJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCS0gQWRkIGEgYml0bWFwIHJlc291cmNlIHdpdGggdGhlIGZvbnQgaWNvbnM6IFRydWVUeXBlLCBwcmludGVyLAoJICBPcGVuVHlwZSBhbmQgVHlwZSAxLiBNb2RpZnkgdGhlIGNvZGUgc28gdGhhdCB0aGV5IHdpbGwgYmUgdXNlZCBpZiBvcgoJICB3aGVuIHRoZSBuZWVkZWQgYml0cyBhcmUgcGFzc2VkIHRvIHRoZSBGb250RW51bVByb2MuCgktIFVzZSBFbnVtRm9udEZhbWlsaWVzRXggaW5zdGVhZCBvZiBFbnVtRm9udEZhbWlsaWVzLgoJLSBGaXggdGhlIGZpeG1lIGluIHRoZSBXTV9NRUFTVVJFSVRFTSBtZXNzYWdlIGhhbmRsZXIuCgoJKiBkbGxzL2NhYmluZXQvY2FiZXh0cmFjdC5jLCBkbGxzL2NhYmluZXQvY2FiaW5ldC5oLAoJICBkbGxzL2NhYmluZXQvY2FiaW5ldF9tYWluLmM6CglTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCU1ha2UgdXNlIG9mL2hhbmRsZSB0aGUgZmlyc3QgcGFyYW1ldGVyIG9mIHRoZSBmdW5jdGlvbiBFeHRyYWN0LgoKCSogZGxscy91c2VyL3Rlc3RzL3dpbi5jLCB3aW5kb3dzL21kaS5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBNREkgY2hpbGQgY3JlYXRpb24gdGVzdHMuCgoJKiBsb2FkZXIva3RocmVhZC5jOiBEYXZpZCBCZWNrIDxkYmVja0BiZWNrZ3JvdW5kLmh1PgoJQWRkZWQgUkZUSFJFQUQgZmxhZyBpbiByZm9yayBjYWxsLgoKCSogZGxscy9kZXZlbnVtL2NyZWF0ZWRldmVudW0uYywgZGxscy9kZXZlbnVtL2RldmVudW1fbWFpbi5jLAoJICBkbGxzL2RldmVudW0vbWVkaWFjYXRlbnVtLmMsIGRsbHMvZGV2ZW51bS9wYXJzZWRpc3BsYXluYW1lLmMsCgkgIGRsbHMvcXVhcnR6L2ZpbHRlcm1hcHBlci5jOgoJUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCS0gRml4ZWQgYnVmZmVyIG92ZXJmbG93IGluIElGaWx0ZXJNYXBwZXIyOjpSZWdpc3RlckZpbHRlci4KCS0gRml4ZWQgYnVmZmVyIG92ZXJmbG93IGluIERFVkVOVU1fSVByb3BlcnR5QmFnX1JlYWQuCgktIEZpeGVkIE5VTEwgcG9pbnRlciBkZS1yZWYgaW4gRGxsUmVnaXN0ZXJTZXJ2ZXIgd2hlbiBJRmlsdGVyTWFwcGVyMgoJICBpcyBub3QgcmVnaXN0ZXJlZC4KCS0gQWxsb3dlZCByZXR1cm5pbmcgdGhlIG1vbmlrZXIgaW4gSUZpbHRlck1hcHBlcjI6OlJlZ2lzdGVyRmlsdGVyLgoJLSBFbnVtZXJhdGUgc3BlY2lhbCBjYXRlZ29yaWVzIHdpdGhvdXQgY2F1c2luZyBpbmZpbml0ZSBsb29wLgoKCSogZGxscy9kcGxheXgvZHBsYXkuYzogU2FtaSBBYXJpbyA8c2FtaS5hYXJpb0BzdXJmZXUuZmk+CglGaXggc29tZSByZXR1cm4gdmFsdWVzIG9mIGRwbGF5eCBBUEkgY2FsbHMuCgoJKiBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jOgoJRml4ZWQgUnRsVW53aW5kIHNpZ25hdHVyZSAocmVwb3J0ZWQgYnkgUGllcnJlIGQnSGVyYmVtb250KS4KCgkqIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9zaGZsZHIuaCwKCSAgZGxscy9zaGVsbDMyL3NoZmxkcl9kZXNrdG9wLmMsIGRsbHMvc2hlbGwzMi9zaGZsZHJfbXljb21wLmM6CglNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJLSBjb3JyZWN0IHJldHVybiB2YWx1ZSBvZiBTSEdldFBhdGhGcm9tSURMaXN0W0FXXSgpIGZvciB2aXJ0dWFsCgkgIGZvbGRlcnMgbGlrZSAiTXkgQ29tcHV0ZXIiCgktIGNvcnJlY3QgcGF0aCBwYXJzaW5nIGluIElTRl9EZXNrdG9wX2ZuUGFyc2VEaXNwbGF5TmFtZSgpCgktIGhhbmRsZSBDTFNJRCBwYXRocyBpbiBJU0ZfTXlDb21wdXRlcl9mblBhcnNlRGlzcGxheU5hbWUoKQoJLSByZXR1cm4gQ0xTSUQgcGF0aCBpbiBJU0ZfTXlDb21wdXRlcl9mbkdldERpc3BsYXlOYW1lT2YoKQoKCSogZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jOiBKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglSZWFkIHRoZSBQb2xpY3l7QWNjb3VudCxQcmltYXJ5fURvbWFpbkluZm9ybWF0aW9uIGZyb20gdGhlIHJlZ2lzdHJ5LAoJcmF0aGVyIHRoYW4gaGFyZGNvZGluZyBpdCB0byAiRE9NQUlOIi4KCgkqIGRsbHMvc2hlbGwzMi9zaGxleGVjLmM6IEdlIHZhbiBHZWxkb3JwIDxnZUBnc2Uubmw+CglFbmNsb3NlIGFwcGxpY2F0aW9uIG5hbWUgaW4gZG91YmxlIHF1b3RhdGlvbiBtYXJrcywgYXMgaXQgbWF5IGNvbnRhaW4KCXNwYWNlcy4KCgkqIGRsbHMvd2luaW5ldC91cmxjYWNoZS5jOiBNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmRlPgoJRml4ZWQgbWVtIGxlYWsgb24gZXJyb3IgcGF0aC4KCgkqIGRsbHMvY29tbWRsZy9jZGxnX0phLnJjLCBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9KYS5yYzoKCVZpayBLdW1hciA8dmlrQHpvbmU4MS5jb20+CglGaXhlZCBNUyBVSSBHb3RoaWMgZm9udCBuYW1lcy4KCgkqIGRsbHMvbXN2aWRlby9tc3JsZTMyL21zcmxlX05sLnJjLCBkbGxzL21zdmlkZW8vbXNybGUzMi9yc3JjLnJjLAoJICBkbGxzL29sZWRsZy9vbGVkbGdfTmwucmMsIGRsbHMvb2xlZGxnL3JzcmMucmM6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCVRyYW5zbGF0ZSBtc3JsZTMyIGFuZCBvbGVkbGcgcmVzb3VyY2VzLgoKCSogcHJvZ3JhbXMvd2NtZC9idWlsdGlucy5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglTb3J0IHRoZSBvdXRwdXQgb2Ygd2NtZCdzIHNldCBjb21tYW5kLgoKCSogZGxscy9udGRsbC9udC5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglSZXR1cm4gYW4gU0lEIHdoZW4gR2V0VG9rZW5JbmZvcm1hdGlvbiBpcyBjYWxsZWQgd2l0aCBjbGFzcwoJVG9rZW5Pd25lci4KCgkqIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jOiBTeWx2YWluIFBldHJlb2xsZSA8c3BldHJlb2xsZUB5YWhvby5mcj4KCUFkZGVkIHN0dWJzIGZvciBvcHRpb25zIENPTk5FQ1RfVElNRU9VVCBhbmQgREFUQV9SRUNFSVZFX1RJTUVPVVQuCgoJKiBkbGxzL2NvbW1kbGcvZm9udGRsZy5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCURXTF9VU0VSIG1pZ2h0IGJlIHVzZWQgb3RoZXJ3aXNlLCBzbyB1c2UgYW4gaW50ZXJuYWwgd2luZG93IHByb3BlcnR5Cglmb3IgZGF0YSBzdG9yYWdlLgoKCSogZGxscy94MTFkcnYva2V5Ym9hcmQuYzogWmltbGVyIEF0dGlsYSA8aGlqYXN6dUBobGZzbGludXguaHU+CglGaXhlZCBIdW5nYXJpYW4ga2V5Ym9hcmQgbGF5b3V0LgoKCSogZGxscy94MTFkcnYvY2xpcGJvYXJkLmM6IFNhbWkgQWFyaW8gPHNhbWkuYWFyaW9Ac3VyZmV1LmZpPgoJRml4ZWQgYSB0eXBvLgoKCSogZGxscy9tc2h0bWwvbXNodG1sLnNwZWM6IERhdmlkIE1pbGxlciA8Y29tcHNvbEBwdGQubmV0PgoJUmVtb3ZlZCBleHBsaWNpdCBvcmRpbmFscy4KCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYzogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUFsc28gcmVtb3ZlIGluIHRoZSBEM0QgY29kZSB0aGUgcGVkYW50aWMgY2hlY2sgb24gdGhlIEdldFByb2NBZGRyZXNzCglleHRlbnNpb24uCgoJKiBkbGxzL3F1YXJ0ei9maWx0ZXJncmFwaC5jLCBkbGxzL3F1YXJ0ei9yZWdzdnIuYzoKCVJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CgktIEZpeCBJR3JhcGhCdWlsZGVyOjpDb25uZWN0RGlyZWN0LgoJLSBSZWdpc3RlciBJRmlsdGVyTWFwcGVyIGFuZCBJRmlsdGVyTWFwcGVyMiBpbiBEbGxSZWdpc3RlclNlcnZlci4KCgkqIHByb2dyYW1zL3Byb2dtYW4vSXQucmMsIHByb2dyYW1zL3VuaW5zdGFsbGVyL3JzcmMucmMsCgkgIHByb2dyYW1zL3ZpZXcvSXQucmM6CglJdmFuIExlbyBNdXJyYXktU21pdGggPHB1b3RpQGlud2luZC5pdD4KCVVwZGF0ZWQgSXRhbGlhbiB0cmFuc2xhdGlvbnMuCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZzE2LmM6IFJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCVdoZW4gYSBkaXJlY3RvcnkgaXMgZW50ZXJlZCBpbiB0aGUgMTYgYml0cyBmaWxlIGRpYWxvZywgaXQgc2hvdWxkIG5vdAoJYmUgcmV0dXJuZWQgdGhlIHVzZXIuIEluc3RlYWQgdGhlIGRpcmVjdG9yeSBtdXN0IGJlIGNoYW5nZWQgYW5kIHRoZQoJZGlhbG9nIHdvcmsgZnJvbSB0aGVyZS4KCgkqIGRsbHMvY29tY3RsMzIvdHJhY2tiYXIuYzogRHVhbmUgQ2xhcmsgPGRjbGFya0Bha2FtYWlsLmNvbT4KCVJlaW5pdGlhbGl6ZSB0aHVtYiB3aGVuIHRyYWNrYmFyIHNpemUgaXMgY2hhbmdlZC4KCgkqIHdpbmRvd3Mvd2luLmM6IE1pa2UgSGVhcm4gPG1pa2VAdGhlb3JldGljLmNvbT4KCVByZXZlbnQgZmFsc2UgbWF0Y2hlcyBpbiBXSU5fRmluZFdpbmRvdy4KCgkqIHByb2dyYW1zL3dpbmV0ZXN0L21ha2V0ZXN0OiBGZXJlbmMgV2FnbmVyIDx3ZmVyaUBhZmF2YW50LmVsdGUuaHU+CglTb2xhcmlzIHNoIHBvcnRhYmlsaXR5IGZpeC4KCgkqIGRsbHMvbXN2Y3J0L3Rlc3RzL2ZpbGUuYzogRmVyZW5jIFdhZ25lciA8d2ZlcmlAYWZhdmFudC5lbHRlLmh1PgoJRml4IHVuZGVsZXRlZCB0ZW1wb3JhcnkgZmlsZS4KCUNvcnJlY3QgZXJyb3IgbWVzc2FnZXMgYW5kIGNvbW1lbnRzLCBicmVhayBsb25nIGxpbmVzLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWM6IE1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuZGU+CglTZWFyY2ggZm9yIG1pbmd3LSRwcm9nIHRvby4KCgkqIGRsbHMvb2xlYXV0MzIvc2FmZWFycmF5LmMsIGRsbHMvb2xlYXV0MzIvdGVzdHMvc2FmZWFycmF5LmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCURpbWVuc2lvbnMgd2l0aCBjRWxlbWVudHM9MCBhcmUgdmFsaWQgYW5kIG5lZWRlZCBieSBJbnN0YWxsU2hpZWxkLgoJU2FmZUFycmF5R2V0RWxlbWVudDogZml4ZWQgQlNUUiBhbmQgTFBVTktOT1dOIGhhbmRsaW5nLgoJQWRkZWQgdGVzdGNhc2VzIGZvciBhYm92ZSBjYXNlcy4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIG1vcmUgYXJndW1lbnQgbnVtYmVycyBmb3IgX2ludm9rZSgpLgoKMjAwMy0xMi0xNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvb2xlYXV0MzIvdGVzdHMvc2FmZWFycmF5LmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJSTgvVUk4IGFyZSBhY2NlcHRlZCBpbiBhcnJheXMgaW4gcmVjZW50IG5hdGl2ZSBkbGxzLgoJVGVzdCBVRFRzLCBhcnJheSBjb2VyY2lvbiBhbmQgbmV3IGZ1bmN0aW9ucy4KCgkqIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJVXNlIHRoZSBTYWZlQXJyYXkgY29udmVyc2lvbiBmdW5jdGlvbnMgd2hlbiBjb2VyY2luZyBhcnJheXMuCglTaW1wbGlmeSBWYXJpYW50Q2hhbmdlVHlwZUV4LgoJUmVwbGFjZSBjYWxscyB0byBkdW1wX1ZhcmlhbnQoKSB3aXRoIFRSQUNFJ3MuCgoJKiBkbGxzL29sZWF1dDMyL29sZWF1dDMyLnNwZWMsIGRsbHMvb2xlYXV0MzIvc2FmZWFycmF5LmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJUmV3cml0ZTogU3VwcG9ydCBJOC9VSTgsUkVDT1JELgoJU3RvcmUgYXJyYXkgYm91bmRzIGluIHRoZSBzYW1lIG9yZGVyIGFzIG5hdGl2ZS4KCUFkZCBDcmVhdGVFeCwgQ3JlYXRlVmVjdG9yRXgsIFZlY3RvckZyb21Cc3RyLCBCc3RyRnJvbVZlY3Rvci4KCgkqIHRvb2xzL3dpbmVtYWtlcjogS2lyaWxsIFNtZWxrb3YgPGtpcnJAbGFuZGF1LnBoeXMuc3BidS5ydT4KCUFkZGVkIG1mYy9JbmNsdWRlIGFuZCBtZmMvc3JjIGFzIHBvc3NpYmxlIHBsYWNlcyBmb3IgaW5jbHVkZXMgYW5kIHRoZQoJbGlicmFyeS4KCgkqIGRsbHMvbXN2Y3J0L3NjYW5mLmgsIGRsbHMvbXN2Y3J0L3Rlc3RzL3NjYW5mLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglQYXRjaCBhbmQgdGVzdCBmb3Igc2NhbmYgJWkuCgoJKiBkbGxzL250ZGxsL3Rlc3RzL2Vudi5jLCBkbGxzL250ZGxsL3Rlc3RzL2xhcmdlX2ludC5jLAoJICBkbGxzL250ZGxsL3Rlc3RzL3BhdGguYywgZGxscy9udGRsbC90ZXN0cy9ydGwuYywKCSAgZGxscy9udGRsbC90ZXN0cy9zdHJpbmcuYzoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJQ2hlY2sgaWYgYSBmdW5jdGlvbiBleGlzdHMgYmVmb3JlIHRlc3RpbmcgaXQuCgoJKiBkbGxzL21zdmlkZW8vTWFrZWZpbGUuaW4sIGRsbHMvbXN2aWRlby9tY2l3bmQuYywKCSAgZGxscy9tc3ZpZGVvL21zdmZ3MzIuc3BlYywgZGxscy9tc3ZpZGVvL21zdmlkZW9fbWFpbi5jLAoJICBpbmNsdWRlL3Zmdy5oOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCBzdXBwb3J0IGZvciBtYW55IE1DSVduZENsYXNzIE1DSV8gYW5kIE1DSVdORE1fIG1lc3NhZ2VzLgoJQ29udmVydCBNQ0lXbmRDbGFzcyBpbXBsZW1lbnRhdGlvbiB0byB1bmljb2RlLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvZmlsZS5jLCBmaWxlcy9maWxlLmM6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCU1vdmVGaWxlIHJldHVybnMgRVJST1JfQUxSRUFEWV9FWElTVFMsIG5vdCBFUlJPUl9GSUxFX0VYSVNUUy4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzIuc3BlYywgZGxscy9vbGVhdXQzMi92YXJpYW50LmMsCgkgIGRsbHMvb2xlYXV0MzIvdGVzdHMvdmFydGVzdC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglJbXBsZW1lbnRlZCBWYXJJbnQsIFZhclBvdy4KCUFkZGVkIFI0IChmbG9hdCkgc3VwcG9ydCB0byBWYXJBZGQuCglBZGRlZCBEQVRFIHN1cHBvcnQgdG8gVmFyU3ViLgoKCSogZG9jdW1lbnRhdGlvbi9kZWJ1Z2dlci5zZ21sLCBwcm9ncmFtcy93aW5lZGJnL2JyZWFrLmMsCgkgIHByb2dyYW1zL3dpbmVkYmcvZGJfZGlzYXNtLmMsIHByb2dyYW1zL3dpbmVkYmcvZGJnLnksCgkgIHByb2dyYW1zL3dpbmVkYmcvZGVidWcubCwgcHJvZ3JhbXMvd2luZWRiZy9kZWJ1Z2dlci5oLAoJICBwcm9ncmFtcy93aW5lZGJnL2Rpc3BsYXkuYywgcHJvZ3JhbXMvd2luZWRiZy9leHByLmMsCgkgIHByb2dyYW1zL3dpbmVkYmcvZ2RicHJveHkuYywgcHJvZ3JhbXMvd2luZWRiZy9oYXNoLmMsCgkgIHByb2dyYW1zL3dpbmVkYmcvaW5mby5jLCBwcm9ncmFtcy93aW5lZGJnL2ludHZhci5oLAoJICBwcm9ncmFtcy93aW5lZGJnL21lbW9yeS5jLCBwcm9ncmFtcy93aW5lZGJnL21vZHVsZS5jLAoJICBwcm9ncmFtcy93aW5lZGJnL21zYy5jLCBwcm9ncmFtcy93aW5lZGJnL3JlZ2lzdGVycy5jLAoJICBwcm9ncmFtcy93aW5lZGJnL3NvdXJjZS5jLCBwcm9ncmFtcy93aW5lZGJnL3N0YWJzLmMsCgkgIHByb2dyYW1zL3dpbmVkYmcvc3RhY2suYywgcHJvZ3JhbXMvd2luZWRiZy90eXBlcy5jLAoJICBwcm9ncmFtcy93aW5lZGJnL3dpbmVkYmcuYzoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJLSBnZXQgcmlkIG9mIHdpbmVkYmcgaW50ZXJuYWwgY2hhbm5lbHMgZm9yIG91dHB1dAoJLSBtb3ZlIGFsbCBzdGFuZGFyZCAob2xkIE1FU0cgY2hhbm5lbCkgb3V0cHV0IHRvIHN0ZG91dAoJLSBtb3ZlIGFsbCBvdGhlciBvdXRwdXRzIChUUkFDRSwgV0FSTi4uLikgdG8gYSBuZXcgd2luZSBkZWJ1Z2dpbmcKCSAgY2hhbm5lbCAod2luZWRiZykKCS0gcmVwbGFjZWQgcXVpdGUgYSBmZXcgI2lmZGVmOmVkIG91dCBvdXRwdXQgdG8gbmV3IGNoYW5uZWxzIChtYWlubHkgaW4KCSAgc3ltYm9sIG1hbmFnZW1lbnQgYXJlYS4uLikKCS0gYWRkZWQgYSBuZXcgbWFpbnRlbmFuY2UgY29tbWFuZHMgdG8gZWFzZSB1cCBkZWJ1Z2dpbmcKCS0gdXBkYXRlZCBkb2N1bWVudGF0aW9uIGFjY29yZGluZ2x5CgoJKiBkbGxzL3dpbm1tL3dpbm1tX0VuLnJjLCBkbGxzL3dpbm1tL3dpbm1tX0VzLnJjLAoJICBkbGxzL3dpbm1tL3dpbm1tX0ZyLnJjLCBkbGxzL3dpbm1tL3dpbm1tX0l0LnJjLAoJICBkbGxzL3dpbm1tL3dpbm1tX1B0LnJjLCBkbGxzL3dpbm1tL3dpbm1tX1J1LnJjLAoJICBkbGxzL3dpbm1tL3dpbm1tX1NrLnJjOgoJU3RldmVuIEVkd2FyZHMgPHN0ZXZlbl9lZDQxNTNAeWFob28uY29tPgoJUG9ydGluZyBmaXggZm9yIHdpbm1tIHJlc291cmNlcyAocGF0Y2ggYnkgRmlsaXAgTmF2YXJhKS4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL2hlYXAuYzogSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglbR2xvYmFsfExvY2FsXVJlQWxsb2MgZG9uJ3QgZmFpbCB3aXRoIHNpemUgMC4KCUZpeGVkIHR5cG9zLgoKCSogZGxscy9nZGkvZnJlZXR5cGUuYzogTWFyY3VzIE1laXNzbmVyIDxtZWlzc25lckBzdXNlLmRlPgoJT2xkZXIgdmVyc2lvbnMgb2YgZnJlZXR5cGUgZG8gbm90IGhhdmUgRlRfR2V0X0ZpcnN0X0NoYXIuCgoJKiB0b29scy93aW5hcGkvbXN2Y21ha2VyOiBNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJRml4ZWQgb3B0aW9ucyBmb3Igd2luZWJ1aWxkLgoKCSogZGxscy9rZXJuZWwvZGV2aWNlLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRXhwbGljaXRseSBjbGVhciB2bTg2IGZsYWcgaW4gRElPQ1JlZ3NfMl9DT05URVhULgoKCSogZGxscy9tc3ZjcnQvdGVzdHMvc2NhbmYuYzogRmVyZW5jIFdhZ25lciA8d2ZlcmlAYWZhdmFudC5lbHRlLmh1PgoJQWRkZWQgc25wcmludGYgdGVzdC4KCgkqIGRsbHMvY29tbWRsZy9jZGxnX3h4LnJjOiBTdGV2ZW4gRWR3YXJkcyA8c3RldmVuX2VkNDE1M0B5YWhvby5jb20+CglQb3J0aW5nIGZpeC4KCgkqIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYzogTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCUFkZGVkIGluY2x1ZGUgb2YgIndpbmUvcG9ydC5oIiBmb3IgTVNWQy4KCgkqIGRsbHMvd2lubW0vd2luZWFsc2Evd2luZWFsc2EuZHJ2LnNwZWM6CglDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglFeHBvcnRlZCB3aWRNZXNzYWdlIGZ1bmN0aW9uLgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJWWV0IGFub3RoZXIgdXNlZnVsIGhpbnQgZm9yIG1pc3Npbmcgc3Rkb2xlMzIudGxiLgoKCSogZGxscy93aW5pbmV0L2h0dHAuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUhUVFBfRGVhbFdpdGhQcm94eTogT25seSBhZGQgaHR0cDovLyB0byBwcm94eSBzdHJpbmcgd2hlbiBuZWVkZWQuCgoJKiBkbGxzL29sZWF1dDMyL3ZhcnR5cGUuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglEbyBub3QgY2xlYXIgdGhlIHBvaW50ZXIgd2UganVzdCBhbGxvY2F0ZWQsIGp1c3QgdGhlIGZpcnN0IGJ5dGUgaXQKCXBvaW50cyB0by4KCgkqIGRsbHMvbnRkbGwvY2Ryb20uYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCBwb3RlbnRpYWxseSB1bmluaXRpYWxpc2VkIHN6LgoKCSogdG9vbHMvd2luZW1ha2VyOiBLaXJpbGwgU21lbGtvdiA8a2lyckBsYW5kYXUucGh5cy5zcGJ1LnJ1PgoJQWRkZWQgdGVzdCBmb3IgLWZtcy1leHRlbnNpb25zIHRvIGdlbmVyYXRlZCBjb25maWd1cmUuYWMuCgoyMDAzLTEyLTEyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogQU5OT1VOQ0UsIENoYW5nZUxvZywgVkVSU0lPTiwgY29uZmlndXJlOiBSZWxlYXNlIDIwMDMxMjEyLgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoyMDAzLTEyLTEyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy91c2VyL3RleHQuYzogR2UgdmFuIEdlbGRvcnAgPGdlQGdzZS5ubD4KCVBhc3MgZHRwIHBhcmFtZXRlciBvbiBmcm9tIERyYXdUZXh0RXhBIHRvIERyYXdUZXh0RXhXLgoKCSogZGxscy9hZHZhcGkzMi9zZXJ2aWNlLmMsIGluY2x1ZGUvd2luc3ZjLmg6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQmV0dGVyIGhhbmRsaW5nIG9mIHNvbWUgc2VydmljZSBmdW5jdGlvbnMuCgoJKiBwcm9ncmFtcy93Y21kL3djbWQuaDogUmVtb3ZlZCB1c2VsZXNzICNpZmRlZiBXSU5FTElCLgoKCSogcHJvZ3JhbXMvd2luZWZpbGUvTWFrZWZpbGUuaW46CglEZWZpbmUgX19XSU5FX18gdG8gZW5hYmxlIGV4dGVuc2lvbnMgKHNwb3R0ZWQgYnkgTWFydGluIEZ1Y2hzKS4KCgkqIERFVkVMT1BFUlMtSElOVFM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglVcGRhdGUgdGhlIGRsbHMvIHNlY3Rpb24uIFJlbW92ZSBnZGkveyxlbmh9bWZkcnYsIHRoZXkgYXJlbid0CglETExzLiBMaXN0IHRoZSBkb2N1bWVudGF0aW9uL3NhbXBsZXMgZGlyIGFzIHdlbGwuCgoJKiBNYWtlLnJ1bGVzLmluOiBBZGQgREVGUyB0byB0aGUgcmVzb3VyY2UgY29tcGlsZXIgZmxhZ3MuCgoJKiBsaWJzL3dpbmUvbGR0LmM6IEF2b2lkIGNvbW1vbiBzeW1ib2xzIG9uIERhcndpbi9NYWMgT1MgWC4KCgkqIGRsbHMva2VybmVsL3Jlc291cmNlLmM6CglBZGRlZCBleGNlcHRpb24gaGFuZGxlcnMgaW4gRmluZFJlc291cmNlRXhBL1cgKGJhc2VkIG9uIGEgcGF0Y2ggYnkKCVJpY2hhcmQgQ29oZW4pLgoKCSogZGxscy9hZHZhcGkzMi9yZWdpc3RyeS5jLCBkbGxzL250ZGxsL3Jlc291cmNlLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJVHJ5IG5vdCB0byBkaXNwbGF5IHVuaW5pdGlhbGl6ZWQgZGF0YSBpbiB0cmFjZXMgKGZvdW5kIGJ5IFZhbGdyaW5kKS4KCgkqIGRsbHMvY29tY3RsMzIvZmxhdHNiLmM6IE1pa2UgSGVhcm4gPG1pa2VAdGhlb3JldGljLmNvbT4KCVJlbW92ZSBmbGF0IHNjcm9sbGJhciBzdHViIGZpeG1lcy4KCgkqIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvbWFrZV9kbGxzOgoJU3RldmVuIEVkd2FyZHMgPHN0ZXZlbl9lZDQxNTNAeWFob28uY29tPgoJQWRkZWQgaW1wbGliIHJ1bGUgZm9yIGJ1aWxkaW5nIGltcG9ydCBsaWJzLgoKCSogZGxscy94MTFkcnYvd2luZG93LmM6IEplcnJ5IEplbmtpbnMgPEplcnJ5X0pfSmVua2luc0Bob3RtYWlsLmNvbT4KCUZpeCBtYW5hZ2VkIHN0YXRlIG9mIHNvbWUgd2luZG93cy4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jOiBBbmRyZXcgZGUgUXVpbmNleSA8YWRxX2R2YkBsaWRza2lhbGYubmV0PgoJLSBJbXBsZW1lbnRlZCBIRUxQRElSIHN1YmtleXMgcHJvcGVybHkgaW4gUmVnaXN0ZXJUeXBlTGliKCkuCgktIEltcGxlbWVudGVkIFVuUmVnaXN0ZXJUeXBlTGliKCkuCgktIEZpeGVkIHZhcmlvdXMgbWlub3IgYnVncy4KCgkqIGRsbHMvdXJsbW9uL3Vtb24uYywgZGxscy91cmxtb24vdXJsbW9uLnNwZWMsIGluY2x1ZGUvdXJsbW9uLmgsCgkgIGluY2x1ZGUvdXJsbW9uLmlkbDoKCUtpcmlsbCBTbWVsa292IDxraXJyQGxhbmRhdS5waHlzLnNwYnUucnU+CglBZGRlZCBDcmVhdGVBc3luY0JpbmRDdHggYW5kIElzQXN5bmNNb25pa2VyIHN0dWJzLgoKCSogaW5jbHVkZS93aW5lL3VuaWNvZGUuaCwgaW5jbHVkZS93aW5udC5oLCBsaWJzL3VuaWNvZGUvTWFrZWZpbGUuaW46CglHZSB2YW4gR2VsZG9ycCA8Z2VAZ3NlLm5sPgoJV2hlbiBidWlsZGluZyBhIFBFIERMTCAoTWluR1cpLCB2YXJpYWJsZXMgZXhwb3J0ZWQgZnJvbSBhIERMTCBtdXN0IGJlCglleHBsaWNpdGx5IG1hcmtlZCBhcyBkbGxpbXBvcnQgd2hlbiB1c2luZyB0aGVtLgoKCSogZGxscy9rZXJuZWwvcHRocmVhZC5jOgoJUmV0dXJuIGFuIGVycm9yIGluIHdpbmVfcHRocmVhZF9tdXRleF91bmxvY2sgaWYgd2UgZG9uJ3Qgb3duIHRoZQoJY3JpdGljYWwgc2VjdGlvbiwgdGhpcyBzaG91bGQgYXZvaWQgdHJvdWJsZSBjYXVzZWQgYnkgYSBsb2NraW5nIGJ1ZwoJaW5zaWRlIFhsaWIuCgoJKiBkbGxzL2NvbW1kbGcvTWFrZWZpbGUuaW4sIGRsbHMvY29tbWRsZy9jZGxnLmgsIGRsbHMvY29tbWRsZy9jZGxnMTYuaCwKCSAgZGxscy9jb21tZGxnL2NvbG9yZGxnLmMsIGRsbHMvY29tbWRsZy9jb2xvcmRsZy5oLAoJICBkbGxzL2NvbW1kbGcvY29sb3JkbGcxNi5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZzE2LmMsCgkgIGRsbHMvY29tbWRsZy9maW5kZGxnLmMsIGRsbHMvY29tbWRsZy9mb250ZGxnLmMsCgkgIGRsbHMvY29tbWRsZy9mb250ZGxnLmgsIGRsbHMvY29tbWRsZy9mb250ZGxnMTYuYywKCSAgZGxscy9jb21tZGxnL2dlbmVyaWMuYywgZGxscy9jb21tZGxnL3ByaW50ZGxnLmgsCgkgIGRsbHMvY29tbWRsZy9wcmludGRsZzE2LmM6CglTdGV2ZW4gRWR3YXJkcyA8c3RldmVuX2VkNDE1M0B5YWhvby5jb20+CgktIFRoZSBsYXN0IG9mIHRoZSBtYWpvciBXaW4xNi8zMiBzcGxpdCBmb3IgY29tbWRsZyAoZm9yIHJlYWwgdGhpcwoJICB0aW1lKS4KCS0gTW92ZWQgbW9zdCBvZiB0aGUgMTZiaXQgc3R1ZmYgdG8gY2RsZzE2LmguCgktIEEgZmV3IHNtYWxsIGNsZWFudXBzLgoKCSogZGxscy91c2VyL2xzdHIuYzoKCU1ha2UgQ2hhcntMb3dlcixVcHBlcn1BIGNhbGwgQ2hhcntMb3dlcixVcHBlcn1CdWZmQS4KCVNtYWxsIG9wdGltaXphdGlvbiB0byBhdm9pZCBhIG1lbW9yeSBhbGxvY2F0aW9uLgoJRml4ZWQgc2lnbiBleHRlbnNpb24gaW4gQ2hhcntMb3dlcixVcHBlcn1BIChyZXBvcnRlZCBieSBBbmRyZWFzCglSb3NlbmJlcmcpLgoKCSogZGxscy9vbGVhdXQzMi90ZXN0cy92YXJ0eXBlLmM6CglBdm9pZCBsb25nIGxvbmcgY29uc3RhbnRzIChyZXBvcnRlZCBieSBHZXJhbGQgUGZlaWZlcikuCglBZGRlZCBhIGZldyBtaXNzaW5nIHBhcmVudGhlc2VzIGluIG1hY3Jvcy4KCgkqIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jLCBkbGxzL3dpbmluZXQvdXJsY2FjaGUuYywKCSAgZGxscy93aW5pbmV0L3dpbmluZXQuc3BlYzoKCVJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CgktIFVybCBDYWNoZSBpbXByb3ZlbWVudHMuCgktIEluIEludGVybmV0e1NldCxRdWVyeX1PcHRpb24gZnVuY3Rpb25zLCBoSW50ZXJuZXQgY2FuIGJlIE5VTEwuCgktIEFkZCB0cmFjZXMgdG8gSW50ZXJuZXQqIGZ1bmN0aW9ucy4KCgkqIGRsbHMva2VybmVsL2xvY2FsZS5jOiBWaWsgS3VtYXIgPHZpa0B6b25lODEuY29tPgoJQWRkZWQgZXVjSlAgY2hhcnNldC4KCgkqIGRsbHMvY29tbWRsZy9jZGxnX0phLnJjLCBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9KYS5yYywKCSAgb2JqZWN0cy9nZGlvYmouYzoKCVZpayBLdW1hciA8dmlrQHpvbmU4MS5jb20+CglGb250IGNoYW5nZXMgZnJvbSBNUyBQIEdvdGhpYyB0byBNUyBVSSBHb3RoaWMuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bF9KYS5yYywgZGxscy9jb21jdGwzMi9yc3JjLnJjOgoJVmlrIEt1bWFyIDx2aWtAem9uZTgxLmNvbT4KCUFkZGVkIEphcGFuZXNlIHRyYW5zbGF0aW9uLgoKCSogZGxscy9udGRsbC9lcnJvci5jLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvbnRkbGwvcnRsc3RyLmMsCgkgIGRsbHMvbnRkbGwvdGVzdHMvcnRsc3RyLmMsIGluY2x1ZGUvd2ludGVybmwuaDoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglBZGRlZCBSdGxOdFN0YXR1c1RvRG9zRXJyb3JOb1RlYiwgUnRsR2V0L1NldC9SZXN0b3JlTGFzdFdpbjMyRXJyb3IsCglSdGxHVUlERnJvbVN0cmluZywgUnRsU3RyaW5nRnJvbUdVSUQuCgoJKiBkbGxzL3dpbm1tL3dpbmVhbHNhL2F1ZGlvLmMsIGRsbHMvd2lubW0vd2luZW5hcy9hdWRpby5jLAoJICBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzoKCUplcmVteSBTaGF3IDxqZXJlbXkuc2hhd0BsaW5kb3dzLmNvbT4KCU1vdmUgdGhlIGRhdGEgYXJvdW5kIHdoZW4gdGhlIHJpbmcgYnVmZmVyIGlzIHJlc2l6ZWQgc28gdGhhdCB0aGUgZW1wdHkKCW1lc3NhZ2VzIGFyZSBiZXR3ZWVuIHRoZSB0b3NhdmUgYW5kIHRvZ2V0IGluZGV4ZXMuCgoJKiBwcm9ncmFtcy93aW5lZmlsZS93aW5lZmlsZS5jOiBNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJRml4ZWQgbWlzc2luZyBpbml0aWFsaXphdGlvbnMgb2Ygc3RydWN0IFNIRUxMRVhFQ1VURUlORk8uCgoJKiBkbGxzL2tlcm5lbC9jb25zb2xlLmMsIGZpbGVzL2ZpbGUuYzoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJTW92ZWQgYWxsIHJlbWFpbmluZyBjb25zb2xlIHJlbGF0ZWQgY29kZSB0byBkbGxzL2tlcm5lbCBkaXJlY3RvcnkuCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmM6IEdlcmFsZCBQZmVpZmVyIDxnZXJhbGRAcGZlaWZlci5jb20+CglGaXggdHlwZXMgaW4gV1NBSHRvbmwuCgoJKiBERVZFTE9QRVJTLUhJTlRTOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJTGlzdCB0aGUgdG9vbHMgc3ViZGlycyBhcyB3ZSBkbyBmb3IgYWxsIHRoZSBvdGhlcnMuCglVcGRhdGUgZGVzY3JpcHRpb24gb2YgdGhlIG1pc2MvIGRpci4KCgkqIHByb2dyYW1zL3JlZ2VkaXQvYWJvdXQuYywgcHJvZ3JhbXMvcmVnZWRpdC9jaGlsZHduZC5jLAoJICBwcm9ncmFtcy9yZWdlZGl0L2VkaXQuYywgcHJvZ3JhbXMvcmVnZWRpdC9mcmFtZXduZC5jLAoJICBwcm9ncmFtcy9yZWdlZGl0L2xpc3R2aWV3LmMsIHByb2dyYW1zL3JlZ2VkaXQvbWFpbi5jLAoJICBwcm9ncmFtcy9yZWdlZGl0L21haW4uaCwgcHJvZ3JhbXMvcmVnZWRpdC90cmVldmlldy5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVJlbW92ZSBtb3N0IHN0cmluZyBzaXplIGxpbWl0YXRpb25zLgoJQmV0dGVyIGVycm9yIGhhbmRsaW5nLiBMZXNzIGxpc3R2aWV3IGZsaWNrZXIuCglBIGJ1bmNoIG9mIHN0eWxlIGZpeGVzIGFuZCBpbXByb3ZlbWVudHMuCgoyMDAzLTEyLTExICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy91c2VyL3dpbnByb2MuaCwgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLCBzZXJ2ZXIvY2xhc3MuYywKCSAgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3RyYWNlLmMsIHNlcnZlci91c2VyLmgsIHNlcnZlci93aW5kb3cuYywKCSAgd2luZG93cy9jbGFzcy5jLCB3aW5kb3dzL3dpbi5jOgoJU3RvcmUgYSBwb2ludGVyIHRvIHRoZSBjbGllbnQtc2lkZSBjbGFzcyBzdHJ1Y3R1cmUgaW4gdGhlIHNlcnZlciBhbmQKCXJldHVybiBpdCBvbiBjcmVhdGVfd2luZG93IGFuZCBkZXN0cm95X2NsYXNzLgoJT25seSBjcmVhdGUgYSBzaW5nbGUgaW5zdGFuY2Ugb2YgdGhlIGRlc2t0b3AgY2xhc3MgZm9yIHRoZSB3aG9sZQoJc2Vzc2lvbi4KCUFkZGVkIHNvbWUgbWlzc2luZyBsb2NraW5nIGluIHRoZSBjbGllbnQtc2lkZSBjbGFzcyBtYW5hZ2VtZW50LgoKCSogZGxscy9vbGVhdXQzMi92YXJpYW50LmM6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglPb3BzIC0gVlRfRU1QVFktPlZUX1JFQ09SRCBpcyBub3QgYWxsb3dlZC4KCgkqIGRsbHMvb2xlYXV0MzIvdGVzdHMvLmN2c2lnbm9yZSwgZGxscy9vbGVhdXQzMi90ZXN0cy9NYWtlZmlsZS5pbiwKCSAgZGxscy9vbGVhdXQzMi90ZXN0cy92YXJ0eXBlLmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJVGVzdCBhbG1vc3QgYWxsIG9mIHRoZSBsb3cgbGV2ZWwgdmFyaWFudCBmdW5jdGlvbnMKCgkqIGRsbHMvY29tbWRsZy9mb250ZGxnLmMsIGRsbHMvY29tbWRsZy9mb250ZGxnLmgsCgkgIGRsbHMvY29tbWRsZy9mb250ZGxnMTYuYzoKCVJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCURvIGNvbnZlcnNpb25zIGJldHdlZW4gdGhlIGZvbnQgc2l6ZSBzcGVjaWZpZWQgaW4gcG9pbnRzIChvcgoJZGVjaXBvaW50cykgYW5kIGhlaWdodCBzcGVjaWZpZWQgaW4gbG9naWNhbCB1bml0cy4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYywgZGxscy93aW5zb2NrL3dzMl8zMi5zcGVjLCBpbmNsdWRlL3dpbnNvY2syLmg6CglLaXJpbGwgU21lbGtvdiA8a2lyckBsYW5kYXUucGh5cy5zcGJ1LnJ1PgoJQWRkZWQgc3R1YiBhbmQgcHJvdG90eXBlIGZvciBXU0FKb2luTGVhZi4KCgkqIGRsbHMvb2xlYXV0MzIvTWFrZWZpbGUuaW4sIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzIuc3BlYywKCSAgZGxscy9vbGVhdXQzMi90ZXN0cy92YXJ0ZXN0LmMsIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jLAoJICBkbGxzL29sZWF1dDMyL3ZhcnR5cGUuYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglSZWltcGxlbWVudC9kb2N1bWVudCBldmVyeSBsb3cgbGV2ZWwgdmFyaWFudCBmdW5jdGlvbi4KCUltcGxlbWVudCBERUNJTUFMLCBJOCwgVUk4IHR5cGVzIGFuZCBvdGhlciBtaXNzaW5nIGNvbnZlcnNpb25zLgoJVmFyaWFudENoYW5nZVR5cGU6IFVzZSBMT0NBTEVfVVNFUl9ERUZBVUxUIGFzIHBlciBNU0ROLgoJVmFyaWFudENoYW5nZVR5cGVFeDogU3VwcG9ydCBuZXcgdHlwZXMsIHBhc3MgcHJvcGVyIGZsYWdzLgoJVmFyTnVtRnJvbVBhcnNlTnVtOiBTdXBwb3J0IFZUX0RFQ0lNQUwgYXMgb3V0cHV0LgoKCSogZGxscy93aW5tbS93aW5lYWxzYS9hdWRpby5jOiBDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglBZGRlZCBXYXZlSW4gc3VwcG9ydC4KCgkqIGRsbHMvY29tbWRsZy9mb250ZGxnLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCUVuYWJsZSB0aGUgZGlzcGxheSBvZiBhIHRydWUgdHlwZSBiaXRtYXAgZm9yIHRydWUgdHlwZSBmb250cy4KCgkqIGRsbHMvbmV0YXBpMzIvd2tzdGEuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBpbmNvcnJlY3QgY2FsY3VsYXRpb24gb2YgdHJhbnNwb3J0X2FkZHIuCgoJKiBkbGxzL2FkdmFwaTMyL3NlcnZpY2UuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCURvbid0IGNyYXNoIGlmIGxwRGVwZW5kZW5jaWVzIGlzIE5VTEwuCgoJKiBkbGxzL2NyeXB0MzIvbWFpbi5jLCBpbmNsdWRlL3dpbmNyeXB0Lmg6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgQ3J5cHRSZWdpc3Rlck9JREZ1bmN0aW9uIGFuZCBDcnlwdFNJUEFkZFByb3ZpZGVyLgoKCSogZGxscy93aW5pbmV0L2h0dHAuYzogSmVyZW15IFNoYXcgPGplcmVteS5zaGF3QGxpbmRvd3MuY29tPgoJQWRkIGEgJ1xyXG4nIHRvIGxwc3pIZWFkZXJzIGlmIGl0IGlzIG5vdCBhbHJlYWR5IHRlcm1pbmF0ZWQgYnkKCSdcclxuJy4KCgkqIGRsbHMva2VybmVsL2NvbW0uYzogRnJhbmsgPGYuZ29ja2VsQHQtb25saW5lLmRlPgoJRml4ZWQgc2l6ZSBjaGVjayBpbiBHZXRDb21tQ29uZmlnKCkuCgoJKiBwcm9ncmFtcy92aWV3L3ZpZXcuYzogUmljaGFyZCBDb2hlbiA8cmljaGFyZEBkYWlqb2J1LmNvLnVrPgoJLSBGaXggb2Jzb2xldGUgY29tbWVudHMgYWJvdXQgd2luZG93c3gsIGNvbW1kbGcuCgktIEluY3JlYXNlIGZpbGVuYW1lIGxlbmd0aCB0byBNQVhfUEFUSC4KCS0gU2V0IHRoZSB3aW5kb3dzIGV4dGVudCBiZWZvcmUgcGxheWluZyB0aGUgbWV0YWZpbGUuCgktIERvbid0IGhhcmRjb2RlIGxvZ3BpeGVscyB0byA5Ni4KCgkqIGRsbHMvc2hlbGwzMi9jb250cm9sLmM6IFJpY2hhcmQgQ29oZW4gPHJpY2hhcmRAZGFpam9idS5jby51az4KCS0gQ2hlY2sgRmluZEZpcnN0RmlsZSBhZ2FpbnN0IElOVkFMSURfSEFORExFX1ZBTFVFIG5vdCAwLgoJLSBEaXNwbGF5IHdpbmRvdyAmIG1lc3NhZ2Vib3ggZXZlbiBpZiB0aGVyZSBhcmUgbm8gYXBwbGV0cy4KCjIwMDMtMTItMTAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3VzZXIvdGVzdHMvY2xhc3MuYzoKCUFkZGVkIHRlc3RzIGZvciBjbGFzcyBzdHlsZSBhbmQgaW5zdGFuY2UgaGFuZGxpbmcuCgoJKiBjb250cm9scy9idXR0b24uYywgY29udHJvbHMvY29tYm8uYywgY29udHJvbHMvZGVza3RvcC5jLAoJICBjb250cm9scy9lZGl0LmMsIGNvbnRyb2xzL2ljb250aXRsZS5jLCBjb250cm9scy9saXN0Ym94LmMsCgkgIGNvbnRyb2xzL21lbnUuYywgY29udHJvbHMvc2Nyb2xsLmMsIGNvbnRyb2xzL3N0YXRpYy5jLAoJICB3aW5kb3dzL2RpYWxvZy5jLCB3aW5kb3dzL21kaS5jOgoJU3lzdGVtIGNsYXNzZXMgbXVzdCBub3QgaGF2ZSB0aGUgQ1NfR0xPQkFMQ0xBU1Mgc3R5bGUuCgoJKiBkbGxzL3VzZXIvdXNlcl9tYWluLmMsIGRsbHMvdXNlci93aW5wcm9jLmgsCgkgIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwgc2VydmVyL01ha2VmaWxlLmluLCBzZXJ2ZXIvY2xhc3MuYywKCSAgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3Byb2Nlc3MuaCwgc2VydmVyL3Byb3RvY29sLmRlZiwKCSAgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3RyYWNlLmMsIHNlcnZlci91c2VyLmgsIHNlcnZlci93aW5kb3cuYywKCSAgd2luZG93cy9jbGFzcy5jLCB3aW5kb3dzL3dpbi5jOgoJQWRkZWQgd2luZG93IGNsYXNzZXMgaW4gdGhlIHNlcnZlciwgYW5kIHN1cHBvcnQgZm9yIGludGVyLXByb2Nlc3MKCUdldENsYXNzV29yZC9Mb25nIChiYXNlZCBvbiBhIHBhdGNoIGJ5IE1pa2UgTWNDb3JtYWNrKS4KCVZhcmlvdXMgZml4ZXMgdG8gdGhlIGNsYXNzIGluc3RhbmNlIGhhbmRsaW5nLgoKCSogc2VydmVyL2ZpbGUuYywgc2VydmVyL3RyYWNlLmM6CglQcmludCBuYW1lcyBmb3IgV2luMzIgZXJyb3JzIHRvbywgcGx1cyBhIGZldyBtb3JlIHN0YXR1cyBjb2Rlcy4KCgkqIGRsbHMvdXNlci9kaWFsb2cxNi5jLCB3aW5kb3dzL2RpYWxvZy5jOgoJQW5kcmVhcyBSb3NlbmJlcmcgPHNvbml4MjAwM0BjdGYtei5kZT4KCVBvaW50IHNpemUgaW4gRExHX1RFTVBMQVRFIG1heSBiZSBuZWdhdGl2ZS4KCgkqIHByb2dyYW1zL3JlZ2VkaXQvbGlzdHZpZXcuYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglTb3J0IHRoZSBsaXN0dmlldyB3aGVuIGNsaWNraW5nIHRoZSBOYW1lIG9yIFR5cGUgaGVhZGVycy4KCgkqIGRsbHMvbXN2aWRlby9tY2l3bmQuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBzdXBwb3J0IGZvciBzb21lIE1DSVdOREZfIHN0eWxlcywgaW5kaWNhdGUgdGhhdCB3ZSBkbyBub3Qgc3VwcG9ydAoJTUNJV05ETV8qIG1lc3NhZ2VzIGF0IGFsbC4KCgkqIHdpbmRvd3MvY2xhc3MuYzoKCU1hZGUgYWxsIHRoZSBSZWdpc3RlckNsYXNzIGFuZCBHZXRDbGFzc0luZm8gdmFyaWFudHMgY2FsbCB0aGUKCWNvcnJlc3BvbmRpbmcgRXggZnVuY3Rpb24uCgoJKiBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci90cmFjZS5jLAoJICBzZXJ2ZXIvd2luZG93LmMsIHdpbmRvd3Mvd2luLmM6CglBZGRlZCBzdXBwb3J0IGZvciBpbnRlci1wcm9jZXNzIEdldFdpbmRvd1dvcmQuCglEbyBiZXR0ZXIgcmFuZ2UgY2hlY2tpbmcgb24gdGhlIHdpbmRvdyBleHRyYSBieXRlcy4KCgkqIHNlcnZlci9maWxlLmMsIHNlcnZlci90aHJlYWQuaDoKCUFkZGVkIHNldF93aW4zMl9lcnJvcigpIGZvciBlcnJvciBjb2RlcyB0aGF0IGRvbid0IGhhdmUgYW4gTlQgc3RhdHVzCgllcXVpdmFsZW50LgoKCSogZGxscy9zaGVsbDMyL2NsYXNzZXMuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLAoJICBkbGxzL3NoZWxsMzIvc2hsZXhlYy5jOgoJTWFyY2VsbyBEdWFydGUgPHdpbmUtZGV2ZWxAYm9sLmNvbS5icj4KCS0gSW1wbGVtZW50YXRpb24gb2YgSENSX0dldEV4ZWN1dGVDb21tYW5kRXhXIGZvciBpbnRlcm5hbCB1c2UuCgktIE5ldyBpbmxpbmUgZnVuY3Rpb24gIF9fU0hDbG9uZVN0ckF0b1cuCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYzogQW5kcmV3IGRlIFF1aW5jZXkgPGFkcV9kdmJAbGlkc2tpYWxmLm5ldD4KCVVwd2FyZHMgdHJhdmVyc2FsIG9mIGluaGVyaXRhbmNlIHRyZWUgZGlkbid0IG9jY3VyIGZvciBkaXNwYXRjaAoJaW50ZXJmYWNlcy4KCgkqIGRsbHMvb2xlYXV0MzIvdGVzdHMvdmFydGVzdC5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUZpeCBhIGNvdXBsZSBvZiB0ZXN0cyBmb3IgdzJrIChSdXNzaWFuKS4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCURvbid0IGNhbGwgR2V0V2luZG93TG9uZyBmb3IgZXZlcnkgY29tcGFyaXNvbiB3aGlsZSBzb3J0aW5nLgoKCSogZGxscy9nZGkvZnJlZXR5cGUuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUlmIGEgZm9udCBoYXMgYSB2ZXJzaW9uIDAgT1MyIHRhYmxlIHRoZW4gV2luZG93cyB1c2VzIEFOU0lfQ0hBUlNFVCBpZgoJdGhlIGZpcnN0IGNoYXJjb2RlIDwgMHgxMDAsIGVsc2UgaXQgdXNlcyBTWU1CT0xfQ0hBUlNFVC4gIEJhc2VkIG9uIGEKCXBhdGNoIGJ5IFJlaW4gS2xhemVzLgoKCSogaW5jbHVkZS93aW50ZXJubC5oOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJQWRkIGEgZmV3IHNvb24tdG8tYmUtaW1wbGVtZW50ZWQgZnVuY3Rpb25zLgoKMjAwMy0xMi0wOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvb2xlYXV0MzIvdGVzdHMvdmFydGVzdC5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUZpeCB0aGUgdGVzdHMgdG8gcGFzcyB3aGVuIGxvY2FsZSBzZXR0aW5ncyBhcmUgdXNlci1vdmVycmlkZW4uCglGaXggdGhvc2UgdGVzdHMgd2hpY2ggcGFzcyBub3cuCglUZXN0IGNvcHlpbmcsIGZvcm1hdHRpbmcsIFZhckFicywgVmFyTm90LgoKCSogZGxscy9vbGVhdXQzMi9NYWtlZmlsZS5pbiwgZGxscy9vbGVhdXQzMi9vbGVhdXQzMi5zcGVjLAoJICBkbGxzL29sZWF1dDMyL3BhcnNlZHQuYywgZGxscy9vbGVhdXQzMi9wYXJzZWR0LmgsCgkgIGRsbHMvb2xlYXV0MzIvcmVzb3VyY2UuaCwgZGxscy9vbGVhdXQzMi92YXJpYW50LmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJSW1wbGVtZW50IGNvbnZlcnNpb25zIGJldHdlZW4gZGF0ZXMgYW5kIHN0cmluZ3MuCglSZW1vdmUgdGhlIGZpbmFsIGNydWZ0IGFzc29jaWF0ZWQgd2l0aCB0aGUgb2xkIGRhdGUgY29kZQoJQlBCJ3M6IFJvbGwgbWlsbGlzZWNvbmRzIGNvcnJlY3RseTsgTE9DQUxFX05PVVNFUk9WRVJSSURFIGZvciBudW0KCXBhcnNpbmcuCglJbXBsZW1lbnQgVmFyQWJzIGFuZCBWYXJOb3QuCgoyMDAzLTEyLTA4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy91c2VyL3VzZXIzMi5zcGVjLCBpbmNsdWRlL3dpbnVzZXIuaCwgd2luZG93cy9ub25jbGllbnQuYzoKCUtldmluIEtvbHR6YXUgPGtldmluQHBsb3Aub3JnPgoJSW1wbGVtZW50ZWQgR2V0VGl0bGVCYXJJbmZvLgoKCSogcHJvZ3JhbXMvcmVnZWRpdC9jaGlsZHduZC5jLCBwcm9ncmFtcy9yZWdlZGl0L2VkaXQuYywKCSAgcHJvZ3JhbXMvcmVnZWRpdC9mcmFtZXduZC5jLCBwcm9ncmFtcy9yZWdlZGl0L2xpc3R2aWV3LmMsCgkgIHByb2dyYW1zL3JlZ2VkaXQvbWFpbi5jLCBwcm9ncmFtcy9yZWdlZGl0L21haW4uaCwKCSAgcHJvZ3JhbXMvcmVnZWRpdC9yZWdlZGl0LmMsIHByb2dyYW1zL3JlZ2VkaXQvcmVncHJvYy5jLAoJICBwcm9ncmFtcy9yZWdlZGl0L3JlZ3Byb2MuaCwgcHJvZ3JhbXMvcmVnZWRpdC90cmVldmlldy5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVJlZm9ybWF0IHJlZ2VkaXQgaW4gYSBjb25zaXN0ZW50IG1hbm5lci4KCgkqIGRsbHMvb2xlMzIvaWZzLmMsIGRsbHMvb2xlMzIvb2xlMi5jLCBkbGxzL29sZTMyL29sZTJzdHVicy5jLAoJICBkbGxzL29sZTMyL29sZTMyX21haW4uYzoKCVJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CgktIEZpeCBJTWVtQWxsb2NfRnJlZSB3aGVuIElNZW1BbGxvY19BbGxvYyBoYXNuJ3QgeWV0IGJlZW4gY2FsbGVkIGFuZAoJICBkZWJ1Z2dpbmcgaXMgb24uCgktIEZpeCBPbGVNZXRhZmlsZVBpY3RGcm9tSWNvbkFuZExhYmVsIChmaXhlcyBhdHRhY2htZW50cyBpbiBPdXRsb29rMmspLgoJLSBJbXBsZW1lbnQgT2xlVHJhbnNsYXRlQWNjZWxlcmF0b3IuCgktIE1vdmUgT2xlQ3JlYXRlIGFuZCBhIGxvYWQgb2YgUHJvcFZhcmlhbnQgZnVuY3Rpb25zIG91dCBvZiBzdHVicyBmaWxlLgoJLSBDaGFuZ2UgT2xlQ3JlYXRlIHRvIGEgc2VtaS1zdHViLgoKCSogZGxscy91eHRoZW1lL01ha2VmaWxlLmluLCBkbGxzL3V4dGhlbWUvbXNzdHlsZXMuYywKCSAgZGxscy91eHRoZW1lL21zc3R5bGVzLmgsIGRsbHMvdXh0aGVtZS9zeXN0ZW0uYzoKCUtldmluIEtvbHR6YXUgPGtldmluQHBsb3Aub3JnPgoJTG9hZCwgdmFsaWRhdGUgYW5kIHJldHJpZXZlIGEgZmV3IHByb3BlcnRpZXMgZnJvbSBhbiBtc3N0eWxlcyB0aGVtZS4KCgkqIHByb2dyYW1zL2Nsb2NrL0RhLnJjLCBwcm9ncmFtcy9jbG9jay9EZS5yYywgcHJvZ3JhbXMvY2xvY2svRW4ucmMsCgkgIHByb2dyYW1zL2Nsb2NrL0VzLnJjLCBwcm9ncmFtcy9jbG9jay9GaS5yYywgcHJvZ3JhbXMvY2xvY2svRnIucmMsCgkgIHByb2dyYW1zL2Nsb2NrL0h1LnJjLCBwcm9ncmFtcy9jbG9jay9JdC5yYywKCSAgcHJvZ3JhbXMvY2xvY2svTWFrZWZpbGUuaW4sIHByb2dyYW1zL2Nsb2NrL05sLnJjLAoJICBwcm9ncmFtcy9jbG9jay9QdC5yYywgcHJvZ3JhbXMvY2xvY2svUkVBRE1FLCBwcm9ncmFtcy9jbG9jay9SdS5yYywKCSAgcHJvZ3JhbXMvY2xvY2svU2kucmMsIHByb2dyYW1zL2Nsb2NrL1NrLnJjLCBwcm9ncmFtcy9jbG9jay9Tdy5yYywKCSAgcHJvZ3JhbXMvY2xvY2svVE9ETywgcHJvZ3JhbXMvY2xvY2svVGgucmMsIHByb2dyYW1zL2Nsb2NrL1dhLnJjLAoJICBwcm9ncmFtcy9jbG9jay9aaC5yYywgcHJvZ3JhbXMvY2xvY2svY2xvY2tfcmVzLmgsCgkgIHByb2dyYW1zL2Nsb2NrL2xhbmd1YWdlLmMsIHByb2dyYW1zL2Nsb2NrL2xhbmd1YWdlLmgsCgkgIHByb2dyYW1zL2Nsb2NrL21haW4uYywgcHJvZ3JhbXMvY2xvY2svbWFpbi5oLAoJICBwcm9ncmFtcy9jbG9jay93aW5jbG9jay5jLCBwcm9ncmFtcy9jbG9jay93aW5jbG9jay5oOgoJUmljaGFyZCBDb2hlbiA8cmljaGFyZEBkYWlqb2J1LmNvLnVrPgoJLSBJbXBsZW1lbnQgJ0Nob29zZSBmb250JywgJ05vIHRpdGxlJywgJ0Fsd2F5cyBvbiBUb3AnLgoJLSBQYWludCB0byBvZmZzY3JlZW4gYml0bWFwIHRvIGVsaW1pbmF0ZSBmbGlja2VyLgoJLSBQdXQgJ0Fsd2F5cyBvbiB0b3AnIG9uIHRoZSBtYWluIG1lbnUgbm90IHRoZSBzeXN0ZW0gbWVudS4KCS0gRGF0ZSBmb3JtYXQgc2hvdWxkIGJlIERBVEVfTE9OR0RBVEUuCgktIEwgYnV0dG9uIGRyYWcgdG8gbW92ZS4KCS0gQ29zbWV0aWMgYWRqdXN0bWVudHMuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9maWxlLmM6IEhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJSW5jbHVkZSB0ZXN0cyBmb3IgTW92ZUZpbGVbV3xBXS4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL2xvY2FsZS5jOiBIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCURlYWwgd2l0aCBrZXJuZWxzIHRoYXQgZG9uJ3QgaGF2ZSBJc1ZhbGlkTGFuZ3VhZ2VHcm91cC4KCURlYWwgd2l0aCBub24taW1wbGVtZW50ZWQgRm9sZFN0cmluZ1tBfFddLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvZGlyZWN0b3J5LmM6IEhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJQ2hlY2sgZm9yIEVSUk9SX0NBTExfTk9UX0lNUExFTUVOVEVEIGVycm9yIGZyb20gUmVtb3ZlRGlyZWN0b3J5Vy4KCgkqIHdpbmVkZWZhdWx0LnJlZzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUNvcnJlY3QgIk1DSSBFeHRlbnNpb25zIiByZWdpc3RyeSBzZWN0aW9uLCBhZGQgTUNJMzIgc2VjdGlvbi4KCgkqIGluY2x1ZGUvd2ludXNlci5oOiBBZGRlZCBDU19EUk9QU0hBRE9XLgoKCSogZGxscy9rZXJuZWwvYXRvbS5jLCBkbGxzL2tlcm5lbC9jb25zb2xlLmMsIGRsbHMva2VybmVsL2Rvc21lbS5jLAoJICBkbGxzL2tlcm5lbC9maWxlLmMsIGRsbHMva2VybmVsL2dsb2JhbDE2LmMsCgkgIGRsbHMva2VybmVsL2tlcm5lbF9tYWluLmMsIGRsbHMva2VybmVsL2tlcm5lbF9wcml2YXRlLmgsCgkgIGRsbHMva2VybmVsL2xvY2FsMTYuYywgZGxscy9rZXJuZWwvbmVfbW9kdWxlLmMsCgkgIGRsbHMva2VybmVsL25lX3NlZ21lbnQuYywgZGxscy9rZXJuZWwvc25vb3AxNi5jLCBkbGxzL2tlcm5lbC9zeW5jLmMsCgkgIGRsbHMva2VybmVsL3Rhc2suYywgZGxscy9rZXJuZWwvdnhkLmMsIGRsbHMvbnRkbGwvbnRkbGxfbWlzYy5oLAoJICBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmMsIGRsbHMvbnRkbGwvc2lnbmFsX3Bvd2VycGMuYywKCSAgZGxscy9udGRsbC9zaWduYWxfc3BhcmMuYywgZGxscy9udGRsbC92aXJ0dWFsLmMsCgkgIGRsbHMvdXNlci91c2VyX21haW4uYywgZGxscy94MTFkcnYvZGliLmMsIGluY2x1ZGUvZ2xvYmFsLmgsCgkgIG9iamVjdHMvbWV0YWZpbGUuYzoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglNb3ZlIGNvbnRlbnQgb2YgZ2xvYmFsLmggaW50byB0aGUgYXBwcm9wcmlhdGUgcHJpdmF0ZSBoZWFkZXJzLgoKCSogZGxscy93aW5tbS9tbXN5c3RlbS5jLCBkbGxzL3dpbm1tL3RpbWUuYywgZGxscy93aW5tbS93aW5lbW0uaCwKCSAgZGxscy93aW5tbS93aW5tbS5jOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglNb3ZlIChhZ2FpbikgdXNhZ2Ugb2YgMTYgYml0IHNwZWNpZmljIGZ1bmN0aW9ucyAodGh1bmsgbG9jaykgdG8gMTYgYml0Cgljb2RlIG9ubHkuCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmM6IExpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglMaW1pdCB1c2FnZSBvZiB2ZXJ0ZXggYXJyYXlzIHRvIGNvcnJlY3Qgc3RhdGVzLgoKCSogZGxscy9nZGkvZnJlZXR5cGUuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUlmIHVzV2luQXNjZW50ICsgdXNXaW5EZXNjZW50ID09IDAgdGhlbiB1c2UgdGhlIEFzY2VuZGVyIGFuZCBEZXNjZW5kZXIKCXZhbHVlcyBpbnN0ZWFkLgoKCSogZGxscy9jb21tZGxnL2ZvbnRkbGcuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBhIGZvbnQgb2JqZWN0IGxlYWsgaW4gdGhlIGZvbnQgZGlhbG9nJ3MgV01fUEFJTlQgaGFuZGxlci4KCgkqIHdpbmVkZWZhdWx0LnJlZzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUNvcnJlY3QgYSBjb3VwbGUgb2YgaW5jb3JyZWN0IHJlZ2lzdHJ5IHJvb3Qga2V5IG5hbWVzLgoKCSogZGxscy9jcnlwdDMyL2NyeXB0MzIuc3BlYywgZGxscy9jcnlwdDMyL21haW4uYywgaW5jbHVkZS93aW5jcnlwdC5oOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJU3R1YiBpbXBsZW1lbnRhdGlvbnMgZm9yIENlcnRDcmVhdGVDUkxDb250ZXh0IGFuZCBDZXJ0Q2xvc2VTdG9yZS4KCgkqIERFVkVMT1BFUlMtSElOVFM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglTdHJlYW1saW5lIGRsbHMvIGFuZCBwcm9ncmFtcy8gaW4gdGVybXMgb2YgaW5kZW50YXRpb24uCglVcGRhdGVkIHRoZSBwcm9ncmFtcy8gKGFkZGVkIGFuZCBkZWxldGVkIGEgYnVuY2ggb2YgZW50cmllcykuCglBZGRlZCB0aGUgaW5jbHVkZS97bXN2Y3J0LHdpbmV9IHRvIHRoZSBsaXN0IG9mIGluY2x1ZGUgZGlycy4KCgkqIHByb2dyYW1zL3dpbmVtaW5lL3JzcmMucmM6IFBhdmVsIFJvc2tpbiA8cHJvc2tpQGdudS5vcmc+CglNYWtlIGluYWN0aXZlIExFRCBzZWdtZW50cyBkaW1tZXIgdG8gbWFrZSBudW1iZXJzIGVhc2llciB0byByZWFkLgoKCSogZGxscy9tc2FjbS93aW5lbXAzL2NvbW1vbi5jLCBkbGxzL21zYWNtL3dpbmVtcDMvaW50ZXJmYWNlLmM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCVJlbW92ZSBhbiBpbnN0YW5jZSBvZiBleGl0KCkuIFdlIHNob3VsZCByZXR1cm4gZmFpbHVyZSwgbm90IGtpbGwgdGhlCgl0aHJlYWQsIHdoZW4gYSBiYWQgc3RyZWFtIGlzIGVuY291bnRlcmVkLgoKCSogZGxscy93aW5tbS93aW5lYWxzYS9taWRpLmM6IENocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUZpcnN0IGVudW1lcmF0ZSBhbGwgaW50ZXJuYWwgZGV2aWNlcyBhbmQgdGhlbiBleHRlcm5hbCBtaWRpIHBvcnRzLgoKCSogZGxscy9hZHZhcGkzMi90ZXN0cy9NYWtlZmlsZS5pbjogSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglSZW1vdmUgbnRkbGwgZnJvbSBpbXBvcnRzLgoKCSogZGxscy9uZXRhcGkzMi93a3N0YS5jLCBpbmNsdWRlL2xtY29ucy5oLCBpbmNsdWRlL2xtd2tzdGEuaDoKCUp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCVBhcnRpYWxseSBpbXBsZW1lbnQgTmV0V2tzdGFHZXRJbmZvLgoKCSogaW5jbHVkZS9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luZW1lbnVidWlsZGVyL3dpbmUueHBtLAoJICBwcm9ncmFtcy93aW5lbWVudWJ1aWxkZXIvd2luZW1lbnVidWlsZGVyLmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJTW92ZSBpbmNsdWRlL2JpdG1hcHMvKi54cG0gd2hlcmUgdGhleSBiZWxvbmcuCgoJKiBkbGxzL2NhYmluZXQvY2FiaW5ldC5zcGVjOgoJU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtTGluZS5jb20+CglGaXhlZCBwYXJhbWV0ZXIgdHlwZXMgb2YgZnVuY3Rpb24gRXh0cmFjdC4KCgkqIGRsbHMvd2luZXBzL01ha2VmaWxlLmluLCBkbGxzL3dpbmVwcy9iaXRtYXAuYywgZGxscy93aW5lcHMvZW5jb2RlLmMsCgkgIGRsbHMvd2luZXBzL3BzLmMsIGRsbHMvd2luZXBzL3BzZHJ2Lmg6CglIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJUnVuIGxlbmd0aCBhbmQgYXNjaWk4NSBlbmNvZGUgaW1hZ2UgZGF0YS4KCjIwMDMtMTItMDUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3gxMWRydi9jbGlwYm9hcmQuYywgZGxscy94MTFkcnYvZXZlbnQuYywgaW5jbHVkZS9jbGlwYm9hcmQuaCwKCSAgd2luZG93cy9jbGlwYm9hcmQuYzoKCUdldCByaWQgb2YgY2xpcGJvYXJkLmguCgoJKiBkbGxzL29wZW5nbDMyL3dnbC5jOgoJUmVtb3ZlZCBub3cgdXNlbGVzcyBjYWxsIHRvIGdsWFF1ZXJ5RXh0ZW5zaW9uc1N0cmluZy4KCgkqIHdpbmRvd3MvcGFpbnRpbmcuYzoKCUluIFJEV19WYWxpZGF0ZVBhcmVudCwgZ2V0IHJpZCBvZiB0aGUgcGFyZW50IHVwZGF0ZSByZWdpb24gaWYgaXQgaXMKCWVtcHR5IGFmdGVyIHRoZSB2YWxpZGF0aW9uLCB0byBhdm9pZCBhIHVzZWxlc3MgV01fUEFJTlQuCgoJKiBwcm9ncmFtcy9yZWdlZGl0L3JlZ2VkaXQuYywgcHJvZ3JhbXMvcmVnZWRpdC9yZWdwcm9jLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJUHJpbnQgZXJyb3IgbWVzc2FnZXMgdG8gc3RkZXJyIGFzIGlzIGN1c3RvbWFyeS4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL3gxMWRydi9NYWtlZmlsZS5pbiwKCSAgZGxscy94MTFkcnYvYml0Ymx0LmMsIGRsbHMveDExZHJ2L2JpdG1hcC5jLCBkbGxzL3gxMWRydi9icnVzaC5jLAoJICBkbGxzL3gxMWRydi9jbGlwcGluZy5jLCBkbGxzL3gxMWRydi9jb2RlcGFnZS5jLCBkbGxzL3gxMWRydi9kaWIuYywKCSAgZGxscy94MTFkcnYvZ3JhcGhpY3MuYywgZGxscy94MTFkcnYvaW5pdC5jLCBkbGxzL3gxMWRydi9vcGVuZ2wuYywKCSAgZGxscy94MTFkcnYvcGFsZXR0ZS5jLCBkbGxzL3gxMWRydi9wZW4uYywgZGxscy94MTFkcnYvdGV4dC5jLAoJICBkbGxzL3gxMWRydi94Zm9udC5jLCB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5kYXQ6CglNb3ZlZCBhbGwgdGhlIGZpbGVzIGluIGdyYXBoaWNzL3gxMWRydiB0byBkbGxzL3gxMWRydi4KCgkqIGRsbHMvbnRkbGwvc2VydmVyLmMsIGRvY3VtZW50YXRpb24vd2luZS5tYW4uaW4sIGxpYnMvd2luZS9kZWJ1Zy5jLAoJICBsaWJzL3dpbmUvbG9hZGVyLmM6CglBZGRlZCBhIFdJTkVERUJVRyBlbnZpcm9ubWVudCB2YXJpYWJsZSB0aGF0IGFsbG93cyB0dXJuaW5nIG9uIGRlYnVnCglvdXRwdXQgYXMgZWFybHkgYXMgcG9zc2libGUgZHVyaW5nIHN0YXJ0dXAuCgoJKiBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jLCBkb2N1bWVudGF0aW9uL3NhbXBsZXMvY29uZmlnOgoJUmVtb3ZlZCBYMTEgZGlzcGxheSBwYXJhbWV0ZXIgZnJvbSB0aGUgY29uZmlnIGZpbGUsIHRoaXMgaXMgbW9yZQoJY29uZnVzaW5nIHRoYW4gdXNlZnVsLgoKCSogcHJvZ3JhbXMvcmVnZWRpdC9jaGlsZHduZC5jLCBwcm9ncmFtcy9yZWdlZGl0L2ZyYW1ld25kLmM6CglGaWxpcCBOYXZhcmEgPHhuYXZhcmFAdm9sbnkuY3o+CglGaXhlZCBzb21lIGZsYWdzIGluIGNhbGxzIHRvIENyZWF0ZVdpbmRvd0V4LgoJRml4ZWQgY29sb3Igb2YgdGhlIHNwbGl0dGVyLgoKMjAwMy0xMi0wNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmM6CglJbml0aWFsaXplIFhsaWIgdGhyZWFkaW5nIHN1cHBvcnQgdG8gc2VlIHdoYXQgaXQgYnJlYWtzLi4uCgoJKiBkbGxzL3gxMWRydi93aW5kb3cuYywgZGxscy94MTFkcnYveDExZHJ2Lmg6CglNaWtlIEhlYXJuIDxtaWtlQHRoZW9yZXRpYy5jb20+CglNYXAgKFdTX0VYX1RPT0xXSU5ET1cgJiBXU19DQVBUSU9OKSB0byBfTkVUX1dNX1dJTkRPV19UWVBFX1VUSUxJVFkuCgoJKiBkbGxzL2NvbW1kbGcvZm9udGRsZy5jOiBSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglDb3JyZWN0IHRoZSB0ZXN0IGZvciB0aGUgT0RTX1NFTEVDVEVEIGJpdCBpbiB0aGUgV01fRFJBV0lURU0gbWVzc2FnZQoJaGFuZGxlci4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL2hlYXAuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCU1vcmUgdGVzdHMgZm9yIHtMb2NhbCxHbG9iYWx9eyxSZX1BbGxvYygpIGNhbGxzLgoJQ2xlYW51cCBvZiB0aGUgSGVhcCooKSB0ZXN0cy4KCgkqIGRsbHMvd2lubW0vd2luZWFsc2EvYXVkaW8uYzoKCURlZmluZSBBTFNBX1BDTV9PTERfKiBzeW1ib2xzIGZvciBjb21wYXRpYmlsaXR5IHdpdGggQWxzYSAxLjAuCgoJKiBkbGxzL2tlcm5lbC9kZXZpY2UuYzogSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJUGFydGlhbGx5IGltcGxlbWVudCBEZXZpY2VJb0NvbnRyb2wgZm9yIFZESENQLCBWTkVUQklPUywgYW5kIFZOQi4KCUdldHMgcmlkIG9mIEZJWE1FcyBmb3IgaXBjb25maWcuZXhlIGFuZCB3aW5pcGNmZy5leGUuCgoJKiBkbGxzL3V4dGhlbWUvLmN2c2lnbm9yZSwgZGxscy91eHRoZW1lL01ha2VmaWxlLmluLAoJICBkbGxzL3V4dGhlbWUvZHJhdy5jLCBkbGxzL3V4dGhlbWUvbWFpbi5jLCBkbGxzL3V4dGhlbWUvbWV0cmljLmMsCgkgIGRsbHMvdXh0aGVtZS9wcm9wZXJ0eS5jLCBkbGxzL3V4dGhlbWUvc3lzdGVtLmMsCgkgIGRsbHMvdXh0aGVtZS91eHRoZW1lLnNwZWMsIGRsbHMvdXh0aGVtZS91eHRoZW1lZGxsLmgsCgkgIGRsbHMvdXh0aGVtZS92ZXJzaW9uLnJjOgoJS2V2aW4gS29sdHphdSA8a2V2aW5AcGxvcC5vcmc+CglBZGRlZCBzdHVicyBmb3IgYWxsIGZ1bmN0aW9ucy4KCgkqIGRsbHMvd2luZXBzL3BzLmMsIGRsbHMvd2luZXBzL3BzZHJ2Lmg6CglIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJTGV0IFBTRFJWX1dyaXRlU3Bvb2wgY29wZSB3aXRoIHN0cmluZ3MgbG9uZ2VyIHRoYW4gMHhmZmZmIGJ5dGVzLgoKCSogZGxscy9uZXRhcGkzMi9hY2Nlc3MuYywgZGxscy9uZXRhcGkzMi9icm93c3IuYywKCSAgZGxscy9uZXRhcGkzMi9uZXRhcGkzMi5zcGVjLCBkbGxzL25ldGFwaTMyL3drc3RhLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglTdHViIGltcGxlbWVudGF0aW9ucyBmb3Igc29tZSBmdW5jdGlvbnMuCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmg6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglBZGQgbWlzc2luZyBMaXN0Vmlld19HZXRWaWV3UmVjdCgpIG1hY3JvLgoKCSogZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL250ZGxsL3JlZy5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUltcGxlbWVudCB0aGUgUnRscCogcmVnaXN0cnkgZnVuY3Rpb25zLgoKCSogZGxscy9tc3ZjcnQvY3BwZXhjZXB0LmMsIGRsbHMvbXN2Y3J0L2V4Y2VwdC5jLAoJICBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYywgZGxscy9tc3ZjcnRkL21zdmNydGQuc3BlYywKCSAgZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL250ZGxsL3J0bC5jOgoJSW1wbGVtZW50IHNvbWUgbW9yZSByZWdpc3RlciBmdW5jdGlvbnMgdXNpbmcgREVGSU5FX1JFR1NfRU5UUllQT0lOVCB0bwoJbWFrZSB0aGVtIGF2YWlsYWJsZSBmb3IgaW1wb3J0cy4KCgkqIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmMsIGluY2x1ZGUvd2luZS9wb3J0LmgsIGluY2x1ZGUvd2lubnQuaDoKCU1vdmVkIHRoZSBERUZJTkVfUkVHU19FTlRSWVBPSU5UIG1hY3JvcyB0byBpbmNsdWRlL3dpbmUvcG9ydC5oLgoJUmVtb3ZlZCB0aGUgQyBmYWxsYmFjayBjb2RlLCBkbyB0aGF0IGluIHRoZSBjYWxsZXJzIGluc3RlYWQuCgoJKiBkbGxzL250ZGxsL3J0bHN0ci5jOgoJV2Ugbm8gbG9uZ2VyIG5lZWQgYSBzcGVjaWFsIGNhc2UgZm9yIGNvZGVwYWdlcyBvbiBzdGFydHVwLAoJaW5pdGlhbGl6YXRpb24gaXMgZG9uZSBpbiB0aGUgY29ycmVjdCBvcmRlciBub3cuCgoJKiBkbGxzL3gxMWRydi9jbGlwYm9hcmQuYywgZGxscy94MTFkcnYveGRuZC5jOiBQb3J0YWJpbGl0eSBmaXhlcy4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsX1RoLnJjLCBkbGxzL2NvbWN0bDMyL3JzcmMucmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJQWRkZWQgVGhhaSB0cmFuc2xhdGlvbi4KCgkqIGRsbHMvd3NvY2szMi93c2NvbnRyb2wuaDogSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJUmVtb3ZlZCB1bnVzZWQgc3RydWN0dXJlIGRlY2xhcmF0aW9uLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIHByb2dyYW1zL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy93aW5ldGVzdC8uY3ZzaWdub3JlLCBwcm9ncmFtcy93aW5ldGVzdC9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvbWFpbi5jLCBwcm9ncmFtcy93aW5ldGVzdC9tYWtldGVzdCwKCSAgcHJvZ3JhbXMvd2luZXRlc3Qvc2VuZC5jLCBwcm9ncmFtcy93aW5ldGVzdC91dGlsLmMsCgkgIHByb2dyYW1zL3dpbmV0ZXN0L3dpbmV0ZXN0Lmg6CglKYWtvYiBFcmlrc3NvbiA8amFrb3ZAdm1saW51eC5vcmc+CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRmVyZW5jIFdhZ25lciA8d2ZlcmlAYWZhdmFudC5lbHRlLmh1PgoJTmV3IFdpbmUgdGVzdCBzaGVsbCB1dGlsaXR5LgoKCSogZGxscy9jb21tZGxnL2ZvbnRkbGcuYywgZGxscy9jb21tZGxnL2ZvbnRkbGcxNi5jOgoJUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJVXNlIHRoZSBsZkhlaWdodCBmaWVsZCB0byBpbml0aWFsaXplIHRoZSBmb250IGRpYWxvZydzIHBvaW50IHNpemUuIERvCglub3QgZm9yZ2V0IHRvIHJldHVybiBzb21lIHZhbHVlcyBpbiB0aGUgY2hvb3NlZm9udCBzdHJ1Y3R1cmUgaW4gdGhlIDE2CgliaXQgdmVyc2lvbiBvZiB0aGUgQ2hvb3NlRm9udCBmdW5jdGlvbi4KCgkqIGRsbHMvbmV0YXBpMzIvYXBpYnVmLmMsIGRsbHMvbmV0YXBpMzIvdGVzdHMvYXBpYnVmLmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRml4IE5ldEFwaUJ1ZmZlclJlYWxsb2NhdGUgYW5kIGFkZCBhIGZldyB0ZXN0cyBmb3IgdGhlIGJvcmRlciBjYXNlcwoJKHRoYW5rcyB0byBKdWFuIExhbmcgZm9yIGNsYXJpZmljYXRpb25zKS4KCgkqIHdpbmVkZWZhdWx0LnJlZzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJQWRkIEZvbnRzIGtleSBmb3IgTlQgdmVyc2lvbnMgb2YgV2luZG93cy4KCgkqIGRsbHMva2VybmVsL2NwdS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU9uIGk2ODYsIHJlcG9ydCBwcm9jZXNzb3IgbGV2ZWwgNi4KCjIwMDMtMTItMDMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC9sb2NhbGUuYzoKCUNvbnZlcnRlZCBsb2NhbGUgc2V0dXAgdG8gVW5pY29kZSBzbyB0aGF0IHdlIGRvbid0IHVzZSBjb2RlIHBhZ2VzCgliZWZvcmUgdGhleSBhcmUgaW5pdGlhbGl6ZWQuIEltcHJvdmVkIGVycm9yIHJlcG9ydGluZyBhIGJpdC4KCgkqIHByb2dyYW1zL3JlZ2VkaXQvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3JlZ2VkaXQvbWFpbi5jLAoJICBwcm9ncmFtcy9yZWdlZGl0L21haW4uaDoKCVVzZSBkZWxheWVkIGltcG9ydHMgaW5zdGVhZCBvZiBleHBsaWNpdCBHZXRQcm9jQWRkcmVzcyBjYWxscy4KCgkqIGRsbHMvY29tbWRsZy9jZGxnX0NhLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19Dbi5yYywKCSAgZGxscy9jb21tZGxnL2NkbGdfRGEucmMsIGRsbHMvY29tbWRsZy9jZGxnX0RlLnJjLAoJICBkbGxzL2NvbW1kbGcvY2RsZ19Fbi5yYywgZGxscy9jb21tZGxnL2NkbGdfRXMucmMsCgkgIGRsbHMvY29tbWRsZy9jZGxnX0ZpLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19Gci5yYywKCSAgZGxscy9jb21tZGxnL2NkbGdfSHUucmMsIGRsbHMvY29tbWRsZy9jZGxnX0l0LnJjLAoJICBkbGxzL2NvbW1kbGcvY2RsZ19KYS5yYywgZGxscy9jb21tZGxnL2NkbGdfTmwucmMsCgkgIGRsbHMvY29tbWRsZy9jZGxnX1BsLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19QdC5yYywKCSAgZGxscy9jb21tZGxnL2NkbGdfUnUucmMsIGRsbHMvY29tbWRsZy9jZGxnX1NpLnJjLAoJICBkbGxzL2NvbW1kbGcvY2RsZ19Tay5yYywgZGxscy9jb21tZGxnL2NkbGdfU3YucmMsCgkgIGRsbHMvY29tbWRsZy9jZGxnX1dhLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19aaC5yYywKCSAgZGxscy9jb21tZGxnL2ZvbnRkbGcuYywgZGxscy9jb21tZGxnL2ZvbnRkbGcuaCwKCSAgZGxscy9jb21tZGxnL2ZvbnRkbGcxNi5jOgoJUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJSW1wbGVtZW50IGNvbWJvYm94IHRvIHNlbGVjdCB0aGUgZm9udCdzIGNoYXJhY3RlciBzZXQuCglCdWcgZml4ZXM6IGhhbmRsZSBXTV9NRUFTVVJFSVRFTSBtZXNzYWdlOyBoYW5kbGUgdGhlIFdNX1BBSU5UIG1lc3NhZ2UKCWluIHRoZSAxNmJpdCBmb250IGRpYWxvZywgc28gaXQgZGlzcGxheXMgdGhlIHNhbXBsZSBzdHJpbmcgdG9vLgoKCSogcHJvZ3JhbXMvcnVuZGxsMzIvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3J1bmRsbDMyL3J1bmRsbDMyLmM6CglBZGRlZCBzdXBwb3J0IGZvciBsb2FkaW5nIDE2LWJpdCBkbGxzLgoKCSogZGxscy9udGRsbC9sb2FkZXIuYzoKCVJlbW92ZWQgbm8gbG9uZ2VyIHVzZWQgZXh0cmEgc3BhY2UgYWxsb2NhdGVkIGluIHRoZSBtb2RyZWYgc3RydWN0dXJlLgoKCSogZGxscy9rZXJuZWwvbG9jYWxlLmM6CglSZXZlcnQgY2hhbmdlIGZvciBoYW5kbGluZyB1c2VyIG92ZXJyaWRlcyBhcyBudW1iZXJzIGFuZCByZWltcGxlbWVudAoJaXQgZGlmZmVyZW50bHkuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYzogSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCUFkZGVkIC1sWG11IGFuZCAtbFhpIGZvciBnbHV0IGxpYnJhcnkuCgoJKiBwcm9ncmFtcy9yZWdlZGl0L0VuLnJjLCBwcm9ncmFtcy9yZWdlZGl0L01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy9yZWdlZGl0L2NoaWxkd25kLmMsIHByb2dyYW1zL3JlZ2VkaXQvZWRpdC5jLAoJICBwcm9ncmFtcy9yZWdlZGl0L2ZyYW1ld25kLmMsIHByb2dyYW1zL3JlZ2VkaXQvbWFpbi5jLAoJICBwcm9ncmFtcy9yZWdlZGl0L21haW4uaCwgcHJvZ3JhbXMvcmVnZWRpdC9yZXNvdXJjZS5oLAoJICBwcm9ncmFtcy9yZWdlZGl0L3RyZWV2aWV3LmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQWRkZWQgc3VwcG9ydCBmb3IgZWRpdGluZyBzdHJpbmdzLgoKCSogZGxscy9zaGVsbDMyL2NvbnRyb2wuYywgZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYzoKCUltcGxlbWVudGVkIFJ1bkRMTF9DYWxsRW50cnkxNi4KCgkqIHByb2dyYW1zL2Nsb2NrL21haW4uYywgcHJvZ3JhbXMvY2xvY2svd2luY2xvY2suYywKCSAgcHJvZ3JhbXMvY2xvY2svd2luY2xvY2suaDoKCVJpY2hhcmQgQ29oZW4gPHJpY2hhcmRAZGFpam9idS5jby51az4KCS0gUHJvcGVybHkgZGlzYWJsZSB0aGUgc2Vjb25kIGhhbmQuCgktIFJlbW92ZSB1bm5lZWRlZCAjaW5jbHVkZSAid2lubmxzIiwgI2RlZmluZSBNSU4uCgktIEdldCB0aGUgZGlnaXRhbCBjbG9jayB3b3JraW5nLgoKCSogaW5jbHVkZS91cmxtb24uaCwgaW5jbHVkZS91cmxtb24uaWRsOgoJS2lyaWxsIFNtZWxrb3YgPGtpcnJAbGFuZGF1LnBoeXMuc3BidS5ydT4KCUlCaW5kSG9zdCBpbnRlcmZhY2UgYWRkaXRpb25zLgoKCSogaW5jbHVkZS9vY2lkbC5oLCBpbmNsdWRlL29jaWRsLmlkbDoKCUtpcmlsbCBTbWVsa292IDxraXJyQGxhbmRhdS5waHlzLnNwYnUucnU+CglBZGRlZCBJT2JqZWN0V2l0aFNpdGUgaW50ZXJmYWNlLgoKCSogdG9vbHMvd2luZWdjYy93aW5ld3JhcC5jOiBSaWNoYXJkIENvaGVuIDxyaWNoYXJkQGRhaWpvYnUuY28udWs+CglTZWFyY2ggZm9yIGxpYnJhcmllcyBpbiB0aGUgb3JkZXIgLSAuc28gLSAuZGVmIC0gLmEKCgkqIHByb2dyYW1zL2Nsb2NrL0RhLnJjLCBwcm9ncmFtcy9jbG9jay9EZS5yYywgcHJvZ3JhbXMvY2xvY2svRW4ucmMsCgkgIHByb2dyYW1zL2Nsb2NrL0VzLnJjLCBwcm9ncmFtcy9jbG9jay9GaS5yYywgcHJvZ3JhbXMvY2xvY2svRnIucmMsCgkgIHByb2dyYW1zL2Nsb2NrL0h1LnJjLCBwcm9ncmFtcy9jbG9jay9JdC5yYywgcHJvZ3JhbXMvY2xvY2svTmwucmMsCgkgIHByb2dyYW1zL2Nsb2NrL1B0LnJjLCBwcm9ncmFtcy9jbG9jay9SdS5yYywgcHJvZ3JhbXMvY2xvY2svU2kucmMsCgkgIHByb2dyYW1zL2Nsb2NrL1NrLnJjLCBwcm9ncmFtcy9jbG9jay9Tdy5yYywgcHJvZ3JhbXMvY2xvY2svVGgucmMsCgkgIHByb2dyYW1zL2Nsb2NrL1dhLnJjLCBwcm9ncmFtcy9jbG9jay9aaC5yYywKCSAgcHJvZ3JhbXMvY2xvY2svY2xvY2tfcmVzLmgsIHByb2dyYW1zL2Nsb2NrL2xhbmd1YWdlLmMsCgkgIHByb2dyYW1zL2Nsb2NrL21haW4uYywgcHJvZ3JhbXMvY2xvY2svbWFpbi5oLCBwcm9ncmFtcy9jbG9jay9yc3JjLnJjOgoJUmljaGFyZCBDb2hlbiA8cmljaGFyZEBkYWlqb2J1LmNvLnVrPgoJLSBVc2UgcmVzb3VyY2UgaWRzIElETV8qLCBJRFNfKiBpbnN0ZWFkIG9mIG51bWJlcnMuCgktIE1vdmUgLi4uIGZyb20gdG9wbGV2ZWwgIkluZm8uLi4iIG9udG8gc3ViIGl0ZW1zIChlZyAiQWJvdXQiKS4KCgkqIG9iamVjdHMvcGVuLmM6IEFuZHJldyBkZSBRdWluY2V5IDxhZHFfZHZiQGxpZHNraWFsZi5uZXQ+CglDaGVjayBicnVzaCBzdHlsZSBiZWZvcmUgcHJpbnRpbmcgRklYTUUuCgoJKiBjb250cm9scy9zY3JvbGwuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCU9ubHkgaG9ub3VyIFNCU19TSVpFQk9YKkFMSUdOIHN0eWxlcyBpZiBTQlNfU0laRXtHUklQLEJPWH0gaXMgc2V0LgoKCSogREVWRUxPUEVSUy1ISU5UUzogVG9tIFdpY2tsaW5lIDx0d2lja2xpbmVAc2t5YmVzdC5jb20+CglVcGRhdGVkLgoKMjAwMy0xMi0wMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHByb2dyYW1zL2F2aXRvb2xzL01ha2VmaWxlLmluLCBwcm9ncmFtcy9hdml0b29scy9hdmlpbmZvLmMsCgkgIHByb2dyYW1zL2F2aXRvb2xzL2F2aXBsYXkuYywgcHJvZ3JhbXMvYXZpdG9vbHMvaWNpbmZvLmM6CglVc2Ugbm9ybWFsIGRsbCBpbXBvcnRzIGluc3RlYWQgb2YgR2V0UHJvY0FkZHJlc3MgaGFja3MuCgoJKiBjb250cm9scy9saXN0Ym94LmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglJbnZhbGlkYXRlIGl0ZW1zIG9uIHNldCBzZWxlY3Rpb24uCgoJKiBjb250cm9scy9zY3JvbGwuYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglTb21lIHN1cHBvcnQgZm9yIFNCU19TSVpFR1JJUC4KCgkqIGRsbHMvb3BlbmdsMzIvd2dsLmM6IERhbmllbCBTa29ya2EgPHNrb3JrYUBnbXgubmV0PgoJRml4ZWQgYSBwcm9ibGVtIHVzaW5nIGdsWEdldFByb2NBZGRyZXNBUkIgd2l0aCBiYWQgT3BlbkdMIGxpYnMuCgoJKiBmaWxlcy9maWxlLmM6IFJlbW92ZWQgbm8gbG9uZ2VyIG5lZWRlZCBkbGwgc2VwYXJhdGlvbiBoYWNrLgoKCSogZGxscy9rZXJuZWwvY29tbS5jLCBkbGxzL2tlcm5lbC9zeW5jLmMsIGRsbHMvd2luZWRvcy9pbnQxMy5jLAoJICBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGZpbGVzL2ZpbGUuYywgaW5jbHVkZS9maWxlLmg6CglVc2Ugd2luZV9zZXJ2ZXJfcmVsZWFzZV9mZCgpIGluc3RlYWQgb2YgY2xvc2UoKSBldmVyeXdoZXJlIHdlIHVzZQoJd2luZV9zZXJ2ZXJfaGFuZGxlX3RvX2ZkKCkuCglBIGZldyBtaW5vciB3aW5zb2NrIGNsZWFudXBzLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvZ2x1dDMyLy5jdnNpZ25vcmUsCgkgIGRsbHMvZ2x1dDMyL01ha2VmaWxlLmluLCBkbGxzL2dsdXQzMi9nbHV0LmMsIGRsbHMvZ2x1dDMyL2dsdXQzMi5zcGVjLAoJICBkbGxzL21ha2VfZGxsczoKCUphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglBZGRlZCBnbHV0MzIgZGxsLgoKCSogcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbnNvbGUuYzoKCVBldGVyIEJlcmcgTGFyc2VuIDxwZWJsQG1hdGgua3UuZGs+CgktIHRoZSBsYXN0IGV2ZW50IHdhcyBub3QgbG9va2VkIGF0IHdoZW4gY29tcHJlc3NpbmcgY29uc29sZSBldmVudHMKCS0gYmV0dGVyIGNvbXByZXNzaW9uIGZvciBVUERBVEVfRVZFTlRzIGFzIHRoZXkgYXJlIG5vdCBpbmZsdWVuY2VkIGJ5CgkgIENVUlNPUl9QT1Mgb3IgQ1VSU09SX0dFT00KCS0gYWRkZWQgZGVidWcgdHJhY2VzCgoJKiBkbGxzL29sZWF1dDMyL2hhc2guYzogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUFkZCBoYXNoIHRhYmxlcyBmb3IgYWxsIHN1cHBvcnRlZCBsYW5ndWFnZXMuCglSZW1vdmUgc29tZSB1c2VsZXNzIGluY2x1ZGVzLgoKCSogZGxscy9hZHZhcGkzMi9hZHZhcGkzMi5zcGVjLCBkbGxzL2FkdmFwaTMyL3NlcnZpY2UuYywKCSAgaW5jbHVkZS93aW5zdmMuaDoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVN0dWIgaW1wbGVtZW50YXRpb25zIGZvciBDaGFuZ2VTZXJ2aWNlQ29uZmlnQS9XLgoJSW1wbGVtZW50IENyZWF0ZVNlcnZpY2VXIGFuZCBjYWxsIGl0IGZyb20gQ3JlYXRlU2VydmljZUEuCglQYXJ0aWFsIGltcGxlbWVudGF0aW9uIG9mIFF1ZXJ5U2VydmljZUNvbmZpZ1cuCgoJKiBkbGxzL2NyeXB0MzIvY3J5cHQzMi5zcGVjLCBkbGxzL2NyeXB0MzIvbWFpbi5jLCBpbmNsdWRlL3dpbmNyeXB0Lmg6CglUaG9tYXMgQnJpeCBMYXJzZW4gPGtpbGxhckBnZXQybmV0LmRrPgoJQWRkZWQgc3R1YiBmb3IgQ3J5cHRQcm90ZWN0RGF0YSwgc28gcHJvZ3JhbXMgbGlrZSBTa3lwZSBjYW4gc3RhcnQuCgoJKiBkbGxzL3dpbm1tL21tc3lzdGVtLmMsIGRsbHMvd2lubW0vdGltZS5jLCBkbGxzL3dpbm1tL3dpbmVtbS5oOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglNb3ZlIHVzYWdlIG9mIDE2IGJpdCBzcGVjaWZpYyBmdW5jdGlvbnMgKE1hcFNMKSBpbiAxNiBiaXQgY29kZSBvbmx5LgoKCSogZGxscy9jb21jdGwzMi90YWIuYywgZGxscy9jb21jdGwzMi90ZXN0cy90YWIuYzoKCVZpdGFsaXkgTWFyZ29sZW4gPHdpbmUtcGF0Y2hAa2lldmluZm8uY29tPgoJLSBGaXggZHJhd2luZyBvZiBIb3RUcmFja2VkIHRhYnMgJiBidXR0b25zLgoJLSBNb3JlIHRhYiBzaXplIGZpeGVzIGluIGRpZmZlcmVudCBzdHlsZXMuCgktIERvbid0IHVzZSBuZXcgcGFkZGluZyB1bnRpbCBzdHlsZSBjaGFuZ2VzLgoJLSBGaXggbGVmdCBhbGlnbm1lbnQgb2YgbGFiZWxzICZ8IGljb25zLgoJLSBEb24ndCBkcmF3IG92ZXIgVXBEb3duIGNvbnRyb2wuCgktIEZ1bGx5IGVyYXNlIHRhYnMgd2hlbiBzY3JvbGxpbmcuCgktIE1vcmUgdGVzdHMuCgoyMDAzLTEyLTAxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9udGRsbC9maWxlLmMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy9udGRsbC9zZXJ2ZXIuYywKCSAgZGxscy9udGRsbC92aXJ0dWFsLmMsIGZpbGVzL3NtYi5jLCBmaWxlcy9zbWIuaCwgaW5jbHVkZS9hc3luYy5oLAoJICBpbmNsdWRlL3dpbmUvc2VydmVyLmgsIHNlcnZlci9mZC5jOgoJQWRkZWQgd2luZV9zZXJ2ZXJfcmVsZWFzZV9mZCBmdW5jdGlvbiB0byByZWxlYXNlIHRoZSBmZCByZXR1cm5lZCBieQoJd2luZV9zZXJ2ZXJfaGFuZGxlX3RvX2ZkLiBGaXhlZCBhIGNvdXBsZSBvZiBwb3RlbnRpYWwgZmQgbGVha3MuCgoJKiBkbGxzL250ZGxsL3JlbGF5LmM6CglBbGxvdyBSRUxBWV9TZXR1cERMTCB0byBiZSBjYWxsZWQgdHdpY2Ugb24gdGhlIHNhbWUgZGxsLgoKCSogZGxscy9rZXJuZWwva2VybmVsX3ByaXZhdGUuaCwgZGxscy9rZXJuZWwvbGNmb3JtYXQuYywKCSAgZGxscy9rZXJuZWwvdGltZS5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUZhaWwgR2V0Q2FsZW5kYXJJbmZvQSBmb3IgVW5pY29kZS1vbmx5IGxvY2FsZXMuCgoJKiBkbGxzL2tlcm5lbC9sb2NhbGUuYzogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUFsbG93IHVzZXIgb3ZlcnJpZGRlbiBsb2NhbGUgZGF0YSB0byBiZSByZXRyaWV2ZWQgYXMgbnVtYmVycy4KCgkqIGRsbHMvY29tbWRsZy9jb2xvcmRsZy5jLCBkbGxzL2NvbW1kbGcvY29sb3JkbGcuaCwKCSAgZGxscy9jb21tZGxnL2NvbG9yZGxnMTYuYzoKCVN0ZXZlbiBFZHdhcmRzIDxzdGV2ZW5fZWQ0MTUzQHlhaG9vLmNvbT4KCVNwbGl0IHRoZSBXaW4xNi8zMiBjb2xvciBkaWFsb2cgYnkgZHVwbGljYXRpbmcgdHdvIGludGVybmFsCglmdW5jdGlvbnMuCgoJKiBwcm9ncmFtcy9jbG9jay9UaC5yYywgcHJvZ3JhbXMvbm90ZXBhZC9UaC5yYywKCSAgcHJvZ3JhbXMvbm90ZXBhZC9yc3JjLnJjOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCVRoYWkgdHJhbnNsYXRpb24gb2Ygbm90ZXBhZC4gRml4IHNwZWxsaW5nIGluIGNsb2NrIHRyYW5zbGF0aW9ucy4KCgkqIGRsbHMvZ2RpL2dkaTMyLnNwZWMsIG9iamVjdHMvZW5obWV0YWZpbGUuYzoKCUh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgQ29weUVuaE1ldGFGaWxlVy4KCgkqIGRsbHMvY29tbWRsZy9jZGxnX0VuLnJjOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJU3BlbGxpbmcvR3JhbW1hciBmaXhlcy4KCgkqIGRsbHMvY29tbWRsZy9mb250ZGxnLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCUFkZCBzYW1wbGUgdGV4dHMgZm9yIGFsbCBtaXNzaW5nIGNoYXJhY3RlciBzZXRzIChvciBleHBsYWluIHdoeSBzb21lCglkb24ndCBoYXZlIGl0KS4gUHV0IHRoZSBjb21wbGV0ZSB0ZXh0IGluIG9uZSBwbGFjZSBhbmQgcmVtb3ZlIHRoZSBnbHVlCgljb2RlLiBDaGFuZ2UgdGhlIDJEIGFycmF5IHRoYXQgaG9sZHMgdGhlIHRleHRzIGJ5IGEgYXJyYXkgb2YgcG9pbnRlcgoJdG8gMUQgY2hhcmFjdGVyIGFycmF5cyB0byBzYXZlIHNwYWNlLgoKCSogaW5jbHVkZS9tc2kuaCwgaW5jbHVkZS9tc2lxdWVyeS5oOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRGVjbGFyZSBzb21lIE1TSSBmdW5jdGlvbnMuCgoJKiBkbGxzL3dpbm1tL2xvbHZsZHJ2LmMsIGRsbHMvd2lubW0vbW1zeXN0ZW0uYywgZGxscy93aW5tbS93aW5lbW0uaCwKCSAgZGxscy93aW5tbS93aW5tbS5jOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglNb3ZlIHVzYWdlIG9mIDE2IGJpdCBzcGVjaWZpYyBmdW5jdGlvbnMgKE1hcFNMKSBpbiAxNiBiaXQgY29kZSBvbmx5LgoKCSogZGxscy93aW5lZG9zL3RpbWVyLmM6IEp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCUFkZCB1cHBlciBsaW1pdCBmb3IgdGhlIG51bWJlciBvZiBwZW5kaW5nIHRpbWVyIGludGVycnVwdHMuCglDaGVjayBpZiB0aW1lciBoYXMgYmVlbiBzdHVjayBhbmQgaXNzdWUgYW4gZXJyb3IgdG8gdXNlci4KCUZpeCBoYW5kbGluZyBvZiB0aW1lciBwZXJpb2QgemVyby4KCgkqIGRsbHMvb2xlYXV0MzIvdG1hcnNoYWwuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglVc2UgY29ycmVjdCBwb2ludGVyIGZvciBTeXNGcmVlU3RyaW5nLgoKCSogZGxscy9kZXZlbnVtL2RldmVudW0ucmMsIGRsbHMvbXNkbW8vcnNyYy5yYzoKCVRvbSBXaWNrbGluZSA8dHdpY2tsaW5lQHNreWJlc3QuY29tPgoJVXNlIHRoZSBzYW1lIHZlcnNpb24gZm9ybWF0IGZvciBhbGwgRFggZGxscy4KCgkqIGluY2x1ZGUvd2luZ2RpLmg6IEtpcmlsbCBTbWVsa292IDxraXJyQGxhbmRhdS5waHlzLnNwYnUucnU+CglBZGRlZCBTZXREQ1BlbkNvbG9yIHByb3RvdHlwZS4KCgkqIGRsbHMvcHNhcGkvcHNhcGkuc3BlYywgZGxscy9wc2FwaS9wc2FwaV9tYWluLmM6CglLZXZpbiBLb2x0emF1IDxrZXZpbkBwbG9wLm9yZz4KCUV4cG9ydCBRdWVyeVdvcmtpbmdTZXQuCgoyMDAzLTExLTMwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogcHJvZ3JhbXMvTWFrZWZpbGUuaW4sIHByb2dyYW1zL21ha2VfcHJvZ3M6CglBZGRlZCBtYWtlX3Byb2dzIHRvb2wgdG8gZ2VuZXJhdGUgdGhlIHByb2dyYW1zIG1ha2VmaWxlLgoJQ3JlYXRlIHN5bWxpbmtzIGZvciBhbGwgdGhlIFdpbmVsaWIgYXBwcy4KCgkqIGRsbHMvaXBobHBhcGkvaWZlbnVtLmMsIGRsbHMvaXBobHBhcGkvaWZlbnVtLmgsCgkgIGRsbHMvaXBobHBhcGkvaXBobHBhcGlfbWFpbi5jOgoJSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJLSBmaXhlcyB0aHJlYWQgc2FmZXR5IGlzc3VlcwoJLSBmaXhlcyBwcm9ibGVtcyB3aXRoIG5vbi1JUCAoZS5nLiBJUFgpIGFkZHJlc3NlcwoJLSB1cGRhdGVzIGNvbW1lbnRzIHRvIHJlZmxlY3Qgd2luc29jaywgbmV0YXBpMzIgY2hhbmdlcwoKCSogZGxscy9hdmlmaWwzMi9yc3JjLnJjLCBkbGxzL2NvbWN0bDMyL3JzcmMucmMsCgkgIGRsbHMvY29tbWRsZy9jZGxnX3h4LnJjLCBkbGxzL2RldmVudW0vZGV2ZW51bS5yYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfeHgucmMsIGRsbHMvc2hlbGwzMi92ZXJzaW9uLnJjLAoJICBkbGxzL3NoZWxsMzIvdmVyc2lvbjE2LnJjLCBpbmNsdWRlL3dpbmUvd2luZV9jb21tb25fdmVyLnJjOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUEgZ2VuZXJhbCBjbGVhbnVwIG9mIHRoZSB2ZXJzaW9uIHJlc291cmNlcyBpbiBXaW5lIERMTHMuCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmM6IEp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCVJlbW92ZWQgYW5ub3lpbmcgbWVzc2FnZSBhYm91dCBtaXNzaW5nIGVudHJ5IGluIC9ldGMvc2VydmljZXMuCgoJKiBwcm9ncmFtcy93aW5lZGJnL2RlYnVnLmw6IEFuZHJldyBkZSBRdWluY2V5IDxhZHFfZHZiQGxpZHNraWFsZi5uZXQ+CglGaXhlZCBvbmUgbW9yZSBIZWFwUmVBbGxvYyBjYWxsLgoKCSogcHJvZ3JhbXMvY2xvY2svbGFuZ3VhZ2UuYywgcHJvZ3JhbXMvY2xvY2svbGFuZ3VhZ2UuaCwKCSAgcHJvZ3JhbXMvY2xvY2svbWFpbi5jLCBwcm9ncmFtcy9jbG9jay9tYWluLmg6CglSaWNoYXJkIENvaGVuIDxyaWNoYXJkQGRhaWpvYnUuY28udWs+CglSZW1vdmUgc29tZSB1bnVzZWQgY29kZS4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBwcm9ncmFtcy9NYWtlZmlsZS5pbiwgdG9vbHMvbWFrZV9kZWJ1ZzoKCVJlbW92ZWQgc29tZSBubyBsb25nZXIgdXNlZCBwcm9ncmFtcy4KCgkqIGRvY3VtZW50YXRpb24vYnVncy5zZ21sOiBCcmlhbiBWaW5jZW50IDx2aW5uQHRoZXNoZWxsLmNvbT4KCVJlcGxhY2Ugc29tZSBvYnNvbGV0ZSByZXNvdXJjZXMgd2l0aCBuZXdlciBvbmVzLgoKCSogb2JqZWN0cy9kYy5jOiBSaWNoYXJkIENvaGVuIDxyaWNoYXJkQGRhaWpvYnUuY28udWs+CglBZGRlZCBtaXNzaW5nIEdESV9SZWxlYXNlT2JqKCkgdG8gR2V0RENCcnVzaENvbG9yICYgR2V0RENQZW5Db2xvci4KCgkqIGluY2x1ZGUvd2luZS93aW5lX2NvbW1vbl92ZXIucmMsIHByb2dyYW1zL3JlZ3N2cjMyL3JlZ3N2cjMyLnJjOgoJU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtTGluZS5jb20+CglDaGFuZ2VkIHRoZSB2ZXJzaW9uIHJlc291cmNlIHRvIGJlIGNyZWF0ZWQgaW4gdGhlIGNvbW1vbiB3YXkuCgoyMDAzLTExLTI5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9udGRsbC9ydGxiaXRtYXAuYzoKCUZpeGVkIGJpdG1hcCByYW5nZSBjaGVja2luZyB0byBhdm9pZCBpbnRlZ2VyIG92ZXJmbG93cy4KCgkqIGRsbHMvbmV0YXBpMzIvTWFrZWZpbGUuaW4sIGRsbHMvbmV0YXBpMzIvbmJjbWRxdWV1ZS5jLAoJICBkbGxzL25ldGFwaTMyL25iY21kcXVldWUuaCwgZGxscy9uZXRhcGkzMi9uYm5hbWVjYWNoZS5jLAoJICBkbGxzL25ldGFwaTMyL25ibmFtZWNhY2hlLmgsIGRsbHMvbmV0YXBpMzIvbmJ0LmMsCgkgIGRsbHMvbmV0YXBpMzIvbmV0YXBpMzIuYywgZGxscy9uZXRhcGkzMi9uZXRiaW9zLmMsCgkgIGRsbHMvbmV0YXBpMzIvbmV0Ymlvcy5oLCBkbGxzL25ldGFwaTMyL3drc3RhLmMsIGluY2x1ZGUvbG13a3N0YS5oLAoJICBpbmNsdWRlL25iMzAuaDoKCUp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCUltcGxlbWVudGVkIGEgbG90IG9mIE5ldGJpb3MoKS4KCjIwMDMtMTEtMjggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2NvbW1kbGcvZm9udGRsZy5jOiBSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglSZW1lbWJlciAoZG8gbm90IHJlc2V0KSAgZm9udCBzaXplIGFuZCBzdHlsZSBwYXJhbWV0ZXJzIGluIHRoZSBpbml0aWFsCglkaWFsb2cgYW5kIHdoZW4gYW5vdGhlciBmb250IGlzIHNlbGVjdGVkLgoKCSogZGxscy9jb21tZGxnL2ZvbnRkbGcuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJRml4IGEgYnVnIGluIHRoZSB0ZXN0IGZvciBpdGFsaWMgZm9udCBzdHlsZSBwcm9wZXJ0eS4KCgkqIGRvY3VtZW50YXRpb24vcnVubmluZy5zZ21sOiBNaWtlIEhlYXJuIDxtaWtlQHRoZW9yZXRpYy5jb20+CglVcGRhdGUgZGVidWcgY2hhbm5lbCBsaXN0LgoKCSogZGxscy9udGRsbC9wYXRoLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglPbmx5IGNvbnZlcnQgJy8ncyB0byAnXFwncyB1cCB0byB0aGUgJ1wwJyBhcyB0aGUgcmVzdCBvZiB0aGUgYnVmZmVyCgltYXkgbm90IGJlIGluaXRpYWxpemVkIChmb3VuZCBieSBWYWxncmluZCkuCgoJKiBkbGxzL2NvbW1kbGcvZm9udGRsZy5jOiBSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglUaWR5IHVwIGluZGVudGF0aW9uLgoKCSogZGxscy9vbGVhdXQzMi90ZXN0cy92YXJ0ZXN0LmMsIGRsbHMvc2hsd2FwaS90ZXN0cy9jbHNpZC5jOgoJUG9ydGluZyBmaXhlcy4KCgkqIHNlcnZlci9jbGlwYm9hcmQuYzogY2J0aHJlYWQgYW5kIGNib3duZXIgZG9uJ3QgbmVlZCB0byBiZSBleHBvcnRlZC4KCgkqIGRsbHMvbXN2Y3J0L21hdGguYywgaW5jbHVkZS9tc3ZjcnQvc3RkbGliLmgsIHRvb2xzL3dpbmVidWlsZC9pbXBvcnQuYzoKCUJldHRlciBzdXBwb3J0IGZvciBkaXYgYW5kIGxkaXYgaW4gV2luZWxpYiBhcHBzLgoKCSogd2luZWRlZmF1bHQucmVnOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlIGR1cGxpY2F0ZWQgU2VyaWFsQ29tbSBrZXkuCgoJKiBkbGxzL3dpbnNvY2svTWFrZWZpbGUuaW4sIGRsbHMvd2luc29jay9zb2NrZXQuYywKCSAgZGxscy93aW5zb2NrL3NvY2tldDE2LmMsIGRsbHMvd2luc29jay93aW5zb2NrLnNwZWM6CglNb3ZlZCB0aGUgMTYtYml0IGNvZGUgb3V0IG9mIHNvY2tldC5jIGFuZCBpbnRvIGEgc2VwYXJhdGUgZmlsZS4KCgkqIGRsbHMvd3NvY2szMi9zb2NrZXQuYywgZGxscy93c29jazMyL3dzY29udHJvbC5oOgoJSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJSW1wbGVtZW50IHRoZSBUQ1AgdGFibGUgcXVlcnksIG5ldHN0YXQuZXhlIG5vdyBzaG93cyBUQ1AgbGlzdGVuaW5nIGFuZAoJY29ubmVjdGVkIHNvY2tldHMuCgoJKiBwcm9ncmFtcy9yZWdzdnIzMi8uY3ZzaWdub3JlLCBwcm9ncmFtcy9yZWdzdnIzMi9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvcmVnc3ZyMzIvcmVnc3ZyMzIucmM6CglTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCUFkZGVkIHZlcnNpb24gaW5mbyByZXNvdXJjZS4KCgkqIHRvb2xzL3dpbmVnY2MvTWFrZWZpbGUuaW4sIHRvb2xzL3dpbmVnY2Mvd2luZXdyYXAuYzoKCVJpY2hhcmQgQ29oZW4gPHJpY2hhcmQuY29oZW5AdmlyZ2luLm5ldD4KCS0gQWRkIHN0YW5kYXJkIGRsbCBwYXRoIGxhc3QgaW5zdGVhZCBvZiBmaXJzdC4KCS0gQWRkIHN0YW5kYXJkIGxpYiBwYXRoIGFzIHdlbGwuCgktIFJlbW92ZSAuIGZyb20gZGVmYXVsdCBsaWJyYXJ5IHNlYXJjaCBwYXRoLgoJLSBDb21waWxpbmcgd2l0aCAtbHdpbmUgbmVlZHMgdG8gdXNlIHRoZSBnaXZlbiAtTCBwYXRocy4KCgkqIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYzoKCVJvbGYgS2FsYmVybWF0dGVyIDxyb2xmLmthbGJlcm1hdHRlckBjaXRlbmcuY29tPgoJRml4IHR3byBtZW1vcnkgbGVha3MuIEZvdW5kIGJ5IERpZXRyaWNoIFRlaWNrbmVyLgoKMjAwMy0xMS0yNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCU1lcmdlIHtTZXQsSW5zZXJ0fUl0ZW1bQVddIHRvIHtTZXQsSW5zZXJ0fUl0ZW1ULgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvdW5pY293cy8uY3ZzaWdub3JlLAoJICBkbGxzL3VuaWNvd3MvTWFrZWZpbGUuaW4sIGRsbHMvdW5pY293cy9tYWluLmMsCgkgIGRsbHMvdW5pY293cy91bmljb3dzLnNwZWM6CglBZGRlZCB1bmljb3dzIGRsbCwgYmFzZWQgb24gdGhlIHNwZWMgZmlsZSB3cml0dGVuIGJ5IFNoYWNoYXIgU2hlbWVzaC4KCgkqIGRsbHMva2VybmVsL2NvbXB1dGVybmFtZS5jLCBkbGxzL2tlcm5lbC9maWJlci5jLCBkbGxzL2tlcm5lbC9oZWFwLmMsCgkgIGRsbHMva2VybmVsL2luc3RyLmMsIGRsbHMva2VybmVsL21vZHVsZS5jLCBkbGxzL2tlcm5lbC9wcm9jZXNzLmMsCgkgIGRsbHMva2VybmVsL3Jlc291cmNlMTYuYywgZGxscy9rZXJuZWwvc3RyaW5nLmMsIGRsbHMva2VybmVsL3RocmVhZC5jLAoJICBkbGxzL250ZGxsL2xvYWRlci5jLCBkbGxzL250ZGxsL3Jlc291cmNlLmMsIGRsbHMvcnBjcnQ0L3JwY19zZXJ2ZXIuYywKCSAgZGxscy92ZXJzaW9uL3Jlc291cmNlLmMsIGRsbHMvd2luMzJzL3czMnN5cy5jLCBkbGxzL3dpbmVkb3MvaW50MjUuYywKCSAgZGxscy93aW5lZG9zL2ludDI2LmMsIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jLCBkbGxzL3dpbnNwb29sL2luZm8uYywKCSAgZGxscy94MTFkcnYveHZpZG1vZGUuYywgZmlsZXMvZG9zX2ZzLmMsIGluY2x1ZGUvd2luZS9zZXJ2ZXIuaCwKCSAgbGlicy93aW5lL3BvcnQuYywgcHJvZ3JhbXMvd2luZWNmZy9kcml2ZS5jLCBwcm9ncmFtcy93aW5lZGJnL2RiZy55LAoJICBwcm9ncmFtcy93aW5lZGJnL2RlYnVnZ2VyLmgsIHByb2dyYW1zL3dpbmVkYmcvbXNjLmMsCgkgIHByb2dyYW1zL3dpbmVkYmcvd2luZWRiZy5jOgoJUG9ydGluZyBmaXhlcy4KCgkqIGRsbHMveDExZHJ2L3dpbnBvcy5jOiBSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglJbiBjbGlwX2NoaWxkcmVuKCkgZG9uJ3QgY2xpcCB0aGUgdmlzaWJsZSByZWdpb24gYnkgY2hpbGRyZW4gdGhhdCBoYXZlCglhIFdTX0VYX1RSQU5TUEFSRU5UIHN0eWxlLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOiBVbHJpY2ggQ3pla2FsbGEgPHVscmljaEBjb2Rld2VhdmVycy5jb20+CglJbiBUUkVFVklFV19FbnN1cmVWaXNpYmxlIGhhbmRsZSBjYXNlIHdoZXJlIGZpcnN0VmlzaWJsZSBpcyBOVUxMLgoKMjAwMy0xMS0yNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvdXNlci9jYXJldC5jLCBkbGxzL3VzZXIvZm9jdXMuYywgZGxscy91c2VyL2hvb2suYywKCSAgZGxscy91c2VyL2xzdHIuYywgZGxscy91c2VyL3BhaW50aW5nLmMsIGRsbHMvdXNlci9wcm9wZXJ0eS5jLAoJICBkbGxzL3dpbmVkb3MvZG9zdm0uYywgZGxscy93aW5lZG9zL2ludDIxLmMsIHdpbmRvd3MvY3Vyc29yaWNvbi5jLAoJICB3aW5kb3dzL2RlZnduZC5jLCB3aW5kb3dzL2lucHV0LmMsIHdpbmRvd3MvbWVzc2FnZS5jLAoJICB3aW5kb3dzL3BhaW50aW5nLmMsIHdpbmRvd3MvcXVldWUuYywgd2luZG93cy90aW1lci5jLAoJICB3aW5kb3dzL3dpbnBvcy5jOgoJU3RldmVuIEVkd2FyZHMgPHN0ZXZlbl9lZDQxNTNAeWFob28uY29tPgoJUG9ydGluZyBmaXhlcy4KCgkqIGRsbHMvdXNlci9yZXNvdXJjZS5jOiBKZWZmIE1pbGxlciA8amVmZi1saXN0c0B0YW5uZXIuY29tPgoJTWFzayBvZmYgYml0IDB4ODAgaW4gdGhlIGFjY2VsZXJhdG9yIHRhYmxlIGVudHJ5IGZpZWxkIGZWaXJ0IGlmIGl0J3MKCW5vdCB0aGUgbGFzdCBlbnRyeS4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCU1lcmdlIEdldEl0ZW1bQVddIGludG8gR2V0SXRlbVQuCgoJKiBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci90cmFjZS5jLAoJICBzZXJ2ZXIvd2luZG93LmMsIHdpbmRvd3Mvd2luLmM6CglBZGRlZCBzdXBwb3J0IGZvciBpbnRlci1wcm9jZXNzIEdldFdpbmRvd0xvbmcgb24gdGhlIHdpbmRvdyBleHRyYQoJYnl0ZXMuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglSZWRyYXcgaWYgYm9sZCBzdGF0ZSBjaGFuZ2VzLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6IFJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CgktIEFkZCBzdXBwb3J0IGZvciBUQlNUWUxFX0VYX01JWEVEQlVUVE9OUy4KCS0gQWRkIHN1cHBvcnQgZm9yIFRCU1RZTEVfRVhfSElERUNMSVBQRURCVVRUT05TLgoJLSBSZXBsYWNlICdtYWdpYyBudW1iZXJzJyB3aXRoICNkZWZpbmUnZCBjb25zdGFudHMuCgktIEZpeCBUQk5fSU5JVENVU1RPTUlaRS4KCS0gQWRkIHN1cHBvcnQgZm9yIFRCTl9DVVNUSEVMUCBhbmQgVEJOX1JFU0VULgoJLSBGaXggVEJfU0VURVhURU5ERURTVFlMRSAoaXQgYXBwZWFycyBpdCBzaG91bGQgb3IgdGhlIG5ldyBzdHlsZSwKCSAgcmF0aGVyIHRoYW4gc2V0KS4KCS0gRml4IFRCX1NFVFNUWUxFICh0aGlzIGlzIG1lYW50IHRvIGJlIGZvciBzZXR0aW5nIHRoZSBjb250cm9sIHN0eWxlLAoJICBub3QgdGhlIGJ1dHRvbiBzdHlsZSkuCgoJKiBkbGxzL2F2aWZpbDMyL2F2aWZpbGUuYywgZGxscy9hdmlmaWwzMi93YXZmaWxlLmM6CglNaWNoYWVsIEf8bm5ld2lnIDxNaWNoYWVsR3Vlbm5ld2lnQGdteC5kZT4KCUZpeGVkIG11bHRpcGxlIGJ1Z3MgaW4gRmluZFNhbXBsZSBpbXBsZW1lbnRhdGlvbiBvZiBBVkkgYW5kIFdBViBmaWxlCgloYW5kbGVyLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOiBVbHJpY2ggQ3pla2FsbGEgPHVscmljaEBjb2Rld2VhdmVycy5jb20+CglBbHdheXMgcmVjb21wdXRlIGFuIGl0ZW0ncyB0ZXh0IHdpZHRoIGluIHRoZSBjYXNlIG9mIHRleHQgY2FsbGJhY2tzCglhbmQgd2hlbiBpdHMgYXR0cmlidXRlcyBjaGFuZ2UuCgoJKiBkbGxzL3R0eWRydi90dHlkcnYuc3BlYywgZGxscy94MTFkcnYveDExZHJ2LnNwZWM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRml4IC5zcGVjIGZpbGUgcGFyYW1ldGVycyBmb3IgQ3JlYXRlREMgZHJpdmVyIEFQSS4KCgkqIGRsbHMvbnRkbGwvcmVsYXkuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBhbm90aGVyIFJ0bFJlQWxsb2NhdGVIZWFwIGNhbGwuCgoJKiBpbmNsdWRlL3dpbnVzZXIuaDoKCUZpeGVkIFdJTkVMSUJfTkFNRV9BVyB0eXBvICh0aGFua3MgdG8gUm9iZXJ0IFNoZWFybWFuKS4KCVJlbW92ZWQgZXh0cmEgQnJvYWRjYXN0U3lzdGVtTWVzc2FnZSBwcm90b3R5cGUuCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmg6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglBZGRlZCBhIGZldyBtaXNzaW5nIFRhYkN0cmxfKiBtYWNyb3MuCgoJKiBjb250cm9scy9tZW51LmMsIGRsbHMvdXNlci9jb250cm9scy5oLCB3aW5kb3dzL2RlZnduZC5jLAoJICB3aW5kb3dzL25vbmNsaWVudC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2UgQWx0K1tuYXRpb25hbCBrZXldIG1lbnUgc2hvcnRjdXRzIHdvcmsuCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmgsIGluY2x1ZGUvd2ludXNlci5oLCB3aW5kb3dzL2lucHV0LmM6CglLZXZpbiBLb2x0emF1IDxrZXZpbkBwbG9wLm9yZz4KCUltcGxlbWVudCB0aGUgVE1FX05PTkNMSUVOVCBmbGFnIGluIFRyYWNrTW91c2VFdmVudCB0byBoYW5kbGUKCW5vbmNsaWVudCBob3Zlci8gbGVhdmUgZXZlbnRzLgoKCSogdG9vbHMvYnVnX3JlcG9ydC5wbDogSXZhbiBMZW8gTXVycmF5LVNtaXRoIDxwdW90aUBpbndpbmQuaXQ+CglDaGFuZ2VkIEFkYW0gU2FjYXJueSdzIGVtYWlsLCBhbmQgLWRlYnVnbXNnIHRvIC0tZGVidWdtc2cuCgoJKiBkbGxzL29sZTMyL2lmcy5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJe0dsb2JhbCxMb2NhbH1SZUFsbG9jKCkgZG9lcyBub3QgYWxsb2NhdGUgbWVtb3J5LgoKCSogZGxscy9rZXJuZWwvbmVfbW9kdWxlLmM6CglORV9Mb2FkQnVpbHRpbk1vZHVsZTogcmV0dXJuIGVycm9yIDIxIGlmIHRoZSBtb2R1bGUgd2UgbG9hZGVkIHdhcyBhCgkzMi1iaXQgYnVpbHRpbi4gVGhpcyBzaG91bGQgaGVscCBXaW5FeGVjMTYgdG8gZG8gdGhlIHJpZ2h0IHRoaW5nLgoKCSogaW5jbHVkZS9vbGVkbGcuaCwgaW5jbHVkZS9yYXMuaCwgaW5jbHVkZS92ZncuaCwgaW5jbHVkZS93aW5iYXNlLmgsCgkgIGluY2x1ZGUvd2luY3J5cHQuaCwgaW5jbHVkZS93aW5nZGkuaCwgaW5jbHVkZS93aW5uZXR3ay5oLAoJICBpbmNsdWRlL3dpbm5scy5oOgoJQWRkZWQgbWlzc2luZyBwcm90b3R5cGVzIGZvciBzb21lIGltcGxlbWVudGVkIGZ1bmN0aW9ucy4KCgkqIHByb2dyYW1zL3dpbmVkYmcvZGVidWcubDogRml4ZWQgb25lIG1vcmUgSGVhcFJlQWxsb2MgY2FsbC4KCgkqIGNvbnRyb2xzL21lbnUuYywgZGxscy91c2VyL21zZzE2LmMsIGRsbHMvdXNlci91c2VyMzIuc3BlYywKCSAgaW5jbHVkZS9vbGVpZGwuaCwgaW5jbHVkZS9vbGVpZGwuaWRsLCBpbmNsdWRlL3dpbnVzZXIuaCwKCSAgcHJvZ3JhbXMvcmVnZWRpdC9tYWluLmMsIHByb2dyYW1zL3JlZ2VkaXQvbWFpbi5oLCB3aW5kb3dzL21lc3NhZ2UuYywKCSAgd2luZG93cy93aW4uYzoKCUZpeGVkIGRlY2xhcmF0aW9ucyBvZiBCcm9hZGNhc3RTeXN0ZW1NZXNzYWdlIGFuZCBUcmFuc2xhdGVBY2NlbGVyYXRvcgoJaW4gd2ludXNlci5oLiBBZGRlZCBHZXRXaW5kb3dNb2R1bGVGaWxlTmFtZS4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwgaW5jbHVkZS9zaGVsbGFwaS5oLCBpbmNsdWRlL3NobG9iai5oOgoJTW92ZWQgdGhlIFNoZWxsRXhlY3V0ZUV4IGRlZmluaXRpb25zIHRvIHNoZWxsYXBpLmggd2hlcmUgdGhleSBiZWxvbmcuCgoJKiBBTk5PVU5DRSwgQlVHUywgUkVBRE1FLCBkb2N1bWVudGF0aW9uL1BBQ0tBR0lORywKCSAgZG9jdW1lbnRhdGlvbi9SRUFETUUuZnIsIGRvY3VtZW50YXRpb24vUkVBRE1FLml0LAoJICBkb2N1bWVudGF0aW9uL1JFQURNRS5wdCwgZG9jdW1lbnRhdGlvbi9SRUFETUUucHRfYnIsCgkgIGRvY3VtZW50YXRpb24vYnVncy5zZ21sLCBkb2N1bWVudGF0aW9uL2NvbmZpZ3VyaW5nLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vY3ZzLXJlZ3Jlc3Npb24uc2dtbCwgZG9jdW1lbnRhdGlvbi9kb2N1bWVudGF0aW9uLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vZmFxLnNnbWwsIGRvY3VtZW50YXRpb24vZm9udHMuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9nZXR0aW5nLnNnbWwsIGRvY3VtZW50YXRpb24vaW50cm9kdWN0aW9uLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vdGVzdGluZy5zZ21sLCBkb2N1bWVudGF0aW9uL3dpbmUubWFuLmluLAoJICBkb2N1bWVudGF0aW9uL3dpbmVsaWItYmluZGxscy5zZ21sLCBkb2N1bWVudGF0aW9uL3dpbmVsaWItaW50cm8uc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi93aW5lbGliLXBvcnRpbmcuc2dtbCwgcHJvZ3JhbXMvd2luZWNmZy9Fbi5yYywKCSAgcHJvZ3JhbXMvd2luZWNmZy9Fcy5yYywgcHJvZ3JhbXMvd2luZWNmZy9QdC5yYywKCSAgcHJvZ3JhbXMvd2luZWNmZy9SdS5yYywgcHJvZ3JhbXMvd2luZWNmZy9TaS5yYywgdG9vbHMvYnVnX3JlcG9ydC5wbCwKCSAgdG9vbHMvZ2VucGF0Y2gsIHRvb2xzL3dpbmVidWlsZC93aW5lYnVpbGQubWFuLmluLAoJICB0b29scy93aW5lZHVtcC93aW5lZHVtcC5oLCB0b29scy93aW5laW5zdGFsbCwgdG9vbHMvd21jL3dtYy5tYW4sCgkgIHRvb2xzL3dyYy93cmMubWFuOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCU1ha2UgdGhlIHdpbmVocS5vcmcgZG9tYWluIHRoZSBvZmZpY2lhbCBvbmUuCgoJKiBwcm9ncmFtcy93aW5lbWluZS9Fbi5yYywgcHJvZ3JhbXMvd2luZW1pbmUvRnIucmMsCgkgIHByb2dyYW1zL3dpbmVtaW5lL0l0LnJjLCBwcm9ncmFtcy93aW5lbWluZS9kaWFsb2cuYywKCSAgcHJvZ3JhbXMvd2luZW1pbmUvZGlhbG9nLmgsIHByb2dyYW1zL3dpbmVtaW5lL21haW4uYywKCSAgcHJvZ3JhbXMvd2luZW1pbmUvbWFpbi5oLCBwcm9ncmFtcy93aW5lbWluZS9yZXNvdXJjZS5oLAoJICBwcm9ncmFtcy93aW5lbWluZS9yc3JjLnJjOgoJSm9zaHVhIFRoaWVsZW4gPGpvc2h1YV90aGllbGVuQHlhaG9vLmNvbT4KCUZpeGVkIGluY29ycmVjdCBsYWJlbGluZyBvZiBxdWVzdGlvbiBib3hlcy4KCVJlbW92ZWQgaW5jb3JyZWN0IGVtYWlsIGFkZHJlc3MgaW4gY29weXJpZ2h0LgoKCSogZGxscy93aW5tbS93aW5tbS5jOiBDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglGaXggaGFuZGxpbmcgb2YgdGhlIGxwdURldmljZUlEIGlucHV0IHBhcmFtIGluIE1JRElfU3RyZWFtT3Blbi4KCgkqIGRsbHMvY29tbWRsZy9mb250ZGxnLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCUZpeCAic2FtcGxlIiBib3ggZHJhd2luZyBieSBhZGRpbmcgc29tZSBuZWVkZWQgY29vcmRpbmF0ZSBhbmQgc2l6ZQoJdHJhbnNmb3JtYXRpb25zLgoKCSogZGxscy9nZGkvbWZkcnYvZ3JhcGhpY3MuYywgZGxscy9nZGkvbWZkcnYvaW5pdC5jLAoJICBkbGxzL2dkaS9tZmRydi9tZXRhZmlsZWRydi5oLCBkbGxzL2dkaS9tZmRydi9vYmplY3RzLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglVc2UgdGhlIGhhbmRsZSBkZWxldGlvbiBtZWNoYW5pc20gaW4gd21mcy4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCVVuaWNvZGlmaWNhdGlvbi4gIEJhc2VkIG9uIGEgcGF0Y2ggYnkgQXJpYyBTdGV3YXJ0LgoKCSogTWFrZWZpbGUuaW46IFNoYWNoYXIgU2hlbWVzaCA8d2luZS1wYXRjaGVzQHNoZW1lc2guYml6PgoJRml4IHRoZSBjdGFncyBidWlsZGluZyBjb21tYW5kLgoKCSogZGxscy9vbGUzMi9oZ2xvYmFsc3RyZWFtLmMsIGRsbHMvb2xlMzIvbWVtbG9ja2J5dGVzLmMsCgkgIGRsbHMvb2xlMzIvbWVtbG9ja2J5dGVzMTYuYzoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglGaXggbWVtIGxlYWsgd2hlbiBHbG9iYWxSZUFsbG9jKCkgZmFpbHMuCgoJKiBkbGxzL29sZWF1dDMyL29sZWF1dC5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJU3lzUmVBbGxvY1N0cmluZ0xlbiBpcyBkb2N1bWVudGVkIHRvIHNlZ2ZhdWx0IG9uIE5VTEwgcG9pbnRlci4KCgkqIGRsbHMvb2xlMzIvaWZzLmMsIGRsbHMvb2xlMzIvb2xlMTYuYzoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglGaXggdGhlIElNYWxsb2M6OlJlQWxsb2MoKSB0byBmb2xsb3cgdGhlIGRvY3VtZW50ZWQgYmVoYXZpb3IuCgoyMDAzLTExLTI1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9udGRsbC9sb2FkZXIuYzoKCUJldHRlciBzdXBwb3J0IGZvciBsb2FkaW5nIGV4ZSBmaWxlcyBhcyBsaWJyYXJpZXMuCglNYWtlIHN1cmUga2VybmVsMzIgYW5kIG50ZGxsIGhhdmUgYSBmdWxsIHBhdGggbmFtZSBldmVuIHRob3VnaCB0aGV5CglhcmUgbG9hZGVkIGJlZm9yZSB3ZSBrbm93IHRoZSBzeXN0ZW0gZGlyLgoKCSogZGxscy9nZGkvZW5obWZkcnYvZW5obWV0YWZpbGVkcnYuaCwgZGxscy9nZGkvZW5obWZkcnYvaW5pdC5jLAoJICBkbGxzL2dkaS9lbmhtZmRydi9vYmplY3RzLmMsIGRsbHMvZ2RpL21mZHJ2L2luaXQuYywgaW5jbHVkZS9nZGkuaCwKCSAgb2JqZWN0cy9nZGlvYmouYzoKCUh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglMZXQgZW5obWV0YWZpbGVzIHJldXNlIGdkaSBoYW5kbGVzLiAgVGhpcyB3b3JrcyBieSBhIGRjICdyZWdpc3RlcmluZycKCXdpdGggYW4gb2JqZWN0IHRoYXQgaXQgd2FudHMgdG8ga25vdyB3aGVuIHRoZSBvYmplY3QgaXMgZGVsZXRlZC4gVW50aWwKCXRoZSBkYyBnZXRzIGRlbGV0ZSBub3RpZmljYXRpb24gaXQncyBmcmVlIHRvIGFzc3VtZSB0aGF0IGl0IGRvZXNuJ3QKCW5lZWQgdG8gd3JpdGUgdGhlIGNyZWF0ZSByZWNvcmQgZm9yIHRoYXQgb2JqZWN0IGFnYWluLiAgVXBvbiByZWNlaXZpbmcKCXRoZSBkZWxldGUgbm90aWZpY2F0aW9uIGl0IHdyaXRlcyB0aGUgRGVsZXRlT2JqZWN0IHJlY29yZC4gV2luZG93cwoJc2VlbXMgdG8gZG8gaXQgdGhpcyB3YXkgdG9vLgoKCSogZGxscy9udGRsbC9udGRsbF9taXNjLmgsIGRsbHMvbnRkbGwvc2VydmVyLmMsIGRsbHMvbnRkbGwvdGhyZWFkLmMsCgkgIGluY2x1ZGUvdGhyZWFkLmg6CglTdG9yZSB0aGUgdGhyZWFkIGVudHJ5IHBvaW50IGluIHRoZSBzdGFydHVwIGluZm8gcGFzc2VkIHRvIHRoZSBuZXcKCXRocmVhZCBpbnN0ZWFkIG9mIHRoZSBURUIuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgaW5jbHVkZS9jb25maWcuaC5pbiwgbGlicy9NYWtlbGliLnJ1bGVzLmluLAoJICB0b29scy93aW5lbWFrZXI6CglQaWVycmUgZCdIZXJiZW1vbnQgPHN0ZWdlZmluQGZyZWUuZnI+CglBZGQgRGFyd2luL01hYyBPUyBYIHN1cHBvcnQgdG8gdGhlIGJ1aWxkIHN5c3RlbS4KCgkqIGRsbHMveDExZHJ2L01ha2VmaWxlLmluLCBkbGxzL3gxMWRydi9kaWJfY29udmVydC5jLAoJICBkbGxzL3gxMWRydi9kaWJfZHN0X3N3YXAuYywgZGxscy94MTFkcnYvZGliX3NyY19zd2FwLmMsCgkgIGRsbHMveDExZHJ2L3gxMWRydi5oOgoJSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBzdXBwb3J0IGZvciBkaXNwbGF5IG9mIGRpYnMgb24gTVNCIFhTZXJ2ZXJzLgoKCSogZGxscy93aW5lZG9zL2ludDIxLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglJTlQyMV9HZXRGcmVlRGlza1NwYWNlKCk6IFRoZSBkcml2ZSBwYXJhbWV0ZXIgaXMgZm91bmQgaW4gdGhlIERMCglyZWdpc3Rlci4KCgkqIGRsbHMva2VybmVsL3RocmVhZC5jLCBkbGxzL250ZGxsL2hlYXAuYywgaW5jbHVkZS90aHJlYWQuaCwKCSAgaW5jbHVkZS93aW5iYXNlLmg6CglTdG9yZSB0aGUgbGFzdCBlcnJvciBjb2RlIGF0IHRoZSBURUIgb2Zmc2V0IHVzZWQgYnkgTlQgaW5zdGVhZCBvZiB0aGUKCVdpbjl4IG9uZS4KCgkqIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGRsbHMvd2luZWRvcy9pbnQxMy5jLAoJICBkbGxzL3dpbmVkb3MvaW50MjUuYywgZGxscy93aW5lZG9zL2ludDI2LmMsIGZpbGVzL2RyaXZlLmMsCgkgIGluY2x1ZGUvZHJpdmUuaDoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJR290IHJpZCBvZiBEUklWRV9PcGVuRGV2aWNlLCBhbmQgcmVwbGFjZWQgaXQgd2l0aCBXaW4zMiBlcXVpdmFsZW50cy4KCgkqIGRsbHMvb2xlYXV0MzIvdGVzdHMvdmFydGVzdC5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCVRlc3RzIGZvciB0aGUgbm9uLXZhcmlhbnQgZGF0ZSBjb252ZXJzaW9uIGZ1bmN0aW9ucy4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJSW1wcm92ZS9zaHJpbmsgdmFyaWFudCBkdW1waW5nIGNvZGUuCgoJKiBkbGxzL29sZWF1dDMyL01ha2VmaWxlLmluLCBkbGxzL29sZWF1dDMyL29sZWF1dDMyLnNwZWMsCgkgIGRsbHMvb2xlYXV0MzIvdmFyZm9ybWF0LmMsIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUltcGxlbWVudGVkIHRoZSB2YXJpYW50IGZvcm1hdHRpbmcgZnVuY3Rpb25zLgoJQm9vbC0+YnN0ciBtYWtlcyBhIG51bWJlciBzdHIgdW5sZXNzIFtBTFBIQXxMT0NBTF1CT09MIGlzIHBhc3NlZC4KCgkqIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5oOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJTWFjcm9zIGZvciBkdW1waW5nIGEgdmFyaWFudHMgdHlwZSBhbmQgZmxhZ3MuCglGaXggdGhlIGRhdGUgaW5saW5lcy4KCVJvdW5kIG5lZ2F0aXZlIG51bWJlcnMgd2l0aCBmcmFjdGlvbmFsIHBhcnRzID4gMC41IGNvcnJlY3RseS4KCgkqIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5oOiBWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglVbmRlZmluZSBGQVIgdG8gYXZvaWQgY29uZmxpY3Qgd2l0aCBzc2wuaC4KCgkqIHRvb2xzL2J1Z19yZXBvcnQucGw6IEl2YW4gTGVvIE11cnJheS1TbWl0aCA8cHVvdGlAaW53aW5kLml0PgoJQWRkZWQgd2ludmVyIGluZm9ybWF0aW9uIGZvciB3aW5kb3dzIG1lIGFuZCB3aW5kb3dzIHNlcnZlciAyMDAzLgoJVXBkYXRlZCBkYXRlIGZvcm1hdCBmcm9tIFlZTU1ERCB0byBZWVlZTU1ERC4KCUNoYW5nZWQgYSBmZXcgb3V0cHV0IG1lc3NhZ2VzIHNvIHRoZXkgYXJlIG1vcmUKCWludHVpdGl2ZS9jb25zdHJ1Y3RpdmUvdXAgdG8gZGF0ZS4KCgkqIGRsbHMvb2xlYWNjL21haW4uYywgZGxscy9vbGVhY2Mvb2xlYWNjLnNwZWM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglTdHViIGltcGxlbWVudGF0aW9uIGZvciBDcmVhdGVTdGRBY2Nlc3NpYmxlT2JqZWN0LgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCVVzZSBidXR0b24gZmFjZSBjb2xvciBmb3IgdGhlIGltYWdlIG1hc2sgd2hlbiBhZGRpbmcgYSBiaXRtYXAgdG8gdGhlCgl0b29sYmFyLCBub3QgdGhlIGNvbG9yIG9mIHRoZSB0b3AgbGVmdCBwaXhlbCBvZiB0aGUgaW1hZ2UuCgoJKiBkbGxzL2tlcm5lbC9uZV9tb2R1bGUuYywgZGxscy9rZXJuZWwvcHJvY2Vzcy5jLCBkbGxzL250ZGxsL2xvYWRlci5jLAoJICBkbGxzL250ZGxsL2xvYWRvcmRlci5jLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGluY2x1ZGUvbW9kdWxlLmg6CglSZW1vdmVkIE1PRFVMRV9HZXRMb2FkT3JkZXJBLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvLmN2c2lnbm9yZSwgZGxscy9rZXJuZWwvdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMva2VybmVsL3Rlc3RzL2hlYXAuYywgZGxscy9udGRsbC9oZWFwLmMsCgkgIGRsbHMvbnRkbGwvdGVzdHMvTWFrZWZpbGUuaW46CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJUnRsSGVhcFJlQWxsb2NhdGUoKSBzaG91bGQgbm90IGFsbG9jYXRlIG1lbW9yeS4KCUFkZCBzbWFsbCB0ZXN0IHRvIG1ha2Ugc3VyZSBpdCBkb2Vzbid0IHJldHVybi4KCURvbid0IGltcG9ydCBudGRsbCBmb3IgdGVzdHMsIHdlIG5lZWQgdG8gbG9hZCBpdCBkeW5hbWljYWxseS4KCgkqIGRsbHMvbXNkbW8vTWFrZWZpbGUuaW4sIGRsbHMvbXNkbW8vZG1vcmVnLmMsIGluY2x1ZGUvbWVkaWFvYmouaDoKCVVscmljaCBDemVrYWxsYSA8dWxyaWNoQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudGVkIERNT1JlZ2lzdGVyLCBETU9VbnJlZ2lzdGVyLCBETU9HZXROYW1lLCBETU9FbnVtLgoKCSogZGxscy9rZXJuZWwva2VybmVsX21haW4uYywgZGxscy9rZXJuZWwvbmVfbW9kdWxlLmMsCgkgIGRsbHMva2VybmVsL25lX3NlZ21lbnQuYywgZGxscy9rZXJuZWwvcmVzb3VyY2UxNi5jLAoJICBkbGxzL2tlcm5lbC90YXNrLmMsIGRsbHMva2VybmVsL3RodW5rLmMsIGRsbHMva2VybmVsL3dvd3RodW5rLmMsCgkgIGRsbHMvdXNlci91c2VyMTYuYywgZGxscy93aW5lZG9zL2ludDIxLmMsIGRsbHMvd2luZWRvcy9pbnQzMS5jLAoJICBkbGxzL3dpbmVkb3MvaW50ZXJydXB0cy5jLCBkbGxzL3dpbmVkb3MvbW9kdWxlLmMsIGRsbHMvd2luZWRvcy92eGQuYywKCSAgZmlsZXMvZHJpdmUuYywgaW5jbHVkZS9tb2R1bGUuaCwgaW5jbHVkZS90YXNrLmgsCgkgIGluY2x1ZGUvd2luZS93aW5iYXNlMTYuaDoKCVJlbW92ZWQgdGFzay5oLgoKCSogZGxscy9rZXJuZWwvY3B1LmMsIGRsbHMva2VybmVsL2xjZm9ybWF0LmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJRG9jdW1lbnRhdGlvbiB1cGRhdGVzCgoJKiBwcm9ncmFtcy9jbG9jay9UaC5yYywgcHJvZ3JhbXMvY2xvY2svcnNyYy5yYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglUaGFpIGxhbmd1YWdlIHRyYW5zbGF0aW9uLgoKCSogZGxscy9hdmlmaWwzMi9lZGl0c3RyZWFtLmM6CglNaWNoYWVsIEf8bm5ld2lnIDxNaWNoYWVsR3Vlbm5ld2lnQGdteC5kZT4KCUltcGxlbWVudGVkIElBVklFZGl0U1RyZWFtX2ZuUGFzdGUgbWV0aG9kLgoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLCBkbGxzL2RkcmF3L2dsX2FwaS5oLAoJICBkbGxzL2RkcmF3L2dsX3ByaXZhdGUuaCwgZGxscy9kZHJhdy9tZXNhX3ByaXZhdGUuaDoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglVc2UgdmVydGV4IGFycmF5cyB3aGVuIHBvc3NpYmxlLgoKCSogb2JqZWN0cy9nZGlvYmouYzogSGlyb3NoaSBJbm91ZSA8aW5vdWVoQHVyYW51cy5kdGkubmUuanA+CglGaXggdGhlIG5hbWUgb2YgSmFwYW5lc2UgZGVmYXVsdCBHdWlGb250LgoKCSogaW5jbHVkZS9sbWFjY2Vzcy5oOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBzb21lIHN0cnVjdHVyZXMgdXNlZCBieSBOZXRVc2VyTW9kYWxzR2V0LgoKMjAwMy0xMS0yMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL2tlcm5lbC9wcm9jZXNzLmMsCgkgIGluY2x1ZGUvd2luZS9saWJyYXJ5LmgsIGxpYnMvd2luZS9wb3J0LmMsIGxvYWRlci9NYWtlZmlsZS5pbiwKCSAgbG9hZGVyL21haW4uYzoKCUNyZWF0ZSBhIGh1Z2UgYXJyYXkgaW4gYnNzIHRvIHJlc2VydmUgdGhlIG1lbW9yeSBhcmVhIHdlIG5lZWQgZm9yIFBFCgliaW5hcmllcywgdG8gcHJldmVudCBleGVjIHNoaWVsZCBmcm9tIG1hcHBpbmcgc3lzdGVtIGxpYnJhcmllcyB0aGVyZS4KCgkqIGRsbHMva2VybmVsL2xvY2FsZS5jLCBkbGxzL2tlcm5lbC90ZXN0cy9sb2NhbGUuYywKCSAgZGxscy9zaGx3YXBpL3N0cmluZy5jLCBkbGxzL3NobHdhcGkvdGVzdHMvc3RyaW5nLmMsCgkgIGluY2x1ZGUvd2luZS91bmljb2RlLmgsIGxpYnMvdW5pY29kZS9zb3J0a2V5LmMsCgkgIGxpYnMvdW5pY29kZS9zdHJpbmcuYywgbGlicy91bmljb2RlL3dpbmVfdW5pY29kZS5kZWY6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJTW92ZSBDb21wYXJlU3RyaW5nIGltcGxlbWVudGF0aW9uIHRvIGxpYndpbmVfdW5pY29kZSwgYWRkIGEgYnVuY2ggb2YKCUNvbXBhcmVTdHJpbmcgdGVzdHMuCgoyMDAzLTExLTIxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy93aW5tbS9tY2lhdmkvbW1vdXRwdXQuYzogRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglIZWFwUmVBbGxvYyBkb2Vzbid0IGFsbG9jYXRlIG1lbW9yeS4KCgkqIGRsbHMvbnRkbGwvZmlsZS5jOiBSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJSGFuZGxlIEVJTyBmaWxlIGVycm9yLgoKCSogZGxscy9ycGNydDQvcnBjX3NlcnZlci5jLCBkbGxzL3JwY3J0NC9ycGNydDQuc3BlYywgaW5jbHVkZS9ycGNkY2UuaDoKCUdyZWdvcnkgTS4gVHVybmVyIDxnbXR1cm5lcjAwN0BhbWVyaXRlY2gubmV0PgoJSW1wbGVtZW50ZWQgUnBjT2JqZWN0U2V0VHlwZS4KCgkqIGRsbHMveDExZHJ2L01ha2VmaWxlLmluLCBkbGxzL3gxMWRydi9YMTFfY2FsbHMsCgkgIGRsbHMveDExZHJ2L2Rlc2t0b3AuYywgZGxscy94MTFkcnYvc2Nyb2xsLmMsIGRsbHMveDExZHJ2L3RzX3hsaWIuYywKCSAgZGxscy94MTFkcnYvdHNfeGxpYi5oLCBkbGxzL3gxMWRydi94MTFkZHJhdy5jLAoJICBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jLCBkbGxzL3gxMWRydi94cmFuZHIuYywKCSAgZGxscy94MTFkcnYveHJlbmRlci5jLCB0b29scy9tYWtlX1gxMXdyYXBwZXJzOgoJUmVtb3ZlZCB0aGUgdHNfeGxpYiBmaWxlcy4KCgkqIGRsbHMveDExZHJ2L2NsaXBib2FyZC5jLCBkbGxzL3gxMWRydi9kZ2EyLmMsIGRsbHMveDExZHJ2L2V2ZW50LmMsCgkgIGRsbHMveDExZHJ2L2tleWJvYXJkLmMsIGRsbHMveDExZHJ2L21vdXNlLmMsIGRsbHMveDExZHJ2L3dpbmRvdy5jLAoJICBkbGxzL3gxMWRydi93aW5wb3MuYywgZGxscy94MTFkcnYveDExZHJ2LmgsIGRsbHMveDExZHJ2L3hkbmQuYywKCSAgZGxscy94MTFkcnYveHZpZG1vZGUuYzoKCVJlbW92ZWQgdGhlIHJlbWFpbmluZyBUU1ggY2FsbHMuCgoJKiBwcm9ncmFtcy9jbWRsZ3RzdC9JdC5yYywgcHJvZ3JhbXMvbm90ZXBhZC9JdC5yYywKCSAgcHJvZ3JhbXMvcmVnZWRpdC9JdC5yYywgcHJvZ3JhbXMvcmVnZWRpdC9yc3JjLnJjLAoJICBwcm9ncmFtcy93aW5lbWluZS9Fbi5yYywgcHJvZ3JhbXMvd2luZW1pbmUvSXQucmMsCgkgIHByb2dyYW1zL3dpbmVtaW5lL1JFQURNRSwgcHJvZ3JhbXMvd2luZW1pbmUvcnNyYy5yYywKCSAgcHJvZ3JhbXMvd2luaGVscC9JdC5yYzoKCUl2YW4gTGVvIE11cnJheS1TbWl0aCA8cHVvdGlAaW53aW5kLml0PgoJQWRkZWQvdXBkYXRlZCBJdGFsaWFuIHJlc291cmNlcy4KCgkqIGRsbHMvaW1hZ2VobHAvTWFrZWZpbGUuaW4sIGRsbHMvaW1hZ2VobHAvYWNjZXNzLmMsCgkgIGRsbHMvaW1hZ2VobHAvaW1hZ2VobHAuc3BlYywgZGxscy9pbWFnZWhscC9tb2RpZnkuYzoKCU1hcmN1cyBSLiBCcm93biA8bXJicm93bkAweGQ2Lm9yZz4KCVJlcGxhY2UgdmFyaW91cyByb3V0aW5lcyB3aXRoIGEgZm9yd2FyZCB0byBudGRsbC4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOiBSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglGaXggc29tZSBjb25mdXNpb24gYmV0d2VlbiBudW1iZXIgb2YgYml0bWFwcyBhbmQgbnVtYmVyIG9mIGJ1dHRvbnMgaW4KCVRPT0xCQVJfUmVwbGFjZUJpdG1hcCgpLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJV2UgbmVlZCB0byBzZW5kIFRWTl9FWFBBTkQqIG9uIGNvbGxhcHNpbmcgZWl0aGVyIHdoZW4gdGhlIHVzZXIgaGFzCglpbml0aWF0ZWQgaXQgd2l0aCB0aGUgbW91c2Uva2V5YmFvcmQgb3IgaW4gcmVzcG9uc2UgdG8gYSBUVk1fRVhQQU5ECgl3aGVuIHRoZSBzdGF0ZSBpcyBub3QgVFZJU19FWFBBTkRFRE9OQ0UuICBUaGlzIGJyaW5ncyB0aGUgbG9naWMgaW50bwoJbGluZSB3aXRoIFRSRUVWSUVXX0V4cGFuZC4KCgkqIGRsbHMveDExZHJ2L1gxMV9jYWxscywgZGxscy94MTFkcnYvdHNfeGxpYi5jLCBkbGxzL3gxMWRydi90c194bGliLmgsCgkgIGRsbHMveDExZHJ2L3hyZW5kZXIuYzoKCVJlbW92ZWQgbW9yZSBUU1ggZnVuY3Rpb25zLgoKCSogZGxscy94MTFkcnYvZXZlbnQuYywgZGxscy94MTFkcnYveDExZHJ2X21haW4uYzoKCUFsd2F5cyBpZ25vcmUgQmFkTWF0Y2ggZXJyb3JzIHJlc3VsdGluZyBmcm9tIFhTZXRJbnB1dEZvY3VzIHNvIHRoYXQgd2UKCWRvbid0IG5lZWQgdG8gd2FpdCBmb3IgdGhlIHJlcGx5LgoKCSogZGxscy94MTFkcnYvY2xpcGJvYXJkLmMsIGRsbHMveDExZHJ2L3dpbmRvdy5jLCBkbGxzL3gxMWRydi94MTFkcnYuaDoKCURlbGF5IHRoZSBjcmVhdGlvbiBvZiB0aGUgWCBhdG9tcyB1bnRpbCB3ZSByZWFsbHkgbmVlZCB0aGVtLCB0byBhbGxvdwoJZ2V0dGluZyBtb3JlIG9mIHRoZW0gaW4gb25lIGNhbGwuCglVc2UgWEdldEF0b21OYW1lcyB0byByZXRyaWV2ZSBhbGwgdGhlIHNlbGVjdGlvbiBhdG9tcyBhdCBvbmNlLgoKCSogZGxscy94MTFkcnYvWDExX2NhbGxzLCBkbGxzL3gxMWRydi9jbGlwYm9hcmQuYywgZGxscy94MTFkcnYvZXZlbnQuYywKCSAgZGxscy94MTFkcnYva2V5Ym9hcmQuYywgZGxscy94MTFkcnYvbW91c2UuYywgZGxscy94MTFkcnYvdHNfeGxpYi5jLAoJICBkbGxzL3gxMWRydi90c194bGliLmgsIGRsbHMveDExZHJ2L3dpbmRvdy5jLCBkbGxzL3gxMWRydi93aW5wb3MuYywKCSAgZGxscy94MTFkcnYveDExZGRyYXcuYywgZGxscy94MTFkcnYveDExZHJ2X21haW4uYzoKCUdldCByaWQgb2YgYSBidW5jaCBvZiBUU1ggZnVuY3Rpb25zLgoKMjAwMy0xMS0yMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmM6CglUaGVyZSdzIG5vIG5lZWQgdG8gaW5pdGlhbGl6ZSBYS0Igb24gdGhlIEdESSBkaXNwbGF5LCB0aGlzIHNhdmVzIGEKCWNvdXBsZSBvZiBzZXJ2ZXIgcm91bmQgdHJpcHMuCgoJKiBkbGxzL250ZGxsL3BhdGguYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVJ0bFJlQWxsb2NhdGVIZWFwKCkgZG9lcyBub3QgYWxsb2NhdGUgbWVtb3J5LgoKCSogcHJvZ3JhbXMvcmVnZWRpdC9yZWdwcm9jLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglIZWFwUmVBbGxvYygpIGRvZXMgbm90IGFsbG9jYXRlIG1lbW9yeS4KCgkqIGRsbHMvcnBjcnQ0L3JwY19iaW5kaW5nLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglCYWlsIHdoZW4gd2UncmUgb3V0IG9mIG1lbW9yeS4KCgkqIGRsbHMvbXN2Y3J0L2hlYXAuYywgZGxscy9tc3ZjcnQvdGVzdHMvLmN2c2lnbm9yZSwKCSAgZGxscy9tc3ZjcnQvdGVzdHMvTWFrZWZpbGUuaW4sIGRsbHMvbXN2Y3J0L3Rlc3RzL2hlYXAuYzoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglGaXggcmVhbGxvYygpIHRvIG1hdGNoIHRoZSBkb2N1bWVudGVkIGJlaGF2aW91ci4KCUFkZCBhIGZldyBzaW1wbGUgdGVzdHMgZm9yIGl0LgoKCSogZGxscy9ycGNydDQvcnBjX3NlcnZlci5jOgoJR3JlZ29yeSBNLiBUdXJuZXIgPGdtdHVybmVyMDA3QGFtZXJpdGVjaC5uZXQ+CgktIFRyYWNlIHRoZSBhcmd1bWVudCB0byBSUENSVDRfc2VydmVyX3RocmVhZC4KCS0gXm51bGwgaW1wbGllcyB0d28gaW5kaXJlY3Rpb25zLCB3ZSBoYXZlIG9uZS4KCS0gT3ZlJ3MgaW50ZW50IGRvZXNuJ3QgbWF0dGVyLCB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBpcyByaWdodC4KCgkqIGRsbHMveDExZHJ2L01ha2VmaWxlLmluLCBkbGxzL3gxMWRydi9ldmVudC5jLCBkbGxzL3gxMWRydi93aW5kb3cuYywKCSAgZGxscy94MTFkcnYveDExZHJ2LmgsIGRsbHMveDExZHJ2L3hkbmQuYzoKCVVscmljaCBDemVrYWxsYSA8dWxyaWNoLmN6ZWthbGxhQHV0b3JvbnRvLmNhPgoJSW5pdGlhbCBpbXBsZW1lbnRhdGlvbiB0byBzdXBwb3J0IFhETkQgcHJvdG9jb2wuCgoJKiBkbGxzL2NvbW1kbGcvY2RsZ19JdC5yYywgZGxscy9vbGVkbGcvb2xlZGxnX0l0LnJjLAoJICBkbGxzL29sZWRsZy9yc3JjLnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9Fbi5yYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfSXQucmMsIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX0l0LnJjLAoJICBwcm9ncmFtcy9wcm9nbWFuL0l0LnJjOgoJSXZhbiBMZW8gTXVycmF5LVNtaXRoIDxwdW90aUBpbndpbmQuaXQ+CglBZGRlZC91cGRhdGVkIEl0YWxpYW4gcmVzb3VyY2VzLgoKCSogZGxscy9jb21jdGwzMi9hbmltYXRlLmMsIGRsbHMvY29tY3RsMzIvY29tYm9leC5jLAoJICBkbGxzL2NvbWN0bDMyL2RhdGV0aW1lLmMsIGRsbHMvY29tY3RsMzIvaGVhZGVyLmMsCgkgIGRsbHMvY29tY3RsMzIvaG90a2V5LmMsIGRsbHMvY29tY3RsMzIvaXBhZGRyZXNzLmMsCgkgIGRsbHMvY29tY3RsMzIvbW9udGhjYWwuYywgZGxscy9jb21jdGwzMi9wYWdlci5jLAoJICBkbGxzL2NvbWN0bDMyL3N0YXR1cy5jLCBkbGxzL2NvbWN0bDMyL3RhYi5jLCBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYywKCSAgZGxscy9jb21jdGwzMi90b29sdGlwcy5jLCBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmMsCgkgIGRsbHMvY29tY3RsMzIvdXBkb3duLmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJTWFrZSB0aGUgY29udHJvbHMgc2VuZCBub3RpZmljYXRpb25zIHRvIHRoZSBwYXJlbnQgd2luZG93IHBhc3NlZCB0bwoJdGhlbSBpbiBDUkVBVEVTVFJVQ1QuICBCYXNlZCBvbiBhIHRyZWV2aWV3IHBhdGNoIGJ5IElnb3IgR3JhaGVrLgoKCSogdG9vbHMvTWFrZWZpbGUuaW46IEdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJUmVtb3ZlIHdpbmVjb25mLmxpYnMgZnJvbSBFWFRSQVNVQkRJUlMuCgoJKiBkbGxzL3gxMWRydi9jbGlwYm9hcmQuYywgZGxscy94MTFkcnYvZGVza3RvcC5jLCBkbGxzL3gxMWRydi9ldmVudC5jLAoJICBkbGxzL3gxMWRydi93aW5kb3cuYywgZGxscy94MTFkcnYveDExZHJ2LmgsCgkgIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmM6CglJbnRlcm4gYWxsIHRoZSBhdG9tcyB3ZSdsbCBuZWVkIGluIG9uZSBzdGVwIHRvIGF2b2lkIG11bHRpcGxlIHNlcnZlcgoJcm91bmQgdHJpcHMuCgoJKiB0b29scy93aW5lYnVpbGQvdXRpbHMuYzoKCW9wZW5faW5wdXRfZmlsZSgpOiB0cnkgdG8gb3BlbiB0aGUgZmlsZSBpbiB0aGUgY3VycmVudCBkaXJlY3RvcnkKCWJlZm9yZSB0cnlpbmcgdGhlIHNvdXJjZSBkaXJlY3RvcnkuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglJZiB1c2luZyB0aGUgZGVmYXVsdCB2YWx1ZXMsIGFsc28gc2V0IGR3VHlwZSB0byBSRUdfU1ogYXMgb3VyIGRlZmF1bHQKCXN0cmluZ3MgZG9uJ3QgbmVlZCB0byBiZSBleHBhbmRlZCAoZm91bmQgYnkgVmFsZ3JpbmQpLgoKCSogZGxscy9zaGx3YXBpL3JlZy5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJRG9uJ3QgdXNlIHRoZSBkYXRhIHJldHVybmVkIGJ5IFJlZ1F1ZXJ5VmFsdWVFeFcgaWYgaXQgZmFpbHMgKGZvdW5kIGJ5CglWYWxncmluZCkuCglBIHNwZWxsaW5nIGZpeC4KCgkqIHRvb2xzL3dpbmVnY2Mvd2luZXdyYXAuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCURvbid0IGlnbm9yZSBsaWJzIHNwZWNpZmllZCBieSB0aGUgdXNlciB3aGlsZSBsaW5raW5nLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQ2xlYW51cCB0aGUgZWRpdCB3bmRwcm9jIGEgYml0LgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglSZW1vdmUgc29tZSBkZWFkIGNvZGU6IGh3bmRQYXJlbnQgaXMgbm90IHVzZWQgYW55d2hlcmUuCgoJKiBkbGxzL21zdmlkZW8vbXNybGUzMi9tc3JsZV9JdC5yYywgZGxscy9tc3ZpZGVvL21zcmxlMzIvcnNyYy5yYzoKCUl2YW4gTGVvIE11cnJheS1TbWl0aCA8cHVvdGlAaW53aW5kLml0PgoJQWRkZWQgSXRhbGlhbiBsYW5ndWFnZSBzdXBwb3J0LgoKCSogZGxscy9xdWFydHovY29udHJvbC5jOiBHZXJhbGQgUGZlaWZlciA8Z2VyYWxkQHBmZWlmZXIuY29tPgoJQXZvaWQgbG9uZyBsb25nIGNvbnN0YW50LgoKCSogaW5jbHVkZS9NYWtlZmlsZS5pbjogVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJUmVtb3ZlZCBzdGFsZSBpbnN0YW5jZS5oLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWM6IFJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCUZpeCBkZXRlY3Rpb24gb2YgZnJlZXR5cGUvZnJlZXR5cGUuaCB3aGVuIHRoZSBsaWJmcmVldHlwZSB2ZXJzaW9uCglyZXF1aXJlcyB0aGF0IGZ0MmJ1aWxkLmggaXMgaW5jbHVkZWQgZmlyc3QuCgoJKiBkbGxzL3gxMWRydi9rZXlib2FyZC5jOiBHcmFudCBXaWxsaWFtc29uIDx0cmF4dG9wZWxAZmFzdG1haWwuZm0+CglEdXRjaCBrZXlib2FyZCBzdXBwb3J0LgoKMjAwMy0xMS0xOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIEFOTk9VTkNFLCBDaGFuZ2VMb2csIFZFUlNJT04sIGNvbmZpZ3VyZTogUmVsZWFzZSAyMDAzMTExOC4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KMjAwMy0xMS0xOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbjoKCVVzZSBhIG1vcmUgcG9ydGFibGUgd2F5IHRvIGdlbmVyYXRlIGF1dGhvcnMuYy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL2dkaS9mcmVldHlwZS5jLCBkbGxzL3dpbmVwcy90cnVldHlwZS5jLCBpbmNsdWRlL2NvbmZpZy5oLmluOgoJUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJSW5jbHVkZSBmdDJidWlsZC5oIGJlZm9yZSBmcmVldHlwZS9mcmVldHlwZS5oLiBMaWJmcmVldHlwZSAyLjEuNwoJcmVxdWlyZXMgdGhpcy4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsX0l0LnJjLCBkbGxzL2NvbWN0bDMyL3JzcmMucmMsIGRsbHMvbXNhY20vbXNhY20ucmMsIGRsbHMvbXNhY20vbXNhY21fSXQucmMsIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzJfSXQucmM6CglJdmFuIExlbyBNdXJyYXktU21pdGggPHB1b3RpQGlud2luZC5pdD4KCUFkZGVkL3VwZGF0ZWQgSXRhbGlhbiByZXNvdXJjZXMuCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsIGRsbHMvZGRyYXcvZGlyZWN0M2QvbWVzYS5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUZpeCBzb21lIG90aGVyIG11bHRpLXRleHR1cmluZyBwcm9ibGVtcy4KCgkqIHRvb2xzL3dpbmVjb25mLmxpYnMvYXV0b2NvbmYuZW5nLCB0b29scy93aW5lY29uZi5saWJzL2F1dG9jb25mLnRjbCwKCSAgdG9vbHMvd2luZWNvbmYubGlicy9icm93c2Vycy5lbmcsIHRvb2xzL3dpbmVjb25mLmxpYnMvZGlyYnJvd3Nlci50Y2wsCgkgIHRvb2xzL3dpbmVjb25mLmxpYnMvZ2VuZXJhbC5lbmcsIHRvb2xzL3dpbmVjb25mLmxpYnMvZ2V0ZmlsZW5hbWUudGNsLAoJICB0b29scy93aW5lY29uZi5saWJzL21lc3NhZ2UudGNsLCB0b29scy93aW5lY29uZi5saWJzL21lc3NhZ2UyLnRjbCwKCSAgdG9vbHMvd2luZWNvbmYubGlicy9zYXZlUkMudGNsLCB0b29scy93aW5lY29uZi50Y2wsCgkgIHRvb2xzL3dpbmVjb25mLmxpYnMvd2luZS1oYWxmLmdpZiwgdG9vbHMvd2luZWNvbmYubGlicy93aW5lY29uZi5lbmcsCgkgIHRvb2xzL3dpbmVjb25mLmxpYnMvd2luZWNvbmYudGNsLCB0b29scy93aW5lY29uZi5saWJzL3dpbmVjb25mMS50Y2w6CglSZW1vdmVkIG9ic29sZXRlIHdpbmVjb25mIHRjbCBpbXBsZW1lbnRhdGlvbi4KCgkqIGRsbHMvcXVhcnR6L01ha2VmaWxlLmluLCBkbGxzL3F1YXJ0ei9hdmlzcGxpdC5jLAoJICBkbGxzL3F1YXJ0ei9jb250cm9sLmMsIGRsbHMvcXVhcnR6L2NvbnRyb2xfcHJpdmF0ZS5oLAoJICBkbGxzL3F1YXJ0ei9mb3VyY2MuaCwgZGxscy9xdWFydHovbWFpbi5jLCBkbGxzL3F1YXJ0ei9waW4uYywKCSAgZGxscy9xdWFydHovcXVhcnR6X3ByaXZhdGUuaCwgaW5jbHVkZS93aW5lL2RlYnVnLmg6CglSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJLSBBVkkgU3BsaXR0ZXIgaW1wbGVtZW50YXRpb24uCgktIEFkZCBuZXcgZGVidWdnaW5nIGZ1bmN0aW9uIHdpbmVfZGJzdHJfbG9uZ2xvbmcuCgoJKiBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYywgaW5jbHVkZS9vbGVhdXRvLmgsIGluY2x1ZGUvc2RkbC5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBc3NvcnRlZCBzcGVsbGluZyBmaXhlcy4KCgkqIHdpbmVkZWZhdWx0LnJlZzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVR3ZWFrIHRoZSB0b3AtbGV2ZWwgY29tbWVudCBob3BlZnVsbHkgZm9yIHRoZSBiZXR0ZXIuCglGaXggdGhlICJEZWZhdWx0IERldm1vZGUiIGVudHJ5LgoJcy9TdGRDb21wb25lbnRDYXRlZ29yaWVzTWdyL0NvbXBvbmVudCBDYXRlZ29yaWVzIE1hbmFnZXIvLgoKCSogZGxscy9hZHZhcGkzMi9jcnlwdC5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglJbXByb3ZlIGVycm9yIGhhbmRsaW5nIGluIENyeXB0QWNxdWlyZUNvbnRleHQuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9wYXRoLmM6IEhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJQWNjb3VudCBmb3IgdGhlIGZhY3QgdGhhdCB0aGUgdGVtcG9yYXJ5IGRpcmVjdG9yeSBtYXkgZXhwYW5kIHRvIGEgbG9uZwoJbmFtZS4KCgkqIEFVVEhPUlM6IFVwZGF0ZWQgYXV0aG9ycyBsaXN0LgoKCSogQVVUSE9SUywgZGxscy9zaGVsbDMyLy5jdnNpZ25vcmUsIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwKCSAgZGxscy9zaGVsbDMyL2F1dGhvcnMuaCwgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLAoJICB0b29scy9tYWtlX2F1dGhvcnM6CglHZW5lcmF0ZSB0aGUgYXV0aG9ycyBsaXN0IGZvciB0aGUgc2hlbGwgYWJvdXQgZGlhbG9nIGZyb20gQVVUSE9SUyBhdAoJY29tcGlsZSB0aW1lLiBDb252ZXJ0ZWQgdGhlIGFib3V0IGRpYWxvZyB0byBVbmljb2RlLgoKCSogY29udHJvbHMvbWVudS5jLCBkbGxzL3VzZXIvY29udHJvbHMuaDoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglNYWtlIG5hdGlvbmFsIChob3Qpa2V5cyB3b3JrIGluIG1lbnVzLiBNYWtlIG1lbnUgY29kZSB1c2UgdW5pY29kZSBBUElzLgoKCSogZGxscy9jb21jdGwzMi90cmFja2Jhci5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJVW5zd2FwIFBhZ2UgVXAgJiBEb3duIGFuZCBmaXggVEJTX0RPV05JU0xFRlQuCglOTV8qIG5vdGlmaWNhdGlvbnMgZ28gdmlhIFdNX05PVElGWSBub3QgV05fP1NDUk9MTC4KCVB1bGwgdGhlIG5vdGlmaWNhdGlvbiB3aW5kb3cgZnJvbSB0aGUgQ3JlYXRlU3RydWN0LgoJU2VuZCBhIFRCX1RIVU1CUE9TSVRJT04gYXQgdGhlIGVuZCBvZiBhIGRyYWcuCgoJKiB0b29scy93aW5lbWFrZXI6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRml4IHRoZSBnZW5lcmF0aW9uIG9mIHdpbmVhcHBsb2FkZXIgaW4gc3ViIGRpcmVjdG9yaWVzLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvcHJvY2Vzcy5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVNjYWxlIHRoZSBidWZmZXIgc2l6ZXMgd2l0aCBNQVhfTElTVEVEX0VOVl9WQVIuCglBZGQgYSBub3RlIGFib3V0IHRoZSBsaW1pdGVkIGJ1ZmZlciBzaXplIHVzZWQgYnkgdGhlICpQcm9maWxlIGZ1bmN0aW9ucy4KCUZpeCBhIGNvdXBsZSBvZiBzcGVsbGluZyBlcnJvcnMuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IFJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCVRoZSBMVk5fR0VURElTUElORk8gbm90aWZ5IG1lc3NhZ2Ugc2hvdWxkIHBvaW50IHRvIHRoZSBzYW1lIGlTdWJJdGVtCglhcyBpbiB0aGUgY2FsbCB0byBMSVNUVklFV19HZXRJdGVtVCwgdmFsaWQgb3Igbm90LiBGaXggYSBiYWRseSBwbGFjZWQKCWJyYWNlLgoKCSogZGxscy9rZXJuZWwvZ2xvYmFsMTYuYywgZGxscy9rZXJuZWwvaW5zdHIuYywKCSAgZGxscy9rZXJuZWwva2VybmVsX3ByaXZhdGUuaCwgZGxscy9rZXJuZWwvbG9jYWwxNi5jLAoJICBkbGxzL2tlcm5lbC9zZWxlY3Rvci5jLCBkbGxzL2tlcm5lbC90aHVuay5jLCBkbGxzL2tlcm5lbC93b3d0aHVuay5jLAoJICBpbmNsdWRlL3NlbGVjdG9ycy5oOgoJUmVtb3ZlZCBpbmNsdWRlL3NlbGVjdG9ycy5oLgoKCSogZGxscy9rZXJuZWwvdGhyZWFkLmMsIGRsbHMvbnRkbGwvdGhyZWFkLmM6CglGb3JjZSBtaW5pbXVtIHN0YWNrIHNpemUgdG8gMU1iIGZvciBYbGliLgoKCSogZGxscy91c2VyL2ZvY3VzLmMsIGRsbHMvdXNlci90ZXN0cy93aW4uYywgc2VydmVyL3dpbmRvdy5jOgoJTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCS0gTW92ZSBzaGVsbCB3aW5kb3cgaW50byB0aGUgYmFja2dyb3VuZC4KCS0gQWRkIHRlc3RzIGZvciBHZXQvU2V0U2hlbGxXaW5kb3coKS4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL2RkcmF3L01ha2VmaWxlLmluLAoJICBkbGxzL2RkcmF3L3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMvZGRyYXcvdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvZGRyYXcvdGVzdHMvZGRyYXdtb2Rlcy5jOgoJU2FtaSBBYXJpbyA8c2FtaS5hYXJpb0BzdXJmZXUuZmk+CglBZGRlZCBzb21lIGNvbmZvcm1hbmNlIHRlc3RzIGZvciBkZHJhdy4gVGhlc2UgZW51bWVyYXRlIHNvbWUgZGlzcGxheQoJbW9kZXMgYW5kIHRoZW4gYXR0ZW1wdCB0byBvcGVuIHRoZW0uCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBkbGxzL3dpbmVkb3MvaGltZW0uYywKCSAgZGxscy93aW5lZG9zL2ludDMxLmM6CglVc2UgdGhlIHdpbmVfbGR0XyogZnVuY3Rpb25zIGRpcmVjdGx5IGluIHdpbmVkb3MgaW5zdGVhZCBvZiBjYWxsaW5nCglTRUxFQ1RPUl9BbGxvY0Jsb2NrLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJV2UgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCBjdXN0b21kcmF3X2ZpbGwgaXMgY2FsbGVkIGV2ZW4gaWYKCUNEUkZfTk9USUZZSVRFTURSQVcgaXMgbm90IGJlaW5nIHVzZWQgYmVjYXVzZSB3ZSB1c2VkIHRoZSB0ZXh0IGFuZAoJYmFja2dyb3VuZCBjb2xvcnMgZnJvbSB0aGF0IHN0cnVjdCBsYXRlci4KCgkqIG9iamVjdHMvYml0bWFwLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglBIGJpdG1hcCBjcmVhdGVkIGJ5IENyZWF0ZUNvbXBhdGlibGVCaXRtYXAgc2hvdWxkIG5vdCBiZSBvd25lZCBieSBhCglkcml2ZXIgdW50aWwgaXQgaXMgc2VsZWN0ZWQgaW50byBpdC4gIFRoZSBkcml2ZXIgY2hlY2tzIHRoYXQgdGhlCgliaXRtYXAgaXMgb2YgdGhlIGNvcnJlY3QgZGVwdGggaW4gU2VsZWN0Qml0bWFwLgoKCSogb2JqZWN0cy9mb250LmM6IFBoaWwgS3J5bG92IDxwaGlsQG5ld3N0YXIucmluZXQucnU+CglBZGRlZCBzdXBwb3J0IGZvciByZXR1cm5pbmcgY2FyZXQgcG9zaXRpb25zIGluCglHZXRDaGFyYWN0ZXJQbGFjZW1lbnRXKCkuCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFwcGx5IHNhbWUgbWFnaWMgdG8gTGliQXR0ci5sY2lkIGZyb20gTVNGVCB0byBTTFRHLgoKMjAwMy0xMS0xNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGRsbHMva2VybmVsL3Rvb2xoZWxwLmgsCgkgIGRsbHMvd2luZWRvcy9pbnQzMS5jLCBpbmNsdWRlL3Rvb2xoZWxwLmg6CglNb3ZlZCB0b29saGVscC5oIHRvIGRsbHMva2VybmVsLgoKCSogZGxscy9hZHZhcGkzMi9yZWdpc3RyeS5jLCBkbGxzL2NvbW1kbGcvZm9udGRsZzE2LmMsCgkgIGRsbHMvZ2RpL3ByaW50ZHJ2LmMsIGRsbHMva2VybmVsL2Rvc21lbS5jLCBkbGxzL2tlcm5lbC9wcm9maWxlLmMsCgkgIGRsbHMva2VybmVsL3JlbGF5MTYuYywgZGxscy9rZXJuZWwvdGFzay5jLCBkbGxzL250ZGxsL2xvYWRlci5jLAoJICBkbGxzL250ZGxsL2xvYWRvcmRlci5jLCBkbGxzL250ZGxsL250ZGxsX21pc2MuaCwgZGxscy9udGRsbC9zZWMuYywKCSAgZGxscy9udGRsbC9zaWduYWxfcG93ZXJwYy5jLCBkbGxzL250ZGxsL3ZlcnNpb24uYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsbGluay5jLCBkbGxzL3dpbmVkb3MvZG9zY29uZi5jLAoJICBkbGxzL3dpbmVkb3MvaGltZW0uYywgZGxscy93aW5lZG9zL21vZHVsZS5jLCBkbGxzL3dpbmVkb3MvdnhkLmMsCgkgIGluY2x1ZGUvbWlzY2VtdS5oLCBtaXNjL29wdGlvbnMuYywgb2JqZWN0cy9iaXRtYXAuYywgb2JqZWN0cy9kYy5jLAoJICBvYmplY3RzL2RpYi5jLCB3aW5kb3dzL3VzZXIuYzoKCVJlbW92ZWQgc29tZSB1bm5lY2Vzc2FyeSBpbmNsdWRlcy4KCgkqIGRsbHMva2VybmVsL3Byb2Nlc3MuYzoKCUZpeGVkIHJlZ3Jlc3Npb24gaW4gbG9hZGluZyBvZiBidWlsdGluIGFwcHMgZnJvbSB0aGUgc3lzdGVtIGRpciB3aGVuCgl0aGUgbmF0aXZlIGRvZXNuJ3QgZXhpc3QuCgoJKiBkbGxzL2tlcm5lbC9uZV9tb2R1bGUuYywgZGxscy9rZXJuZWwvbmVfc2VnbWVudC5jLAoJICBkbGxzL2tlcm5lbC9wcm9jZXNzLmMsIGluY2x1ZGUvbW9kdWxlLmg6CglNb3ZlZCBhIGZldyBkZWZpbml0aW9ucyB1c2VkIGluIG9ubHkgb25lIHNvdXJjZSBmaWxlIG91dCBvZiBtb2R1bGUuaC4KCgkqIGRsbHMva2VybmVsL2luc3RyLmMsIGRsbHMva2VybmVsL3dvd3RodW5rLmMsCgkgIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYywgZGxscy93aW5lZG9zL2ludDMxLmMsIGluY2x1ZGUvc2VsZWN0b3JzLmgsCgkgIGluY2x1ZGUvd2luZS9saWJyYXJ5LmgsIGxpYnMvd2luZS9sZHQuYywgbGlicy93aW5lL3dpbmUuZGVmOgoJQWRkZWQgd2luZV9sZHRfaXNfc3lzdGVtKCkgdG8gcmVwbGFjZSB0aGUgSVNfU0VMRUNUT1JfU1lTVEVNIG1hY3JvLAoJYW5kIHN0b3AgZXhwb3J0aW5nIHRoZSBXSU5FX0xEVF9GSVJTVF9FTlRSWSBjb25zdGFudC4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjOgoJTGluayB0aGUgbWFpbiBiaW5hcmllcyB3aXRoIC0tZXhwb3J0LWR5bmFtaWMgc28gdGhhdCB0aGUgcHRocmVhZAoJZW11bGF0aW9uIHdvcmtzIGNvcnJlY3RseSAocmVwb3J0ZWQgYnkgSmVyZW15IFNoYXcpLgoKCSogZGxscy9kM2Q4L2RyYXdwcmltLmM6IEphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglEaXNhYmxlIHRoZSB1c2Ugb2YgdGhlICd3JyBwYXJtIGluIHJodyBtb2RlLgoKCSogZGxscy9kM2Q4L2RldmljZS5jOiBKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJSWYgc3dhcCBtb2RlIGlzIGRpc2NhcmQsIGNsZWFyIHRoZSBiYWNrYnVmZmVyIGJlZm9yZSBtb3Zpbmcgb250byB0aGUKCW5leHQgZnJhbWUuCgoJKiBkbGxzL2QzZDgvZGlyZWN0eC5jOiBKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJVXNlIHRoZSBjdXJyZW50IHdpbmRvdyB2aXN1YWwgb25seS4KCgkqIGRsbHMvZHNvdW5kL2J1ZmZlci5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJSW5pdGlhbGl6ZSBidWZmZXIgcmVmZXJlbmNlIGNvdW50LgoKCSogcHJvZ3JhbXMvd2luZWNmZy9Fbi5yYywgcHJvZ3JhbXMvd2luZWNmZy9QdC5yYzoKCU1hcmNlbG8gRHVhcnRlIDx3aW5lLWRldmVsQGJvbC5jb20uYnI+CglMb2NhbGl6YXRpb24gdG8gUG9ydHVndWVzZS4KCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywgZGxscy9kZHJhdy9tZXNhLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJRml4IGdyYXBoaWNhbCBjb3JydXB0aW9uIG9uIHN1cmZhY2UgbG9jayB3aGVuIG11bHRpLXRleHR1cmluZyBpcwoJYWN0aXZlLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglJZ25vcmUgaW52YWxpZCBpU3ViSXRlbSBpbiBMSVNUVklFV19HZXRJdGVtVCgpLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMuZGF0OgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJQWRkIGEgY291cGxlIG9mIG1pc3Npbmcgc3BlYyBmaWxlcy4KCgkqIGRsbHMvYXZpZmlsMzIvYXZpZmlsZV9JdC5yYywgcHJvZ3JhbXMvY2xvY2svSXQucmMsCgkgIHByb2dyYW1zL25vdGVwYWQvSXQucmMsIHByb2dyYW1zL3Byb2dtYW4vSXQucmMsIHByb2dyYW1zL3N0YXJ0L0l0LnJjOgoJSXZhbiBMZW8gTXVycmF5LVNtaXRoIDxwdW90aUBpbndpbmQuaXQ+CglJbXByb3ZlZCBJdGFsaWFuIHRyYW5zbGF0aW9ucy4KCgkqIGRsbHMvc2VyaWFsdWkvSXQucmMsIGRsbHMvc2VyaWFsdWkvc2VyaWFsdWlfcmMucmMsCgkgIGRsbHMvc2V0dXBhcGkvSXQucmMsIGRsbHMvc2V0dXBhcGkvc2V0dXBhcGkucmMsIGRsbHMvd2luaW5ldC9yc3JjLnJjLAoJICBkbGxzL3dpbmluZXQvd2luaW5ldF9JdC5yYywgZGxscy93aW5tbS93aW5tbV9Fbi5yYywKCSAgZGxscy93aW5tbS93aW5tbV9JdC5yYywgZGxscy93aW5tbS93aW5tbV9yZXMucmM6CglJdmFuIExlbyBNdXJyYXktU21pdGggPHB1b3RpQGlud2luZC5pdD4KCUFkZGVkIEl0YWxpYW4gdHJhbnNsYXRpb24uCgoyMDAzLTExLTE1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9rZXJuZWwvZGV2aWNlLmMsIGRsbHMva2VybmVsL2ZpbGUxNi5jLCBkbGxzL2tlcm5lbC9pbnN0ci5jLAoJICBkbGxzL2tlcm5lbC90aHVuay5jLCBkbGxzL2tlcm5lbC92eGQuYywgZGxscy9rZXJuZWwvd2luODdlbS5jLAoJICBkbGxzL2tlcm5lbC93aW5kZWJ1Zy5jLCBkbGxzL2tlcm5lbC93b3d0aHVuay5jLAoJICBkbGxzL3dpbmFzcGkvd2luYXNwaTE2LmMsIGRsbHMvd2luZWRvcy9kZXZpY2VzLmMsCgkgIGRsbHMvd2luZWRvcy9kb3NleGUuaCwgZGxscy93aW5lZG9zL2Rvc3ZtLmMsIGRsbHMvd2luZWRvcy9mcHUuYywKCSAgZGxscy93aW5lZG9zL2ludDExLmMsIGRsbHMvd2luZWRvcy9pbnQxMi5jLCBkbGxzL3dpbmVkb3MvaW50MTMuYywKCSAgZGxscy93aW5lZG9zL2ludDE1LmMsIGRsbHMvd2luZWRvcy9pbnQxNy5jLCBkbGxzL3dpbmVkb3MvaW50MjEuYywKCSAgZGxscy93aW5lZG9zL2ludDI1LmMsIGRsbHMvd2luZWRvcy9pbnQyNi5jLCBkbGxzL3dpbmVkb3MvaW50MmEuYywKCSAgZGxscy93aW5lZG9zL2ludDMxLmMsIGRsbHMvd2luZWRvcy9pbnQ0MS5jLCBkbGxzL3dpbmVkb3MvaW50NGIuYywKCSAgZGxscy93aW5lZG9zL2ludDVjLmMsIGRsbHMvd2luZWRvcy92eGQuYywgZGxscy93aW5lZG9zL3htcy5jLAoJICBmaWxlcy9kaXJlY3RvcnkuYywgZmlsZXMvZG9zX2ZzLmMsIGZpbGVzL2RyaXZlLmMsIGZpbGVzL2ZpbGUuYywKCSAgaW5jbHVkZS9taXNjZW11LmgsIGluY2x1ZGUvbXNkb3MuaDoKCU1vdmVkIGEgbnVtYmVyIG9mIERPUyBkZWZpbml0aW9ucyBvdXQgb2YgdGhlIGdsb2JhbCBoZWFkZXJzIGFuZCBpbnRvCgl3aW5lZG9zIHByaXZhdGUgZmlsZXMuIFJlbW92ZWQgdGhlIG1zZG9zLmggaGVhZGVyLgoKMjAwMy0xMS0xNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIERFVkVMT1BFUlMtSElOVFMsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCB0b29scy93aW5hcGkvbXN2Y21ha2VyLAoJICB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5kYXQ6CglHZXQgcmlkIG9mIHRoZSBtc2Rvcy8gZGlyZWN0b3J5LgoKCSogZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL2RldmljZS5jLCBkbGxzL2tlcm5lbC9pbnN0ci5jLAoJICBkbGxzL2tlcm5lbC9rZXJuZWxfcHJpdmF0ZS5oLCBkbGxzL2tlcm5lbC92eGQuYywgaW5jbHVkZS9taXNjZW11Lmg6CglNb3ZlZCB3aW5lZG9zIGxvYWRpbmcgZnVuY3Rpb25hbGl0eSB0byBkbGxzL2tlcm5lbC9pbnN0ci5jIGFuZCBnZXQgcmlkCglvZiBtc2Rvcy9kcG1pLmMuCgoJKiBkbGxzL2Rzb3VuZC9jYXB0dXJlLmMsIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUZpeGVzIG1vcmUgdXNlIGJlZm9yZSBzZXQgcmFjZXMuCglXb3JrIGFyb3VuZCBmb3IgcXVldWUgcmVvcmRlcmluZyBmZWF0dXJlLgoJU3RvcCByZWNvcmRpbmcgb24gcmVzZXQuCglCZXR0ZXIgZGVidWcgaW5mby4KCURzb3VuZCBjYWxsYmFjayBjYXB0dXJlIHN0YXRlIGZpeC4KCgkqIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJSW1wbGVtZW50IHRoZSBub24tdmFyaWFudCBkYXRlIGNvbnZlcnNpb25zIGNvcnJlY3RseSwgd2l0aG91dCBnb2luZwoJdGhyb3VnaCAnc3RydWN0IHRtJyBmaXJzdC4gSGFuZGxlIG5lZ2F0aXZlICYgJ3JvbGxpbmcnIGRhdGVzIHRvby4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlYXV0LmMsIGluY2x1ZGUvb2xlYXV0by5oOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUFkZCBzb21lIG1pc3NpbmcgcHJvdG90eXBlcy9kZWZpbmVzLgoJT2FCdWlsZFZlcnNpb24oKSByZXR1cm5zIGEgVUxPTkcsIG5vdCBVSU5ULgoKCSogbGlicy91bmljb2RlL3N0cmluZy5jOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJUmVtb3ZlIGEgcmVkdW5kYW50IHRlc3QuCglIYW5kbGUgJ2EnLCdBJywnZScsJ0UnLCdGJywnZycsJ0cnIGZsYXZvdXJzIG9mIGRvdWJsZSBhcmd1bWVudHMuCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYzogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUR1bXAgYSBmZXcgbW9yZSBrbm93biB2YXJpYW50IHR5cGVzLgoJRG9uJ3QgY2FsbCBEYXRlVG9UTSgpIC0gaXQncyBnb2luZyBhd2F5IHNvb24uCgoJKiBkbGxzL2tlcm5lbC9sb2NhbGUuYzogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUZpeCBhIGNyYXNoIGluIEdldExvY2FsZUluZm8oKSB3aGVuIGV4dHJhIGhpZ2ggYml0cyBhcmUgc2V0LgoKCSogY29udHJvbHMvY29tYm8uYzogQ2FybG9zIExvemFubyA8Y2xvemFub0BhbmRhZ28uY29tPgoJRml4ZWQgQ0JfRElSMTYgaGFuZGxpbmcuCgoJKiBkbGxzL3dpbmVkb3MvaW50MjEuYzogUmVwYWlyZWQgSU5UMjFfRmluZEZpcnN0L0ZpbmROZXh0LgoKCSogZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsCgkgIGRsbHMvd2luZWRvcy9pbnQyMS5jLCBmaWxlcy9kb3NfZnMuYywgZmlsZXMvZHJpdmUuYywgaW5jbHVkZS9kcml2ZS5oLAoJICBpbmNsdWRlL2ZpbGUuaCwgaW5jbHVkZS9tc2Rvcy5oLCBpbmNsdWRlL3dpbmJhc2UuaDoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJLSBtb3ZlZCB0aGUgcmVtYWluaW5nIG9mIGludDIxIGNhbGxzIHRvIGRsbHMvd2luZWRvcwoJLSBkaXNhYmxlZCBkcml2ZSBlbmFibGluZy9kaXNhYmxpbmcgYXMgd2VsbCBhcyBkaXNrIHNlcmlhbCBudW1iZXIKCSAgd3JpdGluZyAoZm9yIERMTCBzZXBhcmF0aW9uIGlzc3VlcykKCS0gYWRkZWQgdm9sdW1lIG1hbmFnZW1lbnQgcHJvdG90eXBlcyB0byBpbmNsdWRlL3dpbmJhc2UuaAoJLSBzdGFydGVkIERlZmluZURvc0RldmljZSAobmVlZGVkIGJ5IGZpcnN0IGl0ZW0gaW4gdGhpcyBsaXN0KQoJLSByZW1vdmVkIGludDIxIHNwZWNpZmljIGNvZGUgZnJvbSBkbGxzL2tlcm5lbAoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvbWFrZV9kbGxzLAoJICBkbGxzL3dpbmVkM2QvLmN2c2lnbm9yZSwgZGxscy93aW5lZDNkL01ha2VmaWxlLmluLAoJICBkbGxzL3dpbmVkM2QvdmVydGV4c2hhZGVyLmMsIGRsbHMvd2luZWQzZC93aW5lZDNkLnNwZWMsCgkgIGRsbHMvd2luZWQzZC93aW5lZDNkX21haW4uYywgZGxscy93aW5lZDNkL3dpbmVkM2RfcHJpdmF0ZS5oLAoJICBpbmNsdWRlL3dpbmUvd2luZWQzZF9nbC5oLCBpbmNsdWRlL3dpbmUvd2luZWQzZF9pbnRlcmZhY2UuaCwKCSAgaW5jbHVkZS93aW5lL3dpbmVkM2RfdHlwZXMuaDoKCVJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJQWRkIHRoZSB3aW5lZDNkIGRsbCBmb3IgYmVnaW5uaW5nIGEgY2xlYW5lciBkM2QgYXJjaGl0ZWN0dXJlIHRoYXQgd2lsbAoJY29udGFpbiB0aGUgc2hhcmVkIG9wZW5HTCBjb2RlIG5lZWRlZCBmb3IgYWxsIHdpbmUgZGlyZWN0M2QKCWltcGxlbWVudGF0aW9ucy4KCgkqIGRsbHMvdHR5ZHJ2L3R0eWRydi5zcGVjLCBkbGxzL3R0eWRydi91c2VyLmMsIGRsbHMvdXNlci91c2VyMzIuc3BlYywKCSAgZGxscy91c2VyL3VzZXJfbWFpbi5jLCBkbGxzL3gxMWRydi9NYWtlZmlsZS5pbiwKCSAgZGxscy94MTFkcnYva2V5Ym9hcmQuYywgZGxscy94MTFkcnYveDExZHJ2LnNwZWMsIGluY2x1ZGUvdXNlci5oLAoJICBpbmNsdWRlL3dpbnVzZXIuaCwgd2luZG93cy9kZWZ3bmQuYywgd2luZG93cy9pbnB1dC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBwcmVsaW1pbmFyeSBzdXBwb3J0IGZvciBrZXlib2FyZCBsYXlvdXQgQVBJcy4KCgkqIG9iamVjdHMvZGliLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglDaGVjayBmb3IgdGhlIGV4aXN0ZW5jZSBvZiB0aGUgZHJpdmVyIENyZWF0ZURJQlNlY3Rpb24gYmVmb3JlIGNhbGxpbmcKCWl0LgoKCSogZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWMsIGRsbHMvbXN2Y3J0L3Byb2Nlc3MuYzoKCUtpcmlsbCBTbWVsa292IDxraXJyQGxhbmRhdS5waHlzLnNwYnUucnU+CglBZGRlZCBfZXhlY2xlL19leGVjbHBlICYgX3NwYXdubGUvX3NwYXdubHBlIHN0dWJzLgoKMjAwMy0xMS0xMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL2F0b20uYywgZGxscy9rZXJuZWwvZGV2aWNlLmMsIGRsbHMva2VybmVsL2luc3RyLmMsCgkgIGRsbHMva2VybmVsL2tlcm5lbF9wcml2YXRlLmgsIGRsbHMva2VybmVsL2xvY2FsMTYuYywKCSAgZGxscy9rZXJuZWwvdGFzay5jLCBkbGxzL2tlcm5lbC92eGQuYywgaW5jbHVkZS9jYWxsYmFjay5oLAoJICBpbmNsdWRlL2luc3RhbmNlLmg6CglSZW1vdmVkIGluc3RhbmNlLmggYW5kIGNhbGxiYWNrLmgsIG1vdmluZyB0aGVpciBjb250ZW50cyB0bwoJa2VybmVsX3ByaXZhdGUuaC4KCgkqIERFVkVMT1BFUlMtSElOVFMsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwKCSAgZGxscy9rZXJuZWwvY3B1LmMsIGRsbHMva2VybmVsL2Vudmlyb24uYywgZGxscy9rZXJuZWwvdmlydHVhbC5jLAoJICBtaXNjL2NwdS5jLCB0b29scy93aW5hcGkvbXN2Y21ha2VyLCB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5kYXQ6CglNb3ZlZCBtZW1vcnkvZW52aXJvbi5jLCBtZW1vcnkvdmlydHVhbC5jIGFuZCBtaXNjL2NwdS5jIHRvCglkbGxzL2tlcm5lbC4KCUdldCByaWQgb2YgdGhlIG1lbW9yeS8gZGlyZWN0b3J5LgoKCSogZGxscy9jYXBpMjAzMi9jYXAyMHd4eC5jLCBkbGxzL2NhcGkyMDMyL2NhcDIwd3h4Lmg6CglBVk0gR21iSCBodHRwOi8vd3d3LmF2bS5kZS8KCVJlbW92ZWQgc29tZSBvbGQgUkNTIGNvbW1lbnRzLgoJRml4ZWQgYSBtZXNzYWdlIGxvY2F0aW9uIGFuZCBDQVBJX1dBSVRfRk9SX1NJR05BTC4KCgkqIG9iamVjdHMvZm9udC5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQ29udmVydCBscG5GaXQgYmFjayB0byBtdWx0aWJ5dGUgaW4gR2V0VGV4dEV4dGVudEV4UG9pbnRBLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50ZWQgTFZTX0VYX0NIRUNLQk9YRVMuCgoJKiBvYmplY3RzL2JydXNoLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglBbiBhcHAgZGVwZW5kcyBvbiBhIE5VTEwgcmV0dXJuIGZyb20gQ3JlYXRlRElCUGF0dGVybkJydXNoUHQgaWYgZGF0YQoJaXMgTlVMTC4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUF2b2lkIHNldHRpbmcgaW5mb1B0ci0+Zmlyc3RWaXNpYmxlIHRvIE5VTEwgaW4gVFJFRVZJRVdfU29ydC4KCjIwMDMtMTEtMTIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgaW5jbHVkZS9jb25maWcuaC5pbiwgbG9hZGVyL3B0aHJlYWQuYzoKCUFkZGVkIGNvbmZpZ3VyZSBjaGVjayBmb3IgcHRocmVhZF9nZXRhdHRyX25wLgoKCSogZGxscy9nZGkvZnJlZXR5cGUuYywgZGxscy93aW5lcHMvZG93bmxvYWQuYywgZGxscy93aW5lcHMvcHNkcnYuaCwKCSAgZGxscy93aW5lcHMvdHlwZTEuYywgZGxscy93aW5lcHMvdHlwZTQyLmM6CglIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJU2NhbGUgdGhlIE9VVExJTkVURVhUTUVUUklDJ3MgYm91bmRpbmcgYm94IHdpdGggdGhlIGZvbnQgc2l6ZS4KCUZpeCB3aW5lcHMncyBmb250IGRvd25sb2FkZXJzIHRvIGNvcGUgd2l0aCB0aGlzIGJlaGF2aW91ci4KCgkqIG9iamVjdHMvZGliLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglNYWtlIHN1cmUgd2UgY3JlYXRlIGEgcG9seWNocm9tZSBiaXRtYXAgZnJvbSB0aGUgZGliLiAgQ3JlYXRlRElCaXRtYXAKCWRvZXNuJ3QgZG8gdGhpcyB3aGVuIHRoZSBkaWIgaXMgMWJwcCBhbmQgaGFzIGEgYmxhY2svd2hpdGUgY29sb3VyCgl0YWJsZS4gIEluIHN1Y2ggY2FzZXMgdGhpcyByZXN1bHRlZCBpbiBhIG1vbm9jaHJvbWUgYml0bWFwIGJlaW5nCglTdHJldGNoQmx0J2VkIHdoaWNoIGlzIGNsZWFybHkgaW5jb3JyZWN0IHNpbmNlIHdlIHRoZW4gc3RhcnQgdXNpbmcKCXRleHQgYW5kIGJrZ25kIGNvbG91cnMuCgoJKiBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJRml4IHNvbWUgd2VpcmQgbG9naWMgaW4gSW1hZ2VMaXN0X1dyaXRlLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJQSBtdWx0aWNvbHVtbiBsaXN0dmlldyBzaG91bGQgZ2V0IGEgY3VzdG9tZHJhdyBub3RpZmljYXRpb24gZm9yIHRoZQoJaXRlbSBhcyB3ZWxsIGFzIG9uZSBmb3Igc3ViaXRlbSAwLgoKCSogZGxscy93aW5tbS93aW5lYWxzYS9taWRpLmM6IENocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUFsc2EgbWlkaSBmaXhlcy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBsb2FkZXIvLmN2c2lnbm9yZSwgbG9hZGVyL01ha2VmaWxlLmluLAoJICBsb2FkZXIvZ2xpYmMuYywgdG9vbHMvd2luZWluc3RhbGw6CglBZGRlZCBhIHdpbmUtZ2xpYmMgYmluYXJ5IHRoYXQgZGV0ZWN0cyB0aGUgZ2xpYmMgdGhyZWFkaW5nIGluIHVzZSBhbmQKCWV4ZWNzIHRoZSBjb3JyZXNwb25kaW5nIHdpbmUgYmluYXJ5LgoJUmVtb3ZlZCB0aGUgLS13aXRoLW5wdGwgY29uZmlndXJlIG9wdGlvbi4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBpbmNsdWRlL3dpbmUvcG9ydC5oLAoJICBsaWJzL3BvcnQvTWFrZWZpbGUuaW4sIGxpYnMvcG9ydC9nZXR0aWQuYywgbGlicy9wb3J0L3NpZ3NldGptcC5jLAoJICBsb2FkZXIvcHRocmVhZC5jOgoJQWRkZWQgc2lnc2V0am1wL3NpZ2xvbmdqbXAgYW5kIGdldHRpZCB0byB0aGUgcG9ydGFiaWxpdHkgbGlicmFyeS4KCjIwMDMtMTEtMTEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwvcHJvY2Vzcy5jLAoJICBkbGxzL250ZGxsL01ha2VmaWxlLmluLCBkbGxzL250ZGxsL3NlcnZlci5jLCBpbmNsdWRlL3dpbmUvbGlicmFyeS5oLAoJICBsaWJzL3dpbmUvTWFrZWZpbGUuaW4sIGxpYnMvd2luZS9jb25maWcuYywgbGlicy93aW5lL2xvYWRlci5jLAoJICBsaWJzL3dpbmUvd2luZS5kZWY6CglNb3ZlZCB0aGUgZXhlY193aW5lX2JpbmFyeSBmdW5jdGlvbiB0byB0aGUgd2luZSBsaWJyYXJ5LCBhbmQgdXNlIGl0IHRvCglleGVjIHRoZSB3aW5lc2VydmVyIHRvby4KCgkqIGRsbHMvbnRkbGwvdmlydHVhbC5jOgoJTWFrZSBzdXJlIHRoZSBwcm90ZWN0aW9uIGZsYWdzIG9uIHRoZSBtZW1vcnkgdmlldyBvZiB0aGUgUEUgaGVhZGVyCgltYXRjaCB0aGUgYWN0dWFsIG1tYXAgcHJvdGVjdGlvbi4KCgkqIHRvb2xzL3dpbmVkdW1wL3BlLmM6IENvc21ldGljcy4KCgkqIGRsbHMvYWR2YXBpMzIvYWR2YXBpMzIuc3BlYywgZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jLAoJICBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvbnRkbGwvc2VjLmMsIGluY2x1ZGUvTWFrZWZpbGUuaW4sCgkgIGluY2x1ZGUvc2RkbC5oLCBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW5udC5oLAoJICBpbmNsdWRlL3dpbnRlcm5sLmg6CglVbHJpY2ggQ3pla2FsbGEgPHVscmljaC5jemVrYWxsYUB1dG9yb250by5jYT4KCUFkZGVkIHN0dWJzIGZvciBBY2Nlc3NDaGVja0J5VHlwZSwgQWRkQXVkaXRBY2Nlc3NBY2UsCglHZXROYW1lZFNlY3VyaXR5SW5mb0EsIEdldE5hbWVkU2VjdXJpdHlJbmZvVy4KCUltcGxlbWVudGVkIENvbnZlcnRTdHJpbmdTZWN1cml0eURlc2NyaXB0b3JUb1NlY3VyaXR5RGVzY3JpcHRvclcsCglEZWxldGVBY2UsIE1ha2VBYnNvbHV0ZVNELCBHZXRBY2xJbmZvcm1hdGlvbiwgQ29udmVydFN0cmluZ1NpZFRvU2lkVywKCVJ0bERlbGV0ZUFjZSwgUnRsUXVlcnlJbmZvcm1hdGlvbkFjbC4KCgkqIGRsbHMva2VybmVsL3ZlcnNpb24uYzogQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJRG9uJ3QgaW5jbHVkZSBidWlsZCBudW1iZXIgaW4gR2V0VmVyc2lvbigpIGZvciBXaW45eCB2ZXJzaW9ucy4KCgkqIGRsbHMvYWR2YXBpMzIvZXZlbnRsb2cuYzogTWlrZSBIZWFybiA8bWlrZUB0aGVvcmV0aWMuY29tPgoJSW1wbGVtZW50ZWQgUmVwb3J0RXZlbnRBL1cuCgoJKiBkbGxzL3gxMWRydi9rZXlib2FyZC5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRml4IGEgYnVnIGluIFZrS2V5U2Nhbi4KCgkqIGRsbHMvbnRkbGwvZmlsZS5jOiBDYXJsb3MgTG96YW5vIDxjbG96YW5vQGFuZGFnby5jb20+CglOdFJlYWRGaWxlIGNoZWNrcyB0aGF0IG9mZnNldCBpcyBub3QgbnVsbC4KCgkqIGRsbHMvd2lubW0vdGVzdHMvd2F2ZS5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJRG9uJ3QgZmxhZyBmYWlsZWQgb3BlbnMgb2YgdW5zdXBwb3J0ZWQgZm9ybWF0cyBhcyBhbiBlcnJvci4KCgkqIGNvbnRyb2xzL2NvbWJvLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglBZGQgc3VwcG9ydCBmb3IgQ0JTX3tMT1dFUnxVUFBFUn1DQVNFLgoKCSogZGxscy93aW5lcHMvZHJpdmVyLmMsIGRsbHMvd2luZXBzL2VzY2FwZS5jLCBkbGxzL3dpbmVwcy9wcy5jLAoJICBkbGxzL3dpbmVwcy9wc2Rydi5oOgoJSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUhhbmRsZSBtdWx0aWNvcHkgcHJpbnRpbmcgY29ycmVjdGx5LgoKCSogZGxscy93aW5lcHMvdHlwZTQyLmM6IEdlcmFsZCBQZmVpZmVyIDxnZXJhbGRAcGZlaWZlci5jb20+CglGaXggZm9ybWF0IHN0cmluZ3MgaW4gVDQyX2Rvd25sb2FkX2hlYWRlcigpIGFuZCBUNDJfZG93bmxvYWRfZ2x5cGgoKS4KCgkqIG9iamVjdHMvZm9udC5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJSWYgdGhlIGJ1ZmZlciBwYXNzZWQgdG8gR2V0T3V0bGluZVRleHRNZXRyaWNzIGlzbid0IGJpZyBlbm91Z2ggdGhlbgoJV2luZG93cyBmaWxscyBpdCB1cHRvIHRoZSBzdXBwbGllZCBzaXplIHJhdGhlciB0aGFuIHJldHVybmluZyBhbgoJZXJyb3IuCgoJKiBkbGxzL2dkaS9mcmVldHlwZS5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQ29uc3RpZnkgc3RyaW5ncy4KCgkqIGRsbHMvd2luc3Bvb2wvaW5mby5jLCBpbmNsdWRlL3dpbnNwb29sLmg6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUNvbnN0aWZ5IHN0cmluZ3MuCglGaXggYXJncyBvZiBbR1NdZXRQcmludGVyRGF0YUV4CgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmM6IExpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglGaXggcGFyc2luZyBvZiBHTCB2ZXJzaW9uIHN0cmluZyBpbiBYLlkgY2FzZXMuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgbG9hZGVyL01ha2VmaWxlLmluOgoJT25seSBidWlsZCBib3RoIFdpbmUgYmluYXJpZXMgb24gTGludXgsIHB0aHJlYWQgc3VwcG9ydCBkb2Vzbid0IHdvcmsKCW9uIG90aGVyIHBsYXRmb3Jtcy4KCgkqIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYywgZGxscy93aW5lZG9zL2Rvc3ZtLmM6CglKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglGaXggcmFjZSBpbiByZWFsIG1vZGUgZXZlbnQgaGFuZGxpbmcuCglNZXJnZSByZWFsIG1vZGUgcGVuZGluZyBldmVudCBjaGVja2luZyByb3V0aW5lcy4KCVJlbW92ZSBzb21lIG9ic29sZXRlIGNvZGUuCgoJKiBkbGxzL2QzZDgvZGV2aWNlLmMsIGRsbHMvZDNkOC9zaGFkZXIuYzoKCVJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJLSBzdHVwaWQgdHlwb3MgZml4ZXMgb24gc29mdHdhcmUgdmVydGV4IHNoYWRlciBvcGVyYW5kcwoJLSBDb3B5UmVjdHMgZml4IChwcm9ibGVtIGluIGVycm9yIHBhdGhzKSBiYXNlZCBvbiBDYXJsb3MgTG96YW5vIHBhdGNoCgoJKiBkbGxzL3gxMWRydi9zY3JvbGwuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCVJld3JpdGUgU2Nyb2xsREMuCgoJKiBvYmplY3RzL2VuaG1ldGFmaWxlLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglQYXRCbHQoKXMgZ2V0IHJlY29yZGVkIGFzIEVNUl9CSVRCTFQgcmVjb3JkcyB3aXRoIG9mZkJtaVNyYyA9PSAwLCBzbwoJZW5zdXJlIHRoYXQgd2UgcGljayB0aGVzZSBvdXQgaW4gcGxheWJhY2suCglFTVJfU1RSRVRDSEJMVCBzaG91bGQgYmVoYXZlIGxpa2UgRU1SX0JJVEJMVCBpZiB0aGVyZSBhcmUgbm8gYml0cwoJKGllLiBpdCdzIGEgUGFsQmx0KS4KCVNldCB0aGUgdGV4dCBhbmQgYmtnbmQgY29sb3VyIHRvIGJsYWNrIGFuZCB3aGl0ZSByZXNwZWN0aXZlbHkgYmVmb3JlCgllbnVtZXJhdGluZyBhbiBlbWYuCglQcmludCBvdXQgdGhlIHJlY29yZCBuYW1lcyB0byBtYWtlIGRlYnVnZ2luZyBlYXNpZXIuCglBZGQgYSBmZXcgVFJBQ0UoKXMuCgoJKiBkbGxzL3dpbnNwb29sL2luZm8uYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCU11Y2ggYmV0dGVyIHBhcnNpbmcgb2YgL2V0Yy9wcmludGNhcC4KCURvbid0IGV2ZW4gdHJ5IHRvIHVzZSBoZXVyaXN0aWNzIHRvIGd1ZXNzIHdoZXRoZXIgdGhlIHByaW50ZXIgaXMKCVBvc3RTY3JpcHQgb3Igbm90IC0gd2UncmUgZ29pbmcgdG8gZ2V0IGl0IHdyb25nIGFueXdheS4KCURvbid0IGxpc3QgcHJpbnRlciBlbnRyaWVzIHRoYXQgYmVnaW4gd2l0aCBpc3B1bmN0KCkgLSB0aGVzZSBhcmUgdXNlZAoJZm9yICd0YycgYWxpYXNlcy4KCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywgZGxscy9kZHJhdy9kaXJlY3QzZC9tZXNhLmMsCgkgIGRsbHMvZGRyYXcvbWVzYS5jLCBkbGxzL2RkcmF3L21lc2FfcHJpdmF0ZS5oLAoJICBkbGxzL2RkcmF3L2RzdXJmYWNlL21haW4uYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglCZXR0ZXIgY29sb3Ita2V5aW5nIHN1cHBvcnQuCgoJKiBkbGxzL3dpbmVwcy9wcGQuYywgZGxscy93aW5lcHMvcHMuYywgZGxscy93aW5lcHMvcHNkcnYuaCwKCSAgZGxscy93aW5lcHMvdHlwZTQyLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQ29uc3RpZnkgc3RyaW5ncy4KCgkqIGRsbHMvZ2x1MzIvTWFrZWZpbGUuaW4sIGRsbHMvZ2x1MzIvZ2x1LmMsIGRsbHMvZ2x1MzIvZ2x1MzIuc3BlYzoKCUh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgdGhlIG1pc3NpbmcgdGVzc2VsYXRvciBmdW5jdGlvbnMgYW5kIGZpeCB0aGUgdGVzc2VsYXRvcgoJY2FsbGJhY2tzIHNvIHRoYXQgdGhlIGNvcnJlY3QgY2FsbGluZyBjb252ZW50aW9uIGlzIHVzZWQuCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmg6IFJvbGYgS2FsYmVybWF0dGVyIDxyb2xmLmthbGJlcm1hdHRlckBjaXRlbmcuY29tPgoJQWRkIGNvbnN0YW50cyBmb3IgRFNBX0luc2VydEl0ZW0gYW5kIERQQV9JbnNlcnRQdHIgYWNjb3JkaW5nIHRvIG5ld2VzdAoJTVNETiBoZWFkZXJzLgoKCSogZGxscy93aW5lcHMvdGV4dC5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJR2V0VGV4dEV4dGVudFBvaW50IGFscmVhZHkgYWRkcyBjaGFyX2V4dHJhIHNvIGRvbid0IGFkZCBpdCBvbiBhZ2Fpbi4KCgkqIGRsbHMveDExZHJ2L3hyZW5kZXIuYywgb2JqZWN0cy9mb250LmM6CglIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJR2V0VGV4dEV4dGVudFBvaW50IHNob3VsZCBpbmNsdWRlIGFuIGludGVyIGNoYXJhY3RlciBzcGFjaW5nIHNldCBieQoJU2V0VGV4dENoYXJhY3RlckV4dHJhLgoKCSogb2JqZWN0cy9kYy5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJT25seSByZXNlbGVjdCB0aGUgZm9udCBpZiB0aGUgdHJhbnNmb3JtYXRpb24gaGFzIGFjdHVhbGx5IGNoYW5nZWQuCgoJKiBncmFwaGljcy9wYXRoLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglXZSBuZWVkIHRvIHNldCB0aGUgV29ybGRUcmFuc2Zvcm0gdG8gdGhlIGlkZW50aXR5IGJlZm9yZSBzdHJva2luZyBvcgoJZmlsbGluZyB0aGUgcGF0aC4KCUZpeGVkIGEgbWVtb3J5IGxlYWsuCgoJKiBvYmplY3RzL2RpYi5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJQ3JlYXRlRElCU2VjdGlvbiBpZ25vcmVzIHRoZSBzdXBwbGllZCB2YWx1ZXMgb2YgYmlDbHJVc2VkIGFuZAoJYmlDbHJJbXBvcnRhbnQgYW5kIGNhbGN1bGF0ZXMgdGhlbSBmcm9tIGJpQml0Q291bnQuCgoJKiBjb250cm9scy9lZGl0LmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglXZSBuZWVkIHRvIGludmFsaWRhdGUgdGhlIHJlcGxhY2VkIHRleHQgcmVnaW9uIGJlZm9yZSBjYWxsaW5nCglFTV9TY3JvbGxDYXJldCBhcyB0aGlzIG1heSBjYWxsIFNjcm9sbFdpbmRvdy4gIFByZXZpb3VzbHkgbmV3bHkgYWRkZWQKCWxpbmVzIHdlcmUgbm90IGRpc3BsYXllZCBpZiB0aGUgZWRpdCBuZWVkZWQgdG8gc2Nyb2xsLgoKCSogY29udHJvbHMvYnV0dG9uLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglPd25lcmRyYXcgYnV0dG9ucyBzaG91bGQgZXJhc2UgdGhlbXNlbHZlcyBpbiBXTV9FUkFTRUJLR05ELgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJQWRkIHN1cHBvcnQgZm9yIExWU19FWF9TVUJJVEVNSU1BR0VTLgoKCSogZGxscy93aW5tbS90ZXN0cy93YXZlLmMsIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUZpeCBhIHJhY2UgY29uZGl0aW9uIHdoZXJlIHJlc3VsdCBjb3VsZCBiZSByZWFkIGJlZm9yZSBzZXQuCglGaXggdGVzdCB0byB1c2UgY29ycmVjdCBldmVudCBpbiBpbnRlcmFjdGl2ZSBtb2RlLgoKCSogZGxscy90dHlkcnYvZ3JhcGhpY3MuYzogR2VyYWxkIFBmZWlmZXIgPGdlcmFsZEBwZmVpZmVyLmNvbT4KCUZpeCBmb3JtYXQgc3BlY2lmaWVycyBmb3IgSERDcy4KCjIwMDMtMTEtMDkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC9wdGhyZWFkLmMsIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sCgkgIGRsbHMvbnRkbGwvbnRkbGxfbWlzYy5oLCBkbGxzL250ZGxsL3NlcnZlci5jLCBkbGxzL250ZGxsL3N5c2RlcHMuYywKCSAgZGxscy9udGRsbC90aHJlYWQuYywgaW5jbHVkZS90aHJlYWQuaCwgaW5jbHVkZS93aW5lL3B0aHJlYWQuaCwKCSAgbGlicy93aW5lL3BvcnQuYywgbG9hZGVyL2t0aHJlYWQuYywgbG9hZGVyL3B0aHJlYWQuYzoKCU1vdmVkIHRoZSByZW1haW5pbmcgU1lTREVQU18qIGZ1bmN0aW9ucyB0byB0aGUgd2luZV9wdGhyZWFkIGludGVyZmFjZS4KCUxldCB0aGUgcHRocmVhZCBsaWJyYXJ5IGFsbG9jYXRlIHRoZSBzdGFjayBpdHNlbGYuCgoJKiBkbGxzL3dpbmluZXQvTWFrZWZpbGUuaW4sIGRsbHMvd2luaW5ldC9nb3BoZXIuYywKCSAgZGxscy93aW5pbmV0L2ludGVybmV0LmMsIGRsbHMvd2luaW5ldC93aW5pbmV0LnNwZWM6CglLaXJpbGwgU21lbGtvdiA8a2lyckBsYW5kYXUucGh5cy5zcGJ1LnJ1PgoJQWRkZWQgZ29waGVyIHN0dWJzLgoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLCBkbGxzL2RkcmF3L2QzZG1hdGVyaWFsLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJRml4IHNvbWUgc3R1cGlkIGJ1ZyB3aXRoIG1pc3NpbmcgYnJhY2VzLgoKCSogZGxscy9vbGVhdXQzMi92YXJpYW50LmM6IEdlcmFsZCBQZmVpZmVyIDxnZXJhbGRAcGZlaWZlci5jb20+CglSZW1vdmVkIGRlYWQgY29kZSBpbiBWYXJEYXRlRnJvbVVJMigpLgoKCSogTWFrZWZpbGUuaW46IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJSWYgdGhlIGNvbW1hbmQgbGluZSBpcyB0b28gbG9uZyB3aGVuIGNhbGxpbmcgZXRhZ3MsIGl0J3MgcHJvYmFibHkgdG9vCglsb25nIHdoZW4gaW52b2tpbmcgY3RhZ3MuCgoJKiBkbGxzL3dpbm1tL2RyaXZlci5jLCBkbGxzL3dpbm1tL2xvbHZsZHJ2LmMsIGRsbHMvd2lubW0vbWVzc2FnZTE2LmMsCgkgIGRsbHMvd2lubW0vbW1pby5jLCBkbGxzL3dpbm1tL21tc3lzdGVtLmMsIGRsbHMvd2lubW0vdGltZS5jLAoJICBkbGxzL3dpbm1tL3dpbmVtbS5oLCBkbGxzL3dpbm1tL3dpbmVtbTE2LmgsIGRsbHMvd2lubW0vd2lubW0uYzoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJUmVtb3ZlZCBzb21lIG1vcmUgZGVwZW5kZW5jaWVzIG9uIHdpbmUgMTYtYml0IHNwZWNpZmljIGVudGl0aWVzLgoKCSogZ3JhcGhpY3MveDExZHJ2L3BhbGV0dGUuYzoKCURvbid0IGJvdGhlciB0byBmaWxsIHRoZSBjb2xvciBtYXAgb24gVHJ1ZUNvbG9yIGRpc3BsYXlzLgoJTW92ZWQgWDExIGxvY2tpbmcgY2FsbHMgb3V0IG9mIHRoZSBsb29wcy4KCgkqIGRsbHMveDExZHJ2L2V2ZW50LmMsIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmMsIGdyYXBoaWNzL3gxMWRydi9kaWIuYzoKCUF2b2lkIHRoZSBYU3luYyBjYWxsIGluIFgxMURSVl9leHBlY3RfZXJyb3IgYnkgc3RvcmluZyB0aGUgY3VycmVudAoJcmVxdWVzdCBudW1iZXIgYW5kIGNoZWNraW5nIHRoYXQgb24gZXJyb3JzLgoJTW92ZWQgdGhlIFhTeW5jIGNhbGwgZnJvbSBYMTFEUlZfY2hlY2tfZXJyb3IgaW50byB0aGUgY2FsbGVycyBzbyB0aGF0CglpdCBjYW4gYmUgYXZvaWRlZCBmb3IgcmVxdWVzdHMgdGhhdCBhbHJlYWR5IHdhaXQgZm9yIGEgcmVwbHkuCgoJKiBkb2N1bWVudGF0aW9uL3NhbXBsZXMvc3lzdGVtLmluaToKCVRvbSBXaWNrbGluZSA8dHdpY2tsaW5lQHNreWJlc3QuY29tPgoJdXBkYXRlZCBbbWNpXSAmIFtkcml2ZXJzMzJdIHNlY3Rpb25zLgoKCSogZGxscy93aW5hc3BpL2FzcGkuYywgZGxscy93aW5hc3BpL3dpbmVzY3NpLmg6CglHZXJhbGQgUGZlaWZlciA8Z2VyYWxkQHBmZWlmZXIuY29tPgoJTW92ZSBzY3NpX2NvbW1hbmRfc2l6ZSBmcm9tIHdpbmVzY3NpLmggdG8gU0NTSV9GaXhfQ01EX0xFTigpLCBpdHMgb25seQoJdXNlci4KCgkqIGRsbHMvdHR5ZHJ2L3duZC5jOiBHZXJhbGQgUGZlaWZlciA8Z2VyYWxkQHBmZWlmZXIuY29tPgoJRml4IGZvcm1hdCBzcGVjaWZpZXJzIGZvciBIV05Ecy4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL3Byb2Nlc3MuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglGaXhlZCBidWZmZXIgb3ZlcmZsb3cuCglGaXhlZCB0d28gLVd3cml0ZS1zdHJpbmdzIHdhcm5pbmdzIChidXQgdGhlcmUgYXJlIG1vcmUpLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvZ2RpL2ZyZWV0eXBlLmMsIGluY2x1ZGUvY29uZmlnLmguaW46CglIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJTG9hZCBhbnkgVHJ1ZVR5cGUgZm9udHMgdGhhdCBmb250Y29uZmlnIGtub3dzIGFib3V0LgoKCSogZGxscy9jb21jdGwzMi9yZWJhci5jLCBpbmNsdWRlL2NvbW1jdHJsLmg6CglSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJQWRkZWQgY2hldnJvbiBzdXBwb3J0LgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJUmVsZWFzZUNhcHR1cmUgb24gbGJ1dHRvbmRvd24gaWYgdGhlIGN1cnNvciBpcyBvdXRzaWRlIGFuIGl0ZW0sIGp1c3QKCWxpa2UgdGhlIG5hdGl2ZSBvbmUgZG9lcy4KCgkqIGRsbHMvd2luZXBzL2luaXQuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCVVwZGF0ZSB0aGUgdmlzcmduIGluIFJlc2V0REMgc28gdGhhdCBHZXRDbGlwQm94IHdvcmtzIGNvcnJlY3RseSBhZnRlcgoJYSBjaGFuZ2UgaW4gcGFwZXIgc2l6ZS9vcmllbnRhdGlvbi4KCgkqIHdpbmRvd3MvZGlhbG9nLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCUlmIEdldE5leHREbGdUYWJJdGVtKCkgY2Fubm90IGZpbmQgYW55IG5leHQgY29udHJvbCwgcmV0dXJuIHRoZSBoYW5kbGUKCW9mIHRoZSBvcmlnaW5hbCBjb250cm9sLgoKMjAwMy0xMS0wNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIERFVkVMT1BFUlMtSElOVFMsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBpbmNsdWRlL2NvbmZpZy5oLmluLAoJICBsb2FkZXIvLmN2c2lnbm9yZSwgbG9hZGVyL01ha2VmaWxlLmluLCBsb2FkZXIva3RocmVhZC5jLAoJICBsb2FkZXIvcHRocmVhZC5jOgoJQ3JlYXRlIHR3byBzZXBhcmF0ZSB3aW5lIGJpbmFyaWVzLCBvbmUgdXNpbmcgbGlicHRocmVhZCBhbmQgb25lIHVzaW5nCglrZXJuZWwgdGhyZWFkaW5nIGRpcmVjdGx5LgoJR2V0IHJpZCBvZiB0aGUgcmVtYWluaW5nIEhBVkVfTlBUTCBpZmRlZnMuCglSZW1vdmUgdGhlIHNjaGVkdWxlciBkaXJlY3RvcnkuCgoJKiBERVZFTE9QRVJTLUhJTlRTLCBNYWtlZmlsZS5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuYWMsCgkgIGxvYWRlci8uY3ZzaWdub3JlLCBsb2FkZXIvTWFrZWZpbGUuaW4sIGxvYWRlci9tYWluLmMsCgkgIHRvb2xzL3dpbmFwaS9tc3ZjbWFrZXIsIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLmRhdCwKCSAgdG9vbHMvd2luZXdyYXBwZXI6CglSZS11c2UgdGhlIGxvYWRlciBkaXJlY3RvcnkgZm9yIHRoZSBtYWluIHdpbmUgbG9hZGVyLCBhbmQgZ2V0IHJpZCBvZgoJdGhlIG1pc2NlbXUgZGlyZWN0b3J5LgoKCSogZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL21vZHVsZS5jLCBsb2FkZXIvbW9kdWxlLmM6CglNb3ZlZCBsb2FkZXIvbW9kdWxlLmMgdG8gZGxscy9rZXJuZWwuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9jYXBpMjAzMi8uY3ZzaWdub3JlLAoJICBkbGxzL2NhcGkyMDMyL01ha2VmaWxlLmluLCBkbGxzL2NhcGkyMDMyL2NhcDIwd3h4LmMsCgkgIGRsbHMvY2FwaTIwMzIvY2FwMjB3eHguaCwgZGxscy9jYXBpMjAzMi9jYXBpMjAzMi5zcGVjLAoJICBpbmNsdWRlL2NvbmZpZy5oLmluOgoJQVZNIENvbXB1dGVyc3lzdGVtZSBWZXJ0cmllYnMgR21iSAoJSW1wbGVtZW50ZWQgYSBDQVBJMjAgd3JhcHBlciBsaWJyYXJ5IGZvciBDQVBJNExpbnV4IGFjY2Vzcy4KCglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUNsZWFuZWQgdXAsIGF1dG9jb25mZWQuCgoJKiBkbGxzL250ZGxsL250ZGxsX21pc2MuaCwgZGxscy9udGRsbC9zZXJ2ZXIuYywKCSAgZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jLCBkbGxzL250ZGxsL3NpZ25hbF9wb3dlcnBjLmMsCgkgIGRsbHMvbnRkbGwvc2lnbmFsX3NwYXJjLmMsIGRsbHMvbnRkbGwvc3luYy5jLCBkbGxzL250ZGxsL3N5c2RlcHMuYywKCSAgZGxscy9udGRsbC90aHJlYWQuYywgaW5jbHVkZS90aHJlYWQuaCwgaW5jbHVkZS93aW5lL3NlcnZlci5oOgoJQWRkZWQgc2VydmVyX2Fib3J0X3RocmVhZCB0byByZXBsYWNlIFNZU0RFUFNfQWJvcnRUaHJlYWQuCglSZW1vdmVkIG5vIGxvbmdlciB1c2VkIFNJR05BTF9CbG9jayBhbmQgU0lHTkFMX1Jlc2V0LgoJTW92ZWQgc29tZSBpbnRlcm5hbCBudGRsbCBkZWZpbml0aW9ucyB0byBudGRsbF9taXNjLmguCgoyMDAzLTExLTA1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9rZXJuZWwvdGhyZWFkLmMsIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywKCSAgZGxscy9udGRsbC9zeXNkZXBzLmMsIGRsbHMvbnRkbGwvdGhyZWFkLmMsIGluY2x1ZGUvd2luZS9wdGhyZWFkLmgsCgkgIGxpYnMvd2luZS9wb3J0LmM6CglBZGRlZCB3aW5lX3B0aHJlYWRfY3JlYXRlX3RocmVhZCBhbmQgd2luZV9wdGhyZWFkX2V4aXRfdGhyZWFkIHRvIHRoZQoJcHRocmVhZCBzdXBwb3J0LCBhbmQgcmVtb3ZlZCB0aGUgY29ycmVzcG9uZGluZyBTWVNERVBTIGZ1bmN0aW9ucy4KCU1vdmVkIHN0YWNrIGFsbG9jYXRpb24gZm9yIG5ldyB0aHJlYWRzIHRvIHdpbmVfcHRocmVhZF9jcmVhdGVfdGhyZWFkCgl0byBhbGxvdyBtb3JlIGZsZXhpYmlsaXR5LgoKCSogZGxscy9tc2FjbS9tc2FjbS5yYywgZGxscy9tc2FjbS9tc2FjbV9QdC5yYywKCSAgZGxscy9vbGVhdXQzMi9vbGVhdXQzMi5yYywgZGxscy9vbGVhdXQzMi9vbGVhdXQzMl9QdC5yYywKCSAgZGxscy9zZXJpYWx1aS9QdC5yYywgZGxscy9zZXJpYWx1aS9zZXJpYWx1aV9yYy5yYywKCSAgZGxscy9zZXR1cGFwaS9QdC5yYywgZGxscy9zZXR1cGFwaS9zZXR1cGFwaS5yYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfUHQucmMsIHByb2dyYW1zL25vdGVwYWQvRW4ucmMsCgkgIHByb2dyYW1zL25vdGVwYWQvUHQucmMsIHByb2dyYW1zL3VuaW5zdGFsbGVyL3JzcmMucmM6CglNYXJjZWxvIER1YXJ0ZSA8d2luZS1kZXZlbEBib2wuY29tLmJyPgoJTG9jYWxpemF0aW9uIHRvIHRoZSBQb3J0dWd1ZXNlIG9mIEJyYXppbC4KCgkqIGRsbHMvZ2RpL2dkaTMyLnNwZWMsIG9iamVjdHMvZGMuYzoKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCUltcGxlbWVudGVkIEdldERDUGVuQ29sb3IgYW5kIEdldERDQnJ1c2hDb2xvci4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJRml4IHdhdmUgaW4gc3RvcC4KCgkqIGluY2x1ZGUvbXNpLmgsIGluY2x1ZGUvbXNpcXVlcnkuaDoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCU1vdmUgYW5kIGNvcnJlY3QgdGhlIE1TSURCT1BFTiBkZWZpbmVzLgoKCSogZGxscy9tc2kvbXNpLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCU1zaU9wZW5EYXRhYmFzZSdzIHN6UGVyc2lzdCBwYXJhbWV0ZXIgbWF5IGJlIGEgc3RyaW5nIG9yIGEgYml0bWFzay4KCgkqIGRsbHMvZ2RpL2RyaXZlci5jLCBkbGxzL2dkaS9lbmhtZmRydi9pbml0LmMsIGRsbHMvZ2RpL2dkaTMyLnNwZWMsCgkgIGRsbHMvZ2RpL21mZHJ2L2luaXQuYywgZGxscy94MTFkcnYveDExZHJ2LnNwZWMsCgkgIGdyYXBoaWNzL3gxMWRydi9icnVzaC5jLCBncmFwaGljcy94MTFkcnYvcGVuLmMsIGluY2x1ZGUvZ2RpLmgsCgkgIGluY2x1ZGUvd2luZ2RpLmgsIG9iamVjdHMvZGMuYywgb2JqZWN0cy9nZGlvYmouYzoKCVVscmljaCBDemVrYWxsYSA8dWxyaWNoQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudGVkIFNldERDUGVuQ29sb3IgYW5kIFNldERDQnJ1c2hDb2xvci4KCgkqIGRsbHMvbXNpL21zaS5jLCBkbGxzL21zaS9tc2kuc3BlYywgaW5jbHVkZS9tc2kuaDoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVN0dWIgaW1wbGVtZW50YXRpb24gZm9yIE1zaVZlcmlmeVBhY2thZ2UuCgoJKiBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvbnRkbGwvc2VjLmM6CglVbHJpY2ggQ3pla2FsbGEgPHVscmljaEBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnRlZCBSdGxTZWxmUmVsYXRpdmVUb0Fic29sdXRlU0QgYW5kIFJ0bE1ha2VTZWxmUmVsYXRpdmVTRC4KCUZpeGVkIHNvbWUgcmVsYXRlZCBTRV9TRUxGX1JFTEFUSVZFIGJ1Z3MuCgoJKiBkbGxzL29sZWRsZy8uY3ZzaWdub3JlLCBkbGxzL29sZWRsZy9NYWtlZmlsZS5pbiwKCSAgZGxscy9vbGVkbGcvaW5zb2JqZGxnLmMsIGRsbHMvb2xlZGxnL29sZWRsZ19Fbi5yYywKCSAgZGxscy9vbGVkbGcvb2xlZGxnX21haW4uYywgZGxscy9vbGVkbGcvcmVzb3VyY2UuaCwKCSAgZGxscy9vbGVkbGcvcnNyYy5yYywgaW5jbHVkZS9vbGVkbGcuaDoKCVVscmljaCBDemVrYWxsYSA8dWxyaWNoQGNvZGV3ZWF2ZXJzLmNvbT4KCUluaXRpYWwgaW1wbGVtZW50YXRpb24gb2YgT2xlVUlJbnNlcnRPYmplY3QuCgoJKiBkbGxzL2tlcm5lbC9zeXNsZXZlbC5jLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsCgkgIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYzoKCVVzZSB0aGUgc2lnbmFsIHN0YWNrIHBvaW50ZXIgdG8gZGV0ZXJtaW5lIHRoZSBjdXJyZW50IHRocmVhZC4KCUNvbnZlcnRlZCB0aGUgU0lHVVNSMiBoYW5kbGVyIHRvIHVzZSBzZXR1cF9leGNlcHRpb24gKHByb2JhYmx5IHN0aWxsCglub3Qgd29ya2luZyBwcm9wZXJseSkuCgoJKiBkbGxzL2tlcm5lbC9uZV9tb2R1bGUuYywgZGxscy9rZXJuZWwvbmVfc2VnbWVudC5jLAoJICBkbGxzL2tlcm5lbC9zeXN0ZW0uYywgZGxscy9rZXJuZWwvdGh1bmsuYywgZGxscy93aW5lZG9zL2ludDMxLmMsCgkgIHdpbmRvd3Mvd2lucHJvYy5jOgoJU2V0ICVmcyBhbmQgJWdzIGluIHRoZSByZWdpc3RlciBjb250ZXh0IHRvIHRoZWlyIGN1cnJlbnQgdmFsdWUgd2hlbgoJY2FsbGluZyAxNi1iaXQgY29kZS4KCgkqIGRsbHMvd2luZXBzL2RyaXZlci5jLCBkbGxzL3dpbmVwcy9pbml0LmMsIGRsbHMvd2luZXBzL3BwZC5jLAoJICBkbGxzL3dpbmVwcy9wcy5jLCBkbGxzL3dpbmVwcy9wc2RsZy5oLCBkbGxzL3dpbmVwcy9wc2Rydi5oLAoJICBkbGxzL3dpbmVwcy93cHNfRGUucmMsIGRsbHMvd2luZXBzL3dwc19Fbi5yYywgZGxscy93aW5lcHMvd3BzX0ZyLnJjLAoJICBkbGxzL3dpbmVwcy93cHNfS28ucmMsIGRsbHMvd2luZXBzL3dwc19QdC5yYywgZGxscy93aW5lcHMvd3BzX1J1LnJjLAoJICBkbGxzL3dpbmVwcy93cHNfU2kucmMsIGRsbHMvd2luZXBzL3dwc19Tay5yYzoKCUh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglTdXBwb3J0IGZvciBkdXBsZXggcHJpbnRpbmcuCgoJKiBkbGxzL3dpbnNwb29sL2luZm8uYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2Ugc3VyZSB0aGF0IGFsbCBwcmludGVyIGVudHJpZXMgaGF2ZSBhIHZhbGlkIE5hbWUgYW5kIFBvcnQga2V5LgoJQ29wZSB3aXRoIGN1cHMgcHJpbnRlciBkZWxldGlvbi4KCgkqIHByb2dyYW1zL3dpbmVkYmcvaW5mby5jOiBSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglMZXQgImluZm8gd25kIiBwcmludCB0aGUgY2xpZW50IHJlY3RhbmdsZSBpbiBzY3JlZW4gY29vcmRpbmF0ZXMuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglMSVNUVklFV19HZXRTdWJJdGVtUmVjdCBzaG91bGQgc3VjY2VlZCBpZiBzdWJpdGVtID09IDAgd2hhdGV2ZXIgbW9kZQoJdGhlIGxpc3R2aWV3IGlzIGluLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCUNvcnJlY3RseSBwbGFjZSBhIHRvb2xiYXIgd2l0aCBDQ1NfQk9UVE9NIHN0eWxlIGF0IHRoZSBib3R0b20sIG5vdCB0aGUKCXRvcC4KCgkqIGRsbHMvbXNpL21zaS5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgTXNpT3BlblByb2R1Y3RXLgoKMjAwMy0xMS0wNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvd2luYmFzZS5oOgoJRGlzYWJsZSB0aGUgYXNtIGlubGluZSBmdW5jdGlvbnMgd2hlbiBidWlsZGluZyBudGRsbCB0byBhdm9pZCB0cm91YmxlCgl3aGVuIGNvbXBpbGluZyB3aXRob3V0IG9wdGltaXphdGlvbi4KCVRoZSBQUEMgaW5saW5lIGZ1bmN0aW9ucyBhcmUgbm8gbG9uZ2VyIG5lZWRlZCBub3cgdGhhdCBrZXJuZWwgaXMKCXByb3Blcmx5IHNlcGFyYXRlZC4KCgkqIGRsbHMva2VybmVsL3RocmVhZC5jLCBkbGxzL250ZGxsL2xvYWRlci5jLCBkbGxzL250ZGxsL250ZGxsX21pc2MuaCwKCSAgZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jLCBkbGxzL250ZGxsL3N5c2RlcHMuYywgZGxscy9udGRsbC90aHJlYWQuYywKCSAgZGxscy9udGRsbC92aXJ0dWFsLmMsIGluY2x1ZGUvdGhyZWFkLmgsIGluY2x1ZGUvd2luZS9zZXJ2ZXIuaDoKCUFsbG9jYXRlIHRoZSBURUIgYW5kIHNpZ25hbCBzdGFjayBzZXBhcmF0ZWx5IGZyb20gdGhlIG1haW4gc3RhY2suCglEeW5hbWljYWxseSBhbGxvY2F0ZSB0aGUgaW5pdGlhbCBURUIgdG9vIHNvIHRoYXQgaXQgaXMgcHJvcGVybHkKCXBhZ2UtYWxpZ25lZC4KCgkqIGRsbHMvbnRkbGwvY2Ryb20uYzogR2VyYWxkIFBmZWlmZXIgPGdlcmFsZEBwZmVpZmVyLmNvbT4KCVRoZSBDRERBIGNhc2Ugb2YgQ0RST01fUmF3UmVhZCgpIG5vIGxvbmdlciB3b3JrcyBvbiBGcmVlQlNEIC1DVVJSRU5ULAoJcmVtb3ZlIGl0LiAgQWxzbywgY29tYmluZSB0aGUgRnJlZUJTRCBhbmQgTmV0QlNEIE5ZSSBub3Rlcy4KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglQcm9wU2hlZXRQYWdlUHJvYyBjYWxsYmFjayBzaG91bGQgYWx3YXlzIGhhdmUgaHduZCA9IDAuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IFVscmljaCBDemVrYWxsYSA8dWxyaWNoQGNvZGV3ZWF2ZXJzLmNvbT4KCUh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglBZGRlZCBkcmFnIGFuZCBkcm9wIHN1cHBvcnQgdG8gbGlzdHZpZXcuCgoJKiBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJRml4IGEgZml4bWUuCgoJKiBkbGxzL3gxMWRydi93aW5wb3MuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVdNX1dJTkRPV1BPU0NIQU5HSU5HIHNob3VsZCByZWNlaXZlIG9yaWdpbmFsLCBub3QgZml4ZWQgdmFsdWVzLgoKCSogY29udHJvbHMvc2Nyb2xsLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBbHdheXMgcmVwYWludCBzY3JvbGwgYmFyIGlmIHJlcXVlc3RlZC4KCgkqIGRsbHMvc2hlbGwzMi9waWRsLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglQcm90ZWN0IElMSXNQYXJlbnQgZnJvbSBOVUxMIHBpZGxzLgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglGaXhlZCBidWcgaW4gY2FwdHVyZSBzdG9wLiAgT25seSBjdXJyZW50IGhlYWRlciBzaG91bGQgYmUgcmV0dXJuZWQgdG8KCWFwcC4KCU1ha2Ugd2F2ZSBmcmFnbWVudCBzaXplIGFkanVzdGFibGUgdG8gZ3VhcmFudGVlIGJldHRlciB0aGFuIDEwIG1zCglsYXRlbmN5LiAgTWFrZXMgYSBkaWZmZXJlbmNlIGZvciA4IGtIeiB2b2ljZSBhcHBzLgoKCSogTWFrZWZpbGUuaW46IE1pa2UgSGVhcm4gPG1pa2VAdGhlb3JldGljLmNvbT4KCUF2b2lkIGFyZ3VtZW50IGxpc3QgbGltaXQgaW4gZXRhZ3MgZ2VuZXJhdGlvbi4KCgkqIGRsbHMvZDNkOC9zdGF0ZWJsb2NrLmMsIGRsbHMvZDNkOC9zdXJmYWNlLmM6CglKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJUGFzcyB0aHJvdWdoIGZsb2F0cyBjb3JyZWN0bHkgdG8gdGhlIHJlbmRlciBzdGF0ZXMgYXQKCWluaXRpYWxpemF0aW9uLiBGaXhlcyBwb2ludCBwcm9ibGVtcy4KCgkqIGRsbHMvZDNkOC9kZXZpY2UuYzogQ2FybG9zIExvemFubyA8Y2xvemFub0BhbmRhZ28uY29tPgoJQ2hlY2sgdGhhdCB3ZSBkb24ndCB3cml0ZSBvdXQgb2YgdGhlIGRlZmluZWQgcmFuZ2Ugb2YgcGFsZXR0ZXMuCgoyMDAzLTExLTAzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9udGRsbC9sb2FkZXIuYzoKCUFsbG9jYXRlIGEgbWVtb3J5IHZpZXcgZm9yIGJ1aWx0aW4gZGxscyBzbyB0aGF0IFZpcnR1YWxRdWVyeSByZXR1cm5zCglzb21ldGhpbmcgc2Vuc2libGUuCgoJKiBkbGxzL250ZGxsL3ZpcnR1YWwuYywgZGxscy94MTFkcnYvZGdhMi5jOgoJRml4ZWQgdHlwZSBhbmQgcHJvdGVjdGlvbiB2YWx1ZXMgcmV0dXJuZWQgYnkgTnRRdWVyeVZpcnR1YWxNZW1vcnkgdG8KCWJlIGNsb3NlciB0byB3aGF0IFdpbmRvd3MgZG9lcy4KCUFsbG93IHVzaW5nIE1FTV9TWVNURU0gd2l0aG91dCBNRU1fUkVTRVJWRSB0byBhdm9pZCA2NGsgYWxpZ25tZW50LgoJVXNlIHByZWFkIGluc3RlYWQgb2YgbHNlZWsrcmVhZCB3aGVuIGZha2luZyBtbWFwLgoKCSogbGlicy93aW5lL2xvYWRlci5jLCB0b29scy93aW5lYnVpbGQvc3BlYzMyLmM6CglQdXQgYmV0dGVyIHZhbHVlcyBmb3IgY29kZSBhbmQgZGF0YSBzaXplcyBpbiB0aGUgTlQgaGVhZGVyIG9mIGJ1aWx0aW4KCWRsbHMuCgoJKiBjb250cm9scy9lZGl0LmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglXTV9MQlVUVE9ORE9XTiBjYWxscyBTZXRGb2N1cyB1bmRlciBXaW5kb3dzLiAgUmVtb3ZlIHRoZSBTZXRGb2N1cyBpbgoJV01fTU9VU0VBQ1RJVkFURS4KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglEb24ndCBnZXQgY29uZnVzZWQgaWYgUFNOX1NFVEFDVElWRSByZXR1cm5zIGEgcG9zaXRpdmUgbnVtYmVyIHRoYXQKCWlzbid0IGEgcmVzb3VyY2UgaWQuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglNYWtlIHRoZSBsaXN0dmlldyBzZW5kIGl0cyBub3RpZmljYXRpb25zIHRvIHRoZSBwYXJlbnQgd2luZG93IHBhc3NlZAoJdG8gaXQgaW4gQ1JFQVRFU1RSVUNULiAgQmFzZWQgb24gYSB0cmVldmlldyBwYXRjaCBieSBJZ29yIEdyYWhlay4KCgkqIGRsbHMvd2luZXBzL2JpdG1hcC5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJRml4IHRoZSByZXR1cm4gdmFsdWUgb2YgU3RyZXRjaERJQml0cy4KCgkqIGRsbHMvd2luZXBzL2dyYXBoaWNzLmMsIGRsbHMvd2luZXBzL3dpbmVwcy5zcGVjOgoJSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCBQU0RSVl9QYWludFJnbiAoYWxzbyBnZXRzIHVzIEZpbGxSZ24sIEZyYW1lUmduIGFuZCBGaWxsUGF0aAoJZm9yIGZyZWUpLgoKCSogd2luZG93cy9zcHkuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBjb21tb24gZGlhbG9nIG5vdGlmaWNhdGlvbiBtZXNzYWdlcyBhbmQgV01fU0laRS4KCgkqIGRsbHMveDExZHJ2L2tleWJvYXJkLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGQgc3VwcG9ydCBmb3IgUVdFUlRaIHZpcnR1YWwga2V5cyBtYXBwaW5nLCBmaXggbWFueSBrZXlib2FyZCBsYXlvdXRzCgl0byBjb25mb3JtIHRvIHRoZSBYRnJlZTg2IG9uZXMsIGFkZCBzdXBwb3J0IGZvciBSdXNzaWFuIGNwMTI1MSBhbmQKCXBob25ldGljIGtleWJvYXJkIGxheW91dHMsIElzcmFlbGlhbiBwaG9uZXRpYyBhbmQgU2FoYXJvbiBrZXlib2FyZAoJbGF5b3V0cy4KCgkqIGRsbHMvd2luZWRvcy9pbnQyMS5jOiBKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglJbXBsZW1lbnQgZmF0MzIgZXh0ZW5kZWQgZnJlZSBzcGFjZSBmdW5jdGlvbi4KCU1ha2UgZmF0MzIgY2FsbHMgcmVzZXQgY2FycnkgZmxhZyBleHBsaWNpdGx5LgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRG8gbm90IGNvZXJjZSBhcmd1bWVudHMgb2YgSVR5cGVMaWI6Okludm9rZSBpbi1wbGFjZSwgb3Igd2UgZ2V0Cgljb3JydXB0ZWQgdmFyaWFudHMuCglIYW5kbGUgVl9BUlJBWSB8IHNvbWV0aGluZyAtPiBWVF9TQUZFQVJSQVksIGFzIHRoaXMgaXMgYSBOT1AuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBkbGxzL2tlcm5lbC9zeW5jLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglTdHVicyBmb3Igam9iIGNvbnRyb2wuCgoyMDAzLTEwLTMxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy91c2VyL2RkZS9jbGllbnQuYywgZGxscy91c2VyL2ZvY3VzLmMsIHdpbmRvd3MvcGFpbnRpbmcuYywKCSAgd2luZG93cy9zeXNjb2xvci5jLCB3aW5kb3dzL3N5c3BhcmFtcy5jOgoJVXNlIGEgdGltZW91dCB3aGVuIHNlbmRpbmcgYnJvYWRjYXN0IG1lc3NhZ2VzLgoKCSogZGxscy9tc3ZjcnQvY29uc29sZS5jLCBkbGxzL21zdmNydC9maWxlLmM6CglVbHJpY2ggQ3pla2FsbGEgPHVscmljaEBjb2Rld2VhdmVycy5jb20+CglEdXBsaWNhdGUgc3RkaW4vc3Rkb3V0IGhhbmRsZXMgdG8gYXZvaWQgY2xvc2luZyB0aGVtIHdoZW4gbGlicmFyeSBpcwoJdW5sb2FkZWQuCgoJKiBkbGxzL2lwaGxwYXBpL2lwaGxwYXBpX21haW4uYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCVN3aXRjaGVkIGEgKyB0byBhIC0gc28gdGhhdCBpdCBtYWtlcyBzZW5zZSB3aGVuIG1hcmtpbmcgdGhlIGxhc3Qgbm9kZQoJaW4gdGhlIEFkYXB0ZXJzIEluZm8gbGlua2VkIGxpc3QuCgoJKiBkbGxzL2QzZDgvZGV2aWNlLmMsIGRsbHMvZDNkOC9zdXJmYWNlLmM6CglKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJTWFrZSBzdXBwb3J0IGZvciBDb3B5UmVjdHMgdG8gYSBzbWFsbCBhcmVhIG9mIHRoZSBiYWNrIGJ1ZmZlciwgYW5kCgljb3JyZWN0IHRoZSBnZW5lcmFsIG1ldGhvZCBvZiB1cGRhdGluZyB0aGUgYmFjayBidWZmZXIuCgoJKiBkbGxzL2tlcm5lbC9ubHMvYnJmLm5scywgZGxscy9rZXJuZWwvbmxzL2NhdC5ubHMsCgkgIGRsbHMva2VybmVsL25scy9jb3IubmxzLCBkbGxzL2tlcm5lbC9ubHMvZGFuLm5scywKCSAgZGxscy9rZXJuZWwvbmxzL2RlYS5ubHMsIGRsbHMva2VybmVsL25scy9kZWMubmxzLAoJICBkbGxzL2tlcm5lbC9ubHMvZGVsLm5scywgZGxscy9rZXJuZWwvbmxzL2Rlcy5ubHMsCgkgIGRsbHMva2VybmVsL25scy9kZXUubmxzLCBkbGxzL2tlcm5lbC9ubHMvZW5nLm5scywKCSAgZGxscy9rZXJuZWwvbmxzL2VuaS5ubHMsIGRsbHMva2VybmVsL25scy9lc24ubmxzLAoJICBkbGxzL2tlcm5lbC9ubHMvZXNwLm5scywgZGxscy9rZXJuZWwvbmxzL2V0aS5ubHMsCgkgIGRsbHMva2VybmVsL25scy9ldXEubmxzLCBkbGxzL2tlcm5lbC9ubHMvZmluLm5scywKCSAgZGxscy9rZXJuZWwvbmxzL2Zvcy5ubHMsIGRsbHMva2VybmVsL25scy9mcmEubmxzLAoJICBkbGxzL2tlcm5lbC9ubHMvZnJiLm5scywgZGxscy9rZXJuZWwvbmxzL2ZybC5ubHMsCgkgIGRsbHMva2VybmVsL25scy9mcm0ubmxzLCBkbGxzL2tlcm5lbC9ubHMvZnJzLm5scywKCSAgZGxscy9rZXJuZWwvbmxzL2dhZS5ubHMsIGRsbHMva2VybmVsL25scy9nZGgubmxzLAoJICBkbGxzL2tlcm5lbC9ubHMvZ2R2Lm5scywgZGxscy9rZXJuZWwvbmxzL2dsYy5ubHMsCgkgIGRsbHMva2VybmVsL25scy9pc2wubmxzLCBkbGxzL2tlcm5lbC9ubHMvaXRhLm5scywKCSAgZGxscy9rZXJuZWwvbmxzL2l0cy5ubHMsIGRsbHMva2VybmVsL25scy9ubGIubmxzLAoJICBkbGxzL2tlcm5lbC9ubHMvbmxkLm5scywgZGxscy9rZXJuZWwvbmxzL25scy5ubHMsCgkgIGRsbHMva2VybmVsL25scy9ub24ubmxzLCBkbGxzL2tlcm5lbC9ubHMvbm9yLm5scywKCSAgZGxscy9rZXJuZWwvbmxzL3B0Zy5ubHMsIGRsbHMva2VybmVsL25scy9zdmUubmxzLAoJICBkbGxzL2tlcm5lbC9ubHMvc3ZmLm5scywgZGxscy9rZXJuZWwvbmxzL3V6bC5ubHMsCgkgIGRsbHMva2VybmVsL25scy93YWwubmxzOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVJlcGxhY2UgMjg1OTEgYnkgMjg2MDUgKGV1cm8pIGZvciBhcHByb3ByaWF0ZSBsb2NhbGVzLgoKCSogZmlsZXMvZmlsZS5jOiBNYWtlIHN1cmUgR2V0VGVtcEZpbGVOYW1lIG5ldmVyIHJldHVybnMgMCBvbiBzdWNjZXNzLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvY2ZnbWdyMzIvLmN2c2lnbm9yZSwKCSAgZGxscy9jZmdtZ3IzMi9NYWtlZmlsZS5pbiwgZGxscy9jZmdtZ3IzMi9jZmdtZ3IzMi5zcGVjLAoJICBkbGxzL2NmZ21ncjMyL21haW4uYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCU1vc3RseSBzdHViIGltcGxlbWVuYXRpb24gZm9yIGNmZ21ncjMyLgoKCSogZGxscy9kM2Q4L2RldmljZS5jOiBKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJQ2xlYXIgc2hvdWxkIG5vdCBiZSBhZmZlY3RlZCBieSB3cml0ZSBtYXNrcy4KCgkqIGRsbHMva2VybmVsL3RocmVhZC5jLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvbnRkbGwvdGhyZWFkLmMsCgkgIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbnRlcm5sLmg6CglJbXBsZW1lbnRlZCBSdGxDcmVhdGVVc2VyVGhyZWFkLCBhbmQgdXNlIGl0IHRvIG1vdmUgdGhyZWFkIGNyZWF0aW9uIHRvCgludGRsbC4KCgkqIGRsbHMvZDNkOC9kZXZpY2UuYzogSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCUNvbG9yV3JpdGVFbmFibGUgc2hvdWxkIG5vdCBpbXBhY3QgY2xlYXJpbmcgdGhlIHNjcmVlbi4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOiBSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJLSBVc2UgdGhlIHN0eWxlIHJldHVybmVkIGluIGN1c3RvbSBkcmF3IHN0cnVjdHVyZSB0byBkcmF3IHRoZSBidXR0b24sCgkgIGFzIGFwcHMgbWF5IG1vZGlmeSB0aGUgc3R5bGUgdGhpcyB3YXkuCgktIERpc2FibGVkIGJ1dHRvbnMgY2FuIGJlY29tZSBob3QuCgktIFJldHJpZXZlIGltYWdlIGxpc3QgZm9yIGRyYXdpbmcgYWZ0ZXIgZ2V0dGluZyBpbWFnZSBsaXN0IElEIChpbgoJICBJX0lNQUdFQ0FMTEJBQ0sgY2FzZSkuCgoJKiBkbGxzL2RtbG9hZGVyL2RtbG9hZGVyX3ByaXZhdGUuaCwgZGxscy9kbWxvYWRlci9sb2FkZXIuYywKCSAgZGxscy9kbXNjcmlwdC9zY3JpcHQuYywgZGxscy9kbXNjcmlwdC9zY3JpcHR0cmFjay5jOgoJUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CgktIGJldHRlciB0cmFjZXMKCS0gc29tZSBJUGVyc2lzdFN0cmVhbTo6R2V0Q2xhc3NJRCBpbXBsZW1lbnRhdGlvbgoJLSBhZGQgdGhlICJzZWFyY2ggYnkgbmFtZSIgc3VwcG9ydCBmb3IgSURpcmVjdE11c2ljTG9hZGVyODo6R2V0T2JqZWN0CgkgIChhbmQgYSBoYWNrIGZvciB1bmRlcnN0YW5kaW5nIGNvbnRhaW5lcnMgdXNlKQoKCSogZGxscy9jb21jdGwzMi90YWIuYywgZGxscy9jb21jdGwzMi90ZXN0cy8uY3ZzaWdub3JlLAoJICBkbGxzL2NvbWN0bDMyL3Rlc3RzL01ha2VmaWxlLmluLCBkbGxzL2NvbWN0bDMyL3Rlc3RzL3RhYi5jOgoJVml0YWxpeSBNYXJnb2xlbiA8d2luZS1wYXRjaEBraWV2aW5mby5jb20+CgktIEZpeCB0YWIgc2l6ZSBmb3IgVENTX09XTkVSRFJBV0ZJWEVEIHN0eWxlLgoJLSBDb3JyZWN0IHNpemUgcmVjYWxjdWxhdGlvbiBhZnRlciBzZXR0aW5nIHRhYiB3aWR0aC4KCS0gRml4IGJ1dHRvbiBzaXplcyB0byBtYXRjaCBuYXRpdmUuCgktIENlbnRlciBib3RoIHZlcnRpY2FsbHkgYW5kIGhvcml6b250YWxseSB0YWIgdGV4dCAmIGljb24uCgktIFVzZSBjb3JyZWN0IGxlZnQvY2VudGVyIGFsaWdubWVudCBmbGFncy4KCjIwMDMtMTAtMzAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2QzZDgvZGV2aWNlLmM6IEphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglDb3B5UmVjdHMgKHBlciByZWN0KSBjb3BpZWQgb25lIHRvbyBtYW55IGxpbmVzLCB0cmFzaGluZyB0aGUgaGVhcC4KCUFsc28gdGlkaWVzIHVwIHNjaXNzb3IgdGVzdCBmcm9tIHByZXZpb3VzIHBhdGNoLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvLmN2c2lnbm9yZSwgZGxscy9rZXJuZWwvdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMva2VybmVsL3Rlc3RzL21haWxzbG90LmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBhIHRlc3QgZm9yIG1haWxzbG90cy4KCgkqIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYzoKCUZpeGVkIHJhY2UgaW4gJWdzIHNlbGVjdG9yIHJlc3RvcmluZyBkdXJpbmcgdm04NiBtb2RlIHJldHVybi4KCU1pbm9yIGNsZWFudXBzLgoKCSogdG9vbHMvd2luZWR1bXAvcGUuYzogR2VyYWxkIFBmZWlmZXIgPGdlcmFsZEBwZmVpZmVyLmNvbT4KCUNoYW5nZSBzb21lIHZhcmlhYmxlcyBmcm9tIGludCB0byB1bnNpZ25lZCB0byBhdm9pZCBzaWduZWRuZXNzCgltaXNtYXRjaGVzLgoKCSogdG9vbHMvd2luZWdjYy91dGlscy5jOiBHZXJhbGQgUGZlaWZlciA8Z2VyYWxkQHBmZWlmZXIuY29tPgoJQWRkIHByb3BlciBjYXN0cyB0byBhdm9pZCBzaWduZWQgdnMuIHVuc2lnbmVkIG1pc21hdGNoZXMgaW4KCXN0cm1ha2UoKS4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQ2FjaGUgdGhlIHdhdmUgdm9sdW1lIHNvIGl0IGNhbiBiZSByZXR1cm5lZCByYXRoZXIgdGhhbiB0aGUgT1NTCglkZXJpdmVkIHZhbHVlIHdoZW4gcG9zc2libGUuCgoJKiBkbGxzL2tlcm5lbC9zeW5jLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVJldHVybiBtb3JlIHNhbmUgbWFpbHNsb3QgZXJyb3IgdmFsdWVzLgoKCSogZGxscy93aW5tbS9sb2x2bGRydi5jLCBkbGxzL3dpbm1tL21tc3lzdGVtLmMsIGRsbHMvd2lubW0vd2lubW0uYzoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglDbGVhbiB1cCAqR2V0RGV2Q2FwcyB0byBjaGVjayBmb3IgdmFsaWQgcG9pbnRlciBhbmQgb25seSBjb3B5IHByb3BlcgoJYW1vdW50IG9mIGRhdGEuCgoJKiBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jOiBQYXZlbCBSb3NraW4gPHByb3NraUBnbnUub3JnPgoJSW5jbHVkZSBudGRsbF9taXNjLmggdG8gYXZvaWQgdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBHZXRQcm9jZXNzSGVhcAoJd2hlbiBjb21waWxlZCB3aXRob3V0IG9wdGltaXphdGlvbi4KCgkqIGRsbHMva2VybmVsL3Byb2Nlc3MuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IGluY29ycmVjdGx5IHNpemVkIGJ1ZmZlci4KCgkqIGRsbHMvZDNkOC9kZXZpY2UuYzogSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCUN1bGxpbmcgdG8gZGlmZmVyZW50IHZpZXdwb3J0cyBmYWlsZWQgYXMgY2xlYXJpbmcgdGhlIHdob2xlIHZpZXdwb3J0CgljbGVhcmVkIHRoZSBzY3JlZW4uCgoJKiB0b29scy93aW5lYnVpbGQvc3BlYzMyLmM6IEJldHRlciBkZWZhdWx0cyBmb3IgaGVhcCBhbmQgc3RhY2sgc2l6ZXMuCgoJKiBkbGxzL2RpbnB1dC9qb3lzdGljay9saW51eC5jLCBkbGxzL2RpbnB1dC9qb3lzdGljay9saW51eGlucHV0LmM6CglIYW5udSBWYWx0b25lbiA8SGFubnUuVmFsdG9uZW5AaHV0LmZpPgoJSm95c3RpY2tBSW1wbF9VbmFjcXVpcmUgc2hvdWxkIHJldHVybiBESV9OT0VGRkVDVCBpZiB0aGUgZGV2aWNlIGlzIG5vdAoJaW4gYW4gYWNxdWlyZWQgc3RhdGUuCgoJKiBkbGxzL21zaS9tc2kuYywgZGxscy9tc2kvbXNpLnNwZWMsIGRsbHMvbXNpL21zaXF1ZXJ5LmMsIGluY2x1ZGUvbXNpLmg6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglTb21lIHN0dWIgaW1wbGVtZW50YXRpb25zLgoKCSogZGxscy9tc2kvdG9rZW5pemUuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJU3FsIHRva2VucyBhcmUgY2FzZSBpbnNlbnNpdGl2ZSBpbiBtc2kuZGxsLgoKCSogZGxscy9kM2Q4L2RldmljZS5jLCBkbGxzL2QzZDgvc3RhdGVibG9jay5jLCBkbGxzL2QzZDgvc3VyZmFjZS5jOgoJSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCUNvcnJlY3Qgd3JpdGluZyB0byBiYWNrIGJ1ZmZlciBpbiBub24tb3J0aG8gbW9kZSwgYW5kIGVuc3VyZSB0aGUgbGluZQoJc3RpcHBsZSBpcyBwYXNzZWQgY29ycmVjdGx5IHRvIGVuYWJsZSBwcm9wZXIgd2lyZWZyYW1lIHN1cHBvcnQuCgoyMDAzLTEwLTI4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9rZXJuZWwvaW5zdHIuYywgZGxscy9rZXJuZWwvd293dGh1bmsuYzoKCVJlc3RvcmVkIGVtdWxhdGlvbiBvZiBwcm90ZWN0ZWQgaW5zdHJ1Y3Rpb25zIGluIDMyLWJpdCBjb2RlIHdoZW4KCXJ1bm5pbmcgd2l0aCBhIFdpbjl4IHZlcnNpb24uCgoJKiBkbGxzL21zaS90YWJsZS5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglUcmVhdCBtaXNzaW5nIE1TSSB0YWJsZXMgYXMgZW1wdHkuCgoJKiBpbmNsdWRlL3dpbmUvbGlicmFyeS5oOgoJSW5jcmVhc2UgV0lORV9MRFRfRklSU1RfRU5UUlkgdG8gbGVhdmUgcm9vbSBmb3IgZ2xpYmMgdGhyZWFkCglzZWxlY3RvcnMuCgoJKiBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jLCBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmMsCgkgIGRsbHMvbnRkbGwvc2lnbmFsX3Bvd2VycGMuYywgZGxscy9udGRsbC9zaWduYWxfc3BhcmMuYywKCSAgaW5jbHVkZS90aHJlYWQuaDoKCVJlbW92ZWQgbm8gbG9uZ2VyIG5lZWRlZCBTSUdOQUxfVW5ibG9jaygpIGZ1bmN0aW9uLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmMsIGRsbHMva2VybmVsL3Rlc3RzL2xvY2FsZS5jLAoJICBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYywgZGxscy91c2VyL3Rlc3RzL2lucHV0LmMsIGluY2x1ZGUvdG1zY2hlbWEuaCwKCSAgbGlicy91bmljb2RlL2NwbWFwLnBsLCBwcm9ncmFtcy9yZWdhcGkvcmVnYXBpLmMsCgkgIHByb2dyYW1zL3JlZ2VkaXQvcmVncHJvYy5jLCB0b29scy93aW5hcGkvd2luYXBpX2NoZWNrX29wdGlvbnMucG0sCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfY2hlY2s6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVdlZWtseSBzcGVsbGluZyBmaXhlcy4KCgkqIGRsbHMvbXNpL3RhYmxlLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVkIE1TSSBidWZmZXIgb3ZlcmZsb3cuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jLAoJICBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbm50LmgsCgkgIGluY2x1ZGUvd2ludGVybmwuaDoKCUltcGxlbWVudGVkIEFkZC9SZW1vdmVWZWN0b3JlZEV4Y2VwdGlvbkhhbmRsZXIuCgoJKiB0b29scy93aW5lbWFrZXI6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglBZGQgc3VwcG9ydCBmb3IgLmRiZy5jIGZpbGVzLiBUaGlzIG1ha2VzIGl0IHBvc3NpYmxlIHRvIHVzZSB0aGUgV2luZQoJdHJhY2luZyBtYWNyb3MgaW4gV2luZWxpYiBhcHBsaWNhdGlvbnMuCglUaGUgd2luZS9saWIsIHdpbmUvb2xlLCB3aW5lL3VuaWNvZGUgZGlyZWN0b3JpZXMgYXJlIGdvbmUuIFNpbXBsaWZ5Cgl0aGUgd2luZV91bmljb2RlIGFuZCB3aW5lX3V1aWQgZGV0ZWN0aW9uLgoJRml4IGdlbmVyYXRpb24gb2YgdGhlIGNsZWFuIHRhcmdldCAoaW4gc29tZSBjb3JuZXIgY2FzZXMgaXQgY291bGQKCWdlbmVyYXRlIGEgJChSTSkgY29tbWFuZCB3aXRoIG5vIHBhcmFtZXRlcikuCglNb3ZlIHRoZSBkaXN0Y2xlYW4gdGFyZ2V0IHRvIHRoZSB0b3AtbGV2ZWwgTWFrZWZpbGUgYW5kIG1ha2UgaXQgbW9yZQoJdGhvcm91Z2guCglVcGRhdGUgYSBmZXcgYXV0b2NvbmYgY29uc3RydWN0cy4KCVJlbW90ZSBjb21tZW50ZWQgb3V0IGNvZGUgaW4gd3JhcHBlci5jLiBJZiB3ZSBuZWVkIHRoYXQgY29kZSB3ZSBjYW4KCWFsd2F5cyBnZXQgaXQgZnJvbSBDVlMuCgoJKiBkbGxzL21zdmNydC9kaXIuYywgaW5jbHVkZS9tc3ZjcnQvc3RkbGliLmg6CglQaWVycmUgZCdIZXJiZW1vbnQgPHN0ZWdlZmluQGZyZWUuZnI+CglGaXhlZCBfd2Z1bGxwYXRoIHByb3RvdHlwZS4KCgkqIGRsbHMveDExZHJ2L3dpbmVjbGlwc3J2LmM6IEdlcmFsZCBQZmVpZmVyIDxnZXJhbGRAcGZlaWZlci5jb20+CglNb3ZlIGV2ZW50X25hbWVzW10gaW50byBFVkVOVF9Qcm9jZXNzRXZlbnQoKS4KCgkqIGRsbHMva2VybmVsL2Zvcm1hdF9tc2cuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUZvcm1hdE1lc3NhZ2VXOiBBbGxvY2F0ZSBhbm91Z2ggc3BhY2UuCgoJKiBkbGxzL21zaS90YWJsZS5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggc3RyaW5nIHZhbHVlIGxvb2t1cHMgaW4gTVNJLgoKCSogZGxscy9kbWJhbmQvYmFuZC5jLCBkbGxzL2RtYmFuZC9iYW5kdHJhY2suYywKCSAgZGxscy9kbWJhbmQvZG1iYW5kX3ByaXZhdGUuaDoKCVJvayBNYW5kZWxqYyA8cm9rLm1hbmRlbGpjQGdpbWIub3JnPgoJU29tZSBmaXhlcyBpbiBkbWJhbmQgbG9hZGluZy4KCgkqIGRsbHMvZGlucHV0L21vdXNlL21haW4uYzogSGFubnUgVmFsdG9uZW4gPEhhbm51LlZhbHRvbmVuQGh1dC5maT4KCVN5c01vdXNlQUltcGxfVW5hY3F1aXJlIHNob3VsZCByZXR1cm4gRElfTk9FRkZFQ1QgaWYgdGhlIGRldmljZSBpcyBub3QKCWluIGFuIGFjcXVpcmVkIHN0YXRlLgoKCSogZGxscy9rZXJuZWwvcHJvY2Vzcy5jOgoJRml4ZWQgdHlwbyB0aGF0IGJyb2tlIGhhbmRsaW5nIG9mIC5jb20gYW5kIC5iYXQgZmlsZXMuCgoJKiBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmMsIHRvb2xzL3dpbmVidWlsZC9yZWxheS5jOgoJU3dpdGNoIGJhY2sgdG8gdGhlIG1haW4gcHJvY2VzcyBzdGFjayBiZWZvcmUgY2FsbGluZyBleGNlcHRpb24KCWhhbmRsZXJzLgoKCSogZGxscy9udGRsbC9sb2FkZXIuYzoKCVJlcGFpcmVkIHJlbGF5IGRlYnVnZ2luZyBmb3Iga2VybmVsIGFuZCBudGRsbCAoc3BvdHRlZCBieSBVd2UKCUJvbm5lcykuCgoJKiBkbGxzL3VzZXIvdGVzdHMvLmN2c2lnbm9yZSwgZGxscy91c2VyL3Rlc3RzL01ha2VmaWxlLmluLAoJICBkbGxzL3VzZXIvdGVzdHMvaW5wdXQuYzoKCVJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCVRlc3QgV01fS0VZKiBhbmQgV01fU1lTS0VZKiBtZXNzYWdlcyBnZW5lcmF0ZWQgYnkgdmFyaW91cyBrZXlib2FyZAoJZXZlbnRzLgoKCSogZGxscy93aW5tbS9sb2x2bGRydi5jLCBkbGxzL3dpbm1tL3Rlc3RzL3dhdmUuYywKCSAgZGxscy93aW5tbS93aW5lYWxzYS9hdWRpby5jLCBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglBZGRlZCBzdXBwb3J0IGZvciBnZXR0aW5nIHRoZSB3YXZlIGRldmljZSBuYW1lLgoKCSogZGxscy9kbWxvYWRlci9sb2FkZXIuYzogUm9rIE1hbmRlbGpjIDxyb2subWFuZGVsamNAZ2ltYi5vcmc+CglGaXggZG1sb2FkZXIncyBiZWhhdmlvciB0byBiZSBtb3JlIE1TIGNvbXBsaWFudC4KCgkqIGRsbHMvZ2RpL2ZyZWV0eXBlLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJVXNlIGZyZWV0eXBlIDIuMCBkZWZpbmVzIGZvciBmb250IGVuY29kaW5ncyBpbnN0ZWFkIG9mIG1pc3VzZSBvZgoJTVNfTUFLRV9UQUcuCgoJKiBkbGxzL250ZGxsL3BhdGguYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCWdldF9mdWxsX3BhdGhfaGVscGVyOiBIYW5kbGUgdGhlIGNhc2UgXFwuXFwgYXMgaW50ZW5kZWQ7IGZpeCBsZW5ndGgKCWFyZ3VtZW50cyBmb3IgbWVtbW92ZS4KCgkqIGRsbHMvbXN2Y3J0L3Rlc3RzL3NjYW5mLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglBbm90aGVyIGRpZmZlcmVuY2UgaW4gdGhlIHByaW50ZiBmYW1pbHkuCgoJKiB3aW5kb3dzL2lucHV0LmM6IFJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCUNvcnJlY3QgdGhlIGxvZ2ljIHRoYXQgZGVjaWRlcyB3aGV0aGVyIGEgV01fU1lTS0VZVVAvRE9XTiBvciBhCglXTV9LRVlVUC9ET1dOIG1lc3NhZ2UgaXMgdG8gYmUgc2VudC4KCjIwMDMtMTAtMjcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB0b29scy93aW5lbWFrZXI6CglsaWJudGRsbC5kbGwuc28gbm8gbG9uZ2VyIGV4aXN0cywgY2hlY2sgZm9yIGxpYm50ZGxsLmRlZiBpbnN0ZWFkLgoKCSogdG9vbHMvd2luZWR1bXAvcGUuYzoKCUFkZGVkIHByaW50aW5nIG9mIHRoZSB0YXJnZXQgb2YgZm9yd2FyZGVkIGV4cG9ydHMuCgoJKiBzZXJ2ZXIvdGhyZWFkLmM6CglNYWtlIGluaXRfdGhyZWFkIHJlcXVlc3QgZGVhbCBiZXR0ZXIgd2l0aCBmZCBhbGxvY2F0aW9uIGVycm9ycy4KCgkqIGRsbHMvZG1pbWUvcGVyZm9ybWFuY2UuYywgZGxscy9kbWxvYWRlci9jb250YWluZXIuYywKCSAgZGxscy9kbWxvYWRlci9sb2FkZXIuYywgZGxscy9kbWxvYWRlci9sb2FkZXJzdHJlYW0uYywKCSAgaW5jbHVkZS9kc291bmQuaDoKCVJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJLSBTb21lIGZpeGVzIG9uIERpcmVjdFNvdW5kIGluaXQgKG5lZWQgU2V0Q29vcGVyYXRpdmVMZXZlbCBhcyBzZWVuIGluCgkgIG1zZG4pIG9uIElEaXJlY3RNdXNpY1BlcmZvcm1hbmNlODo6SW5pdEF1ZGlvLgoJLSBTb21lIGZpeGVzIGluIElEaXJlY3RNdXNpY1BlcmZvcm1hbmNlOEltcGxDcmVhdGVTdGFuZGFyZEF1ZGlvUGF0aAoJICAobm90IHBlcmZlY3QgeWV0LCBuZWVkIHRvIHVuZGVyc3RhbmQvZml4IHRoZSBjaGFubmVsIGluaXQvdXNlKS4KCS0gRml4IHR5cG8gb24gQ3JlYXRlRGlyZWN0TXVzaWNDb250YWluZXIuCgktIEFkZCBtaXNzaW5nIGRlZmluZSBpbiBkc291bmQuaC4KCS0gQmV0dGVyIHRyYWNlcyBvbiBJRGlyZWN0TXVzaWNMb2FkZXI4OjpTZXRTZWFyY2hEaXJlY3RvcnkuCgoJKiBkbGxzL3NoZWxsMzIvY29udHJvbC5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQ29udHJvbF9Eb0xhdW5jaDogbWVtbW92ZSBuZWVkcyBieXRlcyBhcyBsZW5ndGggYXJndW1lbnQuCgoJKiBkbGxzL3dpbmVkb3MvaW50MzMuYzogSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJQ2xlYW4gdXAgbW91c2UgZHJpdmVyIGltcGxlbWVudGF0aW9uLgoKCSogZGxscy93aW5lZG9zL2ludDIxLmM6IEp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCU1vdmVkIGRyaXZlIHBhcmFtZXRlciBibG9jayAoRFBCKSByb3V0aW5lcyB0byB3aW5lZG9zLgoKCSogZGxscy9zZXR1cGFwaS9zZXR1cGFwaS5zcGVjLCBkbGxzL3NldHVwYXBpL3N0dWJzLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglBZGRlZCBhIGZldyBzdHVicy4KCgkqIHRvb2xzL3dpbmVidWlsZC9pbXBvcnQuYzogUGllcnJlIGQnSGVyYmVtb250IDxzdGVnZWZpbkBmcmVlLmZyPgoJRml4IFBvd2VyUEMgYXNzZW1ibGVyIHN5bnRheCBtaXN0YWtlcy4KCgkqIGRsbHMvYXZpZmlsMzIvYXZpZmlsZV9ObC5yYywgZGxscy9hdmlmaWwzMi9yc3JjLnJjLAoJICBkbGxzL2NvbWN0bDMyL2NvbWN0bF9ObC5yYywgZGxscy9jb21jdGwzMi9yc3JjLnJjLAoJICBkbGxzL21zYWNtL21zYWNtLnJjLCBkbGxzL21zYWNtL21zYWNtX05sLnJjLCBkbGxzL3NlcmlhbHVpL05sLnJjLAoJICBkbGxzL3NlcmlhbHVpL3NlcmlhbHVpX3JjLnJjLCBkbGxzL3NldHVwYXBpL05sLnJjLAoJICBkbGxzL3NldHVwYXBpL3NldHVwYXBpLnJjLCBkbGxzL3dpbmVwcy9yc3JjLnJjLAoJICBkbGxzL3dpbmVwcy93cHNfTmwucmMsIGRsbHMvd2luaW5ldC9yc3JjLnJjLAoJICBkbGxzL3dpbmluZXQvd2luaW5ldF9ObC5yYzoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJQWRkZWQgRHV0Y2ggdHJhbnNsYXRpb25zLgoKCSogcHJvZ3JhbXMvc3RhcnQvTmwucmMsIHByb2dyYW1zL3N0YXJ0L3JzcmMucmMsIHByb2dyYW1zL3ZpZXcvTmwucmMsCgkgIHByb2dyYW1zL3ZpZXcvdmlld3JjLnJjLCBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZV9ObC5yYywKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbnNvbGVfcmVzLnJjLCBwcm9ncmFtcy93aW5lZmlsZS9Fbi5yYywKCSAgcHJvZ3JhbXMvd2luZWZpbGUvTmwucmMsIHByb2dyYW1zL3dpbmVmaWxlL3JzcmMucmMsCgkgIHByb2dyYW1zL3dpbmVtaW5lL05sLnJjLCBwcm9ncmFtcy93aW5lbWluZS9yc3JjLnJjLAoJICBwcm9ncmFtcy93aW5oZWxwL05sLnJjLCBwcm9ncmFtcy93aW5oZWxwL3JzcmMucmM6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCS0gRHV0Y2ggdHJhbnNsYXRpb25zIG9mIFdpbmUgcHJvZ3JhbXMuCgktIENvcnJlY3QgZ3JhbW1hciBlcnJvciBpbiB3aW5lZmlsZS4KCgkqIHByb2dyYW1zL3djbWQvRW4ucmMsIHByb2dyYW1zL3djbWQvTmwucmMsIHByb2dyYW1zL3djbWQvd2NtZHJjLnJjOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CgktIEFkZGVkIER1dGNoIHRyYW5zbGF0aW9uLgoJLSBNYWtlIGFuIGV4YW1wbGUncyBkZXNjcmlwdGlvbiBjb25zaXN0ZW50IHdpdGggdGhlIGV4YW1wbGUuCgoJKiBkbGxzL2tlcm5lbC9ubHMvaGViLm5sczogU2hhY2hhciBTaGVtZXNoIDx3aW5lLXBhdGNoQHNoZW1lc2guYml6PgoJVXBkYXRlZCBIZWJyZXcgcmVzb3VyY2VzLgoKCSogZGxscy93aW5tbS93aW5lYWxzYS9hdWRpby5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJRml4IFNNUFRFIHRpbWUuCglGaXggcHJpbWFyeSBidWZmZXIgdm9sdW1lIHNldHRpbmcuCgoJKiBkbGxzL3dpbm1tL21tc3lzdGVtLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglPbmx5IGNvcHkgYW1vdW50IHJlcXVlc3RlZCB1cCB0byBzaXplIG9mIHN0cnVjdHVyZS4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQ2xlYXIgYSBuZXcgaGFyZHdhcmUgYnVmZmVyIHRvIHByb3BlciBzaWxlbmNlIHZhbHVlcyBiYXNlZCBvbiBmb3JtYXQuCglBbGxvd3MgZHhkaWFnIHRvIHBsYXkgOCBiaXQgc291bmRzIGluIGhhcmR3YXJlIHByaW1hcnkgYnVmZmVyIG5vdy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjOiBQaWVycmUgZCdIZXJiZW1vbnQgPHN0ZWdlZmluQGZyZWUuZnI+CglJbmNsdWRlIDxhcnBhL25hbWVzZXIuaD4gYmVmb3JlIDxyZXNvbHYuaD4uCgoyMDAzLTEwLTI0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9nZGkvdGVzdHMvZ2VuZXJhdGVkLmMsIGRsbHMvc2hsd2FwaS90ZXN0cy9nZW5lcmF0ZWQuYywKCSAgZGxscy91cmxtb24vdGVzdHMvZ2VuZXJhdGVkLmMsIGRsbHMvdXNlci90ZXN0cy9nZW5lcmF0ZWQuYywKCSAgZGxscy93aW5pbmV0L3Rlc3RzL2dlbmVyYXRlZC5jOgoJVXBkYXRlZCBzb21lIG9mIHRoZSBnZW5lcmF0ZWQgdGVzdHMuCgoJKiB0b29scy93aW5hcGkvdGVzdHMuZGF0LCB0b29scy93aW5hcGkvd2luYXBpX3Rlc3Q6CglTcGVjaWZ5IGluY2x1ZGUgcXVvdGVzIGluIHRoZSB0ZXN0cy5kYXQgZmlsZS4KCgkqIGRsbHMva2VybmVsL2ZpYmVyLmMsIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmMsCgkgIGluY2x1ZGUvd2luZS9leGNlcHRpb24uaDoKCVVzZSBzaWdzZXRqbXAgaW5zdGVhZCBvZiBzZXRqbXAgaW4gV2luZSBpbnRlcm5hbCBleGNlcHRpb24gaGFuZGxlcnMgdG8KCW1ha2Ugc3VyZSB0aGUgc2lnbmFsIG1hc2sgaXMgcmVzdG9yZWQgcHJvcGVybHkuCgoJKiBzZXJ2ZXIvc2lnbmFsLmM6CglBZGRlZCBzdXBwb3J0IGZvciB0aGUgbGludXh0aHJlYWRzIGNhbmNlbCBzaWduYWwgYXMgYW4gYWx0ZXJuYXRpdmUgdG8KCVNJR0NITEQuCgoJKiBkbGxzL21zdmNydC90ZXN0cy9zY2FuZi5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQWRkZWQgYSB0ZXN0IGNhc2UgZm9yIHNwcmludGYuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmMsCgkgIGRsbHMvc2hlbGwzMi9zaHBvbGljeS5jLCBkbGxzL3NoZWxsMzIvc3lzdHJheS5jOgoJRmlsaXAgTmF2YXJhIDx4bmF2YXJhQHZvbG55LmN6PgoJLSBSZW1vdmVkIGluaXRpYWxpemF0aW9uIG9mIHNoMzJfcG9saWN5X3RhYmxlIGluIFNISW5pdFJlc3RyaWN0ZWQsCgkgIGJlY2F1c2UgaXQncyBhbHJlYWR5IHN0YXRpY2FsbHkgaW5pdGlhbGl6ZWQuCgktIFJlbW92ZWQgY2FsbGluZyBvZiBTSEluaXRSZXN0cmljdGVkKE5VTEwsIE5VTEwpIGZyb20gRGxsTWFpbiBiZWNhdXNlCgkgIGl0IGRvZXMgbm90aGluZyBpbiB0aGlzIGNhc2Ugbm93LgoJLSBBZGRlZCBzdXBwb3J0IGZvciBmbGFncyBGV0ZfREVTS1RPUCwgRldGX05PQ0xJRU5URURHRSwKCSAgRldGX1RSQU5TUEFSRU5UIGluIFNoZWxsVmlldy4KCS0gRml4ZWQgc21hbGwgYnVnIGluIHNldHRpbmcgU3lzVHJheSB3aW5kb3cgY2xhc3MgaGJyQmFja2dyb3VuZC4KCgkqIGRsbHMvdXNlci90ZXN0cy93aW4uYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCU1vcmUgdGVzdHMgZm9yIHdpbmRvdyBjcmVhdGlvbiBwYXJhbWV0ZXJzLgoKCSogd2luZG93cy93aW5wb3MuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUluaXRpYWxpemUgTWluTWF4LnB0UmVzZXJ2ZWQsIHVzZSBiZXR0ZXIgZGVmYXVsdHMgZm9yIGNoaWxkIHdpbmRvd3MuCgoJKiBkbGxzL3gxMWRydi93aW5kb3cuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVdpbmRvd3MgYWx3YXlzIHNldHMgY2J0Yy5od25kSW5zZXJ0QWZ0ZXIgdG8gSFdORF9UT1AuCgoJKiBkbGxzL21zdmNydC9maWxlLmM6IFBhdmVsIFJvc2tpbiA8cHJvc2tpQGdudS5vcmc+CglNYWtlIE1TVkNSVF9fc29wZW4oKSBjb21wbGFpbiBsb3VkZXIgYWJvdXQgdW5rbm93biBvZmxhZ3MsIGJ1dCBub3QKCWFib3V0IF9PX1dST05MWS4KCU1TVkNSVF9mb3BlbigpIHNob3VsZCBwYXNzIHRoaXJkIGFyZ3VtZW50IHRvIF9vcGVuKCkgYmVjYXVzZSBpdCBtYXkKCXNldCBfT19DUkVBVC4KCgkqIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvYW12aWRlby5oLCBpbmNsdWRlL2FtdmlkZW8uaWRsLAoJICBpbmNsdWRlL2F2aXJpZmYuaDoKCVJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CglBZGRlZCBhbXZpZGVvLntpZGwsaH0gYW5kIGF2aXJpZmYuaC4KCgkqIGRsbHMvd2luZXBzL3JzcmMucmMsIGRsbHMvd2luZXBzL3dwc19JdC5yYzoKCUl2YW4gTGVvIE11cnJheS1TbWl0aCA8cHVvdGlAaW53aW5kLml0PgoJQWRkZWQgSXRhbGlhbiByZXNvdXJjZXMuCgoJKiBkbGxzL2NvbWN0bDMyL3JlYmFyLmM6IFJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CglEb24ndCBzdG9yZSBiYW5kIHRleHQgaWYgIiIgaXMgcGFzc2VkIGludG8gU2V0QmFuZEluZm8uCgoJKiBwcm9ncmFtcy93aW5lY2ZnL0VuLnJjLCBwcm9ncmFtcy93aW5lY2ZnL3dpbmVjZmcuYzoKCU1pa2UgSGVhcm4gPG1pa2VAdGhlb3JldGljLmNvbT4KCU1pbm9yIEdVSSByZWxheW91dC4KCgkqIGRsbHMva2VybmVsL3Byb2Nlc3MuYywgZGxscy9udGRsbC9sb2FkZXIuYzoKCUNhbGwgdGhlIGFwcGxpY2F0aW9uIGVudHJ5IHBvaW50IGZyb20ga2VybmVsMzIsIHNvbWUgYXBwcyBkZXBlbmQgb24KCXRoYXQuCgoJKiBkbGxzL3NldHVwYXBpL3BhcnNlci5jLCBkbGxzL3NldHVwYXBpL3ZpcnRjb3B5LmMsCgkgIGRsbHMveDExZHJ2L3hyZW5kZXIuYzoKCU9sZWcgUHJva2hvcm92IDx4b2xlZ3Byb0ByYmNtYWlsLnJ1PgoJQW5vdGhlciBwb3J0aW9uIG9mIEhlYXBSZUFsbG9jIGZpeGVzLgoKCSogdG9vbHMvd2luZWJ1aWxkL2ltcG9ydC5jLCB0b29scy93aW5lYnVpbGQvc3BlYzMyLmM6CglQaWVycmUgZCdIZXJiZW1vbnQgPHN0ZWdlZmluQGZyZWUuZnI+CglDaGFuZ2UgbWN0ciBQb3dlclBDIGFzbSBpbnN0cnVjdGlvbiB0byBtdGN0ci4gQWRkIFN1cHBvcnQgZm9yIHRoZQoJLnRleHQgc2VjdGlvbiBhbmQgdGhlIC5zcGFjZSBzZWN0aW9uIG9mIGRhcndpbidzIGxkLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvbG9jYWxlLmM6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglBZGRlZCB0ZXN0cyBmb3IgRm9sZFN0cmluZ0EvVy4KCgkqIGRsbHMva2VybmVsL2xvY2FsZS5jOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJSW1wbGVtZW50ZWQgRm9sZFN0cmluZ0EgKHVzaW5nIFcgdmVyc2lvbikuCglEb2N1bWVudGF0aW9uIHVwZGF0ZXMuCgoJKiBkbGxzL21zdmNydC90ZXN0cy9maWxlLmM6IFBhdmVsIFJvc2tpbiA8cHJvc2tpQGdudS5vcmc+CglBZGRlZCB0ZXN0IGZvciB0bXBuYW0oKS4KCgkqIGRsbHMvbXN2Y3J0L2ZpbGUuYywgaW5jbHVkZS9tc3ZjcnQvc3RkaW8uaDoKCVBhdmVsIFJvc2tpbiA8cHJvc2tpQGdudS5vcmc+CglNU1ZDUlRfdG1wbmFtKCk6IGNvbXBsZXRlIHJld3JpdGUuICBVc2UgdGhlIHNhbWUgbmFtZXMgYXMgdGhlIG5hdGl2ZQoJdmVyc2lvbi4gIFVzZSB0aGUgY2FsbGVyLXN1cHBsaWVkIGJ1ZmZlciBpZiBwb3NzaWJsZS4KCjIwMDMtMTAtMjIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC90aHJlYWQuYywgZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jLCBkbGxzL250ZGxsL3ZpcnR1YWwuYywKCSAgaW5jbHVkZS90aHJlYWQuaDoKCVNpbXBsaWZpZWQgc2lnbmFsIHN0YWNrIGFsbG9jYXRpb24gYSBiaXQsIGFuZCBhdm9pZCBhbGxvY2F0aW5nIGl0IG9uCglub24taTM4NiBwbGF0Zm9ybXMuCgoJKiBkbGxzL250ZGxsL3NpZ25hbF9wb3dlcnBjLmM6IEEgc2lnbmFsIHN0YWNrIGlzIG5vdCBuZWVkZWQgb24gUG93ZXJQQy4KCgkqIHRvb2xzL3dtYy9sYW5nLmM6IFZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCUFkZGVkIHN1cHBvcnQgZm9yIG5ldXRyYWwgbGFuZ3VhZ2UuCgoJKiBpbmNsdWRlL3NldHVwYXBpLmg6IEZpeGVkIG5hbWluZyBvZiB0aGUgQS9XIHR5cGVzLgoKCSogZGxscy9hZHZhcGkzMi9jcnlwdC5jOiBSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJLSBGaXggZXJyb3IgcGF0aHMgaW4gYWR2YXBpMzIuQ3J5cHRBY3F1aXJlQ29udGV4dEEuCgktIENhbGwgQ1JZUFRfVmVyaWZ5SW1hZ2UgdG8gdmVyaWZ5IHRoZSBzaWduYXR1cmUsIGV2ZW4gdGhvdWdoIGl0CgkgIGN1cnJlbnRseSBkb2VzIG5vdGhpbmcuCgoJKiBkbGxzL3dpbm1tL2xvbHZsZHJ2LmMsIGRsbHMvd2lubW0vbW1zeXN0ZW0uYywgZGxscy93aW5tbS93aW5lbW0uaCwKCSAgZGxscy93aW5tbS93aW5tbS5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUZpeCBNTURSVl9QaHlzaWNhbEZlYXR1cmVzIHRvIGhhbmRsZSBib3RoIDE2IGFuZCAzMiBiaXQgcG9pbnRlcnMKCXByb3Blcmx5LgoKCSogcHJvZ3JhbXMvd2luZWNmZy9tYWluLmM6IE1pa2UgSGVhcm4gPG1pa2VAdGhlb3JldGljLmNvbT4KCUNvbXBsZXRlIHN1cHBvcnQgRE9TIHZlcnNpb24gYW5kIHdpbmVsb29rIHNldHRpbmdzLgoKCSogZGxscy9nZGkvZW5obWZkcnYvaW5pdC5jOiBEYXZlIEJlbGFuZ2VyIDxkYXZlLmJlbGFuZ2VyQGNpbW1ldHJ5LmNvbT4KCUZpeCBFTUYgZHJpdmVyIFVwZGF0ZUJCb3ggcm91dGluZS4gVGhlIEVNRiBib3VuZGluZyBib3ggbXVzdCBiZSBzdG9yZWQKCWluIGRldmljZSBjb29yZGluYXRlcyBpbiB0aGUgbWV0YWZpbGUuCgoJKiBwcm9ncmFtcy93aW5lY2ZnL2FwcGRlZmF1bHRzLmMsIHByb2dyYW1zL3dpbmVjZmcvZHJpdmUuYywKCSAgcHJvZ3JhbXMvd2luZWNmZy94MTFkcnZkbGcuYzoKCU1pa2UgSGVhcm4gPG1pa2VAdGhlb3JldGljLmNvbT4KCS0gQ2xlYXIgc2NyZWVuIGRlcHRoIGNvbWJvIGJveCBvbiBwYWdlIGluaXQuCgktIFNvbWUgYXBwZGVmYXVsdHMgc3VwcG9ydC4KCS0gUmVuYW1lIGhEbGcgdG8gZGlhbG9nIGluIHNvbWUgcGxhY2VzIHNvIGVuYWJsZS9kaXNhYmxlIG1hY3JvcyB3b3JrLgoJLSBEb24ndCB1cGRhdGUgcmVnaXN0cnkgd2hlbiB0aGUgR1VJIGlzIGJlaW5nIGluaXRpYWxseSBjb25maWd1cmVkLgoKMjAwMy0xMC0yMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGZpbGVzL3NtYi5jLCBncmFwaGljcy94MTFkcnYveGZvbnQuYywgaW5jbHVkZS9iaXRtYXBzL3dpbmUueHBtLAoJICBsaWJzL3dwcC9wcGwubCwgbGlicy93cHAvcHJlcHJvYy5jLCBtaXNjL3JlZ2lzdHJ5LmMsCgkgIHNlcnZlci91bmljb2RlLmMsIHNlcnZlci91bmljb2RlLmg6CglEYW5pZWwgTWFybWllciA8ZC5tYXJtaWVyQGJsdWV3aW4uY2g+CglGaXhlZCB3YXJuaW5ncyB3aXRoIGdjYyBvcHRpb24gIi1Xd3JpdGUtc3RyaW5ncyIuCgoJKiBkbGxzL21zdmNydC9kaXIuYywgZGxscy9udGRsbC9zdHJpbmcuYzoKCURhdmUgQmVsYW5nZXIgPGRhdmUuYmVsYW5nZXJAY2ltbWV0cnkuY29tPgoJRml4IHNwbGl0cGF0aCBhbmQgd3NwbGl0cGF0aCBmb3IgdGhlIGZpbGUgZXh0ZW5zaW9uLgoKCSogZGxscy9ycGNydDQvbmRyX21pZGwuYzogR3JlZ29yeSBNLiBUdXJuZXIgPGdtdHVybmVyMDA3QGFtZXJpdGVjaC5uZXQ+CgktIFJlbW92ZSBhbiBlcnJvbmVvdXMgY2hlY2sgaW4gTmRyU2VuZFJlY2VpdmUuCgktIENoYW5nZSBmaXhtZXMuCgoJKiBkbGxzL21zdmNydC9wcm9jZXNzLmM6IEdlcmFsZCBQZmVpZmVyIDxnZXJhbGRAcGZlaWZlci5jb20+CglSZW1vdmUgdW51c2VkIHZhcmlhYmxlcyBFWEUsIEJBVCwgQ01ELCBhbmQgQ09NLgoKCSogZGxscy94MTFkcnYveHJhbmRyLmM6IEdlcmFsZCBQZmVpZmVyIDxnZXJhbGRAcGZlaWZlci5jb20+CglSZW1vdmUgdW51c2VkIHZhcmlhYmxlIGRlcHRoc1tdLgoKCSogY29udHJvbHMvZWRpdC5jOiBSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglBIFdNX0NSRUFURSBtZXNzYWdlIHNlbnQgdG8gYW4gRWRpdCB3aW5kb3cgcHJvY2VkdXJlIHNob3VsZAoJcmV0dXJuIDEuIFBvd2VyIEJ1aWxkZXIgbWFza2VkIGVkaXQgY29udHJvbHMgZGVwZW5kIG9uIGl0LgoKCSogdG9vbHMvd2luYXBpL3Rlc3RzLmRhdCwgdG9vbHMvd2luYXBpL3dpbmFwaV90ZXN0OgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglVcGRhdGUgdGVzdHMuZGF0IHRvIGluY2x1ZGUgdGhlIHZhcmlvdXMgI2luY2x1ZGUgZml4ZXMuCglnY2Mgc2F5cyB0aGF0IHNpemVvZihsb25nIGRvdWJsZSk9PTEyLgoJRml4IHRoZSBkZXRlY3Rpb24gb2YgcHJhZ21hIHBhY2tzIHRvIGRldGVjdCAjaW5jbHVkZSA8Li4uPi4KCUdlbmVyYXRlIG9rKCIuLi5cbiIpIGNhbGxzLgoKCSogZG9jdW1lbnRhdGlvbi9idWdzLnNnbWwsIHRvb2xzL3Rlc3RydW46CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQ2hhbmdlIGFsbCBoZWFkL3RhaWwgLVggdG8gaGVhZC90YWlsIC1uIFggdG8gYmUgbW9yZSBQT1NJWGx5Cgljb21wbGlhbnQuCgoJKiBkbGxzL3NldHVwYXBpL01ha2VmaWxlLmluLCBkbGxzL3NldHVwYXBpL2luZnBhcnNlLmMsCgkgIGRsbHMvc2V0dXBhcGkvc2V0dXBhcGlfcHJpdmF0ZS5oLCBkbGxzL3NldHVwYXBpL3NldHVwY2FiLmMsCgkgIGRsbHMvc2V0dXBhcGkvc2V0dXB4MTYuaCwgaW5jbHVkZS9zZXR1cGFwaS5oOgoJU3RldmVuIEVkd2FyZHMgPHN0ZXZlbl9lZDQxNTNAeWFob28uY29tPgoJLSBXaW4xNi8zMiBjbGVhbnVwLgoJLSBGaXhlcyBmb3IgYnVpbGRpbmcgd2l0aCB0aGUgUFNESy4KCgkqIGRsbHMvYWR2YXBpMzIvcmVnaXN0cnkuYywgaW5jbHVkZS93aW5yZWcuaDoKCURhbmllbCBNYXJtaWVyIDxkLm1hcm1pZXJAYmx1ZXdpbi5jaD4KCVJlZ0NyZWF0ZUtleUV4e0EsV306IHN0YXRlIHRoYXQgY2xhc3Mgc3RyaW5nIGlzIGNvbnN0YW50LgoKCSogZGxscy9jb21jdGwzMi90YWIuYzogTWF4aW1lIEJlbGxlbmfpIDxtYXhpbWUuYmVsbGVuZ2VAbGFwb3N0ZS5uZXQ+CglGaXggVEFCX0RlbGV0ZUl0ZW0gYW5kIFRBQl9EZWxldGVBbGxJdGVtcyByZWdyZXNzaW9ucyBpbnRyb2R1Y2VkIGJ5Cgl0aGUgbGFzdCBUQUJfSW52YWxpZGF0ZVRhYkFyZWEgY2hhbmdlcy4KCUNvcnJlY3QgdGhlIGluZGVudGF0aW9uIGZvciB0aGVzZSBmdW5jdGlvbnMuCgoJKiBkbGxzL2NvbWN0bDMyL3N0YXR1cy5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglEb24ndCB1c2UgZnJlZSdkIHBvaW50ZXIgaW4gc3RhdHVzIGNvbnRyb2wgLSBmb3VuZCBieSBWYWxncmluZC4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL2ZpbGUuYzogRmVyZW5jIFdhZ25lciA8d2ZlcmlAYWZhdmFudC5lbHRlLmh1PgoJQWNjb3VudCBmb3IgdW5pcXVlIE5UNCBiZWhhdmlvdXIuCglCZXR0ZXIgZXJyb3IgbWVzc2FnZS4KCgkqIGZpbGVzL2RpcmVjdG9yeS5jOiBHZXJhbGQgUGZlaWZlciA8Z2VyYWxkQHBmZWlmZXIuY29tPgoJUmVtb3ZlIHVudXNlZCB2YXJpYWJsZSB3aW5lVy4KCgkqIHdpbmRvd3Mvd2luLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCVVzZSB0aGUgZXh0ZW5kZWQgd2luZG93IHN0eWxlIGZvciB0aGUgcHJldmlvdXMgc3R5bGUgaW4gdGhlIHN0eWxlCgljaGFuZ2luZy9jaGFuZ2VkIG1lc3NhZ2VzIGlmIFdJTl9TZXRXaW5kb3dMb25nIGlzIGNhbGxlZCB3aXRoCglHV0xfRVhTVFlMRS4KCgkqIGRsbHMvd2lubW0vbW1zeXN0ZW0uYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCU9ubHkgcmV0dXJuIHRoZSBudW1iZXIgb2YgYnl0ZXMgcmVxdWVzdGVkLgoKMjAwMy0xMC0xNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIEFOTk9VTkNFLCBDaGFuZ2VMb2csIFZFUlNJT04sIGNvbmZpZ3VyZTogUmVsZWFzZSAyMDAzMTAxNi4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KMjAwMy0xMC0xNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGxpYnMvd2luZS93aW5lLmRlZjogRG9uJ3QgZXhwb3J0IHRoZSB3aW5lX3B0aHJlYWRfKiBmdW5jdGlvbnMuCgoJKiBkbGxzL2NvbW1kbGcvY2RsZzMyLmMsIGRsbHMvZG1sb2FkZXIvbG9hZGVyc3RyZWFtLmMsCgkgIGRsbHMva2VybmVsL3Byb2Nlc3MuYywgcHJvZ3JhbXMvbm90ZXBhZC9kaWFsb2cuYzoKCVJlcGxhY2VkIGEgZmV3IG1vcmUgMHhmZmZmZmZmZiBieSB0aGUgYXBwcm9wcmlhdGUgY29uc3RhbnRzLgoKCSogZGxscy9tc3ZjcnQvZGlyLmMsIGRsbHMvbXN2Y3J0L2ZpbGUuYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYywgZGxscy9zaGVsbDMyL3Rlc3RzL3NobGZpbGVvcC5jLAoJICBkbGxzL3ZlcnNpb24vaW5zdGFsbC5jLCBkbGxzL3dpbmVkb3MvaW50MjEuYywgZGxscy93aW5tbS9tbWlvLmMsCgkgIGZpbGVzL2ZpbGUuYywgbWlzYy9yZWdpc3RyeS5jLCBwcm9ncmFtcy9hdml0b29scy9hdmlpbmZvLmMsCgkgIHByb2dyYW1zL2F2aXRvb2xzL2F2aXBsYXkuYywgcHJvZ3JhbXMvd2NtZC9kaXJlY3RvcnkuYywKCSAgcHJvZ3JhbXMvd2luZWRiZy9zb3VyY2UuYywgcHJvZ3JhbXMvd2luaGVscC9tYWNyby5jOgoJUm9sZiBLYWxiZXJtYXR0ZXIgPHJvbGYua2FsYmVybWF0dGVyQGNpdGVuZy5jb20+CglVc2UgSU5WQUxJRF9GSUxFX0FUVFJJQlVURVMgdG8gdGVzdCBmb3IgZmFpbHVyZSBvZgoJR2V0RmlsZUF0dHJpYnV0ZXNBL1cgYW5kIG5vdCAtMSBvciAweEZGRkZGRkZGLgoKCSogZG9jdW1lbnRhdGlvbi9zYW1wbGVzL2NvbmZpZzogQWxleCBQYXNhZHluIDxhanBAbWFpbC51dGV4YXMuZWR1PgoJQWRkIFVzZVhSYW5kUiB0byBzYW1wbGUgY29uZmlnIGZpbGUuCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYzoKCVRoZSBpbXBvcnRlZCB0eXBlbGliIG5hbWUgbXVzdCBiZSBjb252ZXJ0ZWQgdG8gVW5pY29kZS4KCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYzogQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJQWRkIHN1cHBvcnQgZm9yIGFsbCBaIGJ1ZmZlciBkZXB0aHMgdGhhdCBhcmUgbG93ZXIgdGhhdCB0aGUgY3VycmVudAoJb25lLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWM6CglSZWNlbnQgdmVyc2lvbnMgb2YgbGliWHJhbmRyIGRlcGVuZCBvbiBsaWJYcmVuZGVyLgoKCSogZGxscy9rZXJuZWwvcmVsYXkxNi5jLCBkbGxzL250ZGxsL3JlbGF5LmMsCgkgIGRvY3VtZW50YXRpb24vd2luZS5jb25mLm1hbjoKCUZpeGVkIGhhbmRsaW5nIG9mIHJlbGF5IGFuZCBzbm9vcCBpbmNsdWRlL2V4Y2x1ZGUgbGlzdHMgdG8gYmVoYXZlIGFzCglkb2N1bWVudGVkIChiYXNlZCBvbiBhIHBhdGNoIGJ5IFJlaW4gS2xhemVzKS4KCgkqIGRsbHMva2VybmVsL3Nub29wMTYuYzogUHJpbnQgdGhyZWFkIGlkIGluIHNub29wIHRyYWNlcy4KCgkqIGRsbHMveDExZHJ2L01ha2VmaWxlLmluLCBkbGxzL3gxMWRydi9kZXNrdG9wLmMsCgkgIGRsbHMveDExZHJ2L3NldHRpbmdzLmMsIGRsbHMveDExZHJ2L3gxMWRkcmF3LmMsIGRsbHMveDExZHJ2L3gxMWRydi5oLAoJICBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jLCBkbGxzL3gxMWRydi94cmFuZHIuYywKCSAgZGxscy94MTFkcnYveHJhbmRyLmgsIGRsbHMveDExZHJ2L3h2aWRtb2RlLmMsIGRsbHMveDExZHJ2L3h2aWRtb2RlLmg6CglBbGV4IFBhc2FkeW4gPGFqcEBtYWlsLnV0ZXhhcy5lZHU+CgktIEFkZGVkIHN1cHBvcnQgZm9yIFhSYW5kUiBleHRlbnNpb24uCgktIEFkZGVkIG5ldyBkZWJ1Z2dpbmcgY2hhbm5lbHMgZm9yIHJlc29sdXRpb24gY2hhbmdpbmcuCgktIFN0cmVhbWxpbmVkIHJlc29sdXRpb24gY2hhbmdpbmcgYW5kIHJlbW92ZWQgZHVwbGljYXRlZCBjb2RlLgoKCSogZGxscy9jb21tZGxnL01ha2VmaWxlLmluLCBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jLAoJICBkbGxzL2NvbW1kbGcvZmlsZWRsZy5oLCBkbGxzL2NvbW1kbGcvZmlsZWRsZzE2LmMsCgkgIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYzoKCVN0ZXZlbiBFZHdhcmRzIDxzdGV2ZW5fZWQ0MTUzQHlhaG9vLmNvbT4KCS0gU3BsaXQgV2luMTYvMzIgZmlsZSBkaWFsb2dzLgoJLSBSZW1vdmUgc3VwcG9ydCBmb3IgV2luMTYgc3R5bGUnZCBXaW4zMiBkaWFsb2dzLgoKMjAwMy0xMC0xNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHByb2dyYW1zL3dpbmVkYmcvZGVidWdnZXIuaCwgcHJvZ3JhbXMvd2luZWRiZy9tZW1vcnkuYzoKCUdldCByaWQgb2YgdGhlIG1lbW9yeSBhbGxvY2F0aW9uIG1hY3JvcywgdXNlIHJlYWwgZnVuY3Rpb25zIGluc3RlYWQuCgoJKiBkbGxzL3NobHdhcGkvcmVnLmM6IEZpeGVkIGN1dCZwYXN0ZSBlcnJvci4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzogQWRhbSBHdW5keSA8YXJnQGN5YmVyc2NpZW5jZS5jb20+CglPbmx5IHNlbmQgVFZOX0lURU1FWFBBTkRJTkcgZm9yIGl0ZW1zIG1hcmtlZCBhcyBoYXZpbmcgY2hpbGRyZW4uCgoJKiBkbGxzL3dpbm1tL2xvbHZsZHJ2LmMsIGRsbHMvd2lubW0vdGltZS5jLAoJICBkbGxzL3dpbm1tL3dpbmVqYWNrL2F1ZGlvLmMsIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jLAoJICBkbGxzL3dpbnNwb29sL2luZm8uYywgZ3JhcGhpY3MveDExZHJ2L3BhbGV0dGUuYywKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvY3Vyc2VzLmMsIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25zb2xlLmMsCgkgIHByb2dyYW1zL3dpbmhlbHAvaGxwZmlsZS5jOgoJT2xlZyBQcm9raG9yb3YgPHhvbGVncHJvQHJiY21haWwucnU+CglBbm90aGVyIHBvcnRpb24gb2YgSGVhcFJlQWxsb2MgZml4ZXMuCgoJKiBkb2N1bWVudGF0aW9uL3NhbXBsZXMvd2luLmluaTogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCU1lcmdlIHdpbi5pbmkvW21jaSBleHRlbnNpb25zXSBpbnRvIHRoZSByZWdpc3RyeS4KCgkqIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGRsbHMva2VybmVsL2xvY2FsZS5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUltcGxlbWVudGVkIEZvbGRTdHJpbmdXLgoKCSogaW5jbHVkZS93aW5lL3VuaWNvZGUuaCwgbGlicy91bmljb2RlL01ha2VmaWxlLmluLAoJICBsaWJzL3VuaWNvZGUvZm9sZC5jLCBsaWJzL3VuaWNvZGUvd2luZV91bmljb2RlLmRlZjoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglBZGRlZCBzdHJpbmcgZm9sZGluZyBzdXBwb3J0LgoKCSogZGxscy9nZGkvZnJlZXR5cGUuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTcGVjaWZ5IGZvdXJjYyBjb2RlcyBmb3IgZW5jb2RpbmdzIGRpcmVjdGx5LCBpbnN0ZWFkIG9mIHVzaW5nIGNoYW5naW5nCgllbnVtIG5hbWVzLgoKCSogcHJvZ3JhbXMvcmVnYXBpL3JlZ2FwaS5jOiBHZXJhbGQgUGZlaWZlciA8Z2VyYWxkQHBmZWlmZXIuY29tPgoJUmVtb3ZlIHVudXNlZCB2YXJpYWJsZSBjb21tYW5kU2F2ZVJlZ2lzdHJ5LgoKCSogZGxscy91c2VyL2hvb2suYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBhbiBvYnZpb3VzIHR5cG8gaW4gY2FsbF9ob29rX0F0b1cuCgoJKiBkbGxzL29sZWF1dDMyLy5jdnNpZ25vcmUsIGRsbHMvb2xlYXV0MzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvb2xlYXV0MzIvb2xlYXV0LmMsIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzIucmMsCgkgIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzJfQ3oucmMsIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzJfRGUucmMsCgkgIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzJfRGsucmMsIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzJfRW4ucmMsCgkgIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzJfRXMucmMsIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzJfRnIucmMsCgkgIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzJfSHUucmMsIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzJfSXQucmMsCgkgIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzJfTmwucmMsIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzJfTm8ucmMsCgkgIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzJfU3YucmMsIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzJfVGgucmMsCgkgIGRsbHMvb2xlYXV0MzIvcmVzb3VyY2UuaCwgZGxscy9vbGVhdXQzMi92YXJpYW50Lmg6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJQWRkIHJlc291cmNlcyBmb3IgYm9vbGVhbiBzdHJpbmdzIGluIHNldmVyYWwgbGFuZ3VhZ2VzLgoKCSogZGxscy93aW5tbS9tY2kuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCU1lcmdlIHdpbi5pbmkvW21jaSBleHRlbnNpb25zXSBpbnRvIHRoZSByZWdpc3RyeS4KCgkqIHdpbmVkZWZhdWx0LnJlZzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUEgZmV3IG1vcmUga2V5cyBleHRyYWN0ZWQgZnJvbSB0aGUgb2xkIGRvY3VtZW50YXRpb24vc2hlbGwzMi4KCgkqIGRvY3VtZW50YXRpb24vaW5zdGFsbGF0aW9uLXVuZC1rb25maWd1cmF0aW9uLmdlcm1hbjoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglSZW1vdmUgb3V0LW9mLWJhbmQgaW5zdGFsbGF0aW9uLXVuZC1rb25maWd1cmF0aW9uLmdlcm1hbi4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjOgoJUmVncm91cCB0aGUgWDExIGhlYWRlciBjaGVja3MgdG8gcmVkdWNlIHRoZSBzaXplIG9mIHRoZSBnZW5lcmF0ZWQKCWNvbmZpZ3VyZSBhIGJpdC4KCgkqIGRsbHMva2VybmVsL3Byb2ZpbGUuYywgZmlsZXMvZGlyZWN0b3J5LmMsIGZpbGVzL2Rvc19mcy5jLAoJICBmaWxlcy9kcml2ZS5jLCBpbmNsdWRlL2RyaXZlLmg6CglHZXQgcmlkIG9mIHRoZSBkcml2ZSBjb2RlcGFnZXMgYW5kIHVzZSBDUF9VTklYQ1AgaW5zdGVhZC4KCgkqIGRsbHMvbXN2Y3J0L2ZpbGUuYywgZGxscy9tc3ZjcnQvdGVzdHMvY3BwLmMsIGluY2x1ZGUvd2luZS9wb3J0LmgsCgkgIGxpYnMvcG9ydC9zcGF3bi5jLCBwcm9ncmFtcy93aW5lbWVudWJ1aWxkZXIvd2luZW1lbnVidWlsZGVyLmMsCgkgIHRvb2xzL3dpbmVnY2MvdXRpbHMuYywgdG9vbHMvd2luZWdjYy91dGlscy5oLAoJICB0b29scy93aW5lZ2NjL3dpbmV3cmFwLmM6CglEYW5pZWwgTWFybWllciA8ZC5tYXJtaWVyQGJsdWV3aW4uY2g+CglGaXhlZCB3YXJuaW5ncyB3aXRoIGdjYyBvcHRpb24gIi1Xd3JpdGUtc3RyaW5ncyIuCgoJKiBvYmplY3RzL2ZvbnQuYzogRGF2ZSBCZWxhbmdlciA8ZGF2ZS5iZWxhbmdlckBjaW1tZXRyeS5jb20+CglHZXQgV2luZSB0byBiZWhhdmUgbGlrZSBXaW5kb3dzIGRvZXMgd2hlbiBCb2xkIGFuZC9vciBJdGFsaWMgaXMKCXNwZWNpZmllZCBpbiB0aGUgdHlwZWZhY2UgbmFtZSBhcmd1bWVudCB0byBDcmVhdGVGb250LgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGluY2x1ZGUvY29uZmlnLmguaW46CglBbGV4IFBhc2FkeW4gPGFqcEBtYWlsLnV0ZXhhcy5lZHU+CglDaGVjayBmb3IgWHJhbmRyIGV4dGVuc2lvbi4KCgkqIGRsbHMvbXN2Y3J0L2Rpci5jLCBkbGxzL250ZGxsL3N0cmluZy5jOgoJUmV3cm90ZSBzcGxpdHBhdGggYW5kIHdzcGxpdHBhdGggdG8gYXZvaWQgbW9kaWZ5aW5nIHRoZSBwYXRoCglzZXBhcmF0b3JzLgoKCSogZGxscy9nZGkvZnJlZXR5cGUuYzogRGF2ZSBCZWxhbmdlciA8ZGF2ZS5iZWxhbmdlckBjaW1tZXRyeS5jb20+CglJbXByb3ZlZCBzZWxlY3Rpb24gb2YgZnJlZXR5cGUgZmFjZSBjaGFybWFwLgoKCSogZGxscy9nZGkvZW5obWZkcnYvYml0Ymx0LmMsIGRsbHMvZ2RpL2VuaG1mZHJ2L2luaXQuYzoKCURhdmUgQmVsYW5nZXIgPGRhdmUuYmVsYW5nZXJAY2ltbWV0cnkuY29tPgoJSW1wbGVtZW50ZWQgQml0Qmx0LCBTdHJldGNoQmx0IGFuZCBTZXRESUJpdHNUb0RldmljZSBFTUYgZHJpdmVyCgljYWxsYmFja3MuCglDbGVhbmVkIHVwIHJlZHVuZGFudCBjb2RlIGluIEVNRkRSVl9TdHJldGNoRElCaXRzLgoKCSogbGlicy91bmljb2RlL2Nhc2VtYXAuYywgbGlicy91bmljb2RlL2NwbWFwLnBsOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUFkZCBnZW5lcmF0aW9uIG9mIGRpZ2l0IGFuZCBjb21wYXRhYmlsaXR5IG1hcHBpbmcgdGFibGVzLgoJR2VuZXJhdGUgc21hbGxlciBtYXBwaW5nIHRhYmxlcyBieSBtZXJnaW5nIG92ZXJsYXBzLgoKCSogb2JqZWN0cy9kaWIuYzogRGF2ZSBCZWxhbmdlciA8ZGF2ZS5iZWxhbmdlckBjaW1tZXRyeS5jb20+CglJbiBDcmVhdGVESUJpdG1hcCwgdGhlIGZhY3QgdGhhdCB0aGUgYml0cyBpbml0IGZsYWcgaXMgc2V0IG9yIG5vdAoJZG9lc24ndCBoYXZlIGFueXRoaW5nIHRvIGRvIHdpdGggdGhlIGNvbG9yIHN0YXRlIG9mIHRoZSBESUIuCgoyMDAzLTEwLTE0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogcHJvZ3JhbXMvd2luZWRiZy9kYmcueSwgcHJvZ3JhbXMvd2luZWRiZy9kZWJ1Zy5sLAoJICBwcm9ncmFtcy93aW5lZGJnL2RlYnVnZ2VyLmgsIHByb2dyYW1zL3dpbmVkYmcvZGlzcGxheS5jLAoJICBwcm9ncmFtcy93aW5lZGJnL2hhc2guYywgcHJvZ3JhbXMvd2luZWRiZy9pbmZvLmM6CglNaWNoYWwgSmFudXN6IE1pcm9zbGF3IDxNLk1pcm9zbGF3QGVsa2EucHcuZWR1LnBsPgoJRXh0ZW5kIGRpc3BsYXlzOiBub3cgb25lIGNhbiBhZGQgZGlzcGxheXMgYWN0aXZlIG9ubHkgaW4gc3BlY2lmaWVkCglmdW5jdGlvbjsgZGlzcGxheXMgbm93IGNhbiBiZSBlbmFibGVkL2Rpc2FibGVkIGxpa2UgaW4gZ2RiLgoKCSogZGxscy9vbGUzMi9pZnMuaCwgaW5jbHVkZS9vYmpiYXNlLmgsIGluY2x1ZGUvb2JqaWRsLmgsCgkgIGluY2x1ZGUvb2JqaWRsLmlkbDoKCU1vdmVkIHRoZSAxNi1iaXQgc3RvcmFnZSBpbnRlcmZhY2VzIG91dCBvZiB0aGUgZXhwb3J0ZWQgaGVhZGVycy4KCgkqIGRvY3VtZW50YXRpb24vcnVubmluZy5zZ21sOiBSZW1vdmVkIHRoZSAtLWRsbCBvcHRpb24uCgoJKiBkb2N1bWVudGF0aW9uL01ha2VmaWxlLmluLCBkb2N1bWVudGF0aW9uL2RlZmF1bHQuZHNsOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVJlbW92ZSB0aGUgZGVmYXVsdC5kc2wgc2hlZXQgLS0gdGhlIGRlZmF1bHQgaXMgZ29vZCBlbm91Z2guCgoJKiBkbGxzL2NvbWN0bDMyL2hlYWRlci5jLCBpbmNsdWRlL2NvbW1jdHJsLmg6CglNYXhpbWUgQmVsbGVuZ+kgPG1heGltZS5iZWxsZW5nZUBsYXBvc3RlLm5ldD4KCS0gSW1wbGVtZW50ZWQgSEVBREVSX1NldEJpdG1hcE1hcmdpbiBhbmQgSEVBREVSX0dldEJpdG1hcE1hcmdpbi4KCS0gR2V0IHJpZCBvZiBzb21lIG1hZ2ljIG51bWJlcnMgaW4gSEVBREVSX0RyYXdJdGVtLgoJLSBGaXhlZCB0aGUgZHJhd2luZyBvZiBpbWFnZXMgZnJvbSBpbWFnZWxpc3Qgd2hlbiB0aGUKCSAgSERGX0JJVE1BUF9PTl9SSUdIVCBmbGFnIGlzIHNldC4KCgkqIGRsbHMvY29tY3RsMzIvdGFiLmM6IE1heGltZSBCZWxsZW5n6SA8bWF4aW1lLmJlbGxlbmdlQGxhcG9zdGUubmV0PgoJT25seSByZWRyYXcgdGhlIG5lY2Vzc2FyeSBhcmVhIG9mIHRoZSB0YWIgY29tcG9uZW50IGFuZCBub3QgdGhlIHdob2xlCgljb21wb25lbnQgbGlrZSB3aW5kb3dzIGRvZXMuCgoJKiBncmFwaGljcy94MTFkcnYvYml0Ymx0LmM6CglNYXhpbWUgQmVsbGVuZ+kgPG1heGltZS5iZWxsZW5nZUBsYXBvc3RlLm5ldD4KCVByZXZlbnQgYSBjcmFzaCB3aXRoIGEgQmFkRHJhd2FibGUgWCBlcnJvciBtZXNzYWdlIHdpdGggc29tZSBNYXNrQmx0CgljYWxscy4KCgkqIHByb2dyYW1zL3dpbmhlbHAvaGxwMnNnbWwuYzogR2VyYWxkIFBmZWlmZXIgPGdlcmFsZEBwZmVpZmVyLmNvbT4KCVJlbW92ZSB1bnVzZWQgdmFyaWFibGUgZGVidWdfY2hhbm5lbHMuCgoJKiBkbGxzL29sZWF1dDMyL3BhcnNlZHQuYzogR2VyYWxkIFBmZWlmZXIgPGdlcmFsZEBwZmVpZmVyLmNvbT4KCVJlbW92ZSB1bnVzZWQgdmFyaWFibGVzIG1kYXlzLCBtb250aHMsIGRheXMsIGFuZCBEYXRlU3R5bGUuCgoJKiBkbGxzL3gxMWRydi9rZXlib2FyZC5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRml4IEZpbm5pc2gga2V5Ym9hcmQgbGF5b3V0IHRvIGJldHRlciBtYXRjaCB0aGUgWEZyZWU4NiBvbmUuCgoJKiBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJUGFzcyB0aGUgY29ycmVjdCBscGFyYW0gd2hlbiBjYWxsaW5nIFBhZ2VEbGdQcm9jQSdzIFBhZ2VTZXR1cEhvb2sgZm9yCglXTV9JTklURElBTE9HLgoKCSogZGxscy9hdmlmaWwzMi9hY21zdHJlYW0uYywgZGxscy9hdmlmaWwzMi9hdmlmaWxlLmM6CglNaWNoYWVsIEf8bm5ld2lnIDxNaWNoYWVsR3Vlbm5ld2lnQGdteC5kZT4KCUZpeGVkIHVzYWdlIG9mIEdsb2JhUmVBbGxvYy4KCgkqIGRsbHMvd2lubW0vd2lubW0uYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUZyZWUgc2hvdWxkIG5vdCBoYXBwZW4gd2hlbiBzdGlsbCBwbGF5aW5nLgoKCSogZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL2tlcm5lbF9tYWluLmMsCgkgIGRsbHMva2VybmVsL2xvY2FsZS5jLCBkbGxzL2tlcm5lbC9wcm9jZXNzLmMsIG1lbW9yeS9jb2RlcGFnZS5jOgoJTW92ZWQgY29kZXBhZ2UgZnVuY3Rpb25zIHRvIGRsbHMva2VybmVsLgoJQ2hhbmdlZCBpbml0aWFsaXNhdGlvbiBvZiB0aGUgbG9jYWxlIGZ1bmN0aW9ucyBzbyB0aGF0IENQX1VOSVhDUCB3b3JrcwoJYXMgc29vbiBhcyBwb3NzaWJsZSBkdXJpbmcga2VybmVsMzIgaW5pdC4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL2dkaS9NYWtlZmlsZS5pbiwKCSAgZGxscy9pcGhscGFwaS9pZmVudW0uYywgZGxscy9pcGhscGFwaS9pcHN0YXRzLmMsCgkgIGRsbHMvbXNodG1sL21zaHRtbC5zcGVjLCBkbGxzL21zaS9tc2kuc3BlYywgZGxscy9ycGNydDQvTWFrZWZpbGUuaW4sCgkgIGRsbHMvd2luaW5ldC9NYWtlZmlsZS5pbiwgZGxscy93aW5pbmV0L2ludGVybmV0LmgsCgkgIGRsbHMvd2luc29jay9zb2NrZXQuYywgaW5jbHVkZS9jb25maWcuaC5pbiwgaW5jbHVkZS93aW5lL3BvcnQuaCwKCSAgbGlicy93aW5lL3dpbmUuZGVmOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVkIHNvbWUgcHJvYmxlbXMgZm91bmQgd2hpbGUgY29tcGlsaW5nIGFuZCBsaW5raW5nIFdpbmUgdW5kZXIKCUN5Z3dpbi4KCgkqIGNvbnRyb2xzL2xpc3Rib3guYywgZGxscy9kc291bmQvYnVmZmVyLmMsIGRsbHMvZHNvdW5kL2NhcHR1cmUuYywKCSAgZGxscy9kc291bmQvZHNvdW5kX21haW4uYywgZGxscy9kc291bmQvcHJpbWFyeS5jLAoJICBkbGxzL2tlcm5lbC9lZGl0bGluZS5jLCBkbGxzL2tlcm5lbC9nbG9iYWwxNi5jLAoJICBkbGxzL2tlcm5lbC9yZXNvdXJjZTE2LmMsIGRsbHMva2VybmVsL3Nub29wMTYuYywKCSAgZGxscy9vbGUzMi9vbGVwcm94eS5jLCBkbGxzL29sZTMyL3JwYy5jLCBkbGxzL3JwY3J0NC9ycGNfc2VydmVyLmMsCgkgIGRsbHMvc2V0dXBhcGkvZGlyaWQuYywgZGxscy9zZXR1cGFwaS9zZXR1cHhfbWFpbi5jLAoJICBkbGxzL3VzZXIvbWVzc2FnZS5jOgoJT2xlZyBQcm9raG9yb3YgPHhvbGVncHJvQHJiY21haWwucnU+CglBbm90aGVyIHBvcnRpb24gb2YgSGVhcFJlQWxsb2MgZml4ZXMuCgoJKiBkbGxzL2tlcm5lbC9pbnN0ci5jLCBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmMsIGRsbHMvd2luZWRvcy9kb3N2bS5jLAoJICBkbGxzL3dpbmVkb3MvcmVsYXkuYzoKCUp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCVJlbW92ZSByYWNlcyBmcm9tIERQTUkgYXN5bmMgZXZlbnQgaGFuZGxpbmcuCgoJKiBkbGxzL250ZGxsL2xvYWRlci5jOiBHZXJhbGQgUGZlaWZlciA8Z2VyYWxkQHBmZWlmZXIuY29tPgoJRml4IGZ1bmN0aW9uIHBvaW50ZXIgdmFyaWFibGUgZGVjbGFyYXRpb24gaW4gX193aW5lX3Byb2Nlc3NfaW5pdCgpLgoKCSogZGxscy93aW5tbS93aW5lYWxzYS9hdWRpby5jOiBPbGVnIFByb2tob3JvdiA8eG9sZWdwcm9AcmJjbWFpbC5ydT4KCVNtYWxsIGZpeCBpbiBzb3VuZCBmbHVzaGluZyBjb2RlLgoKCSogZGxscy9rZXJuZWwvZGVidWdnZXIuYywgZGxscy9rZXJuZWwvZXhjZXB0LmMsIGRsbHMva2VybmVsL3Byb2Nlc3MuYywKCSAgZGxscy9udGRsbC9leGNlcHRpb24uYywgZGxscy9udGRsbC9sb2FkZXIuYywKCSAgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLCBzZXJ2ZXIvZGVidWdnZXIuYywgc2VydmVyL3Byb2Nlc3MuYywKCSAgc2VydmVyL3Byb2Nlc3MuaCwgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3RyYWNlLmM6CglTZXQgb3IgY2xlYXIgdGhlIEJlaW5nRGVidWdnZWQgZmxhZyBpbiB0aGUgUEVCIHdoZW4gYSBkZWJ1Z2dlciBpcwoJYXR0YWNoZWQgdG8gb3IgZGV0YWNoZWQgZnJvbSBhIHByb2Nlc3MuCglEb24ndCBzZW5kIGV4Y2VwdGlvbiBldmVudHMgdG8gdGhlIHNlcnZlciB1bmxlc3MgYSBkZWJ1Z2dlciBpcwoJcHJlc2VudC4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL2tlcm5lbC9wdGhyZWFkLmMsIGluY2x1ZGUvY29uZmlnLmguaW4sCgkgIGxpYnMvd2luZS9wb3J0LmM6CglBZGRlZCBjaGVjayBmb3IgcHRocmVhZC5oIChyZXBvcnRlZCBieSBTdGV2ZW4gRWR3YXJkcykuCglSZW1vdmVkIGluaXRfZG9uZSBjaGVjaywgdGhlIHByb2Nlc3MgaGVhcCBpcyBub3cgY3JlYXRlZCBiZWZvcmUga2VybmVsCglpcyBsb2FkZWQgYW55d2F5LgoKCSogZGxscy9tc2kvc3FsLnksIHRvb2xzL3dyYy9kdW1wcmVzLmMsIHRvb2xzL3dyYy9kdW1wcmVzLmgsCgkgIHRvb2xzL3dyYy9nZW5yZXMuYywgdG9vbHMvd3JjL2dlbnJlcy5oLCB0b29scy93cmMvcGFyc2VyLmwsCgkgIHRvb2xzL3dyYy9wYXJzZXIueSwgdG9vbHMvd3JjL3JlYWRyZXMuYywgdG9vbHMvd3JjL3V0aWxzLmMsCgkgIHRvb2xzL3dyYy91dGlscy5oOgoJRGFuaWVsIE1hcm1pZXIgPGQubWFybWllckBibHVld2luLmNoPgoJRml4ZWQgd2FybmluZ3Mgd2l0aCBnY2Mgb3B0aW9uICItV3dyaXRlLXN0cmluZ3MiLgoKCSogZGxscy94MTFkcnYva2V5Ym9hcmQuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBzb21lIGNhc2VzIHdoZW4gJ2tleXN5bScgbWlnaHQgYmUgbGVmdCB1bmluaXRpYWxpemVkLgoKCSogZGxscy93aW5tbS93aW5lYWxzYS9hdWRpby5jOiBEYW5pZWwgTWFybWllciA8ZC5tYXJtaWVyQGJsdWV3aW4uY2g+CglBTFNBX1dhdmVJbml0OiByZXBhaXJlZCBkZXZpY2UgbmFtZS4KCgkqIGxvYWRlci9tb2R1bGUuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUNvbnZlcnQgR2V0QmluYXJ5VHlwZSB0byB1bmljb2RlLgoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWFpbi5jLCBkbGxzL2RkcmF3L2QzZHZpZXdwb3J0LmM6CglDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglBZGQgbmVjZXNzYXJ5IEFkZFJlZi9SZWxlYXNlIHN0dWZmIHRvIHtTZXQvR2V0fUN1cnJlbnRWaWV3cG9ydC4KCVdoZW4gY2hhbmdpbmcgcGFyYW1ldGVycyBvZiBhIHZpZXdwb3J0LCBkbyB0aGUgYXBwcm9wcmlhdGUgdXBkYXRlIGlmCglpdCBpcyBjdXJyZW50LgoKCSogZGxscy9jb21jdGwzMi90YWIuYzogVml0YWxpeSBNYXJnb2xlbiA8d2luZS1wYXRjaEBraWV2aW5mby5jb20+CglGaXggc2V0dGluZyBzaXplIG9mIHRhYiBjb250cm9sLgoKMjAwMy0xMC0xMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNjaGVkdWxlci9wdGhyZWFkLmM6CglNb3ZlZCB0aGUgZXJybm8gZnVuY3Rpb25zIHBhdGNoaW5nIHRvIHdpbmVfcHRocmVhZF9pbml0X3RocmVhZCBzbyB0aGF0CglpdCdzIGRvbmUgZWFybHkgZW5vdWdoIG5vdyB0aGF0IGtlcm5lbCBpcyBvbmx5IGxvYWRlZCBsYXRlciBvbi4KCgkqIG1pc2NlbXUvTWFrZWZpbGUuaW46CglMaW5rIHRoZSBtYWluIGJpbmFyeSBhZ2FpbnN0IGxpYnB0aHJlYWQgZm9yIE5QVEwgYnVpbGRzLgoKMjAwMy0xMC0xMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL3Byb2Nlc3MuYzoKCVVwZGF0ZSBfX3dpbmVfbWFpbl9hcmdjIGFmdGVyIG9wdGlvbiBwcm9jZXNzaW5nLgoKCSogZGxscy9kbXVzaWMvZG11c2ljLmMsIHByb2dyYW1zL3dpbmVkYmcvaGFzaC5jLAoJICBwcm9ncmFtcy93aW5oZWxwL21hY3JvLmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRml4IHNvbWUgaW5zdGFuY2VzIG9mIG1lbW9yeSBhbGxvY2F0aW9uIHRocm91Z2ggSGVhcFJlQWxsb2MoKS4KCgkqIGRsbHMvZ2RpL2ZyZWV0eXBlLmMsIGRsbHMveDExZHJ2L3hyZW5kZXIuYzoKCURhdmUgQmVsYW5nZXIgPGRhdmUuYmVsYW5nZXJAY2ltbWV0cnkuY29tPgoJSW1wbGVtZW50YXRpb24gb2YgdW5kZXJsaW5lIGFuZCBzdHJpa2VvdXQgdGV4dCBpbiB4cmVuZGVyLgoKCSogb2JqZWN0cy9kaWIuYzogRGF2ZSBCZWxhbmdlciA8ZGF2ZS5iZWxhbmdlckBjaW1tZXRyeS5jb20+CglJbXByb3ZlbWVudCBvbiB0aGUgY29kZSB0aGF0IGRlYWxzIHdpdGggc2V0dGluZyB0aGUgY29sb3IgbWFwIGluCglHZXRESUJpdHMuCgoJKiBkbGxzLyovTWFrZWZpbGUuaW46CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJUmVtb3ZlIFNZTUJPTEZJTEUgYW5kIExERExMRkxBR1MgZnJvbSBNYWtlZmlsZXMuCgoJKiBNYWtlLnJ1bGVzLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9NYWtlZGxsLnJ1bGVzLmluLAoJICBkbGxzL01ha2V0ZXN0LnJ1bGVzLmluLCBwcm9ncmFtcy9NYWtlcHJvZy5ydWxlcy5pbiwKCSAgcHJvZ3JhbXMvYXZpdG9vbHMvTWFrZWZpbGUuaW46CglEZWZpbmUgYW4gTERETEwgY29tbWFuZCB0byBsaW5rIGRsbHMsIGluc3RlYWQgb2YgdXNpbmcgTERETExGTEFHUy4KCgkqIE1ha2VmaWxlLmluLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL21ha2VfZGxscywgdG9vbHMvd2luZXdyYXBwZXI6CglXZSBubyBsb25nZXIgbmVlZCB0byBsaW5rIGFnYWluc3QgbnRkbGwgaW4gdGhlIFVuaXggc2Vuc2UuCgoyMDAzLTEwLTEwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9udGRsbC9NYWtlZmlsZS5pbiwgbWlzY2VtdS9NYWtlZmlsZS5pbjoKCU1vdmVkIHRoZSBwdGhyZWFkIGVtdWxhdGlvbiBpbnRvIHRoZSBtYWluIGJpbmFyeSBzbyB0aGF0IHdlIGRvbid0IG5lZWQKCXRvIGxpbmsgaXQgYWdhaW5zdCBudGRsbC4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlYXV0LmM6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglEb2N1bWVudGF0aW9uIHVwZGF0ZS4KCgkqIHRvb2xzL3dpbmVnY2Mvd2luZXdyYXAuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUhhdmUgdGhlIHdyYXBwZXIgbG9hZCB0aGUgdXNlZCBETExzIGluIGNhc2UgdGhlIG1haW4gcHJvZ3JhbQoJY2FsbHMgdGhlbSBmcm9tIGNvbnN0cnVjdG9ycyAod2l0aCBoZWxwIGZyb20gQWxleGFuZHJlIEp1bGxpYXJkKS4KCgkqIGRsbHMva2VybmVsL3Byb2Nlc3MuYywgaW5jbHVkZS93aW5lL2xpYnJhcnkuaCwgbGlicy93aW5lL2xvYWRlci5jOgoJRG9uJ3QgcmVmZXJlbmNlIHRoZSBlbnZpcm9uIGdsb2JhbCB2YXJpYWJsZSBmcm9tIGtlcm5lbDMyLCBpdCBtYXkgZmFpbAoJdG8gbGluayAocmVwb3J0ZWQgYnkgR2VyYWxkIFBmZWlmZXIpLgoKCSogZGxscy9udGRsbC9sb2FkZXIuYzoKCUZpeGVkIGltcG9ydGluZyBvZiBkbGxzIHdpdGggbm8gZXhwb3J0cyAocmVwb3J0ZWQgYnkgV2FycmVuIEJhaXJkKS4KCURvbid0IGNyYXNoIG9uIGFuIGVtcHR5IGxvYWQgb3JkZXIgc3BlY2lmaWNhdGlvbiAocmVwb3J0ZWQgYnkgTWF4aW1lCglCZWxsZW5n6SkuCglUcnkgdG8gYXZvaWQgY3Jhc2hpbmcgd2hlbiBhbiBpbXBvcnQgaXMgbWlzc2luZyBmb3IgYSBidWlsdGluIGRsbC4KCgkqIGRsbHMvTWFrZWRsbC5ydWxlcy5pbjoKCVRoZSBpbnRlcm1lZGlhdGUgLnRtcC5vIGZpbGUgaXMgbm8gbG9uZ2VyIG5lZWRlZC4KCURMTE1BSU4gaXMgbm90IHVzZWQgYW55bW9yZS4KCgkqIGRsbHMvdXNlci9NYWtlZmlsZS5pbiwgZGxscy91c2VyL3VzZXIzMi5zcGVjLCBkbGxzL3VzZXIvdXNlcl9tYWluLmM6CglVc2UgdGhlIHN0YW5kYXJkIERsbE1haW4gZW50cnkgcG9pbnQuCgoJKiBkbGxzL01ha2VkbGwucnVsZXMuaW4sIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvbWFrZV9kbGxzOgoJTERJTVBPUlRTIGlzIG5vIGxvbmdlciBuZWVkZWQuCgoJKiBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwva2VybmVsX21haW4uYzoKCVdlIGNhbiBub3cgdXNlIHRoZSBzdGFuZGFyZCBEbGxNYWluIGFzIGVudHJ5IHBvaW50LgoKCSogZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sIGRsbHMvbnRkbGwvbnRkbGwuc3BlYzoKCUxpbmsga2VybmVsMzIgYXMgYSBub3JtYWwgZGxsLgoKCSogbGlicy93aW5lL3BvcnQuYzoKCUFkZGVkIHBsYWNlaG9sZGVycyBmb3Igd2luZV9wdGhyZWFkX2luaXRfcHJvY2VzcyBhbmQKCXdpbmVfcHRocmVhZF9pbml0X3RocmVhZC4KCgkqIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGRsbHMva2VybmVsL3Byb2Nlc3MuYywgZGxscy9udGRsbC9oZWFwLmMsCgkgIGRsbHMvbnRkbGwvbG9hZGVyLmMsIGRsbHMvbnRkbGwvbnRkbGxfbWlzYy5oLCBkbGxzL250ZGxsL3NlcnZlci5jLAoJICBpbmNsdWRlL21vZHVsZS5oLCBpbmNsdWRlL3dpbnRlcm5sLmgsIGxpYnMvd2luZS9sb2FkZXIuYzoKCUNoYW5nZWQgdGhlIGluaXQgY29kZSB0byBtYWtlIGxpYndpbmUgbG9hZCBvbmx5IG50ZGxsIGFuZCB0cmFuc2ZlcgoJY29udHJvbCB0byBpdCwgYW5kIHRoZW4gaGF2ZSBudGRsbCBsb2FkIGtlcm5lbDMyIHVzaW5nIHRoZSBub3JtYWwKCWxvYWRlciBtZWNoYW5pc21zLgoJR2V0IHJpZCBvZiBCVUlMVElOMzJfTG9hZEV4ZU1vZHVsZS4KCgkqIGRsbHMvZ2RpL2VuaG1mZHJ2L2RjLmMsIGRsbHMvZ2RpL2VuaG1mZHJ2L2VuaG1ldGFmaWxlZHJ2LmgsCgkgIGRsbHMvZ2RpL2VuaG1mZHJ2L2luaXQuYzoKCURhdmUgQmVsYW5nZXIgPGRhdmUuYmVsYW5nZXJAY2ltbWV0cnkuY29tPgoJSW1wbGVtZW50YXRpb24gb2YgU2V0VGV4dEp1c3RpY2F0aW9uIEVNRiBkcml2ZXIgY2FsbGJhY2suCgoJKiBkbGxzL2dkaS9mcmVldHlwZS5jOiBEYXZlIEJlbGFuZ2VyIDxkYXZlLmJlbGFuZ2VyQGNpbW1ldHJ5LmNvbT4KCUltcHJvdmVkIGZvbnQgZ2x5cGggdHJhbnNmb3JtYXRpb24gc3VwcG9ydCBpbiBHZXRHbHlwaE91dGxpbmUuCgoJKiBkbGxzL2FkdmFwaTMyL3NlcnZpY2UuYzoKCU1ha2Ugc3VyZSB3ZSBhbHdheXMgdXNlIHRoZSBzYW1lIG5hbWUgZm9yIHRoZSBzZW1hcGhvcmUgKHNwb3R0ZWQgYnkKCUJlbiBBIEwgSmVtbWV0dCkuCgoJKiBwcm9ncmFtcy93aW5lY29uc29sZS9jdXJzZXMuYzogUGV0ZXIgQmVyZyBMYXJzZW4gPHBlYmxAbWF0aC5rdS5kaz4KCUNoYW5nZWQgZGVidWcgY2hhbm5lbCB0byAiY3Vyc2VzIiB0byBzZXBlcmF0ZSBpdCBmcm9tIHdpbmVjb25zb2xlLmMKCWFuZCBhZGRlZCBzb21lIHRyYWNlIGluZm9tYXRpb24uCgoJKiBkbGxzL21zdmNydC90ZXN0cy9zY2FuZi5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQWRkZWQgdGVzdCBmb3IgJW4uCgoJKiBkbGxzL21zdmNydC9zY2FuZi5oOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJJW4gcmV0dXJucyB0aGUgbnVtYmVyIG9mIGNvbnN1bWVkIGNoYXJhY3RlcnMuCgoyMDAzLTEwLTA5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9rZXJuZWwvcHJvY2Vzcy5jLCBkbGxzL250ZGxsL3RocmVhZC5jLCBpbmNsdWRlL3dpbnRlcm5sLmg6CglVc2UgdGhlIFJ0bCBiaXRtYXAgZnVuY3Rpb25zIHRvIGltcGxlbWVudCBUbHMgYWxsb2NhdGlvbi4KCUdldCByaWQgb2YgdGhlIFBEQiBzdHJ1Y3R1cmUuCgoJKiBkbGxzL2tlcm5lbC93b3d0aHVuay5jOgoJV2UgbmVlZCB0byBpbml0aWFsaXplIHRoZSByZWxheSBkZWJ1ZyBsaXN0cyBmb3IgK3Nub29wIHRvby4KCgkqIGRsbHMva2VybmVsL25lX3NlZ21lbnQuYywgZGxscy93aW5lZG9zL3ZnYS5jLCBmaWxlcy9kaXJlY3RvcnkuYzoKCU9sZWcgUHJva2hvcm92IDx4b2xlZ3Byb0ByYmNtYWlsLnJ1PgoJQXZvaWQgSGVhcFJlQWxsb2Mgb2YgYSBOVUxMIHBvaW50ZXIuCgoJKiBERVZFTE9QRVJTLUhJTlRTOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJUmVtb3ZlIGluZXhpc3RlbnQgZGlyLCBhZGQgYSBkb2MgcmVmZXJlbmNlIGZyb20gc2hlbGwzMi4KCgkqIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYywgZG9jdW1lbnRhdGlvbi9zaGVsbDMyOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCU1vdmUgdXNlZnVsIGluZm9ybWF0aW9uIG91dCBvZiBkb2N1bWVudGF0aW9uL3NoZWxsMzIuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBkbGxzL2tlcm5lbC9zeW5jLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglTdHViIGltcGxlbWVudGF0aW9ucyBmb3Igc29tZSBmdW5jdGlvbnMgcmVsYXRlZCB0byBSZWdpc3RlcldhaXQuCgoJKiBwcm9ncmFtcy91bmluc3RhbGxlci9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvdW5pbnN0YWxsZXIvbWFpbi5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJSGFuZGxlIHF1b3Rpbmcgb24gdGhlIGNvbW1hbmQgbGluZSBpbiB1bmluc3RhbGxlci4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJRml4ZWQgU01QVEUgdGltZS4KCUZpeGVkIGJhZCB3YXZlIGluIHBvc2l0aW9uIGF0IHN0YXJ0dXAgYW5kIHJlc2V0LgoKCSogZGxscy9pbWFnZWhscC9kZWJ1Zy5jLCBkbGxzL2ltYWdlaGxwL2ltYWdlaGxwX21haW4uYywKCSAgaW5jbHVkZS9pbWFnZWhscC5oOgoJU3RldmVuIEVkd2FyZHMgPHN0ZXZlbl9lZDQxNTNAeWFob28uY29tPgoJQnJpbmcgaW1hZ2VobHAgKG1vc3RseSkgaW5saW5lIHdpdGggdGhlIFBTREsgYW5kIE1pbmd3LgoKCSogZGxscy9nZGkvZW5obWZkcnYvZ3JhcGhpY3MuYzoKCURhdmUgQmVsYW5nZXIgPGRhdmUuYmVsYW5nZXJAY2ltbWV0cnkuY29tPgoJSW1wcm92ZWQgdGhlIGJvdW5kaW5nIGJveCBjYWxjdWxhdGlvbiBmb3IgdGhlIEVNRiBkcml2ZXIgRXh0VGV4dE91dAoJbWV0YXJlY29yZC4gSXQgdGFrZXMgdGhlIHRleHQgYWxpZ25tZW50IGludG8gYWNjb3VudC4KCgkqIGRsbHMvbnRkbGwvbnRkbGwuc3BlYzogQWRkZWQgYSBmZXcgbWlzc2luZyBleHBvcnRzLgoKCSogZGxscy9rZXJuZWwvcHJvY2Vzcy5jLCBkbGxzL2tlcm5lbC90aHJlYWQuYywgZGxscy9udGRsbC90aHJlYWQuYywKCSAgaW5jbHVkZS90aHJlYWQuaDoKCU1vdmVkIHRoZSBjb25zdHJ1Y3RvciBmb3IgdGhlIGluaXRpYWwgVEVCIHRvIG50ZGxsIHNvIHRoYXQgaXQgcnVucyBhcwoJZWFybHkgYXMgcG9zc2libGUgb24gc3RhcnR1cC4KCgkqIGRsbHMvZ2RpL2VuaG1mZHJ2L2luaXQuYywgZGxscy9nZGkvZW5obWZkcnYvbWFwcGluZy5jOgoJRGF2ZSBCZWxhbmdlciA8ZGF2ZS5iZWxhbmdlckBjaW1tZXRyeS5jb20+CglJbXBsZW1lbnRhdGlvbiBvZiBFTUYgZHJpdmVyIE9mZnNldFZpZXdwb3J0T3JnIGFuZCBPZmZzZXRXaW5kb3dPcmcKCWNhbGxiYWNrcyB1c2luZyB0aGUgRU1SX1NFVFZJRVdQT1JUT1JHRVggYW5kIEVNUl9TRVRXSU5ET1dPUkdFWAoJbWV0YXJlY29yZHMgcmVzcGVjdGl2ZWx5LgoKCSogcHJvZ3JhbXMvd2NtZC9idWlsdGlucy5jLCBwcm9ncmFtcy93Y21kL3djbWQuaCwKCSAgcHJvZ3JhbXMvd2NtZC93Y21kbWFpbi5jLCBwcm9ncmFtcy93aW5lY2ZnL2RyaXZlLmMsCgkgIHByb2dyYW1zL3dpbmVjZmcvd2luZWNmZy5jLCBwcm9ncmFtcy93aW5lY2ZnL3dpbmVjZmcuaCwKCSAgcHJvZ3JhbXMvd2luZWRiZy9kYl9kaXNhc20uYywgcHJvZ3JhbXMvd2luZWRiZy9kYmcueSwKCSAgcHJvZ3JhbXMvd2luZWRiZy9kZWJ1Z2dlci5oLCBwcm9ncmFtcy93aW5lZGJnL2dkYnByb3h5LmMsCgkgIHByb2dyYW1zL3dpbmVkYmcvaGFzaC5jLCBwcm9ncmFtcy93aW5lZGJnL2luZm8uYywKCSAgcHJvZ3JhbXMvd2luZWRiZy90eXBlcy5jOgoJRGFuaWVsIE1hcm1pZXIgPGQubWFybWllckBibHVld2luLmNoPgoJRml4ZWQgd2FybmluZ3Mgd2l0aCBnY2Mgb3B0aW9uICItV3dyaXRlLXN0cmluZ3MiLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRvY3VtZW50YXRpb24vTWFrZWZpbGUuaW46CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJVXNlIGRvY2Jvb2sydHh0IHRvIGdlbmVyYXRlIHRoZSB0ZXh0IG91dHB1dCBpbnN0ZWFkIG9mIGFkaG9jIGhhY2tzLgoKCSogcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbnNvbGUuYzoKCVBldGVyIEJlcmcgTGFyc2VuIDxwZWJsQG1hdGgua3UuZGs+CglVc2UgQ09OU09MRV9SRU5ERVJFUl9OT05FX0VWRU5UIHRvIGNvbXByZXNzIGFuIGV2ZW50IGluc3RlYWQgb2YKCWRlbGV0aW5nIGl0IHdpdGggYSBtZW1tb3ZlLgoKCSogcHJvZ3JhbXMvd2luZWNvbnNvbGUvY3Vyc2VzLmM6IFBldGVyIEJlcmcgTGFyc2VuIDxwZWJsQG1hdGgua3UuZGs+CglUaGUgVGFiIGtleSB3YXMgY29uc2lkZXJlZCBhIGN0cmwta2V5IGFuZCBTaGlmdC1UYWIgd2FzIGlnbm9yZWQuCgoyMDAzLTEwLTA4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9rZXJuZWwvc3lzbGV2ZWwuYywgZGxscy9udGRsbC9udGRsbC5zcGVjLAoJICBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmMsIHRvb2xzL3dpbmVidWlsZC9yZWxheS5jOgoJQWRkZWQgX193aW5lX3NldF9zaWduYWxfZnMgZnVuY3Rpb24gdG8gYXZvaWQgc2hhcmluZyB0aGUKCVNZU0xFVkVMX1dpbjE2Q3VycmVudFRlYiB2YXJpYWJsZSBiZXR3ZWVuIGtlcm5lbCBhbmQgbnRkbGwuCglPbiB0aGUga2VybmVsIHNpZGUsIHJlcGxhY2VkIFNZU0xFVkVMX1dpbjE2Q3VycmVudFRlYiBieQoJQ2FsbFRvMTZfVGViU2VsZWN0b3Igc3RvcmVkIGRpcmVjdGx5IGluIHRoZSBhc20gcmVsYXkgY29kZSB0byBhdm9pZCBhCglydW4tdGltZSByZWxvY2F0aW9uLgoKCSogZGxscy9rZXJuZWwvcmVsYXkxNi5jLCBkbGxzL2tlcm5lbC9zbm9vcDE2LmMsIGRsbHMva2VybmVsL3dvd3RodW5rLmMsCgkgIGRsbHMvbnRkbGwvcmVsYXkuYzoKCUR1cGxpY2F0ZSBwYXJ0cyBvZiB0aGUgcmVsYXkgZGVidWdnaW5nIGluaXQgY29kZSBpbnRvIGtlcm5lbCB0byBhdm9pZAoJcmVmZXJlbmNpbmcgbnRkbGwgaW50ZXJuYWwgc3ltYm9scy4KCgkqIGRsbHMva2VybmVsL3Byb2Nlc3MuYywgZGxscy9udGRsbC9lbnYuYzoKCU1vdmVkIGJ1aWxkX2NvbW1hbmRfbGluZSBiYWNrIHRvIGtlcm5lbCBhbmQgbWFrZSBpdCBoYW5kbGUgVW5pY29kZQoJcHJvcGVybHkuCgoJKiBkbGxzL2Rzb3VuZC9jYXB0dXJlLmMsIGRsbHMvZHNvdW5kL2Rzb3VuZF9wcml2YXRlLmgsCgkgIGRsbHMvZHNvdW5kL3Byb3BzZXQuYywgZGxscy9kc291bmQvdGVzdHMvY2FwdHVyZS5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCU1ha2UgY2FwdHVyZSBtb3JlIHJlbGlhYmxlIGJ5IHN1Ym1pdHRpbmcgYWxsIGJ1ZmZlcnMgYmVmb3JlIHN0YXJ0LgoJQWRkZWQgc3VwcG9ydCBmb3Igbm9uIHBjbSBmb3JtYXRzLgoJQWRkZWQgbW9yZSBwcm9wZXJ0eSBzZXQgc3VwcG9ydC4KCgkqIGRsbHMvbnRkbGwvZGVidWd0b29scy5jOiBQYXZlbCBSb3NraW4gPHByb3NraUBnbnUub3JnPgoJSW5jbHVkZSBudGRsbF9taXNjLmggdG8gZ2V0IHRoZSBHZXRDdXJyZW50UHJvY2Vzcy9UaHJlYWRJZCBtYWNyb3MuCgoJKiBkbGxzL2dkaS9lbmhtZmRydi9ncmFwaGljcy5jOgoJRGF2ZSBCZWxhbmdlciA8ZGF2ZS5iZWxhbmdlckBjaW1tZXRyeS5jb20+CglJbXBsZW1lbnRhdGlvbiBvZiBTZXRQaXhlbCBtZXRhcmVjb3JkLgoKCSogZGxscy9nZGkvZW5obWZkcnYvaW5pdC5jOiBEYXZlIEJlbGFuZ2VyIDxkYXZlLmJlbGFuZ2VyQGNpbW1ldHJ5LmNvbT4KCUF2b2lkIGV4Y2Vzc2l2ZSBoZWFwIG1lbW9yeSByZWFsbG9jYXRpb24gd2hlbiBnZW5lcmF0aW5nIEVNRgoJbWV0YXJlY29yZHMgaW4gbWVtb3J5LgoKCSogcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbnNvbGUuYzoKCVJlbW92ZWQgdXNlbGVzcyBXSU5FX1RSQUNFX09OIHRlc3RzLgoKCSogcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbnNvbGUuYzoKCVBldGVyIEJlcmcgTGFyc2VuIDxwZWJsQG1hdGgua3UuZGs+CglNb3ZlZCBkZWJ1ZyBvdXRwdXQgdXAgYmVmb3JlIGNhbGxpbmcgdGhlIGJhY2tlbmQuCgoJKiBkbGxzL250ZGxsL3NlcnZlci5jLCBkbGxzL250ZGxsL3ZpcnR1YWwuYzoKCVBhdmVsIFJvc2tpbiA8cHJvc2tpQGdudS5vcmc+CglJbmNsdWRlIG50ZGxsX21pc2MuaCB0byBnZXQgdGhlIEdldEN1cnJlbnRQcm9jZXNzL1RocmVhZElkIG1hY3Jvcy4KCgkqIGRsbHMvbnRkbGwvaGVhcC5jOiBQYXZlbCBSb3NraW4gPHByb3NraUBnbnUub3JnPgoJRWxpbWluYXRlIGRlcGVuZGVuY3kgb24gU2V0TGFzdEVycm9yKCkuCgoJKiBkbGxzL2dkaS93aW5nLmMsIGRsbHMvd2luaW5ldC9uZXRjb25uZWN0aW9uLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVNvbWUgc3BlbGxpbmcgZml4ZXMuCgoJKiBkb2N1bWVudGF0aW9uL2RvY3VtZW50YXRpb24uc2dtbDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglSZW1vdmUgaXJyZWxldmFudCAoYW5kIGluY29tcGxldGUpIGRvY3VtZW50YXRpb24gaW4gJ1RoZSBXaW5lIERvY0Jvb2sKCVN5c3RlbScgc2VjdGlvbi4KCgkqIGRsbHMvb2xlMzIvc3RvcmFnZS5jOiBXYXJyZW4gQmFpcmQgPHdhcnJlbi5iYWlyZEBjaW1tZXRyeS5jb20+CglEYXZlIEJlbGFuZ2VyIDxkYXZlLmJlbGFuZ2VyQGNpbW1ldHJ5LmNvbT4KCU1vdmVkIGNvZGUgb3V0IG9mIGFzc2VydCBzdGF0ZW1lbnRzIHNvIHlvdSBjYW4gc2FmZWx5IGNvbXBpbGUgd2l0aAoJLUROREVCVUcuCgoJKiBkbGxzL3dpbmVkb3MvaW50ZXJydXB0cy5jLCBpbmNsdWRlL3Rhc2suaDoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCURvbid0IHNoYXJlIHNvbWUgcHJvdGVjdGVkIG1vZGUgaW50ZXJydXB0cyBpbiB3aW5lZG9zLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWM6CglSZW1vdmVkIGNyZWF0aW9uIG9mIGxvYWRlci9uZSBhbmQgd2luMzIgZGlyZWN0b3JpZXMuCgoJKiBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwvY29uc29sZS5jLCBkbGxzL2tlcm5lbC9kZXZpY2UuYywKCSAgZGxscy9rZXJuZWwvcHJvY2Vzcy5jLCBkbGxzL2tlcm5lbC9zeW5jLmMsIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sCgkgIHNjaGVkdWxlci9oYW5kbGUuYzoKCU1vdmVkIGEgZmV3IG1vcmUgZnVuY3Rpb25zIHRvIHRoZSBkbGxzL2tlcm5lbCBkaXJlY3RvcnkuCgoJKiBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwvZ2xvYmFsMTYuYywgZGxscy9rZXJuZWwvaGVhcC5jLAoJICBkbGxzL2tlcm5lbC9uZV9tb2R1bGUuYywgZGxscy9rZXJuZWwvcHJvY2Vzcy5jLCBkbGxzL2tlcm5lbC9zdHJpbmcuYywKCSAgZGxscy9rZXJuZWwvdGFzay5jLCBkbGxzL2tlcm5lbC90aHJlYWQuYywgZGxscy9udGRsbC9NYWtlZmlsZS5pbiwKCSAgbG9hZGVyL3Rhc2suYywgbWVtb3J5L2dsb2JhbC5jLCBtZW1vcnkvaGVhcC5jLCBtZW1vcnkvc3RyaW5nLmMsCgkgIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci90aHJlYWQuYzoKCUxpbmsgYWxsIHJlbWFpbmluZyBmaWxlcyB0aGF0IGNvbnRhaW4ga2VybmVsIEFQSXMgaW50byBrZXJuZWwzMi5kbGwKCWluc3RlYWQgb2YgbnRkbGwuZGxsLiBSZW1vdmVkIGEgbnVtYmVyIG9mIG5vIGxvbmdlciBuZWVkZWQgZmlsZXMuCgoJKiBpbmNsdWRlL21vZHVsZS5oOgoJQWRkZWQgaGFjayB0byBjYWxsIENyZWF0ZUZpbGVXIHRocm91Z2ggYSBwb2ludGVyIHNvIHRoYXQgd2UgZG9uJ3QgbmVlZAoJdG8gbGluayB0byBrZXJuZWwgZnVuY3Rpb25zLgoJQ29tbWVudGVkIG91dCBTTUIgc3VwcG9ydCBpbiBOdFJlYWRGaWxlIGZvciBub3cuCgoJKiBmaWxlcy9zbWIuYzogUmVtb3ZlZCBkZXBlbmRlbmN5IG9uIG50ZGxsX21pc2MuaC4KCgkqIGRsbHMva2VybmVsL3Byb2Nlc3MuYywgZGxscy9udGRsbC9maWxlLmMsIGRsbHMvbnRkbGwvbG9hZGVyLmMsCgkgIGRsbHMvbnRkbGwvbnRkbGxfbWlzYy5oLCBkbGxzL250ZGxsL3BhdGguYzoKCUFkZGVkIGhhY2sgdG8gY2FsbCBDcmVhdGVGaWxlVyB0aHJvdWdoIGEgcG9pbnRlciBzbyB0aGF0IHdlIGRvbid0IG5lZWQKCXRvIGxpbmsgdG8ga2VybmVsIGZ1bmN0aW9ucy4KCUNvbW1lbnRlZCBvdXQgU01CIHN1cHBvcnQgaW4gTnRSZWFkRmlsZSBmb3Igbm93LgoKCSogZGxscy9udGRsbC9jZHJvbS5jLCBkbGxzL250ZGxsL2ZpbGUuYywgZmlsZXMvZHJpdmUuYzoKCVBhc3MgdGhlIGNkcm9tIGRldmljZSBwYXRoIGluIENEUk9NX0luaXRSZWdpc3RyeSBzbyB0aGF0IG50ZGxsIGRvZXNuJ3QKCW5lZWQgdG8gY2FsbCBEUklWRV9HZXREZXZpY2UuCglHZXQgcmlkIG9mIEdldERyaXZlVHlwZSBjYWxscy4KCgkqIGluY2x1ZGUvd2luaW5ldC5oOiBXYXJyZW4gQmFpcmQgPHdhcnJlbi5iYWlyZEBjaW1tZXRyeS5jb20+CglDaGFuZ2VkIEludGVybmV0U2V0U3RhdHVzQ2FsbGJhY2sgZGVjbGFyYXRpb24gdG8KCUludGVybmV0U2V0U3RhdHVzQ2FsbGJhY2tBL1cuCgoJKiBncmFwaGljcy94MTFkcnYvYml0Ymx0LmM6IFdhcnJlbiBCYWlyZCA8d2FycmVuLmJhaXJkQGNpbW1ldHJ5LmNvbT4KCUhhbmRsZSBjYXNlcyB3aGVyZSBYR2V0SW1hZ2Ugb3IgWDExRFJWX0RJQl9DcmVhdGVYSW1hZ2UgZmFpbC4KCgkqIGRsbHMva2VybmVsL3Byb2Nlc3MuYywgZGxscy9udGRsbC9zZXJ2ZXIuYywgaW5jbHVkZS9vcHRpb25zLmgsCgkgIG1pc2Mvb3B0aW9ucy5jOgoJR2V0IHJpZCBvZiB0aGUgYXJndjAgYW5kIGZ1bGxfYXJndjAgZ2xvYmFsIHZhcmlhYmxlcy4KCgkqIGluY2x1ZGUvd2luZS9saWJyYXJ5LmgsIGxpYnMvd2luZS9jb25maWcuYywgbGlicy93aW5lL2xvYWRlci5jOgoJQWRkZWQgd2luZV9nZXRfYXJndjBfcGF0aCgpIHRvIHJldHJpZXZlIHRoZSBwYXRoIG9mIHRoZSB3aW5lIGJpbmFyeS4KCgkqIGRsbHMvbnRkbGwvbG9hZGVyLmMsIGRsbHMvbnRkbGwvdmlydHVhbC5jLCBmaWxlcy9maWxlLmMsCgkgIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwgc2VydmVyL2ZpbGUuYywgc2VydmVyL2ZpbGUuaCwKCSAgc2VydmVyL21hcHBpbmcuYywgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3Byb3RvY29sLmRlZiwKCSAgc2VydmVyL3RyYWNlLmM6CglTdG9yZSBhICJyZW1vdmFibGUiIGZsYWcgaW5zdGVhZCBvZiB0aGUgZnVsbCBkcml2ZSB0eXBlIGluIHRoZSBzZXJ2ZXIKCWZpbGUgb2JqZWN0OyB0aGlzIHdheSB3ZSBkb24ndCBuZWVkIHRvIHVzZSBHZXREcml2ZVR5cGVXIGluIHRoZSBsb2FkZXIKCWNvZGUuCglNYWtlIHN1cmUgd2UgYWx3YXlzIGhhdmUgYSB2YWxpZCBidWlsdGluX2xvYWRfaW5mbyBwb2ludGVyLgoKMjAwMy0xMC0wNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbnRkbGwvbG9hZGVyLmMsIGRsbHMvbnRkbGwvbG9hZG9yZGVyLmMsIGRsbHMvbnRkbGwvbnRkbGxfbWlzYy5oOgoJUmVtb3ZlZCByZWZlcmVuY2VzIHRvIEdldFN5c3RlbURpcmVjdG9yeVcuCglPcHRpbWl6ZWQgbW9kdWxlIGxvb2t1cCBhIGJpdC4KCUtlZXAgdHJhY2sgb2YgdGhlIG1vZHJlZiBwb2ludGVyIGFjcm9zcyBidWlsdGluIGRsbCBsb2FkcyB0byBhdm9pZAoJaGF2aW5nIHRvIGxvb2sgaXQgdXAgYnkgbmFtZSBhZnRlcndhcmRzLgoKCSogZGxscy9vZGJjMzIvcHJveHlvZGJjLmgsIGRsbHMvcXVhcnR6L21haW4uYywKCSAgZGxscy9ycGNydDQvcnBjX2JpbmRpbmcuYywgZGxscy9ycGNydDQvcnBjX2JpbmRpbmcuaCwKCSAgZGxscy9zaGx3YXBpL3JlZy5jLCBkbGxzL3NobHdhcGkvdGVzdHMvcGF0aC5jLAoJICBkbGxzL3NobHdhcGkvdGVzdHMvc2hyZWcuYywgZGxscy93aW5tbS9tY2lhbmltL21jaWFuaW0uYywKCSAgZGxscy93aW5tbS9tY2lhdmkvaW5mby5jLCBkbGxzL3dpbm1tL21jaWNkYS9tY2ljZGEuYywKCSAgZGxscy93aW5tbS9tY2lzZXEvbWNpbWlkaS5jLCBkbGxzL3dpbm1tL3dpbmVhbHNhL2F1ZGlvLmMsCgkgIGRsbHMvd2lubW0vd2luZW9zcy9taXhlci5jOgoJRGFuaWVsIE1hcm1pZXIgPGQubWFybWllckBibHVld2luLmNoPgoJRml4ZWQgd2FybmluZ3Mgd2l0aCBnY2Mgb3B0aW9uICItV3dyaXRlLXN0cmluZ3MiLgoKCSogaW5jbHVkZS93aW5jcnlwdC5oOiBXYXJyZW4gQmFpcmQgPHdhcnJlbi5iYWlyZEBjaW1tZXRyeS5jb20+CglBZGRlZCBleHRlcm4gIkMiLgoKCSogZGxscy9jb21tZGxnL3ByaW50ZGxnLmMsIGRsbHMvc2V0dXBhcGkvZGV2aW5zdC5jLAoJICBkbGxzL3dpbm1tL2pveXN0aWNrLmMsIGluY2x1ZGUvc2V0dXBhcGkuaDoKCVN0ZXZlbiBFZHdhcmRzIDxzdGV2ZW5fZWQ0MTUzQHlhaG9vLmNvbT4KCVJlbW92ZSBhIGZldyB1bm5lZWRlZCBpbmNsdWRlIHN0YXRlbWVudHMgaW4gaW50ZXJuYWwgaGVhZGVycy4KCVN0YXJ0ZWQgYnJpbmdpbmcgc2V0dXBhcGkgaW4gbGluZSB3aXRoIFBTREsuCgoJKiBwcm9ncmFtcy9yZWdzdnIzMi9yZWdzdnIzMi5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglXaGVuIHJlZ2lzdGVyaW5nIGEgZGxsLCBzZWFyY2ggdGhlIGRsbCdzIGRpcmVjdG9yeSBmb3IgZGxsCglkZXBlbmRlbmNpZXMgdG9vLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvbnRkbGwvY2Ryb20uYywgaW5jbHVkZS9jb25maWcuaC5pbjoKCVJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCUFkZGVkIGEgY2hlY2sgZm9yIDxzY3NpL3Njc2kuaD4gYW5kIGluY2x1ZGUgaXQgaW4gZGxscy9udGRsbC9jZHJvbS5jLgoKCSogZGxscy9tc3ZjcnQvdGVzdHMvZmlsZS5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQWRkZWQgc29tZSB0ZXN0cyBhcm91bmQgZmdldCh3KXMuCgoJKiBkbGxzL21zdmNydC9maWxlLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglmZ2V0KHcpcygpOiBEb24ndCBkcm9wIGNoYXJhY3RlcnMgd2hlbiBidWZmZXIgaXMgbm90IGxhcmdlIGVub3VnaC4KCgkqIGRsbHMvbXN2Y3J0L2ZpbGUuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCV93cml0ZSgpOiBEb24ndCBmcmFnbWVudCBXcml0ZUZpbGUoKSBmb3IgVEVYVCBtb2RlIHdyaXRlLgoKCSogZGxscy9udGRsbC9sb2FkZXIuYzoKCVJld3JpdGUgb2YgdGhlIGRsbCBmaWxlIHNlYXJjaCBhbGdvcml0aG0gdG8gYmV0dGVyIGRlYWwgd2l0aCB0aGUKCWJyb2tlbiBiZWhhdmlvciBvZiBSdGxEb3NTZWFyY2hQYXRoX1UuCgoJKiBkbGxzL250ZGxsL3BhdGguYzogQSBjb3VwbGUgbW9yZSBmaXhlcyBpbiBSdGxHZXRGdWxsUGF0aE5hbWVfVS4KCVJldmVydGVkIG15IHByZXZpb3VzIGZpeCBpbiBSdGxEb3NTZWFyY2hQYXRoX1UsIGV4dGVuc2lvbiBoYW5kbGluZyBpcwoJc3VwcG9zZWQgdG8gYmUgYnJva2VuLgoKCSogZGxscy91c2VyL2ZvY3VzLmMsIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwKCSAgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3RyYWNlLmMsCgkgIHNlcnZlci93aW5kb3cuYywgd2luZG93cy93aW5wb3MuYzoKCVN0b3JlIHRoZSBnbG9iYWwgc2hlbGwsIHByb2dtYW4gYW5kIHRhc2ttYW4gd2luZG93cyBpbiB0aGUgc2VydmVyCgkoYmFzZWQgb24gYSBwYXRjaCBieSBNYXJ0aW4gRnVjaHMpLgoKCSogZGxscy9tc3ZjcnQvZmlsZS5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJX3JlYWQoKTogSW4gX09fVEVYVCBtb2RlIG1ha2UgUmVhZGZpbGUgY2FsbHMgaW4gY2h1bmtzIGFzIGJpZyBhcwoJcG9zc2libGUuCgoJKiBkbGxzL2dkaS9lbmhtZmRydi9kYy5jOiBEYXZlIEJlbGFuZ2VyIDxkYXZlLmJlbGFuZ2VyQGNpbW1ldHJ5LmNvbT4KCVNwaXQgb3V0IEVNUl9SRVNUT1JFREMgbWV0YXJlY29yZHMgd2l0aCAtMSBhcyBhcmd1bWVudCBhcyBsb25nIGFzIHdlCglkb24ndCBnZXQgdG8gdGhlIHNhdmVkIHN0YXRlIHdlIHdhbnQuCgoJKiBkbGxzL3dpbmVkb3MvaW50ZXJydXB0cy5jOiBKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglVc2UgY29ycmVjdCBwb2ludGVyIHdoZW4gYWNjZXNzaW5nIHJlYWwgbW9kZSBpbnRlcnJ1cHQgdmVjdG9ycyB1bmRlcgoJV2luMTYuCgoJKiBkbGxzL2QzZDgvZHJhd3ByaW0uYywgZGxscy9kM2Q4L3N1cmZhY2UuYzoKCUphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglEWFRuIHN0cmlkZSBpcyB0byB0aGUgbmV4dCBibG9jaywgd2hpY2ggaXMgdGhlIGVxdWl2YWxlbnQgdG8gNCByb3dzCgl3b3J0aCBvZiBieXRlcy4KCgkqIGRsbHMvYWR2YXBpMzIvY3J5cHQuYywgZGxscy9jYWJpbmV0L2NhYmV4dHJhY3QuYywKCSAgZGxscy9jb21jdGwzMi9oZWFkZXIuYywgZGxscy9jb21jdGwzMi9saXN0dmlldy5jLAoJICBkbGxzL2NvbWN0bDMyL3JlYmFyLmMsIGRsbHMvZGlucHV0L2RldmljZS5jLCBkbGxzL2RwbGF5eC9kcGxheS5jLAoJICBkbGxzL2RwbGF5eC9kcGxvYmJ5LmMsIGRsbHMvd2luc29jay90ZXN0cy9zb2NrLmM6CglEYW5pZWwgTWFybWllciA8ZC5tYXJtaWVyQGJsdWV3aW4uY2g+CglGaXhlZCB3YXJuaW5ncyB3aXRoIGdjYyBvcHRpb24gIi1Xd3JpdGUtc3RyaW5ncyIuCgoyMDAzLTEwLTA2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9rZXJuZWwvcHJvY2Vzcy5jLCBkbGxzL250ZGxsL2xvYWRlci5jLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsCgkgIGRsbHMvbnRkbGwvbnRkbGxfbWlzYy5oLCBpbmNsdWRlL21vZHVsZS5oLCBpbmNsdWRlL3dpbnRlcm5sLmg6CglNb3ZlZCB0aGUgZmluYWwgcHJvY2VzcyBpbml0IGFuZCBkZXBlbmRlbmN5IGxvYWRpbmcgdG8KCWRsbHMvbnRkbGwvbG9hZGVyLmMsIChhYil1c2luZyB0aGUgTGRySW5pdGlhbGl6ZVRodW5rIGVudHJ5IHBvaW50LgoKCSogZGxscy91c2VyL3Jlc291cmNlcy92ZXJzaW9uLnJjLCBkbGxzL3dpbm1tL3dpbm1tX3Jlcy5yYzoKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCUNoYW5nZSByZXNvdXJjZXMgZnJvbSBsYXN0IGxhbmd1YWdlIGZpbGUgdXNlZCB0byBMQU5HX05FVVRSQUwuCgoJKiBkbGxzL21zdmNydC9jcHAuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCU1TVkNSVF9fX1JURHluYW1pY0Nhc3Q6IFJlamVjdCBhIE5VTEwgY3Bwb2JqLgoKCSogZGxscy9vbGVhdXQzMi90ZXN0cy92YXJ0ZXN0LmMsIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jLAoJICBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYzoKCURhbmllbCBNYXJtaWVyIDxkLm1hcm1pZXJAYmx1ZXdpbi5jaD4KCUZpeGVkIHdhcm5pbmdzIHdpdGggZ2NjIG9wdGlvbiAiLVd3cml0ZS1zdHJpbmdzIi4KCgkqIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIG1lbW9yeS9jb2RlcGFnZS5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUltcGxlbWVudGVkIEdldENQSW5mb0V4QS9XLgoJRG9jdW1lbnRhdGlvbiB1cGRhdGVzLgoKCSogdG9vbHMvYmluMnJlcy5jOiBQYXZlbCBSb3NraW4gPHByb3NraUBnbnUub3JnPgoJUmVhZCBhbmQgd3JpdGUgYmluYXJ5IGZpbGVzIGluIGJpbmFyeSBtb2RlIG9uIFdpbmRvd3MuCgoJKiBpbmNsdWRlL3Rtc2NoZW1hLmg6IEtldmluIEtvbHR6YXUgPGtldmluQHBsb3Aub3JnPgoJQWRkZWQgbWlzc2luZyBkZWZpbmVzIGFuZCBmaXhlZCBhIGZldyB0eXBvcy4KCgkqIGRsbHMvbnRkbGwvbnQuYzogQWxleCBQYXNhZHluIDxhanBAbWFpbC51dGV4YXMuZWR1PgoJRml4IGJ1ZmZlciBsZW5ndGggZXJyb3IgY29kZSBmb3IgTnRRdWVyeUluZm9ybWF0aW9uVG9rZW4uCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsIGRsbHMvZGRyYXcvaGVscGVyLmMsIGRsbHMvZGRyYXcvbWFpbi5jLAoJICBkbGxzL250ZGxsL3Rlc3RzL3BhdGguYywgZGxscy9udGRsbC90ZXN0cy9ydGxzdHIuYywKCSAgZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvdXNlci90ZXN0cy9zeXNwYXJhbXMuYywKCSAgZGxscy93aW5tbS9sb2x2bGRydi5jLCBkbGxzL3dpbm1tL21jaS5jLCB3aW5kb3dzL2RpYWxvZy5jLAoJICB3aW5kb3dzL3NweS5jLCB3aW5kb3dzL3N5c3BhcmFtcy5jLCB3aW5kb3dzL3dpbnBvcy5jOgoJRGFuaWVsIE1hcm1pZXIgPGQubWFybWllckBibHVld2luLmNoPgoJRml4ZWQgd2FybmluZ3Mgd2l0aCBnY2Mgb3B0aW9uICItV3dyaXRlLXN0cmluZ3MiLgoKCSogdG9vbHMvd3JjL2R1bXByZXMuYzogVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJR2V0IHJpZCBvZiB1c2VsZXNzIGNvbW1lbnQgKGVtcHR5IGZ1bmN0aW9uIGhlYWRlcikuCgoyMDAzLTEwLTA0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogcHJvZ3JhbXMvY21kbGd0c3QvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvY21kbGd0c3QvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL2NtZGxndHN0L2NtZGxnci5yYywgcHJvZ3JhbXMvbm90ZXBhZC9ObC5yYywKCSAgcHJvZ3JhbXMvcHJvZ21hbi9QdC5yYywgcHJvZ3JhbXMvcmVnZWRpdC9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvdmlldy9Fbi5yYywgcHJvZ3JhbXMvdmlldy9Fcy5yYywgcHJvZ3JhbXMvdmlldy9Gci5yYywKCSAgcHJvZ3JhbXMvdmlldy9JdC5yYywgcHJvZ3JhbXMvdmlldy9QdC5yYywgcHJvZ3JhbXMvdmlldy9SdS5yYywKCSAgcHJvZ3JhbXMvdmlldy9TaS5yYywgcHJvZ3JhbXMvd2NtZC8uY3ZzaWdub3JlLCBwcm9ncmFtcy93Y21kL0VuLnJjLAoJICBwcm9ncmFtcy93Y21kL0ZyLnJjLCBwcm9ncmFtcy93Y21kL01ha2VmaWxlLmluLCBwcm9ncmFtcy93Y21kL1B0LnJjLAoJICBwcm9ncmFtcy93Y21kL1J1LnJjLCBwcm9ncmFtcy93Y21kL1NpLnJjLCBwcm9ncmFtcy93Y21kL3djbWRyYy5yYywKCSAgcHJvZ3JhbXMvd2luZWZpbGUvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvd2luZWZpbGUvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL3dpbmVmaWxlL3Jlc291cmNlLnJjLCBwcm9ncmFtcy93aW5lbWluZS8uY3ZzaWdub3JlLAoJICBwcm9ncmFtcy93aW5lbWluZS9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luZW1pbmUvcnNyYy5yYzoKCVBhdmVsIFJvc2tpbiA8cHJvc2tpQGdudS5vcmc+CglDb252ZXJ0IHJlc291cmNlcyB0byBzdGFuZGFyZCBmb3JtYXQgd2l0aG91dCBlbWJlZGRlZCBiaW5hcnkgZGF0YS4KCUZpeGVzIHRvIGJlIGNvbXBhdGlibGUgd2l0aCB3aW5kcmVzLgoKCSogZGxscy9nZGkvZnJlZXR5cGUuYzogRGF2ZSBCZWxhbmdlciA8ZGF2ZS5iZWxhbmdlckBjaW1tZXRyeS5jb20+CglJbXByb3ZlZCBnZW5lcmF0aW9uIG9mIGZvbnQgc2lnbmF0dXJlIGZyb20gZnJlZXR5cGUgZmFjZSBjaGFybWFwcy4KCgkqIGRsbHMva2VybmVsL3Byb2Nlc3MuYywgZGxscy9udGRsbC9lbnYuYywgZGxscy9udGRsbC9sb2Fkb3JkZXIuYywKCSAgZGxscy9udGRsbC92ZXJzaW9uLmMsIGZpbGVzL2RyaXZlLmMsIGluY2x1ZGUvZHJpdmUuaCwgaW5jbHVkZS9maWxlLmgsCgkgIGluY2x1ZGUvbW9kdWxlLmgsIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwgc2VydmVyL3Byb2Nlc3MuYywKCSAgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3RyYWNlLmM6CglDb252ZXJ0ZWQgcHJvY2VzcyBjcmVhdGlvbiB0byBVbmljb2RlLgoKCSogZGxscy9nZGkvZnJlZXR5cGUuYzogRGF2ZSBCZWxhbmdlciA8ZGF2ZS5iZWxhbmdlckBjaW1tZXRyeS5jb20+CglGYWNlIGZhbWlsaWVzIGFyZSBpbiB0aGUgdG9wIDQgYml0cyBvZiBsZlBpdGNoQW5kRmFtaWx5LCBzbyBtYXNrIHdpdGgKCTB4RjAgYmVmb3JlIHRlc3RpbmcuCgoJKiBkbGxzL3VzZXIvTWFrZWZpbGUuaW4sIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyLnJjLAoJICBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9iaW4ucmMsCgkgIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX2JpdG1hcHMucmMsCgkgIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX2N1cnNvcnMucmMsCgkgIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX2ljb25zLnJjOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCU1lcmdlIGFsbCBiaW5hcnkgcmVzb3VyY2VzIGZvciB1c2VyMzIgaW4gb25lIGZpbGUuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9NYWtlZmlsZS5pbiwgZGxscy91eHRoZW1lLy5jdnNpZ25vcmUsCgkgIGRsbHMvdXh0aGVtZS9NYWtlZmlsZS5pbiwgZGxscy91eHRoZW1lL21haW4uYywKCSAgZGxscy91eHRoZW1lL3V4dGhlbWUuc3BlYywgaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS91eHRoZW1lLmg6CglLZXZpbiBLb2x0emF1IDxrZXZpbkBwbG9wLm9yZz4KCUluaXRpYWwgaW1wbGVtZW50YXRpb24gb2YgdXh0aGVtZS5kbGwsIG1vc3RseSBzdHViYmVkIG91dCBmb3Igbm93LgoKCSogZGxscy9udGRsbC9lbnYuYywgZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL250ZGxsL3J0bC5jLAoJICBpbmNsdWRlL3dpbnRlcm5sLmg6CglJbXBsZW1lbnRlZCBSdGxDcmVhdGVQcm9jZXNzUGFyYW1ldGVycyBhbmQgcmVsYXRlZCBmdW5jdGlvbnMuCgoJKiBwcm9ncmFtcy91bmluc3RhbGxlci8uY3ZzaWdub3JlLCBwcm9ncmFtcy91bmluc3RhbGxlci9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvdW5pbnN0YWxsZXIvcnNyYy5yYzoKCVBhdmVsIFJvc2tpbiA8cHJvc2tpQGdudS5vcmc+CglVc2UgYSBiZXR0ZXIgaWNvbi4gIENvbW1lbnQgb3V0IHRoZSBiaW5hcnkgcmVzb3VyY2UuCgoJKiBwcm9ncmFtcy9wcm9nbWFuL0VuLnJjLCBwcm9ncmFtcy9wcm9nbWFuL05sLnJjLAoJICBwcm9ncmFtcy9wcm9nbWFuL3JzcmMucmM6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCUR1dGNoIHRyYW5zbGF0aW9uIG9mIHByb2dtYW4uCglDb3JyZWN0IHR5cG8gaW4gRW5nbGlzaCByZXNvdXJjZXMuCgoJKiBkbGxzL2dkaS9kcml2ZXIuYywgZGxscy9nZGkvZW5obWZkcnYvZW5obWV0YWZpbGVkcnYuaCwKCSAgZGxscy9nZGkvZW5obWZkcnYvZ3JhcGhpY3MuYywgZGxscy9nZGkvZW5obWZkcnYvaW5pdC5jLAoJICBkbGxzL2dkaS9tZmRydi9pbml0LmMsIGluY2x1ZGUvZ2RpLmgsIG9iamVjdHMvZGMuYzoKCURhdmUgQmVsYW5nZXIgPGRhdmUuYmVsYW5nZXJAY2ltbWV0cnkuY29tPgoJSW1wbGVtZW50ZWQgdGhlIFNldEFyY0RpcmVjdGlvbiBtZXRhcmVjb3JkIGluIEVNRiBkcml2ZXIuCgoJKiBwcm9ncmFtcy93aW5lbWluZS9tYWluLmM6IFBhdmVsIFJvc2tpbiA8cHJvc2tpQGdudS5vcmc+CglEb24ndCBwYXNzIHVudXNlZCBwb2ludGVycyB0byBSZWdDcmVhdGVLZXlFeCgpIC0gdGhpcyBwcmV2ZW50cyBzY29yZQoJc2F2aW5nIG9uIFdpbmRvd3MgMjAwMC4KCgkqIGRsbHMvbnRkbGwvcGF0aC5jOiBFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCUZpeGVkIGEgY291cGxlIG9mIGJ1Z3MgaW4gUnRsR2V0RnVsbFBhdGhOYW1lX1UuCgoJKiBwcm9ncmFtcy93aW5oZWxwL3dpbmhlbHAuYzogUGF2ZWwgUm9za2luIDxwcm9za2lAZ251Lm9yZz4KCVNldCB3aW5fc3R5bGUgb2YgdGhlIG1haW4gd2luZG93IHRvIFdTX09WRVJMQVBQRURXSU5ET1cuCgoJKiBkbGxzL2tlcm5lbC9kb3NtZW0uYywgZGxscy93aW5lZG9zL2ludDE5LmMsIGRsbHMvd2luZWRvcy9pbnRlcnJ1cHRzLmM6CglKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglSZWJvb3QgKGludDE5KSB1bmRlciBET1Mgbm93IGRvZXMgRXhpdFByb2Nlc3MuCglNYWRlIEJJT1MgcmVib290IHZlY3RvciBjYWxsIGludDE5LgoKCSogZGxscy9udGRsbC9yZWxheS5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJU05PT1BfU2hvd0RlYnVnbXNnU25vb3AoKTogY2hlY2sgZm9yIE5VTEwgZnVuY3Rpb24gbmFtZS4KCgkqIGRsbHMvYXZpZmlsMzIvTWFrZWZpbGUuaW4sIGRsbHMvYXZpZmlsMzIvYXBpLmMsCgkgIGRsbHMvYXZpZmlsMzIvYXZpZmlsMzIuc3BlYywgZGxscy9hdmlmaWwzMi9hdmlmaWxlLmMsCgkgIGRsbHMvYXZpZmlsMzIvYXZpZmlsZV9wcml2YXRlLmgsIGRsbHMvYXZpZmlsMzIvZWRpdHN0cmVhbS5jLAoJICBkbGxzL2F2aWZpbDMyL2dldGZyYW1lLmM6CglNaWNoYWVsIEf8bm5ld2lnIDxNaWNoYWVsR3Vlbm5ld2lnQGdteC5kZT4KCS0gRmlyc3QgcGFydCBvZiBhIG5ldyBJQVZJRWRpdFN0cmVhbSBpbXBsZW1lbnRhdGlvbi4KCS0gRml4ZWQvQWRkZWQgc29tZSBwYXJhbWV0ZXIgY2hlY2tpbmcuCgktIEZpeGVkIGJ1ZyBpbiBFZGl0U3RyZWFtU2V0SW5mb1cuCgktIEZpeGVkIGJ1ZyBpbiBhdmlmaWwzMi5zcGVjIChzdHIgaW5zdGVhZCBvZiB3c3RyKS4KCS0gRml4ZWQgY29zbWV0aWMgYnVnIGluIElBVklTdHJlYW1JbXBsX2ZuUmVsZWFzZS4KCS0gRml4ZWQgdHlwby4KCgkqIGRsbHMvY29tbWRsZy9wcmludGRsZy5oLCBkbGxzL2NvbW1kbGcvcHJpbnRkbGcxNi5jLAoJICBkbGxzL250ZGxsL3Rlc3RzL2Vycm9yLmMsIGRsbHMvbnRkbGwvdGVzdHMvbGFyZ2VfaW50LmMsCgkgIGRsbHMvbnRkbGwvdGVzdHMvcnRsc3RyLmMsIGRsbHMvbnRkbGwvdGVzdHMvc3RyaW5nLmMsCgkgIGRsbHMvb3BlbmdsMzIvb3BlbmdsX2V4dC5oLCBkbGxzL3dpbm1tL21jaWF2aS93bmQuYzoKCU1pY2hhZWwgR/xubmV3aWcgPE1pY2hhZWxHdWVubmV3aWdAZ214LmRlPgoJRml4ZWQgd2FybmluZ3Mgd2l0aCBnY2Mgb3B0aW9uICItV3dyaXRlLXN0cmluZ3MiLgoKMjAwMy0xMC0wMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIE1ha2UucnVsZXMuaW4sIGRsbHMvY29tY3RsMzIvLmN2c2lnbm9yZSwgZGxscy9jb21jdGwzMi9NYWtlZmlsZS5pbiwKCSAgZGxscy9jb21jdGwzMi9yc3JjLnJjLCBkbGxzL2NvbW1kbGcvLmN2c2lnbm9yZSwKCSAgZGxscy9jb21tZGxnL01ha2VmaWxlLmluLCBkbGxzL2NvbW1kbGcvY2RsZ194eC5yYywKCSAgZGxscy9vbGUzMi8uY3ZzaWdub3JlLCBkbGxzL29sZTMyL01ha2VmaWxlLmluLAoJICBkbGxzL29sZTMyL29sZTMycmVzLnJjLCBkbGxzL3NoZWxsMzIvLmN2c2lnbm9yZSwKCSAgZGxscy9zaGVsbDMyL01ha2VmaWxlLmluLCBkbGxzL3NoZWxsMzIvc2hyZXMucmMsCgkgIGRsbHMvdXNlci9NYWtlZmlsZS5pbiwgZGxscy91c2VyL3Jlc291cmNlcy8uY3ZzaWdub3JlLAoJICBkbGxzL3VzZXIvcmVzb3VyY2VzL2Rpc3BsYXkucmMsCgkgIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX2JpdG1hcHMucmMsCgkgIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX2N1cnNvcnMucmMsCgkgIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX2ljb25zLnJjLCBwcm9ncmFtcy9yZWdlZGl0Ly5jdnNpZ25vcmUsCgkgIHByb2dyYW1zL3JlZ2VkaXQvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3JlZ2VkaXQvcmVzb3VyY2UucmMsCgkgIHByb2dyYW1zL3dpbmVjZmcvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvd2luZWNmZy9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvd2luZWNmZy93aW5lY2ZnLnJjOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUV4dHJhY3QgYmluYXJ5IHJlc291cmNlcyB0byBmaWxlcywgdG8gZml0IHRoZSBzdGFuZGFyZC4KCgkqIGRsbHMvbnRkbGwvY2Ryb20uYzogQXZvaWQgY2xvc2luZyB0aGUgY2Ryb20gaWYgd2UgZmFpbGVkIHRvIG9wZW4gaXQuCgoJKiBkbGxzL2QzZDgvZDNkOF9wcml2YXRlLmgsIGRsbHMvZDNkOC9kaXJlY3R4LmM6CglKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJQ2hlY2sgZm9yIGFkdmVydGl6ZWQgdmVydGV4IGJsZW5kIHN1cHBvcnQgYmVmb3JlIHF1ZXJ5aW5nIGRldmljZQoJY2FwYWJpbGl0aWVzLCB3aGljaCBzaWxlbmNlcyBpc3N1ZXMgYWJvdXQgdmVydGV4IGJsZW5kaW5nLgoKCSogZGxscy9vbGVhdXQzMi90ZXN0cy92YXJ0ZXN0LmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJVGVzdHMgZm9yIHJlY2VudCB2YXJpYW50IGNoYW5nZXMuCgoJKiBkbGxzL250ZGxsL2Nkcm9tLmM6IFBhdmVsIFJvc2tpbiA8cHJvc2tpQGdudS5vcmc+CglBZGQgc3VwcG9ydCBmb3IgU0NTSSBDRC1ST01zIHRvIENEUk9NX0dldEludGVyZmFjZUluZm8oKS4KCUZpeCBkZXZpY2UgbnVtYmVyIGZvciBJREUgQ0QtUk9Ncy4gIFJldHVybiAwIGZvciB1bnN1cHBvcnRlZCBkcml2ZXMuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgaW5jbHVkZS9jb25maWcuaC5pbjoKCVBhdmVsIFJvc2tpbiA8cHJvc2tpQGdudS5vcmc+CglBZGRlZCBjaGVjayBmb3Igc2NzaS9zY3NpX2lvY3RsLmguCgoJKiBkbGxzL21zaS9tc2kuc3BlYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4ZWQgbXNpIHNwZWMgZmlsZS4KCgkqIHNjaGVkdWxlci9wdGhyZWFkLmM6CglBIGNvdXBsZSBvZiBuZXcgZnVuY3Rpb25zIGhhdmUgYmVlbiBhZGRlZCB0byB0aGUgcHRocmVhZF9mdW5jdGlvbnMKCXN0cnVjdHVyZS4KCgkqIGRsbHMveDExZHJ2L3dpbmRvdy5jOgoJV2Ugb25seSBuZWVkIHRvIGNoZWNrIGZvciBzYW1lIHByb2Nlc3Mgc2libGluZ3MgaW4gZGVza3RvcCBtb2RlIGZvcgoJdG9wLWxldmVsIHdpbmRvd3MuCgoJKiBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYywgZGxscy9vbGVhdXQzMi92YXJpYW50Lmg6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJQWRkIFZhclBhcnNlTnVtRnJvbVN0cigpL1Zhck51bUZyb21QYXJzZU51bSgpLCB1c2UgdGhlbSBmb3IKCWNvbnZlcnNpb25zLgoJVmFyaWFudEluaXQoKTogT25seSB0b3VjaCBWX1ZUIGZpZWxkLgoJVmFyaWFudENsZWFyKCk6IFN1cHBvcnQgSVJlY29yZEluZm8sIGRvbid0IGZyZWUgbnVsbCBic3Rycy4KCUFkZCBzdXBwb3J0IGZvciB1cGNvbWluZyB2dHlwZXMsIHJlbW92ZSBkZWFkIGNvZGUsIGRvY3MuCgoJKiBkbGxzL2QzZDgvZGV2aWNlLmMsIGRsbHMvZDNkOC9kcmF3cHJpbS5jOgoJSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCU1pbm9yIGZpeGVzIC0gUmVtb3ZlIGxpZ2h0IGRlYnVnIHN0YXRlbWVudHMsIGhhbmRsZSBkaXNhYmxlZCBzcGVjdWxhcgoJbWF0ZXJpYWwgcHJvcGVybHksIHJlbGVhc2Ugc3VyZmFjZXMgd2hlbiBkZWJ1Z2dpbmcgYW5kIGNsZWFuIHVwIHRyYWNlCglhIGxpdHRsZS4KCgkqIGxpYnMvd2luZS9kZWJ1Zy5jLCB0b29scy9mbnQyYmRmLmMsIHRvb2xzL3dpbmVidWlsZC9idWlsZC5oLAoJICB0b29scy93aW5lYnVpbGQvbWFpbi5jLCB0b29scy93aW5lYnVpbGQvcmVsYXkuYywKCSAgdG9vbHMvd2luZWJ1aWxkL3NwZWMxNi5jOgoJRGFuaWVsIE1hcm1pZXIgPGQubWFybWllckBibHVld2luLmNoPgoJRml4ZWQgd2FybmluZ3Mgd2l0aCBnY2Mgb3B0aW9uICItV3dyaXRlLXN0cmluZ3MiLgoKCSogcHJvZ3JhbXMvcmVnYXBpL3JlZ1NldC5zaDogR2VyYWxkIFBmZWlmZXIgPGdlcmFsZEBwZmVpZmVyLmNvbT4KCVRoaXMgaXMgYWN0dWFsbHkgYSAvYmluL3NoIHNjcmlwdCwgL2Jpbi9iYXNoIGlzIG5vdCBuZWVkZWQuCglDaGVjayB3aGV0aGVyIHRoZSB0d28gaW5wdXQgZmlsZXMgZXhpc3RzIGluc3RlYWQgb2YgYXNzdW1pbmcgdGhleSBkby4KCgkqIHRvb2xzL2JpbjJyZXMuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCU1ha2UgYmluMnJlcyBzaWxlbnQgYnkgZGVmYXVsdC4KCgkqIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvY29tbWN0cmwuaCwgaW5jbHVkZS90bXNjaGVtYS5oLAoJICBpbmNsdWRlL3dpbnVzZXIuaDoKCUtldmluIEtvbHR6YXUgPGtldmluQHBsb3Aub3JnPgoJQWRkZWQgdG1zY2hlbWEuaCBhbmQgc29tZSBvdGhlciB0aGVtZSBkZWZpbmVzLgoKCSogZmlsZXMvZmlsZS5jOiBQYXZlbCBSb3NraW4gPHByb3NraUBnbnUub3JnPgoJSW1wbGVtZW50ZWQgR2V0Q29tcHJlc3NlZEZpbGVTaXplW0FXXS4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBpbmNsdWRlL2NvbmZpZy5oLmluOgoJUGF2ZWwgUm9za2luIDxwcm9za2lAZ251Lm9yZz4KCUFkZGVkIGNoZWNrIGZvciBzdF9ibG9ja3MgaW4gc3RydWN0IHN0YXQuCgoyMDAzLTEwLTAyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9rZXJuZWwvcHJvY2Vzcy5jLCBkbGxzL250ZGxsL2xvYWRlci5jLCBmaWxlcy9kaXJlY3RvcnkuYywKCSAgaW5jbHVkZS9maWxlLmgsIGxvYWRlci9tb2R1bGUuYzoKCUNoYW5nZWQgTGRyTG9hZERsbCB0byBvbmx5IHNlYXJjaCBmb3IgdGhlIGRsbCBpbiB0aGUgc3BlY2lmaWVkIHBhdGgsCgl1c2luZyBudGRsbCBmdW5jdGlvbnMuCglNb3ZlZCBMT0FEX1dJVEhfQUxURVJFRF9TRUFSQ0hfUEFUSCBmdW5jdGlvbmFsaXR5IHRvIExvYWRMaWJyYXJ5RXgKCXdoZXJlIGl0IGJlbG9uZ3MuCgoJKiBkbGxzL3gxMWRydi93aW5kb3cuYzoKCUluIGRlc2t0b3AgbW9kZSwgb25seSBtb3ZlIHRoZSB3aW5kb3cgaW4gWi1vcmRlciByZWxhdGl2ZSB0byBzaWJsaW5ncwoJYmVsb25naW5nIHRvIHRoZSBzYW1lIHByb2Nlc3MuCgoJKiBmaWxlcy9kcml2ZS5jOgoJSGFjayB0byB1cGRhdGUgbnRkbGwgY3VycmVudCBkaXJlY3RvcnkgdmFsdWUgaW4gRFJJVkVfQ2hkaXIuCgoJKiBkbGxzL250ZGxsL3BhdGguYzoKCUZpeGVkIGEgY291cGxlIG9mIGJ1Z3MgaW4gUnRsRG9zU2VhcmNoUGF0aF9VIGFuZCBSdGxHZXRGdWxsUGF0aE5hbWVfVS4KCU1ha2UgUnRsRG9lc0ZpbGVFeGlzdHNfVSBkbyBzb21ldGhpbmcgdXNlZnVsIGJ5IGNhbGxpbmcgQ3JlYXRlRmlsZVcKCWZvciBub3cuCgoJKiBkbGxzL3VzZXIvdGVzdHMvLmN2c2lnbm9yZSwgZGxscy91c2VyL3Rlc3RzL01ha2VmaWxlLmluLAoJICBkbGxzL3VzZXIvdGVzdHMvbXNnLmMsIGRvY3VtZW50YXRpb24vZ3VpOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCU1vdmUgdGhlIG1lc3NhZ2Ugc2VxdWVuY2VzIGRvY3VtZW50ZWQgaW4gZG9jdW1lbnRhdGlvbi9ndWkgaW50byBhIHVuaXQKCXRlc3QuCgoJKiBkbGxzL3VzZXIvcmVzb3VyY2VzL1RPRE86IERpbWl0cmllIE8uIFBhdW4gPGRpbWlAaW50ZWxsaXdhcmUuY2E+CglSZW1vdmVkIG9ic29sZXRlIFRPRE8gZmlsZS4KCgkqIGRsbHMvc2hkb2N2dy9zaGRvY3Z3X21haW4uYzoKCVJvbGYgS2FsYmVybWF0dGVyIDxyb2xmLmthbGJlcm1hdHRlckBjaXRlbmcuY29tPgoJU0hET0NWV18xMTggKFNoZWxsRERFSW5pdCkgaXMgcmVhbGx5IGEgZHluYW1pYyBmb3J3YXJkIHRvIFNIRUxMMzJfMTg4LgoKCSogZGxscy9zaGVsbDMyL3NocG9saWN5LmMsIGRsbHMvc2hlbGwzMi91bmRvY3NoZWxsLmgsIGluY2x1ZGUvc2hsb2JqLmg6CglSb2xmIEthbGJlcm1hdHRlciA8cm9sZi5rYWxiZXJtYXR0ZXJAY2l0ZW5nLmNvbT4KCU1vdmVkIGRlZmluaXRpb24gb2YgbmV3bHkgZG9jdW1lbnRlZCBBUEkgU0hSZXN0cmljdGVkKCkgYW5kIHRoZQoJYWNjb3JkaW5nIHBvbGljeSBkZWZpbml0aW9ucyB0byBzaGxvYmouaC4KCVJlcGxhY2UgdGhlIHBvbGljeSBudW1lcmljIHZhbHVlcyB3aXRoIHRoZSBuZXcgb2ZmaWNpYWwgZGVmaW5lcyBhbmQKCWNoYW5nZSBTSFJlc3RyaWN0ZWQoKSB0byBtYXRjaCB0aGUgbmV3IGRvY3VtZW50ZWQgcHJvdG90eXBlLgoKCSogZGxscy9udGRsbC90aW1lLmMsIHRvb2xzL3dtYy93cml0ZS5jOgoJR2VyYWxkIFBmZWlmZXIgPGdlcmFsZEBwZmVpZmVyLmNvbT4KCUNhc3QgdGltZV90IHBhcmFtZXRlcnMgdG8gZnByaW50ZiguLi4sIiVsIiwuLi4pIHRvIGxvbmcuCgoJKiBkbGxzL3gxMWRydi9rZXlib2FyZC5jOiBTYWxtZWxhIDw5NzAwNTg0QGNzLnN0YWRpYS5maT4KCVVwZGF0ZWQgRmlubmlzaCBrZXlib2FyZCBsYXlvdXQuCgoJKiBkb2N1bWVudGF0aW9uL01ha2VmaWxlLmluOiBHZXJhbGQgUGZlaWZlciA8Z2VyYWxkQHBmZWlmZXIuY29tPgoJUmVtb3ZlIG9ic29sZXRlICJzdGF0dXMiIGRpcmVjdG9yeSBmcm9tIEVYVFJBU1VCRElSUy4KCgkqIHByb2dyYW1zL25vdGVwYWQvTmwucmMsIHByb2dyYW1zL25vdGVwYWQvcnNyYy5yYzoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJQWRkZWQgRHV0Y2ggdHJhbnNsYXRpb24uCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUNoYW5nZSBhIE1FU1NBR0UgYWJvdXQgY3JlYXRpbmcgYSBkaXJlY3RvcnkgdG8gYSBUUkFDRS4KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmM6IFBhdmVsIFJvc2tpbiA8cHJvc2tpQGdudS5vcmc+CglJZ25vcmUgd2luZG93IGNhcHRpb24gZnJvbSBQUk9QU0hFRVRIRUFERVIgaW4gd2l6YXJkcy4gIFVwZGF0ZSB3aW5kb3cKCWNhcHRpb24gd2hlbiBjaGFuZ2luZyBwYWdlcy4KCgkqIGRvY3VtZW50YXRpb24vd2luZWxpYi1iaW5kbGxzLnNnbWwsIGRvY3VtZW50YXRpb24vd2luZWxpYi1tZmMuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi93aW5lbGliLXBvcnRpbmcuc2dtbCwgZG9jdW1lbnRhdGlvbi93aW5lbGliLXVzZXIuc2dtbDoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglBZGQgYXV0aG9yIGxpc3QgYXMgd2l0aCB0aGUgb3RoZXIgZ3VpZGVzLgoJU21hbGwgY2xlYW51cHMuCgoJKiBkbGxzL29kYmMzMi9wcm94eW9kYmMuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVRpZHkgdXAgdGhlIG5vdGVzIGZvciB0aGUgT0RCQyBkcml2ZXIuCgoJKiBpbmNsdWRlL21tZGRrLmg6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglBZGRlZCBzb21lIG1pc3NpbmcgZGVmaW5lcy4KCU1vdmVkIFdpbmUgb25seSBkZWZpbmVzIHRvIG5vdCBjb25mbGljdC4KCjIwMDMtMTAtMDEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzZXJ2ZXIvcmVnaXN0cnkuYywgc2VydmVyL3RyYWNlLmMsIHRvb2xzL21ha2VfcmVxdWVzdHM6CglHZXJhbGQgUGZlaWZlciA8Z2VyYWxkQHBmZWlmZXIuY29tPgoJQ2FzdCB0aW1lX3QgdG8gbG9uZyBmb3IgcHJpbnRpbmcuCgoJKiBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmMsIGRsbHMvZ2RpL3dpbmcuYywgZGxscy9rZXJuZWwvYXRvbS5jLAoJICBkbGxzL250ZGxsL2xhcmdlX2ludC5jLCBkbGxzL3NobHdhcGkvc3RyaW5nLmMsIGxvYWRlci9tb2R1bGUuYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglEb2N1bWVudGF0aW9uIHVwZGF0ZXMuCgoJKiBkbGxzL2FkdmFwaTMyL2NyeXB0LmMsIGRsbHMvY29tbWRsZy9wcmludGRsZzE2LmMsCgkgIGRsbHMvb2xlMzIvY2xpcGJvYXJkLmMsIGRsbHMvb2xlMzIvZmlsZW1vbmlrZXIuYzoKCU1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuZGU+CglGaXggbWlzc2luZyBtZW0gZnJlZWluZyBvbiBlcnJvciBwYXRoLgoKCSogdG9vbHMvYmluMnJlcy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJVGVhY2ggYmluMnJlcyB0byBkZWFsIHdpdGggb25lIGZpbGUgYXQgYSB0aW1lLgoKCSogZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZGxscy9rZXJuZWwvbG9jYWxlLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglTdHVicyBmb3IgR2V0L1NldFVzZXJHZW9JRCgpLgoKCSogZGxscy9zaGx3YXBpL3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMvc2hsd2FwaS90ZXN0cy9NYWtlZmlsZS5pbiwKCSAgZGxscy9zaGx3YXBpL3Rlc3RzL2Nsc2lkLmMsIGRsbHMvc2hsd2FwaS90ZXN0cy9zdHJpbmcuYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglOZXcgdGVzdHMgZm9yIHNobHdhcGkgc3RyaW5nIGFuZCBjbHNpZCBmdW5jdGlvbnMuCgoJKiBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLCBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjLCBkbGxzL3NobHdhcGkvdXJsLmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJQWRkIEA0MDUvNDA2LCBkb2N1bWVudCBVUkwgZnVuY3Rpb25zLgoJRml4IE1MTG9hZExpYnJhcnlXIHByb3RvdHlwZS4KCgkqIHRvb2xzL2MybWFuLnBsOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJRW5zdXJlIHdlIGdlbmVyYXRlIGZvciAtbm9uYW1lIG9yZGluYWxzIGRvY3VtZW50ZWQgYXMgJ0AnLgoKCSogZGxscy9kc291bmQvY2FwdHVyZS5jLCBkbGxzL2Rzb3VuZC9kc291bmQuc3BlYywKCSAgZGxscy9kc291bmQvZHNvdW5kX21haW4uYzoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglGaXhlZCBzb21lIHRyYWNlcy4KCUZpeGVkIHNwZWMgZmlsZSB0byBtYXRjaCBNaWNyb3NvZnQgZGxsLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jOiBQYXZlbCBSb3NraW4gPHByb3NraUBnbnUub3JnPgoJTWFrZSBpdCBwb3NzaWJsZSB0byBjbG9zZSB0aGUgIkFib3V0IFdpbmUiIGRpYWxvZyBieSBwcmVzc2luZyBFc2NhcGUuCgoJKiBwcm9ncmFtcy9jbG9jay9ObC5yYywgcHJvZ3JhbXMvY2xvY2svcnNyYy5yYywKCSAgcHJvZ3JhbXMvY21kbGd0c3QvTmwucmMsIHByb2dyYW1zL2NtZGxndHN0L2NtZGxnci5yYzoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJRHV0Y2ggdHJhbnNsYXRpb24gb2YgY2xvY2sgYW5kIGNtZGxndHN0LgoKCSogcHJvZ3JhbXMvd2luaGVscC9tYWNyby5jOiBQYXZlbCBSb3NraW4gPHByb3NraUBnbnUub3JnPgoJQ29ycmVjdGx5IHNldCBvcGVuZmlsZW5hbWUubFN0cnVjdFNpemUgYmVmb3JlIGNhbGxpbmcKCUdldE9wZW5GaWxlTmFtZSgpLgoKMjAwMy0wOS0zMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL3Byb2Nlc3MuYywgZGxscy9rZXJuZWwvdG9vbGhlbHAuYywgZGxscy9udGRsbC9lbnYuYywKCSAgZGxscy9udGRsbC9sb2FkZXIuYywgZGxscy9udGRsbC9udC5jLCBkbGxzL3BzYXBpL3BzYXBpX21haW4uYywKCSAgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLCBwcm9ncmFtcy93aW5lZGJnL2RlYnVnZ2VyLmgsCgkgIHByb2dyYW1zL3dpbmVkYmcvZ2RicHJveHkuYywgcHJvZ3JhbXMvd2luZWRiZy93aW5lZGJnLmMsCgkgIHNlcnZlci9kZWJ1Z2dlci5jLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcHJvY2Vzcy5oLAoJICBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvdHJhY2UuYzoKCVN0b3JlIG1vZHVsZSBuYW1lcyBpbiBVbmljb2RlIGluIHRoZSBzZXJ2ZXIuCgoJKiBkbGxzL2dkaS9iaWRpLmMsIGRsbHMvaXBobHBhcGkvaXBzdGF0cy5jLCBkbGxzL2tlcm5lbC9wdGhyZWFkLmMsCgkgIGRsbHMvbXN2Y3J0L3Byb2Nlc3MuYywgZGxscy93aW5zb2NrL2FzeW5jLmMsIGRsbHMvd2luc29jay9zb2NrZXQuYywKCSAgaW5jbHVkZS9wc2hwYWNrMS5oLCBpbmNsdWRlL3BzaHBhY2syLmgsIGluY2x1ZGUvcHNocGFjazQuaCwKCSAgaW5jbHVkZS9wc2hwYWNrOC5oLCBpbmNsdWRlL3dpbm50LmgsIHNjaGVkdWxlci9wdGhyZWFkLmMsCgkgIHRvb2xzL3dpbmFwaS93aW5hcGlfdGVzdDoKCURhbmllbCBNYXJtaWVyIDxkLm1hcm1pZXJAYmx1ZXdpbi5jaD4KCVVzZSAjaWZkZWYgaW5zdGVhZCBvZiAjaWYgZm9yIGFsbCBmZWF0dXJlIHRlc3RzLgoJQ2hlY2sgdGhhdCBfTVNDX1ZFUiBpcyBkZWZpbmVkIGJlZm9yZSB1c2luZyBpdC4KCgkqIGRsbHMvZGRyYXcvZGRyYXcvdXNlci5jLCBkbGxzL3gxMWRydi9kZXNrdG9wLmMsCgkgIGRsbHMveDExZHJ2L3h2aWRtb2RlLmM6CglBbGV4IFBhc2FkeW4gPGFqcEBtYWlsLnV0ZXhhcy5lZHU+CgktIEFkZCBtb3JlIGxvZ2dpbmcgdG8gcmVzb2x1dGlvbiBjaGFuZ2VzIGFuZCBxdWVyaWVzLgoJLSBBbHdheXMgZW51bWVyYXRlIGFuZCBhbGxvdyA4LCAxNiwgYW5kIDMyLWJpdCBtb2Rlcy4KCS0gQWRkIG1vcmUgZGVmYXVsdCBjaG9pY2VzIHRvIFdpbmUgZGVza3RvcCBzaXplcy4KCS0gUmVuYW1lZCBzb21lIHZhcmlhYmxlcyB0byBtYWtlIHRoaW5ncyBlYXNpZXIgdG8gZm9sbG93LgoKCSogZGxscy9vbGVzdnIvb2xlc3ZyLnNwZWMsIGRsbHMvb2xlc3ZyL29sZXN2cjMyLnNwZWMsCgkgIGRsbHMvb2xlc3ZyL29sZXN2cl9tYWluLmM6CglQYXZlbCBSb3NraW4gPHByb3NraUBnbnUub3JnPgoJSW1wbGVtZW50IHN0dWJzIGZvciBPbGVSZW5hbWVTZXJ2ZXJEb2MsIE9sZVJldmVydFNlcnZlckRvYyBhbmQKCU9sZVNhdmVkU2VydmVyRG9jIGFuZCB0aGVpciAxNi1iaXQgZXF1aXZhbGVudHMuCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmM6IENocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCVNtYWxsIGxpZ2h0aW5nIGZpeC4KCgkqIHRvb2xzL3dpbmVzaGVsbGxpbms6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJUmV0dXJuIDIgaW4gY2FzZSBvZiBhIHVzYWdlIGVycm9yLgoJVXNlIC16IGluc3RlYWQgb2YgY29tcGFyaW5nIHRvIGFuIGVtcHR5IHN0cmluZy4KCgkqIHByb2dyYW1zL3dpbmVjZmcvRW4ucmMsIHByb2dyYW1zL3dpbmVjZmcvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL3dpbmVjZmcvYXBwZGVmYXVsdHMuYywgcHJvZ3JhbXMvd2luZWNmZy9kcml2ZS5jLAoJICBwcm9ncmFtcy93aW5lY2ZnL21haW4uYywgcHJvZ3JhbXMvd2luZWNmZy9yZXNvdXJjZS5oLAoJICBwcm9ncmFtcy93aW5lY2ZnL3dpbmVjZmcuYywgcHJvZ3JhbXMvd2luZWNmZy93aW5lY2ZnLmgsCgkgIHByb2dyYW1zL3dpbmVjZmcveDExZHJ2ZGxnLmM6CglNaWtlIEhlYXJuIDxtaWtlQHRoZW9yZXRpYy5jb20+CglNb3ZlIEFwcGxpY2F0aW9ucyB0YWIgYmVmb3JlIExpYnJhcmllcyB0YWIuCglJbXByb3ZlIHJldHVybl9pZl9mYWlsLgoJUGFydGx5IGltcGxlbWVudCBhcHBkZWZhdWx0cyBVSS4KCVJlcGxhY2UgdXNhZ2Ugb2YgRW5hYmxlV2luZG93IHdpdGggY2xlYXJlciBlbmFibGUvZGlzYWJsZSBtYWNyb3MuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9Fbi5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfRnIucmMsCgkgIGRsbHMvc2hlbGwzMi9zaHJlcy5yYzoKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCUV4dHJhY3QgbG9jYWxpc2FibGUgcmVzb3VyY2VzIGZyb20gc2hyZXMucmMgdG8gcHJvcGVyIGxhbmd1YWdlIGZpbGUuCgoJKiBkbGxzL29sZTMyL2NvbXBvc2l0ZW1vbmlrZXIuYywgZGxscy9vbGUzMi9maWxlbW9uaWtlci5jLAoJICBkbGxzL29sZTMyL29sZTE2LmM6CglNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmRlPgoJRml4ZXMgZm9yIG1lbW9yeSBsZWFrcyBvbiBlcnJvciBwYXRoLgoJT25lIGZpeCBmb3IgdXNlIG9mIHByZXZpb3VzIHJlbGVhc2VkIHBvaW50ZXIuCgoJKiBkbGxzL2NvbW1kbGcvY29sb3JkbGcuYzogTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5kZT4KCUZpeCBtZW1vcnkgbGVha3Mgb24gZXJyb3IgcGF0aC4KCgkqIGRsbHMvd2luZWRvcy9kZXZpY2VzLmMsIGRsbHMvd2luZWRvcy9kb3NleGUuaCwgZGxscy93aW5lZG9zL2Rvc3ZtLmMsCgkgIGRsbHMvd2luZWRvcy9pbnQwOS5jLCBkbGxzL3dpbmVkb3MvaW50MTAuYywgZGxscy93aW5lZG9zL2ludDE2LmMsCgkgIGRsbHMvd2luZWRvcy9pbnQxYS5jLCBkbGxzL3dpbmVkb3MvdGltZXIuYzoKCUp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCVVzZSBjb3JyZWN0IGxpbmVhciBwb2ludGVyIHdoZW4gYWNjZXNzaW5nIEJJT1MgZGF0YSBhcmVhLgoKCSogZGxscy9rZXJuZWwvdmVyc2lvbi5yYzogUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCVNldCB2ZXJzaW9uIG9mIGtlcm5lbDMyIHRvIFdpbmRvd3MgMjAwMCBTUDQuCgoJKiBkbGxzL2QzZDgvZDNkOF9wcml2YXRlLmgsIGRsbHMvZDNkOC9kZXZpY2UuYywgZGxscy9kM2Q4L2RpcmVjdHguYywKCSAgZGxscy9kM2Q4L3N0YXRlYmxvY2suYzoKCUphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglNYXhBY3RpdmVMaWdodHMgbWVhbnMgbnVtYmVyIG9mIGNvbmN1cnJlbnQgbGlnaHRzLCBidXQgYW55IG51bWJlciBjYW4KCWJlICBzZXQgdXAuIENoYW5nZSBzdXBwb3J0IGZvciBsaWdodHMgaW50byBhIGxpbmtlZCBsaXN0IGFuZCBvbmx5IHNldAoJdXAgYW4gZXF1aXZhbGVudCBnbCBsaWdodCB3aGVuIHRoZSBsaWdodCBpcyBlbmFibGVkLgoKCSogZGxscy9kM2Q4L3N1cmZhY2UuYzogSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCU1ha2UgdW5sb2NrIG9mIHRoZSBiYWNrYnVmZmVyIGNvcnJlY3RseSByZXN0b3JlIHRoZSBjb250ZW50cy4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYzoKCVJvbGYgS2FsYmVybWF0dGVyIDxyb2xmLmthbGJlcm1hdHRlckBjaXRlbmcuY29tPgoJQWRkZWQgSXNMRk5Ecml2ZUEvVy9BVyBleHBvcnRzIGFuZCB0d28gbW9yZSBzdHVicy4KCjIwMDMtMDktMjkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC9yZWxheTE2LmMsIGRsbHMvbnRkbGwvbG9hZGVyLmMsIGRsbHMvbnRkbGwvbnRkbGxfbWlzYy5oLAoJICBkbGxzL250ZGxsL3JlbGF5LmMsIGZpbGVzL2RpcmVjdG9yeS5jLCBpbmNsdWRlL2ZpbGUuaCwKCSAgaW5jbHVkZS93aW50ZXJubC5oOgoJQ29udmVydGVkIG1vc3Qgb2YgdGhlIGxvYWRlciBjb2RlIHRvIFVuaWNvZGUuCgoJKiB0b29scy93aW5laW5zdGFsbDoKCVRyeSB0byBjYXRjaCB0aGUgY2FzZSBvZiBhIG5vbi13cml0YWJsZSBzb3VyY2UgZGlyZWN0b3J5IGJlZm9yZQoJcnVubmluZyBjb25maWd1cmUuCgoJKiB0b29scy93cmMvcGFyc2VyLnk6CglGaXhlZCBoYW5kbGluZyBvZiBVbmljb2RlIHN0cmluZ3MgdXNlZCBhcyBmaWxlbmFtZXMgKHJlcG9ydHMgYnkgTWFydGluCglGdWNocykuCgoJKiBkbGxzL2RwbGF5eC9kcGxheXhfbWVzc2FnZXMuYywgZGxscy9pbW0zMi9pbW0uYywKCSAgZGxscy9rZXJuZWwvbGNmb3JtYXQuYywgZGxscy9rZXJuZWwvdGVzdHMvY29tbS5jLAoJICBkbGxzL2tlcm5lbC90ZXN0cy9sb2NhbGUuYywgZGxscy9vbGVhdXQzMi9kaXNwYXRjaC5jLAoJICBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmMsCgkgIGRvY3VtZW50YXRpb24vUkVBRE1FLml0LCBkb2N1bWVudGF0aW9uL2N2cy1yZWdyZXNzaW9uLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vZGVidWdnaW5nLnNnbWw6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVNvbWUgc3BlbGxpbmcgZml4ZXMuCglGaXggdGhlIGNhc2Ugb2YgV2luZUhRLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfRW4ucmMsIGRsbHMvd2lubW0vd2lubW1fRW4ucmM6CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglDaGFuZ2Ugc29tZSByZXNvdXJjZXMgZnJvbSBMQU5HX05FVVRSQUwgdG8gTEFOR19FTkdMSVNILgoKCSogdG9vbHMvYzJtYW4ucGwsIHRvb2xzL3dpbmFwaS93aW5hcGkucG0sCgkgIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLmRhdDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJVXBkYXRlIHdpbmFwaSBhbmQgYzJtYW4gc28gdGhleSBrbm93IGFib3V0IC1yZXQxNi4gUmVtb3ZlIHN1cHBvcnQgZm9yCgl0aGUgb2Jzb2xldGUgcGFzY2FsMTYgYW5kIC1ub2ltcG9ydC4KCVVwZGF0ZSBtb2R1bGVzLmRhdCBzbyB3aW5hcGkga25vd3MgYWJvdXQgdGhlIG5ldyBkbGxzLgoKCSogZG9jdW1lbnRhdGlvbi9IT1dUTy13aW5lbGliOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJUmVtb3ZlIHRoZSBvYnNvbGV0ZSBXaW5lbGliIEhPV1RPIGFuZCBEREUgc3RhdHVzLgoKCSogZGxscy9tc2FjbS9tc2FjbS5yYywgZGxscy9tc2FjbS9tc2FjbV9Fbi5yYywgZGxscy9tc2FjbS9tc2FjbV9Gci5yYzoKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCUV4dHJhY3QgbG9jYWxpc2FibGUgcmVzb3VyY2VzIGZyb20gbXNhY20gcmVzb3VyY2UgZmlsZS4KCgkqIHByb2dyYW1zL3dpbmVtaW5lL0VuLnJjLCBwcm9ncmFtcy93aW5lbWluZS9Fcy5yYywKCSAgcHJvZ3JhbXMvd2luZW1pbmUvRnIucmMsIHByb2dyYW1zL3dpbmVtaW5lL1B0LnJjLAoJICBwcm9ncmFtcy93aW5lbWluZS9TaS5yYzoKCVBhdmVsIFJvc2tpbiA8cHJvc2tpQGdudS5vcmc+CglXaWRlbiB0aGUgIkFib3V0IiBkaWFsb2cgdG8gcHJldmVudCB3cmFwcGluZyBvZiB0ZXh0LgoKCSogcHJvZ3JhbXMvd2luZW1pbmUvZGlhbG9nLmMsIHByb2dyYW1zL3dpbmVtaW5lL21haW4uYzoKCVBhdmVsIFJvc2tpbiA8cHJvc2tpQGdudS5vcmc+CglGaXggcHJvY2Vzc2luZyBvZiBJRENBTkNFTCBjb21tYW5kLgoJRG9uJ3QgY2hhbmdlIHNldHRpbmdzIGlmIHRoZSB1c2VyIGNhbmNlbGVkIHRoZSAiQ3VzdG9tIiBkaWFsb2cuCgoJKiBkbGxzL2QzZDkvdmVyc2lvbi5yYzogVG9tIFdpY2tsaW5lIDx0d2lja2xpbmVAc2t5YmVzdC5jb20+CglTZXQgdmVyc2lvbiB0byA5LgoKCSogZGxscy9kcGxheXgvZHBsYXlzcC5jLCBkbGxzL2RwbGF5eC9kcGxheXhfZ2xvYmFsLmMsCgkgIGRsbHMvZHBsYXl4L2RwbGF5eF9tYWluLmMsIGRsbHMvZHBsYXl4L2RwbG9iYnkuYywKCSAgZGxscy9kcGxheXgvbG9iYnlzcC5jLCBkbGxzL2RwbGF5eC9uYW1lX3NlcnZlci5jOgoJVG9tIFdpY2tsaW5lIDx0d2lja2xpbmVAc2t5YmVzdC5jb20+CglSZW1vdmUgb2Jzb2xldGUgaW5mb3JtYXRpb24uCgoyMDAzLTA5LTI3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9rZXJuZWwvbmVfbW9kdWxlLmMsIGRsbHMva2VybmVsL3Byb2Nlc3MuYywgZGxscy9udGRsbC9sb2FkZXIuYywKCSAgZGxscy9udGRsbC9sb2Fkb3JkZXIuYywgaW5jbHVkZS9tb2R1bGUuaDoKCUNvbnZlcnRlZCB0aGUgbG9hZCBvcmRlciBjb2RlIHRvIHVzZSBVbmljb2RlIHRocm91Z2hvdXQuCgoJKiBpbmNsdWRlL3dpbmUvdW5pY29kZS5oOiBBZGRlZCBzdHJzcG5XIGFuZCBzdHJjc3BuVy4KCgkqIGRsbHMvc2hlbGwzMi9zaGxmaWxlb3AuYywgZGxscy9zaGVsbDMyL3Rlc3RzL3NobGZpbGVvcC5jOgoJUm9sZiBLYWxiZXJtYXR0ZXIgPHJvbGYua2FsYmVybWF0dGVyQGNpdGVuZy5jb20+CglGaXggYSByZXR1cm4gdmFsdWUgaW4gU0hGaWxlT3BlcmF0aW9uIGFuZCBhZGQgc29tZSBleHRyYSB0ZXN0cyB0bwoJaW50ZXJuYWwgaGVscGVyIGZ1bmN0aW9ucyBuZWNlc3NhcnkgdG8gZGVhbCB3aXRoIHNob3J0Y29taW5ncyBvZgoJa2VybmVsMzIgZnVuY3Rpb25zIGZvciB0aGUgdGltZSBiZWluZy4KCgkqIGRsbHMvdXNlci91c2VyMzIuc3BlYywgaW5jbHVkZS93aW51c2VyLmgsIHdpbmRvd3MvY2xhc3MuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnRlZCBSZWFsR2V0V2luZG93Q2xhc3MuCgoJKiBkbGxzL21zdmNydC9maWxlLmM6CglfdGVtcG5hbSBhbmQgX3d0ZW1wbmFtIHNob3VsZCBub3QgY3JlYXRlIHRoZSB0ZW1wIGZpbGUgKHJlcG9ydGVkIGJ5CglXaW0gVmFuZGVyYmF1d2hlZGUpLgoKCSogdG9vbHMvd2luZWR1bXAvbmUuYzoKCUFkZGVkIGR1bXBpbmcgb2YgdGhlIHJlc2lkZW50IG5hbWUgdGFibGUgb2YgTkUgZmlsZXMuCgoJKiBkbGxzL3R0eWRydi90dHlkcnZfbWFpbi5jLCBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jLAoJICBwcm9ncmFtcy93aW5ldmRtL3dpbmV2ZG0uYzoKCU1ha2Ugc3VyZSBhbGwgMTYtYml0IHN5c3RlbSBkcml2ZXJzIGFyZSBsb2FkZWQgZm9yIDE2LWJpdCBhcHBzLgoKCSogZGxscy9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwvLmN2c2lnbm9yZSwgZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sCgkgIGRsbHMva2VybmVsL2NvbW0uZHJ2LnNwZWMsIGRsbHMva2VybmVsL2NvbW0uc3BlYywKCSAgZGxscy91c2VyLy5jdnNpZ25vcmUsIGRsbHMvdXNlci9NYWtlZmlsZS5pbiwKCSAgZGxscy91c2VyL2Rpc3BsYXkuZHJ2LnNwZWMsIGRsbHMvdXNlci9kaXNwbGF5LnNwZWMsCgkgIGRsbHMvdXNlci9rZXlib2FyZC5kcnYuc3BlYywgZGxscy91c2VyL2tleWJvYXJkLnNwZWMsCgkgIGRsbHMvdXNlci9tb3VzZS5kcnYuc3BlYywgZGxscy91c2VyL21vdXNlLnNwZWM6CglSZW5hbWVkIGNvbW0uZGxsLCBkaXNwbGF5LmRsbCwga2V5Ym9hcmQuZGxsIGFuZCBtb3VzZS5kbGwgdG8gdXNlIHRoZQoJLmRydiBleHRlbnNpb24uCgoJKiBkbGxzL3NldHVwYXBpL3F1ZXVlLmM6IE1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuY29tPgoJRHVlIHRvIGEgbWlzcGxhY2VkICJ9IiBtZW1vcnkgd2Fzbid0IGZyZWVkIG9uIHRoZSBlcnJvciBwYXRoLgoKCSogcHJvZ3JhbXMvbm90ZXBhZC9kaWFsb2cuYywgcHJvZ3JhbXMvcmVnYXBpL3JlZ2FwaS5jLAoJICBwcm9ncmFtcy9yZWd0ZXN0L3JlZ3Rlc3QuYzoKCU1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuZGU+CglGaXggc29tZSBtZW1vcnkgbGVha3MgZm91bmQgYnkgc21hdGNoLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsLmM6IEVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJRml4IGJvdGggYSB3YXJuaW5nIGFuZCBzb21lIG5hc3R5IGNyYXNoZXMuLi4KCgkqIGRsbHMvbXNpL21zaS5jLCBkbGxzL21zaS9tc2lwcml2LmgsIGRsbHMvbXNpL21zaXF1ZXJ5LmMsCgkgIGRsbHMvbXNpL3N1bWluZm8uYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZSByZWZlcmVuY2VzIHRvIEhFQVBfc3RyZHVwQXRvVy4KCgkqIGRsbHMvZHBsYXl4L2RwY2xhc3NmYWN0b3J5LmMsIGRsbHMvZHBsYXl4L2RwbGF5LmMsCgkgIGRsbHMvZHBsYXl4L2RwbGF5eF9nbG9iYWwuYywgZGxscy9kcGxheXgvZHBsYXl4X21haW4uYywKCSAgZGxscy9kcGxheXgvZHBsYXl4X21lc3NhZ2VzLmMsIGRsbHMvZHBsYXl4L2RwbGF5eF9xdWV1ZS5oOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCU1lcmdlIGRvY3VtZW50YXRpb24vc3RhdHVzL2RpcmVjdHBsYXkgaW50byB0aGUgY29kZS4KCgkqIGRsbHMvZGRyYXcvZGRyYXcvbWFpbi5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJTWVyZ2UgZG9jdW1lbnRhdGlvbi9zdGF0dXMvZGlyZWN0ZHJhdyBpbnRvIHRoZSBkZHJhdyBjb2RlLgoKCSogZGxscy92ZXJzaW9uL2luZm8uYywgZGxscy92ZXJzaW9uL2luc3RhbGwuYzoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglNZXJnZSBkb2N1bWVudGF0aW9uL3N0YXR1cy92ZXJzaW9uIGludG8gdGhlIHZlcnNpb24gY29kZS4KCgkqIGRsbHMvbHpleHBhbmQvbHpleHBhbmRfbWFpbi5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJTWVyZ2UgZG9jdW1lbnRhdGlvbi9zdGF0dXMvbHpleHBhbmQgaW50byB0aGUgbHpleHBhbmQgc291cmNlLgoKCSogcHJvZ3JhbXMvc3RhcnQvRXMucmMsIHByb2dyYW1zL3N0YXJ0L3JzcmMucmM6CglKb3PpIE1hbnVlbCBGZXJyZXIgT3J0aXogPGptZm8xOTgyQHlhaG9vLmVzPgoJQWRkZWQgU3BhbmlzaCByZXNvdXJjZXMuCgoJKiBkbGxzL2Rzb3VuZC90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL2Rzb3VuZC90ZXN0cy9NYWtlZmlsZS5pbiwKCSAgZGxscy9kc291bmQvdGVzdHMvY2FwdHVyZS5jLCBkbGxzL2Rzb3VuZC90ZXN0cy9kc291bmQuYzoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglSZW1vdmUgY2FwdHVyZSB0ZXN0cyBmcm9tIGRzb3VuZC5jIGFuZCBwbGFjZSB0aGVtIGluIGEgbmV3IGZpbGUKCWNhcHR1cmUuYy4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQWxsb3cgd2F2ZSBlbXVsYXRlZCBjYXB0dXJlIHdoaWxlIGRvaW5nIGhhcmR3YXJlIGFjY2VsZXJhdGVkCglwbGF5YmFjay4KCgkqIGluY2x1ZGUvbXNpLmgsIGluY2x1ZGUvbXNpcXVlcnkuaDoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIEFXIGRlZmluZXMgdG8gbXNpLmggYW5kIG1zaXF1ZXJ5LmguCgoyMDAzLTA5LTI2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jOgoJU3RvcmUgdGhlIGRsbCBuYW1lIGZvciB0aGUgZXhwb3J0IGRpcmVjdG9yeSBpbnNpZGUgdGhlIGV4cG9ydGVkIG5hbWVzCglsaXN0LgoKCSogbG9hZGVyL21vZHVsZS5jOgoJQXZvaWQgZGVwZW5kaW5nIG9uIE1PRFVMRV9HZXRCaW5hcnlUeXBlIGluIGxvYWRfbGlicmFyeV9hc19kYXRhZmlsZS4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwgZGxscy9zaGVsbDMyL3NobGV4ZWMuYywKCSAgZmlsZXMvZGlyZWN0b3J5LmM6CglUaGUgIlBhdGgiIHZhbHVlIG9mIHRoZSAiQXBwIFBhdGhzIiBlbnRyeSBzaG91bGQgYmUgaGFuZGxlZCBpbgoJU2hlbGxFeGVjdXRlIGJ5IGNoYW5naW5nIFBBVEggaW4gdGhlIG5ldyBwcm9jZXNzLCBpbnN0ZWFkIG9mIGJlaW5nCglkb25lIGluIFNlYXJjaFBhdGguCgoJKiBkbGxzL2NvbW1kbGcvY29tbWRsZy5zcGVjLCBkbGxzL2N0bDNkL2N0bDNkLnNwZWMsCgkgIGRsbHMvY3RsM2QvY3RsM2R2Mi5zcGVjLCBkbGxzL2dkaS9kaXNwZGliLnNwZWMsCgkgIGRsbHMvZ2RpL2dkaS5leGUuc3BlYywgZGxscy9nZGkvd2luZy5zcGVjLAoJICBkbGxzL2tlcm5lbC9rcm5sMzg2LmV4ZS5zcGVjLCBkbGxzL2tlcm5lbC9zeXN0ZW0uZHJ2LnNwZWMsCgkgIGRsbHMva2VybmVsL3Rvb2xoZWxwLnNwZWMsIGRsbHMva2VybmVsL3dpbjg3ZW0uc3BlYywKCSAgZGxscy9semV4cGFuZC9semV4cGFuZC5zcGVjLCBkbGxzL21zYWNtL21zYWNtLnNwZWMsCgkgIGRsbHMvbXN2aWRlby9tc3ZpZGVvLnNwZWMsIGRsbHMvb2xlMzIvY29tcG9iai5zcGVjLAoJICBkbGxzL29sZTMyL29sZTIuc3BlYywgZGxscy9vbGUzMi9vbGUybmxzLnNwZWMsCgkgIGRsbHMvb2xlY2xpL29sZWNsaS5zcGVjLCBkbGxzL3NldHVwYXBpL3NldHVweC5zcGVjLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwuc3BlYywgZGxscy91c2VyL2RkZW1sLnNwZWMsCgkgIGRsbHMvdXNlci9kaXNwbGF5LnNwZWMsIGRsbHMvdXNlci9rZXlib2FyZC5zcGVjLAoJICBkbGxzL3VzZXIvbW91c2Uuc3BlYywgZGxscy91c2VyL3VzZXIuZXhlLnNwZWMsCgkgIGRsbHMvd2luMzJzL3czMnN5cy5zcGVjLCBkbGxzL3dpbjMycy93aW4zMnMxNi5zcGVjLAoJICBkbGxzL3dpbmFzcGkvd2luYXNwaS5zcGVjLCBkbGxzL3dpbmVwcy93aW5lcHMxNi5kcnYuc3BlYywKCSAgZGxscy93aW5tbS9tbXN5c3RlbS5zcGVjLCBkbGxzL3dpbm1tL3NvdW5kLnNwZWMsCgkgIGRsbHMvd2lubmxzL3dpbm5scy5zcGVjLCBkbGxzL3dpbnNvY2svd2luc29jay5zcGVjLAoJICBkbGxzL3dpbnRhYjMyL3dpbnRhYi5zcGVjLCB0b29scy93aW5lYnVpbGQvcGFyc2VyLmMsCgkgIHRvb2xzL3dpbmVidWlsZC93aW5lYnVpbGQubWFuLmluOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVJlbW92ZSB0aGUgb2Jzb2xldGUgcGFzY2FsMTYgKHJlcGxhY2VkIGJ5IHBhc2NhbCAtcmV0MTYpLgoKCSogZGxscy94MTFkcnYvZGVza3RvcC5jOiBNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmRlPgoJRml4ZWQgbWlzc2luZyB3aW5lX3RzeDExX3VubG9jaygpIG9uIGVycm9yIHBhdGguCgoyMDAzLTA5LTI1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9udGRsbC9sb2FkZXIuYywgaW5jbHVkZS9tb2R1bGUuaDoKCU1vdmVkIFdJTkVfTU9EUkVGIGRlZmluaXRpb24gdG8gbG9hZGVyLmMuCglSZW1vdmVkIHNob3J0IG1vZHVsZSBuYW1lIGZyb20gV0lORV9NT0RSRUYsIFdpbmRvd3MgZG9lc24ndCBoYXZlIGl0LgoJUmV3cm90ZSBMZHJHZXREbGxIYW5kbGUgdG8gb25seSB1c2UgVW5pY29kZS4KCgkqIGRsbHMvcXVhcnR6L2ZpbGVzb3VyY2UuYywgZGxscy9xdWFydHovcGluLmMsIGRsbHMvcXVhcnR6L3Bpbi5oLAoJICBkbGxzL3F1YXJ0ei9xdWFydHpfcHJpdmF0ZS5oOgoJUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCS0gQSBmZXcgY29zbWV0aWMgZml4ZXMuCgktIFZhcmlvdXMgYnVnIGZpeGVzLgoJLSBBZGQgc29tZSBPdXRwdXRQaW4gaGVscGVycy4KCS0gQWRkIGEgbmV3IHR5cGUgb2YgcGluLCBQdWxsUGluLgoKCSogZG9jdW1lbnRhdGlvbi9pbXBsZW1lbnRhdGlvbi5zZ21sLCBkb2N1bWVudGF0aW9uL3dpbmUtZGV2ZWwuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi93aW5lLnRleGluZm86CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJTWVyZ2UgdGhlIG5vbi1vYnNvbGV0ZSBiaXRzIGZyb20gd2luZS50ZXhpbmZvIGludG8gdGhlIFdpbmUgRGV2ZWxvcGVycwoJR3VpZGUuCgoJKiBwcm9ncmFtcy9jbWRsZ3RzdC9Fbi5yYywgcHJvZ3JhbXMvY21kbGd0c3QvRnIucmMsCgkgIHByb2dyYW1zL2NtZGxndHN0L0l0LnJjLCBwcm9ncmFtcy9jbWRsZ3RzdC9QdC5yYywKCSAgcHJvZ3JhbXMvY21kbGd0c3QvUnUucmMsIHByb2dyYW1zL2NtZGxndHN0L1NpLnJjOgoJUGF2ZWwgUm9za2luIDxwcm9za2lAZ251Lm9yZz4KCUZpeCBjaGVja2JveGVzIGluIHRoZSAiQ29sb3IgZGlhbG9nIGZsYWdzIiBkaWFsb2dzLiAgVGhleSB3b3VsZCBub3QKCWNoYW5nZSBzdGF0ZS4KCgkqIGRsbHMvc2VyaWFsdWkvRXMucmMsIGRsbHMvc2VyaWFsdWkvc2VyaWFsdWlfcmMucmMsCgkgIGRsbHMvc2V0dXBhcGkvRXMucmMsIGRsbHMvc2V0dXBhcGkvc2V0dXBhcGkucmM6CglKb3PpIE1hbnVlbCBGZXJyZXIgT3J0aXogPGptZm8xOTgyQHlhaG9vLmVzPgoJQWRkZWQgU3BhbmlzaCByZXNvdXJjZXMuCgoJKiBkbGxzL2tlcm5lbC9uZV9tb2R1bGUuYywgZGxscy9rZXJuZWwvcHJvY2Vzcy5jLAoJICBkbGxzL250ZGxsL01ha2VmaWxlLmluLCBkbGxzL250ZGxsL2xvYWRlci5jLCBkbGxzL250ZGxsL2xvYWRvcmRlci5jLAoJICBkbGxzL250ZGxsL250ZGxsX21pc2MuaCwgZG9jdW1lbnRhdGlvbi93aW5lLm1hbi5pbiwgaW5jbHVkZS9tb2R1bGUuaCwKCSAgbG9hZGVyL2xvYWRvcmRlci5jLCBtaXNjL29wdGlvbnMuYywgdG9vbHMvcnVudGVzdDoKCU1vdmVkIGxvYWRvcmRlciBzdXBwb3J0IHRvIGRsbHMvbnRkbGwuCglSZW1vdmVkIHRoZSAtLWRsbCBvcHRpb24gYW5kIHJlcGxhY2VkIGl0IGJ5IHRoZSBXSU5FRExMT1ZFUlJJREVTCgllbnZpcm9ubWVudCB2YXJpYWJsZS4KCgkqIHNjaGVkdWxlci9wdGhyZWFkLmM6CglJZ25vcmUgX19wdGhyZWFkX3J3bG9ja191bmxvY2sgY2FsbCBpZiB0aGUgcHRocmVhZCBmdW5jdGlvbnMgYXJlIG5vdAoJaW5pdGlhbGl6ZWQgeWV0LgoKCSogZGxscy9hZHZhcGkzMi90ZXN0cy9yZWdpc3RyeS5jLCBkbGxzL2tlcm5lbC90ZXN0cy9jb25zb2xlLmMsCgkgIGRsbHMva2VybmVsL3Rlc3RzL2ZpbGUuYywgZGxscy9tc3ZjcnQvdGVzdHMvc2NhbmYuYywKCSAgZGxscy9uZXRhcGkzMi90ZXN0cy9hY2Nlc3MuYywgZGxscy9uZXRhcGkzMi90ZXN0cy93a3N0YS5jLAoJICBkbGxzL250ZGxsL3Rlc3RzL3J0bHN0ci5jLCBkbGxzL3NobHdhcGkvdGVzdHMvY2xpc3QuYywKCSAgZGxscy9zaGx3YXBpL3Rlc3RzL3BhdGguYywgZGxscy93aW5pbmV0L3Rlc3RzL2h0dHAuYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglWYXJpb3VzIHRlc3QgZml4ZXMgZm9yIFhQL21zdmMuCgoJKiBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjOgoJUm9sZiBLYWxiZXJtYXR0ZXIgPHJvbGYua2FsYmVybWF0dGVyQGNpdGVuZy5jb20+CglBZGQgc29tZSBjb21tZW50cyB0byBmdW5jdGlvbnMgYW5kIG1pbm9yIGZpeGVzLgoJRXhwb3J0IGFscmVhZHkgZXhpc3RpbmcgKGJ1dCBzdGlsbCB1bmRvY3VtZW50ZWQpIGZ1bmN0aW9ucwoJSUxDcmVhdGVGcm9tUGF0aEEvVy4KCgkqIGRsbHMvd2luaW5ldC9mdHAuYywgZGxscy93aW5pbmV0L2h0dHAuYywgZGxscy93aW5pbmV0L2ludGVybmV0LmMsCgkgIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5oLCBkbGxzL3dpbmluZXQvdXRpbGl0eS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJVXNlIHVuaW9ucyBpbnN0ZWFkIG9mIGRlZmluZXMgaW4gYXN5bmMgd29yayByZXF1ZXN0cy4KCgkqIGRvY3VtZW50YXRpb24vY3ZzLXJlZ3Jlc3Npb24uc2dtbDoKCVJpY2hhcmQgQ29oZW4gPHJpY2hhcmQuY29oZW5AdmlyZ2luLm5ldD4KCS0gIndpbmUtY3ZzZGlycyIgc2hvdWxkIGJlICJmdWxsLWN2cyIuCgktIFJlbW92ZWQgdW5uZWNlc3NhcnkgJ2NkJy4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQXZvaWQgZGl2aWRlIGJ5IHplcm8gaWYgdGhlIHNvdW5kIGRyaXZlciByZXR1cm5zIDAgZm9yIHNwZWVkLgoKCSogZGxscy9kM2Q4L3NoYWRlci5jOiBKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJQWRkIHJlYWwgc3VwcG9ydCBmb3IgVlMxLjEsIGllIG1ha2UgdGhlIHJlbGF0aXZlIGFkZHJlc3NpbmcgbW9kZQoJd29yay4KCgkqIGRsbHMvZDNkOC9kaXJlY3R4LmMsIGRsbHMvZDNkOC9kcmF3cHJpbS5jOgoJSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCVRoZSAndycgY29tcG9uZW50IGlzIHVzZWQgbW9yZSB0aGFuIGp1c3QgZm9yIHRoZSB2ZXJ0ZXgsIHNvIHdlIGNhbm5vdAoJZG8gdGhlIHByb2plY3Rpb24gbWFwcGluZyBvdXJzZWx2ZXMuIEFsc28gdGlkeSB1cCBhIHRyYWNlcG9pbnQsIGFuZAoJcHJlaW5pdGlhbGl6ZSB0aGUgc2hhZGVycyBvdXRwdXQgYXMgd2luZG93cyBzZWVtcyB0by4KCgkqIHByb2dyYW1zL3VuaW5zdGFsbGVyL21haW4uYzogUGF2ZWwgUm9za2luIDxwcm9za2lAZ251Lm9yZz4KCUNhbGwgSGVhcEFsbG9jKCkgb24gZW50cmllcyBiZWZvcmUgSGVhcFJlQWxsb2MoKSB0byBhdm9pZCBjcmFzaCBvbgoJV2luZG93cyAyMDAwLgoKCSogcHJvZ3JhbXMvY29udHJvbC9jb250cm9sLmM6IFBhdmVsIFJvc2tpbiA8cHJvc2tpQGdudS5vcmc+CglGaXggcHJvY2Vzc2luZyBvZiB0aGUgY29tbWFuZCBsaW5lLgoKMjAwMy0wOS0yNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIE1ha2UucnVsZXMuaW4sIGRsbHMvTWFrZWRsbC5ydWxlcy5pbiwgZGxscy9NYWtldGVzdC5ydWxlcy5pbiwKCSAgZGxscy9nZGkvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL01ha2VmaWxlLmluLAoJICBkbGxzL250ZGxsL01ha2VmaWxlLmluLCBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvdXNlci9NYWtlZmlsZS5pbiwgaW5jbHVkZS9NYWtlZmlsZS5pbiwgbGlicy9NYWtlbGliLnJ1bGVzLmluLAoJICBsaWJzL3BvcnQvTWFrZWZpbGUuaW4sIGxpYnMvdXVpZC9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvTWFrZXByb2cucnVsZXMuaW4sIHByb2dyYW1zL2F2aXRvb2xzL01ha2VmaWxlLmluOgoJTW92ZWQgRExMRkxBR1MgdG8gYSBzZXBhcmF0ZSB2YXJpYWJsZSBpbnN0ZWFkIG9mIGluY2x1ZGluZyBpdCBpbgoJREVGUy4KCgkqIGRsbHMvbXN2Y3J0L2Vudmlyb24uYzoKCVJld3JvdGUgZ2V0ZW52IGFuZCBfd2dldGVudiB0byBhdm9pZCByZXR1cm5pbmcgYSBwb2ludGVyIHRvIGEgZnJlZWQKCW1lbW9yeSBibG9jay4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBpbmNsdWRlL3dpbmUvcG9ydC5oLAoJICBsaWJzL3BvcnQvc3Bhd24uYzoKCVBhdmVsIFJvc2tpbiA8cHJvc2tpQGdudS5vcmc+CglBZGRlZCBjb25maWd1cmUgY2hlY2sgZm9yIHNwYXdudnAoKS4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL2xvY2FsZS5jOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJTW9yZSBsb2NhbGUgdGVzdHMuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBkbGxzL2tlcm5lbC9sb2NhbGUuYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglBZGQgTGFuZ3VhZ2VHcm91cC9HZW9JRCBlbnVtZXJhdGlvbiBmbnMuCglBZGQgc29tZSByZWcgZW50cmllcyBmcm9tIFhQLgoJU2V0TG9jYWxlSW5mbygpOiBTZXQgMiBJLXZhbHVlcyBmcm9tIFMtdmFsdWVzLgoJT3B0aW1pc2UgY29kZSBzaXplLCBmaXggYSBmZXcgYnVncywgZG9jdW1lbnRhdGlvbi4KCgkqIGRsbHMvbXN2Y3J0L3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMvbXN2Y3J0L3Rlc3RzL01ha2VmaWxlLmluLAoJICBkbGxzL21zdmNydC90ZXN0cy9jcHAuYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglBZGRlZCB0ZXN0cyBmb3IgY3BwIG9iamVjdHMvUlRUSS4KCgkqIGRsbHMva2VybmVsL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC9wcm9jZXNzLmMsCgkgIGRsbHMva2VybmVsL3ZlcnNpb24uYywgZGxscy9udGRsbC9NYWtlZmlsZS5pbiwgZGxscy9udGRsbC9ydGwuYywKCSAgZGxscy9udGRsbC92ZXJzaW9uLmMsIGZpbGVzL2RyaXZlLmMsIGluY2x1ZGUvd2luYmFzZS5oLAoJICBpbmNsdWRlL3dpbmRlZi5oLCBpbmNsdWRlL3dpbmUvd2luYmFzZTE2LmgsIGluY2x1ZGUvd2lubnQuaCwKCSAgaW5jbHVkZS93aW50ZXJubC5oLCBtaXNjL3ZlcnNpb24uYzoKCU1vdmVkIHRoZSBXaW5kb3dzIHZlcnNpb24gY29kZSB0byBkbGxzL250ZGxsLCBhbmQgaW1wbGVtZW50ZWQKCVJ0bEdldFZlcnNpb24gYW5kIFJ0bFZlcmlmeVZlcnNpb25JbmZvLgoJTW92ZWQgdGhlIDE2LWJpdCBhbmQgRE9TIHZlcnNpb24gc3VwcG9ydCB0byBkbGxzL2tlcm5lbC4KCgkqIGRsbHMvbnRkbGwvZXJyb3IuYywgZGxscy9zaGx3YXBpL2NsaXN0LmMsIGRsbHMvc2hsd2FwaS9pc3RyZWFtLmMsCgkgIGRsbHMvc2hsd2FwaS93c3ByaW50Zi5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCURvY3VtZW50YXRpb24gdXBkYXRlcy4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlYXV0LmMsIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzIuc3BlYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglEb2N1bWVudCBCU1RSIGZ1bmN0aW9ucywgYWRkIFNldE9BTm9DYWNoZSgpLgoKCSogdG9vbHMvd2luZWJ1aWxkL3JlczE2LmM6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglNU1ZDIHdhcm5pbmcgZml4LgoKCSogbGlicy9wb3J0L21rc3RlbXBzLmM6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglQb3J0YWJpbGl0eSBmaXguCgoJKiBkb2N1bWVudGF0aW9uL2NvbmZpZ3VyaW5nLnNnbWwsIGRvY3VtZW50YXRpb24vZG9jdW1lbnRhdGlvbi5zZ21sLAoJICBkb2N1bWVudGF0aW9uL3dpbmUtZmFxLnNnbWwsIGRvY3VtZW50YXRpb24vd2luZS11c2VyLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vd2luZWxpYi11c2VyLnNnbWw6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJU21hbGwgY2xlYW51cHMsIHJlbW92ZSByZWZlcmVuY2VzIHRvIGF1dGhvcnMuZW50LgoKMjAwMy0wOS0yMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL3B0aHJlYWQuYywgaW5jbHVkZS93aW5lL3B0aHJlYWQuaCwgc2NoZWR1bGVyL3B0aHJlYWQuYzoKCUp1cmFqIEhlcmNlayA8anVyYWpAc3luY2FkLmNvbT4KCUVyaWMgRnJpYXMgPGVmcmlhc0BzeW5jYWQuY29tPgoJSW1wbGVtZW50ZWQgcHRocmVhZCBjb25kaXRpb25zLgoKCSogaW5jbHVkZS93aW51c2VyLmg6IEp1cmFqIEhlcmNlayA8anVyYWpAc3luY2FkLmNvbT4KCUFkZGVkIFNTX0VOREVMTElQU0lTLgoKCSogZG9jdW1lbnRhdGlvbi9hdXRob3JzLmVudCwgZG9jdW1lbnRhdGlvbi9jb25maWd1cmluZy5zZ21sLAoJICBkb2N1bWVudGF0aW9uL2ZvbnRzLnNnbWwsIGRvY3VtZW50YXRpb24vaW50cm9kdWN0aW9uLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vcHJpbnRpbmcuc2dtbCwgZG9jdW1lbnRhdGlvbi9ydW5uaW5nLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vd2luZS1kb2Muc2dtbCwgZG9jdW1lbnRhdGlvbi93aW5lLXVzZXIuc2dtbDoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglNb3ZlIGF1dGhvcnMgdG8gdGhlIHdpbmUtdXNlci5zZ21sLgoJUmVtb3ZlIHVudXNlZCBmaWxlcy4KCgkqIGxpYnMvcG9ydC9wcmVhZC5jLCBsaWJzL3BvcnQvcHdyaXRlLmMsIGxpYnMvd3BwL3ByZXByb2MuYywKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvY3Vyc2VzLmMsIHByb2dyYW1zL3dpbmVkYmcvZXh0X2RlYnVnZ2VyLmMsCgkgIHByb2dyYW1zL3dpbmVkYmcvZ2RicHJveHkuYywgcHJvZ3JhbXMvd2luZWRiZy9tc2MuYywKCSAgcHJvZ3JhbXMvd2luZWRiZy9zb3VyY2UuYywgcHJvZ3JhbXMvd2luZWRiZy9zdGFicy5jLAoJICBwcm9ncmFtcy93aW5lZGJnL3R5cGVzLmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJTm90IGV2ZXJ5b25lIGhhcyA8dW5pc3RkLmg+LCBzb21lIGZpbGVzIG5lZWQgPGlvLmg+IHRvbyAobXN2YykuCgoJKiB0b29scy93aW5hcGkvbXN2Y21ha2VyOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJQWRkZWQgc29tZSBuZWVkZWQgY29uZmlnLmggZW50cmllcy4KCgkqIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjLCBkbGxzL21zdmNydC93Y3MuYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglBIGZpcnN0IHN0YWIgYXQgd2NzdG9kKCkuCgoJKiBpbmNsdWRlL3NobHdhcGkuaDogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUFkZGVkIFN0ckZvcm1hdEtCU2l6ZUEvVy4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaDogRmVsaXggTmF3b3RobmlnIDxmbGV4b0BhcmFyYS5kZT4KCUFkZGVkIGRlZmluaXRpb25zIGZvciBMaXN0Vmlld19HZXRDb2x1bW5XaWR0aCwgTGlzdFZpZXdfU2V0Q29sdW1uV2lkdGgKCWFuZCBMaXN0Vmlld19SZWRyYXdJdGVtcy4KCgkqIHdpbmRvd3MvbWRpLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCUZpeCBNRElTZXRNZW51IGluIHRoZSBjYXNlIGl0IGlzIGNhbGxlZCBiZWZvcmUgYSBXaW5kb3dzIE1lbnUgZXhpc3RzCglhcyBBZ2VudCBuZXdzcmVhZGVyIGRvZXMuCgoJKiBkbGxzL3dpbmluZXQvZnRwLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBtb3JlIHVuaWNvZGUvbWVtb3J5IGFsbG9jYXRpb24gZXJyb3JzLgoKMjAwMy0wOS0yMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvY29tY3RsMzIvYW5pbWF0ZS5jLCBkbGxzL2NvbWN0bDMyL2NvbWJvZXguYywKCSAgZGxscy9jb21jdGwzMi9jb21jdGwzMi5oLCBkbGxzL2NvbWN0bDMyL2RhdGV0aW1lLmMsCgkgIGRsbHMvY29tY3RsMzIvaGVhZGVyLmMsIGRsbHMvY29tY3RsMzIvaG90a2V5LmMsCgkgIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmMsIGRsbHMvY29tY3RsMzIvaXBhZGRyZXNzLmMsCgkgIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYywgZGxscy9jb21jdGwzMi9tb250aGNhbC5jLAoJICBkbGxzL2NvbWN0bDMyL25hdGl2ZWZvbnQuYywgZGxscy9jb21jdGwzMi9wYWdlci5jLAoJICBkbGxzL2NvbWN0bDMyL3Byb2dyZXNzLmMsIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmMsCgkgIGRsbHMvY29tY3RsMzIvcmViYXIuYywgZGxscy9jb21jdGwzMi9zdGF0dXMuYywgZGxscy9jb21jdGwzMi90YWIuYywKCSAgZGxscy9jb21jdGwzMi90b29sYmFyLmMsIGRsbHMvY29tY3RsMzIvdG9vbHRpcHMuYywKCSAgZGxscy9jb21jdGwzMi90cmFja2Jhci5jLCBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmMsCgkgIGRsbHMvY29tY3RsMzIvdXBkb3duLmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJUmVuYW1lIENPTUNUTDMyX3tBbGxvYyxSZUFsbG9jLEZyZWV9IHRvIHtBbGxvYyxSZUFsbG9jLEZyZWV9LgoKCSogZG9jdW1lbnRhdGlvbi9NYWtlZmlsZS5pbiwgZG9jdW1lbnRhdGlvbi9idWlsZC5zZ21sLAoJICBkb2N1bWVudGF0aW9uL2N2cy5zZ21sLCBkb2N1bWVudGF0aW9uL3Rvb2xzLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vd2luZS1kZXZlbC5zZ21sOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVJlbW92ZSByZWR1bmRhbnQgc2VjdGlvbnMgZnJvbSB0aGUgZ3VpZGU6CgkgIHRvb2xzOiBpcyBub3cgaW5jbHVkZWQgaW4gdGhlIG5ldyBiaW4ycmVzCgkgIGJ1aWxkOiBtb3ZlZCB0byBQQUNLQUdJTkcKCSAgY3ZzOiBpcyBhdmFpbGFibGUgaW4gbWFueSBvdGhlciBwbGFjZXMuCgoJKiBtc2Rvcy9pbnQyMS5jOiBTbWFsbCBjbGVhbnVwLgoKCSogZGxscy9hdmlmaWwzMi9hdmlmaWxlX0ZyLnJjLCBkbGxzL2F2aWZpbDMyL3JzcmMucmMsCgkgIGRsbHMvY29tY3RsMzIvY29tY3RsX0ZyLnJjLCBkbGxzL2NvbWN0bDMyL3JzcmMucmMsCgkgIGRsbHMvY29tbWRsZy9jZGxnX0ZyLnJjLCBkbGxzL21zdmlkZW8vbXNybGUzMi9tc3JsZV9Gci5yYywKCSAgZGxscy9zZXJpYWx1aS9Gci5yYywgZGxscy9zZXJpYWx1aS9zZXJpYWx1aV9yYy5yYywKCSAgZGxscy9zZXR1cGFwaS9Gci5yYywgZGxscy9zZXR1cGFwaS9zZXR1cGFwaS5yYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfRnIucmMsIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX0ZyLnJjLAoJICBkbGxzL3dpbmVwcy93cHNfRnIucmMsIGRsbHMvd2luaW5ldC9yc3JjLnJjLAoJICBkbGxzL3dpbmluZXQvd2luaW5ldF9Gci5yYywgZGxscy93aW5tbS93aW5tbV9Gci5yYzoKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCVlldCBhbm90aGVyIGJhdGNoIG9mIEZyZW5jaCByZXNvdXJjZXMgdXBkYXRlcy4KCgkqIGRsbHMvd2luaW5ldC9uZXRjb25uZWN0aW9uLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBsb2dpYyBwcm9ibGVtcyB3aXRoIE5FVENPTl9jb25uZWN0ZWQuCgoJKiBkb2N1bWVudGF0aW9uL211bHRpbWVkaWEuc2dtbDogRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglEb2N1bWVudGF0aW9uIHVwZGF0ZXMuCgoJKiBkb2N1bWVudGF0aW9uL2RlYnVnZ2luZy5zZ21sOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQmlnIHVwZGF0ZSB0byB0aGUgZGVidWcgbG9nZ2luZyBzZWN0aW9uLgoKCSogZG9jdW1lbnRhdGlvbi93aW5lLWRldmVsLnNnbWw6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglNb3ZlIHRoZSBhdXRob3JzIG91dCBvZiB0aGUgc2VjdGlvbnMuCgoJKiBwcm9ncmFtcy93aW5lY2ZnL0VuLnJjLCBwcm9ncmFtcy93aW5lY2ZnL3Jlc291cmNlLmgsCgkgIHByb2dyYW1zL3dpbmVjZmcveDExZHJ2ZGxnLmM6CglNaWtlIEhlYXJuIDxtaWtlQHRoZW9yZXRpYy5jb20+CglSZW1vdmUgTWFuYWdlZCBvcHRpb24uIEFkZCBEWEdyYWIsIERlc2t0b3BEb3VibGVCdWZmZXIsIFVzZVRha2VGb2N1cy4KCgkqIGRsbHMvd2lubW0vd2luZWFsc2EvYXVkaW8uYywgZGxscy93aW5tbS93aW5lYXVkaW9pby9hdWRpby5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCVZvbHVtZSBhbmQgUGFuIGRyaXZlciByZXF1ZXN0cyBuZWVkIHRvIHJldHVybiBzdWNjZXNzIGV2ZW4gdGhvdWdoIHRoZXkKCWFyZSBub3QgaW1wbGVtZW50ZWQuCgoJKiBwcm9ncmFtcy93aW5lZGJnL2hhc2guYzoKCU1pY2hhbCBKYW51c3ogTWlyb3NsYXcgPE0uTWlyb3NsYXdAZWxrYS5wdy5lZHUucGw+CglERUJVR19jbXBfc3ltOiBtaWNybyBvcHRpbWl6YXRpb24vY2xlYW51cC4KCgkqIHByb2dyYW1zL3N0YXJ0L0ZyLnJjLCBwcm9ncmFtcy9zdGFydC9yc3JjLnJjLCBwcm9ncmFtcy93Y21kL0ZyLnJjLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZV9Gci5yYywgcHJvZ3JhbXMvd2luZWZpbGUvRnIucmMsCgkgIHByb2dyYW1zL3dpbmVtaW5lL0ZyLnJjLCBwcm9ncmFtcy93aW5lbWluZS9yc3JjLnJjLAoJICBwcm9ncmFtcy93aW5oZWxwL0ZyLnJjOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJQW5vdGhlciBiYXRjaCBvZiBGcmVuY2ggcmVzb3VyY2VzIHVwZGF0ZXMuCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmg6IE1heGltZSBCZWxsZW5n6SA8bWF4aW1lLmJlbGxlbmdlQGxhcG9zdGUubmV0PgoJQWRkZWQgTFZLRl8qIGRlZmluZXMuCgoJKiBkbGxzL3NobHdhcGkvcGF0aC5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXhlZCBhIG1lbW9yeSBsZWFrLgoKCSogZGxscy9vbGUzMi9zdG9yYWdlMzIuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQ2hhbmdlIGVycm9uZW91cyBtYWxsb2MgdG8gSGVhcEFsbG9jLgoKCSogZGxscy93aW5pbmV0L2ludGVybmV0LmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBhIGJ1bmNoIG9mIHVuaWNvZGUvbWVtb3J5IGFsbG9jYXRpb24gZXJyb3JzLgoKCSogdG9vbHMvd3JjL2R1bXByZXMuYzogVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJRml4IHN0cm5jcHlXdG9BIHRvIGFjdHVhbGx5IGFjdCBhcyBhZHZlcnRpc2VkIChhbmQgbm90IG92ZXJmbG93IHRoZQoJaW5wdXQgYnVmZmVyKS4KCVNtYWxsIGNsZWFudXBzIG9mIGl0IGF0IHRoZSBzYW1lIHRpbWUuCgoJKiBkbGxzL2FkdmFwaTMyL2NyeXB0LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUHJpbnQgZml4bWVzIGlmIHdlIGRvIG5vdCBmaW5kIGEgY3J5cHRvIHByb3ZpZGVycyBmb3IgYSBzcGVjaWZpZWQKCXR5cGUvbmFtZSBhbmQgb3RoZXIgZmFpbHVyZXMuCgoJKiBkbGxzL2RtbG9hZGVyL2RtbG9hZGVyX3ByaXZhdGUuaCwgZGxscy9kbWxvYWRlci9sb2FkZXIuYywKCSAgZGxscy9kbWxvYWRlci9sb2FkZXJzdHJlYW0uYzoKCVJvayBNYW5kZWxqYyA8cm9rLm1hbmRlbGpjQGdpbWIub3JnPgoJUmV3cml0dGVuIGNhY2hlIGNvZGUgYW5kIGZpeGVkIGEgYnVnIHRoYXQgd2FzIGluIGl0LgoKCSogZG9jdW1lbnRhdGlvbi9jdnMtcmVncmVzc2lvbi5zZ21sOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCU1vdmUgR2VyYXJkJ3MgbmFtZSB0byB0aGUgYXV0aG9yIGxpc3QuCgoJKiBkb2N1bWVudGF0aW9uL2NvbnNvbGVzLnNnbWw6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglDbGVhbnVwIGZvcm1hdHRpbmcgYSBiaXQuCgoJKiBkb2N1bWVudGF0aW9uL3BvcnRpbmcuc2dtbDogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUNsZWFudXAgdGhlIGludHJvZHVjdGlvbiBhIGJpdC4KCgkqIGRvY3VtZW50YXRpb24vaW1wbGVtZW50YXRpb24uc2dtbDoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglSZW1vdmUgYSBsb3Qgb2Ygb2Jzb2xldGUgaW5mb3JtYXRpb24sIG1pc2MgY2xlYW51cHMuCgoJKiBkb2N1bWVudGF0aW9uL211bHRpbWVkaWEuc2dtbDogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCU1vdmUgRXJpYydzIG5hbWUgaW4gdGhlIGF1dGhvciBsaXN0LgoKCSogZG9jdW1lbnRhdGlvbi9vcGVuZ2wuc2dtbDogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVNtYWxsIGNsZWFudXBzIG9mIHRoZSBPcGVuR0wgc2VjdGlvbi4KCgkqIGRvY3VtZW50YXRpb24vb2xlLnNnbWw6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglUcml2aWFsIGNsZWFudXBzIHRvIHRoZSBPTEUgc2VjdGlvbi4KCgkqIGRvY3VtZW50YXRpb24vYXJjaGl0ZWN0dXJlLnNnbWw6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglSZW1vdmUgb2Jzb2xldGUgaW5mbyBhYm91dCB0aGUgc2VydmljZSB0aHJlYWQuCglVcGRhdGUgeDExIHdyYXBwaW5nIGRlc2NyaXB0aW9uLCBtaXNjIGNsZWFudXBzLgoKCSogZG9jdW1lbnRhdGlvbi9pMThuLnNnbWw6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglSZXdyaXRlIHRoZSBpMThuIHNlY3Rpb24uCgoJKiBkb2N1bWVudGF0aW9uL3Rlc3Rpbmcuc2dtbDogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVJlbW92ZSB1Z2xpZnlpbmcgbm90ZXMuCgoJKiBkb2N1bWVudGF0aW9uL3BhdGNoZXMuc2dtbDogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVNtYWxsIGNsZWFudXBzIG9uIGhvdyB0byBzZW5kIGluIHBhdGNoZXMuCgoJKiBkb2N1bWVudGF0aW9uL2RvY3VtZW50YXRpb24uc2dtbDogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUNsZWFudXAgdGhlIGRvY3VtZW50YXRpb24gc2VjdGlvbi4KCUNvbW1lbnQgb3V0IHNvbWUgZW1wdHkgc2VjdGlvbnMuCgoJKiBkb2N1bWVudGF0aW9uL2RlYnVnZ2VyLnNnbWw6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglDbGVhbnVwIHRoZSBkZWJ1Z2dpbmcgc2VjdGlvbi4KCgkqIGRsbHMvd2luZWRvcy9pbnQyZi5jOiBNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmRlPgoJU2lsZW5jZSB0aGUgRklYTUUgcHJvZHVjZWQgYnkgYW4gaW5zdGFsbCBjaGVjayBvZiBNVlNPVU5ELlNZUy4KCgkqIGRsbHMvd2luZWRvcy9pbnQyMS5jOiBNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmRlPgoJU2lsZW5jZSB0aGUgRklYTUUncyBwcm9kdWNlZCBieSBhIGNoZWNrIGZvciBhIGRvczMyIGV4dGVuZGVyLgoKCSogZGxscy93aW5lZG9zL2ludDMxLmM6IEp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCVdoZW4gZW50ZXJpbmcgcHJvdGVjdGVkIG1vZGUsIFY4NiBmbGFnIG11c3QgYmUgY2xlYXIuCgoJKiBwcm9ncmFtcy93aW5lY29uc29sZS9jdXJzZXMuYzogRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CgktIHdpbjMyIGNvbnNvbGUncyB3aW5kb3cgY2Fubm90IGJlIGxhcmdlciB0aGFuIGN1cnNlcycgc3Rkc2NyCgktIGNvcnJlY3RseSBtYW5hZ2UgYmFja3NwYWNlCgktIHZhcmlvdXMgY2xlYW51cAoKCSogZGxscy91c2VyL21lc3NhZ2UuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWx3YXlzIGluaXRpYWxpemUgc2VuZF9tZXNzYWdlX2luZm8uZmxhZ3MuCgoJKiBkbGxzL3gxMWRydi9rZXlib2FyZC5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglPbmx5IGlnbm9yZSBjZXJ0YWluIGtleWJvYXJkIGV2ZW50cyBpZiBhIFhMb29rdXBTdHJpbmcgcmV0dXJuZWQgYQoJdmFsdWUgKGRldGVjdGVkIGJ5IFZhbGdyaW5kKS4KCgkqIGRsbHMvc2hlbGwzMi9mb2xkZXJzLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBlcnJvcnMgaW4gSUV4dHJhY3RJY29uIGRldGVjdGVkIGJ5IHZhbGdyaW5kLgoKCSogZG9jdW1lbnRhdGlvbi9mYXEuc2dtbDogTWlrZSBIZWFybiA8bWlrZUB0aGVvcmV0aWMuY29tPgoJUmVtb3ZpbmcgdGhlIGRpcmVjdG9yeSBpcyBhbG1vc3QgYWx3YXlzIHRoZSB3cm9uZyB3YXkgdG8gcmVtb3ZlIHdpbmUuCgoJKiB0b29scy93aW5lY2hlY2s6IE1pY2hhZWwgR/xubmV3aWcgPE1pY2hhZWxHdWVubmV3aWdAZ214LmRlPgoJQWRhcHRlZCB3aW5lY2hlY2sgdG8gdXNlIG5ldyBlbnZpcm9ubWVudCB2YXJpYWJsZSBzeW50YXgKCShleC4gJUhPTUUlKS4KCgkqIGRsbHMvbnRkbGwvcmVsYXkuYzogU3RldmVuIEVkd2FyZHMgPHN0ZXZlbl9lZDQxNTNAeWFob28uY29tPgoJUG9ydGluZyBmaXguCgoJKiB0b29scy93aW5lYnVpbGQvdXRpbHMuYzogU3RldmVuIEVkd2FyZHMgPHN0ZXZlbl9lZDQxNTNAeWFob28uY29tPgoJUG9ydGluZyBmaXggZm9yIEFscGhhLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJTWF4aW1lIEJlbGxlbmfpIDxtYXhpbWUuYmVsbGVuZ2VAbGFwb3N0ZS5uZXQ+CglXaGVuIGFuIGl0ZW0gaXMgYWN0aXZhdGVkLCB3ZSBzaG91bGQgc2VuZCBhIE5NSVRFTUFDVElWQVRFIHN0cnVjdCBhbmQKCW5vdCBhIE5NSERSIG9uZS4KCgkqIERFVkVMT1BFUlMtSElOVFM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglVcGRhdGUgdGhlIGRpcmVjdG9yeSBsaXN0LCB0aWR5IGl0IHVwIGluIHRoZSBwcm9jZXNzLgoJQSBmZXcgZml4ZXMgZm9yIG9ic29sZXRlIGZpbGVuYW1lcyBpbiB0aGUgZGVidWdnaW5nIGhpbnRzLgoKCSogcHJvZ3JhbXMvd2luZWNmZy9Fbi5yYywgcHJvZ3JhbXMvd2luZWNmZy9yZXNvdXJjZS5oLAoJICBwcm9ncmFtcy93aW5lY2ZnL3dpbmVjZmcuYywgcHJvZ3JhbXMvd2luZWNmZy94MTFkcnZkbGcuYzoKCU1pa2UgSGVhcm4gPG1pa2VAdGhlb3JldGljLmNvbT4KCUFkZCBzY3JlZW4gZGVwdGggb3B0aW9uIGFuZCByZW1vdmUgIkFsbG9jYXRlZCBTeXN0ZW0gQ29sb3JzIiBzZXR0aW5nLgoKCSogZGxscy93aW5tbS93aW5lYWxzYS9hdWRpby5jOiBPbGVnIFByb2tob3JvdiA8eG9sZWdwcm9AcmJjbWFpbC5ydT4KCUltcGxlbWVudGVkIHNvdW5kIGZsdXNoaW5nLgoKCSogZGxscy93aW5tbS9sb2x2bGRydi5jOgoJTWljaGFsIEphbnVzeiBNaXJvc2xhdyA8TS5NaXJvc2xhd0BlbGthLnB3LmVkdS5wbD4KCU1NRFJWX0luc3RhbGw6IEZpeCBjb25mdXNpbmcgaW5kZW50YXRpb24uCgoJKiBwcm9ncmFtcy9yZWdlZGl0L05sLnJjLCBwcm9ncmFtcy9yZWdlZGl0L3JzcmMucmM6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCUFkZGVkIER1dGNoIHRyYW5zbGF0aW9uLgoKCSogZGxscy9zaGVsbDMyL2NoYW5nZW5vdGlmeS5jLCBkbGxzL3NoZWxsMzIvcGlkbC5jLAoJICBkbGxzL3NoZWxsMzIvc2hsdmlldy5jLCBkbGxzL3NoZWxsMzIvdW5kb2NzaGVsbC5oLCBpbmNsdWRlL3NobG9iai5oOgoJUm9sZiBLYWxiZXJtYXR0ZXIgPHJvbGYua2FsYmVybWF0dGVyQGNpdGVuZy5jb20+CglBZGRlZCBkZWNsYXJhdGlvbnMgZm9yIG5ld2x5IGRvY3VtZW50ZWQgU0hDaGFuZ2VOb3RpZnkgQVBJIGFuZCBmaXhlZAoJc29tZSBwcm90b3R5cGVzLgoKCSogaW5jbHVkZS93aW5kZWYuaDogUm9sZiBLYWxiZXJtYXR0ZXIgPHJvbGYua2FsYmVybWF0dGVyQGNpdGVuZy5jb20+CglEb24ndCByZWRlZmluZSBkZWNsc3BlYyB1bmRlciBNU1ZDLgoKCSogZGxscy9vbGVhdXQzMi90bWFyc2hhbC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCV9ucnJvZmZ1bmNzOiBDaGVjayBmb3IgZXJyb3IgYmVmb3JlIGRlcmVmZXJlbmNpbmcgcmV0dXJuZWQgcG9pbnRlci4KCjIwMDMtMDktMTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBERVZFTE9QRVJTLUhJTlRTLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgdG9vbHMvd2luYXBpL21zdmNtYWtlcjoKCUdldCByaWQgb2YgcmVsYXkzMiBkaXJlY3RvcnkuCgoJKiBkbGxzL2tlcm5lbC9uZV9tb2R1bGUuYywgZGxscy9rZXJuZWwvc25vb3AxNi5jLAoJICBkbGxzL250ZGxsL01ha2VmaWxlLmluLCBkbGxzL250ZGxsL250ZGxsX21pc2MuaCwgZGxscy9udGRsbC9yZWxheS5jLAoJICBpbmNsdWRlL3Nub29wLmg6CglNb3ZlZCAzMi1iaXQgcmVsYXkgYW5kIHNub29wIHN1cHBvcnQgdG8gZGxscy9udGRsbC4KCgkqIGRsbHMva2VybmVsL3Byb2Nlc3MuYywgZGxscy9udGRsbC9NYWtlZmlsZS5pbiwgZGxscy9udGRsbC9sb2FkZXIuYywKCSAgZGxscy9udGRsbC9udGRsbF9taXNjLmgsIGluY2x1ZGUvbW9kdWxlLmgsIGluY2x1ZGUvc25vb3AuaCwKCSAgbG9hZGVyL3BlX2ltYWdlLmM6CglNb3ZlZCB0aGUgMzItYml0IGJ1aWx0aW4gbG9hZGVyIGFuZCB0aGUgcmVtYWluaW5nIGJpdHMgb2YgdGhlIFBFCglsb2FkZXIgaW50byBkbGxzL250ZGxsL2xvYWRlci5jLgoKCSogZGxscy9kM2Q4L2RldmljZS5jOiBKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJRFhUbiBmb3JtYXQgaGFzIG9kZCBtaXBtYXAgbGV2ZWxzIGluIHRoYXQgdGhlIHNwYWNlIGFsbG9jYXRlZCBmb3IKCXNtYWxsIGxldmVscyBuZWVkcyBhIGxvdCBvZiBwYWRkaW5nLgoKCSogZGxscy9kM2Q4L2RldmljZS5jLCBkbGxzL2QzZDgvZGlyZWN0eC5jLCBkbGxzL2QzZDgvc3VyZmFjZS5jLAoJICBkbGxzL2QzZDgvdXRpbHMuYzoKCUphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglHTCBkb2Vzbid0IGxpa2UgaW5jb3JyZWN0IGxlbmd0aHMgcGFzc2VkIGludG8gRFhUTiBwcm9jZXNzaW5nLgoKCSogdG9vbHMvd2luZWdjYy93aW5lZ2NjLmMsIHRvb2xzL3dpbmVnY2Mvd2luZXdyYXAuYzoKCVJpY2hhcmQgQ29oZW4gPHJpY2hhcmQuY29oZW5AdmlyZ2luLm5ldD4KCUhhbmRsZSBkZWZhdWx0IGxpbmtlciBvdXRwdXQgbmFtZSBpbiB3aW5ld3JhcCBpbnN0ZWFkIG9mIHdpbmVnY2MuCgoJKiB0b29scy93aW5lYnVpbGQvYnVpbGQuaCwgdG9vbHMvd2luZWJ1aWxkL3JlczE2LmMsCgkgIHRvb2xzL3dpbmVidWlsZC9yZXMzMi5jOgoJUmljaGFyZCBDb2hlbiA8cmljaGFyZC5jb2hlbkB2aXJnaW4ubmV0PgoJQWRkIHByaW50ZiBmb3JtYXQgYXR0cmlidXRlcyAmIGZpeCB0aGUgd2FybmluZ3MuCgoJKiBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jLCBkbGxzL2Rzb3VuZC9taXhlci5jLAoJICBkbGxzL2Rzb3VuZC9wcmltYXJ5LmMsIGRsbHMvZHNvdW5kL3Byb3BzZXQuYywKCSAgZGxscy9kc291bmQvdGVzdHMvZHNvdW5kLmMsIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUFkZGVkIHZvbHVtZSBhbmQgcGFuIHN1cHBvcnQgdG8gcHJpbWFyeSBidWZmZXJzLgoJQWRkZWQgbW9yZSBwcm9wZXJ0eSBzZXQgc3VwcG9ydC4KCgkqIGRvY3VtZW50YXRpb24vLmN2c2lnbm9yZSwgZG9jdW1lbnRhdGlvbi9NYWtlZmlsZS5pbjoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglCdWlsZCB0aGUgSFRNTCBkb2N1bWVudHMgYXMgb25lIGJpZyBmaWxlLgoKCSogZGxscy9kM2Q4L2RyYXdwcmltLmMsIGRsbHMvZDNkOC92c2hhZGVyZGVjbGFyYXRpb24uYzoKCUphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglWZXJ0ZXggc2hhZGVyIG91dHB1dCBpcyBsaXQgYW5kIHRyYW5zZm9ybWVkLCBzbyBzdG9wIEdMIGRvaW5nIGl0IGFsbAoJYWdhaW4uCgoJKiBkbGxzL2QzZDgvZGlyZWN0eC5jOiBKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJU2ltcGxlIGZpeCB0byBoYW5kbGUgdGhlIG1vcmUgY29tbW9uIGNhc2Ugb2YgYWN0dWFsbHkgaGF2aW5nIGEgR0wKCWNvbnRleHQhCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBkbGxzL2tlcm5lbC9wcm9jZXNzLmMsCgkgIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sIGRsbHMvbnRkbGwvbnQuYywgZGxscy9udGRsbC9wcm9jZXNzLmMsCgkgIGluY2x1ZGUvd2lubnQuaDoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJSW1wbGVtZW50ZWQga2VybmVsMzIuR2V0SW9Qcm9jZXNzQ291bnRlcnMgYW5kIHN0dWJiZWQKCW50ZGxsLk50UXVlcnlQcm9jZXNzSW5mb3JtYXRpb24oUHJvY2Vzc0lvQ291bnRlcnMpLgoKCSogZGxscy9rZXJuZWwvY29uc29sZS5jOiBFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCUJ5IGRlZmF1bHQsIGNvbnNvbGUgaGFuZGxlcyBhcmUgaW5oZXJpdGFibGUuCgoyMDAzLTA5LTE4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9rZXJuZWwvcHJvY2Vzcy5jLCBkbGxzL2tlcm5lbC90aHJlYWQuYywgZGxscy9udGRsbC9NYWtlZmlsZS5pbiwKCSAgZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL250ZGxsL3NlcnZlci5jLCBpbmNsdWRlL3dpbmUvc2VydmVyLmgsCgkgIG1pc2MvcmVnaXN0cnkuYywgc2NoZWR1bGVyL2NsaWVudC5jOgoJTW92ZWQgdGhlIHdpbmUgc2VydmVyIGNsaWVudC1zaWRlIHN1cHBvcnQgdG8gZGxscy9udGRsbC4gUmVtb3ZlZCBhCgljb3VwbGUgb2YgdW5uZWNlc3NhcnkgZnVuY3Rpb25zLgoKCSogZGxscy9rZXJuZWwvbmVfbW9kdWxlLmMsIGxvYWRlci90YXNrLmM6CglNb3ZlZCBhIGNvdXBsZSBtb3JlIGZ1bmN0aW9ucyB0byBkbGxzL2tlcm5lbC4KCgkqIGRsbHMva2VybmVsL3NlbGVjdG9yLmMsIGRsbHMva2VybmVsL01ha2VmaWxlLmluLAoJICBkbGxzL2tlcm5lbC9kb3NtZW0uYywgZGxscy9rZXJuZWwvZ2xvYmFsMTYuYywgZGxscy9rZXJuZWwvaGVhcC5jLAoJICBkbGxzL250ZGxsL01ha2VmaWxlLmluLCBtZW1vcnkvZ2xvYmFsLmMsIG1lbW9yeS9zZWxlY3Rvci5jLAoJICBtc2Rvcy9kb3NtZW0uYzoKCU1vdmVkIDE2LWJpdCBnbG9iYWwgaGVhcCwgRE9TIG1lbW9yeSBhbmQgc2VsZWN0b3IgZnVuY3Rpb25zIHRvCglkbGxzL2tlcm5lbC4KCgkqIGRsbHMva2VybmVsL3Byb2Nlc3MuYzogRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglTZXQgZGVmYXVsdCBTdGRFcnJvciB0byBmZCAyICh3YXMgb24gMSkuCgoJKiB0b29scy9iaW4ycmVzLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglDb21wbGV0ZSByZXdyaXRlIG9mIGJpbjJyZXMsIGZvciBhIGNsZWFuZXIgY29kZWJhc2UuCglBZGQgb25saW5lIGhlbHAgZGVzY3JpYmluZyBob3cgdGhlIHByb2dyYW0gd29ya3MuCglTYW5pdGl6ZSBjb21tYW5kIGxpbmUgb3B0aW9ucy4KCgkqIHNjaGVkdWxlci9wdGhyZWFkLmM6CglHYWJyaWVsZSBHaW9yZ2V0dGkgPGdhYnJpZWxlLmdpb3JnZXR0aUB0ZWFtZmFiLml0PgoJRml4IGJ1aWxkIHdpdGggb2xkIGxpYmMuCgoJKiBkb2N1bWVudGF0aW9uLy5jdnNpZ25vcmUsIGRvY3VtZW50YXRpb24vTWFrZWZpbGUuaW46CglSZW1vdmUgdGhlIEZBUSBmcm9tIHRoZSBkb2MgdGFyYmFsbCwgYW5kIGJ1aWxkIGl0IGFzIGEgc2luZ2xlIC5odG1sCglmaWxlIChiYXNlZCBvbiBwYXRjaCBieSBEaW1pdHJpZSBPLiBQYXVuKS4KCgkqIGRsbHMva2VybmVsL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC9rZXJuZWxfcHJpdmF0ZS5oLAoJICBkbGxzL2tlcm5lbC9yZWxheTE2LmMsIGRsbHMva2VybmVsL3N5bmMuYywgZGxscy9rZXJuZWwvc3lzbGV2ZWwuYywKCSAgZGxscy9rZXJuZWwvdGFzay5jLCBkbGxzL2tlcm5lbC93b3d0aHVuay5jLCBkbGxzL250ZGxsL01ha2VmaWxlLmluLAoJICBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmMsIGluY2x1ZGUvc3lzbGV2ZWwuaCwgc2NoZWR1bGVyL3N5bmNocm8uYywKCSAgc2NoZWR1bGVyL3N5c2xldmVsLmM6CglNb3ZlZCBzeW5jaHJvbml6YXRpb24gYW5kIHN5c2xldmVsIHJvdXRpbmVzIHRvIGRsbHMva2VybmVsLgoKCSogZGxscy9rZXJuZWwvbmVfbW9kdWxlLmMsIGZpbGVzL2ZpbGUuYywgaW5jbHVkZS9tb2R1bGUuaCwKCSAgbG9hZGVyL21vZHVsZS5jOgoJS2VlcCB0aGUgZmlsZSBoYW5kbGUgb2YgMTYtYml0IG1vZHVsZXMgb3BlbiB3aGlsZSB0aGUgbW9kdWxlIGlzCglsb2FkZWQuIFRoaXMgbWFrZXMgaXQgcG9zc2libGUgdG8gcmVtb3ZlIHRoZSBJbnN0YWxsU2hpZWxkIGhhY2sgaW4KCU9wZW5GaWxlMTYuCglNb3ZlZCBMb2FkTGlicmFyeTMyXzE2IHRvIGtlcm5lbC4KCgkqIHByb2dyYW1zL3dpbmVjZmcvRW4ucmMsIHByb2dyYW1zL3dpbmVjZmcvcmVzb3VyY2UuaCwKCSAgcHJvZ3JhbXMvd2luZWNmZy93aW5lY2ZnLmMsIHByb2dyYW1zL3dpbmVjZmcveDExZHJ2ZGxnLmM6CglNaWtlIEhlYXJuIDxtaWtlQHRoZW9yZXRpYy5jb20+CgktIEltcGxlbWVudCAibWFuYWdlZCBtb2RlIiBzZXR0aW5nLgoJLSBNYWtlIHN5c3RlbSBjb2xvcnMgc2V0dGluZyB3b3JrLgoJLSBEaXNhYmxlIERHQSBzZXR0aW5nLCBhcyBlbmFibGluZyBpdCBicmVha3Mgd2luZS4KCgkqIHRvb2xzL3dyYy9wYXJzZXIueTogRXJpYyBGcmlhcyA8ZWZyaWFzQHN5bmNhZC5jb20+CglGaXhlZCBjb21ib2JveCBmbGFncyBoYW5kbGluZyB0byBhbGxvdyBDQlNfRFJPUERPV04gc3R5bGUuCgoJKiBkb2N1bWVudGF0aW9uL1BBQ0tBR0lORzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUFkZCBibHVyYiBhYm91dCBzb2Z0L2hhcmQgZGVwZW5kZW5jaWVzIHRvIHRoZSBQYWNrYWdpbmcgR3VpZGUsIGJhc2VkCglvbiBhIGNvbnRyaWJ1dGlvbiBieSBTaGFjaGFyIFNoZW1lc2guCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWxfbWFpbi5jLCBkbGxzL2tlcm5lbC90YXNrLmMsIG1lbW9yeS9lbnZpcm9uLmM6CglNb3ZlZCB0aGUgMTYtYml0IGVudmlyb25tZW50IHN1cHBvcnQgdG8gZGxscy9rZXJuZWwuCgoJKiBkbGxzL2tlcm5lbC9maWxlMTYuYywgZmlsZXMvZG9zX2ZzLmM6CglSZWltcGxlbWVudGVkIHRoZSAxNi1iaXQgRmluZEZpcnN0RmlsZSwgRmluZE5leHRGaWxlIGFuZCBGaW5kQ2xvc2UKCWZ1bmN0aW9ucyBvbiB0b3Agb2YgdGhlaXIgMzItYml0IGNvdW50ZXJwYXJ0LCBhbmQgbW92ZWQgdGhlbSB0bwoJZGxscy9rZXJuZWwuCgoJKiBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwgZGxscy9udGRsbC9NYWtlZmlsZS5pbjoKCUxpbmsgbXNkb3MvaW50MjEuYyBpbnRvIGtlcm5lbCBmb3Igbm93LCB1bnRpbCBpdCBpcyBwcm9wZXJseSBtb3ZlZCB0bwoJd2luZWRvcy4KCgkqIGRsbHMva2VybmVsL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC92eGQuYzoKCU1vdmVkIFZ4RENhbGwgc3VwcG9ydCB0byBkbGxzL2tlcm5lbC4KCjIwMDMtMDktMTcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC9pbnN0ci5jLCBkbGxzL250ZGxsL01ha2VmaWxlLmluLAoJICBkbGxzL3dpbmVkb3MvTWFrZWZpbGUuaW4sIGRsbHMvd2luZWRvcy9kb3NleGUuaCwKCSAgZGxscy93aW5lZG9zL2lvcG9ydHMuYywgZGxscy93aW5lZG9zL3BwZGV2LmMsIGRsbHMvd2luZWRvcy90aW1lci5jLAoJICBkbGxzL3dpbmVkb3Mvd2luZWRvcy5zcGVjLCBpbmNsdWRlL2NhbGxiYWNrLmgsIGluY2x1ZGUvbWlzY2VtdS5oLAoJICBtc2Rvcy9kcG1pLmMsIG1zZG9zL2lvcG9ydHMuYywgbXNkb3MvcHBkZXYuYzoKCU1vdmVkIEkvTyBwb3J0IGhhbmRsaW5nIHRvIGRsbHMvd2luZWRvcy4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzIuaCwgZGxscy9jb21jdGwzMi9jb21jdGwzMi5zcGVjLAoJICBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYzoKCVJlbmFtZWQgdGhlIENPTUNUTDMyXyogZnVuY3Rpb25zIHRvIHVzZSB0aGUgZXhwb3J0ZWQgbmFtZS4KCgkqIHByb2dyYW1zL3dpbmVjZmcvRW4ucmMsIHByb2dyYW1zL3dpbmVjZmcvZHJpdmUuYywKCSAgcHJvZ3JhbXMvd2luZWNmZy9yZXNvdXJjZS5oLCBwcm9ncmFtcy93aW5lY2ZnL3dpbmVjZmcuYywKCSAgcHJvZ3JhbXMvd2luZWNmZy93aW5lY2ZnLmg6CglNaWtlIEhlYXJuIDxtaWtlQHRoZW9yZXRpYy5jb20+CgktIEFsbCBzZXR0aW5ncyBpbiB0aGUgZHJpdmUgZWRpdCBkaWFsb2cgYXJlIG5vdyBpbnN0YW50IGFwcGx5LgoJLSBSZXBsYWNlIE9LL0NhbmNlbCBidXR0b25zIG9uIHRoZSByaWdodCB3aXRoIGEgY2xvc2UgYnV0dG9uIG9uIHRoZQoJICBib3R0b20uCgktIFdhcm4gdGhlIHVzZXIgd2hlbiBhIEMgZHJpdmUgaXMgbm90IHByZXNlbnQuCgktIEFkZCBkcml2ZSBmdW5jdGlvbmFsaXR5IHdpbGwgbm93IGFsd2F5cyBjcmVhdGUgYSBDIGRyaXZlIGlmIG9uZQoJICBpc24ndCBwcmVzZW50LgoJLSBNaXNjIGNyYXNoZXIgZml4ZXMuCgktIERyaXZlIGxpc3QgYm94IG5vdyByZWZsZWN0cyBkcml2ZXMgdGhhdCB0YWtlIHRoZWlyIGRhdGEgZnJvbSBhCgkgIGRldmljZSBjb3JyZWN0bHkuCgktIFZhcmlvdXMgY29kZSBjbGVhbnVwcy4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL2xvY2FsZS5jOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJTW9yZSB0ZXN0cyBmb3Iga2VybmVsIE5MUyBmdW5jdGlvbnMuCglVc2UgTE9DQUxFX05PVVNFUk9WRVJSSURFIHdoZXJlIGFwcHJvcHJpYXRlLgoKCSogZGxscy9rZXJuZWwvbGNmb3JtYXQuYzogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCVJlLWltcGxlbWVudCBhbmQgb3B0aW1pc2UgdGhlIE5MUyBmb3JtYXR0aW5nIGZ1bmN0aW9ucyAobWFueSBmaXhlcykuCglEb2N1bWVudGF0aW9uIHVwZGF0ZXMuCgoJKiBkbGxzL3dpbm1tL3dpbmVhbHNhL2F1ZGlvLmM6IE9sZWcgUHJva2hvcm92IDx4b2xlZ3Byb0ByYmNtYWlsLnJ1PgoJQXZvaWQgY3Jhc2ggaWYgaW52YWxpZCByYXRlIHdhcyBzcGVjaWZpZWQuCgoJKiBkbGxzL3NldHVwYXBpL0VuLnJjLCBkbGxzL3NldHVwYXBpL1J1LnJjLCBkbGxzL3NldHVwYXBpL3NldHVwYXBpLnJjOgoJSWdvciBTdGVwaW4gPGlzQGlzdHVkaW8ucnU+CglBZGRlZCBSdXNzaWFuIHRyYW5zbGF0aW9uLgoKCSogZG9jdW1lbnRhdGlvbi9NYWtlZmlsZS5pbiwgZG9jdW1lbnRhdGlvbi9tYWtlX3dpbmVocSwKCSAgZG9jdW1lbnRhdGlvbi9wcmludC5kc2wsIGRvY3VtZW50YXRpb24vd2luZWhxLmRzbDoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglHZXQgcmlkIG9mIG5vIGxvbmdlciBuZWVkZWQgZmlsZXMuCgoJKiBwcm9ncmFtcy93aW5oZWxwL3dpbmhlbHAuYzogTWlrZSBIZWFybiA8bWlrZUB0aGVvcmV0aWMuY29tPgoJSW1wbGVtZW50ZWQgbW91c2Ugd2hlZWwgc3VwcG9ydC4KCgkqIGRsbHMva2VybmVsL2luc3RyLmMsIGRsbHMva2VybmVsL3dvd3RodW5rLmMsIGRsbHMvd2luZWRvcy9kb3N2bS5jLAoJICBpbmNsdWRlL21pc2NlbXUuaDoKCVVzZSBXT1dDYWxsYmFjazE2RXggdG8gc3dpdGNoIHRvIHZtODYgbW9kZSBzbyB0aGF0IHdlIGNhbiBzZXR1cCBhCglwcm9wZXIgZXhjZXB0aW9uIGhhbmRsZXIgYW5kIGhhbmRsZSBpbnN0cnVjdGlvbiBlbXVsYXRpb24uCgoJKiBkbGxzL2NvbWN0bDMyL2FuaW1hdGUuYywgZGxscy9jb21jdGwzMi9jb21ib2V4LmMsCgkgIGRsbHMvY29tY3RsMzIvY29tY3RsMzIuaCwgZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmMsCgkgIGRsbHMvY29tY3RsMzIvZGF0ZXRpbWUuYywgZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYywKCSAgZGxscy9jb21jdGwzMi9pcGFkZHJlc3MuYywgZGxscy9jb21jdGwzMi9saXN0dmlldy5jLAoJICBkbGxzL2NvbWN0bDMyL25hdGl2ZWZvbnQuYywgZGxscy9jb21jdGwzMi9wYWdlci5jLAoJICBkbGxzL2NvbWN0bDMyL3Byb2dyZXNzLmMsIGRsbHMvY29tY3RsMzIvcmViYXIuYywKCSAgZGxscy9jb21jdGwzMi9zdGF0dXMuYywgZGxscy9jb21jdGwzMi90b29sYmFyLmMsCgkgIGRsbHMvY29tY3RsMzIvdG9vbHRpcHMuYywgZGxscy9jb21jdGwzMi90cmVldmlldy5jLAoJICBkbGxzL2NvbWN0bDMyL3VwZG93bi5jLCBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZGxscy9zaGVsbDMyL3NobHZpZXcuYywKCSAgaW5jbHVkZS9jb21tY3RybC5oOgoJTW92ZWQgdW5kb2N1bWVudGVkIGZ1bmN0aW9ucyBvdXQgb2YgdGhlIGV4cG9ydGVkIGNvbW1jdHJsLmguCgoJKiBkbGxzL3dpbm1tL3dpbmVhbHNhL21pZGkuYzogQXZvaWQgbGlua2luZyBlcnJvciB3aXRoIG9sZGVyIGFsc2EgbGlicy4KCgkqIGRsbHMvYXZpZmlsMzIvYXZpZmlsZV9SdS5yYywgZGxscy9rZXJuZWwvbmxzL3J1cy5ubHMsCgkgIGRsbHMvd2luaW5ldC9yc3JjLnJjLCBkbGxzL3dpbmluZXQvd2luaW5ldF9SdS5yYywKCSAgcHJvZ3JhbXMvY21kbGd0c3QvUnUucmMsIHByb2dyYW1zL2NtZGxndHN0L2NtZGxnci5yYywKCSAgcHJvZ3JhbXMvcmVnZWRpdC9SdS5yYywgcHJvZ3JhbXMvcmVnZWRpdC9yc3JjLnJjLAoJICBwcm9ncmFtcy9zdGFydC9SdS5yYywgcHJvZ3JhbXMvdmlldy9SdS5yYywgcHJvZ3JhbXMvdmlldy92aWV3cmMucmMsCgkgIHByb2dyYW1zL3djbWQvUnUucmMsIHByb2dyYW1zL3djbWQvd2NtZHJjLnJjLCBwcm9ncmFtcy93aW5lY2ZnL1J1LnJjLAoJICBwcm9ncmFtcy93aW5lY2ZnL3dpbmVjZmcucmM6CglJZ29yIFN0ZXBpbiA8aXNAaXN0dWRpby5ydT4KCUFkZGVkIGEgbG90IG9mIFJ1c3NpYW4gdHJhbnNsYXRpb25zLgoKCSogZGxscy9zZXJpYWx1aS9Fbi5yYywgZGxscy9zZXJpYWx1aS9SdS5yYywKCSAgZGxscy9zZXJpYWx1aS9zZXJpYWx1aV9yYy5yYzoKCUlnb3IgU3RlcGluIDxpc0Bpc3R1ZGlvLnJ1PgoJQWRkZWQgUnVzc2lhbiB0cmFuc2xhdGlvbi4KCgkqIGRsbHMva2VybmVsL3N5bmMuYzogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCURvY3VtZW50YXRpb24gdXBkYXRlcy4KCgkqIGRsbHMvYWR2YXBpMzIvYWR2YXBpMzIuc3BlYywgZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQ3JlYXRlZCBzdHViIGZ1bmN0aW9ucyBmb3IgYWR2YXBpMzIuR2V0RXhwbGljaXRFbnRyaWVzRnJvbUFjbEEvVygpLgoKCSogZGxscy9vcGVuZ2wzMi93Z2wuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWRkIG1pc3NpbmcgTEYgaW4gdHJhY2UgbWVzc2FnZS4KCgkqIHByb2dyYW1zL3dpbmVjZmcvRXMucmM6IEpvc+kgTWFudWVsIEZlcnJlciBPcnRpeiA8am1mbzE5ODJAeWFob28uZXM+CglVcGRhdGVkIFNwYW5pc2ggdHJhbnNsYXRpb24uCgoJKiBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwvZXhjZXB0LmMsIGRsbHMva2VybmVsL2ZpYmVyLmMsCgkgIGRsbHMva2VybmVsL3Byb2Nlc3MuYywgZGxscy9rZXJuZWwvdGhyZWFkLmMsIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sCgkgIGxpYnMvd2luZS9sb2FkZXIuYywgbG9hZGVyL21vZHVsZS5jLCBzY2hlZHVsZXIvZmliZXIuYywKCSAgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2NoZWR1bGVyL3RocmVhZC5jOgoJTW92ZWQgYWxtb3N0IGFsbCByZW1haW5pbmcgcHJvY2VzcywgdGhyZWFkLCBmaWJlciBhbmQgZXhjZXB0aW9uCglmdW5jdGlvbnMgdG8gZGxscy9rZXJuZWwuCgoJKiBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwvaW5zdHIuYywgZGxscy9rZXJuZWwvd293dGh1bmsuYywKCSAgZGxscy9udGRsbC9NYWtlZmlsZS5pbiwgZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jLCBtZW1vcnkvaW5zdHIuYzoKCU1vdmVkIGluc3RydWN0aW9uIGVtdWxhdGlvbiB0byBkbGxzL2tlcm5lbC4KCgkqIGNvbnRyb2xzL2NvbWJvLmMsIGRsbHMvY29tY3RsMzIvdHJhY2tiYXIuYywgZGxscy9vbGVhdXQzMi9wYXJzZWR0LmgsCgkgIGluY2x1ZGUvd2luZGVmLmgsIGluY2x1ZGUvd2luZS93aW5kZWYxNi5oLCBpbmNsdWRlL3dpbnVzZXIuaCwKCSAgaW5jbHVkZS93dHlwZXMuaCwgaW5jbHVkZS93dHlwZXMuaWRsOgoJTW92ZWQgb3V0IG9mIHdpbmRlZi5oIGEgZmV3IGRlZmluaXRpb25zIHRoYXQgZG9uJ3QgYmVsb25nIHRoZXJlCgkocmVwb3J0ZWQgYnkgRmlsaXAgTmF2YXJhKS4KCgkqIGNvbnRyb2xzL2VkaXQuYywgY29udHJvbHMvbWVudS5jLCBjb250cm9scy9zY3JvbGwuYywKCSAgZGxscy9jb21jdGwzMi9oZWFkZXIuYywgZGxscy9jb21jdGwzMi9saXN0dmlldy5jLAoJICBkbGxzL2NvbWN0bDMyL21vbnRoY2FsLmMsIGRsbHMvY29tY3RsMzIvcGFnZXIuYywKCSAgZGxscy9jb21jdGwzMi90cmVldmlldy5jLCBkbGxzL2NvbWN0bDMyL3VwZG93bi5jLAoJICBkbGxzL2NvbW1kbGcvY29sb3JkbGcuYywgZGxscy94MTFkcnYvd2lucG9zLmMsCgkgIGdyYXBoaWNzL3gxMWRydi90ZXh0LmMsIHdpbmRvd3MvZGVmd25kLmMsIHdpbmRvd3MvbWRpLmMsCgkgIHdpbmRvd3Mvbm9uY2xpZW50LmM6CglTTE9XT1JEIGFuZCBTSElXT1JEIGRvIG5vdCBleGlzdCBvbiBXaW4zMiAocmVwb3J0ZWQgYnkgRmlsaXAgTmF2YXJhKS4KCgkqIGRvY3VtZW50YXRpb24vc2FtcGxlcy9jb25maWc6IEhhbm51IFZhbHRvbmVuIDxIYW5udS5WYWx0b25lbkBodXQuZmk+CglVc2UgbmF0aXZlIG1zaSB1bnRpbCBvdXIgb3duIGltcGxlbWVudGF0aW9uIHdvcmtzIGRlY2VudGx5LgoKCSogZGxscy9rZXJuZWwvdGVzdHMvZmlsZS5jOgoJUm9sZiBLYWxiZXJtYXR0ZXIgPHJvbGYua2FsYmVybWF0dGVyQGNpdGVuZy5jb20+CglGaXggYW5vdGhlciBlcnJvciB1bmRlciBXaW45eCAoaG9wZWZ1bGx5KS4KCgkqIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwgZGxscy9zaGVsbDMyL3BpZGwuYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLCBkbGxzL3NoZWxsMzIvc2hmbGRyX2ZzLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGxmc2JpbmQuYzoKCVJvbGYgS2FsYmVybWF0dGVyIDxyb2xmLmthbGJlcm1hdHRlckBjaXRlbmcuY29tPgoJSW1wbGVtZW50ZWQgU0hTaW1wbGVJRExpc3RGcm9tUGF0aCBjb3JyZWN0bHkuCgoJKiBkbGxzL250ZGxsL2RlYnVndG9vbHMuYzogU3RldmVuIEVkd2FyZHMgPHN0ZXZlbl9lZDQxNTNAeWFob28uY29tPgoJUmVtb3ZlIHJlZHVuZGFudCBpbmNsdWRlcy4KCjIwMDMtMDktMTYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC9sb2NhbGUuYzogTW9yZSByb2J1c3QgZGV0ZWN0aW9uIG9mIGNoYXJzZXQgbmFtZXMuCgoJKiBkbGxzL2tlcm5lbC9zdHJpbmcuYywgZGxscy9udGRsbC9wYXRoLmMsIGZpbGVzL2Rvc19mcy5jLAoJICBtZW1vcnkvc3RyaW5nLmM6CglNb3ZlZCBtb3N0IGtlcm5lbCBzdHJpbmcgZnVuY3Rpb25zIHRvIGRsbHMva2VybmVsLgoKCSogZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL2hlYXAuYywgZGxscy9udGRsbC9NYWtlZmlsZS5pbiwKCSAgbWVtb3J5L2dsb2JhbC5jLCBtZW1vcnkvaGVhcC5jLCBtZW1vcnkvbG9jYWwuYywgbWVtb3J5L3NlbGVjdG9yLmMsCgkgIHNjaGVkdWxlci9wcm9jZXNzLmM6CglNb3ZlZCBtb3N0IDMyLWJpdCBoZWFwIGZ1bmN0aW9ucyB0byBkbGxzL2tlcm5lbC4KCgkqIHRvb2xzL3dpbmVnY2Mvd2luZXdyYXAuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCURvIG5vdCByZXF1aXJlIEdVSSBzdXBwb3J0IGZvciBkaXNwbGF5aW5nIGVycm9ycyBpbiB3cmFwcGVyLgoJTGluayB0aGUgd3JhcHBlciBvbmx5IGFnYWluc3Qga2VybmVsIChubyBkbCwgbXN2Y3J0LCBldGMpLgoJQWxsb3cgdGhlIHNldHRpbmcgb2YgdGhlIGFwcCBETEwgd2hlbiBhIHdyYXBwZXIgaXMgY3JlYXRlZC4KCgkqIGRsbHMvaW1hZ2VobHAvaW50ZWdyaXR5LmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudGVkIEltYWdlR2V0Q2VydGlmaWNhdGVEYXRhLgoKCSogaW5jbHVkZS93aW5udC5oOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBtYWlsc2xvdCBkZWZpbmVzLgoKCSogZGxscy93aW5tbS93aW5lYWxzYS9taWRpLmM6IFBhdmVsIFJvc2tpbiA8cHJvc2tpQGdudS5vcmc+CglNb3ZlZCBXSU5FX0RFRkFVTFRfREVCVUdfQ0hBTk5FTCBvdXRzaWRlIG9mIHRoZSAjaWZkZWYuCgoJKiBkbGxzL2RkcmF3L2RkcmF3L3VzZXIuYzogQWxleCBQYXNhZHluIDxhanBAbWFpbC51dGV4YXMuZWR1PgoJRW5hYmxlIHJlc29sdXRpb24gY2hhbmdlcyBmb3Igb2xkZXIgRDNEL0REcmF3IGFwcGxpY2F0aW9ucy4KCgkqIGRsbHMvZDNkOC9kaXJlY3R4LmM6IEFsZXggUGFzYWR5biA8YWpwQG1haWwudXRleGFzLmVkdT4KCUVuYWJsZSByZXNvbHV0aW9uIGNoYW5nZXMgZm9yIEQzRDggYXBwbGljYXRpb25zLgoKCSogZGxscy94MTFkcnYvZGVza3RvcC5jLCBkbGxzL3gxMWRydi94MTFkZHJhdy5jLCBkbGxzL3gxMWRydi94MTFkcnYuaCwKCSAgZGxscy94MTFkcnYveHZpZG1vZGUuYzoKCUFsZXggUGFzYWR5biA8YWpwQG1haWwudXRleGFzLmVkdT4KCS0gQWxsb3cgYXBwbGljYXRpb25zIHRvIHJlc2l6ZSB0aGUgV2luZSBkZXNrdG9wIHdpbmRvdy4KCS0gU29tZSBjbGVhbnVwIG9mIENoYW5nZURpc3BsYXlTZXR0aW5ncyBhbmQgZnJpZW5kcy4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL2ZpbGUuYywgZmlsZXMvZG9zX2ZzLmM6CglBbGV4IFBhc2FkeW4gPGFqcEBtYWlsLnV0ZXhhcy5lZHU+CgktIFVzZSBIZWFwQWxsb2MgaW5zdGVhZCBvZiBHbG9iYWxBbGxvYyBpbiBGaW5kTmV4dEZpbGUuCgktIEFkZCB0ZXN0IGZvciBGaW5kTmV4dEZpbGUgdGhhdCBjaGVja3MgbGFzdCBlcnJvciB2YWx1ZS4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL2RpcmVjdG9yeS5jLCBkbGxzL2tlcm5lbC90ZXN0cy9maWxlLmM6CglSb2xmIEthbGJlcm1hdHRlciA8cm9sZi5rYWxiZXJtYXR0ZXJAY2l0ZW5nLmNvbT4KCUFkZGVkIGEgZmV3IHRvZG9fd2luZSB0ZXN0cyB3aXRoIGZpbGVuYW1lcyB3aXRoIHdpbGRjYXJkcy4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL3Byb2Nlc3MuYywgZGxscy9rZXJuZWwvdGVzdHMvdGhyZWFkLmM6CglSb2xmIEthbGJlcm1hdHRlciA8cm9sZi5rYWxiZXJtYXR0ZXJAY2l0ZW5nLmNvbT4KCVJlbW92ZSA8bnRzdGF0dXMuaD4gdG8gYWxsb3cgY29tcGlsYXRpb24gd2l0aCBNUyBQU0RLIGhlYWRlcnMuCgoJKiBkbGxzL2NvbWN0bDMyL3JlYmFyLmMsIGRsbHMvY29tY3RsMzIvdG9vbHRpcHMuYywgaW5jbHVkZS9jb21tY3RybC5oOgoJRmlsaXAgTmF2YXJhIDx4bmF2YXJhQHZvbG55LmN6PgoJRml4ZWQgZGVmaW5pdGlvbnMgb2YgVFRUT09MSU5GT0EvV19WMV9TSVpFIGFuZAoJUkVCQVJCQU5ESU5GT0EvV19WM19TSVpFLgoKCSogcHJvZ3JhbXMvd2luZWNmZy9tYWluLmMsIHByb2dyYW1zL3dpbmVjZmcvcHJvcGVydGllcy5jOgoJTWlrZSBIZWFybiA8bWlrZUB0aGVvcmV0aWMuY29tPgoJTm9ybWFsaXplIHdpbjIwMDAsIG50MmssIG50MjAwMCB0byB3aW4yaywgbm9ybWFsaXplIHdpbjJrMyB0byB3aW4yMDAzCgkoc3BvdHRlZCBieSBWaW5jZW50IELpcm9uKS4KCgkqIGRsbHMvbnRkbGwvbnQuYywgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLCBpbmNsdWRlL3dpbnRlcm5sLmgsCgkgIHNlcnZlci9oYW5kbGUuYywgc2VydmVyL2hhbmRsZS5oLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcHJvY2Vzcy5oLAoJICBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvc25hcHNob3QuYywgc2VydmVyL3RyYWNlLmM6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCS0gSW1wbGVtZW50ZWQgYSBmZXcgaW5mb3JtYXRpb24gY2xhc3NlcyBpbiBOdFF1ZXJ5U3lzdGVtSW5mb3JtYXRpb24uCgktIEFkZGVkIGhhbmRsZSBpbmZvcm1hdGlvbiB0byAod2luZXNlcnZlcikgcHJvY2VzcyBzbmFwc2hvdC4KCgkqIGRvY3VtZW50YXRpb24vTWFrZWZpbGUuaW46IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglSZW1vdmUgdGhlIHVudXNlZCBXSU5FX0RPQ19TUkNTLCBhbmQgdGhlIHVzZWxlc3MgQk9PS1NfVEFSR0VUUy4KCgkqIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jOiA8ZGV2ZWxvcEBzdHVlYmVuLmNvbT4KCVVzZSBTeXNBbGxvY1N0cmluZ0J5dGVMZW4vU3lzU3RyaW5nQnl0ZUxlbiB0byBjb3B5IEJTVFIgdmFyaWFudHMuCgoJKiBwcm9ncmFtcy9jbG9jay9Gci5yYywgcHJvZ3JhbXMvY21kbGd0c3QvRnIucmMsCgkgIHByb2dyYW1zL2NtZGxndHN0L2NtZGxnci5yYywgcHJvZ3JhbXMvbm90ZXBhZC9Gci5yYywKCSAgcHJvZ3JhbXMvcHJvZ21hbi9Gci5yYywgcHJvZ3JhbXMvcHJvZ21hbi9yc3JjLnJjLAoJICBwcm9ncmFtcy9yZWdlZGl0L0ZyLnJjLCBwcm9ncmFtcy9yZWdlZGl0L3JzcmMucmMsCgkgIHByb2dyYW1zL3VuaW5zdGFsbGVyL3JzcmMucmMsIHByb2dyYW1zL3ZpZXcvRnIucmMsCgkgIHByb2dyYW1zL3ZpZXcvaW5pdC5jLCBwcm9ncmFtcy92aWV3L3ZpZXdyYy5yYzoKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCVVwZGF0ZXMgZm9yIHZhcmlvdXMgRnJlbmNoIHJlc291cmNlcy4KCjIwMDMtMDktMTUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBwcm9ncmFtcy9jbG9jay9JdC5yYywgcHJvZ3JhbXMvbm90ZXBhZC9JdC5yYywgcHJvZ3JhbXMvc3RhcnQvSXQucmMsCgkgIHByb2dyYW1zL3N0YXJ0L3JzcmMucmMsIHByb2dyYW1zL3ZpZXcvSXQucmMsIHByb2dyYW1zL3ZpZXcvdmlld3JjLnJjOgoJSXZhbiBMZW8gTXVycmF5LVNtaXRoIDxwdW90aUBpbndpbmQuaXQ+CglBZGRlZC9pbXByb3ZlZCBJdGFsaWFuIHRyYW5zbGF0aW9ucy4KCgkqIGRsbHMvc2hlbGwzMi9zaGZsZHIuaCwgZGxscy9zaGVsbDMyL3NoZmxkcl9kZXNrdG9wLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGZsZHJfZnMuYywgZGxscy9zaGVsbDMyL3NoZmxkcl9teWNvbXAuYywKCSAgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jOgoJUm9sZiBLYWxiZXJtYXR0ZXIgPHJvbGYua2FsYmVybWF0dGVyQGNpdGVuZ2luZWVyaW5nLmNvbT4KCU1ha2Ugc3VyZSB0aGUgYmluZCBjb250ZXh0IGlzIGZvcndhcmRlZCBpbgoJU2hlbGxGb2xkZXJfUGFyc2VEaXNwbGF5TmFtZS4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmM6CglSb2xmIEthbGJlcm1hdHRlciA8cm9sZi5rYWxiZXJtYXR0ZXJAY2l0ZW5naW5lZXJpbmcuY29tPgoJU2lnbmVkL3Vuc2lnbmVkIHdhcm5pbmdzIGFuZCBzb21lIGZvcm1hdHRpbmcuCgoJKiBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW4sIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwKCSAgZGxscy9zaGVsbDMyL3NobGZzYmluZC5jLCBpbmNsdWRlL3NobG9iai5oOgoJUm9sZiBLYWxiZXJtYXR0ZXIgPHJvbGYua2FsYmVybWF0dGVyQGNpdGVuZ2luZWVyaW5nLmNvbT4KCUFkZGVkIElGaWxlU3lzdGVtQmluZERhdGEgaW1wbGVtZW50YXRpb24uCgoJKiBkbGxzL3NoZWxsMzIvY2hhbmdlbm90aWZ5LmM6CglSb2xmIEthbGJlcm1hdHRlciA8cm9sZi5rYWxiZXJtYXR0ZXJAY2l0ZW5naW5lZXJpbmcuY29tPgoJU0hDaGFuZ2VOb3RpZnkgc2hvdWxkIHVzZSBTSFNpbXBsZUlETGlzdEZyb21QYXRoIGFzIHRoaXMgZnVuY3Rpb24KCXNob3VsZCBub3QgZmFpbCBvbiBwYXRocyB0aGF0IGRvIG5vdCBleGlzdCBhbnltb3JlLgoKCSogcHJvZ3JhbXMvd2luZWNmZy93aW5lY2ZnLmM6IE1pa2UgSGVhcm4gPG1pa2VAdGhlb3JldGljLmNvbT4KCUFkZGVkIGEgc2ltcGxlIFRPRE8gbGlzdC4KCgkqIGRsbHMvd2lubW0vd2luZWFsc2EvTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vd2luZWFsc2EvYWxzYS5jLAoJICBkbGxzL3dpbm1tL3dpbmVhbHNhL2Fsc2EuaCwgZGxscy93aW5tbS93aW5lYWxzYS9taWRpLmMsCgkgIGRsbHMvd2lubW0vd2luZWFsc2Evd2luZWFsc2EuZHJ2LnNwZWM6CglDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglBZGRlZCBtaWRpIHN1cHBvcnQgdG8gdGhlIEFMU0EgZHJpdmVyLgoKCSogZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZGxscy9rZXJuZWwvc3luYy5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJTW92ZSB0aGUgbWFpbHNsb3Qgc3R1YnMgaW50byB0aGUgZGxscy9rZXJuZWwgZGlyZWN0b3J5LgoKCSogZG9jdW1lbnRhdGlvbi9NYWtlZmlsZS5pbiwgZG9jdW1lbnRhdGlvbi9kbGxzLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vd2luZS1kZXZlbC5zZ21sLCBkb2N1bWVudGF0aW9uL3dpbmUtZG9jLnNnbWw6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJUmVtb3ZlIG9ic29sZXRlIGRvY3VtZW50YXRpb24vZGxscy5zZ21sLgoKCSogZGxscy9rZXJuZWwvTWFrZWZpbGUuaW46CglSZW1vdmUgZ2VuZXJhdGVkIGFzc2VtYmx5IGNvZGUgb24gbWFrZSBjbGVhbi4KCgkqIGRsbHMvd2lubW0vZHJpdmVyLmMsIGRsbHMvd2lubW0vbWNpLmMsIGRsbHMvd2lubW0vbW1pby5jLAoJICBkbGxzL3dpbm1tL21tc3lzdGVtLmMsIGRsbHMvd2lubW0vd2lubW0uYywgZGxscy93aW5tbS93aW5tbS5zcGVjLAoJICBpbmNsdWRlL21tZGRrLmgsIGluY2x1ZGUvbW1zeXN0ZW0uaDoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJLSBNb3ZlZCBXaW5lIGV4dGVuc2lvbiB0byBnZXQgRFNvdW5kIGludGVyZmFjZSBmcm9tIGEgd2F2ZSBkZXZpY2UgZnJvbQoJICBpbmNsdWRlL21tc3lzdGVtLmggdG8gaW5jbHVkZS9tbWRkay5oLgoJLSBSZW1vdmVkIGFsbCBkZXBlbmRlbmNpZXMgb24gaGVhcC5oLgoJLSBGaXhlZCBhIGZldyBwcm90b3R5cGVzIChtbWlvUmVuYW1lW0FXXSwgbWNpU2VuZFN0cmluZ1csICpNZXNzYWdlKS4KCgkqIGRvY3VtZW50YXRpb24vd2luZWxpYi1wb3J0aW5nLnNnbWw6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJUmVtb3ZlIG5vIGxvbmdlciBjdXJyZW50IGlzc3VlcyBmcm9tIHRoZSBXaW5lbGliIGd1aWRlLgoKCSogZG9jdW1lbnRhdGlvbi9wb3J0aW5nLnNnbWw6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglVcGRhdGUgdGhlIHBvcnRpbmcgZG9jdW1lbnRhdGlvbi4KCgkqIGRsbHMvZHNvdW5kL3Rlc3RzL2Rzb3VuZC5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQWRkZWQgYmV0dGVyIHRlc3RzIGZvciB2b2x1bWUgYW5kIHBhbi4KCUFkZGVkIGNhcHR1cmUgbm90aWZpY2F0aW9uIHRlc3QuCglGaXhlZCBjYXB0dXJlIHF1ZXJ5IG5vdGlmaWNhdGlvbiB0ZXN0IGJ1Zy4KCgkqIGRsbHMvZHNvdW5kL2J1ZmZlci5jLCBkbGxzL2Rzb3VuZC9jYXB0dXJlLmMsCgkgIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmMsIGRsbHMvZHNvdW5kL3ByaW1hcnkuYywKCSAgZGxscy9kc291bmQvcHJvcHNldC5jLCBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglEZXZpY2UgZW51bWVyYXRpb24gY2FsbGJhY2tzIHNob3VsZCByZXR1cm4gYSBOVUxMIGd1aWQgZm9yIGRlZmF1bHQKCWRldmljZXMuCglGaXhlZCBzb21lIHZvbHVtZSBhbmQgcGFuIGNhc2VzLgoJQWRkZWQgbWlzc2luZyBwcm9wZXJ0eSBzZXQuCglGaXhlZCBjYXB0dXJlIG5vdGlmaWNhdGlvbiBidWcuCgoJKiBkb2N1bWVudGF0aW9uL2RlYnVnZ2VyLnNnbWwsIGRvY3VtZW50YXRpb24vZGVmYXVsdC5kc2w6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVJlbW92ZWQgcmVmZXJlbmNlIHRvICdzeXN0ZW1uYW1lJyBhbmQgYWRkZWQgYSBsaW5rIHRvIHdpbnNpdGUgaW4KCWRlYnVnZ2VyLnNnbWwuCglSZW1vdmUgY3J1ZnQgZnJvbSBkZWZhdWx0LmRzbC4gQWRkIGNvbW1lbnRzIGV4cGxhaW5pbmcgd2hhdCBvdXIgb3RoZXIKCXNldHRpbmdzIGRvLgoKCSogZG9jdW1lbnRhdGlvbi9mYXEuc2dtbDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglSZW1vdmUgdGhlIEx5Y29zIGxpbmsgKHdoaWNoIGRvZXMgbm90IGV2ZW4gcG9pbnQgdG8gTHljb3MpLiBQb2ludCB0bwoJaWJpYmxpby5vcmcncyBtaXJyb3JzIHBhZ2UuCgoJKiBncmFwaGljcy94MTFkcnYveGZvbnQuYzogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUNoZWNrIFgxMSBlcnJvcnMgb24gZWFjaCBYTG9hZFF1ZXJ5Rm9udCBjYWxscy4KCgkqIHRvb2xzL3dpbmVnY2MvTWFrZWZpbGUuaW4sIHRvb2xzL3dpbmVnY2Mvd2luZWdjYy5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZGltaUBpbnRlbGxpd2FyZS5jYT4KCVRlYWNoIHdpbmVnY2MgdG8gbWFzcXVlcmFkZSBhcyBjcHAuCgoJKiBpbmNsdWRlL3dpbmJhc2UuaDogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRGVjbGFyZSBtYWlsc2xvdCBmdW5jdGlvbnMuCgoJKiBkbGxzL2tlcm5lbC9jb21tLmMsIGRsbHMva2VybmVsL3Rlc3RzLy5jdnNpZ25vcmUsCgkgIGRsbHMva2VybmVsL3Rlc3RzL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC90ZXN0cy9jb21tLmM6CglLZXZpbiBHcm9lbmV2ZWxkIDxrZ3JvZW5ldmVsZEBtY21hc3Rlci5jYT4KCS0gRml4IHNtYWxsIGJ1ZyB3aXRoIHBhcnNpbmcgb2YgbnVtYmVycyBpbiBCdWlsZENvbW1EQ0IgZnVuY3Rpb25zLgoJLSBBZGQgY29uZm9ybWFuY2UgdGVzdCBmb3IgQnVpbGRDb21tRENCIGZ1bmN0aW9ucy4KCgkqIGRsbHMvZGRyYXcvZDNkX3ByaXZhdGUuaCwgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLAoJICBkbGxzL2RkcmF3L2RkcmF3X3ByaXZhdGUuaCwgZGxscy9kZHJhdy9kc3VyZmFjZS9mYWtlemJ1ZmZlci5jLAoJICBkbGxzL2RkcmF3L2RzdXJmYWNlL2Zha2V6YnVmZmVyLmgsIGRsbHMvZGRyYXcvZ2xfYXBpLmgsCgkgIGRsbHMvZGRyYXcvZ2xfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L2hlbHBlci5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gYWRkIFpCdWZmZXIgd3JpdGUgc3VwcG9ydAoJLSBzb21lIFRSQUNFaW5nIGZpeGVzCgoJKiBkbGxzL2RkcmF3L2QzZGV4ZWN1dGVidWZmZXIuYzogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCVVzZSBkZHJhd19nZW9tIGluIHRoZSBleGVjdXRlIGJ1ZmZlciBjb2RlLgoKCSogZGxscy91c2VyL21lc3NhZ2UuYywgZGxscy91c2VyL3VzZXIzMi5zcGVjOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CgktIEltcGxlbWVudGVkIElzSHVuZ0FwcFdpbmRvdy4KCS0gQWRkZWQgcmVqZWN0aW9uIG9mIGludGVycHJvY2VzcyBtZXNzYWdlcyByZWxhdGVkIHRvIGljb25zLgoKCSogZGxscy9ycGNydDQvcnBjX3NlcnZlci5jOiBNaWtlIEhlYXJuIDxtaWtlQHRoZW9yZXRpYy5jb20+CglNb3ZlIHBhY2tldCBsaW5rZWQgbGlzdCB0YWlsIGZvcndhcmQgY29ycmVjdGx5IG9uIHB1c2guCgoyMDAzLTA5LTExICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogQU5OT1VOQ0UsIENoYW5nZUxvZywgVkVSU0lPTiwgY29uZmlndXJlOiBSZWxlYXNlIDIwMDMwOTExLgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoyMDAzLTA5LTExICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9rZXJuZWwvY29tbS5jLCBpbmNsdWRlL3dpbmJhc2UuaDoKCUtldmluIEdyb2VuZXZlbGQgPGtncm9lbmV2ZWxkQG1jbWFzdGVyLmNhPgoJQWRkIG1pc3Npbmcgd1Jlc2VydmVkMSBtZW1iZXIgdG8gRENCIHN0cnVjdHVyZSBkZWZpbml0aW9uLgoJRml4IHNldmVyYWwgYnVncyBpbiBCdWlsZENvbW1EQ0JBbmRUaW1lb3V0czoKCS0gbWFrZSBzdXJlIExQQ1NUUiBwYXJhbWV0ZXIgaXMgcmVhbGx5IHRyZWF0ZWQgYXMgY29uc3RhbnQKCS0gZml4IHBvc3NpYmxlIGJ1ZmZlciBvdmVyZmxvdyBpZiBwYXNzZWQgaW4gc3RyaW5nIGlzIHRvbyBsb25nCgktIGlmIHRoZSBkZXZpY2UgY29udHJvbCBzdHJpbmcgaXMgaW52YWxpZCwgZG8gbm90IG1vZGlmeSBEQ0IKCS0gZG8gbm90IGNsZWFyIGVudGlyZSBEQ0IsIG9ubHkgbW9kaWZ5IGFwcHJvcHJpYXRlIG1lbWJlcnMKCS0gZml4IHBhcnNpbmcgb2Ygc3RvcCBiaXRzIHBhcmFtZXRlciBzbyBpdCB3b3JrcyBmb3IgMSBhbmQgMS41CgktIHBvcHVsYXRlIENPTU1USU1FT1VUUyB3aGVuIHRvPXh4eCBwYXJhbWV0ZXIgaXMgc3BlY2lmaWVkCgktIGFkZGVkIHN1cHBvcnQgZm9yIHhvbiwgb2Rzciwgb2N0cywgZHRyLCBydHMsIGFuZCBpZHNyIHBhcmFtZXRlcnMKCS0gZml4IHNldmVyYWwgb3RoZXIgcGFyc2luZyBlcnJvcnMKCgkqIHRvb2xzL3dpbmVnY2Mvd2luZXdyYXAuYzogUmljaGFyZCBDb2hlbiA8cmljaGFyZC5jb2hlbkB2aXJnaW4ubmV0PgoJSGFuZGxlIC1MPGRpcj4gaW4gYSBzZXBhcmF0ZSBhcnJheS4KCgkqIGRsbHMvbXN2aWRlby9tc3ZpZGVvX21haW4uYywgZGxscy93aW5tbS93aW5lbW0uaCwgaW5jbHVkZS9tbXN5c3RlbS5oOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglNb3ZlZCBzb21lIE1NIGludGVybmFsIGRlZmluaXRpb24gdG8gaW50ZXJuYWwgaW5jbHVkZSBmaWxlcy4KCgkqIHdpbmRvd3MvZGlhbG9nLmM6IEtldmluIEdyb2VuZXZlbGQgPGtncm9lbmV2ZWxkQG1jbWFzdGVyLmNhPgoJTW9kaWZ5IENoZWNrUmFkaW9CdXR0b24gZnVuY3Rpb24gdG8gYmUgbW9yZSBjb25zaXN0ZW50IHdpdGggV2luZG93cy4KCgkqIGRsbHMvb2xlYXV0MzIvdXNybWFyc2hhbC5jOiBNaWtlIEhlYXJuIDxtaWtlQHRoZW9yZXRpYy5jb20+CglJbXBsZW1lbnQgZGlzcGF0Y2ggdmFyaWFudCBtYXJzaGFsbGluZy4KCgkqIGRsbHMvZ2x1MzIvZ2x1MzIuc3BlYzogRGF2ZSBNaWxsZXIgPGNvbXBzb2xAcHRkLm5ldD4KCUFscGhhYmV0aXplZCB0aGUgZnVuY3Rpb25zLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6IFJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CgktIE1ha2Ugc3VyZSBkcm9wZG93biBhcnJvdyBpcyBhbHdheXMgY2VudGVyZWQuCgktIEFkZCBzdXBwb3J0IGZvciB0aGUgVEJOUkZfSElERUhFTFAgY3VzdG9taXphdGlvbiBmbGFnLCBidXQgZW1pdCBhCgkgIEZJWE1FIHdoZW4gaXQgaXNuJ3QgcHJlc2VudC4KCgkqIHRvb2xzL3dpbmVnY2MvTWFrZWZpbGUuaW4sIHRvb2xzL3dpbmVnY2Mvd2luZXdyYXAuYzoKCVNldCB0aGUgZGxsIHNlYXJjaCBwYXRoIHRvIHRoZSBsb2NhdGlvbiBzcGVjaWZpZWQgaW4gY29uZmlndXJlCgkoc3BvdHRlZCBieSBWaW5jZW50IELpcm9uKS4KCgkqIGluY2x1ZGUvcG9wcGFjay5oLCBpbmNsdWRlL3BzaHBhY2sxLmgsIGluY2x1ZGUvcHNocGFjazIuaCwKCSAgaW5jbHVkZS9wc2hwYWNrNC5oLCBpbmNsdWRlL3BzaHBhY2s4Lmg6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJUmVtb3ZlIGNoZWNrcyBmcm9tIHtwb3AscHNofXBhY2tbMTI0OF0uaCB0aGF0IHdlcmUgY2F1c2luZyB0aGUKCXN0YW5kYWxvbmUgcHJvY2Vzc29yIHRvIGZhaWwuCgoJKiBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJTUxMb2FkbGlicmFyeTogUmVtb3ZlIC1ub25hbWUgYW5kIGR1cGxpY2F0ZSBlbnRyeS4KCgkqIGRvY3VtZW50YXRpb24vZmFxLnNnbWwsIGRvY3VtZW50YXRpb24vc2FtcGxlcy9jb25maWc6CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglNZW50aW9uIHdpbjJrMyBzdXBwb3J0IGluIHRoZSBzYW1wbGUgY29uZmlnIGFuZCBpbiB0aGUgZmFxLgoKCSogdG9vbHMvd2luZWdjYy9NYWtlZmlsZS5pbiwgdG9vbHMvd2luZWdjYy91dGlscy5jLAoJICB0b29scy93aW5lZ2NjL3V0aWxzLmgsIHRvb2xzL3dpbmVnY2Mvd2luZWdjYy5jLAoJICB0b29scy93aW5lZ2NjL3dpbmV3cmFwLmM6CglSaWNoYXJkIENvaGVuIDxyaWNoYXJkLmNvaGVuQHZpcmdpbi5uZXQ+CglVc2UgYW4gZXh0ZW5kYWJsZSBhcnJheSB0byBzdG9yZSB0aGUgbGlzdHMgb2Ygc3RyaW5ncy4KCU9ubHkgbWFrZSB3cmFwcGVyIGFyZ3VtZW50IGxpc3RzIGlmIHdlJ3JlIGdvaW5nIHRvIHVzZSB0aGVtLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIHRvb2xzLy5jdnNpZ25vcmUsIHRvb2xzL01ha2VmaWxlLmluLAoJICB0b29scy93aW5lZ2NjLmMsIHRvb2xzL3dpbmVnY2MvLmN2c2lnbm9yZSwgdG9vbHMvd2luZWdjYy9NYWtlZmlsZS5pbiwKCSAgdG9vbHMvd2luZWdjYy93aW5lZ2NjLmMsIHRvb2xzL3dpbmVnY2Mvd2luZXdyYXAuYywgdG9vbHMvd2luZXdyYXAuYzoKCU1vdmVkIHdpbmVnY2MgYW5kIHdpbmV3cmFwIHRvIGEgc2VwYXJhdGUgZGlyZWN0b3J5LgoKCSogZGxscy9xdWFydHovTWFrZWZpbGUuaW4sIGRsbHMvcXVhcnR6L2VudW1tZWRpYS5jLCBkbGxzL3F1YXJ0ei9tYWluLmMsCgkgIGRsbHMvcXVhcnR6L21lbWFsbG9jYXRvci5jLCBkbGxzL3F1YXJ0ei9xdWFydHpfcHJpdmF0ZS5oOgoJUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCUltcGxlbWVudGVkIElNZW1BbGxvY2F0b3IgYW5kIElNZWRpYVNhbXBsZS4KCgkqIGluY2x1ZGUvd2luZS9saXN0LmgsIHNlcnZlci9jaGFuZ2UuYywgc2VydmVyL2xpc3QuaCwgc2VydmVyL29iamVjdC5jLAoJICBzZXJ2ZXIvb2JqZWN0Lmg6CglNb3ZlZCBsaXN0LmggdG8gaW5jbHVkZS93aW5lIHNvIHRoYXQgaXQgY2FuIGJlIHVzZWQgZXZlcnl3aGVyZS4KCgkqIHByb2dyYW1zL3djbWQvd2NtZG1haW4uYzogRmVyZW5jIFdhZ25lciA8d2ZlcmlAYWZhdmFudC5lbHRlLmh1PgoJSW1wbGVtZW50ID4+IHN0eWxlIChhcHBlbmQpIG91dHB1dCByZWRpcmVjdGlvbi4KCgkqIGluY2x1ZGUvd2luZ2RpLmg6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglUaGUgR2V0W1JHQl1WYWx1ZSgpIG1hY3JvcyBzaG91bGQgcmV0dXJuIGEgQllURSwgbm90IHRoZSBzYW1lIHR5cGUgYXMKCXRoZSBvbmUgcGFzc2VkIGluLgoKCSogZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYzoKCUNoYW5nZWQgb3JkaW5hbCBmdW5jdGlvbnMgdGhhdCBub3cgaGF2ZSBhIG5hbWUgdG8gdXNlIC1ub25hbWUgaW5zdGVhZAoJb2YgbmFtZWxlc3MgZXhwb3J0cy4KCgkqIGRsbHMvbmV0YXBpMzIvbmV0YXBpMzIuYywgZGxscy9uZXRhcGkzMi9uZXRhcGkzMi5zcGVjLAoJICBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL2xtLmgsIGluY2x1ZGUvbG1zdGF0cy5oOgoJR2VvZmYgVGhvcnBlIDxnZW9mZkBnZW9mZnRob3JwZS5uZXQ+CglBZGRlZCBhIHN0dWIgZm9yIE5ldFN0YXRpc3RpY3NHZXQuCgoJKiBkbGxzL29sZTMyL2FudGltb25pa2VyLmMsIGRsbHMvb2xlMzIvYmluZGN0eC5jLAoJICBkbGxzL29sZTMyL2NsaXBib2FyZC5jLCBkbGxzL29sZTMyL2NvbXBvYmouYywKCSAgZGxscy9vbGUzMi9jb21wb3NpdGVtb25pa2VyLmMsIGRsbHMvb2xlMzIvZGF0YWNhY2hlLmMsCgkgIGRsbHMvb2xlMzIvZGVmYXVsdGhhbmRsZXIuYywgZGxscy9vbGUzMi9lcnJvcmluZm8uYywKCSAgZGxscy9vbGUzMi9maWxlbW9uaWtlci5jLCBkbGxzL29sZTMyL2Z0bWFyc2hhbC5jLAoJICBkbGxzL29sZTMyL2hnbG9iYWxzdHJlYW0uYywgZGxscy9vbGUzMi9pZnMuYywKCSAgZGxscy9vbGUzMi9pdGVtbW9uaWtlci5jLCBkbGxzL29sZTMyL21hcnNoYWwuYywKCSAgZGxscy9vbGUzMi9tZW1sb2NrYnl0ZXMuYywgZGxscy9vbGUzMi9tb25pa2VyLmMsIGRsbHMvb2xlMzIvb2xlMi5jLAoJICBkbGxzL29sZTMyL29sZTJpbXBsLmMsIGRsbHMvb2xlMzIvb2xlMnN0dWJzLmMsCgkgIGRsbHMvb2xlMzIvb2xlMzJfbWFpbi5jLCBkbGxzL29sZTMyL29sZW9iai5jLCBkbGxzL29sZTMyL29sZXByb3h5LmMsCgkgIGRsbHMvb2xlMzIvcmVnc3ZyLmMsIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmM6CglEYXZlIE1pbGxlciA8Y29tcHNvbEBwdGQubmV0PgoJUmVtb3ZlZCBvcmRpbmFscyBmcm9tIGNvbW1lbnRzLgoKCSogZGxscy9vbGUzMi9vbGUzMi5zcGVjOiBEYXZlIE1pbGxlciA8Y29tcHNvbEBwdGQubmV0PgoJUmVtb3ZlIGFsbCB0aGUgb3JkaW5hbHMgYW5kIHVzZSBAIGluc3RlYWQuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBkbGxzL2tlcm5lbC90b29saGVscC5jLAoJICBpbmNsdWRlL3RsaGVscDMyLmg6CglHZW9mZiBUaG9ycGUgPGdlb2ZmQGdlb2ZmdGhvcnBlLm5ldD4KCUFkZGVkIGEgc3R1YiBmb3IgSGVhcDMyTGlzdEZpcnN0LgoKCSogZGxscy9zZXR1cGFwaS9kZXZpbnN0LmMsIGRsbHMvc2V0dXBhcGkvaW5mcGFyc2UuYywKCSAgZGxscy9zZXR1cGFwaS9pbnN0YWxsLmMsIGRsbHMvc2V0dXBhcGkvcGFyc2VyLmMsCgkgIGRsbHMvc2V0dXBhcGkvcXVldWUuYywgZGxscy9zZXR1cGFwaS9zZXR1cGNhYi5jLAoJICBkbGxzL3NldHVwYXBpL3N0dWJzLmM6CglTdGV2ZW4gRWR3YXJkcyA8U3RldmVuX0VkNDE1M0B5YWhvby5jb20+CglQb3J0aW5nIGZpeGVzLgoKCSogZGxscy9zaGx3YXBpL2Fzc29jLmMsIGRsbHMvc2hsd2FwaS9jbGlzdC5jLCBkbGxzL3NobHdhcGkvaXN0cmVhbS5jLAoJICBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLCBkbGxzL3NobHdhcGkvcGF0aC5jLCBkbGxzL3NobHdhcGkvcmVnLmMsCgkgIGRsbHMvc2hsd2FwaS9yZWdzdHJlYW0uYywgZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYywKCSAgZGxscy9zaGx3YXBpL3N0cmluZy5jLCBkbGxzL3NobHdhcGkvdGhyZWFkLmMsIGRsbHMvc2hsd2FwaS91cmwuYzoKCVJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CgktIENvbnZlcnQgb3JkaW5hbHMgdG8gdGhlaXIgcmVhbCBuYW1lcy4KCS0gUGFydGlhbGx5IGltcGxlbWVudCBhIGZldyBBc3NvYyogZnVuY3Rpb25zLgoKCSogZGxscy93aW5tbS90ZXN0cy93YXZlLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJTW9kaWZ5IG9rKCJ4eHgiKSBjYWxscyBpbnRvIG9rKCJ4eHhcbiIpIGFzIGlzIG5vdyBleHBlY3RlZC4KCgkqIGRvY3VtZW50YXRpb24vZmFxLnNnbWw6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJVXBkYXRlZCB0aGUgV2luZSBwb3J0cyBzZWN0aW9uLgoKCSogc2NoZWR1bGVyL3B0aHJlYWQuYzoKCUFkZGVkIHB0cl9fX3B0aHJlYWRfY29uZF90aW1lZHdhaXQgaW4gdGhlIHB0aHJlYWRfZnVuY3Rpb25zIHN0cnVjdHVyZQoJdG8gbWF0Y2ggdGhlIGxhdGVzdCBnbGliYy4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL2xvY2FsZS5jLCBkbGxzL29sZWF1dDMyL3Rlc3RzL3ZhcnRlc3QuYywKCSAgZGxscy91c2VyL3Rlc3RzL3N5c3BhcmFtcy5jLCBpbmNsdWRlL3dpbmUvdGVzdC5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglNb2RpZnkgd2luZXRlc3Rfb2sgdG8gb25seSBhZGQgYSB0cmFpbGluZyAnXG4nIGlmIHRoZXJlIGlzIG5vbmUuCglNb2RpZnkgbWFjcm9zIGluIHRoZSBrZXJuZWwsIG9sZWF1dDMyIGFuZCB1c2VyIHRlc3RzIHRvIHByaW50IGEgJ1xuJy4KCgkqIGRsbHMvcnBjcnQ0L3JwY3J0NF9tYWluLmM6CglHcmVnb3J5IE0uIFR1cm5lciA8Z210dXJuZXIwMDdAYW1lcml0ZWNoLm5ldD4KCVVwZGF0ZWQgdGhlICJUT0RPIiBjb21tZW50cy4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzIuc3BlYywgZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmMsCgkgIGRsbHMvc2hkb2N2dy9zaGRvY3Z3LnNwZWMsIGRsbHMvc2hkb2N2dy9zaGRvY3Z3X21haW4uYzoKCVJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CglBZGQgcHJvcGVyIG5hbWVzIHRvIG9yZGluYWwtb25seSBmdW5jdGlvbnMuCgoJKiBwcm9ncmFtcy93aW5lbWluZS9SdS5yYzogT2xlZyBQcm9raG9yb3YgPHhvbGVncHJvQHJiY21haWwucnU+CglTbWFsbCBncmFtbWFyIGZpeC4KCgkqIG1zZG9zL3BwZGV2LmM6IEFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCS0gc3BlbGxpbmcgZml4ZXMKCS0gY2hhbmdlIG9uZSBpbGwtY2hvc2VuIEZJWE1FIHRvIEVSUgoKCSogZGxscy9jb21jdGwzMi9jb21tY3RybC5jOiBHefZyZ3kgJ05vZycgSmVuZXkgPG5vZ0BzZGYubG9uZXN0YXIub3JnPgoJRml4IGludmFsaWQgQyBjb25zdHJ1Y3RzIChzcG90dGVkIGJ5IE1hcmN1cyBNZWlzc25lcikuCgoJKiBkb2N1bWVudGF0aW9uL2ZhcS5zZ21sOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVJldmVydCBzb21lIHdvcmQtc3BsaXRzIHRvIHRoZWlyIG5vcm1hbCBmb3JtLCBlLmcuIEluc3RhbGxTaGllbGQuCglGaXggY2FzZSBvZiBUcmFuc0dhbWluZyBpbiB0d28gcGxhY2VzLgoJRml4IHRoZSBVUkwgdG8gZG9zZnMuCgoJKiBkbGxzL3F1YXJ0ei92ZXJzaW9uLnJjOiBUb20gV2lja2xpbmUgPHR3aWNrbGluZUBza3liZXN0LmNvbT4KCVNldCB2ZXJzaW9uIHRvIDguMS4KCjIwMDMtMDktMTAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB0b29scy93aW5lZHVtcC9wZS5jOiBBZGRlZCBkdW1waW5nIG9mIG1lc3NhZ2UgdGFibGUgcmVzb3VyY2VzLgoKCSogY29udHJvbHMvYnV0dG9uLmMsIGNvbnRyb2xzL2NvbWJvLmMsIGNvbnRyb2xzL2Rlc2t0b3AuYywKCSAgY29udHJvbHMvZWRpdC5jLCBjb250cm9scy9pY29udGl0bGUuYywgY29udHJvbHMvbGlzdGJveC5jLAoJICBjb250cm9scy9tZW51LmMsIGNvbnRyb2xzL3Njcm9sbC5jLCBjb250cm9scy9zdGF0aWMuYywKCSAgZGxscy9jb21jdGwzMi9hbmltYXRlLmMsIGRsbHMvY29tY3RsMzIvY29tYm9leC5jLAoJICBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmMsIGRsbHMvY29tY3RsMzIvZGF0ZXRpbWUuYywKCSAgZGxscy9jb21jdGwzMi9mbGF0c2IuYywgZGxscy9jb21jdGwzMi9oZWFkZXIuYywKCSAgZGxscy9jb21jdGwzMi9pcGFkZHJlc3MuYywgZGxscy9jb21jdGwzMi9saXN0dmlldy5jLAoJICBkbGxzL2NvbWN0bDMyL21vbnRoY2FsLmMsIGRsbHMvY29tY3RsMzIvbmF0aXZlZm9udC5jLAoJICBkbGxzL2NvbWN0bDMyL3BhZ2VyLmMsIGRsbHMvY29tY3RsMzIvcHJvZ3Jlc3MuYywKCSAgZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYywgZGxscy9jb21jdGwzMi9yZWJhci5jLAoJICBkbGxzL2NvbWN0bDMyL3N0YXR1cy5jLCBkbGxzL2NvbWN0bDMyL3RhYi5jLCBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYywKCSAgZGxscy9jb21jdGwzMi90b29sdGlwcy5jLCBkbGxzL2NvbWN0bDMyL3RyYWNrYmFyLmMsCgkgIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYywgZGxscy9jb21jdGwzMi91cGRvd24uYywKCSAgZGxscy9jb21tZGxnL2NvbG9yZGxnLmMsIGRsbHMvY29tbWRsZy9jb2xvcmRsZzE2LmMsCgkgIGRsbHMvY29tbWRsZy9maWxlZGxnLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYywKCSAgZGxscy9jb21tZGxnL2ZpbmRkbGcuYywgZGxscy9jb21tZGxnL2ZpbmRkbGczMi5jLAoJICBkbGxzL2NvbW1kbGcvZm9udGRsZy5jLCBkbGxzL2NvbW1kbGcvZm9udGRsZzE2LmMsCgkgIGRsbHMvY29tbWRsZy9wcmludGRsZy5jLCBkbGxzL2NvbW1kbGcvcHJpbnRkbGcxNi5jLAoJICBkbGxzL2RkcmF3L2RzdXJmYWNlL3duZHByb2MuYywgZGxscy9rZXJuZWwvZm9ybWF0X21zZy5jLAoJICBkbGxzL2tlcm5lbC9sb2NhbGUuYywgZGxscy9rZXJuZWwvcmVzb3VyY2UxNi5jLCBkbGxzL21zdmNydC9sb2NhbGUuYywKCSAgZGxscy9yaWNoZWRpdC9yaWNoZWRpdC5jLCBkbGxzL3NldHVwYXBpL3ZpcnRjb3B5LmMsCgkgIGRsbHMvc2hlbGwzMi9icnNmb2xkZXIuYywgZGxscy9zaGVsbDMyL2RpYWxvZ3MuYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBkbGxzL3NoZWxsMzIvc2hsdmlldy5jLAoJICBkbGxzL3NoZWxsMzIvc3lzdHJheS5jLCBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLCBkbGxzL3VzZXIvY29udHJvbHMuaCwKCSAgZGxscy91c2VyL2RpYWxvZzE2LmMsIGRsbHMvdXNlci9leHRpY29uLmMsIGRsbHMvdXNlci9yZXNvdXJjZS5jLAoJICBkbGxzL3VzZXIvdGVzdHMvc3lzcGFyYW1zLmMsIGRsbHMvdXNlci90ZXN0cy93aW4uYywgZGxscy93aW5tbS9tY2kuYywKCSAgZGxscy93aW5tbS9tY2lhdmkvd25kLmMsIGRsbHMvd2lubW0vbW1zeXN0ZW0uYywKCSAgZGxscy94MTFkcnYvZGVza3RvcC5jLCBpbmNsdWRlL3dpbmUvd2ludXNlcjE2LmgsIGluY2x1ZGUvd2ludXNlci5oLAoJICBwcm9ncmFtcy93aW5lbWVudWJ1aWxkZXIvd2luZW1lbnVidWlsZGVyLmMsCgkgIHByb2dyYW1zL3dpbmhlbHAvd2luaGVscC5jLCB3aW5kb3dzL2NsYXNzLmMsIHdpbmRvd3MvY3Vyc29yaWNvbi5jLAoJICB3aW5kb3dzL2RlZnduZC5jLCB3aW5kb3dzL2RpYWxvZy5jLCB3aW5kb3dzL21kaS5jLCB3aW5kb3dzL21zZ2JveC5jLAoJICB3aW5kb3dzL25vbmNsaWVudC5jOgoJUmVtb3ZlZCB0aGUgQS9XIGNvbnN0YW50cyBmb3IgYnVpbHRpbiBjdXJzb3JzLCBpY29ucyBhbmQgcmVzb3VyY2UKCXR5cGVzIHNpbmNlIHRoZXkgZG9uJ3QgZXhpc3Qgb24gV2luZG93cywgYW5kIGFkZGVkIHR5cGVjYXN0cwoJZXZlcnl3aGVyZSBpbnN0ZWFkLgoKCSogdG9vbHMvd3JjL3V0aWxzLmM6IFN0ZXZlbiBFZHdhcmRzIDxTdGV2ZW5fRWQ0MTUzQHlhaG9vLmNvbT4KCVBvcnRhYmlsaXR5IGZpeCBmb3IgbGFuZ3VhZ2UgaWRzLgoKCSogcHJvZ3JhbXMvY2xvY2svV2EucmMsIHByb2dyYW1zL25vdGVwYWQvV2EucmMsIHByb2dyYW1zL3dpbmhlbHAvV2EucmM6CglQYXZlbCBSb3NraW4gPHByb3NraUBnbnUub3JnPgoJQ29tcGlsZSBXYWxvbiByZXNvdXJjZXMgb25seSBpZiBMQU5HX1dBTE9OIGlzIGRlZmluZWQuCgoJKiBwcm9ncmFtcy93aW5lY2ZnL2RyaXZlLmMsIHByb2dyYW1zL3dpbmVjZmcvd2luZWNmZy5jLAoJICBwcm9ncmFtcy93aW5lY2ZnL3dpbmVjZmcuaDoKCU1pa2UgSGVhcm4gPG1pa2VAdGhlb3JldGljLmNvbT4KCS0gQnVnZml4ZXMgdG8gdGhlIHRyYW5zYWN0aW9uIHN5c3RlbS4KCS0gQmV0dGVyIHByb3RlY3Rpb24gYWdhaW5zdCBpbmNvbXBsZXRlIGNvbmZpZyBzZWN0aW9ucy4KCS0gSW1wbGVtZW50ICJBZGQgRHJpdmUiLgoJLSBQYXJ0bHkgcmVhY3RpdmF0ZSBlZGl0IGRyaXZlIGRpYWxvZy4KCjIwMDMtMDktMDkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2F2aWNhcDMyL2F2aWNhcDMyX21haW4uYywgZGxscy9hdmlmaWwzMi9leHRyYWNodW5rLmMsCgkgIGRsbHMvYXZpZmlsMzIvZmFjdG9yeS5jLCBkbGxzL2F2aWZpbDMyL2dldGZyYW1lLmMsCgkgIGRsbHMvZHBsYXl4L2RwbGF5LmMsIGRsbHMvZHBsYXl4L2RwbGF5c3AuaCwKCSAgZGxscy9kcGxheXgvZHBsYXl4X2dsb2JhbC5oLCBkbGxzL2RwbGF5eC9kcGxvYmJ5LmMsCgkgIGRsbHMvZHBsYXl4L2xvYmJ5c3AuaCwgZGxscy9tc2h0bWwvbWFpbi5jLAoJICBkbGxzL21zdmlkZW8vbXNybGUzMi9tc3JsZV9wcml2YXRlLmgsIGRsbHMvb2xlMzIvY29tcG9zaXRlbW9uaWtlci5jLAoJICBkbGxzL29sZTMyL2RlZmF1bHRoYW5kbGVyLmMsIGRsbHMvb2xlMzIvZ2l0LmMsCgkgIGRsbHMvb2xlMzIvaGdsb2JhbHN0cmVhbS5jLCBkbGxzL29sZTMyL2lmcy5jLAoJICBkbGxzL29sZTMyL2l0ZW1tb25pa2VyLmMsIGRsbHMvb2xlMzIvbWFyc2hhbC5jLAoJICBkbGxzL29sZTMyL21lbWxvY2tieXRlcy5jLCBkbGxzL29sZTMyL21lbWxvY2tieXRlczE2LmMsCgkgIGRsbHMvb2xlMzIvbW9uaWtlci5jLCBkbGxzL29sZTMyL29sZTE2LmMsIGRsbHMvb2xlMzIvb2xlb2JqLmMsCgkgIGRsbHMvb2xlMzIvb2xlcHJveHkuYywgZGxscy9vbGUzMi9ycGMuYywKCSAgZGxscy9vbGUzMi9zdGdfYmlnYmxvY2tmaWxlLmMsIGRsbHMvb2xlYXV0MzIvb2xlMmRpc3AuYywKCSAgZGxscy9vbGVwcm8zMi9vbGVwcm8zMnN0dWJzLmMsIGRsbHMvcXVhcnR6L2VudW1tb25pa2VyLmMsCgkgIGRsbHMvcnBjcnQ0L3JwY3J0NF9tYWluLmMsIGRsbHMvc2hkb2N2dy9NYWtlZmlsZS5pbiwKCSAgZGxscy9zaGRvY3Z3L2V2ZW50cy5jLCBkbGxzL3NoZG9jdncvc2hkb2N2dy5oLAoJICBkbGxzL3NoZG9jdncvc2hkb2N2d19tYWluLmMsIGRsbHMvc2hlbGwzMi9kcmFnZHJvcGhlbHBlci5jLAoJICBkbGxzL3NoZWxsMzIvc2hmbGRyX2Rlc2t0b3AuYywgZGxscy9zaGVsbDMyL3NoZmxkcl9mcy5jLAoJICBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmMsIGluY2x1ZGUvb2xlaWRsLmgsIGluY2x1ZGUvb2xlaWRsLmlkbDoKCUZpeGVkIGEgZmV3IG1vcmUgaGVhZGVycyBkZXBlbmRlbmN5IGlzc3Vlcy4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLAoJICBkbGxzL3NoZWxsMzIvc2hsdmlldy5jLCBkbGxzL3NoZWxsMzIvc2h2X2JnX2NtZW51LmMsCgkgIGRsbHMvc2hlbGwzMi9zaHZfaXRlbV9jbWVudS5jLCBpbmNsdWRlL01ha2VmaWxlLmluLAoJICBpbmNsdWRlL3NobGd1aWQuaCwgaW5jbHVkZS9zaGxvYmouaCwgaW5jbHVkZS9zaG9iamlkbC5oLAoJICBpbmNsdWRlL3Nob2JqaWRsLmlkbCwgaW5jbHVkZS93aW5lL29ial9jb21tZGxnYnJvd3Nlci5oLAoJICBpbmNsdWRlL3dpbmUvb2JqX2NvbnRleHRtZW51LmgsCgkgIGluY2x1ZGUvd2luZS9vYmpfZG9ja2luZ3dpbmRvd2ZyYW1lLmgsCgkgIGluY2x1ZGUvd2luZS9vYmpfZHJhZ2Ryb3BoZWxwZXIuaCwgaW5jbHVkZS93aW5lL29ial9leHRyYWN0aWNvbi5oLAoJICBpbmNsdWRlL3dpbmUvb2JqX3NoZWxsZm9sZGVyLmgsIGluY2x1ZGUvd3R5cGVzLmgsIGluY2x1ZGUvd3R5cGVzLmlkbDoKCUNvbnZlcnRlZCB0aGUgcmVzdCBvZiB0aGUgb2JqXyouaCBoZWFkZXJzIHRvIElETCBpbnRvIHNob2JqaWRsLmlkbC4KCgkqIGluY2x1ZGUvd2lubnQuaDoKCVNvbWUgU1RBVFVTXyogZGVmaW5lcyBoYXZlIHRvIGJlIGR1cGxpY2F0ZWQgaW4gd2lubnQuaC4KCjIwMDMtMDktMDggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2F2aWNhcDMyL2F2aWNhcDMyX21haW4uYywgZGxscy9jb21jdGwzMi9saXN0dmlldy5jLAoJICBkbGxzL2NyeXB0MzIvbWFpbi5jLCBkbGxzL2ltbTMyL2ltbS5jLCBkbGxzL2tlcm5lbC9sb2NhbGUuYywKCSAgZGxscy9rZXJuZWwvbG9jYWxlX3JjLnJjLCBkbGxzL2tlcm5lbC9zdHJpbmcuYywKCSAgZGxscy9rZXJuZWwvbmxzLyoubmxzLCBkbGxzL2tlcm5lbC90ZXN0cy9mb3JtYXRfbXNnLmMsCgkgIGRsbHMvbWFwaTMyL21hcGkzMl9tYWluLmMsIGRsbHMvbXByL3B3Y2FjaGUuYywgZGxscy9tc2kvZGlzdGluY3QuYywKCSAgZGxscy9tc2kvaGFuZGxlLmMsIGRsbHMvbXNpL21zaS5jLCBkbGxzL21zaS9tc2lwcml2LmgsCgkgIGRsbHMvbXNpL21zaXF1ZXJ5LmMsIGRsbHMvbXNpL29yZGVyLmMsIGRsbHMvbXNpL3F1ZXJ5LmgsCgkgIGRsbHMvbXNpL3JlY29yZC5jLCBkbGxzL21zaS9zZWxlY3QuYywgZGxscy9tc2kvc3FsLnksCgkgIGRsbHMvbXNpL3N1bWluZm8uYywgZGxscy9tc2kvdGFibGUuYywgZGxscy9tc2kvd2hlcmUuYywKCSAgZGxscy9tc2lzeXMvbXNpc3lzLmMsIGRsbHMvbnRkbGwvbG9hZGVyLmMsIGRsbHMvb2xlMzIvb2xlMzJfbWFpbi5jLAoJICBkbGxzL29sZTMyL29sZTMyX21haW4uaCwgZGxscy9vbGUzMi9vbGUzMnJlcy5yYywKCSAgZGxscy9ycGNydDQvcnBjcnQ0X21haW4uYywgZGxscy9zZXR1cGFwaS9kZXZpbnN0LmMsCgkgIGRsbHMvc2V0dXBhcGkvZGV2aW5zdDE2LmMsIGRsbHMvc2V0dXBhcGkvaW5mcGFyc2UuYywKCSAgZGxscy9zZXR1cGFwaS9zZXR1cHgxNi5oLCBkbGxzL3NoZWxsMzIvbWVtb3J5c3RyZWFtLmMsCgkgIGRsbHMvc3RpL3N0aV9tYWluLmMsIGRsbHMvdXJsbW9uL3VybG1vbl9tYWluLmgsCgkgIGRsbHMvd2luaW5ldC9yZXNvdXJjZS5oLCBkbGxzL3dpbmluZXQvcnNyYy5yYywKCSAgZGxscy93aW5pbmV0L3dpbmluZXRfRW4ucmMsIGRvY3VtZW50YXRpb24vUkVBRE1FLml0LAoJICBkb2N1bWVudGF0aW9uL1JFQURNRS5wdCwgZG9jdW1lbnRhdGlvbi9SRUFETUUucHRfYnIsCgkgIGRvY3VtZW50YXRpb24vZmFxLnNnbWwsIGRvY3VtZW50YXRpb24vZ2V0dGluZy5zZ21sLAoJICBkb2N1bWVudGF0aW9uL2luc3RhbGxhdGlvbi11bmQta29uZmlndXJhdGlvbi5nZXJtYW4sCgkgIGRvY3VtZW50YXRpb24vc3RhdHVzL2RkZSwgcHJvZ3JhbXMvcnVuZGxsMzIvcnVuZGxsMzIuYywKCSAgcHJvZ3JhbXMvd2luZWNmZy94MTFkcnZkbGcuYywKCSAgcHJvZ3JhbXMvd2luZW1lbnVidWlsZGVyL3dpbmVtZW51YnVpbGRlci5jLCB0b29scy9idWdfcmVwb3J0LnBsLAoJICB0b29scy9jb25maWcuZ3Vlc3MsIHRvb2xzL3dpbmVkdW1wL2N2aW5jbHVkZS5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglGaXggdGhlIGNhc2Ugb2YgcHJvZHVjdCBhbmQgY29tcGFueSBuYW1lcy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL21zaHRtbC8uY3ZzaWdub3JlLAoJICBkbGxzL21zaHRtbC9NYWtlZmlsZS5pbiwgZGxscy9tc2h0bWwvZG9jdW1lbnQuYywgZGxscy9tc2h0bWwvbWFpbi5jLAoJICBkbGxzL21zaHRtbC9tc2h0bWwuc3BlYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIGFuIGluaXRpYWwgKG1vc3RseSBzdHViKSBpbXBsZW1lbnRhdGlvbiBvZiBNU0hUTUwuRExMLgoKCSogcHJvZ3JhbXMvd2luZWNmZy9kcml2ZS5jLCBwcm9ncmFtcy93aW5lY2ZnL21haW4uYywKCSAgcHJvZ3JhbXMvd2luZWNmZy9wcm9wZXJ0aWVzLmgsIHByb2dyYW1zL3dpbmVjZmcvd2luZWNmZy5jLAoJICBwcm9ncmFtcy93aW5lY2ZnL3dpbmVjZmcuaDoKCU1pa2UgSGVhcm4gPG1pa2VAdGhlb3JldGljLmNvbT4KCS0gUmVtb3ZlZCB0aGUgY2VudHJhbCBjb25maWd1cmF0aW9uIHN0cnVjdHVyZSwgYWxsIGNoYW5nZXMgYXJlCgkgIGNvbW1pdHRlZCBpbnN0YW50bHkgbm93LgoJLSBVcGRhdGVkIHRoZSBkcml2ZSBoYW5kbGluZyBjb2RlIHNvIGl0IGxvYWRzIGRpcmVjdCBmcm9tIHRoZQoJICByZWdpc3RyeS4KCS0gUmVtb3ZlZCBEUklWRV9ERVNDLCBkcml2ZXMgYXJlIGtleWVkIGJ5IGRyaXZlIGxldHRlciBub3cuCgktIERvY3VtZW50ZWQgZHJpdmVfYXZhaWxhYmxlX21hc2suCgktIFNpbXBsaWZpZWQgdGhlIGNvZGUgc29tZXdoYXQuCgoJKiBzZXJ2ZXIvcHJvdG9jb2wuZGVmOgoJRml4ZWQgaW5jbHVkZSBzdGF0ZW1lbnRzIHRvIG1hdGNoIHNlcnZlcl9wcm90b2NvbC5oIChzcG90dGVkIGJ5IEVyaWMKCVBvdWVjaCkuCgoJKiBkbGxzL250ZGxsL250LmMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy9udGRsbC90aHJlYWQuYywKCSAgaW5jbHVkZS90aHJlYWQuaCwgaW5jbHVkZS93aW50ZXJubC5oLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLAoJICBzY2hlZHVsZXIvdGhyZWFkLmM6CglPbiBUbHNGcmVlLCBjbGVhciB0aGUgcmVsZWFzZWQgVExTIGluZGV4IGluIGFsbCB0aHJlYWRzLgoKCSogZGxscy9pcGhscGFwaS9NYWtlZmlsZS5pbiwgZGxscy9pcGhscGFwaS9pcGhscGFwaS5zcGVjLAoJICBkbGxzL2lwaGxwYXBpL2lwaGxwYXBpX21haW4uYzoKCUp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCS0gRml4IGJ1ZmZlciBvdmVycnVuIGluIEdldE5ldHdvcmtQYXJhbXMuCgktIEltcGxlbWVudCBHZXRCZXN0KFJvdXRlLEludGVyZmFjZSkuCgktIEltcGxlbWVudCBzb21lIEFsbG9jYXRlQW5kR2V0KkZyb21TdGFjayBmdW5jdGlvbnMuCgoJKiBwcm9ncmFtcy93aW5lY2ZnL0VuLnJjLCBwcm9ncmFtcy93aW5lY2ZnL21haW4uYywKCSAgcHJvZ3JhbXMvd2luZWNmZy9wcm9wZXJ0aWVzLmMsIHByb2dyYW1zL3dpbmVjZmcvcHJvcGVydGllcy5oLAoJICBwcm9ncmFtcy93aW5lY2ZnL3Jlc291cmNlLmgsIHByb2dyYW1zL3dpbmVjZmcvd2luZWNmZy5jLAoJICBwcm9ncmFtcy93aW5lY2ZnL3dpbmVjZmcuaCwgcHJvZ3JhbXMvd2luZWNmZy94MTFkcnZkbGcuYzoKCU1pa2UgSGVhcm4gPG1pa2VAdGhlb3JldGljLmNvbT4KCS0gUmVtb3ZlICJQZXJmZWN0R3JhcGhpY3MiLCAiVXNlIFhTSE0gZXh0ZW5zaW9uIiwgYW5kICJVc2UgYSBwcml2YXRlCgkgIGNvbG91ciBtYXAiLgoJLSBJbXBsZW1lbnQgYSBzaW1wbGUgdHJhbnNhY3Rpb24gc3lzdGVtIGZvciBpbnN0YW50IGFwcGx5LgoJLSBDb21wbGV0ZSB0aGUgZGVza3RvcCBzaXplIGNvZGUsIHRoaXMgbm93IHJlYWRzIGFuZCB3cml0ZXMgdG8gdGhlCgkgIHJlZ2lzdHJ5IGNvcnJlY3RseS4KCS0gUmVtb3ZlIGNvbnN0IG1vZGlmaWVyIGZyb20gdmVyc2lvbiBhY2Nlc3NvciBmdW5jdGlvbnMuCgktIENoYW5nZSByZWdpc3RyeSByb290IHRvIFdpbmUvV2luZUNmZyBmb3IgdGVzdGluZyBwdXJwb3Nlcy4KCgkqIGRsbHMvY2FiaW5ldC9mZGkuYywgZGxscy9kbWxvYWRlci9sb2FkZXIuYywgZG9jdW1lbnRhdGlvbi9mYXEuc2dtbDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQSBmZXcgc3BlbGxpbmcgZml4ZXMuCgoJKiB0b29scy93aW5laW5zdGFsbDogVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJd2luZWluc3RhbGwgdXNlZCBhIFVuaXgtc3R5bGUgZW52aXJvbm1lbnQgdmFyaWFibGUgaW4gdGhlIHRlbXBvcmFyeQoJY29uZmlnIGZpbGUuCgoJKiBwcm9ncmFtcy93aW5lbWluZS9SdS5yYywgcHJvZ3JhbXMvd2luZW1pbmUvcnNyYy5yYzoKCVBhdmVsIFJvc2tpbiA8cHJvc2tpQGdudS5vcmc+CglBZGRlZCBSdXNzaWFuIHJlc291cmNlcy4KCgkqIHByb2dyYW1zL25vdGVwYWQvRnIucmM6IFBhdmVsIFJvc2tpbiA8cHJvc2tpQGdudS5vcmc+CglGaXggRnJlbmNoIHRyYW5zbGF0aW9uLgoKCSogZG9jdW1lbnRhdGlvbi9hcmNoaXRlY3R1cmUuc2dtbDoKCUJpbGwgTWVkbGFuZCA8YmlsbG1lZGxhbmRAbWVyY3VyeXNwZWVkLmNvbT4KCU1vZGlmeSB0aGUgd2luZXNlcnZlciBkb2N1bWVudGF0aW9uIGZvciB0aGUgbmV3IGxvY2F0aW9uIG9mIHRoZSBzb2NrZXQKCWFuZCBhZGQgYSB3YXJuaW5nLgoKCSogbWVtb3J5L2luc3RyLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgY29tcGlsZSB3YXJuaW5nLgoKCSogZGxscy9vZGJjMzIvb2RiYzMyLnNwZWM6IERhdmUgTWlsbGVyIDxjb21wc29sQHB0ZC5uZXQ+CglGaXggaW5jb3JyZWN0IG9yZGluYWxzLgoKCSogZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jLCBpbmNsdWRlL3NobG9iai5oLAoJICBpbmNsdWRlL3dpbmUvb2JqX3NoZWxsZm9sZGVyLmg6CglSb2xmIEthbGJlcm1hdHRlciA8cm9sZi5rYWxiZXJtYXR0ZXJAY2l0ZW5nLmNvbT4KCUNoYW5nZSBwYXJhbWV0ZXIgaW4gU0hHZXRTcGVjaWFsRm9sZGVyUGF0aEEvVyB0byBpbnQgYXMgZG9jdW1lbnRlZCBpbgoJTVNETi4KCUFkZCBzb21lIG1vcmUgZGVmaW5pdGlvbnMgYW5kIG1vdmUgU0hHZXREZXNrdG9wRm9sZGVyKCkgZnJvbQoJd2luZS9vYmpfc2hlbGxmb2xkZXIuaCB0byBoZXJlLgoKCSogZGxscy9vbGVhdXQzMi9vbGVhdXQzMi5zcGVjLCBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUNyZWF0ZSBhIHByb3BlciBzdHViIGZvciBvbGVhdXQzMi5WYXJNb2QuCgoyMDAzLTA5LTA3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogcHJvZ3JhbXMvcmVnZWRpdC9tYWluLmgsIHByb2dyYW1zL3dpbmVjb25zb2xlL2N1cnNlcy5jLAoJICBwcm9ncmFtcy93aW5lZGJnL2dkYnByb3h5LmMsIHNlcnZlci9yZWdpc3RyeS5jOgoJQWRkZWQgYSBmZXcgbWlzc2luZyBzdGRhcmcuaCBpbmNsdWRlcy4KCjIwMDMtMDktMDYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL01ha2V0ZXN0LnJ1bGVzLmluOgoJQWRkZWQgYSBtaXNzaW5nIGRlcGVuZGVuY3kgZm9yIHRlc3RsaXN0LmMgZmlsZXMuCgoJKiBkbGxzL29sZTMyL2Rjb20uaDogUmVnZW5lcmF0ZWQgd2l0aCB0aGUgbGF0ZXN0IHdpZGwuCgoyMDAzLTA5LTA1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogKi8qLmMsIGluY2x1ZGUvKi5oOgoJRml4ZWQgaGVhZGVyIGRlcGVuZGVuY2llcyB0byBiZSBmdWxseSBjb21wYXRpYmxlIHdpdGggdGhlIFdpbmRvd3MKCWhlYWRlcnMgKHdpdGggaGVscCBmcm9tIERpbWl0cmllIE8uIFBhdW4pLgoKMjAwMy0wOS0wNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYywgZGxscy9zaGVsbDMyL3NoZmxkcl9kZXNrdG9wLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGZsZHJfZnMuYywgZGxscy9zaGVsbDMyL3NoZmxkcl9teWNvbXAuYywKCSAgZGxscy9zaGVsbDMyL3NobHZpZXcuYywgaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9zaGxndWlkLmgsCgkgIGluY2x1ZGUvc2hsb2JqLmgsIGluY2x1ZGUvc2hvYmppZGwuaCwgaW5jbHVkZS9zaG9iamlkbC5pZGwsCgkgIGluY2x1ZGUvc2h0eXBlcy5oLCBpbmNsdWRlL3NodHlwZXMuaWRsLAoJICBpbmNsdWRlL3dpbmUvb2JqX2VudW1pZGxpc3QuaCwgaW5jbHVkZS93aW5lL29ial9zaGVsbGJyb3dzZXIuaCwKCSAgaW5jbHVkZS93aW5lL29ial9zaGVsbGV4dGluaXQuaCwgaW5jbHVkZS93aW5lL29ial9zaGVsbGZvbGRlci5oLAoJICBpbmNsdWRlL3dpbmUvb2JqX3NoZWxsbGluay5oLCBpbmNsdWRlL3dpbmUvb2JqX3NoZWxsdmlldy5oOgoJSW1wbGVtZW50ZWQgc2h0eXBlcy5pZGwgYW5kIHNob2JqaWRsLmlkbCBhbmQgcmVtb3ZlZCBhIGZldyBtb3JlCgl3aW5lL29ial8qIGhlYWRlcnMuCgoJKiBpbmNsdWRlL2RiZ2hlbHAuaCwgaW5jbHVkZS9kaWdpdGFsdi5oLCBpbmNsdWRlL3dpbmlvY3RsLmg6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJUmVtb3ZlZCBub24tc3RhbmRhcmQgaGVhZGVyIGluY2x1ZGVzLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQWRqdXN0IHNlbGVjdGlvbiByYW5nZXMgYmVmb3JlIHdlIGluc2VydCB0aGUgaXRlbSBzbyB3ZSBkb24ndCBtaXggdGhlCgluZXcgc2VsZWN0aW9uIHdpdGggdGhlIGV4aXN0aW5nIG9uZXMgKHJlcG9ydGVkIGJ5IEVyaWMgUG91ZWNoKS4KCgkqIGRsbHMvc2hkb2N2dy9zaGRvY3Z3LmgsIGRsbHMvc2hkb2N2dy93ZWJicm93c2VyLmMsCgkgIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvZXhkaXNwLmgsCgkgIGluY2x1ZGUvZXhkaXNwLmlkbCwgaW5jbHVkZS93aW5lL29ial93ZWJicm93c2VyLmgsIGxpYnMvdXVpZC91dWlkLmM6CglDb252ZXJ0ZWQgb2JqX3dlYmJyb3dzZXIuaCB0byBJREwgYW5kIG1vdmVkIHRoZSBkZWZpbml0aW9ucyB0bwoJZXhkaXNwLmlkbCB3aGVyZSB0aGV5IGJlbG9uZy4KCgkqIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvZG9jb2JqLmgsIGluY2x1ZGUvZG9jb2JqLmlkbDoKCUNvbnZlcnRlZCBkb2NvYmouaCB0byBJREwuCgoJKiBpbmNsdWRlL2RvY29iai5oLCBpbmNsdWRlL29sZTIuaCwgaW5jbHVkZS9vbGVhdXRvLmgsCgkgIGluY2x1ZGUvb2xlY3RsLmg6CglSZW1vdmVkIG5vIGxvbmdlciBuZWVkZWQgaW5jbHVkZSBwcm90ZWN0aW9ucy4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9taWRpLmM6IENocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUZpeCBtb2RMb25nRGF0YS4KCUVuYWJsZSBvcGVuaW5nIG9mIE1PRF9TWU5USCB0eXBlIGRldmljZXMuCglBZGQgc29tZSBjb21tZW50cy4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzIuaDoKCVN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJVXBkYXRlZCBtaW5vciB2ZXJzaW9uIG51bWJlci4KCgkqIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvb2FpZGwuaCwgaW5jbHVkZS9vYWlkbC5pZGwsCgkgIGluY2x1ZGUvb2NpZGwuaCwgaW5jbHVkZS9vY2lkbC5pZGwsIGluY2x1ZGUvb2xlaWRsLmgsCgkgIGluY2x1ZGUvb2xlaWRsLmlkbCwgaW5jbHVkZS93aW5lL29ial9jb25uZWN0aW9uLmgsCgkgIGluY2x1ZGUvd2luZS9vYmpfY29udHJvbC5oLCBpbmNsdWRlL3dpbmUvb2JqX29sZWZvbnQuaCwKCSAgaW5jbHVkZS93aW5lL29ial9vbGV1bmRvLmgsIGluY2x1ZGUvd2luZS9vYmpfcGljdHVyZS5oLAoJICBpbmNsdWRlL3dpbmUvb2JqX3Byb3BlcnR5Lmg6CglDb252ZXJ0ZWQgb2NpZGwuaCB0byBJREwuCgoyMDAzLTA5LTAzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS91cmxtb24uaCwgaW5jbHVkZS91cmxtb24uaWRsLAoJICBpbmNsdWRlL3d0eXBlcy5oLCBpbmNsdWRlL3d0eXBlcy5pZGw6CglDb252ZXJ0ZWQgdXJsbW9uLmggdG8gSURMLgoKCSogaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9zZXJ2cHJvdi5oLCBpbmNsdWRlL3NlcnZwcm92LmlkbDoKCUNvbnZlcnRlZCBzZXJ2cHJvdi5oIHRvIElETC4KCgkqIGRsbHMvb2xlMzIvZGF0YWNhY2hlLmMsIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmMsIGluY2x1ZGUvTWFrZWZpbGUuaW4sCgkgIGluY2x1ZGUvb2xlaWRsLmgsIGluY2x1ZGUvb2xlaWRsLmlkbCwgaW5jbHVkZS93aW5lL29ial9jYWNoZS5oLAoJICBpbmNsdWRlL3dpbmUvb2JqX2RyYWdkcm9wLmgsIGluY2x1ZGUvd2luZS9vYmpfaW5wbGFjZS5oLAoJICBpbmNsdWRlL3dpbmUvb2JqX29sZW9iai5oLCBpbmNsdWRlL3dpbmUvb2JqX29sZXZpZXcuaDoKCUNvbnZlcnRlZCBvbGVpZGwuaCB0byBJREwuCgoJKiB0b29scy93aWRsL2hlYWRlci5jLCB0b29scy93aWRsL2hlYWRlci5oLCB0b29scy93aWRsL3BhcnNlci55LAoJICB0b29scy93aWRsL3Byb3h5LmMsIHRvb2xzL3dpZGwvd2lkbHR5cGVzLmg6CglBZGRlZCBwYXJ0aWFsIHN1cHBvcnQgZm9yIGZ1bmN0aW9uIHBvaW50ZXJzLgoKCSogaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9jb21jYXQuaCwgaW5jbHVkZS9jb21jYXQuaWRsLAoJICBpbmNsdWRlL3dpbmUvb2JqX2NvbWNhdC5oLCBpbmNsdWRlL3dpbmUvb2JqX2VudW1ndWlkLmg6CglDb252ZXJ0ZWQgY29tY2F0LmggdG8gSURMLgoKCSogaW5jbHVkZS9vYmppZGwuaCwgdG9vbHMvd2lkbC9wYXJzZXIubCwgdG9vbHMvd2lkbC9wYXJzZXIueSwKCSAgdG9vbHMvd2lkbC93aWRsLmM6CglVc2UgPD4gZm9ybWF0IGluIGdlbmVyYXRlZCAjaW5jbHVkZSBzdGF0ZW1lbnRzLgoJSW50ZWdlciBjb25zdGFudHMgc2hvdWxkIGJlIHVuc2lnbmVkLgoKCSogZGxscy9kc291bmQvYnVmZmVyLmMsIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmMsCgkgIGRsbHMvZHNvdW5kL3Byb3BzZXQuYywgZGxscy93aW5tbS93aW5lYWxzYS9hdWRpby5jLAoJICBkbGxzL3dpbm1tL3dpbmVhdWRpb2lvL2F1ZGlvLmMsIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCVVzZSB0aGUgZHJpdmVycyB0byBnZXQgZGV2aWNlIGNhcGFiaWxpdGllcyBhbmQgcHJvcGVydHkgc2V0cy4KCgkqIHRvb2xzL3dpbmVnY2MuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUZvcndhcmQgYWxsIGFyZ3VtZW50cyB0byBnY2Mgd2hlbiB3ZSBoYXZlIG5vIGlucHV0IGZpbGVzLgoJS2lsbCB0aGUgLVYgb3B0aW9uLCBhcyBpdCdzIG5vdCBjb21wYXRpYmxlIHdpdGggZ2NjLgoJRml4IHNpbGx5IGJ1ZyB3aGVuIHdlIGFyZSBub3QgZ2l2ZW4gYW4gb3V0cHV0IG5hbWUuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sCgkgIGRsbHMva2VybmVsL3B0aHJlYWQuYywgZGxscy9udGRsbC9zeXNkZXBzLmMsIGluY2x1ZGUvY29uZmlnLmguaW4sCgkgIGluY2x1ZGUvd2luZS9wdGhyZWFkLmgsIGxpYnMvd2luZS9sb2FkZXIuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywKCSAgc2NoZWR1bGVyL3B0aHJlYWQuYzoKCU1vdmVkIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgcHRocmVhZCB3cmFwcGVycyB0byBkbGxzL2tlcm5lbC4KCgkqIGRvY3VtZW50YXRpb24vaW5zdGFsbGF0aW9uLXVuZC1rb25maWd1cmF0aW9uLmdlcm1hbjoKCU1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuZGU+CglVc2UgRE9TIHN0eWxlIHZhcmlhYmxlcyBpbiB0aGUgR2VybWFuIGRvY3VtZW50YXRpb24gb2YgdGhlIGNvbmZpZwoJZmlsZS4KCgkqIGRsbHMvZ2RpL21mZHJ2L2luaXQuYzoKCUF2b2lkIGhlYXAgcmVhbGxvY2F0aW9uIGVhY2ggdGltZSBhIG1ldGFyZWNvcmQgaXMgd3JpdHRlbiBpbiBtZW1vcnkKCShiYXNlZCBvbiBhIHBhdGNoIGJ5IFdhcnJlbiBCYWlyZCkuCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmMsIGRsbHMvY29tbWRsZy9maWxlZGxnYnJvd3Nlci5jLAoJICBkbGxzL2RldmVudW0vZGV2ZW51bV9wcml2YXRlLmgsIGRsbHMvb2xlYXV0MzIvb2xlYXV0LmMsCgkgIGRsbHMvb2xlYXV0MzIvb2xlcGljdHVyZS5jLCBkbGxzL3F1YXJ0ei9maWx0ZXJtYXBwZXIuYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLCBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLAoJICBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL3dpbmUvb2JqX3NlcnZpY2Vwcm92aWRlci5oOgoJQXZvaWQgaW5jbHVkaW5nIHdpbmUvb2JqXyouaCBmaWxlcyBkaXJlY3RseSBmcm9tIEMgZmlsZXMuCglSZW1vdmVkIG5vIGxvbmdlciB1c2VkIG9ial9zZXJ2aWNlcHJvdmlkZXIuaC4KCgkqIGRsbHMvc2hlbGwzMi9kcmFnZHJvcGhlbHBlci5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYywKCSAgaW5jbHVkZS9zaGxvYmouaCwgbGlicy91dWlkL3V1aWQuYzoKCXNobG9iai5oIG11c3QgaW5jbHVkZSB3aW5lL29ial9kcmFnZHJvcGhlbHBlci5oIChyZXBvcnRlZCBieSBNYXJ0aW4KCUZ1Y2hzKS4KCgkqIGRsbHMvd2luZWRvcy9pbnQyMS5jOiBTeWx2YWluIFBldHJlb2xsZSA8c3BldHJlb2xsZUB5YWhvby5mcj4KCUNoYW5nZWQgc29tZSBmdW5jdGlvbnMgdG8gcmVzZXQgQ0ZMQUcgb24gc3VjY2Vzcy4KCUFkZGVkIHNvbWUgdHJhY2VzLgoKMjAwMy0wOS0wMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvY29tY3RsMzIvdXBkb3duLmM6IEtldmluIEdyb2VuZXZlbGQgPGtncm9lbmV2ZWxkQG1jbWFzdGVyLmNhPgoJQ2hhbmdlIGRlZmF1bHQgcmFuZ2Ugb2YgdXAtZG93biBjb250cm9sIHRvIG1hdGNoIHJhbmdlIHVzZWQgaW4KCXdpbmRvdy4KCgkqIHByb2dyYW1zL3dpbmVjZmcvRW4ucmMsIHByb2dyYW1zL3dpbmVjZmcvZHJpdmUuYywKCSAgcHJvZ3JhbXMvd2luZWNmZy9yZXNvdXJjZS5oOgoJTWlrZSBIZWFybiA8bWlrZUB0aGVvcmV0aWMuY29tPgoJLSBQYXRoIGNoYW5nZXMgYXJlIHNhdmVkIHRvIHRoZSBzdHJ1Y3QgY29ycmVjdGx5LgoJLSBSZW5hbWUgZW5hYmxlX2Nkcm9tX2JveCB0byBlbmFibGVfbGFiZWxzZXJpYWxfYm94IHRvIGJldHRlciByZWZsZWN0CgkgIHB1cnBvc2UuCgktIFJlbmFtZSBJRENfQk9YX0NEUk9NIHRvIElEQ19CT1hfTEFCRUxTRVJJQUwuCgktIFN1cHBvcnQgZm9yIGVkaXRpbmcgbGFiZWwgZm9yIGFsbCBkcml2ZXMsIGFsbG93IGVkaXRpbmcgb2YKCSAgc2VyaWFsL2RldmljZSBmb3IgQ0QtUk9NUy4KCgkqIGRvY3VtZW50YXRpb24vZmFxLnNnbWw6IFRvbSBXaWNrbGluZSA8dHdpY2tsaW5lQHNreWJlc3QuY29tPgoJTWVyZ2UgZnJvbSBsb3N0d2FnZXMgZmFxLgoKCSogZG9jdW1lbnRhdGlvbi90ZXN0aW5nLnNnbWw6IEZlcmVuYyBXYWduZXIgPHdmZXJpQGFmYXZhbnQuZWx0ZS5odT4KCUZpeCB0ZXN0aW5nIGV4YW1wbGUuCgoJKiBkb2N1bWVudGF0aW9uL1BBQ0tBR0lORywgZG9jdW1lbnRhdGlvbi9jb25maWd1cmluZy5zZ21sOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJQnJpbmcgZG9jdW1lbnRhdGlvbiBpbiBzeW5jIHJlZ2FyZGluZyBleHBhbnNpb24gb2YgZW52aXJvbm1lbnQKCXZhcmlhYmxlcyBpbiB0aGUgY29uZmlnIGZpbGUuCgoJKiB0b29scy93aW5laW5zdGFsbDogVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJQnJpbmcgd2luZWluc3RhbGwgaW4gc3luYyByZWdhcmRpbmcgZXhwYW5zaW9uIG9mIGVudmlyb25tZW50IHZhcmlhYmxlcwoJaW4gdGhlIGNvbmZpZyBmaWxlLgoKCSogaW5jbHVkZS9jb21tY3RybC5oLCBpbmNsdWRlL2RiZ2hlbHAuaCwgaW5jbHVkZS93aW5iYXNlLmg6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCUFkZGVkIGEgZmV3IG1pc3NpbmcgZGVmaW5pdGlvbnMuCgoJKiBmaWxlcy9kb3NfZnMuYzogU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtTGluZS5jb20+CglNb3ZlZCBpbXBsZW1lbnRhdGlvbiBvZiBRdWVyeURvc0RldmljZSBmcm9tIGFzY2lpIHRvIHVuaWNvZGUuCgoJKiBkbGxzL3NoZWxsMzIvc2hsZmlsZW9wLmM6CglSb2xmIEthbGJlcm1hdHRlciA8cm9sZi5rYWxiZXJtYXR0ZXJAY2l0ZW5nLmNvbT4KCU1ha2UgdGhlIGRpZmZlcmVudCBoZWxwZXIgZnVuY3Rpb25zIGFsbCByZXR1cm4gYWN0dWFsIGVycm9yIGNvZGVzLgoJQXZvaWQgY29kZSBkdXBsaWNhdGlvbiBiZXR3ZWVuIEFOU0kgYW5kIFVuaWNvZGUgdmFyaWFudCBvZiB0aG9zZQoJZnVuY3Rpb25zLgoKCSogZGxscy93aW5zb2NrL2FzeW5jLmMsIGRsbHMvd2luc29jay9zb2NrZXQuYzoKCVJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCV93c19nZXRob3N0YnluYW1lKCkgYW5kIFdTQUFzeW5jR2V0SG9zdEJ5TmFtZSgpIHdoZW4gY2FsbGVkIHdpdGggYQoJbnVsbCBuYW1lLCBzaG91bGQgdXNlIHRoZSBuYW1lIHJldHVybmVkIGJ5IGdldGhvc3RuYW1lKCkuCgoJKiBkbGxzL21zdmlkZW8vbXN2aWRlb19tYWluLmM6CglNaWNoYWVsIEf8bm5ld2lnIDxNaWNoYWVsR3Vlbm5ld2lnQGdteC5kZT4KCS0gSW1wbGVtZW50ZWQgc2VtaS1zdHVicyBmb3IgR2V0T3BlbkZpbGVOYW1lUHJldmlld0EvVyBhbmQKCSAgR2V0U2F2ZUZpbGVOYW1lUHJldmlld0EvVyBiYXNlZCBvbiBHZXRPcGVuRmlsZU5hbWUgZGlhbG9nIGluCgkgIENPTURMRzMyLkRMTCAtIHN0aWxsIG11c3QgYWRkIE9GTl9FTkFCTEVIT09LIGFuZCBpdCdzIGhhbmRsZXIuCgktIEltcGxlbWVudGVkIElDQ29tcHJlc3NvckZyZWUuCgktIFByZXBhcmVkIElDQ29tcHJlc3NvckNob29zZS4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYywgZGxscy9jb21tZGxnL2ZpbGVkbGdicm93c2VyLmMsCgkgIGRsbHMvY29tbWRsZy9maWxlZGxnYnJvd3Nlci5oLCBkbGxzL3NoZWxsMzIvYnJzZm9sZGVyLmMsCgkgIGRsbHMvc2hlbGwzMi9jaGFuZ2Vub3RpZnkuYywgZGxscy9zaGVsbDMyL2RhdGFvYmplY3QuYywKCSAgZGxscy9zaGVsbDMyL2RlYnVnaGxwLmMsIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYywKCSAgZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3BpZGwuaCwKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsCgkgIGRsbHMvc2hlbGwzMi9zaGZsZHIuaCwgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jLAoJICBkbGxzL3NoZWxsMzIvc2hsbWVudS5jLCBkbGxzL3NoZWxsMzIvc2hsdmlldy5jLAoJICBkbGxzL3NoZWxsMzIvc2h2X2JnX2NtZW51LmMsIGRsbHMvc2hlbGwzMi9zaHZfaXRlbV9jbWVudS5jLAoJICBkbGxzL3NoZWxsMzIvdW5kb2NzaGVsbC5oLCBpbmNsdWRlL3NobG9iai5oOgoJTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCURlY2xhcmUgTFBDSVRFTUlETElTVCBhcyAnY29uc3QnIHBvaW50ZXIgYW5kIGFkanVzdCBzaGVsbDMyCglpbXBsZW1lbnRhdGlvbiB0byB0aGUgY29ycmVjdGVkIHR5cGUuCgoJKiBkbGxzL3dpbmVkb3MvaW50MzMuYzogTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5kZT4KCWludDMzIDIxaCBpcyBpZGVudGljYWwgdG8gaW50MzMgMDBoLgoKCSogaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9tc3ZjcnQvbGltaXRzLmgsIGluY2x1ZGUvbXN2Y3J0L21hdGguaDoKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCUFkZGVkIG1zdmNydCBoZWFkZXJzIGxpbWl0cy5oIGFuZCBtYXRoLmguCgoJKiBwcm9ncmFtcy93aW5lbGF1bmNoZXIuaW46IE1hcmN1cyBNZWlzc25lciA8bWVpc3NuZXJAc3VzZS5kZT4KCUNoYW5nZSBhbGwgaGVhZCAtMSB0byBoZWFkIC1uIDEgdG8gYmUgbW9yZSBQT1NJWGx5IGNvbXBsaWFudC4KCgkqIGRsbHMvY29tY3RsMzIvdGFiLmM6IE1heGltZSBCZWxsZW5n6SA8bWF4aW1lLmJlbGxlbmdlQGxhcG9zdGUubmV0PgoJSW1wbGVtZW50ZWQgVEFCX1NldE1pblRhYldpZHRoIGFuZCBUQUJfSGlnaGxpZ2h0SXRlbS4KCgkqIGRsbHMvZHNvdW5kL2J1ZmZlci5jLCBkbGxzL2Rzb3VuZC9kc291bmRfcHJpdmF0ZS5oLCBkbGxzL2Rzb3VuZC9zb3VuZDNkLmM6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJTm93IHRoYXQgcmVmZXJlbmNlIGNvdW50aW5nIGlzIGNvcnJlY3QsIHRoZXJlIGlzIG5vIG5lZWQgdG8gY2hlY2sgaWYKCXRoZSBiYXNlIG9iamVjdCBnb2VzIGF3YXkuCgoJKiBkbGxzL2lwaGxwYXBpL2lwc3RhdHMuYzogSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJRml4ZWQgYnVnIHBhcnNpbmcgL3Byb2MvbmV0L2FycCBmb3IgYXJwIHRhYmxlLgoKCSogZGxscy93c29jazMyL3NvY2tldC5jOiBKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglJbXBsZW1lbnRlZCBhcnAgdGFibGUgcXVlcnlpbmcgdGhyb3VnaCBXc0NvbnRyb2wsIGFuZCBmaXhlZCBwcm9ibGVtIEkKCWludHJvZHVjZWQgZ2V0dGluZyBJUCBhZGRyZXNzZXMgZm9yIG11bHRpcGxlIGludGVyZmFjZXMuCgoJKiBkbGxzL2F2aWZpbDMyL2FwaS5jLCBkbGxzL2F2aWZpbDMyL2F2aWZpbGUuYywKCSAgZGxscy9hdmlmaWwzMi9nZXRmcmFtZS5jLCBpbmNsdWRlL3Zmdy5oOgoJTWljaGFlbCBH/G5uZXdpZyA8TWljaGFlbEd1ZW5uZXdpZ0BnbXguZGU+CgktIEltcGxlbWVudGVkIEFWSVN0cmVhbUJlZ2luU3RyZWFtaW5nIGFuZCBBVklTdHJlYW1FbmRTdHJlYW1pbmcuCgktIEZpeGVkIGxvYWRpbmcgb2YgZW1wdHkgQVZJIGZpbGVzLgoJLSBGaXhlZCBidWcgaW4gSUdldEZyYW1lIGludGVyZmFjZSB3aXRoIHVuY29tcHJlc3NlZCBzdHJlYW1zLgoJLSBGaXhlZCBtaXNzaW5nIElDT01fREVGSU5FIGZvciBJQVZJU3RyZWFtaW5nLgoKCSogZGxscy9rZXJuZWwvZm9ybWF0X21zZy5jOiBKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglGaXggRm9ybWF0TWVzc2FnZSB3aGVuIEZPUk1BVF9NRVNTQUdFX0ZST01fSE1PRFVMRSBpcyBzcGVjaWZpZWQgYW5kCglscFNvdXJjZSBpcyBOVUxMLiAgTWFrZSBpbmRlbnRpbmcgY29uc2lzdGVudCB0b28uCgoJKiBkbGxzL2QzZDgvZDNkOF9tYWluLmMsIGRsbHMvZDNkOC9kaXJlY3R4LmM6CglKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJVXNlIGEgZHVtbXkgR0wgY29udGV4dCBpZiBvbmUgaXMgbm90IGF2YWlsYWJsZSB3aGVuIEdldERldmljZUNhcHMgaXMKCWNhbGxlZC4KCVJlbW92ZSB0aGUgY29tcGlsZXIgd2FybmluZ3MgaW50cm9kdWNlZCBpbiB0aGUgbGFzdCBEWFRuIHBhdGNoLgoKCSogZGxscy93aW5lZG9zL2ludDIwLmMsIGRsbHMvd2luZWRvcy9pbnQyMS5jLCBkbGxzL3dpbmVkb3MvaW50MzEuYywKCSAgZGxscy93aW5lZG9zL21vZHVsZS5jOgoJSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJTWFrZSBET1MgcHJvY2VzcyBleGl0IHVzaW5nIEV4aXRQcm9jZXNzIGluc3RlYWQgb2YgRXhpdFRocmVhZC4KCU1ha2UgY2FsbGluZyBET1MgZXhpdCBmdW5jdGlvbnMgZnJvbSBEUE1JIGVpdGhlciByZXR1cm4gdG8gU3RhcnRQTSBvcgoJcHJpbnQgZXJyb3IgbWVzc2FnZSBpZiBub3QgYWxsb3dlZCBieSBEUE1JIHNwZWNpZmljYXRpb24uCgoyMDAzLTA5LTAxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogdG9vbHMvd3JjL01ha2VmaWxlLmluOiBWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglGaXhlZCB0eXBvLgoKCSogZGxscy9kc291bmQvdGVzdHMvZHNvdW5kLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglBZGRlZCBtb3JlIHRlc3RzIGFuZCByZXN0cnVjdHVyZWQgdGVzdHMgZm9yIGVhc2llciBkZWJ1Z2dpbmcuCgoJKiBkbGxzL2Rzb3VuZC9idWZmZXIuYywgZGxscy9kc291bmQvY2FwdHVyZS5jLAoJICBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jLCBkbGxzL2Rzb3VuZC9kc291bmRfcHJpdmF0ZS5oLAoJICBkbGxzL2Rzb3VuZC9taXhlci5jLCBkbGxzL2Rzb3VuZC9wcmltYXJ5LmMsIGRsbHMvZHNvdW5kL3Byb3BzZXQuYywKCSAgZGxscy9kc291bmQvc291bmQzZC5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUFkZGVkIFNlY29uZGFyeUJ1ZmZlciBhbmQgRGlyZWN0U291bmRDYXB0dXJlTm90aWZ5IENPTSBvYmplY3RzIHRvIGdldAoJcmVmZXJlbmNlIGNvdW50aW5nIHJpZ2h0LgoKCSogZGxscy9tc2kvbXNpLmMsIGRsbHMvbXNpL21zaS5zcGVjOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQWRkZWQgYSBmZXcgc3R1YiBpbXBsZW1lbnRhdGlvbnMuCgoJKiBkbGxzL2tlcm5lbC9uZV9tb2R1bGUuYzoKCURvbid0IHN0cmlwIHRoZSBwYXRoIGluIExvYWRNb2R1bGUxNiBiZWZvcmUgd2UgaGF2ZSBvcGVuZWQgdGhlIGZpbGUKCShyZXBvcnRlZCBieSBKdWtrYSBIZWlub25lbikuCgoJKiBkbGxzL3dpbmVkb3MvZG9zdm0uYzogSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJQWRkIHN1cHBvcnQgZm9yIHNwZWNpZmljIEVPSSBQSUMgY29tbWFuZC4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUlmIHdlIGRvbid0IHNlbmQgY3VzdG9tIGRyYXcgbWVzc2FnZXMgZm9yIHN1Yml0ZW1zLCBpbmhlcml0IHRoZSBjb2xvcgoJJiB0ZXh0IGF0dHJpYnV0ZXMgb2YgdGhlIG1haW4gaXRlbS4KCgkqIGluY2x1ZGUvd2ludXNlci5oOiBNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJRGVmaW5lIElDT05fU01BTEwyIGFuZCBTaG93V2luZG93QXN5bmMoKS4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaDogTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCURlZmluZSBUQklGX0JZSU5ERVguCgoyMDAzLTA4LTMwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogcHJvZ3JhbXMvd2luZWNmZy9Fbi5yYywgcHJvZ3JhbXMvd2luZWNmZy9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvd2luZWNmZy9kcml2ZS5jLCBwcm9ncmFtcy93aW5lY2ZnL21haW4uYywKCSAgcHJvZ3JhbXMvd2luZWNmZy9wcm9wZXJ0aWVzLmgsIHByb2dyYW1zL3dpbmVjZmcvcmVzb3VyY2UuaCwKCSAgcHJvZ3JhbXMvd2luZWNmZy93aW5lY2ZnLmMsIHByb2dyYW1zL3dpbmVjZmcvd2luZWNmZy5oOgoJTWFyayBXZXN0Y290dCA8bWFya0Bob3VzZW9mZmlzaC5vcmc+CglNaWtlIEhlYXJuIDxtaWtlQHRoZW9yZXRpYy5jb20+CgktIE1lcmdlIGRyaXZlIGNvZGUgZnJvbSBNYXJrLgoJLSBSZW5hbWUgc2F2ZVgxMURydkRsZ1NldHRpbmdzIHRvIGZldGNoWDExRHJ2RGxnU2V0dGluZ3MuCgktIE1ha2UgdGhlIGxpc3Rib3ggZGlzcGxheSBkcml2ZSB0aXRsZSwgbm90IGxldHRlci4KCgkqIHByb2dyYW1zL3dpbmVjZmcvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmVjZmcvbWFpbi5jLAoJICBwcm9ncmFtcy93aW5lY2ZnL3Byb3BlcnRpZXMuaCwgcHJvZ3JhbXMvd2luZWNmZy93aW5lY2ZnLmMsCgkgIHByb2dyYW1zL3dpbmVjZmcvd2luZWNmZy5oLCBwcm9ncmFtcy93aW5lY2ZnL3gxMWRydmRsZy5jOgoJTWFyayBXZXN0Y290dCA8bWFya0Bob3VzZW9mZmlzaC5vcmc+CglNaWtlIEhlYXJuIDxtaWtlQHRoZW9yZXRpYy5jb20+CgktIFJlbmFtZSBoU2Vzc2lvbiB0byBjb25maWdLZXkuCgktIE1ha2UgdGhlIGNvbmZpZyBzdHJ1Y3QgYSBnbG9iYWwsIHJlbmFtZSB0byAiY29uZmlnIi4KCS0gQ29ycmVjdCBidWcgaW4gT0svQ2FuY2VsIGhhbmRsaW5nLgoJLSBNZXJnZSBYMTFEUlYgZGlhbG9nIGNvZGUgZnJvbSBNYXJrLgoJLSBBZGQgbmV3bGluZSB0byB0aGUgaW5pdGlhbCBGSVhNRS4KCgkqIHByb2dyYW1zL3dpbmVjZmcvRW4ucmMsIHByb2dyYW1zL3dpbmVjZmcvbWFpbi5jLAoJICBwcm9ncmFtcy93aW5lY2ZnL3dpbmVjZmcuYywgcHJvZ3JhbXMvd2luZWNmZy93aW5lY2ZnLmg6CglNaWtlIEhlYXJuIDxtaWtlQHRoZW9yZXRpYy5jb20+CgktIENvcnJlY3QgcmV0dXJuIGNvZGUgb2YgbG9hZENvbmZpZygpLgoJLSBNYWtlIHRoZSByZWdpc3RyeSBrZXkgdXNlZCBhIGNvbnN0YW50LgoJLSBNYWRlIGNvZGUgc2xpZ2h0bHkgbW9yZSBjb25zaXN0YW50IHdpdGggaXRzZWxmLgoJLSBTb21lIHN0eWxlIGNoYW5nZXMsIGV4cGFuZGluZyBvdXQgdmFyaWFibGUgbmFtZXMsIHdoaXRlc3BhY2UsCgkgIHJlbW92aW5nIHVubmVjZXNzYXJ5IHZhcmlhYmxlIGluaXRpYWxpemVycyBhbmQgaHVuZ2FyaWFuIG5vdGF0aW9uIGV0Yy4KCS0gUmVwbGFjZSBkaWFsb2cgYm94IHdpdGggYSBGSVhNRSBpbiBXaW5NYWluKCkgdG8gd2FybiBvZgoJICBpbmNvbXBsZXRlbmVzcy4KCS0gSW1wbGVtZW50IHNhdmVDb25maWdWYWx1ZSgpLgoJLSBIb29rIHVwIHN1cHBvcnQgZm9yIHNhdmUvbG9hZCBvZiBXaW5WZXIuCgoJKiBwcm9ncmFtcy9yZWdlZGl0L0VuLnJjLCBwcm9ncmFtcy9yZWdlZGl0L0VzLnJjLAoJICBwcm9ncmFtcy9yZWdlZGl0L1NpLnJjLCBwcm9ncmFtcy9zdGFydC9Fbi5yYywgcHJvZ3JhbXMvc3RhcnQvUHQucmMsCgkgIHByb2dyYW1zL3N0YXJ0L1J1LnJjLCBwcm9ncmFtcy93aW5lY2ZnL0VuLnJjLCBwcm9ncmFtcy93aW5lY2ZnL0VzLnJjLAoJICBwcm9ncmFtcy93aW5lY2ZnL1B0LnJjLCBwcm9ncmFtcy93aW5lY2ZnL1NpLnJjLAoJICBwcm9ncmFtcy93aW5lY2ZnL3dpbmVjZmcucmMsIHByb2dyYW1zL3dpbmVmaWxlL0RlLnJjLAoJICBwcm9ncmFtcy93aW5lZmlsZS9Fbi5yYywgcHJvZ3JhbXMvd2luZWZpbGUvRnIucmMsCgkgIHByb2dyYW1zL3dpbmVmaWxlL0h1LnJjLCBwcm9ncmFtcy93aW5lZmlsZS9SdS5yYywKCSAgcHJvZ3JhbXMvd2luZWZpbGUvU2kucmMsIHByb2dyYW1zL3dpbmVmaWxlL1poLnJjOgoJUmVtb3ZlZCB3cm9uZyBvciB1bm5lZWRlZCBjb2RlcGFnZSBwcmFnbWFzLgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jOiBKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CgktIGltcHJvdmUgc29tZSBwYXJhbWV0ZXIgY2hlY2tpbmcgaW4gV1NBSW9jdGwKCS0gZml4IGEgbWVtb3J5IGxlYWsgSSBpbnRyb2R1Y2VkIGluIFdTQUlvY3RsCgoJKiBkbGxzL2dkaS9tZmRydi9pbml0LmMsIGRsbHMvZ2RpL21mZHJ2L21ldGFmaWxlZHJ2LmgsCgkgIGRsbHMvZ2RpL21mZHJ2L29iamVjdHMuYywgb2JqZWN0cy9wYWxldHRlLmM6CglEYXZlIEJlbGFuZ2VyIDxkYXZlLmJlbGFuZ2VyQGNpbW1ldHJ5LmNvbT4KCUltcGxlbWVudGF0aW9uIG9mIFNlbGVjdFBhbGV0dGUgYW5kIFJlYWxpemVQYWxldHRlIGluIHRoZSBtZXRhZmlsZQoJZHJpdmVyLgoKCSogZGxscy9nZGkvbWZkcnYvZGMuYzogV2FycmVuIEJhaXJkIDxXYXJyZW5fQmFpcmRAY2ltbWV0cnkuY29tPgoJU2F2ZSB0aGUgZXh0IGFsaWdubWVudCBpbmZvcm1hdGlvbiBpbiBhIDgtYnl0ZXMgbWV0YXJlY29yZCBhcyBpdAoJc2hvdWxkIGJlLgoKMjAwMy0wOC0yOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbnRkbGwvc3lzZGVwcy5jLCBpbmNsdWRlL3RocmVhZC5oLCBpbmNsdWRlL3dpbmUvbGlicmFyeS5oLAoJICBsaWJzL3dpbmUvTWFrZWZpbGUuaW4sIGxpYnMvd2luZS9sb2FkZXIuYywgbGlicy93aW5lL3BvcnQuYywKCSAgc2NoZWR1bGVyL2ZpYmVyLmMsIHNjaGVkdWxlci9wcm9jZXNzLmM6CglFeHBvcnQgU1lTREVQU19Td2l0Y2hUb1RocmVhZFN0YWNrKCkgZnVuY3Rpb25hbGl0eSBmcm9tIGxpYndpbmUgYXMKCXdpbmVfc3dpdGNoX3RvX3N0YWNrKCkuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bF9TaS5yYywgZGxscy9jb21tZGxnL2NkbGdfU2kucmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX1NpLnJjLCBkbGxzL3dpbmluZXQvcnNyYy5yYywKCSAgZGxscy93aW5pbmV0L3dpbmluZXRfU2kucmMsIGRsbHMvd2lubW0vd2lubW1fU2kucmMsCgkgIHByb2dyYW1zL2Nsb2NrL1NpLnJjLCBwcm9ncmFtcy9jbWRsZ3RzdC9TaS5yYywKCSAgcHJvZ3JhbXMvY21kbGd0c3QvY21kbGdyLnJjLCBwcm9ncmFtcy9ub3RlcGFkL1NpLnJjLAoJICBwcm9ncmFtcy9wcm9nbWFuL1NpLnJjLCBwcm9ncmFtcy9zdGFydC9TaS5yYywgcHJvZ3JhbXMvc3RhcnQvcnNyYy5yYywKCSAgcHJvZ3JhbXMvdmlldy9TaS5yYywgcHJvZ3JhbXMvdmlldy92aWV3cmMucmMsIHByb2dyYW1zL3djbWQvU2kucmMsCgkgIHByb2dyYW1zL3djbWQvd2NtZHJjLnJjLCBwcm9ncmFtcy93aW5lY2ZnL1NpLnJjLAoJICBwcm9ncmFtcy93aW5lY2ZnL3dpbmVjZmcucmMsIHByb2dyYW1zL3dpbmVmaWxlL1NpLnJjLAoJICBwcm9ncmFtcy93aW5lZmlsZS9yc3JjLnJjLCBwcm9ncmFtcy93aW5lbWluZS9TaS5yYywKCSAgcHJvZ3JhbXMvd2luZW1pbmUvcnNyYy5yYzoKCVJvayBNYW5kZWxqYyA8cm9rLm1hbmRlbGpjQGdpbWIub3JnPgoJTWlub3IgdXBkYXRlcyBvZiBTbG92ZW5pYW4gdHJhbnNsYXRpb25zLgoKCSogZGxscy93c29jazMyL3NvY2tldC5jLCBkbGxzL3dzb2NrMzIvd3Njb250cm9sLmg6CglKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CgktIGltcHJvdmUgV3NDb250cm9sIGVycm9yIGNoZWNraW5nCgktIG1ha2UgV3NDb250cm9sIG91dHB1dCBtb3JlIGNsb3NlbHkgbWF0Y2ggV2luOTgncwoJLSBkb2N1bWVudCBXc0NvbnRyb2wgYmVoYXZpb3IgYSBiaXQgYmV0dGVyCgoJKiBkbGxzL3dpbmVkb3MvaW50MzMuYzogSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJV29ya2Fyb3VuZCBpbXBsZW1lbnRlZCBmb3IgcGFzc2luZyBmYWtlZCBtaWNrZXlzIHRvIG1vdXNlIGNhbGxiYWNrCglyb3V0aW5lLgoKCSogZGxscy93aW5lZG9zL3ZnYS5jOiBKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglBbGxvdyBhcHBsaWNhdGlvbiB0byB1c2UgVkdBIHdpbmRvdyB0aGF0IG92ZXJsYXBzIGZyYW1lYnVmZmVyIG9ubHkKCXBhcnRpYWxseS4KCgkqIGRsbHMvbXNpL21zaS5zcGVjOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQWRkZWQgc29tZSBtaXNzaW5nIGZ1bmN0aW9ucy4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOiBNaWtlIEhlYXJuIDxtaWtlQHRoZW9yZXRpYy5jb20+CglGaXhlZCB0aGUgZXJyb3IgbWVzc2FnZSBpbiBXYXZlKElufE91dClJbml0LCBpdCB1c2VkIHRvIGdpdmUgYQoJY29uZnVzaW5nIG1lc3NhZ2UsIG5vdyB1c2VzIHN0cmVycm9yLgoKCSogZGxscy9zaGVsbDMyL2NoYW5nZW5vdGlmeS5jLCBkbGxzL3NoZWxsMzIvdW5kb2NzaGVsbC5oOgoJUm9sZiBLYWxiZXJtYXR0ZXIgPHJvbGYua2FsYmVybWF0dGVyQGNpdGVuZy5jb20+CglDaGFuZ2UgcHJvdG95cGUgb2YgU0hDaGFuZ2VOb3RpZnlSZWdpc3RlciB0byB3aGF0IE1TRE4gc2F5cy4KCVJlbW92ZSBhbiB1bnNpZ25lZCBtaXNtYXRjaCB3YXJuaW5nLgoKCSogZGxscy9udGRsbC9udC5jOiBKb2huIEsuIEhvaG0gPGpob2htQGFjbS5vcmc+CglTZXQgU0VfR1JPVVBfRU5BQkxFRCBpbiBBdHRyaWJ1dGVzIG9mIEFkbWluaXN0cmF0b3JzIFNJRCBkdXJpbmcKCU50UXVlcnlJbmZvcm1hdGlvblRva2VuIGZvciBUb2tlbkdyb3Vwcy4KCgkqIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmM6IE1pa2UgSGVhcm4gPG1pa2VAdGhlb3JldGljLmNvbT4KCUF2b2lkIGRpdmlzaW9uIGJ5IHplcm8gd2hlbiB0aGUgaW1hZ2VsaXN0IGlzIGNyZWF0ZWQgd2l0aCBhIHdpZHRoIG9mCgl6ZXJvIChpZSBubyBpbWFnZXMpLgoKCSogZGxscy9vbGUzMi9iaW5kY3R4LmM6CglSb2xmIEthbGJlcm1hdHRlciA8cm9sZi5rYWxiZXJtYXR0ZXJAY2l0ZW5naW5lZXJpbmcuY29tPgoJTWFrZSBzdXJlIHRoZSBwYXNzZWQgaW4gb2JqZWN0IHBvaW50ZXIgaXMgb25seSBhZGRyZWZlZCBvbiBzdWNjZXNzLgoKMjAwMy0wOC0yOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlcGljdHVyZS5jOiBXYXJuaW5nIGZpeC4KCgkqIGluY2x1ZGUvKi5oOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVVzZSBhbmdsZSBicmFja2V0cyAoPD4pIHJhdGhlciB0aGFuIHF1b3RlcyAoIiIpIGZvciB0aGUgaW5jbHVkZQoJZGlyZWN0aXZlcyBpbiBvdXIgLmggZmlsZXMuIFRoaXMgc2hvdWxkIGF2b2lkIHNvbWUgcG90ZW50aWFsbHkgbmFzdHkKCXN1cnByaXNlcyBmb3IgV2luZWxpYiBhcHBzLgoKCSogZGxscy9rZXJuZWwvY2hhbmdlLmMsIGRsbHMva2VybmVsL3Byb2Nlc3MuYywgZGxscy9tc3ZjcnQvZXhjZXB0LmMsCgkgIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmMsIGRsbHMvbnRkbGwvdGhyZWFkLmMsIGRsbHMvbnRkbGwvdmlydHVhbC5jLAoJICBkbGxzL29sZTMyL2NvbXBvYmpfcHJpdmF0ZS5oLCBkbGxzL3VzZXIvbXNnMTYuYywKCSAgZGxscy91c2VyL3VzZXJfbWFpbi5jLCBkbGxzL3dpbmVkb3MvZG9zdm0uYywgZGxscy93aW5zb2NrL3NvY2tldC5jLAoJICBpbmNsdWRlL2FzeW5jLmgsIGluY2x1ZGUvdGhyZWFkLmgsIGluY2x1ZGUvd2luZS9zZXJ2ZXIuaCwKCSAgaW5jbHVkZS93aW50ZXJubC5oLCBsb2FkZXIvbW9kdWxlLmMsIG1lbW9yeS9lbnZpcm9uLmMsCgkgIHRvb2xzL3dpbmVidWlsZC9zcGVjMTYuYywgd2luZG93cy9tZXNzYWdlLmM6CglTdGFydCB1c2luZyB0aGUgZXhwb3J0ZWQgVEVCIHN0cnVjdHVyZSBmcm9tIHdpbnRlcm5sLmggd2hlcmUKCXBvc3NpYmxlLgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliLmM6IE1pa2UgSGVhcm4gPG1pa2VAdGhlb3JldGljLmNvbT4KCUltcGxlbWVudGVkIGEgdHlwZWxpYiBsb2FkZXIgY2FjaGUuCgoJKiBpbmNsdWRlL29iamJhc2UuaDogRGF2ZSBCZWxhbmdlciA8ZGF2ZS5iZWxhbmdlckBjaW1tZXRyeS5jb20+CglBZGRlZCBDb0Rpc2Nvbm5lY3RPYmplY3QgYW5kIENvUmVnaXN0ZXJNZXNzYWdlRmlsdGVyIHByb3RvdHlwZXMuCgoJKiBwcm9ncmFtcy93aW5lZmlsZS93aW5lZmlsZS5jOiBEb24ndCB1c2UgYWxsb2NhLgoKCSogZGxscy9udGRsbC9zaWduYWxfc3BhcmMuYzogRGF2ZSBCZWxhbmdlciA8ZGF2ZS5iZWxhbmdlckBjaW1tZXRyeS5jb20+CglGaXhlZCBhIGNvbXBpbGUgZXJyb3IuCgoJKiBpbmNsdWRlL2Rzb3VuZC5oOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQWRkZWQgc3BlYWtlciBjb25maWcgbWFjcm9zLgoKCSogaW5jbHVkZS91dWlkcy5oOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBZGQgQ0xTSURfSFRNTERvY3VtZW50LgoKCSogaW5jbHVkZS91cmxtb24uaDogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRGVmaW5lIHRoZSBJUGVyc2lzdE1vbmlrZXIgaW50ZXJmYWNlLgoKCSogZGxscy9tc3ZjcnQvZXhjZXB0LmMsIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmMsIGRsbHMvbnRkbGwvc3lzZGVwcy5jLAoJICBpbmNsdWRlL3RocmVhZC5oLCBzY2hlZHVsZXIvZmliZXIuYywgc2NoZWR1bGVyL3RocmVhZC5jLAoJICB0b29scy93aW5lYnVpbGQvcmVsYXkuYzoKCVJlbmFtZWQgYSBmZXcgbW9yZSBURUIgZmllbGRzLgoKCSogZGxscy9rZXJuZWwvd293dGh1bmsuYywgZGxscy9tc3ZjcnQvY3BwZXhjZXB0LmMsCgkgIGRsbHMvbXN2Y3J0L2NwcGV4Y2VwdC5oLCBkbGxzL21zdmNydC9leGNlcHQuYywKCSAgZGxscy9udGRsbC9leGNlcHRpb24uYywgaW5jbHVkZS9zdGFja2ZyYW1lLmgsIGluY2x1ZGUvdGhyZWFkLmgsCgkgIGluY2x1ZGUvd2lubnQuaCwgaW5jbHVkZS93aW5lL2V4Y2VwdGlvbi5oLCBwcm9ncmFtcy93aW5lZGJnL2luZm8uYzoKCVJlbmFtZWQgRVhDRVBUSU9OX0ZSQU1FIHRvIEVYQ0VQVElPTl9SRUdJU1RSQVRJT05fUkVDT1JEIHNpbmNlIHRoYXQKCXNlZW1zIHRvIGJlIHRoZSBvZmZpY2lhbCBuYW1lLgoKCSogc2NoZWR1bGVyL3B0aHJlYWQuYzoKCUFkZGVkIG1pc3NpbmcgZnVuY3Rpb25zIGZvciBwbGF0Zm9ybXMgdGhhdCBkb24ndCBidWlsZCB0aGUgcHRocmVhZHMKCWVtdWxhdGlvbiAocmVwb3J0ZWQgYnkgVG9kZCBWaWVybGluZykuCgoyMDAzLTA4LTI3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9rZXJuZWwvdGFzay5jLCBkbGxzL2tlcm5lbC93b3d0aHVuay5jLCBkbGxzL250ZGxsL2RlYnVndG9vbHMuYywKCSAgZGxscy9udGRsbC9sb2FkZXIuYywgZGxscy9udGRsbC9zeXNkZXBzLmMsIGRsbHMvbnRkbGwvdmlydHVhbC5jLAoJICBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGUzMi9jb21wb2JqX3ByaXZhdGUuaCwgaW5jbHVkZS90aHJlYWQuaCwKCSAgaW5jbHVkZS93aW50ZXJubC5oLCBzY2hlZHVsZXIvY2xpZW50LmMsIHNjaGVkdWxlci9maWJlci5jLAoJICBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzY2hlZHVsZXIvc3lzbGV2ZWwuYywgc2NoZWR1bGVyL3RocmVhZC5jOgoJUmVuYW1lZCBhIGZldyBURUIgZmllbGRzIHRvIHVzZSB0aGUgIm9mZmljaWFsIiBuYW1lcy4KCgkqIGRsbHMvc2V0dXBhcGkvTWFrZWZpbGUuaW4sIGRsbHMvc2V0dXBhcGkvc2V0dXBhcGlfcHJpdmF0ZS5oLAoJICBkbGxzL3NldHVwYXBpL3NldHVwY2FiLmMsIGRsbHMvc2V0dXBhcGkvc2V0dXB4X21haW4uYywKCSAgZGxscy9zZXR1cGFwaS9zdHVicy5jLCBpbmNsdWRlL3NldHVwYXBpLmg6CglHcmVnb3J5IE0uIFR1cm5lciA8Z210dXJuZXIwMDdAYW1lcml0ZWNoLm5ldD4KCUltcGxlbWVudCAobW9zdCBvZikgU2V0dXBJdGVyYXRlQ2FiaW5ldC4KCgkqIHByb2dyYW1zL3djbWQvd2NtZG1haW4uYzogT2xlZyBQcm9raG9yb3YgPHhvbGVncHJvQHJiY21haWwucnU+CglObyBoYW5kbGVzIHdlcmUgaW5oZXJpdGVkIGluIENyZWF0ZVByb2Nlc3MsIGFsbCBjaGlsZCBjb25zb2xlIHByb2dyYW1zCgl3ZXJlIHNpbGVudC4KCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJRW5zdXJlIHJlZGlyZWN0ZWQgc3RyZWFtIGhhbmRsZSBmb3IgY2hpbGQgcHJvY2VzcyBhcmUgYWN0dWFsbHkKCWluaGVyaXRhYmxlLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6IER1YW5lIENsYXJrIDxkY2xhcmtAYWthbWFpbC5jb20+CglCdXR0b24gd2lkdGggc2hvdWxkIGJlIHRoZSBsYXJnZXIgb2YgdGV4dCB3aWR0aC9iaXRtYXAgd2lkdGguCgoJKiBsaWJzL3dpbmUvbG9hZGVyLmM6IFRvZGQgVmllcmxpbmcgPHR2QHBvYm94LmNvbT4KCVVzZSBNQVBfVFJZRklYRUQgb24gTmV0QlNEIGlmIGF2YWlsYWJsZS4KCgkqIGRsbHMva2VybmVsL25lX21vZHVsZS5jLCBkbGxzL2tlcm5lbC90YXNrLmMsIGRsbHMva2VybmVsL3RodW5rLmMsCgkgIGluY2x1ZGUvc3RhY2tmcmFtZS5oOgoJUmVtb3ZlZCBzb21lIG5vIGxvbmdlciBuZWVkZWQgZGVmaW5pdGlvbnMgZnJvbSBzdGFja2ZyYW1lLmguCgoJKiBkbGxzL2tlcm5lbC9rcm5sMzg2LmV4ZS5zcGVjLCBkbGxzL2tlcm5lbC93b3d0aHVuay5jOgoJQ29udmVydGVkIHJlbWFpbmluZyAxNi1iaXQgZnVuY3Rpb25zIHRvIHRoZSBuZXcgdmFyYXJncyBtZWNoYW5pc20uCgoJKiBkbGxzL250ZGxsL3NlYy5jLCBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmMsCgkgIGRsbHMvbnRkbGwvc2lnbmFsX3Bvd2VycGMuYywgZGxscy9udGRsbC9zaWduYWxfc3BhcmMuYywKCSAgZGxscy93aW5lZG9zL2Rvc3ZtLmMsIGRsbHMvd2luZWRvcy9pbnQzMS5jLCBkbGxzL3dpbmVkb3MvcmVsYXkuYywKCSAgbWVtb3J5L3NlbGVjdG9yLmMsIHJlbGF5MzIvcmVsYXkzODYuYywgc2NoZWR1bGVyL3N5c2xldmVsLmMsCgkgIHNjaGVkdWxlci90aHJlYWQuYywgd2luMzIvZGV2aWNlLmMsIHdpbjMyL2V4Y2VwdC5jLCB3aW5kb3dzL3dpbi5jOgoJQXZvaWQgaW5jbHVkaW5nIHN0YWNrZnJhbWUuaCBpZiBpdCdzIG5vdCBuZWVkZWQuCgoJKiBkbGxzL2tlcm5lbC9kZWJ1Z2dlci5jLCBkbGxzL2tlcm5lbC9rcm5sMzg2LmV4ZS5zcGVjLAoJICBkbGxzL2tlcm5lbC9yZWxheTE2LmMsIGRsbHMvbXN2aWRlby9tc3ZpZGVvLnNwZWMsCgkgIGRsbHMvbXN2aWRlby9tc3ZpZGVvMTYuYywgZGxscy9tc3ZpZGVvL3ZmdzE2LmgsCgkgIGRsbHMvdXNlci91c2VyLmV4ZS5zcGVjLCBkbGxzL3VzZXIvd3NwcmludGYuYywgaW5jbHVkZS9zdGFja2ZyYW1lLmgsCgkgIGluY2x1ZGUvd2luZS93aW5kZWYxNi5oLCBpbmNsdWRlL3dpbmUvd2ludXNlcjE2LmgsCgkgIHRvb2xzL3dpbmVidWlsZC9idWlsZC5oLCB0b29scy93aW5lYnVpbGQvcGFyc2VyLmMsCgkgIHRvb2xzL3dpbmVidWlsZC9zcGVjMTYuYywgdG9vbHMvd2luZWJ1aWxkL3dpbmVidWlsZC5tYW4uaW46CglBZGRlZCB2YXJhcmdzIHN1cHBvcnQgZm9yIDE2LWJpdCBlbnRyeSBwb2ludHMuCglBZGRlZCAtcmV0MTYgZW50cnkgcG9pbnQgZmxhZyB0byBhbGxvdyAxNi1iaXQgY2RlY2wgYW5kIHZhcmFyZ3MKCWZ1bmN0aW9uIHRvIHJldHVybiAxNi1iaXQgdmFsdWVzIHRvby4KCgkqIGRsbHMvZHBuaHBhc3QvbWFpbi5jLCBkbGxzL2Rzb3VuZC90ZXN0cy9wcm9wc2V0LmMsCgkgIGRsbHMvb3BlbmdsMzIvb3BlbmdsX25vcm0uYywgZGxscy90d2Fpbi90d2Fpbi5oLCBpbmNsdWRlL3dpbmRlZi5oLAoJICBpbmNsdWRlL3d0eXBlcy5pZGwsIHByb2dyYW1zL2NtZGxndHN0L2NtZGxndHN0LmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJUmVtb3ZlIHNvbWUgdW5uZWVkZWQgX19XSU5FU1JDX18gdGVzdHMgZnJvbSB0aGUgaGVhZGVycy4KCU1pc2NlbGxhbmVvdXMgY2xlYW51cHMgYW5kIGZpeGVzLgoKCSogREVWRUxPUEVSUy1ISU5UUzogTWlrZSBIZWFybiA8bWlrZUB0aGVvcmV0aWMuY29tPgoJVXBkYXRlIERMTCBsaXN0LCBhZGQgYSBsaW5rIHRvIG1zZG4uY29tLgoKMjAwMy0wOC0yNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC9wcm9maWxlLmMsCgkgIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sIGZpbGVzL2RpcmVjdG9yeS5jLCBmaWxlcy9kcml2ZS5jLAoJICBmaWxlcy9wcm9maWxlLmMsIGluY2x1ZGUvZmlsZS5oOgoJTW92ZWQgcHJvZmlsZSBmdW5jdGlvbnMgdG8gZGxscy9rZXJuZWwuCgoJKiBERVZFTE9QRVJTLUhJTlRTLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgdG9vbHMvd2luYXBpL21zdmNtYWtlciwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMuZGF0OgoJVGhlIGlmMTYzMiBkaXJlY3Rvcnkgbm8gbG9uZ2VyIGV4aXN0cy4KCgkqIGRsbHMva2VybmVsL2xvY2FsMTYuYywgbG9hZGVyL3Rhc2suYywgbWVtb3J5L2xvY2FsLmM6CglNb3ZlZCBhIGZldyBtb3JlIGZ1bmN0aW9ucyB0byBkbGxzL2tlcm5lbC4KCgkqIGRsbHMva2VybmVsLy5jdnNpZ25vcmUsIGRsbHMva2VybmVsL01ha2VmaWxlLmluLAoJICBkbGxzL2tlcm5lbC9uZV9tb2R1bGUuYywgZGxscy9rZXJuZWwvcmVsYXkxNi5jLAoJICBkbGxzL2tlcm5lbC9zbm9vcDE2LmMsIGRsbHMvbnRkbGwvLmN2c2lnbm9yZSwgZGxscy9udGRsbC9NYWtlZmlsZS5pbiwKCSAgbG9hZGVyL25lL21vZHVsZS5jOgoJTW92ZWQgMTYtYml0IHJlbGF5IGFuZCBzbm9vcCBzdXBwb3J0IHRvIGRsbHMva2VybmVsLgoKMjAwMy0wOC0yNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHByb2dyYW1zL3dpbmVjZmcvbWFpbi5jOiBNaWtlIEhlYXJuIDxtaWtlQHRoZW9yZXRpYy5jb20+CglXYXJuIHVzZXJzIG9mIHdpbmVjZmcgYWJvdXQgaXRzIGluY29tcGxldGVuZXNzLgoKCSogZGxscy9rZXJuZWwvd293dGh1bmsuYywgbWVtb3J5L2luc3RyLmMsIHRvb2xzL3dpbmVidWlsZC9yZWxheS5jOgoJTW92ZWQgc2VsZWN0b3IgZml4dXAgZm9yIHRoZSByZWxheSBjb2RlIHRvIHRoZSBjYWxsdG8xNiBleGNlcHRpb24KCWhhbmRsZXIuCglNYWtlIHN1cmUgdG8gb25seSB1c2UgcG9wIGluc3RydWN0aW9ucyB0byBtb2RpZnkgc2VnbWVudCByZWdpc3RlcnMgaW4KCXRoZSByZWxheSBjb2RlIHRvIHNpbXBsaWZ5IHRoZSBzZWxlY3RvciBmaXh1cC4KCgkqIGluY2x1ZGUvd2luZS9wb3J0LmgsIGxpYnMvcG9ydC9tZW1jcHlfdW5hbGlnbmVkLmM6CglEb24ndCBidWlsZCBtZW1jcHlfdW5hbGlnbmVkIG9uIDM4NiB0byBhdm9pZCBNU1ZDIGJyZWFrYWdlIChyZXBvcnRlZAoJYnkgSm9uIEdyaWZmaXRocykuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglBbHdheXMgc2V0dXAgdGhlIHNlbGVjdGlvbiBjb2xvdXIsIG5vdCBqdXN0IGluIGN1c3RvbSBkcmF3LgoKCSogZGxscy93aW5lZG9zL2RldmljZXMuYywgZGxscy93aW5lZG9zL2Rvc2FzcGkuYywKCSAgZGxscy93aW5lZG9zL2Rvc2V4ZS5oLCBkbGxzL3dpbmVkb3MvZG9zdm0uYywgZGxscy93aW5lZG9zL2ludDMxLmMsCgkgIGRsbHMvd2luZWRvcy9pbnQzMy5jLCBkbGxzL3dpbmVkb3MvaW50ZXJydXB0cy5jLAoJICBkbGxzL3dpbmVkb3MvbW9kdWxlLmM6CglKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglNYWtlIGFsbCB1c2VycyBvZiBET1NWTV9FbnRlciBleHBsaWNpdGx5IHNldCBWODYgZmxhZy4KCUZpeCBtb3VzZSByZWxheSBzdGFjayB1c2FnZSBpbiBwcm90ZWN0ZWQgbW9kZS4KCVJhdyBtb2RlIHN3aXRjaCBub3cgaGFuZGxlcyBpbnRlcnJ1cHQgZmxhZyBjb3JyZWN0bHkuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWxfbWFpbi5jLCBkbGxzL2tlcm5lbC9rZXJuZWxfcHJpdmF0ZS5oLAoJICBkbGxzL2tlcm5lbC93b3d0aHVuay5jLCBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jLCBpbmNsdWRlL21vZHVsZS5oLAoJICBtZW1vcnkvaW5zdHIuYywgdG9vbHMvd2luZWJ1aWxkL3JlbGF5LmM6CglNb3ZlZCAxNi1iaXQgY2FsbHMgaW5pdGlhbGl6YXRpb24gYW5kIGV4Y2VwdGlvbiBoYW5kbGluZyB0byBrZXJuZWwzMi4KCVN0b3JlIHRoZSBjYWxsX3RvXzE2IHJldHVybiBhZGRyZXNzIG9uIHRoZSBzdGFjayBmcm9tIHRoZSBDIGNvZGUgc28KCXRoYXQgd2UgZG9uJ3QgbmVlZCB0d28gdmFyaWFudHMgb2YgY2FsbF90b18xNl9yZWdzLgoKCSogZGxscy93aW5lZG9zL2ludDMxLmM6CglGaXhlZCBjb3B5L3Bhc3RlIGVycm9yIGluIFdPV0NhbGxiYWNrMTZFeCBjYWxsIChzcG90dGVkIGJ5IERtaXRyeQoJVGltb3Noa292KS4KCgkqIGRsbHMvd2luZWRvcy92Z2EuYzogSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJUmVwbGFjZSBzb21lIG1hZ2ljIG51bWJlcnMgd2l0aCBzeW1ib2xzLgoJQWRkIHNhbml0eSBjaGVja3Mgc28gdGhhdCBWR0Egd2luZG93IGNhbm5vdCBiZSB1c2VkIHRvIGFjY2VzcyBtZW1vcnkKCW91dHNpZGUgZnJhbWVidWZmZXIuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglGaXggdGhlIGhpdCB0ZXN0IGZvciBmdWxsIHJvdyBzZWxlY3QgaW4gUkVQT1JUIG1vZGUgKGZvdW5kLCBkZWJ1Z2dlZCwKCWFuZCB0ZXN0ZWQgYnkgRXJpYyBQb3VlY2gpLgoKMjAwMy0wOC0yMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGRsbHMva2VybmVsL25lX21vZHVsZS5jLAoJICBkbGxzL2tlcm5lbC9uZV9zZWdtZW50LmMsIGRsbHMva2VybmVsL3N5c3RlbS5jLCBkbGxzL2tlcm5lbC90aHVuay5jLAoJICBkbGxzL2tlcm5lbC93b3d0aHVuay5jLCBkbGxzL3dpbmVkb3MvaW50MzEuYywgaW5jbHVkZS9zdGFja2ZyYW1lLmgsCgkgIGluY2x1ZGUvd2luZS93aW5iYXNlMTYuaCwgaW5jbHVkZS93b3dudDMyLmgsIHRvb2xzL3dpbmVidWlsZC9yZWxheS5jLAoJICB3aW5kb3dzL3dpbnByb2MuYzoKCUV4dGVuZGVkIFdPV0NhbGxiYWNrMTZFeCB0byBzdXBwb3J0IHJlZ2lzdGVyIGZ1bmN0aW9ucyB0b28uICBUaGlzCglhbGxvd3Mgc2ltcGxpZnlpbmcgdGhlIHdpbmVfY2FsbF90b18xNiBhc3NlbWJseSBjb2RlIGJ5IG1vdmluZyBwYXJ0IG9mCglpdCB0byBDIGNvZGUsIGFuZCBnZXR0aW5nIHJpZCBvZiB0aGUgZXh0cmEga2VybmVsIGV4cG9ydHMuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6CglNYXhpbWUgQmVsbGVuZ+kgPG1heGltZS5iZWxsZW5nZUBsYXBvc3RlLm5ldD4KCUZpeCB0aGUgY3JlYXRpb24gb2YgdHJlZXZpZXcgd2l0aCBjaGVja2JveGVzLgoKCSogZGxscy9zZXR1cGFwaS9NYWtlZmlsZS5pbjogU3RldmVuIEVkd2FyZHMgPHN0ZXZlbl9lZDQxNTNAeWFob28uY29tPgoJU3BsaXQgd2luMTYvMzIgc3VwcG9ydC4KCgkqIGRsbHMva2VybmVsL25lX21vZHVsZS5jLCBkbGxzL250ZGxsL01ha2VmaWxlLmluLCBpbmNsdWRlL21vZHVsZS5oLAoJICBsb2FkZXIvbG9hZG9yZGVyLmM6CglNb3ZlZCAxNi1iaXQgYnVpbHRpbiBtb2R1bGUgaGFuZGxpbmcgdG8gZGxscy9rZXJuZWwvbmVfbW9kdWxlLmMuCgoJKiBkbGxzL2QzZGltL3ZlcnNpb24ucmMsIGRsbHMvZGlucHV0L3ZlcnNpb24ucmMsIGRsbHMvZHBsYXl4L3ZlcnNpb24ucmM6CglUb20gV2lja2xpbmUgPHR3aWNrbGluZUBza3liZXN0LmNvbT4KCVNldCB2ZXJzaW9uIHRvIDguMS4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsX0VzLnJjLCBkbGxzL2NvbWN0bDMyL3JzcmMucmMsCgkgIGRsbHMvbXN2aWRlby9tc3JsZTMyL21zcmxlX0VzLnJjLCBkbGxzL21zdmlkZW8vbXNybGUzMi9yc3JjLnJjLAoJICBkbGxzL3dpbmVwcy9yc3JjLnJjLCBkbGxzL3dpbmVwcy93cHNfRXMucmM6CglKb3PpIE1hbnVlbCBGZXJyZXIgT3J0aXogPGptZm8xOTgyQHlhaG9vLmVzPgoJTW9yZSBTcGFuaXNoIHRyYW5zbGF0aW9ucy4KCgkqIGRsbHMvZHNvdW5kL01ha2VmaWxlLmluLCBkbGxzL2Rzb3VuZC9kc291bmQuc3BlYywKCSAgZGxscy9kc291bmQvcmVnc3ZyLmMsIGRsbHMvZHNvdW5kL3ZlcnNpb24ucmM6CglKb2huIEsuIEhvaG0gPGpob2htQGFjbS5vcmc+CglJbXBsZW1lbnQgRGxsUmVnaXN0ZXJTZXJ2ZXIgYW5kIERsbFVucmVnaXN0ZXJTZXJ2ZXIgZm9yIGRzb3VuZC5kbGwsCglhbmQgYWRkIE9sZVNlbGZSZWdpc3RlciB2ZXJzaW9uIHN0cmluZy4KCgkqIHByb2dyYW1zL25vdGVwYWQvSXQucmMsIHByb2dyYW1zL25vdGVwYWQvcnNyYy5yYzoKCUl2YW4gTGVvIE11cnJheS1TbWl0aCA8cHVvdGlAaW53aW5kLml0PgoJQWRkZWQgSXRhbGlhbiByZXNvdXJjZXMuCgoJKiBwcm9ncmFtcy9wcm9nbWFuL0l0LnJjOiBJdmFuIExlbyBNdXJyYXktU21pdGggPHB1b3RpQGlud2luZC5pdD4KCU1pbm9yIGZpeGVzLgoKCSogZGxscy9zaGRvY3Z3L01ha2VmaWxlLmluLCBkbGxzL3NoZG9jdncvcmVnc3ZyLmMsCgkgIGRsbHMvc2hkb2N2dy9zaGRvY3Z3X21haW4uYywgZGxscy9zaGRvY3Z3L3ZlcnNpb24ucmM6CglKb2huIEsuIEhvaG0gPGpob2htQGFjbS5vcmc+CglJbXBsZW1lbnQgRGxsUmVnaXN0ZXJTZXJ2ZXIgYW5kIERsbFVucmVnaXN0ZXJTZXJ2ZXIgZm9yIHNoZG9jdncuZGxsLAoJYW5kIGFkZCBPbGVTZWxmUmVnaXN0ZXIgdmVyc2lvbiBzdHJpbmcuCgoJKiBkbGxzL3F1YXJ0ei8uY3ZzaWdub3JlLCBkbGxzL3F1YXJ0ei9NYWtlZmlsZS5pbiwgZGxscy9xdWFydHovbWFpbi5jLAoJICBkbGxzL3F1YXJ0ei9xdWFydHouc3BlYywgZGxscy9xdWFydHovcmVnc3ZyLmMsCgkgIGRsbHMvcXVhcnR6L3ZlcnNpb24ucmM6CglKb2huIEsuIEhvaG0gPGpob2htQGFjbS5vcmc+CglJbXBsZW1lbnQgRGxsUmVnaXN0ZXJTZXJ2ZXIgYW5kIERsbFVucmVnaXN0ZXJTZXJ2ZXIgZm9yIHF1YXJ0ei5kbGwsCglhbmQgYWRkIE9sZVNlbGZSZWdpc3RlciB2ZXJzaW9uIHN0cmluZy4KCgkqIGRsbHMvZHBsYXl4L01ha2VmaWxlLmluLCBkbGxzL2RwbGF5eC9kcGxheXguc3BlYywKCSAgZGxscy9kcGxheXgvcmVnc3ZyLmMsIGRsbHMvZHBsYXl4L3ZlcnNpb24ucmM6CglKb2huIEsuIEhvaG0gPGpob2htQGFjbS5vcmc+CglJbXBsZW1lbnQgRGxsUmVnaXN0ZXJTZXJ2ZXIgYW5kIERsbFVucmVnaXN0ZXJTZXJ2ZXIgZm9yIGRwbGF5eC5kbGwsCglhbmQgYWRkIE9sZVNlbGZSZWdpc3RlciB2ZXJzaW9uIHN0cmluZy4KCgkqIGRsbHMvYXZpZmlsMzIvTWFrZWZpbGUuaW4sIGRsbHMvYXZpZmlsMzIvYXZpZmlsMzIuc3BlYywKCSAgZGxscy9hdmlmaWwzMi9yZWdzdnIuYywgZGxscy9hdmlmaWwzMi9yc3JjLnJjOgoJSm9obiBLLiBIb2htIDxqaG9obUBhY20ub3JnPgoJSW1wbGVtZW50IERsbFJlZ2lzdGVyU2VydmVyIGFuZCBEbGxVbnJlZ2lzdGVyU2VydmVyIGZvciBhdmlmaWwzMi5kbGwsCglhbmQgYWRkIE9sZVNlbGZSZWdpc3RlciB2ZXJzaW9uIHN0cmluZy4KCgkqIGNvbnRyb2xzL3N0YXRpYy5jOiBJZ29yIEdyYWhlayA8aWdvcmdAY2FkbGluay5jb20+CglTZW5kIFNUTl9DTElDS0VEIGFkIFNUTl9EQkxDTEsgbWVzc2FnZXMgdG8gcGFyZW50IHdpbmRvdyBpZiBTU19OT1RJRlkKCWlzIGVuYWJsZWQuCgoJKiBkbGxzL29sZTMyL2dpdC5jOiBNaWtlIEhlYXJuIDxtaWtlQHRoZW9yZXRpYy5jb20+CglJbiB0aGUgZ2xvYmFsIGludGVyZmFjZSB0YWJsZToKCS0gUHJpbnQgd2FybmluZ3Mgd2hlbiB0aGluZ3MgZ28gd3JvbmcuCgktIEFsdGVyIHRoZSB3YXkgd2UgZG8gcmVmY291bnRpbmcuCgktIERvbid0IHJlbGVhc2UgdGhlIHN0cmVhbSBvbiByZXRyaWV2YWwsIGp1c3QgcmV3aW5kIGl0IGluc3RlYWQuCgktIEltcGxlbWVudCB0aHJlYWQgc2FmZXR5LgoKCSogTWFrZS5ydWxlcy5pbiwgTWFrZWZpbGUuaW4sIGRsbHMvTWFrZWRsbC5ydWxlcy5pbiwKCSAgZGxscy9udGRsbC8uY3ZzaWdub3JlLCB0b29scy93aW5lYnVpbGQvYnVpbGQuaCwKCSAgdG9vbHMvd2luZWJ1aWxkL21haW4uYywgdG9vbHMvd2luZWJ1aWxkL3NwZWMxNi5jLAoJICB0b29scy93aW5lYnVpbGQvd2luZWJ1aWxkLm1hbi5pbjoKCUdvdCByaWQgb2YgMTYtYml0IGdsdWUgY29kZSBnZW5lcmF0aW9uIHNpbmNlIGl0IGlzIG5vIGxvbmdlciB1c2VkLgoKCSogZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL2tlcm5lbF9tYWluLmMsCgkgIGRsbHMva2VybmVsL25lX21vZHVsZS5jLCBkbGxzL2tlcm5lbC9uZV9zZWdtZW50LmMsCgkgIGRsbHMva2VybmVsL3Rhc2suYywgZGxscy9rZXJuZWwvdGh1bmsuYywgZGxscy9rZXJuZWwvd293dGh1bmsuYywKCSAgZGxscy9udGRsbC9NYWtlZmlsZS5pbiwgZmlsZXMvZHJpdmUuYywgaW5jbHVkZS90YXNrLmgsCgkgIGluY2x1ZGUvdGhyZWFkLmgsIGxvYWRlci9tb2R1bGUuYywgbG9hZGVyL25lL21vZHVsZS5jLAoJICBsb2FkZXIvbmUvc2VnbWVudC5jLCBsb2FkZXIvdGFzay5jLCBtc2Rvcy9pbnQyMS5jLAoJICBzY2hlZHVsZXIvdGhyZWFkLmM6CglNb3ZlZCBtb3N0IG9mIHRoZSAxNi1iaXQgdGFzayBzdXBwb3J0IGFuZCBORSBtb2R1bGUgbG9hZGVyIHRvCglkbGxzL2tlcm5lbC4KCjIwMDMtMDgtMjIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2RtYmFuZC9NYWtlZmlsZS5pbiwgZGxscy9kbWJhbmQvYmFuZC5jLCBkbGxzL2RtYmFuZC9iYW5kdHJhY2suYywKCSAgZGxscy9kbWJhbmQvZG1iYW5kX21haW4uYywgZGxscy9kbWJhbmQvZG1iYW5kX3ByaXZhdGUuaCwKCSAgZGxscy9kbWJhbmQvcmVnc3ZyLmMsIHdpbmVkZWZhdWx0LnJlZywgZGxscy9kbWNvbXBvcy9NYWtlZmlsZS5pbiwKCSAgZGxscy9kbWNvbXBvcy9jaG9yZG1hcC5jLCBkbGxzL2RtY29tcG9zL2Nob3JkbWFwdHJhY2suYywKCSAgZGxscy9kbWNvbXBvcy9jb21wb3Nlci5jLCBkbGxzL2RtY29tcG9zL2RtY29tcG9zX21haW4uYywKCSAgZGxscy9kbWNvbXBvcy9kbWNvbXBvc19wcml2YXRlLmgsIGRsbHMvZG1jb21wb3MvcmVnc3ZyLmMsCgkgIGRsbHMvZG1jb21wb3Mvc2lnbnBvc3R0cmFjay5jLCBkbGxzL2RtaW1lL01ha2VmaWxlLmluLAoJICBkbGxzL2RtaW1lL2F1ZGlvcGF0aC5jLCBkbGxzL2RtaW1lL2RtaW1lX21haW4uYywKCSAgZGxscy9kbWltZS9kbWltZV9wcml2YXRlLmgsIGRsbHMvZG1pbWUvZ3JhcGguYywKCSAgZGxscy9kbWltZS9seXJpY3N0cmFjay5jLCBkbGxzL2RtaW1lL21hcmtlcnRyYWNrLmMsCgkgIGRsbHMvZG1pbWUvcGFyYW1jb250cm9sdHJhY2suYywgZGxscy9kbWltZS9wYXR0ZXJudHJhY2suYywKCSAgZGxscy9kbWltZS9wZXJmb3JtYW5jZS5jLCBkbGxzL2RtaW1lL3JlZ3N2ci5jLCBkbGxzL2RtaW1lL3NlZ21lbnQuYywKCSAgZGxscy9kbWltZS9zZWdtZW50c3RhdGUuYywgZGxscy9kbWltZS9zZWd0cmlnZ2VydHJhY2suYywKCSAgZGxscy9kbWltZS9zZXF0cmFjay5jLCBkbGxzL2RtaW1lL3NvbmcuYywgZGxscy9kbWltZS9zeXNleHRyYWNrLmMsCgkgIGRsbHMvZG1pbWUvdGVtcG90cmFjay5jLCBkbGxzL2RtaW1lL3RpbWVzaWd0cmFjay5jLAoJICBkbGxzL2RtaW1lL3Rvb2wuYywgZGxscy9kbWltZS90cmFjay5jLCBkbGxzL2RtaW1lL3dhdmV0cmFjay5jLAoJICBkbGxzL2RtbG9hZGVyL01ha2VmaWxlLmluLCBkbGxzL2RtbG9hZGVyL2NvbnRhaW5lci5jLAoJICBkbGxzL2RtbG9hZGVyL2RtbG9hZGVyX21haW4uYywgZGxscy9kbWxvYWRlci9kbWxvYWRlcl9wcml2YXRlLmgsCgkgIGRsbHMvZG1sb2FkZXIvZ2V0bG9hZGVyLmMsIGRsbHMvZG1sb2FkZXIvbG9hZGVyLmMsCgkgIGRsbHMvZG1sb2FkZXIvbG9hZGVyc3RyZWFtLmMsIGRsbHMvZG1sb2FkZXIvcmVnc3ZyLmMsCgkgIGRsbHMvZG1zY3JpcHQvTWFrZWZpbGUuaW4sIGRsbHMvZG1zY3JpcHQvZG1zY3JpcHRfbWFpbi5jLAoJICBkbGxzL2Rtc2NyaXB0L2Rtc2NyaXB0X3ByaXZhdGUuaCwgZGxscy9kbXNjcmlwdC9yZWdzdnIuYywKCSAgZGxscy9kbXNjcmlwdC9zY3JpcHQuYywgZGxscy9kbXNjcmlwdC9zY3JpcHR0cmFjay5jLAoJICBkbGxzL2Rtc3R5bGUvTWFrZWZpbGUuaW4sIGRsbHMvZG1zdHlsZS9hdWRpdGlvbnRyYWNrLmMsCgkgIGRsbHMvZG1zdHlsZS9jaG9yZHRyYWNrLmMsIGRsbHMvZG1zdHlsZS9jb21tYW5kdHJhY2suYywKCSAgZGxscy9kbXN0eWxlL2Rtc3R5bGVfbWFpbi5jLCBkbGxzL2Rtc3R5bGUvZG1zdHlsZV9wcml2YXRlLmgsCgkgIGRsbHMvZG1zdHlsZS9tZWxvZHlmb3JtdWxhdGlvbnRyYWNrLmMsIGRsbHMvZG1zdHlsZS9tb3RpZnRyYWNrLmMsCgkgIGRsbHMvZG1zdHlsZS9tdXRldHJhY2suYywgZGxscy9kbXN0eWxlL3JlZ3N2ci5jLAoJICBkbGxzL2Rtc3R5bGUvc3R5bGUuYywgZGxscy9kbXN0eWxlL3N0eWxldHJhY2suYywKCSAgZGxscy9kbXN5bnRoL2Rtc3ludGhfbWFpbi5jLCBkbGxzL2Rtc3ludGgvcmVnc3ZyLmMsCgkgIGRsbHMvZG1zeW50aC9zeW50aC5jLCBkbGxzL2Rtc3ludGgvc3ludGhzaW5rLmMsCgkgIGRsbHMvZG11c2ljL01ha2VmaWxlLmluLCBkbGxzL2RtdXNpYy9idWZmZXIuYywgZGxscy9kbXVzaWMvY2xvY2suYywKCSAgZGxscy9kbXVzaWMvY29sbGVjdGlvbi5jLCBkbGxzL2RtdXNpYy9kbXVzaWMuYywKCSAgZGxscy9kbXVzaWMvZG11c2ljX21haW4uYywgZGxscy9kbXVzaWMvZG11c2ljX3ByaXZhdGUuaCwKCSAgZGxscy9kbXVzaWMvZG93bmxvYWQuYywgZGxscy9kbXVzaWMvZG93bmxvYWRlZGluc3RydW1lbnQuYywKCSAgZGxscy9kbXVzaWMvaW5zdHJ1bWVudC5jLCBkbGxzL2RtdXNpYy9vYmplY3QuYywgZGxscy9kbXVzaWMvcG9ydC5jLAoJICBkbGxzL2RtdXNpYy9wb3J0ZG93bmxvYWQuYywgZGxscy9kbXVzaWMvdGhydS5jLAoJICBkbGxzL2RtdXNpYzMyL2RtdXNpYzMyLnNwZWMsIGRsbHMvZG11c2ljMzIvZG11c2ljMzJfbWFpbi5jOgoJUm9rIE1hbmRlbGpjIDxyb2subWFuZGVsamNAZ2ltYi5vcmc+CgktIGltcGxlbWVudGVkIGxvYWRlciwgbG9hZGVyJ3Mgc3RyZWFtIGFuZCBsb2FkaW5nIG9mIG9iamVjdHMgKG5vdyB5b3UKCSAgY2FuIHVzZSBidWlsdGluIGRtbG9hZGVyIGFuZCBuYXRpdmUgb3RoZXIgZG0qLmRsbHMpCgktIGltcGxlbWVudGVkIHByb3BlciBjcmVhdGlvbiBvZiBvYmplY3RzIGFuZCByZXRyaWV2YWwgb2YgZG11c2ljCgkgIGludGVyZmFjZXMgZnJvbSB0aGVtIChvYmplY3QsIHN0cmVhbSwgLi4uKQoJLSBpbXBsZW1lbnRlZCBhbGwgInN0YW5kYXJkIHRyYWNrIHR5cGVzIiBhbmQgYXBwcm9wcmlhdGUgc3RyZWFtIChmb3IKCSAgZG1iYW5kLCBsb2FkaW5nIGlzIGFsbW9zdCBjb21wbGV0ZSkKCS0gY2xlYW5lZCBzb21lIG9ic29sZXRlIHN0dWZmCgktIHNwbGl0IGRlYnVnIGNoYW5uZWxzCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYywgZGxscy9jb21jdGwzMi9jb21tY3RybC5jLAoJICBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jLCBpbmNsdWRlL2NvbW1jdHJsLmg6CglGaWxpcCBOYXZhcmEgPHhuYXZhcmFAdm9sbnkuY3o+CglGaXhlZCBwcm90b3R5cGVzIG9mIENyZWF0ZVN0YXR1c1dpbmRvd0EvVywgSW1hZ2VMaXN0X0NvcHksCglJbWFnZUxpc3RfRW5kRHJhZywgSW1hZ2VMaXN0X1NldEltYWdlQ291bnQuCgoJKiBwcm9ncmFtcy9yZWdlZGl0L1NpLnJjLCBwcm9ncmFtcy9yZWdlZGl0L3JzcmMucmM6CglSb2sgTWFuZGVsamMgPHJvay5tYW5kZWxqY0BnaW1iLm9yZz4KCUFkZGVkIFNsb3ZlbmlhbiB0cmFuc2xhdGlvbi4KCgkqIGluY2x1ZGUvd2luZXJyb3IuaDogUmVtb3ZlZCBvYnNvbGV0ZSBXSU4zMl9MYXN0RXJyb3IgZGVmaW5pdGlvbi4KCgkqIGRvY3VtZW50YXRpb24vZmFxLnNnbWw6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRml4L21ha2UgdGhlIGNhc2Ugb2YgQm9jaHMgYW5kIFBsZXg4NiBtb3JlIGNvbnNpc3RlbnQuCglBZGQgQ29kZVdlYXZlcnMgdG8gdGhlIGxpc3Qgb2YgY29udHJpYnV0b3JzIChjdXJyZW50bHkgaG9zdHMgV2luZUhRKS4KCVR3ZWFrIHRoZSAnaG93IHRvIHN1Ym1pdCBwYXRjaGVzJyBGQVEuCglBZGQgS3lsaXggYW5kIE11c2ljTWF0Y2ggSnVrZUJveCB0byB0aGUgbGlzdCBvZiBhcHBsaWNhdGlvbnMgcG9ydGVkCgl1c2luZyBXaW5lKGxpYikuCgoJKiBkb2N1bWVudGF0aW9uL2ZhcS5zZ21sOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUJlIG1vcmUgZXhwbGljaXQgd2hlbiBkZXNjcmliaW5nIHdoYXQgYmVsb25ncyBpbiBXaW5lIChBUEkpIGFuZCB3aGF0Cglkb2VzIG5vdCBiZWxvbmcgaW4gV2luZSAoZHJpdmVycywgV2luZG93cyBhcHBsZXRzLCB3aW5kb3cgbWFuYWdlcnMsCglldGMuKS4gQWxzbyBwb2ludCB0byBwcm9qZWN0cyB3aGVyZSBzdWNoIGNvbnRyaWJ1dGlvbnMgd291bGQgYmUgbW9yZQoJYXBwcm9wcmlhdGUuCgoJKiBkb2N1bWVudGF0aW9uL2ZhcS5zZ21sOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFuc3dlciB0aGlzIGV0ZXJuYWwgcXVlc3Rpb246CglDYW4gSSB1c2UgV2luZSB0byBtYWtlIHRoZSBXaW5kb3dzIGRyaXZlciBmb3IgbXkgbmV0d29yayBjYXJkIC8KCWdyYXBoaWNzIGNhcmQgLyBzY2FubmVyIC8gZXRjLiB3b3JrIG9uIFVuaXg/CgoJKiBkb2N1bWVudGF0aW9uL2ZhcS5zZ21sOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFkZCBhbiBlbnRyeSBhbnN3ZXJpbmcgdGhlIGV0ZXJuYWwgcXVlc3Rpb246CglXaGVuIHdpbGwgV2luZSBpbnRlZ3JhdGUgYW4geDg2IENQVSBlbXVsYXRvcj8KCgkqIGRsbHMvYWR2YXBpMzIvYWR2YXBpLmMsIGRsbHMvY3J0ZGxsL2NydGRsbF9tYWluLmMsCgkgIGRsbHMvdHdhaW4vY2FwYWJpbGl0eS5jLCBkbGxzL3R3YWluL2RzX2ltYWdlLmMsCgkgIGRsbHMvdHdhaW4vZHNtX2N0cmwuYywgZGxscy90d2Fpbi90d2FpbjMyX21haW4uYywKCSAgZGxscy93aW5hc3BpL2FzcGkuYywgdG9vbHMvYmluMnJlcy5jLCB0b29scy93cmMvZ2VucmVzLmM6CglTdGV2ZW4gRWR3YXJkcyA8c3RldmVuX2VkNDE1M0B5YWhvby5jb20+CglGaXhlcyBmb3IgYnVpbGRpbmcgd2l0aCB3MzJhcGkgaGVhZGVycyBvbiBNaW5ndy4KCgkqIGluY2x1ZGUvd2lubmxzLmg6IFJlbW92ZWQgbm8gbG9uZ2VyIHVzZWQgaW50ZXJuYWwgZGVmaW5pdGlvbnMuCgoJKiBpbmNsdWRlL3d0eXBlcy5oOgoJUmVtb3ZlZCByZWZlcmVuY2UgdG8gdGhlIFdJTkVfVU5JQ09ERV9URVhUIG1hY3JvIHRoYXQgbm8gbG9uZ2VyCglleGlzdHMuCgoJKiBkbGxzL2F2aWZpbDMyL2F2aWZpbGVfRXMucmMsIGRsbHMvYXZpZmlsMzIvcnNyYy5yYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfRXMucmMsIGRsbHMvd2luaW5ldC9yc3JjLnJjLAoJICBkbGxzL3dpbmluZXQvd2luaW5ldF9Fcy5yYywgcHJvZ3JhbXMvY2xvY2svRXMucmMsCgkgIHByb2dyYW1zL25vdGVwYWQvRXMucmMsIHByb2dyYW1zL3JlZ2VkaXQvRXMucmMsCgkgIHByb2dyYW1zL3JlZ2VkaXQvcnNyYy5yYywgcHJvZ3JhbXMvdmlldy9Fcy5yYywKCSAgcHJvZ3JhbXMvdmlldy92aWV3cmMucmMsIHByb2dyYW1zL3dpbmVjZmcvRXMucmMsCgkgIHByb2dyYW1zL3dpbmVjZmcvd2luZWNmZy5yYywgcHJvZ3JhbXMvd2luaGVscC9Fcy5yYzoKCUpvc+kgTWFudWVsIEZlcnJlciBPcnRpeiA8am1mbzE5ODJAeWFob28uZXM+CglTb21lIG5ldyBTcGFuaXNoIHRyYW5zbGF0aW9ucyBhbmQgaW1wcm92ZW1lbnRzIHRvIG90aGVyIGV4aXN0aW5nCglvbmVzLgoKCSogcHJvZ3JhbXMvd2NtZC93Y21kbWFpbi5jOiBPbGVnIFByb2tob3JvdiA8eG9sZWdwcm9AcmJjbWFpbC5ydT4KCUF2b2lkIGNyYXNoIGluIFdDTURfcnVuX3Byb2dyYW0gd2hlbiBubyBleHRlbnNpb24gd2FzIHNwZWNpZmllZC4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVNvbWUgYXBwbGljYXRpb25zIGRlcGVuZCBvbiB0aGUgb3JkZXIgb2YgaW5pdGlhbGl6YXRpb24gc3RlcHMgb2YgdGhlCgljdXN0b20gZmlsZSBvcGVuIGRpYWxvZy4KCgkqIHdpbmRvd3Mvc3lzcGFyYW1zLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglQcm90ZWN0IFN5c3RlbVBhcmFtZXRlcnNJbmZvQShTUElfR0VUeHh4KSBmcm9tIE5VTEwgcHZQYXJhbS4KCgkqIGRvY3VtZW50YXRpb24vZmFxLnNnbWw6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJVHdlYWsgJ1dpbGwgdGhlcmUgYmUgYSBXaW5kb3dzIHZlcnNpb24gb2YgV2luZT8nOgoJLSBBZGQgYSBwb2ludGVyIHRvIHRoZSBNaW5HVyBwcm9qZWN0CgktIEZpeCB0aGUgUmVhY3RPUyBjYXNlCgktIEV4cGxhaW4gdGhlIHJhdGlvbmFsZSBiZWhpbmQgdGhlc2UgcG9ydGluZyBwcm9qZWN0cwoKMjAwMy0wOC0yMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNlcnZlci9wdHJhY2UuYzogQ29wZSB3aXRoIHdhaXQ0IGJlaW5nIGludGVycnVwdGVkIGJ5IGEgc2lnbmFsLgoKCSogZGxscy9udGRsbC9kZWJ1Z3Rvb2xzLmMsIGRsbHMvbnRkbGwvc3lzZGVwcy5jLCBpbmNsdWRlL3RocmVhZC5oLAoJICBzY2hlZHVsZXIvdGhyZWFkLmM6CglTdG9yZSB0aGUgZGVidWcgaW5mbyBzdHJ1Y3R1cmUgb24gdGhlIHRocmVhZCBzdGFjay4KCU1vdmVkIHRocmVhZCBpbml0aWFsaXphdGlvbiBjb2RlIGZyb20gc3lzZGVwcy5jIHRvIHRocmVhZC5jIHRvIGF2b2lkCglhbiBpbmRpcmVjdGlvbi4KCgkqIGluY2x1ZGUvaW1tLmgsIGluY2x1ZGUvcmFzLmgsIGluY2x1ZGUvd2luZG93c3guaDoKCVJlbW92ZWQgYSBmZXcgcmVtYWluaW5nIFdJTlZFUiBjaGVja3MuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYzoKCUl0IHNlZW1zIEZyZWVCU0Qgbm8gbG9uZ2VyIHJlcXVpcmVzIGxpYnB0aHJlYWQgd2hlbiBsaW5raW5nIHdpdGgKCU9wZW5HTC4KCgkqIHByb2dyYW1zL3dpbmVkYmcvd2luZWRiZy5jOgoJQ29ycmVjdGx5IHBhc3MgdGhlIGV4Y2VwdGlvbiB0byB0aGUgYXBwbGljYXRpb24gd2hlbgoJQnJlYWtPbkZpcnN0Q2hhbmNlIGlzIDAuCgoJKiBkbGxzL2F2aWZpbDMyL2F2aWZpbGVfRW4ucmMsIHByb2dyYW1zL2Nsb2NrL0l0LnJjLAoJICBwcm9ncmFtcy9jbWRsZ3RzdC9JdC5yYzoKCUl2YW4gTGVvIE11cnJheS1TbWl0aCA8cHVvdGlAaW53aW5kLml0PgoJU21hbGwgcmVzb3VyY2VzIGZpeGVzLgoKCSogZGxscy9hdmlmaWwzMi9hdmlmaWxlX0l0LnJjLCBkbGxzL2F2aWZpbDMyL3JzcmMucmM6CglJdmFuIExlbyBNdXJyYXktU21pdGggPHB1b3RpQGlud2luZC5pdD4KCUFkZGVkIEl0YWxpYW4gcmVzb3VyY2VzLgoKCSogZGxscy9zaGVsbDMyL3NobGZpbGVvcC5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglSZW1vdmUgdXNlbGVzcyBjb21tZW50cyB0aGF0IGNsdXR0ZXIgdGhlIGNvZGUuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLCBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglTdHViIGZvciAodW5kb2N1bWVudGVkKSBTSENyZWF0ZUxpbmtzLgoKCSogdG9vbHMvd2luZWR1bXAvb3V0cHV0LmM6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglVcGRhdGUgaW5zdGFsbCBzY3JpcHQgdG8gbWF0Y2ggY3VycmVudCBidWlsZCBwcm9jZXNzLgoJRml4IGEgd2FybmluZyBpbiBnZW5lcmF0ZWQgZGxsIG5vdyB3ZSBidWlsZCB3aXRoIC1EU1RSSUNULgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZ2Jyb3dzZXIuYywKCSAgZGxscy9jb21tZGxnL2ZpbGVkbGdicm93c2VyLmg6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQ29wZSB3aXRoIHBvdGVudGlhbGx5IG1vdmVkIGFuZCByZXNpemVkIGZpbGUgdmlldyB3aW5kb3cuCgoyMDAzLTA4LTIwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29udHJvbHMvbWVudS5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZzE2LmMsCgkgIGRsbHMvY29tbWRsZy9mb250ZGxnLmMsIGRsbHMvY29tbWRsZy9mb250ZGxnMTYuYywgZGxscy9kZHJhdy9tYWluLmMsCgkgIGRsbHMvZGV2ZW51bS9kZXZlbnVtLnJjLCBkbGxzL21zYWNtL2ltYWFkcDMyL2ltYWFkcDMyLmMsCgkgIGRsbHMvbXNhY20vbXNhZHAzMi9tc2FkcDMyLmMsIGRsbHMvbXNhY20vbXNnNzExL21zZzcxMS5jLAoJICBkbGxzL21zYWNtL3dpbmVtcDMvbXBlZ2wzLmMsIGRsbHMvbnRkbGwvcmVzb3VyY2UuYywKCSAgZGxscy9vbGVhdXQzMi90bWFyc2hhbC5jLCBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYywKCSAgZGxscy9vbGVhdXQzMi90eXBlbGliMTYuYywgZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGxzdHJpbmcuYywgZGxscy9zaGVsbDMyL3NobHZpZXcuYywKCSAgZGxscy9zaGVsbDMyL3N5c3RyYXkuYywgZGxscy9zaGx3YXBpL2Fzc29jLmMsIGRsbHMvc2hsd2FwaS90aHJlYWQuYywKCSAgZGxscy9zaGx3YXBpL3VybC5jLCBkbGxzL3R0eWRydi9ncmFwaGljcy5jLCBkbGxzL3dpbm1tL2pveXN0aWNrLmMsCgkgIGdyYXBoaWNzL3gxMWRydi9jb2RlcGFnZS5jLCBncmFwaGljcy94MTFkcnYvdGV4dC5jLAoJICBncmFwaGljcy94MTFkcnYveGZvbnQuYywgaW5jbHVkZS93aW5ubHMuaCwgbWVtb3J5L3ZpcnR1YWwuYywKCSAgbXNkb3MvaW9wb3J0cy5jLCBvYmplY3RzL2VuaG1ldGFmaWxlLmMsIG9iamVjdHMvZm9udC5jLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS9jdXJzZXMuYywgd2luZG93cy9kaWFsb2cuYywgd2luZG93cy9pbnB1dC5jOgoJd2lubmxzLmggbXVzdCBub3QgaW5jbHVkZSB3aW5iYXNlLmguCgoJKiBkbGxzL2Rzb3VuZC90ZXN0cy9wcm9wc2V0LmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglBZGRlZCB0ZXN0cyBmb3IgYnVmZmVyIHByb3BlcnR5IHNldHMuCgoJKiBkbGxzL2Rzb3VuZC9idWZmZXIuYywgZGxscy9kc291bmQvZHNvdW5kX21haW4uYywKCSAgZGxscy9kc291bmQvZHNvdW5kX3ByaXZhdGUuaCwgZGxscy9kc291bmQvcHJvcHNldC5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCVNwbGl0IHByb3BlcnR5IHNldHMgaW50byB0d28gdHlwZXM6IGJ1ZmZlciBhbmQgcHJpdmF0ZS4KCgkqIGRsbHMvd2luZWRvcy9mcHUuYzogSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJTWFrZSBGUFUgZW11bGF0aW9uIHVzZSBDUzpJUCB3aGVuIGRldGVybWluaW5nIGxvY2F0aW9uIG9mIGNhbGxpbmcKCXNvZnR3YXJlIGludGVycnVwdC4KCgkqIGRsbHMvd2luZWRvcy9kb3NleGUuaCwgZGxscy93aW5lZG9zL2ludDMxLmMsIGRsbHMvd2luZWRvcy9yZWxheS5jOgoJSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJUmVtb3ZlIHVubmVjZXNzYXJ5IF9fd2luZV9jYWxsX2Zyb21fMTZfcmVncyBjYWxsIGZyYW1lIG1hbmFnZW1lbnQgY29kZQoJZnJvbSByYXcgbW9kZSBzd2l0Y2ggaGFuZGxlci4KCgkqIGluY2x1ZGUvd2luZS91bmljb2RlLmg6IFN0ZXZlbiBFZHdhcmRzIDxzdGV2ZW5fZWQ0MTUzQHlhaG9vLmNvbT4KCUZpeCBidWlsZGluZyBsaWJ3aW5lX3VuaWNvZGUgd2l0aCB3MzJhcGkgaGVhZGVycy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBpbmNsdWRlL2NvbmZpZy5oLmluLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luZWNvbnNvbGUvY3Vyc2VzLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglEbG9wZW4gbGlibmN1cnNlcy5zbyBpbiB3aW5lY29uc29sZS4KCgkqIHRvb2xzL01ha2VmaWxlLmluOiBCSU5ESVIgaXMgbm8gbG9uZ2VyIG5lZWRlZC4KCgkqIHRvb2xzL3dpbmVnY2MuYzogUmljaGFyZCBDb2hlbiA8cmljaGFyZC5jb2hlbkB2aXJnaW4ubmV0PgoJU3VwcG9ydCAtbWNvbnNvbGUuCgoJKiB0b29scy93aW5lZ2NjLmMsIHRvb2xzL3dpbmV3cmFwLmM6CglSaWNoYXJkIENvaGVuIDxyaWNoYXJkLmNvaGVuQHZpcmdpbi5uZXQ+CglSZW1vdmUgaGFyZGNvZGVkIEJJTkRJUiBwYXRocy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBsaWJzL3dpbmUvTWFrZWZpbGUuaW4sCgkgIGxpYnMvd2luZS9lcnJuby5jOgoJUmVtb3ZlIHRoZSBkdW1teSBwdGhyZWFkIGZ1bmN0aW9ucyBhbmQgdXNlIC1scHRocmVhZCBpbnN0ZWFkIHRvCglyZXNvbHZlIG1pc3Npbmcgc3ltYm9scyBpbiBHTCBsaWJzLgoKCSogZGxscy94MTFkcnYva2V5Ym9hcmQuYzoKCU5lcmlqdXMgQmFsaXVuYXMgPG5lcmlqdXNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoJVXBkYXRlZCBMVCBrZXlib2FyZC4KCgkqIGZpbGVzL2Rvc19mcy5jLCBpbmNsdWRlL2ZpbGUuaDogRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglSZW1vdmVkIHRoZSBET1NGU18gc3BlY2lmaWMgdGltZSByZWxhdGVkIGNvbnZlcnNpb24gcm91dGluZSwgYW5kIG1ha2UKCXVzZSBvZiB0aGUgbnRkbGwgZXF1aXZhbGVudHMuCgoJKiBtaXNjL3JlZ2lzdHJ5LmM6IEVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJVHJhbnNsYXRlIGEgZmV3IG1vcmUga2VybmVsMzIgY2FsbHMgaW50byB0aGUgbnRkbGwgZXF1aXZhbGVudHMuCgoJKiBmaWxlcy9wcm9maWxlLmM6IEVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJUmVtb3ZlZCBjb2RlIGZvciBoYW5kbGluZyAke1ZBUn0gY29uc3RydWN0cyBpbiAuaW5pIGZpbGVzLgoKCSogZGxscy93aW5tbS93aW5lYWxzYS9hdWRpby5jOiA8d2luZUBmcm90ei5vcmc+CglGaXggcGFyYW1ldGVyIHRvIHNuZF9wY21fc3dfcGFyYW1zX3NldF9zaWxlbmNlX3NpemUoKS4KCgkqIGRsbHMvbnRkbGwvcnRsc3RyLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBcHBseSBvbmx5IHNwZWNpZmllZCB0ZXN0cy4KCUltcGxlbWVudCBJU19URVhUX1VOSUNPREVfUkVWRVJTRV9TSUdOQVRVUkUsIElTX1RFWFRfVU5JQ09ERV9TVEFUSVNUSUNTCglhbmQgSVNfVEVYVF9VTklDT0RFX05VTExfQllURVMgdGVzdHMuCglSZXZlcnQgSVNfVEVYVF9VTklDT0RFX09ERF9MRU5HVEggdGVzdC4KCgkqIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjLCBkbGxzL21zdmNydC9wcm9jZXNzLmMsCgkgIGRsbHMvbXN2Y3J0ZC9tc3ZjcnRkLnNwZWM6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJU3R1YiBvdXQgdGhlIF9bd11wb3Blbi9fcGNsb3NlKCkgZnVuY3Rpb25zLgoKMjAwMy0wOC0xOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNlcnZlci9wcm9jZXNzLmM6CglXZSBuZWVkIHRvIGlnbm9yZSBTVEFUVVNfT0JKRUNUX1RZUEVfTUlTTUFUQ0ggZXJyb3JzIHRvbyB3aGVuIHNldHRpbmcKCXRoZSBwcm9jZXNzIGNvbnNvbGUuCgoJKiBwcm9ncmFtcy9jbG9jay9JdC5yYywgcHJvZ3JhbXMvY2xvY2svcnNyYy5yYywKCSAgcHJvZ3JhbXMvY21kbGd0c3QvSXQucmMsIHByb2dyYW1zL2NtZGxndHN0L2NtZGxnci5yYywKCSAgcHJvZ3JhbXMvcHJvZ21hbi9JdC5yYzoKCUl2YW4gTGVvIE11cnJheS1TbWl0aCA8cHVvdGlAaW53aW5kLml0PgoJQWRkZWQgSXRhbGlhbiByZXNvdXJjZXMuCgoJKiBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC8uY3ZzaWdub3JlLCBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwKCSAgZGxscy9rZXJuZWwva2VybmVsX21haW4uYywgZGxscy9rZXJuZWwvc3lzdGVtLmRydi5zcGVjLAoJICBkbGxzL2tlcm5lbC9zeXN0ZW0uc3BlYywgbG9hZGVyL2xvYWRvcmRlci5jOgoJUmVuYW1lZCBzeXN0ZW0uZGxsIHRvIHN5c3RlbS5kcnYuCgoJKiBkbGxzL2tlcm5lbC9jb21wdXRlcm5hbWUuYywgZG9jdW1lbnRhdGlvbi9zYW1wbGVzL2NvbmZpZywKCSAgZmlsZXMvZGlyZWN0b3J5LmMsIGZpbGVzL2Rvc19mcy5jLCBmaWxlcy9kcml2ZS5jLCBmaWxlcy9maWxlLmMsCgkgIGZpbGVzL3Byb2ZpbGUuYywgaW5jbHVkZS9maWxlLmgsIG1pc2MvcmVnaXN0cnkuYywgbXNkb3MvaW9wb3J0cy5jOgoJUmVwbGFjZWQgcmVtYWluaW5nIGNhbGxzIHRvIFBST0ZJTEVfR2V0V2luZUluaVN0cmluZy9Cb29sIGJ5IGRpcmVjdAoJcmVnaXN0cnkgYWNjZXNzZXMuCgoJKiB3aW5lZGVmYXVsdC5yZWc6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglBZGRlZCBpOG4gZW50cmllcy4KCgkqIGRsbHMvbXN2Y3J0L2NwcC5jOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJVXNlIGV4Y2VwdGlvbiBhcyB0aGUgYmFzZSBmb3IgYWxsIGV4Y2VwdGlvbiBkZXJpdmVkIGNsYXNzZXMuCglJbXBsZW1lbnQgdHlwZV9pbmZvIG1ldGhvZHMgY29ycmVjdGx5LgoJQWRkIHN0YXRpYyBSVFRJIGZvciBleHBvcnRlZCBvYmplY3RzLgoJVGhyb3cgZXhjZXB0aW9ucyB3aGVuIHJ1biB0aW1lIGNhc3RzIGZhaWwuCgoJKiBkbGxzL2FkdmFwaTMyL3JlZ2lzdHJ5LmMsIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwKCSAgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3JlZ2lzdHJ5LmMsIHNlcnZlci9yZXF1ZXN0LmgsCgkgIHNlcnZlci90cmFjZS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IHJlZ2lzdHJ5IGtleSB1bmxvYWRpbmcuCgoJKiBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsIHNjaGVkdWxlci9wcm9jZXNzLmMsCgkgIHNlcnZlci9jb25zb2xlLmMsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9wcm90b2NvbC5kZWYsCgkgIHNlcnZlci90cmFjZS5jOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglGaXhlZCByZWdyZXNzaW9uIGluIHByb2Nlc3MgY3JlYXRpb24gKHN0ZCBoYW5kbGUgaW5oZXJpdGFuY2UpLgoKCSogZGxscy9jcnRkbGwvY3J0ZGxsLnNwZWMsIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjLAoJICBkbGxzL21zdmNydGQvbXN2Y3J0ZC5zcGVjLCBkbGxzL250ZGxsL21pc2MuYywgZGxscy9udGRsbC9udGRsbC5zcGVjOgoJX2Z0b2wgc2hvdWxkIHJldHVybiBhIDY0LWJpdCBpbnQgKHNwb3R0ZWQgYnkgSm9uIEdyaWZmaXRocykuCgoJKiBkbGxzL3dpbmVkb3MvcmVsYXkuYzogSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJV2hlbiBmb3JjaW5nIGNhbGwgdG8gRE9TIHJlbGF5IGZyb20gcHJvdGVjdGVkIG1vZGUsIG1ha2Ugc3VyZSB0aGF0CglyZWxheSBzZWVzIG9yaWdpbmFsIHN0YWNrIGFuZCBjb2RlIHBvaW50ZXJzLiBNYWtlIGl0IHBvc3NpYmxlIGZvciBET1MKCXJlbGF5IHRvIG1vZGlmeSBjb2RlIGFuZCBzdGFjayBwb2ludGVycy4KCgkqIGluY2x1ZGUvbW1zeXN0ZW0uaDogRXJ3aW4gV29sZmYgPGVyd2lud29sZmZubEBtaWNyb2Zvcm1hdGljYS5jb20+CglSZW1vdmVkIFZFUlNJT04gdHlwZWRlZi4KCgkqIHByb2dyYW1zL3dpbmVkYmcvbXNjLmM6IEdyZWdvcnkgTS4gVHVybmVyIDxnbXR1cm5lcjAwN0BhbWVyaXRlY2gubmV0PgoJV3JhcCBlcnJvci1wcm9uZSBtc2Mgc3ltYm9sIGxvYWRpbmcgd2l0aCBhIF9fVFJZIGJsb2NrLgoKCSogZGxscy9pbWFnZWhscC9hY2Nlc3MuYzogQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJQWxsb2NhdGUgc3BhY2UgdG8gY29udGFpbiB0aGUgSU1BR0VfTlRfSEVBREVSUyBzdHJ1Y3R1cmUgKEltYWdlTG9hZAoJZnVuY3Rpb24pLgoJQWRkIHNvbWUgbW9yZSB0cmFjZXMuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6CglNYXhpbWUgQmVsbGVuZ+kgPG1heGltZS5iZWxsZW5nZUBsYXBvc3RlLm5ldD4KCUZpeCB1bnJlYWNoYWJsZSBUVkhUX09OSVRFTVNUQVRFSUNPTiBpbiBUUkVFVklFV19MQnV0dG9uRG93bi4KCgkqIGRsbHMvbnRkbGwvdGltZS5jLCBpbmNsdWRlL3dpbnRlcm5sLmg6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJTWFrZSBSdGxUaW1lVG9TZWNvbmRzU2luY2UxOTcwIGNvbnNpc3RlbnQgd2l0aCBvdGhlciB0aW1lIGNhbGxzLgoJRG9jdW1lbnRhdGlvbiBmaXhlcy4KCjIwMDMtMDgtMTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLCBkb2N1bWVudGF0aW9uL2ludHJvZHVjdGlvbi5zZ21sLAoJICBncmFwaGljcy94MTFkcnYvZGliLmMsIG9iamVjdHMvZGMuYywgcHJvZ3JhbXMvYXZpdG9vbHMvYXZpcGxheS5jLAoJICBwcm9ncmFtcy9ub3RlcGFkL21haW4uYywgcHJvZ3JhbXMvcmVnZWRpdC9tYWluLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVNwZWxsaW5nIGFuZCBjYXNlIGZpeGVzLgoKCSogcHJvZ3JhbXMvd2luZW1pbmUvRXMucmMsIHByb2dyYW1zL3dpbmVtaW5lL3JzcmMucmM6CglKb3PpIE1hbnVlbCBGZXJyZXIgT3J0aXogPGptZm8xOTgyQHlhaG9vLmVzPgoJQWRkZWQgU3BhbmlzaCB0cmFuc2xhdGlvbi4KCgkqIGRsbHMvd2luZWRvcy9mcHUuYzogQWRkZWQgbWlzc2luZyBcbiBpbiBUUkFDRSBjYWxscy4KCgkqIGRsbHMva2VybmVsL3N5bmMuYzoKCUZyZWUgdGhlIGRlYnVnIGluZm8gd2hlbiBtYWtpbmcgYSBjcml0aWNhbCBzZWN0aW9uIGdsb2JhbC4KCgkqIGxpYnMvd3BwL3ByZXByb2MuYywgdG9vbHMvYmluMnJlcy5jLCB0b29scy93aWRsL3V0aWxzLmMsCgkgIHRvb2xzL3dpbmVkdW1wL25lLmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJUG9ydGFiaWxpdHkgZml4ZXMuCgoJKiBpbmNsdWRlL29haWRsLmgsIGluY2x1ZGUvb2FpZGwuaWRsOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCU1ha2UgSTEgZmllbGRzIGV4cGxpY2l0bHkgc2lnbmVkLgoJQWRkIHN1cHBvcnQgZm9yIEk4IGZpZWxkcyBpbiB2YXJpYW50cy4KCUFkZCBhIG1pc3NpbmcgdW5kb2N1bWVudGVkIEZBREZfIGZsYWcuCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsIGRsbHMvZGRyYXcvZDNkdGV4dHVyZS5jLAoJICBkbGxzL2RkcmF3L2dsX3ByaXZhdGUuaCwgZGxscy9kZHJhdy9tYWluLmMsCgkgIGRsbHMvZGRyYXcvbWVzYV9wcml2YXRlLmg6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJQWRkZWQgc3VwcG9ydCBmb3IgbXVsdGktdGV4dHVyaW5nLgoKCSogZGxscy9udGRsbC9ydGxzdHIuYywgaW5jbHVkZS93aW5ubHMuaDoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglBZGQgc29tZSBuZXcgdHlwZXMgYW5kIGZ1bmN0aW9ucy4KCVJlbW92ZSBJVFVfSU1QTEVNRU5URURfVEVTVFMsIGl0cyBub3QgcGFydCBvZiB0aGUgV2luMzIgQXBpLgoKCSogZGxscy9vbGVhdXQzMi9vbGVwaWN0dXJlLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglGaXhlZCBXYXJibGFkZSBpbWFnZSBsb2FkaW5nLgoKCSogZGxscy9kc291bmQvdGVzdHMvcHJvcHNldC5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJRml4ZWQgYnVnIHdoZXJlIGxhc3QgdGVzdHMgd2VyZSBub3QgZXhlY3V0ZWQuCglQcmludCBvdXQgc291bmQgZGV2aWNlIGluZm8uCgoJKiBkbGxzL3dpbmVkb3MvaW50ZXJydXB0cy5jOiBKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglGaXggQ1BVIGZsYWcgaGFuZGxpbmcgd2hlbiBpbnRlcm5hbCBpbnRlcnJ1cHRzIGFyZSBicmFuY2hlZCB0by4KCgkqIGxvYWRlci9tb2R1bGUuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGJhaWthbC5ydT4KCVdpbmRvd3MgaWdub3JlcyB2YWx1ZXMgb2YgZV9jcGFyaGRyIGFuZCBlX2NybGMgb2YgdGhlIE1aIGhlYWRlci4KCgkqIGRsbHMveDExZHJ2L2tleWJvYXJkLmM6IFJhdWwgPHpvbWJpODJAaG90LmVlPgoJU21hbGwgRXN0b25pYW4ga2V5Ym9hcmQgZml4LgoKCSogZGxscy9jYWJpbmV0L2ZkaS5jOiBHcmVnb3J5IE0uIFR1cm5lciA8Z210dXJuZXIwMDdAYW1lcml0ZWNoLm5ldD4KCURvbid0IHRvdWNoIHBlcmYgaW4gRkRJSXNDYWJpbmV0LCBJbnN0YWxsU2hpZWxkIG1heSBhbHJlYWR5IGhhdmUgZnJlZWQKCWl0LgoKCSogdG9vbHMvd2luZWR1bXAvTWFrZWZpbGUuaW46IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglVc2UgJChFWEVFWFQpIGZvciB0aGUgd2luZWR1bXAgZXhlY3V0YWJsZS4KCgkqIHRvb2xzL3dyYy93cmMuYzogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCU9ubHkgc3RhdGljcyBhcmUgc3VyZSB0byBiZSBzZXQgdG8gMCwgZXhwbGljaXRseSBpbml0aWFsaXNlIGdsb2JhbHMuCgoJKiBkbGxzL29sZTMyL2RlZmF1bHRoYW5kbGVyLmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJUmVtb3ZlIHJlZHVuZGFudCB3aW5lIHNwZWNpZmljICNpbmNsdWRlLgoKCSogdG9vbHMvd2luYXBpL21zdmNtYWtlcjogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCW9sZS8gZGlyZWN0b3J5IGRvZXNuJ3QgZXhpc3QgYW55bW9yZS4KCgkqIGRsbHMva2VybmVsL3RpbWUuYzogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCVNwZWxsaW5nIGZpeGVzLgoKCSogaW5jbHVkZS93aW5lcnJvci5oOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJQ2FzdCBocmVzdWx0IGVycm9yIGNvZGVzIHRvIEhSRVNVTFQuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6CglNYXhpbWUgQmVsbGVuZ+kgPG1heGltZS5iZWxsZW5nZUBsYXBvc3RlLm5ldD4KCUZpeCB0aGluZ3MgYnJva2VuIGJ5IHRoZSBsYXN0IFRSRUVWSUVXX1VwZGF0ZURpc3BJbmZvIHBhdGNoLgoKCSogZGxscy9udGRsbC9maWxlLmM6IEVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJUmVncmVzc2lvbiBmaXhlcyBmb3IgTnR7UmVhZHxXcml0ZX1GaWxlOgoJLSBhY3R1YWxseSBibG9jayBpbiBUSU1FT1VUIG1vZGUKCS0gaW4gb3ZlcmxhcHBlZCBtb2RlLCBpZiBhbnkgZGF0YSBpcyBhbHJlYWR5IGF2YWlsYWJsZSB0aGVuIHByb2Nlc3MgaXQKCSAgd2l0aG91dCByZXR1cm5pbmcgYSBwZW5kaW5nIHN0YXR1cyBjb2RlCgoJKiBwcm9ncmFtcy9yZWdlZGl0L1B0LnJjLCBwcm9ncmFtcy9yZWdlZGl0L3JzcmMucmM6CglNYXJjZWxvIER1YXJ0ZSA8d2luZS1kZXZlbEBib2wuY29tLmJyPgoJTG9jYWxpemF0aW9uIHRvIHRoZSBQb3J0dWd1ZXNlIG9mIEJyYXppbC4KCjIwMDMtMDgtMTUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL250ZGxsL3N5c2RlcHMuYywgaW5jbHVkZS90aHJlYWQuaCwgc2NoZWR1bGVyL3B0aHJlYWQuYywKCSAgc2NoZWR1bGVyL3RocmVhZC5jOgoJTW92ZWQgX19lcnJub19sb2NhdGlvbigpIGhhbmRsaW5nIHRvIHB0aHJlYWQuYywgYW5kIGFkZGVkIHNpbWlsYXIKCWhhbmRsaW5nIGZvciBfX3Jlc19zdGF0ZSgpLgoKCSogZGxscy9tc2kvTWFrZWZpbGUuaW46IEFkZGVkIG1pc3NpbmcgZGVwZW5kZW5jeS4KCgkqIHByb2dyYW1zL3J1bmRsbDMyL3J1bmRsbDMyLmM6IEZpeGVkIGluZGVudGF0aW9uLgoKCSogZG9jdW1lbnRhdGlvbi9jb25maWd1cmluZy5zZ21sLAoJICBkb2N1bWVudGF0aW9uL2luc3RhbGxhdGlvbi11bmQta29uZmlndXJhdGlvbi5nZXJtYW4sCgkgIGRvY3VtZW50YXRpb24vc2FtcGxlcy9jb25maWcsIHByb2dyYW1zL3dpbmVjZmcvcHJvcGVydGllcy5oLAoJICBwcm9ncmFtcy93aW5lY2ZnL3dpbmVjZmcuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglSZW1vdmUgZnJvbSBkb2NzIC8gY29uZmlnIHRvb2wgdXNlbGVzcyAvIG9ic29sZXRlZCBvcHRpb25zLgoKCSogZGxscy9kM2Q4L2QzZDhfbWFpbi5jLCBkbGxzL2QzZDgvZDNkOF9wcml2YXRlLmgsIGRsbHMvZDNkOC9kZXZpY2UuYywKCSAgZGxscy9kM2Q4L2RpcmVjdHguYywgZGxscy9kM2Q4L3V0aWxzLmM6CglKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJRFhUMS8zLzUgc3VwcG9ydCB3YXMgYnJva2VuLCBidXQgdW5ub3RpY2VhYmxlIHNpbmNlIHdlIGFsc28gaW5kaWNhdGVkCglpdCB3YXNuJ3Qgc3VwcG9ydGVkLgoKCSogcHJvZ3JhbXMvd2luZWNmZy9wcm9wZXJ0aWVzLmM6CglFLiBDLiBGLiBXb2xmZiA8ZXJ3aW53b2xmZm5sQG1pY3JvZm9ybWF0aWNhLmNvbT4KCUFkZGVkIFdpbmRvd3MgMmszLgoKCSogZGxscy93aW5pbmV0L2h0dHAuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJVXNlIFdpZGVCeXRlVG9NdWx0aUNoYXIgbm90IHN0cmxlblcuCglVc2UgSGVhcEFsbG9jLCBub3QgbWFsbG9jLgoKCSogcHJvZ3JhbXMvcmVnZWRpdC9yZWdlZGl0LmM6CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglGaXhlZCBjb21tYW5kIGxpbmUgc3VwcG9ydC4KCjIwMDMtMDgtMTMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBBTk5PVU5DRSwgQ2hhbmdlTG9nLCBWRVJTSU9OLCBjb25maWd1cmU6IFJlbGVhc2UgMjAwMzA4MTMuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjIwMDMtMDgtMTMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL21zdmNydC9zdGRpby5oOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQWxpYXMgX3ZzbnByaW50ZiBhcyB2c25wcmludGYuCgoJKiB0b29scy93aW5lYnVpbGQvaW1wb3J0LmM6CglTdXBwb3J0IGZvciBNYWMgT1MgWCBwb3dlcnBjIHJlZ2lzdGVyIG5hbWVzIChiYXNlZCBvbiBhIHBhdGNoIGJ5CglQaWVycmUgZCdIZXJiZW1vbnQpLgoKCSogcHJvZ3JhbXMvd2luZWZpbGUvd2luZWZpbGUuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglGaXggY29tcGlsYXRpb24gZXJyb3IuCgoJKiBwcm9ncmFtcy93aW5lZmlsZS9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luZWZpbGUvcmVzb3VyY2UucmMsCgkgIHByb2dyYW1zL3dpbmVmaWxlL3dpbmVmaWxlLmM6CglSaWNoYXJkIENvaGVuIDxyaWNoYXJkLmNvaGVuQHZpcmdpbi5uZXQ+CglVc2UgX19XSU5FX18gaW5zdGVhZCBvZiBfV0lORV8sIF9XSU4zMi4KCgkqIHByb2dyYW1zL3dpbmVtZW51YnVpbGRlci93aW5lbWVudWJ1aWxkZXIuYzoKCVJpY2hhcmQgQ29oZW4gPHJpY2hhcmQuY29oZW5AdmlyZ2luLm5ldD4KCVJlbW92ZSBubyBsb25nZXIgbmVjZXNzYXJ5IGluY2x1ZGVzIDxzaWduYWwuaD4sIDx3YWl0Lmg+LgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOgoJTWF4aW1lIEJlbGxlbmfpIDxtYXhpbWUuYmVsbGVuZ2VAbGFwb3N0ZS5uZXQ+CglGaXggZm9yIFRSRUVWSUVXX1VwZGF0ZURpc3BJbmZvIHRvIHRlc3Qgd2l0aCB0aGUgY29ycmVjdCBjYWxsYmFja01hc2suCgoJKiBtaXNjL3ZlcnNpb24uYzogVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJQWRkIFdpbmRvd3MgMjAwMyB0byB0aGUgdmVyc2lvbnMgV2luZSBjYW4gcmV0dXJuLgoKCSogb2JqZWN0cy9kYy5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQ29udmVydCBpbml0RGF0YSBhcyB3ZWxsLgoKCSogaW5jbHVkZS9tc3ZjcnQvc3lzL3N0YXQuaDogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUFkZCBkZWZpbml0aW9ucyBmb3IgdGhlIFNfSVMqIG1hY3Jvcy4KCgkqIGluY2x1ZGUvd2lubnQuaDogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUFkZCBhIGJ1bmNoIG9mIElNQUdFX1NJWkVPRl8qIGNvbnN0YW50cy4KCgkqIGRsbHMvYWR2YXBpMzIvYWR2YXBpMzIuc3BlYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IHNwZWMgZm9yIEluaXRpYXRlU3lzdGVtU2h1dGRvd25FeEEsIGFzIHBvaW50ZWQgb3V0IGJ5IFN0ZWZhbgoJTGVpY2h0ZXIuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9tc2kvLmN2c2lnbm9yZSwKCSAgZGxscy9tc2kvTWFrZWZpbGUuaW4sIGRsbHMvbXNpL2Rpc3RpbmN0LmMsIGRsbHMvbXNpL2hhbmRsZS5jLAoJICBkbGxzL21zaS9tc2kuYywgZGxscy9tc2kvbXNpLnNwZWMsIGRsbHMvbXNpL21zaXByaXYuaCwKCSAgZGxscy9tc2kvbXNpcXVlcnkuYywgZGxscy9tc2kvb3JkZXIuYywgZGxscy9tc2kvcXVlcnkuaCwKCSAgZGxscy9tc2kvcmVjb3JkLmMsIGRsbHMvbXNpL3NlbGVjdC5jLCBkbGxzL21zaS9zcWwueSwKCSAgZGxscy9tc2kvc3VtaW5mby5jLCBkbGxzL21zaS90YWJsZS5jLCBkbGxzL21zaS90b2tlbml6ZS5jLAoJICBkbGxzL21zaS93aGVyZS5jLCBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL21zaS5oLAoJICBpbmNsdWRlL21zaXF1ZXJ5Lmg6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglQYXJ0aWFsIGltcGxlbWVudGF0aW9uIG9mIHRoZSBNaWNyb3NvZnQgSW5zdGFsbGVyIChtc2kuZGxsKS4KCgkqIHByb2dyYW1zL3dpbmVmaWxlL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5lZmlsZS9yZXNvdXJjZS5oLAoJICBwcm9ncmFtcy93aW5lZmlsZS93aW5lZmlsZS5jLCBwcm9ncmFtcy93aW5lZmlsZS93aW5lZmlsZS5oOgoJTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCUV4dGVuZGVkIHdpbmVmaWxlIGZvciBhbiBvcHRpb25hbCBzaGVsbCBuYW1lc3BhY2UgbW9kZS4KCgkqIGRsbHMvbnRkbGwvY3JpdHNlY3Rpb24uYzoKCURvbid0IHRyeSB0byBhbGxvY2F0ZSB0aGUgZGVidWcgaW5mbyBiZWZvcmUgdGhlIHByb2Nlc3MgaGVhcCBleGlzdHMuCgoyMDAzLTA4LTEyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9kaW5wdXQva2V5Ym9hcmQvbWFpbi5jLCBkbGxzL2dkaS9kcml2ZXIuYywKCSAgZGxscy9rZXJuZWwvY29uc29sZS5jLCBkbGxzL2tlcm5lbC9rZXJuZWxfbWFpbi5jLAoJICBkbGxzL250ZGxsL2NyaXRzZWN0aW9uLmMsIGRsbHMvbnRkbGwvbG9hZGVyLmMsIGRsbHMvbnRkbGwvcnRsLmMsCgkgIGRsbHMvbnRkbGwvdmlydHVhbC5jLCBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGUzMi9pZnMuYywKCSAgZGxscy9ycGNydDQvcnBjX2JpbmRpbmcuYywgZGxscy9ycGNydDQvcnBjX3NlcnZlci5jLAoJICBkbGxzL3NoZWxsMzIvY2hhbmdlbm90aWZ5LmMsIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYywKCSAgZGxscy91c2VyL2RkZS9taXNjLmMsIGRsbHMvdXNlci9tZXNzYWdlLmMsIGRsbHMvd2luYXNwaS93aW5hc3BpMzIuYywKCSAgZGxscy93aW5lZG9zL2Rvc3ZtLmMsIGRsbHMvd2luZWRvcy92Z2EuYywgZGxscy93aW5zb2NrL2FzeW5jLmMsCgkgIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmMsIGRsbHMveDExZHJ2L3hyZW5kZXIuYywgZmlsZXMvcHJvZmlsZS5jLAoJICBncmFwaGljcy94MTFkcnYveGZvbnQuYywgaW5jbHVkZS93aW5iYXNlLmgsIG9iamVjdHMvZ2Rpb2JqLmMsCgkgIHNjaGVkdWxlci9wdGhyZWFkLmMsIHNjaGVkdWxlci9zeXNsZXZlbC5jLCB3aW5kb3dzL2N1cnNvcmljb24uYywKCSAgd2luZG93cy90aW1lci5jLCB3aW5kb3dzL3VzZXIuYywgd2luZG93cy93aW4uYywgd2luZG93cy93aW5wcm9jLmM6CglBbGxvY2F0ZSBEZWJ1Z0luZm8gZmllbGQgZm9yIGFsbCBjcml0aWNhbCBzZWN0aW9ucyAoYmFzZWQgb24gYSBwYXRjaAoJYnkgQWxleCBQYXNhZHluKS4KCUdldCByaWQgb2YgdGhlIFdpbmUtc3BlY2lmaWMgQ1JJVElDQUxfU0VDVElPTl9JTklUIG1hY3JvLgoKCSogZGxscy93aW5zcG9vbC9pbmZvLmM6IEF2b2lkIGNyYXNoZXMgd2hlbiBkZXZtb2RlIGlzIG51bGwuCgoJKiBkbGxzL2dkaS9kcml2ZXIuYywgZGxscy9nZGkvZ2RpMzIuc3BlYywgZGxscy90dHlkcnYvZGMuYywKCSAgZGxscy93aW5lcHMvaW5pdC5jLCBkbGxzL3dpbnNwb29sL01ha2VmaWxlLmluLCBkbGxzL3dpbnNwb29sL2luZm8uYywKCSAgZ3JhcGhpY3MveDExZHJ2L2luaXQuYywgaW5jbHVkZS9nZGkuaCwgaW5jbHVkZS93aW5nZGkuaCwKCSAgb2JqZWN0cy9kYy5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUNvbnZlcnQgQ3JlYXRlREMgdG8gdW5pY29kZSBpbiB0aGUgZHJpdmVyIGludGVyZmFjZS4KCgkqIGRsbHMvbnRkbGwvaGVhcC5jOiBNaW5vciB0cmFjaW5nIGZpeC4KCgkqIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglQcmludCBYIGRpc3BsYXkgYW5kIGxvY2FsZSBvZiBYIElucHV0IE1ldGhvZCBpbiB0aGUgZGVidWcgbG9nLgoKCSogZGxscy91c2VyL3VzZXIzMi5zcGVjLCBpbmNsdWRlL3dpbnVzZXIuaCwgd2luZG93cy93aW4uYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVN0dWIgaW1wbGVtZW50YXRpb24gb2YgRmxhc2hXaW5kb3dFeC4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX1N2LnJjOiBKb2hhbiBEYWhsaW4gPGpkYWhsaW5AYXN5bmMuY29tLmJyPgoJVXBkYXRlZCBTd2VkaXNoIHRyYW5zbGF0aW9uLgoKCSogZGxscy9udGRsbC9zeXNkZXBzLmMsIHNjaGVkdWxlci9wdGhyZWFkLmM6CglGaXhlZCB0aGUgcHRocmVhZCB3cmFwcGVycyB0byB3b3JrIHdpdGggdGhlIG5ldyBnbGliYy9saW51eHRocmVhZHMKCWludGVyZmFjZSBpbiBnbGliYyAyLjMuMi4KCgkqIGRsbHMva2VybmVsL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLAoJICBkbGxzL2tlcm5lbC9wb3dlcm1nbnQuYywgZGxscy9rZXJuZWwvdGhyZWFkLmMsIGluY2x1ZGUvd2luYmFzZS5oLAoJICBpbmNsdWRlL3dpbm50LmgsIHdpbjMyL25ld2Zucy5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUNvbnNvbGlkYXRlIGFsbCBrZXJuZWwgcG93ZXIgbWFuYWdlbWVudCBmdW5jdGlvbnMuCglQcm92aWRlIHByb3RvdHlwZXMgYW5kIHN0dWJzIGZvciBtaXNzaW5nIGZ1bmN0aW9ucy4KCgkqIGRsbHMveDExZHJ2L2tleWJvYXJkLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglJZ25vcmUgc29tZSBrZXlib2FyZCBldmVudHMuIEluIGFueSBjYXNlIHdlIGRvbid0IGtub3cgaG93IHRvIGhhbmRsZQoJdGhlbS4KCgkqIGRsbHMvd2luc3Bvb2wvaW5mby5jLCBkbGxzL3dpbnNwb29sL3dpbnNwb29sLmRydi5zcGVjOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJU3R1YiBzb21lIHdpbnNwb29sIGZ1bmN0aW9ucy4KCgkqIGluY2x1ZGUvd2luZXJyb3IuaDogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgdHdvIHByaW50ZXIgZXJyb3IgY29kZXMuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglFeHBvcnQgU0hCaW5kVG9QYXJlbnQgKGFscmVhZHkgaW1wbGVtZW50ZWQpLgoKCSogZGxscy9hZHZhcGkzMi9hZHZhcGkuYywgZGxscy9hZHZhcGkzMi9hZHZhcGkzMi5zcGVjLAoJICBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglTdHVicyBmb3IgYWR2YXBpMzIgZnVuY3Rpb25zIEluaXRpYXRlU3lzdGVtU2h1dGRvd25FeCwgU2V0RW50cmllc0luQWNsCglhbmQgU2V0TmFtZWRTZWN1cml0eUluZm8uCgoJKiBpbmNsdWRlL3JpY2hlZGl0Lmg6IFBoaWwgS3J5bG92IDxwaGlsQG5ld3N0YXIucmluZXQucnU+CglBZGRlZCBFU19TRUxFQ1RJT05CQVIgc3R5bGUuCgoyMDAzLTA4LTExICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29udHJvbHMvc2Nyb2xsLmMsIGNvbnRyb2xzL3N0YXRpYy5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVdNX1BBSU5UKHdQYXJhbSkgbWlnaHQgYmUgYSB2YWxpZCBIREMuCgoJKiBkbGxzL2NvbWN0bDMyL3N0YXR1cy5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWNjZXB0IFNJWkVfTUFYSU1JWkVEIGFzIG9uZSBvZiBzdGF0dXNlcyBvZiBNREkgd2luZG93cy4KCgkqIGluY2x1ZGUvY29tbWRsZy5oOiBQaGlsIEtyeWxvdiA8cGhpbEBuZXdzdGFyLnJpbmV0LnJ1PgoJQWRkZWQgc29tZSBtaXNzaW5nIEZSXyogZGVmaW5lcy4KCgkqIHByb2dyYW1zL3dpbmhlbHAvd2luaGVscC5jOiBKb2hhbiBEYWhsaW4gPGpkYWhsaW5AYXN5bmMuY29tLmJyPgoJTWFrZSBzdXJlIHdpbmhlbHAgZG9lc24ndCBzY3JvbGwgb3V0c2lkZSBvZiBpdHMgZGlzcGxheSBhcmVhLgoKCSogZGxscy9hZHZhcGkzMi9hZHZhcGkzMi5zcGVjLCBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglTdHVicyBmb3IgQnVpbGRUcnVzdGVlV2l0aFNpZChBL1cpLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWM6IEdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJcmVzb2x2LmggbWF5IHJlcXVpcmUgbmV0aW5ldC9pbi5oLCBzbyB0cnkgdG8gI2luY2x1ZGUgdGhhdCB3aGVuCgljaGVja2luZyBmb3IgdGhlIGZvcm1lci4KCjIwMDMtMDgtMDggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmM6CglNYWtlIGRvX2Jsb2NrIHVzZSBwb2xsKCkgcmF0aGVyIHRoYW4gc2VsZWN0KCkgKGJhc2VkIG9uIGEgcGF0Y2ggYnkKCU1pa2UgSGVhcm4pLgoKCSogZGxscy9hdmlmaWwzMi9hcGkuYywgZGxscy9jb21jYXQvcmVnc3ZyLmMsIGRsbHMvY3RsM2QvY3RsM2QuYywKCSAgZGxscy9jdGwzZC9jdGwzZC5zcGVjLCBkbGxzL2N0bDNkL2N0bDNkMzIuYywgZGxscy9jdGwzZC9jdGwzZHYyLnNwZWMsCgkgIGRsbHMvZDNkOC9kM2Q4X21haW4uYywgZGxscy9kM2Q5L2QzZDlfbWFpbi5jLCBkbGxzL2lwaGxwYXBpL2lmZW51bS5jLAoJICBkbGxzL2lwaGxwYXBpL2lwaGxwYXBpX21haW4uYywgZGxscy9rZXJuZWwvbG9jYWxlLmMsCgkgIGRsbHMvb2xlMzIvbWVtbG9ja2J5dGVzMTYuYywgZGxscy9vbGUzMi9vbGUyLnNwZWMsCgkgIGRsbHMvb2xlMzIvcmVnc3ZyLmMsIGRsbHMvb2xlYXV0MzIvb2xlcGljdHVyZS5jLCBkbGxzL29wZW5nbDMyL3dnbC5jLAoJICBkbGxzL3NoZWxsMzIvc2hsZmlsZW9wLmMsIGRsbHMvd2luZWRvcy9pbnRlcnJ1cHRzLmMsCgkgIGRsbHMvd2luZXBzL2RyaXZlci5jLCBkbGxzL3dpbmluZXQvY29va2llLmMsIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jLAoJICBkbGxzL3dpbmluZXQvdXJsY2FjaGUuYywgZGxscy94MTFkcnYvd2luZG93LmMsCgkgIGRsbHMveDExZHJ2L3gxMWRydi5zcGVjOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIGlzc3VlcyBmb3VuZCBieSB3aW5hcGlfY2hlY2suCgoJKiB0b29scy93aW5hcGkvY29uZmlnLnBtLCB0b29scy93aW5hcGkvd2luMTYuYXBpLAoJICB0b29scy93aW5hcGkvd2luMzIuYXBpLCB0b29scy93aW5hcGkvd2luYXBpLnBtLAoJICB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5kYXQsIHRvb2xzL3dpbmFwaV9jaGVjay9uYXRpdmVhcGkucG0sCgkgIHRvb2xzL3dpbmFwaV9jaGVjay9wcmVwcm9jZXNzb3IucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfY2hlY2ssCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfZG9jdW1lbnRhdGlvbi5wbSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9nbG9iYWwucG0sCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfcGFyc2VyLnBtOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIEFQSSBmaWxlcyB1cGRhdGUuCgktIE1pbm9yIGJ1ZyBmaXhlcy4KCgkqIHByb2dyYW1zL3JlZ2VkaXQvdHJlZXZpZXcuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGJhaWthbC5ydT4KCUZpeGVkIGJ1aWxkIHdpdGggb2xkZXIgY29tcGlsZXJzLgoKCSogZGxscy9kM2RpbS92ZXJzaW9uLnJjLCBkbGxzL2RpbnB1dC92ZXJzaW9uLnJjOgoJVG9tIFdpY2tsaW5lIDx0d2lja2xpbmVAc2t5YmVzdC5jb20+CglTZXQgdmVyc2lvbiB0byBEaXJlY3RYIDcuCgoyMDAzLTA4LTA3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9kcGxheXgvdmVyc2lvbi5yYzogVG9tIFdpY2tsaW5lIDx0d2lja2xpbmVAc2t5YmVzdC5jb20+CglTZXQgdmVyc2lvbiB0byBEaXJlY3RYIDcuCgoJKiBkbGxzL2Rzb3VuZC9wcm9wc2V0LmM6IER1YW5lIENsYXJrIDxkY2xhcmtAYWthbWFpbC5jb20+CglNb3ZlIGRlY2xhcmF0aW9ucyB0byBjb21waWxlIHdpdGggb2xkZXIgY29tcGlsZXJzLgoKCSogdG9vbHMvd2luZWdjYy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQmV0dGVyIHN1cHBvcnQgZm9yIF9fZGVjbHNwZWMoKSAoYmFzZWQgb24gYSBzdWdnZXN0aW9uIGZyb20gT3ZlCglLYWF2ZW4pLgoKCSogZGxscy94MTFkcnYva2V5Ym9hcmQuYzoKCVN1cHBoYWNob2tlIFN1bnRpd2ljaGF5YSA8bXJjaG9rZUBvcGVudGxlLm9yZz4KCUFkZGVkIFRoYWkga2V5Ym9hcmQgbGF5b3V0LgoKCSogbWlzYy9yZWdpc3RyeS5jOiBHZXQgcmlkIG9mIHdyb25nL2NvbmZ1c2luZyBfc3RyZHVwbkEgdXNhZ2UuCgoJKiBwcm9ncmFtcy9yZWdlZGl0Ly5jdnNpZ25vcmUsIHByb2dyYW1zL3JlZ2VkaXQvRW4ucmMsCgkgIHByb2dyYW1zL3JlZ2VkaXQvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3JlZ2VkaXQvYWJvdXQuYywKCSAgcHJvZ3JhbXMvcmVnZWRpdC9jaGlsZHduZC5jLCBwcm9ncmFtcy9yZWdlZGl0L2ZyYW1ld25kLmMsCgkgIHByb2dyYW1zL3JlZ2VkaXQvbGlzdHZpZXcuYywgcHJvZ3JhbXMvcmVnZWRpdC9tYWluLmMsCgkgIHByb2dyYW1zL3JlZ2VkaXQvbWFpbi5oLCBwcm9ncmFtcy9yZWdlZGl0L3JlZ2VkaXQuYywKCSAgcHJvZ3JhbXMvcmVnZWRpdC9yZWdwcm9jLmMsIHByb2dyYW1zL3JlZ2VkaXQvcmVncHJvYy5oLAoJICBwcm9ncmFtcy9yZWdlZGl0L3Jlc291cmNlLmgsIHByb2dyYW1zL3JlZ2VkaXQvcmVzb3VyY2UucmMsCgkgIHByb2dyYW1zL3JlZ2VkaXQvcnNyYy5yYywgcHJvZ3JhbXMvcmVnZWRpdC90cmVldmlldy5jOgoJUm9iZXJ0IERpY2tlbnNvbiA8cm9iZEByZWFjdG9zLm9yZz4KCVN0ZXZlbiBFZHdhcmRzIDxTdGV2ZW5fRWQ0MTUzQHlhaG9vLmNvbT4KCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudGVkIEdVSSBmb3IgcmVnZWRpdC4KCgkqIGRsbHMvZHNvdW5kL3Rlc3RzLy5jdnNpZ25vcmU6IEFkZGVkIHByb3BzZXQub2suCgoJKiBkbGxzL3VzZXIvdGVzdHMvc3lzcGFyYW1zLmM6IFJpY2hhcmQgQ29oZW4gPHJpY2hhcmQuY29oZW5AdmlyZ2luLm5ldD4KCVN5c3RlbVBhcmFtZXRlcnNJbmZvIHJldHVybmluZyBhIHZhbHVlIGZvciBXYWxscGFwZXIgZG9lcyBub3QgbWVhbgoJdGhhdCB0aGUgcmVnaXN0cnkga2V5IGV4aXN0cy4KCgkqIHByb2dyYW1zL3dpbmVkYmcvaGFzaC5jLCBwcm9ncmFtcy93aW5lZGJnL3N0YWJzLmM6CglSaWNoYXJkIENvaGVuIDxyaWNoYXJkLmNvaGVuQHZpcmdpbi5uZXQ+CglVc2UgdGhlIEVMRiBzZWN0aW9ucyBmb3IgdGhlIGFkZHJlc3NlcyBvZiBnbG9iYWxzLCBhcyB0aGUgU1RBQlMgYXJlCglsaWtlbHkgdG8gYmUgd3JvbmcuCgoJKiBwcm9ncmFtcy93aW5lZGJnL21lbW9yeS5jLCBwcm9ncmFtcy93aW5lZGJnL3R5cGVzLmM6CglSaWNoYXJkIENvaGVuIDxyaWNoYXJkLmNvaGVuQHZpcmdpbi5uZXQ+CgktIFByaW50IHNob3J0IEFTQ0lJIHN0cmluZ3Mgd2l0aG91dCB0aGUgIi4uLiIKCS0gTWFrZSBwcmludGluZyBmb3IgVW5pY29kZSBzdHJpbmdzIG1vcmUgc2ltaWxhciB0byBBU0NJSS4KCjIwMDMtMDgtMDYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3F1YXJ0ei9NYWtlZmlsZS5pbiwgZGxscy9xdWFydHovZmlsZXNvdXJjZS5jLAoJICBkbGxzL3F1YXJ0ei9tYWluLmMsIGRsbHMvcXVhcnR6L3F1YXJ0el9wcml2YXRlLmg6CglSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJQWRkZWQgRmlsZSBTb3VyY2UgKEFzeW5jKSBGaWx0ZXIuCgoJKiBkbGxzL2Rzb3VuZC90ZXN0cy9NYWtlZmlsZS5pbiwgZGxscy9kc291bmQvdGVzdHMvZHNvdW5kLmMsCgkgIGRsbHMvZHNvdW5kL3Rlc3RzL3Byb3BzZXQuYzoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglBZGRlZCBzb21lIENPTSBhbmQgcHJvcGVydHkgc2V0IHRlc3RzLgoJQWRkZWQgTElCVVVJRCB0byBtYWtlZmlsZS4KCgkqIGRsbHMvZHNvdW5kL2J1ZmZlci5jLCBkbGxzL2Rzb3VuZC9jYXB0dXJlLmMsCgkgIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmMsIGRsbHMvZHNvdW5kL2Rzb3VuZF9wcml2YXRlLmgsCgkgIGRsbHMvZHNvdW5kL3ByaW1hcnkuYywgZGxscy9kc291bmQvcHJvcHNldC5jLCBkbGxzL2Rzb3VuZC9zb3VuZDNkLmM6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQWRkZWQgY2xhc3MgZmFjdG9yaWVzIGZvciBEaXJlY3RTb3VuZENhcHR1cmUsIERpcmVjdFNvdW5kRnVsbER1cGxleAoJYW5kIERpcmVjdFNvdW5kUHJpdmF0ZS4KCUFkZGVkIGVycm9yIGNoZWNraW5nIHRvIFF1ZXJ5SW50ZXJmYWNlIGFuZCBDcmVhdGVJbnRlcmZhY2UuCglBZGRlZCBzb21lIG1vcmUgZnVuY3Rpb25hbGl0eSB0byBwcm9wZXJ0eSBzZXRzLgoKCSogZGxscy9udGRsbC90ZXN0cy9sYXJnZV9pbnQuYywgZGxscy9udGRsbC90ZXN0cy9ydGwuYywKCSAgZGxscy9udGRsbC90ZXN0cy9zdHJpbmcuYywgZGxscy9zaGx3YXBpL3N0cmluZy5jOgoJQXZvaWQgbm9uLXBvcnRhYmxlIGxvbmcgbG9uZyBjb25zdGFudHMuCgoJKiBkbGxzL2tlcm5lbC9sb2NhbDE2LmMsIGRsbHMva2VybmVsL3Rlc3RzL2F0b20uYywKCSAgZGxscy9tc3ZjcnQvbG9jYWxlLmMsIGRsbHMvc2hlbGwzMi9zaGVsbC5jOgoJV2FybmluZyBmaXhlcy4KCgkqIGxpYnMvdXVpZC91dWlkLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCURlZmluZWQgRk1USURzIGZvciBvbGUzMi4KCgkqIGRsbHMvY29tY3RsMzIvdHJhY2tiYXIuYzogRHVhbmUgQ2xhcmsgPGRjbGFya0Bha2FtYWlsLmNvbT4KCU9vcHMsIGJhY2sgdG8gaGFyZCBjb2RpbmcgaW5pdGlhbCB0aHVtYiBzaXplIHVudGlsIHdlIGZpZ3VyZSBvdXQgaG93CglpdCByZWFsbHkgc2hvdWxkIHdvcmsuCglGaXggdGhlIGNoYW5uZWwgc2l6ZS9zZWxlY3Rpb24gcmFuZ2UgZm9yIHRoZSBUQlNfRU5BQkxFU0VMUkFOR0UKCXN0eWxlLgoJT25lIHBpeGVsIHR3ZWFrcyBpbiBzZXZlcmFsIHNwb3RzLgoKCSogZGxscy9xdWFydHovTWFrZWZpbGUuaW4sIGRsbHMvcXVhcnR6L2VudW1tZWRpYS5jLAoJICBkbGxzL3F1YXJ0ei9lbnVtcGlucy5jLCBkbGxzL3F1YXJ0ei9maWx0ZXJncmFwaC5jLAoJICBkbGxzL3F1YXJ0ei9maWx0ZXJtYXBwZXIuYywgZGxscy9xdWFydHovbWFpbi5jLCBkbGxzL3F1YXJ0ei9waW4uYywKCSAgZGxscy9xdWFydHovcGluLmgsIGRsbHMvcXVhcnR6L3F1YXJ0el9wcml2YXRlLmg6CglSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJLSBCdWdmaXggd2hlbiBhZGRpbmcgZmlsdGVycyB0byBncmFwaCBkdWUgdG8gbm90IGluaXRpYWxpemluZwoJICB2YXJpYWJsZXMgb24gY3JlYXRpb24gb2YgZ3JhcGguCgktIFJlbW92ZSBjbHVlIG9mIHdoZXJlIEkgY29waWVkIG9uZSBvZiB0aGUgY29weXJpZ2h0IG1lc3NhZ2VzIGZyb20uCgktIEFkZCBpbXBsZW1lbnRhdGlvbiBvZiBpbnB1dCBhbmQgb3V0cHV0IHBpbnMgd2hpY2ggd2lsbCBiZSB1c2VkIGJ5IGEKCSAgbG90IG9mIGZpbHRlcnMgaW4gUXVhcnR6LgoKMjAwMy0wOC0wNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvd2luaW5ldC9NYWtlZmlsZS5pbiwgZGxscy93aW5pbmV0L3VybGNhY2hlLmMsCgkgIGRsbHMvd2luaW5ldC93aW5pbmV0LnNwZWM6CglSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJLSBEb2N1bWVudGF0aW9uIG9mIHRoZSBpbmRleC5kYXQgZmlsZXMuCgktIFJlYWQgc3VwcG9ydCBmb3IgIlRlbXBvcmFyeSBJbnRlcm5ldCBGaWxlcyIuCgktIExpbWl0ZWQgd3JpdGUgc3VwcG9ydCBmb3IgIlRlbXBvcmFyeSBJbnRlcm5ldCBGaWxlcyIgKHByb3ZpZGVkIGZpbGUKCSAgZG9lcyBub3QgbmVlZCBlbmxhcmdpbmcpLgoJLSBEZWxldGUgc3VwcG9ydCAodW50ZXN0ZWQgb24gYW55dGhpbmcgb3RoZXIgdGhhbiBUZW1wb3JhcnkgSW50ZXJuZXQKCSAgRmlsZXMpLgoKCSogZGxscy93aW5pbmV0L2ludGVybmV0Lmg6CglBdm9pZCBEU0EgdHlwZSBjb25mbGljdCBiZXR3ZWVuIHNzbC5oIGFuZCBjb21tY3RybC5oLgoKCSogZGxscy9kZXZlbnVtL21lZGlhY2F0ZW51bS5jOgoJUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCU1ha2UgSVByb3BlcnRCYWdfUmVhZCB1c2UgYSBkeW5hbWljYWxseSBhbGxvY2F0ZWQgYXJyYXkgcmF0aGVyIHRoYW4gYQoJc3RhdGljIG9uZS4KCgkqIGRsbHMvZDNkOC9kM2Q4X3ByaXZhdGUuaCwgZGxscy9kM2Q4L2RldmljZS5jLCBkbGxzL2QzZDgvc3RhdGVibG9jay5jOgoJSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCU9ubHkgcmVhcHBseSB0aGUgdGV4dHVyZSBzdGF0ZXMgbmVjZXNzYXJ5IHdoZW4gYSBkaWZmZXJlbnQgdGV4dHVyZQoJZ2V0cyBib3VuZCB0byB0aGUgc2FtZSB0ZXh0dXJlIHVuaXQuCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsIGRsbHMvZGRyYXcvZ2xfYXBpLmgsCgkgIGRsbHMvZGRyYXcvZ2xfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L21lc2EuYywKCSAgZGxscy9kZHJhdy9tZXNhX3ByaXZhdGUuaDoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglTdXBwb3J0IHRoZSBtaW1hcCBsb2QgYmlhcyBleHRlbnNpb24uCgoJKiBvYmplY3RzL2ZvbnQuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVVzZSBzYW1lIGZvcm11bGEgdG8gY29udmVydCBmcm9tIGRldmljZSB0byBsb2dpY2FsIHVuaXRzIGFzIGV2ZXJ5d2hlcmUKCWVsc2UuCgoJKiB3aW5kb3dzL3dpbnByb2MuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVByb3RlY3QgQ2FsbFdpbmRvd1Byb2NBL1cgZnJvbSBOVUxMIHBvaW50ZXJzLgoKCSogZGxscy9jYWJpbmV0L2ZkaS5jOiBHcmVnb3J5IE0uIFR1cm5lciA8Z210dXJuZXIwMDdAYW1lcml0ZWNoLm5ldD4KCU1hbnkgd29yZHMgYWJvdXQgY2FiaW5ldHMuCgoJKiB0b29scy93aW5lbWFrZXI6IE1hcnRpbiBXaWxjayA8TWFydGluLldpbGNrQEZ1aml0c3UtU2llbWVucy5jb20+CglGaXggLWkgb3B0aW9uIGZvciB3aW5lYnVpbGQgbGlua2luZy4KCgkqIGRsbHMvd2luaW5ldC9odHRwLmM6IERhdmlkIEhhbW1lcnRvbiA8ZGF2aWRAdHJhbnNnYW1pbmcuY29tPgoJQWRkZWQgc3VwcG9ydCBmb3IgaHR0cC1QT1NUICh3ZWxsLCBhbnkga2luZCBvZiBodHRwIHJlcXVlc3QgdGhhdCBzZW5kcwoJZGF0YSBpbiB0aGUgbHBPcHRpb25hbCBmaWVsZCkuCgoJKiBtaXNjL2NwdS5jOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJRml4IHRoZSBNSHogZGV0ZWN0aW9uIGNvZGUuCgoJKiBkbGxzL2QzZDgvZDNkOF9wcml2YXRlLmgsIGRsbHMvZDNkOC9kZXZpY2UuYywgZGxscy9kM2Q4L2RpcmVjdHguYywKCSAgZGxscy9kM2Q4L2RyYXdwcmltLmM6CglKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJZ2xDb2xvck1hdGVyaWFsIGVuYWJsZS9kaXNhYmxlIHNldHVwIGlzIG9ubHkgZG9uZSB3aGVuIHJlYWxseSBuZWNlc3NhcnkuCglJZiBnbENvbG9yTWF0ZXJpYWwgaXMgc2V0IHRvIHRyYWNrIGN1cnJlbnQgY29sb3IgYW5kIG5vbmUgaXMgc3VwcGxpZWQsCglpdCBnZXRzIGRpc2FibGVkLgoJZ2xNYXRlcmlhbCBpcyByZXNldCB3aGVuIEkgdGhpbmsgaXQgaXMgbmVjZXNzYXJ5LgoJU2xvdyBtb2RlIG5vdyBoYXMgZGVmYXVsdHMgZm9yIHdoZW4gZnZmIHBhcm1zIGFyZSBub3Qgc3VwcGxpZWQgKGFzIHBlcgoJZmFzdCBtb2RlKS4KCVNsb3cgbW9kZSBub3cgc2V0cyB1cCB0aGUgc3BlY3VsYXIgY29sb3IgKGZvcmdvdCB0aGF0IGJpdCBwcmV2aW91c2x5LAoJSSB0aGluayEpLgoJVHJhY2Ugbm93IGxpc3RzIHRoZSBmcm9udCwgYmFjayBhbmQgc3RlbmNpbCBidWZmZXJzIGZvciBlYXNlIG9mCglkZWJ1Z2dpbmcuCgoJKiBkbGxzL2RkcmF3L2QzZHRleHR1cmUuYywgZGxscy9kZHJhdy9nbF9hcGkuaCwKCSAgZGxscy9kZHJhdy9nbF9wcml2YXRlLmgsIGRsbHMvZGRyYXcvbWVzYV9wcml2YXRlLmgsCgkgIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglQcm9wZXIgTUlSUk9SIHRleHR1cmUgYWRkcmVzcyBzdXBwb3J0LgoKCSogZGxscy9kZXZlbnVtL3BhcnNlZGlzcGxheW5hbWUuYzoKCVJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CglJQ3JlYXRlRGV2RW51bV9DcmVhdGVDbGFzc0VudW1lcmF0b3IgY2FuIHJldHVybiBTX0ZBTFNFIHdoZW4KCXRoZXJlIGlzIG5vIGNhdGVnb3J5LCBzbyByZXR1cm4gTUtfRV9OT09CSkVDVCBmcm9tCglJUGFyc2VEaXNwbGF5TmFtZV9QYXJzZURpc3BsYXlOYW1lLgoKCSogd2luZG93cy93aW4uYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2UgR2V0V2luZG93SW5mbygpIHdvcmsgZm9yIGFsbCB3aW5kb3dzIGFuZCByZXR1cm4gY29ycmVjdCB2YWx1ZXMuCgoJKiBvYmplY3RzL2ZvbnQuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUNvcnJlY3RseSB0cnVuY2F0ZSB0bUZpcnN0Q2hhciwgdG1MYXN0Q2hhciwgdG1CcmVha0NoYXIgYXQgMjU1IGluIHRoZQoJcHJvY2VzcyBvZiBXLT5BIGNvbnZlcnNpb24uCgoJKiBkbGxzL3gxMWRydi9rZXlib2FyZC5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlIHJlbW5hbnRzIG9mIHRoZSBvbGQgY29kZS4KCgkqIGRsbHMvY29tY3RsMzIvdHJhY2tiYXIuYzogU3RlcGhhbiBCRVVaRSA8ZmJpZ2d1bkBob3RtYWlsLmNvbT4KCS0gQXZvaWQgZGl2aXNpb24gYnkgemVybyBpbiBUUkFDS0JBUl9HZXRUaWNQb3MKCS0gTWFuYWdlIG5lZ2F0aXZlIHJhbmdlIFRSQUNLQkFSX0RyYXdPbmVUaWMKCjIwMDMtMDgtMDIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9tc3dzb2NrLy5jdnNpZ25vcmUsCgkgIGRsbHMvbXN3c29jay9NYWtlZmlsZS5pbiwgZGxscy9tc3dzb2NrL21zd3NvY2suYywKCSAgZGxscy9tc3dzb2NrL21zd3NvY2suc3BlYywgZGxscy9tc3dzb2NrL3ZlcnNpb24ucmM6CglBbmRy6SBKb2hhbnNlbiA8YW5kcmVqb2hAYzJpLm5ldD4KCUludHJvZHVjZWQgdGhlIG1zd3NvY2sgZGxsLgoJQWRkZWQgc3R1YnMgZm9yIFRyYW5zbWl0RmlsZSgpIGFuZCBBY2NlcHRFeCgpLgoKCSogdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jOgoJTWFrZSBzdXJlIGRsbG5hbWUgZG9lc24ndCBnZXQgb3B0aW1pemVkIG91dCAoc3BvdHRlZCBieSBNYXJjdXMKCU1laXNzbmVyKS4KCgkqIGRsbHMvbnRkbGwvc3lzZGVwcy5jOiBQcm9wZXJseSBmcmVlIHRocmVhZCBzdGFja3Mgb24gTlBUTCBzeXN0ZW1zLgoKCSogZGxscy9jb21jdGwzMi90cmFja2Jhci5jOiBEdWFuZSBDbGFyayA8ZGNsYXJrQGFrYW1haWwuY29tPgoJVGhlIGluaXRpYWwgc2l6ZSBvZiB0aGUgdGh1bWIgZGVwZW5kcyBvbiBTTV9DWUNBUFRJT04uCglDb3JyZWN0bHkgZHJhdyB0aGUgdGh1bWIgYXMgaW4gV2luZG93cy4KCVRoZSBjaGFubmVsL3RodW1iIHBvc2l0aW9uIGFsc28gZGVwZW5kcyBvbiBUQlNfTk9USUNLUy4KCVRoZSBmaXJzdCBhbmQgbGFzdCB0aWMgbWFya3Mgc2hvdWxkIGJlIGluc2V0IGZyb20gdGhlIGNoYW5uZWwgbGVuZ3RoCglieSBoYWxmIHRoZSB0aHVtYiB3aWR0aC4KCVdoZW4gVEJTX0JPVEggc3R5bGUgc2V0LCBtYWtlIHN1cmUgdG8gZHJhdyBib3RoIHNldHMgb2YgdGljcy4KCgkqIHByb2dyYW1zL3dpbmVkYmcvbXNjLmM6IEFuZHLpIEpvaGFuc2VuIDxhbmRyZWpvaEBjMmkubmV0PgoJQXZvaWQgY3Jhc2hpbmcgd2hlbiB1bmFibGUgdG8gcmVhZCBwZGIgZmlsZS4KCgkqIGRsbHMvY2FiaW5ldC9mZGkuYzogR3JlZ29yeSBNLiBUdXJuZXIgPGdtdHVybmVyMDA3QGFtZXJpdGVjaC5uZXQ+CglSZW1lbWJlciBkZWNvbXByZXNzaW9uIHN0YXRlIGR1cmluZyBleHRyYWN0aW9uLCBzbyBhcyB0byBhdm9pZAoJdW5uZWNlc3Nhcnkgd29yay4KCgkqIGRsbHMvY29tbWRsZy9NYWtlZmlsZS5pbiwgZGxscy9jb21tZGxnL3ByaW50ZGxnLmMsCgkgIGRsbHMvY29tbWRsZy9wcmludGRsZy5oLCBkbGxzL2NvbW1kbGcvcHJpbnRkbGcxNi5jOgoJU3RldmVuIEVkd2FyZHMgPFN0ZXZlbl9FZDQxNTNAeWFob28uY29tPgoJU3BsaXQgV2luMTYvMzIgcHJpbnRlciBkaWFsb2dzLgoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJUmVwb3J0IHNvbWUgbmV3cyBjYXBzIHRoYXQgd2VyZSBhZGRlZCBpbiBEWDYuCgoyMDAzLTA3LTMwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9hdmlmaWwzMi9hdmlmaWwzMi5zcGVjLCBkbGxzL2NvbWNhdC9jb21jYXQuc3BlYywKCSAgZGxscy9kZHJhdy9kZHJhdy5zcGVjLCBkbGxzL2RldmVudW0vZGV2ZW51bS5zcGVjLAoJICBkbGxzL2RpbnB1dC9kaW5wdXQuc3BlYywgZGxscy9kaW5wdXQ4L2RpbnB1dDguc3BlYywKCSAgZGxscy9kbWJhbmQvZG1iYW5kLnNwZWMsIGRsbHMvZG1jb21wb3MvZG1jb21wb3Muc3BlYywKCSAgZGxscy9kbWltZS9kbWltZS5zcGVjLCBkbGxzL2RtbG9hZGVyL2RtbG9hZGVyLnNwZWMsCgkgIGRsbHMvZG1zY3JpcHQvZG1zY3JpcHQuc3BlYywgZGxscy9kbXN0eWxlL2Rtc3R5bGUuc3BlYywKCSAgZGxscy9kbXN5bnRoL2Rtc3ludGguc3BlYywgZGxscy9kbXVzaWMvZG11c2ljLnNwZWMsCgkgIGRsbHMvZHBsYXl4L2RwbGF5eC5zcGVjLCBkbGxzL2RwbmhwYXN0L2RwbmhwYXN0LnNwZWMsCgkgIGRsbHMvZHNvdW5kL2Rzb3VuZC5zcGVjLCBkbGxzL21wci9tcHIuc3BlYywKCSAgZGxscy9tc2lzeXMvbXNpc3lzLm9jeC5zcGVjLCBkbGxzL29sZTMyL29sZTMyLnNwZWMsCgkgIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzIuc3BlYywgZGxscy9vbGVwcm8zMi9vbGVwcm8zMi5zcGVjLAoJICBkbGxzL3FjYXAvcWNhcC5zcGVjLCBkbGxzL3F1YXJ0ei9xdWFydHouc3BlYywKCSAgZGxscy9ycGNydDQvcnBjcnQ0LnNwZWMsIGRsbHMvc2hkb2N2dy9zaGRvY3Z3LnNwZWMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsIGRsbHMvdXJsbW9uL3VybG1vbi5zcGVjOgoJTWFrZSB0aGUgRGxsUmVnaXN0ZXJTZXJ2ZXIsIERsbFJlZ2lzdGVyU2VydmVyRXgsIERsbFVucmVnaXN0ZXJTZXJ2ZXIsCglEbGxHZXRDbGFzc09iamVjdCBhbmQgRGxsQ2FuVW5sb2FkTm93IGZ1bmN0aW9ucyBwcml2YXRlIChzdWdnZXN0ZWQgYnkKCUpvbiBHcmlmZml0aHMpLgoKCSogZGxscy9jYWJpbmV0L2NhYmluZXQuaCwgZGxscy9jYWJpbmV0L2ZkaS5jOgoJR3JlZ29yeSBNLiBUdXJuZXIgPGdtdHVybmVyMDA3QGFtZXJpdGVjaC5uZXQ+CgktIEVSUigiV0FSTklORyIpIGp1c3QgZG9lc24ndCBsb29rIHJpZ2h0IDspCgktIHRyZWF0IHplcm8gZmlsZSBoYW5kbGUgYXMgaW52YWxpZCBpZiB0aGUgY2FsbGJhY2sgcmV0dXJucyBpdAoJLSBwcm92aWRlIHRoZSBzYW1lIGFyZ3MgYXMgV2luZG93cyB0byB0aGUgT3BlbiBjYWxsYmFjawoKCSogZG9jdW1lbnRhdGlvbi9QQUNLQUdJTkcsIHRvb2xzL3dpbmVpbnN0YWxsOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CgknZ3JlcCAtcScgaXMgbm90IHBvcnRhYmxlIC0+IGRvbid0IHVzZSBpdC4KCgkqIGRsbHMvYXZpZmlsMzIvZXh0cmFjaHVuay5jLCBkbGxzL2F2aWZpbDMyL2V4dHJhY2h1bmsuaCwKCSAgZGxscy9jb21tZGxnL2ZvbnRkbGcuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJU29tZSBzcGVsbGluZyBmaXhlcy4KCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYzogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUZpeGVkIHRoZSBURVhDT09SRElOREVYIGNvZGUuCgoJKiBkbGxzL2RkcmF3L2QzZHRleHR1cmUuYywgZGxscy9kZHJhdy9oZWxwZXIuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglBZGRlZCBkZHJhd190ZXggdG8gYWRkIHRleHR1cmUgc25vb3Bpbmcgd2l0aG91dCBuZWVkaW5nIHRvIHJlY29tcGlsZS4KCjIwMDMtMDctMjggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB0b29scy93aW5lYnVpbGQvYnVpbGQuaCwgdG9vbHMvd2luZWJ1aWxkL2ltcG9ydC5jLAoJICB0b29scy93aW5lYnVpbGQvcGFyc2VyLmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYywKCSAgdG9vbHMvd2luZWJ1aWxkL3dpbmVidWlsZC5tYW4uaW46CglBZGRlZCAtcHJpdmF0ZSBmbGFnIGZvciBlbnRyeSBwb2ludHMgdGhhdCBzaG91bGRuJ3QgYmUgaW1wb3J0ZWQgZnJvbQoJb3RoZXIgZGxscy4KCVN1cHBvcnQgUFJJVkFURSBmbGFnIGluIC5kZWYgZmlsZXMgKGJhc2VkIG9uIGEgcGF0Y2ggYnkgSm9uCglHcmlmZml0aHMpLgoKCSogZGxscy9jb21tZGxnL2NkbGdfQ2EucmMsIGRsbHMvY29tbWRsZy9jZGxnX0NuLnJjLAoJICBkbGxzL2NvbW1kbGcvY2RsZ19Dcy5yYywgZGxscy9jb21tZGxnL2NkbGdfRGEucmMsCgkgIGRsbHMvY29tbWRsZy9jZGxnX0RlLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19Fbi5yYywKCSAgZGxscy9jb21tZGxnL2NkbGdfRW8ucmMsIGRsbHMvY29tbWRsZy9jZGxnX0VzLnJjLAoJICBkbGxzL2NvbW1kbGcvY2RsZ19GaS5yYywgZGxscy9jb21tZGxnL2NkbGdfRnIucmMsCgkgIGRsbHMvY29tbWRsZy9jZGxnX0h1LnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19JdC5yYywKCSAgZGxscy9jb21tZGxnL2NkbGdfSmEucmMsIGRsbHMvY29tbWRsZy9jZGxnX0tvLnJjLAoJICBkbGxzL2NvbW1kbGcvY2RsZ19ObC5yYywgZGxscy9jb21tZGxnL2NkbGdfTm8ucmMsCgkgIGRsbHMvY29tbWRsZy9jZGxnX1BsLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19QdC5yYywKCSAgZGxscy9jb21tZGxnL2NkbGdfUnUucmMsIGRsbHMvY29tbWRsZy9jZGxnX1NpLnJjLAoJICBkbGxzL2NvbW1kbGcvY2RsZ19Tay5yYywgZGxscy9jb21tZGxnL2NkbGdfU3YucmMsCgkgIGRsbHMvY29tbWRsZy9jZGxnX1dhLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19aaC5yYywKCSAgZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZ2Jyb3dzZXIuaDoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglJbXByb3ZlIGhhbmRsaW5nIG9mIGN1c3RvbSBkaWFsb2cgdGVtcGxhdGVzIHBhc3NlZCB0bwoJR2V0T3BlbkZpbGVOYW1lLgoKCSogbWlzYy9jcHUuYywgd2luMzIvbmV3Zm5zLmM6IE1pa2UgSGVhcm4gPG1pa2VAdGhlb3JldGljLmNvbT4KCU1lcmdlIENQVSBkZXRlY3Rpb24gY29kZSBpbnRvIG1pc2MvY3B1LmMuCglBZGQgc3VwcG9ydCBmb3IgTWh6IHJlZ2lzdHJ5IGtleS4KCgkqIHByb2dyYW1zL2Nsb2NrL3dpbmNsb2NrLmM6IFN0ZXZlbiBFZHdhcmRzIDxTdGV2ZW5fRWQ0MTUzQHlhaG9vLmNvbT4KCUluY2x1ZGUgcG9ydC5oIHNvIHdlIGRlZmluZSBNX1BJIG9uIE1pbmd3IGJ1aWxkLgoKCSogZG9jdW1lbnRhdGlvbi9mYXEuc2dtbDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglTbWFsbCBzcGVsbGluZy9wdW5jdHVhdGlvbiBmaXhlcy4KCVNtYWxsIHJlcGhyYXNpbmdzLgoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLCBkbGxzL2RkcmF3L21haW4uYywKCSAgZGxscy9kZHJhdy9tZXNhX3ByaXZhdGUuaDoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglCZXR0ZXIgY2FwcyBzdXBwb3J0IChpZSBtb3JlIGluIGxpbmUgd2l0aCB3aGF0IEdMIHJlcG9ydHMpLgoKCSogZGxscy9tc3ZjcnQvZXJybm8uYywgZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWM6CglBbmRy6SBKb2hhbnNlbiA8YW5kcmVqb2hAYzJpLm5ldD4KCUFkZGVkIGEgZHVtbXkgaW1wbGVtZW50YXRpb24gb2YgdGhlIF9zZXRfZXJyb3JfbW9kZSgpIGZ1bmN0aW9uLgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglVc2Ugc2FtZSBHVUlEcyBhcyB3aW4yayBhbmQgeHAgZm9yIGRzb3VuZCBkcml2ZXJzLgoKCSogZGxscy9kc291bmQvZHNvdW5kX21haW4uYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUZpeGVkIGEgYnVnIHdoZXJlIGEgTlVMTCBwcmltYXJ5IGJ1ZmZlciBwb2ludGVyIGlzIHVzZWQgd2hlbiB0aGUKCURpcmVjdFNvdW5kIG9iamVjdCBkaWRuJ3QgY3JlYXRlIHByb3Blcmx5LgoKMjAwMy0wNy0yNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG9iamVjdHMvYml0bWFwLmMsIG9iamVjdHMvYnJ1c2guYywgb2JqZWN0cy9mb250LmMsIG9iamVjdHMvZ2Rpb2JqLmMsCgkgIG9iamVjdHMvcGFsZXR0ZS5jLCBvYmplY3RzL3Blbi5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJV2hlbiBHZXRPYmplY3QgaXMgY2FsbGVkIHdpdGggYSBOVUxMIHBvaW50ZXIsIHJldHVybiB0aGUgb2JqZWN0J3MKCXNpemUuCgoJKiBkbGxzL3VzZXIvbWVzc2FnZS5jLCBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsCgkgIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci9xdWV1ZS5jLCBzZXJ2ZXIvdHJhY2UuYywgd2luZG93cy9pbnB1dC5jOgoJSW1wbGVtZW50ZWQgaW50ZXItdGhyZWFkIFNlbmRNZXNzYWdlQ2FsbGJhY2suCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tYWluLmMsIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywKCSAgZGxscy9kZHJhdy9kZHJhdy9tYWluLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSBhZGRlZCBhIGRkcmF3X2ZwcyBkZWJ1ZyBjaGFubmVsCgktIGNoZWNrZWQgd2hhdCBXaW5kb3dzIGRvZXMgb24gZW1wdHkgc3VyZmFjZSBkZXNjcmlwdGlvbgoJLSBmaXggdGhlIEdldFRleHR1cmVTdGFnZVN0YWdlIGNhbGwKCgkqIGRsbHMvc2hlbGwzMi9jbGlwYm9hcmQuYywgZGxscy9zaGVsbDMyL2RhdGFvYmplY3QuYywKCSAgZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3BpZGwuaCwKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLCBpbmNsdWRlL3NobG9iai5oOgoJTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCUZpeGVkIEFuc2kgdmVyc2lvbiBvZiBSZW5kZXJGSUxFTkFNRSBhbmQgaW1wbGVtZW50IGEgVW5pY29kZSB2ZXJzaW9uLgoJSW1wbGVtZW50ZWQgQ0ZTVFJfRklMRU5BTUUgd2l0aCBVbmljb2RlIGZpbGVuYW1lLgoKCSogaW5jbHVkZS93aW5iYXNlLmg6IE1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CglGaXhlZCBHZXRGaWxlRXR0cmlidXRlc0V4IGRlZmluZS4KCgkqIGluY2x1ZGUvd2luZS9vYmpfc2hlbGxmb2xkZXIuaDogTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCUV4dGVuZCBmb3IgYWRkaXRpb25hbCBTaGVsbCBDb250ZW50IGFuZCBBdHRyaWJ1dGUgRmxhZ3MuCgoJKiBhY2xvY2FsLm00LCBjb25maWd1cmU6IFRvZGQgVmllcmxpbmcgPHR2QHBvYm94LmNvbT4KCU1ha2UgV0lORV9HRVRfU09OQU1FIHdvcmsgb24gTmV0QlNELgoKCSogZGxscy9zaGx3YXBpL29yZGluYWwuYywgZGxscy9zaGx3YXBpL29yZGluYWwuaCwKCSAgZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglJbXBsZW1lbnQgQDEzLCAxNjAsIDE2MSwgMTczLCAxNzcsIDE3OCwgMTg5LCAxOTIsIDIyMSwgMjM4LCAyMzksIDI1NywKCTI3OCwgMjc5LCAyODUsIDI4NywgMzU1LCAzNjMsIDQxMywgQ29sb3JSR0JUb0hMUy4KCVN0dWIgQDE5MSxDb2xvckFkanVzdEx1bWEuCglNaXNjIGNsZWFudXBzIGFuZCBkb2N1bWVudGF0aW9uIHVwZGF0ZXMuCgoyMDAzLTA3LTI0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWM6CglEaXNhYmxlIGdjYyBzdHJpY3QgYWxpYXNpbmcgb3B0aW1pemF0aW9uIGZvciBub3cuCgoJKiBkbGxzL250ZGxsL250LmMsIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwgc2VydmVyL01ha2VmaWxlLmluLAoJICBzZXJ2ZXIvb2JqZWN0LmgsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9wcm9jZXNzLmgsCgkgIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci90aHJlYWQuYywKCSAgc2VydmVyL3RocmVhZC5oLCBzZXJ2ZXIvdG9rZW4uYywgc2VydmVyL3RyYWNlLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBhIHNlY3VyaXR5IHRva2VuIG9iamVjdCBpbiB3aW5lc2VydmVyLgoKCSogZG9jdW1lbnRhdGlvbi9zYW1wbGVzL2NvbmZpZzogTWlrZSBIZWFybiA8bWlrZUB0aGVvcmV0aWMuY29tPgoJU2V0IG9sZTMyIG5hdGl2ZSBmb3IgZGNvbTk1Lzk4LgoKCSogZGxscy91c2VyL01ha2VmaWxlLmluOiBTdGV2ZW4gRWR3YXJkcyA8c3RldmVuX2VkNDE1M0B5YWhvby5jb20+CglNb3ZlIGNvbW0xNi5jIHRvIHRoZSAxNi1iaXQgc291cmNlcy4KCgkqIGRsbHMvdXJsbW9uL01ha2VmaWxlLmluOiBTdGV2ZW4gRWR3YXJkcyA8c3RldmVuX2VkNDE1M0B5YWhvby5jb20+CglBZGQgbnRkbGwgdG8gbGlzdCBvZiBpbXBvcnRzIGZvciB1cmxtb24uCgoJKiBpbmNsdWRlL3dpbmJhc2UuaDogUGllcnJlIGQnSGVyYmVtb250IDxzdGVnZWZpbkBmcmVlLmZyPgoJTWFrZSB0aGUgUG93ZXJQQyBpbnRlcmxvY2tlZCBhc3NlbWJsZXIgY29kZSB2b2xhdGlsZS4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogU3RlZmFuIEhhbGxlciA8c2hAbW91bnRwb2ludC5jaD4KCUlnbm9yaW5nIExJU1RWSUVXX1Njcm9sbENvbHVtbnMoKSByZXF1ZXN0IGlmIG5vIGNvbHVtbnMgaW4gbGlzdC4KCgkqIGRsbHMvbnRkbGwvc3lzZGVwcy5jOiBQaWVycmUgZCdIZXJiZW1vbnQgPHN0ZWdlZmluQGZyZWUuZnI+CglBZGRlZCBQb3dlclBDIHN1cHBvcnQgaW4gU1lTREVQU19Td2l0Y2hUb1RocmVhZFN0YWNrLgoKCSogZGxscy9jb21tZGxnL2NkbGdfUHQucmMsIGRsbHMvd2luaW5ldC9yc3JjLnJjLAoJICBkbGxzL3dpbmluZXQvd2luaW5ldF9QdC5yYzoKCU1hcmNlbG8gRHVhcnRlIDx3aW5lLWRldmVsQGJvbC5jb20uYnI+CgktIGxlc3NlciBhZGp1c3RtZW50cyBpbiBjZGxnX1B0LnJjIChiZXR0ZXIgdmlzdWFsKQoJLSBsb2NhbGl6YXRpb24gdG8gdGhlIFBvcnR1Z3Vlc2Ugb2YgQnJhemlsIG9mIHdpbmluZXQgcmVzb3VyY2UuCgoJKiBkbGxzL2FkdmFwaTMyL2FkdmFwaTMyLnNwZWMsIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudGVkIExvb2t1cFByaXZpbGVnZVZhbHVlQS9XLgoKMjAwMy0wNy0yMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHRvb2xzL3dpZGwvaGVhZGVyLmMsIHRvb2xzL3dpZGwvcHJveHkuYzoKCVN1cHBvcnQgb2JqZWN0cyB3aXRoIG5vIG1ldGhvZCBkZWZpbml0aW9ucyAoc3VnZ2VzdGVkIGJ5IEpvbgoJR3JpZmZpdGhzKS4KCgkqIGRsbHMvd2luaW5ldC8uY3ZzaWdub3JlLCBkbGxzL3dpbmluZXQvTWFrZWZpbGUuaW4sCgkgIGRsbHMvd2luaW5ldC9kaWFsb2dzLmMsIGRsbHMvd2luaW5ldC9odHRwLmMsIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jLAoJICBkbGxzL3dpbmluZXQvaW50ZXJuZXQuaCwgZGxscy93aW5pbmV0L3Jlc291cmNlLmgsCgkgIGRsbHMvd2luaW5ldC9yc3JjLnJjLCBkbGxzL3dpbmluZXQvd2luaW5ldC5zcGVjLAoJICBkbGxzL3dpbmluZXQvd2luaW5ldF9Fbi5yYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCBzdXBwb3J0IGZvciBwcm94aWVzIHdpdGggdXNlcm5hbWVzIGFuZCBwYXNzd29yZHMuCgoJKiBkbGxzL3dpbmluZXQvdGVzdHMvaHR0cC5jOiBVc2UgdHJhY2UoKSBpbnN0ZWFkIG9mIHByaW50ZigpLgoKCSogZGxscy9zaGVsbDMyL2VudW1pZGxpc3QuYzogTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCU9ubHkgcmV0dXJuIEZBTFNFIGluIElFbnVtSURMaXN0X2ZuTmV4dCBpZiBubyBpdGVtIGNvdWxkIGJlIGZldGNoZWQgYXQKCWFsbC4KCgkqIGRsbHMvZGV2ZW51bS9kZXZlbnVtX21haW4uYywgZGxscy9kZXZlbnVtL21lZGlhY2F0ZW51bS5jLAoJICBkbGxzL2RldmVudW0vcGFyc2VkaXNwbGF5bmFtZS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXggc29tZSBzbWFsbCBwb2ludGVyIGFsaWFzaW5nIHByb2JsZW1zLgoKCSogZGxscy9zaGx3YXBpL29yZGluYWwuYywgZGxscy9zaGx3YXBpL3N0cmluZy5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUltcGxlbWVudCBAMjAzLgoJRml4IGEgYnJvd24gcGFwZXIgYmFnIGluIFN0ckZvcm1hdEtCU2l6ZVcuCglNaXNjIGNsZWFudXBzIGFuZCBkb2N1bWVudGF0aW9uIHVwZGF0ZXMuCgoJKiBwcm9ncmFtcy93Y21kL3djbWRtYWluLmM6CglGaXhlZCBjaGVjayBmb3IgLmJhdCBhbmQgLmNtZCBleHRlbnNpb25zIChzcG90dGVkIGJ5IE1pa2UgTWNDb3JtYWNrKS4KCgkqIGRsbHMvb2xlMzIvZ2l0LmM6IE1pa2UgSGVhcm4gPG1pa2VAdGhlb3JldGljLmNvbT4KCS0gR0lUIHNob3VsZCBub3QgZGVyZWZlcmVuY2UgcHB2IHdoZW4gdW5tYXJzaGFsbGluZyBpbnRlcmZhY2UuCgktIENvcnJlY3RseSBlbGltaW5hdGUgcmVmY291bnRpbmcgaW4gdGhlIEdJVC4KCS0gQWRkIHdhcm5pbmcgd2hlbiBnaXZlbiByaWlkIGRvZXMgbm90IG1hdGNoLgoKCSogZGxscy9vbGUzMi9pZnMuYzogTWlrZSBIZWFybiA8bWlrZUB0aGVvcmV0aWMuY29tPgoJSU1hbGxvY1NweSBjYW5ub3QgY2F1c2UgYW4gYWxsb2NhdGlvbiBmYWlsdXJlIHdoZW4gY2IgPT0gMC4KCgkqIGRsbHMvc2hlbGwzMi9waWRsLmM6IE1pa2UgSGVhcm4gPG1pa2VAdGhlb3JldGljLmNvbT4KCURlYWwgd2l0aCB0aGUgY2FzZSBvZiBsb2FkaW5nIGFuIGVtcHR5IFBJREwgZnJvbSBhIHN0cmVhbSBiZXR0ZXIgaW4KCUlMTG9hZEZyb21TdHJlYW0uCgoJKiBwcm9ncmFtcy9ydW5kbGwzMi9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvcnVuZGxsMzIvcnVuZGxsMzIuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCXJ1bmRsbDMyIHJlcXVpcmVzIGEgd2luZG93IGZvciBzb21lIGZ1bmN0aW9ucyB0byB3b3JrLCBzbyBjcmVhdGUgb25lLgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBZGQgYW4gZW1wdHkgaG9vayBmdW5jdGlvbiBmb3IgV1NBU2V0QmxvY2tpbmdIb29rIHRvIHJldHVybi4KCgkqIGRsbHMvc2hsd2FwaS9yZWcuYywgZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglJbXBsZW1lbnQgQDI4MCwzNDMsMzQ0LgoJTWlzYyBjbGVhbnVwcyBhbmQgZG9jdW1lbnRhdGlvbiB1cGRhdGVzLgoKCSogZGxscy9zaGx3YXBpL3NobHdhcGlfbWFpbi5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUFkZCBhIGhhbmRsZSBmb3IgdXJsbW9uLmRsbCwgZml4IE1TVkMgd2FybmluZy4KCgkqIGRsbHMvc2hsd2FwaS9jbGlzdC5jOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJRml4IE1TVkMgd2FybmluZ3MuCgoJKiB0b29scy93aW5lZHVtcC9SRUFETUU6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglTcGVsbGluZyBmaXguCgoJKiB0b29scy93aW5lZHVtcC9tc21hbmdsZS5jLCB0b29scy93aW5lZHVtcC9wZS5jLAoJICB0b29scy93aW5lZHVtcC9zeW1ib2wuYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglTdXBwb3J0IGZsb2F0IGFuZCBmdW5jdGlvbiBwdHIgYXJncyBiZXR0ZXIsIC1XIHdhcm5pbmcgZml4ZXMuCgoyMDAzLTA3LTIxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogdG9vbHMvd2luZWJ1aWxkL3V0aWxzLmM6IFBpZXJyZSBkJ0hlcmJlbW9udCA8c3RlZ2VmaW5AZnJlZS5mcj4KCUNoYW5nZSBfX1BQQ19fIGZsYWcgdG8gX19wb3dlcnBjX18uCgoJKiBpbmNsdWRlL3dpbmUvb2JqX3NoZWxsZm9sZGVyLmg6IE1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CglEZWZpbmUgU0hHRE5GLgoKCSogaW5jbHVkZS93aW5lL29ial9leHRyYWN0aWNvbi5oOiBNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJRGVmaW5lIElFeHRyYWN0SWNvbiBmb3IgQU5TSS9Vbmljb2RlLgoKCSogZGxscy9hZHZhcGkzMi9jcnlwdC5jOgoJRml4ZWQgcHJvdG90eXBlcyBvZiBWVGFibGVQcm9jU3RydWMgY2FsbGJhY2sgZnVuY3Rpb25zLgoKCSogZGxscy9hZHZhcGkzMi9jcnlwdC5oLCBpbmNsdWRlL3dpbmNyeXB0Lmg6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglNb3ZlZCBkZWNsYXJhdGlvbiBvZiBWVGFibGVQcm92U3RydWMgZnJvbSBkbGxzL2FkdmFwaTMyL2NyeXB0LmggdG8KCWluY2x1ZGUvd2luY3J5cHQuaC4KCgkqIGRsbHMvc2hsd2FwaS9hc3NvYy5jLCBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQ3JlYXRlIHN0dWIgZm9yIEFzc29jSXNEYW5nZXJvdXMuCgoJKiBkb2N1bWVudGF0aW9uL2FyY2hpdGVjdHVyZS5zZ21sLCBkb2N1bWVudGF0aW9uL2J1Z3Muc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9jb25maWd1cmluZy5zZ21sLCBkb2N1bWVudGF0aW9uL2N2cy1yZWdyZXNzaW9uLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vZGVidWdnZXIuc2dtbCwgZG9jdW1lbnRhdGlvbi9kZWJ1Z2dpbmcuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9kbGxzLnNnbWwsIGRvY3VtZW50YXRpb24vZG9jdW1lbnRhdGlvbi5zZ21sLAoJICBkb2N1bWVudGF0aW9uL2ZvbnRzLnNnbWwsIGRvY3VtZW50YXRpb24vZ2V0dGluZy5zZ21sLAoJICBkb2N1bWVudGF0aW9uL2dsb3NzYXJ5LnNnbWwsIGRvY3VtZW50YXRpb24vaTE4bi5zZ21sLAoJICBkb2N1bWVudGF0aW9uL2ludHJvZHVjdGlvbi5zZ21sLCBkb2N1bWVudGF0aW9uL211bHRpbWVkaWEuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9vcGVuZ2wuc2dtbCwgZG9jdW1lbnRhdGlvbi9wb3J0aW5nLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vcHJpbnRpbmcuc2dtbCwgZG9jdW1lbnRhdGlvbi9yZWdpc3RyeS5zZ21sLAoJICBkb2N1bWVudGF0aW9uL3J1bm5pbmcuc2dtbCwgZG9jdW1lbnRhdGlvbi93aW5lbGliLXRvb2xraXQuc2dtbDoKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCUZpeGVkIGluZGVudGF0aW9uIG9mIGxpc3QgaXRlbXMuCgoJKiBkb2N1bWVudGF0aW9uL2NvbmZpZ3VyaW5nLnNnbWwsIGRvY3VtZW50YXRpb24vZ2V0dGluZy5zZ21sLAoJICBkb2N1bWVudGF0aW9uL2luc3RhbGxpbmcuc2dtbCwgZG9jdW1lbnRhdGlvbi9pbnRyb2R1Y3Rpb24uc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9yZWdpc3RyeS5zZ21sOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJQmVnaW4gdG8gdW5pZm9ybWl6ZSBzYW1wbGUgY29tbWFuZHMgaW4gZG9jdW1lbnRhdGlvbi4KCgkqIGRvY3VtZW50YXRpb24vLmN2c2lnbm9yZSwgZG9jdW1lbnRhdGlvbi9jb25maWd1cmluZy5zZ21sLAoJICBkb2N1bWVudGF0aW9uL2NvbnNvbGVzLnNnbWwsIGRvY3VtZW50YXRpb24vY3ZzLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vZ2xvc3Nhcnkuc2dtbCwgZG9jdW1lbnRhdGlvbi9pbnN0YWxsaW5nLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vaW50cm9kdWN0aW9uLnNnbWwsIGRvY3VtZW50YXRpb24vcnVubmluZy5zZ21sLAoJICBkb2N1bWVudGF0aW9uL3dpbmVsaWItaW50cm8uc2dtbDoKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCU5hbWUgYWxsIHNlY3Rpb25zIG9mIHR5cGUgc2VjdDEuCglOYW1lIHRoZSBnbG9zc2FyeS4KCgkqIGRsbHMvZG1iYW5kL01ha2VmaWxlLmluLCBkbGxzL2RtYmFuZC9iYW5kLmMsIGRsbHMvZG1iYW5kL2RtYmFuZC5zcGVjLAoJICBkbGxzL2RtYmFuZC9kbWJhbmRfbWFpbi5jLCBkbGxzL2RtYmFuZC9kbWJhbmRfcHJpdmF0ZS5oLAoJICBkbGxzL2RtYmFuZC9yZWdzdnIuYywgZGxscy9kbWNvbXBvcy9NYWtlZmlsZS5pbiwKCSAgZGxscy9kbWNvbXBvcy9jaG9yZG1hcC5jLCBkbGxzL2RtY29tcG9zL2NvbXBvc2VyLmMsCgkgIGRsbHMvZG1jb21wb3MvZG1jb21wb3Muc3BlYywgZGxscy9kbWNvbXBvcy9kbWNvbXBvc19tYWluLmMsCgkgIGRsbHMvZG1jb21wb3MvZG1jb21wb3NfcHJpdmF0ZS5oLCBkbGxzL2RtY29tcG9zL3JlZ3N2ci5jLAoJICBkbGxzL2RtaW1lL01ha2VmaWxlLmluLCBkbGxzL2RtaW1lL2F1ZGlvcGF0aC5jLAoJICBkbGxzL2RtaW1lL2RtaW1lLnNwZWMsIGRsbHMvZG1pbWUvZG1pbWVfbWFpbi5jLAoJICBkbGxzL2RtaW1lL2RtaW1lX3ByaXZhdGUuaCwgZGxscy9kbWltZS9ncmFwaC5jLAoJICBkbGxzL2RtaW1lL3BhdHRlcm50cmFjay5jLCBkbGxzL2RtaW1lL3BlcmZvcm1hbmNlLmMsCgkgIGRsbHMvZG1pbWUvcmVnc3ZyLmMsIGRsbHMvZG1pbWUvc2VnbWVudC5jLCBkbGxzL2RtaW1lL3NlZ21lbnRzdGF0ZS5jLAoJICBkbGxzL2RtaW1lL3NvbmcuYywgZGxscy9kbWltZS90b29sLmMsIGRsbHMvZG1pbWUvdHJhY2suYywKCSAgZGxscy9kbWxvYWRlci9NYWtlZmlsZS5pbiwgZGxscy9kbWxvYWRlci9jb250YWluZXIuYywKCSAgZGxscy9kbWxvYWRlci9kbWxvYWRlci5zcGVjLCBkbGxzL2RtbG9hZGVyL2RtbG9hZGVyX21haW4uYywKCSAgZGxscy9kbWxvYWRlci9kbWxvYWRlcl9wcml2YXRlLmgsIGRsbHMvZG1sb2FkZXIvZ2V0bG9hZGVyLmMsCgkgIGRsbHMvZG1sb2FkZXIvbG9hZGVyLmMsIGRsbHMvZG1sb2FkZXIvcmVnc3ZyLmMsCgkgIGRsbHMvZG1zY3JpcHQvTWFrZWZpbGUuaW4sIGRsbHMvZG1zY3JpcHQvZG1zY3JpcHQuc3BlYywKCSAgZGxscy9kbXNjcmlwdC9kbXNjcmlwdF9tYWluLmMsIGRsbHMvZG1zY3JpcHQvZG1zY3JpcHRfcHJpdmF0ZS5oLAoJICBkbGxzL2Rtc2NyaXB0L3JlZ3N2ci5jLCBkbGxzL2Rtc2NyaXB0L3NjcmlwdC5jLAoJICBkbGxzL2Rtc3R5bGUvTWFrZWZpbGUuaW4sIGRsbHMvZG1zdHlsZS9kbXN0eWxlLnNwZWMsCgkgIGRsbHMvZG1zdHlsZS9kbXN0eWxlX21haW4uYywgZGxscy9kbXN0eWxlL2Rtc3R5bGVfcHJpdmF0ZS5oLAoJICBkbGxzL2Rtc3R5bGUvcmVnc3ZyLmMsIGRsbHMvZG1zdHlsZS9zdHlsZS5jLAoJICBkbGxzL2Rtc3ludGgvTWFrZWZpbGUuaW4sIGRsbHMvZG1zeW50aC9kbXN5bnRoLnNwZWMsCgkgIGRsbHMvZG1zeW50aC9kbXN5bnRoX21haW4uYywgZGxscy9kbXN5bnRoL2Rtc3ludGhfcHJpdmF0ZS5oLAoJICBkbGxzL2Rtc3ludGgvcmVnc3ZyLmMsIGRsbHMvZG1zeW50aC9zeW50aC5jLAoJICBkbGxzL2Rtc3ludGgvc3ludGhzaW5rLmMsIGRsbHMvZG11c2ljL01ha2VmaWxlLmluLAoJICBkbGxzL2RtdXNpYy9idWZmZXIuYywgZGxscy9kbXVzaWMvY2xvY2suYywgZGxscy9kbXVzaWMvY29sbGVjdGlvbi5jLAoJICBkbGxzL2RtdXNpYy9kbXVzaWMuYywgZGxscy9kbXVzaWMvZG11c2ljX2luc3RydW1lbnQuYywKCSAgZGxscy9kbXVzaWMvZG11c2ljX2xvYWRlci5jLCBkbGxzL2RtdXNpYy9kbXVzaWNfbWFpbi5jLAoJICBkbGxzL2RtdXNpYy9kbXVzaWNfbWlzYy5jLCBkbGxzL2RtdXNpYy9kbXVzaWNfcGVyZm9ybWFuY2UuYywKCSAgZGxscy9kbXVzaWMvZG11c2ljX3BsdWdpbnMuYywgZGxscy9kbXVzaWMvZG11c2ljX3BvcnQuYywKCSAgZGxscy9kbXVzaWMvZG11c2ljX3ByaXZhdGUuaCwgZGxscy9kbXVzaWMvZG11c2ljX3NlZ21lbnQuYywKCSAgZGxscy9kbXVzaWMvZG11c2ljX3N0eWxlLmMsIGRsbHMvZG11c2ljL2RtdXNpY19zeW50aC5jLAoJICBkbGxzL2RtdXNpYy9kb3dubG9hZC5jLCBkbGxzL2RtdXNpYy9kb3dubG9hZGVkaW5zdHJ1bWVudC5jLAoJICBkbGxzL2RtdXNpYy9oZWxwZXIuYywgZGxscy9kbXVzaWMvaW5zdHJ1bWVudC5jLCBkbGxzL2RtdXNpYy9vYmplY3QuYywKCSAgZGxscy9kbXVzaWMvcG9ydC5jLCBkbGxzL2RtdXNpYy9wb3J0ZG93bmxvYWQuYywgZGxscy9kbXVzaWMvcmVnc3ZyLmMsCgkgIGRsbHMvZG11c2ljL3RocnUuYywgZGxscy9kbXVzaWMzMi9NYWtlZmlsZS5pbiwgaW5jbHVkZS9kbXVzaWNjLmgsCgkgIGluY2x1ZGUvZG11c2ljaS5oLCBpbmNsdWRlL2RtdXNpY3MuaDoKCVJvayBNYW5kZWxqYyA8cm9rLm1hbmRlbGpjQGdpbWIub3JnPgoJU3BsaXQgdGhlIGRtdXNpYyBpbnRlcmZhY2VzLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOiBNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJU2VuZCBUVk5fSVRFTUVYUEFORElORyB3aGVuIHRoZSB1c2VyIHRyaWVzIHRvIGV4cGFuZCBhIHRyZWUgaXRlbQoJX2JlZm9yZV8gY2hlY2tpbmcgZm9yIGNoaWxkIGl0ZW1zLgoKCSogZGxscy93aW5pbmV0L2Z0cC5jLCBkbGxzL3dpbmluZXQvaW50ZXJuZXQuaDoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIGZpeCBtdWx0aXBsZSBjb25zZWN1dGl2ZSBkb3dubG9hZHMgKGJ5IGZsdXNoaW5nIHdoZW4gbmVlZGVkIHRoZQoJICBjb21tYW5kIHNvY2tldCkKCS0gZGV0ZWN0IGF0dGVtcHRzIHRvIGRvd25sb2FkIG11bHRpcGxlIGZpbGVzIGF0IHRoZSBzYW1lIHRpbWUKCS0gZml4IHNpemUgLyBkYXRlIHJlcG9ydGluZyB3aGVuIGVudW1lcmF0aW5nIGZpbGVzCgktIGZpeCBZMksgcHJvYmxlbSBpbiBOVCBwYXJzaW5nIG9mIGZpbGVzCgoJKiBNYWtlLnJ1bGVzLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYzoKCVJpY2hhcmQgQ29oZW4gPHJpY2hhcmQuY29oZW5AdmlyZ2luLm5ldD4KCUFsd2F5cyB1c2Ugb3VyIG93biBjMm1hbi4KCgkqIHByb2dyYW1zL25vdGVwYWQvRW4ucmMsIHByb2dyYW1zL25vdGVwYWQvTGljZW5zZV9Fbi5jLAoJICBwcm9ncmFtcy9ub3RlcGFkL01ha2VmaWxlLmluLCBwcm9ncmFtcy9ub3RlcGFkL2RpYWxvZy5jLAoJICBwcm9ncmFtcy9ub3RlcGFkL2RpYWxvZy5oLCBwcm9ncmFtcy9ub3RlcGFkL21haW4uYywKCSAgcHJvZ3JhbXMvbm90ZXBhZC9tYWluLmgsIHByb2dyYW1zL25vdGVwYWQvcnNyYy5yYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglDb252ZXJ0IE5vdGVwYWQgdG8gdW5pY29kZS4KCgkqIGluY2x1ZGUvd2luYmFzZS5oOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJQWRkIEdldFN5c3RlbVdpbmRvd3NEaXJlY3RvcnksIEdldEN1cnJlbnRId1Byb2ZpbGUuCglSZW1vdmUgd2FybmluZ3MgYnVpbGRpbmcgdW5kZXIgVlMuTmV0LgoKCSogZG9jdW1lbnRhdGlvbi9vbGUuc2dtbDogUmljaGFyZCBDb2hlbiA8cmljaGFyZC5jb2hlbkB2aXJnaW4ubmV0PgoJUmV2ZXJ0IGJvZ3VzIHNwZWxsaW5nICJmaXgiLgoKCSogZGxscy9tc2Rtby8uY3ZzaWdub3JlLCBkbGxzL21zZG1vL01ha2VmaWxlLmluLCBkbGxzL21zZG1vL2Rtb3JlZy5jLAoJICBkbGxzL21zZG1vL2Rtb3J0LmMsIGRsbHMvbXNkbW8vbXNkbW8uc3BlYywgZGxscy9tc2Rtby9yc3JjLnJjOgoJTWljaGFlbCBH/G5uZXdpZyA8TWljaGFlbEd1ZW5uZXdpZ0BnbXguZGU+CgktIEltcGxlbWVudGVkIE1vKiBtZXRob2RzLgoJLSBBZGRlZCBzdHVicyBmb3IgRE1PUmVnaXN0ZXIsIERNT1VucmVnaXN0ZXIsIERNT0VudW0sIERNT0dldFR5cGVzLAoJICBETU9HZXROYW1lLgoJLSBBZGRlZCB2ZXJzaW9uIHJlc291cmNlcy4KCgkqIGRsbHMvbnRkbGwvc2lnbmFsX3Bvd2VycGMuYzogTWFyY3VzIE1laXNzbmVyIDxtZWlzc25lckBzdXNlLmRlPgoJQWRkZWQgbWlzc2luZyByZWdpc3RlciBkZWZpbmVzIGZvciBMaW51eC9QUEMuCgoJKiBsb2FkZXIvbW9kdWxlLmM6IFBpZXJyZSBkJ0hlcmJlbW9udCA8c3RlZ2VmaW5AZnJlZS5mcj4KCUFkZCBNYWNoLU8gKERhcndpbiBmaWxlIGZvcm1hdCkgc3VwcG9ydC4KCgkqIGZpbGVzL2RyaXZlLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBhIGNvdXBsZSBvZiBidWdzIGluIENEUk9NX0dldFNlcmlhbDoKCSAtIGl0IHdvdWxkIGZhaWwgaWYgRGV2aWNlSW9Db250cm9sIHN1Y2NlZWRlZC4KCSAtIGl0IHdvdWxkIGxlYWsgaGFuZGxlcyBpbiBzb21lIGNhc2VzLgoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJU2V0IGRlZmF1bHRzIGZvciB0aGUgTmV4dC9QcmV2IGJ1dHRvbi4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnYnJvd3Nlci5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglTZW5kIGEgQ0ROX0ZPTERFUkNIQU5HRSBtZXNzYWdlIHdoZW4gd2UgY2hhbmdlIGZvbGRlcnMuCgoJKiBkbGxzL2QzZDgvZHJhd3ByaW0uYzogSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCURpc2FibGUgY2xpZW50IHRleHR1cmUgc3RhdGVzIHdoZW4gbm90IGluIHVzZSAoZmFzdCBtb2RlKSBvdGhlcndpc2UKCXRyYXBzIG9jY3VyLgoJQ29ycmVjdCBudW1iZXIgb2YgdGV4dHVyZSBjb29yZHMgc3VwcGxpZWQgaW4gYm90aCBmYXN0IGFuZCBzbG93IG1vZGUuCglEb250IHN1cHBseSBhIGRlZmF1bHQgY29sb3VyIG9mIHdoaXRlIHdoZW4gZGlmZnVzZSBtb2RlIGlzIGRpc2FibGVkLgoJUmVlbmFibGUgZmFzdCBtb2RlLgoKCSogZG9jdW1lbnRhdGlvbi9mYXEuc2dtbDogTWlrZSBIZWFybiA8bWlrZUB0aGVvcmV0aWMuY29tPgoJTWlzYyBGQVEgY2hhbmdlcyBhbmQgaW1wcm92ZW1lbnRzLgoKCSogZGxscy9hdmlmaWwzMi93YXZmaWxlLmM6IE1pY2hhZWwgR/xubmV3aWcgPE1pY2hhZWxHdWVubmV3aWdAZ214LmRlPgoJLSBBZGRlZCBzdXBwb3J0IGZvciBTdW4gQXVkaW8gZmlsZXMgaW4gd2F2ZS1maWxlIGhhbmRsZXIuCgktIEZhbGxiYWNrIHRvIG1taW9PcGVuQSBpZiBtbW9wT3BlblcgZG9lc24ndCB3b3JrICh3aGVuIHVzaW5nIFdpbjl4IERMTHMpLgoKCSogZGxscy9tc2FjbS9wY21jb252ZXJ0ZXIuYzogTWljaGFlbCBH/G5uZXdpZyA8TWljaGFlbEd1ZW5uZXdpZ0BnbXguZGU+CglGaXhlZCB3cm9uZyBhc3NlcnQgaW4gUENNX3JvdW5kLCB3aGljaCBkaWRuJ3QgYWxsb3cgdG8gY2FsbAoJYWNtU3RyZWFtU2l6ZSB3aXRoIGEgdmFsdWUgb2YgMCB0byBjb252ZXJ0IC0tIG5hdGl2ZSBhbGxvd3MgaXQuCgoJKiBkbGxzL2F2aWZpbDMyL2FwaS5jLCBkbGxzL2F2aWZpbDMyL2F2aWZpbGUuYzoKCU1pY2hhZWwgR/xubmV3aWcgPE1pY2hhZWxHdWVubmV3aWdAZ214LmRlPgoJLSBGaXhlZCBBVklTdHJlYW1UaW1lVG9TYW1wbGUgYW5kIEFWSVN0cmVhbVNhbXBsZVRvVGltZSBtZXRob2RzIHRvCgkgIHN0YXkgaW4gYm91bmRzIGFuZCBiZWhhdmUgbGlrZSB0aGUgbmF0aXZlIG9uZXMuCgktIEZhbGxiYWNrIHRvIG1taW9PcGVuQSBpZiBtbWlvT3BlblcgZG9lc24ndCB3b3JrICh3aGVuIHVzaW5nIFdpbjl4IERMTHMpLgoJLSBGaXhlZCBhIGJ1ZyBvZiB1c2luZyBtbWlvRGVzY2VuZC9tbWlvQXNjZW5kIChvY2N1cmVkIHdpdGggbmF0aXZlIGxpYnMpLgoJLSBTaWxlbnQgYSBtZXNzYWdlIHdoaWNoIGNvdWxkIGJlIGluY29ycmVjdCBmb3Igbm9uLXZpZGVvIHN0cmVhbXMuCgoJKiBkbGxzL3dpbmluZXQvZnRwLmMsIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jLCBkbGxzL3dpbmluZXQvaW50ZXJuZXQuaDoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIHVzZSBTSVpFIGNvbW1hbmQgdG8gcmV0cmlldmUgdGhlIGZpbGUgc2l6ZSAoYXMgdGhlIGZpbGUgc2l6ZSBpcyBub3QKCSAgcGFydCBvZiB0aGUgV2luTlQgYWNrbm93bGVkZ2VtZW50IHN0cmluZykKCS0gZnJlZSB0aGUgaGFuZGxlIC8gY2xvc2UgdGhlIHNvY2tldCBvbiBlbmQgb2YgZG93bmxvYWQKCS0gZml4IEludGVybmV0UmVhZEZpbGUgaW4gdGhlIEZUUCBjYXNlCgktIGZpeCBGVFBfUmVjZWl2ZVJlc3BvbnNlCgoJKiBkbGxzL2RpbnB1dC9qb3lzdGljay9saW51eGlucHV0LmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUtFWV9NQVggaXMgNTExLCB3aGljaCBkb2VzIG5vdCBmaXQgaW4gYSBCWVRFLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMuZGF0OgoJU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtTGluZS5jb20+CglGaXhlZCB3YXJuaW5ncyBhYm91dCBtaXNzaW5nLCBuZXcgc3BlYyBmaWxlcy4KCjIwMDMtMDctMTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3NobHdhcGkvcGF0aC5jLCBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUltcGxlbWVudGVkIEA0NDAsIDQ0MS4KCVdhcm5pbmcgZml4ZXMvZG9jdW1lbnRhdGlvbi4KCgkqIGRsbHMvZGRyYXcvTWFrZWZpbGUuaW4sIGRsbHMvZGRyYXcvZGRyYXcuc3BlYywgZGxscy9kZHJhdy9yZWdzdnIuYywKCSAgZGxscy9kZHJhdy92ZXJzaW9uLnJjOgoJSm9obiBLLiBIb2htIDxqaG9obUBhY20ub3JnPgoJSW1wbGVtZW50IERsbFJlZ2lzdGVyU2VydmVyIGFuZCBEbGxVbnJlZ2lzdGVyU2VydmVyIGZvciBkZHJhdy5kbGwsIGFuZAoJYWRkIE9sZVNlbGZSZWdpc3RlciB2ZXJzaW9uIHN0cmluZy4KCgkqIGRsbHMvY2FiaW5ldC9jYWJleHRyYWN0LmMsIGRsbHMvY2FiaW5ldC9jYWJpbmV0LmgsCgkgIGRsbHMvY2FiaW5ldC9mZGkuYzoKCUdyZWdvcnkgTS4gVHVybmVyIDxnbXR1cm5lcjAwN0BhbWVyaXRlY2gubmV0PgoJLSBlbGltaW5hdGUgcGVza3kgZ2xvYmFsIHZhcmlhYmxlczsgc2hvdWxkIGJlIHRocmVhZHNhZmUgbm93CgktIGZpeCBtb3JlIG1lbW9yeSBsZWFrcwoJLSBmaXggc29tZSBidWdzCgktIHNvbWUgZGVjcnVmdGlmaWNhdGlvbgoJLSBpbXBsZW1lbnQgc3VwcG9ydCBmb3Igc3BsaXQgY2FiaW5ldHMgYW5kICJORVhUX0NBQklORVQiIG5vdGlmaWNhdGlvbgoKCSogREVWRUxPUEVSUy1ISU5UUzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVNtYWxsIGRvY3VtZW50YXRpb24gY2xlYW51cC4KCgkqIHRvb2xzL2MybWFuLnBsOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJQ29ycmVjdGx5IHNwb3QgZm9yd2FyZHMuCglWYXJpb3VzIGltcHJvdmVtZW50cyBhbmQgZml4ZXMgdG8gdGhlIG91dHB1dCwgYWRkIGluZGV4IGZvciBodG1sLgoKCSogZGxscy93aW5pbmV0L2ludGVybmV0LmMsIGRsbHMvd2luaW5ldC91cmxjYWNoZS5jLAoJICBkbGxzL3dpbmluZXQvd2luaW5ldC5zcGVjOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJU3R1YnMgZm9yIEludGVybmV0Q3JlYXRlVXJsQS9XIGFuZCBDcmVhdGVVcmxDYWNoZUVudHJ5QS4KCgkqIGRsbHMvc2hlbGwzMi9jbGFzc2VzLmMsIGRsbHMvc2hsd2FwaS9hc3NvYy5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCU1vdmUgSVF1ZXJ5QXNzb2NpYXRpb25zIGludG8gc2hsd2FwaS4gRG9jcy8tVy9NU1ZDKysgZml4ZXMuCgoJKiBpbmNsdWRlL3dpbnNvY2suaDogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCU1TVkMgZml4ZXMuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9maWxlLmM6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglGaXggTVNWQyB3YXJuaW5nLgoKCSogZGxscy9udGRsbC90ZXN0cy9ydGxzdHIuYzogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUZpeCAtVyB3YXJuaW5ncy4KCgkqIGxpYnMvdW5pY29kZS9zdHJpbmcuYzogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCXZzbnByaW50Zlc6ICUlIHNob3VsZCBvdXRwdXQgYSBsaXRlcmFsICUgc2lnbi4KCgkqIGxpYnMvcG9ydC9ta3N0ZW1wcy5jOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJTVNWQyBkb2Vzbid0IGxpa2UgSyZSIGZ1bmN0aW9uIGRlY2xhcmF0aW9uczogdXNlIGFuc2kgaW5zdGVhZC4KCgkqIGRsbHMvZDNkOC9kM2Q4X3ByaXZhdGUuaCwgZGxscy9kM2Q4L2RldmljZS5jLCBkbGxzL2QzZDgvZGlyZWN0eC5jLAoJICBkbGxzL2QzZDgvZHJhd3ByaW0uYzoKCUphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglBZGQgZnBzIGRlYnVnIGNoYW5uZWwsIHNvIHdlIGNhbiBzZWUgaG93IHRoZSBkM2QgY29kZSBpcyBwZXJmb3JtaW5nIGFuZAoJdGhlaXIgaW1wYWN0IG9mIHBlcmZvcm1hbmNlIGNoYW5nZXMuCglTZXRUcmFuc2Zvcm0gYWxtb3N0IHJld3JpdHRlbiBpbiBhIG11Y2ggbmVhdGVyIHdheSwgYW5kIGluCgljb29yZGluYXRpb24gd2l0aCBkcmF3cHJpbSBpdCBzaWduaWZpY2FudGx5IHJlZHVjZXMgdGhlIG51bWJlciBvZgoJdGltZXMgdGhhdCB3ZSByZWxvYWQgdGhlIG1hdHJpeGVzLgoKCSogaW5jbHVkZS93aW5udC5oOiBKZWZmIE11aXplbGFhciA8bXVpemVsYWFyQHJvZ2Vycy5jb20+CgktIGFkZCBJTUFHRV9GSUxFX05FVF9SVU5fRlJPTV9TV0FQIGRlZmluZQoJLSB1cGRhdGUgSU1BR0VfRklMRV9NQUNISU5FXyogZGVmaW5lcwoJLSB1cGRhdGUgSU1BR0VfU1VCU1lTVEVNXyogZGVmaW5lcwoJLSB1bmNvbW1lbnQgSU1BR0VfU0NOX1RZUEVfTk9fUEFEIGRlZmluZQoJLSB1cGRhdGUgSU1BR0VfU0NOX0FMSUdOXyogZGVmaW5lcwoKMjAwMy0wNy0xOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbnRkbGwvbG9hZGVyLmM6IFByaW50IHN0YXR1cyBjb2RlcyBpbiBoZXguCgoJKiBkbGxzL3VzZXIvd3NwcmludGYuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJd3ZzbnByaW50IGFjY2VwdHMgJXAgdG9vIChvbiB3aW4yaykuCgoJKiB3aW5kb3dzL2RpYWxvZy5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglTdHJpcCBXU19DQVBUSU9OIGFuZCBXU19TWVNNRU5VIGZvciBjaGlsZCBkaWFsb2dzLgoKCSogZGxscy9vbGUzMi9tb25pa2VyLmMsIGRsbHMvb2xlMzIvb2xlMzIuc3BlYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUNyZWF0ZWQgc3R1YiBmb3IgQ3JlYXRlQ2xhc3NNb25pa2VyLgoKCSogZGxscy93aW5tbS9tY2kuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4ZWQgaW5jb3JyZWN0IHN0cmNhc2VjbXAgdXNhZ2UuCgoJKiBkbGxzL3dpbmluZXQvdXRpbGl0eS5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglPbmx5IGNhbGwgd2luaW5ldCBjYWxsYmFja3MgaWYgZHdDb250ZXh0IGlzIG5vbi16ZXJvLgoKCSogZGxscy9tcHIvcHdjYWNoZS5jLCBpbmNsdWRlL3dpbm5ldHdrLmg6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnRlZCBwYXNzd29yZCBjYWNoaW5nLgoKCSogaW5jbHVkZS9tc3ZjcnQvY29uaW8uaCwgaW5jbHVkZS9tc3ZjcnQvY3J0ZGJnLmgsCgkgIGluY2x1ZGUvbXN2Y3J0L2N0eXBlLmgsIGluY2x1ZGUvbXN2Y3J0L2RpcmVjdC5oLAoJICBpbmNsdWRlL21zdmNydC9kb3MuaCwgaW5jbHVkZS9tc3ZjcnQvZWguaCwgaW5jbHVkZS9tc3ZjcnQvZXJybm8uaCwKCSAgaW5jbHVkZS9tc3ZjcnQvZmNudGwuaCwgaW5jbHVkZS9tc3ZjcnQvaW8uaCwgaW5jbHVkZS9tc3ZjcnQvbG9jYWxlLmgsCgkgIGluY2x1ZGUvbXN2Y3J0L21hbGxvYy5oLCBpbmNsdWRlL21zdmNydC9tYmN0eXBlLmgsCgkgIGluY2x1ZGUvbXN2Y3J0L21ic3RyaW5nLmgsIGluY2x1ZGUvbXN2Y3J0L3Byb2Nlc3MuaCwKCSAgaW5jbHVkZS9tc3ZjcnQvc2VhcmNoLmgsIGluY2x1ZGUvbXN2Y3J0L3NldGptcC5oLAoJICBpbmNsdWRlL21zdmNydC9zaGFyZS5oLCBpbmNsdWRlL21zdmNydC9zdGRkZWYuaCwKCSAgaW5jbHVkZS9tc3ZjcnQvc3RkaW8uaCwgaW5jbHVkZS9tc3ZjcnQvc3RkbGliLmgsCgkgIGluY2x1ZGUvbXN2Y3J0L3N0cmluZy5oLCBpbmNsdWRlL21zdmNydC9zeXMvbG9ja2luZy5oLAoJICBpbmNsdWRlL21zdmNydC9zeXMvc3RhdC5oLCBpbmNsdWRlL21zdmNydC9zeXMvdGltZWIuaCwKCSAgaW5jbHVkZS9tc3ZjcnQvc3lzL3R5cGVzLmgsIGluY2x1ZGUvbXN2Y3J0L3N5cy91dGltZS5oLAoJICBpbmNsdWRlL21zdmNydC90aW1lLmgsIGluY2x1ZGUvbXN2Y3J0L3djaGFyLmgsCgkgIGluY2x1ZGUvbXN2Y3J0L3djdHlwZS5oOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCURvbid0IHJlZGVmaW5lIF9fV0lORV9VU0VfTVNWQ1JUIChtc3ZjIHdhcm5pbmcpLgoJRG9uJ3QgcmV0dXJuIGEgdm9pZCB2YWx1ZSBpbiBzd2FiKCkuCgknbG9uZyBsb25nJyBpcyBub3QgcmVjb2duaXNlZCBieSBtc3ZjLCB1c2UgX19pbnQ2NC4KCgkqIGRsbHMvc2hsd2FwaS90aHJlYWQuYzogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCU1pc2MgZml4ZXMuCgoJKiBkbGxzL250ZGxsL2ZpbGUuYzogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCURvY3VtZW50YXRpb24gdXBkYXRlcy4KCgkqIGRsbHMvbnRkbGwvdGVzdHMvcnRsLmM6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglBZGRlZCBzb21lIG5ldyBSdGwqIHRlc3RzLgoKCSogaW5jbHVkZS93aW50ZXJubC5oOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJRml4ZWQgbXN2YyB3YXJuaW5nLgoKCSogZGxscy9tc3ZjcnQvZGF0YS5jLCBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglJbXBsZW1lbnQgX19wX193cGdtcHRyLCBfd3BnbXB0ci4KCUF2b2lkIHVzaW5nIHN0YXRpYyBzdG9yYWdlIGZvciBwZ20gcG9pbnRlcnMuCgoJKiBERVZFTE9QRVJTLUhJTlRTOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJSW1wcm92ZSB0aGUgc2FtcGxlIGNvbW1lbnQuCgoJKiBkbGxzL29sZTMyL29sZTMyX21haW4uaDogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCVJlbW92ZSBGSVhNRXMgYW5kIHByb3RvdHlwZXMgZm9yIG5vdy1pbXBsZW1lbnRlZCBmdW5jdGlvbnMuCgoJKiBkbGxzL25ldGFwaTMyL3Rlc3RzL3drc3RhLmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJRml4IGNvbXBpbGF0aW9uIHVuZGVyIFZTLk5ldC4KCgkqIHRvb2xzL3dpbmFwaS9tc3ZjbWFrZXI6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglIYW5kbGUgbG9uZyBmaWxlIG5hbWVzIGluIHByZS1idWlsZCBzdGVwIChxdW90ZSB0aGVtKS4KCWRsbHMvZ2RpL3dpbjE2ZHJ2IGRvZXNuJ3QgZXhpc3QgYW55IG1vcmUuCgoJKiBpbmNsdWRlL29sZTIuaDogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUluY2x1ZGUgb2xlYXV0by5oIGJlZm9yZSBvbGVpZGwuaCwgYXMgcGVyIG5hdGl2ZSBoZWFkZXJzLgoKCSogZGxscy9vbGVhdXQzMi92YXJpYW50LmMsIGluY2x1ZGUvb2xlYXV0by5oOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUFkZCBhIGJ1bmNoIG9mIG1pc3Npbmcgc3R1ZmYuCglVc2UgcHJvcGVyIHR5cGVzIGZvciBTYWZlQXJyYXkvdmFyaWFudCBwcm90b3R5cGVzLgoJQ2hhbmdlIEkxIGZ1bmN0aW9ucyB0byB0YWtlIHNpZ25lZCBjaGFycwoKCSogdG9vbHMvd2luZXdyYXAuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUFkZCAiLXdyYXAiIHRvIHRoZSB3cmFwcGVkIGFwcCwgdG8gYXZvaWQgcG9zc2libGUgbmFtZSBjb25mbGljdHMuCglBZGQgdGhlIGFwcCBkaXIgdG8gV0lORURMTFBBVEguCgoyMDAzLTA3LTE2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWM6IFBpZXJyZSBkJ0hlcmJlbW9udCA8c3RlZ2VmaW5AZnJlZS5mcj4KCUFkZCBQb3dlclBDIHByb2Nlc3NvciBkZXRlY3Rpb24uCgoJKiBkbGxzL29sZWF1dDMyL3JlZ3N2ci5jLCBkbGxzL3NoZWxsMzIvcmVnc3ZyLmM6CglGaXhlZCBzdHJpbmcuaCBpbmNsdWRlcy4KCgkqIGRsbHMvZG11c2ljL01ha2VmaWxlLmluLCBkbGxzL2RtdXNpYy9kbXVzaWNfbWFpbi5jLAoJICBkbGxzL2RtdXNpYy9yZWdzdnIuYywgZGxscy9kbXVzaWMvdmVyc2lvbi5yYzoKCUpvaG4gSy4gSG9obSA8amhvaG1AYWNtLm9yZz4KCUltcGxlbWVudCBEbGxSZWdpc3RlclNlcnZlciBhbmQgRGxsVW5yZWdpc3RlclNlcnZlciBmb3IgZG11c2ljLmRsbCwKCWFuZCBhZGQgT2xlU2VsZlJlZ2lzdGVyIHZlcnNpb24gc3RyaW5nLgoKCSogZGxscy9ycGNydDQvbmRyX3N0dWJsZXNzLmM6CglHcmVnb3J5IE0uIFR1cm5lciA8Z210dXJuZXIwMDdAYW1lcml0ZWNoLm5ldD4KCVJQQ1JUNF9OZHJDbGllbnRDYWxsMiBpcyBBVE0gaGFyZGx5ICJzZW1pLXN0dWIiLgoKCSogZGxscy9udGRsbC9zaWduYWxfcG93ZXJwYy5jOiBQaWVycmUgZCdIZXJiZW1vbnQgPHN0ZWdlZmluQGZyZWUuZnI+CglDaGFuZ2UgX19kYXJ3aW5fXyB0byBfX0FQUExFX18uCgoJKiBkbGxzL250ZGxsL3N5c2RlcHMuYzogUGllcnJlIGQnSGVyYmVtb250IDxzdGVnZWZpbkBmcmVlLmZyPgoJQWRkZWQgc3VwcG9ydCBmb3IgdGhlIFRFQiBvbiBNYWMgT1MgWC4KCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywgZGxscy9kZHJhdy9kM2R0ZXh0dXJlLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSBkbyBub3QgZm9yZ2V0IHRvIHNldCB0aGUgJ2luaXRpYWxfdXBsb2FkX2RvbmUnIGZsYWcgKHRvIGhhdmUgYmV0dGVyCgkgIHBlcmZvcm1hbmNlKQoJLSBiZXR0ZXIgaGFuZGxpbmcgb2YgdGhlICdpbml0aWFsJyBmbGFnIGZvciBmcmFtZS1idWZmZXIgZmx1c2hlcwoKMjAwMy0wNy0xNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRvY3VtZW50YXRpb24vd2luZS1kb2Muc2dtbDogQW5kcmV3IEJvcm9kaW4gPGFib3JvZGluQHZtYWlsLnJ1PgoJUmVtb3ZlZCBleHRyYSAvYm9vayB0YWcuCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmMsCgkgIGRsbHMvc2hlbGwzMi9jaGFuZ2Vub3RpZnkuYywgZGxscy94MTFkcnYvc2Nyb2xsLmMsIGluY2x1ZGUvZGRyYXcuaCwKCSAgbG9hZGVyL25lL21vZHVsZS5jLCBwcm9ncmFtcy93aW5lZGJnL2hhc2guYywgc2VydmVyL2ZpbGUuaCwKCSAgdG9vbHMvd2luZWNvbmYubGlicy9nZW5lcmFsLmVuZywgdG9vbHMvd2luZWNvbmYubGlicy93aW5lY29uZi5lbmcsCgkgIHRvb2xzL3dpbmVtYWtlci5tYW46CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVNwZWxsaW5nIGZpeGVzIChzL29jY3VyZWQvb2NjdXJyZWQvIGFuZCB2YXJpYW50cykuCgoJKiBkbGxzL2QzZDgvZGV2aWNlLmM6IFdhcm5pbmcgZml4LgoKCSogZGxscy93aW5pbmV0L2Z0cC5jLCBkbGxzL3dpbmluZXQvd2luaW5ldC5zcGVjOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gZml4IHNwZWMgZmlsZSBmb3IgRlRQRmluZEZpcnN0RmlsZUEvVyBmdW5jdGlvbnMKCS0gaW1wbGVtZW50IHBhcnNpbmcgb2YgTlQgZGlyZWN0b3J5IGZvcm1hdAoKCSogZGxscy93aW5lZG9zL2ludDFhLmM6IEp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCU1ha2UgaW50MWEgQklPUyB0aWNrcyBiZSBlcXVhbCB0byBCSU9TIHNlZ21lbnQgdGlja3MuCglGaXggYnVncyBpbiBpbnQxYSBzdWJmdW5jdGlvbnMuCgoJKiBkbGxzL3NoZWxsMzIvLmN2c2lnbm9yZSwgZGxscy9zaGVsbDMyL01ha2VmaWxlLmluLAoJICBkbGxzL3NoZWxsMzIvcmVnc3ZyLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsCgkgIGRsbHMvc2hlbGwzMi92ZXJzaW9uLnJjLCBkbGxzL29sZWF1dDMyL01ha2VmaWxlLmluLAoJICBkbGxzL29sZWF1dDMyL29sZWF1dC5jLCBkbGxzL29sZWF1dDMyL3JlZ3N2ci5jLAoJICBkbGxzL29sZWF1dDMyL3ZlcnNpb24ucmM6CglKb2huIEsuIEhvaG0gPGpob2htQGFjbS5vcmc+CglJbXBsZW1lbnQgRGxsUmVnaXN0ZXJTZXJ2ZXIgYW5kIERsbFVucmVnaXN0ZXJTZXJ2ZXIsIGFuZCBhZGQKCU9sZVNlbGZSZWdpc3RlciB2ZXJzaW9uIHN0cmluZy4KCgkqIGRsbHMveDExZHJ2L2tleWJvYXJkLmM6IEh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2UgdGhlIHJldHVybiBidWZmZXIgbGFyZ2VyIChmb3IgZXhhbXBsZSBFdXJvU2lnbiBpbiB1ZnQ4IGlzIDMrMQoJYnl0ZXMgbG9uZykuCgoJKiBkbGxzL3VybG1vbi91bW9uLmMsIGRsbHMvdXJsbW9uL3VybG1vbi5zcGVjLCBpbmNsdWRlL3VybG1vbi5oOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUltcGxlbWVudCBVUkxEb3dubG9hZFRvRmlsZUEvVy4KCgkqIGluY2x1ZGUvYmFzZXRzZC5oLCBpbmNsdWRlL3JwYy5oLCBpbmNsdWRlL3dpbm50Lmg6CglQaWVycmUgZCdIZXJiZW1vbnQgPHN0ZWdlZmluQGZyZWUuZnI+CglDaGFuZ2UgX19QUENfXyBkZWZpbmUgdG8gX19wb3dlcnBjX18uCgoJKiBpbmNsdWRlL3dpbmUvcG9ydC5oOiBDYXNwZXIgSG9ybnN0cnVwIDxjaG9ybnNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoJRGVmaW5lIGNvbnN0YW50cyBvZiBNX1BJICYgTV9QSV8yLgoKCSogZGxscy9kZHJhdy9kc3VyZmFjZS9tYWluLmM6IExpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglTb21lIGJyb2tlbiBnYW1lcyBkbyBub3QgcHV0IHRoZSBURVhUVVJFIGZsYWdzIGluIHRoZSBzdXJmYWNlIGNhcHMuCgoJKiBkbGxzL3gxMWRydi94dmlkbW9kZS5jOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJRGVza3RvcCBtb2RlIHNob3VsZCBvbmx5IGRpc2FibGUgbW9kZSBzd2l0Y2hpbmcsIG5vdCBnYW1tYSByYW1wCglzdXBwb3J0LgoKCSogcHJvZ3JhbXMvY2xvY2svbWFpbi5jLCBwcm9ncmFtcy9jbG9jay93aW5jbG9jay5jLAoJICBwcm9ncmFtcy9jbG9jay93aW5jbG9jay5oOgoJUmljaGFyZCBDb2hlbiA8cmljaGFyZC5jb2hlbkB2aXJnaW4ubmV0PgoJLSBSZW1vdmUgSWRsZSgpLgoJLSBGaXggcmVwYWludGluZyBhcnRlZmFjdHMgYnkgZHJhd2luZyBvbmx5IHRocm91Z2ggV01fUEFJTlQuCgktIFVuaWZ5IGhhbmQgZHJhd2luZyBmdW5jdGlvbnMuCgktIDAgJiA2IHRpY2tzIGFyZSBub3cgYWx3YXlzIHZlcnRpY2FsLgoKMjAwMy0wNy0xMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvdXNlci9ob29rLmMsIGRsbHMvdXNlci9tZXNzYWdlLmMsIGRsbHMvdXNlci9tZXNzYWdlLmgsCgkgIGluY2x1ZGUvdXNlci5oLCBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsIHNlcnZlci9ob29rLmMsCgkgIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci9xdWV1ZS5jLCBzZXJ2ZXIvdHJhY2UuYywgc2VydmVyL3VzZXIuaDoKCVJ1biBXSF9LRVlCT0FSRF9MTCBhbmQgV0hfTU9VU0VfTEwgaG9va3MgaW4gdGhlIGNvbnRleHQgb2YgdGhlIHRocmVhZAoJdGhhdCBzZXQgdGhlIGhvb2suCgoJKiBkbGxzL29wZW5nbDMyL3dnbC5jOiAgTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUNoZWNrIGlmICdHTFhfQVJCX2dldF9wcm9jX2FkZHJlc3MnIGlzIHN1cHBvcnRlZCBiZWZvcmUgdXNpbmcKCWdsWEdldFByb2NBZGRyZXNzQVJCLgoKCSogcHJvZ3JhbXMvY2xvY2svbGFuZ3VhZ2UuYywgcHJvZ3JhbXMvY2xvY2svbWFpbi5jLAoJICBwcm9ncmFtcy9jbG9jay93aW5jbG9jay5jOgoJUmljaGFyZCBDb2hlbiA8cmljaGFyZC5jb2hlbkB2aXJnaW4ubmV0PgoJTWFrZSBpbmRlbnRhdGlvbiBjb25zaXN0ZW50ICg0IGNoYXJzKS4KCgkqIHByb2dyYW1zL2Nsb2NrL1JFQURNRSwgcHJvZ3JhbXMvY2xvY2svVE9ETywKCSAgcHJvZ3JhbXMvY2xvY2svbGFuZ3VhZ2UuYywgcHJvZ3JhbXMvY2xvY2svbWFpbi5jLAoJICBwcm9ncmFtcy9jbG9jay93aW5jbG9jay5jOgoJUmljaGFyZCBDb2hlbiA8cmljaGFyZC5jb2hlbkB2aXJnaW4ubmV0PgoJLSByZW1vdmUgZXNjYXBlZCBuZXdsaW5lcywgYm9ndXMgImV4aXQiLCBwcmludGYncwoJLSBzdGFydCBhdCBhIHNlbnNpYmxlIHNpemUKCS0gdGlkeSB1cCBXbmRQcm9jCgktIHVzZSBhIHRpbWVyIGluc3RlYWQgb2Ygc2xlZXBpbmcgaW4gdGhlIG1lc3NhZ2UgbG9vcCAoVWdoISkKCgkqIGRsbHMvbnRkbGwvZmlsZS5jOiBQYXVsIFJ1cGUgPHBydXBlQG15cmVhbGJveC5jb20+CglyZWdpc3Rlcl9uZXdfYXN5bmMgc2V0cyBzdGF0dXMgYWxyZWFkeS4gIERvIG5vdCBvdmVyd3JpdGUgaXQgd2l0aCB0aGUKCWZ1bmN0aW9uJ3MgcmV0dXJuIHZhbHVlLgoKCSogcHJvZ3JhbXMvd2NtZC9Fbi5yYywgcHJvZ3JhbXMvd2NtZC9QdC5yYzoKCU1hcmNlbG8gRHVhcnRlIDx3aW5lLWRldmVsQGJvbC5jb20uYnI+CglNaW5vciBmaXhlcyBpbiBQdCwgRW4gcmVzb3VyY2VzLgoKCSogZGxscy9semV4cGFuZC9semV4cGFuZF9tYWluLmM6IE1hcmNlbG8gRHVhcnRlIDx3aW5lLWRldmVsQGJvbC5jb20uYnI+CglMWkNvcHk6IG1vZGlmaWVkIHRpbWVzdGFtcCBvZiBhIGV4cGFuZGVkIGZpbGUgaGFzIHRvIGJlIHRoZSBzYW1lIG9mCglvcmlnaW5hbCBmaWxlLgoKCSogZGxscy9udGRsbC9lcnJvci5jLCBkbGxzL3VzZXIvbWVzc2FnZS5jLAoJICBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci9xdWV1ZS5jLAoJICBzZXJ2ZXIvdHJhY2UuYzoKCUltcGxlbWVudGVkIHRoZSBTTVRPX0FCT1JUSUZIVU5HIGZsYWcgb2YgU2VuZE1lc3NhZ2VUaW1lb3V0LgoKCSogaW5jbHVkZS9vYmppZGwuaCwgaW5jbHVkZS9vYmppZGwuaWRsOiBXYXJuaW5nIGZpeC4KCgkqIGRsbHMvb3BlbmdsMzIvbWFrZV9vcGVuZ2w6CglBdm9pZCBlbXB0eSBsaW5lcyBhdCB0aGUgZW5kIG9mIGdlbmVyYXRlZCBmaWxlcy4KCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywgZGxscy9kZHJhdy9tZXNhLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSBhZGRlZCBmYXN0LXBhdGggZm9yIGNvbG9yLWtleWVkIEJsdHMKCS0gZml4IDU2NSBjb2xvdXIta2V5aW5nIGNvbnZlcnNpb24KCS0gcHJvcGVybHkgaGFuZGxlcyBQaXRjaCBpbiBjb2xvdXIgY29udmVyc2lvbgoJLSBlYXNpZXIgYW5kIGxlc3MgYnVnZ3kgVU5QQUNLX1dJRFRIIHN1cHBvcnQKCgkqIGRsbHMvb3BlbmdsMzIvd2dsLmM6IExpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglMb2FkIGdsWEdldFByb2NBZGRyZXNzQVJCIGR5bmFtaWNhbGx5LgoKCSogZG9jdW1lbnRhdGlvbi9idWlsZC5zZ21sOiBWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglGaXhlZCB0eXBvcy4KCgkqIHByb2dyYW1zL3djbWQvRW4ucmMsIHByb2dyYW1zL3djbWQvRnIucmMsIHByb2dyYW1zL3djbWQvYnVpbHRpbnMuYywKCSAgcHJvZ3JhbXMvd2NtZC93Y21kbWFpbi5jLCBwcm9ncmFtcy93Y21kL3djbWRyYy5yYzoKCVN5bHZhaW4gUGV0cmVvbGxlIDxzcGV0cmVvbGxlQHlhaG9vLmZyPgoJRnJlbmNoIHRyYW5zbGF0aW9uICsgbWlzYyBmaXhlcy4KCjIwMDMtMDctMDkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBWRVJTSU9OLCBjb25maWd1cmUsIEFOTk9VTkNFLCBDaGFuZ2VMb2c6IFJlbGVhc2UgMjAwMzA3MDkuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjIwMDMtMDctMDkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3VzZXIvdXNlcl9tYWluLmMsIGRsbHMvdXNlci93aW5wcm9jLmgsIHdpbmRvd3Mvd2lucHJvYy5jOgoJU3RvcmUgd2luZG93IHByb2NlZHVyZXMgaW4gYSBzdGF0aWMgYXJyYXkgaW5zdGVhZCBvZiBjcmVhdGluZyBhIGhlYXAuCglPbmx5IGFsbG9jYXRlIHRoZSB3aW5wcm9jIHNlbGVjdG9yIHdoZW4gYWN0dWFsbHkgbmVlZGVkLgoKCSogcHJvZ3JhbXMvd2NtZC93Y21kbWFpbi5jOgoJQXZvaWQgaGFyZC1jb2RlZCBjb21tYW5kIGxpbmUgbGVuZ3RoIGxpbWl0IGluIFdDTURfcHJvY2Vzc19jb21tYW5kLgoKCSogZGxscy93aW5pbmV0L2h0dHAuYywgZGxscy93aW5pbmV0L2ludGVybmV0LmM6CglGaXhlZCBhIGNvdXBsZSBvZiBidWZmZXIgb3ZlcmZsb3dzLgoKCSogaW5jbHVkZS93aW5iYXNlLmg6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBiYWlrYWwucnU+CglVc2UgaW5saW5lIHZlcnNpb25zIG9mIEFQSXMgb25seSBpbnRlcm5hbGx5IGluIFdpbmUuCgoJKiBwcm9ncmFtcy93aW5lZGJnL2hhc2guYzogQ2F0YWxpbiBQYXR1bGVhIDxjYXRhbGluc0B2di5jYXJsZXRvbi5jYT4KCU9ubHkgZGlzcGxheSBmaWxlbmFtZXMgd2hlbiBzaG93aW5nIGFkZHJlc3Nlcy4KCgkqIHByb2dyYW1zL3djbWQvd2NtZG1haW4uYzogR3JlZyBNYXJzZGVuIDxHTWFyc2RlbkBXRVNDQU0uY29tPgoJQWxsb3cgY29tbWFuZCBsaW5lcyB3aXRoIHBpcGVzIHRvIGJlIHByb2Nlc3NlZCBieSB3Y21kLgoKCSogd2luMzIvZXhjZXB0LmM6IEp1cmFqIEhlcmNlayA8anVyYWpAc3luY2FkLmNvbT4KCU1vZGlmaWVkIHVuaGFuZGxlZCBleGNlcHRpb24gbWVzc2FnZSB0byBjb250YWluIGFsc28gdGhyZWFkCglpZGVudGlmaWVyLgoKCSogdG9vbHMvd3JjL3BhcnNlci55OiBKdXJhaiBIZXJjZWsgPGp1cmFqQHN5bmNhZC5jb20+CglBZGp1c3RlZCBncmFtbWFyIHRvIGFjY2VwdCBhbHNvIGhlbHAtaWRzIGZvciBkaWFsb2dleCBjb250cm9scy4KCgkqIGRsbHMvaXBobHBhcGkvaWZlbnVtLmM6IFJvYmVydCBMdW5ub24gPGJvYkB5YXJyYWJlZS5uZXQuYXU+CglGaXhlZCBzb21lIGNvbXBpbGUgcHJvYmxlbXMgdW5kZXIgU29sYXJpcy4KCgkqIHNjaGVkdWxlci90aHJlYWQuYzoKCVVzZSBOdFF1ZXJ5SW5mb3JtYXRpb25UaHJlYWQgdG8gaW1wbGVtZW50IEdldEV4aXRDb2RlVGhyZWFkLgoKCSogZGxscy91c2VyL2NvbnRyb2xzLmgsIGRsbHMvdXNlci9kaWFsb2cxNi5jLCBkbGxzL3VzZXIvdXNlcl9tYWluLmMsCgkgIHdpbmRvd3MvZGlhbG9nLmM6CglPbmx5IGNvbXB1dGUgZGlhbG9nIGJhc2UgdW5pdHMgb25jZSB3ZSBuZWVkIHRoZW0uCgoJKiBkb2N1bWVudGF0aW9uL2FyY2hpdGVjdHVyZS5zZ21sLCBkb2N1bWVudGF0aW9uL2J1Z3Muc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9jb25maWd1cmluZy5zZ21sLCBkb2N1bWVudGF0aW9uL2NvbnNvbGVzLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vY3ZzLXJlZ3Jlc3Npb24uc2dtbCwgZG9jdW1lbnRhdGlvbi9jdnMuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9kZWJ1Z2dlci5zZ21sLCBkb2N1bWVudGF0aW9uL2RsbHMuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9kb2N1bWVudGF0aW9uLnNnbWwsIGRvY3VtZW50YXRpb24vZ2V0dGluZy5zZ21sLAoJICBkb2N1bWVudGF0aW9uL2kxOG4uc2dtbCwgZG9jdW1lbnRhdGlvbi9pbXBsZW1lbnRhdGlvbi5zZ21sLAoJICBkb2N1bWVudGF0aW9uL211bHRpbWVkaWEuc2dtbCwgZG9jdW1lbnRhdGlvbi9vbGUuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9vcGVuZ2wuc2dtbCwgZG9jdW1lbnRhdGlvbi9wYXRjaGVzLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vcG9ydGluZy5zZ21sLCBkb2N1bWVudGF0aW9uL3ByaW50aW5nLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vcnVubmluZy5zZ21sLCBkb2N1bWVudGF0aW9uL3Rlc3Rpbmcuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi90b29scy5zZ21sLCBkb2N1bWVudGF0aW9uL3dpbmVsaWItYmluZGxscy5zZ21sLAoJICBkb2N1bWVudGF0aW9uL3dpbmVsaWItaW50cm8uc2dtbCwgZG9jdW1lbnRhdGlvbi93aW5lbGliLXBvcnRpbmcuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi93aW5lbGliLXRvb2xraXQuc2dtbDoKCVRvbSBXaWNrbGluZSA8dHdpY2tsaW5lQHNreWJlc3QuY29tPgoJU3BlbGxpbmcgYW5kIFVSTCBmaXhlcy4KCgkqIGRsbHMvb2xlMzIvTWFrZWZpbGUuaW4sIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL29sZTE2LmMsCgkgIGRsbHMvb2xlMzIvb2xlMi5jLCBkbGxzL29sZTMyL29sZTJfMTYuYzoKCVN0ZXZlbiBFZHdhcmRzIDxzdGV2ZW5fZWQ0MTUzQHlhaG9vLmNvbT4KCS0gQ3JlYXRlIG5ldyBmaWxlIG9sZTJfMTYuYyBmb3Igb2xlMiAxNmJpdCBvbmx5IGZ1bmN0aW9ucy4KCS0gTW92ZSBDTFNJREZyb21Qcm9nSUQxNiBzbyBpdCBjYW4gYmUgdXNlZCBpbnRlcm5hbGx5LgoJLSBDb21waWxlIG91dCBtb3JlIFdpbjE2IHNvdXJjZXMuCgoJKiBkbGxzL2tlcm5lbC9sb2NhbGUuYzogR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglBZGQgY2hhcnNldCBpbmZvcm1hdGlvbiBhcyB1c2VkIGJ5IEZyZWVCU0QuCgoJKiBkbGxzL250ZGxsL250ZGxsLnNwZWM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBiYWlrYWwucnU+CglGaXggc3BlYyBlbnRyeSBmb3IgWndTZXRUaW1lclJlc29sdXRpb24uCgoJKiBkbGxzL2tlcm5lbC9sb2NhbGUuYywgZGxscy94MTFkcnYvY2xpcGJvYXJkLmMsCgkgIGRsbHMveDExZHJ2L2tleWJvYXJkLmMsIGRsbHMveDExZHJ2L3dpbmRvdy5jLAoJICBkb2N1bWVudGF0aW9uL2NvbmZpZ3VyaW5nLnNnbWwsIGRvY3VtZW50YXRpb24vc2FtcGxlcy9jb25maWcsCgkgIGluY2x1ZGUvd2lubmxzLmgsIG1lbW9yeS9jb2RlcGFnZS5jLCBwcm9ncmFtcy93aW5lY2ZnL3Byb3BlcnRpZXMuaCwKCSAgcHJvZ3JhbXMvd2luZWNmZy93aW5lY2ZnLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgc3VwcG9ydCBmb3IgQ1BfVU5JWENQLgoKCSogZGxscy9vbGVhdXQzMi9kaXNwYXRjaC5jOgoJUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCS0gQWRkUmVmIHR5cGUgaW5mbyBzdG9yZWQgaW4gU3RkRGlzcGF0Y2guCgktIERvbid0IHVzZSBvdXRlciB1bmtub3duIGluIFN0ZERpc3BhdGNoLgoKCSogZ3JhcGhpY3MveDExZHJ2L3hmb250LmM6IExpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglEbyBub3QgY3Jhc2ggd2hlbiB0cnlpbmcgdG8gbG9hZCBiYWQgZm9udHMuCgoJKiBkbGxzL2tlcm5lbC90aHJlYWQuYywgZGxscy9udGRsbC9udC5jLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsCgkgIGRsbHMvbnRkbGwvdGhyZWFkLmMsIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwKCSAgaW5jbHVkZS93aW50ZXJubC5oLCBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvdGhyZWFkLmMsCgkgIHNlcnZlci90cmFjZS5jOgoJSW1wbGVtZW50ZWQgdGhlIFRocmVhZEJhc2ljSW5mb3JtYXRpb24gY2FzZSBmb3IKCU50UXVlcnlJbmZvcm1hdGlvblRocmVhZC4KCgkqIGRsbHMvYXZpZmlsMzIvYXBpLmMsIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYywgZGxscy9kbXVzaWMvaGVscGVyLmMsCgkgIGRsbHMvZHBsYXl4L2RwbGF5LmMsIGRsbHMvZHNvdW5kL3NvdW5kM2QuYywKCSAgZGxscy9tc3ZpZGVvL21zcmxlMzIvbXNybGUzMi5jLCBkbGxzL29sZTMyL3N0b3JhZ2UzMi5jLAoJICBkbGxzL29sZWF1dDMyL3NhZmVhcnJheS5jLCBkbGxzL29sZWF1dDMyL3R5cGVsaWIxNi5jLAoJICBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYywgZGxscy9zaGVsbDMyL3Rlc3RzL3NobGZpbGVvcC5jLAoJICBkb2N1bWVudGF0aW9uL2NvbmZpZ3VyaW5nLnNnbWwsIGluY2x1ZGUvZGRyYXcuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJU3BlbGxpbmcgZml4ZXMuCgoJKiBkb2N1bWVudGF0aW9uL2F1dGhvcnMuZW50LCBkb2N1bWVudGF0aW9uL2J1aWxkLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vd2luZS1kZXZlbC5zZ21sOgoJU2hhY2hhciBTaGVtZXNoIDx3aW5lLXBhdGNoZXNAc2hlbWVzaC5iaXo+CglUaGUgYmVnaW5pbmcgb2YgYSAiYnVpbGRpbmcgd2luZSIgZG9jdW1lbnRhdGlvbi4gTW9yZSBkZXRhaWxlZAoJZXhwbGFuYXRpb24gb2YgdGhlICJzb2Z0IiB2cy4gImhhcmQiIGRlcGVuZGVuY2llcy4KCgkqIGRsbHMvbnRkbGwvZW52LmMsIHByb2dyYW1zL3djbWQvd2NtZG1haW4uYywKCSAgcHJvZ3JhbXMvd2luZXZkbS93aW5ldmRtLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglOdWxsIHBhcmFtZXRlcnMgbmVlZCB0byBiZSBxdW90ZWQgb24gdGhlIGNvbW1hbmRsaW5lLgoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJUHJlc2VydmUgQS9XIHdoZW4gY3JlYXRpbmcgcHJvcHNoZWV0IGRpYWxvZ3MuCgoyMDAzLTA3LTA4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9rZXJuZWwvcHJvY2Vzcy5jLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvbnRkbGwvdmlydHVhbC5jLAoJICBpbmNsdWRlL3dpbnRlcm5sLmg6CglJbXBsZW1lbnRlZCBOdFJlYWQvV3JpdGVWaXJ0dWFsTWVtb3J5LgoKCSogZGxscy91c2VyL2NvbW0xNi5jLCBkbGxzL3VzZXIvdXNlcl9tYWluLmM6CglMb29rdXAgQ09NL0xQVCBkZXZpY2VzIGluIHRoZSByZWdpc3RyeSB3aGVuIHRoZXkgYXJlIHVzZWQsIGluc3RlYWQgb2YKCWxvYWRpbmcgZXZlcnl0aGluZyBhdCBzdGFydHVwLgoKCSogZGxscy93aW5lZG9zL2Rvc3ZtLmMsIGRsbHMvd2luZWRvcy9oaW1lbS5jLCBkbGxzL3dpbmVkb3MvaW50MzEuYywKCSAgZGxscy93aW5lZG9zL2ludDMzLmMsIGRsbHMvd2luZWRvcy92Z2EuYzoKCUp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCVJlYWwgbW9kZSBjb250ZXh0IHNob3VsZCBhbHdheXMgaGF2ZSBWODYgZmxhZyB0dXJuZWQgb24uCglFbnRlcmluZyBwcm90ZWN0ZWQgbW9kZSB1c2VzIHNpbXBsZXIgYW5kIG1vcmUgcm9idXN0IHZpcnR1YWwgaW50ZXJydXB0CglmbGFnIGNoZWNrLgoJTW91c2UgZXZlbnRzIGFyZSBub3cgcmVjZWl2ZWQgaW4gZ3JhcGhpY3MgbW9kZXMuCglJbXByb3ZlZCB0cmFjaW5nIG91dHB1dCBvZiBpbnQzMyBoYW5kbGVyLgoKCSogZGxscy9uZXRhcGkzMi9uZXRhcGkzMi5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJUmVtb3ZlZCBhIG5vIGxvbmdlciB1c2VkIGhlYWRlci4KCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywgZGxscy9kZHJhdy9kc3VyZmFjZS9kaWIuYywKCSAgZGxscy9kZHJhdy9kc3VyZmFjZS9tYWluLmMsIGRsbHMvZGRyYXcvbWVzYS5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gZml4IEZQUyBjb21wdXRhdGlvbgoJLSBzb21lIFRSQUNFaW5nIGZpeGVzCgktIG9wdGltaXplIEJsdEZhc3QgbG9ja2luZyByZWN0YW5nbGVzCgoJKiBkb2N1bWVudGF0aW9uL3NhbXBsZXMvd2luLmluaTogVG9tIFdpY2tsaW5lIDx0d2lja2xpbmVAc2t5YmVzdC5jb20+Cgk2IG5ldyBtY2kgZXh0ZW5zaW9ucy4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJRml4ZWQgYSB0eXBvIGluIHRoZSBwcmV2aW91cyBTSEdldEZpbGVJbmZvKCkgcGF0Y2guCgoJKiBkbGxzL29wZW5nbDMyL21ha2Vfb3BlbmdsLCBkbGxzL29wZW5nbDMyL29wZW5nbDMyLnNwZWMsCgkgIGRsbHMvb3BlbmdsMzIvb3BlbmdsX2V4dC5jLCBkbGxzL29wZW5nbDMyL29wZW5nbF9ub3JtLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJT25seSBwdXQgJ3B1cmUnIEdMIDEuMiBjYWxscyBpbiB0aGUgJ29wZW5nbF9ub3JtLmMnIGZpbGUuCgoJKiBncmFwaGljcy94MTFkcnYveGZvbnQuYzogT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglGaXhlZCBhIG1lbW9yeSBhbGxvY2F0aW9uL2NvcnJ1cHRpb24gYnVnIHdoZW4gZ3Jvd2luZyB0aGUgZm9udCBjYWNoZS4KCgkqIGluY2x1ZGUvZDNkOC5oLCBpbmNsdWRlL2QzZDl0eXBlcy5oOgoJUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CglTb21lIGZpeGVzIG9uIGQzZDggYW5kIGQzZDkgaGVhZGVycy4KCgkqIGRsbHMveDExZHJ2L2NsaXBib2FyZC5jLCBkbGxzL3gxMWRydi9ldmVudC5jLCBkbGxzL3gxMWRydi94MTFkcnYuaDoKCVVscmljaCBDemVrYWxsYSA8dWxyaWNoQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVkIGhhbmRsaW5nIG9mIHN5bnRoZXNpemVkIGRhdGEuCglEb24ndCByZXBvcnQgZXJyb3JzIHdoZW4gdGhlcmUgaXMgbm8gc2VsZWN0aW9uIG93bmVyLgoJUmVpbnRlZ3JhdGUgdGhlIENPTVBPVU5EX1RFWFQgcGF0Y2ggYnkgS3VzYW5hZ2kgS291aWNoaS4KCgkqIGRsbHMvZDNkOC9zdXJmYWNlLmMsIGRsbHMvZDNkOC92b2x1bWUuYzoKCVJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJLSBzb21lIGNvc21ldGljIGZpeGVzCgktIGZpeCBhIGJ1ZyBvbiBJRGlyZWN0M0RWb2x1bWU4SW1wbF9BZGREaXJ0eUJveAoKMjAwMy0wNy0wMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGlmMTYzMi9idWlsdGluLmMsIGluY2x1ZGUvbW9kdWxlLmgsIGluY2x1ZGUvd2luZS9saWJyYXJ5LmgsCgkgIGxpYnMvd2luZS9sb2FkZXIuYywgcmVsYXkzMi9idWlsdGluMzIuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCUFkZGVkIGEgZmlsZV9leGlzdHMgYXJndW1lbnQgdG8gd2luZV9kbGxfbG9hZCB0byBhbGxvdyBjaGVja2luZwoJd2hldGhlciBhIGZhaWxlZCBkbGwgbG9hZCBpcyBiZWNhdXNlIHRoZSBmaWxlIGRpZG4ndCBleGlzdDsgbW9yZQoJcm9idXN0IHRoYW4gdHJ5aW5nIHRvIGd1ZXNzIHRoZSBjb250ZW50cyBvZiB0aGUgZXJyb3Igc3RyaW5nLi4uCglHZXQgcmlkIG9mIEJVSUxUSU4zMl9kbG9wZW4uCgoJKiBzZXJ2ZXIvaG9vay5jLCBzZXJ2ZXIvcXVldWUuYywgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdGhyZWFkLmgsCgkgIHNlcnZlci91c2VyLmg6CglTdG9yZSB0aGUgaG9vayB0YWJsZSBpbiB0aGUgdGhyZWFkIHF1ZXVlIGluc3RlYWQgb2YgdGhlIHRocmVhZAoJc3RydWN0dXJlLCBhbmQgbWFrZSBzdXJlIHRoZSBxdWV1ZSBpcyBhbGxvY2F0ZWQgd2hlbiBzZXR0aW5nIGEgaG9vay4KCgkqIGRsbHMvbnRkbGwvc3lzZGVwcy5jLCBmaWxlcy9zbWIuaDoKCUZpeGVkIGNvbXBpbGUgd2hlbiBmdW5jdGlvbnMgYXJlIG5vdCBpbmxpbmVkLgoKCSogc2VydmVyL2ZkLmM6IE9uZSBtb3JlIHdvcmthcm91bmQgZm9yIGEgbWlzc2luZyBORlMgbG9jayBkYWVtb24uCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmM6IFN0ZXBoYW4gQkVVWkUgPGZiaWdndW5AaG90bWFpbC5jb20+CgktIEZpeGVkIGlJbmRleCB1c2UgaW4gU0hHZXRGaWxlSW5mb0EgKGFzIG9mIE1TRE4sIGlJbmRleCBpcyBjb3BpZWQgaW4KCSAgdGhlIGlJY29uIGZpZWxkIG9mIHBzZmkpCgktIFJlbW92ZWQgRExMX1RIUkVBRF9BVFRBQ0ggYW5kIERMTF9USFJFQURfREVUQUNIIGNhc2VzLgoKCSogZGxscy9kM2Q4L2QzZDhfcHJpdmF0ZS5oLCBkbGxzL2QzZDgvZGV2aWNlLmMsIGRsbHMvZDNkOC9kcmF3cHJpbS5jLAoJICBkbGxzL2QzZDgvc3VyZmFjZS5jLCBkbGxzL2QzZDgvdXRpbHMuYzoKCUphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglJbXBsZW1lbnQgVXBkYXRlVGV4dHVyZSBmb3IgMkQgdGV4dHVyZXMgb25seS4KCUhhbmRsZSBhbHBoYW9wIGRpc2FibGVkIGJ1dCBjb2xvciBvcCBub3QtZGlzYWJsZSBpbiBhIG1vcmUgYXBwcm9wcmlhdGUKCXdheSAoRG9jcyBzYXkgdGhpcyBpcyBhbiBpbGxlZ2FsIHN0YXRlIGFuZCB0aGVuIHByb2NlZWQgdG8gdXNlIGl0KS4KCVRyYWNlIG91dCB0ZXh0dXJlcyBhcyB0aGV5IGFyZSBjcmVhdGVkLgoJVXBkYXRlIHRoZSBjb21tZW50cyBhcm91bmQgdGhlIGRlYnVnIGNvZGUgYW5kIGNvbXBsZXRlIHRoZSBkZWJ1Z2dpbmcKCXNldCBzbyB0ZXh0dXJlcyB3aGljaCBhcmUgdXNlZCBpbiB0aGUgZ2FtZSBjYW4gYWxzbyBiZSB2aWV3ZWQuCgoJKiBkbGxzL3F1YXJ0ei9maWx0ZXJncmFwaC5jOgoJUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCS0gSW1wcm92ZSBRdWVyeUludGVyZmFjZSBGSVhNRSBtZXNzYWdlLgoJLSBBZGQgc3R1YnMgZm9yIElNZWRpYUZpbHRlciBpbnRlcmZhY2UgaW4gSUdyYXBoQnVpbGRlci4KCS0gSW1wbGVtZW50IHNvbWUgc2ltcGxlIG1ldGhvZHMuCgoJKiBkbGxzL2tlcm5lbC9sb2NhbGUuYywgZGxscy9rZXJuZWwvdGVzdHMvbG9jYWxlLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRXhpdCBlYWxpZXIgZnJvbSBMQ01hcFN0cmluZ0EgaW4gdGhlIGNhc2Ugb2YgTENNQVBfU09SVEtFWS4KCURvbid0IHJlbHkgb24gY29tcHV0aW5nIHN0cmluZyBsZW5ndGggYnkgTXVsdGlCeXRlVG9XaWRlQ2hhciBpbgoJQ29tcGFyZVN0cmluZ0EsIGRvIGl0IG1hbnVhbGx5LgoKCSogZGxscy93aW5tbS93aW5lamFjay9qYWNrLmM6IE1hcmN1cyBNZWlzc25lciA8bWVpc3NuZXJAc3VzZS5kZT4KCVVzZSBzdGFuZGFyZCBkZWJ1Z2dpbmcgbWFjcm9zIGZvciBqYWNrLgoJSkFDS19TT05BTUUgLT4gU09OQU1FX0xJQkpBQ0sgc28gd2UgZG8gbm90IG5lZWQgdGhlIGRldmVsIHN5bWxpbmsKCXRoZXJlLgoKCSogZGxscy93aW5lZG9zL2ludDMxLmM6IE1hcmN1cyBNZWlzc25lciA8bWVpc3NuZXJAc3VzZS5kZT4KCURQTUkgZXhjZXB0aW9ucyBvbmx5IGhhcHBlbiBvbiBpMzg2LgoKMjAwMy0wNy0wMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbnRyb2xzL2NvbWJvLmMsIGRsbHMvY2FiaW5ldC9mZGkuYywgZGxscy9kc291bmQvc291bmQzZC5jLAoJICBkbGxzL2tlcm5lbC9mb3JtYXRfbXNnLmMsIGRsbHMvbnRkbGwvdGltZS5jLCBkbGxzL29sZTMyL2RhdGFjYWNoZS5jLAoJICBkbGxzL29sZTMyL21vbmlrZXIuYywgZGxscy9vbGUzMi9vbGUyLmMsIGRsbHMvcXVhcnR6L2ZpbHRlcm1hcHBlci5jLAoJICBkbGxzL3NobHdhcGkvcGF0aC5jLCBkbGxzL3R3YWluL3R3YWluLmgsIGRsbHMvdXNlci9sc3RyLmMsCgkgIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jLCBkbGxzL3dpbm1tL3dpbmVvc3MvbWlkaS5jLAoJICBkb2N1bWVudGF0aW9uL211bHRpbWVkaWEuc2dtbCwgZ3JhcGhpY3MveDExZHJ2L29wZW5nbC5jLAoJICBvYmplY3RzL3BhbGV0dGUuYywgcHJvZ3JhbXMvcmVnc3ZyMzIvcmVnc3ZyMzIuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRml4ZWQgc29tZSBjb21tb24gc3BlbGxpbmcgZXJyb3JzLgoKCSogbG9hZGVyL3Rhc2suYzoKCUF2b2lkIGFjY2Vzc2luZyB1bmluaXRpYWxpemVkIHZhcmlhYmxlIGluIFRBU0tfQ3JlYXRlIChzcG90dGVkIGJ5CglSb2JlcnQgU2hlYXJtYW4pLgoKCSogZGxscy9pbW0zMi9pbW0uYywgcHJvZ3JhbXMvd2luZW1lbnVidWlsZGVyL3dpbmVtZW51YnVpbGRlci5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglSZW1vdmUgc29tZSB1bm5lY2Vzc2FyeSBjYXN0cyB3aGVuIGFzc2lnbmluZyBOVUxMIHRvIGhhbmRsZXMuCgoJKiBkbGxzL2RtdXNpYy9kbXVzaWNfcGVyZm9ybWFuY2UuYzoKCUNocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCU1ha2UgSW5pdCBhbmQgSW5pdEF1ZGlvIHJldHVybiBhbiBlcnJvciB3aGVuIG5vIGF1ZGlvIGRyaXZlciBpcwoJYXZhaWxhYmxlLgoJRml4IGNyYXNoIGluIEluaXRBdWRpbyB3aGVuIHJlbGVhc2luZyB0aGUgZHNvdW5kIG9iamVjdC4KCgkqIGxpYnMvcG9ydC9pbnRlcmxvY2tlZC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1laXNzbmVyQHN1c2UuZGU+CglBZGRlZCBpc3luYyB0byB0aGUgaW50ZXJsb2NrZWQgZnVuY3Rpb25zLgoKCSogaW5jbHVkZS93aW5iYXNlLmg6IE1hcmN1cyBNZWlzc25lciA8bWVpc3NuZXJAc3VzZS5kZT4KCVBvd2VyUEMgaW5saW5lIHZlcnNpb25zIG9mIHRoZSBpbnRlcmxvY2tlZCBmdW5jdGlvbnMuCgoJKiBkbGxzL21zYWNtL2RyaXZlci5jLCBkbGxzL21zYWNtL2ludGVybmFsLmMsIGRsbHMvbXNhY20vc3RyZWFtLmMsCgkgIGRsbHMvbXNhY20vd2luZWFjbS5oLCBkbGxzL21zdmlkZW8vbXN2aWRlb19tYWluLmMsIGRsbHMvd2lubW0vbW1pby5jLAoJICBkbGxzL3dpbm1tL21tc3lzdGVtLmMsIGRsbHMvd2lubW0vd2lubW0uYywgaW5jbHVkZS9tbXN5c3RlbS5oOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CgktIHJlbmFtZWQgd2lubW0uT3BlbkRyaXZlclcgaW50byB3aW5tbS5PcGVuRHJpdmVyCgktIHJlcGxhY2VkIGFsbCBpbnRlci1ETEwgY2FsbHMgKG1zYWNtIGFuZCBtc3ZpZGVvKSB0byBPcGVuRHJpdmVyQSB3aXRoCgkgIE9wZW5Ecml2ZXIgKHVuaWNvZGUgZm9ybSkKCS0gYXMgYSBjb25zZXF1ZW5jZSwgZHJpdmVyIG5hbWUgaGFuZGxpbmcgaW4gbXNhY20gaXMgbm93IG1vc3RseQoJICB1bmljb2RlCgktIG1vdmVkIFVzZXJZaWVsZDE2IGFuZCBVbk1hcExTIGNhbGwgb3V0IG9mIHRoZSAzMmJpdCBwYXJ0IG9mIHdpbm1tCgoJKiBkbGxzL21zdmlkZW8vbXNybGUzMi9tc3JsZTMyLmM6CglNaWNoYWVsIEf8bm5ld2lnIDxNaWNoYWVsR3Vlbm5ld2lnQGdteC5kZT4KCUZpeGVkIDIgdHlwb3MgaW4gbXkgbGFzdCBwYXRjaC4KCgkqIGRsbHMvYXZpZmlsMzIvYXBpLmMsIGRsbHMvYXZpZmlsMzIvYXZpZmlsZS5jLCBpbmNsdWRlL3Zmdy5oOgoJTWljaGFlbCBH/G5uZXdpZyA8TWljaGFlbEd1ZW5uZXdpZ0BnbXguZGU+CgktIEZpeGVkIG1lbW9yeSBsZWFrIGluIEFWSVNhdmVPcHRpb25zLgoJLSBJbXBsZW1lbnRlZCBBVklTYXZlVlcgbWV0aG9kLgoJLSBTZW1pLXN0dWIgaW1wbGVtZW50YXRpb24gZm9yIENyZWF0ZUVkaXRhYmxlU3RyZWFtIG1ldGhvZC4KCS0gQWRkZWQgc3VwcG9ydCBmb3IgY3JlYXRpb24gb2YgaW50ZXJsZWF2ZWQgQVZJIGZpbGVzLgoJLSBGaXhlZCBjcmVhdGlvbiBvZiBpbmRleCB0YWJsZSBpbiBBVkkgZmlsZXMuCgktIEFkZGVkIGRlY2xhcmF0aW9uIGZvciBJQVZJU3RyZWFtaW5nIGludGVyZmFjZS4KCS0gQWRkZWQgc29tZSBtb3JlIG1hY3Jvcy4KCS0gRml4ZWQgc29tZSBtaW5vciBidWdzLgoKCSogZGxscy9kM2Q4L3RleHR1cmUuYzogSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCUVuc3VyZSBNSVBNQVAgbGV2ZWxzIGlzIHJlc2V0IHdoZW4gcmViaW5kaW5nIGFuIGV4aXN0aW5nIHRleHR1cmUgdG8gYQoJdGV4dHVyZSB1bml0LgoKCSogZGxscy9kM2Q4L2Jhc2V0ZXh0dXJlLmM6IEphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglBZGQgR2V0TGV2ZWxDb3VudCB0byB0aGUgYmFzZXRleHR1cmUgY2xhc3MuCgoJKiBkbGxzL3NoZWxsMzIvYnJzZm9sZGVyLmM6IEVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJT25seSByZWxlYXNlIG9iamVjdCBpZiB3ZSBhY3R1YWxseSBnb3QgaXQuCgoJKiBkbGxzL2QzZDgvZHJhd3ByaW0uYzogSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCUVuc3VyZSBwaXhlbCBjb29yZGluYXRlcyBwb2ludCB0byB0aGUgYm90dG9tIGxlZnQgb2YgdGhlIHBpeGVsIG5vdCB0aGUKCW1pZGRsZS4KCgkqIG9iamVjdHMvdGV4dC5jOiBTaGFjaGFyIFNoZW1lc2ggPHdpbmUtcGF0Y2hAc2hlbWVzaC5iaXo+CglEb24ndCBjYWxsIHRoZSByZW9yZGVyaW5nIGZ1bmN0aW9uIGlmIHRoZSBzdHJpbmcgbGVuZ3RoIGlzIDAuIFRoaXMKCWVsaW1pbmF0ZXMgYSBub2lzeSBGSVhNRSBhYm91dCBJQ1UgcmV0dXJuaW5nIGFuIGluY29ycmVjdCBlcnJvciBjb2RlLgoKCSogZGxscy9xdWFydHovZmlsdGVybWFwcGVyLmM6CglSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJRml4IGNvbXBpbGF0aW9uIGR1ZSB0byBuYW1lbGVzcyBzdHJ1Y3RzIGFuZCB1bmlvbnMuCgoyMDAzLTA3LTAxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbGlicy93cHAvcHJlcHJvYy5jLCBsaWJzL3dwcC93cHAuYywgbGlicy93cHAvd3BwX3ByaXZhdGUuaDoKCUNyZWF0ZSBhIG5ldyBsaXN0IG9mIGRlZmluZWQgc3ltYm9scyB3aGVuIHBhcnNpbmcgYSBmaWxlLCB0byBhbGxvdwoJcmVjdXJzaXZlIHBhcnNpbmcgb2YgbXVsdGlwbGUgZmlsZXMuCgoJKiBkbGxzL2RtdXNpYy9kbXVzaWNfbWlzYy5jLCBkbGxzL2RtdXNpYy9kbXVzaWNfcHJpdmF0ZS5oLAoJICBpbmNsdWRlL2F4ZXh0ZW5kLmlkbCwgaW5jbHVkZS9kbXVzaWNjLmgsIGluY2x1ZGUvZHNvdW5kLmgsCgkgIGluY2x1ZGUvc3RybWlmLmgsIGluY2x1ZGUvdXVpZHMuaCwgbGlicy91dWlkL3V1aWQuYzoKCUFkZCBzdHJtaWYuaCB0byB0aGUgaGVhZGVycyBpbmNsdWRlZCBpbiBsaWJ1dWlkLgoJRml4ZWQgYSBmZXcgaGVhZGVyIGNvbmZsaWN0cy4KCgkqIGRsbHMvZGV2ZW51bS8uY3ZzaWdub3JlLCBkbGxzL2RldmVudW0vTWFrZWZpbGUuaW4sCgkgIGRsbHMvZGV2ZW51bS9jcmVhdGVkZXZlbnVtLmMsIGRsbHMvZGV2ZW51bS9kZXZlbnVtLnJjLAoJICBkbGxzL2RldmVudW0vZGV2ZW51bS5zcGVjLCBkbGxzL2RldmVudW0vZGV2ZW51bV9tYWluLmMsCgkgIGRsbHMvZGV2ZW51bS9kZXZlbnVtX3ByaXZhdGUuaCwgZGxscy9kZXZlbnVtL2ZhY3RvcnkuYywKCSAgZGxscy9kZXZlbnVtL21lZGlhY2F0ZW51bS5jLCBkbGxzL2RldmVudW0vcGFyc2VkaXNwbGF5bmFtZS5jOgoJUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCUltcGxlbWVudGVkIERldkVudW0gZGxsLgoKCSogZGxscy9xdWFydHovTWFrZWZpbGUuaW4sIGRsbHMvcXVhcnR6L2VudW1tb25pa2VyLmMsCgkgIGRsbHMvcXVhcnR6L2ZpbHRlcmdyYXBoLmMsIGRsbHMvcXVhcnR6L2ZpbHRlcm1hcHBlci5jLAoJICBkbGxzL3F1YXJ0ei9tYWluLmMsIGRsbHMvcXVhcnR6L3F1YXJ0el9wcml2YXRlLmg6CglSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJSW1wbGVtZW50ZWQgSUZpbHRlck1hcHBlcjIuCgoJKiBpbmNsdWRlL29haWRsLmgsIGluY2x1ZGUvb2JqaWRsLmgsIGluY2x1ZGUvc3RybWlmLmgsCgkgIGluY2x1ZGUvdW5rbnduLmgsIHRvb2xzL3dpZGwvaGVhZGVyLmM6CglBZGQgI2lmZGVmcyBhcm91bmQgZm9yd2FyZHMgYW5kIGludGVyZmFjZXMgbGlrZSBNSURMIGRvZXMuCgoJKiBkbGxzL250ZGxsL2xvYWRlci5jLCBpbmNsdWRlL21vZHVsZS5oLCBpbmNsdWRlL3dpbnRlcm5sLmgsCgkgIGxvYWRlci9wZV9pbWFnZS5jLCByZWxheTMyL3JlbGF5Mzg2LmMsIHNjaGVkdWxlci9wcm9jZXNzLmM6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCS0gcmVtb3ZlZCBuZXh0ICYgcHJldiBmaWVsZHMgZnJvbSBXSU5FX01PRFJFRiBhbmQgaW1wbGVtZW50IGluc3RlYWQKCSAgdGhlIHRocmVlIGxpbmtlZCBsaXN0cyBpbiBMRFJfTU9EVUxFCgktIGFkZGVkIFBFQl9MRFJfREFUQSBzdHJ1Y3R1cmUgdG8gUEVCCgktIHJlbW92ZWQgYSBjb3VwbGUgb2Ygbm8gbG9uZ2VyIG5lZWRlZCBnbG9iYWwgJiBzdGF0aWMgdmFyaWFibGVzCgoJKiBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmMsIGRsbHMvd2luZWRvcy9oaW1lbS5jLCBkbGxzL3dpbmVkb3MvaW50MzEuYywKCSAgZGxscy93aW5lZG9zL2ludGVycnVwdHMuYywgbWVtb3J5L2luc3RyLmM6CglKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglTdGFydCBwcm9jZXNzaW5nIGFzeW5jaHJvbm91cyBET1MgZXZlbnRzIGluIERQTUkgbW9kZS4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL21ha2VfZGxsczoKCUFkZGVkIGQzZDkgZGxsLgoKCSogZGxscy9kM2Q5Ly5jdnNpZ25vcmUsIGRsbHMvZDNkOS9NYWtlZmlsZS5pbiwgZGxscy9kM2Q5L2Jhc2V0ZXh0dXJlLmMsCgkgIGRsbHMvZDNkOS9jdWJldGV4dHVyZS5jLCBkbGxzL2QzZDkvZDNkOS5zcGVjLCBkbGxzL2QzZDkvZDNkOV9tYWluLmMsCgkgIGRsbHMvZDNkOS9kM2Q5X3ByaXZhdGUuaCwgZGxscy9kM2Q5L2RldmljZS5jLCBkbGxzL2QzZDkvZGlyZWN0eC5jLAoJICBkbGxzL2QzZDkvaW5kZXhidWZmZXIuYywgZGxscy9kM2Q5L3BpeGVsc2hhZGVyLmMsIGRsbHMvZDNkOS9xdWVyeS5jLAoJICBkbGxzL2QzZDkvcmVzb3VyY2UuYywgZGxscy9kM2Q5L3N0YXRlYmxvY2suYywgZGxscy9kM2Q5L3N1cmZhY2UuYywKCSAgZGxscy9kM2Q5L3N3YXBjaGFpbi5jLCBkbGxzL2QzZDkvdGV4dHVyZS5jLCBkbGxzL2QzZDkvdmVyc2lvbi5yYywKCSAgZGxscy9kM2Q5L3ZlcnRleGJ1ZmZlci5jLCBkbGxzL2QzZDkvdmVydGV4ZGVjbGFyYXRpb24uYywKCSAgZGxscy9kM2Q5L3ZlcnRleHNoYWRlci5jLCBkbGxzL2QzZDkvdm9sdW1lLmMsCgkgIGRsbHMvZDNkOS92b2x1bWV0ZXh0dXJlLmMsIGRsbHMvZDNkOS92c2hhZGVyZGVjbGFyYXRpb24uYywKCSAgaW5jbHVkZS9kM2Q4LmgsIGluY2x1ZGUvZDNkOS5oLCBpbmNsdWRlL2QzZDl0eXBlcy5oOgoJUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CgktIHNvbWUgY2xlYW51cHMgYW5kIGZpeGVzIG9uIGQzZDggYW5kIGQzZDkgaGVhZGVycwoJLSBhIGxvdCBvZiBzdHVicyBmb3IgZDNkOS5kbGwKCgkqIGxpYnMvdXVpZC9NYWtlZmlsZS5pbiwgbGlicy91dWlkL2R4OWd1aWQuYzoKCVJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJQWRkZWQgZDNkOSBndWlkcy4KCjIwMDMtMDYtMzAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9sb2NhbGUuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCB0ZXN0cyBmb3IgTk9STV9JR05PUkVOT05TUEFDRSBhbmQgTk9STV9JR05PUkVTWU1CT0xTIGluIHRoZQoJTENNYXBTdHJpbmcoTENNQVBfU09SVEtFWSkgYnJhbmNoLgoKCSogZGxscy9udGRsbC9maWxlLmMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy9udGRsbC9udGRsbF9taXNjLmgsCgkgIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYywgZGxscy9udGRsbC9zaWduYWxfcG93ZXJwYy5jLAoJICBkbGxzL250ZGxsL3NpZ25hbF9zcGFyYy5jLCBkbGxzL250ZGxsL3N5bmMuYywgaW5jbHVkZS93aW50ZXJubC5oLAoJICBzY2hlZHVsZXIvc3luY2hyby5jOgoJSW1wbGVtZW50ZWQgTnREZWxheUV4ZWN1dGlvbiBhbmQgbWFrZSBTbGVlcCBjYWxsIGl0LgoJVGhlIGhhbmRsZSBjb3VudCBtdXN0IG5vdCBiZSAwIGluIE50V2FpdEZvck11bHRpcGxlT2JqZWN0cyAoc3BvdHRlZCBieQoJVHJveSBSb2xsbykuCgoJKiBkbGxzL2F2aWZpbDMyL2ZhY3RvcnkuYywgZGxscy9jb21jdGwzMi9jb21tY3RybC5jLAoJICBkbGxzL2NydGRsbC9jcnRkbGxfbWFpbi5jLCBkbGxzL2QzZDgvZDNkOF9tYWluLmMsIGRsbHMvZGRyYXcvbWFpbi5jLAoJICBkbGxzL2RpbnB1dC9kaW5wdXRfbWFpbi5jLCBkbGxzL2RtdXNpYy9kbXVzaWNfbWFpbi5jLAoJICBkbGxzL2RwbGF5eC9kcGxheXhfbWFpbi5jLCBkbGxzL2RwbmhwYXN0L21haW4uYywgZGxscy9nZGkvZ2RpX21haW4uYywKCSAgZGxscy9pbWFnZWhscC9pbWFnZWhscF9tYWluLmMsIGRsbHMvaW1tMzIvaW1tLmMsCgkgIGRsbHMvbXNhY20vbXNhY20zMl9tYWluLmMsIGRsbHMvbXNpc3lzL01ha2VmaWxlLmluLAoJICBkbGxzL21zaXN5cy9tc2lzeXMuYywgZGxscy9tc3ZpZGVvL21zcmxlMzIvbXNybGUzMi5jLAoJICBkbGxzL25ldGFwaTMyL25ldGFwaTMyLmMsIGRsbHMvb2RiYzMyL01ha2VmaWxlLmluLAoJICBkbGxzL29kYmMzMi9wcm94eW9kYmMuYywgZGxscy9vbGUzMi9vbGUzMl9tYWluLmMsCgkgIGRsbHMvb3BlbmdsMzIvd2dsLmMsIGRsbHMvcXVhcnR6L21haW4uYywgZGxscy9yaWNoZWRpdC9yaWNoZWRpdC5jLAoJICBkbGxzL3JwY3J0NC9ycGNydDRfbWFpbi5jLCBkbGxzL3NlcmlhbHVpL2NvbmZkbGcuYywKCSAgZGxscy9zaGx3YXBpL3NobHdhcGlfbWFpbi5jLCBkbGxzL3NubXBhcGkvTWFrZWZpbGUuaW4sCgkgIGRsbHMvc25tcGFwaS9tYWluLmMsIGRsbHMvdHR5ZHJ2L3R0eWRydl9tYWluLmMsCgkgIGRsbHMvdHdhaW4vdHdhaW4zMl9tYWluLmMsIGRsbHMvdXJsbW9uL3VybG1vbl9tYWluLmMsCgkgIGRsbHMvd2luYXNwaS93aW5hc3BpMzIuYywgZGxscy93aW5lZG9zL2Rvc3ZtLmMsIGRsbHMvd2luZXBzL2luaXQuYywKCSAgZGxscy93aW5tbS9tY2lhdmkvbWNpYXZpLmMsIGRsbHMvd2lubW0vd2lubW0uYywKCSAgZGxscy93aW5zb2NrL3NvY2tldC5jLCBkbGxzL3dpbnNwb29sL3dzcG9vbC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUZvciBhbGwgRExMcyB3aXRoIGRlZmluZWQgRGxsTWFpbiBhbmQgd2hpY2ggZG8gbm90IHJlcXVpcmUKCURMTF9USFJFQURfQVRUQUNIL0RMTF9USFJFQURfREVUQUNIIG5vdGlmaWNhdGlvbnMsIGNhbGwKCURpc2FibGVUaHJlYWRMaWJyYXJ5Q2FsbHMoKSBpbiBvcmRlciB0byBzbGlnaHRseSBpbXByb3ZlIHBlcmZvcm1hbmNlCglvbiB0aHJlYWQgY3JlYXRpb24vZXhpdGluZy4KCgkqIGRsbHMvZG11c2ljL2hlbHBlci5jOiBGaXhlZCB3YXJuaW5nLgoKCSogZGxscy9xdWFydHovZmlsdGVyZ3JhcGguYywgaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9heGNvcmUuaWRsLAoJICBpbmNsdWRlL2F4ZXh0ZW5kLmlkbCwgaW5jbHVkZS9kZXZlbnVtLmlkbCwgaW5jbHVkZS9keW5ncmFwaC5pZGwsCgkgIGluY2x1ZGUvc3RybWlmLmgsIGluY2x1ZGUvc3RybWlmLmlkbDoKCVJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CgktIEFkZGVkIERTaG93IGhlYWRlcnMuCgktIEFkZGVkIG5lZWRlZCBjb25zdCdzIGluIEZpbHRlckdyYXBoIGltcGxlbWVudGF0aW9uLgoKCSogZGxscy9hdmlmaWwzMi9hdmlmaWxlX1B0LnJjLCBkbGxzL2F2aWZpbDMyL3JzcmMucmMsCgkgIGRsbHMvY29tY3RsMzIvY29tY3RsX1B0LnJjLCBkbGxzL2NvbWN0bDMyL3JzcmMucmMsCgkgIGRsbHMvY29tbWRsZy9jZGxnX1B0LnJjLCBkbGxzL21zdmlkZW8vbXNybGUzMi9tc3JsZV9QdC5yYywKCSAgZGxscy9tc3ZpZGVvL21zcmxlMzIvcnNyYy5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfUHQucmMsCgkgIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX1B0LnJjLCBkbGxzL3dpbmVwcy9yc3JjLnJjLAoJICBkbGxzL3dpbmVwcy93cHNfUHQucmMsIGRsbHMvd2lubW0vd2lubW1fUHQucmMsCgkgIHByb2dyYW1zL3dpbmVmaWxlL1B0LnJjOgoJTWFyY2VsbyBEdWFydGUgPHdpbmUtZGV2ZWxAYm9sLmNvbS5icj4KCS0gTG9jYWxpemF0aW9uIHRvIFBvcnR1Z3Vlc2Ugb2YgQnJhemlsCgktIFJldmlzaW9uIGFuZCBhZGRpdGlvbiBvZiBtaXNzaW5nIHJlc291cmNlcwoJLSBNaW5vciB0eXBvIGZpeCBhbmQgY29kZXBhZ2UgZml4IGluIHByb2dyYW1zL3dpbmVmaWxlIHJlc291cmNlLgoKCSogZG9jdW1lbnRhdGlvbi9SRUFETUUucHRfYnI6IE1hcmNlbG8gRHVhcnRlIDx3aW5lLWRldmVsQGJvbC5jb20uYnI+CglMb2NhbGl6YXRpb24gdG8gUG9ydHVndWVzZSBvZiBCcmF6aWwgb2YgUkVBRE1FIGZpbGUuCgoJKiBwcm9ncmFtcy93aW5lZGJnL3dpbmVkYmcuYzogQ2F0YWxpbiBQYXR1bGVhIDxjYXRhbGluc0B2di5jYXJsZXRvbi5jYT4KCUZpeGVkIFVuaWNvZGUgc3RyaW5nIG91dHB1dC4KCgkqIGRsbHMvZG11c2ljL2RtdXNpY19sb2FkZXIuYywgZGxscy9kbXVzaWMvZG11c2ljX3BlcmZvcm1hbmNlLmMsCgkgIGRsbHMvZG11c2ljL2RtdXNpY19wcml2YXRlLmgsIGRsbHMvZG11c2ljL2hlbHBlci5jOgoJUm9rIE1hbmRlbGpjIDxyb2subWFuZGVsamNAZ2ltYi5vcmc+CglGaWxlIGxvYWRpbmcgaW1wcm92ZW1lbnRzLgoKCSogaW5jbHVkZS93aW5udC5oLCBtaXNjL2NwdS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIFBGX1BBRV9FTkFCTEVEIGFuZCBQRl9YTU1JNjRfSU5TVFJVQ1RJT05TIGRlZmluZXMuCglEZXRlY3QgdGhlbSBhbmQgM0ROT1cgYW5kIFhNTUlfSU5TVFJVQ1RJT05TIGZvciBMaW51eC4KCgkqIGRsbHMvd2lubW0vd2luZWF1ZGlvaW8vTWFrZWZpbGUuaW46CglSb2JlcnQgTHVubm9uIDxib2JAeWFycmFiZWUubmV0LmF1PgoJQWRkZWQgbGlidXVpZCB0byB3aW5lYXVkaW9pbyBtYWtlZmlsZS4KCgkqIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvZHBhZGRyLmgsIGluY2x1ZGUvZHBsYXk4Lmg6CglSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCUFkZGVkIERpcmVjdFBsYXk4IGhlYWRlcnMuCgoJKiBkbGxzL2tlcm5lbC9maWxlLmMsIGRsbHMva2VybmVsL3N5c3RlbS5jLCBkbGxzL3VzZXIvY29tbTE2LmMsCgkgIGRsbHMvd2luZWRvcy92Z2EuYzoKCVJlcGxhY2UgY2FsbHMgdG8gV2FpdEZvck11bHRpcGxlT2JqZWN0cyB3aXRoIGEgMCBjb3VudCBieSBjYWxscyB0bwoJU2xlZXBFeC4KCgkqIGRsbHMvY29tbWRsZy9wcmludGRsZy5jOiBHZXQvU2V0UHJvcFcgbmVlZHMgYSBVbmljb2RlIHN0cmluZy4KCgkqIGRsbHMvbXN2aWRlby9tc3JsZTMyL21zcmxlMzIuYzoKCU1pY2hhZWwgR/xubmV3aWcgPE1pY2hhZWxHdWVubmV3aWdAZ214LmRlPgoJLSBGaXhlZCBpbnRlcmZyYW1lIGNvbXByZXNzaW9uIC0gbm93IHdvcmtzIGZvciBSTEU0IGFuZCBSTEU4LgoJLSBGaXhlZCBhbGlnbm1lbnQgb2YgUkxFNCBpbiBhYnNvbHV0ZSBtb2RlLgoJLSBJbXByb3ZlZCBjb21wcmVzc2lvbiAoc21hbGxlciBvdXRwdXQpLgoKCSogREVWRUxPUEVSUy1ISU5UUzogVG9tIFdpY2tsaW5lIDx0d2lja2xpbmVAc2t5YmVzdC5jb20+CgktIGFkZGVkIDIgZGxscwoJLSBhZGRlZCBsaW5rIHRvIGFwaWxpc3QKCS0gcmVtb3ZlZCBzdWdnZXN0aW9uIHRvIGxvb2sgYXQgQnl0ZSBmcm9tIDIwIHllYXJzIGFnbwoKCSogbWlzYy9jcHUuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCBDUFUgZGV0ZWN0aW9uIGZvciBGcmVlQlNEIGFuZCBQNC4KCgkqIGRsbHMvbXN2aWRlby9tc3ZmdzMyLnNwZWMsIGRsbHMvbXN2aWRlby9tc3ZpZGVvX21haW4uYywKCSAgZGxscy9tc3ZpZGVvL21zdmlkZW9fcHJpdmF0ZS5oOgoJQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJQWRkZWQgc3VwcG9ydCBmb3IgdmlkZW8gY29tcHJlc3Nvci9kZWNvbXByZXNzb3IgZHluYW1pYyBpbnN0YWxsYXRpb24uCgoJKiBkbGxzL2F2aWZpbDMyL2FwaS5jLCBkbGxzL2F2aWZpbDMyL2F2aWZpbDMyLnNwZWM6CglDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglBZGRlZCBzb21lIHN0dWJzLgoKCSogZGxscy93aW5lZG9zL2Rvc2V4ZS5oLCBkbGxzL3dpbmVkb3MvaW50ZXJydXB0cy5jLAoJICBkbGxzL3dpbmVkb3MvbW9kdWxlLmMsIGRsbHMvd2luZWRvcy90aW1lci5jOgoJSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJTWFrZSB0aW1lciBJUlEgaGFuZGxlciByZWd1bGFyIGJ1aWx0aW4gaW50ZXJydXB0IGhhbmRsZXIgaW5zdGVhZCBvZgoJdXNpbmcgYW4gYXNzZW1ibGVyIHN0dWIuCgoyMDAzLTA2LTI3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9pbWFnZWhscC9hY2Nlc3MuYywgaW5jbHVkZS9pbWFnZWhscC5oOgoJUmVtb3ZlZCBXaW5lLXNwZWNpZmljIGRlZmluaXRpb24gZnJvbSBleHBvcnRlZCBoZWFkZXIgKHNwb3R0ZWQgYnkKCVN0ZXZlbiBFZHdhcmRzKS4KCgkqIGRsbHMvZHNvdW5kL2J1ZmZlci5jLCBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jLAoJICBkbGxzL2Rzb3VuZC9kc291bmRfcHJpdmF0ZS5oLCBkbGxzL2Rzb3VuZC9taXhlci5jLAoJICBkbGxzL2Rzb3VuZC9wcmltYXJ5LmMsIGRsbHMvZHNvdW5kL3NvdW5kM2QuYywKCSAgZGxscy9kc291bmQvdGVzdHMvZHNvdW5kLmM6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJM0QgYnVmZmVyIGFuZCBsaXN0ZW5lciByZWZlcmVuY2UgY291bnRzIHNob3VsZCBiZSBmaXhlZC4KCTNEIHNvdW5kIG5vdyBwbGF5cyBpbiAzRC4KCUNPTSBpbnRlcmZhY2VzIHNob3VsZCBiZSBjb3JyZWN0IGZvciBidWZmZXJzIGFuZCAzRCBzdHVmZi4gVGhlIENPTQoJaW50ZXJmYWNlIGlzIGJyb2tlbiBvbiBub3RpZmljYXRpb25zIGJ1dCBJIHdpbGwgZml4IHRoYXQgbmV4dC4KCUZpeGVkIHRoZSBidWcgd2hlbiBjbG9zaW5nIGFuZCBvcGVuaW5nIHRoZSBzYW1lIG9yIGFub3RoZXIgc291bmQKCWRldmljZSBxdWlja2x5LgoJRml4ZWQgc29tZSBsb2NraW5nIGJ1dCB0aGVyZSBpcyBhIGxvdCBvZiB3b3JrIGxlZnQgeWV0LgoKCSogZGxscy9jb21tZGxnL3ByaW50ZGxnLmM6IE1pa2UgSGVhcm4gPG0uaGVhcm5Ac2lnbmFsLnFpbmV0aXEuY29tPgoJU3RvcmUgUHJpbnRTdHJ1Y3R1cmVzIGluIGEgd2luZG93IHByb3BlcnR5IGluc3RlYWQgb2YgZXh0cmEgd2luZG93CglieXRlcy4KCgkqIGRsbHMvZDNkOC9kM2Q4X21haW4uYywgZGxscy9kM2Q4L2QzZDhfcHJpdmF0ZS5oLAoJICBkbGxzL2QzZDgvZDNkY29yZV9nbC5oLCBkbGxzL2QzZDgvZHJhd3ByaW0uYzoKCVJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJLSBjdXJyZW50bHkgYWx3YXlzIHVzZSBzbG9hdyBwYXRoIGFzIGZhc3QgcGF0aCBoYXZlIHNvbWUgcHJvYmxlbXMKCS0gZml4IEFQSUVOVFJZIG1pc21hdGNoZWQgdmFsdWUgdXNlZCBieSBnbCBmdW5jIHBvaW50ZXJzIChpbgoJICBkM2Rjb3JlX2dsLmgpCgoJKiBkbGxzL2dkaS9NYWtlZmlsZS5pbiwgZGxscy9nZGkvYmlkaS5jLCBpbmNsdWRlL2dkaS5oLCBvYmplY3RzL2ZvbnQuYywKCSAgb2JqZWN0cy90ZXh0LmM6CglTaGFjaGFyIFNoZW1lc2ggPHdpbmUtcGF0Y2hlc0BzaGVtZXNoLmJpej4KCUltcGxlbWVudGF0aW9uIG9mIHRoZSByZW9yZGVyaW5nIGFsZ29yaXRobSBieSBjYWxsaW5nIElDVSdzIHJlb3JkZXJpbmcKCWZ1bmN0aW9ucy4KCgkqIGRsbHMvZG11c2ljL2RtdXNpYy5jLCBkbGxzL2RtdXNpYy9kbXVzaWNfbG9hZGVyLmMsCgkgIGRsbHMvZG11c2ljL2RtdXNpY19tYWluLmMsIGRsbHMvZG11c2ljL2RtdXNpY19taXNjLmMsCgkgIGRsbHMvZG11c2ljL2RtdXNpY19wZXJmb3JtYW5jZS5jLCBkbGxzL2RtdXNpYy9kbXVzaWNfcGx1Z2lucy5jLAoJICBkbGxzL2RtdXNpYy9kbXVzaWNfcHJpdmF0ZS5oLCBkbGxzL2RtdXNpYy9kbXVzaWNfc2VnbWVudC5jLAoJICBkbGxzL2RtdXNpYy9kbXVzaWNfc3R5bGUuYywgZGxscy9kbXVzaWMvZG11c2ljX3N5bnRoLmMsCgkgIGRsbHMvZG11c2ljL2hlbHBlci5jOgoJUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CgktIGh1Z2UgQ09NIGNsZWFudXA6IG9ubHkga2VlcCBkbXVzaWM4IHZlcnNpb24gb2YgaW50ZXJmYWNlcyB3aGVuIHRoZXkKCSAgaW5oZXJpdCBmcm9tIGRtdXNpYzEgYW5kIGRtdXNpYzIgdmVyc2lvbi4gQW5kIGFsd2F5cyB1c2UgZG11c2ljOAoJICB2ZXJzaW9ucyB3aGVuIGF2YWlsYWJsZS4KCS0gcmVhbGx5IHN0dXBpZCBpbXBsZW1lbnRhdGlvbiBvZiBJRGlyZWN0TXVzaWNMb2FkZXI4OjpHZXRPYmplY3Qgd2hlbgoJICBJRGlyZWN0TXVzaWNTY3JpcHQgd2FudGVkCgktIHJlYWxseSBmaXggdGhlIHJlZmNvdW50IHByb2JsZW0gZm91bmQgYnkgUm9rCgoJKiBkbGxzL3dpbmVkb3MvZG9zdm0uYzogR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglFbmFibGUgYWxsIG9mIERsbE1haW4oKSwgZXZlbiBpZiBpZiBub3QgTVpfU1VQUE9SVEVELgoKCSogZmlsZXMvcHJvZmlsZS5jOiBTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCUFkZGVkIGxpbmUgd3JhcHBpbmcgZm9yIGEgRklYTUUuCgoJKiBkbGxzL3dpbmVkb3MvaW50MzEuYzogU3lsdmFpbiBQZXRyZW9sbGUgPHNwZXRyZW9sbGVAeWFob28uZnI+CglEaXNwbGF5IHRoZSBpbnRlcnJ1cHQgbnVtYmVyIGluIGhleGFkZWNpbWFsLgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliLmM6IFJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CgktIFNpbGVuY2UgdGhlIEZJWE1FIGFib3V0IGNvbnN0cnVjdG9yL2Rlc3RydWN0b3Igc2luY2UgaXQgaXMgd3JvbmcgZm9yCgkgIDk5LjklIG9mIGNhc2VzIChpZiBNUyB3aWxsIGV2ZXIgdXNlIHRoZSBmZWF0dXJlIGF0IGFsbCkKCS0gQWRkZWQgc3R1YnMgZm9yIElUeXBlQ29tcCBpbnRlcmZhY2UgaW4gSVR5cGVMaWIKCS0gSW1wbGVtZW50YXRpb24gb2YgSVR5cGVDb21wIGluIElUeXBlSW5mbwoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMva2VybmVsL01ha2VmaWxlLmluLAoJICBkbGxzL2tlcm5lbC9sb2NhbGUuYywgZGxscy9rZXJuZWwvdGVzdHMvbG9jYWxlLmMsCgkgIGRsbHMvbnRkbGwvZGVidWd0b29scy5jLCBpbmNsdWRlL3dpbmUvdW5pY29kZS5oLCBpbmNsdWRlL3dpbm5scy5oLAoJICBsaWJzL3VuaWNvZGUvTWFrZWZpbGUuaW4sIGxpYnMvdW5pY29kZS9tYnRvd2MuYywKCSAgbGlicy91bmljb2RlL3NvcnRrZXkuYywgbGlicy91bmljb2RlL3V0ZjguYywgbGlicy91bmljb2RlL3djdG9tYi5jLAoJICBsaWJzL3VuaWNvZGUvd2luZV91bmljb2RlLmRlZjoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgTENNYXBTdHJpbmcgdXNpbmcgdW5pY29kZSBjb2xsYXRpb24gdGFibGVzLgoJTW92ZSBDb21wYXJlU3RyaW5nIGFuZCBMQ01hcFN0cmluZyB0byBkbGxzL2tlcm5lbC9sb2NhbGUuYy4KCgkqIGRsbHMva2VybmVsL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC9wcm9jZXNzLmMsCgkgIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sIGRsbHMvbnRkbGwvc3lzZGVwcy5jLCBpbmNsdWRlL3RocmVhZC5oLAoJICBzY2hlZHVsZXIvZmliZXIuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2NoZWR1bGVyL3N5c2RlcHMuYywKCSAgc2NoZWR1bGVyL3RocmVhZC5jOgoJTW92ZWQgc29tZSBvZiB0aGUgcHJvY2VzcyBmdW5jdGlvbnMgdG8gZGxscy9rZXJuZWwuCglSZW1vdmVkIGtlcm5lbCBkZXBlbmRlbmNpZXMgZnJvbSBzeXNkZXBzLmMgYW5kIG1vdmVkIGl0IHRvIGRsbHMvbnRkbGwuCgoJKiBkbGxzL250ZGxsL2xvYWRlci5jOgoJTWFrZSBzdXJlIHRvIHJldHVybiBhbiBlcnJvciBpZiBsb2FkX2RsbCBmYWlscyBiZWNhdXNlIHRoZSBsb2FkIG9yZGVyCglpcyBlbXB0eS4KCgkqIGRsbHMvbnRkbGwvbG9hZGVyLmM6IFRyb3kgUm9sbG8gPHdpbmVAdHJveS5yb2xsby5uYW1lPgoJUmVtb3ZlZCBGSVhNRSB3aGVuIGxvYWRpbmcgc2Vjb25kIGV4ZSBmaWxlLgoKCSogbGlicy91bmljb2RlL2NvbGxhdGlvbi5jLCBsaWJzL3VuaWNvZGUvY3BtYXAucGw6CglBZGRlZCBnZW5lcmF0aW9uIG9mIHRhYmxlIG9mIGNvbGxhdGlvbiBrZXlzIChiYXNlZCBvbiBhIHBhdGNoIGJ5CglEbWl0cnkgVGltb3Noa292KS4KCgkqIGRsbHMvd2luaW5ldC9uZXRjb25uZWN0aW9uLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkIGluY2x1c2lvbiBvZiA8c3lzL3RpbWUuaD4gbmVlZGVkIGZvciBzdHJ1Y3QgdGltZXZhbCBkZWNsYXJhdGlvbi4KCVByb3RlY3Qgc29tZSBvcHRpb25hbCBoZWFkZXJzIGZyb20gaW5jbHVzaW9uLgoKCSogZGxscy9vbGUzMi9vbGUyLmMsIGRsbHMvb2xlMzIvb2xlMzIuc3BlYzoKCVRyb3kgUm9sbG8gPHdpbmVAdHJveS5yb2xsby5uYW1lPgoJSW1wbGVtZW50ZWQgT2xlRHJhdy4KCjIwMDMtMDYtMjYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBsaWJzL3VuaWNvZGUvY18wMzcuYywgbGlicy91bmljb2RlL2NfMDQyLmMsIGxpYnMvdW5pY29kZS9jXzEwMDAwLmMsCgkgIGxpYnMvdW5pY29kZS9jXzEwMDA2LmMsIGxpYnMvdW5pY29kZS9jXzEwMDA3LmMsCgkgIGxpYnMvdW5pY29kZS9jXzEwMDI5LmMsIGxpYnMvdW5pY29kZS9jXzEwMDYuYywKCSAgbGlicy91bmljb2RlL2NfMTAwNzkuYywgbGlicy91bmljb2RlL2NfMTAwODEuYywKCSAgbGlicy91bmljb2RlL2NfMTAyNi5jLCBsaWJzL3VuaWNvZGUvY18xMjUwLmMsIGxpYnMvdW5pY29kZS9jXzEyNTEuYywKCSAgbGlicy91bmljb2RlL2NfMTI1Mi5jLCBsaWJzL3VuaWNvZGUvY18xMjUzLmMsIGxpYnMvdW5pY29kZS9jXzEyNTQuYywKCSAgbGlicy91bmljb2RlL2NfMTI1NS5jLCBsaWJzL3VuaWNvZGUvY18xMjU2LmMsIGxpYnMvdW5pY29kZS9jXzEyNTcuYywKCSAgbGlicy91bmljb2RlL2NfMTI1OC5jLCBsaWJzL3VuaWNvZGUvY18yMDg2Ni5jLAoJICBsaWJzL3VuaWNvZGUvY18yMDkzMi5jLCBsaWJzL3VuaWNvZGUvY18yODU5MS5jLAoJICBsaWJzL3VuaWNvZGUvY18yODU5Mi5jLCBsaWJzL3VuaWNvZGUvY18yODU5My5jLAoJICBsaWJzL3VuaWNvZGUvY18yODU5NC5jLCBsaWJzL3VuaWNvZGUvY18yODU5NS5jLAoJICBsaWJzL3VuaWNvZGUvY18yODU5Ni5jLCBsaWJzL3VuaWNvZGUvY18yODU5Ny5jLAoJICBsaWJzL3VuaWNvZGUvY18yODU5OC5jLCBsaWJzL3VuaWNvZGUvY18yODU5OS5jLAoJICBsaWJzL3VuaWNvZGUvY18yODYwMC5jLCBsaWJzL3VuaWNvZGUvY18yODYwMy5jLAoJICBsaWJzL3VuaWNvZGUvY18yODYwNC5jLCBsaWJzL3VuaWNvZGUvY18yODYwNS5jLAoJICBsaWJzL3VuaWNvZGUvY18yODYwNi5jLCBsaWJzL3VuaWNvZGUvY180MjQuYywgbGlicy91bmljb2RlL2NfNDM3LmMsCgkgIGxpYnMvdW5pY29kZS9jXzUwMC5jLCBsaWJzL3VuaWNvZGUvY183MzcuYywgbGlicy91bmljb2RlL2NfNzc1LmMsCgkgIGxpYnMvdW5pY29kZS9jXzg1MC5jLCBsaWJzL3VuaWNvZGUvY184NTIuYywgbGlicy91bmljb2RlL2NfODU1LmMsCgkgIGxpYnMvdW5pY29kZS9jXzg1Ni5jLCBsaWJzL3VuaWNvZGUvY184NTcuYywgbGlicy91bmljb2RlL2NfODYwLmMsCgkgIGxpYnMvdW5pY29kZS9jXzg2MS5jLCBsaWJzL3VuaWNvZGUvY184NjIuYywgbGlicy91bmljb2RlL2NfODYzLmMsCgkgIGxpYnMvdW5pY29kZS9jXzg2NC5jLCBsaWJzL3VuaWNvZGUvY184NjUuYywgbGlicy91bmljb2RlL2NfODY2LmMsCgkgIGxpYnMvdW5pY29kZS9jXzg2OS5jLCBsaWJzL3VuaWNvZGUvY184NzQuYywgbGlicy91bmljb2RlL2NfODc1LmMsCgkgIGxpYnMvdW5pY29kZS9jXzg3OC5jLCBsaWJzL3VuaWNvZGUvY185MzIuYywgbGlicy91bmljb2RlL2NfOTM2LmMsCgkgIGxpYnMvdW5pY29kZS9jXzk0OS5jLCBsaWJzL3VuaWNvZGUvY185NTAuYywgbGlicy91bmljb2RlL2Nhc2VtYXAuYywKCSAgbGlicy91bmljb2RlL3djdHlwZS5jOgoJVXBkYXRlZCB0byB0aGUgbGF0ZXN0IFVuaWNvZGUgc3RhbmRhcmQuCgoJKiBkbGxzL2tlcm5lbC9jb21tLmMsIGRsbHMva2VybmVsL2ZpbGUuYywgZGxscy9udGRsbC9maWxlLmMsCgkgIGRsbHMvbnRkbGwvc3luYy5jLCBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGZpbGVzL2ZpbGUuYywgZmlsZXMvc21iLmMsCgkgIGZpbGVzL3NtYi5oLCBpbmNsdWRlL2FzeW5jLmgsIGluY2x1ZGUvd2ludGVybmwuaDoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJLSBtYWRlIGFzeW5jLmggcmVhZHkgZm9yIHVzZSBpbiBudGRsbDogcmVwbGFjZWQgYWxsIGNhbGxzIHRvIGtlcm5lbDMyCgkgIGZ1bmN0aW9ucyB3aXRoIG50ZGxsIGVxdWl2YWxlbnQKCS0gcmVwbGFjZWQgc3RhdHVzIHNldHRlci9nZXR0ZXIgZm9yIHdpbmUgYXN5bmMgc3RydWN0dXJlcyB3aXRoIGRpcmVjdAoJICBhY2Nlc3MgdG8gYSAobm93IGluY2x1ZGVkKSBJT19TVEFUVVNfQkxPQ0sgc3RydWN0dXJlCgktIHNpbmNlIHdlIG5vdyBoYXZlIGEgSU9fU1RBVFVTX0JMT0NLIGluIGFzeW5jX3ByaXZhdGUsIHdlIG5vIGxvbmdlcgoJICBuZWVkIGluIG1vc3Qgb2YgdGhlIHVzZXIgKGRlcml2YXRlZCkgc3RydWN0dXJlcyBhIGZpZWxkIGZvcgoJICBMUE9WRVJMQVBQRUQgKGl0J3Mgc3RvcmVkIGFzIHRoZSBJT19TVEFUVVNfQkxPQ0spCgktIHJld3JvdGUgdGhlIGFzeW5jLmggdXNlcnMgYWNjb3JkaW5nbHkKCS0gaW1wbGVtZW50ZWQgbnRkbGwuTnR7UmVhZHxXcml0ZX1GaWxlIGFuZCBsZXQKCSAga2VybmVsMzIue1JlYWR8V3JpdGV9RmlsZShFeCk/IHVzZSB0aG9zZSBuZXcgbnRkbGwgZnVuY3Rpb25zCgktIHJld3JvdGUgc21iIHJlYWQvd3JpdGUgaW50ZXJmYWNlcyB0byBiZSBtb3JlIG50ZGxsIHN0eWxpc2ggKG5vCgkgIG92ZXJsYXBwZWQgeWV0KQoKCSogaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9kYmdoZWxwLmg6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCUFkZGVkIGRiZ2hlbHAuaCBoZWFkZXIuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9wcm9jZXNzLmM6IEVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJQWRkZWQgYSBzbWFsbCB0ZXN0IGZvciBwcm9jZXNzIGV4aXQgY29kZSByZXRyaWV2YWwuCgoJKiBkbGxzL2NvbW1kbGcvY2RsZzMyLmM6IFN0ZXZlbiBFZHdhcmRzIDxTdGV2ZW5fRWQ0MTUzQHlhaG9vLmNvbT4KCVJlbW92ZSB1bm5lZWRlZCBjYWxscyB0byBMb2FkTGlicmFyeTE2IGFuZCBGcmVlTGlicmFyeTE2LgoKMjAwMy0wNi0yNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1laXNzbmVyQHN1c2UuZGU+CglWYXJBZGQ6IEFkZGVkIFZUX1I4LCBWVF9FTVBUWSwgVlRfTlVMTCBoYW5kbGluZy4KCgkqIGRsbHMveDExZHJ2L3dpbnBvcy5jOgoJTWFwIHRvcC1sZXZlbCB3aW5kb3dzIHdoZW4gV1NfVklTSUJMRSBpcyBzZXQsIGJ1dCBkb24ndCB1bm1hcCB0aGVtCgl3aGVuIGl0J3MgY2xlYXJlZC4KCgkqIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvbWFrZV9kbGxzOgoJQW5vdGhlciBtYWtlIGluc3RhbGwgZGVwZW5kZW5jeSBmaXguCgoJKiBkbGxzL250ZGxsL2Nkcm9tLmMsIGRsbHMvbnRkbGwvZmlsZS5jLCBkbGxzL250ZGxsL250ZGxsX21pc2MuaCwKCSAgaW5jbHVkZS9maWxlLmgsIHdpbjMyL2RldmljZS5jOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CgktIHN0YXJ0ZWQgaW1wbGVtZW50aW5nIG50ZGxsLk50RGV2aWNlSW9Db250cm9sRmlsZSBhbmQgbWFkZQoJICBrZXJuZWwzMi5EZXZpY2VJb0NvbnRyb2wgY2FsbCBpdAoJLSBjaGFuZ2VkIGNkcm9tIGlvY3RsIGZ1bmN0aW9uJ3MgcHJvdG90eXBlIHRvIHN0aWNrIHRvCgkgIG50ZGxsLk50RGV2aWNlSW9Db250cm9sRmlsZSBzaWduYXR1cmUKCgkqIGluY2x1ZGUvZDNkOS5oLCBpbmNsdWRlL2QzZDl0eXBlcy5oOgoJUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CglkM2Q5IGhlYWRlcnMgYXJlIGJldHRlciB3aGVuIHRoZXkgYnVpbGQuCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZy5oLAoJICBkbGxzL2NvbW1kbGcvZmlsZWRsZzE2LmM6CglTdGV2ZW4gRWR3YXJkcyA8U3RldmVuX0VkNDE1M0B5YWhvby5jb20+CglNb3JlIHNwbGl0dGluZyBvZiB0aGUgV2luMTYvMzIgaW50ZXJuYWwgZmlsZWRsZ3Byb2Mgd2luZG93IHByb2NlZHVyZXMKCWFuZCBkaWFsb2cgaW5pdC4KCU1ha2UgYSBmZXcgaW50ZXJuYWwgZnVuY3Rpb24gc3RhdGljIGFuZCBzaGFyZSBhIGZldyBvdGhlcnMuCgoJKiBmaWxlcy9zbWIuYywgZmlsZXMvc21iLmg6IEJpbGwgTWVkbGFuZCA8YmlsbG1lZGxhbmRAbWVyY3VyeXNwZWVkLmNvbT4KCUEgbGl0dGxlIFNNQiBwcmVwYXJhdG9yeSB3b3JrOgoJRG9uJ3QgcHVibGlzaCBpbnRlcm5hbCBpbmZvcm1hdGlvbi4KCUFkZCBhIGZ1bmN0aW9uIGZvciBkZXRlY3RpbmcgVU5DIG5hbWVzLgoJQWNjb3VudCBmb3IgdGhlIGZhY3QgdGhhdCBOVCBhbGxvd3MgZWl0aGVyIHNlcGFyYXRvciBjaGFyYWN0ZXIuCgoJKiBkbGxzL29sZWF1dDMyL29sZWZvbnQuYywgZGxscy9vbGVhdXQzMi90ZXN0cy8uY3ZzaWdub3JlLAoJICBkbGxzL29sZWF1dDMyL3Rlc3RzL01ha2VmaWxlLmluLCBkbGxzL29sZWF1dDMyL3Rlc3RzL29sZWZvbnQuYywKCSAgZGxscy9vbGVhdXQzMi92YXJpYW50LmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU9sZUNyZWF0ZUZvbnRJbmRpcmVjdChOVUxMLC4uLikgdXNlcyB0aGUgT0xFIFN0ZEZvbnQuCglBZGRlZCB0ZXN0Y2FzZSBmb3IgT2xlQ3JlYXRlRm9udEluZGlyZWN0KE5VTEwpLgoJQWRkZWQgVlRfTlVMTCAtPiBWVF9CT09MIHZhcmlhbnQgY29udmVydGVyLgoKCSogZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL3Jlc291cmNlLmMsIGRsbHMva2VybmVsL3N5bmMuYywKCSAgZGxscy9rZXJuZWwvdGFwZS5jLCBkbGxzL2tlcm5lbC90aHJlYWQuYywgZGxscy9udGRsbC9NYWtlZmlsZS5pbiwKCSAgZmlsZXMvdGFwZS5jLCBzY2hlZHVsZXIvY3JpdHNlY3Rpb24uYywgc2NoZWR1bGVyL3RocmVhZC5jLAoJICB3aW4zMi9rZXJuZWwzMi5jOgoJTW92ZWQgdGFwZS5jIHRvIGRsbHMva2VybmVsLgoJTW92ZWQgY3JpdGljYWwgc2VjdGlvbiBhbmQgcmVzb3VyY2UgdXBkYXRlIGZ1bmN0aW9ucyB0byBkbGxzL2tlcm5lbC4KCVN0YXJ0ZWQgbW92aW5nIHNvbWUgb2YgdGhlIHRocmVhZCBmdW5jdGlvbnMgdG9vLgoKCSogZGxscy9nZGkvbWZkcnYvaW5pdC5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglIYW5kbGUgQ3JlYXRlTWV0YUZpbGVXKE5VTEwpIGNvcnJlY3RseS4KCgkqIGRsbHMvc2hlbGwzMi9zaHZfaXRlbV9jbWVudS5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJSVN2SXRlbUNtX2ZuSW52b2tlQ29tbWFuZDogYWRkZWQgc3VwcG9ydCBmb3IgImRlbGV0ZSIgY29tbWFuZC4KCgkqIGRsbHMva2VybmVsL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC9maWxlLmMsIGRsbHMva2VybmVsL2ZpbGUxNi5jLAoJICBkbGxzL2tlcm5lbC9rZXJuZWxfcHJpdmF0ZS5oLCBkbGxzL250ZGxsL2ZpbGUuYywKCSAgZGxscy9udGRsbC9udGRsbC5zcGVjLCBmaWxlcy9maWxlLmMsIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwKCSAgaW5jbHVkZS93aW50ZXJubC5oLCBtaXNjL3JlZ2lzdHJ5LmMsIHNlcnZlci9maWxlLmMsCgkgIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci90cmFjZS5jOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CgktIHN0YXJ0IG1vdmluZyBhIGZldyBmaWxlIHJlbGF0ZWQgZnVuY3Rpb25zIGZyb20gZmlsZXMvZmlsZS5jIHRvCgkgIGRsbHMva2VybmVsIHN1YmRpciAoYWxzbyBzcGxpdHRpbmcgMTZiaXQgQVBJcyBpbiBhIHNlcGFyYXRlIGZpbGUpCgktIGltcGxlbWVudGVkIG50ZGxsLk50e0xvY2t8VW5sb2NrfUZpbGUsIGFuZCBtYWRlIHVzZSBvZiB0aG9zZSBmb3IgdGhlCgkgIGtlcm5lbDMyIGVxdWl2YWxlbnQKCS0gaW1wbGVtZW50ZWQgYSBmZXcgaW5mb3JtYXRpb24gY2xhc3NlcyBpbiBOdFF1ZXJ5SW5mb3JtYXRpb25GaWxlIGFuZAoJICBOdFNldEluZm9ybWF0aW9uRmlsZSAoc3RpbGwgbG90cyBvZiBtaXNzaW5nIGNsYXNzZXMpCgktIGVuaGFuY2VkIHRoZSBnZXRfZmlsZV9pbmZvIHNlcnZlciByZXF1ZXN0IGluIG9yZGVyIHRvIGltcGxlbWVudAoJICBjb3JyZWN0bHkgTnRRdWVyeUluZm9ybWF0aW9uRmlsZSAoY2hhbmdlIHRpbWUgJiBmaWxlIGFsbG9jIHNpemUpCgktIHJld3JvdGUgcmVnaXN0cnkgbG9hZGluZyB0byBjb21wbHkgd2l0aCBsYXRlc3QgY2hhbmdlcwoKCSogZGxscy9kbXVzaWMvTWFrZWZpbGUuaW4sIGRsbHMvZG11c2ljL2RtdXNpY19sb2FkZXIuYywKCSAgZGxscy9kbXVzaWMvZG11c2ljX3BlcmZvcm1hbmNlLmMsIGRsbHMvZG11c2ljL2RtdXNpY19wcml2YXRlLmgsCgkgIGRsbHMvZG11c2ljL2hlbHBlci5jOgoJUm9rIE1hbmRlbGpjIDxyb2subWFuZGVsamNAZ2ltYi5vcmc+CglBZGRlZCBmcmFtZXdvcmsgZm9yIGZpbGUgbG9hZGluZy4KCgkqIGRsbHMvd2luZWRvcy9kb3N2bS5jOiBHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCUV4cG9zZSBwYXJ0IG9mIERPU1ZNX1NlbmRRdWV1ZWRFdmVudHMoKSBhbHNvIGZvciBwbGF0Zm9ybXMgd2l0aG91dAoJTVpfU1VQUE9SVEVELgoKMjAwMy0wNi0yMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvdXNlci91c2VyMzIuc3BlYywgZGxscy91c2VyL3VzZXJfbWFpbi5jLAoJICBkbGxzL3gxMWRydi9jbGlwYm9hcmQuYywgZGxscy94MTFkcnYvZXZlbnQuYywgZGxscy94MTFkcnYveDExZHJ2LmgsCgkgIGRsbHMveDExZHJ2L3gxMWRydi5zcGVjLCBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jLAoJICBpbmNsdWRlL2NsaXBib2FyZC5oLCBpbmNsdWRlL3VzZXIuaCwgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLAoJICBzZXJ2ZXIvTWFrZWZpbGUuaW4sIHNlcnZlci9jbGlwYm9hcmQuYywgc2VydmVyL3Byb3RvY29sLmRlZiwKCSAgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdHJhY2UuYywgc2VydmVyL3VzZXIuaCwKCSAgd2luZG93cy9jbGlwYm9hcmQuYywgd2luZG93cy93aW4uYzoKCVVscmljaCBDemVrYWxsYSA8dWN6ZWthbGxhQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gdXNlIGdsb2JhbCBhdG9tcyBmb3IgdGhlIGZvcm1hdCBpZHMKCS0gYWRkIHRpbWVvdXQgd2hlbiBjYWxsaW5nIFhDaGVja1R5cGVkV2luZG93RXZlbnQKCS0gZml4IGJyb2tlbiBJc0NsaXBib2FyZEZvcm1hdEF2YWlsYWJsZTsgaXQgdHJpZWQgdG8gZG8gYSB0cmljayB3aXRoCgkgIEVudW1DbGlwYm9hcmRGb3JtYXRzIGJ5IG1ha2luZyBpbmNvcnJlY3QgYXNzdW1wdGlvbnMKCS0gaW4gWDExRFJWX0lzQ2xpcGJvYXJkRm9ybWF0QXZhaWxhYmxlIGRvIGEgcXVpY2sgZXhpdCBpZiBubyBvbmUgb3ducwoJICB0aGUgc2VsZWN0aW9uCgktIGFkZCAxIHNlY29uZCAqbWluaW11bSogdGltZSBsYXBzZSBiZXR3ZWVuIFhTZWxlY3Rpb25Pd25lciBjYWxscwoJLSBzeW5jIGNsaXBib2FyZCBvd25lcnNoaXAgYmV0d2VlbiBkaWZmZXJlbnQgd2luZSBwcm9jZXNzZXMKCS0gcHJldmVudHMgYXBwcyBmcm9tIGdldHRpbmcgaW50byB3aWVyZCBzdGF0ZSB3aGVyZSB0aGV5IHRob3VnaHQgdGhleQoJICBkaWRuJ3Qgb3duIHRoZSBzZWxlY3Rpb24gYnV0IHRoZXkgZGlkIGFuZCBhcyBhIHJlc3VsdCBxdWVyaWVkCgkgIHRoZW1zZWx2ZXMgZm9yIGF2YWlsYWJsZSBzZWxlY3Rpb24gZGF0YQoKCSogZGxscy93aW5lcHMvaW5pdC5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJTWFrZSBzdXJlIHdlIHVwZGF0ZSBkYy0+Yml0c1BlclBpeGVsLgoKCSogZGxscy9nZGkvZHJpdmVyLmM6CglBZGRlZCBzcGVjaWFsIGNhc2UgZm9yICJkaXNwbGF5IiBpbiBEUklWRVJfR2V0RHJpdmVyTmFtZSBzbyB0aGF0CglHZXREQyhOVUxMLCJkaXNwbGF5Iikgd29ya3MuCgoJKiBkbGxzL2dkaS9mcmVldHlwZS5jLCBpbmNsdWRlL2dkaS5oLCBvYmplY3RzL2ZvbnQuYywgb2JqZWN0cy90ZXh0LmM6CglIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJRG9uJ3QgZW5hYmxlIGNsaWVudCBzaWRlIGZvbnRzIHVubGVzcyB3ZSBoYXZlIGF0IGxlYXN0IG9uZSBub24tc3ltYm9sCglmb250IGluc3RhbGxlZCAtIHRoaXMgYXZvaWRzIGEgbmFzdHkgV2luZ2RpbmdzIG9ubHkgc2NlbmFyaW8uCglBZGQgdGhlIGFiaWxpdHkgdG8gcGVyZm9ybSBmb250IHJlcGxhY2VtZW50cywgdGhpcyBlc3NlbnRpYWxseSBsZXRzCgl5b3UgZ2l2ZSBhIHNlY29uZCBuYW1lIHRvIGEgZm9udCBmYW1pbHkgc28gdGhhdCBmYW1pbHlBIGdldHMKCWVudW1lcmF0ZWQgYXMgZmFtaWx5QiB0b28uCglJZiB3ZSBlbmNvdW50ZXIgdHdvIGNvcGllcyBvZiB0aGUgc2FtZSBmb250IHRoZW4gdXNlIHRoZSBvbmUgd2l0aCB0aGUKCWxhcmdlciB2ZXJzaW9uIG51bWJlci4KCglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJTW92ZSBHZXRUZXh0Q2hhcnNldEluZm8gaW1wbGVtZW50YXRpb24gdG8gdGhlIGZvbnQgZHJpdmVyLgoKCSogd2luZG93cy93aW4uYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCVNpbXBsZSBvcHRpbWl6YXRpb24gaW4gRW5hYmxlV2luZG93LgoKCSogd2luZG93cy9wYWludGluZy5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRHVtcCBSRFdfIGZsYWdzIGluIFJlZHJhd1dpbmRvdy4KCgkqIGRsbHMveDExZHJ2L2tleWJvYXJkLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBbG9uZyB3aXRoIEFsdEdyIHN0YXRlIHNhdmUgYWxzbyBhbGwgcG9zc2libGUgbW9kaWZpZXIgc3RhdGVzLgoKCSogZGxscy93aW5lcHMvZG93bmxvYWQuYywgZGxscy93aW5lcHMvZXNjYXBlLmMsIGRsbHMvd2luZXBzL3BzLmMsCgkgIGRsbHMvd2luZXBzL3BzZHJ2LmgsIGRsbHMvd2luZXBzL3R5cGU0Mi5jOgoJSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUZvciBQb3N0U2NyaXB0IHZlcnNpb25zIDwgMi4wMTUgd2UgbmVlZCB0byBleHBsaWNpdGx5IGFsbG9jYXRlIHNwYWNlCglmb3IgdGhlICdnbHlmJyBhcnJheS4KCVRvIGNvbnNlcnZlIFZNLCB3ZSBvbmx5IGFsbG93IHVwIHRvIHR3byBmb250cyB0byBiZSBkb3dubG9hZGVkIGJlZm9yZQoJcmVjbGFpbWluZyB0aGVpciBWTS4KCgkqIGRsbHMvd2luc3Bvb2wvaW5mby5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJSXQgc2VlbXMgY3Vwc0dldERlZmF1bHQgcmV0dXJucyB0aGUgc3lzdGVtIGRlZmF1bHQgcHJpbnRlciBhbmQgaWdub3JlcwoJYSB1c2VyJ3Mgb3ZlcnJpZGUuICBTbyB1c2UgY3Vwc0dldERlc3RzIGluc3RlYWQgd2hpY2ggZG9lcyByZXNwZWN0IHRoZQoJdXNlcidzIGNob2ljZS4KCURlbGV0ZSBhbGwgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgcHJpbnRlciBrZXlzIG9uIHN0YXJ0dXAgYmVmb3JlCglxdWVyeWluZyB0aGUgY3VwcyBzZXJ2ZXIuCgoJKiBkb2N1bWVudGF0aW9uL01ha2VmaWxlLmluLCBwcm9ncmFtcy9NYWtlZmlsZS5pbiwKCSAgdG9vbHMvd2luZWJ1aWxkL01ha2VmaWxlLmluOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2Ugc3VyZSB0byByZXR1cm4gYW4gZXJyb3IgaWYgdGhlIGZpbGUgZ2VuZXJhdGlvbiBmYWlscy4KCgkqIGRsbHMvd2luZWRvcy9pbnQxMy5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJT19SRE9OTFk9PTAgYnV0IGl0J3MgY2xlYW5lciB0byBwYXNzIGl0IHRvIERSSVZFX09wZW5EZXZpY2UoKSBhbnl3YXkuCgoJKiBkbGxzL3NoZWxsMzIvY2hhbmdlbm90aWZ5LmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglDaGFuZ2Ugbm90aWZpY2F0aW9uIGZpeGVzLgoKCSogZGxscy9nZGkvZHJpdmVyLmMsIGRsbHMvZ2RpL2VuaG1mZHJ2L2VuaG1ldGFmaWxlZHJ2LmgsCgkgIGRsbHMvZ2RpL2VuaG1mZHJ2L2luaXQuYywgZGxscy9nZGkvZW5obWZkcnYvbWFwcGluZy5jLAoJICBkbGxzL2dkaS9tZmRydi9pbml0LmMsIGluY2x1ZGUvZ2RpLmgsIG9iamVjdHMvZGMuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlY29yZCBTZXRXb3JsZFRyYW5zZm9ybSBhbmQgTW9kaWZ5V29ybGRUcmFuc2Zvcm0gaW4gZW5oYW5jZWQKCW1ldGFmaWxlcy4KCgkqIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvbWFrZV9kbGxzOgoJQWRkZWQgaW1wb3J0IGxpYnMgZGVwZW5kZW5jeSBmb3IgbWFrZSBpbnN0YWxsLgoKCSogcHJvZ3JhbXMvY2xvY2svRW4ucmMsIHByb2dyYW1zL2Nsb2NrL1B0LnJjLCBwcm9ncmFtcy9jbG9jay9yc3JjLnJjLAoJICBwcm9ncmFtcy9jbWRsZ3RzdC9Fbi5yYywgcHJvZ3JhbXMvY21kbGd0c3QvUHQucmMsCgkgIHByb2dyYW1zL2NtZGxndHN0L2NtZGxnci5yYywgcHJvZ3JhbXMvbm90ZXBhZC9Fbi5yYywKCSAgcHJvZ3JhbXMvbm90ZXBhZC9QdC5yYywgcHJvZ3JhbXMvcHJvZ21hbi9QdC5yYywKCSAgcHJvZ3JhbXMvcHJvZ21hbi9yc3JjLnJjLCBwcm9ncmFtcy9zdGFydC9QdC5yYywKCSAgcHJvZ3JhbXMvc3RhcnQvcnNyYy5yYywgcHJvZ3JhbXMvdmlldy9Fbi5yYywgcHJvZ3JhbXMvdmlldy9QdC5yYywKCSAgcHJvZ3JhbXMvdmlldy92aWV3cmMucmMsIHByb2dyYW1zL3djbWQvRW4ucmMsIHByb2dyYW1zL3djbWQvUHQucmMsCgkgIHByb2dyYW1zL3djbWQvd2NtZHJjLnJjLCBwcm9ncmFtcy93aW5lY2ZnL0VuLnJjLAoJICBwcm9ncmFtcy93aW5lY2ZnL1B0LnJjLCBwcm9ncmFtcy93aW5lY2ZnL3dpbmVjZmcucmMsCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25zb2xlX1B0LnJjLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZV9yZXMucmMsIHByb2dyYW1zL3dpbmVmaWxlL1B0LnJjLAoJICBwcm9ncmFtcy93aW5lZmlsZS9yc3JjLnJjLCBwcm9ncmFtcy93aW5lbWluZS9Fbi5yYywKCSAgcHJvZ3JhbXMvd2luZW1pbmUvUHQucmMsIHByb2dyYW1zL3dpbmVtaW5lL3JzcmMucmMsCgkgIHByb2dyYW1zL3dpbmhlbHAvUHQucmMsIHByb2dyYW1zL3dpbmhlbHAvcnNyYy5yYzoKCU1hcmNlbG8gRHVhcnRlIDx3aW5lLWRldmVsQGJvbC5jb20uYnI+CgktIGxvY2FsaXphdGlvbiB0byB0aGUgUG9ydHVndWVzZSBvZiBCcmF6aWwgb2YgInByb2dyYW1zLyoiCgktIHNlcGFyYXRpb24gb2Ygc29tZSByZXNvdXJjZXMgdGhhdCBvbmx5IGV4aXN0ZWQgaW4gRW5nbGlzaAoJLSBsZXNzZXIgYWRqdXN0bWVudHMgaW4gbWVudXMKCgkqIGRsbHMva2VybmVsL2NvbnNvbGUuYywgZGxscy9rZXJuZWwva2VybmVsX21haW4uYywgZGxscy9udGRsbC9oZWFwLmMsCgkgIGZpbGVzL3Byb2ZpbGUuYywgZmlsZXMvc21iLmMsIG1lbW9yeS9oZWFwLmMsIHNjaGVkdWxlci9wdGhyZWFkLmMsCgkgIHNjaGVkdWxlci9zeXNsZXZlbC5jOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CgktIGluIGtlcm5lbDMyLCByZXBsYWNlZCBhbGwge0VudGVyfExlYXZlfUNyaXRpY2FsU2VjdGlvbiBjYWxscyB3aXRoCgkgIG50ZGxsIGNvdW50ZXJwYXJ0cwoJLSB7RW50ZXJ8TGVhdmV9Q3JpdGljYWxTZWN0aW9uIGlzIG5vdyBhIHB1cmUgZm9yd2FyZCBmcm9tIGtlcm5lbDMyIHRvCgkgIG50ZGxsICh3ZSBub3cgbG9uZ2VyIGNhbiB1c2Uge0VudGVyfExlYXZlfUNyaXRpY2FsU2VjdGlvbiBpbiBrZXJuZWwzMikKCS0gcmVwbGFjZWQgYSBmZXcga2VybmVsMzIgaGVhcCBtYW5hZ2VtZW50IGNhbGxzIGZyb20gbnRkbGwsIHdpdGgKCSAgUnRsSGVhcCogZXF1aXZhbGVudHMKCgkqIGRsbHMvY2FiaW5ldC9mZGkuYzogR3JlZ29yeSBNLiBUdXJuZXIgPGdtdHVybmVyMDA3QGFtZXJpdGVjaC5uZXQ+CgktIHJlbW92ZSB1bnVzZWQgbG9vcCB0aGF0IGFsd2F5cyBpdGVyYXRlcyBvbmNlCgktIHJlbW92ZSB3YXJuaW5nCgktIHByZXBhcmF0aW9ucyB0byB1c2UgbXVsdGlwbGUgZmRpX2RlY29tcF9zdGF0ZSBzdHJ1Y3R1cmVzIGluIGEgbGlua2VkbGlzdCwKCSAgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGltcGxlbWVudCBzcGxpdCBjYWJpbmV0cywgaWYgYWxsIGdvZXMgYWNjb3JkaW5nCgkgIHRvIHBsYW4gLS0gdGhpcyBpcyBzb21ld2hhdCBhbmFsb2dvdXMgdG8gc3RydWN0IGNhYmluZXQgaW4gY2FiZXh0cmFjdC4KCgkqIGRsbHMvYXZpZmlsMzIvTWFrZWZpbGUuaW4sIGRsbHMvYXZpZmlsMzIvYWNtc3RyZWFtLmMsCgkgIGRsbHMvYXZpZmlsMzIvYXBpLmMsIGRsbHMvYXZpZmlsMzIvYXZpZmlsMzIuc3BlYywKCSAgZGxscy9hdmlmaWwzMi9hdmlmaWxlLmMsIGRsbHMvYXZpZmlsMzIvYXZpZmlsZS5zcGVjLAoJICBkbGxzL2F2aWZpbDMyL2F2aWZpbGVfcHJpdmF0ZS5oLCBkbGxzL2F2aWZpbDMyL2V4dHJhY2h1bmsuYywKCSAgZGxscy9hdmlmaWwzMi9nZXRmcmFtZS5jLCBkbGxzL2F2aWZpbDMyL2ljbXN0cmVhbS5jLAoJICBkbGxzL2F2aWZpbDMyL3RtcGZpbGUuYywgZGxscy9hdmlmaWwzMi93YXZmaWxlLmMsIGluY2x1ZGUvdmZ3Lmg6CglNaWNoYWVsIEf8bm5ld2lnIDxNaWNoYWVsR3Vlbm5ld2lnQGdteC5kZT4KCS0gRml4ZWQgc29tZSBzaWduZWQvdW5zaWduZWQgbWlzbWF0Y2hlcy4KCS0gRml4ZWQgYnVncyBpbiBBVklTYXZlT3B0aW9ucyBkaWFsb2cgaGFuZGxpbmcuCgktIEZpeGVkIGJ1ZyBpbiBBVklGSUxFX0xvYWRGaWxlIC0tIG5vdyBjaGVjayBmb3IgbW9yZSB0aGFuCgkgIE1BWF9BVklTVFJFQU1TIHN0cmVhbXMgaW4gZmlsZS4KCS0gSW1wbGVtZW50ZWQgQVZJTWFrZUZpbGVGcm9tU3RyZWFtcyBhbmQgQVZJU2F2ZVZBIG1ldGhvZC4KCS0gQWRkZWQgSUFWSUVkaXRTdHJlYW0gaW50ZXJmYWNlLgoJLSBJbXBsZW1lbnRlZCBFZGl0U3RyZWFtKiBtZXRob2RzLgoJLSBBZGRlZCBzdHVicyBmb3IgQVZJU2F2ZVZXLCBDcmVhdGVFZGl0YWJsZVN0cmVhbS4KCS0gQWRkZWQgc3R1YnMgZm9yIGNsaXBib2FyZCBoYW5kbGluZy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL29sZWFjYy8uY3ZzaWdub3JlLAoJICBkbGxzL29sZWFjYy9NYWtlZmlsZS5pbiwgZGxscy9vbGVhY2MvbWFpbi5jLCBkbGxzL29sZWFjYy9vbGVhY2Muc3BlYzoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJQ3JlYXRlZCBhbiBlbXB0eSBvbGVhY2MgRExMLgoKCSogZGxscy9rZXJuZWwvY29uc29sZS5jLCBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25zb2xlLmMsIHNlcnZlci9jb25zb2xlLmMsCgkgIHNlcnZlci9jb25zb2xlLmgsIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci90cmFjZS5jOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglJbiBjb25zb2xlIGlucHV0IHJlY29yZCBxdWV1ZSwgcmVwbGFjZSBzZW1hcGhvcmUgd2l0aCBhIG1hbnVhbCByZXNldAoJZXZlbnQsIHNvIHRoYXQgd2UgZ2V0IGNvcnJlY3QgYmVoYXZpb3IgaW4gc3luY2hyb25pemF0aW9uIGhhbmRsaW5nLgoKCSogZGxscy93aW5lZG9zL2Rvc2V4ZS5oLCBkbGxzL3dpbmVkb3MvZG9zdm0uYywgZGxscy93aW5lZG9zL2ludDA5LmMsCgkgIGRsbHMvd2luZWRvcy9yZWxheS5jOgoJSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJQWRkIElSUSBhY2tub3dsZWRnZSBoYW5kbGVyIGZvciBpbnRlcm5hbCBJUlFzLgoJQ2hhbmdlIERQTUkgYXN5bmNocm9ub3VzIGV2ZW50IGhhbmRsaW5nLgoJQWx3YXlzIHVzZSBhbHRlcm5hdGUgc3RhY2sgaW4gRFBNSSByZWxheXMgYW5kIGNoZWNrIGZvciBwZW5kaW5nIGV2ZW50cwoJYWZ0ZXIgb3JpZ2luYWwgc3RhY2sgaGFzIGJlZW4gcmVzdG9yZWQuCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmg6IEt1c2FuYWdpIEtvdWljaGkgPHNsYXNoQG1hLm5ld2ViLm5lLmpwPgoJQWRkZWQgTGlzdFZpZXdfR2V0SXRlbVRleHQgbWFjcm8uCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UvZGliLmMsCgkgIGRsbHMvZGRyYXcvbWVzYS5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gc29tZSBUUkFDRWluZyBmaXhlcwoJLSBmYXN0ZXIgQmx0IHRvIHRoZSBmcmFtZWJ1ZmZlciB1c2luZyB0ZXh0dXJlIGVuZ2luZQoKCSogZGxscy9jb21tZGxnL2NkbGdfUnUucmM6IE9sZWcgUHJva2hvcm92IDx4b2xlZ3Byb0ByYmNtYWlsLnJ1PgoJRml4ZWQgUnVzc2lhbiBjb21tZGxnIGxvY2FsaXphdGlvbi4gU29tZSByZXNvdXJjZSBlbGVtZW50cyBkaWRuJ3QgaGF2ZQoJcHJvcGVyIHNpemUsIGFuZCB3ZXJlIHBhcnRpYWxseSB2aXNpYmxlLgoKCSogZGxscy9tc3ZpZGVvL21zdmZ3MzIuc3BlYywgZGxscy9tc3ZpZGVvL21zdmlkZW9fbWFpbi5jLAoJICBkbGxzL21zdmlkZW8vbXN2aWRlb19wcml2YXRlLmgsIGRvY3VtZW50YXRpb24vc2FtcGxlcy9zeXN0ZW0uaW5pOgoJTWljaGFlbCBH/G5uZXdpZyA8TWljaGFlbEd1ZW5uZXdpZ0BnbXguZGU+CgktIGFkZGVkIHN0dWJzIGZvciBHZXRPcGVuRmlsZU5hbWVQcmV2aWV3e0EsV30KCS0gYWRkZWQgc3R1YnMgZm9yIEdldFNhdmVGaWxlTmFtZVByZXZpZXd7QSxXfQoJLSByZW1vdmVkIGludmFsaWQgVklEQy5NUkxEIGxpbmUgZnJvbSBzeXN0ZW0uaW5pCgoJKiBkbGxzL2lwaGxwYXBpL2lwaGxwYXBpX21haW4uYywgZGxscy9uZXRhcGkzMi90ZXN0cy93a3N0YS5jLAoJICBkbGxzL25ldGFwaTMyL3drc3RhLmM6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCUZpeGVkIGEgZmV3IGJ1Z3MgaW4gbmV0d29yayBpbnRlcmZhY2UgaGFuZGxpbmcgKGNvZGUgJiB0ZXN0KS4KCjIwMDMtMDYtMjEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC9jb25zb2xlLmMsIGRsbHMva2VybmVsL2VkaXRsaW5lLmMsCgkgIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGRsbHMva2VybmVsL2tlcm5lbF9wcml2YXRlLmgsCgkgIGRsbHMva2VybmVsL3Rlc3RzL2NvbnNvbGUuYywgZmlsZXMvZmlsZS5jLAoJICBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25zb2xlLmMsCgkgIHNjaGVkdWxlci9oYW5kbGUuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2NoZWR1bGVyL3N5bmNocm8uYywKCSAgc2VydmVyL2NvbnNvbGUuYywgc2VydmVyL2NvbnNvbGUuaCwgc2VydmVyL2ZkLmMsIHNlcnZlci9wcm9jZXNzLmMsCgkgIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci90cmFjZS5jOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CgktIGFkYXB0ZWQga2VybmVsMzIgc28gdGhhdCBpdCBubyBsb25nZXIgKGRpcmVjdGx5KSBtYW5hZ2VzIGNvbnNvbGUKCSAgaGFuZGxlcyBhcyB3aW5lc2VydmVyIGhhbmRsZXMKCS0gY29uc29sZSBpbnB1dCBoYW5kbGUgb2JqZWN0IGlzIG5vIGxvbmdlciB3YWl0YWJsZSAoaW5wdXQgcmVjb3JkCgkgIHN5bmNocm9uaXNhdGlvbiBpcyBub3cgaW1wbGVtZW50ZWQgYXMgYSBzaW1wbGUgc2VtYXBob3JlKSwgYW5kIHJlbW92ZWQKCSAgRkRfVFlQRV9DT05TT0xFIGZyb20gZmQgdHlwZXMgaW4gd2luZXNlcnZlcgoJLSBjb25zb2xlIGhhbmRsZXMgbm93IGFsd2F5cyBoYXZlIHRoZWlyIHR3byBsb3dlciBiaXQgc2V0IHNvIG9uZSBjYW4KCSAgZGlzdGluZ3Vpc2ggYSBjb25zb2xlIGhhbmRsZSBmcm9tIGEga2VybmVsIG9iamVjdCBoYW5kbGUKCS0gaW1wbGVtZW50ZWQgc29tZSB1bmRvY3VtZW50ZWQga2VybmVsMzIgY29uc29sZSByZWxhdGVkIEFQSXMKCSAgKENsb3NlQ29uc29sZUhhbmRsZSwgR2V0Q29uc29sZUlucHV0V2FpdEhhbmRsZSwgT3BlbkNvbnNvbGVXLAoJICBWZXJpZnlDb25zb2xlSW9IYW5kbGUsIER1cGxpY2F0ZUNvbnNvbGVIYW5kbGUpCgktIGFsbG93ZWQgYSBmZXcga2VybmVsMzIgQVBJcyB0byB0YWtlIGNvbnNvbGUgcHNldWRvLWhhbmRsZXMKCSAgKEZsdXNoRmlsZUJ1ZmZlciwgR2V0RmlsZVR5cGUsIFdhaXRGb3IqT2JqZWN0KikKCS0gc2ltcGxpZmllZCB0aGUgY29uc29sZSBpbmhlcml0YW5jZSBhdCBwcm9jZXNzIGNyZWF0aW9uCgktIGluIGNvbnNvbGUgdGVzdHMsIG5vIGxvbmdlciBjcmVhdGUgYSBjb25zb2xlIGlmIG9uZSBhbHJlYWR5IGV4aXN0cwoKCSogc2VydmVyL21hcHBpbmcuYzoKCVRoZSBzZXJ2ZXIgYWxzbyBuZWVkcyB0byBjb3BlIHdpdGggSU1BR0VfU0NOX0NOVF9VTklOSVRJQUxJWkVEX0RBVEEKCWFuZCBJTUFHRV9TQ05fQ05UX0lOSVRJQUxJWkVEX0RBVEEgZmxhZ3Mgc2V0IHRvZ2V0aGVyLgoKCSogZGxscy9udGRsbC92aXJ0dWFsLmM6IEVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJRml4ZWQgc2VjdGlvbiBtYXBwaW5nIGluIFBFIGxvYWRpbmcgd2hlbiBib3RoCglJTUFHRV9TQ05fQ05UX1VOSU5JVElBTElaRURfREFUQSBhbmQgSU1BR0VfU0NOX0NOVF9JTklUSUFMSVpFRF9EQVRBCglhcmUgc2V0LgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jOgoJSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCVNIR2V0RmlsZUluZm8gc2hvdWxkIHRvbGVyYXRlIG51bGwgcG9pbnRlcnMuCgoyMDAzLTA2LTIwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy94MTFkcnYvd2luZG93LmM6IEt1c2FuYWdpIEtvdWljaGkgPHNsYXNoQG1hLm5ld2ViLm5lLmpwPgoJU3RvcmUgV01fTkFNRSBhbmQgV01fSUNPTl9OQU1FIGluIENPTVBPVU5EX1RFWFQgZm9ybWF0LgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvd2luaW5ldC9NYWtlZmlsZS5pbiwKCSAgZGxscy93aW5pbmV0L2Nvb2tpZS5jLCBkbGxzL3dpbmluZXQvaHR0cC5jLCBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYywKCSAgZGxscy93aW5pbmV0L2ludGVybmV0LmgsIGRsbHMvd2luaW5ldC9uZXRjb25uZWN0aW9uLmMsCgkgIGluY2x1ZGUvY29uZmlnLmguaW46CglEYXZpZCBIYW1tZXJ0b24gPGRhdmlkQHRyYW5zZ2FtaW5nLmNvbT4KCS0gaW1wbGVtZW50ZWQgc3VwcG9ydCBmb3IgaHR0cHMgcHJvdG9jb2wKCS0gZml4ZXMgdG8gdGhlIGh0dHAgcHJvdG9jb2wKCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL2dkaS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9jb25maWcuaC5pbjoKCUFkZGVkIGNoZWNrcyBmb3IgSUNVIGxpYnJhcmllcyAoYmFzZWQgb24gYSBwYXRjaCBieSBTaGFjaGFyIFNoZW1lc2gpLgoKCSogdG9vbHMvbWFrZWRlcC5jOgoJQWRkZWQgc3VwcG9ydCBmb3IgI2luY2x1ZGUgaW4gSURMIGZpbGVzIChiYXNlZCBvbiBhIHBhdGNoIGJ5IFJvYmVydAoJU2hlYXJtYW4pLgoKCSogaW5jbHVkZS93dHlwZXMuaCwgaW5jbHVkZS93dHlwZXMuaWRsOgoJUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCUFkZGVkIHR5cGVkZWYgZm9yIENPTE9SUkVGLgoKCSogZGxscy9vcGVuZ2wzMi9tYWtlX29wZW5nbCwgZGxscy9vcGVuZ2wzMi9vcGVuZ2xfZXh0LmMsCgkgIGRsbHMvb3BlbmdsMzIvb3BlbmdsX25vcm0uYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglEbyBub3QgdXNlIGFueSB0eXBlZGVmcyBpbiB0aGUgR0wgdGh1bmtzIHRvIHByZXZlbnQgYWxsIHBvc3NpYmxlCgljb21waWxhdGlvbiBpc3N1ZXMuCgoJKiBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL2QzZDkuaCwgaW5jbHVkZS9kM2Q5Y2Fwcy5oLAoJICBpbmNsdWRlL2QzZDl0eXBlcy5oOgoJUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CglBZGRlZCBkM2Q5IGhlYWRlcnMuCgoJKiBkbGxzL3dpbmVkb3MvZG9zdm0uYywgZGxscy93aW5lZG9zL2ludDMxLmM6CglKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglBZGQgaW50MzEgVklGIG1hbmlwdWxhdGlvbiBmdW5jdGlvbnMuCglGaXggYXN5bmNocm9ub3VzIGV2ZW50IGxvY2tpbmcuCglNYWtlIGFzeW5jaHJvbm91cyBldmVudCBoYW5kbGluZyBzdXBwb3J0IERQTUkuCgoJKiBkb2N1bWVudGF0aW9uL2RlYnVnZ2VyLnNnbWw6IEVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJQWRkZWQgYSBzZWN0aW9uIGFib3V0IHVzaW5nIGtnZGIgYW5kIGRkZCB0byBkZWJ1ZyB3aW5lLgoKMjAwMy0wNi0xOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIEFOTk9VTkNFLCBDaGFuZ2VMb2csIFZFUlNJT04sIGNvbmZpZ3VyZTogUmVsZWFzZSAyMDAzMDYxOC4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KMjAwMy0wNi0xOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvYWR2YXBpMzIvcmVnaXN0cnkuYywgZGxscy9hZHZhcGkzMi9zZXJ2aWNlLmMsCgkgIGRsbHMvY29tY2F0L2luZm9ybWF0aW9uLmMsIGRsbHMvY29tY2F0L3JlZ3N2ci5jLAoJICBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYywgZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYywKCSAgZGxscy9jb21jdGwzMi90b29sdGlwcy5jLCBkbGxzL2RkcmF3L2RkcmF3L3RodW5rcy5jLAoJICBkbGxzL2tlcm5lbC9zeW5jLmMsIGRsbHMva2VybmVsL3Rlc3RzL2Zvcm1hdF9tc2cuYywKCSAgZGxscy9udGRsbC9maWxlLmMsIGRsbHMvb2xlMzIvcmVnc3ZyLmMsIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmMsCgkgIGRsbHMvb2xlYXV0MzIvcGFyc2VkdC5jLCBkbGxzL3NlcmlhbHVpL2NvbmZkbGcuYywKCSAgZGxscy9zZXR1cGFwaS9kZXZpbnN0LmMsIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGRsbHMvdXNlci9jb21tMTYuYywgZGxscy91c2VyL3Rlc3RzL2NsYXNzLmMsCgkgIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jLCBkbGxzL3dpbm1tL2xvbHZsZHJ2LmMsCgkgIGRsbHMvd2luc29jay9zb2NrZXQuYywgZGxscy93aW5zcG9vbC9pbmZvLmMsIGZpbGVzL3NtYi5jLAoJICBncmFwaGljcy94MTFkcnYveGZvbnQuYywgcHJvZ3JhbXMvdW5pbnN0YWxsZXIvbWFpbi5jLAoJICBwcm9ncmFtcy93aW5lbWVudWJ1aWxkZXIvd2luZW1lbnVidWlsZGVyLmMsIHNjaGVkdWxlci9jbGllbnQuYywKCSAgc2VydmVyL25hbWVkX3BpcGUuYywgc2VydmVyL3JlZ2lzdHJ5LmMsIHNlcnZlci9yZXF1ZXN0LmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCSdzaXplb2YgdHlwZScgaXMgYmVzdCBhdm9pZGVkIGFzIGl0IHdvbid0IGFsd2F5cyBjb21waWxlIChlLmcuICdpbnQKCW1haW4oKSB7cmV0dXJuIHNpemVvZiBpbnQ7fScpLiBVc2UgJ3NpemVvZih0eXBlKScgaW5zdGVhZC4KCgkqIExJQ0VOU0U6IEdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJSW5jbHVkZSAyMDAzIGluIHRoZSBjb3B5cmlnaHQgeWVhcnMuCgoJKiBwcm9ncmFtcy9ub3RlcGFkL0xpY2Vuc2VfRW4uYywgcHJvZ3JhbXMvbm90ZXBhZC9saWNlbnNlLmM6CglHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCSNpbmNsdWRlIDx3aW5kb3dzLmg+IGluc3RlYWQgb2YgIndpbmRvd3MuaCIuCgoJKiBkbGxzL2Rzb3VuZC9wcmltYXJ5LmMsIGRsbHMvZHNvdW5kL3NvdW5kM2QuYzoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglGaXhlZCBhIHJlZmVyZW5jZSBjb3VudGluZyBidWcgSSBpbnRyb2R1Y2VkLgoKCSogZGxscy9jYWJpbmV0L2NhYmV4dHJhY3QuYywgZGxscy9jYWJpbmV0L2ZkaS5jLAoJICBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYywgZGxscy9jb21jdGwzMi91cGRvd24uYywKCSAgZGxscy9jb21tZGxnL3ByaW50ZGxnLmMsIGRsbHMvZHBsYXl4L2RwbGF5eF9nbG9iYWwuYywKCSAgZGxscy9rZXJuZWwvdGVzdHMvcGF0aC5jLCBkbGxzL2tlcm5lbC90ZXN0cy90aHJlYWQuYywKCSAgd2luZWRlZmF1bHQucmVnLCBkbGxzL250ZGxsL3RpbWUuYywgZGxscy9vbGUzMi9hbnRpbW9uaWtlci5jLAoJICBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGUzMi9jb21wb3NpdGVtb25pa2VyLmMsCgkgIGRsbHMvb2xlMzIvaXRlbW1vbmlrZXIuYywgZGxscy9vbGVhdXQzMi9zYWZlYXJyYXkuYywKCSAgZGxscy9vbGVhdXQzMi92YXJpYW50LmMsIGRsbHMvc2hlbGwzMi9zaGxleGVjLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYywgZGxscy9zaGVsbDMyL3NobHZpZXcuYywKCSAgZGxscy9zaGx3YXBpL2NsaXN0LmMsIGRsbHMvc2hsd2FwaS9wYXRoLmMsIGRsbHMvc2hsd2FwaS90aHJlYWQuYywKCSAgZGxscy93aW5tbS93aW5lb3NzL21pZGkuYywgZG9jdW1lbnRhdGlvbi9IT1dUTy13aW5lbGliLAoJICBkb2N1bWVudGF0aW9uL1BBQ0tBR0lORywgZG9jdW1lbnRhdGlvbi9kZWJ1Z2dlci5zZ21sLAoJICBkb2N1bWVudGF0aW9uL2RlYnVnZ2luZy5zZ21sLCBkb2N1bWVudGF0aW9uL2RsbHMuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9wYXRjaGVzLnNnbWwsIGRvY3VtZW50YXRpb24vc2hlbGwzMiwKCSAgZG9jdW1lbnRhdGlvbi9zdGF0dXMvZGlyZWN0cGxheSwgbGlicy93cHAvcHBsLmwsIG9iamVjdHMvZm9udC5jLAoJICBwcm9ncmFtcy9ub3RlcGFkL21haW4uYywgcHJvZ3JhbXMvdmlldy92aWV3LmMsCgkgIHByb2dyYW1zL3dpbmVjZmcvbWFpbi5jLCBwcm9ncmFtcy93aW5lY2ZnL3dpbmVjZmcucmMsCgkgIHByb2dyYW1zL3dpbmVkYmcvcmVnaXN0ZXJzLmMsIHRvb2xzL3dpbmVkdW1wL1JFQURNRSwKCSAgdG9vbHMvd3JjL3BhcnNlci55OgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglUeXBvcy9zcGVsbGluZyBmaXhlcy4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL2Vudmlyb24uYywgZGxscy9rZXJuZWwvdGVzdHMvcHJvY2Vzcy5jLAoJICBkbGxzL250ZGxsL3Rlc3RzL2Vudi5jOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CgktIGtlcm5lbDMyJ3MgZW52aXJvbm1lbnQgdGVzdHM6IGEgZmV3IG1vcmUgdGVzdHMgbm93IHN1Y2NlZWQKCS0gYWRkZWQgc29tZSBjb25zb2xlIHJlbGF0ZWQgdGVzdHMgdG8gcHJvY2VzcyBjcmVhdGlvbgoJLSBhZGRlZCBhIGZldyBtb3JlIHRlc3QgY2FzZXMgdG8gdGhlIG50ZGxsIGVudmlyb25tZW50IHRlc3RzCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWxfbWFpbi5jLCBkbGxzL250ZGxsL2Vudi5jLCBkbGxzL250ZGxsL250ZGxsX21pc2MuaCwKCSAgaW5jbHVkZS93aW50ZXJubC5oLCBtZW1vcnkvZW52aXJvbi5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CgktIGZpeGVkIGEgY291cGxlIG9mIGJ1Z3MgaW4gbnRkbGwgZW52aXJvbm1lbnQgZnVuY3Rpb25zIChvbmUgaW4gdHJhY2UsCgkgIHRoZSBvdGhlciBvbmUgaW4gZW52aXJvbm1lbnQgdmFyaWFibGUgZXhwYW5zaW9uKQoJLSB0aGUgcHJvY2VzcyBwYXJhbWV0ZXJzLCB3aGVuIHBhc3NlZCB0aHJ1IHdpbmVzZXJ2ZXIsIGFyZSBub3cgZnVsbHkKCSAgaGFuZGxlZCBpbiBudGRsbCwgdGhleSBhcmUgc3RvcmVkIGluIHRoZSBSVExfVVNFUl9QUk9DRVNTX1BBUkFNRVRFUlMKCSAgc3RydWN0dXJlLgoJLSBsYXRlciBvbiBpbiBrZXJuZWwzMiBsb2FkaW5nIHNlcXVlbmNlLCB0aG9zZSBwYXJhbWV0ZXJzIGFyZSBjb3BpZWQKCSAgaW50byBTVEFSVFVQSU5GTyBzaGFkb3cgc3RydWN0dXJlcwoJLSBsYXRlciBtb2RpZmljYXRpb24gdG8gdGhvc2UgcGFyYW10ZXJzIGFyZSBub3cgcmVmbGVjdGVkIHRvIHRoZQoJICBSVExfVVNFUl9QUk9DRVNTX1BBUkFNRVRFUlMgc3RydWN0dXJlIChhbmQgU1RBUlRVUElORk8gaXMga2VwdAoJICB1bnRvdWNoZWQpIChmb3IgZXhhbXBsZSwgU3RkSGFuZGxlIHNldHRpbmcpIChXaW4gMmsgYmVoYXZlcyBsaWtlIHRoaXMpCgktIEVOVkRCIGhhcyBiZWVuIHJlbW92ZWQKCS0gY29tbWFuZCBsaW5lIGluaGVyaXRhbmNlIChmcm9tIHVuaXggY29tbWFuZCBsaW5lKSBpcyBub3cgcHVyZWx5IGluIG50ZGxsCgktIGFsbCBrZXJuZWwzMiBlbnZpcm9ubWVudCBmdW5jdGlvbnMgbm93IHJlbHkgb24gdGhlaXIgbnRkbGwgY291bnRlcnBhcnRzCgktIGdvb2RpZXM6IGlucHV0L291dHB1dCBoYW5kbGUgaW5oZXJpdGFuY2Ugd2hpbGUgYXNraW5nIGZvciBhIGRldGFjaGVkCgkgIGNvbnNvbGUgaXMgYmV0dGVyIGhhbmRsZWQ7IGEgZmV3IG1vcmUga2VybmVsMzIgZW52aXJvbm1lbnQgdGVzdHMgbm93CgkgIHBhc3MgOyBzaWxlbmNlZCBhIHZhbGdyaW5kIHdhcm5pbmcgaW4gcHJvY2VzcyBjcmVhdGlvbgoKCSogcHJvZ3JhbXMvd2luZWZpbGUvRW4ucmMsIHByb2dyYW1zL3dpbmVmaWxlL0ZyLnJjLAoJICBwcm9ncmFtcy93aW5lZmlsZS9yc3JjLnJjOgoJU3lsdmFpbiBQZXRyZW9sbGUgPHNwZXRyZW9sbGVAeWFob28uZnI+CglBZGRlZCBGcmVuY2ggdHJhbnNsYXRpb24sIGZpbmlzaGVkIEVuZ2xpc2ggdHJhbnNsYXRpb24uCgoJKiBkb2N1bWVudGF0aW9uL1JFQURNRS5wdDogVG9tIFdpY2tsaW5lIDx0d2lja2xpbmVAc2t5YmVzdC5jb20+CglUcmFubGF0aW9uIG9mIEVuZ2xpc2ggUkVBRE1FIHRvIFBvcnR1Z3Vlc2UuCgoJKiBkbGxzL2RtdXNpYy9kbXVzaWNfbG9hZGVyLmMsIGRsbHMvZG11c2ljL2RtdXNpY19wZXJmb3JtYW5jZS5jLAoJICBkbGxzL2RtdXNpYy9kbXVzaWNfc2VnbWVudC5jOgoJUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CgktIGFkZCBJRGlyZWN0TXVzaWNDb250YWluZXIgc3VwcG9ydCBpbgoJICBJRGlyZWN0TXVzaWNMb2FkZXI4SW1wbDo6TG9hZE9iamVjdEZyb21GaWxlCgktIGRvbid0IHVzZSBJRGlyZWN0TXVzaWNTZWdtZW50KkltcGwgd2hlbiBJRGlyZWN0TXVzaWNTZWdtZW50KjhJbXBsCgkgIGNhbiBiZSB1c2VkIGluc3RlYWQgKGF2b2lkIGNvZGUgZHVwbGljYXRpb24pCgoJKiBkbGxzL2QzZDgvY3ViZXRleHR1cmUuYywgZGxscy9kM2Q4L2QzZDhfcHJpdmF0ZS5oLAoJICBkbGxzL2QzZDgvZGV2aWNlLmMsIGRsbHMvZDNkOC9kcmF3cHJpbS5jLCBkbGxzL2QzZDgvc3RhdGVibG9jay5jLAoJICBkbGxzL2QzZDgvc3VyZmFjZS5jLCBkbGxzL2QzZDgvdGV4dHVyZS5jLCBkbGxzL2QzZDgvdXRpbHMuYywKCSAgZGxscy9kM2Q4L3ZvbHVtZXRleHR1cmUuYzoKCVJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJLSBkc291bmQgYW5kIGQzZCB3b3JrcyBiZXR0ZXIgd2hlbiB4MTFkcnYgbG9ja3MvdW5sb2NrcyBhcmUgY29ycmVjdAoJLSBtb3JlIHRyYWNlcwoKMjAwMy0wNi0xNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbXN2Y3J0L2NwcC5jLCBkbGxzL21zdmNydC9tc3ZjcnQuaCwgZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWMsCgkgIGRsbHMvbXN2Y3J0ZC9tc3ZjcnRkLnNwZWM6CglBZGRlZCBhbiBhc3NlbWJseSB3cmFwcGVyIHRvIHJldHJpZXZlIHRoZSB0aGlzIHBvaW50ZXIgZnJvbSAlZWN4IGZvcgoJX3RoaXNjYWxsIGZ1bmN0aW9ucy4KCUZpeGVkIHNvbWUgYnVncywgYW5kIGFkZGVkIGEgZmV3IG1pc3NpbmcgZnVuY3Rpb25zLgoKCSogZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvY29tcG9ial9wcml2YXRlLmgsIGRsbHMvb2xlMzIvZ2l0LmMsCgkgIGRsbHMvb2xlMzIvb2xlcHJveHkuYzoKCU1pa2UgSGVhcm4gPG1pa2VAdGhlb3JldGljLmNvbT4KCUltcGxlbWVudCBhIGNsYXNzIGZhY3RvcnkgZm9yIHRoZSBHbG9iYWwgSW50ZXJmYWNlIFRhYmxlLgoKCSogZGxscy9jYWJpbmV0L2NhYmV4dHJhY3QuYywgZGxscy9jYWJpbmV0L2NhYmluZXQuaCwgZGxscy9jYWJpbmV0L2ZkaS5jOgoJR3JlZ29yeSBNLiBUdXJuZXIgPGdtdHVybmVyMDA3QGFtZXJpdGVjaC5uZXQ+CgktIG1vdmUgbWFjcm9zIGFuZCBjb25zdGFudHMgaW50byBjYWJpbmV0Lmggd2hlcmUgdGhleSBjYW4gYmUgc2hhcmVkCgkgIGJldHdlZW4gY2FiZXh0cmFjdC5jIGFuZCBmZGkuYwoJLSByZW1pbmRlcnMgdG8gZWxpbWluYXRlIGdsb2JhbCB2YXJpYWJsZXMgKGZvciBtdWx0aXRocmVhZAoJICBjb21wYXRpYmlsaXR5KQoJLSByZW1vdmUgc3RydWN0IGZkaV9jYWI6IGR1ZSB0byB0aGUgbmF0dXJlIG9mIHRoZSBGREkgQVBJLCB3ZSBjYW5ub3QKCSAgcHJlbG9hZCBhbGwgdGhlIGNhYmluZXRzOyB0aGlzIGFwcGVhcnMgdG8gb2J2aWF0ZSB0aGUgbmVlZCBmb3Igc3RydWN0CgkgIGZkaV9jYWIKCS0gIm9wcHJlc3MiICh0aGF0IGlzLCBkbyBub3QgcHJvY2VzcykgcGFydGlhbCBmaWxlcyB3aGljaCB3ZXJlCgkgIGNvbnRpbnVhdGlvbnMgZnJvbSBhbm90aGVyIGNhYmluZXQKCS0gbW9yZSB0aGFuIG9uZSBwYXJ0aWFsIGZpbGUgY2FuIGV4aXN0IGluIGEgc2luZ2xlIGNhYmluZXQgKGhvdyE/KSAtLQoJICBzbyBtb3ZlIHRoZSBwYXJ0aWFsIGZpbGUgbm90aWZpY2F0aW9uIChhbmQgIm9wcHJlc3Npb24iIHRoYXQgZ29lcyB3aXRoCgkgIGl0KSBpbnRvIHRoZSBsb29wIHRoYXQgaXRlcmF0ZXMgdGhyb3VnaCBmaWxlcwoKMjAwMy0wNi0xNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvZG11c2ljL2RtdXNpY19sb2FkZXIuYywgZGxscy9kbXVzaWMvZG11c2ljX21pc2MuYywKCSAgZGxscy9kbXVzaWMvZG11c2ljX3BlcmZvcm1hbmNlLmMsIGRsbHMvZG11c2ljL2RtdXNpY19wcml2YXRlLmg6CglDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglBbGxvY2F0ZSBuZWNlc3NhcnkgZHNvdW5kIGJ1ZmZlcnMgZm9yIHN0YW5kYXJkIGF1ZGlvIHBhdGhzIGFuZCBlbmFibGUKCXJldHJpZXZhbCBvZiB0aGVpciBpbnRlcmZhY2VzIHZpYSBHZXRPYmplY3RJblBhdGguCglGaXggYW5kIGNsZWFuIGRzb3VuZCBhbmQgZG11c2ljcyBvYmplY3RzIGFsbG9jYXRpb24gd2hlbiBpbml0aWFsaXppbmcKCXRoZSBwZXJmb3JtYW5jZSBvYmplY3QuCglTb21lIHN0dWJzIGltcHJvdmVtZW50cy4KCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYzogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gcmV3cm90ZSB0aGUgYnVmZmVyIHRvIGJ1ZmZlciBmYXN0IHBhdGggdXNpbmcgVGV4dHVyZSBlbmdpbmUgKG11Y2gKCSAgZmFzdGVyIG9uIG15IE5WSURJQSBoYXJkd2FyZSkKCS0gc21hbGwgb3B0aW1pemF0aW9ucwoKCSogZGxscy9kaW5wdXQvZGV2aWNlLmMsIGRsbHMvZGlucHV0L2RldmljZV9wcml2YXRlLmgsCgkgIGRsbHMvZGlucHV0L2RpbnB1dC5zcGVjLCBkbGxzL2RpbnB1dC9kaW5wdXRfbWFpbi5jLAoJICBkbGxzL2RpbnB1dC9kaW5wdXRfcHJpdmF0ZS5oLCBkbGxzL2RpbnB1dC9qb3lzdGljay9saW51eC5jLAoJICBkbGxzL2RpbnB1dC9qb3lzdGljay9saW51eGlucHV0LmMsIGRsbHMvZGlucHV0L2tleWJvYXJkL21haW4uYywKCSAgZGxscy9kaW5wdXQvbW91c2UvbWFpbi5jLCBpbmNsdWRlL2RpbnB1dC5oOgoJUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CgktIERJbnB1dCBXaWRlQ2hhciBjbGFzc2VzIHN1cHBvcnQuIFRoaXMgdGltZSBhbGwgZGlucHV0IHZlcnNpb25zIGhhdmUKCSAgd2lkZWNoYXIgY2xhc3Nlcy4KCS0gZml4IGEgc3R1cGlkIGJ1ZyBpbiBjYWxsYmFjayBoYW5kbGluZyBjYXVnaHQgYnkgTGlvbmVsLgoJLSBhZGQgc29tZSBmb3Jnb3R0ZW4gSUlEIG9uIGNsYXNzIGZhY3RvcnkgKGJldHRlciBpZiB3ZSB3YW50IHRvIGFjdGl2ZQoJICB0aGUgY29kZSkKCS0gbWFueSBjbGVhbnVwcyBvbiBDT00gTWFjcm9zIChkb24ndCBuZWVkIEEgYW5kIFcgdmFyaWFudHMgYXMgdGhleSBhcmUKCSAgdGhlIHNhbWUpCgoJKiBkbGxzL2QzZDgvc3VyZmFjZS5jOiBSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCUZpeCBBZGREaXJ0eVJlY3QgdW5jb3JyZWN0IGJlaGF2aW9yIChjcmFzaCBpbiBzb21lIGNhc2VzKS4gQmFzZWQgb24gYQoJcGF0Y2ggZnJvbSBSb2RlcmljayBDb2xlbmJyYW5kZXIuCgoJKiB3aW5lZGVmYXVsdC5yZWc6IFN5bHZhaW4gUGV0cmVvbGxlIDxzcGV0cmVvbGxlQHlhaG9vLmZyPgoJRGlzcGxheSBpY29ucyBvZiBleGVjdXRhYmxlcyBpbiB0aGUgT3BlbkZpbGUgZGlhbG9nIGJveGVzLgoKCSogZGxscy9hZHZhcGkzMi9hZHZhcGkzMi5zcGVjLCBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmMsCgkgIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy9udGRsbC9zZWMuYywgaW5jbHVkZS93aW5udC5oLAoJICBpbmNsdWRlL3dpbnRlcm5sLmg6Cgk8bWFAdGVjaG5vcHJpbnQuY2g+CglBZGRlZCBBZGRBY2Nlc3NBbGxvd2RBY2VFeCwgQWRkQWNjZXNzRGVuaWVkQWNlRXgsIEdldEFjbEluZm9ybWF0aW9uLgoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL21haW4uYywKCSAgZGxscy9kZHJhdy9nbF9hcGkuaCwgZGxscy9kZHJhdy9nbF9wcml2YXRlLmgsIGRsbHMvZGRyYXcvbWVzYS5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gZml4IHNvbWUgcmVncmVzc2lvbnMKCS0gR2V0REMgZG9lcyBub3QgbG9jayBpbiBSZWFkT25seSBtb2RlIGFzIGl0IGxlYWRzIHRvIHByb2JsZW1zIHdpdGgKCSAgc29tZSBEM0Qgb3B0aW1pemF0aW9ucwoJLSBhZGRlZCBhIGZhc3QgQmFjayA9PiBGcm9udCAvIEZyb250ID0+IEJhY2sgQmx0IGZhc3QgcGF0aAoKCSogZGxscy9zZXR1cGFwaS9NYWtlZmlsZS5pbiwgZGxscy9zZXR1cGFwaS9kZXZpbnN0LmMsCgkgIGRsbHMvc2V0dXBhcGkvZGV2aW5zdDE2LmM6CglTdGV2ZW4gRWR3YXJkcyA8U3RldmVuX0VkNDE1M0B5YWhvby5jb20+CglTcGxpdCBXaW4xNi8zMiBzZXR1cGFwaSBkZXZpY2UgaW5zdGFsbGVyIHN1cHBvcnQuCgoJKiBkbGxzL3dpbmluZXQvdXJsY2FjaGUuYywgZGxscy93aW5pbmV0L3dpbmluZXQuc3BlYzoKCU1pa2UgSGVhcm4gPG1pa2VAdGhlb3JldGljLmNvbT4KCVN0dWIgb3V0IFNldFVybENhY2hlRW50cnlJbmZvQS9XLgoKCSogZGxscy9jb21jdGwzMi90cmFja2Jhci5jOiBNaWtlIEhlYXJuIDxtaWtlQHRoZW9yZXRpYy5jb20+CgktIFVuYnJlYWsgdmVydGljYWwgdHJhY2tiYXJzCgktIE1ha2UgaXQgbW9yZSBjbG9zZWx5IHJlc2VtYmxlIHRoZSBuYXRpdmUgY29udHJvbAoJLSBBZGQgZm9jdXMgcmVjdGFuZ2xlCgktIE1pc2MgZml4ZXMgYW5kIGNsZWFudXBzCgoJKiBkbGxzL3NoZWxsMzIvY29udHJvbC5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjOgoJTWlrZSBIZWFybiA8bWlrZUB0aGVvcmV0aWMuY29tPgoJQWRkIHN0dWJzIGZvciBDb250cm9sX0ZpbGxDYWNoZV9SdW5ETEwgYW5zaS91bmljb2RlIHZhcmlhbnRzLgoKCSogZGxscy9pcGhscGFwaS9pcHN0YXRzLmM6IEdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJVW5icmVhayBnZXRUY3BUYWJsZSgpIG9uIExpbnV4LWJhc2VkIHN5c3RlbXMgYW5kIG1ha2UgaXQgd29yayBvbiBCU0QKCWFuZCBTb2xhcmlzIGFzIHdlbGwuCgoJKiBkbGxzL250ZGxsL2NyaXRzZWN0aW9uLmM6IE1pa2UgSGVhcm4gPG1pa2VAdGhlb3JldGljLmNvbT4KCUFkZCB0aGUgSUQgb2YgdGhlIGJsb2NraW5nIHRocmVhZCB0byB0aGUgZXJyb3IgbWVzc2FnZS4KCgkqIGRsbHMvYXZpZmlsMzIvYXZpZmlsZV9TaS5yYywgZGxscy9hdmlmaWwzMi9yc3JjLnJjLAoJICBkbGxzL2NvbW1kbGcvY2RsZ19TaS5yYywgZGxscy9tc3ZpZGVvL21zcmxlMzIvbXNybGVfU2kucmMsCgkgIGRsbHMvbXN2aWRlby9tc3JsZTMyL3JzcmMucmMsIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyLnJjLAoJICBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9TaS5yYywgZGxscy93aW5lcHMvcnNyYy5yYywKCSAgZGxscy93aW5lcHMvd3BzX1NpLnJjLCBkbGxzL3dpbm1tL3dpbm1tX1NpLnJjLCBwcm9ncmFtcy9zdGFydC9TaS5yYywKCSAgcHJvZ3JhbXMvc3RhcnQvcnNyYy5yYywgcHJvZ3JhbXMvd2luaGVscC9TaS5yYzoKCVJvayBNYW5kZWxqYyA8cm9rLm1hbmRlbGpjQGdpbWIub3JnPgoJVXBkYXRlZCBhIGJ1bmNoIG9mIHRyYW5zbGF0aW9ucyBmb3IgU2xvdmVuaWFuIGxhbmd1YWdlLgoKCSogZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL250ZGxsL3BhdGguYywgaW5jbHVkZS93aW50ZXJubC5oOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglJbXBsZW1lbnRlZDoKCS0gUnRsRG9lc0ZpbGVFeGlzdHNfVSBhcyBhIHN0dWIKCS0gUnRsRG9zU2VhcmNoUGF0aF9VCgoJKiBkbGxzL2RkcmF3L2QzZF9wcml2YXRlLmgsIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywKCSAgZGxscy9kZHJhdy9kZHJhdy9tYWluLmMsIGRsbHMvZGRyYXcvbWVzYS5jLAoJICBkbGxzL2RkcmF3L21lc2FfcHJpdmF0ZS5oOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gR0wgc3RhdGUgY2hhbmdlIG9wdGltaXphdGlvbnMKCS0gc29tZSBtb3JlIHByZXBhcmF0aW9ucyBmb3IgR0wtYWNjZWxlcmF0ZWQgQmx0cwoJLSBhZGRlZCBkZWJ1ZyBjb2RlIHRvIGNvbXB1dGUgRlBTIChuaWNlIHdoZW4gYWRkaW5nIG9wdGltaXphdGlvbnMpCgoJKiBkbGxzL25ldGFwaTMyL01ha2VmaWxlLmluLCBkbGxzL25ldGFwaTMyL25ldGFwaTMyLmMsCgkgIGRsbHMvbmV0YXBpMzIvd2tzdGEuYywgaW5jbHVkZS9uYjMwLmg6CglKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglVc2UgaXBobHBhcGkgdG8gZW51bWVyYXRlIExBTiBhZGFwdGVycy4KCUFkZCBuYW1lcyB0byBOZXRCSU9TIHRyYW5zcG9ydHMsIGFuZCBlbGltaW5hdGVzIGxvb3BiYWNrIGFkYXB0ZXJzIGZyb20KCWVudW1lcmF0ZWQgTEFOIGFkYXB0ZXJzLgoKCSogaW5jbHVkZS9zdHJtaWYuaDogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCU1ha2UgdGhlIGhlYWRlciBpbi1saW5lIHdpdGggY3VycmVudCBJQ09NIG5hbWluZyBjb252ZW50aW9ucy4KCgkqIGRsbHMveDExZHJ2L3h2aWRtb2RlLmM6IDxtaXJxQHppZW1uaWFrLnVzdHJvbmllLnB3LmVkdS5wbD4KCUNvcnJlY3QgbW9kZSBuciBwYXNzZWQgdG8gWDExRFJWX1hGODZWTV9TZXRDdXJyZW50TW9kZS4KCgkqIHdpbmVkZWZhdWx0LnJlZzogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUZpeCB0aGUgRmlsdGVyR3JhcGggQ0xTSUQgZGVjbGFyYXRpb24uCgoJKiBkbGxzL2NvbW1kbGcvTWFrZWZpbGUuaW4sIGRsbHMvY29tbWRsZy9maWxlZGxnLmMsCgkgIGRsbHMvY29tbWRsZy9maWxlZGxnLmgsIGRsbHMvY29tbWRsZy9maWxlZGxnMTYuYzoKCVN0ZXZlbiBFZHdhcmRzIDxTdGV2ZW5fRWQ0MTUzQHlhaG9vLmNvbT4KCVNwbGl0IFdpbjE2LzMyIGZpbGUgZGlhbG9ncy4KCgkqIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYywgaW5jbHVkZS90aHJlYWQuaDoKCUp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCVJlbW92ZSBTSUdBTFJNIGhhbmRsZXIuCglSZXNlcnZlIFRFQiBmaWVsZCBmb3IgRFBNSSB2aXJ0dWFsIGludGVycnVwdCBmbGFnLgoKCSogZGxscy93aW5lZG9zL2ludDIxLmMsIG1zZG9zL2ludDIxLmM6IEp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCU1pZ3JhdGUgY3JlYXRlL29wZW4gZmlsZSBmdW5jdGlvbnMgdG8gd2luZWRvcy4KCVNvbWUgZml4ZXMgYmFzZWQgb24gcGF0Y2ggYnkgRmVyZW5jIFdhZ25lci4KCgkqIGRsbHMvd2luZWRvcy9kb3N2bS5jOiBKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglNYWtlIERPU1ZNX1dhaXQgd29yayBpbiBwcm90ZWN0ZWQgbW9kZS4KCVJlcGxhY2UgU0hPVUxEX1BFTkQgbWFjcm8gd2l0aCBhIGZ1bmN0aW9uLgoKCSogaW5jbHVkZS9jb250cm9sLmg6IExpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglNYWtlIHRoZSBoZWFkZXIgaW4tbGluZSB3aXRoIGN1cnJlbnQgSUNPTSBuYW1pbmcgY29udmVudGlvbnMuCgoyMDAzLTA2LTE0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogcHJvZ3JhbXMvd2luZWNvbnNvbGUvY3Vyc2VzLmM6CglGaXhlZCBXQ0NVUlNFU19Jbml0QmFja2VuZCBwcm90b3R5cGUgaW4gdGhlIG5vIGN1cnNlcyBjYXNlLgoKCSogZmlsZXMvZmlsZS5jLCBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsIHNlcnZlci9uYW1lZF9waXBlLmMsCgkgIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci90cmFjZS5jOgoJTWFrZSBpdCBwb3NzaWJsZSB0byByZXRyaWV2ZSBhbiBpbmhlcml0YWJsZSBoYW5kbGUgaW4gb3Blbl9uYW1lZF9waXBlCgkoc3BvdHRlZCBieSBVd2UgQm9ubmVzKS4KCjIwMDMtMDYtMTMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBNYWtlLnJ1bGVzLmluLCBkbGxzL01ha2VkbGwucnVsZXMuaW4sIGRsbHMvTWFrZXRlc3QucnVsZXMuaW4sCgkgIGRsbHMveDExZHJ2L01ha2VmaWxlLmluLCBsaWJzL01ha2VsaWIucnVsZXMuaW4sCgkgIHByb2dyYW1zL01ha2Vwcm9nLnJ1bGVzLmluLCBwcm9ncmFtcy9hdml0b29scy9NYWtlZmlsZS5pbiwKCSAgc2VydmVyL01ha2VmaWxlLmluOgoJUHJvcGVyIHN1cHBvcnQgZm9yIENQUEZMQUdTIGFuZCBMREZMQUdTIChzdWdnZXN0ZWQgYnkgVG9kZCBWaWVybGluZykuCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmM6IExpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIGZpeGVzIHRoZSBDT0xPUkZJTEwgY2FzZSBmb3IgZnJvbnQtYnVmZmVyCgktIHNvbWUgcHJlcGFyYXRpb25zIGZvciBHTC1hY2NlbGVyYXRlZCBCbHRzCgktIHNvbWUgc21hbGwgb3B0aW1pemF0aW9ucyBpbiB0aGUgQ2xlYXIgY29kZQoKCSogZGxscy93aW5lZG9zL2ludDMxLmM6IFN5bHZhaW4gUGV0cmVvbGxlIDxzcGV0cmVvbGxlQHlhaG9vLmZyPgoJVHJhY2Ugd2hpY2ggcmVhbCBtb2RlIGludGVycnVwdCBpcyBlbXVsYXRlZC4KCgkqIGRsbHMvbXN2aWRlby9tc3JsZTMyL21zcmxlMzIuYywgZGxscy9tc3ZpZGVvL21zcmxlMzIvbXNybGVfcHJpdmF0ZS5oOgoJTWljaGFlbCBH/G5uZXdpZyA8TWljaGFlbEd1ZW5uZXdpZ0BnbXguZGU+CgktIEZpeGVkIGVuZCBmbGFncyB3aGlsZSBlbmNvZGluZyAtLSBvbmx5IEVPSSBpbnN0ZWFkIG9mIEVPTCBhbmQgRU9JLgoJLSBGaXhlZCA0LWJpdCBSTEUgZW5jb2Rpbmcgb2Yga2V5ZnJhbWVzLgoJLSBGaXhlZCBzaWduZWQvdW5zaWduZWQgbWlzbWF0Y2hlcy4KCS0gQWRkZWQgc29tZSBtaXNzaW5nIGNvbnN0J3MuCgoJKiBkbGxzL2NhYmluZXQvZmRpLmM6IEdyZWdvcnkgTS4gVHVybmVyIDxnbXR1cm5lcjAwN0BhbWVyaXRlY2gubmV0PgoJLSBtb3N0IG9mIEZESUNvcHkgaXMgbm93IGltcGxlbWVudGVkLCBhbHRob3VnaCB0aGUgYWN0dWFsIGRlY29tcHJlc3Npb24gaXMgbm90LgoJLSAiY2FuIiAtPiAiZG8iCgktIGEgbm92ZWxsYSBhYm91dCBhIGJ1ZwoJLSBmaXggc29tZSBtZW1vcnkgbGVha3MKCgkqIGRsbHMvcmFzYXBpMzIvcmFzYXBpMzIuc3BlYzoKCVJlbW92ZWQgb3JkaW5hbHMgdGhhdCBkaWZmZXIgYmV0d2VlbiBXaW5kb3dzIHZlcnNpb25zLgoKCSogZGxscy9kM2Q4L2QzZDhfcHJpdmF0ZS5oLCBkbGxzL2QzZDgvZGV2aWNlLmMsIGRsbHMvZDNkOC9zdXJmYWNlLmMsCgkgIGRsbHMvZDNkOC91dGlscy5jOgoJSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCUZpeCB0aGUgdGV4dHVyZSBvcGVyYXRpb25zIHRvIHJlc29sdmUgZ2xpdGNoZXMgc2hvd24gaW4gVVQyMDAzIHdoZW4KCWdldCBxdWFkIGRhbWFnZS4KCWNoZWNrR0xjYWxsIG11c3Qgbm90IHN1cHBseSBhIFxuIGFzIHRoYXQgaXMgc3VwcGxpZWQgYnkgaXRzCglleHBhbnNpb24uCglQZXJmb3JtYW5jZSBmaXhlcyB0byBzYXZlIGFwcGx5aW5nIHRoZSBzYW1lIHN0YXRlcyA2IHRpbWVzIGFuZCB0bwoJcmVkdWNlIGZ1bmN0aW9uIGNhbGxzIHdoZW4gYWNjZXNzaW5nIGZyb250L2JhY2sgYnVmZmVycy4KCU1ha2UgdHJhY2VzIG1vcmUgcmVhZGFibGUgYnkgbW9yZSBjb25zdGFudHMgLT4gZW5nbGlzaCBkZXNjcmlwdGlvbnMuCgoJKiBkbGxzL2RtdXNpYy9kbXVzaWNfbG9hZGVyLmMsIGRsbHMvZG11c2ljL2RtdXNpY19tYWluLmMsCgkgIGRsbHMvZG11c2ljL2RtdXNpY19taXNjLmMsIGRsbHMvZG11c2ljL2RtdXNpY19wZXJmb3JtYW5jZS5jLAoJICBkbGxzL2RtdXNpYy9kbXVzaWNfcHJpdmF0ZS5oOgoJUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CgktIGFsd2F5cyB1c2UgSURpcmVjdE11c2ljUGVyZm9ybWFuY2U4SW1wbCBpbnN0ZWFkIG9mCgkgIElEaXJlY3RNdXNpY1BlcmZvcm1hbmNlSW1wbCAoYXMgdGhlIGZpcnN0IGluaGVyaXRzIGZyb20gdGhlIHNlY29uZCkKCS0gaW1wbGVtZW50IG1hbnkgTG9hZGVyLCBBdWRpb1BhdGggYW5kIFBlcmZvcm1hbmNlOCBzdHVicyAtIGZpeCB0aGUKCSAgY2xhc3MgZmFjdG9yeQoJLSBtb3JlIGRlYnVnIHRyYWNlcwoJLSBmb3Igbm93IElEaXJlY3RNdXNpY0xvYWRlcjg6OkxvYWRPYmplY3RGcm9tRmlsZSBhbHdheXMgcmV0dXJucyBub3QKCSAgc3VwcG9ydGVkIGZvcm1hdAoJLSBmaXggdGhlIElEaXJlY3RNdXNpY1BlcmZvcm1hbmNlODo6SW5pdCAobWFueSBjcmFzaGVzKQoJLSBpbXBsZW1lbnRhdGlvbiBvZiBJRGlyZWN0TXVzaWNQZXJmb3JtYW5jZThJbml0QXVkaW8KCgkqIGRsbHMvZGlucHV0L2RldmljZS5jLCBkbGxzL2RpbnB1dC9kaW5wdXRfbWFpbi5jLAoJICBkbGxzL2RpbnB1dC9kaW5wdXRfcHJpdmF0ZS5oLCBkbGxzL2RpbnB1dC9qb3lzdGljay9saW51eC5jLAoJICBkbGxzL2RpbnB1dC9qb3lzdGljay9saW51eGlucHV0LmMsIGRsbHMvZGlucHV0L2tleWJvYXJkL21haW4uYywKCSAgZGxscy9kaW5wdXQvbW91c2UvbWFpbi5jLCBpbmNsdWRlL2RpbnB1dC5oOgoJQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJTWFrZSBkaW5wdXQ4IGJlaGF2aW91ciBtb3JlIGNvcnJlY3QgZm9yIG1vdXNlIGFuZCBrZXlib2FyZC4KCUZpeCBzbWFsbCBidWcgd2hlbiBrZXlib2FyZCBidWZmZXIgb3ZlcmZsb3dzLgoJVXNlIERJX09LIGluc3RlYWQgb2YgMCBmb3IgcmV0dXJuZWQgdmFsdWVzLgoKCSogZGxscy9kZHJhdy9kM2RleGVjdXRlYnVmZmVyLmM6CglDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglGaXggbWF0cml4IG11bHRpcGxpY2F0aW9uLgoKCSogZGxscy9jYWJpbmV0L2NhYmluZXQuaDogR3JlZ29yeSBNLiBUdXJuZXIgPGdtdHVybmVyMDA3QGFtZXJpdGVjaC5uZXQ+CglGaXggc29tZSB1Z2xpZXMuCgoJKiBkbGxzL3gxMWRydi9rZXlib2FyZC5jOiBTeWx2YWluIFBldHJlb2xsZSA8c3BldHJlb2xsZUB5YWhvby5mcj4KCUFkZGVkIEV1cm8gYW5kIGFudGlxdW90ZSB0byB0aGUgRnJlbmNoIGtleWJvYXJkIGxheW91dC4KCgkqIGRsbHMvZDNkOC9kaXJlY3R4LmM6IEphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglXaGVuIGVtdWxhdGluZyBmdWxsc2NyZWVuIGl0IGhlbHBzIHRvIG5vdCBhbGxvY2F0ZSBzcGFjZSBmb3IgbWVudSBiYXJzCglhbmQgYm9yZGVycy4gTWFrZSB0aGlzIHdpbmRvdyBhIHBvcHVwIHdpbmRvdy4KCgkqIGRsbHMvcmFzYXBpMzIvcmFzYXBpMzIuc3BlYywgaW5jbHVkZS9yYXMuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQWRkIHN0dWJzIGZvciBSYXNEZWxldGVTdWJFbnRyeSogKG5ldyBpbiBXaW5NZS9XaW5YUCkuCglBZGQgcHJvdG90eXBlcyBmb3IgUmFzRGVsZXRlRW50cnkqIGFuZCBSYXNEZWxldGVTdWJFbnRyeSogaW4gcmFzLmguCgoJKiBkbGxzL2QzZDgvTWFrZWZpbGUuaW4sIGRsbHMvZDNkOC9kM2Q4X3ByaXZhdGUuaCwKCSAgZGxscy9kM2Q4L2QzZGNvcmVfZ2wuaCwgZGxscy9kM2Q4L2RldmljZS5jLCBkbGxzL2QzZDgvZHJhd3ByaW0uYywKCSAgZGxscy9kM2Q4L3NoYWRlci5jLCBkbGxzL2QzZDgvc3VyZmFjZS5jLCBkbGxzL2QzZDgvdXRpbHMuYywKCSAgZGxscy9kM2Q4L3ZzaGFkZXJkZWNsYXJhdGlvbi5jOgoJSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCU1ha2UgdGhlIGZpeGVkIGZ1bmN0aW9uIHBpcGVsaW5lIHN1cHBvcnQgbXVsdGlwbGUgc3RyZWFtcyBmb3IgY3JlYXRlZAoJdmVydGV4IHNoYWRlcnMgd2l0aCBubyBmdW5jdGlvbiBzdXBwbGllZC4gQWxzbyBzcGxpdCBkb3duIGRyYXcKCXByaW1pdGl2ZSBhbG9uZyB0aGUgbGluZXMgb2YgdGhlIGQzZGNvcmUgcmVxdWlyZW1lbnRzIGFuZCBwdXQgaW4gc29tZQoJZGlhZ25vc3RpYyBhaWRzLgoKCSogZGxscy9jb21tZGxnL01ha2VmaWxlLmluLCBkbGxzL2NvbW1kbGcvY29sb3JkbGcuYywKCSAgZGxscy9jb21tZGxnL2NvbG9yZGxnLmgsIGRsbHMvY29tbWRsZy9jb2xvcmRsZzE2LmM6CglTdGV2ZW4gRWR3YXJkcyA8U3RldmVuX0VkNDE1M0B5YWhvby5jb20+CglTcGxpdCBXaW4xNi8zMiBjb2xvciBkaWFsb2cgc3VwcG9ydC4KCVN1cHBvcnRpbmcgY29tcGlsaW5nIG91dCAxNiBiaXQgZmluZCBkaWFsb2cgc3VwcG9ydC4KCgkqIGluY2x1ZGUvd2luc29jay5oOiBZb3JpY2sgSGFyZHkgPHloQG1ldHJvd2ViLmNvLnphPgoJSW5jbHVkZSB0aW1lLmggaW5zdGVhZCBvZiBzeXMvdGltZS5oLgoKCSogZGxscy9xdWFydHovTWFrZWZpbGUuaW4sIGRsbHMvcXVhcnR6L2ZpbHRlcmdyYXBoLmMsCgkgIGRsbHMvcXVhcnR6L21haW4uYywgZGxscy9xdWFydHovcXVhcnR6X3ByaXZhdGUuaCwKCSAgaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9jb250cm9sLmgsIGluY2x1ZGUvZHNob3cuaCwKCSAgaW5jbHVkZS9zdHJtaWYuaCwgaW5jbHVkZS91dWlkcy5oLCB3aW5lZGVmYXVsdC5yZWc6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJU3R1YmJlZCBzb21lIGludGVyZmFjZXMgZm9yIHRoZSBGaWx0ZXJHcmFwaCBDTFNJRC4KCgkqIGRsbHMvd2luZWRvcy9pbnQyMS5jLCBtc2Rvcy9pbnQyMS5jOiBKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglNb3ZlIGdldCBjdXJyZW50IGRpcmVjdG9yeSBhbmQgc2V0IGN1cnJlbnQgZGlyZWN0b3J5IGludDIxCglzdWJmdW5jdGlvbnMgaW50byB3aW5lZG9zLiBGaXggcXVpdGUgYSBmZXcgYnVncyBpbiB0aGUgaW1wbGVtZW50YXRpb24KCW9mIHRoZXNlIGZ1bmN0aW9ucy4KCgkqIGRsbHMvY2FiaW5ldC9jYWJpbmV0LmgsIGRsbHMvY2FiaW5ldC9mZGkuYzoKCUdyZWdvcnkgTS4gVHVybmVyIDxnbXR1cm5lcjAwN0BhbWVyaXRlY2gubmV0PgoJLSBpbXBsZW1lbnQgRkRJe0NyZWF0ZSxEZXN0cm95LElzQ2FiaW5ldH0KCS0gZml4IGEgdHlwbwoJLSBkdXBsaWNhdGUgYSBidWcKCS0gc29tZSBibGF0aGVyaW5nIGFib3V0IGNvZGUgZHVwbGljYXRpb24KCS0gY2hhbmdlIGZkaS5jIGluZGVudGF0aW9uIHRvIGJlIGNvbnNpc3RlbnQgd2l0aCBjYWJleHRyYWN0LmMKCgkqIGRsbHMvb2xlYXV0MzIvc2FmZWFycmF5LmMsIGRsbHMvb2xlYXV0MzIvdGVzdHMvc2FmZWFycmF5LmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIGluZGV4IGhhbmRsaW5nIGZvciBtdWx0aSBkaW1lbnNpb25hbCBhcnJheXMuCgoJKiBCVUdTOiBUb20gV2lja2xpbmUgPHR3aWNrbGluZUBza3liZXN0LmNvbT4KCS0gY29zbWV0aWMgZml4ZXMKCS0gcmVtb3ZlIG9ic29sZXRlIGxpbmsKCgkqIHdpbmVkZWZhdWx0LnJlZzogU3lsdmFpbiBQZXRyZW9sbGUgPHNwZXRyZW9sbGVAeWFob28uZnI+CglTaG93IHRoYXQgVENQL0lQIGlzIGluc3RhbGxlZCB0byB3aW5kb3dzIGFwcHMsIGxpa2Ugd2luaXBjZmcuCgoJKiBkbGxzL250ZGxsL2Nkcm9tLmMsIGluY2x1ZGUvZmlsZS5oLCBpbmNsdWRlL250ZGRzY3NpLmgsCgkgIHdpbjMyL2RldmljZS5jOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglBZGRlZCBzdXBwb3J0IGZvciBvdmVybGFwcGVkIGlvY3RsIHJlcXVlc3RzIChhbmQgYSBmZXcgb3RoZXIKCWNvc21ldGljcykuCgoJKiBwcm9ncmFtcy93aW5lY29uc29sZS9jdXJzZXMuYywgcHJvZ3JhbXMvd2luZWNvbnNvbGUvdXNlci5jLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uX3ByaXZhdGUuaCwKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbnNvbGUuYzoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJSWYgKG4pY3Vyc2VzIHdhc24ndCBhdmFpbGFibGUgYXQgY29tcGlsZSB0aW1lOgoJLSBwcmludCBzZW5zaWJsZSBpbmZvcm1hdGlvbgoJLSBmYWxsIGJhY2sgdG8gdXNlciBiYWNrZW5kCgoJKiBkbGxzL2RpbnB1dC9kZXZpY2UuYzogUGF1bCBCYWluIDxwcmJhaW5AZXNzZXguYWMudWs+CglQdXQgSUlEX0lEaXJlY3RJbnB1dERldmljZTJBIGJhY2sgaW4KCUlEaXJlY3RJbnB1dERldmljZTJBSW1wbF9RdWVyeUludGVyZmFjZS4KCgkqIGRsbHMvZGRyYXcvZHN1cmZhY2UvbWFpbi5jOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJQmUgbW9yZSBzdHJpbmdlbnQgaW4gdGhlICdMb2NrJyBpbnZhbGlkIFJFQ1QgY2hlY2suCgoJKiBkbGxzL29wZW5nbDMyL21ha2Vfb3BlbmdsLCBkbGxzL29wZW5nbDMyL29wZW5nbF9leHQuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglVcGdyYWRlIE9wZW5HTCB0aHVua3Mgd2l0aCBsYXRlc3QgdmVyc2lvbiBvZiBPcGVuR0wgZXh0ZW5zaW9uCglyZWdpc3RyeS4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOiBSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJLSBNYWtlIGJ1dHRvbiB0ZXh0IGNlbnRyZSBjb3JyZWN0bHkgd2hlbiBkcm9wZG93biBhcnJvdyBpcyBwcmVzZW50CgktIENlbnRyZSBkcm9wZG93biBhcnJvdwoKCSogZGxscy9wc2FwaS9wc2FwaS5zcGVjLCBkbGxzL3NoZG9jdncvc2hkb2N2dy5zcGVjLAoJICBkbGxzL3dpbnRydXN0L3dpbnRydXN0LnNwZWM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFkZCBzdHVicyBmb3Igc29tZSBuZXcgV2luWFAgQVBJcy4KCgkqIGRsbHMvdXJsbW9uL3VybG1vbi5zcGVjLCBpbmNsdWRlL3VybG1vbi5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBZGQgYSBzdHViIGZvciBDb21wYXJlU2VjdXJpdHlJZHMgKG5ldyBpbiBXaW5YUCkuCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmM6IExpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglGaXggdGhlIEJMVCBDT0xPUl9GSUxMIGNhc2UuCgoJKiBkbGxzL3dpbmVkb3MvTWFrZWZpbGUuaW4sIGRsbHMvd2luZWRvcy9kb3N2bS5jLCBkbGxzL3dpbmVkb3MvdGltZXIuYzoKCUp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCVNwbGl0IHRpbWVyIGNvZGUgaW50byBzZXBhcmF0ZSBzb3VyY2UgZmlsZS4KCVN0b3AgdXNpbmcgU0lHQUxSTSBmb3IgdGltZXJzLgoKCSogZGxscy9jYWJpbmV0L2NhYmV4dHJhY3QuYywgZGxscy9jYWJpbmV0L2NhYmluZXQuaDoKCUdyZWdvcnkgTS4gVHVybmVyIDxnbXR1cm5lcjAwN0BhbWVyaXRlY2gubmV0PgoJLSBwYXJhbm9pYTogZWxpbWluYXRlIHNvbWUgZ2xvYmFsIHZhcmlhYmxlcwoJLSBiZXR0ZXIgcmVtaW5kZXIgb24gaG93IHRvIGZpeCBtZW1vcnkgbGVha3MKCjIwMDMtMDYtMDcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2RtdXNpYy9kbXVzaWMuYywgZGxscy9kbXVzaWMvZG11c2ljX2luc3RydW1lbnQuYywKCSAgZGxscy9kbXVzaWMvZG11c2ljX2xvYWRlci5jLCBkbGxzL2RtdXNpYy9kbXVzaWNfbWFpbi5jLAoJICBkbGxzL2RtdXNpYy9kbXVzaWNfbWlzYy5jLCBkbGxzL2RtdXNpYy9kbXVzaWNfcGVyZm9ybWFuY2UuYywKCSAgZGxscy9kbXVzaWMvZG11c2ljX3BsdWdpbnMuYywgZGxscy9kbXVzaWMvZG11c2ljX3BvcnQuYywKCSAgZGxscy9kbXVzaWMvZG11c2ljX3ByaXZhdGUuaCwgZGxscy9kbXVzaWMvZG11c2ljX3NlZ21lbnQuYywKCSAgZGxscy9kbXVzaWMvZG11c2ljX3N0eWxlLmMsIGRsbHMvZG11c2ljL2RtdXNpY19zeW50aC5jOgoJUm9rIE1hbmRlbGpjIDxyb2subWFuZGVsamNAZ2ltYi5vcmc+CgktIGFkZGVkIGRlYnVnCgktIGltcGxlbWVudGVkIGZha2UgbWlkaSAmIHBlcmZvcm1hbmNlIGNoYW5uZWxzCgktIGltcGxlbWVudGVkIHNvbWUgSURpcmVjdE11c2ljKjgqIGZ1bmN0aW9ucyB3aGVyZSBJRGlyZWN0TXVzaWMqCgkgIGVxdWl2YWxlbnQgZXhpc3RzCgktIElEaXJlY3RNdXNpYyo4IGludGVyZmFjZXMgY2FuIG5vdyBiZSBvYnRhaW5lZCBmcm9tIElEaXJlY3RNdXNpYwoJICBpbnRlcmZhY2VzIChRdWVyeUludGVyZmFjZS4uLikKCS0gY2hhbm5lbC1yZWxhdGVkIHBlcmZvcm1hbmNlIGZ1bmN0aW9ucyBhcmUga2luZGEgaW1wbGVtZW50ZWQgbm93CgoJKiBncmFwaGljcy9wYWludGluZy5jOiBBcmplbiBOaWVuaHVpcyA8YXJqZW5Abmllbmh1aXNiZWhlZXIubmw+CglOZXcgaW1wbGVtZW50YXRpb24gb2YgR2RpR3JhZGllbnRGaWxsIHVzaW5nIGludGVnZXIgbWF0aC4KCgkqIGRsbHMvZGlucHV0L21vdXNlL21haW4uYzogQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJRml4IFNldERhdGFGb3JtYXQgYW5kIGltcGxlbWVudCBHZXREZXZpY2VJbmZvIGZvciBtb3VzZSBkZXZpY2UuCgoJKiBkb2N1bWVudGF0aW9uL3NhbXBsZXMvY29uZmlnOiBNaWtlIEhlYXJuIDxtaWtlQHRoZW9yZXRpYy5jb20+CglBZGQgYSBkcml2ZSBtYXBwaW5nIGZvciByb290IHRvIHRoZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gZmlsZS4KCgkqIHRvb2xzL3dpbmVpbnN0YWxsOiBNaWtlIEhlYXJuIDxtaWtlQHRoZW9yZXRpYy5jb20+CglDaGVjayBmb3IgL2xpYi90bHMgZGlyZWN0b3J5IGZvciBSZWQgSGF0IDkuCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmM6CglLZXN0ZXIgTWFkZG9jayA8Q2hyaXN0b3BoZXIuTWFkZG9jay4xQHVuaS5tYXNzZXkuYWMubno+CglDaGVjayBmb3IgYSBudWxsIHBvaW50ZXIgaW4gV1Nfc2V0c29ja29wdC4KCgkqIGRsbHMvdXNlci9kZGUvbWlzYy5jOiBNaWtlIEhlYXJuIDxtaWtlQHRoZW9yZXRpYy5jb20+CglQcm90ZWN0IFdETUxfR2V0Q29udiBhZ2FpbnN0IG51bGwgaGFuZGxlcy4KCgkqIGRsbHMvY29tbWRsZy9NYWtlZmlsZS5pbiwgZGxscy9jb21tZGxnL2ZvbnRkbGcuYywKCSAgZGxscy9jb21tZGxnL2ZvbnRkbGcuaCwgZGxscy9jb21tZGxnL2ZvbnRkbGcxNi5jOgoJU3RldmVuIEVkd2FyZHMgPFN0ZXZlbl9FZDQxNTNAeWFob28uY29tPgoJU2VwYXJhdGUgV2luMTYgYW5kIFdpbjMyIGZvbnQgZGlhbG9nIHN1cHBvcnQuCgoJKiBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmM6IEVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJQ29ycmVjdGx5IGNvbnZlcnQgaW50byBFWENFUFRJT05fUkVDT1JEIFNJR1RSQVBzIHJlY2VpdmVkIGZyb20KCURlYnVnQnJlYWtQcm9jZXNzLgoKMjAwMy0wNi0wNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jLCBkbGxzL3dpbmluZXQvd2luaW5ldC5zcGVjOgoJU3lsdmFpbiBQZXRyZW9sbGUgPHNwZXRyZW9sbGVAeWFob28uZnI+CglJbXBsZW1lbnRlZCB3aW5pbmV0LkludGVybmV0R2V0Q29ubmVjdGVkU3RhdGVFeC4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUFsaWduIHRoZSB0ZXh0IHZlcnRpY2FsbHkgaW4gc2luZ2xlIGxpbmUgbGFiZWxzIChzcG90dGVkIGJ5IEJpR2dVbikuCgoJKiBkbGxzL2QzZDgvZDNkOF9wcml2YXRlLmgsIGRsbHMvZDNkOC9kM2Rjb3JlX2dsLmgsIGRsbHMvZDNkOC9kZXZpY2UuYywKCSAgZGxscy9kM2Q4L2RpcmVjdHguYywgZGxscy9kM2Q4L3V0aWxzLmM6CglSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCUZpeGVkIGNvbXBpbGF0aW9uIHByb2JsZW1zLgoKCSogZGxscy9tc3ZjcnQvbG9jYWxlLmMsIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjOgoJTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCVN0dWIgaW1wbGVtZW50YXRpb24gZm9yIF9HZXR0bmFtZXMuCgoJKiBkbGxzL2tlcm5lbC9zeW5jLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFsd2F5cyByZXR1cm4gRkFMU0Ugd2hlbiBkb2luZyBhbiBvdmVybGFwcGVkIENvbm5lY3ROYW1lZFBpcGUuCgoJKiBvYmplY3RzL3RleHQuYzogSW5nbWFyIFRoaWVtYW5uIDxpbmdtYXJAZ2VmYXMuY29tPgoJSW1wbGVtZW50ZWQgUG9seVRleHRPdXRBL1BvbHlUZXh0T3V0Vy4KCgkqIGRsbHMvc2hlbGwzMi9icnNmb2xkZXIuYywgaW5jbHVkZS9zaGxvYmouaDoKCVJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CgktIFN1cHBvcnQgYSBmZXcgbW9yZSBmbGFncwoJLSBSZXdyaXRlIHRoZSBlbnVtZXJhdGlvbiBsb29wCgktIFN1cHBvcnQgbm9uLWRlc2t0b3Agcm9vdAoJLSBTaWxlbmNlIGhhcm1sZXNzIGFuZCBpbXBsZW1lbnRlZCBkZWJ1ZyBtZXNzYWdlcwoKCSogZGxscy93aW5lZG9zL2Rvc2V4ZS5oLCBkbGxzL3dpbmVkb3MvZG9zdm0uYzoKCUp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCVBlbmRpbmcgdGltZXIgaW50ZXJydXB0cyBubyBsb25nZXIgZGVhZGxvY2sgRE9TVk1fV2FpdC4KCVJlc3RvcmVkIGludGVycnVwdCBwcmlvcml0aWVzIHRvIGNvcnJlY3QgdmFsdWVzLgoKMjAwMy0wNi0wNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywgZGxscy9kZHJhdy9tZXNhLmMsCgkgIGRsbHMvZGRyYXcvbWVzYV9wcml2YXRlLmg6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSBmaXggdGhlIHRleHR1cmUgdXBsb2FkIGNvZGUgd2hlbiBSRUNUIGlzIGFjdHVhbGx5IHVzZWQKCS0gb3B0aW1pemUgRkIgTG9ja3MgLyBVbmxvY2tzIHdoZW4gUkVDVHMgYXJlIHVzZWQKCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21haW4uYywgZGxscy9kZHJhdy9kM2R2aWV3cG9ydC5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gVmlld3BvcnQgaGFjayB0byBnZXQgc29tZSBvbGQgRDNEMSBnYW1lcyB0byB3b3JrCgktIFRSQUNFaW5nIGZpeAoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLCBkbGxzL2RkcmF3L21lc2EuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIHNtYWxsIFRSQUNFaW5nIGZpeAoJLSBmaXggYnVnIGluIHRleHR1cmUgdXBsb2FkIChJIHdvbmRlciBob3cgSSBtaXNzZWQgdGhpcyA6LS8gKQoJLSBpbXByb3ZlIHRoZSBEM0QxLzIgdGV4dHVyZSBtYXBwaW5nIG1vZGVzCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsIGRsbHMvZGRyYXcvZDNkbGlnaHQuYywKCSAgZGxscy9kZHJhdy9kM2R0ZXh0dXJlLmMsIGRsbHMvZGRyYXcvbWVzYS5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gZml4IChzdHVwaWQpIHJlZ3Jlc3Npb25zIGludHJvZHVjZWQgYnkgbGFzdCBzZXJpZXMgb2YgcGF0Y2gKCS0gMjQgYnBwIGhhbmRsaW5nIGZvciBsb2NrIC8gdW5sb2NrIGNvZGUKCS0gc29tZSBiZXR0ZXIgY2hlY2tzIGZvciBBbHBoYVBpeGVsIHZhbHVlCgktIGJldHRlciBUUkFDRWluZyB0byBiZXR0ZXIgY2F0Y2ggdGhyZWFkaW5nIHByb2JsZW1zCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsIGRsbHMvZGRyYXcvZDNkdGV4dHVyZS5jLAoJICBkbGxzL2RkcmF3L21lc2FfcHJpdmF0ZS5oOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gc29tZSBHTCBjcml0aWNhbCBzZWN0aW9uIGZpeGVzCgktIG9ubHkgYmluZCB0ZXh0dXJlcyBhdCBzdGFydCBvZiByZW5kZXJpbmcKCS0gb3B0aW1pemVkIHRoZSB0ZXh0dXJlIHBhcmFtZXRlciBjb2RlCgktIG9wdGltaXplIG9mIHRoZSAnZGlydHkgY2hlY2tpbmcgY29kZScgZm9yIG1pcG1hcHBpbmcKCS0gaGFuZGxlcyB0aGUgTUFYTUlQTEVWRUwgdGV4dHVyZSBwYXJhbWV0ZXIKCgkqIGRsbHMvZGRyYXcvZDNkX3ByaXZhdGUuaCwgZGxscy9kZHJhdy9kM2RleGVjdXRlYnVmZmVyLmMsCgkgIGRsbHMvZGRyYXcvZDNkbGlnaHQuYywgZGxscy9kZHJhdy9kM2RtYXRlcmlhbC5jLAoJICBkbGxzL2RkcmF3L2QzZHRleHR1cmUuYywgZGxscy9kZHJhdy9kM2R2ZXJ0ZXhidWZmZXIuYywKCSAgZGxscy9kZHJhdy9kM2R2aWV3cG9ydC5jLCBkbGxzL2RkcmF3L2RkcmF3X3ByaXZhdGUuaCwKCSAgZGxscy9kZHJhdy9tZXNhLmMsIGRsbHMvZGRyYXcvbWVzYV9wcml2YXRlLmgsCgkgIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21haW4uYywgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLAoJICBkbGxzL2RkcmF3L2RkcmF3L21haW4uYywgZGxscy9kZHJhdy9kaXJlY3QzZC9tYWluLmMsCgkgIGRsbHMvZGRyYXcvZGlyZWN0M2QvbWFpbi5oLCBkbGxzL2RkcmF3L2RpcmVjdDNkL21lc2EuYywKCSAgZGxscy9kZHJhdy9kc3VyZmFjZS9mYWtlemJ1ZmZlci5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL21haW4uYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIHByb3BlciAodGVzdGVkIG9uIFdpbjJLKSByZWZlcmVuY2UgY291bnRpbmcgZm9yIERpcmVjdDNEIG9iamVjdAoJLSBmaXggb25lIGNhc2Ugb2YgcmVmZXJlbmNlIGNvdW50aW5nIG9uIHRleHR1cmVzCgktIGZpeCBzdHVwaWQgYnVnIGluIHRleHR1cmUgdXBsb2FkIGNvZGUKCS0geWV0IGFub3RoZXIgdGV4dHVyZSBlbnVtZXJhdGlvbiByZW9yZGVyaW5nCgoJKiBkbGxzL2RkcmF3L2QzZHRleHR1cmUuYzogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUZpeGVkIGEgYnVnIGluIHRoZSBGcmFtZUJ1ZmZlciA9PiBUZXh0dXJlIGJsaXRzLgoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLCBkbGxzL2RkcmF3L2QzZHRleHR1cmUuYywKCSAgZGxscy9kZHJhdy9tZXNhLmMsIGRsbHMvZGRyYXcvbWVzYV9wcml2YXRlLmg6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSBhZGRlZCBSRUNUIHN1cHBvcnQgdG8gdGhlIHRleHR1cmUgdXBsb2FkIGNvZGUKCS0gdXNlIHRoZSBjb21tb24gY29kZSBmb3IgdGhlIEZCIFVubG9jayBjb2RlCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsIGRsbHMvZGRyYXcvZDNkdGV4dHVyZS5jLAoJICBkbGxzL2RkcmF3L21lc2EuYywgZGxscy9kZHJhdy9tZXNhX3ByaXZhdGUuaDoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIHNvbWUgY2xlYW4tdXBzIChleHRlbnNpb24gY29kZSB0byBiZSBhZGRlZCBzb29uKQoJLSBzb21lIGludGVyZmFjZSBjaGFuZ2VzIGZvciBmdXR1cmUgcmV1c2UgZm9yIEJsdCAvIExvY2sgY29kZQoJLSBmaXhlZCBzb21lIFBpdGNoIHByb2JsZW1zIGluIHRleHR1cmUgdXBsb2FkcyAobW9zdGx5IGZvciAnc21hbGwnCgkgIG1pcC1tYXBwaW5nIGxldmVscykKCgkqIGRsbHMvZGRyYXcvZDNkdGV4dHVyZS5jLCBkbGxzL2RkcmF3L21lc2EuYywKCSAgZGxscy9kZHJhdy9tZXNhX3ByaXZhdGUuaDoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglSZWZhY3RvcmluZyBvZiB0aGUgdGV4dHVyZSB1cGxvYWQgY29kZS4KCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYzogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUZpeCB0ZXh0dXJlIHBhcmFtZXRlcnMgaGFuZGxpbmcgb24gdGV4dHVyZSBjaGFuZ2UuCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsIGRsbHMvZGRyYXcvbWVzYS5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gcmVtb3ZlIHNvbWUgZXh0cmFuZW91cyBzYXZpbmcgb2YgdGhlIHJlYWQgYnVmZmVyIHNldHRpbmdzCgktIGNsZWFuZWQtdXAgdGhlIEdMIC8gZGV2aWNlIGNyaXRpY2FsIHNlY3Rpb24gaGFuZGxpbmcKCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywgZGxscy9kZHJhdy9kM2RleGVjdXRlYnVmZmVyLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSBwcm90ZWN0IHZpZXdwb3J0IHNldHRpbmcgd2l0aCBHTCBsb2NrCgktIG5vIG5lZWQgYW55bW9yZSB0byBmbHVzaCB0byBGQiBvbiBleGVjdXRlIGJ1ZmZlciBjYWxsaW5nCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsIGRsbHMvZGRyYXcvZDNkdGV4dHVyZS5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCVNvbWUgdGhyZWFkaW5nIGZpeGVzIChwcmV2ZW50cyBzb21lIGRlYWQtbG9ja3MpLgoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLCBkbGxzL2RkcmF3L2QzZHRleHR1cmUuYywKCSAgZGxscy9kZHJhdy9nbF9hcGkuaCwgZGxscy9kZHJhdy9nbF9wcml2YXRlLmgsCgkgIGRsbHMvZGRyYXcvbWVzYV9wcml2YXRlLmg6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSBpbXBsZW1lbnQgRkIgPT4gVGV4dHVyZSBibGl0cwoJLSBmaXggY29tcGlsYXRpb24gb24gbm9uLXJlY2VudCBnbGV4dC5oIHN5c3RlbXMKCgkqIGRsbHMvZDNkOC9iYXNldGV4dHVyZS5jLCBkbGxzL2QzZDgvY3ViZXRleHR1cmUuYywKCSAgZGxscy9kM2Q4L2QzZDhfcHJpdmF0ZS5oLCBkbGxzL2QzZDgvZGV2aWNlLmMsIGRsbHMvZDNkOC9kaXJlY3R4LmMsCgkgIGRsbHMvZDNkOC9zdXJmYWNlLmMsIGRsbHMvZDNkOC90ZXh0dXJlLmMsIGRsbHMvZDNkOC92b2x1bWUuYywKCSAgZGxscy9kM2Q4L3ZvbHVtZXRleHR1cmUuYzoKCVJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJLSBjbGVhbmluZyBvZiB2b2x1bWUuYy92b2x1bWV0ZXh0dXJlLmMgYXMgZG9uZSBwcmV2aW91c2x5IGZvcgoJICBzdXJmYWNlLmMvKnRleHR1cmUuYyAod2l0aCBhZGQgb2YgbG9ja2FibGUsIGxvY2tlZCBhbmQgRGlydHkgZmxhZ3MpCgktIGFkZCBvZiBkaXJ0eVJlY3QvZGlydHlCb3ggZm9yIGJldHRlciBkaXJ0aWZpY2F0aW9uIG1hbmFnZW1lbnQgKG5vdAoJICB1c2VkIHlldCwgYnV0IGh1Z2Ugb3B0aW1pc2F0aW9uIGNhbiBiZSBwb3NzaWJsZSBub3cpCgktIGZpeCBzb21lIGRlYnVnIHRyYWNlcyAod2VsbCBpdCdzIGJldHRlciB0byB1c2UgZGVidWdfZDNkcG9vbCkKCS0gZml4IHNvbWUgc3R1cGlkIHJlZ3Jlc3Npb24gb24gcG9pbnQgcGFyYW1ldGVycyAoZm9yZ290IHRvIGNoZWNrCgkgIGV4dGVuc2lvbiBvbiBmaWxsY2FwcykKCgkqIGRsbHMvZDNkOC9kM2Q4X3ByaXZhdGUuaCwgZGxscy9kM2Q4L2QzZGNvcmVfZ2wuaCwgZGxscy9kM2Q4L2RldmljZS5jLAoJICBkbGxzL2QzZDgvZGlyZWN0eC5jOgoJUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CgktIGFkZCBhIG5ldyBwcml2YXRlIGhlYWRlciBkM2Rjb3JlX2dsLmggdGhhdCBkZWNsYXJlcyBuZWVkZWQgb3BlbmdsCgkgIGRlZmluZXMgYW5kIHRoZSBjYXBzIGRlZmluZXMKCS0gY2xlYW51cCBvZiBkZXZpY2UuYyB1c2luZyB0aGUgY2FwcyBkZWZpbmVzIChhdm9pZCB0aGUgI2lmZGVmCgkgIG5pZ3RobWFyZSkKCS0gYWRkIHtTZXQsR2V0fUdhbW1hUmFtcCBzdXBwb3J0CgoJKiBkbGxzL2QzZDgvZDNkOF9wcml2YXRlLmgsIGRsbHMvZDNkOC9kZXZpY2UuYywgZGxscy9kM2Q4L2RpcmVjdHguYywKCSAgZGxscy9kM2Q4L3N1cmZhY2UuYywgZGxscy9kM2Q4L3N3YXBjaGFpbi5jOgoJUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CgktIHNvbWUgY2xlYW51cCBhbmQgd2FybmluZyBmaXhlcwoJLSBzcGxpdCBvZiBDcmVhdGVEZXZpY2UgZ2wvZ3hsIGRldGVjdGlvbiBjb2RlIGludG8gRmlsbEdMQ2FwcwoJLSBpbXBsZW1lbnRhdGlvbiBvZiByZXNvbHV0aW9uIGNoYW5nZSAodXNpbmcgQ2hhbmdlRGlzcGxheVNldHRpbmdzKQoJICBidXQgZGVzYWN0aXZlZCBhcyBDaGFuZ2VEaXNwbGF5U2V0dGluZ3MgZG9uJ3Qgc2VlbSB0byB3b3JrIHdlbGwKCS0gYmVnaW4gb2Ygc3dhcCBjaGFpbiBzdXBwb3J0IChub3cgbmVlZCB0byBzcGxpdC9jbGVhbgoJICBneGxwYnVmZmVyL2dseHBpeG1hcCBjb2RlIGZvciBzd2FwIGNoYWluIHVzZSkKCgkqIGRsbHMvZDNkOC9zdXJmYWNlLmM6IEphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglGaXggdGhlIGdsUmVhZCBjYWxsIHdoZW4gcFJlY3QgIT0gTlVMTCwgcmVzb2x2ZSB0aGUgZmlsZSBmb3JtYXQgb2YgdGhlCglzYXZlZCBzbmFwc2hvdCBjb3JyZWN0bHkuCgoJKiBkbGxzL2QzZDgvc3VyZmFjZS5jOiBSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCS0gZml4IGFub3RoZXIgdGltZSB0aGUgc3R1cGlkIGxvY2tpbmcgYnVnIChpIGhhZCBhbHJlYWR5IGZpeGVkIGl0IGluCgkgIEFjdGl2ZVJlbmRlcikKCS0gZml4IHN0dXBpZCByZXNjYWxpbmcgb2YgY29sb3JzIHZhbHVlcyBvbiBTYXZlU25hcHNob3QKCgkqIGRsbHMvZDNkOC9kM2Q4LnNwZWMsIGRsbHMvZDNkOC9kM2Q4X21haW4uYywgZGxscy9kM2Q4L2QzZDhfcHJpdmF0ZS5oLAoJICBkbGxzL2QzZDgvZGV2aWNlLmMsIGRsbHMvZDNkOC9kaXJlY3R4LmMsIGRsbHMvZDNkOC9zaGFkZXIuYzoKCVJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJLSBwaXhlbCBzaGFkZXIgcHJvZ3JhbSBkdW1wIGNvZGUKCS0gcGl4ZWwgc2hhZGVyIGNvZGUgc3BsaXQgaW50byBhIG5ldyAiQ09NIG9iamVjdCIgKGFzIGRvbmUgYmVmb3JlIGZvcgoJICB2ZXJ0ZXggc2hhZGVyKQoJLSBzb21lIGZpeGVzIG9uIFZhbGlkYXRlKiBmdW5jdGlvbnMgY2FsbCB0eXBlcwoJLSBhZGQgcGl4ZWwgc2hhZGVyIChpZSBmcmFnbWVudF9wcm9ncmFtKSBkZXRlY3Rpb24gb24gY2FwcyBjb2RlCgoJKiBkbGxzL2QzZDgvZGV2aWNlLmMsIGRsbHMvZDNkOC91dGlscy5jOgoJSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCUFkZCBzdXBwb3J0IGZvciBhIGxvdCBvZiB0aGUgcmVtYWluaW5nIHRleHR1cmUgb3BzLCBtb3ZlIGNvZGUgaW50byB0aGUKCXV0aWxzIG1vZHVsZSwgYW5kIGNsZWFuIHVwIHRoZSBtYWluIGNvZGUgcGF0aC4KCgkqIGRsbHMvZDNkOC9jdWJldGV4dHVyZS5jLCBkbGxzL2QzZDgvZDNkOF9wcml2YXRlLmgsCgkgIGRsbHMvZDNkOC9kZXZpY2UuYywgZGxscy9kM2Q4L2RpcmVjdHguYywgZGxscy9kM2Q4L3N1cmZhY2UuYywKCSAgZGxscy9kM2Q4L3RleHR1cmUuYywgZGxscy9kM2Q4L3V0aWxzLmMsIGRsbHMvZDNkOC92b2x1bWV0ZXh0dXJlLmM6CglSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCS0gc29tZSBjbGVhbnVwcwoJLSBtb3JlIGN1YmV0ZXh0dXJlcyBmaXhlcyAobm93IGQzZDggc2RrIGN1YmVtYXAgc2FtcGxlIHdvcmsgYWxtb3N0CgkgIHBlcmZlY3RseSkKCS0gYWRkIGEgbmV3IGRlYnVnIGZ1bmN0aW9uICJkZWJ1Z19kM2Rwb29sIiBhbmQgdXNlIGl0CgktIGFkZCBhIG5ldyBwYXJhbSAodGhlIGRldmljZSkgZm9yIHRoZSBjb252ZXJzaW9ucyBmdW5jdGlvbnMgKGJlY2F1c2UKCSAgd2UgbmVlZCB0byBjaGVjayBjYXBzIHRvIHNlZSBob3cgdG8gY29udmVydCkKCS0gc29tZSBjcmFzaGVzIGZpeGVkIGluIHJlbmRlciB0byBzdXJmYWNlIGNvZGUgd2l0aCBubyBzdGVuY2lsLWRlcHRoCgkgIHN1cmZhY2UKCS0gYSB2ZXJ5IHNpbXBsZSBjbGlwbGFuZSBmaXgKCS0gYSBzdHVwaWQgcGFsZXR0ZXMgZml4IChzdHVwaWQgbGFuZ3VhZ2UpCgktIGJlZ2luIG9mIGFuaXNvdHJvcGljIGZpbHRlciBzdXBwb3J0CgktIGJlZ2luIG9mIGNvbXByZXNzZWQgdGV4dHVyZXMgc3VwcG9ydAoJLSBhIHZlcnkgdXNlZnVsIGRlYnVnIGZ1bmN0aW9uczogSURpcmVjdDNEU3VyZmFjZThJbXBsX1NhdmVTbmFwc2hvdCB0bwoJICBkdW1wIHN1cmZhY2VzIGFzIHBuZyA7KQoJLSBtYW55IHVzZWZ1bCBzdXJmYWNlcyBkZWJ1ZyBjb2RlICh1c2luZyBTYXZlU25hcHNob3QpCgoJKiBkbGxzL2QzZDgvZGV2aWNlLmMsIGRsbHMvZDNkOC9kaXJlY3R4LmM6CglKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJQ29ycmVjdCBzcGVjdWxhciBlbmFibGUgcmVuZGVyc3RhdGUuCgoJKiBkbGxzL2QzZDgvZDNkOF9wcml2YXRlLmgsIGRsbHMvZDNkOC9kZXZpY2UuYywgZGxscy9kM2Q4L3N0YXRlYmxvY2suYzoKCUphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglBdm9pZCB0aGUgdXNlIG9mIGdsR2V0IHdoZW4gd2Uga25vdyB0aGUgaW5mb3JtYXRpb24gbG9jYWxseS4KCgkqIGRsbHMvZDNkOC9kaXJlY3R4LmMsIGRsbHMvZDNkOC91dGlscy5jOgoJSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCU9wZW5nbCAxLjQgYWRkZWQgc3RlbmNpbCB3cmFwIHN1cHBvcnQgYXMgcGVyIGRpcmVjdHggKGFsc28gaW4gdGhlCglHTF9FWFRfc3RlbmNpbF93cmFwIGV4dGVuc2lvbikuCgoJKiBkbGxzL2QzZDgvTWFrZWZpbGUuaW4sIGRsbHMvZDNkOC9iYXNldGV4dHVyZS5jLAoJICBkbGxzL2QzZDgvY3ViZXRleHR1cmUuYywgZGxscy9kM2Q4L2QzZDhfcHJpdmF0ZS5oLAoJICBkbGxzL2QzZDgvZGV2aWNlLmMsIGRsbHMvZDNkOC9kaXJlY3R4LmMsIGRsbHMvZDNkOC9yZXNvdXJjZS5jLAoJICBkbGxzL2QzZDgvc2hhZGVyLmMsIGRsbHMvZDNkOC9zdGF0ZWJsb2NrLmMsIGRsbHMvZDNkOC9zdXJmYWNlLmMsCgkgIGRsbHMvZDNkOC9zd2FwY2hhaW4uYywgZGxscy9kM2Q4L3RleHR1cmUuYywgZGxscy9kM2Q4L3V0aWxzLmMsCgkgIGRsbHMvZDNkOC92b2x1bWV0ZXh0dXJlLmM6CglSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCS0gaW1wbGVtZW50ZWQgcmVuZGVyIHRvIHN1cmZhY2VzIChhbmQgcmVuZGVyIHRvIG5ldyByZW5kZXJ0YXJnZXRzKQoJICB1c2luZyBnbHggcGJ1ZmZlcnMgKHdpdGggYSB1c2VmdWwgZGVidWcgY29kZSB0byBkaXNwbGF5IHJlbmRlcmVkCgkgIHN1cmZhY2UgaW50byB3aW5kb3cgZHJhd2FibGUpCgktIGJldHRlciBjdWJldGV4dHVyZXMKCS0gc3BsaXQgdXRpbGl0aWVzIGZ1bmN0aW9ucyBpbnRvIHV0aWxzLmMgYW5kIGFkZGVkIG1vcmUKCS0gbW9yZSByZWFkYWJsZSBkZWJ1ZyBhZ2FpbgoJLSBhIGJldHRlciBjYXBzIGNvZGUgKG5vdCBwZXJmZWN0IGJ1dCBpJ2xsIHVzZSBnbHggY29kZSBsYXRlcikKCS0gdXNlIG9mIHRoZSBuZXcgY2FwcyBjb2RlCgktIGJlZ2luIG9mIFVwZGF0ZVRleHR1cmUKCS0gYmVnaW4gb2YgQ3Vyc29yIHN1cHBvcnQKCS0gY2xlYW5pbmcgbW9zdCBvZiBkZXByZWNhdGVkICNpZiAwLyNlbmRpZgoJLSBjb3JyZWN0IHNvbWUgbG9ja2FibGUvdW5sb2NrYWJsZSBiZWhhdmlvcgoJLSBjb3JyZWN0IHNvbWUgcmV0dXJucyBjb2RlCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsIGRsbHMvZGRyYXcvZDNkdGV4dHVyZS5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gZG8gbm90IHNlYXJjaCBmb3IgYXR0YWNoZWQgc3VyZmFjZXMgaWYgdGhlIHRleHR1cmUgZG9lc24ndCBoYXZlIHRoZQoJICBNSVBNQVAgZmxhZyBzZXQKCS0gYWRkIEdMIGNyaXQuIHNlY3Rpb24gc3VwcG9ydCBmb3IgbWF0cml4IHNldHRpbmcKCS0gc3VwcG9ydCB0aGUgdmFyaW91cyBCTEVORCB0ZXh0dXJlIG9wZXJhdGlvbnMKCgkqIGRsbHMvZGRyYXcvbWVzYS5jOiBZb3JpY2sgSGFyZHkgPHloQG1ldHJvd2ViLmNvLnphPgoJQWRkZWQgdGhlIEQzRFRCTEVORF9ERUNBTCByZW5kZXIgc3RhdGUuCgoJKiBjb250cm9scy9lZGl0LmMsIGRsbHMvc2V0dXBhcGkvcXVldWUuYywgZG9jdW1lbnRhdGlvbi9kZWJ1Z2dpbmcuc2dtbCwKCSAgZmlsZXMvcHJvZmlsZS5jLCBtZW1vcnkvZ2xvYmFsLmMsIHByb2dyYW1zL3JwY3NzL3JwY3NzX21haW4uYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRml4IHNvbWUgdHlwb3MuCgoJKiBkbGxzL3dpbm1tL3dpbmVhbHNhL2F1ZGlvLmMsIGRsbHMvd2lubW0vd2luZWFydHMvYXVkaW8uYywKCSAgZGxscy93aW5tbS93aW5lbmFzL2F1ZGlvLmMsIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUFkZGVkIGEgZHluYW1pY2FsbHkgZ3Jvd2luZyByaW5nIGJ1ZmZlciBmb3Igb3NzLCBhbHNhLCBhcnRzLCBhbmQgbmFzLgoKCSogZG9jdW1lbnRhdGlvbi9hdXRob3JzLmVudDogVG9tIFdpY2tsaW5lIDx0d2lja2xpbmVAc2t5YmVzdC5jb20+CglVcGRhdGVkIG15IGUtbWFpbCBhZGRyZXNzLgoKCSogbGlicy93cHAvcHBsLmw6IFBhdWwgTGF1ZmVyIDxQYXVsLkUuTGF1ZmVyQGpwbC5uYXNhLmdvdj4KCVdvcmsgYXJvdW5kIGZvciBmbGV4IGJyYWluIGRhbWFnZS4KCgkqIGRsbHMvbXN2Y3J0L2xvY2FsZS5jLCBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSW1wbGVtZW50ZWQgbG9jYWxlY29udigpIHdpdGggbGliYyBmdW5jdGlvbi4KCgkqIGluY2x1ZGUvbXN2Y3J0L3RpbWUuaDogQW50b25pbyBMYXJyb3NhIEppbeluZXogPGFudGxhcnJAdGVkaWFsLmNvbT4KCUFkZGVkIENMT0NLU19QRVJfU0VDLgoKCSogZGxscy93aW5zb2NrL3dzMl8zMi5zcGVjOgoJQW50b25pbyBMYXJyb3NhIEppbeluZXogPGFudGxhcnJAdGVkaWFsLmNvbT4KCUFkZGVkIFdTQVNldEV2ZW50IGZvcndhcmQuCgoJKiBkb2N1bWVudGF0aW9uL3NhbXBsZXMvd2luLmluaTogVG9tIFdpY2tsaW5lIDx0d2lja2xpbmVAc2t5YmVzdC5jb20+CglBZGRlZCAxMCBuZXcgbWNpIGV4dGVuc2lvbnMuCgoJKiBjb250cm9scy9saXN0Ym94LmM6IE1pa2UgSGVhcm4gPG1pa2VAdGhlb3JldGljLmNvbT4KCVVwZGF0ZSBsaXN0Ym94IGRpcmVjdG9yeSBtb2RlIHRvIG5ldyBGaW5kRmlyc3RGaWxlIGVycm9yIGNvZGUuCgoJKiBkbGxzL3VzZXIvdGV4dC5jOiBWaXRhbGl5IE1hcmdvbGVuIDx3aW5lLXBhdGNoQGtpZXZpbmZvLmNvbT4KCURyYXdUZXh0RXg6IGhvbm9yIGNsaXBwaW5nIGZvciB1bmRlcnNjb3Jlcy4KCgkqIHdpbmVkZWZhdWx0LnJlZzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUFkZGVkIERpcmVjdFNvdW5kIGVudHJpZXMuCgoJKiBncmFwaGljcy94MTFkcnYvcGFsZXR0ZS5jOgoJSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCVdpdGggPjI1NiBjb2xvdXJzLCB0aGVyZSBpcyBubyBuZWVkIHRvIHJlYWxpemUgYSBwYWxldHRlLCBzbyBza2lwIGl0CglhbmQgcmV0dXJuIHRoYXQgbm8gcGFsZXR0ZSBlbnRyaWVzIGhhZCB0byBjaGFuZ2UuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglSZW1vdmUgYkZpcnN0UGFpbiBmdW5reSBvcHRpbWl6YXRpb24sIGl0IGlzIGNhdXNpbmcgdG9vIG11Y2ggZ3JpZWYuCgoJKiBkbGxzL3dpbmVkb3MvaW50MjEuYywgZmlsZXMvZHJpdmUuYywgaW5jbHVkZS9kcml2ZS5oLCBtc2Rvcy9pbnQyMS5jOgoJSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJTWlncmF0ZSBtb3N0IGludDIxIGlvY3RsIHJvdXRpbmVzIHRvIHdpbmVkb3MuCglNaWdyYXRlIGludDIxIHNldCBkcml2ZSByb3V0aW5lIHRvIHdpbmVkb3MuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUltcGxlbWVudGVkIGEgc2VtaS1zdHViIGZvciBHZXRQcm9jZXNzUHJpb3JpdHlCb29zdC4KCgkqIGRsbHMvdXNlci9kZGUvc2VydmVyLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglSZXZlcnQgc29tZSByZWFsbHkgdW53YW50ZWQgY2hhbmdlcyB0byB0aGUgRERFIGNvZGUuCgoJKiBkbGxzL250ZGxsL2Nkcm9tLmM6IFlvcmljayBIYXJkeSA8eWhAbWV0cm93ZWIuY28uemE+CglJbXByb3ZlIENEUk9NX0dldElkZUludGVyZmFjZSAoYmVjb21lcyBDRFJPTV9HZXRJbnRlcmZhY2VJbmZvKSwgaW4KCW9yZGVyIHRvIGJldHRlciBzdXBwb3J0IFNDU0kgZHJpdmVzLgoKCSogaW5jbHVkZS93aW5zb2NrLmg6IFlvcmljayBIYXJkeSA8eWhAbWV0cm93ZWIuY28uemE+CglJbmNsdWRlIHN5cy90aW1lLmggZm9yIHN0cnVjdCB0aW1ldmFsIGRlZmluaXRpb24uCgoJKiBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmM6IFlvcmljayBIYXJkeSA8eWhAbWV0cm93ZWIuY28uemE+CglVc2UgU0FfUkVTVEFSVCBvbiBOZXRCU0QuCgoJKiBwcm9ncmFtcy93aW5lY29uc29sZS9jdXJzZXMuYzogSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJV2luZWNvbnNvbGUgY3Vyc2VzIGJhY2tlbmQgbm93IHdvcmtzIGV2ZW4gaWYgdGVybWluYWwgaXMgc21hbGxlciB0aGFuCgljb25zb2xlIHNpemUuIEN1cnNvciBpcyBubyBsb25nZXIgbGVmdCBpbnRvIHdyb25nIGxvY2F0aW9uIGFmdGVyCglzY3JlZW4gdXBkYXRlcy4KCgkqIGRsbHMvbnRkbGwvc3luYy5jOiBKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglUaW1lciByb3V0aW5lcyBtdXN0IGNoZWNrIGZvciBOVUxMIHRpbWVyIG5hbWUuCgoJKiBwcm9ncmFtcy93aW5oZWxwL1NpLnJjLCBwcm9ncmFtcy93aW5oZWxwL1NrLnJjLAoJICBwcm9ncmFtcy93aW5oZWxwL2hscGZpbGUuYywgcHJvZ3JhbXMvd2luaGVscC93aW5oZWxwLmM6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCS0gYWRkZWQgc29tZSBtaXNzaW5nIHN0cmluZ3MgdG8gcmVzb3VyY2VzCgktIG1hZGUgdGhlIGRlY29tcHJlc3Npb24gY29kZSBhIGJpdCBtb3JlIHBlZGFudGljIHRvIGF2b2lkIGNyYXNoZXMKCS0gZml4ZWQgc3RhcnR1cCB3aXRob3V0IC5ITFAgZmlsZW5hbWUgcGFzc2VkIG9uIGNvbW1hbmQgbGluZQoJLSBwYXNzZWQgYSBmZXcgbW9yZSBjb21tYW5kcyBmcm9tIHJlbW90ZSBhcHBsaWNhdGlvbnMgdG8gdGhlIG1hY3JvcwoKCSogZGxscy9kZHJhdy9NYWtlZmlsZS5pbiwgZGxscy9kZHJhdy9kZHJhdy9oYWwuYywKCSAgZGxscy9kZHJhdy9kZHJhdy9tYWluLmMsIGRsbHMvZGRyYXcvZGRyYXcvdXNlci5jLAoJICBkbGxzL2RkcmF3L2RkcmF3X3ByaXZhdGUuaCwgZGxscy9kZHJhdy9kc3VyZmFjZS9tYWluLmMsCgkgIGRsbHMvZGRyYXcvZ2xfYXBpLmgsIGRsbHMvZGRyYXcvZ2xfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L21haW4uYywKCSAgZGxscy9kZHJhdy9tZXNhX3ByaXZhdGUuaDoKCSBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CgkgTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCU1ha2UgRERyYXcgbm90IGxpbmtlZCAnc3RhdGljYWxseScgdG8gT3BlbkdMLgoKCSogZGxscy9kaW5wdXQva2V5Ym9hcmQvbWFpbi5jOiBNYXJrIFdlc3Rjb3R0IDxtYXJrQGhvdXNlb2ZmaXNoLm9yZz4KCURJbnB1dCBrZXlib2FyZCBoYW5kbGluZyBjaGVja3MgZm9yIGluY29taW5nIFgxMSBldmVudHMuCgoJKiBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGUzMi9jb21wb2JqX3ByaXZhdGUuaCwKCSAgZGxscy9vbGUzMi9lcnJvcmluZm8uYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJUHJlbGltaW5hcnkgc3VwcG9ydCBmb3IgQ09NIGFwYXJ0bWVudHMuCgoJKiBkbGxzL2QzZDgvZGV2aWNlLmMsIGluY2x1ZGUvZDNkOHR5cGVzLmg6CglKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJRmlsbCBpbiBsb3RzIG9mIHVuaW1wbGVtZW50ZWQgcmVuZGVyIHN0YXRlcy4KCjIwMDMtMDUtMjIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2Rzb3VuZC9zb3VuZDNkLmM6IER1YW5lIENsYXJrIDxkY2xhcmtAYWthbWFpbC5jb20+CglGaXggY29tcGlsZSBlcnJvci4KCgkqIGRsbHMvbnRkbGwvaGVhcC5jLCBkbGxzL250ZGxsL250ZGxsX21pc2MuaCwgaW5jbHVkZS90aHJlYWQuaCwKCSAgaW5jbHVkZS93aW50ZXJubC5oLCBsb2FkZXIvbW9kdWxlLmMsIG1lbW9yeS9oZWFwLmMsCgkgIHByb2dyYW1zL3dpbmVkYmcvd2luZWRiZy5jLCBzY2hlZHVsZXIvdGhyZWFkLmM6CglTdGFydCB0byBtYWtlIHVzZSBvZiB0aGUgcHJvcGVyIFBFQiBzdHJ1Y3R1cmUgZm9yIHByb2Nlc3MKCWluZm9ybWF0aW9uLgoKCSogbWlzY2VtdS9tYWluLmM6IFdhcm5pbmcgZml4LgoKCSogZGxscy9rZXJuZWwva2VybmVsX21haW4uYywgd2luMzIvbmV3Zm5zLmM6CglCZWVwKCkgaXMgc3RpbGwgbmVlZGVkIGluIG50ZGxsLCBtb3ZlIGl0IGJhY2sgdG8gc29tZSByYW5kb20gZmlsZS4KCgkqIG1pc2NlbXUvTWFrZWZpbGUuaW46CglBZGRlZCBkZXBlbmRlbmN5IG9uIGxpYm50ZGxsIHRvIG1ha2Ugc3VyZSB0aGF0IGV2ZXJ5dGhpbmcgbGlua3MKCXByb3Blcmx5LgoKCSogZGxscy9kc291bmQvdGVzdHMvZHNvdW5kLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglBZGQgM2QgcHJpbWFyeSBhbmQgc2Vjb25kYXJ5IGJ1ZmZlciB0ZXN0cy4KCUNoZWNrIHJlZmVyZW5jZSBjb3VudCBhdCBvYmplY3QgcmVsZWFzZS4KCVJlbW92ZSByZWR1bmRhbnQgY29vcGVyYXRpdmUgbGV2ZWwgc2V0dGluZy4KCgkqIGRsbHMvZHNvdW5kL2J1ZmZlci5jLCBkbGxzL2Rzb3VuZC9jYXB0dXJlLmMsCgkgIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmMsIGRsbHMvZHNvdW5kL21peGVyLmMsCgkgIGRsbHMvZHNvdW5kL3ByaW1hcnkuYywgZGxscy9kc291bmQvcHJvcHNldC5jLCBkbGxzL2Rzb3VuZC9zb3VuZDNkLmM6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJLSBtYWtlIHBhcmFtZXRlciBjaGVja2luZyBhbmQgZXJyb3Igbm90aWZpY2F0aW9uIGNvbnNpc3RlbnQKCS0gcHJvcGFnYXRlIGRyaXZlciBhbmQgbG9jYWwgZnVuY3Rpb24gZXJyb3JzIHdoZXJlIG5lZWRlZAoJLSBmaXggZXJyb3IgcmV0dXJucyB3aGVyZSBwb2ludGVyIGlzIGdpdmVuIGZvciByZXR1cm5lZCBkYXRhCgktIGFkZCAzZCBsaXN0ZW5lciB0byBwcmltYXJ5IGJ1ZmZlciB3aGVuIG5lZWRlZAoJLSBjb3B5IDNkIHBhcnQgb2YgYnVmZmVyIHdoZW4gZHVwbGljYXRlZAoJLSBmaXggYnVnIHdoZW4gcHJpbWFyeSBidWZmZXIgaXMgcmVvcGVuZWQgd2l0aCBzbWFsbGVyIGJ1ZmZlcgoJLSBsb29zZW4gcmVxdWlyZW1lbnRzIG9uIGNhcHMgZGF0YSBzaXplIGNoZWNrCgktIHNldCBjYXBzIGZvciBlbXVsYXRlZCBtb2RlIGJhc2VkIG9uIGFjdHVhbCBkcml2ZXIgY2FwcwoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWFpbi5jLCBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsCgkgIGRsbHMvZGRyYXcvZHN1cmZhY2UvZmFrZXpidWZmZXIuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIHJlbW92ZSBmb2dnaW5nIHRvbyB3aGVuIGRvaW5nIHRoZSBmbHVzaCBvZiB0aGUgZnJhbWUgYnVmZmVyCgktIGhhbmRsZSBkZXN0IHJlY3QgaW4gdGhlIEJsdCBERVBUSF9GSUxMIGNhc2UKCS0gZml4IFF1ZXJ5SW50ZXJmYWNlIG9uIHRoZSBEM0QgRGV2aWNlCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglNYXhpbWUgQmVsbGVuZ+kgPG1heGltZS5iZWxsZW5nZUBsYXBvc3RlLm5ldD4KCUZpeCBsaXN0dmlldyBjdXN0b20gZHJhdyBub3RpZmljYXRpb24gZm9yIENERFNfSVRFTVBSRVBBSU5UIGFuZAoJQ0REU19TVUJJVEVNUFJFUEFJTlQgbWVzc2FnZXMuCgoJKiBkbGxzL29sZTMyL2Rjb20uaCwgZGxscy9vbGUzMi9kY29tLmlkbDoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJRENPTSBJREwgZmlsZSBiYXNlZCBvbiB0aGUgRENPTSBzcGVjaWZpY2F0aW9uLgoKCSogZGxscy9ycGNydDQvbmRyX21pZGwuYywgZGxscy9ycGNydDQvcnBjX21lc3NhZ2UuYywKCSAgZGxscy9ycGNydDQvcnBjX21pc2MuaCwgZGxscy9ycGNydDQvcnBjX3NlcnZlci5jOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglJbml0aWFsIHN1cHBvcnQgZm9yIFJQQyBjYWxsIGZhaWx1cmVzLCBieSBjYXRjaGluZyBSUEMgc2VydmVyCglleGNlcHRpb25zIGFuZCByZXR1cm5pbmcgc2ltcGxlIGZhaWx1cmUgcGFja2V0cywgYW5kIHRocm93aW5nCglleGNlcHRpb25zIG9uIHRoZSBjbGllbnQgc2lkZSB3aGVuIHVubWFyc2hhbGxpbmcgdGhlIGZhaWx1cmUgcGFja2V0LgoKCSogZGxscy9kM2Q4L2RldmljZS5jOiBKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJQXZvaWQgc2V0dGluZyBhbmQgcmVzZXR0aW5nIHRoZSBzYW1lIHZhbHVlcyB3aGVuIHRoZXJlIGFyZSBtYW55CglyZWN0YW5nbGVzLgoKCSogZGxscy9jb21jdGwzMi9oZWFkZXIuYzogUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCVVwZGF0ZSBvcmRlcmluZyBvbiBpbnNlcnRpb24gb2YgYW4gaXRlbS4KCjIwMDMtMDUtMjEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9zaGVsbDMyL01ha2VmaWxlLmluLAoJICBkbGxzL3NoZWxsMzIvbWVtb3J5c3RyZWFtLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwKCSAgZGxscy9zaGVsbDMyL3NoZWxsbGluay5jLCBpbmNsdWRlL3dpbmUvb2JqX3NoZWxsbGluay5oLAoJICBwcm9ncmFtcy9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luZW1lbnVidWlsZGVyLy5jdnNpZ25vcmUsCgkgIHByb2dyYW1zL3dpbmVtZW51YnVpbGRlci9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvd2luZW1lbnVidWlsZGVyL3dpbmVtZW51YnVpbGRlci5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlIGNvZGUgdGhhdCBzdGFydHMgd2luZXNoZWxsbGluaywgaW5zdGVhZCBjcmVhdGUgYSB3aW5kb3dzCgljb21wYXRpYmxlIHNob3J0Y3V0ICgqLmxuaykgZmlsZS4gQWZ0ZXIgY3JlYXRpbmcgdGhhdCBmaWxlLCBzdGFydCBhCglsaW5rIHByb2Nlc3NvciAod2luZW1lbnVidWlsZGVyKSBvbiBpdCwgd2hpY2ggcmVhZHMgaXQgYmFjayB0aGVuIGNhbGxzCgl3aW5lc2hlbGxsaW5rLgoJUmV3b3JrIENyZWF0ZVN0cmVhbUZyb21GaWxlIHRvIGNyZWF0ZSBhbiBJU3RyZWFtIG9iamVjdCB0aGF0IGlzCgl3cml0ZWFibGUuCgoJKiBsaWJzL3BvcnQvc3Bhd24uYzoKCVJlc2V0IFNJR0NITEQgaGFuZGxlciB0byBkZWZhdWx0IGlmIHdlIG5lZWQgdG8gd2FpdC4gUmVzZXQgU0lHUElQRQoJaGFuZGxlciBiZWZvcmUgZXhlYy4KCgkqIGluY2x1ZGUvbW9kdWxlLmgsIGxvYWRlci9tb2R1bGUuYywgbG9hZGVyL25lL21vZHVsZS5jOgoJTW92ZWQgYSBjb3VwbGUgb2YgMTYtYml0IG1vZHVsZSBmdW5jdGlvbnMgZnJvbSB0byBsb2FkZXIvbmUvbW9kdWxlLmMuCgoJKiBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwvY2hhbmdlLmMsIGRsbHMva2VybmVsL2Vycm9yMTYuYywKCSAgZGxscy9rZXJuZWwva2VybmVsX21haW4uYywgZGxscy9udGRsbC9NYWtlZmlsZS5pbiwgbWlzYy9lcnJvci5jLAoJICBtaXNjL21haW4uYzoKCU1vdmVkIG1pc2MvZXJyb3IuYyB0byBkbGxzL2tlcm5lbC9lcnJvcjE2LmMuCglHZXQgcmlkIG9mIG1pc2MvbWFpbi5jLgoKCSogZGxscy9nZGkvZHJpdmVyLmMsIGRsbHMvZ2RpL2VuaG1mZHJ2L2VuaG1ldGFmaWxlZHJ2LmgsCgkgIGRsbHMvZ2RpL2VuaG1mZHJ2L2luaXQuYywgZGxscy9nZGkvZW5obWZkcnYvb2JqZWN0cy5jLAoJICBkbGxzL2dkaS9tZmRydi9pbml0LmMsIGluY2x1ZGUvZ2RpLmgsIG9iamVjdHMvZ2Rpb2JqLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnRlZCBHZGlDb21tZW50IGZvciBlbmhhbmNlZCBtZXRhZmlsZXMuCgoJKiBkbGxzL2lwaGxwYXBpL2lmZW51bS5jOgoJRml4ZWQgd3JvbmcgbGVuZ3RoIGFyZ3VtZW50IGluIGdldEludGVyZmFjZVBoeXNpY2FsQnlOYW1lLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJSW5zZXJ0aW5nIGNvbHVtbiB6ZXJvIHNob3VsZCBub3QgbW9kaWZ5IHRoZSBtYWluIGl0ZW0gKHNwb3R0ZWQgYnkKCVJvYmVydCBTaGVhcm1hbikuCgoJKiBtaXNjL2NwdS5jOiBFcmljIEFuaG9sdCA8ZXRhQGxjbGFyay5lZHU+CglBZGRlZCBDUFUgZGV0ZWN0aW9uIGZvciBGcmVlQlNELgoKCSogZGxscy9rZXJuZWwvdGVzdHMvcGlwZS5jOiBHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCUF2b2lkICJtaWdodCBiZSB1c2VkIHVuaW5pdGlhbGl6ZWQiIHdhcm5pbmcgaW4gZXhlcmNpemVTZXJ2ZXIoKS4KCgkqIGRsbHMvcnBjcnQ0L3JwY19tZXNzYWdlLmMsIGRsbHMvcnBjcnQ0L3JwY19zZXJ2ZXIuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJRm9yIFJQQyBzZXJ2ZXJzLCBkb24ndCBkZWFsbG9jYXRlIHRoZSBSUEMgcmVxdWVzdCBwYWNrZXQgYmVmb3JlIHRoZQoJUlBDIHJlcGx5IHBhY2tldCBpcyBzZW50LCBpbiBjYXNlIG1hcnNoYWxsaW5nIHRoZSByZXBseSBuZWVkcyBhbnkgb2YKCXRoZSByZXF1ZXN0IGRhdGEuCgoJKiBkbGxzL3JwY3J0NC9uZHJfbWlkbC5jLCBkbGxzL3JwY3J0NC9ycGNydDQuc3BlYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJQWRkZWQgc2VtaS1zdHViIGZvciBOZHJQcm94eUVycm9ySGFuZGxlci4KCUZpeGVkIGEgY2FzZSBvZiBwb3RlbnRpYWwgc3RhY2sgdHJhc2hpbmcuCgoyMDAzLTA1LTIwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9udGRsbC9NYWtlZmlsZS5pbiwgbG9hZGVyL21haW4uYywgbG9hZGVyL3Rhc2suYywKCSAgc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCU1vdmVkIGFsbCBwcm9jZXNzIGluaXRpYWxpc2F0aW9uIGNvZGUgdG8gcHJvY2Vzcy5jIGFuZCByZW1vdmVkCglsb2FkZXIvbWFpbi5jLgoKCSogZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL250ZGxsL29tLmMsIGluY2x1ZGUvd2ludGVybmwuaDoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJSW1wbGVtZW50ZWQgTnRRdWVyeU9iamVjdCBhbmQgTnRTZXRJbmZvcm1hdGlvbk9iamVjdCBmb3IgdGhlCglPYmplY3REYXRhSW5mb3JtYXRpb24gY2xhc3MuCgoJKiBtZW1vcnkvZ2xvYmFsLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglNYWtlIHRoZSBHbG9iYWwqIG1lbW9yeSBBUEkgZnVuY3Rpb25zIHRocmVhZCBzYWZlLgoKCSogZGxscy94MTFkcnYveHZpZG1vZGUuYzogQ2FybG9zIExvemFubyA8Y2xvemFub0BhbmRhZ28uY29tPgoJQXZvaWQgcHJpbnRpbmcgYW4gdW5pbml0aWFsaXplZCBidWZmZXIuCgoJKiBkbGxzL250ZGxsL2Nkcm9tLmM6IFlvcmljayBIYXJkeSA8eWhAbWV0cm93ZWIuY28uemE+CglJbXBsZW1lbnQgQ0RST01fU2NzaVBhc3NUaHJvdWdoIGFuZCBDRFJPTV9TY3NpUGFzc1Rocm91Z2hEaXJlY3Qgb24KCU5ldEJTRC4KCgkqIGRsbHMva2VybmVsL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC9zeXN0ZW0uYywKCSAgZGxscy9udGRsbC9NYWtlZmlsZS5pbiwgbWVtb3J5L2luc3RyLmMsIG1pc2Mvc3lzdGVtLmM6CglNb3ZlZCBzeXN0ZW0uZGxsIGltcGxlbWVudGF0aW9uIHRvIGRsbHMva2VybmVsLgoKCSogZGxscy9vbGVjbGkvTWFrZWZpbGUuaW4sIGRsbHMvb2xlY2xpL29sZWNsaTE2LmMsCgkgIGRsbHMvb2xlY2xpL29sZWNsaV9tYWluLmM6CglTdGV2ZW4gRWR3YXJkcyA8U3RldmVuX0VkNDE1M0B5YWhvby5jb20+CglXaW4xNi8zMiBzZXBhcmF0aW9uIG9mIG9sZWNsaTMyLgoKCSogZGxscy9kZHJhdy9kM2RfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L2QzZGNvbW1vbi5jLAoJICBkbGxzL2RkcmF3L2QzZGV4ZWN1dGVidWZmZXIuYywgZGxscy9kZHJhdy9kM2RsaWdodC5jLAoJICBkbGxzL2RkcmF3L2QzZGRldmljZS9tYWluLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UvZmFrZXpidWZmZXIuYzoKCUNocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCVJlbW92ZSBhbGwgb3BlbkdMIGNhbGxzIGluIGV4ZWN1dGUgYnVmZmVycyBhbmQgdXNlIHRoZSBEaXJlY3QzRDcgQVBJcy4KCUVuYWJsZSByZXRyaWV2aW5nIHRoZSByZW5kZXIgdGFyZ2V0IHN1cmZhY2Ugb2YgYSBkZXZpY2UgdGhyb3VnaCBpdHMKCVF1ZXJ5SW50ZXJmYWNlIG1ldGhvZC4KCUF2b2lkIGxpZ2h0cyB1cGRhdGluZyB3aGVuIGEgdmlld3BvcnQgYW5kIGEgZGV2aWNlIGhhdmUgbm90IGJlZW4KCWFzc29jaWF0ZWQgdG8gdGhlbS4KCUNsZWFyIHRoZSBaIGJ1ZmZlciBvbmx5IHdoZW4gd2UncmUgYXNrZWQgdG8gYnkgQ2hlY2tpbmcgRDNEQlRMX0ZJTEwKCWZsYWcuCgoJKiBkbGxzL3dpbmVkb3MvaW50MjEuYzogSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJQWRkZWQgc29tZSBsb25nIGZpbGVuYW1lIGZ1bmN0aW9ucy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBtaXNjL2NwdS5jOgoJWW9yaWNrIEhhcmR5IDx5aEBtZXRyb3dlYi5jby56YT4KCUltcGxlbWVudGVkIEdldFN5c3RlbUluZm8gb24gTmV0QlNELgoKCSogZGxscy9rZXJuZWwvc3luYy5jLCBkbGxzL250ZGxsL01ha2VmaWxlLmluLAoJICBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsIHNjaGVkdWxlci9waXBlLmMsIHNlcnZlci9NYWtlZmlsZS5pbiwKCSAgc2VydmVyL3BpcGUuYywgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3RyYWNlLmM6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCUltcGxlbWVudCBhbm9ueW1vdXMgcGlwZXMgb24gdG9wIG9mIG5hbWVkIHBpcGVzLgoKCSogZGxscy9kZHJhdy9kM2RfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsCgkgIGRsbHMvZGRyYXcvZDNkZXhlY3V0ZWJ1ZmZlci5jLCBkbGxzL2RkcmF3L2QzZHZlcnRleGJ1ZmZlci5jLAoJICBkbGxzL2RkcmF3L21lc2FfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L2RzdXJmYWNlL21haW4uYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIHNvbWUgdHJhY2luZyBmaXhlcwoJLSBmbHVzaCB0aGUgcmlnaHQgYnVmZmVyIHRvIHRoZSBzY3JlZW4KCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywgZGxscy9kZHJhdy9kM2RleGVjdXRlYnVmZmVyLmMsCgkgIGRsbHMvZGRyYXcvbWVzYV9wcml2YXRlLmg6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJTm8gbmVlZCB0byBmbHVzaCB0aGUgc3VyZmFjZSBiYWNrIGlmIGxhc3QgbG9jayB3YXMgYSBSTyBsb2NrLgoKCSogZGxscy9rZXJuZWwvc3luYy5jLCBkbGxzL250ZGxsL01ha2VmaWxlLmluLCBzY2hlZHVsZXIvdGltZXIuYzoKCU1vdmVkIHRpbWVyIGZ1bmN0aW9ucyB0byBkbGxzL2tlcm5lbC4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlYXV0LmM6IE92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJSGFuZGxlIHJlcXVlc3RzIGZvciBDTFNJRF9QU0Rpc3BhdGNoLgoKCSogZGxscy9ycGNydDQvY3Byb3h5LmMsIGRsbHMvcnBjcnQ0L2Nwc2YuYywgZGxscy9ycGNydDQvY3BzZi5oLAoJICBkbGxzL3JwY3J0NC9jc3R1Yi5jOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglGaXhlZCBOZHJEbGxSZWdpc3RlclByb3h5IHNvIGl0IHJlZ2lzdGVycyB0aGUga2V5IG5hbWVzIHRoYXQgb2xlMzIKCWV4cGVjdHMuIEJldHRlciBkZWJ1ZyB0cmFjZXMgKGluY2x1ZGUgbmFtZSBvZiBpbnRlcmZhY2UpLgoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWFpbi5jLCBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsCgkgIGRsbHMvZGRyYXcvZDNkdGV4dHVyZS5jLCBkbGxzL2RkcmF3L21lc2FfcHJpdmF0ZS5oOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gZml4IGJ1ZyBpbiAnQmx0IERFUFRIX0ZJTEwnIG92ZXJyaWRlCgktIGFkZGVkIGEgbG9jayBhcm91bmQgdGhlIGZsdXNoaW5nIG9mIGEgc3VyZmFjZSB0byB0aGUgZnJhbWUgYnVmZmVyCgktIG9wdGltaXplIHRleHR1cmUgbG9hZGluZyBteSBtaW5pbWl6aW5nIHRoZSBjYXNlcyB3aGVyZSBhIGNvbnZlcnNpb24KCSAgbmVlZHMgdG8gb2NjdXIgYW5kIGFsc28gYnkgcmV1c2luZyB0aGUgYWxsb2NhdGVkIG1lbW9yeQoKCSogZGxscy9udGRsbC9udC5jLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvbnRkbGwvc3luYy5jLAoJICBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsIGluY2x1ZGUvd2ludGVybmwuaCwKCSAgc2NoZWR1bGVyL3RpbWVyLmMsIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci90aW1lci5jLAoJICBzZXJ2ZXIvdHJhY2UuYzoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJSW1wbGVtZW50ZWQgdGltZXIgcmVsYXRlZCBmdW5jdGlvbnMgaW4gbnRkbGwgYW5kIG1ha2UgdGhlIGtlcm5lbDMyCglmdW5jdGlvbnMgdXNlIHRoZW0uCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9waXBlLmM6IFVzZSB0aGUgdHJhY2UgbWFjcm8gZm9yIGRlYnVnZ2luZyBvdXRwdXQuCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsIGRsbHMvZGRyYXcvbWVzYS5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUhhdmUgTGlnaHRzIGFuZCBDbGlwcGxhbmVzIHRyYW5zZm9ybWVkIHByb3Blcmx5LgoKCSogZGxscy9udGRsbC9sb2FkZXIuYywgaW5jbHVkZS9tb2R1bGUuaCwgbG9hZGVyL21vZHVsZS5jLAoJICBsb2FkZXIvbmUvbW9kdWxlLmMsIGxvYWRlci9wZV9pbWFnZS5jOgoJT25seSBjcmVhdGUgdGhlIDE2LWJpdCBkdW1teSBtb2R1bGUgd2hlbiB3ZSBuZWVkIHJlYWxseSBpdC4KCgkqIGRsbHMvd2luZXBzL2VzY2FwZS5jLCBkbGxzL3dpbmVwcy9pbml0LmM6CglIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJTG9vayB1cCB0aGUgcHJpbnRlcidzIHBvcnQgaW4gdGhlIHJlZ2lzdHJ5IGlmIG5laXRoZXIgQ3JlYXRlREMgb3IKCVN0YXJ0RG9jIHNwZWNpZnkgb25lLgoJUGhvdG9zaG9wIDcgaGFzIGEgYnVnIHRoYXQgcmVzdWx0cyBpbiBjYklucHV0IGJlaW5nIDIgbGVzcyB0aGFuIHRoZQoJbGVuZ3RoIG9mIHRoZSBzdHJpbmcgcmF0aGVyIHRoYW4gMiBtb3JlLiAgU28gdXNlIHRoZSBXT1JEIGF0Cglpbl9kYXRhWzBdIGluc3RlYWQuCgoJKiBkbGxzL3dpbmVwcy9pbml0LmMsIGRsbHMvd2luZXBzL3BwZC5jLCBkbGxzL3dpbmVwcy9wc2Rydi5oOgoJSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUNVUFMgdXNlcyB0aGUgcHBkIGZpbGUgdG8gc3RvcmUgdGhlIGRlZmF1bHQgcGFwZXIgc2l6ZSwgc28gd2UnbGwgcmVhZAoJaXQgZnJvbSBoZXJlLgoJSWYgdGhlIHBwZCBkb2Vzbid0IGNvbnRhaW4gYW4gZXhwbGljaXQgcmVzb2x1dGlvbiB0aGVuIGRlZmF1bHQgdG8KCTMwMGRwaS4KCgkqIGRsbHMva2VybmVsL25scy8qLm5scywgaW5jbHVkZS93aW5ubHMuaDoKCUFkZGVkIHZhbHVlIGZvciBkZWZhdWx0IFVuaXggY29kZXBhZ2UgdG8gYWxsIHRoZSBsb2NhbGUgZGVmaW5pdGlvbnMuCgoJKiBkbGxzL3JwY3J0NC9uZHJfbWFyc2hhbGwuYywgZGxscy9ycGNydDQvcnBjcnQ0LnNwZWM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUltcGxlbWVudGVkICJkZXJlZmVyZW5jZSIgcG9pbnRlciBmbGFnLgoJQWRkZWQgTmRyQ2xlYXJPdXRQYXJhbWV0ZXJzIHN0dWIuCgoJKiBkbGxzL3JwY3J0NC9uZHJfb2xlLmM6IE92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJUG9ydGFiaWxpdHkgZml4LiBCZXR0ZXIgZGVidWcgbWVzc2FnZXMgKGRpc3BsYXkgSUlEIG9mIGludGVyZmFjZSB0bwoJbWFyc2hhbCkuCgoJKiBkb2N1bWVudGF0aW9uL1JFQURNRS5pdDoKCUZyYW5jZXNjbyBEaSBQdW56aW8gPGZyYW5jZXNjb19kaXB1bnppb0B2aXJnaWxpby5pdD4KCUl0YWxpYW4gdHJhbnNsYXRpb24gb2YgdGhlIFJFQURNRSBmaWxlLgoKCSogZGxscy9kZHJhdy9kM2RfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L2QzZGRldmljZS9tYWluLmMsCgkgIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywgZGxscy9kZHJhdy9tZXNhLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSBpbXBsZW1lbnQgdGhlIFRGQUNUT1IgdGV4dHVyZSBzdGFnZSBzdGF0ZQoJLSBzdXBwb3J0IFRleHR1cmUgbWF0cmljZXMKCS0gdmFyaW91cyBtaXNjLiBjbGVhbi11cHMKCjIwMDMtMDUtMTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3VzZXIvZGRlL2NsaWVudC5jLCBkbGxzL3VzZXIvZGRlL2RkZV9wcml2YXRlLmgsCgkgIGRsbHMvdXNlci9kZGUvbWlzYy5jLCBkbGxzL3VzZXIvZGRlL3NlcnZlci5jLCBkbGxzL3VzZXIvbWVzc2FnZS5jLAoJICBpbmNsdWRlL2RkZS5oLCBpbmNsdWRlL2RkZW1sLmg6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRXhwZWN0IG11bHRpcGxlIEROU18gZmxhZ3MuCglQYXJ0aWFsbHkgaW1wbGVtZW50ZWQgRGRlRW5hYmxlQ2FsbGJhY2suCglDYWxsIGEgY2FsbGJhY2sgd2l0aCBYVFlQX0NPTk5FQ1RfQ09ORklSTSBhZnRlciBhbiBhY2NlcHRlZAoJWFRZUF9DT05ORUNULgoJQWRkZWQgdHJhY2VzLCBjbGFyaWZ5IGRhdGEgdHlwZXMsIG90aGVyIGNvc21ldGljcy4KCgkqIG9iamVjdHMvZm9udC5jOiBGaXhlZCByZXR1cm4gdmFsdWUgb2YgR2V0VGV4dEZhY2VBLgoKCSogb2JqZWN0cy9kYy5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJQWZ0ZXIgd2UgdXBkYXRlIHRoZSBtYXBwaW5nIG1vZGUgcmVzZWxlY3QgdGhlIGN1cnJlbnQgZm9udCBiYWNrIGludG8KCXRoZSBkYyBzbyB0aGF0IGl0cyBzaXplIGlzIHJlY2FsY3VsYXRlZC4KCgkqIGRsbHMvd2luZXBzL3BzLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglEb24ndCBhZGQgc3BhY2VzIGluIHRoZSBQb3N0U2NyaXB0IGJldHdlZW4gZXZlcnkgcGl4ZWwgLSB0aGlzIG1hZGUKCWRlYnVnZ2luZyBlYXNpZXIgYnV0IHJlc3VsdHMgaW4gYW4gYXdmdWwgbG90IG9mIHdoaXRlc3BhY2UgYmVpbmcgc2VudAoJdG8gdGhlIHByaW50ZXIuCglEb24ndCBnZW5lcmF0ZSB0aGUgJSVPcmllbnRhdGlvbiBEU0MgY29tbWVudC4gIFRoZSBjdXBzIHBzdG9wcyBmaWx0ZXIKCXRyaWVzIHRvIHJvdGF0ZSB0aGUgaW1hZ2UgYnkgOTBkZWdzIHdoZW4gdG8gaXQgc2VlcyB0aGlzIGNvbW1lbnQuCglTdG9wIGEgY3Jhc2ggaWYgdGhlIGRvY3VtZW50IHRpdGxlIGlzIE5VTEwuCgoJKiBkbGxzL3dpbmVwcy90eXBlMS5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJUmVzZXQgdGhlIGVzY2FwZW1lbnQgYmFjayB0byB6ZXJvIGJlZm9yZSByZXRyaWV2aW5nIHRoZSBvdXRsaW5lICh3ZSdyZQoJYWxyZWFkeSBpbiBhIHJvdGF0ZWQgY29vcmRpbmF0ZSBzeXN0ZW0pLgoKCSogZGxscy93aW5lcHMvdGV4dC5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJRml4IGhhbmRsaW5nIG9mIHRleHQgYWxpZ24gbW9kZXMgZm9yIHJvdGF0ZWQgdGV4dC4KCgkqIGRsbHMvd2luc3Bvb2wvTWFrZWZpbGUuaW4sIGRsbHMvd2luc3Bvb2wvaW5mby5jOgoJSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUJhc2ljIGltcGxlbWVudGF0aW9uIG9mIEVudW1Qb3J0c0E6IGR1bXAgYWxsIHRoZSBzZXJpYWwgYW5kIHByaW50ZXIKCXBvcnQgbmFtZXMgaW50byBhIHN0cnVjdHVyZS4KCgkqIHByb2dyYW1zL25vdGVwYWQvRGEucmMsIHByb2dyYW1zL25vdGVwYWQvRGUucmMsCgkgIHByb2dyYW1zL25vdGVwYWQvRW4ucmMsIHByb2dyYW1zL25vdGVwYWQvRXMucmMsCgkgIHByb2dyYW1zL25vdGVwYWQvRmkucmMsIHByb2dyYW1zL25vdGVwYWQvRnIucmMsCgkgIHByb2dyYW1zL25vdGVwYWQvUHQucmMsIHByb2dyYW1zL25vdGVwYWQvU2kucmMsCgkgIHByb2dyYW1zL25vdGVwYWQvU2sucmMsIHByb2dyYW1zL25vdGVwYWQvU3cucmMsCgkgIHByb2dyYW1zL25vdGVwYWQvV2EucmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlZCByZWR1bmRhbnQgTEFOR1VBR0Ugc3RhdGVtZW50cy4KCgkqIHByb2dyYW1zL3ZpZXcvdmlldy5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggYW4gdW5pbml0aWFsaXplZCBidWZmZXIuCgoJKiBzY2hlZHVsZXIvcHJvY2Vzcy5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJRml4IENyZWF0ZVByb2Nlc3MoImM6XFByb2dyYW0gRmlsZXNcaGVsbG8uYmF0IikuCgoJKiB3aW5kb3dzL3dpbnByb2MuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCVdlIGNhbid0IHVzZSBSdGxDcmVhdGVVbmljb2RlU3RyaW5nRnJvbUFzY2lpeiBmb3IgV01fU0VUVEVYVCBhcyB0aGUKCXJlc3VsdGluZyB1bmljb2RlIHN0cmluZyBtYXkgYmUgZ3JlYXRlciB0aGFuIDB4ZmZmZiBieXRlcy4KCgkqIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglNYWtlIHN1cmUgd2UgZmluZCB0aGUgZHJhZyBhbmQgZHJvcCBmdW5jdGlvbnMgYmVmb3JlIGNhbGxpbmcgdGhlbS4KCgkqIGRsbHMvdXNlci90ZXN0cy9jbGFzcy5jLCB3aW5kb3dzL2NsYXNzLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJR2V0Q2xhc3NJbmZvIHJldHVybnMgY2xhc3MgYXRvbSBvbiBzdWNjZXNzLgoKCSogZGxscy9zaGVsbDMyL2NsYXNzZXMuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLAoJICBkbGxzL3NoZWxsMzIvc2hsZXhlYy5jOgoJVWxyaWNoIEN6ZWthbGxhIDx1Y3pla2FsbGFAY29kZXdlYXZlcnMuY29tPgoJSGFuZGxlIFNFRV9NQVNLX0NMQVNTS0VZIGNhc2UgZm9yIFNoZWxsRXhlY3V0ZS4KCgkqIGRsbHMvbmV0YXBpMzIvbmV0YXBpMzIuYywgZGxscy9uZXRhcGkzMi9uZXRhcGkzMi5zcGVjOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIHN0dWIgZm9yIE5ldFNlcnZlckVudW0uCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tYWluLmMsIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywKCSAgZGxscy9kZHJhdy9kM2R2aWV3cG9ydC5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUFkZGVkIHN1cHBvcnQgZm9yIG5vbi1mdWxsIHNjcmVlbiB2aWV3cG9ydHMgYW5kIGNsZWFyaW5nLgoKCSogZGxscy9nZGkvZW5obWZkcnYvZGMuYywgZGxscy9nZGkvZW5obWZkcnYvZW5obWV0YWZpbGVkcnYuaCwKCSAgZGxscy9nZGkvZW5obWZkcnYvaW5pdC5jOgoJSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudGVkIGEgZmV3IG1vcmUgZGV2aWNlIGNhcHMuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9maWxlLmM6IEZlcmVuYyBXYWduZXIgPHdmZXJpQHRiYS5lbHRlLmh1PgoJTmV3IF9sY3JlYXQgdGVzdHMgZm9yIGZpbGVuYW1lIGVuZGluZyBpbiBhIHNsYXNoIGFuZCB2b2x1bWUgbGFiZWwKCWF0dHJpYnV0ZS4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL250ZGxsL2Nkcm9tLmMsIGluY2x1ZGUvY29uZmlnLmguaW46CglZb3JpY2sgSGFyZHkgPHloQG1ldHJvd2ViLmNvLnphPgoJQWRkZWQgdGhlIGltcGxlbWVudGF0aW9uIGZvciBDRFJPTV9HZXRJZGVJbnRlcmZhY2Ugb24gTmV0QlNELgoKCSogZGxscy9vbGVhdXQzMi9zYWZlYXJyYXkuYzoKCVJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CglVc2UgY29ycmVjdCB0eXBlIG9mIHBvaW50ZXIgaW4gU2FmZUFycmF5Q3JlYXRlVmVjdG9yIHRvIGF2b2lkIG1lbW9yeQoJY29ycnVwdGlvbi4gQWRkIHRyYWNlcy4KCgkqIGRsbHMvc2hlbGwzMi9kZWJ1Z2hscC5jLCBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvcGlkbC5oOgoJUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCUFkZCBhIFBJREwgdHlwZSBGb3IgTmV0d29yayBQcm92aWRlci4KCgkqIGRsbHMvaXBobHBhcGkvaXBobHBhcGlfbWFpbi5jOiBQaWVycmUgZCdIZXJiZW1vbnQgPHN0ZWdlZmluQGZyZWUuZnI+CglJbmNsdWRlIGFycGEvbmFtZXNlci5oIGJlZm9yZSByZXNvbHYuaC4KCgkqIGNvbnRyb2xzL2VkaXQuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJUmV2ZXJ0IHRoZSBXTV9HRVRETEdDT0RFIGhhbmRsaW5nIHBhdGNoIGNvbXBsZXRlbHkgdGhpcyB0aW1lLiBJdAoJYnJlYWtzIHRvbyBtdWNoLgoKCSogZGxscy93aW5lZG9zL2ludDIxLmMsIG1zZG9zL2ludDIxLmM6IEp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCU1vdmUgZ2V0IGN1cnJlbnQgZHJpdmUgaW50MjEgZnVuY3Rpb24gdG8gd2luZWRvcy4KCUZpeCBzcGVsbGluZyBtaXN0YWtlcy4KCUFkZCBzb21lIGRyaXZlIGhhbmRsaW5nIGhlbHBlciByb3V0aW5lcy4KCgkqIGluY2x1ZGUvd2luZS9vYmpfc2hlbGxmb2xkZXIuaDoKCVJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CglGaXggdmFsdWUgb2YgSUlEX0lTaGVsbEZvbGRlcjIuCgoJKiBkbGxzL2RkcmF3L2RzdXJmYWNlL2RpYi5jOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJQmV0dGVyIGhhbmRsaW5nIG9mIHBpdGNoIHNldCB0byAwLgoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJQWRkZWQgUkdCIDMyIHN1cmZhY2UgbG9ja2luZyAoc2VlbXMgdG8gd29yayBmaW5lIHdpdGhvdXQgcmVzb3J0aW5nIHRvCglBbHBoYSBoYWNrcykuCgoJKiBkbGxzL3gxMWRydi93aW5wb3MuYzoKCU1ha2Ugc3VyZSBkcmF3YWJsZV9vcmcgaXMgc2V0IGNvcnJlY3RseSB3aGVuIHVzaW5nIG9uZSBvZiB0aGUgcGFyZW50cwoJYXMgZHJhd2FibGUgKGZvdW5kIGJ5IERtaXRyeSBUaW1vc2hrb3YpLgoKCSogZGxscy94MTFkcnYvd2luZG93LmM6CglBdm9pZCB0aGUgJ0JlbG93JyBzdGFja2luZyBtb2RlIHdoZW4gY2hhbmdpbmcgWiBvcmRlciBzaW5jZSBtYW55Cgl3aW5kb3cgbWFuYWdlcnMgZG9uJ3QgZ2V0IGl0IHJpZ2h0LgoJRml4IFogb3JkZXIgc3luY2hyb25pemF0aW9uIGZvciBjaGlsZCB3aW5kb3dzIChmb3VuZCBieSBEbWl0cnkKCVRpbW9zaGtvdiBhbmQgVWxyaWNoIEN6ZWthbGxhKS4KCgkqIGRsbHMveDExZHJ2L2V2ZW50LmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglNYXNrIG91dCBNV01PX1dBSVRBTEwgaWYgb25seSBzZXJ2ZXIgcXVldWUgaGFuZGxlIHdhcyBwYXNzZWQgaW4uCgoJKiBkbGxzL3dpbmVwcy9iaXRibHQuYywgZGxscy93aW5lcHMvYml0bWFwLmMsIGRsbHMvd2luZXBzL2JydXNoLmMsCgkgIGRsbHMvd2luZXBzL2NsaXBwaW5nLmMsIGRsbHMvd2luZXBzL2dyYXBoaWNzLmMsIGRsbHMvd2luZXBzL3BzLmMsCgkgIGRsbHMvd2luZXBzL3BzZHJ2LmgsIGRsbHMvd2luZXBzL3RleHQuYzoKCUh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglSZXdvcmsgY2xpcHBpbmcgc28gdGhhdCB0aGUgUFMgY2xpcCBwYXRoIGlzIG9ubHkgc2V0IGp1c3QgYmVmb3JlIGFueQoJZ3JhcGhpY3Mgb3V0cHV0IGV2ZW50LiBEb2luZyBpdCB0aGlzIHdheSBtZWFucyB3ZSBkb24ndCBldmVyIG5lZWQgdG8KCWNhbGwgaW5pdGNsaXAgd2hpY2ggaXMgYSBHb29kIFRoaW5nLgoKCSogZmlsZXMvZG9zX2ZzLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZWQgdW5uZWNlc3NhcnkgY2FzdHMuCgoJKiBpbmNsdWRlL3dpbmdkaS5oLCBvYmplY3RzL2NsaXBwaW5nLmMsIG9iamVjdHMvcmVnaW9uLmM6CglIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJR2V0UmFuZG9tUmduKC4uLiwxKSByZXR1cm5zIHRoZSBjdXJyZW50IGNsaXBwaW5nIHJnbi4KCU1vdmVkIEdldFJhbmRvbVJnbiBhbmQgdGhlIE1ldGFSZ24gZnVuY3Rpb25zIHRvIG9iamVjdHMvY2xpcHBpbmcuYy4KCgkqIHdpbmRvd3MvbWRpLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglSZXN0b3JlIE1ESSB3aW5kb3cgaW4gdGhlIGNhc2Ugb2YgZGlzYWJsZWQgbWF4aW1pemUgYnV0dG9uLgoKCSogd2luZG93cy9jdXJzb3JpY29uLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglJbml0aWFsaXplIGhibUNvbG9yIG9ubHkgZm9yIGNvbG9yIGljb25zIGluIEdldEljb25JbmZvLgoKCSogZGxscy91c2VyL21lc3NhZ2UuYywgaW5jbHVkZS93aW4uaCwgd2luZG93cy93aW4uYywgd2luZG93cy93aW5wb3MuYzoKCUNhdGNoIGJyb2FkY2FzdCB3aW5kb3cgaGFuZGxlcyBpbiBmdW5jdGlvbnMgdGhhdCBhcmUgaW1wbGVtZW50ZWQgdXNpbmcKCVNlbmRNZXNzYWdlLgoKCSogZGxscy91c2VyL3VzZXIzMi5zcGVjLCB3aW5kb3dzL21lc3NhZ2UuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudGVkIEJyb2FkY2FzdFN5c3RlbU1lc3NhZ2VXLgoKCSogZGxscy9zaGVsbDMyL3NobGV4ZWMuYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIHN1cHBvcnQgZm9yIHRoZSAlTCBlc2NhcGUuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgZGxscy9zaGVsbDMyL3VuZG9jc2hlbGwuaDoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudGVkIFJlYWRDYWJpbmV0U3RhdGUgYW5kIFdyaXRlQ2FiaW5ldFN0YXRlLgoKCSogZGxscy9zZXR1cGFwaS9NYWtlZmlsZS5pbiwgZGxscy9zZXR1cGFwaS9pbmZwYXJzZS5jLAoJICBkbGxzL3NldHVwYXBpL3F1ZXVlLmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJUmVzcGVjdCB0aGUgdmVyc2lvbiBTUF9DT1BZIGZsYWdzIHdoZW4gaW5zdGFsbGluZyBmaWxlcy4KCU1ha2UgR2VuSW5zdGFsbDE2IG9ubHkgY29weSBmaWxlcyBpZiB0aGUgdmVyc2lvbiBpcyBuZXcgb3Igc2FtZS4KCgkqIGRsbHMvb2xlMzIvb2xlMzIuc3BlYywgZGxscy9vbGUzMi9vbGUzMl9tYWluLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglTZW1pLWNvcnJlY3QgaW1wbGVtZW50YXRpb24gb2YgT2xlTWV0YWZpbGVQaWN0RnJvbUljb25BbmRMYWJlbC4KCgkqIGRsbHMvZ2RpL2VuaG1mZHJ2L2JpdGJsdC5jLCBkbGxzL2dkaS9lbmhtZmRydi9pbml0LmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnRlZCBTdHJldGNoRElCaXRzIGluIHRoZSBFTUYgY29kZS4KCgkqIGRsbHMvZ2RpL2VuaG1mZHJ2L2dyYXBoaWNzLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRml4ZWQgc29tZSBpc3N1ZXMgaW4gRU1GRFJWX0V4dFRleHRPdXQuCgoJKiBkbGxzL2dkaS9tZmRydi9pbml0LmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglSZWNvcmQgZXNjYXBlcyBpbiBtZXRhZmlsZXMuCgoyMDAzLTA1LTE3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9kZHJhdy9kM2RfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsCgkgIGRsbHMvZGRyYXcvZDNkZXhlY3V0ZWJ1ZmZlci5jLCBkbGxzL2RkcmF3L2RkcmF3X3ByaXZhdGUuaCwKCSAgZGxscy9kZHJhdy9tZXNhX3ByaXZhdGUuaDoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglTdXBwb3J0IGZvciBkZXZpY2Ugc3VyZmFjZSBsb2NraW5nLgoKCSogZGxscy9kM2Q4L2Jhc2V0ZXh0dXJlLmMsIGRsbHMvZDNkOC9jdWJldGV4dHVyZS5jLAoJICBkbGxzL2QzZDgvZDNkOF9wcml2YXRlLmgsIGRsbHMvZDNkOC9kZXZpY2UuYywgZGxscy9kM2Q4L2RpcmVjdHguYywKCSAgZGxscy9kM2Q4L3Jlc291cmNlLmMsIGRsbHMvZDNkOC9zaGFkZXIuYywgZGxscy9kM2Q4L3N0YXRlYmxvY2suYywKCSAgZGxscy9kM2Q4L3N1cmZhY2UuYywgZGxscy9kM2Q4L3RleHR1cmUuYywKCSAgZGxscy9kM2Q4L3ZzaGFkZXJkZWNsYXJhdGlvbi5jOgoJUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CgktIG1vciB1c2VmdWxsIGRlYnVnIGZ1bmN0aW9ucyBkZWJ1Z19kM2R1c2FnZSBhbmQgZGVidWdfZDNkZGV2aWNldHlwZQoJLSBmaXggYSBjcmFzaCBpbiBwaXhlbCBzaGFkZXIgcGFyc2VyIChoYXBwZW5lZCB3aXRoIHVucmVhbDIpCgktIGN1cnJlbnRseSBkZXNhY3RpdmUgcGl4ZWwgc2hhZGVycyBjYXBzICh3aXRoICNkZWZpbmUpIHdoaWxlIGh3CgkgIHNoYWRlcnMgY29kZSBpc24ndCBtZXJnZWQKCS0gd2hlbiB3ZSBoYXZlIGEgc3BlY2lhbCBkZWJ1ZyBjaGFubmVsIGZvciBzaGFkZXIsIHVzZSBpdCA7KQoJLSBmaXggYWdhaW4gc29tZSBzdHVicyByZXR1cm4gdmFsdWUKCS0gbW9yZSBtb3JlIHJlYWRhYmxlIHRyYWNlcyBub3cgKHByaW5jaXBhbHkgSURpcmVjdDNEOCBjYXBhY2l0aWVzCgkgIGNoZWNrIGFuZCBzdXJmYWNlIGxvY2tpbmcgY29kZSkgdXNpbmcgbmV3IGRlYnVnIGZ1bmN0aW9ucwoJLSBmaXgvY2xlYW5pbmcgdGhlIHN1cmZhY2UgbG9ja2luZyBjb2RlCgktIG5vdyB3ZSBzdXBwb3J0IEQzRFRPUF9TVUJTVFJBQ1Qgc28gZGVjbGFyZSBpdCBpbiBjYXBzCgktIG5vdyBzdXBwb3J0IHRydWUgMzJiaXQgKHdlbGwgWCAyNCBiaXQgY2FuIGJlIHVzZWQgYXMgMzIgYml0IGluIGNhcHMKCSAgY29kZSkKCS0gZmlyc3QgdHJ5IHRvIGdldCBEM0RUU1NfVENJX0NBTUVSQVNQQUNFTk9STUFMIGFuZAoJICBEM0RUU1NfVENJX0NBTUVSQVNQQUNFUkVGTEVDVElPTlZFQ1RPUiBsb29rIGdvb2QKCS0gbmF0aXZlIHN1cHBvcnQgMzIgYml0IHN1cHBvcnQgKG5vdyBhcHBsaWNhdGlvbiBjYW4gY2hvb3NlIDE2IG9yIDMyCgkgIGJpdCBzdXBwb3J0KSBpZiBjdXJyZW50IHJlc29sdXRpb24gaXMgMjQgYml0IChhcyB3ZSBjYW4gb25seSBsYXVuY2gKCSAgZ2FtZXMgaW4gd2luZG93ZWQgbW9kZSkKCS0gdGV4dHVyZXMgcGFsZXR0ZXMgc3VwcG9ydAoJLSBmaXggcmVmbGV4aW9uIHBsYWNlbWVudCBjb2RlICh0aGUgc2RrIHNhbXBsZSBiZWdpbiB0byB3b3JrKQoJLSBmaXggYSBzdHVwaWQgY3Jhc2ggd2hlbiB1c2luZyB0cmFjZXMgaW4gdnNoYWRlcmRlY2xhcmF0aW9uCgktIG1vcmUgbW9yZSByZWFkYWJsZSB0cmFjZXMgKGluaXQvY2FwcykKCS0gbW9yZSBjdWJldGV4dHVyZXMgZml4ZXMKCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywgZGxscy9kZHJhdy9tZXNhLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJU2lsZW5jZSBzb21lIFRSQUNFcyB0byBiZXR0ZXIgc3BvdCByZWFsIGVycm9ycy4KCgkqIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jOgoJU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtTGluZS5jb20+CglQYXJ0aWFsIGltcGxlbWVudGFpb24gb2YgVmFyQnN0ckZyb21EZWMuCgoyMDAzLTA1LTE2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy91c2VyL2hvb2sxNi5jLCBkbGxzL3VzZXIvd25kMTYuYywgbG9hZGVyL3Rhc2suYywKCSAgd2luZG93cy9jdXJzb3JpY29uLmM6CglBdm9pZCB1c2luZyB0aGUgTWFwSE1vZHVsZSBmdW5jdGlvbnMuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBkbGxzL3VzZXIvdXNlcl9tYWluLmMsIGxvYWRlci9uZS9tb2R1bGUuYzoKCUNhbGwgdGhlIHVzZXIgc2lnbmFsIHByb2MgZm9yIGV4ZSBtb2R1bGVzIHRvbywgdG8gYXZvaWQgZHVwbGljYXRpbmcKCXRoZSBtb2R1bGUgY2xlYW51cCBjb2RlLgoKCSogZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL2xvY2FsMTYuYywgbWVtb3J5L2hlYXAuYywKCSAgbWVtb3J5L2xvY2FsLmM6CglNb3ZlZCBtb3N0IGxvY2FsIGhlYXAgZnVuY3Rpb25zIHRvIGRsbHMva2VybmVsLgoKCSogZGxscy9vbGVhdXQzMi92YXJpYW50LmMsIGluY2x1ZGUvd3R5cGVzLmgsIGluY2x1ZGUvd3R5cGVzLmlkbDoKCVN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJRml4ZWQgREVDSU1BTF9TRVRaRVJPCglSZW1vdmVkIGEgd29ya2Fyb3VuZCBmb3IgdGhlIGZvcm1lciBwcm9ibGVtLgoKCSogdG9vbHMvd2luZWluc3RhbGw6IE1pa2UgSGVhcm4gPG1pa2VAdGhlb3JldGljLmNvbT4KCVNpbGVuY2UgZXJyb3Igb24gbm9uLXJlZGhhdCBzeXN0ZW1zLgoKCSogdG9vbHMvYzJtYW4ucGw6IEhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJRm9yY2UgcGVybCB0byB1c2UgYnl0ZSBzZW1hbnRpY3MuCgoJKiBkbGxzL3dpbmluZXQvaHR0cC5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJSFRUUF9IdHRwT3BlblJlcXVlc3RBOiBDYWxjdWxhdGUgc2l6ZSBmcm9tIHRoZSByaWdodCBhcmd1bWVudC4KCgkqIGdyYXBoaWNzL2JpdGJsdC5jOiBKYWVraWwgTGVlIDxKYWVraWwuTGVlQGVmaS5jb20+CglJbXBsZW1lbnQgTWFza0JsdCB1c2luZyBCaXRCbHQgKGFkYXB0ZWQgYnkgRGltaXRyaWUgTy4gUGF1bikuCgoJKiBkbGxzL2QzZDgvZGV2aWNlLmM6IEphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglJbXBsZW1lbnQgdGV4dHVyZSB0cmFuc2Zvcm0gZmxhZ3MgdGhlIGJlc3Qgd2UgY2FuIGZvciBub3cuCgoJKiBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwvYXRvbS5jLCBkbGxzL250ZGxsL01ha2VmaWxlLmluLAoJICBtZW1vcnkvYXRvbS5jOgoJTW92ZWQgYXRvbSBmdW5jdGlvbnMgdG8gZGxscy9rZXJuZWwuCgoJKiBkbGxzL2QzZDgvZGV2aWNlLmM6IEphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglGaXhlZCByYW5nZSBjaGVja2luZyBvbiB0aGUgbnVtYmVyIG9mIGxpZ2h0cy4KCVNpbGVuY2UgdGhlIGZpeG1lcy4KCjIwMDMtMDUtMTUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9jb21jdGwzMi9NYWtlZmlsZS5pbiwKCSAgZGxscy9jb21jdGwzMi90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL2NvbWN0bDMyL3Rlc3RzL01ha2VmaWxlLmluLAoJICBkbGxzL2NvbWN0bDMyL3Rlc3RzL2RwYS5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJTmV3IGNvbWN0bDMyIHRlc3QgZGlyZWN0b3J5IGFuZCB0ZXN0IGNhc2UgZm9yIERQQV9TZWFyY2guCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCURQQV9TZWFyY2g6IEhhbmRsZSBEUEFTX0lOU0VSVEJFRk9SRSBvbiBlbXB0eSBsaXN0LgoKCSogZGxscy9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwvLmN2c2lnbm9yZSwgZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sCgkgIGRsbHMva2VybmVsL3dwcm9jcy5zcGVjLCBkbGxzL250ZGxsL01ha2VmaWxlLmluLAoJICBkbGxzL3dpbmVkb3MvLmN2c2lnbm9yZSwgZGxscy93aW5lZG9zL01ha2VmaWxlLmluLAoJICBkbGxzL3dpbmVkb3MvdnhkLmMsIGRsbHMvd2luZWRvcy93cHJvY3Muc3BlYywgbXNkb3MvdnhkLmM6CglNb3ZlZCB2eGQgc3VwcG9ydCB0byB3aW5lZG9zLgoKCSogZGxscy9kM2Q4L2RldmljZS5jOiBKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJU3VwcGx5IHRoZSBjb3JyZWN0IGJveCBvbiB0aGUgc2NyZWVuIHRvIGJlIHByb2Nlc3NlZCBkdXJpbmcgdGhlIGNsZWFyCgljYWxsLCB1c2luZyBvcGVuZ2wgY29vcmRpbmF0ZXMsIG5vdCBkaXJlY3R4IGNvb3JkaW5hdGVzLgoKCSogZGxscy91c2VyL3VzZXIuZXhlLnNwZWMsIGRsbHMvdXNlci91c2VyMTYuYywgaW5jbHVkZS9tb2R1bGUuaCwKCSAgaW5jbHVkZS91c2VyLmgsIGxvYWRlci9uZS9tb2R1bGUuYywgbG9hZGVyL25lL3NlZ21lbnQuYywKCSAgbG9hZGVyL3Rhc2suYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2NoZWR1bGVyL3RocmVhZC5jLAoJICB3aW5kb3dzL3VzZXIuYzoKCUdldCByaWQgb2YgdGhlIDMyLWJpdCB1c2VyIHNpZ25hbCBwcm9jIHNpbmNlIHdlIGFsd2F5cyBydW4gYnVpbHRpbgoJVVNFUiBub3cuICBNb3ZlZCBVU0VSIG1vZHVsZSBjbGVhbnVwcyB0byB0aGUgMTYtYml0IHNpZ25hbCBwcm9jLgoKCSogZGxscy9vbGVhdXQzMi9vbGVhdXQzMi5zcGVjLCBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYzoKCVN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJQWRkZWQgc3R1YiBmb3IgVmFyQnN0ckZyb21EZWMuCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglIYW5kbGUgVlRfSTIgPC0+IFZUX1VTRVJERUZJTkVEL1RLSU5EX0VOVU0gY29udmVyc2lvbnMgdG9vLgoKCSogZmlsZXMvZmlsZS5jOiBQaGlsaXAgTWFzb24gPHBtYXNvbkByaWNhcmRvLmNvbT4KCUZvcmNlIEZJTEVfR2V0VGVtcEZpbGVOYW1lIHRvIGNvbnRpbnVlIGxvb2tpbmcgZm9yIG5ldyB0ZW1wIGZpbGUgbmFtZQoJaWYgZXJyb3IgcmV0dXJuZWQgZnJvbSBDcmVhdGVGaWxlVyBpcyBFUlJPUl9TSEFSSU5HX1ZJT0xBVElPTi4KCgkqIGRsbHMvZDNkOC9kZXZpY2UuYzogSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCVNvbHZlZCB0aGUgdHJhbnNwYXJlbmN5IHByb2JsZW0gc2VlbiBpbiB0aGUgQ2xpcE1pcnJvciBTREsgc2FtcGxlCglwcm9wZXJseS4gQWxzbyBhIGZldyB0YWJzLT5zcGFjZXMgdG8gY29ycmVjdCBmb3JtYXR0aW5nLgoKCSogZGxscy9vbGUzMi9NYWtlZmlsZS5pbiwgZGxscy9vbGUzMi9tZW1sb2NrYnl0ZXMuYywKCSAgZGxscy9vbGUzMi9tZW1sb2NrYnl0ZXMxNi5jOgoJU3RldmVuIEVkd2FyZHMgPFN0ZXZlbl9FZDQxNTNAeWFob28uY29tPgoJU2VwYXJhdGUgV2luMTYgYW5kIFdpbjMyIGltcGxlbWVudGF0aW9ucyBpbiBtZW1sb2NrYnl0ZXMuCgoJKiBkbGxzL2lwaGxwYXBpL2lwc3RhdHMuYzogR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglJbiBnZXRUY3BUYWJsZSgpLCBndWFyZCBMaW51eC1zcGVjaWZpYyBjb25zdGFudHMgYnkgI2lmZGVmLgoKCSogZGxscy93aW5lZG9zL2ludDIxLmM6IFRob21hcyBNZXJ0ZXMgPHRob21hcy5tZXJ0ZXNfYXRfZ214LmF0PgoJSW1wbGVtZW50IGZpbGUgY29udHJvbCBibG9jayAoRkNCKSBmdW5jdGlvbnM6CgkgIElOVDIxX09wZW5GaWxlVXNpbmdGQ0IgWzB4MGZdLAoJICBJTlQyMV9DbG9zZUZpbGVVc2luZ0ZDQiBbMHgxMF0sCgkgIElOVDIxX1NlcXVlbmlhbFJlYWRGcm9tRkNCIFsweDE0XSwKCSAgSU5UMjFfU2VxdWVuaWFsV3JpdGVUb0ZDQiBbMHgxNV0sCgkgIElOVDIxX1JlYWRSYW5kb21SZWNvcmRGcm9tRkNCIFsweDIxXSwKCSAgSU5UMjFfV3JpdGVSYW5kb21SZWNvcmRUb0ZDQiBbMHgyMl0sCgkgIElOVDIxX1JhbmRvbUJsb2NrUmVhZEZyb21GQ0IgWzB4MjddLAoJICBJTlQyMV9SYW5kb21CbG9ja1dyaXRlVG9GQ0IgWzB4MjhdLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvcGlwZS5jOiBEYW4gS2VnZWwgPGRhbmtAa2VnZWwuY29tPgoJTW9yZSBuYW1lZCBwaXBlcyB0ZXN0cy4KCgkqIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvbWFrZV9kbGxzOgoJRXhwbGljaXRseSBjbGVhbiBnZW5lcmF0ZWQgc3ltbGlua3MuCglSZW1vdmVkIG5vIGxvbmdlciBuZWVkZWQgaW5zdGFsbCBkZXBlbmRlbmNpZXMuCgoJKiBkbGxzL2tlcm5lbC9zeW5jLmMsIGRsbHMva2VybmVsL3Rlc3RzL3BpcGUuYywgZGxscy9udGRsbC9maWxlLmMsCgkgIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwgc2VydmVyL2ZkLmMsIHNlcnZlci9maWxlLmMsCgkgIHNlcnZlci9maWxlLmgsIHNlcnZlci9oYW5kbGUuYywgc2VydmVyL25hbWVkX3BpcGUuYywKCSAgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3NlcmlhbC5jLCBzZXJ2ZXIvdHJhY2UuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gcmV3cml0ZSBvZiB0aGUgbmFtZWQgcGlwZSBjb2RlCgktIGFsbG93IE50RmlsZUZsdXNoQnVmZmVycyB0byB3YWl0CgktIGFsbG93IERpc2Nvbm5lY3ROYW1lZFBpcGUgdG8gaW52YWxpZGF0ZSBjbGllbnQgY2FjaGVkIGZkCgktIGZpeCB0aGUgcGlwZSB0ZXN0IG5vdyB0aGF0IG9uZSBleHRyYSB0ZXN0IHBhc3NlcwoKCSogZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL250ZGxsL3BhdGguYywgZGxscy9udGRsbC9ydGwuYywKCSAgaW5jbHVkZS93aW50ZXJubC5oLCBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglJbXBsZW1lbnRlZCBSdGxEb3NQYXRoTmFtZVRvTnRQYXRoTmFtZV9VLCBSdGxHZXRDdXJyZW50RGlyZWN0b3J5X1UsCglSdGxHZXRGdWxsUGF0aE5hbWVfVSBhbmQgUnRsU2V0Q3VycmVudERpcmVjdG9yeV9VICh0aGUgbGFzdCBvbmUKCXBhcnRpYWxseSBhcyB3ZSBjYW4ndCB0ZXN0IHdoZXRoZXIgYSBwYXRoIGV4aXN0cyBvciBub3QpLgoKCSogZGxscy9pbW0zMi9pbW0uYzogUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CglGaXggYSBudWxsIHBvaW50ZXIgY3Jhc2ggaW4gSW1tR2V0T3BlblN0YXR1cy4KCgkqIGRsbHMvZDNkOC9jdWJldGV4dHVyZS5jOiBSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCUZpeCBjb21waWxhdGlvbiBlcnJvciByZXBvcnRlZCBieSBTdGVmYW4gTGVpY2h0ZXIgd2hlbiB1c2luZyBvbGQKCW9wZW5HTCBoZWFkZXJzLgoKCSogZGxscy9kM2Q4L2RpcmVjdHguYzogSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCVByZXZpb3VzIHZpZXdwb3J0IGZpeCBvbmx5IHdvcmtzIGZvciBmdWxsIHNjcmVlbiBhcHBsaWNhdGlvbnMgYXMgd2UKCWRpZG4ndCBjaGFuZ2UgdGhlIGJhY2sgYnVmZmVyIHNpemUgaW5mb3JtYXRpb24gdW50aWwgYWZ0ZXIgY29weWluZyB0aGUKCXByZXNlbnRhdGlvbiBwYXJhbWV0ZXJzLCBzbyB3aGVuIHNldHRpbmcgdXAgdGhlIHZpZXdwb3J0IHRoZQoJYmFja2J1ZmZlcndpZHRoL2hlaWdodCB3YXMgMC4gTW92ZWQgdGhlIGNvcHkgdW50aWwgYWZ0ZXIgaXQgaGFzIGJlZW4KCWNvcnJlY3RlZC4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzIuc3BlYywgZGxscy9vbGVhdXQzMi92YXJpYW50LmM6CglTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCVBhcnRpYWwgaW1wbGVtZW50YXRpb24gb2YgVmFyRGVjRnJvbVN0ci4KCgkqIGNvbnRyb2xzL2VkaXQuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJUmV2ZXJ0IHRoZSBwcmV2aW91cyBwYXRjaCBmb3IgY2FwdHVyaW5nIGtleXMgaW4gYW4gZWRpdC1saXN0Ym94IGNvbWJvLgoKMjAwMy0wNS0xNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbnRkbGwvbG9hZGVyLmMsIGluY2x1ZGUvbW9kdWxlLmgsIGxvYWRlci9wZV9pbWFnZS5jLAoJICBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzY2hlZHVsZXIvdGhyZWFkLmM6CglSZXdyb3RlIG1vZHVsZSBUTFMgc3VwcG9ydCBhbmQgbW92ZWQgaXQgdG8gbnRkbGwuCgoJKiBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmMsIGluY2x1ZGUvbWlzY2VtdS5oLCBtZW1vcnkvaW5zdHIuYzoKCU1hZGUgSU5TVFJfRW11bGF0ZUluc3RydWN0aW9uIHJldHVybiB0aGUgZXhjZXB0aW9uIGNvZGUuCglEb24ndCBhbGxvdyBpbnRYWCBpbnN0cnVjdGlvbnMgZnJvbSAzMi1iaXQgY29kZSAoYmFzZWQgb24gYSBwYXRjaCBieQoJSnVra2EgSGVpbm9uZW4pLgoKCSogdG9vbHMvd2luZWJ1aWxkL2ltcG9ydC5jOgoJT25seSBwcmludCB3YXJuaW5nIG9uIG5tIGZhaWx1cmUgYmVjYXVzZSBpdCBmYWlscyBvbiBkYXJ3aW4gaWYgdGhlcmUKCWFyZSBubyBzeW1ib2xzIChyZXBvcnRlZCBieSBQaWVycmUgZCdIZXJiZW1vbnQpLgoKCSogZGxscy93aW5tbS93aW5lamFjay9NYWtlZmlsZS5pbjogTWFyY3VzIE1laXNzbmVyIDxtZWlzc25lckBzdXNlLmRlPgoJd2luZWphY2suZHJ2LnNvIG5lZWRzIC1sd2luZV91dWlkIHRvby4KCgkqIGRsbHMvZDNkOC9zaGFkZXIuYzogUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CgktIG5ldyBkZWJ1ZyBjaGFubmVsIGZvciBzaGFkZXJzIGNvZGUgJ2QzZF9zaGFkZXInCgktIG1vcmUgZGVidWdnaW5nIHRyYWNlcwoKCSogZGxscy9kM2Q4L2QzZDhfcHJpdmF0ZS5oLCBkbGxzL2QzZDgvZGV2aWNlLmM6CglSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCS0gZGVjbGFyZSBhIG5ldyBkZWJ1ZyBjaGFuZWwgZm9yIHZlcnRleCBzaGFkZXJzCgktIHNvbWUgdXNlZnVsIGRlYnVnIGZ1bmN0aW9ucyBmb3IgdGV4dHVyZXMgZm9ybWF0CgktIGNvcnJlY3QgRHJhd1ByaW1pdGl2ZSAoUkhXIGNvcnJlY3RuZXNzIGFuZCB2c2hhZGVyIFJIVykKCS0gbW9yZSBjb3B5cmVjdHMgZml4ZXMgKG9ubHkgdHdvIHVuaW1wbGVtZW50ZWQgYmVoYXZpb3IgcmVtYWluKQoJLSBmaXggR2V0RnJvbnRCdWZmZXIgdG8gZ2V0IHNjcmVlbnNob3RzIHNhbXBsZXMgd29ya2luZwoJLSBhZGQgRDNEQ09MT1JUT0dMRkxPQVQ0IGFuZCB1c2UgaXQKCS0gZmlyc3QgdHJ5IG9mIEQzRFJTX0ZPR1RBQkxFTU9ERSBzdXBwb3J0CgoJKiBkbGxzL2QzZDgvZGlyZWN0eC5jOiBSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCURlY2xhcmUgdGhhdCB3ZSBjYW4gc3VwcG9ydCBjdWJlIHRleHR1cmVzIG5vdyAoY3VycmVudGx5IG9ubHkgY3JlYXRpb24KCWlzIGRvbmUpLgoKCSogaW5jbHVkZS93aW51c2VyLmg6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglBZGQgbWlzc2luZyBFTkRTRVNTSU9OX0xPR09GRiBkZWZpbmUuCgoJKiBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVVzZSBTZXREbGdJdGVtVGV4dCBpbnN0ZWFkIG9mIHNlbmRpbmcgYSBXTV9TRVRURVhULgoKCSogZGxscy9kM2Q4L2RldmljZS5jOiBKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJTWFrZSBzdXJlIHRoZSB2aWV3cG9ydCBpcyBmcm9tIHRoZSBHTCAoYm90dG9tIGxlZnQpIG5vdCB0aGUgRGlyZWN0WAoJKHRvcCBsZWZ0KS4KCjIwMDMtMDUtMTMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2dkaS9lbmhtZmRydi9pbml0LmMsIGRsbHMvZ2RpL21mZHJ2L2luaXQuYywgZGxscy90dHlkcnYvZGMuYywKCSAgZ3JhcGhpY3MveDExZHJ2L2JpdGJsdC5jLCBncmFwaGljcy94MTFkcnYvZGliLmMsCgkgIGdyYXBoaWNzL3gxMWRydi9ncmFwaGljcy5jLCBncmFwaGljcy94MTFkcnYvaW5pdC5jLAoJICBncmFwaGljcy94MTFkcnYvcGFsZXR0ZS5jLCBpbmNsdWRlL2dkaS5oLCBvYmplY3RzL2JpdG1hcC5jLAoJICBvYmplY3RzL2RjLmMsIG9iamVjdHMvZ2Rpb2JqLmM6CglVc2UgYSBkaWZmZXJlbnQgbWFnaWMgZm9yIG1lbW9yeSBEQ3MgYW5kIGdldCByaWQgb2YgdGhlIERDX01FTU9SWQoJZmxhZy4KCgkqIGRsbHMvZDNkOC92b2x1bWV0ZXh0dXJlLmM6IFJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJLSBtb3ZlZCBsb2FkaW5nIGNvZGUgb2Ygdm9sdW1lIHRleHR1cmUgdG8gVm9sdW1lVGV4dHVyZTo6UHJlbG9hZCBhcwoJICBkb25lIGluIFRleHR1cmUvQ3ViZVRleHR1cmUKCS0gZml4ZWQgc29tZSBzdHVicyByZXR1cm4gdmFsdWVzCgoJKiBkbGxzL2QzZDgvY3ViZXRleHR1cmUuYzogUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CgktIGN1YmV0ZXh0dXJlIGxvYWRpbmcvcHJlbG9hZGluZwoJLSBzb21lIHN0dWJzIG11c3QgcmV0dXJuIDAgKGFuZCBub24gRDNEX09LKQoJLSBmaXggSURpcmVjdDNEQ3ViZVRleHR1cmU4SW1wbDo6R2V0KiAocG90ZW50aWFscyBDRCkKCgkqIGRsbHMvZDNkOC9kZXZpY2UuYzogSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCVByb3Blcmx5IHN1cHBvcnQgdGV4dHVyZSBjb29yZGluYXRlIGluZGV4ZXMuCgoJKiBkbGxzL2QzZDgvZGlyZWN0eC5jOiBKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJTWFrZSBzdXJlIHdlIGFkdmVydGl6ZSBvdXIgY2FwYWJpbGl0ZXMgY29ycmVjdGx5LgoKCSogZGxscy9rZXJuZWwvdGVzdHMvcGF0aC5jOiBNYWtlIHRoZSB0ZXN0IHBhc3Mgb24gTlQ0IHRvby4KCgkqIGRsbHMvZDNkOC9zdGF0ZWJsb2NrLmM6IEphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglJbml0aWFsaXplIHRoZSB0ZXggY29vcmQgaW5kZXggY29ycmVjdGx5LgoKCSogZGxscy9kM2Q4L2RldmljZS5jOiBKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJQ29weVJlY3RzIG5lZWRzIHRvIGxvY2sgdGhlIGFyZWEgaXQgaXMgY29weWluZyB0byAoZXNwLiBpZiB0aGF0IGFyZWEKCWlzIHRoZSBiYWNrIGJ1ZmZlciwgYXMgbG9ja2luZy91bmxvY2tpbmcgY2F1c2VzIGdscmVhZC9kcmF3IHBpeGVscykuCgoJKiBkbGxzL2QzZDgvZGlyZWN0eC5jOiBDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglNYXJrIHNvbWUgc3VyZmFjZSBmb3JtYXRzIGFzIG5vdCBzdXBwb3J0ZWQuCgoJKiBkbGxzL21zdmNydC9zY2FuZi5oLCBkbGxzL21zdmNydC90ZXN0cy9zY2FuZi5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJRml4IHNvbWUgc3NjYW5mIGNhc2VzIGFuZCB0ZXN0Y2FzZSB0byBnZXQgd3h0aWRlMzIuZXhlIHJ1bm5pbmcuCgoJKiBkbGxzL3VzZXIvZXh0aWNvbi5jOiBSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJUHJpdmF0ZUV4dHJhY3RJY29uKiBzaG91bGQgc2VhcmNoIHRoZSBwYXRoIGZvciB0aGUgaWNvbiBmaWxlLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6IFZpdGFsaXkgTWFyZ29sZW4gPHdpbmUtcGF0Y2hAa2lldmluZm8uY29tPgoJUmV2ZXJ0IGNoYW5nZSBmb3IgcmVzaXppbmcgYnV0dG9ucy4KCgkqIGRsbHMvaXBobHBhcGkvaXBobHBhcGlfbWFpbi5jLCBkbGxzL2lwaGxwYXBpL2lwc3RhdHMuYzoKCUdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJQWRkIG1pc3NpbmcgI2luY2x1ZGVzIGZvciBub24tTGludXggc3lzdGVtcy4KCgkqIHRvb2xzL3dpbmVpbnN0YWxsOiBNaWtlIEhlYXJuIDxtaWtlQHRoZW9yZXRpYy5jb20+CglNYWtlIHN1cmUgcHJlZml4IGlzIGFjdHVhbGx5IGhvbm91cmVkIGJ5IGNvbmZpZ3VyZS4KCVRlbXBvcmFyeSBoYWNrIGZvciByZWRoYXQgdXNlcnMgdG8gZW5hYmxlIE5QVEwuCgoJKiBkbGxzL2tlcm5lbC9yZXNvdXJjZS5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRml4IGFuIG9idmlvdXMgdHlwbyBpbiBnZXRfcmVzX25hbWUuIFNwb3R0ZWQgYnkgTWlrZSBNY0Nvcm1hY2suCgoJKiBkbGxzL29sZWF1dDMyL3Rlc3RzL3NhZmVhcnJheS5jLCBkbGxzL29sZWF1dDMyL3Rlc3RzL3ZhcnRlc3QuYzoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglNYWtlIHN1cmUgd2luc29jay5oIGdldHMgaW5jbHVkZWQgYmVmb3JlIHN0ZGxpYi5oLgoKCSogZGxscy91c2VyL3VzZXIzMi5zcGVjLCBpbmNsdWRlL3dpbnVzZXIuaCwgd2luZG93cy9xdWV1ZS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50ZWQgU2V0TWVzc2FnZUV4dHJhSW5mby4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL3BhdGguYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIGEgdGVzdCBmb3IgR2V0TG9uZ1BhdGhOYW1lQSgiYzoiKS4KCUFkZGVkIGEgdGVzdCBmb3IgR2V0RnVsbFBhdGhOYW1lQSgiYzoiKS4KCUZpeCBhIG51bWJlciBvZiBtZXNzYWdlcyB0aGF0IHJlZmVycmVkIHRvIEdldExvbmdQYXRoTmFtZSBpbnN0ZWFkIG9mCglHZXRGdWxsUGF0aE5hbWUuCgoJKiBkbGxzL3NoZG9jdncvLmN2c2lnbm9yZSwgZGxscy9zaGRvY3Z3L01ha2VmaWxlLmluLAoJICBkbGxzL3NoZG9jdncvdmVyc2lvbi5yYywgZGxscy93aW5zb2NrLy5jdnNpZ25vcmUsCgkgIGRsbHMvd2luc29jay9NYWtlZmlsZS5pbiwgZGxscy93aW5zb2NrL3ZlcnNpb24ucmMsCgkgIGRsbHMvd3NvY2szMi8uY3ZzaWdub3JlLCBkbGxzL3dzb2NrMzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvd3NvY2szMi92ZXJzaW9uLnJjOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIHZlcnNpb24gaW5mb3JtYXRpb24uCgoJKiBkbGxzL3dpbnNwb29sL2luZm8uYywgZGxscy93aW5zcG9vbC93aW5zcG9vbC5kcnYuc3BlYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglTdHViIEFkZFBvcnRBLgoKCSogZGxscy91c2VyL21lc3NhZ2UuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4ZWQgcGFja2luZy91bnBhY2tpbmcgb2YgV01fV0lOSU5JQ0hBTkdFLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmM6CglVbHJpY2ggQ3pla2FsbGEgPHVjemVrYWxsYUBjb2Rld2VhdmVycy5jb20+CglQYXJ0aWFsIGltcGxlbWVudGF0aW9uL3N0dWIgb2YgdW5kb2N1bWVudGVkIGZ1bmN0aW9uIHNoZWxsMzIuMjU2LgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJUGFzcyBjb3JyZWN0IHBvaW50ZXIgdG8gQ29DcmVhdGVJbnN0YW5jZSBpbiBTSExvYWRJblByb2MuCgoJKiBkbGxzL3NldHVwYXBpL2Rldmluc3QuYywgZGxscy9zZXR1cGFwaS9zZXR1cHguc3BlYzoKCUh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgYSBsb2FkIG9mIHNldHVweCBEaSogc3R1YnMuCgoJKiBkbGxzL3NldHVwYXBpL2luc3RhbGwuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCVVzZSBzdHJ0b3VsVyBpbnN0ZWFkIG9mIHN0cnRvbFcgZm9yIERXT1JEIGNvbnZlcnNpb24uCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZSByZWR1bmRhbnQgSVR5cGVMaWIyX0FkZFJlZidzLiBNYWtlcwoJTG9hZFR5cGVMaWIvSVR5cGVMaWIyX1JlbGVhc2Ugd29yay4KCgkqIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL29sZTMyLnNwZWM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBzdHViIGZvciBPbGVEb0F1dG9Db252ZXJ0LgoKCSogZGxscy9pbW0zMi9NYWtlZmlsZS5pbiwgZGxscy9pbW0zMi9pbW0uYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnRlZCBhIG51bWJlciBvZiBJTU0gZnVuY3Rpb25zLgoJQ3JlYXRlIGEgZGVmYXVsdCBIV05EIHRvIHByb2Nlc3MgV01fSU1FIG1lc3NhZ2VzLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGcuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUJldHRlciBoYW5kbGluZyBvZiBPRk5fTk9WQUxJREFURSBmb3Igd2luMzEgc3R5bGUgZmlsZSBkaWFsb2dzLgoKCSogZGxscy9jb21jdGwzMi9wYWdlci5jOiBVbHJpY2ggQ3pla2FsbGEgPHVjemVrYWxsYUBjb2Rld2VhdmVycy5jb20+CglGaXhlZCBiYWQgbm9uLWNsaWVudCBjYWxjdWxhdGlvbi4KCgkqIGRsbHMvY29tY3RsMzIvZGF0ZXRpbWUuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBEVE1fU0VUU1lTVEVNVElNRS4KCU1ha2UgdGhlIHNob3cvaGlkZSBidXR0b24gYWN0dWFsbHkgZG8gc29tZXRoaW5nLgoJQWRkIHN1cHBvcnQgZm9yIHRoZSAneXl5eScgZm9ybWF0LgoKCSogZGxscy9pcGhscGFwaS9pZmVudW0uYzogRml4ZWQgc29tZSBzdHJpbmcgb3ZlcmZsb3dzLgoKCSogZGxscy9pcGhscGFwaS8uY3ZzaWdub3JlOiBBZGRlZCBpcGhscGFwaS5zcGVjLmRlZi4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL3BpcGUuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCU1ha2Ugc3VyZSB3aW5zb2NrLmggZ2V0cyBpbmNsdWRlZCBiZWZvcmUgc3RkbGliLmguCgoJKiBkb2N1bWVudGF0aW9uL3dpbmVsaWItaW50cm8uc2dtbDogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUZpeCBhIGZldyBzdHlsZSBpc3N1ZXMuCgoJKiB0b29scy93aW5lZHVtcC9tYWluLmMsIHRvb2xzL3dpbmVkdW1wL3BlLmM6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCUxpc3RlZCByZWNlbnRseSBhZGRlZCBzZWN0aW9ucycgdHlwZXMgKHJlc291cmNlLCB0bHMpIGZvciBkdW1waW5nIHRvCgl1c2FnZSBzdHJpbmdzLgoJRml4ZWQgc29tZSBoZWFkZXIgc2l6ZSB0ZXN0aW5nLgoKCSogcHJvZ3JhbXMvd2luZWNvbnNvbGUvcmVnaXN0cnkuYzogRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglRdWlldCBzb21lIHZhbGdyaW5kIHJlcG9ydHMuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL2tlcm5lbC90ZXN0cy9NYWtlZmlsZS5pbiwKCSAgZGxscy9rZXJuZWwvdGVzdHMvY29uc29sZS5jOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglBZGRlZCBhIHNldCBvZiB0ZXN0cyBmb3IgdGhlIGNvbnNvbGUgQVBJLgoKCSogZGxscy9rZXJuZWwvY29uc29sZS5jOiBFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCUZpeGVkIGNvbnNvbGUgb3V0cHV0IGZvciBub24gd3JhcHBlZCBtb2RlLgoKCSogZGxscy9udGRsbC90ZXN0cy9lbnYuYzogRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglFbmhhbmNlZCB0ZXN0IGZvciBxdWVyaWVzLCBhZGRlZCB0ZXN0cyBmb3IgZXhwYW5zaW9uLgoKCSogZGxscy9udGRsbC9lbnYuYywgZGxscy9udGRsbC9udGRsbC5zcGVjLCBpbmNsdWRlL3dpbnRlcm5sLmg6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCUltcGxlbWVudGVkIFJ0bEV4cGFuZEVudmlyb25tZW50U3RyaW5nc19VIGFuZCBmaXhlZCBhbiBpbmNvcnJlY3QKCWJlaGF2aW9yIGluIFJ0bFF1ZXJ5RW52aXJvbm1lbnRTdHJpbmcuCgoJKiB0b29scy93aW5lZ2NjLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglJZ25vcmUgLW10aHJlYWRzLCBpdCdzIG5vdCBuZWVkZWQgaW4gVW5peC4KCgkqIGRsbHMvc2hkb2N2dy9zaGRvY3Z3LnNwZWMsIGRsbHMvc2hkb2N2dy9zaGRvY3Z3X21haW4uYzoKCUFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCUFkZGVkIHNvbWUgc3R1YnMgbmVlZGVkIGZvciBXaW45OCBleHBsb3Jlci5leGUuCgoJKiBkbGxzL3dzb2NrMzIvTWFrZWZpbGUuaW4sIGRsbHMvd3NvY2szMi9zb2NrZXQuYywKCSAgZGxscy93c29jazMyL3dzY29udHJvbC5oOgoJSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJQ2hhbmdlZCB3c29jazMyIHRvIHVzZSB0aGUgbmV3IGlwaGxwYXBpIGZvciBpbnRlcmZhY2UgYW5kIHJvdXRlCgllbnVtZXJhdGlvbiBpbiBXc0NvbnRyb2wuCgoJKiBkbGxzL3dpbnNvY2svTWFrZWZpbGUuaW4sIGRsbHMvd2luc29jay9zb2NrZXQuYzoKCUp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCVVzZSBpcGhscGFwaSB0byBpbXBsZW1lbnQgU0lPX0dFVF9JTlRFUkZBQ0VfTElTVCBpbiBXU0FJb2N0bCwgYW5kCgljb3JyZWN0cyBpaUZsYWdzIGVudHJ5IGluIHRoZSByZXR1cm5lZCBpbnRlcmZhY2UgbGlzdC4KCgkqIHByb2dyYW1zL3dpbmVkYmcvZ2RicHJveHkuYzogVXNlIGludCBpbnN0ZWFkIG9mIHNvY2tsZW5fdC4KCgkqIGNvbnRyb2xzL2VkaXQuYzogVml0YWxpeSBNYXJnb2xlbiA8d2luZS1wYXRjaEBraWV2aW5mby5jb20+CglGaXggcHJvYmxlbSB3aXRoIGNhcHR1cmluZyBbcmV0dXJuXSBrZXlzIGluIG11bHRpLWxpbmUgZWRpdHMuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzogVml0YWxpeSBNYXJnb2xlbiA8d2luZS1wYXRjaEBraWV2aW5mby5jb20+CglHZXQgcmlkIG9mIGRpcmVjdCBJbWFnZUxpc3QgYWNjZXNzIGhhY2tzLgoKCSogZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYywgZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuaDoKCVZpdGFsaXkgTWFyZ29sZW4gPHdpbmUtcGF0Y2hAa2lldmluZm8uY29tPgoJUmVhcnJhbmdlIG1lbWJlcnMgb2YgSElNQUdFTElTVCB0byBtYXRjaCBXaW5kb3dzLgoJUmV1c2UgaW1hZ2UgYW5kIG1hc2sgRENzLgoKCSogZGxscy9udGRsbC9zaWduYWxfcG93ZXJwYy5jOiBQaWVycmUgZCdIZXJiZW1vbnQgPHN0ZWdlZmluQGZyZWUuZnI+CgktIFNhdmUgbW9yZSByZWdpc3RlcnMgKGV4Y2VwdGlvbiwgZmxvYXQuLi4pIGlmIHRoZXkgYXJlIGRlZmluZWQuCgktIEFkZCBNYWMgT1MgWCBzaWduYWwgc3VwcG9ydC4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2lwaGxwYXBpLy5jdnNpZ25vcmUsCgkgIGRsbHMvaXBobHBhcGkvTWFrZWZpbGUuaW4sIGRsbHMvaXBobHBhcGkvaWZlbnVtLmMsCgkgIGRsbHMvaXBobHBhcGkvaWZlbnVtLmgsIGRsbHMvaXBobHBhcGkvaXBobHBhcGkuc3BlYywKCSAgZGxscy9pcGhscGFwaS9pcGhscGFwaV9tYWluLmMsIGRsbHMvaXBobHBhcGkvaXBzdGF0cy5jLAoJICBkbGxzL2lwaGxwYXBpL2lwc3RhdHMuaCwgaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9jb25maWcuaC5pbiwKCSAgaW5jbHVkZS9pcGV4cG9ydC5oLCBpbmNsdWRlL2lwaGxwYXBpLmgsIGluY2x1ZGUvaXBpZmNvbnMuaCwKCSAgaW5jbHVkZS9pcHJ0cm1pYi5oLCBpbmNsdWRlL2lwdHlwZXMuaDoKCUp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCUFkZGVkIGFuIGltcGxlbWVudGF0aW9uIG9mIGlwaGxwYXBpLmRsbDsgbW9zdCBHZXQqIGZ1bmN0aW9ucwoJaW50cm9kdWNlZCB0aHJvdWdoIFdpbjk4IGFyZSBpbmNsdWRlZC4KCgkqIGRsbHMva2VybmVsL2tlcm5lbF9tYWluLmMsIHNjaGVkdWxlci9zeXNkZXBzLmMsIHNjaGVkdWxlci90aHJlYWQuYzoKCUFsbG9jYXRlL2ZyZWUgdGhlIDE2LWJpdCB0aHJlYWQgc3RhY2sgaW4gdGhlIGtlcm5lbCBkbGwgaW5pdCByb3V0aW5lLgoKCSogZGxscy9nZGkvcHJpbnRkcnYuYzoKCVJlc2V0IHNpZ25hbCBoYW5kbGVycyB3aGVuIHN0YXJ0aW5nIGNoaWxkIHByb2Nlc3MuCgoJKiBkbGxzL2F2aWZpbDMyL2FjbXN0cmVhbS5jLCBkbGxzL2F2aWZpbDMyL2FwaS5jLAoJICBkbGxzL2F2aWZpbDMyL2F2aWZpbGUuYywgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLAoJICBkbGxzL2RwbGF5eC9uYW1lX3NlcnZlci5jLCBkbGxzL2tlcm5lbC90ZXN0cy9wYXRoLmMsCgkgIGRsbHMvbXN2Y3J0L2V4Y2VwdC5jLCBkbGxzL250ZGxsL3J0bGJpdG1hcC5jLCBkbGxzL29sZTMyL2NvbXBvYmouYywKCSAgZGxscy9vbGUzMi9jb21wb2JqX3ByaXZhdGUuaCwgZGxscy9vbGUzMi9mdG1hcnNoYWwuYywKCSAgZGxscy9vbGUzMi9tYXJzaGFsLmMsIGRsbHMvb2xlMzIvb2xlcHJveHkuYywgZGxscy9vbGUzMi9zdG9yYWdlMzIuYywKCSAgZGxscy9vbGVhdXQzMi90bWFyc2hhbC5jLCBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYywKCSAgZGxscy9vbGVhdXQzMi91c3JtYXJzaGFsLmMsIGRsbHMvcnBjcnQ0L3JwY3J0NF9tYWluLmMsCgkgIGRsbHMvcnBjcnQ0L3JwY3NzX25wX2NsaWVudC5jLCBkbGxzL3NldHVwYXBpL3NldHVwYXBpLnJjLAoJICBkbGxzL3NoZWxsMzIvc2hyZXMucmMsIGRsbHMvc2hsd2FwaS9wYXRoLmMsCgkgIGRvY3VtZW50YXRpb24vZG9jdW1lbnRhdGlvbi5zZ21sLCBkb2N1bWVudGF0aW9uL3BvcnRpbmcuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi93aW5lbGliLXBvcnRpbmcuc2dtbCwgZ3JhcGhpY3MvcGFpbnRpbmcuYywKCSAgbXNkb3MvcHBkZXYuYywgcHJvZ3JhbXMvcnBjc3MvcnBjc3NfbWFpbi5jLCB0b29scy9jMm1hbi5wbDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRml4IG1pc2NlbGxhbmVvdXMgc3BlbGxpbmcgZXJyb3JzIGFuZCB0eXBvcy4KCgkqIGluY2x1ZGUvd2luc29jay5oLCBpbmNsdWRlL3dpbnNvY2syLmg6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQWRkIHByb3RvdHlwZSBmb3IgX19XU0FGRElzU2V0LiBGaXggc3ludGF4IGVycm9yLgoKCSogZGxscy9vbGUzMi9vbGUyc3R1YnMuYywgaW5jbHVkZS9vYmppZGwuaCwgaW5jbHVkZS9vYmppZGwuaWRsOgoJUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCS0gSW1wbGVtZW50IGEgZmV3IG1vcmUgY2FzZXMgaW4gUHJvcFZhcmlhbnRDbGVhci4KCS0gUGFydGlhbGx5IGltcGxlbWVudCBQcm9wVmFyaWFudENvcHkuCgktIEltcGxlbWVudCBGcmVlUHJvcFZhcmlhbnRBcnJheS4KCgkqIGRvY3VtZW50YXRpb24vc2FtcGxlcy9jb25maWc6IE1hcmN1cyBNZWlzc25lciA8bWVpc3NuZXJAc3VzZS5kZT4KCUFkZGVkIDIgbW9yZSBJbnN0YWxsU2hpZWxkIHRlbXBvcmFyeSBleGVzIGZvciBEZXNrdG9wIE1vZGUuCgoJKiBkbGxzL2tlcm5lbC93b3d0aHVuay5jOiBFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCVN1cHBvcnQgMTQgYW5kIDE1IGFyZ3VtZW50cyBpbiBXT1dfQ2FsbFByb2MzMlcxNi4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCVJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CglGaXggdXNlIG9mIGZyZWVkIG1lbW9yeS4KCgkqIGRsbHMvbXN2Y3J0L3Rlc3RzL2ZpbGUuYywgZGxscy9zaGx3YXBpL3Rlc3RzL3BhdGguYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQ2hhbmdlIHRoZSAjaW5jbHVkZSBvcmRlciBzbyB0aGUgdGVzdCBjb21waWxlcyB3aXRoIHRoZSBNU1ZDIGhlYWRlcnMuCglGaXggYSBmZXcgc2lnbmVkL3Vuc2lnbmVkIHdhcm5pbmdzLgoKCSogdG9vbHMvd2luYXBpL21zdmNtYWtlcjogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglsaWJyYXJ5L01ha2VmaWxlLmluIGFuZCB1bmljb2RlL01ha2VmaWxlLmluIGRvbid0IGV4aXN0IGFueW1vcmUuCgoJKiBtaXNjL21haW4uYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVNtYWxsIGRlYnVnIGNoYW5uZWwgY2xlYW51cC4KCgkqIGRsbHMvbnRkbGwvbG9hZGVyLmM6IFJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CglGaXggTlVMTCBwb2ludGVyIGVycm9yIHdoZW4gZGlzcGxheWluZyBlcnJvciBtZXNzYWdlIGFib3V0IG1pc3NpbmcKCWZvcndhcmRlZCBleHBvcnQuCgoyMDAzLTA1LTEyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy91c2VyL3VzZXIzMi5zcGVjOgoJQ29tbWVudGVkIG91dCB0aGUgbmV3IHdpbjk4IGV4cG9ydHMsIHRoZXkgYXJlIGNhdXNpbmcgdHJvdWJsZS4KCgkqIGRsbHMvbnRkbGwvbnRkbGwuc3BlYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCVJ0bFVuaWNvZGVUb011bHRpQnl0ZVNpemUgYXJndW1lbnQgaXMgbm90IGEgbnVsbCB0ZXJtaW5hdGVkIHN0cmluZywKCXVzZSAncHRyJy4KCgkqIGRsbHMvbnRkbGwvaGVhcC5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgbWlzc2luZyByZXR1cm4gaW4gSEVBUF9WYWxpZGF0ZUluVXNlQXJlbmEuCgoJKiBkbGxzL21zdmNydC9kaXIuYywgZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnRlZCBfd2Z1bGxwYXRoLgoKCSogZGxscy9tcHIvcHdjYWNoZS5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQmV0dGVyIGVycm9yIHJldHVybiB2YWx1ZXMgZnJvbSBzdHViIGZ1bmN0aW9ucy4KCgkqIGRsbHMvbXByL21wci5zcGVjLCBkbGxzL21wci9tcHJfbWFpbi5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIHN0dWIgZm9yIERsbENhblVubG9hZE5vdy4KCgkqIGRsbHMva2VybmVsL3N5bmMuYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUlnbm9yZSByZXF1ZXN0ZWQgYWNjZXNzIHJpZ2h0cyB3aGVuIGVtdWxhdGVkIHZlcnNpb24gaXMgbm90IE5ULgoKCSogZGxscy9nZGkvbWZkcnYvZ3JhcGhpY3MuYzogV2FycmVuIEJhaXJkIDxXYXJyZW5fQmFpcmRAY2ltbWV0cnkuY29tPgoJRml4IHRoZSBQb2x5UG9seWdvbiBmdW5jdGlvbiBzbyBpdCByZWFsbHkgZ2VuZXJhdGVzIGEgcG9seXBvbHlnb24gYW5kCglub3QgbXVsdGlwbGUgc2V0cyBvZiBwb2x5Z29ucy4KCgkqIGRsbHMvZ2RpL3ByaW50ZHJ2LmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglBbGxvdyB0aGUgY3VwcyBwb3J0IHRvIGJlIHJlZGlyZWN0YWJsZS4gIFRoaXMgZ2l2ZXMgdXMgdGhlIG9wdGlvbiBvZgoJcGlwaW5nIHRoZSBQb3N0U2NyaXB0IHRocm91Z2ggc29tZXRoaW5nIGJlZm9yZSBpdCBnZXRzIHNlbnQgdG8gdGhlCglwcmludGVyIChsaWtlIHdlIGNhbiBhbHJlYWR5IGRvIGZvciBub24tY3VwcyBzeXN0ZW1zKS4KCgkqIGRsbHMvY3RsM2QvY3RsM2QzMi5jLCBkbGxzL2N0bDNkL2N0bDNkMzIuc3BlYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIG9yZGluYWxzIHRvIGN0bDNkMzIuZGxsLCBNeU9EQkMgcmVmZXJlbmNlcyBpdCBieSBvcmRpbmFsLgoKCSogY29udHJvbHMvY29tYm8uYywgY29udHJvbHMvZWRpdC5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIGhhbmRsaW5nIG9mIFdNX0lNRV9DSEFSLgoKCSogY29udHJvbHMvc3RhdGljLmMsIGluY2x1ZGUvd2ludXNlci5oOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIGRlZmluaXRpb24gb2YgU1NfVVNFUklURU0uCgoJKiBkbGxzL2NyeXB0MzIvY3J5cHQzMi5zcGVjLCBkbGxzL2NyeXB0MzIvbWFpbi5jLCBpbmNsdWRlL3dpbmNyeXB0Lmg6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBzdHVicyBmb3IgQ2VydFNhdmVTdG9yZSBhbmQgQ2VydEVudW1DZXJ0aWZpY2F0ZXNJblN0b3JlLgoKCSogZGxscy9jb21jdGwzMi9tb250aGNhbC5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJRml4ZWQgYSBwb3NzaWJsZSBtZW1vcnkgY29ycnVwdGlvbi4KCUZpeGVkIGEgbWVtb3J5IGxlYWsuCgoJKiBjb250cm9scy9tZW51LmM6IERvbid0IHRyYWNrIHRoZSBzeXN0ZW0gbWVudSBmb3IgbWFuYWdlZCB3aW5kb3dzLgoKCSogZGxscy9kM2Q4L2N1YmV0ZXh0dXJlLmMsIGRsbHMvZDNkOC9kM2Q4X3ByaXZhdGUuaCwKCSAgZGxscy9kM2Q4L2RldmljZS5jLCBkbGxzL2QzZDgvc3VyZmFjZS5jLCBkbGxzL2QzZDgvdGV4dHVyZS5jLAoJICBkbGxzL2QzZDgvdm9sdW1lLmMsIGRsbHMvZDNkOC92b2x1bWV0ZXh0dXJlLmM6CglSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCS0gc3VyZmFjZSBwb29sIGluaXQgZml4ZXMKCS0gbWlub3IgaW5kZW50YXRpb24gYW5kIHRyYWNlcyBmaXhlcwoJLSBmaXggbG9ja2luZy91bmxvY2tpbmcvZGlydHkgYmVoYXZpb3IgKGRpcnRpZnkgb24gbG9jaykgKwoJICBvcHRpbWlzYXRpb25zIChvbmx5IGNvcHkgd2hlbiBkaXJ0eSkKCS0gZml4IElEaXJlY3QzRERldmljZTg6OkNsZWFyIGJlaGF2aW9yIChwcm9ibGVtIHNlZW4gYWZ0ZXIgYQoJICBsb2NraW5nL3VubG9ja2luZyBjb2RlIGVycm9yKQoJLSBiZWdpbiB0byBmaXggdm9sdW1lIGFuZCBjdWJlIHRleHR1cmVzIG1hbmFnZW1lbnQKCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21haW4uYywgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLAoJICBkbGxzL2RkcmF3L2QzZHRleHR1cmUuYywgZGxscy9kZHJhdy9kaXJlY3QzZC9tYWluLmMsCgkgIGRsbHMvZGRyYXcvZGlyZWN0M2QvbWVzYS5jLCBkbGxzL2RkcmF3L21lc2EuYywKCSAgZGxscy9kZHJhdy9tZXNhX3ByaXZhdGUuaDoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIHNlcGFyYXRlIGdlb21ldHJ5IHRyYWNpbmcgaW4gYSBuZXcgZGVidWcgY2hhbm5lbCAoZGRyYXdfZ2VvbSkKCS0gYWRkZWQgaGFuZGxpbmcgZm9yIHNvbWUgbmV3IHRleHR1cmluZyBvcHMKCS0gcHJlcGFyZSBmb3IgYWRkaXRpb24gb2YgbXVsdGktdGV4dHVyaW5nCgktIGFub3RoZXIgd2F5IHRvIGZpeCB0aGUgZGV2aWNlIGVudW1lcmF0aW9uIGZvciB0aGUgcmVmZXJlbmNlIGRldmljZQoJLSBmaXggY29tcGlsYXRpb24gd2l0aCBzb21lIGdsZXh0LmggZmlsZXMKCS0gZml4IGEgYnVnIGluIG9uZSB0ZXh0dXJlIGNvbnZlcnNpb24gZnVuY3Rpb24KCS0gYWRkZWQgbmV3IHRleHR1cmUgZm9ybWF0IChidXQgc3RpbGwgdGV4dHVyaW5nIHByb2JsZW1zIGluIDNETWFyazIwMDApCgoJKiBkbGxzL3dzb2NrMzIvd3Njb250cm9sLmg6IFBpZXJyZSBkJ0hlcmJlbW9udCA8c3RlZ2VmaW5AZnJlZS5mcj4KCVVuZGVmIGlmX3R5cGUsIGlmX210dSBhbmQgaWZfbGFzdGNoYW5nZSBmb3IgZGFyd2luLgoKCSogc2VydmVyL2NvbnRleHRfcG93ZXJwYy5jOiBQaWVycmUgZCdIZXJiZW1vbnQgPHN0ZWdlZmluQGZyZWUuZnI+CglBZGQgc3VwcG9ydCBmb3IgRGFyd2luJ3MgcHRyYWNlLgoKMjAwMy0wNS0xMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvZGRyYXcvZGRyYXcvbWFpbi5jOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJSW5pdGlhbGl6ZSB0aGUgZHdNaXBtYXBDb3VudCBmaWVsZCBldmVuIGlmIHRoZSBhcHBsaWNhdGlvbiBmb3JnZXRzIGl0LgoKCSogZGxscy9kZHJhdy9kM2RfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L2QzZGRldmljZS9tYWluLmMsCgkgIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywgZGxscy9kZHJhdy9kM2R0ZXh0dXJlLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSBhZGRlZCBtaXBtYXBwaW5nIHN1cHBvcnQKCS0gYWRkZWQgbG9ja2luZyBmb3IgY29uY3VycmVudCBhY2Nlc3MgdG8gdGhlIEQzRCBkZXZpY2UKCS0gaW1wcm92ZWQgdHJhY2luZwoJLSBhZGRlZCBzdXBwb3J0IGZvciBtb3N0IHRleHR1cmUgY29tYmluZSBzdGFnZXMgKGluc3BpcmVkIGJ5IHRoZSBEM0Q4CgkgIGNvZGUpCgktIGRpc2FibGUgY3VycmVudCBsb2NrIC8gdW5sb2NrIGNvZGUgcGVuZGluZyBwcm9wZXIgc29sdXRpb24KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogU3RlcGhhbiBCZXV6ZSA8ZmJpZ2d1bkBob3RtYWlsLmNvbT4KCUltcGxlbWVudGVkIEdldC9TZXRUb29sVGlwcyBmdW5jdGlvbnMuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMyLnNwZWMsIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jLAoJICBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmM6CglPcmRpbmFscyA0MTAtNDEzIGFyZSB0aGUgd2luZG93IHN1YmNsYXNzaW5nIGZ1bmN0aW9ucy4KCgkqIGRvY3VtZW50YXRpb24vd2luZS1mYXEuc2dtbDoKCVN0b3JlIHRoZSBIVE1MIGludG8gaW5kZXguaHRtbCBsaWtlIGZvciB0aGUgb3RoZXIgZG9jcy4KCgkqIGRsbHMvZDNkOC9kM2Q4X3ByaXZhdGUuaCwgZGxscy9kM2Q4L2RldmljZS5jLCBkbGxzL2QzZDgvZGlyZWN0eC5jLAoJICBkbGxzL2QzZDgvaW5kZXhidWZmZXIuYywgZGxscy9kM2Q4L3Jlc291cmNlLmMsCgkgIGRsbHMvZDNkOC9zdGF0ZWJsb2NrLmMsIGRsbHMvZDNkOC9zdXJmYWNlLmMsIGRsbHMvZDNkOC9zd2FwY2hhaW4uYywKCSAgZGxscy9kM2Q4L3ZlcnRleGJ1ZmZlci5jLCBkbGxzL2QzZDgvdm9sdW1lLmMsCgkgIGRsbHMvZDNkOC92b2x1bWV0ZXh0dXJlLmM6CglSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCS0gbWlub3IgQ09NIGZpeGVzIChmaXhlcyBzb21lIGNyYXNoZXMgb24gc3R1cGlkIGdhbWVzKQoJLSBtaW5vciBpbmRlbnRhdGlvbiBjaGFuZ2VzCgktIGZpeCBTRUxFQ1RBUkcyIGJlaGF2aW9yICh3aXRoIGhlbHAgZnJvbSBMaW9uZWwgVWxtZXIpCgktIHN1cmZhY2UgbG9ja2luZy91bmxvY2tpbmcgKG9ubHkgcmVuZGVyaW5nIGFuZCB0ZXh0dXJlcyBzdXJmYWNlcwoJICBzdXBwb3J0ZWQgbm93KQoJLSBiZWdpbm5pbmcgb2YgVGFyZ2V0L0Zyb250IHN1cmZhY2Ugc3VwcG9ydAoJLSB0cnkgdG8gZ2V0IEQzRFRPUF9TRUxFQ1RBUkdfKiB3b3JraW5nCgktIGltcGxlbWVudGVkIEQzRFRPUF9TVUJUUkFDVDogY3VycmVudGx5IG9ubHkgaWYgT3BlbkdMMS4zIGlzIHVzZWQsIHdlCgkgIGhhdmUgdG8gdXNlIEdMX1NVQlRSQUNUX0FSQiBmb3Igb3RoZXIgdmVyc2lvbnMKCgkqIGRsbHMvZ2RpL2dkaTMyLnNwZWMsIG9iamVjdHMvZGMuYzoKCUFkZGVkIHBhcnRpYWwgc3R1YiBmb3IgR2V0VHJhbnNmb3JtLgoKCSogZGxscy9zaGVsbDMyL3NobGZpbGVvcC5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglDbGVhbiB1cCBTSEZpbGVPcGVyYXRpb25BL1cgZGVidWdnaW5nIGEgbGl0dGxlLgoKCSogZGxscy93aW5tbS93YXZlbWFwL3dhdmVtYXAuYywgZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCVN0b3Agd2F2ZW1hcCBsb29rdXAgaWYgYSBkZXZpY2UgaXNuJ3QgZnVuY3Rpb25hbCAoc3BvdHRlZCBieSBMaW9uZWwKCVVsbWVyKS4KCgkqIGRsbHMvd2luZWRvcy9pbnQyMS5jOiBKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglNYWtlIHJlYWQgZnJvbSBzdGRpbiB1c2UgYnVmZmVyZWQgaW5wdXQgY29kZSBhbmQgcmVkaXJlY3Qgc3RkZXJyIHRvCgljb25zb2xlLgoKCSogbXNkb3MvaW9wb3J0cy5jOiBKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglNYWtlIGlvcG9ydCBpbnN0cnVjdGlvbiBlbXVsYXRpb24gY2FsbCB3aW5lZG9zIGhhbmRsZXJzLgoKCSogd2luZG93cy9xdWV1ZS5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAYmFpa2FsLnJ1PgoJUG9sbCBYIGV2ZW50cyBpbiBHZXRJbnB1dFN0YXRlIHRoZSBzYW1lIHdheSBhcyBpbiBHZXRRdWV1ZVN0YXR1cy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUZpeCBjdXN0b20gZHJhdyBmb3IgaXRlbSAwLgoKCSogZGxscy9kZHJhdy9kM2RleGVjdXRlYnVmZmVyLmM6CglDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglFbmFibGUgYnJhbmNoIGZvcndhcmQgb3BlcmF0aW9uIGluIGV4ZWN1dGUgYnVmZmVyLgoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jOiBDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglQdXQgdGhlIGRldmljZSBuYW1lIHN0cmluZyBvbiB0aGUgc3RhY2sgZHVyaW5nIGRldmljZXMgZW51bWVyYXRpb24uCglEaXNhYmxlIHJlZmVyZW5jZSBlbnVtZXJhdGlvbi4KCgkqIGNvbnRyb2xzL2VkaXQuYzogQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJQWRkIG1pc3NpbmcgUmVsZWFzZURDIGluIEVESVRfQnVpbGRMaW5lRGVmc19NTC4KCgkqIG9iamVjdHMvbWV0YWZpbGUuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCVBsYXliYWNrIGVzY2FwZXMgaW4gbWV0YWZpbGVzLgoKCSogZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL29sZWF1dDMyL29sZWF1dDMyLnNwZWM6CglSZW1vdmVkIHVubmVjZXNzYXJ5IGZ1bmN0aW9uIGxpbmsgbmFtZXMuCgoJKiBNYWtlZmlsZS5pbjogUmVtb3ZlIGxpYnMvTWFrZWxpYi5ydWxlcyBvbiBkaXN0Y2xlYW4uCgoJKiBkbGxzL2dkaS9nZGkzMi5zcGVjLCBvYmplY3RzL2RjLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglBZGRlZCBzdHViIGZvciBTZXRWaXJ0dWFsUmVzb2x1dGlvbi4KCgkqIGRsbHMveDExZHJ2L3Njcm9sbC5jLCB3aW5kb3dzL3Njcm9sbC5jOgoJVWxyaWNoIEN6ZWthbGxhIDx1Y3pla2FsbGFAY29kZXdlYXZlcnMuY29tPgoJV2Ugc2hvdWxkIHBhc3MgdGhlIGNhbGxlcnMgY2xpZW50LWFyZWEgcmVjdCBhbmQgY2xpcCByZWN0IHRvIHgxMWRydgoJb3RoZXJ3aXNlIHdlJ2xsIGZhaWwgdG8gc2Nyb2xsIGFsbCBjaGlsZHJlbi4KCgkqIGRsbHMvd2lubW0vd2lubW0uYzogQXZvaWQgbG9jYWwgV0lOQVBJIGZ1bmN0aW9uIHBvaW50ZXJzLgoKCSogZGxscy93aW5pbmV0L2ludGVybmV0LmMsIGRsbHMvd2luaW5ldC93aW5pbmV0LnNwZWM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnRlZCBJbnRlcm5ldFNldE9wdGlvbkV4QS9XLgoKCSogZGxscy91c2VyL3BhaW50aW5nLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglGaXggdGhlIGxvZ2ljIGZvciBzZXR0aW5nIHRoZSBscHMtPmZFcmFzZSBmbGFnIGluIEJlZ2luUGFpbnQuCgoJKiBkbGxzL3VzZXIvbWVzc2FnZS5jLCB3aW5kb3dzL3dpbnByb2MuYzoKCUFkZGVkIEE8LT5XIG1hcHBpbmdzIGZvciBXTV9JTUVfQ0hBUi4KCgkqIG1lbW9yeS9nbG9iYWwuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVByb3RlY3QgR2xvYmFsTG9jayBmcm9tIGJhZCBwb2ludGVycy4KCgkqIGxpYnMvdW5pY29kZS93Y3RvbWIuYzoKCUhhbmRsZSBvdmVybGFwcGluZyBidWZmZXJzIHByb3Blcmx5IGluIHdjc3RvbWJzX3NiY3MgKHNwb3R0ZWQgYnkKCURtaXRyeSBUaW1vc2hrb3YpLgoKCSogZ3JhcGhpY3MveDExZHJ2L2NsaXBwaW5nLmM6CglVbHJpY2ggQ3pla2FsbGEgPHVjemVrYWxsYUBjb2Rld2VhdmVycy5jb20+CglEb24ndCBkZWxldGUgcmVnaW9uIHVudGlsIGFmdGVyIHdlJ3JlIGRvbmUgd2l0aCBpdC4KCgkqIG9iamVjdHMvY2xpcHBpbmcuYzogVWxyaWNoIEN6ZWthbGxhIDx1Y3pla2FsbGFAY29kZXdlYXZlcnMuY29tPgoJUmV0dXJuIHZhbHVlIG9mIEV4dFNlbGVjdENsaXBSZ24gc2hvdWxkIGNvbnNpZGVyIHZpc2libGUgcmVnaW9uLgoKCSogZ3JhcGhpY3MvbWFwcGluZy5jLCBvYmplY3RzL2VuaG1ldGFmaWxlLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJTWFrZSBTZXRNYXBNb2RlIHNldCBkZWZhdWx0IHdpbmRvdyBhbmQgdmlld3BvcnQgZXh0ZW50cyBhcyBpbgoJV2luZG93cy4KCgkqIHByb2dyYW1zL3djbWQvd2NtZG1haW4uYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBoYW5kbGluZyBvZiB3Y21kIC9jICJjOlxQcm9ncmFtIEZpbGVzXGhlbGxvLmJhdCIuCglNYWtlIC9jIGFuZCAvayBlZmZlY3RpdmVseSBleGNsdXNpdmUsIGxpa2UgdGhlIHJlYWwgY21kIGRvZXMuCglGaXggaGFuZGxpbmcgb2YgL3E6IGl0J3MgY29tcGF0aWJsZSB3aXRoIC9jIGFuZCAvay4KCUFkZGVkIGNvbXBhdGliaWxpdHkgd2l0aCAvdCAveCBhbmQgL3ksIGp1c3QgaWdub3JlIHRoZW0uCgoJKiBwcm9ncmFtcy93aW5lcGF0aC93aW5lcGF0aC5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVJlc2V0IHRoZSByZXN1bHQgYnVmZmVyIGFmdGVyIGVhY2ggYXJndW1lbnQuCgoJKiBzZXJ2ZXIvZmQuYzoKCUlnbm9yZSBsb2NraW5nIGZhaWx1cmVzIGNhdXNlZCBieSBtaXNzaW5nIE5GUyBsb2NraW5nIGRhZW1vbi4KCUhhbmRsZSBFSU5WQUwgdGhlIHNhbWUgd2F5IGFzIEVPVkVSRkxPVy4KCgkqIHdpbmRvd3MvbXNnYm94LmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglJZ25vcmUgaGlnaCB3b3JkIG9mIHdQYXJhbSB3aGVuIGhhbmRsaW5nIFdNX0NPTU1BTkQgaW4gdGhlIE1lc3NhZ2VCb3gKCXByb2MuCgoJKiB3aW5kb3dzL2lucHV0LmM6IER1c2FuIExhY2tvIDxkbGFja29AY29kZXdlYXZlcnMuY29tPgoJRml4IEFMVCBjb250ZXh0IGJpdCBmb3IgV01fS0VZRE9XTi9VUC4KCgkqIHdpbmRvd3MvZGlhbG9nLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglXaW5kb3dzIHRyZWF0cyBkaWFsb2cgY29udHJvbCBjbGFzcyBpZHMgMC01IHNhbWUgd2F5IGFzIDB4ODAtMHg4NS4KCgkqIGRsbHMvdXNlci9kaWFsb2cxNi5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRG8gbm90IGFib3J0IGRpYWxvZyBjcmVhdGlvbiBpZiBEU19OT0ZBSUxDUkVBVEUgYWxsb3dzIHRvIGNvbnRpbnVlLgoKCSogZGxscy9yYXNhcGkzMi9yYXNhcGkuYywgZGxscy9yYXNhcGkzMi9yYXNhcGkzMi5zcGVjOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIFJhc0VudW1FbnRyaWVzVyBzdHViLgoKCSogZGxscy9vbGUzMi9vbGUyc3R1YnMuYywgZGxscy9vbGUzMi9zdG9yYWdlMzIuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudGVkIFdyaXRlRm10VXNlclR5cGVTdGcgYW5kIFJlYWRGbXRVc2VyVHlwZVN0Zy4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRmlsbCB0aGUgZmlsZWRpYWxvZzk1IGNvbnRyb2xzIGJlZm9yZSBzZW5kaW5nIGEgQ0ROX0lOSVRET05FCglub3RpZmljYXRpb24uCgoJKiBkbGxzL2NvbWN0bDMyL3Byb2dyZXNzLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglJbnZhbGlkYXRlIHRoZSB3aW5kb3cgd2hlbiB0aGUgcmFuZ2UgaXMgY2hhbmdlZC4KCgkqIGRsbHMvYWR2YXBpMzIvYWR2YXBpMzIuc3BlYywgZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJU3R1YnMgZm9yIEFjY2Vzc0NoZWNrQW5kQXVkaXRBbGFybUEvVy4KCjIwMDMtMDUtMDggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBWRVJTSU9OLCBjb25maWd1cmUsIEFOTk9VTkNFLCBDaGFuZ2VMb2c6IFJlbGVhc2UgMjAwMzA1MDguCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjIwMDMtMDUtMDggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBsaWJzL3VuaWNvZGUvdXRmOC5jOgoJRml4ZWQgcmV0dXJuIHZhbHVlIG9mIHdpbmVfdXRmOF93Y3N0b21icyAoc3BvdHRlZCBieSBKYW4gU3BvcmJlY2spLgoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLCBkbGxzL2RkcmF3L2QzZHRleHR1cmUuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIG9ubHkgZW51bWVyYXRlIDMyIGJwcCBBUkdCIHRleHR1cmUgZm9ybWF0IGFuZCByZW1vdmUgUkdCQSBvbmUKCS0gYWRkIHN1cHBvcnQgZm9yIDMyIGJwcCBBUkdCIHRleHR1cmUgZm9ybWF0CgoJKiBzY2hlZHVsZXIvc3lzZGVwcy5jOiBBZGFtIEd1bmR5IDxhcmdAY3liZXJzY2llbmNlLmNvbT4KCXdyaXRlanVtcCgpIG5lZWRzIHRvIHRlbGwgdmFsZ3JpbmQgd2hpY2ggcGllY2Ugb2YgY29kZSBoYXMgYmVlbgoJbW9kaWZpZWQuCgoJKiBkbGxzL21zdmNydC9maWxlLmM6IEFkYW0gR3VuZHkgPGFyZ0BjeWJlcnNjaWVuY2UuY29tPgoJX29wZW5fb3NmaGFuZGxlIGlzIGV4cGVjdGVkIHRvIHRha2UgdGhlIGFic2VuY2Ugb2YgZWl0aGVyIF9PX1RFWFQgb3IKCV9PX0JJTkFSWSB0byBtZWFuIF9PX0JJTkFSWS4KCgkqIGRsbHMvZDNkOC9iYXNldGV4dHVyZS5jLCBkbGxzL2QzZDgvZDNkOF9wcml2YXRlLmgsCgkgIGRsbHMvZDNkOC9kZXZpY2UuYywgZGxscy9kM2Q4L2RpcmVjdHguYzoKCVJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJLSBEaXNhYmxlIHNvbWUgJ2NsYXNzaWMnIGRlYnVnIHRyYWNlcyAoYXZvaWQgdXNlbGVzcyBmbG9vZCBvZiB0cmFjZXMKCSAgd2hpbGUgZGVidWdnaW5nIGdhbWVzKS4KCS0gRml4IHRoZSB0ZXh0dXJlIHNpemUgY2FwcyB1c2luZyBHTF9NQVhfVEVYVFVSRV9TSVpFLgoKCSogZGxscy9vbGVhdXQzMi9vbGVwaWN0dXJlLmM6CglNYXhpbWUgQmVsbGVuZ+kgPG1heGltZS5iZWxsZW5nZUBsYXBvc3RlLm5ldD4KCS0gRml4IHNjYW5saW5lIHNpemUgaW4gT0xFUGljdHVyZUltcGxfTG9hZCBmb3IganBlZwoJLSBDb252ZXJ0IGZyb20gUkdCIHRvIEJHUiBhY2NvcmRpbmcgdG8gQklUTUFQSU5GT0hFQURFUgoJICBkb2N1bWVudGF0aW9uLgoKCSogY29udHJvbHMvYnV0dG9uLmM6IE1heGltZSBCZWxsZW5n6SA8bWF4aW1lLmJlbGxlbmdlQGxhcG9zdGUubmV0PgoJQ29ycmVjdGx5IGZpbGwgdGhlIGJhY2tncm91bmQgb2YgYSBjaGVja2JveCBidXR0b24uCgoJKiBkbGxzL250ZGxsL2xvYWRlci5jLCBpbmNsdWRlL21vZHVsZS5oLCBpbmNsdWRlL3dpbnRlcm5sLmgsCgkgIGxvYWRlci9wZV9pbWFnZS5jOgoJQWRkZWQgc3VwcG9ydCBmb3IgY2FsbGluZyB0aGUgVExTIGNhbGxiYWNrIGZ1bmN0aW9ucy4KCgkqIHRvb2xzL3dpbmVkdW1wL3BlLmM6IEFkZGVkIGR1bXBpbmcgb2YgdGhlIFRMUyBkaXJlY3RvcnkuCgoJKiBkbGxzL250ZGxsL3ZpcnR1YWwuYzoKCUZpeGVkIHdyb25nIGZpbGUgb2Zmc2V0IHVzZWQgd2hlbiBtYXBwaW5nIHRoZSBpbXBvcnQgZGlyZWN0b3J5IGZyb20gYQoJc2hhcmVkIHNlY3Rpb24uCgoJKiBkbGxzL2QzZDgvZDNkOF9wcml2YXRlLmgsIGRsbHMvZDNkOC9kZXZpY2UuYywgZGxscy9kM2Q4L2RpcmVjdHguYywKCSAgZGxscy9kM2Q4L3NoYWRlci5jLCBkbGxzL2QzZDgvdGV4dHVyZS5jOgoJSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCS0gTW92ZSB0ZXh0dXJlIGxvYWRpbmcgaW50byBQcmVMb2FkIGZvciAyRCB0ZXh0dXJlcyAobmVlZHMgZG9pbmcgZm9yCgkgIHRoZSBvdGhlcnMgYXMgd2VsbCksIGFuZCBjYWxsIHdoZW4gbmVlZGVkIGFzIHdlbGwuCgktIENoYW5nZSBEM0RGTVRfUjVHNkI1IGhhbmRsaW5nIHRvIG1ha2UgYmFja2Ryb3Agb2YgTWF4IFBheW5lIGFwcGVhci4KCS0gQWRkIGNvZGUgdG8gcmVqZWN0IGF0dGVtcHRzIHRvIHVzZSBpbnZhbGlkIHRleHR1cmUgdW5pdHMgKE1heCBQYXluZQoJICBkaWQgdGhpcyBhIGxvdCkuCgktIFZhbGlkYXRlRGV2aWNlIGZpeG1lIHNpbGVuY2VkIGFzIGhhcm1sZXNzIGJ1dCBvY2N1cnMgZnJlcXVlbnRseS4KCS0gQWRkIHRyYWNlIHdoaWNoIGNhbiBiZSBjb21waWxlZCBpbiB0byBkZWJ1ZyB2ZXJ0ZXggc2hhZGVycywgYW5kCgkgIGNvcnJlY3QgZml4bWVzIGFuZCBkcHJpbnRmJ3MgaW50byBhcHByb3ByaWF0ZSB0cmFjZSBzdGF0ZW1lbnRzLgoJLSBFbnN1cmUgd2UgdHJhY2Ugd2hhdCB3ZSByZXR1cm4gd2hlbiBxdWVyeWluZyB0aGUgZGV2aWNlIGNhcHMuCgktIENvcnJlY3QgYnVnIHdpdGggbmVnYXRpdmUgbnVtYmVycyBpbiB2ZXJ0ZXggc2hhZGVyIGNvZGUuCgoJKiBpbmNsdWRlL3dpbm50Lmg6IFBpZXJyZSBkJ0hlcmJlbW9udCA8c3RlZ2VmaW5AZnJlZS5mcj4KCUFkZCBEYXIsIERzaXNyIGFuZCBUcmFwIHJlZ2lzdGVycyBmb3IgdGhlIFBvd2VyUEMgQ09OVEVYVCBzdHJ1Y3R1cmUuCgoJKiBkbGxzL250ZGxsL3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMvbnRkbGwvdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvbnRkbGwvdGVzdHMvZW52LmM6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCUFkZGVkIGVudmlyb25tZW50IHRlc3RzLgoKCSogZGxscy9udGRsbC9NYWtlZmlsZS5pbiwgZGxscy9udGRsbC9lbnYuYywgZGxscy9udGRsbC9udGRsbC5zcGVjLAoJICBkbGxzL250ZGxsL250ZGxsX21pc2MuaCwgZGxscy9udGRsbC9ydGwuYywgaW5jbHVkZS93aW50ZXJubC5oLAoJICBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglJbXBsZW1lbnRlZCBhIGJ1bmNoIG9mIGVudmlyb25tZW50IHJlbGF0ZWQgTlRETEwgQVBJcy4KCjIwMDMtMDUtMDcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC9yZXNvdXJjZS5jOiBBZGRlZCBOT05BTUVMRVNTVU5JT04vU1RSVUNUIGRlZmluZXMuCgoJKiBzZXJ2ZXIvY29udGV4dF9pMzg2LmM6IEZpeGVkIHR5cG8gaW4gcmV0dXJuIHZhbHVlIG9mIHRraWxsKCkuCgoJKiBkbGxzL2tlcm5lbC9yZXNvdXJjZS5jLCBkbGxzL250ZGxsL01ha2VmaWxlLmluLAoJICBkbGxzL250ZGxsL3Jlc291cmNlLmMsIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbnRlcm5sLmgsCgkgIGxvYWRlci9wZV9yZXNvdXJjZS5jOgoJTW92ZWQgdGhlIEVudW1SZXNvdXJjZSogZnVuY3Rpb25zIHRvIHRoZSBrZXJuZWwgZGxsLCBhbmQgZml4ZWQgdGhlaXIKCXByb3RvdHlwZXMuCgoJKiBkbGxzL2tlcm5lbC9mb3JtYXRfbXNnLmM6CglVc2UgUnRsRmluZE1lc3NhZ2UgdG8gbG9hZCBtZXNzYWdlIHJlc291cmNlcy4KCgkqIGRsbHMvb3BlbmdsMzIvbWFrZV9vcGVuZ2wsIGRsbHMvb3BlbmdsMzIvb3BlbmdsMzIuc3BlYywKCSAgZGxscy9vcGVuZ2wzMi93Z2wuYywgZGxscy9vcGVuZ2wzMi93Z2wuaDoKCU1pY2hhZWwgU2NobPx0ZXIgPG1pY2hhZWxAam9oYWxsYS5kZT4KCUFkZGVkIHdnbEdldEV4dGVuc2lvbnNTdHJpbmdBUkIuCgoJKiBkbGxzL3dpbmVkb3MvdmdhLmM6IEp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCUFkZCBzY3JvbGxpbmcgc3VwcG9ydCBmb3IgVkdBIHRleHQgbW9kZS4KCjIwMDMtMDUtMDYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL250ZGxsL3ZpcnR1YWwuYzoKCUFkZGVkIGNvbW1lbnQgYWJvdXQgd2h5IGNoYW5naW5nIEFERFJFU1NfU1BBQ0VfTElNSVQgaXMgd3JvbmcuCgoJKiBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmM6CglBZGRlZCBzdXBwb3J0IGZvciByZXRyaWV2aW5nIHBhZ2UgZmF1bHQgYWRkcmVzcyBvbiBTb2xhcmlzIChiYXNlZCBvbiBhCglwYXRjaCBieSBSb2JlcnQgTHVubm9uKS4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjOgoJSW4gYXNzZW1ibGVyIGNoZWNrLCB0cnkgdG8gdXNlIGdhcyBmaXJzdCAoYmFzZWQgb24gYSBwYXRjaCBieSBSb2JlcnQKCUx1bm5vbikuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmM6IFJvYmVydCBMdW5ub24gPGJvYkB5YXJyYWJlZS5uZXQuYXU+CglFbGltaW5hdGUgc2VnZmF1bHQgZHVlIHRvIE5VTEwgVGhpcy0+c0ljb1BhdGguCgoJKiBkb2N1bWVudGF0aW9uL2NvbmZpZ3VyaW5nLnNnbWw6CglBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CglNZW50aW9uIHRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbiBmaWxlIGhlYWRlci4KCgkqIE1ha2UucnVsZXMuaW4sIGRsbHMvZ2RpL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwKCSAgZGxscy9zaGVsbDMyL01ha2VmaWxlLmluLCBkbGxzL3VzZXIvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL3dpbmhlbHAvTWFrZWZpbGUuaW46CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJTWFrZSBpdCBlYXN5IHRvIHVzZSBzb21ldGhpbmcgb3RoZXIgdGhhbiB3cmMgdG8gY29tcGlsZSByZXNvdXJjZXMuCgoJKiBkbGxzL250ZGxsL3Rlc3RzL3J0bHN0ci5jOiBUaG9tYXMgTWVydGVzIDx0aG9tYXMubWVydGVzQGdteC5hdD4KCVRlc3RzIGZvciBSdGxEdXBsaWNhdGVVbmljb2RlU3RyaW5nLCBSdGxGaW5kQ2hhckluVW5pY29kZVN0cmluZywKCVJ0bEluaXRVbmljb2RlU3RyaW5nRXguCgoJKiBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvbnRkbGwvcnRsc3RyLmMsIGluY2x1ZGUvd2ludGVybmwuaDoKCVRob21hcyBNZXJ0ZXMgPHRob21hcy5tZXJ0ZXNAZ214LmF0PgoJSW1wbGVtZW50IFJ0bER1cGxpY2F0ZVVuaWNvZGVTdHJpbmcsIFJ0bEZpbmRDaGFySW5Vbmljb2RlU3RyaW5nLAoJUnRsSW5pdFVuaWNvZGVTdHJpbmdFeC4KCURvY3VtZW50YXRpb24gdXBkYXRlcyBmb3IgUnRsSW5pdEFuc2lTdHJpbmcsIFJ0bEluaXRTdHJpbmcsCglSdGxJbml0VW5pY29kZVN0cmluZywgUnRsQW5zaVN0cmluZ1RvVW5pY29kZVN0cmluZyBhbmQKCVJ0bE9lbVN0cmluZ1RvVW5pY29kZVN0cmluZy4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9taWRpLmM6IE1hcmN1cyBNZWlzc25lciA8bWVpc3NuZXJAc3VzZS5kZT4KCUFkZGVkIGluY2x1ZGUgPGVycm5vLmg+LgoKCSogY29udHJvbHMvZWRpdC5jOiBBY2hpbSBLYWlzZXIgPG1haWwxQGthaXNlcnNpdGUuZGU+CglUYWtlIGZvbnQgbWV0cmljcyBpbnRvIGFjY291bnQgZm9yIEVDX1VTRUZPTlRJTkZPIG1hcmdpbnMuCgoJKiBzZXJ2ZXIvcHRyYWNlLmM6CglGaXhlZCBhIGNvdXBsZSBvZiByYWNlcyB3aXRoIGV4aXRpbmcgdGhyZWFkcyBpbiBzdXNwZW5kX2Zvcl9wdHJhY2UoKS4KCgkqIGRsbHMva2VybmVsL3N5bmMuYzoKCUZpeGVkIHJldHVybiB2YWx1ZSBvZiBDcmVhdGVOYW1lZFBpcGUgKHNwb3R0ZWQgYnkgTWlrZSBNY0Nvcm1hY2spLgoKCSogZGxscy9kM2Q4L2RldmljZS5jOiBKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJQWRkIHN1cHBvcnQgZm9yIE11bHRpcGx5VHJhbnNmb3JtIChoZWxwcyBtYWtlIHRoZSBTa2ltbWVkTWVzaCBTREsKCXNhbXBsZSBsb29rIGJldHRlcikuCgoJKiBkbGxzL2QzZDgvZDNkOF9wcml2YXRlLmgsIGRsbHMvZDNkOC9kZXZpY2UuYzoKCUphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglBZGQgdGhlIGJlZ2lubmluZ3Mgb2Ygc3VwcG9ydCBmb3IgdGV4dHVyZSBjb29yZGluYXRlcy4KCgkqIGRsbHMvZHBuaHBhc3QvbWFpbi5jOiBNYXJjdXMgTWVpc3NuZXIgPG1laXNzbmVyQHN1c2UuZGU+CglGaXggcmV0dXJuIGNvZGUgb2YgRFBOSFBBU1RfRGxsR2V0Q2xhc3NPYmplY3Qgc3R1Yi4KCgkqIGRsbHMvZG11c2ljL2RtdXNpYy5jLCBkbGxzL2RtdXNpYy9kbXVzaWNfcGVyZm9ybWFuY2UuYywKCSAgZGxscy9kbXVzaWMvZG11c2ljX3BvcnQuYywgZGxscy9kbXVzaWMvZG11c2ljX3ByaXZhdGUuaDoKCVJvayBNYW5kZWxqYyA8cm9rbWFuZGVsamNAaG90bWFpbC5jb20+CgktIGltcGxlbWVudGVkIHNvbWUgbW9yZSBwb3J0IHJlbGF0ZWQtZnVuY3Rpb25zCgktIGZpeGVkIHdhcm5pbmdzIChyZXBvcnRlZCBieSBHZXJhbGQgUGZlaWZlcikKCgkqIGRsbHMvd2luZWRvcy9pbnQyMS5jOiBKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglSZXBvcnQgZXJyb3JzIHRvIGFwcGxpY2F0aW9ucyB3aGVuIGlsbGVnYWwgZGF0ZXMgYXJlIHBhc3NlZCB0byBzZXQKCXN5c3RlbSBkYXRlIGNhbGwgKHJlcXVpcmVkIGJ5IG1hbnkgaW5zdGFsbGF0aW9uIGNoZWNrcykuCgoyMDAzLTA1LTA0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9hdmlmaWwzMi9hdmlmaWxlX1J1LnJjLCBkbGxzL2F2aWZpbDMyL3JzcmMucmMsCgkgIGRsbHMvY29tY3RsMzIvY29tY3RsX1J1LnJjLCBkbGxzL2NvbWN0bDMyL3JzcmMucmMsCgkgIGRsbHMvY29tbWRsZy9jZGxnX1J1LnJjLCBkbGxzL21zdmlkZW8vbXNybGUzMi9tc3JsZV9SdS5yYywKCSAgZGxscy9tc3ZpZGVvL21zcmxlMzIvcnNyYy5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfUnUucmMsCgkgIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX1J1LnJjLCBwcm9ncmFtcy9jbG9jay9SdS5yYywKCSAgcHJvZ3JhbXMvY2xvY2svcnNyYy5yYywgcHJvZ3JhbXMvbm90ZXBhZC9SdS5yYywKCSAgcHJvZ3JhbXMvbm90ZXBhZC9yc3JjLnJjLCBwcm9ncmFtcy9wcm9nbWFuL1J1LnJjLAoJICBwcm9ncmFtcy9wcm9nbWFuL3JzcmMucmMsIHByb2dyYW1zL3N0YXJ0L1J1LnJjLAoJICBwcm9ncmFtcy9zdGFydC9yc3JjLnJjLCBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZV9SdS5yYywKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbnNvbGVfcmVzLnJjLCBwcm9ncmFtcy93aW5lZmlsZS9SdS5yYywKCSAgcHJvZ3JhbXMvd2luZWZpbGUvcnNyYy5yYywgcHJvZ3JhbXMvd2luaGVscC9SdS5yYywKCSAgcHJvZ3JhbXMvd2luaGVscC9yc3JjLnJjOgoJSWdvciBTdGVwaW4gPGlzQHh0bS5ydT4KCUFkZGVkIGEgbG90IG9mIFJ1c3NpYW4gdHJhbnNsYXRpb25zLgoKCSogZGxscy94MTFkcnYvZXZlbnQuYywgZGxscy94MTFkcnYvd2luZG93LmM6CglNaWtlIEhlYXJuIDxtLmhlYXJuQHNpZ25hbC5xaW5ldGlxLmNvbT4KCVN1cHBvcnQgX05FVF9XTV9QSU5HIHByb3RvY29sIHNvIHRoZSBXTSBjYW4gZGV0ZWN0IGZyZWV6ZXMuCgoJKiBsaWJzL3BvcnQvaW50ZXJsb2NrZWQuYzogUGllcnJlIGQnSGVyYmVtb250IDxzdGVnZWZpbkBmcmVlLmZyPgoJQWRkIHJlZ2lzdGVyIHByZXNlcnZhdGlvbiB3aGVuIHVzaW5nIGxhd3J4IGluc3RydWN0aW9uLgoJRml4ICc7JyBlbmRpbmcgdG8gJ1xuJyBlbmRpbmcgZm9yIGEgYmV0dGVyIGNvbXBhdGliaWxpdHkgd2l0aCBkYXJ3aW4uCgoJKiBkbGxzL2RtdXNpYy9kbXVzaWMuYywgZGxscy9kbXVzaWMvZG11c2ljX2xvYWRlci5jLAoJICBkbGxzL2RtdXNpYy9kbXVzaWNfbWFpbi5jLCBkbGxzL2RtdXNpYy9kbXVzaWNfcGVyZm9ybWFuY2UuYzoKCVJvayBNYW5kZWxqYyA8cm9rbWFuZGVsamNAaG90bWFpbC5jb20+CglEbXVzaWMgY2xhc3MgZmFjdG9yeSBjYW4gbm93IGNyZWF0ZSBkbWxvYWRlcjggYW5kIGRtcGVyZm9ybWFuY2U4LgoKCSogZGxscy93aW5lZG9zL2Rvc3ZtLmM6IE1hcmN1cyBNZWlzc25lciA8bWVpc3NuZXJAc3VzZS5kZT4KCUZpeGVkIG5vbi14ODYgRE9TVk1fV2FpdCBwcm90b3R5cGUuCgoJKiBkbGxzL250ZGxsL3NpZ25hbF9wb3dlcnBjLmM6IE1hcmN1cyBNZWlzc25lciA8bWVpc3NuZXJAc3VzZS5kZT4KCUZpeGVkIHBvd2VycGMgY29tcGlsZS4KCgkqIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmM6IExpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglHaXZlIHRoZSByaWdodCBpZHMgdG8gdGhlIERpcmVjdFNvdW5kQ3JlYXRlOCBmdW5jdGlvbiAodGhhbmtzIHRvCglSb2JlcnQgUmVpZikuCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmM6IExpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglBY3R1YWxseSBzZXQgdGhlIEdMIGNvbnRleHQgYmVmb3JlIGRvaW5nIGFueSBHTCBjYWxscy4KCgkqIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGRsbHMva2VybmVsL3RpbWUuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglBZGRlZCBTZXRTeXN0ZW1UaW1lQWRqdXN0bWVudCBzdHViLgoKMjAwMy0wNS0wMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHByb2dyYW1zL3dpbmVkYmcvc3RhYnMuYzoKCUFkZGVkIGR1bW15IHJlYWRfZWxmX2luZm8gZm9yIHRoZSBub24tRUxGIGNhc2UgKHJlcG9ydGVkIGJ5IFN0ZXZlbgoJRWR3YXJkcykuCgoJKiBkbGxzL3VzZXIva2V5Ym9hcmQuc3BlYzogQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJQWRkZWQgc29tZSBzdHVicy4KCgkqIGRsbHMvZHNvdW5kL21peGVyLmMsIGRsbHMvZHNvdW5kL3ByaW1hcnkuYzoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglNb3ZlIGFsbCB0ZXN0cyB0byBvdXRzaWRlIHRoZSBsb29wIHdoZW4gc2V0dGluZyB2b2x1bWUuCglBZGQgdHJhY2VzIHRvIGZ1bmN0aW9ucy4KCgkqIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmM6IExpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIG1pc2MuIHRyYWNpbmcgZml4ZXMKCS0gaGFuZGxlIElJRF9JRGlyZWN0U291bmQoOCkgYXMgdGhlIGRlZmF1bHQgc291bmQgZHJpdmVyCgoJKiBkbGxzL2RtdXNpYy9NYWtlZmlsZS5pbiwgZGxscy9kbXVzaWMvZG11c2ljLmMsCgkgIGRsbHMvZG11c2ljL2RtdXNpY19wcml2YXRlLmgsIHdpbmVkZWZhdWx0LnJlZzoKCVJvayBNYW5kZWxqYyA8cm9rbWFuZGVsamNAaG90bWFpbC5jb20+CglJbXBsZW1lbnRlZCBEaXJlY3RNdXNpYzpFbnVtUG9ydCBhbmQgRGlyZWN0TXVzaWM6R2V0RGVmYXVsdFBvcnQuCgoJKiBzZXJ2ZXIvc2VtYXBob3JlLmM6IFJlbW92ZWQgbm8gbG9uZ2VyIGNvcnJlY3QgYXNzZXJ0aW9uLgoKCSogbWlzYy9yZWdpc3RyeS5jOiBSZW1vdmVkIHVzZWxlc3MgY2hlY2sgZm9yIHJlZ2lzdHJ5IGZpbGUgdmVyc2lvbi4KCgkqIGRsbHMvZHNvdW5kL2J1ZmZlci5jLCBkbGxzL2Rzb3VuZC9jYXB0dXJlLmMsCgkgIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmMsIGRsbHMvZHNvdW5kL2Rzb3VuZF9wcml2YXRlLmgsCgkgIGRsbHMvZHNvdW5kL21peGVyLmMsIGRsbHMvZHNvdW5kL3Byb3BzZXQuYzoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglSZXZlcnNlZCByZWxhdGlvbnNoaXAgYmV0d2VlbiBidWZmZXJzIGFuZCBub3RpZmllcy4KCUZpeGVkIG5vdGlmeSByZXVzZSBidWcuCglNaW5vciBkb2N1bWVudGF0aW9uIGFuZCBlcnJvciBtZXNzYWdlIGNsZWFudXAuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUFkZGVkIGRyaXZlciBwcm9wZXJ0eSBzZXQgaW1wbGVtZW50YXRpb24uCglGaXhlZCBub3RpZnkgcmVsZWFzZSBidWcuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6IEFkYW0gR3VuZHkgPGFyZ0BjeWJlcnNjaWVuY2UuY29tPgoJV2hlbiBpdGVtcyBhcmUgaW5zZXJ0ZWQgaW4gYSBwYXJ0aWFsbHkgcG9wdWxhdGVkIHRyZWV2aWV3LCB0aGUgZmlyc3QKCXZpc2libGUgaXRlbSB3YXMgbm90IGNvcnJlY3RseSB1cGRhdGVkLgoJVGhlIGZpcnN0IHZpc2libGUgaXRlbSB3YXMgc29tZXRpbWVzIHVzZWQgdG8gY2FsY3VsYXRlIHRoZSBsb2NhdGlvbiBvZgoJb3RoZXIgaXRlbXMgd2hlbiBpdCBoYWQgYmVlbiBmcmVlZC4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYywgaW5jbHVkZS9jb21tY3RybC5oOgoJQWRhbSBHdW5keSA8YXJnQGN5YmVyc2NpZW5jZS5jb20+CglDaGVjayB0aGUgbWFzayBmbGFncyBpbiB0aGUgaXRlbSBzdHJ1Y3R1cmUgdG8gZGV0ZXJtaW5lIGhvdyBtdWNoCgltZW1vcnkgdG8gcmVhZC93cml0ZS4KCgkqIGRsbHMvd2luZWRvcy9kZXZpY2VzLmMsIGRsbHMvd2luZWRvcy9kb3NleGUuaCwgZGxscy93aW5lZG9zL2Rvc3ZtLmMsCgkgIGRsbHMvd2luZWRvcy9pbnQxNi5jLCBkbGxzL3dpbmVkb3MvaW50MjEuYzoKCUp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCVJlbW92ZSBvYnNvbGV0ZSBjb2RlIGZyb20gRE9TVk1fV2FpdC4KCVByZXBhcmUgRE9TVk1fV2FpdCBmb3IgaGFuZGxpbmcgbmVzdGVkIGludGVycnVwdHMgaW4gYm90aCByZWFsIGFuZAoJcHJvdGVjdGVkIG1vZGUuCglQcm92aWRlIHRlbXBvcmFyeSB3b3JrYXJvdW5kIGZvciBrZXlib2FyZCByZWxhdGVkIGRlYWRsb2NrLgoKCSogZGxscy93aW5lZG9zL2ludDMxLmM6IEp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCVJlcG9ydCBjb3JyZWN0IElSUSBiYXNlcyB0byBEUE1JIGFwcGxpY2F0aW9ucy4KCU1ha2UgaW50MzEgcHJpbnQgbW9yZSB0cmFjaW5nIGluZm9ybWF0aW9uLgoKCSogZGxscy93aW5lZG9zL21vZHVsZS5jLCBwcm9ncmFtcy93aW5ldmRtL3dpbmV2ZG0uYzoKCUp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCUZpeCBhcmd1bWVudCBwYXNzaW5nIHRvIERPUyBwcm9ncmFtIGZyb20gd2luZXZkbS4KCUFkZCBzdXBwb3J0IGZvciBpbnZva2luZyBET1MgcHJvZ3JhbXMgd2l0aCBsb25nIGNvbW1hbmQgbGluZXMuCgoJKiBkb2N1bWVudGF0aW9uL2ZhcS5zZ21sOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJUmVtb3ZlIHN0YWxlIGxpbmtzIGZyb20gdGhlIEZBUS4KCgkqIGRsbHMvdXNlci91c2VyMzIuc3BlYzogQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJQWRkZWQgbWlzc2luZyBXaW45OCB1c2VyMzIuZGxsIGZ1bmN0aW9uIGV4cG9ydHMgZW50cmllcy4KCgkqIGRvY3VtZW50YXRpb24vaW50cm9kdWN0aW9uLnNnbWwsIGRvY3VtZW50YXRpb24vcnVubmluZy5zZ21sOgoJQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJLSBpbXByb3ZlIGludHJvIHRleHQKCS0gZGVzY3JpYmUgYWx0ZXJuYXRpdmVzIHRvIFdpbmUKCgkqIGRvY3VtZW50YXRpb24vSE9XVE8td2luZWxpYjogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVJlbW92ZSBzb21lIG9ic29sZXRlIGFuZC9vciByZWR1bmRhbnQgaW5mby4KCjIwMDMtMDUtMDEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBNYWtlLnJ1bGVzLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgaW5jbHVkZS93aW5lL3dwcC5oLAoJICBsaWJzL01ha2VmaWxlLmluLCBsaWJzL3dwcC8uY3ZzaWdub3JlLCBsaWJzL3dwcC9NYWtlZmlsZS5pbiwKCSAgbGlicy93cHAvcHBsLmwsIGxpYnMvd3BwL3BweS55LCBsaWJzL3dwcC9wcmVwcm9jLmMsIGxpYnMvd3BwL3dwcC5jLAoJICBsaWJzL3dwcC93cHBfcHJpdmF0ZS5oLCB0b29scy9NYWtlZmlsZS5pbiwgdG9vbHMvd2lkbC9NYWtlZmlsZS5pbiwKCSAgdG9vbHMvd2lkbC9wYXJzZXIubCwgdG9vbHMvd2lkbC93aWRsLmMsIHRvb2xzL3dpbmV3cmFwcGVyLAoJICB0b29scy93cmMvTWFrZWZpbGUuaW4sIHRvb2xzL3dyYy9wYXJzZXIueSwgdG9vbHMvd3JjL3dyYy5jOgoJTW92ZWQgdGhlIHdwcCBsaWJyYXJ5IGZyb20gdG9vbHMvIHRvIGxpYnMvLgoJQ3JlYXRlIHN5bWxpbmtzIHRvIHRoZSB2YXJpb3VzIGxpYnJhcmllcyBpbiB0aGUgbGlicyBkaXJlY3RvcnkuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgbGlicy8uY3ZzaWdub3JlLCBsaWJzL01ha2VsaWIucnVsZXMuaW4sCgkgIGxpYnMvdW5pY29kZS9NYWtlZmlsZS5pbiwgbGlicy93aW5lL01ha2VmaWxlLmluOgoJTW92ZWQgcnVsZXMgZm9yIGJ1aWxkaW5nIHNoYXJlZCBsaWJyYXJpZXMgaW50byBhIGdsb2JhbCBNYWtlbGliLnJ1bGVzCglmaWxlLgoKCSogZGxscy9hZHZhcGkzMi9hZHZhcGkzMi5zcGVjLCBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmMsCgkgIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy9udGRsbC9zZWMuYywgaW5jbHVkZS93aW50ZXJubC5oOgoJUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCS0gSW1wbGVtZW50ZWQgUnRsQWRkQWNjZXNzQWxsb3dlZEFjZSwgUnRsQWRkQWNjZXNzRGVuaWVkQWNlLAoJICBSdGxBZGRBY2UsIFJ0bFZhbGlkQWNsLgoJLSBBZGRlZCB0aGUgY29ycmVzcG9uZGluZyBmdW5jdGlvbnMgaW4gYWR2YXBpMzIuCgktIEdyb3VwZWQgdGhlIEFDTCBmdW5jdGlvbnMgaW4gYWR2YXBpMzIuCgoJKiBkb2N1bWVudGF0aW9uL3dpbmUuY29uZi5tYW46CglTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCUFwcGxpY2F0aW9uIHNwZWNpZmljIHNldHRpbmdzIGFyZSBhbHNvIHN1cHBvcnRlZCBmb3IgZHNvdW5kIGFuZAoJdmVyc2lvbiBzZWN0aW9ucy4KCgkqIHByb2dyYW1zL3dpbmVmaWxlL3dpbmVmaWxlLmM6IElnb3IgU3RlcGluIDxpc0B4dG0ucnU+CglDaGFuZ2VkIGZvbnQgY2hhcnNldCBmcm9tIEFOU0kgdG8gREVGQVVMVF9DSEFSU0VULgoKMjAwMy0wNC0zMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvY29tY3RsMzIvYW5pbWF0ZS5jOiBNaWtlIEhlYXJuIDxtLmhlYXJuQHNpZ25hbC5xaW5ldGlxLmNvbT4KCUNoYW5nZSByZXR1cm4gY29kZSBjb21wYXJpc29uIGluIEFWSSBjb250cm9sIChmcm9tIHBhdGNoIGJ5CglzdGFubGV5Zzc2QHlhaG9vLmNvbSkuCgoJKiBkb2N1bWVudGF0aW9uL3NhbXBsZXMvc3lzdGVtLmluaToKCU1pa2UgSGVhcm4gPG0uaGVhcm5Ac2lnbmFsLnFpbmV0aXEuY29tPgoJQWRkIGRlZmF1bHQgY29kZWMgZW50cnkgKGZyb20gcGF0Y2ggYnkgc3RhbmxleWc3NkB5YWhvby5jb20pLgoKCSogY29udHJvbHMvYnV0dG9uLmM6IE1heGltZSBCZWxsZW5n6SA8bWF4aW1lLmJlbGxlbmdlQGxhcG9zdGUubmV0PgoJLSBGaXggc29tZSBpbmRlbnRhdGlvbiBwcm9ibGVtcy4KCS0gSGFuZGxlIGNvcnJlY3RseSB0aGUgYWxpZ25lbWVudCBvZiB0aGUgY2hlY2tib3hlcyBpZiB0aGUKCSAgQlNfVE9QL0JTX0JPVFRPTSBmbGFncyBhcmUgc2V0LgoKCSogZGxscy93aW5tbS9tY2kuYywgZGxscy93aW5tbS9tbXN5c3RlbS5jLCBkbGxzL3dpbm1tL3dpbmVtbS5oOgoJQXZvaWQgY2FsbGluZyBXaW4zMiByZXNvdXJjZSBmdW5jdGlvbnMgb24gMTYtYml0IG1vZHVsZXMuCgoJKiBtaXNjZW11L01ha2VmaWxlLmluOgoJV2Ugc3RpbGwgbmVlZCB0byBsaW5rIGFnYWluc3QgbnRkbGwgdW50aWwgdGhlIHB0aHJlYWQgc3R1ZmYgaXMgZml4ZWQKCXByb3Blcmx5LgoKCSogZGxscy9semV4cGFuZC9semV4cGFuZDE2LmMsIGRsbHMvbHpleHBhbmQvbHpleHBhbmRfbWFpbi5jLAoJICBkbGxzL3ZlcnNpb24vcmVzb3VyY2UuYywgaW5jbHVkZS9semV4cGFuZC5oOgoJU3RldmVuIEVkd2FyZHMgPFN0ZXZlbl9FZDQxNTNAeWFob28uY29tPgoJRml4IGZvciBidWlsZGluZyBsemV4cGFuZCB3aXRoIE1pbmd3IG9yIE1TX1ZDKysgaW5jbHVkZXMKCgkqIGxpYnMvd2luZS93aW5lLmRlZjogQWRkZWQgd2luZV9pbml0LgoKCSogZGxscy9udGRsbC9yZXNvdXJjZS5jOgoJRml4ZWQgdHlwbyBpbiBsYXN0IG1pbnV0ZSBjaGFuZ2UgKHNwb3R0ZWQgYnkgR2VyYWxkIFBmZWlmZXIpLgoKCSogZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL3Jlc291cmNlLmMsCgkgIGRsbHMva2VybmVsL3Jlc291cmNlMTYuYywgZGxscy9udGRsbC9NYWtlZmlsZS5pbiwgaWYxNjMyL2J1aWx0aW4uYywKCSAgaW5jbHVkZS9tb2R1bGUuaCwgbG9hZGVyL25lL2NvbnZlcnQuYywgbG9hZGVyL25lL21vZHVsZS5jLAoJICBsb2FkZXIvbmUvcmVzb3VyY2UuYywgbG9hZGVyL3BlX3Jlc291cmNlLmMsIGxvYWRlci9yZXNvdXJjZS5jOgoJTW92ZWQgbW9zdCBvZiB0aGUga2VybmVsIHJlc291cmNlIEFQSXMgdG8gZGxscy9rZXJuZWwuCgoJKiBkbGxzL3VzZXIvcGFpbnRpbmcuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGJhaWthbC5ydT4KCVByb3RlY3QgQmVnaW5QYWludCBhbmQgRW5kUGFpbnQgZnJvbSBscHMgYmVpbmcgTlVMTC4KCgkqIGRsbHMvY29tY3RsMzIvdGFiLmM6IE1heGltZSBCZWxsZW5n6SA8bWF4aW1lLmJlbGxlbmdlQGxhcG9zdGUubmV0PgoJRml4IGJvdW5kaW5nIHJlY3RhbmdsZSBjb21wdXRhdGlvbiBmb3IgYW4gb3duZXJkcmF3IHRhYi4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUdlbmVyYXRlIGN1c3RvbSBkcmF3IG5vdGlmaWNhdGlvbnMgZm9yIG93bmVyZHJhdyBsaXN0dmlld3MgKGJhc2VkIG9uIGEKCXBhdGNoIGJ5IE1heGltZSBCZWxsZW5n6SkuCglSZW9yZ2FuaXplIHRoZSBjdXN0b20gZHJhdyBjb2RlIGZvciBiZXR0ZXIgcmV1c2UuCgoJKiBkbGxzL25ldGFwaTMyL3Rlc3RzL3drc3RhLmMsIGRsbHMvbmV0YXBpMzIvd2tzdGEuYzoKCUp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCUJldHRlciBBUEkgY29tcGxpYW5jZSBhbmQgdGVzdCBjYXNlIGZvciBOZXRXa3N0YVRyYW5zcG9ydEVudW0uCgoyMDAzLTA0LTI5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9rZXJuZWwvbG9jYWxlLmMsIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywKCSAgZGxscy9udGRsbC9yZXNvdXJjZS5jLCBpbmNsdWRlL3dpbnRlcm5sLmg6CglJbXBsZW1lbnRlZCBudGRsbCByZXNvdXJjZSBmdW5jdGlvbnMuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUZpeGVkIGEgcHJvYmxlbSB3aGVyZSBPU1MgdHJpZ2dlciBzdXBwb3J0IGlzIGluY29uc2lzdGVudC4KCgkqIGRsbHMvY29tbWRsZy9jZGxnLmgsIGRsbHMvY29tbWRsZy9jb2xvcmRsZy5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jLAoJICBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmMsIGRsbHMvY29tbWRsZy9maW5kZGxnLmMsCgkgIGRsbHMvY29tbWRsZy9mb250ZGxnLmMsIGRsbHMvY29tbWRsZy9nZW5lcmljLmMsCgkgIGRsbHMvY29tbWRsZy9wcmludGRsZy5jOgoJR2V0IHJpZCBvZiB0aGUgQ09NTURMR19oSW5zdGFuY2UgdmFyaWFibGVzLgoKCSogZGxscy9kc291bmQvZHNvdW5kX21haW4uYywgZGxscy9kc291bmQvcHJvcHNldC5jLAoJICBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL2RzY29uZi5oLCBsaWJzL3V1aWQvZHhndWlkLmM6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQWRkZWQgcGFydGlhbCBwcm9wZXJ0eSBzZXQgc3VwcG9ydCB3aGljaCBpcyB1c2VkIGJ5IGR4ZGlhZy5leGUuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUFkZGVkIGRyaXZlciBub3RpZnkgaW1wbGVtZW50YXRpb24uCgoJKiBkbGxzL2RpbnB1dC9kZXZpY2UuYzogQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJU21hbGwgZml4IGluIElEaXJlY3RJbnB1dERldmljZTJJbXBsX1F1ZXJ5SW50ZXJmYWNlLgoKCSogd2luZG93cy9jdXJzb3JpY29uLmM6IE1heGltZSBCZWxsZW5n6SA8bWF4aW1lLmJlbGxlbmdlQGxhcG9zdGUubmV0PgoJLSBGaXggc29tZSBpbmRlbnRhdGlvbi4KCS0gRml4IHRoZSBsb2FkaW5nIG9mIGljb24gcmVzb3VyY2VzLgoKCSogZGxscy9kM2Q4L2QzZDhfcHJpdmF0ZS5oOiBDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglSZXNlcnZlIHNwYWNlIGZvciAxNiBzdHJlYW1zIGluIHRoZSBzdGF0ZWJsb2NrLgoKCSogZGxscy9kaW5wdXQvZGlucHV0X21haW4uYzogQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJRW5hYmxlIGNyZWF0aW9uIG9mIERpcmVjdElucHV0IG9iamVjdHMgdHJvdWdoIENvQ3JlYXRlSW5zdGFuY2UuCgoyMDAzLTA0LTI3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy93aW5lZG9zL21vZHVsZS5jOiBGaXhlZCBub24tTVogY2FzZSBicm9rZW4gYnkgcHJldmlvdXMgcGF0Y2guCgoJKiBwcm9ncmFtcy9NYWtlZmlsZS5pbjogSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglJbnN0YWxsIHdpbmV2ZG0uCgoJKiBvYmplY3RzL2ZvbnQuYzogU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtTGluZS5jb20+CglNb3ZlZCAoc3R1YikgaW1wbGVtZW50YXRpb24gb2YgR2V0S2VybmluZ1BhaXJzIGZyb20gYXNjaWkgdG8gdW5pY29kZS4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaDogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUluZGVudGF0aW9uIGZpeGVzLgoKCSogZGxscy93aW5pbmV0L3VybGNhY2hlLmMsIGRsbHMvd2luaW5ldC93aW5pbmV0LnNwZWM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglTb21lIFVybENhY2hlIHN0dWJzLgoKCSogZGxscy93aW5zcG9vbC9pbmZvLmMsIGRsbHMvd2luc3Bvb2wvd2luc3Bvb2wuZHJ2LnNwZWM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglBZGRlZCBHZXRQcmludFByb2Nlc3NvckRpcmVjdG9yeUEgc3R1Yi4KCgkqIGRsbHMvY29tY3RsMzIvdGFiLmM6IFN0ZXBoYW4gQkVVWkUgPGZiaWdndW5AaG90bWFpbC5jb20+CglJbXBsZW1lbnRlZCBtZXNzYWdlIFRDTV9TRVRQQURESU5HIHdpdGggdGhlIERpbWl0cmkncyBhZHZpY2UuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy93aW5lZG9zL21vZHVsZS5jLAoJICBkbGxzL3dpbmVkb3Mvd2luZWRvcy5zcGVjLCBpbmNsdWRlL2NhbGxiYWNrLmgsIGxpYnMvd2luZS9sb2FkZXIuYywKCSAgbG9hZGVyL25lL21vZHVsZS5jLCBsb2FkZXIvdGFzay5jLCBtaXNjZW11Ly5jdnNpZ25vcmUsCgkgIG1pc2NlbXUvTWFrZWZpbGUuaW4sIG1pc2NlbXUvbWFpbi5jLCBtc2Rvcy9kcG1pLmMsCgkgIHByb2dyYW1zL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5ldmRtLy5jdnNpZ25vcmUsCgkgIHByb2dyYW1zL3dpbmV2ZG0vTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmV2ZG0vd2luZXZkbS5jLAoJICBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJTW92ZWQgdGhlIGZ1bmN0aW9uYWxpdHkgb2Ygc3RhcnRpbmcgV2luMTYgYW5kIERPUyBwcm9ncmFtcyBmcm9tIHRoZQoJY29tbW9uIHByb2Nlc3Mgc3RhcnR1cCBpbnRvIGEgc2VwYXJhdGUgd2luZXZkbSBhcHBsaWNhdGlvbi4KCgkqIGRsbHMvb2xlYXV0MzIvdXNybWFyc2hhbC5jOiBBZGRlZCBOT05BTUVMRVNTVU5JT04vU1RSVUNUIGRlZmluZXMuCgoJKiBsb2FkZXIvbG9hZG9yZGVyLmM6CglTaWxlbnRseSBpZ25vcmUgJ3NvJyBsb2Fkb3JkZXIgaW4gdGhlIGNvbmZpZyBmaWxlIGluc3RlYWQgb2YKCWRpc3BsYXlpbmcgYW4gZXJyb3IuCgoJKiBkbGxzL3dpbm1tL3dpbmVhbHNhL2F1ZGlvLmM6CglNYWtlIHN1cmUgdGhhdCBzbmRfcGNtX29wZW4gcmV0dXJuZWQgYSB2YWxpZCBoYW5kbGUgYmVmb3JlIHVzaW5nIGl0LgoKCSogZGxscy93aW5tbS93aW5lYXJ0cy9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS93aW5lYXJ0cy9hdWRpby5jLAoJICBkbGxzL3dpbm1tL3dpbmVhdWRpb2lvL2F1ZGlvLmMsIGRsbHMvd2lubW0vd2luZWphY2svYXVkaW8uYywKCSAgZGxscy93aW5tbS93aW5lbmFzL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL3dpbmVuYXMvYXVkaW8uYzoKCUplcnJ5IEppIDxKZXJyeUp6QGhvdG1haWwuY29tPgoJVGhlIG1pc3NpbmcgcGFydCBvZiBtdWx0aXBsZSBkZXZpY2Ugc3VwcG9ydCBmb3Igd2luZWFydHMsIHdpbmVhdWRpb2lvLAoJd2luZWphY2sgYW5kIHdpbmVuYXMuCgoJKiBkbGxzL2RtdXNpYy9NYWtlZmlsZS5pbiwgZGxscy9kbXVzaWMvZG11c2ljLmMsCgkgIGRsbHMvZG11c2ljL2RtdXNpY19tYWluLmMsIGRsbHMvZG11c2ljL2RtdXNpY19wZXJmb3JtYW5jZS5jLAoJICBkbGxzL2RtdXNpYy9kbXVzaWNfcHJpdmF0ZS5oOgoJUm9rIE1hbmRlbGpjIDxyb2ttYW5kZWxqY0Bob3RtYWlsLmNvbT4KCVNvbWUgZG11c2ljIGZ1bmN0aW9ucyBpbXBsZW1lbnRhdGlvbi4KCgkqIHByb2dyYW1zL3dpbmVjZmcvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmVjZmcvd2luZWNmZy5jOgoJTWF0dGhldyBEYXZpc29uIDxtLmRhdmlzb25AdmlyZ2luLm5ldD4KCUFkZGVkIHNvbWUgcmVnaXN0cnktbG9hZGluZyBjb2RlLgoKCSogY29udHJvbHMvZWRpdC5jOiBCcmFkIENhbXBiZWxsIDxicmFkQHNlbWUuY29tLmF1PgoJRU1fUkVQTEFDRVNUUiB3YXMgbm90IHJlc3BlY3RpbmcgYnVmZmVyX2xpbWl0LgoKCSogd2luMzIvZXhjZXB0LmM6IFN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJUmVtb3ZlZCBXLT5BIGNhbGxzIGZyb20gRmF0YWxBcHBFeGl0Vy4KCgkqIGRsbHMvY29tY3RsMzIvdHJhY2tiYXIuYzoKCU1heGltZSBCZWxsZW5n6SA8bWF4aW1lLmJlbGxlbmdlQGxhcG9zdGUubmV0PgoJRml4IHRoZSBjb21wdXRhdGlvbiBvZiB0aGUgdHJhY2tiYXIncyBzaXplLgoKMjAwMy0wNC0yNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNlcnZlci9wdHJhY2UuYzoKCVByb3Blcmx5IGhhbmRsZSB0aGUgd2FpdDQgc3lzY2FsbCBmYWlsdXJlIG9uIGtlcm5lbHMgdGhhdCBkb24ndAoJc3VwcG9ydCB0aGUgX19XQUxMIGZsYWcuCgoJKiBkbGxzL3JwY3J0NC9uZHJfbWFyc2hhbGwuYywgZGxscy9ycGNydDQvcnBjcnQ0LnNwZWM6CglBZGRlZCBhIGZldyBzdHVicyBuZWVkZWQgYnkgdGhlIGdlbmVyYXRlZCBvYWlkbF9wLmMuCgoJKiBkbGxzL29sZWF1dDMyL01ha2VmaWxlLmluLCBkbGxzL29sZWF1dDMyL29haWRsX3AuYywKCSAgZGxscy9vbGVhdXQzMi9vbGVhdXQzMi5zcGVjLCBkbGxzL29sZWF1dDMyL3Vzcm1hcnNoYWwuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJUHJlbGltaW5hcnkgaW1wbGVtZW50YXRpb24gb2YgcHJvcGVyIElEaXNwYXRjaCBtYXJzaGFsbGluZy4KCgkqIGRvY3VtZW50YXRpb24vZmFxLnNnbWw6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJTWFueSB0eXBvIGZpeGVzIGFuZCBjYXNlIGZpeGVzLgoJUmVwaHJhc2VkIHRoaW5ncyBoZXJlIGFuZCB0aGVyZS4KCgkqIGRsbHMvdXNlci90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL3VzZXIvdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvdXNlci90ZXN0cy9saXN0Ym94LmM6CglGZXJlbmMgV2FnbmVyIDx3ZmVyaUB0YmEuZWx0ZS5odT4KCUFkZGVkIGxpc3Rib3ggdGVzdC4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJRml4ZWQgYnVnIGNhdXNlZCBieSBPU1MgaW5jb25zaXN0ZW50IHRyaWdnZXIgb3BlcmF0aW9uIG9uIGRpZmZlcmVudAoJaGFyZHdhcmUuCgoJKiBkbGxzL2NvbWN0bDMyL3RyYWNrYmFyLmM6CglNYXhpbWUgQmVsbGVuZ+kgPG1heGltZS5iZWxsZW5nZUBsYXBvc3RlLm5ldD4KCVJlbW92ZSB0aGUgc2VuZGluZyBvZiBOTV9UT09MVElQU0NSRUFURUQgd2hpY2ggaXMgbm9uIGV4aXN0ZW50IHVuZGVyCglXaW5kb3dzIGR1cmluZyB0aGUgY3JlYXRpb24gb2YgdGhlIHRyYWNrYmFyLgoKCSogd2luZWRlZmF1bHQucmVnOiBSb2sgTWFuZGVsamMgPHJva21hbmRlbGpjQGhvdG1haWwuY29tPgoJQWRkZWQgZG11c2ljIHJlZ2lzdHJ5IGVudHJpZXMuCgoJKiBkbGxzL2tlcm5lbC9ubHMvbmxkLm5sczogSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglEdXRjaCBsb2NhbGlzYXRpb24gb2YgbGFuZ3VhZ2UgZ3JvdXAgbmFtZXMuCgoJKiBkbGxzL3NoZWxsMzIvc2hsZmlsZW9wLmM6CglSb2xmIEthbGJlcm1hdHRlciA8cm9sZi5rYWxiZXJtYXR0ZXJAY2l0ZW5nLmNvbT4KCUZpeCBzb21lIHR5cG9zIGFuZCBhIG1lbW9yeSBsZWFrIGluIFNIRmlsZU9wZXJhdGlvbkEuCgoyMDAzLTA0LTIyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9kM2Q4L2RpcmVjdHguYywgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLAoJICBkbGxzL29wZW5nbDMyL3dnbC5jLCBkbGxzL3gxMWRydi94MTFkcnYuaCwgaW5jbHVkZS94MTFkcnYuaDoKCU1vdmVkIHgxMWRydi5oIHRvIGRsbHMveDExZHJ2LgoKCSogZGxscy9udGRsbC9maWxlLmMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZmlsZXMvZmlsZS5jLAoJICBpbmNsdWRlL3dpbnRlcm5sLmg6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCU1vdmVkIGtlcm5lbDMyLkZsdXNoRmlsZUJ1ZmZlcnMgdG8gbnRkbGwuTnRGbHVzaEJ1ZmZlcnNGaWxlLgoKCSogdG9vbHMvd2luZWluc3RhbGw6IFZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCURvbid0IGNoYW5nZSB0byB0dHlkcnYgdG8gaW5zdGFsbCByZWdpc3RyeSwgcmVnZWRpdCBkb2Vzbid0IHVzZSBYLgoJTWFrZSBzdXJlIHRoZSBjdXJyZW50IGRpciBpcyBtYXBwZWQgaW4gRE9TLgoKCSogZGxscy91c2VyL3VzZXIzMi5zcGVjLCBkbGxzL3VzZXIvdXNlcl9tYWluLmMsCgkgIGRsbHMveDExZHJ2L3gxMWRydi5zcGVjLCBkbGxzL3gxMWRydi94dmlkbW9kZS5jLCBpbmNsdWRlL3VzZXIuaCwKCSAgaW5jbHVkZS93aW51c2VyLmgsIHdpbmRvd3MvdXNlci5jOgoJQWxleCBQYXNhZHluIDxhanBAbWFpbC51dGV4YXMuZWR1PgoJSW1wbGVtZW50ZWQgRW51bURpc3BsYXlTZXR0aW5ncyogYW5kIENoYW5nZURpc3BsYXlTZXR0aW5ncyouCgoyMDAzLTA0LTIxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogTWFrZS5ydWxlcy5pbiwgZGxscy9NYWtlZGxsLnJ1bGVzLmluLCBkbGxzL01ha2V0ZXN0LnJ1bGVzLmluLAoJICBkbGxzL2dkaS9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sCgkgIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwKCSAgZGxscy91c2VyL01ha2VmaWxlLmluLCBpbmNsdWRlL01ha2VmaWxlLmluLCBtaXNjZW11L01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy9NYWtlcHJvZy5ydWxlcy5pbiwgcHJvZ3JhbXMvYXZpdG9vbHMvTWFrZWZpbGUuaW46CglSZW1vdmVkIG5vIGxvbmdlciBuZWVkZWQgdXNlcyBvZiBMRFBBVEguCgoJKiBkbGxzL2QzZDgvZDNkOF9wcml2YXRlLmgsIGRsbHMvZDNkOC9kZXZpY2UuYzoKCUphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglPbmx5IHJlYXBwbHkgdGhlIHdvcmxkLCB2aWV3IG9yIHByb2plY3Rpb24gdHJhbnNmb3JtIGNoYW5nZXMgaWYgd2UKCXJlYWxseSBoYXZlIHRvLgoKCSogZGxscy9kM2Q4L2RldmljZS5jOiBKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJTUlSUk9SX0FSQiBzdXBwb3J0IGlzIG5vdCBkZXBlbmRlbnQgb24gT3BlbkdMIDEuMyBhcyBJIG9yaWdpbmFsbHkKCWlmZGVmJ2VkLiBJdCBpcyBhcHBhcmVudGx5IGludHJvZHVjZWQgZnVsbHkgaW4gMS40LCBvciBkZXBlbmRlbnQgb24KCWFub3RoZXIgaWZkZWYsIEdMX0FSQl90ZXh0dXJlX21pcnJvcmVkX3JlcGVhdC4KCgkqIHRvb2xzL3dpbmVidWlsZC9NYWtlZmlsZS5pbiwgdG9vbHMvd2luZWJ1aWxkL3JlczMyLmM6CglSZXNvdXJjZSBuYW1lcyBkb24ndCBuZWVkIGEgY2FzZS1zZW5zaXRpdmUgY29tcGFyaXNvbjsgdGhpcyBhdm9pZHMKCWRlcGVuZGluZyBvbiBsaWJ3aW5lX3VuaWNvZGUuCgoJKiBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYywgZGxscy93aW5pbmV0L3dpbmluZXQuc3BlYzoKCURhbiBXb2xmIDxkandvbGZAcmVhbGl0eXdhdmUuY29tPgoJSW1wbGVtZW50ZWQgYSBzdHViIGZvciBEZXRlY3RBdXRvUHJveHlVcmwuCgoJKiBkbGxzL250ZGxsL01ha2VmaWxlLmluLCBkbGxzL3dpbmVkb3MvTWFrZWZpbGUuaW4sCgkgIGRsbHMvd2luZWRvcy9kb3Njb25mLmMsIGRsbHMvd2luZWRvcy9kb3NleGUuaCwgZGxscy93aW5lZG9zL2ludDIxLmMsCgkgIGluY2x1ZGUvbWlzY2VtdS5oLCBpbmNsdWRlL21zZG9zLmgsIG1zZG9zL2Rvc2NvbmYuYywgbXNkb3MvaW50MjEuYzoKCUp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCU1vdmVkIGRvc2NvbmYuYyB0byB3aW5lZG9zLgoKCSogZGxscy9kM2Q4L2RldmljZS5jOiBKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJRG9uJ3QgcmVhcHBseSBhbGwgdGhlIHRleHR1cmUgc3RhdGVzIGlmIHRoZSB0ZXh0dXJlIHdlIGFyZSByZXBsYWNpbmcKCWlzIHRoZSBzYW1lIGFzIHRoZSB0ZXh0dXJlIHRoZXJlIGFscmVhZHkgYW5kIHRoZSB0ZXh0dXJlIGlzIG5vdAoJJ2RpcnR5Jy4KCgkqIE1ha2UucnVsZXMuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL01ha2V0ZXN0LnJ1bGVzLmluOgoJU3VwcG9ydCByZXNvdXJjZXMgaW4gY3Jvc3MtY29tcGlsZWQgdGVzdHMuCgoJKiBkbGxzL2tlcm5lbC9ubHMvcHRiLm5scywgZGxscy9rZXJuZWwvbmxzL3B0Zy5ubHM6CglNYXJjZWxvIER1YXJ0ZSA8d2luZS1kZXZlbEBib2wuY29tLmJyPgoJTG9jYWxpemF0aW9uIG9mIHRoZSBuZXcgbGFuZ3VhZ2UgZ3JvdXAgc3RyaW5ncy4KCgkqIGRvY3VtZW50YXRpb24vZG9jdW1lbnRhdGlvbi5zZ21sOgoJRGltaXRyaWUgTy4gUGF1biA8ZGltaUBpbnRlbGxpd2FyZS5jYT4KCVJlbW92ZSByZWZlcmVuY2VzIHRvIG9ic29sZXRlIGZpbGVzLgoKCSogZGxscy9kM2Q4L2luZGV4YnVmZmVyLmM6IEphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglTaWxlbmNlIGluZGV4IGJ1ZmZlciBsb2NrICsgb2Zmc2V0IGZpeG1lIHRvIGEgdHJhY2UgYmVjYXVzZSB0aGUKCWJlaGF2aW91ciB1bmRlciB0aGF0IHNjZW5hcmlvIHdvcmtzLgoKCSogZGxscy9kM2Q4L2RldmljZS5jLCBkbGxzL2QzZDgvZGlyZWN0eC5jOgoJSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCURPVDMgaXNuJ3QgdGhlcmUgb24gZWFybGllciBvcGVuZ2wgdmVyc2lvbnMuCgoyMDAzLTA0LTIwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGluY2x1ZGUvY29uZmlnLmguaW4sIGluY2x1ZGUvd2luZS9wb3J0Lmg6CglDaGVjayBmb3Igc3RydWN0IG9wdGlvbiBpbmRlcGVuZGVudGx5IG9mIHRoZSBnZXRvcHRfbG9uZyBjaGVjay4KCgkqIHNjaGVkdWxlci9jbGllbnQuYzoKCVNldCBTQV9OT0NMRFdBSVQgaW4gdGhlIFNJR0NITEQgc2lnYWN0aW9uIHRvIGF2b2lkIHpvbWJpZXMuCgoJKiBkbGxzL2QzZDgvZGlyZWN0eC5jOiBKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJV2hlbiBhIGdhbWUgcmVxdWVzdHMgZnVsbHNjcmVlbiwgbWFrZSBpdHMgd2luZG93IHRoZSBkaW1lbnNpb25zCglyZXF1ZXN0ZWQuIElkZWFsbHkgdGhpcyBzaG91bGQgYmUgZm9sbG93ZWQgYnkgbWFraW5nIHRoZSBzY3JlZW4gdGhhdAoJcmVzb2x1dGlvbiwgYnV0IHRoaXMgc3VmZmljZXMgZm9yIG5vdy4KCgkqIG1pc2MvdmVyc2lvbi5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJRXhwbGljaXRseSBjYWxsIFZFUlNJT05fSW5pdCB3aXRoIHRoZSBtYWluIGV4ZSBmaWxlIG5hbWUsIHNvIHRoYXQKCWFwcGxpY2F0aW9uIHNldHRpbmdzIHdvcmsgZm9yIFdpbjE2IGFuZCBET1MgYXBwcyB0b28uCgoJKiBkb2N1bWVudGF0aW9uL2RiMmh0bWwtd2luZWhxLCBkb2N1bWVudGF0aW9uL21ha2Vfd2luZWhxOgoJRGltaXRyaWUgTy4gUGF1biA8ZGltaUBpbnRlbGxpd2FyZS5jYT4KCVVzZSB0aGUgc3RhbmRhcmQgZGIyaHRtbCBpbnN0ZWFkIG9mIG91ciBkYjJodG1sLXdpbmVocSBzY3JpcHQuCgoJKiBkbGxzL2QzZDgvZGlyZWN0eC5jOiBKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJV2luZG93cyBuZXZlciByZXBvcnRzIDI0IGJpdCBjb2xvdXJzLCBhbmQgc29tZSBnYW1lcyBmYWlsIHRvIHdvcmsKCXVubGVzcyBpbiBzcGVjaWZpYyBtb2Rlcy4gUmVwb3J0IDE2Yml0IGNvbG91ciBmb3IgMjRiaXQgbW9kZXMuCgoyMDAzLTA0LTE5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogcHJvZ3JhbXMvd2luZWRiZy9nZGJwcm94eS5jOiBFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCS0gYWRkZWQgc3VwcG9ydCBmb3IgbXVsdGktdGhyZWFkIGluIEdEQiByZW1vdGUgcmVhZC93cml0ZSByZWdpc3RlcihzKQoJICBjb21tYW5kcwoJLSBieSBkZWZhdWx0LCBpbnRlcm5hbCBlcnJvcnMgYXJlIG5vdyB2ZXJib3NlCgoJKiBjb250cm9scy9kZXNrdG9wLmMsIGRsbHMvdHR5ZHJ2L3duZC5jLCBkbGxzL3gxMWRydi9kZXNrdG9wLmMsCgkgIGRsbHMveDExZHJ2L3dpbmRvdy5jOgoJRG9uJ3QgYm90aGVyIHNlbmRpbmcgV01fTkNDUkVBVEUgdG8gdGhlIGRlc2t0b3Agd2luZG93LCB0aGlzIGRvZXNuJ3QKCXdvcmsgYW55d2F5IChzcG90dGVkIGJ5IFV3ZSBCb25uZXMpLgoKCSogZGxscy9kM2Q4L2RpcmVjdHguYzogSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCUNvcnJlY3QgZGV2aWNlIGNhcGFiaWxpdGVzIGluY2x1ZGluZyBzdXBwb3J0IGluIHByZXZpb3VzIHBhdGNoLCBhcwoJd2VsbCBhcyBtYWtpbmcgdGhlIHRleHR1cmUgb3BlcmF0aW9ucyBjYXBhYmlsaXRpZXMgbW9yZSBhY2N1cmF0ZS4KCgkqIGRsbHMvZDNkOC9kM2Q4X3ByaXZhdGUuaCwgZGxscy9kM2Q4L2RldmljZS5jLCBkbGxzL2QzZDgvZGlyZWN0eC5jOgoJSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCUFkZCBEb3RQcm9kdWN0MyBzdXBwb3J0IGlmIHN1cHBvcnRlZCBieSBvcGVuZ2wuCgoJKiBkbGxzL2tlcm5lbC9sb2NhbGUuYywgZGxscy9rZXJuZWwvbG9jYWxlX3JjLnJjLAoJICBkbGxzL2tlcm5lbC9ubHMvKi5ubHMsIGluY2x1ZGUvd2lubmxzLmg6CglNYXhpbWUgQmVsbGVuZ+kgPG1heGltZS5iZWxsZW5nZUBsYXBvc3RlLm5ldD4KCUFkZGVkIHJlc291cmNlIHN0cmluZ3MgZm9yIGxhbmd1YWdlIGdyb3Vwcy4KCgkqIGRsbHMvc2hlbGwzMi9zaGxmaWxlb3AuYywgaW5jbHVkZS9zaGVsbGFwaS5oOgoJUm9sZiBLYWxiZXJtYXR0ZXIgPHJvbGYua2FsYmVybWF0dGVyQGNpdGVuZy5jb20+CglSZWltcGxlbWVudCBTSEZpbGVPcGVyYXRpb24gaW4gVW5pY29kZSwgYmFzZWQgb24gdGhlIHdvcmsgb2YgRGlldHJpY2gKCVRlaWNrbmVyLgoKCSogZGxscy9kM2Q4L2RldmljZS5jOiBKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJTWFrZSBjb2Rlc2FtcGxlciB0ZXh0dXJlIGFkZHJlc3NpbmcgbW9kZSBzYW1wbGUgd29yayBiZXR0ZXIuCglBZGQgbWlycm9yc3VwcG9ydCAoaWYgb3BlbmdsIDEuMykgYW5kIG1ha2UgY2xhbXAgYW5kIGJvcmRlciBhcHBlYXIKCW1vcmUgc2ltaWxhciB0byBXaW5kb3dzLgoKCSogaW5jbHVkZS9ycGMuaDogT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglEdW1teSBSUEMgZXhjZXB0aW9uIG1hY3Jvcy4KCgkqIGRsbHMvcnBjcnQ0L3JwY19iaW5kaW5nLmMsIGRsbHMvcnBjcnQ0L3JwY19iaW5kaW5nLmgsCgkgIGRsbHMvcnBjcnQ0L3JwY19zZXJ2ZXIuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJSW1wbGVtZW50ZWQgc2ltcGxlIGNhY2hpbmcgb2YgY2xpZW50IGNvbm5lY3Rpb25zLgoKCSogZG9jdW1lbnRhdGlvbi9NYWtlZmlsZS5pbiwgZG9jdW1lbnRhdGlvbi9hcmNoaXRlY3R1cmUuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9idWdzLnNnbWwsIGRvY3VtZW50YXRpb24vYnVpbGQuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9jb21waWxpbmcuc2dtbCwgZG9jdW1lbnRhdGlvbi9jb25maWd1cmluZy5zZ21sLAoJICBkb2N1bWVudGF0aW9uL2NvbnNvbGVzLnNnbWwsIGRvY3VtZW50YXRpb24vY3ZzLXJlZ3Jlc3Npb24uc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9jdnMuc2dtbCwgZG9jdW1lbnRhdGlvbi9kZWJ1Z2dlci5zZ21sLAoJICBkb2N1bWVudGF0aW9uL2RlYnVnZ2luZy5zZ21sLCBkb2N1bWVudGF0aW9uL2RsbHMuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9kb2N1bWVudGF0aW9uLnNnbWwsIGRvY3VtZW50YXRpb24vZmFxLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vZm9udHMuc2dtbCwgZG9jdW1lbnRhdGlvbi9nZXR0aW5nLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vaTE4bi5zZ21sLCBkb2N1bWVudGF0aW9uL2ltcGxlbWVudGF0aW9uLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vaW5zdGFsbGluZy5zZ21sLCBkb2N1bWVudGF0aW9uL2ludHJvZHVjdGlvbi5zZ21sLAoJICBkb2N1bWVudGF0aW9uL21ha2Vfd2luZWhxLCBkb2N1bWVudGF0aW9uL211bHRpbWVkaWEuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9vbGUuc2dtbCwgZG9jdW1lbnRhdGlvbi9vcGVuZ2wuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9wYXRjaGVzLnNnbWwsIGRvY3VtZW50YXRpb24vcG9ydGluZy5zZ21sLAoJICBkb2N1bWVudGF0aW9uL3ByaW50aW5nLnNnbWwsIGRvY3VtZW50YXRpb24vcnVubmluZy5zZ21sLAoJICBkb2N1bWVudGF0aW9uL3Rlc3Rpbmcuc2dtbCwgZG9jdW1lbnRhdGlvbi90b29scy5zZ21sLAoJICBkb2N1bWVudGF0aW9uL3dpbmVsaWItYmluZGxscy5zZ21sLCBkb2N1bWVudGF0aW9uL3dpbmVsaWItaW50cm8uc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi93aW5lbGliLW1mYy5zZ21sLCBkb2N1bWVudGF0aW9uL3dpbmVsaWItcGtnLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vd2luZWxpYi1wb3J0aW5nLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vd2luZWxpYi10b29sa2l0LnNnbWw6CglEaW1pdHJpZSBPLiBQYXVuIDxkaW1pQGludGVsbGl3YXJlLmNhPgoJUmVtb3ZlIHRoZSBnZW5lcmF0aW9uIG9mIGFsbCBkb2N1bWVudGF0aW9uIGluIG9uZSBkb2N1bWVudC4KCgkqIGRsbHMvcnBjcnQ0L3JwY19zZXJ2ZXIuYzogT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglGaXhlZCBhIHJhY2UgY29uZGl0aW9uIG9uIFJQQyB3b3JrZXIgdGhyZWFkIGNyZWF0aW9uLCBhbmQgYSB0eXBvLgoKCSogZGxscy9ycGNydDQvY3N0dWIuYzogT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglBZGRlZCBtaXNzaW5nIEFkZFJlZi4KCgkqIGZpbGVzL2RyaXZlLmM6IE1pY2hhbCBKYW51c3ogTWlyb3NsYXcgPE0uTWlyb3NsYXdAZWxrYS5wdy5lZHUucGw+CglGaXhlZCB0eXBvIGluIGNvbW1lbnQuCgoJKiBpbmNsdWRlL21zdmNydC9zZWFyY2guaDogVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJVGVybWluYXRlIHRoZSBsZmluZCBpbmxpbmUgZnVuY3Rpb24uCgoJKiBtaXNjL3ZlcnNpb24uYzogVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJQ2hhbmdlIHRoZSB2ZXJzaW9uIG9mIHdpbjJrIHRvIFNQMy4KCUNoYW5nZSB0aGUgdmVyc2lvbiBvZiBYUCB0byBTUDEuCglNb2RpZnkgdmFsdWVzIG9mIFhQIGFjY29yZGluZyB0byBhIHBvc3QgYnkgUGhpbGlwcCBXb2xsZXJtYW5uLgoKCSogdG9vbHMvd3JjL3dyYy5jLCB0b29scy93cmMvd3JjLm1hbjoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglBZGQgLWZvIGFzIGEgc3lub255bSBmb3IgLW8sIGZvciBjb21wYXRpYmlsaXR5IHdpdGggcmMuCglMaW5lIHVwIGhlbHAgbWVzc2FnZSwgY2xlYW51cCBzb21lIGVycm9yIG1lc3NhZ2VzLgoKCSogZmlsZXMvZG9zX2ZzLmM6IE1pY2hhbCBKYW51c3ogTWlyb3NsYXcgPE0uTWlyb3NsYXdAZWxrYS5wdy5lZHUucGw+CglPbiBMaW51eDogYXZvaWQgYmxvY2tpbmcgaW4gRE9TRlNfT3BlbkRpcl9WRkFUIGlmIHNwZWNpZmllZCBwYXRoIGlzCglub3QgYSBkaXJlY3RvcnkuCgoyMDAzLTA0LTE3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS93aW5zb2NrLmg6IFlldCBhbm90aGVyIGF0dGVtcHQgYXQgZml4aW5nIHRoZSBodG9ubCBmdW5jdGlvbnMuCgoJKiBpbmNsdWRlL21zdmNydC9tYWxsb2MuaDoKCUZpeGVkIGFsbG9jYSBoYW5kbGluZyB0aGUgd2F5IG1pbmd3IGRvZXMgaXQgKHJlcG9ydGVkIGJ5IFZpbmNlbnQKCULpcm9uKS4KCgkqIGRsbHMvb2xlYXV0MzIvdG1hcnNoYWwuYywgZGxscy9vbGVhdXQzMi90eXBlbGliLmMsIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5oOgoJQXZvaWQgbG9jYWwgV0lOQVBJIGZ1bmN0aW9uIHBvaW50ZXJzIGluIF9pbnZva2UuCgoJKiBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvcGlkbC5oLCBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLAoJICBkbGxzL3NoZWxsMzIvc2hsbWVudS5jLCBkbGxzL3NoZWxsMzIvdW5kb2NzaGVsbC5oLAoJICBpbmNsdWRlL3dpbmUvb2JqX3NoZWxsZm9sZGVyLmg6CglSb2xmIEthbGJlcm1hdHRlciA8cm9sZi5rYWxiZXJtYXR0ZXJAY2l0ZW5nLmNvbT4KCUltcGxlbWVudGVkIElMR2V0RGlzcGxheU5hbWVFeEEgYW5kIElMR2V0RGlzcGxheU5hbWVFeFcgYW5kIGNhbGwgdGhlbQoJZnJvbSBJTEdldERpc3BsYXlOYW1lQVcgYW5kIElMR2V0RGlzcGxheU5hbWVFeEFXLgoKCSogZGxscy9kM2Q4L2QzZDhfcHJpdmF0ZS5oLCBkbGxzL2QzZDgvZGV2aWNlLmMsIGRsbHMvZDNkOC9kaXJlY3R4LmM6CglDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglIYW5kbGUgY3JlYXRpb24gb2YgYSBkZXB0aC9zdGVuY2lsIGJ1ZmZlciB3aGVuIGNyZWF0aW5nIGEgZGV2aWNlLgoJSW1wbGVtZW50IElEaXJlY3QzRDhEZXZpY2VJbXBsX0dldERlcHRoU3RlbmNpbEJ1ZmZlci4KCgkqIGRsbHMvbXN2Y3J0L21iY3MuYzogTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5kZT4KCW1idG93YyByZXR1cm5zIC0xIGlmIHdlIGNhbid0IGZpbmQgYSB2YWxpZCBtdWx0aWJ5dGUgY2hhciBpbiB0aGUgbm9uCglOVUxMIHNvdXJjZSBzdHJpbmcuCgoJKiBkbGxzL2tlcm5lbC90aW1lLmM6IE1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CglGaXhlcyBmb3IgU3lzdGVtVGltZVRvVHpTcGVjaWZpY0xvY2FsVGltZSgpIGFuZAoJVHpTcGVjaWZpY0xvY2FsVGltZVRvU3lzdGVtVGltZSgpLgoKCSogc2VydmVyL2ZkLmMsIHNlcnZlci9uYW1lZF9waXBlLmM6CglCaWxsIE1lZGxhbmQgPGJpbGxtZWRsYW5kQG1lcmN1cnlzcGVlZC5jb20+CglGaXggZm9yIGNsaWVudCBhY2Nlc3NpbmcgYSBuYW1lZCBwaXBlIGFmdGVyIHRoZSBzZXJ2ZXIgY2xvc2VzIGl0LgoKCSogZmlsZXMvZHJpdmUuYzogTWljaGFsIEphbnVzeiBNaXJvc2xhdyA8TS5NaXJvc2xhd0BlbGthLnB3LmVkdS5wbD4KCVJlZnVzZSB0byByZWFkIG5vbi1ibG9jayBkZXZpY2Ugc2V0IGluIGNvbmZpZy4KCUF2b2lkIGJsb2NraW5nIG9uIG9wZW4gaWYgdXNlciBzZXRzIGRldmljZSB0byB1bmNvbm5lY3RlZCBwaXBlLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvZmlsZS5jLCBmaWxlcy9kb3NfZnMuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUZpbmRGaXJzdEZpbGUgb24gcm9vdCBkaXJlY3Rvcnkgc2hvdWxkIGZhaWwuCgoyMDAzLTA0LTE2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2VydmVyL3B0cmFjZS5jOgoJRmFsbCBiYWNrIHRvIGtpbGwoKSBpZiB0aGUga2VybmVsIGRvZXNuJ3Qgc3VwcG9ydCB0a2lsbCgpLgoKCSogZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL250ZGxsL3BhdGguYywgZGxscy9udGRsbC9ydGxzdHIuYywKCSAgZGxscy9udGRsbC90ZXN0cy9wYXRoLmMsIGluY2x1ZGUvd2ludGVybmwuaDoKCUltcGxlbWVudGVkIFJ0bElzTmFtZUxlZ2FsRE9TOERvdDMgKGJhc2VkIG9uIGEgcGF0Y2ggYnkgRXJpYyBQb3VlY2gpLgoJSW1wbGVtZW50ZWQgUnRsVXBjYXNlVW5pY29kZVN0cmluZ1RvQ291bnRlZE9lbVN0cmluZy4KCgkqIGRsbHMvZHBsYXl4L2RwbGF5LmMsIHdpbmVkZWZhdWx0LnJlZzoKCVN5bHZhaW4gUGV0cmVvbGxlIDxzcGV0cmVvbGxlQHlhaG9vLmZyPgoJLSBGaXggRGlyZWN0UGxheUVudW1lcmF0ZUEgZXhpdCBjb2RlLgoJLSBBZGQgZGVmYXVsdCByZWdpc3RyeSBlbnRyeSBmb3IgRGlyZWN0UGxheSBTZXJ2aWNlIFByb3ZpZGVycy4KCgkqIGRsbHMveDExZHJ2L2tleWJvYXJkLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCUZpeCB0aGUgcGF0aCBvZiBrZXlib2FyZC5jIGluc2lkZSBhIEZJWE1FIGxvZyBzdGF0ZW1lbnQuCgoJKiB3aW4zMi9leGNlcHQuYzogVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJRG9uJ3QgdXNlIGEgaGV4IG51bWJlciBmb3IgdGhlIGV2ZW50IGluIHRoZSBkZWZhdWx0IHN0cmluZy4KCgkqIHRvb2xzL2MybWFuLnBsOiBUaG9tYXMgTWVydGVzIDx0aG9tYXMubWVydGVzQGdteC5hdD4KCUNoYW5nZSBjMm1hbiB0aGF0IGl0IHdvcmtzIHdpdGggdGhlIG5ldyBmb3JtYXQgb2YgdGhlIHNwZWMgZmlsZXMKCSh3aXRob3V0IGV4cG9ydGVkIG5hbWUpLgoKCSogZGxscy9NYWtldGVzdC5ydWxlcy5pbjogSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglEb24ndCBsaW5rIGNyb3NzIGNvbXBpbGVkIHRlc3RzIGFnYWluc3QgV2luZSBpbXBvcnQgbGlicmFyaWVzLgoKCSogbWlzYy92ZXJzaW9uLmM6IEFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCVByaW50IG91dCBXaW5kb3dzIHZlcnNpb24gdmFsdWVzLCBpbiBodW1hbi1yZWFkYWJsZSBmb3JtYXQuCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmg6IFJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCUZpeCB0aGUgTGlzdFZpZXdfU2V0SXRlbVN0YXRlIG1hY3JvLgoKMjAwMy0wNC0xNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIE1ha2UucnVsZXMuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL01ha2VkbGwucnVsZXMuaW4sCgkgIGRsbHMvZ2RpL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwKCSAgZGxscy9zaGVsbDMyL01ha2VmaWxlLmluLCBkbGxzL3VzZXIvTWFrZWZpbGUuaW46CglBbGxvdyBvdmVycmlkaW5nIENGTEFHUyB3aGVuIHJ1bm5pbmcgY29uZmlndXJlLiBPdGhlciBzbWFsbCBjbGVhbnVwcy4KCgkqIGRsbHMvbnRkbGwvaGVhcC5jOgoJSW5zZXJ0IHRoZSBsYXN0IGZyZWUgYmxvY2sgb2YgYSBzdWJoZWFwIGF0IHRoZSBlbmQgb2YgdGhlIGZyZWUgbGlzdCB0bwoJYXZvaWQgdXNpbmcgdW5jb21pdHRlZCBzcGFjZSB1bmxlc3MgcmVhbGx5IG5lY2Vzc2FyeS4KCgkqIGluY2x1ZGUvd2luZS9kZWJ1Zy5oOgoJRml4ZWQgZ2NjIHZhcmFyZ3MgbWFjcm8gc3ludGF4IChyZXBvcnRlZCBieSBHYWJyaWVsZSBHaW9yZ2V0dGkpLgoKCSogbGlicy91bmljb2RlL2NfMDQyLmMsIGxpYnMvdW5pY29kZS9jXzEwMDAwLmMsIGxpYnMvdW5pY29kZS9jXzEwMDA3LmMsCgkgIGxpYnMvdW5pY29kZS9jXzEwMDI5LmMsIGxpYnMvdW5pY29kZS9jXzEwMDYuYywKCSAgbGlicy91bmljb2RlL2NfMTAwNzkuYywgbGlicy91bmljb2RlL2NfMTAwODEuYywKCSAgbGlicy91bmljb2RlL2NfMjA4NjYuYywgbGlicy91bmljb2RlL2NfMjA5MzIuYywKCSAgbGlicy91bmljb2RlL2NfMjg1OTIuYywgbGlicy91bmljb2RlL2NfMjg1OTMuYywKCSAgbGlicy91bmljb2RlL2NfMjg1OTQuYywgbGlicy91bmljb2RlL2NfMjg1OTUuYywKCSAgbGlicy91bmljb2RlL2NfMjg1OTYuYywgbGlicy91bmljb2RlL2NfMjg2MDAuYywKCSAgbGlicy91bmljb2RlL2NfMjg2MDQuYywgbGlicy91bmljb2RlL2NfMjg2MDUuYywKCSAgbGlicy91bmljb2RlL2NfMjg2MDYuYywgbGlicy91bmljb2RlL2NfNDM3LmMsIGxpYnMvdW5pY29kZS9jXzczNy5jLAoJICBsaWJzL3VuaWNvZGUvY184NTIuYywgbGlicy91bmljb2RlL2NfODU1LmMsIGxpYnMvdW5pY29kZS9jXzg2MC5jLAoJICBsaWJzL3VuaWNvZGUvY184NjEuYywgbGlicy91bmljb2RlL2NfODYyLmMsIGxpYnMvdW5pY29kZS9jXzg2NS5jLAoJICBsaWJzL3VuaWNvZGUvY184NjYuYywgbGlicy91bmljb2RlL2NfODc0LmMsIGxpYnMvdW5pY29kZS9jXzg3OC5jLAoJICBsaWJzL3VuaWNvZGUvY185MzIuYywgbGlicy91bmljb2RlL2NfOTM2LmMsIGxpYnMvdW5pY29kZS9jXzk0OS5jLAoJICBsaWJzL3VuaWNvZGUvY185NTAuYywgbGlicy91bmljb2RlL2NwbWFwLnBsLCBsaWJzL3VuaWNvZGUvZGVmYXVsdHM6CglIYWNrZWQgMHgwMGE1IHRvIG1hcCB0byBiYWNrc2xhc2ggaW4gU2hpZnQtSklTIGNvZGVwYWdlLgoJQWRkZWQgbWFwcGluZyBmb3IgMHgwMGE2LgoKCSogTWFrZWZpbGUuaW46IEhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJRml4IHR5cG86IHNxbWwgLT4gc2dtbC4KCgkqIHRvb2xzL2MybWFuLnBsOiBIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCUhhbmRsZSBtdWx0aWxpbmUgb3V0cHV0IGZyb20gZ3JlcCBhbmQgZG9uJ3QgZ3JlcCBmb3IgZW1wdHkgc3RyaW5ncy4KCgkqIGRsbHMvb3BlbmdsMzIvbWFrZV9vcGVuZ2w6IExpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglIYXZlIHRoZSAnbWFrZV9vcGVuZ2wnIGluIGxpbmUgd2l0aCB0aGUgKG1hbnVhbGx5IGVkaXRlZCkgc3BlYyBmaWxlLgoKCSogZGxscy9tc3ZjcnQvZmlsZS5jLCBkbGxzL29sZTMyL3N0b3JhZ2UuYzoKCUFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCUZpeCBibGF0YW50bHkgd3JvbmcgU2V0RmlsZVBvaW50ZXIoKSBjYWxscy4KCgkqIGRsbHMvd2luaW5ldC9NYWtlZmlsZS5pbiwgZGxscy93aW5pbmV0L2h0dHAuYywKCSAgZGxscy93aW5pbmV0L2ludGVybmV0LmM6CglEb21pbmlrIFN0cmFzc2VyIDxEb21pbmlrLlN0cmFzc2VyQHQtb25saW5lLmRlPgoJUGFydGlhbGx5IGltcGxlbWVudCBwcm94eSBzdXBwb3J0LgoKCSogZG9jdW1lbnRhdGlvbi8uY3ZzaWdub3JlLCBkb2N1bWVudGF0aW9uL01ha2VmaWxlLmluLAoJICBkb2N1bWVudGF0aW9uL1BBQ0tBR0lORywgZG9jdW1lbnRhdGlvbi9tYWtlX3dpbmVocSwKCSAgZG9jdW1lbnRhdGlvbi9wYWNrYWdpbmcuc2dtbCwgZG9jdW1lbnRhdGlvbi93aW5lLWRvYy5zZ21sLAoJICBkb2N1bWVudGF0aW9uL3dpbmUtcGtnLnNnbWw6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJVHJhbnNmb3JtIHRoZSBQYWNrYWdpbmcgR3VpZGUgaW50byBhIG5pY2UgQVNDSUkgZmlsZS4KCVVwZGF0ZSBpdCB0byB0aGUgbGF0ZXN0IGluZm8sIG1ha2UgaXQgbGVzcyBwcm9uZSB0byBvYnNvbGVzY2VuY2UuCglVcGRhdGVkIHRoZSBXaW5lIGV4ZWN1dGFibGVzIGZyb20gbGlzdCBwcm9kdWNlZCBieSBUb20gV2lja2xpbmUuCgoyMDAzLTA0LTEzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9kc291bmQvdGVzdHMvZHNvdW5kLmM6IERvbid0IHVzZSBXaW5lIGRlYnVnZ2luZyBBUEkgaW4gdGVzdHMuCgoJKiBkbGxzL3dpbmVkb3MvaW50ZXJydXB0cy5jOiBKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglJbnRlcnJ1cHQgaGFuZGxpbmcgbm93IHByaW50cyBtb3JlIHRyYWNlIGluZm9ybWF0aW9uLgoJUmVwbGFjZWQgc29tZSBtYWdpYyBudW1iZXJzIHdpdGggcHJlcHJvY2Vzc29yIGNvbnN0YW50cy4KCgkqIHNlcnZlci9zaWduYWwuYzogWW9yaWNrIEhhcmR5IDx5aEBtZXRyb3dlYi5jby56YT4KCUZpeCBmb3IgY29tcGlsaW5nIG9uIE5ldEJTRC4KCgkqIGluY2x1ZGUvc2hsb2JqLmgsIGluY2x1ZGUvd2luZS9vYmpfc2hlbGxsaW5rLmg6CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglJbmNsdWRlIHNobGd1aWQuaCBmcm9tIHNobG9iai5oLgoJRXhwb3NlIElTaGVsbExpbmsgdG8gV2luZWxpYiBhcHBzLgoKCSogaW5jbHVkZS9tbXN5c3RlbS5oOiBWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglEZWZpbmUgc29tZSBhZGRpdGlvbmFsIGNvbnN0YW50cy4KCgkqIHNjaGVkdWxlci9zeXNkZXBzLmM6IFlvcmljayBIYXJkeSA8eWhAbWV0cm93ZWIuY28uemE+CgllcnJubyBzaG91bGQgbm90IGJlIHVzZWQgYXMgYSB2YXJpYWJsZSBuYW1lLgoKCSogZGxscy9kM2Q4L2RpcmVjdHguYzogQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJSW5jcmVhc2UgTWF4U3RyZWFtcyB0byAyIGluIENBUFMuCgoJKiBpbmNsdWRlL2QzZDguaDogQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJQWRkZWQgc29tZSBkZWZpbmVzIHRvIGQzZDggaGVhZGVyLgoKMjAwMy0wNC0xMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy9udGRsbC9wYXRoLmMsCgkgIGRsbHMvbnRkbGwvdGVzdHMvLmN2c2lnbm9yZSwgZGxscy9udGRsbC90ZXN0cy9NYWtlZmlsZS5pbiwKCSAgZGxscy9udGRsbC90ZXN0cy9wYXRoLmMsIGluY2x1ZGUvd2ludGVybmwuaDoKCUltcGxlbWVudGVkIFJ0bERldGVybWluZURvc1BhdGhOYW1lVHlwZV9VIGFuZCBSdGxJc0Rvc0RldmljZU5hbWVfVS4KCgkqIGRsbHMvb2xlMzIvb2xlMTYuYywgaW5jbHVkZS9vYWlkbC5oLCBpbmNsdWRlL29iamJhc2UuaCwKCSAgaW5jbHVkZS9vYmppZGwuaCwgaW5jbHVkZS91bmtud24uaCwgaW5jbHVkZS91bmtud24uaWRsLAoJICB0b29scy93aWRsL2hlYWRlci5jOgoJVGhlIGNvbV9pbnRlcmZhY2UgYXR0cmlidXRlIGlzIG5vdCBuZWVkZWQgb24gZGVyaXZlZCBjbGFzc2VzLgoJUmVtb3ZlZCB0aGUgSUNPTV9DVEhJUyogbWFjcm9zLgoKCSogZGxscy9kM2Q4L2Jhc2V0ZXh0dXJlLmMsIGRsbHMvZDNkOC9jdWJldGV4dHVyZS5jLAoJICBkbGxzL2QzZDgvZDNkOF9tYWluLmMsIGRsbHMvZDNkOC9kM2Q4X3ByaXZhdGUuaCwKCSAgZGxscy9kM2Q4L2luZGV4YnVmZmVyLmMsIGRsbHMvZDNkOC9yZXNvdXJjZS5jLCBkbGxzL2QzZDgvc2hhZGVyLmMsCgkgIGRsbHMvZDNkOC9zdGF0ZWJsb2NrLmMsIGRsbHMvZDNkOC9zdXJmYWNlLmMsIGRsbHMvZDNkOC9zd2FwY2hhaW4uYywKCSAgZGxscy9kM2Q4L3RleHR1cmUuYywgZGxscy9kM2Q4L3ZlcnRleGJ1ZmZlci5jLCBkbGxzL2QzZDgvdm9sdW1lLmMsCgkgIGRsbHMvZDNkOC92b2x1bWV0ZXh0dXJlLmMsIGRsbHMvZDNkOC92c2hhZGVyZGVjbGFyYXRpb24uYywKCSAgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWFpbi5oLCBkbGxzL2RkcmF3L2RpcmVjdDNkL21haW4uaCwKCSAgZGxscy9kbXVzaWMvZG11c2ljX3ByaXZhdGUuaDoKCUhlYWRlciBmaWxlcyBtdXN0IG5vdCBpbmNsdWRlIGNvbmZpZy5oLgoKCSogZGxscy9NYWtlZGxsLnJ1bGVzLmluLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL21ha2VfZGxsczoKCUZpeGVkIHJ1bGVzIGZvciBhdXRvIGRvY3VtZW50YXRpb24gKHJlcG9ydGVkIGJ5IFZpbmNlbnQgQulyb24pLgoKCSogZGxscy9udGRsbC9udC5jOiBSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJQWRkZWQgTnRRdWVyeVByb2Nlc3NJbmZvcm1hdGlvbiBjYXNlIG5lZWRlZCBieSBOVCB2ZXJzaW9uIG9mIE1TSS4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjOiBIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCUFkZCBhbGlhc2VzIHRvIGNvbmZpZ3VyZSBjaGVjayBmb3IgbWluZ3cgY3Jvc3MgY29tcGlsZXIgYW5kIGRsbHRvb2wuCgoyMDAzLTA0LTExICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9kc291bmQvY2FwdHVyZS5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJRml4ZWQgUENNIGZvcm1hdCBldmFsdWF0aW9uIGJ1Zy4KCVByb3Blcmx5IGNsZWFuIHVwIHBhcnRpYWxseSBjcmVhdGVkIHNvdW5kIGJ1ZmZlcnMuCgoJKiBNYWtlLnJ1bGVzLmluLCBpbmNsdWRlL01ha2VmaWxlLmluLCB0b29scy9tYWtlZGVwLmM6CglBZGRlZCBzdXBwb3J0IGZvciBnZW5lcmF0aW5nIGRlcGVuZGVuY2llcyBmb3IgaWRsIGZpbGVzLgoKCSogZ3JhcGhpY3MvcGFpbnRpbmcuYzogTWF4aW1lIEJlbGxlbmfpIDxtYXhpbWUuYmVsbGVuZ2VAbGFwb3N0ZS5uZXQ+CglBZGRlZCB0aGUgR1JBRElFTlRfRklMTF9UUklBTkdMRSBjYXNlIGluIEdkaUdyYWRpZW50RmlsbC4KCgkqIGRsbHMvZHNvdW5kL3Rlc3RzL2Rzb3VuZC5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQ2hhbmdlZCBjYXB0dXJlIGZvcm1hdCBwcmludGluZyB0byBoZXguCgoJKiBsaWJzL3V1aWQvZHhndWlkLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglBZGQgZGlyZWN0IHNvdW5kIGRyaXZlciBndWlkcy4KCgkqIGRsbHMvZHBsYXl4L2RwbGF5c3AuaCwgZGxscy9kcGxheXgvbG9iYnlzcC5oLCBkbGxzL29sZTMyL2lmcy5oLAoJICBkbGxzL3NoZWxsMzIvc2hlbGxmb2xkZXIuaCwgaW5jbHVkZS9jb21tY3RybC5oLCBpbmNsdWRlL2QzZC5oLAoJICBpbmNsdWRlL2QzZDguaCwgaW5jbHVkZS9kM2R4OGNvcmUuaCwgaW5jbHVkZS9kZHJhdy5oLAoJICBpbmNsdWRlL2RpbnB1dC5oLCBpbmNsdWRlL2RtcGx1Z2luLmgsIGluY2x1ZGUvZG11c2ljYy5oLAoJICBpbmNsdWRlL2RtdXNpY2kuaCwgaW5jbHVkZS9kbXVzaWNzLmgsIGluY2x1ZGUvZG9jb2JqLmgsCgkgIGluY2x1ZGUvZHBsYXkuaCwgaW5jbHVkZS9kcGxvYmJ5LmgsIGluY2x1ZGUvZHNkcml2ZXIuaCwKCSAgaW5jbHVkZS9kc291bmQuaCwgaW5jbHVkZS9vYWlkbC5oLCBpbmNsdWRlL29iamJhc2UuaCwKCSAgaW5jbHVkZS9vYmppZGwuaCwgaW5jbHVkZS9vbGVkbGcuaCwgaW5jbHVkZS9zZXJ2cHJvdi5oLAoJICBpbmNsdWRlL3NobG9iai5oLCBpbmNsdWRlL3NobHdhcGkuaCwgaW5jbHVkZS91bmtud24uaCwKCSAgaW5jbHVkZS91bmtud24uaWRsLCBpbmNsdWRlL3VybG1vbi5oLCBpbmNsdWRlL3Zmdy5oLAoJICBpbmNsdWRlL3dpbmUvb2JqX2NhY2hlLmgsIGluY2x1ZGUvd2luZS9vYmpfY29tY2F0LmgsCgkgIGluY2x1ZGUvd2luZS9vYmpfY29tbWRsZ2Jyb3dzZXIuaCwgaW5jbHVkZS93aW5lL29ial9jb25uZWN0aW9uLmgsCgkgIGluY2x1ZGUvd2luZS9vYmpfY29udGV4dG1lbnUuaCwgaW5jbHVkZS93aW5lL29ial9jb250cm9sLmgsCgkgIGluY2x1ZGUvd2luZS9vYmpfZG9ja2luZ3dpbmRvd2ZyYW1lLmgsIGluY2x1ZGUvd2luZS9vYmpfZHJhZ2Ryb3AuaCwKCSAgaW5jbHVkZS93aW5lL29ial9kcmFnZHJvcGhlbHBlci5oLCBpbmNsdWRlL3dpbmUvb2JqX2VudW1ndWlkLmgsCgkgIGluY2x1ZGUvd2luZS9vYmpfZW51bWlkbGlzdC5oLCBpbmNsdWRlL3dpbmUvb2JqX2V4dHJhY3RpY29uLmgsCgkgIGluY2x1ZGUvd2luZS9vYmpfaW5wbGFjZS5oLCBpbmNsdWRlL3dpbmUvb2JqX29sZWZvbnQuaCwKCSAgaW5jbHVkZS93aW5lL29ial9vbGVvYmouaCwgaW5jbHVkZS93aW5lL29ial9vbGV1bmRvLmgsCgkgIGluY2x1ZGUvd2luZS9vYmpfb2xldmlldy5oLCBpbmNsdWRlL3dpbmUvb2JqX3BpY3R1cmUuaCwKCSAgaW5jbHVkZS93aW5lL29ial9wcm9wZXJ0eS5oLCBpbmNsdWRlL3dpbmUvb2JqX3NlcnZpY2Vwcm92aWRlci5oLAoJICBpbmNsdWRlL3dpbmUvb2JqX3NoZWxsYnJvd3Nlci5oLCBpbmNsdWRlL3dpbmUvb2JqX3NoZWxsZXh0aW5pdC5oLAoJICBpbmNsdWRlL3dpbmUvb2JqX3NoZWxsZm9sZGVyLmgsIGluY2x1ZGUvd2luZS9vYmpfc2hlbGxsaW5rLmgsCgkgIGluY2x1ZGUvd2luZS9vYmpfc2hlbGx2aWV3LmgsIGluY2x1ZGUvd2luZS9vYmpfd2ViYnJvd3Nlci5oLAoJICB0b29scy93aWRsL2hlYWRlci5jOgoJU2ltcGxpZmllZCBDT00gaW50ZXJmYWNlIGRlY2xhcmF0aW9ucywgcmVtb3ZpbmcgdGhlIG5lZWQgdG8gZGVmaW5lCglib3RoIGFuIHh4eF9NRVRIT0RTIGFuZCBhbiB4eHhfSU1FVEhPRFMgbWFjcm8uCgoyMDAzLTA0LTEwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9kcGxheXgvZHBsYXlzcC5oLCBkbGxzL2RwbGF5eC9sb2JieXNwLmgsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbGZvbGRlci5oLCBpbmNsdWRlL2QzZC5oLCBpbmNsdWRlL2QzZDguaCwKCSAgaW5jbHVkZS9kM2R4OGNvcmUuaCwgaW5jbHVkZS9kZHJhdy5oLCBpbmNsdWRlL2RpbnB1dC5oLAoJICBpbmNsdWRlL2RtcGx1Z2luLmgsIGluY2x1ZGUvZG11c2ljYy5oLCBpbmNsdWRlL2RtdXNpY2kuaCwKCSAgaW5jbHVkZS9kbXVzaWNzLmgsIGluY2x1ZGUvZG9jb2JqLmgsIGluY2x1ZGUvZHBsYXkuaCwKCSAgaW5jbHVkZS9kcGxvYmJ5LmgsIGluY2x1ZGUvZHNkcml2ZXIuaCwgaW5jbHVkZS9kc291bmQuaCwKCSAgaW5jbHVkZS9vYmpiYXNlLmgsIGluY2x1ZGUvb2xlZGxnLmgsIGluY2x1ZGUvc2VydnByb3YuaCwKCSAgaW5jbHVkZS9zaGxvYmouaCwgaW5jbHVkZS9zaGx3YXBpLmgsIGluY2x1ZGUvdXJsbW9uLmgsIGluY2x1ZGUvdmZ3LmgsCgkgIGluY2x1ZGUvd2luZS9vYmpfY2FjaGUuaCwgaW5jbHVkZS93aW5lL29ial9jb21jYXQuaCwKCSAgaW5jbHVkZS93aW5lL29ial9jb21tZGxnYnJvd3Nlci5oLCBpbmNsdWRlL3dpbmUvb2JqX2Nvbm5lY3Rpb24uaCwKCSAgaW5jbHVkZS93aW5lL29ial9jb250ZXh0bWVudS5oLCBpbmNsdWRlL3dpbmUvb2JqX2NvbnRyb2wuaCwKCSAgaW5jbHVkZS93aW5lL29ial9kb2NraW5nd2luZG93ZnJhbWUuaCwgaW5jbHVkZS93aW5lL29ial9kcmFnZHJvcC5oLAoJICBpbmNsdWRlL3dpbmUvb2JqX2RyYWdkcm9waGVscGVyLmgsIGluY2x1ZGUvd2luZS9vYmpfZW51bWd1aWQuaCwKCSAgaW5jbHVkZS93aW5lL29ial9lbnVtaWRsaXN0LmgsIGluY2x1ZGUvd2luZS9vYmpfZXh0cmFjdGljb24uaCwKCSAgaW5jbHVkZS93aW5lL29ial9pbnBsYWNlLmgsIGluY2x1ZGUvd2luZS9vYmpfb2xlZm9udC5oLAoJICBpbmNsdWRlL3dpbmUvb2JqX29sZW9iai5oLCBpbmNsdWRlL3dpbmUvb2JqX29sZXVuZG8uaCwKCSAgaW5jbHVkZS93aW5lL29ial9vbGV2aWV3LmgsIGluY2x1ZGUvd2luZS9vYmpfcGljdHVyZS5oLAoJICBpbmNsdWRlL3dpbmUvb2JqX3Byb3BlcnR5LmgsIGluY2x1ZGUvd2luZS9vYmpfc2VydmljZXByb3ZpZGVyLmgsCgkgIGluY2x1ZGUvd2luZS9vYmpfc2hlbGxicm93c2VyLmgsIGluY2x1ZGUvd2luZS9vYmpfc2hlbGxleHRpbml0LmgsCgkgIGluY2x1ZGUvd2luZS9vYmpfc2hlbGxmb2xkZXIuaCwgaW5jbHVkZS93aW5lL29ial9zaGVsbGxpbmsuaCwKCSAgaW5jbHVkZS93aW5lL29ial9zaGVsbHZpZXcuaCwgaW5jbHVkZS93aW5lL29ial93ZWJicm93c2VyLmgsCgkgIHRvb2xzL3dpZGwvaGVhZGVyLmMsIHRvb2xzL3dpZGwvd2lkbC5jLCB0b29scy93aWRsL3dpZGwuaDoKCUdldCByaWQgb2YgdGhlIElDT01fQ0FMTCBtYWNyb3MuCgoJKiB0b29scy93aW5lYnVpbGQvaW1wb3J0LmM6IElnbm9yZSAiVSAiIGluIG5tIC11IG91dHB1dC4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQmV0dGVyIGVycm9yIG1lc3NhZ2VzLgoKCSogZGxscy9hdmlmaWwzMi9hY21zdHJlYW0uYywgZGxscy9hdmlmaWwzMi9hdmlmaWxlLmMsCgkgIGRsbHMvYXZpZmlsMzIvZmFjdG9yeS5jLCBkbGxzL2F2aWZpbDMyL2dldGZyYW1lLmMsCgkgIGRsbHMvYXZpZmlsMzIvaWNtc3RyZWFtLmMsIGRsbHMvYXZpZmlsMzIvd2F2ZmlsZS5jLAoJICBkbGxzL2NvbWNhdC9pbmZvcm1hdGlvbi5jLCBkbGxzL2RwbGF5eC9kcGxheS5jLAoJICBkbGxzL2RwbGF5eC9kcGxheXNwLmMsIGRsbHMvZHBsYXl4L2RwbG9iYnkuYywgZGxscy9kcGxheXgvbG9iYnlzcC5jLAoJICBkbGxzL2Rzb3VuZC9idWZmZXIuYywgZGxscy9kc291bmQvY2FwdHVyZS5jLAoJICBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jLCBkbGxzL2Rzb3VuZC9taXhlci5jLAoJICBkbGxzL2Rzb3VuZC9wcmltYXJ5LmMsIGRsbHMvZHNvdW5kL3Byb3BzZXQuYywgZGxscy9kc291bmQvc291bmQzZC5jLAoJICBkbGxzL29sZTMyL2JpbmRjdHguYywgZGxscy9vbGUzMi9jbGlwYm9hcmQuYywKCSAgZGxscy9vbGUzMi9jb21wb3NpdGVtb25pa2VyLmMsIGRsbHMvb2xlMzIvZnRtYXJzaGFsLmMsCgkgIGRsbHMvb2xlMzIvZ2l0LmMsIGRsbHMvb2xlMzIvaGdsb2JhbHN0cmVhbS5jLCBkbGxzL29sZTMyL2lmcy5jLAoJICBkbGxzL29sZTMyL21lbWxvY2tieXRlcy5jLCBkbGxzL29sZTMyL21vbmlrZXIuYywgZGxscy9vbGUzMi9vbGUxNi5jLAoJICBkbGxzL29sZTMyL29sZW9iai5jLCBkbGxzL29sZTMyL3N0Z19zdHJlYW0uYywgZGxscy9vbGUzMi9zdG9yYWdlLmMsCgkgIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmMsIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jLAoJICBkbGxzL3NoZWxsMzIvY2xhc3Nlcy5jLCBkbGxzL3NoZWxsMzIvZGF0YW9iamVjdC5jLAoJICBkbGxzL3NoZWxsMzIvZHJhZ2Ryb3BoZWxwZXIuYywgZGxscy9zaGVsbDMyL2VudW1pZGxpc3QuYywKCSAgZGxscy9zaGVsbDMyL2ZvbGRlcnMuYywgZGxscy9zaGVsbDMyL3NoZWxsbGluay5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYywgZGxscy9zaGVsbDMyL3NoZmxkcl9kZXNrdG9wLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGZsZHJfZnMuYywgZGxscy9zaGVsbDMyL3NoZmxkcl9teWNvbXAuYywKCSAgZGxscy9zaGVsbDMyL3NobHZpZXcuYywgZGxscy9zaGVsbDMyL3Nodl9iZ19jbWVudS5jLAoJICBkbGxzL3NoZWxsMzIvc2h2X2l0ZW1fY21lbnUuYywgZGxscy9zaGx3YXBpL2lzdHJlYW0uYywKCSAgZGxscy9zaGx3YXBpL3JlZ3N0cmVhbS5jLCBkbGxzL3dpbm1tL3dpbmVhbHNhL2F1ZGlvLmMsCgkgIGRsbHMvd2lubW0vd2luZWFsc2EvYXVkaW9fMDUuYywgZGxscy93aW5tbS93aW5lYXVkaW9pby9hdWRpby5jLAoJICBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzoKCVJlbW92ZWQgdXNlcyBvZiB0aGUgbm9uIHN0YW5kYXJkIElDT01fVlRCTCBtYWNyby4KCgkqIGRsbHMvZGRyYXcvZGlyZWN0M2QvbWVzYS5jLCBkbGxzL2RwbGF5eC9kcGxheXNwLmgsCgkgIGRsbHMvZHBsYXl4L2xvYmJ5c3AuaCwgZGxscy9vbGUzMi9pZnMuaCwgZGxscy9zaGVsbDMyL3NoZWxsZm9sZGVyLmgsCgkgIGluY2x1ZGUvZDNkLmgsIGluY2x1ZGUvZDNkOC5oLCBpbmNsdWRlL2QzZHg4Y29yZS5oLCBpbmNsdWRlL2RkcmF3LmgsCgkgIGluY2x1ZGUvZGlucHV0LmgsIGluY2x1ZGUvZG1wbHVnaW4uaCwgaW5jbHVkZS9kbXVzaWNjLmgsCgkgIGluY2x1ZGUvZG11c2ljaS5oLCBpbmNsdWRlL2RtdXNpY3MuaCwgaW5jbHVkZS9kb2NvYmouaCwKCSAgaW5jbHVkZS9kcGxheS5oLCBpbmNsdWRlL2RwbG9iYnkuaCwgaW5jbHVkZS9kc2RyaXZlci5oLAoJICBpbmNsdWRlL2Rzb3VuZC5oLCBpbmNsdWRlL29haWRsLmgsIGluY2x1ZGUvb2JqYmFzZS5oLAoJICBpbmNsdWRlL29iamlkbC5oLCBpbmNsdWRlL29sZWRsZy5oLCBpbmNsdWRlL3NlcnZwcm92LmgsCgkgIGluY2x1ZGUvc2hsb2JqLmgsIGluY2x1ZGUvc2hsd2FwaS5oLCBpbmNsdWRlL3Vua253bi5oLAoJICBpbmNsdWRlL3VybG1vbi5oLCBpbmNsdWRlL3Zmdy5oLCBpbmNsdWRlL3dpbm50LmgsCgkgIGluY2x1ZGUvd2luZS9vYmpfY2FjaGUuaCwgaW5jbHVkZS93aW5lL29ial9jb21jYXQuaCwKCSAgaW5jbHVkZS93aW5lL29ial9jb21tZGxnYnJvd3Nlci5oLCBpbmNsdWRlL3dpbmUvb2JqX2Nvbm5lY3Rpb24uaCwKCSAgaW5jbHVkZS93aW5lL29ial9jb250ZXh0bWVudS5oLCBpbmNsdWRlL3dpbmUvb2JqX2NvbnRyb2wuaCwKCSAgaW5jbHVkZS93aW5lL29ial9kb2NraW5nd2luZG93ZnJhbWUuaCwgaW5jbHVkZS93aW5lL29ial9kcmFnZHJvcC5oLAoJICBpbmNsdWRlL3dpbmUvb2JqX2RyYWdkcm9waGVscGVyLmgsIGluY2x1ZGUvd2luZS9vYmpfZW51bWd1aWQuaCwKCSAgaW5jbHVkZS93aW5lL29ial9lbnVtaWRsaXN0LmgsIGluY2x1ZGUvd2luZS9vYmpfZXh0cmFjdGljb24uaCwKCSAgaW5jbHVkZS93aW5lL29ial9pbnBsYWNlLmgsIGluY2x1ZGUvd2luZS9vYmpfb2xlZm9udC5oLAoJICBpbmNsdWRlL3dpbmUvb2JqX29sZW9iai5oLCBpbmNsdWRlL3dpbmUvb2JqX29sZXVuZG8uaCwKCSAgaW5jbHVkZS93aW5lL29ial9vbGV2aWV3LmgsIGluY2x1ZGUvd2luZS9vYmpfcGljdHVyZS5oLAoJICBpbmNsdWRlL3dpbmUvb2JqX3Byb3BlcnR5LmgsIGluY2x1ZGUvd2luZS9vYmpfc2VydmljZXByb3ZpZGVyLmgsCgkgIGluY2x1ZGUvd2luZS9vYmpfc2hlbGxicm93c2VyLmgsIGluY2x1ZGUvd2luZS9vYmpfc2hlbGxleHRpbml0LmgsCgkgIGluY2x1ZGUvd2luZS9vYmpfc2hlbGxmb2xkZXIuaCwgaW5jbHVkZS93aW5lL29ial9zaGVsbGxpbmsuaCwKCSAgaW5jbHVkZS93aW5lL29ial9zaGVsbHZpZXcuaCwgaW5jbHVkZS93aW5lL29ial93ZWJicm93c2VyLmgsCgkgIHRvb2xzL3dpZGwvaGVhZGVyLmM6CglVc2UgYSBtb3JlIGNvbXBhdGlibGUgdGVjaG5pcXVlIHRvIGRlY2xhcmUgQ09NIGludGVyZmFjZXMgbWV0aG9kcywKCXVzaW5nIE1pY3Jvc29mdCdzIFNURE1FVEhPRCBtYWNyb3MgaW5zdGVhZCBvZiB0aGUgV2luZS1zcGVjaWZpYwoJSUNPTV9NRVRIT0Qgb25lcy4KCjIwMDMtMDQtMDkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2Rzb3VuZC92ZXJzaW9uLnJjOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQ2hhbmdlZCBETEwgdmVyc2lvbiB0byA4LgoKCSogdG9vbHMvd2luZXdyYXAuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVdlIGRvbid0IG5lZWQgdG8gZGxvcGVuIHRoZSBhcHAgbW9kdWxlIGJlZm9yZSB0aGUgTG9hZExpYnJhcnkoKS4KCgkqIGluY2x1ZGUvd2luc29jay5oOiBWaXRhbGl5IE1hcmdvbGVuIDx3aW5lLXBhdGNoQGtpZXZpbmZvLmNvbT4KCUFkZGVkIG1vcmUgZXh0ZW5kZWQgZXJyb3IgY29kZXMuCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGRsbHMvd2luc29jay93czJfMzIuc3BlYzoKCVZpdGFsaXkgTWFyZ29sZW4gPHdpbmUtcGF0Y2hAa2lldmluZm8uY29tPgoJQWRkIGFuZCBmaXggYSBmZXcgc3R1YnMgdG8gcmV0dXJuIGNvcnJlY3QgZXJyb3IuCgoJKiBkb2N1bWVudGF0aW9uL1JFQURNRS5mcjogVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJS2VlcCBSRUFETUUuZnIgaW4gc3luYy4KCjIwMDMtMDQtMDggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBWRVJTSU9OLCBjb25maWd1cmUsIEFOTk9VTkNFLCBDaGFuZ2VMb2c6IFJlbGVhc2UgMjAwMzA0MDguCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjIwMDMtMDQtMDggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBSRUFETUU6IFVwZGF0ZWQgVVJMcy4KCgkqIGRsbHMvZG11c2ljL01ha2VmaWxlLmluLCBkbGxzL2RtdXNpYy9kbXVzaWMuYywgZGxscy9kbXVzaWMvZG11c2ljOC5jLAoJICBkbGxzL2RtdXNpYy9kbXVzaWNfYnVmZmVyLmMsIGRsbHMvZG11c2ljL2RtdXNpY19jb2xsZWN0aW9uLmMsCgkgIGRsbHMvZG11c2ljL2RtdXNpY19kbGluc3RydW1lbnQuYywgZGxscy9kbXVzaWMvZG11c2ljX2Rvd25sb2FkLmMsCgkgIGRsbHMvZG11c2ljL2RtdXNpY19pbnN0cnVtZW50LmMsIGRsbHMvZG11c2ljL2RtdXNpY19sb2FkZXIuYywKCSAgZGxscy9kbXVzaWMvZG11c2ljX21pc2MuYywgZGxscy9kbXVzaWMvZG11c2ljX3BlcmZvcm1hbmNlLmMsCgkgIGRsbHMvZG11c2ljL2RtdXNpY19wbHVnaW5zLmMsIGRsbHMvZG11c2ljL2RtdXNpY19wb3J0LmMsCgkgIGRsbHMvZG11c2ljL2RtdXNpY19wb3J0ZGwuYywgZGxscy9kbXVzaWMvZG11c2ljX3ByaXZhdGUuaCwKCSAgZGxscy9kbXVzaWMvZG11c2ljX3NlZ21lbnQuYywgZGxscy9kbXVzaWMvZG11c2ljX3N0eWxlLmMsCgkgIGRsbHMvZG11c2ljL2RtdXNpY19zeW50aC5jLCBkbGxzL2RtdXNpYy9kbXVzaWNfdGhydS5jLAoJICBkbGxzL2RtdXNpYy9yZWZlcmVuY2VfY2xvY2suYzoKCVJvayBNYW5kZWxqYyA8cm9rbWFuZGVsamNAaG90bWFpbC5jb20+CglBZGRlZCBzdHVicyBmb3IgYWxsIGRtdXNpYyBpbnRlcmZhY2VzLgoKCSogaW5jbHVkZS9jb21tY3RybC5oOiBKdXJhaiBIZXJjZWsgPGp1cmFqQHN5bmNhZC5jb20+CglGaXhlZCB0YWdMVkRJU1BJTkZPIGRlZmluaXRpb24uCgoJKiB0b29scy93aW5lbWFrZXI6IEp1cmFqIEhlcmNlayA8anVyYWpAc3luY2FkLmNvbT4KCUZpeGVkIGdlbmVyYXRpb24gb2YgbWFrZWZpbGVzIGFuZCB3cmFwcGVyIGZpbGVzIHdoZW4gIi0td3JhcCIgb3B0aW9uCglpcyB1c2VkLgoKCSogZGxscy90YXBpMzIvYXNzaXN0ZWQuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJT25seSBsb2cgdGhlIHBhcmFtZXRlcnMgb2YgdGFwaUdldExvY2F0aW9uSW5mbyBhcyBhZGRyZXNzZXMsIGFzIG91dHB1dAoJcGFyYW1ldGVycyB0aGV5IHByb2JhYmx5IHBvaW50IHRvIGdhcmJhZ2UuCgoJKiBjb250cm9scy9saXN0Ym94LmM6IFJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCUNvbXBhcmUgdGhlIHR3byBpdGVtcyBpbiBMSVNUQk9YX0ZpbmRTdHJpbmdQb3MoKSBpbiB0aGUgc2FtZSBvcmRlciBhcwoJaW4gV2luZG93cy4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLmRhdDogSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglBZGQgc29tZSBtb3JlIG5ld2x5IGFycml2ZWQgZGxscy4KCgkqIGRsbHMvd2luZWRvcy9pbnQxMC5jLCBkbGxzL3dpbmVkb3MvaW50MjEuYzoKCUp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCVJldHVybiBjb3JyZWN0IHNlZ21lbnQgZm9yIFZFU0EgaW5mb3JtYXRpb24uCglDaGVjayBvZW0gbnVtYmVyL3ZlcnNpb24gZmxhZyBmaXJzdCBhbmQgYWZ0ZXIgdGhhdCBvdmVyd3JpdGUgY29uZGl0aW9uCgljb2RlLgoKCSogZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZGxscy9rZXJuZWwvbG9jYWxlLmM6CglNaWNoYWwgSmFudXN6IE1pcm9zbGF3IDxNLk1pcm9zbGF3QGVsa2EucHcuZWR1LnBsPgoJQWRkIHN0dWIgZm9yIEludmFsaWRhdGVOTFNDYWNoZS4KCgkqIGZpbGVzL2RyaXZlLmM6CglNYWtlIERSSVZFX0ZpbmRSb290VyByZWFsbHkgYmVoYXZlIGxpa2UgRFJJVkVfRmluZFJvb3QuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9kbWJhbmQvLmN2c2lnbm9yZSwKCSAgZGxscy9kbWJhbmQvTWFrZWZpbGUuaW4sIGRsbHMvZG1iYW5kL2RtYmFuZC5zcGVjLAoJICBkbGxzL2RtYmFuZC9kbWJhbmRfbWFpbi5jLCBkbGxzL2RtYmFuZC92ZXJzaW9uLnJjLAoJICBkbGxzL2RtY29tcG9zLy5jdnNpZ25vcmUsIGRsbHMvZG1jb21wb3MvTWFrZWZpbGUuaW4sCgkgIGRsbHMvZG1jb21wb3MvZG1jb21wb3Muc3BlYywgZGxscy9kbWNvbXBvcy9kbWNvbXBvc19tYWluLmMsCgkgIGRsbHMvZG1jb21wb3MvdmVyc2lvbi5yYywgZGxscy9kbWltZS8uY3ZzaWdub3JlLAoJICBkbGxzL2RtaW1lL01ha2VmaWxlLmluLCBkbGxzL2RtaW1lL2RtaW1lLnNwZWMsCgkgIGRsbHMvZG1pbWUvZG1pbWVfbWFpbi5jLCBkbGxzL2RtaW1lL3ZlcnNpb24ucmMsCgkgIGRsbHMvZG1sb2FkZXIvLmN2c2lnbm9yZSwgZGxscy9kbWxvYWRlci9NYWtlZmlsZS5pbiwKCSAgZGxscy9kbWxvYWRlci9kbWxvYWRlci5zcGVjLCBkbGxzL2RtbG9hZGVyL2RtbG9hZGVyX21haW4uYywKCSAgZGxscy9kbWxvYWRlci92ZXJzaW9uLnJjLCBkbGxzL2Rtc2NyaXB0Ly5jdnNpZ25vcmUsCgkgIGRsbHMvZG1zY3JpcHQvTWFrZWZpbGUuaW4sIGRsbHMvZG1zY3JpcHQvZG1zY3JpcHQuc3BlYywKCSAgZGxscy9kbXNjcmlwdC9kbXNjcmlwdF9tYWluLmMsIGRsbHMvZG1zY3JpcHQvdmVyc2lvbi5yYywKCSAgZGxscy9kbXN0eWxlLy5jdnNpZ25vcmUsIGRsbHMvZG1zdHlsZS9NYWtlZmlsZS5pbiwKCSAgZGxscy9kbXN0eWxlL2Rtc3R5bGUuc3BlYywgZGxscy9kbXN0eWxlL2Rtc3R5bGVfbWFpbi5jLAoJICBkbGxzL2Rtc3R5bGUvdmVyc2lvbi5yYywgZGxscy9kbXN5bnRoLy5jdnNpZ25vcmUsCgkgIGRsbHMvZG1zeW50aC9NYWtlZmlsZS5pbiwgZGxscy9kbXN5bnRoL2Rtc3ludGguc3BlYywKCSAgZGxscy9kbXN5bnRoL2Rtc3ludGhfbWFpbi5jLCBkbGxzL2Rtc3ludGgvdmVyc2lvbi5yYywKCSAgZGxscy9kbXVzaWMzMi8uY3ZzaWdub3JlLCBkbGxzL2RtdXNpYzMyL01ha2VmaWxlLmluLAoJICBkbGxzL2RtdXNpYzMyL2RtdXNpYzMyLnNwZWMsIGRsbHMvZG11c2ljMzIvZG11c2ljMzJfbWFpbi5jLAoJICBkbGxzL2RtdXNpYzMyL3ZlcnNpb24ucmMsIGRsbHMvZHBuaHBhc3QvLmN2c2lnbm9yZSwKCSAgZGxscy9kcG5ocGFzdC9NYWtlZmlsZS5pbiwgZGxscy9kcG5ocGFzdC9kcG5ocGFzdC5zcGVjLAoJICBkbGxzL2RwbmhwYXN0L21haW4uYywgZGxscy9kcG5ocGFzdC92ZXJzaW9uLnJjLCBpbmNsdWRlL01ha2VmaWxlLmluLAoJICBpbmNsdWRlL2RtcGx1Z2luLmgsIGluY2x1ZGUvZG11c2ljZi5oLCBpbmNsdWRlL2RtdXNpY2kuaCwKCSAgaW5jbHVkZS9kbXVzaWNzLmgsIGxpYnMvdXVpZC9keGd1aWQuYzoKCVJvayBNYW5kZWxqYyA8cm9rbWFuZGVsamNAaG90bWFpbC5jb20+CglBZGRlZCBzdHVicyBmb3IgZHBuaHBhc3QgYW5kIGZvciBhbGwgdGhlIGRtdXNpYyBkbGxzLgoKCSogZGxscy91c2VyL3Rlc3RzL3N5c3BhcmFtcy5jOiBBdm9pZCB3YXJuaW5nLgoKCSogZGxscy9udGRsbC90ZXN0cy9ydGwuYywgZGxscy9udGRsbC90ZXN0cy9ydGxzdHIuYzoKCVRob21hcyBNZXJ0ZXMgPHRob21hcy5tZXJ0ZXNAZ214LmF0PgoJVGVzdHMgZm9yIFJ0bFVsb25nbG9uZ0J5dGVTd2FwLCBSdGxSYW5kb20sIFJ0bEFyZUFsbEFjY2Vzc2VzR3JhbnRlZCwKCVJ0bEFyZUFueUFjY2Vzc2VzR3JhbnRlZCwgUnRsVW5pY29kZVN0cmluZ1RvQW5zaVN0cmluZywKCVJ0bEFwcGVuZEFzY2lpelRvU3RyaW5nLCBSdGxBcHBlbmRTdHJpbmdUb1N0cmluZywKCVJ0bEFwcGVuZFVuaWNvZGVUb1N0cmluZyBhbmQgUnRsQXBwZW5kVW5pY29kZVN0cmluZ1RvU3RyaW5nLgoKCSogZGxscy9udGRsbC9sYXJnZV9pbnQuYywgZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL250ZGxsL3J0bC5jLAoJICBkbGxzL250ZGxsL3J0bHN0ci5jLCBpbmNsdWRlL3dpbm50LmgsIGluY2x1ZGUvd2ludGVybmwuaDoKCVRob21hcyBNZXJ0ZXMgPHRob21hcy5tZXJ0ZXNAZ214LmF0PgoJSW1wbGVtZW50ZWQgUnRsUmFuZG9tLCBSdGxBcmVBbGxBY2Nlc3Nlc0dyYW50ZWQsCglSdGxBcmVBbnlBY2Nlc3Nlc0dyYW50ZWQsIFJ0bENvcHlMdWlkLCBSdGxFcXVhbEx1aWQsIFJ0bE1hcEdlbmVyaWNNYXNrCglhbmQgUnRsQ29weUx1aWRBbmRBdHRyaWJ1dGVzQXJyYXkuCglEb2N1bWVudGF0aW9uIHVwZGF0ZXMgZm9yIFJ0bEV4dGVuZGVkTWFnaWNEaXZpZGUsIFJ0bFVuaWZvcm0sCglSdGxVbmljb2RlU3RyaW5nVG9BbnNpU3RyaW5nLCBSdGxBcHBlbmRBc2NpaXpUb1N0cmluZywKCVJ0bEFwcGVuZFN0cmluZ1RvU3RyaW5nLCBSdGxBcHBlbmRVbmljb2RlVG9TdHJpbmcgYW5kCglSdGxBcHBlbmRVbmljb2RlU3RyaW5nVG9TdHJpbmcuCgoyMDAzLTA0LTA3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9tc3ZjcnRkL21zdmNydGQuc3BlYzogQWRhbSBHdW5keSA8YXJnQGN5YmVyc2NpZW5jZS5jb20+CglGaXhlZCBlY3Z0L2ZjdnQvZ2N2dCBlbnRyaWVzLgoKCSogZGxscy9udGRsbC9sb2FkZXIuYywgZGxscy9udGRsbC9udGRsbF9taXNjLmgsCgkgIGRvY3VtZW50YXRpb24vc2FtcGxlcy9jb25maWcsIGRvY3VtZW50YXRpb24vd2luZS5jb25mLm1hbiwKCSAgaW5jbHVkZS9zbm9vcC5oLCByZWxheTMyL2J1aWx0aW4zMi5jLCByZWxheTMyL3JlbGF5Mzg2LmMsCgkgIHJlbGF5MzIvc25vb3AuYzoKCUFkZGVkIHBvc3NpYmlsaXR5IHRvIGZpbHRlciByZWxheSB0cmFjZXMgYmFzZWQgb24gdGhlIG1vZHVsZSB0aGF0CgljYWxsZWQgdGhlIGZ1bmN0aW9uLiBDbGVhbmVkIHVwIGEgZmV3IHRyYWNlcy4KCgkqIGRsbHMvZ2RpL2dkaTMyLnNwZWMsIGRsbHMvbXNpbWczMi9tc2ltZzMyLnNwZWMsCgkgIGRsbHMvbXNpbWczMi9tc2ltZzMyX21haW4uYywgZ3JhcGhpY3MvcGFpbnRpbmcuYzoKCU1heGltZSBCZWxsZW5n6SA8bWF4aW1lLmJlbGxlbmdlQGxhcG9zdGUubmV0PgoJSW1wbGVtZW50ZWQgdGhlIEdSQURJRU5UX0ZJTExfUkVDVHtIfFZ9IGNhc2VzIG9mIEdkaUdyYWRpZW50RmlsbC4KCgkqIGRvY3VtZW50YXRpb24vZ2V0dGluZy5zZ21sLCBkb2N1bWVudGF0aW9uL2dsb3NzYXJ5LnNnbWwsCgkgIGRvY3VtZW50YXRpb24vaW50cm9kdWN0aW9uLnNnbWw6CglUb20gSHVnaGVzIDx0aGhAY3liZXJzY2llbmNlLmNvbT4KCUZpeCBhIGZldyBpbmNvcnJlY3QgdGFncy4KCgkqIHRvb2xzL3dpbmFwaS93aW5hcGkucG06IEhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJTWFrZSB3aW5hcGlfY2hlY2sgaGFuZGxlIHNwZWMgZmlsZXMgd2hlcmUgbm8gaGFuZGxlciBpcyBzcGVjaWZpZWQuCgoJKiB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5kYXQ6IEhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJU3luYyB3aW5hcGlfY2hlY2sgdG8gV2luZSBzcGVjIGZpbGVzLgoKCSogZGxscy9zaGx3YXBpL29yZGluYWwuYywgZGxscy9zaGx3YXBpL29yZGluYWwuaCwKCSAgZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYzoKCVJvbGYgS2FsYmVybWF0dGVyIDxyb2xmLmthbGJlcm1hdHRlckBjaXRlbmcuY29tPgoJSW1wbGVtZW50IFNITFdBUElfMjY5IGFuZCBTSExXQVBJXzI3MC4KCUZpeCBhIDAgcmVmZXJlbmNlIGJ1ZyBpbiBTSExXQVBJXzQzNiBhbmQgY2hhbmdlIGl0cyByZXR1cm4gdmFsdWUgdG8KCXdoYXQgYXQgbGVhc3QgVzJLIGRvZXMgYXMgd2VsbC4KCgkqIGRsbHMvZHNvdW5kL21peGVyLmM6IEplcnJ5IEplbmtpbnMgPEplcnJ5X0pfSmVua2luc0Bob3RtYWlsLmNvbT4KCUFsaWduIGRhdGEgdG8gcHJvcGVyIHNpemUuCgoyMDAzLTA0LTA1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9udGRsbC9sb2FkZXIuYywgZGxscy9udGRsbC9udGRsbF9taXNjLmgsIGxvYWRlci9wZV9pbWFnZS5jOgoJUmV3cm90ZSBtb3N0IG9mIHRoZSBpbXBvcnQgZml4dXAgY29kZSB0byBhdm9pZCBkb2luZyByZWR1bmRhbnQgd29yawoJZm9yIGV2ZXJ5IGVudHJ5IHBvaW50LiBNb3ZlZCBpdCBhbGwgdG8gZGxscy9udGRsbC9sb2FkZXIuYy4KCVZhcmlvdXMgb3B0aW1pemF0aW9ucyBpbiB0aGUgb3RoZXIgbG9hZGVyIHJvdXRpbmVzLgoKCSogbG9hZGVyL21vZHVsZS5jOgoJRmV0Y2ggdGhlIGV4ZSBtb2R1bGUgZGlyZWN0bHkgZnJvbSB0aGUgUERCIGluc3RlYWQgb2YgY2FsbGluZwoJTGRyR2V0RGxsSGFuZGxlLgoKCSogZGxscy9kc291bmQvY2FwdHVyZS5jLCBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUZpeGVkIGEgcHJvYmxlbSB3aGVuIG11bHRpcGxlIGRldmljZXMgYXJlIHByZXNlbnQgYW5kIGEgZGV2aWNlIG90aGVyCgl0aGFuIHRoZSBmaXJzdCBvbmUgaXMgdXNlZC4KCgkqIGRsbHMvb2xlMzIvYmluZGN0eC5jOiBBbGJlcnRvIE1hc3NhcmkgPGFtYXNzYXJpQHByb2dyZXNzLmNvbT4KCS0gVGhlIGJpbmRjb250ZXh0IG9iamVjdCB3YXMgbGVha2luZyBzdHJpbmdzLgoJLSBSZW1vdmVkIHVudXNlZCB2YXJpYWJsZS4KCgkqIGRsbHMvcmFzYXBpMzIvcmFzYXBpLmM6IEdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJSW1wcm92ZSBlcnJvciBtZXNzYWdlIGZvciBSQVMgbm90IGJlaW5nIHN1cHBvcnRlZC4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOiBFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCVdvcmsgYXJvdW5kIG5vdCBpbXBsZW1lbnRlZCBpb2N0bCBpbiBCU0QuCgoyMDAzLTA0LTA0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jOiBDbGVhbmVkIHVwIHRoZSBvcHRpb24gbWFwcGluZyBjb2RlIGEgYml0LgoKCSogZGxscy9udGRsbC9NYWtlZmlsZS5pbiwgZGxscy9udGRsbC9udC5jLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsCgkgIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYywgZGxscy9udGRsbC9zeW5jLmMsIGRsbHMvbnRkbGwvdGhyZWFkLmMsCgkgIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwgaW5jbHVkZS93aW50ZXJubC5oLAoJICBzY2hlZHVsZXIvdGhyZWFkLmMsIHNlcnZlci9hc3luYy5jLCBzZXJ2ZXIvbmFtZWRfcGlwZS5jLAoJICBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90aHJlYWQuaCwKCSAgc2VydmVyL3RpbWVyLmMsIHNlcnZlci90cmFjZS5jOgoJSW1wbGVtZW50ZWQgTnRRdWV1ZUFwY1RocmVhZCwgYW5kIGNoYW5nZWQgdGhlIHNlcnZlciBBUEMgaW50ZXJmYWNlIHRvCglhbHdheXMgdGFrZSAzIHBhcmFtZXRlcnMuCglJbXBsZW1lbnRlZCBhIG51bWJlciBvZiBvdGhlciBudGRsbCB0aHJlYWQgZnVuY3Rpb25zLCBhbmQgdXNlIHRoZW0KCWZyb20gdGhlIGtlcm5lbCBvbmVzLgoKCSogZGxscy9kc291bmQvc291bmQzZC5jLCBwcm9ncmFtcy93aW5lY2ZnL3Byb3BlcnRpZXMuYzogV2FybmluZyBmaXhlcy4KCgkqIE1ha2VmaWxlLmluLCBSRUFETUUsIHRvb2xzL3dpbmVjaGVjazoKCUFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCVN0cnVjdHVyZSBSRUFETUUgZmlsZSBpbiBhIGJldHRlciB3YXksIHNvbWUgZG9jIGZpeGVzLgoKCSogZmlsZXMvZG9zX2ZzLmM6IE1pa2UgSGVhcm4gPG0uaGVhcm5Ac2lnbmFsLnFpbmV0aXEuY29tPgoJQ29ycmVjdCB0aGUgZXJyb3IgY29kZSByZXR1cm5lZCB3aGVuIGEgZmlsZSBkb2VzIG5vdCBleGlzdC4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYywgZGxscy93c29jazMyL3NvY2tldC5jLAoJICBkbGxzL3dzb2NrMzIvd3NvY2szMi5zcGVjLCBpbmNsdWRlL3dpbnNvY2suaCwgaW5jbHVkZS93czJ0Y3BpcC5oOgoJTWlrZSBIZWFybiA8bS5oZWFybkBzaWduYWwucWluZXRpcS5jb20+CgktIE1hcCB3aW5zb2NrIHNvY2tvcHRzIHRvIHRoZSBQT1NJWCBlcXVpdmFsZW50cyBmb3IgSVAgbXVsdGljYXN0LgoJLSBSZW1hcCB3aW5zb2NrMSBjb25zdGFudCB2YWx1ZXMgdG8gd2luc29jazIgdXNpbmcgYSBmb3J3YXJkZXIKCSAgZnVuY3Rpb24uCgktIENoYW5nZSBhIEZJWE1FIHRvIGEgVFJBQ0UsIGl0IGFwcGVhcmVkIHRvIGJlIHNpbXBseSByZXBvcnRpbmcKCSAgcHJvZ3Jlc3MuCgoJKiBkbGxzL250ZGxsL2xvYWRlci5jLCBpbmNsdWRlL21vZHVsZS5oLCBsb2FkZXIvcGVfaW1hZ2UuYzoKCU1lcmdlZCBQRV9Jbml0RExMIGludG8gTU9EVUxFX0luaXRETEwuCglGaXhlZCBhIGZldyB0cmFjZXMuCgoJKiBkbGxzL250ZGxsL2NyaXRzZWN0aW9uLmMsIGluY2x1ZGUvd2luYmFzZS5oLAoJICBwcm9ncmFtcy93aW5lZGJnL2dkYnByb3h5LmMsIHByb2dyYW1zL3dpbmVkYmcvd2luZWRiZy5jLAoJICB3aW4zMi9leGNlcHQuYzoKCVJlbW92ZSB0aGUgV2luZS1zcGVjaWZpYyBFWENFUFRJT05fQ1JJVElDQUxfU0VDVElPTl9XQUlUIGRlZmluZS4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL21zdmNydGQvLmN2c2lnbm9yZSwKCSAgZGxscy9tc3ZjcnRkL01ha2VmaWxlLmluLCBkbGxzL21zdmNydGQvZGVidWcuYywKCSAgZGxscy9tc3ZjcnRkL21zdmNydGQuc3BlYzoKCUFkYW0gR3VuZHkgPGFyZ0BjeWJlcnNjaWVuY2UuY29tPgoJQWRkZWQgYW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIE1TVkNSVEQuRExMIGRlYnVnZ2luZyBDIHJ1bnRpbWUgRExMLgoKCSogZGxscy9pY21wL2ljbXBfbWFpbi5jOgoJUmVtb3ZlZCB0aGUgY29tbWVudGVkIG91dCB3aW5zb2NrIHN1cHBvcnQsIGl0IGNhbid0IHdvcmsgYW55d2F5LgoKCSogaW5jbHVkZS93aW5zb2NrLmg6CglZZXQgYW5vdGhlciBoYWNrIHRvIHRyeSB0byBtYWtlIHRoaXMgZmlsZSBjb21waWxlIGluIGFsbAoJY2lyY3Vtc3RhbmNlcy4KCgkqIGluY2x1ZGUvd2ludXNlci5oOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQWRkIGEgZmV3IG1pc3NpbmcgQk5fKiBjb25zdGFudHMuCgoyMDAzLTA0LTAzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogcHJvZ3JhbXMvd2luZWNvbnNvbGUvY3Vyc2VzLmM6CglBdm9pZCB3YXJuaW5nIG9uIHJlZGVmaW5pdGlvbiBvZiBLRVlfRVZFTlQuCgoJKiBkbGxzL250ZGxsL2NyaXRzZWN0aW9uLmMsIGRsbHMvbnRkbGwvcnRsLmMsIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYywKCSAgZGxscy9udGRsbC9zaWduYWxfcG93ZXJwYy5jLCBkbGxzL250ZGxsL3NpZ25hbF9zcGFyYy5jOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglObyBsb25nZXIgY2FsbCBXYWl0Rm9yKk9iamVjdCogZnJvbSBudGRsbCAoYnV0IE50V2FpdCpPYmplY3QqKS4KCgkqIGRsbHMvZGRyYXcvdmVyc2lvbi5yYzogUm9rIE1hbmRlbGpjIDxyb2ttYW5kZWxqY0Bob3RtYWlsLmNvbT4KCVVwZGF0ZSB2ZXJzaW9uIGluZm8gdG8gOC4xLgoKCSogZGxscy9kM2Q4Ly5jdnNpZ25vcmUsIGRsbHMvZDNkOC9NYWtlZmlsZS5pbiwgZGxscy9kM2Q4L3ZlcnNpb24ucmMsCgkgIGRsbHMvZG11c2ljLy5jdnNpZ25vcmUsIGRsbHMvZG11c2ljL01ha2VmaWxlLmluLAoJICBkbGxzL2RtdXNpYy92ZXJzaW9uLnJjOgoJUm9rIE1hbmRlbGpjIDxyb2ttYW5kZWxqY0Bob3RtYWlsLmNvbT4KCUFkZGVkIHZlcnNpb24gaW5mby4KCgkqIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYzoKCURvbid0IG91dHB1dCByZWdpc3RlciBmdW5jdGlvbiBjb2RlIGlmIGl0J3MgYSBmb3J3YXJkZWQgZW50cnkgcG9pbnQuCgoJKiBkbGxzL2NhYmluZXQvY2FiZXh0cmFjdC5jLCBkbGxzL2RwbGF5eC9kcGxvYmJ5LmMsCgkgIGRsbHMva2VybmVsL2NvbnNvbGUuYywgZGxscy9wc2FwaS9wc2FwaV9tYWluLmM6CglNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmRlPgoJQWRkIHNvbWUgbWlzc2luZyBIZWFwRnJlZSdzIGFuZCBvbmUgbWlzc2luZyBmcmVlLgoKCSogZGxscy91c2VyL21lc3NhZ2UuYzogVml0YWxpeSBNYXJnb2xlbiA8d2luZS1wYXRjaEBraWV2aW5mby5jb20+CglSZW1vdmUgYm9ndXMgaW5pdGlhbGl6YXRpb24gaW4gU2V0S2V5Ym9hcmRTdGF0ZS4KCgkqIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglBZGRlZCB3aWRlIGNoYXJhY3RlciBlbnVtZXJhdGlvbiBvZiBzb3VuZCBkZXZpY2VzLgoKCSogaW5jbHVkZS9kc291bmQuaDogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUFkZGVkIGEgZmV3IG1pc3NpbmcgRFg4IGRlZmluaXRpb25zLgoKCSogZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgd2luMzIva2VybmVsMzIuYzoKCVBhdWwgTWNOZXR0IDxwQHVsbWNuZXR0LmNvbT4KCVN0dWJzIGZvciBCZWdpblVwZGF0ZVJlc291cmNlQSgpLCBCZWdpblVwZGF0ZVJlc291cmNlVygpLAoJRW5kVXBkYXRlUmVzb3VyY2VBKCksIGFuZCBFbmRVcGRhdGVSZXNvdXJjZVcoKS4KCgkqIHNjaGVkdWxlci9zeXNkZXBzLmM6CglBZGRlZCBoYWNrIHRvIHBhdGNoIHRoZSBnbGliYyBlcnJub19sb2NhdGlvbiB0byBqdW1wIHRvIG91ciBmdW5jdGlvbiwKCWJhc2VkIG9uIGEgcGF0Y2ggYnkgTWFyY3VzIE1laXNzbmVyLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sIGluY2x1ZGUvY29uZmlnLmguaW4sCgkgIGxpYnMvd2luZS9lcnJuby5jLCBzY2hlZHVsZXIvcHRocmVhZC5jLCBzY2hlZHVsZXIvc3lzZGVwcy5jOgoJQWRkZWQgLS13aXRoLW5wdGwgY29uZmlndXJlIG9wdGlvbiBhbmQgbmVjZXNzYXJ5IGNoYW5nZXMgdG8gc3VwcG9ydAoJcnVubmluZyBvbiB0b3Agb2YgTlBUTCB0aHJlYWRzLgoKMjAwMy0wNC0wMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGFjbG9jYWwubTQsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBpbmNsdWRlL2NvbmZpZy5oLmluLAoJICBzY2hlZHVsZXIvc3lzZGVwcy5jOgoJRG9uJ3QgYm90aGVyIGNoZWNraW5nIGZvciB0aGUgZXJybm8gZnVuY3Rpb24sIHNpbXBseSBkZWZpbmUgYWxsIG9mCgl0aGVtLgoKCSogZGxscy9jb21jdGwzMi9kYXRldGltZS5jOiBWaXRhbGl5IE1hcmdvbGVuIDx3aW5lLXBhdGNoQGtpZXZpbmZvLmNvbT4KCUZpeCBidWZmZXIgb3ZlcmZsb3cgaW4gZGF0ZXRpbWUuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzogQWRhbSBHdW5keSA8YXJnQGN5YmVyc2NpZW5jZS5jb20+CglaZXJvIGluaXRpYWxpemUgdGhlIHJlc2VydmVkIGJ5dGVzIGluIHRoZSB0b29sYmFyIGRldGFpbHMgcmV0dXJuZWQgYnkKCVRPT0xCQVJfR2V0QnV0dG9uKCkuCgoJKiBkbGxzL3NldHVwYXBpL3NldHVwYXBpLnNwZWMsIGRsbHMvc2V0dXBhcGkvc3R1YnMuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUFkZGVkIHNvbWUgc3R1YnMuCgoJKiBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jOiBWaXRhbGl5IE1hcmdvbGVuIDx3aW5lLXBhdGNoQGtpZXZpbmZvLmNvbT4KCUZpeCBJbWFnZUxpc3RfUmVhZCAtIHRoZSByb290IGNhdXNlIG9mIHVnbHkgdG9vbGJhciBpY29ucy4KCgkqIGRsbHMvbnRkbGwvbnRkbGxfbWlzYy5oLCBkbGxzL250ZGxsL3N5bmMuYywgZGxscy9udGRsbC90aW1lLmMsCgkgIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwgc2NoZWR1bGVyL3RpbWVyLmMsCgkgIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RpbWVyLmMsIHNlcnZlci90cmFjZS5jLAoJICB0b29scy9tYWtlX3JlcXVlc3RzOgoJQWRkZWQgYWJzX3RpbWVfdCBzdHJ1Y3R1cmUgdG8gdGhlIHNlcnZlciBwcm90b2NvbCwgYW5kIGFkZGVkIGEgZHVtcAoJcm91dGluZSBmb3IgaXQgdGhhdCBkaXNwbGF5cyB0aGUgcmVsYXRpdmUgdGltZW91dCB0byBtYWtlIHRpbWVvdXQKCXZhbHVlcyBlYXNpZXIgdG8gaW50ZXJwcmV0LgoKCSogZGxscy93aW5tbS90ZXN0cy93YXZlLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglBZGRlZCBtb3JlIGluZm9ybWF0aW9uIHRvIHNvbWUgb2YgdGhlIGZhaWx1cmUgbWVzc2FnZXMuCglGaXhlZCBhIGJ1ZyB3aGVyZSBnYXJiYWdlIGRhdGEgaXMgcHJpbnRlZCBvdXQgZm9yIHRoZSAyIE1IeiB0ZXN0cy4KCgkqIHRvb2xzL3dpbmVnY2MuYywgdG9vbHMvd2luZXdyYXAuYzoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglNYWtlIHVzZSBvZiB0aGUgbmV3IHNwYXdudnAgZnVuY3Rpb24gaW4gd2luZXtnY2Msd3JhcH0uCgoJKiBkbGxzL2Rzb3VuZC9kc291bmQuc3BlYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUFkZGVkIGVudHJ5IGZvciBEaXJlY3RTb3VuZEZ1bGxEdXBsZXhDcmVhdGUuCgoJKiB0b29scy93aW5lZHVtcC9wZS5jOiBEdW1wIHN0cmluZyByZXNvdXJjZXMgaW4gYSBtb3JlIHJlYWRhYmxlIHdheS4KCgkqIGluY2x1ZGUvd2luZS9wb3J0LmgsIGxpYnMvcG9ydC9NYWtlZmlsZS5pbiwgbGlicy9wb3J0L3NwYXduLmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkaW1pQGludGVsbGl3YXJlLmNhPgoJQWRkIHNwYXdudnAgdG8gdGhlIHBvcnRhYmlsaXR5IGxpYi4KCgkqIHNlcnZlci9zaWduYWwuYzoKCUluaXRpYWxpemUgdGhlIGR1bW15IGNoYXIgd2Ugc2VuZCBkb3duIHRoZSBwaXBlIHRvIG1ha2UgdmFsZ3JpbmQKCWhhcHB5LgoKCSogcHJvZ3JhbXMvbm90ZXBhZC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvcmVnZWRpdC9NYWtlZmlsZS5pbjoKCU1ha2Ugc3VyZSB3ZSBkb24ndCB1c2UgbGlid2luZV9wb3J0IGZ1bmN0aW9ucyB3aGVuIGxpbmtpbmcgd2l0aAoJbXN2Y3J0LgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvbnRkbGwvaGVhcC5jLCBpbmNsdWRlL2NvbmZpZy5oLmluOgoJQWRkZWQgc3VwcG9ydCBmb3IgbWFya2luZyBoZWFwIGJsb2NrcyBhcyBpbmFjY2Vzc2libGUvdW5pbml0aWFsaXplZCBpZgoJdmFsZ3JpbmQgaXMgaW5zdGFsbGVkLCBiYXNlZCBvbiBhIHBhdGNoIGJ5IEFkYW0gR3VuZHkuCgoJKiBkbGxzL3dpbnNvY2svdGVzdHMvc29jay5jLCBpbmNsdWRlL3dpbnNvY2suaDoKCUhhbmRsZSBodG9ubCgpIGFuZCBmcmllbmRzIGxpa2Ugc2VsZWN0KCksIHRoaXMgd2lsbCBob3BlZnVsbHkgYXZvaWQKCWNvbmZsaWN0cyB3aXRoIFVuaXggaGVhZGVycy4KCgkqIGRsbHMvY29tbWRsZy9jb2xvcmRsZy5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmMsCgkgIGRsbHMvbnRkbGwvcnRsYml0bWFwLmMsIGRsbHMvc2V0dXBhcGkvZGlyaWQuYywgZGxscy9zaGRvY3Z3L2V2ZW50cy5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGRsbHMvc2hsd2FwaS9wYXRoLmMsCgkgIGRsbHMvc2hsd2FwaS90aHJlYWQuYywgZGxscy91c2VyL3RleHQuYywKCSAgZGxscy93aW5tbS9taWRpbWFwL21pZGltYXAuYywgaW5jbHVkZS93aW5udC5oLCBtZW1vcnkvZ2xvYmFsLmMsCgkgIHRvb2xzL3dpbmVjb25mOgoJQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJU29tZSBzcGVsbGluZyBhbmQgZm9ybWF0dGluZyBmaXhlcy4KCgkqIHByb2dyYW1zL3dpbmVkYmcvc3RhYnMuYzogRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglBZGRlZCBzdXBwb3J0IGZvciBSIHR5cGVzIGluIHN0YWJzIHBhcnNpbmcuCgoJKiBkbGxzL250ZGxsL2Nkcm9tLmM6IEVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJRml4ZWQgYSBmZXcgRm9ybWF0Q29kZSBlbnRyaWVzLgoKMjAwMy0wNC0wMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvc2hlbGwzMi90ZXN0cy9zaGxmaWxlb3AuYzoKCVJvbGYgS2FsYmVybWF0dGVyIDxyb2xmLmthbGJlcm1hdHRlckBjaXRlbmcuY29tPgoJRml4IHRlc3QgdG8gc3VjY2VlZCBpbiBXaW4gOTgvMksgYW5kIG1vc3QgcHJvYmFibHkgTUUvWFAgYXMgd2VsbC4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBpbmNsdWRlL3RocmVhZC5oLAoJICBzY2hlZHVsZXIvY2xpZW50LmMsIHNjaGVkdWxlci9zeXNkZXBzLmM6CglBZGRlZCBTWVNERVBTX0dldFVuaXhUaWQgdG8gcmV0dXJuIHRoZSBVbml4IHRocmVhZCBpZCB0byBzZW5kIHRvIHRoZQoJc2VydmVyLgoKCSogZGxscy9zaGVsbDMyL3VuZG9jc2hlbGwuaCwgaW5jbHVkZS9zaGxvYmouaDoKCVJvbGYgS2FsYmVybWF0dGVyIDxyb2xmLmthbGJlcm1hdHRlckBjaXRlbmcuY29tPgoJTW92ZWQgcHJvdG90eXBlIGZvciBTSEJpbmRUb1BhcmVudCgpIHRvIHNobG9iai5oLgoKCSogZG9jdW1lbnRhdGlvbi9NYWtlZmlsZS5pbiwgZG9jdW1lbnRhdGlvbi9hcmNoaXRlY3R1cmUuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9idWdzLnNnbWwsIGRvY3VtZW50YXRpb24vYnVpbGQuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9jb21waWxpbmcuc2dtbCwgZG9jdW1lbnRhdGlvbi9jb25maWd1cmluZy5zZ21sLAoJICBkb2N1bWVudGF0aW9uL2N2cy1yZWdyZXNzaW9uLnNnbWwsIGRvY3VtZW50YXRpb24vY3ZzLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vZGVidWdnZXIuc2dtbCwgZG9jdW1lbnRhdGlvbi9kbGxzLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vZG9jdW1lbnRhdGlvbi5zZ21sLCBkb2N1bWVudGF0aW9uL2ZhcS5zZ21sLAoJICBkb2N1bWVudGF0aW9uL2ZvbnRzLnNnbWwsIGRvY3VtZW50YXRpb24vZ2V0dGluZy5zZ21sLAoJICBkb2N1bWVudGF0aW9uL2dsb3NzYXJ5LnNnbWwsIGRvY3VtZW50YXRpb24vaW1wbGVtZW50YXRpb24uc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9pbnN0YWxsYXRpb24tdW5kLWtvbmZpZ3VyYXRpb24uZ2VybWFuLAoJICBkb2N1bWVudGF0aW9uL2luc3RhbGxpbmcuc2dtbCwgZG9jdW1lbnRhdGlvbi9pbnRyb2R1Y3Rpb24uc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9tdWx0aW1lZGlhLnNnbWwsIGRvY3VtZW50YXRpb24vcGFja2FnaW5nLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vcHJpbnRpbmcuc2dtbCwgZG9jdW1lbnRhdGlvbi9yZWdpc3RyeS5zZ21sLAoJICBkb2N1bWVudGF0aW9uL3J1bm5pbmcuc2dtbCwgZG9jdW1lbnRhdGlvbi93aW5lLWRldmVsLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vd2luZS1kb2Muc2dtbCwgZG9jdW1lbnRhdGlvbi93aW5lLXVzZXIuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi93aW5lbGliLWJpbmRsbHMuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi93aW5lbGliLXBvcnRpbmcuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi93aW5lbGliLXRvb2xraXQuc2dtbDoKCUFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCS0gbmV3LCBtdWNoIG1vcmUgZGV0YWlsZWQgYW5kIGVhc2llciAic3RlcC1ieS1zdGVwIiBsYXlvdXQKCS0gYmV0dGVyIGludHJvCgktIGFkZCBHbG9zc2FyeSAoZ2xvc3Nhcnkuc2dtbCkKCS0gbXVjaCBiZXR0ZXIgR2V0dGluZyBXaW5lIGNoYXB0ZXIKCS0gbXVjaCBiZXR0ZXIgV2luZSBjb25maWd1cmF0aW9uIGNoYXB0ZXIKCS0gYmV0dGVyIFdpbmUgZHJpdmUgbGF5ZXIgY29uZmlndXJhdGlvbiBzZWN0aW9uCgktIGV4cGxhaW4gd2luZXNlcnZlciBjbWRsaW5lIG9wdGlvbnMKCS0gcmVhcnJhbmdlZCB0b25zIG9mIHRoaW5ncyBpbnRvIGEgbGVzcyBtZXNzeSBzdGF0ZQoJLSB0b25zIG9mIGphbml0b3JpYWwgZml4ZXMKCgkqIGRsbHMvZ2RpL2RyaXZlci5jLCBkbGxzL3dpbmVkb3MvaW50MWEuYywgZGxscy93aW5lZG9zL3ZnYS5jLAoJICBpbmNsdWRlL3dpbmUvd2luc29jazE2LmgsIHByb2dyYW1zL3dpbmVkYmcvZGJnLnk6CglQb3J0YWJpbGl0eSBmaXhlcy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBpbmNsdWRlL2NvbmZpZy5oLmluLCB0b29scy93aW5lZ2NjLmMsCgkgIHRvb2xzL3dpbmV3cmFwLmM6CglVc2UgX3NwYXdudnAgdG8gcmVwbGFjZSBmb3JrIGZvciBub24tVW5peCBwbGF0Zm9ybXMuCgoJKiBkbGxzL01ha2VkbGwucnVsZXMuaW4sIGRsbHMvdXNlci9NYWtlZmlsZS5pbiwgdG9vbHMvd2luZWJ1aWxkL21haW4uYzoKCUFkZGVkIHN1cHBvcnQgZm9yIHNwZWNpZnlpbmcgYW4gc3RkY2FsbCBkbGwgZW50cnkgcG9pbnQuCgoJKiBwcm9ncmFtcy93aW5lZGJnL2RlYnVnZ2VyLmgsIHByb2dyYW1zL3dpbmVkYmcvZ2RicHJveHkuYywKCSAgcHJvZ3JhbXMvd2luZWRiZy9tb2R1bGUuYywgcHJvZ3JhbXMvd2luZWRiZy9zdGFicy5jLAoJICBwcm9ncmFtcy93aW5lZGJnL3dpbmVkYmcuYzoKCVJlbW92ZWQgdXNlcyBvZiB1X2xvbmcuIFVzZSB2b2lkKiB0eXBlIGZvciBwb2ludGVycyB3aGVyZSBwb3NzaWJsZS4KCjIwMDMtMDMtMzEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2NvbW1kbGcvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL01ha2VmaWxlLmluLAoJICBkbGxzL29sZWF1dDMyL01ha2VmaWxlLmluLCBkbGxzL3VybG1vbi91bW9uLmMsCgkgIGRsbHMvd2luaW5ldC91cmxjYWNoZS5jLCBkbGxzL3dpbmluZXQvd2luaW5ldC5zcGVjLAoJICBkbGxzL3dpbnNwb29sL01ha2VmaWxlLmluLCBpbmNsdWRlL3dpbmluZXQuaDoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBiYWlrYWwucnU+CglGaXggc29tZSBwcm9ibGVtcyBmb3VuZCB3aGlsZSBjb21waWxpbmcgYW5kIGxpbmtpbmcgV2luZSB1bmRlcgoJQ3lnd2luLgoKCSogaW5jbHVkZS93aW5zb2NrLmg6CglUcnkgdG8gbWFrZSB3aW5zb2NrLmggbW9yZSBwb3J0YWJsZSAoYmFzZWQgb24gYSBwYXRjaCBieSBGcmFuY29pcwoJR291Z2V0KS4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBwcm9ncmFtcy9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvd2luZWNmZy8uY3ZzaWdub3JlLCBwcm9ncmFtcy93aW5lY2ZnL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy93aW5lY2ZnL21haW4uYywgcHJvZ3JhbXMvd2luZWNmZy9wcm9wZXJ0aWVzLmMsCgkgIHByb2dyYW1zL3dpbmVjZmcvcHJvcGVydGllcy5oLCBwcm9ncmFtcy93aW5lY2ZnL3Jlc291cmNlLmgsCgkgIHByb2dyYW1zL3dpbmVjZmcvd2luZWNmZy5jLCBwcm9ncmFtcy93aW5lY2ZnL3dpbmVjZmcuaCwKCSAgcHJvZ3JhbXMvd2luZWNmZy93aW5lY2ZnLnJjOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCU5ldyB3aW5lY2ZnIHNrZWxldG9uIGFwcCwgYmFzZWQgaGVhdmlseSBvbiBvcmlnaW5hbCB3b3JrIGJ5IEphY28KCUdyZWVmZi4KCgkqIFJFQURNRSwgZG9jdW1lbnRhdGlvbi9SRUFETUUuZnIsIGRvY3VtZW50YXRpb24vaW5zdGFsbGluZy5zZ21sLAoJICBkb2N1bWVudGF0aW9uL3JlZ2lzdHJ5LnNnbWwsIHRvb2xzL3dpbmVjaGVjaywgd2luZWRlZmF1bHQucmVnOgoJU3lsdmFpbiBQZXRyZW9sbGUgPHNwZXRyZW9sbGVAeWFob28uZnI+CglVc2UgcmVnZWRpdCBpbnN0ZWFkIG9mIHJlZ2FwaS4KCgkqIGRsbHMvYWR2YXBpMzIvY3J5cHQuYzogQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJVHJhY2UgZm9ybWF0IGZpeC4KCgkqIGRsbHMvbnRkbGwvc3luYy5jOiBBZGRlZCBtaXNzaW5nIE5PTkFNRUxFU1NTVFJVQ1QvVU5JT04uCgoJKiBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvbnRkbGwvbnRkbGxfbWlzYy5oLCBkbGxzL250ZGxsL29tLmMsCgkgIGRsbHMvbnRkbGwvc3luYy5jLCBkbGxzL250ZGxsL3RpbWUuYywgaW5jbHVkZS93aW50ZXJubC5oLAoJICBzY2hlZHVsZXIvc3luY2hyby5jLCBzY2hlZHVsZXIvdGltZXIuYzoKCU1vdmVkIFdhaXRGb3JNdWx0aXBsZU9iamVjdHMgdG8gbnRkbGwgKGJhc2VkIG9uIGEgcGF0Y2ggYnkgRXJpYwoJUG91ZWNoKS4KCUFkZGVkIE5URExMX2dldF9zZXJ2ZXJfdGltZW91dCBmdW5jdGlvbiB0byBjb21wdXRlIG50ZGxsLXN0eWxlCgl0aW1lb3V0cyBhbmQgYWRhcHRlZCB0aGUgdGltZXIgY29kZSB0byB1c2UgaXQuCgoJKiBkb2N1bWVudGF0aW9uL2NvbXBpbGluZy5zZ21sOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCS0gcy9jdnMgLVBBZCB1cGRhdGUvY3ZzIHVwZGF0ZSAtUEFkLy4KCS0gRml4IHRoZSBPZGluIGxpbmsuCgktIEFkZCBhIGxpbmsgdG8gQmVXaW5lLgoJLSBTbWFsbCB0eXBvIGZpeGVzIGFuZCByZXBocmFzaW5nLgoKCSogZGxscy9kc291bmQvc291bmQzZC5jOiBSb2sgTWFuZGVsamMgPHJva21hbmRlbGpjQGhvdG1haWwuY29tPgoJRnJhbWV3b3JrIGZvciB0aGUgZG9wcGxlciBlZmZlY3QuCgoJKiBkbGxzL2RtdXNpYy9kbXVzaWMuYzogUm9rIE1hbmRlbGpjIDxyb2ttYW5kZWxqY0Bob3RtYWlsLmNvbT4KCShzb3J0YSkgaW1wbGVtZW50ZWQgRW51bVBvcnRzLgoKCSogZ3JhcGhpY3MveDExZHJ2L2RpYi5jOiBWaXRhbGl5IE1hcmdvbGVuIDx3aW5lLXBhdGNoQGtpZXZpbmZvLmNvbT4KCUZpeCByYW5kb20gc2VnZmF1bHRzIGluIFgxMURSVl9TZXRJbWFnZUJpdHNfMS4KCjIwMDMtMDMtMzAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL3N5c3BhcmFtcy5jOgoJVXNlIHRoZSByaWdodCBidWZmZXIgc2l6ZSBpbiBTWVNQQVJBTVNfTG9hZCBpbnN0ZWFkIG9mIHNvbWUgcmFuZG9tCgl2YWx1ZS4KCgkqIGluY2x1ZGUvd2luZS9zZXJ2ZXIuaCwgc2NoZWR1bGVyL2NsaWVudC5jOgoJQ2xlYXIgdGhlIGVudGlyZSByZXF1ZXN0LCBub3QganVzdCB0aGUgZW5kLCBpbiBjYXNlIGl0IGNvbnRhaW5zCglwYWRkaW5nIGJ5dGVzLgoKCSogbWlzYy92ZXJzaW9uLmM6CglGaXhlZCByZWdyZXNzaW9uIGluIFZFUlNJT05fR2V0TGlua2VkRGxsVmVyc2lvbigpIGludHJvZHVjZWQgYnkKCXByZXZpb3VzIGNoYW5nZS4KCgkqIGRsbHMvbXN2Y3J0L2ZpbGUuYzogQWRhbSBHdW5keSA8YXJnQGN5YmVyc2NpZW5jZS5jb20+CglNU1ZDUlRfZmNsb3NlKCkgbXVzdG4ndCB1c2UgdGhlIF9mbGFnIGZpZWxkIGZyb20gdGhlIGZpbGUgc3RydWN0dXJlCglhZnRlciBfY2xvc2UoKSBoYXMgYmVlbiBjYWxsZWQuCglXaGVuIF9vcGVuX29zZmhhbmRsZSgpIGlzIHVzZWQgYnkgTUZDJ3MgQ1N0ZGlvRmlsZSwgaXQgZXhwZWN0cyB3cml0ZQoJYWNjZXNzIGV2ZW4gdGhvdWdoIGl0IGRvZXNuJ3Qgc2V0IHRoZSBuZWNlc3NhcnkgZmxhZyBiaXQuCgoJKiBkbGxzL2NvbW1kbGcvZmlsZXRpdGxlLmMsIGRsbHMvc2hsd2FwaS9wYXRoLmMsIGRsbHMvc2hsd2FwaS9yZWcuYzoKCVZpdGFsaXkgTWFyZ29sZW4gPHdpbmUtcGF0Y2hAa2lldmluZm8uY29tPgoJVW5pY29kZSBzdHJpbmdzIHRlcm1pbmF0aW9uIGZpeGVzLgoKCSogbWlzYy9yZWdpc3RyeS5jOiBNYXhpbWUgQmVsbGVuZ+kgPG1heGltZS5iZWxsZW5nZUBsYXBvc3RlLm5ldD4KCUZpeCBhIHJlZ3Jlc3Npb24gd2hlbiBsb2FkaW5nIGEgcmVhbCB3aW5kb3dzIHJlZ2lzdHJ5LgoKCSogZGxscy93aW5lZG9zL2ludDIxLmMsIGluY2x1ZGUvd2luYmFzZS5oLCBtc2Rvcy9pbnQyMS5jOgoJSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJQWRkIHByb3RvdHlwZSBmb3IgR2V0Q29tcHJlc3NlZEZpbGVTaXplLiBNb3ZlIHNvbWUgaW50MjEgZnVuY3Rpb25zIHRvCgl3aW5lZG9zLiBJbXByb3ZlIGZpbGUgYXR0cmlidXRlIGZ1bmN0aW9ucy4KCgkqIGRsbHMvZ2RpL2ZyZWV0eXBlLmM6IEFkYW0gR3VuZHkgPGFyZ0BjeWJlcnNjaWVuY2UuY29tPgoJRG9uJ3QgbG9vayBhdCB0aGUgc2Vjb25kIGNoYXJhY3RlciBvZiB0aGUgcGF0aCB1bmxlc3MgdGhlIGZpcnN0CgljaGFyYWN0ZXIgaXMgbm9uLU5VTC4KCgkqIGRsbHMvc2hlbGwzMi9mb2xkZXJzLmM6IEFkYW0gR3VuZHkgPGFyZ0BjeWJlcnNjaWVuY2UuY29tPgoJRG9uJ3QgY29udmVydCB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIHRoZSBmaWxlbmFtZSBmcm9tIHdpZGUgdG8KCW11bHRpYnl0ZS4KCgkqIGRsbHMvd2luc3Bvb2wvaW5mby5jOiBBZGFtIEd1bmR5IDxhcmdAY3liZXJzY2llbmNlLmNvbT4KCU1ha2Ugc3VyZSB0aGUgbmV3IGFycmF5IG9mIHByaW50ZXIgcG9pbnRlcnMgaXMgTlVMTCBpbml0aWFsaXplZC4KCgkqIGZpbGVzL3Byb2ZpbGUuYzogQWRhbSBHdW5keSA8YXJnQGN5YmVyc2NpZW5jZS5jb20+CglEb24ndCByZWFkIHVuaW5pdGlhbGl6ZWQgZGF0YSB3aGVuIGEgJyQnIGlzIGZvdW5kLgoKCSogbGlicy93aW5lL2xkdC5jOiBBZGFtIEd1bmR5IDxhcmdAY3liZXJzY2llbmNlLmNvbT4KCU1ha2Ugc3VyZSBhbGwgdGhlIGJpdHMgb2YgdGhlIExEVCBhcmUgaW5pdGlhbGl6ZWQuCgoJKiB3aW5kb3dzL3N5c3BhcmFtcy5jOiBBZGFtIEd1bmR5IDxhcmdAY3liZXJzY2llbmNlLmNvbT4KCUluaXRpYWxpemUgbHBMb2dGb250LT5sZlF1YWxpdHkgdG8gdGhlIGRlZmF1bHQuCgoyMDAzLTAzLTI4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZG9jdW1lbnRhdGlvbi9ydW5uaW5nLnNnbWw6IE1pa2UgSGVhcm4gPG0uaGVhcm5Ac2lnbmFsLnFpbmV0aXEuY29tPgoJQWRkIGluZm8gb24gaG93IHRvIHVzZSB0aGUgV2luZSB1bmluc3RhbGxlci4KCgkqIGRsbHMvdXNlci9NYWtlZmlsZS5pbiwgZGxscy91c2VyL2NvbnRyb2xzLmgsIGRsbHMvdXNlci9kaWFsb2cxNi5jLAoJICBkbGxzL3VzZXIvdXNlcjMyLnNwZWMsIGRsbHMvdXNlci93bmQxNi5jLCB3aW5kb3dzL2RpYWxvZy5jOgoJTW92ZWQgMTYtYml0IGRpYWxvZyByb3V0aW5lcyB0byBhIHNlcGFyYXRlIGRpYWxvZzE2LmMgZmlsZS4KCUZpeGVkIHdpbmRvdyBjcmVhdGlvbiB0byBjcmVhdGUgQVNDSUkgd2luZG93cyB3aGVuIGNhbGxlZCB0aHJvdWdoIG9uZQoJb2YgdGhlIEFTQ0lJIGRpYWxvZyBmdW5jdGlvbnMuCgoJKiBkbGxzL3dpbm1tL3dpbmVhbHNhL2F1ZGlvLmM6IEF2b2lkIGNyYXNoIGlmIHNuZF9wY21fb3BlbiBmYWlscy4KCgkqIGRsbHMvb2xlMzIvLmN2c2lnbm9yZSwgZGxscy9vbGUzMi9NYWtlZmlsZS5pbiwgZGxscy9vbGUzMi9vbGUzMi5zcGVjLAoJICBkbGxzL29sZTMyL29sZTMyX21haW4uYywgZGxscy9vbGUzMi9yZWdzdnIuYywgZGxscy9vbGUzMi92ZXJzaW9uLnJjOgoJSm9obiBLLiBIb2htIDxqaG9obUBhY20ub3JnPgoJSW1wbGVtZW50IERsbFJlZ2lzdGVyU2VydmVyIGFuZCBEbGxVbnJlZ2lzdGVyU2VydmVyIGZvciBvbGUzMi5kbGwsIGFuZAoJYWRkIE9sZVNlbGZSZWdpc3RlciB2ZXJzaW9uIHN0cmluZy4KCgkqIE1ha2UucnVsZXMuaW4sIHRvb2xzL3dyYy9wYXJzZXIueSwgdG9vbHMvd3JjL3dyYy5jLCB0b29scy93cmMvd3JjLmgsCgkgIHRvb2xzL3dyYy93cmMubWFuOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVJlbW92ZSB0aGUgbm8gbG9uZ2VyIG5lZWRlZCAtbSBvcHRpb24sIGlnbm9yZSAtciBmb3IgY29tcGF0aWJpbGl0eQoJd2l0aCByYy4KCVJlbmFtZSAtQiB0byAtLWVuZGlhbmVzcywgLWQgdG8gLS1kZWJ1ZywgLVcgdG8gLS1wZWRhbnRpYy4KCUFkZCBhIG5ldyAtVSwtLXVuZGVmaW5lIG9wdGlvbiB0byB1bmRlZmluZWQgcHJlcHJvY2Vzc29yIHN5bWJvbHMuCglDbGVhbnVwIHRoZSBoZWxwIG1lc3NhZ2UgKG9yZGVyIHRoZSBsb25nIG9wdGlvbnMgYWxwaGFiZXRpY2FsbHkpLgoKCSogaW5jbHVkZS9tc3ZjcnQvZXJybm8uaDogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUZpeCBlcnJubyBsaW5rYWdlIHdoZW4gY29tcGlsaW5nIGluIEMrKy4KCgkqIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jLCBkbGxzL3dpbmluZXQvd2luaW5ldC5zcGVjOgoJQWxiZXJ0byBNYXNzYXJpIDxhbWFzc2FyaUBwcm9ncmVzcy5jb20+CglBZGRlZCBJbnRlcm5ldFNldFN0YXR1c0NhbGxiYWNrQSBhbmQgYSBzdHViIGZvcgoJSW50ZXJuZXRTZXRTdGF0dXNDYWxsYmFja1cuCgoJKiBhY2xvY2FsLm00LCBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9uZXRhcGkzMi9uZXRhcGkzMi5jLAoJICBkbGxzL3JwY3J0NC9ycGNydDRfbWFpbi5jLCBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGZpbGVzL2RyaXZlLmMsCgkgIGluY2x1ZGUvY29uZmlnLmguaW4sIGluY2x1ZGUvd2luZS9wb3J0LmgsIHNjaGVkdWxlci9jbGllbnQuYywKCSAgc2VydmVyL3JlcXVlc3QuYywgc2VydmVyL3NpZ25hbC5jOgoJUmVwbGFjZWQgV0lORV9DSEVDS19TVFJVQ1RfTUVNQkVSIGF1dG9jb25mIG1hY3JvIGJ5IHRoZSBzdGFuZGFyZAoJQUNfQ0hFQ0tfTUVNQkVSUy4gQWRkZWQgY2hlY2sgZm9yIHNpX2ZkIGluIHNpZ2luZm9fdC4KCgkqIGxpYnMvd2luZS9sb2FkZXIuYzogWW9yaWNrIEhhcmR5IDx5aEBtZXRyb3dlYi5jby56YT4KCXN0ZGludC5oIHNob3VsZCBiZSBpbmNsdWRlZCBmb3IgY29tcGlsaW5nIG9uIE5ldEJTRC4KCgkqIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYzogWW9yaWNrIEhhcmR5IDx5aEBtZXRyb3dlYi5jby56YT4KCUFkZGVkIGZpZWxkcyBmcm9tIE5ldEJTRCBzdHJ1Y3Qgc2lnY29udGV4dCBvbiBpMzg2LgoKCSogbWVtb3J5L2dsb2JhbC5jOiBZb3JpY2sgSGFyZHkgPHloQG1ldHJvd2ViLmNvLnphPgoJQWRkZWQgdGhlIHN5c2N0bCBjYWxscyBmb3IgTmV0QlNEIHRvIGRldGVybWluZSB0aGUgcGh5c2ljYWwgbWVtb3J5CglhdmFpbGFibGUuCgoJKiBsaWJzL3VuaWNvZGUvd2luZV91bmljb2RlLmRlZiwgbGlicy93aW5lL3dpbmUuZGVmOgoJU3RldmVuIEVkd2FyZHMgPHN0ZXZlbl9lZDQxNTNAeWFob28uY29tPgoJRml4ZWQgdGhlIC5kZWYgZmlsZXMgZm9yIHRoZSBNaW5ndyBidWlsZC4KCjIwMDMtMDMtMjcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB0b29scy93cHAvcHJlcHJvYy5jLCB0b29scy93cHAvd3BwLmMsIHRvb2xzL3dwcC93cHAuaCwKCSAgdG9vbHMvd3BwL3dwcF9wcml2YXRlLmg6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQWxsb3cgd3BwIHVzZXJzIHRvIHVuZGVmaW5lIHByZXZpb3VzbHkgZGVmaW5lZCBzeW1ib2xzLgoKCSogZGxscy9nZGkvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL01ha2VmaWxlLmluLAoJICBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW4sIGRsbHMvdXNlci9NYWtlZmlsZS5pbiwgdG9vbHMvd3JjL3dyYy5jLAoJICB0b29scy93cmMvd3JjLmgsIHRvb2xzL3dyYy93cmMubWFuOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVJlbW92ZSB1bnVzZWQgb3B0aW9ucyAtYSBhbmQgLUMuCglDb2xsYXBzZSB0aGUgLXcgaW50byAtTywgZm9yIHN5bW1ldHJ5IHdpdGggLUouCglVcGRhdGUgdGhlIG1hbiBwYWdlIHRvIHRoZSBsYXRlc3Qgb3B0aW9ucy4KCgkqIHRvb2xzL3dpbmVtYWtlcjogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCURvIG5vdCBwYXNzIHVubmVjZXNzYXJ5IGZsYWdzIHRvIHdyYyBpbiBnZW5lcmF0ZWQgbWFrZWZpbGVzLgoKCSogZGxscy9tc3ZjcnQvZGlyLmM6IFN5bHZhaW4gUGV0cmVvbGxlIDxzcGV0cmVvbGxlQHlhaG9vLmZyPgoJX3dzcGxpdHBhdGg6IERpc3BsYXkgY29ycmVjdGx5IHRoZSBwYXRoIGJlaW5nIHNwbGl0LgoKCSogZGxscy9zaGx3YXBpL29yZGluYWwuYywgZGxscy9zaGx3YXBpL29yZGluYWwuaCwKCSAgZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYzoKCVJvbGYgS2FsYmVybWF0dGVyIDxyb2xmLmthbGJlcm1hdHRlckBjaXRlbmcuY29tPgoJSW1wbGVtZW50ZWQgU0hMV0FQSV8yNjYgYW5kIFNITFdBUElfMjcxLgoKCSogb2JqZWN0cy9kYy5jOiBQLiBDaHJpc3RlYXMgPHBfY2hyaXN0QGhvbC5ncj4KCUZpeGVkIHR5cG8gaW4gU2V0R3JhcGhpY3NNb2RlLgoKCSogZGxscy9pbWFnZWhscC9pbWFnZWhscF9tYWluLmM6IFAuIENocmlzdGVhcyA8cF9jaHJpc3RAaG9sLmdyPgoJSW1wbGVtZW50ZWQgTWFrZVN1cmVEaXJlY3RvcnlQYXRoRXhpc3RzLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOiBNaWtlIEhlYXJuIDxtLmhlYXJuQHNpZ25hbC5xaW5ldGlxLmNvbT4KCVRyZWVWaWV3IHNob3VsZCBub3Qgc2VuZCB0d28gY2xpY2sgbm90aWZpY2F0aW9ucyB3aGVuIGJUcmFjayBpcyB0cnVlLgoKCSogZGxscy9zaGVsbDMyL3NobHZpZXcuYywgZGxscy9zaGVsbDMyL3NocG9saWN5LmM6CglSb2xmIEthbGJlcm1hdHRlciA8cm9sZi5rYWxiZXJtYXR0ZXJAY2l0ZW5nLmNvbT4KCUNvc21ldGljIGZpeGVzLgoKMjAwMy0wMy0yNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGVsbHN0cmluZy5jLAoJICBkbGxzL3NoZWxsMzIvdW5kb2NzaGVsbC5oOgoJUm9sZiBLYWxiZXJtYXR0ZXIgPHJvbGYua2FsYmVybWF0dGVyQGNpdGVuZy5jb20+CglJbXBsZW1lbnRlZCBDaGVja0VzY2FwZXNBL1cuCgoJKiBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwvY2hhbmdlLmMsCgkgIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sIGZpbGVzL2NoYW5nZS5jLAoJICBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsIHNlcnZlci9jaGFuZ2UuYywgc2VydmVyL2ZpbGUuYywKCSAgc2VydmVyL2ZpbGUuaCwgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3JlcXVlc3QuaCwKCSAgc2VydmVyL3NpZ25hbC5jLCBzZXJ2ZXIvdHJhY2UuYzoKCUltcGxlbWVudGVkIGZpbGUgY2hhbmdlIG5vdGlmaWNhdGlvbnMsIGJhc2VkIG9uIGEgcGF0Y2ggYnkgTWlrZQoJTWNDb3JtYWNrLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jOgoJTWF4aW1lIEJlbGxlbmfpIDxtYXhpbWUuYmVsbGVuZ2VAbGFwb3N0ZS5uZXQ+CglGaXggdGhlIGxvb2tpbiBjb21ib2JveCBvdmVybGFwcGluZyB0aGUgdG9vbGJhciBpbiBvcGVuL3NhdmUgZmlsZQoJZGlhbG9nLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOiBNaWtlIEhlYXJuIDxtLmhlYXJuQHNpZ25hbC5xaW5ldGlxLmNvbT4KCVRSRUVWSUVXX0dldEl0ZW1BIHNob3VsZCBpZ25vcmUgc3RhdGVNYXNrLgoKCSogZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3BpZGwuaCwgZGxscy9zaGVsbDMyL3NoZmxkcl9mcy5jOgoJUm9sZiBLYWxiZXJtYXR0ZXIgPHJvbGYua2FsYmVybWF0dGVyQGNpdGVuZy5jb20+CglBZGQgbmV3IGhlbHBlciBmdW5jdGlvbiB0byBjcmVhdGUgYSByZWxhdGl2ZSBmaWxlIG9yIGZvbGRlciBJdGVtSURMaXN0Cglmb3IgYSBwYXRoIGFuZCBjaGFuZ2UgdXNhZ2Ugb2YgU0hTaW1wbGVJRExpc3RGcm9tUGF0aCB0byBjYWxsIG5ldwoJZnVuY3Rpb24gaW5zdGVhZC4KCgkqIGluY2x1ZGUvdGhyZWFkLmgsIGxpYnMvd2luZS9lcnJuby5jLCBzY2hlZHVsZXIvc3lzZGVwcy5jLAoJICBzY2hlZHVsZXIvdGhyZWFkLmM6CglNb3ZlZCBlcnJub19sb2NhdGlvbiBzdXBwb3J0IHRvIHN5c2RlcHMuYy4KCgkqIHNlcnZlci9NYWtlZmlsZS5pbiwgc2VydmVyL2ZkLmMsIHNlcnZlci9tYWluLmMsIHNlcnZlci9vYmplY3QuaCwKCSAgc2VydmVyL3B0cmFjZS5jLCBzZXJ2ZXIvcmVxdWVzdC5jLCBzZXJ2ZXIvc2lnbmFsLmMsIHNlcnZlci90aHJlYWQuaDoKCUFkZGVkIGdlbmVyaWMgc2lnbmFsIGhhbmRsaW5nIG1lY2hhbmlzbSBiYXNlZCBvbiBwaXBlcyB0byBzeW5jaHJvbml6ZQoJc2lnbmFscyB3aXRoIHRoZSBtYWluIHBvbGwgbG9vcC4KCgkqIGluY2x1ZGUvbXN2Y3J0L2NvbmlvLmgsIGluY2x1ZGUvbXN2Y3J0L2lvLmgsCgkgIGluY2x1ZGUvbXN2Y3J0L3Byb2Nlc3MuaCwgaW5jbHVkZS9tc3ZjcnQvc3RkaW8uaDoKCVVzZSBhbGlhc2VzIGluc3RlYWQgb2YgI2RlZmluZXMgZm9yIHRoZSB2YXJhcmdzIGZ1bmN0aW9ucyB3aGVuIHVzaW5nCglnY2MuCgoJKiBpZjE2MzIvYnVpbHRpbi5jLCBpbmNsdWRlL21vZHVsZS5oLCByZWxheTMyL2J1aWx0aW4zMi5jLAoJICByZWxheTMyL3JlbGF5Mzg2LmMsIHJlbGF5MzIvc25vb3AuYzoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJLSBubyBsb25nZXIgdXNpbmcga2VybmVsMzIncyBBUElzIGJ1dCBudGRsbCdzCgktIEJVSUxUSU4zMl9kbG9wZW4gbm93IHByb3Blcmx5IHJldHVybnMgTlRETEwgc3R5bGUgc3RhdHVzIGNvZGVzCgoJKiB3aW5kb3dzL3N5c3BhcmFtcy5jOiBTdGVwaGFuIEJFVVpFIDxmYmlnZ3VuQGhvdG1haWwuY29tPgoJSW1wbGVtZW50ZWQgYSBkZWZhdWx0IGJlaGF2aW9yIGZvciBTUElfR0VUR1JBRElFTlRDQVBUSU9OUyBmbGFnIGluCglTeXN0ZW1QYXJhbWV0ZXJzSW5mb0EuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBkbGxzL2tlcm5lbC9sb2NhbGUuYywgaW5jbHVkZS93aW5ubHMuaDoKCU1heGltZSBCZWxsZW5n6SA8bWF4aW1lLmJlbGxlbmdlQGxhcG9zdGUubmV0PgoJU3R1YnMgZm9yIEVudW1TeXN0ZW1MYW5ndWFnZUdyb3Vwc3tBfFd9LgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOiBNaWtlIEhlYXJuIDxtLmhlYXJuQHNpZ25hbC5xaW5ldGlxLmNvbT4KCUNvcnJlY3QgdGhlIGNoZWNrIGZvciBjaGFuZ2VkIHRyZWV2aWV3IGl0ZW1zLCBzbyBpdGVtIHNldHMgcmVwYWludAoJcHJvcGVybHkuCgoyMDAzLTAzLTI1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jLCBzY2hlZHVsZXIvc3lzZGVwcy5jLAoJICB0b29scy93aW5lYnVpbGQvcmVsYXkuYzoKCVN0b3JlICVncyBpbiB0aGUgVEVCIG9uIGV2ZXJ5IGNhbGwgdG8gMTYtYml0IGNvZGUsIGFuZCBkb24ndCByZXN0b3JlCglpdCBmcm9tIHRoZSBURUIgZm9yIHNpZ25hbHMgdGhhdCBkaWQgbm90IGhhcHBlbiBpbiAxNi1iaXQgY29kZS4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYzoKCU1heGltZSBCZWxsZW5n6SA8bWF4aW1lLmJlbGxlbmdlQGxhcG9zdGUubmV0PgoJRml4IGhvdyB0aGUgc2l6ZSBvZiB0aGUgZGlhbG9nIGlzIGNvbXB1dGVkIGFuZCB0aGUgY2hpbGQgY29tcG9uZW50CglwbGFjZWQuCglJbiBjYXNlIHRoZSBoZWxwIGJ1dHRvbiBhbmQgdGhlIHJlYWRvbmx5IGNoZWNrIGJveCBhcmUgaGlkZGVuLCBwZXJmb3JtCgl0aGUgcmVzaXppbmcgYmVmb3JlIGNhbGxpbmcgdGhlIGhvb2sgcHJvY2VkdXJlLgoKCSogZGxscy9zaGVsbDMyL3NobGV4ZWMuYywgcHJvZ3JhbXMvd2NtZC9iYXRjaC5jLAoJICBwcm9ncmFtcy93Y21kL3djbWRtYWluLmM6CglTdGVmYW4gTGVpY2h0ZXIgPHNsZUBjYW1saW5lLmNvbT4KCUxldCB3Y21kIGhhbmRsZSAuY21kIGZpbGVzIGxpa2UgLmJhdCBmaWxlcy4KCgkqIG1pc2MvcmVnaXN0cnkuYzogRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglObyBsb25nZXIgdXNpbmcga2VybmVsMzIncyBBUElzIGJ1dCBudGRsbCdzLgoKCSogZmlsZXMvZGlyZWN0b3J5LmM6IEdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJQWRkIHRyYWlsaW5nIGZ1bGwtc3RvcCB0byB3YXJuaW5nIGluIERJUl9HZXRQYXRoKCkuCgoyMDAzLTAzLTI0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogdG9vbHMvd2luZWJ1aWxkL3NwZWMxNi5jOgoJQXZvaWQgcmVmZXJlbmNlIHRvIHdpbmVfZ2V0X2NzIGZ1bmN0aW9uIGZyb20gbGlid2luZS4KCgkqIGNvbnRyb2xzL3Njcm9sbC5jOgoJUmV2ZXJ0IGJyb2tlbiBjaGFuZ2UgdG8gdGhlIHNjcm9sbGJhciBwb3NpdGlvbiBhZGp1c3RtZW50IGNvZGUuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgbWlzY2VtdS9NYWtlZmlsZS5pbjoKCUlmIHN1cHBvcnRlZCwgcmVsb2NhdGUgdGhlIG1haW4gd2luZSBiaW5hcnkgdG8gYSBoaWdoZXIgYWRkcmVzcyB0bwoJbGVhdmUgbW9yZSBzcGFjZSBmb3IgdGhlIFdpbjMyIGV4ZWN1dGFibGUuCgoJKiBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmM6CglNYWtlIHN1cmUgY2hhbmdlcyB0byB0aGUgZGVidWcgcmVnaXN0ZXJzIHdoaWxlIGluc2lkZSBhIFNJR1RSQVAKCWV4Y2VwdGlvbiBhcmUgdGFrZW4gaW50byBhY2NvdW50IChiYXNlZCBvbiBhIHBhdGNoIGJ5IEFsZXggUGFzYWR5bikuCgoJKiB0b29scy93aW5laW5zdGFsbDogQnJpYW4gVmluY2VudCA8VmluY2VudEJAY29wcGVyY29sb3JhZG8uY29tPgoJUHJvbXB0IHRoZSB1c2VyIGFnYWluIGlmIHRoZXkgZG9uJ3QgZ2V0IHRoZSByb290IHBhc3N3b3JkIHJpZ2h0LgoKCSogdG9vbHMvd2luZWdjYy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRG9uJ3QgYXR0ZW1wdCB0byBjb21waWxlIC5yZXMgZmlsZXMuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglTZW5kIExWTl9PRENBQ0hFSElOVCBub3RpZmljYXRpb24gZm9yIExWU19PV05FUkRBVEEgc3R5bGUgaW4gYWxsIG1vZGVzCgkoYmFzZWQgb24gYSBwYXRjaCBieSBWaXRhbGl5IE1hcmdvbGVuKS4KCgkqIGRsbHMvaW1tMzIvaW1tLmM6IFRvbnkgTGFtYnJlZ3RzIDx0b255X2xhbWJyZWd0c0B0ZWx1c3BsYW5ldC5uZXQ+CglHZXQgcmlkIG9mIFctPkEgY2FsbHMuCgoJKiBvYmplY3RzL3RleHQuYzogU2hhY2hhciBTaGVtZXNoIDx3aW5lLXBhdGNoZXNAc2hlbWVzaC5iaXo+CglSZW9yZGVyaW5nIGNhbiB0YWtlIHBsYWNlIGV2ZW4gaWYgdGhlIGZvbnQgZG9lcyBub3QgaWRlbnRpZnkgaXRzZWxmIGFzCglhIHJlb3JkZXJpbmcgb25lLgoKMjAwMy0wMy0yMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBsaWJzL3BvcnQvbWtzdGVtcHMuYywKCSAgbGlicy9wb3J0L3VzbGVlcC5jLCBsaWJzL3VuaWNvZGUvTWFrZWZpbGUuaW46CglQb3J0YWJpbGl0eSBmaXhlcy4KCgkqIGRsbHMveDExZHJ2L2tleWJvYXJkLmMsIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmMsIGluY2x1ZGUveDExZHJ2Lmg6CglQcm9wZXJseSBpbml0aWFsaXplIGtleWJvYXJkIGF1dG8tcmVwZWF0IGZvciBhbGwgWCBjb25uZWN0aW9ucy4KCgkqIGluY2x1ZGUvcnBjcHJveHkuaDogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUNvbW1lbnQgb3V0IHVubmVlZGVkIGV4dGVuc2lvbnMuCgoJKiBkbGxzL3NoZWxsMzIvc2hwb2xpY3kuYzoKCVJvbGYgS2FsYmVybWF0dGVyIDxyb2xmLmthbGJlcm1hdHRlckBjaXRlbmcuY29tPgoJU0hJbml0UmVzdHJpY3RlZCgpIGZpeCBib29sZWFuIGVycm9yIGludHJvZHVjZWQgaW4gbGFzdCBwYXRjaC4KCgkqIGZpbGVzL3Byb2ZpbGUuYzogU3RlZmFuIExlaWNodGVyIDxzbGVAY2FtbGluZS5jb20+CglNb3ZlZCBpbXBsZW1lbnRhdGlvbiBvZiBHZXRQcml2YXRlUHJvZmlsZUludCBmcm9tIGFzY2lpIHRvIHVuaWNvZGUuCgoJKiBNYWtlLnJ1bGVzLmluLCBNYWtlZmlsZS5pbiwgZGxscy9NYWtlZGxsLnJ1bGVzLmluLAoJICBkbGxzL2F2aWZpbDMyL01ha2VmaWxlLmluLCBkbGxzL2NvbW1kbGcvTWFrZWZpbGUuaW4sCgkgIGRsbHMvY3RsM2QvTWFrZWZpbGUuaW4sIGRsbHMvZ2RpL01ha2VmaWxlLmluLCBkbGxzL2ltbTMyL01ha2VmaWxlLmluLAoJICBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwgZGxscy9semV4cGFuZC9NYWtlZmlsZS5pbiwKCSAgZGxscy9tc2FjbS9NYWtlZmlsZS5pbiwgZGxscy9tc3ZpZGVvL01ha2VmaWxlLmluLAoJICBkbGxzL29sZTMyL01ha2VmaWxlLmluLCBkbGxzL29sZWF1dDMyL01ha2VmaWxlLmluLAoJICBkbGxzL29sZWNsaS9NYWtlZmlsZS5pbiwgZGxscy9vbGVzdnIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvcmFzYXBpMzIvTWFrZWZpbGUuaW4sIGRsbHMvc2V0dXBhcGkvTWFrZWZpbGUuaW4sCgkgIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwgZGxscy91c2VyL01ha2VmaWxlLmluLAoJICBkbGxzL3ZlcnNpb24vTWFrZWZpbGUuaW4sIGRsbHMvd2luMzJzL01ha2VmaWxlLmluLAoJICBkbGxzL3dpbmFzcGkvTWFrZWZpbGUuaW4sIGRsbHMvd2luZXBzL01ha2VmaWxlLmluLAoJICBkbGxzL3dpbm1tL01ha2VmaWxlLmluLCBkbGxzL3dpbm5scy9NYWtlZmlsZS5pbiwKCSAgZGxscy93aW5zb2NrL01ha2VmaWxlLmluLCBkbGxzL3dpbnRhYjMyL01ha2VmaWxlLmluLAoJICBtaXNjZW11L01ha2VmaWxlLmluOgoJTGlzdCAxNi1iaXQgc3BlYyBmaWxlcyBleHBsaWNpdGx5IHRvIGF2b2lkIHByb2JsZW1zIHdpdGggc29tZSB2ZXJzaW9ucwoJb2YgbWFrZS4KCgkqIE1ha2UucnVsZXMuaW4sIGRsbHMvTWFrZWRsbC5ydWxlcy5pbiwgZGxscy9NYWtldGVzdC5ydWxlcy5pbiwKCSAgZGxscy9nZGkvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL01ha2VmaWxlLmluLAoJICBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW4sIGRsbHMvdXNlci9NYWtlZmlsZS5pbiwgbWlzY2VtdS9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvTWFrZXByb2cucnVsZXMuaW4sIHByb2dyYW1zL2F2aXRvb2xzL01ha2VmaWxlLmluLAoJICB0b29scy93aW5lYnVpbGQvYnVpbGQuaCwgdG9vbHMvd2luZWJ1aWxkL21haW4uYywKCSAgdG9vbHMvd2luZWJ1aWxkL3NwZWMxNi5jLCB0b29scy93aW5lYnVpbGQvc3BlYzMyLmMsCgkgIHRvb2xzL3dpbmVidWlsZC93aW5lYnVpbGQubWFuLmluOgoJQ29udmVydGVkIHdpbmVidWlsZCBvcHRpb24gcGFyc2luZyB0byB1c2UgZ2V0b3B0X2xvbmcuIEFkZGVkIGEgbnVtYmVyCglvZiBsb25nIGFsaWFzZXMgZm9yIHRoZSBleGlzdGluZyBzaG9ydCBvcHRpb25zLgoKCSogbGlicy93aW5lL01ha2VmaWxlLmluLCBsaWJzL3dpbmUvd2luZS5kZWY6CglBZGRlZCBhIC5kZWYgZmlsZSBmb3IgbGlid2luZS4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBpbmNsdWRlL2NvbmZpZy5oLmluLAoJICB0b29scy93aW5lYnVpbGQvc3BlYzMyLmM6CglDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglNYWtlIHVzZSBvZiAuaGFsZiBhbmQvb3IgLmFzY2lpeiBhc3NlbWJsZXIga2V5d29yZHMgd2hlbiBuZWNlc3NhcnkuCgoyMDAzLTAzLTIyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS9tc3ZjcnQvY29uaW8uaCwgaW5jbHVkZS9tc3ZjcnQvY3R5cGUuaCwKCSAgaW5jbHVkZS9tc3ZjcnQvZGlyZWN0LmgsIGluY2x1ZGUvbXN2Y3J0L21hbGxvYy5oLAoJICBpbmNsdWRlL21zdmNydC9wcm9jZXNzLmgsIGluY2x1ZGUvbXN2Y3J0L3NlYXJjaC5oLAoJICBpbmNsdWRlL21zdmNydC9zdGRpby5oLCBpbmNsdWRlL21zdmNydC9zdGRsaWIuaCwKCSAgaW5jbHVkZS9tc3ZjcnQvc3RyaW5nLmg6CglNYWRodXJhIFNhaGFzcmFidWRoZSA8c2FoYXNyYWJAdXNjLmVkdT4KCUNoYW5nZWQgdGhlIG1hY3JvcyBpbiB0aGUgbXN2Y3J0IGhlYWRlcnMgdG8gc3RhdGljIGlubGluZSBmdW5jdGlvbnMuCgoJKiBkbGxzL3dpbmVkb3MvaW50MzEuYywgaW5jbHVkZS9taXNjZW11Lmg6CglDaGFuZ2VkIHRoZSBTRVRfQVggZXRjLiBtYWNyb3MgdG8gbm90IHJldHVybiBhIHZhbHVlLgoKCSogbXNkb3MvaW50MjEuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJRml4IHR3byBjb21wYXJpc29ucyBiZXR3ZWVuIGEgMzIgYml0IHJlZ2lzdGVyIHdpdGggYSAxNiBiaXQgZXJyb3IKCWNvZGUuCgoJKiBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsIHNjaGVkdWxlci9jbGllbnQuYywKCSAgc2NoZWR1bGVyL3N5c2RlcHMuYywgc2VydmVyL2NvbnRleHRfaTM4Ni5jLCBzZXJ2ZXIvY29udGV4dF9wb3dlcnBjLmMsCgkgIHNlcnZlci9jb250ZXh0X3NwYXJjLmMsIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci9wdHJhY2UuYywKCSAgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdGhyZWFkLmgsIHNlcnZlci90cmFjZS5jOgoJTWFrZSBhIGRpc3RpbmN0aW9uIGJldHdlZW4gdGhlIHRocmVhZCBVbml4IHBpZCBhbmQgdGhlIHByb2Nlc3Mgd2lkZQoJcGlkIGZvciBwbGF0Zm9ybXMgdGhhdCB1c2UgYm90aC4KCgkqIGRsbHMvbnRkbGwvbG9hZGVyLmM6CglGaXhlZCBkdXBsaWNhdGUgaW5pdGlhbGl6YXRpb24gb2Ygc29tZSBvZiB0aGUgd20tPmxkciBmaWVsZHMuCgoJKiBNYWtlLnJ1bGVzLmluLCBNYWtlZmlsZS5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuYWMsCgkgIGRsbHMvTWFrZWRsbC5ydWxlcy5pbiwgZGxscy9jaGVja2xpbmsuYywgbGlicy9NYWtlZmlsZS5pbiwKCSAgbGlicy91bmljb2RlL01ha2VmaWxlLmluLCBsaWJzL3V1aWQvTWFrZWZpbGUuaW4sCgkgIGxpYnMvd2luZS8uY3ZzaWdub3JlLCBsaWJzL3dpbmUvTWFrZWZpbGUuaW4sIGxpYnMvd2luZS9jb25maWcuYywKCSAgbGlicy93aW5lL2RlYnVnLmMsIGxpYnMvd2luZS9lcnJuby5jLCBsaWJzL3dpbmUvbGR0LmMsCgkgIGxpYnMvd2luZS9sb2FkZXIuYywgdG9vbHMvd2luZXdyYXBwZXI6CglNb3ZlZCBsaWJ3aW5lIHRvIGxpYnMvIGRpcmVjdG9yeS4KCVNvbWUgbWFrZWZpbGUgZml4ZXMgYW5kIGNsZWFudXBzLgoKCSogZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL2xjZm9ybWF0LmMsIG9sZS9vbGUybmxzLmM6CglNb3ZlZCBkYXRlL3RpbWUvY3VycmVuY3kgZm9ybWF0IGhhbmRsaW5nIHRvIG5ldyBsY2Zvcm1hdC5jLgoKCSogZGxscy9udGRsbC90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL250ZGxsL3Rlc3RzL01ha2VmaWxlLmluLAoJICBkbGxzL250ZGxsL3Rlc3RzL3J0bC5jLCBkbGxzL250ZGxsL3Rlc3RzL3J0bHN0ci5jOgoJVGhvbWFzIE1lcnRlcyA8dGhvbWFzLm1lcnRlc0BnbXguYXQ+CglUZXN0cyBmb3IgUnRsQ29tcGFyZU1lbW9yeVVsb25nLCBSdGxVbmlmb3JtLCBSdGxEb3duY2FzZVVuaWNvZGVTdHJpbmcsCglSdGxBcHBlbmRVbmljb2RlU3RyaW5nVG9TdHJpbmcuCgoJKiBkbGxzL250ZGxsL2xhcmdlX2ludC5jLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvbnRkbGwvcnRsLmMsCgkgIGRsbHMvbnRkbGwvcnRsc3RyLmMsIGRsbHMvbnRkbGwvc3RyaW5nLmMsIGRsbHMvbnRkbGwvd2NzdHJpbmcuYywKCSAgaW5jbHVkZS93aW50ZXJubC5oOgoJVGhvbWFzIE1lcnRlcyA8dGhvbWFzLm1lcnRlc0BnbXguYXQ+CgktIEltcGxlbWVudCBSdGxEb3duY2FzZVVuaWNvZGVTdHJpbmcsIFJ0bFVuaWZvcm0sIGlzd2RpZ2l0LCBpc3dsb3dlciwKCSAgaXN3c3BhY2UsIGlzd3hkaWdpdC4KCS0gRml4ZWQgUnRsSW50NjRUb1VuaWNvZGVTdHJpbmcgYW5kIFJ0bEludGVnZXJUb1VuaWNvZGVTdHJpbmcuCgktIEFjY29yZGluZyB0byB0ZXN0cyBSdGxBcHBlbmRVbmljb2RlU3RyaW5nVG9TdHJpbmcgbGVhdmVzIHRoZQoJICBkZXN0aW5hdGlvbiB1bmNoYW5nZWQgd2hlbiB0aGUgc291cmNlIGxlbmd0aCBpcyAwIChGSVhFRCkuCgktIERvY3VtZW50YXRpb24gdXBkYXRlcyBpbiBSdGxFeHRlbmRlZE1hZ2ljRGl2aWRlLAoJICBSdGxMYXJnZUludGVnZXJUb0NoYXIsIFJ0bEludDY0VG9Vbmljb2RlU3RyaW5nLCBSdGxVcHBlckNoYXIsCgkgIFJ0bFVwcGVyU3RyaW5nLCBSdGxVcGNhc2VVbmljb2RlQ2hhciwgUnRsQ2hhclRvSW50ZWdlciwKCSAgUnRsSW50ZWdlclRvQ2hhciwgUnRsVW5pY29kZVN0cmluZ1RvSW50ZWdlciwKCSAgUnRsSW50ZWdlclRvVW5pY29kZVN0cmluZywgX3VsdG9hLCBfbHRvYSwgX2l0b2EsIF91aTY0dG9hLCBfaTY0dG9hLAoJICBfYXRvaTY0LCBfdWx0b3csIF9sdG93LCBfaXRvdywgX3VpNjR0b3csIF9pNjR0b3csIF93dG9sLCBfd3RvaSwKCSAgX3d0b2k2NC4KCjIwMDMtMDMtMjEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jLCBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmMsCgkgIGRsbHMvbnRkbGwvc2lnbmFsX3Bvd2VycGMuYywgZGxscy9udGRsbC9zaWduYWxfc3BhcmMuYywKCSAgaW5jbHVkZS90aHJlYWQuaCwgc2NoZWR1bGVyL3N5c2RlcHMuYzoKCVNwbGl0IHNpZ25hbCBibG9ja2luZyBjb2RlIG91dCBvZiBTSUdOQUxfUmVzZXQgaW50byBTSUdOQUxfQmxvY2suCglBZGRlZCBTSUdURVJNIGhhbmRsZXIuCgoJKiBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW4sIGRsbHMvc2hlbGwzMi9zaGVsbC5jOgoJU3RldmVuIEVkd2FyZHMgPFN0ZXZlbl9FZDQxNTNAeWFob28uY29tPgoJc2hlbGwuYyBpcyBub3cgMTYtYml0IG9ubHkuCgoJKiBzZXJ2ZXIvZmQuYzoKCUlnbm9yZSBmY250bCBmYWlsdXJlIHdoZW4gc2V0dGluZyBhIHdyaXRlIGxvY2sgb24gYSByZWFkIG9ubHkgZmlsZS4KCgkqIGRsbHMvbnRkbGwvcnRsc3RyLmMsIGluY2x1ZGUvd2luZS91bmljb2RlLmgsIGxpYnMvdW5pY29kZS9jYXNlbWFwLmMsCgkgIGxpYnMvdW5pY29kZS9jcG1hcC5wbCwgbGlicy91bmljb2RlL2NwdGFibGUuYywgbGlicy91bmljb2RlL21idG93Yy5jLAoJICBsaWJzL3VuaWNvZGUvdXRmOC5jLCBsaWJzL3VuaWNvZGUvd2N0b21iLmMsIGxpYnMvdW5pY29kZS93Y3R5cGUuYywKCSAgbGlicy91bmljb2RlL3dpbmVfdW5pY29kZS5kZWYsIG1lbW9yeS9jb2RlcGFnZS5jLCB0b29scy93bWMvbGFuZy5jLAoJICB0b29scy93bWMvbWNsLmMsIHRvb2xzL3dtYy93cml0ZS5jLCB0b29scy93cmMvcGFyc2VyLmwsCgkgIHRvb2xzL3dyYy91dGlscy5jOgoJQWRkZWQgJ3dpbmUnIHByZWZpeCB0byBsaWJ3aW5lX3VuaWNvZGUgZXhwb3J0cy4KCgkqIGRsbHMvbnRkbGwvbG9hZGVyLmMsIGRsbHMvbnRkbGwvbnRkbGxfbWlzYy5oLCBpbmNsdWRlL21vZHVsZS5oLAoJICBsb2FkZXIvcGVfaW1hZ2UuYzoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJUmVtb3ZlZCBubyBsb25nZXIgbmVlZGVkIE1PRFJFRi5maW5kX2V4cG9ydCBmaWVsZC4KCgkqIGRsbHMvc2hlbGwzMi9zaHBvbGljeS5jLCBkbGxzL3NoZWxsMzIvdW5kb2NzaGVsbC5oOgoJUm9sZiBLYWxiZXJtYXR0ZXIgPHJvbGYua2FsYmVybWF0dGVyQGNpdGVuZy5jb20+CgktIEFkZCBuZXcgVzJLIHBvbGljaWVzIHRvIHRoZSBrbm93biBsaXN0IG9mIHBvbGljaWVzLgoJLSBNb2RpZnkgdGhlIGFsZ29yaXRobWUgdG8gZ28gdGhyb3VnaCB0aGUgbGlzdCB1bnRpbCBhIE5VTEwgZW50cnkgaXMKCSAgZm91bmQgaW5zdGVhZCBvZiBoYXJkY29kaW5nIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgKEkgd2FzIHRvIGxhenkgdG8KCSAgY291bnQgdGhlbSBhZ2FpbiA7LSkKCS0gRml4IFNISW5pdFJlc3RyaWN0ZWQgdG8gd29yayBhcyBVbmljb2RlIG9uIE5UIHN5c3RlbXMuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLCBkbGxzL3NoZWxsMzIvc2hsZmlsZW9wLmM6CglSb2xmIEthbGJlcm1hdHRlciA8cm9sZi5rYWxiZXJtYXR0ZXJAY2l0ZW5nLmNvbT4KCUltcGxlbWVudCBzb21lIG1vcmUgV2luIEFQSSBmdW5jdGlvbnMgYW5kIGFkZCBzdXBwb3J0IGZ1bmN0aW9ucyBmb3IKCWNvbWluZyBjaGFuZ2VzIHRvIFNIRmlsZU9wZXJhdGlvbi4KCgkqIE1ha2UucnVsZXMuaW4sIE1ha2VmaWxlLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywKCSAgZGxscy9NYWtlZGxsLnJ1bGVzLmluLCBsaWJzL01ha2VmaWxlLmluLCBsaWJzL3VuaWNvZGUvLmN2c2lnbm9yZSwKCSAgbGlicy91bmljb2RlL01ha2VmaWxlLmluLCBsaWJzL3VuaWNvZGUvY18wMzcuYywgbGlicy91bmljb2RlL2NfMDQyLmMsCgkgIGxpYnMvdW5pY29kZS9jXzEwMDAwLmMsIGxpYnMvdW5pY29kZS9jXzEwMDA2LmMsCgkgIGxpYnMvdW5pY29kZS9jXzEwMDA3LmMsIGxpYnMvdW5pY29kZS9jXzEwMDI5LmMsCgkgIGxpYnMvdW5pY29kZS9jXzEwMDYuYywgbGlicy91bmljb2RlL2NfMTAwNzkuYywKCSAgbGlicy91bmljb2RlL2NfMTAwODEuYywgbGlicy91bmljb2RlL2NfMTAyNi5jLCBsaWJzL3VuaWNvZGUvY18xMjUwLmMsCgkgIGxpYnMvdW5pY29kZS9jXzEyNTEuYywgbGlicy91bmljb2RlL2NfMTI1Mi5jLCBsaWJzL3VuaWNvZGUvY18xMjUzLmMsCgkgIGxpYnMvdW5pY29kZS9jXzEyNTQuYywgbGlicy91bmljb2RlL2NfMTI1NS5jLCBsaWJzL3VuaWNvZGUvY18xMjU2LmMsCgkgIGxpYnMvdW5pY29kZS9jXzEyNTcuYywgbGlicy91bmljb2RlL2NfMTI1OC5jLCBsaWJzL3VuaWNvZGUvY18yMDg2Ni5jLAoJICBsaWJzL3VuaWNvZGUvY18yMDkzMi5jLCBsaWJzL3VuaWNvZGUvY18yODU5MS5jLAoJICBsaWJzL3VuaWNvZGUvY18yODU5Mi5jLCBsaWJzL3VuaWNvZGUvY18yODU5My5jLAoJICBsaWJzL3VuaWNvZGUvY18yODU5NC5jLCBsaWJzL3VuaWNvZGUvY18yODU5NS5jLAoJICBsaWJzL3VuaWNvZGUvY18yODU5Ni5jLCBsaWJzL3VuaWNvZGUvY18yODU5Ny5jLAoJICBsaWJzL3VuaWNvZGUvY18yODU5OC5jLCBsaWJzL3VuaWNvZGUvY18yODU5OS5jLAoJICBsaWJzL3VuaWNvZGUvY18yODYwMC5jLCBsaWJzL3VuaWNvZGUvY18yODYwMy5jLAoJICBsaWJzL3VuaWNvZGUvY18yODYwNC5jLCBsaWJzL3VuaWNvZGUvY18yODYwNS5jLAoJICBsaWJzL3VuaWNvZGUvY18yODYwNi5jLCBsaWJzL3VuaWNvZGUvY180MjQuYywgbGlicy91bmljb2RlL2NfNDM3LmMsCgkgIGxpYnMvdW5pY29kZS9jXzUwMC5jLCBsaWJzL3VuaWNvZGUvY183MzcuYywgbGlicy91bmljb2RlL2NfNzc1LmMsCgkgIGxpYnMvdW5pY29kZS9jXzg1MC5jLCBsaWJzL3VuaWNvZGUvY184NTIuYywgbGlicy91bmljb2RlL2NfODU1LmMsCgkgIGxpYnMvdW5pY29kZS9jXzg1Ni5jLCBsaWJzL3VuaWNvZGUvY184NTcuYywgbGlicy91bmljb2RlL2NfODYwLmMsCgkgIGxpYnMvdW5pY29kZS9jXzg2MS5jLCBsaWJzL3VuaWNvZGUvY184NjIuYywgbGlicy91bmljb2RlL2NfODYzLmMsCgkgIGxpYnMvdW5pY29kZS9jXzg2NC5jLCBsaWJzL3VuaWNvZGUvY184NjUuYywgbGlicy91bmljb2RlL2NfODY2LmMsCgkgIGxpYnMvdW5pY29kZS9jXzg2OS5jLCBsaWJzL3VuaWNvZGUvY184NzQuYywgbGlicy91bmljb2RlL2NfODc1LmMsCgkgIGxpYnMvdW5pY29kZS9jXzg3OC5jLCBsaWJzL3VuaWNvZGUvY185MzIuYywgbGlicy91bmljb2RlL2NfOTM2LmMsCgkgIGxpYnMvdW5pY29kZS9jXzk0OS5jLCBsaWJzL3VuaWNvZGUvY185NTAuYywgbGlicy91bmljb2RlL2Nhc2VtYXAuYywKCSAgbGlicy91bmljb2RlL2NvbXBvc2UuYywgbGlicy91bmljb2RlL2NwbWFwLnBsLAoJICBsaWJzL3VuaWNvZGUvY3B0YWJsZS5jLCBsaWJzL3VuaWNvZGUvZGVmYXVsdHMsIGxpYnMvdW5pY29kZS9tYnRvd2MuYywKCSAgbGlicy91bmljb2RlL3N0cmluZy5jLCBsaWJzL3VuaWNvZGUvdXRmOC5jLCBsaWJzL3VuaWNvZGUvd2N0b21iLmMsCgkgIGxpYnMvdW5pY29kZS93Y3R5cGUuYywgbGlicy91bmljb2RlL3dpbmVfdW5pY29kZS5kZWYsCgkgIHRvb2xzL3dpbmV3cmFwcGVyOgoJTW92ZWQgbGlid2luZV91bmljb2RlIHRvIHRoZSBsaWJzLyBkaXJlY3RvcnkuCgoJKiBsb2FkZXIvcGVfaW1hZ2UuYzogRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglSZXdyb3RlIG1hcHBpbmcgb2YgbW9kdWxlIGludG8gbWVtb3J5IHVzaW5nIG9ubHkgTlRETEwgQVBJcy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL01ha2VmaWxlLmluLCB3aW5lZGVmYXVsdC5yZWcsCgkgIGRsbHMvZG11c2ljLy5jdnNpZ25vcmUsIGRsbHMvZG11c2ljL01ha2VmaWxlLmluLAoJICBkbGxzL2RtdXNpYy9kbXVzaWMuYywgZGxscy9kbXVzaWMvZG11c2ljLnNwZWMsIGRsbHMvZG11c2ljL2RtdXNpYzguYywKCSAgZGxscy9kbXVzaWMvZG11c2ljX2J1ZmZlci5jLCBkbGxzL2RtdXNpYy9kbXVzaWNfY29sbGVjdGlvbi5jLAoJICBkbGxzL2RtdXNpYy9kbXVzaWNfZGxpbnN0cnVtZW50LmMsIGRsbHMvZG11c2ljL2RtdXNpY19kb3dubG9hZC5jLAoJICBkbGxzL2RtdXNpYy9kbXVzaWNfaW5zdHJ1bWVudC5jLCBkbGxzL2RtdXNpYy9kbXVzaWNfbWFpbi5jLAoJICBkbGxzL2RtdXNpYy9kbXVzaWNfcG9ydC5jLCBkbGxzL2RtdXNpYy9kbXVzaWNfcG9ydGRsLmMsCgkgIGRsbHMvZG11c2ljL2RtdXNpY19wcml2YXRlLmgsIGRsbHMvZG11c2ljL2RtdXNpY190aHJ1LmMsCgkgIGRsbHMvZG11c2ljL3JlZmVyZW5jZV9jbG9jay5jLCBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL2RsczEuaCwKCSAgaW5jbHVkZS9kbWRscy5oLCBpbmNsdWRlL2RtZXJyb3IuaCwgaW5jbHVkZS9kbXVzYnVmZi5oLAoJICBpbmNsdWRlL2RtdXNpY2MuaCwgbGlicy91dWlkL2R4Z3VpZC5jOgoJUm9rIE1hbmRlbGpjIDxyb2ttYW5kZWxqY0Bob3RtYWlsLmNvbT4KCVN0dWIgaW1wbGVtZW50YXRpb24gb2YgdGhlIGRtdXNpYyBkbGwuCgoJKiBkbGxzL250ZGxsL2xvYWRlci5jLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGluY2x1ZGUvd2ludGVybmwuaCwKCSAgbWlzYy92ZXJzaW9uLmM6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCS0gaW1wbGVtZW50ZWQgTGRyUXVlcnlQcm9jZXNzTW9kdWxlSW5mb3JtYXRpb24KCS0gcmV3cm90ZSBWRVJTSU9OX0dldExpbmtlZERsbFZlcnNpb24oKSB3aXRoIHRoaXMgbmV3IGZ1bmN0aW9uIGluc3RlYWQKCSAgb2YgYWNjZXNzaW5nIGRpcmVjdGx5IHRoZSBtb2RyZWYgbGlzdAoKCSogc2NoZWR1bGVyL3B0aHJlYWQuYzogR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglGb3J3YXJkLWRlY2xhcmUgc3RydWN0IF9wdGhyZWFkX2NsZWFudXBfYnVmZmVyLCBhcyBpdCBpcwoJTGludXgtc3BlY2lmaWMgYW5kIG5vdCBhdmFpbGFibGUgaW4gdGhlIGhlYWRlcnMgb2Ygb3RoZXIgc3lzdGVtcy4KCjIwMDMtMDMtMjAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9tc3ZjcnQvbWF0aC5jLCBkbGxzL21zdmNydC9tc3ZjcnQuaCwKCSAgZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWMsIGluY2x1ZGUvY29uZmlnLmguaW46CglNb3ZlZCBbZWZnXWN2dCBmdW5jdGlvbnMgdG8gbXN2Y3J0IGFuZCBmaXhlZCB0aGVtIHRvIHVzZSBhIHBlci10aHJlYWQKCWJ1ZmZlci4KCgkqIGluY2x1ZGUvd2luZS9wb3J0LmgsIGxpYnMvcG9ydC9NYWtlZmlsZS5pbiwKCSAgbGlicy9wb3J0L21lbWNweV91bmFsaWduZWQuYywgbG9hZGVyL25lL3Jlc291cmNlLmM6CglBZGRlZCBtZW1jcHlfdW5hbGlnbmVkIHRvIGxpYndpbmVfcG9ydC4KCgkqIGRsbHMva2VybmVsL2xvY2FsZS5jLCBvbGUvb2xlMm5scy5jOgoJTW92ZWQgYSBjb3VwbGUgb2YgbG9jYWxlIGZ1bmN0aW9ucyBmcm9tIG9sZTJubHMuYyBpbnRvIGxvY2FsZS5jLgoKCSogaW5jbHVkZS93aW5lL3VuaWNvZGUuaDogQWRkZWQgc3ByaW50ZlcgYW5kIHZzcHJpbnRmVy4KCgkqIGRsbHMvbnRkbGwvbG9hZGVyLmMsIGluY2x1ZGUvbW9kdWxlLmgsIGluY2x1ZGUvd2ludGVybmwuaCwKCSAgbG9hZGVyL3BlX2ltYWdlLmMsIG1pc2MvdmVyc2lvbi5jLCByZWxheTMyL3JlbGF5Mzg2LmM6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCU1vdmVkIFdJTkVfTU9EUkVGLmZsYWdzIHRvIFdJTkVfTU9EUkVGLmxkci5GbGFncywgYW5kIG1ha2UgdXNlIG9mIHRoZQoJc2FtZSBmbGFncyB2YWx1ZXMgYXMgV2luMjAwMC4KCgkqIGluY2x1ZGUvd2luZS9wb3J0LmgsIGxpYnMvcG9ydC9NYWtlZmlsZS5pbiwgbGlicy9wb3J0L2ludGVybG9ja2VkLmM6CglNb3ZlZCBpbnRlcmxvY2tlZCBmdW5jdGlvbnMgdG8gbGlid2luZV9wb3J0LgoKCSogZGxscy9udGRsbC9sb2FkZXIuYywgaW5jbHVkZS9tb2R1bGUuaCwgbG9hZGVyL3BlX2ltYWdlLmMsCgkgIG1pc2MvdmVyc2lvbi5jLCByZWxheTMyL2J1aWx0aW4zMi5jLCByZWxheTMyL3JlbGF5Mzg2LmMsCgkgIHNjaGVkdWxlci9wcm9jZXNzLmM6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCU1vdmUgc29tZSBmaWVsZHMgKHJlZkNvdW50LCB0bHNfaW5kZXggYW5kIG1vZHVsZSkgZnJvbSBXSU5FX01PRFJFRiB0bwoJTERSX01PRFVMRS4KCgkqIGRsbHMvbnRkbGwvY2Ryb20uYzogRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglGaXhlZCBzb21lIHVubmVlZGVkIHVuaXggdG8gV2luMzIgZXJyb3IgbWFwcGluZy4KCgkqIHRvb2xzL3dpbmVnY2MuYzogUmVwbGFjZWQgdGVtcG5hbSBieSBta3N0ZW1wcy4KCgkqIHRvb2xzL01ha2VmaWxlLmluLCB0b29scy9tYWtlZGVwLmM6CglEb24ndCB1c2UgbGlid2luZV9wb3J0IGluIG1ha2VkZXAgdG8gYXZvaWQgZGVwZW5kZW5jeSBwcm9ibGVtcy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmMsCgkgIGRsbHMvd3NvY2szMi9wcm90b2NvbC5jLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBpbmNsdWRlL3dpbmUvcG9ydC5oLAoJICBsaWJzL3BvcnQvTWFrZWZpbGUuaW4sIGxpYnMvcG9ydC9ta3N0ZW1wLmMsIGxpYnMvcG9ydC9ta3N0ZW1wcy5jLAoJICBwcm9ncmFtcy93aW5lZGJnL2dkYnByb3h5LmMsIHNjaGVkdWxlci9zeXNkZXBzLmMsIHNlcnZlci9maWxlLmMsCgkgIHRvb2xzL3dpbmVidWlsZC9pbXBvcnQuYywgdG9vbHMvd3BwL3dwcC5jOgoJUmVwbGFjZWQgbWtzdGVtcCBieSBta3N0ZW1wcyBmcm9tIGxpYmliZXJ0eS4KCVJlbW92ZWQgYSBjb3VwbGUgb2YgdW5uZWNlc3NhcnkgcG9ydGFiaWxpdHkgZnVuY3Rpb25zLgoKCSogZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL250ZGxsL3J0bC5jOgoJQ2hhbmdlZCBuYW1lIG9mIHRoZSBhc20gdmVyc2lvbiBvZiBSdGxVbG9uZy9zaG9ydEJ5dGVTd2FwIHRvIGF2b2lkCgljb25mbGljdHMgd2l0aCB0aGUgaW5saW5lIHZlcnNpb24uCgoJKiB0b29scy93cmMvd3JjLmMsIHRvb2xzL3dyYy93cmMubWFuOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUludHJvZHVjZSB0aGUgLUosIC0taW5wdXQtZm9ybWF0IG9wdGlvbnMgZm9yIGNvbXBhdGliaWxpdHkgd2l0aAoJd2luZHJlcy4KCUNvbGxwYXNlIHRoZSAtZSBvcHRpb24gaW50byB0aGUgLUogb3B0aW9uLiBVcGRhdGUgbWFuIHBhZ2UuCglDbGVhbnVwIGZpbGUgaGVhZGVyIChyZW1vdmUgaGlzdG9yeSB0aGF0J3MgYWxyZWFkeSBpbiBsb2cgbXNncywgZXRjLikKCgkqIGRvY3VtZW50YXRpb24vaW50cm9kdWN0aW9uLnNnbWw6CglUb255IExhbWJyZWd0cyA8dG9ueV9sYW1icmVndHNAdGVsdXNwbGFuZXQubmV0PgoJUmVtb3ZlIGluY29ycmVjdCBlbnRyeSBmb3IgMTYgYml0IGRyaXZlciBzdXBwb3J0LgoKCSogZmlsZXMvcHJvZmlsZS5jOiBHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCVR3ZWFrIGVycm9yIG1lc3NhZ2UgaW4gUFJPRklMRV9Vc2FnZVdpbmVJbmkoKS4KCgkqIGRsbHMvbnRkbGwvbG9hZGVyLmMsIGluY2x1ZGUvbW9kdWxlLmgsIGxvYWRlci9tb2R1bGUuYzoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJTW92ZWQgdGhlIG1vZHVsZSBsb2FkaW5nL3VubG9hZGluZyBjb2RlIGFuZCB0aGUgcmVtYWluaW5nIG5lZWRlZAoJc3RhdGljIHZhcmlhYmxlcyB0byBudGRsbC4KCgkqIGRsbHMvbnRkbGwvbG9hZGVyLmMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgaW5jbHVkZS93aW50ZXJubC5oLAoJICBsb2FkZXIvbW9kdWxlLmM6CglQYXJ0aWFsbHkgaW1wbGVtZW50ZWQgTGRyTG9jay9VbmxvY2tMb2FkZXJMb2NrLgoKCSogZGxscy9hZHZhcGkzMi9hZHZhcGkzMi5zcGVjLCBkbGxzL2F2aWNhcDMyL2F2aWNhcDMyLnNwZWMsCgkgIGRsbHMvYXZpZmlsMzIvYXZpZmlsMzIuc3BlYywgZGxscy9jYWJpbmV0L2NhYmluZXQuc3BlYywKCSAgZGxscy9jb21jdGwzMi9jb21jdGwzMi5zcGVjLCBkbGxzL2NvbW1kbGcvY29tZGxnMzIuc3BlYywKCSAgZGxscy9jcnRkbGwvY3J0ZGxsLnNwZWMsIGRsbHMvY3J5cHQzMi9jcnlwdDMyLnNwZWMsCgkgIGRsbHMvY3RsM2QvY3RsM2QzMi5zcGVjLCBkbGxzL2QzZDgvZDNkOC5zcGVjLCBkbGxzL2QzZHg4L2QzZHg4LnNwZWMsCgkgIGRsbHMvZGNpbWFuMzIvZGNpbWFuMzIuc3BlYywgZGxscy9kZHJhdy9kZHJhdy5zcGVjLAoJICBkbGxzL2RpbnB1dC9kaW5wdXQuc3BlYywgZGxscy9kaW5wdXQ4L2RpbnB1dDguc3BlYywKCSAgZGxscy9kcGxheXgvZHBsYXl4LnNwZWMsIGRsbHMvZHNvdW5kL2Rzb3VuZC5zcGVjLAoJICBkbGxzL2dkaS9nZGkzMi5zcGVjLCBkbGxzL2ljbXAvaWNtcC5zcGVjLAoJICBkbGxzL2ltYWdlaGxwL2ltYWdlaGxwLnNwZWMsIGRsbHMvaW1tMzIvaW1tMzIuc3BlYywKCSAgZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZGxscy9semV4cGFuZC9sejMyLnNwZWMsCgkgIGRsbHMvbWFwaTMyL21hcGkzMi5zcGVjLCBkbGxzL21wci9tcHIuc3BlYywgZGxscy9tc2FjbS9tc2FjbTMyLnNwZWMsCgkgIGRsbHMvbXNpbWczMi9tc2ltZzMyLnNwZWMsIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjLAoJICBkbGxzL21zdmlkZW8vbXN2ZnczMi5zcGVjLCBkbGxzL25ldGFwaTMyL25ldGFwaTMyLnNwZWMsCgkgIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy9vZGJjMzIvb2RiYzMyLnNwZWMsCgkgIGRsbHMvb2xlMzIvb2xlMzIuc3BlYywgZGxscy9vbGVhdXQzMi9vbGVhdXQzMi5zcGVjLAoJICBkbGxzL29sZWNsaS9vbGVjbGkzMi5zcGVjLCBkbGxzL29sZWRsZy9vbGVkbGcuc3BlYywKCSAgZGxscy9vbGVzdnIvb2xlc3ZyMzIuc3BlYywgZGxscy9vcGVuZ2wzMi9vcGVuZ2wzMi5zcGVjLAoJICBkbGxzL3BzYXBpL3BzYXBpLnNwZWMsIGRsbHMvcmFzYXBpMzIvcmFzYXBpMzIuc3BlYywKCSAgZGxscy9ycGNydDQvcnBjcnQ0LnNwZWMsIGRsbHMvc2V0dXBhcGkvc2V0dXBhcGkuc3BlYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYywgZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYywKCSAgZGxscy9zdGkvc3RpLnNwZWMsIGRsbHMvdGFwaTMyL3RhcGkzMi5zcGVjLCBkbGxzL3R3YWluL3R3YWluXzMyLnNwZWMsCgkgIGRsbHMvdXJsbW9uL3VybG1vbi5zcGVjLCBkbGxzL3VzZXIvdXNlcjMyLnNwZWMsCgkgIGRsbHMvdmVyc2lvbi92ZXJzaW9uLnNwZWMsIGRsbHMvd2luMzJzL3czMnNrcm5sLnNwZWMsCgkgIGRsbHMvd2luYXNwaS93bmFzcGkzMi5zcGVjLCBkbGxzL3dpbmluZXQvd2luaW5ldC5zcGVjLAoJICBkbGxzL3dpbm1tL3dpbm1tLnNwZWMsIGRsbHMvd2luc29jay93czJfMzIuc3BlYywKCSAgZGxscy93aW5zcG9vbC93aW5zcG9vbC5kcnYuc3BlYywgZGxscy93aW50YWIzMi93aW50YWIzMi5zcGVjLAoJICBkbGxzL3dpbnRydXN0L3dpbnRydXN0LnNwZWMsIGRsbHMvd3NvY2szMi93c29jazMyLnNwZWMsCgkgIGRsbHMveDExZHJ2L3gxMWRydi5zcGVjOgoJVGFrZSBhZHZhbnRhZ2Ugb2YgbmV3IHdpbmVidWlsZCBzeW50YXggdG8gcmVtb3ZlIHJlZHVuZGFudCBmdW5jdGlvbgoJbmFtZXMgaW4gc3BlYyBmaWxlcy4KCgkqIGRsbHMvbXNuZXQzMi9tc25ldDMyLnNwZWMsIHRvb2xzL3dpbmVidWlsZC9wYXJzZXIuYzoKCUFkZGVkIGNoZWNrIGZvciBkdXBsaWNhdGUgb3JkaW5hbHMsIGFuZCBmaXhlZCBidWcgaXQgdW5jb3ZlcmVkIGluCgltc25ldDMyLnNwZWMuCgoJKiBkbGxzL29sZTMyL2dpdC5jOiBNaWtlIEhlYXJuIDxtLmhlYXJuQHNpZ25hbC5xaW5ldGlxLmNvbT4KCUZpeGVkIGNvcHlyaWdodCBkYXRlLgoKCSogTWFrZS5ydWxlcy5pbiwgTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLAoJICBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwgbGlicy9NYWtlZmlsZS5pbiwgbGlicy91dWlkLy5jdnNpZ25vcmUsCgkgIGxpYnMvdXVpZC9NYWtlZmlsZS5pbiwgbGlicy91dWlkL2R4OGd1aWQuYywgbGlicy91dWlkL2R4Z3VpZC5jLAoJICBsaWJzL3V1aWQvdXVpZC5jLCBvbGUvLmN2c2lnbm9yZSwgb2xlL01ha2VmaWxlLmluLCBvbGUvZHg4Z3VpZC5jLAoJICBvbGUvZHhndWlkLmMsIG9sZS91dWlkLmM6CglNb3ZlZCBsaWJ3aW5lX3V1aWQgdG8gdGhlIG5ldyBsaWJzLyBkaXJlY3RvcnkuCgoyMDAzLTAzLTE5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogTWFrZS5ydWxlcy5pbiwgdG9vbHMvd3JjL3dyYy5jLCB0b29scy93cmMvd3JjLm1hbjoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglSZW1vdmUgLUosIC1QLCBhbmQgLVYgYXMgdGhleSBoYXZlIGxvbmcgb3B0aW9ucyBlcXVpdmFsZW50cy4KCVVwZGF0ZSBkb2N1bWVudGF0aW9uLCBzbWFsbCBjb2RlIGNsZWFudXBzLgoKCSogaW5jbHVkZS93aW5lL3BvcnQuaCwgbGlicy9wb3J0L01ha2VmaWxlLmluLCBsaWJzL3BvcnQvZ2V0b3B0LmMsCgkgIGxpYnMvcG9ydC9nZXRvcHQuaCwgbGlicy9wb3J0L2dldG9wdDEuYzoKCUFkZGVkIGdldG9wdCByb3V0aW5lIHRvIGxpYndpbmVfcG9ydCAoYmFzZWQgb24gYSBwYXRjaCBieSBEaW1pdHJpZQoJTy4gUGF1bikuCgoJKiBzZXJ2ZXIvTWFrZWZpbGUuaW46IFdlIHN0aWxsIG5lZWQgbGlid2luZSBoZXJlLi4uCgoJKiBNYWtlLnJ1bGVzLmluLCBNYWtlZmlsZS5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuYWMsCgkgIGRsbHMvTWFrZWRsbC5ydWxlcy5pbiwgZGxscy9NYWtldGVzdC5ydWxlcy5pbiwgbGlicy8uY3ZzaWdub3JlLAoJICBsaWJzL01ha2VmaWxlLmluLCBsaWJzL3BvcnQvLmN2c2lnbm9yZSwgbGlicy9wb3J0L01ha2VmaWxlLmluLAoJICBsaWJzL3BvcnQvZ2V0cGFnZXNpemUuYywgbGlicy9wb3J0L2xzdGF0LmMsIGxpYnMvcG9ydC9tZW1tb3ZlLmMsCgkgIGxpYnMvcG9ydC9ta3N0ZW1wLmMsIGxpYnMvcG9ydC9wcmVhZC5jLCBsaWJzL3BvcnQvcHdyaXRlLmMsCgkgIGxpYnMvcG9ydC9zdGF0ZnMuYywgbGlicy9wb3J0L3N0cmNhc2VjbXAuYywgbGlicy9wb3J0L3N0cmVycm9yLmMsCgkgIGxpYnMvcG9ydC9zdHJuY2FzZWNtcC5jLCBsaWJzL3BvcnQvdXNsZWVwLmMsIG1pc2NlbXUvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL01ha2Vwcm9nLnJ1bGVzLmluLCBwcm9ncmFtcy9hdml0b29scy9NYWtlZmlsZS5pbiwKCSAgc2VydmVyL01ha2VmaWxlLmluLCB0b29scy9NYWtlZmlsZS5pbiwgdG9vbHMvd2lkbC9NYWtlZmlsZS5pbiwKCSAgdG9vbHMvd2lkbC91dGlscy5jLCB0b29scy93aW5lYnVpbGQvTWFrZWZpbGUuaW4sCgkgIHRvb2xzL3dpbmVkdW1wL01ha2VmaWxlLmluLCB0b29scy93bWMvTWFrZWZpbGUuaW4sCgkgIHRvb2xzL3dyYy9NYWtlZmlsZS5pbjoKCUNyZWF0ZWQgYSBzZXBhcmF0ZSBzdGF0aWMgcG9ydGFiaWxpdHkgbGlicmFyeSBhbmQgbW92ZWQgc29tZSBvZiB0aGUKCWxpYndpbmUgcm91dGluZXMgaW4gdGhlcmUuCgoyMDAzLTAzLTE4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogQU5OT1VOQ0UsIENoYW5nZUxvZywgVkVSU0lPTiwgY29uZmlndXJlOiBSZWxlYXNlIDIwMDMwMzE4LgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoyMDAzLTAzLTE4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy91c2VyL21lc3NhZ2UuYywgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLAoJICBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvcXVldWUuYywgc2VydmVyL3RyYWNlLmM6CglGaXhlZCBidWcgdGhhdCBjb3VsZCBjYXVzZSBTZW5kTWVzc2FnZSB0byByZXR1cm4gdG9vIGVhcmx5IGluIGNlcnRhaW4KCWNhc2VzLgoKCSogZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL250ZGxsL3J0bC5jLCBpbmNsdWRlL3dpbnRlcm5sLmg6CglJbXBsZW1lbnRlZCBSdGwqQnl0ZVN3YXAoKSBmdW5jdGlvbnMsIGJhc2VkIG9uIGEgcGF0Y2ggYnkgSm9uCglHcmlmZml0aHMuCgoJKiBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvbnRkbGwvcnRsLmMsIGluY2x1ZGUvd2ludGVybmwuaDoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglDb3JyZWN0IHRoZSBhZ3VtZW50IGNvdW50IGZvciBSdGxJbml0aWFsaXplR2VuZXJpY1RhYmxlKCkuCglGaXggbXkgb3duIGJyb3duIHBhcGVyIGJhZyBpbiBSdGxGaWxsTWVtb3J5VWxvbmcoKS4KCVJ0bEdldE50VmVyc2lvbk51bWJlcnMoKSBzaG91bGQgbmV2ZXIgcmV0dXJuIDwgNS4KCVJlbW92ZSBSdGxDb3B5TWVtb3J5KCksIGl0cyBub3QgYW4gbnRkbGwgZXhwb3J0LgoJSW1wbGVtZW50IFJ0bENvbXBhcmVNZW1vcnlVbG9uZygpLCBSdGxDb21wdXRlQ3JjMzIoKS4KCURvY3VtZW50YXRpb24gdXBkYXRlcy4KCgkqIGxvYWRlci9tb2R1bGUuYzoKCU1ha2UgR2V0TW9kdWxlRmlsZU5hbWVBIGNhbGwgR2V0TW9kdWxlRmlsZU5hbWVXLiBTbWFsbCBjbGVhbnVwcy4KCgkqIGRsbHMvbnRkbGwvdGVzdHMvcnRsYml0bWFwLmM6IEF2b2lkIGV4cGxpY2l0IGxvbmcgbG9uZyBjb25zdGFudHMuCgoJKiBpbmNsdWRlL2RkcmF3aS5oOiBGaXhlZCBhIGZldyBmdW5jdGlvbiBwb2ludGVyIHR5cGVkZWZzLgoKCSogZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYywgZGxscy9zaGx3YXBpL3VybC5jOgoJTWF4aW1lIEJlbGxlbmfpIDxtYXhpbWUuYmVsbGVuZ2VAbGFwb3N0ZS5uZXQ+CglTdHViIGZvciBTSEF1dG9Db21wbGV0ZS4KCgkqIGRsbHMvYWR2YXBpMzIvYWR2YXBpLmMsIGRsbHMvYWR2YXBpMzIvcmVnaXN0cnkuYywKCSAgZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jLCBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYywKCSAgZGxscy9jb21jdGwzMi9jb21tY3RybC5jLCBkbGxzL2tlcm5lbC90aHVuay5jLCBkbGxzL2tlcm5lbC90aW1lLmMsCgkgIGRsbHMvbnRkbGwvY3JpdHNlY3Rpb24uYywgZGxscy9udGRsbC9oZWFwLmMsIGRsbHMvbnRkbGwvb20uYywKCSAgZGxscy9udGRsbC90aW1lLmMsIGRsbHMvb2xlYXV0MzIvZGlzcGF0Y2guYywKCSAgZGxscy9vbGVhdXQzMi9vbGUyZGlzcC5jLCBkbGxzL29sZWF1dDMyL3R5cGVsaWIxNi5jLAoJICBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvc2hlbGwuYywgZGxscy9zaGVsbDMyL3NoZWxsb2xlLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBkbGxzL3NoZWxsMzIvc2hmbGRyX2ZzLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGxmaWxlb3AuYywgZGxscy9zaGx3YXBpL3BhdGguYywgZGxscy9zaGx3YXBpL3JlZy5jLAoJICBkbGxzL3NobHdhcGkvcmVnc3RyZWFtLmMsIGRsbHMvc2hsd2FwaS9zaGx3YXBpX21haW4uYywKCSAgZGxscy9zaGx3YXBpL3N0cmluZy5jLCBkbGxzL3NobHdhcGkvdGhyZWFkLmMsIGRsbHMvc2hsd2FwaS91cmwuYywKCSAgZGxscy9zaGx3YXBpL3dzcHJpbnRmLmMsIGRsbHMvdXJsbW9uL3Vtb24uYywgZGxscy93c29jazMyL3NlcnZpY2UuYywKCSAgb2xlL29sZTJubHMuYywgd2luZG93cy9kY2UuYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglEb2N1bWVudGF0aW9uIHVwZGF0ZXMuCgoJKiBkbGxzL250ZGxsL2xvYWRlci5jLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGluY2x1ZGUvbW9kdWxlLmgsCgkgIGluY2x1ZGUvd2ludGVybmwuaCwgbG9hZGVyL21vZHVsZS5jOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CgktIGFkZGVkIExEUl9NT0RVTEUgc3RydWN0dXJlIHRvIFdJTkVfTU9EUkVGIGFuZCBtYWRlIGR1bW15IGZpbGxpbmcgb2YKCSAgdGhpcyBzdHJ1Y3R1cmUKCS0gaW1wbGVtZW50YXRpb24gb2YgTGRyRmluZEVudHJ5CgktIGltcGxlbWVudGF0aW9uIG9mIEdldE1vZHVsZUZpbGVOYW1lW0FXXSBvbiB0b3Agb2YgTGRyRmluZEVudHJ5CgoJKiBkbGxzL250ZGxsL3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMvbnRkbGwvdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvbnRkbGwvdGVzdHMvc3RyaW5nLmM6CglUaG9tYXMgTWVydGVzIDx0aG9tYXMubWVydGVzQGdteC5hdD4KCVRlc3RzIGZvciBfaXRvYSwgX2x0b2EsIF91bHRvYSwgX2k2NHRvYSwgX3VpNjR0b2EsIF9pdG93LCBfbHRvdywKCV91bHRvdywgX2k2NHRvdywgX3VpNjR0b3csIF9hdG9pNjQsIF93dG9pLCBfd3RvbCwgX3d0b2k2NC4KCgkqIHNlcnZlci9mZC5jLCBzZXJ2ZXIvZmlsZS5oOgoJR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglGaXggc2lnbmF0dXJlIG9mIG9wZW5fZmQoKS4KCgkqIGRsbHMvbXN2Y3J0L2NwcGV4Y2VwdC5jLCBkbGxzL21zdmNydC9jcHBleGNlcHQuaDoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglBZGQgX19DeHhEZXRlY3RSZXRocm93KCksICBfX0N4eFF1ZXJ5RXhjZXB0aW9uU2l6ZSgpLgoJQ29uc3RpZnkgcGFyYW1ldGVycyAoZW5hYmxpbmcgc3RhdGljIFJUVEkpLgoJTW92ZSB0eXBlIGRlZmluaXRpb25zIGludG8gYSBoZWFkZXIgZm9yIHNoYXJpbmcgd2l0aCBjcHAuYyBvYmplY3RzLgoKCSogdG9vbHMvd2luZWJ1aWxkL2J1aWxkLmgsIHRvb2xzL3dpbmVidWlsZC9pbXBvcnQuYywKCSAgdG9vbHMvd2luZWJ1aWxkL21haW4uYywgdG9vbHMvd2luZWJ1aWxkL3BhcnNlci5jLAoJICB0b29scy93aW5lYnVpbGQvc3BlYzE2LmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYywKCSAgdG9vbHMvd2luZWJ1aWxkL3V0aWxzLmMsIHRvb2xzL3dpbmVidWlsZC93aW5lYnVpbGQubWFuLmluOgoJSGFuZGxlIGVuZCBvZiBsaW5lIGFzIGEgc3ludGFjdGljIGVsZW1lbnQgaW4gdGhlIHNwZWMgZmlsZSBwYXJzZXI7CgliYWNrc2xhc2hlcyBjYW4gYmUgdXNlZCB0byBjb250aW51ZSBsaW5lcy4gVGhpcyBhbGxvd3MgdXMgdG8gc2tpcCBvdmVyCgllcnJvcnMgdG8gY29udGludWUgcGFyc2luZywgYW5kIGFsc28gdG8gbWFrZSBzcGVjaWZpY2F0aW9uIG9mIGFuIGVudHJ5Cglwb2ludCBsaW5rIG5hbWUgb3B0aW9uYWwuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9maWxlLmMsIGZpbGVzL2ZpbGUuYywgaW5jbHVkZS93aW5iYXNlLmgsCgkgIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwgc2VydmVyL2ZkLmMsIHNlcnZlci9maWxlLmMsCgkgIHNlcnZlci9maWxlLmgsIHNlcnZlci9saXN0LmgsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9wcm9jZXNzLmgsCgkgIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci90cmFjZS5jOgoJSW1wbGVtZW50ZWQgZmlsZSBsb2NraW5nIGZ1bmN0aW9ucyAocGFydGx5IGJhc2VkIG9uIG15IG9sZCBDb3JlbAoJcGF0Y2gpLiBBZGRlZCBhIGZldyByZWdyZXNzaW9uIHRlc3RzLgoKMjAwMy0wMy0xNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvZHNvdW5kL21peGVyLmM6IE92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJU29tZXdoYXQgbW9yZSByZWxpYWJsZSBkc291bmQgcG9zaXRpb24gbm90aWZpY2F0aW9ucy4KCgkqIGRsbHMvY29tbWRsZy9wcmludGRsZy5jOgoJVG9ueSBMYW1icmVndHMgPHRvbnlfbGFtYnJlZ3RzQHRlbHVzcGxhbmV0Lm5ldD4KCUphbml0b3JpYWwuIEdldCByaWQgb2YgVy0+QSBjYWxsLgoKCSogaW5jbHVkZS9tc3ZjcnQvc3lzL3R5cGVzLmgsIGluY2x1ZGUvd2luc29jay5oOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCURlZmluZSB0aGUgdV97Y2hhcixzaG9ydCxpbnQsbG9uZ30gaW4gbXN2Y3J0L3N5cy90eXBlcy5oIGZvciBVbml4Cgljb21wYXRpYmlsaXR5IChuZWVkZWQgYnkgd2luc29jay5oIGFzIHdlbGwpLgoKCSogZGxscy9tc3ZjcnQvbWFpbi5jLCBkbGxzL21zdmNydC9tc3ZjcnQuaDoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglNb3ZlIGEgY291cGxlIG9mIHNoYXJlZCBkZWZpbml0aW9ucyBpbnRvIG1zdmNydC5oLgoJaW5pdF92dGFibGVzKCkgaXMgcmVkdW5kYW50IHdpdGggdXBjb21pbmcgZml4ZXMgdG8gY3h4IGZ1bmN0aW9ucy4KCgkqIGRsbHMvbXN2Y3J0L210ZGxsLmg6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglfRVhJVF9MT0NLMiBpcyB1c2VkIGJ5IHR5cGVfaW5mbyBvYmplY3RzLgoKCSogaW5jbHVkZS93aW5yZWcuaDogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUFkZGVkIHByb3RvdHlwZXMgZm9yIHRoZSBSZW1vdGUgU2h1dGRvd24gQXBpIGNhbGxzLgoKCSogZGxscy9udGRsbC9zZWMuYzogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCURvY3VtZW50YXRpb24gdXBkYXRlcy4KCgkqIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25zb2xlLmM6CglUb255IExhbWJyZWd0cyA8dG9ueV9sYW1icmVndHNAdGVsdXNwbGFuZXQubmV0PgoJQ29udmVydCBXSU5FX0RQUklOVEYgY2FsbHMgdG8gV0lORV9UUkFDRS4KCgkqIHRvb2xzL3dpbmVidWlsZC9idWlsZC5oLCB0b29scy93aW5lYnVpbGQvcGFyc2VyLmMsCgkgIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYywgdG9vbHMvd2luZWJ1aWxkL3dpbmVidWlsZC5tYW4uaW46CglSZW1vdmVkIHN1cHBvcnQgZm9yIHRoZSAnZm9yd2FyZCcgb3JkaW5hbCB0eXBlLgoKCSogZGxscy9jcnRkbGwvY3J0ZGxsLnNwZWMsIGRsbHMvbXN2Y3J0MjAvbXN2Y3J0MjAuc3BlYzoKCVJlcGxhY2VkIGZvcndhcmRzIGJ5IG5vcm1hbCBmdW5jdGlvbiBkZWNsYXJhdGlvbnMuCgoJKiBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYzoKCUZpeGVkIGEgY291cGxlIG9mIHJlbGF5IGFyZ3VtZW50cywgYW5kIHVwZGF0ZWQgc29tZSBvZiB0aGUgc3R1YgoJY29tbWVudHMuCgoJKiBkbGxzL2NvbWN0bDMyL3RhYi5jOiBNaWtlIEhlYXJuIDxtaWtlQHRoZW9yZXRpYy5jb20+CglGaXggdGhlIHRhYiBoZWlnaHQgc28gdGhlIGxhYmVscyBkb24ndCBjbGlwLCBhbmQgcmVzdG9yZSB0aGUgb2Zmc2V0Cgljb25zdGFudCB0byB3aGF0IGl0IHdhcyBiZWZvcmUuCgoJKiBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jOiBNaWtlIEhlYXJuIDxtaWtlQHRoZW9yZXRpYy5jb20+CglGaXggYSB0eXBvLgoKCSogZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jLCBpbmNsdWRlL3NobG9iai5oOgoJUGF1bCBSdXBlIDxwcnVwZUBteXJlYWxib3guY29tPgoJQWRkIENTSURMX1BST0ZJTEVTLiAgSW1wcm92ZWQgbG9nZ2luZyBmb3Igbm9uLWV4aXN0ZW50IENTSURMIHZhbHVlcy4KCgkqIGRsbHMvZ2RpL2ZyZWV0eXBlLmM6IFBhdWwgUnVwZSA8cHJ1cGVAbXlyZWFsYm94LmNvbT4KCUZpeCBhIGNvdXBsZSBJTlQvVUlOVCBjb21wYXJpc29ucy4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYzogUGF1bCBSdXBlIDxwcnVwZUBteXJlYWxib3guY29tPgoJVHJlYXQgYmxhbmsgcHJvdG9jb2wgdGhlIHNhbWUgYXMgTlVMTCBpbiBnZXRzZXJ2YnluYW1lICYKCWdldHNlcnZieXBvcnQuCgoJKiBkbGxzL2FkdmFwaTMyL2FkdmFwaTMyLnNwZWMsIGRsbHMvZHBsYXkvZHBsYXkuc3BlYywKCSAgZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWMsCgkgIGRsbHMvbmV0YXBpMzIvbmV0YXBpMzIuc3BlYywgZGxscy9vbGUzMi9vbGUzMi5zcGVjLAoJICBkbGxzL29sZWF1dDMyL29sZWF1dDMyLnNwZWMsIGRsbHMvb2xlY2xpL29sZWNsaTMyLnNwZWMsCgkgIGRsbHMvb2xlcHJvMzIvb2xlcHJvMzIuc3BlYywgZGxscy9vcGVuZ2wzMi9vcGVuZ2wzMi5zcGVjLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLCBkbGxzL3NoZm9sZGVyL3NoZm9sZGVyLnNwZWMsCgkgIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWMsIGRsbHMvdXJsbW9uL3VybG1vbi5zcGVjLAoJICBkbGxzL3ZlcnNpb24vdmVyc2lvbi5zcGVjLCBkbGxzL3dpbjMycy93MzJza3JubC5zcGVjLAoJICBkbGxzL3dpbnNvY2svd3MyXzMyLnNwZWMsIGRsbHMvd293MzIvd293MzIuc3BlYywKCSAgZGxscy93c29jazMyL3dzb2NrMzIuc3BlYzoKCVJlcGxhY2VkIGZvcndhcmRzIGJ5IG5vcm1hbCBmdW5jdGlvbiBkZWNsYXJhdGlvbnMuCgoJKiBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYywgZGxscy9tc3ZjcnQvcHJvY2Vzcy5jOgoJSW1wbGVtZW50ZWQgX2dldGRsbHByb2NhZGRyKCksIGl0IGNhbm5vdCBiZSBzaW1wbHkgYSBmb3J3YXJkIHRvCglHZXRQcm9jQWRkcmVzcy4KCgkqIHRvb2xzL3dpbmVidWlsZC9wYXJzZXIuYywgdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jLAoJICB0b29scy93aW5lYnVpbGQvd2luZWJ1aWxkLm1hbi5pbjoKCURpc2FibGUgJ3ZhcmlhYmxlJyBpbiBXaW4zMiBzcGVjIGZpbGVzLgoJQWRkZWQgc3VwcG9ydCBmb3IgZm9yd2FyZGVkICdleHRlcm4nIG9yZGluYWxzLgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6IEF2b2lkIHdhcm5pbmdzLgoKMjAwMy0wMy0xNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHRvb2xzL3dpbmVidWlsZC9pbXBvcnQuYzoKCURvbid0IGVudGVyIGFuIGltcG9ydGVkIGRsbCBpbiB0aGUgaW1wb3J0IHRhYmxlIGF0IGFsbCBpZiB3ZSBkaWRuJ3QKCW5lZWQgdG8gaW1wb3J0IGFueSBzeW1ib2wgZnJvbSBpdC4KCgkqIGluY2x1ZGUvYmFzZXRzZC5oLCBpbmNsdWRlL3d0eXBlcy5oLCBpbmNsdWRlL3d0eXBlcy5pZGw6CglQcm9wZXJseSBpbXBvcnQgYmFzZXRzZC5oIGFuZCBndWlkZGVmLmguCgoJKiB0b29scy93aWRsL3BhcnNlci5sLCB0b29scy93aWRsL3V0aWxzLmMsIHRvb2xzL3dpZGwvd2lkbC5jOgoJTWFrZSBzdXJlIHdlIGRpc3BsYXkgdGhlIGNvcnJlY3QgZmlsZSBuYW1lIGFuZCBsaW5lIGluIGVycm9yIG1lc3NhZ2VzLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jOgoJVml0YWxpeSBNYXJnb2xlbiA8d2luZS1wYXRjaEBraWV2aW5mby5jb20+CgktIG1ha2UgU0hHZXRGaWxlSW5mbyBoYW5kbGUgcmVsYXRpdmUgcGF0aHMKCS0gZml4IHJlcXVlc3RzIGZvciBsYXJnZSBpY29ucwoKMjAwMy0wMy0xNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbXN2Y3J0L21pc2MuYzoKCUltcGxlbWVudGVkIF9jaGtlc3AsIGJhc2VkIG9uIGEgcGF0Y2ggYnkgSm9uIEdyaWZmaXRocy4KCgkqIGRsbHMvbXN2Y3J0L01ha2VmaWxlLmluLCBkbGxzL21zdmNydC9leGl0LmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJRGlzcGxheSBhYm5vcm1hbCBleGl0IHRleHQgaW4gYSBtZXNzYWdlIGJveCBmb3IgR1VJIGFwcHMuCgoJKiBpbmNsdWRlL3d0eXBlcy5oLCBpbmNsdWRlL3d0eXBlcy5pZGw6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJQWRkIHNvbWUgbWlzc2luZyB0eXBlcyBuZWVkZWQgZm9yIHRoZSB1cGNvbWluZyBvY2lkbC5pZGwuCglBZGQgbWlzc2luZyB2YXJpYW50IHR5cGVzLgoJQ29ycmVjdCB0aGUgZGVmaW5pdGlvbiBvZiBERUNJTUFMIHR5cGUuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzogQWRkZWQgI2lmZGVmIGNoZWNrcyBmb3IgU09VTkRfTUlYRVJfSU5GTy4KCgkqIGRvY3VtZW50YXRpb24vYXV0aG9ycy5lbnQ6IEFkZGVkIEpvbiBHcmlmZml0aHMuCgoJKiBNYWtlLnJ1bGVzLmluLCBNYWtlZmlsZS5pbiwgZG9jdW1lbnRhdGlvbi9NYWtlZmlsZS5pbjoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglVcGRhdGVkIHJ1bGVzIGZvciBBUEkgZG9jIGdlbmVyYXRpb24uCglBZGQgc2dtbHBhZ2VzIHRhcmdldCBmb3IgbWFraW5nIGEgZG9jYm9vayAnV2luZSBBUEkgR3VpZGUnLgoKCSogdG9vbHMvYzJtYW4ucGw6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglJbXByb3ZlIHRoZSBsb29rL2NvbnRlbnQgb2YgdGhlIG1hbiBwYWdlIG91dHB1dC4KCUdlbmVyYXRlIGZvciBhbGwgZXhwb3J0ZWQgZnVuY3Rpb25zICh0aGF0IGhhdmUgZG9jcykuCglBZGQgZGxsIHN1bW1hcnkgcGFnZSwgSFRNTCBhbmQgU0dNTCBvdXRwdXQuCgoJKiBkb2N1bWVudGF0aW9uL2RvY3VtZW50YXRpb24uc2dtbDoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglEb2N1bWVudCB0aGUgQVBJIGdlbmVyYXRpb24gcHJvY2VzcyBhbmQgZm9ybWF0LgoJUHJvdmlkZSBhbiBvdmVydmlldyBvZiB0aGUgV2luZSBkb2N1bWVudGF0aW9uIHN5c3RlbS4KCUEgY291cGxlIG9mIG1pbm9yIG90aGVyIGZpeGVzLgoKCSogZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL250ZGxsL3J0bHN0ci5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUFkZCBSdGxEb3duY2FzZVVuaWNvZGVDaGFyKCksIFJ0bEVxdWFsQ29tcHV0ZXJOYW1lKCksCglSdGxFcXVhbERvbWFpbk5hbWUoKS4gRG9jdW1lbnRhdGlvbiB1cGRhdGVzLgoKCSogZGxscy9zaGx3YXBpL2lzdHJlYW0uYzogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCURvY3VtZW50YXRpb24gdXBkYXRlcy4KCgkqIGluY2x1ZGUvc2hsd2FwaS5oOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJQWRkIHNvbWUgbWlzc2luZyBwcm90b3R5cGVzLgoKCSogZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYzogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCVNIQ3JlYXRlVGhyZWFkIGlzIGV4cG9ydGVkIGJ5IG5hbWUgX2FuZF8gb3JkaW5hbC4KCgkqIGRsbHMvc2hsd2FwaS9jbGlzdC5jLCBkbGxzL3NobHdhcGkvdGVzdHMvY2xpc3QuYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglDb3JyZWN0IGJlaGF2aW91ciBmb3Igc29tZSBlcnJvciBjb25kaXRpb25zLgoJRG9jdW1lbnRhdGlvbiB1cGRhdGVzLgoKCSogaW5jbHVkZS93aW5lL2RlYnVnLmg6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglSZWFsbHkgZ2V0IHJpZCBvZiBkZWJ1ZyBjb2RlL3N0cmluZ3MgaWYgd2UncmUgYnVpbGRpbmcgd2l0aG91dCB0aGVtLgoKCSogZGxscy9tc3ZjcnQvZGF0YS5jLCBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglJbXBsZW1lbnRlZCBfX3BfX3BnbXB0ciwgX3BnbXB0ci4KCgkqIHRvb2xzL3dpbmVkdW1wL3BlLmM6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglPbmx5IHNvcnQgdGhlIG51bWJlciBvZiBzeW1ib2xzIGFjdHVhbGx5IGZvdW5kLgoKCSogdG9vbHMvd2luYXBpL21zdmNtYWtlcjogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCU91dHB1dCBhIGR1bW15IGZ1bmN0aW9uIGZvciBsaW5raW5nLgoJRGVmaW5lIF9fV0lORV9VU0VfTkFUSVZFX0hFQURFUlMgZm9yIHRlc3RzIHRoYXQgbmVlZCB0byBjYXJlLgoJQ2hhbmdlIHRoZSBkZWJ1ZyBpbmZvcm1hdGlvbiBmb3JtYXQgdG8gcHJldmVudCB3aW5lZGJnIGZyb20gY3Jhc2hpbmcuCgoJKiBpbmNsdWRlL3dpbmdkaS5oOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJUHJvdGVjdCB0aGUgVEVYVE1FVFJJQyBzdHJ1Y3QgZnJvbSByZWRlZmluaXRpb24uCgoJKiBjb250cm9scy9saXN0Ym94LmMsIGNvbnRyb2xzL3Njcm9sbC5jLCBkbGxzL2RkcmF3L2QzZGRldmljZS9tYWluLmMsCgkgIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywgZGxscy9kZHJhdy9kZHJhdy9tYWluLmMsCgkgIGRsbHMvZGRyYXcvZHN1cmZhY2UvbWFpbi5jOgoJVG9ueSBMYW1icmVndHMgPHRvbnlfbGFtYnJlZ3RzQHRlbHVzcGxhbmV0Lm5ldD4KCVJlcGxhY2UgRFBSSU5URiB3aXRoIFRSQUNFLgoKCSogZGxscy9kc291bmQvYnVmZmVyLmMsIGRsbHMvZHNvdW5kL2NhcHR1cmUuYywgZGxscy9kc291bmQvZHNvdW5kLnNwZWMsCgkgIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmMsIGRsbHMvZHNvdW5kL2Rzb3VuZF9wcml2YXRlLmgsCgkgIGRsbHMvZHNvdW5kL21peGVyLmMsIGRsbHMvZHNvdW5kL3ByaW1hcnkuYywgZGxscy93aW5tbS9sb2x2bGRydi5jLAoJICBkbGxzL3dpbm1tL3dpbmVhbHNhL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL3dpbmVhbHNhL2F1ZGlvLmMsCgkgIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jLCBkb2N1bWVudGF0aW9uL3NhbXBsZXMvY29uZmlnLAoJICBpbmNsdWRlL21tZGRrLmg6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQWRkZWQgc3VwcG9ydCBmb3IgbXVsdGlwbGUgZGlyZWN0IHNvdW5kIGRldmljZXMuCgoJKiBkbGxzL2NvbWNhdC9pbmZvcm1hdGlvbi5jLCBkbGxzL2RkcmF3L2QzZGV4ZWN1dGVidWZmZXIuYywKCSAgZGxscy9kZHJhdy9kM2R2ZXJ0ZXhidWZmZXIuYywgZGxscy9kZHJhdy9tYWluLmMsCgkgIGRsbHMvZGlucHV0L2pveXN0aWNrL2xpbnV4LmMsIGRsbHMvZGlucHV0L2pveXN0aWNrL2xpbnV4aW5wdXQuYywKCSAgZGxscy9kaW5wdXQva2V5Ym9hcmQvbWFpbi5jLCBkbGxzL2RpbnB1dC9tb3VzZS9tYWluLmMsCgkgIGRsbHMvb2RiYzMyL3Byb3h5b2RiYy5jLCBkbGxzL3JpY2hlZGl0L3JpY2hlZGl0LmMsCgkgIGRsbHMvc2V0dXBhcGkvcGFyc2VyLmMsIGRsbHMvdmVyc2lvbi9pbmZvLmMsCgkgIGRsbHMvd2luYXNwaS93aW5hc3BpMTYuYywgZGxscy93aW5hc3BpL3dpbmFzcGkzMi5jLAoJICBkbGxzL3gxMWRydi9rZXlib2FyZC5jLCBmaWxlcy9zbWIuYzoKCVRvbnkgTGFtYnJlZ3RzIDx0b255X2xhbWJyZWd0c0B0ZWx1c3BsYW5ldC5uZXQ+CglSZXBsYWNlIERQUklOVEYgd2l0aCBUUkFDRS4KCgkqIHdpbmVkZWZhdWx0LnJlZzogTWF4aW1lIEJlbGxlbmfpIDxtYXhpbWUuYmVsbGVuZ2VAbGFwb3N0ZS5uZXQ+CglSZW5hbWUgIlNob3J0Y3V0IiB0byAiRGVza3RvcCIuCgoJKiBzY2hlZHVsZXIvc3lzZGVwcy5jOgoJSW5pdCBzaWduYWxzIGJlZm9yZSBjYWxsaW5nIENMSUVOVF9Jbml0VGhyZWFkIHNpbmNlIHdlIGNhbiByZWNlaXZlIGEKCXNpZ25hbCB0aGVyZS4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogVml0YWxpeSBNYXJnb2xlbiA8d2luZS1wYXRjaEBraWV2aW5mby5jb20+CglDaGFuZ2VzIGZvciBJY29uIGFuZCBTbWFsbEljb24gbW9kZXM6CgkgLSBmaXggdHlwbyBjYXVzaW5nIHdyb25nIHNjcm9sbCBib3VuZGFyaWVzCgkgLSByZXZlcnNlIG1vdXNlIHdoZWVsIHNjcm9sbCBkaXJlY3Rpb25zCgkgLSBmaXggbmF2aWdhdGlvbiB3aXRoIGtleWJvYXJkIHdoZW4gYXV0byBhcnJhbmdlZAoKMjAwMy0wMy0xNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGxvYWRlci9tb2R1bGUuYzogQ2xlYW5lZCB1cCBsb2FkX2xpYnJhcnlfYXNfZGF0YWZpbGUoKS4KCgkqIGRsbHMvbnRkbGwvcmVnLmMsIGRsbHMvbnRkbGwvcnRsLmMsIGRsbHMvbnRkbGwvcnRsc3RyLmMsCgkgIGRsbHMvbnRkbGwvc2VjLmM6CglBdm9pZCBHZXRQcm9jZXNzSGVhcCgpIGluc2lkZSBudGRsbC4KCgkqIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIHdpbjMyL25ld2Zucy5jOgoJUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJQWRkZWQgc3R1YiBmb3IgR2V0RGV2aWNlUG93ZXJTdGF0ZSgpLgoKCSogZGxscy9tc25ldDMyL21zbmV0MzIuc3BlYywgZGxscy9tc25ldDMyL21zbmV0X21haW4uYzoKCVJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCUFkZGVkIGEgc3R1YiBmb3IgbXNuZXQzMi41NwoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJU3BhY2luZyBpbmZvcm1hdGlvbiBpcyBzaWduZWQgKGRlYnVnZ2VkIGFuZCBmaXhlZCBieSBWaXRhbGl5CglNYXJnb2xlbikuCglEZWNvZGUgc3BhY2luZyBpbmZvcm1hdGlvbiBpbiB0aGUgd2luZG93IHByb2NlZHVyZS4KCVNvbWUgc3BlbGxpbmcgZml4ZXMuCgoJKiBkbGxzL250ZGxsL2xvYWRlci5jLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvbnRkbGwvbnRkbGxfbWlzYy5oLAoJICBpbmNsdWRlL21vZHVsZS5oLCBpbmNsdWRlL3dpbnRlcm5sLmgsIGxvYWRlci9tb2R1bGUuYywKCSAgbG9hZGVyL3BlX2ltYWdlLmMsIHJlbGF5MzIvYnVpbHRpbjMyLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCS0gaW1wbGVtZW50YXRpb24gb2YgTGRyTG9hZERsbCBvdXQgb2YgbG9hZGVyL21vZHVsZS5jCgktIGluIGltcGFjdGVkIGZ1bmN0aW9ucywgZW5zdXJlIHRoYXQgd2Ugb25seSB1c2UgbnRkbGwgZnVuY3Rpb25zCgktIGZvciBpbnRlcm5hbCBsb2FkaW5nLCBzdGFydCB1c2luZyBOVERMTCBzdHlsZSBmb3IgZXJyb3IgcmVwb3J0aW5nCgktIG1ha2luZyB1c2Ugb2YgbmV3IExkckxvYWREbGwKCgkqIGRsbHMvYWR2YXBpMzIvTWFrZWZpbGUuaW4sIGRsbHMvYWR2YXBpMzIvcmVnaXN0cnkuYzoKCVRvbnkgTGFtYnJlZ3RzIDx0b255X2xhbWJyZWd0c0B0ZWx1c3BsYW5ldC5uZXQ+CglKYW5pdG9yaWFsLiBHZXQgcmlkIG9mIFctPkEgY2FsbHMuCgoJKiBkbGxzL2NvbWN0bDMyL3JlYmFyLmMsIHdpbmRvd3MvZGlhbG9nLmMsIHdpbmRvd3Mvd2luLmMsCgkgIHdpbmRvd3Mvd2lucG9zLmM6CglUb255IExhbWJyZWd0cyA8dG9ueV9sYW1icmVndHNAdGVsdXNwbGFuZXQubmV0PgoJUmVwbGFjZSBEUFJJTlRGIHdpdGggVFJBQ0UuCgoJKiBzZXJ2ZXIvbWFpbi5jLCBzZXJ2ZXIvb2JqZWN0LmgsIHNlcnZlci9yZXF1ZXN0LmM6CglBZGRlZCAtZiBvcHRpb24gdG8gbWFrZSB3aW5lc2VydmVyIHJlbWFpbiBpbiB0aGUgZm9yZWdyb3VuZCBmb3IKCWRlYnVnZ2luZy4KCUNsb3NlIHN0ZGluL3N0ZG91dCB3aGVuIG5vdCBpbiB0aGUgZm9yZWdyb3VuZCAoYmFzZWQgb24gYSBwYXRjaCBieQoJRnJhbmNvaXMgR291Z2V0KS4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL3Byb2ZpbGUuYzogV2FybmluZyBmaXhlcy4KCgkqIGRsbHMvbnRkbGwvZGVidWd0b29scy5jOgoJT25seSBwcmludCB0aGUgdHJhY2UgaGVhZGVyIHdoZW4gd2UgYXJlIGF0IHRoZSBiZWdpbm5pbmcgb2YgYSBuZXcKCWxpbmUgKHN1Z2dlc3RlZCBieSBEaW1pdHJpZSBPLiBQYXVuKS4KCgkqIGRsbHMvbnRkbGwvbG9hZGVyLmMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy9udGRsbC9udGRsbF9taXNjLmgsCgkgIGluY2x1ZGUvbW9kdWxlLmgsIGxvYWRlci9tb2R1bGUuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJLSBpbXBsZW1lbnRhdGlvbiBvZiBMZHJVbmxvYWREbGwgb3V0IG9mIGxvYWRlci9tb2R1bGUuYwoJLSBpbiBpbXBhY3RlZCBmdW5jdGlvbnMsIGVuc3VyZSB0aGF0IHdlIG9ubHkgdXNlIG50ZGxsIGZ1bmN0aW9ucwoJLSBtYWtpbmcgdXNlIG9mIG5ldyBMZHJVbmxvYWREbGwKCjIwMDMtMDMtMTIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzZXJ2ZXIvZmQuYywgc2VydmVyL2ZpbGUuYywgc2VydmVyL2ZpbGUuaCwgc2VydmVyL25hbWVkX3BpcGUuYywKCSAgc2VydmVyL3BpcGUuYywgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3JlcXVlc3QuYywgc2VydmVyL3NlcmlhbC5jLAoJICBzZXJ2ZXIvc21iLmMsIHNlcnZlci9zb2NrLmMsIHNlcnZlci90aHJlYWQuYzoKCUFkZGVkIGFuIGlub2RlIG9iamVjdCB0byBrZWVwIHRyYWNrIG9mIGFsbCBmaWxlIGRlc2NyaXB0b3JzIG9wZW4gZm9yIGEKCWdpdmVuIGZpbGUuCglQbHVnZ2VkIGEgY291cGxlIG9mIHBvdGVudGlhbCBmaWxlIGRlc2NyaXB0b3IgbGVha3MuCgoJKiBkbGxzL21zdmNydC93Y3MuYywgZGxscy9udGRsbC93Y3N0cmluZy5jLCBpbmNsdWRlL3dpbmUvdW5pY29kZS5oLAoJICB1bmljb2RlL3N0cmluZy5jLCB1bmljb2RlL3dpbmVfdW5pY29kZS5kZWY6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAYmFpa2FsLnJ1PgoJTW92ZSB2c253cHJpbnRmIGltcGxlbWVudGF0aW9uIHRvIGxpYndpbmVfdW5pY29kZSwgZXhwb3J0IHNucHJpbnRmVwoJYW5kIHZzbnByaW50ZlcgZnJvbSB0aGVyZSwgZm9yd2FyZCBNU1ZDUlQgYW5kIE5URExMIGZ1bmN0aW9ucyB0bwoJbGlid2luZV91bmljb2RlLgoKCSogZGxscy9zaGVsbDMyL3NocG9saWN5LmM6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglDb25zdGlmeSB0aGUgc3RyaW5ncyBpbiB0aGUgcG9saWN5IGNhY2hlLgoJRG9jdW1lbnRhdGlvbiB1cGRhdGVzLgoKCSogZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWMsIGRsbHMvbXN2Y3J0L3djcy5jLAoJICBkbGxzL21zdmNydDIwL21zdmNydDIwLnNwZWM6CglUaG9tYXMgTWVydGVzIDx0aG9tYXMubWVydGVzQGdteC5hdD4KCUZvcndhcmQgdG8gdGhlIG50ZGxsIGZ1bmN0aW9ucyBfaXRvYSwgX2x0b2EsIF91bHRvYSwgX2k2NHRvYSwKCV91aTY0dG9hLCBfaXRvdywgX2x0b3csIF91bHRvdywgX2k2NHRvdywgX3VpNjR0b3csIF9hdG9pNjQsIF93dG9pLAoJX3d0b2wsIF93dG9pNjQgZnJvbSBtc3ZjcnQgLyBtc3ZjcnQyMC4KCgkqIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy9udGRsbC9zdHJpbmcuYywgZGxscy9udGRsbC93Y3N0cmluZy5jOgoJVGhvbWFzIE1lcnRlcyA8dGhvbWFzLm1lcnRlc0BnbXguYXQ+CglJbXBsZW1lbnQgX2l0b2EsIF9sdG9hLCBfdWx0b2EsIF9pNjR0b2EsIF91aTY0dG9hLCBfaXRvdywgX2x0b3csCglfdWx0b3csIF9pNjR0b3csIF91aTY0dG93LCBfYXRvaTY0LCBfd3RvaSwgX3d0b2wsIF93dG9pNjQuCgoJKiBkbGxzL2tlcm5lbC9jb21tLmM6IE1hcmN1cyBNZWlzc25lciA8bWVpc3NuZXJAc3VzZS5kZT4KCUZpeGVkIDIgZmQgbGVha3MgaW4gY29tbSBmdW5jdGlvbnMuCglSZW1vdmVkIGVycm9uZW91cyBHZXRMYXN0RXJyb3IoKSBjaGVjayBpbiBXYWl0Q29tbUV2ZW50KCkuCgoJKiBkb2N1bWVudGF0aW9uL3BhY2thZ2luZy5zZ21sLCBwcm9ncmFtcy93aW5lYm9vdC93aW5lYm9vdC5jOgoJU2hhY2hhciBTaGVtZXNoIDx3aW5lLXBhdGNoZXNAc3VuLmNvbnN1bWVyLm9yZy5pbD4KCS0gSW1wbGVtZW50IGZpbmVyIGdyYWluZWQgY29udHJvbCBvdmVyIHdoYXQgZ2V0cyBydW4uCgktIEltcGxlbWVudCBjb21tYW5kIGxpbmUgdG8gY29udHJvbCBwcmVzZXRzIG9mIHNhaWQgY29udHJvbCBmb3IKCSAgdmFyaW91cyBzY2VuYXJpb3M6CgkgIG8gc3RhcnQgLSBzZXNzaW9uIHN0YXJ0dXAgLSBydW4gZXZlcnl0aGluZy4KCSAgbyByZXN0YXJ0IC0gc2Vzc2lvbiBjbG9zZSAocHJlc3VtZWFibHkgYWZ0ZXIgcmVib290KSAtIG9ubHkgcGVyZm9ybQoJICAgICpvbmNlIG9wZXJhdGlvbnMuCgoJKiBpbmNsdWRlL3dpbm50Lmg6IFRvbnkgTGFtYnJlZ3RzIDx0b255X2xhbWJyZWd0c0B0ZWx1c3BsYW5ldC5uZXQ+CglBZGQgZmxhZ3MgZm9yIFJlZ1Jlc3RvcmVLZXkuCgoJKiBkbGxzL2NvbWN0bDMyL3RhYi5jOiBNaWtlIEhlYXJuIDxtaWtlQHRoZW9yZXRpYy5jb20+CgktIFJlZHVjZWQgdGFiIG9mZnNldCBjb25zdGFudCBzbGlnaHRseSB0byBhdm9pZCBjbGlwcGluZyB0aGUgbGFiZWwuCgktIFByZXZlbnQgbGFiZWwgb3ZlcmRyYXcgb2YgdXBkb3duIGNvbnRyb2wgYnkgcmVkdWNpbmcgdGhlIHdpZHRoIG9mCgkgIHRoZSBpbnZhbGlkYXRlZCByZWdpb24uCgoyMDAzLTAzLTExICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2VydmVyL2NvbnRleHRfaTM4Ni5jLCBzZXJ2ZXIvY29udGV4dF9wb3dlcnBjLmMsCgkgIHNlcnZlci9jb250ZXh0X3NwYXJjLmMsIHNlcnZlci9kZWJ1Z2dlci5jLCBzZXJ2ZXIvcHJvY2Vzcy5jLAoJICBzZXJ2ZXIvcHRyYWNlLmMsIHNlcnZlci90aHJlYWQuaDoKCUF0dGFjaGluZyB0aGUgZGVidWdnZXIgdG8gYSBydW5uaW5nIHByb2Nlc3Mgc2hvdWxkIHdvcmsgYWdhaW4KCShyZXBvcnRlZCBieSBFcmljIFBvdWVjaCkuIE1pc2MgY2xlYW51cHMuCgoJKiBkbGxzL29sZTMyL01ha2VmaWxlLmluLCBkbGxzL29sZTMyL2NvbXBvYmouYywKCSAgZGxscy9vbGUzMi9jb21wb2JqX3ByaXZhdGUuaCwgZGxscy9vbGUzMi9naXQuYywgd2luZWRlZmF1bHQucmVnLAoJICBkbGxzL29sZTMyL21hcnNoYWwuYzoKCU1pa2UgSGVhcm4gPG1pa2VAdGhlb3JldGljLmNvbT4KCUltcGxlbWVudGVkIHRoZSBnbG9iYWwgaW50ZXJmYWNlIHRhYmxlIG9iamVjdCB1c2luZyBhIHNpbXBsZSBsaW5rZWQKCWxpc3QuCgoyMDAzLTAzLTEwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZG9jdW1lbnRhdGlvbi9jb25zb2xlcy5zZ21sLCBkb2N1bWVudGF0aW9uL3J1bm5pbmcuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9zYW1wbGVzL2NvbmZpZzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJUHV0IGNvbnNvbGUgZG9jdW1lbnRhdGlvbiBpbiBzeW5jIHdpdGggY3VycmVudCBjb25zb2xlIHN0YXR1cy4KCgkqIGRsbHMvZHNvdW5kL3NvdW5kM2QuYzogUm9rIE1hbmRlbGpjIDxyb2ttYW5kZWxqY0Bob3RtYWlsLmNvbT4KCS0gaW1wbGVtZW50ZWQgcGFubmluZwoJLSBpbXBsZW1lbnRlZCBjb25pbmcKCS0gbWFueSBtaW5vciBmaXhlcwoKCSogcmVsYXkzMi9zbm9vcC5jOiBVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglTTk9PUF9QcmludEFyZzogZG9uJ3QgdHJ5IHRvIGRlY2lwaGVyIHNub29wIGFyZ3Mgd2hlbiBzZWggY2hhbmVsIGlzCglvbi4KCgkqIHNlcnZlci9wdHJhY2UuYzogRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCB0eXBvLgoKCSogZGxscy91c2VyL2V4dGljb24uYzogVml0YWxpeSBNYXJnb2xlbiA8d2luZS1wYXRjaEBraWV2aW5mby5jb20+CglGaXhlZCB0eXBvIGluIFByaXZhdGVFeHRyYWN0SWNvbkV4VyBmdW5jdGlvbi4KCgkqIGRsbHMvY29tY3RsMzIvdGFiLmM6IE1pa2UgSGVhcm4gPG1pa2VAdGhlb3JldGljLmNvbT4KCUl0J3Mgbm90IGp1c3QgaGVpZ2h0IHRoYXQgY2FuIGJlIHNldCB0byB0aGUgZGVmYXVsdCBieSBwYXNzaW5nIHplcm8gdG8KCVRDTV9TRVRJVEVNU0laRSwgYnV0IGFsc28gd2lkdGguCgoJKiBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZS5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CgktIGZpeGVkIGFub3RoZXIgcmVncmVzc2lvbiBpbiBzdWItcHJvY2VzcyBjcmVhdGlvbiAoY3Vyc2VzIGJhY2tlbmQKCSAgbXVzdCBiZSBkZWZhdWx0IGZvciBBbGxvY0NvbnNvbGUoKSBpbnZvY2F0aW9uKQoJLSBmaXhlZCBlbmRsZXNzIGxvb3Agd2hlbiB1bmtub3duIGFyZ3VtZW50IHdhcyBwYXNzZWQgb24gY29tbWFuZGxpbmUKCgkqIGRsbHMvd2lubW0vd2F2ZW1hcC93YXZlbWFwLmM6IEVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgZXJyb3IgY29kZSB3aGVuIG5vIG1hcHBpbmcgaXMgZm91bmQgZm9yIHdhdmUgaW5wdXQuCgoJKiBkbGxzL3NobHdhcGkvcmVnLmMsIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWM6CglNYXhpbWUgQmVsbGVuZ+kgPG1heGltZS5iZWxsZW5nZUBsYXBvc3RlLm5ldD4KCUltcGxlbWVudGVkIFNIUmVnU2V0VVNWYWx1ZUEgYW5kIFNIUmVnU2V0VVNWYWx1ZVcuCgoyMDAzLTAzLTA3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9udGRsbC9ydGxiaXRtYXAuYzoKCVJld3JvdGUgUnRsRmluZHtNb3N0LExlYXN0fVNpZ25pZmljYW50Qml0IGluIGEgbW9yZSBwb3J0YWJsZSB3YXkuCgoJKiBkbGxzL2dkaS9lbmhtZmRydi9pbml0LmM6CglUb255IExhbWJyZWd0cyA8dG9ueV9sYW1icmVndHNAdGVsdXNwbGFuZXQubmV0PgoJSmFuaXRvcmlhbC4gR2V0IHJpZCBvZiBXLT5BIGNhbGwuCgoJKiBjb250cm9scy9zY3JvbGwuYzogQW5kcmV3IEpvaG5zdG9uIDxqb2huc3RvbmFtQGxvZ2ljYS5jb20+CglNb3ZlIGtleWJvYXJkIGV2ZW50IHByb2Nlc3NpbmcgZnJvbSBXbmRQcm9jIGNvZGUgaW50byB0aGUgZXhpc3RpbmcKCWhlbHBlci4KCUNyZWF0ZSBhIGhlbHBlciBmdW5jdGlvbiBmb3IgdGhlIGNyZWF0ZSBldmVudCBhbmQgY2xlYW4gdXAgY29kZS4KCVJlbW92ZSBtYWNybyBmb3IgZGV0ZWN0aW5nIGludmFsaWQgU0NST0xMSU5GTyBzdHJ1Y3R1cmVzIGFuZCBtYWtlIGl0CglhbiBpbmxpbmUgZnVuY3Rpb24uCgoJKiBjb250cm9scy9tZW51LmM6IEFkYW0gR3VuZHkgPGFyZ0BjeWJlcnNjaWVuY2UuY29tPgoJQWxsb3cgbW9kaWZ5aW5nIGEgbWVudSBzdHJpbmcgdG8gYmUgTlVMTC4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOiBBZGFtIEd1bmR5IDxhcmdAY3liZXJzY2llbmNlLmNvbT4KCVRPT0xCQVJfQWRkQml0bWFwKCkgYW5kIFRPT0xCQVJfUmVwbGFjZUJpdG1hcCgpIGFyZSBub3Qgc3VwcG9zZWQgdG8KCW1vZGlmeSB0aGUgYml0bWFwIC0gd2UgY2FsbCBJbWFnZUxpc3RfQWRkTWFza2VkKCkgd2hpY2ggdHVybnMgYWxsCgltYXNrZWQgcGl4ZWxzIGJsYWNrLiBGaXhlZCBieSBtYWtpbmcgYSBjb3B5IG9mIHRoZSBiaXRtYXAgdG8gZ2l2ZSB0bwoJSW1hZ2VMaXN0X0FkZE1hc2tlZCgpLgoKCSogY29udHJvbHMvc2Nyb2xsLmM6IEFuZHJldyBKb2huc3RvbiA8am9obnN0b25hbUBsb2dpY2EuY29tPgoJLSBHZXRTY3JvbGxSYW5nZSB6ZXJvcyB0aGUgcmV0dXJuIHBhcmFtZXRlcnMgZm9yIG5vIGluZm9QdHIKCS0gR2V0U2Nyb2xsUmFuZ2UsIEdldFNjcm9sbFBvcyBhbmQgR2V0U2Nyb2xsSW5mbyBzZW5kIGEgbWVzc2FnZSB0byB0aGUKCSAgd2luZG93IGZvciB0aGUgU0JfQ1RMIGNhc2UKCS0gTW92ZWQgY29kZSBmb3IgR2V0U2Nyb2xsKiB0byBpbnRvIHdvcmtlciBmdW5jdGlvbnMKCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJRml4ZWQgYnVnIHdoZXJlIHRoZSBlbmFibGUgc3RhdGUgb2YgdGhlIG91dHB1dCBhbmQgaW5wdXQgd2VyZSBub3Qgc2V0Cglwcm9wZXJseSB3aGVuIGRvaW5nIGZ1bGwgZHVwbGV4LgoJRml4ZWQgYnVnIHdoZXJlIHJlc2V0dGluZyB0aGUgb3V0cHV0IHdvdWxkIGFmZmVjdCB0aGUgY2FwdHVyZSB3aGVuCglkb2luZyBmdWxsIGR1cGxleC4KCgkqIGRsbHMvZHNvdW5kL3Rlc3RzL2Rzb3VuZC5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJRml4ZWQgYSBidWcgd2hlcmUgYSBjYXB0dXJlIGRldmljZSB3YXMgdXNlZCBhZnRlciBpdCBmYWlsZWQgdG8gb3BlbgoJZHVlIHRvIGEgbWlzc2luZyBkcml2ZXIuCglBZGRlZCB0ZXN0cyB0byB0cnkgYWxsIHBvc3NpYmxlIGNvbWJpbmF0aW9ucyBvZiBzYW1wbGUgcmF0ZSwgc2FtcGxlCglzaXplIGFuZCBtb25vL3N0ZXJlby4KCgkqIGRsbHMvd2luZXBzL2luaXQuYywgZGxscy93aW5zcG9vbC9pbmZvLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1laXNzbmVyQHN1c2UuZGU+CglXYXMgdXNpbmcgdGhlIHdyb25nIGRlZmluZSBmb3IgdGhlIENVUFMgc29uYW1lLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBBZGFtIEd1bmR5IDxhcmdAY3liZXJzY2llbmNlLmNvbT4KCVdoZW4gc2hpZnRpbmcgdGhlIGxpc3QncyBpbmRpY2VzLCB3ZSBtdXN0IG5vdCBzZW5kIG5vdGlmeSBtZXNzYWdlcyBpZgoJd2UgaGF2ZSB0byByZWZvY3VzLiBJdGVtIG1vZGlmaWNhdGlvbiBoYW5kbGVycyBhcmUgbm90IHN1cHBvc2VkIHRvIGJlCgljYWxsZWQgaGVyZS4KCgkqIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25zb2xlLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIHJlZ3Jlc3Npb24gaW4gc3ViLXByb2Nlc3MgY3JlYXRpb24uCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsIGRsbHMvZGRyYXcvZGRyYXcvdXNlci5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gc29tZSBDYXBzIGNsZWFuLXVwIHdoZW4gbm8gT3BlbkdMIGNvbXBpbGVkIGluCgktIGZpeCBzb21lIGZvbnRzIGRpc3BsYXlpbmcgcHJvYmxlbXMKCgkqIGRvY3VtZW50YXRpb24vcGF0Y2hlcy5zZ21sOgoJVG9ueSBMYW1icmVndHMgPHRvbnlfbGFtYnJlZ3RzQHRlbHVzcGxhbmV0Lm5ldD4KCUNsYXJpZnkgcGF0Y2ggcmVxdWlyZW1lbnRzLgoKCSogZGxscy93aW5tbS9NYWtlZmlsZS5pbjogU3RldmVuIEVkd2FyZHMgPHN0ZXZlbl9lZDQxNTNAeWFob28uY29tPgoJQWRkIGltcG9ydCBvZiBudGRsbC4KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmM6IEFkYW0gR3VuZHkgPGFyZ0BjeWJlcnNjaWVuY2UuY29tPgoJUFJPUFNIRUVUX0NyZWF0ZURpYWxvZygpIGlzIGRvY3VtZW50ZWQgdG8gcmV0dXJuIC0xIG9uIGZhaWx1cmUsIGFuZAoJdGhlIGRpYWxvZyBoYW5kbGUgb24gc3VjY2Vzcy4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYzogQWRhbSBHdW5keSA8YXJnQGN5YmVyc2NpZW5jZS5jb20+CglBcnJhbmdlQ3RybFBvc2l0aW9ucygpIGRpZCBub3QgY29wZSBjb3JyZWN0bHkgd2l0aCBhIHRlbXBsYXRlZCBkaWFsb2cKCXdoaWNoIGhhcyBhbiBleHRyYSAncHJldmlldycgY29udHJvbCB0byB0aGUgcmlnaHQgb2YgdGhlICdtYXJrZXInCgljb250cm9sLgoJRklMRURMRzk1X0hhbmRsZV9HZXRGaWxlUGF0aCgpIGRpZCBub3QgcmV0dXJuIHRoZSBwYXRoIC0gaXQgd2Fzbid0Cgljb21iaW5pbmcgdGhlIHBhdGggd2l0aCB0aGUgZmlsZW5hbWUuCgoyMDAzLTAzLTA2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbGlicmFyeS9sZHQuYzoKCUhhcmRjb2RlIHNldF90aHJlYWRfYXJlYSBzeXNjYWxsIG51bWJlciB0byBhdm9pZCB0cm91YmxlIHdpdGggYnJva2VuCgloZWFkZXJzLgoKCSogZGxscy9udGRsbC9sb2FkZXIuYywgZGxscy9udGRsbC9udGRsbF9taXNjLmgsIGluY2x1ZGUvbW9kdWxlLmgsCgkgIGxvYWRlci9tb2R1bGUuYywgbG9hZGVyL3BlX2ltYWdlLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCS0gaW1wbGVtZW50ZWQgTGRyR2V0UHJvY2VkdXJlQWRkcmVzcyBhbmQgbWFkZSB1c2Ugb2YgaXQgZm9yCgkgIEdldFByb2NBZGRyZXNzCgktIGltcGxlbWVudGVkIExkckdldERsbEhhbmRsZSBhbmQgbWFkZSB1c2Ugb2YgaXQgaW4gR2V0TW9kdWxlSGFuZGxlCgktIHJlbW92ZWQgTU9EVUxFX0RsbFRocmVhZERldGFjaCBmcm9tIGxvYWRlci9tb2R1bGUuYyAoc2hvdWxkIGhhdmUKCSAgYmVlbiByZW1vdmVkIGluIGEgcHJldmlvdXMgcGF0Y2gpCgoJKiBkbGxzL29wZW5nbDMyL21ha2Vfb3BlbmdsLCBkbGxzL29wZW5nbDMyL29wZW5nbDMyLnNwZWMsIGRsbHMvb3BlbmdsMzIvd2dsLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJU3VwcG9ydCAnc3R1Yicgd2dsR2V0RXh0ZW5zaW9uc1N0cmluZ0VYVCBmdW5jdGlvbi4KCgkqIGRsbHMvZHNvdW5kL2NhcHR1cmUuYywgZGxscy9kc291bmQvZHNvdW5kX21haW4uYywKCSAgZGxscy9kc291bmQvZHNvdW5kX3ByaXZhdGUuaCwgZGxscy9kc291bmQvbWl4ZXIuYywKCSAgZGxscy9kc291bmQvcHJpbWFyeS5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUFkZGVkIGEgY29uZmlndXJhdGlvbiBvcHRpb24gZm9yIHNldHRpbmcgdGhlIGhhcmR3YXJlIGFjY2VsZXJhdGlvbgoJbGV2ZWwganVzdCBsaWtlIHRoZSBkaXJlY3Qgc291bmQgY29udHJvbCBwYW5lbCBhcHAuCglNb3JlIHdvcmsgb24gdGhlIGZ1bGwgZHVwbGV4IGludGVyZmFjZSBzbyB0aGUgY29tcGlsZSB3YXJuaW5nIGlzIG5vCglsb25nZXIgZ2VuZXJhdGVkLiAgRnVsbCBkdXBsZXggaW50ZXJmYWNlIGlzIHN0aWxsIHN0dWJiZWQgb3V0LgoJTW92ZWQgZnVsbCBkdXBsZXggbWl4ZXIgcmVzZXQgZml4IGludG8gd2luZW9zcyBkcml2ZXIgd2hlcmUgaXQKCWJlbG9uZ3MuCglBZGRlZCBzb21lIG1vcmUgbG9ja2luZyBmaXhlcy4KCUNhcHR1cmUgYW5kIGZ1bGwgZHVwbGV4IGFyZSBub3cgc3RhYmxlLgoKCSogaW5jbHVkZS9kc291bmQuaDogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUZpeGVkIGEgRklYTUUgZm9yIGZ1bGwgZHVwbGV4LgoKCSogZGxscy9jb21tZGxnL3ByaW50ZGxnLmMsIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmM6CglUb255IExhbWJyZWd0cyA8dG9ueV9sYW1icmVndHNAdGVsdXNwbGFuZXQubmV0PgoJSmFuaXRvcmlhbC4gR2V0IHJpZCBvZiBXLT5BIGNhbGwuCgoJKiBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYzogQWRhbSBHdW5keSA8YXJnQGN5YmVyc2NpZW5jZS5jb20+CglIYW5kbGUgY29lcmNpbmcgVlRfRElTUEFUQ0ggaW50byBWVF9QVFIuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6IEFkYW0gR3VuZHkgPGFyZ0BjeWJlcnNjaWVuY2UuY29tPgoJVFJFRVZJRVdfVXBkYXRlU2Nyb2xsQmFycygpIG5vdyBjb3BlcyB3aXRoIGFuIGVtcHR5IHRyZWUuCgoyMDAzLTAzLTA1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9udGRsbC9NYWtlZmlsZS5pbiwgZG9jdW1lbnRhdGlvbi9jb25maWd1cmluZy5zZ21sLAoJICBkb2N1bWVudGF0aW9uL3dpbmUuY29uZi5tYW4sIGRvY3VtZW50YXRpb24vd2luZS5tYW4uaW4sCgkgIGluY2x1ZGUvbW9kdWxlLmgsIGxvYWRlci9lbGYuYywgbG9hZGVyL2xvYWRvcmRlci5jLCBsb2FkZXIvbW9kdWxlLmMsCgkgIGxvYWRlci9uZS9tb2R1bGUuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJUmVtb3ZlZCBTTyBsb2FkaW5nIHR5cGUuCgoJKiBwcm9ncmFtcy93Y21kL3djbWRtYWluLmM6IFN5bHZhaW4gUGV0cmVvbGxlIDxzcGV0cmVvbGxlQHlhaG9vLmZyPgoJQWxsb3cgdG8gcnVuIGF1dG9leGVjLmJhdCB3aGVuIGxhdW5jaGluZyB3Y21kLCBpdCB3YXMgYnJva2VuIGR1ZSB0byBhCglmdW5jdGlvbiBjaGFuZ2UuCgoJKiBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmM6IFZpdGFsaXkgTWFyZ29sZW4gPHdpbmUtcGF0Y2hAa2lldmluZm8uY29tPgoJQWRkIGZldyBTRkdBT19DQU4qIGF0dHJpYnV0ZXMgdG8gc3VwcG9ydGVkIGxpc3QuCgoJKiB0b29scy9leGFtaW5lLXJlbGF5OiBEdWFuZSBDbGFyayA8ZGNsYXJrQGFrYW1haWwuY29tPgoJQWRkIGZ1bGwgbGlzdGluZyBmb3JtYXQgb3B0aW9uLgoJRml4IGFuIGluZmluaXRlIGxvb3AgaWYgdGhlIGxhc3QgbGluZSBpcyBhIHBhcnRpYWwgbGluZS4KCgkqIGRsbHMvZHNvdW5kL3NvdW5kM2QuYzogUm9rIE1hbmRlbGpjIDxyb2ttYW5kZWxqY0Bob3RtYWlsLmNvbT4KCUNoYW5nZWQgc29tZSBzdHVmZiBzbyBkaXN0YW5jZSBhdHRlbnVhdGlvbiB3b3JrcyBmb3IgYm90aCAzZAoJcHJvY2Vzc2luZyBtb2Rlcy4KCjIwMDMtMDMtMDQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmMsIGRsbHMvbnRkbGwvc2lnbmFsX3Bvd2VycGMuYywKCSAgZGxscy9udGRsbC9zaWduYWxfc3BhcmMuYywgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLAoJICBzY2hlZHVsZXIvY2xpZW50LmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNlcnZlci9jb250ZXh0X2kzODYuYywKCSAgc2VydmVyL2NvbnRleHRfcG93ZXJwYy5jLCBzZXJ2ZXIvY29udGV4dF9zcGFyYy5jLCBzZXJ2ZXIvcHJvY2Vzcy5jLAoJICBzZXJ2ZXIvcHRyYWNlLmMsIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RocmVhZC5oLCBzZXJ2ZXIvdHJhY2UuYzoKCVVzZSBTSUdVU1IxIGluc3RlYWQgb2YgU0lHU1RPUCB0byBzdXNwZW5kIHRocmVhZHMuCgoJKiBkbGxzL3dpbm1tL3Rlc3RzL3dhdmUuYywgZGxscy93aW5tbS93aW5tbS5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUFkZGVkIHdhdmVJbiB0ZXN0cy4KCgkqIGZpbGVzL3Byb2ZpbGUuYzoKCUZpeGVkIGludCBjb252ZXJzaW9uIGluIEdldFByaXZhdGVQcm9maWxlSW50IHNvIHRoYXQgYWxsIHRoZSB0ZXN0cwoJc3VjY2VlZC4KCgkqIGRsbHMvbnRkbGwvbG9hZGVyLmMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgaW5jbHVkZS9tb2R1bGUuaCwKCSAgaW5jbHVkZS93aW50ZXJubC5oLCBsb2FkZXIvbW9kdWxlLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsCgkgIHNjaGVkdWxlci90aHJlYWQuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJLSBhZGRlZCBMZHIqIGluZm9ybWF0aW9uIHRvIGluY2x1ZGUvd2ludGVybmwuaAoJLSBleHBvcnRlZCBhIGZldyBmdW5jdGlvbnMvZ2xvYmFsIHZhcnMgZnJvbSBtb2R1bGUuaCB3aGlsZSB3ZSBtb3ZlCgkgIGNvZGUgZnJvbSBsb2FkZXIvbW9kdWxlLmMgdG8gZGxscy9udGRsbC9sb2FkZXIuYwoJLSBpbXBsZW1lbnRlZCBMZHJTaHV0ZG93blByb2Nlc3MsIExkclNodXRkb3duVGhyZWFkIGFuZAoJICBMZHJEaXNhYmxlVGhyZWFkQ2FsbG91dHNGb3JEbGwgKGFuZCBtYWRlIHVzZSBvZiB0aGVtKQoKCSogZGxscy9rZXJuZWwvdGVzdHMvLmN2c2lnbm9yZSwgZGxscy9rZXJuZWwvdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMva2VybmVsL3Rlc3RzL3Byb2ZpbGUuYzoKCVN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJQWRkZWQgdGVzdHMgZm9yIEdldFByaXZhdGVQcm9maWxlSW50LgoKCSogZGxscy9jb21jdGwzMi90YWIuYzogVml0YWxpeSBNYXJnb2xlbiA8d2luZS1wYXRjaEBraWV2aW5mby5jb20+CglGaXggaW52aXNpYmxlIHRhYnMgaW4gVGFiQ29udHJvbHMgd2l0aCBmaXhlZCB0YWIgd2lkdGguCgoJKiBkb2N1bWVudGF0aW9uL3NhbXBsZXMvY29uZmlnOiBTeWx2YWluIFBldHJlb2xsZSA8c3BldHJlb2xsZUB5YWhvby5mcj4KCURvY3VtZW50IFtXaW5NTV0gZHJpdmVycyBvcHRpb25zLgoKCSogZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWMsIGRsbHMvbXN2Y3J0L3RpbWUuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgX2RheWxpZ2h0IHN0dWIgaW50LCBhbmQgX19wX19kYXlsaWdodCBmdW5jdGlvbi4KCgkqIHByb2dyYW1zL3dpbmVkYmcvZGJnLnksIHByb2dyYW1zL3dpbmVkYmcvZGVidWdnZXIuaCwKCSAgcHJvZ3JhbXMvd2luZWRiZy9pbnR2YXIuaCwgcHJvZ3JhbXMvd2luZWRiZy93aW5lZGJnLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIHN1cHBvcnQgZm9yIEN0cmwtQyBoYW5kbGluZyBpZiBub3QgcnVubmluZyBpbiBhIGNvbnNvbGUuCglBZGRlZCAobWFpbnRlbmFuY2UpIGNvbmZpZ3VyYXRpb24gdmFyIHRvIHRyaWdnZXIgZXh0ZXJuYWwgZGVidWdnZXIgb24KCXdpbmVkYmcncyBleGNlcHRpb25zLgoKCSogZGxscy9zaGx3YXBpL3N0cmluZy5jOgoJUm9sZiBLYWxiZXJtYXR0ZXIgPHJvbGYua2FsYmVybWF0dGVyQGNpdGVuZy5jb20+CglGaXggZW5kbGVzcyBsb29wIGluIFN0clBCcmtXLgoKCSogZGxscy9vcGVuZ2wzMi9tYWtlX29wZW5nbCwgZGxscy9vcGVuZ2wzMi9vcGVuZ2xfZXh0LmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSB1cGRhdGUgdG8gbGF0ZXN0IEdMIHNwZWMgZmlsZXMKCS0gYWRkZWQgS1RYIEJ1ZmZlciBSZWdpb24gZXh0ZW5zaW9uCgoJKiBkbGxzL3dpbmVkb3MvZG9zZXhlLmgsIGRsbHMvd2luZWRvcy9kb3N2bS5jLCBkbGxzL3dpbmVkb3MvaW50MzEuYywKCSAgZGxscy93aW5lZG9zL2ludGVycnVwdHMuYzoKCUp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCU1vdmUgcmVhbCBtb2RlIGludGVycnVwdCBlbXVsYXRpb24gY29kZSB0byBmaWxlIGludGVycnVwdHMuYy4KCVJlbW92ZSBsYXN0IHdyYXBwZXIgY2hlY2sgZnJvbSBpbnQzMSBoYW5kbGVyLgoJTW92ZSBSTS9QTSBoYXJkd2FyZSBpbnRlcnJ1cHQgZW11bGF0aW9uIGNvZGUgdG8gc2VwYXJhdGUgZnVuY3Rpb25zLgoKCSogZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZGxscy93aW5lZG9zL2ludDIxLmMsIG1zZG9zL2ludDIxLmM6CglKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglNb3ZlIGRlY29kaW5nIG9mIGxvbmcgZmlsZSBuYW1lIGZ1bmN0aW9ucyB0byB3aW5lZG9zLgoJTW92ZSBzb21lIGludDIxIGZ1bmN0aW9ucyB0byB3aW5lZG9zLgoKCSogZmlsZXMvZHJpdmUuYzogRW5yaWNvIEhvcm4gPGZhcm1ib3kxQHN1YmRpbWVuc2lvbi5jb20+CglTaW1wbGUgd2F5IHRvIGdldCB0aGUgbGFiZWwgb2YgbWl4ZWQtbW9kZSBjZC4KCgkqIGNvbnRyb2xzL21lbnUuYzogVG9ueSBMYW1icmVndHMgPHRvbnlfbGFtYnJlZ3RzQHRlbHVzcGxhbmV0Lm5ldD4KCUphbml0b3JpYWwuIEdldCByaWQgb2YgVy0+QSBjYWxsLgoKCSogZGxscy9vbGVhdXQzMi92YXJpYW50LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJVmFyQWRkOiBzZXQgJ3JjJyBjb3JyZWN0bHkgZnJvbSBCU1RSIGFkZGl0aW9uLgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSGFuZGxlIFZUX1BUUi0+VlRfVkFSSUFOVCBhcmd1bWVudHMgb2YgSW52b2tlLgoKCSogcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbnNvbGUuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJLSBhZGRlZCBhYmlsaXR5IHRvIHVzZSAtLWJhY2tlbmQ9KGN1cnNlc3x1c2VyKSBhcyB3aW5lY29uc29sZSBwYXJhbWV0ZXIKCS0gcmV3cm90ZSB3aW5lY29uc29sZSBjb21tYW5kIGxpbmUgb3B0aW9uIHBhcnNpbmcKCgkqIHByb2dyYW1zL3dpbmVjb25zb2xlL2N1cnNlcy5jOiBFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUluIGN1cnNlcyBiYWNrZW5kLCBhcHBseSB0aGUgcXVpY2stZWRpdCBkaXJlY3RpdmUgZnJvbSByZWdpc3RyeS4KCgkqIGRsbHMvZHNvdW5kL2J1ZmZlci5jLCBkbGxzL2Rzb3VuZC9jYXB0dXJlLmMsCgkgIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmMsIGRsbHMvZHNvdW5kL2Rzb3VuZF9wcml2YXRlLmgsCgkgIGRsbHMvZHNvdW5kL21peGVyLmMsIGRsbHMvZHNvdW5kL3Rlc3RzL2Rzb3VuZC5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUZpeGVkIGNvZGUgdG8gaGFuZGxlIGZ1bGwgZHVwbGV4IHByb3Blcmx5LgoJQWRkZWQgc3VwcG9ydCBmb3IgY2FwdHVyZSBkcml2ZXIgKGRpc2FibGVkKS4KCUZpeGVkIGRpcmVjdCBzb3VuZCBjYXB0dXJlIHRlc3QgdG8gaGFuZGxlIG5vdGlmaWNhdGlvbnMgcHJvcGVybHkuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYywgaW5jbHVkZS9kc2RyaXZlci5oOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUNhcHR1cmUgdGhyZWFkIGNoZWNrcyBxdWV1ZSBmb3IgbW9yZSBoZWFkZXJzIGJlZm9yZSBnaXZpbmcgZXJyb3IuCglDYXB0dXJlIGRyaXZlciB3b3JrIHN0YXJ0ZWQuCgoyMDAzLTAyLTI4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbG9hZGVyL21vZHVsZS5jOgoJT25seSBkbyB0aGUgdW5sb2FkX2RsbCBzZXJ2ZXIgY2FsbCBhdCB0aGUgdGltZSB3ZSBhY3R1YWxseSB1bmxvYWQgdGhlCglkbGwuCgoJKiBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90aHJlYWQuaDoKCVBldGVyIEh1bm5pc2V0dCA8cGV0ZXJAdHJhbnNnYW1pbmcuY29tPgoJU3VzcGVuZGVkIHRocmVhZHMgc2hvdWxkIG5vdCBhY3F1aXJlIHN5bmNocm9uaXphdGlvbiBvYmplY3RzLgoKCSogZG9jdW1lbnRhdGlvbi9mYXEuc2dtbDogQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJLSBzdXBwb3J0ZWQgUGxhdGZvcm1zIGRpZG4ndCBtZW50aW9uIE1hY09TIFggcHJvbWluZW50bHkgZW5vdWdoIGJ5CgkgIGZhci4uLgoJLSBhZGQgc29tZSBVUkxzLCBjb3JyZWN0IFVSTCBoYW5kbGluZwoJLSByZW1vdmUgbGludXguY29yZWwuY29tLCBhcyBpdCdzIERFQUQgOi1cCgoyMDAzLTAyLTI3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jLCBpbmNsdWRlL3RocmVhZC5oLCBzY2hlZHVsZXIvc3lzZGVwcy5jLAoJICB0b29scy93aW5lYnVpbGQvcmVsYXkuYzoKCVByb3Blcmx5IHNhdmUvcmVzdG9yZSAlZ3MgcmVnaXN0ZXIgYWNyb3NzIDE2LWJpdCBjYWxscy4KCgkqIGNvbnRyb2xzL2VkaXQuYywgZGxscy9nZGkvLmN2c2lnbm9yZSwgZGxscy9nZGkvTWFrZWZpbGUuaW4sCgkgIGRsbHMvZ2RpL2dkaTE2LmMsIGRsbHMvZ2RpL3ByaW50ZHJ2LmMsIGRsbHMva2VybmVsLy5jdnNpZ25vcmUsCgkgIGRsbHMva2VybmVsL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC91dHRodW5rLmMsCgkgIGRsbHMvbXN2aWRlby8uY3ZzaWdub3JlLCBkbGxzL21zdmlkZW8vTWFrZWZpbGUuaW4sCgkgIGRsbHMvbXN2aWRlby9tc3ZpZGVvMTYuYywgZGxscy9zZXR1cGFwaS8uY3ZzaWdub3JlLAoJICBkbGxzL3NldHVwYXBpL01ha2VmaWxlLmluLCBkbGxzL3NldHVwYXBpL3ZpcnRjb3B5LmMsCgkgIGRsbHMvdXNlci8uY3ZzaWdub3JlLCBkbGxzL3VzZXIvTWFrZWZpbGUuaW4sIGRsbHMvdXNlci9ob29rMTYuYywKCSAgZGxscy91c2VyL2RkZS9kZGVtbDE2LmMsIGRsbHMvdXNlci9wcm9wZXJ0eS5jLCBkbGxzL3VzZXIvdXNlcjE2LmMsCgkgIGRsbHMvdXNlci93bmQxNi5jLCBkbGxzL3dpbmFzcGkvLmN2c2lnbm9yZSwgZGxscy93aW5hc3BpL01ha2VmaWxlLmluLAoJICBkbGxzL3dpbmFzcGkvd2luYXNwaTE2LmMsIGRsbHMvd2lubW0vLmN2c2lnbm9yZSwKCSAgZGxscy93aW5tbS9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS9tZXNzYWdlMTYuYywKCSAgZGxscy93aW5tbS9tbXN5c3RlbS5jLCBpbmNsdWRlL3dvd250MzIuaCwgb2JqZWN0cy9kYy5jLAoJICBvYmplY3RzL2ZvbnQuYywgb2JqZWN0cy9tZXRhZmlsZS5jLCB3aW5kb3dzL2RyaXZlci5jLAoJICB3aW5kb3dzL3BhaW50aW5nLmM6CglSZXBsYWNlZCBtb3N0IHVzZXMgb2YgdGhlIGF1dG8tZ2VuZXJhdGVkIGdsdWUgY29kZSBieSBleHBsaWNpdCBjYWxscwoJdG8gV09XQ2FsbGJhY2sxNkV4LgoKCSogZGxscy9zaGVsbDMyL3NobGZvbGRlci5jOiBBbGJlcnRvIE1hc3NhcmkgPGFtYXNzYXJpQHByb2dyZXNzLmNvbT4KCUZpeGVzIHRvIElTaGVsbEZvbGRlcjo6R2V0QXR0cmlidXRlc09mOgoJLSBiZWZvcmUgY29tcHV0aW5nIHRoZSBmbGFncyBmb3IgdGhlIHJlcXVlc3RlZCBlbnRyeSwgcmVzZXQgdGhlIGJpdHMKCSAgd2UgZG9uJ3Qgc3VwcG9ydCwgb3Igd2Ugd2lsbCB0ZWxsIHNvbWV0aGluZyB3ZSBkaWRuJ3Qgd2FudCB0by4KCS0gaW5zdGVhZCBvZiB1c2luZyBhbiBoZXhhZGVjaW1hbCBtYXNrIGZvciB0aGUgdW5zdXBwb3J0ZWQgZmxhZ3MsIHVzZQoJICBhIG1hc2sgbWFkZSBvZiB0aGUgc3VwcG9ydGVkIG9uZXMKCS0gcmVwbGFjZSB0aGUgb2JzY3VyZSBoZXhhZGVjaW1hbCB2YWx1ZXMgd2l0aCB0aGUgcHJvcGVyIG1hY3JvcwoKCSogZGxscy9rZXJuZWwvd293dGh1bmsuYywgc2NoZWR1bGVyL3RocmVhZC5jOgoJTW92ZWQgQ3JlYXRlVGhyZWFkMTYgdG8ga2VybmVsLCBhbmQgbWFkZSBpdCB1c2UgV09XQ2FsbGJhY2sxNi4KCgkqIGRvY3VtZW50YXRpb24vZGVidWdnZXIuc2dtbCwgcHJvZ3JhbXMvd2luZWRiZy9pbnR2YXIuaCwKCSAgcHJvZ3JhbXMvd2luZWRiZy93aW5lZGJnLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCVJlbW92ZWQgbm8gbG9uZ2VyIG5lZWRlZCBVc2VYVGVybSBpbnRlcm5hbCB2YXJpYWJsZS4KCgkqIHByb2dyYW1zL3djbWQvYnVpbHRpbnMuYywgcHJvZ3JhbXMvd2NtZC9kaXJlY3RvcnkuYywKCSAgcHJvZ3JhbXMvd2NtZC93Y21kbWFpbi5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CgktIGRvbid0IGNyZWF0ZSBhIG5ldyBjb25zb2xlIHVwb24gc3RhcnR1cAoJLSBubyBsb25nZXIgYXNzdW1lIHdlJ3JlIGFsd2F5cyBhdHRhY2hlZCB0byBhIGNvbnNvbGUKCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL2dkaS9NYWtlZmlsZS5pbjoKCUdldCByaWQgb2Ygd2luMTZkcnYgZGlyZWN0b3J5LgoKCSogZGxscy9nZGkvTWFrZWZpbGUuaW4sIGRsbHMvZ2RpL2RyaXZlci5jLCBkbGxzL2dkaS9nZGkuZXhlLnNwZWM6CglSZW1vdmVkIHRoZSAxNi1iaXQgZ3JhcGhpY3MgZHJpdmVyIHN1cHBvcnQ7IHRoaXMgaGFzIGJlZW4gYnJva2VuIGZvciBhCglsb25nIHRpbWUgYW55d2F5LgoKMjAwMy0wMi0yNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL2tlcm5lbF9tYWluLmMsIGRsbHMvd2luZWRvcy9pbnQzMS5jLCBpbmNsdWRlL21pc2NlbXUuaCwKCSAgaW5jbHVkZS9zZWxlY3RvcnMuaCwgaW5jbHVkZS93aW5lL2xpYnJhcnkuaCwgbGlicmFyeS9sZHQuYywKCSAgbG9hZGVyL3Rhc2suYywgbWVtb3J5L2luc3RyLmMsIG1lbW9yeS9zZWxlY3Rvci5jLAoJICBzY2hlZHVsZXIvc3lzZGVwcy5jLCBzY2hlZHVsZXIvdGhyZWFkLmM6CglNb3ZlZCBMRFQgc2VsZWN0b3IgYWxsb2NhdGlvbiByb3V0aW5lcyB0byBsaWJ3aW5lLgoJQWRkZWQgc3VwcG9ydCBmb3IgY29ycmVjdCBsb2NraW5nIG9mIGFsbCBMRFQgb3BlcmF0aW9ucy4KCUFkZGVkIHNlcGFyYXRlIGZ1bmN0aW9ucyB0byBtYW5pcHVsYXRlIHRoZSAlZnMgc2VsZWN0b3IsIHdoaWNoIGFsbG93cwoJdXNpbmcgYSBnbG9iYWwgR0RUIHNlbGVjdG9yIG9uIHJlY2VudCBMaW51eCBrZXJuZWxzLgoKCSogZmlsZXMvZmlsZS5jOgoJTW92ZUZpbGVbQVddIHNob3VsZCBzaW1wbHkgY2FsbCBNb3ZlRmlsZUV4W0FXXS4gU2hvdWxkIGZpeCBpc3N1ZQoJcmVwb3J0ZWQgYnkgUm9kZXJpY2sgQ29sZW5icmFuZGVyLgoKCSogZGxscy93aW5lZG9zL3NvdW5kYmxhc3Rlci5jOiBTeWx2YWluIFBldHJlb2xsZSA8c3BldHJlb2xsZUB5YWhvby5mcj4KCUltcGxlbWVudGVkIERTUCBWZXJzaW9uIGNvbW1hbmQuCgoJKiB0b29scy93cmMvd3JjLmMsIHRvb2xzL3dyYy93cmMuaCwgdG9vbHMvd3JjL3dyYy5tYW4sCgkgIHRvb2xzL3dyYy93cml0ZXJlcy5jLCB0b29scy93cmMvd3JpdGVyZXMuaDoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglSZW1vdmUgYXNzZW1ibHkgZ2VuZXJhdGlvbiBmcm9tIHdyYy4KCgkqIGRsbHMvd2luZWRvcy9pbnQxMC5jLCBpbmNsdWRlL21pc2NlbXUuaCwgbXNkb3MvZG9zbWVtLmM6CglKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglNb3ZlIGNvbnRyb2xsZXIgaW5mbyBhbmQgc3RhdGUvZnVuY3Rpb25hbGl0eSBpbmZvIGluaXRpYWxpemF0aW9uIHRvCgl3aW5lZG9zLiBDb252ZXJ0IG1hbnkgaW5jb3JyZWN0bHkgc3RhdGljIGZpZWxkcyBpbnRvIGR5bmFtaWMKCWZpZWxkcy4gRml4IHZlc2EgbW9kZSByZXBvcnRpbmcgYW5kIHJlYWxsb2MgbWVtb3J5IGJsb2NrIGNvbnNpc3RlbmN5CgljaGVja3MuCgoJKiBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZS5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBiZWhhdmlvciB3aGVuIGNoYW5naW5nIGJvdGggc2IgYW5kIHdpbiBzaXplLCBhcyB0aGUgb3JkZXIgb2YKCW9wZXJhdGlvbiBpcyBpbXBvcnRhbnQgdG8ga2VlcCBzYiBhbHdheXMgYmlnZ2VyIHRoYW4gd2luLgoKCSogc2NoZWR1bGVyL3Byb2Nlc3MuYywgd2luZG93cy93aW5wcm9jLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCU9ubHkgcHJpbnQgNCBoZXhkaWdpdHMgZm9yIHRpZC4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jOiBNaWtlIEhlYXJuIDxtLmhlYXJuQHNpZ25hbC5xaW5ldGlxLmNvbT4KCUNoZWNrIGJvdGggcG9pbnRlcnMgaW4gR2V0Q29udGFpbmluZ1R5cGVMaWIuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBpbmNsdWRlL3dpbmJhc2UuaCwgbWVtb3J5L2dsb2JhbC5jOgoJTWlrZSBIZWFybiA8bS5oZWFybkBzaWduYWwucWluZXRpcS5jb20+CglJbXBsZW1lbnRlZCBHbG9iYWxNZW1vcnlTdGF0dXNFeCgpLgoKCSogaW5jbHVkZS9kb2NvYmouaDogTWlrZSBIZWFybiA8bS5oZWFybkBzaWduYWwucWluZXRpcS5jb20+CglBZGQgc29tZSBPTEVDTURJRHMgcHJlc2VudCBpbiBNUyBoZWFkZXJzLgoKCSogZG9jdW1lbnRhdGlvbi9hdXRob3JzLmVudCwgZG9jdW1lbnRhdGlvbi9ydW5uaW5nLnNnbWw6CglNaWtlIEhlYXJuIDxtLmhlYXJuQHNpZ25hbC5xaW5ldGlxLmNvbT4KCUFkZGVkIGEgImJhc2ljIHVzYWdlIiBzZWN0aW9uIHRoYXQgZGVhbHMgd2l0aCBpbnN0YWxsYXRpb24sCgl1bmluc3RhbGxhdGlvbiBhbmQgY29udHJvbCBwYW5lbCBhcHBsZXRzIHRvIHRoZSAiUnVubmluZyBXaW5lIiBwYXJ0IG9mCgl0aGUgdXNlcnMgZ3VpZGUuCgoyMDAzLTAyLTI1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2VydmVyL2NvbnNvbGUuYywgc2VydmVyL2RlYnVnZ2VyLmMsIHNlcnZlci9wcm9jZXNzLmMsCgkgIHNlcnZlci9wdHJhY2UuYywgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdGhyZWFkLmg6CglBZGRlZCBzZW5kX3RocmVhZF9zaWduYWwoKSBmdW5jdGlvbiBhbmQgcHJvcGVybHkgaGFuZGxlIGVycm9ycyBjYXVzZWQKCWJ5IHRoZSB0aHJlYWQgaGF2aW5nIGFscmVhZHkgZGllZCB3aGVuIHdlIHNlbmQgaXQgYSBzaWduYWwuCglVc2UgLTEgaW5zdGVhZCBvZiAwIGFzIGludmFsaWQgVW5peCBwaWQgdmFsdWUuCgoJKiBzZXJ2ZXIvcmVnaXN0cnkuYzogQXZvaWQgc29tZSByZWR1bmRhbnQgY2FsbHMgdG8gdGltZShOVUxMKS4KCXRvdWNoX2tleSgpIG11c3Qgbm90IGJlIGNhbGxlZCBpbiBjcmVhdGVfa2V5LgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVR1cm4gb2ZmIC1XcG9pbnRlci1hcml0aCBpZiBpdCBnZW5lcmF0ZXMgd2FybmluZ3Mgd2hlbiBpbmNsdWRpbmcKCXN0cmluZy5oLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOiBUaW0gU2VnYWxsIDx0aW1AY29iYmVyLmNvbT4KCUFjY2VwdCBlaXRoZXIgVFZJX1JPT1Qgb3IgTlVMTCBmb3IgdGhlIHBhcmVudCB0byBpbXBseSBzb3J0IHRoZSBlbnRpcmUKCXRyZWUuCgoJKiBwcm9ncmFtcy93Y21kL2RpcmVjdG9yeS5jLCBwcm9ncmFtcy93Y21kL3djbWQuaCwKCSAgcHJvZ3JhbXMvd2NtZC93Y21kbWFpbi5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CgktIG1hZGUgc3VwcG9ydCBmb3IgcGFnZWQgb3V0cHV0IGEgZ2VuZXJpYyBmZWF0dXJlIGluIHdjbWQKCS0gcmV3cm90ZSBESVIgY29tbWFuZCBhY2NvcmRpbmdseQoKCSogcHJvZ3JhbXMvd2luZWNvbnNvbGUvdXNlci5jOiBFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUZvcmJpZHMgc2VsZWN0aW5nIChmb3IgY2xpcGJvYXJkKSBhcmVhcyBsYXJnZXIgdGhhbiB0aGUgYWN0dWFsCglzY3JlZW4tYnVmZmVyIHNpemUuCgoJKiBkbGxzL3dpbmluZXQvaHR0cC5jLCBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYywKCSAgZGxscy93aW5pbmV0L3Rlc3RzL2h0dHAuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUludGVybmV0T3BlblVybEEgKGh0dHAvcyBjYXNlKTogVXNlIGNsaWVudCBmb3IgSHR0cE9wZW5SZXF1ZXN0QSwgZG9uJ3QKCWluc2VydCBIT1NUOiB0d2ljZS4KCUh0dHBBZGRSZXF1ZXN0SGVhZGVyc0E6IGFsbG93IGxwc3pIZWFkZXIgPT0gTlVMTC4KCgkqIHRvb2xzL3dpbmV3cmFwLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglObyBuZWVkIHRvIHN1cHBvcnQgLW13aW5kb3dzIGFzIGEgc3lub25pbSBmb3IgLW1ndWk6IGl0J3MgYSBnY2MtaXNtCgl0aGF0IGlzIGhhbmRsZWQgaW4gd2luZWdjYy4KCUxpbmsgaW4gR0RJIG9ubHkgaW4gZ3VpIG1vZGUuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9waXBlLmM6IERhbiBLZWdlbCA8ZGFua0BrZWdlbC5jb20+CglOb3cgY29tcGlsZXMgb24gd2luZG93cy4gIEFkZGVkIGEgY291cGxlIG1vcmUgY2hlY2tzLgoKCSogZGxscy9udGRsbC9jZHJvbS5jOiBHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCURlZmluZSBDRF9TRUNTIGFuZCBDRF9GUkFNRVMgYWxzbyBvbiBub24tTGludXggc3lzdGVtcy4gIEF2b2lkIGEKCW5vbi1wb3J0YWJsZSBUUkFDRSBvbiBub24tTGludXggc3lzdGVtcy4KCjIwMDMtMDItMjQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsIHNjaGVkdWxlci9wcm9jZXNzLmMsCgkgIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci90aHJlYWQuYywKCSAgc2VydmVyL3RocmVhZC5oLCBzZXJ2ZXIvdHJhY2UuYzoKCVBhc3MgdGhlIHBpZCBvZiB0aGUgbmV3IHByb2Nlc3MgaW4gdGhlIG5ld19wcm9jZXNzIHJlcXVlc3QsIGRvbid0CglkZXBlbmQgb24gdGhlIHBhcmVudCBwaWQgdG8gZmluZCB0aGUgc3RhcnR1cCBpbmZvLgoKCSogZGxscy9jb21jdGwzMi9yZWJhci5jLCBkbGxzL3dpbmVkb3MvdmdhLmMsIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jLAoJICBkbGxzL3dpbnNvY2svc29ja2V0LmM6CglNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmRlPgoJUmVtb3ZlIHNvbWUgdW5yZWFjaGFibGUgY29kZS4KCgkqIGRsbHMvZHNvdW5kL3Rlc3RzL2Rzb3VuZC5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJRml4ZWQgYSBwcm9ibGVtIGdldHRpbmcgdGhlIEdVSUQgdG8gY29tcGlsZSB1bmRlciB3aW5kb3dzIGFuZCB3aW5lLgoKCSogZGxscy93aW5lZG9zL2ludDEwLmM6IEdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJRml4IFRSQUNFIGZvcm1hdCBzdHJpbmcuCgoJKiBkbGxzL2RpbnB1dC9kaW5wdXRfbWFpbi5jLCBkbGxzL2RpbnB1dC9rZXlib2FyZC9tYWluLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJSW1wbGVtZW50IEdldERldmljZUluZm8gYW5kIEdldE9iamVjdEluZm8gZm9yIHRoZSBrZXlib2FyZCBkZXZpY2UuCgoJKiBwcm9ncmFtcy93aW5lY29uc29sZS9kaWFsb2cuYywKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbnNvbGVfRGUucmMsCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25zb2xlX0VuLnJjLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZV9Gci5yYywKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbnNvbGVfSHUucmMsCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25zb2xlX1poLnJjLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZV9yZXMuaDoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgY2hlY2tzIHdoZW4gZWRpdGluZyB3aW5kb3cgYW5kIHNiIHNpemUgc28gdGhhdCB0aGV5IGFyZSBrZXB0Cgljb25zaXN0ZW50LgoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYzogRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBoYW5kbGluZyBmb3IgUFNOUkVUX0lOVkFMSUQgaW4gUFNOX0FQUExZIG5vdGlmaWNhdGlvbi4KCgkqIHByb2dyYW1zL3dpbmVjb25zb2xlL3JlZ2lzdHJ5LmM6IEVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJU2V0IGEgZGVmYXVsdCA1MCBsaW5lcyBpbiBoaXN0b3J5IGZvciBjb25zb2xlIGFwcHMuCgoJKiBwcm9ncmFtcy93Y21kL3djbWRtYWluLmM6IERhbiBLZWdlbCA8ZGFua0BrZWdlbC5jb20+CglNYWtlICdjbWQgL2MgY2wgL01VTUJMRSBmb28uYycgcGFzcyAvTVVNQkxFIHRvIGNsLgoKCSogZGxscy9kc291bmQvY2FwdHVyZS5jOiBNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmRlPgoJQWRkIG1pc3NpbmcgTGVhdmVDcml0aWNhbFNlY3Rpb24ncyBpbiBlcnJvciBwYXRoLgoKCSogcHJvZ3JhbXMvd2luZWRiZy93aW5lZGJnLmM6IE1hcmN1cyBNZWlzc25lciA8bWVpc3NuZXJAc3VzZS5kZT4KCVByaW50IG91dCBuYW1lIG9mIGZsb2F0IGV4Y2VwdGlvbnMuCgoJKiB0b29scy93aW5lZ2NjLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglMaW5rIGluIHNoZWxsMzIgb25seSBpbiBndWkgbW9kZS4KCUFkZCBhbGwgdGhlIHN0YW5kYXJkIGRlZmluZXMgdGhhdCBNaW5HVyBwcm92aWRlcyAod2l0aCB0aGUgZXhjZXB0aW9uCglvZiBfX01JTkdXX18sIHRoYXQncyBNaW5HVyBwcmVyb2dhdGl2ZSkuCglEbyBub3QgcGFzcyBhbG9uZyBsaW5rZXIgb3B0aW9ucyB3aGVuIG9ubHkgY29tcGlsaW5nLgoKCSogaW5jbHVkZS9kc291bmQuaDogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUFkZGVkIGRlZmluaXRpb25zIGZvciBEaXJlY3RTb3VuZEZ1bGxEdXBsZXggYW5kIG1vdmVkIHNvbWUgR1VJRHMKCWFyb3VuZC4KCjIwMDMtMDItMTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBBTk5PVU5DRSwgQ2hhbmdlTG9nLCBWRVJTSU9OLCBjb25maWd1cmU6IFJlbGVhc2UgMjAwMzAyMTkuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjIwMDMtMDItMTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC90ZXN0cy8uY3ZzaWdub3JlOiBBZGRlZCBwaXBlLm9rLgoKCSogQVVUSE9SUywgZGxscy9zaGVsbDMyL2F1dGhvcnMuaDogVXBkYXRlZCBhdXRob3JzIGxpc3QuCgoJKiBzZXJ2ZXIvY29uc29sZS5jOiBFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIHJlYWQtb3ZlcmZsb3cgc3BvdHRlZCBieSB2YWxncmluZC4KCgkqIGRsbHMvd2luZWRvcy9pbnQxMC5jLCBkbGxzL3dpbmVkb3MvdmdhLmM6CglKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglJZ25vcmUgZ2V0IHNoYWRvdyBidWZmZXIgZnVuY3Rpb24uCglSZW1lbWJlciB0byBzeW5jaHJvbml6ZSBWR0EgZGlzcGxheSBvbiBwcm9ncmFtIGV4aXQgYmVjYXVzZSB1cGRhdGUKCXRocmVhZCBtYXkgbm90IGhhdmUgdGltZSB0byBydW4uCgoJKiBkbGxzL01ha2VmaWxlLmluLCBkbGxzL21ha2VfZGxsczoKCUZpeGVkIGluc3RhbGxhdGlvbiBvcmRlciBvZiBsaW5rYWJsZSBkbGxzLgoKCSogZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZGxscy93aW5lZG9zL2ludDIxLmMsIGluY2x1ZGUvbWlzY2VtdS5oLAoJICBtZW1vcnkvZ2xvYmFsLmMsIG1zZG9zL2Rvc21lbS5jLCBtc2Rvcy9pbnQyMS5jOgoJSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJTW92ZSByZXNpemUgbWVtb3J5IGJsb2NrIHRvIHdpbmVkb3MgYW5kIG1ha2UgaXQgcmVzaXplIGluIHBsYWNlIGFuZAoJd29yayBjb3JyZWN0bHkgZXZlbiB3aGVuIHRyeWluZyB0byBhbGxvY2F0ZSB0b28gbXVjaCBtZW1vcnkuCgoJKiBkbGxzL21zdmNydC9maWxlLmMsIGRsbHMvbXN2Y3J0L3Rlc3RzL2ZpbGUuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVJvdWdoIGltcGxlbWVudGF0aW9uIG9mIF9PX1RFWFQvX09fQklOQVJZIHRyYW5zbGF0aW9uIGJ5IGRvaW5nIHNpbmdsZQoJYnl0ZSByZWFkL3dyaXRlcyBpbiBfT19URVhUIG1vZGUgYW5kIENSL0xSIGhhbmRsaW5nLgoJZnB1dC9nZXR3YyBtdXN0IHJlYWQgbXVsdGlieXRlIGNoYXJhY3RlcnMgaW4gX09fVEVYVC4KCUFkZGVkIHRlc3QgY2FzZXMgZm9yIF9PX1RFWFQvX09fQklOQVJZIGZpbGUgaGFuZGxpbmcgYW5kIGZnZXR3cy4KCgkqIGRsbHMvbnRkbGwvY2Ryb20uYzogV2FsZGVjayBTY2h1dHplciA8c2NodXR6ZXJAbWF0aC5ydXRnZXJzLmVkdT4KCS0gU29tZSBzeXN0ZW1zL2RyaXZlcyBhcmUgdmVyeSBzbG93IHRvIHJlYWQgdGhlIFRPQy4gVG8gYWRkcmVzcyB0aGlzCgkgIGlzc3VlLCB3ZSBhcmUgY2FjaGluZyBpdCBpbnNpZGUgdGhlIGRyaXZlci4KCS0gV2luZG93cyB3aWxsIHNlZWsgd2hpbGUgbm90IHBsYXlpbmcsIExpbnV4IHdpbGwgbm90LiBXZSBhcmUKCSAgcHJvdmlkaW5nIGJldHRlciBjb21wYXRpYmlsaXR5IHdpdGggV2luZG93cyBieSBhbHNvIGNhY2hpbmcgdGhlCgkgIGN1cnJlbnQgcG9zaXRpb24uCgoJKiBkbGxzL3dpbm1tL21jaWNkYS9tY2ljZGEuYzoKCVdhbGRlY2sgU2NodXR6ZXIgPHNjaHV0emVyQG1hdGgucnV0Z2Vycy5lZHU+CglBdm9pZCBwbGF5aW5nIGRhdGEgdHJhY2tzLgoKCSogcmVsYXkzMi9yZWxheTM4Ni5jOiBHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCUF2b2lkIHdhcm5pbmdzLgoKCSogZGxscy9rZXJuZWwvc3luYy5jLCBkbGxzL2tlcm5lbC90ZXN0cy9NYWtlZmlsZS5pbiwKCSAgZGxscy9rZXJuZWwvdGVzdHMvcGlwZS5jOgoJRGFuIEtlZ2VsIDxkYW5rQGtlZ2VsLmNvbT4KCUFkZGVkIGNoZWNrIGZvciBpbGxlZ2FsIHBpcGUgbmFtZXMuCglBZGRlZCByZWdyZXNzaW9uIHRlc3QuCgoJKiB3aW5kb3dzL3N5c21ldHJpY3MuYywgd2luZG93cy9zeXNwYXJhbXMuYzoKCUFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCUNvbnZlcnQgVHdpcHMgdmFsdWVzIGZyb20gdGhlIHJlZ2lzdHJ5LgoKCSogY29udHJvbHMvZWRpdC5jOiBTYW5kZXIgdmFuIExlZXV3ZW4gPHNhbmRlcnZsQHhzNGFsbC5ubD4KCURpZXRyaWNoIFRlaWNrbmVyIDxEaWV0cmljaF9UZWlja25lckB0LW9ubGluZS5kZT4KCS0gRml4ZWQgaW5jb3JyZWN0IHVuZG8gYnVmZmVyIHNpemUgKHByZXZpb3VzIGNvZGUgY2F1c2VkIGhlYXAKCSAgY29ycnVwdGlvbiB3aGVuIHVzaW5nIGJhY2tzcGFjZSBtYW55IHRpbWVzKS4KCS0gQWx3YXlzIGtpbGwgdGltZXIgd2hlbiBsZWZ0IG1vdXNlIGJ1dHRvbiBpcyByZWxlYXNlZCBhbmQgaW4gY2FwdHVyZWQKCSAgc3RhdGUuCgoJKiBkbGxzL3JwY3J0NC9ycGNfYmluZGluZy5jLCBkbGxzL3JwY3J0NC9ycGNfYmluZGluZy5oLAoJICBkbGxzL3JwY3J0NC9ycGNfbWVzc2FnZS5jLCBkbGxzL3JwY3J0NC9ycGNfc2VydmVyLmMsCgkgIGRsbHMvcnBjcnQ0L3JwY19zZXJ2ZXIuaDoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJRm9yIGJldHRlciBjb25jdXJyZW5jeSwgc2VwYXJhdGUgdGhlIGNvbm5lY3Rpb25zIGZyb20gdGhlIGJpbmRpbmdzLgoKCSogaW5jbHVkZS93aW50ZXJubC5oOiBUaG9tYXMgTWVydGVzIDx0aG9tYXMubWVydGVzQHQtbW9iaWxlLmF0PgoJLSBJbXBsZW1lbnQgUnRsQ2hhclRvSW50ZWdlciwgUnRsRXh0ZW5kZWRNYWdpY0RpdmlkZSwgUnRsVXBwZXJDaGFyLAoJICBSdGxJbnQ2NFRvVW5pY29kZVN0cmluZywgUnRsSW50ZWdlclRvQ2hhciwgUnRsSW50ZWdlclRvVW5pY29kZVN0cmluZywKCSAgUnRsTGFyZ2VJbnRlZ2VyVG9DaGFyLCBSdGxVbmljb2RlU3RyaW5nVG9JbnRlZ2VyIGFuZAoJICBSdGxVcGNhc2VVbmljb2RlQ2hhci4KCS0gVXNlIHRvdXBwZXJXIGluc3RlYWQgb2YgdG91cHBlciBpbiBSdGxDb21wYXJlVW5pY29kZVN0cmluZy4KCgkqIGRsbHMvbXN2Y3J0L2Rpci5jOiBXYXJyZW4gQmFpcmQgPFdhcnJlbl9CYWlyZEBjaW1tZXRyeS5jb20+CgktIEF2b2lkIHBvc3NpYmxlIHNlZyBmYXVsdCB3aGVuIGNhbGxpbmcgVFJBQ0Ugd2l0aCBOVUxMIHN0cmluZyBwb2ludGVycy4KCS0gRml4IGJhZCBzaWRlLWVmZmVjdCBvZiBtYWtlcGF0aCBvbiBpbnB1dCBwYXJhbWV0ZXJzLgoKCSogc2NoZWR1bGVyL3Byb2Nlc3MuYzogV2FycmVuIEJhaXJkIDxXYXJyZW5fQmFpcmRAY2ltbWV0cnkuY29tPgoJSW5jcmVhc2Ugc2l6ZSBvZiBpbnN1ZmZpY2llbnRseSBiaWcgc3RhY2sgYWxsb2NhdGVkIGJ1ZmZlciB1c2VkIGZvcgoJZXJyb3IgbWVzc2FnZXMgaW4gUFJPQ0VTU19Jbml0V2luZS4KCgkqIGRsbHMva2VybmVsL2VkaXRsaW5lLmM6IEp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCVdoZW4gdXBkYXRpbmcgdGhlIGVkaXRlZCBsaW5lLCByZW1lbWJlciB0byB1cGRhdGUgYXR0cmlidXRlcywgdG9vLgoKCSogcHJvZ3JhbXMvd2luZWRiZy9kZWJ1Z2dlci5oLCBwcm9ncmFtcy93aW5lZGJnL2hhc2guYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJLSByZW1vdmVkIHVudXNlZCBmdW5jdGlvbjogU2V0U3ltYm9sVmFsdWUKCS0gZW5oYW5jZWQgYSBiaXQgQWRkU3ltYm9sIHJlZ2FyZGluZyBpbnZhbGlkIHN5bWJvbCBtYW5hZ2VtZW50IChhbmQKCSAgZW5oYW5jZWQgaXRzIHRyYWNlcykKCS0gbm93IHByaW50aW5nIHR5cGUgaW5mb3JtYXRpb24gaW4gJ2luZm8gc3ltJwoKCSogcHJvZ3JhbXMvd2luZWRiZy9zdGFicy5jOiBFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCS0gYWRkZWQgcGFyc2luZyBvZiBDKysgaW5oZXJpdGVuY2UgaW5mb3JtYXRpb24KCS0gYWRkZWQgYW4gaW50ZXJuYWwgdHJhY2UgZm9yIGRpc3BsYXlpbmcgZXJyb3JzIGluIHR5cGVkZWYgcGFyc2luZwoJLSBlbmhhbmNlZCBFTEYgc3ltYm9sIG1hbmFnZW1lbnQgKGRpcmVjdCBjYWxsIHRvIEFkZFN5bWJvbCBpbiBFTEYKCSAgaGVhZGVyKQoKCSogZGxscy9yaWNoZWRpdC9yaWNoZWRpdC5jOiBEdWFuZSBDbGFyayA8ZGNsYXJrQGFrYW1haWwuY29tPgoJQSBmaXggdG8gZ2V0IGVkaXQgY29udHJvbCBzY3JvbGxzIGJhcnMgdG8gZHJhdyBpbiB0aGUgY29ycmVjdAoJcG9zaXRpb24uCgoJKiBkbGxzL250ZGxsL3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMvbnRkbGwvdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvbnRkbGwvdGVzdHMvbGFyZ2VfaW50LmMsIGRsbHMvbnRkbGwvdGVzdHMvcnRsc3RyLmM6CglUaG9tYXMgTWVydGVzIDx0aG9tYXMubWVydGVzQHQtbW9iaWxlLmF0PgoJVGVzdHMgZm9yIFJ0bENoYXJUb0ludGVnZXIsIFJ0bEV4dGVuZGVkTWFnaWNEaXZpZGUsIFJ0bFVwcGVyQ2hhciwKCVJ0bEludDY0VG9Vbmljb2RlU3RyaW5nLCBSdGxJbnRlZ2VyVG9DaGFyLCBSdGxJbnRlZ2VyVG9Vbmljb2RlU3RyaW5nLAoJUnRsTGFyZ2VJbnRlZ2VyVG9DaGFyLCBSdGxVbmljb2RlU3RyaW5nVG9JbnRlZ2VyIGFuZAoJUnRsVXBjYXNlVW5pY29kZUNoYXIuCgoJKiBkbGxzL250ZGxsL2xhcmdlX2ludC5jLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvbnRkbGwvcnRsLmMsCgkgIGRsbHMvbnRkbGwvcnRsc3RyLmM6CglUaG9tYXMgTWVydGVzIDx0aG9tYXMubWVydGVzQHQtbW9iaWxlLmF0PgoJLSBJbXBsZW1lbnQgUnRsQ2hhclRvSW50ZWdlciwgUnRsRXh0ZW5kZWRNYWdpY0RpdmlkZSwgUnRsVXBwZXJDaGFyLAoJICBSdGxJbnQ2NFRvVW5pY29kZVN0cmluZywgUnRsSW50ZWdlclRvQ2hhciwgUnRsSW50ZWdlclRvVW5pY29kZVN0cmluZywKCSAgUnRsTGFyZ2VJbnRlZ2VyVG9DaGFyLCBSdGxVbmljb2RlU3RyaW5nVG9JbnRlZ2VyIGFuZAoJICBSdGxVcGNhc2VVbmljb2RlQ2hhci4KCS0gVXNlIHRvdXBwZXJXIGluc3RlYWQgb2YgdG91cHBlciBpbiBSdGxDb21wYXJlVW5pY29kZVN0cmluZy4KCgkqIGluY2x1ZGUvd2luaW5ldC5oOiBBbGJlcnRvIE1hc3NhcmkgPGFtYXNzYXJpQHByb2dyZXNzLmNvbT4KCS0gdGhlIGZpcnN0IGFyZ3VtZW50IGluIHNldmVyYWwgVW5pY29kZSBmdW5jdGlvbnMgd2FzIGFuIEFTQ0lJIHN0cmluZwoJICBpbnN0ZWFkIG9mIGEgVW5pY29kZSBvbmUKCS0gYWRkZWQgbW9yZSBtYWNybyBkZWZpbml0aW9ucwoKCSogaW5jbHVkZS9ycGNwcm94eS5oOiBPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCSJJbXBsZW1lbnRlZCIgSUlEX0JTXyogbWFjcm9zLgoKCSogc2VydmVyL3F1ZXVlLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIG1pc3NpbmcgcmVsZWFzZV9vYmplY3QuCgoJKiBzZXJ2ZXIvTWFrZWZpbGUuaW4sIHNlcnZlci9hc3luYy5jLCBzZXJ2ZXIvYXRvbS5jLCBzZXJ2ZXIvY2hhbmdlLmMsCgkgIHNlcnZlci9jb25zb2xlLmMsIHNlcnZlci9kZWJ1Z2dlci5jLCBzZXJ2ZXIvZGV2aWNlLmMsIHNlcnZlci9mZC5jLAoJICBzZXJ2ZXIvZmlsZS5jLCBzZXJ2ZXIvZmlsZS5oLCBzZXJ2ZXIvaGFuZGxlLmMsIHNlcnZlci9ob29rLmMsCgkgIHNlcnZlci9tYWluLmMsIHNlcnZlci9tYXBwaW5nLmMsIHNlcnZlci9uYW1lZF9waXBlLmMsCgkgIHNlcnZlci9vYmplY3QuYywgc2VydmVyL29iamVjdC5oLCBzZXJ2ZXIvcGlwZS5jLCBzZXJ2ZXIvcHJvY2Vzcy5jLAoJICBzZXJ2ZXIvcHJvY2Vzcy5oLCBzZXJ2ZXIvcXVldWUuYywgc2VydmVyL3JlZ2lzdHJ5LmMsCgkgIHNlcnZlci9yZXF1ZXN0LmMsIHNlcnZlci9zZWxlY3QuYywgc2VydmVyL3NlcmlhbC5jLCBzZXJ2ZXIvc21iLmMsCgkgIHNlcnZlci9zbmFwc2hvdC5jLCBzZXJ2ZXIvc29jay5jLCBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90aHJlYWQuaCwKCSAgc2VydmVyL3RpbWVyLmM6CglNb3ZlZCBhbGwgcmVmZXJlbmNlcyB0byBmaWxlIGRlc2NyaXB0b3JzIG91dCBvZiB0aGUgZ2VuZXJpYyBvYmplY3QKCXN0cnVjdHVyZS4KCUNoYW5nZWQgdGhlIHBvbGwoKS1yZWxhdGVkIHJvdXRpbmVzIHRvIGRlYWwgd2l0aCBmaWxlIGRlc2NyaXB0b3JzCglpbnN0ZWFkIG9mIG9iamVjdHMgYW5kIGludGVncmF0ZWQgcG9sbCBzdXBwb3J0IGludG8gZmQuYy4KCjIwMDMtMDItMTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL21zdmNydC9tYWluLmMsIGRsbHMvbnRkbGwvY3JpdHNlY3Rpb24uYywKCSAgZGxscy9udGRsbC9kZWJ1Z3Rvb2xzLmMsIGRsbHMvdXNlci9ob29rLmMsIGdyYXBoaWNzL3gxMWRydi9kaWIuYywKCSAgaWYxNjMyL3JlbGF5LmMsIGxvYWRlci9wZV9pbWFnZS5jLCByZWxheTMyL3JlbGF5Mzg2LmMsCgkgIHJlbGF5MzIvc25vb3AuYywgc2NoZWR1bGVyL3RocmVhZC5jLCB3aW5kb3dzL3NweS5jOgoJUHJpbnQgdGhyZWFkIGlkcyBpbiB0cmFjZXMgd2l0aCBvbmx5IDQgZGlnaXRzIG5vdyB0aGF0IHRoZXkgYXJlIHNtYWxsCglpbnRlZ2Vycy4KCgkqIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmM6IFByaW50IGRsbCBuYW1lIHRvbyBmb3Igc3R1YiBleGNlcHRpb25zLgoKCSogZGxscy94MTFkcnYvd2lucG9zLmMsIHdpbmRvd3Mvbm9uY2xpZW50LmM6CglEdWFuZSBDbGFyayA8ZGNsYXJrQGFrYW1haWwuY29tPgoJQ29ycmVjdGx5IGVuY29kZSB3UGFyYW0gZm9yIFdNX1NZU0NPTU1BTkQsU0NfU0laRSBtZXNzYWdlcy4KCgkqIGRsbHMvY3J5cHQzMi9jcnlwdDMyLnNwZWM6IEFsYmVydG8gTWFzc2FyaSA8YW1hc3NhcmlAcHJvZ3Jlc3MuY29tPgoJQWRkZWQgc3R1YiBmb3IgQ3J5cHRVbnByb3RlY3REYXRhLgoKCSogZG9jdW1lbnRhdGlvbi9wYXRjaGVzLnNnbWw6CglUb255IExhbWJyZWd0cyA8dG9ueV9sYW1icmVndHNAdGVsdXNwbGFuZXQubmV0PgoJQWRkIGVudHJ5IGZvciBubyBodG1sIGluIHBhdGNoZXMuCgoJKiB0b29scy93aW5lZ2NjLmMsIHRvb2xzL3dpbmV3cmFwLmM6CglTdGV2ZW4gRWR3YXJkcyA8c3RldmVuX2VkNDE1M0B5YWhvby5jb20+CglQb3J0aW5nIGZpeGVzLgoKCSogZGxscy9udGRsbC9ydGxiaXRtYXAuYywgZGxscy9udGRsbC90ZXN0cy9ydGxiaXRtYXAuYzoKCVRob21hcyBNZXJ0ZXMgPHRob21hcy5tZXJ0ZXNAdC1tb2JpbGUuYXQ+CgktIEZpeCBzbWFsbCBidWcgaW4gUnRsRmluZE1vc3RTaWduaWZpY2FudEJpdC4gSXQgcmV0dXJuZWQgc29tZXRpbWVzCgkgIHdyb25nIHJlc3VsdHMgaWYgbW9yZSB0aGVuIG9uZSBiaXQgd2FzIHNldC4KCS0gVXBkYXRlIHRoZSB0ZXN0IGNhc2VzIGFzIHdlbGwuCgoyMDAzLTAyLTE3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2VydmVyL21hcHBpbmcuYzoKCU1ha2Ugc3VyZSBnZXRfZmlsZV9zaXplIHVzZXMgYSB2YWxpZCBmZCAoc3BvdHRlZCBieSBVd2UgQm9ubmVzKS4KCgkqIGxvYWRlci9sb2Fkb3JkZXIuYzoKCVNldCBkZWZhdWx0IGxvYWRvcmRlciB0byBuYXRpdmUgZm9yIGRsbHMgdGhhdCBjb250YWluIGFuIGV4cGxpY2l0CglwYXRoLgoKCSogZG9jdW1lbnRhdGlvbi9jdnMtcmVncmVzc2lvbi5zZ21sOgoJVG9ueSBMYW1icmVndHMgPHRvbnlfbGFtYnJlZ3RzQHRlbHVzcGxhbmV0Lm5ldD4KCVVwZGF0ZWQgcmVncmVzc2lvbiB0ZXN0aW5nIGRvY3VtZW50YXRpb24uCgoJKiBkbGxzL3dpbm1tL3dpbm1tLmM6IEVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJQWxsb3dlZCB3YXZlSW5NZXNzYWdlIHRvIHVzZSBwaHlzaWNhbCBpbmZvcm1hdGlvbiAoYXMgd2F2ZU91dCBkb2VzKS4KCgkqIGRsbHMvcnBjcnQ0L25kcl9tYXJzaGFsbC5jOiBPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCU5EUiBtYXJzaGFsbGluZyBmaXhlcy4KCgkqIGRsbHMvcnBjcnQ0L2Nwc2YuYzogT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglNYWtlIE5kckRsbFJlZ2lzdGVyUHJveHkgdXNlIHRoZSBpbnRlcmZhY2Ugc3R1YiBoZWFkZXIgaW5zdGVhZCBvZiB0aGUKCWludGVyZmFjZSBwcm94eSBoZWFkZXIgdG8gYXZvaWQgc3R1Ymxlc3MgcHJveHkgYW1iaWd1aXRpZXMuCgoJKiBwcm9ncmFtcy93aW5lZGJnL2RlYnVnZ2VyLmgsIHByb2dyYW1zL3dpbmVkYmcvdHlwZXMuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJLSBhZGRlZCBHZXROYW1lKCkgdG8gcmV0cmlldmUgdHlwZSBuYW1lCgktIHJlaW1wbGVtZW50ZWQgRHVtcFR5cGVzIHNvIHRoYXQgaXQgcmVhbGx5IGR1bXBzIHRoZSB0eXBlcyBjb250ZW50CgktIG5vdyBwcmludGluZyB0eXBlIGluZm9ybWF0aW9uIGluICdpbmZvIHN5bScKCgkqIHByb2dyYW1zL3dpbmVkYmcvZGJnLnk6IEVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJTW92ZWQgZXhwciBmcmVlaW5nIHdoZW4gdHJhbnNsYXRpbmcgYSBjb21tYW5kIChubyBsb25nZXIgZG9uZSBvbiBlYWNoCgljb21tYW5kIHdoaWNoIHVzZXMgYW4gZXhwcikuCgoJKiBkbGxzL2Rzb3VuZC9zb3VuZDNkLmM6IFJvayBNYW5kZWxqYyA8cm9rbWFuZGVsamNAaG90bWFpbC5jb20+CglSZWltcGxlbWVudGVkIGRpc3RhbmNlIGF0dGVudWF0aW9uIGZvcm11bGEuCglSZW1vdmVkIGNvbmluZyBmb3JtdWxhIHNpbmNlIGkgYmVsaWV2ZSBpdCdzIGluYXBwcm9wcmlhdGUuCgoyMDAzLTAyLTE1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jb21tZGxnL2NkbGcuaCwgZGxscy9jb21tZGxnL2NkbGdfQ2EucmMsCgkgIGRsbHMvY29tbWRsZy9jZGxnX0RhLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19EZS5yYywKCSAgZGxscy9jb21tZGxnL2NkbGdfRW4ucmMsIGRsbHMvY29tbWRsZy9jZGxnX0VzLnJjLAoJICBkbGxzL2NvbW1kbGcvY2RsZ19GaS5yYywgZGxscy9jb21tZGxnL2NkbGdfRnIucmMsCgkgIGRsbHMvY29tbWRsZy9jZGxnX0h1LnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19JdC5yYywKCSAgZGxscy9jb21tZGxnL2NkbGdfSmEucmMsIGRsbHMvY29tbWRsZy9jZGxnX05sLnJjLAoJICBkbGxzL2NvbW1kbGcvY2RsZ19QbC5yYywgZGxscy9jb21tZGxnL2NkbGdfUHQucmMsCgkgIGRsbHMvY29tbWRsZy9jZGxnX1J1LnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19TaS5yYywKCSAgZGxscy9jb21tZGxnL2NkbGdfU2sucmMsIGRsbHMvY29tbWRsZy9jZGxnX1N2LnJjLAoJICBkbGxzL2NvbW1kbGcvY2RsZ19XYS5yYywgZGxscy9jb21tZGxnL2NkbGdfWmgucmMsCgkgIGRsbHMvY29tbWRsZy9mb250ZGxnLmM6CglTaGFjaGFyIFNoZW1lc2ggPHdpbmUtcGF0Y2hlc0BzdW4uY29uc3VtZXIub3JnLmlsPgoJLSBJbXBsZW1lbnRlZCB0d28gbG9va3VwIHRhYmxlcyBmb3IgdGhlIHNhbXBsZSBmb250cy4gVGhlIGZpcnN0LAoJICAiQ0hBUlNFVF9PUkRFUiIsIGlzIGZvciBjb252ZXJ0aW5nIGNvZGVwYWdlIHRvIG9yZGluYWwgY2hhcnNldCBudW0sCgkgIGFuZCB0aGUgc2Vjb25kLCAiU0FNUExFX0xBTkdfVEVYVCIsIGlzIGZvciBnaXZpbmcgdGhlIGFjdHVhbCBzYW1wbGUKCSAgdGV4dC4KCS0gUmVtb3ZlZCBhbGwgcmVmZXJlbmNlcyB0byBjaGFuZ2luZyB0aGUgZm9udCBkaXJlY3RseSBpbiBzdGM1LgoJLSBNb2RpZmllZCB0aGUgIkludmFsaWRhdGVSZWN0IiBjYWxscyB0byBpbnZhbGlkYXRlIHRoZSByZWN0IHdoZXJlCgkgIHN0YzUgaXMsIHJhdGhlciB0aGFuIHN0YzUgaXRzZWxmLgoJLSBBZGRlZCBoYW5kbGluZyBvZiBXTV9QQUlOVCB0aGF0IGRyYXdzIHRoZSBzYW1wbGUgdGV4dCwgcHJvcGVybHkKCSAgdHJ1bmNhdGVkLgoJLSBSZW1vdmVkIGhhbmRsaW5nIG9mIFdNX0NUTENPTE9SIC0gbm8gbG9uZ2VyIG5lY2Nlc3NhcnkuCgoJKiBkbGxzL2Rzb3VuZC9idWZmZXIuYywgZGxscy9kc291bmQvY2FwdHVyZS5jLAoJICBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jLCBkbGxzL2Rzb3VuZC9kc291bmRfcHJpdmF0ZS5oLAoJICBkbGxzL2Rzb3VuZC9wcmltYXJ5LmMsIGRsbHMvZHNvdW5kL3Rlc3RzL2Rzb3VuZC5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUFkZGVkIHN1cHBvcnQgZm9yIGRpcmVjdCBzb3VuZCBjYXB0dXJlIGFuZCBhIHJlYWwgZGlyZWN0IHNvdW5kIGNhcHR1cmUKCWRyaXZlci4gQ2FwdHVyZSBub3cgd29ya3Mgd2l0aCBzb21lIHNraXBwaW5nLiBGdWxsIGR1cGxleCBkb2VzIG5vdCBidXQKCUkgd2lsbCBiZSB3b3JraW5nIG9uIHRoYXQgbmV4dC4KCgkqIGRsbHMvd2lubW0vd2F2ZW1hcC93YXZlbWFwLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglBZGRlZCBhZGRpdGlvbmFsIGZvcm1hdHMuCglGaXhlZCBhIGZldyBidWdzIGluIHJlYWQvd3JpdGUgcG9zaXRpb25zIHdoZW4gdGhlIGZvcm1hdCBpcyBtYXBwZWQKCXVzaW5nIGFjbS4KCUZpeGVkIGEgYnVnIHdoZXJlIHRoZSBudW1iZXIgb2Ygd2F2ZU91dCBkZXZpY2VzIGlzIHVzZWQgd2hlbiBpdGVyYXRpbmcKCW92ZXIgd2F2ZUluIGRldmljZXMuCgoyMDAzLTAyLTE0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglTdGFydGVkIHRvIGFkZCBzdXBwb3J0IGZvciBhIHJlYWwgZGlyZWN0IHNvdW5kIGNhcHR1cmUgZHJpdmVyLgoJQ2hhbmdlZCB0aGUgY2FwdHVyZSBmcmFnbWVudCBzaXplIGJ1dCB0aGlzIHN0aWxsIG5lZWRzIHR1bmluZyBmb3IgYmVzdAoJcGVyZm9ybWFuY2UuCgoJKiBpbmNsdWRlL2RzZHJpdmVyLmgsIGluY2x1ZGUvZHNvdW5kLmg6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQWRkZWQvZml4ZWQgc29tZSBkZWZpbml0aW9ucyBmb3IgZGlyZWN0IHNvdW5kIGNhcHR1cmUuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IER1YW5lIENsYXJrIDxkY2xhcmtAYWthbWFpbC5jb20+CglTdXBwb3J0IHRoZSB1bmRvY3VtZW50ZWQgYmVoYXZpb3Igb2YgZGVsZXRpbmcgY29sdW1uIHplcm8uCgoJKiBzZXJ2ZXIvc25hcHNob3QuYzogRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCByZWdyZXNzaW9uIGluIHByb2Nlc3MgcGFyZW50IGhhbmRsaW5nLgoKCSogZGxscy9vbGUzMi9ycGMuYzogRGFuIEtlZ2VsIDxkYW5rQGtlZ2VsLmNvbT4KCVJvbGwgbG9vcCBiYWNrIHVwIHRvIGF2b2lkIGNvZGUgZHVwbGljYXRpb24uCgoJKiBpbmNsdWRlL3dpbmdkaS5oLCBvYmplY3RzL2VuaG1ldGFmaWxlLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJLSBtYWtlIHdvcmxkIHRyYW5zZm9ybXMgd29yayBpbiBFTUZzCgktIGZpeCBkZWNsYXJhdGlvbiBvZiBHRElDT01NRU5UXyogbWFjcm9zCgktIHJlZnVzZSB0byBsb2FkIHVuYWxpZ25lZCBFTUZzCgktIGZpeCBTZXRXaW5NZXRhRmlsZUJpdHMKCgkqIGRsbHMvbmV0YXBpMzIvbmV0YXBpMzIuYywgZGxscy9uZXRhcGkzMi9uZXRhcGkzMi5zcGVjLAoJICBkbGxzL25ldGFwaTMyL3drc3RhLmMsIGluY2x1ZGUvbG13a3N0YS5oOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJU2VwYXJhdGUgIkVudW1lcmF0ZSBIYXJkd2FyZSBBZGRyZXNzZXMiIGFzIGZ1bmN0aW9uLCBhcyBvdGhlciBuZXRhcGkzMgoJZnVuY3Rpb24gbmVlZCBpdC4KCUltcGxlbWVudGVkIGxldmVsIDAgb2YgTmV0V2tzdGFUcmFuc3BvcnRFbnVtLgoKCSogZGxscy9tc3ZjcnQvbWJjcy5jLCBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYzoKCU1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuZGU+CglJbXBsZW1lbnRlZCBfbWJzbmJjYXQuCgoJKiBmaWxlcy9kb3NfZnMuYywgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLCBzZXJ2ZXIvYXRvbS5jLAoJICBzZXJ2ZXIvY2hhbmdlLmMsIHNlcnZlci9jb25zb2xlLmMsIHNlcnZlci9jb25zb2xlLmgsCgkgIHNlcnZlci9jb250ZXh0X2kzODYuYywgc2VydmVyL2NvbnRleHRfcG93ZXJwYy5jLAoJICBzZXJ2ZXIvY29udGV4dF9zcGFyYy5jLCBzZXJ2ZXIvZGVidWdnZXIuYywgc2VydmVyL2RldmljZS5jLAoJICBzZXJ2ZXIvZXZlbnQuYywgc2VydmVyL2ZkLmMsIHNlcnZlci9maWxlLmMsIHNlcnZlci9maWxlLmgsCgkgIHNlcnZlci9oYW5kbGUuYywgc2VydmVyL2hhbmRsZS5oLCBzZXJ2ZXIvaG9vay5jLCBzZXJ2ZXIvbWFwcGluZy5jLAoJICBzZXJ2ZXIvbXV0ZXguYywgc2VydmVyL25hbWVkX3BpcGUuYywgc2VydmVyL29iamVjdC5jLAoJICBzZXJ2ZXIvb2JqZWN0LmgsIHNlcnZlci9waXBlLmMsIHNlcnZlci9wcm9jZXNzLmMsCgkgIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci9wdHJhY2UuYywgc2VydmVyL3F1ZXVlLmMsCgkgIHNlcnZlci9yZWdpc3RyeS5jLCBzZXJ2ZXIvcmVxdWVzdC5jLCBzZXJ2ZXIvcmVxdWVzdC5oLAoJICBzZXJ2ZXIvc2VsZWN0LmMsIHNlcnZlci9zZW1hcGhvcmUuYywgc2VydmVyL3NlcmlhbC5jLCBzZXJ2ZXIvc21iLmMsCgkgIHNlcnZlci9zbmFwc2hvdC5jLCBzZXJ2ZXIvc29jay5jLCBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90aW1lci5jLAoJICBzZXJ2ZXIvdHJhY2UuYywgd2luMzIvZGV2aWNlLmM6CglDaGFuZ2VkIGZkIG9wZXJhdGlvbnMgdG8gdGFrZSBhIHN0cnVjdCBmZCBpbnN0ZWFkIG9mIGEgc3RydWN0IG9iamVjdC4KCVJlbW92ZWQgZ2V0X2ZpbGVfaW5mbyBmdW5jdGlvbiBmcm9tIG9iamVjdCBvcGVyYXRpb25zLgoJQWRkZWQgZ2V0X2RldmljZV9pZCByZXF1ZXN0IHRvIGF2b2lkIGFidXNpbmcgZ2V0X2ZpbGVfaW5mby4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUNvcnJlY3RseSByZW1lbWJlciB0aGUgZmlyc3QgcGFpbnQgZXZlbnQsIGJ1dCBkZWxheSBpdGVtIG1ldHJpY3MKCWNhbGN1bGF0aW9uIHVudGlsIHdlIGFjdHVhbGx5IGhhdmUgc29tZSBpdGVtcy4KCgkqIHByb2dyYW1zL3dpbmVjb25zb2xlL2N1cnNlcy5jOiBFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCS0gZml4ZWQgbW91c2UgZXZlbnQgZ2VuZXJhdGlvbgoJLSBiZXR0ZXIgbWFuYWdlbWVudCBvZiBzb21lIGtleXMKCS0gbm93IGdlbmVyYXRpbmcgc2V2ZXJhbCB3aW5jb24tZXZlbnRzIGZvciBhIGdpdmVuIGN1cnNlcy1ldmVudAoJLSBhZGRlZCBiYXNpYyBzdXBwb3J0IGZvciBWLXNjcm9sbGluZyAoZGlzYWJsZWQgYnkgZGVmYXVsdCkKCS0gZml4ZWQgcHJpbnRpbmcgb2Ygc29tZSB1bnN1cHBvcnRlZCBjaGFyYWN0ZXJzCgoJKiBkbGxzL3dpbmVkb3MvaW50MTAuYywgZGxscy93aW5lZG9zL3ZnYS5jOgoJSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJT3V0cHV0dGluZyBiYWNrc3BhY2VzIHNob3VsZCBvbmx5IG1vdmUgdGhlIGN1cnNvci4KCVRleHQgYnVmZmVyIGNvcHkgaXMgbm93IGFsd2F5cyBpbml0aWFsaXplZCBjb3JyZWN0bHkuCglQcmVzZXJ2ZSB2aWRlbyBtZW1vcnkgZmxhZyBpcyBwYXJzZWQgYW5kIHRleHQgc2NyZWVuIGlzIG5vdyByZWFsbHkKCWNsZWFyZWQgd2hlbiBmbGFnIGlzIGNsZWFyLgoKCSogcHJvZ3JhbXMvd2luZWRiZy9pbmZvLmM6IE1pa2UgSGVhcm4gPG0uaGVhcm5Ac2lnbmFsLnFpbmV0aXEuY29tPgoJUmVtb3ZlZCB0aGUgbm9uZXhpc3RhbnQgY29tbWFuZCAiZGVidWdtc2ciIGZyb20gd2luZWRiZyBoZWxwIHNjcmVlbi4KCjIwMDMtMDItMTIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2RkcmF3L2QzZF9wcml2YXRlLmgsIGRsbHMvZGRyYXcvZDNkY29tbW9uLmMsCgkgIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywgZGxscy9kZHJhdy9kM2R2ZXJ0ZXhidWZmZXIuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglVc2UgdGhlIGR3U3RhcnRWZXJ0ZXggYXJndW1lbnQgaW4gdGhlIERyYXcqUHJpbWl0aXZlVkIgbWV0aG9kcy4KCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYzogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUNoYW5nZSBhbGdvcml0aG0gdG8gZGV0ZWN0IGxpZ2h0ZWQgLyB1bmxpZ2h0ZWQgdmVydGljZXMuCgoJKiBkbGxzL2RkcmF3L21lc2EuYywgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUhhbmRsZSB0aGUgQ09MT1JWRVJURVggcmVuZGVyIHN0YXRlLgoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWFpbi5jOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJVHJhY2UgYWZ0ZXIgdGhlIG1hdHJpeCBoYXMgYmVlbiBjb3BpZWQsIG5vdCBiZWZvcmUuCgoJKiBzZXJ2ZXIvbmFtZWRfcGlwZS5jOgoJUmVtb3ZlZCBkaXJlY3QgcmVmZXJlbmNlcyB0byB0aGUgZmlsZSBkZXNjcmlwdG9yLCB1c2UgdGhlIG5ldyBmZAoJZnVuY3Rpb25zIGluc3RlYWQgc28gdGhhdCBnZXRfZmQgd29ya3MgcHJvcGVybHkuCgoJKiBkbGxzL3NobHdhcGkvc3RyaW5nLmM6IFNlcmdlaSBUdXJjaGFub3YgPHBsdW1iZXJAcHJpbnQudmxhZC5ydT4KCS0gX1NIU3RyRHVwQUEgZm9yZ290IGFib3V0IHRlcm1pbmF0aW5nICdcMCcuCgktIFNIU3RyRHVwQSBhZGRzIGV4dHJhIHRlcm1pbmF0b3Igd2hpY2ggaXMgbm90IG5lZWRlZCBhcyB0aGUgbGVuZ3RoCgkgIHJldHVybmVkIGJ5IE11bHRpQnl0ZVRvV2lkZUNoYXIoLCwtMSwsKSBhbHJlYWR5IGluY2x1ZGVzIGl0LgoKCSogZGxscy9tc3ZjcnQvbG9jYWxlLmM6IE1hcmN1cyBNZWlzc25lciA8bWVpc3NuZXJAc3VzZS5kZT4KCUZpeCB3YXJuaW5nIGluIF9fY3J0TENNYXBTdHJpbmdBLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCUF2b2lkIHdhcm5pbmdzIGNhdXNlZCBieSBhc3NlcnQoLi4uKS4KCgkqIGRsbHMvd2luc3Bvb2wvaW5mby5jOiBEdWFuZSBDbGFyayA8ZGNsYXJrQGFrYW1haWwuY29tPgoJUmVwbGFjZSBIRUFQX3N0cmR1cEF0b1cgY2FsbCBhbmQgZGVsZXRlIGV4dHJhCglSdGxDcmVhdGVVbmljb2RlU3RyaW5nRnJvbUFzY2lpei4KCgkqIGRsbHMvZGlucHV0L2RldmljZS5jLCBkbGxzL2RpbnB1dC9rZXlib2FyZC9tYWluLmMsCgkgIGRsbHMvZGlucHV0L21vdXNlL21haW4uYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglJbXBsZW1lbnRlZCBFbnVtT2JqZWN0cyBmb3IgdGhlIGtleWJvYXJkIGRldmljZS4KCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21haW4uYzogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gZml4ZWQgR2V0VHJhbnNmb3JtCgktIGltcGxlbWVudGVkIE11bHRpcGx5VHJhbnNmb3JtCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsIGRsbHMvZGRyYXcvbWVzYV9wcml2YXRlLmg6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJQWRkZWQgZm9nZ2luZyBmb3IgdHJhbnNmb3JtZWQgdmVydGljZXMuCgoJKiBkbGxzL2RwbGF5eC9kcGxvYmJ5LmMsIGRsbHMvd2luZWRvcy9kb3N2bS5jLAoJICBkbGxzL3dpbm1tL21jaWF2aS9tY2lhdmkuYzoKCU1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuZGU+CglBZGRlZCBzb21lIG1pc3NpbmcgTGVhdmVDcml0aWNhbFNlY3Rpb24ncy4KCgkqIGRsbHMvbXN2Y3J0L21iY3MuYywgZGxscy9vbGUzMi9ycGMuYzoKCU1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuZGU+CglSZW1vdmUgZGVhZCBjb2RlIGFmdGVyIHJldHVybiBvciBwcm9wZXJseSBjb21tZW50IGl0IG91dC4KCgkqIGRvY3VtZW50YXRpb24vZmFxLnNnbWw6CglUb255IExhbWJyZWd0cyA8dG9ueV9sYW1icmVndHNAdGVsdXNwbGFuZXQubmV0PgoJQWRkIGVudHJ5IGZvciAiRXJyb3IgaW5zdGFsbGluZyBpS2VybmVsLmV4ZTogKDB4MTQwMCkiLgoKCSogZGxscy93aW5zcG9vbC9pbmZvLmM6IER1YW5lIENsYXJrIDxkY2xhcmtAYWthbWFpbC5jb20+CglXaW5zcG9vbCBleHBlY3RzIE5VTExzIHRvIGJlIHByZXNlcnZlZCBpbiBhc2NpaSB0byB1bmljb2RlCgljb252ZXJzaW9ucy4KCgkqIGxvYWRlci9lbGYuYzogV2FycmVuIEJhaXJkIDxXYXJyZW5fQmFpcmRAY2ltbWV0cnkuY29tPgoJSW5jcmVhc2Ugc2l6ZSBvZiBpbnN1ZmZpY2llbnRseSBiaWcgc3RhY2sgYWxsb2NhdGVkIGJ1ZmZlciB1c2VkIGZvcgoJZXJyb3IgbWVzc2FnZXMgaW4gRUxGX0xvYWRMaWJyYXJ5RXhBLgoKCSogZGxscy9nZGkvbWZkcnYvaW5pdC5jLCBkbGxzL2dkaS9tZmRydi9tZXRhZmlsZWRydi5oOgoJV2FycmVuIEJhaXJkIDxXYXJyZW5fQmFpcmRAY2ltbWV0cnkuY29tPgoJSW1wbGVtZW50YXRpb24gb2YgR2V0RGV2aWNlQ2FwcyBpbiBtZXRhZmlsZSBkcml2ZXIuCgoJKiBpbmNsdWRlL3dpbmdkaS5oOiBXYXJyZW4gQmFpcmQgPFdhcnJlbl9CYWlyZEBjaW1tZXRyeS5jb20+CglBZGRlZCBCWVRFIGV4cGxpY2l0IGNhc3RzIGluIFJHQiBtYWNybyBkZWZpbml0aW9uLgoKCSogcHJvZ3JhbXMvd2luZWJvb3Qvd2luZWJvb3QuYzogTWF0dGhldyBEYXZpc29uIDxtLmRhdmlzb25AdmlyZ2luLm5ldD4KCU1ha2UgdHJhY2Ugb3V0cHV0IHByb2R1Y2VkIGJ5IHdpbmVib290IG1vcmUgdXNlZnVsLgoKCSogZGxscy9kaW5wdXQvZGV2aWNlLmMsIGRsbHMvZGlucHV0L21vdXNlL21haW4uYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglSZXBvcnQgYW4gZXJyb3IgaWYgR2V0RGV2aWNlRGF0YSBpcyBjYWxsZWQgb24gYW4gVW5hY3F1aXJlZCBkZXZpY2UuCgoJKiBkb2N1bWVudGF0aW9uL3NhbXBsZXMvY29uZmlnLCB0b29scy93aW5lY29uZjoKCVRvbnkgTGFtYnJlZ3RzIDx0b255X2xhbWJyZWd0c0B0ZWx1c3BsYW5ldC5uZXQ+CglNb2RpZnkgdGhlIHdpbmVjb25mIHRhZ3Mgc28gdGhhdCB0aGUgc2FtcGxlIGNvbmZpZyBjYW4gYmUgaW5jbHVkZWQgaW4KCXRoZSBkb2N1bWVudGF0aW9uLgoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jOiBDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglGaXggY29tbWVudCBpbiBaZnJvbVpwcm9qLgoJRml4IG1pc3NpbmcgcGF0aCBpbiBsaWdodGluZyBjb2RlLgoJTW92ZSBzb21lIE9wZW5HTCBmb2cgaW5pdCB0byB0aGUgcmlnaHQgcGxhY2UuCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tYWluLmM6IENocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUltcGxlbWVudGVkIElEaXJlY3QzRERldmljZTdfTG9hZC4KCjIwMDMtMDItMTEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzZXJ2ZXIvZmlsZS5jLCBzZXJ2ZXIvbmFtZWRfcGlwZS5jLCBzZXJ2ZXIvb2JqZWN0LmgsCgkgIHNlcnZlci9yZXF1ZXN0LmMsIHNlcnZlci9zZWxlY3QuYywgc2VydmVyL3NlcmlhbC5jLCBzZXJ2ZXIvc21iLmMsCgkgIHNlcnZlci9zb2NrLmMsIHNlcnZlci90cmFjZS5jOgoJU3RldmVuIEVkd2FyZHMgPHN0ZXZlbl9lZDQxNTNAeWFob28uY29tPgoJUG9ydGluZyBmaXhlcy4KCgkqIGRsbHMvd2luZWRvcy9kb3NleGUuaCwgZGxscy93aW5lZG9zL2ludDIxLmMsIGRsbHMvd2luZWRvcy9tb2R1bGUuYywKCSAgZGxscy93aW5lZG9zL3dpbmVkb3Muc3BlYywgaW5jbHVkZS9jYWxsYmFjay5oLCBtc2Rvcy9kcG1pLmMsCgkgIG1zZG9zL2ludDIxLmM6CglKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglSZW9yZ2FuaXplIElPQ1RMIGhhbmRsaW5nLgoJTW92ZSBBU1BJIGhvb2tpbmcgdG8gd2luZWRvcy4KCU1vdmUgc29tZSBtaXNjZWxsYW5lb3VzIGZ1bmN0aW9ucyB0byB3aW5lZG9zLgoJUmVtb3ZlIHVubmVjZXNzYXJ5IGV4cG9ydHMgZnJvbSB3aW5lZG9zIGRsbC4KCgkqIGxvYWRlci9wZV9pbWFnZS5jOiBSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglJbiBQRV9maXh1cF9pbXBvcnRzIHJlcG9ydCAibW9kdWxlIGZpbGUgbm90IGZvdW5kIiBvbmx5IGluIGNhc2Ugb2YgYQoJImZpbGUgbm90IGZvdW5kIiBlcnJvci4gT3RoZXJ3aXNlIHJlcG9ydCBmYWlsdXJlIGFuZCBlcnJvciBudW1iZXIuCgoJKiBkbGxzL3JwY3J0NC9uZHJfbWFyc2hhbGwuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCB1bmRlZmluZWQgb3BlcmF0aW9uIGNvbXBpbGVyIHdhcm5pbmcuCgoJKiBkbGxzL3dpbmVkb3MvdmdhLmM6IEp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCUFkZCBsb2NraW5nIHRvIFZHQV9TZXRXaW5kb3dTdGFydC4KCU1vdmUgY29uc29sZSB1cGRhdGVzIHRvIHVwZGF0ZSB0aHJlYWQgaW5zdGVhZCBvZiBpbW1lZGlhdGVseSB3cml0aW5nCgl0byBjb25zb2xlLgoKCSogZGxscy93aW5lZG9zL2ludDEwLmM6IEp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCUFkZCBzdXBwb3J0IGZvciBWRVNBIG1vZGUgaW5mb3JtYXRpb24uCglSZW9yZ2FuaXplIGNvbnRyb2xsZXIgYW5kIHN0YXRlIGluZm9ybWF0aW9uIHJvdXRpbmVzLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQ29tcHV0ZSBtYXRyaXggb2YgZmlyc3QgcGFpbnQgd2hlbiB3ZSBhY3R1YWxseSBoYXZlIHNvbWUgaXRlbXMKCShwcm9ibGVtIGZpcnN0IHNwb3R0ZWQgJiBkZWJ1Z2dlZCBieSBEdWFuZSBDbGFyaykuCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmg6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglBZGQgbWlzc2luZyBMaXN0Vmlld19TZXRJdGVtQ291bnQgZGVjbGFyYXRpb24uCgoJKiBkbGxzL29wZW5nbDMyL21ha2Vfb3BlbmdsLCBkbGxzL29wZW5nbDMyL29wZW5nbDMyLnNwZWM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJQWRkZWQgc3R1YiBmb3IgdW5kb2N1bWVudGVkICd3Z2xHZXREZWZhdWx0UHJvY0FkZHJlc3MnIGZ1bmN0aW9uLgoKCSogZGxscy9nZGkvbWZkcnYvb2JqZWN0cy5jOiBXYXJyZW4gQmFpcmQgPFdhcnJlbl9CYWlyZEBjaW1tZXRyeS5jb20+CglGaXggd3Jvbmcgc3RydWN0dXJlIHVzZWQgdG8gZGV0ZXJtaW5lIHRoZSBzaXplIG9mIGEgbWVtY3B5IGluCglNRkRSVl9DcmVhdGVCcnVzaEluZGlyZWN0LgoKCSogZGxscy9rZXJuZWwvdGltZS5jOiBNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJRml4ZWQgdGltZSB6b25lIGNhbGN1bGF0aW9uLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvZmlsZS5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVdpdGggaGVscCBmcm9tIEVuaW8gU2NodXR0IEpyIDxlbmlvLnMuanJAb3BlcmFtYWlsLmNvbT4KCVNraXAgdGhlIG92ZXJsYXBwZWQgSS9PIHRlc3RzIG9uIGZpbGVzIG9uIFdpbjl4LgoKCSogZGxscy9tc3ZjcnQvbG9jYWxlLmMsIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglJbXBsZW1lbnRlZCBfX2NydExDTWFwU3RyaW5nQS4KCgkqIGRsbHMvY3RsM2QvY3RsM2QuYywgZGxscy9jdGwzZC9jdGwzZDMyLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAYmFpa2FsLnJ1PgoJTWFuYWdlIGludGVybmFsIGN0bDNkIGF1dG8gc3ViY2xhc3MgZmxhZy4KCgkqIGRsbHMvZGlucHV0L2RpbnB1dF9tYWluLmMsIGRsbHMvZGlucHV0L2RpbnB1dF9wcml2YXRlLmgsCgkgIGRsbHMvZGlucHV0L2tleWJvYXJkL21haW4uYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJT25seSBpbnN0YWxsIHRoZSBrZXlib2FyZCBob29rIG9uIGRldmljZSBjcmVhdGlvbi4KCgkqIHByb2dyYW1zL3dpbmVkYmcvZXh0X2RlYnVnZ2VyLmMsIHByb2dyYW1zL3dpbmVkYmcvaGFzaC5jLAoJICBwcm9ncmFtcy93aW5lZGJnL21vZHVsZS5jLCBwcm9ncmFtcy93aW5lZGJnL3NvdXJjZS5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglUcmFuc2xhdGVkIHNwcmludGYgY2FsbHMgaW50byBzbnByaW50Zi4KCgkqIHByb2dyYW1zL3dpbmVkYmcvZ2RicHJveHkuYzogRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CgktIHRyYW5zbGF0ZWQgc3ByaW50ZiBjYWxscyBpbnRvIHNucHJpbnRmCgktIGFkZGVkIGhlbHBlciBmb3Igc2VuZGluZyBzdHJpbmdzIGluIGhleCBmb3JtCgoJKiBwcm9ncmFtcy93aW5lZGJnL2RiZy55LCBwcm9ncmFtcy93aW5lZGJnL2RlYnVnZ2VyLmgsCgkgIHByb2dyYW1zL3dpbmVkYmcvd2luZWRiZy5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglBdHRhY2ggY29tbWFuZCBubyBsb25nZXIgd29ya2VkIGFzIGV4cGVjdGVkLCBmaXhlZCBpdC4KCgkqIHByb2dyYW1zL3djbWQvYnVpbHRpbnMuYywgcHJvZ3JhbXMvd2NtZC93Y21kLmgsCgkgIHByb2dyYW1zL3djbWQvd2NtZG1haW4uYzoKCVN5bHZhaW4gUGV0cmVvbGxlIDxzcGV0cmVvbGxlQHlhaG9vLmZyPgoJRml4ZWQgaGFuZGxpbmcgb2YgUEFUSCBjb21tYW5kIHdpdGggc3BhY2VzLgoKCSogdG9vbHMvd3JjL3dyYy5jLCB0b29scy93cmMvd3JjLm1hbjoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglBZGQgb3B0aW9uIHRvIHNldCBwcmVwcm9jZXNzb3IgKG5vdCB5ZXQgaW1wbGVtZW50ZWQpLgoJUmVtb3ZlIHRoZSAtTiBvcHRpb24sIHdoaWNoIGlzIGVxdWl2YWxlbnQgdG8gJy1QIGNhdCcuCgoJKiBkbGxzL2RkcmF3L2RzdXJmYWNlL2RpYi5jOiBDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglBZGQgc3VwcG9ydCBmb3IgMjQgYnBwIHRvIF9CbHRfQ29sb3JGaWxsLgoJRml4IGVuZGlhbm5lc3MgaXNzdWUgaW4gRElCX0RpcmVjdERyYXdTdXJmYWNlX0JsdC4KCgkqIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmM6IEFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCUFkZGVkIEZJWE1FIG9uIHN0dWIgZXhjZXB0aW9uLgoKMjAwMy0wMi0wMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9wcm9jZXNzLmgsIHNlcnZlci9wdHJhY2UuYywKCSAgc2VydmVyL3JlcXVlc3QuYywgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdGhyZWFkLmgsIHNlcnZlci90cmFjZS5jLAoJICB0b29scy9tYWtlX3JlcXVlc3RzOgoJTWFkZSBwcm9jZXNzIGFuZCB0aHJlYWQgaWRzIHNtYWxsIGludGVnZXJzIGluc3RlYWQgb2YgcG9pbnRlcnMuCgoJKiBkbGxzL21zdmNydC9tYmNzLmMsIGRsbHMvbXN2Y3J0L21zdmNydC5oOgoJU3RvcmUgbWJzdG9rKCkgbmV4dCBwb2ludGVyIGluIHRoZSBwZXItdGhyZWFkIGRhdGEuCgoJKiBkbGxzL21zdmNydC9tYmNzLmMsIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjOgoJTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5kZT4KCUltcGxlbWVudGVkIF9tYnN0b2sgYW5kIF9tYnNuYnNldC4KCgkqIGRsbHMvcnBjcnQ0L25kcl9tYXJzaGFsbC5jLCBkbGxzL3JwY3J0NC9uZHJfbWlzYy5oLAoJICBkbGxzL3JwY3J0NC9uZHJfb2xlLmMsIGRsbHMvcnBjcnQ0L3JwY3J0NC5zcGVjOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglJbXBsZW1lbnRlZCBtYXJzaGFsbGluZyBvZiBwb2ludGVycywgc2ltcGxlIGFuZCBjb21wbGV4IHN0cnVjdHVyZXMsCgljb25mb3JtYW50IGFuZCBjb21wbGV4IGFycmF5cywgYW5kIHVzZXItbWFyc2hhbGxlZCB0eXBlcy4KCUltcHJvdmVkIG1hcnNoYWxsaW5nIG9mIGNvbmZvcm1hbnQgc3RyaW5ncyBhbmQgaW50ZXJmYWNlIHBvaW50ZXJzIGEKCWJpdC4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGxmaWxlb3AuYywKCSAgaW5jbHVkZS9zaGxvYmouaDoKCVJvbGYgS2FsYmVybWF0dGVyIDxyLmthbGJlcm1hdHRlckBoY2NuZXQubmw+CglDaGFuZ2UgU0hDcmVhdGVEaXJlY3RvcnkgYW5kIFdpbjMyRGVsZXRlRmlsZSB0byBiZSBVbmljb2RlIG9yIEFOU0kgZGVwZW5kaW5nCglvbiBPUyB2ZXJzaW9uLiBBZGQgU2hDcmVhdGVEaXJlY3RvcnlFeCBBUEkuCgoJKiB0b29scy93cmMvUkVBRE1FLndyYywgdG9vbHMvd3JjL3dyYy5tYW46CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJTWVyZ2UgUkVBRE1FLndyYyBpbnRvIHdyYydzIG1hbiBwYWdlLgoKCSogaW5jbHVkZS93aW5nZGkuaCwgb2JqZWN0cy9wYWxldHRlLmM6CglBbmRyZXcgSm9obiBIdWdoZXMgPGh1Z2hlczIwMDJAYnRpbnRlcm5ldC5jb20+CglFeHRlbmRlZCBTZXRTeXN0ZW1QYWxldHRlVXNlIHRvIGRlYWwgd2l0aCBlcnJvciBjb25kaXRpb25zLgoKCSogZGxscy9kM2Q4L2RpcmVjdHguYzogSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCUNvcnJlY3Qgc29tZSBjYXBhYmlsaXRpZXMsIGFuZCBkZWZhdWx0IG90aGVycyB0byBmdWxseSBzdXBwb3J0ZWQgZm9yCglub3cuCgoyMDAzLTAxLTMxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS93cmNfcnNjLmg6IE5vIGxvbmdlciB1c2VkLgoKCSogZGxscy93aW5lcHMvZHJpdmVyLmMsIGRsbHMvd2luZXBzL3BzZHJ2LmgsIGluY2x1ZGUvd2luZ2RpLmg6CglBbmRyZXcgSm9obiBIdWdoZXMgPGh1Z2hlczIwMDJAYnRpbnRlcm5ldC5jb20+CgktIERldmljZUNhcGFiaWxpdGllczE2IG5vdyBjYWxscyBQU0RSVl9EZXZpY2VDYXBhYmlsaXRpZXMuCgktIEV4dERldmljZU1vZGUxNiBub3cgY2FsbHMgUFNEUlZfRXh0RGV2aWNlTW9kZS4KCS0gRXh0ZW5kZWQgc3dpdGNoIHN0YXRlbWVudCBpbiBEZXZpY2VDYXBhYmlsaXRpZXMgdG8gaGFuZGxlIG5ldwoJICBvcHRpb25zLgoJLSBBZGRlZCBjb21tZW50cyB0byBmdW5jdGlvbnMuCgoJKiBkbGxzL3VzZXIvdGV4dC5jOiBCaWxsIE1lZGxhbmQgPGJpbGxtZWRsYW5kQG1lcmN1cnlzcGVlZC5jb20+CglCZXR0ZXIgaGFuZGxpbmcgb2YgYmFkIGRhdGEgaW4gVGFiYmVkVGV4dE91dC9UYWJiZWRUZXh0RXh0ZW50CglDaGVja2VkIHdpdGg6CglhKSBOdWxsIHRhYnN0b3AgYXJyYXkgd2l0aCBub24temVybyBudW1iZXIgb2YgZW50cmllcwoJYikgTmVnYXRpdmUgbnVtYmVyIG9mIGVudHJpZXMgKE1TRE4gaXMgd3Jvbmc7IGl0IGlzIG5vdCBhbiBlcnJvcikKCWMpIFNpbmdsZSB0YWJ3aWR0aCBvZiBuZWdhdGl2ZSBzaXplCglkKSBTaW5nbGUgc3BlY2lmaWVkIHRhYndpZHRoIG9mIHplcm8gc2l6ZQoKCSogZGxscy9ycGNydDQvbmRyX21pZGwuYzogT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglSZXVzZUJ1ZmZlciBzaG91bGQgYmUgRkFMU0UgZm9yIFJQQyBjbGllbnRzLgoJU29tZSBjbGVhbnVwcyBhbmQgZWxpbWluYXRpb24gb2Ygc29tZSBkdXBsaWNhdGUgY29kZS4KCgkqIGRsbHMvcnBjcnQ0L3JwY19iaW5kaW5nLmM6IE92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJRml4ZWQgYSBidWcgaW4gQ29tcGxldGVCaW5kaW5nQS9XLgoKCSogZGxscy9ycGNydDQvcnBjcnQ0LnNwZWMsIGRsbHMvcnBjcnQ0L3JwY3J0NF9tYWluLmM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUltcGxlbWVudGVkIFJwY1JhaXNlRXhjZXB0aW9uLgoKCSogaW5jbHVkZS9ycGNkY2UuaCwgaW5jbHVkZS9ycGNuZHIuaCwgaW5jbHVkZS93aW5lL3JwY2ZjLmg6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCVNvbWUgUlBDIGRlZmluaXRpb25zLgoKCSogdG9vbHMvd3JjL3dyYy5jLCB0b29scy93cmMvd3JjLmgsIHRvb2xzL3dyYy93cmMubWFuLAoJICB0b29scy93cmMvd3JpdGVyZXMuYywgdG9vbHMvd3JjL3dyaXRlcmVzLmg6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJUmVtb3ZlIGhlYWRlciBmaWxlIGdlbmVyYXRpb24sIGFuZCByZWxhdGVkIG9wdGlvbnMuCgoJKiBkbGxzL21zdmNydC9tYmNzLmMsIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjOgoJTWFyY3VzIE1laXNzbmVyIDxtZWlzc25lckBzdXNlLmRlPgoJSW1wbGVtZW50ZWQgbWJzaWNvbGwgKHdpdGhvdXQgbG9jYWxlIGhhbmRsaW5nKS4KCgkqIGRsbHMvd2lubW0vd2lubW1fU2kucmM6IFdhbGRlY2sgU2NodXR6ZXIgPHNjaHV0emVyQG1hdGgucnV0Z2Vycy5lZHU+CglSZW1vdmVkIGludmFsaWQgY2hhci4KCjIwMDMtMDEtMzAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBwcm9ncmFtcy93aW5lZGJnL3N0YWJzLmM6IEVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJLSBBZGRlZCBleHBlcmltZW50YWwgcGFyc2luZyBmb3IgQysrIGNvZGUgKGJ1dCB3aW5lZGJnIGRvZXNuJ3Qgc3VwcG9ydAoJICBDKysgQUJJKS4KCS0gTm93IGxvYWRpbmcgc3ltYm9scyBmb3IgaW5jbHVkZWQgZmlsZXMuCgoJKiBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jOgoJWENsb3NlSU0gc29tZXRpbWVzIGNyYXNoZXMgaW4gWGxpYiwgZG9uJ3QgY2FsbCBpdC4KCgkqIGRsbHMveDExZHJ2L3dpbmRvdy5jOiBMaXUgU3BpZGVyIDxsaXVzcGlkZXJAeWFob28uY29tPgoJQWRkZWQgWE5Gb2N1c1dpbmRvdyBhdHRyaWJ1dGUgd2hlbiBjcmVhdGluZyBhIElDLgoKCSogc2VydmVyL01ha2VmaWxlLmluLCBzZXJ2ZXIvYXN5bmMuYywgc2VydmVyL2F0b20uYywgc2VydmVyL2NoYW5nZS5jLAoJICBzZXJ2ZXIvY29uc29sZS5jLCBzZXJ2ZXIvZGVidWdnZXIuYywgc2VydmVyL2RldmljZS5jLCBzZXJ2ZXIvZXZlbnQuYywKCSAgc2VydmVyL2ZkLmMsIHNlcnZlci9maWxlLmMsIHNlcnZlci9maWxlLmgsIHNlcnZlci9oYW5kbGUuYywKCSAgc2VydmVyL2hvb2suYywgc2VydmVyL21hcHBpbmcuYywgc2VydmVyL211dGV4LmMsIHNlcnZlci9uYW1lZF9waXBlLmMsCgkgIHNlcnZlci9vYmplY3QuYywgc2VydmVyL29iamVjdC5oLCBzZXJ2ZXIvcGlwZS5jLCBzZXJ2ZXIvcHJvY2Vzcy5jLAoJICBzZXJ2ZXIvcXVldWUuYywgc2VydmVyL3JlZ2lzdHJ5LmMsIHNlcnZlci9yZXF1ZXN0LmMsIHNlcnZlci9zZWxlY3QuYywKCSAgc2VydmVyL3NlbWFwaG9yZS5jLCBzZXJ2ZXIvc2VyaWFsLmMsIHNlcnZlci9zbWIuYywgc2VydmVyL3NuYXBzaG90LmMsCgkgIHNlcnZlci9zb2NrLmMsIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RpbWVyLmM6CglTdGFydGVkIG1vdmluZyBmdW5jdGlvbnMgdGhhdCBkZWFsIHdpdGggVW5peCBmaWxlIGRlc2NyaXB0b3JzIHRvIGEKCXNlcGFyYXRlIGZkIG9iamVjdC4gVGhpcyB3aWxsIGJlIG5lZWRlZCBmb3IgZmlsZSBsb2NraW5nLgoKCSogZG9jdW1lbnRhdGlvbi9kZWJ1Z2dlci5zZ21sLCBwcm9ncmFtcy93aW5lZGJnL2RiZy55LAoJICBwcm9ncmFtcy93aW5lZGJnL2RlYnVnLmwsIHByb2dyYW1zL3dpbmVkYmcvZGVidWdnZXIuaCwKCSAgcHJvZ3JhbXMvd2luZWRiZy9pbmZvLmMsIHByb2dyYW1zL3dpbmVkYmcvbW9kdWxlLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCS0gUmVtb3ZlZCBubyBsb25nZXIgdXNlZCBxdWV1ZSAmIG1vZHJlZiByZWxhdGVkIGNvbW1hbmRzLgoJLSBQcm90ZWN0ZWQgd2FsayBjb21tYW5kcyB3aGlsZSBiZWluZyBjYWxsZWQgd2l0aCBubyBwcm9jZXNzIGxvYWRlZC4KCS0gSW4gY29tbWFuZCBncmFtbWFyLCBhbGxvd2VkIHNvbWUgZXhwcmVzc2lvbnMgd2hpbGUgb25seSBudW1iZXJzCgkgIHdoZXJlIGFjY2VwdGVkLgoJLSBSZW5hbWVkICdpbmZvIG1hcHMnIGluZm8gJ3dhbGsgbWFwcycgYW5kIGxldCBpdCB3b3JrIG9uIGFueQoJICBwcm9jZXNzLgoKCSogZGxscy93c29jazMyL01ha2VmaWxlLmluLCBkbGxzL3dzb2NrMzIvcHJvdG9jb2wuYywKCSAgZGxscy93c29jazMyL3NlcnZpY2UuYywgZGxscy93c29jazMyL3dzb2NrMzIuc3BlYywgaW5jbHVkZS9uc3BhcGkuaDoKCUFuZHJldyBKb2huIEh1Z2hlcyA8aHVnaGVzMjAwMkBidGludGVybmV0LmNvbT4KCVByb3ZpZGUgc3R1YiBpbXBsZW1lbnRhdGlvbnMgb2YgR2V0VHlwZUJ5TmFtZUEgYW5kIFNldFNlcnZpY2VBLgoKCSogaW5jbHVkZS93aW5udC5oLCBsaWJyYXJ5L3BvcnQuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVJlbW92ZSB3cml0YWJsZS1zdHJpbmdzIHN1cHBvcnQuCgoJKiBkbGxzL3JpY2hlZGl0L3JpY2hlZGl0LmM6IERhbiBLZWdlbCA8ZGFua0BrZWdlbC5jb20+CglPbmx5IHdhcm4gaWYgbWVzc2FnZSBpcyA+PSBXTV9VU0VSICYmIDwgV01fQVBQLgoKCSogZGxscy9kM2Q4L2QzZDhfcHJpdmF0ZS5oLCBkbGxzL2QzZDgvZGV2aWNlLmMsIGRsbHMvZDNkOC9kaXJlY3R4LmM6CglSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCS0gRGVmZXIgb2YgSURpcmVjdDNEVmVydGV4U2hhZGVyX1NldENvbnN0YW50LCB3YWl0aW5nIGZvcgoJRHJhd1ByaW1pdGl2ZSBjYWxsLgoJLSBCZWdpbm5pbmcgb2YgVmVydGV4U2hhZGVyIGNvbnN0YW50cyBzdXBwb3J0IGludG8gc3RhdGVibG9jayAob25seQoJICBzdG9yZWQsIG5vdCBjYXB0dXJlZCB5ZXQpLgoJLSBGaXggY29tcGlhdGlvbiB3aXRoIG5pdmRpYSBHTC9nbC5oIGFuZCBtZXNhIEdsL2dsZXh0IGhlYWRlcnMgYXMKCSAgcmVwb3J0ZWQgYnkgQW5kcmV3IEpvaG4gSHVnaGVzLgoJLSBPbmUgZ2xBY3RpdmVUZXh0dXJlL2dsQWN0aXZlVGV4dHVyZUFSQiBtaXNzaW5nLgoKCSogc2NoZWR1bGVyL3B0aHJlYWQuYzogR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglBZGQgbWlzc2luZyBjYXN0cyByZWxhdGVkIHRvIHB0aHJlYWRfdC4gVHdlYWsgY29tbWVudHMuCgoJKiBkbGxzL3dpbmVkb3MvaW50MjEuYywgbXNkb3MvaW50MjEuYzogSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJRml4IGJ1ZmZlcmVkIGlucHV0IGZ1bmN0aW9uLiBBZGQgc3VwcG9ydCBmb3IgVU1CIHN1YmZ1bmN0aW9ucyB0bwoJbWVtb3J5IGFsbG9jYXRpb24gc3RyYXRlZ3kgZnVuY3Rpb24uIE1vdmUgZmxvY2sgdG8gd2luZWRvcy4KCgkqIGRsbHMvbXN2aWRlby9tc3ZpZGVvMTYuYywgZGxscy9tc3ZpZGVvL21zdmlkZW9fbWFpbi5jLAoJICBkbGxzL21zdmlkZW8vbXN2aWRlb19wcml2YXRlLmg6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCS0gbWFkZSBJQ0luZm8gY2xvc2VyIHRvIFdpbmRvd3MgYmVoYXZpb3IgKGkuZS4gbm8gbG9uZ2VyIG9wZW5zIHRoZQoJICBkcml2ZXIpCgktIGZpeGVkIG1vc3QgZW5kaWFuZXNzIHJlbGF0ZWQgYnVncyBpbiBmb3VyQ0MgaGFuZGxpbmcKCS0gYWRkZWQgZGVidWcgZnVuY3Rpb24gZm9yIHByaW50aW5nIGZvdXJDQzpzCgktIGludGVybmFsIGZ1bmN0aW9uIGZpeGVzIGFuZCBzcGVlZC11cAoKCSogcHJvZ3JhbXMvd2NtZC93Y21kcmMucmM6IERhbiBLZWdlbCA8ZGFua0BrZWdlbC5jb20+CglBZGQgcmVhbCBzeW50YXggZG9jIGZvciBMQUJFTCBjb21tYW5kLgoKMjAwMy0wMS0yOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvZDNkOC9NYWtlZmlsZS5pbiwgZGxscy9kM2Q4L2QzZDhfcHJpdmF0ZS5oLCBkbGxzL2QzZDgvZGV2aWNlLmMsCgkgIGRsbHMvZDNkOC9kaXJlY3R4LmMsIGRsbHMvZDNkOC9zaGFkZXIuYywgZGxscy9kM2Q4L3N0YXRlYmxvY2suYywKCSAgZGxscy9kM2Q4L3ZzaGFkZXJkZWNsYXJhdGlvbi5jOgoJUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CglTb21lIG5lZWRlZCBjbGVhbnVwcyBmb3IgZnV0dXJlIGR4OSBhbmQgZDNkIGNvbW1vbiBsYXllciBzdXBwb3J0OgoJICAtIHN0YXRlYmxvY2tzIHRvIElEaXJlY3QzRFN0YXRlQmxvY2tJbXBsIGludGVyZmFjZSBhbmQgbW92aW5nIGludG8KCSAgICBhIG5ldyBmaWxlIChzdGF0ZWJsb2NrLmMpCgkgIC0gc2hhZGVycyB0byBJRGlyZWN0M0QqU2hhZGVySW1wbCBpbnRlcmZhY2VzCgkgIC0gc3BsaXR0aW5nIHZzaGFkZXIgYW5kIHZzaGFkZXIgZGVjbGFyYXRpb24gYXMgaW4gZHg5IGludG8gMgoJICAgIGludGVyZmFjZXMgKGZvciBmdXR1cmUgY29tbW9uIGxheWVyIHVzZSkKCSAgLSB2c2hhZGVyIGRlY2xhcmF0aW9uIGNvZGUgdG8gYSBuZXcgZmlsZSAodnNhZGVyZGVjbGFyYXRpb24uYykKCSAgLSBkZXZpY2UgY2FsbHMgdG8gbmV3IGludGVyZmFjZXMgKHJlZGlyZWN0IHN0dWJzKQoJU2ltcGxlIHRleHR1cmUgZml4IGZvciBhIGxpdHRsZSByZWdyZXNzaW9uIGFmdGVyIGxhc3QgSmFzb24ncyBwYXRjaGVzLgoJU29tZSBjYXBzIGNvZGUgdXNpbmcgdGhlIEdML2dsZXh0LmggZGVmaW5lcyAoR0xfVkVSU0lPTl8qKS4KCgkqIHByb2dyYW1zL25vdGVwYWQvRW4ucmMsIHByb2dyYW1zL25vdGVwYWQvZGlhbG9nLmMsCgkgIHByb2dyYW1zL25vdGVwYWQvZGlhbG9nLmgsIHByb2dyYW1zL25vdGVwYWQvbWFpbi5jLAoJICBwcm9ncmFtcy9ub3RlcGFkL21haW4uaCwgcHJvZ3JhbXMvbm90ZXBhZC9ub3RlcGFkX3Jlcy5oOgoJU2hhY2hhciBTaGVtZXNoIDx3aW5lY29kZUBzdW4uY29uc3VtZXIub3JnLmlsPgoJSW1wbGVtZW50ZWQgZm9udCBzZWxlY3Rpb24uCglBZGRlZCBhY2NlbGVyYXRvcnMgcmVzb3VyY2VzLgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jOiBHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCVByb3Blcmx5ICNkZWZpbmUgc2lweF9ub2RlIGZvciBGcmVlQlNELgoKCSogZG9jdW1lbnRhdGlvbi9wYWNrYWdpbmcuc2dtbDogVG9tIFdpY2tsaW5lIDx0d2lja2xpbmUyQHRyaWFkLnJyLmNvbT4KCVVwZGF0ZWQgdGhlIFNhbXBsZSBjb25maWcKCVJlcGxhY2VkIDxwYXJhPiB3aXRoIDxwcm9ncmFtbGlzdGluZz4uCgoJKiBkbGxzL29sZTMyL29sZTIuYzogSnVlcmdlbiBTY2htaWVkIDxqLnNjaG1pZWRAdC1vbmxpbmUuZGU+CglGaXggRG9EcmFnRHJvcCBpbiBjYXNlIG9mIGNoaWxkIHdpbmRvd3MuCgoJKiBkbGxzL3gxMWRydi9kZXNrdG9wLmMsIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmMsIGluY2x1ZGUveDExZHJ2Lmg6CglXaGVuIHVzaW5nIGRlc2t0b3AgbW9kZSBhdHRhY2ggYWxsIHRocmVhZCBpbnB1dHMgdG9nZXRoZXIsIHNvIHRoYXQKCWtleWJvYXJkIGZvY3VzIHdvcmtzIHByb3Blcmx5LgoKCSogZG9jdW1lbnRhdGlvbi9wYWNrYWdpbmcuc2dtbDogVG9tIFdpY2tsaW5lIDx0d2lja2xpbmUyQHRyaWFkLnJyLmNvbT4KCVJlbW92ZWQgdGhlIG9sZCB3aW4uaW5pIHNhbXBsZSByZXBsYWNlZCBpdCB3aXRoIGEgUkggOC4wIHJwbSAuc3BlYy4KCUNoYW5nZWQgdGl0bGUgbmFtZSBvZiBzZWN0aW9uIDUuMS4KCU90aGVyIHNtYWxsIGZpeGVzLgoKCSogZGxscy9vbGVhdXQzMi9vbGVhdXQuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglEbyBub3QgZnJlZSB0aGUgb2xkIHN0cmluZyBpbiBTeXNSZUFsbG9jU3RyaW5nTGVuLCByZXVzZSB0aGUgb2xkCglzdHJpbmcgbWVtb3J5IChpZiAnaW4nIGlzIE5VTEwpLgoKCSogZGxscy9vbGUzMi9zdG9yYWdlLmM6IEdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJQXZvaWQgY29tcGlsZXIgd2FybmluZyBpbiBTVE9SQUdFX2dldF9mcmVlX3Bwc19lbnRyeSgpLgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jLCBzZXJ2ZXIvc29jay5jOgoJTWFydGluIFdpbGNrIDxNYXJ0aW4uV2lsY2tARnVqaXRzdS1TaWVtZW5zLmNvbT4KCURvIG5vdCBjbGVhciBGRF9XSU5FX0NPTk5FQ1RFRCBvbiBzaHV0ZG93bigpLiBGRF9XSU5FX0NPTk5FQ1RFRAoJKGN1cnJlbnRseSB1bnVzZWQpIGNhbiB0aHVzIGJlIHVzZWQgdG8gZGV0ZXJtaW5lIGlmIGEgc3RyZWFtIHNvY2tldAoJd2FzIGV2ZXIgY29ubmVjdGVkLgoKCSogZGxscy9vbGVhdXQzMi9vbGVhdXQzMi5zcGVjLCBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgUjQgYW5kIFI4IGNvbXBhcmlzb24gdG8gVmFyQ21wLgoJQWRkZWQgSTIgdG8gVmFyRm9ybWF0LgoJQWRkZWQgVmFyU3ViLCBWYXJEaXYsIFZhck11bCBmb3IgaW50ZWdlciBhbmQgZmxvYXQgdHlwZXMuCgoJKiBkbGxzL3dpbmVkb3MvaW50MzEuYzogSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJUmVwbGFjZSBGSVhNRXMgd2l0aCBUUkFDRXMgaW4gdGhvc2UgcGFnaW5nIGZ1bmN0aW9ucyB0aGF0IHJlYWxseSBhcmUKCW5vdCBzdXBwb3NlZCB0byBkbyBhbnl0aGluZy4KCUFkZCBzaW1wbGUgZW11bGF0aW9uIG9mIGNvcHJvY2Vzc29yIHN0YXRlIGZ1bmN0aW9ucy4KCgkqIGRsbHMvd2luZWRvcy9pbnQyMS5jLCBtc2Rvcy9pbnQyMS5jOiBKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglSZXR1cm4gc2NhbmNvZGUgd2hlbiBleHRlbmRlZCBrZXljb2RlcyBhcmUgcmVhZCB1c2luZyBjb25zb2xlIGlucHV0CglmdW5jdGlvbnMuIE1vdmUgZmlsZSBzdGFtcCBoYW5kbGluZyB0byB3aW5lZG9zLiBJbXBsZW1lbnQgRE9TNyBmaWxlCglzdGFtcCBleHRlbnNpb25zLgoKCSogZGxscy9jb21tZGxnL2NkbGcuaCwgZGxscy9jb21tZGxnL2NkbGdfRW4ucmMsIGRsbHMvY29tbWRsZy9mb250ZGxnLmM6CglTaGFjaGFyIFNoZW1lc2ggPHdpbmVjb2RlQHN1bi5jb25zdW1lci5vcmcuaWw+CgktIERlZmluZWQgSURzIGZvciBzdHJpbmcgY29uc3RhbnRzIGZvciBmb250IGNvbG9yIG5hbWVzIGFuZCBmb3IgdGhlCgkgIHZhcmlvdXMgY2hhcnNldHMuCgktIExvYWQgdGhlIGNvbG9yIG5hbWVzIGZyb20gdGhlIHJlc291cmNlcyBpbiB0aGUgZm9udHMgZGlhbG9nLgoKCSogZGxscy93aW5pbmV0L2ludGVybmV0LmMsIGRsbHMvd2luaW5ldC93aW5pbmV0LnNwZWMsCgkgIGluY2x1ZGUvd2luaW5ldC5oOgoJQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJIkludGVybmV0QXV0b0RpYWwiIHNob3VsZCBiZSAiSW50ZXJuZXRBdXRvZGlhbCIuCgoJKiBkbGxzL3dpbmVkb3MvdmdhLmM6IEp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCUhhbmRsZSBob3Jpem9udGFsIGFuZCB2ZXJ0aWNhbCByZXRyYWNlIHNlcGFyYXRlbHkuCgoJKiBkbGxzL3dpbmVkb3MvaW50MTAuYzogSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJVW5pZnkgVkdBIGFuZCBWRVNBIHZpZGVvIG1vZGUgc2V0dGluZyBjb2RlLgoKMjAwMy0wMS0yNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2QzZGltLy5jdnNpZ25vcmUsCgkgIGRsbHMvZDNkaW0vTWFrZWZpbGUuaW4sIGRsbHMvZDNkaW0vZDNkaW0uc3BlYywKCSAgZGxscy9kM2RpbS9kM2RpbV9tYWluLmMsIGRsbHMvZDNkaW0vdmVyc2lvbi5yYzoKCUVucmljbyBIb3JuIDxmYXJtYm95MUBzdWJkaW1lbnNpb24uY29tPgoJQWRkZWQgZDNkaW0uZGxsIHdpdGggc3R1YnMuCgoJKiBkbGxzL2FkdmFwaTMyL2V2ZW50bG9nLmMsIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYywKCSAgZGxscy9jb21jdGwzMi9saXN0dmlldy5jLCBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jLAoJICBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jLCBkbGxzL2tlcm5lbC90aHVuay5jLCBkbGxzL250ZGxsL2hlYXAuYywKCSAgZGxscy9vbGVhdXQzMi90bWFyc2hhbC5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywKCSAgZGxscy93aW5tbS9wbGF5c291bmQuYywgZmlsZXMvZGlyZWN0b3J5LmMsIGZpbGVzL2RyaXZlLmMsCgkgIGZpbGVzL3NtYi5jLCB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy9tc2dib3guYzoKCVJlbW92ZWQgbm8gbG9uZ2VyIG5lZWRlZCBpbmNsdXNpb24gb2YgaGVhcC5oLgoKCSogaW5jbHVkZS9yaWNoZWRpdC5oLCBpbmNsdWRlL3dpbm50Lmg6CglSZW1vdmVkIGEgY291cGxlIG9mIGV4dHJhIHNlbWljb2xvbnMuCgoJKiBkb2N1bWVudGF0aW9uL3BhY2thZ2luZy5zZ21sOiBUb20gV2lja2xpbmUgPHR3aWNrbGluZTJAdHJpYWQucnIuY29tPgoJRml4ZWQgJFBSRUZJWCBsb2NhdGlvbi4KCVNvbWUgc21hbGwgdXBkYXRlcy4KCUFkZGVkIHNhbXBsZSBjb25maWcuCgoJKiBkbGxzL2QzZDgvZGV2aWNlLmM6IEphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglBZGQgc3VwcG9ydCBmb3IgY29sb3IgbWF0ZXJpYWwgc291cmNlcywgd2l0aCBoZWxwIGZyb20gTHVjaG8uCgoJKiBkbGxzL3gxMWRydi9rZXlib2FyZC5jOgoJTGVvbmFyZG8gUXVpamFubyBWaW5jZW56aSA8bHF1aWphbm9AcG51ZGNyLmNvbT4KCUZpeGVkIExhdGluIEFtZXJpY2FuIGtleWJvYXJkIChrZXkgIj8hIiB3YXMgcmV2ZXJzZWQpLgoKCSogZGxscy9hZHZhcGkzMi9zZXJ2aWNlLmM6IE1hdHRoZXcgRGF2aXNvbiA8bS5kYXZpc29uQHZpcmdpbi5uZXQ+CglSZW1vdmVkIHNvbWUgVW5pY29kZSAtPiBBc2NpaSBjcm9zcy1jYWxscy4KCgkqIGRsbHMvd2luc3Bvb2wvdGVzdHMvaW5mby5jOgoJU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtTGluZS5jb20+CglSZW1vdmVkIHdpbmRvd3MgdmVyc2lvbiBjaGVja3MgZnJvbSBHZXRQcmludGVyRHJpdmVyRGlyZWN0b3J5IHRlc3RzLgoKCSogb2JqZWN0cy9kYy5jOiBSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglMb2FkIGRlZmF1bHQgc3RvY2sgYml0bWFwIGluIENyZWF0ZURDKCkuCgoyMDAzLTAxLTIzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS9oZWFwLmg6IE1hdHRoZXcgRGF2aXNvbiA8bS5kYXZpc29uQHZpcmdpbi5uZXQ+CglSZW1vdmUgdGhlIEhFQVBfc3RyZHVwQXRvVyBtYWNyby4KCgkqIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYywgZGxscy9hZHZhcGkzMi9zZXJ2aWNlLmMsCgkgIGRsbHMvY29tbWRsZy9maWxlZGxnLmMsIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jLCBkbGxzL3VzZXIvaG9vay5jLAoJICBkbGxzL3dpbm1tL21tc3lzdGVtLmMsIGRsbHMvd2lubW0vcGxheXNvdW5kLmMsIGRsbHMvd2luc3Bvb2wvaW5mby5jLAoJICBsb2FkZXIvcmVzb3VyY2UuYywgbWVtb3J5L2Vudmlyb24uYywgd2luZG93cy93aW5wcm9jLmM6CglNYXR0aGV3IERhdmlzb24gPG0uZGF2aXNvbkB2aXJnaW4ubmV0PgoJUmVtb3ZlZCBjYWxscyB0byBIRUFQX3N0cmR1cEF0b1cuCgoJKiBkbGxzL2RpbnB1dC9rZXlib2FyZC9tYWluLmMsIGRsbHMvZGlucHV0L21vdXNlL21haW4uYywKCSAgZGxscy9nZGkvd2luMTZkcnYvcHJ0ZHJ2LmMsIGRsbHMvbnRkbGwvY3JpdHNlY3Rpb24uYywKCSAgZGxscy93aW5lZG9zL21vZHVsZS5jLCBkbGxzL3dpbm1tL3dpbmVhcnRzL2F1ZGlvLmMsCgkgIGRsbHMvd2lubW0vd2luZWphY2svYXVkaW8uYywgZGxscy93aW5tbS93aW5lbmFzL2F1ZGlvLmMsCgkgIGZpbGVzL3Byb2ZpbGUuYywgZmlsZXMvc21iLmMsIGxpYnJhcnkvY29uZmlnLmMsIG1zZG9zL2ludDIxLmMsCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL2N1cnNlcy5jLCBzY2hlZHVsZXIvY3JpdHNlY3Rpb24uYywKCSAgc2VydmVyL3BpcGUuYywgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3NlbGVjdC5jLCBzZXJ2ZXIvc2VyaWFsLmMsCgkgIHNlcnZlci9zbWIuYzoKCU1hcmN1cyBNZWlzc25lciA8bWVpc3NuZXJAc3VzZS5kZT4KCVJlbW92ZSBlcnJuby5oIGZyb20gZmlsZXMgdGhhdCBkbyBub3QgbmVlZCBpdC4KCgkqIGRsbHMvZDNkOC9kM2Q4X3ByaXZhdGUuaCwgZGxscy9kM2Q4L2RldmljZS5jLCBkbGxzL2QzZDgvZGlyZWN0eC5jOgoJSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCVVzZSBkZXZpY2UgbWF4IGxpZ2h0cyBhbmQgY2xpcHBsYW5lIHN1cHBvcnQuIEFsc28gY2hhbmdlIGNsaXBwbGFuZSB0bwoJYmUgYWZmZWN0ZWQgYnkgdmlldyBtYXRyaXguCgoJKiBkbGxzL3gxMWRydi9rZXlib2FyZC5jOgoJS2V5c3ltIGNoZWNrIHNob3VsZCB1c2UgMHg4MDAwIGluc3RlYWQgb2YgMHg4MDAgKHNwb3R0ZWQgYnkgRG1pdHJ5CglUaW1vc2hrb3YpLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvZDNkOC9kZXZpY2UuYywgZGxscy9kM2Q4L2luZGV4YnVmZmVyLmMsCgkgIGRsbHMvZDNkOC9zaGFkZXIuYywgZGxscy9kZHJhdy9kM2RleGVjdXRlYnVmZmVyLmMsCgkgIGRsbHMvZ2RpL2ZyZWV0eXBlLmMsIGRsbHMvbnRkbGwvY2Ryb20uYywgZGxscy9vbGVhdXQzMi9zYWZlYXJyYXkuYywKCSAgZGxscy93aW5lZG9zL3ZnYS5jLCBkbGxzL3dpbm1tL2xvbHZsZHJ2LmMsCgkgIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jLCBkbGxzL3gxMWRydi9jbGlwYm9hcmQuYywKCSAgcHJvZ3JhbXMvd2luZWRiZy9nZGJwcm94eS5jOgoJQWRkZWQgLVdwb2ludGVyLWFyaXRoIGdjYyBmbGFnLCBhbmQgZml4ZWQgdGhlIHJlc3VsdGluZyB3YXJuaW5ncy4KCgkqIGRsbHMvY2FiaW5ldC9jYWJleHRyYWN0LmMsIGRsbHMvY2FiaW5ldC9jYWJpbmV0Lmg6CglHcmVnIFR1cm5lciA8Z210dXJuZXIwMDdAYW1lcml0ZWNoLm5ldD4KCUZpeCBzb21lIHByb2JsZW1zIHdoZW4gRXh0cmFjdCBpcyB1c2VkIG1vcmUgdGhhbiBvbmNlLgoKCSogdG9vbHMvd3JjL3dyYy5jOiBHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCURlY2xhcmUgdmFyaWFibGUgb25seSBpZiBuZWVkZWQuCgoJKiBkbGxzL21zYWNtL2Zvcm1hdC5jOiBXYWxkZWNrIFNjaHV0emVyIDxzY2h1dHplckBtYXRoLnJ1dGdlcnMuZWR1PgoJQXVkaW8gY29kZWNzIHdlcmUgZXJyb25lb3VzbHkgYmVpbmcgbGlzdGVkIG11bHRpcGxlIHRpbWVzLCBtYWtpbmcgaXQKCWRpZmZpY3VsdCB0byBydW4gY2VydGFpbiBhcHBsaWNhdGlvbnMgbGlrZSBWaXJ0dWFsRHViLgoKCSogZGxscy9tc2FjbS9zdHJlYW0uYzogV2FsZGVjayBTY2h1dHplciA8c2NodXR6ZXJAbWF0aC5ydXRnZXJzLmVkdT4KCU1ha2Ugc3VyZSB0aGUgcGFyYW1ldGVyIHBoYXMgaXMgY29ycmVjdCBieSBzZXR0aW5nIGl0IGVxdWFsIHRvIE5VTEwgaW4KCXF1ZXJ5IG1vZGUuCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmM6IEdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJSW1wcm92ZSBwb3J0YWJpbGl0eSB3cnQuIHN0cnVjdCBzb2NrYWRkcl9pcHguCgoJKiBmaWxlcy9zbWIuYzogR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglQcm9wZXJseSBjYXN0IHN0cnVjdCBzb2NrYWRkcl9pbiogdG8gc3RydWN0IHNvY2thZGRyKiB3aGVyZSBuZWVkZWQuCgoJKiBkbGxzL3gxMWRydi9ldmVudC5jLCBkbGxzL3gxMWRydi9rZXlib2FyZC5jLCB3aW5kb3dzL21lc3NhZ2UuYzoKCUFkZGVkIGRlYWQga2V5cyBzdXBwb3J0IHVzaW5nIFggaW5wdXQgbWV0aG9kcyAoYmFzZWQgb24gYSBwYXRjaCBieQoJRG1pdHJ5IFRpbW9zaGtvdikuCgoJKiBkbGxzL3gxMWRydi93aW5kb3cuYywgZGxscy94MTFkcnYveDExZHJ2X21haW4uYywgaW5jbHVkZS94MTFkcnYuaDoKCUNyZWF0ZSBhbiBYIGlucHV0IGNvbnRleHQgZm9yIGVhY2ggdG9wLWxldmVsIHdpbmRvdy4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlZm9udC5jLCBpbmNsdWRlL3dpbmUvb2JqX29sZWZvbnQuaDoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgSUNPTV9DQUxMcyBmb3IgSUZvbnRfeHggbWV0aG9kcy4KCUFkZGVkIElQZXJzaXN0UHJvcGVydHlCYWcsIElQZXJzaXN0U3RyZWFtSW5pdCBpbnRlcmZhY2VzIHdpdGggc3R1YnMuCglJbXBsZW1lbnRlZCBJRGlzcGF0Y2g6Okludm9rZSBmb3IgdGhlIHVzZWQgRElTUElEcy4KCgkqIGRsbHMvd2luZWRvcy9pbnQyMS5jLCBtc2Rvcy9pbnQyMS5jOiBKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglSZXR1cm4gbnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW4gd2hlbiB3cml0aW5nIHRvIERPUyBjb25zb2xlIHVzaW5nIGludDIxCglmdW5jdGlvbiAweDQwLiBNb3ZlIHNvbWUgaW50MjEgZnVuY3Rpb25zIHRvIHdpbmVkb3MuCgoJKiBkbGxzL3dpbmVkb3MvaW50MTAuYzogSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJUmVvcmdhbml6ZSBpbnQxMCBjb2RlLiBGaXggY29tbWVudHMuCgoJKiBkbGxzL21zdmlkZW8vbXN2aWRlb19tYWluLmM6CglXYWxkZWNrIFNjaHV0emVyIDxzY2h1dHplckBtYXRoLnJ1dGdlcnMuZWR1PgoJRml4ZWQgaW5pdGlhbGl6YXRpb24gb2Ygc3pEZXZpY2UgaW4gSUNJTkZPLgoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLCBkbGxzL2RkcmF3L21lc2EuYzoKCUNocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUltcGxlbWVudCB2ZXJ0ZXggYW5kIHBpeGVsIGZvZy4KCUZpeCBmb2cgY29sb3IgaW5pdGlhbGl6YXRpb24uCgoyMDAzLTAxLTIxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy94MTFkcnYvZXZlbnQuYywgZGxscy94MTFkcnYvd2luZG93LmM6CglNYWtlIHN1cmUgdG8gYWx3YXlzIHNldCBYIGZvY3VzIG9uIHRoZSB0b3AtbGV2ZWwgd2luZG93LCBub3Qgb24KCWNoaWxkIHdpbmRvd3MuCgoJKiB3aW5lZGVmYXVsdC5yZWc6IERhbiBLZWdlbCA8ZGFua0BrZWdlbC5jb20+CgkudHh0IGZpbGVzIGFyZSBoYW5kbGVkIGJ5IG5vdGVwYWQuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgcHJvZ3JhbXMvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL3N0YXJ0Ly5jdnNpZ25vcmUsIHByb2dyYW1zL3N0YXJ0L0VuLnJjLAoJICBwcm9ncmFtcy9zdGFydC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvc3RhcnQvcmVzb3VyY2VzLmgsCgkgIHByb2dyYW1zL3N0YXJ0L3JzcmMucmMsIHByb2dyYW1zL3N0YXJ0L3N0YXJ0LmMsIHRvb2xzL3dpbmVpbnN0YWxsOgoJRGFuIEtlZ2VsIDxkYW5rQGtlZ2VsLmNvbT4KCUFkZGVkIFdpbmRvd3MtY29tcGF0aWJsZSBzdGFydC5leGUuCgoJKiBkbGxzL3NoZWxsMzIvY2hhbmdlbm90aWZ5LmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsCgkgIGRsbHMvc2hlbGwzMi9zaGZsZHJfZnMuYywgZGxscy9zaGVsbDMyL3NobGZpbGVvcC5jLCBpbmNsdWRlL3NobG9iai5oOgoJUm9sZiBLYWxiZXJtYXR0ZXIgPHJvbGYua2FsYmVybWF0dGVyQGNpdGVuZy5jb20+CglDaGFuZ2UgU0hDaGFuZ2VOb3RpZnkgdG8gYmUgVW5pY29kZSBhbmQgQU5TSSBpbmRpZmZlcmVudCwgYXMgdGhlIHR5cGUKCW9mIHBhcmFtZXRlcnMgaXMgcmVhbGx5IGRlZmluZWQgYnkgdUZsYWdzIHBhcmFtZXRlci4KCgkqIGRsbHMvY29tbWRsZy9maWxldGl0bGUuYzogTGl1IFNwaWRlciA8bGl1c3BpZGVyQHlhaG9vLmNvbT4KCUltcGxlbWVudGVkIEdldEZpbGVUaXRsZVc7IEdldEZpbGVUaXRsZUEgbm93IGlzIGEgY2FsbCB0bwoJR2V0RmlsZVRpdGxlVy4KCgkqIGRvY3VtZW50YXRpb24vYXV0aG9ycy5lbnQ6IFRvbSBXaWNrbGluZSA8dHdpY2tsaW5lMkB0cmlhZC5yci5jb20+CglGaXggaW5jb3JyZWN0IGFscGhhYmV0aWNhbCBvcmRlciBieSBsYXN0IG5hbWUuCgoJKiBkbGxzL250ZGxsL2Nkcm9tLmM6IEdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJT25seSBkZWNsYXJlIHZhcmlhYmxlcyB3ZSBhY3R1YWxseSBuZWVkLgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUHJpbnQgYSBsYXJnZSBmYWlsdXJlIG1lc3NhZ2UgaWYgd2UgdHJ5IHRvIGxvYWQgc3Rkb2xlMzIudGxiIGFuZAoJZmFpbC4KCgkqIGRsbHMvbXN2aWRlby9tc3ZpZGVvX21haW4uYzoKCVdhbGRlY2sgU2NodXR6ZXIgPHNjaHV0emVyQG1hdGgucnV0Z2Vycy5lZHU+CglGaXhlZCBwcm9ibGVtcyB3aXRoIGZpbmRpbmcgYW5kIGxpc3RpbmcgYWxsIHRoZSB2aWRlbwoJY29tcHJlc3Npb24vZGVjb21wcmVzc2lvbiBjb2RlY3MuCglQcm9wZXIgaW5pdGlhbGl6YXRpb24gb2Ygc3pEcml2ZXIgZmllbGQgaW4gSUNJTkZPIGJ5IElDR2V0SW5mby4KCgkqIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmM6IFJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CgktIENsZWFyIGJpdHMgaW4gc3RydWN0dXJlIHBhc3NlZCB0byBJT2xlQ29tbWFuZFRhcmdldF9RdWVyeVN0YXR1cyB0bwoJICBzaG93IHRoYXQgd2UgZG9uJ3Qgc3VwcG9ydCBhbnkgRXhlYydzLgoJLSBBZGQgdHdvIEV4ZWMgY2FzZXMgdGhhdCB3ZXJlIGZvdW5kIGR1cmluZyB0ZXN0aW5nLgoKCSogb2JqZWN0cy9nZGlvYmouYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJQWxsb2NhdGUgcGFsZXR0ZSBvYmplY3RzIG9uIHRoZSBsYXJnZSBnZGkgaGVhcC4KCgkqIGRsbHMvZDNkOC9kZXZpY2UuYzogSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCUVuc3VyZSB1c2luZyBjb3JyZWN0IGFyZ3MgZHVyaW5nIGNvbXBsZW1lbnQgdGV4dHVyZSBvcGVyYXRpb25zLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWM6CglNb3ZlZCB0aGUgSVBYIGNoZWNrIHNvIHRoYXQgdGhlIHN5cy9zb2NrZXQuaCBjaGVjayBoYXMgYWxyZWFkeSBiZWVuCglkb25lIHdoZW4gd2UgY2hlY2sgZm9yIElQWCBoZWFkZXJzLgoKCSogZGxscy9kM2Q4L2RldmljZS5jOiBKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJUmVzdG9yZSB0aGUgdGV4dHVyZSBlbnYgbW9kZSBvbiBTZXRUZXh0dXJlIC0gRml4ZXMgcHJvYmxlbSBpbgoJY29kZXNhbXBsZXIgZGVtby4KCgkqIGRsbHMvdXNlci90ZXN0cy9nZW5lcmF0ZWQuYywgaW5jbHVkZS93aW51c2VyLmg6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUNoYW5nZWQgTU9OSVRPUklORk9FWEEsVyBkZWZpbml0aW9uIHRvIHRoZSBvbmUgaW4gTVNETiB3aGljaCBkb2VzIG5vdAoJY2F1c2UgZ2NjIDMuMyB3YXJuaW5ncy4KCgkqIGRvY3VtZW50YXRpb24vc2FtcGxlcy9jb25maWc6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkIERlc2t0b3AgbW9kZSBmb3IgMyBrbm93biBiYWQgd29ya2luZyBJbnN0YWxsU2hpZWxkIHZlcnNpb25zLgoKCSogcHJvZ3JhbXMvd2NtZC93Y21kcmMucmMsIHRvb2xzL3dyYy9wYXJzZXIubDoKCURhbiBLZWdlbCA8ZGFua0BrZWdlbC5jb20+CglcIGF0IEVPTCBpbiBzdHJpbmcgbm93IGJlaGF2ZXMgbGlrZSBpbiBtc3ZjNidzIHJjLgoKCSogZG9jdW1lbnRhdGlvbi9wYWNrYWdpbmcuc2dtbDogVG9tIFdpY2tsaW5lIDx0d2lja2xpbmUyQHRyaWFkLnJyLmNvbT4KCUFkZGVkIG15c2VsZiB0byBhdXRob3JzIHNlY3Rpb24uCglVcGRhdGVkIGxhc3QgcmV2aXNpb24gZGF0ZS4KCVNvbWUgc21hbGwgdXBkYXRlcy4KCjIwMDMtMDEtMjAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkb2N1bWVudGF0aW9uL2F1dGhvcnMuZW50LCBkb2N1bWVudGF0aW9uL3Rlc3Rpbmcuc2dtbDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJUHJvdmlkZSB2ZXJ5IG11Y2ggbmVlZGVkIHJlY29tbWVuZGF0aW9ucyBvbiBob3cgdG8gd3JpdGUgZ29vZCBlcnJvcgoJbWVzc2FnZXMuCglJdCBpcyBub3cgcG9zc2libGUgdG8gdXNlIHdpbmRvd3MuaCBpbiBjb25mb3JtYW5jZSB0ZXN0cy4KCUFkZGluZyBteXNlbGYgdG8gdGhlIGF1dGhvcnMgbGlzdC4KCgkqIGRsbHMvdXNlci90ZXN0cy9zeXNwYXJhbXMuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglDaGVjayBmb3Igc3lzcGFyYW1zIGtleXMgaW4gZWl0aGVyIHRoZSBXaW45eCBvciBOVCBsb2NhdGlvbnMuIFRoaXMKCW1ha2VzIHRoZSB0ZXN0IHN1Y2NlZWQgb24gV2luOXggYW5kIE5UNCBwbGF0Zm9ybXMuCglBZGQgYSAnc3RyaWN0JyBtb2RlIHdoaWNoIHNwZWNpZmljYWxseSBtYWtlcyBzdXJlIHRoYXQgdGhlIE5UIGxvY2F0aW9uCglpcyBzZXQuIEluIHN0cmljdCBtb2RlIHRoZSB0ZXN0IHN1Y2NlZWRzIG9uIFdpbmRvd3MgWFAgYW5kIFdpbmUuCgoJKiB0b29scy93cmMvUkVBRE1FLndyYywgdG9vbHMvd3JjL3dyYy5jLCB0b29scy93cmMvd3JjLmgsCgkgIHRvb2xzL3dyYy93cmMubWFuLCB0b29scy93cmMvd3JpdGVyZXMuYzoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglSZW1vdmUgdGhlIG9ic29sZXRlIHdyYyBvcHRpb25zOiAtQSwgLVQsIGFuZCAtdC4KCgkqIGRsbHMvd2lubW0vdGVzdHMvd2F2ZS5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCU1ha2Ugc3VyZSB3ZSBhbHdheXMga25vdyBhYm91dCB0aGUgNDggYW5kIDk2a0h6IGZvcm1hdHMgZXZlbiBpZiB0aGV5CglhcmUgbm90IGRlZmluZWQgaW4gdGhlIChvbGQpIFdpbmRvd3MgaGVhZGVycy4KCgkqIHRvb2xzL3dpbmVtYWtlcjogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglJbmNsdWRlICRwcmVmaXgvaW5jbHVkZS93aW5lL3dpbmRvd3MgaW50byB0aGUgV0lORSBpbmNsdWRlIHNlYXJjaCBwYXRoLgoJd3JjIG5vIGxvbmdlciB1bmRlcnN0YW5kcyAtciAobm90IG5lZWRlZCkuCgoJKiBkbGxzL2Rzb3VuZC90ZXN0cy9kc291bmQuYzoKCUdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJI2luY2x1ZGUgPHN0ZGxpYi5oPiBpbnN0ZWFkIG9mIHRoZSBub24tc3RhbmRhcmQgPG1hbGxvYy5oPi4KCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYzogQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJSGFuZGxlIG1vcmUgbGlnaHQgc3RhdGVzLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvdGhyZWFkLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJe0dldCxTZXR9VGhyZWFkUHJpb3JpdHlCb29zdCBhcmUgc3R1YnMgb24gV2luOTguCgoJKiB3aW5kb3dzL3N5c3BhcmFtcy5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUV4dGVuZCB0aGUgY29kZSB0byBzZXQgYm90aCB0aGUgV2luOXggYW5kIHRoZSBOVCByZWdpc3RyeSBrZXlzLiBPbmx5Cgl0aGUgTlQga2V5cyBhcmUgYXV0aG9yaXRhdGl2ZSAoaS5lLiB3ZSBzZXQgdGhlIFdpbjl4IGtleXMgYnV0IGRvbid0CglyZS1yZWFkIHRoZW0pLgoKCSogZGxscy9jb21jYXQvLmN2c2lnbm9yZSwgZGxscy9jb21jYXQvTWFrZWZpbGUuaW4sCgkgIGRsbHMvY29tY2F0L3ZlcnNpb24ucmMsIGluY2x1ZGUvd2luZS93aW5lX2NvbW1vbl92ZXIucmM6CglKb2huIEsuIEhvaG0gPGpob2htQGFjbS5vcmc+CglBZGRlZCBvcHRpb25hbCBPTEVTZWxmUmVnaXN0ZXIgdG8gd2luZV9jb21tb25fdmVyLnJjLCB1c2VkIGluCglkbGxzL2NvbWNhdC4KCgkqIGRsbHMvZGRyYXcvZDNkX3ByaXZhdGUuaCwgZGxscy9kZHJhdy9kM2RsaWdodC5jLAoJICBkbGxzL2RkcmF3L2QzZHZpZXdwb3J0LmM6CglDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglNYWtlIEQzRDEuLjMgbGlnaHRzIGNvZGUgcmVseSBvbiBEM0Q3LgoKCSogZGxscy9kM2Q4L2RldmljZS5jOiBKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJT25seSByZWxvYWQgdGhlIG1pcG1hcCBpbWFnZXMgd2hlbiBkaXJ0eS4KCgkqIGRsbHMvYWR2YXBpMzIvZXZlbnRsb2cuYywgZGxscy9hZHZhcGkzMi9yZWdpc3RyeS5jLAoJICBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmMsIGRsbHMvYWR2YXBpMzIvc2VydmljZS5jOgoJTWF0dGhldyBEYXZpc29uIDxtLmRhdmlzb25AdmlyZ2luLm5ldD4KCVJlbW92ZSBzb21lIGNhbGxzIHRvIEhFQVBfc3RyZHVwQXRvVyBmcm9tIGFkdmFwaTMyLgoKCSogZGxscy93aW5lZG9zL2ludDIxLmM6IExhd3NvbiBXaGl0bmV5IDx3aGl0bmw3M0BqdW5vLmNvbT4KCUZpeCByZXZlcnNlZCBob3VyIGFuZCBtaW51dGUgaW4gaW50IDIxIGFoPTJjLgoKMjAwMy0wMS0xNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIEFOTk9VTkNFLCBDaGFuZ2VMb2csIFZFUlNJT04sIGNvbmZpZ3VyZTogUmVsZWFzZSAyMDAzMDExNS4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KMjAwMy0wMS0xNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbnRyb2xzL21lbnUuYzoKCVJlbW92ZWQgZmxhZyBjaGVja3MgaW4gU2V0TWVudUl0ZW1JbmZvQSwgTlQgZG9lc24ndCBkbyB0aGlzLgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglXYXJuIGlmIG9wZW5fY291bnQgaXMgYWxyZWFkeSAwIHdoZW4gT1NTX0Nsb3NlRGV2aWNlIGlzIGNhbGxlZC4KCURvbid0IGRlY3JlbWVudCBpdCBpbiB0aGF0IGNhc2UuCgoJKiBtZW1vcnkvZ2xvYmFsLmM6IE1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuZGU+CglUaGUgTWlub2x0YSBEaU1BR0UgSW1hZ2UgVmlld2VyIHJlbGllcyBvbiBHbG9iYWx7LFJlfUFsbG9jIGNhbGxlZCB3aXRoCgl0aGUgR01FTV9NT1ZFQUJMRSBmbGFnIHNldCwgdG8gYWxsb2NhdGUgdGhlIGV4YWN0IHNwZWNpZmllZCBzaXplIGFuZAoJbm8gYnl0ZSBtb3JlIHdoZW4gc2l6ZSBpcyBhIG11bHRpcGxlIG9mIDguIFRvIGFjaGlldmUgdGhpcyBhbGlnbiB0aGUKCXN0b3JhZ2UgbmVlZGVkIGZvciB0aGUgSEdMT0JBTCBpbiB0aGUgaGVhcCB0byA4Ynl0ZSBib3VuZGFyeS4KCgkqIGRsbHMvZHNvdW5kL21peGVyLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglVc2UgdGhlIHNhbWUgOC8xNmJpdCBjb252ZXJzaW9uIHJvdXRpbmVzIGFzIGluIHBjbWNvbnZlcnRlci5jLgoJUmVvcmRlciB0aGUgdHdvIGlmcyBpbiB0aGUgZmlyc3QgcGFydCBvZiBjcF9maWVsZHMgdG8gc2ltcGxpZnkgdGhlCgljb2RlLgoKCSogZGxscy9kc291bmQvdGVzdHMvZHNvdW5kLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglTZXRGb3JtYXQgbWF5IG5vdCBjaGFuZ2UgdGhlIHByaW1hcnkgYnVmZmVyIGZvcm1hdCBhcyByZXF1ZXN0ZWQuCglEdW1wIHRoZSBlZmZlY3RpdmUgZm9ybWF0IGFuZCBwcmVwYXJlIHRoZSB0b25lIHNpZ25hbCBhY2NvcmRpbmdseS4KCVBsYXkgdG9uZXMgZnJvbSB0aGUgc2Vjb25kYXJ5IGJ1ZmZlcnMgYXQgLTNkQiByYXRoZXIgdGhhbiAtMTJkQi4KCUFsd2F5cyBwcmludCB0aGUgdm9sdW1lIHRoZSB0b25lIGlzIGdvaW5nIHRvIGJlIHBsYXllZCBhdC4KCVJlbW92ZSB0aGUgZ2FtZWRldiBVUkwuCgoJKiBkbGxzL3VzZXIvdGVzdHMvc3lzcGFyYW1zLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRG9uJ3QgdXNlIG9sZF9zcGFjaW5nLTEgaWYgb2xkX3NwYWNpbmcgYWxyZWFkeSBoYXMgdGhlIG1pbmltdW0gdmFsdWUuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVJldHVybiBNTVNZU19OT0VSUk9SIGV2ZW4gaWYgd2UgZG9uJ3Qgb3BlbiB0aGUgZGV2aWNlIHdpdGggdGhlCglyZXF1ZXN0ZWQgZm9ybWF0LCBvdGhlcndpc2UgT1NTX09wZW5EZXZpY2Ugd2lsbCBub3QgaW5jcmVtZW50CglvcGVuX2NvdW50LgoJVXNlIC0xIHRvIHNpZ25hbCBPU1NfUmF3T3BlbkRldmljZSBub3QgdG8gZG8gaW9jdGxzIGJlY2F1c2UgMCBpcwoJYW1iaWd1b3VzIChhbHNvIG1lYW5zIG1vbm8gYXMgb3Bwb3NlZCB0byBzdGVyZW8pLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvbG9jYWxlLmMsIG9sZS9vbGUybmxzLmM6CglCaWxsIE1lZGxhbmQgPGJpbGxtZWRsYW5kQG1lcmN1cnlzcGVlZC5jb20+CglDb3JyZWN0IEdldERhdGVGb3JtYXQgaGFuZGxpbmcgb2YgdW5pbml0aWFsaXNlZCBmaWVsZHM6IG9ubHkgdGhlIHllYXIsCgltb250aCBhbmQgZGF5IGZpZWxkcyBtYXR0ZXI7IHRoZSByZXN0IG1heSBiZSB1bmluaXRpYWxpc2VkLgoKCSogZGxscy9udGRsbC90ZXN0cy9ydGxzdHIuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglvaygpIGRvZXMgbm90IHN1cHBvcnQgJyVTJy4gU3RvcmUgdGhlIEFuc2kgdmVyc2lvbiwgY29udmVydCB0byBVbmljb2RlCgl3aGVuIG5lZWRlZCwgYW5kIHByaW50IHRoZSBBbnNpIHZlcnNpb24gdXNpbmcgb2soKS4KCUZpeCAndmFsdWUgaXMgc28gbGFyZ2UgaXQgaXMgdW5zaWduZWQnIHdhcm5pbmdzLgoKCSogcHJvZ3JhbXMvd2NtZC9iYXRjaC5jLCBwcm9ncmFtcy93Y21kL2J1aWx0aW5zLmMsCgkgIHByb2dyYW1zL3djbWQvd2NtZG1haW4uYzoKCVVzZSBwcm9wZXIgZmlsZSBzaGFyaW5nIHBhcmFtZXRlcnMgd2hlbiBvcGVuaW5nIGZpbGVzLgoJRml4ZWQgaGFuZGxpbmcgb2YgJ2lmIGEgPT0gYicgc3ludGF4IGluIGJhdGNoIGZpbGVzLgoKCSogZGxscy9jb21tZGxnL2NkbGdfRGUucmM6IEp1ZXJnZW4gU2NobWllZCA8ai5zY2htaWVkQHQtb25saW5lLmRlPgoJVHJhbnNsYXRlZCBzb21lIHJlbWFpbmluZyBFbmdsaXNoIHdvcmRzLgoKCSogaW5jbHVkZS93aW5udC5oOiBGaXhlZCB0eXBvLgoKCSogaW5jbHVkZS9tc3ZjcnQvcHJvY2Vzcy5oLCBpbmNsdWRlL3dpbmRlZi5oOgoJRGVmaW5lIF9fc3RkY2FsbCBpbiBtc3ZjcnQvcHJvY2Vzcy5oIGlmIHdpbmRlZi5oIGhhc24ndCBiZWVuIGluY2x1ZGVkLgoKCSogZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYywgZGxscy9zaGx3YXBpL3RocmVhZC5jOgoJSnVlcmdlbiBTY2htaWVkIDxqLnNjaG1pZWRAdC1vbmxpbmUuZGU+CglHaXZlIHNvbWUgZnVuY3Rpb25zIHJlYWwgbmFtZXMuCgoJKiBwcm9ncmFtcy93aW5lYm9vdC93aW5lYm9vdC5jOgoJU2hhY2hhciBTaGVtZXNoIDx3aW5lLXBhdGNoZXNAc3VuLmNvbnN1bWVyLm9yZy5pbD4KCS0gQWRkZWQgYSAicnVuQ21kIiBmdW5jdGlvbiwgYmFzZWQgb24gQW5kcmVhcyBNb2hyJ3MKCSAgIkJPT1RfQ3JlYXRlUHJvY2VzcyIgZnVuY3Rpb24uCgktIEFkZGVkIGEgZnVuY3Rpb24gIlByb2Nlc3NSdW5LZXlzIiwgdG8gcHJvY2VzcyBhbGwgdGhlIGtleXMgdGhhdCBoYXZlCgkgIHRoZSBjb21tb24gIlJ1biIgc3ludGF4LgoJLSBDYWxsZWQgdGhlIG5ldyBmdW5jdGlvbiBmcm9tIG1haW4gZm9yIGFsbCB0aGUgdmFyaW91cyBrZXlzLgoKCSogY29udHJvbHMvbWVudS5jOiBNaWtlIEhlYXJuIDxtLmhlYXJuQHNpZ25hbC5xaW5ldGlxLmNvbT4KCUZhaWwgU2V0TWVudUl0ZW1JbmZvIGlmIGJvdGggTUZUX0JJVE1BUCBhbmQgTUZUX1NFUEFSQVRPUiBhcmUKCXNwZWNpZmllZCAoYW4gYXBpIHZpb2xhdGlvbikuCgoJKiBkbGxzL3dpbnNwb29sL2luZm8uYzogU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtTGluZS5jb20+CglNYWtlIEdldFByaW50ZXJEcml2ZXJEaXJlY3RvcnlBIHBhc3MgYWxsIHRlc3RzLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvd2luc3Bvb2wvTWFrZWZpbGUuaW4sCgkgIGRsbHMvd2luc3Bvb2wvdGVzdHMvLmN2c2lnbm9yZSwgZGxscy93aW5zcG9vbC90ZXN0cy9NYWtlZmlsZS5pbiwKCSAgZGxscy93aW5zcG9vbC90ZXN0cy9pbmZvLmM6CglTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCUFkZGVkIHRlc3RzIGZvciBHZXRQcmludGVyRHJpdmVyRGlyZWN0b3J5QS4KCgkqIGRsbHMvc2hlbGwzMi9jbGlwYm9hcmQuYzoKCVJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CglTZXBhcmF0ZSB0aGUgSElOU1RBTkNFcyB1c2VkIGJ5IEdldFNoZWxsT2xlKCkgYW5kIG90aGVyIGRlbGF5IGxvYWQKCWZ1bmN0aW9ucy4KCgkqIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmMsIGRsbHMvZHNvdW5kL3ByaW1hcnkuYywKCSAgZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJSW5pdGlhbGl6ZSB0aGUgcHdhdmUgYXJyYXkgd2hlbmV2ZXIgd2UgZG9uJ3QgaGF2ZSBhIGhhcmR3YXJlIGJ1ZmZlci4KCUFsd2F5cyBjcmVhdGUgdGhlIHdpbmVvc3MgdGhyZWFkLgoJQ2hhbmdlIHRoZSBtbWFwIEVSUiBpbnRvIGEgVFJBQ0U6IHRoZXJlIGFyZSBub3JtYWwgY2lyY3Vtc3RhbmNlcyB3aGVyZQoJbW1hcCB3aWxsIGZhaWwgYW5kIHdlIGNhbiBkZWFsIHdpdGggdGhlbS4KCgkqIGluY2x1ZGUvd2luZS9saWJyYXJ5LmgsIGxpYnJhcnkvbGR0LmM6CglKZXJvZW4gSmFuc3NlbiA8amFwakB4czRhbGwubmw+CglGaXhlZCB3aW5lX2xkdF9jb3B5IGltcG9ydGluZyBvbiBjeWd3aW4uCgoyMDAzLTAxLTE0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9hdmlmaWwzMi9mYWN0b3J5LmMsIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYywKCSAgZGxscy9jb21jdGwzMi9saXN0dmlldy5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmMsCgkgIGRsbHMvaW1hZ2VobHAvYWNjZXNzLmMsIGRsbHMvaW1hZ2VobHAvZGVidWcuYywKCSAgZGxscy9pbWFnZWhscC9pbWFnZWhscF9tYWluLmMsIGRsbHMva2VybmVsL3Rlc3RzL3BhdGguYywKCSAgZGxscy9tc2FjbS9pbnRlcm5hbC5jLCBkbGxzL21zYWNtL21zYWNtMzJfbWFpbi5jLAoJICBkbGxzL21zdmNydC9jb25zb2xlLmMsIGRsbHMvbXN2aWRlby9tc3ZpZGVvX21haW4uYywKCSAgZGxscy9vbGUzMi9jbGlwYm9hcmQuYywgZGxscy9yaWNoZWRpdC9yaWNoZWRpdC5jLAoJICBkbGxzL3JwY3J0NC9ycGNydDRfbWFpbi5jLCBkbGxzL3JwY3J0NC9ycGNzc19ucF9jbGllbnQuYywKCSAgZGxscy9zaGVsbDMyL2RpYWxvZ3MuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLAoJICBkbGxzL3NoZWxsMzIvc2hsZXhlYy5jLCBkbGxzL3NoZWxsMzIvc2hwb2xpY3kuYywKCSAgZGxscy9zaGVsbDMyL3Rlc3RzL3NobGZpbGVvcC5jLCBkbGxzL3NobHdhcGkvaXN0cmVhbS5jLAoJICBkbGxzL3dpbmVwcy9pbml0LmMsIGRsbHMvd2luaW5ldC9mdHAuYywgZGxscy93aW5zb2NrL3Rlc3RzL3NvY2suYywKCSAgZGxscy93aW5zcG9vbC9pbmZvLmMsIG1lbW9yeS9nbG9iYWwuYywgcHJvZ3JhbXMvcmVndGVzdC9yZWd0ZXN0LmMsCgkgIHByb2dyYW1zL3JwY3NzL25wX3NlcnZlci5jLCBwcm9ncmFtcy9ycGNzcy9ycGNzc19tYWluLmMsCgkgIHByb2dyYW1zL3dpbmhlbHAvaGxwZmlsZS5jLCB3aW4zMi9uZXdmbnMuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJUmVtb3ZlIChQT0lOVEVSKU5VTEwgY2FzdHMuCgoJKiBjb250cm9scy9zY3JvbGwuYywgd2luZG93cy9ub25jbGllbnQuYzoKCUFsYmVydG8gTWFzc2FyaSA8YWxieUBleGxuLmNvbT4KCUhhbmRsZSB0aGUgV1NfRVhfTEVGVFNDUk9MTEJBUiBzdHlsZSAodGhhdCBpcywgZHJhdyB0aGUgdmVydGljYWwKCXNjcm9sbGJhciBvbiB0aGUgbGVmdCBzaWRlIG9mIHRoZSBjb250cm9sKS4KCgkqIGRsbHMvZDNkOC9kZXZpY2UuYywgZGxscy9kM2Q4L2RpcmVjdHguYzoKCVJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJLSBiZWdpbm5pbmcgb2YgdmVydGV4IG1hdHJpeCBibGVuZGluZyB1c2luZyBleHRlbnNpb25zIChjdXJyZW50bHkKCSAgYWxwaGEgYWxwaGEgc3RhZ2UgYXMgaSBoYXZlbid0IHVuZGVyc3RhbmQgbmVlZGVkIGV4dGVuc2lvbiBiZWhhdmlvcikKCS0gbW9kaWZ5IFNldFJlbmRlclN0YXRlIGZvciBtYXRyaXggYmxlbmRpbmcgc3BlY2lmaWMgcGFyYW1zCgktIGJ5IGRlZmF1bHQgZGlmZnVzZSBjb2xvciBpcyB3aGl0ZSA7KQoJLSBjb21tZW50cyBtb3N0IG9mIHRoZSB0cmFjZXMgKGVsc2UgZmxvb2QgLi4uKQoJLSBhZGQgbW9yZSB1cmxzIGluIGNvbW1lbnRzCgktIGluZGVudCwgY2xlYW51cHMKCgkqIGRsbHMvZDNkOC9iYXNldGV4dHVyZS5jLCBkbGxzL2QzZDgvY3ViZXRleHR1cmUuYywKCSAgZGxscy9kM2Q4L2QzZDhfcHJpdmF0ZS5oLCBkbGxzL2QzZDgvZGV2aWNlLmMsIGRsbHMvZDNkOC9kaXJlY3R4LmMsCgkgIGRsbHMvZDNkOC9yZXNvdXJjZS5jLCBkbGxzL2QzZDgvc3VyZmFjZS5jLCBkbGxzL2QzZDgvdGV4dHVyZS5jLAoJICBkbGxzL2QzZDgvdm9sdW1ldGV4dHVyZS5jOgoJUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CglCZWdpbm5pbmcgb2YgbW9yZSBDT00gY29tcGxpYW50IGJlaGF2aW9yOgoJLSBBZGRSZWYvUmVsZWFzZSB3aGVyZSBuZWVkZWQKCS0gdXNlIElVbmtub3duKiBpbnN0ZWFkIHZvaWQqCgktIGZpeCBtYW55IEdldERldmljZSB1c2luZyBBZGRSZWYKCS0gZml4IElEaXJlY3QzRFN1cmZhY2U4SW1wbF9HZXRDb250YWluZXIgdXNpbmcgUXVlcnlJbnRlcmZhY2UKCgkqIGRsbHMvZDNkOC9kZXZpY2UuYzogSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCUNvcHlyZWN0IHNob3VsZCBmbGFnIGRlc3RpbmF0aW9uIHRleHR1cmUgYXMgZGlydHksIHRvIGZvcmNlIGl0IHRvIGJlCglyZWxvYWRlZC4KCgkqIGRsbHMvZDNkOC9kZXZpY2UuYywgZGxscy9kM2Q4L2RpcmVjdHguYzoKCUphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglBZGQgc3VwcG9ydCBmb3Igc29tZSBvZiB0aGUgdGV4dHVyZSBhZGRyZXNzIHN0YXRlcyBhbmQgYm9yZGVyIGNvbG91ci4KCgkqIGRsbHMvZDNkOC9kM2Q4X3ByaXZhdGUuaCwgZGxscy9kM2Q4L2RldmljZS5jLCBkbGxzL2QzZDgvc2hhZGVyLmM6CglSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCS0gbW92ZSBpbnB1dCBhbmQgb3V0cHV0IGRhdGEgaW4gVmVydGV4U2hhZGVyIHN0cnVjdAoJLSBiZXR0ZXIgdHJhY2VzCgktIHNwZWNpZmljIGlucHV0IGRhdGEgZmlsbGluZyBmdW5jdGlvbiBmb3IgdmVydGV4IHNoYWRlcnMgdXNpbmcgdmVydGV4CgkgIHNoYWRlciBkZWNsYXJhdGlvbiAoYW5kIG5vdCBGVkYgLi4uIG1heWJlIEZWRiB3aWxsIHJldHVybiBmb3IgZmFzdAoJICBwYXRoIHdpdGggc2ltcGxlcyB2ZXJ0ZXggc2hhZGVyIGRlY2xhcmF0aW9ucykKCS0gaHVnZSB2ZXJ0ZXggc2hhZGVyIGZpeGVzOgoJICAtIGFkZCBhbmQgZml4IG1hbnkgdnMgKDEuMC0+Mi4wKSB1c2VkIG9wY29kZXMgaW4gY29tcGxleCBzaGFkZXJzCgkgIC0gaW1wcm92ZW1lbnRzIHRvIHByb2dyYW1zIHBhcnNlcjogcGFyc2UgY29tbWVudHMsIHZlcnNpb24sIC4uCgkgIC0gYWRkIGEgdmVydGV4IHNoYWRlciBpbnB1dCBmaWxsZXIgZnVuY3Rpb24gKHBhcnNpbmcgdmVydGV4IHNoYWRlcgoJICAgIGRlY2xhcmF0aW9uKTogYWxtb3N0IGNvbXBsZXRlCgktIGNvbW1lbnRzIG1vc3Qgb2YgdGhlIHRyYWNlcyAoZWxzZSBmbG9vZCAuLi4pCgktIGFkZCBtb3JlIHVybHMgaW4gY29tbWVudHMKCS0gaW5kZW50LCBjbGVhbnVwcwoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGluY2x1ZGUvY29uZmlnLmguaW4sIGluY2x1ZGUvd2luZS9wb3J0Lmg6CglTdGV2ZW4gRWR3YXJkcyA8c3RldmVuX2VkNDE1M0B5YWhvby5jb20+CglDaGVjayBmb3IgdnNucHJpbnRmIGFuZCBfdnNucHJpbnRmLCBhbmQgZGVmaW5lIHZzbnByaW50ZiB3aXRoCglfdnNucHJpbnRmIGlmIG5lZWRlZC4KCgkqIGRvY3VtZW50YXRpb24vYXV0aG9ycy5lbnQ6IFRvbSBXaWNrbGluZSA8dHdpY2tsaW5lMkB0cmlhZC5yci5jb20+CglVcGRhdGVkIGF1dGhvcnMgZS1tYWlsIGFkcmVzc2VzLgoJQWRkZWQgbXkgZS1tYWlsIHRvIHRoZSBsaXN0LgoKCSogcHJvZ3JhbXMvd2luZWJvb3Qvd2luZWJvb3QuYzoKCVNoYWNoYXIgU2hlbWVzaCA8d2luZS1wYXRjaGVzQHN1bi5jb25zdW1lci5vcmcuaWw+CgktIEFkZGVkIGxpc3Rpbmcgb2Ygd2hhdCB0aGUgYm9vdCBwcm9jZXNzIGlzIGxpa2UsIGxpc3Rpbmcgd2hhdCBpcyBhbmQKCSAgd2hhdCBpcyBub3QgKHlldCkgZG9uZS4KCS0gRml4ZWQgaW5jb3JyZWN0IHN0YXRlbWVudCBpbiB0aGUgImJ1Z3MiIGxpc3QuCgktIEFkZGVkIHRyYWNlIHdoZW4gZXZlcnl0aGluZyBpcyBkb25lLgoKCSogd2luZG93cy9xdWV1ZS5jOiBEdWFuZSBDbGFyayA8ZGNsYXJrQGFrYW1haWwuY29tPgoJQ2hlY2sgZm9yIHBlbmRpbmcgWCBldmVudHMgYmVmb3JlIGdldHRpbmcgcXVldWUgc3RhdHVzLgoKCSogZGxscy9vbGUzMi9vbGUyLmM6IEFsYmVydG8gTWFzc2FyaSA8YWxieUBleGxuLmNvbT4KCS0gQWxpZ24gdGhlIGNsZWFudXAgcGhhc2Ugb2YgUmVsZWFzZVN0Z01lZGl1bSB0byB0aGUgbmF0aXZlIEFQSS4KCS0gV2hlbiB0aGUgZGF0YSBpcyBhIGJpdG1hcCBvciBhbiBlbmhhbmNlZCBtZXRhZmlsZSwgdXNlIHRoZSBjb3JyZWN0CgkgIGRhdGEgbWVtYmVyLgoKCSogZGxscy9hZHZhcGkzMi9hZHZhcGkzMi5zcGVjLCBkbGxzL2FkdmFwaTMyL3NlcnZpY2UuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVN0dWJzIGZvciBVbnxMb2NrU2VydmljZURhdGFiYXNlLgoKCSogZGxscy9kc291bmQvc291bmQzZC5jOiBSb2sgTWFuZGVsamMgPHJva21hbmRlbGpjQGhvdG1haWwuY29tPgoJQWRkZWQgY29uZSBzdXBwb3J0LgoKCSogd2luZG93cy9kZWZkbGcuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGJhaWthbC5ydT4KCVBvc3QgY29ycmVjdCBub3RpZmljYXRpb24gY29kZSBvbiBXTV9DTE9TRSBmb3IgZGlhbG9ncy4KCgkqIGNvbnRyb2xzL21lbnUuYzogUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCU1vdmUgaW50ZXJuYWwgaW1wbGVtZW50YXRpb24gaW50byB0aGUgZXhwb3J0ZWQgZnVuY3Rpb24KCURyYXdNZW51QmFyVGVtcC4KCjIwMDMtMDEtMTMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2FkdmFwaTMyL2FkdmFwaTMyLnNwZWMsIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsCgkgIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy9zZXR1cGFwaS9zZXR1cGFwaS5zcGVjLAoJICBkbGxzL3VybG1vbi91bW9uLmMsIGRsbHMvdXJsbW9uL3VybG1vbi5zcGVjLAoJICBkbGxzL3dpbnRydXN0L3dpbnRydXN0LnNwZWMsIGZpbGVzL2RyaXZlLmMsIGluY2x1ZGUvd2luYmFzZS5oLAoJICB3aW4zMi9leGNlcHQuYzoKCVJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CgktIEFkZCBzb21lIHN0dWJzLgoJLSBJbXBsZW1lbnQga2VybmVsMzIuRmF0YWxFeGl0LgoKCSogZGxscy9kaW5wdXQvLmN2c2lnbm9yZSwgZGxscy9kaW5wdXQvTWFrZWZpbGUuaW4sCgkgIGRsbHMvZGlucHV0L3ZlcnNpb24ucmM6CglFbnJpY28gSG9ybiA8ZmFybWJveTFAc3ViZGltZW5zaW9uLmNvbT4KCUFkZCB2ZXJzaW9uIGluZm8gdG8gZGlucHV0LgoKCSogZGxscy9kc291bmQvLmN2c2lnbm9yZSwgZGxscy9kc291bmQvTWFrZWZpbGUuaW4sCgkgIGRsbHMvZHNvdW5kL3ZlcnNpb24ucmM6CglFbnJpY28gSG9ybiA8ZmFybWJveTFAc3ViZGltZW5zaW9uLmNvbT4KCUFkZCB2ZXJzaW9uIGluZm8gdG8gZGxsL2Rzb3VuZC4KCgkqIGRsbHMvdXNlci90ZXN0cy9zeXNwYXJhbXMuYywgd2luZG93cy9zeXNwYXJhbXMuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJVXBkYXRlIHRoZSByZWdpc3RyeSBrZXlzIG9mIFNQSV9JQ09OSE9SSVpPTlRBTFNQQUNJTkcsCglTUElfSUNPTlZFUlRJQ0FMU1BBQ0lORyBhbmQgU1BJX1NFVElDT05USVRMRVdSQVAgdG8gbWF0Y2ggWFAuCglUaGUgU1BJX1NFVEJPUkRFUiB0ZXN0IGxlYXZlcyBhbiBpbmNvcmVjdCBib3JkZXIgc2V0dGluZyBhbmQgaXMganVzdAoJdG9vIGVycmF0aWM6IGNvbW1lbnQgaXQgb3V0IGZvciBub3cuCglNb2RpZmllZCB0aGUgU1BJX0lDT05IT1JJWk9OVEFMU1BBQ0lORywgU1BJX0lDT05WRVJUSUNBTFNQQUNJTkcgYW5kCglTUElfU0VUV09SS0FSRUEgdG8gbm90IGNhdXNlIHRoZSBpY29ucyB0byBiZSByZW9yZ2FuaXplZC4KCURvbid0IHRlc3Qgb3V0LW9mLWJvdW5kIHZhbHVlcyBmb3IgU1BJX1NFVEtFWUJPQVJEU1BFRUQgYXMgYmVoYXZpb3IKCWRpZmZlcnMgYWNjcm9zcyBXaW5kb3dzIHBsYXRmb3Jtcy4KCU9uIFdpbjl4IHRoZSBtYXhpbXVtIHZhbHVlIGZvciBTUElfU0VUU0NSRUVOU0FWRVRJTUVPVVQgaXMgMzI3NjcuCglUaGUgcmVnaXN0cnkga2V5cyBhbmQgdmFsdWVzIHN0b3JlZCBpbiB0aGVtIGZvcgoJU1BJX0lDT05IT1JJWk9OVEFMU1BBQ0lORyBhbmQgU1BJX0lDT05WRVJUSUNBTFNQQUNJTkcgZGVwZW5kIG9uIHRoZQoJV2luZG93cyBwbGF0Zm9ybTogaWdub3JlIHRoZW0uCglObyBXaW5kb3dzIHBsYXRmb3JtIHNlZW1zIHRvIFNQSV9TRVRGQVNUVEFTS1NXSVRDSDogbm8gbG9uZ2VyIHRlc3QgaXQuCglUaGUgbFBhcmFtIG9mIFdNX1NFVFRJTkdDSEFOR0UgaXMgcXVpdGUgdXNlbGVzcyAoZXZlbiB0aGUgTVNETiBzYXlzCglzbyEpIGFuZCB2YXJpZXMgYWNjcm9zcyBXaW5kb3dzIHBsYXRmb3Jtcy4gSWdub3JlIGl0LgoJQWx3YXlzIGNoZWNrIHRoZSBTeXN0ZW1QYXJhbWV0ZXJzSW5mb0EgcmV0dXJuIGNvZGUgYXMgaXQgZmFpbHMgaW4gdmVyeQoJc3RyYW5nZSB3YXlzIG9uIHNvbWUgcGxhdGZvcm1zLiBTa2lwIHVuc3VwcG9ydGVkIHNldHRpbmdzLgoJU2tpcCBVbmljb2RlIHRlc3RzIG9uIHBsYXRmb3JtcyB0aGF0IGRvbid0IHN1cHBvcnQgaXQuCgoJKiBkbGxzL29sZTMyL29sZTIuYywgZGxscy9vbGUzMi9vbGUyc3R1YnMuYzoKCVJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CglTdXBwb3J0IGEgZmV3IHRyaXZpYWwgY2FzZXMgaW4gUHJvcFZhcmlhbnRDbGVhci4KCgkqIGRsbHMvdXNlci9taXNjLmMsIGRsbHMvdXNlci91c2VyMzIuc3BlYzoKCVJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CglBbGlnblJlY3RzIHN0dWIuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgaW5jbHVkZS9jb25maWcuaC5pbiwKCSAgcHJvZ3JhbXMvd2luZWRiZy9oYXNoLmM6CglBZGRlZCBjb25maWd1cmUgY2hlY2sgZm9yIHJlZ2V4LmguCgoJKiBkb2N1bWVudGF0aW9uL3BhY2thZ2luZy5zZ21sOiBUb20gV2lja2xpbmUgPHR3aWNrbGluZTJAdHJpYWQucnIuY29tPgoJQWRkZWQgbWlzc2luZyAuc28gZmlsZXMgaW4gMzoyLgoJQWRkZWQgd2luZW1ha2VyIGluIDM6My4KCUFkZGVkIG1pc3NpbmcgLmggZmlsZXMgaW4gMzo0LgoJQWRkZWQgZG9jIGh0bWwgZmlsZXMgaW4gMzo1LgoKCSogaW5jbHVkZS9tc3ZjcnQvc3lzL3N0YXQuaDogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCURlZmluZSB0aGUgKG9sZCBuYW1lKSBzdHJ1Y3Qgc3RhdCwgaXQgaXMgdXNlZCBieSBwcm9ncmFtcyB1c2luZyB0aGUKCW9sZCBuYW1lcy4KCgkqIGRsbHMvZHBsYXl4L3ZlcnNpb24ucmM6IEVucmljbyBIb3JuIDxmYXJtYm95MUBzdWJkaW1lbnNpb24uY29tPgoJRXh0ZW5kIHZlcnNpb24gaW5mby4KCgkqIGRsbHMvZGRyYXcvZGRyYXcvaGFsLmMsIGRsbHMvZGRyYXcvZGRyYXcvdGh1bmtzLmMsIGRsbHMvZGRyYXcvbWFpbi5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCVVwZGF0ZSB0aGUgJ0RJUkVDVERSQVc3JyBmbGFnIGFjY29yZGluZyB0byB0aGUgaW50ZXJmYWNlIGluaXRpYWxpemVkLgoKCSogZGxscy9vbGVhdXQzMi90ZXN0cy92YXJ0ZXN0LmMsIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglGaXggdGhlIGNhc2Ugb2YgZmxvYXRzIGluIFZhckJzdHJGcm9tUjQsIFZhckJzdHJGcm9tUjggYW5kCglWYXJCc3RyRnJvbUN5LgoJV2UgY2Fubm90IGNoZWNrIGZvciBlcXVhbGl0eSBvZiBmbG9hdHMgb3IgZG91YmxlcyBiZWNhdXNlIG9mIHJvdW5kaW5nCgllcnJvcnMuIENoZWNrIGVxdWFsaXR5IHRvIDE0IGRpZ2l0cyBmb3IgZG91Ymxlcy4KCUFkZCBtb3JlIHByZWNpc2lvbiB0byB0aGUgZXhwZWN0ZWQgcmVzdWx0cyBzbyB0aGF0IHRoZXkgbWF0Y2ggYWN0dWFsCglyZXN1bHRzLgoJUHJpbnQgZmxvYXRpbmcgdmFsdWVzIHdpdGggbW9yZSBwcmVjaXNpb24gc28gd2Uga25vdyB3aGF0IHdlbnQgd3JvbmcuCglTcGVjaWZ5IHRoZSBsb2NhbGUgZm9yIGFsbCB2YXJpYW50IGZ1bmN0aW9ucyB0aGF0IGRlcGVuZCBvbiBpdC4KCUFkZGVkIHJldHVybiBjb2RlcyBmb3IgV2luOTUuIFdpbjk1IHJldHVybnMgZGF0ZXMgd2l0aCBvbmx5IHR3byBkaWdpdHMKCWZvciB0aGUgeWVhci4KCVVuY29tbWVudGVkIG1vcmUgVmFyaWFudENvcHlJbmQgYW5kIFZhcmlhbnRDaGFuZ2VUeXBlRXggdGVzdHMuCgoJKiBkbGxzL2FkdmFwaTMyL3Rlc3RzL3JlZ2lzdHJ5LmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJVXNlIG9ubHkgQW5zaSBBUElzIGZvciBjbGVhbmluZyB1cCB0aGUgcmVnaXN0cnkuCglTa2lwIFVuaWNvZGUgdGVzdHMgaWYgdGhlIFVuaWNvZGUgQVBJcyBhcmUgbm90IGltcGxlbWVudGVkLgoJSWYgdGhlIHZhbHVlIG5hbWUgYnVmZmVyIGlzIHRvbyBzbWFsbCwgV2luOXggcmV0dXJucyB0aGUgbnVtYmVyIG9mCgljaGFyYWN0ZXJzIHJldHVybmVkIGFzIHNwZWNpZmllZCBpbiB0aGUgTVNETiB3aGlsZSBvdGhlciBXaW5kb3dzCglyZXR1cm4gdGhlIG51bWJlciBvZiBieXRlcyB3cml0dGVuIChpbmNsdWRpbmcgdGhlIHRyYWlsaW5nICdcMCcpLgoKCSogd2luZG93cy9zeXNwYXJhbXMuYzogUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCVNQSV9HRVRNSU5JTUlaRURNRVRSSUNTIGltcGxlbWVudGVkLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvcHJvY2Vzcy5jOiBFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIHRlc3RzIGZvciBlbnZpcm9ubWVudCB2YXJpYWJsZXMsIGRlYnVnIGFuZCBzdXNwZW5kIGZsYWdzLgoKMjAwMy0wMS0xMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbXN2Y3J0L3NjYW5mLmgsIHByb2dyYW1zL3dpbmVib290L3dpbmVib290LmM6IFdhcm5pbmcgZml4ZXMuCgoJKiBpbmNsdWRlL21zdmNydC9pby5oLCBpbmNsdWRlL21zdmNydC9zdGRpby5oLAoJICBpbmNsdWRlL21zdmNydC9zeXMvc3RhdC5oLCBpbmNsdWRlL21zdmNydC9zeXMvdGltZWIuaCwKCSAgaW5jbHVkZS9tc3ZjcnQvc3lzL3R5cGVzLmgsIGluY2x1ZGUvbXN2Y3J0L3N5cy91dGltZS5oOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVVzZSBpbmxpbmUgZnVuY3Rpb25zIGluc3RlYWQgb2YgbWFjcm9zIHRvIGF2b2lkIHByb2JsZW1zIGluIEMrKy4KCUlubGluZSBmdW5jdGlvbnMgcmVzcGVjdCBzY29wZSwgd2hlcmVhcyBtYWNyb3MgZG9uJ3QuCglEZWZpbmUgdW1hc2sgaW4gc3lzL3N0YXQuaCwgYW5kIG1vZGVfdCBpbiBzeXMvdHlwZXMuaC4KCgkqIHByb2dyYW1zL3dpbmVkYmcvZGJnLnksIHByb2dyYW1zL3dpbmVkYmcvZGVidWcubCwKCSAgcHJvZ3JhbXMvd2luZWRiZy9kZWJ1Z2dlci5oLCBwcm9ncmFtcy93aW5lZGJnL2hhc2guYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgJ2luZm8gc3ltYm9sJyBjb21tYW5kIHRvIGxvb2sgZm9yIGRlZmluZWQgc3ltYm9scy4KCgkqIGRsbHMvc3RpL3N0aS5zcGVjLCBkbGxzL3N0aS9zdGlfbWFpbi5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBhIGZldyBtb3JlIHN0dWJzLgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglNb2RpZnkgT1NTX1dhdmV7SW4sT3V0fUluaXQgdG8gcmVwb3J0IHRoZSBleGFjdCBjYXBhYmlsaXRpZXMgb2YgdGhlCglPU1MgZHJpdmVyLgoJQWRkIHN1cHBvcnQgZm9yIHRoZSA0OGtIeiBhbmQgOTZrSHogZm9ybWF0cy4KCgkqIGRsbHMvd2lubW0vbWNpd2F2ZS9tY2l3YXZlLmM6IEVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJU29tZSBjb2RlIGNsZWFudXBzLgoJQmV0dGVyIGVycm9yIGhhbmRsaW5nLgoJUmVtb3ZlZCB1bm5lZWRlZCBpbnRlcm5hbCB2YXJpYWJsZXMuCgoJKiB3aW5kb3dzL3NweS5jOiBQcmludCB0aGUgbWVzc2FnZSBuYW1lIGZvciByZWdpc3RlcmVkIG1lc3NhZ2VzLgoKCSogZGxscy9tc3ZjcnQvc2NhbmYuaDogRml4ZWQgRU9GIHJldHVybiB2YWx1ZSBmb3Igc3NjYW5mLgoKCSogZGxscy9jb21jYXQvY29tY2F0X21haW4uYywgZGxscy9jb21jYXQvcmVnc3ZyLmMsCgkgIGRsbHMvY29tY2F0L3JlZ3N2ci5oOgoJSm9obiBLLiBIb2htIDxqaG9obUBhY20ub3JnPgoJUmVpbXBsZW1lbnRlZCBEbGxSZWdpc3RlclNlcnZlciBhbmQgRGxsVW5yZWdpc3RlclNlcnZlciBpbiBhIG1vcmUKCWdlbmVyYWxseSB1c2VmdWwgd2F5LCBlbnRpcmVseSBpbiByZWdzdnIuYy4gIEFkZGVkICh1bilyZWdpc3RyYXRpb24gb2YKCWludGVyZmFjZXMuCgoJKiBmaWxlcy9maWxlLmM6IFNoYWNoYXIgU2hlbWVzaCA8d2luZS1wYXRjaGVzQHN1bi5jb25zdW1lci5vcmcuaWw+CglSZW1vdmVkIHRoZSBGSVhNRXMgd2hlbiBwZXJmb3JtaW5nIE1vdmVGaWxlRXggd2l0aAoJTU9WRUZJTEVfREVMQVlfVU5USUxfUkVCT09ULCBhcyB3aW5lYm9vdCB3aWxsIG5vdyB0YWtlIGNhcmUgb2YgaXQuCgoJKiBwcm9ncmFtcy93aW5lYm9vdC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luZWJvb3Qvd2luZWJvb3QuYzoKCVNoYWNoYXIgU2hlbWVzaCA8d2luZS1wYXRjaGVzQHN1bi5jb25zdW1lci5vcmcuaWw+CglJbXBsZW1lbnRlZCB0aGUgInBlbmRpbmcgcmVuYW1lIiByZWdpc3RyeSBwcm9jZXNzaW5nLgoKCSogdG9vbHMvd3BwL3BwbC5sOiBKb2hhbm5lcyBFLiBTY2hpbmRlbGluIDxKb2hhbm5lcy5TY2hpbmRlbGluQGdteC5kZT4KCUFsbG93IEMrKyBjb21tZW50cyBhZnRlciAjZW5kaWYuCgoJKiBkbGxzL21zdmNydC9maWxlLmMsIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUNyZWF0ZSBzdHVicyBmb3IgY2hzaXplLCBkdXAsIGFuZCBkdXAyLgoKCSogcHJvZ3JhbXMvd2luZWNvbnNvbGUvZGlhbG9nLmMsCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25zb2xlX0RlLnJjLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZV9Fbi5yYywKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbnNvbGVfRnIucmMsCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25zb2xlX0h1LnJjLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZV9aaC5yYywKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbnNvbGVfcmVzLmg6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIHRoZSBHVUkgcGFydCBmb3Igc2V0dGluZyB0aGUgZWRpdGlvbiBtb2RlIGZsYXZvci4KCgkqIG1zZG9zL3Z4ZC5jOiBFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCVJlbW92ZWQgbm9uIG5lZWRlZCBpbmNsdWRlIG9mIG1vZHVsZS5oLgoKCSogZGxscy9vbGVhdXQzMi92YXJpYW50LmM6IE1hcmN1cyBNZWlzc25lciA8bWVpc3NuZXJAc3VzZS5kZT4KCUNvZXJjZSBWVF9VTktOT1dOIDwtPiBWVF9ESVNQQVRDSCwgTlVMTCBpcyB2YWxpZCBpbiB0aGVzZSBjYXNlcy4KCURyb3AgVlRfeCAtPiBWVF94IGNvZXJjaW9ucywgdGhleSBhcmUgaGFuZGxlZCBiZWZvcmUgdGhlIHN3aXRjaCgpCglhbHJlYWR5LgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliLmM6IE1hcmN1cyBNZWlzc25lciA8bWVpc3NuZXJAc3VzZS5kZT4KCUNvbnZlcnQgVlRfRElTUEFUQ0ggdmFyaWFudHMgaW50byBWVF9VU0VSREVGSU5FRC9US0lORF9ESVNQQVRDSCBhbmQKCVRLSU5EX0lOVEVSRkFDRSB0YXJnZXRzLCBRdWVyeSBJSURfSURpc3BhdGNoIGlmIG5lY2Vzc2FyeS4KCgkqIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL29sZTMyLnNwZWM6CglNYXJjdXMgTWVpc3NuZXIgPG1laXNzbmVyQHN1c2UuZGU+CglJbXBsZW1lbnRlZCBDb0dldFRyZWF0QXNDbGFzcy4KCgkqIHRvb2xzL3dyYy93cmMuYywgdG9vbHMvd3JjL3dyYy5tYW46CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQWRkZWQgd2luZHJlcyBjb21wYXRpYmlsaXR5IHN3aXRjaGVzOiAtdiwgLS1bbm8tXXVzZS10ZW1wLWZpbGUuCglOZXcgLWggb3B0aW9uIHRvIGNvbmZvcm0gdG8gc3RhbmRhcmQgcHJhY3RpY2UgKGFuZCBNUycgcmMpLgoJVXBkYXRlZCBkb2N1bWVudGF0aW9uLCBtaW5vciBvcHRpb24gcGFyc2luZyBjbGVhbnVwLgoKCSogZGxscy9kc291bmQvZHNvdW5kX21haW4uYywgZGxscy9kc291bmQvcHJpbWFyeS5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCURTQi5TZXRGb3JtYXQ6VHJhY2UgdGhlIHJlcXVlc3RlZCBmb3JtYXQgYXMgc29vbiBhcyBwb3NzaWJsZSBpbiBjYXNlCglpdCBpcyBub3Qgc3VwcG9ydGVkIGFuZCBzaW1wbGlmeSB2YWxpZGl0eSBjaGVjay4KCUluaXRpYWxpemUgdGhlIGJ1ZmZlciBmb3JtYXQsIGFuZCBvbmx5IGZyb20gdGhlIGZpZWxkcyB3ZSBjaGVja2VkLgoJRGlyZWN0U291bmRDcmVhdGU4IGZ1bGx5IGluaXRpYWxpemVzIHRoZSBidWZmZXIgZm9ybWF0IChqdXN0IGluIGNhc2UpLgoKCSogaW5jbHVkZS9tc3ZjcnQvc3RkbGliLmg6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglEZWZpbmUgcXNvcnQgYW5kIGJzZWFyY2ggaW4gc3RkbGliLmguCgoJKiBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL21zdmNydC9kaXJlbnQuaDoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglBZGQgZGlyZW50LmggaGVhZGVyIGZvciBVbml4L21pbmd3IGNvbXBhdGliaWxpdHkuCgoJKiBkbGxzL2Rzb3VuZC9taXhlci5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJRml4IGxhdGVudCBkZWFkbG9jayBpbiBEU09VTkRfY2FsbGJhY2suCgoJKiBkbGxzL21zdmNydC9zY2FuZi5oLCBkbGxzL21zdmNydC90ZXN0cy9zY2FuZi5jOgoJTWVobWV0IFlhc2FyIDxteWFzYXJAZnJlZS5mcj4KCS0gcmV0dXJuIEVPRiB3aGVuIHN0cmVhbSBpcyBlbXB0eQoJLSBjb25mb3JtYW5jZSB0ZXN0IHVwZGF0ZWQKCjIwMDMtMDEtMTAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB0b29scy93cHAvcHBsLmw6CglGaXhlZCBoYW5kbGluZyBvZiB0cmFpbGluZyB3aGl0ZXNwYWNlIGFmdGVyICNlbHNlIGFuZCAjZW5kaWYuCgoJKiBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZV9aaC5yYywKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbnNvbGVfcmVzLnJjOgoJTGl1IFNwaWRlciA8bGl1c3BpZGVyQHlhaG9vLmNvbT4KCUFkZGVkIFNpbXBsaWZpZWQgQ2hpbmVzZSByZXNvdXJjZXMuCgoJKiBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL21zdmNydC9zeXMvdW5pc3RkLmgsCgkgIGluY2x1ZGUvbXN2Y3J0L3VuaXN0ZC5oOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUFkZCB1bmlzdGQuaCBmaWxlcyBmb3IgbWluZ3cvVW5peCBjb21wYXRpYmlsaXR5LgoKCSogZGxscy9kc291bmQvc291bmQzZC5jOiBSb2sgTWFuZGVsamMgPHJva21hbmRlbGpjQGhvdG1haWwuY29tPgoJM2Qgc291bmQgZGltaW5pc2hlcyB3aXRoIGRpc3RhbmNlLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jOiBKdWVyZ2VuIFNjaG1pZWQgPGouc2NobWllZEB0LW9ubGluZS5kZT4KCUZpeGVkIGNyYXNoIGluIHdpbmFtcCByZXBvcnRlZCBieSBBbmRyZWFzIE1vaHIuCgoJKiBkbGxzL3NoZWxsMzIvY2xhc3Nlcy5jOiBKdWVyZ2VuIFNjaG1pZWQgPGouc2NobWllZEB0LW9ubGluZS5kZT4KCUZpeCByZWNlbnRseSBicm9rZW4gR2V0RGlzcGxheU5hbWVzT2Ygb2YgbmFtZXMgb2Ygc2hlbGwgZXh0ZW5zaW9uCglkbGxzLgoKCSogaW5jbHVkZS93aW5kZWYuaDogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGJhaWthbC5ydT4KCUNoYW5nZSB0eXBlcyBvZiBXUEFSQU0sIExQQVJBTSBhbmQgTFJFU1VMVCBhY2NvcmRpbmcgdG8gTVMgU0RLIGRlZmluaXRpb25zLgoKCSogdG9vbHMvd2luZWdjYy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJU3VwcG9ydCBkZWZhdWx0IG91dHB1dCBuYW1lIChhLm91dCk7IHNvbWUgY29uZmlndXJlIHNjcmlwdHMgY2hlY2sgZm9yCglpdC4KCgkqIGZpbGVzL2ZpbGUuYzogU2hhY2hhciBTaGVtZXNoIDx3aW5lLXBhdGNoZXNAc3VuLmNvbnN1bWVyLm9yZy5pbD4KCVNldCBjb3JyZWN0IGxhc3QgZXJyb3IgaWYgdGhlIHBhdGggY29udGFpbnMgd2lsZGNhcmQgY2hhcmFjdGVycy4KCjIwMDMtMDEtMDkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9vbGVhdXQzMi9NYWtlZmlsZS5pbiwKCSAgZGxscy9vbGVhdXQzMi9vbGVwaWN0dXJlLmMsIGluY2x1ZGUvY29uZmlnLmguaW46CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIEdJRiBkZWNvbXByZXNzb3Igc3VwcG9ydCB0byBPTEUgQXV0b21hdGlvbiBJUGljdHVyZXMuCgoJKiBkbGxzL2QzZDgvZGV2aWNlLmM6IEphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglDYWxjdWxhdGUgc3RhcnRpbmcgcG9zaXRpb24gZm9yIGEgY29weXJlY3QgY29ycmVjdGx5LgoKCSogcHJvZ3JhbXMvd2luZWNvbnNvbGUvcmVnaXN0cnkuYywKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbl9wcml2YXRlLmgsCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25zb2xlLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIGFuIGVkaXRpb24gbW9kZSBmbGF2b3IgKHdpbjMyL2VtYWNzLi4uKSB0byB0aGUgY29uc29sZSBzZXR0aW5ncwoJaW4gdGhlIHJlZ2lzdHJ5LgoKCSogZGxscy9rZXJuZWwvY29uc29sZS5jLCBkbGxzL2tlcm5lbC9jb25zb2xlX3ByaXZhdGUuaCwKCSAgZGxscy9rZXJuZWwvZWRpdGxpbmUuYywgaW5jbHVkZS93aW5jb24uaCwKCSAgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLCBzZXJ2ZXIvY29uc29sZS5jLCBzZXJ2ZXIvY29uc29sZS5oLAoJICBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvdHJhY2UuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJU2V0IHRoZSBlZGl0aW9uIG1vZGUgYXMgYSBzcGVjaWZpYyBhdHRyaWJ1dGUsIG5vdCBhbiBleHRlbnNpb24gb2YgdGhlCgljb25zb2xlIG1vZGUuCgoJKiBwcm9ncmFtcy93aW5lZGJnL3dpbmVkYmcuYzogRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglSZW1vdmVkIGVtYWNzIGVkaXRpb24gZmxhdm9yIChpdCdzIG5vdyBhIGNvbnNvbGUgYXR0cmlidXRlKS4KCgkqIGdyYXBoaWNzL3gxMWRydi9iaXRibHQuYzogRHVhbmUgQ2xhcmsgPGRjbGFya0Bha2FtYWlsLmNvbT4KCUlmIGJpdC9zdHJldGNoYmx0IHNvdXJjZSBhbmQgZGVzdGluYXRpb24gRENzIGFyZSB0aGUgc2FtZSwgbWFrZSBzdXJlCgl0aGUgY2hhbmdlcyBhcmUgY29tbWl0dGVkIGJlZm9yZSB1bmxvY2tpbmcuCgoJKiBNYWtlLnJ1bGVzLmluLCBtaXNjZW11L01ha2VmaWxlLmluLCBtaXNjZW11L21haW4uYywKCSAgdG9vbHMvd2lkbC9NYWtlZmlsZS5pbiwgdG9vbHMvd2luYXBpL01ha2VmaWxlLmluLAoJICB0b29scy93aW5lYnVpbGQvTWFrZWZpbGUuaW4sIHRvb2xzL3dpbmVkdW1wL01ha2VmaWxlLmluLAoJICB0b29scy93bWMvTWFrZWZpbGUuaW4sIHRvb2xzL3dwcC9NYWtlZmlsZS5pbiwgdG9vbHMvd3JjL01ha2VmaWxlLmluOgoJRG8gbm90IGRlZmluZSBfX1dJTkVTUkNfXyB3aGVuIGJ1aWxkaW5nIHRvb2xzIGFuZCBtaXNjZW11LgoKCSogZGxscy9NYWtldGVzdC5ydWxlcy5pbjoKCVJlbW92ZSBnbG9iYWwgTk9OQU1FTEVTUyogZGVmaW5lIGZvciB0ZXN0cyB0b28uCgoJKiBpbmNsdWRlL29haWRsLmgsIGluY2x1ZGUvb2JqaWRsLmgsIGluY2x1ZGUvd3R5cGVzLmg6CglSZWdlbmVyYXRlZCB3aXRoIGxhdGVzdCB3aWRsLgoKCSogTWFrZS5ydWxlcy5pbiwgaW5jbHVkZS9NYWtlZmlsZS5pbjoKCUFkZGVkIGEgZmV3IHJ1bGVzIHRvIHJlYnVpbGQgaWRsIGhlYWRlcnMuCgoJKiB0b29scy93aWRsL2hlYWRlci5jLCB0b29scy93aWRsL3dpZGwuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJRGVjbGFyZSB1c2VyLW1hcnNoYWxsZXIgcHJvdG90eXBlcyBmb3IgdHlwZXMgZGVjbGFyZWQgd2l0aCBbd2lyZV9tYXJzaGFsXS4KCURlZmluZSBfX1dJRExfXyBwcmVwcm9jZXNzb3IgbWFjcm8sIHNvIFdpbmUtc3BlY2lmaWMgSURMIGNhbiBiZSBlbmNsb3NlZAoJaW4gI2lmZGVmIF9fV0lETF9fLiBGaXhlZCBhIGZpbGUgb3V0cHV0IGJ1Zy4KCgkqIHByb2dyYW1zL2Nsb2NrL1poLnJjLCBwcm9ncmFtcy9jbG9jay9yc3JjLnJjLCBwcm9ncmFtcy9ub3RlcGFkL1poLnJjLAoJICBwcm9ncmFtcy9ub3RlcGFkL3JzcmMucmMsIHByb2dyYW1zL3Byb2dtYW4vWmgucmMsCgkgIHByb2dyYW1zL3Byb2dtYW4vcnNyYy5yYywgcHJvZ3JhbXMvd2luZWZpbGUvWmgucmMsCgkgIHByb2dyYW1zL3dpbmVmaWxlL3JzcmMucmMsIHByb2dyYW1zL3dpbmhlbHAvWmgucmMsCgkgIHByb2dyYW1zL3dpbmhlbHAvcnNyYy5yYzoKCWxpdSBzcGlkZXIgPGxpdXNwaWRlckB5YWhvby5jb20+CglBZGRlZCBTaW1wbGlmaWVkIENoaW5lc2UgcmVzb3VyY2VzLgoKCSogZGxscy9zaGx3YXBpL3BhdGguYywgZGxscy9zaGx3YXBpL3Rlc3RzLy5jdnNpZ25vcmUsCgkgIGRsbHMvc2hsd2FwaS90ZXN0cy9NYWtlZmlsZS5pbiwgZGxscy9zaGx3YXBpL3Rlc3RzL3BhdGguYzoKCU1hdHRoZXcgTWFzdHJhY2NpIDxtYXR0QGFjbGFyby5jb20+CglBZGQgaW1wbGVtZW50YXRpb24gZm9yIFBhdGhDcmVhdGVGcm9tVXJsVyBhbmQgYWRkIHRoZSBzdGFydCBmb3Igc29tZQoJVVJMIHVuaXQgdGVzdHMuCgoJKiBNYWtlLnJ1bGVzLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYzoKCU1hcmN1cyBNZWlzc25lciA8bWVpc3NuZXJAc3VzZS5kZT4KCUNoZWNrIGFuZCBkZWZpbmUgQVMgKGZvciBjcm9zcy9iaWFyY2ggY29tcGlsZXIgc3VwcG9ydCkuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYzoKCUFkZCAtZ3N0YWJzKyBvcHRpb24gaWYgc3VwcG9ydGVkIChiYXNlZCBvbiBhIHBhdGNoIGJ5IE1hcmN1cwoJTWVpc3NuZXIpLgoKCSogTWFrZS5ydWxlcy5pbiwgZGxscy9nZGkvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL01ha2VmaWxlLmluLAoJICBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW4sIGRsbHMvdXNlci9NYWtlZmlsZS5pbiwgdG9vbHMvd3JjL3dyYy5jLAoJICB0b29scy93cmMvd3JjLm1hbjoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglDb2xsYXBzZSB0aGUgLWhIcnMgb3B0aW9ucyBpbnRvIHRoZSAtTyBvcHRpb24uCglHZW5lcmF0ZSAucmVzIGZpbGVzIGJ5IGRlZmF1bHQuCgoJKiBkbGxzL3BzYXBpL3BzYXBpX21haW4uYzogRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglJbXBsZW1lbnRlZCBHZXRNb2R1bGVCYXNlTmFtZShBVyksIEdldE1vZHVsZUZpbGVOYW1lRXgoQVcpIGFuZAoJR2V0TW9kdWxlSW5mb3JtYXRpb24uCgoJKiBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsIGRsbHMva2VybmVsL3Rvb2xoZWxwLmMsCgkgIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci9yZXF1ZXN0LmgsCgkgIHNlcnZlci9zbmFwc2hvdC5jLCBzZXJ2ZXIvdHJhY2UuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJLSBubyBsb25nZXIgZGVwZW5kIG9uIHRvb2xoZWxwIGRlZmluaXRpb25zIGZvciBnZW5lcmF0aW5nIHNuYXBzaG90cwoJLSBhZGRlZCBnZXRfZGxsX2luZm8gcmVxdWVzdAoKMjAwMy0wMS0wOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvcHNhcGkuaDogRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCB0aGUgbWlzc2luZyBBUElzLgoKCSogY29udHJvbHMvY29tYm8uYywgY29udHJvbHMvbGlzdGJveC5jLCBjb250cm9scy9tZW51LmMsCgkgIGNvbnRyb2xzL3VpdG9vbHMuYywgZGxscy9jb21jdGwzMi9jb21ib2V4LmMsCgkgIGRsbHMvY29tY3RsMzIvZGF0ZXRpbWUuYywgZGxscy9jb21jdGwzMi9saXN0dmlldy5jLAoJICBkbGxzL2NvbWN0bDMyL21vbnRoY2FsLmMsIGRsbHMvY29tY3RsMzIvcGFnZXIuYywKCSAgZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYywgZGxscy9jb21jdGwzMi9yZWJhci5jLAoJICBkbGxzL2NvbWN0bDMyL3N0YXR1cy5jLCBkbGxzL2NvbWN0bDMyL3RhYi5jLCBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYywKCSAgZGxscy9jb21jdGwzMi90b29sdGlwcy5jLCBkbGxzL2NvbWN0bDMyL3RyYWNrYmFyLmMsCgkgIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYywgZGxscy9kM2Q4L2RldmljZS5jLCBkbGxzL2QzZDgvc3VyZmFjZS5jLAoJICBkbGxzL2RkcmF3L2RzdXJmYWNlL2RpYi5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL2Zha2V6YnVmZmVyLmMsCgkgIGRsbHMvZGRyYXcvZHN1cmZhY2UvbWFpbi5jLCBkbGxzL29sZWF1dDMyL29sZXBpY3R1cmUuYywKCSAgZGxscy9zaGVsbDMyL3NobG1lbnUuYywgZGxscy9zaGVsbDMyL3NobHZpZXcuYywgZGxscy90dHlkcnYvd25kLmMsCgkgIGRsbHMvdXNlci9wYWludGluZy5jLCBkbGxzL3VzZXIvdGVzdHMvc3lzcGFyYW1zLmMsIGRsbHMvdXNlci90ZXh0LmMsCgkgIGRsbHMvd2luZXBzL2VzY2FwZS5jLCBkbGxzL3dpbmVwcy9pbml0LmMsIGRsbHMvd2lubW0vbWNpYXZpL3duZC5jLAoJICBkbGxzL3gxMWRydi9zY3JvbGwuYywgZGxscy94MTFkcnYvd2luZG93LmMsIGRsbHMveDExZHJ2L3dpbnBvcy5jLAoJICBkbGxzL3gxMWRydi94cmVuZGVyLmMsIGdyYXBoaWNzL3gxMWRydi9iaXRibHQuYywKCSAgZ3JhcGhpY3MveDExZHJ2L3RleHQuYywgaW5jbHVkZS93aW5kZWYuaCwgaW5jbHVkZS93aW5lL2RlYnVnLmgsCgkgIG9iamVjdHMvY2xpcHBpbmcuYywgb2JqZWN0cy9lbmhtZXRhZmlsZS5jLCBvYmplY3RzL3JlZ2lvbi5jLAoJICBwcm9ncmFtcy93aW5lZGJnL2luZm8uYywgcHJvZ3JhbXMvd2luaGVscC93aW5oZWxwLmMsIHdpbmRvd3MvZGNlLmMsCgkgIHdpbmRvd3MvZGVmd25kLmMsIHdpbmRvd3MvbWRpLmMsIHdpbmRvd3Mvbm9uY2xpZW50LmMsCgkgIHdpbmRvd3MvcGFpbnRpbmcuYywgd2luZG93cy9zcHkuYywgd2luZG93cy9zeXNwYXJhbXMuYywKCSAgd2luZG93cy93aW4uYywgd2luZG93cy93aW5wb3MuYzoKCURhbiBLZWdlbCA8ZGFua0BrZWdlbC5jb20+CglDaGFuZ2UgUkVDVCB0byB1c2UgTE9ORyB0byBtYXRjaCB3aW4zMiBzdGFuZGFyZCBoZWFkZXJzIGFuZCBmaXggZm9ybWF0CglzdHJpbmdzIHRvIHVzZSAlbGQgZm9yIFJFQ1QgZWxlbWVudHMuCgoJKiBkbGxzL3VzZXIvbWVzc2FnZS5jLCBkbGxzL3VzZXIvbXNnMTYuYywgZGxscy91c2VyL3VzZXIuZXhlLnNwZWMsCgkgIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3F1ZXVlLmMsCgkgIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci90cmFjZS5jLCB3aW5kb3dzL21lc3NhZ2UuYzoKCVN0b3JlIHRoZSBrZXlib2FyZCBzdGF0ZSBpbiB0aGUgdGhyZWFkIGlucHV0IHN0cnVjdHVyZSBvbiB0aGUgc2VydmVyCglzaWRlLgoKCSogc2VydmVyL3dpbmRvdy5jOgoJUmVtb3ZlZCBubyBsb25nZXIgdXNlZCBsb2NhbCB2YXJpYWJsZSAoc3BvdHRlZCBieSBEbWl0cnkgVGltb3Noa292KS4KCgkqIHNlcnZlci9hc3luYy5jOgoJR3JhYiB0aGUgdGhyZWFkIG9iamVjdCBpbiBjYXNlIHRoZSB0aHJlYWQgdGVybWluYXRlcyB3aXRoIHBlbmRpbmcKCWFzeW5jIHJlcXVlc3RzIChzcG90dGVkIGJ5IEFuZHJlYXMgTW9ocikuCgoJKiB3aW5kb3dzL3dpbi5jOiBEdWFuZSBDbGFyayA8ZGNsYXJrQGFrYW1haWwuY29tPgoJV1NfQ0FQVElPTiBpcyBhIHR3byBiaXQgZmllbGQsIHNvIHRlc3QgYXBwcm9wcmlhdGVseS4KCgkqIGRsbHMvd2luc3Bvb2wvaW5mby5jOiBTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCUdldFByaW50ZXJEcml2ZXJEaXJlY3RvcnlBOiBkbyBub3QgY3Jhc2ggb24gbnVsbCBwb2ludGVycy4KCgkqIGRsbHMvdXNlci9tZXNzYWdlLmMsIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwKCSAgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3F1ZXVlLmMsIHNlcnZlci91c2VyLmgsIHNlcnZlci93aW5kb3cuYywKCSAgd2luZG93cy9pbnB1dC5jLCB3aW5kb3dzL21lc3NhZ2UuYzoKCVN0b3JlIHRoZSBoYXJkd2FyZSBtZXNzYWdlcyBpbiB0aGUgdGhyZWFkIGlucHV0IHN0cnVjdHVyZSwgbm90IGluIHRoZQoJdGhyZWFkIHF1ZXVlLiBHZXQgcmlkIG9mIHRoZSBjb29rZWQgbWVzc2FnZXMgcXVldWUuCgoyMDAzLTAxLTA3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogcHJvZ3JhbXMvTWFrZXByb2cucnVsZXMuaW4sIHByb2dyYW1zL2F2aXRvb2xzL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy9hdml0b29scy9hdmlwbGF5LmMsIHByb2dyYW1zL3JwY3NzL3JwY3NzX21haW4uYywKCSAgcHJvZ3JhbXMvd2NtZC9kaXJlY3RvcnkuYywgcHJvZ3JhbXMvd2luZWNvbnNvbGUvZGlhbG9nLmM6CglEZWZpbmVkIE5PTkFNRUxFU1NVTklPTi9TVFJVQ1QgZGlyZWN0bHkgaW4gdGhlIGZpbGVzIHRoYXQgbmVlZCBpdAoJaW5zdGVhZCBvZiBnbG9iYWxseSBpbiB0aGUgbWFrZWZpbGUuCgoJKiBpbmNsdWRlL3RjaGFyLmg6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglVc2UgdGhlIHN0YW5kYXJkIHN5bWJvbCBuYW1lcyBpbnN0ZWFkIG9mIHRoZSBtc3ZjcnQgc3BlY2lmaWMgb25lcy4KCgkqIGRsbHMvd2luZXBzL2J1aWx0aW4uYywgZGxscy93aW5lcHMvZG93bmxvYWQuYywgZGxscy93aW5lcHMvZm9udC5jLAoJICBkbGxzL3dpbmVwcy90eXBlMS5jLCBkbGxzL3dpbmVwcy90eXBlNDIuYywgZGxscy93aW5zcG9vbC9pbmZvLmMsCgkgIGRsbHMvd2luc3Bvb2wvd3Nwb29sLmMsIGluY2x1ZGUvd2luc3Bvb2wuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJUmVtb3ZlIGV4dHJhICNpbmNsdWRlIGRpcmVjdGl2ZXMgZnJvbSB3aW5zcG9vbC5oLgoKCSogZGxscy9kZHJhdy9kM2RfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L2QzZGV4ZWN1dGVidWZmZXIuYywKCSAgZGxscy9kZHJhdy9kM2R0ZXh0dXJlLmMsIGRsbHMvZGRyYXcvbWVzYS5jLAoJICBkbGxzL2RkcmF3L21lc2FfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L2QzZGRldmljZS9tYWluLmMsCgkgIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgkgLSByZXdyb3RlIGEgbGl0dGxlIGJpdCB0aGUgc3RhdGUgbWFnYWdlbWVudCB0byByZW1vdmUgdGhlIFJlbmRlclN0YXRlCgkgICBzdHVjdHVyZSBhbmQgdXNlIG9ubHkgdGhlIHN0YXRlX2Jsb2NrIGNvZGUKCSAtIGZhY3Rvcml6ZSBzb21lIGNvZGUgYmV0d2VlbiBpbnRlcmZhY2UgcmV2aXNpb25zCgkgLSBmaXggc29tZSBzbWFsbHMgYnVncwoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglJbiBPU1NfUmF3T3BlbkRldmljZSwgYWx3YXlzIHJldHJpZXZlIHRoZSBkZXZpY2UgZm9ybWF0IGFuZCBzdG9yZSBpdAoJaW4gdGhlIE9TU19ERVZJQ0Ugc3RydWN0dXJlLgoJTW9kaWZ5IG91ciBpbnRlcm5hbCBmdW5jdGlvbnMgc28gdGhhdCB0aGV5IGNhbiBiZSB0b2xkIHRvIHN0aWxsIG9wZW4KCXRoZSBkZXZpY2UgZXZlbiBpZiB0aGUgZGV2aWNlIGZvcm1hdCBpcyBub3QgYW4gZXhhY3QgbWF0Y2guCglJbiB3b2RPcGVuIHJldHVybiB0aGUgYWN0dWFsIGRldmljZSBmb3JtYXQgaWYgdGhlIFdBVkVfRElSRUNUU09VTkQKCWZsYWcgaXMgc2V0LgoJRml4ZXMgRGlyZWN0U291bmQgb24gaTgxMCBzb3VuZGNhcmRzIChpLmUuIGNhcmRzIHN1cHBvcnRpbmcgb25seQoJNDgwMDB4MTZ4MikuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYywgZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYywKCSAgZGxscy9jb21jdGwzMi90cmVldmlldy5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmMsCgkgIGRsbHMvY29tbWRsZy9maWxlZGxnYnJvd3Nlci5jLCBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYywKCSAgZGxscy9kM2Q4L2RldmljZS5jLCBkbGxzL2QzZDgvZGlyZWN0eC5jLCBkbGxzL2RkcmF3L2QzZGNvbW1vbi5jLAoJICBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsIGRsbHMvZGRyYXcvZDNkZXhlY3V0ZWJ1ZmZlci5jLAoJICBkbGxzL2RkcmF3L2QzZGxpZ2h0LmMsIGRsbHMvZGRyYXcvZDNkbWF0ZXJpYWwuYywKCSAgZGxscy9kZHJhdy9kM2R0ZXh0dXJlLmMsIGRsbHMvZGRyYXcvZDNkdmlld3BvcnQuYywKCSAgZGxscy9kZHJhdy9kZHJhdy9tYWluLmMsIGRsbHMvZGRyYXcvZGRyYXcvdXNlci5jLAoJICBkbGxzL2RkcmF3L2RpcmVjdDNkL21lc2EuYywgZGxscy9kZHJhdy9oZWxwZXIuYywKCSAgZGxscy9kZHJhdy9kc3VyZmFjZS9kaWIuYywgZGxscy9kZHJhdy9kc3VyZmFjZS9mYWtlemJ1ZmZlci5jLAoJICBkbGxzL2RkcmF3L2RzdXJmYWNlL2hhbC5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL21haW4uYywKCSAgZGxscy9kcGxheXgvZHBsYXkuYywgZGxscy9kcGxheXgvZHBsYXl4X2dsb2JhbC5jLAoJICBkbGxzL2RwbGF5eC9kcGxvYmJ5LmMsIGRsbHMvZHBsYXl4L25hbWVfc2VydmVyLmMsCgkgIGRsbHMvZHNvdW5kL3NvdW5kM2QuYywgZGxscy9rZXJuZWwvdGltZS5jLCBkbGxzL250ZGxsL2Nkcm9tLmMsCgkgIGRsbHMvbnRkbGwvZmlsZS5jLCBkbGxzL250ZGxsL2hlYXAuYywgZGxscy9udGRsbC90aW1lLmMsCgkgIGRsbHMvbnRkbGwvdmlydHVhbC5jLCBkbGxzL29sZTMyL2FudGltb25pa2VyLmMsCgkgIGRsbHMvb2xlMzIvY2xpcGJvYXJkLmMsIGRsbHMvb2xlMzIvY29tcG9iai5jLAoJICBkbGxzL29sZTMyL2NvbXBvc2l0ZW1vbmlrZXIuYywgZGxscy9vbGUzMi9kYXRhY2FjaGUuYywKCSAgZGxscy9vbGUzMi9maWxlbW9uaWtlci5jLCBkbGxzL29sZTMyL2hnbG9iYWxzdHJlYW0uYywKCSAgZGxscy9vbGUzMi9pdGVtbW9uaWtlci5jLCBkbGxzL29sZTMyL21lbWxvY2tieXRlcy5jLAoJICBkbGxzL29sZTMyL29sZTIuYywgZGxscy9vbGUzMi9vbGUyaW1wbC5jLCBkbGxzL29sZTMyL29sZTJzdHVicy5jLAoJICBkbGxzL29sZTMyL29sZXByb3h5LmMsIGRsbHMvb2xlMzIvcnBjLmMsCgkgIGRsbHMvb2xlMzIvc3RnX2JpZ2Jsb2NrZmlsZS5jLCBkbGxzL29sZTMyL3N0Z19zdHJlYW0uYywKCSAgZGxscy9vbGUzMi9zdG9yYWdlLmMsIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmMsCgkgIGRsbHMvb2xlYXV0MzIvb2xlZm9udC5jLCBkbGxzL29sZWF1dDMyL29sZXBpY3R1cmUuYywKCSAgZGxscy9vbGVhdXQzMi90bWFyc2hhbC5jLCBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYywKCSAgZGxscy9vbGVhdXQzMi92YXJpYW50LmMsIGRsbHMvcnBjcnQ0L25kcl9vbGUuYywKCSAgZGxscy9zaGVsbDMyL2Jyc2ZvbGRlci5jLCBkbGxzL3NoZWxsMzIvZGF0YW9iamVjdC5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGxzdHJpbmcuYywgZGxscy9zaGVsbDMyL3NoZmxkcl9kZXNrdG9wLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGZsZHJfZnMuYywgZGxscy9zaGVsbDMyL3NoZmxkcl9teWNvbXAuYywKCSAgZGxscy9zaGVsbDMyL3Nodl9iZ19jbWVudS5jLCBkbGxzL3NoZWxsMzIvc2h2X2l0ZW1fY21lbnUuYywKCSAgZGxscy9zaGx3YXBpL2lzdHJlYW0uYywgZGxscy9zaGx3YXBpL3N0cmluZy5jLCBkbGxzL3R3YWluL2RzbV9jdHJsLmMsCgkgIGRsbHMvdXJsbW9uL3Vtb24uYywgZGxscy91c2VyL2V4dGljb24uYywgZGxscy92ZXJzaW9uL3Jlc291cmNlLmMsCgkgIGRsbHMvd2luZWRvcy9pbnQyZi5jLCBkbGxzL3dpbmVkb3MvdmdhLmMsIGRsbHMvd2luZXBzL2RyaXZlci5jLAoJICBkbGxzL3dpbmVwcy9pbml0LmMsIGRsbHMvd2luZXBzL3BzLmMsIGRsbHMvd2lubW0vbW1zeXN0ZW0uYywKCSAgZGxscy93aW5tbS93aW5lb3NzL21peGVyLmMsIGRsbHMvd2lubW0vd2lubW0uYywgZGxscy93aW5zcG9vbC9pbmZvLmMsCgkgIGRsbHMveDExZHJ2L2RnYTIuYywgZGxscy94MTFkcnYva2V5Ym9hcmQuYywgZGxscy94MTFkcnYvbW91c2UuYywKCSAgZGxscy94MTFkcnYveDExZGRyYXcuYywgZmlsZXMvZHJpdmUuYywgZmlsZXMvZmlsZS5jLCBpbmNsdWRlL3dpbm50LmgsCgkgIGxpYnJhcnkvbG9hZGVyLmMsIGxvYWRlci9wZV9yZXNvdXJjZS5jLCBtZW1vcnkvaGVhcC5jLAoJICBtZW1vcnkvdmlydHVhbC5jLCBtaXNjL2NwdS5jLCBtaXNjL3N5c3RlbS5jLCBtc2Rvcy92eGQuYywKCSAgc2NoZWR1bGVyL3RpbWVyLmMsIHRvb2xzL3dpbmVkdW1wL3BlLmMsIHdpbjMyL25ld2Zucy5jLAoJICB3aW5kb3dzL2lucHV0LmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRGVmaW5lIE5PTkFNRUxFU1N7U1RSVUNULFVOSU9OfSBleHBsaWNpdGx5IGluIHRoZSBmaWxlcyB0aGF0IG5lZWQgdGhlbS4KCgkqIHRvb2xzL01ha2VmaWxlLmluLCB0b29scy93aW5lZ2NjLmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJVGVhY2ggd2luZWdjYyB0byBwcm9kdWNlIGV4ZWN1dGFibGVzIGRpcmVjdGx5IGZyb20gYSBidW5jaCBvZiBzb3VyY2UgZmlsZXMuCglDcmVhdGUgYSB3aW5lZysrIGFraW4gdG8gZysrLiBEcm9wIHN1cHBvcnQgZm9yIHRoZSBhYnVzZWQgLXhjKysgc3dpdGNoZWQuCgoJKiB3aW5kb3dzL3dpbi5jOiBEdWFuZSBDbGFyayA8ZGNsYXJrQGFrYW1haWwuY29tPgoJQSB3aW5kb3cgd2l0aCBhIFdTX0VYX0FQUFdJTkRPVyBleHRlbmRlZCBzdHlsZSBjYW4gYWxzbyBnZXQgYSBtZW51LgoKCSogcHJvZ3JhbXMvd2luZWRiZy9nZGJwcm94eS5jOiBFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIHByb3RvY29sIHBhY2tldCBoYW5kbGluZyB3aGVuIHdpbmVkYmcgaXMgdG9vIHNsb3cgdG8gYW5zd2VyLgoKCSogcHJvZ3JhbXMvd2luZWJvb3Qvd2luZWJvb3QuYzoKCVNoYWNoYXIgU2hlbWVzaCA8d2luZS1wYXRjaGVzQHN1bi5jb25zdW1lci5vcmcuaWw+CgktIENsZWFuZWQgdXAgdGhlIGNvZGUgKHNhdmluZyBvbiBjaGFpbmluZyBzdHJpbmdzKSBieSBDRGluZyB0byB0aGUKCSAgc3lzdGVtIHJvb3QgZGlyZWN0b3J5IGJlZm9yZSBkb2luZyBhbnl0aGluZyBlbHNlLgoJLSBXaWxsIG5vdyByZW5hbWUgd2luaW5pdC5pbmkgdG8gd2luaW5pdC5iYWsgaW5zdGVhZCBvZiBlcmFzaW5nIGl0IGFzCgkgIGJlZm9yZS4KCgkqIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglBbHdheXMgb3BlbiB0aGUgZGV2aWNlIGluIHRoZSBkZWZhdWx0IDIyMDUweDh4MiBmb3JtYXQsIGFuZCBsZXQgaXQKCXJlcG9ydCB0aGUgYWN0dWFsIGRldmljZSBmb3JtYXQgdG8gdXMuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCB0aGUgQmxvY2tTaXplIGNoZWNrLgoKCSogZGxscy9vbGUzMi9vbGUyLnNwZWMsIGRsbHMvb2xlMzIvb2xlMnN0dWJzLmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJU3R1YnMgZm9yIERsbEdldENsYXNzT2JqZWN0LCBPbGVbR1NdZXRDbGlwYm9hcmQgaW4gb2xlMi4KCgkqIGRsbHMvZGRyYXcvZDNkX3ByaXZhdGUuaCwgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWFpbi5jLAoJICBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsIGRsbHMvZGRyYXcvbWVzYS5jOgoJQ2hyaXN0b3BoIEZyaWNrIDxmcmlja0BTQy1OZXR3b3Jrcy5kZT4KCUltcGxlbWVudGF0aW9uIG9mIChHZXR8U2V0KUNsaXBQbGFuZSBmb3IgZDNkNy4KCgkqIGRsbHMvb2xlYXV0MzIvdGVzdHMvc2FmZWFycmF5LmMsIGRsbHMvb2xlYXV0MzIvdGVzdHMvdmFydGVzdC5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglNYW55IG9sZWF1dDMyIEFQSXMgYXJlIG1pc3Npbmcgb24gV2luOTUvSUUzLiBMb2FkIHRoZW0gZHluYW1pY2FsbHkuCglVbmNvbW1lbnQgc29tZSAnTlVMTCcgdGVzdHMgYXMgdGhleSBwYXNzIG9uIFdpbmRvd3MgYW5kIG9uIFdpbmUuCglDb21tZW50IG91dCB0aG9zZSB0aGF0IGNyYXNoIG9uIFdpbjk1IGFuZCBpbmRpY2F0ZSB3aHkgdGhleSBhcmUKCWNvbW1lbnRlZCBvdXQuCglSZW1vdmUgdHdvIHJlZHVuZGFudCB0ZXN0cyBpbiB2YXJ0ZXN0LmMgKFZhckkxRnJvbUJvb2wgYW5kCglWYXJVSTJGcm9tSTIsIGxhc3QgZGlmZiBodW5rKS4KCgkqIGRvY3VtZW50YXRpb24vd2luZWxpYi1iaW5kbGxzLnNnbWw6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJU3RhbmRhcmRpemUgdGhlIGNhcGl0YWxpemF0aW9uIG9mIFdpbmUuCgoJKiB0b29scy93aW5hcGkvbXN2Y21ha2VyOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFkZCBzdXBwb3J0IGZvciAuZHJ2IGV4dGVuc2lvbiAoZm9yIHdpbnNwb29sLmRydiB0ZXN0cyBmb3IgaW5zdGFuY2UpLgoKCSogcHJvZ3JhbXMvd2luZWNvbnNvbGUvY3Vyc2VzLmM6IEVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJLSBmaXhlZCBzb21lIHVwZGF0ZSBwcm9ibGVtcyAoZ2VuZXJpYyAmIHdoaWxlIHNjcm9sbGluZykKCS0gbm93IGdlbmVyYXRpbmcga2V5IGV2ZW50IGZvciBDdHJsLVtBLVpdIHRoYXQgb3VyIGVkaXRsaW5lIHVuZGVyc3RhbmRzCgktIGltcGxlbWVudGVkIGN1cnNvciB2aXNpYmlsaXR5CgoyMDAzLTAxLTA1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogcHJvZ3JhbXMvd2luZWRiZy9leHByLmM6IEVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgc29tZSBidWdzIGluIGNhc3Qgb3BlcmF0b3IuCgoJKiBkbGxzL29sZWF1dDMyL2Rpc3BhdGNoLmMsIGRsbHMvb2xlYXV0MzIvb2xlYXV0LmMsCgkgIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jLCBpbmNsdWRlL3dpbmUvb2JqX3dlYmJyb3dzZXIuaDoKCUZpeGVkIHNvbWUgaXNzdWVzIGNhdXNlZCBieSB0aGUgbmV3IG9haWRsLmguCgoJKiBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL29haWRsLmgsIGluY2x1ZGUvb2FpZGwuaWRsLAoJICBpbmNsdWRlL3dpbmUvb2JqX2Vycm9yaW5mby5oLCBpbmNsdWRlL3dpbmUvb2JqX29sZWF1dC5oOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglXcm90ZSBhIG5ldyBvYWlkbC5pZGwgdG8gcmVwbGFjZSBpbmNsdWRlL3dpbmUvb2JqX29sZWF1dC5oIGFuZAoJaW5jbHVkZS93aW5lL29ial9lcnJvcmluZm8uaC4KCgkqIHRvb2xzL3dpbmVnY2MuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCW1pbmd3IGxpbmtzIGluIGNvbWRsZzMyLCBzaGVsbDMyLCBhbmQgYWR2YXBpMzIgYnkgZGVmYXVsdC4KCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywgZGxscy9kZHJhdy9kM2RleGVjdXRlYnVmZmVyLmMsCgkgIGRsbHMvZGRyYXcvbWVzYV9wcml2YXRlLmg6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJRmFjdG9yaXplIHRoZSAnb3J0aG8nIGNvZGUgKHdpbGwgYmUgbmVlZGVkIGxhdGVyIG9uKS4KCgkqIGRsbHMvZGRyYXcvZGRyYXcvbWFpbi5jOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJSWdub3JlIHRoZSBMUFNVUkZBQ0UgYml0IGlmIEFMTE9DT05MT0FEIGlzIHNldC4KCgkqIGRvY3VtZW50YXRpb24vYXJjaGl0ZWN0dXJlLnNnbWwsIGRvY3VtZW50YXRpb24vZGVidWdnZXIuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9mb250cy5zZ21sLCBkb2N1bWVudGF0aW9uL2ltcGxlbWVudGF0aW9uLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vbXVsdGltZWRpYS5zZ21sLCBkb2N1bWVudGF0aW9uL29sZS5zZ21sLAoJICBkb2N1bWVudGF0aW9uL3BhY2thZ2luZy5zZ21sLCBkb2N1bWVudGF0aW9uL3BvcnRpbmcuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9wcmludGluZy5zZ21sLCBkb2N1bWVudGF0aW9uL3dpbmVsaWItYmluZGxscy5zZ21sLAoJICB0b29scy9idWdfcmVwb3J0LnBsOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglTdGFuZGFyZGl6ZSB0aGUgY2FwaXRhbGl6YXRpb24gb2YgV2luZS4KCgkqIHByb2dyYW1zL2Nsb2NrL0RhLnJjLCBwcm9ncmFtcy9jbG9jay9EZS5yYywgcHJvZ3JhbXMvY2xvY2svRW4ucmMsCgkgIHByb2dyYW1zL2Nsb2NrL0VzLnJjLCBwcm9ncmFtcy9jbG9jay9GaS5yYywgcHJvZ3JhbXMvY2xvY2svRnIucmMsCgkgIHByb2dyYW1zL2Nsb2NrL1B0LnJjLCBwcm9ncmFtcy9jbG9jay9Tay5yYywgcHJvZ3JhbXMvY2xvY2svU3cucmMsCgkgIHByb2dyYW1zL2Nsb2NrL1dhLnJjLCBwcm9ncmFtcy9ub3RlcGFkL0RhLnJjLCBwcm9ncmFtcy9ub3RlcGFkL0RlLnJjLAoJICBwcm9ncmFtcy9ub3RlcGFkL0VzLnJjLCBwcm9ncmFtcy9ub3RlcGFkL0ZpLnJjLAoJICBwcm9ncmFtcy9ub3RlcGFkL0ZyLnJjLCBwcm9ncmFtcy9ub3RlcGFkL1B0LnJjLAoJICBwcm9ncmFtcy9ub3RlcGFkL1NpLnJjLCBwcm9ncmFtcy9ub3RlcGFkL1NrLnJjLAoJICBwcm9ncmFtcy9ub3RlcGFkL1N3LnJjLCBwcm9ncmFtcy9ub3RlcGFkL1dhLnJjLAoJICBwcm9ncmFtcy9wcm9nbWFuL0VuLnJjLCBwcm9ncmFtcy9wcm9nbWFuL0ZyLnJjLAoJICBwcm9ncmFtcy93aW5oZWxwL0RhLnJjLCBwcm9ncmFtcy93aW5oZWxwL0RlLnJjLAoJICBwcm9ncmFtcy93aW5oZWxwL0VuLnJjLCBwcm9ncmFtcy93aW5oZWxwL0VzLnJjLAoJICBwcm9ncmFtcy93aW5oZWxwL0ZpLnJjLCBwcm9ncmFtcy93aW5oZWxwL0ZyLnJjLAoJICBwcm9ncmFtcy93aW5oZWxwL0h1LnJjLCBwcm9ncmFtcy93aW5oZWxwL0l0LnJjLAoJICBwcm9ncmFtcy93aW5oZWxwL0tvLnJjLCBwcm9ncmFtcy93aW5oZWxwL1B0LnJjLAoJICBwcm9ncmFtcy93aW5oZWxwL1N3LnJjLCBwcm9ncmFtcy93aW5oZWxwL1ZhLnJjLAoJICBwcm9ncmFtcy93aW5oZWxwL1dhLnJjOgoJU2hhY2hhciBTaGVtZXNoIDx3aW5lY29kZUBzdW4uY29uc3VtZXIub3JnLmlsPgoJQ2hhbmdlIHRoZSBTVUJMQU5HX05FVVRSQUwgY2xhdXNlIGluIGFsbCB3aW5lbGliIGFwcGxpY2F0aW9ucyB0bwoJU1VCTEFOR19ERUZBVUxULCBhcyB0aGV5IHNob3VsZCBiZS4KCgkqIHNlcnZlci9jb25zb2xlLmM6IEVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJLSBGaXhlZCBzZXZlcmFsIGJ1Z3Mgd2hpbGUgcmVzaXppbmcgYW4gZXhpc3Rpbmcgc2NyZWVuYnVmZmVyLgoJLSBSZWR1Y2VkIHVwZGF0ZSBhcmVhIGZvciBzb21lIHdyaXRlIGNvbmRpdGlvbnMuCgktIFN0YXJ0ZWQgaW1wbGVtZW50aW5nIGV2ZW50IG1lc3NhZ2UgY29sbGFwc2luZy4KCgkqIHRvb2xzL3dpbmV3cmFwLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglQYXNzIC1sJ3MgdGhhdCBhcmUgbm90IC5kbGwncyBvciAuYSdzIHRvIHRoZSBsaW5rZXIuCgoJKiB0b29scy93aW5lZ2NjLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CgktIERlZmluZSB0aGUgc3RhbmRhcmQgX19XSU5FX18gYW5kIF9fV0lOMzJfXyBtYWNyb3MuCgktIE1hcCAtbHV1aWQgdG8gLWx3aW5lX3V1aWQsIGluIFVuaXggLWx1dWlkIGRvZXMgc29tZXRoaW5nIGVsc2UuCgoJKiBpbmNsdWRlL2RvY29iai5oLCBpbmNsdWRlL29jaWRsLmg6IE92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJSW5jbHVkZSBvYWlkbC5oIGluc3RlYWQgb2Ygd2luZS9vYmpfb2xlYXV0LmguCgoJKiBpbmNsdWRlL29sZWlkbC5oOiBPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCVRlbXBvcmFyaWx5IGluY2x1ZGUgb2JqYmFzZS5oIGZyb20gb2xlaWRsLmguCglSZW1vdmVkIGluY2x1c2lvbiBvZiBvYmpfZXJyb3JpbmZvLmguCgoJKiBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYzogT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglBdm9pZCBkaXJlY3QgSUNPTV9DQUxMIHVzYWdlLgoKCSogaW5jbHVkZS9vbGVhdXRvLmgsIGluY2x1ZGUvd2luZS9vYmpfb2xlYXV0LmgsIG9sZS9keGd1aWQuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJTW92ZWQgYSBjb3VwbGUgb2YgZGVmaW5pdGlvbnMgZnJvbSBpbmNsdWRlL3dpbmUvb2JqX29sZWF1dC5oIHRvCglpbmNsdWRlL29sZWF1dG8uaC4KCgkqIE1ha2VmaWxlLmluOiBDaHJpc3RvcGggRnJpY2sgPGZyaWNrQFNDLU5ldHdvcmtzLmRlPgoJQ3JlYXRpb24gb2YgYSB0YWdzIGZpbGUgd2l0aCB0aGUgY3RhZ3MgdG9vbC4KCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywgZGxscy9kZHJhdy9kM2R0ZXh0dXJlLmMsCgkgIGRsbHMvZGRyYXcvbWVzYS5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gZml4IGluIHRoZSBHZXRIYW5kbGUgbWV0aG9kCgktIGZhY3Rvcml6ZSBzb21lIGNvZGUgYmV0d2VlbiBEM0QxLzIvMyBhbmQgRDNENwoJLSBmaXggcmVmZXJlbmNlIGNvdW50aW5nIGZvciBwYWxldHRlcwoKCSogZGxscy9vbGUzMi9NYWtlZmlsZS5pbiwgZGxscy9vbGUzMi9pZnMuaCwgZGxscy9vbGUzMi9tZW1sb2NrYnl0ZXMuYywKCSAgZGxscy9vbGUzMi9vbGUyLnNwZWMsIGRsbHMvb2xlMzIvc3RvcmFnZS5jLCBkbGxzL29sZTMyL3N0b3JhZ2Uuc3BlYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJb2xlMm5scy5jIGlzIGEgMTZiaXQgb25seS4KCU5vIG5lZWQgdG8gZGVmaW5lIElDT00gbWFjcm9zIGZvciAxNmJpdCBpZmFjZSBJTWFsbG9jMTYuCglEZWZpbmUgYW5kIGltcGxlbWVudCBIR0xPQkFMX0xvY2tCeXRlczE2LgoJU3RhcnRlZCBvbiBTdGdPcGVuU3RvcmFnZU9uSUxvY2tCeXRlcy4KCgkqIGluY2x1ZGUvd2luZS93aW5iYXNlMTYuaDogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBzZXZlcmFsIG1pc3NpbmcgSzMyV09XKiBwcm90b3R5cGVzLgoKCSogZGxscy9vbGVhdXQzMi90ZXN0cy9zYWZlYXJyYXkuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglUaGUgdnQgZmllbGQgc2hvdWxkIGJlIGEgVkFSVFlQRSBub3QgYSBWQVJFTlVNLgoKCSogZGxscy91c2VyL3Rlc3RzL3N5c3BhcmFtcy5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUZpeCBzaWduZWQvdW5zaWduZWQgY29tcGlsYXRpb24gd2FybmluZ3MuCgoyMDAzLTAxLTA0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIHByb2dyYW1zL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy93aW5lYm9vdC8uY3ZzaWdub3JlLCBwcm9ncmFtcy93aW5lYm9vdC9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvd2luZWJvb3Qvd2luZWJvb3QuYzoKCVNoYWNoYXIgU2hlbWVzaCA8d2luZWNvZGVAc3VuLmNvbnN1bWVyLm9yZy5pbD4KCUluaXRpYWwgd2luZWJvb3QgaW1wbGVtZW50YXRpb247IGF0IHRoaXMgc3RhZ2Ugb25seSB3aW5pbml0LmluaQoJcHJvY2Vzc2luZyBoYXMgYmVlbiB3cml0dGVuLgoKCSogZGxscy9kc291bmQvc291bmQzZC5jOiBSb2sgTWFuZGVsamMgPHJva21hbmRlbGpjQGhvdG1haWwuY29tPgoJLSAzZCBidWZmZXJzIHByb2R1Y2Ugc291bmRzCgktIHNvbWUgb3RoZXIgc21hbGwgZml4ZXMKCgkqIGRsbHMvZHNvdW5kL3NvdW5kM2QuYzogUm9rIE1hbmRlbGpjIDxyb2ttYW5kZWxqY0Bob3RtYWlsLmNvbT4KCS0gY2xlYW5lZCAqU2V0KiBmdW5jdGlvbnMKCS0gYWRkZWQgaW5pdGlhbCBjb2RlIGZvciAzZCBidWZmZXIgcmVjYWxjdWxhdGluZwoJLSBhZGRlZCBzb21lIGF1eGlsaWFyeSBmdW5jdGlvbnMKCgkqIE1ha2UucnVsZXMuaW4sIGRsbHMvTWFrZWRsbC5ydWxlcy5pbiwgaW5jbHVkZS9tbWRkay5oLAoJICBpbmNsdWRlL21tc3lzdGVtLmgsIGluY2x1ZGUvb2FpZGwuaCwgaW5jbHVkZS9vYmpiYXNlLmgsCgkgIGluY2x1ZGUvb2JqaWRsLmgsIGluY2x1ZGUvb2JqaWRsLmlkbCwgaW5jbHVkZS9vY2lkbC5oLAoJICBpbmNsdWRlL29sZWlkbC5oLCBpbmNsdWRlL3Byc2h0LmgsIGluY2x1ZGUvcnBjLmgsIGluY2x1ZGUvcnBjZGNlLmgsCgkgIGluY2x1ZGUvcnBjcHJveHkuaCwgaW5jbHVkZS9zaGx3YXBpLmgsIGluY2x1ZGUvdGNoYXIuaCwKCSAgaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2luZGVmLmgsIGluY2x1ZGUvd2luZG93cy5oLAoJICBpbmNsdWRlL3dpbmUvZGVidWcuaCwgaW5jbHVkZS93aW5lL29ial9jb250cm9sLmgsCgkgIGluY2x1ZGUvd2luZS9vYmpfaW5wbGFjZS5oLCBpbmNsdWRlL3dpbm50LmgsIGluY2x1ZGUvd2luc29jay5oLAoJICBpbmNsdWRlL3dpbnRlcm5sLmgsIGluY2x1ZGUvd293bnQzMi5oLCBpbmNsdWRlL3d0eXBlcy5oLAoJICBpbmNsdWRlL3d0eXBlcy5pZGwsIGxpYnJhcnkvTWFrZWZpbGUuaW4sIG1pc2NlbXUvTWFrZWZpbGUuaW4sCgkgIG9sZS9NYWtlZmlsZS5pbiwgc2VydmVyL01ha2VmaWxlLmluLCB0b29scy93aWRsL01ha2VmaWxlLmluLAoJICB0b29scy93aW5hcGkvTWFrZWZpbGUuaW4sIHRvb2xzL3dpbmFwaS9tc3ZjbWFrZXIsCgkgIHRvb2xzL3dpbmVidWlsZC9NYWtlZmlsZS5pbiwgdG9vbHMvd2luZWR1bXAvTWFrZWZpbGUuaW4sCgkgIHRvb2xzL3dtYy9NYWtlZmlsZS5pbiwgdG9vbHMvd3BwL01ha2VmaWxlLmluLCB0b29scy93cmMvTWFrZWZpbGUuaW4sCgkgIHVuaWNvZGUvTWFrZWZpbGUuaW46CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJUmVuYW1lIF9fV0lORV9fIHRvIF9fV0lORVNSQ19fLgoKCSogZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYywgZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jLAoJICBkbGxzL250ZGxsL3NpZ25hbF9wb3dlcnBjLmMsIGRsbHMvbnRkbGwvc2lnbmFsX3NwYXJjLmMsCgkgIGluY2x1ZGUvY29tbWN0cmwuaCwgaW5jbHVkZS9kM2Q4dHlwZXMuaCwgaW5jbHVkZS9tc3ZjcnQvZWguaCwKCSAgaW5jbHVkZS9tc3ZjcnQvc3RkaW8uaCwgaW5jbHVkZS9tc3ZjcnQvc3RkbGliLmgsIGluY2x1ZGUvd2luYmFzZS5oLAoJICBpbmNsdWRlL3dpbmUvZXhjZXB0aW9uLmg6CglSZW1vdmVkIGEgZmV3IG1vcmUgI2lmZGVmIF9fV0lORV9fLgoKCSogaW5jbHVkZS93aW5udC5oOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRW5hYmxlIG5hbWVsZXNzIHN0cnVjdHVyZXMgaW4gQysrIGZvciBnY2MgPj0gMy54IChkaXNjb3ZlcnkgYW5kCgl0ZXN0aW5nIGRvbmUgYnkgRGFuIEtlZ2VsKS4KCgkqIHRvb2xzL3dpbmVnY2MuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVBhc3Mgb25seSB0aGUgLW8gLWwgLUwgb3B0aW9ucyB0byB3aW5ld3JhcCwgaWdub3JlIHRoZSByZXN0LgoKMjAwMy0wMS0wMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHRvb2xzL3dpbmVtYWtlcjoKCVJlbW92ZWQgYSBjb3VwbGUgb2Ygbm8gbG9uZ2VyIHVzZWQgdGVzdHMgaW4gdGhlIGdlbmVyYXRlZCBjb25maWd1cmUKCXNjcmlwdC4KCgkqIGRsbHMvd2lubW0vdGVzdHMvd2F2ZS5jOiBHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCSNpbmNsdWRlIDxzdGRsaWIuaD4gaW5zdGVhZCBvZiB0aGUgbm9uLXN0YW5kYXJkIDxtYWxsb2MuaD4uCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tYWluLmM6IExpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglFbmFibGUgWiBidWZmZXIgYnkgZGVmYXVsdC4KCgkqIGluY2x1ZGUvbW1zeXN0ZW0uaDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBZGRlZCBUSU1FX0tJTExfU1lOQ0hST05PVVMuCgoJKiB0b29scy93aW5lZ2NjLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglQcm9wZXJseSBoYW5kbGUgdGhlIC1NIHN3aXRjaC4KCgkqIHRvb2xzL3dpbmV3cmFwLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglQcm9wZXJseSBsaW5rIGFnYWlucyAuYSBmaWxlcyB1c2luZyB0aGUgLWwgc3dpdGNoLgoJU3VwcG9ydCBtb3JlIHZlcmJvc2Ugb3V0cHV0LgoKCSogZGxscy9kM2Q4L2RldmljZS5jOiBKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJQWRkZWQgYmFzaWMgc3VwcG9ydCBmb3IgbWlwbWFwaW5nLCB2ZXJpZmllZCB1c2luZyBzYW1wbGUgZnJvbQoJY29kZXNhbXBsZXIuY29tLgoKCSogZGxscy9kM2Q4L2RldmljZS5jOiBKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJLSBVc2UgZmFzdGVyIHZlcnRleCBhcnJheXMgKHJhdGhlciB0aGFuIHByb2Nlc3NpbmcgdmVydGV4ZXMgb25lIGJ5CgkgIG9uZSksIHdoZW5ldmVyIHBvc3NpYmxlLgoJLSBMZXNzIHRyYWNlIGluIHRoZSBzbG93ZXIgZm9ybSBieSBkZWZhdWx0LgoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLCBkbGxzL2RkcmF3L2QzZHRleHR1cmUuYywKCSAgZGxscy9kZHJhdy9tZXNhLmMsIGRsbHMvZGRyYXcvbWVzYV9wcml2YXRlLmg6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSBzb21lIGZpeGVzIC8gb3B0aW1pc2F0aW9ucyBpbiB0aGUgY29sb3Iga2V5aW5nIGNvZGUKCS0gbWluaW1pemUgYXQgdGhlIG1heGltdW0gdGV4dHVyZSB1cGxvYWRzCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsIGRsbHMvZGRyYXcvZDNkdGV4dHVyZS5jLAoJICBkbGxzL2RkcmF3L2RzdXJmYWNlL21haW4uYywgZGxscy9kZHJhdy9tZXNhLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSByZS1hY3RpdmF0ZSB0aGUgY29sb3Ita2V5aW5nIGNvZGUKCS0gZml4IHlldCBhZ2FpbiB0ZXh0dXJlIGVudW1lcmF0aW9uIHRvIHBsZWFzZSBhbGwgZ2FtZXMgOi0vCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tYWluLmMsIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYzoKCUNocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCVJlZW5hYmxlIGRldmljZSdzIGRlZmF1bHQgcmVuZGVyIHN0YXRlcyBpbml0aWFsaXphdGlvbi4KCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYzogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUZpeCBvcmRlciBvZiB0ZXh0dXJlIGVudW1lcmF0aW9uIHRvIGZpeCB5ZXQgYW5vdGhlciBzZXQgb2YgZHVtYiBnYW1lcy4KCgkqIGRsbHMvZGRyYXcvZDNkX3ByaXZhdGUuaCwgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWFpbi5jLAoJICBkbGxzL2RkcmF3L2QzZGRldmljZS9tYWluLmgsIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywKCSAgZGxscy9kZHJhdy9kM2RleGVjdXRlYnVmZmVyLmMsIGRsbHMvZGRyYXcvbWVzYS5jLAoJICBkbGxzL2RkcmF3L21lc2FfcHJpdmF0ZS5oOgoJQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJQmVnaW5uaW5nIG9mIHN0YXRlIGJsb2NrLgoJSW5pdGlhbGl6ZSB0aGUgZGV2aWNlIHdpdGggdGhlIHJpZ2h0IEQzRCBkZWZhdWx0IHZhbHVlcy4KCUltcGxlbWVudHMgR2V0UmVuZGVyU3RhdGUsIEdldFRleHR1cmVTdGFnZVN0YXRlIGFuZCBHZXRMaWdodFN0YXRlLgoKCSogZGxscy9kZHJhdy9kM2RfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L2QzZGNvbW1vbi5jLAoJICBkbGxzL2RkcmF3L2QzZGRldmljZS9tYWluLmMsIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywKCSAgZGxscy9kZHJhdy9kM2RleGVjdXRlYnVmZmVyLmMsIGRsbHMvZGRyYXcvZDNkdGV4dHVyZS5jLAoJICBkbGxzL2RkcmF3L2QzZHZlcnRleGJ1ZmZlci5jLCBkbGxzL2RkcmF3L21lc2FfcHJpdmF0ZS5oOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gaGFjayBmb3Igb25lIGNhc2Ugb2YgdGhlIFByb2Nlc3NWZXJ0aWNlcyBjYXNlCgktIHNvbWUgY2hhbmdlcyBpbiB0aGUgZXhlY3V0ZSBidWZmZXIgdG8gcmV1c2UgdGhlIG5ldyBNYXRyaXggY29kZQoJLSBhbHdheXMgcmVpbml0aWFsaXplIHRoZSBlbnVtZXJhdGlvbiBzdHJ1Y3R1cmVzIGluIGNhc2Ugc29tZSBnYW1lcwoJICBtb2RpZnkgdGhlbQoJLSBhZGRlZCBzdXBwb3J0IGZvciB0aGUgKHVudXNlZCkgUmVzZXJ2ZWQxIGZpZWxkIGluIHRoZSBGVkYgZm9ybWF0cwoJLSBmaXggMzIgYml0IHRleHR1cmluZyBhbmQgYWRkZWQgbW9yZSBjaGVja3MKCS0gcmVtb3ZlIHNvbWUgdXNlbGVzcyBhbmQgYW5ub3lpbmcgZml4bWUKCgkqIGRsbHMvZGRyYXcvZDNkX3ByaXZhdGUuaCwgZGxscy9kZHJhdy9kM2Rjb21tb24uYywKCSAgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWFpbi5jLCBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsCgkgIGRsbHMvZGRyYXcvZDNkZXhlY3V0ZWJ1ZmZlci5jLCBkbGxzL2RkcmF3L2QzZGxpZ2h0LmMsCgkgIGRsbHMvZGRyYXcvZDNkbWF0ZXJpYWwuYywgZGxscy9kZHJhdy9tZXNhX3ByaXZhdGUuaDoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIGNyZWF0ZSBhIGZ1bmN0aW9uIHRvIHNldCB0aGUgdmFyaW91cyB0cmFuc2Zvcm1hdGlvbiBtYXRyaWNlcyB0bwoJICBmYWN0b3JpemUgdGhlIGNvZGUgYmV0d2VlbiB0aGUgdmFyaW91cyBjb2RlIHBhdGgKCS0gZml4ZWQgc29tZSBsb2dnaW5nIHN0dWZmCgoJKiBkbGxzL2RkcmF3L2QzZHZlcnRleGJ1ZmZlci5jLCBkbGxzL2RkcmF3L2QzZGRldmljZS9tYWluLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSBtb3JlIHRodW5raW5nIGluIHRoZSBEM0RWZXJ0ZXhCdWZmZXIgQ09NIG9iamVjdAoJLSBhZGRlZCAnc3VwcG9ydCcgZm9yIEdldEluZm8KCgkqIGRsbHMvZGRyYXcvZDNkY29tbW9uLmMsIGRsbHMvZGRyYXcvbWVzYS5jLAoJICBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSBsaWdodCBpbXByb3ZlbWVudHMKCS0gbWlzYy4gZml4ZXMKCgkqIHRvb2xzL3dpbmV3cmFwLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglTaW1wbGlmeSB0aGUgY29kZSBmb3IgdGhlIGdlbmVyYXRlZCB3cmFwcGVyLgoJTWlzY2VsbGFuZW91cyBzbWFsbCBjbGVhbnVwcy4KCgkqIGRsbHMvYXZpY2FwMzIvYXZpY2FwMzJfbWFpbi5jLCBkbGxzL2F2aWZpbDMyL2FjbXN0cmVhbS5jLAoJICBkbGxzL2F2aWZpbDMyL2FwaS5jLCBkbGxzL2F2aWZpbDMyL2F2aWZpbGUuYywKCSAgZGxscy9hdmlmaWwzMi9leHRyYWNodW5rLmMsIGRsbHMvYXZpZmlsMzIvZmFjdG9yeS5jLAoJICBkbGxzL2F2aWZpbDMyL2dldGZyYW1lLmMsIGRsbHMvYXZpZmlsMzIvaWNtc3RyZWFtLmMsCgkgIGRsbHMvYXZpZmlsMzIvd2F2ZmlsZS5jLCBkbGxzL2NvbWNhdC9jb21jYXRfcHJpdmF0ZS5oLAoJICBkbGxzL2NvbWN0bDMyL2FuaW1hdGUuYywgZGxscy9jb21tZGxnL2NkbGcuaCwKCSAgZGxscy9jb21tZGxnL2ZpbGVkbGdicm93c2VyLmgsIGRsbHMvZHBsYXl4L01ha2VmaWxlLmluLAoJICBkbGxzL21zdmlkZW8vbWNpd25kLmMsIGRsbHMvbXN2aWRlby9tc3JsZTMyL21zcmxlX3ByaXZhdGUuaCwKCSAgZGxscy9tc3ZpZGVvL21zdmlkZW8xNi5jLCBkbGxzL21zdmlkZW8vbXN2aWRlb19wcml2YXRlLmgsCgkgIGRsbHMvb2xlMzIvTWFrZWZpbGUuaW4sIGRsbHMvb2xlMzIvY29tcG9zaXRlbW9uaWtlci5jLAoJICBkbGxzL29sZWF1dDMyL01ha2VmaWxlLmluLCBkbGxzL29sZWRsZy9vbGVkbGdfbWFpbi5jLAoJICBkbGxzL29sZXBybzMyL29sZXBybzMyc3R1YnMuYywgZGxscy9ycGNydDQvTWFrZWZpbGUuaW4sCgkgIGRsbHMvc2hkb2N2dy9zaGRvY3Z3LmgsIGRsbHMvc2hkb2N2dy9zaGRvY3Z3X21haW4uYywKCSAgZGxscy9zaGVsbDMyL01ha2VmaWxlLmluLCBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLAoJICBkbGxzL3NobHdhcGkvc3RyaW5nLmMsIGRsbHMvdXJsbW9uL3Vtb24uYywKCSAgZGxscy93aW5tbS9tY2lhdmkvcHJpdmF0ZV9tY2lhdmkuaCwgZGxscy94MTFkcnYvZXZlbnQuYywKCSAgaW5jbHVkZS9jb21jYXQuaCwgaW5jbHVkZS9kb2NvYmouaCwgaW5jbHVkZS9tYXBpY29kZS5oLAoJICBpbmNsdWRlL21hcGlkZWZzLmgsIGluY2x1ZGUvbWVkaWFvYmouaCwgaW5jbHVkZS9vYWlkbC5oLAoJICBpbmNsdWRlL29jaWRsLmgsIGluY2x1ZGUvb2xlMi5oLCBpbmNsdWRlL29sZWlkbC5oLAoJICBpbmNsdWRlL3NlcnZwcm92LmgsIGluY2x1ZGUvdXJsbW9uLmgsIGluY2x1ZGUvd2luZ2RpLmgsCgkgIGluY2x1ZGUvd2lubmxzLmgsIGluY2x1ZGUvd2ludXNlci5oLCBvbGUvZHg4Z3VpZC5jLCBvbGUvZHhndWlkLmMsCgkgIG9sZS91dWlkLmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRWxpbWluYXRlIGxvdHMgb2YgX19XSU5FX18gY29uZGl0aW9uYWxzIGZyb20gdGhlIGhlYWRlcnMuCgoJKiBkbGxzL2RkcmF3L2QzZF9wcml2YXRlLmgsIGRsbHMvZGRyYXcvZDNkY29tbW9uLmMsCgkgIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywgZGxscy9kZHJhdy9kM2R2ZXJ0ZXhidWZmZXIuYywKCSAgZGxscy9kZHJhdy9kaXJlY3QzZC9tYWluLmMsIGRsbHMvZGRyYXcvZGlyZWN0M2QvbWVzYS5jLAoJICBkbGxzL2RkcmF3L21lc2EuYywgZGxscy9kZHJhdy9tZXNhX3ByaXZhdGUuaCwgaW5jbHVkZS9kM2QuaDoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIHNvbWUgYWRkaXRpb25uYWwgZmxhZ3MgbG9nZ2VkCgktIGZpeGVzIGluIHRoZSB2ZXJ0ZXggYnVmZmVyIHRodW5raW5nICsgb3B0aW1pemVkIGZsYWcgc3VwcG9ydAoKCSogZGxscy91c2VyL3Rlc3RzL3dpbi5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVdpbjl4IGRvZXMgbm90IHN1cHBvcnQge0dldCxTZXR9V2luZG93TG9uZ1cuIFVzZSB0aGUgQW5zaSB2ZXJzaW9uCglpbnN0ZWFkIHNpbmNlIGl0IHdvbid0IGltcGFjdCBfdGhlc2VfIHRlc3RzIGFueXdheS4KCgkqIGRsbHMvbnRkbGwvZGVidWd0b29scy5jLCBpbmNsdWRlL3dpbmUvZGVidWcuaCwKCSAgaW5jbHVkZS93aW5lL2xpYnJhcnkuaCwgbGlicmFyeS9kZWJ1Zy5jOgoJQWRkZWQgd2luZV9kYmdfc3ByaW50ZiBmdW5jdGlvbiB0aGF0IGFsbG9jYXRlcyBhIHRlbXBvcmFyeSBidWZmZXIgaW4KCXRoZSBwZXItdGhyZWFkIHN0cmluZ3MgYXJlYS4KCUFkZGVkIGlubGluZSBmdW5jdGlvbnMgdG8gZm9ybWF0IFBPSU5ULCBTSVpFIGFuZCBSRUNUIHN0cnVjdHVyZXMuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYywgaW5jbHVkZS9zaGxvYmouaDoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglTSEdldE1hbGxvYygpIHJldHVybnMgYSBIUkVTVUxULCBub3QgYSBEV09SRC4KCgkqIGluY2x1ZGUvbXN2Y3J0L3N0ZGxpYi5oOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRGVmaW5lIE5VTEwgaWYgaXQncyBub3QgZGVmaW5lZCBhbHJlYWR5LgoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYzogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUNoZWNrIHRoZSB2YWx1ZSBvZiB0aGUgcGZuQ2FsbGJhY2sgaW4gYWRkaXRpb24gdG8gdGhlIGNhbGxiYWNrIGJpdC4KCgkqIHRvb2xzL3dpbmV3cmFwLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglTdXBwb3J0IG91dHB1dGluZyBmaWxlcyB0byBhIGRpZmZlcmVudCBkaXJlY3RvcnkgdGhhbiBwd2QuCglTbWFsbCBjbGVhbnVwcy4KCgkqIHRvb2xzL3dpbmFwaS93aW5hcGlfY2xlYW51cCwgdG9vbHMvd2luYXBpL3dpbmFwaV9jbGVhbnVwX29wdGlvbnMucG0sCgkgIHRvb2xzL3dpbmFwaV9jaGVjay9uYXRpdmVhcGkucG06CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUFkZGVkIC0taW5jbHVkZS1xdW90ZXMgb3B0aW9uIHRoYXQgZml4ZXMgI2luY2x1ZGUgdG8gdXNlIHRoZSBjb3JyZWN0CglvZiA8PiBhbmQgIiIuCgoJKiBkbGxzL3dpbnNwb29sL2luZm8uYzogU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtTGluZS5jb20+CglNb3ZlZCBpbXBsZW1lbnRhdGlvbiBvZiBHZXRQcmludGVyRHJpdmVyRGlyZWN0b3J5IGZyb20gYXNjaWkgdG8gdW5pY29kZS4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQGFsdW0ud3BpLmVkdT4KCUxpc3R2aWV3IHNob3VsZCBzY3JvbGwgYnkgYXQgbGVhc3Qgb25lIGNvbHVtbiwgZml4ZXMgYnVnIHdoZXJlIGl0ZW0KCWJlaW5nIHdpZGVyIHRoYW4gbGlzdHZpZXcgcHJldmVudHMgYW55IHNjcm9sbGluZyBmcm9tIG9jY3VyaW5nLiAgQWRkZWQKCXByaW50aW5nIG9mIHRoZSBzY3JvbGwgY29kZSB0ZXh0IGR1cmluZyB0cmFjaW5nIG9mIHNjcm9sbCBmdW5jdGlvbnMuCgoJKiBkbGxzL3NoZWxsMzIvc2hsZXhlYy5jOiBEYW4gS2VnZWwgPGRhbmtAa2VnZWwuY29tPgoJU2hlbGxFeGVjdXRlKE5VTEwsICJ3b3JkcGFkLmV4ZSIsKSBub3cgY29ycmVjdGx5IGZpbmRzIHdvcmRwYWQuZXhlIGluCglBcHAgUGF0aHMuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjOgoJRG9taW5payBTdHJhc3NlciA8RG9taW5pay5TdHJhc3NlckB0LW9ubGluZS5kZT4KCUltcGxlbWVudCBWZXJTZXRDb25kaXRpb25NYXNrIGJ5IGZvcndhcmRpbmcgdG8gbnRkbGwuCgoJKiBkbGxzL250ZGxsL3Rlc3RzL3J0bHN0ci5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUNhbGwgbHN0cmNtcFcgcmF0aGVyIHRoYW4gd2NzY21wLgoKMjAwMy0wMS0wMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzIuc3BlYywgZGxscy9vbGVhdXQzMi9zYWZlYXJyYXkuYywKCSAgZGxscy9vbGVhdXQzMi90ZXN0cy9NYWtlZmlsZS5pbiwgZGxscy9vbGVhdXQzMi90ZXN0cy9zYWZlYXJyYXkuYywKCSAgaW5jbHVkZS9vbGVhdXRvLmgsIGluY2x1ZGUvd2luZS9vYmpfb2xlYXV0Lmg6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUltcGxlbWVudGVkIFNhZmVBcnJheXtTZXRJSUQsR2V0SUlELFNldFJlY29yZEluZm8sR2V0UmVjb3JkSW5mb30uCglBZGRlZCBzdXBwb3J0IGZvciBGQURGX0hBVkVJSUQsIEZBREZfUkVDT1JELCBGQURGX0hBVkVWQVJUWVBFLgoJSW1wbGVtZW50ZWQgU2FmZUFycmF5QWxsb2NEZXNjcmlwdG9yRXggYW5kIFNhZmVBcnJheUdldFZhclR5cGUKCWNvcnJlY3RseS4KCUZpeGVkIHNlY29uZCBhcmd1bWVudCBvZiBTYWZlQXJyYXlDb3B5RGF0YSAoaXQgaXMganVzdCBTQUZFQVJSQVkqKS4KCUNoYW5nZWQgYWxsb2NhdGlvbiB0byBpbmNsdWRlIDE2IGJ5dGVzIGJlZm9yZSB0aGUgU0FGRUFSUkFZICh0byBzdG9yZQoJSUlEL1ZBUlRZUEUvSVJlY29yZEluZm8qKS4KCVZBUlRZUEUgLT4gc2l6ZSBhcnJheSB3YXMgbm90IGluZGV4ZWQgY29ycmVjdGx5LgoJQWRkZWQgbG90cyBvZiB0ZXN0Y2FzZXMgZm9yIG1vc3QgZnVuY3Rpb25hbGl0eS4KCUFkZGVkIElSZWNvcmRJbmZvIGludGVyZmFjZSBkZWZpbml0aW9uLgoKCSogZGxscy9vbGVhdXQzMi92YXJpYW50LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSGFuZGxlIFZUX0VSUk9SLT5WVF9JNC9WVF9SNCBjb2VyY2lvbi4KCVZhcmlhbnRDb3B5IGRvZXMgbm90IG5lZWQgdG8gY2hlY2sgdGhlIHJldHVybiBvZiBWYXJpYW50Q2xlYXIuCglWYXJpYW50Q29weUluZCBub3cgY29waWVzIFZUX1VOS05PV04gYW5kIFZUX0RJU1BBVENIIHRvby4KCVZhckNtcCBoYW5kbGVzIFZUX0JPT0wuCglWYXJGb3JtYXQgaGFuZGxlcyBWVF9CU1RSLgoJY29lcmNlX2FycmF5IGZpeGVkIGZvciBWVF9BUlJBWXxWVF9VSTEgLT4gVlRfQlNUUiBhbmQgVlRfQVJSQVl8eCAtPgoJVlRfU0FGRUFSUkFZIGNhc2VzLgoJVmFyQ2F0IHRyaWVzIHRvIGNvZXJjZSB0eXBlcyBpbnRvIFZUX0JTVFIgdG8gZG8gY2F0LgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliLmMsIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5oOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglQcm9jZXNzIFRLSU5EX0FMSUFTIGluIFNMVEcgdHlwZWxpYnMsIDB4MTQgaW4gdGhlIHRhaWwgaXMgdGhlCgl0ZGVzY0FsaWFzLnZ0IGVudHJ5LgoJQWRkZWQgYSBzbWFsbCBoYW5kbGVyIGZvciBUS0lORF9ESVNQQVRDSCBpbiBTTFRHLgoJSVR5cGVMaWJfUmVsZWFzZSBjYW4gaGF2ZSBhIE5VTEwgcG9pbnRlciBhcyBJVHlwZUluZm8qLgoJU3BsaXQgb3V0IF9jb3B5X2FyZyBmdW5jdGlvbiBmb3IgYm90aCBEaXNwQ2FsbCBhbmQgSVR5cGVJbmZvX2ZuSW52b2tlLAoJYWRkZWQgc29tZSBtb3JlIGZ1bmN0aW9uYWxpdHkuCglJVHlwZUluZm9fZm5JbnZva2UgY2FuIGhhbmRsZSBWVF9VU0VSREVGSU5FRCB2YXJpYW50cy4KCgkqIGRsbHMvZHNvdW5kL3Rlc3RzL2Rzb3VuZC5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQWRkIHRoZSBhYmlsaXR5IG9mIHBsYXlpbmcgYSB0ZXN0IHRvbmUgd2hlbiBpbiBpbnRlcmFjdGl2ZSBtb2RlLgoJVGVzdCBib3RoIHByaW1hcnkgYW5kIHNlY29uZGFyeSBidWZmZXJzLgoKCSogZGxscy93aW5pbmV0L2ludGVybmV0LmM6IEFsYmVydG8gTWFzc2FyaSA8YWxieUBleGxuLmNvbT4KCS0gSW1wbGVtZW50ZWQgSW50ZXJuZXRDcmFja1VybFcgYW5kIHJlLWltcGxlbWVudGVkIEludGVybmV0Q3JhY2tVcmxBCgkgIGJ5IHVzaW5nIHRoZSBVbmljb2RlIHZlcnNpb24uCgktIEludGVybmV0Q3JhY2tVcmxXIG5vdyBwYXJzZXMgVVJMIGhhdmluZyB0aGUgImFib3V0IiBhbmQgInJlcyIKCSAgc2NoZW1lcy4KCgkqIHRvb2xzL3dpbmVnY2MuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUFkZGVkIEMrKyBzdXBwb3J0ICYgc21hbGwgY2xlYW51cHMuCgoJKiB0b29scy93aW5ld3JhcC5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJU3VwcG9ydCBDKysgbGlua2luZyB3aXRoIGEgbmV3IC1DIHN3aXRjaC4KCU1vZGlmeSB0aGUgYXBwIGxhdW5jaGVyIHRvIHBhc3MgYWxsIG9wdGlvbnMgYnV0IC0tZGVidWdtc2cgYW5kIC0tZGxsCgl0byB0aGUgYXBwLgoJTGluayB0aGUgd3JhcHBlciBhZ2FpbnN0IGFsbCBvZiB0aGUgYXBwJ3MgbGlicy4KCURyb3Agc3VwcG9ydCBmb3IgcGFzc2luZyB0aGUgZGxsIG5hbWVzIHRvIHRoZSBsYXVuY2hlci4KCgkqIGRsbHMvZGRyYXcvZHN1cmZhY2UvZGliLmM6IExpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglGaXggZm9yIHN0dXBpZCBhcHBsaWNhdGlvbnMgcmVhZGluZyBzb21lIGJ5dGVzIGFmdGVyIHRoZSBlbmQgb2YgdGhlCglzdXJmYWNlIG1lbW9yeS4KCgkqIGRsbHMvZGRyYXcvbWVzYS5jLCBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsCgkgIGRsbHMvZGRyYXcvZGlyZWN0M2QvbWVzYS5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gYWRkZWQgZW51bWVyYXRpb24gb2YgdGhlIFJlZmVyZW5jZSBkZXZpY2UgKHNvbWUgZ2FtZXMgc2VlbXMgdG8gbmVlZAoJICBpdCB0byB3b3JrIGFuZCB0aGV5IHdhbnQgaXQgZW51bWVyYXRlZCBmaXJzdC4uKQoJLSBzb21lIGNvbW1lbnRzIGFib3V0IHBvdGVudGlhbCBwcm9ibGVtcyB3aXRoIFogbWFza2luZwoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLCBkbGxzL2RkcmF3L21lc2FfcHJpdmF0ZS5oOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUFkZGVkIHN1cHBvcnQgZm9yIHBlci12ZXJ0ZXggbWF0ZXJpYWwgcHJvcGVydGllcy4KCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21haW4uYywgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWFpbi5oLAoJICBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmM6CglDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglSZWltcGxlbWVudGVkIFN3YXBUZXh0dXJlSGFuZGxlcy4KCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywgZGxscy9kZHJhdy9kM2RtYXRlcmlhbC5jLAoJICBkbGxzL2RkcmF3L2QzZHZlcnRleGJ1ZmZlci5jLCBkbGxzL2RkcmF3L21lc2EuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIHJlbW92ZWQgc29tZSB1c2VsZXNzIFdBUk5zCgktIGZpeGVkIGJhY2tmYWNlIGN1bGxpbmcgYW5kIG1hdGVyaWFsIHNldHRpbmdzCgoJKiBkbGxzL2RkcmF3L2QzZHZlcnRleGJ1ZmZlci5jLCBkbGxzL2RkcmF3L2QzZHZpZXdwb3J0LmM6CglDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglGaXggSURpcmVjdDNEVmVydGV4QnVmZmVyIGludGVyZmFjZS4KCUltcGxlbWVudHMgR2V0VmVydGV4QnVmZmVyRGVzYy4KCVJlbW92ZSBzb21lIHVzZWxlc3MgRklYTUUuCgoJKiBkbGxzL2RkcmF3L2QzZF9wcml2YXRlLmgsIGRsbHMvZGRyYXcvZDNkY29tbW9uLmMsCgkgIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21haW4uYywgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLAoJICBkbGxzL2RkcmF3L2RkcmF3L21haW4uYywgZGxscy9kZHJhdy9tZXNhLmMsCgkgIGRsbHMvZGRyYXcvbWVzYV9wcml2YXRlLmg6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSBiZWdpbm5pbmcgb2YgTWF0ZXJpYWwgYW5kIExpZ2h0IHN1cHBvcnQgZm9yIEQzRDcKCS0gbmV3IHJlbmRlcmluZyBzdGF0ZXMgc3VwcG9ydGVkCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmM6IExpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglGaXhlZCB0ZXh0dXJpbmcuCgoJKiBkbGxzL2RkcmF3L2QzZGV4ZWN1dGVidWZmZXIuYywgZGxscy9kZHJhdy9kM2R0ZXh0dXJlLmMsCgkgIGRsbHMvZGRyYXcvZHN1cmZhY2UvbWFpbi5jLCBkbGxzL2RkcmF3L21lc2FfcHJpdmF0ZS5oOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gYWxsb3cgYXBwbGljYXRpb24gdG8gbG9hZCBwYWxldHRlLWxlc3MgdGV4dHVyZXMKCS0gaGFuZGxlIHBhbGV0dGUgY2hhbmdlIG9mIGxvYWRlZCB0ZXh0dXJlcwoJLSBzb21lIGNoYW5nZXMgaW4gdGhlIEV4ZWN1dGVCdWZmZXIKCgkqIGRsbHMvZGRyYXcvZDNkX3ByaXZhdGUuaCwgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLAoJICBkbGxzL2RkcmF3L2QzZGV4ZWN1dGVidWZmZXIuYywgZGxscy9kZHJhdy9kM2R0ZXh0dXJlLmMsCgkgIGRsbHMvZGRyYXcvZGlyZWN0M2QvbWVzYS5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL2Zha2V6YnVmZmVyLmMsCgkgIGRsbHMvZGRyYXcvbWVzYV9wcml2YXRlLmg6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSBhZGRlZCBzb21lIHRyYWNpbmcgaW4gdGhlIGZha2UgWkJ1ZmZlciBtZXRob2RzCgktIGFkZGVkIHN1cHBvcnQgZm9yIHRoZSBERVBUSF9GSUxMIEJMVAoJLSBzZXQgYnkgZGVmYXV0IHBlcnNwZWN0aXZlIGNvcnJlY3Rpb24gdG8gbmljZXN0LgoJLSBkZWNyZWFzZSB0aGUgbGltaXQgd2hlcmUgJ3cnIGlzIGlnbm9yZWQKCgkqIGRsbHMvZGRyYXcvbWVzYS5jOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJQWRkZWQgc29tZSBibGVuZCBzdGF0ZXMuCgoJKiBkbGxzL2RkcmF3L21lc2EuYzogQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJSGFuZGxlIG1vcmUgYmxlbmQgc3RhdGVzLgoKCSogZGxscy9kZHJhdy9kM2R2ZXJ0ZXhidWZmZXIuYzogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCVByZXZlbnQgbWVtb3J5IGxlYWsgaW4gZnJlZWluZyBvZiB0aGUgVmVydGV4QnVmZmVyLgoKCSogZGxscy9kZHJhdy9kM2RfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L2QzZGRldmljZS9tYWluLmMsCgkgIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywgZGxscy9kZHJhdy9kM2RleGVjdXRlYnVmZmVyLmMsCgkgIGRsbHMvZGRyYXcvbWVzYV9wcml2YXRlLmg6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJSW1wbGVtZW50IEdldFRyYW5zZm9ybSBhbmQgcmV3b3JrIGEgYml0IHRoZSBtYXRyaWNlcyBzdG9yYWdlLgoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWFpbi5jLCBkbGxzL2RkcmF3L2QzZGRldmljZS9tYWluLmgsCgkgIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIGltcGxlbWVudGVkIEdldFRleHR1cmUKCS0gc2VtaS1zdHViYmVkIFZhbGlkYXRlVGV4dHVyZQoJLSBmaXhlZCBzb21lIGVycm9ycyBpbiBsb2dnaW5nCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsIGRsbHMvZGRyYXcvZDNkdGV4dHVyZS5jLAoJICBkbGxzL2RkcmF3L2RkcmF3X3ByaXZhdGUuaCwgZGxscy9kZHJhdy9kc3VyZmFjZS9kaWIuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglBZGRlZCAnYmx0JyBhbmQgJ2JsdGZhc3QnIG92ZXJyaWRlIGZ1bmN0aW9ucy4KCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21haW4uYywgZGxscy9kZHJhdy9kM2R2ZXJ0ZXhidWZmZXIuYywKCSAgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWFpbi5oLCBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJQWRkZWQgJ2VtdWxhdGVkJyBWZXJ0ZXhCdWZmZXIgc3VwcG9ydC4KCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywgZGxscy9kZHJhdy9kM2R0ZXh0dXJlLmMsCgkgIGRsbHMvZGRyYXcvaGVscGVyLmMsIGRsbHMvZGRyYXcvbWVzYS5jLCBkbGxzL2RkcmF3L21lc2FfcHJpdmF0ZS5oOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gZG8gbm90IHVzZSB0aGUgYWxwaGEgY29vcmRpbmF0ZXMgd2hlbiBBTFBIQUJMRU5EIGlzIGRpc2FibGVkCgktIGRpc2FibGUgZm9nZ2luZyBpbiB0aGUgWFlaUkhXIGNhc2UKCS0gdmFyaW91cyBvdGhlciBzbWFsbCBmaXhlcwoKCSogZGxscy9kZHJhdy9kM2R0ZXh0dXJlLmM6IExpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglGYWN0b3JpemUgc29tZSBjb2RlIGluIHRoZSB0ZXh0dXJlIHVwbG9hZGluZyBmdW5jdGlvbi4KCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYzogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUhhbmRsZSB0ZXh0dXJlIGFkZHJlc3NpbmcgdGhlIEQzRDcgd2F5LgoKCSogZGxscy9kZHJhdy9kM2R0ZXh0dXJlLmM6IExpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglQcmV2ZW50IGxvY2stdXAgaW4gcGFsZXR0ZWQgdGV4dHVyZSB3aXRoIG5vIHBhbGV0dGUgY2FzZS4KCgkqIGRsbHMvZGRyYXcvZDNkX3ByaXZhdGUuaCwgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLAoJICBkbGxzL2RkcmF3L2QzZHRleHR1cmUuYywgZGxscy9kZHJhdy9kZHJhdy9tYWluLmMsCgkgIGRsbHMvZGRyYXcvZGRyYXdfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L2RpcmVjdDNkL21lc2EuYywKCSAgZGxscy9kZHJhdy9kc3VyZmFjZS9tYWluLmMsIGRsbHMvZGRyYXcvbWVzYV9wcml2YXRlLmg6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJRW5hYmxlIHRoZSBhcHBsaWNhdGlvbiB0byBjcmVhdGUgZmlyc3QgdGV4dHVyZXMgYW5kIHRoZW4gdGhlIEQzRAoJZGV2aWNlLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvY3RsM2QvLmN2c2lnbm9yZSwKCSAgZGxscy9jdGwzZC9NYWtlZmlsZS5pbiwgZGxscy9jdGwzZC9jdGwzZC5jLCBkbGxzL2N0bDNkL2N0bDNkLnNwZWMsCgkgIGRsbHMvY3RsM2QvY3RsM2QzMi5jLCBkbGxzL2N0bDNkL2N0bDNkMzIuc3BlYywKCSAgZGxscy9jdGwzZC9jdGwzZHYyLnNwZWMsIGRsbHMvdXNlci91c2VyMzIuc3BlYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBiYWlrYWwucnU+CglBZGRlZCBjdGwzZCwgY3RsM2R2MiBhbmQgY3RsM2QzMiBBUEkgaW1wbGVtZW50YXRpb25zLgoKCSogdG9vbHMvd2luZWJ1aWxkL3dpbmVidWlsZC5tYW4uaW4sIHRvb2xzL3dyYy93cmMubWFuOgoJVXBkYXRlZCBmb3IgcmVjZW50IG9wdGlvbnMgY2hhbmdlcy4KCgkqIGRsbHMvY3J0ZGxsL2NydGRsbF9tYWluLmMsIGRsbHMvZDNkOC9zaGFkZXIuYywKCSAgZGxscy9kM2R4OC9kM2R4OF9tYWluLmMsIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjLAoJICBkbGxzL3dpbm1tL3dpbmVqYWNrL2F1ZGlvLmMsIGluY2x1ZGUvZDNkeDhjb3JlLmg6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgaXNzdWVzIGZvdW5kIGJ5IHdpbmFwaV9jaGVjay4KCgkqIHRvb2xzL3dpbmVtYWtlcjogSmVmZiBTbWl0aCA8d2h5ZG91YnRAaG90bWFpbC5jb20+CglTZXZlcmFsIGltcHJvdmVtZW50cyBhbmQgY29ycmVjdGlvbnMsIGZvcmVtb3N0IGJlaW5nIGNvcnJlY3Rpbmcgd3JjCglmbGFncyBhbmQgc2hhcmVkIG9iamVjdCBmaWxlIG5hbWluZy4KCgkqIHRvb2xzL3dpbmFwaS93aW4xNi5hcGksIHRvb2xzL3dpbmFwaS93aW4zMi5hcGksCgkgIHRvb2xzL3dpbmFwaS93aW5hcGkucG0sIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLmRhdCwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9jaGVjaywgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9sb2NhbC5wbToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBBUEkgZmlsZXMgdXBkYXRlLgoJLSBNaW5vciBpbXByb3ZlbWVudCBhbmQgYnVnIGZpeGVzLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jLCBpbmNsdWRlL3dpbmUvdW5pY29kZS5oOgoJQWxiZXJ0byBNYXNzYXJpIDxhbGJ5QGV4bG4uY29tPgoJTW92ZWQgaW1wbGVtZW50YXRpb24gb2Ygc3RycGJya1cgZnJvbSBmaWxlZGxnOTUuYyB0byB3aW5lL3VuaWNvZGUuaC4KCgkqIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGZpbGVzL2ZpbGUuYzoKCUFsYmVydG8gTWFzc2FyaSA8YWxieUBleGxuLmNvbT4KCUFkZCBzdHViIGltcGxlbWVudGF0aW9uIGZvciBSZXBsYWNlRmlsZS4KCgkqIHRvb2xzL3dpbmV3cmFwLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglBZGQgc3VwcG9ydCBmb3Igd3JhcHBlciBnZW5lcmF0aW9uIHRvIHdpbmV3cmFwLgoJUXVpdGUgYSBmZXcgbWljcm8gY2xlYW51cHMsIGNvZGUgc2hvdWxkIGJlIHNpbXBsZXIgdG8gZm9sbG93LgoKCSogdG9vbHMvd2luZWdjYy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQ29tcGlsZSB3aXRoIFdJTkVfVU5JQ09ERV9OQVRJVkUgZGVmaW5lZCwgZXNzZW50aWFsIGZvciBDKysuCglOZXcgLVYgb3B0aW9uIHRvIGRpc3BsYXkgdGhlIHZlcnNpb24uCglEbyBub3QgbGluayAtbGMsIHNjcmV3cyB1cCBsaW5raW5nLCBqdXN0IGdldCB0aGUgZGVmYXVsdC4KCgkqIGRsbHMva2VybmVsL3dpbmRlYnVnLmMsIGRsbHMvd2luZWRvcy9pbnQxNi5jLCBkbGxzL3dpbmVkb3MvaW50MmYuYywKCSAgZGxscy93aW5lZG9zL21vZHVsZS5jLCBkbGxzL3dpbmVkb3MveG1zLmMsIG1lbW9yeS9nbG9iYWwuYywKCSAgdG9vbHMvZm50MmJkZi5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglSZW1vdmVkIHVudXNlZCAjaW5jbHVkZSBvZiBtb2R1bGUuaC4KCgkqIGRsbHMvZDNkOC9kM2Q4LnNwZWMsIGRsbHMvZDNkOC9kM2Q4X3ByaXZhdGUuaCwgZGxscy9kM2Q4L2RldmljZS5jLAoJICBkbGxzL2QzZDgvZGlyZWN0eC5jLCBkbGxzL2QzZDgvc2hhZGVyLmMsIGluY2x1ZGUvZDNkOC5oLAoJICBpbmNsdWRlL2QzZDh0eXBlcy5oOgoJUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CgktIGludGVncmF0aW9uIHdpdGggRHJhd1ByaW1pdGl2ZQoJLSByZW1vdmUgbm9uLWVzdGhldGljIGMrKyBjb21tZW50cyBpbnRvIGMgY29tbWVudHMgYmxvY2sgOykKCS0gbW9yZSBtb3JlIGRlYnVnCgktIGluZGVudCwgY2xlYW51cHMKCS0gdHJ5aW5nIHRvIHVzZSBESUZGVVNFIGFuZCBTUEVDVUxBUiBmb3IgdmVydGV4IHNoYWRlcgoJLSBtYW55IGZpeGVzCgktIGludGVncmF0aW9uIHdpdGggSmFzb24ncyB0ZXh0dXJlIHBhdGNoCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsIGRsbHMvZGRyYXcvbWVzYV9wcml2YXRlLmg6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJU29tZSBjbGVhbi11cHMgYWZ0ZXIgdGhlIERyYXdQcmltaXRpdmUgcmV3cml0ZS4KCgkqIGRsbHMvZGRyYXcvZGRyYXcvbWFpbi5jOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJRml4IGNyYXNoIGluIEdldEF2YWlsYWJsZVZpZE1lbSBmdW5jdGlvbiB3aGVuIFRSQUNFIGlzIGFjdGl2YXRlZC4KCgkqIGRsbHMvd2lubW0vbG9sdmxkcnYuYywgZGxscy93aW5tbS9tZXNzYWdlMTYuYywgZGxscy93aW5tbS93aW5lbW0uaDoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJV2hlbiB1bm1hcHBpbmcgYSAod2F2ZXxtaWRpKS1oZWFkZXIgdW5wcmVwYXJlIG1lc3NhZ2UsIG1ha2Ugc3VyZSB0aGUKCXVucHJlcGFyYXRpb24gd2FzIHN1Y2Nlc3NmdWwuCgoJKiBkbGxzL21zdmlkZW8vZHJhd2RpYi5jOiBFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIHNvbWUgbmFzdHkgYnVncyBpbiBkcmF3ZGliIGNyZWF0aW9uL2RlbGV0aW9uLgoKCSogZGxscy9kZXZlbnVtL2RldmVudW0uc3BlYywgZGxscy9kZXZlbnVtL2RldmVudW1fbWFpbi5jLAoJICBkbGxzL3FjYXAvcWNhcC5zcGVjLCBkbGxzL3FjYXAvcWNhcF9tYWluLmMsIGRsbHMvcXVhcnR6L21haW4uYywKCSAgZGxscy9xdWFydHovcXVhcnR6LnNwZWM6CglEb21pbmlrIFN0cmFzc2VyIDxEb21pbmlrLlN0cmFzc2VyQHQtb25saW5lLmRlPgoJU29tZSBzdHVicyBmb3IgZGxsIHNldHVwIG5lZWRlZCBieSBJRTYgc2V0dXAuCgoJKiBkbGxzL29sZWF1dDMyL29sZWF1dC5jLCBkbGxzL29sZWF1dDMyL29sZXBpY3R1cmUuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJU3VwcG9ydCBEbGxHZXRDbGFzc09iamVjdCBvZiBDTFNJRF9TdGRQaWN0dXJlLgoJUElDVFlQRV9OT05FIGhhcyB3aWR0aC9oZWlnaHQgMC4KCgkqIGRsbHMvY29tY3RsMzIvYW5pbWF0ZS5jOiBSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglMZXQgQU5JTUFURV9PcGVuQSByZXR1cm4gRkFMU0UgKD0gZmFpbHVyZSkgdXBvbiBhIHJlcXVlc3QgdG8gY2xvc2UgYQoJcHJldmlvdXNseSBvcGVuZWQgQVZJIGNsaXAgd2hlbiB0aGVyZSBpc24ndCBvbmUuCgoJKiB0b29scy9idWdfcmVwb3J0LnBsOiBBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CglJbmNyZW1lbnQgbG9nIG91dHB1dCBmcm9tIDIwMCBsaW5lcyB0byAzMDAwIGxpbmVzLgoJQWRkZWQgV2luIFhQIGFzIGEgbGlzdGVkIFdpbmRvd3MgdmVyc2lvbi4KCgkqIGRsbHMvY2FiaW5ldC9jYWJleHRyYWN0LmM6IEdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJRml4IG9mZl90IGNhc3QgdGhhdCBicmVha3MgRnJlZUJTRC4KCgkqIGRsbHMvd2lubW0vdGVzdHMvd2F2ZS5jLCBpbmNsdWRlL3dpbmUvdGVzdC5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBzdXBwb3J0IGZvciBXSU5FVEVTVF9JTlRFUkFDVElWRS4gSWYgc2V0IHRoZW4gdGVzdHMgY2FuIHBlcmZvcm0KCWFkZGl0aW9uYWwgZXhwbGljaXRseSBpbnRlcmFjdGl2ZSB0ZXN0cy4KCU1vZGlmeSB0aGUgd2lubW0gdGVzdCB0byB1c2UgV0lORVRFU1RfSU5URVJBQ1RJVkUuCgoJKiBkbGxzL29sZTMyL2JpbmRjdHguYzogQWxiZXJ0byBNYXNzYXJpIDxhbGJ5QGV4bG4uY29tPgoJSUJpbmRDdHg6OlJlZ2lzdGVyT2JqZWN0UGFyYW0gaXMgc3VwcG9zZWQgdG8gcmVwbGFjZSB0aGUgb2xkIHZhbHVlIGlmCgl0aGUga2V5IGlzIGFscmVhZHkgcmVnaXN0ZXJlZC4KCgkqIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmMsIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0Lmg6CglEdWFuZSBDbGFyayA8ZGNsYXJrQGFrYW1haWwuY29tPgoJVmFsaWRhdGUgaW1hZ2VsaXN0cyB3aXRoIGNocmlzdG1hcyBtYWdpYy4KCgkqIGRsbHMvbnRkbGwvZXJyb3IuYywgZGxscy9udGRsbC90ZXN0cy9lcnJvci5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglGaXggbWFwcGluZyBvZiBTVEFUVVNfREVWSUNFX05PVF9DT05ORUNURUQgdG8gbWF0Y2ggWFAuCglGaXhlZCB0aGUgcHJvdG90eXBlIG9mIHN0YXR1c3RvZG9zZXJyb3IgdG8gbWFrZSB0aGUgdGVzdCB3b3JrIG9uIE5UNC4KCUFkZGVkIGFsdGVybmF0ZSByZXR1cm4gdmFsdWVzIHRvIG1ha2UgdGhlIHRlc3Qgd29yayBvbiBXaW45OC4KCUNoZWNrIHdoZXRoZXIgUnRsTnRTdGF0dXNUb0Rvc0Vycm9yIGlzbWlzc2luZyB0byBtYWtlIHRoZSB0ZXN0IHdvcmsgb24KCVdpbjk1LgoJQWRkZWQgYSBzdHJpY3Qgb3B0aW9uIHRvIGNhdXNlIHRoZSB0ZXN0IHRvIG9ubHkgYWNjZXB0IHRoZSBzdGFuZGFyZAoJbWFwcGluZy4KCgkqIGRsbHMvb2xlYXV0MzIvdGVzdHMvdmFydGVzdC5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVJlbW92ZSB1bm5lY2Vzc2FyeSBzcHJpbnRmIGNhbGxzLgoKCSogdG9vbHMvd2luZWJ1aWxkL21haW4uYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUFkZCB0aGUgLUYgb3B0aW9uIHRvIHNldCBhIERMTCdzIGZpbGVuYW1lLgoKCSogcHJvZ3JhbXMvd2NtZC9kaXJlY3RvcnkuYywgcHJvZ3JhbXMvd2NtZC93Y21kbWFpbi5jOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQGFsdW0ud3BpLmVkdT4KCURlZmF1bHQgdG8gJFAkRyBwcm9tcHQuICBNYWtlIHdpZHRoIG9mIGRhdGUgMTAgY2hhcmFjdGVycyB0byBhbGlnbgoJZGF0ZSBjb2x1bW4gd2l0aCBEQVRFX1NIT1JUREFURSBmb3JtYXQuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9sb2NhbGUuYzogQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQGFsdW0ud3BpLmVkdT4KCVVzZSB0aGUgbG9jYWxlIGlkIHdlIGNyZWF0ZWQgaW5zdGVhZCBvZiB0aGUgc3lzdGVtIG9yIHVzZXIgZGVmYXVsdCwKCW90aGVyd2lzZSBzb21lIHRlc3RzIGFyZSBicm9rZW4gb24gc3lzdGVtcyB3aGVyZSB0aGluZ3MgYXJlbid0CgllbmdsaXNoL3VzLgoKCSogZGxscy9vbGVhdXQzMi90ZXN0cy9zYWZlYXJyYXkuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglGaXggc2lnbmVkL3Vuc2lnbmVkIHdhcm5pbmdzLgoKMjAwMi0xMi0yNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjOiBGaXhlZCBxdW90aW5nIGluIElOU1RBTEwgY2hlY2suCgoJKiBkbGxzL2RpbnB1dC9kaW5wdXRfbWFpbi5jLCBkbGxzL2RpbnB1dC9kaW5wdXRfcHJpdmF0ZS5oLAoJICBkbGxzL2RpbnB1dC9tb3VzZS9tYWluLmM6CglQYXNzIHRoZSBjb3JyZWN0IGluc3RhbmNlIHdoZW4gaW5zdGFsbGluZyB0aGUgbW91c2UgaG9vayAoc3BvdHRlZCBieQoJTGlvbmVsIFVsbWVyKS4KCgkqIGRsbHMvZGRyYXcvZDNkX3ByaXZhdGUuaCwgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLAoJICBkbGxzL2RkcmF3L2QzZHZpZXdwb3J0LmMsIGRsbHMvZGRyYXcvbWVzYV9wcml2YXRlLmg6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSBhY3R1YWxseSB1c2UgdGhlIGJhY2tncm91bmQgY29sb3Igd2hlbiBDbGVhci1pbmcKCS0gcmVwbGFjZSBnbE9ydGhvIGJ5IGEgaGFuZC1idWlsdCBtYXRyaXgKCS0gZml4IGFwcGxpY2F0aW9ucyBkb2luZyBTZXRUcmFuc2Zvcm0gKyB1c2luZyBYWVpSSFcgdmVydGljZXMKCgkqIGRsbHMvZGRyYXcvZDNkX3ByaXZhdGUuaCwgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWFpbi5jLAoJICBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsIGRsbHMvZGRyYXcvZDNkdmlld3BvcnQuYywKCSAgZGxscy9kZHJhdy9tZXNhLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSBmYWN0b3JpemUgQ2xlYXIgbWV0aG9kIGJldHdlZW4gVmlld3BvcnQgYW5kIERldmljZQoJLSBzb21lIG1vcmUgcmVuZGVyaW5nIHN0YXRlcyBoYW5kbGVkCgoJKiBkbGxzL2RkcmF3L2QzZF9wcml2YXRlLmgsIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21haW4uYywKCSAgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLCBkbGxzL2RkcmF3L21lc2EuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglTdXBwb3J0IHZpZXdwb3J0cyB0aGUgRDNENyB3YXkuCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmM6IExpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglBZGRlZCBzb21lIHN0ZW5jaWwgLyBEM0REZXZpY2U3IGNhcGFiaWxpdGllcy4KCgkqIERFVkVMT1BFUlMtSElOVFMsIFJFQURNRSwgZG9jdW1lbnRhdGlvbi9SRUFETUUuZnIsCgkgIGRvY3VtZW50YXRpb24vYnVncy5zZ21sLCBkb2N1bWVudGF0aW9uL2NvbmZpZ3VyaW5nLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vZmFxLnNnbWw6CglKZWZmIFNtaXRoIDx3aHlkb3VidEBob3RtYWlsLmNvbT4KCVVwZGF0ZWQgZGlyZWN0b3J5IGluZm8gaW4gREVWRUxPUEVSUy1ISU5UUywgYW5kIElSQyBpbmZvIGluIHNldmVyYWwKCWRvY3VtZW50cy4KCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21haW4uYywgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWFpbi5oLAoJICBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJQ29tYmluZSB0ZXh0dXJpbmcgZm9yIEQzRDMgYW5kIDcgYnkgdGh1bmtpbmcgMyB0byA3LgoKCSogZGxscy9vbGVhdXQzMi90ZXN0cy92YXJ0ZXN0LmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJTW92ZSB0aGUgdGVzdCBzdHJpbmdzIGludG8gdGhlaXIgb3duIGFycmF5IGFuZCBjb252ZXJ0IHRoZW0gdG8gdW5pY29kZQoJdXNpbmcgYSBmb3IgbG9vcC4gVGhpcyBsZXRzIHVzIGxhdGVyIHByaW50IHRoZSBvZmZlbmRpbmcgc3RyaW5nIHdoZW4gYQoJdGVzdCBmYWlscy4KCUZpeCB0aGUgTVNWQyBjb21waWxhdGlvbiBlcnJvciAoWFhYZTE4MykgYW5kIHdhcm5pbmdzIChwdXQgc3VmZml4ZXMgYXMKCWluIDBMICYgMS4wRiwgc2lnbmVkL3Vuc2lnbmVkIHdhcm5pbmdzLCBzLy0yMTQ3NDgzNjQ4LzB4ODAwMDAwMDBMLykuCglVbmNvbW1lbnQgdGhlIERhdGVGcm9tU3RyIHRlc3RzIGFuZCBmaWxsIGluIHRoZSB0b2RvIGZpZWxkcyB3aGVyZQoJYXBwcm9wcmlhdGUuCglEZWZpbmUgYW4gTkJfT0xFX1NUUklOR1MgbWFjcm8gYW5kIHVzZSBpdCB0byBtYWtlIHN1cmUgYWxsIHRoZSBhcnJheXMKCWhhdmUgdGhlIHJpZ2h0IG51bWJlciBvZiBmaWVsZHMuCglJbiB0aGUgKkZyb21TdHIgbG9vcHMsIGZpbGwgdGhlIHJldHVybiBmaWVsZCB3aXRoIGEgZHVtbXkgdmFsdWUgKDQyKQoJYmVmb3JlIGNhbGxpbmcgdGhlIGNvbnZlcnNpb24gZnVuY3Rpb24uIFRoaXMgd2F5IGEgdGVzdCBubyBsb25nZXIKCWRlcGVuZHMgb24gd2hldGhlciB0aGUgcHJldmlvdXMgdGVzdCBmYWlsZWQgb3Igbm90IQoJSWYgYSB0ZXN0IGlzIGV4cGVjdGVkIHRvIGZhaWwsIHRoZW4gcmV0dmFsIGlzIG1lYW5pbmdsZXNzIC0+IG9taXQgaXQKCWZyb20gdGhlIHJlc3VsdCBhcnJheXMuCglJZiBhIHRlc3QgYWN0dWFsbHkgZmFpbHMgb3Igd2FzIGV4cGVjdGVkIHRvIGZhaWwsIHRoZW4gdGhlcmUgaXMgbm8KCXBvaW50IGluIGNoZWNraW5nIHJldHZhbC4KCUltcHJvdmUgZXJyb3IgcmVwb3J0aW5nLgoJUGFzcyB0aGUgcHJpbnRmLXN0eWxlIGZvcm1hdCBkaXJlY3RseSB0byBvaywgcmVtb3ZlIHRoZSB1bm5lY2Vzc2FyeQoJc3ByaW50ZnMuCgoJKiBkbGxzL2RkcmF3L2QzZGNvbW1vbi5jOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJRHVtcCBuZXcgRDNENyByZW5kZXJpbmcgc3RhdGVzLgoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSBmYWN0b3JpemUgdGhlIEQzRDEvMiBkcmF3X3ByaW1pdGl2ZSBjb2RlIHdpdGggdGhlIG5ldyBzdHJpZGVkIGZ1bmN0aW9uCgktIHJld3JvdGUgYSBsaXR0bGUgYml0IHRoaXMgc3RyaWRlZCBmdW5jdGlvbiB0byBhbHdheXMgdXNlIHRoZSBzdGF0aWMKCSAgZnVuY3Rpb25zCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYzoKCU1ha2Ugc3VyZSBJTlNUQUxMIHBhdGggaXMgcmVsYXRpdmUgdG8gdGhlIHRvcCBkaXIgd2hlbiB1c2luZyB0aGUKCXNjcmlwdCBpbiB0b29scy8uCgoJKiBkbGxzL3dpbnNwb29sL2luZm8uYzoKCVRoZSBuYW1lIG9mIHRoZSBkcml2ZXIgc2hvdWxkIGJlIHRoZSAxNi1iaXQgb25lIGluIGNhc2UgdGhlIGFwcCB0cmllcwoJdG8gbG9hZCBpdC4KCgkqIGRsbHMvcnBjcnQ0L2Nwc2YuYywgZGxscy9ycGNydDQvcnBjX2JpbmRpbmcuYywKCSAgZGxscy9ycGNydDQvcnBjcnQ0X21haW4uYywgZGxscy9ycGNydDQvdGVzdHMvcnBjLmMsIGluY2x1ZGUvcnBjZGNlLmg6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRml4IGRlZmluaXRpb25zIGZvciBVdWlke1RvLEZyb219U3RyaW5nLCBScGNTdHJpbmdGcmVlLgoKCSogaW5jbHVkZS9jb21tY3RybC5oOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRml4IHRoZSBkZWZpbnRpb24gb2YgeyxMUH1OTV9UUkVFVklFV3tBLFd9LgoKCSogaW5jbHVkZS93aW5lcnJvci5oOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFkZCBhIGNvdXBsZSBtaXNzaW5nIG1hY3Jvcy4KCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21haW4uYzogQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJUmVtb3ZlIHVzZWxlc3MgRklYTUVzIHNpbmNlIHRoZXJlIGlzIG5vdGhpbmcgdG8gZG8gaW4gQmVnaW5TY2VuZSBhbmQKCUVuZFNjZW5lLgoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jOiBDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglVcGRhdGUgYW5kIGNsZWFuLXVwIGRyYXdfcHJpbWl0aXZlX3N0cmlkZWRfNy4KCU1ha2UgZHJhd19wcmltaXRpdmVfNyBiYXNlZCBvbiBkcmF3X3ByaW1pdGl2ZV9zdHJpZGVkXzcuCgoyMDAyLTEyLTIzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9kZHJhdy9kM2R0ZXh0dXJlLmMsIGRsbHMvZGRyYXcvZGRyYXcvbWFpbi5jLAoJICBkbGxzL2RkcmF3L2RzdXJmYWNlL2RpYi5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gZml4IG1pcG1hcCB0ZXh0dXJlIGNyZWF0aW9uCgktIHNvbWUgbG9nZ2luZyBpbXByb3ZlbWVudHMKCgkqIGRsbHMvZGRyYXcvZHN1cmZhY2UvbWFpbi5jLCBkbGxzL2RkcmF3L21lc2EuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIGZpeCBzbWFsbCBUUkFDRSBidWcgaW50cm9kdWNlZCBpbiBhIHByZXZpb3VzIHBhdGNoCgktIGFkZCBXUkFQVSAvIFdSQVBWIHdhcm5pbmcKCgkqIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvd2luZXBzLy5jdnNpZ25vcmUsIGRsbHMvd2luZXBzL01ha2VmaWxlLmluLAoJICBkbGxzL3dpbmVwcy93aW5lcHMxNi5kcnYuc3BlYywgZGxscy93aW5lcHMvd2luZXBzMTYuc3BlYzoKCXdpbmVwczE2LmRsbCBzaG91bGQgYmUgbmFtZWQgLmRydi4KCgkqIGRsbHMvd2lubW0vbG9sdmxkcnYuYywgZGxscy93aW5tbS9tZXNzYWdlMTYuYywKCSAgZGxscy93aW5tbS93aW5lb3NzL21peGVyLmMsIGRsbHMvd2lubW0vd2luZW9zcy93aW5lb3NzLmRydi5zcGVjLAoJICBkb2N1bWVudGF0aW9uL211bHRpbWVkaWEuc2dtbDoKCUplZmYgU21pdGggPHdoeWRvdWJ0QGhvdG1haWwuY29tPgoJQ29ycmVjdCBhbGwgaW5zdGFuY2VzIG9mIG1peE1lc3NhZ2UgdG8gbXhkTWVzc2FnZS4KCgkqIHRvb2xzL3dpbmV3cmFwLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglBZGQgc3VwcG9ydCBmb3IgbGlicmFyeSBwYXRoICgtTCkuCglBZGQgc3VwcG9ydCBmb3IgbGlua2luZyBhZ2FpbnN0IHN0YXRpYyBsaWJzLgoJSWdub3JlIC1XIGZvciBnY2MgY29tcGF0aWJpbGl0eS4KCgkqIGRsbHMvZGRyYXcvZHN1cmZhY2UvbWFpbi5jOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJSGF2ZSB0aGUgJ0xvY2snIHdhcm5pbmcgYSBiaXQgY2xlYXJlci4KCgkqIGRsbHMvZGRyYXcvZGRyYXcvbWFpbi5jOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJUmVwb3J0IHRoYXQgd2UgZG8gbm90IHN1cHBvcnQgY29tcHJlc3NlZCB0ZXh0dXJlIHlldC4KCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYzogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gZml4IHJldHVybmluZyBvZiBjYXBhYmlsaXRpZXMgaW4gRmluZERldmljZQoJLSBmaWxsIHByb3Blcmx5IHNvbWUgY2FwcyBhY2NvcmRpbmcgdG8gd2hhdCBPcGVuR0wgY2FuIGRvCgoJKiBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglWYXJpYW50Q2hhbmdlVHlwZUV4IGZvciBWVF9BUlJBWSB8IHR5cGUgc3R5bGUgdmFyaWFudHMuCgoJKiBkbGxzL29sZWF1dDMyL29sZWF1dDMyLnNwZWMsIGRsbHMvb2xlYXV0MzIvc2FmZWFycmF5LmMsCgkgIGRsbHMvb2xlYXV0MzIvdGVzdHMvLmN2c2lnbm9yZSwgZGxscy9vbGVhdXQzMi90ZXN0cy9NYWtlZmlsZS5pbiwKCSAgZGxscy9vbGVhdXQzMi90ZXN0cy9zYWZlYXJyYXkuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgVmFyQnN0ckNtcC9DYXQgLnNwZWMgZW50cmllcy4KCVN0YXJ0ZWQgcmVncmVzc2lvbiB0ZXN0IGZvciBTYWZlQXJyYXkgZnVuY3Rpb25zLgoJRml4ZWQgU2FmZUFycmF5QWxsb2NEZXNjcmlwdG9yIChjaGVjayBib3VuZHMsIHNldCBjRGltcykuCglGaXhlZCBWQVJUWVBFX1NJWkUgYXJyYXkgZW50cmllcyBzbyBpdCBtYXRjaGVzIG5hdGl2ZS4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRHVhbmUgQ2xhcmsgPGRjbGFya0Bha2FtYWlsLmNvbT4KCVJlcG9ydCBtb2RlIHBhZGRpbmcgdHdlYWtzLgoJRml4IHRvIExJU1RWSUVXX0dldFN1Ykl0ZW1SZWN0LgoKCSogZGxscy9vbGVhdXQzMi9kaXNwYXRjaC5jLCBkbGxzL29sZWNsaS9vbGVjbGlfbWFpbi5jLAoJICBkbGxzL29sZXN2ci9vbGVzdnJfbWFpbi5jLCBpbmNsdWRlL29sZS5oLCBpbmNsdWRlL3dpbmRvd3MuaDoKCUdldCByaWQgb2Ygb2xlLmguCgoJKiBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL29iamJhc2UuaCwgaW5jbHVkZS91bmtud24uaCwKCSAgaW5jbHVkZS91bmtud24uaWRsLCBpbmNsdWRlL3dpbmUvb2JqX2Jhc2UuaDoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJTWVyZ2UgdGhlIHJlc3Qgb2YgaW5jbHVkZS93aW5lL29ial9iYXNlLmggaW50byBpbmNsdWRlL29iamJhc2UuaC4KCgkqIGRsbHMvY29tY2F0L2NvbWNhdC5oLCBkbGxzL2NvbWNhdC9jb21jYXRfbWFpbi5jLAoJICBkbGxzL2NvbWNhdC9jb21jYXRfcHJpdmF0ZS5oLCBkbGxzL2NvbWNhdC9mYWN0b3J5LmMsCgkgIGRsbHMvY29tY2F0L2luZm9ybWF0aW9uLmMsIGRsbHMvY29tY2F0L21hbmFnZXIuYywKCSAgZGxscy9jb21jYXQvcmVnaXN0ZXIuYywgZGxscy9vbGUzMi9pZnMuaCwgZGxscy9zaGVsbDMyL2VudW1pZGxpc3QuYywKCSAgaW5jbHVkZS9jb21jYXQuaDoKCVJlbW92ZWQgc29tZSByZW1haW5pbmcgcmVmZXJlbmNlcyB0byB3aW5lL29ial9iYXNlLmguCgoJKiBmaWxlcy9kcml2ZS5jOiBVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglEUklWRV9Jbml0OiBVc2Ugc3RydG91bFcgdG8gaW5pdGlhbGl6ZSB0aGUgZHJpdmUgc2VyaWFsIG51bWJlci4KCgkqIHByb2dyYW1zL3dpbmVjb25zb2xlL2N1cnNlcy5jLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uX3ByaXZhdGUuaCwKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbnNvbGUuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgc2V2ZXJhbCBidWdzOgoJIC0gd3JvbmcgZHJhd2luZyBmb3IgY2hhcnMgb3V0c2lkZSB0aGUgMjAtN0YgcmFuZ2UKCSAtIGNvbnNvbGUgbW91c2UgZXZlbnQgZ2VuZXJhdGlvbgoJIC0gY29uc29sZSBBbHQtPyBjaGFyIGV2ZW50IGdlbmVyYXRpb24KCVByZWZpeCBmb3IgY3Vyc2VzIGZ1bmN0aW9ucyBpcyBub3cgV0NDVVJTRVNfIGluc3RlYWQgb2YgV0NDVVJTRV8uCgoJKiBkbGxzL2QzZDgvZDNkOF9wcml2YXRlLmgsIGRsbHMvZDNkOC9kZXZpY2UuYywgZGxscy9kM2Q4L2RpcmVjdHguYzoKCUphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglRdWVyeSBvcGVuZ2wgdG8gZW5zdXJlIGl0IHN1cHBvcnRzIG11bHRpdGV4dHVyZSwgYW5kIGhvbm91ciB0aGUgbnVtYmVyCglvZiBzdXBwb3J0ZWQgdGV4dHVyZSB1bml0cy4gRXNwZWNpYWxseSBpbXBvcnRhbnQgZm9yIE5WaWRpYSBkcml2ZXJzCgl3aGljaCBvbmx5IHN1cHBvcnQgMiB0ZXh0dXJlIHVuaXRzLgoKCSogZGxscy9kZHJhdy9kaXJlY3QzZC9tYWluLmM6IExpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglGaXggRGlyZWN0M0QyID0+IERpcmVjdDNEMyB0aHVuayBmb3IgRmluZERldmljZS4KCgkqIGluY2x1ZGUvZGlucHV0LmgsIGluY2x1ZGUvb2FpZGwuaDogT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglXaGVyZSBJQ09NIG1hY3JvcyBhcmUgbmVlZGVkLCBpbmNsdWRlIG9iamJhc2UuaC4KCgkqIGluY2x1ZGUvb2xlYXV0by5oOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQWRkZWQgbWlzc2luZyBHZXRBY3RpdmVPYmplY3QgZGVjbGFyYXRpb24uCgoJKiBpbmNsdWRlL3NobG9iai5oOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQWRkZWQgbWlzc2luZyBMUERST1BGSUxFUyBkZWZpbml0aW9uLgoKCSogaW5jbHVkZS93aW5nZGkuaDogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCURFVk1PREUgc3RydWN0dXJlIHVzZXMgc2hvcnQgbm90IFNIT1JUIGZvciBpdHMgZmllbGRzLgoKMjAwMi0xMi0xOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIEFOTk9VTkNFLCBDaGFuZ2VMb2csIFZFUlNJT04sIGNvbmZpZ3VyZTogUmVsZWFzZSAyMDAyMTIxOS4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KMjAwMi0xMi0xOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHRvb2xzL3dpbmVidWlsZC9pbXBvcnQuYzoKCURvbid0IGlnbm9yZSBzcHJpbnRmL3NzY2FuZiBpbXBvcnRzLCBzZW1hbnRpY3MgYXJlIG5vdCBleGFjdGx5IHRoZQoJc2FtZSBvbiBXaW5kb3dzLgoKCSogZGxscy9tc3ZjcnQvc2NhbmYuaCwgZGxscy9tc3ZjcnQvdGVzdHMvc2NhbmYuYzoKCUhhbmRsZSB1bmtub3duIGZvcm1hdCBjaGFycyBjb3JyZWN0bHkgKHNwb3R0ZWQgYnkgR3n2cmd5ICdOb2cnCglKZW5leSkgYW5kIGFkZGVkIHRlc3QgZm9yIGl0LgoJUmVtb3ZlZCB1bm5lZWRlZCBfTF8gbWFjcm8uCgoJKiBkb2N1bWVudGF0aW9uL3BhdGNoZXMuc2dtbDoKCVRvbnkgTGFtYnJlZ3RzIDx0b255X2xhbWJyZWd0c0B0ZWx1c3BsYW5ldC5uZXQ+CglNb3JlIGluZm9ybWF0aW9uIG9uIHN0eWxlIGFuZCBmb3JtYXQgb2YgcGF0Y2hlcy4KCgkqIE1ha2UucnVsZXMuaW4sIGxpYnJhcnkvTWFrZWZpbGUuaW4sIHVuaWNvZGUvTWFrZWZpbGUuaW46CglSZW1vdmVkIHVubmVjZXNzYXJ5IC0tYWRkLXN0ZGNhbGwtYWxpYXMgZmxhZy4KCgkqIHRvb2xzLy5jdnNpZ25vcmUsIHRvb2xzL01ha2VmaWxlLmluLCB0b29scy9taW5nd3JhcC5jLCB0b29scy93aW5lZ2NjLmM6CglSZW5hbWVkIG1pbmd3cmFwIHRvIHdpbmVnY2MuCglSZW1vdmVkIC1EV0lORV9ERUZJTkVfV0NIQVJfVC4KCgkqIHRvb2xzL3dwcC93cHAuYzogVGFwaW8gS2F1dHRvIDxlbGVrbmFkZXJAcGhuZXQuZmk+CglGaXggZm9yIG1pc3NpbmcgcHBkZWJ1ZyB2YXJpYWJsZS4KCgkqIGRsbHMvb2xlMzIvYmluZGN0eC5jLCBkbGxzL29sZTMyL2Z0bWFyc2hhbC5jLCBkbGxzL29sZTMyL2lmcy5jLAoJICBkbGxzL29sZTMyL21hcnNoYWwuYywgZGxscy9vbGUzMi9vbGUxNi5jLCBkbGxzL29sZTMyL29sZXByb3h5LmMsCgkgIGRsbHMvb2xlMzIvcnBjLmM6CglGaXhlZCBhIGZldyBwcm9ibGVtcyBjYXVzZWQgYnkgdGhlIG5ldyBvYmppZGwuaWRsLgoKCSogaW5jbHVkZS93aW5nZGkuaDogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUFkZGVkIG1pc3NpbmcgR2V0V2luTWV0YUZpbGVCaXRzKCkgZGVjbGFyYXRpb24uCgoJKiBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL29iamlkbC5oLCBpbmNsdWRlL29iamlkbC5pZGwsCgkgIGluY2x1ZGUvd2luZS9vYmpfY2hhbm5lbC5oLCBpbmNsdWRlL3dpbmUvb2JqX2NsaWVudHNlcnZlci5oLAoJICBpbmNsdWRlL3dpbmUvb2JqX2RhdGFvYmplY3QuaCwgaW5jbHVkZS93aW5lL29ial9tYXJzaGFsLmgsCgkgIGluY2x1ZGUvd2luZS9vYmpfbWlzYy5oLCBpbmNsdWRlL3dpbmUvb2JqX21vbmlrZXIuaCwKCSAgaW5jbHVkZS93aW5lL29ial9wcm9wZXJ0eXN0b3JhZ2UuaCwgaW5jbHVkZS93aW5lL29ial9zdG9yYWdlLmg6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCVdyb3RlIGEgbmV3IG9iamlkbC5pZGwgdG8gcmVwbGFjZSBhIG51bWJlciBvZiBpbmNsdWRlL3dpbmUvb2JqXyouaAoJZmlsZXMuCgoJKiBkbGxzL2NhYmluZXQvTWFrZWZpbGUuaW4sIGRsbHMvY2FiaW5ldC9jYWJleHRyYWN0LmMsCgkgIGRsbHMvY2FiaW5ldC9jYWJpbmV0LmgsIGRsbHMvY2FiaW5ldC9jYWJpbmV0LnNwZWMsCgkgIGRsbHMvY2FiaW5ldC9jYWJpbmV0X21haW4uYywgZGxscy9jYWJpbmV0L2ZkaS5jLAoJICBkbGxzL3VybG1vbi9NYWtlZmlsZS5pbiwgZGxscy91cmxtb24vdW1vbi5jLAoJICBkbGxzL3VybG1vbi91cmxtb24uc3BlYywgd2luZWRlZmF1bHQucmVnOgoJR3JlZyBUdXJuZXIgPGdtdHVybmVyMDA3QGFtZXJpdGVjaC5uZXQ+CgktIHBvcnQgY2FiZXh0cmFjdCB0byB3aW5lCgktIGltcGxlbWVudCBjYWJpbmV0LmRsbC5FeHRyYWN0LCB1cmxtb24uZGxsLkV4dHJhY3QKCS0gYWRkIFNQNmEgcmVnaXN0cnkga2V5IHRvIHdpbmVkZWZhdWx0LnJlZwoKCSogZGxscy9udGRsbC90ZXN0cy9ydGxzdHIuYzogQXZvaWQgc29tZSB3YXJuaW5ncy4KCgkqIGRsbHMveDExZHJ2L2tleWJvYXJkLmM6IE1hdXJvIENhcnZhbGhvIENoZWhhYiA8bWNoZWhhYkBicnR1cmJvLmNvbT4KCUluY2x1ZGVkIGEgc3BlY2lmaWMgQUJOVC0yIHNjYW4gYW5kIHZrZXkgdGFibGVzLCBhbmQgYW4gQUJOVC0yCglrZXlib2FyZCB3aXRoIDxBTFQ+PEdSPiBrZXkgY29kZXMuCgoJKiBpbmNsdWRlL3dpbmUvb2JqX21pc2MuaCwgaW5jbHVkZS93aW5lL29ial9zdG9yYWdlLmgsCgkgIGluY2x1ZGUvd3R5cGVzLmgsIGluY2x1ZGUvd3R5cGVzLmlkbDoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJTW92ZWQgYSBjb3VwbGUgb2YgdHlwZXMgZnJvbSBpbmNsdWRlL3dpbmUvb2JqXyouaCB0bwoJaW5jbHVkZS93dHlwZXMuaWRsLgoKCSogaW5jbHVkZS9jb21tY3RybC5oOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRml4IGRlZmluZXMgZm9yIExWX0lURU0sIExWX0RJU1BJTkZPLCBhbmQgTFZfRklORElORk8uCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9mb3JtYXRfbXNnLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJT24gV2luOXggImhpXG4iIGdpdmVzIHVzICJoaVxyXG4iLgoKCSogaW5jbHVkZS93aW5udC5oOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQWRkIGRlZmluaXRpb25zIGZvciBOW1ddUFNUUi4KCUFkZCBhIGJ1bmNoIG9mIFNFXyogZGVmaW5pdGlvbnMuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9sb2NhbGUuYzogQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQGFsdW0ud3BpLmVkdT4KCUFkZCBhZGRpdGlvbmFsIHRlc3RzIGZvciBHZXRUaW1lRm9ybWF0KCkgYW5kIEdldERhdGVGb3JtYXQoKS4KCVVuY29tbWVudCB3aW5lX3RvZG8gdGVzdHMgdGhhdCBub3cgc3VjY2VlZCB3aXRoIGZpeGVzIHRvCglHZXRUaW1lL0RhdGVGb3JtYXQoKS4KCgkqIGluY2x1ZGUvd2lubmxzLmgsIG9sZS9vbGUybmxzLmM6IENocmlzIE1vcmdhbiA8Y21vcmdhbkBhbHVtLndwaS5lZHU+CglHZXREYXRlRm9ybWF0KCkgYW5kIEdldFRpbWVGb3JtYXQoKSBzaG91bGQgY2hlY2sgdGhlIHZhbGlkaXR5IG9mIHRoZQoJdGltZS9kYXRlIHN0cnVjdHVyZSBpdCBpcyBwcm9jZXNzaW5nLgoJQWRkIGNvbW1lbnRzIHRvIGRlc2NyaWJlIGZsYWdzIGJlaGF2aW9yLgoJQWRkIHN1cHBvcnQgZm9yIFRJTUVfRk9SQ0UyNEhPVVJGT1JNQVQsIFRJTUVfTk9NSU5VVEVTT1JTRUNPTkRTLAoJVElNRV9OT1NFQ09ORFMgYW5kIFRJTUVfTk9USU1FTUFSS0VSLgoJQWRkIGNoZWNrIGluIEdldERhdGVGb3JtYXRXKCkgZm9yIGludmFsaWQgZmxhZyBjb21iaW5hdGlvbnMuCglBZGRlZCBzb21lIG1pc3NpbmcgREFURV8qIGRlZmluZXMgdG8gd2lubmxzLmguCglCZWhhdmlvciB2ZXJpZmllZCBhZ2FpbnN0IE5UNC4wLgoKCSogZGxscy9tc3ZjcnQvY3R5cGUuYywgZGxscy9tc3ZjcnQvZGF0YS5jLCBkbGxzL21zdmNydC9kaXIuYywKCSAgZGxscy9tc3ZjcnQvZW52aXJvbi5jLCBkbGxzL21zdmNydC9maWxlLmMsIGRsbHMvbXN2Y3J0L21iY3MuYywKCSAgZGxscy9tc3ZjcnQvbXN2Y3J0LmgsIGRsbHMvbXN2Y3J0L3NjYW5mLmMsIGRsbHMvbXN2Y3J0L3NjYW5mLmgsCgkgIGRsbHMvbXN2Y3J0L3djcy5jOgoJVXNlIE1TVkNSVF93Y2hhcl90IGluc3RlYWQgb2YgV0NIQVIgc28gdGhhdCB0aGUgaW1wbGVtZW50YXRpb24gbWF0Y2hlcwoJdGhlIHByb3RvdHlwZXMuCgoJKiB0b29scy93bWMvbWN5Lnk6IEF2b2lkIHJlZmVyZW5jaW5nIHBvdGVudGlhbGx5IGZyZWVkIHRva2VuLgoKCSogZGxscy9zaGx3YXBpL3BhdGguYywgZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYywgZGxscy9zaGx3YXBpL3VybC5jOgoJUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCUltcGxlbWVudGVkIFVybENyZWF0ZUZyb21QYXRoW0FXXSBhbmQgc2xpZ2h0bHkgcmVsYXRlZAoJUGF0aENyZWF0ZUZyb21GaWxlQS4KCgkqIGRsbHMvYWR2YXBpMzIvYWR2YXBpMzIuc3BlYywgZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQGFsdW0ud3BpLmVkdT4KCVN0dWIgZm9yIEdldFNlY3VyaXR5SW5mb0V4VygpLgoKCSogaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9hY2NjdHJsLmg6IEFkZGVkIGFjY2N0cmwuaCBoZWFkZXIuCgoJKiB0b29scy93cmMvcGFyc2VyLnksIHRvb2xzL3dyYy93cmMuYywgdG9vbHMvd3JjL3dyYy5oOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVJlbW92ZSB0aGUgLUwgd3JjIG9wdGlvbiwgYXMgbm8gYXV0b21hdGljIGZ1ZGdpbmcgb2YgZmlsZW5hbWVzIGNhbgoJZXZlciBiZSBjb3JyZWN0LgoKCSogaW5jbHVkZS93aW51c2VyLmgsIHdpbmRvd3MvcGFpbnRpbmcuYzoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglVcGRhdGVXaW5kb3cgcmV0dXJucyBhIEJPT0xlYW4uCgoJKiBkbGxzL2RkcmF3L2QzZHRleHR1cmUuYywgZGxscy9kZHJhdy9kZHJhd19wcml2YXRlLmgsCgkgIGRsbHMvZGRyYXcvaGVscGVyLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJQWRkZWQgc3VyZmFjZSBkdW1waW5nIGZ1bmN0aW9uIGZvciBkZWJ1Zy4KCgkqIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGRsbHMva2VybmVsL3RpbWUuYzoKCU1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CglJbXBsZW1lbnRhdGlvbiBvZiBTeXN0ZW1UaW1lVG9UelNwZWNpZmljTG9jYWxUaW1lKCkgYW5kCglUelNwZWNpZmljTG9jYWxUaW1lVG9TeXN0ZW1UaW1lKCkuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsIGRsbHMvc2hlbGwzMi9zaGZsZHJfZnMuYywKCSAgZGxscy9zaGVsbDMyL3NobGZpbGVvcC5jLCBkbGxzL3NoZWxsMzIvc2hyZXMucmMsCgkgIGRsbHMvc2hlbGwzMi9zaHJlc2RlZi5oOgoJUm9sZiBLYWxiZXJtYXR0ZXIgPHJvbGYua2FsYmVybWF0dGVyQGNpdGVuZy5jb20+CglJbnRyb2R1Y2VkIHNvbWUgZGVjbGFyYXRpb25zIGFuZCByZXNvdXJjZXMgbmVlZGVkIGZvciBhIG1vcmUgY29tcGxldGUKCWltcGxlbWVudGF0aW9uIG9mIFNIRmlsZU9wZXJhdGlvbi4KCgkqIG9sZS9vbGUybmxzLmM6IEFsYmVydG8gTWFzc2FyaSA8YWxieUBleGxuLmNvbT4KCUNvbXBhcmVTdHJpbmdXIHNob3VsZCByZXR1cm4gMCB3aGVuIG9uZSBvZiB0aGUgcHJvdmlkZWQgc3RyaW5ncyBpcyBhCglOVUxMIHBvaW50ZXIuCgoJKiBkbGxzL3VzZXIvZGRlL2NsaWVudC5jLCBkbGxzL3VzZXIvZGRlL21pc2MuYywgaW5jbHVkZS9kZGVtbC5oOgoJTFBDT05WQ09OVEVYVCBzaG91bGQgYmUgUENPTlZDT05URVhUIChzcG90dGVkIGJ5IERpbWl0cmllIE8uIFBhdW4pLgoJU2FtZSBmb3IgTFBIU1pQQUlSIGFuZCBMUENPTlZJTkZPLgoKCSogZGxscy9vbGUzMi9hbnRpbW9uaWtlci5jLCBkbGxzL29sZTMyL2NvbXBvc2l0ZW1vbmlrZXIuYywKCSAgZGxscy9vbGUzMi9maWxlbW9uaWtlci5jLCBkbGxzL29sZTMyL2l0ZW1tb25pa2VyLmMsCgkgIGRsbHMvb2xlMzIvbW9uaWtlci5oLCBpbmNsdWRlL3dpbmUvb2JqX21vbmlrZXIuaDoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJTW92ZWQgc29tZSBkZWZpbml0aW9ucyBmcm9tIGluY2x1ZGUvd2luZS9vYmpfbW9uaWtlci5oIHRvCglkbGxzL29sZTMyL21vbmlrZXIuaC4KCgkqIGRvY3VtZW50YXRpb24vd2luZS5tYW4uaW46CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglGaXhlZCB0eXBvLgoKCSogZGxscy9uZXRhcGkzMi90ZXN0cy9hY2Nlc3MuYywgZGxscy9uZXRhcGkzMi90ZXN0cy9hcGlidWYuYywKCSAgZGxscy9uZXRhcGkzMi90ZXN0cy93a3N0YS5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglPbiBXaW45eCBuZXRhcGkzMi5kbGwgZG9lcyBub3QgZXhwb3J0IGEgc2luZ2xlIEFQSSBzbyB3ZSBkbyBhCglHZXRQcm9jQWRkcmVzcyBmb3IgZWFjaCBvZiB0aGVtIGFuZCBza2lwIHRoZSB0ZXN0cyB3aGVuIG5lY2Vzc2FyeS4KCU9uIFdpbjl4IEdldFVzZXJOYW1lVyBhbmQgR2V0Q29tcHV0ZXJOYW1lVyBhcmUgc3R1YnMuCglJbXByb3ZlIGVycm9yIHJlcG9ydGluZyBpbiBhY2Nlc3MuYy4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL2FsbG9jLmMsIGluY2x1ZGUvd2luYmFzZS5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglEZWNsYXJlIExvY2FsRGlzY2FyZCBhbmQgR2xvYmFsRGlzY2FyZCAodXNlZCBieSBrZXJuZWwvdGVzdHMvYWxsb2MuYykKCVJlbW92ZSB0aGUgRElTQ0FSRF9ERUZJTkVEICNpZmRlZnMuCglSZW1vdmUgYW5vdGhlciBkb3VibGUgSGVhcEZyZWUgKGNhdXNlZCBhbiBhc3NlcnQgd2hlbiBydW4gb24gTlQ0KSwKCWFuZCBhIEhlYXBTaXplIG9uIGEgZnJlZWQgaGVhcCAodGhlIHRlc3QgZmFpbGVkIG9uIFdpbjl4KS4KCUZpeCB0aGUgTG9jYWxMb2NrL0xvY2FsVW5sb2NrIHRlc3RzICh0aGUgbWVtb3J5IG11c3QgYmUgYWxsb2NhdGVkCgl3aXRoIExNRU1fTU9WRUFCTEUgb3RoZXJ3aXNlIHRoZSB0ZXN0cyBkb24ndCBtYWtlIHNlbnNlKS4KCVJlbW92ZSBtYW55IHVubmVjZXNzYXJ5IGNhc3RzLgoJSW1wcm92ZWQgZXJyb3IgcmVwb3J0aW5nIHNvbWV3aGF0LgoKMjAwMi0xMi0xOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL2Zvcm1hdF9tc2cuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglJbXByb3ZlIGVycm9yIHJlcG9ydGluZy4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL3BhdGguYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBbGwgZmlsZW5hbWVzIGNvbnRhaW5pbmcgYSAiOiIgYXJlIGludmFsaWQgb24gV2luOXggYW5kIDIwMDAgYnV0IGFyZQoJdmFsaWQgb24gTlQ0IC0+IHJlbW92ZSB0aGVzZSB0ZXN0cy4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL3Byb2Nlc3MuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CgkjaWZkZWYtb3V0IGRlY29kZVcgc2luY2UgaXQgaXMgbm90IHVzZWQgeWV0LgoJRml4IHRoZSBscERlc2t0b3AgYW5kIGxwVGl0bGUgY2hlY2tzIG9uIE5UIHBsYXRmb3Jtcy4KCgkqIGRsbHMvdXNlci90ZXN0cy93c3ByaW50Zi5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCXdzcHJpbnRmVyBpcyBub3Qgc3VwcG9ydGVkIG9uIFdpbjl4IHBsYXRmb3Jtcy4KCXdzcHJpbnRme0EsV31UZXN0IHNob3VsZCBiZSB2b2lkLgoJSW1wcm92ZSBlcnJvciByZXBvcnRpbmcuCglSZW1vdmUgdW5uZWNlc3NhcnkgI2luY2x1ZGVzLgoKCSogZGxscy9zaGx3YXBpL3Rlc3RzL2NsaXN0LmMsIGRsbHMvc2hsd2FwaS90ZXN0cy9zaHJlZy5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglGaXggc2lnbmVkL3Vuc2lnbmVkIHdhcm5pbmdzLgoKCSogaW5jbHVkZS93dHlwZXMuaCwgaW5jbHVkZS93dHlwZXMuaWRsOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglVbnF1b3RlZCBzb21lIDE2LWJpdCB0eXBlcywgc28gdGhlIElETCBjb21waWxlciBjYW4gdXNlIHRoZW0uCgoJKiBpbmNsdWRlL21zdmNydC9zdHJpbmcuaDogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCU1hcCBzdHJjYXNlY21wIHRvIF9zdHJpY21wLgoKCSogaW5jbHVkZS9vYmpiYXNlLmgsIGluY2x1ZGUvd2luZS9vYmpfY2xpZW50c2VydmVyLmgsCgkgIGluY2x1ZGUvd2luZS9vYmpfZGF0YW9iamVjdC5oLCBpbmNsdWRlL3dpbmUvb2JqX21hcnNoYWwuaCwKCSAgaW5jbHVkZS93aW5lL29ial9taXNjLmgsIGluY2x1ZGUvd2luZS9vYmpfbW9uaWtlci5oLAoJICBpbmNsdWRlL3dpbmUvb2JqX3N0b3JhZ2UuaDoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJTW92ZWQgQ09NIEFQSSBwcm90b3R5cGVzIHRvIG9iamJhc2UuaCwgZnJvbSB3aW5lL29ial8qLmguCgoJKiBkbGxzL29sZTMyL29sZTIuYywgZGxscy9zaGVsbDMyL2RhdGFvYmplY3QuYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLCBvbGUvdXVpZC5jOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglSZW1vdmVkIGEgZmV3IG1vcmUgaW5jbHVzaW9ucyBvZiBkZXByZWNhdGVkIHdpbmUvb2JqXyouaCBoZWFkZXJzLgoKCSogZGxscy9jcnRkbGwvTWFrZWZpbGUuaW4sIGRsbHMvY3J0ZGxsL2NydGRsbF9tYWluLmM6CglNYWRlIGNydGRsbCBhIG5vcm1hbCB1c2VyIG9mIG1zdmNydCBieSBzZXR0aW5nIHRoZSByaWdodCBpbmNsdWRlCglwYXRoLgoKCSogZGxscy9tc3ZjcnQvZmlsZS5jLCBkbGxzL21zdmNydC9taXNjLmMsIGRsbHMvbXN2Y3J0L3NjYW5mLmMsCgkgIGluY2x1ZGUvbXN2Y3J0L2N0eXBlLmgsIGluY2x1ZGUvbXN2Y3J0L2RpcmVjdC5oLAoJICBpbmNsdWRlL21zdmNydC9kb3MuaCwgaW5jbHVkZS9tc3ZjcnQvZWguaCwgaW5jbHVkZS9tc3ZjcnQvZXJybm8uaCwKCSAgaW5jbHVkZS9tc3ZjcnQvaW8uaCwgaW5jbHVkZS9tc3ZjcnQvbG9jYWxlLmgsCgkgIGluY2x1ZGUvbXN2Y3J0L21hbGxvYy5oLCBpbmNsdWRlL21zdmNydC9tYmN0eXBlLmgsCgkgIGluY2x1ZGUvbXN2Y3J0L21ic3RyaW5nLmgsIGluY2x1ZGUvbXN2Y3J0L3Byb2Nlc3MuaCwKCSAgaW5jbHVkZS9tc3ZjcnQvc2VhcmNoLmgsIGluY2x1ZGUvbXN2Y3J0L3NldGptcC5oLAoJICBpbmNsdWRlL21zdmNydC9zdGRkZWYuaCwgaW5jbHVkZS9tc3ZjcnQvc3RkaW8uaCwKCSAgaW5jbHVkZS9tc3ZjcnQvc3RkbGliLmgsIGluY2x1ZGUvbXN2Y3J0L3N0cmluZy5oLAoJICBpbmNsdWRlL21zdmNydC9zeXMvc3RhdC5oLCBpbmNsdWRlL21zdmNydC9zeXMvdGltZWIuaCwKCSAgaW5jbHVkZS9tc3ZjcnQvc3lzL3R5cGVzLmgsIGluY2x1ZGUvbXN2Y3J0L3N5cy91dGltZS5oLAoJICBpbmNsdWRlL21zdmNydC90aW1lLmgsIGluY2x1ZGUvbXN2Y3J0L3djaGFyLmgsCgkgIGluY2x1ZGUvbXN2Y3J0L3djdHlwZS5oLCBpbmNsdWRlL3dpbm50Lmg6CglBdm9pZCBpbmNsdWRpbmcgb3RoZXIgaGVhZGVycyBmcm9tIHRoZSBtc3ZjcnQgaGVhZGVycywgZHVwbGljYXRlIHNvbWUKCWRlZmluaXRpb25zIGluc3RlYWQgbGlrZSBXaW5kb3dzIGRvZXMuCglBbHdheXMgZGVmaW5lIHdjaGFyX3QgKHN1Z2dlc3RlZCBieSBEaW1pdHJpZSBPLiBQYXVuKSwgYW5kIHVzZSB3Y2hhcl90CglldmVyeXdoZXJlIGluc3RlYWQgb2YgV0NIQVIgdG8gYXZvaWQgZGVwZW5kaW5nIG9uIFdpbmRvd3MgaGVhZGVycy4KCgkqIGRsbHMvZDNkOC9kM2Q4X3ByaXZhdGUuaCwgZGxscy9kM2Q4L2RldmljZS5jLCBkbGxzL2QzZDgvZGlyZWN0eC5jLAoJICBkbGxzL2QzZDgvc2hhZGVyLmMsIGRsbHMvZDNkOC90ZXh0dXJlLmMsIGRsbHMvZDNkOC92b2x1bWV0ZXh0dXJlLmM6CglSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCSAtIHNvbWUgZml4ZXMgaW4gQ3JlYXRlRGV2aWNlIGluaXQKCSAtIHZlcnRleCBzaGFkZXIgZGVjbGFyYXRpb24gcGFyc2VyICh3aXRoIG91dHB1dCBkdW1wKSBhbmQKCSAgIGludGVycHJldGF0aW9uIChnZW5lcmF0ZSB0aGUgRlZGIGRlc2NyaXB0b3IgZm9yIHByb2dyYW0gaW5wdXQpCgkgLSB2ZXJ0ZXggc2hhZGVyIHByb2dyYW0gcGFyc2VyICh3aXRoIG91dHB1dCBkdW1wKQoJIC0gc29mdHdhcmUgdmVydGV4IHNoYWRlciBwcm9ncmFtIGVtdWxhdGlvbgoKCSogaW5jbHVkZS9kM2Q4dHlwZXMuaDogUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CglBZGRlZCBzb21lIG5lY2Vzc2FyeSBkZWZpbml0aW9ucyBmb3IgRDNEOCBWZXJ0ZXggYW5kIFBpeGVsIHNoYWRlcgoJc3VwcG9ydC4KCgkqIHNlcnZlci9yZWdpc3RyeS5jOiBCaWxsIE1lZGxhbmQgPG1lZGJpMDFAYWNjcGFjLmNvbT4KCUlmIGEgLnJlZyBmdW5jdGlvbiBpcyBhY2Nlc3NlZCB0aHJvdWdoIGEgc3ltbGluayB0aGVuIHdyaXRlIGRpcmVjdGx5Cgl0byB0aGUgZmlsZSByYXRoZXIgdGhhbiByZXBsYWNpbmcgaXQgd2l0aCBhIHRlbXAgZmlsZS4gIFRoaXMgcHJlc2VydmVzCglvd25lcnNoaXAgYW5kIHBlcm1pc3Npb25zLgoKCSogZGxscy9udGRsbC90aW1lLmMsIGluY2x1ZGUvd2ludGVybmwuaDoKCUltcGxlbWVudGVkIFJ0bFRpbWVUb0VsYXBzZWRUaW1lRmllbGRzLgoKCSogZGxscy9kZHJhdy9kM2R0ZXh0dXJlLmM6IExpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglGaXggaW4gYW5vdGhlciBwbGFjZSBpbiB0aGUgY29kZSBjb21wdXRpbmcgdGhlIG1lbW9yeSB1c2FnZS4KCgkqIGRvY3VtZW50YXRpb24vY29uZmlndXJpbmcuc2dtbCwgZG9jdW1lbnRhdGlvbi93aW5lLmNvbmYubWFuLAoJICBkb2N1bWVudGF0aW9uL3dpbmUubWFuLmluOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJUHVyZ2UgdHJhY2VzIG9mIHRoZSBvbGQgcmVsYXkgZGVidWcgbWVjaGFuaXNtIGFuZCBkb2N1bWVudCBuZXcKCW1lY2hhbmlzbSBiZXR0ZXIuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9hdG9tLmMsIGRsbHMva2VybmVsL3Rlc3RzL2RpcmVjdG9yeS5jLAoJICBkbGxzL2tlcm5lbC90ZXN0cy9lbnZpcm9uLmMsIGRsbHMva2VybmVsL3Rlc3RzL2ZpbGUuYywKCSAgZGxscy9rZXJuZWwvdGVzdHMvcGF0aC5jLCBkbGxzL2tlcm5lbC90ZXN0cy9wcm9jZXNzLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVVzZSBzdHJsZW4gb3IgbHN0cmxlbkEgYXMgYXBwcm9wcmlhdGUgdG8gYXZvaWQgc2lnbmVkL3Vuc2lnbmVkCgl3YXJuaW5ncy4KCgkqIHRvb2xzL3dpbmFwaS9tc3ZjbWFrZXI6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJVGhlIGxpbmsgY29tbWFuZCBzcGVjaWZpZXMgd2hpY2ggdmVyc2lvbiBvZiB0aGUgQyBsaWJyYXJ5IHRvIGxpbmsgd2l0aAoJKHNlZSAvTVtURF1kPyBvcHRpb24pLiBTbyB3ZSBtdXN0IG5vdCBleHBsaWNpdGx5IGxpbmsgd2l0aAoJJ21zdmNydC5saWInLiBGaXhlcyB0aGUgbXN2Y3J0IHRlc3QgY3Jhc2hlcy4KCgkqIGluY2x1ZGUvcnBjLmgsIGluY2x1ZGUvcnBjZGNlLmg6IE92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJTW92ZWQgVVVJRCB0eXBlIHRvIHJwY2RjZS5oLCBhcyBpbiB0aGUgTVMgUlBDIGhlYWRlcnMuCglSZW1vdmVkIHJlZHVuZGFudCBwcm90b3R5cGUuCgoyMDAyLTEyLTE3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbG9hZGVyL25lL3NlZ21lbnQuYywgbG9hZGVyL3BlX2ltYWdlLmM6IERlYnVnIGNoYW5uZWxzIGNsZWFudXAuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBkbGxzL250ZGxsL01ha2VmaWxlLmluLCBpbmNsdWRlL3RocmVhZC5oLAoJICBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW5udC5oLCBzY2hlZHVsZXIvZmliZXIuYzoKCUltcGxlbWVudGVkIHRoZSBGaWJlciogZnVuY3Rpb25zICh3aXRoIHRoZSBoZWxwIG9mIEh1dyBEYXZpZXMpLgoKCSogaW5jbHVkZS91bmtud24uaCwgdG9vbHMvd2lkbC9oZWFkZXIuYzoKCUZpeCB0aGUgdHlwZSBvZiB0aGUgVGhpcyBwb2ludGVyIGluIHRoZSB2dGJsIGZ1bmN0aW9ucyBpbmhlcml0ZWQgZnJvbQoJdGhlIGJhc2UgY2xhc3MuCgoJKiBkbGxzL3dpbmluZXQvdGVzdHMvaHR0cC5jOiBGaXhlZCB3YXJuaW5ncy4KCgkqIHNlcnZlci9ob29rLmM6IEFsYmVydG8gTWFzc2FyaSA8YWxieUBleGxuLmNvbT4KCVRoZSBoYW5kbGVyIGZvciB0aGUgc2VydmVyIG1lc3NhZ2UgZ2V0X25leHRfaG9vayB3YXMgcmV0dXJuaW5nIHRoZQoJbW9kdWxlIG5hbWUgb2YgdGhlIGN1cnJlbnQgaG9vaywgaW5zdGVhZCBvZiB0aGUgbmV4dCBvbmUuCgoJKiBkbGxzL3dpbnNwb29sL2luZm8uYywgZGxscy93aW5zcG9vbC93aW5zcG9vbC5kcnYuc3BlYzoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglBZGRlZCBzdHVicyBmb3Ige1N0YXJ0LEVuZH17RG9jLFBhZ2V9UHJpbnRlci4KCgkqIGNvbnRyb2xzL3Njcm9sbC5jOiBEdWFuZSBDbGFyayA8ZGNsYXJrQGFrYW1haWwuY29tPgoJTmVlZCB0byBpbml0aWFsaXplIHRyYWNraW5nIHZhbHVlIG9uIG1vdXNlZG93bi4KCgkqIGRsbHMvbXN2Y3J0L2ZpbGUuYywgZGxscy9tc3ZjcnQvdGVzdHMvLmN2c2lnbm9yZSwKCSAgZGxscy9tc3ZjcnQvdGVzdHMvTWFrZWZpbGUuaW4sIGRsbHMvbXN2Y3J0L3Rlc3RzL2ZpbGUuYzoKCUJpbGwgQ3VycmllIDxiaWxsQHRhbml3aGEub3JnPgoJZmRvcGVuOiBkb24ndCByZXdpbmQgdGhlIGZpbGUgYWZ0ZXIgY3JlYXRpbmcgdGhlIEZJTEUqIGhhbmRsZS4gQWRkZWQKCXVuaXQgdGVzdCBmb3IgdGhhdC4KCgkqIGNvbnRyb2xzL21lbnUuYzogQWxiZXJ0byBNYXNzYXJpIDxhbGJ5QGV4bG4uY29tPgoJU2V0IHRoZSBPRFNfRElTQUJMRUQgYml0IHdoZW4gdGhlIGl0ZW0gaXMgZ3JheWVkLgoKCSogdG9vbHMvd2luZXdyYXAuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUJldHRlciBoYW5kbGluZyBvZiBlcnJvcnMgd2hpbGUgZm9yay9leGVjaW5nLgoJQWRkIHZlcmJvc2UgY29tbWFuZCBsaW5lIHN3aXRjaC4KCUFkZCAteiBkZWZzIGF0IGxpbmsgc3RhZ2UsIHRvIGNhdGNoIG1pc3Npbmcgc3ltYm9scy4KCgkqIHRvb2xzL21pbmd3cmFwLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglQYXNzIHRoZSBndWkgZmxhZyB0byB3aW5ld3JhcCBpZiB3ZSdyZSBsaW5raW5nIGEgR1VJIGFwcC4KCgkqIGRvY3VtZW50YXRpb24vY29tcGlsaW5nLnNnbWwsIGRvY3VtZW50YXRpb24vZ2V0dGluZy5zZ21sOgoJQmlsbCBNZWRsYW5kIDxiaWxsbWVkbGFuZEBtZXJjdXJ5c3BlZWQuY29tPgoJTW92ZSBDVlMgZG9jdSBmcm9tIFVzZXIgR3VpZGUgdG8gRGV2ZWwgR3VpZGUuCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmM6IExpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglJZiB3ZSBzdXBwb3J0ICdub24tbmF0aXZlJyB0ZXh0dXJlIGZvcm1hdCwgYWR2ZXJ0aXNlIGl0LgoKCSogZGxscy9kM2Q4L2RldmljZS5jOiBKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJVGhlIHNpbXBsZSBiaXRzIG9mIGZvZy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL3dpbnRhYjMyLy5jdnNpZ25vcmUsCgkgIGRsbHMvd2ludGFiMzIvTWFrZWZpbGUuaW4sIGRsbHMvd2ludGFiMzIvY29udGV4dC5jLAoJICBkbGxzL3dpbnRhYjMyL21hbmFnZXIuYywgZGxscy93aW50YWIzMi93aW50YWIuc3BlYywKCSAgZGxscy93aW50YWIzMi93aW50YWIxNi5jLCBkbGxzL3dpbnRhYjMyL3dpbnRhYjMyLnNwZWMsCgkgIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvcGt0ZGVmLmgsIGluY2x1ZGUvd2ludGFiLmgsCgkgIGluY2x1ZGUvd2ludGFieC5oOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglBZGRlZCBzdHVicyBmb3IgV0lOVEFCeywzMn0uRExMICh1c2VkIGJ5IG1hbnkgaW1wb3J0YW50IGRyYXdpbmcKCWFwcGxpY2F0aW9ucyBmb3Igc3VwcG9ydGluZyB0YWJsZXRzKS4KCgkqIGRsbHMvb2xlYXV0MzIvZGlzcGF0Y2guYzoKCVJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CglBZGQgc3RhbmRhcmQgZGlzcGF0Y2ggaW1wbGVtZW50YXRpb24gKENyZWF0ZVN0ZERpc3BhdGNoKS4KCgkqIGluY2x1ZGUvd2luZS90ZXN0Lmg6IFRvbnkgTGFtYnJlZ3RzIDx0b255X2xhbWJyZWd0c0B0ZWx1c3BsYW5ldC5uZXQ+CglEaXJlY3QgdGhlIG91dHB1dCBvZiB0aGUgdGVzdHMgdG8gc3Rkb3V0IHNvIHRoYXQgV2luOTggY2FuIHJlZGlyZWN0Cgl0aGUgb3V0cHV0IHRvIGEgZmlsZS4KCgkqIGRsbHMvbmV0YXBpMzIvYWNjZXNzLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglOZXRVc2VyR2V0SW5mbzogaW1wbGVtZW50ZWQgTGV2ZWwgMS4KCgkqIG9sZS9NYWtlZmlsZS5pbiwgb2xlL2R4OGd1aWQuYywgb2xlL2R4Z3VpZC5jLCBvbGUvdXVpZC5jOgoJU3BsaXQgRGlyZWN0WCBHVUlEcyB0byBzZXBhcmF0ZSBmaWxlcyB0byBhdm9pZCBoZWFkZXIgY29uZmxpY3RzLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvZDNkOC9NYWtlZmlsZS5pbiwKCSAgZGxscy9kM2Q4L2Jhc2V0ZXh0dXJlLmMsIGRsbHMvZDNkOC9jdWJldGV4dHVyZS5jLAoJICBkbGxzL2QzZDgvZDNkOF9tYWluLmMsIGRsbHMvZDNkOC9kM2Q4X3ByaXZhdGUuaCwgZGxscy9kM2Q4L2RldmljZS5jLAoJICBkbGxzL2QzZDgvZGlyZWN0eC5jLCBkbGxzL2QzZDgvaW5kZXhidWZmZXIuYywgZGxscy9kM2Q4L3NoYWRlci5jLAoJICBkbGxzL2QzZDgvc3VyZmFjZS5jLCBkbGxzL2QzZDgvc3dhcGNoYWluLmMsIGRsbHMvZDNkOC90ZXh0dXJlLmMsCgkgIGRsbHMvZDNkOC92ZXJ0ZXhidWZmZXIuYywgZGxscy9kM2Q4L3ZvbHVtZS5jLCBkbGxzL21ha2VfZGxscywKCSAgZGxscy9kM2R4OC8uY3ZzaWdub3JlLCBkbGxzL2QzZHg4L01ha2VmaWxlLmluLAoJICBkbGxzL2QzZHg4L2QzZHg4LnNwZWMsIGRsbHMvZDNkeDgvZDNkeDhfbWFpbi5jLAoJICBkbGxzL2QzZHg4L2QzZHg4Y29yZV9wcml2YXRlLmgsIGRsbHMvZDNkeDgvZDNkeGJ1ZmZlci5jLAoJICBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL2QzZDguaCwgaW5jbHVkZS9kM2Q4dHlwZXMuaCwKCSAgaW5jbHVkZS9kM2R4OGNvcmUuaDoKCVJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJLSBzb21lIEQzRDggZml4ZXMKCS0gYmVnaW5uaW5nIG9mIHNoYWRlcnMgc3VwcG9ydCAoVmVydGV4IGFuZCBQaXhlbCBTaGFkZXJzIDEuMSBvbgoJICBEaXJlY3RYOCkKCS0gYmVnaW5uaW5nIG9mIEQzRFg4IHN1cHBvcnQgdGhlIEQzRDggdXRpbGl0eSBBUEkgKHZlcnkgYmFzaWMsIG9ubHkKCSAgdGhlIGNvcmUgaGVhZGVyKQoKMjAwMi0xMi0xNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvdW5rbnduLmgsIGluY2x1ZGUvdW5rbnduLmlkbCwKCSAgaW5jbHVkZS93aW5lL29ial9iYXNlLmg6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCVdyb3RlIGEgV2luZS1jb21wYXRpYmxlIHVua253bi5pZGwsIG1vdmluZyB0aGUgSVVua25vd24gZGVmaW5pdGlvbgoJZnJvbSB3aW5lL29ial9iYXNlLmggdG8gdGhlIGdlbmVyYXRlZCB1bmtud24uaC4KCgkqIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9sZS5jLAoJICBkbGxzL3NoZWxsMzIvc2hmbGRyX2Rlc2t0b3AuYzoKCVJvbGYgS2FsYmVybWF0dGVyIDxyb2xmLmthbGJlcm1hdHRlckBjaXRlbmcuY29tPgoJQ2hhbmdlIGNhbGxzIHRvIENMU0lERnJvbVN0cmluZyB0byBTSENMU0lERnJvbVN0cmluZ1cgZXhjZXB0IGluCglTSENMU0lERnJvbVN0cmluZ1cgZm9yIHRoZSB0aW1lIGJlaW5nLgoKCSogZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jLCBpbmNsdWRlL3dpbmJhc2UuaDoKCUFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCS0gYWN0dWFsbHkgdXNlIFBMVUlECgktIGluaXRpYWxpemUgdGhlIG91dGJvdW5kIGxwTHVpZCB2YXJpYWJsZSB3aXRoIGJvZ3VzIHZhbHVlcwoKCSogZGxscy9kZHJhdy9kM2R0ZXh0dXJlLmMsIGRsbHMvZGRyYXcvZGRyYXcvbWFpbi5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gZml4IGJhZCBUUkFDRQoJLSBmaXhlZCBjb21wdXRhdGlvbiBvZiBtZW1vcnkgdXNlZCBieSBhIHRleHR1cmUKCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywgZGxscy9kZHJhdy9kM2R0ZXh0dXJlLmMsCgkgIGRsbHMvZGRyYXcvZGRyYXcvbWFpbi5jLCBkbGxzL2RkcmF3L21lc2EuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIHJldmVydCBzb21lIG9wdGltaXNhdGlvbnMgYnJlYWtpbmcgc29tZSBnYW1lcwoJLSBhZGRlZCBhIG5ldyB0ZXh0dXJlIGZvcm1hdCAoNDQ0NCBBUkdCKQoJLSBmaXhlZCB0aGUgY29tcHV0YXRpb24gb2YgY29sb3JzCgktIGFkZGVkIG5ldyByZW5kZXIgc3RhdGVzIGFuZCBmb2cgc3VwcG9ydCAoTk9UIGhhbmRsZWQgeWV0IGZvcgoJICB0cmFuc2Zvcm1lZCB2ZXJ0aWNlcykKCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYzogQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJSW1wbGVtZW50ZWQgRHJhd1ByaW1pdGl2ZVN0cmlkZWQgYW5kIERyYXdJbmRleFByaW1pdGl2ZVN0cmlkZWQuCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsIGRsbHMvZGRyYXcvbWVzYV9wcml2YXRlLmg6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJRml4IGEgbWVtb3J5IGxlYWsgYW5kIG9wdGltaXplIGEgbGl0dGxlIGJpdCB0aGUgZ2VuZXJpYyBwYXRoLgoKCSogZGxscy9kZHJhdy9kM2R0ZXh0dXJlLmMsIGRsbHMvZGRyYXcvbWVzYS5jOgoJQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJSW1wcm92ZSB0cmFjZXMgKyBzbWFsbCBmaXguCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsIGRsbHMvZGRyYXcvZDNkdGV4dHVyZS5jLAoJICBkbGxzL2RkcmF3L2RzdXJmYWNlL21haW4uYywgZGxscy9kZHJhdy9tZXNhLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSBmaXggVHdpc3QgZGVtbwoJLSBzb21lIGNsZWFuLXVwcyAvIHRyYWNlcwoKCSogZGxscy9jb21jdGwzMi9jb21ib2V4LmMsIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jLAoJICBkbGxzL2NvbWN0bDMyL3Byb2dyZXNzLmMsIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmMsCgkgIGRsbHMvY29tY3RsMzIvcmViYXIuYywgZGxscy9jb21jdGwzMi90cmVldmlldy5jOgoJUm9sZiBLYWxiZXJtYXR0ZXIgPHJvbGYua2FsYmVybWF0dGVyQGNpdGVuZy5jb20+CglBZGQgY29uZmlnLmgvcG9ydC5oIHRvIGFsbG93IGNvbXBpbGF0aW9uL2xpbmtpbmcgaW4gTVNWQy4KCUZpeCBzb21lIHVuc2lnbmVkL3NpZ25lZCB3YXJuaW5ncy4KCgkqIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWM6CglHefZyZ3kgJ05vZycgSmVuZXkgPG5vZ0BzZGYubG9uZXN0YXIub3JnPgoJLSBJbXBsZW1lbnQgb3JkaW5hbHMgMTY3IGFuZCAxNzEuCgktIEFkZCBzdHVicyBmb3Igb3JkaW5hbHMgMjgyIGFuZCA0MDYuCgoJKiBkbGxzL3NoZWxsMzIvc2hsZXhlYy5jLCBkbGxzL3NoZWxsMzIvc2hsZmlsZW9wLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmM6CglSb2xmIEthbGJlcm1hdHRlciA8cm9sZi5rYWxiZXJtYXR0ZXJAY2l0ZW5nLmNvbT4KCU1ha2Ugc29tZSBzaGVsbDMyIGZpbGVzIGNvbXBpbGUgaW4gTVNWQy4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jOgoJUm9sZiBLYWxiZXJtYXR0ZXIgPHJvbGYua2FsYmVybWF0dGVyQGNpdGVuZy5jb20+CglEbyBhdCBsZWFzdCBzb21ldGhpbmcgZm9yIFNIRHJhZ0Ryb3AgZnVuY3Rpb25zIGFsdGhvdWdoIHRoYXQgaXNuJ3QgdGhlCgljb21wbGV0ZSBvcGVyYXRpb24uCgoJKiBkbGxzL3NoZWxsMzIvZGVidWdobHAuYzoKCVJvbGYgS2FsYmVybWF0dGVyIDxyb2xmLmthbGJlcm1hdHRlckBjaXRlbmcuY29tPgoJQWRkIGRlYnVnIGluZm8gZm9yIElFeHRyYWN0SWNvblcuCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsIGRsbHMvZGRyYXcvbWVzYS5jLAoJICBkbGxzL2RkcmF3L21lc2FfcHJpdmF0ZS5oOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCVN1cHBvcnRzIHRoZSBBTFBIQUZVTkMgYW5kIEFMUEhBUkVGIHJlbmRlcmluZyBzdGF0ZXMuCgoJKiB0b29scy9tYWtlX2N0ZXN0czogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCU9uIFdpbmRvd3Mgd2luZGVmLmggbXVzdCBiZSBpbmNsdWRlZCBiZWZvcmUgd2luYmFzZS5oLgoKCSogZGxscy93aW5tbS90ZXN0cy93YXZlLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglBZGQgdGhlIGNhcGFjaXR5IG9mIHBsYXlpbmcgYSB0ZXN0IHRvbmUgdXNpbmcgdGhlICdwbGF5JyBvcHRpb24uCglGYWN0b3JpemUgdGhlIHJlZ3VsYXIgYW5kIFdBVkVfRk9STUFUX0RJUkVDVCB0ZXN0cy4KCVRlc3QgdGhlIG5ldyA0OCBhbmQgOTZrSHogZm9ybWF0cy4KCgkqIHdpbmRvd3Mvbm9uY2xpZW50LmM6IFJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCUZpeCBhbiBBL1cgc3RydWN0dXJlIHNpemUgYnVnIGluIERyYXdDYXB0aW9uVGVtcFcoKS4KCgkqIHRvb2xzL3J1bnRlc3Q6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglBZGQgJy0tJyBvcHRpb24gZm9yIHBhc3NpbmcgZXh0cmEgYXJndW1lbnRzIHRvIHRoZSB0ZXN0LgoKCSogZ3JhcGhpY3MveDExZHJ2L2RpYi5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAYmFpa2FsLnJ1PgoJU2VwYXJhdGUgWFNobSB1c2luZyBjb2RlLgoKCSogcHJvZ3JhbXMvd2luaGVscC9obHAyc2dtbC5jLCBwcm9ncmFtcy93aW5oZWxwL2hscGZpbGUuYywKCSAgcHJvZ3JhbXMvd2luaGVscC9obHBmaWxlLmgsIHByb2dyYW1zL3dpbmhlbHAvd2luaGVscC5jLAoJICBwcm9ncmFtcy93aW5oZWxwL3dpbmhlbHAuaDoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJLSBsaW5rcyBjYW4gbm93IHNwcmVhZCBhY3Jvc3Mgc2V2ZXJhbCBlbGVtZW50cwoJLSBsaW5rIGluZm9ybWF0aW9uIGlzIG5vdyBzaGFyZWQgYmV0d2VlbiBmaWxlICYgcHJlc2VudGF0aW9uCgktIGZpcnN0IHRyeSBhdCBoYW5kbGluZyBtZXRhZmlsZXMKCgkqIHByb2dyYW1zL3dpbmVkYmcvZ2RicHJveHkuYzogRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBhIGZldyBpc3N1ZXMgd2l0aCB0aGUgZ2RiIHByb3h5LgoKCSogZGxscy9rZXJuZWwvY29tbS5zcGVjOiBBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CglBZGRlZCBzb21lIFdpbjMuMSBleHBvcnQgc3R1YnMuCgoJKiBkb2N1bWVudGF0aW9uL2NvbmZpZ3VyaW5nLnNnbWwsIGRvY3VtZW50YXRpb24vZ2V0dGluZy5zZ21sLAoJICBkb2N1bWVudGF0aW9uL2ludHJvZHVjdGlvbi5zZ21sLCBkb2N1bWVudGF0aW9uL3J1bm5pbmcuc2dtbDoKCUFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCS0gc3BlbGxpbmcgY29ycmVjdGlvbnMKCS0gcHJvcGVybHkgZG9jdW1lbnQgaG93IHRvIHNldCB0aGUgRE9TIFBBVEgKCgkqIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzIuc3BlYywgZGxscy9vbGVhdXQzMi92YXJpYW50LmM6CglBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CglJbXBsZW1lbnRlZCBWYXJPcigpLgoKCSogZGxscy9kZHJhdy9tZXNhLmM6IExpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglBZGQgc3VwcG9ydCBmb3IgdGhlIFRleHR1cmVBZGRyZXNzIHJlbmRlciBzdGF0ZS4KCjIwMDItMTItMTUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL01ha2VmaWxlLmluLCB0b29scy93aWRsL2hlYWRlci5jLCB0b29scy93aWRsL3dpZGwuYywKCSAgdG9vbHMvd2lkbC93aWRsLmg6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCU91dHB1dCByYXcgSUNPTS1sZXNzIEMvQysrIGludGVyZmFjZSBkZWZpbml0aW9ucyBieSBkZWZhdWx0LiBBZGRlZCBuZXcKCS1iIGFuZCAtQiBjb21tYW5kLWxpbmUgb3B0aW9ucyBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIElDT00gbWFjcm9zLgoKCSogdG9vbHMvd2luZW1ha2VyOiBKZWZmIFNtaXRoIDx3aHlkb3VidEBob3RtYWlsLmNvbT4KCVVwZGF0ZWQgd2luZW1ha2VyIHRvIGFjY291bnQgZm9yIGNoYW5nZSBpbiB3aW5lJ3MgbGlua2luZyBtZXRob2QuCgoJKiBkbGxzL3dpbm1tL21tc3lzdGVtLmMsIGRsbHMvd2lubW0vd2F2ZW1hcC93YXZlbWFwLmMsCgkgIGRsbHMvd2lubW0vd2lubW0uYywgaW5jbHVkZS9tbXN5c3RlbS5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUluIHRoZSBsYXRlc3Qgc2RrIHRoZSB7d2F2ZU91dCxtaWRpT3V0fXtHZXQsU2V0fVZvbHVtZSBmdW5jdGlvbnMgdGFrZQoJYSBoYW5kbGUgYXMgdGhlIGZpcnN0IHBhcmFtZXRlci4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOiBFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGhhbmd1cCBjb25kaXRpb24gYXQgdGhlIGVuZCBvZiBzb21lIHBsYXliYWNrLgoKCSogZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgdG9vbHMvd2luZWJ1aWxkL2J1aWxkLmgsCgkgIHRvb2xzL3dpbmVidWlsZC9pbXBvcnQuYywgdG9vbHMvd2luZWJ1aWxkL3BhcnNlci5jLAoJICB0b29scy93aW5lYnVpbGQvc3BlYzMyLmMsIHRvb2xzL3dpbmVidWlsZC93aW5lYnVpbGQubWFuLmluOgoJQWRkZWQgc3VwcG9ydCBmb3IgZGVmaW5pbmcgZm9yd2FyZCBmdW5jdGlvbnMgYXMgc3RkY2FsbCBzbyB0aGF0IHdlIGNhbgoJZ2V0IHRoZSBwcm9wZXIgbnVtYmVyIG9mIGFyZ3VtZW50cyBmb3Igc3RkY2FsbCBkZWNvcmF0aW9uLgoKCSogZGxscy9NYWtlZmlsZS5pbiwgZGxscy9NYWtldGVzdC5ydWxlcy5pbiwgZGxscy9tYWtlX2RsbHM6CglVc2UgaW1wb3J0IGxpYnJhcmllcyB3aGVuIGJ1aWxkaW5nIHRlc3RzIHRvby4gTWFrZSBzdXJlIHRoZSAuYQoJbGlicmFyaWVzIGFyZSBidWlsdCBmb3IgY3Jvc3N0ZXN0LgoKCSogcHJvZ3JhbXMvd2luZWRiZy9NYWtlZmlsZS5pbiwgdG9vbHMvd2lkbC9NYWtlZmlsZS5pbiwKCSAgdG9vbHMvd21jL01ha2VmaWxlLmluLCB0b29scy93cHAvTWFrZWZpbGUuaW4sIHRvb2xzL3dyYy9NYWtlZmlsZS5pbjoKCUFkZGVkIHkudGFiLltjaF0gcHNldWRvLWRlcGVuZGVuY2llcyB0byBmaXggcGFyYWxsZWwgbWFrZXMuCgoJKiBkbGxzL3dpbmVkb3MvTWFrZWZpbGUuaW4sIGRsbHMvd2luZWRvcy9kb3NleGUuaCwKCSAgZGxscy93aW5lZG9zL2hpbWVtLmMsIGRsbHMvd2luZWRvcy9pbnQzMS5jLAoJICBkbGxzL3dpbmVkb3MvaW50ZXJydXB0cy5jLCBkbGxzL3dpbmVkb3MvcmVsYXkuYywKCSAgZGxscy93aW5lZG9zL3dpbmVkb3MxNi5zcGVjOgoJSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJQWRkIHN1cHBvcnQgZm9yIERQTUkzMi4gTWFrZSB3aW5lZG9zMTYuZGxsIHVubmVjZXNzYXJ5LgoKCSogZGxscy9kZHJhdy9kM2RfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsCgkgIGRsbHMvZGRyYXcvZDNkdGV4dHVyZS5jLCBkbGxzL2RkcmF3L2QzZHZlcnRleGJ1ZmZlci5jLAoJICBkbGxzL2RkcmF3L2RkcmF3L21haW4uYywgZGxscy9kZHJhdy9kZHJhd19wcml2YXRlLmgsCgkgIGRsbHMvZGRyYXcvbWVzYS5jLCBkbGxzL2RkcmF3L21lc2FfcHJpdmF0ZS5oLAoJICBkbGxzL2RkcmF3L2RpcmVjdDNkL21lc2EuYywgZGxscy9kZHJhdy9kc3VyZmFjZS9tYWluLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJIC0gcmV3b3JrIGhvdyB0ZXh0dXJpbmcgaXMgZG9uZSBpbiB0aGUgRDNEIGRyaXZlcgoJIC0gYWRkZWQgdGhlIGdlbmVyaWMgcGF0aCBmb3IgRHJhd1ByaW1pdGl2ZSBBUEkgaW4gRDNEIDMgLyA3CgoJKiB0b29scy9taW5nd3JhcC5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJVGVhY2ggbWluZ3dyYXAgdG8gdXNlIHdpbmV3cmFwIHRvIGRvIHRoZSBsaW5raW5nLCBqdXN0IGxpa2UgZ2NjIHVzZXMKCWxkIHRvIGxpbmsgb24gVW5peC4gQmFzZWQgbG9vc2VseSBvbiBhIHVDbGliIHV0aWxpdHkgZGV2ZWxvcGVkIGJ5CglNYW51ZWwgTm92b2EgSUlJLgoKCSogdG9vbHMvTWFrZWZpbGUuaW4sIHRvb2xzL3dpbmV3cmFwLmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJU21hbGwgY2xlYW51cHMgdG8gbWF0Y2ggY3VycmVudCBidWlsZCBwcm9jZXNzLgoKCSogZGxscy9tc3ZpZGVvL2RyYXdkaWIuYzogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUZpeCBiYWQgbG9naWMgaW4gPT0gTlVMTCB0ZXN0LgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLCBkbGxzL3NoZWxsMzIvc2hmbGRyX2Rlc2t0b3AuYywKCSAgZGxscy9zaGVsbDMyL3NoZmxkcl9mcy5jLCBkbGxzL3NoZWxsMzIvc2hmbGRyX215Y29tcC5jOgoJUm9sZiBLYWxiZXJtYXR0ZXIgPHJvbGYua2FsYmVybWF0dGVyQGNpdGVuZy5jb20+CglBZGQgc3VwcG9ydCBmb3IgVW5pY29kZSBJRXh0cmFjdEljb24gY3JlYXRpb24gaW4KCUlTaGVsbEZvbGRlci0+R2V0VUlPYmplY3RPZi4KCgkqIGRsbHMvc2hlbGwzMi9mb2xkZXJzLmM6CglSb2xmIEthbGJlcm1hdHRlciA8cm9sZi5rYWxiZXJtYXR0ZXJAY2l0ZW5nLmNvbT4KCUZpeCBjcmFzaCB3aGVuIGNvbnN0cnVjdGluZyBBTlNJIGludGVyZmFjZSBwb2ludGVyIHRvIElFeHRyYWN0SWNvbiwKCWZvdW5kIGJ5IFV3ZSBCb25uZXMuCglBZGQgc29tZSB0cmFjZXMgdG8gdGhlIGNvbnN0cnVjdG9ycy4KCgkqIHRvb2xzL3dpZGwvaGVhZGVyLmMsIHRvb2xzL3dpZGwvcGFyc2VyLmwsIHRvb2xzL3dpZGwvcGFyc2VyLnksCgkgIHRvb2xzL3dpZGwvd2lkbHR5cGVzLmg6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUluY2x1ZGUgZ3VpZGRlZi5oIGluIHdpZGx0eXBlcy5oLgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglJZiB1bmFibGUgdG8gc2V0IHRoZSBkZXNpcmVkIGZvcm1hdCwgT1NTX1Jhd09wZW5EZXZpY2Ugc2hvdWxkIGNhbGwKCVRSQUNFLCBub3QgRVJSLgoKCSogZGxscy93aW5tbS93YXZlbWFwL3dhdmVtYXAuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglPdXIgcmVzYW1wbGluZyBhbGdvcml0aG0gaXMgcXVpdGUgcHJpbWl0aXZlIHNvIHRyeSBzaW1wbGUgOC8xNgoJbW9uby9zdGVyZW8gY29udmVyc2lvbnMgZmlyc3QuIE9ubHkgcmVzYW1wbGUgaWYgd2UgY2Fubm90IGF2b2lkIGl0LgoKCSogZGxscy9tc2FjbS9wY21jb252ZXJ0ZXIuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVVzZSBzbGlnaGx5IG1vcmUgYWNjdXJhdGUgZm9ybXVsYSBmb3IgQzgxNi4KCVdyYXAgYSBjb3VwbGUgb2YgY29tbWVudHMgdG8gODAgY29sdW1ucy4KCgkqIGRsbHMvd2lubW0vdGVzdHMvd2F2ZS5jLCBkbGxzL3dpbm1tL3dpbm1tLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJSWYgZ2l2ZW4gYSBiYWQgZGV2aWNlIGlkIHdhdmVPdXRHZXREZXZDYXBzQSBpcyBzdXBwb3NlZCB0byByZXR1cm4KCU1NU1lTRVJSX0JBRERFVklDRUlELiBGaXhlcyBhIHRvZG9fd2luZSBpbiB0aGUgd2lubW0gdGVzdC4KCjIwMDItMTItMTMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3NoZWxsMzIvY2xhc3Nlcy5jLCBkbGxzL3NoZWxsMzIvZGVidWdobHAuYywKCSAgZGxscy9zaGVsbDMyL2ZvbGRlcnMuYywgZGxscy9zaGVsbDMyL3BpZGwuYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsCgkgIGRsbHMvc2hlbGwzMi9zaGZsZHJfZGVza3RvcC5jLCBkbGxzL3NoZWxsMzIvc2hsZXhlYy5jOgoJUm9sZiBLYWxiZXJtYXR0ZXIgPHJvbGYua2FsYmVybWF0dGVyQGNpdGVuZy5jb20+CglBZGRlZCBVbmljb2RlIHZlcnNpb25zIG9mIHRoZSBIQ1JfIGludGVybmFsIGZ1bmN0aW9ucy4KCgkqIGRvY3VtZW50YXRpb24vdGVzdGluZy5zZ21sOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCURvY3VtZW50IGhvdyB0byBjcm9zcy1jb21waWxlIHRoZSB0ZXN0cyB3aXRoIE1pbkdXLgoKCSogcHJvZ3JhbXMvd2luZWNvbnNvbGUvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmVjb25zb2xlL2N1cnNlcy5jLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS9yZWdpc3RyeS5jLCBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZS5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBhIChuKWN1cnNlcyBiYWNrZW5kIHRvIHRoZSB3aW5lY29uc29sZS4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBsaWJyYXJ5L3BvcnQuYzoKCUJyYWQgQ2FtcGJlbGwgPGJyYWRAc2VtZS5jb20uYXU+CglBZGRlZCBhZGRpdGlvbmFsIHRlc3QgZm9yIGdjdnQgYXMgdUNsaWJjIGFwcGVhcnMgdG8gaGF2ZSB0aGlzIGFuZCBub3QKCWVjdnQuCgoJKiBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmM6IEp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCVdoZW4gYXN5bmNocm9ub3VzIHNpZ25hbHMgYXJlIGJsb2NrZWQsIGJsb2NrIGFsc28gU0lHVVNSMi4KCUZpeCByYWNlIHRoYXQgbWFkZSBzaWduYWwgaGFuZGxlciBmb3JnZXQgdG8gcmVzdG9yZSBGUyByZWdpc3Rlci4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzIuc3BlYywgZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmM6CglSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJSW1wbGVtZW50ZWQgU3RyU3RySVcuCgoJKiBkbGxzL2Rzb3VuZC9zb3VuZDNkLmM6IFJvayBNYW5kZWxqYyA8cm9rbWFuZGVsamNAaG90bWFpbC5jb20+CglJbXBsZW1lbnRhdGlvbiBvZiBJRGlyZWN0U291bmQzRExpc3RlbmVySW1wbF9TZXQqKCkuCgoJKiBkbGxzL2tlcm5lbC90aW1lLmMsIGRsbHMvbnRkbGwvdGltZS5jLCBpbmNsdWRlL3dpbmJhc2UuaDoKCUF2b2lkIGNhc3RzIGJldHdlZW4gTEFSR0VfSU5URUdFUiBhbmQgRklMRVRJTUUuCglGaXhlZCBkYXkgb2Ygd2VlayBvZiBlcG9jaC4KCVNtYWxsIGNsZWFudXBzLgoKCSogZGxscy9NYWtlZGxsLnJ1bGVzLmluLCBkbGxzL01ha2V0ZXN0LnJ1bGVzLmluOgoJRml4ZWQgc29tZSBkZXBlbmRlbmNpZXMuCgoJKiBkbGxzL2tlcm5lbC90aW1lLmMsIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sIGZpbGVzL2Rvc19mcy5jLAoJICBmaWxlcy9maWxlLmMsIHdpbjMyL3RpbWUuYzoKCUd59nJneSAnTm9nJyBKZW5leSA8bm9nQHNkZi5sb25lc3Rhci5vcmc+CgktIFJlaW1wbGVtZW50IHRpbWUgZnVuY3Rpb25zIHVzaW5nIG50ZGxsIGZ1bmN0aW9ucy4KCS0gU29tZSBjbGVhbnVwcy4KCgkqIGRsbHMvbmV0YXBpMzIvYWNjZXNzLmMsIGRsbHMvbmV0YXBpMzIvbmV0YXBpMzIuc3BlYywKCSAgaW5jbHVkZS9sbWVyci5oOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQGFsdW0ud3BpLmVkdT4KCVN0dWIgTmV0R2V0RENOYW1lKCkuICBBZGQgaW4gdGhlIHJlc3Qgb2YgdGhlIE5FUlJfKiBkZWZpbmVzLgoKCSogZGxscy9kc291bmQvdGVzdHMvTWFrZWZpbGUuaW4sIGRsbHMvZHNvdW5kL3Rlc3RzL2Rzb3VuZC5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUV4dGVuZCB0aGUgdGVzdCBieSBjcmVhdGluZyBhIFByaW1hcnlCdWZmZXIgb2JqZWN0IGFuZCBwZXJmb3JtIGEgZmV3CgliYXNpYyB0ZXN0cyBzdWNoIGFzIHF1ZXJ5aW5nIGl0cyBjaGFyYWN0ZXJpc3RpY3MgYW5kIGNoYW5naW5nIGl0cwoJZm9ybWF0LgoJQ2hhbmdpbmcgdGhlIGZvcm1hdCByZXF1aXJlcyB0aGF0IHdlIGNhbGwgU2V0Y29vcGVyYXRpdmVMZXZlbCBmaXJzdCwKCXdoaWNoIG1lYW5zIHdlIG5lZWQgYW4gaHduZC4gU28gdGhlIHRlc3QgbXVzdCBub3cgbGluayB3aXRoCgl1c2VyMzIuZGxsLgoKCSogZGxscy9kc291bmQvYnVmZmVyLmMsIGRsbHMvZHNvdW5kL3ByaW1hcnkuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglJRGlyZWN0U291bmRCdWZmZXIuR2V0Q2FwcyBzaG91bGQgZmFpbCBpZiBjYXBzLmR3U2l6ZSBpcyBub3Qgc2V0LgoKCSogZGxscy9kM2Q4L2RldmljZS5jOiBKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJVGhhbmtzIHRvIEx1Y2hvLCB0ZXh0IHN1cHBvcnQgaW4gc2FtcGxlcyBub3cgc3RhcnRzIHRvCglhcHBlYXIuIFRleHR1cmVzIG5vdyBzYXZlZCBpbiBzdGF0ZSBibG9ja3MsIGFuZCBjb3JyZWN0IEZWRidzIHVzZWQgZm9yCglkcmF3aW5nLgoKCSogREVWRUxPUEVSUy1ISU5UUywgY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvd2lubW0vd2luZWphY2svLmN2c2lnbm9yZSwgZGxscy93aW5tbS93aW5lamFjay9NYWtlZmlsZS5pbiwKCSAgZGxscy93aW5tbS93aW5lamFjay9hdWRpby5jLCBkbGxzL3dpbm1tL3dpbmVqYWNrL2phY2suYywKCSAgZGxscy93aW5tbS93aW5lamFjay9qYWNrLmgsIGRsbHMvd2lubW0vd2luZWphY2svd2luZWphY2suZHJ2LnNwZWMsCgkgIGRvY3VtZW50YXRpb24vc2FtcGxlcy9jb25maWcsIGluY2x1ZGUvY29uZmlnLmguaW46CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5AYWx1bS53cGkuZWR1PgoJQWRkIHN1cHBvcnQgZm9yIEphY2sgYXVkaW8gc2VydmVyLgoKCSogZGxscy9tc2FjbS9wY21jb252ZXJ0ZXIuYywgZGxscy93aW5tbS93YXZlbWFwL3dhdmVtYXAuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglBZGQgc3VwcG9ydCBmb3IgdGhlIDQ4IGFuZCA5NmtIeiBmb3JtYXRzLgoKCSogZGxscy9zaGVsbDMyL2NvbnRyb2wuYywgZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYzoKCVJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CgktIENoYW5nZSBsYXVuY2ggZnVuY3Rpb25zIHRvIHVzZSB1bmljb2RlIGFuZCBpbXBsZW1lbnQgQ29udHJvbF9SdW5ETExXLgoJLSBFbmFibGUgc3VwcG9ydCBmb3IgdW5pY29kZSBpbiBjb250cm9sIHBhbmVsIGFwcGxpY2F0aW9ucy4KCgkqIGxvYWRlci90YXNrLmM6CglEb24ndCBjcmFzaCBpbiBEaXJlY3RlZFlpZWxkMTYgaWYgbm8gb3RoZXIgdGFzayBpcyBydW5uaW5nLgoKCSogdG9vbHMvLmN2c2lnbm9yZSwgdG9vbHMvTWFrZWZpbGUuaW4sIHRvb2xzL3dpbmV3cmFwLmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJTmV3IHdpbmUgYnVpbGQgdXRpbGl0eSB0aGF0IHNob3VsZCBtYWtlIGl0IGVhc3kgZm9yIFdpbmVsaWIgYXBwcyB0bwoJbGluaywgYW5kIGdlbmVyYXRlIGFuIGV4ZWN1dGFibGUuCgoJKiBkbGxzL3NoZWxsMzIvY2hhbmdlbm90aWZ5LmMsIGRsbHMvc2hlbGwzMi9jbGlwYm9hcmQuYywKCSAgZGxscy9zaGVsbDMyL2RhdGFvYmplY3QuYywgZGxscy9zaGVsbDMyL2RpYWxvZ3MuYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGRsbHMvc2hlbGwzMi9zaGZsZHJfZnMuYywKCSAgZGxscy9zaGVsbDMyL3NobGV4ZWMuYywgZGxscy9zaGVsbDMyL3NobHZpZXcuYywKCSAgZGxscy9zaGVsbDMyL3Nodl9pdGVtX2NtZW51LmM6CglSb2xmIEthbGJlcm1hdHRlciA8cm9sZi5rYWxiZXJtYXR0ZXJAY2l0ZW5nLmNvbT4KCUZpeGVkIHNvbWUgc2lnbmVkL3Vuc2lnbmVkIGNvbXBhcmlzb24gd2FybmluZ3MuCgoJKiBkbGxzL3dpbm1tL3dpbmVhbHNhL2F1ZGlvLmM6CglOaWtvbGF5IFN0ZWZhbm92IDxuc3RlZmFub3ZAY3MubWFuLmFjLnVrPgoJRml4IGlzc3VlcyB3aXRoIGk4MTAtYmFzZWQgYXVkaW8gY2FyZHMuCglTdXBwb3J0IGZvciB1c2VyLXNlbGVjdGFibGUgYXVkaW8gY2FyZHMgdGhyb3VnaCB0aGUgQUxTQV9DQVJECgllbnZpcm9ubWVudCB2YXJpYWJsZSAoTS5NaXJvc2xhd0BlbGthLnB3LmVkdS5wbCkuCgoJKiBkbGxzL2NvbWN0bDMyL2FuaW1hdGUuYzoKCVJvbGYgS2FsYmVybWF0dGVyIDxyb2xmLmthbGJlcm1hdHRlckBjaXRlbmcuY29tPgoJVHlwbyBmb3VuZCBieSBjb21waWxpbmcgd2l0aCBzdGFuZGFyZCBNU1ZDIHdhcm5pbmcgbGV2ZWwuCgoJKiBkb2N1bWVudGF0aW9uL2ZhcS5zZ21sOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUNoYW5nZSAnR2V0dGluZy1XaW5lJyB0byAnRkFRLUdldHRpbmctV2luZScgc2luY2UgdGhlIGZvcm1lciBpcwoJYWxyZWFkeSB1c2VkIGluIGdldHRpbmcuc2dtbC4KCgkqIGRvY3VtZW50YXRpb24vZ2V0dGluZy5zZ21sOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVR3ZWFrIHRoZSBzY3JlZW4gc2VjdGlvbnMuCglBZGQgdmFyaW91cyB0YWdzIHN1Y2ggYXM6IHByb21wdCwgdXNlcmlucHV0LCByZXBsYWNlYWJsZSwgZmlsZW5hbWUuCglVc2UgJzwvPicgdG8gY2xvc2UgdGFncy4KCgkqIGluY2x1ZGUvcnBjLmgsIGluY2x1ZGUvd2luZG93cy5oOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVVwZGF0ZWQgdGhlICNpbmNsdWRlIGRpcmVjdGl2ZXMgdG8gbWF0Y2ggdGhlIGxhdGVzdCBXaW5kb3dzIFNESyBhbmQgdG8KCWluY2x1ZGUgb3VyIG5ldyBoZWFkZXJzLgoKCSogZGxscy9kc291bmQvc291bmQzZC5jOiBSb2sgTWFuZGVsamMgPHJva21hbmRlbGpjQGhvdG1haWwuY29tPgoJSW1wbGVtZW50ZWQgSURpcmVjdFNvdW5kM0RCdWZmZXJJbXBsX1NldCooKS4KCgkqIGRsbHMvc2hlbGwzMi9icnNmb2xkZXIuYzoKCVJvbGYgS2FsYmVybWF0dGVyIDxyb2xmLmthbGJlcm1hdHRlckBjaXRlbmcuY29tPgoJRml4IFNIQnJvd3NlRm9yRm9sZGVyIFcgLT4gQSBjYWxscy4KCjIwMDItMTItMTIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC9jb21wdXRlcm5hbWUuYywgZGxscy9rZXJuZWwvY29uc29sZS5jLAoJICBkbGxzL21zdmNydC9jcHBleGNlcHQuYywgZGxscy9tc3ZjcnQvZXhjZXB0LmMsCgkgIGRsbHMvbnRkbGwvZGVidWd0b29scy5jLCBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jLAoJICBkbGxzL250ZGxsL2xvYWRlci5jLCBkbGxzL250ZGxsL3NlYy5jLCBkbGxzL3VzZXIvbHN0ci5jLAoJICBkbGxzL3dpbmVkb3MvZG9zdm0uYywgZGxscy93aW5pbmV0L2ludGVybmV0LmMsIGZpbGVzL2Rvc19mcy5jLAoJICBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL2V4Y3B0LmgsIGluY2x1ZGUvbXN2Y3J0L2V4Y3B0LmgsCgkgIGluY2x1ZGUvd2luZG93cy5oLCBsb2FkZXIvbmUvbW9kdWxlLmMsIGxvYWRlci9yZXNvdXJjZS5jLAoJICBtZW1vcnkvZ2xvYmFsLmMsIG1lbW9yeS9zdHJpbmcuYywgbWVtb3J5L3ZpcnR1YWwuYywKCSAgcHJvZ3JhbXMvd2luZWRiZy9kYmcueSwgcHJvZ3JhbXMvd2luZWRiZy93aW5lZGJnLmMsIHJlbGF5MzIvc25vb3AuYywKCSAgd2luMzIvZXhjZXB0LmMsIHdpbmRvd3MvY3Vyc29yaWNvbi5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCU1vdmUgZXhjcHQuaCBvdXQgb2YgaW5jbHVkZS9tc3ZjcnQvIGFzIGl0IGRvZXMgbm90IGNvbmZsaWN0IHdpdGggYW55CglzdGFuZGFyZCBVbml4IGhlYWRlci4KCgkqIHByb2dyYW1zL2V4cGFuZC9leHBhbmQuYzogRml4ZWQgTFpDb3B5IHJldHVybiB2YWx1ZSBjaGVjay4KCgkqIGRsbHMvZHNvdW5kL3NvdW5kM2QuYzogUm9rIE1hbmRlbGpjIDxyb2ttYW5kZWxqY0Bob3RtYWlsLmNvbT4KCUltcGxlbWVudGVkIElEaXJlY3RTb3VuZDNETGlzdGVuZXJJbXBsX0dldCooKSBmdW5jdGlvbnMuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwuYzoKCVJvbGYgS2FsYmVybWF0dGVyIDxyb2xmLmthbGJlcm1hdHRlckBjaXRlbmcuY29tPgoJQ2xlYW51cCBJbnRlcm5hbEV4dHJhY3RJY29uRXguIFRoZSBQcml2YXRlRXh0cmFjdEljb25zIGZ1bmN0aW9ucwoJc2hvdWxkIGFsc28gaGFuZGxlIHRoZSBjYXNlIGZvciAzMmJpdCBQRSBhbmQgMTZiaXQgTkUgZmlsZXMgc28gbm8gbmVlZAoJdG8gZG8gdGhpcyBoZXJlIGluIGEgZGlmZmVyZW50IHdheSwgdG9vLgoKCSogZGxscy9zaGVsbDMyL3BpZGwuYzogUm9sZiBLYWxiZXJtYXR0ZXIgPHJvbGYua2FsYmVybWF0dGVyQGNpdGVuZy5jb20+CglSZXNvbHZlIFNIR2V0UGF0aEZyb21JRExpc3RXIC0+ICBTSEdldFBhdGhGcm9tSURMaXN0QSBjYWxsLgoJUmVtb3ZlIEZpeG1lIGNvbW1lbnQgaW4gU0hHZXRQYXRoRnJvbUlETGlzdCBhcyBTdHJSZXRUb1N0ck4gc2hvdWxkCgl0YWtlIGNhcmUgb2YgdGhpcy4KCUdldCByaWQgb2Ygc29tZSB1bnNpZ25lZC9zaWduZWQgY29tcGFyaXNvbiB3YXJuaW5ncyB3aXRoIGRlZmF1bHQKCXdhcm5pbmdzIGluIE1TVkMuCgoJKiBkbGxzL3NoZWxsMzIvZm9sZGVycy5jOgoJUm9sZiBLYWxiZXJtYXR0ZXIgPHJvbGYua2FsYmVybWF0dGVyQGNpdGVuZy5jb20+CglJbXBsZW1lbnQgSUV4dHJhY3RJY29uVyBhbmQgaW5oZXJpdCBJRXh0cmFjdEljb25BIGZyb20gaXQuCgoJKiBkbGxzL3VzZXIvZXh0aWNvbi5jOiBSb2xmIEthbGJlcm1hdHRlciA8cm9sZi5rYWxiZXJtYXR0ZXJAY2l0ZW5nLmNvbT4KCUZpeCBhIHBvc3NpYmxlIG1lbW9yeSBsZWFrIHdoZW4gZXh0cmFjdGluZyBmcm9tIGFuIElDTyBmaWxlLgoJRml4IHNvbWUgc2lnbmVkL3Vuc2lnbmVkIHdhcm5pbmdzIHNob3dpbmcgdXAgaW4gTVNWQyB3aXRoIGRlZmF1bHQKCXdhcm5pbmcgbGV2ZWwuCglGaXggcG9zc2libGUgcHJvYmxlbSB3aXRoIHNob3J0IFBJTUFHRV9OVF9IRUFERVJTLgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliLmM6IEFsYmVydG8gTWFzc2FyaSA8YWxieUBleGxuLmNvbT4KCUltcGxlbWVudGVkIERpc3BDYWxsRnVuYyBzbyB0aGF0IGl0IHdvcmtzIHdoZW4gY2FsbGluZyBldmVudCBoYW5kbGVycwoJdGhhdCBoYXZlIG5vIHJldHVybiB2YWx1ZS4KCgkqIGRsbHMvb2xlYXV0MzIvc2FmZWFycmF5LmM6IEFsYmVydG8gTWFzc2FyaSA8YWxieUBleGxuLmNvbT4KCUNhbGxpbmcgU2FmZUFycmF5RGVzdHJveSBvbiBhIGRlc3Ryb3llZCBhcnJheSBzaG91bGQgYmUgYSBuby1vcC4KCgkqIGRsbHMvZHNvdW5kL3NvdW5kM2QuYzogUm9rIE1hbmRlbGpjIDxyb2ttYW5kZWxqY0Bob3RtYWlsLmNvbT4KCUltcGxlbWVudGVkIHNvbWUgc3R1YnMuCgoJKiB0b29scy93aW5lbWFrZXI6IEplZmYgU21pdGggPHdoeWRvdWJ0QGhvdG1haWwuY29tPgoJQWRkICdkaXN0Y2xlYW4nIHRhcmdldCB0byB3aW5lbWFrZXItZ2VuZXJhdGVkIHByb2plY3RzLgoKCSogZGxscy93aW5tbS9sb2x2bGRydi5jLCBkbGxzL3dpbm1tL3dpbmVvc3MvbWlkaS5jOgoJSmVmZiBTbWl0aCA8d2h5ZG91YnRAaG90bWFpbC5jb20+CglNTURSVl9HZXREZXNjcmlwdGlvbjMyIGZpeCArIGEgZmV3IGNvc21ldGljIGltcHJvdmVtZW50cy4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL2xvY2FsZS5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCU1lbnRpb24gdGhlIGFwcGxpY2F0aW9ucyB0aGF0IGRlcGVuZCBvbiB0aGUgYmVoYXZpb3IgY2hlY2tlZCBieSB0aGUKCUdldExvY2FsZUluZm9BIHBhcnRpYWwgYnVmZmVyIHRlc3QuCgoJKiBkbGxzL29sZWF1dDMyL3RtYXJzaGFsLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUmV2ZXJ0ZWQgbGFzdCBWVF9VU0VSREVGSU5FRCBwYXRjaCAod2FzIGJyb2tlbikuCglNYXJzaGFsIFRLSU5EX0RJU1BBVENIIGludGVyZmFjZXMganVzdCBsaWtlIFRLSU5EX0lOVEVSRkFDRS4KCgkqIGRsbHMvb2xlYXV0MzIvTWFrZWZpbGUuaW4sIGRsbHMvb2xlYXV0MzIvZGlzcGF0Y2guYywKCSAgZGxscy9vbGVhdXQzMi9vbGUyZGlzcC5jLCBkbGxzL29sZWF1dDMyL29sZWF1dC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTZXBhcmF0ZWQgb3V0IDE2Yml0IHNvdXJjZXMgZm9yIG9sZTJkaXNwLmRsbC4KCgkqIHRvb2xzL3dyYy93cmMuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCURvIG5vdCBkaXNwbGF5IHRoZSBsb25nIG9wdGlvbnMgaW4gdGhlIHVzYWdlIG1lc3NhZ2UgaWYgd2UgZG9uJ3QKCWFjdHVhbGx5IHN1cHBvcnQgdGhlbS4gU21hbGwgb3RoZXIgY2xlYW51cHMuCgoJKiBkbGxzL250ZGxsL2Nkcm9tLmM6IEFsZXggUGFzYWR5biA8YWpwQG1haWwudXRleGFzLmVkdT4KCUZpeCByZXR1cm4gZnJvbSBJT0NUTF9DRFJPTV9DSEVDS19WRVJJRlkuCgoJKiBkbGxzL3dpbm1tL3Rlc3RzL3dhdmUuYywgZGxscy93aW5tbS93YXZlbWFwL3dhdmVtYXAuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglGaXggZXJyb3IgcmVwb3J0aW5nIGluIHdhdmVtYXAuYzp3b2RPcGVuKCk7IHRoaXMgc29sdmVzIHRoZQoJd2F2ZU91dE9wZW4gcHJvYmxlbSBzbyB0aGF0IHdlIGNhbiByZW1vdmUgdGhlIHRvZG9fd2luZS4KCVdpbjl4IGRvZXMgbm90IHN1cHBvcnQgV0FWRV9GT1JNQVRfRElSRUNULgoJRG9uJ3QgY2hlY2sgdGhlIGZvcm1hdCBpZiB0aGUgd2F2ZU91dE9wZW4gY29tbWFuZCBmYWlsZWQuCglVc2UgdHJhY2UsIG5vdCB3aW5ldGVzdF90cmFjZSEKCgkqIGxvYWRlci9uZS9tb2R1bGUuYzogQWxzbyB0cmFjZSBpbXBsaWNpdGx5IGxvYWRlZCBkbGxzIGZvciArbG9hZGRsbC4KCgkqIGRsbHMvYWR2YXBpMzIvLmN2c2lnbm9yZSwgZGxscy9hdmlmaWwzMi8uY3ZzaWdub3JlLAoJICBkbGxzL2NhYmluZXQvLmN2c2lnbm9yZSwgZGxscy9jb21tZGxnLy5jdnNpZ25vcmUsCgkgIGRsbHMvY3J5cHQzMi8uY3ZzaWdub3JlLCBkbGxzL2QzZDgvLmN2c2lnbm9yZSwKCSAgZGxscy9kY2ltYW4zMi8uY3ZzaWdub3JlLCBkbGxzL2RkcmF3Ly5jdnNpZ25vcmUsCgkgIGRsbHMvZGV2ZW51bS8uY3ZzaWdub3JlLCBkbGxzL2RpbnB1dDgvLmN2c2lnbm9yZSwKCSAgZGxscy9kcGxheS8uY3ZzaWdub3JlLCBkbGxzL2Rzb3VuZC8uY3ZzaWdub3JlLCBkbGxzL2dkaS8uY3ZzaWdub3JlLAoJICBkbGxzL2dsdTMyLy5jdnNpZ25vcmUsIGRsbHMvaWNtcC8uY3ZzaWdub3JlLCBkbGxzL2ltbTMyLy5jdnNpZ25vcmUsCgkgIGRsbHMva2VybmVsLy5jdnNpZ25vcmUsIGRsbHMvbHpleHBhbmQvLmN2c2lnbm9yZSwKCSAgZGxscy9tcHIvLmN2c2lnbm9yZSwgZGxscy9tc2FjbS8uY3ZzaWdub3JlLCBkbGxzL21zZG1vLy5jdnNpZ25vcmUsCgkgIGRsbHMvbXNpbWczMi8uY3ZzaWdub3JlLCBkbGxzL21zbmV0MzIvLmN2c2lnbm9yZSwKCSAgZGxscy9tc3ZjcnQvLmN2c2lnbm9yZSwgZGxscy9tc3ZjcnQyMC8uY3ZzaWdub3JlLAoJICBkbGxzL21zdmlkZW8vLmN2c2lnbm9yZSwgZGxscy9tc3ZpZGVvL21zcmxlMzIvLmN2c2lnbm9yZSwKCSAgZGxscy9uZXRhcGkzMi8uY3ZzaWdub3JlLCBkbGxzL250ZGxsLy5jdnNpZ25vcmUsCgkgIGRsbHMvb2RiYzMyLy5jdnNpZ25vcmUsIGRsbHMvb2xlMzIvLmN2c2lnbm9yZSwKCSAgZGxscy9vbGVhdXQzMi8uY3ZzaWdub3JlLCBkbGxzL29sZWNsaS8uY3ZzaWdub3JlLAoJICBkbGxzL29sZWRsZy8uY3ZzaWdub3JlLCBkbGxzL29sZXBybzMyLy5jdnNpZ25vcmUsCgkgIGRsbHMvb3BlbmdsMzIvLmN2c2lnbm9yZSwgZGxscy9wc2FwaS8uY3ZzaWdub3JlLAoJICBkbGxzL3FjYXAvLmN2c2lnbm9yZSwgZGxscy9xdWFydHovLmN2c2lnbm9yZSwKCSAgZGxscy9yYXNhcGkzMi8uY3ZzaWdub3JlLCBkbGxzL3JwY3J0NC8uY3ZzaWdub3JlLAoJICBkbGxzL3NlcmlhbHVpLy5jdnNpZ25vcmUsIGRsbHMvc2V0dXBhcGkvLmN2c2lnbm9yZSwKCSAgZGxscy9zaGVsbDMyLy5jdnNpZ25vcmUsIGRsbHMvc2hmb2xkZXIvLmN2c2lnbm9yZSwKCSAgZGxscy9zbm1wYXBpLy5jdnNpZ25vcmUsIGRsbHMvc3RpLy5jdnNpZ25vcmUsCgkgIGRsbHMvdHR5ZHJ2Ly5jdnNpZ25vcmUsIGRsbHMvdXJsLy5jdnNpZ25vcmUsIGRsbHMvdXJsbW9uLy5jdnNpZ25vcmUsCgkgIGRsbHMvdXNlci8uY3ZzaWdub3JlLCBkbGxzL3ZlcnNpb24vLmN2c2lnbm9yZSwKCSAgZGxscy93aW4zMnMvLmN2c2lnbm9yZSwgZGxscy93aW5hc3BpLy5jdnNpZ25vcmUsCgkgIGRsbHMvd2luZWRvcy8uY3ZzaWdub3JlLCBkbGxzL3dpbmVwcy8uY3ZzaWdub3JlLAoJICBkbGxzL3dpbmluZXQvLmN2c2lnbm9yZSwgZGxscy93aW5tbS8uY3ZzaWdub3JlLAoJICBkbGxzL3dpbm5scy8uY3ZzaWdub3JlLCBkbGxzL3dpbnNvY2svLmN2c2lnbm9yZSwKCSAgZGxscy93aW5zcG9vbC8uY3ZzaWdub3JlLCBkbGxzL3dpbnRydXN0Ly5jdnNpZ25vcmUsCgkgIGRsbHMvd293MzIvLmN2c2lnbm9yZSwgZGxscy93c29jazMyLy5jdnNpZ25vcmUsCgkgIGRsbHMveDExZHJ2Ly5jdnNpZ25vcmU6CglBZGRlZCAuc3BlYy5kZWYgZmlsZXMuCgoJKiBNYWtlLnJ1bGVzLmluLCBNYWtlZmlsZS5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuYWMsCgkgIGRsbHMvTWFrZWRsbC5ydWxlcy5pbiwgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9jb21tZGxnL01ha2VmaWxlLmluLAoJICBkbGxzL21ha2VfZGxscywgZGxscy93aW5lcHMvTWFrZWZpbGUuaW4sIHRvb2xzL3dpbmVidWlsZC9pbXBvcnQuYywKCSAgdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jOgoJSW1wbGVtZW50ZWQgaW1wb3J0IGxpYnJhcmllczsgb24gVW5peCB3ZSBpbXBvcnQgdGhlIC5kZWYgZmlsZQoJZGlyZWN0bHksIG9uIE1pbmd3IHdlIHVzZSBpdCB0byBidWlsZCB0aGUgLmEgbGlicmFyeS4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBpbmNsdWRlL2NvbmZpZy5oLmluLAoJICB0b29scy93aW5lYnVpbGQvYnVpbGQuaCwgdG9vbHMvd2luZWJ1aWxkL21haW4uYywKCSAgdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jLCB0b29scy93aW5lYnVpbGQvd2luZWJ1aWxkLm1hbi5pbjoKCU1hZGUgc3RkY2FsbCBkZWNvcmF0aW9uIGluIC5kZWYgZmlsZXMgdGhlIGRlZmF1bHQsIGFuZCBhZGRlZCAtayBvcHRpb24KCXRvIHN3aXRjaCBpdCBvZmYuCgoJKiBkbGxzL29sZWF1dDMyL01ha2VmaWxlLmluLCBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYywKCSAgZGxscy9vbGVhdXQzMi90eXBlbGliMTYuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJU3BsaXQgb3V0IDE2Yml0IGNvZGUgaW50byB0eXBlbGliMTYuYy4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL2xvY2FsZS5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCURvbid0IHRlc3Qgd2hldGhlciBHZXR7Q3VycmVuY3ksRGF0ZSxOdW1iZXIsVGltZX1Gb3JtYXRBIHdyaXRlcyBhcwoJbXVjaCBhcyBwb3NzaWJsZSBpbiB0aGUgYnVmZmVyIGV2ZW4gaWYgaXQgaXMgdG9vIHNtYWxsLiBUaGlzIGlzCgl1bmRvY3VtZW50ZWQgYW5kIGRvZXMgbm90IG1hdGNoIHRoZSBXaW45eCBiZWhhdmlvci4KCVNraXAgVW5pY29kZSB0ZXN0cyBvbiBXaW45eC4KCUZpeCB1c2FnZSBvZiBtZW1zZXQvc2l6ZW9mL0NPVU5UT0YuCglGaXggc2lnbmVkL3Vuc2lnbmVkIHdhcm5pbmdzIChpbiBNU1ZDKSBieSB1c2luZyBsc3RybGVuQSBpbnN0ZWFkIG9mCglzdHJsZW4uCgoJKiBvbGUvb2xlMm5scy5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUluIEdldHtDdXJyZW5jeSxOdW1iZXJ9Rm9ybWF0QSwgU2V0TGFzdEVycm9yIHRvCglFUlJPUl9JTlNVRkZJQ0lFTlRfQlVGRkVSIGlmIHRoZSBidWZmZXIgaXMgdG9vIHNtYWxsLgoKCSogZGxscy9nbHUzMi9nbHUzMi5zcGVjLCBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBZGQgc3R1YnMgZm9yIG1pc3NpbmcgQVBJcy4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL2RpcmVjdG9yeS5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVNraXAgdGhlIFVuaWNvZGUgdGVzdHMgb24gV2luOXguCglUZXN0IEdldHtTeXN0ZW0sV2luZG93c31EaXJlY3Rvcnl7QSxXfShOVUxMLCAwKS4gVGhpcyBpcyBhIG1vcmUKCXN0YW5kYXJkIHdheSB0byBnZXQgbGVuX3dpdGhfbnVsbCB0b28uCglBZGFwdCB0aGUgZXJyb3IgY29kZSBjaGVja3MgdG8gdGFrZSBpbnRvIGFjY291bnQgdmFyaWF0aW9ucyBiZXR3ZWVuCglXaW45eCBhbmQgTlQuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9maWxlLmMsIGZpbGVzL2ZpbGUuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRml4IHRoZSBlcnJvciBjb2RlcyByZXR1cm5lZCBieSBEZWxldGVGaWxle0EsV30gdG8gbWF0Y2ggTlQuCglBZGFwdCB0aGUgRGVsZXRlRmlsZUEgZXJyb3IgY29kZSBjaGVja3MgdG8gdGFrZSBpbnRvIGFjY291bnQgdmFyaWF0aW9ucwoJYmV0d2VlbiBXaW45eCBhbmQgTlQuCglUZXN0IERlbGV0ZUZpbGUoTlVMTCkuCglBZGQgdGVzdHMgZm9yIERlbGV0ZUZpbGVXLgoJT24gTlQsIGNhbGxpbmcgX2xjbG9zZSBvbiBhbiBhbHJlYWR5IGNsb3NlZCBoYW5kbGUgd2lsbCBjYXVzZSBtZW1vcnkKCWNvcnJ1cHRpb24gYW5kIHRodXMgc29tZXRpbWVzIGNyYXNoIC0+IHJlbW92ZWQgdGhlIHJlbGV2YW50IHRlc3QuCglTa2lwIHRoZSBVbmljb2RlIHRlc3RzIHdoZW4gb24gV2luOXguCgoJKiBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYywgZGxscy9tc3ZjcnQyMC9tc3ZjcnQyMC5zcGVjLAoJICBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvd2luc29jay93czJfMzIuc3BlYywKCSAgZGxscy93c29jazMyL3dzb2NrMzIuc3BlYywgdG9vbHMvd2luZWJ1aWxkL2J1aWxkLmgsCgkgIHRvb2xzL3dpbmVidWlsZC9pbXBvcnQuYywgdG9vbHMvd2luZWJ1aWxkL3BhcnNlci5jLAoJICB0b29scy93aW5lYnVpbGQvc3BlYzMyLmMsIHRvb2xzL3dpbmVidWlsZC93aW5lYnVpbGQubWFuLmluOgoJQWRkZWQgbGlzdCBvZiBzeW1ib2xzIHRvIGlnbm9yZSBieSBkZWZhdWx0IGluIHdpbmVidWlsZC4KCU1hZGUgdGhlIC1pIG9wdGlvbiBzdXBwb3J0IHJlbW92aW5nIGlnbm9yZWQgc3ltYm9scyB0b28uCglSZW1vdmVkIHRoZSAtbm9pbXBvcnQgZmxhZyBpbiBzcGVjIGZpbGVzLgoKCSogdG9vbHMvbWluZ3dyYXAuYzogV2FybmluZyBmaXguCgoJKiBkbGxzL29sZTMyL2JpbmRjdHguYywgZGxscy9vbGUzMi9vbGUzMi5zcGVjOgoJUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCUltcGxlbWVudGVkIEJpbmRNb25pa2VyIGZ1bmN0aW9uLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jOgoJUm9sZiBLYWxiZXJtYXR0ZXIgPHJvbGYua2FsYmVybWF0dGVyQGNpdGVuZy5jb20+CglGaXggc2hlbGwzMi5FeHRyYWN0SWNvbiB3aXRoIEEtPlcgYW5kIDE2IC0+IDMyIGNhbGxzLgoKCSogZGxscy93aW5pbmV0L3dpbmluZXQuc3BlYzogQWxiZXJ0byBNYXNzYXJpIDxhbGJ5QGV4bG4uY29tPgoJQWRkZWQgc3R1YnMgZm9yIEZ0cENvbW1hbmRbQXxXXS4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL2NvZGVwYWdlLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJVGhlIFdpbjl4IHBsYXRmb3JtcyBzdXBwb3J0IFdpZGVDaGFyVG9NdWx0aUJ5dGUgYW5kCglNdWx0aUJ5dGVUb1dpZGVDaGFyIGJ1dCBub3QgbHN0cmNtcFchIFNvIEkgaW1wbGVtZW50ZWQgb3VyIG93biBzbwoJdGhhdCB3ZSBjYW4gaGF2ZSBhIG1lYW5pbmdmdWwgdGVzdC4KCgkqIG1zZG9zL2Rvc21lbS5jOiBKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglHaXZlIERPUyBhcHBsaWNhdGlvbnMgNjM4ayBvZiBmcmVlIGNvbnZlbnRpb25hbCBtZW1vcnkuCgoJKiBkbGxzL29sZWF1dDMyL3RtYXJzaGFsLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJU2VyaWFsaXplL2Rlc2VyaWFsaXplIGFsbCByZWZ0eXBlcyBpbiBWVF9VU0VSREVGSU5FRC4KCgkqIGRsbHMvdXNlci90ZXN0cy9jbGFzcy5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVNraXAgdGhlIFVuaWNvZGUgdGVzdHMgKGVmZmVjdGl2ZWx5IGFsbCB0ZXN0cyBjdXJyZW50bHkpIG9uIFdpbjl4LgoKMjAwMi0xMi0xMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIE1ha2UucnVsZXMuaW4sIGRsbHMvZ2RpL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwKCSAgZGxscy9zaGVsbDMyL01ha2VmaWxlLmluLCBkbGxzL3VzZXIvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL3dpbmhlbHAvTWFrZWZpbGUuaW46CglQYXNzIHRoZSAtSiBvcHRpb24gdG8gd3JjIHRvIGF2b2lkIGluY2x1ZGluZyBpbnN0YWxsZWQgaGVhZGVycy4KCgkqIHRvb2xzL21pbmd3cmFwLmM6CglXaW5lIGludGVybmFsIGluY2x1ZGVzIHNob3VsZCBub3QgYmUgaW4gdGhlIGluY2x1ZGUgcGF0aC4KCgkqIHRvb2xzL3dyYy9NYWtlZmlsZS5pbiwgdG9vbHMvd3JjL3dyYy5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCXdyYyBzaG91bGQgYmUgYXdhcmUgb2YgdGhlIGxvY2F0aW9uIG9mIHRoZSBzeXN0ZW0gaGVhZGVycy4KCgkqIHRvb2xzL2NvbmZpZy5ndWVzcywgdG9vbHMvY29uZmlnLnN1YjogVXBkYXRlZCB0byB0aGUgbGF0ZXN0IHZlcnNpb24uCgoJKiB0b29scy9tYWtlZGVwLmM6CglUcnkgdG8gb3BlbiBzb3VyY2UgZmlsZSBpbiBjdXJyZW50IGRpcmVjdG9yeSBmaXJzdCBpbiBjYXNlIGl0IGlzIGEKCWdlbmVyYXRlZCBmaWxlLgoKCSogZGxscy9NYWtldGVzdC5ydWxlcy5pbjogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglHZW5lcmF0ZSBwcm9wZXIgZGVwZW5kZW5jaWVzIGZvciB0ZXN0bGlzdC5jLgoKCSogZGxscy9jb21tZGxnL2NkbGdfU2kucmMsIGRsbHMvd2lubW0vd2lubW1fU2kucmM6CglSb2sgTWFuZGVsamMgPHJva21hbmRlbGpjQGhvdG1haWwuY29tPgoJRml4ZWQgc29tZSBjaGFyYWN0ZXJzLgoKCSogYWNsb2NhbC5tNCwgY29uZmlndXJlLCBjb25maWd1cmUuYWM6CglBZGRlZCBXSU5FX0NIRUNLX0RFRklORSBtYWNybyB0byBmYWN0b3Igb3V0IHNvbWUgcmVwZWF0ZWQgY29kZS4KCgkqIGRsbHMva2VybmVsL3RpbWUuYywgZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL250ZGxsL3RpbWUuYywKCSAgZmlsZXMvZG9zX2ZzLmMsIGluY2x1ZGUvd2ludGVybmwuaDoKCUd59nJneSAnTm9nJyBKZW5leSA8bm9nQHNkZi5sb25lc3Rhci5vcmc+CgktIEltcGxlbWVudCBSdGxMb2NhbFRpbWVUb1N5c3RlbVRpbWUgYW5kIFJ0bFN5c3RlbVRpbWVUb0xvY2FsVGltZS4KCS0gVXNlIG5ldyB0aW1lIGZ1bmN0aW9ucyB0byByZWltcGxlbWVudCBGaWxlVGltZVRvTG9jYWxUaW1lIGFuZAoJICBMb2NhbFRpbWVUb0ZpbGVUaW1lLgoKCSogdG9vbHMvcnVudGVzdDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglGaXggc3RkZXJyIHJlZGlyZWN0aW9uLgoJU2ltcGxpZnkgJGluZmlsZSBleGlzdGVuY2UgdGVzdC4KCgkqIGluY2x1ZGUvd2luZS90ZXN0Lmg6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJV2hlbiByZXBvcnRpbmcgYSB0ZXN0IGZhaWx1cmUsIG9ubHkgcmVwb3J0IHRoZSBmaWxlIG5hbWUsIG5vdCB0aGUgZnVsbAoJcGF0aC4KCU1lcmdlIHdpbmV0ZXN0X3NldF90cmFjZV9sb2NhdGlvbiB3aXRoIHdpbmV0ZXN0X3NldF9va19sb2NhdGlvbi4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL3BhdGguYzogRnJvbTogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CgknIicgaXMgYW4gaWxsZWdhbCBjaGFyYWN0ZXIgb24gV2luOXggc28gd2UgY2Fubm90IHRlc3QgaXQuCglHZXRTaG9ydFBhdGhOYW1lQSBiZWhhdmVzIGRpZmZlcmVudGx5IG9uIFdpbjl4IGFuZCBOVDogb24gTlQgaXQKCXN1Y2NlZWRzIGV2ZW4gaWYgbm90IGFsbCBwYXRoIGNvbXBvbmVudHMgZXhpc3QsIGFzIGxvbmcgYXMgdGhleSBhcmUKCWFscmVhZHkgaW4gdGhlIDguMyBmb3JtYXQuCglXaW5lIGFwcGFyZW50bHkgaW1wbGVtZW50cyB0aGUgTlQgYmVoYXZpb3IgdGh1cyBtYW55IHRvZG9fd2luZSB3ZW50Cglhd2F5LgoJRml4ZWQgc29tZSBlcnJvciBjb2RlIGNoZWNrcyB0byB0YWtlIGludG8gYWNjb3VudCBhbGwgcG9zc2libGUgcmV0dXJuCgl2YWx1ZXMuCglHZXRUZW1wRmlsZU5hbWVBIGFwcGVhcnMgdG8gb25seSB1c2UgdGhlIGxvd2VyIDE2Yml0cyBvZiB0aGUgaWQgb24KCVdpbjk1IChhbmQgbmV2ZXIgcmV0dXJucyBtb3JlIHRoYW4gMTYgYml0cyBvbiBvdGhlciBwbGF0Zm9ybXMpLgoJR2V0TG9uZ1BhdGhOYW1lQSBpcyBtaXNzaW5nIG9uIHNvbWUgV2luZG93cyB2ZXJzaW9ucy4KCU1vZGlmaWVkIHRoZSBHZXRUZW1wUGF0aCB0ZXN0cyB0byBtYWtlIHN1cmUgdGhleSByZXR1cm4gdGhlIGV4cGVjdGVkCgl2YWx1ZS4gUmVtb3ZlZCB0aGUgcmVkdW5kYW50IHRlc3RzIChlLmcuIGlmIGJ1ZlswXT09MCB0aGVuIGJ1ZiE9ImZvbyIsCglubyBuZWVkIHRvIHRlc3QgYm90aCkuCglUaGUgJ2xlbl93aXRoX251bGwgLSAxJyBjYXNlIGlzIG5vdCB0ZXN0YWJsZSBhcyB0aGUgV2luZG93cyBiZWhhdmlvcgoJdmFyaWVzIHRvbyBtdWNoIGJldHdlZW4gdmVyc2lvbnMuCglXZSBjYW5ub3QgY2hlY2sgd2hldGhlciBXaW5kb3dzIHRvdWNoZXMgdGhlIGJ1ZmZlciBlaXRoZXIgYXMgdGhpcwoJaGVhdmlseSBkZXBlbmRzIG9uIHRoZSBXaW5kb3dzIHZlcnNpb24gYW5kIHNwZWNpZmljIGNpcmN1bXN0YW5jZXMgb2YKCXRoZSBjYWxsLgoJRmluYWxseSBOVDQgc29tZXRpbWVzIGV4YWdnZXJhdGVzIHRoZSByZXF1aXJlZCBidWZmZXIgc2l6ZS4KCgkqIHByb2dyYW1zL3djbWQvd2NtZG1haW4uYzogU3lsdmFpbiBQZXRyZW9sbGUgPHNwZXRyZW9sbGVAeWFob28uZnI+CglJbXBsZW1lbnQgJFYgaW4gYnVpbHRpbiBQUk9NUFQuCgoyMDAyLTEyLTEwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9kcGxheXgvZHBsb2JieS5jLCBkbGxzL21zdmNydC9sb2NhbGUuYywgZGxscy9udGRsbC9leGNlcHRpb24uYywKCSAgZGxscy9udGRsbC9sYXJnZV9pbnQuYywgZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jLAoJICBkbGxzL250ZGxsL3NpZ25hbF9wb3dlcnBjLmMsIGRsbHMvb2xlYXV0MzIvcGFyc2VkdC5oLAoJICBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLCBkbGxzL3R3YWluL3R3YWluLmgsIGRsbHMvd2luZWRvcy9pbnQxNy5jLAoJICBkbGxzL3dpbmVkb3MvaW50MjkuYywgZGxscy93aW5lZG9zL2ludDMxLmMsCgkgIGRsbHMvd2luZWRvcy9pbnRlcnJ1cHRzLmMsIGRsbHMvd2luZXBzL3BwZC5jLAoJICBkbGxzL3dpbmVwcy90cnVldHlwZS5jLCBkbGxzL3dpbmVwcy90eXBlMWFmbS5jLAoJICBkbGxzL3gxMWRydi94cmVuZGVyLmMsIGdyYXBoaWNzL3gxMWRydi9pbml0LmMsIGlmMTYzMi9yZWxheS5jLAoJICBpbmNsdWRlL21pc2NlbXUuaCwgaW5jbHVkZS9tc2FjbS5oLCBpbmNsdWRlL21zdmNydC9zdGRsaWIuaCwKCSAgaW5jbHVkZS93aW5kZWYuaCwgaW5jbHVkZS93aW5lL2V4Y2VwdGlvbi5oLAoJICBpbmNsdWRlL3dpbmUvcnBjc3Nfc2hhcmVkLmgsIGluY2x1ZGUvd2lubnQuaCwgbGlicmFyeS9sb2FkZXIuYywKCSAgbWVtb3J5L2luc3RyLmMsIG1pc2MvcmVnaXN0cnkuYywgcmVsYXkzMi9yZWxheTM4Ni5jLAoJICBzZXJ2ZXIvY2hhbmdlLmMsIHNlcnZlci9ldmVudC5jLCBzZXJ2ZXIvbWFwcGluZy5jLCBzZXJ2ZXIvbXV0ZXguYywKCSAgc2VydmVyL3JlZ2lzdHJ5LmMsIHNlcnZlci9yZXF1ZXN0LmMsIHNlcnZlci9zZW1hcGhvcmUuYywKCSAgc2VydmVyL3RpbWVyLmMsIHNlcnZlci90cmFjZS5jLCB0b29scy93aW5lZHVtcC9kZWJ1Zy5jLAoJICB0b29scy93aW5lZHVtcC9uZS5jLCB0b29scy93aW5lZHVtcC9wZS5jOgoJd2lubnQuaCBzaG91bGQgbm90IGJlIHNlbGYtY29udGFpbmVkLCBpdCBtdXN0IGRlcGVuZCBvbiB3aW5kZWYuaCBzbwoJdGhhdCBTVFJJQ1Qgd29ya3MgY29ycmVjdGx5OyBtb3ZlZCBzb21lIGRlZmluaXRpb25zIGJhY2sgdG8gd2luZGVmLmgKCXdoZXJlIHRoZXkgYmVsb25nLCBhbmQgcmVtb3ZlZCBhIGNvdXBsZSBvZiBkZWZpbml0aW9ucyB0aGF0IGRvbid0CglleGlzdCBvbiBXaW5kb3dzLgoKCSogZGxscy9NYWtldGVzdC5ydWxlcy5pbiwgcHJvZ3JhbXMvTWFrZXByb2cucnVsZXMuaW4sCgkgIHByb2dyYW1zL2F2aXRvb2xzL01ha2VmaWxlLmluOgoJLURTVFJJQ1QgaXMgbm93IHRoZSBkZWZhdWx0IGJlaGF2aW9yLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWM6IFN0ZXZlbiBFZHdhcmRzIDxpc29fbGF0aW9uQGhvdG1haWwuY29tPgoJQWxwaGEgcG9ydGluZyBmaXguCgoJKiBkbGxzL250ZGxsL250LmMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYzoKCUFsYmVydG8gTWFzc2FyaSA8YWxieUBleGxuLmNvbT4KCUFkZGVkIHBhcmFtZXRlcnMgdG8gTnRYeHhQb3J0IGZ1bmN0aW9ucyBwcm90b3R5cGVzLgoKCSogaW5jbHVkZS93aW5kZWYuaDogVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJQWRkIGEgZGVmaW5pdGlvbiBmb3IgU1RSSUNULgoKCSogaW5jbHVkZS93aW5udC5oOiBKZWZmIFNtaXRoIDx3aHlkb3VidEBob3RtYWlsLmNvbT4KCUFkZGVkIGRlZmluaXRpb25zIGZvciBSRUdfUVdPUkQgYW5kIFJFR19RV09SRF9MSVRUTEVfRU5ESUFOLgoKCSogZGxscy93aW5lZG9zL2ludDIxLmMsIGluY2x1ZGUvbWlzY2VtdS5oLCBtc2Rvcy9kb3NtZW0uYywKCSAgbXNkb3MvaW50MjEuYzoKCUp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCU1vdmUgaW50MjEgY291bnRyeSBpbmZvcm1hdGlvbiBoYW5kbGluZyB0byB3aW5lZG9zLgoJSW1wcm92ZSBjb3VudHJ5IGluZm9ybWF0aW9uIGhhbmRsaW5nLgoJTW92ZSBjb2xsYXRlIHRhYmxlIHRvIHVwcGVyIG1lbW9yeS4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBpbmNsdWRlL2NvbmZpZy5oLmluLCB0b29scy93cmMvd3JjLmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJR3JhY2VmdWxseSBkZWdyYWRlIHRvIGdldG9wdCBpZiBnZXRvcHRfbG9uZyBkb2VzIG5vdCBleGlzdC4KCgkqIGRsbHMvd2lubW0vdGVzdHMvd2F2ZS5jOiBWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglTdXBwcmVzcyBzb21lIHNpZ25lZC91bnNpZ25lZCBjb21wYXJpc29uIHdhcm5pbmcuCgoJKiBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmMsIGluY2x1ZGUvc2hlbGxhcGkuaDoKCVJvbGYgS2FsYmVybWF0dGVyIDxyb2xmLmthbGJlcm1hdHRlckBjaXRlbmcuY29tPgoJQ2hhbmdlIHRoZSByZXR1cm4gdmFsdWUgZm9yIEV4dHJhY3RJY29uRXggZnJvbSBISUNPTiB0byBVSU5UIGFuZCBtYWtlCgl0aGUgZnVuY3Rpb24gY2FsbCBkaXJlY3RseSB1c2VyMzIuUHJpdmF0ZUV4dHJhY3RJY29uRXguCgoJKiBkbGxzL3VzZXIvZXh0aWNvbi5jLCBkbGxzL3VzZXIvdXNlcjMyLnNwZWMsIGluY2x1ZGUvd2ludXNlci5oOgoJUm9sZiBLYWxiZXJtYXR0ZXIgPHJvbGYua2FsYmVybWF0dGVyQGNpdGVuZy5jb20+CgktIE1vZGlmeSBJQ09fRXh0cmFjdEljb25FeFcgdG86CgkgICAgcmV0dXJuIG1vcmUgY29tcGxpYW50IHZhbHVlcyBmb3IgdXNhZ2UgaW4gUHJpdmF0ZUV4dHJhY3RJY29ucyBhbmQgUHJpdmF0ZUV4dHJhY3RJY29uRXgKCSAgICBhY2NlcHQgYW5kIGZpbGwgaW4gdGhlIGljb24gaWRlbnRpZmllciBhcnJheSBjb3JyZWN0bHkgaWYgcHJvdmlkZWQKCSAgICBhbGxvdyB0byByZXRyaWV2ZSBib3RoIHNtYWxsIGFuZCBsYXJnZSBpY29ucyB0b2dldGhlci4KCS0gU2ltcGxpZnkgUHJpdmF0ZUV4dHJheHRJY29ucwoJLSBNb2RpZnkgUHJpdmF0ZUV4dHJhY3RJY29uRXhXIHRvOgoJICAgdXNlIGNvbXBhdGlibGUgc2lnbmF0dXJlIHRvIEV4dHJhY3RJY29uRXggaW4gc2hlbGwzMiB3aGljaCBpdCByZWFsbHkgaXMgZGlyZWN0bHkKCSAgICAgYXMgdGVzdGVkIG9uIFcySyBieSBjYWxsaW5nIGJvdGggZnVuY3Rpb25zIHdpdGggdGhlIHNhbWUgcGFyYW1ldGVycwoJICAgZGlyZWN0bHkgY2FsbCBpbnRlcm5hbCBleHRyYWN0aW9uIGZ1bmN0aW9uCgkgICBmaXggZXJyb3Igd2hlbiByZXF1ZXN0aW5nIDEgaWNvbiBmb3IgYm90aCBzaXplcwoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMi5oLCBkbGxzL2NvbWN0bDMyL3RyYWNrYmFyLmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJR2V0IHJpZCBvZiBnZW5lcmljIG5vdGlmaWNhdGlvbiBzdXBwb3J0IGluIGNvbWN0cmwzMi4gVGhlIE1TIGRvY3Mgd2VyZQoJbWlzbGVhZGluZyBpbiB0aGF0IGFsbCBjb250cm9scyBzZW5kIHRoZXNlIG5vdGlmaWNhdGlvbnMuIFRoZXkgZG9uJ3QuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CgktIFBsdWcgYSBidW5jaCBvZiBtZW1vcnkgbGVha3MuCgktIE1ha2UgcmFuZ2VzX2Rlc3Ryb3kgYmVoYXZlIG1vcmUgbGlrZSBmcmVlKCkuCgktIEZpeCBtZXNzZWQgdXAgaW5kZW50YXRpb24gZnJvbSB0YWJzIHNldCB0byA0IGNoYXJzLgoJLSBVcGRhdGVkIHRoZSBkb2N1bWVudGF0aW9uLgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6IENocmlzIE1vcmdhbiA8Y21vcmdhbkBhbHVtLndwaS5lZHU+CglSZXNldCB0aGUgb3NzIGRldmljZSBiZWZvcmUgd2UgdHJ5IHRvIGNsb3NlIGl0LiAgRml4ZXMgaGFuZyBvbiBzdGFydHVwCglvZiBTdGFyY3JhZnQgZHVlIHRvIG9zcyBkZXZpY2UgYmVpbmcgaW4gYSBiYWQgc3RhdGUuCgoJKiBkbGxzL29sZWF1dDMyL29sZWF1dDMyLnNwZWMsIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jOgoJSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCVZhckFkZCBzdXBwb3J0IGZvciBpbnRlZ2Vycy4KCgkqIGRvY3VtZW50YXRpb24vZmFxLnNnbWw6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CgkgVXBkYXRlIFdpbmUgRkFRIHRvIGxhdGVzdCByZXZpc2lvbi4KCSAgLSBCZXR0ZXIgQm9jaHMvUGxleDg2IGluZm8KCSAgLSBBZGQgUSZBIGFib3V0IHVwZ3JhZGluZyBjb25maWd1cmF0aW9uCgkgIC0gUmVwbGFjZSBEZW5lYmEncyBDYW52YXMgNyB3aXRoIEFiaWxpdHkgT2ZmaWNlCglGcm9tIGVudHJpZXMgc3VibWl0dGVkIGJ5IFRvbSBXaWNrbGluZS4KCgkqIHdpbmRvd3MvaW5wdXQuYzogTWlrZSBIZWFybiA8bS5oZWFybkBzaWduYWwucWluZXRpcS5jb20+CglNYWtlIFdNX01PVVNFSE9WRVIgY29vcmRpbmF0ZXMgY2xpZW50IHJlbGF0aXZlLgoKCSogaW5jbHVkZS9iYXNldHNkLmgsIGluY2x1ZGUvd2lubnQuaDoKCVN0ZXZlbiBFZHdhcmRzIDxpc29fbGF0aW9uQGhvdG1haWwuY29tPgoJQWxwaGEgcG9ydGluZyBmaXhlcy4KCjIwMDItMTItMDcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB0b29scy93aW5lYnVpbGQvbWFpbi5jLCB0b29scy93aW5lYnVpbGQvcGFyc2VyLmMsCgkgIHRvb2xzL3dpbmVidWlsZC93aW5lYnVpbGQubWFuLmluOgoJUmVwbGFjZWQgJ2lnbm9yZScgc3BlYyBmaWxlIGRpcmVjdGl2ZSBieSB0aGUgLWkgb3B0aW9uLgoKCSogZGxscy9NYWtlZGxsLnJ1bGVzLmluOiBEb24ndCBidWlsZCB0ZXN0cyBieSBkZWZhdWx0IGp1c3QgeWV0LgoKCSogZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLAoJICBpbmNsdWRlL3NobG9iai5oOgoJUm9sZiBLYWxiZXJtYXR0ZXIgPHJvbGYua2FsYmVybWF0dGVyQGNpdGVuZy5jb20+CglBZGQgU0hEZWZFeHRyYWN0SWNvbntBV30gZnVuY3Rpb24uCgoJKiBkb2N1bWVudGF0aW9uL2RlYnVnZ2VyLnNnbWw6CglUb255IExhbWJyZWd0cyA8dG9ueV9sYW1icmVndHNAdGVsdXNwbGFuZXQubmV0PgoJVXBkYXRlIGRlYnVnZ2VyIGRvY3VtZW50YXRpb24gZm9yIHdoZW4gcHJvZ3JhbXMgaGFuZ3MuCgoJKiBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjOgoJUm9sZiBLYWxiZXJtYXR0ZXIgPHJvbGYua2FsYmVybWF0dGVyQGNpdGVuZy5jb20+CglGaXggc2lnbmF0dXJlIG9mIFNITFdBUElfMzM0IGFzIGl0cyBzdHJpbmcgcGFyYW1ldGVyIHJlYWxseSBpcyBhbgoJb3V0cHV0LgoKCSogaW5jbHVkZS9kZHJhdy5oOiBWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglGaWxscyB0aGUgbmFtZSBvZiB0aGUgYXJndW1lbnRzIG9mIHRoZSBDT00gbWV0aG9kcywgZWxzZSBNU1ZDIGRvZXNuJ3QKCWxpa2UgdGhlbS4KCgkqIGZpbGVzL2RyaXZlLmM6IFN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJTW92ZWQgaW1wbGVtZW50YXRpb24gb2YgR2V0RGlza0ZyZWVTcGFjZUV4IGZyb20gYXNjaWkgdG8gdW5pY29kZS4KCgkqIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGRsbHMvd2luZWRvcy9kZXZpY2VzLmMsCgkgIGRsbHMvd2luZWRvcy9kb3NleGUuaCwgZGxscy93aW5lZG9zL2hpbWVtLmMsIGRsbHMvd2luZWRvcy9pbnQyMS5jLAoJICBkbGxzL3dpbmVkb3MvbW9kdWxlLmMsIGluY2x1ZGUvbXNkb3MuaCwgbXNkb3MvaW50MjEuYzoKCUp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCU1vdmUgaW50MDggc3R1YiBhbmQgTE9MIHRvIHVwcGVyIG1lbW9yeS4KCU1vdmUgc2ltcGxlIGludDIxIGZ1bmN0aW9ucyB0byB3aW5lZG9zLgoKMjAwMi0xMi0wNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvTWFrZWRsbC5ydWxlcy5pbiwgZGxscy9NYWtldGVzdC5ydWxlcy5pbiwKCSAgcHJvZ3JhbXMvTWFrZXByb2cucnVsZXMuaW4sIHRvb2xzL3dpbmVidWlsZC9idWlsZC5oLAoJICB0b29scy93aW5lYnVpbGQvbWFpbi5jLCB0b29scy93aW5lYnVpbGQvcmVzMzIuYywKCSAgdG9vbHMvd2luZWJ1aWxkL3dpbmVidWlsZC5tYW4uaW46CglDaGVjayBmaWxlIGhlYWRlciB0byBkaWZmZXJlbnRpYXRlIGJldHdlZW4gb2JqZWN0IGZpbGVzIGFuZCByZXNvdXJjZXMKCXNvIHRoYXQgdGhlIC1yIG9wdGlvbiBpcyBub3QgbmVjZXNzYXJ5LgoKCSogdG9vbHMvTWFrZWZpbGUuaW46IEZpeGVkIG1pbmd3cmFwIGluc3RhbGwgY29tbWFuZC4KCgkqIGRsbHMvd2luaW5ldC90ZXN0cy9odHRwLmM6CglGaXhlZCB0aGUgbGlzdCBvZiBhY2NlcHRlZCB0eXBlcyBwYXNzZWQgdG8gSHR0cE9wZW5SZXF1ZXN0QS4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmM6CglSb2xmIEthbGJlcm1hdHRlciA8cm9sZi5rYWxiZXJtYXR0ZXJAY2l0ZW5nLmNvbT4KCUltcGxlbWVudCBQYXJzZUZpZWxkVyBmdW5jdGlvbiBiYXNlZCBvbiBpdHMgQU5TSSBzaWJsaW5nLgoKCSogZGxscy93aW5pbmV0L2h0dHAuYzogQWxiZXJ0byBNYXNzYXJpIDxhbGJ5QGV4bG4uY29tPgoJIC0gV2hlbiBzZW5kaW5nIGEgcmVxdWVzdCB1c2luZyBIdHRwT3BlblJlcXVlc3QvSHR0cFNlbmRSZXF1ZXN0LCBzZW5kIHRoZQoJICAgVXNlci1BZ2VudCBoZWFkZXI7IGZpeGVkIHRoZSBBY2NlcHQgYW5kIHRoZSBSZWZlcmVyIGhlYWRlciBoYW5kbGluZyB0bwoJICAgcmVhbGx5IHdvcmsuCgkgLSBGaXhlZCBidWcgaW4gdGhlIEhUVFBfUHJvY2Vzc0hlYWRlcjogd2hlbiBhIHNlY29uZCB2YWx1ZSB3YXMgc3VwcG9zZWQgdG8gYmUKCSAgIGFkZGVkIHRvIGFuIGV4aXN0aW5nIG9uZSwgdGhlIGJ1ZmZlciB3YXMgcmVkdWNlZCB0byBiZSAxIGNoYXIgbG9uZyBpbnN0ZWFkCgkgICBvZiBiZWluZyBleHBhbmRlZCwgZHVlIHRvIHRoZSBwcmVjZWRlbmNlIHJ1bGVzIG9mIHRoZSBvcGVyYXRvciAnPycuCgkgLSBBZGRlZCBzdXBwb3J0IGZvciBvcGVuaW5nIFVSTHMgdGhhdCByZWRpcmVjdCB0byBhIGRpZmZlcmVudCBwbGFjZS4KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmMsIGluY2x1ZGUvcHJzaHQuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRGVmaW5lIFBTSF9XSVpBUkQ5NyAocHJvYmxlbSByZXBvcnRlZCBieSBqYXltekBmcmVlLmZyKS4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYzogQ2hyaXN0b3BoIEZyaWNrIDxmcmlja0BTQy1OZXR3b3Jrcy5kZT4KCUZvcmNlIChXU18pU09fUkVVU0VBRERSIGJlZm9yZSBiaW5kaW5nIHRvIGEgc29ja2V0OyBpZ25vcmUKCShXU18pU09fRE9OVFJPVVRFOyBOZXR3b3JrIGdhbWVzIGluIEdyYW5kIFByaXggTGVnZW5kcyBhbmQgTmFzY2FyIDIwMDIKCWFyZSBwb3NzaWJsZSBub3cuCgoJKiBkbGxzL01ha2VkbGwucnVsZXMuaW4sIGRsbHMvTWFrZXRlc3QucnVsZXMuaW46CglCdWlsZCB0ZXN0IHByb2dyYW1zIGFzIHBhcnQgb2YgdGhlIG5vcm1hbCBidWlsZC4KCgkqIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWM6CglSb2xmIEthbGJlcm1hdHRlciA8cm9sZi5rYWxiZXJtYXR0ZXJAY2l0ZW5nLmNvbT4KCUZpeCBzb21lIHBhcmFtZXRlciB0eXBlcy4KCgkqIGluY2x1ZGUvb2JqYmFzZS5oLCBpbmNsdWRlL3dpbmUvb2JqX2Jhc2UuaDoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJTW92ZWQgQ09NIEFQSSBwcm90b3R5cGVzIGluIGluY2x1ZGUvd2luZS9vYmpfYmFzZS5oIHRvCglpbmNsdWRlL29iamJhc2UuaC4KCgkqIHRvb2xzL3dyYy93cmMuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCU1ha2Ugd3JjIGNvbW1hbmQgbGluZSBjb21wYXRpYmxlIHdpdGggd2luZHJlcy4KCgkqIHRvb2xzL01ha2VmaWxlLmluOgoJRml4ZWQgcGFzc2luZyBvZiAtRElOQ0xVREVESVIgd2hlbiBidWlsZGluZyBtaW5nd3JhcC4KCgkqIGluY2x1ZGUvTWFrZWZpbGUuaW46IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglJbnN0YWxsIERESyBoZWFkZXJzIGFzIHdlbGwuCgoyMDAyLTEyLTA1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS9vYmpiYXNlLmg6IEFkZGVkIHJwYy5oIGluY2x1ZGUgdG8gZml4IHRlc3RzIGNvbXBpbGF0aW9uLgoKCSogZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYywgZGxscy9kZHJhdy9kM2Rjb21tb24uYywKCSAgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWFpbi5jLCBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsCgkgIGRsbHMvZGRyYXcvZDNkZXhlY3V0ZWJ1ZmZlci5jLCBkbGxzL2RkcmF3L2QzZGxpZ2h0LmMsCgkgIGRsbHMvZGRyYXcvZDNkbWF0ZXJpYWwuYywgZGxscy9kZHJhdy9kM2R0ZXh0dXJlLmMsCgkgIGRsbHMvZGRyYXcvZDNkdmVydGV4YnVmZmVyLmMsIGRsbHMvZGRyYXcvZDNkdmlld3BvcnQuYywKCSAgZGxscy9kZHJhdy9tZXNhLmMsIGRsbHMvZHBsYXl4L2RwY2xhc3NmYWN0b3J5LmMsCgkgIGRsbHMvb2xlMzIvYW50aW1vbmlrZXIuYywgZGxscy9vbGUzMi9iaW5kY3R4LmMsCgkgIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL2NvbXBvc2l0ZW1vbmlrZXIuYywKCSAgZGxscy9vbGUzMi9kYXRhY2FjaGUuYywgZGxscy9vbGUzMi9lcnJvcmluZm8uYywKCSAgZGxscy9vbGUzMi9maWxlbW9uaWtlci5jLCBkbGxzL29sZTMyL2Z0bWFyc2hhbC5jLCBkbGxzL29sZTMyL2lmcy5jLAoJICBkbGxzL29sZTMyL2l0ZW1tb25pa2VyLmMsIGRsbHMvb2xlMzIvbW9uaWtlci5jLAoJICBkbGxzL29sZTMyL29sZTMyX21haW4uYywgZGxscy9vbGUzMi9vbGUzMl9tYWluLmgsCgkgIGRsbHMvb2xlMzIvb2xlb2JqLmMsIGRsbHMvb2xlMzIvc3RnX2JpZ2Jsb2NrZmlsZS5jLAoJICBkbGxzL29sZTMyL3N0b3JhZ2UuYywgZGxscy9vbGUzMi9zdG9yYWdlMzIuaCwKCSAgZGxscy9vbGVhdXQzMi9jb25ucHQuYywgZGxscy9vbGVhdXQzMi9kaXNwYXRjaC5jLAoJICBkbGxzL29sZWF1dDMyL29sZWZvbnQuYywgZGxscy9vbGVhdXQzMi9zYWZlYXJyYXkuYywKCSAgZGxscy9vbGVhdXQzMi90bWFyc2hhbC5jLCBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYywKCSAgZGxscy9ycGNydDQvY3Byb3h5LmMsIGRsbHMvcnBjcnQ0L2Nwc2YuYywgZGxscy9ycGNydDQvY3N0dWIuYywKCSAgZGxscy9ycGNydDQvbmRyX21hcnNoYWxsLmMsIGRsbHMvcnBjcnQ0L25kcl9taWRsLmMsCgkgIGRsbHMvcnBjcnQ0L25kcl9vbGUuYywgZGxscy9zaGRvY3Z3L2NsYXNzaW5mby5jLAoJICBkbGxzL3NoZG9jdncvc2hkb2N2dy5oLCBkbGxzL3NoZWxsMzIvZHJhZ2Ryb3BoZWxwZXIuYywKCSAgZGxscy9zaGVsbDMyL2ZvbGRlcnMuYywgZGxscy9zaGVsbDMyL3NoZWxsZm9sZGVyLmgsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBkbGxzL3NoZWxsMzIvc2hmbGRyX2Rlc2t0b3AuYywKCSAgZGxscy9zaGVsbDMyL3NoZmxkcl9mcy5jLCBkbGxzL3NoZWxsMzIvc2hmbGRyX215Y29tcC5jLAoJICBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmMsIGRsbHMvc2hlbGwzMi9zaGxtZW51LmMsCgkgIGRsbHMvc2hlbGwzMi9zaHZfYmdfY21lbnUuYywgZGxscy9zaGVsbDMyL3Nodl9pdGVtX2NtZW51LmMsCgkgIGRsbHMvc2hsd2FwaS9jbGlzdC5jLCBkbGxzL3NobHdhcGkvaXN0cmVhbS5jLAoJICBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLCBkbGxzL3NobHdhcGkvcmVnc3RyZWFtLmMsCgkgIGRsbHMvc2hsd2FwaS90aHJlYWQuYywgaW5jbHVkZS9kcGxheS5oLCBpbmNsdWRlL29haWRsLmgsCgkgIGluY2x1ZGUvb2JqYmFzZS5oLCBpbmNsdWRlL29iamlkbC5oLCBpbmNsdWRlL29jaWRsLmgsIGluY2x1ZGUvb2xlLmgsCgkgIGluY2x1ZGUvb2xlMi5oLCBpbmNsdWRlL29sZWF1dG8uaCwgaW5jbHVkZS9vbGVjdGwuaCwKCSAgaW5jbHVkZS9vbGVkbGcuaCwgaW5jbHVkZS9vbGVpZGwuaCwgaW5jbHVkZS9zZXJ2cHJvdi5oLAoJICBpbmNsdWRlL3NobGd1aWQuaCwgaW5jbHVkZS9zaGxvYmouaCwgaW5jbHVkZS91bmtud24uaCwKCSAgaW5jbHVkZS91cmxtb24uaCwgaW5jbHVkZS93aW5lL29ial9iYXNlLmgsIGluY2x1ZGUvd2luZS9vYmpfbWlzYy5oLAoJICBpbmNsdWRlL3dpbmUvb2JqX3NlcnZpY2Vwcm92aWRlci5oOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglNYWtlIHN1cmUgdGhhdCBubyBmaWxlcyBleGNlcHQgdW5rbnduLmggaW5jbHVkZSB3aW5lL29ial9iYXNlLmgKCWRpcmVjdGx5LgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jLCBkbGxzL250ZGxsL2ZpbGUuYywgZGxscy9udGRsbC9oZWFwLmMsCgkgIGRsbHMvbnRkbGwvbWlzYy5jLCBkbGxzL250ZGxsL250LmMsIGRsbHMvbnRkbGwvb20uYywKCSAgZGxscy9udGRsbC9yZWcuYywgZGxscy9udGRsbC9zZWMuYywgZGxscy9udGRsbC9zeW5jLmMsCgkgIGxvYWRlci9tb2R1bGUuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2NoZWR1bGVyL3RocmVhZC5jLAoJICB3aW4zMi9kZXZpY2UuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJUmVwbGFjZSAweCVwIHdpdGggJXAuCgoJKiBkbGxzL3gxMWRydi9rZXlib2FyZC5jOiBQZXRlciBNbGFkZWsgPHBtbGFkZWtAc3VzZS5jej4KCUFkZGVkIDIgbW9yZSBDemVjaCBrZXlib2FyZCBsYXlvdXRzIGNvbXBhdGlibGUgd2l0aCBYRnJlZTg2IDQuMS4KCgkqIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jLCBkbGxzL3dpbmluZXQvdXJsY2FjaGUuYywKCSAgZGxscy93aW5pbmV0L3dpbmluZXQuc3BlYywgaW5jbHVkZS93aW5pbmV0Lmg6CglBbGJlcnRvIE1hc3NhcmkgPGFsYnlAZXhsbi5jb20+CgkgLSBNb3ZlZCBHZXRVcmxDYWNoZUVudHJ5SW5mb0EgYW5kIENvbW1pdFVybENhY2hlRW50cnlBIHRvIHVybGNhY2hlLmMuCgkgLSBBZGRlZCBzdHViIGltcGxlbWVudGF0aW9uIG9mIEdldFVybENhY2hlRW50cnlJbmZvRXhXLgoJIC0gSW1wbGVtZW50ZWQgSW50ZXJuZXRRdWVyeU9wdGlvblcsIEludGVybmV0Q29tYmluZVVybFtBfFddLgoJIC0gSW50ZXJuZXRTZXRPcHRpb25XIHByaW50cyBGSVhNRXMgd2l0aCBtb3JlIGluZm9ybWF0aW9ucy4KCSAtIElOVEVSTkVUX1NldExhc3RFcnJvciB3YXMgY3Jhc2hpbmcgaWYgY2FsbGVkIGFmdGVyIHRoZSB0aHJlYWQKCSAgIGxvY2FsIHN0b3JhZ2UgYXJlYSBoYWQgYWxyZWFkeSBiZWVuIGRlbGV0ZWQgKGl0IGhhcHBlbnMgaWYgeW91CgkgICBjbG9zZSBJbnRlcm5ldCBFeHBsb3JlciB3aGlsZSB0aGUgZG93bmxvYWQgaXMgc3RpbGwgaW4gcHJvZ3Jlc3MpLgoKCSogZGxscy9kc291bmQvZHNvdW5kX21haW4uYzoKCUJhY2sgb3V0IHRoZSBhUnRzIHZvbHVtZSBwYXRjaCwgdGhpcyBpcyBub3QgdXNlci1mcmllbmRseSBhdCBhbGwuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9kc291bmQvTWFrZWZpbGUuaW4sCgkgIGRsbHMvZHNvdW5kL3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMvZHNvdW5kL3Rlc3RzL01ha2VmaWxlLmluLAoJICBkbGxzL2Rzb3VuZC90ZXN0cy9kc291bmQuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglBIHNpbXBsZSB0ZXN0IGZvciBJRGlyZWN0U291bmQuR2V0Q2Fwcy4KCgkqIGRvY3VtZW50YXRpb24vZmFxLnNnbWwsIGRvY3VtZW50YXRpb24vd2luZS1kb2Muc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi93aW5lLWZhcS5zZ21sOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVdyYXAgZmFxLnNnbWwgaW4gYW4gYXJ0aWNsZSB0YWcgaW4gd2luZS1kb2Muc2dtbC4KCVNldCB0aGUgYXJ0aWNsZSBjbGFzcyB0byAnZmFxJy4KCU1vdmUgdGhlIHRpdGxlIHRvIGZhcS5zZ21sLgoKCSogZG9jdW1lbnRhdGlvbi90ZXN0aW5nLnNnbWw6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglSZW1vdmVkIHJlZmVyZW5jZXMgdG8gdGhlIFBlcmwgdGVzdHMuCglBZGRlZCBhIHNlY3Rpb24gZGVzY3JpYmluZyBob3cgdG8gYnVpbGQgYW5kIHJ1biB0ZXN0cyBvbiBXaW5kb3dzLgoJVGhlIFZpc3VhbCBDKysgc2VjdGlvbiBzaG91bGQgYmUgcmVsYXRpdmVseSBjb21wbGV0ZSBidXQgdGhlIE1pbkdXIGFuZAoJY3Jvc3MtY29tcGlsaW5nIHNlY3Rpb24gc3RpbGwgbmVlZCBzb21lIHdvcmsuCgoJKiBpbmNsdWRlL3dpbmUvb2JqX2V4dHJhY3RpY29uLmg6CglSb2xmIEthbGJlcm1hdHRlciA8cm9sZi5rYWxiZXJtYXR0ZXJAY2l0ZW5nLmNvbT4KCUFkZCBwcm90b3R5cGVzIGZvciBJRXh0cmFjdEljb25XIGludGVyZmFjZS4KCgkqIGRsbHMvb2xlYXV0MzIvdG1hcnNoYWwuYzogTWFyY3VzIE1laXNzbmVyIDxtZWlzc25lckBzdXNlLmRlPgoJTWFyc2hhbCBWVF9SNCAoNCBieXRlIGZsb2F0KS4KCgkqIHRvb2xzLy5jdnNpZ25vcmUsIHRvb2xzL01ha2VmaWxlLmluLCB0b29scy9taW5nd3JhcC5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCU5ldyBNaW5HVyB3cmFwcGVyIHRoYXQgbWFrZXMgZ2NjIG9uIExpbnV4IGJlaGF2ZSBsaWtlIE1pbkdXIG9uCglXaW5kb3dzLCB1c2luZyB0aGUgV2luZSBoZWFkZXJzLgoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLCBkbGxzL2RkcmF3L2RpcmVjdDNkL21haW4uYywKCSAgZGxscy9kZHJhdy9kaXJlY3QzZC9tYWluLmgsIGRsbHMvZGRyYXcvZGlyZWN0M2QvbWVzYS5jLAoJICBkbGxzL2RkcmF3L21lc2FfcHJpdmF0ZS5oOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUhhdmUgb25seSBvbmUgR1VJRCBmb3IgV2luZSdzIE9wZW5HTCBEM0QgZGV2aWNlLgoKCSogdG9vbHMvd2luZWluc3RhbGw6IFN5bHZhaW4gUGV0cmVvbGxlIDxzcGV0cmVvbGxlQHlhaG9vLmZyPgoJSW5zdGFsbCBhcHBzIGluIHdpbmRvd3Ncc3lzdGVtIHNpbmNlIHRoYXQncyB3aGF0IHRoZSBzeXN0ZW0gZGlyZWN0b3J5CglpcyBzZXQgdG8gaW4gdGhlIGNvbmZpZyBmaWxlLgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jOgoJTWFydGluIFdpbGNrIDxNYXJ0aW4uV2lsY2tARnVqaXRzdS1TaWVtZW5zLmNvbT4KCUNvcnJlY3QgMiBidWdzIGNvbm5lY3RlZCB0byBhc3luY2hyb25vdXMgc2h1dGRvd24oKToKCS0gQ2Fubm90IGNhbGwgV1NBR2V0T3ZlcmxhcHBlZFJlc3VsdCgpIGJlY2F1c2UgY29tcGxldGlvbiBmdW5jdGlvbgoJICBkZXN0cm95cyB0aGUgb3ZlcmxhcHBlZCBzdHJ1Y3R1cmUuCgktIHdzMl9hc3luY19jbGVhbnVwKCkgY2FsbGVkIHR3aWNlIGluIGNhc2Ugb2YgZmFpbHVyZS4KCgkqIGRsbHMvd2luc29jay90ZXN0cy9zb2NrLmM6CglNYXJ0aW4gV2lsY2sgPE1hcnRpbi5XaWxja0BGdWppdHN1LVNpZW1lbnMuY29tPgoJU2V0IHRoZSBzb2NrZXQgdG8gb3ZlcmxhcHBlZCBtb2RlLgoKCSogZGxscy9ycGNydDQvdGVzdHMvcnBjLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJU2tpcCBVbmljb2RlIHRlc3RzIGlmIHRoZXJlJ3Mgbm8gVW5pY29kZSBzdXBwb3J0LgoKCSogZGxscy9kc291bmQvZHNvdW5kX21haW4uYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVJldHVybiBhbiBlcnJvciBpZiBkd1NpemUgaXMgbm90IHZhbGlkLgoJTm8gbmVlZCB0byBkdW1wIGR3RmxhZ3MgYmVmb3JlIGl0IGlzIGluaXRpYWxpemVkLgoKCSogaW5jbHVkZS9tc3ZjcnQvZXJybm8uaDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBZGRlZCBFREVBRExPQ0suCgoyMDAyLTEyLTAzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogTWFrZS5ydWxlcy5pbiwgaW5jbHVkZS9NYWtlZmlsZS5pbjoKCUFkZGVkIHJ1bGVzIGZvciBjb21waWxpbmcgSURMIGZpbGVzLgoKCSogZG9jdW1lbnRhdGlvbi8uY3ZzaWdub3JlLCBkb2N1bWVudGF0aW9uL01ha2VmaWxlLmluOgoJQWRkZWQgcnVsZXMgZm9yIGJ1aWxkaW5nIHRoZSBGQVEuCgoJKiBjb250cm9scy9jb21iby5jLCBjb250cm9scy9saXN0Ym94LmMsIGNvbnRyb2xzL3Njcm9sbC5jLAoJICBkbGxzL2NvbWN0bDMyL3JlYmFyLmMsIGRsbHMvdXNlci9ob29rLmMsIGRsbHMvdXNlci9ob29rMTYuYywKCSAgZGxscy91c2VyL21lc3NhZ2UuYywgZGxscy91c2VyL21lc3NhZ2UuaCwgZGxscy91c2VyL21zZzE2LmMsCgkgIGRsbHMvdXNlci91c2VyX21haW4uYywgZGxscy91c2VyL3dpbnByb2MuaCwgZGxscy94MTFkcnYvZXZlbnQuYywKCSAgZGxscy94MTFkcnYvd2luZG93LmMsIGRsbHMveDExZHJ2L3dpbnBvcy5jLCBpbmNsdWRlL2lucHV0LmgsCgkgIGluY2x1ZGUvbWVzc2FnZS5oLCBpbmNsdWRlL3F1ZXVlLmgsIGluY2x1ZGUvc3B5LmgsCgkgIGluY2x1ZGUvc3lzbWV0cmljcy5oLCBpbmNsdWRlL3VzZXIuaCwgaW5jbHVkZS93aW4uaCwKCSAgaW5jbHVkZS93aW5wcm9jLmgsIHdpbmRvd3MvY2xhc3MuYywgd2luZG93cy9jdXJzb3JpY29uLmMsCgkgIHdpbmRvd3MvZGVmZGxnLmMsIHdpbmRvd3MvZGVmd25kLmMsIHdpbmRvd3MvaW5wdXQuYywKCSAgd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3MvcGFpbnRpbmcuYywgd2luZG93cy9xdWV1ZS5jLAoJICB3aW5kb3dzL3NweS5jLCB3aW5kb3dzL3N5c2NvbG9yLmMsIHdpbmRvd3Mvc3lzbWV0cmljcy5jLAoJICB3aW5kb3dzL3N5c3BhcmFtcy5jLCB3aW5kb3dzL3RpbWVyLmMsIHdpbmRvd3MvdXNlci5jLCB3aW5kb3dzL3dpbi5jLAoJICB3aW5kb3dzL3dpbnBvcy5jLCB3aW5kb3dzL3dpbnByb2MuYzoKCVJlbW92ZWQgaW5wdXQuaCwgcXVldWUuaCwgc3B5LmggYW5kIHN5c21ldHJpY3MuaCBhbmQgbW92ZWQgdGhlaXIKCWNvbnRlbnRzIHRvIHVzZXIuaC4KCU1vdmVkIG1lc3NhZ2UuaCBhbmQgd2lucHJvYy5oIHRvIGRsbHMvdXNlci4KCgkqIGRvY3VtZW50YXRpb24vZmFxLnNnbWwsIGRvY3VtZW50YXRpb24vbWFrZV93aW5laHEsCgkgIGRvY3VtZW50YXRpb24vd2luZS1kb2Muc2dtbCwgZG9jdW1lbnRhdGlvbi93aW5lLWZhcS5zZ21sOgoJVG9ueSBMYW1icmVndHMgPHRvbnlfbGFtYnJlZ3RzQHRlbHVzcGxhbmV0Lm5ldD4KCUFkZGVkIHRoZSBGQVEsIGFuZCBidWlsZCBpdCB3aGVuIGNyZWF0aW5nIHRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGUKCXdlYnNpdGUuCgoJKiBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJVXNlIENPTVNQRUMgY29tbWFuZCBpbnRlcnByZXRlciB0byBydW4gLmJhdCBmaWxlcy4KCgkqIG1zZG9zL2ludDIxLmM6IEFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCUZpeGVkIGVycm9yIGNoZWNraW5nIGluIGZpbGUgY3JlYXRpb24gYW5kIGNsb3NpbmcuCgoJKiBkbGxzL2RkcmF3L21lc2EuYzogQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJQWRkIHN1cHBvcnQgZm9yIEQzREJMRU5EX09ORSBmb3IgRDNEUkVOREVSU1RBVEVfe0RFU1QvU1JDfUJMRU5ELgoKCSogZGxscy9pY21wL2ljbXBfbWFpbi5jLCBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL2ljbXBhcGkuaCwKCSAgaW5jbHVkZS9pcGV4cG9ydC5oLCBpbmNsdWRlL3dpbmUvaWNtcGFwaS5oLCBpbmNsdWRlL3dpbmUvaXBleHBvcnQuaDoKCUluc3RhbGwgaXBleHBvcnQuaCBhbmQgaWNtcGFwaS5oIHdpdGggdGhlIG90aGVyIFdpbmRvd3MgaW5jbHVkZXMuCgoJKiBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYywgaW5jbHVkZS93aW5lL29ial9vbGVhdXQuaCwKCSAgaW5jbHVkZS93dHlwZXMuaCwgaW5jbHVkZS93dHlwZXMuaWRsOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglBZGRlZCBtb3JlIHR5cGVzIHRvIHd0eXBlcy5pZGwuCgoJKiBkbGxzL3dpbnNvY2svdGVzdHMvc29jay5jOgoJTWFydGluIFdpbGNrIDxNYXJ0aW4uV2lsY2tARnVqaXRzdS1TaWVtZW5zLmNvbT4KCUZpeGVkIHRlc3QgdG8gcnVuIGZpbmUgKDAgZXJyb3JzKSBvbiBXaW4gTlQuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywKCSAgaW5jbHVkZS9zaGxvYmouaDoKCUFsYmVydG8gTWFzc2FyaSA8YWxieUBleGxuLmNvbT4KCVNIR2V0U2V0U2V0dGluZ3MgaGFzIG5vdyB0aGUgcmlnaHQgc2lnbmF0dXJlIGFuZCB0aGUgZXhwZWN0ZWQgYmVoYXZpb3IKCXdoZW4gdGhlIHVzZXIgaXMgYXNraW5nIHRvIGdldCB0aGUgY3VycmVudCBzZXR0aW5ncy4KCgkqIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYzoKCVJvbGYgS2FsYmVybWF0dGVyIDxyb2xmLmthbGJlcm1hdHRlckBjaXRlbmcuY29tPgoJRml4IEFOU0ktPlVuaWNvZGUgY2FsbGluZyBmb3IgRXh0cmFjdEljb25FeEEvVy4KCgkqIGRsbHMvdXNlci9leHRpY29uLmMsIGRsbHMvdXNlci91c2VyMzIuc3BlYywgaW5jbHVkZS93aW51c2VyLmg6CglSb2xmIEthbGJlcm1hdHRlciA8cm9sZi5rYWxiZXJtYXR0ZXJAY2l0ZW5nLmNvbT4KCU1vZGlmeSBQcml2YXRlRXh0cmFjdEljb25ze0FXfSB0byBtYXRjaCBiZXR0ZXIgY3VycmVudCBNRFNOCglkb2N1bWVudGF0aW9uLgoKCSogaW5jbHVkZS9NYWtlZmlsZS5pbjogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUNoYW5nZSBoZWFkZXIgaW5zdGFsbCBsb2NhdGlvbiBhcyBzdWNoOgoJICAke3ByZWZpeH0vaW5jbHVkZS93aW5lL3dpbmRvd3MgIC0tIHN0YW5kYXJkIFdpbmRvd3MgaGVhZGVycwoJICAke3ByZWZpeH0vaW5jbHVkZS93aW5lL21zdmNydCAgIC0tIE1TIFZpc3VhbCBDIFJ1bnRpbWUgbGlicmFyeQoJICAke3ByZWZpeH0vaW5jbHVkZS93aW5lICAgICAgICAgIC0tIFdpbmUgc3BlY2lmaWMgaGVhZGVycwoKCSogZGxscy9nZGkvZnJlZXR5cGUuYywgZGxscy9nZGkvbWZkcnYvb2JqZWN0cy5jLAoJICBkbGxzL2dkaS93aW4xNmRydi9pbml0LmMsIGRsbHMvbnRkbGwvc2lnbmFsX3Bvd2VycGMuYywKCSAgZGxscy90dHlkcnYvb2JqZWN0cy5jLCBkbGxzL3R0eWRydi90dHlkcnYuaCwKCSAgZGxscy90dHlkcnYvdHR5ZHJ2X21haW4uYywgZGxscy90dHlkcnYvdXNlci5jLAoJICBkbGxzL3gxMWRydi94MTFmb250LmgsIGdyYXBoaWNzL2ZvbnRlbmdpbmUuYywgZ3JhcGhpY3MvcGFpbnRpbmcuYywKCSAgZ3JhcGhpY3MvcGF0aC5jLCBncmFwaGljcy94MTFkcnYveGZvbnQuYywgaW5jbHVkZS9mb250LmgsCgkgIGluY2x1ZGUvZ2RpLmgsIGluY2x1ZGUvcGF0aC5oLCBpbmNsdWRlL3gxMWZvbnQuaCwgbG9hZGVyL3Rhc2suYywKCSAgb2JqZWN0cy9kYy5jLCBvYmplY3RzL2ZvbnQuYywgb2JqZWN0cy9nZGlvYmouYzoKCU1lcmdlZCBmb250LmggYW5kIHBhdGguaCBpbnRvIGdkaS5oLiBNb3ZlZCB4MTFmb250LmggdG8KCWRsbHMveDExZHJ2LiBSZW1vdmVkIGEgbnVtYmVyIG9mIHVubmVjZXNzYXJ5ICNpbmNsdWRlcy4KCgkqIHRvb2xzL3dpZGwvaGVhZGVyLmMsIHRvb2xzL3dpZGwvaGVhZGVyLmgsIHRvb2xzL3dpZGwvcGFyc2VyLmwsCgkgIHRvb2xzL3dpZGwvcGFyc2VyLnksIHRvb2xzL3dpZGwvcHJveHkuYywgdG9vbHMvd2lkbC93aWRsLmMsCgkgIHRvb2xzL3dpZGwvd2lkbC5oLCB0b29scy93aWRsL3dpZGx0eXBlcy5oOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglQYXJzZSB0aGUgTk9UIG9wZXJhdG9yLCB0aGUgW2lkZW1wb3RlbnRdIGF0dHJpYnV0ZSwgYW5kIHRoZSBoYW5kbGVfdAoJYW5kIGVycm9yX3N0YXR1c190IHR5cGVzLiBJbXByb3ZlZCBzb21lIHBhcnNpbmcgcnVsZXMgdG8gZ2V0IHJpZCBvZgoJdGhlIExJTktfTEFTVCBhbmQgTElOS19TQUZFIG1hY3Jvcy4gRW5jbG9zZSBnZW5lcmF0ZWQgLmggZmlsZSB3aXRoaW4KCWFuIGV4dGVybiAiQyIgKGZvciBDKyspLiBPdXRwdXQgZnVuY3Rpb24gcHJvdG90eXBlcyBmb3IgcmVndWxhciBSUEMKCWludGVyZmFjZXMuICBGaXhlZCBhIGNvdXBsZSBvZiBidWdzLgoKCSogZGxscy93aW5lZG9zL2ludDIxLmMsIG1zZG9zL2ludDIxLmM6IEp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCUNsZWFuIHVwIGludDIxIGhhbmRsaW5nLiBNb3ZlIGVycm9yIGhhbmRsaW5nIHRvIHdpbmVkb3MuCglDYWxsIElOVF9JbnQyMUhhbmRsZXIgb25seSB0byBlbXVsYXRlIHNlbGVjdGVkIGZ1bmN0aW9ucy4KCjIwMDItMTItMDIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBkbGxzL3dpbmVkb3MvTWFrZWZpbGUuaW4sCgkgIGRsbHMvd2luZWRvcy9kb3NleGUuaCwgZGxscy93aW5lZG9zL2Rvc3ZtLmMsIGRsbHMvd2luZWRvcy9oaW1lbS5jLAoJICBkbGxzL3dpbmVkb3MvaW50NjcuYywgaW5jbHVkZS9taXNjZW11LmgsIG1zZG9zL2Rvc21lbS5jOgoJSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJTW92ZSBEUE1JIHNlZ21lbnRzIHRvIHdpbmVkb3MuCgoJKiBkbGxzL2RkcmF3L2QzZHRleHR1cmUuYywgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gb25seSBoYW5kbGUgbWVtb3J5IGFsbG9jYXRpb24gZm9yIG5vbi1hbHJlYWR5IGxvYWRlZCB0ZXh0dXJlcwoJLSBpbXBsZW1lbnQgR2V0Q2FwcyBmb3IgRDNERGV2aWNlNwoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvcnBjcnQ0L01ha2VmaWxlLmluLAoJICBkbGxzL3JwY3J0NC9ycGNfYmluZGluZy5oLCBkbGxzL3JwY3J0NC9ycGNfZXBtYXAuYywKCSAgZGxscy9ycGNydDQvcnBjcnQ0LnNwZWMsIGRsbHMvcnBjcnQ0L3JwY3J0NF9tYWluLmMsCgkgIGRsbHMvcnBjcnQ0L3JwY3NzX25wX2NsaWVudC5jLCBkbGxzL3JwY3J0NC9ycGNzc19ucF9jbGllbnQuaCwKCSAgaW5jbHVkZS9ycGNkY2UuaCwgaW5jbHVkZS9ycGNkY2VwLmgsIGluY2x1ZGUvcnBjbmRyLmgsCgkgIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbmUvcnBjc3Nfc2hhcmVkLmgsCgkgIHByb2dyYW1zL01ha2VmaWxlLmluLCBwcm9ncmFtcy9ycGNzcy8uY3ZzaWdub3JlLAoJICBwcm9ncmFtcy9ycGNzcy9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvcnBjc3MvZXBtYXBfc2VydmVyLmMsCgkgIHByb2dyYW1zL3JwY3NzL25wX3NlcnZlci5jLCBwcm9ncmFtcy9ycGNzcy9ycGNzcy5oLAoJICBwcm9ncmFtcy9ycGNzcy9ycGNzc19tYWluLmM6CglHcmVnIFR1cm5lciA8Z210dXJuZXIwMDdAYW1lcml0ZWNoLm5ldD4sCglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCS0gcHJlbGltaW5hcnkgaW1wbGVtZW50YXRpb24gb2YgZW5kcG9pbnQtbWFwcGluZyB2aWEgYSBuZXcgb24tZGVtYW5kCgkgIHNlcnZlci1pc2ggcHJvY2VzcwoJLSBtb3JlIGhlYWRlciBmaXh1cHMKCS0gKHJlKWltcGxlbWVudCBScGNFcFJlZ2lzdGVyQSwgUnBjRXBVbnJlZ2lzdGVyLCBhbmQKCSAgUnBjRXBSZXNvbHZlQmluZGluZyB1c2luZyB0aGUgbmV3IHJwY3NzIGZ1bmN0aW9uYWxpdHkKCS0gdXBkYXRlIHRoZSB0b2RvIGxpc3QgaW4gcnBjcnQ0X21haW4uYyBhIGJpdAoJLSBtYW55IGJlYXV0aWZpY2F0aW9ucyBhbmQgdG91Y2gtdXBzCgktIGNvbW1hbmQtbGluZSBjb25maWd1cmFibGUgdGltZW91dAoJLSBtaWNyby1jbGllbnQgaW1iZWRkZWQgaW4gbnBfc2VydmVyLmMKCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYzogQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJSGFuZGxlIEQzRExJR0hUU1RBVEVfQ09MT1JWRVJURVggdG8gcHJldmVudCBTZXRMaWdodFN0YXRlIGZyb20KCWZhaWxpbmcuCgoJKiBkbGxzL2NhYmluZXQvTWFrZWZpbGUuaW4sIGRsbHMvY2FiaW5ldC9mY2kuYywgZGxscy9jYWJpbmV0L2ZkaS5jLAoJICBpbmNsdWRlL2ZjaS5oLCBpbmNsdWRlL2ZkaS5oOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglBZGRlZCBGSVhNRTpzIGluIHRoZSBzdHVicy4KCgkqIGRsbHMvZGRyYXcvZDNkX3ByaXZhdGUuaCwgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWFpbi5jLAoJICBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsIGRsbHMvZGRyYXcvZDNkdGV4dHVyZS5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gaW1wbGVtZW50IHRoZSB0ZXh0dXJpbmcgdGhlIEQzRDMgd2F5CgktIHByZXBhcmUgZm9yIG11bHRpLXRleHR1cmluZyBzdXBwb3J0CgoJKiBpbmNsdWRlL3dpbmdkaS5oOiBPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCVByb3RlY3QgUEFMRVRURUVOVFJZIGFuZCBMT0dQQUxFVFRFIHdpdGggI2lmbmRlZnMuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBkbGxzL3dpbmVkb3MvaW50MjEuYywgbXNkb3MvZHBtaS5jLAoJICBtc2Rvcy9pbnQyMS5jOgoJSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJUmVuYW1lIG9sZCBET1MzQ2FsbCBhcyBJTlRfSW50MjFIYW5kbGVyIGFuZCBtYWtlIG5ldyBET1MzQ2FsbCBjYWxsCglkaXJlY3RseSB3aW5lZG9zIGludDIxIGhhbmRsZXIuCgoJKiBkbGxzL3dpbmVkb3MvaW50MTMuYywgd2luMzIvZGV2aWNlLmM6IEp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCU1vdmUgaW50MTMgaGFuZGxlciB0byB3aW5lZG9zLgoKCSogZGxscy93aW5tbS9taWRpbWFwL21pZGltYXAuYzogSmVmZiBTbWl0aCA8d2h5ZG91YnRAaG90bWFpbC5jb20+CglGaXggZm9yIE1JREkgTWFwcGVyLgoKCSogY29udHJvbHMvYnV0dG9uLmMsIGNvbnRyb2xzL2NvbWJvLmMsIGNvbnRyb2xzL2VkaXQuYywKCSAgZGxscy9hdmlmaWwzMi9hY21zdHJlYW0uYywgZGxscy9hdmlmaWwzMi9hcGkuYywKCSAgZGxscy9hdmlmaWwzMi9hdmlmaWxlLmMsIGRsbHMvYXZpZmlsMzIvZXh0cmFjaHVuay5jLAoJICBkbGxzL2F2aWZpbDMyL2dldGZyYW1lLmMsIGRsbHMvYXZpZmlsMzIvaWNtc3RyZWFtLmMsCgkgIGRsbHMvYXZpZmlsMzIvd2F2ZmlsZS5jLCBkbGxzL2NvbWN0bDMyL2FuaW1hdGUuYywKCSAgZGxscy9jb21jdGwzMi9jb21ib2V4LmMsIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYywKCSAgZGxscy9jb21jdGwzMi9kYXRldGltZS5jLCBkbGxzL2NvbWN0bDMyL2ZsYXRzYi5jLAoJICBkbGxzL2NvbWN0bDMyL2hlYWRlci5jLCBkbGxzL2NvbWN0bDMyL2hvdGtleS5jLAoJICBkbGxzL2NvbWN0bDMyL2lwYWRkcmVzcy5jLCBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmMsCgkgIGRsbHMvY29tY3RsMzIvbW9udGhjYWwuYywgZGxscy9jb21jdGwzMi9uYXRpdmVmb250LmMsCgkgIGRsbHMvY29tY3RsMzIvcGFnZXIuYywgZGxscy9jb21jdGwzMi9wcm9ncmVzcy5jLAoJICBkbGxzL2NvbWN0bDMyL3JlYmFyLmMsIGRsbHMvY29tY3RsMzIvc3RhdHVzLmMsIGRsbHMvY29tY3RsMzIvdGFiLmMsCgkgIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jLCBkbGxzL2NvbWN0bDMyL3Rvb2x0aXBzLmMsCgkgIGRsbHMvY29tY3RsMzIvdHJhY2tiYXIuYywgZGxscy9jb21jdGwzMi90cmVldmlldy5jLAoJICBkbGxzL2NvbWN0bDMyL3VwZG93bi5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmMsCgkgIGRsbHMvZGRyYXcvZHN1cmZhY2UvZGliLmMsIGRsbHMvaW1tMzIvaW1tLmMsCgkgIGRsbHMva2VybmVsL3Rlc3RzL2FsbG9jLmMsIGRsbHMvbXNhY20vZmlsdGVyLmMsIGRsbHMvbXNhY20vZm9ybWF0LmMsCgkgIGRsbHMvbXNhY20vaW1hYWRwMzIvaW1hYWRwMzIuYywgZGxscy9tc2FjbS9tc2FjbTMyX21haW4uYywKCSAgZGxscy9tc2FjbS9tc2FkcDMyL21zYWRwMzIuYywgZGxscy9tc2FjbS9tc2c3MTEvbXNnNzExLmMsCgkgIGRsbHMvbXNhY20vcGNtY29udmVydGVyLmMsIGRsbHMvbXNhY20vc3RyZWFtLmMsCgkgIGRsbHMvbXNhY20vd2luZW1wMy9tcGVnbDMuYywgZGxscy9tc3ZpZGVvL21jaXduZC5jLAoJICBkbGxzL21zdmlkZW8vbXN2aWRlb19tYWluLmMsIGRsbHMvb2xlMzIvb2xlMnN0dWJzLmMsCgkgIGRsbHMvcmljaGVkaXQvcmljaGVkaXQuYywgZGxscy9zZXR1cGFwaS92aXJ0Y29weS5jLAoJICBkbGxzL3NoZWxsMzIvY29udHJvbC5jLCBkbGxzL3NoZWxsMzIvZGlhbG9ncy5jLAoJICBkbGxzL3NoZWxsMzIvc2hsZXhlYy5jLCBkbGxzL3NobHdhcGkvYXNzb2MuYywKCSAgZGxscy9zaGx3YXBpL29yZGluYWwuYywgZGxscy9zaGx3YXBpL3JlZy5jLAoJICBkbGxzL3NobHdhcGkvcmVnc3RyZWFtLmMsIGRsbHMvc2hsd2FwaS90ZXN0cy9zaHJlZy5jLAoJICBkbGxzL3R0eWRydi9iaXRtYXAuYywgZGxscy90dHlkcnYvd25kLmMsIGRsbHMvdXNlci9kZGUvY2xpZW50LmMsCgkgIGRsbHMvdXNlci9kZGUvbWlzYy5jLCBkbGxzL3VzZXIvZGRlL3NlcnZlci5jLCBkbGxzL3VzZXIvcmVzb3VyY2UuYywKCSAgZGxscy93aW5lZG9zL3ZnYS5jLCBkbGxzL3gxMWRydi93aW5wb3MuYywgZ3JhcGhpY3MvcGF0aC5jLAoJICBvYmplY3RzL2VuaG1ldGFmaWxlLmMsIHByb2dyYW1zL3dpbmVjb25zb2xlL3VzZXIuYywKCSAgcHJvZ3JhbXMvd2ludmVyL3dpbnZlci5jLCB3aW5kb3dzL2RpYWxvZy5jLCB3aW5kb3dzL211bHRpbW9uLmMsCgkgIHdpbmRvd3MvcGFpbnRpbmcuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJUmVtb3ZlZCB1bm5lY2Vzc2FyeSBIQU5ETEUgdHlwZWNhc3RzLgoKMjAwMi0xMS0zMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYzogQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJQWRkIEQzRCBjYXBhYmlsaXR5LgoKCSogZGxscy9kZHJhdy9kM2RfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsCgkgIGRsbHMvZGRyYXcvZDNkdmVydGV4YnVmZmVyLmMsIGRsbHMvZGRyYXcvZGlyZWN0M2QvbWVzYS5jLAoJICBkbGxzL2RkcmF3L2hlbHBlci5jLCBkbGxzL2RkcmF3L21lc2FfcHJpdmF0ZS5oLCBpbmNsdWRlL2RkcmF3Lmg6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSBhY3R1YWxseSB1c2UgdGhlIFZlcnRleEJ1ZmZlciBzdHVicwoJLSBpbXBsZW1lbnQgTG9jayBmdW5jdGlvbiB0byBwcmV2ZW50IGNyYXNoIHdoZW4gdGhlIHN0dWJzIGFyZSB1c2VkCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsIGRsbHMvZGRyYXcvZGlyZWN0M2QvbWVzYS5jLAoJICBkbGxzL2RkcmF3L21lc2FfcHJpdmF0ZS5oOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUJlZ2lubmluZyBvZiBzdXBwb3J0IGZvciBEM0Q3IC8gRDNERGV2aWNlNy4KCgkqIGRsbHMvTWFrZWRsbC5ydWxlcy5pbiwgZGxscy9NYWtldGVzdC5ydWxlcy5pbiwgcHJvZ3JhbXMvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL01ha2Vwcm9nLnJ1bGVzLmluLCBwcm9ncmFtcy9hdml0b29scy9NYWtlZmlsZS5pbjoKCVJlbW92ZWQgc29tZSBjaGVja2xpbmsgcnVsZXMgbWFkZSB1bm5lY2Vzc2FyeSBieSB0aGUgLXogZGVmcyBsaW5rZXIKCWZsYWcuCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsIGRsbHMvZGRyYXcvbWVzYV9wcml2YXRlLmg6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJIC0gc29tZSBtb3JlIGNvZGUgc2hhcmluZyBiZXR3ZWVuIEQzRERldmljZSB2ZXJzaW9ucwoJIC0gaW1wbGVtZW50YXRpb24gb2YgRDNERlZGX1RMVkVSVEVYIGZvcm1hdCBmYXN0IHBhdGgKCgkqIGluY2x1ZGUvbXN2Y3J0L3N0ZGRlZi5oOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQWRkIGEgd2F5IHRvIHRlbGwgbXN2Y3J0IHRvIGRlZmluZSB3Y2hhcl90LgoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLCBkbGxzL2RkcmF3L2QzZHZpZXdwb3J0LmMsCgkgIGRsbHMvZGRyYXcvbWVzYV9wcml2YXRlLmg6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJIC0gZml4ZWQgRDNERlZGX1ZFUlRFWCBjYXNlCgkgLSBzb21lIG90aGVyIG1pc2NlbGxhbmVvdXMgZml4ZXMKCgkqIHByb2dyYW1zL3dpbmVkYmcvUkVBRE1FOiBWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglDaGFuZ2UgQ1JMRiBlbmQgb2YgbGluZXMgaW4gTEYgb25seS4KCgkqIGRsbHMvZGRyYXcvZDNkdmlld3BvcnQuYywgZGxscy9kZHJhdy9kZHJhd19wcml2YXRlLmgsCgkgIGRsbHMvZGRyYXcvaGVscGVyLmMsIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgkgLSBzdGFydCBvZiBzdXBwb3J0IGZvciBkZXZpY2UgbG9ja2luZyAvIHVubG9ja2luZyB2aWEgZ2xSZWFkUGl4ZWxzIC8KCSAgIGdsRHJhd1BpeGVscyBpbnRlcmZhY2UgKHNsb3cgYnV0IHNob3VsZCBiZSBlbm91Z2ggZm9yIGEgc3RhcnQpCgkgLSBpbXBsZW1lbnQgb25lIHZlcnRleCBjYXNlIGZvciB0aGUgRDNEMy83IERyYXdQcmltaXRpdmUgZnVuY3Rpb25zCgkgLSBmaXggYSBtaXNzaW5nIFxuIGluIGEgVFJBQ0UgY2FsbAoKCSogZGxscy9rZXJuZWwvbmxzL2JlbC5ubHM6IEhsZWIgVmFsb3NrYSA8ZWxfZ2xvYnVzQHR1dC5ieT4KCVNvbWUgZml4ZXMgdG8gQmVsYXJ1c2lhbiBsb2NhbGUuCgoJKiB0b29scy93aW5hcGkvbXN2Y21ha2VyOiBQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gRml4ZWQgYnVnIGNhdXNlZCBieSBjaGFuZ2VzIHRvIFdpbmUuCgktIEFkZGVkIHN1cHBvcnQgZm9yIHJ1bm5pbmcgYWxsIHRoZSB0ZXN0cyBpbiBiYXRjaC4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL3RocmVhZC5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCXtHZXQsU2V0fVRocmVhZFByaW9yaXR5Qm9vc3QgYW5kIFNldFRocmVhZElkZWFsUHJvY2Vzc29yIGFyZSBtaXNzaW5nCglvbiBXaW45NSAtPiB1c2UgR2V0UHJvY0FkZHJlc3MuCglDbGVhbnVwIHRoZSBoYW5kbGluZyBvZiBPcGVuVGhyZWFkLgoJQ2hlY2sgU3VzcGVuZFRocmVhZCBhZnRlciBhIHRocmVhZCB0ZXJtaW5hdGVzIChuZWVkZWQgYnkgSXBpeCkuCglSZW1vdmUgdW5uZWNlc3NhcnkgdmVyc2lvbiBjaGVja3MgKGNoZWNrIGZvcgoJRVJST1JfQ0FMTF9OT1RfSU1QTEVNRU5URUQgYW5kIHNpbWlsYXIgaW5zdGVhZCkuCglDbGVhbnVwIGNhc3RzLCBzaWduZWQvdW5zaWduZWQgY29tcGFyaXNvbnMuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9kcml2ZS5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUdldERpc2tGcmVlU3BhY2UoYWxsIE5VTExzKSBjcmFzaGVzIG9uIE5UNCAtPiByZW1vdmVkLgoJR2V0RGlza0ZyZWVTcGFjZSgiLiIgfCAiLi4iKSBmYWlscyBvbiBXaW45OCBhbmQgTlQ0IGJ1dCBzdWNjZWVkcyBvbiBYUAoJLT4gcmVtb3ZlZC4KCVNraXAgdGhlIEdldERpc2tGcmVlU3BhY2UgdGVzdHMgb24gZmxvcHB5IGRyaXZlcyBiZWNhdXNlIE5UIHBvcHMgdXAgYQoJTWVzc2FnZUJveCBpZiBubyBmbG9wcHkgaXMgcHJlc2VudC4KCUZpeCB0aGUgZXJyb3IgY29kZSBjaGVja3MgdG8gdGFrZSBpbnRvIGFjY291bnQgdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4KCVdpbjl4LCBOVDQgYW5kIFhQLgoJU2tpcCB0aGUgdW5pY29kZSB0ZXN0cyBpZiB0aGUgZmlyc3QgY2FsbCByZXR1cm5zCglFUlJPUl9DQUxMX05PVF9JTVBMRU1FTlRFRC4KCVdoZW5ldmVyIGEgdGVzdCBmYWlscywgcHJpbnQgc3VmZmljaWVudCBpbmZvcm1hdGlvbiAodHlwaWNhbGx5IHJldHVybgoJY29kZSBhbmQgR2V0TGFzdEVycm9yKCkhKSB0byBsZXQgdGhlIGRldmVsb3BlciBmaWd1cmUgb3V0IHdoYXQgaXMKCXdyb25nLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvZW52aXJvbi5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVNldEVudmlyb25tZW50VmFyaWFibGVBKE5VTEwsIE5VTEwpIGNyYXNoZXMgb24gV2luOTggLT4gcmVtb3ZlZC4KCVNldEVudmlyb25tZW50VmFyaWFibGVBKCIiLCB2YWx1ZSkgY3Jhc2hlcyBvbiBOVDQgLT4gcmVtb3ZlZC4KCVRoZSBiZWhhdmlvciBvZiBTZXRFbnZpcm9ubWVudFZhcmlhYmxlQSgiIiwgIiIpIHZhcmllcyB0byBtdWNoIC0+CglyZW1vdmVkLgoJVGVzdCB0aGUgYmVoYXZpb3Igb2YgU2V0RW52aXJvbm1lbnRWYXJpYWJsZXtBLFd9KG5hbWUsICIiKSB0YWtpbmcgaW50bwoJYWNjb3VudCB0aGUgZGlmZmVyZW5jZXMgYmV0d2VlbiBXaW45eCBhbmQgTlQuCglUZXN0IHRoZSBiZWhhdmlvciBvZiBHZXRFbnZpcm9ubWVudFZhcmlhYmxle0EsV30obmFtZSwgYnVmLCAwKS4KCUZpeCB0aGUgZXJyb3IgY29kZSBjaGVja3MgdG8gdGFrZSBpbnRvIGFjY291bnQgdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4KCVdpbjl4LCBOVDQgYW5kIFhQLgoJU2tpcCB0aGUgdW5pY29kZSB0ZXN0cyBpZiB0aGUgZmlyc3QgY2FsbCByZXR1cm5zCglFUlJPUl9DQUxMX05PVF9JTVBMRU1FTlRFRC4KCVdoZW5ldmVyIGEgdGVzdCBmYWlscywgcHJpbnQgc3VmZmljaWVudCBpbmZvcm1hdGlvbiAodHlwaWNhbGx5IHJldHVybgoJY29kZSBhbmQgR2V0TGFzdEVycm9yKCkhKSB0byBsZXQgdGhlIGRldmVsb3BlciBmaWd1cmUgb3V0IHdoYXQgaXMKCXdyb25nLgoKCSogZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLAoJICBpbmNsdWRlL3NoZWxsYXBpLmg6CglSb2xmIEthbGJlcm1hdHRlciA8cm9sZi5rYWxiZXJtYXR0ZXJAY2l0ZW5nLmNvbT4KCUFkZGVkIHN0dWIgaW1wbGVtZW50YXRpb24gd2l0aCBjb3JyZWN0IHByb3RvdHlwZXMgZm9yCglFeHRyYWN0QXNzb2NpYXRlZEljb25FeEEvVy4KCgkqIHByb2dyYW1zL01ha2VmaWxlLmluOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJTWFrZSB3Y21kIGF2YWlsYWJsZSBmcm9tIGluc2lkZSB0aGUgc291cmNlIHRyZWUuCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tYWluLmM6IExpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglJbXBsZW1lbnRlZCBHZXRSZW5kZXJUYXJnZXQuCgoJKiBkbGxzL2RkcmF3L2RpcmVjdDNkL21lc2EuYzogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUFkZGVkIGVudW1lcmF0aW9uIG9mIFpCdWZmZXIgZm9ybWF0LgoKCSogZG9jdW1lbnRhdGlvbi9kZWJ1Z2dlci5zZ21sOgoJVG9ueSBMYW1icmVndHMgPHRvbnlfbGFtYnJlZ3RzQHRlbHVzcGxhbmV0Lm5ldD4KCVVwZGF0ZSB0aGUgZGVidWdnZXIgZG9jdW1lbnRhdGlvbiBmb3IgY3VycmVudCB1c2FnZS4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL3RocmVhZC5jLCBzY2hlZHVsZXIvdGhyZWFkLmM6CglQYXJ0aWFsbHkgaW1wbGVtZW50ZWQga2VybmVsL3VzZXIgdGltZXMgaW4gR2V0VGhyZWFkVGltZXMgKGJhc2VkIG9uIGEKCXBhdGNoIGJ5IFJ5YW4gQ3VtbWluZykuCgoJKiBkbGxzL29wZW5nbDMyL3dnbC5jOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJSW1wbGVtZW50IHdnbENyZWF0ZUxheWVyQ29udGV4dCBmb3IgbGF5ZXIgMC4KCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21haW4uYzogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCURvIG5vdCBmb3JnZXQgdG8gQWRkUmVmIHRoZSByZXR1cm5lZCBEaXJlY3QzRCBpbnRlcmZhY2UuCgoJKiBkbGxzL3gxMWRydi94MTFkZHJhdy5jOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJQWRkIEREQ0FQUzJfQ0FOUkVOREVSV0lORE9XRUQgY2FwYWJpbGl0aWVzIHRvIG91ciBERHJhdyBkcml2ZXIuCgoJKiBpbmNsdWRlL3dpbmJhc2UuaDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBZGRlZCBkZWNsYXJhdGlvbiBmb3IgU2lnbmFsT2JqZWN0QW5kV2FpdC4KCgkqIGluY2x1ZGUvbXN2Y3J0L3N0ZGxpYi5oOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFkZGVkIGNvbnN0YW50cyBmb3IgX3NldF9lcnJvcl9tb2RlKCkuCgoJKiBkbGxzL3dpbm1tL3dpbm1tLmM6IEplZmYgU21pdGggPHdoeWRvdWJ0QGhvdG1haWwuY29tPgoJRml4ZWQgMzIgYml0IGZsYWcgaW4gbWlkaU91dFNob3J0TXNnLgoKCSogaW5jbHVkZS9kZHJhdy5oOiBDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglSZXBsYWNlIExQRERTVVJGQUNFREVTQyBieSBMUEREU1VSRkFDRURFU0MyIGluIElEaXJlY3REcmF3U3VyZmFjZTQKCW1ldGhvZHMgZGVjbGFyYXRpb24uCgoJKiBkbGxzL3dpbmVkb3MvaW50MTAuYzogQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJRml4ZWQgdGV4dCBtb2RlIHZhbHVlLgoKCSogaW5jbHVkZS9tbXN5c3RlbS5oOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQWRkIHRoZSA0OCBhbmQgOTZrSHogV0FWRV9GT1JNQVQgY29uc3RhbnRzLgoKCSogdG9vbHMvd2lkbC9oZWFkZXIuYywgdG9vbHMvd2lkbC9oZWFkZXIuaCwgdG9vbHMvd2lkbC9wYXJzZXIuaCwKCSAgdG9vbHMvd2lkbC9wYXJzZXIubCwgdG9vbHMvd2lkbC9wYXJzZXIueSwgdG9vbHMvd2lkbC93aWRsdHlwZXMuaDoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJSGFuZGxlIGVuY2Fwc3VsYXRlZCB1bmlvbnMgaW4gYSBjbGVhbmVyIChhbmQgbGVzcyBidWdneSkgd2F5LiBFbWl0IHRoZQoJbmFtZXMgIkRVTU1ZVU5JT05OQU1FIiBhbmQgIkRVTU1ZU1RSVUNUTkFNRSIgZm9yIGFub255bW91cyB1bmlvbnMgYW5kCglzdHJ1Y3RzLiBTdXBwb3J0IGNvbnN0IGFuZCBleHRlcm4gZGVmaW5pdGlvbnMuIFJldGFpbiB0b2tlbnMgKGFuZAoJd2hldGhlciBudW1iZXJzIGFyZSBoZXggb3Igbm90KSB1c2VkIGZvciBjb21wdXRpbmcgY29uc3RhbnQKCWV4cHJlc3Npb25zLCBzbyB0aGF0IHRoZSBmdWxsIGV4cHJlc3Npb24gY2FuIGJlIHdyaXR0ZW4gdG8gdGhlIGhlYWRlcgoJZmlsZSBpbnN0ZWFkIG9mIHRoZSBjb21wdXRlZCBpbnRlZ2VyIHJlc3VsdCBvZiB0aGUgZXhwcmVzc2lvbi4gUGFyc2UKCXRoZSBzaXplb2YoKSBvcGVyYXRvci4gIENvbXB1dGUgYW5kIHJlbWVtYmVyIGNvbnN0YW50IGRlZmluaXRpb25zIGFuZAoJZW51bSB2YWx1ZXMgc28gdGhleSBjYW4gYmUgdXNlZCBpbiBleHByZXNzaW9ucy4gSW1wcm92ZWQgaWRlbnRpZmllcgoJbG9va3VwIHNwZWVkLiBGaXhlZCBzb21lIGJ1Z3MuCgoJKiBpbmNsdWRlL3d0eXBlcy5pZGw6IE92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJQWRkZWQgbWlzc2luZyB1bmlvbiBuYW1lcyBmb3Igc29tZSBlbmNhcHN1bGF0ZWQgdW5pb25zLgoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSBmaXggY2FwcyBmaWxsaW5nIHRvIGJlIG1vcmUgaW4gbGluZSB3aXRoIHdoYXQgd2Ugc3VwcG9ydAoJLSBvcHRpbWl6ZSBhIGxpdHRsZSBiaXQgdGhlIERyYXdQcmltaXRpdmUgZnVuY3Rpb24KCgkqIGZpbGVzL2ZpbGUuYzogTWFydGluIFdpbGNrIDxNYXJ0aW4uV2lsY2tARnVqaXRzdS1TaWVtZW5zLmNvbT4KCUZpeGVkIHNvbWUgcHJvYmxlbXMgd2l0aCBhc3luY2hyb25vdXMgZmlsZSBJTy4KCjIwMDItMTEtMjcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2RkcmF3L2QzZF9wcml2YXRlLmgsIGRsbHMvZGRyYXcvZDNkdGV4dHVyZS5jLAoJICBkbGxzL2RkcmF3L2RkcmF3L21haW4uYywgZGxscy9kZHJhdy9kZHJhd19wcml2YXRlLmgsCgkgIGRsbHMvZGRyYXcvZHN1cmZhY2UvbWFpbi5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCSAtIGZpeCB0ZXh0dXJlIHNub29waW5nIChwbHVzIGFkZHMgc25vb3AgZm9yIDE1NTUgZm9ybWF0KQoJIC0gYWRkIHRleHR1cmUgbWVtb3J5IHVzYWdlIHRyYWNraW5nCgoJKiBkbGxzL2tlcm5lbC9jb21wdXRlcm5hbWUuYywgZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywKCSAgaW5jbHVkZS93aW5iYXNlLmg6CglTdGV2ZSBMdXN0YmFkZXIgPHN0ZXZlLmx1c3RiYWRlckBwaGlsaXBzLmNvbT4KCVByb3ZpZGUgc3R1YnMgZm9yIERuc0hvc3RuYW1lVG9Db21wdXRlck5hbWVBL1cuCgoJKiBkbGxzL21zdmlkZW8vbXN2ZnczMi5zcGVjLCBkbGxzL21zdmlkZW8vbXN2aWRlb19tYWluLmMsCgkgIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jLCBkbGxzL3dpbmluZXQvd2luaW5ldC5zcGVjOgoJQWRkZWQgZGVmaW5pdGlvbnMgZm9yIGEgY291cGxlIG9mIHN0dWIgZnVuY3Rpb25zIHRoYXQgd2UgaW1wb3J0IHNvCgl0aGF0IHdlIGRvbid0IGltcG9ydCBzdHVicyBkaXJlY3RseS4KCgkqIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywKCSAgZ3JhcGhpY3MveDExZHJ2L29wZW5nbC5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIGlzc3VlcyBmb3VuZCBieSB3aW5hcGlfY2hlY2suCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBkbGxzL250ZGxsL01ha2VmaWxlLmluLAoJICBkbGxzL3dpbmVkb3MvTWFrZWZpbGUuaW4sIGRsbHMvd2luZWRvcy9kb3NleGUuaCwKCSAgZGxscy93aW5lZG9zL2ludDI1LmMsIGRsbHMvd2luZWRvcy9pbnQyNi5jLAoJICBkbGxzL3dpbmVkb3MvaW50ZXJydXB0cy5jLCBpbmNsdWRlL21pc2NlbXUuaCwgbXNkb3MvaW50MjUuYywKCSAgbXNkb3MvaW50MjYuYzoKCUp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCU1vdmVkIGhhbmRsZXJzIGZvciBpbnQyNSBhbmQgaW50MjYgdG8gd2luZWRvcy4KCgkqIG9iamVjdHMvZm9udC5jOiBIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglFbnVtRm9udDE2IHNob3VsZCBlbnVtZXJhdGUgZ2RpIGZvbnRzIHRvby4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCS0gVHlwZXNhZmUgcGFyYW1ldGVycyBmcm9tIFRSRUVWSUVXX05vdGlmeUZvcm1hdC4KCS0gUmV3cml0ZSBUUkVFVklFV19Ob3RpZnlGb3JtYXQuCgktIEZpeCBzZXZlcmFsIGludm9jYXRpb25zIG9mIFRSRUVWSUVXX1NlbmRUcmVldmlld05vdGlmeS4KCgkqIGluY2x1ZGUvd2luYmFzZS5oOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFkZGVkIFN3aXRjaFRvVGhyZWFkLgoKCSogZGxscy9udGRsbC90aW1lLmM6IFZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCUZpeCBmb3IgaW1wbGljaXQgZGVjbGFyYXRpb24gb2YgYWJzLgoKCSogZGxscy94MTFkcnYveHJlbmRlci5jOiBWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglGaXggZm9yIGRlcHJlY2F0ZWQgdXNlIG9mIGxhYmVsIGF0IHRoZSBlbmQgb2YgY29tcG91bmQgc3RhdGVtZW50LgoKCSogZGxscy9rZXJuZWwvdGVzdHMvbG9jYWxlLmMsIG9sZS9vbGUybmxzLmM6CglCaWxsIE1lZGxhbmQgPG1lZGJpMDFAYWNjcGFjLmNvbT4KCUNvcnJlY3QgR2V0TnVtYmVyRm9ybWF0QSBmb3IgemVybyBkZWNpbWFscyBhbmQgZm9yIHplcm8gZ3JvdXBpbmcuCgoJKiBwcm9ncmFtcy93aW5oZWxwL3dpbmhlbHAuYzogTWF0dGhldyBEYXZpc29uIDxtLmRhdmlzb25AdmlyZ2luLm5ldD4KCVByZXZlbnQgV2luaGVscCBmcm9tIGNyYXNoaW5nIHdoZW4gaXQgY2FuJ3QgZmluZCB0aGUgaGVscGZpbGUuCgoJKiBpbmNsdWRlL2QzZC5oLCBpbmNsdWRlL2RkcmF3Lmg6CglDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglBZGQgc29tZSBERFJBVyBhbmQgRDNEIGRlZmluaXRpb25zLgoKCSogdG9vbHMvd2luYXBpL29wdGlvbnMucG0sIHRvb2xzL3dpbmFwaS93aW4zMi5hcGksCgkgIHRvb2xzL3dpbmFwaS93aW5hcGkucG0sIHRvb2xzL3dpbmFwaS93aW5hcGlfY2hlY2tfb3B0aW9ucy5wbSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMuZGF0LCB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5wbSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9jaGVjaywgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9sb2NhbC5wbToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBBUEkgZmlsZXMgdXBkYXRlLgoJLSBNaW5vciBpbXByb3ZlbWVudCBhbmQgYnVnIGZpeGVzLgoKMjAwMi0xMS0yNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIEFOTk9VTkNFLCBDaGFuZ2VMb2csIFZFUlNJT04sIGNvbmZpZ3VyZTogUmVsZWFzZSAyMDAyMTEyNS4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KMjAwMi0xMS0yNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBsaWJyYXJ5L3BvcnQuYywKCSAgc2NoZWR1bGVyL3B0aHJlYWQuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgcHRocmVhZHMgb24gRnJlZUJTRCAoYmFzZWQgb24gcGF0Y2ggYnkgQWxleGFuZHJlIEp1bGxpYXJkKS4KCgkqIHdpbmRvd3MvZGlhbG9nLmM6IEFkZGVkIENTX0RCTENMS1Mgc3R5bGUgdG8gZGlhbG9nIHdpbmRvdyBjbGFzcy4KCgkqIG9iamVjdHMvZm9udC5jOiBTaGFjaGFyIFNoZW1lc2ggPHdpbmUtcGF0Y2hlc0BzdW4uY29uc3VtZXIub3JnLmlsPgoJQ2hhbmdlIHNvbWUgb2YgdGhlIG51bWJlciBzZXBlcmF0b3JzIHRvICJOZXV0cmFsIiByYXRoZXIgdGhhbiAiTGVmdCB0bwoJcmlnaHQiLgoKCSogZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgaW5jbHVkZS93aW5iYXNlLmgsIHNjaGVkdWxlci90aW1lci5jOgoJU3RldmUgTHVzdGJhZGVyIDxzdGV2ZS5sdXN0YmFkZXJAcGhpbGlwcy5jb20+CglTdHVicyBmb3IgQ3JlYXRlVGltZXJRdWV1ZSBhbmQgRGVsZXRlVGltZXJRdWV1ZUV4LgoKCSogZGxscy9hZHZhcGkzMi9hZHZhcGkzMi5zcGVjLCBkbGxzL2FkdmFwaTMyL3NlcnZpY2UuYywKCSAgZGxscy9udGRsbC9udGRsbC5zcGVjLCBpbmNsdWRlL3dpbnN2Yy5oOgoJU3RldmUgTHVzdGJhZGVyIDxzdGV2ZS5sdXN0YmFkZXJAcGhpbGlwcy5jb20+CglBc3NvcnRlZCBXaW4yay9XaW5YUCBzdHVicy4KCgkqIGRsbHMvbXN2Y3J0L2ZpbGUuYywgZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWM6CglTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCUNvbnZlcnRlZCBpbXBsZW1lbnRhdGlvbiBvZiBfbHNlZWsgdG8gX2xzZWVraTY0LCBpbXBsZW1lbnRlZCBfbHNlZWsgYnkKCWNhbGxpbmcgX2xzZWVraTY0LgoKCSogZGxscy9hZHZhcGkzMi9yZWdpc3RyeS5jLCBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsCgkgIGluY2x1ZGUvd2lubnQuaCwgc2VydmVyL2hhbmRsZS5jLCBzZXJ2ZXIvb2JqZWN0LmgsCgkgIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci9yZWdpc3RyeS5jLCBzZXJ2ZXIvcmVxdWVzdC5oLAoJICBzZXJ2ZXIvdHJhY2UuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudGVkIHJlZ2lzdHJ5IGNoYW5nZSBub3RpZmljYXRpb25zLgoKCSogZ3JhcGhpY3MveDExZHJ2L2dyYXBoaWNzLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglYMTFEUlZfRHJhd0FyYzogRG9uJ3Qgb3ZlcndyaXRlIHRoZSBFTkRDQVAgc3R5bGUuCgoJKiBncmFwaGljcy94MTFkcnYvcGVuLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglYMTFEUlZfU2VsZWN0UGVuKCk6IERvbid0IHVzZSBhIHBlbiB3aXRoIGhhbGYgdGhlIHdpZHRoLgoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYzoKCUFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCUFkZGVkIHRoZSBtaXNzaW5nIGN4IG1lbWJlciB0byB0aGUgTXlETEdJVEVNVEVNUExBVEVFWCBzdHJ1Y3QuCgoJKiBkbGxzL21zdmNydC9maWxlLmMsIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjOgoJU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtTGluZS5jb20+CglDb252ZXJ0ZWQgaW1wbGVtZW50YXRpb24gb2YgX3N0YXQgYW5kIF9mc3RhdCB0byBfc3RhdGk2NCBhbmQKCV9mc3RhdGk2NC4KCUltcGxlbWVudGVkIF9zdGF0L19mc3RhdCBieSBjYWxsaW5nIF9zdGF0aTY0L19mc3RhdGk2NC4KCgkqIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jOiBKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJQWRkIHN1cHBvcnQgZm9yIFZhckFuZCBiZXR3ZWVuIGludGVnZXJzLgoKCSogZGxscy9kZHJhdy9kZHJhdy9tYWluLmMsIGRsbHMvZGRyYXcvZGRyYXdfcHJpdmF0ZS5oLAoJICBkbGxzL2RkcmF3L2RzdXJmYWNlL21haW4uYywgZGxscy9kZHJhdy9oZWxwZXIuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIFByZXZlbnQgdGhlIGJhY2tidWZmZXIgdG8gYWxzbyBoYXZlIHRoZSBmcm9udGJ1ZmZlciBmbGFnIHNldC4KCS0gTG9nIHRoZSBMb2NraW5nIGZsYWdzLgoJLSBQcmludCBzeW1ib2xpYyBuYW1lIChpZiBhbnkpIG9mIHplcm8gdmFsdWVzIGZvciBiaXQgZmllbGRzICh0aGFua3MKCSAgQW5kaSkuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy90aHJlYWQuYzoKCU1vdmVkIHNvbWUgR2V0VGhyZWFkVGltZXMgdGVzdHMgb3V0IG9mIHRoZSB0b2RvIGJsb2NrLgoKCSogaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLCBzY2hlZHVsZXIvdGhyZWFkLmMsCgkgIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RocmVhZC5oLAoJICBzZXJ2ZXIvdHJhY2UuYzoKCVJ5YW4gQ3VtbWluZyA8cnlhbkBjb21wbGV0ZWx5LmtpY2tzLWFzcy5vcmc+CglQYXJ0aWFsbHkgaW1wbGVtZW50IEdldFRocmVhZFRpbWVzLgoKCSogbWlzYy9yZWdpc3RyeS5jOiBXYXJuaW5ncyBmaXhlcy4KCgkqIGRsbHMva2VybmVsL3RpbWUuYywgZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL250ZGxsL3RpbWUuYywKCSAgaW5jbHVkZS93aW50ZXJubC5oOgoJR3n2cmd5ICdOb2cnIEplbmV5IDxub2dAc2RmLmxvbmVzdGFyLm9yZz4KCS0gTW92ZSBTZXRTeXN0ZW1UaW1lLCBHZXRUaW1lWm9uZUluZm9ybWF0aW9uIGFuZAoJICBTZXRUaW1lWm9uZUluZm9ybWF0aW9uIGltcGxlbWVudGF0aW9uIHRvIG50ZGxsLgoJLSBEb2N1IHVwZGF0ZXMuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglMVk5fR0VURElTUElORk8gc2VlbXMgdG8gYWx3YXlzIGJlIEFuc2kuCgoJKiBvYmplY3RzL2RpYi5jOiBTdGV2ZSBMdXN0YmFkZXIgPHN0ZXZlLmx1c3RiYWRlckBwaGlsaXBzLmNvbT4KCVN0cmV0Y2hESUJpdHM6IGF2b2lkIGNyYXNoIG9uIG51bGwgcG9pbnRlcnMuCgoJKiBjb250cm9scy9zY3JvbGwuYzogUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCUFkZCBzdXBwb3J0IGZvciBwYWludGluZyBTQlNfU0laRUJPWCBzdHlsZSBwcm9wZXJseS4KCjIwMDItMTEtMjQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBkbGxzL250ZGxsL01ha2VmaWxlLmluLAoJICBkbGxzL3dpbmVkb3MvTWFrZWZpbGUuaW4sIGRsbHMvd2luZWRvcy9kb3NleGUuaCwKCSAgZGxscy93aW5lZG9zL2ludDExLmMsIGRsbHMvd2luZWRvcy9pbnQxNS5jLCBkbGxzL3dpbmVkb3MvaW50NWMuYywKCSAgZGxscy93aW5lZG9zL2ludGVycnVwdHMuYywgaW5jbHVkZS9taXNjZW11LmgsIG1zZG9zL2RwbWkuYywKCSAgbXNkb3MvaW50MTEuYywgbXNkb3MvaW50MTUuYywgbXNkb3MvaW50NWMuYzoKCUp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCU1vdmVkIGhhbmRsZXJzIGZvciBpbnQxMSwgaW50MTUgYW5kIGludDVjIHRvIHdpbmVkb3MuCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsIGRsbHMvZGRyYXcvZDNkdGV4dHVyZS5jLAoJICBkbGxzL2RkcmF3L2RpcmVjdDNkL21haW4uYywgZGxscy9kZHJhdy9kaXJlY3QzZC9tYWluLmgsCgkgIGRsbHMvZGRyYXcvZGlyZWN0M2QvbWVzYS5jLCBkbGxzL2RkcmF3L21lc2FfcHJpdmF0ZS5oOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gYWRkIGltcGxlbWVudGF0aW9uIGZvciBGaW5kRGV2aWNlIGZ1bmN0aW9uCgktIHNvbWUgbWlzY2VsbGFuZW91cyBjbGVhbi11cHMgLyBhZGRpdGlvbnMKCgkqIG1pc2MvcmVnaXN0cnkuYzoKCVJlcGxhY2UgbW9zdCBQUk9GSUxFX0dldFdpbmVJbmkgY2FsbHMgYnkgZGlyZWN0IHJlZ2lzdHJ5IGFjY2Vzc2VzLgoJS2VlcCB0aGUgY29uZmlnIGtleSBvcGVuIHRvIHF1ZXJ5IGFsbCB2YWx1ZXMgaW5zdGVhZCBvZiByZS1vcGVuaW5nIGl0CglhbGwgdGhlIHRpbWUuCgoJKiBkb2N1bWVudGF0aW9uL01ha2VmaWxlLmluOgoJQWRkZWQgZGlzdCBydWxlIGZvciBidWlsZGluZyB0aGUgZGlzdHJpYnV0aW9uIHRhcmJhbGxzLgoKCSogZGxscy9zaGVsbDMyL3N5c3RyYXkuYzoKCUFkZGVkIENTX0RCTENMS1Mgc28gdGhhdCBzeXN0cmF5IHJlY2VpdmVzIGRvdWJsZSBjbGlja3MuCgoJKiBkbGxzL3dpbmVkb3MvaW50MTAuYywgZGxscy93aW5lZG9zL2ludDMzLmMsIGRsbHMvd2luZWRvcy92Z2EuYywKCSAgZGxscy93aW5lZG9zL3ZnYS5oOgoJSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJVkdBIHRleHQgbW9kZSBubyBsb25nZXIgZmxpY2tlcnMgYW5kIGl0IGlzIG11Y2ggZmFzdGVyLgoJVkdBIHRleHQgbW9kZSBpcyBub3cgaW5pdGlhbGl6ZWQgZWFybGllci4KCVZHQSB0ZXh0IG1vZGUgaXMgbm93IGVtdWxhdGVkIGV2ZW4gd2l0aG91dCBjb25zb2xlLgoKCSogZGxscy91c2VyL2hvb2suYzogQmlsbCBNZWRsYW5kIDxtZWRiaTAxQGFjY3BhYy5jb20+CglDb3JyZWN0IFVuaG9va1dpbmRvd3NIb29rOiBjbGVhciB0aGUgaGFuZGxlIHNvIHRoYXQgdGhlIHNlcnZlciBkb2Vzbid0Cgl0cnkgdG8gdXNlIGl0LgoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLCBkbGxzL2RkcmF3L2QzZGV4ZWN1dGVidWZmZXIuYywKCSAgZGxscy9kZHJhdy9kaXJlY3QzZC9tYWluLmMsIGRsbHMvZGRyYXcvZGlyZWN0M2QvbWVzYS5jOgoJQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJUmVlbmFibGUgT3BlbkdMIHN1cmZhY2UncyBmbGlwIG1ldGhvZC4KCVJlZW5hYmxlIGV4ZWN1dGUgYnVmZmVycy4KCVNvbWUgYnVnIGZpeGVzLgoKCSogZGxscy9kaW5wdXQvZGlucHV0X21haW4uYzogSmVucyBIb2ZmbWFubiA8aG9mZm1hanNAZ214LmRlPgoJUGFzcyBjb3JyZWN0IGluc3RhbmNlIGluIGtleWJvYXJkX2hvb2sgc2V0dXAuCgoJKiB3aW5kb3dzL21kaS5jLCB3aW5kb3dzL21zZ2JveC5jLCB3aW5kb3dzL25vbmNsaWVudC5jLCB3aW5kb3dzL3dpbi5jOgoJTWF0dGhldyBEYXZpc29uIDxtLmRhdmlzb25AdmlyZ2luLm5ldD4KCUZpeCBzb21lIHVuaWNvZGUtPmFzY2lpIGNhbGxzLgoKCSogdG9vbHMvd2lkbC9wYXJzZXIueTogR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglBdm9pZCB1c2luZyBsYWJlbHMgYXQgdGhlIGVuZCBvZiBjb21tcG91bmQgc3RhdGVtZW50cy4KCjIwMDItMTEtMjMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBmaWxlcy9wcm9maWxlLmMsIGluY2x1ZGUvZmlsZS5oLCBsb2FkZXIvbWFpbi5jOgoJUmVtb3ZlZCBubyBsb25nZXIgbmVlZGVkIFBST0ZJTEVfTG9hZFdpbmVJbmkoKS4KCgkqIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sCgkgIGRsbHMvd2luZWRvcy9NYWtlZmlsZS5pbiwgZGxscy93aW5lZG9zL2Rvc2V4ZS5oLAoJICBkbGxzL3dpbmVkb3MvaW50MmYuYywgZGxscy93aW5lZG9zL2ludGVycnVwdHMuYywgaW5jbHVkZS9taXNjZW11LmgsCgkgIG1zZG9zL2ludDJmLmM6CglKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglNb3ZlIGludDJmIGhhbmRsZXIgdG8gd2luZWRvcy4KCUNsZWFuIHdpbmVkb3MgaGVhZGVycyBhIGJpdC4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkb2N1bWVudGF0aW9uLy5jdnNpZ25vcmUsCgkgIGRvY3VtZW50YXRpb24vTWFrZWZpbGUuaW46CgkgVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJVGhlIGRlZmF1bHQgYmVoYXZpb3Igb2YgIm1ha2UgZXZlcnl0aGluZyIgaXMgbm93IHRvIGJ1aWxkIHNlcGFyYXRlCglndWlkZXMgcmF0aGVyIHRoYW4gdGhlIGJpZyBvbmUuCglEZXRlcm1pbmVzIHRoZSBuYW1lIG9mIHRoZSBpbnN0YWxsZWQgZG9jYm9vayBmaWx0ZXIgKGRiMmh0bWwgb3IKCWRvY2Jvb2syaHRtbCwgZXRjLikgaW4gY29uZmlndXJlLCBkZWZhdWx0aW5nIHRvIGZhbHNlIGlmIGFic2VudC4KCgkqIHdpbmRvd3MvaW5wdXQuYzogTWlrZSBIZWFybiA8bS5oZWFybkBzaWduYWwucWluZXRpcS5jb20+CglBbHRlcmVkIFdNX01PVVNFSE9WRVIgc28gdGhlIGxQYXJhbSBhbmQgd1BhcmFtIGZpZWxkcyBhcmUgc2V0Cgljb3JyZWN0bHkgdG8gdmlydHVhbCBrZXkgc3RhdGVzIGFuZCBjdXJzb3IgcG9zaXRpb24uCgoJKiBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsIGluY2x1ZGUvd2lubnQuaCwKCSAgc2VydmVyL3Byb3RvY29sLmRlZjoKCVJlbW92ZWQgdGhlIFdJTkVfTk9fU1RSSUNUIHN1cHBvcnQuCgoJKiBpbmNsdWRlL2Jhc2V0c2QuaDogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUFsbG93IGFwcHMgdG8gZGVmaW5lICBfX2ludHs4LDE2LDMyLDY0fSBvbiB0aGUgY29tbWFuZCBsaW5lLgoKMjAwMi0xMS0yMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbnRyb2xzL21lbnUuYzogRml4ZWQgdXNlIG9mIEhCTU1FTlVfKiBpbiBzd2l0Y2ggc3RhdGVtZW50cy4KCgkqIGRsbHMvZ2RpL01ha2VmaWxlLmluLCBkbGxzL2dkaS9kcml2ZXIuYywgZGxscy9nZGkvZW5obWZkcnYvaW5pdC5jLAoJICBkbGxzL2dkaS9mcmVldHlwZS5jLCBkbGxzL2dkaS9tZmRydi9pbml0LmMsIGRsbHMvZ2RpL3ByaW50ZHJ2LmMsCgkgIGRsbHMvZ2RpL3dpbjE2ZHJ2L2ZvbnQuYywgZGxscy9nZGkvd2luMTZkcnYvaW5pdC5jLAoJICBkbGxzL2dkaS93aW4xNmRydi90ZXh0LmMsIGdyYXBoaWNzL2JpdGJsdC5jLCBncmFwaGljcy9tYXBwaW5nLmMsCgkgIGdyYXBoaWNzL3BhaW50aW5nLmMsIGdyYXBoaWNzL3BhdGguYywgb2JqZWN0cy9iaXRtYXAuYywKCSAgb2JqZWN0cy9icnVzaC5jLCBvYmplY3RzL2NsaXBwaW5nLmMsIG9iamVjdHMvZGMuYywgb2JqZWN0cy9kaWIuYywKCSAgb2JqZWN0cy9lbmhtZXRhZmlsZS5jLCBvYmplY3RzL2ZvbnQuYywgb2JqZWN0cy9nZGlvYmouYywKCSAgb2JqZWN0cy9tZXRhZmlsZS5jLCBvYmplY3RzL3BhbGV0dGUuYywgb2JqZWN0cy9yZWdpb24uYzoKCU1hZGUgZ2RpIGNvbXBpbGUgd2l0aCAtRFNUUklDVC4KCgkqIGRsbHMvZ2RpL3ByaW50ZHJ2LmMsIG9iamVjdHMvY2xpcHBpbmcuYywgb2JqZWN0cy9kYy5jLAoJICBvYmplY3RzL2dkaW9iai5jLCBvYmplY3RzL21ldGFmaWxlLmM6CglGaXhlZCBhIG51bWJlciBvZiAtRFNUUklDVCBpc3N1ZXMuCgoJKiBjb250cm9scy9jb21iby5jLCBjb250cm9scy9lZGl0LmMsIGNvbnRyb2xzL2xpc3Rib3guYywKCSAgY29udHJvbHMvbWVudS5jLCBjb250cm9scy9zY3JvbGwuYywgY29udHJvbHMvdWl0b29scy5jLAoJICBkbGxzL3VzZXIvTWFrZWZpbGUuaW4sIGRsbHMvdXNlci9jYXJldC5jLCBkbGxzL3VzZXIvY29tbTE2LmMsCgkgIGRsbHMvdXNlci9mb2N1cy5jLCBkbGxzL3VzZXIvaG9vay5jLCBkbGxzL3VzZXIvZGRlL2NsaWVudC5jLAoJICBkbGxzL3VzZXIvZGRlL21pc2MuYywgZGxscy91c2VyL2RkZS9zZXJ2ZXIuYywgZGxscy91c2VyL21lc3NhZ2UuYywKCSAgZGxscy91c2VyL21pc2MuYywgZGxscy91c2VyL21zZzE2LmMsIGRsbHMvdXNlci9wYWludGluZy5jLAoJICBkbGxzL3VzZXIvcmVzb3VyY2UuYywgZGxscy91c2VyL3RleHQuYywgd2luZG93cy9jbGFzcy5jLAoJICB3aW5kb3dzL2NsaXBib2FyZC5jLCB3aW5kb3dzL2N1cnNvcmljb24uYywgd2luZG93cy9kY2UuYywKCSAgd2luZG93cy9kZWZkbGcuYywgd2luZG93cy9kZWZ3bmQuYywgd2luZG93cy9kaWFsb2cuYywKCSAgd2luZG93cy9pbnB1dC5jLCB3aW5kb3dzL21kaS5jLCB3aW5kb3dzL21lc3NhZ2UuYywKCSAgd2luZG93cy9ub25jbGllbnQuYywgd2luZG93cy9wYWludGluZy5jLCB3aW5kb3dzL3NweS5jLAoJICB3aW5kb3dzL3RpbWVyLmMsIHdpbmRvd3MvdXNlci5jLCB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3dpbnBvcy5jLAoJICB3aW5kb3dzL3dpbnByb2MuYzoKCU1hZGUgdXNlciBjb21waWxlIHdpdGggLURTVFJJQ1QuCgoJKiBmaWxlcy9wcm9maWxlLmMsIHRvb2xzL3dpbmVpbnN0YWxsOgoJUmVtb3ZlZCBzdXBwb3J0IGZvciBjb252ZXJ0aW5nIG9sZCBmb3JtYXQgY29uZmlnLCBldmVyeWJvZHkgc2hvdWxkCgloYXZlIGNvbnZlcnRlZCBieSBub3cuCglSZW1vdmVkIGxvZyBpbmZvIGZyb20gd2luZWluc3RhbGwsIHRoaXMgaW5mbyBpcyBhbHJlYWR5IGluIENoYW5nZUxvZy4KCgkqIGNvbnRyb2xzL21lbnUuYywgZGxscy91c2VyL2RkZS9jbGllbnQuYywgZGxscy91c2VyL2RkZS9kZGVtbDE2LmMsCgkgIGRsbHMvdXNlci9kZGUvbWlzYy5jLCBkbGxzL3VzZXIvZGRlL3NlcnZlci5jLCBkbGxzL3VzZXIvbWVzc2FnZS5jLAoJICBpbmNsdWRlL2N1cnNvcmljb24uaCwgaW5jbHVkZS91c2VyLmgsIHdpbmRvd3MvY2xhc3MuYywKCSAgd2luZG93cy9jbGlwYm9hcmQuYywgd2luZG93cy9jdXJzb3JpY29uLmMsIHdpbmRvd3MvZGNlLmMsCgkgIHdpbmRvd3MvZGlhbG9nLmMsIHdpbmRvd3MvbWRpLmMsIHdpbmRvd3Mvc3RydWN0MzIuYywKCSAgd2luZG93cy9zeXNjb2xvci5jLCB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3dpbnByb2MuYzoKCUZpeGVkIG1vcmUgLURTVFJJQ1QgaXNzdWVzLgoKCSogZGxscy91c2VyL3RleHQuYywgZGxscy91c2VyL3VzZXIxNi5jOgoJUHJvcGVybHkgc3BsaXQgdGhlIDE2LWJpdCB2ZXJzaW9ucyBvZiBHcmF5U3RyaW5nIGFuZCBUYWJiZWRUZXh0T3V0LgoKCSogY29udHJvbHMvZWRpdC5jLCBjb250cm9scy9pY29udGl0bGUuYywgY29udHJvbHMvbWVudS5jLAoJICBjb250cm9scy9zY3JvbGwuYywgZGxscy91c2VyL2NhcmV0LmMsIGRsbHMvdXNlci9mb2N1cy5jLAoJICBkbGxzL3VzZXIvcGFpbnRpbmcuYywgZGxscy91c2VyL3Byb3BlcnR5LmMsIGRsbHMvdXNlci90ZXh0LmMsCgkgIGRsbHMvdXNlci91c2VyMTYuYywgd2luZG93cy9jbGFzcy5jLCB3aW5kb3dzL2NsaXBib2FyZC5jLAoJICB3aW5kb3dzL2RjZS5jLCB3aW5kb3dzL21kaS5jLCB3aW5kb3dzL3N5c2NvbG9yLmMsIHdpbmRvd3Mvd2luLmMsCgkgIHdpbmRvd3Mvd2luaGVscC5jLCB3aW5kb3dzL3dpbnByb2MuYzoKCU1vdmVkIHNvbWUgbW9yZSAxNi1iaXQgZnVuY3Rpb25zIHRvIHVzZXIxNi5jLgoJQSBmZXcgZml4ZXMgZm9yIC1EU1RSSUNULgoKCSogZGxscy9vbGUzMi9NYWtlZmlsZS5pbiwgZGxscy9vbGUzMi9jbGlwYm9hcmQuYywKCSAgZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvZGF0YWNhY2hlLmMsIGRsbHMvb2xlMzIvb2xlMi5jLAoJICBkbGxzL29sZTMyL29sZTJzdHVicy5jLCBkbGxzL29sZTMyL29sZTMyX21haW4uYywgZGxscy9vbGUzMi9ycGMuYywKCSAgZGxscy9vbGUzMi9zdG9yYWdlLmM6CglDb21waWxlIG9sZTMyIHdpdGggLURTVFJJQ1QuCgoyMDAyLTExLTIxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9zaGVsbDMyL01ha2VmaWxlLmluLCBkbGxzL3NoZWxsMzIvYnJzZm9sZGVyLmMsCgkgIGRsbHMvc2hlbGwzMi9jaGFuZ2Vub3RpZnkuYywgZGxscy9zaGVsbDMyL2NvbnRyb2wuYywKCSAgZGxscy9zaGVsbDMyL2RpYWxvZ3MuYywgZGxscy9zaGVsbDMyL2RyYWdkcm9waGVscGVyLmMsCgkgIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYywgZGxscy9zaGVsbDMyL21lbW9yeXN0cmVhbS5jLAoJICBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvc2hlbGwuYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYywgZGxscy9zaGVsbDMyL3NoZWxsb2xlLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbHJlZy5jLCBkbGxzL3NoZWxsMzIvc2hmbGRyX2Rlc2t0b3AuYywKCSAgZGxscy9zaGVsbDMyL3NoZmxkcl9mcy5jLCBkbGxzL3NoZWxsMzIvc2hmbGRyX215Y29tcC5jLAoJICBkbGxzL3NoZWxsMzIvc2hsZXhlYy5jLCBkbGxzL3NoZWxsMzIvc2hsbWVudS5jLAoJICBkbGxzL3NoZWxsMzIvc2hsdmlldy5jLCBkbGxzL3NoZWxsMzIvc2h2X2JnX2NtZW51LmMsCgkgIGRsbHMvc2hlbGwzMi9zaHZfaXRlbV9jbWVudS5jLCBkbGxzL3NoZWxsMzIvc3lzdHJheS5jOgoJSm9oYW4gRGFobGluIDxqZGFobGluQGFzeW5jLmNvbS5icj4KCU1ha2Ugc2hlbGwzMiBjb21waWxlIHdpdGggLURTVFJJQ1QuCgoJKiBkbGxzL2NvbW1kbGcvTWFrZWZpbGUuaW4sIGRsbHMvY29tbWRsZy9jZGxnLmgsCgkgIGRsbHMvY29tbWRsZy9jZGxnMzIuYywgZGxscy9jb21tZGxnL2NvbG9yZGxnLmMsCgkgIGRsbHMvY29tbWRsZy9maWxlZGxnLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYywKCSAgZGxscy9jb21tZGxnL2ZpbmRkbGczMi5jLCBkbGxzL2NvbW1kbGcvZm9udGRsZy5jLAoJICBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYzoKCUFuZHJldyBKb2huIEh1Z2hlcyA8aHVnaGVzMjAwMkBidGludGVybmV0LmNvbT4KCU1ha2UgY29tbWRsZyBjb21waWxlIHdpdGggLURTVFJJQ1QuCgoJKiB0b29scy93aW5laW5zdGFsbDogTWF0dGhldyBEYXZpc29uIDxtLmRhdmlzb25AdmlyZ2luLm5ldD4KCVJlbW92ZSBvYnNvbGV0ZSAtLWVuYWJsZS1vcGVuZ2wuCgoJKiBvYmplY3RzL2NsaXBwaW5nLmMsIG9iamVjdHMvZW5obWV0YWZpbGUuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgYWxpYXNpbmcgcHJvYmxlbXMgKGRvIG5vdCB1c2UgKFBPSU5UKikmcmVjdCBjb25zdHJ1Y3RzKS4KCgkqIGRsbHMva2VybmVsL2NvbnNvbGUuYywgaW5jbHVkZS93aW5jb24uaDoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSGFuZGxlIHRoZSBDT09SRCA8LT4gRFdPUkQgY29udmVyc2lvbiB0aGUgY2Fub25pY2FsIHdheS4KCgkqIGRsbHMvdXNlci9tZXNzYWdlLmM6IFN0ZXZlIEx1c3RiYWRlciA8c3RldmUubHVzdGJhZGVyQHBoaWxpcHMuY29tPgoJSGF2ZSBQb3N0TWVzc2FnZSBjYWxsIFBvc3RUaHJlYWRNZXNzYWdlIHdoZW4gaHduZCBpcyBOVUxMLgoKCSogaW5jbHVkZS93aW5zb2NrLmg6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglBZGQgZGVmaW5pdGlvbiBmb3IgV1NBRURJU0NPTi4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjOiBSZW1vdmVkIE9wZW5HTCB0aHJlYWQgc2FmZXR5IGNoZWNrLgoJUmVuYW1lZCBvcHRpb24gdG8gLS13aXRob3V0LW9wZW5nbCBmb3IgY29uc2lzdGVuY3kuCgoJKiBkbGxzL2dkaS9lbmhtZmRydi9vYmplY3RzLmMsIGRsbHMvZ2RpL21mZHJ2L2luaXQuYywKCSAgZGxscy9nZGkvbWZkcnYvb2JqZWN0cy5jLCBkbGxzL2dkaS93aW5nLmMsIGRsbHMvZ2RpL3dpbjE2ZHJ2L2ZvbnQuYywKCSAgZGxscy9nZGkvd2luMTZkcnYvZ3JhcGhpY3MuYywgZGxscy9nZGkvd2luMTZkcnYvb2JqZWN0cy5jLAoJICBncmFwaGljcy9tYXBwaW5nLmMsIG9iamVjdHMvYml0bWFwLmMsIG9iamVjdHMvYnJ1c2guYywKCSAgb2JqZWN0cy9kY3ZhbHVlcy5jLCBvYmplY3RzL2RpYi5jLCBvYmplY3RzL2VuaG1ldGFmaWxlLmMsCgkgIG9iamVjdHMvZm9udC5jLCBvYmplY3RzL21ldGFmaWxlLmMsIG9iamVjdHMvcGFsZXR0ZS5jLAoJICBvYmplY3RzL3Blbi5jLCBvYmplY3RzL3JlZ2lvbi5jOgoJTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5kZT4KCVNvbWUgLURTVFJJQ1QgZml4ZXMuCgoJKiBpbmNsdWRlL3dpbnNvY2suaDogTWFydGluIFdpbGNrIDxNYXJ0aW4uV2lsY2tARnVqaXRzdS1TaWVtZW5zLmNvbT4KCUZpeGVkIGNpcmN1bGFyIGluY2x1ZGUgc2VxdWVuY2Ugd2luc29jay5oIC0+IHdpbmRvd3MuaCAtPiB3aW5zb2NrMi5oCgktPiB3aW5zb2NrLmguCgoJKiB3aW5kb3dzL2NsYXNzLmM6IFN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJTW92ZWQgaW1wbGVtZW50YXRpb24gb2YgR2V0L1NldENsYXNzTG9uZyBmcm9tIGFzY2lpIHRvIHVuaWNvZGUuCgoJKiB3aW5kb3dzL2N1cnNvcmljb24uYzogU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtTGluZS5jb20+CglSZXBsYWNlZCBDcmVhdGVEQ0EgYnkgQ3JlYXRlRENXIGluIExvYWRJbWFnZVcuCgoJKiBkbGxzL2RkcmF3L01ha2VmaWxlLmluLCBkbGxzL2RkcmF3L2QzZF9wcml2YXRlLmgsCgkgIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21haW4uYywgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWFpbi5oLAoJICBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsIGRsbHMvZGRyYXcvZDNkZXhlY3V0ZWJ1ZmZlci5jLAoJICBkbGxzL2RkcmF3L2QzZGxpZ2h0LmMsIGRsbHMvZGRyYXcvZDNkbWF0ZXJpYWwuYywKCSAgZGxscy9kZHJhdy9kM2R0ZXh0dXJlLmMsIGRsbHMvZGRyYXcvZDNkdmVydGV4YnVmZmVyLmMsCgkgIGRsbHMvZGRyYXcvZDNkdmlld3BvcnQuYywgZGxscy9kZHJhdy9kZGNvbWltcGwuaCwKCSAgZGxscy9kZHJhdy9kZHJhdy9tYWluLmMsIGRsbHMvZGRyYXcvZGRyYXdfcHJpdmF0ZS5oLAoJICBkbGxzL2RkcmF3L2RpcmVjdDNkL21haW4uYywgZGxscy9kZHJhdy9kaXJlY3QzZC9tYWluLmgsCgkgIGRsbHMvZGRyYXcvZGlyZWN0M2QvbWVzYS5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL2RpYi5jLAoJICBkbGxzL2RkcmF3L2RzdXJmYWNlL21haW4uYywgZGxscy9kZHJhdy9tZXNhLmMsCgkgIGRsbHMvZGRyYXcvbWVzYV9wcml2YXRlLmgsIGluY2x1ZGUvZDNkLmg6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSBDbGVhbiB1cCBhbGwgdGhlIEQzRCBDT00gaGFuZGxpbmcgKGJ1dCB0aGUgdW5kZXJsYXlpbmcgY29kZSBpcyBzdGlsbAoJICBhcyB1Z2x5IGFzIGJlZm9yZSkuCgktIEhhbmRsZSBwcm9wZXJseSAoaWUgYXMgb24gcmVhbCBXaW5kb3dzKSBuZWdhdGl2ZSB2YWx1ZXMgaW4KCSAgcmVjdGFuZ2xlcyBkdXJpbmcgYmxpdHRpbmcuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYzoKCVVzZSB0aGUgJy16IGRlZnMnIGxpbmtlciBvcHRpb24gaWYgc3VwcG9ydGVkIHRvIGJldHRlciBjYXRjaCB1bmRlZmluZWQKCXN5bWJvbHMuCgoJKiBjb250cm9scy9lZGl0LmM6IENhcmwgU29wY2hhayA8Y2FybC5zb3BjaGFrQGNlZ2lzMTIzLmNvbT4KCUlnbm9yZSBidWZmZXIgbGltaXQgb24gV01fU0VUVEVYVC4KCgkqIGRsbHMvZ2RpL2dkaTMyLnNwZWMsIGluY2x1ZGUvd2luZ2RpLmgsIG9iamVjdHMvZGMuYzoKCVN0ZXZlIEx1c3RiYWRlciA8c3RldmUubHVzdGJhZGVyQHBoaWxpcHMuY29tPgoJU3R1YiBmb3IgU2V0RENCcnVzaENvbG9yLgoKCSogZGxscy9NYWtlZGxsLnJ1bGVzLmluLCBkbGxzL01ha2V0ZXN0LnJ1bGVzLmluLAoJICBwcm9ncmFtcy9NYWtlcHJvZy5ydWxlcy5pbiwgcHJvZ3JhbXMvYXZpdG9vbHMvTWFrZWZpbGUuaW46CglBZGQgLWxjIHdoZW4gbGlua2luZyBkbGxzIHRvIGF2b2lkIHdhcm5pbmdzIG9uIEZyZWVCU0QuCgoJKiBkbGxzL250ZGxsL01ha2VmaWxlLmluLCBkbGxzL250ZGxsL2ZpbGUuYywgZGxscy9udGRsbC9oZWFwLmMsCgkgIGRsbHMvbnRkbGwvbWlzYy5jLCBkbGxzL250ZGxsL250LmMsIGRsbHMvbnRkbGwvb20uYywKCSAgZGxscy9udGRsbC9yZWcuYywgZGxscy9udGRsbC9ydGwuYywgZGxscy9udGRsbC9zZWMuYywKCSAgZGxscy9udGRsbC9zeW5jLmMsIGRsbHMvbnRkbGwvdmlydHVhbC5jLCBmaWxlcy9kb3NfZnMuYywKCSAgZmlsZXMvZmlsZS5jLCBmaWxlcy9zbWIuYywgZmlsZXMvdGFwZS5jLCBsb2FkZXIvbW9kdWxlLmMsCgkgIGxvYWRlci9uZS9tb2R1bGUuYywgbG9hZGVyL25lL3Jlc291cmNlLmMsIGxvYWRlci9uZS9zZWdtZW50LmMsCgkgIGxvYWRlci9wZV9pbWFnZS5jLCBsb2FkZXIvcmVzb3VyY2UuYywgbWVtb3J5L2dsb2JhbC5jLAoJICBtaXNjL3JlZ2lzdHJ5LmMsIHJlbGF5MzIvYnVpbHRpbjMyLmMsIHJlbGF5MzIvc25vb3AuYywKCSAgc2NoZWR1bGVyL2hhbmRsZS5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzY2hlZHVsZXIvc3lzbGV2ZWwuYywKCSAgc2NoZWR1bGVyL3RocmVhZC5jLCB3aW4zMi9kZXZpY2UuYywgd2luMzIvZXhjZXB0LmMsIHdpbjMyL25ld2Zucy5jOgoJQW5kcmV3IEpvaG4gSHVnaGVzIDxodWdoZXMyMDAyQGJ0aW50ZXJuZXQuY29tPgoJQnVpbGQgbnRkbGwgd2l0aCAtRFNUUklDVC4KCgkqIGxvYWRlci9uZS9tb2R1bGUuYzoKCUFkZGVkIHdyYXBwZXIgdG8gcmVwbGFjZSBsbHNlZWsrbHJlYWQgdG8gYXZvaWQgSEFORExFL0hGSUxFCgljb252ZXJzaW9ucy4KCgkqIHRvb2xzL3dpbmVpbnN0YWxsOiBTaGFjaGFyIFNoZW1lc2ggPHdpbmUtcGF0Y2hlc0BzdW4uY29uc3VtZXIub3JnLmlsPgoJLSBJZiBydW5uaW5nIHdpbmVpbnN0YWxsIGFuZCBhc2tpbmcgbm90IHRvIGluc3RhbGwsIHRoZSBzeW1ib2xpYyBsaW5rcwoJICBhcmUgbm8gY3JlYXRlZCBwb2ludGluZyB0byB0aGUgc291cmNlIHRyZWUgZmlsZXMgcmF0aGVyIHRvIHRoZQoJICAobm9uLWV4aXN0aW5nKSAkbGliZGlyCgktIElmIFdpbmRvd3MgaXMgZm91bmQgb24gdGhlIHN5c3RlbSwgdGhlIGluc3RhbGxlciBkb2VzIG5vdCBhc3N1bWUKCSAgdGhhdCB0aGUgdXNlciBpcyBpbnRlcmVzdGVkIGluIHVzaW5nIGl0LiBJbnN0ZWFkLCB0aGUgdXNlciBpcyBhc2tlZCwKCSAgYW5kIGlmIHNoZSBhbnN3ZXJzICJubyIsIFdpbmUgaXMgaW5zdGFsbGVkIGFzIGlmIG5vIFdpbmRvd3Mgd2FzCgkgIGZvdW5kLgoKCSogdG9vbHMvd2lkbC9oZWFkZXIuYywgdG9vbHMvd2lkbC9wYXJzZXIubCwgdG9vbHMvd2lkbC9wYXJzZXIueSwKCSAgdG9vbHMvd2lkbC9wcm94eS5jLCB0b29scy93aWRsL3dpZGwuYywgdG9vbHMvd2lkbC93aWRsLmg6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUFkZGVkICJnZW5lcmF0ZSBoZWFkZXJzIG9ubHkiIGNvbW1hbmQtbGluZSBvcHRpb24uIEltcGxlbWVudGVkIGltcG9ydHMKCWZyb20gaW5zaWRlIGludGVyZmFjZSBkZWZpbml0aW9ucy4gRml4ZWQgYSBmZXcgcHJvYmxlbXMgd2l0aAoJZ2VuZXJhdGluZyBoZWFkZXIgZmlsZXMgZm9yIENPTSBpbnRlcmZhY2VzLgoKCSogZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZGxscy9rZXJuZWwvd3Byb2NzLnNwZWMsCgkgIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sIGxvYWRlci90YXNrLmMsIG1zZG9zL2ludDIxLmMsCgkgIG1zZG9zL2ludGVycnVwdHMuYywgd2luZG93cy91c2VyLmM6CglKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglSZW1vdmVkIGxhc3QgdXNlcnMgb2YgbXNkb3MvaW50ZXJydXB0cy5jLgoKMjAwMi0xMS0yMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvdXNlci9ob29rLmMsIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwgc2VydmVyL2hvb2suYywKCSAgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3JlcXVlc3QuYywgc2VydmVyL3RyYWNlLmMsCgkgIHNlcnZlci91c2VyLmg6CglBZGRlZCBzdXBwb3J0IGZvciBzeXN0ZW0td2lkZSBob29rcy4KCgkqIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjOgoJUmVtb3ZlZCAtbm9pbXBvcnQgb24gZnVuY3Rpb25zIHRoYXQgYXJlIGZvcndhcmRzIHRvIG50ZGxsLgoJQWRkZWQgLW5vaW1wb3J0IG9uIGZ1bmN0aW9ucyB0aGF0IGRpcmVjdGx5IGNhbGwgdGhlIGxpYmMgZXF1aXZhbGVudC4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsX0NuLnJjLCBkbGxzL2NvbWN0bDMyL3JzcmMucmMsCgkgIGRsbHMvY29tbWRsZy9jZGxnX0NuLnJjLCBkbGxzL2NvbW1kbGcvcnNyYy5yYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfQ24ucmMsIGRsbHMvc2hlbGwzMi9zaHJlcy5yYywgdG9vbHMvd21jL2xhbmcuYzoKCVRpc2hlbmcgQ2hlbiA8c2hhZG93QGpjbnAucGt1LmVkdS5jbj4KCUFkZGVkIFNpbXBsaWZpZWQgQ2hpbmVzZSBzdXBwb3J0LgoKCSogZGxscy9tc3ZpZGVvL2RyYXdkaWIuYywgZGxscy9tc3ZpZGVvL21zdmlkZW8xNi5jLAoJICBkbGxzL21zdmlkZW8vbXN2aWRlb19tYWluLmMsIGRsbHMvbXN2aWRlby9tc3ZpZGVvX3ByaXZhdGUuaDoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJTm8gbG9uZ2VyIHVzaW5nIFdpbjMyIEFQSSByZWxhdGl2ZSB0byAxNiBiaXQgc3Vic3lzdGVtIGZvciB0aGUgMzIgYml0CglwYXJ0LgoKCSogZGxscy93aW5tbS93aW5lb3NzL21pZGkuYzogRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglCZXR0ZXIgc3VwcG9ydCBmb3IgbXVsdGlwbGUgbWlkaSBkZXZpY2VzIG9uIHRoZSBPU1MgaW50ZXJmYWNlLgoKCSogcHJvZ3JhbXMvd2luaGVscC9obHBmaWxlLmMsIHByb2dyYW1zL3dpbmhlbHAvaGxwZmlsZS5oLAoJICBwcm9ncmFtcy93aW5oZWxwL21hY3JvLmMsIHByb2dyYW1zL3dpbmhlbHAvc3RyaW5nLmMsCgkgIHByb2dyYW1zL3dpbmhlbHAvd2luaGVscC5jLCBwcm9ncmFtcy93aW5oZWxwL3dpbmhlbHAuaDoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJV3JvdGUgYmFjayAmIGhpc3Rvcnkgc3VwcG9ydC4KCUNvcnJlY3RseSBpbXBsZW1lbnRlZCA8PCBhbmQgPj4gYnV0dG9ucy4KCUFkZGVkIHN1cHBvcnQgZm9yIHBhZ2UgbGV2ZWwgbWFjcm9zLgoKCSogdG9vbHMvd2luZWR1bXAvb3V0cHV0LmM6IEFsYmVydG8gTWFzc2FyaSA8YWxieUBleGxuLmNvbT4KCXdpbmVkdW1wIHdhcyBzdGlsbCB1c2luZyB0aGUgImluaXQiIGtleXdvcmQgaW4gdGhlIC5zcGVjIGZpbGUuCgoJKiBkbGxzL2tlcm5lbC9rcm5sMzg2LmV4ZS5zcGVjLCBpbmNsdWRlL3NlbGVjdG9ycy5oLAoJICBtZW1vcnkvc2VsZWN0b3IuYywgbXNkb3MvdnhkLmM6CglKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglSZW1vdmUgc29tZSBXaW4zMnMgc3BlY2lmaWMgY29kZS4KCgkqIG1zZG9zL2ludDEzLmMsIG1zZG9zL2ludDIwLmMsIGRsbHMva2VybmVsL3dwcm9jcy5zcGVjLAoJICBkbGxzL250ZGxsL01ha2VmaWxlLmluLCBpbmNsdWRlL21pc2NlbXUuaDoKCUp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCVJlbW92ZWQgb2Jzb2xldGUgY29kZS4KCjIwMDItMTEtMTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL21zdmNydC9tYmNzLmMsIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjOgoJSW1wbGVtZW50ZWQgc29tZSBpc21iYyogZnVuY3Rpb25zIChiYXNlZCBvbiBhIHBhdGNoIGJ5IEdyZWcgVHVybmVyKS4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2NhYmluZXQvLmN2c2lnbm9yZSwKCSAgZGxscy9jYWJpbmV0L01ha2VmaWxlLmluLCBkbGxzL2NhYmluZXQvY2FiaW5ldC5zcGVjLAoJICBkbGxzL2NhYmluZXQvZmNpLmMsIGRsbHMvY2FiaW5ldC9mZGkuYywgaW5jbHVkZS9NYWtlZmlsZS5pbiwKCSAgaW5jbHVkZS9mY2kuaCwgaW5jbHVkZS9mZGkuaDoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQWRkZWQgc3R1YiBpbXBsZW1lbnRhdGlvbiBvZiBjYWJpbmV0LmRsbC4KCgkqIGluY2x1ZGUvcmljaGVkaXQuaDogUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCUFkZCBzb21lIFJpY2hFZGl0IDIuMC8zLjAgZGVmaW5pdGlvbnMuCgoJKiBpbmNsdWRlL3dpbmJhc2UuaDogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUFkZGVkIGRlZmluaXRpb24gZm9yIFBlZWtOYW1lZFBpcGUKCUZpeGVkIGEgbG90IG9mIGJhZGx5IGluZGVudGVkIGZ1bmN0aW9ucy4KCjIwMDItMTEtMTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2dkaS9NYWtlZmlsZS5pbiwgZGxscy9nZGkvZ2RpLmV4ZS5zcGVjLAoJICBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwva3JubDM4Ni5leGUuc3BlYywKCSAgZGxscy9zaGVsbDMyL01ha2VmaWxlLmluLCBkbGxzL3NoZWxsMzIvc2hlbGwuc3BlYywKCSAgZGxscy91c2VyL01ha2VmaWxlLmluLCBkbGxzL3VzZXIvZGlzcGxheS5zcGVjLCBkbGxzL3VzZXIvbW91c2Uuc3BlYywKCSAgZGxscy91c2VyL3VzZXIuZXhlLnNwZWMsIHRvb2xzL3dpbmVidWlsZC9idWlsZC5oLAoJICB0b29scy93aW5lYnVpbGQvbWFpbi5jLCB0b29scy93aW5lYnVpbGQvcGFyc2VyLmMsCgkgIHRvb2xzL3dpbmVidWlsZC93aW5lYnVpbGQubWFuLmluOgoJUmVtb3ZlZCBzdXBwb3J0IGZvciAncnNyYycgc3BlYyBmaWxlIHN0YXRlbWVudC4KCgkqIGRsbHMvcmljaGVkaXQvcmVhZGVyLmMsIGRsbHMvcmljaGVkaXQvcnRmLmg6CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglHZXQgcmlkIG9mIHRoZSB2YXJhcmcgYW5kIGdlbmVyaWMgc3R1ZmYuCgoJKiB0b29scy93aW5hcGkvd2luMTYuYXBpLCB0b29scy93aW5hcGkvd2luMzIuYXBpOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJUmVtb3ZlZCBzb21lIHVudXNlZCB0eXBlcy4KCgkqIGRsbHMva2VybmVsL2NvbXB1dGVybmFtZS5jOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJQWRkZWQgbmV0ZGIuaCBwcm90ZWN0aW9uLgoKCSogc2NoZWR1bGVyL3B0aHJlYWQuYywgc2NoZWR1bGVyL3RpbWVyLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIHN0cmljdCBhbGlhc2luZyBpc3N1ZSBpbiBfX3B0aHJlYWRfb25jZSBhbmQgU2V0V2FpdGFibGVUaW1lci4KCgkqIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sIG1zZG9zL2Rvc21lbS5jLCBtc2Rvcy9pbnQxYS5jOgoJSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJUmVtb3ZlZCBsYXN0IHVzZXIgb2YgbXNkb3MvaW50MWEuYy4KCgkqIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGRsbHMva2VybmVsL3dwcm9jcy5zcGVjLAoJICBkbGxzL3dpbmVkb3MvZG9zYXNwaS5jLCBkbGxzL3dpbmVkb3MvZG9zZXhlLmgsIGluY2x1ZGUvY2FsbGJhY2suaCwKCSAgaW5jbHVkZS9taXNjZW11LmgsIG1zZG9zL2RwbWkuYzoKCUp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCVJlbW92ZWQgb2Jzb2xldGUgSU5UX0ludDMxSGFuZGxlci4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCVNldHRpbmcgdGhlIGhvcml6b250YWwgc2Nyb2xsYmFyIGNhbiBjaGFuZ2UgdGhlIHZhbHVlcyBmb3IgdGhlCgl2ZXJ0aWNhbCBvbmUgc28gbWFrZSBzdXJlIHdlIGNvbXB1dGUgdGhlbSBzZXBhcmF0ZWx5LgoKCSogZ3JhcGhpY3MveDExZHJ2L29wZW5nbC5jOgoJQWRkZWQgZW1wdHkgWDExRFJWX09wZW5HTF9Jbml0IGZvciB0aGUgbm9uLU9wZW5HTCBjYXNlLgoKCSogZGxscy9udGRsbC9sYXJnZV9pbnQuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCBzdHJpY3QgYWxpYXNpbmcgcHJvYmxlbSBpbiBSdGxFbmxhcmdlZFVuc2lnbmVkRGl2aWRlLgoKCSogaW5jbHVkZS93aW5jb24uaDogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCBzdHJpY3QgYWxpYXNpbmcgcHJvYmxlbSBpbgoJX193aW5lX0dldExhcmdlc3RDb25zb2xlV2luZG93U2l6ZV93cmFwcGVyLgoKCSogcHJvZ3JhbXMvd2luaGVscC9obHBmaWxlLmMsIHByb2dyYW1zL3dpbmhlbHAvaGxwZmlsZS5oLAoJICBwcm9ncmFtcy93aW5oZWxwL21hY3JvLmMsIHByb2dyYW1zL3dpbmhlbHAvd2luaGVscC5jLAoJICBwcm9ncmFtcy93aW5oZWxwL3dpbmhlbHAuaDoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgc3VwcG9ydCBmb3Igd2luZG93IGluZm9ybWF0aW9uIGZyb20gdGhlIC5obHAgZmlsZS4KCUFkZGVkIHN1cHBvcnQgZm9yIHdpbmRvdyBudW1iZXJzIGluIGxpbmsuCgoJKiB3aW5kb3dzL2lucHV0LmM6IFN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJTW92ZWQgaW1wbGVtZW50YXRpb24gb2YgTG9hZEtleWJvYXJkTGF5b3V0IGZyb20gQVNDSUkgdG8gVW5pY29kZS4KCgkqIGluY2x1ZGUvd2lubnQuaCwgaW5jbHVkZS93aW51c2VyLmg6IFBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJTm8gdmVyc2lvbiBvZiBHTlUgQysrICh1bmxpa2UgR05VIEMpIHN1cHBvcnRzIHVubmFtZWQgc3RydWN0cy4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaDogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVN1cHBvcnQgY29tbWN0cmwgbWVzc2FnZS1oZWxwZXIgbWFjcm9zIGluIEMrKy4KCgkqIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglVc2UgRGVsZXRlREMgaW5zdGVhZCBvZiBEZWxldGVPYmplY3QgdG8gZnJlZSBIRENzIChzcG90dGVkIGJ5IERpZXRyaWNoCglUZWlja25lciA8RGlldHJpY2hfVGVpY2tuZXJAdC1vbmxpbmUuZGU+KS4KCUNsZWFyIHRoZSBpbWFnZWxpc3Qgc3RydWN0dXJlIG9uIGRlbGV0aW9uLCBhcyBzb21lIHN0dXBpZCBhcHBzIGZyZWUKCWltYWdlbGlzdHMgbXVsdGlwbGUgdGltZXMuCgoJKiB3aW5kb3dzL3VzZXIuYzogU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtTGluZS5jb20+CglNb3ZlZCBpbXBsZW1lbnRhdGlvbiBvZiBFbnVtRGlzcGxheVNldHRpbmdzIGZyb20gQVNDSUkgdG8gVW5pY29kZS4KCgkqIGluY2x1ZGUvd2ludGVybmwuaDogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWRkIHNvbWUgZGVmaW5pdGlvbnMgZm9yIHN0cnVjdHVyZXMgdXNlZCBieSBOdFF1ZXJ5RmlsZUluZm8uCgoJKiBkbGxzL29sZTMyL3N0b3JhZ2UuYywgZGxscy9vbGUzMi9zdG9yYWdlMzIuYzoKCVJ5YW4gQ3VtbWluZyA8cnlhbkBjb21wbGV0ZWx5LmtpY2tzLWFzcy5vcmc+CgktIE1vdmUgU3RnSXNTdG9yYWdlRmlsZTE2J3MgaW1wbGVtZW50YXRpb24gdG8gU3RnSXNTdG9yYWdlRmlsZTsgcG9ydAoJICBpdCB0byBXaW4zMi4KCS0gTW92ZSBTdGdJc1N0b3JhZ2VGaWxlIGZyb20gc3RvcmFnZS5jIHRvIHN0b3JhZ2UzMi5jLgoJLSBTdGdJc1N0b3JhZ2VGaWxlIG9ubHkgcmV0dXJucyBTX09LLCBTVEdfRV9GSUxFTk9URk9VTkQsIGFuZCBTX0ZBTFNFLgoJLSBTdGdJc1N0b3JhZ2VGaWxlIGRvZXNuJ3QgY2hlY2sgaWYgYSBmaWxlIGlzIGxhcmdlIGVub3VnaCB0byBiZSBhCgkgIHN0b3JhZ2UgZmlsZSwgaXQgb25seSBjaGVja3MgZm9yIHRoZSBwcmVzZW5jZSBvZiB0aGUgOC1ieXRlIG1hZ2ljLgoKCSogaW5jbHVkZS91cmxtb24uaCwgaW5jbHVkZS93aW5pbmV0Lmg6IEFsYmVydG8gTWFzc2FyaSA8YWxieUBleGxuLmNvbT4KCS0gQWRkZWQgc29tZSBkZWZpbml0aW9ucy4KCS0gRml4ZWQgc2lnbmF0dXJlIG9mIEdldFVybENhY2hlRW50cnlJbmZvRXhXLgoKCSogdG9vbHMvd2luZWluc3RhbGw6IEFsYmVydG8gTWFzc2FyaSA8YWxieUBleGxuLmNvbT4KCUluc3RhbGwgbGluayB0byBydW5kbGwzMi5leGUgdG9vLgoKCSogcHJvZ3JhbXMvcnVuZGxsMzIvcnVuZGxsMzIuYzogQWxiZXJ0byBNYXNzYXJpIDxhbGJ5QGV4bG4uY29tPgoJRml4IGNyYXNoIHdoZW4gaW52b2tlZCB3aXRoIG5vIGFyZ3VtZW50cy4KCgkqIHdpbmRvd3MvY3Vyc29yaWNvbi5jOiBSeWFuIEN1bW1pbmcgPHJ5YW5AY29tcGxldGVseS5raWNrcy1hc3Mub3JnPgoJTWFrZSBMb29rdXBJY29uSWRGcm9tRGlyZWN0b3J5RXgxNiBjYWxsIExvb2t1cEljb25JZEZyb21EaXJlY3RvcnlFeCwKCWluc3RlYWQgb2YgdGhlIG90aGVyIHdheSBhcm91bmQuCgoyMDAyLTExLTE1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9rZXJuZWwvY29tcHV0ZXJuYW1lLmMsIHByb2dyYW1zL3J1bmRsbDMyL3J1bmRsbDMyLmM6CglXYXJuaW5nIGZpeGVzLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvZDNkOC9NYWtlZmlsZS5pbiwKCSAgZGxscy9kZHJhdy9NYWtlZmlsZS5pbiwgZGxscy9nbHUzMi9NYWtlZmlsZS5pbiwKCSAgZGxscy9vcGVuZ2wzMi9NYWtlZmlsZS5pbiwgZGxscy94MTFkcnYveDExZHJ2X21haW4uYywKCSAgZ3JhcGhpY3MveDExZHJ2L29wZW5nbC5jLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBpbmNsdWRlL3gxMWRydi5oOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUxvYWQgT3BlbkdMIGxpYnJhcnkgZHluYW1pY2FsbHkgZnJvbSB4MTFkcnYuCgoJKiBsb2FkZXIvbW9kdWxlLmM6IEVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRG9uJ3QgZnVsbHkgcHJvY2VzcyBGcmVlTGlicmFyeSB3aGVuIHByb2Nlc3MgaXMgc3RvcHBpbmcuCgoJKiBwcm9ncmFtcy9ub3RlcGFkL21haW4uYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGJhaWthbC5ydT4KCU1pbm9yIGJ1ZyBmaXhlcy4KCgkqIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGZpbGVzL2ZpbGUuYywgaW5jbHVkZS93aW5iYXNlLmg6CglSeWFuIEN1bW1pbmcgPHJ5YW5AY29tcGxldGVseS5raWNrcy1hc3Mub3JnPgoJSW1wbGVtZW50ZWQgR2V0RmlsZVNpemVFeCAoYmFzZWQgb24gYSBwYXRjaCBieSBTdGV2ZSBMdXN0YmFkZXIpLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIHByb2dyYW1zL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy9ydW5kbGwzMi8uY3ZzaWdub3JlLCBwcm9ncmFtcy9ydW5kbGwzMi9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvcnVuZGxsMzIvcnVuZGxsMzIuYzoKCUFsYmVydG8gTWFzc2FyaSA8YWxieUBleGxuLmNvbT4KCUFkZGVkIHJ1bmRsbDMyIHV0aWxpdHkuCgoJKiBkbGxzL3dpbmVkb3MvaW50ZXJydXB0cy5jLCBkbGxzL3dpbmVkb3Mvd2luZWRvcy5zcGVjLAoJICBpbmNsdWRlL2NhbGxiYWNrLmgsIG1zZG9zL2RwbWkuYywgd2luMzIvZGV2aWNlLmM6CglKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglEZXZpY2VJb0NvbnRyb2wgbm93IGNhbGxzIHdpbmVkb3MgaW50ZXJydXB0IGhhbmRsZXJzLgoJRml4ZWQgUmF3TW9kZVN3aXRjaC4KCgkqIHdpbmRvd3Mvc3lzbWV0cmljcy5jOiBUb255IExhbWJyZWd0cyA8dG9ueV9sYW1icmVndHNAdGVsdXNwbGFuZXQubmV0PgoJRml4IFNNX0NZVlRIVU1CLCBTTV9DWFNNU0laRSwgU01fQ1hNRU5VQ0hFQ0sgYW5kIFNNX0NZTUVOVUNIRUNLLgoKCSogcHJvZ3JhbXMvd2luaGVscC8uY3ZzaWdub3JlLCBwcm9ncmFtcy93aW5oZWxwL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy93aW5oZWxwL21hY3JvLmMsIHByb2dyYW1zL3dpbmhlbHAvbWFjcm8uaCwKCSAgcHJvZ3JhbXMvd2luaGVscC9tYWNyby5sZXgubCwgcHJvZ3JhbXMvd2luaGVscC9tYWNyby55YWNjLnksCgkgIHByb2dyYW1zL3dpbmhlbHAvd2luaGVscC5jLCBwcm9ncmFtcy93aW5oZWxwL3dpbmhlbHAuaDoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJUmV3cm90ZSBtYWNybyBlbmdpbmUgZm9yIGFkZGluZyBkeW5hbWljIG1hY3JvIGxvYWRpbmcgY2FwYWJpbGl0eS4KCVdyb3RlIFJlZ2lzdGVyUm91dGluZSBhbmQgSXNCb29rIG1hY3Jvcy4KCgkqIGRsbHMvZ2RpL21mZHJ2L2RjLmMsIGRsbHMvd2luZXBzL3RleHQuYywgb2JqZWN0cy9mb250LmM6CglIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJUHJvcGVyIGhhbmRsaW5nIG9mIFNldFRleHRDaGFyYWN0ZXJFeHRyYS4KCgkqIGRsbHMva2VybmVsL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC9jb21wdXRlcm5hbWUuYywKCSAgZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZGxscy9rZXJuZWwva2VybmVsX21haW4uYywKCSAgZGxscy9udGRsbC9NYWtlZmlsZS5pbiwgZG9jdW1lbnRhdGlvbi9jb25maWd1cmluZy5zZ21sLAoJICBkb2N1bWVudGF0aW9uL3NhbXBsZXMvY29uZmlnLCBkb2N1bWVudGF0aW9uL3dpbmUuY29uZi5tYW4sCgkgIGluY2x1ZGUvd2luYmFzZS5oLCBtaXNjL3JlZ2lzdHJ5LmMsIHdpbjMyL2luaXQuYywgd2luMzIvbmV3Zm5zLmM6CglNYXJ0aW4gV2lsY2sgPE1hcnRpbi5XaWxja0BGdWppdHN1LVNpZW1lbnMuY29tPgoJLSBBbGxvdyBzZXR0aW5nIE5ldEJJT1MgQ29tcHV0ZXJOYW1lIHRocm91Z2ggcmVnaXN0cnkuCgktIEtlZXAgb2xkIGJlaGF2aW9yIGFzIGRlZmF1bHQsIHVzaW5nIG5ldyBjb25maWcgb3B0aW9uIHRvIGNoYW5nZS4KCS0gSW1wbGVtZW50IFNldENvbXB1dGVyTmFtZSgpLCBTZXRDb21wdXRlck5hbWVFeCgpLAoJICBHZXRDb21wdXRlck5hbWVFeCgpLgoJLSBDb21wdXRlck5hbWUgaW5pdGlhbGl6YXRpb24gbW92ZWQgdG8ga2VybmVsMzIuCgoJKiBkbGxzL250ZGxsL3J0bC5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglQYXJ0aWFsIGltcGxlbWVudGF0aW9uIG9mIFJ0bERvc1BhdGhOYW1lVG9OdFBhdGhOYW1lX1UuCgoJKiBkbGxzL3NoZWxsMzIvdGVzdHMvc2hsZmlsZW9wLmMsIGRsbHMvdXNlci90ZXN0cy93aW4uYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJTWFkZSB0ZXN0cyBjb21waWxlIG9uIFdpbmRvd3MuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmM6IE1hcmN1cyBNZWlzc25lciA8bWVpc3NuZXJAc3VzZS5kZT4KCUFsc28gc2lsZW5jZSBJU2hlbGxMaW5rQV9mblNldFNob3dDbWQuCgoJKiBkbGxzL3dpbmVwcy9icnVzaC5jLCBkbGxzL3dpbmVwcy9lc2NhcGUuYywgZGxscy93aW5lcHMvZ3JhcGhpY3MuYywKCSAgZGxscy93aW5lcHMvcHMuYywgZGxscy93aW5lcHMvcHNkcnYuaCwgaW5jbHVkZS93aW5lL3dpbmdkaTE2Lmg6CglIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50ZWQgRXNjYXBlcyAqX1BBVEggYW5kIFBPU1RTQ1JJUFRfSUdOT1JFLgoKMjAwMi0xMS0xNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmMsIGRsbHMveDExZHJ2L3hyZW5kZXIuYywKCSAgZG9jdW1lbnRhdGlvbi9zYW1wbGVzL2NvbmZpZywgZ3JhcGhpY3MveDExZHJ2L2JpdG1hcC5jLAoJICBncmFwaGljcy94MTFkcnYvY2xpcHBpbmcuYywgZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsCgkgIGluY2x1ZGUveDExZHJ2Lmg6CglIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJQ2xpZW50IHNpZGUgcmVuZGVyIGZvbnRzIGZvciBYU2VydmVycyB3aXRob3V0IHRoZSBSZW5kZXIgZXh0ZW5zaW9uCgl1c2luZyBYMTEgY29yZSByZXF1ZXN0cy4KCgkqIGRsbHMvdXNlci91c2VyX21haW4uYywgZGxscy94MTFkcnYvd2lucG9zLmMsCgkgIGRsbHMveDExZHJ2L3gxMWRydi5zcGVjLCBpbmNsdWRlL3VzZXIuaCwgd2luZG93cy9kY2UuYywKCSAgd2luZG93cy93aW4uYzoKCUFkZGVkIFJlbGVhc2VEQyBmdW5jdGlvbiB0byB0aGUgVVNFUiBkcml2ZXIgaW50ZXJmYWNlLgoKMjAwMi0xMS0xMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvZ2RpL2ZyZWV0eXBlLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglXZSBuZWVkIHRvIGNvbXBhcmUgdGhlIHdvcmxkIHRyYW5zZm9ybXMgKGF0IGxlYXN0IHRoZSA0IHNjYWxpbmcKCWVsZW1lbnRzKSB3aGVuIHdlIGFjY2VwdCBhIGZvbnQgZnJvbSB0aGUgY2FjaGUuCglHZXQgdGhlIGNvcnJlY3QgdmFsdWVzIGZvciB0aGUgdW5kZXJzY29yZSBzaXplIGFuZCBwb3NpdGlvbi4KCUFkZGVkIGEgbWlzc2luZyBjbG9zZWRpcigpLgoKCSogZGxscy93aW5lcHMvZ3JhcGhpY3MuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBQU0RSVl9EcmF3QXJjIHRvIHdvcmsgcHJvcGVybHkgd2l0aCBsb2dpY2FsIGNvb3Jkcy4KCgkqIGRsbHMvd2luZXBzL2Rvd25sb2FkLmMsIGRsbHMvd2luZXBzL3BwZC5jLCBkbGxzL3dpbmVwcy90eXBlNDIuYzoKCUh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglJbnN0ZWFkIG9mIHRyeWluZyB0byBkb3dubG9hZCB0aGUgVHlwZSA0MiBnbHB5aCBtZXRyaWNzIGluY3JlbWVudGFsbHkKCSh3aGljaCBtb3N0IHByaW50ZXJzIGRvbid0IHNlZW0gdG8gdW5kZXJzdGFuZCksIHdlJ2xsIGRvd25sb2FkIHRoZQoJd2hvbGUgaG10eCB0YWJsZSBpbiBvbmUgZ28gKHNpZ2gpIHVubGVzcyBpdCdzIGxhcmdlciB0aGFuIDY0SyBpbiB3aGljaAoJY2FzZSB3ZSdsbCBnbyBiYWNrIHRvIHVzaW5nIGEgVHlwZSAxIGZvbnQuCgoJKiBkbGxzL3dpbmVwcy90eXBlMS5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJV2UgY2FuJ3QgY2FjaGUgdGhlIHVuc2NhbGVkIGZvbnQncyBoZm9udCwgc2luY2UgdGhlIG1hcHBpbmcgbW9kZSBtYXkKCWNoYW5nZS4gIFRoaXMgcmVzdWx0ZWQgaW4gc29tZSBnbHlwaHMgYmVpbmcgZG93bmxvYWRlZCBhdCB0aGUgd3JvbmcKCXNpemUuCgoJKiB0b29scy93aWRsL2hlYWRlci5jLCB0b29scy93aWRsL3BhcnNlci5sLCB0b29scy93aWRsL3BhcnNlci55LAoJICB0b29scy93aWRsL3dpZGx0eXBlcy5oOgoJTWFrZSBzdXJlIHdpZGwgZG9lc24ndCBkZXBlbmQgb24gdGhlIGhlYWRlcnMgaXQgaGFzIHRvIGdlbmVyYXRlLgoKCSogZGxscy9NYWtlZmlsZS5pbjogVXBkYXRlZCBkZXBlbmRlbmNpZXMuCgoJKiBkbGxzL3RhcGkzMi9NYWtlZmlsZS5pbiwgZGxscy90YXBpMzIvbGluZS5jLCB3aW5lZGVmYXVsdC5yZWc6CglIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJWmVybyBvdXQgdGhlIHJldHVybmVkIExJTkVUUkFOU0xBVEVDQVBTIHN0cnVjdHVyZS4KCVJlYWQgY291bnRyeSBsaXN0IGZyb20gdGhlIHJlZ2lzdHJ5LgoJQWRkIGEgbG9hZCBvZiBjb3VudHJpZXMgdG8gd2luZWRlZmF1bHQucmVnLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglTZW5kIGEgQ0ROX0ZJTEVPSyBpbiBGSUxFRExHOTVfT25PcGVuTXVsdGlwbGVGaWxlcy4KCVJlc3RydWN0dXJlIHRoZSBoYW5kbGluZyBvZiBDdXN0b20gZGlhbG9nIG5vdGlmaWNhdGlvbnMuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYywgaW5jbHVkZS9jb21tY3RybC5oOgoJVWxyaWNoIEN6ZWthbGxhIDx1Y3pla2FsbGFAY29kZXdlYXZlcnMuY29tPgoJLSBBZGQgc3VwcG9ydCBmb3IgbXVsdGlwbGUgaW1hZ2UgbGlzdHMuCgktIEFkZCBUQk5fSU5JVENVU1RPTUlaRSBub3RpZmljYXRpb24uCgktIENvcnJlY3RseSBwb3B1bGF0ZSBUQk5fUVVFUllERUxFVEUuCgktIFN1cHBvcnQgVEJOX0dFVEJVVFRPTklORk9XLgoKCSogY29udHJvbHMvY29tYm8uYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVkIGEgYnVnIHdpdGggY29tYm8gYm94ZXMgd2hlcmUgb25seSAxIGl0ZW1zIHdhcyBiZWluZyBkaXNwbGF5ZWQuCgoJKiB3aW5kb3dzL3dpbi5jOgoJRml4ZWQgc2lnbiBwcm9ibGVtIGluIEdldFdpbmRvd1dvcmQvTG9uZyBjaGVjayBmb3Igb2Zmc2V0IGxhcmdlciB0aGFuCgl0aGUgd2luZG93IGV4dHJhIGJ5dGVzLgoKCSogd2luZWRlZmF1bHQucmVnOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJQWRkIElTdHJlYW0gYW5kIElTdG9yYWdlIGludGVyZmFjZSBlbnRyaWVzLgoKCSogbWVtb3J5L2dsb2JhbC5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQ2FwIHRoZSByZXBvcnRlZCBwaHlzaWNhbCBtZW1vcnkgdG8gMkdCIHRvIHByZXZlbnQgYXBwbGljYXRpb25zCgkoZS5nLiBRdWlja1RpbWUgNikgZnJvbSBjcmFzaGluZy4KCgkqIGZpbGVzL3Byb2ZpbGUuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCU1haW50YWluIGxvd2VyIGNhc2VkIGZpbGUgbmFtZXMgaW4gdGhlIFdpbmUgY29uZmlnIGRpcmVjdG9yeS4KCgkqIGRsbHMveDExZHJ2L2tleWJvYXJkLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglVc2UgaXNvODg1OS0xNSBvbiBFdXJvcGVhbiBrZXlib2FyZHMuCgoJKiBkbGxzL2FkdmFwaTMyL3JlZ2lzdHJ5LmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglXb3JrIHdpdGggdGhlIGNvcnJlY3Qgc3Via2V5IHdpdGggbG9hZGluZyBrZXlzLiBOb3QgYSB0cnVlIGZpeCB0byB0aGUKCUxvYWRLZXkvU2F2ZUtleSBzaXR1YXRpb24uCgoJKiBkbGxzL3NobHdhcGkvcGF0aC5jLCB3aW5kb3dzL2N1cnNvcmljb24uYywgd2luZG93cy9ub25jbGllbnQuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBhIGZldyBHREkgbWVtb3J5IGxlYWtzLgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jLCBkbGxzL3dpbnNvY2svd3MyXzMyLnNwZWMsIGluY2x1ZGUvd2luc29jazIuaDoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBzdHVicyBhbmQgZGVjbGFyYXRpb25zIGZvciBXU0FJbnN0YWxsU2VydmljZUNsYXNzQS9XLgoKCSogZGxscy93aW5pbmV0L2ludGVybmV0LmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglBZGQgYSBjb3VudGVyIHRvIGtlZXAgdHJhY2sgb2YgdGhlIG51bWJlciBvZiBvdXRzdGFuZGluZyBhc3luYwoJcmVxdWVzdHMuICBUaGlzIGdldHMgYXJvdW5kIGEgcHJvYmxlbSB3aGVyZSBhIFNldEV2ZW50IGNvdWxkIGJlIGNhbGxlZAoJYmVmb3JlIGEgcHJldmlvdXMgZXZlbnQgaGFkIGJlZW4gZGVhbHQgd2l0aC4KCgkqIGRsbHMvY29tY3RsMzIvY29tYm9leC5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJQ2hlY2sgdGhlIHJldHVybiB2YWx1ZSBvZiBJbWFnZUxpc3RfR2V0SW1hZ2VJbmZvIGJlZm9yZSBhZGp1c3RpbmcgdGhlCglzaXplLgoKCSogZGxscy9udGRsbC9kZWJ1Z3Rvb2xzLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglSZWR1Y2UgdGhlIG1heGltdW0gbGVuZ3RoIG9mIGRlYnVnIHN0cmluZ3MgdG8gODAgY2hhcmFjdGVycy4KCgkqIGRsbHMvd2luZWRvcy9kb3NleGUuaDogTWFyY3VzIE1laXNzbmVyIDxtZWlzc25lckBzdXNlLmRlPgoJRG8gbm90IGRlZmluZSBNWl9TVVBQT1JURUQgaWYgd2UgZG8gbm90IGhhdmUgc3lzL3ZtODYuaCBmb3IgYWxsIHRoZQoJc3RydWN0IGRlZmluaXRpb25zLgoKCSogZGxscy90dHlkcnYvdHR5ZHJ2Lmg6IE1hcmN1cyBNZWlzc25lciA8bWVpc3NuZXJAc3VzZS5kZT4KCU9ubHkgaW5jbHVkZSBjdXJzZXMgaGVhZGVycyBpZiB3ZSBhcmUgdXNpbmcgY3Vyc2VzIGF0IGFsbC4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jOiBBbGJlcnRvIE1hc3NhcmkgPGFsYnlAZXhsbi5jb20+CglJVHlwZUluZm86Okludm9rZSBub3cgaXMgYWJsZSB0byBpbnZva2UgYSBmdW5jdGlvbiBldmVuIHdoZW4gaXQgaXMKCXByb3ZpZGVkIHdpdGggYSBieXJlZiBhcmd1bWVudC4KCgkqIGRsbHMvbXN2Y3J0L3Byb2Nlc3MuYzoKCUZpeGVkIGRhdGEgY29weWluZyBpbiBtc3ZjcnRfYXJndnRvcyAoc3BvdHRlZCBieSBiaWxsQHRhbml3aGEub3JnKS4KCgkqIGluY2x1ZGUvd3R5cGVzLmgsIGluY2x1ZGUvd3R5cGVzLmlkbCwgdG9vbHMvd2lkbC93aWRsLmM6CglNb3ZlZCBycGMuaCBpbmNsdXNpb24gaW4gd2lkbC1nZW5lcmF0ZWQgZmlsZSBzbyB0aGF0IHRlc3RzIGNvbXBpbGUuCgoJKiBpbmNsdWRlL3dpbmUvd2luZ2RpMTYuaCwgaW5jbHVkZS93aW5nZGkuaCwgaW5jbHVkZS94MTFmb250LmgsCgkgIG9iamVjdHMvZm9udC5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBtaXNtYXRjaGVzIGJldHdlZW4gdGhlIFdpbmUgaGVhZGVycyBhbmQgdGhlIE1pY3Jvc29mdCBoZWFkZXJzLgoKCSogcHJvZ3JhbXMvd2luaGVscC9obHBmaWxlLmMsIHByb2dyYW1zL3dpbmhlbHAvaGxwZmlsZS5oLAoJICBwcm9ncmFtcy93aW5oZWxwL3dpbmhlbHAuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgc2V2ZXJhbCBidWdzIGluOgoJICAtIHBhZ2UvcGFyYWdyYXBoIHJlYWRpbmcgZm9yID49IFdpbjk1IGhlbHAgZmlsZXMgd2l0aG91dCBjb21wcmVzc2lvbgoJICAtIGJpdG1hcCAmIG1ldGFmaWxlIGxvYWRpbmcKCSAgLSBidHJlZSByZWFkaW5nCglOb3cgY2FjaGluZyBiaXRtYXAgbG9hZGluZyBmb3IgYmV0dGVyIHBlcmZvcm1hbmNlLgoJU2V2ZXJhbCBpbnRlcm5hbCBjb2RlIGNsZWFudXBzLgoKCSogZGxscy9jb21tZGxnL2ZvbnRkbGcuYzoKCVNoYWNoYXIgU2hlbWVzaCA8d2luZS1wYXRjaGVzQHN1bi5jb25zdW1lci5vcmcuaWw+CgktIEFkZGVkIHN1cHBvcnQgZm9yIENGX0VOQUJMRVRFTVBMQVRFSEFORExFLgoJLSBSZXZpc2VkIHRoZSBGSVhNRSBvbiB1bnN1cHBvcnRlZCBmbGFncyB0byBub3QgcmVwb3J0ZWQgdGhlIGZsYWdzIG5vdwoJICB0dXJuZWQgc3VwcG9ydGVkLgoKCSogZGxscy93aW5pbmV0L2h0dHAuYywgZGxscy93aW5pbmV0L3VybGNhY2hlLmMsCgkgIGRsbHMvd2luaW5ldC93aW5pbmV0LnNwZWM6CglBbGJlcnRvIE1hc3NhcmkgPGFsYnlAZXhsbi5jb20+CglBZGRlZCBzdHVicyBmb3IgSXNIb3N0SW5Qcm94eUJ5cGFzc0xpc3QgYW5kIEdldFVybENhY2hlRW50cnlJbmZvRXhBLgoKCSogcHJvZ3JhbXMvd2luZWRiZy9tZW1vcnkuYzogRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglBY3R1YWxseSBleGl0IGxvb3Agb24gJ1wwJyB3aGlsZSBwcmludGluZyBhIHN0cmluZy4KCgkqIGluY2x1ZGUvd3R5cGVzLmgsIGluY2x1ZGUvd3R5cGVzLmlkbDoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJV3JvdGUgYSBXaW5lLWNvbXBhdGlibGUgd3R5cGVzLmlkbCwgYW5kIGdlbmVyYXRlZCB3dHlwZXMuaCBmcm9tIGl0LgoKMjAwMi0xMS0xMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGRsbHMva2VybmVsL3dwcm9jcy5zcGVjLAoJICBkbGxzL250ZGxsL01ha2VmaWxlLmluLCBkbGxzL3dpbmVkb3MvTWFrZWZpbGUuaW4sCgkgIGRsbHMvd2luZWRvcy9kb3NleGUuaCwgZGxscy93aW5lZG9zL2ZwdS5jLCBkbGxzL3dpbmVkb3MvaW50MTIuYywKCSAgZGxscy93aW5lZG9zL2ludDEzLmMsIGRsbHMvd2luZWRvcy9pbnQxYS5jLCBkbGxzL3dpbmVkb3MvaW50MmEuYywKCSAgZGxscy93aW5lZG9zL2ludDQxLmMsIGRsbHMvd2luZWRvcy9pbnQ0Yi5jLAoJICBkbGxzL3dpbmVkb3MvaW50ZXJydXB0cy5jLCBtc2Rvcy9mcHUuYywgbXNkb3MvaW50MTIuYywKCSAgbXNkb3MvaW50MmEuYywgbXNkb3MvaW50NDEuYywgbXNkb3MvaW50NGIuYzoKCUp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCU1vdmUgc2ltcGxlIGludGVycnVwdCBoYW5kbGVycyB0byB3aW5lZG9zLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsbGluay5jOiBNYXJjdXMgTWVpc3NuZXIgPG1laXNzbmVyQHN1c2UuZGU+CglTaWxlbmNlIElTaGVsbExpbms6OlNldFNob3dDbWQgZm9yIHRoZSBjYXNlIHdlIHN1cHBvcnQuCgoJKiBkb2N1bWVudGF0aW9uL2J1Z3Muc2dtbDoKCVRvbnkgTGFtYnJlZ3RzIDx0b255X2xhbWJyZWd0c0B0ZWx1c3BsYW5ldC5uZXQ+CglVcGRhdGUgUmVwb3J0aW5nIEJ1Z3Mgc2VjdGlvbiB0byByZWZsZWN0IGN1cnJlbnQgc3RhdGUgb2Ygd2luZSBidWdzLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWM6IEdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJdWNvbnRleHQuaCBjaGVjayByZXF1aXJlcyBzaWduYWwuaC4KCgkqIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjOiBBbGJlcnRvIE1hc3NhcmkgPGFsYnlAZXhsbi5jb20+CglUaGUgYWxyZWFkeSBpbXBsZW1lbnRlZCBmdW5jdGlvbiBzd3NjYW5mIHdhcyBtaXNzaW5nIGFuIGVudHJ5LgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvd2luZXBzL01ha2VmaWxlLmluLAoJICBkbGxzL3dpbmVwcy9pbml0LmMsIGRsbHMvd2luc3Bvb2wvTWFrZWZpbGUuaW4sIGRsbHMvd2luc3Bvb2wvaW5mby5jLAoJICBpbmNsdWRlL2NvbmZpZy5oLmluOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglEbyBub3QgbGluayBhZ2FpbnN0IC1sY3VwcyBkaXJlY3RseSwgYnV0IGR5bmFtaWNhbGx5IGxvYWQgaXQgaWYKCXByZXNlbnQgKGp1c3QgbGlrZSBmcmVldHlwZSBldGMuKQoKCSogZGxscy9udGRsbC90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL250ZGxsL3Rlc3RzL01ha2VmaWxlLmluLAoJICBkbGxzL250ZGxsL3Rlc3RzL3J0bHN0ci5jOgoJUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCUZpcnN0IG9mIHRlc3RzIGZvciB0aGUgUnRsKiBzdHJpbmcgbWFuaXB1bGF0aW9uIGZ1bmN0aW9ucy4KCgkqIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy9udGRsbC9ydGxzdHIuYzoKCVJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CglJbXBsZW1lbnRlZCBSdGxVbmljb2RlU3RyaW5nVG9JbnRlZ2VyLgoKCSogZG9jdW1lbnRhdGlvbi93aW5lLWRldmVsLnNnbWw6CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglBZGQgbXVsdGltZWRpYS5zZ21sIHRvIHN0YW5kYWxvbmUgd2luZS1kZXZlbCBndWlkZSwgd2FzIGFscmVhZHkgaW4KCXdpbmUtZG9jLnNnbWwuCgoJKiBkb2N1bWVudGF0aW9uL2RiMmh0bWwtd2luZWhxOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJQ29ycmVjdGx5IGlkZW50aWZ5IGEgUmVkSGF0IGRpc3RyaWJ1dGlvbi4KCgkqIGRvY3VtZW50YXRpb24vZ2V0dGluZy5zZ21sOiBEdXN0aW4gTmF2ZWEgPHNwZWVkZHltb25AeWFob28uY29tPgoJUmVhcnJhbmdlZCBjb2RlIHRvIG1ha2UgaXQgbW9yZSByZWFkYWJsZS4KCUFkZGVkIGluIFJlZGhhdCBpbnN0YWxsIGluc3RydWN0aW9ucywgYW5kIG1hZGUgbm90ZSBpbiBPdGhlciBEaXN0cm8ncwoJc2VjdGlvbiB0byBjaGVjayB0aGUgUmVkaGF0IHBhZ2UgaWYgeW91IGFyZSB1c2luZyBNYW5kcmFrZSwgYXMgaXQgaXMKCVJlZGhhdC1iYXNlZC4KCVVwZGF0ZWQgRlRQIGxpc3QgaW4gdGhlIGRvY3MsIG9ubHkgMSBsaW5rIGRpZmZlcmVudCBmcm9tIHRoZSBtb3N0IHJlY2VudAoJQU5OT1VOQ0UsIHdvdyEKCUFkZGVkIGluc3RydWN0aW9ucyBvbiB1bi10YXJyaW5nLCBjb21waWxpbmcsIGFuZCBpbnN0YWxsaW5nIHdpbmUgZnJvbQoJYSB0YXJiYWxsLgoKCSogZG9jdW1lbnRhdGlvbi93aW5lLWRvYy5zZ21sOiBEdXN0aW4gTmF2ZWEgPHNwZWVkZHltb25AeWFob28uY29tPgoJQ29ycmVjdGVkIGNvZGUgc3BhY2luZyBmb3IgcmVhZGFiaWxpdHkuCgoJKiBkb2N1bWVudGF0aW9uL2ludHJvZHVjdGlvbi5zZ21sOiBEdXN0aW4gTmF2ZWEgPHNwZWVkZHltb25AeWFob28uY29tPgoJQ2hhbmdlIGZpcnN0IHVzYWdlIG9mIHRoZSBXb3JkIExpbnV4IGludG8gYSBsaW5rIHRvIHRoZSBsaW51eCBGQVEgYXQKCWxpbnV4ZG9jLm9yZy4KCUNoYW5nZSBmaXJzdCB1c2FnZSBvZiB0aGUgd29yZCBYMTEgaW50byBhIGxpbmsgdG8gdGhlIFgxMSBGQVEgYXQKCXhmcmVlODYub3JnLgoJQWRkIHdpbmUtZGV2ZWwgdG8gdGhlIHBsYWNlcyB0byBnbyBmb3IgYnVybmluZyBxdWVzdGlvbnMuCglVcHBlZCB0aGUgc3lzdGVtIHJlcSdzIHRvIHRoZSBjdXJyZW50IHJlcXVpcmVtZW50cy4KCUZpeGVkIGEgZmV3IGdyYW1tYXRpY2FsIGVycm9ycyBhbmQgbWFkZSB0aGUgdGV4dCBsb29rIGEgbGl0dGxlCglwcmV0dGllci4KCgkqIGRvY3VtZW50YXRpb24vYXV0aG9ycy5lbnQ6IER1c3RpbiBOYXZlYSA8c3BlZWRkeW1vbkB5YWhvby5jb20+CglBZGQgdGhlIHdpbmUtZGV2ZWwgbGlzdCBhbmQgbXlzZWxmIHRvIHRoZSBlbnRpdGllcyB0byBiZSByZWZlcmVuY2VkIGluCgl0aGUgZG9jcy4KCgkqIGRsbHMvZDNkOC9kZXZpY2UuYzogSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCS0gRml4IGJ1ZyBpbiBtdWx0aXRleHR1cmluZyBpbnRyb2R1Y2VkIGR1cmluZyBkdW1teSB0ZXh0dXJlIGNoYW5nZXMuCgktIEFkZGl0aW9uYWwgdHJhY2VzLgoKCSogZGxscy9vbGUzMi9oZ2xvYmFsc3RyZWFtLmM6IEFsYmVydG8gTWFzc2FyaSA8YWxieUBleGxuLmNvbT4KCUltcGxlbWVudGVkIGJvZHkgb2YgSEdMT0JBTFN0cmVhbUltcGw6OkNsb25lLgoKCSogZGxscy93aW5pbmV0L01ha2VmaWxlLmluLCBkbGxzL3dpbmluZXQvaHR0cC5jLAoJICBkbGxzL3dpbmluZXQvd2luaW5ldC5zcGVjOgoJQWxiZXJ0byBNYXNzYXJpIDxhbGJ5QGV4bG4uY29tPgoJQWRkZWQgSHR0cE9wZW5SZXF1ZXN0VywgSHR0cFF1ZXJ5SW5mb1csIEh0dHBTZW5kUmVxdWVzdFcuCgoJKiB0b29scy93aWRsL2hlYWRlci5jLCB0b29scy93aWRsL3BhcnNlci5sLCB0b29scy93aWRsL3BhcnNlci55LAoJICB0b29scy93aWRsL3Byb3h5LmMsIHRvb2xzL3dpZGwvd2lkbC5jLCB0b29scy93aWRsL3dpZGx0eXBlcy5oOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglTdXBwb3J0IGZvciBlbnVtcywgYXJyYXlzLCBlbmNhcHN1bGF0ZWQgdW5pb25zLCBzaWduZWQvdW5zaWduZWQKCXF1YWxpZmllcnMsIFVVSURzLCBpbmNsdWRlIGd1YXJkcywgdGhlIG5ldyBJQ09NX0RFRklORTEgbWFjcm8sIGFuZAoJc29tZSBvdGhlciBpbXByb3ZlbWVudHMuCgoJKiBkb2N1bWVudGF0aW9uL0hPV1RPLXdpbmVsaWI6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglSZW1vdmUgcGFydHMgdGhhdCBoYXZlIGJlZW4gbW92ZWQgYWxyZWFkeSBpbiB0aGUgRGV2ZWxvcG1lbnQgR3VpZGUuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9maWxlLmM6CglSeWFuIEN1bW1pbmcgPHJ5YW5AY29tcGxldGVseS5raWNrcy1hc3Mub3JnPgoJQWRkIHRlc3QgZm9yIERlbGV0ZUZpbGVBIHdpdGggZW1wdHkgcGF0aHMuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9nZGkvdGVzdHMvZ2VuZXJhdGVkLmMsCgkgIGRsbHMva2VybmVsL3Rlc3RzL2dlbmVyYXRlZC5jLCBkbGxzL250ZGxsL3Rlc3RzL2dlbmVyYXRlZC5jLAoJICBkbGxzL3NoZWxsMzIvdGVzdHMvLmN2c2lnbm9yZSwgZGxscy9zaGVsbDMyL3Rlc3RzL01ha2VmaWxlLmluLAoJICBkbGxzL3NoZWxsMzIvdGVzdHMvZ2VuZXJhdGVkLmMsIGRsbHMvc2hsd2FwaS90ZXN0cy8uY3ZzaWdub3JlLAoJICBkbGxzL3NobHdhcGkvdGVzdHMvTWFrZWZpbGUuaW4sIGRsbHMvc2hsd2FwaS90ZXN0cy9nZW5lcmF0ZWQuYywKCSAgZGxscy91cmxtb24vTWFrZWZpbGUuaW4sIGRsbHMvdXJsbW9uL3Rlc3RzLy5jdnNpZ25vcmUsCgkgIGRsbHMvdXJsbW9uL3Rlc3RzL01ha2VmaWxlLmluLCBkbGxzL3VybG1vbi90ZXN0cy9nZW5lcmF0ZWQuYywKCSAgZGxscy91c2VyL3Rlc3RzL2dlbmVyYXRlZC5jLCBkbGxzL3dpbmluZXQvdGVzdHMvLmN2c2lnbm9yZSwKCSAgZGxscy93aW5pbmV0L3Rlc3RzL01ha2VmaWxlLmluLCBkbGxzL3dpbmluZXQvdGVzdHMvZ2VuZXJhdGVkLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCVVwZGF0ZWQgdGhlIGdlbmVyYXRlZCB0ZXN0cy4KCgkqIHRvb2xzL3dpbmFwaS9jX3BhcnNlci5wbSwgdG9vbHMvd2luYXBpL2NfdHlwZS5wbSwKCSAgdG9vbHMvd2luYXBpL3Rlc3RzLmRhdCwgdG9vbHMvd2luYXBpL3dpbmFwaV90ZXN0OgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglBZGRlZCB0ZXN0cyBmb3IgYSBmZXcgbmV3IERMTHMuCgoJKiBkbGxzL3NoZWxsMzIvY2xpcGJvYXJkLmMsIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9waWRsLmgsCgkgIGRsbHMvc2hlbGwzMi9zaHZfYmdfY21lbnUuYywgaW5jbHVkZS9zaGVsbGFwaS5oLCBpbmNsdWRlL3NobG9iai5oLAoJICBpbmNsdWRlL3NobHdhcGkuaDoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgbWlzbWF0Y2hlcyBiZXR3ZWVuIHRoZSBXaW5lIGhlYWRlcnMgYW5kIHRoZSBNaWNyb3NvZnQgaGVhZGVycy4KCgkqIHNjaGVkdWxlci9zeXNkZXBzLmM6IEZpeGVkIHNwYXJjIGNoZWNrLgoKMjAwMi0xMS0xMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRvY3VtZW50YXRpb24vYXV0aG9ycy5lbnQsIGRvY3VtZW50YXRpb24vZG9jdW1lbnRhdGlvbi5zZ21sOgoJVG9ueSBMYW1icmVndHMgPHRvbnlfbGFtYnJlZ3RzQHRlbHVzcGxhbmV0Lm5ldD4KCU1ha2UgdGhlIGluc3RydWN0aW9ucyBvZiBob3cgdG8gaW5zdGFsbCBzZ21sIGVhc2llciB0byB1bmRlcnN0YW5kLgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgcGFydGlhbCBpbXBsZW1lbnRhdGlvbiBvZiBJVHlwZUluZm86OkdldERsbEVudHJ5KCkuCgoJKiBkbGxzL2RkcmF3L2RkcmF3X3ByaXZhdGUuaCwgZGxscy9kZHJhdy9kc3VyZmFjZS9tYWluLmMsCgkgIGRsbHMvZGRyYXcvaGVscGVyLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJUHJvcGVyIGxvZ2dpbmcgb2YgRERTQ0FQUyAvIEREU0NBUFMyIHN0cnVjdHVyZXMuCgoJKiBkbGxzL3VzZXIvdXNlcjE2LmMsIHByb2dyYW1zL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5oZWxwL3N0cmluZy5jLAoJICBwcm9ncmFtcy93aW5oZWxwL3dpbmhlbHAuYywgd2luZG93cy93aW5oZWxwLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUltcGxlbWVudGVkIGEgV2luZS1vbmx5IHNjaGVtZSBmb3IgaW50ZXJwcm9jZXNzIFdpbkhlbHAgbWVzc2FnZQoJcGFzc2luZy4KCgkqIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmM6CglSb2xmIEthbGJlcm1hdHRlciA8cm9sZi5rYWxiZXJtYXR0ZXJAY2l0ZW5nLmNvbT4KCUZpeCBzb21lIE5VTEwgZGVyZWZlcmVuY2luZy4KCgkqIG1zZG9zL2ludDExLmM6IFJvYmVydCAnQWRtaXJhbCcgQ29leW1hbiA8YWRtaXJhbEBjb3JuZXIubmV0PgoJRml4ZWQgYml0IDIgdmFsdWUgYW5kIHNldCBiaXQgMSB0b28uCgoJKiBNYWtlZmlsZS5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuYWMsIHByb2dyYW1zL01ha2VmaWxlLmluOgoJUmVtb3ZlZCB3aW5ldGVzdC4KCgkqIGRsbHMvZGRyYXcvZHN1cmZhY2UvZGliLmM6IE1hcmtvIEtyZWVuIDxtYXJrb0BsLXQuZWU+CglDbGlwIGJvdHRvbSBjb29yZGluYXRlcy4KCgkqIE1ha2UucnVsZXMuaW4sIGRsbHMvTWFrZXRlc3QucnVsZXMuaW4sIHRvb2xzL21ha2VfY3Rlc3RzLAoJICB0b29scy9ydW50ZXN0OgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVJld3JpdGUgbWFrZV9jdGVzdHMgYW5kIHJ1bnRlc3QgaW4gc2hlbGwuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBkbGxzL3dpbmVkb3MvaW50MzEuYzoKCUp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCU1vdmUgYWxsIGludDMxIGZ1bmN0aW9ucyB0byB3aW5lZG9zLgoJRml4IHNvbWUgb2J2aW91cyBidWdzIGluIGludDMxIGZ1bmN0aW9ucy4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYzogUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIGlzc3VlcyBmb3VuZCBieSB3aW5hcGlfY2hlY2suCgoJKiB0b29scy93aW5hcGkvd2luMTYuYXBpLCB0b29scy93aW5hcGkvd2luMzIuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2NoZWNrLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2Z1bmN0aW9uLnBtLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2dsb2JhbC5wbSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9sb2NhbC5wbToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBBUEkgZmlsZXMgdXBkYXRlLgoJLSBGaXhlZCBvcHRpb25zIC0tY3Jvc3MtY2FsbC17dW5pY29kZS1hc2NpaSx3aW4zMi13aW4xNn0uCgktIE1pbm9yIHJlb3JnYW5pemF0aW9uIG9mIHRoZSBnbG9iYWwgY2hlY2tzLgoKCSogc2NoZWR1bGVyL3N5c2RlcHMuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGQgY2FzZSBmb3Igbm9uIHNwYXJjIC8gbm9uIGkzODYgU1lTREVQU19DYWxsT25TdGFjay4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlcGljdHVyZS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUltcGxlbWVudGVkIE9sZUxvYWRQaWN0dXJlRXguCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTaWxlbmNlIG9uZSBGSVhNRSgpLiBJbXBsZW1lbnQgSVR5cGVJbmZvOjpHZXREb2N1bWVudGF0aW9uIGZvcgoJdmFyaWFibGUgZGVzY3JpcHRpb25zLgoKCSogZGxscy93aW5tbS9kcml2ZXIuYywgZGxscy93aW5tbS9sb2x2bGRydi5jLCBkbGxzL3dpbm1tL3dpbmVtbS5oLAoJICBkbGxzL3dpbm1tL3dpbm1tLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCU5vdyBwcm9wZXJseSB1bmxvYWRpbmcgbXVsdGltZWRpYSBkcml2ZXJzIHdoZW4gd2lubW0gdW5sb2Fkcy4KCgkqIHdpbmRvd3MvbXNnYm94LmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBiYWlrYWwucnU+CglGaXggY29weS9wYXN0ZSBidWcuIE1ha2UgTWVzc2FnZUJveCB3aXRob3V0IGFuIGljb24gbG9vayBiZXR0ZXIuCgoJKiBwcm9ncmFtcy93aW5oZWxwL2hscGZpbGUuYzogRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBsb2FkaW5nIEhDVyA0LjAgZmlsZXMgd2l0aG91dCBwaHJhc2UgaW1hZ2UgY29tcHJlc3Npb24uCgoyMDAyLTExLTA4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWM6IFBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBBZGRlZCAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+IHdoZXJlIG5lZWRlZCBmb3IgRnJlZUJTRC4KCS0gQWRkZWQgcHJvdGVjdGlvbiBmb3IgI2luY2x1ZGUgPHN5cy97c29ja2V0LHVufS5oPi4KCgkqIGRsbHMvY29tbWRsZy9jZGxnX0NhLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19EYS5yYywKCSAgZGxscy9jb21tZGxnL2NkbGdfRGUucmMsIGRsbHMvY29tbWRsZy9jZGxnX0VuLnJjLAoJICBkbGxzL2NvbW1kbGcvY2RsZ19Fcy5yYywgZGxscy9jb21tZGxnL2NkbGdfRmkucmMsCgkgIGRsbHMvY29tbWRsZy9jZGxnX0ZyLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19IdS5yYywKCSAgZGxscy9jb21tZGxnL2NkbGdfSXQucmMsIGRsbHMvY29tbWRsZy9jZGxnX0phLnJjLAoJICBkbGxzL2NvbW1kbGcvY2RsZ19ObC5yYywgZGxscy9jb21tZGxnL2NkbGdfUGwucmMsCgkgIGRsbHMvY29tbWRsZy9jZGxnX1B0LnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19SdS5yYywKCSAgZGxscy9jb21tZGxnL2NkbGdfU2kucmMsIGRsbHMvY29tbWRsZy9jZGxnX1NrLnJjLAoJICBkbGxzL2NvbW1kbGcvY2RsZ19Tdi5yYywgZGxscy9jb21tZGxnL2NkbGdfV2EucmMsCgkgIGRsbHMvY29tbWRsZy9jZGxnX1poLnJjLCBkbGxzL2NvbW1kbGcvZm9udGRsZy5jOgoJU2hhY2hhciBTaGVtZXNoIDx3aW5lY29kZUBzdW4uY29uc3VtZXIub3JnLmlsPgoJLSBDaGFuZ2VkIGFsbCBudW1lcmljIHJlc291cmNlcyBpbiBDaG9vc2VGb250IHRvIGxhYmVscyBmb3IgYmV0dGVyCgkgIHJlYWRhYmlsaXR5LgoJLSBDaGFuZ2VkIGFsbCBoYW5kbGluZyBvZiBzdGM2ICgxMDkzKSB0byBhdGM1ICgxMDkyKSBzbyB0aGF0IHdpbGwgYmUKCSAgY29tcGF0aWJsZSB3aXRoIFdpbmRvd3MgcmVzb3VyY2UgbnVtYmVycy4KCS0gQWRkZWQgY29kZSB0byBsb2FkIHRoZSB1c2VyJ3MgcmVzb3VyY2VzIHJhdGhlciB0aGFuIG91ciBvd24gaWYKCSAgQ0ZfRU5BQkxFVEVNUExBVEUgaXMgcGFzc2VkIGluICJmbGFncyIuCgoJKiBzZXJ2ZXIvY29udGV4dF9pMzg2LmM6IFBpZXJyZSBCZXlzc2FjIDxwYi13aW5lQGZhc3Rlcml4LmZybXVnLm9yZz4KCUF2b2lkIEZyZWVCU0QgY29tcGF0aWJpbGl0eSBpc3N1ZXMgd2l0aCBkYnJlZyBzdHJ1Y3R1cmUuCgoJKiBpbmNsdWRlL3dpbmUvb2JqX2Jhc2UuaCwgaW5jbHVkZS93aW5lL29ial9taXNjLmg6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCU1vdmVkIElNYWxsb2MgZGVmaW5pdGlvbiBmcm9tIG9ial9iYXNlLmggdG8gb2JqX21pc2MuaC4KCgkqIGluY2x1ZGUvY3VzdGNudGwuaDogSnVyYWogSGVyY2VrIDxqdXJhakBzeW5jYWQuY29tPgoJQWRkZWQgV0lORUxJQl9OQU1FX0FXIGZvciBMUENDSU5GTy4KCgkqIGRsbHMvbnRkbGwvc2lnbmFsX3NwYXJjLmM6IEp1cmFqIEhlcmNlayA8anVyYWpAc3luY2FkLmNvbT4KCUZpeGVkIGJ1ZyBpbiBjb250ZXh0IHJlZ2lzdGVycywgYWRkZWQgSEFORExFUl9ERUYgYW5kIEhBTkRMRVJfQ09OVEVYVAoJbWFjcm9zLgoKCSogZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jOiBNYXJjdXMgTWVpc3NuZXIgPG1laXNzbmVyQHN1c2UuZGU+CglPbmx5IGVuYWJsZSBWTTg2IG1vZGUgaWYgd2UgaGF2ZSB0aGUgPHN5cy92bTg2Lmg+IGluY2x1ZGUgZmlsZS4KCgkqIGRsbHMvcmFzYXBpMzIvcmFzYXBpLmMsIGRsbHMvcmFzYXBpMzIvcmFzYXBpMzIuc3BlYywgaW5jbHVkZS9yYXMuaDoKCU1hcmN1cyBNZWlzc25lciA8bWVpc3NuZXJAc3VzZS5kZT4KCU5ldyBzdHJ1Y3R1cmVzOiBSQVNJUEFERFIsIFJBU0RFVklORk8sIFJBU0VOVFJZLgoJTmV3IHN0dWJzOiBSYXNTZXRFbnRyeVByb3BlcnRpZXMuCglSYXNFbnVtRGV2aWNlc0EgZW5oYW5jZWQuCgoJKiBkbGxzL3NoZWxsMzIvZGF0YW9iamVjdC5jOiBBbGJlcnRvIE1hc3NhcmkgPGFsYnlAZXhsbi5jb20+CglUaGUgb2JqZWN0IHJldHVybmVkIGJ5IElFbnVtRk9STUFURVRDOjpDbG9uZSBzaG91bGQgaGF2ZSB0aGUgc2FtZQoJY3Vyc29yIHBvc2l0aW9uIG9mIHRoZSBzb3VyY2Ugb2JqZWN0LgoKCSogZGxscy9ycGNydDQvY3N0dWIuYzogQWxiZXJ0byBNYXNzYXJpIDxhbGJ5QGV4bG4uY29tPgoJQXZvaWQgY3Jhc2hpbmcgd2hlbiByZWxlYXNpbmcgYW4gTmRyQ1N0ZFN0dWJCdWZmZXIgdGhhdCBoYWQgYmVlbgoJcHJldmlvdXNseSBkaXNjb25uZWN0ZWQuCgoJKiBmaWxlcy9maWxlLmM6IFJ5YW4gQ3VtbWluZyA8cnlhbkBjb21wbGV0ZWx5LmtpY2tzLWFzcy5vcmc+CgktIFNpbGVuY2UgYW5ub3lpbmcgIkVtcHR5IHBhdGggcGFzc2VkIiBlcnJvci4KCS0gU2V0IGVycm9yIGNvcnJlY3RseSB3aGVuIGFuIGVtcHR5IHBhdGggaXMgcGFzc2VkIHRvIERlbGV0ZUZpbGUuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9sb2NhbGUuYywgb2xlL29sZTJubHMuYzoKCVJ5YW4gQ3VtbWluZyA8cnlhbkBjb21wbGV0ZWx5LmtpY2tzLWFzcy5vcmc+CglSZW1vdmUgT0xFX0dldEZvcm1hdEEsIHJlaW1wbGVtZW50IEdldERhdGVGb3JtYXRBIGFuZCBHZXRUaW1lRm9ybWF0QQoJYXMgd3JhcHBlcnMgYXJvdW5kIHRoZWlyIFVuaWNvZGUgdmVyc2lvbnMuCgoJKiBkbGxzL29sZWF1dDMyL29sZWF1dDMyLnNwZWMsIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglEcmFmdCBpbXBsZW1lbnRhdGlvbiBvZiBEaXNwQ2FsbEZ1bmMuCgoyMDAyLTExLTA2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9udGRsbC92aXJ0dWFsLmM6CglEaXNhYmxlIGFkZHJlc3Mgc3BhY2UgbGltaXQgY2hlY2sgb24gbm9uLWkzODYgcGxhdGZvcm1zLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRG8gbm90IGRyYXcgdGhlIHRleHQgb2YgdGhlIGl0ZW0gYmVpbmcgZWRpdGVkLgoKCSogdG9vbHMvd2luZWJ1aWxkL2ltcG9ydC5jOiBFcmljIEZyaWFzIDxlZnJpYXNAc3luY2FkLmNvbT4KCUFkZGVkIHF1b3RlcyB0byBhc3NlbWJseSBsYW5ndWFnZSBvdXRwdXQuCgoJKiBzY2hlZHVsZXIvc3lzZGVwcy5jOiBKdXJhaiBIZXJjZWsgPGp1cmFqQHN5bmNhZC5jb20+CglJbXBsZW1lbnRlZCBTWVNERVBTX0NhbGxPblN0YWNrIGZvciBzcGFyY3MuCgoJKiBwcm9ncmFtcy9yZWdlZGl0L3JlZ3Byb2MuYzogSnVyYWogSGVyY2VrIDxqdXJhakBzeW5jYWQuY29tPgoJQnVnIGZpeGVzIHJlbGF0ZWQgdG8gc3BhcmMgNC1ieXRlIGJvdW5kYXJ5IGFsaWdubWVudC4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUZpeCB0aGUgJ2p1bXBpbmcgc2VsZWN0aW9uJyBidWcgKCMxMTA4KS4KCU1pc2Mgc21hbGwgY2xlYW51cHMuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYzogR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglXaGVuIGNoZWNraW5nIGZvciBzeXMvbW91bnQuaCBhbmQgc3lzL3VzZXIuaCBhbHNvIGluY2x1ZGUgc3lzL3R5cGVzLmgKCWlmIGF2YWlsYWJsZS4KCgkqIGRsbHMvZ2RpL3Rlc3RzL2dlbmVyYXRlZC5jLCBkbGxzL2tlcm5lbC90ZXN0cy9nZW5lcmF0ZWQuYywKCSAgZGxscy9udGRsbC90ZXN0cy9nZW5lcmF0ZWQuYywgZGxscy91c2VyL3Rlc3RzL2dlbmVyYXRlZC5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglVcGRhdGVkIHRoZSBnZW5lcmF0ZWQgdGVzdHMuCgoJKiB0b29scy93aW5hcGkvdGVzdHMuZGF0LCB0b29scy93aW5hcGkvd2luYXBpX3Rlc3Q6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gQWRkZWQgY29kZSBmb3IgZGV0ZWN0aW9uIG9mIG1pc3NpbmcgdHlwZXMuCgktIEFkZGVkIG1pc3NpbmcgdHlwZXMuCgktIEFkZGVkIGEgZnVuY3Rpb24gZm9yIGVhY2ggdHlwZSB0ZXN0IHRvIGltcHJvdmUgY29tcGlsaW5nIHdpdGggLU8yLgoKCSogZGxscy9ycGNydDQvcnBjX2JpbmRpbmcuYywgZGxscy9ycGNydDQvcnBjcnQ0X21haW4uYzoKCUdyZWcgVHVybmVyIDxnbXR1cm5lcjAwN0BhbWVyaXRlY2gubmV0PgoJLSBSZW1vdmUgc3R1cGlkIGluZGVudGF0aW9ucyBmcm9tIHRyYWNlIG1zZ3MuCgktIFVwZGF0ZSB0aGUgcnBjIFRPRE8gbGlzdCBhIGJpdC4KCS0gQWRkIHNvbWUgY29uc3RhbnRzIGZvciB3aW5hcGlfY2hlY2suCgktIE5pbCBwb2ludGVyIHN1cHBvcnQgZm9yIHNvbWUgVVVJRCBmdW5jdGlvbnMgKHNwb3R0ZWQgYnkgT2xpdmllcgoJICBFdmFsZXQpLgoKCSogY29udHJvbHMvbWVudS5jOiBDaHJpcyBNb3JnYW4gPGNtb3JnYW5AYWx1bS53cGkuZWR1PgoJUmVtb3ZlIEVSUigpIGlmIG1lbnUgZW50cnkgaXNuJ3Qgb2YgdHlwZSBNRl9TVFJJTkcgYXMgc29tZQoJYXBwbGljYXRpb25zIHNldCBmbGFncyBvZiBNVF9TRVBBUkFUT1IgYW5kIGVycm9uZW91cyBlcnJvcnMgYXJlCglwcm9kdWNlZC4gIEFkZCBhIGNvdXBsZSBvZiBjb21tZW50cy4KCgkqIGRsbHMvbnRkbGwvdGltZS5jOiBHefZyZ3kgJ05vZycgSmVuZXkgPG5vZ0BzZGYubG9uZXN0YXIub3JnPgoJLSBGaXggUnRsVGltZVRvVGltZUZpZWxkcyB0byBhY3R1YWxseSB3b3JrLgoJLSBSZW1vdmUgY29tbWVudHMgYWJvdXQgbGVhcCBzZWNvbmRzLCB3aW5kb3dzIGRvZXNuJ3QgdGFrZSB0aGF0IGludG8KCSAgYWNjb3VudC4KCgkqIGRsbHMvd2luZWRvcy9kb3N2bS5jLCBkbGxzL3dpbmVkb3MvaW50ZXJydXB0cy5jOgoJSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJU3RhcnQgdXNpbmcgd2luZWRvcyBoYW5kbGVycyBmb3IgYWxsIGludGVycnVwdHMuCgoJKiB3aW5kb3dzL3N5c21ldHJpY3MuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglDb21wdXRlIFNNX0NZTUFYSU1JWkVEIHB1cmVseSBiYXNlZCBvbiB0aGUgc2NyZWVuIGhlaWdodCB1bnRpbCB3ZSBrbm93Cglob3cgdG8gdGFrZSBpbnRvIGFjY291bnQgJ3N0YXJ0IG1lbnVzJyBjb3JyZWN0bHkuCgoJKiBNYWtlLnJ1bGVzLmluLCBkbGxzL01ha2VkbGwucnVsZXMuaW4sIGRsbHMvTWFrZXRlc3QucnVsZXMuaW4sCgkgIGRsbHMva2VybmVsL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLAoJICBkbGxzL250ZGxsL01ha2VmaWxlLmluLCBkbGxzL3VzZXIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvdXNlci91c2VyMzIuc3BlYywgbWlzY2VtdS9NYWtlZmlsZS5pbiwgbWlzY2VtdS93aW5lLnNwZWMsCgkgIHByb2dyYW1zL01ha2Vwcm9nLnJ1bGVzLmluLCBwcm9ncmFtcy9hdml0b29scy9NYWtlZmlsZS5pbiwKCSAgdG9vbHMvd2luZWJ1aWxkL21haW4uYywgdG9vbHMvd2luZWJ1aWxkL3BhcnNlci5jLAoJICB0b29scy93aW5lYnVpbGQvd2luZWJ1aWxkLm1hbi5pbiwgdG9vbHMvd2luZW1ha2VyOgoJQWRkZWQgd2luZWJ1aWxkIC1lIG9wdGlvbiB0byBzcGVjaWZ5IHRoZSBlbnRyeSBwb2ludCBhbmQgcmVtb3ZlZCB0aGUKCSdpbml0JyBzcGVjIGZpbGUgZGlyZWN0aXZlLgoJV2luZWJ1aWxkIGxvbmcgb3B0aW9ucyBub3cgdXNlIGEgbW9yZSBzdGFuZGFyZCBkb3VibGUgZGFzaCBmb3JtYXQKCShvbGRlciBmb3JtYXQgc3RpbGwgc3VwcG9ydGVkIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSkuCgoJKiB0b29scy93aW5hcGkvd2luMTYuYXBpLCB0b29scy93aW5hcGkvd2luMzIuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5kYXQ6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUFQSSBmaWxlcyB1cGRhdGUuCgoJKiBkbGxzL21zdmNydC90ZXN0cy9zY2FuZi5jLCBkbGxzL21zdmlkZW8vbXN2aWRlbzE2LmMsCgkgIGRsbHMvd2luZWRvcy9pbnQwOS5jLCBkbGxzL3dpbmVkb3MvaW50MTAuYywgZGxscy93aW5lZG9zL2ludDE2LmMsCgkgIGRsbHMvd2luZWRvcy9pbnQxNy5jLCBkbGxzL3dpbmVkb3MvaW50MjAuYywgZGxscy93aW5lZG9zL2ludDIxLmMsCgkgIGRsbHMvd2luZWRvcy9pbnQyOS5jLCBkbGxzL3dpbmVkb3MvaW50MzMuYywgZGxscy93aW5lZG9zL2ludDY3LmMsCgkgIGRsbHMvd2luZWRvcy9pbnRlcnJ1cHRzLmMsIGRsbHMvd2lubW0vbW1zeXN0ZW0uYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSBpc3N1ZXMgZm91bmQgYnkgd2luYXBpX2NoZWNrLgoKCSogaW5jbHVkZS93aW5lL29ial9iYXNlLmg6IE92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJQWRkIElDT01fREVGSU5FMSBtYWNybyB0byBkZWZpbmUgYSBDT00gaW50ZXJmYWNlIHdpdGhvdXQgYSBiYXNlCgljbGFzcy4KCVVzZSBpdCB0byBkZWZpbmUgSVVua25vd24uCgoJKiBkbGxzL2QzZDgvZDNkOF9tYWluLmMsIGRsbHMvZDNkOC9kM2Q4X3ByaXZhdGUuaCwgZGxscy9kM2Q4L2RldmljZS5jLAoJICBkbGxzL2QzZDgvZGlyZWN0eC5jOgoJSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCS0gU3RlbmNpbCBtYXBwaW5nIG5vdyB3b3JrcyAoaXQgaGVscHMgdG8gYWN0dWFsbHkgYWxsb2NhdGUgYSBzdGVuY2lsCgkgIGJ1ZmZlcikuCgktIFRleHR1cmUgbWFwcGluZyBjb3JyZWN0ZWQgaWYgbm8gcmVhbCB0ZXh0dXJlIGJvdW5kLgoJLSBDb2RlIG5vdyBkZXRlY3RzIHdoaWNoIG9wZW5nbCBleHRlbnNpb25zIGFyZSBwcmVzZW50IC0gdG8gYmUKCSAgZXh0ZW5kZWQgbGF0ZXIuCgktIE1vcmUgZGVidWcgdHJhY2Vwb2ludHMuCgoJKiBwcm9ncmFtcy93aW5lZGJnL2hhc2guYzogRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglSZXBsYWNlZCBhc3NlcnQgYnkgc2ltcGxlIGlmICsgd2FybmluZyBtZXNzYWdlIGZvciB0b28gbG9uZyBzeW1ib2xzLgoKCSogZGxscy93aW5lZG9zL2ludDMxLmM6IEp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCU1vdmUgbW9zdCBpbnQzMSBmdW5jdGlvbnMgdG8gd2luZWRvcy4KCUFkZCBEUE1JMzIgZml4ZXMuCgoJKiBkbGxzL2RkcmF3L2RkcmF3L2hhbC5jLCBkbGxzL2RkcmF3L2RkcmF3L3VzZXIuYywKCSAgZGxscy9kZHJhdy9kc3VyZmFjZS9kaWIuYywgZGxscy9kZHJhdy9kc3VyZmFjZS9mYWtlemJ1ZmZlci5jLAoJICBkbGxzL2RkcmF3L2RzdXJmYWNlL2dhbW1hLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UvaGFsLmMsCgkgIGRsbHMvZGRyYXcvZHN1cmZhY2UvdGh1bmtzLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UvdXNlci5jOgoJTWF0dGhldyBCbG9jaCA8bWF0dGhld0BieXRlbWFyay5jby51az4KCVZ0YWJsZSBmaXhlcy4KCgkqIGRsbHMvcmFzYXBpMzIvcmFzYXBpLmMsIGRsbHMvcmFzYXBpMzIvcmFzYXBpMzIuc3BlYzoKCU1hcmN1cyBNZWlzc25lciA8bWVpc3NuZXJAc3VzZS5kZT4KCUFkZGVkIFJhc1ZhbGlkYXRlRW50cnlOYW1lQSBzdHViLgoKMjAwMi0xMS0wNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvYXZpZmlsMzIvYXZpZmlsMzIuc3BlYywgZGxscy9hdmlmaWwzMi9mYWN0b3J5LmMsCgkgIGRsbHMvY29tY2F0L2NvbWNhdC5zcGVjLCBkbGxzL2NvbWNhdC9jb21jYXRfbWFpbi5jLAoJICBkbGxzL2NvbWN0bDMyL2NvbWN0bDMyLnNwZWMsIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYywKCSAgZGxscy9jb21tZGxnL2NkbGczMi5jLCBkbGxzL2NvbW1kbGcvY29tZGxnMzIuc3BlYywKCSAgZGxscy9jcnRkbGwvY3J0ZGxsLnNwZWMsIGRsbHMvY3J0ZGxsL2NydGRsbF9tYWluLmMsCgkgIGRsbHMvZDNkOC9kM2Q4LnNwZWMsIGRsbHMvZDNkOC9kM2Q4X21haW4uYywgZGxscy9kZHJhdy9kZHJhdy5zcGVjLAoJICBkbGxzL2RkcmF3L21haW4uYywgZGxscy9kaW5wdXQvZGlucHV0LnNwZWMsCgkgIGRsbHMvZGlucHV0L2RpbnB1dF9tYWluLmMsIGRsbHMvZHBsYXl4L2RwbGF5eC5zcGVjLAoJICBkbGxzL2RwbGF5eC9kcGxheXhfbWFpbi5jLCBkbGxzL2dkaS9nZGkzMi5zcGVjLCBkbGxzL2dkaS9nZGlfbWFpbi5jLAoJICBkbGxzL2ltYWdlaGxwL2ltYWdlaGxwLnNwZWMsIGRsbHMvaW1hZ2VobHAvaW1hZ2VobHBfbWFpbi5jLAoJICBkbGxzL21zYWNtL21zYWNtMzIuc3BlYywgZGxscy9tc2FjbS9tc2FjbTMyX21haW4uYywKCSAgZGxscy9tc2lzeXMvbXNpc3lzLmMsIGRsbHMvbXNpc3lzL21zaXN5cy5vY3guc3BlYywKCSAgZGxscy9tc3ZjcnQvbWFpbi5jLCBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYywKCSAgZGxscy9tc3ZpZGVvL21zcmxlMzIvbXNybGUzMi5jLCBkbGxzL21zdmlkZW8vbXNybGUzMi9tc3JsZTMyLnNwZWMsCgkgIGRsbHMvbmV0YXBpMzIvbmV0YXBpMzIuYywgZGxscy9uZXRhcGkzMi9uZXRhcGkzMi5zcGVjLAoJICBkbGxzL29kYmMzMi9vZGJjMzIuc3BlYywgZGxscy9vZGJjMzIvcHJveHlvZGJjLmMsCgkgIGRsbHMvb2xlMzIvb2xlMzIuc3BlYywgZGxscy9vbGUzMi9vbGUzMl9tYWluLmMsCgkgIGRsbHMvb3BlbmdsMzIvb3BlbmdsMzIuc3BlYywgZGxscy9vcGVuZ2wzMi93Z2wuYywKCSAgZGxscy9yaWNoZWRpdC9yaWNoZWQzMi5zcGVjLCBkbGxzL3JpY2hlZGl0L3JpY2hlZGl0LmMsCgkgIGRsbHMvcnBjcnQ0L3JwY3J0NC5zcGVjLCBkbGxzL3JwY3J0NC9ycGNydDRfbWFpbi5jLAoJICBkbGxzL3NlcmlhbHVpL2NvbmZkbGcuYywgZGxscy9zZXJpYWx1aS9zZXJpYWx1aS5zcGVjLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsCgkgIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWMsIGRsbHMvc2hsd2FwaS9zaGx3YXBpX21haW4uYywKCSAgZGxscy9zbm1wYXBpL21haW4uYywgZGxscy9zbm1wYXBpL3NubXBhcGkuc3BlYywKCSAgZGxscy90dHlkcnYvdHR5ZHJ2LnNwZWMsIGRsbHMvdHR5ZHJ2L3R0eWRydl9tYWluLmMsCgkgIGRsbHMvdHdhaW4vdHdhaW4zMl9tYWluLmMsIGRsbHMvdHdhaW4vdHdhaW5fMzIuc3BlYywKCSAgZGxscy91cmxtb24vdXJsbW9uLnNwZWMsIGRsbHMvdXJsbW9uL3VybG1vbl9tYWluLmMsCgkgIGRsbHMvd2luYXNwaS93aW5hc3BpMzIuYywgZGxscy93aW5hc3BpL3duYXNwaTMyLnNwZWMsCgkgIGRsbHMvd2luZWRvcy9kb3N2bS5jLCBkbGxzL3dpbmVkb3Mvd2luZWRvcy5zcGVjLCBkbGxzL3dpbmVwcy9pbml0LmMsCgkgIGRsbHMvd2luZXBzL3dpbmVwcy5zcGVjLCBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYywKCSAgZGxscy93aW5pbmV0L3dpbmluZXQuc3BlYywgZGxscy93aW5tbS9tY2lhdmkvbWNpYXZpLmMsCgkgIGRsbHMvd2lubW0vbWNpYXZpL21jaWF2aS5kcnYuc3BlYywgZGxscy93aW5tbS93aW5tbS5jLAoJICBkbGxzL3dpbm1tL3dpbm1tLnNwZWMsIGRsbHMvd2luc29jay9zb2NrZXQuYywKCSAgZGxscy93aW5zb2NrL3dzMl8zMi5zcGVjLCBkbGxzL3dpbnNwb29sL3dpbnNwb29sLmRydi5zcGVjLAoJICBkbGxzL3dpbnNwb29sL3dzcG9vbC5jLCBkbGxzL3gxMWRydi94MTFkcnYuc3BlYywKCSAgZGxscy94MTFkcnYveDExZHJ2X21haW4uYywgdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jOgoJTWFkZSB0aGUgZGxsIGVudHJ5IHBvaW50IGRlZmF1bHQgdG8gRGxsTWFpbiBhbmQgcmVtb3ZlZCBtb3N0IG9mIHRoZQoJJ2luaXQnIHNwZWMgZmlsZSBkZWNsYXJhdGlvbnMuCgoJKiBkbGxzL3NoZWxsMzIvY29udHJvbC5jOiBXYXJuaW5nIGZpeC4KCgkqIGRsbHMva2VybmVsL2Zvcm1hdF9tc2cuYzoKCVJ5YW4gQ3VtbWluZyA8cnlhbkBjb21wbGV0ZWx5LmtpY2tzLWFzcy5vcmc+CglIYW5kbGUgRk9STUFUX01FU1NBR0VfRlJPTV9ITU9EVUxFIGFuZCBGT1JNQVRfTUVTU0FHRV9GUk9NX1NZU1RFTSBib3RoCgliZWluZyBzZXQgYXQgb25jZS4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL3dpbm1tL01ha2VmaWxlLmluLAoJICBkbGxzL3dpbm1tL3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMvd2lubW0vdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvd2lubW0vdGVzdHMvd2F2ZS5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVRlc3Qgc291bmQgZm9ybWF0IHN1cHBvcnQgd2l0aCB3YXZlT3V0R2V0RGV2Q2FwcyBhbmQgd2F2ZU91dE9wZW4uCgoJKiByZWxheTMyL3JlbGF5Mzg2LmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYzoKCUhhY2sgdG8gZGV0ZWN0IHJlZ2lzdGVyIGZ1bmN0aW9ucyBhdXRvbWF0aWNhbGx5IHNvIHRoYXQgcmVsYXkgZGVidWcKCWFsc28gd29ya3MgZm9yIGZ1bmN0aW9ucyB1c2luZyB0aGUgREVGSU5FX1JFR1NfRU5UUllfUE9JTlQgbWFjcm9zLgoKCSogZmlsZXMvZGlyZWN0b3J5LmM6IE1ha2UgQ09NU1BFQyBwb2ludCB0byB3Y21kLmV4ZSwgbm90IGNvbW1hbmQuY29tLgoKCSogaW5jbHVkZS93aW51c2VyLmgsIHdpbmRvd3Mvc3lzcGFyYW1zLmM6CglHcmVnIFR1cm5lciA8Z210dXJuZXIwMDdAYW1lcml0ZWNoLm5ldD4KCS0gbm9vcCByZWRlZmluaXRpb24gb2YgU1BJX1tHRVQvU0VUXU1FTlVVTkRFUkxJTkVTCgktIGRlZmluZSBhbmQgZml4bWUgZm9yCgkgIFNQSV9bR0VUL1NFVF1bU0VMRUNUSU9ORkFERS9EUk9QU0hBRE9XL0tFWUJPQVJEQ1VFU10KCgkqIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX0h1LnJjLCBwcm9ncmFtcy9jbG9jay9IdS5yYywKCSAgcHJvZ3JhbXMvY2xvY2svcnNyYy5yYywgcHJvZ3JhbXMvbm90ZXBhZC9IdS5yYywKCSAgcHJvZ3JhbXMvbm90ZXBhZC9yc3JjLnJjLCBwcm9ncmFtcy9wcm9nbWFuL0h1LnJjLAoJICBwcm9ncmFtcy9wcm9nbWFuL3JzcmMucmMsIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25zb2xlX0h1LnJjLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZV9yZXMucmMsIHByb2dyYW1zL3dpbmVmaWxlL0h1LnJjLAoJICBwcm9ncmFtcy93aW5lZmlsZS9yc3JjLnJjLCBwcm9ncmFtcy93aW5oZWxwL0h1LnJjOgoJWm9seSBOYWd5IDxuYWd5em9saUBkcm90cG9zdGEuaHU+CglBZGRlZC91cGdyYWRlZCBIdW5nYXJpYW4gcmVzb3VyY2VzLgoKCSogZGxscy9nZGkvZnJlZXR5cGUuYywgZGxscy93aW4zMnMvd2luMzJzMTYuYywKCSAgZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsIGluY2x1ZGUvZ2RpLmgsIGluY2x1ZGUvd2luYmFzZS5oLAoJICBpbmNsdWRlL3dpbmdkaS5oLCBpbmNsdWRlL3dpbm50LmgsIGluY2x1ZGUvd2ludXNlci5oLAoJICBpbmNsdWRlL3gxMWZvbnQuaCwgbWVtb3J5L3ZpcnR1YWwuYywgbXNkb3MvdnhkLmMsCgkgIG9iamVjdHMvZW5obWV0YWZpbGUuYywgb2JqZWN0cy9mb250LmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIG1pc21hdGNoZXMgYmV0d2VlbiB0aGUgV2luZSBoZWFkZXJzIGFuZCB0aGUgTWljcm9zb2Z0IGhlYWRlcnMuCgoJKiB0b29scy93aW5hcGkvbXN2Y21ha2VyOiBQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gVXBkYXRlZCBpdCB0byBzdXBwb3J0IGNoYW5nZXMgaW4gV2luZS4KCS0gQWRkZWQgc3VwcG9ydCBmb3IgQysrIGNvbXBpbGF0aW9uIChvZmYgYnkgZGVmYXVsdCkuCgoJKiBkbGxzL2dkaS90ZXN0cy9nZW5lcmF0ZWQuYywgZGxscy9rZXJuZWwvdGVzdHMvZ2VuZXJhdGVkLmMsCgkgIGRsbHMvbnRkbGwvdGVzdHMvZ2VuZXJhdGVkLmMsIGRsbHMvdXNlci90ZXN0cy9nZW5lcmF0ZWQuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJVXBkYXRlZCB0aGUgZ2VuZXJhdGVkIHRlc3RzLgoKCSogdG9vbHMvd2luYXBpL2NfcGFyc2VyLnBtLCB0b29scy93aW5hcGkvY190eXBlLnBtLAoJICB0b29scy93aW5hcGkvdGVzdHMuZGF0LCB0b29scy93aW5hcGkvdGVzdHMucG0sCgkgIHRvb2xzL3dpbmFwaS93aW5hcGlfdGVzdDoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQWRkZWQgdGVzdHMgZm9yIG5vcm1hbCB0eXBlcyAobm90IGp1c3Qgc3RydWN0dXJlcykuCgoJKiBpbmNsdWRlL3dpbm5scy5oOiBSeWFuIEN1bW1pbmcgPHJ5YW5AY29tcGxldGVseS5raWNrcy1hc3Mub3JnPgoJQWRkZWQgbWlzc2luZyBDU1RSXyBkZWZpbml0aW9ucy4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJT1NTX1Jhd09wZW5EZXZpY2Ugc2hvdWxkIHJldHVybiBhbiBlcnJvciBpZiB0aGUgZm9ybWF0IGlzIG5vdAoJc3VwcG9ydGVkLgoKCSogZGxscy9yYXNhcGkzMi9yYXNhcGkuYywgZGxscy9yYXNhcGkzMi9yYXNhcGkzMi5zcGVjOgoJUnlhbiBDdW1taW5nIDxyeWFuQGNvbXBsZXRlbHkua2lja3MtYXNzLm9yZz4KCUFkZCBzdHViIGZvciBSYXNFbnVtQ29ubmVjdGlvbnNXLgoKCSogZGxscy9vbGUzMi9tYXJzaGFsLmMsIGRsbHMvb2xlMzIvb2xlMnN0dWJzLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1tQGxzdC5kZT4KCUhhbmRsZSBlcnJvcnMgaW4gc3RkIG1hcnNoYWxsZXIgYmV0dGVyLCBkbyBub3QgY3Jhc2guCglBZGRlZCBhbm90aGVyIGVycm9yIG1lc3NhZ2UgaWYgc29tZSBwcm9ncmFtIHRyaWVzIHRvIG1hcnNoYWwKCUlPbGVPYmplY3QuCglPbGVDcmVhdGUoKSBzaG91bGQgYmUgYWJsZSB0byB1c2UgTG9jYWwgU2VydmVycyB0b28gKGl0IGNhbid0IGFzIG9mCglub3csIGp1c3QgZm9yIGRlYnVnZ2luZykuCgoJKiBkbGxzL3dpbmVwcy9kcml2ZXIuYywgZGxscy93aW5lcHMvaW5pdC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1tQGxzdC5kZT4KCVNwZWNpZnkgZXhpc3RpbmcgZXh0cmEgc2l6ZSBvZiBXSU5FUFMgRGV2bW9kZSBzdHJ1Y3R1cmUuCglNYWtlIEV4dERldmljZU1vZGUxNiBpbiBXSU5FUFMgcmV0dXJuIHRoZSBjb3JyZWN0IHNpemUuCgoJKiBwcm9ncmFtcy93Y21kL3djbWRtYWluLmM6IEphY28gR3JlZWZmIDxqYWNvQHB1eGVkby5vcmc+CglTa2lwIHRoZSBhbGxvY2F0aW9uIG9mIGEgbmV3IGNvbnNvbGUgb24gIndjbWQgL2MgPGNvbW1hbmQ+IiBleGVjdXRpb24sCgl1c2luZyB0aGUgY3VycmVudCBhbGxvY2F0ZWQgU1RESU4gYW5kIFNURE9VVCBoYW5kbGVzIGZvciBjb21tYW5kCglpbnB1dC9vdXRwdXQuCgoJKiBkbGxzL3dpbmVkb3MvaW50MzEuYywgZGxscy93aW5lZG9zL2ludDY3LmMsIGRsbHMvd2luZWRvcy94bXMuYzoKCUp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCUlnbm9yZSBWQ1BJIGluc3RhbGxhdGlvbiBjaGVja3MuIEhhbmRsZSBYTVMgcXVlcnkgYW55IGV4dGVuZGVkIG1lbW9yeQoJZnVuY3Rpb24uIEFkZCBzdHVicyBmb3IgZ2V0L3NldCBleGNlcHRpb24gaGFuZGxlciB2ZWN0b3IuCgoJKiBkbGxzL3dpbmVkb3MvaW50ZXJydXB0cy5jLCBtc2Rvcy9kb3NtZW0uYzoKCUp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCVdoZW4gcmV0dXJuaW5nIGZyb20gMzItYml0IGRlZmF1bHQgaW50ZXJydXB0IGhhbmRsZXJzLCBlZmxhZ3MgYXJlIG5vdwoJcmV0dXJuZWQgY29ycmVjdGx5LgoKCSogZGxscy9kZHJhdy9kZHJhdy91c2VyLmM6IExpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglBZGRpdGlvbmFsIGV4cG9ydGVkIGNhcGFiaWxpdGllcyB0byBwbGVhc2Ugc29tZSBwaWNreSBnYW1lcy4KCgkqIGRsbHMvZGRyYXcvZHN1cmZhY2UvbWFpbi5jOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSBvbmx5IGNvbXBhcmUgdGhlIGZpcnN0IFdPUkQgaW4gdGhlIEREU0NBUFMyIHN0cnVjdHVyZSBpZiBubyBEWDcKCS0gYWRkIHNvbWUgVFJBQ0VzCgoJKiBkbGxzL2RkcmF3L2hlbHBlci5jOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJQXVnbWVudCB0aGUgRERTQ0FQUzIgZHVtcGluZyByb3V0aW5lIHdpdGggbmV3IGNhcHMuCgoyMDAyLTEwLTMxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogQU5OT1VOQ0UsIENoYW5nZUxvZywgVkVSU0lPTiwgY29uZmlndXJlOiBSZWxlYXNlIDIwMDIxMDMxLgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoyMDAyLTEwLTMxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9tc3ZjcnQvY3BwZXhjZXB0LmMsIGRsbHMvbXN2Y3J0L2V4Y2VwdC5jOgoJQWRkZWQgY2xvYmJlciBsaXN0cyB0byB0aGUgaW5saW5lIGFzc2VtYmx5IGZ1bmN0aW9ucy4KCgkqIGRsbHMvY29tbWRsZy9jb2xvcmRsZy5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jLAoJICBkbGxzL2NvbW1kbGcvZm9udGRsZy5jLCBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYzoKCU1hdHRoZXcgRGF2aXNvbiA8bS5kYXZpc29uQHZpcmdpbi5uZXQ+CglGaXhlZCBzb21lIGhhbmRsZSBjb252ZXJzaW9ucyBmb3IgLURTVFJJQ1QuCgoJKiBkbGxzL3JwY3J0NC9ycGNfc2VydmVyLmMsIGRsbHMvcnBjcnQ0L3JwY3J0NC5zcGVjLCBpbmNsdWRlL3JwY2RjZS5oLAoJICBpbmNsdWRlL3JwY2RjZXAuaDoKCUdyZWcgVHVybmVyIDxnbXR1cm5lcjAwN0BhbWVyaXRlY2gubmV0PgoJRml4IHNvbWUgcHJvYmxlbXMgZm91bmQgYnkgd2luYXBpX2NoZWNrLgoKCSogZGxscy9ycGNydDQvbmRyX21hcnNoYWxsLmM6IEdyZWcgVHVybmVyIDxnbXR1cm5lcjAwN0BhbWVyaXRlY2gubmV0PgoJRml4IHN0dXBpZCBjbG9uZSBvZiBicm9rZW4gbWFjcm8sIGZvdW5kIGJ5IE1hcmN1cy4KCgkqIGluY2x1ZGUvd2luZS9ycGNmYy5oOiBPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCVNvbWUgUlBDIGZvcm1hdCBjaGFyYWN0ZXJzIGZyb20gTVMgZG9jdW1lbnRhdGlvbi4KCgkqIGRsbHMvc2hlbGwzMi9jb250cm9sLmM6IFN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJUmVtb3ZlIHF1b3RlcyBmcm9tIGZpbGVuYW1lIGJlZm9yZSBjYWxsaW5nIExvYWRMaWJyYXJ5IGluIERvTGF1bmNoLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jOiBBbGJlcnRvIE1hc3NhcmkgPGFsYnlAZXhsbi5jb20+CgktIEZpeGVkIHR5cG8gaW4gU0hHZXRGaWxlSW5mb0EuCgktIFByb3Blcmx5IGNvbnZlcnQgcmV0dXJuIHZhbHVlcyBiYWNrIHRvIFVuaWNvZGUgaW4gU0hHZXRGaWxlSW5mb1cuCgoJKiBkbGxzL3JwY3J0NC9ycGNfYmluZGluZy5jLCBkbGxzL3JwY3J0NC9ycGNfc2VydmVyLmMsCgkgIGluY2x1ZGUvcnBjZGNlcC5oOgoJR3JlZyBUdXJuZXIgPGdtdHVybmVyMDA3QGFtZXJpdGVjaC5uZXQ+CglSZW1vdmUgI2lmZGVmIFdJTk5UIGNvbmRpdGlvbmFsczsganVzdCB1c2UgdGhlIE5UIGRlZmluaXRpb25zLgoKCSogZGxscy9ycGNydDQvbmRyX21hcnNoYWxsLmM6IEdyZWcgVHVybmVyIDxnbXR1cm5lcjAwN0BhbWVyaXRlY2gubmV0PgoJLSBVc2UgYXBwcm9wcmlhdGUgcGVyLXBsYXRmb3JtIE5EUl9MT0NBTCBEYXRhIFJlcHJlc2VudGF0aW9uLgoJLSBNaW5vciBob3VzZWtlZXBpbmcgY2hhbmdlcy4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYzogTWFyY3VzIE1laXNzbmVyIDxtZWlzc25lckBzdXNlLmRlPgoJRXNjYXBlIFwgaW4gcGF0aCBhbmQgYXJndW1lbnRzLgoJVXNlIFVOSVggc3R5bGUgd29ya19kaXIsIG5vdCB3aW5kb3dzIGRpci4KCgkqIHByb2dyYW1zL3Byb2dtYW4vU2kucmMsIHByb2dyYW1zL3Byb2dtYW4vcnNyYy5yYzoKCVJvayBNYW5kZWxqYyA8cm9rbWFuZGVsamNAaG90bWFpbC5jb20+CglVcGRhdGVkIFNsb3ZlbmlhbiByZXNvdXJjZXMgZm9yIChuZXcpIHZlcnNpb24gb2YgcHJvZ21hbi4KCgkqIGRsbHMvcnBjcnQ0L25kcl9tYXJzaGFsbC5jLCBkbGxzL3JwY3J0NC9ycGNfYmluZGluZy5jLAoJICBkbGxzL3JwY3J0NC9ycGNfc2VydmVyLmMsIGRsbHMvcnBjcnQ0L3JwY3J0NC5zcGVjLCBpbmNsdWRlL3JwY2RjZS5oOgoJR3JlZyBUdXJuZXIgPGdtdHVybmVyMDA3QGFtZXJpdGVjaC5uZXQ+CgktIEZpeCBvZmZzZXQgYnVnIGluIHRoZSBjb25mb3JtYW50IHN0cmluZyB1bm1hcnNoYWxsIHJvdXRpbmUuCgktIEZpeCBkaXNjcmVwYW5jeSBiZXR3ZWVuIGhlYWRlcnMgYW5kIGltcGxlbWVudGF0aW9uIG9mCgkgIElfUnBjQmluZGluZ1NldEFzeW5jIHdoZW4gY29tcGlsaW5nIHVuZGVyIFdJTk5ULgoJLSBFbGltaW5hdGUgcmFjZSBjb25kaXRpb25zIGluIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiAibGlzdGVuX2NvdW50IgoJICBhbmQgInN0ZF9saXN0ZW4iIGluIHJwY19zZXJ2ZXIuaC4KCS0gQ29kZS1zdHVicyBmb3IgUnBjU2VydmVyVW5yZWdpc3RlcklmLCBScGNTZXJ2ZXJVbnJlZ2lzdGVySWZFeC4KCS0gQXR0ZW1wdCB0byBpbXBsZW1lbnQgUnBjTWdtdFN0b3BTZXJ2ZXJMaXN0ZW5pbmcgKGRlZmluaXRlbHkgbm90CgkgIGhhcHB5IGp1c3QgeWV0KS4KCS0gUnBjU2VydmVyVW5yZWdpc3RlcklmRXggd2Fzbid0IHhwLXNlcGNpZmljIGFmdGVyIGFsbDsgdGhpcyBsZWFkcyBtZSB0bwoJICBzdXNwZWN0IHRoZXJlIGFyZSBtb3JlIHN1Y2ggbWlzdGFrZXMgaW4gdGhlIHNwZWMtZmlsZSBjb21tZW50cywgYnV0IEkKCSAgaGF2ZW4ndCBsb29rZWQgaW50byBpdCBvciBmaXhlZCB0aGVtIHlldCAoY29taW5nIHNvb24pLgoJLSBDbGVhbnVwcywgdHJhY2UtZW5oYW5jZW1lbnRzLCBldGMuCgoJKiBzZXJ2ZXIvaG9vay5jOgoJV29yayBhcm91bmQgdG8gbWFrZSBzeXN0ZW0tZ2xvYmFsIGhvb2tzIGF0IGxlYXN0IHJ1biBpbiB0aGUgdGhyZWFkCgl0aGF0IHNldCB0aGVtLgoKCSogY29udHJvbHMvbGlzdGJveC5jLCBkbGxzL3VzZXIvdXNlcjE2LmMsIGRsbHMvdXNlci91c2VyMzIuc3BlYywKCSAgZGxscy93aW5tbS9tbXN5c3RlbS5jLCBkbGxzL3gxMWRydi93aW5wb3MuYywgd2luZG93cy93aW4uYywKCSAgd2luZG93cy93aW5wb3MuYzoKCVNwbGl0IG91dCBzb21lIG1vcmUgMTYtYml0IGNvZGUuCgoJKiBkbGxzL21zdmNydC9leGNlcHQuYywgZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWM6CglNYXJjdXMgTWVpc3NuZXIgPG1laXNzbmVyQHN1c2UuZGU+Cglfc2VoX2xvbmdqbXBfdW53aW5kIGlzIGkzODYgb25seSBmb3Igbm93LgoKCSogaW5jbHVkZS9ycGMuaCwgaW5jbHVkZS9ycGNuZHIuaDoKCUdyZWcgVHVybmVyIDxnbXR1cm5lcjAwN0BhbWVyaXRlY2gubmV0PgoJLSBDYXN0IE5EUl8qICNkZWZpbmVzIHRvICh1bnNpZ25lZCBsb25nKSBpbnN0ZWFkIG9mIChVSU5UMzIpIGxpa2UgTVMKCSAgaGVhZGVycy4KCS0gQ3JlYXRlIF9fUlBDX01BQ19fIGFuZCBfX1JQQ19XSU42NF9fIGNvbmRpdGlvbmFsICNkZWZpbmVzLgoJLSBDb3JyZWN0IE5EUl9MT0NBTF9EQVRBX1JFUFJFU0VOVEFUSU9OIGZvciBNYWMncy4KCS0gTmV3IE5EUl9MT0NBTF9JU19CSUdfRU5ESUFOIGNvbmRpdGlvbmFsICNkZWZpbmUuCgktICNkZWZpbmUgVEFSR0VUX0lTX05UNTBfT1JfTEFURVIuCgoJKiBkbGxzL3JwY3J0NC9uZHJfbWFyc2hhbGwuYzogR3JlZyBUdXJuZXIgPGdtdHVybmVyMDA3QGFtZXJpdGVjaC5uZXQ+CglSZW5hbWUgdGhlICpfMzJfUkVBRCBtYWNyb3MgdG8gKl9VSU5UMzJfUkVBRCBmb3IgY2xhcml0eS4KCgkqIHByb2dyYW1zL3Byb2dtYW4vRW4ucmM6IFZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCUZpeCBFbmdsaXNoIHByb2dtYW4gcmVzb3VyY2VzIGJ5IHRyYW5zbGF0aW5nIEZyZW5jaCBiaXRzLgoKCSogcHJvZ3JhbXMvcHJvZ21hbi9Gci5yYzogVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJU21hbGwgY2xlYW51cCBmb3IgdGhlIEZyZW5jaCBwcm9nbWFuIHJlc291cmNlcy4KCgkqIGRsbHMvY29tY3RsMzIvY29tYm9leC5jOiBDYXJsb3MgTG96YW5vIDxjbG96YW5vQGFuZGFnby5jb20+CglsUGFyYW0gd2FzIG5vdCBwcm9wZXJseSBzZW50IGluIENPTUJPRVhfRHJhd0l0ZW0uCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglBcHBlbmQgY29sdW1ucyB3aXRoIGxhcmdlIGNvbHVtbiBpbmRpY2VzLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGluY2x1ZGUvY29uZmlnLmguaW4sIHNjaGVkdWxlci9jbGllbnQuYzoKCVN0ZXZlbiBFZHdhcmRzIDxTdGV2ZW5fRWQ0MTUzQHlhaG9vLmNvbT4KCU1pbmd3IHBvcnRpbmcgZml4LgoKCSogZGxscy93aW5lZG9zL2ludDEwLmMsIGRsbHMvd2luZWRvcy92Z2EuYywgZGxscy93aW5lZG9zL3ZnYS5oOgoJSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJUHJldmVudCBjcmFzaGVzIHdoZW4gRE9TIHByb2dyYW0gdHJpZXMgdG8gYWNjZXNzIGNvbnNvbGUgYW5kIG5vCglXaW5kb3dzIGNvbnNvbGUgaXMgYXZhaWxhYmxlLgoKCSogZGxscy94MTFkcnYvTWFrZWZpbGUuaW4sIGRsbHMveDExZHJ2L2NsaXBib2FyZC5jLAoJICBkbGxzL3gxMWRydi9ldmVudC5jLCBkbGxzL3gxMWRydi9zY3JvbGwuYywgZGxscy94MTFkcnYvd2luZG93LmMsCgkgIGRsbHMveDExZHJ2L3dpbnBvcy5jLCBkbGxzL3gxMWRydi94MTFkZHJhdy5jLCBkbGxzL3gxMWRydi94cmVuZGVyLmMsCgkgIGdyYXBoaWNzL3gxMWRydi9iaXRtYXAuYywgZ3JhcGhpY3MveDExZHJ2L2JydXNoLmMsCgkgIGdyYXBoaWNzL3gxMWRydi9kaWIuYywgZ3JhcGhpY3MveDExZHJ2L2luaXQuYywKCSAgZ3JhcGhpY3MveDExZHJ2L3BhbGV0dGUuYywgZ3JhcGhpY3MveDExZHJ2L3RleHQuYywKCSAgZ3JhcGhpY3MveDExZHJ2L3hmb250LmM6CglDb252ZXJ0ZWQgeDExZHJ2IHRvIC1EU1RSSUNULgoKCSogZGxscy9tc3ZpZGVvL21jaXduZC5jLCBkbGxzL3dpbm1tL21jaWFuaW0vbWNpYW5pbS5jLAoJICBkbGxzL3dpbm1tL21jaWF2aS9wcml2YXRlX21jaWF2aS5oLCBkbGxzL3dpbm1tL21tc3lzdGVtLmMsCgkgIGRsbHMvd2lubW0vd2luZW1tLmgsIGluY2x1ZGUvbW1kZGsuaCwgaW5jbHVkZS93aW5lL21tc3lzdGVtMTYuaCwKCSAgd2luZG93cy9kcml2ZXIuYzoKCU1vdmVkIDE2LWJpdCBkZWZpbml0aW9ucyBvdXQgb2YgbW1kZGsuaCBpbnRvIG1tc3lzdGVtMTYuaC4KCgkqIGRsbHMveDExZHJ2L2NsaXBib2FyZC5jLCBkbGxzL3gxMWRydi93aW5kb3cuYywgZGxscy94MTFkcnYvd2lucG9zLmMsCgkgIGRsbHMveDExZHJ2L3gxMWRkcmF3LmMsIGRsbHMveDExZHJ2L3hyZW5kZXIuYywKCSAgZ3JhcGhpY3MveDExZHJ2L2JydXNoLmMsIGdyYXBoaWNzL3gxMWRydi90ZXh0LmMsCgkgIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jOgoJRml4ZWQgYSBudW1iZXIgb2YgLURTVFJJQ1Qgd2FybmluZ3MuCgoJKiBkbGxzL21zdmNydC9jcHBleGNlcHQuYywgZGxscy9tc3ZjcnQvbXN2Y3J0Lmg6CglBZGRlZCBzdXBwb3J0IGZvciBuZXN0ZWQgZXhjZXB0aW9ucyBoYXBwZW5pbmcgaW5zaWRlIGEgY2F0Y2ggYmxvY2suCgoJKiB3aW5kb3dzL21zZ2JveC5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJTVNHQk9YX0RsZ1Byb2M6IGJyZWFrIG91dCBvZiBXTV9DT01NQU5ELgoKCSogY29udHJvbHMvbWVudS5jLCBkbGxzL2F2aWZpbDMyL2FwaS5jLCBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jLAoJICBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYywgZGxscy9jb21tZGxnL2NvbG9yZGxnLmMsCgkgIGRsbHMvY29tbWRsZy9maWxlZGxnLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYywKCSAgZGxscy9jb21tZGxnL2ZpbmRkbGcuYywgZGxscy9jb21tZGxnL2ZpbmRkbGczMi5jLAoJICBkbGxzL2NvbW1kbGcvZm9udGRsZy5jLCBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYywKCSAgZGxscy9tc2FjbS9mb3JtYXQuYywgZGxscy9zZXJpYWx1aS9jb25mZGxnLmMsCgkgIGRsbHMvc2V0dXBhcGkvdmlydGNvcHkuYywgZGxscy9zaGVsbDMyL2Jyc2ZvbGRlci5jLAoJICBkbGxzL3NoZWxsMzIvZGlhbG9ncy5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwgZGxscy91c2VyL21lc3NhZ2UuYywKCSAgZGxscy93aW5lcHMvZHJpdmVyLmMsIGluY2x1ZGUvd2ludXNlci5oLCB3aW5kb3dzL2RpYWxvZy5jLAoJICB3aW5kb3dzL2lucHV0LmMsIHdpbmRvd3MvbWRpLmMsIHdpbmRvd3MvbXNnYm94LmMsIHdpbmRvd3MvdGltZXIuYywKCSAgd2luZG93cy93aW5oZWxwLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAYmFpa2FsLnJ1PgoJRml4IHNvbWUgdHlwZXMgYW5kIGZ1bmN0aW9uIHByb3RvdHlwZXMgYWNjb3JkaW5nIHRvIFBsYXRmb3JtIFNESwoJZGVmaW5pdGlvbnMuCgoJKiBkbGxzL3dpbm1tL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL2RyaXZlci5jLCBkbGxzL3dpbm1tL2pveXN0aWNrLmMsCgkgIGRsbHMvd2lubW0vbG9sdmxkcnYuYywgZGxscy93aW5tbS9tY2kuYywgZGxscy93aW5tbS9tZXNzYWdlMTYuYywKCSAgZGxscy93aW5tbS9tbWlvLmMsIGRsbHMvd2lubW0vbW1zeXN0ZW0uYywgZGxscy93aW5tbS9wbGF5c291bmQuYywKCSAgZGxscy93aW5tbS93aW5lbW0uaCwgZGxscy93aW5tbS93aW5tbS5jLCBpbmNsdWRlL21tZGRrLmg6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCXdpbm1tL21tc3lzdGVtIG5vdyBjb21waWxlcyB3aXRoIC1EU1RSSUNULgoKCSogaW5jbHVkZS92ZncuaDogRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglTcGxpdCBiZXR3ZWVuIDE2IC8gMzIgYml0IGNvZGUuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglGaXggc29tZSB0cmVldmlldyBub3RpZmljYXRpb24gY29kZXMgYmV0d2VlbiBBTlNJL1VuaWNvZGUgbW9kZS4KCgkqIGRsbHMvd2lubW0vd2F2ZW1hcC93YXZlbWFwLmM6IEVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJUmV0dXJuIGNvcnJlY3QgdmFsdWVzIGZvciB3YXZlKElufE91dClHZXRQb3NpdGlvbiBldmVuIGlmIHBsYXlpbmcgbm9uCglQQ00gZmlsZXMuCgoJKiBkbGxzL21zdmlkZW8vTWFrZWZpbGUuaW4sIGRsbHMvbXN2aWRlby9kcmF3ZGliLmMsCgkgIGRsbHMvbXN2aWRlby9tc3ZpZGVvLnNwZWMsIGRsbHMvbXN2aWRlby9tc3ZpZGVvMTYuYywKCSAgZGxscy9tc3ZpZGVvL21zdmlkZW9fbWFpbi5jLCBkbGxzL21zdmlkZW8vbXN2aWRlb19wcml2YXRlLmgsCgkgIGRsbHMvbXN2aWRlby92ZncxNi5oOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglTcGxpdCBiZXR3ZWVuIDE2IC8gMzIgYml0IGNvZGUuCgoyMDAyLTEwLTMwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy93aW5lZG9zLy5jdnNpZ25vcmU6IEFkZGVkIHdpbmVkb3MxNi5zcGVjLmMuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9tc3ZjcnQvTWFrZWZpbGUuaW4sCgkgIGRsbHMvbXN2Y3J0L3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMvbXN2Y3J0L3Rlc3RzL01ha2VmaWxlLmluLAoJICBkbGxzL21zdmNydC90ZXN0cy9zY2FuZi5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJRmlyc3QgdmVyc2lvbiBvZiBtc3ZjcnQgc2NhbmYgdGVzdC4KCgkqIGNvbnRyb2xzL2NvbWJvLmMsIGNvbnRyb2xzL2Rlc2t0b3AuYywgY29udHJvbHMvZWRpdC5jLAoJICBjb250cm9scy9zdGF0aWMuYywgY29udHJvbHMvdWl0b29scy5jLCBkbGxzL3VzZXIvdXNlcjE2LmMsCgkgIGluY2x1ZGUvd2luLmgsIHdpbmRvd3MvZGVmd25kLmMsIHdpbmRvd3MvbWVzc2FnZS5jLAoJICB3aW5kb3dzL25vbmNsaWVudC5jLCB3aW5kb3dzL3BhaW50aW5nLmMsIHdpbmRvd3Mvc2Nyb2xsLmMsCgkgIHdpbmRvd3Mvc3lzcGFyYW1zLmMsIHdpbmRvd3Mvd2luLmM6CglNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmRlPgoJU29tZSBtb3JlIGZpeGVzIGZvciBjb21waWxpbmcgdGhlIHVzZXIgZGxsIHdpdGggLURTVFJJQ1QuCgoJKiBkbGxzL3dpbmVkb3MvTWFrZWZpbGUuaW4sIGRsbHMvd2luZWRvcy93aW5lZG9zMTYuc3BlYzoKCUp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCUFkZCB3aW5lZG9zMTYuZGxsIHdoaWNoIGNvbnRhaW5zIDE2LWJpdCBwcm90ZWN0ZWQgbW9kZSBpbnRlcnJ1cHQgZW50cnkKCXBvaW50cy4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oOgoJQ2FybG9zIExvemFubyA8Y2xvemFub0BhbmRhZ28uY29tPgoJRml4ZWQgU0hHRklfU1lTSUNPTklOREVYIGZsYWcgaGFuZGxpbmcuCgoJKiBNYWtlZmlsZS5pbiwgZGxscy9NYWtldGVzdC5ydWxlcy5pbiwgaW5jbHVkZS93aW5lL3Rlc3QuaCwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmV0ZXN0L21ha2VfY3Rlc3RzLAoJICBwcm9ncmFtcy93aW5ldGVzdC93dG1haW4uYzoKCU1vdmVkIHRoZSB0ZXN0IHJvdXRpbmVzIGZyb20gd3RtYWluLmMgaW50byB3aW5lL3Rlc3QuaCBzbyB0aGF0IHRoZXkKCWNhbiBiZSBjb21waWxlZCBzZXBhcmF0ZWx5IHdpdGggZGlmZmVyZW50IGZsYWdzIGZvciBlYWNoIGRsbC4KCgkqIGRsbHMvcnBjcnQ0L25kcl9tYXJzaGFsbC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1laXNzbmVyQHN1c2UuZGU+CglGaXhlZCBMSVRUTEVfRU5ESUFOXzMyX1JFQUQgbWFjcm8gdG8gYXQgbGVhc3QgY29tcGlsZS4KCgkqIGRsbHMvd2luc29jay9NYWtlZmlsZS5pbiwgZGxscy93aW5zb2NrL2FzeW5jLmMsCgkgIGRsbHMvd2luc29jay9zb2NrZXQuYywgaW5jbHVkZS93aW5zb2NrLmg6CglNYXJ0aW4gV2lsY2sgPE1hcnRpbi5XaWxja0BGdWppdHN1LVNpZW1lbnMuY29tPgoJLSBEZWZpbmUgU09DS0VUIGFzIFVJTlRfUFRSIGZvciBXaW42NCAodGhhbmtzIHRvIFAuIFN0cmlkdmFsbCkuCgktIE1ha2Ugd2luc29jayBjb21waWxlIHdpdGhvdXQgV0lORV9OT19TVFJJQ1QuCgoJKiBkbGxzL250ZGxsL3NpZ25hbF9wb3dlcnBjLmM6IE1hcmN1cyBNZWlzc25lciA8bWVpc3NuZXJAc3VzZS5kZT4KCVBvd2VycGMgaW5zdHJ1Y3Rpb24gcG9pbnRlciBpcyBJYXIsIG5vdCBFaXAuCgoJKiBkbGxzL3dpbm1tL3dhdmVtYXAvTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vd2F2ZW1hcC93YXZlbWFwLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCXdhdmVtYXAgbm93IGNvbXBpbGVzIHdpdGggLURTVFJJQ1QuCgoyMDAyLTEwLTI5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogdG9vbHMvd2luZWluc3RhbGw6CglSZW1vdmVkIG5vIGxvbmdlciBuZWVkZWQgc3VwcG9ydCBmb3IgcGF0Y2hpbmcgdGhlIGRlYnVnZ2VyIHBhdGggaW4gdGhlCglyZWdpc3RyeS4KCgkqIGRsbHMvTWFrZWRsbC5ydWxlcy5pbjoKCU9ubHkgcnVuIHRoZSAzMi1iaXQgY2hlY2tsaW5rIGZvciBkbGxzIHRoYXQgY29udGFpbiAxNi1iaXQgZmlsZXMuCgoJKiBkb2N1bWVudGF0aW9uL2J1Z3Muc2dtbCwgZG9jdW1lbnRhdGlvbi9jb25maWd1cmluZy5zZ21sLAoJICBkb2N1bWVudGF0aW9uL2luc3RhbGxpbmcuc2dtbCwgZG9jdW1lbnRhdGlvbi93aW5lLm1hbi5pbjoKCUFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCS0gYWRkZWQgdHJvdWJsZXNob290aW5nIHNlY3Rpb24gdG8gV2luZSBVc2VycyBHdWlkZSAodGFrZW4gZnJvbSBXaW5lCgkgIFRyb3VibGVzaG9vdGluZyBHdWlkZSkKCS0gZG9jdW1lbnRlZCBXaW5kb3dzL0RPUyB2ZXJzaW9uIHZhbHVlcyAoZ3JyciAhKQoJLSBtaXNjLiBvdGhlciBzdHVmZgoKCSogZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZGxscy93aW5lZG9zL2ludDIwLmMsCgkgIGRsbHMvd2luZWRvcy9pbnQyMS5jLCBkbGxzL3dpbmVkb3MvaW50MzEuYywKCSAgZGxscy93aW5lZG9zL2ludGVycnVwdHMuYywgaW5jbHVkZS9taXNjZW11Lmg6CglKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglNb2RpZnkgd2luZWRvcyBpbnRlcnJ1cHQgaGFuZGxlcnMgc28gdGhhdCB0aGV5IHdvcmsgd2l0aCBQTQoJaW50ZXJydXB0cy4KCUFkZCBmb3J3YXJkaW5nIGZ1bmN0aW9ucyBmb3IgaGFuZGxlcnMgaW4gb3RoZXIgRExMcy4KCU1ha2UgRE9TVk1fR2V0QnVpbHRpbkhhbmRsZXIgdXNlIHN0YXRpYyB0YWJsZSBpbnN0ZWFkIG9mCglHZXRQcm9jQWRkcmVzcy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJRml4IGZvciBsaXN0dmlldyB3aGVlbG1vdXNlIG1lc3NhZ2UgaGFuZGxpbmcuCgoJKiBpbmNsdWRlL3dpbmUvdGVzdC5oOiBQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUFkZGVkIHtvayx0cmFjZX1fIG1hY3JvcyB0byB0YWtlIGV4cGxpY2l0IGZpbGUgYW5kIGxpbmUgbnVtYmVyLgoKCSogZGxscy9ycGNydDQvbmRyX21hcnNoYWxsLmM6IEdyZWcgVHVybmVyIDxnbXR1cm5lcjAwN0BhbWVyaXRlY2gubmV0PgoJLSBtb3JlIGNvbW1lbnRzIGFuZCBjb21tZW50LWNsZWFudXAKCS0gYXR0ZW1wdCB0byBpbXBsZW1lbnQgTmRyQ29uZm9ybWFudFN0cmluZ01lbW9yeVNpemUKCS0gZml4IE5kckNvbmZvcm1hbnRTdHJpbmdVbk1hcnNoYWxsCgktIHcwMHQhCgoJKiBkbGxzL3dpbm1tL2pveXN0aWNrLmMsIGRsbHMvd2lubW0vbW1zeXN0ZW0uYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJTW92ZWQgMTYgYml0IGpveXN0aWNrIGZ1bmN0aW9uIHRvIG1tc3lzdGVtLmMuCgoJKiBkbGxzL3dpbm1tL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL2pveXN0aWNrLmMsCgkgIGRsbHMvd2lubW0vbW1zeXN0ZW0uYywgZGxscy93aW5tbS93aW5lbW0uaCwgZGxscy93aW5tbS93aW5tbS5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CgktIGludGVybmFsIHJlbmFtaW5nIChubyBsb25nZXIgdXNpbmcgTU1TWVNURU0gcHJlZml4ZXMgZm9yIFdJTk1NIG9ubHkKCSAgZnVuY3Rpb25zKQoJLSBtb3ZlZCB0aW1lIDE2LzMyIGNvbnZlcnNpb25zIGZ1bmN0aW9ucyB0byAxNiBiaXQgc291cmNlIGZpbGVzCgktIGZpbmFsIE1ha2VmaWxlIGNoYW5nZXMgKDE2IGJpdCBwYXJ0IGNhbiBub3cgcmVhbGx5IGJlIG5vdCBjb21waWxlZAoJICB3aGVuIC1kaXNhYmxlLXdpbjE2IGlzIHJlcXVlc3RlZCkKCgkqIGRsbHMvd2lubW0vbW1zeXN0ZW0uYywgZGxscy93aW5tbS90aW1lLmMsIGRsbHMvd2lubW0vd2luZW1tLmg6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCS0gbGV0IGFsbCB0aW1lIHJlbGF0ZWQgZnVuY3Rpb25zIG1ha2UgdXNlIG9mIGxvdyBsZXZlbCBkcml2ZXJzIDE2IGJpdAoJICBmdW5jdGlvbnMKCS0gc29tZSByZW5hbWluZyAocHJlZml4aW5nIGludGVybmFsIHRpbWUgZnVuY3Rpb25zIHdpdGggVElNRSkKCgkqIGRsbHMvd2lubW0vbG9sdmxkcnYuYywgZGxscy93aW5tbS9tZXNzYWdlMTYuYywgZGxscy93aW5tbS93aW5lbW0uaDoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJQWxsIGxvdyBsZXZlbCBkcml2ZXIgZnVuY3Rpb25zIChpbnRlcm5hbHMgZm9yIHdhdmUsIG1pZGksIG1peGVyIGFuZAoJYXV4KSBhcmUgbm93IGNsZWFubHkgc2VwYXJhdGVkLgoKCSogZGxscy93aW5tbS9tY2kuYywgZGxscy93aW5tbS9tZXNzYWdlMTYuYywgZGxscy93aW5tbS9tbXN5c3RlbS5jLAoJICBkbGxzL3dpbm1tL3dpbmVtbS5oLCBkbGxzL3dpbm1tL3dpbm1tLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUFsbCBNQ0kgZnVuY3Rpb25zIGFyZSBub3cgY2xlYW5seSBzZXBhcmF0ZWQuCgoJKiBkbGxzL3dpbm1tL2RyaXZlci5jLCBkbGxzL3dpbm1tL21tc3lzdGVtLmMsIGRsbHMvd2lubW0vcGxheXNvdW5kLmMsCgkgIGRsbHMvd2lubW0vd2luZW1tLmg6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUFsbCBkcml2ZXIgZnVuY3Rpb25zIGFyZSBub3cgcHJvcGVybHkgc2VwYXJhdGVkLgoKCSogZGxscy93aW5tbS9tbXN5c3RlbS5jLCBkbGxzL3dpbm1tL3dpbmVtbS5oLCBkbGxzL3dpbm1tL3dpbm1tLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCS0gcmV2aXNpdGVkIG1tc3lzdGVtL3dpbm1tIGxvYWRpbmcgbWVjaGFuaXNtCgktIGFkZGVkIFdJTk1NX0NoZWNrTU1TeXN0ZW0gZnVuY3Rpb24gKGhlbHBzIDMyIGJpdCBjb2RlIGRldGVjdAoJICBwcmVzZW5jZSBvZiBvdXIgb3duIG1tc3lzdGVtIERMTCkKCS0gc29tZSBpbnRlcm5hbCByZW5hbWluZyAoTVVMVElNRURJQSA9PiBXSU5NTSkKCgkqIGRsbHMvd2lubW0vZHJpdmVyLmMsIGRsbHMvd2lubW0vbWNpLmMsIGRsbHMvd2lubW0vbW1zeXN0ZW0uYywKCSAgZGxscy93aW5tbS93aW5lbW0uaDoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJTm93IG9ubHkgc3RvcmluZyB0aHJlYWQgaWQgZm9yIG1jaSB0YXNrcyAoMTYgYml0IGh0YXNrIGlzIG5vdyBnb3R0ZW4KCWZyb20gV09XIGZ1bmN0aW9ucykuCgoJKiB3aW5kb3dzL3dpbnBvcy5jOiBGaXhlZCBTaG93V2luZG93QXN5bmMuCgoJKiBkbGxzL3VzZXIvdXNlcl9tYWluLmMsIGluY2x1ZGUvcXVldWUuaCwgd2luZG93cy9xdWV1ZS5jOgoJUmVtb3ZlZCBhIGNvdXBsZSBvZiBubyBsb25nZXIgdXNlZCBxdWV1ZSBmdW5jdGlvbnMuCgoJKiBjb250cm9scy9jb21iby5jLCBkbGxzL2F2aWNhcDMyL2F2aWNhcDMyLnNwZWMsIGRsbHMvYXZpZmlsMzIvYXBpLmMsCgkgIGRsbHMvYXZpZmlsMzIvYXZpZmlsZS5zcGVjLCBkbGxzL3JwY3J0NC9ycGNydDQuc3BlYywKCSAgZGxscy9zZXR1cGFwaS9zZXR1cGFwaS5zcGVjLCBkbGxzL3NldHVwYXBpL3N0dWJzLmMsCgkgIGRsbHMvdXNlci91c2VyMzIuc3BlYywgZGxscy93aW5pbmV0L2ludGVybmV0LmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgaXNzdWVzIGZvdW5kIGJ5IHdpbmFwaV9jaGVjay4KCgkqIHRvb2xzL3dpbmFwaS93aW4xNi5hcGksIHRvb2xzL3dpbmFwaS93aW4zMi5hcGk6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUFQSSBmaWxlIHVwZGF0ZS4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbC5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsCgkgIGRsbHMvc2hlbGwzMi9zaGxleGVjLmM6CglHefZyZ3kgJ05vZycgSmVuZXkgPG5vZ0BzZGYubG9uZXN0YXIub3JnPgoJU2VwYXJhdGUgb3V0IDE2LWJpdCBTaGVsbEV4ZWN1dGUgZnVuY3Rpb24uCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2x0aXBzLmM6IFNhbmRlciB2YW4gTGVldXdlbiA8c2FuZGVydmxAeHM0YWxsLm5sPgoJRml4ZWQgZm9udCBvYmplY3QgbGVhayBpbiBXTV9TRVRGT05UIGhhbmRsZXIuCgoJKiBkbGxzL3gxMWRydi9rZXlib2FyZC5jOiBKZWZmIFNtaXRoIDx3aHlkb3VidEBob3RtYWlsLmNvbT4KCUNvcnJlY3Rpb25zIHRvIHRoZSBTcGFuaXNoIGtleWJvYXJkIGxheW91dC4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYywgZGxscy93aW5zb2NrL3dzMl8zMi5zcGVjOgoJSGFnZW4gSGVpZHVjayA8d2lib3gxQHdpZmEudW5pLWxlaXB6aWcuZGU+CglBZGRlZCBXU0FTZW5kRGlzY29ubmVjdC4KCgkqIGRsbHMva2VybmVsL01ha2VmaWxlLmluLCBkbGxzL29sZWF1dDMyL01ha2VmaWxlLmluOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglBZGRlZCBzb21lIGRlZmluZXMgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBXaW5kb3dzIGhlYWRlcnMuCgoJKiBkbGxzL2tlcm5lbC93b3d0aHVuay5jOiBFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCVNpbGVuY2UgdW5uZWVkZWQgRVJSIHdoaWxlIGNvbnZlcnRpbmcgdGFza3MuCgoJKiBkbGxzL3dpbm1tL21taW8uYywgZGxscy93aW5tbS9tbXN5c3RlbS5jLCBkbGxzL3dpbm1tL3dpbmVtbS5oOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CgktIGZpbmlzaCBtbWlvIHNlcGFyYXRpb24KCS0gbm8gbG9uZ2VyIHN0b3JpbmcgZnVuY3Rpb24gcG9pbnRlcnMgaW4gZ2xvYmFsIElEYXRhCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglTZW5kIHRoZSByaWdodCBub3RpZmljYXRpb24gY29kZSAoQS9XKSBkZXBlbmRpbmcgb24gdGhlIFVuaWNvZGUKCXNldHRpbmcuCgoJKiB0b29scy93aW5hcGkvbXN2Y21ha2VyLCB0b29scy93aW5hcGkvbXN2Y21ha2VyX29wdGlvbnMucG0sCgkgIHRvb2xzL3dpbmFwaS91dGlsLnBtOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglBZGQgbmV3IG9wdGlvbnMgLS13aW5lIGFuZCAtLXdpbmV0ZXN0IHNvIHdvcmtzcGFjZSBhbmQgcHJvamVjdCBmaWxlcwoJZm9yIFdpbmUgYW5kIFdpbmV0ZXN0IG1pZ2h0IGJlIGdlbmVyYXRlZCBpbmRlcGVuZGVudGx5LgoKCSogZGxscy9zaGVsbDMyL3Rlc3RzL3NobGZpbGVvcC5jLCBkbGxzL3VzZXIvdGVzdHMvc3lzcGFyYW1zLmMsCgkgIGRsbHMvdXNlci90ZXN0cy93aW4uYywgZGxscy93aW5pbmV0L3Rlc3RzL2h0dHAuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgdGVzdHMgdG8gY29tcGlsZSB3aXRoIE1TIEMgb24gV2luZG93cy4KCgkqIGRsbHMvZ2RpL3Rlc3RzL2dlbmVyYXRlZC5jLCBkbGxzL2tlcm5lbC90ZXN0cy9nZW5lcmF0ZWQuYywKCSAgZGxscy9udGRsbC90ZXN0cy9nZW5lcmF0ZWQuYywgZGxscy91c2VyL3Rlc3RzL2dlbmVyYXRlZC5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglVcGRhdGVkIHRoZSBnZW5lcmF0ZWQgdGVzdHMuCgoJKiB0b29scy93aW5hcGkvdGVzdHMuZGF0LCB0b29scy93aW5hcGkvd2luYXBpX3Rlc3Q6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUFkZGVkIHN1cHBvcnQgZm9yIGV4Y2x1ZGluZyBvcHRpb25hbCBmaWVsZHMuCgoJKiBpbmNsdWRlL3dpbmdkaS5oLCBpbmNsdWRlL3dpbnVzZXIuaDoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgbWlzbWF0Y2hlcyBiZXR3ZWVuIHRoZSBXaW5lIGhlYWRlcnMgYW5kIHRoZSBNaWNyb3NvZnQgaGVhZGVycy4KCgkqIGRsbHMvc2V0dXBhcGkvaW5mcGFyc2UuYzogSmFjbyBHcmVlZmYgPGphY29AcHV4ZWRvLm9yZz4KCU1hZGUgdGhlIHJlcG9ydGluZyBmb3IgdGhlIChjdXJyZW50KSB1bnN1cHBvcnRlZCBmbGFncyBpbiBHZW5JbnN0YWxsMTYKCW1vcmUgdXNlci1mcmllbmRseSwgaS5lLiByZXBvcnQgcGVyIG1pc3NpbmcgZmxhZyBpbnN0ZWFkIG9mIERXT1JEIHZhbHVlLgoKCSogZGxscy90dHlkcnYvd25kLmMsIGRsbHMvdXNlci9NYWtlZmlsZS5pbiwgZGxscy91c2VyL2ZvY3VzLmMsCgkgIGRsbHMvdXNlci9ob29rLmMsIGRsbHMvdXNlci9ob29rMTYuYywgZGxscy91c2VyL21lc3NhZ2UuYywKCSAgZGxscy91c2VyL21zZzE2LmMsIGRsbHMvdXNlci91c2VyLmV4ZS5zcGVjLCBkbGxzL3VzZXIvdXNlcjMyLnNwZWMsCgkgIGRsbHMvdXNlci91c2VyX21haW4uYywgZGxscy94MTFkcnYvd2luZG93LmMsIGRsbHMveDExZHJ2L3dpbnBvcy5jLAoJICBpbmNsdWRlL2hvb2suaCwgaW5jbHVkZS9xdWV1ZS5oLCBpbmNsdWRlL3VzZXIuaCwKCSAgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLCBpbmNsdWRlL3dpbmUvd2ludXNlcjE2LmgsCgkgIHNlcnZlci9NYWtlZmlsZS5pbiwgc2VydmVyL2hvb2suYywgc2VydmVyL2xpc3QuaCwKCSAgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3RocmVhZC5jLAoJICBzZXJ2ZXIvdGhyZWFkLmgsIHNlcnZlci90cmFjZS5jLCBzZXJ2ZXIvdXNlci5oLCB3aW5kb3dzL2hvb2suYywKCSAgd2luZG93cy9pbnB1dC5jLCB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy9ub25jbGllbnQuYywKCSAgd2luZG93cy9xdWV1ZS5jLCB3aW5kb3dzL3VzZXIuYywgd2luZG93cy93aW4uYzoKCVJld3JvdGUgaG9vayBzdXBwb3J0IHRvIHN0b3JlIHRoZSBob29rIGNoYWluIGluIHRoZSBzZXJ2ZXIuCglTcGxpdCBvZmYgMTYtYml0IGhvb2sgZnVuY3Rpb25zIGFuZCByZS1pbXBsZW1lbnRlZCB0aGVtIG9uIHRvcCBvZiB0aGUKCTMyLWJpdCBvbmVzOyBzeXN0ZW0td2lkZSAxNi1iaXQgaG9va3MgYXJlIG5vIGxvbmdlciBzdXBwb3J0ZWQgYXQgdGhpcwoJcG9pbnQuCgoyMDAyLTEwLTI4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jLCBkbGxzL250ZGxsL3NpZ25hbF9wb3dlcnBjLmMsCgkgIGRsbHMvbnRkbGwvc2lnbmFsX3NwYXJjLmMsIGluY2x1ZGUvd2luZS9leGNlcHRpb24uaCwKCSAgcHJvZ3JhbXMvd2luZWRiZy93aW5lZGJnLmMsIHdpbjMyL2V4Y2VwdC5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCVJhaXNlIGFuIGV4Y2VwdGlvbiBpZiBhbnkgV2luZSBvciBXaW5lbGliIGNvZGUgZG9lcyBhbiBhc3NlcnQuCgoJKiBwcm9ncmFtcy93Y21kL2RpcmVjdG9yeS5jOiBTdGV2ZW4gRWR3YXJkcyA8U3RldmVuX0VkNDE1M0B5YWhvby5jb20+CglQb3J0aW5nIGZpeC4KCgkqIGRsbHMvcnBjcnQ0L25kcl9tYXJzaGFsbC5jLCBkbGxzL3JwY3J0NC9uZHJfbWlkbC5jLAoJICBkbGxzL3JwY3J0NC9ycGNfbWVzc2FnZS5jOgoJR3JlZyBUdXJuZXIgPGdtdHVybmVyMDA3QGFtZXJpdGVjaC5uZXQ+CgktIFB1bGwgdGhlIGJ1ZmZlciBmcm9tIHRoZSBycGMgbWVzc2FnZSBpbnRvIHRoZSBtaWRsIHN0dWIgbWVzc2FnZQoJICBkdXJpbmcgUnBjU2VydmVySW5pdGlhbGl6ZU5ldy4KCS0gQXR0ZW1wdCB0byBpbXBsZW1lbnQgTmRyQ29uZm9ybWFudFN0cmluZ1VubWFyc2hhbGwuCgktIE1vcmUgYXNzZXJ0aW9ucy4KCS0gQ29tbWVudHMgYW5kIGNsZWFudXBzLgoKCSogZGxscy9ycGNydDQvcnBjcnQ0LnNwZWM6IEdyZWcgVHVybmVyIDxnbXR1cm5lcjAwN0BhbWVyaXRlY2gubmV0PgoJQWRkIGEgYnVuY2ggb2Ygc3R1YnMsIGFsbCBvZiB3aGljaCBJIHByZXN1bWUgdG8gYmUgV1hQIGFkZGl0aW9ucy4KCgkqIGRsbHMvd2luZWRvcy9kb3N2bS5jLCBkbGxzL3dpbmVkb3MvaW50MDkuYywgZGxscy93aW5lZG9zL2ludDE2LmMsCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL3VzZXIuYywgd2luZG93cy9tZXNzYWdlLmM6CglBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CgktIE1ha2UgaW50MDkgdXBkYXRlIHRoZSBCSU9TIGRhdGEgc2VnbWVudCdzIGtleWJvYXJkIHN0YXR1cyBmbGFncwoJICBieXRlcywgaW1wbGVtZW50IHBhdXNlIGtleSBoYW5kbGluZy4KCS0gTGV0IGludDE2LzAyIHJlYWQgdGhlIGtleWJvYXJkIHN0YXR1cyBmbGFncyBieXRlcyBpbnN0ZWFkIG9mIGNhbGxpbmcKCSAgR2V0QXN5bmNLZXlTdGF0ZSgpLgoJLSBNYWtlIHRoZSBrZXlib2FyZCBzdGF0ZSBidWZmZXIgdXNlZCBmb3IgR2V0KktleSooKSByZWZsZWN0CgkgIFZLX0wvUk1FTlUgcHJvcGVybHkuCgktIFNtYWxsIGZpeGVzLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJc2V0X21haW5faXRlbTogaWdub3JlIG1lYW5pbmdsZXNzIGJpdHMgaW4gc3RhdGVNYXNrIGZvciBMVlNfT1dORVJEQVRBCglpbnN0ZWFkIG9mIGZhaWxpbmcuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwuYywgZGxscy9zaGVsbDMyL3NoZWxscmVnLmM6CglHefZyZ3kgJ05vZycgSmVuZXkgPG5vZ0BzZGYubG9uZXN0YXIub3JnPgoJU2VwYXJhdGUgb3V0IDE2LWJpdCByZWdpc3RyeSBmdW5jdGlvbnMuCgoJKiBkbGxzL3JwY3J0NC9uZHJfbWFyc2hhbGwuYywgZGxscy9ycGNydDQvbmRyX21pZGwuYywKCSAgZGxscy9ycGNydDQvcnBjX21lc3NhZ2UuYywgZGxscy9ycGNydDQvcnBjX3NlcnZlci5jLAoJICBpbmNsdWRlL3JwY25kci5oOgoJR3JlZyBUdXJuZXIgPGdtdHVybmVyMDA3QGFtZXJpdGVjaC5uZXQ+CgktIENsZWFuIHVwIGFuZCBhZGQgc29tZSBjb21tZW50cy4KCS0gQWRkIE5EUiBEYXRhIHJlcHJlc2VudGF0aW9uIGNvbnN0YW50cy4KCS0gUHJvcGFnYXRlIERhdGFSZXByZXNlbnRhdGlvbiBpbnRvIGFuZCBvdXQgb2YgcGFja2V0IGhlYWRlcnMuCgktIEltcGxlbWVudCBOZHJTZXJ2ZXJJbml0aWFsaXplTmV3CgoJKiBkbGxzL3dpbm1tL2xvbHZsZHJ2LmMsIGRsbHMvd2lubW0vbWVzc2FnZTE2LmMsIGRsbHMvd2lubW0vd2luZW1tLmg6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCU1vdmUgbG93IGxldmVsIG11bHRpbWVkaWEgbWVzc2FnZSBtYXBwaW5nIG91dCBvZiAzMiBiaXQgY29kZS4KCgkqIGRsbHMvd2lubW0vTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vbWNpLmMsIGRsbHMvd2lubW0vbWVzc2FnZTE2LmMsCgkgIGRsbHMvd2lubW0vd2luZW1tLmg6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCU1vdmUgTUNJIG1lc3NhZ2UgbWFwcGluZyBvdXQgb2YgMzIgYml0IGNvZGUuCgoJKiBkbGxzL3dpbm1tL2RyaXZlci5jLCBkbGxzL3dpbm1tL21tc3lzdGVtLmMsIGRsbHMvd2lubW0vd2luZW1tLmg6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCU1vdmUgZHJpdmVyIG1lc3NhZ2UgbWFwcGluZyBvdXQgb2YgMzIgYml0IGNvZGUuCgoJKiBkbGxzL2QzZDgvZGV2aWNlLmM6IEphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglIYW5kbGUgdGV4dHVyZSBGVkYgZm9ybWF0cyB3aGVuIG5vIHRleHR1cmUgaXMgYm91bmQuCgoJKiBkbGxzL3JwY3J0NC9uZHJfbWFyc2hhbGwuYzogR3JlZyBUdXJuZXIgPGdtdHVybmVyMDA3QGFtZXJpdGVjaC5uZXQ+CgktIERpc3Rpbmd1aXNoIGJldHdlZW4gYWN0dWFsIHBhcmFub2lhIGFuZCBtZWFuaW5nZnVsIGJ1ZmZlciBzcGFjZS4KCS0gTm8gbmVlZCB0byAjdW5kZWYgQlVGRkVSX1BBUkFOT0lBIGhlcmUuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglXZSBzaG91bGQgYWx3YXlzIGhhdmUgYSBtYWluIGl0ZW0gaW4gcmVwb3J0IG1vZGUuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglQcm9wZXJseSBmaWxsIGxQYXJhbSBpbiBOTUxJU1RWSUVXLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRml4IGNyYXNoLWluZHVjaW5nIHR5cG8vdGhpbmtvLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJTWFyayBpbW11dGFibGUgb2JqZWN0cyBhcyBjb25zdC4gRml4IGluY29uc2lzdGVudCAqLXN0eWxlLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQWRkIExWSElUVEVTVElORk8gZGVidWcgaGVscGVyLiBNb3JlIHRyYWNpbmcuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglEZXNwaXRlIHdoYXQgdGhlIGRvY3Mgc2F5LCB3ZSBoYXZlIHRvIGludmFsaWRhdGUgdGhlIGxpc3Qgb24KCVdNX1NFVFJFRFJBVyhUUlVFKS4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUVsaW1pbmF0ZSBmbGlja2VyIHdoZW4gcmVzaXppbmcsIGRvY3MgdXBkYXRlcy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUNsZWFudXAsIGFuZCBzaW1wbGlmaWNhdGlvbiBvZiBVcGRhdGVTaXplLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJSGFuZGxlIGZvY3VzIGl0ZW0gcHJvcGVybHkgaW4gU2V0SXRlbUNvdW50LgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJUmVtb3ZlIG9ubHkgdGhlIG5lY2Vzc2FyeSBzZWxlY3Rpb25zIHdoZW4gc2V0dGluZyB0aGUgaXRlbSBjb3VudC4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVJld3JpdGUgb2YgdGhlIFNldEl0ZW1Db3VudDogYnVncyBnb3Qgc3F1YXNoZWQsCglMVlNJQ0Zfe05PU0NST0xMLE5PSU5WQUxJREFURUFMTH0gaW1wbGVtZW50ZWQuCgoJKiBkbGxzL3dpbmVkb3MvZG9zZXhlLmgsIGRsbHMvd2luZWRvcy9kb3N2bS5jLCBkbGxzL3dpbmVkb3MvaW50MzEuYywKCSAgZGxscy93aW5lZG9zL2ludGVycnVwdHMuYywgZGxscy93aW5lZG9zL21vZHVsZS5jOgoJSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJQWRkIHJvdXRpbmVzIGZvciBtYW5pcHVsYXRpbmcgcHJvdGVjdGVkIG1vZGUgaW50ZXJydXB0IGhhbmRsZXJzIHRvCgl3aW5lZG9zIGRsbC4gQWRkIHJvdXRpbmUgZm9yIGNoZWNraW5nIGlmIHByb2Nlc3MgaXMgV2luZG93cyBwcm9jZXNzLgoJRml4IERPU1ZNX0lzRG9zMzIgaW50ZXJmYWNlLiBNb3ZlIHJlYWwgbW9kZSBpbnRlcnJ1cHQgaGFuZGxlcgoJbWFuaXB1bGF0aW9uIHJvdXRpbmVzIHRvIGludGVycnVwdHMuYy4KCgkqIHdpbmRvd3MvdXNlci5jOiBBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CglNYWtlIEdldEZyZWVTeXN0ZW1SZXNvdXJjZXMxNiBwcmludCBpdHMgdmFsdWVzIG9uIFRSQUNFLgoKCSogY29udHJvbHMvYnV0dG9uLmMsIGNvbnRyb2xzL2xpc3Rib3guYywgZGxscy91c2VyL2V4dGljb24uYywKCSAgZGxscy91c2VyL21lc3NhZ2UuYywgZGxscy91c2VyL3duZDE2LmMsIHdpbmRvd3MvZGVmZGxnLmMsCgkgIHdpbmRvd3MvbWRpLmM6CglNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmRlPgoJU29tZSBmaXhlcyBmb3IgdGhlIGNvbXBpbGF0aW9uIG9mIHRoZSB1c2VyIGRsbCB3aXRoIC1EU1RSSUNULgoKCSogZGxscy9kM2Q4L2RldmljZS5jOiBKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJQWRkIGNvcHlyZWN0cyBzdXBwb3J0LgoKCSogZGxscy9ycGNydDQvbmRyX21hcnNoYWxsLmMsIGRsbHMvcnBjcnQ0L25kcl9taWRsLmMsCgkgIGRsbHMvcnBjcnQ0L3JwY19iaW5kaW5nLmMsIGRsbHMvcnBjcnQ0L3JwY19zZXJ2ZXIuYywKCSAgZGxscy9ycGNydDQvcnBjcnQ0LnNwZWMsIGluY2x1ZGUvcnBjbmRyLmg6CglHcmVnIFR1cm5lciA8Z210dXJuZXIwMDdAYW1lcml0ZWNoLm5ldD4KCS0gQ2xlYW4gdXAgYW5kIGVuaGFuY2Ugc29tZSB0cmFjZXMuCgktIFN0dWJzIGZvciBOZHJDb252ZXJ0LCBOZHJDb252ZXJ0MiwgYW5kIE5kclNlcnZlckluaXRpYWxpemVOZXcuCgoJKiBkbGxzL3NoZWxsMzIvZW51bWlkbGlzdC5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQWRkIHByb3BlciBzdXBwb3J0IGZvciB0aGUgU0hDT05URl9JTkNMVURFSElEREVOIGZsYWcuCgoJKiBkbGxzL2x6ZXhwYW5kL01ha2VmaWxlLmluLCBkbGxzL2x6ZXhwYW5kL2x6ZXhwYW5kMTYuYywKCSAgZGxscy9semV4cGFuZC9semV4cGFuZF9tYWluLmM6CglNYXR0aGV3IERhdmlzb24gPG0uZGF2aXNvbkB2aXJnaW4ubmV0PgoJTWFkZSBsemV4cGFuZCBjb21waWxlIHdpdGggU1RSSUNUIGRlZmluZWQuCgoJKiBkbGxzL3dpbm1tL21jaS5jOiBFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIG1jaVNlbmRTdHJpbmcgZGVidWcgcmVwb3J0aW5nIHdoZW4gYW4gZXJyb3Igb2NjdXJzIChzcG90dGVkIGJ5CglFcmxhbmQgTGV3aW4pLgoKCSogZGxscy91c2VyL01ha2VmaWxlLmluLCBkbGxzL3VzZXIvbXNnMTYuYywgZGxscy91c2VyL3duZDE2LmMsCgkgIHdpbmRvd3MvaG9vay5jLCB3aW5kb3dzL3NweS5jLCB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3dpbnBvcy5jLAoJICB3aW5kb3dzL3dpbnByb2MuYzoKCU1vdmVkIGEgZmV3IHJlbWFpbmluZyAxNi1iaXQgd2luZG93IGZ1bmN0aW9ucyB0byB3bmQxNi5jIGFuZCBtb3ZlZCBpdAoJdG8gdGhlIENfU1JDUzE2IHNvdXJjZXMuCgoJKiBkbGxzL2QzZDgvZDNkOF9wcml2YXRlLmgsIGRsbHMvZDNkOC9kZXZpY2UuYywgZGxscy9kM2Q4L2RpcmVjdHguYzoKCUphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CgktIEluaXRpYWxpemUgdGhlIHRleHR1cmUgc3RhdGUgaW5mb3JtYXRpb24uCgktIEFkZCBkdW1teSB0ZXh0dXJlcyBzbyB0ZXh0dXJlIG9wZXJhdGlvbnMgd2hpY2ggZG9udCByZWZlcmVuY2UgdGhlCgkgIHRleHR1cmUgY2FuIHdvcmsuCgktIFN1cHBvcnQgMmQgYW5kIDNkIHRleHR1cmVzIHByb3Blcmx5LgoJLSBSZWFwcGx5IHRoZSB0ZXh0dXJlIHN0YXRlIGluZm9ybWF0aW9uIGFzIHRleHR1cmVzIGdldCBzZXQsIGFzIG9wZW5nbAoJICBzdG9yZXMgdGhlIHN0YXRlIGFsb25nIHdpdGggdGhlIGJvdW5kIHRleHR1cmUgd2hlcmVhcyBkaXJlY3R4IHVzZXMgdGhlCgkgIGN1cnJlbnQgc3RhdGUgaW5mb3JtYXRpb24gZHVyaW5nIHRoZSBkcmF3IHN0YWdlLgoJLSAzcmQgYXR0ZW1wdCB0byBzb3J0IG91dCBsaWdodGluZywgZm9yIHByb2dyYW1zIHdoaWNoIGRvbnQgc2V0IG5vcm1hbHMuCgktIFRlbXBvcmFyaWx5IHNpbGVuY2Ugc29tZSB1bm5lY2Vzc2FyeSBmaXhtZXMuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzogQ2FybG9zIDxjbG96YW5vQGFuZGFnby5jb20+CglsUGFyYW0gd2FzIG5vdCBwcm9wZXJseSBzZW50IGluIFRUTV9BRERUT09MVy4KCgkqIGRsbHMvY29tY3RsMzIvY29tYm9leC5jOiBDYXJsb3MgPGNsb3phbm9AYW5kYWdvLmNvbT4KCWxQYXJhbSB3YXMgbm90IHByb3Blcmx5IHNlbnQgaW4gQ0JFTl9HRVRESVNQSU5GT1cuCgoJKiBmaWxlcy9kb3NfZnMuYzogR3n2cmd5ICdOb2cnIEplbmV5IDxub2dAc2RmLmxvbmVzdGFyLm9yZz4KCUNvcHkgdGhlIG5lY2Vzc2FyeSBkYXRhIGZyb20gdGhlIHVuaWNvZGUgc3RydWN0IHRvIHRoZSBhc2NpaSBvbmUgaW4KCURPU0ZTX0ZpbmROZXh0LgoKCSogZGxscy93aW5pbmV0L2Z0cC5jLCBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYywgZGxscy93aW5pbmV0L3dpbmluZXQuc3BlYzoKCUphY28gR3JlZWZmIDxqYWNvQHB1eGVkby5vcmc+CgktIEltcGxlbWVudGF0aW9uIG9mIFtJbnRlcm5ldHxGdHBdKlcgZnVuY3Rpb25zIHRvIGV4dGVuZCAoYWxtb3N0KQoJICBub24tZXhpc3RhbnQgd2lkZS1jaGFyYWN0ZXIgc3VwcG9ydC4KCS0gTW92ZWQgc29tZSBmdW5jdGlvbnMgZnJvbSAic3R1YiBpbiB3aW5pbmV0LnNwZWMiIHRvICJGSVhNRSgiU1RVQiIpIgoJICB0byBhbGxvdyBmb3IgdGVzdGluZyBvZiBjaGFuZ2VzLgoKCSogZGxscy9ycGNydDQvbmRyX21hcnNoYWxsLmM6IEdyZWcgVHVybmVyIDxnbXR1cm5lcjAwN0BhbWVyaXRlY2gubmV0PgoJRml4IGVuZGlhbm5lc3MgZGVwZW5kZW5jeSBpbiB0aGUgKHRoZXJlIGlzIG9ubHkgb25lIDopICkgbWFyc2hhbGwKCWZ1bmN0aW9uLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jOiBDYXJsb3MgPGNsb3phbm9AYW5kYWdvLmNvbT4KCVRoZSBmdW5jdGlvbiBTSEdldEZpbGVJbmZvQSB3YXNuJ3Qgc3VwcG9ydGluZyB0aGUgZmxhZwoJU0hHRklfVVNFRklMRUFUVFJJQlVURVMuCgoyMDAyLTEwLTI1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy94MTFkcnYvZGdhMi5jOiBHcmVnIFR1cm5lciA8Z210dXJuZXIwMDdAYW1lcml0ZWNoLm5ldD4KCUF2b2lkIFgxMSBlcnJvciBkdXJpbmcgREdBIGRldGVjdGlvbi4KCgkqIGRsbHMva2VybmVsL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC9jb21tLmMsIGRsbHMva2VybmVsL2NvbnNvbGUuYywKCSAgZGxscy9rZXJuZWwvZGVidWdnZXIuYywgZGxscy9rZXJuZWwvc3luYy5jLCBkbGxzL2tlcm5lbC90aHVuay5jLAoJICBkbGxzL2tlcm5lbC93b3d0aHVuay5jOgoJTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5kZT4KCUNvbXBpbGUgdGhlIGtlcm5lbCBkbGwgd2l0aCAtRFNUUklDVC4KCgkqIGRsbHMvcnBjcnQ0L25kcl9tYXJzaGFsbC5jLCBkbGxzL3JwY3J0NC9uZHJfbWlkbC5jLAoJICBkbGxzL3JwY3J0NC9ycGNfbWVzc2FnZS5jOgoJR3JlZyBUdXJuZXIgPGdtdHVybmVyMDA3QGFtZXJpdGVjaC5uZXQ+CgktIFVzZSBtZW1zZXQgaW5zdGVhZCBvZiBaZXJvTWVtb3J5LCBqdXN0IHRvIGJlIGNvbnNpc3RlbnQgd2l0aCBPdmUncwoJICBjb2RlLgoJLSBBZGQgc29tZSBhc3NlcnRpb25zIHdoZXJlIGFzc3VtcHRpb25zIGFyZSBtYWRlIChuZWVkIHdheSBtb3JlKS4KCS0gUGx1ZyB0aGUgYmluZGluZyBoYW5kbGUgaW50byB0aGUgUlBDX01FU1NBR0UgZHVyaW5nIE5kckdldEJ1ZmZlci4KCS0gSW1wbGVtZW50IE5kclNlbmRSZWNlaXZlLgoJLSBBdHRlbXB0IHRvIHN1cHBvcnQgY2xpZW50IGFuZCBzZXJ2ZXIgYmluZGluZ3MgaW4gSV9ScGNTZW5kW1JlY2VpdmVdLgoKCSogZGxscy9zaGVsbDMyL2RyYWdkcm9waGVscGVyLmMsIGRsbHMvc2hlbGwzMi9zaGZsZHJfZGVza3RvcC5jLAoJICBkbGxzL3NoZWxsMzIvc2hmbGRyX215Y29tcC5jOgoJQWxiZXJ0byBNYXNzYXJpIDxhbGJ5QGV4bG4uY29tPgoJRG9uJ3QgdG91Y2ggdGhlIFRoaXMgcG9pbnRlciBhZnRlciBpdCBoYXMgYmVlbiBmcmVlZC4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbC5jLCBkbGxzL3VzZXIvdXNlcjMyLnNwZWM6CglJbnN0YWxsIHRoZSBzaGVsbCBob29rIGFzIGEgMzItYml0IGhvb2suCgoJKiBkbGxzL2FkdmFwaTMyL01ha2VmaWxlLmluLCBkbGxzL2FkdmFwaTMyL2V2ZW50bG9nLmMsCgkgIGRsbHMvYWR2YXBpMzIvcmVnaXN0cnkuYywgZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jLAoJICBkbGxzL2FkdmFwaTMyL3NlcnZpY2UuYzoKCU1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuZGU+CglDb21waWxlIHRoZSBhZHZhcGkzMiBkbGwgd2l0aCAtRFNUUklDVC4KCgkqIGRsbHMvbnRkbGwvcmVnLmMsIGluY2x1ZGUvd2ludGVybmwuaDoKCU1hZGUgdGhlIG50ZGxsIHJlZ2lzdHJ5IGZ1bmN0aW9ucyB1c2UgSEtFWSBpbnN0ZWFkIG9mIEhBTkRMRS4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYywgZGxscy9jb21jdGwzMi90cmVldmlldy5jLAoJICBkbGxzL2tlcm5lbC90ZXN0cy9hbGxvYy5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYywKCSAgZGxscy9zaGx3YXBpL3JlZy5jLCBkbGxzL3dpbm1tL3dpbmVhbHNhL2F1ZGlvLmMsCgkgIGRsbHMveDExZHJ2L2tleWJvYXJkLmM6CglBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CgktIGZpeCBzb21lIHBzZWxsaW5nCgktIGVuaGFuY2Ugc29tZSBUUkFDRXMKCgkqIHdpbmVkZWZhdWx0LnJlZzogU3lsdmFpbiBQZXRyZW9sbGUgPHNwZXRyZW9sbGVAeWFob28uZnI+CglBZGRlZCBEaXJlY3RQbGF5TG9iYnkgQ0xTSUQgZW50cmllcy4KCgkqIGRsbHMvcnBjcnQ0L25kcl9tYXJzaGFsbC5jLCBkbGxzL3JwY3J0NC9uZHJfbWlkbC5jLAoJICBkbGxzL3JwY3J0NC9uZHJfbWlzYy5oLCBkbGxzL3JwY3J0NC9uZHJfc3R1Ymxlc3MuYywKCSAgZGxscy9ycGNydDQvcnBjcnQ0X21haW4uYywgaW5jbHVkZS9ycGNuZHIuaCwgaW5jbHVkZS93aW5lL3JwY2ZjLmg6CglHcmVnIFR1cm5lciA8Z210dXJuZXIwMDdAYW1lcml0ZWNoLm5ldD4KCS0gTWFrZSBleHBsaWNpdCBzb21lIG1pc3NpbmcgaW5jbHVkZSBkZXBlbmRlbmNpZXMuCgktIEltcGxlbWVudCBOZHJHZXRCdWZmZXIsIE5kckZyZWVCdWZmZXIsIE5kckNvbmZvcm1hbnRTdHJpbmdCdWZmZXJTaXplCgkgIGFuZCBOZHJDb25mb3JtYW50U3RyaW5nTWFyc2hhbGwuCgktIERlZmluZSB0aGUgUlBDX0ZDX0NfQ1NUUklORyBjb25zdGFudC4KCS0gUGVyaGFwcyBJIGRvbid0IHdhbnQgdGhvc2UgTUlETF8qX0ZPUk1BVF9TVFJJTkcgc3RydWN0cywgYWZ0ZXIKCSAgYWxsLiBSZW1vdmVkLgoJLSBBZGQgUlBDIHRvZG8gbGlzdC4KCS0gTUlETF9TVFVCX01FU1NBR0UudUZsYWdzIGFyZW4ndC4KCS0gQ29tbWVudCBvdXQgdGhlIE5kckNsaWVudENhbGwyIG1vY2stdXAgc2luY2UgdGhhdCBzdHVmZiBpcyBpbiB0aGUKCSAgcHJvY2VzcyBvZiBiZWluZyBpbXBsZW1lbnRlZCBhbmQgbWlnaHQgY2F1c2UgcHJvYmxlbXMuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9sb2NhbGUuYywgb2xlL29sZTJubHMuYzoKCUJpbGwgTWVkbGFuZCA8bWVkYmkwMUBhY2NwYWMuY29tPgoJRml4IE9MRV9HZXRGb3JtYXRXIHNvIHRoYXQgR2V0RGF0ZUZvcm1hdFcgd29ya3MuCglSZWFycmFuZ2VkIGZvciBzaW1wbGljaXR5LgoKCSogcHJvZ3JhbXMvd2luZWRiZy9tZW1vcnkuYzogSmVmZiBTbWl0aCA8d2h5ZG91YnRAaG90bWFpbC5jb20+CglGaXhlZCBiZWhhdmlvdXIgb2YgInggL3MgLi4uIi4KCgkqIGRsbHMvdHR5ZHJ2L01ha2VmaWxlLmluLCBkbGxzL3R0eWRydi9iaXRtYXAuYywgZGxscy90dHlkcnYvZGMuYywKCSAgZGxscy90dHlkcnYvZ3JhcGhpY3MuYywgZGxscy90dHlkcnYvb2JqZWN0cy5jLCBkbGxzL3R0eWRydi93bmQuYzoKCU1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuZGU+CglDb21waWxlIHRoZSB0dHlkcnYgZGxsIHdpdGggLURTVFJJQ1QuCgoJKiBkbGxzL3dpbm1tL21jaS5jLCBkbGxzL3dpbm1tL21taW8uYywgZGxscy93aW5tbS9tbXN5c3RlbS5jLAoJICBkbGxzL3dpbm1tL3BsYXlzb3VuZC5jLCBkbGxzL3dpbm1tL3RpbWUuYywgZGxscy93aW5tbS93aW5lbW0uaCwKCSAgZGxscy93aW5tbS93aW5tbS5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglTaW1wbGlmeSB0aGUgZ2xvYmFsIGludGVybmFsIGRhdGEgaGFuZGxpbmcuCgoJKiBkbGxzL3dpbm1tL2xvbHZsZHJ2LmMsIGRsbHMvd2lubW0vbWNpLmMsIGRsbHMvd2lubW0vd2luZW1tLmg6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCVVuaWZ5IHRoZSBjb25zdGFudCB1c2VkIGZvciBlcnJvciBjb2RlcyByZXBvcnRpbmcgbWFwcGluZyBmdW5jdGlvbnMKCXN1Y2Nlc3MvZmFpbHVyZXMuCgoJKiBkbGxzL2QzZDgvZDNkOF9tYWluLmMsIGluY2x1ZGUvZDNkOC5oOgoJSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCURlZmluZSB0aGUgbWFpbiBkaXJlY3R4OCBlbnRyeXBvaW50LgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGdicm93c2VyLmMsIGRsbHMvc2hlbGwzMi9zaGVsbHN0cmluZy5jLAoJICBkbGxzL3R3YWluL2RzX2ltYWdlLmM6CglNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmRlPgoJU29tZSBzbWFsbCBjbGVhbnVwcy4KCgkqIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25zb2xlX0RlLnJjLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZV9Fbi5yYzoKCUFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCS0gY29ycmVjdCBHZXJtYW4gc3RyaW5ncyB0byB3aGF0IHRoZXkncmUgcmVhbGx5IHN1cHBvc2VkIHRvIGJlCgktIGxlc3MgY29uZnVzaW9uIGFib3V0IHN0b3JlZCBzZXR0aW5ncwoKCSogZGxscy93aW5lZG9zL2ludDE3LmM6IEFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCVRpbnkgaW50MTcgcHJpbnRlciBmaXguCgoJKiBkbGxzL2NyeXB0MzIvY3J5cHQzMi5zcGVjLCBkbGxzL2NyeXB0MzIvbWFpbi5jOgoJQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJQWRkZWQgQ2VydE9wZW5TdG9yZSBzdHViLgoKCSogZmlsZXMvZGlyZWN0b3J5LmMsIGZpbGVzL2Rvc19mcy5jLCBmaWxlcy9kcml2ZS5jLCBmaWxlcy9maWxlLmMsCgkgIGluY2x1ZGUvZmlsZS5oLCBpbmNsdWRlL3dpbm50Lmg6CglHZXQgcmlkIG9mIEZJTEVfQVRUUklCVVRFX1NZTUxJTksgKGJhc2VkIG9uIGEgcGF0Y2ggYnkgQmlsbCBNZWRsYW5kKS4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCURvIG5vdCBpbnZhbGlkYXRlIGxpc3Qgb24gV01fU0VUUkVEUkFXLgoJVXBkYXRlIHNpemUgaW5mbyBldmVuIGlmIHJlZHJhd2luZyBpcyBkaXNhYmxlZC4KCVRyaXZpYWwgY2xlYW51cHMsIGFuZCBzb21lIHRyYWNpbmcuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglXZSBjYW4gYXZvaWQgZmxpY2tlciBvbiBjb2x1bW4gcmVzaXplIG9ubHkgaWYgaXQncyBsZWZ0IGFsaWduLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQWx3YXlzIGRyYXcgdGhlIG1haW4gaXRlbSBpbiBmdWxsIHJvdyBzZWxlY3QuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglVc2UgaXRlcmF0b3JzIHRvIHJlbmRlciBvdmVyIHRoZSBjb2x1bW5zLCBpbiByZXBvcnQgbW9kZS4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVNtYWxsIGl0ZXJhdG9yLW92ZXItcmFuZ2Vbc10gY2xlYW51cC4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUVsaW1pbmF0ZSBtb3N0IG9mIHRoZSBmbGlja2VyIHdoZW4gcmVzaXppbmcgY29sdW1ucy4KCU1vcmUgZGVidWcgdHJhY2luZy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUZpeCBzdWJpdGVtIGJhY2tncm91bmQgY29sb3IgaW4gZnVsbCByb3cgc2VsZWN0LgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJV2Ugc2hvdWxkIGNhbGxiYWNrIGZvciBpbmV4aXN0ZW50IHN1Yml0ZW1zLgoJRG8gbm90IHN0b3JlIGNhbGxiYWNrIGl0ZW1zIGZvciBzdWJpdGVtcywgZXZlbiBpZiB3ZSdyZSBhc2tlZCB0by4KCVNtYWxsIGNsZWFudXAuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglGaXggY3Jhc2ggd2hlbiBjb21wdXRpbmcgdGhlIGl0ZW0gd2lkdGggb2YgYSByZXBvcnQgd2l0aCBubyBjb2x1bW5zLgoJT3ZlcnJpZGUgY3VzdG9tIGRyYXcgYmtnbmQgY29sb3IgZm9yIHNlbGVjdGlvbiBpdGVtcy4KCUZpbGwgYmFja2dyb3VuZCBmb3IgYWxsIGl0ZW1zIHRoYXQgaGF2ZSBhIGJrZ25kIGNvbG91ci4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUtlZXAgYXV0b2FycmFuZ2luZyBpdGVtcyB1bnRpbCBvbmUgaXMgbW92ZWQuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglBYnN0cmFjdCBhdXRvYXJyYW5naW5nIGRlY2lzaW9uIHRvIGEgaGVscGVyIGZ1bmN0aW9uLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRG8gbm90IGRvIHNjcmVlbiB3b3JrIGlmIHJlZnJlc2hpbmcgaXMgZGlzYWJsZWQuCglSZWltcGxlbWVudCBTZXRSZWRyYXcgdG8gY29wZSB3aXRoIHRoZSBjaGFuZ2VzLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJUmV3cml0ZSB0aGUgVXBkYXRlU2Nyb2xsIGZ1bmN0aW9uOiBzaW1wbGVyLCBmYXN0ZXIuCglBZGQgZGVidWdnaW5nIGhlbHBlciBmb3IgU0NST0xMSU5GTy4KCUZpeCBwb3RlbnRpYWwgYnVnIGluIGRlYnVnZ2luZyBoZWxwZXJzLgoKCSogZGxscy9vbGVhdXQzMi9NYWtlZmlsZS5pbiwgZGxscy9vbGVhdXQzMi9vbGUyZGlzcC5jLAoJICBkbGxzL29sZWF1dDMyL29sZWZvbnQuYywgZGxscy9vbGVhdXQzMi9vbGVwaWN0dXJlLmMsCgkgIGRsbHMvb2xlYXV0MzIvc3R1YnMuYzoKCU1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuZGU+CglDb21waWxlIHRoZSBvbGVhdXQzMiBkbGwgd2l0aCAtRFNUUklDVC4KCgkqIGRsbHMvc2hsd2FwaS9NYWtlZmlsZS5pbiwgZGxscy9zaGx3YXBpL29yZGluYWwuYywKCSAgZGxscy9zaGx3YXBpL3BhdGguYywgZGxscy9zaGx3YXBpL3JlZy5jLCBkbGxzL3NobHdhcGkvcmVnc3RyZWFtLmMsCgkgIGRsbHMvc2hsd2FwaS9zaGx3YXBpX21haW4uYywgZGxscy9zaGx3YXBpL3RocmVhZC5jOgoJTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5kZT4KCUNvbXBpbGUgdGhlIHNobHdhcGkgZGxsIHdpdGggLURTVFJJQ1QuCgoJKiBkbGxzL21zdmNydC9NYWtlZmlsZS5pbiwgZGxscy9tc3ZjcnQvZGlyLmMsIGRsbHMvbXN2Y3J0L2ZpbGUuYywKCSAgZGxscy9tc3ZjcnQvbWFpbi5jLCBkbGxzL21zdmNydC90aHJlYWQuYzoKCU1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuZGU+CglDb21waWxlIHRoZSBtc3ZjcnQgZGxsIHdpdGggLURTVFJJQ1QuCgoJKiB0b29scy93aW5lY2hlY2s6IEFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCS0gY2hlY2sgZm9yIHJvb3QgdXNlcgoJLSBzaWxlbmNlIGVycm9ycwoKCSogZGxscy90YXBpMzIvcGhvbmUuYzogQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJQWRkZWQgc29tZSBjb21tZW50cy4KCgkqIHdpbmVkZWZhdWx0LnJlZzogQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJLSBhZGQgIlByb2R1Y3RJZCIga2V5CgktIGFkZCBIS0VZX0xPQ0FMX01BQ0hJTkVcSEFSRFdBUkVcREVWSUNFTUFQXFNFUklBTENPTU0gZGVmYXVsdCBtYXBwaW5nCgktIHJlbWVtYmVyIG9sZCBEaXJlY3RYIHZlcnNpb24gc3RyaW5ncwoKMjAwMi0xMC0yMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvcnBjcnQ0L25kcl9taWRsLmMsIGluY2x1ZGUvcnBjbmRyLmg6CglHcmVnIFR1cm5lciA8Z210dXJuZXIwMDdAYW1lcml0ZWNoLm5ldD4KCUltcGxlbWVudGVkIE5kckNsaWVudEluaXRpYWxpemVOZXcuCgoJKiBkbGxzL3JwY3J0NC9ycGNfYmluZGluZy5jOiBHcmVnIFR1cm5lciA8Z210dXJuZXIwMDdAYW1lcml0ZWNoLm5ldD4KCVdoaXRlc3BhY2UgY2xlYW51cC4KCgkqIGRsbHMvcnBjcnQ0L3JwY19zZXJ2ZXIuYzogR3JlZyBUdXJuZXIgPGdtdHVybmVyMDA3QGFtZXJpdGVjaC5uZXQ+CglGaXhlZCBhIHRpbnkgdHJhY2UgYnVnLgoKCSogZGxscy93aW5lZG9zL21vZHVsZS5jOiBDaHJpcyBNb3JnYW4gPGNtb3JnYW5AYWx1bS53cGkuZWR1PgoJQ2FsbCBDcmVhdGVQcm9jZXNzQSgpIHdoZW4gZXhlY3V0aW5nIG5vbi1kb3MgYXBwbGljYXRpb25zIGZyb20gYSBkb3MKCWFwcGxpY2F0aW9uLgoKCSogTWFrZWZpbGUuaW46IEdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJQWxzbyByZW1vdmUgY29uZmlndXJlLmxpbmVubyB3aGVuIHBlcmZvcm1pbmcgZGlzdGNsZWFuLgoKCSogZGxscy9jb21tZGxnL2NkbGdfRnIucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0VuLnJjLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9Gci5yYywgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfRnIucmMsCgkgIGRsbHMvd2luZXBzL3JzcmMucmMsIGRsbHMvd2luZXBzL3dwc19Gci5yYywgZGxscy93aW5tbS93aW5tbV9Gci5yYywKCSAgcHJvZ3JhbXMvY2xvY2svRnIucmMsIHByb2dyYW1zL25vdGVwYWQvRnIucmMsCgkgIHByb2dyYW1zL3dpbmhlbHAvRnIucmM6CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglCcmluZyBzb21lIEZyZW5jaCByZXNvdXJjZXMgaW4gc3luYyB3aXRoIEVuZ2xpc2ggb25lcy4KCgkqIGRsbHMvbXN2aWRlby9NYWtlZmlsZS5pbiwgZGxscy9tc3ZpZGVvL2RyYXdkaWIuYywKCSAgZGxscy9tc3ZpZGVvL21jaXduZC5jLCBkbGxzL21zdmlkZW8vbXN2aWRlbzE2LmMsCgkgIGRsbHMvbXN2aWRlby9tc3ZpZGVvX21haW4uYywgZGxscy9tc3ZpZGVvL3ZmdzE2Lmg6CglNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmRlPgoJQ29tcGlsZSB0aGUgbXN2aWRlbyBkbGwgd2l0aCAtRFNUUklDVC4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUF2b2lkIGRpdmlzaW9uIGJ5IDAgYnkgaW5pdGlhbGl6aW5nIHRoZSBpdGVtIHNpemUgaW4gb24gY3JlYXRpb24uCglSZW5hbWUgdXBkYXRlX2ljb25fc2l6ZSB0byBzZXRfaWNvbl9zaXplLCBmaXggcGFyYW1ldGVycyBvcmRlci4KCUFzc29ydGVkIGNsZWFudXBzLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglBcHBlbmQgdG8gdGhlIGVuZCBvZiB0aGUgRFBBLCBpZiBpbnNlcnQgaW5kZXggaXMgdG9vIGxhcmdlLgoKCSogZGxscy9jb21jdGwzMi9oZWFkZXIuYzogQ2FybG9zIDxjbG96YW5vQGFuZGFnby5jb20+CglGaXhlZCBkdXBsaWNhdGVkIGFycm93cyBpbiBoZWFkZXIgY29udHJvbC4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUZpeCB0aGlua28gdGhhdCBzbGlwcGVkIGluIHdpdGggdGhlIHByZXYgcGF0Y2ggKHJlZW5hYmxlcyByZWZyZXNoKS4KCU1hcmsgYSBmZXcgdGhpbmdzIHRoYXQgbmVlZHMgbG9va2luZyBhdC4KCVNtYWxsIGNsZWFudXAuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglEbyBub3QgaW52YWxpZGF0ZSB0aGUgd2luZG93IGJlZm9yZSB0aGUgZmlyc3QgcGFpbnQgam9iLgoJQXNzb3J0ZWQgY2xlYW51cHMuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglVc2UgSW52YWxpZGF0ZUl0ZW0gaW5zdGVhZCBvZiBleHBsaWNpdCBJbnZhbGlkYXRlUmVjdCwgaXQgaXMgY2xlYW5lciwKCWFuZCBmYXN0ZXIgd2hlbiByZWRyYXcgaXMgZGlzYWJsZWQuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglUcmFuc2Zvcm0gdGhlIGludmFsaWRhdGlvbiBtYWNyb3MgdG8gcHJvcGVyIGZ1bmN0aW9ucy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCURlbGF5IHNvbWUgc2l6ZSBjb21wdXRhdGlvbnMgdW50aWwgYWZ0ZXIgZmlyc3QgcGFpbnQuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IFJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCVJlb3JnYW5pemUgdGhlIGl0ZW0gc2l6ZSBjYWxjdWxhdGlvbiAoYSBiaXQgc2ltcGxlciwgYW5kIGZhc3RlcikuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IFJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCVNlYXJjaCB0aHJvdWdoIGFsbCBpdGVtcyB3aGVuIExJU1RWSUVXX0ZpbmRJdGVtVyBpcyBjYWxsZWQgd2l0aAoJTFZGSV9QQVJBTSBmbGFnLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRGVsZXRlIHRoZSBpdGVtcyBpZiB3ZSBhY3R1YWxseSBvd24gdGhlbS4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCURvIG5vdCBjYWxsYmFjayB0byB0aGUgcGFyZW50IGZvciBsUGFyYW0gd2hlbiBpbiBMVlNfT1dORVJEQVRBLgoJRG9jcyB1cGRhdGUuCgoJKiBkbGxzL3dpbmVkb3MvTWFrZWZpbGUuaW4sIGRsbHMvd2luZWRvcy9kb3NleGUuaCwKCSAgZGxscy93aW5lZG9zL2Rvc3ZtLmMsIGRsbHMvd2luZWRvcy9pbnQzMS5jLAoJICBkbGxzL3dpbmVkb3MvaW50ZXJydXB0cy5jLCBkbGxzL3dpbmVkb3MvbW9kdWxlLmMsCgkgIGRsbHMvd2luZWRvcy93aW5lZG9zLnNwZWMsIGluY2x1ZGUvY2FsbGJhY2suaCwgaW5jbHVkZS9taXNjZW11LmgsCgkgIG1lbW9yeS9pbnN0ci5jLCBtc2Rvcy9kcG1pLmM6CglKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglNb3ZlIGludGVycnVwdCBlbXVsYXRpb24gY29kZSBmcm9tIElOU1RSX0VtdWxhdGVJbnN0cnVjdGlvbiB0byB3aW5lZG9zCglkbGwuIE1ha2UgQ1RYX1NFR19PRkZfVE9fTElOIHdvcmsgd2l0aCAzMi1iaXQgc2VnbWVudGVkIHBvaW50ZXJzCgljb21tb24gaW4gRFBNSTMyLiBGaXggd2luZWRvcyBpbml0aWFsaXphdGlvbiBzbyB0aGF0IERPU01FTV9Jbml0KFRSVUUpCglpcyBvbmx5IGNhbGxlZCB3aGVuIERPUyBleGVjdXRhYmxlIGlzIHN0YXJ0ZWQuCgoJKiBkbGxzL2RwbGF5eC9NYWtlZmlsZS5pbiwgZGxscy9kcGxheXgvZHBsYXkuYywKCSAgZGxscy9kcGxheXgvZHBsYXl4X2dsb2JhbC5jLCBkbGxzL2RwbGF5eC9kcGxheXhfbWFpbi5jLAoJICBkbGxzL2RwbGF5eC9kcGxvYmJ5LmM6CglNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmRlPgoJQ29tcGlsZSB0aGUgZHBsYXl4IGRsbCB3aXRoIFNUUklDVCBkZWZpbmVkLgoKCSogZGxscy9jb21jdGwzMi9NYWtlZmlsZS5pbiwgZGxscy9jb21jdGwzMi9hbmltYXRlLmMsCgkgIGRsbHMvY29tY3RsMzIvY29tYm9leC5jLCBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYywKCSAgZGxscy9jb21jdGwzMi9jb21tY3RybC5jLCBkbGxzL2NvbWN0bDMyL2RhdGV0aW1lLmMsCgkgIGRsbHMvY29tY3RsMzIvZHJhZ2xpc3QuYywgZGxscy9jb21jdGwzMi9mbGF0c2IuYywKCSAgZGxscy9jb21jdGwzMi9oZWFkZXIuYywgZGxscy9jb21jdGwzMi9ob3RrZXkuYywKCSAgZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYywgZGxscy9jb21jdGwzMi9pcGFkZHJlc3MuYywKCSAgZGxscy9jb21jdGwzMi9saXN0dmlldy5jLCBkbGxzL2NvbWN0bDMyL21vbnRoY2FsLmMsCgkgIGRsbHMvY29tY3RsMzIvcGFnZXIuYywgZGxscy9jb21jdGwzMi9wcm9ncmVzcy5jLAoJICBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jLCBkbGxzL2NvbWN0bDMyL3JlYmFyLmMsCgkgIGRsbHMvY29tY3RsMzIvc21vb3Roc2Nyb2xsLmMsIGRsbHMvY29tY3RsMzIvc3RhdHVzLmMsCgkgIGRsbHMvY29tY3RsMzIvdGFiLmMsIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jLAoJICBkbGxzL2NvbWN0bDMyL3Rvb2x0aXBzLmMsIGRsbHMvY29tY3RsMzIvdHJhY2tiYXIuYywKCSAgZGxscy9jb21jdGwzMi90cmVldmlldy5jLCBkbGxzL2NvbWN0bDMyL3VwZG93bi5jOgoJTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5kZT4KCS0gZml4IHRoZSAiaW50IGZvcm1hdCwgSEFORExFIGFyZyIgdHlwZSBvZiB3YXJuaW5ncyBmb3IgY29tY3RsMzIKCS0gY29tcGlsZSB0aGUgY29tY3RsMzIgZGxsIHdpdGggLURTVFJJQ1QKCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5kZT4KCUFkZCBjYXN0cyB0byBjb21waWxlIHdpdGggLURTVFJJQ1QuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglEbyBub3QgY3Jhc2ggaWYgY2FsbGJhY2sgdGV4dCBpcyBub3QgZmlsbGVkIChiZWhhdmUgbGlrZSBuYXRpdmUpLgoJUmVuZGVyIHJlcG9ydCBtb2RlIGZyb20gdG9wIHRvIGJvdHRvbSAoZWFzaWVyIG9uIHRoZSBleWUpLgoJRG9jcyB1cGRhdGVzLCB0eXBlIGZpeGVzLCBtb3JlIHRyYWNlcy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUNvbGxlY3QgYWxsIGJ1Z3MsIG1pc3NpbmcgZmVhdHVyZXMsIGV0YyBpbiB0aGUgaGVhZGVyIGRvYy4KCU1pbm9yIGNsZWFudXBzLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRG8gbm90IGF1dG9hcnJhbmdlIGlmIHdlIGluc2VydC9kZWxldGUgZnJvbSB0aGUgZW5kIG9mIHRoZSBsaXN0LgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJUmV3b3JrIFNldEl0ZW1Qb3NpdGlvbiwgYnVuY2ggb2YgYnVncyBzcXVhc2hlZCBpbiB0aGUgcHJvY2Vzcy4KCUNvbXBsZXRlIGljb24gYWxpZ25tZW50IHJld3JpdGU6IGNsZWFuZXIsIGluY3JlbWVudGFsLCBldGMuCglDb21wbGV0ZWx5IGF2b2lkIGFsaWduaW5nIGFsbCBpY29ucyBvbiBldmVyeSBpbnNlcnQKCSAgLSBpY29uIHBsYWNlbWVudCBpcyBpbmNyZW1lbnRhbGx5IGNvbXB1dGVkIG5vdzogaXQncyBmYXN0LgoJU21hbGwgY2xlYW51cHMsIGRvY3MgdXBkYXRlLCBldGMuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglSZW5hbWUgTElTVFZJRVdfSVRFTSB0byBJVEVNX0lORk8gZm9yIGNvbnNpc3RlbmN5LgoJUmVuYW1lIExJU1RWSUVXX1NVQklURU0gdG8gU1VCSVRFTV9JTkZPIGZvciBzYW1lIHJlYXNvbi4KCUZpeCB0eXBlIGluIGNvbW1lbnQgc3BvdHRlZCBieSBCb2JieSBCaW5naGFtLgoKCSogZG9jdW1lbnRhdGlvbi9zYW1wbGVzL2NvbmZpZzogU3lsdmFpbiBQZXRyZW9sbGUgPHNwZXRyZW9sbGVAeWFob28uZnI+CglBZGRlZCB2YWxpZCBlbnRyaWVzIHRvIHNwZWNpZnkgaWYgYW4gYXBwIHNob3VsZCBiZSBsb2FkZWQgYnVpbHRpbiBvcgoJbmF0aXZlLgoKCSogZGxscy91c2VyL01ha2VmaWxlLmluOiBNb3ZlZCBuZXR3b3JrLmMgdG8gMTYtYml0IHNvdXJjZXMuCgoJKiBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmMsIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBmaWxlcy9kaXJlY3RvcnkuYywgaW5jbHVkZS9maWxlLmgsCgkgIGluY2x1ZGUvaGVhcC5oLCBsb2FkZXIvbG9hZG9yZGVyLmMsIGxvYWRlci9tb2R1bGUuYywKCSAgbXNkb3MvZG9zY29uZi5jLCB3aW5kb3dzL2NsaXBib2FyZC5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglEb24ndCB1c2Ugd2luZS91bmljb2RlLmggaW4gdGhlIGhlYWRlciBmaWxlcywgaW5jbHVkZSBpdCBkaXJlY3RseQoJd2hlcmUgbmVlZGVkIGluc3RlYWQuCgoJKiBpbmNsdWRlL3dpbmRlZi5oOiBBdm9pZCByZWRlZmluaXRpb24gd2FybmluZy4KCgkqIGRsbHMvY29tY3RsMzIvYW5pbWF0ZS5jLCBkbGxzL2NvbWN0bDMyL2NvbWJvZXguYywKCSAgZGxscy9jb21jdGwzMi9jb21tY3RybC5jLCBkbGxzL2NvbWN0bDMyL2RhdGV0aW1lLmMsCgkgIGRsbHMvY29tY3RsMzIvaG90a2V5LmMsIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmMsCgkgIGRsbHMvY29tY3RsMzIvaXBhZGRyZXNzLmMsIGRsbHMvY29tY3RsMzIvcHJvZ3Jlc3MuYywKCSAgZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYywgZGxscy9jb21jdGwzMi9zdGF0dXMuYywKCSAgZGxscy9jb21jdGwzMi90b29sYmFyLmMsIGRsbHMvY29tY3RsMzIvdG9vbHRpcHMuYywKCSAgZGxscy9jb21jdGwzMi90cmFja2Jhci5jLCBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6CglNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmRlPgoJQWRkIG5lZWRlZCBjYXN0cyBmb3IgYSAibm8gd2FybmluZ3MiIGNvbXBpbGUgb2YgY29tY3RsMzIuCgoJKiBkbGxzL3dpbmVkb3MvbW9kdWxlLmM6IFBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4IGZvciBwbGF0Zm9ybXMgbm90IHN1cHBvcnRpbmcgRE9TIG1vZGUuCgoJKiBpbmNsdWRlL3dpbmRvd3MuaDogUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglBZGQgcHJhZ21hIHRvIGVsaW1pbmF0ZSBNUyBDIHdhcm5pbmdzLgoKCSogdG9vbHMvd2luYXBpL21zdmNtYWtlcjogUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIEFkZGVkIHByb3BlciBwYXJzaW5nIG9mIHRoZSBNYWtlZmlsZS5pbidzIHRvIGZpbmQgdGhlIHRlc3RzLgoJLSBBZGRlZCBzdXBwb3J0IGZvciBvcHRpb25hbGx5IHVzaW5nIHRoZSBNaWNyb3NvZnQgaGVhZGVycyBpbnN0ZWFkIG9mCgkgIHRoZSBXaW5lIGhlYWRlcnMuCgoJKiBwcm9ncmFtcy9wcm9nbWFuL0VuLnJjLCBwcm9ncmFtcy9wcm9nbWFuL0ZyLnJjLAoJICBwcm9ncmFtcy9wcm9nbWFuL2RpYWxvZy5jLCBwcm9ncmFtcy9wcm9nbWFuL2xpY2Vuc2UuYywKCSAgcHJvZ3JhbXMvcHJvZ21hbi9saWNlbnNlLmgsIHByb2dyYW1zL3Byb2dtYW4vbWFpbi5jLAoJICBwcm9ncmFtcy9wcm9nbWFuL3Byb2dtYW4uaCwgcHJvZ3JhbXMvcHJvZ21hbi9yc3JjLnJjLAoJICBwcm9ncmFtcy9wcm9nbWFuL3N0cmluZy5jOgoJU3lsdmFpbiBQZXRyZW9sbGUgPHNwZXRyZW9sbGVAeWFob28uZnI+CglJbXBsZW1lbnRlZCBOTFMgaW4gcHJvZ21hbi4KCgkqIGRsbHMvdXNlci91c2VyX21haW4uYywgaW5jbHVkZS9tZXNzYWdlLmgsIHdpbmRvd3MvdGltZXIuYzoKCVN0b3JlIHRocmVhZCBpZCBpbnN0ZWFkIG9mIHF1ZXVlIGhhbmRsZSBpbiB0aW1lciBzdHJ1Y3R1cmUuCgoJKiBkbGxzL3VzZXIvdXNlcjMyLnNwZWMsIGRsbHMvdXNlci93bmQxNi5jLCBkbGxzL3gxMWRydi9kZXNrdG9wLmMsCgkgIGluY2x1ZGUvcXVldWUuaCwgaW5jbHVkZS93aW4uaCwgd2luZG93cy9xdWV1ZS5jLCB3aW5kb3dzL3dpbi5jOgoJSW1wbGVtZW50ZWQgR2V0V2luZG93VGFzazE2IG9uIHRvcCBvZiBHZXRXaW5kb3dUaHJlYWRQcm9jZXNzSWQuCglSZW1vdmVkIG5vIGxvbmdlciB1c2VkIGhtZW1UYXNrUSBmaWVsZCBpbiBXTkQgc3RydWN0dXJlLgoKCSogZGxscy9rZXJuZWwvY29tbS5jLCBmaWxlcy9maWxlLmMsIGluY2x1ZGUvd2luYmFzZS5oLAoJICBpbmNsdWRlL3dpbmdkaS5oLCBpbmNsdWRlL3dpbm50LmgsIGluY2x1ZGUvd2ludXNlci5oLAoJICBsb2FkZXIvbmUvbW9kdWxlLmMsIG9iamVjdHMvZGliLmMsIG9iamVjdHMvZW5obWV0YWZpbGUuYywKCSAgdG9vbHMvd2luZWR1bXAvbmUuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgbWlzbWF0Y2hlcyBiZXR3ZWVuIHRoZSBXaW5lIGhlYWRlcnMgYW5kIHRoZSBNaWNyb3NvZnQgaGVhZGVycy4KCgkqIGRsbHMvYXZpZmlsMzIvYXZpZmlsZV9EZS5yYywgZGxscy9hdmlmaWwzMi9hdmlmaWxlX0VuLnJjLAoJICBkbGxzL2F2aWZpbDMyL2F2aWZpbGVfcHJpdmF0ZS5oOgoJTWljaGFlbCBH/G5uZXdpZyA8TWljaGFlbEd1ZW5uZXdpZ0BnbXguZGU+CglBZGRlZCBkaWFsb2cgZm9yIEFWSVNhdmVPcHRpb25zLgoKCSogZGxscy9hdmlmaWwzMi9hcGkuYzogTWljaGFlbCBH/G5uZXdpZyA8TWljaGFlbEd1ZW5uZXdpZ0BnbXguZGU+CglJbXBsZW1lbnRlZCBBVklCdWlsZEZpbHRlclcgYW5kIEFWSVNhdmVPcHRpb25zLgoKCSogZGxscy9hdmlmaWwzMi9nZXRmcmFtZS5jOiBNaWNoYWVsIEf8bm5ld2lnIDxNaWNoYWVsR3Vlbm5ld2lnQGdteC5kZT4KCUZpeGVkIGJ1ZyB0aGF0IHByZXZlbnRlZCBJQ0NvbXByZXNzb3JDaG9vc2UgZnJvbSB3b3JraW5nLgoKCSogd2luZG93cy9tc2dib3guYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJTWVzc2FnZUJveEluZGlyZWN0VzogY2FsbCBGaW5kUmVzb3VyY2VFeCB3aXRoIGFyZ3VtZW50cyBpbiB0aGUgcmlnaHQKCW9yZGVyLgoKCSogZGxscy9nZGkvdGVzdHMvZ2VuZXJhdGVkLmMsIGRsbHMva2VybmVsL3Rlc3RzL2dlbmVyYXRlZC5jLAoJICBkbGxzL250ZGxsL3Rlc3RzL2dlbmVyYXRlZC5jLCBkbGxzL3VzZXIvdGVzdHMvZ2VuZXJhdGVkLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCVVwZGF0ZWQgdGhlIGdlbmVyYXRlZCB0ZXN0cy4KCgkqIHRvb2xzL3dpbmFwaS90ZXN0cy5kYXQsIHRvb2xzL3dpbmFwaS93aW5hcGlfdGVzdDoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJTWlub3IgbW9kaWZpY2F0aW9ucyBhbmQgaW1wcm92ZW1lbnRzLgoKCSogZGxscy9zaGVsbDMyL2NvbnRyb2wuYzogU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtTGluZS5jb20+CglEbyBub3QgYnJlYWsgcXVvdGVkIHN0cmluZ3MgaW4gQ29udHJvbF9Eb0xhdW5jaC4KCgkqIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYzogQ2hyaXN0aWFuIE5ldW1haXIgPGNocmlzQGdub21lLWRlLm9yZz4KCUNvbGxlY3QgYWxsIGJ1Z3MsIG1pc3NpbmcgZmVhdHVyZXMsIGV0YyBpbiB0aGUgaGVhZGVyIGRvYy4KCgkqIGluY2x1ZGUvZGlnaXRhbHYuaCwgaW5jbHVkZS93aW5lL21tc3lzdGVtMTYuaDoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJTW92ZWQgMTYgYml0IGRpZ2l0YWwgc3RydWN0cyB0byBpbmNsdWRlL3dpbmUvbW1zeXN0ZW0xNi5oLgoKMjAwMi0xMC0yMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvd2luc3Bvb2wvTWFrZWZpbGUuaW4sIGRsbHMvd2luc3Bvb2wvaW5mby5jOgoJTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5kZT4KCUNvbXBpbGUgdGhlIHdpbnNwb29sIGRsbCB3aXRoIFNUUklDVCBkZWZpbmVkLgoKCSogZGxscy90YXBpMzIvTWFrZWZpbGUuaW4sIGRsbHMvdGFwaTMyL2xpbmUuYywgZGxscy90YXBpMzIvcGhvbmUuYzoKCU1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuZGU+CglDb21waWxlIHRoZSB0YXBpMzIgZGxsIHdpdGggU1RSSUNUIGRlZmluZWQuCgoJKiBkbGxzL3BzYXBpL01ha2VmaWxlLmluLCBkbGxzL3BzYXBpL3BzYXBpX21haW4uYzoKCU1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuZGU+CglDb21waWxlIHRoZSBwc2FwaSBkbGwgd2l0aCBTVFJJQ1QgZGVmaW5lZC4KCgkqIGRsbHMvbXNhY20vTWFrZWZpbGUuaW4sIGRsbHMvbXNhY20vZHJpdmVyLmMsIGRsbHMvbXNhY20vZmlsdGVyLmMsCgkgIGRsbHMvbXNhY20vZm9ybWF0LmMsIGRsbHMvbXNhY20vaW50ZXJuYWwuYywKCSAgZGxscy9tc2FjbS9tc2FjbTMyX21haW4uYywgZGxscy9tc2FjbS9zdHJlYW0uYzoKCU1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuZGU+CglDb21waWxlIHRoZSBtc2FjbSBkbGwgd2l0aCBTVFJJQ1QgZGVmaW5lZC4KCgkqIGRsbHMvbXByL01ha2VmaWxlLmluLCBkbGxzL21wci9hdXRoLmMsIGRsbHMvbXByL3duZXQuYzoKCU1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuZGU+CglDb21waWxlIHRoZSBtcHIgZGxsIHdpdGggU1RSSUNUIGRlZmluZWQuCgoJKiBkbGxzL2ltYWdlaGxwL01ha2VmaWxlLmluLCBkbGxzL2ltYWdlaGxwL2FjY2Vzcy5jLAoJICBkbGxzL2ltYWdlaGxwL2RlYnVnLmMsIGRsbHMvaW1hZ2VobHAvaW1hZ2VobHBfbWFpbi5jLAoJICBkbGxzL2ltYWdlaGxwL2ludGVncml0eS5jLCBkbGxzL2ltYWdlaGxwL3N5bWJvbC5jOgoJTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5kZT4KCUNvbXBpbGUgdGhlIGltYWdlaGxwIGRsbCB3aXRoIFNUUklDVCBkZWZpbmVkLgoKCSogZGxscy9pbW0zMi9NYWtlZmlsZS5pbiwgZGxscy9pbW0zMi9pbW0uYzoKCU1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuZGU+CglDb21waWxlIHRoZSBpbW0zMiBkbGwgd2l0aCBTVFJJQ1QgZGVmaW5lZC4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBzY2hlZHVsZXIvcHRocmVhZC5jOgoJQXZvaWQgcmVmZXJlbmNlIHRvIGdsaWJjIGludGVybmFsIF9fbGliY19mb3JrIGZ1bmN0aW9uLgoKCSogZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzIucmMsIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX0VuLnJjLAoJICBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9SdS5yYywgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfU2sucmMsCgkgIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX1poLnJjLCB3aW5kb3dzL21kaS5jLCB3aW5kb3dzL21zZ2JveC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGJhaWthbC5ydT4KCVJlc3RvcmUgc2V0dGluZyBvZiBjYXB0aW9uICJFcnJvciIuCgoJKiBkbGxzL2QzZDgvZGV2aWNlLmM6IEphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglCZWdpbm5pbmdzIG9mIFN0ZW5jaWwgc3VwcG9ydC4KCgkqIGRsbHMvY29tY3RsMzIvaGVhZGVyLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglCcmluZyBoZWFkZXIncyBoZWlnaHQgbW9yZSBpbmxpbmUgd2l0aCBuYXRpdmUncy4KCgkqIGRsbHMvcnBjcnQ0L01ha2VmaWxlLmluLCBkbGxzL3JwY3J0NC9uZHJfbWFyc2hhbGwuYywKCSAgZGxscy9ycGNydDQvbmRyX21pZGwuYywgZGxscy9ycGNydDQvcnBjcnQ0LnNwZWMsIGluY2x1ZGUvcnBjbmRyLmg6CglHcmVnIFR1cm5lciA8Z210dXJuZXIwMDdAYW1lcml0ZWNoLm5ldD4KCS0gVXNlIE92ZS1zdHlsZSBtYWNyb3MgZm9yIE5kckNvbmZvcm1hbnRTdHJpbmdNYXJzaGFsbCBkZWZpbml0aW9uLgoJLSBNb3ZlIE5kckNvbmZvcm1hbnRTdHJpbmdNYXJzaGFsbCB0byBuZXcgbmRyX21hcnNoYWxsLmMuCgktIFN0dWJzIGZvciBOZHJDb25mb3JtYW50U3RyaW5nQnVmZmVyU2l6ZSwKCSAgTmRyQ29uZm9ybWFudFN0cmluZ01lbW9yeVNpemUsIGFuZCBOZHJDb25mb3JtYW50U3RyaW5nVW5tYXJzaGFsbC4KCgkqIGRsbHMvcnBjcnQ0L25kcl9zdHVibGVzcy5jLCBkbGxzL3JwY3J0NC9ycGNfYmluZGluZy5jLAoJICBkbGxzL3JwY3J0NC9ycGNfc2VydmVyLmM6CglHcmVnIFR1cm5lciA8Z210dXJuZXIwMDdAYW1lcml0ZWNoLm5ldD4KCS0gQ2xpZW50Q2FsbDIgc3RpbGwgZGVzZXJ2ZXMgYSBGSVhNRS4KCS0gQ29tcGxldGUgYmluZGluZ3Mgd2l0aCBOVUxMIGVuZHBvaW50cy4KCS0gSW1wbGVtZW50IFJwY1NlcnZlclVzZVByb3RzZXFBLCBScGNTZXJ2ZXJVc2VQcm90c2VxVy4KCjIwMDItMTAtMjEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsIGluY2x1ZGUvd2lubnQuaCwKCSAgc2VydmVyL3Byb3RvY29sLmRlZjoKCUZpeGVkIHRoZSBXSU5FX05PX1NUUklDVCAjaWZkZWZzIHRvIGRvIHRoZSByaWdodCB0aGluZyBpZiBTVFJJQ1QgaXMKCWRlZmluZWQgKHNwb3R0ZWQgYnkgTWljaGFlbCBTdGVmYW5pdWMpLgoKCSogZGxscy9ycGNydDQvbmRyX21pZGwuYywgaW5jbHVkZS9ycGNuZHIuaDoKCUdyZWcgVHVybmVyIDxnbXR1cm5lcjAwN0BhbWVyaXRlY2gubmV0PgoJRml4IHJldHVybiB0eXBlcyBvZiBOZHJDb25mb3JtYW50U3RyaW5nTWFyc2hhbGwsIE5kckdldEJ1ZmZlciwgYW5kCglOZHJTZW5kUmVjZWl2ZS4KCgkqIGRsbHMvcnBjcnQ0L3JwY19zZXJ2ZXIuYywgZGxscy9ycGNydDQvcnBjcnQ0LnNwZWMsIGluY2x1ZGUvcnBjZGNlLmg6CglHcmVnIFR1cm5lciA8Z210dXJuZXIwMDdAYW1lcml0ZWNoLm5ldD4KCVN0dWJzIGZvciBScGNTZXJ2ZXJVc2VQcm90c2VxQSwgUnBjU2VydmVyVXNlUHJvdHNlcVcuCgoJKiBkbGxzL2F2aWZpbDMyL01ha2VmaWxlLmluLCBkbGxzL2F2aWZpbDMyL2FjbXN0cmVhbS5jLAoJICBkbGxzL2F2aWZpbDMyL2ZhY3RvcnkuYywgZGxscy9hdmlmaWwzMi9pY21zdHJlYW0uYzoKCU1pY2hhZWwgR/xubmV3aWcgPE1pY2hhZWxHdWVubmV3aWdAZ214LmRlPgoJTmV3IEFWSSBzdHJlYW1oYW5kbGVycyBmb3IgYXVkaW8gYW5kIHZpZGVvIHN0cmVhbXMuCgoJKiBkbGxzL2F2aWZpbDMyL2FwaS5jLCBkbGxzL2F2aWZpbDMyL2F2aWZpbGVfRGUucmMsCgkgIGRsbHMvYXZpZmlsMzIvYXZpZmlsZV9Fbi5yYywgZGxscy9hdmlmaWwzMi9hdmlmaWxlX3ByaXZhdGUuaDoKCU1pY2hhZWwgR/xubmV3aWcgPE1pY2hhZWxHdWVubmV3aWdAZ214LmRlPgoJLSBGaXhlZCB1c2FnZSBvZiBoYW5kbGVyIGluc3RlYWQgb2YgdHlwZSBpbiBBVklNYWtlQ29tcHJlc3NlZFN0cmVhbS4KCS0gSW1wbGVtZW50ZWQgQVZJQnVpbGRGaWx0ZXJBLgoJLSBTdGFydGVkIHRvIGltcGxlbWVudCBBVklCdWlsZEZpbHRlclcuCgoJKiBkbGxzL2F2aWZpbDMyL2F2aWZpbGUuYzogTWljaGFlbCBH/G5uZXdpZyA8TWljaGFlbEd1ZW5uZXdpZ0BnbXguZGU+CgktIEZpeGVkIG1hbnkgYnVncyB3aGljaCBwcmV2ZW50cyB3cml0aW5nLgoJLSBGaXhlZCBzZWdmYXVsdCB3aGlsZSBwYXJzaW5nIGludmFsaWQgaW5kZXguCgktIEtlZXAgcGFyc2luZyBvZiBpbmRleCBldmVuIGlmIHN0cmVhbWhlYWRlciBzYXlzIGl0J3MgZW1wdHkKCS0gRml4ZWQgYnVnIGluIEFWSUZJTEVfU2F2ZUluZGV4IHdoZW4gc3RyZWFtIGlzIGVtcHR5LgoJLSBGaXhlZCBidWcgaW4gQVZJRklMRV9Xcml0ZUJsb2NrLCB3aGVuIGNodW5rIGlzIG5vdCBvZiBldmVuIHNpemUuCgoJKiBpbmNsdWRlL3Zmdy5oOiBNaWNoYWVsIEf8bm5ld2lnIDxNaWNoYWVsR3Vlbm5ld2lnQGdteC5kZT4KCUFkZGVkIG1hY3JvcyBmb3IgQVZJRmlsZUNsb3NlIGFuZCBBVklTdHJlYW1DbG9zZS4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRFBBcyBjYW4ndCBoYXZlIG1vcmUgdGhhbiAweDgwMDAgZWxlbWVudHMgKGZpeGVkIHdpdGggbG90cyBvZiBoZWxwCglmcm9tIENhcmxvcyA8Y2xvemFub0BhbmRhZ28uY29tKS4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJTm8gbmVlZCB0byBpbmNyZW1lbnQgaXRlbSBzaXplLCBpdCdzIGFscmVhZHkgYWRqdXN0ZWQgYnkgRFBBX1NldFB0cgoJKGZvdW5kLCBhbmQgZml4ZWQgYnkgQ2FybG9zIDxjbG96YW5vQGFuZGFnby5jb20+KS4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRG8gbm90IHJlbHkgb24gSGVhcFJlQWxsb2MgdG8gYWxsb2NhdGUgYSBOVUxMIHBvaW50ZXIuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVJld3JpdGUgRFBBX0luc2VydFB0ciBpbiB0ZXJtcyBvbiBEUEFfU2V0UHRyLCBzbyB0aGF0ICBpdCdzIHNpbXBsZXIsCgljbGVhbmVyLCBhbmQgbW9yZSBjb3JyZWN0LgoJSXQgbm93IGV4cGFuZHMgdGhlIGFycmF5IHRvIGFjY29tb2RhdGUgbGFyZ2VyIHRoYW4gY3VycmVudCBzaXplCglpbmRleGVzLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRG8gbm90IHNlbmQgdW5pbml0aWFsaXplZCBsUGFyYW1zIG9uIG5vdGlmaWNhdGlvbiBtc2dzIChmb3VuZCBieSBSZWluCglLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPikuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglDb21wbGV0ZSByZXdyaXRlIG9mIHRoZSByY1ZpZXcgaW1wbGVtZW50YXRpb24uCglMb3RzIG9mIGJ1Z3MgZml4ZWQgaW4gcmNWaWV3IGNvbXB1dGF0aW9uLgoJQXNzb3J0ZWQgY2xlYW51cHMsIGFuZCBzaW1wbGlmaWNhdGlvbnMuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglTcGxpdCByYW5nZXNfZGVzdHJveSBpbiByYW5nZXNfY2xlYXIsIGFuZCByYW5nZXNfZGVzdHJveS4KCVJld3JpdGUgRGVsZXRlQWxsSXRlbXMsIGZvciBjbGVhbmVyLCBmYXN0ZXIsIG1vcmUgY29ycmVjdCBjb2RlLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJVXBkYXRlZCBoZWFkZXIgZG9jdW1lbnRhdGlvbiB0byB0aGUgbGF0ZXN0LCBhbmQgZ3JlYXRlc3QuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglPcHRpbWl6ZSBpbnZhbGlkYXRpb24gb24gaW5zZXJ0LgoJU2hhcmUgdGhlIGludmFsaWRhdGlvbiBjb2RlIGJldHdlZW4ge0RlbGV0ZSxJbnNlcnR9SXRlbS4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVJld3JpdGUgRGVsZXRlSXRlbVQ6IGNsZWFuZXIsIGEgbG90IGZhc3Rlci4KCU51bWJlciBvZiBidWcgd2VyZSBmaXhlZC4KCVRoZSBtaW5pbXVtIHBvc3NpYmxlIGlzIHJlZHJhd24uCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglJbXBsZW1lbnQgbW9zdCBvZiBMVk1fQVJSQU5HRS4KCU1ha2UgdXNlIG9mIGl0LCB3aGVyZSBpdCB3YXMgYXBwcm9wcmlhdGUuCglVc2UgaW5mb1B0ci0+ZHdTdHlsZSBkaXJlY3RseSwgaW4gbW9zdCBwbGFjZXMuCglBc3NvcnRlZCBjbGVhbnVwcy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVByb3BlciAodHlwZSB3aXNlKSByZXR1cm4gdHlwZXMuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglSZW9yZ2FuaXplIGhlYWRlciBub3RpZmljYXRpb25zLgoJU3VwcG9ydCBub3RpZmljYXRpb25zIHRoYXQgZG9uJ3QgaGF2ZSBlbWJlZGRlZCBzaXplIGluZm8uCglJbnZhbGlkYXRlIGNvbHVtbnMgb24gZm9ybWF0IGNoYW5nZSAoaWYgbmVlZGVkKS4KCUFzc29ydGVkIGNsZWFudXBzLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQ3Jhc2ggb24gaW50ZXJuYWwgTlVMTCBwb2ludGVycywgZG9uJ3QgdGVzdCBhbGwgb3ZlciB0aGUgcGxhY2UuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglXaGVuIHJlbW92aW5nIGZvY3VzLCBubyBuZWVkIHRvIGdvIHRocm91Z2ggYWxsIGVsZW1lbnRzLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRml4IGNvbG9ycyBmb3Igc2VsZWN0ZWQgaXRlbXMgaW4gZnVsbCByb3cgc2VsZWN0IG1vZGUuCglGaXggYnVnIGNhdXNlZCBieSB1c2Ugb2YgdW5pbml0aWFsaXplZCBzdGF0ZS4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUZpeCBjb21wdXRhdGlvbiBvZiBzdWJpdGVtIGJveCwgd2hlbiBpbnZhbGlkYXRpbmcgaXQuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglBc3NlcnQgb24gaW5jb25zaXN0ZW50IHJhbmdlIGxpc3Qgc3RhdGVzLgoJVmFyaW91cyBjb2RlIGNsZWFudXBzLCBmZXcgcG90ZW50aWFsIGJ1Z3MgZml4ZWQuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglEbyBub3QgZ3JvdyB0aGUgaXRlbSBsaXN0IHRvIGFyYnJpdGFyeSBpbmRleDogaWYgcmVxdWVzdGVkIGluZGV4IGlzCglsYXJnZXIgdGhhbiBjdXJyZW50IGNvdW50LCBqdXN0IGFwcGVuZC4KCU1pc2NlbGxhbmVvdXMgY2xlYW51cHMuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglTZXRDb2x1bW5XaWR0aCByZXdyaXRlOiBzaW1wbGVyLCBjbGVhbmVyIGNvZGUuIEJ1Z3Mgc3F1YXNoZWQuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglIYW5kbGUgZ2VuZXJpYyBjb2x1bW4gd2lkdGggY2hhbmdlcy4KCUZpeCBidWcgaW4gU2V0Q29sdW1uVCB3aGljaCByZW5kZXJlZCBpdCB1bnVzYWJsZS4KCUNvbHVtbiBjb2RlIGNsZWFudXAuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglBc3NlcnQgb24gaW50ZXJuYWwgaW52YXJpYW50cywgcmF0aGVyIHRoYW4gZmFpbCBncmFjZWZ1bGx5LgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJTW9yZSBkb2NzIGNvbXBsaWFudCBhbGlnbm1lbnQgaGFuZGxpbmcgZm9yIHN1Yml0ZW1zLgoKCSogdG9vbHMvd2luZWluc3RhbGw6IFZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCVJ1biByZWdlZGl0IGV2ZW4gaWYgbm90IGluc3RhbGxlZC4KCgkqIHByb2dyYW1zL3dpbmhlbHAvRGEucmMsIHByb2dyYW1zL3dpbmhlbHAvRGUucmMsCgkgIHByb2dyYW1zL3dpbmhlbHAvRW4ucmMsIHByb2dyYW1zL3dpbmhlbHAvRXMucmMsCgkgIHByb2dyYW1zL3dpbmhlbHAvRmkucmMsIHByb2dyYW1zL3dpbmhlbHAvRnIucmMsCgkgIHByb2dyYW1zL3dpbmhlbHAvSHUucmMsIHByb2dyYW1zL3dpbmhlbHAvSXQucmMsCgkgIHByb2dyYW1zL3dpbmhlbHAvS28ucmMsIHByb2dyYW1zL3dpbmhlbHAvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL3dpbmhlbHAvUHQucmMsIHByb2dyYW1zL3dpbmhlbHAvU2kucmMsCgkgIHByb2dyYW1zL3dpbmhlbHAvU2sucmMsIHByb2dyYW1zL3dpbmhlbHAvU3cucmMsCgkgIHByb2dyYW1zL3dpbmhlbHAvVmEucmMsIHByb2dyYW1zL3dpbmhlbHAvV2EucmMsCgkgIHByb2dyYW1zL3dpbmhlbHAvbWFjcm8uYywgcHJvZ3JhbXMvd2luaGVscC93aW5oZWxwLmMsCgkgIHByb2dyYW1zL3dpbmhlbHAvd2luaGVscF9yZXMuaDoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJTm8gbG9uZ2VyIHVzaW5nIGV4cGxpY2l0IHZhbHVlcyBmb3IgcmVzb3VyY2UgaWRlbnRpZmljYXRpb24uCgoJKiBkbGxzL2NvbWN0bDMyL2hlYWRlci5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRml4IG5vdGlmaWNhdGlvbiBmcm9tIGhlYWRlciwgb24gaXRlbSBjaGFuZ2VkLgoJU21hbGwgaW5kZW50YXRpb24gZml4ZXMuCgoJKiBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYzogRHVhbmUgQ2xhcmsgPGRjbGFya0Bha2FtYWlsLmNvbT4KCVNldCB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZSBQRF9QQUdFTlVNUyBmbGFnLgoKCSogcHJvZ3JhbXMvbm90ZXBhZC9kaWFsb2cuYzogRHVhbmUgQ2xhcmsgPGRjbGFya0Bha2FtYWlsLmNvbT4KCUltcGxlbWVudCBwcmludGluZyBpbiBub3RlcGFkLgoKCSogZGxscy9kM2Q4L2QzZDhfcHJpdmF0ZS5oLCBkbGxzL2QzZDgvZGV2aWNlLmMsIGRsbHMvZDNkOC9kaXJlY3R4LmMsCgkgIGRsbHMvZDNkOC92b2x1bWUuYywgZGxscy9kM2Q4L3ZvbHVtZXRleHR1cmUuYzoKCUphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglBZGQgdGhlIGJhc2ljIHN1cHBvcnQgZm9yIHZvbHVtZSB0ZXh0dXJlcyAvIHZvbHVtZXMgKDNkIHRleHR1cmVzKS4KCgkqIGRsbHMvd2lubW0vbW1pby5jLCBkbGxzL3dpbm1tL21tc3lzdGVtLmMsIGRsbHMvd2lubW0vd2luZW1tLmg6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUtlZXAgb24gbW92aW5nIDE2IGJpdCBjb2RlIG91dCBvZiB3aW5tbSwgbm93IG9ubHkgdXNpbmcgbGluZWFyCglhZGRyZXNzZXMgZm9yIGJ1ZmZlcnMuCgoJKiBwcm9ncmFtcy93aW5oZWxwL21hY3JvLmM6IEVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJSW1wbGVtZW50ZWQgYSBmZXcgbW9yZSBtYWNyb3MgZm9yIGJ1dHRvbiBtYW5pcHVsYXRpb24KCShlbmFibGUvZGlzYWJsZS9jaGFuZ2luZyBtYWNybykuCgoJKiBwcm9ncmFtcy93aW5oZWxwL2hscGZpbGUuYywgcHJvZ3JhbXMvd2luaGVscC9obHBmaWxlLmgsCgkgIHByb2dyYW1zL3dpbmhlbHAvd2luaGVscC5jLCBwcm9ncmFtcy93aW5oZWxwL3dpbmhlbHAuaDoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJSW1wcm92ZWQgYSBiaXQgbGluayBoYW5kbGluZyAoYSBmZXcgbW9yZSBsaW5rIHR5cGVzIGxvYWRlZCBmcm9tIGZpbGUKCWFuZCBzdXBwb3J0IGZvciBsaW5rIHRvIGEgbWFjcm8pLgoKCSogd2luZG93cy9tc2dib3guYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGJhaWthbC5ydT4KCUFjdHVhbGx5IHVzZSBsYW5ndWFnZSBpZGVudGlmaWVyLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6IER1YW5lIENsYXJrIDxkY2xhcmtAYWthbWFpbC5jb20+CglDb3JyZWN0IHRoZSBiZWhhdmlvciBmb3IgZGlzYWJsZWQgdG9vbGJhciBidXR0b25zLgoKMjAwMi0xMC0xOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCURvIG5vdCBjcmVhdGUgYSByYW5nZSBsaXN0IGZvciBhbiBlbXB0eSByYW5nZS4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVN0b3JlIHRoZSBlbnRpcmUgZm9ybWF0IGJpdG1hcCBpbiB0aGUgY29sdW1uIGluZm8uCglSZXdyaXRlIEdldENvbHVtblQgdG8gdGFrZSBhZHZhbnRhZ2Ugb2YgdGhhdC4KCVJlbGF0ZWQgY2xlYW51cHMsIGFuZCBzaW1wbGlmaWNhdGlvbnMuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglDb2x1bW4gemVybyBoYXMgdGhlIGltYWdlIGVuYWJsZWQgYWx3YXlzLCBpcnJlc3BlY3RpdmUgb2YgZm9ybWF0LgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJVW5pZnkge0luc2VydCxTZXR9Q29sdW1uVCBhcyBtdWNoIGFzIHBvc3NpYmxlLgoJRml4IGEgYnVuY2ggb2YgcHJvYmxlbXMgaW4gU2V0Q29sdW1uVC4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUZpeCBmdW5jdGlvbiBoZWFkZXIgZG9jdW1lbnRhdGlvbi4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUJldHRlciByZXBvcnQgbW9kZS4KCVVzZSB0aGUgbmV3IGNvbHVtbiBpbmZvcm1hdGlvbiB0byBzaW1wbGlmeSwgYW5kIHNwZWVkIHVwIHRoZSBjb2RlLgoJRW5hYmxlIHN1cHBvcnQgZm9yIGltYWdlcyBpbiBzdWJpdGVtcyAoaW4gTFZTX1JFUE9SVCBtb2RlKS4KCgkqIGluY2x1ZGUvd2ludXNlci5oLCB3aW5kb3dzL21zZ2JveC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGJhaWthbC5ydT4KCUNvbnZlcnQgTWVzc2FnZUJveCBmYW1pbHkgZnVuY3Rpb25zIHRvIHVuaWNvZGUuCgoJKiBpbmNsdWRlL3JwY3Byb3h5Lmg6IEdyZWcgVHVybmVyIDxnbXR1cm5lcjAwN0BhbWVyaXRlY2gubmV0PgoJUGF0Y2ggY3J1ZnQgcmVtb3ZhbC4KCgkqIGRsbHMvcnBjcnQ0L25kcl9zdHVibGVzcy5jLCBkbGxzL3JwY3J0NC9ycGNydDQuc3BlYywKCSAgaW5jbHVkZS9ycGNuZHIuaDoKCUdyZWcgVHVybmVyIDxnbXR1cm5lcjAwN0BhbWVyaXRlY2gubmV0PgoJU3VwZXItY3J1ZGUgaW1wbGVtZW50YXRpb24gZm9yIE5kckNsaWVudENhbGwyLgoJU3BlY3MgYW5kIGhlYWRlcnMgZm9yIE5kckNsaWVudEluaXRpYWxpemVOZXcsCglOZHJDb25mb3JtYW50U3RyaW5nTWFyc2hhbGwsIE5kckdldEJ1ZmZlciwgTmRyRnJlZUJ1ZmZlciwgYW5kCglOZHJTZW5kUmVjZWl2ZS4KCgkqIGRsbHMvcnBjcnQ0L3JwY19zZXJ2ZXIuYzogR3JlZyBUdXJuZXIgPGdtdHVybmVyMDA3QGFtZXJpdGVjaC5uZXQ+CglGaXggdXAgUnBjTWdtdFdhaXRTZXJ2ZXJMaXN0ZW4gdG8gYmUgbGVzcyBpbmNvcnJlY3QuCgoJKiBkbGxzL3JwY3J0NC9uZHJfbWlkbC5jLCBkbGxzL3JwY3J0NC9uZHJfbWlzYy5oOgoJR3JlZyBUdXJuZXIgPGdtdHVybmVyMDA3QGFtZXJpdGVjaC5uZXQ+CglTb21lIE1JREwgY29uc3RhbnRzIGFuZCBzdHJ1Y3R1cmVzIChzaG91bGQgZXZlbnR1YWxseSBtb3ZlIHRvIHJwY25kci5oCglJIHRoaW5rKS4KCVN0dWJzIGZvciBOZHJDbGllbnRJbml0aWFsaXplTmV3LCBOZHJDb25mb3JtYW50U3RyaW5nTWFyc2hhbGwsCglOZHJHZXRCdWZmZXIsIE5kckZyZWVCdWZmZXIsIGFuZCBOZHJTZW5kUmVjZWl2ZSAobm90IGluIHNwZWNmaWxlIHlldCkuCgoJKiBpbmNsdWRlL3dpbmUvd2luYmFzZTE2LmgsIGxvYWRlci90YXNrLmM6CglHZXQvU2V0RmFzdFF1ZXVlMTYgc2hvdWxkIHVzZSBIUVVFVUUxNiBoYW5kbGVzLgoKCSogZGxscy93aW5tbS9tY2lhdmkvbW1vdXRwdXQuYywgZGxscy93aW5tbS9tY2l3YXZlL21jaXdhdmUuYywKCSAgZGxscy93aW5tbS93aW5lYWxzYS9hdWRpby5jLCBkbGxzL3dpbm1tL3dpbmVhcnRzL2F1ZGlvLmMsCgkgIGRsbHMvd2lubW0vd2luZW5hcy9hdWRpby5jLCBpbmNsdWRlL3dpbmRlZi5oLCBpbmNsdWRlL3dpbm50Lmg6CglSZW1vdmVkIERFQ0xBUkVfT0xEX0hBTkRMRS4gRml4ZWQgYSBmZXcgcmVtYWluaW5nIHdhcm5pbmdzLgoKCSogdG9vbHMvd2luZWR1bXAvbXNtYW5nbGUuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCWRlbWFuZ2xlX2RhdGF0eXBlOiBkZWxldGUgc3VwZXJmbG91cyBmcmVlKCkuCgoJKiBkbGxzL2RkcmF3L2RkcmF3L3VzZXIuYzogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUFkZCAzRCBzdXBwb3J0IGF0IHRoZSBVc2VyIGRyaXZlciBsZXZlbC4KCgkqIGRsbHMvc2hkb2N2dy93ZWJicm93c2VyLmMsIGluY2x1ZGUvd2luZS9vYmpfd2ViYnJvd3Nlci5oOgoJTWFsdGUgU3Rhcm9zdGlrIDxtYWx0ZUBrZGUub3JnPgoJRml4ZWQgSVdlYkJyb3dzZXI6Ok5hdmlnYXRlKCkgcGFyYW1ldGVyIHR5cGUuCglBZGRlZCBJV2ViQnJvd3NlckFwcCBhbmQgcmVsYXRlZCB0eXBlZGVmcy4KCgkqIE1ha2UucnVsZXMuaW4sIHRvb2xzL3dtYy93cml0ZS5jOiBNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJQ29ycmVjdGVkIHRoZSBhbGlnbm1lbnQgb2YgdW5pY29kZSBtZXNzYWdlIHRhYmxlIHN0cmluZ3MgaW4gd21jLCBhbmQKCXN3aXRjaGVkIHRvIHVuaWNvZGUgZm9yIG1lc3NhZ2Ugc3RyaW5ncywgc28gdGhhdCBGb3JtYXRNZXNzYWdlKCkgbm93Cgl3b3Jrcy4KCgkqIHNlcnZlci9NYWtlZmlsZS5pbiwgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3F1ZXVlLmMsCgkgIHNlcnZlci9yZXF1ZXN0LmMsIHNlcnZlci9zb2NrLmMsIHNlcnZlci90cmFjZS5jLCBzZXJ2ZXIvdXNlci5jLAoJICB0b29scy9tYWtlX3JlcXVlc3RzOgoJQ29udmVydGVkIHRoZSBzZXJ2ZXIgdG8gLURTVFJJQ1QuCgoJKiBkb2N1bWVudGF0aW9uL2NvbmZpZ3VyaW5nLnNnbWwsIGRvY3VtZW50YXRpb24vcnVubmluZy5zZ21sOgoJQmlsbCBNZWRsYW5kIDxCaWxsLk1lZGxhbmRAYWNjcGFjLmNvbT4KCUFkZCBkb2N1bWVudGF0aW9uIG9uIGhvdyB0byBtb2RpZnkgd2hhdCAtLWRlYnVnbXNnICtyZWxheSByZXBvcnRzLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJV2hlbiBkZWxldGluZyBhbiBpdGVtLCByZW1vdmUgc2VsZWN0aW9uLCBkb24ndCBhZGQgaXQhCgoJKiBpbmNsdWRlL3VzZXIuaCwgd2luZG93cy9ob29rLmM6CglDaGFuZ2VkIHRoZSBVU0VSX0hFQVBfKiBtYWNyb3MgdG8gdXNlIEhBTkRMRXMgaW5zdGVhZCBvZiBIQU5ETEUxNnMuCgoJKiBjb250cm9scy9tZW51LmMsIGRsbHMvdXNlci9kZGUvY2xpZW50LmMsIGRsbHMvdXNlci90ZXh0LmMsCgkgIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3Mvd2lucHJvYy5jOgoJTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5kZT4KCVNpbGVuY2Ugc29tZSB3YXJuaW5ncyBkdWUgdG8gY2FzdHMgYmV0d2VlbiBwb2ludGVyIGFuZCBpbnRlZ2VycyBvZgoJZGlmZmVyZW50IHNpemUuCgoJKiBkbGxzL3VzZXIvZGRlL21pc2MuYzogTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5kZT4KCUZpeCB3YXJuaW5ncyB3aGVuIGNvbnZlcnRpbmcgYmV0d2VlbiBhbiBBVE9NIGFuZCBhIEhTWi4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCU1vcmUgdHJhY2VzIHRvIGhlbHAgdXMgbWFrZSBzZW5zZSBvZiB0aGUgb3V0cHV0LgoJRmFzdGVyLCBjbGVhbmVyIHJhbmdlc197YWRkLGRlbH0uCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglGaXggcmFuZ2VzIGluc2VydGlvbiBidWcgKHNwZWNpZnkgRFBBU19TT1JURUQgd2hlbiBzZWFyY2hpbmcpLgoJQWRkIGEgbG90IG9mIGFzc2VydC1lZCBjb25zaXN0ZW5jeSBjaGVja3MuCglBZGQgYnVuY2ggb2YgdHJhY2UgbWVzc2FnZXMuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglJbnNwZWN0IHN0eWxlIGJpdHMgaW5kZXBlbmRlbnRseSBvbiBzdHlsZSBjaGFuZ2UuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglSZXdyaXRlIFN0eWxlQ2hhbmdlZCBwcm9jZWR1cmUKCSAgbyBzb21lIGJ1Z3MgaGF2ZSBiZWVuIGZpeGVkCgkgIG8gY2xlYW5lciwgc2ltcGxlciBjb2RlCglGaXggc29tZSBjb3JuZXIgY2FzZSwgaWNvbiBzaXplIGNvbXB1dGF0aW9uIGJ1Z3MuCglBc3NvcnRlZCBkb2NzIHVwZGF0ZXMuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglLZWVwIHRyYWNrIG9mIHBlci1jb2x1bW4gaW5mb3JtYXRpb24gaW5zaWRlIHRoZSBsaXN0dmlldy4KCUNhY2hlIGhlYWRlciByZWN0YW5nbGVzLgoJVXNlZCB0aGUgY2FjaGVkIGluZm8gaW5zdGVhZCBvZiBjYWxsaW5nIHRvIHRoZSBoZWFkZXIgZWFjaCB0aW1lLgoJVXBkYXRlIHRoZSBsaXN0dmlldyBhcyB3ZSB0cmFjayBjb2x1bW4gd2lkdGggY2hhbmdlcy4KCVVuaWZ5IGNvbHVtbiBoYW5kbGluZyBiZXR3ZWVuIHtJbnNlcnQsRGVsZXRlfUNvbHVtbiwgYW5kIHdpZHRoCgljaGFuZ2VzLgoJU2ltcGxpZnkgUmVmcmVzaFJlcG9ydCwgYnkgdXNpbmcgdGhlIG5ldyBjb2x1bW4gaW5mby4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCURvIG5vdCBxdWVyeSBpdGVtcyB0aGF0IGFyZSBqdXN0IGJlaW5nIGluc2VydGVkLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJUmVvcmdhbml6ZSB0aGluZ3MgYSBiaXQgc28gdGhhdCB3ZSBubyBsb25nZXIgbmVlZCB0aGUgJ3ZhbGlkJyBmbGFnIG9uCgllYWNoIGl0ZW0uCglTbWFsbCBjb21tZW50cyB1cGRhdGUuCgoJKiBwcm9ncmFtcy93aW5oZWxwL2hscGZpbGUuYywgcHJvZ3JhbXMvd2luaGVscC93aW5oZWxwLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIHN1cHBvcnQgZm9yIEJUcmVlcyBpbiBmaWxlIGhlYWRlciByZWFkaW5nLgoJRml4ZWQgYm9ndXMgcGFsZXR0ZSBsZW5ndGggY29tcHV0YXRpb24gd2hpbGUgcmVhZGluZyBiaXRtYXAuCglGaXhlZCByZW5kZXJpbmcgd2hpbGUgc3RhcnRpbmcgYSBwYWdlIHdpdGggYSBiaXRtYXAuCgoJKiBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2F2aWZpbDMyL01ha2VmaWxlLmluLAoJICBkbGxzL2F2aWZpbDMyL3dhdmZpbGUuYzoKCU1pY2hhZWwgR/xubmV3aWcgPE1pY2hhZWxHdWVubmV3aWdAZ214LmRlPgoJLSBGaXhlZCBsb2FkaW5nIG9mIHdhdmUgZmlsZXMuCgktIENvcnJlY3RlZCBBVklGSUxFSU5GT1cgc3RydWN0dXJlIHVwZGF0ZXMuCgktIEltcGxlbWVudGVkIHNhdmluZyBvZiB3YXZlIGZpbGVzLgoKCSogZGxscy9hdmlmaWwzMi9hdmlmaWxlLmM6IE1pY2hhZWwgR/xubmV3aWcgPE1pY2hhZWxHdWVubmV3aWdAZ214LmRlPgoJRml4ZWQgdmVyeSBzbG93IGxvYWRpbmcgb2YgaW5kZXguCgoyMDAyLTEwLTE4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9hdmljYXAzMi9hdmljYXAzMl9tYWluLmMsIGRsbHMvYXZpZmlsMzIvYXBpLmMsCgkgIGRsbHMvYXZpZmlsMzIvZXh0cmFjaHVuay5jLCBkbGxzL2F2aWZpbDMyL2ZhY3RvcnkuYywKCSAgZGxscy9jb21jYXQvY29tY2F0X21haW4uYywgZGxscy9jcnRkbGwvY3J0ZGxsX21haW4uYywKCSAgZGxscy9kM2Q4L2RpcmVjdHguYywgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLAoJICBkbGxzL2RkcmF3L2RkcmF3L21haW4uYywgZGxscy9kZHJhdy9kc3VyZmFjZS9kaWIuYywKCSAgZGxscy9kZHJhdy9kc3VyZmFjZS9tYWluLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UvdXNlci5jLAoJICBkbGxzL2RpbnB1dC9kZXZpY2UuYywgZGxscy9kc291bmQvbWl4ZXIuYywKCSAgZGxscy9tc2ltZzMyL21zaW1nMzJfbWFpbi5jLCBkbGxzL21zaXN5cy9tc2lzeXMuYywKCSAgZGxscy9uZXRhcGkzMi9uZXRhcGkzMi5jLCBkbGxzL29kYmMzMi9wcm94eW9kYmMuYywKCSAgZGxscy9vbGVjbGkvb2xlY2xpX21haW4uYywgZGxscy9vbGVkbGcvb2xlZGxnX21haW4uYywKCSAgZGxscy9vbGVzdnIvb2xlc3ZyX21haW4uYywgZGxscy9vcGVuZ2wzMi93Z2wuYywKCSAgZGxscy9yYXNhcGkzMi9yYXNhcGkuYywgZGxscy9yaWNoZWRpdC9yaWNoZWRpdC5jLAoJICBkbGxzL3JwY3J0NC9jcHNmLmMsIGRsbHMvcnBjcnQ0L3JwY19zZXJ2ZXIuYywKCSAgZGxscy9zZXJpYWx1aS9jb25mZGxnLmMsIGRsbHMvc2V0dXBhcGkvZGV2aW5zdC5jLAoJICBkbGxzL3NldHVwYXBpL2luc3RhbGwuYywgZGxscy9zZXR1cGFwaS9zZXR1cHhfbWFpbi5jLAoJICBkbGxzL3NubXBhcGkvbWFpbi5jLCBkbGxzL3R3YWluL3R3YWluMzJfbWFpbi5jLAoJICBkbGxzL3VybG1vbi91cmxtb25fbWFpbi5jLCBkbGxzL3dpbjMycy93MzJzeXMuYywKCSAgZGxscy93aW5hc3BpL3dpbmFzcGkzMi5jLCBkbGxzL3dpbmVkb3MvZG9zdm0uYywKCSAgZGxscy93aW5lZG9zL21vZHVsZS5jLCBkbGxzL3dpbmVwcy9iaXRtYXAuYywgZGxscy93aW5lcHMvYnJ1c2guYywKCSAgZGxscy93aW5lcHMvY2xpcHBpbmcuYywgZGxscy93aW5lcHMvZXNjYXBlLmMsIGRsbHMvd2luZXBzL2ZvbnQuYywKCSAgZGxscy93aW5lcHMvaW5pdC5jLCBkbGxzL3dpbmVwcy9wZW4uYywgZGxscy93aW5pbmV0L2ludGVybmV0LmMsCgkgIGRsbHMvd2lubW0vbWNpYXZpL2luZm8uYywgZGxscy93aW5tbS9tY2lhdmkvbWNpYXZpLmMsCgkgIGRsbHMvd2lubW0vbWNpYXZpL3duZC5jLCBkbGxzL3dpbm1tL21jaXNlcS9tY2ltaWRpLmMsCgkgIGRsbHMvd2lubW0vbWNpd2F2ZS9tY2l3YXZlLmMsIGRsbHMvd2lubW0vd2luZW9zcy9taWRpLmMsCgkgIGRsbHMvd2ludHJ1c3Qvd2ludHJ1c3RfbWFpbi5jOgoJRml4ZWQgd2FybmluZ3MgY2F1c2VkIGJ5IGNvbnZlcnNpb24gdG8gLURTVFJJQ1QuCgoJKiBkbGxzL2FkdmFwaTMyL01ha2VmaWxlLmluLCBkbGxzL2NvbWN0bDMyL01ha2VmaWxlLmluLAoJICBkbGxzL2NvbW1kbGcvTWFrZWZpbGUuaW4sIGRsbHMvZHBsYXl4L01ha2VmaWxlLmluLAoJICBkbGxzL2dkaS9NYWtlZmlsZS5pbiwgZGxscy9pbWFnZWhscC9NYWtlZmlsZS5pbiwKCSAgZGxscy9pbW0zMi9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sCgkgIGRsbHMvbHpleHBhbmQvTWFrZWZpbGUuaW4sIGRsbHMvbXByL01ha2VmaWxlLmluLAoJICBkbGxzL21zYWNtL01ha2VmaWxlLmluLCBkbGxzL21zdmNydC9NYWtlZmlsZS5pbiwKCSAgZGxscy9tc3ZpZGVvL01ha2VmaWxlLmluLCBkbGxzL250ZGxsL01ha2VmaWxlLmluLAoJICBkbGxzL29sZTMyL01ha2VmaWxlLmluLCBkbGxzL29sZWF1dDMyL01ha2VmaWxlLmluLAoJICBkbGxzL3BzYXBpL01ha2VmaWxlLmluLCBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvc2hsd2FwaS9NYWtlZmlsZS5pbiwgZGxscy90YXBpMzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvdHR5ZHJ2L01ha2VmaWxlLmluLCBkbGxzL3VzZXIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvd2lubW0vTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vd2F2ZW1hcC9NYWtlZmlsZS5pbiwKCSAgZGxscy93aW5zb2NrL01ha2VmaWxlLmluLCBkbGxzL3dpbnNwb29sL01ha2VmaWxlLmluLAoJICBkbGxzL3gxMWRydi9NYWtlZmlsZS5pbiwgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLAoJICBpbmNsdWRlL3dpbm50LmgsIHNlcnZlci9NYWtlZmlsZS5pbiwgc2VydmVyL3Byb3RvY29sLmRlZjoKCUFkZGVkIHN1cHBvcnQgZm9yIGJ1aWxkaW5nIGNlcnRhaW4gZGxscyB3aXRoIC1EU1RSSUNULgoJQWRkZWQgLURXSU5FX05PX1NUUklDVCBmbGFnIHRvIGRsbHMgdGhhdCBkb24ndCBzdXBwb3J0IFNUUklDVCB5ZXQuCgoJKiBkbGxzL2tlcm5lbC93b3d0aHVuay5jLCBpbmNsdWRlL3dvd250MzIuaDoKCUFkZGVkIEZJWE1FcyBmb3IgbWV0YWZpbGUgYW5kIGZ1bGxod25kIGhhbmRsZSBjb252ZXJzaW9ucyB0aGF0IGFyZW4ndAoJc3VwcG9ydGVkIHByb3Blcmx5IHlldC4KCgkqIGRsbHMvZ2RpL2dkaTE2LmMsIG9iamVjdHMvZ2Rpb2JqLmMsIG9iamVjdHMvbGluZWRkYS5jOgoJTW92ZWQgRW51bU9iamVjdHMxNiwgTGluZUREQTE2IGFuZCBhc3NvY2lhdGVkIGdsdWUgY29kZSB0byBnZGkxNi5jLgoKCSogZGxscy9nZGkvTWFrZWZpbGUuaW4sIGRsbHMvZ2RpL2dkaTE2LmMsIGRsbHMvZ2RpL2dkaTMyLnNwZWMsCgkgIGRsbHMvb2xlMzIvb2xlMi5jLCBvYmplY3RzL2NsaXBwaW5nLmMsIG9iamVjdHMvZm9udC5jOgoJU3BsaXQgb3V0IHNvbWUgMTYtYml0IEdESSBjb2RlLgoKCSogZGxscy91c2VyL3VzZXIxNi5jLCBkbGxzL3VzZXIvdXNlcl9tYWluLmMsIGluY2x1ZGUvdXNlci5oLAoJICBvYmplY3RzL3BhbGV0dGUuYywgd2luZG93cy9wYWludGluZy5jOgoJU3RvcmUgdGhlIG9yaWdpbmFsIEdESSBwYWxldHRlIGZ1bmN0aW9ucyBpbiBwZm5TZWxlY3RQYWxldHRlIGFuZAoJcGZuUmVhbGl6ZVBhbGV0dGUgc28gdGhhdCBVU0VSIGRvZXNuJ3QgaGF2ZSB0byBpbXBvcnQgdGhlbS4KCgkqIGRsbHMvcnBjcnQ0L25kcl9zdHVibGVzcy5jLCBkbGxzL3JwY3J0NC9ycGNfYmluZGluZy5jLAoJICBkbGxzL3JwY3J0NC9ycGNfc2VydmVyLmMsIGRsbHMvcnBjcnQ0L3JwY3J0NC5zcGVjLCBpbmNsdWRlL3JwY2RjZS5oOgoJR3JlZyBUdXJuZXIgPGdtdHVybmVyMDA3QGFtZXJpdGVjaC5uZXQ+CgktICh0cnkgdG8pIGltcGxlbWVudCBScGNNZ210V2FpdFNlcnZlckxpc3RlbgoJLSByZW1vdmUgZHVwbGljYXRlIFJwY1NlcnZlckxpc3RlbiBkZWNsYXJhdGlvbiBpbiBycGNkY2UuaAoJLSBzb21lIFRSQUNFcwoKCSogZGxscy9nZGkvZ2RpMTYuYywgb2JqZWN0cy9tZXRhZmlsZS5jOgoJQ29udmVydGVkIFBsYXlNZXRhRmlsZVJlY29yZCBhbmQgcmVsYXRlZCBmdW5jdGlvbnMgdG8gMzItYml0LgoKCSogZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZGxscy9rZXJuZWwvd293dGh1bmsuYywgaWYxNjMyL3JlbGF5LmMsCgkgIGluY2x1ZGUvd2luZS93aW5iYXNlMTYuaCwgc2NoZWR1bGVyL3RocmVhZC5jLAoJICB0b29scy93aW5lYnVpbGQvcmVsYXkuYywgdG9vbHMvd2luZWJ1aWxkL3NwZWMxNi5jOgoJTWVyZ2VkIHdpbmVfY2FsbF90b18xNl9sb25nIGFuZCB3aW5lX2NhbGxfdG9fMTZfc2hvcnQgaW50byBhIHNpbmdsZQoJZnVuY3Rpb24uCgoJKiBpbmNsdWRlL3dpbmUvcG9ydC5oLCBsaWJyYXJ5L3BvcnQuYywgbG9hZGVyL25lL3Jlc291cmNlLmM6CglBZGRlZCB3aW5lX21lbWNweV91bmFsaWduZWQgZnVuY3Rpb24gdG8gYXZvaWQgZ2NjIG1lbWNweQoJb3B0aW1pemF0aW9ucy4KCgkqIGluY2x1ZGUvdmZ3Lmg6IE1pY2hhZWwgR/xubmV3aWcgPE1pY2hhZWxHdWVubmV3aWdAZ214LmRlPgoJLSBBZGQgRklORF8qIGNvbnN0YW50cy4KCS0gQWRkIEFWSVNBVkVDQUxMQkFDSyBkZWNsYXJhdGlvbi4KCS0gQWRkIGRlY2xhcmF0aW9uIGZvciBzb21lIEFWSSBmdW5jdGlvbnMuCgktIEFkZCBzb21lIEFWSSBtYWNyb3MuCgoJKiBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2F2aWZpbDMyLy5jdnNpZ25vcmUsCgkgIGRsbHMvYXZpZmlsMzIvTWFrZWZpbGUuaW4sIGRsbHMvYXZpZmlsMzIvYXBpLmMsCgkgIGRsbHMvYXZpZmlsMzIvYXZpZmlsMzIuc3BlYywgZGxscy9hdmlmaWwzMi9hdmlmaWxlLmMsCgkgIGRsbHMvYXZpZmlsMzIvYXZpZmlsZV9EZS5yYywgZGxscy9hdmlmaWwzMi9hdmlmaWxlX0VuLnJjLAoJICBkbGxzL2F2aWZpbDMyL2F2aWZpbGVfcHJpdmF0ZS5oLCBkbGxzL2F2aWZpbDMyL2V4dHJhY2h1bmsuYywKCSAgZGxscy9hdmlmaWwzMi9leHRyYWNodW5rLmgsIGRsbHMvYXZpZmlsMzIvZmFjdG9yeS5jLAoJICBkbGxzL2F2aWZpbDMyL2dldGZyYW1lLmMsIGRsbHMvYXZpZmlsMzIvcnNyYy5yYywKCSAgZGxscy9hdmlmaWwzMi93YXZmaWxlLmMsIHdpbmVkZWZhdWx0LnJlZzoKCU1pY2hhZWwgR/xubmV3aWcgPE1pY2hhZWxHdWVubmV3aWdAZ214LmRlPgoJLSBBZGQgd2F2ZWZpbGUgaGFuZGxlci4KCS0gQWRkIGltcGxlbWVudGF0aW9uIGZvciBJR2V0RnJhbWUuCgktIEltcGxlbWVudGVkIGxvYWRpbmcgYW5kIHdyaXRpbmcgb2YgQVZJcy4KCS0gQWRkIHNvbWUgbW9yZSBzdHVicyBmb3Igc29tZSBBUEkgZnVuY3Rpb25zLgoJLSBBZGQgcmVzb3VyY2VzIHRvIGF2aWZpbDMyLmRsbC4KCS0gSW1wbGVtZW50ZWQgQVZJU2F2ZU9wdGlvbnNGcmVlLgoJLSBEZWNsYXJlZCBJSURfKiBhcyBleHRlcm4gaW4gYXZpZmlsMzIuc3BlYyAoYXZvaWRzIGxpbmtlciBwcm9ibGVtKS4KCgkqIHByb2dyYW1zL2F2aXRvb2xzL2F2aWluZm8uYzoKCU1pY2hhZWwgR/xubmV3aWcgPE1pY2hhZWxHdWVubmV3aWdAZ214LmRlPgoJRml4ZWQgbWVtb3J5IGxlYWsgKHJlbGVhc2UgQVZJIHN0cmVhbSkuCgoJKiBkbGxzL2tlcm5lbC9jb21tLmM6IFN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJQnVpbGRDb21tRENCQW5kVGltZW91dHNBOiBNYWRlIHRoZSBhcmd1bWVudCBwYXJzaW5nIGNhc2UgaW5zZW5zaXRpdmUuCgoJKiB0b29scy93aW5hcGkvbXN2Y21ha2VyOiBQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gQmV0dGVyIC5kc3AgZmlsZSBnZW5lcmF0aW9uIGZvciAuZXhlIG91dHB1dHMKCS0gQWRkZWQgZ2VuZXJhdGlvbiBvZiB3aW5ldGVzdC5kc3cgZm9yIGJ1aWxkaW5nIHdpbmUgdGVzdHMgdW5kZXIKCSAgV2luZG93cyAoY3VycmVudGx5IHZlcnkga2x1ZGd5LCBidXQgaXQgd29ya3MgdG8gc29tZSBleHRlbnQpLgoKCSogcHJvZ3JhbXMvd2luZWZpbGUvd2luZWZpbGUuYzogTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCVJlbW92ZWQgd2FybmluZyAiU2V0V2luZG93VGV4dCgwLCAuLi4pIiB3aGVuIG9wZW5pbmcgbmV3IHdpbmRvd3MuCgoJKiBkbGxzL2NvbWN0bDMyL2hlYWRlci5jOiBNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJcHN6VGV4dCBpcyBzdG9yZWQgYXMgVW5pY29kZSwgc28gY2FsbCBEcmF3VGV4dFcoKSBpbnN0ZWFkIG9mCglEcmF3VGV4dEEoKS4KCjIwMDItMTAtMTcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglJbnN0cnVtZW50IFNldEl0ZW1UIHRvIGNoYW5nZSBvbmx5IF9vbmVfIGl0ZW0gYXQgYSB0aW1lLiBUaGF0IGlzLCBpZgoJd2UgaGF2ZSB0byBjaGFuZ2UgZm9jdXMsIHdlIGNhbGwgaXQgcmVjdXJzaXZlbHkgdG8gZmlyc3QgcmVtb3ZlIHRoZQoJZm9jdXMgZnJvbSB0aGUgaXRlbSB0aGF0IGhhcyBpdC4gVGhpcyBhbGxvd3Mgc2ltcGxlciwgYW5kIG1vcmUgY29ycmVjdAoJaW52YWxpZGF0aW9uIGhhbmRsaW5nLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJVW5pZnkgc2V0X3tvd25lcixtYWlufV9pdGVtIGZ1bmN0aW9ucy4KCUZpeCB7b2xkLG5ld31zdGF0ZSBhbmQgbFBhcmFtIHJlcG9ydGluZyBpbiBMVk5fSVRFTUNIQU5He0lORyxFRH0uCglGaXggc2FuaXR5IGNoZWNrIGNvbmRpdGlvbnMgZm9yIExWU19PV05FUkRBVEEuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglNb3JlLCBiZXR0ZXIgdHJhY2luZyB0byBoZWxwIG5haWwgZG93biBzb21lIGNyYXNoZXMuCglGaXggdHlwbyBpbiBHZXRJdGVtVCAoZm91bmQsIGFuZCBmaXhlZCBieSBIdXcgRGF2aWVzKS4KCUV4aXQgcmlnaHQgYXdheSBmcm9tIEdldEl0ZW1UIGlmIG5vdGhpbmcgaXMgYXNrZWQgKG1hc2sgPT0gMCkuCglBc3NvcnRlZCBjb2RlIGNsZWFudXBzLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRGVhbCB3aXRoIHNwYXJzZWx5IHBvcHVsYXRlZCBsaXN0dmlld3MuCglDcmFzaCBvbiBpbnRlcm5hbCBjb3JydXB0aW9uLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQWRkIGFiaWxpdHkgdG8gY3JlYXRlIGFuIGl0ZXJhdG9yIG92ZXIgYSByYW5nZSBsaXN0LgoJRml4IG1lbW9yeSBsZWFrIHdoZW4gZGVzdHJveWluZyByYW5nZXMuCglBZGQgZnVuY3Rpb24gdGhhdCB3aWxsIHRvIGEgJ2RlZXAnIGNsb25lIG9mIGEgcmFuZ2UgbGlzdC4KCUFkZCBmdW5jdGlvbiB0aGF0IHdpbGwgc3VidHJhY3QgYSByYW5nZSBsaXN0IGZyb20gYW5vdGhlci4KCURvIG5vdCBjcmFzaCBvbiBOVUxMIHJhbmdlcyAoc2ltaWxhciBpbiBzcGlyaXQgdG8gSERQQXMpLgoJRmFuY3kgZGVzZWxlY3Rpb24gcm91dGluZXMgdXNlcyB0aGUgYWJvdmUgaW5mcmFzdHJ1Y3R1cmUgdG8gZGVzZWxlY3QKCXRoZSBtaW5pbXVtIHBvc3NpYmxlLgoJTW9kaWZ5IFNldEdyb3VwU2VsZWN0aW9uIHRvIHRha2UgYWR2YW50YWdlIG9mIGFsbCB0aGlzIG5ldwoJaW5mcmFzdHJ1Y3R1cmUsIHRvIGF2b2lkIGZsaWNrZXIgb24gc2VsZWN0aW9uIGV4dGVuc2lvbi4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUNoYW5nZSB0aGUgZGVmaW5pdGlvbiBvZiByYW5nZXMgdG8gZXhjbHVkZSB0aGUgdXBwZXIgYm91bmQuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglIYW5kbGUgcmFuZ2UgdHJhY2luZyBpbiBhIGNvbnNpc3RlbnQgZmFzaGlvbi4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVJlbW92ZSBkYXRlZCBjb21tZW50cy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUJldHRlciBlbmNhcHN1bGF0aW9uIG9mIHRoZSByYW5nZXMgY29uY2VwdC4KCgkqIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGRsbHMva2VybmVsL3dvd3RodW5rLmMsCgkgIGRsbHMvdXNlci9tc2cxNi5jLCBkbGxzL3VzZXIvd25kMTYuYywgZGxscy93aW5lZG9zL21vZHVsZS5jLAoJICB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy93aW5wcm9jLmM6CglVc2UgdGhlIFdPV0hhbmRsZSBmdW5jdGlvbnMgdG8gY29udmVydCBiZXR3ZWVuIHRhc2sgaGFuZGxlIGFuZCB0aHJlYWQKCWlkLiBTdG9wIGV4cG9ydGluZyBUQVNLX0dldFB0ciBhbmQgVEhSRUFEX0lkVG9URUIgZnJvbSBrZXJuZWwuCgoJKiBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJQnVpbGQgYSBkZWZhdWx0IGNvbW1hbmQtbGluZSBpZiB0aGUgb25lIHdlIHJlY2VpdmVkIGlzIGFuIGVtcHR5CglzdHJpbmcuCgoJKiB3aW5kb3dzL3dpbi5jOiBGaXhlZCB0eXBvIGluIEVudW1UaHJlYWRXaW5kb3dzLgoKCSogZGxscy9ycGNydDQvY3Byb3h5LmM6IEZpeGVkIGNvbXBpbGF0aW9uIGZvciBub24taTM4Ni4KCgkqIGNvbnRyb2xzL2xpc3Rib3guYywgY29udHJvbHMvbWVudS5jLCBjb250cm9scy9zdGF0aWMuYywKCSAgZGxscy9jb21tZGxnL2NkbGcuaCwgZGxscy9nZGkvZ2RpMTYuYywgZGxscy9nZGkvd2luMTZkcnYvcHJ0ZHJ2LmMsCgkgIGRsbHMvbXN2aWRlby9tc3ZpZGVvMTYuYywgZGxscy9tc3ZpZGVvL21zdmlkZW9fbWFpbi5jLAoJICBkbGxzL21zdmlkZW8vdmZ3MTYuaCwgZGxscy9vbGUzMi9vbGUyLmMsCgkgIGRsbHMvc2V0dXBhcGkvc2V0dXB4X21haW4uYywgZGxscy9zaGVsbDMyL3NoZWxsLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwgZGxscy9zaGVsbDMyL3NobGV4ZWMuYywKCSAgZGxscy91c2VyL21zZzE2LmMsIGRsbHMvdXNlci9wcm9wZXJ0eS5jLCBkbGxzL3VzZXIvcmVzb3VyY2UuYywKCSAgZGxscy91c2VyL3VzZXIxNi5jLCBkbGxzL3VzZXIvd25kMTYuYywgZGxscy93aW5lcHMvZHJpdmVyLmMsCgkgIGRsbHMvd2lubW0vbWNpYW5pbS9tY2lhbmltLmMsIGRsbHMvd2lubW0vbWNpYXZpL3ByaXZhdGVfbWNpYXZpLmgsCgkgIGRsbHMvd2lubW0vbWNpY2RhL21jaWNkYS5jLCBkbGxzL3dpbm1tL21jaXNlcS9tY2ltaWRpLmMsCgkgIGRsbHMvd2lubW0vbWNpd2F2ZS9tY2l3YXZlLmMsIGRsbHMvd2lubW0vd2luZW1tLmgsCgkgIGRsbHMvd2luc29jay9hc3luYy5jLCBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGluY2x1ZGUvdXNlci5oLAoJICBpbmNsdWRlL3dpbi5oLCBpbmNsdWRlL3dvd250MzIuaCwgaW5jbHVkZS93aW5lL3dpbnNvY2sxNi5oLAoJICB3aW5kb3dzL2NsYXNzLmMsIHdpbmRvd3MvY3Vyc29yaWNvbi5jLCB3aW5kb3dzL2RpYWxvZy5jLAoJICB3aW5kb3dzL2hvb2suYywgd2luZG93cy9tZGkuYywgd2luZG93cy9zcHkuYywgd2luZG93cy9zdHJ1Y3QzMi5jLAoJICB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3dpbmhlbHAuYywgd2luZG93cy93aW5wcm9jLmM6CglGaXhlZCB3b3dudDMyLmggdG8gbWFrZSBpdCB1c2FibGUgZnJvbSBpbnNpZGUgV2luZSwgYW5kIHVzZSBpdCB0bwoJYXZvaWQgc29tZSBkdXBsaWNhdGlvbiBvZiB0aGUgaGFuZGxlIGNvbnZlcnNpb24gbWFjcm9zLgoKCSogZGxscy91c2VyL01ha2VmaWxlLmluLCBkbGxzL3VzZXIvY2FyZXQuYywgZGxscy91c2VyL3VzZXIzMi5zcGVjLAoJICBkbGxzL3VzZXIvd25kMTYuYywgZGxscy94MTFkcnYvd2lucG9zLmMsIGluY2x1ZGUvd2luLmgsCgkgIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3F1ZXVlLmMsCgkgIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci90cmFjZS5jLCB3aW5kb3dzL2NhcmV0LmMsIHdpbmRvd3Mvc2Nyb2xsLmMsCgkgIHdpbmRvd3Mvd2luLmM6CglSZXdyb3RlIGNhcmV0IGltcGxlbWVudGF0aW9uIHRvIHN0b3JlIHRoZSBpbmZvcm1hdGlvbiBpbiB0aGUgc2VydmVyLgoKCSogZ3JhcGhpY3MveDExZHJ2L3hmb250LmM6IE1hbHRlIFN0YXJvc3RpayA8bWFsdGVAa2RlLm9yZz4KCUFkZGVkIHByb2dyZXNzIG1lc3NhZ2VzIHdoaWxlIGJ1aWxkaW5nIGZvbnQgbWV0cmljcy4KCgkqIGRsbHMvZDNkOC9kZXZpY2UuYzogSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCS0gRG9udCBzZXQgbGlnaHRpbmcgZHVyaW5nIGRyYXcgcHJpbWl0aXZlLCByZWx5IG9uIHRoZSByZW5kZXIgc3RhdGUuCgktIFNtYWxsIGZpeCBmb3IgYWxwaGEgdGVzdGluZy4KCS0gQWRkIHN1cHBvcnQgdG8gZW5hYmxlL2Rpc2FibGUgY2xpcHBpbmcgYXMgYSB3aG9sZS4KCS0gQWxsb3cgRDNEUlNfVEVYVFVSRUZBQ1RPUiB0byBiZSBjaGFuZ2VkIG9uY2UgdGV4dHVyZSBzdGFnZSBhcmcgc2V0CgkgIHVwLgoJLSBEM0RUT1BfRElTQUJMRSBpbml0aWFsIGltcGxlbWVudGF0aW9uLgoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jOiBDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglJbXBsZW1lbnQgT3BlbkdMIG92ZXJyaWRpbmcgb2Ygc3VyZmFjZSdzIGZsaXAgbWV0aG9kLgoJUmVtb3ZlIGJyb2tlbiBjb2RlLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJTm90aWZpY2F0aW9uIGNvZGUgY2xlYW51cCwgbW9yZSB0cmFjZXMsIGV0Yy4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaDogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUFkZC91cGRhdGUgdGhlIGxpc3R2aWV3IHN0cnVjdHVyZXMgdG8gdmVyc2lvbiA2LjAuCgoJKiBkbGxzL3dpbm1tL3dpbmVhcnRzL2F1ZGlvLmM6IE1hbHRlIFN0YXJvc3RpayA8bWFsdGVAa2RlLm9yZz4KCUluaXRpYWxpemUgd2luZWFydHMncyB2b2x1bWUgbGV2ZWwgdG8gZnVsbCwgc28gYXBwbGljYXRpb25zIHRoYXQgZG9uJ3QKCXNldCB0aGUgdm9sdW1lIGFyZSBhdWRpYmxlLgoKCSogZGxscy9jb21jdGwzMi9jb21tY3RybC5jOiBKZXJyeSBKZW5raW5zIDxKZXJyeV9KX0plbmtpbnNAaG90bWFpbC5jb20+CglBZGRlZCBtaXNzaW5nIFJlbW92ZVByb3AgY2FsbHMuCgoJKiBwcm9ncmFtcy93aW5lZmlsZS93aW5lZmlsZS5jOiBNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJQ29ycmVjdCBpbml0aWFsIGRpc3BsYXkgb2YgZmlsZSBsaXN0aW5nLgoKMjAwMi0xMC0xNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVdlIG5lZWQgdG8gcHJvdmlkZSBmb2N1cyBpbmZvIGFsd2F5cyBpbiBJQ09OIG1vZGUgKHNwb3R0ZWQgYnkgSHV3CglEYXZpZXMpLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglEdXBsaWNhdGUgc2VsZWN0ZWQgaXRlbXMgbGlzdCBpbiBMSVNUVklFV19SZW1vdmVBbGxTZWxlY3Rpb25zIHRvCglwcmV2ZW50IGluZmluaXRlIGxvb3BzLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJUmVtZW1iZXIgdGhlIGdsb2JhbCBjb2xvcnMgaW4gY3VzdG9tIGRyYXcgbW9kZS4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUNvbXB1dGUgb25seSB0aGUgb2xkIHN0YXRlIHRoYXQgd2UncmUgZ29ubmEgbG9vayBhdC4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUluc3RydW1lbnQgU2V0SXRlbVQgdG8gYXZvaWQgcmVwYWludGluZyBpZiBub3RoaW5nIGNoYW5nZWQuCglUZWFjaCBSZW1vdmVBbGxTZWxlY3Rpb25zIHRvIHNraXAgYW4gaXRlbSwgc28gd2UgY2FuIGVsaW1pbmF0ZSB0aGUKCWZsaWNrZXIgd2hlbiB3ZSBjbGljayBvbiBhIHNlbGVjdGVkIGl0ZW0uCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglGaXggYnVnIGluIGVkaXQgbGFiZWwgd2hlbiBzZW5kaW5nIHRoZSB0ZXh0IHRvIHRoZSBhcHAuCglDbGVhbnVwIHRoZSBoYW5kbGluZyBvZiBuRWRpdExhYmVsSXRlbS4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUVkaXQgbGFiZWwgY2xlYW51cC4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUZpeCBidWcgaW4gcmFuZ2VzX3NoaWZ0IHdoaWNoIHdhcyBjb3JydXB0aW5nIHNlbGVjdGlvbnMuCglGaXggY2xpY2sgbm90aWZpY2F0aW9uIChmb3VuZCBhbmQgZml4ZWQgYnkgQWxleGFuZHJlIEp1bGxpYXJkKS4KCUZpeCBidWcgaW4gc2V0dGluZyBpdGVtJ3Mgc3RhdGUgKHNvbWUgc2VsZWN0aW9uIGNoYW5nZXMgd2VyZSBsb3N0KS4KCVNpbXBsaWZ5IHNlbGVjdGlvbiBjb2RlIHN1YnN0YW50aWFsbHkuCglBZGQgYSBsb3Qgb2YgZGVidWcgdHJhY2luZy4KCgkqIGRvY3VtZW50YXRpb24vY29uZmlndXJpbmcuc2dtbDogQmlsbCBNZWRsYW5kIDxtZWRiaTAxQGFjY3BhYy5jb20+CglBZGQgYSBzZWN0aW9uIG9uIHVzaW5nIE9EQkMuCgoJKiBkbGxzL21zdmNydC9leGNlcHQuYywgZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWM6CglJbXBsZW1lbnRlZCBfc2VoX2xvbmdqbXBfdW53aW5kLgoKCSogcHJvZ3JhbXMvY21kbGd0c3QvY21kbGd0c3QuYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUZpeCB0aGUgb2ZuIGZsYWdzIHNldHVwLgoKCSogZGxscy9kZHJhdy9kM2RfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L2QzZGRldmljZS9tYWluLmMsCgkgIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywgZGxscy9kZHJhdy9kM2R0ZXh0dXJlLmM6CglDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglBc3NvY2lhdGUgdGV4dHVyZSB0byB0aGUgZGV2aWNlIHdoZW4gR2V0SGFuZGxlIGlzIGNhbGxlZCBhbmQgcGVyZm9ybQoJdGhlIGFwcHJvcHJpYXRlIEFkZFJlZi9SZWxlYXNlLgoJRml4IDNfM18yIHBpeGVsIGZvcm1hdC4KCU1vdmUgc29tZSBFTlRFUl9HTCgpIGNhbGxzIHRvIHRoZSByaWdodCBwbGFjZS4KCUZpeCBzb21lIEZJWE1FL1RSQUNFIGNhbGxzLgoKCSogZGxscy9jb21jdGwzMi9jb21ib2V4LmMsIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmMsCgkgIGRsbHMvY29tY3RsMzIvaXBhZGRyZXNzLmMsIGRsbHMvY29tY3RsMzIvcHJvZ3Jlc3MuYywKCSAgZGxscy9jb21jdGwzMi9zdGF0dXMuYywgZGxscy9jb21jdGwzMi90cmFja2Jhci5jLAoJICBkbGxzL2NvbWN0bDMyL3VwZG93bi5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUFkZCBjb21tZW50IG9uIHdoYXQgaXMga25vd24gYWJvdXQgdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIGNvbnRyb2xzCglyZWxhdGl2ZSB0byBjb21jdGwzMi5kbGwgdmVyc2lvbiA2LjAuCgoJKiBkbGxzL3JwY3J0NC9uZHJfc3R1Ymxlc3MuYywgaW5jbHVkZS9ycGNuZHIuaDoKCUdyZWcgVHVybmVyIDxnbXR1cm5lcjAwN0BhbWVyaXRlY2gubmV0PgoJVXNlIHRoZSBtc3ZjIHdheSB0byByZXR1cm4gYSBzdHJ1Y3QsIGZpeGluZyB3aWVyZCBwcm9ibGVtcy4KCgkqIHByb2dyYW1zL3dpbmVmaWxlL3dpbmVmaWxlLmM6IE1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CglJbXBsZW1lbnRlZCBwcm9ncmFtIGxhdW5jaGluZyBieSBkb3VibGUgY2xpY2suCgoyMDAyLTEwLTE1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRml4IGl0ZXJhdG9yIGNyZWF0aW9uIGZvciBMVlNfTElTVCBtb2RlLgoJRG8gbm90IHVwZGF0ZSB0aGUgaW5mb1B0ci0+bkl0ZW1XaWR0aCBpbiBzZXRfbWFpbl9pdGVtLgoJQmV0dGVyIGhhbmRsaW5nIG9mIHRleHQgYmsgY29sb3VyIGluIGN1c3RvbSBkcmF3LgoJUmVuYW1lIEdldEl0ZW1MaXN0T3JpZ2luIHRvIEdldEl0ZW1PcmlnaW4uCglBIGJ1bmNoIG9mIGNvZGUgY2xlYW51cHMsIHNpbXBsaWZpY2F0aW9ucywgZXRjLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJTm8gbG9uZ2VyIGNvbXB1dGUgdGhlIGlsbC1kZWZpbmVkIGJvdW5kcyBpbiBHZXRJdGVtTWV0cmljcy4KCUZpeCBhIGJ1bmNoIG9mIGJ1ZyBpbiBzdWJpdGVtIG1ldHJpY3MgY29tcHV0YXRpb24uCglQcm9wZXJseSBpbXBsZW1lbnQgR2V0U3ViSXRlbVJlY3QgaW4gdGVybXMgb2YgR2V0SXRlbU1ldHJpY3MuCglEb2N1bWVudGF0aW9uIHVwZGF0ZXMsIGFuZCBjb2RlIGNsZWFudXBzLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJVGVhY2ggR2V0SXRlbU1ldHJpY3MgdG8gZGVhbCB3aXRoIHN1Yml0ZW1zIGluIHJlcG9ydCBtb2RlIGFzIHdlbGwuCglVbmlmeSBEcmF3eyxTdWJ9SXRlbSwgc2ltcGxpZnkgUmVmcmVzaFJlcG9ydC4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUZpeCBpdGVyYXRvciBjcmVhdGlvbiBmb3IgTFZTX0xJU1QgbW9kZS4KCVVzZSBhc3NlcnQoKSBpbnN0ZWFkIG9mIGhhbmQtbWFkZSBoYWNrLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRml4IGl0ZXJhdG9ycyB0byBwcm9wZXJseSBkZWFsIHdpdGggTFZTX3ssU01BTEx9SUNPTiBtb2Rlcy4KCVVuaWZ5IHRoZSBSZWZyZXNoe0xpc3QsSWNvbn0gZnVuY3Rpb25zLgoJU2ltcGxpZnkgSGl0VGVzdCB0byBtYWtlIGZ1bGwgdXNlIG9mIHRoZSBpdGVyYXRvcnMuCglGaXggc2VsZWN0aW9uIGJvdW5kcyBpbiBIaXRUZXN0LgoJQXZvaWQgZW1wdHkgZGVmYXVsdCB0byBzaWxlbmNlIHdhcm5pbmcgaW4gZ2NjIDMuMi4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUl0ZXJhdG9yIHVwZGF0ZXM6CgkgICBBZGQgdGhlIG5vdGlvbiBvZiBhIHNwZWNpYWwgaXRlbSB3aGljaCBzaXRzIGF0IHRoZSBzdGFydCBvZiB0aGUKCSAgIGxpc3QuCgkgICBBZGQgdGhlIGFiaWxpdHkgdG8gaXRlcmF0ZSBpbiBib3RoIGRpcmVjdGlvbnMgdGhyb3VnaCB0aGUgbGlzdC4KCSAgIERvY3VtZW50IHRoZSBpdGVyYXRvciBpbnRlcmZhY2UuCgkgICBSZW1vdmUgaXRlcmF0b3JfdmlzaWJsZWl0ZW1zLgoJICAgUmVuYW1lIGl0ZXJhdG9yX2NsaXBwZWRpdGVtcyB0byBpdGVyYXRvcl92aXNpYmxlaXRlbXMgZm9yCgkgICBjb25zaXN0ZW5jeS4KCVVzZSB0aGUgbmV3IGJpZGlyZWN0aW9uYWxpdHkgdG8gcGFpbnQgdGhlIGl0ZW1zIGluIGRlY3JlYXNpbmcgb3JkZXIuCgoJKiBkbGxzL3VzZXIvbHN0ci5jLCBkbGxzL3dpbm1tL2xvbHZsZHJ2LmMsIHdpbmRvd3MvcGFpbnRpbmcuYzoKCU1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuZGU+CglDb21waWxlIGZpeCB3aGVuIGFsbCBoYW5kbGVzIGFyZSBjb252ZXJ0ZWQgdG8gYSB2b2lkKi4KCgkqIGxvYWRlci9tb2R1bGUuYzoKCUZpeGVkIHJlZmVyZW5jZSBjb3VudCBoYW5kbGluZyB0byBzdXBwb3J0IExvYWRMaWJyYXJ5IGR1cmluZyBhIHByb2Nlc3MKCWF0dGFjaC4KCgkqIHByb2dyYW1zL3dpbmVmaWxlL3JzcmMucmMsIHByb2dyYW1zL3dpbmVmaWxlL3dpbmVmaWxlLmMsCgkgIHByb2dyYW1zL3dpbmVmaWxlL3dpbmVmaWxlLmg6CglNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJLSBGaXhlZCBidWlsZGluZyB1bnRlciBuYXRpdmUgV0lOMzIuCgktIEZpeGVkIGRpc3BsYXkgb2YgZmlsZW5hbWVzIGluIHRyZWUgcGFuZS4KCgkqIGRsbHMvbXN2Y3J0L3NjYW5mLmMsIGRsbHMvbXN2Y3J0L3NjYW5mLmg6CglHefZyZ3kgJ05vZycgSmVuZXkgPG5vZ0BzZGYubG9uZXN0YXIub3JnPgoJSW1wbGVtZW50IFsgZm9ybWF0IHNwZWNpZmllci4KCgkqIHByb2dyYW1zL3dpbmVkYmcvZ2RicHJveHkuYzoKCUdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJU2lsZW5jZSB3YXJuaW5nIGluIGhleF9mcm9tMCgpLgoKCSogbXNkb3MvZHBtaS5jOiBEYXZpZCBIYW1tZXJ0b24gPGRhdmlkQHRyYW5zZ2FtaW5nLmNvbT4KCUdldCBkZXNjcmlwdG9yIHNob3VsZCByZXR1cm4gY29ycmVjdCBzZWdtZW50IGxpbWl0LgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jOgoJU3RldmUgTHVzdGJhZGVyIDxzdGV2ZS5sdXN0YmFkZXJAcGhpbGlwcy5jb20+CglGaXggb2ZmLWJ5LW9uZSBlcnJvciBpbiBkZXRlcm1pbmluZyBudW1iZXIgb2YgYXJndW1lbnRzLgoKCSogdG9vbHMvd2luYXBpL3dpbmFwaV9leHRyYWN0LCB0b29scy93aW5hcGkvd2luYXBpX2V4dHJhY3Rfb3B0aW9ucy5wbSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMuZGF0LAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2NfcGFyc2VyLnBtOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIEZpeGVkIGJyb2tlbiB3aW5hcGlfZXh0cmFjdCBvcHRpb25zIC0te3BzZXVkby0sfXN0dWItc3RhdGlzdGljcy4KCS0gQWRkZWQgbmV3IHdpbmFwaV9leHRyYWN0IG9wdGlvbnMgLS17cHNldWRvLSx9aW1wbGVtZW50ZWQuCgoJKiBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRG8gbm90IG1lcmdlIGltYWdlIHdpdGggZ2FyYmFnZSBiYWNrZ3JvdW5kLiBCYXNlZCBvbiBhIHBhdGNoIGJ5IENhcmxvcwoJPGNsb3phbm9AYW5kYWdvLmNvbT4uCgoJKiBkbGxzL2NyeXB0MzIvY3J5cHQzMi5zcGVjLCBkbGxzL2NyeXB0MzIvbWFpbi5jOgoJQ2hyaXN0aWFuIE5ldW1haXIgPGNocmlzQGdub21lLWRlLm9yZz4KCVN0dWIgZm9yIHRoZSBDcnlwdFJlZ2lzdGVyT0lERnVuY3Rpb24gZnVuY3Rpb24uCgoJKiBkbGxzL2dkaS90ZXN0cy9nZW5lcmF0ZWQuYywgZGxscy9rZXJuZWwvdGVzdHMvZ2VuZXJhdGVkLmMsCgkgIGRsbHMvbnRkbGwvdGVzdHMvLmN2c2lnbm9yZSwgZGxscy9udGRsbC90ZXN0cy9NYWtlZmlsZS5pbiwKCSAgZGxscy9udGRsbC90ZXN0cy9nZW5lcmF0ZWQuYywgZGxscy91c2VyL3Rlc3RzL2dlbmVyYXRlZC5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglVcGRhdGVkIHRoZSBnZW5lcmF0ZWQgdGVzdHMuCgoJKiB0b29scy93aW5hcGkvd2luYXBpX3Rlc3Q6IFBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRG9uJ3QgdXNlIGEgc3BlY2lhbCBoZWFkZXIgZmlsZSBmb3IgbWFjcm9zIHVzZWQgaW4gZ2VuZXJhdGVkIHRlc3RzLgoJSGF2ZSBhIGNvcHkgaW4gZWFjaCBnZW5lcmF0ZWQgZmlsZSBpbnN0ZWFkLgoKCSogZGxscy9jb21jdGwzMi90cmFja2Jhci5jOiBNaWNoYWVsIEf8bm5ld2lnIDxNaWNoYWVsR3Vlbm5ld2lnQGdteC5kZT4KCUZpeGVkIGRpdmlzaW9uIGJ5IHplcm8sIHdoZW4gcmFuZ2UgaXMgMC4KCgkqIHRvb2xzL3dpbmVpbnN0YWxsOiBWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglBY3R1YWxseSBjb21waWxlIFdpbmUgZXZlbiBpZiBub3QgaW5zdGFsbGluZyBhcyByb290LgoKMjAwMi0xMC0xMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmVkZWZhdWx0LnJlZzogUm9kZXJpY2sgQ29sZW5icmFuZGVyIDx0aHVuZGVyYmlyZDJrQGdteC5uZXQ+CglTZXQgRGlyZWN0WCB2ZXJzaW9uIHRvIDguMS4KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglBZGQgZnVuY3Rpb24gdG8gZ2V0IHNpemUgb2YgaW4tbWVtb3J5IHJlc291cmNlIGFuZCB1c2VkIHRoaXMgZnVuY3Rpb24KCXRvIGNvcHkgcmVzb3VyY2UgdG8gd3JpdGFibGUgbWVtb3J5LgoKCSogdG9vbHMvd2luZWluc3RhbGw6IFZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCUFsbG93IHdpbmVpbnN0YWxsIHRvIGJlIHJ1biBmcm9tIHRvb2xzLyBvciBmcm9tIHRoZSBtYWluIFdpbmUKCWRpcmVjdG9yeS4KCgkqIGRsbHMvZDNkOC9kZXZpY2UuYzogSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCS0gQ2xpcFBsYW5lcyB3b3JrIGJldHRlci4KCS0gQ3VsbGluZyBub3cgY29uZmlndXJlcyBpdHNlbGYgcHJvcGVybHkuCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jOiBDYXJsb3MgPGNsb3phbm9AYW5kYWdvLmNvbT4KCUF2b2lkIGNyYXNoZXMgd2hlbiBvZm5XLT5scHN0ckZpbGUgaXMgbnVsbC4KCjIwMDItMTAtMTIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3F1ZXVlLmgsIHdpbmRvd3MvcXVldWUuYzoKCVJlbW92ZSBubyBsb25nZXIgdXNlZCBQRVJRVUVVRURBVEEgc3RydWN0dXJlIGFuZCBmdW5jdGlvbnMuCgoJKiB3aW5kb3dzL2lucHV0LmMsIHdpbmRvd3MvbWVzc2FnZS5jLCBjb250cm9scy9tZW51LmMsCgkgIGRsbHMveDExZHJ2L3dpbnBvcy5jLCBpbmNsdWRlL21lc3NhZ2UuaCwKCSAgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLCBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvcXVldWUuYywKCSAgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3RyYWNlLmM6CglNb3ZlZCBtb3VzZSBjYXB0dXJlIGhhbmRsaW5nIGludG8gdGhlIHNlcnZlci4KCgkqIGluY2x1ZGUvd2luLmgsIHdpbmRvd3Mvd2luLmM6CglSZWltcGxlbWVudGVkIEdldExhc3RBY3RpdmVQb3B1cCB0byBnZXQgdGhlIGluZm9ybWF0aW9uIGZyb20gdGhlCglzZXJ2ZXIuCgoyMDAyLTEwLTExICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy94MTFkcnYvZXZlbnQuYywgZGxscy94MTFkcnYvd2lucG9zLmMsIGluY2x1ZGUvdXNlci5oLAoJICBpbmNsdWRlL3dpbi5oLCBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsIGluY2x1ZGUvd2lucG9zLmgsCgkgIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci9xdWV1ZS5jLCBzZXJ2ZXIvcmVxdWVzdC5oLAoJICBzZXJ2ZXIvdHJhY2UuYywgc2VydmVyL3VzZXIuaCwgc2VydmVyL3dpbmRvdy5jLCB3aW5kb3dzL2ZvY3VzLmMsCgkgIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL25vbmNsaWVudC5jLCB3aW5kb3dzL3dpbi5jLAoJICB3aW5kb3dzL3dpbnBvcy5jLCBkbGxzL3VzZXIvTWFrZWZpbGUuaW4sIGRsbHMvdXNlci9mb2N1cy5jLAoJICBkbGxzL3VzZXIvbWVzc2FnZS5jOgoJUmVpbXBsZW1lbnRlZCBHZXQvU2V0QWN0aXZlV2luZG93LCBHZXQvU2V0Rm9jdXMgYW5kCglHZXQvU2V0Rm9yZWdyb3VuZFdpbmRvdyBieSBzdG9yaW5nIHRoZSBpbmZvcm1hdGlvbiBpbiB0aGUKCXNlcnZlci4gSW1wbGVtZW50ZWQgY29ycmVjdCBpbnRlci1wcm9jZXNzIHdpbmRvdyBhY3RpdmF0aW9uLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJUmVuYW1lIEdldEl0ZW1IZWlnaHQgdG8gQ2FsY3VsYXRlTWF4SGVpZ2h0LCBmb3IgY29uc2lzdGVuY3kKCUZpeCB1c2FnZSBvZiBuSXRlbVdpZHRoIHZzLiBpY29uU3BhY2luZy5jeAoJTWlzYyBjbGVhbnVwcy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVVzZSB0aGUgaXRlbSBib3ggcmF0aGVyIHRoYW4gdGhlIGJvdW5kcyB3aGVuIGludmFsaWRhdGluZy4KCUltcGxlbWVudCAnYlBhcnRpYWwnIGluIEVuc3VyZVZpc2libGUuCgoJKiBkbGxzL2QzZDgvZDNkOF9wcml2YXRlLmgsIGRsbHMvZDNkOC9kZXZpY2UuYzoKCUphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglTaWduaWZpY2FudGx5IGltcHJvdmUgdGhlIGxpZ2h0aW5nIGNvZGUuCgoJKiBzZXJ2ZXIvdHJhY2UuYywgc2VydmVyL3VzZXIuaCwgc2VydmVyL3dpbmRvdy5jLCB3aW5kb3dzL3F1ZXVlLmMsCgkgIGRsbHMvdXNlci9tZXNzYWdlLmMsIGRsbHMvdXNlci91c2VyMzIuc3BlYywKCSAgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLCBpbmNsdWRlL3dpbnVzZXIuaCwKCSAgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3F1ZXVlLmMsIHNlcnZlci9yZXF1ZXN0Lmg6CglBZGRlZCBzZXJ2ZXItc2lkZSBpbmZyYXN0cnVjdHVyZSBmb3IgdGhlIHRocmVhZCBpbnB1dCBzdHJ1Y3R1cmUuCglSZWltcGxlbWVudGVkIEF0dGFjaFRocmVhZElucHV0KCkgYW5kIGFkZGVkIEdldEdVSVRocmVhZEluZm8oKS4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVVuaWZ5IERyYXdMYXJnZUl0ZW0gd2l0aCBEcmF3SXRlbS4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVVzZSBHZXRJdGVtTWV0cmljcyBpbnN0ZWFkIG9mIEdldEl0ZW1NZWFzdXJlcy4KCVJlbW92ZSBHZXRJdGVtTWVhc3VyZXMuCglBZGQgR2V0SXRlbUJveCB3aGljaCBvbmx5IHJldHVybnMgdGhlIGJvdW5kYXJ5IG9mIHRoZSBpdGVtLgoKCSogZGxscy9ycGNydDQvTWFrZWZpbGUuaW4sIGRsbHMvcnBjcnQ0L25kcl9vbGUuYywKCSAgZGxscy9ycGNydDQvcnBjcnQ0LnNwZWM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUFkZGVkIE5kck9sZUFsbG9jYXRlLCBOZHJPbGVGcmVlLCBOZHJJbnRlcmZhY2VQb2ludGVyQnVmZmVyU2l6ZSwKCU5kckludGVyZmFjZVBvaW50ZXJGcmVlLCBOZHJJbnRlcmZhY2VQb2ludGVyTWFyc2hhbGwsCglOZHJJbnRlcmZhY2VQb2ludGVyTWVtb3J5U2l6ZSwgTmRySW50ZXJmYWNlUG9pbnRlclVubWFyc2hhbGwuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglCZSByZWFsIHRvdWdoIG9uIGludGVybmFsIHByb2dyYW1taW5nIGVycm9ycy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVJlbW92ZSBzdXBwb3J0IGZvciBvd25lciBkcmF3biBsaXN0dmlld3MgaW4gbm9uLVJFUE9SVCBtb2RlLiAgV2UgbmVlZAoJdG8gZG8gdGhpcyBzaW5jZSBXaW5kb3dzIHN1cHBvcnRzIG93bmVyIGRyYXcgKm9ubHkqIGluIHJlcG9ydCBtb2RlLAoJYW5kIGhlbmNlIGFwcHMgYXJlIG5vdCBwcmVwYXJlZCB0byBoYW5kbGUgZHJhd2luZyBpbiBvdGhlciBtb2Rlcy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVVzZSBHZXRJdGVtTWV0cmljcyBpbnN0ZWFkIG9mIEdldEl0ZW1NZWFzdXJlcyB3aGVuIGRyYXdpbmcuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglNYWtlIHVzZSBvZiB0aGUgbmV3IEdldEl0ZW1NZXRyaWNzIGluIEhpdFRlc3QsIHRvIGF2b2lkIGNvZGUKCWR1cGxpY2F0aW9uLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJU2VwYXJhdGUgaXRlbSBtZXRyaWNzIGNvbXB1dGF0aW9uIGZyb20gcG9zaXRpb25pbmcKCUFkZCBzdXBwb3J0IGZvciBjb21wdXRpbmcgc3RhdGUgaWNvbiBtZXRyaWNzLgoKCSogdG9vbHMvd2luYXBpL2NfcGFyc2VyLnBtLCB0b29scy93aW5hcGkvY190eXBlLnBtLAoJICB0b29scy93aW5hcGkvdGVzdHMuZGF0LCB0b29scy93aW5hcGkvd2luYXBpX2V4dHJhY3QsCgkgIHRvb2xzL3dpbmFwaS93aW5hcGlfdGVzdDoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBJbXByb3ZlZCBhbGlnbm1lbnQgYW5kIG9mZnNldCBjYWxjdWxhdGlvbnMuCgktIFJlb3JnYW5pemVkIGFuZCBpbXByb3ZlZCBlbnVtL3VuaW9uL3N0cnVjdCBwYXJzaW5nLgoKCSogZGxscy9ycGNydDQvTWFrZWZpbGUuaW4sIGRsbHMvcnBjcnQ0L3JwY19zZXJ2ZXIuYywKCSAgZGxscy9ycGNydDQvcnBjX3NlcnZlci5oLCBkbGxzL3JwY3J0NC9ycGNydDQuc3BlYywKCSAgZGxscy9ycGNydDQvcnBjcnQ0X21haW4uYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJUmVpbXBsZW1lbnQgc2V2ZXJhbCBScGNTZXJ2ZXIuKiBtZXRob2RzIGluIHJwY19zZXJ2ZXIuYy4KCUltcGxlbWVudCBScGNTZXJ2ZXJJbnFCaW5kaW5ncywgSV9ScGNTZXJ2ZXJTdGFydExpc3RlbmluZywKCUlfUnBjU2VydmVyU3RvcExpc3RlbmluZywgYW5kIElfUnBjV2luZG93UHJvYy4KCgkqIGRsbHMvbXNpbWczMi9NYWtlZmlsZS5pbjogR3JlZyBUdXJuZXIgPGdtdHVybmVyMDA3QGFtZXJpdGVjaC5uZXQ+CglBZGRlZCBtaXNzaW5nIGtlcm5lbDMyIGltcG9ydC4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCUxWU19PV05FUkRSQVdGSVhFRCBzaG91bGQgb25seSB0YWtlIGVmZmVjdCBpbiBSRVBPUlQgbW9kZS4KCjIwMDItMTAtMTAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL01ha2VmaWxlLmluLCBkbGxzL3JwY3J0NC9NYWtlZmlsZS5pbiwgZGxscy9ycGNydDQvY3BzZi5jLAoJICBkbGxzL3JwY3J0NC9ycGNydDQuc3BlYywgZGxscy9ycGNydDQvcnBjcnQ0X21haW4uYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJQWRkZWQgTmRyRGxsQ2FuVW5sb2FkTm93LCBOZHJEbGxHZXRDbGFzc09iamVjdCwgTmRyRGxsUmVnaXN0ZXJQcm94eSwKCU5kckRsbFVucmVnaXN0ZXJQcm94eSwgQ1N0ZFBTRmFjdG9yeSBtZXRob2RzLgoKCSogZGxscy9NYWtlZmlsZS5pbiwgZGxscy9hdmlmaWwzMi9NYWtlZmlsZS5pbiwgZGxscy9hdmlmaWwzMi9hcGkuYywKCSAgZGxscy9hdmlmaWwzMi9hdmlmaWwzMi5zcGVjLCBkbGxzL2F2aWZpbDMyL2F2aWZpbGUuYywKCSAgZGxscy9hdmlmaWwzMi9hdmlmaWxlLnNwZWMsIGRsbHMvYXZpZmlsMzIvYXZpZmlsZV9wcml2YXRlLmgsCgkgIGRsbHMvYXZpZmlsMzIvZmFjdG9yeS5jLCBpbmNsdWRlL3Zmdy5oOgoJTWljaGFlbCBH/G5uZXdpZyA8TWljaGFlbEd1ZW5uZXdpZ0BnbXguZGU+CgktIE1vdmUgdGhlIEFQSSBpbnRvIGEgbmV3IGFwaS5jIGZpbGUuCgktIEFkZGVkIElDbGFzc0ZhY3RvcnkgaW1wbGVtZW50YXRpb24uCgktIEFkZGVkIElQZXJzaXN0RmlsZSBpbXBsZW1lbnRhdGlvbiB0byB0aGUgQVZJLWZpbGUgaGFuZGxlci4KCgkqIGRsbHMveDExZHJ2L2tleWJvYXJkLmM6CglOZXJpanVzIEJhbGl1bmFzIDxuZXJpanVzQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCUJldHRlciBMaXRodWFuaWFuIGtleWJvYXJkIGxheW91dC4KCgkqIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYzogQXZvaWQgY2FsbGluZyBGaW5kRXhlY3V0YWJsZTE2LgoKCSogZGxscy93aW5tbS9kcml2ZXIuYywgZGxscy93aW5tbS9tY2kuYywgZGxscy93aW5tbS9tbXN5c3RlbS5jLAoJICBkbGxzL3dpbm1tL3RpbWUuYywgZGxscy93aW5tbS93aW5lbW0uaDoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJS2VlcCBvbiBtb3ZpbmcgMTYgYml0IGNvZGUgb3V0IG9mIHdpbm1tLgoKCSogZGxscy9kZHJhdy9kZHJhdy91c2VyLmM6IENocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUluaXRpYWxpemUgdGhlIEREQ0FQUyBzdHJ1Y3R1cmUgb2YgdGhlIEREUkFXIG9iamVjdCBhdCBjcmVhdGlvbi4KCgkqIGRsbHMvZGRyYXcvZHN1cmZhY2UvbWFpbi5jOiBDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglNYWluX0RpcmVjdERyYXdTdXJmYWNlX1F1ZXJ5SW50ZXJmYWNlOiBlbmFibGUgY3JlYXRpb24gb2YgYQoJSURpcmVjdDNEVGV4dHVyZTIgZnJvbSBhIHN1cmZhY2UuCgoJKiBkbGxzL3JwY3J0NC9NYWtlZmlsZS5pbiwgZGxscy9ycGNydDQvbmRyX21pZGwuYywKCSAgZGxscy9ycGNydDQvcnBjcnQ0LnNwZWMsIGluY2x1ZGUvcnBjcHJveHkuaDoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJQWRkZWQgTmRyUHJveHlGcmVlQnVmZmVyLCBOZHJQcm94eUdldEJ1ZmZlciwgTmRyUHJveHlJbml0aWFsaXplLAoJTmRyUHJveHlTZW5kUmVjZWl2ZSwgTmRyU3R1YkdldEJ1ZmZlciwgTmRyU3R1YkluaXRpYWxpemUuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglGaXggZHJhd2luZyBidWcgaW50cm9kdWNlZCB3aXRoIHRoZSBjdXN0b20gbm90aWZpY2F0aW9uCglyZW9yZ2FuaXphdGlvbi4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVNpbXBsaWZ5IHRoZSByZXBvcnQgbW9kZSwgYW5kIGl0ZW0gZHJhd2luZyBjb25zaWRlcmFibHkuCglGaXggZnVsbCByb3cgc2VsZWN0IGluIHJlcG9ydCBtb2RlLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJSGFuZGxlIGN1c3RvbSBkcmF3IG5vdGlmaWNhdGlvbnMgcHJvcGVybHkuCglWYXJpb3VzIGNsZWFudXBzLCBhbmQgc2ltcGxpZmljYXRpb25zLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJUmVtb3ZlIHN1cGVyZmx1b3VzIGFic3RyYWN0aW9ucyB3aGljaCBtYWtlIHRoZSBjb2RlIGhhcmRlciB0bwoJdW5kZXJzdGFuZC4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCU1vdmUgdGhlIGN1c3RvbSBkcmF3IG5vdGlmaWNhdGlvbnMgaW50byB0aGUgRHJhdy4qSXRlbSBmdW5jdGlvbnMuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglNb3ZlIHRoZSBjdXN0b20gZHJhdyBpdGVtIG5vdGlmaWNhdGlvbnMgZG93biBpbnRvIERyYXdMYXJnZUl0ZW0uCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglGaXggc2lsbHkgcmVkcmF3IGJ1ZyBpbnRyb2R1Y2VkIGluIHByZXZpb3VzIHBhdGNoLgoJVGlkeSB1cCwgYW5kIHNpbXBsaWZ5IGxhcmdlIGl0ZW0gZHJhd2luZy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUltcGxlbWVudCBXTV9TRVRSRURSQVcgcHJvcGVybHkuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglSZXdvcmsgdGhlIG1vdXNlIGNsaWNrIG5vdGlmaWNhdGlvbnMKCUFzc29ydGVkIGNsZWFudXBzLCBhbmQgc2ltcGxpZmljYXRpb25zLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJVXNlIChzZW1pKXN0YW5kYXJkIEhpdFRlc3QsIHJhdGhlciB0aGVuIG91ciBvd24gbGl0dGxlIGludmVudGlvbi4KCUdldCByaWQgb2YgR2V0SXRlbUF0UHQuCglGaXggSGl0VGVzdCBidXQgaW4gUkVQT1JUIG1vZGUuCgoJKiBkbGxzL21zYWNtL01ha2VmaWxlLmluOiBFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCU1vdmVkIG91dCAxNiBiaXQgY29kZS4KCgkqIGRsbHMvd2lubW0vd2luZW1tLmgsIGRsbHMvd2lubW0vd2lubW0uYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJUmVtb3ZlZCBubyBsb25nZXIgbmVlZGVkIGxpc3Qgb2YgaW5zdGFuY2UgZGF0YS4KCgkqIGRsbHMvZGRyYXcvZDNkX3ByaXZhdGUuaCwgZGxscy9kZHJhdy9kM2Rjb21tb24uYywKCSAgZGxscy9kZHJhdy9kc3VyZmFjZS9tYWluLmMsIGRsbHMvZGRyYXcvbWVzYS5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUFkZGVkIHNvbWUgVFJBQ0VzIHRvIHRoZSBkZHJhdyBjb2RlLgoKCSogZGxscy9ycGNydDQvTWFrZWZpbGUuaW4sIGRsbHMvcnBjcnQ0L2NzdHViLmMsCgkgIGRsbHMvcnBjcnQ0L3JwY3J0NC5zcGVjOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglJbXBsZW1lbnQgdGhlIENTdGRTdHViQnVmZmVyIG1ldGhvZHMuCgoJKiBncmFwaGljcy94MTFkcnYvYml0bWFwLmMsIGluY2x1ZGUvY3Vyc29yaWNvbi5oLCBpbmNsdWRlL3VzZXIuaCwKCSAgaW5jbHVkZS93aW5kZWYuaCwgbXNkb3MvaW50ZXJydXB0cy5jLCB3aW5kb3dzL2NsYXNzLmMsCgkgIHdpbmRvd3MvY3Vyc29yaWNvbi5jLCB3aW5kb3dzL2RlZnduZC5jLCB3aW5kb3dzL21kaS5jLAoJICB3aW5kb3dzL21zZ2JveC5jLCB3aW5kb3dzL25vbmNsaWVudC5jLCB3aW5kb3dzL3dpbi5jLAoJICBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLCBkbGxzL3VzZXIvZXh0aWNvbi5jLCBkbGxzL3gxMWRydi9kZXNrdG9wLmMsCgkgIGRsbHMveDExZHJ2L3dpbmRvdy5jLCBkbGxzL3gxMWRydi93aW5wb3MuYywgZGxscy9jb21tZGxnL2ZpbGVkbGcuYywKCSAgZGxscy9vbGUzMi9vbGUyLmMsIGRsbHMvc2hlbGwzMi9kaWFsb2dzLmMsIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLCBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jLAoJICBkbGxzL2NvbWN0bDMyL3N0YXR1cy5jLCBjb250cm9scy9zdGF0aWMuYywgZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5kZT4KCS0gY2hhbmdlIHRoZSBpbnRlcm5hbCBmdW5jdGlvbnMgaW4gd2luZG93cy9jdXJzb3JpY29uLmMgdG8gdXNlIDMyYml0CgkgIGhhbmRsZXMKCS0gbW92ZSB0aGUgaW1wbGVtZW50YXRpb24gb2YgRXh0cmFjdEFzc29jaWF0ZWRJY29uMTYgdG8KCSAgRXh0cmFjdEFzc29jaWF0ZWRJY29uQQoJLSBjb252ZXJ0IEhJQ09OIHRvIGEgdm9pZCoKCS0gZml4ZWQgc29tZSBoYW5kbGUgY29udmVyc2lvbnMgdGhhdCBoYXBwZW5lZCB0byBiZSBpbiB0aGUgd2F5IHdoaWxlCgkgIGRvaW5nIHRoZSBhYm92ZQoKCSogZGxscy9ycGNydDQvTWFrZWZpbGUuaW4sIGRsbHMvcnBjcnQ0L2Nwcm94eS5jLCBkbGxzL3JwY3J0NC9jcHNmLmgsCgkgIGRsbHMvcnBjcnQ0L3JwY3J0NC5zcGVjOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglJVW5rbm93bl9bUUFSXV9Qcm94eSBpbXBsZW1lbnRhdGlvbnMsIFZUYmwgY29uc3RydWN0aW9uLCB0aGUgZHJlYWRlZAoJT2JqZWN0U3R1Ymxlc3MsIGFuZCBvdGhlciBwcm94eS1yZWxhdGVkIGdvb2RpZXMuCgoJKiBpbmNsdWRlL3dpbnVzZXIuaCwgY29udHJvbHMvY29tYm8uYywgZGxscy91c2VyL3VzZXIzMi5zcGVjOgoJU3RldmUgTHVzdGJhZGVyIDxzdGV2ZS5sdXN0YmFkZXJAcGhpbGlwcy5jb20+CglQcm92aWRlIGEgc3R1YiBmb3IgR2V0Q29tYm9Cb3hJbmZvLgoKCSogZGxscy9zZXR1cGFwaS9zZXR1cGFwaS5zcGVjLCBkbGxzL3NldHVwYXBpL3N0dWJzLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglNb3JlIHN0dWJzLgoKCSogZGxscy9ycGNydDQvTWFrZWZpbGUuaW4sIGRsbHMvcnBjcnQ0L25kcl9taXNjLmgsCgkgIGRsbHMvcnBjcnQ0L25kcl9zdHVibGVzcy5jLCBkbGxzL3JwY3J0NC9ycGNydDQuc3BlYywKCSAgaW5jbHVkZS9ycGNuZHIuaDoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJU3R1YmJ5IE5kckNsaWVudENhbGwyICYgc29tZSBoZWFkZXIgY2hhbmdlcy4KCgkqIGRsbHMvc2V0dXBhcGkvZGV2aW5zdC5jLCBkbGxzL3NldHVwYXBpL3NldHVwYXBpLnNwZWMsCgkgIGluY2x1ZGUvc2V0dXBhcGkuaDoKCVN0ZXZlIEx1c3RiYWRlciA8c3RldmUubHVzdGJhZGVyQHBoaWxpcHMuY29tPgoJUHJvdmlkZSBzdHViIGZvciBTZXR1cERpR2V0Q2xhc3NEZXZzVy4KCUZpeCByZXR1cm4gdmFsdWUgb2YgU2V0dXBEaUdldENsYXNzRGV2c0EuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IFBhdWwgUnVwZSA8cHJ1cGVAbXlyZWFsYm94LmNvbT4KCVNjcm9sbCB0aGUgbGlzdHZpZXcgd2hlbiBkb2luZyBtdWx0aXBsZSBzZWxlY3Rpb25zLgoKCSogZGxscy9ycGNydDQvTWFrZWZpbGUuaW4sIGRsbHMvcnBjcnQ0L3JwY19kZWZzLmgsCgkgIGRsbHMvcnBjcnQ0L3JwY19tZXNzYWdlLmMsIGRsbHMvcnBjcnQ0L3JwY3J0NC5zcGVjLAoJICBkbGxzL3JwY3J0NC9ycGNydDRfbWFpbi5jOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglJbXBsZW1lbnRlZCBJX1JwY0ZyZWVCdWZmZXIsIElfUnBjR2V0QnVmZmVyLCBJX1JwY1JlY2VpdmUsIElfUnBjU2VuZCwKCUlfUnBjU2VuZFJlY2VpdmU7IGFkbWluaXN0cml2aWEuCgoJKiBkbGxzL21zdmNydC9leGNlcHQuYzoKCUZpeGVkIHNpZ24gZXh0ZW5zaW9uIGJ1ZyBpbiBFSF9wcm9sb2csIGFuZCBtYWRlIHRyeWxldmVsIGFuIGludCB0bwoJYXZvaWQgc2ltaWxhciBwcm9ibGVtcy4KCgkqIGRsbHMvbnRkbGwvbnRkbGwuc3BlYzoKCU1ha2Ugc3VyZSBhbGwgWncgZnVuY3Rpb25zIHdob3NlIE50IGVxdWl2YWxlbnQgaXMgaW1wbGVtZW50ZWQgYXJlCglpbXBsZW1lbnRlZCB0b28uCgoJKiBjb25maWd1cmUuYWMsIGRsbHMvd2lubW0vd2luZW5hcy9NYWtlZmlsZS5pbiwgY29uZmlndXJlOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVRoZSBOQVMgaGVhZGVycyBhbmQgbGlicmFyaWVzIGFyZSBzb21ldGltZXMgc3RvcmVkIGluIHRoZSBYCglkaXJlY3Rvcmllcy4KCgkqIGNvbnRyb2xzL3Njcm9sbC5jOiBBbmRyZXcgTS4gSm9obnN0b24gPGpvaG5zdG9uYW1AbG9naWNhLmNvbT4KCU1ha2UgaW5mbyBzdHJ1Y3R1cmUgbWVtYmVycyBsb3dlciBjYXNlIGFzIGVsc2V3aGVyZS4KCgkqIGNvbmZpZ3VyZTogVXBkYXRlZCB3aXRoIGF1dG9jb25mIDIuNTQuCgoJKiBkbGxzL3dpbm1tL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL21jaS5jLCBkbGxzL3dpbm1tL21tc3lzdGVtLmMsCgkgIGRsbHMvd2lubW0vcGxheXNvdW5kLmMsIGRsbHMvd2lubW0vd2luZW1tLmgsIGRsbHMvd2lubW0vd2lubW0uYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJU3RhcnRlZCBwdXR0aW5nIGFsbCAxNiBiaXQgY29kZSBpbiBzZXBhcmF0ZSBmaWxlcy4KCgkqIGRsbHMvbXN2aWRlby9tc3JsZTMyL21zcmxlMzIuYywgZG9jdW1lbnRhdGlvbi9zYW1wbGVzL3N5c3RlbS5pbmk6CglNaWNoYWVsIEf8bm5ld2lnIDxNaWNoYWVsR3Vlbm5ld2lnQGdteC5kZT4KCVByZXZlbnQgc29tZSBzZWdmYXVsdHMgaW4gbXNybGUzMi4KCUFkZCB0aGUgbmVjZXNzYXJ5IGxpbmUgdG8gdGhlIHNhbXBsZSBzeXN0ZW0uaW5pIGZvciB1c2luZyB0aGlzIHZpZGVvCgljb2RlYy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCU5hcnJvdyBkb3duIHRoZSBpdGVtcyB3ZSBpdGVyYXRlIG92ZXIgaW4gTElTVCwgYW5kIFJFUE9SVCBtb2RlLgoJRml4IGEgQ2xpZW50IC0tPiBMaXN0IGNvb3JkaW5hdGUgdHJhbnNmb3JtYXRpb25zIGluIEZpbmRJdGVtLgoJRml4IGJ1ZyBpbiBIaXRJdGVtIChpbiBMSVNUIGFuZCBSRVBPUlQgbW9kZSkuCglBdm9pZCB0aGUgbGFzdCBiaXQgb2YgZHJhd2luZyBpbiBSRVBPUlQgbW9kZS4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCURyYXcgX29ubHlfIHRoZSBpdGVtcyB0aGF0IGFyZSBpbnZhbGlkYXRlZC4KCUZpeCBzZXJpb3VzIGJ1ZyB3aGVuIGRlbGV0aW5nIGZyb20gYSByYW5nZS4KCVBhc3MgaW4gYSByYW5nZSB0byB0aGUgcmFuZ2VzX3thZGQsZGVsfSBmdW5jdGlvbnMuCglUaWR5IHVwIHRoZSBSZWZyZXNoSWNvbiBmdW5jdGlvbi4KCUFzc29ydGVkIGNsZWFudXBzLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJUmVpbXBsZW1lbnQgRmluZEl0ZW0gKGNsZWFuZXIsIGZhc3RlciwgbW9yZSBjb21wbGlhbnQgd2l0aCBNU0ROKS4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVJld3JpdGUgSGl0VGVzdCB0byBtYWtlIGl0IHByZXR0eSwgYW5kIHZlcnkgZmFzdC4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUludHJvZHVjZSB0aGUgbm90aW9uIG9mIGl0ZW0gaXRlcmF0b3JzLCBhbmQgdXNlIHRoZW0gdG8gY2xlYW4gdXAgY29kZS4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVNlcGFyYXRlIHJhbmdlIG1hbmlwdWxhdGlvbiBmdW5jdGlvbnMgZnJvbSBzZWxlY3Rpb24gcmFuZ2VzLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRml4IGxhcmdlIGl0ZW0gbGFiZWwgY2FsY3VsYXRpb24gd2hlbiBub3QgZm9jdXNlZC4KCUZhbmN5IGZvY3VzIHJlY3RhbmdsZSBoYW5kbGluZy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUZpeCBmb2N1cyBoYW5kbGluZyB3aGVuIGRlbGV0aW5nIGl0ZW1zLCBvciBjaGFuZ2luZyBtb2Rlcy4KCUJldHRlciBsYWJlbCByZWN0IGNhbGN1bGF0aW9uIGluIElDT04gbW9kZS4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUZpeCBsYXJnZSBpdGVtIGhhbmRsaW5nIGZvY3VzIGluIElDT04gbW9kZS4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCU5vIG5lZWQgdG8gZ28gdGhyb3VnaCB0aGUgaGVhdnkgZHV0eSByZWN0IGNvbXB1dGF0aW9uIHdoZW4gaW4gT1dORVJEUkFXLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRmFjdG9yIG91dCBvd25lciBkcmF3IGNvZGUsIHNvIHRoYXQgaXQgd29ya3MgZm9yIGFsbCBtb2Rlcy4KCURvY3VtZW50YXRpb24gdXBkYXRlcy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUZhY3RvciBvdXQgdGhlIGNvbXB1dGF0aW9uIG9mIGl0ZW0gcG9zaXRpb24sIHNvIGl0IGNhbiBiZSB1c2VkCglpbmRlcGVuZGVudGx5IG9mIHRoZSByZWN0YW5nbGVzLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJVW5pZnkgTElTVFZJRVdfVXBkYXRlTGFyZ2VJdGVtTGFiZWxSZWN0LCBhbmQgR2V0SXRlbU1lYXN1cmVzLgoJT3B0aW1pemUgR2V0SXRlbU1lYXN1cmVzIHRvIHRoZSBtYXguCglDZW50cmFsaXplIHRoZSBEcmF3VGV4dCdzIERUXyogZmxhZ3MuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglHZXQgcmlkIG9mICdnb3RvJ3MgaW4gR2V0SXRlbU1lYXN1cmVzLgoJTW92ZSBMSVNUVklFV19VcGRhdGVMYXJnZUl0ZW1MYWJlbFJlY3QgY2xvc2UgdG8gd2hlcmUgaXQncyB1c2VkLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRml4IGJyYWlubyBpbiBjYWxjdWxhdGlvbiBvZiBMVlNfTElTVCBvcmlnaW4uCglJbnZhbGlkYXRlIHRoZSBlbnRpcmUgd2luZG93IHdoZW4gd2UgYXJlIGludmFsaWRhdGluZyB0aGUgbGlzdC4KCjIwMDItMTAtMDkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL21kaS5jOiBBbmRyZXcgTS4gSm9obnN0b24gPGpvaG5zdG9uYW1AbG9naWNhLmNvbT4KCVJlbW92ZWQgcmVmZXJlbmNlIHRvIFNDUk9MTF9TZXROQ1NiU3RhdGUuCgoJKiBwcm9ncmFtcy93Y21kL3djbWRtYWluLmM6CglUcnkgQ3JlYXRlUHJvY2VzcyBldmVuIGlmIFNIR2V0RmlsZUluZm8gZmFpbHMgc28gdGhhdCB3ZSBjYW4gbGF1bmNoCglVbml4IGJpbmFyaWVzLgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6IEVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgc29tZSBtdWx0aS1zb3VuZCBjYXJkIHJlbGF0ZWQgYnVncy4KCgkqIGRsbHMvdXNlci9tZXNzYWdlLmMsIGluY2x1ZGUvcXVldWUuaDoKCUF2b2lkIGluZmluaXRlIFNlbmRNZXNzYWdlIHJlY3Vyc2lvbiwganVzdCBsaWtlIFdpbmRvd3MgZG9lcy4KCgkqIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYzoKCURvbid0IGxpc3QgcmVnaXN0ZXIgZnVuY3Rpb25zIGluIHRoZSAuZGVmIGZpbGUuCgoJKiBkbGxzL250ZGxsL3N0cmluZy5jOgoJRml4ZWQgYnVmZmVyIHNpemUgaW4gX3VsdG9hIChzcG90dGVkIGJ5IEpvZXJnIE1heWVyKS4KCgkqIG1lbW9yeS9lbnZpcm9uLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIGZpbGVzL2RpcmVjdG9yeS5jOgoJVHJhbnNtaXQgdGhlIFdpbmRvd3MgUEFUSCB0byBjaGlsZCBwcm9jZXNzZXMgdXNpbmcgdGhlIFdJTkVQQVRICgl2YXJpYWJsZS4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOiBGaXhlZCBmaWxlIGRlc2NyaXB0b3IgY29ycnVwdGlvbi4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL2F0b20uYywgZGxscy9rZXJuZWwvdGVzdHMvdGhyZWFkLmM6CglKZWZmIFNtaXRoIDx3aHlkb3VidEBob3RtYWlsLmNvbT4KCVNwZWxsaW5nIGNvcnJlY3Rpb25zLgoKCSogZG9jdW1lbnRhdGlvbi9zYW1wbGVzL2dlbmVyaWMucHBkOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgQTMgcGFwZXIgc2l6ZS4KCgkqIGRsbHMvdXNlci93bmQxNi5jOiBNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmRlPgoJRml4IGhhbmRsZSBjb252ZXJzaW9ucy4KCgkqIGRsbHMvd2luaW5ldC90ZXN0cy9odHRwLmM6IFBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgdGVzdCB0byBub3QgZmFpbCBiZWhpbmQgZmlyZXdhbGxzIG9yIHdpdGhvdXQgYW4gaW50ZXJuZXQKCWNvbm5lY3Rpb24uCgoJKiB0b29scy93aW5hcGkvY19wYXJzZXIucG0sIHRvb2xzL3dpbmFwaS9jX3R5cGUucG0sCgkgIHRvb2xzL3dpbmFwaS90ZXN0cy5kYXQsIHRvb2xzL3dpbmFwaS93aW5hcGlfZXh0cmFjdCwKCSAgdG9vbHMvd2luYXBpL3dpbmFwaV90ZXN0OgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglSZW9yZ2FuaXplZCB0aGUgY29kZSBmb3IgYmV0dGVyIHN1cHBvcnQgb2YgZGF0YSBzdHJ1Y3R1cmVzIHBhcnNpbmcuCgoyMDAyLTEwLTA3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogQU5OT1VOQ0UsIENoYW5nZUxvZywgVkVSU0lPTiwgY29uZmlndXJlOiBSZWxlYXNlIDIwMDIxMDA3LgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoyMDAyLTEwLTA3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRml4ZWQgYnVnIHRoYXQgY2F1c2VkIGl0ZW0gdGV4dHMgdG8gYmUgZW1wdHkuCgoJKiBjb25maWd1cmUuYWMsIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvbXNybGUzMi8uY3ZzaWdub3JlLAoJICBkbGxzL21zcmxlMzIvTWFrZWZpbGUuaW4sIGRsbHMvbXNybGUzMi9tc3JsZTMyLmMsCgkgIGRsbHMvbXNybGUzMi9tc3JsZTMyLnNwZWMsIGRsbHMvbXN2aWRlby9tc3JsZTMyLy5jdnNpZ25vcmUsCgkgIGRsbHMvbXN2aWRlby9tc3JsZTMyL01ha2VmaWxlLmluLCBkbGxzL21zdmlkZW8vbXNybGUzMi9tc3JsZTMyLmMsCgkgIGRsbHMvbXN2aWRlby9tc3JsZTMyL21zcmxlMzIuc3BlYywgZGxscy9tc3ZpZGVvL21zcmxlMzIvbXNybGVfRGUucmMsCgkgIGRsbHMvbXN2aWRlby9tc3JsZTMyL21zcmxlX0VuLnJjLCBkbGxzL21zdmlkZW8vbXNybGUzMi9tc3JsZV9Gci5yYywKCSAgZGxscy9tc3ZpZGVvL21zcmxlMzIvbXNybGVfcHJpdmF0ZS5oLCBkbGxzL21zdmlkZW8vbXNybGUzMi9yc3JjLnJjLAoJICBjb25maWd1cmU6CglNaWNoYWVsIEf8bm5ld2lnIDxNaWNoYWVsR3Vlbm5ld2lnQGdteC5kZT4KCUltcGxlbWVudGVkIHRoZSBNUyBSTEUgdmlkZW8gY29kZWMuCgoJKiBpbmNsdWRlL21pc2NlbXUuaCwgbWVtb3J5L2luc3RyLmMsIG1zZG9zL2Rvc21lbS5jLAoJICBtc2Rvcy9pbnRlcnJ1cHRzLmM6CglKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglBZGQgc3VwcG9ydCBmb3IgaW50ZXJydXB0cyBpbiAzMi1iaXQgY29kZS4KCVJlbW92ZSBzb21lIHVubmVjZXNzYXJ5IGNvZGUgZnJvbSAxNi1iaXQgaW50ZXJydXB0IGVtdWxhdGlvbi4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUZpeCBuYXN0eSBidWcgZ2VuZXJhdGVkIGJ5IFVJTlQgdnMuIElOVCAocmVzdWx0ZWQgaW4gYm9ndXMKCWNvbXBhcmlzb25zKS4KCUZpeCBMVklSX1NFTEVDVEJPVU5EUyBjb21wdXRhdGlvbiwgZm9yIFJFUE9SVCBtb2RlLgoJRml4IGRlcGVuZGVuY3kgZ2VuZXJhdGlvbiBpbiBHZXRJdGVtTWVhc3VyZXMuCglGaXggcmVjdGFuZ2xlIGNvbXB1dGF0aW9uIGZvciBSRVBPUlQgbW9kZSAoY29ybmVyIGNhc2UgcHJvYmxlbXMpLgoJQmV0dGVyIGRlYnVnIG1lc3NhZ2VzLgoJQXNzb3J0ZWQgY2xlYW51cHMuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglDbGVhbmVkIHVwIHRoZSByZWN0YW5nbGUgaGFuZGxpbmcsIGFuZCBmaXhlZCBudW1lcm91cyBidWdzIGluCglyZWN0YW5nbGUgY2FsY3VsYXRpb25zLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvcnBjcnQ0L01ha2VmaWxlLmluLAoJICBkbGxzL3JwY3J0NC90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL3JwY3J0NC90ZXN0cy9NYWtlZmlsZS5pbiwKCSAgZGxscy9ycGNydDQvdGVzdHMvcnBjLmM6CglHcmVnIFR1cm5lciA8Z210dXJuZXIwMDdAYW1lcml0ZWNoLm5ldD4KCUFkZGVkIHNrZWxldG9uIGZvciBycGNydDQgdW5pdCB0ZXN0IHdpdGggc29tZSBVVUlEIHRlc3RzLgoKCSogZGxscy9ycGNydDQvcnBjcnQ0LnNwZWMsIGRsbHMvcnBjcnQ0L3JwY3J0NF9tYWluLmM6CglHcmVnIFR1cm5lciA8Z210dXJuZXIwMDdAYW1lcml0ZWNoLm5ldD4KCUltcGxlbWVudGVkIFV1aWRDb21wYXJlLgoKCSogZGxscy9ycGNydDQvTWFrZWZpbGUuaW4sIGRsbHMvcnBjcnQ0L3JwY19iaW5kaW5nLmMsCgkgIGRsbHMvcnBjcnQ0L3JwY19iaW5kaW5nLmgsIGRsbHMvcnBjcnQ0L3JwY3J0NC5zcGVjLAoJICBkbGxzL3JwY3J0NC9ycGNydDRfbWFpbi5jOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglJbXBsZW1lbnRlZCBScGNCaW5kaW5nSW5xT2JqZWN0LCBScGNCaW5kaW5nU2V0T2JqZWN0LAoJUnBjQmluZGluZ1ZlY3RvckZyZWUsIFJwY0JpbmRpbmdUb1N0cmluZ0JpbmRpbmdBL1csCglScGNCaW5kaW5nRnJvbVN0cmluZ0JpbmRpbmdBL1csIFJwY1N0cmluZ0JpbmRpbmdQYXJzZUEvVywKCUlfUnBjQmluZGluZ1NldEFzeW5jLCBScGNTdHJpbmdCaW5kaW5nQ29tcG9zZUEvVywgUnBjQmluZGluZ0ZyZWUsCglSUENTdHJpbmdGcmVlVywgVVVJREhhc2gsIFV1aWRUb1N0cmluZ1csIGFuZCBhc3NvY2lhdGVkIGp1bmsuCgoJKiBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW5udC5oLCBzY2hlZHVsZXIvdGltZXIuYywKCSAgZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYzoKCVN0ZXZlIEx1c3RiYWRlciA8c3RldmUubHVzdGJhZGVyQHBoaWxpcHMuY29tPgoJUHJvdmlkZSBzdHVicyBmb3IgQ3JlYXRlL0RlbGV0ZVRpbWVyUXVldWVUaW1lci4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogUGF1bCBSdXBlIDxwcnVwZUBteXJlYWxib3guY29tPgoJRml4IGluYWNjdXJhdGUgbGlzdHZpZXcgc2Nyb2xsaW5nIHdpdGggUGdVcC9Eb3duIGFuZCBIb21lL0VuZCBrZXlzLgoKCSogZGxscy9hdmljYXAzMi9NYWtlZmlsZS5pbiwgZGxscy9hdmljYXAzMi9hdmljYXAzMi5zcGVjLAoJICBkbGxzL2F2aWNhcDMyL2F2aWNhcDMyX21haW4uYzoKCVN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJQWRkZWQgc3R1YnMgZm9yIGNhcENyZWF0ZUNhcHR1cmVXaW5kb3dBL1cgdG8gZ2V0IGZyZWVWQ1Igc3RhcnRlZAoJd2l0aG91dCBjcmFzaC4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUZpeCBzaWxseSBidWcgaW4gU2V0SXRlbVBvc2l0aW9uICh3ZSBzaG91bGQgc2V0IGl0LCBub3QgY3JlYXRlIGEgbmV3CglvbmUpLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJTWFpbnRhaW4gdGhlIGl0ZW0gcG9zaXRpb24gaW4geyxTTUFMTH1JQ09OIG1vZGUgc2VwYXJhdGFseSBmcm9tIHRoZQoJaXRlbSwgc28gdGhhdCB3ZSBoYXZlIGl0IGV2ZW4gaW4gTFZTX09XTkVSREFUQS4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUNsZWFudXAgdGhlIFNldEl0ZW1Qb3NpdGlvbiBpbnRlcmZhY2UuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglSZW1vdmUgdGhlIENPVU5UX09GIG1hY3JvLgoJSW5kZW50YXRpb24gZml4ZXMsIGFuZCBtaW5vciBjbGVhbnVwcyB0byBub3RpZnlfZGlzcGluZm9ULgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRml4ZXMgYnVnIHdoaWNoIHJlbmRlcmVkIHZpcnR1YWwgbGlzdGJveGVzIGFsd2F5cyBlbXB0eS4KCVNtYXJ0ZXIgZm9jdXMgcmVjdGFuZ2xlIGRyYXdpbmcuCglGaXggZm9jdXMgaGFuZGxpbmcgd2hlbiB3ZSBhZGQvZGVsZXRlIGEgY29sdW1uLgoJRml4IHNpbGx5IGJ1ZyBpbiBHZXRTdWJJdGVtUmVjdC4KCUVsaW1pYW50ZSBmbGlja2VyIGluIFJlcG9ydCBtb2RlLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQ2xlYW51cCwgYW5kIGNsYXJpZnkgdGhlIGhhbmRsaW5nIG9mIHRoZSB2YXJpb3VzIHJlY3RhbmdsZXMuCglGaXggaGFuZGxpbmcgb2YgbGFyZ2UgaXRlbXMgaW4gSUNPTiBtb2RlLgoJRml4IGNhbGN1bGF0aW9uIG9mIExWSVJfU0VMRUNUQk9VTkRTLgoJVmFyaW91cyBjbGVhbnVwcywgYW5kIHNpbXBsaWZpY2F0aW9ucy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUNsZWFudXAgb2YgdGhlIHdheSB3ZSBtYWludGFpbi9sb29rdXAgdGhlIGl0ZW0gY291bnQuCglSZW5hbWUgR2V0SXRlbVdpZHRoIHRvIENhbGN1bGF0ZU1heFdpZHRoLgoJTWlzYyB0cml2aWFsIGNoYW5nZXMuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglGaXggZm9jdXMgaGFuZGxpbmcgZm9yIG93bmVyIGRyYXcgbGlzdHZpZXdzLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRml4IHBvdGVudGlhbCBidWcgaW4gUmVtb3ZlQWxsSXRlbXMuCglGaXggcmVwb3J0LW1vZGUgT05XRVJEUkFXIGJ1ZyAod2l0aCBoZWxwIGZyb20gQWxleGFuZHJlIEp1bGxpYXJkKS4KCUZpeCBtdWx0aXBsZSBzZWxlY3Rpb24gYnVnIChpbiByZXBvcnQgYW5kIGxpc3QgbW9kZSkuCglSZW1vdmUgY29kZSBkdXBsaWNhdGlvbiBmb3IgcmVtb3Zpbmcgc2VsZWN0aW9ucy4KCgkqIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGluY2x1ZGUvd2lubmxzLmgsIG1lbW9yeS9jb2RlcGFnZS5jOgoJU3RldmUgTHVzdGJhZGVyIDxzdGV2ZS5sdXN0YmFkZXJAcGhpbGlwcy5jb20+CglJbXBsZW1lbnQgR2V0VXNlckRlZmF1bHRVSUxhbmd1YWdlIGFuZCBHZXRTeXN0ZW1EZWZhdWx0VUlMYW5ndWFnZS4KCgkqIGRsbHMvZDNkOC9kM2Q4X3ByaXZhdGUuaCwgZGxscy9kM2Q4L2RldmljZS5jLCBkbGxzL2QzZDgvZGlyZWN0eC5jLAoJICBkbGxzL2QzZDgvc3VyZmFjZS5jOgoJSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCVZhcmlvdXMgZml4ZXMsIHR5cG9zIGNvcnJlY3RlZCBhbmQgY2xhcmlmeWluZyB0cmFjZSBwb2ludHMuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzogRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBzdXBwb3J0IGZvciBzZXZlcmFsIHNvdW5kY2FyZC4KCVJlbW92ZSBub24gZnVsbCBkdXBsZXggbW9kZSBpbiBjb2RlLgoJT1NTIENvbW1lcmNpYWwgZG9lc24ndCBwcm9wZXJseSBoYW5kbGUgU05EQ1RMX0RTUF9SRVNFVCwgc28gY2xvc2Uvb3BlbgoJZGV2aWNlIHRvIHdvcmthcm91bmQgdGhpcyBpc3N1ZSAoYnkgT3ZlIEthYXZlbikuCgoJKiBkbGxzL3dpbm1tL3dhdmVtYXAvd2F2ZW1hcC5jOiBFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUdvdCByaWQgb2YgcmVjdXJzaW9uIGluIHN1YiBkZXZpY2Ugb3BlbmluZy4KCgkqIGRsbHMvd2lubW0vbW1zeXN0ZW0uYzogRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglMZXQgd2F2ZShPdXR8SW4pT3BlbiBjYWxsIHRoZSB3YXZlIG1hcHBlciB3aGVuIHRoZSBsb3cgbGV2ZWwgZGV2aWNlCglkb2Vzbid0IGhhbmRsZSB0aGUgd2F2ZSBkZXNjcmlwdG9yLgoKCSogdG9vbHMvd2luZWR1bXAvbWFpbi5jOiBFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIHNlZ3Ygd2hlbiBpbmNvcnJlY3QgY29tbWFuZCBsaW5lIGFyZ3VtZW50cyB3aGVyZSBnaXZlbi4KCgkqIGRvY3VtZW50YXRpb24vc2FtcGxlcy9zeXN0ZW0uaW5pOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBJTUEgQUNNIGRlZmluaXRpb24uCgoJKiBkbGxzL21zYWNtL2ltYWFkcDMyL2ltYWFkcDMyLmM6IEVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJTWlub3IgY29tbWVudHMgY2xlYW51cHMuCglSZW1vdmVkIHVubmVlZGVkIEZJWE1Fcy4KCgkqIGRsbHMvdXNlci9kZGUvZGRlbWwxNi5jOiBFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIHNvbWUgTlVMTCBwb2ludGVyIGhhbmRsaW5nIGVycm9ycy4KCjIwMDItMTAtMDUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglSZWltcGxlbWVudCBHZXRTdWJJdGVtUmVjdCwgc3ViaXRlbSBzZXR0aW5nIG9wdGltaXphdGlvbnMuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglGaXggYnVnIGluIE9XTkVSREFUQSBzZWxlY3Rpb24gaGFuZGxpbmcuCglGaXggY3JpdGljYWwgcGVyZm9ybWFuY2UgYnVnIGluIEdldFNlbGVjdGVkQ291bnQuCglGaXggY3JpdGljYWwgcGVyZm9ybWFuY2UgYnVnIGluIFNldEdyb3VwU2VsZWN0aW9uLgoJRml4IHByb2JsZW1zIGZvciBPV05FUkRSQVcgcmVwb3J0LgoJRml4IGhpZGRlbi9sYXRlbnQgYnVncyBpbiBzdGF0ZSBoYW5kbGluZy4KCUJldHRlciBkZWJ1ZyBtZXNzYWdlcy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUZpeCBvbndlci1kcmF3IFJFUE9SVCBmb3IgYnJva2VuIGFwcHMuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglTdHJlYW1saW5lIHRoZSBHZXRJdGVtIHVzYWdlLgoJRml4IGZhdGFsIGJ1ZyBmb3IgSUNPTiBtb2RlIGluIExWU19PTldFUkRBVEEuCglEb2N1bWVudGF0aW9uIHVwZGF0ZXMsIG1hcmtpbmcgcGxhY2VzIHdoaWNoIG5lZWQgd29yay4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUZpeCBjb25kaXRpb24gc28gd2UgYWN0dWFsbHkgc3RvcmUgdGhlIHN0YXRlIGluIHZpcnR1YWwgbGlzdHZpZXdzLgoJQXNzb3J0ZWQgY29kZSBjbGVhbnVwcy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCS0gRWZmZWN0aXZlIG9wdGltaXphdGlvbiBpbiBHZXROZXh0SXRlbSAoc3BlZWRzIHVwIFhuZXdzKS4KCS0gTWlzYyBjbGVhbnVwcy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVJld3JpdGUgdGhlIGJlZ2luL2VuZCBsYWJlbCBlZGl0IHByb2NlZHVyZXMuCglCZXR0ZXIgc3VwcG9ydCBvZiBPV05FUkRSQVcuCglDbGVhbmVyLCBzaW1wbGVyIGNvZGUuCgoyMDAyLTEwLTA0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRml4ZWQgbGFyZ2UgaXRlbSBmb2N1cyBoYW5kbGluZyBmb3IgdmlydHVhbCBsaXN0dmlld3MuICBTaW5jZSBhdCBtb3N0Cglfb25lXyBpdGVtIGNhbiBoYXZlIHRoZSBmb2N1cyBhdCBhbnkgdGltZSwgd2UgY2FuIG1haW50YWluIG9uZSBzdWNoCglyZWN0YW5nbGUgcGVyIGxpc3QsIHJhdGhlciB0aGFuIHBlciBpdGVtLiBUaGlzIGlzIGJvdGggbW9yZSBlZmZpY2llbnQsCglhbmQgd29ya3MgZm9yIExWU19PV05FUkRBVEEgbGlzdHZpZXdzIGFzIHdlbGwuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglEbyBub3QgYmxpbmRseSB0cnVzdCBHZXRJdGVtIHRvIHN1Y2NlZWQgLS0gY2hlY2sgdGhlIHJldHVybiB2YWx1ZSwgYW5kCglmYWlsIGdyYWNlZnVsbHkuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglEbyBub3Qgc2VuZCB1bmluaXRpYWxpemVkIGRhdGEgaW4gbm90aWZpY2F0aW9uIHRvIGFwcGxpY2F0aW9uLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvYXRvbS5jLCBtZW1vcnkvYXRvbS5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGJhaWthbC5ydT4KCUZpeGVkIGF0b20gdGVzdCB0byB3b3JrIG9uIFdpbmRvd3MuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL2tlcm5lbC90ZXN0cy9NYWtlZmlsZS5pbiwKCSAgZGxscy9rZXJuZWwvdGVzdHMvY29kZXBhZ2UuYywgbWVtb3J5L2NvZGVwYWdlLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAYmFpa2FsLnJ1PgoJQWRkZWQgYSBwcm90b3R5cGUgY29kZSBwYWdlIHRlc3QuIEZpeGVkIGlzc3VlIHJlZ2FyZGluZyBuZWdhdGl2ZQoJc291cmNlIGxlbmd0aCBoYW5kbGluZy4KCgkqIGRsbHMvdXNlci90ZXN0cy9jbGFzcy5jLCBkbGxzL3VzZXIvdGVzdHMvd2luLmM6CglGaXhlZCBwcmludGYgZm9ybWF0cyBmb3IgLURTVFJJQ1QgaGFuZGxlcy4KCgkqIGRsbHMvaW1hZ2VobHAvYWNjZXNzLmMsIGRsbHMvbXN2Y3J0L3Byb2Nlc3MuYywgZGxscy91c2VyL3VzZXIxNi5jLAoJICBkbGxzL3dpbnNwb29sL2luZm8uYywgaW5jbHVkZS90bGhlbHAzMi5oLCBsb2FkZXIvcGVfaW1hZ2UuYywKCSAgb2JqZWN0cy9mb250LmMsIG9iamVjdHMvZ2Rpb2JqLmM6CglGaXhlZCBzb21lIGhhbmRsZSBjb252ZXJzaW9ucyBpbiBwcmV2aXNpb24gb2Ygdm9pZCogaGFuZGxlcy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCS0gRml4IG5hc3R5IGJ1ZyBpbiBSRVBPUlQgbW9kZSwgd2hlbiBjYWxjdWxhdGluZyB0aGUgbGFiZWwgcmVjdC4KCS0gTG90cyBvZiBjbGVhbnVwcywgYW5kIHNpbXBsaWZpY2F0aW9ucy4KCgkqIGRsbHMvcnBjcnQ0L3JwY3J0NF9tYWluLmM6CglJbXBsZW1lbnRlZCBVdWlkRnJvbVN0cmluZ1tBV10gYmFzZWQgb24gQ0xTSURGcm9tU3RyaW5nCglpbXBsZW1lbnRhdGlvbi4KCjIwMDItMTAtMDMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmM6IEd59nJneSAnTm9nJyBKZW5leSA8bm9nQHNkZi5sb25lc3Rhci5vcmc+CglBYm9ydCB3aXRoIGVycm9yIGlmIHRoZSBhcHAgdXNlcyBvdXIgYXBpIHRvIHN1YmNsYXNzIGFuZCB0aGVuIHRoZWlycwoJdGhlbiBvdXJzIGFnYWluLgoKCSogb2xlL29sZTJubHMuYzogU3RldmUgTHVzdGJhZGVyIDxzdGV2ZS5sdXN0YmFkZXJAcGhpbGlwcy5jb20+CglJbXBsZW1lbnRlZCBHZXREYXRlRm9ybWF0Vy4KCgkqIGRsbHMvcnBjcnQ0L3JwY3J0NC5zcGVjLCBkbGxzL3JwY3J0NC9ycGNydDRfbWFpbi5jOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglBZGRlZCBVdWlkQ3JlYXRlTmlsLCBVdWlkRXF1YWwgYW5kIFV1aWRJc05pbC4KCgkqIHNlcnZlci9kZWJ1Z2dlci5jLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcHJvY2Vzcy5oLAoJICBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvc25hcHNob3QuYywgc2VydmVyL3RocmVhZC5jLAoJICBzZXJ2ZXIvdGhyZWFkLmgsIHNlcnZlci90cmFjZS5jLCB0b29scy9tYWtlX3JlcXVlc3RzLAoJICB3aW5kb3dzL2lucHV0LmMsIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL3dpbi5jLAoJICBkbGxzL2tlcm5lbC9jb25zb2xlLmMsIGRsbHMva2VybmVsL2RlYnVnZ2VyLmMsCgkgIGRsbHMva2VybmVsL3Rvb2xoZWxwLmMsIGRsbHMvdXNlci9tZXNzYWdlLmMsIGluY2x1ZGUvdGhyZWFkLmgsCgkgIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbnNvbGUuYywKCSAgc2NoZWR1bGVyL2NsaWVudC5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzY2hlZHVsZXIvc3lzbGV2ZWwuYywKCSAgc2NoZWR1bGVyL3RocmVhZC5jLCBzZXJ2ZXIvY29uc29sZS5jOgoJQWRkZWQgcHJvY2Vzc19pZF90IGFuZCB0aHJlYWRfaXRfdCB0eXBlcyB0byB0aGUgc2VydmVyIGludGVyZmFjZQoJaW5zdGVhZCBvZiB1c2luZyB2b2lkKiwgYW5kIHJlbW92ZWQgYSBudW1iZXIgb2YgdHlwZSBjYXN0cy4KCgkqIGRsbHMvZ2RpL2dkaTE2LmMsIG9iamVjdHMvYnJ1c2guYzoKCU1vdmVkIENyZWF0ZUJydXNoSW5kaXJlY3QxNiBhbmQgQ3JlYXRlRElCUGF0dGVybkJydXNoMTYgdG8gZ2RpMTYuYy4KCgkqIGRsbHMvYWR2YXBpMzIvcmVnaXN0cnkuYywgZGxscy9rZXJuZWwvcmVnaXN0cnkxNi5jLAoJICBkbGxzL3NldHVwYXBpL3NldHVweF9tYWluLmMsIGRsbHMvc2hlbGwzMi9zaGVsbHJlZy5jLAoJICBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLCBpbmNsdWRlL21tc3lzdGVtLmgsIGluY2x1ZGUvd2luZS93aW5iYXNlMTYuaCwKCSAgaW5jbHVkZS93aW5udC5oLCBpbmNsdWRlL3dpbnJlZy5oLCB3aW4zMi9kZXZpY2UuYzoKCVJlbW92ZWQgTFB4eHggaGFuZGxlIHR5cGVzIHRoYXQgZG9uJ3QgZXhpc3QgdW5kZXIgV2luZG93cy4KCgkqIGRsbHMvd2lubW0vbG9sdmxkcnYuYzogUmVtb3ZlZCBlcnJvciBtZXNzYWdlIHRoYXQgY29uZnVzZXMgdXNlcnMuCgoJKiBkbGxzL3VzZXIvdGVzdHMvd2luLmMsIGRsbHMvTWFrZXRlc3QucnVsZXMuaW46CglCdWlsZCB0ZXN0cyB3aXRoIC1EU1RSSUNULgoKMjAwMi0xMC0wMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCS0gUmVvcmdhbml6ZSBEcmF3SXRlbS4KCS0gVW5pZnkgdGV4dCBhdHRyaWJ1dGUgc2VsZWN0aW9uIGJldHdlZW4gRHJhd3tTdWIsfUl0ZW0uCgktIFVzdWFsIGNsZWFudXBzLCBhbmQgc2ltcGxpZmljYXRpb25zLgoKCSogc2VydmVyL2V2ZW50LmMsIHNlcnZlci9oYW5kbGUuYywgc2VydmVyL2hhbmRsZS5oLCBzZXJ2ZXIvbGlzdC5oLAoJICBzZXJ2ZXIvbWFpbi5jLCBzZXJ2ZXIvbWFwcGluZy5jLCBzZXJ2ZXIvbXV0ZXguYywgc2VydmVyL25hbWVkX3BpcGUuYywKCSAgc2VydmVyL29iamVjdC5jLCBzZXJ2ZXIvb2JqZWN0LmgsIHNlcnZlci9wcm9jZXNzLmgsCgkgIHNlcnZlci9zZW1hcGhvcmUuYywgc2VydmVyL3RpbWVyLmM6CglBZGRlZCBzdXBwb3J0IGZvciBtdWx0aXBsZSBvYmplY3QgbmFtZXNwYWNlcywgYW5kIGEgYnVuY2ggZnVuY3Rpb25zCglmb3IgbWFuYWdpbmcgbGlua2VkIGxpc3RzLgoKCSogd2luZG93cy9zeXNjb2xvci5jOgoJRml4ZWQgR0RJIGhlYXAgc2VsZWN0b3IgaGFuZGxpbmcgYnJva2VuIGJ5IHByZXZpb3VzIGNoYW5nZS4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbHRpcHMuYzogR3n2cmd5ICdOb2cnIEplbmV5IDxub2dAc2RmLmxvbmVzdGFyLm9yZz4KCVVzZSB0aGUgbmV3IFN1YmNsYXNzaW5nIEFQSS4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUZhbmN5L29wdGltaXplZCBFbnN1cmVWaXNpYmxlIG1ldGhvZCB0aGF0IGVsaW1pbmF0ZXMgZmxpY2tlci4KCU1pbm9yIGNsZWFudXBzLgoKCSogZGxscy9jb21jdGwzMi9jb21tY3RybC5jLCBpbmNsdWRlL2NvbW1jdHJsLmgsCgkgIGRsbHMvY29tY3RsMzIvY29tY3RsMzIuaCwgZGxscy9jb21jdGwzMi9jb21jdGwzMi5zcGVjOgoJR3n2cmd5ICdOb2cnIEplbmV5IDxub2dAc2RmLmxvbmVzdGFyLm9yZz4KCUltcGxlbWVudGVkIHtHfFN9ZXRXaW5kb3dTdWJDbGFzcywgRGVmU3ViY2xhc3NQcm9jLAoJUmVtb3ZlV2luZG93U3ViY2xhc3MuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CgktIEZpeCB0aGUgc3ViaXRlbSBkcmF3aW5nIGNvZGUuCgktIEEgbG90IGZhc3RlciBkcmF3aW5nIGluIHJlcG9ydCBtb2RlLgoJLSBBIGdyZWF0IGRlYWwgb2YgY2xlYW51cCwgYW5kIHNpbXBsaWZpY2F0aW9ucy4KCgkqIGRsbHMvZ2RpL01ha2VmaWxlLmluLCBkbGxzL2dkaS90ZXN0cy8uY3ZzaWdub3JlLAoJICBkbGxzL2dkaS90ZXN0cy9NYWtlZmlsZS5pbiwgZGxscy9nZGkvdGVzdHMvZ2VuZXJhdGVkLmMsCgkgIGRsbHMva2VybmVsL3Rlc3RzL2dlbmVyYXRlZC5jLCBkbGxzL3VzZXIvdGVzdHMvLmN2c2lnbm9yZSwKCSAgZGxscy91c2VyL3Rlc3RzL01ha2VmaWxlLmluLCBkbGxzL3VzZXIvdGVzdHMvZ2VuZXJhdGVkLmMsIGNvbmZpZ3VyZSwKCSAgY29uZmlndXJlLmFjOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglBZGRlZCBzb21lIG1vcmUgYXV0b2dlbmVyYXRlZCB0ZXN0cy4KCgkqIHRvb2xzL3dpbmFwaS9jX3R5cGUucG0sIHRvb2xzL3dpbmFwaS90ZXN0cy5kYXQsCgkgIHRvb2xzL3dpbmFwaS93aW5hcGlfdGVzdDoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBNaW5vciBpbXByb3ZlbWVudHMuCgktIEFkZGVkIHRlc3RzIGZvciBHREkgYW5kIFVTRVIuCgoJKiBpbmNsdWRlL3dpbm50Lmg6IEd59nJneSAnTm9nJyBKZW5leSA8bm9nQHNkZi5sb25lc3Rhci5vcmc+CglBZGRlZCBhIGNvdXBsZSBvZiBkZWZpbmVzLgoKCSogd2luZG93cy9wYWludGluZy5jLCBpbmNsdWRlL3dpbnVzZXIuaDoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglGaXggVmFsaWRhdGV7UmVjdCxSZ259IHByb3RvdHlwZXMuCgoJKiB0b29scy93aW5lZHVtcC9NYWtlZmlsZS5pbiwgdG9vbHMvd2luZWR1bXAvbmUuYywgdG9vbHMvd2luZWR1bXAvcGUuYywKCSAgdG9vbHMvd2luZWR1bXAvd2luZWR1bXAuaDoKCVByZWxpbWluYXJ5IHN1cHBvcnQgZm9yIGR1bXBpbmcgTkUgYmluYXJpZXMuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CgktIEZpeCB0aGUgc3RhdGUgaWNvbiBoYW5kbGluZy4KCS0gRml4IGhhbmRsaW5nIG9mIG5ldyBpbWFnZSBsaXN0cy4KCS0gU21hbGwgY2xlYW51cHMuCgoJKiBkbGxzL21zdmNydC9leGNlcHQuYzoKCWV4Y2VwdF9oYW5kbGVyMzogU2V0IGNvcnJlY3QgJWVicCB3aGVuIGNhbGxpbmcgZXhjZXB0aW9uIGZpbHRlci4KCgkqIGRsbHMveDExZHJ2L3hyZW5kZXIuYzogRW5hYmxlIGFudGktYWxpYXNpbmcgZm9yIGFsbCBmb250IHNpemVzLgoKCSogb2JqZWN0cy9kYy5jOiBHcmVnIFR1cm5lciA8Z210dXJuZXIwMDdAYW1lcml0ZWNoLm5ldD4KCUNyZWF0ZURDOiBoYW5kbGUgKG5pbCwgPHN0cmluZz4sIC4uLikgZ3JhY2VmdWxseSBpZiBubyBkcml2ZXIgZm91bmQuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CgktIFJld29yayB0aGUge0luc2VydCxEZWxldGV9Q29sdW1uIGZ1bmN0aW9ucy4KCS0gRHJhd2luZyBvcHRpbWl6YXRpb25zIHdoZW4gYWRkaW5nL3JlbW92aW5nIGNvbHVtbnMuCgktIE1vcmUgY2xlYW51cHMsIGFuZCBzaW1wbGlmaWNhdGlvbnMuCgoJKiBkbGxzL2NvbW1kbGcvY2RsZzMyLmMsIGRsbHMva2VybmVsL2tlcm5lbF9tYWluLmMsCgkgIGRsbHMvdXNlci91c2VyX21haW4uYywgb2JqZWN0cy9nZGlvYmouYywgd2luZG93cy9zeXNjb2xvci5jOgoJTWFrZSBzdXJlIHRoaW5ncyBzdGlsbCB3b3JrIGlmIDE2LWJpdCBkbGxzIGNhbm5vdCBiZSBsb2FkZWQuCgoJKiBkbGxzL01ha2VkbGwucnVsZXMuaW4sIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvTWFrZXRlc3QucnVsZXMuaW4sCgkgIGRsbHMvZ2RpL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwKCSAgZGxscy9semV4cGFuZC9NYWtlZmlsZS5pbiwgZGxscy9tYWtlX2RsbHMsIGRsbHMvbXN2aWRlby9NYWtlZmlsZS5pbiwKCSAgZGxscy9udGRsbC9NYWtlZmlsZS5pbiwgZGxscy91c2VyL01ha2VmaWxlLmluLAoJICBkbGxzL3ZlcnNpb24vTWFrZWZpbGUuaW4sIGRsbHMvd2luMzJzL01ha2VmaWxlLmluLAoJICBkbGxzL3dpbmFzcGkvTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vTWFrZWZpbGUuaW4sIE1ha2UucnVsZXMuaW4sCgkgIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjOgoJQWRkZWQgLS1kaXNhYmxlLXdpbjE2IGNvbmZpZ3VyZSBvcHRpb24uCgoJKiBkbGxzL2RkcmF3L2RzdXJmYWNlL3VzZXIuYywgZGxscy93aW5tbS93aW5lbmFzL2F1ZGlvLmMsCgkgIHByb2dyYW1zL3Byb2dtYW4vZ3JwZmlsZS5jOgoJRml4ZWQgd2FybmluZ3MuCgoJKiB1bmljb2RlL01ha2VmaWxlLmluLCB1bmljb2RlL2NfMjA5MzIuYywgdW5pY29kZS9jcG1hcC5wbCwKCSAgdW5pY29kZS9jcHRhYmxlLmM6CglBZGRlZCBFVUMtSlAgZW5jb2RpbmcgYXMgY29kZXBhZ2UgMjA5MzIgKHdpdGggdGhlIGhlbHAgb2YgQXJpYwoJU3Rld2FydCkuCgoJKiBkbGxzL3VybG1vbi91bW9uLmMsIGdyYXBoaWNzL3gxMWRydi9vcGVuZ2wuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSBpc3N1ZXMgZm91bmQgYnkgd2luYXBpX2NoZWNrLgoKCSogdG9vbHMvd2luYXBpL3dpbjMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9jaGVjaywKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9wYXJzZXIucG06CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gQVBJIGZpbGUgdXBkYXRlLgoJLSBNaW5vciBidWcgZml4ZXMuCgoJKiBpbmNsdWRlL3dpbm50Lmg6IFBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQWRkZWQgc29tZSBtb3JlIHVzZWZ1bCBtYWNyb3MuCgoyMDAyLTEwLTAxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9nbHUzMi9NYWtlZmlsZS5pbiwgZGxscy9vcGVuZ2wzMi9NYWtlZmlsZS5pbiwKCSAgZGxscy94MTFkcnYvTWFrZWZpbGUuaW4sIE1ha2UucnVsZXMuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLAoJICBkbGxzL2QzZDgvTWFrZWZpbGUuaW4sIGRsbHMvZGRyYXcvTWFrZWZpbGUuaW46CglNb3ZlZCBYIGZsYWdzIGFuZCBsaWJyYXJpZXMgb3V0IG9mIE1ha2UucnVsZXMgaW50byB0aGUgbWFrZWZpbGVzIHRoYXQKCW5lZWQgdGhlbS4KCgkqIGRsbHMvdXNlci9yZXNvdXJjZXMvZGlzcGxheS5yYywgZGxscy91c2VyL3Jlc291cmNlcy9tb3VzZS5yYzoKCVVzZSBjb3JyZWN0IDE2LWJpdCByZXNvdXJjZXMgdG8gYXZvaWQgd2FybmluZ3MuCgoJKiBkb2N1bWVudGF0aW9uL2RlYnVnZ2VyLnNnbWw6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJVXBkYXRlIGRvY3VtZW50YXRpb24gb2YgaG93IHRvIGludm9rZSB3aW5lZGJnLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvLmN2c2lnbm9yZSwgZGxscy9rZXJuZWwvdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMva2VybmVsL3Rlc3RzL2dlbmVyYXRlZC5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglBZGRlZCBuZXcgYXV0b2dlbmVyYXRlZCB0ZXN0IGZvciBkYXRhIHN0cnVjdHVyZSBwYWNraW5nLgoKCSogdG9vbHMvd2luYXBpL01ha2VmaWxlLmluLCB0b29scy93aW5hcGkvY19wYXJzZXIucG0sCgkgIHRvb2xzL3dpbmFwaS9jX3R5cGUucG0sIHRvb2xzL3dpbmFwaS90ZXN0cy5kYXQsCgkgIHRvb2xzL3dpbmFwaS90ZXN0cy5wbSwgdG9vbHMvd2luYXBpL3dpbmFwaS5wbSwKCSAgdG9vbHMvd2luYXBpL3dpbmFwaV9jbGVhbnVwLCB0b29scy93aW5hcGkvd2luYXBpX2V4dHJhY3QsCgkgIHRvb2xzL3dpbmFwaS93aW5hcGlfdGVzdCwgdG9vbHMvd2luYXBpL3dpbmFwaV90ZXN0X29wdGlvbnMucG0sCgkgIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2Z1bmN0aW9uLnBtOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIEFkZGVkIGEgbmV3IHRvb2wgd2luYXBpX3Rlc3QgZm9yIGdlbmVyYXRpbmcgdGVzdHMuCgktIEFkZGVkIGEgZGF0YSBzdHJ1Y3R1cmUgcGFja2luZyB0ZXN0IHRvIHdpbmFwaV90ZXN0LgoJLSBSZW9yZ2FuaXplZCBhbmQgb3B0aW1pemVkIGEgZmV3IHRoaW5ncy4KCgkqIGluY2x1ZGUvb3B0aW9ucy5oLCBpbmNsdWRlL3RocmVhZC5oLCBpbmNsdWRlL3dpbmJhc2UuaCwKCSAgaW5jbHVkZS93aW5lL3NlcnZlci5oLCBpbmNsdWRlL3dpbm50LmgsIG1pc2Mvb3B0aW9ucy5jLAoJICBtaXNjZW11L21haW4uYywgc2NoZWR1bGVyL3N5c2RlcHMuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQWRkZWQgYSBHTlUgQyBpbXBsZW1lbnRhdGlvbiBvZiBzb21lIG9mIHRoZSBERUNMU1BFQ18gbWFjcm9zIGFuZCB1c2VkCgl0aGVtIHdoZXJldmVyIHBvc3NpYmxlLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJLSBGaXggTElTVCBtb2RlLCBicm9rZW4gYnkgcHJldmlvdXMgY2hhbmdlcy4KCS0gSW1wbGVtZW50IEdldEl0ZW1SZWN0IGluIHRlcm1zIG9mIEdldEl0ZW1NZWFzdXJlbWVudHMuCgktIEltcHJvdmVtZW50cyBpbiBkZWJ1ZyB0cmFjZXMuCgktIE1hbnkgYnVnIGZpeGVzLCBjb21wZWxldGUgaW1wbGVtZW50YXRpb24gZm9yIEdldEl0ZW1NZWFzdXJlbWVudHMuCgktIExvdHMgb2YgY29kZSBjbGVhbnVwcywgc2ltcGxpZmljYXRpb25zLgoJLSBEb2N1bWVudGF0aW9uIHVwZGF0ZXMuCgoyMDAyLTA5LTMwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jOiBKZWZmIFNtaXRoIDx3aHlkb3VidEBob3RtYWlsLmNvbT4KCVBhdGhJc0V4ZTogY29ycmVjdGVkIGFuZCBhZGRlZCBleGVjdXRhYmxlIHR5cGVzLgoKCSogd2luZG93cy9zcHkuYzogR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gVGhlIFRUTV8gbWVzc2FnZSBuZWVkZWQgdG8gYmUgaW4gY29ycmVjdCBvcmRlci4KCS0gQWRkZWQgVFRNX0dFVEJVQkJMRVNJWkUuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IFBhdWwgUnVwZSA8cHJ1cGVAbXlyZWFsYm94LmNvbT4KCVByZXZlbnQgY3Jhc2ggd2hlbiBsaXN0dmlldyB0cmFjZSBsb2dnaW5nIGlzIG9uLgoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWFpbi5jOiBDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglJbXBsZW1lbnQgU3dhcFRleHR1cmVIYW5kbGVzIG1ldGhvZC4KCgkqIGluY2x1ZGUvY29tbWRsZy5oOiBHefZyZ3kgJ05vZycgSmVuZXkgPG5vZ0BzZGYubG9uZXN0YXIub3JnPgoJRGVmaW5lIFNORE1TRy4KCjIwMDItMDktMjkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBwcm9ncmFtcy93aW5lZGJnL3N0YWJzLmM6IEdyZWcgVHVybmVyIDxnbXR1cm5lcjAwN0BhbWVyaXRlY2gubmV0PgoJQXR0ZW1wdCBhdCBoYW5kbGluZyAnaycgYW5kICdCJyBzeW1ib2xzLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBHdXkgQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJLSBFbGltaW5hdGUgZXh0cmEgYmFja2dyb3VuZCBmaWxscy4KCS0gRWxpbWluYXRlIGJvZ3VzIGVycm9yIG1lc3NhZ2VzLgoKCSogd2luMzIvZXhjZXB0LmM6IEZpeGVkIGEgY291cGxlIG9mIGJ1Z3MgaW4gdGhlIGRlYnVnZ2VyIHN0YXJ0dXAuCgoJKiBkbGxzL01ha2VmaWxlLmluLCBkbGxzL21ha2VfZGxsczoKCURvbid0IGJ1aWxkIGQzZDggaWYgd2UgZG9uJ3QgaGF2ZSBPcGVuR0wgc3VwcG9ydC4KCgkqIGRsbHMvZGRyYXcvbWVzYV9wcml2YXRlLmg6IEFkZGVkIGNoZWNrIGZvciBPcGVuR0wuCgoJKiBpbmNsdWRlL3dpbnVzZXIuaDogR3n2cmd5ICdOb2cnIEplbmV5IDxub2dAc2RmLmxvbmVzdGFyLm9yZz4KCUFkZGVkIHtHfFN9ZXRXaW5kb3dMb25nUHRyLgoKCSogaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9jdXN0Y250bC5oOgoJR3n2cmd5ICdOb2cnIEplbmV5IDxub2dAc2RmLmxvbmVzdGFyLm9yZz4KCUluaXRpYWwgaW1wbGVtZW50YXRpb24gb2YgY3VzdG9tIGNvbnRyb2wgaGVhZGVyLgoKCSogZGxscy94MTFkcnYveHZpZG1vZGUuYzogSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJVXNlIGNvcnJlY3QgY2hlY2sgdG8gc2VlIGlmIHhzZXJ2ZXIgc3VwcG9ydHMgeHZpZG1vZGUuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CgktIENhY2hlIEdXTF9TVFlMRSwgdG8gYXZvaWQgZmV0Y2hpbmcgaW4gdmlydHVhbGx5IGV2ZXJ5IGZ1bmN0aW9uLgoJLSBTZXBhcmF0ZSBHZXRPcmlnaW4gZnJvbSBHZXRBbGxNZWFzdXJlcyBhcyBpdCBpcyBpdGVtIGluZGVwZW5kZW50LAoJICBhbmQgcmVuYW1lIGZ1bmN0aW9uIHRvIHJlZmxlY3QgdGhlIGNoYW5nZS4KCS0gU21hbGwgY2xlYW51cHMuCgoJKiBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jOiBPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUZpeCBmb3Igc291bmRjYXJkcyB0aGF0IGNhbid0IGRvIDgtYml0IGF1ZGlvLCBvbmx5IDE2LWJpdCAoYWxzbwoJY2hlY2tlZCBmb3Igc291bmRjYXJkcyB0aGF0IGNhbid0IGRvIHN0ZXJlbyB3aGlsZSBJIHdhcyBhdCBpdCkuCgoJKiBkbGxzL2RkcmF3L2QzZGV4ZWN1dGVidWZmZXIuYzoKCUNocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCWV4ZWN1dGU6IEFjdGl2YXRlIHRoZSB2aWV3cG9ydCBwYXNzZWQgYXMgcGFyYW1ldGVyIHdoZW4gZXhlY3V0aW5nCglidWZmZXIuCgoJKiBkbGxzL2RkcmF3L2QzZHZpZXdwb3J0LmM6IENocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUltcGxlbWVudCBJRGlyZWN0M0RWaWV3cG9ydDJfRGVsZXRlTGlnaHQuCgoJKiBkbGxzL21zdmNydC9zY2FuZi5oOiBKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglGdW5jdGlvbnMgc3NjYW5mIGFuZCBzd3NjYW5mIG5vdyBleHBlY3Qgc3RyaW5ncyB0byBiZSB0ZXJtaW5hdGVkIHdpdGgKCW51bGwgKDApIGluc3RlYWQgb2YgRU9GICgtMSkuCgoJKiB0b29scy93aW5lbWFrZXI6IEJpbGwgTWVkbGFuZCA8YmlsbG1lZGxhbmRAbG9vay5jYT4KCU1pbm9yIHR5cG8gZml4LgoKMjAwMi0wOS0yNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVJlbW92ZSBpdGVtIGZyb20gdGhlIGxpc3QsIGlmIHdlIGZhaWwgdG8gaW5pdGlhbGl6ZSBpdCBhdCBpbnNlcnQKCXRpbWUuCgoJKiBkbGxzL2QzZDgvTWFrZWZpbGUuaW4sIGRsbHMvZDNkOC9iYXNldGV4dHVyZS5jLAoJICBkbGxzL2QzZDgvY3ViZXRleHR1cmUuYywgZGxscy9kM2Q4L2QzZDguc3BlYywgZGxscy9kM2Q4L2QzZDhfbWFpbi5jLAoJICBkbGxzL2QzZDgvZDNkOF9wcml2YXRlLmgsIGRsbHMvZDNkOC9kZXZpY2UuYywgZGxscy9kM2Q4L2RpcmVjdHguYywKCSAgZGxscy9kM2Q4L2luZGV4YnVmZmVyLmMsIGRsbHMvZDNkOC9yZXNvdXJjZS5jLCBkbGxzL2QzZDgvc3VyZmFjZS5jLAoJICBkbGxzL2QzZDgvc3dhcGNoYWluLmMsIGRsbHMvZDNkOC90ZXh0dXJlLmMsIGRsbHMvZDNkOC92ZXJ0ZXhidWZmZXIuYywKCSAgZGxscy9kM2Q4L3ZvbHVtZS5jLCBkbGxzL2QzZDgvdm9sdW1ldGV4dHVyZS5jLCBkbGxzL01ha2VmaWxlLmluOgoJSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCUluaXRpYWwgRDNEOCBpbXBsZW1lbnRhdGlvbi4KCgkqIGluY2x1ZGUvZDNkOHR5cGVzLmg6IEZpeGVkIG5hbWVsZXNzIHVuaW9uL3N0cnVjdCBkZWNsYXJhdGlvbi4KCgkqIGRvY3VtZW50YXRpb24vd2luZWxpYi1iaW5kbGxzLnNnbWw6CglCaWxsIE1lZGxhbmQgPGJpbGxtZWRsYW5kQGxvb2suY2E+CglFeHBhbmRlZCB0aGUgIkxpbnV4IExpYnJhcmllcyBhcyBEbGxzIiB3aW5lbGliIHNlY3Rpb24gYW5kIGJyb3VnaHQgaXQKCXVwIHRvIGRhdGUuCgoJKiB0b29scy93aW5lbWFrZXI6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglVcGRhdGVkIHRoZSB3cmFwcGVyIGNvZGUgdG8gbWF0Y2ggdGhlIG5ldyBuYW1pbmcgZXhlY3V0YWJsZSBhbmQKCWxpYnJhcnkgY29udmVudGlvbnMuCglFeGVjdXRhYmxlcyBkb24ndCBuZWVkIHNwZWMgZmlsZXMuCglSZW1vdmVkIHVudXNlZCBjb2RlLgoKCSogZGxscy93aW5pbmV0L2h0dHAuYywgZGxscy93aW5pbmV0L2ludGVybmV0LmMsCgkgIGRsbHMvd2luaW5ldC91cmxjYWNoZS5jLCBkbGxzL3dpbmluZXQvd2luaW5ldC5zcGVjLAoJICBkbGxzL3VybG1vbi91bW9uLmMsIGRsbHMvdXJsbW9uL3VybG1vbi5zcGVjOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQGFsdW0ud3BpLmVkdT4KCUFkZGVkIHN0dWJzIGZvciBIdHRwRW5kUmVxdWVzdEEvVywgSW50ZXJuZXRSZWFkRmlsZUV4QS9XLAoJU2V0VXJsQ2FjaGVFbnRyeUdyb3VwLCBDcmVhdGVVcmxDYWNoZUdyb3VwLCBEZWxldGVVcmxDYWNoZUdyb3VwLgoKCSogZGxscy91c2VyL3VzZXIxNi5jLCB3aW5kb3dzL2N1cnNvcmljb24uYzoKCU1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuZGU+CglNb3ZlZCBzb21lIDE2LWJpdCBmdW5jdGlvbnMgZnJvbSB3aW5kb3dzL2N1cnNvcmljb24uYyB0bwoJZGxscy91c2VyL3VzZXIxNi5jLgoKCSogZmlsZXMvZG9zX2ZzLmM6IEd59nJneSAnTm9nJyBKZW5leSA8bm9nQHNkZi5sb25lc3Rhci5vcmc+CglDaGVjayBmb3IgYW4gZW1wdHkgc3RyaW5nIGluIERPU0ZTX0ZpbmROZXh0RXggdG8gYXZvaWQgYW4gdW5uZWNlc3NhcnkKCWZhaWx1cmUuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CgktIEZpeCBjcmFzaGVzIGluIGRlYnVnIG1vZGUuCgktIEZpeCBzb21lIGZvY3VzIHJlY3RhbmdsZSBwcm9ibGVtcy4KCS0gQmV0dGVyIGRlYnVnZ2luZyBvdXRwdXQuCgktIE1vcmUgY2xlYW51cHMuCgoJKiBkbGxzL2RkcmF3L2QzZGV4ZWN1dGVidWZmZXIuYzoKCUNocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCVJlbW92ZSB3cm9uZyBhbmQgdXNlbGVzcyB0cmFuc2Zvcm1hdGlvbiBvZiB6IHByb2plY3RlZCBjb29yZGluYXRlcy4KCUFkZCBub3JtYWxzIHdvcmxkIHRyYW5zZm9ybWF0aW9uLgoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLCBkbGxzL2RkcmF3L21lc2FfcHJpdmF0ZS5oOgoJQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJRml4IGRldmljZXMgY3JlYXRpb24gYnJva2VuIGNvZGUuIE5vdywgdGhlIGRpc3BsYXkgYW5kIHRoZSBkcmF3YWJsZQoJYXJlIHJldHJpZXZlIHRocm91Z2ggR0RJIGVzY2FwZSBzZXF1ZW5jZXMgYW5kIHN0b3JlZCBpbiB0aGUgcHJpdmF0ZQoJZGF0YS4gQWRkIGRlc2FsbG9jYXRpb24gb2YgdGhlIGRldmljZSBwcml2YXRlIGRhdGEuCgoJKiBkbGxzL2x6ZXhwYW5kL01ha2VmaWxlLmluLCBkbGxzL2x6ZXhwYW5kL2x6ZXhwYW5kMTYuYywKCSAgZGxscy9semV4cGFuZC9semV4cGFuZF9tYWluLmM6CglHefZyZ3kgJ05vZycgSmVuZXkgPG5vZ0BzZGYubG9uZXN0YXIub3JnPgoJU3BsaXQgdGhlIDE2LWJpdCBmdW5jaXRvbnMgaW50byBhIHNlcGVyYXRlIGZpbGUuCgoyMDAyLTA5LTI2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy94MTFkcnYvZXZlbnQuYzoKCUZpeGVkIFgxMSBlcnJvciBjb2RlIG1pc21hdGNoIGFuZCByZW1vdmVkIGRlYnVnZ2luZyBvdXRwdXQuCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmM6IEdyZWcgVHVybmVyIDxnbXR1cm5lcjAwN0BhbWVyaXRlY2gubmV0PgoJLSBmaXhlZCB1cCBzb21lIHNlbWFudGljIG1pc3VuZGVyc3RhbmRpbmdzIHVzaW5nIHRoZSBoZWxwZnVsIGFkdmljZSBvZgoJICBSZWluIEtsYXplcwoJLSBhZGRlZCBTT19TTkRUSU1FTyBzdXBwb3J0CgktIGFkZGVkIGlmZGVmJ3MgZm9yIGNvbnNpc3RlbmN5IHdpdGggcmVzdCBvZiBzb2NrZXQuYwoKCSogdG9vbHMvd2luZW1ha2VyOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQnJpbmcgdGhlIG5hbWluZyBvZiBsaWJyYXJpZXMgYW5kIGV4ZWN1dGFibGUgdXAgdG8gY3VycmVudCBzdGFuZGFyZHMuCglJbnN0YWxsIGRsbHMgYW5kIGV4ZWN1dGFibGVzIGluIGRsbGRpci4KCUl0IGlzIG5vIGxvbmdlciBuZWNlc3NhcnkgdG8gaW1wb3J0IG50ZGxsLmRsbC4KCgkqIGRsbHMvZGRyYXcvZDNkdmlld3BvcnQuYzogQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJQWRkZWQgZGVzYWxsb2NhdGlvbiBvZiB0aGUgdmlld3BvcnQgcHJpdmF0ZSBkYXRhLgoKCSogZGxscy9kZHJhdy9kM2RsaWdodC5jOiBDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglBZGRlZCBhbGxvY2F0aW9uL2Rlc2FsbG9jYXRpb24gb2YgdGhlIGxpZ2h0IHByaXZhdGUgZGF0YS4KCgkqIGRsbHMvZGRyYXcvZHN1cmZhY2UvbWFpbi5jOiBDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglFbmFibGUgY3JlYXRpb24gb2Ygb3VyIE9wZW5HTCBEaXJlY3QzRCBkZXZpY2UgZnJvbSBhIHN1cmZhY2UgdXNlZCBhcwoJcmVuZGVyaW5nIHRhcmdldC4KCUVuYWJsZSBjcmVhdGlvbiBvZiBhIHRleHR1cmUgZnJvbSBhIHN1cmZhY2UuCgoyMDAyLTA5LTI1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS90c194bGliLmgsIHByb2dyYW1zL01ha2Vwcm9nLnJ1bGVzLmluLAoJICBwcm9ncmFtcy9hdml0b29scy9NYWtlZmlsZS5pbiwgdG9vbHMvbWFrZV9YMTF3cmFwcGVycywKCSAgdG9vbHMvd2luZXdyYXBwZXIsIE1ha2UucnVsZXMuaW4sIE1ha2VmaWxlLmluLCBjb25maWd1cmUsCgkgIGNvbmZpZ3VyZS5hYywgZGxscy9NYWtlZGxsLnJ1bGVzLmluLCBkbGxzL01ha2V0ZXN0LnJ1bGVzLmluLAoJICBkbGxzL3gxMWRydi9NYWtlZmlsZS5pbiwgZGxscy94MTFkcnYvWDExX2NhbGxzLAoJICBkbGxzL3gxMWRydi90c194bGliLmMsIGRsbHMveDExZHJ2L3RzX3hsaWIuaCwKCSAgZGxscy94MTFkcnYveDExZHJ2LnNwZWMsIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmM6CglNb3ZlZCB0c194bGliLmMgaW50byB4MTFkcnYgYW5kIHJlbW92ZWQgbGlid2luZV90c3gxMS4KCgkqIHdpbmRvd3Mvd2luLmM6CglBZGRlZCBtaXNzaW5nIFdJTl9SZWxlYXNlUHRyIChzcG90dGVkIGJ5IERtaXRyeSBUaW1vc2hrb3YpLgoKCSogY29udHJvbHMvRURJVC5UT0RPLCBjb250cm9scy9lZGl0LmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJLSBTdG9wIHBhc3NpbmcgaHduZCBhcm91bmQgd2hlbiB3ZSdyZSBwYXNzaW5nIEVESVRTVEFURS4KCS0gTWVyZ2UgdGhlIG5vbi1vYnNvbGV0ZSBiaXRzIG9mIEVESVQuVE9ETyBpbnRvIGVkaXQuYy4KCS0gU29tZSBjbGVhbnVwcywgYW5kIHNpbXBsaWZpY2F0aW9ucy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogUGF1bCBSdXBlIDxwcnVwZUBteXJlYWxib3guY29tPgoJLSBJbml0aWFsaXplIG1lbW9yeSB0byBwcmV2ZW50IGNyYXNoZXMgd2hlbiAtZGVidWdtc2cgK2xpc3R2aWV3IGlzIG9uLgoJLSBGaXggdmFyaW91cyBhcnJheSBib3VuZHMgcmVsYXRlZCBlcnJvcnMuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYzogUGF1bCBSdXBlIDxwcnVwZUBteXJlYWxib3guY29tPgoJUmVzaXplIGR5bmFtaWMgcG9pbnRlciBhcnJheSBtb3JlIGNhcmVmdWxseSB3aGVuIGFkZGluZyBuZXcgZW50cmllcy4KCgkqIGRsbHMvZGRyYXcvbWVzYS5jOiBDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglBZGRlZCBzdXBwb3J0IGZvciBQT0lOVCwgV0lSRUZSQU1FIGFuZCBTT0xJRCBmaWxsIG1vZGVzLgoKCSogZGxscy9kZHJhdy9kM2R0ZXh0dXJlLmM6IENocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUlEaXJlY3QzRFRleHR1cmUySW1wbF9Mb2FkOiB3aGVuIHRoZSBzdXJmYWNlIGlzIG5vdCBhbGxvY2F0ZWQgYW5kIG5vCglsb2NhdGlvbiBhcmUgc3BlY2lmaWVkLCBzZXQgaXQgdG8gdmlkZW8gbWVtb3J5LgoKCSogZGxscy9vcGVuZ2wzMi9vcGVuZ2xfZXh0LmgsIGRsbHMvb3BlbmdsMzIvb3BlbmdsX25vcm0uYywKCSAgZGxscy9vcGVuZ2wzMi93Z2wuYywgZGxscy94MTFkcnYveDExZHJ2LnNwZWMsCgkgIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmMsIGdyYXBoaWNzL3gxMWRydi9vcGVuZ2wuYywKCSAgaW5jbHVkZS93aW5lX2dsLmgsIGluY2x1ZGUveDExZHJ2LmgsIGRsbHMvZGRyYXcvTWFrZWZpbGUuaW4sCgkgIGRsbHMvZGRyYXcvbWFpbi5jLCBkbGxzL2RkcmF3L21lc2FfcHJpdmF0ZS5oLAoJICBkbGxzL29wZW5nbDMyL01ha2VmaWxlLmluLCBkbGxzL29wZW5nbDMyL21ha2Vfb3BlbmdsLAoJICBkbGxzL29wZW5nbDMyL29wZW5nbF9leHQuYzoKCUltcG9ydCB3aW5lX3RzeDExX2xvY2svdW5sb2NrIGRpcmVjdGx5IGZyb20geDExZHJ2IGluIG9wZW5nbDMyIGFuZAoJZGRyYXcsIHNvIHRoYXQgdGhleSBkb24ndCBuZWVkIHRvIGxpbmsgd2l0aCBsaWJ3aW5lX3RzeDExLgoJUmVtb3ZlZCBoZWFkZXIgd2luZV9nbC5oLgoKCSogZGxscy91c2VyL3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMvdXNlci90ZXN0cy9NYWtlZmlsZS5pbiwKCSAgZGxscy91c2VyL3Rlc3RzL3dpbi5jLCBpbmNsdWRlL3dpbi5oLCBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsCgkgIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci90cmFjZS5jLCBzZXJ2ZXIvd2luZG93LmMsIHdpbmRvd3Mvd2luLmM6CglGaXhlZCBhIG51bWJlciBvZiBidWdzIGluIHRoZSBoYW5kbGluZyBvZiB3aW5kb3cgcGFyZW50IGFuZCBvd25lciBhbmQKCWFkZGVkIGEgcmVncmVzc2lvbiB0ZXN0IChiYXNlZCBvbiB0aGUgd29yayBvZiBCaWxsIE1lZGxhbmQpLgoKCSogZG9jdW1lbnRhdGlvbi9zYW1wbGVzL2NvbmZpZywgbG9hZGVyL2xvYWRvcmRlci5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUJ5IGRlZmF1bHQsIHdlIHNob3VsZCB1c2Ugb3VyIG93biBkbGxzLgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jOiBHcmVnIFR1cm5lciA8Z210dXJuZXIwMDdAYW1lcml0ZWNoLm5ldD4KCUFjY2VwdCB0aW1lX3QgYXJndW1lbnQgaW4gV1Nfc2V0c29ja29wdC9XU19TT19SQ1ZUSU1FTzsgdHJhbnNsYXRlIHRvCglzdHJ1Y3QgdGltZXZhbCBmb3IgZWRpZmljYXRpb24gb2Ygc2V0c29ja29wdC4KCjIwMDItMDktMjQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB0b29scy9tYWtlX1gxMXdyYXBwZXJzLCBkbGxzL3gxMWRydi9kZ2EyLmMsIGRsbHMveDExZHJ2L2V2ZW50LmMsCgkgIGRsbHMveDExZHJ2L2tleWJvYXJkLmMsIGRsbHMveDExZHJ2L21vdXNlLmMsIGRsbHMveDExZHJ2L3Njcm9sbC5jLAoJICBkbGxzL3gxMWRydi93aW5kb3cuYywgZGxscy94MTFkcnYvd2lucG9zLmMsCgkgIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmMsIGRsbHMveDExZHJ2L3h2aWRtb2RlLmMsCgkgIGdyYXBoaWNzL3gxMWRydi9iaXRtYXAuYywgZ3JhcGhpY3MveDExZHJ2L2RpYi5jLAoJICBncmFwaGljcy94MTFkcnYvZ3JhcGhpY3MuYywgaW5jbHVkZS90c194Zjg2ZGdhMi5oLAoJICBpbmNsdWRlL3RzX3hmODZ2bW9kZS5oLCBpbmNsdWRlL3RzX3hsaWIuaCwgaW5jbHVkZS90c194dXRpbC5oOgoJUmVtb3ZlZCBzb21lIG1vcmUgVFNYMTEgZnVuY3Rpb25zIGFuZCBmaWxlcy4KCgkqIGxvYWRlci9uZS9jb252ZXJ0LmMsIGxvYWRlci9uZS9tb2R1bGUuYywgbWVtb3J5L2Vudmlyb24uYywKCSAgbWVtb3J5L2dsb2JhbC5jLCBtZW1vcnkvc2VsZWN0b3IuYywgb2JqZWN0cy9jbGlwcGluZy5jLCBvYmplY3RzL2RjLmMsCgkgIG9iamVjdHMvZGN2YWx1ZXMuYywgb2JqZWN0cy9tZXRhZmlsZS5jLCBvYmplY3RzL3BhbGV0dGUuYywKCSAgd2luZG93cy9jdXJzb3JpY29uLmMsIHdpbmRvd3MvZGlhbG9nLmMsIHdpbmRvd3MvZHJpdmVyLmMsCgkgIHdpbmRvd3MvaG9vay5jLCB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy9xdWV1ZS5jLAoJICB3aW5kb3dzL3dpbnByb2MuYywgZGxscy9nZGkvZ2RpMTYuYywgZGxscy9nZGkvbWZkcnYvaW5pdC5jLAoJICBkbGxzL2dkaS9wcmludGRydi5jLCBkbGxzL25ldGFwaTMyL2FjY2Vzcy5jLCBkbGxzL25ldGFwaTMyL2Jyb3dzci5jLAoJICBkbGxzL25ldGFwaTMyL3drc3RhLmMsIGRsbHMvdXNlci9tc2cxNi5jLCBsb2FkZXIvbW9kdWxlLmMsCgkgIGxvYWRlci9yZXNvdXJjZS5jLCBsb2FkZXIvdGFzay5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIGlzc3VlcyBmb3VuZCBieSB3aW5hcGlfY2hlY2suCgoJKiB0b29scy93aW5hcGkvd2luMzIuYXBpLCB0b29scy93aW5hcGkvd2luYXBpLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2RvY3VtZW50YXRpb24ucG06CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gRG9uJ3QgYWRkIHN0YW5kYXJkIGhlYWRlcnMgZm9yIHRoZSBkbGwgc2VwYXJhdGlvbiBoYWNrcy4KCS0gQVBJIGZpbGVzIHVwZGF0ZS4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gTG9jYWxpemUgb3JpZ2luLCBsb2NhdGlvbiwgYW5kIHJlY3RhbmdsZSBjb21wdXRhdGlvbi4KCS0gU3VwcG9ydCBzdGF0ZSBpY29ucyBpbiBMVlNfSUNPTiBzdHlsZS4KCS0gRHJhdyBvbmx5IGl0ZW1zIHRoYXQgYXJlIGluIHRoZSBjbGlwIGJveC4KCS0gRHJhdyBub24tc2VsZWN0ZWQgaXRlbXMgZmlyc3QgdGhlbiB0aGUgc2VsZWN0ZWQgb25lcyBiZWNhdXNlIGxhcmdlCgkgIGljb25zIG1heSBvdmVybGFwIGVhY2ggb3RoZXIuCgktIENvcnJlY3QgaW52YWxpZGF0aW9uIHJlY3RhbmdsZXMgZm9yIGl0ZW1zLgoJLSBDb3JyZWN0IGRyYXdpbmcgb2YgbGFyZ2UgaWNvbnMuCgktIEVsaW1pbmF0ZSBkaXZpZGUgYnkgemVybyBjYXNlcyBpbiBzY3JvbGxpbmcuCgktIEludmFsaWRhdGUgc2VsZWN0ZWQgaXRlbXMgcHJpb3IgdG8gc2V0dGluZyB3aW5kb3cgbG9zaW5nIGZvY3VzLgoKCSogZGxscy9jb21jdGwzMi9zdGF0dXMuYywgaW5jbHVkZS93aW4uaCwgZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYzoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglTbWFsbCBjbGVhbnVwcywgdXBkYXRlZCBkb2N1bWVudGF0aW9uLgoKCSogZGxscy94MTFkcnYvd2lucG9zLmM6IEZpeGVkICNlbmRpZi4KCgkqIHRvb2xzL21ha2VfWDExd3JhcHBlcnMsIGRsbHMveDExZHJ2L2V2ZW50LmMsIGRsbHMveDExZHJ2L2tleWJvYXJkLmMsCgkgIGRsbHMveDExZHJ2L3dpbnBvcy5jLCBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jLAoJICBncmFwaGljcy94MTFkcnYvZGliLmMsIGluY2x1ZGUvdHNfc2hhcGUuaCwgaW5jbHVkZS90c194Zjg2ZGdhLmgsCgkgIGluY2x1ZGUvdHNfeGY4NmRnYTIuaCwgaW5jbHVkZS90c194Zjg2dm1vZGUuaCwgaW5jbHVkZS90c194bGliLmgsCgkgIGluY2x1ZGUvdHNfeHJlc291cmNlLmgsIGluY2x1ZGUvdHNfeHNobS5oLCBpbmNsdWRlL3RzX3h1dGlsLmgsCgkgIGluY2x1ZGUvdHNfeHZpZGVvLmg6CglSZW1vdmVkIGEgYnVuY2ggb2Ygbm8gbG9uZ2VyIHVzZWQgVFNYIHdyYXBwZXJzLgoKCSogZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYzogUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIGlzc3VlcyBmb3VuZCBieSB3aW5hcGlfY2hlY2suCgoJKiBkbGxzL2NvbWNhdC9jb21jYXRfbWFpbi5jLCBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbHJlZy5jLCBpbmNsdWRlL3dpbmRlZi5oOgoJTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5kZT4KCUNvbnZlcnQgSEtFWSB0byBhIHZvaWQqLgoKCSogdG9vbHMvd2luYXBpL3dpbjMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9sb2NhbC5wbToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBBZGRlZCBzdXBwb3J0IGZvciAlc3RydWN0MTYgKHVzZWQgYnkgQ0xTSUQpLgoJLSBBUEkgZmlsZXMgdXBkYXRlLgoKCSogZG9jdW1lbnRhdGlvbi9yZWdpc3RyeS5zZ21sLCBkb2N1bWVudGF0aW9uL3NhbXBsZXMvY29uZmlnLAoJICBtaXNjL3JlZ2lzdHJ5LmM6CglSYXVsIERpYXMgPHJhdWxAZGlhcy5jb20uYnI+CglBZGRlZCBuZXcgIkdsb2JhbFJlZ2lzdHJ5RGlyIiBvcHRpb24uCgoJKiBpbmNsdWRlL3dpbnNvY2suaDogUGF0cmljayBKLiBNY05lcnRobmV5IDxwYXRAbWNuZXJ0aG5leS5jb20+CglSZW1vdmVkIHRoZSAjdW5kZWYgb2YgV1NfREVGSU5FX1NFTEVDVCBzbyB0aGF0IHNlbGVjdCBpcyBpbiBmYWN0CglkZWZpbmVkLgoJRml4ZWQgaWYgc3RhdGVtZW50IGluIF9fV1NfRkRfU0VUMiB3aGljaCB1c2VkIGEgPSB3aGVyZSBhID09IGlzCgluZWVkZWQsIGluIGFkZGl0aXRpb24gdGhlIGlmIGRpZCBub3QgaGF2ZSBpdHMgb3V0ZXIgc2V0IG9mCglwYXJlbnRoZXNpcy4KCVJlbW92ZWQgcGFyZW50aGVzZXMgYXJvdW5kIHR5cGUgdG8gYmUgY2FzdCBpbiBfX1dTX0ZEX1NFVCBtYWNyby4KCVJlbW92ZWQgV1MgbWFjcm8gdXNhZ2UgZnJvbSB3aXRoaW4gb3RoZXIgbWFjcm9zIGJlY2F1c2UgdGhlIFdTIG1hY3JvCglpcyB1bmRlZmluZWQgd2hlbiB0aGVzZSBtYWNyb3MgYXJlIGV4cGFuZGVkLgoJQWRkZWQgV0lOQVBJIGF0dHJpYnV0ZWUgdG8gc2VsZWN0IGRlZmluaXRpb24uCgoJKiBpbmNsdWRlL21zdmNydC9jcnRkYmcuaDogUGF0cmljayBKLiBNY05lcnRobmV5IDxwYXRAbWNuZXJ0aG5leS5jb20+CglBZGRlZCBjYXN0cyB0byBhbGwgbWFjcm9zIHRvIGF2b2lkIGNvbXBpbGVyIHdhcm5pbmdzLgoKMjAwMi0wOS0yMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVJlbW92ZSBzb21lIG1vcmUgc3VwZXJmbHVvdXMgWmVyb01lbW9yeSBjYWxscywgc21hbGwgY2xlYW51cHMuCgoJKiBkbGxzL3VzZXIvdXNlcjMyLnNwZWMsIGRsbHMveDExZHJ2L2V2ZW50LmMsIHdpbmRvd3Mvd2luLmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJLSBSZW1vdmUgZXhwb3J0IG9mIERSQUdfUXVlcnlVcGRhdGUgZnJvbSBVU0VSLgoJLSBHZXQgcmlkIG9mIGFzc29jaWF0ZWQgMTYgYml0IGNvZGUgZnJvbSB4MTFkcnYuCgktIFNpbXBsaWZpY2F0aW9ucywgY2xlYW51cHMsIGV0Yy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCS0gRml4IG91dHB1dHRpbmcgb2YgYSB0ZXh0IHBvaW50ZXIgaW4gZGVidWcgbW9kZSAoYnkgUmVpbiBLbGF6ZXMpLgoJLSBSZW1vdmUgYSBsYXJnZSBidW5jaCBvZiBzdXBlcmZsdW91cyBaZXJvTWVtb3J5IGNhbGxzLgoJLSBGaXggYSBjb3VwbGUgb2YgYnVncy4KCgkqIGRsbHMvY29tY3RsMzIvcmViYXIuYywgZGxscy9nZGkvZnJlZXR5cGUuYywKCSAgZGxscy9rZXJuZWwvdGVzdHMvZW52aXJvbi5jLCBkbGxzL3JpY2hlZGl0L3JlYWRlci5jLAoJICBkbGxzL3JpY2hlZGl0L3J0Zi5oLCBkbGxzL3JpY2hlZGl0L3N0ZGNoYXJuYW1lcy5oLAoJICBpbmNsdWRlL3dpbmUvb2JqX2Jhc2UuaCwgaW5jbHVkZS93aW5zb2NrMi5oOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglDbGVhbmVkIHVwIHRoZSBjb2RlIHNvIGl0IHdvdWxkIGJlIGVhc2llciB0byBwYXJzZSB3aXRoIHRoZSBuZXcgQwoJcGFyc2VyLgoKCSogdG9vbHMvd2luYXBpL2NfcGFyc2VyLnBtLCB0b29scy93aW5hcGkvY190eXBlLnBtLAoJICB0b29scy93aW5hcGkvd2luYXBpX2V4dHJhY3QsIHRvb2xzL3dpbmFwaS93aW5hcGlfZXh0cmFjdF9vcHRpb25zLnBtLAoJICB0b29scy93aW5hcGkvd2luYXBpX2ZpeHVwLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2NfcGFyc2VyLnBtOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIE1hZGUgdGhlIG5ldyBDIHBhcnNlciBoYW5kbGUgdGhlIGN1cnJlbnQgV2luZSBzb3VyY2UuCgktIEFkZGVkIGEgY29tcGFiaWxsaXR5IGxheWVyIGJldHdlZW4gdGhlIG9sZCBhbmQgdGhlIG5ldyBDIHBhcnNlci4KCS0gQWRkZWQgcGFyc2luZyBvZiBkYXRhIHN0cnVjdHVyZXMuCgoJKiBkbGxzL25ldGFwaTMyL3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMvbmV0YXBpMzIvdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvbmV0YXBpMzIvdGVzdHMvYWNjZXNzLmMsIGRsbHMvbmV0YXBpMzIvdGVzdHMvd2tzdGEuYywKCSAgaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9sbS5oLCBpbmNsdWRlL2xtYWNjZXNzLmgsCgkgIGluY2x1ZGUvbG1icm93c3IuaCwgaW5jbHVkZS9sbWNvbnMuaCwgaW5jbHVkZS9sbWVyci5oLAoJICBkbGxzL25ldGFwaTMyL01ha2VmaWxlLmluLCBkbGxzL25ldGFwaTMyL2FjY2Vzcy5jLAoJICBkbGxzL25ldGFwaTMyL2FwaWJ1Zi5jLCBkbGxzL25ldGFwaTMyL2Jyb3dzci5jLAoJICBkbGxzL25ldGFwaTMyL25ldGFwaTMyLnNwZWMsIGRsbHMvbmV0YXBpMzIvbmV0YXBpMzJfbWlzYy5oLAoJICBkbGxzL25ldGFwaTMyL3drc3RhLmM6CglBbmRyaXkgUGFsYW1hcmNodWsgPGFwYTNhQHlhaG9vLmNvbT4KCUltcGxlbWVudGVkIE5ldFF1ZXJ5RGlzcGxheUluZm9ybWF0aW9uLCBOZXRVc2VyR2V0SW5mbywgY3JlYXRlZAoJY29uZm9ybWFuY2UgdGVzdHMsIG90aGVyIG5ldGFwaTMyIGJ1ZyBmaXhlcyBhbmQgaW1wcm92ZW1lbnRzLgoKCSogdG9vbHMvd2luZWluc3RhbGw6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJSW5zdGFsbCBub3RlcGFkLmV4ZSBpbiBjOlx3aW5kb3dzIHRvby4KCjIwMDItMDktMjEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzY2hlZHVsZXIvdGhyZWFkLmMsIHdpbjMyL25ld2Zucy5jLCBjb250cm9scy9lZGl0LmMsCgkgIGRsbHMvd2luZWRvcy9kb3N2bS5jLCBpbmNsdWRlL2Jhc2V0c2QuaCwgaW5jbHVkZS93aW5iYXNlLmgsCgkgIG1lbW9yeS9nbG9iYWwuYywgbWVtb3J5L2hlYXAuYywgbWVtb3J5L2xvY2FsLmMsIG1lbW9yeS92aXJ0dWFsLmMsCgkgIHNjaGVkdWxlci9wcm9jZXNzLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAYmFpa2FsLnJ1PgoJQ29ycmVjdCBTSVpFX1Qgc2l6ZSBhY2NvcmRpbmcgdG8gTVMgU0RLLgoJQ2hhbmdlIHNvbWUgdHlwZXMgdG8gU0laRV9UIGFjY29yZGluZyB0byBNUyBTREsgZGVmaW5pdGlvbnMuCgoJKiBpbmNsdWRlL2QzZDh0eXBlcy5oOiBKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJQWRkZWQgc29tZSBkZWZpbml0aW9ucy4KCgkqIGRvY3VtZW50YXRpb24vZGVidWdnZXIuc2dtbDogRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglVcGRhdGVkIHdpbmVkYmcgZG9jdW1lbnRhdGlvbi4KCgkqIGRvY3VtZW50YXRpb24vd2luZWxpYi1iaW5kbGxzLnNnbWw6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQ2hhbmdlIGNvbmZ1c2luZyB0aXRsZS4KCjIwMDItMDktMjAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3NobHdhcGkuaCwgZGxscy9zaGx3YXBpL29yZGluYWwuYywgZGxscy9zaGx3YXBpL3BhdGguYywKCSAgZGxscy9zaGx3YXBpL3JlZ3N0cmVhbS5jLCBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjLAoJICBkbGxzL3NobHdhcGkvc3RyaW5nLmMsIGRsbHMvc2hsd2FwaS90aHJlYWQuYywgZGxscy9zaGx3YXBpL3VybC5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCVJlb3JnYW5pc2UvbWlub3IgdGlkeXVwIG9mIG9yZGluYWwgZnVuY3Rpb25zLgoJSW1wbGVtZW50IFN0ckNtcExvZ2ljYWxXLFN0ckZvcm1hdEJ5dGVTaXplQS9XLFN0ckZvcm1hdEJ5dGVTaXplNjRBLAoJU0hDcmVhdGVTdHJlYW1XcmFwcGVyLgoJRml4IHNvbWUgb3V0cHV0IC5zcGVjIHBhcmFtZXRlcnMgZnJvbSBzdHIgdG8gcHRyLgoJRml4IGRlZmluaXRpb24gb2YgU3RyRm9ybWF0Qnl0ZVNpemUgZnVuY3Rpb25zLgoKCSogZG9jdW1lbnRhdGlvbi93aW5lbGliLXRvb2xraXQuc2dtbDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglTbWFsbCB1cGRhdGVzIHRvIGJldHRlciBtYXRjaCB0aGUgZm9ybWF0IG9mIGN1cnJlbnQgTWFrZWZpbGVzLgoJUmVtb3ZlIHRoZSBkb2N1bWVudGF0aW9uIG9mIG5vIGxvbmdlciBzdXBwb3J0ZWQgc3BlYyBmaWxlIG9wdGlvbnMuCglBZGQgbm90ZXMgdG8gcG9pbnQgb3V0IHRoZSBzZWN0aW9ucyB0aGF0IGFyZSBwYXJ0aWN1bGFybHkgb3V0IG9mCglkYXRlLgoKCSogZG9jdW1lbnRhdGlvbi9wc2Rydi5yZWcsIHdpbmVkZWZhdWx0LnJlZzoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglNb3ZlIHRoZSBjb250ZW50cyBvZiBkb2N1bWVudGF0aW9uL3BzZHJ2LnJlZyB0byB3aW5lZGVmYXVsdC5yZWcuCgoJKiBkbGxzL3VzZXIvdXNlcjMyLnNwZWMsIGRsbHMveDExZHJ2L3Njcm9sbC5jLCB3aW5kb3dzL3Njcm9sbC5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUhhdmUgVVNFUiBkZWFsIHdpdGggdGhlIGNhcmV0IHdoZW4gc2Nyb2xsaW5nIGEgd2luZG93LgoKCSogZG9jdW1lbnRhdGlvbi93aW5lLnRleGluZm86IEFuZHJpeSBQYWxhbWFyY2h1ayA8YXBhM2FAeWFob28uY29tPgoJQWRkZWQgaW5mb3JtYXRpb24gYWJvdXQgUE9TSVgsIFVuaXgsIFgxMSB0cmFkZW1hcmtzLgoKCSogdG9vbHMvd2luZWR1bXAvb3V0cHV0LmM6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglVcGRhdGUgb3V0cHV0IGZvciBjdXJyZW50IGJ1aWxkIHByb2Nlc3MuCgoJKiB0b29scy93aW5lZHVtcC9SRUFETUU6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglEb2N1bWVudGF0aW9uIHVwZGF0ZS4KCjIwMDItMDktMTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL250ZGxsL2NyaXRzZWN0aW9uLmMsIGRsbHMvbnRkbGwvaGVhcC5jOgoJQXZvaWQgY2FsbGluZyBzb21lIGtlcm5lbCBmdW5jdGlvbnMuCgoJKiBERVZFTE9QRVJTLUhJTlRTOiBVcGRhdGVkIGEgbG90IG9mIG9ic29sZXRlIHN0dWZmLgoKCSogcHJvZ3JhbXMvTWFrZWZpbGUuaW46IE9ubHkgaW5zdGFsbCB0aGUgdXNlZnVsIHByb2dyYW1zLgoKCSogZGxscy94MTFkcnYvZXZlbnQuYywgZGxscy94MTFkcnYvd2luZG93LmMsIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmMsCgkgIGRvY3VtZW50YXRpb24vc2FtcGxlcy9jb25maWcsIGluY2x1ZGUveDExZHJ2Lmg6CglBZGRlZCBzdXBwb3J0IGZvciB0aGUgdGFrZSBmb2N1cyBwcm90b2NvbC4KCgkqIGRvY3VtZW50YXRpb24vcHJvZ3JhbXMsIGRvY3VtZW50YXRpb24vd2luc29jazoKCVJlbW92ZWQgb2Jzb2xldGUgZmlsZXMuCgoJKiBsaWJyYXJ5Ly5jdnNpZ25vcmUsIHVuaWNvZGUvLmN2c2lnbm9yZToKCVN0ZXZlbiBFZHdhcmRzIDxTdGV2ZW5fRWQ0MTUzQHlhaG9vLmNvbT4KCVVwZGF0ZSBmb3IgbWluZ3cvY3lnd2luLgoKCSogdG9vbHMvd2luZW1ha2VyOiBNYXJ0aW4gV2lsY2sgPE1hcnRpbi5XaWxja0BmdWppdHN1LXNpZW1lbnMuY29tPgoJTWFrZSBhbGwgdGFyZ2V0IG5hbWVzIGxvd2VyIGNhc2UuCgoJKiBERVZFTE9QRVJTLUhJTlRTOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJVXBkYXRlIGRlYnVnIGNoYW5uZWwgdXNhZ2UgaW4gREVWRUxPUEVSLUhJTlRTLgoJUmVtb3ZlIHJlZmVyZW5jZXMgdG8gb2Jzb2xldGUgZGlycy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCS0gQmV0dGVyIGltcGxlbWVudGF0aW9uIGZvciBHZXRUb3BpbmRleC9HZXRPcmlnaW4vU2V0SWNvblNwYWNpbmcuCgktIERyYXdpbmcgb3B0aW1pemF0aW9ucywgYmV0dGVyIHNjcm9sbGluZy4KCS0gQSBmZXcgbW9yZSBidWdzIHNxdWFzaGVkIHdpdGhvdXQgbWVyY3kuCgktIE1hbnkgY2xlYW51cHMsIHNpbXBsaWZpY2F0aW9ucywgZG9jIHVwZGF0ZXMuCgoJKiBkb2N1bWVudGF0aW9uL1JFQURNRS5mcjogVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJU21hbGwgdXBkYXRlIHRvIGtlZXAgaW4gc3luYyB3aXRoIFJFQURNRS4KCjIwMDItMDktMTcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBkbGxzL250ZGxsL01ha2VmaWxlLmluLCBkbGxzL250ZGxsL2hlYXAuYywKCSAgZGxscy9udGRsbC9udC5jLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvbnRkbGwvdmlydHVhbC5jLAoJICBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLCBpbmNsdWRlL3dpbm50LmgsCgkgIGluY2x1ZGUvd2ludGVybmwuaCwgbWVtb3J5L3ZpcnR1YWwuYywgc2VydmVyL21hcHBpbmcuYywKCSAgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3RyYWNlLmM6CglJbXBsZW1lbnRlZCB0aGUgbnRkbGwgdmlydHVhbCBtZW1vcnkgZnVuY3Rpb25zLCBhbmQgbWFkZSB0aGUga2VybmVsCglmdW5jdGlvbnMgdXNlIHRoZW0uCgoJKiBkb2N1bWVudGF0aW9uL01ha2VmaWxlLmluOiBBZGRlZCB0ZXN0aW5nLnNnbWwuCgoJKiBjb250cm9scy9tZW51LmM6CglSZW1vdmUgY2xlYXJpbmcgb2YgdGhlIHdpbmRvdyBtZW51IGlkIGZvciBub3cuIFRoaXMgd2lsbCBuZWVkIG1vcmUKCXdvcmsuCgoJKiBkb2N1bWVudGF0aW9uL3Rlc3Rpbmcuc2dtbDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglFeHBsYWluIHdoeSBjb25mb3JtYW5jZSB0ZXN0cyBhcmUgdXNlZnVsIGZvciBwb3J0cyB0b28uCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmM6IEpvc2VmIE1laXhuZXIgPEpvc2VmLk1laXhuZXJAdC1vbmxpbmUuZGU+CglIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJLSBJbml0aWFsaXppbmcgdGhlIHJldHVybi1zdHJpbmcgc2hvdWxkbid0IGNoYW5nZSB0aGUgcG9pbnRlci4KCS0gQWRkZWQgIkZJWE1FIiBmb3IgY2FzZSBub3QgaGFuZGxlZC4KCS0gRGlyZWN0b3J5IGFuZCB0aGUgZmlsZW5hbWVzIGhhdmUgdG8gYmUgc2VwYXJhdGVkIGJ5ICJcMCIuCgktIEFkZGVkIGNoZWNrIHRvIGhhbmRsZSBwb3NzaWJsZSBzaWduZWQvdW5zaWduZWQgb3ZlcmZsb3cuCgoJKiBpbmNsdWRlL21zdmNydC9lcnJuby5oLCBkbGxzL21zdmNydC9kaXIuYywgZGxscy9tc3ZjcnQvZXJybm8uYywKCSAgZGxscy9tc3ZjcnQvZmlsZS5jLCBkbGxzL21zdmNydC9oZWFwLmMsIGRsbHMvbXN2Y3J0L21hdGguYywKCSAgZGxscy9tc3ZjcnQvbXNfZXJybm8uaCwgZGxscy9tc3ZjcnQvcHJvY2Vzcy5jLCBpbmNsdWRlL01ha2VmaWxlLmluOgoJTWFydGluIFdpbGNrIDxNYXJ0aW4uV2lsY2tARnVqaXRzdS1TaWVtZW5zLmNvbT4KCU1TVkNSVCBuZWVkcyBhIHB1YmxpYyBlcnJuby5oIGZpbGUuCgoJKiB0b29scy93aW5lbWFrZXI6IE1hcnRpbiBXaWxjayA8TWFydGluLldpbGNrQEZ1aml0c3UtU2llbWVucy5jb20+CglGaXggImluc3RhbGwiIGFuZCAidW5pbnN0YWxsIiB0YXJnZXRzOiAuZXhlIC0+IC5leGUuc287IHRhcmdldCBkaXIgaXMKCSQoZGxsZGlyKSwgbGlrZSBmb3IgdGhlICJidWlsdGluIiB3aW5lIGJpbmFyaWVzLgoKCSogZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jOiBBbmRyaXkgUGFsYW1hcmNodWsgPGFwYTNhQHlhaG9vLmNvbT4KCU1ha2UgTHNhT3BlblBvbGljeSByZXR1cm4gc3VjY2Vzcy4KCgkqIHRvb2xzL3dpbmVkdW1wL21haW4uYzogSmFuIEtyYXRvY2h2aWwgPHNob3J0QHVjdy5jej4KCUJ1ZyBmaXguCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMyLmgsIGRsbHMvY29tY3RsMzIvY29tY3RsX0VuLnJjLAoJICBkbGxzL2NvbWN0bDMyL2hvdGtleS5jOgoJR3lvcmd5ICdOb2cnIEplbmV5IDxub2dAc2RmLmxvbmVzdGFyLm9yZz4KCS0gVW5pY29kZWlmeSBjb250cm9sLgoJLSB1c2Ugdm9pZCBpbnN0ZWFkIG9mIFZPSUQuCgktIFBhc3MgaW5mb1B0ciBhcm91bmQgaW5zdGVhZCBvZiBIV05ELgoJLSBJbXBsZW1lbnQgbW9zdCBvZiB0aGUgY29udHJvbC4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCS0gT3B0aW1pemUgdGhlIGhlY2sgb3V0IG9mIFJlcG9ydCBkcmF3aW5nLgoJLSBBIGJpdCBvZiBvcmdhbml6YXRpb24sIGZvciBzYW5pdHkncyBzYWtlLgoJLSBNYW55IHNpbXBsaWZpY2F0aW9ucywgY2xlYW51cHMsIGV0Yy4KCgkqIGRvY3VtZW50YXRpb24vc2FtcGxlcy9jb25maWcsIGRvY3VtZW50YXRpb24vd2luZS5jb25mLm1hbjoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglNb3ZlIHRoZSBkb2N1bWVudGF0aW9uIGZvciAnU2hvd0RpclN5bWxpbmtzJyB3aGVyZSBpdCBiZWxvbmdzOiB0byB0aGUKCXdpbmUuY29uZiBtYW4gcGFnZS4KCgkqIGNvbnRyb2xzL2VkaXQuYywgZGxscy9jb21jdGwzMi9jb21tY3RybC5jLCBkbGxzL250ZGxsL2hlYXAuYywKCSAgZGxscy9zaGVsbDMyL3Nodl9iZ19jbWVudS5jLCBkbGxzL3NoZWxsMzIvc2h2X2l0ZW1fY21lbnUuYywKCSAgZGxscy9zaGx3YXBpL3Rlc3RzL2NsaXN0LmMsIGZpbGVzL3NtYi5jLCBpbmNsdWRlL2NvbW1jdHJsLmgsCgkgIGluY2x1ZGUvaW1hZ2VobHAuaCwgaW5jbHVkZS9tbXN5c3RlbS5oLCBpbmNsdWRlL3dpbm50LmgsCgkgIGluY2x1ZGUvd2ludGVybmwuaCwgd2luZG93cy93aW5wcm9jLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVJlbW92ZSByZWZlcmVuY2VzIHRvIFBDVk9JRCBhbmQgTFBVSU5ULgoJUmVtb3ZlIHR5cGVzIHRoYXQgZG9uJ3QgZXhpc3Qgb24gV2luZG93cy4KCgkqIG1lbW9yeS92aXJ0dWFsLmM6CglGaXhlZCBpbXBvcnQgZGlyZWN0b3J5IGxpbWl0cyAoc3BvdHRlZCBieSBKYW4gS3JhdG9jaHZpbCkuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IFNhbmRlciB2YW4gTGVldXdlbiA8c2FuZGVydmxAeHM0YWxsLm5sPgoJTGlzdHZpZXdfUHJvY2Vzc0xldHRlcktleXM6IGZpeGVkIG5ldmVyIGVuZGluZyBsb29wIHdoZW4gZW5kIGluZGV4IGlzCgl6ZXJvLgoKCSogZGxscy93aW5tbS93aW5lYXJ0cy9hdWRpby5jOgoJSmVycnkgSmVua2lucyA8SmVycnlfSl9KZW5raW5zQGhvdG1haWwuY29tPgoJTW9kaWZpZWQgdm9sdW1lX2VmZmVjdDggZm9yIHRha2luZyB1bnNpZ25lZCBkYXRhIGFzIHNpZ25lZCBkYXRhLCBhbmQKCXdvZFBsYXllcl9Xcml0ZU1heEZyYWdzIGJlY2F1c2Ugb2Ygd3JvbmcgZGF0YSBsZW5ndGggd2hpY2ggbGVhZCB0bwoJc3RyYW5nZSBub2lzZSBhbmQgdm9sdW1lIGNvbnRyb2wgd29ya2luZyBpbmNvcnJlY3RseS4KCgkqIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmM6CglKZXJyeSBKZW5raW5zIDxKZXJyeV9KX0plbmtpbnNAaG90bWFpbC5jb20+CglBZGRlZCB3YXZlT3V0U2V0Vm9sdW1lIHdoZW4gb3BlbmluZyBzb3VuZCBkcml2ZXIuIE90aGVyd2lzZSwgdGhlcmUgaXMKCW5vIHNvdW5kIGlmIHdlIHVzZSBhUnRzLgoKCSogZmlsZXMvZmlsZS5jOiBNYXJ0aW4gV2lsY2sgPE1hcnRpbi5XaWxja0BGdWppdHN1LVNpZW1lbnMuY29tPgoJLSBSZXR1cm4gY29ycmVjdCBlcnJvciBjb2Rlcy4KCS0gRml4IGJlaGF2aW91ciBpZiBmaWxlcyBhcmUgb24gZGlmZmVyZW50IFdpbmUgZHJpdmVzCgkgIC0gZGVsZXRlIHNvdXJjZSBpZiBjb3B5IHN1Y2Nlc3NmdWwKCSAgLSB0cnkgcmVuYW1lKCkgLSBmaWxlcyBtYXkgYmUgb24gdGhlIHNhbWUgVW5peCBmaWxlIHN5c3RlbS4KCS0gVHJ5IGNvcHkvZGVsZXRlIGlmIHJlbmFtZSgpIGZhaWxzOiBmaWxlcyBtYXkgYmUgb24gdGhlIHNhbWUgRE9TCgkgIGRyaXZlLCBidXQgb24gZGlmZmVyZW50IFVuaXggZmlsZSBzeXN0ZW1zLgoKCSogZG9jdW1lbnRhdGlvbi9wYXRjaGVzLnNnbWwsIGRvY3VtZW50YXRpb24vcnVubmluZy5zZ21sLAoJICBkb2N1bWVudGF0aW9uL3Rlc3Rpbmcuc2dtbCwgZG9jdW1lbnRhdGlvbi93aW5lLWRldmVsLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vd2luZS1kb2Muc2dtbDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJU3RhcnQgb2YgdGhlIGNvbmZvcm1hbmNlIHRlc3RpbmcgZG9jdW1lbnRhdGlvbi4gU3RpbGwgdmVyeQoJaW5jb21wbGV0ZS4KCgkqIGRvY3VtZW50YXRpb24vd2luZWxpYi10b29sa2l0LnNnbWw6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJVXBkYXRlIHRoZSBzZWN0aW9uIGNvbmNlcm5pbmcgd2luZW1ha2VyJ3Mgb3B0aW9ucy4KCUFkZCBhIGNvdXBsZSBvZiB3YXJuaW5ncyBhYm91dCBvdXQtb2YtZGF0ZSBzZWN0aW9ucy4KCgkqIGRsbHMvTWFrZXRlc3QucnVsZXMuaW46IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJVGVzdHMgYXJlIHJlZ3VsYXIgV2luZWxpYiBhcHBsaWNhdGlvbnMgYW5kIHRodXMgc2hvdWxkIG5vdCBiZSBjb21waWxlZAoJd2l0aCBfX1dJTkVfXy4KCgkqIGRsbHMvdXNlci90ZXN0cy9jbGFzcy5jLCBkbGxzL3dpbnNvY2svdGVzdHMvc29jay5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglJRElfQVBQTElDQVRJT05XIGRvZXMgbm90IGV4aXN0IG9uIFdpbmRvd3MuIFVzZSBJRElfQVBQTElDQVRJT04KCWluc3RlYWQgYW5kIGNhc3QgdG8gTFBXU1RSLgoJRml4ZWQgdHlwZSBjYXN0IHdhcm5pbmdzLgoKCSogZGxscy9hZHZhcGkzMi90ZXN0cy9yZWdpc3RyeS5jLCBkbGxzL3NoZWxsMzIvdGVzdHMvc2hsZmlsZW9wLmMsCgkgIGRsbHMvd2luaW5ldC90ZXN0cy9odHRwLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUNoYW5nZSB0aGUgI2luY2x1ZGUgb3JkZXIgc28gdGhhdCB0aGVzZSB0ZXN0cyBjb21waWxlIG9uIFdpbmRvd3MuCgoJKiBkbGxzL250ZGxsL3Rlc3RzL2Vycm9yLmMsIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvbnRzdGF0dXMuaCwKCSAgaW5jbHVkZS93aW5udC5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglNb3ZlIGFsbCBTVEFUVVNfKiBhbmQgUlBDX05UXyogdG8gbnRzdGF0dXMuaCBhcyBwZXIgV2luZG93cyBTREsuCglBZGQgc29tZSBtaXNzaW5nIGNvbnN0YW50cy4KCUluY2x1ZGUgbnRzdGF0dXMuaCBpbiB3aW5udC5oLgoKCSogZmlsZXMvZmlsZS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1laXNzbmVyQHN1c2UuZGU+CglGaXhlZCAiY29uZGl0aW9uYWwgZXhwciBpcyBhbHdheXMgdHJ1ZSBkdWUgdG8gYmVpbmcgdW5zaWduZWQgPCAwIgoJcHJvYmxlbS4KCjIwMDItMDktMTYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB0b29scy93aW5lZHVtcC9tYWluLmMsIHRvb2xzL3dpbmVkdW1wL3dpbmVkdW1wLmg6CglKYW4gS3JhdG9jaHZpbCA8c2hvcnRAdWN3LmN6PgoJTmV3IC1TOiBTZWFyY2ggb25seSBwcm90b3R5cGUgbmFtZXMgZm91bmQgaW4gJ3N5bWZpbGUnLgoKCSogdG9vbHMvd2luZWJ1aWxkL21haW4uYzogTWFyY3VzIE1laXNzbmVyIDxtZWlzc25lckBzdXNlLmRlPgoJQWRkZWQgY3R5cGUuaC4KCgkqIGRsbHMvY29tbWRsZy9jb2xvcmRsZy5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jLAoJICBkbGxzL2NvbW1kbGcvZmluZGRsZy5jLCBkbGxzL2NvbW1kbGcvZm9udGRsZy5jLAoJICBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYywgZGxscy9zZXR1cGFwaS92aXJ0Y29weS5jLCBpbmNsdWRlL3dpbmRlZi5oLAoJICBsb2FkZXIvcmVzb3VyY2UuYywgd2luZG93cy9jdXJzb3JpY29uLmMsIHdpbmRvd3MvZGlhbG9nLmM6CglNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmRlPgoJQ29udmVydCBIUlNSQyB0byBhIHZvaWQqLgoKCSogZGxscy9uZXRhcGkzMi90ZXN0cy93a3N0YS5jLCBkbGxzL3NobHdhcGkvdGVzdHMvc2hyZWcuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJTmV0cEdldENvbXB1dGVyTmFtZSwgU0hDb3B5S2V5QSBhbmQgU0hSZWdHZXRQYXRoQSBkb24ndCBleGlzdCBvbiBhbGwKCVdpbmRvd3MgcGxhdGZvcm1zIC0+IHVzZSBHZXRNb2R1bGVIYW5kbGUgKyBHZXRQcm9jQWRkcmVzcy4KCgkqIGRvY3VtZW50YXRpb24vc2FtcGxlcy9jb25maWcsIGRvY3VtZW50YXRpb24vd2luZS5jb25mLm1hbiwKCSAgZG9jdW1lbnRhdGlvbi93aW5lLnRleGluZm8sIGZpbGVzL2ZpbGUuYzoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglNYXJrIGZpbGVzIHN0YXJ0aW5nIHdpdGggYSBkb3QgYXMgRkFfSElEREVOLgoJQWRkIGNvbmZpZ3VyYXRpb24gb3B0aW9uICdTaG93RG90RmlsZXMnIHRvIHR1cm4gdGhpcyBmZWF0dXJlIG9mZi4KCgkqIGRsbHMvbXN2Y3J0L2ZpbGUuYzogTWFydGluIFdpbGNrIDxNYXJ0aW4uV2lsY2tAZnVqaXRzdS1zaWVtZW5zLmNvbT4KCUZpeCBNb3ZlRmlsZUV4KCkgZmxhZ3MgaW4gTVNWQ1JUIHJlbmFtZSgpL193cmVuYW1lKCkuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CgktIFJlb3JnYW5pemF0aW9uIGFuZCBjbGVhbnVwIG9mIHNlbGVjdGlvbiBjb2RlLgoJLSBDb21wbGV0ZSByZXdyaXRlIG9mIGZvY3VzIGhhbmRsaW5nIGFuZCBkcmF3aW5nIGNvZGUuCgktIE1hbnkgYnVncyBmaXhlZCAoaW5jbHVkaW5nIGEgc2VyaW91cyBtZW1vcnkgY29ycnVwdGlvbikuCgktIE1hbnkgcGVyZm9ybWFuY2UgZml4ZXMuCgktIExvdHMgb2YgY2xlYW51cHMsIHNpbXBsaWZpY2F0aW9ucywgZXRjLgoJLSBEb2N1bWVudGF0aW9uIHVwZGF0ZXMuCgoJKiBpbmNsdWRlL3d0eXBlcy5oOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUluY2x1ZGUgcnBjLmggYWZ0ZXIgTFBPTEVTVFIgYW5kIG90aGVyIG5lZWRlZCB0eXBlcyBhcmUgZGVmaW5lZC4KCgkqIGluY2x1ZGUvd2luZ2RpLmg6IFZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCUZpeGVkIHR5cG8gd2hpY2ggcHJldmVudGVkIGNvcnJlY3QgY29tcGlsYXRpb24gb2YgY29kZSB1c2luZyB0aGUKCUdldHtDLE0sWX1WYWx1ZSBtYWNyb3MuCgoJKiBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvbnRkbGwvb20uYywgaW5jbHVkZS93aW50ZXJubC5oLAoJICBzY2hlZHVsZXIvaGFuZGxlLmM6CglJbXBsZW1lbnRlZCBOdER1cGxpY2F0ZU9iamVjdC4KCgkqIGluY2x1ZGUvd2luZS9vYmpfY29udGV4dG1lbnUuaCwgaW5jbHVkZS9jb21tY3RybC5oLAoJICBpbmNsdWRlL2NvbW1kbGcuaCwgaW5jbHVkZS9tc2FjbS5oLCBpbmNsdWRlL3Byc2h0LmgsCgkgIGluY2x1ZGUvcmljaGVkaXQuaCwgaW5jbHVkZS93aW5jcnlwdC5oOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGJhaWthbC5ydT4KCVJlcGxhY2Ugc3RhdGljIGluaXRpYWxpemVycyB3aXRoIGEgcHJvcGVyICNkZWZpbmUgaW4gLmggZmlsZXMuCgoJKiBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW5nZGkuaDogSnVyYWogSGVyY2VrIDxqdXJhakBzeW5jYWQuY29tPgoJLSBmaXhlZCB0eXBvIGVycm9yIGluIENNWUsgZGVmaW5pdGlvbiAoQ09MT1JFRiAtPiBDT0xPUlJFRikKCS0gYWRkZWQgdGFncyB0byBzdHJ1Y3R1cmVzIChfT0ZTVFJVQ1QsIF9GSUxFVElNRSwgLi4uKQoKCSogZGxscy9zaGVsbDMyL3NobGV4ZWMuYywgZGxscy9zaGx3YXBpL29yZGluYWwuYywgZGxscy9zaGx3YXBpL3BhdGguYzoKCUR1YW5lIENsYXJrIDxkY2xhcmtAYWthbWFpbC5jb20+CglXYWl0IGZvciBhcHAgdG8gY29tZSB1cCBiZWZvcmUgYXR0ZW1wdGluZyBEREUgY29ubmVjdGlvbi4KCVBhdGhJc1VSTCBzaG91bGQgZmFpbCBvbiB0ZXh0IHdpdGhvdXQgYSBwcm9wZXIgInNjaGVtZSIuCgoJKiBmaWxlcy9kb3NfZnMuYzogTWFyY3VzIE1laXNzbmVyIDxtZWlzc25lckBzdXNlLmRlPgoJaW5mby0+dS5zbWJfZGlyIGlzIGEgcG9pbnRlciwgZXJyb3JzIGFyZSBzaWduYWxlZCBieSBOVUxMLgoKCSogcHJvZ3JhbXMvd2luZWRiZy9icmVhay5jLCBwcm9ncmFtcy93aW5lZGJnL2RiZy55LAoJICBwcm9ncmFtcy93aW5lZGJnL2RlYnVnZ2VyLmgsIHByb2dyYW1zL3dpbmVkYmcvZXhwci5jLAoJICBwcm9ncmFtcy93aW5lZGJnL2hhc2guYywgcHJvZ3JhbXMvd2luZWRiZy9pbmZvLmMsCgkgIHByb2dyYW1zL3dpbmVkYmcvc3RhYnMuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgYWJpbGl0eSB0byBhYm9ydCBvbiBpbnRlcmFjdGl2ZSBzeW1ib2wgbG9va3VwLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJLSBHcmFuZCByZXdyaXRlIGZvciB7R2V0LFNldCxJbnNlcnR9SXRlbSAmIENvLgoJLSBNYW55IGJ1Z3MgZml4ZWQuCgktIENhbGxiYWNrIGl0ZW1zIGFyZSBiZXR0ZXIgc3VwcG9ydGVkLgoJLSBJbXByb3ZlbWVudHMgaW4gcmVuZGVyaW5nIHNwZWVkLgoJLSBDaGFuZ2UgVk9JRCB0byB2b2lkLgoJLSBNYW55IGNvZGUgY2xlYW51cHMsIGFuZCBzaW1wbGlmaWNhdGlvbnMuCgktIERvY3VtZW50YXRpb24gdXBkYXRlcy4KCjIwMDItMDktMTMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2FkdmFwaTMyL3JlZ2lzdHJ5LmMsIGRsbHMvbnRkbGwvY2Ryb20uYywgZGxscy9udGRsbC9yZWcuYywKCSAgbWlzYy9yZWdpc3RyeS5jLCB3aW4zMi9kZXZpY2UuYzoKCUhhbmRsZSBzcGVjaWFsIHJlZ2lzdHJ5IHJvb3Qga2V5cyBkaXJlY3RseSBpbiBhZHZhcGkzMiwgYW5kIGF2b2lkCgl1c2luZyB0aGVtIGluIGtlcm5lbCBhbmQgbnRkbGwuCgoJKiBkbGxzL250ZGxsL01ha2VmaWxlLmluLCBtZW1vcnkvcmVnaXN0cnkuYywgd2luMzIvZGV2aWNlLmM6CglDb3BpZWQgdGhlIHJlZ2lzdHJ5IGZ1bmN0aW9ucyBuZWVkZWQgYnkgVk1NIGludG8gZGV2aWNlLmMgYW5kIGdvdCByaWQKCW9mIG1lbW9yeS9yZWdpc3RyeS5jLgoKCSogZGxscy9rZXJuZWwvbG9jYWxlLmMsIGZpbGVzL2RpcmVjdG9yeS5jLCBtaXNjL2NwdS5jLCBtaXNjL3JlZ2lzdHJ5LmMsCgkgIHdpbjMyL2V4Y2VwdC5jOgoJUmVtb3ZlZCByZW1haW5pbmcgcmVmZXJlbmNlcyB0byBhZHZhcGkzMiByZWdpc3RyeSBmdW5jdGlvbnMgZnJvbQoJa2VybmVsIGZ1bmN0aW9ucy4KCgkqIHRvb2xzL3dpbmVtYWtlcjogTWFydGluIFdpbGNrIDxNYXJ0aW4uV2lsY2tARnVqaXRzdS1TaWVtZW5zLmNvbT4KCS0gU3VwcG9ydCAiLWltc3ZjcnQiIGFzIGFuIGFiYnJldmlhdGlvbiBvZiAiLWltc3ZjcnQuZGxsIi4KCS0gQXV0b21hdGljYWxseSBhZGQgTVNWQ1JUIGluY2x1ZGUgcGF0aCBpZiBNU1ZDUlQgRExMIHdhcyByZXF1ZXN0ZWQuCgoJKiBmaWxlcy9maWxlLmM6IE1hcnRpbiBXaWxjayA8TWFydGluLldpbGNrQEZ1aml0c3UtU2llbWVucy5jb20+CglXYWl0IHRpbWVvdXQgbXVzdCBiZSAwIGlmIGJXYWl0ID09IEZBTFNFLgoKCSogcHJvZ3JhbXMvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmVkYmcvLmN2c2lnbm9yZSwKCSAgcHJvZ3JhbXMvd2luZWRiZy9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luZWRiZy9SRUFETUUsCgkgIHByb2dyYW1zL3dpbmVkYmcvYnJlYWsuYywgcHJvZ3JhbXMvd2luZWRiZy9kYl9kaXNhc20uYywKCSAgcHJvZ3JhbXMvd2luZWRiZy9kYmcueSwgcHJvZ3JhbXMvd2luZWRiZy9kZWJ1Zy5sLAoJICBwcm9ncmFtcy93aW5lZGJnL2RlYnVnZ2VyLmgsIHByb2dyYW1zL3dpbmVkYmcvZGlzcGxheS5jLAoJICBwcm9ncmFtcy93aW5lZGJnL2V4cHIuYywgcHJvZ3JhbXMvd2luZWRiZy9leHByLmgsCgkgIHByb2dyYW1zL3dpbmVkYmcvZXh0X2RlYnVnZ2VyLmMsIHByb2dyYW1zL3dpbmVkYmcvZ2RicHJveHkuYywKCSAgcHJvZ3JhbXMvd2luZWRiZy9oYXNoLmMsIHByb2dyYW1zL3dpbmVkYmcvaW5mby5jLAoJICBwcm9ncmFtcy93aW5lZGJnL2ludHZhci5oLCBwcm9ncmFtcy93aW5lZGJnL21lbW9yeS5jLAoJICBwcm9ncmFtcy93aW5lZGJnL21vZHVsZS5jLCBwcm9ncmFtcy93aW5lZGJnL21zYy5jLAoJICBwcm9ncmFtcy93aW5lZGJnL3JlZ2lzdGVycy5jLCBwcm9ncmFtcy93aW5lZGJnL3NvdXJjZS5jLAoJICBwcm9ncmFtcy93aW5lZGJnL3N0YWJzLmMsIHByb2dyYW1zL3dpbmVkYmcvc3RhY2suYywKCSAgcHJvZ3JhbXMvd2luZWRiZy90eXBlcy5jLCBwcm9ncmFtcy93aW5lZGJnL3dpbmVkYmcuYywgY29uZmlndXJlLAoJICBjb25maWd1cmUuYWM6CglNb3ZlZCB0aGUgZGVidWdnZXIgdG8gcHJvZ3JhbXMvd2luZWRiZyB3aGVyZSBpdCBiZWxvbmdzLgoKCSogZmlsZXMvZmlsZS5jLCBmaWxlcy9wcm9maWxlLmMsIGxvYWRlci9sb2Fkb3JkZXIuYywgbWlzYy92ZXJzaW9uLmMsCgkgIG1zZG9zL3BwZGV2LmMsIHJlbGF5MzIvcmVsYXkzODYuYzoKCVJlbW92ZWQgcmVmZXJlbmNlcyB0byBhZHZhcGkzMiByZWdpc3RyeSBmdW5jdGlvbnMgZnJvbSBzb21lIG9mIHRoZQoJa2VybmVsIGZ1bmN0aW9ucy4KCgkqIGRsbHMvbnRkbGwvcmVnLmM6CglSdGxGb3JtYXRDdXJyZW50VXNlcktleVBhdGg6IHJldHVybiBwYXRoIGNvbnRhaW5pbmcgdGhlIHVzZXIgbmFtZQoJaW5zdGVhZCBvZiAuRGVmYXVsdC4KCgkqIHRvb2xzL3dpbmVtYWtlcjogTWFydGluIFdpbGNrIDxNYXJ0aW4uV2lsY2tARnVqaXRzdS1TaWVtZW5zLmNvbT4KCS0gZml4IHBlcmwgc3ludGF4IGVycm9yIGluIG15IG93biBwYXRjaAoJLSBmaXggcGVybCBzeW50YXggZXJyb3IgaW4gZ2VuZXJhdGVfd3JhcHBlcl9maWxlKCkKCS0gZml4IG9yZGVyIG9mIGFyZ3VtZW50cyBnZW5lcmF0ZV9mcm9tX3RlbXBsYXRlKCkgaW4KCSAgZ2VuZXJhdGVfd3JhcHBlcl9maWxlKCkKCS0gZG9uJ3QgaWdub3JlIGNvbW1hbmQgbGluZSAtbCwgLUksIGFuZCAtaSBhcmd1bWVudHMKCS0gYnVpbGQgd3JhcHBlciB3aXRoIGEgbWluaW1hbCBzZXQgb2YgRExMcy9saWJyYXJpZXMKCS0gZml4IGF1dG9jb25mIGludm9jYXRpb24gdG8gc3VwcG9ydCBib3RoIDIuNXggYW5kIDIuMTMKCS0gZml4IHVzYWdlIG1lc3NhZ2UgZm9yIC0tbm9kbGxzCgktIHRhcmdldF9pbml0KFwkZ2xvYmFsX3NldHRpbmdzKSBtdXN0IG5vdCBiZSBkb25lIGFmdGVyIHJlYWRpbmcgY29tbWFuZAoJICBsaW5lCgktIGZpeCBhcHBOYW1lIGRlY2xhcmF0aW9uIGluIHdyYXBwZXIgY29kZQoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJLSBJbXByb3ZlIExWTV9HRVRJVEVNUkVDVCB2YWx1ZXMgZm9yIExWU19JQ09OIHN0eWxlLiBOb3cgbW9zdGx5CgkgIGNvcnJlY3QgKG9yIGF0IGxlYXN0IG1hdGNoZXMgbmF0aXZlKS4KCS0gSGFuZGxlIGZvY3VzZWQgYW5kIHNlbGVjdGVkIGxhcmdlIGljb24gdGV4dCBiZXR0ZXIuCgktIEhhbmRsZSBpbnRlcm5hbCBlcmFzZS4KCS0gQWRkaXRpb25hbCBkZWJ1Z2dpbmcgY29kZS4KCjIwMDItMDktMTIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2dkaS9NYWtlZmlsZS5pbiwgZGxscy9nZGkvZ2RpLmV4ZS5zcGVjLCBkbGxzL3VzZXIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvdXNlci91c2VyLmV4ZS5zcGVjLCB0b29scy93aW5lYnVpbGQvbWFpbi5jLAoJICB0b29scy93aW5lYnVpbGQvcGFyc2VyLmMsIHRvb2xzL3dpbmVidWlsZC93aW5lYnVpbGQubWFuLmluOgoJUmVwbGFjZWQgJ2hlYXAnIC5zcGVjIHN0YXRlbWVudCBieSBhIGNvbW1hbmQgbGluZSBvcHRpb24uCglVcGRhdGVkIHdpbmVidWlsZCBtYW5wYWdlLgoKCSogaW5jbHVkZS90aHJlYWQuaDoKCVVzZSBsYXJnZXIgc2lnbmFsIHN0YWNrIHRvIGF2b2lkIG92ZXJmbG93cyBpbiBmaWxlc3lzdGVtIGNvZGUgd2hlbgoJbG9hZGluZyB0aGUgZGVidWdnZXIuCgoJKiBkbGxzL3NobHdhcGkvdGVzdHMvc2hyZWcuYzogRGVsZXRlIHJlZ2lzdHJ5IGtleSBhdCBleGl0LgoKCSogZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYzogRml4ZWQgQXNzb2NDcmVhdGUgZGVjbGFyYXRpb24uCgoJKiBkbGxzL21zdmNydC9kaXIuYywgZGxscy9tc3ZjcnQvZmlsZS5jLCBkbGxzL250ZGxsL3JlZy5jLAoJICBkbGxzL29sZTMyL3N0b3JhZ2UuYywgZmlsZXMvZG9zX2ZzLmMsIGZpbGVzL2ZpbGUuYywgaW5jbHVkZS94MTFkcnYuaDoKCUZpeGVkIHdhcm5pbmdzIGNhdXNlZCBieSBuZXcgd2ludGVybmwuaC4KCgkqIGRsbHMvY29tY3RsMzIvdHJhY2tiYXIuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCS0gSW1wbGVtZW50IGN1c3RvbSBkcmF3IHN1cHBvcnQuCgktIEZpeCB0aHVtYiBkcmF3aW5nLgoJLSBTb21lIGNsZWFudXBzLCByZW9yZ2FuaXphdGlvbnMsIGV0Yy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUZpeCBhIGJ1bmNoIG9mIGJ1Z3MgcmVsYXRlZCB0byBzY3JvbGxpbmcuCgoJKiB0b29scy93aW5hcGkvbXN2Y21ha2VyOiBQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCU1pbm9yIGJ1ZyBmaXhlcyBhbmQgaW1wcm92ZW1lbnRzLgoKCSogaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9kM2Q4LmgsIGluY2x1ZGUvZDNkOGNhcHMuaCwKCSAgaW5jbHVkZS9kM2Q4dHlwZXMuaDoKCUphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglBZGRlZCBEaXJlY3QzRCA4IGhlYWRlcnMuCgoJKiB3aW4zMi9leGNlcHQuYywgbWlzYy9tYWluLmMsIG1pc2Mvb3B0aW9ucy5jLCBtaXNjL3ZlcnNpb24uYywKCSAgbXNkb3MvaW50MjEuYywgbXNkb3MvdnhkLmMsIG9sZS9vbGUybmxzLmMsIHJlbGF5MzIvcmVsYXkzODYuYywKCSAgcmVsYXkzMi9zbm9vcC5jLCBzY2hlZHVsZXIvY3JpdHNlY3Rpb24uYywgc2NoZWR1bGVyL3B0aHJlYWQuYywKCSAgc2NoZWR1bGVyL3N5c2xldmVsLmMsIHNlcnZlci9yZWdpc3RyeS5jLCBmaWxlcy9kaXJlY3RvcnkuYywKCSAgZmlsZXMvZG9zX2ZzLmMsIGZpbGVzL2RyaXZlLmMsIGZpbGVzL2ZpbGUuYywgZmlsZXMvcHJvZmlsZS5jLAoJICBpbmNsdWRlL250ZGRrLmgsIGluY2x1ZGUvbnRkZWYuaCwgaW5jbHVkZS90aHJlYWQuaCwKCSAgaW5jbHVkZS93aW5lL3NlcnZlci5oLCBpbmNsdWRlL3dpbnRlcm5sLmgsIGxvYWRlci9tb2R1bGUuYywKCSAgbG9hZGVyL3BlX3Jlc291cmNlLmMsIGxvYWRlci90YXNrLmMsIG1lbW9yeS9lbnZpcm9uLmMsIG1lbW9yeS9oZWFwLmMsCgkgIGRsbHMvbnRkbGwvdGVzdHMvZXJyb3IuYywgZGxscy9udGRsbC90ZXN0cy9ydGxiaXRtYXAuYywKCSAgZGxscy9vbGUzMi9oZ2xvYmFsc3RyZWFtLmMsIGRsbHMvb2xlMzIvc3RnX3N0cmVhbS5jLAoJICBkbGxzL29sZTMyL3N0b3JhZ2UuYywgZGxscy9vbGVhdXQzMi90bWFyc2hhbC5jLAoJICBkbGxzL3NldHVwYXBpL2RpcmlkLmMsIGRsbHMvc2V0dXBhcGkvaW5mcGFyc2UuYywKCSAgZGxscy9zZXR1cGFwaS9pbnN0YWxsLmMsIGRsbHMvc2V0dXBhcGkvcGFyc2VyLmMsCgkgIGRsbHMvc2V0dXBhcGkvcXVldWUuYywgZGxscy93aW5lZG9zL2ludDIxLmMsIGRsbHMvd2lubW0vbW1zeXN0ZW0uYywKCSAgZGxscy9rZXJuZWwvdGltZS5jLCBkbGxzL2tlcm5lbC91dHRodW5rLmMsIGRsbHMva2VybmVsL3dvd3RodW5rLmMsCgkgIGRsbHMvbXN2Y3J0L2NwcGV4Y2VwdC5jLCBkbGxzL21zdmNydC9kaXIuYywgZGxscy9tc3ZjcnQvZXhjZXB0LmMsCgkgIGRsbHMvbXN2Y3J0L2ZpbGUuYywgZGxscy9uZXRhcGkzMi93a3N0YS5jLCBkbGxzL250ZGxsL2Nkcm9tLmMsCgkgIGRsbHMvbnRkbGwvY3JpdHNlY3Rpb24uYywgZGxscy9udGRsbC9kZWJ1Z3Rvb2xzLmMsCgkgIGRsbHMvbnRkbGwvZXJyb3IuYywgZGxscy9udGRsbC9leGNlcHRpb24uYywgZGxscy9udGRsbC9maWxlLmMsCgkgIGRsbHMvbnRkbGwvaGVhcC5jLCBkbGxzL250ZGxsL2xhcmdlX2ludC5jLCBkbGxzL250ZGxsL2xvYWRlci5jLAoJICBkbGxzL250ZGxsL250LmMsIGRsbHMvbnRkbGwvbnRkbGxfbWlzYy5oLCBkbGxzL250ZGxsL29tLmMsCgkgIGRsbHMvbnRkbGwvcmVnLmMsIGRsbHMvbnRkbGwvcnRsLmMsIGRsbHMvbnRkbGwvcnRsYml0bWFwLmMsCgkgIGRsbHMvbnRkbGwvcnRsc3RyLmMsIGRsbHMvbnRkbGwvc2VjLmMsIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYywKCSAgZGxscy9udGRsbC9zaWduYWxfcG93ZXJwYy5jLCBkbGxzL250ZGxsL3NpZ25hbF9zcGFyYy5jLAoJICBkbGxzL250ZGxsL3N5bmMuYywgZGxscy9udGRsbC90aW1lLmMsIGRsbHMvbnRkbGwvd2NzdHJpbmcuYywKCSAgZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmMsCgkgIGRsbHMvZHNvdW5kL2J1ZmZlci5jLCBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jLCBkbGxzL2Rzb3VuZC9taXhlci5jLAoJICBkbGxzL2Rzb3VuZC9wcmltYXJ5LmMsIGRsbHMvZHNvdW5kL3Byb3BzZXQuYywgZGxscy9kc291bmQvc291bmQzZC5jLAoJICBkbGxzL2dkaS9kcml2ZXIuYywgZGxscy9rZXJuZWwva2VybmVsX21haW4uYywgZGxscy9rZXJuZWwvbG9jYWxlLmMsCgkgIGRsbHMva2VybmVsL3RodW5rLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCU1vdmVkIGFsbCB0aGUgY29udGVudCBvZiB0aGUgRERLIGZpbGVzIG50ZGVmLmggYW5kIG50ZGRrLmggdG8KCXdpbnRlcm5sLmguCgoJKiBkbGxzL2FkdmFwaTMyL3JlZ2lzdHJ5LmM6CglGaXhlZCByZXF1ZXN0ZWQgYWNjZXNzIHJpZ2h0cyBpbiBSZWdEZWxldGVLZXlbQVddLgoKCSogZGxscy9hZHZhcGkzMi90ZXN0cy9yZWdpc3RyeS5jOgoJRml4ZWQgcG9zc2libGUgaW5maW5pdGUgbG9vcCBpbiBkZWxldGVfa2V5LgoKCSogZGxscy9zaGx3YXBpL3Rlc3RzL3NocmVnLmM6IFBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgQysrIGNvbW1lbnRzLgoKCSogcHJvZ3JhbXMvd2NtZC93Y21kbWFpbi5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJV0NNRF9wYXJzZTogYWxsb3cgc2xhc2hlcyBpbiBjb21tYW5kIGZpbGVuYW1lcy4KCgkqIGluY2x1ZGUvd2luZGVmLmg6IFN0ZXZlbiBFZHdhcmRzIDxzdGV2ZW5fZWQ0MTUzQHlhaG9vLmNvbT4KCUNsZWFudXAgd2FybmluZyB3aGVuIGJ1aWxkaW5nIG9uIE1pbmd3LgoKCSogdG9vbHMvd2luYXBpL3dpbmFwaV9jbGVhbnVwLCB0b29scy93aW5hcGkvd2luYXBpX2NsZWFudXBfb3B0aW9ucy5wbToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBNYWRlIHJlbW92ZSB0cmFpbGluZyB3aGl0ZXNwYWNlIGEgZGVmYXVsdCBvZmYgb3B0aW9uLgoJLSBBZGQgc3VwcG9ydCBmb3IgQysrIHRvIEMgY29tbWVudCBjb252ZXJzaW9uLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJLSBDb21wbGV0ZSByZXdyaXRlIG9mIHNjcm9sbGluZyBjb2RlOiBzbWFsbGVyLCBmYXN0ZXIsIGNsZWFuZXIuCgkgIFdlIG5vdyBwcm9wZXJseSBzY3JvbGwgdGhlIHdpbmRvdywgcmF0aGVyIHRoYW4gaW52YWxpZGF0aW5nIGl0IG9uCgkgIGV2ZXJ5IHNjcm9sbCBhY3Rpb24uCgktIEEgYnVnIG9yIHR3byBnb3Qgc3F1YXNoZWQuCgktIE1hbnkgY29kZSBjbGVhbnVwcywgc2ltcGxpZmljYXRpb25zLCBldGMuCgktIFNvbWUgZG9jdW1lbnRhdGlvbiB1cGRhdGVzLgoKCSogdG9vbHMvd2luZWJ1aWxkL3BhcnNlci5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJUmVtb3ZlIHN1cHBvcnQgZm9yICdmaWxlJywgJ25hbWUnLCBhbmQgJ21vZGUnIGluIC5zcGVjIGZpbGVzLgoKCSogZGxscy9zaGx3YXBpL3VybC5jOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJTWFrZSBoZXggZGlnaXRzIHN0YXRpYyBjb25zdCAmIHNoYXJlIHRoZW0uCgoJKiBkbGxzL3NobHdhcGkvcmVnLmMsIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWMsCgkgIGRsbHMvc2hsd2FwaS90ZXN0cy9zaHJlZy5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUltcGxlbWVudGF0aW9uIGFuZCB0ZXN0IGZvciBTSENvcHlLZXlBL1cuCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGZpbGVzL2ZpbGUuYzoKCU1hcnRpbiBXaWxjayA8TWFydGluLldpbGNrQEZ1aml0c3UtU2llbWVucy5jb20+CglGaXggdGhlIGJlaGF2aW9yIG9mIEdldE92ZXJsYXBwZWRSZXN1bHQoKSBhbmQgV1NBR2V0T3ZlcmxhcHBlZFJlc3VsdCgpCgl3aXRoIG5vbi1tYW51YWwtcmVzZXQgKGF1dG8tcmVzZXQpIGV2ZW50cyBpbiB0aGUgT1ZFUkxBUFBFRCBzdHJ1Y3R1cmVzLgoKCSogaW5jbHVkZS9NYWtlZmlsZS5pbjogQW5kcml5IFBhbGFtYXJjaHVrIDxhcGEzYUB5YWhvby5jb20+CglJbnN0YWxsIHRjaGFyLmguCgoJKiBkb2N1bWVudGF0aW9uL3dpbmVsaWItdG9vbGtpdC5zZ21sOgoJQW5kcml5IFBhbGFtYXJjaHVrIDxhcGEzYUB5YWhvby5jb20+CglTcGVjIGZpbGVzIGRvY3VtZW50YXRpb24uIEFkZGVkIGluZm9ybWF0aW9uIGFib3V0IHdpZGUgc3RyaW5ncy4gQmFzZWQKCW9uIGNvbW1lbnRzIGJ5IFBhdHJpayBTdHJpZHZhbGwuCgoJKiBmaWxlcy9kaXJlY3RvcnkuYzogTWljaGFlbCBCZWFjaCA8bWljaGFlbGJAaWVlZS5vcmc+CglGaXhlZCBidWZmZXIgc2l6ZSBpbiBESVJfVHJ5TW9kdWxlUGF0aCBmb3IgV2luMzIgbW9kdWxlcy4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlcGljdHVyZS5jLCBkbGxzL3dpbm1tL3dpbmVuYXMvYXVkaW8uYywKCSAgaW5jbHVkZS9iYXNldHNkLmgsIGluY2x1ZGUvcnBjbmRyLmgsIGluY2x1ZGUvd2luZS93aW5kZWYxNi5oLAoJICBpbmNsdWRlL3dpbm50LmgsIGluY2x1ZGUvd3R5cGVzLmgsIHByb2dyYW1zL3djbWQvZGlyZWN0b3J5LmMsCgkgIHByb2dyYW1zL3dpbmVmaWxlL3dpbmVmaWxlLmMsIHByb2dyYW1zL3dpbmVmaWxlL3dpbmVmaWxlLmgsCgkgIHRvb2xzL3dpbmVkdW1wL21zbWFuZ2xlLmMsIHRvb2xzL3dpbmVkdW1wL3N5bWJvbC5jOgoJUmVtb3ZlZCB0aGUgX191aW50KiB0eXBlcyBmcm9tIGJhc2V0c2QuaCBzaW5jZSB0aGV5IGRvbid0IGV4aXN0IHVuZGVyCglXaW5kb3dzLiBGaXhlZCBhIGZldyBvdGhlciBpc3N1ZXMgd2l0aCB0eXBlIGRlZmluaXRpb25zLgoKCSogZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL2tybmwzODYuZXhlLnNwZWM6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJTW92ZSB0aGUgbmFtZSBkaXJlY3RpdmUgZnJvbSB0aGUgLnNwZWMgZmlsZSB0byB0aGUgTWFrZWZpbGUuCgoJKiB0b29scy93aW5lYnVpbGQvbWFpbi5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQWRkIHN1cHBvcnQgZm9yIG5hbWluZyB0aGUgRExMIGZyb20gdGhlIGNvbW1hbmQgbGluZS4KCgkqIGRsbHMvd2luc3Bvb2wvaW5mby5jOiBNYXJjdXMgTWVpc3NuZXIgPG1laXNzbmVyQHN1c2UuZGU+CglOZXcgQ1VQUyBsaWJyYXJpZXMgcmV0dXJuICJub25lIiBhcyBkZWZhdWx0IHByaW50ZXIgaW5zdGVhZCBvZiBOVUxMLgoKCSogZGxscy9rZXJuZWwva3JubDM4Ni5leGUuc3BlYywgZGxscy91c2VyL2RkZW1sLnNwZWMsCgkgIGRsbHMvdXNlci91c2VyLmV4ZS5zcGVjLCBkbGxzL3dpbnNvY2svd2luc29jay5zcGVjOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCU1ha2UgYWxsIHNwZWMgZmlsZXMgZ3JlcC1hYmxlLgoKCSogbWlzY2VtdS9NYWtlZmlsZS5pbiwgbWlzY2VtdS93aW5lLnNwZWM6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJTW92ZWQgbW9kZSBzZXR0aW5nIG91dCBvZiAuc3BlYyBmaWxlIGludG8gTWFrZWZpbGUuCgoJKiBkbGxzL2NvbWN0bDMyL3RyYWNrYmFyLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglHcmVhdGx5IGltcHJvdmVkIGRyYXdpbmcgY29kZTogZWxpbWluYXRlcyBhbGwgZmxpY2tlciwgZmFzdGVyLCBjbGVhbmVyCgl0aWNzIGRyYXdpbmcsIGJldHRlciB0b29sdGlwIHBvc2l0aW9uaW5nLCBjb2RlIGNsZWFudXBzIGFuZAoJc2ltcGxpZmljYXRpb25zLgoKCSogZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCS0gUmV3cml0ZSB0aGUgZHJhd2luZyBjb2RlLiBJdCBub3cgaXMgbXVjaCBzbWFsbGVyLCBlYXNpZXIgdG8gZm9sbG93LAoJICBhbmQgZmFzdGVyLiBNb3Jlb3ZlciwgaXQgbm93IHN1cHBvcnRzIHRoZSBkd1JvcCBvcGVyYXRpb24sIGFuZCBpdCBpcwoJICBpbiBnb29kIHNoYXBlIHRvIHN1cHBvcnQgdGhlIG1pc3NpbmcgZmVhdHVyZXMuCgktIERyYXcgdGhlIGRyYWdnZWQgaW1hZ2Ugc2VtaS10cmFuc3BhcmVudGx5ICh3aWxsIHdvcmsgd2hlbiB3ZSBzdXBwb3J0CgkgIGFscGhhIGJsZW5kaW5nKS4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaDogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUFkZCBJbWFnZUxpc3Qgc3RhdGVzIChJTFNfKikgZGVmaW5pdGlvbnMuCgoyMDAyLTA5LTExICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9NYWtlZmlsZS5pbiwgZGxscy9uZXRhcGkzMi9NYWtlZmlsZS5pbiwgZGxscy9uZXRhcGkzMi9hcGlidWYuYywKCSAgZGxscy9uZXRhcGkzMi9uZXRhcGkzMi5zcGVjLCBkbGxzL25ldGFwaTMyL3Rlc3RzLy5jdnNpZ25vcmUsCgkgIGRsbHMvbmV0YXBpMzIvdGVzdHMvTWFrZWZpbGUuaW4sIGRsbHMvbmV0YXBpMzIvdGVzdHMvYXBpYnVmLmMsCgkgIGRsbHMvbmV0YXBpMzIvdGVzdHMvd2tzdGEuYywgZGxscy9uZXRhcGkzMi93a3N0YS5jLAoJICBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL2xtLmgsIGluY2x1ZGUvbG1hY2Nlc3MuaCwKCSAgaW5jbHVkZS9sbWFwaWJ1Zi5oLCBpbmNsdWRlL2xtY29ucy5oLCBpbmNsdWRlL2xtZXJyLmgsCgkgIGluY2x1ZGUvbG13a3N0YS5oLCBpbmNsdWRlL3dpbmJhc2UuaCwgY29uZmlndXJlLCBjb25maWd1cmUuYWM6CglBbmRyaXkgUGFsYW1hcmNodWsgPGFwYTNhQHlhaG9vLmNvbT4KCUltcGxlbWVudGVkIGJ1ZmZlciBtYW5hZ2VtZW50IGZ1bmN0aW9ucywgYSBjb3VwbGUgb2Ygd29ya3N0YXRpb24KCWluZm9ybWF0aW9uIGZ1bmN0aW9ucywgY3JlYXRlZCBjb25mb3JtYW5jZSB0ZXN0cy4KCgkqIHRvb2xzL3dpbmVtYWtlcjogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVN0b3JlIHRoZSBnbG9iYWwgc2V0dGluZ3MgaW4gTWFrZS5ydWxlcy5pbiBpbnN0ZWFkIG9mIGR1cGxpY2F0aW5nIHRoZW0KCWluIGVhY2ggTWFrZWZpbGUuaW4gZmlsZS4KCUludHJvZHVjZSBnZW5lcmF0ZV9mcm9tX3RlbXBsYXRlIHdoaWNoIHJlcGxhY2VzIGdlbmVyYXRlX2NvbmZpZ3VyZQoJYW5kIGdlbmVyYXRlX2dlbmVyaWMKCVNpbXBsaWZ5IHRoZSB3cmFwcGVyIGdlbmVyYXRpb24gYnkgdXNpbmcgZ2VuZXJhdGVfZnJvbV90ZW1wbGF0ZS4KCVJlbmFtZSBjb25maWd1cmUuaW4gdG8gY29uZmlndXJlLmFjLiBOb3cgd29ya3Mgd2l0aCBhdXRvY29uZiAyLjV4LgoKCSogdG9vbHMvd2luZWR1bXAvUkVBRE1FLCB0b29scy93aW5lZHVtcC9kZWJ1Zy5jLCB0b29scy93aW5lZHVtcC9wZS5jLAoJICB0b29scy93aW5lZHVtcC9wZS5oOgoJQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJLSBJbXBsZW1lbnQgZHVtcGluZyBvZiBDT0ZGIGRlYnVnIHN5bWJvbCB0YWJsZS4KCS0gRml4IHdpbmVkdW1wIHN5bnRheCBkZXNjcmlwdGlvbi4KCS0gU3BlbGxpbmcgZml4ZXMuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9hbGxvYy5jOiBBbmRyaXkgUGFsYW1hcmNodWsgPGFwYTNhQHlhaG9vLmNvbT4KCUEgZmV3IG1vcmUgY29uZm9ybWFuY2UgdGVzdHMgZm9yIGhlYXAgbWVtb3J5IGFsbG9jYXRpb24uCgoJKiBpbmNsdWRlL250c2VjYXBpLmg6IEFuZHJpeSBQYWxhbWFyY2h1ayA8YXBhM2FAeWFob28uY29tPgoJQWRkZWQgcG9saWN5IGFjY2VzcyBjb25zdGFudHMsIHR5cGUgZGVmaW5pdGlvbi4KCgkqIGRsbHMvY29tY3RsMzIvdHJhY2tiYXIuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCS0gSW1wbGVtZW50IGF1dG9wYWdpbmcuCgktIFJlbW92ZSBpbmNvcnJlY3QgRklYTUVzLgoJLSBTbWFsbCBjbGVhbnVwcy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUNvZGUgY2xlYW51cHMgYW5kIHNpbXBsaWZpY2F0aW9ucywgZG9jdW1lbnRhdGlvbiB1cGRhdGVzLgoKCSogdG9vbHMvd2luZW1ha2VyOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJRml4IHRoZSBXaW5lIGRldGVjdGlvbiB3aGVuIHVzaW5nIHRoZSBXaW5lIHNvdXJjZSB0cmVlLgoKMjAwMi0wOS0xMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHRvb2xzL3dpbmVtYWtlcjogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBkZXRlY3Rpb24gb2YgJ2xuIC1zJy4KCUZpeCBjb21wdXRhdGlvbiBvZiBUT1BPQkpESVIuCglJbnN0YWxsIGV4ZXMgYW5kIGRsbHMgaW4gJChsaWJkaXIpLgoJLVdsLC1ycGF0aCBpcyBub3QgcmVsZXZhbnQgZm9yIGRsbHMuCgoJKiBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL3dpbnRlcm5sLmg6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUFkZGVkIHRoZSBuZXcgaGVhZGVyIHdpbnRlcm5sLmguCgoJKiBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLCBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUltcGxlbWVudCBAMTYzLDE2NCwxNjgsMTc1LDE4MiwxODcsMjg2LFNIU2tpcEp1bmN0aW9uLgoJU3R1YiBAMjAxLDIwMiwyMDMsIERvY3VtZW50IG1hbnkgZnVuY3Rpb25zLgoJQDE2NTogRml4IG1hc2sgYW5kIGZsYWdzIHBhcmFtZXRlciBvcmRlci4KCUAxNzI6IFdvcmtzIG9uIElJbnRlcm5ldFNlY3VyaXR5TWdyU2l0ZSBhbmQgSVNoZWxsVmlldyB0b28uCglAMTk5LEAyNjg6IE5vIHJldHVybiB2YWx1ZSwgY2FsbCBAMTY5LgoKCSogaW5jbHVkZS93aW5udC5oOiBQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUFkZGVkIGEgZmV3IG1hY3JvcyBmb3IgTVMgQy9DKysgc3BlY2lmaWMgZmVhdHVyZXMuCgoJKiB0b29scy93aW5lbWFrZXIsIHRvb2xzL3dpbmVtYWtlci5tYW46CglNYXJ0aW4gV2lsY2sgPE1hcnRpbi5XaWxja0BGdWppdHN1LVNpZW1lbnMuY29tPgoJLSBGaXggLS1ub21mYyBvcHRpb24gd2hpY2ggaXMgY3VycnJlbnRseSBicm9rZW4uCgktIEFkZCAtLW5vZGxscyBvcHRpb24gZm9yIHNtYWxsIGFwcHMuCgoyMDAyLTA5LTA5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jcnlwdDMyL21haW4uYywgaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9tc3NpcC5oLAoJICBpbmNsdWRlL3NpcGJhc2UuaCwgaW5jbHVkZS93aW5jcnlwdC5oOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglBZGQgYW5kIHVzZSB0aGUgaGVhZGVyIGZpbGVzIG1zc2lwLmggYW5kIHNpcGJhc2UuaC4KCgkqIGRsbHMva2VybmVsL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC9yZWdpc3RyeTE2LmMsIG1pc2MvcmVnaXN0cnkuYzoKCU1vdmVkIDE2LWJpdCByZWdpc3RyeSBmdW5jdGlvbnMgdG8ga2VybmVsIGRsbCBhbmQgaW1wbGVtZW50ZWQgdGhlbSBieQoJY2FsbGluZyB1cCB0byBhZHZhcGkzMi4KCgkqIGRsbHMvZ2RpL2dkaTE2LmMsIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYywgZGxscy9zaGx3YXBpL3JlZy5jLAoJICBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjLCBvYmplY3RzL2NsaXBwaW5nLmMsIG9iamVjdHMvZGMuYywKCSAgb2JqZWN0cy9kY3ZhbHVlcy5jLCBvYmplY3RzL21ldGFmaWxlLmMsIG9iamVjdHMvcGFsZXR0ZS5jLAoJICB3aW5kb3dzL3F1ZXVlLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgaXNzdWVzIGZvdW5kIGJ5IHdpbmFwaV9jaGVjay4KCgkqIGRsbHMvbnRkbGwvZXJyb3IuYywgZGxscy9udGRsbC90ZXN0cy8uY3ZzaWdub3JlLAoJICBkbGxzL250ZGxsL3Rlc3RzL01ha2VmaWxlLmluLCBkbGxzL250ZGxsL3Rlc3RzL2Vycm9yLmMsCgkgIGluY2x1ZGUvd2luZXJyb3IuaCwgaW5jbHVkZS93aW5udC5oOgoJQW5kcml5IFBhbGFtYXJjaHVrIDxhcGEzYUB5YWhvby5jb20+CglSdGxOdFN0YXR1c1RvRG9zRXJyb3I6IEFkZGVkIG5ldyBOVCBzdGF0dXMgdG8gZXJyb3IgY29kZXMgbWFwcGluZywKCWFkZGVkIG1pc3NlZCBkZWZpbml0aW9ucyBvZiB0aGUgdXNlZCBjb25zdGFudHMsIGNyZWF0ZWQgdW5pdCB0ZXN0IGZvcgoJc3Vic2V0IG9mIHRoZSBtYXBwaW5ncy4KCgkqIGNvbnRyb2xzL3VpdG9vbHMuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCS0gSW1wbGVtZW50IERGQ1NfVFJBTlNQQVJFTlQuCgktIEZpeCBpbmRlbnRhdGlvbi4KCS0gQWRkIHJlbWFyayBhYm91dCB1bmltcGxlbWVudGVkIERGQ19QT1BVUE1FTlUuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CgktIFBhc3MgaW5mb1B0ciBhcm91bmQsIGluc3RlYWQgb2YgaHduZC4KCS0gSW1wbGVtZW50IGhvdCBjdXJzb3IuCgktIFVwZGF0ZSBsaXN0IG9mIHVuaW1wbGVtZW50ZWQgbWVzc2FnZXMuCgktIFNpbXBsaWZ5IHRoZSBjb2RlIGZvciBlZGl0aW5nIGxhYmVscy4KCS0gU3RhcnQgd29ya2luZyB0b3dhcmRzIG1vcmUgdHlwZS1zYWZlIGZ1bmN0aW9ucy4KCS0gU21hbGwgY29kZSBjbGVhbnVwcy4KCS0gU29tZSBkb2N1IHVwZGF0ZXMuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWJvZXguYywgZGxscy9jb21jdGwzMi9wcm9ncmVzcy5jLAoJICBkbGxzL2NvbWN0bDMyL3VwZG93bi5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCS0gRml4IGJ1ZyBpbiBtb3VzZSBwb3NpdGlvbiByZWFkaW5nLgoJLSBSZW1vdmUgdXNlbGVzcyBjb2RlLgoJLSBTbWFsbCBjb2RlIGNsZWFudXBzLgoKCSogZGxscy9jb21jdGwzMi90cmFja2Jhci5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJLSBGaXggdGhlIHRpY3MgZHJhd2luZyBjb2RlLgoJLSBGaXggdGhlIHNlbGVjdGlvbiBhcmVhIGNhbGN1bGF0aW9uICYgZHJhd2luZy4KCS0gSW1wbGVtZW50IFRCU19ET1dOSVNMRUZULgoJLSBNYWtlIHVzZSBvZiBmTG9jYXRpb24gKFRCVFNfe1RPUCxMRUZULEJVVFRPTSxSSUdIVH0pLgoJLSBMb3RzIG9mIGNvZGUgY2xlYW51cHMgYW5kIHNpbXBsaWZpY2F0aW9ucy4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbHRpcHMuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUFkZCBzdXBwb3J0IGZvciB0aGUgVFRNX0dFVEJVQkJMRVNJWkUgbWVzc2FnZS4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaDogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCS0gQWRkIG1pc3NpbmcgZGVjbGFyYXRpb24gZm9yIFRCU19ET1dOSVNMRUZUIGFuZCBUVE1fR0VUQlVCQkxFU0laRS4KCS0gRml4IGluZGVudGF0aW9uIGZvciBhIGJ1bmNoIG9mIHRoaW5ncy4KCgkqIGRsbHMvd2luc3Bvb2wvaW5mby5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUlmIHRoZSBkZWZhdWx0IENVUFMgcHJpbnRlciBoYXMgbm8gcHBkIGZpbGUsIGp1c3QgdXNlIHRoZSBmaXJzdAoJcHJpbnRlciB0aGF0IGhhcyBvbmUgYXMgV2luZG93cyBkZWZhdWx0IHByaW50ZXIuCglTdXBwb3J0IFBSSU5URVJfRU5VTV9DT05ORUNUSU9OUyBpbiB0aGUgZGVmYXVsdCB3YXkuCgoJKiBkbGxzL21zdmNydC9zY2FuZi5oOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJTWFrZSB0aGUgc2NhbmYgZmFtaWx5IHJlY29nbml6ZSBjaGFyYWN0ZXJzIGFnYWluLgoKCSogdG9vbHMvd2luYXBpL3dpbjMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMuZGF0OgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglBUEkgZmlsZXMgdXBkYXRlLgoKCSogdG9vbHMvd2luZW1ha2VyOiBNYXJ0aW4gV2lsY2sgPE1hcnRpbi5XaWxja0BGdWppdHN1LVNpZW1lbnMuY29tPgoJLSBBZGQgIi1sZGwiIGZvciB3cmFwcGVyIGFwcHMuCgktIGZpeCBNYWtlZmlsZSBmb3IgLS13cmFwLgoJLSBGaXggd3JhcHBlciBjb2RlIHdoaWNoIHdhcyBicm9rZW4gZm9yIGNvbnNvbGUgYXBwcy4KCjIwMDItMDktMDYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2NvbW1kbGcvY2RsZy5oLCBkbGxzL2NvbW1kbGcvY29sb3JkbGcuYywgZGxscy9jb21tZGxnL2ZpbGVkbGcuYywKCSAgZGxscy9jb21tZGxnL2ZpbmRkbGcuYywgZGxscy9jb21tZGxnL2ZvbnRkbGcuYywKCSAgZGxscy9jb21tZGxnL3ByaW50ZGxnLmMsIGRsbHMvd2luZXBzL2RyaXZlci5jLCBkbGxzL3dpbnNvY2svYXN5bmMuYywKCSAgZGxscy93aW5zb2NrL3NvY2tldC5jLCBpbmNsdWRlL3dpbmRlZi5oLCBpbmNsdWRlL3dpbmUvd2luc29jazE2Lmg6CglNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmRlPgoJRmluaXNoIHRoZSBjb252ZXJzaW9uIG9mIEhXTkQgdG8gYSB2b2lkKi4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL3BhdGguYywgdG9vbHMvd2luZWluc3RhbGw6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVNvbWUgc21hbGwgdHlwbyAvIHBocmFzaW5nIGZpeGVzLgoKCSogTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL01ha2VkbGwucnVsZXMuaW4sCgkgIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvTWFrZXRlc3QucnVsZXMuaW4sIGRsbHMvbWFrZV9kbGxzLAoJICBwcm9ncmFtcy93aW5ldGVzdC9NYWtlZmlsZS5pbiwgTWFrZS5ydWxlcy5pbjoKCUFkZGVkIHByZWxpbWluYXJ5IHN1cHBvcnQgZm9yIGNyb3NzLWNvbXBpbGluZyB0ZXN0cyB1c2luZyBtaW5ndyBvbgoJTGludXggaWYgYXZhaWxhYmxlLgoKCSogZGxscy93aW5tbS9tY2lhbmltL21jaWFuaW0uYywgZGxscy93aW5tbS9tY2lhdmkvaW5mby5jLAoJICBkbGxzL3dpbm1tL21jaWF2aS9tY2lhdmkuYywgZGxscy93aW5tbS9tY2lhdmkvcHJpdmF0ZV9tY2lhdmkuaCwKCSAgZGxscy93aW5tbS9tY2ljZGEvbWNpY2RhLmMsIGRsbHMvd2lubW0vbWNpc2VxL21jaW1pZGkuYywKCSAgZGxscy93aW5tbS9tY2l3YXZlL21jaXdhdmUuYywgZGxscy93aW5tbS9tbXN5c3RlbS5jLAoJICBkbGxzL3dpbm1tL3dpbmVtbS5oLCBkbGxzL2NvbWN0bDMyL3Rvb2x0aXBzLmMsCgkgIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYywgZGxscy9jb21jdGwzMi91cGRvd24uYywKCSAgZGxscy9nZGkvd2luMTZkcnYvcHJ0ZHJ2LmMsIGRsbHMvbXN2aWRlby9tc3ZpZGVvX21haW4uYywKCSAgZGxscy9zZXR1cGFwaS9xdWV1ZS5jLCBkbGxzL3NldHVwYXBpL3NldHVweF9tYWluLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbC5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwgZGxscy9zaGVsbDMyL3NobGV4ZWMuYywKCSAgZGxscy90d2Fpbi9kc21fY3RybC5jLCBkbGxzL3R3YWluL3R3YWluX2kuaCwgZGxscy93aW5tbS9tY2kuYywKCSAgZGxscy9jb21jdGwzMi9hbmltYXRlLmMsIGRsbHMvY29tY3RsMzIvY29tYm9leC5jLAoJICBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYywgZGxscy9jb21jdGwzMi9jb21tY3RybC5jLAoJICBkbGxzL2NvbWN0bDMyL2RhdGV0aW1lLmMsIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYywKCSAgZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYywgZGxscy9jb21jdGwzMi9yZWJhci5jLAoJICBkbGxzL2NvbWN0bDMyL3N0YXR1cy5jLCBkbGxzL2NvbWN0bDMyL3RhYi5jLCBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCU1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuZGU+CglQcmVwYXJlIGRsbHMve2NvbWN0bDMyLGdkaSxtc3ZpZGVvLHNldHVwYXBpLHNoZWxsMzIsdHdhaW4sd2lubW19IGZvcgoJdGhlIGNvbnZlcnNpb24gb2YgSFdORCB0byBhIHZvaWQqLgoKCSogZGxscy9hZHZhcGkzMi9hZHZhcGkzMi5zcGVjLCBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmMsCgkgIGluY2x1ZGUvbnRzZWNhcGkuaDoKCUFuZHJpeSBQYWxhbWFyY2h1ayA8YXBhM2FAeWFob28uY29tPgoJTHNhTnRTdGF0dXNUb0Rvc0Vycm9yIGltcGxlbWVudGF0aW9uLgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jOgoJTWFydGluIFdpbGNrIDxNYXJ0aW4uV2lsY2tARnVqaXRzdS1TaWVtZW5zLmNvbT4KCVdTMl9yZWdpc3Rlcl9hc3luY19zaHV0ZG93bigpOiBUcnkgaW1tZWRpYXRlIGNvbXBsZXRpb24sIGluIGNhc2UgYW4KCWFwcCBuZXZlciB3YWl0cyBmb3IgYW55dGhpbmcuCglXU19hY2NlcHQoKTogQXZvaWQgY3Jhc2ggaWYgYWRkciBwYXJhbWV0ZXIgaXMgTlVMTC4KCgkqIGRsbHMvc2hsd2FwaS9yZWcuYywgZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglJbXBsZW1lbnRlZCByZWdpc3RyeSBNSU1FIHR5cGUgZnVuY3Rpb25zIEAzMjQtMzI5LgoKCSogZGxscy9nZGkvTWFrZWZpbGUuaW4sIGRsbHMvZ2RpL2dkaTMyLnNwZWMsIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsCgkgIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy90dHlkcnYvTWFrZWZpbGUuaW4sCgkgIGRsbHMvdXNlci9NYWtlZmlsZS5pbiwgZGxscy91c2VyL3VzZXIzMi5zcGVjLAoJICBkbGxzL3dpbmVkb3MvTWFrZWZpbGUuaW4sIGRsbHMveDExZHJ2L01ha2VmaWxlLmluLCBkbGxzL01ha2VmaWxlLmluLAoJICBkbGxzL2RkcmF3L01ha2VmaWxlLmluOgoJTGluayBhbGwgcmVtYWluaW5nIGRsbHMgZXhjZXB0IGtlcm5lbDMyIGFzIHNlcGFyYXRlZCBkbGxzLCBieQoJdGVtcG9yYXJpbHkgZXhwb3J0aW5nIHRoZSBmZXcgZnVuY3Rpb25zIHRoYXQgYXJlIG5vdCBwcm9wZXJseQoJc2VwYXJhdGVkIHlldC4KCgkqIG1pc2MvdmVyc2lvbi5jOiBGaXhlZCBjaGVja2luZyBvZiBzcGVjaWFsIGRsbCBuYW1lcy4KCgkqIGRvY3VtZW50YXRpb24vaW50cm9kdWN0aW9uLnNnbWw6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJTWVudGlvbiAzMmJpdCBjb29yZGluYXRlcyBzdXBwb3J0LgoKCSogZGxscy9rZXJuZWwvdGVzdHMvYXRvbS5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJRG8gbm90IGluY2x1ZGUgd2luZS91bmljb2RlLmguCgoJKiB0b29scy93aW5lbWFrZXI6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglBZGQgcHJvdG90eXBlcyB0byBhbGwgZnVuY3Rpb25zLgoJTWFrZSB3aW5lbWFrZXIgd29yayBpbiAnc3RyaWN0JyBtb2RlLgoKCSogZGxscy9zaGx3YXBpL29yZGluYWwuYywgZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglBZGQgQDEzOCxAMTU3LEAxODAsQDE5NyxAMjA0LgoJQDE1MS0xNTc6IFBhcmFtZXRlcnMgYXJlIGNvbnN0LgoJQDM2IGluc2VydHMgTUZfQklUTUFQJ3MuCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmM6CglNYXJ0aW4gV2lsY2sgPE1hcnRpbi5XaWxja0BGdWppdHN1LVNpZW1lbnMuY29tPgoJRml4ZWQgdHlwbyBpbiBjaGVja19idWZmZXJfc2UoKS4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jOgoJUm9sZiBLYWxiZXJtYXR0ZXIgPHJvbGYua2FsYmVybWF0dGVyQGNpdGVuZy5jb20+CglJbXBsZW1lbnRlZCBTSENyZWF0ZVN0ZEVudW1GbXRFdGMuCgoJKiBkbGxzL2NvbWN0bDMyL3RyYWNrYmFyLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CgktIEVsaW1pbmF0ZSBmbGlja2VyLgoJLSBNdWNoIGltcHJvdmVkIHRodW1iIGRyYWdnaW5nLgoJLSBGaXggdG9vbHRpcCBiZWhhdmlvdXIuCgktIEZpeCB0aWNrIGhhbmRsaW5nLgoJLSBTdHJlYW1saW5lZCBkcmF3aW5nIGNvZGUuCgktIERlY2VudCBwYWdpbmcgd2lkdGguCgktIEhhbmRsZSBPT00gZ3JhY2VmdWxseS4KCS0gQWRkIHByb3BlciBub3RpZmljYXRpb25zLgoJLSBGaXggcmFuZ2Ugc2V0dGluZy4KCS0gU3RhcnQgc3VwcG9ydCBmb3IgY3VzdG9tIGRyYXcuCgktIEZpeCBhIGJ1bmNoIG9mIGJ1Z3MuCgktIENvZGUgY2xlYW51cHMuCgktIFVwZGF0ZSBkb2N1bWVudGF0aW9uLgoJLSBTcGFjaW5nIGZpeGVzLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMi5oOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQWRkIGdlbmVyaWMgbm90aWZpY2F0aW9uIHN1cHBvcnQgZm9yIHRoZSBjb21tb24gY29udHJvbHMuCgoJKiBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJLSBDb21wbGV0ZSBzdXBwb3J0IGZvciByZ2J7RmcsQmt9IGluIERyYXdJbmRpcmVjdC4KCS0gUmVuYW1lIFZPSUQgdG8gdm9pZC4KCS0gRG9jdW1lbnRhdGlvbiBjbGVhbnVwLgoJLSBGaXggSUxEX1RSQU5TUEFSRU5UIGhhbmRsaW5nLgoKMjAwMi0wOS0wNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIFZFUlNJT04sIGNvbmZpZ3VyZSwgQU5OT1VOQ0UsIENoYW5nZUxvZzogUmVsZWFzZSAyMDAyMDkwNC4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KMjAwMi0wOS0wNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIE1ha2VmaWxlLmluOiBSZW1vdmUgTWFrZXRlc3QucnVsZXMgb24gZGlzdGNsZWFuLgoKCSogZGxscy9rZXJuZWwvc3luYy5jOgoJUGVla05hbWVkUGlwZTogQ2hlY2sgaWYgdGhlIHBpcGUgd2FzIGNsb3NlZCB3aGVuIHRoZXJlIGFyZSAwIGF2YWlsYWJsZQoJYnl0ZXMgKGJhc2VkIG9uIGEgcGF0Y2ggYnkgVXdlIEJvbm5lcykuCgoJKiBkbGxzL3NobHdhcGkvTWFrZWZpbGUuaW4sIGRsbHMvc2hsd2FwaS9hc3NvYy5jLAoJICBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUFkZGVkIEFzc29jKiBmdW5jcyAoYnV0IG5vdCB1bmRlcmx5aW5nIElRdWVyeUFzc29jaWF0aW9ucyBvYmplY3QpLgoKCSogZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCS0gRml4IEltYWdlTGlzdF9HZXRJY29uIHRvIHVzZSBJbWFnZUxpc3RfKiBmdW5jdGlvbnMgZm9yCgkgIGNvbXBsZXRlbmVzcy4KCS0gVGlueSBjb2RlIGNsZWFudXBzLgoJLSBEb2N1bWVudGF0aW9uIHVwZGF0ZXMuCgoJKiBkbGxzL2NvbWN0bDMyL3RyYWNrYmFyLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CgktIFVuaWNvZGlmaWNhdGlvbiAodXNlIFVuaWNvZGUgZnVuY3Rpb25zICYgdHlwZXMgY29uc2lzdGVudGx5KS4KCS0gUGFzcyBpbmZvUHRyIGFyb3VuZCBpbnN0ZWFkIG9mIGh3bmQuCgktIFByb3BlciB0eXBlLXNhZmUgc2lnbmF0dXJlcyBmb3IgZnVuY3Rpb25zIHByb2Nlc3NpbmcgbWVzc2FnZXMuCgktIEZpeCB0aGUgdHlwZXMgZm9yIHNvbWUgb2YgdGhlIGNvbnRyb2wncyBwYXJhbWV0ZXJzLgoJLSBJbXBsZW1lbnQgW0dTXUVUX1VOSUNPREVGT1JNQVQuCgktIEZldyBpbmRlbnRhdGlvbiBhbmQgc3BhY2luZyBmaXhlcy4KCS0gVGlkeSB1cCBkb2N1LgoKCSogdG9vbHMvd2luZWluc3RhbGw6IFJvayBNYW5kZWxqYyA8cm9rbWFuZGVsamNAaG90bWFpbC5jb20+CglBZGRlZCBzeW1saW5rcyBmb3Igd2luaGVscC4KCgkqIHdpbmRvd3MvZGlhbG9nLmMsIHdpbmRvd3MvaG9vay5jLCB3aW5kb3dzL21kaS5jLCB3aW5kb3dzL21lc3NhZ2UuYywKCSAgd2luZG93cy9zcHkuYywgd2luZG93cy9zdHJ1Y3QzMi5jLCB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3dpbmhlbHAuYywKCSAgd2luZG93cy93aW5wcm9jLmMsIGNvbnRyb2xzL2xpc3Rib3guYywgY29udHJvbHMvc3RhdGljLmMsCgkgIGRsbHMvdXNlci9kZGUvY2xpZW50LmMsIGRsbHMvdXNlci9tc2cxNi5jLCBkbGxzL3VzZXIvcHJvcGVydHkuYywKCSAgZGxscy91c2VyL3duZDE2LmMsIGRsbHMveDExZHJ2L2RnYTIuYywgZGxscy94MTFkcnYvZXZlbnQuYywKCSAgaW5jbHVkZS93aW4uaDoKCU1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuZGU+CgktIFJlbmFtZSBXSU5fSGFuZGxlMTYgdG8gSFdETl8xNiBhbmQgbWFrZSBpdCBhIG1hY3JvLgoJLSBQcmVwYXJlIHVzZXIuZGxsIGZvciB0aGUgY2hhbmdlIG9mIEhXTkQgdG8gYSB2b2lkKi4KCgkqIGRsbHMvd2luZWRvcy9kb3NleGUuaCwgZGxscy93aW5lZG9zL2Rvc3ZtLmMsIGRsbHMvd2luZWRvcy9pbnQxMC5jLAoJICBkbGxzL3dpbmVkb3MvaW50MzEuYywgaW5jbHVkZS9taXNjZW11LmgsIG1zZG9zL2Rvc21lbS5jLAoJICBtc2Rvcy9kcG1pLmMsIG1zZG9zL2ludDJmLmM6CglBZGRlZCBEUE1JIHNlZ21lbnRzIHN0cnVjdHVyZSBhbmQgcmVsYXRlZCBmdW5jdGlvbiB0byBhdm9pZCBkaXJlY3QKCXJlZmVyZW5jZXMgdG8gZG9zbWVtIGludGVybmFsIHZhcmlhYmxlcy4KCURldGVybWluZSBCSU9TIHN5c3RlbSBvZmZzZXRzIGF0IGNvbXBpbGUgdGltZS4KCgkqIG9iamVjdHMvZm9udC5jOiBTaGFjaGFyIFNoZW1lc2ggPHdpbmUtcGF0Y2hlc0BzdW4uY29uc3VtZXIub3JnLmlsPgoJLSBSZXR1cm4gb2xkIGNvZGUgZm9yIGhhbmRsaW5nIHBhcmFtZXRlcnMgdG8gR2V0Q2hhcmFjdGVyUGxhY2VtZW50ICgrCgkgIGZpeCBoZWFwIG92ZXJydW4gaW4gaXQpLiBOZXcgY29kZSBkaWQgbm90IGNvcnJlY3RseSBtYXRjaCB0aGUgV2luZG93cwoJICBiZWhhdmlvdXIuCgktIEFtZW5kIHRoZSBCaURpIGFsZ29yaXRobSBzbyB0aGF0IG1hbnkgc3RyaW5ncyB3aWxsIG5vdyBwcm9kdWNlIHF1aXRlCgkgIHJlYWRhYmxlIG91dHB1dC4KCgkqIGluY2x1ZGUvd2luZ2RpLmgsIHRvb2xzL3dyYy9uZXdzdHJ1Yy5jOgoJU3RldmVuIEVkd2FyZHMgPHN0ZXZlbl9lZDQxNTNAeWFob28uY29tPgoJRml4ZWQgdHlwbyBpbiBCSVRNQVBWNEhFQURFUiBzdHVjdHVyZS4KCgkqIGRsbHMvc2hlbGwzMi9zaGxmaWxlb3AuYywgZGxscy9zaGVsbDMyL3Rlc3RzL3NobGZpbGVvcC5jOgoJQW5kcml5IFBhbGFtYXJjaHVrIDxhcGEzYUB5YWhvby5jb20+CglTSEZpbGVPcGVyYXRpb25BOiBpbXByb3ZlZCwgaW1wbGVtZW50ZWQgRk9fTU9WRSBhY3Rpb24sIGFkZGVkIG1vcmUKCWNvbmZvcm1hbmNlIHRlc3RzLgoKCSogZGxscy9jb21jdGwzMi91cGRvd24uYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVNtYWxsIHVwZG93biBjbGVhbnVwLgoKCSogaW5jbHVkZS9jb21tY3RybC5oOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQWRkZWQgc29tZSBtaXNzaW5nIEltYWdlTGlzdCBkZWZpbml0aW9ucy4KCgkqIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CgktIGltcGxlbWVudCBzdXBwb3J0IGZvciB4Qml0bWFwIGFuZCB5Qml0bWFwIGluIEltYWdlTGlzdF9EcmF3SW5kaXJlY3QKCS0gc21hbGwgY29kZSwgZG9jcywgYW5kIG1lc3NhZ2VzIGNsZWFudXBzCgoJKiBkbGxzL3dpbm1tL2pveXN0aWNrL2pveXN0aWNrLmM6IERhdmlkIEQuIEhhZ29vZCA8d293YmFnZ2VyQHNrdGMubmV0PgoJRml4ZWQgTGludXggMi4yIGV2ZW50IEFQSSBjb2RlLgoKCSogZGVidWdnZXIvd2luZWRiZy5jOiBFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCVJlbW92ZWQgY29uc29sZSBzaXppbmcgYXQgc3RhcnR1cC4KCgkqIHByb2dyYW1zL3dpbmVjb25zb2xlL2RpYWxvZy5jLCBwcm9ncmFtcy93aW5lY29uc29sZS9yZWdpc3RyeS5jLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS91c2VyLmMsIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25fcHJpdmF0ZS5oLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uX3VzZXIuaCwKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbnNvbGUuYywKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbnNvbGVfRGUucmMsCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25zb2xlX0VuLnJjLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZV9Gci5yYywKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbnNvbGVfcmVzLmg6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIGNvbmZpZ3VyYXRpb24gb24gcGVyIGFwcGxpY2F0aW9uIGJhc2lzLgoJQWRkZWQgYWJpbGl0eSB0byBvdmVycmlkZSBwYXJ0IG9mIHRoZSBjb25maWd1cmF0aW9uIGZyb20gY29uc29sZQoJY3JlYXRvci4KCVJldmlzaXRlZCBhIGJpdCB3aW5lY29uc29sZSBzdGFydHVwLgoJQWRkZWQgZGlhbG9nIHBhcnQgZm9yIHdpbmRvdyBjbG9zaW5nIGF0IHByb2Nlc3MgdGVybWluYXRpb24uCgoJKiBkbGxzL2tlcm5lbC9jb25zb2xlLmMsIGRsbHMva2VybmVsL2NvbnNvbGVfcHJpdmF0ZS5oLAoJICBkbGxzL2tlcm5lbC9lZGl0bGluZS5jLCBkbGxzL2tlcm5lbC9rZXJuZWxfbWFpbi5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglOb3cgcGFzc2luZyBzb21lIGNvbnNvbGUgcGFyYW1ldGVycyBhdCB3aW5lY29uc29sZSBjcmVhdGlvbiBpbnN0ZWFkIG9mCglzdWNjZXNzaXZlIHNlcnZlciByZXF1ZXN0cy4KCUJldHRlciBwcm90b3R5cGVzIGZvciBjb25zb2xlIGZ1bmN0aW9ucyBpbiBrZXJuZWwuCglTb21lIG1pbm9yIGNvbnNvbGUgY3JlYXRpb24gZml4ZXMuCgoyMDAyLTA4LTMxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9nZGkvZHJpdmVyLmMsIGRsbHMvbnRkbGwvdGltZS5jLCBmaWxlcy9wcm9maWxlLmMsCgkgIGluY2x1ZGUvbW1kZGsuaCwgbG9hZGVyL25lL21vZHVsZS5jLCBtZW1vcnkvYXRvbS5jLCBtc2Rvcy9kb3Njb25mLmMsCgkgIG1zZG9zL3Z4ZC5jLCB0b29scy93aW5lYnVpbGQvbWFpbi5jLCB3aW4zMi9uZXdmbnMuYywKCSAgd2luZG93cy9jbGlwYm9hcmQuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJTVNWQyBjb21wYXRpYmlsaXR5IGZpeGVzLgoKCSogcHJvZ3JhbXMvd2luaGVscC9Tay5yYzogUmVwYWlyZWQgU2xvdmFrIHJlc291cmNlcy4KCgkqIHByb2dyYW1zL3dpbmhlbHAvU2kucmMsIHByb2dyYW1zL3dpbmhlbHAvcnNyYy5yYzoKCVJvayBNYW5kZWxqYyA8cm9rbWFuZGVsamNAaG90bWFpbC5jb20+CglBZGRlZCBTbG92ZW5pYW4gcmVzb3VyY2VzLgoKCSogaWYxNjMyL3JlbGF5LmMsIGlmMTYzMi9zbm9vcC5jLCBpbmNsdWRlL21pc2NlbXUuaCwgaW5jbHVkZS93aW5udC5oLAoJICBsb2FkZXIvdGFzay5jLCBtaXNjL3N5c3RlbS5jLCBtc2Rvcy9kb3NtZW0uYywgbXNkb3MvZHBtaS5jLAoJICBtc2Rvcy9pbnQxMS5jLCBtc2Rvcy9pbnQxMi5jLCBtc2Rvcy9pbnQxNS5jLCBtc2Rvcy9pbnQxYS5jLAoJICBtc2Rvcy9pbnQyMS5jLCBtc2Rvcy9pbnQyNS5jLCBtc2Rvcy9pbnQyNi5jLCBtc2Rvcy9pbnQyZi5jLAoJICBtc2Rvcy9pbnQ0Yi5jLCBtc2Rvcy9pbnQ1Yy5jLCBtc2Rvcy92eGQuYywgd2luMzIvZGV2aWNlLmMsCgkgIHdpbmRvd3MvaW5wdXQuYywgZGxscy9rZXJuZWwvdGh1bmsuYywgZGxscy9rZXJuZWwvd2luODdlbS5jLAoJICBkbGxzL2tlcm5lbC93aW5kZWJ1Zy5jLCBkbGxzL3dpbmVkb3MvZGV2aWNlcy5jLAoJICBkbGxzL3dpbmVkb3MvZG9zYXNwaS5jLCBkbGxzL3dpbmVkb3MvZG9zZXhlLmgsIGRsbHMvd2luZWRvcy9pbnQxMC5jLAoJICBkbGxzL3dpbmVkb3MvaW50MTYuYywgZGxscy93aW5lZG9zL2ludDE3LmMsIGRsbHMvd2luZWRvcy9pbnQyMS5jLAoJICBkbGxzL3dpbmVkb3MvaW50MzMuYywgZGxscy93aW5lZG9zL2ludDY3LmMsIGRsbHMvd2luZWRvcy94bXMuYzoKCU1vdmVkIGludGVybmFsIGNvbnRleHQgbWFjcm9zIG91dCBvZiB3aW5udC5oLgoJQWRkZWQgU0VUX0FYIGV0Yy4gbWFjcm9zIHRvIGF2b2lkIG5vbi1wb3J0YWJsZSBwb2ludGVyIG1hbmlwdWxhdGlvbnMuCgoJKiBkZWJ1Z2dlci9zb3VyY2UuYzogRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglMb2FkIHNvdXJjZSBmaWxlcyB0aHJ1IFdpbjMyIEFQSS4KCgkqIGRlYnVnZ2VyL2dkYnByb3h5LmMsIGRlYnVnZ2VyL21lbW9yeS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtZWlzc25lckBzdXNlLmRlPgoJQWRkZWQgZ2RicHJveHkgc3VwcG9ydCBmb3IgcHBjLCBhZGRlZCBtaXNzaW5nIEdFVF9JUCBmb3IgbWVtb3J5LmMuCgoyMDAyLTA4LTMwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jcnRkbGwvLmN2c2lnbm9yZSwgZGxscy9kaW5wdXQvLmN2c2lnbm9yZSwKCSAgZGxscy9kcGxheXgvLmN2c2lnbm9yZSwgZGxscy9pbWFnZWhscC8uY3ZzaWdub3JlLAoJICBkbGxzL21hcGkzMi8uY3ZzaWdub3JlLCBkbGxzL25ldGFwaTMyLy5jdnNpZ25vcmUsCgkgIGRsbHMvb2xlc3ZyLy5jdnNpZ25vcmUsIGRsbHMvcmljaGVkaXQvLmN2c2lnbm9yZSwKCSAgZGxscy9zaGRvY3Z3Ly5jdnNpZ25vcmUsIGRsbHMvc2hsd2FwaS8uY3ZzaWdub3JlLAoJICBkbGxzL3RhcGkzMi8uY3ZzaWdub3JlLCBkbGxzL3R3YWluLy5jdnNpZ25vcmUsCgkgIGRsbHMvYXZpY2FwMzIvLmN2c2lnbm9yZSwgZGxscy9jb21jYXQvLmN2c2lnbm9yZSwKCSAgZGxscy9jb21jdGwzMi8uY3ZzaWdub3JlOgoJU3RldmVuIEVkd2FyZHMgPHN0ZXZlbl9lZDQxNTNAeWFob28uY29tPgoJVXBkYXRlIHNvbWUgLmN2c2lnbm9yZSBmaWxlcyBmb3IgYnVpbGRpbmcgb24gV2luZG93cy4KCgkqIGRsbHMvd2luZWRvcy9kZXZpY2VzLmMsIGRsbHMvd2luZWRvcy9kb3Nhc3BpLmMsCgkgIGRsbHMvd2luZWRvcy9kb3NleGUuaCwgZGxscy93aW5lZG9zL2Rvc3ZtLmMsIGRsbHMvd2luZWRvcy9pbnQxMC5jLAoJICBkbGxzL3dpbmVkb3MvaW50MTYuYywgZGxscy93aW5lZG9zL2ludDIxLmMsIGRsbHMvd2luZWRvcy9pbnQzMS5jLAoJICBkbGxzL3dpbmVkb3MvaW50NjcuYywgZGxscy93aW5lZG9zL21vZHVsZS5jLCBkbGxzL3dpbmVkb3MvdmdhLmMsCgkgIGRsbHMvd2luZWRvcy94bXMuYywgaW5jbHVkZS9taXNjZW11LmgsIG1zZG9zL2Rvc21lbS5jOgoJRml4ZWQgc29tZSBkbGwgc2VwYXJhdGlvbiBpc3N1ZXMuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWJvZXguYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUltcGxlbWVudCBDQkVTX0VYX05PU0laRUxJTUlUIHN0eWxlLgoKCSogdG9vbHMvd2luYXBpL21zdmNtYWtlcjogUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIFByb3BlciBoYW5kbGluZyBvZiBHREkzMiBhbmQgVVNFUjMyLgoJLSBBZGRlZCBQQUNLQUdFXyogZm9yIHRoZSBjb25maWcuaCBnZW5lcmF0aW9uLgoJLSBQcm9wZXIgaW5jbHVkZSBwYXRoIGZvciB0aGUgcmVzb3VyY2UgY29tcGlsZXIuCgktIE1pbm9yIGJ1ZyBmaXhlcyBhbmQgaW1wcm92ZW1lbnRzLgoKCSogcHJvZ3JhbXMvd2luaGVscC9obHAyc2dtbC5jOiBQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgaXNzdWVzIGZvdW5kIGJ5IHdpbmFwaV9jaGVjay4KCgkqIHRvb2xzL3dpbmFwaS93aW4xNi5hcGksIHRvb2xzL3dpbmFwaS93aW4zMi5hcGk6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUFQSSBmaWxlcyB1cGRhdGUuCgoJKiBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jLCBkbGxzL250ZGxsL3NpZ25hbF9wb3dlcnBjLmMsCgkgIGluY2x1ZGUvd2lubnQuaCwgc2VydmVyL2NvbnRleHRfcG93ZXJwYy5jOgoJTWFyY3VzIE1laXNzbmVyIDxtZWlzc25lckBzdXNlLmRlPgoJVXNlIElhciAoSW5zdHJ1Y3Rpb24gQWRkcmVzcyBSZWdpc3RlcikgaW5zdGVhZCBvZiBGaWxsWzBdLgoJc2lnaW5mby5zaV9jb2RlIHVzZXMgdGhlIGxvd2VyIDE2Yml0IGZvciB0aGUgdHlwZSBvZiB0aGUgZXhjZXB0aW9uLgoKCSogcHJvZ3JhbXMvY2xvY2svU2kucmMsIHByb2dyYW1zL2Nsb2NrL3JzcmMucmM6CglSb2sgTWFuZGVsamMgPHJva21hbmRlbGpjQGhvdG1haWwuY29tPgoJU2xvdmVuaWFuIHJlc291cmNlcyBmb3IgY2xvY2suCgoyMDAyLTA4LTI5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy9pbnB1dC5jOiBQZXIgTnlzdHJvbSA8Y2VudGF1ckBuZXRtYWdpYy5uZXQ+CglTZXQgdGhlIGZsYWcgaW4gR2V0Q3Vyc29ySW5mby4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gUmVkdWNlIHRoZSBudW1iZXIgb2YgbWVzc2FnZXMgYmVpbmcgcGFzc2VkIHRvIGl0c2VsZiBieSB1c2luZyB0aGUKCSAgaW50ZXJuYWwgcm91dGluZXMuCgktIEZpeCBwcm9ibGVtIGluIF9TZXRJY29uU3BhY2luZyBmb3VuZCBieSByZWNlbnQgY2hhbmdlLgoJLSBBZGQgaW5pdGlhbCBzdXBwb3J0IGZvciBjb3JyZWN0IGljb24gc2l6aW5nLgoJLSBBIGZldyBleHRyYSB0cmFjZXMuCgoJKiB3aW5kb3dzL3BhaW50aW5nLmM6CglDcmVhdGUgdGhlIHNjcmF0Y2ggcmVnaW9uIGJlZm9yZSBjb3B5aW5nIGlmIG5lY2Vzc2FyeS4KCgkqIGdyYXBoaWNzL3gxMWRydi9wYWxldHRlLmMsIGluY2x1ZGUvd2luZGVmLmgsCgkgIGRsbHMvbXN2aWRlby9tc3ZpZGVvMTYuYywgZGxscy9tc3ZpZGVvL21zdmlkZW9fbWFpbi5jLAoJICBkbGxzL21zdmlkZW8vdmZ3MTYuaDoKCU1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuZGU+CglDb252ZXJ0IEhQQUxFVFRFIHRvIGEgdm9pZCouCgoJKiBkbGxzL2dkaS9nZGkxNi5jLCBpbmNsdWRlL2dkaS5oLCBvYmplY3RzL2RjLmMsIG9iamVjdHMvcGFsZXR0ZS5jOgoJQWRkZWQgaW50ZXJuYWwgMzItYml0IHZlcnNpb25zIG9mIEdESVNlbGVjdFBhbGV0dGUgYW5kCglHRElSZWFsaXplUGFsZXR0ZS4KCgkqIGRsbHMvd2lubW0vd2luZWFsc2EvYWxzYS5oLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBjb25maWd1cmUsCgkgIGNvbmZpZ3VyZS5hYzoKCU1hcmNvIFBpZXRyb2Jvbm8gPHBpZXRyb2JvQHBpZXRyb2JvLmNvbT4KCVVzZSBhbHNhL2Fzb3VuZGxpYi5oIGluc3RlYWQgb2Ygc3lzL2Fzb3VuZGxpYi5oIGlmIHBvc3NpYmxlLgoKCSogd2luZG93cy93aW4uYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2Vuc2NobWllZEBseWNvcy5kZT4KCVN1cHBvcnQgZm9yIEhXTkRfTUVTU0FHRS4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJSW4gV1NBU3RhcnR1cCgpIGRvbid0IHRvdWNoIHRoZSBscFZlbmRvckluZm8gZmllbGQgb2YgdGhlIFdTQURBVEEKCXN0cnVjdHVyZS4KCgkqIGRsbHMveDExZHJ2L3dpbnBvcy5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZW1AY29kZXdlYXZlcnMuY29tPgoJUmVseSBvbiB0aGUgd2luZG93IG1hbmFnZXIgdG8gc2hvdyBhbmQgaGlkZSBwb3B1cCB3aW5kb3dzIGZvciB1cy4KCjIwMDItMDgtMjggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL21zYWNtL3dpbmVtcDMvZGVjb2RlX2kzODYuYywgZGxscy9tc2FjbS93aW5lbXAzL21wZWdsMy5jLAoJICBkbGxzL29sZWF1dDMyL3BhcnNlZHQuYywgZGxscy9yaWNoZWRpdC9yZWFkZXIuYywKCSAgZGxscy9yaWNoZWRpdC90ZXh0LXdyaXRlci5jLCBkbGxzL3dpbmVkb3MvaW50NjcuYywKCSAgZGxscy93aW5lcHMvZG93bmxvYWQuYywgZGxscy93aW5pbmV0L2ludGVybmV0LmgsCgkgIGluY2x1ZGUvd2luZS9vYmpfZHJhZ2Ryb3BoZWxwZXIuaCwgcHJvZ3JhbXMvcmVnc3ZyMzIvcmVnc3ZyMzIuYywKCSAgdG9vbHMvd2luZWR1bXAvb3V0cHV0LmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCVJlbW92ZWQgdHJhaWxpbmcgd2hpdGUgc3BhY2UuCgoJKiB0b29scy93aW5hcGkvTWFrZWZpbGUuaW4sIHRvb2xzL3dpbmFwaS93aW5hcGlfY2xlYW51cCwKCSAgdG9vbHMvd2luYXBpL3dpbmFwaV9jbGVhbnVwX29wdGlvbnMucG06CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCU5ldyB0b29sIHdpbmFwaV9jbGVhbnVwIGZvciBkb2luZyBzaW1wbGUgYXV0b21hdGljIGNsZWFudXBzLgoJQ3VycmVudGx5IGl0IHJlbW92ZXMgdHJhaWxpbmcgd2hpdGUgc3BhY2UgZnJvbSB0aGUgLltjaF0gZmlsZXMuCgoJKiBtc2Rvcy9pbnQxMS5jLCBtc2Rvcy9pbnQyMS5jLCBtc2Rvcy9pb3BvcnRzLmMsIG9iamVjdHMvZm9udC5jLAoJICByZWxheTMyL2J1aWx0aW4zMi5jLCBzY2hlZHVsZXIvaGFuZGxlLmMsIHNjaGVkdWxlci90aW1lci5jLAoJICB3aW4zMi9leGNlcHQuYywgZ3JhcGhpY3MvcGFpbnRpbmcuYywgZ3JhcGhpY3MvcGF0aC5jLAoJICBpZjE2MzIvYnVpbHRpbi5jLCBpZjE2MzIvcmVsYXkuYywgaW5jbHVkZS9maWxlLmgsIGluY2x1ZGUvcnBjZGNlcC5oLAoJICBsaWJyYXJ5L2NvbmZpZy5jLCBsb2FkZXIvbG9hZG9yZGVyLmMsIGxvYWRlci9tYWluLmMsCgkgIGxvYWRlci9tb2R1bGUuYywgbG9hZGVyL25lL3NlZ21lbnQuYywgbG9hZGVyL3Jlc291cmNlLmMsCgkgIG1lbW9yeS9yZWdpc3RyeS5jLCBkbGxzL2dkaS9lbmhtZmRydi9ncmFwaGljcy5jLAoJICBkbGxzL2dkaS9wcmludGRydi5jLCBkbGxzL2dkaS93aW4xNmRydi9pbml0LmMsIGRsbHMva2VybmVsL2NvbW0uYywKCSAgZGxscy9rZXJuZWwva2VybmVsX21haW4uYywgZGxscy9rZXJuZWwvbG9jYWxlLmMsIGRsbHMva2VybmVsL3N5bmMuYywKCSAgZGxscy9rZXJuZWwvdGh1bmsuYywgZGxscy9rZXJuZWwvd293dGh1bmsuYywKCSAgZGxscy9semV4cGFuZC9semV4cGFuZF9tYWluLmMsIGRsbHMvbnRkbGwvc2VjLmMsCgkgIGRsbHMvbnRkbGwvc2lnbmFsX3Bvd2VycGMuYywgZGxscy9zaGVsbDMyL2RpYWxvZ3MuYywKCSAgZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3NoZWxsLmMsIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYywKCSAgZGxscy9zaGx3YXBpL29yZGluYWwuYywgZGxscy9zaGx3YXBpL3BhdGguYywgZGxscy9zaGx3YXBpL3N0cmluZy5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglNU1ZDIGNvbXBhdGliaWxpdHkgZml4ZXMuCgoJKiBkbGxzL3VzZXIvZGlzcGxheS5jLCBkbGxzL3VzZXIvdXNlcjMyLnNwZWMsIGluY2x1ZGUvd2ludXNlci5oLAoJICB3aW5kb3dzL2lucHV0LmM6CglQZXIgTnlzdHJvbSA8Y2VudGF1ckBuZXRtYWdpYy5uZXQ+CglJbXBsZW1lbnRlZCBHZXRDdXJzb3JJbmZvLgoKCSogcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS9hZHZhcGkzMi5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS9jb21jdGwzMi5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS9rZXJuZWwzMi5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS9udGRsbC5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS9vbGUzMi5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS9ycGNydDQucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvc2hlbGwzMi5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS9zaGx3YXBpLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL3VybG1vbi5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS91c2VyMzIucG06CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCVVwZGF0ZWQgd2luZXRlc3QncyBQZXJsIG1vZHVsZXMgdXNpbmcgd2luYXBpX2V4dHJhY3QuCgoJKiBjb250cm9scy9tZW51LmM6IEFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCU1ha2Ugc3VyZSB3ZSBjbGVhciB0aGUgb3duaW5nIHdpbmRvdydzIGhNZW51IGluIERlc3Ryb3lNZW51KCkuCgoJKiBkbGxzL2dkaS93aW4xNmRydi9mb250LmMsIGRsbHMvZ2RpL3dpbjE2ZHJ2L3dpbjE2ZHJ2LmgsCgkgIGRsbHMvdXNlci91c2VyX21haW4uYywgZ3JhcGhpY3MveDExZHJ2L2NvZGVwYWdlLmMsCgkgIGdyYXBoaWNzL3gxMWRydi9kaWIuYywgZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsIGluY2x1ZGUvYml0bWFwLmgsCgkgIGluY2x1ZGUvZm9udC5oLCBpbmNsdWRlL2dkaS5oLCBpbmNsdWRlL2dsb2JhbC5oLCBpbmNsdWRlL3gxMWZvbnQuaCwKCSAgbWVtb3J5L2F0b20uYywgb2JqZWN0cy9iaXRtYXAuYywgb2JqZWN0cy9kaWIuYywgb2JqZWN0cy9mb250LmMsCgkgIG9iamVjdHMvcmVnaW9uLmMsIHdpbmRvd3MvY3Vyc29yaWNvbi5jLCB3aW5kb3dzL3BhaW50aW5nLmM6CglGaXhlZCBhIG51bWJlciBvZiBkbGwgc2VwYXJhdGlvbiBpc3N1ZXMuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9wYXRoLmM6IFJlbW92ZWQgc3lzdGVtIHNwZWNpZmljIEdldFRlbXBQYXRoQSB0ZXN0LgoKCSogd2luZG93cy9ub25jbGllbnQuYzogVHdlYWsgcG9zaXRpb24gb2Ygc3lzdGVtIG1lbnUgc21hbGwgaWNvbi4KCgkqIGRsbHMvY29tY3RsMzIvY29tYm9leC5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJLSBpbXBsZW1lbnQgQ0JFTl9EUkFHQkVHSU4KCS0gcmVtb3ZlIHVzZWxlc3MgRklYTUVzCgoJKiBkZWJ1Z2dlci93aW5lZGJnLmM6IEVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgYnJlYWtpbmcgRExMIGxvYWQuCgoJKiBkZWJ1Z2dlci9tc2MuYzogRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCB0eXBvIGluIHRlc3QuCgoJKiBkbGxzL2dkaS9tZmRydi9iaXRibHQuYzogSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJQml0Qmx0IGFuZCBTdHJldGNoQmx0IGdlbmVyYXRlIE1FVEFfRElCU1RSRVRDSEJMVCByZWNvcmRzLgoKCSogd2luZG93cy9zeXNtZXRyaWNzLmMsIHdpbmRvd3Mvc3lzcGFyYW1zLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQ29ycmVjdCBzb21lIG9mIHRoZSBzeXN0ZW0gbWV0cmljcyB0byBtb3JlIGNsb3NlbHkgbWF0Y2ggV2luZG93cwoJdmFsdWVzLgoKCSogY29udHJvbHMvY29tYm8uYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUlmIHdlIGhhdmUgbm8gZHJvcGRvd24gaGVpZ2h0IGdpdmUgb3Vyc2VsdmVzIGEgbWluaW11bSBoZWlnaHQgb2YgNQoJaXRlbXMgb3IgbWF4IGl0ZW1zICh3aGljaGV2ZXIgaXMgbGVzcykuCgoJKiBjb250cm9scy9jb21iby5jOgoJRml4ZWQgV01fR0VUVEVYVCBoYW5kbGluZyB0byBhdm9pZCBzdHJuY3B5IGFuZCByZXR1cm4gY29ycmVjdCBsZW5ndGhzLgoKCSogY29udHJvbHMvbWVudS5jLCBkbGxzL29sZTMyL29sZTIuYywgZGxscy91c2VyL21zZzE2LmMsCgkgIGRsbHMvdXNlci9yZXNvdXJjZS5jLCBpbmNsdWRlL3VzZXIuaCwgaW5jbHVkZS93aW5kZWYuaDoKCU1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuZGU+CglDb252ZXJ0IEhBQ0NFTCB0byBhIHZvaWQqLgoKCSogZGxscy91c2VyL01ha2VmaWxlLmluLCBkbGxzL3VzZXIvdXNlci5leGUuc3BlYywgZGxscy91c2VyL3VzZXIxNi5jLAoJICBpbmNsdWRlL3dpbmUvd2ludXNlcjE2Lmg6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUltcGxlbWVudCB3cmFwcGVyIGNhbGxzIGZvciB0aGUgMTYgYml0IEdsb2JhbEF0b20qIGZ1bmN0aW9ucy4KCjIwMDItMDgtMjcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3dpbnNwb29sL2luZm8uYzoKCUFsZXhhbmRlciBHb3R0d2FsZCA8QWxleGFuZGVyLkdvdHR3YWxkQGluZm9ybWF0aWsudHUtY2hlbW5pdHouZGU+CglBdm9pZCBjcmFzaCBpZiBubyBkZWZhdWx0IGN1cHMgcHJpbnRlciBpcyBzZXQuCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmg6IEFkZGVkIGEgY291cGxlIG9mIGxpc3R2aWV3IGRlZmluaXRpb25zLgoKCSogdG9vbHMvd2luZWJ1aWxkL3BhcnNlci5jOgoJRml4ZWQgbGluZSBudW1iZXJzIGluIGVycm9yIG1lc3NhZ2VzIGFuZCBpbXByb3ZlZCByZWRlZmluaXRpb24gZXJyb3IKCShiYXNlZCBvbiBhIHBhdGNoIGJ5IEpvbiBHcmlmZml0aHMpLgoKCSogdG9vbHMvd2lkbC9wYXJzZXIubCwgdG9vbHMvd2lkbC93aWRsLmMsIHRvb2xzL3dpbmVidWlsZC9pbXBvcnQuYywKCSAgdG9vbHMvd3BwL3dwcC5jLCB0b29scy93cHAvd3BwLmgsIHRvb2xzL3dyYy93cmMuYzoKCVRyeSB0byBkZXJpdmUgdGVtcCBmaWxlIG5hbWVzIGZyb20gb3V0cHV0IGZpbGUgbmFtZXMgZm9yIGJldHRlcgoJcG9ydGFiaWxpdHkuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlbUBjb2Rld2VhdmVycy5jb20+CglDaGFuZ2UgdGhlIGljb24gc3BhY2luZyB3aGVuIHNldHRpbmcgdGhlIGltYWdlIGxpc3QuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglXaW5kb3dzIGV4cGVjdHMgdGhlIGVkaXQgd2luZG93IHRvIGhhbmcgYXJvdW5kIGFuZCBiZSB2YWxpZC4KCgkqIGRsbHMvdXNlci91c2VyX21haW4uYywgZGxscy94MTFkcnYvY2xpcGJvYXJkLmMsIGRsbHMveDExZHJ2L2V2ZW50LmMsCgkgIGRsbHMveDExZHJ2L3gxMWRydi5zcGVjLCBpbmNsdWRlL2NsaXBib2FyZC5oLCBpbmNsdWRlL3VzZXIuaCwKCSAgaW5jbHVkZS94MTFkcnYuaCwgd2luZG93cy9jbGlwYm9hcmQuYzoKCVVscmljaCBDemVrYWxsYSA8dWN6ZWthbGxhQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gQWRkIGEgbWF4IHdhaXQgdGltZSBmb3Igc2VsZWN0aW9uIG5vdGlmaWVzLgoJLSBBZGQgbmV3IGZ1bmN0aW9uIHRvIHRoZSB4MTFkcnYgdG8gZ2V0IGNsaXBib2FyZCBmb3JtYXQgbmFtZXMgb2YKCSAgZXh0ZXJuYWxseSByZWdpc3RlcmVkIGZvcm1hdHMuCgktIFdoZW4gYSBjbGlwYm9hcmQgZm9ybWF0IGlzIHJlZ2lzdGVyZWQgd2Ugc2hvdWxkIHBhc3MgdGhlIGdsb2JhbCBhdG9tCgkgIHZhbHVlIGFzIHRoZSBmb3JtYXQgaWRlbnRpZmllci4KCS0gQ2xpcGJvYXJkIGZvcm1hdCBuYW1lIHNob3VsZCBiZSB0cmVhdGVkIGFzIGNhc2UgaW5zZW5zaXRpdmUuCgktIFNlcmlhbGl6ZSBtZXRhZmlsZSBiaXRzIHdoZW4gcmVxdWVzdGVkIHZpYSBhIGNsaXBib2FyZCBzZWxlY3Rpb24uCgktIFJldHVybiBmb3JtYXQgaWRzIGZvciBuYXRpdmUgZm9ybWF0cyB3aGVuIG1hcHBpbmcgZnJvbSBwcm9wZXJ0aWVzLgoKCSogZGxscy9hZHZhcGkzMi9hZHZhcGkuYywgZGxscy9udGRsbC9zZWMuYywgZmlsZXMvcHJvZmlsZS5jLAoJICBpbmNsdWRlL3dpbmUvbGlicmFyeS5oLCBsaWJyYXJ5L2NvbmZpZy5jLCBzY2hlZHVsZXIvY2xpZW50LmMsCgkgIHNlcnZlci9yZWdpc3RyeS5jOgoJQWRkZWQgd2luZV9nZXRfdXNlcl9uYW1lIGZ1bmN0aW9uIGFuZCBnb3QgcmlkIG9mIHNvbWUgb2YgdGhlIGdldHB3dWlkCglwb3J0YWJpbGl0eSBzdHVmZi4KCU1vcmUgcG9ydGFibGUgcHJpbnRmIGZvcm1hdHMgZm9yIDY0LWJpdCB0eXBlcy4KCgkqIGRsbHMvbnRkbGwvdGltZS5jLCB3aW4zMi9uZXdmbnMuYzogUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglNU1ZDIGxvbmcgbG9uZyBmaXhlcy4KCgkqIGRsbHMvY29tY3RsMzIvY29tYm9leC5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJSW1wbGVtZW50IENCRVNfRVhfUEFUSFdPUkRCUkVBS1BST0MgZm9yIHRoZSBDb21ib0V4IGNvbnRyb2wuCgoJKiBkbGxzL3gxMWRydi9rZXlib2FyZC5jOiBIbGViIFZhbG9za2EgPGVsX2dsb2J1c0B0dXQuYnk+CglBZGRlZCBCZWxhcnVzaWFuIGtleWJvYXJkLgoKCSogY29udHJvbHMvZWRpdC5jOiBab2x0YW4gTmFneSA8bmFneXpvbGlAbmV0ZWxlay5odT4KCU1vdmUgY2FyZXQgd2hlbiBzZWxlY3RpbmcgYSB0ZXh0IGFyZWEgd2l0aCB0aGUgbW91c2UuCgoJKiBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjOiBSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglGb3J3YXJkIHNobHdhcGkuMzkzIHRvIENyZWF0ZURpYWxvZ0luZGlyZWN0UGFyYW1XLgoKCSogbG9hZGVyL25lL21vZHVsZS5jLCBsb2FkZXIvbmUvcmVzb3VyY2UuYywgbG9hZGVyL25lL3NlZ21lbnQuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlbUBjb2Rld2VhdmVycy5jb20+CglEb24ndCBjYWNoZSBmaWxlIGhhbmRsZXMgZm9yIE5FIGV4ZWN1dGFibGUgbW9kdWxlcyBzbyB0aGF0IHdlIGRvbid0Cglsb2NrIHRoZSBDRFJPTS4KCgkqIGRsbHMva2VybmVsL3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMva2VybmVsL3Rlc3RzL01ha2VmaWxlLmluLAoJICBkbGxzL2tlcm5lbC90ZXN0cy9kaXJlY3RvcnkuYywgZGxscy9rZXJuZWwvdGVzdHMvZHJpdmUuYywKCSAgZGxscy9rZXJuZWwvdGVzdHMvZmlsZS5jLCBkbGxzL2tlcm5lbC90ZXN0cy9wYXRoLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgYSBidW5jaCBvZiBuZXcgcmVncmVzc2lvbiB0ZXN0cy4KCgkqIGNvbmZpZ3VyZS5hYywgZGxscy9zaGVsbDMyL01ha2VmaWxlLmluLCBkbGxzL3NoZWxsMzIvc2hsZmlsZW9wLmMsCgkgIGRsbHMvc2hlbGwzMi90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL3NoZWxsMzIvdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvc2hlbGwzMi90ZXN0cy9zaGxmaWxlb3AuYywgY29uZmlndXJlOgoJQW5kcml5IFBhbGFtYXJjaHVrIDxhcGEzYUB5YWhvby5jb20+CglTSEZpbGVPcGVyYXRpb246IEltcGxlbWVudGVkIHRoZSBGT19SRU5BTUUgYWN0aW9uLCBmaXhlZCBGT19ERUxFVEUsCglpbXBsZW1lbnRlZCB1bml0IHRlc3RzIGZvciB0aGVzZSB0d28gYWN0aW9ucy4KCgkqIHdpbjMyL2RldmljZS5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQ29udmVydCBtb3N0IG9mIHRoZSBmaWxlIEFQSXMgdG8gVW5pY29kZS4KCgkqIGZpbGVzL2ZpbGUuYzoKCUZpeGVkIHBlcm1pc3Npb24gY2hlY2sgd2hlbiByZW5hbWluZyBhIGRpcmVjdG9yeSAoYmFzZWQgb24gYSBwYXRjaCBieQoJQW5kcml5IFBhbGFtYXJjaHVrKS4KCgkqIHdpbmRvd3Mvd2lucG9zLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglEdW1wIFNldFdpbmRvd1BvcyBmbGFncy4KCgkqIGZpbGVzL2RpcmVjdG9yeS5jLCBmaWxlcy9kb3NfZnMuYywgZmlsZXMvZHJpdmUuYywgZmlsZXMvZmlsZS5jLAoJICBmaWxlcy9wcm9maWxlLmMsIGZpbGVzL3NtYi5jLCBmaWxlcy9zbWIuaCwgaW5jbHVkZS9kcml2ZS5oLAoJICBpbmNsdWRlL2ZpbGUuaCwgbG9hZGVyL3Rhc2suYywgbWVtb3J5L3JlZ2lzdHJ5LmMsIG1pc2MvcmVnaXN0cnkuYywKCSAgbXNkb3MvZG9zY29uZi5jLCBtc2Rvcy9pbnQxMS5jLCBtc2Rvcy9pbnQyMS5jLCBtc2Rvcy9pb3BvcnRzLmMsCgkgIHNjaGVkdWxlci9wcm9jZXNzLmMsIGRsbHMva2VybmVsL3dvd3RodW5rLmMsIGRsbHMvbnRkbGwvZmlsZS5jLAoJICBkbGxzL3dpbmVkb3MvaW50MjEuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglDb252ZXJ0IG1vc3Qgb2YgdGhlIGZpbGUgQVBJcyB0byBVbmljb2RlLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGxfUGwucmMsIGRsbHMvY29tY3RsMzIvcnNyYy5yYzoKCUphY2VrIEJhdG9yIDxqYmF0b3JAbWFuLnBvem5hbi5wbD4KCUFkZGVkIFBvbGlzaCB0cmFuc2xhdGlvbnMuCgoJKiBsb2FkZXIvbW9kdWxlLmMsIHNlcnZlci9tYXBwaW5nLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAYmFpa2FsLnJ1PgoJUmVsYXggYSBiaXQgUEUgY29uc2lzdGVuY3kgY2hlY2tzLgoJUmV0dXJuIEJJTkFSWV9ET1MgdHlwZSBpZiBleHRlbmRlZCBoZWFkZXIgd2FzIG5vdCByZWNvZ25pemVkLgoKCSogZGxscy94MTFkcnYvd2lucG9zLmM6IEJpbGwgTWVkbGFuZCA8YmlsbG1lZGxhbmRAbG9vay5jYT4KCVNldFdpbmRvd1BvcyBzZW5kcyBXTV9XSU5ET1dQT1NDSEFOR0VEIGV2ZW4gaWYgaXQgaGFzIGJlZW4gdG9sZCBub3QgdG8KCXNlbmQgV01fV0lORE9XUE9TQ0hBTkdJTkcuCgoJKiBpbmNsdWRlL2Jhc2V0c2QuaDogU3RldmVuIEVkd2FyZHMgPHN0ZXZlbl9lZDQxNTNAeWFob28uY29tPgoJRml4IGZvciBsb3RzIG9mIHdhcm5pbmdzIHdoZW4gYnVpbGRpbmcgb24gTWluZ3czMi4KCgkqIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBiYWlrYWwucnU+CglDb3JyZWN0IHRoZSBudW1iZXIgb2YgcGFyYW1ldGVycyBmb3IgU3RyUlN0cklBL1cuCgoJKiBkbGxzL250ZGxsL01ha2VmaWxlLmluLCBkbGxzL250ZGxsL3NpZ25hbF9wb3dlcnBjLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1laXNzbmVyQHN1c2UuZGU+CglJbXBsZW1lbnRlZCBzaWduYWwgaGFuZGxpbmcgZm9yIFBQQy4KCgkqIHRvb2xzL3dpbmFwaS9jb25maWcucG0sIHRvb2xzL3dpbmFwaS9tc3ZjbWFrZXI6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUFkZGVkIE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvIHdvcmtzcGFjZSBhbmQgcHJvamVjdCBmaWxlIG1ha2VyLgoKMjAwMi0wOC0yNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG1zZG9zL2ludDFhLmMsIG1zZG9zL2ludDIxLmMsIHNjaGVkdWxlci9zeW5jaHJvLmMsIHdpbjMyL3RpbWUuYywKCSAgY29uZmlndXJlLmFjLCBkbGxzL2tlcm5lbC9jb21tLmMsIGRsbHMva2VybmVsL3RpbWUuYywKCSAgZGxscy9tc3ZjcnQvdGltZS5jLCBkbGxzL250ZGxsL2Nkcm9tLmMsIGRsbHMvbnRkbGwvZGVidWd0b29scy5jLAoJICBkbGxzL250ZGxsL2Vycm9yLmMsIGRsbHMvbnRkbGwvb20uYywgZGxscy9udGRsbC9zZWMuYywgZmlsZXMvZmlsZS5jLAoJICBmaWxlcy9zbWIuYywgaWYxNjMyL3Nub29wLmMsIGluY2x1ZGUvY29uZmlnLmguaW4sIG1pc2MvbWFpbi5jLAoJICBtaXNjL3ZlcnNpb24uYywgY29uZmlndXJlOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglNU1ZDIGNvbXBhdGliaWxpdHkgZml4ZXMuCgoJKiBwcm9ncmFtcy9wcm9nbWFuL2RpYWxvZy5jOiBTdGV2ZW4gRWR3YXJkcyA8c3RldmVuX2VkNDE1M0B5YWhvby5jb20+CglQYXJ0aWFsIGZpeCBmb3IgYnJvd3NlIGRpYWxvZyBpbiBQcm9ncmFtIE1hbmFnZXIuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzogT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglUd2Vha3MgdG8gaW1wcm92ZSBwbGF5YmFjayBwZXJmb3JtYW5jZSBhbmQgcmVkdWNlIHNvdW5kIGdsaXRjaGVzOgoJLSB3b2RHZXRQb3NpdGlvbiBkb2VzIG5vdCBzZW5kIGFuIHVwZGF0ZSBtZXNzYWdlIHRvIHRoZSBwbGF5ZXIgdGhyZWFkOwoJdGhpcyByZWR1Y2VzIHRoZSBhY2N1cmFjeSBvZiB0aGUgcmVhZG91dCBmcm9tIGJ5dGUtYWNjdXJhY3kgdG8gbmVhcgoJZnJhZ21lbnQtYWNjdXJhY3ksIGJ1dCB3ZSBzYXZlIDItNCBjb250ZXh0IHN3aXRjaGVzIGFuZCBrZXJuZWwKCXNjaGVkdWxpbmcgcGVuYWx0aWVzLgoJLSBpZiBGZWVkRFNQIHJ1bnMgb3V0IG9mIGRhdGEsIGRvIG5vdCBmbHVzaCBvdXRwdXQgYnVmZmVycyBiZWZvcmUKCW5vdGlmaWNhdGlvbnMgYXJlIHNlbnQgYW5kIGdpdmVuIHRoZSBjaGFuY2UgdG8gcHJvdmlkZSBtb3JlIHNvdW5kIGRhdGEuCglEbyBub3QgZmx1c2ggYmVmb3JlIHdlJ3JlIGRvd24gdG8gdGhlIGxhc3QgZnJhZ21lbnQuCgktIG1lc3NhZ2VzIHRvIHRoZSBwbGF5ZXIgdGhyZWFkIGFyZSBzaWduYWxlZCB1c2luZyBVbml4IHBpcGVzIGluc3RlYWQKCW9mIFdpbjMyIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzLCB0byBhdm9pZCBoYXZpbmcgdGhlIHBsYXllciB0aHJlYWQKCXdhaXQgZm9yIHRoZSB3aW5lc2VydmVyIChhbmQgY29udGV4dCBzd2l0Y2hlcyBmcm9tL3RvIGl0KSBiZWZvcmUgdGhlCglpdCBjYW4gZmVlZCBtb3JlIGRhdGEgdG8gdGhlIHNvdW5kIGNhcmQuCgktIHJpbmcgYnVmZmVyIHNpemUgaXMgaW5jcmVhc2VkIGZyb20gMzAgdG8gMTkyIHRvIHN1cHBvcnQgc29tZSBnYW1lcwoJdGhhdCBmaXJlcyAxMjggbWVzc2FnZXMgYXQgb25jZSB0byBkZXRlcm1pbmUgRE1BIGJ1ZmZlciBzaXplLgoKCSogZGVidWdnZXIvaW5mby5jOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJQWRkZWQgJ3dhdGNoJyBjb21tYW5kIHRvIHRoZSB3aW5lZGJnIGhlbHAgY29tbWFuZC4KCgkqIHRvb2xzL3dpbmVkdW1wL21haW4uYywgdG9vbHMvd2luZWR1bXAvbWlzYy5jLCB0b29scy93aW5lZHVtcC9wZS5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGJhaWthbC5ydT4KCU1ha2Ugd2luZWR1bXAgY29tcGlsYWJsZSBieSBNU1ZDLgoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYzogQW5kcml5IFBhbGFtYXJjaHVrIDxhcGEzYUB5YWhvby5jb20+CglJbXBsZW1lbnRlZCBwcm9jZXNzaW5nIG9mIFBTTV9TRVRDVVJTRUxJRCBtZXNzYWdlLgoKCSogZGxscy9jb21jdGwzMi9jb21ib2V4LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CgktIGltcGxlbWVudCBDQkVTX0VYX0NBU0VTRU5TSVRJVkUKCS0gZml4IHNldmVyZSBidWcgaW4gQ0JfRklOREVYQUNUU1RSSU5HCgktIHNtYWxsIGNsZWFudXBzCgoJKiBkbGxzL21zdmlkZW8vTWFrZWZpbGUuaW4sIGRsbHMvbXN2aWRlby9kcmF3ZGliLmMsCgkgIGRsbHMvbXN2aWRlby9tc3ZpZGVvMTYuYywgZGxscy9tc3ZpZGVvL21zdmlkZW9fbWFpbi5jOgoJTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5kZT4KCU1vdmVkIG1vc3Qgb2YgdGhlIDE2LWJpdCBmdW5jdGlvbnMgaW4gZGxscy9tc3ZpZGVvIHRvIG1zdmlkZW8xNi5jLgoKCSogZGxscy9hZHZhcGkzMi9hZHZhcGkzMi5zcGVjLCBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmMsCgkgIGluY2x1ZGUvd2lubnQuaDoKCUFuZHJpeSBQYWxhbWFyY2h1ayA8YXBhM2FAeWFob28uY29tPgoJU2V0VG9rZW5JbmZvcm1hdGlvbiBzdHViIGltcGxlbWVudGF0aW9uLCBhIGZldyBvdGhlciBzbWFsbCBjaGFuZ2VzLgoKCSogZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYywgZGxscy9zaGx3YXBpL3VybC5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUltcGxlbWVudCBVcmxIYXNoVy4KCjIwMDItMDgtMjAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3gxMWRydi5oLCBkbGxzL3gxMWRydi93aW5kb3cuYywgZGxscy94MTFkcnYvd2lucG9zLmM6CglEb24ndCBtYXAvdW5tYXAgYSB0b3AtbGV2ZWwgd2luZG93IHdoZW4gV1NfVklTSUJMRSBjaGFuZ2VzLCBvbmx5IHdoZW4KCXdlIGV4cGxpY2l0bHkgZG8gYSBTZXRXaW5kb3dQb3MoU1dQX1NIT1dXSU5ET1cvSElERVdJTkRPVykuCglVcGRhdGUgdGhlIFdNIGhpbnRzIHdoZW4gbWFwcGluZyBhIHdpbmRvdyBpbiBjYXNlIHRoZSBzdHlsZSBoYXMKCWNoYW5nZWQgaW4gdGhlIG1lYW50aW1lLgoKCSogb2JqZWN0cy9mb250LmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlbUBjb2Rld2VhdmVycy5jb20+CglIYW5kbGUgTlVMTCBidWZmZXIgaW4gR2V0T2JqZWN0LgoKCSogZGxscy9rZXJuZWwvZm9ybWF0X21zZy5jLCBkbGxzL2tlcm5lbC90ZXN0cy8uY3ZzaWdub3JlLAoJICBkbGxzL2tlcm5lbC90ZXN0cy9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwvdGVzdHMvZm9ybWF0X21zZy5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VtQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIHJlZ3Jlc3Npb24gdGVzdCBmb3IgRm9ybWF0TWVzc2FnZS4KCUZpeGVkIGNyL2xmIGhhbmRsaW5nLgoJUHJldmVudCBhbiBpbmZpbml0ZSBsb29wIHdoZW4gYW4gaW52YWxpZCBmb3JtYXQgKCVTKSBpcyBwYXNzZWQgYXMgYQoJZm9ybWF0IHN0cmluZyB0byB2c25wcmludGYuCglGaXhlZCBhIG1lbW9yeSBsZWFrIGluIHRoZSBXIHZlcnNpb24uCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYzogTWFyY3VzIE1laXNzbmVyIDxtZWlzc25lckBzdXNlLmRlPgoJRG8gbm90IGVtaXQgLnN0cmluZyBpbnRvIHRoZSBpbnN0cnVjdGlvbiBzdHJlYW0sIGJ1dCBpbnRvIHRoZSAuZGF0YQoJc2VjdGlvbiAodG8gYXZvaWQgYWxpZ25tZW50IGFzc2VydGlvbnMpLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsbGluay5jOiBEdXNhbiBMYWNrbyA8ZGxhY2tvQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBleHRyYWN0aW9uIG9mIGljb25zIGZyb20gSUNPIGZpbGVzLgoKCSogY29udHJvbHMvZWRpdC5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJRG9uJ3Qgc2V0IEVOX0NIQU5HRSBhdCBjcmVhdGlvbiB0aW1lLgoKCSogbWVtb3J5L2Vudmlyb24uYywgZGxscy9rZXJuZWwvdGVzdHMvLmN2c2lnbm9yZSwKCSAgZGxscy9rZXJuZWwvdGVzdHMvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL3Rlc3RzL2Vudmlyb24uYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGRlZCB1bml0IHRlc3QgZm9yIGVudmlyb25tZW50IGZ1bmN0aW9ucyBhbmQgZml4ZWQgc29tZSBidWdzLgoKCSogZGxscy9rZXJuZWwvbG9jYWxlLmMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgd2luZG93cy9tZXNzYWdlLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgaXNzdWVzIGZvdW5kIGJ5IHdpbmFwaV9jaGVjay4KCgkqIHRvb2xzL3dpbmFwaS93aW4zMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfY2hlY2s6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUFQSSBmaWxlcyB1cGRhdGUuCgoJKiBsaWJyYXJ5L3BvcnQuYzogTWFyY3VzIE1laXNzbmVyIDxtZWlzc25lckBzdXNlLmRlPgoJQ2xlYW5lZCB1cCBpbnRlcmxvY2tpbmcgZnVuY3MgZm9yIFBQQywgZml4ZWQgcmV0dXJuIHZhbHVlIG9mCglpbnRlcmxvY2tlZF9hZGQuCgoJKiB0b29scy93aW5lYnVpbGQvaW1wb3J0LmM6IE1hcmN1cyBNZWlzc25lciA8bWVpc3NuZXJAc3VzZS5kZT4KCUltcGxlbWVudGVkIGRlbGF5ZWQgaW1wb3J0IGFzc2VtYmxlciB0aHVua3MgZm9yIFBQQy4KCgkqIGluY2x1ZGUvd2lubnQuaCwgc2NoZWR1bGVyL3N5c2RlcHMuYzoKCU1hcmN1cyBNZWlzc25lciA8bWVpc3NuZXJAc3VzZS5kZT4KCVVzZSByMiBpbnN0ZWFkIG9mIHIxMyBmb3IgVExTLCBzaW5jZSByMTMgaXMgdXNlZCBpbiB0aGUgRUxGMzIgUFBDCglBQkkuCgoyMDAyLTA4LTE5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGVidWdnZXIvZ2RicHJveHkuYzogUm9iZXJ0IEx1bm5vbiA8Ym9iQHlhcnJhYmVlLm5ldC5hdT4KCVJlbW92ZWQgdXNlIG9mIHNhZGRyIGFzIGEgdmFyaWFibGUgbmFtZSB3aGljaCBjb25mbGljdHMgd2l0aCB1c2FnZSBpbgoJbmV0aW5ldC9pbi5oLgoKCSogZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYywgZGxscy9zaGx3YXBpL3N0cmluZy5jLCBpbmNsdWRlL3NobHdhcGkuaDoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglGaXggZXhpc3Rpbmcgc3RyaW5nIGZ1bmN0aW9ucywgaW1wbGVtZW50IGEgYnVuY2ggb2YgbmV3IG9uZXMuCgoJKiBkbGxzL3NobHdhcGkvdGhyZWFkLmM6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglDcmVhdGUgc2VjdXJpdHkgYXR0cmlidXRlcyB3aGVuIHJ1bm5pbmcgYXMgTlQgb3IgbGF0ZXIuCgoJKiBkbGxzL3NobHdhcGkvc2hsd2FwaV9tYWluLmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJRnJlZSBjb21jdGwzMiBvbiB1bmxvYWQuCgoyMDAyLTA4LTE3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZWRlZmF1bHQucmVnOiBNaWtlIE1jQ29ybWFjayA8bWlrZW1AY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgc29tZSBrZXlzIGZvciBvbGUzMiBpbnRlcmZhY2VzLgoKCSogZGxscy9nZGkvZnJlZXR5cGUuYzogRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCURldGVjdCB0aGUgRnJlZVR5cGUgdmVyc2lvbiBhbmQgYWRhcHQgdGhlIHNmbnQgb2Zmc2V0IGFjY29yZGluZ2x5LgoKCSogZGxscy9nZGkvZW5obWZkcnYvZGMuYywgZGxscy9nZGkvZW5obWZkcnYvZW5obWV0YWZpbGVkcnYuaCwKCSAgZGxscy9nZGkvZW5obWZkcnYvbWFwcGluZy5jLCBkbGxzL2dkaS9tZmRydi9tYXBwaW5nLmMsCgkgIGRsbHMvZ2RpL21mZHJ2L21ldGFmaWxlZHJ2LmgsIGdyYXBoaWNzL21hcHBpbmcuYywgaW5jbHVkZS9nZGkuaDoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCU1hcHBpbmcgbW9kZSBmdW5jdGlvbnMgc2hvdWxkIGNoYW5nZSBkYyBzZXR0aW5ncyB3aGVuIGRjIGlzIGFuIGVuaG1mLgoKCSogaW5jbHVkZS9jb21tZGxnLmg6IE1pa2UgTWNDb3JtYWNrIDxtaWtlbUBjb2Rld2VhdmVycy5jb20+CglSZW1vdmVkIFdpbmUgaW50ZXJuYWwgZmxhZ3MuCgoJKiBvYmplY3RzL2VuaG1ldGFmaWxlLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlbUBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBzYW5pdHkgY2hlY2tzIG9uIEVNUkNSRUFURURJQlBBVFRFUk5CUlVTSFBUIHZhbHVlcy4KCUZpeCBhIG1lbW9yeSBsZWFrLgoKCSogcHJvZ3JhbXMvd2luaGVscC9obHAyc2dtbC5jOgoJQWRkZWQgR2V0UHJvY2Vzc0hlYXAgZGVmaW5pdGlvbiBpbiBjYXNlIGl0J3Mgbm90IGlubGluZWQuCgoJKiB0b29scy9mbnQyYmRmLmMsIHRvb2xzL21ha2VkZXAuYywgdG9vbHMvd2lkbC9oZWFkZXIuYywKCSAgdG9vbHMvd2lkbC9wYXJzZXIubCwgdG9vbHMvd2lkbC9wcm94eS5jLCB0b29scy93aWRsL3dpZGwuYywKCSAgdG9vbHMvd2luZWJ1aWxkL2ltcG9ydC5jLCB0b29scy93aW5lYnVpbGQvcmVzMTYuYywKCSAgdG9vbHMvd2luZWJ1aWxkL3JlczMyLmMsIHRvb2xzL3dpbmVkdW1wL2RlYnVnLmMsCgkgIHRvb2xzL3dpbmVkdW1wL3BlLmMsIHRvb2xzL3dwcC9wcmVwcm9jLmMsIHRvb2xzL3dyYy93cmMuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBiYWlrYWwucnU+CglJbmNsdWRlIHByb3RlY3Rpb24gZm9yIDx1bmlzdGQuaD4sIDxzeXMvdHlwZXMuaD4gYW5kIDxzeXMvc3RhdC5oPi4KCgkqIHByb2dyYW1zL25vdGVwYWQvRW4ucmM6IFNoYWNoYXIgU2hlbWVzaCA8c3VuQGNvbnN1bWVyLm9yZy5pbD4KCUNoYW5nZSBzdWJsYW5ndWFnZSBmcm9tICJORVVUUkFMIiB0byAiREVGQVVMVCIsIHNvIExvYWRSZXNvdXJjZSB3aWxsCgliZSBhYmxlIHRvIGZpbmQgaXQgaWYgbm8gb3RoZXIgbGFuZ3VhZ2UgaXMgYSBiZXR0ZXIgbWF0Y2guCgoJKiBkbGxzL2dkaS9mcmVldHlwZS5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRG8gbm90IGxlYXZlIHVuaW5pdGlhbGl6ZWQgcG9pbnRlci4KCgkqIG9iamVjdHMvZW5obWV0YWZpbGUuYzogSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJQWxsb3cgYW4gYXBwIHRvIG9wZW4gdGhlIGZpbGUgb2YgYSBkaXNrIGJhc2VkIGVtZiBmb3IgcmVhZGluZyB3aGlsZQoJdGhlIGhlbWYgaXMgc3RpbGwgb3Blbi4KCUltcGxlbWVudCBTZXRXaW5NZXRhRmlsZUJpdHMgaW4gYSBtb3JlIHNhbmUgZmFzaGlvbi4KCgkqIGRsbHMvZ2RpL2VuaG1mZHJ2L2VuaG1ldGFmaWxlZHJ2LmgsIGRsbHMvZ2RpL2VuaG1mZHJ2L2dyYXBoaWNzLmMsCgkgIGRsbHMvZ2RpL2VuaG1mZHJ2L2luaXQuYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCBzaW1wbGUgRXh0VGV4dE91dCBmb3IgZW5obWZkcnYuCgoJKiBkbGxzL2FkdmFwaTMyL2FkdmFwaS5jLCBkbGxzL2FkdmFwaTMyL3JlZ2lzdHJ5LmMsIGxpYnJhcnkvZGVidWcuYywKCSAgbGlicmFyeS9sb2FkZXIuYywgbGlicmFyeS9wb3J0LmMsIG1lbW9yeS9pbnN0ci5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglNU1ZDIGNvbXBhdGliaWxpdHkgZml4ZXMuCgoJKiBkbGxzL21zdmNydC9NYWtlZmlsZS5pbiwgZGxscy9tc3ZjcnQvY29uc29sZS5jLCBkbGxzL21zdmNydC9maWxlLmMsCgkgIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjLCBkbGxzL21zdmNydC9zY2FuZi5jLCBkbGxzL21zdmNydC9zY2FuZi5oLAoJICBpbmNsdWRlL21zdmNydC9zdGRpby5oOgoJRGFuaWVsIEd1ZGJqYXJ0c3NvbiA8ZGZnQGRlY29kZS5pcz4KCUNvbWJpbmVkIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBhbGwgdGhlIHNjYW5mJ3MgaW4gYSBzaW5nbGUgcGxhY2UuCglBZGRlZCBpbXBsZW1lbnRhdGlvbnMgb2YgZndzY2FuZiwgc3dzY2FuZiwgd3NjYW5mIGFuZCBzc2NhbmYuCglDb3JyZWN0ZWQgdGhlIGRlY2xhcmF0aW9uIG9mIHN3c2NhbmYuCglBZGRlZCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgbCwgaCwgTCBhbmQgdyBwcmVmaXhlcy4KCUFkZGVkIGltcGxlbWVudGF0aW9uIG9mIHRoZSBjLCBDLCBzLCBTIGFuZCBuIHR5cGVzLgoKCSogZGxscy9udGRsbC9leGNlcHRpb24uYywgc2VydmVyL01ha2VmaWxlLmluLCBzZXJ2ZXIvY29udGV4dF9wb3dlcnBjLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1laXNzbmVyQHN1c2UuZGU+CglJbXBsZW1lbnRlZCBzZXJ2ZXIgY29udGV4dC9wdHJhY2UgaGFuZGxpbmcgZm9yIExpbnV4L1Bvd2VyUEMuCgoJKiBtc2Rvcy9pbnQyNS5jLCBtc2Rvcy9pbnQyNi5jLCBtc2Rvcy9pb3BvcnRzLmMsIG1zZG9zL3Z4ZC5jLAoJICBzY2hlZHVsZXIvY2xpZW50LmMsIHNjaGVkdWxlci9oYW5kbGUuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywKCSAgc2NoZWR1bGVyL3B0aHJlYWQuYywgc2NoZWR1bGVyL3N5bmNocm8uYywgc2NoZWR1bGVyL3N5c2RlcHMuYywKCSAgc2NoZWR1bGVyL3N5c2xldmVsLmMsIHNjaGVkdWxlci90aHJlYWQuYywgd2luMzIvZGV2aWNlLmMsCgkgIHdpbjMyL2luaXQuYywgd2luMzIva2VybmVsMzIuYywgd2luMzIvbmV3Zm5zLmMsIHdpbjMyL3RpbWUuYywKCSAgd2luZG93cy9jbGlwYm9hcmQuYywgd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3Mvd2luaGVscC5jLAoJICBkbGxzL3gxMWRydi9jbGlwYm9hcmQuYywgZGxscy94MTFkcnYveDExZHJ2X21haW4uYywgZmlsZXMvY2hhbmdlLmMsCgkgIGZpbGVzL2RpcmVjdG9yeS5jLCBmaWxlcy9kb3NfZnMuYywgZmlsZXMvZHJpdmUuYywgZmlsZXMvZmlsZS5jLAoJICBmaWxlcy9wcm9maWxlLmMsIGZpbGVzL3NtYi5jLCBncmFwaGljcy94MTFkcnYveGZvbnQuYywKCSAgbG9hZGVyL21haW4uYywgbG9hZGVyL21vZHVsZS5jLCBsb2FkZXIvbmUvbW9kdWxlLmMsCgkgIGxvYWRlci9uZS9yZXNvdXJjZS5jLCBsb2FkZXIvbmUvc2VnbWVudC5jLCBsb2FkZXIvcmVzb3VyY2UuYywKCSAgbG9hZGVyL3Rhc2suYywgbWVtb3J5L2dsb2JhbC5jLCBtZW1vcnkvcmVnaXN0cnkuYywgbWVtb3J5L3ZpcnR1YWwuYywKCSAgbWlzYy9tYWluLmMsIG1pc2MvcmVnaXN0cnkuYywgbXNkb3MvZG9zY29uZi5jLCBtc2Rvcy9kcG1pLmMsCgkgIG1zZG9zL2ludDEzLmMsIG1zZG9zL2ludDFhLmMsIG1zZG9zL2ludDIxLmMsIGRsbHMvd2luZWRvcy9kb3N2bS5jLAoJICBkbGxzL3dpbmVkb3MvaW50MTYuYywgZGxscy93aW5lZG9zL21vZHVsZS5jLCBkbGxzL3dpbmVkb3MveG1zLmMsCgkgIGRsbHMvd2luZXBzL2luaXQuYywgZGxscy93aW5pbmV0L2Z0cC5jLCBkbGxzL3dpbmluZXQvaHR0cC5jLAoJICBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYywgZGxscy93aW5tbS9qb3lzdGljay5jLAoJICBkbGxzL3dpbm1tL2pveXN0aWNrL2pveXN0aWNrLmMsIGRsbHMvd2lubW0vdGltZS5jLAoJICBkbGxzL3dpbm1tL3dpbmVhbHNhL2F1ZGlvLmMsIGRsbHMvd2lubW0vd2luZWFsc2EvYXVkaW9fMDUuYywKCSAgZGxscy93aW5tbS93aW5lYXJ0cy9hdWRpby5jLCBkbGxzL3dpbm1tL3dpbmVhdWRpb2lvL2F1ZGlvLmMsCgkgIGRsbHMvd2lubW0vd2luZW5hcy9hdWRpby5jLCBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYywKCSAgZGxscy93aW5tbS93aW5lb3NzL21pZGkuYywgZGxscy93aW5tbS93aW5lb3NzL21peGVyLmMsCgkgIGRsbHMvd2lubW0vd2luZW9zcy9tbWF1eC5jLCBkbGxzL3dpbnNvY2svYXN5bmMuYywKCSAgZGxscy93aW5zb2NrL3NvY2tldC5jLCBkbGxzL3dzb2NrMzIvc29ja2V0LmMsIGRsbHMvbXN2Y3J0L2ZpbGUuYywKCSAgZGxscy9uZXRhcGkzMi9uZXRhcGkzMi5jLCBkbGxzL250ZGxsL2Nkcm9tLmMsCgkgIGRsbHMvbnRkbGwvZGVidWd0b29scy5jLCBkbGxzL250ZGxsL2ZpbGUuYywgZGxscy9udGRsbC9vbS5jLAoJICBkbGxzL250ZGxsL3NlYy5jLCBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmMsCgkgIGRsbHMvbnRkbGwvc2lnbmFsX3NwYXJjLmMsIGRsbHMvbnRkbGwvdGltZS5jLCBkbGxzL29sZTMyL3N0b3JhZ2UuYywKCSAgZGxscy9vbGVhdXQzMi9vbGVwaWN0dXJlLmMsIGRsbHMvcnBjcnQ0L3JwY3J0NF9tYWluLmMsCgkgIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYywgZGxscy9zaGVsbDMyL3NoZWxsLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYywgZGxscy9zaGVsbDMyL3NobGV4ZWMuYywKCSAgZGxscy9zaGVsbDMyL3N5c3RyYXkuYywgZGxscy90d2Fpbi9kc19jdHJsLmMsIGRsbHMvdXNlci9leHRpY29uLmMsCgkgIGRsbHMvdXNlci9uZXR3b3JrLmMsIGRsbHMvdmVyc2lvbi9yZXNvdXJjZS5jLCBkbGxzL3dpbjMycy93MzJzeXMuYywKCSAgZGxscy93aW5hc3BpL2FzcGkuYywgZGxscy93aW5hc3BpL3dpbmFzcGkxNi5jLAoJICBkbGxzL3dpbmFzcGkvd2luYXNwaTMyLmMsIGNvbnRyb2xzL2Rlc2t0b3AuYywgY29udHJvbHMvaWNvbnRpdGxlLmMsCgkgIGRsbHMvZGRyYXcvZGlyZWN0M2QvbWFpbi5jLCBkbGxzL2RkcmF3L2RpcmVjdDNkL21lc2EuYywKCSAgZGxscy9kaW5wdXQvam95c3RpY2svbGludXguYywgZGxscy9kaW5wdXQvam95c3RpY2svbGludXhpbnB1dC5jLAoJICBkbGxzL2Rzb3VuZC9idWZmZXIuYywgZGxscy9kc291bmQvY2FwdHVyZS5jLAoJICBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jLCBkbGxzL2Rzb3VuZC9taXhlci5jLAoJICBkbGxzL2Rzb3VuZC9wcmltYXJ5LmMsIGRsbHMvZHNvdW5kL3Byb3BzZXQuYywgZGxscy9kc291bmQvc291bmQzZC5jLAoJICBkbGxzL2dkaS9wcmludGRydi5jLCBkbGxzL2dkaS93aW4xNmRydi9wcnRkcnYuYywKCSAgZGxscy9pY21wL2ljbXBfbWFpbi5jLCBkbGxzL2tlcm5lbC9jb21tLmMsIGRsbHMva2VybmVsL2NvbnNvbGUuYywKCSAgZGxscy9rZXJuZWwvc3luYy5jLCBkbGxzL2tlcm5lbC90aHVuay5jLCBkbGxzL2tlcm5lbC90aW1lLmMsCgkgIGRsbHMva2VybmVsL3Rvb2xoZWxwLmMsIGRsbHMvbHpleHBhbmQvbHpleHBhbmRfbWFpbi5jLAoJICBkbGxzL21wci93bmV0LmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUFkZGVkIGluY2x1ZGUgcHJvdGVjdGlvbiBmb3IgdW5pc3RkLmggYW5kIHN5cy90aW1lLmguCgoJKiBkbGxzL2dkaS9lbmhtZmRydi9vYmplY3RzLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlbUBjb2Rld2VhdmVycy5jb20+CglTZXQgY2JCaXRzIGluIHRoZSBFTVJDUkVBVEVESUJQQVRURVJOQlJVU0hQVCBzdHJ1Y3R1cmUgd2hlbiB3cml0aW5nIGFuCglFTUYgcmVjb3JkLgoKCSogZGxscy9nZGkvbWZkcnYvdGV4dC5jOiBIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglGaXggZm9yIG1ldGFmaWxlIEV4dFRleHRPdXQgdGhhdCBvbmx5IGluY2x1ZGVzIHRoZSByZWN0YW5nbGUgaWYgZWl0aGVyCglFVE9fQ0xJUFBFRCBvciBFVE9fT1BBUVVFIGlzIHNldC4KCgkqIGRsbHMvZ2RpL2VuaG1mZHJ2L2RjLmMsIGRsbHMvZ2RpL2VuaG1mZHJ2L2VuaG1ldGFmaWxlZHJ2LmgsCgkgIGRsbHMvZ2RpL2VuaG1mZHJ2L2luaXQuYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudGVkIGEgZmV3IGRldmljZSBjYXBzLgoKCSogZGxscy9nZGkvZnJlZXR5cGUuYzogSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJRml4IGZvciBzaWduIG9mIGZvbnQgaGVpZ2h0IGluIG5vbiBNTV9URVhUIG1vZGUuCglGaXggR0dPX05BVElWRSBhZ2Fpbi4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBkbGxzL3VybG1vbi91bW9uLmMsIGRsbHMvZ2RpL2dkaTE2LmMsCgkgIGRsbHMva2VybmVsL2tlcm5lbF9tYWluLmMsIGRsbHMvb2xlMzIvY29tcG9iai5jLAoJICBkbGxzL29sZTMyL29sZTMyLnNwZWM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgaXNzdWVzIGZvdW5kIGJ5IHdpbmFwaV9jaGVjay4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYzogQW5kcml5IFBhbGFtYXJjaHVrIDxhcGEzYUB5YWhvby5jb20+CglEbyBub3Qgc2V0IHdpbmRvdyBwb3NpdGlvbiBvbiBBQk1fV0lORE9XUE9TQ0hBTkdFRC4KCjIwMDItMDgtMTYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzZXJ2ZXIvcXVldWUuYywgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdXNlci5oOgoJU2lnbmFsIGFuZCByZWxlYXNlIHRoZSBpZGxlIGV2ZW50IHdoZW4gdGhlIHByb2Nlc3MgbWFpbiB0aHJlYWQgZXhpdHMuCgoJKiBpbmNsdWRlL3dpbnVzZXIuaCwgd2luZG93cy9tZXNzYWdlLmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJVmVyeSBwYXJ0aWFsIGltcGxlbWVudGF0aW9uIG9mIEJyb2FkY2FzdFN5c3RlbU1lc3NhZ2VBLgoKCSogZGxscy94MTFkcnYva2V5Ym9hcmQuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIEdyZWVrIGtleWJvYXJkIGxheW91dC4KCVVwZGF0ZWQgQnJhemlsaWFuIEFCTlQtMiBrZXlib2FyZCBsYXlvdXQuCgoJKiBkbGxzL3NoZWxsMzIvc2h2X2JnX2NtZW51LmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglGaXhlcyB0byBhbGxvdyBJRSB0byBkbyBsb2NhbCBmaWxlIGxvYWRpbmcgYW5kIHNvbWUgbGltaXRlZCBicm93c2luZy4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VtQGNvZGV3ZWF2ZXJzLmNvbT4KCURvbid0IHRyeSByZWFkaW5nIGEgUElETCBpbiBJUGVyc2lzdFN0cmVhbS0+TG9hZCBpZiBpdHMgc2l6ZSBpcyAwLgoJQ2hlY2sgdGhlIG51bWJlciBvZiBieXRlcyByZWFkIHdhcyBjb3JyZWN0LgoJU21hbGwgcmVvcmdhbml6YXRpb24gb2YgZXJyb3IgaGFuZGxpbmcuCgoJKiBkbGxzL2NvbW1kbGcvY2RsZy5oLCBkbGxzL2NvbW1kbGcvY2RsZzMyLmMsCgkgIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYywgZGxscy9jb21tZGxnL2ZpbGVkbGdicm93c2VyLmg6CglNaWtlIE1jQ29ybWFjayA8bWlrZW1AY29kZXdlYXZlcnMuY29tPgoJLSBEbyBub3QgbW9kaWZ5IHBvaW50ZXJzIGluIHRoZSBPUEVORklMRU5BTUUgc3RydWN0dXJlIHBhc3NlZCB0bwoJICBHZXRGaWxlRGlhbG9nOTVBL1cuCgktIFVzZSBVbmljb2RlIGFzIGRlZmF1bHQgZm9yIHN0cmluZ3MgZnJvbSB0aGUgT1BFTkZJTEVOQU1FIHN0cnVjdHVyZXMuCgktIEZpbGwgb3V0IHRoZSBPUEVORklMRU5BTUUgc3RydWN0dXJlIGJlZm9yZSBzZW5kaW5nIHRoZSBGSUxFT0sKCSAgbm90aWZpY2F0aW9uLgoJLSBTZW5kIGEgQ0ROX0ZPTERFUkNIQU5HRSBub3RpZmljYXRpb24gb24gT1BFTkZJTEVOQU1FIGRpYWxvZyBpbml0LgoJLSBGaXggbWlzY2FsY3VsYXRpb24gb2YgdGhlIHNpemUgb2YgRXhwbG9yZXIgc3R5bGUgZmlsZSBkaWFsb2cgYm94ZXMKCSAgd2l0aCB0ZW1wbGF0ZXMuCgktIFJlbW92ZSByZWR1bmRhbnQgTWFwSE1vZHVsZUxTIGFuZCBNYXBITW9kdWxlU0wgY2FsbHMgdGhhdCBhbHNvIGNhdXNlCgkgIGhJbnN0YW5jZSB0byBiZSB0cmFzaGVkIHdoZW4gaXQgaG9sZHMgYSB0ZW1wbGF0ZSBwb2ludGVyIGluc3RlYWQgb2YgYQoJICByZWFsIGhJbnN0YW5jZSAod2hlbiBPRk5fRU5BQkxFVEVNUExBVEVQT0lOVEVSIGlzIHNwZWNpZmllZCkuCgoJKiBjb250cm9scy9lZGl0LmM6CglFcmFzZSBiYWNrZ3JvdW5kIHdoZW4gaW52YWxpZGF0aW5nIHRoZSBzZWxlY3RlZCB0ZXh0LgoKCSogb2JqZWN0cy9tZXRhZmlsZS5jOiBIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglGaXggZm9yIG1ldGFmaWxlIEV4dFRleHRPdXQgdGhhdCBvbmx5IGluY2x1ZGVzIHRoZSByZWN0YW5nbGUgaWYgZWl0aGVyCglFVE9fQ0xJUFBFRCBvciBFVE9fT1BBUVVFIGlzIHNldC4KCVNsaWdodGx5IGxlc3Mgb2YgYSBzdHViIGltcGxlbWVudGF0aW9uIGZvciBHZXRXaW5NZXRhRmlsZUJpdHMuCgoJKiBpZjE2MzIvYnVpbHRpbi5jLCBpbmNsdWRlL2J1aWx0aW4xNi5oLCBpbmNsdWRlL21vZHVsZS5oLAoJICBsb2FkZXIvbG9hZG9yZGVyLmM6CglGb3JjZSBsb2Fkb3JkZXIgb2YgMTYtYml0IGRsbHMgdG8gYnVpbHRpbiBpZiB0aGVpciAzMi1iaXQgY291bnRlcnBhcnQKCWhhcyBhbHJlYWR5IGJlZW4gbG9hZGVkIGFzIGJ1aWx0aW4uCgoJKiBzZXJ2ZXIvbWFpbi5jLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcHJvY2Vzcy5oLCBzZXJ2ZXIvcmVxdWVzdC5jLAoJICBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvc2VsZWN0LmM6CglBZGRlZCAtayBvcHRpb24gdG8ga2lsbCBhbiBleGlzdGluZyB3aW5lc2VydmVyLgoKCSogZGxscy91c2VyL3VzZXIzMi5zcGVjOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgQnJvYWRjYXN0U3lzdGVtTWVzc2FnZUEuCgoJKiBtZW1vcnkvc3RyaW5nLmM6IGxzdHJjcHluW0FXXSBjb3VudCBzaG91bGQgYmUgY29uc2lkZXJlZCB1bnNpZ25lZC4KCgkqIG1pc2MvY3B1LmM6IEZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglDaGFuZ2UgdGhlIGRlZmF1bHQgQ1BVIHR5cGUgc28gdGhhdCBRdWlja1RpbWUgd2lsbCBhbHNvIHJ1biBvbgoJcGxhdGZvcm1zIHdoZXJlIHRoZSBjcHUgZGV0ZWN0aW9uIGNvZGUgZG9lcyBub3Qgd29yay4KCgkqIG9iamVjdHMvZm9udC5jOiBIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglUcmFuc2xhdGUgT3V0bGluZVRleHRNZXRyaWNzIHRvIGxvZ2ljYWwgY28tb3Jkcy4KCgkqIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmMsIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmg6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglEV09SRCBhdCBvZmZzZXQgMHg0MCBpbiB0aGUgaGVhZGVyIGlzIHRoZSBudW1iZXIgb2YgYmlnIGJsb2NrcyBpbiB0aGUKCXNtYWxsIGJsb2NrIGRlcG90IGNoYWluLgoJQmV0dGVyIGZhaWx1cmUgaGFuZGxpbmcuCgoJKiBsb2FkZXIvbmUvbW9kdWxlLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglTZXQgdXAgZXhjZXB0aW9uIGhhbmRsZXIgYXJvdW5kIFdFUCBjYWxsLgoKCSogZGxscy94MTFkcnYvbW91c2UuYzoKCURvbid0IHVwZGF0ZSB0aGUgbW91c2UgYnV0dG9uIHN0YXR1cyBpbiB1cGRhdGVfa2V5X3N0YXRlLCBsZWF2ZSB0aGF0Cgl0byB0aGUgaW5wdXQgcHJvY2Vzc2luZy4KCgkqIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWMsCgkgIGRsbHMvc2hsd2FwaS9zaGx3YXBpX21haW4uYywgZGxscy9jb21jdGwzMi9jb21jdGwzMi5zcGVjLAoJICBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgY29tY3RsMzIuNDE3IGFuZCBzaGx3YXBpLjI5OS4gVGhpcyBhdm9pZHMgY3Jhc2ggaW4gSUUncwoJSGlzdG9yeS4KCgkqIGNvbnRyb2xzL2VkaXQuYywgZGxscy9yaWNoZWRpdC9yaWNoZWRpdC5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCVN1cHBvcnQgbGFyZ2UgZWRpdCBidWZmZXJzIGZvciByaWNoZWRpdCBjb250cm9sLgoKCSogZGxscy9vbGUzMi9maWxlbW9uaWtlci5jLCBkbGxzL29sZTMyL29sZTMyLnNwZWMsIGRsbHMvb2xlMzIvY29tcG9iai5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVkIEdldENsYXNzRmlsZSBpbXBsZW1lbnRhdGlvbi4KCgkqIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGRsbHMva2VybmVsL2tlcm5lbF9tYWluLmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgU3dpdGNoVG9UaHJlYWQuCgoJKiBkbGxzL2NyeXB0MzIvY3J5cHQzMi5zcGVjLCBkbGxzL2NyeXB0MzIvbWFpbi5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIHNvbWUgbW9yZSBzdHVicy4KCgkqIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlbUBjb2Rld2VhdmVycy5jb20+CglJbWFnZUxpc3RfU2V0SW1hZ2VDb3VudCBzaG91bGQgc2V0IG5DdXJJbWFnZSAodGhlIG51bWJlciBvZgoJaW1hZ2VzIGluIHRoZSBsaXN0KSB0byB0aGUgdmFsdWUgc3BlY2lmaWVkLCBhbmQgZXhwZWN0IHRoYXQKCUltYWdlTGlzdF9SZXBsYWNlSW1hZ2UgaXMgY2FsbGVkIHRvIHNldCB0aGUgbmV3IGltYWdlcy4KCgkqIHdpbmRvd3MvaW5wdXQuYywgaW5jbHVkZS93aW5kZWYuaDoKCU1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuZGU+CglDb252ZXJ0IEhLTCB0byBhIHZvaWQqLgoKCSogb2JqZWN0cy9iaXRtYXAuYywgb2JqZWN0cy9icnVzaC5jLCBvYmplY3RzL2NsaXBwaW5nLmMsIG9iamVjdHMvZGMuYywKCSAgb2JqZWN0cy9kY3ZhbHVlcy5jLCBvYmplY3RzL2RpYi5jLCBvYmplY3RzL2ZvbnQuYywgb2JqZWN0cy9nZGlvYmouYywKCSAgb2JqZWN0cy9wYWxldHRlLmMsIG9iamVjdHMvcGVuLmMsIG9iamVjdHMvcmVnaW9uLmMsIG9iamVjdHMvdGV4dC5jLAoJICBkbGxzL2dkaS9NYWtlZmlsZS5pbiwgZGxscy9nZGkvYmlkaTE2LmMsCgkgIGRsbHMvZ2RpL2VuaG1mZHJ2L29iamVjdHMuYywgZGxscy9nZGkvZ2RpLmV4ZS5zcGVjLAoJICBkbGxzL2dkaS9nZGkxNi5jLCBkbGxzL2dkaS9tZmRydi9iaXRibHQuYywgZGxscy9nZGkvbWZkcnYvaW5pdC5jLAoJICBkbGxzL2dkaS9tZmRydi9vYmplY3RzLmMsIGRsbHMvZ2RpL3ByaW50ZHJ2LmMsCgkgIGRsbHMvZ2RpL3dpbjE2ZHJ2L2ZvbnQuYywgZGxscy9nZGkvd2luMTZkcnYvb2JqZWN0cy5jLAoJICBncmFwaGljcy9iaXRibHQuYywgZ3JhcGhpY3MvZXNjYXBlLmMsIGdyYXBoaWNzL21hcHBpbmcuYywKCSAgZ3JhcGhpY3MvcGFpbnRpbmcuYywgZ3JhcGhpY3MvcGF0aC5jLCBpbmNsdWRlL3dpbmUvd2luZ2RpMTYuaDoKCU1vdmVkIGEgbGFyZ2UgbnVtYmVyIG9mIDE2LWJpdCBmdW5jdGlvbnMgdG8gYSBzZXBhcmF0ZSBnZGkxNi5jIGZpbGUuCgoyMDAyLTA4LTE1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29udHJvbHMvZWRpdC5jOgoJQXZvaWQgdHJvdWJsZSBpbiBXTV9HRVRURVhUIGlmIHNwZWNpZmllZCBsZW5ndGggaXMgbGFyZ2VyIHRoYW4gdGhlCglidWZmZXIgKGZvdW5kIGJ5IENhcmwgU29wY2hhaykuCgoJKiB0b29scy93aW5lYnVpbGQvc3BlYzMyLmM6IEZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglGaXggY29tbWFuZC1saW5lIHBhcnNpbmcgZm9yIFdpbmVsaWIgYXBwbGljYXRpb25zLgoKCSogZGxscy93aW5lcHMvaW5pdC5jOiBIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglHZXQgdGhlIGluaXRpYWwgcGFwZXIgc2l6ZSBmcm9tIHRoZSBsb2NhbGUgaW5mby4KCgkqIG9iamVjdHMvZ2Rpb2JqLmM6IEh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCURlbGV0ZU9iamVjdCgpIGNhbiBmYWlsIGlmIHRoZSBvYmplY3QgaXMgYSBEQywgaG93ZXZlciB3ZSd2ZSBhbHJlYWR5CgljYWxsZWQgR0RJX1JlbGVhc2VPYmooKSBzbyBkb24ndCBjYWxsIGl0IGFnYWluLgoKCSogbWVtb3J5L2NvZGVwYWdlLmMsIG1lbW9yeS9zdHJpbmcuYywgb2xlL29sZTJubHMuYywKCSAgc2NoZWR1bGVyL3RocmVhZC5jLCBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwKCSAgZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZGxscy9rZXJuZWwva2VybmVsX21haW4uYywKCSAgZGxscy9rZXJuZWwvbG9jYWxlLmMsIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sIGluY2x1ZGUvdGhyZWFkLmgsCgkgIGluY2x1ZGUvd2lubmxzLmg6CglGaXhlZCBHZXRMb2NhbGVJbmZvVyB0byBoYW5kbGUgVW5pY29kZSBwcm9wZXJseSBhbmQgY29tcGxldGVkCglpbXBsZW1lbnRhdGlvbi4KCVVwZGF0ZSB3aW4uaW5pIGFuZCByZWdpc3RyeSBvbiBzdGFydHVwIHdoZW4gbGFuZ3VhZ2UgY2hhbmdlZC4KCU1vcmUgbG9naWNhbCBwcmlvcml0eSBvcmRlciBmb3IgbG9jYWxlIGVudmlyb25tZW50IHZhcmlhYmxlcy4KCUltcGxlbWVudGVkIFNldExvY2FsZUluZm9XLgoJTW92ZWQgc29tZSBsb2NhbGUgZnVuY3Rpb25zIHRvIGtlcm5lbDMyLmRsbC4KCgkqIGRsbHMvbnRkbGwvbG9hZGVyLmM6IFRyYXAgZXhjZXB0aW9ucyBpbiBSdGxJbWFnZU50SGVhZGVyLgoKCSogY29uZmlndXJlLmFjLCBkbGxzL250ZGxsL01ha2VmaWxlLmluLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsCgkgIGRsbHMvbnRkbGwvcnRsLmMsIGRsbHMvbnRkbGwvcnRsYml0bWFwLmMsCgkgIGRsbHMvbnRkbGwvdGVzdHMvLmN2c2lnbm9yZSwgZGxscy9udGRsbC90ZXN0cy9NYWtlZmlsZS5pbiwKCSAgZGxscy9udGRsbC90ZXN0cy9ydGxiaXRtYXAuYywgaW5jbHVkZS9udGRkay5oLCBjb25maWd1cmU6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJSW1wbGVtZW50IGFuZCB0ZXN0IHJ0bCBiaXRtYXAgZnVuY3Rpb25zLgoJQWRkIGEgY291cGxlIG9mIG90aGVyIG1pc2MgcnRsIGZ1bmN0aW9ucy4KCgkqIGRsbHMva2VybmVsL2xvY2FsZV9yYy5yYywgZGxscy9rZXJuZWwvbmxzLyoubmxzOgoJVXBkYXRlZCBhbGwgbG9jYWxlIHRhYmxlcyB0byBtYXRjaCBleGFjdGx5IHdoYXQgV2luZG93cyByZXR1cm5zLgoJUmVuYW1lZCBhIGZldyBmaWxlcyB0byBmb2xsb3cgdGhlIHByb3BlciBuYW1pbmcgY29udmVudGlvbnMuCglBZGRlZCBhIG51bWJlciBvZiBuZXcgbG9jYWxlcy4KCgkqIGRsbHMvY29tbWRsZy9jZGxnX1poLnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9aaC5yYywKCSAgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfWmgucmMsIGluY2x1ZGUvd2lubnQuaCwgdG9vbHMvd3BwL3BweS55LAoJICB0b29scy93cmMvZ2VucmVzLmMsIHRvb2xzL3dyYy9wYXJzZXIubCwgdG9vbHMvd3JjL3BhcnNlci55LAoJICB0b29scy93cmMvdXRpbHMuYywgdG9vbHMvd3JjL3V0aWxzLmgsIHRvb2xzL3dyYy93cmMuYywKCSAgdG9vbHMvd3JjL3dyY3R5cGVzLmgsIHRvb2xzL3dyYy93cml0ZXJlcy5jOgoJQWRkZWQgc3VwcG9ydCBmb3IgI3ByYWdtYSBjb2RlX3BhZ2UuCglGaXhlZCBhIGZldyBidWdzIGluIGxhbmd1YWdlIGhhbmRsaW5nLgoJQWRkZWQgZXJyb3IgbWVzc2FnZSB3aGVuIEFuc2ktPlVuaWNvZGUgY29udmVyc2lvbiBpbiB0aGUgY3VycmVudAoJY29kZXBhZ2UgbG9zZXMgaW5mb3JtYXRpb24uCgoJKiBwcm9ncmFtcy9wcm9nbWFuL1NpLnJjLCBwcm9ncmFtcy9wcm9nbWFuL3JzcmMucmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX1NpLnJjLCBkbGxzL3NoZWxsMzIvc2hyZXMucmM6CglSb2sgTWFuZGVsamMgPHJva21hbmRlbGpjQGhvdG1haWwuY29tPgoJQWRkZWQgU2xvdmVuaWFuIHJlc291cmNlcy4KCgkqIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYzogTWFyY3VzIE1laXNzbmVyIDxtZWlzc25lckBzdXNlLmRlPgoJVGhlIHRleHQgc2VjdGlvbiBhbGlnbm1lbnQgc2hvdWxkIGJlIGRlZmF1bHQsIG5vdCAxLgoKCSogcHJvZ3JhbXMvbm90ZXBhZC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvbm90ZXBhZC9tYWluLmM6CglBbmRyaXkgUGFsYW1hcmNodWsgPGFwYTNhQHlhaG9vLmNvbT4KCUxpbmsgYWdhaW5zdCBtc3ZjcnQsIGZpeGVkIGxvZ2ljIHRvIGhhbmRsZSBxdW90ZWQgcGF0aHMgaW4gY29tbWFuZAoJbGluZSBwYXJhbWV0ZXJzLgoKCSogcHJvZ3JhbXMvcmVnZWRpdC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvcmVnZWRpdC9yZWdwcm9jLmM6CglBbmRyaXkgUGFsYW1hcmNodWsgPGFwYTNhQHlhaG9vLmNvbT4KCUxpbmtlZCByZWdlZGl0IGFnYWluc3QgbXN2Y3J0IGluc3RlYWQgb2YgdGhlIHBsYXRmb3JtIEkvTyBsaWJyYXJ5LCBzbwoJaXQgY2FuIGhhbmRsZSBmdWxsIFdpbmRvd3MgcGF0aHMuCgoyMDAyLTA4LTE0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS9tb2R1bGUuaCwgbG9hZGVyL2xvYWRvcmRlci5jLCBsb2FkZXIvbW9kdWxlLmMsCgkgIHNjaGVkdWxlci9wcm9jZXNzLmM6CglNYWtlIGJlaGF2aW9yIG9mIGJ1aWx0aW4gZXhlY3V0YWJsZXMgY2xvc2VyIHRvIHRoYXQgb2YgYnVpbHRpbiBkbGxzLgoJRml4ZWQgY2FzZSBzZW5zaXRpdml0eSBvZiBidWlsdGluIGV4ZWN1dGFibGVzLgoKCSogZGxscy9NYWtlZmlsZS5pbjogVXBkYXRlZCBkZXBlbmRlbmNpZXMuCgoJKiBsaWJyYXJ5L2xkdC5jLCBtZW1vcnkvc2VsZWN0b3IuYzoKCVVzZSB0aGUgIm5ldyIgTERUIHNldCBjYWxsIG9uIExpbnV4LgoKCSogbGlicmFyeS9sb2FkZXIuYywgdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jOgoJQnVpbHRpbiBtb2R1bGVzIG11c3QgYmUgYWxpZ25lZCBvbiA2NEsgYm91bmRhcnkuCgoJKiBncmFwaGljcy94MTFkcnYvZGliLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlbUBjb2Rld2VhdmVycy5jb20+CglBdm9pZCBkb2RneSBhc20gb3B0aW1pemF0aW9uIGlmIHRoZSBzZXJ2ZXIncyBieXRlIG9yZGVyIGlzIG5vdAoJTFNCRmlyc3QuCgoJKiBkbGxzL3dpbmVwcy90eXBlMS5jOiBIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglDb3JyZWN0IGZvbnQgc2l6ZSBmb3Igbm9uIE1NX1RFWFQgbW9kZXMuCgoJKiBkbGxzL3ZlcnNpb24vaW5mby5jOiBGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJTlQgc2V0cyB0aGUgZXJyb3IgY29kZSB0byBFUlJPUl9SRVNPVVJDRV9EQVRBX05PVF9GT1VORCBpZiB0aGUgZmlsZQoJZXhpc3RzIGJ1dCBkb2VzIG5vdCBjb250YWluIHZlcnNpb24gaW5mb3JtYXRpb24uCgoJKiBkbGxzL3NoZWxsMzIvYnJzZm9sZGVyLmMsIGRsbHMvc2hlbGwzMi9zaHJlcy5yYywKCSAgZGxscy9zaGVsbDMyL3NocmVzZGVmLmg6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJTWFrZSBkaWFsb2cgSURzICJCcm93c2UgZm9yIEZvbGRlciIgY29tcGF0aWJsZSB3aXRoIElFLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZW1AY29kZXdlYXZlcnMuY29tPgoJU3R1YnMgZm9yIERBRF9EcmFnIEVudGVyLCBFbnRlckV4LCBNb3ZlIEF1dG9TY3JvbGwgYW5kIExlYXZlLgoKCSogZGxscy9tc3ZpZGVvL2RyYXdkaWIuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VtQGNvZGV3ZWF2ZXJzLmNvbT4KCUNvcnJlY3QgdGhlIHNpemUgb2YgdGhlIGNvbG91ciBtYXAgYWxsb2NhdGVkIGluIHRoZSBiaXRtYXAgaGVhZGVyIGZvcgoJdGhlIGNhc2UgYmlDbHJVc2VkID0gMC4KCgkqIGRsbHMvbWFwaTMyL21hcGkzMi5zcGVjLCBkbGxzL21hcGkzMi9tYXBpMzJfbWFpbi5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIERlaW5pdE1hcGlVdGlsIHN0dWIuCgoJKiBkb2N1bWVudGF0aW9uL2RlYnVnZ2luZy5zZ21sOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJVXBkYXRlIHRoZSBkZWJ1Z2dpbmcgY2hhbm5lbHMgZG9jdS4KCgkqIHNlcnZlci9jb250ZXh0X2kzODYuYzogUGllcnJlIEJleXNzYWMgPHBiLXdpbmVAZmFzdGVyaXguZnJtdWcub3JnPgoJSW1wbGVtZW50ZWQgQ09OVEVYVF9ERUJVR19SRUdJU1RFUlMgb24gRnJlZUJTRC4KCjIwMDItMDgtMTMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzY2hlZHVsZXIvY2xpZW50LmMsIHNlcnZlci9yZXF1ZXN0LmM6CglGaXhlZCByYWNlIGNvbmRpdGlvbiB3aGVuIGEgdGhyZWFkIGdldHMga2lsbGVkIHJpZ2h0IGFmdGVyIHN0YXJ0aW5nLgoKCSogZGxscy91cmxtb24vTWFrZWZpbGUuaW4sIGRsbHMvdXJsbW9uL3Vtb24uYywKCSAgZGxscy91cmxtb24vdXJsbW9uLnNwZWMsIGRsbHMvdXJsbW9uL3VybG1vbl9tYWluLmMsCgkgIGRsbHMvdXJsbW9uL3VybG1vbl9tYWluLmgsIG9sZS91dWlkLmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglWZXJ5IGhhY2tlZCBpbXBsZW1lbnRhdGlvbiBvZiB1cmwgbW9uaWtlcnMuCgoJKiBkbGxzL250ZGxsL3J0bHN0ci5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQ29zbWV0aWNzLgoKCSogZGxscy91c2VyL21lc3NhZ2UuYzoKCUFkZCBRTV9TTVJFU1VMVCBpbiB3YWtlIGJpdHMgdG9vIGluIGNhc2UgdGhlIGNoYW5nZWQgYml0cyBnZXQgY2xlYXJlZAoJd2hpbGUgcHJvY2Vzc2luZyBhIHNlbnQgbWVzc2FnZS4KCgkqIGlmMTYzMi9zbm9vcC5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRml4IHNub29waW5nIG9mIDE2LWJpdCBkbGxzIGJlaW5nIGxvYWRlZCBhdCB0aGUgc2FtZSBhZGRyZXNzLgoKCSogZ3JhcGhpY3MvcGF0aC5jOiBIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglBdCB0aGUgZW5kIG9mIFBBVEhfU3Ryb2tlUGF0aCwgdXBkYXRlIGRjLT5DdXJQb3NYfFkgc28gdGhhdCB0aGVpcgoJdmFsdWVzIGFyZSBpbiBsb2dpY2FsIGNvLW9yZHMuCgoJKiBkbGxzL3NldHVwYXBpL3BhcnNlci5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRml4ZWQgaGV4IHRvIGJpbmFyeSBjb252ZXJzaW9uLgoKCSogZGxscy9udGRsbC9taXNjLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+Cgl1cy0+TGVuZ3RoIGlzIGluIGJ5dGVzLgoKCSogZGxscy9udGRsbC9jcml0c2VjdGlvbi5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJVGhyb3cgZXhjZXB0aW9uIG9ubHkgZm9yIFdpbmUgaW50ZXJuYWwgbG9ja3MuCgoJKiBkbGxzL2NvbWN0bDMyL3Byb2dyZXNzLmM6IFJlZHVjZSBmbGlja2VyIG9uIHVwZGF0ZXMuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2x0aXBzLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlbUBjb2Rld2VhdmVycy5jb20+CglEdXBsaWNhdGUgdGhlIGZvbnQgaGFuZGxlIHBhc3NlZCB0aHJvdWdoIFdNX1NFVEZPTlQsIGJlY2F1c2UgaXQgZG9lcwoJbm90IGJlbG9uZyB0byB1cyBhbmQgaXMgbm90IG91cnMgdG8gZnJlZS4KCgkqIGRsbHMvY29tY3RsMzIvY29tYm9leC5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgV01fR0VUL1NFVFRFWFQgc3VwcG9ydC4KCgkqIGRsbHMvYWR2YXBpMzIvY3J5cHQuaDogVGhlIHByb3ZpZGVyIGZ1bmN0aW9ucyBhcmUgV0lOQVBJLgoKCSogZGxscy9hZHZhcGkzMi9jcnlwdC5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJT25seSBtb2RpZnkgcmV0dXJuZWQga2V5cyBvbiBzdWNjZXNzLgoKCSogZGVidWdnZXIvZGVidWcubCwgZGVidWdnZXIvZGVidWdnZXIuaCwgZGVidWdnZXIvaW5mby5jLAoJICBkZWJ1Z2dlci9kYmcueToKCUFkZGVkICd3YWxrIGV4Y2VwdGlvbicgY29tbWFuZC4KCgkqIHRvb2xzL3dpZGwvaGVhZGVyLmMsIHRvb2xzL3dpZGwvcGFyc2VyLnksIHRvb2xzL3dpZGwvcHJveHkuYywKCSAgdG9vbHMvd2lkbC93aWRsdHlwZXMuaDoKCUF2b2lkIGRlcGVuZGVuY2llcyBvbiB5LnRhYi5oLgoKCSogdG9vbHMvd2luZWJ1aWxkL3JlbGF5LmMsIGRsbHMva2VybmVsL3RodW5rLmMsCgkgIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmMsIGluY2x1ZGUvc3RhY2tmcmFtZS5oOgoJU2V0dXAgZXhjZXB0aW9uIGZyYW1lIGFyb3VuZCAxNi1iaXQgY2FsbHMgdG8gdW53aW5kIHN0YWNrIHByb3Blcmx5LgoKCSogb2xlL3V1aWQuYywgaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS93aW5lL29ial9kcmFnZHJvcGhlbHBlci5oLAoJICBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW4sIGRsbHMvc2hlbGwzMi9kcmFnZHJvcGhlbHBlci5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsIGRsbHMvc2hlbGwzMi9zaGVsbG9sZS5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2Vuc2NobWllZEBseWNvcy5kZT4KCVN0dWJzIGZvciBEcmFnRHJvcEhlbHBlci4KCgkqIG1zZG9zL2lvcG9ydHMuYzogTWFyY3VzIE1laXNzbmVyIDxtZWlzc25lckBzdXNlLmRlPgoJRml4ZWQgdGhlIHBwZGV2LmggcHJlc2VudCBidXQgbm90IGRpcmVjdCBpbyBhY2Nlc3MgY2FzZS4KCgkqIHNlcnZlci9jb250ZXh0X2kzODYuYzogUGllcnJlIEJleXNzYWMgPHBiQGZhc3Rlcml4LmZybXVnLm9yZz4KCUZpeGVkIHB0cmFjZSBhcmd1bWVudCBvcmRlciBmb3IgRnJlZUJTRCwgTmV0QlNEIGFuZCBTb2xhcmlzLgoKCSogZGxscy93aW5lZG9zL2ludDEwLmMsIGRsbHMvd2luZWRvcy92Z2EuYywgZGxscy93aW5lZG9zL3ZnYS5oOgoJSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJQWRkIHN1cHBvcnQgZm9yIG1vdmluZyBWR0EgY29udHJvbGxlciB3aW5kb3cgaW4gZnJhbWVidWZmZXIgdXNpbmcgU1ZHQQoJaW50ZXJydXB0cy4gRGV0ZWN0IGNvcnJlY3RseSBjb2xvciBwbGFuZSBtb2RlcyBhbmQgbGluZWFyIG1vZGVzLAoJaW5jbHVkaW5nIE1vZGUtWC4gTW92ZWQgVkVTQSBpbnRlcnJ1cHRzIGludG8gc2VwYXJhdGUgZnVuY3Rpb24gYW5kCglpbXBsZW1lbnRlZCBmZXcgbW9yZSBzdHVicy4KCjIwMDItMDgtMTAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL01ha2V0ZXN0LnJ1bGVzLmluOgoJVGVzdCByZXN1bHRzIG5lZWQgdG8gZGVwZW5kIG9uIHRoZSBtb2R1bGUgYmVpbmcgdGVzdGVkLgoKCSogZGVidWdnZXIvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmhlbHAvTWFrZWZpbGUuaW4sCgkgIHRvb2xzL3dpZGwvTWFrZWZpbGUuaW4sIHRvb2xzL3dwcC9NYWtlZmlsZS5pbiwKCSAgdG9vbHMvd3JjL01ha2VmaWxlLmluOgoJQWRkZWQgZXhwbGljaXQgZGVwZW5kZW5jeSBvbiB5LnRhYi5oIGZvciBsZXggb3V0cHV0LgoKMjAwMi0wOC0wOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbjMyL2V4Y2VwdC5jOgoJVW5wcm90ZWN0IHRoZSByZXNvdXJjZSBkYXRhIGluIHRoZSB1bmhhbmRsZWQgZXhjZXB0aW9uIGhhbmRsZXIgdG8gZml4Cglicm9rZW4gYXBwcy4KCgkqIGxvYWRlci9lbGYuYywgbG9hZGVyL21vZHVsZS5jLCBsb2FkZXIvcGVfaW1hZ2UuYywKCSAgbG9hZGVyL3BlX3Jlc291cmNlLmMsIG1pc2MvdmVyc2lvbi5jLCBtc2Rvcy92eGQuYywKCSAgcmVsYXkzMi9idWlsdGluMzIuYywgcmVsYXkzMi9yZWxheTM4Ni5jLCByZWxheTMyL3Nub29wLmMsCgkgIHNjaGVkdWxlci9wcm9jZXNzLmMsIGRsbHMvbnRkbGwvbG9hZGVyLmMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywKCSAgZGxscy9udGRsbC9ydGwuYywgaW5jbHVkZS9tb2R1bGUuaCwgaW5jbHVkZS9udGRkay5oOgoJSW1wbGVtZW50ZWQgdGhlIFJ0bEltYWdlKiBmdW5jdGlvbnMsIGFuZCB1c2UgdGhlbSB0byByZXBsYWNlIHRoZQoJUEVfSEVBREVSIG1hY3JvLgoKCSogZGxscy9yaWNoZWRpdC9yaWNoZWQzMi5oLCBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL3JpY2hlZGl0LmgsCgkgIGluY2x1ZGUvcmljaG9sZS5oOgoJQW5kcml5IFBhbGFtYXJjaHVrIDxhcGEzYUB5YWhvby5jb20+CglJbXByb3ZlZCByaWNoZWRpdCBoZWFkZXJzLgoKCSogZGxscy93aW5tbS9tbWlvLmMsIGRsbHMvd2lubW0vd2luZW1tLmgsIGluY2x1ZGUvbW1zeXN0ZW0uaDoKCU1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuZGU+CglDb252ZXJ0IEhNTUlPIHRvIGEgdm9pZCouCgoJKiBncmFwaGljcy94MTFkcnYveGZvbnQuYzogRGF2ZSBIYXdrZXMgPGRhdmVoQGNhZGxpbmsuY29tPgoJRm9udHMgd2l0aCBhbiBpbmNvbXBsZXRlIGNoYXJhY3RlciBzZXQgY291bGQgY2F1c2UgYSBmYXVsdC4KCgkqIGNvbmZpZ3VyZS5hYywgZGxscy9tc3ZjcnQvcHJvY2Vzcy5jLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBjb25maWd1cmU6CglNYXJjdXMgTWVpc3NuZXIgPG1laXNzbmVyQHN1c2UuZGU+CglDb3B5IHZhX2xpc3RzIGJ5IHVzaW5nIHZhX2NvcHksIG5vdCBieSBqdXN0IGFzc2lnbmluZyB0aGVtLgoKCSogZGxscy9vbGVhdXQzMi90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL29sZWF1dDMyL3Rlc3RzL01ha2VmaWxlLmluLAoJICBkbGxzL3NobHdhcGkvTWFrZWZpbGUuaW4sIGRsbHMvc2hsd2FwaS90ZXN0cy8uY3ZzaWdub3JlLAoJICBkbGxzL3NobHdhcGkvdGVzdHMvTWFrZWZpbGUuaW4sIGRsbHMvdXNlci9NYWtlZmlsZS5pbiwKCSAgZGxscy91c2VyL3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMvdXNlci90ZXN0cy9NYWtlZmlsZS5pbiwKCSAgZGxscy93aW5pbmV0L01ha2VmaWxlLmluLCBkbGxzL3dpbmluZXQvdGVzdHMvLmN2c2lnbm9yZSwKCSAgZGxscy93aW5pbmV0L3Rlc3RzL01ha2VmaWxlLmluLCBkbGxzL3dpbnNvY2svTWFrZWZpbGUuaW4sCgkgIGRsbHMvd2luc29jay90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL3dpbnNvY2svdGVzdHMvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL01ha2VmaWxlLmluLCBwcm9ncmFtcy9NYWtlcHJvZy5ydWxlcy5pbiwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvbWFrZV9jdGVzdHMsIE1ha2UucnVsZXMuaW4sIE1ha2VmaWxlLmluLAoJICBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy8uY3ZzaWdub3JlLCBkbGxzL01ha2VkbGwucnVsZXMuaW4sCgkgIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvTWFrZXRlc3QucnVsZXMuaW4sIGRsbHMvYWR2YXBpMzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvYWR2YXBpMzIvdGVzdHMvLmN2c2lnbm9yZSwgZGxscy9hZHZhcGkzMi90ZXN0cy9NYWtlZmlsZS5pbiwKCSAgZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL3Rlc3RzLy5jdnNpZ25vcmUsCgkgIGRsbHMva2VybmVsL3Rlc3RzL01ha2VmaWxlLmluLCBkbGxzL21ha2VfZGxscywKCSAgZGxscy9vbGVhdXQzMi9NYWtlZmlsZS5pbjoKCUNyZWF0ZSBzZXBhcmF0ZSBtYWtlZmlsZXMgZm9yIHRlc3RzIGZvciBtb3JlIGZsZXhpYmlsaXR5LgoKCSogZGxscy9zaGx3YXBpL3Rlc3RzL3NocmVnLmM6CglGaXhlZCBzdHJpbmcgbGVuZ3RocyB0byBkbyB0aGUgcmlnaHQgdGhpbmcgZm9yIGFsbCBwbGF0Zm9ybXMuCgoJKiBBVVRIT1JTLCBkbGxzL3NoZWxsMzIvYXV0aG9ycy5oOiBVcGRhdGVkIGF1dGhvcnMgbGlzdC4KCgkqIGRsbHMvcnBjcnQ0L3JwY3J0NF9tYWluLmMsIGluY2x1ZGUvcnBjLmgsIGluY2x1ZGUvcnBjZGNlLmgsCgkgIGluY2x1ZGUvcnBjZGNlcC5oLCBpbmNsdWRlL3JwY25kci5oLCBpbmNsdWRlL3JwY3Byb3h5Lmg6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCVNvbWUgbW9yZSBSUEMgZGVmaW5pdGlvbnMuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmMsIGRsbHMvY29tY3RsMzIvZmxhdHNiLmMsCgkgIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmMsIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmMsCgkgIGRsbHMvbnRkbGwvc2VjLmMsIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYywKCSAgZGxscy9udGRsbC9zaWduYWxfc3BhcmMuYywgZGxscy9vbGUzMi9jb21wb2JqLmMsCgkgIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWMsIGRsbHMvc2hsd2FwaS90aHJlYWQuYywKCSAgZGxscy93aW5lZG9zL3ZnYS5jLCBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYywKCSAgZGxscy93aW5tbS93aW5lYWxzYS9hdWRpby5jLCBkbGxzL3dpbm1tL3dpbmVhbHNhL2F1ZGlvXzA1LmMsCgkgIGRsbHMvd2lubW0vd2luZWF1ZGlvaW8vYXVkaW8uYywgZGxscy93aW5tbS93aW5lbmFzL2F1ZGlvLmMsCgkgIGZpbGVzL3Byb2ZpbGUuYywgc2NoZWR1bGVyL2NsaWVudC5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIGlzc3VlcyBmb3VuZCBieSB3aW5hcGlfY2hlY2suCgoJKiB0b29scy93aW5hcGkvd2luMzIuYXBpLCB0b29scy93aW5hcGkvd2luYXBpLnBtLAoJICB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5kYXQsIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfY2hlY2s6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUFQSSBmaWxlIHVwZGF0ZS4KCgkqIGRsbHMvbXNhY20vZHJpdmVyLmMsIGRsbHMvbXN2aWRlby9tc3ZpZGVvX21haW4uYywKCSAgZGxscy93aW5tbS9kcml2ZXIuYywgZGxscy93aW5tbS9qb3lzdGljay5jLCBkbGxzL3dpbm1tL2xvbHZsZHJ2LmMsCgkgIGRsbHMvd2lubW0vbW1zeXN0ZW0uYywgZGxscy93aW5tbS93YXZlbWFwL3dhdmVtYXAuYywKCSAgZGxscy93aW5tbS93aW5lbW0uaCwgZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmMsIGluY2x1ZGUvbW1kZGsuaCwKCSAgaW5jbHVkZS9tbXN5c3RlbS5oOgoJTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5kZT4KCS0gQ29udmVydCBIRFJWUiB0byBhIHZvaWQqLgoJLSBGaXggZGVjbGFyYXRpb24gb2YgRHJpdmVyQ2FsbGJhY2soKS4KCgkqIGRvY3VtZW50YXRpb24vd2luZWxpYi1pbnRyby5zZ21sOgoJQW5kcml5IFBhbGFtYXJjaHVrIDxhcGEzYUB5YWhvby5jb20+CglBZGRlZCBhbiBleGFtcGxlIG9mIHVzaW5nIHdpbmVtYWtlci4KCgkqIHRvb2xzL3dpbmVtYWtlcjogQW5kcml5IFBhbGFtYXJjaHVrIDxhcGEzYUB5YWhvby5jb20+CglVcGRhdGVkIHRvIGdlbmVyYXRlIGJ1aWxkIHNjcmlwdHMgd29ya2luZyB3aXRoIGN1cnJlbnQgV2luZSwgdXNlIHNvbWUKCVdpbmUgY29udmVudGlvbnMuCglHZW5lcmF0ZWQgY29uZmlndXJlIG5vdyBmaW5kcyBsaWJyYXJpZXMgaW4gYmluYXJ5IFdpbmUgaW5zdGFsbGF0aW9uLgoKCSogb2JqZWN0cy90ZXh0LmM6IEh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUFkZCBtaXNzaW5nIEhlYXBGcmVlLgoKMjAwMi0wOC0wNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHRvb2xzL3dyYy91dGlscy5oLCBkbGxzL2RkcmF3L2RzdXJmYWNlL2RpYi5jLCBkbGxzL21zdmNydC9tYXRoLmMsCgkgIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL3NoZWxsMzIvY2xhc3Nlcy5jLAoJICBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmMsIHRvb2xzL3dpZGwvdXRpbHMuaCwgdG9vbHMvd2lkbC93aWRsdHlwZXMuaCwKCXRvb2xzL3dtYy91dGlscy5oOgoJR3JlZ2cgTWF0dGluc29uIDxnbTEzODI0MkBzY290LmNhbmFkYS5zdW4uY29tPgoJRml4ZXMgZm9yIFNwYXJjIGJ1aWxkLgoKCSogYWNsb2NhbC5tNCwgY29uZmlndXJlOgoJRG9uJ3QgbWFrZSB0aGUgYWNfYXNtIGZ1bmN0aW9uIHdyYXBwZXIgc3RhdGljIHRvIHByZXZlbnQgaXQgZnJvbSBiZWluZwoJb3B0aW1pemVkIG91dC4KCgkqIHRvb2xzL01ha2VmaWxlLmluOiBHZXQgcmlkIG9mIHJlbW92ZWQgd2luYXBpX2NoZWNrIHN1YmRpcnMuCgoyMDAyLTA4LTA2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbWVtb3J5L3ZpcnR1YWwuYzoKCURvbid0IGNoYW5nZSBiYXNlIGluIG1hcF9pbWFnZSBzaW5jZSB3ZSB1c2UgaXQgbGF0ZXIgb24uCglBZGRlZCBzb21lIHRyYWNpbmcuCgoJKiBsaWJyYXJ5L3BvcnQuYywgc2NoZWR1bGVyL3N5c2RlcHMuYywgaW5jbHVkZS93aW5udC5oOgoJSm9zaCBEdUJvaXMgPGR1Ym9pc2pAY29kZXdlYXZlcnMuY29tPgoJTWFyY3VzIE1laXNzbmVyIDxtZWlzc25lckBzdXNlLmRlPgoJUG93ZXJQQyBsb2NrZWQgZXhjaGFuZ2UgZnVuY3Rpb25zIG1lcmdlZCBmcm9tIG9sZCBwcGMgcGF0Y2guCglOdEN1cnJlbnRUZWIgaGFuZGxpbmcgZm9yIFBvd2VyUEMgKHVzaW5nIGdwciAxMykuCgoJKiBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjLCBkbGxzL3NobHdhcGkvc3RyaW5nLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW5zY2htaWVkQGx5Y29zLmRlPgoJSW1wbGVtZW50IFN0clJldFRvU3RyIGluIHNobHdhcGkuCgoJKiBkbGxzL2RkcmF3L2RkcmF3L2hhbC5jOiBDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglJbml0aWFsaXplIHRoZSBERENBUFMgc3RydWN0dXJlIG9mIHRoZSBERFJBVyBvYmplY3QgYXQgY3JlYXRpb24uCgoJKiBkbGxzL2RpbnB1dC9rZXlib2FyZC9tYWluLmM6IExpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglIYW5kbGUgJ25vdCBhY3F1aXJlZCcgZXJyb3IgbWVzc2FnZXMgb24ga2V5Ym9hcmQgR2V0RGV2aWNlRGF0YS4KCjIwMDItMDgtMDQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBBTk5PVU5DRSwgQ2hhbmdlTG9nLCBWRVJTSU9OLCBjb25maWd1cmU6IFJlbGVhc2UgMjAwMjA4MDQuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjIwMDItMDgtMDMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBtZW1vcnkvdmlydHVhbC5jOiBTZXQgdXNlciBhZGRyZXNzIHNwYWNlIGxpbWl0IHRvIDB4YzAwMDAwMDAuCgoJKiBkbGxzL2RkcmF3L2RzdXJmYWNlL2RpYi5jOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJU3VwcG9ydCBuZWdhdGl2ZSB2YWx1ZXMgaW4gUkVDVHMgZHVyaW5nIEJsdHMuCgoJKiBpbmNsdWRlL3dpbmJhc2UuaCwgZmlsZXMvZmlsZS5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2Vuc2NobWllZEBseWNvcy5kZT4KCS0gRml4ZWQgcG9zc2libGUgbG9zcyBvZiBkYXRhIHdpdGggZ2l2ZW4gb3ZlcmxhcHBlZCBzdHJ1Y3R1cmUgb24gYQoJICBmaWxlIG9wZW5lZCBpbiBub24gb3ZlcmxhcHBlZCBtb2RlLgoJLSBGaXhtZSBmb3IgZmlsZS1sb2NrIGZ1bmN0aW9ucy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBsaWJyYXJ5L01ha2VmaWxlLmluOgoJT25seSBsaW5rIHdpdGggbXN2Y3J0IG9uIG1pbmd3MzIuIENsZWFuZWQgdXAgYSBmZXcgQUNfU1VCU1QuCgoJKiBkbGxzL29sZTMyL01ha2VmaWxlLmluLCBkbGxzL29sZTMyL2NvbXBvYmouYywKCSAgZGxscy9vbGUzMi9jb21wb2JqX3ByaXZhdGUuaCwgZGxscy9vbGUzMi9mdG1hcnNoYWwuYywgZGxscy9vbGUzMi9pZnMuYywKCSAgZGxscy9vbGUzMi9vbGUxNi5jLCBpbmNsdWRlL3d0eXBlcy5oOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2Vuc2NobWllZEBseWNvcy5kZT4KCS0gTW92ZWQgMTYgYml0IGZ1bmN0aW9ucyB0byBhIHNlcGVyYXRlIGZpbGUuCgktIEZpcnN0IGltcGxlbWVudGF0aW9uIGZvciBmcmVlIHRocmVhZGVkIG1hcnNoYWxsZXIuCgktIEZpeGVkIGhhbmRsaW5nIG9mIFJFR19FWFBBTkRfU1RSSU5HIHJlZ2lzdHJ5IHZhbHVlcyBpbiBDb0NyZWF0ZU9iamVjdC4KCS0gRml4ZWQgQ29Mb2FkL0ZyZWVMaWJyYXJ5IGZ1bmN0aW9ucy4KCS0gRml4ZWQgdXNlIGludGVybmFsIGRsbC1saXN0ICh1c2VkIG9ubHkgZm9yIGZ1bmN0aW9ucyBsb2FkaW5nIGEgZGxsCgkgIGludGVybmFsbHkgd2l0aG91dCByZXR1cm5pbmcgSE1PRFVMRSkuCgoJKiBkbGxzL3dpbm1tL3dpbmVtbS5oLCBpbmNsdWRlL21tc3lzdGVtLmgsIGRsbHMvd2lubW0vbW1zeXN0ZW0uYzoKCU1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuZGU+CglDb252ZXJ0IEhNSVhFUiwgSE1JWEVST0JKIHRvIGEgdm9pZCouCgoJKiBjb250cm9scy9zY3JvbGwuYzogRHVhbmUgQ2xhcmsgPGRjbGFya0Bha2FtYWlsLmNvbT4KCU9uIG1vdXNlIGRvd24gaW4gdGh1bWIsIGlzc3VlIFNCX1RIVU1CVFJBQ0sgd2l0aCBjdXJyZW50IHBvc2l0aW9uLgoJT24gbW91c2UgdXAgaW4gdGh1bWIsIGlzc3VlIFNCX1RIVU1CUE9TSVRJT04gZm9sbG93ZWQgYnkKCVNCX0VORFNDUk9MTC4KCjIwMDItMDgtMDIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBNYWtlLnJ1bGVzLmluLCBNYWtlZmlsZS5pbiwgYWNsb2NhbC5tNDoKCUluc3RhbGwgdGhlIGFjbG9jYWwgbWFjcm9zIGZvciB1c2UgYnkgV2luZWxpYiBhcHBzLgoKCSogTWFrZS5ydWxlcy5pbiwgcHJvZ3JhbXMvd2luZXRlc3QvTWFrZWZpbGUuaW46CglEb24ndCBwYXNzIHRoZSBwZXJsIEMgZmxhZ3MgdG8gd2luZWJ1aWxkLgoKCSogcHJvZ3JhbXMvd2luZXRlc3Qvd2luZXRlc3QuYzogTWlrZSBDYXN0bGUgPGRhbGdvZGFAaXgubmV0Y29tLmNvbT4KCUNvbXBpbGUgZml4IGZvciBtdWx0aS10aHJlYWRlZCBwZXJsLgoKCSogZGxscy9kZHJhdy9kc3VyZmFjZS9kaWIuYzogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUJlIGxlc3Mgc3RyaWN0IG9uIHBhcmFtZXRlciBjaGVja2luZyBpbiB0aGUgU2V0U3VyZmFjZURlc2MgZnVuY3Rpb24uCgoJKiBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jLCBkbGxzL3dpbm1tL2xvbHZsZHJ2LmMsCgkgIGRsbHMvd2lubW0vbW1zeXN0ZW0uYywgZGxscy93aW5tbS93aW5lbW0uaCwgaW5jbHVkZS9tbXN5c3RlbS5oOgoJTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5kZT4KCS0gQ29udmVydGVkIEhXQVZFLCBIV0FWRUlOLCBIV0FWRU9VVCB0byB2b2lkKi4KCS0gRml4ZWQgc29tZSBITUlESXtJTixPVVR9MTYgdG8gSEFORExFIGNvbnZlcnNpb25zLgoJLSBtaWRpT3V0Q2FjaGVEcnVtUGF0Y2hlczE2IGNhbGxlZCBpdHNlbGYgcmVjdXJzaXZlbHkgaW4gYW4gaW5maW5pdGUKCSAgbG9vcC4KCgkqIGRlYnVnZ2VyL2RiZy55LCBkZWJ1Z2dlci9kZWJ1Z2dlci5oLCBkZWJ1Z2dlci9pbmZvLmMsCgkgIGRlYnVnZ2VyL2ludHZhci5oLCBkZWJ1Z2dlci9yZWdpc3RlcnMuYywgZGVidWdnZXIvdHlwZXMuYywKCSAgZGVidWdnZXIvd2luZWRiZy5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCAkcmVncyBhcyBhIHZhcmlhYmxlIGZvciBkaXNwbGF5aW5nIGFsbCByZWdpc3RlcnMuCgoJKiBvYmplY3RzL2RjLmM6CglEb24ndCBzZXQgdGhlIERDX0RJUlRZIGZsYWcgaW4gU2V0RENTdGF0ZSBzaW5jZSB3ZSBqdXN0IHVwZGF0ZWQgdGhlIERDLgoKCSogdG9vbHMvd3JjL3dyY3R5cGVzLmg6CglSZW1vdmVkIHN0cnVjdCB1c2VyIHRvIGF2b2lkIGNvbmZsaWN0cyB3aXRoIHN5c3RlbSBoZWFkZXJzIChzcG90dGVkIGJ5CglNYXJ0aW4gQ3JhY2F1ZXIpLgoKMjAwMi0wOC0wMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHByb2dyYW1zL2F2aXRvb2xzL01ha2VmaWxlLmluLCB3aW5kb3dzLy5jdnNpZ25vcmUsIE1ha2UucnVsZXMuaW4sCgkgIGNvbnRyb2xzLy5jdnNpZ25vcmUsIGRsbHMvTWFrZWRsbC5ydWxlcy5pbiwgZGxscy9nZGkvLmN2c2lnbm9yZSwKCSAgZGxscy9nZGkvTWFrZWZpbGUuaW4sIGRsbHMvZ2RpL3dpbjE2ZHJ2Ly5jdnNpZ25vcmUsCgkgIGRsbHMva2VybmVsLy5jdnNpZ25vcmUsIGRsbHMva2VybmVsL01ha2VmaWxlLmluLAoJICBkbGxzL21zdmlkZW8vLmN2c2lnbm9yZSwgZGxscy9tc3ZpZGVvL01ha2VmaWxlLmluLAoJICBkbGxzL250ZGxsLy5jdnNpZ25vcmUsIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sCgkgIGRsbHMvc2V0dXBhcGkvLmN2c2lnbm9yZSwgZGxscy9zZXR1cGFwaS9NYWtlZmlsZS5pbiwKCSAgZGxscy91c2VyLy5jdnNpZ25vcmUsIGRsbHMvdXNlci9NYWtlZmlsZS5pbiwKCSAgZGxscy91c2VyL2RkZS8uY3ZzaWdub3JlLCBkbGxzL3dpbmFzcGkvLmN2c2lnbm9yZSwKCSAgZGxscy93aW5hc3BpL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tLy5jdnNpZ25vcmUsCgkgIGRsbHMvd2lubW0vTWFrZWZpbGUuaW4sIGxvYWRlci8uY3ZzaWdub3JlLCBsb2FkZXIvbmUvLmN2c2lnbm9yZSwKCSAgbWVtb3J5Ly5jdnNpZ25vcmUsIG9iamVjdHMvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvTWFrZXByb2cucnVsZXMuaW46CglDcmVhdGUgYXQgbW9zdCBvbmUgZ2x1ZSBmaWxlIGZvciBhIHNpbmdsZSBkbGwuCglBdm9pZCB0aGUgaW50ZXJtZWRpYXRlIC50bXAubyBmaWxlIHdoZW4gYnVpbGRpbmcgcHJvZ3JhbXMuCgoJKiB0b29scy93aW5lYnVpbGQvYnVpbGQuaCwgdG9vbHMvd2luZWJ1aWxkL2ltcG9ydC5jLAoJICB0b29scy93aW5lYnVpbGQvbWFpbi5jLCB0b29scy93aW5lYnVpbGQvcGFyc2VyLmMsCgkgIHRvb2xzL3dpbmVidWlsZC9zcGVjMTYuYywgdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jLAoJICB0b29scy93aW5lYnVpbGQvdXRpbHMuYywgdG9vbHMvd2luZWJ1aWxkL3dpbmVidWlsZC5tYW4uaW46CglJbiAtc3BlYyBhbmQgLWV4ZSBtb2RlLCBhY2NlcHQgbXVsdGlwbGUgb2JqZWN0IGZpbGVzIGFuZCBsaW5rIHRoZW0KCXRvZ2V0aGVyIGludGVybmFsbHkgdG8gZmluZCB0aGUgdW5kZWZpbmVkIHN5bWJvbHMuCglJbiAtZ2x1ZSBtb2RlLCBhY2NlcHQgbXVsdGlwbGUgQyBmaWxlcyBhbmQgZ2VuZXJhdGUgYSBzaW5nbGUgZ2x1ZQoJZmlsZSBmb3IgYWxsIG9mIHRoZW0uCgoJKiBpbmNsdWRlL2NvbmZpZy5oLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9NYWtlZmlsZS5pbiwKCSAgZGxscy93aW5tbS93aW5lYXVkaW9pby8uY3ZzaWdub3JlLAoJICBkbGxzL3dpbm1tL3dpbmVhdWRpb2lvL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL3dpbmVhdWRpb2lvL2F1ZGlvLmMsCgkgIGRsbHMvd2lubW0vd2luZWF1ZGlvaW8vYXVkaW9pby5jLAoJICBkbGxzL3dpbm1tL3dpbmVhdWRpb2lvL3dpbmVhdWRpb2lvLmRydi5zcGVjOgoJUm9iZXJ0IEx1bm5vbiA8Ym9iQHlhcnJhYmVlLm5ldC5hdT4KCVByZWxpbWluYXJ5IGF1ZGlvIGRyaXZlciBmb3IgU29sYXJpcyBMaWJhdWRpb2lvLgoKCSogZGxscy93aW5tbS9sb2x2bGRydi5jLCBkbGxzL3dpbm1tL21jaXNlcS9tY2ltaWRpLmMsCgkgIGRsbHMvd2lubW0vbWlkaW1hcC9taWRpbWFwLmMsIGRsbHMvd2lubW0vbW1zeXN0ZW0uYywKCSAgZGxscy93aW5tbS93aW5lbW0uaCwgaW5jbHVkZS9tbXN5c3RlbS5oOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmNvbT4KCUNvbnZlcnQgSE1JREksIEhNSURJSU4sIEhNSURJT1VULCBITUlESVNUUk0gdG8gdm9pZCouCgoyMDAyLTA3LTMxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogcHJvZ3JhbXMvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmV0ZXN0L01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy93aW5ldGVzdC9ydW50ZXN0LCBNYWtlLnJ1bGVzLmluLCBNYWtlZmlsZS5pbjoKCVVzZSB0aGUgbm9ybWFsIHBlcmwgaW50ZXJwcmV0ZXIgZm9yIHRlc3Qgc2NyaXB0cyB0aGF0IGRvbid0IG5lZWQgdG8KCWNhbGwgV2luZG93cyBBUElzLgoJRG9uJ3QgYnVpbGQgd2luZXRlc3QuZXhlIGJ5IGRlZmF1bHQuCgoJKiBkbGxzL3dpbnNvY2svYXN5bmMuYywgZGxscy93aW5zb2NrL3NvY2tldC5jLCBkbGxzL3dzb2NrMzIvcHJvdG9jb2wuYywKCSAgaW5jbHVkZS93aW5lL3BvcnQuaCwgbGlicmFyeS9wb3J0LmM6CglNb3ZlZCB0aGUgI2lmZGVmcyBmb3IgdGhlIGdldG5ldGJ5KiBldGMuIGZ1bmN0aW9ucyBkaXJlY3RseSBpbnRvIHRoZQoJd2luc29jayBpbXBsZW1lbnRhdGlvbiB0byBhdm9pZCBoYXZpbmcgdG8gcmVkZWZpbmUgdGhlIGRhdGEgc3RydWN0dXJlcwoJaW4gcG9ydC5oLgoKCSogcHJvZ3JhbXMvbm90ZXBhZC9TaS5yYzogUm9rIE1hbmRlbGpjIDxyb2ttYW5kZWxqY0Bob3RtYWlsLmNvbT4KCUZpeGVkIHNvbWUgaW52YWxpZCBjaGFyYWN0ZXJzLgoKCSogcHJvZ3JhbXMvcmVnZWRpdC90ZXN0cy9yZWdlZGl0LnBsLCBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL3dpbmUucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvd2luZXRlc3QucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L3Rlc3RzL3dpbmUucGw6CglTcGxpdCByb3V0aW5lcyB0aGF0IGRvbid0IHJlbHkgb24gQyBmdW5jdGlvbnMgaW50byB3aW5ldGVzdC5wbSBzbyB0aGF0Cgl0aGV5IGNhbiBiZSB1c2VkIGZyb20gYSBub3JtYWwgUGVybCBzY3JpcHQuCgoJKiBkbGxzL2NydGRsbC9jcnRkbGxfbWFpbi5jLCBkbGxzL21zdmNydC9maWxlLmMsIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjOgoJQWRkIE1TVkNSVCBwcmVmaXggdG8gX3N0YXQgYW5kIF9mc3RhdCAoYmFzZWQgb24gYSBwYXRjaCBieSBSYWZhZWwKCUtpdG92ZXIpLgoKCSogZGxscy9rZXJuZWwvc3luYy5jLCBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmMsIGRsbHMvd2luZXBzL2J1aWx0aW4uYywKCSAgaW5jbHVkZS9tc3ZjcnQvc3lzL3N0YXQuaCwgaW5jbHVkZS9tc3ZjcnQvc3lzL3R5cGVzLmgsCgkgIHRzeDExL01ha2VmaWxlLmluOgoJUmFmYWVsIEtpdG92ZXIgPGNhZWx1bUBkZWJpYW4ub3JnPgoJUG9ydGFiaWxpdHkgZml4ZXMgZm9yIEN5Z3dpbi4KCgkqIHNlcnZlci9yZWdpc3RyeS5jLCBzZXJ2ZXIvc29jay5jLCB3aW4zMi9uZXdmbnMuYywgbWVtb3J5L3JlZ2lzdHJ5LmMsCgkgIG1lbW9yeS9zZWxlY3Rvci5jLCBtaXNjL3JlZ2lzdHJ5LmMsIG1zZG9zL3Z4ZC5jLCBvYmplY3RzL3BhbGV0dGUuYywKCSAgcmVsYXkzMi9zbm9vcC5jLCBzY2hlZHVsZXIvc3lzbGV2ZWwuYywgc2NoZWR1bGVyL3RocmVhZC5jLAoJICBkbGxzL2tlcm5lbC9kZWJ1Z2dlci5jLCBkbGxzL2tlcm5lbC90aHVuay5jLCBkbGxzL2tlcm5lbC93b3d0aHVuay5jLAoJICBkbGxzL250ZGxsL2NyaXRzZWN0aW9uLmMsIGRsbHMvbnRkbGwvbnQuYywgZGxscy9udGRsbC9ydGwuYywKCSAgZGxscy9zZXR1cGFwaS9pbmZwYXJzZS5jLCBkbGxzL3NldHVwYXBpL3NldHVwYXBpX3ByaXZhdGUuaCwKCSAgaW5jbHVkZS9nZGkuaCwgaW5jbHVkZS9wYWxldHRlLmgsIGluY2x1ZGUvd2luY3J5cHQuaCwKCSAgbG9hZGVyL25lL21vZHVsZS5jLCBkbGxzL2FkdmFwaTMyL2NyeXB0LmMsIGRsbHMvYWR2YXBpMzIvY3J5cHQuaCwKCSAgZGxscy9hZHZhcGkzMi9ldmVudGxvZy5jLCBkbGxzL2FkdmFwaTMyL3JlZ2lzdHJ5LmMsCgkgIGRsbHMvYWR2YXBpMzIvc2VydmljZS5jOgoJRml4ZWQgc29tZSBoYW5kbGUgdHlwZSBtaXNtYXRjaGVzIGFuZCBhZGRlZCBhIGZldyBjYXN0cyBpbiBwcmV2aXNpb24KCW9mIHZvaWQqIGhhbmRsZXMuCgoJKiBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwvY29uc29sZS5jLAoJICBkbGxzL2tlcm5lbC9lZGl0bGluZS5jLCBkbGxzL250ZGxsL01ha2VmaWxlLmluLCB3aW4zMi9jb25zb2xlLmMsCgkgIHdpbjMyL2VkaXRsaW5lLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCU1vdmVkIGFsbCBjbGllbnQtc2lkZSBjb25zb2xlIGNvZGUgdG8ga2VybmVsLgoKCSogZGxscy9rZXJuZWwva2VybmVsX21haW4uYywgc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCU1vdmVkIGluaXRpYWwgQWxsb2NDb25zb2xlIGNhbGwgdG8ga2VybmVsIGluaXQgKGJhc2VkIG9uIGEgcGF0Y2ggYnkKCUVyaWMgUG91ZWNoKS4KCgkqIGZpbGVzL2ZpbGUuYzogRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglNYWRlIHRoZSBjYWxscyB0byAoUmVhZHxXcml0ZSlDb25zb2xlIHRocm91Z2ggYSBmdW5jdGlvbiBwb2ludGVyIHRvCgllYXNlIHVwIG50ZGxsL2tlcm5lbCBzZXBhcmF0aW9uLgoKCSogZGxscy9rZXJuZWwva2VybmVsX21haW4uYywgZGxscy9udGRsbC9udGRsbC5zcGVjLAoJICBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmMsIGRsbHMvbnRkbGwvc2lnbmFsX3NwYXJjLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIGEgZ2VuZXJpYyBtZWNoYW5pc20gdG8gc2V0IHVwIGhvb2tzIGZvciBkaXNwYXRjaGluZyBzaWduYWwKCWhhbmRsZXJzIG91dHNpZGUgbnRkbGwuCgoJKiBkbGxzL250ZGxsL2hlYXAuYzoKCVdlIGhhdmUgdG8gdXNlIHRoZSBSdGwgdmFyaWFudCBvZiBFbnRlci9MZWF2ZUNyaXRpY2FsU2VjdGlvbiBpbnNpZGUKCW50ZGxsLgoKCSogc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCVJlbW92ZSAuc28gZXh0ZW5zaW9uIGZyb20gbWFpbiBtb2R1bGUgZmlsZSBuYW1lIGFmdGVyIGxvYWRpbmcgaXQgc28KCXRoYXQgR2V0TW9kdWxlRmlsZU5hbWUgcmV0dXJucyB0aGUgcmlnaHQgdGhpbmcuCgoJKiBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwvdGVzdHMvYXRvbS5jLAoJICBkbGxzL2tlcm5lbC90ZXN0cy9hdG9tLnBsOgoJUmV3cm90ZSBhdG9tIHRlc3QgaW4gQy4KCgkqIGZpbGVzL2ZpbGUuYzogUmFmYWVsIEtpdG92ZXIgPGNhZWx1bUBkZWJpYW4ub3JnPgoJQ2hhbmdlZCBkb3NfaGFuZGxlcyB0byBzdG9yZSBkdXBzIG9mIHN0ZGlvL291dC9lcnIgYXMgcGVyIE92ZSBLYWF2ZW4ncwoJc3VnZ2VzdGlvbi4KCgkqIGRsbHMvd2lubW0vd2luZW5hcy9hdWRpby5jOiBOaWNvbGFzIEVzY3VkZXIgPG4uZXNjdWRlckBhbGluZWFuZXQuY29tPgoJU3BlZWQgYW5kIGJ1ZmZlciBpbXByb3ZlbWVudCwgY29kZSBjbGVhbiB1cCwgYW5kIGZpeCBzb21lIGJ1ZwoJb24gY2xvc2UgLyByZXNldCB3YXZlb3V0LgoKCSogc2NoZWR1bGVyL2hhbmRsZS5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYywKCSAgZGxscy91c2VyL2V4dGljb24uYywgZGxscy93aW5lZG9zL21vZHVsZS5jLCBmaWxlcy9kb3NfZnMuYywKCSAgZmlsZXMvZmlsZS5jLCBpbmNsdWRlL2ZpbGUuaCwgaW5jbHVkZS9tb2R1bGUuaCwgaW5jbHVkZS93aW5iYXNlLmgsCgkgIGxvYWRlci9tb2R1bGUuYywgbG9hZGVyL25lL3Jlc291cmNlLmMsIGxvYWRlci9uZS9zZWdtZW50LmMsCgkgIGxvYWRlci9yZXNvdXJjZS5jLCBvYmplY3RzL21ldGFmaWxlLmMsCgkgIGRsbHMvZ2RpL2VuaG1mZHJ2L2VuaG1ldGFmaWxlZHJ2LmgsIGRsbHMvZ2RpL2VuaG1mZHJ2L2luaXQuYywKCSAgZGxscy9nZGkvbWZkcnYvaW5pdC5jLCBkbGxzL2dkaS9tZmRydi9tZXRhZmlsZWRydi5oOgoJRml4ZWQgSEFORExFPC0+SEZJTEUgY29udmVyc2lvbnMsIHNpbmNlIHRoZXkgd2lsbCBiZSBkaWZmZXJlbnQgdHlwZXMKCXdoZW4gaGFuZGxlcyBhcmUgdm9pZCouCgoyMDAyLTA3LTMwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS93aW5lbmFzLy5jdnNpZ25vcmUsCgkgIGRsbHMvd2lubW0vd2luZW5hcy9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS93aW5lbmFzL2F1ZGlvLmMsCgkgIGRsbHMvd2lubW0vd2luZW5hcy9uYXMuYywgZGxscy93aW5tbS93aW5lbmFzL25hcy5oLAoJICBkbGxzL3dpbm1tL3dpbmVuYXMvd2luZW5hcy5kcnYuc3BlYywgaW5jbHVkZS9jb25maWcuaC5pbiwgY29uZmlndXJlLAoJICBjb25maWd1cmUuYWM6CglNZXJnZWQgdGhlIE5BUyBkcml2ZXIgd3JpdHRlbiBieSBOaWNvbGFzCglFc2N1ZGVyIDxuLmVzY3VkZXJAYWxpbmVhbmV0LmNvbT4uCgoJKiBkZWJ1Z2dlci9icmVhay5jLCBkZWJ1Z2dlci9kYmcueSwgZGVidWdnZXIvZGVidWdnZXIuaCwKCSAgZGVidWdnZXIvaW50dmFyLmgsIGRlYnVnZ2VyL3N0YWJzLmMsIGRlYnVnZ2VyL3dpbmVkYmcuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgYWJpbGl0eSB0byBkZWZlciBicmVha3BvaW50IHNldHRpbmcgZm9yIGJyZWFrcG9pbnQgZGVmaW5lZCBieSBhbgoJYWJzb2x1dGUgYWRkcmVzcy4KCgkqIGRlYnVnZ2VyL3dpbmVkYmcuYzogRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCByZWdyZXNzaW9uIG9uIGludGVybmFsIHZhcnMuCgoyMDAyLTA3LTI5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbG9hZGVyL3BlX2ltYWdlLmMsIG1lbW9yeS92aXJ0dWFsLmM6CglTZXQgdGhlIGNvcnJlY3QgcGVybWlzc2lvbnMgb24gdGhlIFBFIGltYWdlIHNlY3Rpb25zLgoKCSogaW5jbHVkZS93aW5lL3BvcnQuaCwgbGlicmFyeS9wb3J0LmMsIHNlcnZlci9maWxlLmMsIHRvb2xzL3dwcC93cHAuYywKCSAgY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRlYnVnZ2VyL2dkYnByb3h5LmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYywgaW5jbHVkZS9jb25maWcuaC5pbjoKCU1hcmN1cyBNZWlzc25lciA8bWVpc3NuZXJAc3VzZS5kZT4KCUNoZWNrIGZvciBta3N0ZW1wLCBhZGRlZCBhIHBvcnQgaW1wbGVtZW50YXRpb24gaWYgaXQgaXMgbm90CglwcmVzZW50LiBVc2UgbWtzdGVtcCgpIGluIHZhcmlvdXMgcGxhY2VzIG5lZWRpbmcgdG1wIGZpbGVzLgoKCSogZGxscy93aW5lZG9zL3ZnYS5oLCBkbGxzL3dpbm1tL3dpbmVhcnRzL2F1ZGlvLmMsIHdpbjMyL2NvbnNvbGUuYywKCSAgZGxscy93aW5lZG9zL2ludDEwLmMsIGRsbHMvd2luZWRvcy92Z2EuYzoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkBhbHVtLndwaS5lZHU+CglTb21lIGRvcyBWR0EgZXJyb3IgaGFuZGxpbmcuICBNaXNjIFRSQUNFIGNoYW5nZXMuCgoJKiBkZWJ1Z2dlci9kYmcueSwgZGVidWdnZXIvZGVidWcubCwgZGVidWdnZXIvZGVidWdnZXIuaCwKCSAgZGVidWdnZXIvd2luZWRiZy5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBzb3VyY2UgY29tbWFuZC4KCgkqIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL2lmcy5jLCBkbGxzL29sZTMyL2lmcy5oLAoJICBkbGxzL29sZTMyL29sZTMyLnNwZWMsIGRsbHMvb2xlMzIvb2xlMzJfbWFpbi5jLAoJICBpbmNsdWRlL3dpbmUvb2JqX21pc2MuaDoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbnNjaG1pZWRAbHljb3MuZGU+CgktIEltcGxlbWVudGVkIElNYWxsb2NTcHkgaG9va3MgaW4gSU1hbGxvYy4KCS0gTW92ZWQgbWVtb3J5IHJlbGF0ZWQgZnVuY3Rpb25zIGludG8gaWZzLmMuCgktIEltcGxlbWVudGVkIHN0dWJzIGZvciB0aGUgTWFsbG9jU3B5LgoKCSogZGxscy93aW5tbS9tbXN5c3RlbS5jOiBHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCUZpeGVkIGZvcm1hdCBzdHJpbmcuCgoJKiBkbGxzL3dpbmVkb3MvaW9wb3J0cy5jOiBKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglWR0EgZW11bGF0aW9uIG5vdyBzdXBwb3J0cyBvdXR3IGFuZCBvdXRsLgoKCSogZGxscy93aW5lZG9zL3ZnYS5jOiBKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglBZGQgVkdBIGNvbnRyb2xsZXIgZnJhbWVidWZmZXIgYmV0d2VlbiBWR0Egd2luZG93IGFuZAoJRGlyZWN0RHJhd1N1cmZhY2UuCgoJKiBkbGxzL3NoZWxsMzIvY2xhc3Nlcy5jOiBTdGV2ZW4gRWR3YXJkcyA8c3RldmVuX2VkNDE1M0B5YWhvby5jb20+CglQb3J0YWJpbGl0eSBmaXguCgoJKiBNYWtlLnJ1bGVzLmluLCBkbGxzL01ha2VkbGwucnVsZXMuaW4sIHByb2dyYW1zL01ha2Vwcm9nLnJ1bGVzLmluOgoJU3RldmVuIEVkd2FyZHMgPHN0ZXZlbl9lZDQxNTNAeWFob28uY29tPgoJRml4IGJ1aWxkaW5nL2xpbmtpbmcgcmVzb3VyY2VzIG9uIE1pbmd3LgoKCSogZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLAoJICBkbGxzL3NoZWxsMzIvc2hsdmlldy5jLCBkbGxzL2NvbWN0bDMyL2NvbWN0bDMyLnNwZWMsCgkgIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYzoKCUltcG9ydCBjb21jdGwzMiBmdW5jdGlvbnMgZnJvbSBzaGVsbDMyIGJ5IG9yZGluYWwuCglSZW1vdmVkIHNvbWUgdW5uZWNlc3Nhcnkgb3JkaW5hbHMgaW4gY29tY3RsMzIuc3BlYy4KCgkqIHRvb2xzL3dwcC93cHAuYzogTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5kZT4KCUluY2x1ZGUgPHN0ZGxpYi5oPiBuZWVkZWQgYnkgZXhpdCgpLgoKCSogZGxscy9vbGUzMi9kYXRhY2FjaGUuYywgZGxscy9vbGVhdXQzMi9vbGVwaWN0dXJlLmMsIGluY2x1ZGUvd2luZGVmLmg6CglNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmRlPgoJQ29udmVydGVkIEhFTkhNRVRBRklMRSBhbmQgSE1FVEFGSUxFIHRvIGEgdm9pZCouCgoyMDAyLTA3LTI4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy93aW5tbS93aW5lbW0uaCwgaW5jbHVkZS93aW5kZWYuaCwgbG9hZGVyL3Rhc2suYywKCSAgZGxscy91c2VyL21pc2MuYywgZGxscy93aW5tbS9tY2kuYywgZGxscy93aW5tbS9tbXN5c3RlbS5jOgoJQ29udmVydCBIVEFTSyB0byB2b2lkKiAoYmFzZWQgb24gYSBwYXRjaCBieSBNaWNoYWVsIFN0ZWZhbml1YykuCgoJKiB0b29scy93aW5lYnVpbGQvLmN2c2lnbm9yZSwgdG9vbHMvd2luZWJ1aWxkL01ha2VmaWxlLmluLAoJICB0b29scy93aW5lYnVpbGQvUkVBRE1FLCB0b29scy93aW5lYnVpbGQvd2luZWJ1aWxkLm1hbi5pbjoKCUFkZGVkIGEgd2luZWJ1aWxkIG1hbiBwYWdlLgoKCSogbGlicmFyeS9sb2FkZXIuYywgdG9vbHMvd2luZWJ1aWxkL2J1aWxkLmgsIHRvb2xzL3dpbmVidWlsZC9pbXBvcnQuYywKCSAgdG9vbHMvd2luZWJ1aWxkL3BhcnNlci5jLCB0b29scy93aW5lYnVpbGQvc3BlYzMyLmM6CglBZGRlZCBzdXBwb3J0IGZvciBpbXBvcnRpbmcgYnkgb3JkaW5hbC4KCgkqIHRvb2xzL3dpbmVidWlsZC9tYWluLmM6CglTZXQgY29ycmVjdCBkbGwgZmlsZSBuYW1lIHdoZW4gYnVpbGRpbmcgYSAuZGVmIGZpbGUuCgoJKiBkbGxzL21zdmNydC9kYXRhLmM6IEZpeGVkIHBvdGVudGlhbCBtZW1vcnkgY29ycnVwdGlvbi4KCgkqIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy9udGRsbC9ydGwuYzoKCVJ5YW4gQ3VtbWluZyA8cnlhbkBjb21wbGV0ZWx5LmtpY2tzLWFzcy5vcmc+CglJbXBsZW1lbnRhdGlvbiBvZiBSdGxHZXROdFZlcnNpb25OdW1iZXJzLgoKCSogZGxscy9udGRsbC9jZHJvbS5jOiBSYWZhZWwgS2l0b3ZlciA8Y2FlbHVtQGRlYmlhbi5vcmc+CglNaW5vciBmaXggZm9yIGlkZS1zY3NpIGNkcm9tcy4KCgkqIGRsbHMvd2luZWRvcy92Z2EuYzogSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJQWRkIGRlY29kaW5nIGxvZ2ljIGZvciBWR0EgaW5kZXhlZCByZWdpc3RlcnMuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwuYywgaW5jbHVkZS93aW5kZWYuaCwgd2luZG93cy9ob29rLmM6CglNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmRlPgoJLSBDb252ZXJ0ZWQgSEhPT0sgdG8gYSB2b2lkKi4KCS0gQ2hhbmdlZCB0aGUgaW50ZXJuYWwgSE9PS18qIGZ1bmN0aW9ucyB0byBwYXNzIG9ubHkgSEhPT0sncyBiZXR3ZWVuCgkgIHRoZW0uCgktIEZpeGVkIHdyb25nIEhIT09LIDwtPiBIQU5ETEUxNiBjb252ZXJzaW9ucy4KCjIwMDItMDctMjYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL3BhaW50aW5nLmM6CglSRFdfRlJBTUUgc2hvdWxkIGJlIFJEV19OT0ZSQU1FIHdoZW4gdmFsaWRhdGluZyAoc3BvdHRlZCBieSBEdWFuZQoJQ2xhcmspLgoKMjAwMi0wNy0yNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHRvb2xzL3dpZGwvcGFyc2VyLmw6IEdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJI2luY2x1ZGUgPHVuaXN0ZC5oPiB3aGljaCBpcyByZXF1aXJlZCBmb3IgdW5saW5rKCkuCgoJKiBtZW1vcnkvZ2xvYmFsLmM6IEJhbmcgSnVuLVlvdW5nIDxqdW55b3VuZ0Btb2d1YS5jb20+CglNYWtlIGNvbXBpbGUgb24gTmV0QlNELgoKCSogZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvY29tcG9iai5zcGVjOgoJTWFyY3VzIE1laXNzbmVyIDxtZWlzc25lckBzdXNlLmRlPgoJRmFjdG9yZWQgb3V0IHRoZSBPTEUgMTYgYml0IGFsbG9jYXRvciBmcm9tIFN0cmluZ0Zyb21DTFNJRC4KCUltcGxlbWVudGVkIFByb2dJREZyb21DTFNJRDE2LgoKCSogdG9vbHMvd2luZW1ha2VyOiBBbmRyaXkgUGFsYW1hcmNodWsgPGFwYTNhQHlhaG9vLmNvbT4KCXdpbmVidWlsZCBzZWFyY2hlcyBsaWJyYXJpZXMgc3BlY2lmaWVkIGluIC1sIHBhcmFtZXRlciBvbmx5IGluIHRoZQoJbGlicmFyeSBkaXJlY3RvcmllcyBzcGVjaWZpZWQgYmVmb3JlIGluIHRoZSAtTCBwYXJhbWV0ZXIsIGJ1dAoJd2luZW1ha2VyIGFkZGVkIC1MIHBhcmFtZXRlciBhZnRlciAtbC4KCgkqIHRvb2xzL3dpbmVidWlsZC9pbXBvcnQuYywgdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jOgoJUHV0IGNvcnJlY3Qgb3JkaW5hbCBoaW50cyBpbiB0aGUgaW1wb3J0IHRhYmxlLgoKCSogZGxscy9rZXJuZWwvc3luYy5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJRmlsbCBscGNiQXZhaWwgZm9yIFBlZWtOYW1lZFBpcGUuCgoJKiBkbGxzL3NoZWxsMzIvc2hsZXhlYy5jOiBEdWFuZSBDbGFyayA8ZGNsYXJrQGFrYW1haWwuY29tPgoJQnVnIGZpeGVzLgoKMjAwMi0wNy0yNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvZHNvdW5kL2Rzb3VuZC5zcGVjOiBSZW1vdmVkIG9yZGluYWwgMC4KCgkqIGRsbHMvbnRkbGwvbG9hZGVyLmMsIGluY2x1ZGUvbW9kdWxlLmgsIGxvYWRlci9lbGYuYywgbG9hZGVyL21vZHVsZS5jLAoJICBsb2FkZXIvcGVfaW1hZ2UuYzoKCUFkZGVkIHN1cHBvcnQgZm9yIG9yZGluYWwgaGludCBpbiBQRV9GaW5kRXhwb3J0ZWRGdW5jdGlvbi4KCgkqIGRsbHMvZ2RpL2ZyZWV0eXBlLmMsIGRsbHMvbXNhY20vZHJpdmVyLmMsIGRsbHMvc2hsd2FwaS91cmwuYywKCSAgd2luZG93cy93aW4uYywgd2luZG93cy93aW5wcm9jLmM6CglBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CglNaXNjIHNwZWxsaW5nIGZpeGVzLgoKCSogZG9jdW1lbnRhdGlvbi93aW5lbGliLW1mYy5zZ21sOiBBbmRyaXkgUGFsYW1hcmNodWsgPGFwYTNhQHlhaG9vLmNvbT4KCVVwZGF0ZWQgTUZDIGxlZ2FsIGlzc3VlcyBzZWN0aW9uIGFjY29yZGluZyB0byB0aGUgbmV3IGxpY2Vuc2UsIHNvbWUKCW90aGVyIGNoYW5nZXMuCgoJKiBwcm9ncmFtcy93Y21kL3djbWRtYWluLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglXQ01EX3J1bl9wcm9ncmFtOiBkb24ndCB0cnkgdG8gcnVuIGFuIGVtcHR5IGxpbmUuCgoJKiBwcm9ncmFtcy93Y21kL2J1aWx0aW5zLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglNb3JlIHZlcmJvc2Ugb3V0cHV0IHdoZW4gZmlsZSBub3QgZm91bmQuCgoJKiBwcm9ncmFtcy93Y21kL2JhdGNoLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglXQ01EX2JhdGNoOiBpbmNyZWFzZSBwb3NzaWJsZSBsaW5lIGxlbmd0aCBhbmQgd2FybiBpZiBzdGlsbCB0b28gc21hbGwuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgZGxscy9zaGVsbDMyL3NobGV4ZWMuYzoKCUR1YW5lIENsYXJrIDxkY2xhcmtAYWthbWFpbC5jb20+CglDb21iaW5lZCBpbXBsZW1lbnRhdGlvbnMgb2YgU2hlbGxFeGVjdXRlL0V4LgoKCSogZGxscy9zaGx3YXBpL3BhdGguYzogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCVBhdGhBcHBlbmRBL1c6IERvbid0IHNraXAgJ1xcJyBpZiBwYXRoIGlzIFVOQy4KCVBhdGhHZXRDaGFyVHlwZUEvVzogJy8nIGlzIGludmFsaWQsIG1ha2Ugbm9uLUFTQ0lJIGNvbXBhdGlibGUgdG9vLgoJSW1wbGVtZW50IFBhdGhDb21wYWN0UGF0aEV4QS9XLgoJVXBkYXRlIGRvY3MsIHJlbW92ZSBzaWduZWQvdW5zaWduZWQgd2FybmluZ3Mgd2l0aCAtVy4KCgkqIGRsbHMvbXN2Y3J0L01ha2VmaWxlLmluLCBkbGxzL21zdmNydC9jcHBleGNlcHQuYywKCSAgZGxscy9tc3ZjcnQvZXhjZXB0LmMsIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjOgoJRmlyc3QgcGFzcyBpbXBsZW1lbnRhdGlvbiBvZiBDeHhGcmFtZUhhbmRsZXIgKHRoYW5rcyB0byBKdWVyZ2VuCglTY2htaWVkIGZvciBoZWxwIGluIHRlc3RpbmcgaXQpLgoKCSogZG9jdW1lbnRhdGlvbi9wcmludGluZy5zZ21sLCBkb2N1bWVudGF0aW9uL3JlZ2lzdHJ5LnNnbWwsCgkgIGRvY3VtZW50YXRpb24vcnVubmluZy5zZ21sLCBkb2N1bWVudGF0aW9uL3dpbmVsaWItcG9ydGluZy5zZ21sLAoJICBkb2N1bWVudGF0aW9uL2F1dGhvcnMuZW50LCBkb2N1bWVudGF0aW9uL2J1Z3Muc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9jb25maWd1cmluZy5zZ21sLCBkb2N1bWVudGF0aW9uL2NvbnNvbGVzLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vZGVidWdnaW5nLnNnbWwsIGRvY3VtZW50YXRpb24vZm9udHMuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9nZXR0aW5nLnNnbWwsIGRvY3VtZW50YXRpb24vaW5zdGFsbGluZy5zZ21sLAoJICBkb2N1bWVudGF0aW9uL2ludHJvZHVjdGlvbi5zZ21sLCBkb2N1bWVudGF0aW9uL211bHRpbWVkaWEuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9wYWNrYWdpbmcuc2dtbDoKCUFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCS0gTW92ZSAicXVlc3Rpb25zIGFuZCBjb21tZW50cyIgYXQgdGhlIHRvcCBvZiB0aGUgZG9jdW1lbnQuCgktIFJlbW92ZWQgZWxmZGxsIGRvY3VtZW50YXRpb24uCgktIFByb3Blcmx5IGRvY3VtZW50ZWQgRGVza3RvcCBhbmQgTWFuYWdlZCBjb25maWcuCgktIFJlYXJyYW5nZWQgY29uZmlnIGVudHJpZXMgYWNjb3JkaW5nIHRvIGltcG9ydGFuY2UuCgktICJ3aW5lLmNvbmYiIC0+ICJ0aGUgd2luZSBjb25maWcgZmlsZSIgaW4gc29tZSBjYXNlcy4KCS0gVXBkYXRlZCB0byBuZXcgRlRQIFVSTHMuCgktIEZpeCBub24tYmFja3NsYXNoLWVzY2FwZWQgcGF0aHMgKG91Y2ggISkuCgktIFJlcGxhY2UgdGV4dCByZWZlcmVuY2VzIGJ5IHJlYWwgbGlua3MuCgktIE1pc2MuIG90aGVyIHVwZGF0ZXMuCgoJKiBvYmplY3RzL2ZvbnQuYzogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCVByb3Blcmx5IGNoZWNrIHRoYXQgdGhlIGZvbnQgcmVzb3VyY2UgaXMgbm90IGFscmVhZHkgdGhlcmUuCgoJKiBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL3NobGd1aWQuaCwgaW5jbHVkZS9zaGx3YXBpLmgsCgkgIGluY2x1ZGUvd2luZS9vYmpfcXVlcnlhc3NvY2lhdGlvbnMuaCwgb2xlL3V1aWQuYzoKCUZpeGVkIGR1cGxpY2F0aW9uIG9mIGRlZmluaXRpb25zIGJldHdlZW4gc2hsd2FwaS5oIGFuZAoJb2JqX3F1ZXJ5YXNzb2NpYXRpb25zLmguCgoJKiBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW4sIGRsbHMvc2hlbGwzMi9icnNmb2xkZXIuYywKCSAgZGxscy9zaGVsbDMyL2NsYXNzZXMuYywgZGxscy9zaGVsbDMyL2RhdGFvYmplY3QuYywKCSAgZGxscy9zaGVsbDMyL2RlYnVnaGxwLmMsIGRsbHMvc2hlbGwzMi9lbnVtaWRsaXN0LmMsCgkgIGRsbHMvc2hlbGwzMi9mb2xkZXJzLmMsIGRsbHMvc2hlbGwzMi9tZW1vcnlzdHJlYW0uYywKCSAgZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsb2xlLmMsIGRsbHMvc2hlbGwzMi9zaGVsbHN0cmluZy5jLAoJICBkbGxzL3NoZWxsMzIvc2hmbGRyLmgsIGRsbHMvc2hlbGwzMi9zaGZsZHJfZGVza3RvcC5jLAoJICBkbGxzL3NoZWxsMzIvc2hmbGRyX2ZzLmMsIGRsbHMvc2hlbGwzMi9zaGZsZHJfbXljb21wLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYywgZGxscy9zaGVsbDMyL3NobHZpZXcuYywKCSAgZGxscy9zaGVsbDMyL3Nodl9iZ19jbWVudS5jLCBkbGxzL3NoZWxsMzIvc2h2X2l0ZW1fY21lbnUuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbnNjaG1pZWRAbHljb3MuZGU+CgktIENsZWFuZWQgdXAgdGhlIGltcGxlbWVudGF0aW9uIG9mIHNoZWxsIGZvbGRlcnMgYW5kIHB1dCB0aGVtIGludG8KCSAgc2VwYXJhdGUgZmlsZXMuCgktIEZpeGVkIHNvbWUgbWVtb3J5IGxlYWtzLgoJLSBTb21lIG1vcmUgZml4ZXMuCgoyMDAyLTA3LTIzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCUZpeGVkIGhhbmRsaW5nIG9mIC5jb20gYmluYXJpZXMgKHRoYW5rcyB0byBDaHJpcyBNb3JnYW4pLgoKCSogZGxscy9tc3ZjcnQvZGF0YS5jLCBkbGxzL21zdmNydC9lbnZpcm9uLmMsIGRsbHMvbXN2Y3J0L21zdmNydC5oOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJVGFrZSBhIHNuYXBzaG90IG9mIHRoZSBlbnZpcm9ubWVudCBzdHJpbmdzIHdoZW4gYnVpbGRpbmcgdGhlCglfX3BfX2Vudmlyb24gYXJyYXkgYW5kIHVwZGF0ZSB0aGUgYXJyYXkgb24gY2FsbHMgdG8gX3B1dGVudi4KCgkqIGRsbHMvbXN2Y3J0L3N0cmluZy5jOiBSZW1vdmVkIG5vbi1leHBvcnRlZCBzdHJpbmcgZnVuY3Rpb25zLgoKCSogZG9jdW1lbnRhdGlvbi93aW5lbGliLWludHJvLnNnbWw6CglBbmRyaXkgUGFsYW1hcmNodWsgPGFwYTNhQHlhaG9vLmNvbT4KCUFkZGVkIG1lbnRpb24gb2YgYSBkb3QgaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5IHNwZWNpZmljYXRpb24uIEFkZGVkCglyZWZlcmVuY2UgdG8gdGhlIHdpbmVtYWtlciBtYW4gcGFnZS4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gSW1wbGVtZW50IExWTV9TQ1JPTEwgYW5kIGFkanVzdCBzY3JvbGxpbmcgZm9yIGFsbCBmb3JtYXRzLgoJLSBJbXBsZW1lbnQgc3RhbmRhcmQgQ29tY3RsMzIgY29sb3IgaGFuZGxpbmcuCgktIEVsaW1pbmF0ZSBib2d1cyBFUlIgbWVzc2FnZXMgZm9yIGFwcGxpY2F0aW9uIG1lc3NhZ2VzLgoKCSogd2luMzIvY29uc29sZS5jLCB3aW4zMi9lZGl0bGluZS5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglNdWx0aS1saW5lIGVkaXQgaXMgbm93IGVuYWJsZWQuCglGaXhlZCBhIGJ1ZmZlciBhbGxvY2F0aW9uIGVycm9yLgoJWWFuayBidWZmZXIgaXMgbm8gbG9uZ2VyIGRlc3Ryb3llZCBhZnRlciB0aGUgZmlyc3QgY29weS4KCUltcGxlbWVudGVkIHRoZSB0cmFuc3Bvc2Ugd29yZCAoYWx0LXQpIGFuZCByZWRyYXcgKGN0cmwtbCkKCWVtYWNzLWNvbW1hbmRzLgoKCSogZGVidWdnZXIvZGJnLnksIGRlYnVnZ2VyL2RlYnVnZ2VyLmgsIGRlYnVnZ2VyL2hhc2guYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgb2Zmc2V0IGZvciByZWxvY2F0aW5nIHN5bWJvbHMgaW4gc3ltYm9sZmlsZSBjb21tYW5kLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYywgZGxscy9jcnRkbGwvY3J0ZGxsLnNwZWMsCgkgIGRsbHMvY3J0ZGxsL2NydGRsbF9tYWluLmMsIGRsbHMvbXN2Y3J0MjAvbXN2Y3J0MjAuc3BlYzoKCUZpeGVkIGJyb2tlbiBmb3J3YXJkcyByZXBvcnRlZCBieSBQYXRyaWsgU3RyaWR2YWxsLgoKCSogcHJvZ3JhbXMvd2luZWNvbnNvbGUvZGlhbG9nLmMsIHByb2dyYW1zL3dpbmVjb25zb2xlL3JlZ2lzdHJ5LmMsCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL3VzZXIuYzoKCUFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCS0gRml4IHNvbWUgc3BlbGxpbmcgcHJvYmxlbXMuCgktIE1vdmUgV0NVU0VSX1NldE1lbnVEZXRhaWxzIHRvIG90aGVyIG1lbnUgcmVsYXRlZCBmdW5jdGlvbnMuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYzogR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglJbmNsdWRlIHN5cy90eXBlcy5oIGJlZm9yZSBzeXMvc29ja2V0LmguCgoJKiB3aW5lZGVmYXVsdC5yZWc6IEFuZHJpeSBQYWxhbWFyY2h1ayA8YXBhM2FAeWFob28uY29tPgoJQWRkZWQgT0xFL0NPTSBjbGFzc2VzIHJlZ2lzdGVyZWQgYnkgT0xFQVVUMzIuRExMLgoKCSogZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgaXNzdWVzIGZvdW5kIGJ5IHdpbmFwaV9jaGVjay4KCgkqIHRvb2xzL3dpbmFwaS93aW4xNi5hcGksIHRvb2xzL3dpbmFwaS93aW4zMi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2NoZWNrLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2RvY3VtZW50YXRpb24ucG06CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gUmVwb3J0IGJyb2tlbiBmb3J3YXJkcy4KCS0gQVBJIGZpbGVzIHVwZGF0ZS4KCjIwMDItMDctMjIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2RpbnB1dC9qb3lzdGljay9saW51eC5jLCBkbGxzL2RpbnB1dC9qb3lzdGljay9saW51eGlucHV0LmMsCgkgIGRsbHMvZGlucHV0L2tleWJvYXJkL21haW4uYywgZGxscy9kaW5wdXQvbW91c2UvbWFpbi5jOgoJQWRkZWQgbWlzc2luZyB3aW5lL3BvcnQuaC4KCgkqIGluY2x1ZGUvd2luZS9wb3J0LmgsIGFjbG9jYWwubTQsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLAoJICBkbGxzL250ZGxsL2RlYnVndG9vbHMuYywgaW5jbHVkZS9jb25maWcuaC5pbiwgaW5jbHVkZS93aW5udC5oOgoJR2VuZXJhdGUgdGhlIF9fQVNNX05BTUUgYW5kIF9fQVNNX0ZVTkMgbWFjcm9zIGRpcmVjdGx5IGZyb20KCWNvbmZpZ3VyZS4KCVNpbXBsaWZpZWQgdGhlIFdJTkVfVFJZX0FTTV9MSU5LIHRlc3QuCglNb3ZlZCBERUNMX0dMT0JBTF9DT05TVFJVQ1RPUiB0byB3aW5lL3BvcnQuaC4KCgkqIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYywgcmVsYXkzMi9zbm9vcC5jLCBzY2hlZHVsZXIvcHRocmVhZC5jLAoJICB0b29scy93aW5lYnVpbGQvYnVpbGQuaCwgdG9vbHMvd2luZWJ1aWxkL2ltcG9ydC5jLAoJICB0b29scy93aW5lYnVpbGQvcmVsYXkuYywgdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jLCB0b29scy93cmMvd3JjLmMsCgkgIHRvb2xzL3dyYy93cml0ZXJlcy5jOgoJUmVwbGFjZSBhbGwgdXNlcyBvZiBQUkVGSVggYW5kIEBmdW5jdGlvbiBieSB0aGUgX19BU01fTkFNRSBhbmQKCV9fQVNNX0ZVTkMgbWFjcm9zLgoKCSogZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYzogTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5jb20+CglJbWFnZUxpc3RfUmVtb3ZlIHJldHVybnMgVFJVRSB3aGVuIHJlbW92aW5nIGFsbCBpbWFnZXMgb2YgYW4gZW1wdHkKCUltYWdlTGlzdC4KCgkqIGRlYnVnZ2VyL3N0YWJzLmM6IEJpbGwgTWVkbGFuZCA8bWVkYmkwMUBhY2NwYWMuY29tPgoJLSBEb2N1bWVudCB3aGVyZSB0aGUgc3RhYnMgaW5mb3JtYXRpb24gY2FuIGJlIGZvdW5kLCBzbyB0aGF0IHNvbWVvbmUKCSAgY2FuIGhlbHAgdXBncmFkZSB0aGlzIGNvZGUuCgktIEEgY291cGxlIG9mIG1pbm9yIGVuaGFuY2VtZW50cyB0b3dhcmRzIGhhbmRsaW5nIEMrKy4KCS0gRG9uJ3QgYm90aGVyIHRyeWluZyB0byBsb2FkIGxpYnN0ZGMrKywgcmF0aGVyIHRoYW4gZ2VuZXJhdGluZyBhbgoJICBlbm9ybW91cyBudW1iZXIgb2YgImVycm9ycyIuCgoJKiB0b29scy93aW5hcGkvd2luYXBpLnBtLCB0b29scy93aW5hcGkvd2luYXBpX2V4dHJhY3QsCgkgIHRvb2xzL3dpbmFwaS93aW5hcGlfZXh0cmFjdF9vcHRpb25zLnBtOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglIYW5kbGUgZm9yd2FyZGVkIGZ1bmN0aW9ucyBwcm9wZXJseSAoYmFzZWQgb24gYSBwYXRjaCBieSBGcmFuY29pcwoJR291Z2V0KS4KCgkqIGRsbHMvZGRyYXcvZGRyYXcvdGh1bmtzLmMsIGluY2x1ZGUvZGRyYXcuaDoKCU1pY2hhZWwgS2FyY2hlciA8bWljaGFlbC5rYXJjaGVyQGRway5iZXJsaW4uZmlkby5kZT4KCVNldCB0aGUgY29ycmVjdCBsZW5ndGggb2YgdGhlIHN0cnVjdCBERFNVUkZBQ0VERVNDLgoKCSogb2JqZWN0cy9mb250LmM6IFNoYWNoYXIgU2hlbWVzaCA8d2luZWNvZGVAc3VuLmNvbnN1bWVyLm9yZy5pbD4KCU5vdyBjaGVja3MgdGhhdCB0aGUgR0NQX1JFT1JERVIgZmxhZyBpcyBzZXQgYmVmb3JlIHRyeWluZyB0byBhY2Nlc3MKCWFueSBvZiB0aGUgZmllbGRzIHRoYXQgZGVwZW5kIG9uIHRoaXMgZmxhZy4KCgkqIHNjaGVkdWxlci9wcm9jZXNzLmM6IEZpeGVkIC5jb20gYmluYXJ5IHN1cHBvcnQuCgoJKiBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYywgZGxscy93aW5pbmV0L3dpbmluZXQuc3BlYzoKCVJvZGVyaWNrIENvbGVuYnJhbmRlciA8dGh1bmRlcmJpcmQya0BnbXgubmV0PgoJU2ltcGxlIGltcGxlbWVudGF0aW9uIG9mIEludGVybmV0QXV0b2RpYWwuCgoJKiBkZWJ1Z2dlci9NYWtlZmlsZS5pbjogRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglSZW1vdmVkIHVubmVjZXNzYXJ5IGZsYWcuCgoJKiBkZWJ1Z2dlci9kZWJ1Zy5sLCBkZWJ1Z2dlci9kZWJ1Z2dlci5oLCBkZWJ1Z2dlci9oYXNoLmMsCgkgIGRlYnVnZ2VyL3NvdXJjZS5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCB2ZXJ5IGxvbmcgbGluZSByZWFkaW5nIChhbmQgc29tZSBidWZmZXJpbmcgYnVncykuCglSZW1vdmVkIHRoZSBzdGF0aWMgbGltaXQgaW4gYXJyYXkgZm9yIHN5bWJvbHMgcGFyc2luZy4KCgkqIGRsbHMvc2hsd2FwaS9NYWtlZmlsZS5pbiwgZGxscy9zaGx3YXBpL29yZGluYWwuYywKCSAgZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYywgZGxscy9zaGx3YXBpL3RocmVhZC5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCU1vdmUgdGhyZWFkIHJlbGF0ZWQgZnVuY3Rpb25zIHRvIG5ldyBmaWxlLgoJSW1wbGVtZW50IFNIQ3JlYXRlVGhyZWFkLEAyMjQsQDQyNCwgc3R1YiBTSFJlbGVhc2VUaHJlYWRSZWYuCglGaXg6IFNIR2V0VGhyZWFkUmVmKCkgY2FsbHMgQWRkUmVmKCksIEAzNTYgcGFyYW0gY291bnQgd3JvbmcuCgoJKiBpbmNsdWRlL3NobHdhcGkuaDogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUFkZCBzb21lIG5ldyBkZWZpbmVzIGFuZCBmdW5jdGlvbnMuCgoyMDAyLTA3LTIwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9tc3ZjcnQvbXN2Y3J0LmgsIGRsbHMvbXN2Y3J0L3RocmVhZC5jOgoJQWRkZWQgZGVmaW5pdGlvbiBvZiBtc3ZjcnQgaW50ZXJuYWwgZXJyb3IgY29kZXMuCgoJKiBkZWJ1Z2dlci9NYWtlZmlsZS5pbiwgZGVidWdnZXIvZ2RicHJveHkuYywgZGVidWdnZXIvc3RhYnMuYywKCSAgZGVidWdnZXIvd2luZWRiZy5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBhIHJlbW90ZSBwcm94eSBmb3IgZ2RiLgoKCSogTWFrZS5ydWxlcy5pbjoKCUZpeGVkIGxpbmtpbmcgcnVsZSBmb3IgdGVzdCBwcm9ncmFtcyAoc3BvdHRlZCBieSBHcmVnZyBNYXR0aW5zb24pLgoKCSogZGVidWdnZXIvYnJlYWsuYywgZGVidWdnZXIvZGJnLnksIGRlYnVnZ2VyL2RlYnVnZ2VyLmgsCgkgIGRlYnVnZ2VyL2hhc2guYywgZGVidWdnZXIvc291cmNlLmMsIGRlYnVnZ2VyL3dpbmVkYmcuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJSW52ZXJ0ZWQgaW5uZXIgbG9vcHMgKFdpbjMyIGRlYnVnIGV2ZW50IGhhbmRsaW5nIC8gV2luZURiZyBjb21tYW5kCglsaW5lIHBhcnNlcikuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgaW5jbHVkZS9jb25maWcuaC5pbiwgaW5jbHVkZS93aW5lL3BvcnQuaDoKCUdyZWdnIE1hdHRpbnNvbiA8Z20xMzgyNDJAc2NvdC5jYW5hZGEuc3VuLmNvbT4KCUFkZGVkIGNoZWNrcyBmb3IgX19zcGFyY19fLCBfX3N1bl9fIGFuZCBAZnVuY3Rpb24uCgoJKiBhY2xvY2FsLm00OiBGaXhlZCBxdW90aW5nIGluIFdJTkVfVFJZX0FTTV9MSU5LIG1hY3JvLgoKCSogb2JqZWN0cy9kYy5jOiBBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CglDcmVhdGVEQ0Egc2hvdWxkIHJldHVybiBmYWlsdXJlIGlmIGJvdGggZHJpdmVyIGFuZCBkZXZpY2UgYXJlIE5VTEwuCgoJKiB3aW5kb3dzL3NweS5jOiBBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CgktIEFkZCBtZXNzYWdlIG1hcHBpbmcgZm9yIHRvb2x0aXBzLgoJLSBVc2UgREVCVUdfU1BZIGRlZmluZSBpbnN0ZWFkIG9mIGNvbW1lbnRpbmcgb3V0IFRSQUNFcy4KCgkqIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvYWR2YXBpMzIucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvYXZpZmlsMzIucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvY29tY2F0LnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL2RpbnB1dDgucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvZ2RpMzIucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvaW1tMzIucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUva2VybmVsMzIucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvbnRkbGwucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvb2xlMzIucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvb2xlYXV0MzIucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvcnBjcnQ0LnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL3NldHVwYXBpLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL3NoZG9jdncucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvc2hlbGwzMi5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS9zaGx3YXBpLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL3N0aS5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS91c2VyMzIucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvd2luZWRvcy5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS93aW5pbmV0LnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL3dpbm1tLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL3dzMl8zMi5wbToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJVXBkYXRlZCB3aW5ldGVzdCBQZXJsIG1vZHVsZXMgdXNpbmcgd2luYXBpX2V4dHJhY3QuCgoJKiB0b29scy93aW5hcGkvd2luYXBpLnBtLCB0b29scy93aW5hcGkvd2luYXBpX2V4dHJhY3Q6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHdpbmFwaV9leHRyYWN0LgoKCSogZGxscy9zaGx3YXBpL29yZGluYWwuYywgZGxscy9zaGx3YXBpL3JlZy5jLAoJICBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjLCBkbGxzL3NobHdhcGkvc3RyaW5nLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW5zY2htaWVkQGx5Y29zLmRlPgoJLSBNYW55IHN0dWJzCgktIFNvbWUgb3JkaW5hbHMsIFNIU3RyRHVwQSBhbmQgU0hTdHJEdXBXIGltcGxlbWVudGVkLgoKCSogZGxscy9hZHZhcGkzMi9hZHZhcGkzMi5zcGVjLCBkbGxzL2FkdmFwaTMyL3JlZ2lzdHJ5LmMsCgkgIGluY2x1ZGUvd2lucmVnLmg6CglEb21pbmlrIFN0cmFzc2VyIDxkb21pbmlrLnN0cmFzc2VyQG1jaHAuc2llbWVucy5kZT4KCUltcGxlbWVudGVkIFJlZ1F1ZXJ5TXVsdGlwbGVWYWx1ZXMuCgoJKiBkbGxzL2RkcmF3L2RzdXJmYWNlL3VzZXIuYywgZGxscy9kZHJhdy9kc3VyZmFjZS91c2VyLmg6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCVdhaXQgZm9yIHRoZSBhc3luY2hyb25vdXMgdXBkYXRlIHRocmVhZCB0byBjb21wbGV0ZSBpZiB0aGUgYXBwCglyZXF1ZXN0cyBpdC4gRml4ZWQgYmxpdCBvZmZzZXRpbmcgaXNzdWVzIGluIHdpbmRvd2VkIG1vZGUuCgoJKiB0b29scy93aWRsL01ha2VmaWxlLmluLCB0b29scy93aWRsL3BhcnNlci5sLCB0b29scy93aWRsL3dpZGwuYywKCSAgdG9vbHMvd3JjL01ha2VmaWxlLmluLCB0b29scy93cmMvcGFyc2VyLnksIHRvb2xzL3dyYy93cmMuYzoKCUV4cGxpY2l0bHkgc3BlY2lmeSB0aGUgcGF0aCB0byB3cHAuaCBzbyB3ZSBkb24ndCBuZWVkIHRvIGNoYW5nZSB0aGUKCWluY2x1ZGUgcGF0aCwgdG8gYXZvaWQgY29uZmxpY3RzIHdpdGggbXVsdGlwbGUgeS50YWIuaCBmaWxlcy4KCgkqIGRsbHMvc2V0dXBhcGkvc2V0dXB4MTYuaCwgZGxscy9zZXR1cGFwaS92aXJ0Y29weS5jOgoJQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJSG9ub3VyIHRoZSBWTkxQX0NPUFlJRkVYSVNUUyBmbGFnIHdoZW4gZG9pbmcgYSBjb3B5IG9wZXJhdGlvbi4KCgkqIG1zZG9zL2Rvc21lbS5jOiBBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CglDaGFuZ2UgQklPU0RBVEEncyByb3dzIG9uIHNjcmVlbiBtaW51cyAxIGZyb20gMjMgdG8gMjQuCgoJKiBwcm9ncmFtcy9yZWdzdnIzMi9yZWdzdnIzMi5jOiBCaWxsIE1lZGxhbmQgPG1lZGJpMDFAYWNjcGFjLmNvbT4KCUFsbG93IHJlZ3N2cjMyIHRvIHByb2Nlc3MgbXVsdGlwbGUgZmlsZW5hbWVzIChhcyBkb2VzIHRoZSBXaW5kb3dzCgl2ZXJzaW9uKS4KCgkqIGluY2x1ZGUvd2lubnQuaDogR3JlZ2cgTWF0dGluc29uIDxnbTEzODI0MkBzY290LmNhbmFkYS5zdW4uY29tPgoJRml4ZWQgX19idWlsdGluX3JldHVybl9hZGRyZXNzLgoKCSogZmlsZXMvZG9zX2ZzLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCVJlcGFpciBTZXRMYXN0RXJyb3IgaW4gRmluZE5leHRGaWxlQS4KCgkqIHByb2dyYW1zL2NvbnRyb2wvY29udHJvbC5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJTW92ZSBhbiBleHRlcm4gZGVjbGFyYXRpb24gdG8gc3RvcCBlZ2NzLTIuOTEuNjYgZnJvbSBjcmFzaGluZy4KCjIwMDItMDctMTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL21zdmNydC9laC5oLCBkbGxzL21zdmNydC9jcHAuYywgZGxscy9tc3ZjcnQvZGlyLmMsCgkgIGRsbHMvbXN2Y3J0L2Vycm5vLmMsIGRsbHMvbXN2Y3J0L2ZpbGUuYywgZGxscy9tc3ZjcnQvaGVhcC5jLAoJICBkbGxzL21zdmNydC9tYWluLmMsIGRsbHMvbXN2Y3J0L21hdGguYywgZGxscy9tc3ZjcnQvbXN2Y3J0LmgsCgkgIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjLCBkbGxzL21zdmNydC9wcm9jZXNzLmMsIGRsbHMvbXN2Y3J0L3RocmVhZC5jOgoJRml4ZWQgcGVyLXRocmVhZCBkYXRhIGhhbmRsaW5nLgoJTWFkZSB0ZXJtaW5hdGUgYW5kIHVuZXhwZWN0ZWQgZnVuY3Rpb24gcG9pbnRlciBwZXItdGhyZWFkLgoJQWRkZWQgc2V0X3NlX3RyYW5zbGF0b3IuCgoJKiBkbGxzL2RkcmF3L2RkcmF3L3VzZXIuaCwgZGxscy9kZHJhdy9kc3VyZmFjZS9mYWtlemJ1ZmZlci5oLAoJICBpbmNsdWRlL250ZGRrLmgsIHRvb2xzL3dpbmVkdW1wL2N2aW5jbHVkZS5oOgoJR3JlZ2cgTWF0dGluc29uIDxnbTEzODI0MkBzY290LmNhbmFkYS5zdW4uY29tPgoJQXZvaWQgc3RydWN0dXJlcyBvciBhcnJheXMgb2Ygc2l6ZSAwLgoKCSogZmlsZXMvZG9zX2ZzLmMsIGZpbGVzL3NtYi5jLCBmaWxlcy9zbWIuaDoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlbUBjb2Rld2VhdmVycy5jb20+CglGaXJzdCBnbyBhdCByZWFkaW5nIGRpcmVjdG9yaWVzIG9uIHB1YmxpYyBTTUIgc2hhcmVzLgoKCSogY29uZmlndXJlLmFjLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBjb25maWd1cmU6CglHcmVnZyBNYXR0aW5zb24gPGdtMTM4MjQyQHNjb3QuY2FuYWRhLnN1bi5jb20+CgkgLSBYMTEvZXh0ZW5zaW9ucy9zaGFwZS5oIHJlcXVpcmVzIFgxMS9YdXRpbC5oLgoJIC0gWDExL1hLQmxpYi5oIHJlcXVpcmVzIFgxMS9YbGliLmguCgkgLSBuZXQvaWYuaCByZXF1aXJlcyBzeXMvc29ja2V0LmguCgkgLSBuZXRpbmV0L2lwLmggcmVxdWlyZXMgc3lzL3NvY2tldC5oIGFuZCBzeXMvaW5fc3lzdG0uaC4KCSAtIHJlc29sdi5oIHJlcXVpcmVzIHN5cy9zb2NrZXQuaC4KCgkqIHRvb2xzL3dpbmVtYWtlcjogR3JlZ2cgTWF0dGluc29uIDxnbTEzODI0MkBzY290LmNhbmFkYS5zdW4uY29tPgoJLSBSZW1vdmVkIG5hbWUsIHR5cGUsIG1vZGUsIHJzcmMsIGFuZCBpbXBvcnQgc3RhdGVtZW50cyBmcm9tIC5zcGVjCgkgIGZpbGUuCgktIEFkZGVkIGltcG9ydHMgYW5kIHJlc291cmNlcyB0byBNYWtlZmlsZS5pbi4KCS0gQ2hlY2tlZCBmb3IgX19zcGFyY19fIGFuZCBfX3N1bl9fLCBzYW1lIGFzIFdpbmUncyBjb25maWd1cmUuCgktIENoZWNrZWQgJFdJTkVfUk9PVC9saWJyYXJ5IGZvciBsaWJyYXJ5IGZpbGVzLgoJLSBDaGFuZ2VkIG1peGVkY3J0IGRpcmVjdG9yeSB0byBtc3ZjcnQuCgoJKiBkbGxzL3NobHdhcGkvcmVnc3RyZWFtLmMsIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJU2V0IGFtb3VudHMgcmVhZC93cml0dGVuIHRvIDAsIHNoYXJlIFVuL0xvY2sgY29kZSwgdW5pZnkgY3RvcnMuCglTSE9wZW5SZWdTdHJlYW1BL1cgcmV0dXJuIGEgZHVtbXkgb2JqZWN0IG9uIGZhaWx1cmUsIG5vdCBOVUxMLgoJSW1wbGVtZW50IEAxMiB1c2luZyBjb21tb24gY3Rvci4KCgkqIGNvbnRyb2xzL2NvbWJvLmM6IENhcmwgU29wY2hhayA8Y2FybC5zb3BjaGFrQGNlZ2lzMTIzLmNvbT4KCVJldHVybiBlbXB0eSBzdHJpbmcgb24gZXJyb3IgaW4gV01fR0VUVEVYVC4KCgkqIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1tQGxzdC5kZT4KCVByb3RlY3QgSW50ZXJuZXRDbG9zZUhhbmRsZSgpIGFnYWluc3QgaW52YWxpZCBoYW5kbGVzLgoKCSogdG9vbHMvd2luYXBpL2NvbmZpZy5wbSwgdG9vbHMvd2luYXBpL3dpbjE2LmFwaSwKCSAgdG9vbHMvd2luYXBpL3dpbjMyLmFwaSwgdG9vbHMvd2luYXBpL3dpbmFwaS5wbSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMuZGF0LCB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5wbSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaS5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9jaGVjaywKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9kb2N1bWVudGF0aW9uLnBtOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglNZXJnZWQgYWxsIEFQSSBmaWxlcyBpbnRvIHR3byBmaWxlcyAoV2luMTYvV2luMzIpLgoKCSogZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL29sZWF1dDMyL29sZXBpY3R1cmUuYywKCSAgZGxscy9vbGVhdXQzMi9zYWZlYXJyYXkuYywgZGxscy9vbGVhdXQzMi92YXJpYW50LmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbG9sZS5jLCBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLAoJICBkbGxzL3dpbm1tL3dhdmVtYXAvd2F2ZW1hcC5jLCBkbGxzL3dpbm1tL3dpbmVhbHNhL2Fsc2EuYywKCSAgZGxscy93aW5tbS93aW5lYWxzYS9hdWRpby5jLCBkbGxzL3dpbm1tL3dpbmVhbHNhL2F1ZGlvXzA1LmMsCgkgIG9iamVjdHMvZm9udC5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIGlzc3VlcyBmb3VuZCBieSB3aW5hcGlfY2hlY2suCgoJKiBpbmNsdWRlL3dpbmRlZi5oOiBNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmNvbT4KCUNvbnZlcnQgSE1PTklUT1IgdG8gYSB2b2lkKi4KCgkqIGRsbHMvY29tY3RsMzIvdXBkb3duLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglBbGxvdyB0aGUgYXBwbGljYXRpb24gdG8gc3ViY2xhc3MgYSBidWRkeSBlZGl0IChzcG90dGVkIGJ5IEd1eQoJTC4gQWxiZXJ0ZWxsaSkuCgoJKiB3aW5lZGVmYXVsdC5yZWc6IEFuZHJpeSBQYWxhbWFyY2h1ayA8YXBhM2FAeWFob28uY29tPgoJQWRkZWQgQ0xTSURfU3RkRm9udCBjbGFzcyByZWdpc3RyYXRpb24uCgoJKiB0b29scy93aW5lZHVtcC9vdXRwdXQuYzogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCVVwZGF0ZSBvdXRwdXQgZm9yIHJlY2VudCBidWlsZCBjaGFuZ2VzLgoKCSogZGxscy9zaGVsbDMyL2Jyc2ZvbGRlci5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUltcGxlbWVudGVkIFNIQnJvd3NlRm9yRm9sZGVyVy4KCgkqIGRsbHMvc2hsd2FwaS9zaGx3YXBpX21haW4uYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglBdm9pZCB3aW5yZWcuaCBpbmNsdXNpb24uCgoJKiBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGUzMi9vbGUzMi5zcGVjOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCVN0dWIgaW1wbGVtZW50YXRpb24gZm9yIENvSW5pdGlhbGl6ZVNlY3VyaXR5LgoKMjAwMi0wNy0xNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHRvb2xzL3dwcC93cHAuYzogRml4ZWQgdGVtcCBuYW1lIGhhbmRsaW5nLgoKCSogY29uZmlndXJlLmFjLCBpbmNsdWRlL3dpbmUvcnBjZmMuaCwgdG9vbHMvTWFrZWZpbGUuaW4sCgkgIHRvb2xzL3dpZGwvLmN2c2lnbm9yZSwgdG9vbHMvd2lkbC9NYWtlZmlsZS5pbiwgdG9vbHMvd2lkbC9oZWFkZXIuYywKCSAgdG9vbHMvd2lkbC9oZWFkZXIuaCwgdG9vbHMvd2lkbC9wYXJzZXIuaCwgdG9vbHMvd2lkbC9wYXJzZXIubCwKCSAgdG9vbHMvd2lkbC9wYXJzZXIueSwgdG9vbHMvd2lkbC9wcm94eS5jLCB0b29scy93aWRsL3Byb3h5LmgsCgkgIHRvb2xzL3dpZGwvdXRpbHMuYywgdG9vbHMvd2lkbC91dGlscy5oLCB0b29scy93aWRsL3dpZGwuYywKCSAgdG9vbHMvd2lkbC93aWRsLmgsIHRvb2xzL3dpZGwvd2lkbHR5cGVzLmgsIGNvbmZpZ3VyZToKCU1lcmdlZCB0aGUgSURMIGNvbXBpbGVyIHdyaXR0ZW4gYnkgT3ZlIEthYXZlbi4KCgkqIHRvb2xzL3dyYy9wcGwubCwgdG9vbHMvd3JjL3BweS55LCB0b29scy93cmMvcHJlcHJvYy5jLAoJICB0b29scy93cmMvcHJlcHJvYy5oLCB0b29scy93cmMvdXRpbHMuYywgdG9vbHMvd3JjL3V0aWxzLmgsCgkgIHRvb2xzL3dyYy93cmMuYywgY29uZmlndXJlLmFjLCB0b29scy9NYWtlZmlsZS5pbiwKCSAgdG9vbHMvd3BwLy5jdnNpZ25vcmUsIHRvb2xzL3dwcC9NYWtlZmlsZS5pbiwgdG9vbHMvd3BwL3BwbC5sLAoJICB0b29scy93cHAvcHB5LnksIHRvb2xzL3dwcC9wcmVwcm9jLmMsIHRvb2xzL3dwcC93cHAuYywKCSAgdG9vbHMvd3BwL3dwcC5oLCB0b29scy93cHAvd3BwX3ByaXZhdGUuaCwgdG9vbHMvd3JjLy5jdnNpZ25vcmUsCgkgIHRvb2xzL3dyYy9NYWtlZmlsZS5pbiwgdG9vbHMvd3JjL3BhcnNlci5sLCB0b29scy93cmMvcGFyc2VyLnksCgkgIGNvbmZpZ3VyZToKCVNwbGl0IHRoZSBDIHByZXByb2Nlc3NvciBmcm9tIHdyYyBpbnRvIGEgc2VwYXJhdGUgbGlicmFyeS4KCVByZWZpeGVkIGV4cG9ydGVkIGZ1bmN0aW9ucyBieSAncHAnIHRvIGF2b2lkIG5hbWVzcGFjZSBjb25mbGljdHMuCgoJKiBwcm9ncmFtcy93aW5oZWxwL2hscDJzZ21sLmMsIHByb2dyYW1zL3dpbmhlbHAvaGxwZmlsZS5jLAoJICBwcm9ncmFtcy93aW5oZWxwL2hscGZpbGUuaCwgcHJvZ3JhbXMvd2luaGVscC9tYWNyby5jLAoJICBwcm9ncmFtcy93aW5oZWxwL21hY3JvLmxleC5sLCBwcm9ncmFtcy93aW5oZWxwL21hY3JvLnlhY2MueSwKCSAgcHJvZ3JhbXMvd2luaGVscC93aW5oZWxwLmMsIHByb2dyYW1zL3dpbmhlbHAvd2luaGVscC5oOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglCcmluZyB3aW5oZWxwIGJhY2sgdG8gbGlmZSwgd2l0aCBtYWlubHkgc3VwcG9ydCBmb3IgV2luOTUgaGVscCBmaWxlcy4KCgkqIGRsbHMveDExZHJ2L3dpbmRvdy5jOiBGaXhlZCBzZXR0aW5nIG9mIG1pbi9tYXhpbWl6ZSBtd20gaGludHMuCgoJKiBkbGxzL29sZTMyL2ZpbGVtb25pa2VyLmMsIGRsbHMvb2xlMzIvaXRlbW1vbmlrZXIuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbnNjaG1pZWRAbHljb3MuZGU+CglGaXhlZCB0d28gbGVha3MgaW4gZmlsZS0gYW5kIGl0ZW1tb25pa2VyLgoKCSogZGxscy9kZHJhdy9kc3VyZmFjZS9kaWIuYzoKCVRvbnkgTGFtYnJlZ3RzIDx0b255X2xhbWJyZWd0c0B0ZWx1c3BsYW5ldC5uZXQ+CglBZGRlZCBzdXBwb3J0IEREQkxUX0RERlggZmxhZyBpbiBEaXJlY3REcmF3U3VyZmFjZV9CbHQuCgoJKiBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLCBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gUmVtb3ZlIHN0dWIgZm9yIG9yZGluYWwgMzk0IGFuZCByZXBsYWNlIHdpdGggZm9yd2FyZCB0bwoJICBDcmVhdGVEaWFsb2dJbmRpcmVjdFBhcmFtQSB3aGVyZSB0cmFjaW5nIHNob3dzIGl0IGdvaW5nLgoJLSBBZGQgc3R1YiBmb3Igb3JkaW5hbCA0MzAuCgoJKiBkbGxzL2NvbWN0bDMyL2FuaW1hdGUuYywgZGxscy9jb21jdGwzMi9jb21ib2V4LmMsCgkgIGRsbHMvY29tY3RsMzIvZGF0ZXRpbWUuYywgZGxscy9jb21jdGwzMi9mbGF0c2IuYywKCSAgZGxscy9jb21jdGwzMi9ob3RrZXkuYywgZGxscy9jb21jdGwzMi9pcGFkZHJlc3MuYywKCSAgZGxscy9jb21jdGwzMi9tb250aGNhbC5jLCBkbGxzL2NvbWN0bDMyL3Byb2dyZXNzLmMsCgkgIGRsbHMvY29tY3RsMzIvcmViYXIuYywgZGxscy9jb21jdGwzMi9zdGF0dXMuYywgZGxscy9jb21jdGwzMi90YWIuYywKCSAgZGxscy9jb21jdGwzMi90b29sYmFyLmMsIGRsbHMvY29tY3RsMzIvdG9vbHRpcHMuYywKCSAgZGxscy9jb21jdGwzMi90cmFja2Jhci5jLCBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJRG9uJ3QgaXNzdWUgZXJyb3IgbWVzc2FnZSBpZiBtZXNzYWdlIG51bWJlciBpbiBhcHBsaWNhdGlvbiByYW5nZS4KCgkqIGRsbHMvc2hsd2FwaS9NYWtlZmlsZS5pbiwgZGxscy9zaGx3YXBpL2lzdHJlYW0uYywKCSAgZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYywgZGxscy9zaGx3YXBpL3Rlc3RzL2NsaXN0LmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJSW1wbGVtZW50IFNIQ3JlYXRlU3RyZWFtT25GaWxlQS9XL0V4LCBvcmRpbmFscyBAMTY2LDE4NCwyMTItMjE0LgoKCSogc2VydmVyL3NlcmlhbC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUltcGxlbWVudGVkIEZsdXNoRmlsZUJ1ZmZlcnMgZm9yIHNlcmlhbCBkZXZpY2VzLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvcGF0aC5jOiBQYXVsIE1pbGxhciA8cGF1bG1AYXN0cm8uZ2xhLmFjLnVrPgoJUmVtb3ZlZCBkcml2ZSBhc3N1bXB0aW9ucyBpbiB0aGUgcGF0aCBoYW5kbGluZyByZWdyZXNzaW9uIHRlc3RzLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZ2Jyb3dzZXIuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbnNjaG1pZWRAbHljb3MuZGU+CglGaXhlZCBhIG1lbW9yeSBsZWFrIGFuZCBhIHdyb25nIG1lbW9yeSBmcmVlIGNhbGwuCgoJKiBwcm9ncmFtcy93aW5lZmlsZS93aW5lZmlsZS5oOgoJR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglEbyBub3QgI2luY2x1ZGUgPG1hbGxvYy5oPiwgd2hpY2ggaXMgbm9uLXN0YW5kYXJkIGFuZCBub3QgbmVlZGVkLgoKCSogZGxscy94MTFkcnYvZGdhMi5jLCBkbGxzL3gxMWRydi94dmlkbW9kZS5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCVRlc3QgZm9yIFgxMSBlcnJvcnMgZm9yIERHQTIgYW5kIFhWaWRNb2RlIGV4dGVuc2lvbnMuCgoJKiBkbGxzL2RkcmF3L2RkcmF3L21haW4uYywgZGxscy9kZHJhdy9kZHJhd19wcml2YXRlLmgsCgkgIGRsbHMvZGRyYXcvZHN1cmZhY2UvbWFpbi5jLCBkbGxzL2RkcmF3L2hlbHBlci5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gRERSQVdfU1lTVEVNTUVNT1JZIGlzIGhhbmRsZWQgbGlrZSBPRkZTQ1JFRU5QTEFJTiBmb3Igbm93CgktIGFkZGVkIG1vcmUgbG9nZ2luZwoKCSogZGxscy9zaGVsbDMyL2RpYWxvZ3MuYzoKCUdyZWdnIE1hdHRpbnNvbiA8Z20xMzgyNDJAc2NvdC5jYW5hZGEuc3VuLmNvbT4KCUZpeGVkIGFub3RoZXIgbm9uLXN0YXRpYyBzdHJ1Y3R1cmUgaW5pdGlhbGl6ZXIuCgoJKiBkbGxzL2NvbWN0bDMyL2hlYWRlci5jOiBCaWxsIE1lZGxhbmQgPG1lZGJpMDFAYWNjcGFjLmNvbT4KCUNvcnJlY3Rpb24gdG8gaGVhZGVyIG9yZGVyIG1haW50ZW5hbmNlIHdoZW4gYSBkdW1teSBmaXJzdCBpdGVtIGlzCglhZGRlZCBhbmQgdGhlbiBkZWxldGVkIChhcyBzdWdnZXN0ZWQgYnkgTVNETiB0byBoYW5kbGUgdGhlIGZhY3QgdGhhdAoJdGhlIGZpcnN0IGNvbHVtbiBvZiBhIGxpc3R2aWV3IGlzIGxlZnQganVzdGlmaWVkKS4gIEFsc28gcmVtb3ZlZAoJcmVkdW5kYW50IGNhc3RzLgoKCSogZ3JhcGhpY3MveDExZHJ2L2RpYi5jOiBSb2IgTWNDbGludG9uIDxteXB1YmxpY2FjY291bnRAaG90bWFpbC5jb20+CglYMTFEUlZfR2V0RElCaXRzOiBEb24ndCBjbGVhciB0aGUgYmlDb21wcmVzc2lvbj09QklfQklURklFTERTIGZsYWcKCWFmdGVyIGNyZWF0aW5nIHRoZSBiaXRzLgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliLmM6CglHcmVnZyBNYXR0aW5zb24gPGdtMTM4MjQyQHNjb3QuY2FuYWRhLnN1bi5jb20+CglGaXhlZCB2b2lkKiBhcml0aG1ldGljLgoKCSogZGxscy9zaGVsbDMyL3NobGZvbGRlci5jOgoJR3JlZ2cgTWF0dGluc29uIDxnbTEzODI0MkBzY290LmNhbmFkYS5zdW4uY29tPgoJSW5pdGlhbGl6ZWQgdGhlIHBpZGxPdXQgdmFyaWFibGUgaW4gU0hFTEwzMl9QYXJzZU5leHRFbGVtZW50IHRvCglwcmV2ZW50IGEgY3Jhc2ggaW4gc29tZSBjYXNlcy4KCgkqIGZpbGVzL2RpcmVjdG9yeS5jOiBBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CglGaXhlZCB1bmluaXRpYWxpemVkIEhLRVlzLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBCaWxsIE1lZGxhbmQgPG1lZGJpMDFAYWNjcGFjLmNvbT4KCURlbGV0ZUNvbHVtbiBzaG91bGQgcmV0dXJuIHN1Y2Nlc3MgZXZlbiBmb3IgdU93bmVyRGF0YS4KCgkqIHByb2dyYW1zL25vdGVwYWQvZGlhbG9nLmMsIHByb2dyYW1zL25vdGVwYWQvZGlhbG9nLmgsCgkgIHByb2dyYW1zL25vdGVwYWQvbWFpbi5jOgoJQW5kcml5IFBhbGFtYXJjaHVrIDxhcGEzYUB5YWhvby5jb20+CglBIGZldyBjb3NtZXRpYyBjaGFuZ2VzIHBsdXMgZml4ZXMgZm9yIHByb2JsZW1zIHNwb3R0ZWQgYnkgRG1pdHJ5CglUaW1vc2hrb3YuCgoJKiBwcm9ncmFtcy9ub3RlcGFkL1NpLnJjLCBwcm9ncmFtcy9ub3RlcGFkL3JzcmMucmM6CglSb2sgTWFuZGVsamMgPHJva21hbmRlbGpjQGhvdG1haWwuY29tPgoJQWRkZWQgU2xvdmVuaWFuIHJlc291cmNlcy4KCjIwMDItMDctMTAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBWRVJTSU9OLCBjb25maWd1cmUsIEFOTk9VTkNFLCBDaGFuZ2VMb2c6IFJlbGVhc2UgMjAwMjA3MTAuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjIwMDItMDctMTAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC93cHJvY3Muc3BlYzoKCUFkZGVkIEZQVSBlbXVsYXRpb24gaW50ZXJydXB0cy4KCgkqIG1zZG9zL2ZwdS5jLCBtc2Rvcy9pbnQzZC5jLCBkbGxzL250ZGxsL01ha2VmaWxlLmluLAoJICBkbGxzL3dpbmVkb3MvZG9zdm0uYywgaW5jbHVkZS9taXNjZW11Lmg6CglBZG1pcmFsIENvZXltYW4gPGFkbWlyYWxAY29ybmVyLm5ldD4KCUFkZGVkIHN1cHBvcnQgZm9yIEZQVSBlbXVsYXRpb24gaW50ZXJydXB0cy4KCgkqIGRsbHMvdXNlci91c2VyMzIuc3BlYywgaW5jbHVkZS93aW5kZWYuaCwgaW5jbHVkZS93aW51c2VyLmgsCgkgIHdpbmRvd3MvaG9vay5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCVN0dWJzL2RvY3MgZm9yIE5vdGlmeVdpbkV2ZW50LFNldFdpbkV2ZW50SG9vayxJc1dpbkV2ZW50SG9va0luc3RhbGxlZCwKCVVuaG9va1dpbkV2ZW50LgoKCSogZGxscy9nZGkvZnJlZXR5cGUuYzoKCVF1aWV0IHRoZSBmb250IGxvYWRpbmcgZXJyb3IuCgoJKiBjb250cm9scy9jb21iby5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQ0JVcGRhdGVFZGl0OiBMQl9HRVRURVhUTEVOIHJldHVybnMgTEJfRVJSIG9uIGVycm9yLCBub3QgMC4KCgkqIGRsbHMvZGRyYXcvZHN1cmZhY2UvZGliLmM6CglGaXhlZCBjb3JydXB0aW9uIHdoZW4gY29weWluZyB0byB0aGUgc2FtZSBzdXJmYWNlICh3aXRoIHRoZSBoZWxwIG9mCglUb255IExhbWJyZWd0cyBhbmQgTGlvbmVsIFVsbWVyKS4KCgkqIGRvY3VtZW50YXRpb24vc2FtcGxlcy9jb25maWc6CglKb2hhbiBHaWxsIDxqb2hhbmVAbHlzYXRvci5saXUuc2U+Cgk0OCB3YXMgcGxhaW4gd3JvbmcgYXMgdmFsdWUgZm9yIEhFTG1hcmdpbi4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jLCBkbGxzL29sZWF1dDMyL3R5cGVsaWIuaDoKCUdyZWdnIE1hdHRpbnNvbiA8Z20xMzgyNDJAc2NvdC5jYW5hZGEuc3VuLmNvbT4KCUZpeGVzIHRvIGFsbG93IGJpZyBlbmRpYW4gbWFjaGluZXMgdG8gbG9hZCBNU0ZUIHR5cGVsaWIgZmlsZXMuCgoJKiBmaWxlcy9kcml2ZS5jOgoJRml4ZWQgaGFuZGxpbmcgb2YgZHJpdmVzIHdpdGggIi8iIHBhdGggKHRoYW5rcyB0byBNYXJjdXMgTWVpc3NuZXIpLgoKCSogZGxscy93aW5lcHMvcHBkLmM6CglDYXJsIFNvcGNoYWsgPGNhcmwuc29wY2hha0BjZWdpczEyMy5jb20+CglQYXNzICJNYW51YWwgRmVlZCIgYXMgc2hvcnQgaW5wdXQgc2xvdCBuYW1lLgoKCSogd2luMzIvY29uc29sZS5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBzeW5jaHJvbmlzYXRpb24gZm9yIGN0cmwgZXZlbnQgZ2VuZXJhdGlvbi4KCgkqIGRsbHMvY29tbWRsZy9mb250ZGxnLmM6CglTaGFjaGFyIFNoZW1lc2ggPHN1bkBjb25zdW1lci5vcmcuaWw+CgktIEZpeGVkIGFjY2VzcyB0byB0aGUgbHBUZW1wbGF0ZU5hbWUgb2YgQ2hvb3NlRm9udCBpbiBjYXNlcyB3aGVyZSB0aGUKCSAgZmxhZ3MgZG9uJ3Qgc3BlY2lmeSB0byB1c2UgaXQuCgktIERvIG5vdCB0cnkgdG8gY29udmVydCB0aGUgcmVzb3VyY2UgbmFtZSBmcm9tIEFOU0kgdG8gV2lkZSBpZiBpdCBpcyBhCgkgIHJlc3VsdCBvZiBNQUtFSU5UUkVTT1VSQ0UgKGFuZCB0aGVyZWZvcmUgbm90IGEgc3RyaW5nKS4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL2FkdmFwaTMyL01ha2VmaWxlLmluLAoJICBkbGxzL2FkdmFwaTMyL3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMvYWR2YXBpMzIvdGVzdHMvcmVnaXN0cnkuYzoKCUNyZWF0ZWQgcmVnaXN0cnkgdW5pdCB0ZXN0IGFuZCBhZGRlZCB0ZXN0cyBmb3IgUmVnRW51bVZhbHVlW0FXXS4KCgkqIGRsbHMvYWR2YXBpMzIvcmVnaXN0cnkuYywgbWVtb3J5L3JlZ2lzdHJ5LmM6CglSZWdFbnVtVmFsdWVbQVddIG5lZWQgdG8gdXBkYXRlIHRoZSBkYXRhIHNpemUgb24gYnVmZmVyIG92ZXJmbG93Cgkoc3BvdHRlZCBieSBNYXNzaW1vIDxtYXhAdmVuZXRvLmNvbT4pLgoKCSogZGxscy9kZHJhdy9kZHJhd19wcml2YXRlLmgsIGRsbHMvZGRyYXcvZHBhbGV0dGUvbWFpbi5jLAoJICBkbGxzL2RkcmF3L2RzdXJmYWNlL21haW4uYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJUmVtb3ZlZCB0aGUgZmxhZ3MgZmllbGRzIG9mIElEaXJlY3REcmF3UGFsZXR0ZUltcGwsIGFzIHdlIHNob3VsZCB1c2UKCXRoZSBkd0ZsYWdzIGZpZWxkIG9mIEREUkFXSV9ERFJBV1BBTEVUVEVfR0JMIHN0cnVjdHVyZSBpbnN0ZWFkLgoKCSogZGxscy9kZHJhdy9kc3VyZmFjZS93bmRwcm9jLmM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUhhbmRsZSBXTV9TWU5DUEFJTlQgd2l0aCBEZWZXaW5kb3dQcm9jLgoKCSogZGVidWdnZXIvZGVidWcubDoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRW5oYW5jZWQgZXJyb3IgaGFuZGxpbmcgb24gaW5wdXQgc3RyZWFtIHJlYWRpbmcuCgoJKiBkZWJ1Z2dlci9leHRfZGVidWdnZXIuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgZXh0ZXJuYWwgZGVidWdnZXIgc3RhcnR1cC4KCgkqIGRsbHMvd2lubW0vd2lubW1fU2kucmMsIGRsbHMvd2lubW0vd2lubW1fcmVzLnJjOgoJUm9rIE1hbmRlbGpjIDxyb2ttYW5kZWxqY0Bob3RtYWlsLmNvbT4KCUFkZGVkIFNsb3ZlbmlhbiByZXNvdXJjZXMuCgoJKiBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmM6CglSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglGaXggYnVmZmVyIGxlbmd0aCBjYWxjdWxhdGlvbiBpbiBJbml0aWFsaXplR2VuZXJpY1NGKCkuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJLSBJbXByb3ZlIHRyYWNlcy4KCS0gQ2hhbmdlZCBkZWZhdWx0IGNvbHVtbiB3aWR0aCB0byAxMjggdG8gbWF0Y2ggbmF0aXZlIGFuZCBtYWtlIHRoYXQKCSAgdGhlIG1pbWltdW0gZm9yIExWU19TTUFMTElDT04gYW5kIExWU19MSVNUIHN0eWxlcy4KCS0gQ29ycmVjdGVkIG1heCB2YWx1ZSBmb3IgTFZTX0xJU1Qgc3R5bGUgc2Nyb2xsIGluZm8uCgktIElzc3VlIG91ciBvd24gU2hvd1Njcm9sbEJhciBsaWtlIHRoZSBuYXRpdmUgd2l0aCBwcm9wZXIgdGVzdC4KCS0gQ29ycmVjdCBhbGlnbm1lbnQgd2hlbiB1c2luZyBMVlNfSUNPTiBzdHlsZS4KCS0gQ29ycmVjdCBGSVhNRXMgZm9yIHVuaW1wbGVtZW50ZWQgc3R5bGVzLgoJLSBDb3JyZWN0IHJlY3Qgc2l6ZSBjb21wdXRhdGlvbiBmb3IgTFZTX0xJU1QuCgktIFJlc2V0IHNjcm9sbCBiYXJzIHdoZW4gY2hhbmdpbmcgc3R5bGVzLgoJLSBJbXBsZW1lbnQgV01fV0lORE9XUE9TQ0hBTkdFRC4KCjIwMDItMDctMDkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3NobHdhcGkvTWFrZWZpbGUuaW4sIGRsbHMvc2hsd2FwaS9jbGlzdC5jLAoJICBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLCBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjLAoJICBkbGxzL3NobHdhcGkvdGVzdHMvLmN2c2lnbm9yZSwgZGxscy9zaGx3YXBpL3Rlc3RzL2NsaXN0LmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJSW1wbGVtZW50L2RvY3VtZW50IEAxNywxOCwxOSwyMCwyMSwyMiAoQ29tcGFjdCBsaXN0IEFQSSkuCgoJKiBkbGxzL29wZW5nbDMyL21ha2Vfb3BlbmdsLCBkbGxzL29wZW5nbDMyL29wZW5nbF9leHQuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglTdXBwb3J0IG5ldyByZWdpc3RlcmVkIGV4dGVuc2lvbnMuCgoJKiBkbGxzL21zdmNydC9maWxlLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+Cglfb3Blbl9vc2ZoYW5kbGU6IHNldCBhdCBsZWFzdCB0aGUgX0lPUkVBRCBmbGFnLgoKCSogd2luZG93cy9kY2UuYzoKCVJ5YW4gQ3VtbWluZyA8cnlhbkBjb21wbGV0ZWx5LmtpY2tzLWFzcy5vcmc+CglNYWtlIExvY2tXaW5kb3dVcGRhdGUgcmV0dXJuIG1vcmUgV2luZG93cy1saWtlIHZhbHVlcy4KCjIwMDItMDctMDggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiByZWxheTMyL3JlbGF5Mzg2LmM6CglSZW1vdmUgLmRsbCBleHRlbnNpb24gZnJvbSBtb2R1bGUgbmFtZSwgYWRkZWQgd2lsZGNhcmQgc3VwcG9ydCBpbgoJcmVsYXkgc3BlY2lmaWNhdGlvbnMgKHdpdGggdGhlIGhlbHAgb2YgRG1pdHJ5IFRpbW9zaGtvdikuCgoJKiBtZW1vcnkvc3RyaW5nLmM6CglUb21teSBTY2h1bHR6IExhc3NlbiA8dGxhc3NlbkB0bGFzc2VuLmRrPgoJRml4ZWQgbHN0cmNweW5BIGRlYnVnIHRyYWNpbmcuCgoJKiBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCWZnZXRzLCBmZ2V0d3M6IGRvbid0IHRyZWF0IHRoZSBwb3NzaWJsZSB1bmluaXRpYWxpemVkIGJ1ZmZlcnMgYXMgdmFsaWQKCXN0cmluZ3MuCgoJKiBkbGxzL21zdmNydC9maWxlLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglNU1ZDUlRfZnJlYWQ6IGV4cG9zZSBmZW9mIGZsYWcuCgoJKiB0b29scy93aW5lY2hlY2s6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5AYWx1bS53cGkuZWR1PgoJV2luZG93cyByZWdpc3RyeSBub3QgZm91bmQgc2hvdWxkIGJlIGEgbm90aWNlIHRvIHRoZSB1c2VyLCBub3QgYQoJY3JpdGljYWwgZXJyb3IuCgoJKiBkbGxzL3ZlcnNpb24vaW5mby5jOgoJUmVtb3ZlZCB3b3JrYXJvdW5kIGZvciAxNi1iaXQgbG9hZGVyIGJ1Zy4KCgkqIHByb2dyYW1zL25vdGVwYWQvRGEucmMsIHByb2dyYW1zL25vdGVwYWQvRGUucmMsCgkgIHByb2dyYW1zL25vdGVwYWQvRW4ucmMsIHByb2dyYW1zL25vdGVwYWQvRXMucmMsCgkgIHByb2dyYW1zL25vdGVwYWQvRmkucmMsIHByb2dyYW1zL25vdGVwYWQvRnIucmMsCgkgIHByb2dyYW1zL25vdGVwYWQvTWFrZWZpbGUuaW4sIHByb2dyYW1zL25vdGVwYWQvUHQucmMsCgkgIHByb2dyYW1zL25vdGVwYWQvUkVBRE1FLCBwcm9ncmFtcy9ub3RlcGFkL1NrLnJjLAoJICBwcm9ncmFtcy9ub3RlcGFkL1N3LnJjLCBwcm9ncmFtcy9ub3RlcGFkL1RPRE8sCgkgIHByb2dyYW1zL25vdGVwYWQvV2EucmMsIHByb2dyYW1zL25vdGVwYWQvZGlhbG9nLmMsCgkgIHByb2dyYW1zL25vdGVwYWQvZGlhbG9nLmgsIHByb2dyYW1zL25vdGVwYWQvbGFuZ3VhZ2UuYywKCSAgcHJvZ3JhbXMvbm90ZXBhZC9sYW5ndWFnZS5oLCBwcm9ncmFtcy9ub3RlcGFkL21haW4uYywKCSAgcHJvZ3JhbXMvbm90ZXBhZC9tYWluLmgsIHByb2dyYW1zL25vdGVwYWQvbm90ZXBhZC5yYywKCSAgcHJvZ3JhbXMvbm90ZXBhZC9ub3RlcGFkX3Jlcy5oLCBwcm9ncmFtcy9ub3RlcGFkL3NlYXJjaC5jOgoJQW5kcml5IFBhbGFtYXJjaHVrIDxhcGEzYUB5YWhvby5jb20+CglVc2UgcmljaCB0ZXh0IGVkaXQgY29udHJvbCBpbnN0ZWFkIG9mIGhhbmRsaW5nIHVzZXIgaW5wdXQgYW5kCglyZW5kZXJpbmcgb24gaXRzIG93biwgdXNlIG5hbWVkIGNvbnN0YW50cyBpbnN0ZWFkIG9mIG1hZ2ljIG51bWJlcnMsCgljbGVhbmVkIGNvZGUsIGltcGxlbWVudGVkIFVuZG8gZnVuY3Rpb25hbGl0eS4KCgkqIGRsbHMva2VybmVsL3RodW5rLmM6CglBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CgktIEFsd2F5cyBjb3B5IChhbG1vc3QpIHRoZSB3aG9sZSBzdGFjayBzcGFjZSBvdmVyIHRvIHRoZSAxNmJpdCBzdGFjawoJICBpbnN0ZWFkIG9mIGNhbGN1bGF0aW5nIHNvbWUgcG90ZW50aWFsbHkgYm9ndXMgcGFyYW1ldGVyIGNvdW50LgoJLSBBZGQgc29tZSBjb21tZW50cy4KCgkqIGluY2x1ZGUvb2xlYXV0by5oOgoJR3JlZ2cgTWF0dGluc29uIDxnbTEzODI0MkBzY290LmNhbmFkYS5zdW4uY29tPgoJRml4ZWQgVl9ERUNJTUFMIG1hY3JvIHRvIHJlZmxlY3Qgd2hlcmUgdGhlIGRlY1ZhbCBtZW1iZXIgaXMgYWN0dWFsbHkKCXN0b3JlZC4KCgkqIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQWRkZWQgX1VAWUFQQVhJQFogYW5kIF9WQFlBUEFYSUBaLgoKCSogZGxscy9tc3ZjcnQvZmlsZS5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJTVNWQ1JUX2ZzZWVrOiBzaG91bGQgcmV0dXJuIDAgb24gc3VjY2Vzcy4KCgkqIGRsbHMvcmljaGVkaXQvcmVhZGVyLmMsIGRsbHMvcmljaGVkaXQvcmljaGVkaXQuYywKCSAgZGxscy9yaWNoZWRpdC9ydGYuaCwgZGxscy9yaWNoZWRpdC90ZXh0LXdyaXRlci5jOgoJRHVhbmUgQ2xhcmsgPGRjbGFya0Bha2FtYWlsLmNvbT4KCUFkZCByaWNoZWRpdCBzdXBwb3J0IGZvciBhIHBsYWluIHRleHQgc3RyZWFtLgoKCSogZG9jdW1lbnRhdGlvbi9ydW5uaW5nLnNnbWw6CglBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CglBZGRlZCBzb21lIGVudmlyb25tZW50IHZhcmlhYmxlcyBkb2N1bWVudGF0aW9uLgoKCSogZGxscy9vbGVhdXQzMi9vbGVhdXQzMi5zcGVjLCBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYzoKCUphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CgktIFZhckZvcm1hdCBub3cgc3VwcG9ydHMgVlRfUjggYW5kIEJZUkVGIHZhcmlhbnQgdHlwZXMuCgktIEFkZCBWYXJDeU11bEk0IHN1cHBvcnQuCgoJKiBkbGxzL3dpbm1tL21tc3lzdGVtLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGFub3RoZXIgUGxheVNvdW5kIGJ1ZyAod2hlbiBTTkRfTE9PUCBpcyByZXF1ZXN0ZWQpLgoKCSogZGxscy93aW5tbS93aW5lYWxzYS9hdWRpb18wNS5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBhIGZldyBjb21waWxhdGlvbiB3YXJuaW5ncy4KCgkqIGRsbHMvb3BlbmdsMzIvd2dsLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJU3VwcG9ydCB3Z2xVc2VGb250Qml0bWFwc0Egd2hlbiB1c2luZyBjbGllbnQtc2lkZSByZW5kZXJpbmcuCgoyMDAyLTA3LTA1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9kc291bmQvTWFrZWZpbGUuaW46CglTdGV2ZW4gRWR3YXJkcyA8c3RldmVuX2VkNDE1M0B5YWhvby5jb20+CglOZWVkIHRvIGltcG9ydCBudGRsbC4KCgkqIHByb2dyYW1zL3djbWQvZGlyZWN0b3J5LmM6CglHcmVnZyBNYXR0aW5zb24gPGdtMTM4MjQyQHNjb3QuY2FuYWRhLnN1bi5jb20+CglNb2RpZmllZCBXQ01EX2ZpbGVzaXplNjQgdG8gaGFuZGxlIHVuc2lnbmVkIG51bWJlcnMuCgoJKiBkbGxzL2FkdmFwaTMyL3JlZ2lzdHJ5LmMsIG1lbW9yeS9yZWdpc3RyeS5jOgoJTW9yZSBleHBsaWNpdCBpbml0aWFsaXphdGlvbiBvZiBpbmZvX3NpemUgZm9yIHN0dXBpZCBjb21waWxlcnMuCgoJKiBwcm9ncmFtcy91bmluc3RhbGxlci9tYWluLmM6CglVc2UgV2luZSBkZWJ1Z2dpbmcgQVBJLiBGaXhlZCBNZXNzYWdlQm94IGxvb3AuCgoJKiBkbGxzL21zdmNydC9maWxlLmMsIGRsbHMvbXN2Y3J0L21haW4uYywgZGxscy9tc3ZjcnQvbXN2Y3J0Lmg6CglGbHVzaCBzdGRpbyBvbiBleGl0LgoKCSogZGxscy9vZGJjMzIvcHJveHlvZGJjLmM6IEZpeGVkIHdhcm5pbmdzLgoKCSogZGxscy94MTFkcnYvd2luZWNsaXBzcnYuYywgaW5jbHVkZS93aW5lL2RlYnVnLmgsCgkgIGluY2x1ZGUvd2lubnQuaCwgbXNkb3MvaW50MmYuYzoKCUdyZWdnIE1hdHRpbnNvbiA8Z20xMzgyNDJAc2NvdC5jYW5hZGEuc3VuLmNvbT4KCS0gRm9ydGUgQyBkb2VzIG5vdCBzdXBwb3J0IG5hbWVsZXNzIHN0cnVjdHVyZXMgb3IgdW5pb25zCgktIEltcGxlbWVudGVkIF9fYnVpbHRpbl9yZXR1cm5fYWRkcmVzcyBmb3IgRm9ydGUgQyBvbiBzcGFyYwoJLSBJbXBsZW1lbnRlZCBERUNMX0dMT0JBTF9DT05TVFJVQ1RPUiBmb3Igbm9uLTM4Niwgbm9uLUdOVSBDCgktIEltcGxlbWVudGVkIFdJTkVfRFBSSU5URiB0byBoYXZlIGZ1bmN0aW9uIG5hbWUgd2l0aCBGb3J0ZSBDCgoJKiBkbGxzL29sZTMyL21lbWxvY2tieXRlcy5jOgoJTWFyY3VzIE1laXNzbmVyIDxtZWlzc25lckBzdXNlLmRlPgoJQWRkZWQgYSBnZW5lcmljIHdheSBvZiBkb2luZyBHZXRIR2xvYmFsRnJvbUlMb2NrQnl0ZXMoKS4KCgkqIHByb2dyYW1zL3dpbmVsYXVuY2hlci5pbjoKCUFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCS0gbWFrZSBzdXJlIGV2ZW4gR1VJIHVzZXJzIG5vdGljZSBhICJtaXNzaW5nIHhtZXNzYWdlIiBwcm9ibGVtIGJ5CgkgIGNoZWNraW5nIGZvciB0b25zIG9mIFgxMSBlZGl0b3JzCgktIHJlcGxhY2UgZHVwbGljYXRlZCAoM3gpIGNvZGUgd2l0aCBmdW5jdGlvbiBsYXVuY2hfd2luZXNldHVwKCkKCS0gaW1wcm92ZWQgIndpbmVzZXR1cCBub3QgZm91bmQiIGVycm9yIG1lc3NhZ2UKCS0gYnJlYWsgbG9vcGluZyAodmlhIGNvZGUgMTI3KSBpbiBjYXNlIG5vIHhtZXNzYWdlIGluc3RhbGxlZAoJLSBzdHJlc3MgdGhlIGZhY3QgdGhhdCBwZW9wbGUgc2hvdWxkIHJlbWVtYmVyIHRoYXQgdGhleSBjYW4gcmVnYWluIGNlcnRhaW4KCSAgc2V0dGluZ3MgYnkgZGVsZXRpbmcgZmxhZyBmaWxlcwoJLSBzcGVsbGluZyBmaXhlcwoKCSogZGxscy9rZXJuZWwvZm9ybWF0X21zZy5jOgoJR3JlZ2cgTWF0dGluc29uIDxnbTEzODI0MkBzY290LmNhbmFkYS5zdW4uY29tPgoJSW1wbGVtZW50ZWQgRm9ybWF0TWVzc2FnZSBmb3Igc3BhcmMuICBTaW5jZSB0aGUgdmFfbGlzdCBpcyBzdG9yZWQgaW4KCW1lbW9yeSBsaWtlIF9faTM4Nl9fLCB0aGUgc2FtZSBpbXBsZW1lbnRhdGlvbiBzaG91bGQgd29yay4KCgkqIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmMsIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmMsCgkgIGxvYWRlci9sb2Fkb3JkZXIuYywgbWlzYy92ZXJzaW9uLmM6CglObyBuZWVkIHRvIGNhbGwgR2V0TW9kdWxlRmlsZU5hbWUxNiBub3cgdGhhdCBHZXRNb2R1bGVGaWxlTmFtZUEKCWhhbmRsZXMgMTYtYml0IHRhc2tzLgoKCSogbG9hZGVyL21vZHVsZS5jOgoJRml4ZWQgR2V0TW9kdWxlRmlsZU5hbWVXIHJldHVybiB2YWx1ZS4KCVF1aWV0IGRsbCBsb2FkaW5nIGVycm9yIG1lc3NhZ2UuCgoJKiByZWxheTMyL2J1aWx0aW4zMi5jOgoJUmV0dXJuIEVSUk9SX0JBRF9FWEVfRk9STUFUIHdoZW4gYnVpbHRpbiBkbGwgc3RpbGwgbm90IGZvdW5kLCBzaW5jZSB3ZQoJbW9zdCBsaWtlbHkgbG9hZGVkIGEgMTYtYml0IGJ1aWx0aW4uCgoJKiB3aW5kb3dzL3BhaW50aW5nLmM6CglNb3ZlZCBNc2dXYWl0Rm9yTXVsdGlwbGVPYmplY3RzIGNhbGwgb3V0IG9mIHRoZSB3aW5kb3cgbG9jay4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL3BhdGguYzoKCUR1YW5lIENsYXJrIDxkY2xhcmtAYWthbWFpbC5jb20+CglBZGQgZHJpdmUgbGV0dGVyIGFuZCBVbml4IHBhdGggdGVzdHMgb2YgR2V0RnVsbFBhdGhOYW1lQS4KCgkqIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jOgoJSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCUVuc3VyZSBWYXJCc3RyQ2F0IGhhbmRsZXMgbnVsbCBwYXJtcyBhcyBwZXIgd2luZG93cyBhbmQgYWN0dWFsbHkgZG9lcwoJdGhlIGNvbmNhdGVuYXRpb24gZXZlbiBmb3IgbnVsbCBhcmdzLgoKCSogZGxscy9hZHZhcGkzMi9yZWdpc3RyeS5jOgoJUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJQ2hlY2sgZm9yIE5VTEwga2V5dmFsdWUgaW4gUmVnRW51bUtleUV4QS9XLgoKCSogY29udHJvbHMvbGlzdGJveC5jOgoJQ29tYm9MQlduZFByb2M6IGZhbGwgdGhyb3VnaCB0byBMaXN0Qm94V25kUHJvYyBpZiB0aGUgbGlzdGJveCBpcyBub3QgYQoJQ29tYm9MQm94LgoKCSogZG9jdW1lbnRhdGlvbi9zYW1wbGVzL2NvbmZpZzoKCVJlbW92ZWQgInNvIiBmcm9tIHRoZSBkZWZhdWx0IGxvYWQgb3JkZXIuCgoJKiBkbGxzL3VzZXIvbWVzc2FnZS5jLCBkbGxzL3VzZXIvbXNnMTYuYywgZGxscy91c2VyL3VzZXIuZXhlLnNwZWMsCgkgIGluY2x1ZGUvd2luZS93aW51c2VyMTYuaCwgd2luZG93cy9kaWFsb2cuYzoKCVRyaWVkIHRvIG1ha2UgSXNEaWFsb2dNZXNzYWdlVyBtb3JlIGNvbXBhdGlibGUuIENoYW5nZWQKCUlzRGlhbG9nTWVzc2FnZTE2L0EgdG8gY2FsbCBJc0RpYWxvZ01lc3NhZ2VXLgoKCSogdG9vbHMvd2luZWJ1aWxkL2ltcG9ydC5jLCB0b29scy93aW5lYnVpbGQvbWFpbi5jLAoJICB0b29scy93aW5lYnVpbGQvc3BlYzMyLmM6CglHcmVnZyBNYXR0aW5zb24gPGdtMTM4MjQyQHNjb3QuY2FuYWRhLnN1bi5jb20+CgktIFJlcGxhY2VkIC5wcmV2aW91cyB3aXRoIGEgLnNlY3Rpb24gc3RhdGVtZW50IGZvciB0aGUgYXBwcm9wcmlhdGUKCSAgc2VjdGlvbi4KCS0gJy5zZWN0aW9uIC50ZXh0JyBpcyBpbmNvcnJlY3QuICBJdCBzaG91bGQgYmUgJy5zZWN0aW9uICIudGV4dCInLgoKCSogZGxscy9tc3ZjcnQvaGVhcC5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJTVNWQ1JUX29wZXJhdG9yX25ldzogQ2FsbCBoYW5kbGVyIG9ubHkgd2hlbiAibmV3IiBvcGVyYXRpb24gZmFpbHMuCgoJKiBsb2FkZXIvbW9kdWxlLmM6CglKb3NodWEgVGhpZWxlbiA8dGhpZWxlbkBuZXRwcmluY2UubmV0PgoJQ2hhbmdlZCBHZXRNb2R1bGVGaWxlTmFtZUEgdG8gdXNlIEdldEN1cnJlbnRUYXNrIGluc3RlYWQgb2YKCU1PRFVMRTMyX0xvb2t1cEhNT0RVTEUgd2hlbiBjYWxsZWQgYnkgYSAxNi1iaXQgdGFzay4KCjIwMDItMDctMDMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL21zdmNydC9maWxlLmMsIGRsbHMvbXN2Y3J0L21pc2MuYywgZGxscy9zaGx3YXBpL29yZGluYWwuYywKCSAgZGxscy93aW5pbmV0L2h0dHAuYywgZGxscy93aW5tbS9sb2x2bGRydi5jLCBmaWxlcy9zbWIuYywKCSAgZ3JhcGhpY3MveDExZHJ2L2RpYi5jLCBtZW1vcnkvZ2xvYmFsLmMsIG1lbW9yeS9zZWxlY3Rvci5jLAoJICBtZW1vcnkvdmlydHVhbC5jLCB0b29scy93aW5lZHVtcC9wZS5jLCB3aW5kb3dzL3N5c2NvbG9yLmMsCgkgIGRlYnVnZ2VyL21vZHVsZS5jLCBkbGxzL2RwbGF5eC9kcGxheXhfZ2xvYmFsLmM6CglHcmVnZyBNYXR0aW5zb24gPGdtMTM4MjQyQHNjb3QuY2FuYWRhLnN1bi5jb20+CglDYXN0IHZvaWQqIHRvIGNoYXIqIGZvciBwb2ludGVyIGFyaXRobWV0aWMuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYzoKCUR1YW5lIENsYXJrIDxkY2xhcmtAYWthbWFpbC5jb20+CglzdHJjYXNlY21wIHJldHVybnMgemVybyBvbiBhIG1hdGNoLgoKCSogZGxscy9jb21jdGwzMi9wYWdlci5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmMsCgkgIGRsbHMvZGRyYXcvZGRyYXcvdGh1bmtzLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UvdGh1bmtzLmMsCgkgIGRsbHMvb2RiYzMyL3Byb3h5b2RiYy5jLCBkbGxzL3dpbnNvY2svc29ja2V0LmMsCgkgIHByb2dyYW1zL3dpbmVmaWxlL3dpbmVmaWxlLmM6CglHcmVnZyBNYXR0aW5zb24gPGdtMTM4MjQyQHNjb3QuY2FuYWRhLnN1bi5jb20+CglSZW1vdmVkIG5vbi1zdGF0aWMgc3RydWN0dXJlIGluaXRpYWxpemVycy4KCgkqIGRsbHMvd2luZWRvcy92Z2EuYzoKCUFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCUJldHRlciB0b2dnbGUgYWxsIHJlbGV2YW50IGJpdHMgaW4gVkdBIGNydCByZWdpc3Rlci4KCgkqIHNlcnZlci9tYWluLmMsIHNlcnZlci9vYmplY3QuaCwgc2VydmVyL3NvY2suYzoKCU1hcnRpbiBXaWxjayA8TWFydGluLldpbGNrQGZ1aml0c3Utc2llbWVucy5jb20+CglDaGVjayBQT0xMSFVQIHNlbWFudGljcyBhdCByZW1vdGUgc2h1dGRvd24gd2hlbiB3aW5lc2VydmVyIGlzIHN0YXJ0ZWQuCglGaXggc29ja2V0IHN0YXRlIGhhbmRsaW5nIGFuZCBldmVudCBoYW5kbGluZyBmb3Igbm9uLVNUUkVBTSBzb2NrZXRzLgoKCSogZ3JhcGhpY3MveDExZHJ2L2RpYi5jOgoJRml4ZWQgWDExRFJWX1NldERJQml0c1RvRGV2aWNlIHRvIGRvIHRoZSByaWdodCB0aGluZyBmb3IgdG9wLWRvd24KCWFuZC9vciBwYXJ0aWFsIGJpdG1hcHMuCgoJKiBkb2N1bWVudGF0aW9uL2RlYnVnZ2VyLnNnbWwsIGRvY3VtZW50YXRpb24vZGVidWdnaW5nLnNnbWw6CglUb255IExhbWJyZWd0cyA8dG9ueV9sYW1icmVndHNAdGVsdXNwbGFuZXQubmV0PgoJRG9jdW1lbnQgdGhlIG5ldyB0cmFjZS1yZWxhdGVkIHdpbmVkYmcgY29tbWFuZHMuCgoJKiBkbGxzL2RkcmF3L2RzdXJmYWNlL2Zha2V6YnVmZmVyLmMsIGRsbHMvbnRkbGwvcnRsc3RyLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYywgZGxscy91c2VyL3duZDE2LmM6CglHcmVnZyBNYXR0aW5zb24gPGdtMTM4MjQyQHNjb3QuY2FuYWRhLnN1bi5jb20+CglWb2lkIGZ1bmN0aW9ucyBjYW4ndCByZXR1cm4gYSB2YWx1ZSwgZXZlbiBpZiBpdCBpcyB0aGUgcmV0dXJuIHZhbHVlCglmcm9tIGFub3RoZXIgdm9pZCBmdW5jdGlvbi4KCgkqIGdyYXBoaWNzL3gxMWRydi9pbml0LmMsIGRsbHMvb3BlbmdsMzIvd2dsLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJRGV0ZWN0IERDcyB3aXRob3V0IGZvbnRzIGFuZCByZXR1cm4gYW4gZXJyb3IgaW4gd2dsVXNlQml0bWFwRm9udHMuCgoJKiBwcm9ncmFtcy93aW5oZWxwL21hY3JvLmxleC5sOgoJR3JlZ2cgTWF0dGluc29uIDxnbTEzODI0MkBzY290LmNhbmFkYS5zdW4uY29tPgoJUmVtb3ZlZCB1bnVzdWFsIHR5cGUgY2FzdGluZy4KCgkqIHByb2dyYW1zL3JlZ2VkaXQvcmVnZWRpdC5jOgoJR3JlZ2cgTWF0dGluc29uIDxnbTEzODI0MkBzY290LmNhbmFkYS5zdW4uY29tPgoJQXZvaWQgbXVsdGktbGluZSBzdHJpbmcgY29uc3RhbnRzLgoKCSogaW5jbHVkZS9zaGx3YXBpLmgsIGluY2x1ZGUvd2luZS9vYmpfc2hlbGxmb2xkZXIuaDoKCUdyZWdnIE1hdHRpbnNvbiA8Z20xMzgyNDJAc2NvdC5jYW5hZGEuc3VuLmNvbT4KCVJlbW92ZWQgZXh0cmEgLCBmcm9tIGxhc3QgZWxlbWVudCBpbiBlbnVtIGRlY2xhcmF0aW9ucy4KCgkqIGluY2x1ZGUvZHNvdW5kLmg6CglHcmVnZyBNYXR0aW5zb24gPGdtMTM4MjQyQHNjb3QuY2FuYWRhLnN1bi5jb20+CglSZW1vdmVkIGV4dHJhIDsgZnJvbSBlbmQgb2YgSUNPTV9NRVRIT0QgbWFjcm9zLgoKCSogZGxscy93aW5tbS93aW5lYWxzYS9hdWRpby5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBzb21lIG1vcmUgY29uZmlndXJhdGlvbiBpc3N1ZXMuCgoJKiBkbGxzL3dpbmVkb3MvaW50MTYuYzoKCUFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCU1ha2Ugc3VyZSB3ZSB3YWl0IHNvbWUgdGltZSBkdXJpbmcgaW50MTYga2V5Ym9hcmQgcXVlcnkgY2FsbC4KCgkqIGRsbHMvd2luZWRvcy92Z2EuYzoKCUFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCUFkZGVkIGEgRE9TIHRleHQgbW9kZSBtZW1vcnkgYnVmZmVyIGNvcHkgaW4gb3JkZXIgdG8gYmUgYWJsZSB0byB0ZWxsCgl3aGljaCBsaW5lcyBvZiB0ZXh0IGNoYW5nZWQgYW5kIHRodXMgd2hpY2ggb25lcyB0byB1cGRhdGUuCgoJKiBtc2Rvcy9pbnQyZi5jOgoJQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJQ2FsbCBTbGVlcCBmb3IgaW50IDB4MmYgZnVuY3Rpb24gMHgxNjgwIChJRExFIENBTEwpLgoKMjAwMi0wNy0wMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHByb2dyYW1zL3dpbmVjb25zb2xlL3VzZXIuYzoKCVJlbW92ZWQgcmVkdW5kYW50IEdldE1lc3NhZ2UgY2FsbC4KCgkqIGRsbHMvbXNhY20vbXNhZHAzMi9tc2FkcDMyLmMsIGRsbHMvc2hlbGwzMi9kZWJ1Z2hscC5oLAoJICBkbGxzL3dpbm1tL3dpbmVhbHNhL2F1ZGlvLmMsIGZpbGVzL3NtYi5jLCBsb2FkZXIvcGVfaW1hZ2UuYywKCSAgcHJvZ3JhbXMvY2xvY2svbGFuZ3VhZ2UuYywgcHJvZ3JhbXMvbm90ZXBhZC9sYW5ndWFnZS5jLAoJICBwcm9ncmFtcy93aW5oZWxwL3dpbmhlbHAuYzoKCUZpeGVkIHdhcm5pbmdzLgoKCSogZGxscy9NYWtlZmlsZS5pbiwgZGxscy9zaGx3YXBpL01ha2VmaWxlLmluLAoJICBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLCBkbGxzL3NobHdhcGkvc3RyaW5nLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW5zY2htaWVkQGx5Y29zLmRlPgoJLSBpbXBsZW1lbnRhdGlvbnMgZm9yIFNITFdBUElfMjY3LCBTSExXQVBJXzI2OAoJLSBzbWFsbCBmaXhlcwoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZ2Jyb3dzZXIuYywKCSAgZGxscy9zaGVsbDMyL2NsaXBib2FyZC5jLCBkbGxzL3NoZWxsMzIvZGVidWdobHAuYywKCSAgZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsb2xlLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGxzdHJpbmcuYywgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jLAoJICBkbGxzL3NoZWxsMzIvdW5kb2NzaGVsbC5oLCBpbmNsdWRlL3dpbmUvb2JqX3NoZWxsZm9sZGVyLmg6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW5zY2htaWVkQGx5Y29zLmRlPgoJLSBjaGFuZ2VkIFNUUlJFVCBkZWZpbml0aW9uCgktIHNtYWxsIGNoYW5nZXMgZm9yIHNlcGVyYXRpb24gb2Ygc2hlbGwzMiBmcm9tIG9sZTMyCgktIGRlYnVnaGVscGVyIGZvciBwcmludGluZyBpbnRlcmZhY2UgbmFtZXMgKHNoZWxsIGludGVybmFsKQoJLSBjaGFuZ2VkIHNoZWxsIG1lbW9yeSBhbGxvY2F0aW9uIHRvIHVzZSBJTWFsbG9jIG9mIG9sZTMyIHdoZW4gdGhpcwoJICBsaWJyYXJ5IGlzIGFscmVhZHkgbG9hZGVkCgktIGZhbGxiYWNrIElNYWxsb2MgaW50ZXJuYWxseSBpbiBzaGVsbAoJLSB1bmlmaWVkIGNvbnN0cnVjdG9yIHN5bnRheCBmb3Igc2V2ZXJhbCBvYmplY3RzICBjcmVhdGVkIGJ5IERsbEdldENsYXNzT2JqZWN0CgktIHJld3JvdGUgaW5zdGFuY2UgY3JlYXRpb24gZm9yIGNvbSBvYmplY3RzCgktIG1hZGUgdGhlIGRlc2t0b3AgZm9sZGVyIHBhcnNpbmcgcGF0aHMgbGlrZSA6OntDTFNJRH0KCS0gSW1wbGVtZW50ZWQgSVBlcnNpc3RGb2xkZXIzIHBhcnRpYWxseQoKMjAwMi0wNy0wMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHByb2dyYW1zL3dpbmVjb25zb2xlL3VzZXIuYywgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbnNvbGUuYywKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbnNvbGVfRGUucmMsCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25zb2xlX0VuLnJjLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZV9Gci5yYywKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbnNvbGVfcmVzLmgsCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25zb2xlX3Jlcy5yYywgc2VydmVyL2NvbnNvbGUuYzoKCUFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCS0gVXNlIFBlZWtNZXNzYWdlIGxvb3AgYXJvdW5kIEdldE1lc3NhZ2UuCgktIEFkZGVkIEdlcm1hbiByZXNvdXJjZSBmaWxlLgoJLSBSZWFsaWduIHNvbWUgZGlhbG9nIHBhcnRzLgoJLSAiUHJvcGVydHkiIC0+ICJQcm9wZXJ0aWVzIgoJLSBBZGQgc29tZSB0cmFjZXMuCgoJKiBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLCBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjOgoJLSBzdHVicyBmb3IgU0hMV0FQSS4yOTUgKGNyZWF0ZSBhIFVSTCBzaG9ydGN1dCA/KSBhbmQgU0hMV0FQSS4zOTQKCS0gbWlub3IgY2xlYW51cHMKCgkqIHdpbmVkZWZhdWx0LnJlZzoKCUFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCUFkZGVkIHRoZSBGaXJzdEluc3RhbGxEYXRlVGltZSBrZXkuCgoJKiBkbGxzL250ZGxsL2hlYXAuYzoKCU1ha2Ugc3VyZSBhbGxvY2F0ZWQgYmxvY2tzIGFyZSBhbGlnbmVkIG9uIGFuIDgtYnl0ZSBib3VuZGFyeS4KCgkqIGFjbG9jYWwubTQsIGNvbmZpZ3VyZToKCUhvcGVmdWxseSBtb3JlIHBvcnRhYmxlIGVycm5vIGNoZWNrLgoKCSogUkVBRE1FLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL21ha2VfZGxscywKCSAgZG9jdW1lbnRhdGlvbi9NYWtlZmlsZS5pbiwgTWFrZWZpbGUuaW46CglGaXhlZCBtYWtlIGluc3RhbGwgZnJvbSByZWFkLW9ubHkgYnVpbGQgZGlyZWN0b3J5IChzcG90dGVkIGJ5IE1hcmN1cwoJTWVpc3NuZXIpLgoKCSogd2luZG93cy9tZXNzYWdlLmM6CglSZWxlYXNlIHRoZSBXaW4xNiBsb2NrIGJlZm9yZSB3YWl0aW5nIGluIE1zZ1dhaXRGb3JNdWx0aXBsZU9iamVjdHNFeC4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBsaWJyYXJ5L2NvbmZpZy5jOgoJQWRkZWQgY29uZmlndXJlIGNoZWNrIGZvciBnZXRwd3VpZC4KCgkqIGRsbHMvbnRkbGwvdGltZS5jOgoJR3JlZ2cgTWF0dGluc29uIDxnbTEzODI0MkBzY290LmNhbmFkYS5zdW4uY29tPgoJQXZvaWQgYWxpZ25tZW50IHByb2JsZW0gaW4gTnRRdWVyeVN5c3RlbVRpbWUuCgoJKiBkbGxzL3dpbmVkb3MvaW50MTAuYywgZGxscy93aW5lZG9zL3ZnYS5jLCBkbGxzL3dpbmVkb3MvdmdhLmgsCgkgIGluY2x1ZGUvbWlzY2VtdS5oOgoJQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJSW1wbGVtZW50ZWQgc2V0IGN1cnNvciBzaGFwZSBmdW5jdGlvbmFsaXR5LgoKCSogZmlsZXMvcHJvZmlsZS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VtQGNvZGV3ZWF2ZXJzLmNvbT4KCVJldHVybiB0aGUgY29ycmVjdCBsZW5ndGggd2hlbiBnZXR0aW5nIGEgY29tcGxldGUgc2VjdGlvbiBpbgoJUFJPRklMRV9HZXRTdHJpbmcuCgoJKiBkbGxzL29sZTMyL2hnbG9iYWxzdHJlYW0uYywgZGxscy9vbGUzMi9pZnMuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbnNjaG1pZWRAbHljb3MuZGU+CglTdXBwb3J0IGZvciBsYXJnZSBhbmQgbmVnYXRpdmUgb2Zmc2V0cy4KCjIwMDItMDYtMjggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBvYmplY3RzL2JpdG1hcC5jOgoJQklUTUFQX1NlbGVjdE9iamVjdCBtdXN0IHJldHVybiB0aGUgb2xkIGhhbmRsZSwgbm90IHRoZSBjdXJyZW50IG9uZS4KCgkqIHdpbmRvd3MvZGVmZGxnLmM6CglDaGVjayBmb3IgdmFsaWQgZGlhbG9nIGluZm8gYmVmb3JlIHVzaW5nIGl0LgoKCSogZGxscy9zaGVsbDMyL2RpYWxvZ3MuYzoKCU5peCBOLiBOaXggPG5peEBnby1uaXguY2E+CglSZW1vdmVkIG1lc3NhZ2UgYm94IHRoYXQgd291bGQgcG9wIHVwIGlmIGEgUnVuTVJVIGxpc3Qgd2FzIG5vdCBmb3VuZC4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsX1NpLnJjLCBkbGxzL2NvbWN0bDMyL3JzcmMucmMsCgkgIGRsbHMvY29tbWRsZy9jZGxnX1NpLnJjLCBkbGxzL2NvbW1kbGcvcnNyYy5yYzoKCVJvayBNYW5kZWxqYyA8cm9rbWFuZGVsamNAaG90bWFpbC5jb20+CglBZGRlZCBTbG92ZW5pYW4gcmVzb3VyY2VzLgoKCSogZGxscy91c2VyL3Rlc3RzL3N5c3BhcmFtcy5jLCB3aW5kb3dzL3N5c3BhcmFtcy5jOgoJUGhpbGlwcCBXb2xsZXJtYW5uIDxwaGlsX3dvQGdteC5uZXQ+CglJbXBsZW1lbnRlZCBTUElfR0VUREVTS1dBTExQQVBFUiBhY3Rpb24sIGZpeGVkIFNQSV9TRVRERVNLV0FMTFBBUEVSLgoKCSogZGxscy9kZHJhdy9kc3VyZmFjZS91c2VyLmM6CglKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglEaXNhYmxlIE9XTl9XSU5ET1cgYXMgaXQgbm8gbG9uZ2VyIHdvcmtzLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvd2lubW0vd2luZWFsc2EvTWFrZWZpbGUuaW4sCgkgIGRsbHMvd2lubW0vd2luZWFsc2EvYWxzYS5oLCBpbmNsdWRlL2NvbmZpZy5oLmluOgoJQWRkZWQgc29tZSBBTFNBIGNvbmZpZ3VyZSBjaGVja3MuCgoJKiBjb25maWd1cmUuYWMsIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vd2luZWFsc2EvLmN2c2lnbm9yZSwKCSAgZGxscy93aW5tbS93aW5lYWxzYS9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS93aW5lYWxzYS9hbHNhLmMsCgkgIGRsbHMvd2lubW0vd2luZWFsc2EvYWxzYS5oLCBkbGxzL3dpbm1tL3dpbmVhbHNhL2F1ZGlvLmMsCgkgIGRsbHMvd2lubW0vd2luZWFsc2EvYXVkaW9fMDUuYywKCSAgZGxscy93aW5tbS93aW5lYWxzYS93aW5lYWxzYS5kcnYuc3BlYywgY29uZmlndXJlOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglDcmVhdGVkIGFuIEFMU0EgZHJpdmVyICh3aXRoIHRoZSBoZWxwIG9mIERhdmlkIEhhbW1lcnRvbiBhbmQgTWFyY28KCVBpZXRyb2Jvbm8pLgoKCSogZ3JhcGhpY3MveDExZHJ2L2dyYXBoaWNzLmM6CglGaXhlZCB0eXBvIGluIFgxMURSVl9TZXRQaXhlbC4KCgkqIGRsbHMvYWR2YXBpMzIvY3J5cHQuaCwgZGxscy9yaWNoZWRpdC9jaGFybGlzdC5oLAoJICBkbGxzL3R3YWluL3R3YWluLmgsIGRsbHMvd3NvY2szMi93c2NvbnRyb2wuaCwKCSAgaW5jbHVkZS93bmFzcGkzMi5oLCBwcm9ncmFtcy9ub3RlcGFkL2xhbmd1YWdlLmMsCgkgIHByb2dyYW1zL25vdGVwYWQvbGFuZ3VhZ2UuaCwgcHJvZ3JhbXMvbm90ZXBhZC9tYWluLmMsCgkgIHByb2dyYW1zL3dpbmVmaWxlL3NwbGl0cGF0aC5jLCBwcm9ncmFtcy93aW5lZmlsZS93aW5lZmlsZS5jLAoJICBwcm9ncmFtcy93aW5lZmlsZS93aW5lZmlsZS5oOgoJR3JlZ2cgTWF0dGluc29uIDxnbTEzODI0MkBzY290LmNhbmFkYS5zdW4uY29tPgoJUmVtb3ZlZCBDKysgc3R5bGUgY29tbWVudHMuCgoJKiBkbGxzL3NobHdhcGkvdGVzdHMvc2hyZWcuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJTm8gbG9uZ2VyIGRlcGVuZHMgb24gZXh0ZXJuYWwgZW52IHN0cmluZ3MgdmFsdWVzLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGdicm93c2VyLmM6CglTYW5kZXIgdmFuIExlZXV3ZW4gPHNhbmRlcnZsQHhzNGFsbC5ubD4KCURvIG5vdCBjaGFuZ2UgZGlyZWN0b3J5IGlmIHBhdGggaXMgaW52YWxpZC4KCgkqIGRsbHMvc2hlbGwzMi9jaGFuZ2Vub3RpZnkuYzoKCUtudXQgU3QuIE9zbXVuZHNlbiA8YmlyZEBhbmR1aW4ubmV0PgoJRG8gbm90IGFjY2VzcyBtZW1vcnkgdGhhdCBoYXMganVzdCBiZWVuIGZyZWVkLgoKCSogd2luZG93cy9zcHkuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CgktIEFkZCBzdXBwb3J0IGZvciBVcERvd24gY29udHJvbCBtZXNzYWdlcy4KCS0gQWRkIGRldGVjdGlvbiBmb3IgV2luZSdzIFByb3BlcnR5U2hlZXQgRGlhbG9nIHRvIHRyYW5zbGF0ZQoJICBtZXNzYWdlcy4KCgkqIHByb2dyYW1zL3JlZ2VkaXQvcmVncHJvYy5jLCBwcm9ncmFtcy9yZWdlZGl0L3Rlc3RzL29yaWcucmVnLAoJICBwcm9ncmFtcy9yZWdlZGl0L3Rlc3RzL3JlZ2VkaXQucGw6CglBbmRyaXkgUGFsYW1hcmNodWsgPGFwYTNhQHlhaG9vLmNvbT4KCUZpeGVkIGEgZmV3IGJ1Z3MsIGFkZGVkIHByb2Nlc3Npbmcgb2YgUkVHX01VTFRJX1NaIGZvcm1hdC4KCgkqIGRsbHMvZGRyYXcvZHN1cmZhY2UvZGliLmM6CglUb255IExhbWJyZWd0cyA8dG9ueV9sYW1icmVndHNAdGVsdXNwbGFuZXQubmV0PgoJQWRkZWQgc3VwcG9ydCBmb3IgRERCTFRfS0VZU1JDT1ZFUlJJREUvRERCTFRfS0VZREVTVE9WRVJSSURFLgoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglBZGQgVENNX1NFVENVUlNFTCB3aGVuIHNldHRpbmcgcGFnZSBjdXJyZW50LgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUVuc3VyZWQgZnVsbCBkdXBsZXggbW9kZSBpcyBvbmx5IHVzZWQgd2l0aCBzYW1lIHBhcmFtZXRlcnMgaW4gaW4vb3V0CglzdHJlYW1zLgoJU29tZSBtb3JlIHdvcmsgdG93YXJkcyBtdWx0aXBsZSBhdWRpbyBjYXJkcyBzdXBwb3J0LgoKMjAwMi0wNi0yNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvZ2RpLmgsIG9iamVjdHMvY2xpcHBpbmcuYywgZGxscy9nZGkvd2luMTZkcnYvZ3JhcGhpY3MuYywKCSAgZGxscy9nZGkvd2luMTZkcnYvaW5pdC5jLCBkbGxzL2dkaS93aW4xNmRydi90ZXh0LmMsCgkgIGRsbHMvZ2RpL3dpbjE2ZHJ2L3dpbjE2ZHJ2LmgsIGRsbHMvd2luZXBzL3RleHQuYywKCSAgZ3JhcGhpY3MvbWFwcGluZy5jLCBncmFwaGljcy9wYXRoLmMsIGdyYXBoaWNzL3gxMWRydi9iaXRibHQuYywKCSAgZ3JhcGhpY3MveDExZHJ2L2RpYi5jLCBncmFwaGljcy94MTFkcnYvZ3JhcGhpY3MuYywKCSAgZ3JhcGhpY3MveDExZHJ2L3RleHQuYzoKCVJlcGxhY2VkIExQVE9EUC9EUFRPTFAgbWFjcm9zIGJ5IGNhbGxzIHRvIExQdG9EUC9EUHRvTFAgKHdpdGggdGhlIGhlbHAKCW9mIEh1dyBEYXZpZXMpLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvZDNkOC8uY3ZzaWdub3JlLAoJICBkbGxzL2QzZDgvTWFrZWZpbGUuaW4sIGRsbHMvZDNkOC9kM2Q4LnNwZWMsCgkgIGRsbHMvZDNkOC9kM2Q4X21haW4uYzoKCVN5bHZhaW4gUGV0cmVvbGxlIDxzcGV0cmVvbGxlQHlhaG9vLmZyPgoJQ3JlYXRlZCBkM2Q4IHN0dWIgZGxsLgoKCSogaW5jbHVkZS9tYXBpZGVmcy5oLCBpbmNsdWRlL3d0eXBlcy5oOgoJRml4ZWQgZW5kaWFubmVzcyAjaWZkZWZzIChzcG90dGVkIGJ5IEphc29uIEVkbWVhZGVzKS4KCgkqIGRsbHMvd2lubW0vbW1zeXN0ZW0uYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgZmxhZ3MgaGFuZGxpbmcgaW4gc25kUGxheVNvdW5kLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jOgoJSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCUZpeGVkIGNyYXNoIGluIG9wZW4gZmlsZSBkaWFsb2cgb24gbm9uLXdpbmRvd3MgOTggZW11bGF0aW9uIHdoZW4KCWxwc3pJbml0aWFsRGlyIGlzIG51bGwuCgoJKiBkbGxzL29sZWF1dDMyL29sZWZvbnQuYzoKCUphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglFbnN1cmUgd2UgZnJlZSB0aGUgY2FjaGVkIEhGT05UIGFmdGVyIGxvYWRpbmcgaW4gYSBmcmVzaCBmb250LiBFbmFibGVzCglmb250cyBpbiBWQiBwcm9ncmFtcyB0byBhcHBlYXIgY29ycmVjdGx5LgoKCSogbWVtb3J5L2NvZGVwYWdlLmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJRml4ZWQgbmFzdHkgYnVnIGZvciAyKyBieXRlIG11bHRpYnl0ZSBzdHJpbmdzIGFuZCBHZXRTdHJpbmdUeXBlLgoJRmxlc2hlZCBvdXQgR2V0U3RyaW5nVHlwZSBDVFlQRTMgZnJvbSB0aGUgdW5pY29kZSB0YWJsZXMuCglDUF9TWU1CT0wgaXMgbm90IGEgdmFsaWQgY29kZXBhZ2Ugd2hpbGUgQ1BfVVRGN3w4IGFyZS4KCgkqIGRvY3VtZW50YXRpb24vd2luZS5jb25mLm1hbiwgaW5jbHVkZS9tb2R1bGUuaCwKCSAgbG9hZGVyL2xvYWRvcmRlci5jLCBsb2FkZXIvbWFpbi5jLCBsb2FkZXIvbW9kdWxlLmM6CglBZGRlZCBzdXBwb3J0IGZvciBwYXRoIHdpbGRjYXJkcyBvZiB0aGUgZm9ybSAiKmRsbG5hbWUiIGluIGxvYWQgb3JkZXIKCXNwZWNpZmljYXRpb25zLgoJT25seSB1c2Ugd2lsZGNhcmQgZW50cnkgZm9yIGRsbHMgdGhhdCBkb24ndCBzcGVjaWZ5IGFuIGV4cGxpY2l0IHBhdGguCglSZW1vdmVkIHRoZSBvbGQgRGxsT3ZlcnJpZGVzIHN5bnRheCBzdXBwb3J0LgoJTWlzYyBjbGVhbnVwcyBhbmQgb3B0aW1pemF0aW9ucy4KCjIwMDItMDYtMjQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3dpbmVwcy9NYWtlZmlsZS5pbiwgZGxscy93aW5lcHMvYnJ1c2guYywKCSAgZGxscy93aW5lcHMvYnVpbHRpbi5jLCBkbGxzL3dpbmVwcy9kb3dubG9hZC5jLAoJICBkbGxzL3dpbmVwcy9kcml2ZXIuYywgZGxscy93aW5lcHMvZXNjYXBlLmMsIGRsbHMvd2luZXBzL2ZvbnQuYywKCSAgZGxscy93aW5lcHMvcHBkLmMsIGRsbHMvd2luZXBzL3BzLmMsIGRsbHMvd2luZXBzL3BzZHJ2LmgsCgkgIGRsbHMvd2luZXBzL3RleHQuYywgZGxscy93aW5lcHMvdHlwZTEuYywgZGxscy93aW5lcHMvdHlwZTQyLmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglBZGRlZCBUeXBlIDEgYW5kIFR5cGUgNDIgZm9udCBkb3dubG9hZGluZy4KCU1pc2MgYnVnIGZpeGVzLgoKCSogZGxscy93aW5lcHMvaW5pdC5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJSGFuZGxlIGRtU2NhbGUuCgoJKiBkbGxzL3dpbmVwcy9jbGlwcGluZy5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJcHNkcnYgZG9lc24ndCBjYXJlIGFib3V0IGhHQ0NsaXBSZ24sIGp1c3QgdXNlIEdldENsaXBSZ24gaW5zdGVhZC4KCgkqIGRsbHMvd2luZXBzL2FmbS5jLCBkbGxzL3dpbmVwcy9nbHlwaGxpc3QuYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUdldCByaWQgb2YgYSBmZXcgdGhvdXNhbmQgdXNlbGVzcyBUUkFDRSBsaW5lcy4KCgkqIGRsbHMvd2luZXBzL3R5cGUxYWZtLmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglBZGRlZCBhZm0gd2VpZ2h0ICJOT1JNQUwiLgoKCSogaW5jbHVkZS93aW5nZGkuaCwgb2JqZWN0cy9lbmhtZXRhZmlsZS5jOgoJVWxyaWNoIEN6ZWthbGxhIDx1Y3pla2FsbGFAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgdGVtcCBmaXggZm9yIHdvcmxkIHRyYW5zZm9ybSBidWcgaW4gU2V0V2luZG93T3JnRXggaGFuZGxlci4KCUFkZGVkIGhhbmRsZXJzIGZvciBFTVJfU0VUVEVYVEpVU1RJRklDQVRJT04gYW5kIEVNUl9TRVRMQVlPVVQuCgoJKiBkbGxzL2dkaS9tZmRydi90ZXh0LmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglEb24ndCBtYXAgc3ltYm9sIGNoYXJzZXQgdGhyb3VnaCBXQ1RvTUIuCgoJKiBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZS5jOgoJQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJTWFkZSBpbml0aWFsaXphdGlvbiBtb3JlIHZlcmJvc2UgaW4gY2FzZSBvZiBlcnJvcnMuCgoJKiBjb25maWd1cmUuYWMsIGluY2x1ZGUvY29uZmlnLmguaW4sIGxpYnJhcnkvY29uZmlnLmMsIGNvbmZpZ3VyZToKCVN0ZXZlbiBFZHdhcmRzIDxzdGV2ZW5fZWQ0MTUzQHlhaG9vLmNvbT4KCUFkZGVkIGNoZWNrIGZvciBwd2QuaC4KCgkqIGRsbHMvd2luZWRvcy9pb3BvcnRzLmMsIGRsbHMvd2luZWRvcy92Z2EuYzoKCUp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCVJlZGlyZWN0IGFsbCByZWFkcyBhbmQgd3JpdGVzIHRvIFZHQSBjb250cm9sbGVyIHRvIFZHQSBlbXVsYXRpb24uCglDYXRjaCBhbmQgcmVwb3J0IDE2LzMyLWJpdCByZWFkcy93cml0ZXMgdG8gVkdBIGNvbnRyb2xsZXIuCglVc2UgY29ycmVjdCBmbGFncyB3aGVuIGNyZWF0aW5nIGZ1bGwgc2NyZWVuIERpcmVjdERyYXcgd2luZG93IGZvcgoJVkdBLgoKCSogZGxscy93aW5lZG9zL2ludDY3LmM6CglKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglBZGQgc2F2ZS9yZXN0b3JlIG1hcHBpbmcgY29udGV4dCByb3V0aW5lcy4KCUFkZCBtYXAgbXVsdGlwbGUgcGFnZXMgcm91dGluZS4KCUFkZCBwYXJ0aWFsIGltcGxlbWVudGF0aW9uIG9mIGhhcmR3YXJlIGluZm9ybWF0aW9uIHF1ZXJ5IHJvdXRpbmUuCglSZXBsYWNlIGluY29ycmVjdCB1c2Ugb2YgTWFwU0wgd2l0aCBQVFJfUkVBTF9UT19MSU4uCgoyMDAyLTA2LTIyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2VydmVyL3RocmVhZC5jOgoJVW5sb2NrIHRoZSBtYXN0ZXIgc29ja2V0IGlmIHRoZSBib290IHRocmVhZCB0ZXJtaW5hdGVzIGVhcmx5LgoJQXZvaWQgY3Jhc2ggaWYgdGhyZWFkIGRpZWQgZHVyaW5nIHRpbWVvdXQgd2FrZXVwLgoKCSogZGxscy9nZGkvZnJlZXR5cGUuYywgZGxscy9nZGkvZ2RpMzIuc3BlYywgaW5jbHVkZS9mb250LmgsCgkgIGluY2x1ZGUvd2luZ2RpLmgsIG9iamVjdHMvZm9udC5jLCBvYmplY3RzL3RleHQuYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gSW1wbGVtZW50IEFkZEZvbnRSZXNvdXJjZSosIGFkZCBzdHVicyBmb3IgUmVtb3ZlRm9udFJlc291cmNlKi4KCS0gQWRkIHN1cHBvcnQgZm9yIEdHT19CRVpJRVIgYW5kIGEgZmV3IGJ1ZyBmaXhlcyBmb3IgR0dPX05BVElWRS4KCS0gTXVjaCBiZXR0ZXIgc3VwcG9ydCBmb3Igbm9uIGFuc2kgY2hhcnNldHMgaW4gZm9udCBtYXRjaGluZy4KCS0gUHJvcGVyIGltcGxlbWVudGF0aW9uIG9mIEdldFRleHRGYWNlIGZvciBnZGkgZm9udC4KCS0gTG9hZCBmb250cyB0aGF0IGFyZSBsaXN0ZWQgaW4gdGhlIHJlZ2lzdHJ5IGJ1dCBhcmVuJ3QgaW4KCSAgJVdJTkRPV1NESVIlXGZvbnRzLgoJLSBSZXZlcnQgVHJhbnNsYXRlQ2hhcnNldEluZm8gdG8gdXNlIGNvZGVwYWdlIDEyNTIgd2l0aCBBTlNJX0NIQVJTRVQuCgktIEFkZCBzdXBwb3J0IGZvciBWSUVUTkFNRVNFX0NIQVJTRVQgYW5kIFNZTUJPTF9DSEFSU0VULgoKCSogZGxscy94MTFkcnYva2V5Ym9hcmQuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBCdWxnYXJpYW4ga2V5Ym9hcmRzLgoKCSogZGxscy94MTFkcnYveHJlbmRlci5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJU3RvcmUgdGhlIGNhY2hlIGVudHJ5IGluZGljZXMgYW5kIG5vdCB0aGUgcHRycy4KCVByb3RlY3QgY2FjaGUgd2l0aCBhIGNyaXRpY2FsIHNlY3Rpb24uCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9maWxlLmMsIGRsbHMva2VybmVsL3Rlc3RzL3BhdGguYywKCSAgZGxscy9rZXJuZWwvdGVzdHMvcHJvY2Vzcy5jLCBkbGxzL2tlcm5lbC90ZXN0cy90aHJlYWQuYywKCSAgZGxscy9zaGx3YXBpL3Rlc3RzL3NocmVnLmMsIGRsbHMvdXNlci90ZXN0cy9jbGFzcy5jLAoJICBkbGxzL3dpbnNvY2svdGVzdHMvc29jay5jLCBpbmNsdWRlL3dpbmUvdGVzdC5oLAoJICBwcm9ncmFtcy93aW5ldGVzdC93dG1haW4uYzoKCUFkZGVkIHByaW50ZiBmb3JtYXQgY2hlY2tpbmcgdG8gdGhlIG9rKCkgYW5kIHRyYWNlKCkgbWFjcm9zLCBhbmQgZml4ZWQKCXRoZSByZXN1bHRpbmcgd2FybmluZ3MuCgoyMDAyLTA2LTIxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvd2luaW5ldC8uY3ZzaWdub3JlLAoJICBkbGxzL3dpbmluZXQvTWFrZWZpbGUuaW4sIGRsbHMvd2luaW5ldC9odHRwLmMsCgkgIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jLCBkbGxzL3dpbmluZXQvaW50ZXJuZXQuaCwKCSAgZGxscy93aW5pbmV0L3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMvd2luaW5ldC90ZXN0cy9odHRwLmMsCgkgIGRsbHMvd2luaW5ldC91cmxjYWNoZS5jLCBkbGxzL3dpbmluZXQvdXRpbGl0eS5jLAoJICBkbGxzL3dpbmluZXQvdmVyc2lvbi5yYywgZGxscy93aW5pbmV0L3dpbmluZXQuc3BlYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglSZXdvcmtpbmcgb2YgaHR0cCBhbmQgYXN5bmNyb25vdXMgY2FsbHMgdG8gZ2V0IElFNiB0byBpbnN0YWxsLgoJQWRkZWQgYSB2ZXJzaW9uIHJlc291cmNlLgoJQWRkZWQgdW5pdCB0ZXN0IGZvciBodHRwLgoKCSogZGxscy9hZHZhcGkzMi9jcnlwdC5jLCBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmMsCgkgIGRsbHMvb2xlMzIvb2xlb2JqLmMsIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jLAoJICBkbGxzL3gxMWRydi93aW5wb3MuYywgY29udHJvbHMvYnV0dG9uLmM6CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglGaXhlZCBzb21lIHZhcmlvdXMgY29tcGFyaXNvbnMgd3J0IHNpZ25lZG5lc3MuCgoJKiBkbGxzL29sZTMyL2NvbXBvYmouYzoKCUZpeGVkIENMU0lERnJvbVN0cmluZyBlbmRpYW5uZXNzIGFzc3VtcHRpb25zIChyZXBvcnRlZCBieSBHcmVnZyBNYXR0aW5zb24pLgoKCSogZGxscy9tc3ZjcnQyMC9NYWtlZmlsZS5pbiwgZGxscy9tc3ZjcnQyMC9kdW1teS5jLAoJICBkbGxzL21zdmNydDIwL21zdmNydDIwLmMsIGRsbHMvbXN2Y3J0MjAvbXN2Y3J0MjAuc3BlYzoKCWdldG1haW5hcmdzOiBuZXdfbW9kZSBhcmd1bWVudCBpcyBub3QgYSBwb2ludGVyIGluIG1zdmNydDIwIChzcG90dGVkCglieSBCaWxsIE1lZGxhbmQpLgoKCSogZGxscy94MTFkcnYva2V5Ym9hcmQuYzoKCVJvayBNYW5kZWxqYyA8cm9rbWFuZGVsamNAaG90bWFpbC5jb20+CglBZGRlZCBTbG92ZW5pYW4ga2V5Ym9hcmQuCgoJKiBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYzoKCUpvaG4gSy4gSG9obSA8amhvaG1AYWNtLm9yZz4KCUltcGxlbWVudGVkIFNpemVPZlZhcmlhbnREYXRhIGNhc2VzIGZvciBWVF9ESVNQQVRDSCwgVlRfVU5LTk9XTiwgVlRfQ1kuCgoJKiBwcm9ncmFtcy9yZWdlZGl0L3Rlc3RzL29yaWcucmVnOgoJQmlsbCBNZWRsYW5kIDxtZWRiaTAxQGFjY3BhYy5jb20+CglUZXN0IHRoZSBhYmlsaXR5IHRvIGhhbmRsZSBoZXggdmFsdWVzIGluIGV4Y2VzcyBvZiAxMDI0IGJ5dGVzIGFuZAoJaW5wdXQgbGluZXMgaW4gZXhjZXNzIG9mIDQwOTYgYnl0ZXMuCgoJKiBwcm9ncmFtcy9yZWdlZGl0L3JlZ3Byb2MuYzoKCUJpbGwgTWVkbGFuZCA8bWVkYmkwMUBhY2NwYWMuY29tPgoJLSBSZXdvcmsgdGhlIGxpbmUgcmVhZGluZy4gIFRoaXMgdmVyc2lvbiB1c2VzIGEgc2luZ2xlIGV4cGFuZGluZwoJICBidWZmZXIgcmF0aGVyIHRoYW4gYSBtYWluIGJ1ZmZlciBhbmQgYSAibmV4dCBsaW5lIiBidWZmZXIuICBUaGlzCgkgIHZlcnNpb24gZG9lcyBub3Qgb3ZlcmZsb3cgdGhlIGFsbG9jYXRlZCBtZW1vcnkgKGhvcGVmdWxseSkuICBUaGUKCSAgcHJldmlvdXMgdmVyc2lvbiBkaWQgd2hlbiBjb25jYXRlbmF0aW5nIHRoZSBjb250aW51YXRpb24gbGluZXMuCgktIEFkZCBwcm90ZWN0aW9uIHRvIHRoZSBIZXhDU1ZUb0hleCB0byBwcmV2ZW50IG92ZXJmbG93LgoJLSBBbGxvdyBmb3IgY29udmVyc2lvbiBvZiBsYXJnZXIgaGV4IHZhbHVlcy4gIFRlc3RlZCBvbiBhIHJlYWwgMi42S0IKCSAgdmFsdWUuCgoJKiBwcm9ncmFtcy9yZWdlZGl0L3Rlc3RzL3JlZ2VkaXQucGw6CglCaWxsIE1lZGxhbmQgPG1lZGJpMDFAYWNjcGFjLmNvbT4KCUNvcnJlY3QgdGhlIGNvbXBhcmlzb24gb2YgdHdvIGZpbGVzLiAgSnVzdCBiZWNhdXNlIHRoZXkgYXJlIHRoZSBzYW1lCglzaXplIGRvZXNuJ3QgbWVhbiB0aGV5IGhhdmUgdGhlIHNhbWUgY29udGVudC4KCgkqIGRsbHMvbnRkbGwvc2lnbmFsX3NwYXJjLmM6CglHcmVnZyBNYXR0aW5zb24gPGdtMTM4MjQyQHNjb3QuY2FuYWRhLnN1bi5jb20+CglJbXBsZW1lbnRlZCBEYmdCcmVha1BvaW50IGFuZCBEYmdVc2VyQnJlYWtQb2ludCBmb3IgU3BhcmMuICBEZWJ1Z2dlcgoJbXVzdCBhbHJlYWR5IGJlIGF0dGFjaGVkIGZvciB0aGlzIGltcGxlbWVudGF0aW9uIHRvIHdvcmsuCgoJKiBpbmNsdWRlL3JwY3Byb3h5Lmg6CglHcmVnZyBNYXR0aW5zb24gPGdtMTM4MjQyQHNjb3QuY2FuYWRhLnN1bi5jb20+CglNb3ZlZCBhbGwgI2luY2x1ZGVzIHRvIHRoZSB0b3Agc28gdGhhdCBfX3N0ZGNhbGwgaXMgZGVmaW5lZCBmb3IgdGhlCglkZWNsYXJhdGlvbiBvZiBJSURMb29rdXBSdG4uCgoJKiBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmMsIGRsbHMvc2hlbGwzMi9zaGVsbC5jOgoJU3RldmVuIEVkd2FyZHMgPFN0ZXZlbl9FZDQxNTNAeWFob28uY29tPgoJTW92ZWQgYSBmZXcgd2luMzIgZnVuY3Rpb25zIHRvIGEgYmV0dGVyIGxvY2F0aW9uIGZvciBidWlsZGluZyBhIFdpbjMyCglvbmx5IGRsbC4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy93aW5lb3NzLmRydi5zcGVjLCBkbGxzL3dpbm5scy93aW5ubHMuc3BlYywKCSAgZGxscy93aW5ubHMvd2lubmxzMzIuc3BlYywgZGxscy93aW5zb2NrL3dpbnNvY2suc3BlYywKCSAgZGxscy93aW5zb2NrL3dzMl8zMi5zcGVjLCBkbGxzL3dpbnNwb29sL3dpbnNwb29sLmRydi5zcGVjLAoJICBkbGxzL3dpbnRydXN0L3dpbnRydXN0LnNwZWMsIGRsbHMvd293MzIvd293MzIuc3BlYywKCSAgZGxscy93c29jazMyL3dzb2NrMzIuc3BlYywgZGxscy94MTFkcnYveDExZHJ2LnNwZWMsCgkgIG1pc2NlbXUvTWFrZWZpbGUuaW4sIG1pc2NlbXUvd2luZS5zcGVjLCB0b29scy93aW5lYnVpbGQvUkVBRE1FLAoJICB0b29scy93aW5lYnVpbGQvaW1wb3J0LmMsIHRvb2xzL3dpbmVidWlsZC9tYWluLmMsCgkgIHRvb2xzL3dpbmVidWlsZC9wYXJzZXIuYywgdG9vbHMvd2luZWJ1aWxkL3NwZWMxNi5jLAoJICB0b29scy93aW5lYnVpbGQvc3BlYzMyLmMsIGRsbHMvdXNlci9kZGVtbC5zcGVjLAoJICBkbGxzL3VzZXIvZGlzcGxheS5zcGVjLCBkbGxzL3VzZXIva2V5Ym9hcmQuc3BlYywKCSAgZGxscy91c2VyL21vdXNlLnNwZWMsIGRsbHMvdXNlci91c2VyLmV4ZS5zcGVjLAoJICBkbGxzL3VzZXIvdXNlcjMyLnNwZWMsIGRsbHMvdmVyc2lvbi92ZXIuc3BlYywKCSAgZGxscy92ZXJzaW9uL3ZlcnNpb24uc3BlYywgZGxscy93aW4zMnMvdzMyc2tybmwuc3BlYywKCSAgZGxscy93aW4zMnMvdzMyc3lzLnNwZWMsIGRsbHMvd2luMzJzL3dpbjMyczE2LnNwZWMsCgkgIGRsbHMvd2luYXNwaS93aW5hc3BpLnNwZWMsIGRsbHMvd2luYXNwaS93bmFzcGkzMi5zcGVjLAoJICBkbGxzL3dpbmVkb3Mvd2luZWRvcy5zcGVjLCBkbGxzL3dpbmVwcy93aW5lcHMuc3BlYywKCSAgZGxscy93aW5lcHMvd2luZXBzMTYuc3BlYywgZGxscy93aW5pbmV0L3dpbmluZXQuc3BlYywKCSAgZGxscy93aW5tbS9qb3lzdGljay9qb3lzdGljay5kcnYuc3BlYywKCSAgZGxscy93aW5tbS9tY2lhbmltL21jaWFuaW0uZHJ2LnNwZWMsCgkgIGRsbHMvd2lubW0vbWNpYXZpL21jaWF2aS5kcnYuc3BlYywKCSAgZGxscy93aW5tbS9tY2ljZGEvbWNpY2RhLmRydi5zcGVjLAoJICBkbGxzL3dpbm1tL21jaXNlcS9tY2lzZXEuZHJ2LnNwZWMsCgkgIGRsbHMvd2lubW0vbWNpd2F2ZS9tY2l3YXZlLmRydi5zcGVjLAoJICBkbGxzL3dpbm1tL21pZGltYXAvbWlkaW1hcC5kcnYuc3BlYywgZGxscy93aW5tbS9tbXN5c3RlbS5zcGVjLAoJICBkbGxzL3dpbm1tL3NvdW5kLnNwZWMsIGRsbHMvd2lubW0vd2F2ZW1hcC9tc2FjbS5kcnYuc3BlYywKCSAgZGxscy93aW5tbS93aW5lYXJ0cy93aW5lYXJ0cy5kcnYuc3BlYywgZGxscy93aW5tbS93aW5tbS5zcGVjLAoJICBkbGxzL29wZW5nbDMyL29wZW5nbDMyLnNwZWMsIGRsbHMvcHNhcGkvcHNhcGkuc3BlYywKCSAgZGxscy9xY2FwL3FjYXAuc3BlYywgZGxscy9xdWFydHovcXVhcnR6LnNwZWMsCgkgIGRsbHMvcmFzYXBpMzIvcmFzYXBpMTYuc3BlYywgZGxscy9yYXNhcGkzMi9yYXNhcGkzMi5zcGVjLAoJICBkbGxzL3JpY2hlZGl0L3JpY2hlZDMyLnNwZWMsIGRsbHMvcnBjcnQ0L3JwY3J0NC5zcGVjLAoJICBkbGxzL3NlcmlhbHVpL3NlcmlhbHVpLnNwZWMsIGRsbHMvc2V0dXBhcGkvc2V0dXBhcGkuc3BlYywKCSAgZGxscy9zZXR1cGFwaS9zZXR1cHguc3BlYywgZGxscy9zaGRvY3Z3L3NoZG9jdncuc3BlYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsCgkgIGRsbHMvc2hmb2xkZXIvc2hmb2xkZXIuc3BlYywgZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYywKCSAgZGxscy9zbm1wYXBpL3NubXBhcGkuc3BlYywgZGxscy9zdGkvc3RpLnNwZWMsCgkgIGRsbHMvdGFwaTMyL3RhcGkzMi5zcGVjLCBkbGxzL3R0eWRydi90dHlkcnYuc3BlYywKCSAgZGxscy90d2Fpbi90d2Fpbl8zMi5zcGVjLCBkbGxzL3VybC91cmwuc3BlYywKCSAgZGxscy91cmxtb24vdXJsbW9uLnNwZWMsIGRsbHMvbXNpbWczMi9tc2ltZzMyLnNwZWMsCgkgIGRsbHMvbXNpc3lzL21zaXN5cy5vY3guc3BlYywgZGxscy9tc25ldDMyL21zbmV0MzIuc3BlYywKCSAgZGxscy9tc3JsZTMyL21zcmxlMzIuc3BlYywgZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWMsCgkgIGRsbHMvbXN2Y3J0MjAvbXN2Y3J0MjAuc3BlYywgZGxscy9tc3ZpZGVvL21zdmZ3MzIuc3BlYywKCSAgZGxscy9tc3ZpZGVvL21zdmlkZW8uc3BlYywgZGxscy9uZXRhcGkzMi9uZXRhcGkzMi5zcGVjLAoJICBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvb2RiYzMyL29kYmMzMi5zcGVjLAoJICBkbGxzL29sZTMyL2NvbXBvYmouc3BlYywgZGxscy9vbGUzMi9vbGUyLnNwZWMsCgkgIGRsbHMvb2xlMzIvb2xlMmNvbnYuc3BlYywgZGxscy9vbGUzMi9vbGUybmxzLnNwZWMsCgkgIGRsbHMvb2xlMzIvb2xlMnByb3guc3BlYywgZGxscy9vbGUzMi9vbGUydGhrLnNwZWMsCgkgIGRsbHMvb2xlMzIvb2xlMzIuc3BlYywgZGxscy9vbGUzMi9zdG9yYWdlLnNwZWMsCgkgIGRsbHMvb2xlYXV0MzIvb2xlMmRpc3Auc3BlYywgZGxscy9vbGVhdXQzMi9vbGVhdXQzMi5zcGVjLAoJICBkbGxzL29sZWF1dDMyL3R5cGVsaWIuc3BlYywgZGxscy9vbGVjbGkvb2xlY2xpLnNwZWMsCgkgIGRsbHMvb2xlY2xpL29sZWNsaTMyLnNwZWMsIGRsbHMvb2xlZGxnL29sZWRsZy5zcGVjLAoJICBkbGxzL29sZXBybzMyL29sZXBybzMyLnNwZWMsIGRsbHMvb2xlc3ZyL29sZXN2ci5zcGVjLAoJICBkbGxzL29sZXN2ci9vbGVzdnIzMi5zcGVjLCBkbGxzL2ltYWdlaGxwL2ltYWdlaGxwLnNwZWMsCgkgIGRsbHMvaW1tMzIvaW1tLnNwZWMsIGRsbHMvaW1tMzIvaW1tMzIuc3BlYywKCSAgZGxscy9rZXJuZWwvY29tbS5zcGVjLCBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLAoJICBkbGxzL2tlcm5lbC9rcm5sMzg2LmV4ZS5zcGVjLCBkbGxzL2tlcm5lbC9zdHJlc3Muc3BlYywKCSAgZGxscy9rZXJuZWwvc3lzdGVtLnNwZWMsIGRsbHMva2VybmVsL3Rvb2xoZWxwLnNwZWMsCgkgIGRsbHMva2VybmVsL3dpbjg3ZW0uc3BlYywgZGxscy9rZXJuZWwvd2luZGVidWcuc3BlYywKCSAgZGxscy9rZXJuZWwvd3Byb2NzLnNwZWMsIGRsbHMvbHpleHBhbmQvbHozMi5zcGVjLAoJICBkbGxzL2x6ZXhwYW5kL2x6ZXhwYW5kLnNwZWMsIGRsbHMvbWFwaTMyL21hcGkzMi5zcGVjLAoJICBkbGxzL21wci9tcHIuc3BlYywgZGxscy9tc2FjbS9pbWFhZHAzMi9pbWFhZHAzMi5hY20uc3BlYywKCSAgZGxscy9tc2FjbS9tc2FjbS5zcGVjLCBkbGxzL21zYWNtL21zYWNtMzIuc3BlYywKCSAgZGxscy9tc2FjbS9tc2FkcDMyL21zYWRwMzIuYWNtLnNwZWMsCgkgIGRsbHMvbXNhY20vbXNnNzExL21zZzcxMS5hY20uc3BlYywKCSAgZGxscy9tc2FjbS93aW5lbXAzL3dpbmVtcDMuYWNtLnNwZWMsIGRsbHMvbXNkbW8vbXNkbW8uc3BlYywKCSAgZGxscy9hZHZhcGkzMi9hZHZhcGkzMi5zcGVjLCBkbGxzL2F2aWNhcDMyL2F2aWNhcDMyLnNwZWMsCgkgIGRsbHMvYXZpZmlsMzIvYXZpZmlsMzIuc3BlYywgZGxscy9hdmlmaWwzMi9hdmlmaWxlLnNwZWMsCgkgIGRsbHMvY29tY2F0L2NvbWNhdC5zcGVjLCBkbGxzL2NvbWN0bDMyL2NvbWN0bDMyLnNwZWMsCgkgIGRsbHMvY29tbWRsZy9jb21kbGczMi5zcGVjLCBkbGxzL2NvbW1kbGcvY29tbWRsZy5zcGVjLAoJICBkbGxzL2NydGRsbC9jcnRkbGwuc3BlYywgZGxscy9jcnlwdDMyL2NyeXB0MzIuc3BlYywKCSAgZGxscy9kY2ltYW4zMi9kY2ltYW4zMi5zcGVjLCBkbGxzL2RkcmF3L2RkcmF3LnNwZWMsCgkgIGRsbHMvZGV2ZW51bS9kZXZlbnVtLnNwZWMsIGRsbHMvZGlucHV0L2RpbnB1dC5zcGVjLAoJICBkbGxzL2RpbnB1dDgvZGlucHV0OC5zcGVjLCBkbGxzL2RwbGF5L2RwbGF5LnNwZWMsCgkgIGRsbHMvZHBsYXl4L2RwbGF5eC5zcGVjLCBkbGxzL2Rzb3VuZC9kc291bmQuc3BlYywKCSAgZGxscy9nZGkvZGlzcGRpYi5zcGVjLCBkbGxzL2dkaS9nZGkuZXhlLnNwZWMsCgkgIGRsbHMvZ2RpL2dkaTMyLnNwZWMsIGRsbHMvZ2RpL3dpbmcuc3BlYywgZGxscy9nbHUzMi9nbHUzMi5zcGVjLAoJICBkbGxzL2ljbXAvaWNtcC5zcGVjLCBNYWtlLnJ1bGVzLmluOgoJTWFkZSBzb21lIG1vcmUgc3BlYyBmaWxlIGVudHJpZXMgb3B0aW9uYWwgb3IgdW5uZWNlc3NhcnkuCglGaXhlZCBhIGZldyBETExOYW1lL0RMTEZpbGVOYW1lIG1pc21hdGNoZXMuCgoJKiBzZXJ2ZXIvc29jay5jOgoJQXR0ZW1wdCBhdCBmaXhpbmcgUE9MTEhVUCBoYW5kbGluZyBmb3IgTGludXggMi4yLnguCgoJKiBkbGxzL29sZWF1dDMyL3Rlc3RzL3ZhcnRlc3QuYzoKCU1vdmVkIHN1Y2NlZWRpbmcgdGVzdCBvdXQgb2YgdG9kbyBibG9jay4KCgkqIGZpbGVzL2Rvc19mcy5jOgoJRml4ZWQgcmVncmVzc2lvbiBjYXVzZWQgYnkgcHJldmlvdXMgY2hhbmdlLgoKMjAwMi0wNi0yMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzIuc3BlYywgZGxscy9vbGVhdXQzMi9zYWZlYXJyYXkuYywKCSAgZGxscy9vbGVhdXQzMi92YXJpYW50LmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZW1AY29kZXdlYXZlcnMuY29tPgoJRml4ZWQgb3JkaW5hbHMgdG8gbWF0Y2ggdGhlIFdpbmRvd3MgdmFsdWVzLgoJQWRkZWQgYSBjb3VwbGUgb2Ygc3R1YnMuCgoJKiBzZXJ2ZXIvbWFpbi5jLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcmVxdWVzdC5jLAoJICBzZXJ2ZXIvcmVxdWVzdC5oLCBmaWxlcy9kcml2ZS5jLCBmaWxlcy9wcm9maWxlLmMsCgkgIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLCBpbmNsdWRlL3dpbmUvbGlicmFyeS5oLAoJICBpbmNsdWRlL3dpbmUvc2VydmVyLmgsIGxpYnJhcnkvTWFrZWZpbGUuaW4sIGxpYnJhcnkvY29uZmlnLmMsCgkgIG1pc2MvcmVnaXN0cnkuYywgc2NoZWR1bGVyL2NsaWVudC5jOgoJQ3JlYXRlIHRoZSBzZXJ2ZXIgZGlyZWN0b3J5IGFuZCBzb2NrZXQgZmlsZSBpbiAvdG1wLgoJVXNlIGZjbnRsIGZpbGUgbG9ja2luZyB0byBlbnN1cmUgZXhjbHVzaW9uIG9uIHRoZSBzZXJ2ZXIgc29ja2V0IGFuZCB0bwoJYmV0dGVyIHJlY292ZXIgZnJvbSBjcmFzaGVzLgoJRmx1c2ggdGhlIHJlZ2lzdHJ5IGJlZm9yZSBjbG9zaW5nIHRoZSBzb2NrZXQgdG8gYXZvaWQgdGltZW91dHMgb24gdGhlCgljbGllbnQgc2lkZS4KCU1vdmVkIGdldF9jb25maWdfZGlyIGZ1bmN0aW9uYWxpdHkgdG8gbGlid2luZS4KCgkqIHNlcnZlci9vYmplY3QuaCwgc2VydmVyL3JlZ2lzdHJ5LmMsIHNlcnZlci9zZWxlY3QuYzoKCVN0b3JlIGRpcnR5IGZsYWcgaW4gZWFjaCByZWdpc3RyeSBrZXkgYW5kIHVzZSBpdCB0byBzYXZlIG9ubHkgbW9kaWZpZWQKCWJyYW5jaGVzLgoKCSogZmlsZXMvZG9zX2ZzLmMsIGZpbGVzL2RyaXZlLmM6CglNYWtlIHN1cmUgdGhhdCBEUklWRV9GaW5kRHJpdmVSb290IGFsd2F5cyByZXR1cm5zIGFuIGFic29sdXRlIHBhdGguCgoJKiBwcm9ncmFtcy9NYWtlcHJvZy5ydWxlcy5pbjoKCUFkZGVkIGRlcGVuZGVuY3kgb24gcHJvZ3JhbSBzeW1saW5rIGZvciB1bml0IHRlc3RzLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIHByb2dyYW1zL3JlZ2VkaXQvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL3JlZ2VkaXQvcmVnZWRpdC5jLCBwcm9ncmFtcy9yZWdlZGl0L3Rlc3RzLy5jdnNpZ25vcmUsCgkgIHByb2dyYW1zL3JlZ2VkaXQvdGVzdHMvb3JpZy5yZWcsCgkgIHByb2dyYW1zL3JlZ2VkaXQvdGVzdHMvcmVnZWRpdC5wbDoKCUFuZHJpeSBQYWxhbWFyY2h1ayA8YXBhM2FAeWFob28uY29tPgoJQWRkZWQgcmVnZWRpdCB1bml0IHRlc3QsIGEgY291cGxlIG1pbm9yIGNoYW5nZXMgdG8gcmVnZWRpdC4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzIuc3BlYywgZGxscy9vbGVhdXQzMi9wYXJzZWR0LmMsCgkgIGRsbHMvb2xlYXV0MzIvcGFyc2VkdC5oLCBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYywKCSAgZGxscy9vbGVhdXQzMi90eXBlbGliLmgsIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jLAoJICBpbmNsdWRlL3d0eXBlcy5oOgoJSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCS0gVmFyQW5kLCBWYXJDbXAgKFN0cmluZ3Mgb25seSksIFZhck5vdCBpbXBsZW1lbnRlZC4KCS0gVmFyUGFyc2VOdW1Gcm9tU3RyL1Zhck51bUZyb21QYXJzZU51bSBoYW5kbGUgbmVnYXRpdmUgY3VycmVuY3kKCSAgbnVtYmVycy4KCS0gTW9yZSBWYXJDbXAgc3VwcG9ydCAoRGVjaW1hbHMgYW5kIERhdGVzKS4KCS0gRGF0ZSBzdXBwb3J0IGZvciBWQiB0aW1lIG9ubHkgKDAuMC0+MS4wKSwgY29ycmVjdGVkIHNvbWUgZGF0ZQoJICByb3VuZGluZyBhbmQgY2FsY3VsYXRpb24gZXJyb3JzIGFyb3VuZCB2YXJpYW50IGRhdGVzIGFuZCB0aGUgc3lzdGVtCgkgIHRpbWUuCgktIFZhcmlhbnQgZGF0ZSBzdXBwb3J0IG5vdyByb3VuZCB0cmlwcyEgKERhdGUtPlZhcmlhbnQtPkRhdGUpIGR1ZSB0bwoJICBtaXN1c2Ugb2YgdG1fbW9uICgwLi4xMSBub3QgMS4uMTIpLgoJLSBCZXR0ZXIgcHJlLTE4OTkgc3VwcG9ydCBmb3IgZGF0ZXMgaW4gdGhlIFNZU1RFTVRJTUUgZm9ybWF0LgoJLSBWYXJCc3RyRnJvbUN5LCBWYXJDeUZyb21TdHIgaW1wbGVtZW50ZWQuCgktIFZhckZvcm1hdCBwYXJ0aWFsIGltcGxlbWVudGF0aW9uIChjdXJyZW5jeSBhbmQgZGF0ZSBzdXBwb3J0KS4KCS0gVmFyRm9ybWF0RnJvbVRva2VucywgVmFyVG9rZW5pemVGb3JtYXRTdHJpbmcgcGFydGlhbCBpbXBsZW1lbnRhdGlvbgoJICBhcyBwZXIgdzJrIChkYXRlcyBvbmx5IHNvIGZhcikuCgktIEJldHRlciBkZWJ1Z2dpbmcgd2hlbiBkdW1waW5nIHZhcmlhbnRzLCBhbmQgc29tZSBhZGRpdGlvbmFsIHRyYWNlCgkgcG9pbnRzIHRvIGhlbHAgZGVidWdnaW5nLgoJLSBGaXggdG8gVmFyQnN0ckNtcCB0byBoYW5kbGUgbnVsbCBhbmQgZW1wdHkgc3RyaW5nIHRoZSBzYW1lIChhcyBwZXIKCSAgdzJrLCBkaWZmZXJlbnQgdG8gbXNkbikuCgktIEZpeCByZXR1cm4gZnJvbSBWYXJEYXRlRnJvbVVkYXRlLgoJLSBDb3JyZWN0IGRlZmluaXRpb24gb2YgQ1kgc3RydWN0dXJlLgoKCSogbG9hZGVyL3BlX2ltYWdlLmMsIG1lbW9yeS92aXJ0dWFsLmM6CglBdm9pZCBsb2FkaW5nIHByb2dyYW1zIGludG8gdGhlIERPUyBtZW1vcnkgYXJlYS4KCgkqIHByb2dyYW1zL3JlZ2FwaS90ZXN0cy9yZWdhcGkucGw6CglBbmRyaXkgUGFsYW1hcmNodWsgPGFwYTNhQHlhaG9vLmNvbT4KCVJlbW92ZWQgdHJhY2VzIG9mIHRoZSByZWdlZGl0IHVuaXQgdGVzdHMuCgoJKiBkbGxzL2NvbWN0bDMyL3RhYi5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gQWRkIHJvdXRpbmVzIHRvIGR1bXAgb3V0IHRhYiBpdGVtcyBpbnRlcm5hbGx5IGFuZCBleHRlcm5hbGx5CgktIEFkanVzdCBUQUJfU2V0SXRlbUJvdW5kcyB0byBzcGxpdCB2ZXJ0aWNhbCB0YWJzIG1vcmUgbGlrZSB0aGUgbmF0aXZlLgoJLSBEb2N1bWVudCBtYWpvciBkaWZmZXJlbmNlIGluIGxheWluZyBvdXQgdGhlIHZlcnRpY2FsIHRhYnMuCgktIEZpeCBkcmF3aW5nIG9mIGljb25zLiBXcm9uZyBpdGVtIHBhZGRpbmcgdXNlZCBpbiB2ZXJ0aWNhbCBjYXNlLgoJLSBGaXhlZCBzaXplIG9mIGhvcml6b250YWwgcGFkZGluZy4KCgkqIGRsbHMvb2xlYXV0MzIvdG1hcnNoYWwuYywgZGxscy9vbGVhdXQzMi90eXBlbGliLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUlUeXBlbGliOjpJbnZva2U6IEhhbmRsZSBkaWZmZXJlbnQgbGVuZ3RoIGFyZ3VtZW50cyBiZXR0ZXIsIHdlIGFsc28KCXJldHVybiAxIFZBUklBTlQgb25seS4KCgkqIHRvb2xzL3dpbmVidWlsZC9NYWtlZmlsZS5pbjoKCVN0ZXZlbiBFZHdhcmRzIDxzdGV2ZW5fZWQ0MTUzQHlhaG9vLmNvbT4KCVBvcnRhYmlsaXR5IGZpeC4KCgkqIGRsbHMvTWFrZWRsbC5ydWxlcy5pbjoKCVN0ZXZlbiBFZHdhcmRzIDxzdGV2ZW5fZWQ0MTUzQHlhaG9vLmNvbT4KCUdpdmUgdGhlIGltcG9ydCBsaWJzIGEgcHJvcGVyIG5hbWUuCgoJKiBpbmNsdWRlL3NldHVwYXBpLmg6CglTYW5kZXIgdmFuIExlZXV3ZW4gPHNhbmRlcnZsQHhzNGFsbC5ubD4KCSdjbGFzcycgaXMgYSByZXNlcnZlZCB3b3JkIChDKyspLgoKMjAwMi0wNi0xNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRvY3VtZW50YXRpb24vTWFrZWZpbGUuaW4sIGRvY3VtZW50YXRpb24vd2luZW1ha2VyLm1hbiwKCSAgbGlicmFyeS9NYWtlZmlsZS5pbiwgb2xlL01ha2VmaWxlLmluLCBwcm9ncmFtcy8uY3ZzaWdub3JlLAoJICBwcm9ncmFtcy9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvTWFrZXByb2cucnVsZXMuaW4sCgkgIHByb2dyYW1zL3dpbmVsYXVuY2hlci5pbiwgdG9vbHMvLmN2c2lnbm9yZSwgdG9vbHMvTWFrZWZpbGUuaW4sCgkgIHRvb2xzL3dpbmFwaS9NYWtlZmlsZS5pbiwgdG9vbHMvd2luZWJ1aWxkL01ha2VmaWxlLmluLAoJICB0b29scy93aW5lbGF1bmNoZXIuaW4sIHRvb2xzL3dpbmVtYWtlci5tYW4sCgkgIHRvb2xzL3dtYy9NYWtlZmlsZS5pbiwgdG9vbHMvd3JjL01ha2VmaWxlLmluLCB0c3gxMS9NYWtlZmlsZS5pbiwKCSAgdW5pY29kZS9NYWtlZmlsZS5pbiwgTWFrZS5ydWxlcy5pbiwgTWFrZWZpbGUuaW4sCgkgIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvbWFrZV9kbGxzLCBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW46CglGaXhlZCBtYWtlIGluc3RhbGwgdGFyZ2V0IHRvIHdvcmsgZXZlbiB3aGVuIG5vdGhpbmcgaGFzIGJlZW4gY29tcGlsZWQKCXlldC4KCUFkZGVkIGluc3RhbGwtbGliIGFuZCBpbnN0YWxsLWRldiB0YXJnZXRzIHRvIGFsbG93IHBhcnRpYWwKCWluc3RhbGxhdGlvbnM7IG1vdmVkIHdpbmVtYWtlci5tYW4gYW5kIHdpbmVsYXVuY2hlci5pbiB0byBiZXR0ZXIgZml0CglpbiB0aGUgbmV3IGluc3RhbGwgY2F0ZWdvcmllcy4KCgkqIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGlmMTYzMi9idWlsdGluLmMsCgkgIHRvb2xzL3dpbmVidWlsZC9idWlsZC5oLCB0b29scy93aW5lYnVpbGQvc3BlYzE2LmMsCgkgIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYzoKCVVucmVnaXN0ZXIgMTYtYml0IGRsbHMgb24gbW9kdWxlIHVubG9hZC4KCgkqIGRsbHMvYWR2YXBpMzIvcmVnaXN0cnkuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlbUBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnRlZCByZWN1cnNpdmUgUmVnRGVsZXRlS2V5IGluIFdpbjk1IGVtdWxhdGlvbi4KCgkqIGRsbHMvYWR2YXBpMzIvYWR2YXBpLmMsIGRsbHMvYWR2YXBpMzIvYWR2YXBpMzIuc3BlYywgaW5jbHVkZS93aW5iYXNlLmg6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgR2V0Q3VycmVudEh3UHJvZmlsZUEuCgoJKiBvYmplY3RzL3RleHQuYzoKCVNoYWNoYXIgU2hlbWVzaCA8d2luZS1wYXRjaGVzQHN1bi5jb25zdW1lci5vcmcuaWw+CglFeHRUZXh0T3V0VzogaWYgR2V0Rm9udExhbmd1YWdlSW5mbyBzYXlzIHRoYXQgdGhlIGZvbnQgbWF5IHJlcXVpcmUKCXJlb3JkZXJpbmcsIGNhbGwgR2V0Q2hhcmFjdGVyUGxhY2VtZW50VyBhbmQgcHJpbnQgdGhlIHJlc3VsdC4KCgkqIG9iamVjdHMvZm9udC5jOgoJU2hhY2hhciBTaGVtZXNoIDx3aW5lLXBhdGNoZXNAc3VuLmNvbnN1bWVyLm9yZy5pbD4KCS0gSW1wbGVtZW50ZWQgYSBza2VsZXRvbiBmb3IgR2V0Rm9udExhbmd1YWdlSW5mby4gVXNpbmcgY29uc3QgbWFza3MgdG8KCSAgbWF0Y2ggYWdhaW5zdCB0aGUgcmVzdWx0IG9mIEdldFRleHRDaGFyc2V0SW5mby4gTm90IGFsbCBhdHRyaWJ1dGVzIGFyZQoJICBpbXBsZW1lbnRlZCB5ZXQuCgktIEVuaGFuY2VkIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBHZXRDaGFyYWN0ZXJQbGFjZW1lbnRXIHRvIHN1cHBvcnQKCSAgYmFzaWMgcmVvcmRlcmluZy4gTm90IGltcGxlbWVudGluZyB0aGUgZnVsbCBCaURpIGFsZ29yaXRobSB5ZXQuCgoJKiBkbGxzL2tlcm5lbC9ubHMvaGViLm5sczoKCVNoYWNoYXIgU2hlbWVzaCA8d2luZS1wYXRjaGVzQHN1bi5jb25zdW1lci5vcmcuaWw+CglDaGFuZ2VkIHRoZSBjb3VudHJ5J3MgbmFtZSB0byAiSUwiIHRvIGNvbmZvcm0gdG8gY29tbW9ubHkgaGVsZAoJcHJhY3RpY2VzLgoKCSogd2luZG93cy9zcHkuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CgktIER1bXAgb3V0IHRoZSBUQ0lURU0gc3RydWN0dXJlIGZvciBhcHByb3ByaWF0ZSBtZXNzYWdlcy4KCS0gRHVtcCBvdXQgdGhlIHJlY3RhbmdsZSBmb3IgdGhlIFRDTV9BREpVU1RSRUNUIG1lc3NhZ2UuCgoJKiBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCVN1cHBvcnQgaW1hZ2VzIG9uIHRoZSB0YWJzIG9mIHBhZ2VzIHRoYXQgYXJlIGFkZGVkIChub3QganVzdCB0aGUKCWZpcnN0KS4KCgkqIGRsbHMvTWFrZWRsbC5ydWxlcy5pbiwgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9nZGkvTWFrZWZpbGUuaW4sCgkgIGRsbHMva2VybmVsL01ha2VmaWxlLmluLCBkbGxzL21ha2VfZGxscywgZGxscy9udGRsbC9NYWtlZmlsZS5pbiwKCSAgZGxscy91c2VyL01ha2VmaWxlLmluLCBkbGxzL3dpbnNwb29sL01ha2VmaWxlLmluLAoJICBkbGxzL3gxMWRydi9NYWtlZmlsZS5pbjoKCVJlbW92ZWQgaW5zdGFsbF9saWJkaXIgdGFyZ2V0cyBhbmQgY2VudHJhbGl6ZWQgdGhlIHN5bWxpbmtzIGNyZWF0aW9uCglpbiB0aGUgbWFpbiBkbGwgbWFrZWZpbGUuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9kaW5wdXQvZGV2aWNlLmMsCgkgIGRsbHMvZGlucHV0L2RldmljZV9wcml2YXRlLmgsIGRsbHMvZGlucHV0L2RpbnB1dF9tYWluLmMsCgkgIGRsbHMvZGlucHV0L2RpbnB1dF9wcml2YXRlLmgsIGRsbHMvZGlucHV0L2pveXN0aWNrL2xpbnV4LmMsCgkgIGRsbHMvZGlucHV0L2pveXN0aWNrL2xpbnV4aW5wdXQuYywgZGxscy9kaW5wdXQva2V5Ym9hcmQvbWFpbi5jLAoJICBkbGxzL2RpbnB1dC9tb3VzZS9tYWluLmMsIGRsbHMvZGlucHV0OC8uY3ZzaWdub3JlLAoJICBkbGxzL2RpbnB1dDgvTWFrZWZpbGUuaW4sIGRsbHMvZGlucHV0OC9kaW5wdXQ4LnNwZWMsCgkgIGRsbHMvZGlucHV0OC9kaW5wdXQ4X21haW4uYywgaW5jbHVkZS9kM2R0eXBlcy5oLAoJICBpbmNsdWRlL2RpbnB1dC5oOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CgktIHN1cHBvcnQgRGlyZWN0SW5wdXQgOCBpbnRlcmZhY2VzLgoJLSBpbXBsZW1lbnRlZCBtb3VzZSB3aGVlbCBzdXBwb3J0LgoKCSogZGxscy9vbGVhdXQzMi90bWFyc2hhbC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglIYW5kbGUgYXJnc2l6ZSBmb3IgVlRfREFURS4KCgkqIGRsbHMvbnRkbGwvZmlsZS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VtQGNvZGV3ZWF2ZXJzLmNvbT4KCVBhcnRpYWxseSBpbXBsZW1lbnQgTnRPcGVuRmlsZSBhbmQgTnRSZWFkRmlsZS4KCgkqIGRsbHMveDExZHJ2L2V2ZW50LmMsIGRsbHMveDExZHJ2L21vdXNlLmMsIGRsbHMveDExZHJ2L3dpbmRvdy5jLAoJICBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jLCBpbmNsdWRlL3gxMWRydi5oOgoJVXBkYXRlIHRoZSBjdXJzb3IgZm9yIGVhY2ggd2luZG93IG9uIHJlY2VpdmluZyBhbiBYMTEgZXZlbnQsIGRvbid0Cgl3YWl0IGZvciB0aGUgU2V0Q3Vyc29yIGNhbGwuCglBZGRlZCBFbnRlck5vdGlmeSBoYW5kbGVyIHRvIHNldCB0aGUgY3Vyc29yIG9uIHdpbmRvdyBtYXAvdW5tYXAuCgoJKiBpbmNsdWRlL3F1ZXVlLmgsIHdpbmRvd3MvY3Vyc29yaWNvbi5jOgoJU3RvcmUgdGhlIGN1cnJlbnQgY3Vyc29yIGluIHRoZSB0aHJlYWQgcXVldWUgaW5zdGVhZCBvZiBnbG9iYWxseS4KCgkqIGRsbHMvY29tY3RsMzIvcHJvZ3Jlc3MuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglDb3NtZXRpYyBmaXguCgoJKiBkbGxzL2dkaS9NYWtlZmlsZS5pbiwgZGxscy9nZGkvZW5obWZkcnYvYml0Ymx0LmMsCgkgIGRsbHMvZ2RpL2VuaG1mZHJ2L2luaXQuYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIFBhdEJsdCBzdXBwb3J0IGluIGVuaGFuY2VkIG1ldGFmaWxlcy4KCjIwMDItMDYtMTMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBvYmplY3RzL2dkaW9iai5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVkIHRoZSBuYW1lcyBvZiBzb21lIHN0b2NrIGZvbnRzLgoKCSogZGxscy9zdGkvc3RpLnNwZWMsIGRsbHMvc3RpL3N0aV9tYWluLmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJU3R1YiBmb3IgU3RpQ3JlYXRlSW5zdGFuY2UuCgoJKiBkbGxzL29sZTMyL3N0b3JhZ2UuYywgZGxscy9zZXR1cGFwaS9xdWV1ZS5jLCBkbGxzL3VzZXIvbHN0ci5jLAoJICBkbGxzL3gxMWRydi93aW5wb3MuYywgZ3JhcGhpY3MvcGF0aC5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VtQGNvZGV3ZWF2ZXJzLmNvbT4KCUplcmVteSBXaGl0ZSA8andoaXRlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVkIG1lbW9yeSBsZWFrcy4KCgkqIGRsbHMvZGRyYXcvdmVyc2lvbi5yYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglGaXhlZCB2ZXJzaW9uIGluZm8uCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglGaXggaGFuZGxpbmcgb2Ygc3RyaW5ncyB0aGF0IGRvIG5vdCBmaW5pc2ggd2l0aCAifHwiLgoJRml4IHRoZSBpbmRlbnRhdGlvbiBvZiB0aGUgd2hpbGUgbG9vcCBpbiBUT09MQkFSX0FkZFN0cmluZ1cuCgoJKiBkbGxzL2NyeXB0MzIvY3J5cHQzMi5zcGVjLCBkbGxzL2NyeXB0MzIvbWFpbi5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQHN0YXJ0LmNvbS5hdT4KCUFkZGVkIGEgZmV3IHN0dWJzLgoKCSogZGxscy9rZXJuZWwvbmxzL2Jnci5ubHM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgQnVsZ2FyaWFuIE5MUyBkZWZpbml0aW9ucyAod2l0aCB0aGUgaGVscCBvZiBBbnRvbiBaaW5vdmlldikuCgoJKiBzY2hlZHVsZXIvY2xpZW50LmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsCgkgIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYywgZGxscy9udGRsbC9zaWduYWxfc3BhcmMuYzoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglSZXNldCBzaWduYWxzIHRvIFNJR19ERkwgYmVmb3JlIHN0YXJ0aW5nIGEgY2hpbGQgcHJvY2Vzcy4KCgkqIHdpbmRvd3MvcGFpbnRpbmcuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBdm9pZCBjcmFzaGVzIGlmIHdpbmRvdyBiZWxvbmdzIHRvIGFub3RoZXIgcHJvY2Vzcy4KCgkqIHJlbGF5MzIvYnVpbHRpbjMyLmM6CglNYWtlIGJ1aWx0aW5zIHByZXRlbmQgdG8gYmUgbG9hZGVkIGZyb20gdGhlIHN5c3RlbSBkaXJlY3RvcnkuCgoJKiBsb2FkZXIvcGVfaW1hZ2UuYzoKCURvbid0IGdvIHRocm91Z2ggdGhlIGV4cG9ydCB0YWJsZSBpZiB3ZSBhcmUgbm90IHRyYWNpbmcgYW55dGhpbmcuCgoJKiBkbGxzL3NldHVwYXBpL3BhcnNlci5jOgoJRm9yIGxpbmVzIHRoYXQgY29udGFpbiBhIHNpbmdsZSBmaWVsZCwgdGhlIGZpZWxkIGlzIGFsc28gdGhlIGxpbmUga2V5CgkodGhhbmtzIHRvIEFyaWMgU3Rld2FydCkuCgoJKiBkbGxzL3NldHVwYXBpL2luc3RhbGwuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglXaGVuIHByb2Nlc3NpbmcgdGhlIHJlZyBzZWN0aW9uIHdlIG5lZWQgdG8gZGVsZXRlIGJlZm9yZSBhZGRpbmcuCglGaXJzdCBwYXNzIGltcGxlbWVudGF0aW9uIG9mIFVwZGF0ZUluaS4KCgkqIGRsbHMvcnBjcnQ0L3JwY3J0NC5zcGVjLCBkbGxzL3JwY3J0NC9ycGNydDRfbWFpbi5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQGxvb2tzbWFydC5jb20uYXU+CglBZGRlZCBhbiBlbXB0eSBpbXBsZW1lbnRhdGlvbiBmb3IgVXVpZEZyb21TdHJpbmdBL1cuCgoJKiBkbGxzL250ZGxsL2hlYXAuYzoKCVJlc3RvcmVkIE1ha2VDcml0aWNhbFNlY3Rpb25HbG9iYWwgdGhhdCBnb3QgbG9zdCBzb21ld2hlcmUuCgoJKiBkbGxzL250ZGxsL2Nkcm9tLmM6CglEb24ndCB0cnkgdG8gb3BlbiBDRFJPTSBkZXZpY2UgaWYgbm9uZSB3YXMgc3BlY2lmaWVkLgoKCSogZGxscy9rZXJuZWwvdGltZS5jOgoJVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hjQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIHN1cHBvcnQgZm9yIENBTF9JVFdPRElHSVRZRUFSTUFYLgoKCSogZGxscy9jcnRkbGwvY3J0ZGxsLnNwZWMsIGRsbHMvY3J0ZGxsL2NydGRsbF9tYWluLmM6CglzdHJ1Y3QgX3N0YXQgbGF5b3V0IGlzIGRpZmZlcmVudCBiZXR3ZWVuIGNydGRsbCBhbmQgbXN2Y3J0LgoKCSogZGxscy9jb21tZGxnL3ByaW50ZGxnLmM6CglTdG9yZSBwcmludCBkbGcgc3RydWN0dXJlIGluIGEgcHJvcGVydHkgaW5zdGVhZCBvZiBEV0xfVVNFUi4KCgkqIGRsbHMvYXZpY2FwMzIvYXZpY2FwMzIuc3BlYywgZGxscy9hdmljYXAzMi9hdmljYXAzMl9tYWluLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgc3R1YnMgZm9yIGNhcEdldERyaXZlckRlc2NyaXB0aW9uLgoKCSogZGVidWdnZXIvZGVidWcubCwgZGVidWdnZXIvbWVtb3J5LmMsIGRlYnVnZ2VyL3R5cGVzLmM6CglBZGRlZCAvZyBkZWJ1ZyBmb3JtYXQgdG8gZHVtcCBHVUlEcy4KCgkqIGRlYnVnZ2VyL2RlYnVnZ2VyLmgsIGRlYnVnZ2VyL3NvdXJjZS5jLCBkZWJ1Z2dlci93aW5lZGJnLmM6CglEb24ndCBhc2sgZm9yIHNvdXJjZSBmaWxlIGluIGF1dG8gbW9kZS4KCgkqIG9sZS9vbGUybmxzLmM6CglQYXVsIE1pbGxhciA8cGF1bG1AYXN0cm8uZ2xhLmFjLnVrPgoJRml4IHVzZSBvZiBMT0NBTEVfTk9VU0VST1ZFUlJJREUgZmxhZyBpbiBHZXROdW1iZXJGb3JtYXRBIGFuZAoJR2V0Q3VycmVuY3lGb3JtYXRBLgoKCSogY29udHJvbHMvY29tYm8uYywgY29udHJvbHMvZWRpdC5jLCBjb250cm9scy9saXN0Ym94LmM6CglNYWtlIHN1cmUgZWRpdCBhbmQgbGlzdGJveCBjb250cm9scyBhcmUgb2Ygc2FtZSBBU0NJSS9Vbmljb2RlIHN0eWxlIGFzCgl0aGUgY29tYm8gYm94LiBGaXhlZCBhIGZldyBNQkNTIGlzc3VlcyB3aXRoIFdNX0dFVFRFWFRMRU5HVEggaGFuZGxpbmcuCgoJKiBkbGxzL2Rzb3VuZC9NYWtlZmlsZS5pbiwgZGxscy9kc291bmQvYnVmZmVyLmMsCgkgIGRsbHMvZHNvdW5kL2NhcHR1cmUuYywgZGxscy9kc291bmQvZHNvdW5kLnNwZWMsCgkgIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmMsIGRsbHMvZHNvdW5kL2Rzb3VuZF9wcml2YXRlLmgsCgkgIGRsbHMvZHNvdW5kL21peGVyLmMsIGRsbHMvZHNvdW5kL3ByaW1hcnkuYywKCSAgZGxscy9kc291bmQvcHJvcHNldC5jLCBkbGxzL2Rzb3VuZC9zb3VuZDNkLmMsIGluY2x1ZGUvZHNvdW5kLmg6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCVN1cHBvcnQgRGlyZWN0U291bmQgOCBpbnRlcmZhY2VzLiBTcGxpdCBpbnRlcmZhY2UgaW1wbGVtZW50YXRpb25zIGludG8KCXNlcGFyYXRlIGZpbGVzLiBTcGxpdCBwcmltYXJ5IGJ1ZmZlciBhbmQgc2Vjb25kYXJ5IGJ1ZmZlciBpbnRlcmZhY2VzCglpbnRvIHNlcGFyYXRlIGltcGxlbWVudGF0aW9ucy4gTWFkZSB0aGUgcHJpbWFyeSBidWZmZXIgc3RhdGUgcGFydCBvZgoJdGhlIGRzb3VuZCBvYmplY3QsIHNvIHByaW1hcnkgYnVmZmVyIG9iamVjdHMgY2FuIGJlIGNyZWF0ZWQgYW5kCglyZWZjb3VudGVkIGluZGVwZW5kZW50bHkuIE1hZGUgdGhlIGludGVyZmFjZXMgZm9sbG93IENPTSBhZ2dyZWdhdGlvbgoJcnVsZXMgbW9yZSBjbG9zZWx5LiBDb252ZXJ0ZWQgdGhlIGRzb3VuZCBjcml0aWNhbCBzZWN0aW9uIHRvIGEgUi9XCglsb2NrIHRvIGltcHJvdmUgcG90ZW50aWFsIHJlbWl4aW5nIGNvbmN1cnJlbmN5LiBGaXhlZCB2YXJpb3VzIGJ1Z3MgYW5kCglyZWZjb3VudGluZyBpc3N1ZXMuCgoJKiBkbGxzL2NvbWNhdC9NYWtlZmlsZS5pbiwgZGxscy9jb21jYXQvY29tY2F0LmgsCgkgIGRsbHMvY29tY2F0L2NvbWNhdC5zcGVjLCBkbGxzL2NvbWNhdC9jb21jYXRfbWFpbi5jLAoJICBkbGxzL2NvbWNhdC9pbmZvcm1hdGlvbi5jLCBkbGxzL2NvbWNhdC9yZWdpc3Rlci5jLAoJICBkbGxzL2NvbWNhdC9yZWdzdnIuYywgZGxscy9jb21jYXQvcmVnc3ZyLmg6CglKb2huIEsuIEhvaG0gPGpob2htQGFjbS5vcmc+CglDb21wbGV0ZWQgaW1wbGVtZW50YXRpb24gb2YgY29tY2F0LmRsbCwgaW5jbC4gRGxsW1VuXVJlZ2lzdGVyU2VydmVyLgoKCSogcHJvZ3JhbXMvcmVnc3ZyMzIvTWFrZWZpbGUuaW46IERvbid0IHVzZSBtc3ZjcnQuCgoJKiBwcm9ncmFtcy9yZWdzdnIzMi9yZWdzdnIzMi5jOgoJR3JlZ2cgTWF0dGluc29uIDxnbTEzODI0MkBzY290LmNhbmFkYS5zdW4uY29tPgoJUmVwbGFjZWQgc3RyaWNtcC9zdHJuaWNtcCB3aXRoIHN0cmNhc2VjbXAvc3RybmNhc2VjbXAuCgoJKiBkbGxzL3gxMWRydi9kZXNrdG9wLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglEaXNwbGF5IHRoZSBuYW1lIG9mIHRoZSBzdGFydGVkIHByb2Nlc3MgaW4gdGhlIGRlc2t0b3AgdGl0bGUuCgoJKiBvYmplY3RzL2dkaW9iai5jOgoJV29uIEt5dSBQYXJrIDx3a3BhcmtAY2hlbS5za2t1LmFjLmtyPgoJRml4ZWQgZGVmYXVsdEd1aUZvbnQgZm9yIEtvcmVhbi4KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJLSBDb3JyZWN0IHBhZ2UgcmVjdGFuZ2xlIGNhbGN1bGF0aW9uLgoJLSBJbXByb3ZlIHRyYWNlcy4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYywgZGxscy93aW5zb2NrL3dzMl8zMi5zcGVjOgoJUGV0ZXIgSHVubmlzZXR0IDxwZXRlckB0cmFuc2dhbWluZy5jb20+CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCS0gY2hlY2sgZm9yIHNvY2thZGRyIGJlaW5nIE5VTEwuCgktIGhhY2tpc2ggaW1wbGVtZW50YXRpb24gb2YgV1NBRHVwbGljYXRlU29ja2V0LgoKMjAwMi0wNi0xMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMveDExZHJ2L2tleWJvYXJkLmM6CglEYXZpZCBIYW1tZXJ0b24gPGRhdmlkQHRyYW5zZ2FtaW5nLmNvbT4KCU1hcFZpcnR1YWxLZXkgYWN0dWFsbHkgcmV0dXJucyB1cHBlcmNhc2Uga2V5cyBpbiBXaW5kb3dzLgoKCSogd2luZG93cy9tZXNzYWdlLmM6CglEYXZpZCBIYW1tZXJ0b24gPGRhdmlkQHRyYW5zZ2FtaW5nLmNvbT4KCVBldGVyIEh1bm5pc2V0dCA8cGV0ZXJAdHJhbnNnYW1pbmcuY29tPgoJLSBGaXggVHJhbnNsYXRlTWVzc2FnZSByZXR1cm4gY29kZS4KCS0gTWFrZSBHZXRLZXlTdGF0ZSB3b3JrIHByb3Blcmx5IGZvciBhcHBzIHRoYXQgdGVzdCAweDgwIGluc3RlYWQgb2YKCSAgMHg4MDAwLgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliLmMsIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5oOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJQWRkIG1vcmUgbWFnaWMgdG8gZmluZCB0aGUgc3RhcnQgb2YgdGhlIG5hbWV0YWJsZS4KCgkqIGRsbHMvZ2RpL2RyaXZlci5jLCBkbGxzL2dkaS9lbmhtZmRydi9pbml0LmMsCgkgIGRsbHMvZ2RpL21mZHJ2L2luaXQuYywgZGxscy9nZGkvd2luMTZkcnYvZ3JhcGhpY3MuYywKCSAgZGxscy9nZGkvd2luMTZkcnYvaW5pdC5jLCBkbGxzL2dkaS93aW4xNmRydi93aW4xNmRydi5oLAoJICBkbGxzL3R0eWRydi9kYy5jLCBkbGxzL3R0eWRydi9ncmFwaGljcy5jLCBkbGxzL3R0eWRydi90dHlkcnYuaCwKCSAgZGxscy90dHlkcnYvdHR5ZHJ2LnNwZWMsIGRsbHMvdHR5ZHJ2L3duZC5jLCBkbGxzL3dpbmVwcy9pbml0LmMsCgkgIGRsbHMvd2luZXBzL3dpbmVwcy5zcGVjLCBkbGxzL3gxMWRydi93aW5wb3MuYywKCSAgZGxscy94MTFkcnYveDExZHJ2LnNwZWMsIGRsbHMveDExZHJ2L3hyZW5kZXIuYywKCSAgZ3JhcGhpY3MveDExZHJ2L2JpdGJsdC5jLCBncmFwaGljcy94MTFkcnYvY2xpcHBpbmcuYywKCSAgZ3JhcGhpY3MveDExZHJ2L2RpYi5jLCBncmFwaGljcy94MTFkcnYvZ3JhcGhpY3MuYywKCSAgZ3JhcGhpY3MveDExZHJ2L2luaXQuYywgZ3JhcGhpY3MveDExZHJ2L3RleHQuYywgaW5jbHVkZS9nZGkuaCwKCSAgaW5jbHVkZS94MTFkcnYuaCwgb2JqZWN0cy9jbGlwcGluZy5jLCBvYmplY3RzL2RjLmMsCgkgIG9iamVjdHMvcmVnaW9uLmM6CglNb3ZlZCBEQyBvcmlnaW4gaW50byBkZXZpY2Utc3BlY2lmaWMgc3RydWN0dXJlLgoJRml4ZWQgaGFuZGxpbmcgb2YgREMgb3JpZ2luIGluIFgxMSBkcml2ZXIuCgoJKiBkbGxzL21zYWNtL2ltYWFkcDMyL2ltYWFkcDMyLmM6CglEYXZpZCBELiBIYWdvb2QgPHdvd2JhZ2dlckBza3RjLm5ldD4KCUFEUENNIG55YmJsZSBwcm9jZXNzaW5nIG9yZGVyIHdhcyBpbmNvcnJlY3QuCgoJKiBkbGxzL3VzZXIvdGV4dC5jOgoJUGF1bCBSdXBlIDxwcnVwZUBteXJlYWxib3guY29tPgoJRmFzdGVyIHBlcmZvcm1hbmNlIGluIFRFWFRfRWxsaXBzaWZ5IGZvciBsb25nIHN0cmluZ3MuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglQYXVsIFJ1cGUgPHBydXBlQG15cmVhbGJveC5jb20+CglTdXBwb3J0IGZvciBMVk1fU1VCSVRFTUhJVFRFU1Q7IGNoZWNrIGZvciBvdXQtb2YtYm91bmRzIHN1Yml0ZW0gaW5kZXgKCWluIExJU1RWSUVXX0dldFN1Ykl0ZW1SZWN0LgoKCSogZGxscy9zaGVsbDMyL2RpYWxvZ3MuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfQ2EucmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0NzLnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9EYS5yYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfRGUucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0VuLnJjLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9Fby5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfRXMucmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0ZpLnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9Gci5yYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfSHUucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0l0LnJjLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9KYS5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfS28ucmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX05sLnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9Oby5yYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfUGwucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX1B0LnJjLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9SdS5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfU2sucmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX1N2LnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9XYS5yYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfWmgucmM6CglOaXggTi4gTml4IDxuaXhAZ28tbml4LmNhPgoJQWRkZWQgUnVuRmlsZURsZyB3aXRoIE1SVSBsaXN0LgoJQWRkZWQgdGVtcGxhdGUgdG8gYWxsIC5yYyBmaWxlcy4KCgkqIGRvY3VtZW50YXRpb24vYnVncy5zZ21sOgoJVG9ueSBMYW1icmVndHMgPHRvbnlfbGFtYnJlZ3RzQHRlbHVzcGxhbmV0Lm5ldD4KCVNvbWUgZ3JhbW1hciBmaXhlcy4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsX0tvLnJjLCBkbGxzL2NvbWN0bDMyL3JzcmMucmMsCgkgIGRsbHMvY29tbWRsZy9jZGxnX0tvLnJjLCBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9Lby5yYywKCSAgZGxscy93aW5lcHMvcnNyYy5yYywgZGxscy93aW5lcHMvd3BzX0tvLnJjOgoJV29uLWt5dSBQYXJrIDx3a3BhcmtAa2xkcC5vcmc+CglBZGRlZCBLb3JlYW4gcmVzb3VyY2VzLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jOgoJU2FuZGVyIHZhbiBMZWV1d2VuIDxzYW5kZXJ2bEB4czRhbGwubmw+CgktIFNhdmUgYW5kIHJlc3RvcmUgY3VycmVudCBkaXJlY3RvcnkgaW4gR2V0RmlsZURpYWxvZzk1VyBpZgoJICBPRk5fTk9DSEFOR0VESVIgZmxhZyBzZXQuCgktIEdldEZpbGVEaWFsb2c5NVc6IG9ubHkgY29udmVydCBvZm4tPmxwVGVtcGxhdGVOYW1lIGlmIGl0J3MgYSBzdHJpbmcKCSAgcmVzb3VyY2UgaWQgKGZpeGVzIE9wZW5PZmZpY2UgMS4wIGZpbGUgb3BlbiBkaWFsb2cgY3Jhc2gpLgoJLSBJZ25vcmUgT0ZOX0ZJTEVNVVNURVhJU1QgZmxhZyBmb3Igc2F2ZSBmaWxlIGRpYWxvZyAoZml4ZXMgc2F2ZQoJICBkaWFsb2cgaW4gRWxzdGFyRm9ybXVsYXIpLgoJLSBSZXdyb3RlIGNhc3RzIHRoYXQgc29tZSBjb21waWxlcnMgZG9uJ3QgYWNjZXB0LgoKCSogZG9jdW1lbnRhdGlvbi9zYW1wbGVzL2NvbmZpZzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQ2hhbmdlZCBEbGxPdmVycmlkZXMgc28gd2UgdXNlIGJ1aWx0aW4gcnBjcnQ0LCBvbGUzMiwgb2xlYXV0MzIuCgoJKiBkbGxzL29sZWF1dDMyL3RtYXJzaGFsLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU1lcmdlZCB0aGUgdHdvIHNlcmlhbGl6ZXIgYW5kIHVuc2VyaWFsaXplciBmdW5jdGlvbnMgaW50byBvbmUsIGNsZWFuZWQKCXRoZW0gdXAuCglWVF9QVFI6IEhhbmRsZSBOVUxMIHBvaW50ZXJzIGJ5IHNlbmRpbmcgYSBjb29raWUuCglBZGRlZCBzdXBwb3J0IGZvcjogVlRfQ0FSUkFZLCBWVF9ESVNQQVRDSCwgVEtJTkRfUkVDT1JELCBWVF9WT0lELAoJVlRfVUkxLCBWVF9VSTIsIFZUX0VSUk9SLCBWVF9VSTQsIFZUX1VJTlQuCglBZGRlZCBhIGN1c3RvbSBzZXJpYWxpemVyIGZvciBESVNQUEFSQU1TIHN0cnVjdC4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBzb21lIGRlYnVnb3V0cHV0IGZ1bmN0aW9ucyBmb3IgVFlQRUFUVFIsIElETERFU0MsIFZBUkRFU0MuCglTdXBwb3J0IG1vcmUgcGFyYW1ldGVycyBpbiBfaW52b2tlIChuZWVkZWQgZm9yIElEaXNwYXRjaDo6SW52b2tlIGluCgl0aGUgbWFyc2hhbGxlcikuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYzoKCVNhbmRlciB2YW4gTGVldXdlbiA8c2FuZGVydmxAeHM0YWxsLm5sPgoJSGFuZGxlIGFzY2lpICYgdW5pY29kZSBkcmFnIGFuZCBkcm9wIHN0cnVjdHVyZXMgaW4gRHJhZ1F1ZXJ5RmlsZUEgJgoJRHJhZ1F1ZXJ5RmlsZVcuCgoJKiBkbGxzL29wZW5nbDMyL3dnbC5jLCBpbmNsdWRlL3dpbmdkaS5oOgoJSmVzc2UgQWxsZW4gPHVoX2phQGdteC5uZXQ+CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJQWRkZWQgaW1wbGVtZW50YXRpb24gb2Ygd2dsU3dhcExheWVyQnVmZmVycy4KCgkqIGRsbHMvbnRkbGwvbG9hZGVyLmMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlbUBjb2Rld2VhdmVycy5jb20+CgktIFBhcnRpYWxseSBpbXBsZW1lbnQgTGRyR2V0RGxsSGFuZGxlLgoJLSBJbXBsZW1lbnQgTGRyR2V0UHJvY2VkdXJlQWRkcmVzcy4KCgkqIGRvY3VtZW50YXRpb24vUkVBRE1FLmZyOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJVXBkYXRlZCBzbyBpdCdzIGluIGxpbmUgd2l0aCBSRUFETUUuCgoyMDAyLTA2LTA1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogVkVSU0lPTiwgY29uZmlndXJlLCBBTk5PVU5DRSwgQ2hhbmdlTG9nOgoJUmVsZWFzZSAyMDAyMDYwNS4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KMjAwMi0wNi0wNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRvY3VtZW50YXRpb24vUkVBRE1FLmZyOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJVXBkYXRlZCBSRUFETUUuZnIgc28gaXQncyBpbiBsaW5lIHdpdGggUkVBRE1FLgoKCSogZGxscy9rZXJuZWwvY29tbS5jOgoJTWFyY2VsbyBXZWx0ZXIgPHBvdWJhY2tAc3lzbW8uY29tLmJyPgoJQWRkZWQgUENGX1RPVEFMVElNRU9VVFMgdG8gY29tbSBwcm9wZXJ0aWVzLgoKCSogUkVBRE1FOgoJR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglVcGRhdGUgRnJlZUJTRC1yZWxhdGVkIG5vdGVzLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvZmlsZS5jLCBmaWxlcy9maWxlLmM6CglDaGVjayBhY2Nlc3MgcmlnaHRzIGJlZm9yZSByZW5hbWluZyBvciBkZWxldGluZyBmaWxlcyAoYmFzZWQgb24KCXBhdGNoZXMgYnkgVXdlIEJvbm5lcyBhbmQgRG1pdHJ5IFRpbW9zaGtvdikuCgoJKiBkb2N1bWVudGF0aW9uL1JFQURNRS5mcjoKCUplYW4tQnJ1bm8gTHVnaW5i/GhsIDxqZWFuX2JydW5vX2x1Z2luYnVobEB5YWhvby5mcj4KCUZyZW5jaCB0cmFuc2xhdGlvbiBvZiB0aGUgUkVBRE1FIGZpbGUuCgoyMDAyLTA2LTA0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9zaGx3YXBpL01ha2VmaWxlLmluLCBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjLAoJICBkbGxzL3NobHdhcGkvc3RyaW5nLmMsIGRsbHMvc2hsd2FwaS93c3ByaW50Zi5jLAoJICBkbGxzL3VzZXIvdXNlcjMyLnNwZWMsIGRsbHMvdXNlci93c3ByaW50Zi5jLCBpbmNsdWRlL3dpbnVzZXIuaDoKCUR1cGxpY2F0ZWQgd3NwcmludGYgaW1wbGVtZW50YXRpb24gaW4gc2hsd2FwaS4KCgkqIGRvY3VtZW50YXRpb24vY29uZmlndXJpbmcuc2dtbCwgZG9jdW1lbnRhdGlvbi9mb250cy5zZ21sLAoJICBkb2N1bWVudGF0aW9uL2ltcGxlbWVudGF0aW9uLnNnbWwsIGRvY3VtZW50YXRpb24vaW5zdGFsbGluZy5zZ21sLAoJICBkb2N1bWVudGF0aW9uL3NhbXBsZXMvY29uZmlnLCBkb2N1bWVudGF0aW9uL3dpbmUuY29uZi5tYW4sIFJFQURNRToKCUFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCURvY3VtZW50YXRpb24gaW1wcm92ZW1lbnRzLgoKCSogY29udHJvbHMvbWVudS5jOgoJQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJT25seSBhbGxvdyB0YWJzIGluIHBvcHVwIG1lbnVzLCBhbmQgbWFrZSBzdXJlIHRvIG5ldmVyIGRpc3BsYXkgdGhlbS4KCgkqIGRsbHMvb2xlMzIvb2xlcHJveHkuYywgZGxscy9vbGVhdXQzMi90bWFyc2hhbC5jLCB3aW5lZGVmYXVsdC5yZWc6CglNYXJjdXMgTWVpc3NuZXIgPE1hcmN1cy5NZWlzc25lckBjYWxkZXJhLmRlPgoJQWRkZWQgbWFyc2hhbGxpbmcgb2YgSVVua25vd24uCgoJKiB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5kYXQsCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9rZXJuZWwzMi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9tc2c3MTEuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvbnRkbGwuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvc2V0dXBhcGkuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvdHR5ZHJ2LmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3VzZXIzMi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi93aW5lbXAzLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3gxMWRydi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfcGFyc2VyLnBtOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglBUEkgZmlsZXMgdXBkYXRlLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvbG9jYWxlLmMsIGRsbHMvc2V0dXBhcGkvZGV2aW5zdC5jLAoJICBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIGlzc3VlcyBmb3VuZCBieSB3aW5hcGlfY2hlY2suCgoJKiBkZWJ1Z2dlci93aW5lZGJnLmMsIHdpbjMyL2V4Y2VwdC5jLCB3aW5lZGVmYXVsdC5yZWc6CglBZGRlZCAtLWRlYnVnbXNnIG9wdGlvbiB0byB0aGUgZGVidWdnZXIuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgcHJvZ3JhbXMvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL3dpbmVmaWxlLy5jdnNpZ25vcmUsIHByb2dyYW1zL3dpbmVmaWxlL0RlLnJjLAoJICBwcm9ncmFtcy93aW5lZmlsZS9Fbi5yYywgcHJvZ3JhbXMvd2luZWZpbGUvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL3dpbmVmaWxlL2xpY2Vuc2UuYywgcHJvZ3JhbXMvd2luZWZpbGUvcmVzb3VyY2UuaCwKCSAgcHJvZ3JhbXMvd2luZWZpbGUvcmVzb3VyY2UucmMsIHByb2dyYW1zL3dpbmVmaWxlL3JzcmMucmMsCgkgIHByb2dyYW1zL3dpbmVmaWxlL3NwbGl0cGF0aC5jLCBwcm9ncmFtcy93aW5lZmlsZS93aW5lZmlsZS5jLAoJICBwcm9ncmFtcy93aW5lZmlsZS93aW5lZmlsZS5oOgoJTWVyZ2VkIE1hcnRpbiBGdWNocycgZmlsZSBtYW5hZ2VyICh3aXRoIHRoZSBoZWxwIG9mIFN0ZXZlbiBFZHdhcmRzKS4KCgkqIHJlbGF5MzIvcmVsYXkzODYuYzoKCUNoZWNrIGlmIHJlbGF5IGRlYnVnZ2luZyBpcyBzdGlsbCBvbiBiZWZvcmUgcHJpbnRpbmcgc29tZXRoaW5nLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jOgoJSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCW5pdGlhbERpciBoYW5kbGluZyBhbmQgSW5pdGlhbEZpbGUgaGFuZGxpbmcgbm93IGFncmVlcyB3aXRoIE1TRE4KCWRlc2NyaXB0aW9uLCBhbmQgdGVzdGluZyBvbiB3aW4yMDAwIGFwcGVhcnMgdG8gYWdyZWUuCglpbGVuYW1lIGZpZWxkIG5vdCBjbGVhcmVkIHdoZW4gZGlyZWN0b3J5IHNlbGVjdGVkL2NsaWNrZWQgb24uCglPRk5fTk9WQUxJREFURSBmaWVsZCBubyBsb25nZXIgY2F1c2VzIHRyYXBzLCBhbmQgYXBwZWFycyB0byBiZWhhdmUgYXMKCXBlciB3MmsuCgoJKiBsb2FkZXIvbmUvbW9kdWxlLmM6CglEb24ndCBmcmVlIHRoZSBzdGFjayBzZWxlY3RvciwgaXQncyBmcmVlZCBpbiBFeGl0VGhyZWFkIGFueXdheSAodGhhbmtzCgl0byBDaHJpc3RpYW4gQ29zdGEpLgoKCSogZGxscy9NYWtlZmlsZS5pbiwgZGxscy9tc2FjbS93aW5lbXAzLy5jdnNpZ25vcmUsCgkgIGRsbHMvbXNhY20vd2luZW1wMy9NYWtlZmlsZS5pbiwgZGxscy9tc2FjbS93aW5lbXAzL2NvbW1vbi5jLAoJICBkbGxzL21zYWNtL3dpbmVtcDMvZGN0NjRfaTM4Ni5jLCBkbGxzL21zYWNtL3dpbmVtcDMvZGVjb2RlX2kzODYuYywKCSAgZGxscy9tc2FjbS93aW5lbXAzL2h1ZmZtYW4uaCwgZGxscy9tc2FjbS93aW5lbXAzL2ludGVyZmFjZS5jLAoJICBkbGxzL21zYWNtL3dpbmVtcDMvbDJ0YWJsZXMuaCwgZGxscy9tc2FjbS93aW5lbXAzL2xheWVyMS5jLAoJICBkbGxzL21zYWNtL3dpbmVtcDMvbGF5ZXIyLmMsIGRsbHMvbXNhY20vd2luZW1wMy9sYXllcjMuYywKCSAgZGxscy9tc2FjbS93aW5lbXAzL21wZWdsMy5jLCBkbGxzL21zYWNtL3dpbmVtcDMvbXBnMTIzLmgsCgkgIGRsbHMvbXNhY20vd2luZW1wMy9tcGdsaWIuaCwgZGxscy9tc2FjbS93aW5lbXAzL3RhYmluaXQuYywKCSAgZGxscy9tc2FjbS93aW5lbXAzL3dpbmVtcDMuYWNtLnNwZWMsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglJbXBsZW1lbnRlZCBhIE1QMyBkZWNvZGVyIChiYXNlZCBvbiBtcGdsaWIpLgoKCSogZG9jdW1lbnRhdGlvbi9zYW1wbGVzL2NvbmZpZywgaWYxNjMyL3JlbGF5LmMsCgkgIGluY2x1ZGUvd2luZS9saWJyYXJ5LmgsIGxpYnJhcnkvZGVidWcuYywgbWlzYy9vcHRpb25zLmMsCgkgIHJlbGF5MzIvcmVsYXkzODYuYywgcmVsYXkzMi9zbm9vcC5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLAoJICB3aW5kb3dzL3NweS5jOgoJTW92ZWQgc3BlY2lmaWNhdGlvbiBvZiByZWxheSBhbmQgc25vb3AgaW5jbHVkZS9leGNsdWRlIGZ1bmN0aW9ucyB0bwoJdGhlIGNvbmZpZyBmaWxlLgoJQ2hhbmdlZCBzcHkgY29uZmlnIGEgYml0IHRvIGZvbGxvdyB0aGUgc2FtZSBzY2hlbWUuCglNb3ZlZCBkZWJ1ZyBvcHRpb24gcGFyc2luZyByb3V0aW5lIGludG8gbGlid2luZS4KCgkqIGluY2x1ZGUvZm9udC5oLCBpbmNsdWRlL2dkaS5oLCBpbmNsdWRlL21ldGFmaWxlLmgsCgkgIGluY2x1ZGUvd2luZS93aW5nZGkxNi5oLCBvYmplY3RzL2VuaG1ldGFmaWxlLmMsIG9iamVjdHMvZm9udC5jLAoJICBvYmplY3RzL21ldGFmaWxlLmMsIGRsbHMvZ2RpL2ZyZWV0eXBlLmMsIGRsbHMvZ2RpL21mZHJ2L2luaXQuYywKCSAgZ3JhcGhpY3MveDExZHJ2L3hmb250LmM6CglCZXR0ZXIgZW5jYXBzdWxhdGlvbiBvZiB0aGUgZm9udCBhbmQgbWV0YWZpbGUgb2JqZWN0cy4KCgkqIE1ha2VmaWxlLmluOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglXYXJuIHRoZSB1c2VyIGlmICd3aW5lJyB3aWxsIG5vdCBmaW5kIGl0cyBsaWJyYXJpZXMgYWZ0ZXIgaW5zdGFsbGF0aW9uCglvbiAnbWFrZSBpbnN0YWxsJy4KCgkqIGRsbHMvb2xlMzIvcnBjLmM6CglCaWxsIE1lZGxhbmQgPG1lZGJpMDFAYWNjcGFjLmNvbT4KCUZpeGVkIGluY29ycmVjdCBwb2ludGVyLWNhc3QgYXJpdGhtZXRpYy4KCUV4dGVuZGVkIG9sZSB0cmFjZSBpbmZvcm1hdGlvbi4KCURvbid0IGxvc2UgdGhlIGV4aXN0aW5nIHBpcGVzIG9uIGFsbG9jIGZhaWx1cmUuCgoJKiBkbGxzL3NoZWxsMzIvLmN2c2lnbm9yZSwgZGxscy9zaGVsbDMyL01ha2VmaWxlLmluLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwuc3BlYywgZGxscy9zaGVsbDMyL3ZlcnNpb24xNi5yYzoKCUpvaGFuIEdpbGwgPGpvaGFuZUBseXNhdG9yLmxpdS5zZT4KCUFkZGVkIHZlcnNpb24gaW5mbyB0byAxNi1iaXQgc2hlbGwuZGxsLgoKCSogZGxscy9jb21jdGwzMi9zdGF0dXMuYzoKCUdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJV2FybmluZyBmaXguCgoJKiBkbGxzL3dpbm1tL21tc3lzdGVtLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGFub3RoZXIgcmVncmVzc2lvbiBpbiBQbGF5U291bmQuCgoJKiBpbmNsdWRlL3dpbmJhc2UuaDoKCVdhcnJlbiBUdXJrYWwgPHd0dXJrYWxAY2J1LmVkdT4KCU1vcmUgc3RyZWFtIGRlZmluaXRpb25zLgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliLmMsIGRsbHMvd2lubW0vbWNpLmM6CglTdGV2ZW4gRWR3YXJkcyA8U3RldmVuX0VkNDE1M0B5YWhvby5jb20+CglQb3J0aW5nIGZpeGVzLgoKMjAwMi0wNi0wMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvY29sb3IuaCwgaW5jbHVkZS9nZGkuaCwgaW5jbHVkZS9wYWxldHRlLmgsCgkgIGluY2x1ZGUvd2luZS93aW5nZGkxNi5oLCBpbmNsdWRlL3dpbmdkaS5oLCBpbmNsdWRlL3gxMWRydi5oLAoJICBvYmplY3RzL2NvbG9yLmMsIG9iamVjdHMvcGFsZXR0ZS5jLCBkbGxzL2dkaS9NYWtlZmlsZS5pbiwKCSAgZGxscy9nZGkvZHJpdmVyLmMsIGRsbHMvZ2RpL2VuaG1mZHJ2L2luaXQuYywgZGxscy9nZGkvbWZkcnYvaW5pdC5jLAoJICBkbGxzL2dkaS93aW4xNmRydi9pbml0LmMsIGRsbHMvdHR5ZHJ2L3BhbGV0dGUuYywKCSAgZGxscy90dHlkcnYvdHR5ZHJ2LnNwZWMsIGRsbHMveDExZHJ2L3gxMWRydi5zcGVjLAoJICBncmFwaGljcy94MTFkcnYvYnJ1c2guYywgZ3JhcGhpY3MveDExZHJ2L2luaXQuYywKCSAgZ3JhcGhpY3MveDExZHJ2L3BhbGV0dGUuYzoKCUJldHRlciBzZXBhcmF0aW9uIG9mIHRoZSBwYWxldHRlIGZ1bmN0aW9ucy4KCVJlbW92ZWQgdGhlIHBhbGV0dGUgZHJpdmVyLgoKCSogZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBEZWJ1Z0JyZWFrUHJvY2VzcyAobm93IGdlbmVyYXRlcyBFWENFUFRJT05fQlJFQUtQT0lOVCBpbnN0ZWFkIG9mCglFWENFUFRJT05fU0lOR0xFX1NURVApLgoKCSogZGVidWdnZXIvZGJnLnksIGRlYnVnZ2VyL2RlYnVnZ2VyLmgsIGRlYnVnZ2VyL2luZm8uYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgYWJpbGl0eSB0byB0dXJuIG9uL29mZiBkZWJ1ZyBjaGFubmVscy4KCVJlaW1wbGVtZW50ZWQgdGhlIGluZm8gbWFwcyBjb21tYW5kLgoKCSogZGxscy94MTFkcnYvbW91c2UuYywgZGxscy94MTFkcnYvd2lucG9zLmMsIGluY2x1ZGUvY3Vyc29yaWNvbi5oLAoJICB3aW5kb3dzL2N1cnNvcmljb24uYywgd2luZG93cy93aW4uYzoKCVJlbW92ZWQgQ1VSU09SSUNPTl9JY29uVG9DdXJzb3Igbm93IHRoYXQgd2Ugc3VwcG9ydCBjb2xvciBjdXJzb3JzLgoKCSogZGxscy9jb21jYXQvTWFrZWZpbGUuaW4sIGRsbHMvY29tY2F0L2NvbWNhdC5oLAoJICBkbGxzL2NvbWNhdC9pbmZvcm1hdGlvbi5jOgoJSm9obiBLLiBIb2htIDxqaG9obUBhY20ub3JnPgoJQ29tcGxldGUgSUNhdEluZm9ybWF0aW9uIGltcGxlbWVudGF0aW9uLgoKCSogaW5jbHVkZS9udGRkay5oOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VtQGNvZGV3ZWF2ZXJzLmNvbT4KCURlY2xhcmUgTnRDcmVhdGVGaWxlKCksIE50T3BlbkZpbGUoKSBhbmQgTnRSZWFkRmlsZSgpLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsb2xlLmM6CglTYW5kZXIgdmFuIExlZXV3ZW4gPHNhbmRlcnZsQHhzNGFsbC5ubD4KCUZpeGVkIHdyb25nIGNhc3Q7IE1TRE4gc2F5cyBscERyb3BGaWxlU3RydWN0LT5wRmlsZXMgaXMgb2Zmc2V0IGluCglieXRlcyAocmVnYXJkbGVzcyBvZiBhc2NpaS91bmljb2RlKS4KCgkqIHRvb2xzL3dpbmVpbnN0YWxsOgoJQW5kcml5IFBhbGFtYXJjaHVrIDxhcGEzYUB5YWhvby5jb20+CglDb3JyZWN0ZWQgaW5zdGFsbGF0aW9uIG9mIHRoZSB3aW5lIGFwcGxpY2F0aW9ucywgZml4ZWQgY2FsbCB0bwoJcmVnZWRpdC4KCgkqIHRvb2xzL2JpbjJyZXMuYzoKCVN0ZXZlbiBFZHdhcmRzIDxTdGV2ZW5fRWQ0MTUzQHlhaG9vLmNvbT4KCVBvcnRhYmlsaXR5IGZpeC4KCgkqIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYywgZGxscy9udGRsbC9zaWduYWxfc3BhcmMuYywKCSAgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLCBzZXJ2ZXIvY29uc29sZS5jLCBzZXJ2ZXIvcHJvY2Vzcy5jLAoJICBzZXJ2ZXIvcHJvY2Vzcy5oLCBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvcmVxdWVzdC5oLAoJICBzZXJ2ZXIvdHJhY2UuYywgd2luMzIvY29uc29sZS5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglJbXBsZW1lbnRhdGlvbiBmb3IgY29uc29sZSBjb250cm9sIGV2ZW50cyAoaW5jbHVkZXMgcHJvY2VzcyBncm91cHMKCXN1cHBvcnQpLgoKCSogcHJvZ3JhbXMvd2luZWNvbnNvbGUvdXNlci5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBzb21lIHNlbGVjdGlvbiBidWdzLgoKCSogZGVidWdnZXIvYnJlYWsuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJUmVhbGx5IGVudGVyIHRoZSBkZWJ1Z2dlciB3aGVuIERlYnVnQnJlYWsoUHJvY2VzcykgaXMgaW52b2tlZCBvbgoJZGVidWdnZWUuCgoJKiBkZWJ1Z2dlci93aW5lZGJnLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIGN0cmwtYyBzdXBwb3J0LgoKCSogd2luMzIvZWRpdGxpbmUuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJQmV0dGVyIHRvbyBsb25nIGxpbmVzIGRldGVjdGlvbiwgYWRkZWQgZGVsIGtleSBzdXBwb3J0IGluIGVtYWNzIG1vZGUuCgoJKiBkbGxzL2RpbnB1dC9kaW5wdXRfcHJpdmF0ZS5oLCBkbGxzL2RpbnB1dC9qb3lzdGljay9saW51eC5jLAoJICBkbGxzL2RpbnB1dC9qb3lzdGljay9saW51eGlucHV0LmMsIGRsbHMvZGlucHV0L2tleWJvYXJkL21haW4uYywKCSAgZGxscy9kaW5wdXQvbW91c2UvbWFpbi5jLCBpbmNsdWRlL2RpbnB1dC5oOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJLSBNYWRlIHN1cmUgY29uc3QgTFAgd2VyZSBhY3R1YWxseSBjb25zdCBpbiBkaW5wdXQuaC4KCS0gVW5pZm9ybWl6ZWQgdGhlIHtBLFd9IGRlY2xhcmF0aW9ucyBvZiBzb21lIHN0cnVjdHVyZXMuCgoJKiB0b29scy9maW5kZnVuYzoKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCVNob3cgaW4gd2hpY2ggZmlsZSB0aGUgZnVuY3Rpb24gaXMgYWN0dWFsbHkgaW1wbGVtZW50ZWQsIGFzIHdlbGwgYXMKCXRoZSBoZWFkZXIgaW4gd2hpY2ggaXQgaXMgZGVmaW5lZC4KCjIwMDItMDYtMDEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiAqLyo6CglSZW1vdmVkIHNvbWUgbW9yZSB0cmFpbGluZyB3aGl0ZXNwYWNlLgoKCSogbGlicmFyeS9SRUFETUUucmVzb3VyY2VzOgoJUmVtb3ZlZCBvYnNvbGV0ZSBSRUFETUUuCgoJKiB0b29scy93aW5lZHVtcC9wZS5jOgoJQWRkZWQgZmFsbGJhY2sgcmVhZCgpIGZvciBtaXNzaW5nL2ZhaWxpbmcgbW1hcCgpLgoKMjAwMi0wNS0zMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqICovKjoKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCVJlbW92ZWQgdHJhaWxpbmcgd2hpdGVzcGFjZS4KCgkqIGRsbHMveDExZHJ2L21vdXNlLmM6CglBdm9pZCBkaXZpc2lvbiBieSB6ZXJvICh0aGFua3MgdG8gRGF2aWQgUm9uaXMpLgoKCSogb2JqZWN0cy9wYWxldHRlLmMsIG9iamVjdHMvcGVuLmMsIG9iamVjdHMvcmVnaW9uLmMsCgkgIHdpbmRvd3MvcGFpbnRpbmcuYywgZGxscy9nZGkvbWZkcnYvaW5pdC5jLCBkbGxzL2dkaS93aW4xNmRydi9pbml0LmMsCgkgIGRsbHMvdHR5ZHJ2L2JpdG1hcC5jLCBkbGxzL3R0eWRydi9kYy5jLCBkbGxzL3R0eWRydi9vYmplY3RzLmMsCgkgIGRsbHMvdHR5ZHJ2L3R0eWRydi5oLCBkbGxzL3R0eWRydi90dHlkcnYuc3BlYywKCSAgZGxscy94MTFkcnYvTWFrZWZpbGUuaW4sIGRsbHMveDExZHJ2L3dpbmRvdy5jLAoJICBkbGxzL3gxMWRydi94MTFkcnYuc3BlYywgZ3JhcGhpY3MvbWFwcGluZy5jLCBncmFwaGljcy9wYWludGluZy5jLAoJICBncmFwaGljcy94MTFkcnYvYml0bWFwLmMsIGdyYXBoaWNzL3gxMWRydi9icnVzaC5jLAoJICBncmFwaGljcy94MTFkcnYvZGliLmMsIGdyYXBoaWNzL3gxMWRydi9pbml0LmMsCgkgIGdyYXBoaWNzL3gxMWRydi9vYmplY3RzLmMsIGluY2x1ZGUvYml0bWFwLmgsIGluY2x1ZGUvYnJ1c2guaCwKCSAgaW5jbHVkZS9mb250LmgsIGluY2x1ZGUvZ2RpLmgsIGluY2x1ZGUvcGFsZXR0ZS5oLCBpbmNsdWRlL3Blbi5oLAoJICBpbmNsdWRlL3JlZ2lvbi5oLCBpbmNsdWRlL3dpbmUvd2luZ2RpMTYuaCwgaW5jbHVkZS94MTFkcnYuaCwKCSAgb2JqZWN0cy9iaXRtYXAuYywgb2JqZWN0cy9icnVzaC5jLCBvYmplY3RzL2RjLmMsIG9iamVjdHMvZGliLmMsCgkgIG9iamVjdHMvZW5obWV0YWZpbGUuYywgb2JqZWN0cy9mb250LmMsIG9iamVjdHMvZ2Rpb2JqLmMsCgkgIG9iamVjdHMvbWV0YWZpbGUuYywgZGxscy9nZGkvZHJpdmVyLmMsIGRsbHMvZ2RpL2VuaG1mZHJ2L2luaXQuYzoKCUFkZGVkIGZ1bmN0aW9uIHRhYmxlIHRvIEdESSBvYmplY3RzIGZvciBiZXR0ZXIgZW5jYXBzdWxhdGlvbi4KCVJlbW92ZWQgc29tZSBkaXJlY3QgYWNjZXNzZXMgdG8gdGhlIGJpdG1hcCBzdHJ1Y3R1cmUuCglGaXhlZCBoYW5kbGluZyBvZiBzdG9jayBiaXRtYXAgaWYgc2VsZWN0ZWQgaW4gbXVsdGlwbGUgRENzLgoJU29tZSBtaW5vciBmaXhlcyB0byB0aGUgREMgZnVuY3Rpb24gdGFibGUuCgoJKiBzZXJ2ZXIvdXNlci5jOgoJRml4ZWQgbmV4dF91c2VyX2hhbmRsZSB0byBhbHNvIHdvcmsgb24gZGVsZXRlZCBoYW5kbGVzLgoKCSogcHJvZ3JhbXMvcmVnZWRpdC9NYWtlZmlsZS5pbjoKCUFuZHJpeSBQYWxhbWFyY2h1ayA8YXBhM2FAeWFob28uY29tPgoJVXNlIG5hdGl2ZSBsaWJjIGZ1bmN0aW9ucyBpbnN0ZWFkIG9mIG1zdmNydCBvbmVzLgoKCSogZGxscy94MTFkcnYva2V5Ym9hcmQuYzoKCVNoYWNoYXIgU2hlbWVzaCA8d2luZS1kZXZlbEBzdW4uY29uc3VtZXIub3JnLmlsPgoJQWRkZWQgSXNyYWVsaSBIZWJyZXcga2V5Ym9hcmQsIGFuZCBmaXhlZCBhIHByb2JsZW0gaW4gdGhlIG1hdGNoaW5nIG9mCgljaGFyYWN0ZXJzIGFnYWluc3QgZGVhZCBrZXlzLgoKMjAwMi0wNS0zMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy94MTFkcnYveDExZHJ2X21haW4uYywgZmlsZXMvZmlsZS5jLAoJICBpbmNsdWRlL2ZpbGUuaCwgaW5jbHVkZS93aW5lL3NlcnZlci5oLCBzY2hlZHVsZXIvY2xpZW50LmMsCgkgIHNjaGVkdWxlci9wcm9jZXNzLmM6CglBZGRlZCB3aW5lX3NlcnZlcl9mZF90b19oYW5kbGUgdG8gcmVwbGFjZSBGSUxFX0R1cFVuaXhIYW5kbGUuCgoJKiBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jOgoJU2FuZGVyIHZhbiBMZWV1d2VuIDxzYW5kZXJ2bEB4czRhbGwubmw+CglNYXRjaCBiZWhhdmlvdXIgb2YgSW1hZ2VMaXN0X0xvYWRJbWFnZUEgd3J0IGN4IHBhcmFtZXRlciAod2hlbiBzZXQgdG8KCXplcm8pLgoKCSogd2luMzIvZGV2aWNlLmM6CglHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCUZpeGVkIHdhcm5pbmdzLgoKCSogdG9vbHMvd21jL01ha2VmaWxlLmluLCB0b29scy93cmMvTWFrZWZpbGUuaW46CglTdGV2ZW4gRWR3YXJkcyA8U3RldmVuX0VkNDE1M0B5YWhvby5jb20+CglGaXhlcyBmb3IgYnVpbGRpbmcgb24gbWluZ3cuCgoJKiB0b29scy9tYWtlX3JlcXVlc3RzLCBpbmNsdWRlL3dpbmUvc2VydmVyLmgsCgkgIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbnNvbGUuYywKCSAgc2NoZWR1bGVyL2NsaWVudC5jLCBzZXJ2ZXIvY29uc29sZS5jLCBzZXJ2ZXIvY29uc29sZS5oLAoJICBzZXJ2ZXIvZGVidWdnZXIuYywgc2VydmVyL2V2ZW50LmMsIHNlcnZlci9maWxlLmMsIHNlcnZlci9oYW5kbGUuYywKCSAgc2VydmVyL2hhbmRsZS5oLCBzZXJ2ZXIvbWFwcGluZy5jLCBzZXJ2ZXIvbmFtZWRfcGlwZS5jLAoJICBzZXJ2ZXIvb2JqZWN0LmgsIHNlcnZlci9waXBlLmMsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9wcm9jZXNzLmgsCgkgIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci9yZWdpc3RyeS5jLCBzZXJ2ZXIvcmVxdWVzdC5jLAoJICBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvc2VtYXBob3JlLmMsIHNlcnZlci9zZXJpYWwuYywgc2VydmVyL3NtYi5jLAoJICBzZXJ2ZXIvc29jay5jLCBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90aHJlYWQuaCwgc2VydmVyL3RyYWNlLmMsCgkgIHNlcnZlci93aW5kb3cuYzoKCVJlbmFtZWQgaGFuZGxlX3QgdG8gb2JqX2hhbmRsZV90IHRvIGF2b2lkIGNvbmZsaWN0IHdpdGggcnBjZGNlLmguCgoJKiB0b29scy9idWdfcmVwb3J0LnBsOgoJVG9ueSBMYW1icmVndHMgPHRvbnlfbGFtYnJlZ3RzQHRlbHVzcGxhbmV0Lm5ldD4KCVJlbW92ZWQgLW1hbmFnZWQgb3B0aW9uLgoKCSogZGxscy9udGRsbC9jZHJvbS5jOiBQb3J0YWJpbGl0eSBmaXhlcy4KCgkqIGRsbHMva2VybmVsL3RpbWUuYywgZmlsZXMvZG9zX2ZzLmMsIGluY2x1ZGUvd2luYmFzZS5oOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJLSBGaXhlZCBHZXRTeXN0ZW1UaW1lQWRqdXN0bWVudCBwcm90b3R5cGUgYW5kIGFkZGVkIGl0IHRvIHdpbmJhc2UuaC4KCS0gRml4ZWQgRG9zRGF0ZVRpbWVUb0ZpbGVUaW1lLCBGaWxlVGltZVRvRG9zRGF0ZVRpbWUsCgkgIExvY2FsRmlsZVRpbWVUb0ZpbGVUaW1lLCBGaWxlVGltZVRvTG9jYWxGaWxlVGltZSBhbmQKCSAgU3lzdGVtVGltZVRvRmlsZVRpbWUuCgoyMDAyLTA1LTI5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jb21jYXQvTWFrZWZpbGUuaW4sIGRsbHMvY29tY2F0L2NvbWNhdC5oLAoJICBkbGxzL2NvbWNhdC9pbmZvcm1hdGlvbi5jLCBkbGxzL2NvbWN0bDMyL2lwYWRkcmVzcy5jLAoJICBkbGxzL2NvbWN0bDMyL3VwZG93bi5jLCBpbmNsdWRlL250ZGRrLmg6CglSZXBsYWNlZCBzd3ByaW50ZiBieSB3c3ByaW50ZlcuCgoJKiBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGUzMi9ycGMuYzoKCUJpbGwgTWVkbGFuZCA8bWVkYmkwMUBhY2NwYWMuY29tPgoJRW5zdXJlIHRoYXQgYW4gb3V0LW9mLXByb2Nlc3MgQ09NIG9iamVjdCBpcyBzdGFydGVkIG9ubHkgb25jZS4KCUFsbG93IG91dC1vZi1wcm9jZXNzIENPTSBvYmplY3RzIGlmIHJlcXVlc3QgaXMgZm9yCglpbi1vci1vdXQtb2YtcHJvY2Vzcy4KCgkqIGRsbHMvZGRyYXcvZDNkZXhlY3V0ZWJ1ZmZlci5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL2RpYi5jLAoJICBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYywgZGxscy9zaGx3YXBpL3JlZy5jLAoJICBncmFwaGljcy94MTFkcnYveGZvbnQuYywgdG9vbHMvd2luZWR1bXAvUkVBRE1FOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJRml4ZWQgc29tZSBtb3JlIG1pc3NpbmcgXG4gaW4gdHJhY2VzLgoKCSogZGxscy9jb21jdGwzMi9zdGF0dXMuYzoKCVNhbmRlciB2YW4gTGVldXdlbiA8c2FuZGVydmxAeHM0YWxsLm5sPgoJLSBDaGVjayBmb3IgdmFsaWQgcGFydCBuciBpbiBTVEFUVVNCQVJfR2V0VGV4dExlbmd0aC4KCS0gVFJBQ0UgZml4IGluIFNUQVRVU0JBUl9TZXRUZXh0VDsgU0JUX09XTkVSRFJBVyBwb2ludGVyIGlzbid0IGFsd2F5cwoJICBhIHN0cmluZyBwb2ludGVyLgoKCSogZGxscy9vbGUzMi9jb21wb2JqLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCURyb3BwZWQgc3VwZXJmbG91cyBSZW1vdGVfQ29HZXRDbGFzc09iamVjdCgpIChlbnRpcmVseSBjb250YWluZWQgaW4KCWNyZWF0ZV9tYXJzaGFsbGVkX3Byb3h5KCkpLgoKCSogZGxscy93aW5tbS9tbXN5c3RlbS5jLCBkbGxzL3dpbm1tL3dpbmVtbS5oOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglTb21lIG90aGVyIHN5bmNocm9uaXNhdGlvbiBpc3N1ZXMuCgoJKiBkbGxzL2tlcm5lbC90aW1lLmMsIGRsbHMvbnRkbGwvdGltZS5jOgoJRml4ZWQgc29tZSBhbGlnbm1lbnQgaXNzdWVzIChiYXNlZCBvbiBhIHBhdGNoIGJ5IEdyZWdnIE1hdHRpbnNvbikuCgoJKiBvbGUvb2xlMm5scy5jOgoJRml4ZWQgYnVmZmVyIGhhbmRsaW5nIG9mIHNvbWUgbG9jYWxlIGZ1bmN0aW9ucyAoYmFzZWQgb24gYSBwYXRjaCBieQoJTWVobWV0IFlhc2FyKS4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL2ZpbGUuYzoKCUpha29iIEVyaWtzc29uIDxqYWtvYkB2bWxpbnV4Lm9yZz4KCVJlbW92ZWQgcmVkdW5kYW50IGNoZWNrcyBhbmQgdmFyaWFibGVzLCBmaXhlZCBzb21lIHRlc3RzLCBzb21lCgljb3NtZXRpYyBjaGFuZ2VzLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvLmN2c2lnbm9yZSwgZGxscy9rZXJuZWwvdGVzdHMvbG9jYWxlLmM6CglGaXhlZCBzb21lIHRlc3RzIHRoYXQgd2VyZSBmYWlsaW5nIHVuZGVyIFdpbmUuCgoJKiBpbmNsdWRlL2Jhc2V0c2QuaCwgaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2lubnQuaDoKCU1vdmVkIFdPUkRTX0JJR0VORElBTiBtYWNyb3MgdG8gYmFzZXRzZC5oLgoJRml4ZWQgRklMRVRJTUUgZGVmaW5pdGlvbiBmb3IgYmlnLWVuZGlhbi4KCgkqIGdyYXBoaWNzL3gxMWRydi9wYWxldHRlLmM6CglHcmVnZyBNYXR0aW5zb24gPGdtMTM4MjQyQHNjb3QuY2FuYWRhLnN1bi5jb20+CglSZXBsYWNlZCAwIGJ5IC0xIHRvIGluZGljYXRlIGZyZWUgZW50cnkgaW4KCVgxMURSVl9QQUxFVFRFX1hQaXhlbFRvUGFsZXR0ZS4KCgkqIGluY2x1ZGUvd2lubnQuaDoKCUdyZWdnIE1hdHRpbnNvbiA8Z20xMzgyNDJAc2NvdC5jYW5hZGEuc3VuLmNvbT4KCUZpeGVkIHRoZSBMQVJHRV9JTlRFR0VSIGFuZCBVTEFSR0VfSU5URUdFUiB1bmlvbnMgZm9yIGJpZyBlbmRpYW4uCgoJKiBkbGxzL2NvbWN0bDMyL3RhYi5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gRml4ZWQgZHJhd2luZyBvZiBib3JkZXJzIHRvIHRoYXQgb2YgbmF0aXZlICh1c2VzIERyYXdFZGdlKS4KCS0gRml4ZWQgZHJhd2luZyBvZiBzZXBhcmF0b3JzIHRvIG1hdGNoIHRoZSBuYXRpdmUuCgktIEZpeGVkIGhlaWdodCBvZiB0YWJzIGFuZCBidXR0b25zIHRvIG1hdGNoIG5hdGl2ZS4KCS0gQWRkL2ltcHJvdmVkIHRyYWNlcy4KCS0gSGFuZGxlIFdNX1NZU0NPTE9SQ0hBTkdFIG1lc3NhZ2UuCgoJKiBkbGxzL3dpbm1tL21tc3lzdGVtLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUNoZWNrIGZvciBOVUxMIHB0ciBpbiBtaWRpU3RyZWFtT3V0LgoKCSogZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL3Rlc3RzL2xvY2FsZS5jOgoJTWVobWV0IFlhc2FyIDxteWFzYXJAZnJlZS5mcj4KCUFkZGVkIHRlc3QgZm9yIGxvY2FsZSBmdW5jdGlvbnMuCgoyMDAyLTA1LTI4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogdG9vbHMvd2luZXdyYXBwZXI6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIHRoZSBhYmlsaXR5IHRvIGFkZCBsb2NhbCBjb25maWd1cmF0aW9uIHRvIHdpbmV3cmFwcGVyLgoKCSogZGxscy9nZGkvZW5obWZkcnYvZGMuYywgZGxscy9nZGkvZW5obWZkcnYvZ3JhcGhpY3MuYywKCSAgZGxscy9nZGkvbWZkcnYvZ3JhcGhpY3MuYzoKCUEgZmV3IGZpeGVzIGluIEV4dFNlbGVjdENsaXBSZ24gbWV0YWZpbGUgZnVuY3Rpb25zLgoKCSogd2luZG93cy93aW5wb3MuYzoKCUFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCUZpeGVkIGEgbWVtb3J5IGxlYWsgaW4gZmluZF9jaGlsZF9mcm9tX3BvaW50KCkuCgoJKiBpbmNsdWRlL3NldHVwYXBpLmg6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAc3RhcnQuY29tLmF1PgoJU3R1YiBpbXBsZW1lbnRhdGlvbnMgb2Ygc29tZSBmdW5jdGlvbnMuCgoJKiBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jLCBkb2N1bWVudGF0aW9uL3NhbXBsZXMvY29uZmlnOgoJSm9oYW4gR2lsbCA8am9oYW5lQGx5c2F0b3IubGl1LnNlPgoJT25seSBlbnVtZXJhdGUgRGlyZWN0U291bmQgZGV2aWNlcyBpZiB0aGUgZmlyc3Qgc291bmQgZGV2aWNlIGluIHRoZQoJc3lzdGVtIHN1cHBvcnRzIHRoZSBXaW5lIGltcGxlbWVudGF0aW9uIG9mIERpcmVjdFNvdW5kLiBBbHNvIGFkZGVkCglzb21lIGVudHJpZXMgdG8gdGhlIHNhbXBsZSBjb25maWcgZmlsZSBhbmQgY2hhbmdlZCB0aGUgdmFsdWVzIG9mIHRoZQoJIkVtdWxEcml2ZXIiIGtleSB0byAiWSIvIk4iLgoKCSogZGxscy93aW5lZG9zL2ludDEwLmMsIGluY2x1ZGUvbWlzY2VtdS5oLCBtc2Rvcy9kb3NtZW0uYzoKCUNocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCVRoZSBTVkdBIGJsb2NrIGNvZGUgd2FzIG5vdCBhY2Nlc3NpYmxlIChBSCBhbmQgQUwgaW52ZXJ0ZWQpLiBGaXhlZC4KCVJlbW92ZWQgZHVwbGljYXRlIFZFU0EgR2V0IFN1cGVyVkdBIElORk9STUFUSU9OIGZ1bmN0aW9uLgoJRml4IGFuZCBmaW5pc2ggaXRzIGltcGxlbWVudGF0aW9uLgoJQWRkIDIgZnVuY3Rpb25zIHRvIG1hbmFnZWQgc3RydWN0dXJlcyBpbiB0aGUgQmlvc1N5cyBzZWdtZW50LgoKCSogZGxscy93aW5zcG9vbC9pbmZvLmMsIHByb2dyYW1zL2F2aXRvb2xzL2F2aWluZm8uYywKCSAgcHJvZ3JhbXMvYXZpdG9vbHMvYXZpcGxheS5jOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJRml4ZWQgd2FybmluZ3MuCgoJKiBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jOgoJTWFjaWVrIEthbGlzemV3c2tpIDxrZW5vbkBnbzIucGw+CglGaXhlZCBtZW1vcnkgYWxsb2NhdGlvbiBidWcgaW4gUFJPUFNIRUVUX0NvbGxlY3RQYWdlSW5mby4KCgkqIGRsbHMvd2lubW0vbW1zeXN0ZW0uYzoKCVNhbmRlciB2YW4gTGVldXdlbiA8c2FuZGVydmxAeHM0YWxsLm5sPgoJbWl4ZXJHZXRDb250cm9sRGV0YWlsc1c6IHRyYW5zbGF0ZSBzdHJpbmdzIGZvcgoJTUlYRVJfR0VUQ09OVFJPTERFVEFJTFNGX0xJU1RURVhUIG9wdGlvbi4KCgkqIGluY2x1ZGUvd2luYmFzZS5oOgoJV2FycmVuIFR1cmthbCA8d3R1cmthbEBjYnUuZWR1PgoJQWRkZWQgc3RydWN0dXJlcyBhbmQgc29tZSBjb25zdGFudHMgZm9yIHN0cmVhbSBoYW5kbGluZy4KCgkqIGRsbHMvc2V0dXBhcGkvZGV2aW5zdC5jLCBkbGxzL3NldHVwYXBpL3NldHVwYXBpLnNwZWM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAc3RhcnQuY29tLmF1PgoJU3R1YiBpbXBsZW1lbnRhdGlvbnMgb2Ygc29tZSBmdW5jdGlvbnMuCgoJKiBmaWxlcy9maWxlLmM6CglKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJU2lsZW5jZSBmaXhtZSBpbiB1bm5lY2Vzc2FyeSBzaXR1YXRpb24sIGFkZCBtaXNzaW5nIFxuIHRvIGFub3RoZXIgZml4bWUuCgoyMDAyLTA1LTI1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy90dHlkcnYvd25kLmMsIGRsbHMveDExZHJ2L3dpbnBvcy5jLCBkbGxzL3gxMWRydi94cmVuZGVyLmMsCgkgIGdyYXBoaWNzL3gxMWRydi9jbGlwcGluZy5jLCBncmFwaGljcy94MTFkcnYvZ3JhcGhpY3MuYywKCSAgZ3JhcGhpY3MveDExZHJ2L3RleHQuYywgaW5jbHVkZS9nZGkuaCwgaW5jbHVkZS9yZWdpb24uaCwKCSAgaW5jbHVkZS94MTFkcnYuaCwgb2JqZWN0cy9jbGlwcGluZy5jLCBvYmplY3RzL2dkaW9iai5jLAoJICBvYmplY3RzL3JlZ2lvbi5jLCB3aW5kb3dzL2RjZS5jLCB3aW5kb3dzL3dpbnBvcy5jLAoJICBkbGxzL2dkaS9tZmRydi9ncmFwaGljcy5jOgoJUmVtb3ZlZCBkZXBlbmRlbmNpZXMgb24gdGhlIGludGVybmFscyBvZiB0aGUgcmVnaW9uIG9iamVjdC4KCURvIG5vdCBzdG9yZSB0aGUgcmVnaW9uIHR5cGUgaW4gdGhlIG9iamVjdCwgaXQncyB0cml2aWFsIHRvIGRldGVybWluZQoJZnJvbSB0aGUgcmVjdGFuZ2xlIGNvdW50LgoJUmV3cm90ZSBhIGZldyByb3V0aW5lcyB0byBub3QgZGVwZW5kIG9uIGludGVybmFsIGNsaXBwaW5nIG9yIHJlZ2lvbgoJZnVuY3Rpb25zLgoKCSogd2luMzIvZGV2aWNlLmM6CglBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CgktIEFkZCBzb21lIHVuZG9jdW1lbnRlZCBpb2N0bCBtYXBwaW5ncy4KCS0gQ29ycmVjdCBPcGVuVnhESGFuZGxlIHByb3RvdHlwZSwgZG9jdW1lbnQgaXQsIGhhdmUgYSB0cnkgYXQKCSAgcmV0dXJuaW5nIGEgUmluZyAzIGhhbmRsZSBhbmQgbWFrZSBGSVhNRSBtb3JlIHZlcmJvc2UuCgoJKiBkZWJ1Z2dlci93aW5lZGJnLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGNvbnQvcGFzcyBtaXNtYXRjaC4KCgkqIGRlYnVnZ2VyL2RiZy55LCBkZWJ1Z2dlci9kZWJ1Z2dlci5oLCBkZWJ1Z2dlci9leHByLmMsCgkgIGRlYnVnZ2VyL2luZm8uYywgZGVidWdnZXIvbWVtb3J5LmMsIGRlYnVnZ2VyL3R5cGVzLmMsCgkgIGRlYnVnZ2VyL3dpbmVkYmcuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJSGFja2VkIHVuaWNvZGUgcHJpbnRpbmcgZmVhdHVyZSAoeCAvdSkuCglNYWRlIHRoZSB0eXBlIGNhc3RzIGEgYml0IG1vcmUgcm9idXN0LgoKCSogc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3Byb2Nlc3MuaDoKCUZpeGVkIHByb2Nlc3Mgc3RhcnR1cCBzeW5jaHJvbml6YXRpb24gYnJva2VuIGJ5IHByZXZpb3VzIGNoYW5nZS4KCgkqIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjOgoJRml4ZWQgdHlwbyBpbiBpc3dhbHBoYSBmb3J3YXJkLgoKCSogdG9vbHMvd2luZWJ1aWxkL2ltcG9ydC5jOgoJT25seSBhZGQgZXh0cmEgc3ltYm9scyBpZiB0aGV5IGFyZSBub3QgYWxyZWFkeSBleHBvcnRlZCBieSB0aGlzIGRsbC4KCgkqIGRlYnVnZ2VyL3dpbmVkYmcuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgd2luZSBleGVjIGZpbGUgbG9jYXRpb24gYWZ0ZXIgc3RhcnR1cCBtb2RpZmljYXRpb25zLgoKCSogbWlzYy92ZXJzaW9uLmM6CglBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CgktIFVzZSBXaW45OCBTRSB2YWx1ZXMgZm9yIFdJTjk4IHNldHRpbmcuCgktIFdpbiBNRSBpcyBET1MgOC4wMC4KCS0gUmVuYW1lIHZhcmlhYmxlIGRlZmF1bHRXaW5WZXJzaW9uIHRvIGZvcmNlZFdpblZlcnNpb24uCgktIFZFUlNJT05fR2V0U3lzdGVtRExMVmVyc2lvbigpOiBhZGQgVzJLL1hQIHN1cHBvcnQsIGFkZCAidW5rbm93biIKCSAgd2FybmluZy4KCjIwMDItMDUtMjQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb25maWd1cmUuYWMsIE1ha2UucnVsZXMuaW4sIGNvbmZpZ3VyZToKCU5vIGxvbmdlciBuZWVkIGEgc3BlY2lhbCBMRENPTUJJTkUgZm9yIGN5Z3dpbi9taW5ndy4KCgkqIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwgbWVtb3J5L2Vudmlyb24uYywKCSAgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2VydmVyL2RlYnVnZ2VyLmMsIHNlcnZlci9wcm9jZXNzLmMsCgkgIHNlcnZlci9wcm9jZXNzLmgsIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci9wdHJhY2UuYywKCSAgc2VydmVyL3RyYWNlLmM6CglBIGZldyBvcHRpbWl6YXRpb25zIGluIHRoZSBwcm9jZXNzIHN0YXJ0dXAgcmVxdWVzdHMgbm93IHRoYXQgV2luZWxpYgoJYXBwcyBhcmUgc3RhcnRlZCBkaWZmZXJlbnRseSBmcm9tIFVuaXggb25lcy4KCgkqIGRsbHMvaW1tMzIvaW1tLmMsIGRsbHMvbnRkbGwvY2Ryb20uYywgZGxscy9zaGx3YXBpL3JlZy5jLAoJICBkbGxzL3dpbmVkb3MvZG9zdm0uYywgZ3JhcGhpY3MveDExZHJ2L2dyYXBoaWNzLmMsCgkgIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLCBtc2Rvcy9wcGRldi5jLCBvYmplY3RzL3JlZ2lvbi5jLAoJICB3aW5kb3dzL3N5c3BhcmFtcy5jLCBkbGxzL2FkdmFwaTMyL2NyeXB0LmMsCgkgIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYywgZGxscy9kaW5wdXQva2V5Ym9hcmQvbWFpbi5jLAoJICBkbGxzL2dkaS9mcmVldHlwZS5jOgoJSmFtZXMgSnVyYW4gPGphbWVzanVyYW5AYWx1bW5pLnBzdS5lZHU+CglBZGQgbWlzc2luZyBcbiB0byBvdXRwdXQgbWVzc2FnZXMuCgoJKiBncmFwaGljcy94MTFkcnYvb3BlbmdsLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJU3VwcG9ydCBxdWVyeWluZyBvZiBudW1iZXIgb2YgdmlzdWFscyB3aXRob3V0IHJlcG9ydGluZyBhbiBlcnJvciBvcgoJY3Jhc2hpbmcuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBpbmNsdWRlL3dpbmJhc2UuaCwgbWlzYy92ZXJzaW9uLmM6CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglQYXJ0aWFsIGltcGxlbWVudGF0aW9uIG9mIFZlcmlmeVZlcnNpb25JbmZve0EsV30uCgoyMDAyLTA1LTIzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbWlzYy9tYWluLmMsIG1pc2MvcmVnaXN0cnkuYywgbXNkb3MvZG9zY29uZi5jLCBtc2Rvcy9pbnQxMS5jLAoJICBtc2Rvcy9pbnQxYS5jLCBtc2Rvcy9pbnQyMS5jLCBtc2Rvcy9pb3BvcnRzLmMsIG9iamVjdHMvZm9udC5jLAoJICBvbGUvb2xlMm5scy5jLCBwcm9ncmFtcy9wcm9nbWFuL3N0cmluZy5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLAoJICB3aW4zMi9jb25zb2xlLmMsIGRsbHMvd2luZWRvcy9tb2R1bGUuYywgZGxscy94MTFkcnYvZXZlbnQuYywKCSAgZmlsZXMvZGlyZWN0b3J5LmMsIGZpbGVzL2Rvc19mcy5jLCBmaWxlcy9kcml2ZS5jLCBmaWxlcy9wcm9maWxlLmMsCgkgIGluY2x1ZGUvZmlsZS5oLCBpbmNsdWRlL29wdGlvbnMuaCwgbG9hZGVyL2xvYWRvcmRlci5jOgoJUmVtb3ZlZCBtb3N0IGluY2x1c2lvbnMgb2Ygb3B0aW9ucy5oLgoJUmVtb3ZlZCBhIGZldyBubyBsb25nZXIgdXNlZCBQUk9GSUxFXyogZnVuY3Rpb25zLgoKCSogZGxscy93aW5zcG9vbC9pbmZvLmMsIGRvY3VtZW50YXRpb24vTWFrZWZpbGUuaW4sCgkgIGRvY3VtZW50YXRpb24vaW5zdGFsbGF0aW9uLXVuZC1rb25maWd1cmF0aW9uLmdlcm1hbiwKCSAgZG9jdW1lbnRhdGlvbi9ydW5uaW5nLnNnbWwsIGRvY3VtZW50YXRpb24vc2FtcGxlcy9jb25maWcsCgkgIGRvY3VtZW50YXRpb24vd2luZS5tYW4uaW4sIG1pc2Mvb3B0aW9ucy5jLCBtaXNjL3ZlcnNpb24uYywKCSAgd2luMzIvZGV2aWNlLmM6CglSZXBsYWNlZCAtZG9zdmVyIGFuZCAtd2ludmVyIG9wdGlvbnMgYnkgY29uZmlnIGZpbGUgcGFyYW1ldGVycy4KCgkqIGRsbHMvbWFrZV9kbGxzLCBkbGxzL01ha2VmaWxlLmluOgoJUmVzdG9yZWQgdGhlIGxpYnJhcnkgZmlsZSBpbnRlcm1lZGlhdGUgc3RlcCBmb3Igc3ltbGluayBkZXBlbmRlbmNpZXMuCgoJKiBkbGxzL3gxMWRydi93aW5kb3cuYywgZGxscy94MTFkcnYveDExZHJ2X21haW4uYywgaW5jbHVkZS94MTFkcnYuaDoKCVJlc3RvcmVkIG1hbmFnZWQgbW9kZSBjb25maWcgZmlsZSBvcHRpb24uCgoJKiB0b29scy93aW5lc2hlbGxsaW5rOgoJRHVzdGluIE5hdmVhIDxzcGVlZGR5bW9uQHlhaG9vLmNvbT4KCVN1cHBvcnQgZm9yIEtERTMuCgoJKiB0b29scy93aW5laW5zdGFsbDoKCUR1c3RpbiBOYXZlYSA8c3BlZWRkeW1vbkB5YWhvby5jb20+CglBZGRlZCBjcmVhdGlvbiBvZiBjOi93aW5kb3dzL2ZvbnRzIGFuZAoJYzovd2luZG93cy9TdGFydCBNZW51L1Byb2dyYW1zL1N0YXJ0dXAuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9maWxlLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUltcHJvdmUgdGhlIGZhaWx1cmUgbWVzc2FnZXMuCgoJKiBpbmNsdWRlL3dpbmUvcG9ydC5oLCBsb2FkZXIvbmUvbW9kdWxlLmMsIGxvYWRlci9uZS9yZXNvdXJjZS5jLAoJICBsb2FkZXIvdGFzay5jLCBtZW1vcnkvZW52aXJvbi5jLCB0b29scy93aW5lYnVpbGQvc3BlYzE2LmMsCgkgIHdpbmRvd3MvY2xhc3MuYywgZGxscy9kcGxheXgvZHBsYXkuYywgZGxscy9nZGkvZnJlZXR5cGUuYywKCSAgZGxscy9udGRsbC9oZWFwLmMsIGRsbHMvd2luZXBzL3RydWV0eXBlLmMsIGluY2x1ZGUvdXNlci5oOgoJUmVwbGFjZWQgdGhlIEdFVC9QVVRfVUEgbWFjcm9zIGJ5IG1lbWNweS4gRml4ZWQgYSBmZXcgYmlnLWVuZGlhbgoJaXNzdWVzLgoKCSogZGxscy9NYWtlZmlsZS5pbiwgZGxscy9tYWtlX2RsbHM6CglSdW4gbWFrZSBjbGVhbiBpbiBhbGwgZGlyZWN0b3JpZXMsIGV2ZW4gdGhlIG9uZXMgd2UgZG9uJ3QgY29tcGlsZSBpbi4KCVNpbXBsaWZpZWQgc3ViLWRpcmVjdG9yaWVzIHJ1bGVzIGEgYml0LgoKCSogZGxscy9kZHJhdy9NYWtlZmlsZS5pbiwgZGxscy90dHlkcnYvTWFrZWZpbGUuaW4sCgkgIGRsbHMvd2luZWRvcy9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS9tY2ljZGEvTWFrZWZpbGUuaW4sCgkgIGRsbHMvd2lubW0vbWNpc2VxL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL21jaXdhdmUvTWFrZWZpbGUuaW46CglSZW1vdmVkIHNvbWUgdW5uZWNlc3NhcnkgaW1wb3J0cy4KCgkqIE1ha2VmaWxlLmluOiBGaXhlZCBldGFncyBydWxlLgoKCSogZGxscy94MTFkcnYvZXZlbnQuYywgZGxscy94MTFkcnYvd2luZG93LmMsCgkgIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmMsIGRvY3VtZW50YXRpb24vd2luZS5tYW4uaW4sCgkgIGdyYXBoaWNzL3gxMWRydi9ncmFwaGljcy5jLCBpbmNsdWRlL29wdGlvbnMuaCwgbWlzYy9vcHRpb25zLmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJUmVtb3ZlIHRoZSAtLW1hbmFnZWQgb3B0aW9uLCBhbmQgbWFrZSB3aW5lIHVzZSB0aGUgbWFuYWdlZCBtb2RlIGJ5CglkZWZhdWx0LgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliLmMsIGRsbHMvc2V0dXBhcGkvc2V0dXB4X21haW4uYywgbWlzYy9yZWdpc3RyeS5jOgoJQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJUmVtb3ZlZCBvYnNvbGV0ZSBlbWFpbCBhZGRyZXNzLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvYWxsb2MuYywgZGxscy9rZXJuZWwvdGVzdHMvZmlsZS5jLAoJICBkbGxzL2tlcm5lbC90ZXN0cy9wcm9jZXNzLmMsIGRsbHMva2VybmVsL3Rlc3RzL3RocmVhZC5jLAoJICBkbGxzL29sZWF1dDMyL3Rlc3RzL3ZhcnRlc3QuYywgZGxscy9zaGx3YXBpL3Rlc3RzL3NocmVnLmMsCgkgIGRsbHMvdXNlci90ZXN0cy9jbGFzcy5jLCBkbGxzL3VzZXIvdGVzdHMvd3NwcmludGYuYywKCSAgZGxscy93aW5zb2NrL3Rlc3RzL3NvY2suYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJTWFrZSB0aGUgdGVzdHMgY29tcGlsZSB3aXRoIFZpc3VhbCBDKysuCgoJKiBpbmNsdWRlL21hcGljb2RlLmgsIGluY2x1ZGUvbWFwaWRlZnMuaCwgaW5jbHVkZS93aW5iYXNlLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUluY2x1ZGUgd2luZXJyb3IuaCBpZiBpbiBXaW5lbGliIG1vZGUuCgoyMDAyLTA1LTIyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL2F2aWNhcDMyLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL21zZzcxMS5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9tc3JsZTMyLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3F1YXJ0ei5hcGk6CglBdm9pZCAwLWJ5dGUgZmlsZXMuCgoJKiBwcm9ncmFtcy9hdml0b29scy9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luZXRlc3QvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L3J1bnRlc3QsIHNjaGVkdWxlci9jbGllbnQuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywKCSAgdG9vbHMvd2luZXdyYXBwZXIsIHdpbjMyL2NvbnNvbGUuYywgLmN2c2lnbm9yZSwgTWFrZS5ydWxlcy5pbiwKCSAgTWFrZWZpbGUuaW4sIGRsbHMvTWFrZWRsbC5ydWxlcy5pbiwgZGxscy94MTFkcnYvY2xpcGJvYXJkLmMsCgkgIGRvY3VtZW50YXRpb24vTWFrZWZpbGUuaW4sIGRvY3VtZW50YXRpb24vc2FtcGxlcy9jb25maWcsCgkgIGRvY3VtZW50YXRpb24vd2luZS5tYW4uaW4sIGluY2x1ZGUvbW9kdWxlLmgsIGluY2x1ZGUvd2luZS9saWJyYXJ5LmgsCgkgIGxpYnJhcnkvbG9hZGVyLmMsIGxvYWRlci9tb2R1bGUuYywgbWlzY2VtdS8uY3ZzaWdub3JlLAoJICBtaXNjZW11L01ha2VmaWxlLmluLCBwcm9ncmFtcy8uY3ZzaWdub3JlLCBwcm9ncmFtcy9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvTWFrZXByb2cucnVsZXMuaW4sIHByb2dyYW1zL3dpbmVhcHBsb2FkZXIuaW4sCgkgIHdpbmVkZWZhdWx0LnJlZzoKCU5ldyBsb2FkaW5nIHNjaGVtZSBmb3IgV2luZWxpYiBhcHBzLCBtYWtlcyB0aGVtIGJlaGF2ZSBsaWtlIGJ1aWx0aW4KCWRsbHMgYW5kIHRha2VzIGxvYWQgb3JkZXIgaW50byBhY2NvdW50LiBJbnN0YWxsIHRoZW0gaW4gZGxsZGlyLgoJSW1wcm92ZWQgTU9EVUxFX0dldEJpbmFyeVR5cGUgdG8gcmVjb2duaXplIEVMRiBiaW5hcmllcy4KCUFkZGVkIGEgd3JhcHBlciBzY3JpcHQgdG8gc2V0dXAgdGhlIGVudmlyb25tZW50IHdoZW4gcnVubmluZyBkaXJlY3RseQoJZnJvbSBpbnNpZGUgdGhlIHNvdXJjZSB0cmVlLgoKCSogTWFrZS5ydWxlcy5pbiwgYWNsb2NhbC5tNCwgY29uZmlndXJlLCBjb25maWd1cmUuYWM6CglBZGRlZCBjaGVjayBmb3IgbG4uCgoJKiBkbGxzL01ha2VmaWxlLmluLCBkbGxzL21zYWNtL21zYWRwMzIvLmN2c2lnbm9yZSwKCSAgZGxscy9tc2FjbS9tc2FkcDMyL01ha2VmaWxlLmluLCBkbGxzL21zYWNtL21zYWRwMzIvbXNhZHAzMi5hY20uc3BlYywKCSAgZGxscy9tc2FjbS9tc2FkcDMyL21zYWRwMzIuYywgZG9jdW1lbnRhdGlvbi9zYW1wbGVzL3N5c3RlbS5pbmksCgkgIGNvbmZpZ3VyZS5hYywgY29uZmlndXJlOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglDcmVhdGVkIGFuIEFDTSBNUyBBRFBDTSBjb2RlYy4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9taWRpLmMsIGRsbHMvd2lubW0vd2luZW9zcy9taXhlci5jLAoJICBkbGxzL3dpbm1tL3dpbmVvc3MvbW1hdXguYywgZGxscy93aW5zb2NrL2FzeW5jLmMsCgkgIGRsbHMvd2luc29jay9zb2NrZXQuYywgZGxscy93c29jazMyL3NvY2tldC5jLAoJICBkbGxzL3gxMWRydi93aW5lY2xpcHNydi5jLCBtc2Rvcy9wcGRldi5jLCBkbGxzL2F2aWZpbDMyL2F2aWZpbGUuYywKCSAgZGxscy9kaW5wdXQvam95c3RpY2svbGludXguYywgZGxscy9kaW5wdXQvam95c3RpY2svbGludXhpbnB1dC5jLAoJICBkbGxzL3NoZG9jdncvc2hkb2N2d19tYWluLmMsIGRsbHMvd2luZWRvcy9pbnQzMS5jLAoJICBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSBpc3N1ZXMgZm91bmQgYnkgd2luYXBpX2NoZWNrLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMuZGF0LCB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5wbSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjE2L2F2aWZpbGUuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvYXZpY2FwMzIuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvYXZpZmlsMzIuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvY29tY2F0LmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL2ltYWFkcDMyLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL2ltbTMyLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL2tlcm5lbDMyLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL21zZzcxMS5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9tc3JsZTMyLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL250ZGxsLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3F1YXJ0ei5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9zaGRvY3Z3LmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3VybG1vbi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi91c2VyMzIuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvd2luZXBzLmFwaToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQVBJIGZpbGVzIHVwZGF0ZS4KCgkqIGRsbHMvd2lubW0vbW1zeXN0ZW0uYywgZGxscy93aW5tbS93aW5lbW0uaDoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgaGFuZyBpbiBQbGF5U291bmQgaW4gZXJyb3IgY2FzZXM7IGFkZGVkIHJlZ2lzdHJ5IGxvb2t1cCBmb3Igc291bmRzLgoKCSogZGxscy93aW5zb2NrL3Rlc3RzL3NvY2suYywgaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9tc3dzb2NrLmgsCgkgIGluY2x1ZGUvd2luc29jay5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBZGQgbXN3c29jay5oLCBtb3ZlIHJlbGV2YW50IGRlZmluaXRpb25zIHRvIHRoaXMgaGVhZGVyLgoKMjAwMi0wNS0yMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHByb2dyYW1zL3dpbmVwYXRoL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5ldGVzdC8uY3ZzaWdub3JlLAoJICBwcm9ncmFtcy93aW5ldGVzdC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luaGVscC8uY3ZzaWdub3JlLAoJICBwcm9ncmFtcy93aW5oZWxwL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW52ZXIvLmN2c2lnbm9yZSwKCSAgcHJvZ3JhbXMvd2ludmVyL01ha2VmaWxlLmluLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLAoJICBwcm9ncmFtcy9jbWRsZ3RzdC8uY3ZzaWdub3JlLCBwcm9ncmFtcy9jbWRsZ3RzdC9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvY29udHJvbC8uY3ZzaWdub3JlLCBwcm9ncmFtcy9jb250cm9sL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy9leHBhbmQvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvZXhwYW5kL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy9ub3RlcGFkLy5jdnNpZ25vcmUsIHByb2dyYW1zL25vdGVwYWQvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL29zdmVyc2lvbmNoZWNrLy5jdnNpZ25vcmUsCgkgIHByb2dyYW1zL29zdmVyc2lvbmNoZWNrL01ha2VmaWxlLmluLCBwcm9ncmFtcy9wcm9nbWFuLy5jdnNpZ25vcmUsCgkgIHByb2dyYW1zL3Byb2dtYW4vTWFrZWZpbGUuaW4sIHByb2dyYW1zL3JlZ2FwaS8uY3ZzaWdub3JlLAoJICBwcm9ncmFtcy9yZWdhcGkvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3JlZ2VkaXQvLmN2c2lnbm9yZSwKCSAgcHJvZ3JhbXMvcmVnZWRpdC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvcmVnc3ZyMzIvLmN2c2lnbm9yZSwKCSAgcHJvZ3JhbXMvcmVnc3ZyMzIvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3JlZ3Rlc3QvLmN2c2lnbm9yZSwKCSAgcHJvZ3JhbXMvcmVndGVzdC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvdW5pbnN0YWxsZXIvLmN2c2lnbm9yZSwKCSAgcHJvZ3JhbXMvdW5pbnN0YWxsZXIvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3ZpZXcvLmN2c2lnbm9yZSwKCSAgcHJvZ3JhbXMvdmlldy9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2NtZC8uY3ZzaWdub3JlLAoJICBwcm9ncmFtcy93Y21kL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5lY29uc29sZS8uY3ZzaWdub3JlLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luZW1pbmUvLmN2c2lnbm9yZSwKCSAgcHJvZ3JhbXMvd2luZW1pbmUvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmVwYXRoLy5jdnNpZ25vcmUsCgkgIE1ha2UucnVsZXMuaW4sIGRlYnVnZ2VyLy5jdnNpZ25vcmUsIGRlYnVnZ2VyL01ha2VmaWxlLmluLAoJICBkbGxzL2tlcm5lbC90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL29sZWF1dDMyL3Rlc3RzLy5jdnNpZ25vcmUsCgkgIGRsbHMvc2hsd2FwaS90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL3VzZXIvdGVzdHMvLmN2c2lnbm9yZSwKCSAgZGxscy93aW5zb2NrL3Rlc3RzLy5jdnNpZ25vcmUsIHByb2dyYW1zL01ha2Vwcm9nLnJ1bGVzLmluLAoJICBwcm9ncmFtcy9hdml0b29scy8uY3ZzaWdub3JlLCBwcm9ncmFtcy9hdml0b29scy9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvY2xvY2svLmN2c2lnbm9yZSwgcHJvZ3JhbXMvY2xvY2svTWFrZWZpbGUuaW46CglSZW5hbWVkIFdpbmVsaWIgYXBwcyB0byAuZXhlLnNvIHRvIGZvbGxvdyB0aGUgZGxsIG5hbWluZyBjb252ZW50aW9uLgoKCSogaW5jbHVkZS9jb21tY3RybC5oLCBpbmNsdWRlL3NobHdhcGkuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJVGVzdCBmb3IgSVN0cmVhbV9JTUVUSE9EUyBiZWZvcmUgZGVmaW5pbmcgQVBJcyB0aGF0IG5lZWQgdGhlIElTdHJlYW0KCWludGVyZmFjZSAobGlrZSBvbiBXaW5kb3dzKS4KCgkqIGRsbHMvd2luYXNwaS9hc3BpLmM6CglTdGV2ZW4gRWR3YXJkcyA8U3RldmVuX0VkNDE1M0B5YWhvby5jb20+CglDaGVjayBmb3Igc3lzL2lvY3RsLmguCgoJKiBkbGxzL01ha2VmaWxlLmluLCBkbGxzL21zYWNtL21zZzcxMS8uY3ZzaWdub3JlLAoJICBkbGxzL21zYWNtL21zZzcxMS9NYWtlZmlsZS5pbiwgZGxscy9tc2FjbS9tc2c3MTEvbXNnNzExLmFjbS5zcGVjLAoJICBkbGxzL21zYWNtL21zZzcxMS9tc2c3MTEuYywgZGxscy9tc2FjbS9tc2c3MTEvbXNnNzExLmRydi5zcGVjOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglJbXBsZW1lbnRlZCBhIEc3MTEgQUNNIGNvZGVjIChzdXBwb3J0cyBib3RoIEEtTGF3IGFuZCBNVS1MYXcpLgoKCSogZGxscy9tYWtlX2RsbHM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCU5vdyBydW5zIGluIFBlcmwgc3RyaWN0IG1vZGUuCglBZGRlZCBhYmlsaXR5IHRvIHNraXAgRExMIGZyb20gdGhlIHRyZWUuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwuYywgZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgc3R1YiBmb3IgRXh0cmFjdEFzc29jaWF0ZWRJY29uRXhBLgoKCSogcHJvZ3JhbXMvd2luZWNvbnNvbGUvZGlhbG9nLmMsIHByb2dyYW1zL3dpbmVjb25zb2xlL3JlZ2lzdHJ5LmMsCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL3VzZXIuYywgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbl9wcml2YXRlLmg6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUFsbG93IEFOU0kgY2hhcnNldCBpbiBmb250IGVudW1lcmF0aW9uLgoJQWRkZWQgYWJpbGl0eSBub3QgdG8gY2xvc2UgdGhlIHdpbmVjb25zb2xlIG9uIGNvbnNvbGUgb2JqZWN0CglkZXN0cnVjdGlvbi4KCgkqIGRsbHMvdXNlci9kZGUvZGRlbWwxNi5jLCB3aW5kb3dzL3dpbnByb2MuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgMTYvMzIgRERFIG1lc3NhZ2UgY29udmVyc2lvbi4KCUZpbmlzaGVkIHRoZSAxNiBiaXQgaW1wbGVtZW50YXRpb24gb2YgRERFTUwuCgoyMDAyLTA1LTIwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBwcm9ncmFtcy9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvZXhwYW5kLy5jdnNpZ25vcmUsIHByb2dyYW1zL2V4cGFuZC9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvZXhwYW5kL2V4cGFuZC5jOgoJTW92ZWQgZXhwYW5kLmMgZnJvbSBsaWJ0ZXN0IHRvIHByb2dyYW1zL2V4cGFuZC4KCVJlbW92ZWQgdGhlIHJlc3Qgb2YgdGhlIGxpYnRlc3QgZGlyZWN0b3J5LgoKCSogY29uZmlndXJlLmFjLCBkbGxzL2dkaS9mcmVldHlwZS5jLCBkbGxzL3dpbmVwcy90cnVldHlwZS5jLAoJICBkbGxzL3gxMWRydi94cmVuZGVyLmMsIGluY2x1ZGUvY29uZmlnLmguaW4sIGFjbG9jYWwubTQsIGNvbmZpZ3VyZToKCUFkZGVkIGNvbmZpZ3VyZSBjaGVjayBmb3IgdGhlIHNvbmFtZSBvZiBsaWJyYXJpZXMgdGhhdCB3ZSBsb2FkCglkeW5hbWljYWxseS4gIEFkZGVkIGEgZmV3IG90aGVyIGNvbmZpZ3VyZSBtYWNyb3MsIGFuZCBtb3ZlZCBhbGwgbWFjcm9zCglpbnRvIGFjbG9jYWwubTQuCgoJKiBjb250cm9scy9idXR0b24uYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglDbGVhciBhbiBvbGQgYnV0dG9uIHRleHQgaW4gV01fU0VUVEVYVCBhcyBXaW5kb3dzIGRvZXMuCgoJKiBkbGxzL2NvbWN0bDMyL3BhZ2VyLmMsIGRsbHMvY29tY3RsMzIvc3RhdHVzLmMsIGRsbHMvY29tY3RsMzIvdGFiLmMsCgkgIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jLCBkbGxzL3VzZXIvdXNlcjMyLnNwZWMsIGluY2x1ZGUvdXNlci5oLAoJICBpbmNsdWRlL3dpbnVzZXIuaCwgd2luZG93cy9ub25jbGllbnQuYywgd2luZG93cy9zeXNjb2xvci5jLAoJICBjb250cm9scy9idXR0b24uYywgY29udHJvbHMvY29tYm8uYywgY29udHJvbHMvbWVudS5jLAoJICBjb250cm9scy9zY3JvbGwuYywgY29udHJvbHMvdWl0b29scy5jOgoJR290IHJpZCBvZiBHZXRTeXNDb2xvclBlbi4KCgkqIGRsbHMvdXNlci9tc2cxNi5jLCBkbGxzL3dpbnNwb29sL2luZm8uYzoKCUFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCUJldHRlciBlcnJvciBtZXNzYWdlcy4KCgkqIGRsbHMvbXN2Y3J0L3djcy5jOiBKb2huIEsuIEhvaG0gPGpob2htQGFjbS5vcmc+CglGaXggbXN2Y3J0Ll92c253cHJpbnRmIGZvcm1hdCByZWFkaW5nIGJ1ZyBsaWtlIE5URExMX3ZzbndwcmludGYuCgoJKiB3aW5lZGVmYXVsdC5yZWc6CglEdXN0aW4gTmF2ZWEgPHNwZWVkZHltb25AeWFob28uY29tPgoJQWRkZWQgU2VyaWFsQ29tbSBrZXkuCgoJKiBkbGxzL2RwbGF5eC9kcGxheS5jLCBkbGxzL3VzZXIvdXNlcl9tYWluLmMsIGRsbHMvd2luZXBzL3BwZC5jOgoJQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJU3BlbGxpbmcgc3R1ZmYuCgoJKiBkbGxzL250ZGxsL2NyaXRzZWN0aW9uLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUR1bXAgdGhyZWFkIGlkIGluc3RlYWQgb2YgJWZzLgoKMjAwMi0wNS0xOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYzoKCURvIG5vdCBvdXRwdXQgc3R1YnMgaW4gdGhlIC5kZWYgZmlsZS4KCgkqIHVuaWNvZGUvd2luZV91bmljb2RlLmRlZiwgZGxscy9udGRsbC9kZWJ1Z3Rvb2xzLmMsCgkgIGluY2x1ZGUvd2luZS9kZWJ1Zy5oLCBpbmNsdWRlL3dpbmUvbGlicmFyeS5oLCBsaWJyYXJ5L01ha2VmaWxlLmluLAoJICBsaWJyYXJ5L2RlYnVnLmM6CglFeHBvcnQgdGhlIGRlYnVnIEFQSSBhcyBmdW5jdGlvbnMgaW5zdGVhZCBvZiBwb2ludGVycy4KCUEgZmV3IG90aGVyIGltcG9ydCBmaXhlcyBmb3IgTWluZ3cuCgoJKiBkbGxzL250ZGxsL3djc3RyaW5nLmMsIGluY2x1ZGUvd2luZXJyb3IuaCwgZGxscy9jb21jYXQvY29tY2F0LmgsCgkgIGRsbHMvY29tY2F0L2ZhY3RvcnkuYywgZGxscy9jb21jYXQvaW5mb3JtYXRpb24uYywKCSAgZGxscy9jb21jYXQvbWFuYWdlci5jLCBkbGxzL2NvbWNhdC9yZWdpc3Rlci5jOgoJSm9obiBLLiBIb2htIDxqaG9obUBhY20ub3JnPgoJTW9yZSBjb21jYXQuZGxsIGltcGxlbWVudGF0aW9uLCBzd3ByaW50ZiBmaXgsIHdpbmVycm9yLmggYWRkaXRpb25zLgoKCSogZGxscy9kaW5wdXQvZGlucHV0LnNwZWMsIGRsbHMvZGlucHV0L2RpbnB1dF9tYWluLmMsCgkgIGRsbHMvZGlucHV0L2RpbnB1dF9wcml2YXRlLmgsIGRsbHMvZGlucHV0L2tleWJvYXJkL21haW4uYzoKCUFyamVuIE5pZW5odWlzIDxhcmplbkBCbGVIUS5vcmc+CglGaXhlZCBrZXlib2FyZCBoYW5kbGluZy4KCgkqIGRsbHMvd2lubW0vam95c3RpY2suYywgZGxscy93aW5tbS9qb3lzdGljay9qb3lzdGljay5jLCBmaWxlcy9kb3NfZnMuYzoKCVN0ZXZlbiBFZHdhcmRzIDxTdGV2ZW5fRWQ0MTUzQHlhaG9vLmNvbT4KCUFkZCBjaGVjayBmb3IgPHN5cy9pb2N0bC5oPi4KCgkqIGRsbHMvbnRkbGwvY2Ryb20uYzoKCUFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCS0gSW1wcm92ZSBlcnJvciBtZXNzYWdlcy4KCS0gQWRkIGVycm9yIGNvZGUgbWFwcGluZyBFUEVSTSAtPiBTVEFUVVNfQUNDRVNTX0RFTklFRC4KCgkqIGRsbHMva2VybmVsL25scy9hcmsubmxzLCBkbGxzL2tlcm5lbC9ubHMvaGViLm5scywKCSAgZGxscy9rZXJuZWwvbmxzL2hydi5ubHMsIGRsbHMva2VybmVsL25scy9rb3IubmxzLAoJICBkbGxzL2tlcm5lbC9ubHMvdGhhLm5scywgZGxscy9rZXJuZWwvbmxzL3Vrci5ubHM6CglBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CglBZGRlZCBMT0NBTEVfSURFRkFVTFRNQUNDT0RFUEFHRSB2YWx1ZXMgZm9yIHNvbWUgbGFuZ3VhZ2VzLgoKCSogZGxscy9ycGNydDQvcnBjcnQ0LnNwZWMsIGRsbHMvcnBjcnQ0L3JwY3J0NF9tYWluLmM6CglTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1saW5lLmNvbT4KCUFkZGVkIHN0dWIgZm9yIERsbFJlZ2lzdGVyU2VydmVyLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfeHgucmM6CglTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1saW5lLmNvbT4KCUFkZGVkIHZlcnNpb24gaW5mbyByZXNvdXJjZS4KCgkqIGRsbHMvdXNlci90ZXN0cy9zeXNwYXJhbXMuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJTWFrZSB0aGUgJ2Vycm9yJyBzdHJpbmcgb2YgYSBjb3VwbGUgb2YgY2hlY2tzIGNvbnNpc3RlbnQgd2l0aCB0aGUKCW90aGVycy4KCgkqIGxvYWRlci9tb2R1bGUuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRml4ZWQgdGhlIFdpbkV4ZWMgcHJvdG90eXBlLgoKCSogZGxscy9tc3ZjcnQvZmlsZS5jLCBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJSW1wbGVtZW50ZWQgX2dldHdzLgoKCSogd2luZG93cy93aW4uYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBZGQgbWlzc2luZyBXSU5fUmVsZWFzZVduZFB0ciBpbiBXSU5fQ3JlYXRlRGVza3RvcFdpbmRvdy4KCgkqIGRsbHMvbnRkbGwvbnQuYywgaW5jbHVkZS93aW5iYXNlLmg6CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglDb3JyZWN0IGltcGxlbWVudGF0aW9uIG9mIFZlclNldENvbmRpdGlvbk1hc2suCgoyMDAyLTA1LTE3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9NYWtlZmlsZS5pbiwgZGxscy9tYWtlX2RsbHM6CglHZW5lcmF0ZSBhIGtlcm5lbDMyIGRlcGVuZGVuY3kgZm9yIGRsbHMgdGhhdCBoYXZlIG5vIGltcG9ydHMgdG8gaGFuZGxlCgl0aGUgd2luZWJ1aWxkLWdlbmVyYXRlZCBpbXBsaWNpdCBpbXBvcnQuCgoJKiBsaWJyYXJ5L2RlYnVnLmM6CglBZGRlZCBjaGVjayBmb3IgbnVtZXJpYyBpZHMgYW5kIG51bGwgcG9pbnRlcnMgKHRoYW5rcyB0byBEaW1pdHJpZSkuCgoJKiBwcm9ncmFtcy9jbWRsZ3RzdC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvY29udHJvbC9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvbm90ZXBhZC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvb3N2ZXJzaW9uY2hlY2svTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL3Byb2dtYW4vTWFrZWZpbGUuaW4sIHByb2dyYW1zL3JlZ2FwaS9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvcmVnZWRpdC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvcmVnc3ZyMzIvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL3JlZ3Rlc3QvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3VuaW5zdGFsbGVyL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy92aWV3L01ha2VmaWxlLmluLCBwcm9ncmFtcy93Y21kL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy93aW5lbWluZS9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luZXBhdGgvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5oZWxwL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy93aW52ZXIvTWFrZWZpbGUuaW4sIGRsbHMvd2luZXBzL01ha2VmaWxlLmluLAoJICBkbGxzL3dpbmluZXQvTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vTWFrZWZpbGUuaW4sCgkgIGRsbHMvd2lubW0vam95c3RpY2svTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vbWNpYW5pbS9NYWtlZmlsZS5pbiwKCSAgZGxscy93aW5tbS9tY2lhdmkvTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vbWNpY2RhL01ha2VmaWxlLmluLAoJICBkbGxzL3dpbm1tL21jaXNlcS9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS9tY2l3YXZlL01ha2VmaWxlLmluLAoJICBkbGxzL3dpbm1tL21pZGltYXAvTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vd2F2ZW1hcC9NYWtlZmlsZS5pbiwKCSAgZGxscy93aW5tbS93aW5lYXJ0cy9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS93aW5lb3NzL01ha2VmaWxlLmluLAoJICBkbGxzL3dpbm5scy9NYWtlZmlsZS5pbiwgZGxscy93aW5zcG9vbC9NYWtlZmlsZS5pbiwKCSAgZGxscy93aW50cnVzdC9NYWtlZmlsZS5pbiwgZGxscy93c29jazMyL01ha2VmaWxlLmluLAoJICBkbGxzL3gxMWRydi9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvYXZpdG9vbHMvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL2Nsb2NrL01ha2VmaWxlLmluLCBkbGxzL29wZW5nbDMyL01ha2VmaWxlLmluLAoJICBkbGxzL3FjYXAvTWFrZWZpbGUuaW4sIGRsbHMvcXVhcnR6L01ha2VmaWxlLmluLAoJICBkbGxzL3Jhc2FwaTMyL01ha2VmaWxlLmluLCBkbGxzL3JpY2hlZGl0L01ha2VmaWxlLmluLAoJICBkbGxzL3JwY3J0NC9NYWtlZmlsZS5pbiwgZGxscy9zZXJpYWx1aS9NYWtlZmlsZS5pbiwKCSAgZGxscy9zaGRvY3Z3L01ha2VmaWxlLmluLCBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvc2hsd2FwaS9NYWtlZmlsZS5pbiwgZGxscy9zbm1wYXBpL01ha2VmaWxlLmluLAoJICBkbGxzL3N0aS9NYWtlZmlsZS5pbiwgZGxscy90YXBpMzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvdHR5ZHJ2L01ha2VmaWxlLmluLCBkbGxzL3R3YWluL01ha2VmaWxlLmluLAoJICBkbGxzL3VybC9NYWtlZmlsZS5pbiwgZGxscy91cmxtb24vTWFrZWZpbGUuaW4sCgkgIGRsbHMvdXNlci9NYWtlZmlsZS5pbiwgZGxscy92ZXJzaW9uL01ha2VmaWxlLmluLAoJICBkbGxzL3dpbjMycy9NYWtlZmlsZS5pbiwgZGxscy93aW5hc3BpL01ha2VmaWxlLmluLAoJICBkbGxzL3dpbmVkb3MvTWFrZWZpbGUuaW4sIGRsbHMvaW1tMzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvbHpleHBhbmQvTWFrZWZpbGUuaW4sIGRsbHMvbWFwaTMyL01ha2VmaWxlLmluLAoJICBkbGxzL21wci9NYWtlZmlsZS5pbiwgZGxscy9tc2FjbS9NYWtlZmlsZS5pbiwKCSAgZGxscy9tc2FjbS9pbWFhZHAzMi9NYWtlZmlsZS5pbiwgZGxscy9tc2FjbS9tc2c3MTEvTWFrZWZpbGUuaW4sCgkgIGRsbHMvbXNkbW8vTWFrZWZpbGUuaW4sIGRsbHMvbXNpbWczMi9NYWtlZmlsZS5pbiwKCSAgZGxscy9tc2lzeXMvTWFrZWZpbGUuaW4sIGRsbHMvbXNuZXQzMi9NYWtlZmlsZS5pbiwKCSAgZGxscy9tc3JsZTMyL01ha2VmaWxlLmluLCBkbGxzL21zdmNydDIwL01ha2VmaWxlLmluLAoJICBkbGxzL21zdmlkZW8vTWFrZWZpbGUuaW4sIGRsbHMvbmV0YXBpMzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvb2RiYzMyL01ha2VmaWxlLmluLCBkbGxzL29sZWF1dDMyL01ha2VmaWxlLmluLAoJICBkbGxzL29sZWNsaS9NYWtlZmlsZS5pbiwgZGxscy9vbGVkbGcvTWFrZWZpbGUuaW4sCgkgIGRsbHMvb2xlcHJvMzIvTWFrZWZpbGUuaW4sIGRsbHMvb2xlc3ZyL01ha2VmaWxlLmluLAoJICBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2F2aWNhcDMyL01ha2VmaWxlLmluLAoJICBkbGxzL2F2aWZpbDMyL01ha2VmaWxlLmluLCBkbGxzL2NvbWNhdC9NYWtlZmlsZS5pbiwKCSAgZGxscy9jb21jdGwzMi9NYWtlZmlsZS5pbiwgZGxscy9jb21tZGxnL01ha2VmaWxlLmluLAoJICBkbGxzL2NydGRsbC9NYWtlZmlsZS5pbiwgZGxscy9jcnlwdDMyL01ha2VmaWxlLmluLAoJICBkbGxzL2RjaW1hbjMyL01ha2VmaWxlLmluLCBkbGxzL2RkcmF3L01ha2VmaWxlLmluLAoJICBkbGxzL2RldmVudW0vTWFrZWZpbGUuaW4sIGRsbHMvZGlucHV0L01ha2VmaWxlLmluLAoJICBkbGxzL2RwbGF5eC9NYWtlZmlsZS5pbiwgZGxscy9kc291bmQvTWFrZWZpbGUuaW4sCgkgIGRsbHMvZ2RpL01ha2VmaWxlLmluLCBkbGxzL2ljbXAvTWFrZWZpbGUuaW4sCgkgIGRsbHMvaW1hZ2VobHAvTWFrZWZpbGUuaW46CglSZW1vdmVkIG1vc3QgaW1wb3J0cyBvZiBudGRsbCBzaW5jZSB3ZSBubyBsb25nZXIgaW1wb3J0IFdpbmUgaW50ZXJuYWwKCWZ1bmN0aW9ucyBmcm9tIHRoZXJlLgoKCSogc2NoZWR1bGVyL3N5c2RlcHMuYywgd2luMzIvZGV2aWNlLmMsIGRsbHMvTWFrZWRsbC5ydWxlcy5pbiwKCSAgZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jLCBkbGxzL2tlcm5lbC9zdHJlc3MuYywgZGxscy9tcHIvd25ldC5jLAoJICBkbGxzL3VzZXIvbmV0d29yay5jLCBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jLCBpbmNsdWRlL3dpbmJhc2UuaCwKCSAgbGlicmFyeS9wb3J0LmMsIG1lbW9yeS9lbnZpcm9uLmMsIG1lbW9yeS9oZWFwLmM6CglBIGZldyBmaXhlcyBmb3IgbWluZ3cgY3Jvc3MtY29tcGlsYXRpb24uCgoJKiBjb250cm9scy9tZW51LmMsIGRsbHMvY29tbWRsZy9jZGxnMzIuYywgZGxscy9udGRsbC9kZWJ1Z3Rvb2xzLmMsCgkgIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy91c2VyL3Jlc291cmNlLmMsIGlmMTYzMi9yZWxheS5jLAoJICBpbmNsdWRlL3dpbmUvZGVidWcuaCwgbGlicmFyeS9kZWJ1Zy5jLCBsb2FkZXIvbmUvcmVzb3VyY2UuYywKCSAgbWVtb3J5L2F0b20uYywgb2JqZWN0cy9mb250LmMsIHJlbGF5MzIvc25vb3AuYywgd2luZG93cy9jbGFzcy5jLAoJICB3aW5kb3dzL2RpYWxvZy5jLCB3aW5kb3dzL3dpbi5jOgoJRXhwb3J0IHRoZSBkZWJ1Z2dpbmcgQVBJIGZyb20gbGlid2luZSBpbnN0ZWFkIG9mIG50ZGxsLgoJUmVtb3ZlZCBkZWJ1Z3Jlc19bYXddLgoKCSogZGxscy93aW5zcG9vbC9pbmZvLmM6CglCaWxsIE1lZGxhbmQgPG1lZGJpMDFAYWNjcGFjLmNvbT4KCVJlbW92ZSBsZWFkaW5nIHdoaXRlc3BhY2UgZnJvbSBwcmludGNhcCBlbnRyaWVzLgoKCSogZGxscy93aW5lZG9zL3ZnYS5jOgoJQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJRG8gbm90IGNyZWF0ZSBhIHdpbmRvdyBlYWNoIHRpbWUgVkdBX0RvU2V0TW9kZSBpcyBjYWxsZWQuIFRoZSB3aW5kb3cKCWlzIGNyZWF0ZWQgdGhlIGZpcnN0IHRpbWUgYW5kIHRoZW4ganVzdCByZXNpemVkLgoKMjAwMi0wNS0xNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHRvb2xzL3dpbmVidWlsZC9pbXBvcnQuYywgdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jOgoJQWRhcHRlZCB0byB1c2UgdGhlIGFyZ2MvYXJndiB2YXJpYWJsZXMgZnJvbSBsaWJ3aW5lLgoJQXV0b21hdGljYWxseSBpbXBvcnQgbGlicmFyaWVzIHRoYXQgY29udGFpbiB0aGUgc3ltYm9scyB0aGF0IHRoZQoJLnNwZWMuYyBmaWxlIGlzIHVzaW5nLgoKCSogc2NoZWR1bGVyL3Byb2Nlc3MuYywgZGxscy9tc3ZjcnQvZGF0YS5jLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsCgkgIGluY2x1ZGUvd2luZS9saWJyYXJ5LmgsIGxpYnJhcnkvbG9hZGVyLmMsIG1lbW9yeS9lbnZpcm9uLmM6CglFeHBvcnQgZ2xvYmFsIGFyZ2MvYXJndiB2YXJpYWJsZXMgZnJvbSBsaWJ3aW5lIGFuZCByZW1vdmUgdGhlCglfX3dpbmVfZ2V0X21haW5fYXJncyBmdW5jdGlvbnMgZnJvbSBudGRsbC4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYzoKCUZpeGVkIHN0cnVjdCBtc2doZHIgYWNjZXNzIGZvciBwbGF0Zm9ybXMgdGhhdCBoYXZlIG1zZ19hY2NyaWdodHMKCShyZXBvcnRlZCBieSBXYXJyZW4gQmFpcmQpLgoKCSogaW5jbHVkZS93aW5lcnJvci5oOgoJUGhpbGlwIEJyb3duIDxwaGlsQGJvbHRob2xlLmNvbT4KCU5lZWQgdG8gdW5kZWYgTk9FUlJPUiBmb3IgU29sYXJpcy4KCgkqIGRsbHMvbXN2Y3J0L2V4Y2VwdC5jLCBkbGxzL21zdmNydC9tYXRoLmMsIHJlbGF5MzIvc25vb3AuYzoKCVdhcnJlbiBCYWlyZCA8V2FycmVuX0JhaXJkQGNpbW1ldHJ5LmNvbT4KCVNvbWUgZml4ZXMgZm9yIGNvbXBpbGluZyBvbiBTcGFyYy4KCgkqIHByb2dyYW1zL3dpbmV0ZXN0L3d0bWFpbi5jOgoJQmV0dGVyIHVzYWdlIG1lc3NhZ2UuIEZsdXNoIHN0ZGVyciBiZWZvcmUgZXhpdGluZy4KCgkqIGluY2x1ZGUvd2luZS9saWJyYXJ5LmgsIGluY2x1ZGUvd2lubnQuaCwgbGlicmFyeS9sZHQuYywKCSAgbWVtb3J5L3NlbGVjdG9yLmMsIHNjaGVkdWxlci9zeXNkZXBzLmMsIHNjaGVkdWxlci9zeXNsZXZlbC5jLAoJICB0b29scy93aW5lYnVpbGQvc3BlYzE2LmMsIHdpbjMyL2V4Y2VwdC5jLCBkbGxzL2tlcm5lbC9rZXJuZWxfbWFpbi5jLAoJICBkbGxzL2tlcm5lbC90aHVuay5jLCBkbGxzL250ZGxsL2NyaXRzZWN0aW9uLmMsCgkgIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYywgaWYxNjMyL2J1aWx0aW4uYywgaWYxNjMyL3JlbGF5LmMsCgkgIGlmMTYzMi9zbm9vcC5jOgoJTW92ZWQgdGhlIHNlbGVjdG9yIGFjY2VzcyBmdW5jdGlvbnMgb3V0IG9mIHdpbm50LmggaW50byBsaWJ3aW5lLgoKCSogZGxscy93aW5tbS9tbXN5c3RlbS5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBoYW5ncyB3aGVuIHBsYXlpbmcgYW4gQVNDSUkgcmVzb3VyY2UuCgoJKiBkbGxzL3dpbmVkb3MvaW50MTAuYzoKCUNocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUhhbmRsZSBwcm9wZXJseSB0aGUgcmVxdWVzdGVkIHZpZGVvIG1vZGUgaW4gSW50MTBoIFNFVCBWSURFTyBNT0RFCglmdW5jdGlvbiBieSBtYW5hZ2luZyB0aGUgYml0IDcgb2YgQUwuCgoJKiB0b29scy93aW5laW5zdGFsbDoKCUFuZHJpeSBQYWxhbWFyY2h1ayA8YXBhM2FAeWFob28uY29tPgoJUGxhY2UgIkNvbW1vbiBGaWxlcyIgdW5kZXIgIlByb2dyYW0gRmlsZXMiIGluc3RlYWQgb2Ygcm9vdCBkaXJlY3RvcnkuCgoJKiBkbGxzL29sZTMyL21hcnNoYWwuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJVGVsbCB0aGUgdXNlciBpZiB3aW5lZGVmYXVsdC5yZWcgaXMgbm90IGxvYWRlZC4KCgkqIGRsbHMvb2xlYXV0MzIvTWFrZWZpbGUuaW4sIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jLAoJICBkbGxzL3NldHVwYXBpL2luc3RhbGwuYywgZGxscy9zZXR1cGFwaS9wYXJzZXIuYywgaW5jbHVkZS9udGRkay5oLAoJICBpbmNsdWRlL3dpbmUvdW5pY29kZS5oLCB1bmljb2RlL3N0cmluZy5jLAoJICBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYywgZGxscy9jb21jdGwzMi9pcGFkZHJlc3MuYywKCSAgZGxscy9jb21jdGwzMi91cGRvd24uYywgZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL250ZGxsL3N0cmluZy5jLAoJICBkbGxzL250ZGxsL3djc3RyaW5nLmM6CglJbXBsZW1lbnRlZCBzdHJ0b2xXL3N0cnRvdWxXIGluIGxpYndpbmVfdW5pY29kZSBhbmQgdXNlZCBpdCB0byByZXBsYWNlCgl3Y3N0b2wgYW5kIGZyaWVuZHMuCgoJKiB0b29scy93aW5lYnVpbGQvc3BlYzE2LmM6CglGaXhlZCBtaXNzaW5nIGNhbGwgdG8gbWFrZV9jX2lkZW50aWZpZXIuCgoJKiBkbGxzL3dpbmVkb3MvTWFrZWZpbGUuaW4sIGRsbHMvd2luZWRvcy9kbWEuYywgZGxscy93aW5lZG9zL2Rvc2V4ZS5oLAoJICBkbGxzL3dpbmVkb3MvaW9wb3J0cy5jLCBkbGxzL3dpbmVkb3Mvc291bmRibGFzdGVyLmM6CglDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglBZGRlZCBETUEgYW5kIFNvdW5kQmxhc3RlciBlbXVsYXRpb24uCgoJKiBkb2N1bWVudGF0aW9uL2dldHRpbmcuc2dtbDoKCVdpbGxpYW0gU3RpbnNvbiA8d3N0aW5zb25AaW5mb25pZS5mcj4KCUV4cGxhaW4gcGF0Y2ggLXAwIG9wdGlvbi4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYywgZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jLAoJICBkbGxzL21zYWNtL2RyaXZlci5jLCBkbGxzL3NlcmlhbHVpL2NvbmZkbGcuYywKCSAgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jOgoJU3RldmVuIEVkd2FyZHMgPFN0ZXZlbl9FZDQxNTNAeWFob28uY29tPgoJRml4ZWQgc25wcmludGYgd2FybmluZ3MuCgoJKiB0b29scy93aW5lZHVtcC9kZWJ1Zy5jLCB0b29scy93aW5lZHVtcC9wZS5jOgoJU3RldmVuIEVkd2FyZHMgPFN0ZXZlbl9FZDQxNTNAeWFob28uY29tPgoJQWRkZWQgY2hlY2sgZm9yIHN5cy9tbWFuLmguCgoJKiB3aW5lZGVmYXVsdC5yZWc6CglBbmRyaXkgUGFsYW1hcmNodWsgPGFwYTNhQHlhaG9vLmNvbT4KCUZpeGVkIGluY29ycmVjdCBmb3JtYXQgd2hlcmUgc2luZ2xlIGJhY2tzbGFzaGVzIHdlcmUgdXNlZCBpbnN0ZWFkIG9mCglkb3VibGUgb25lcyBpbiBhdHRyaWJ1dGUgdmFsdWVzLgoKCSogZGxscy93aW5tbS9tbWlvLmM6CglKb2hhbiBHaWxsIDxqb2hhbmVAbHlzYXRvci5saXUuc2U+CglscG1taW9pbmZvIGNhbiBzb21ldGltZXMsIHByb3ZlbiBpbiB0aGUgcmVhZCBjYXNlLCBiZSBOVUxMLgoKMjAwMi0wNS0xNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHRvb2xzL3dpbmVzaGVsbGxpbms6CglEdXN0aW4gTmF2ZWEgPHNwZWVkZHltb25AeWFob28uY29tPgoJRml4ZXMgZm9yIGtkZTMgYW5kIERlc2t0b3AgZGlyZWN0b3J5LgoKCSogdG9vbHMvd2luZWluc3RhbGw6CglEdXN0aW4gTmF2ZWEgPHNwZWVkZHltb25AeWFob28uY29tPgoJRml4IGZvciAkbGliZGlyIGNoZWNrLgoKCSogY29uZmlndXJlLmFjLCBkbGxzL2tlcm5lbC9jb21tLmMsIGRsbHMvbmV0YXBpMzIvbmV0YXBpMzIuYywKCSAgZGxscy9udGRsbC9jZHJvbS5jLCBkbGxzL3JwY3J0NC9ycGNydDRfbWFpbi5jLCBpbmNsdWRlL2NvbmZpZy5oLmluLAoJICBsaWJyYXJ5L2xvYWRlci5jLCBsaWJyYXJ5L3BvcnQuYywgY29uZmlndXJlOgoJUG9ydGFiaWxpdHkgZml4ZXMuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9jb21jYXQvLmN2c2lnbm9yZSwKCSAgZGxscy9jb21jYXQvTWFrZWZpbGUuaW4sIGRsbHMvY29tY2F0L2NvbWNhdC5oLAoJICBkbGxzL2NvbWNhdC9jb21jYXQuc3BlYywgZGxscy9jb21jYXQvY29tY2F0X21haW4uYywKCSAgZGxscy9jb21jYXQvZmFjdG9yeS5jLCBkbGxzL2NvbWNhdC9pbmZvcm1hdGlvbi5jLAoJICBkbGxzL2NvbWNhdC9tYW5hZ2VyLmMsIGRsbHMvY29tY2F0L3JlZ2lzdGVyLmMsIHdpbmVkZWZhdWx0LnJlZzoKCUpvaG4gSy4gSG9obSA8amhvaG1AYWNtLm9yZz4KCUFkZGVkIGNvbWNhdC5kbGwgd2l0aCBmYWN0b3J5IGFuZCBtYW5hZ2VyIGJ1dCBFX05PVElNUEwgd29yayBtZXRob2RzLgoKCSogcHJvZ3JhbXMvd2luZWNvbnNvbGUvZGlhbG9nLmMsIHByb2dyYW1zL3dpbmVjb25zb2xlL3JlZ2lzdHJ5LmMsCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL3VzZXIuYywgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbl9wcml2YXRlLmgsCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25fdXNlci5oLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZS5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglSZW1vdmVkIFRyYWNlIG1hY3JvIGFuZCByZXBsYWNlZCBpdCBieSBXaW5lIGRlYnVnIGNoYW5uZWwgZmFjaWxpdHkuCglNYWRlIHRoZSBmb250IGxvb2t1cCBhdCBzdGFydHVwIG1vcmUgcm9idXN0IGFuZCBub3cgc2F2ZSByZWdpc3RyeSBhdAoJc3RhcnR1cCB0aW1lIGlmIGEgbmV3IGZvbnQgaXMgY2hvc2VuIChhcyBzcG90dGVkIGJ5IFN5bHZhaW4gUGV0cmVvbGxlKS4KCUZpeGVkIGFuIHVwZGF0ZSBidWcgc3BvdHRlZCBieSBKYXNvbiBFZG1lYWRlcy4KCgkqIGRsbHMva2VybmVsL3RpbWUuYywgaW5jbHVkZS93aW5ubHMuaDoKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCUJldHRlciBpbXBsZW1lbnRhdGlvbiBvZiBHZXRDYWxlbmRhckluZm97QSxXfSwgbm90IHBlcmZlY3QuCgoJKiBwcm9ncmFtcy93aW52ZXIvLmN2c2lnbm9yZSwgdG9vbHMvd2luZWJ1aWxkL1JFQURNRSwKCSAgdG9vbHMvd2luZWJ1aWxkL2J1aWxkLmgsIHRvb2xzL3dpbmVidWlsZC9tYWluLmMsCgkgIHRvb2xzL3dpbmVidWlsZC9wYXJzZXIuYywgdG9vbHMvd2luZWJ1aWxkL3NwZWMxNi5jLAoJICB0b29scy93aW5lYnVpbGQvc3BlYzMyLmMsIHRvb2xzL3dpbmVidWlsZC91dGlscy5jLAoJICBwcm9ncmFtcy9NYWtlcHJvZy5ydWxlcy5pbiwgcHJvZ3JhbXMvYXZpdG9vbHMvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL2Nsb2NrLy5jdnNpZ25vcmUsIHByb2dyYW1zL2NtZGxndHN0Ly5jdnNpZ25vcmUsCgkgIHByb2dyYW1zL2NvbnRyb2wvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvbm90ZXBhZC8uY3ZzaWdub3JlLAoJICBwcm9ncmFtcy9vc3ZlcnNpb25jaGVjay8uY3ZzaWdub3JlLCBwcm9ncmFtcy9wcm9nbWFuLy5jdnNpZ25vcmUsCgkgIHByb2dyYW1zL3JlZ2FwaS8uY3ZzaWdub3JlLCBwcm9ncmFtcy9yZWdlZGl0Ly5jdnNpZ25vcmUsCgkgIHByb2dyYW1zL3JlZ3N2cjMyLy5jdnNpZ25vcmUsIHByb2dyYW1zL3JlZ3Rlc3QvLmN2c2lnbm9yZSwKCSAgcHJvZ3JhbXMvdW5pbnN0YWxsZXIvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvdmlldy8uY3ZzaWdub3JlLAoJICBwcm9ncmFtcy93Y21kLy5jdnNpZ25vcmUsIHByb2dyYW1zL3dpbmVjb25zb2xlLy5jdnNpZ25vcmUsCgkgIHByb2dyYW1zL3dpbmVtaW5lLy5jdnNpZ25vcmUsIHByb2dyYW1zL3dpbmVwYXRoLy5jdnNpZ25vcmUsCgkgIHByb2dyYW1zL3dpbmV0ZXN0Ly5jdnNpZ25vcmUsIHByb2dyYW1zL3dpbmhlbHAvLmN2c2lnbm9yZSwKCSAgZGxscy93aW5tbS9tY2lzZXEvLmN2c2lnbm9yZSwgZGxscy93aW5tbS9tY2lzZXEvbWNpc2VxLmRydi5zcGVjLAoJICBkbGxzL3dpbm1tL21jaXdhdmUvLmN2c2lnbm9yZSwgZGxscy93aW5tbS9tY2l3YXZlL21jaXdhdmUuZHJ2LnNwZWMsCgkgIGRsbHMvd2lubW0vbWlkaW1hcC8uY3ZzaWdub3JlLCBkbGxzL3dpbm1tL21pZGltYXAvbWlkaW1hcC5kcnYuc3BlYywKCSAgZGxscy93aW5tbS93YXZlbWFwLy5jdnNpZ25vcmUsIGRsbHMvd2lubW0vd2F2ZW1hcC9tc2FjbS5kcnYuc3BlYywKCSAgZGxscy93aW5tbS93aW5lYXJ0cy8uY3ZzaWdub3JlLCBkbGxzL3dpbm1tL3dpbmVhcnRzL01ha2VmaWxlLmluLAoJICBkbGxzL3dpbm1tL3dpbmVhcnRzL3dpbmVhcnRzLmRydi5zcGVjLAoJICBkbGxzL3dpbm1tL3dpbmVvc3MvLmN2c2lnbm9yZSwgZGxscy93aW5tbS93aW5lb3NzL3dpbmVvc3MuZHJ2LnNwZWMsCgkgIGRsbHMvd2lubmxzLy5jdnNpZ25vcmUsIGRsbHMvd2lubmxzL3dpbm5sczMyLnNwZWMsCgkgIGRsbHMvd2luc29jay8uY3ZzaWdub3JlLCBkbGxzL3dpbnNvY2svd3MyXzMyLnNwZWMsCgkgIGRsbHMvd2luc3Bvb2wvLmN2c2lnbm9yZSwgZGxscy93aW5zcG9vbC93aW5zcG9vbC5kcnYuc3BlYywKCSAgZGxscy93aW50cnVzdC8uY3ZzaWdub3JlLCBkbGxzL3dpbnRydXN0L3dpbnRydXN0LnNwZWMsCgkgIGRsbHMvd293MzIvLmN2c2lnbm9yZSwgZGxscy93b3czMi93b3czMi5zcGVjLAoJICBkbGxzL3dzb2NrMzIvLmN2c2lnbm9yZSwgZGxscy93c29jazMyL3dzb2NrMzIuc3BlYywKCSAgZGxscy94MTFkcnYvLmN2c2lnbm9yZSwgZGxscy94MTFkcnYveDExZHJ2LnNwZWMsIG1pc2NlbXUvd2luZS5zcGVjLAoJICBkbGxzL3R3YWluLy5jdnNpZ25vcmUsIGRsbHMvdHdhaW4vdHdhaW5fMzIuc3BlYywKCSAgZGxscy91cmwvLmN2c2lnbm9yZSwgZGxscy91cmwvdXJsLnNwZWMsIGRsbHMvdXJsbW9uLy5jdnNpZ25vcmUsCgkgIGRsbHMvdXJsbW9uL3VybG1vbi5zcGVjLCBkbGxzL3VzZXIvLmN2c2lnbm9yZSwKCSAgZGxscy91c2VyL3VzZXIzMi5zcGVjLCBkbGxzL3ZlcnNpb24vLmN2c2lnbm9yZSwKCSAgZGxscy92ZXJzaW9uL3ZlcnNpb24uc3BlYywgZGxscy93aW4zMnMvLmN2c2lnbm9yZSwKCSAgZGxscy93aW4zMnMvdzMyc2tybmwuc3BlYywgZGxscy93aW5hc3BpLy5jdnNpZ25vcmUsCgkgIGRsbHMvd2luYXNwaS93bmFzcGkzMi5zcGVjLCBkbGxzL3dpbmVkb3MvLmN2c2lnbm9yZSwKCSAgZGxscy93aW5lZG9zL3dpbmVkb3Muc3BlYywgZGxscy93aW5lcHMvLmN2c2lnbm9yZSwKCSAgZGxscy93aW5lcHMvd2luZXBzLnNwZWMsIGRsbHMvd2luaW5ldC8uY3ZzaWdub3JlLAoJICBkbGxzL3dpbmluZXQvd2luaW5ldC5zcGVjLCBkbGxzL3dpbm1tLy5jdnNpZ25vcmUsCgkgIGRsbHMvd2lubW0vam95c3RpY2svLmN2c2lnbm9yZSwKCSAgZGxscy93aW5tbS9qb3lzdGljay9qb3lzdGljay5kcnYuc3BlYywKCSAgZGxscy93aW5tbS9tY2lhbmltLy5jdnNpZ25vcmUsIGRsbHMvd2lubW0vbWNpYW5pbS9tY2lhbmltLmRydi5zcGVjLAoJICBkbGxzL3dpbm1tL21jaWF2aS8uY3ZzaWdub3JlLCBkbGxzL3dpbm1tL21jaWF2aS9tY2lhdmkuZHJ2LnNwZWMsCgkgIGRsbHMvd2lubW0vbWNpY2RhLy5jdnNpZ25vcmUsIGRsbHMvd2lubW0vbWNpY2RhL21jaWNkYS5kcnYuc3BlYywKCSAgZGxscy93aW5tbS93aW5tbS5zcGVjLCBkbGxzL3FjYXAvLmN2c2lnbm9yZSwgZGxscy9xY2FwL3FjYXAuc3BlYywKCSAgZGxscy9xdWFydHovLmN2c2lnbm9yZSwgZGxscy9xdWFydHovcXVhcnR6LnNwZWMsCgkgIGRsbHMvcmFzYXBpMzIvLmN2c2lnbm9yZSwgZGxscy9yYXNhcGkzMi9yYXNhcGkzMi5zcGVjLAoJICBkbGxzL3JpY2hlZGl0Ly5jdnNpZ25vcmUsIGRsbHMvcmljaGVkaXQvcmljaGVkMzIuc3BlYywKCSAgZGxscy9ycGNydDQvLmN2c2lnbm9yZSwgZGxscy9ycGNydDQvcnBjcnQ0LnNwZWMsCgkgIGRsbHMvc2VyaWFsdWkvLmN2c2lnbm9yZSwgZGxscy9zZXJpYWx1aS9zZXJpYWx1aS5zcGVjLAoJICBkbGxzL3NldHVwYXBpLy5jdnNpZ25vcmUsIGRsbHMvc2V0dXBhcGkvc2V0dXBhcGkuc3BlYywKCSAgZGxscy9zaGRvY3Z3Ly5jdnNpZ25vcmUsIGRsbHMvc2hkb2N2dy9zaGRvY3Z3LnNwZWMsCgkgIGRsbHMvc2hlbGwzMi8uY3ZzaWdub3JlLCBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLAoJICBkbGxzL3NoZm9sZGVyLy5jdnNpZ25vcmUsIGRsbHMvc2hmb2xkZXIvc2hmb2xkZXIuc3BlYywKCSAgZGxscy9zaGx3YXBpLy5jdnNpZ25vcmUsIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWMsCgkgIGRsbHMvc25tcGFwaS8uY3ZzaWdub3JlLCBkbGxzL3NubXBhcGkvc25tcGFwaS5zcGVjLAoJICBkbGxzL3N0aS8uY3ZzaWdub3JlLCBkbGxzL3N0aS9zdGkuc3BlYywgZGxscy90YXBpMzIvLmN2c2lnbm9yZSwKCSAgZGxscy90YXBpMzIvdGFwaTMyLnNwZWMsIGRsbHMvdHR5ZHJ2Ly5jdnNpZ25vcmUsCgkgIGRsbHMvdHR5ZHJ2L3R0eWRydi5zcGVjLCBkbGxzL25ldGFwaTMyLy5jdnNpZ25vcmUsCgkgIGRsbHMvbmV0YXBpMzIvbmV0YXBpMzIuc3BlYywgZGxscy9udGRsbC8uY3ZzaWdub3JlLAoJICBkbGxzL250ZGxsL01ha2VmaWxlLmluLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsCgkgIGRsbHMvb2RiYzMyLy5jdnNpZ25vcmUsIGRsbHMvb2RiYzMyL29kYmMzMi5zcGVjLAoJICBkbGxzL29sZTMyLy5jdnNpZ25vcmUsIGRsbHMvb2xlMzIvb2xlMzIuc3BlYywKCSAgZGxscy9vbGVhdXQzMi8uY3ZzaWdub3JlLCBkbGxzL29sZWF1dDMyL29sZWF1dDMyLnNwZWMsCgkgIGRsbHMvb2xlY2xpLy5jdnNpZ25vcmUsIGRsbHMvb2xlY2xpL29sZWNsaTMyLnNwZWMsCgkgIGRsbHMvb2xlZGxnLy5jdnNpZ25vcmUsIGRsbHMvb2xlZGxnL29sZWRsZy5zcGVjLAoJICBkbGxzL29sZXBybzMyLy5jdnNpZ25vcmUsIGRsbHMvb2xlcHJvMzIvb2xlcHJvMzIuc3BlYywKCSAgZGxscy9vbGVzdnIvLmN2c2lnbm9yZSwgZGxscy9vbGVzdnIvb2xlc3ZyMzIuc3BlYywKCSAgZGxscy9vcGVuZ2wzMi8uY3ZzaWdub3JlLCBkbGxzL29wZW5nbDMyL29wZW5nbDMyLnNwZWMsCgkgIGRsbHMvcHNhcGkvLmN2c2lnbm9yZSwgZGxscy9wc2FwaS9wc2FwaS5zcGVjLAoJICBkbGxzL2tlcm5lbC8uY3ZzaWdub3JlLCBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLAoJICBkbGxzL2x6ZXhwYW5kLy5jdnNpZ25vcmUsIGRsbHMvbHpleHBhbmQvbHozMi5zcGVjLAoJICBkbGxzL21hcGkzMi8uY3ZzaWdub3JlLCBkbGxzL21hcGkzMi9tYXBpMzIuc3BlYywKCSAgZGxscy9tcHIvLmN2c2lnbm9yZSwgZGxscy9tcHIvbXByLnNwZWMsIGRsbHMvbXNhY20vLmN2c2lnbm9yZSwKCSAgZGxscy9tc2FjbS9pbWFhZHAzMi8uY3ZzaWdub3JlLAoJICBkbGxzL21zYWNtL2ltYWFkcDMyL2ltYWFkcDMyLmFjbS5zcGVjLCBkbGxzL21zYWNtL21zYWNtMzIuc3BlYywKCSAgZGxscy9tc2FjbS9tc2c3MTEvLmN2c2lnbm9yZSwgZGxscy9tc2FjbS9tc2c3MTEvbXNnNzExLmRydi5zcGVjLAoJICBkbGxzL21zZG1vLy5jdnNpZ25vcmUsIGRsbHMvbXNkbW8vbXNkbW8uc3BlYywKCSAgZGxscy9tc2ltZzMyLy5jdnNpZ25vcmUsIGRsbHMvbXNpbWczMi9tc2ltZzMyLnNwZWMsCgkgIGRsbHMvbXNpc3lzLy5jdnNpZ25vcmUsIGRsbHMvbXNpc3lzL21zaXN5cy5vY3guc3BlYywKCSAgZGxscy9tc25ldDMyLy5jdnNpZ25vcmUsIGRsbHMvbXNuZXQzMi9tc25ldDMyLnNwZWMsCgkgIGRsbHMvbXNybGUzMi8uY3ZzaWdub3JlLCBkbGxzL21zcmxlMzIvbXNybGUzMi5zcGVjLAoJICBkbGxzL21zdmNydC8uY3ZzaWdub3JlLCBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYywKCSAgZGxscy9tc3ZjcnQyMC8uY3ZzaWdub3JlLCBkbGxzL21zdmNydDIwL21zdmNydDIwLnNwZWMsCgkgIGRsbHMvbXN2aWRlby8uY3ZzaWdub3JlLCBkbGxzL21zdmlkZW8vbXN2ZnczMi5zcGVjLAoJICBkbGxzL2NvbW1kbGcvLmN2c2lnbm9yZSwgZGxscy9jb21tZGxnL2NvbWRsZzMyLnNwZWMsCgkgIGRsbHMvY3J0ZGxsLy5jdnNpZ25vcmUsIGRsbHMvY3J0ZGxsL2NydGRsbC5zcGVjLAoJICBkbGxzL2NyeXB0MzIvLmN2c2lnbm9yZSwgZGxscy9jcnlwdDMyL2NyeXB0MzIuc3BlYywKCSAgZGxscy9kY2ltYW4zMi8uY3ZzaWdub3JlLCBkbGxzL2RjaW1hbjMyL2RjaW1hbjMyLnNwZWMsCgkgIGRsbHMvZGRyYXcvLmN2c2lnbm9yZSwgZGxscy9kZHJhdy9kZHJhdy5zcGVjLAoJICBkbGxzL2RldmVudW0vLmN2c2lnbm9yZSwgZGxscy9kZXZlbnVtL2RldmVudW0uc3BlYywKCSAgZGxscy9kaW5wdXQvLmN2c2lnbm9yZSwgZGxscy9kaW5wdXQvZGlucHV0LnNwZWMsCgkgIGRsbHMvZHBsYXkvLmN2c2lnbm9yZSwgZGxscy9kcGxheS9kcGxheS5zcGVjLAoJICBkbGxzL2RwbGF5eC8uY3ZzaWdub3JlLCBkbGxzL2RwbGF5eC9kcGxheXguc3BlYywKCSAgZGxscy9kc291bmQvLmN2c2lnbm9yZSwgZGxscy9kc291bmQvZHNvdW5kLnNwZWMsCgkgIGRsbHMvZ2RpLy5jdnNpZ25vcmUsIGRsbHMvZ2RpL2dkaTMyLnNwZWMsIGRsbHMvZ2x1MzIvLmN2c2lnbm9yZSwKCSAgZGxscy9nbHUzMi9nbHUzMi5zcGVjLCBkbGxzL2ljbXAvLmN2c2lnbm9yZSwgZGxscy9pY21wL2ljbXAuc3BlYywKCSAgZGxscy9pbWFnZWhscC8uY3ZzaWdub3JlLCBkbGxzL2ltYWdlaGxwL2ltYWdlaGxwLnNwZWMsCgkgIGRsbHMvaW1tMzIvLmN2c2lnbm9yZSwgZGxscy9pbW0zMi9pbW0zMi5zcGVjLCBNYWtlLnJ1bGVzLmluLAoJICBkZWJ1Z2dlci8uY3ZzaWdub3JlLCBkbGxzL01ha2VkbGwucnVsZXMuaW4sCgkgIGRsbHMvYWR2YXBpMzIvLmN2c2lnbm9yZSwgZGxscy9hZHZhcGkzMi9hZHZhcGkzMi5zcGVjLAoJICBkbGxzL2F2aWNhcDMyLy5jdnNpZ25vcmUsIGRsbHMvYXZpY2FwMzIvYXZpY2FwMzIuc3BlYywKCSAgZGxscy9hdmlmaWwzMi8uY3ZzaWdub3JlLCBkbGxzL2F2aWZpbDMyL2F2aWZpbDMyLnNwZWMsCgkgIGRsbHMvY29tY3RsMzIvLmN2c2lnbm9yZSwgZGxscy9jb21jdGwzMi9jb21jdGwzMi5zcGVjOgoJQWRkZWQgd2luZWJ1aWxkIHN1cHBvcnQgZm9yIGdlbmVyYXRpbmcgYSAuZGJnLmMgZmlsZSBjb250YWluaW5nIHRoZQoJZGVidWcgY2hhbm5lbHMgZGVmaW5pdGlvbnMuCglNYWRlIHdpbjMyIHRoZSBkZWZhdWx0IHR5cGUgZm9yIHNwZWMgZmlsZXMuCglJZ25vcmUgQyBjb21waWxlciBpbiB3aW5lYnVpbGQgc28gd2UgY2FuIHNpbXBseSBwYXNzIGl0ICQoREVGUykuCglSZW1vdmVkIHR5cGUgd2luMzIgYW5kIGRlYnVnX2NoYW5uZWxzIGZyb20gc3BlYyBmaWxlcy4KCUZpeGVkIHdpbmVidWlsZCB0byBhbHdheXMgZ2VuZXJhdGUgY29ycmVjdCBDIGlkZW50aWZpZXJzIChyZXBvcnRlZCBieQoJVmluY2VudCBC6XJvbikuCgoJKiBkbGxzL01ha2VmaWxlLmluLCBkbGxzL21ha2VfZGxsczoKCVVwZGF0ZWQgbWFrZV9kbGxzIHNjcmlwdCBmb3IgbmV3IGltcG9ydCBzY2hlbWUuCgoJKiBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jOgoJU2FuZGVyIHZhbiBMZWV1d2VuIDxzYW5kZXJ2bEB4czRhbGwubmw+CgktIENlbnRlciBwcm9wZXJ0eSBzaGVldCBwYWdlIGR1cmluZyBjcmVhdGlvbiAocGFkZGluZykKCSAgKHNvbWUgYXBwbGljYXRpb25zIHJlbHkgb24gdGhpcyBiZWhhdmlvdXIgd2hlbiByZXNpemluZyB0aGUgcGFnZSkKCS0gTWFzayBhd2F5IFdTX1RISUNLRlJBTUUgcGFnZSBzdHlsZQoJLSBQYWdlIG5hdmlnYXRpb24gYnkgcmVzb3VyY2UgaWQgKGJ5IHVua25vd24gYXV0aG9yKQoKCSogbWlzYy8uY3ZzaWdub3JlLCBtaXNjL01ha2VmaWxlLmluLCBtc2Rvcy8uY3ZzaWdub3JlLAoJICBtc2Rvcy9NYWtlZmlsZS5pbiwgb2JqZWN0cy9NYWtlZmlsZS5pbiwgb2xlL01ha2VmaWxlLmluLAoJICByZWxheTMyLy5jdnNpZ25vcmUsIHJlbGF5MzIvTWFrZWZpbGUuaW4sIHNjaGVkdWxlci8uY3ZzaWdub3JlLAoJICBzY2hlZHVsZXIvTWFrZWZpbGUuaW4sIHRvb2xzL21ha2VkZXAuYywgd2luMzIvLmN2c2lnbm9yZSwKCSAgd2luMzIvTWFrZWZpbGUuaW4sIHdpbmRvd3MvLmN2c2lnbm9yZSwgd2luZG93cy9NYWtlZmlsZS5pbiwKCSAgY29uZmlndXJlLmFjLCBjb250cm9scy8uY3ZzaWdub3JlLCBjb250cm9scy9NYWtlZmlsZS5pbiwKCSAgZGxscy9nZGkvTWFrZWZpbGUuaW4sIGRsbHMvbnRkbGwvLmN2c2lnbm9yZSwgZGxscy9udGRsbC9NYWtlZmlsZS5pbiwKCSAgZGxscy91c2VyL01ha2VmaWxlLmluLCBkbGxzL3gxMWRydi9NYWtlZmlsZS5pbiwgZmlsZXMvLmN2c2lnbm9yZSwKCSAgZmlsZXMvTWFrZWZpbGUuaW4sIGdyYXBoaWNzLy5jdnNpZ25vcmUsIGdyYXBoaWNzL01ha2VmaWxlLmluLAoJICBncmFwaGljcy94MTFkcnYvLmN2c2lnbm9yZSwgZ3JhcGhpY3MveDExZHJ2L01ha2VmaWxlLmluLAoJICBpZjE2MzIvLmN2c2lnbm9yZSwgaWYxNjMyL01ha2VmaWxlLmluLCBsb2FkZXIvLmN2c2lnbm9yZSwKCSAgbG9hZGVyL01ha2VmaWxlLmluLCBsb2FkZXIvbmUvLmN2c2lnbm9yZSwgbG9hZGVyL25lL01ha2VmaWxlLmluLAoJICBtZW1vcnkvLmN2c2lnbm9yZSwgbWVtb3J5L01ha2VmaWxlLmluLCBNYWtlLnJ1bGVzLmluLCBjb25maWd1cmU6CglTcGVjaWZ5IHRoZSBjb21wbGV0ZSBzb3VyY2UgZmlsZSBsaXN0IGZvciBhIGRsbCBpbnNpZGUgdGhlIG1haW4KCW1ha2VmaWxlIGFuZCBnZXQgcmlkIG9mIHRoZSBzdWJkaXJlY3RvcmllcyBtYWtlZmlsZXMuCgoJKiBwcm9ncmFtcy93aW5oZWxwL1h4LnJjOiBObyBsb25nZXIgdXNlZC4KCgkqIGRsbHMva2VybmVsL25scy9qcG4ubmxzOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcHJvdmVkIE5MUyBmaWxlIGZvciBjb2RlcGFnZSA5MzIgKFNKSVMpLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCURvIG5vdCBpbnZhbGlkYXRlIHRoZSByZWN0IHdoaWxlIGRyYXdpbmcuCglJbXBsZW1lbnRlZCBHZXRTdWJJdGVtUmVjdCBhbmQgYSBxdWljayBjaGFuZ2UgdG8gbm90aWZpY2F0aW9ucyBzZW50Cglmb3IgT3duZXJEYXRhIGl0ZW1zLgoKCSogZGxscy93aW5lZG9zL2ludDEwLmMsIGRsbHMvd2luZWRvcy92Z2EuYywgZGxscy93aW5lZG9zL3ZnYS5oOgoJUm9iZXJ0IENvZXltYW4gPGFkbWlyYWxAY29ybmVyLm5ldD4KCUFkZGVkIHRoZSByZXN0IG9mIHRoZSByZWdpc3RlciBtYW5pcHVsYXRpb24gY29kZSB0byBpbnQgMTAuICBJdCBvbmx5CgloYW5kbGVzIHRoZSBzZXR0aW5nIG9mIHRoZSAxNi1jb2xvciBwYWxldHRlIHJlZ2lzdGVycyBhbmQgb3ZlcnNjYW4uCgoJKiBkbGxzL2NvbWN0bDMyL3BhZ2VyLmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJLSBDaGFuZ2UgdHJhY2VzIHRvIHRyYWNlIGZ1bGwgd2luZG93IGhhbmRsZSBhbmQgaW1wcm92ZSBzb21lIHRyYWNlcy4KCS0gU2VuZCBXTV9OT1RJRlkgdG8gcGFyZW50IG5vdCB0byBzZWxmLgoJLSBJbXBsZW1lbnQgUEdTX0FVVE9TQ1JPTEwgdmlhIE1PVVNFTU9WRSBhbmQgVGltZXIgcm91dGluZXMuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglTdXBwb3J0IFBHTl9TQ1JPTEwgbm90aWZ5IGFuZCByZXR1cm4gZWl0aGVyIHRoZSBidXR0b24gaGVpZ3RoIG9yIHdpZHRoLgoKCSogd2luZG93cy9zcHkuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglGaXggbWVtb3J5IGR1bXAgd2hlcmUgbGVuZ3RoIGlzIG5vdCBhIG11bHRpcGxlIG9mIDQuCgoJKiBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCUZpeGVkIGlzc3VlcyB3aXRoIFVuaWNvZGUgY29udmVyc2lvbi4gQ2VydGFpbiBzdHJpbmdzIHdlcmUgbm90Cgljb252ZXJ0ZWQsIGJ1dCB0aGVuIHByb2Nlc3NlZCBhcyBjb252ZXJ0ZWQuCgoJKiBwcm9ncmFtcy93aW5oZWxwL0RhLnJjLCBwcm9ncmFtcy93aW5oZWxwL0RlLnJjLAoJICBwcm9ncmFtcy93aW5oZWxwL0VuLnJjLCBwcm9ncmFtcy93aW5oZWxwL0VzLnJjLAoJICBwcm9ncmFtcy93aW5oZWxwL0ZpLnJjLCBwcm9ncmFtcy93aW5oZWxwL0ZyLnJjLAoJICBwcm9ncmFtcy93aW5oZWxwL0h1LnJjLCBwcm9ncmFtcy93aW5oZWxwL0l0LnJjLAoJICBwcm9ncmFtcy93aW5oZWxwL0tvLnJjLCBwcm9ncmFtcy93aW5oZWxwL1B0LnJjLAoJICBwcm9ncmFtcy93aW5oZWxwL1NrLnJjLCBwcm9ncmFtcy93aW5oZWxwL1N3LnJjLAoJICBwcm9ncmFtcy93aW5oZWxwL1ZhLnJjLCBwcm9ncmFtcy93aW5oZWxwL1dhLnJjLAoJICBwcm9ncmFtcy93aW5oZWxwL21hY3JvLmMsIHByb2dyYW1zL3dpbmhlbHAvcnNyYy5yYywKCSAgcHJvZ3JhbXMvd2luaGVscC9zdHJpbmcuYywgcHJvZ3JhbXMvd2luaGVscC93aW5oZWxwLmMsCgkgIHByb2dyYW1zL3dpbmhlbHAvd2luaGVscC5oLCBwcm9ncmFtcy93aW5oZWxwL3dpbmhlbHBfcmVzLmg6CglTeWx2YWluIFBldHJlb2xsZSA8c3BldHJlb2xsZUB5YWhvby5mcj4KCS0gQ29udmVydGVkIFdpbmhlbHAgZm9yIHVzZSBvZiBOTFMKCS0gTWlub3IgYnVnZml4CgktIERpc2FibGUgc3VwcG9ydCBvZiBWYS5yYyBmb3Igbm93IChydW1hbnRzY2ggc3dpc3MpCgoyMDAyLTA1LTEyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogcHJvZ3JhbXMvd2luZXRlc3QvcnVudGVzdCwgdW5pY29kZS9NYWtlZmlsZS5pbiwgTWFrZS5ydWxlcy5pbiwKCSAgY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMva2VybmVsL3Rlc3RzL3Byb2Nlc3MuYywKCSAgbGlicmFyeS9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvTWFrZXByb2cucnVsZXMuaW46CglBZGRlZCBzb21lIHN1cHBvcnQgZm9yIGNyb3NzLWNvbXBpbGF0aW9uIHVzaW5nIG1pbmd3MzIuCgoJKiBkbGxzL3dpbm1tL21tc3lzdGVtLmMsIGRsbHMvd2lubW0vd2luZW1tLmg6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUJldHRlciBiZWhhdmlvciBvZiBQbGF5U291bmQgKGVycm9yIGhhbmRsaW5nLCBzeW5jaHJvbml6YXRpb24pLgoJUmVtb3ZlZCBzb21lIHVubmVjZXNzYXJ5IHRlc3RzIGFib3V0IHdpbmRvd3MgaGFuZGxlcy4KCjIwMDItMDUtMTEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBwcm9ncmFtcy93aW5lY29uc29sZS9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbnNvbGUuYywKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbnNvbGUuc3BlYywKCSAgcHJvZ3JhbXMvd2luZW1pbmUvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmVtaW5lL3dpbmVtaW5lLnNwZWMsCgkgIHByb2dyYW1zL3dpbmVwYXRoL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5lcGF0aC93aW5lcGF0aC5zcGVjLAoJICBwcm9ncmFtcy93aW5ldGVzdC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luZXRlc3Qvd2luZXRlc3Quc3BlYywKCSAgcHJvZ3JhbXMvd2luaGVscC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luaGVscC93aW5oZWxwLnNwZWMsCgkgIHByb2dyYW1zL3dpbnZlci9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2ludmVyL3dpbnZlci5zcGVjLAoJICB0b29scy93aW5lYnVpbGQvaW1wb3J0LmMsIHRvb2xzL3dpbmVidWlsZC9tYWluLmMsCgkgIHRvb2xzL3dpbmVidWlsZC9wYXJzZXIuYywgdG9vbHMvd2luZWJ1aWxkL3V0aWxzLmMsCgkgIGRsbHMvd293MzIvTWFrZWZpbGUuaW4sIGRsbHMvd3NvY2szMi9NYWtlZmlsZS5pbiwKCSAgZGxscy94MTFkcnYvTWFrZWZpbGUuaW4sIG1pc2NlbXUvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL01ha2Vwcm9nLnJ1bGVzLmluLCBwcm9ncmFtcy9hdml0b29scy9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvYXZpdG9vbHMvYXZpaW5mby5zcGVjLCBwcm9ncmFtcy9hdml0b29scy9hdmlwbGF5LnNwZWMsCgkgIHByb2dyYW1zL2F2aXRvb2xzL2ljaW5mby5zcGVjLCBwcm9ncmFtcy9jbG9jay9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvY2xvY2svY2xvY2suc3BlYywgcHJvZ3JhbXMvY21kbGd0c3QvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL2NtZGxndHN0L2NtZGxndHN0LnNwZWMsIHByb2dyYW1zL2NvbnRyb2wvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL2NvbnRyb2wvY29udHJvbC5zcGVjLCBwcm9ncmFtcy9ub3RlcGFkL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy9ub3RlcGFkL25vdGVwYWQuc3BlYywgcHJvZ3JhbXMvb3N2ZXJzaW9uY2hlY2svTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL29zdmVyc2lvbmNoZWNrL29zdmVyc2lvbmNoZWNrLnNwZWMsCgkgIHByb2dyYW1zL3Byb2dtYW4vTWFrZWZpbGUuaW4sIHByb2dyYW1zL3Byb2dtYW4vcHJvZ21hbi5zcGVjLAoJICBwcm9ncmFtcy9yZWdhcGkvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3JlZ2FwaS9yZWdhcGkuc3BlYywKCSAgcHJvZ3JhbXMvcmVnZWRpdC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvcmVnZWRpdC9yZWdlZGl0LnNwZWMsCgkgIHByb2dyYW1zL3JlZ3N2cjMyL01ha2VmaWxlLmluLCBwcm9ncmFtcy9yZWdzdnIzMi9yZWdzdnIzMi5zcGVjLAoJICBwcm9ncmFtcy9yZWd0ZXN0L01ha2VmaWxlLmluLCBwcm9ncmFtcy9yZWd0ZXN0L3JlZ3Rlc3Quc3BlYywKCSAgcHJvZ3JhbXMvdW5pbnN0YWxsZXIvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL3VuaW5zdGFsbGVyL3VuaW5zdGFsbGVyLnNwZWMsIHByb2dyYW1zL3ZpZXcvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL3ZpZXcvdmlldy5zcGVjLCBwcm9ncmFtcy93Y21kL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy93Y21kL3djbWQuc3BlYywgZGxscy93aW5pbmV0L01ha2VmaWxlLmluLAoJICBkbGxzL3dpbm1tL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL2pveXN0aWNrL01ha2VmaWxlLmluLAoJICBkbGxzL3dpbm1tL21jaWFuaW0vTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vbWNpYXZpL01ha2VmaWxlLmluLAoJICBkbGxzL3dpbm1tL21jaWF2aS9tY2lhdmkuZHJ2LnNwZWMsIGRsbHMvd2lubW0vbWNpY2RhL01ha2VmaWxlLmluLAoJICBkbGxzL3dpbm1tL21jaXNlcS9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS9tY2l3YXZlL01ha2VmaWxlLmluLAoJICBkbGxzL3dpbm1tL21pZGltYXAvTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vd2F2ZW1hcC9NYWtlZmlsZS5pbiwKCSAgZGxscy93aW5tbS93aW5lYXJ0cy9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS93aW5lb3NzL01ha2VmaWxlLmluLAoJICBkbGxzL3dpbm1tL3dpbm1tLnNwZWMsIGRsbHMvd2lubmxzL01ha2VmaWxlLmluLAoJICBkbGxzL3dpbnNvY2svTWFrZWZpbGUuaW4sIGRsbHMvd2luc29jay90ZXN0cy93czJfMzJfdGVzdC5zcGVjLAoJICBkbGxzL3dpbnNwb29sL01ha2VmaWxlLmluLCBkbGxzL3dpbnRydXN0L01ha2VmaWxlLmluLAoJICBkbGxzL3NlcmlhbHVpL01ha2VmaWxlLmluLCBkbGxzL3NlcmlhbHVpL3NlcmlhbHVpLnNwZWMsCgkgIGRsbHMvc2V0dXBhcGkvTWFrZWZpbGUuaW4sIGRsbHMvc2V0dXBhcGkvc2V0dXBhcGkuc3BlYywKCSAgZGxscy9zaGRvY3Z3L01ha2VmaWxlLmluLCBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsIGRsbHMvc2hmb2xkZXIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvc2hsd2FwaS9NYWtlZmlsZS5pbiwgZGxscy9zaGx3YXBpL3Rlc3RzL3NobHdhcGlfdGVzdC5zcGVjLAoJICBkbGxzL3NubXBhcGkvTWFrZWZpbGUuaW4sIGRsbHMvc3RpL01ha2VmaWxlLmluLAoJICBkbGxzL3RhcGkzMi9NYWtlZmlsZS5pbiwgZGxscy90dHlkcnYvTWFrZWZpbGUuaW4sCgkgIGRsbHMvdHdhaW4vTWFrZWZpbGUuaW4sIGRsbHMvdXJsL01ha2VmaWxlLmluLAoJICBkbGxzL3VybG1vbi9NYWtlZmlsZS5pbiwgZGxscy91c2VyL01ha2VmaWxlLmluLAoJICBkbGxzL3VzZXIvdGVzdHMvdXNlcjMyX3Rlc3Quc3BlYywgZGxscy91c2VyL3VzZXIzMi5zcGVjLAoJICBkbGxzL3ZlcnNpb24vTWFrZWZpbGUuaW4sIGRsbHMvd2luMzJzL01ha2VmaWxlLmluLAoJICBkbGxzL3dpbmFzcGkvTWFrZWZpbGUuaW4sIGRsbHMvd2luZWRvcy9NYWtlZmlsZS5pbiwKCSAgZGxscy93aW5lcHMvTWFrZWZpbGUuaW4sIGRsbHMvd2luZXBzL3dpbmVwcy5zcGVjLAoJICBkbGxzL21zbmV0MzIvTWFrZWZpbGUuaW4sIGRsbHMvbXNybGUzMi9NYWtlZmlsZS5pbiwKCSAgZGxscy9tc3ZjcnQvTWFrZWZpbGUuaW4sIGRsbHMvbXN2Y3J0MjAvTWFrZWZpbGUuaW4sCgkgIGRsbHMvbXN2aWRlby9NYWtlZmlsZS5pbiwgZGxscy9uZXRhcGkzMi9NYWtlZmlsZS5pbiwKCSAgZGxscy9vZGJjMzIvTWFrZWZpbGUuaW4sIGRsbHMvb2xlMzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvb2xlMzIvb2xlMzIuc3BlYywgZGxscy9vbGVhdXQzMi9NYWtlZmlsZS5pbiwKCSAgZGxscy9vbGVhdXQzMi9vbGVhdXQzMi5zcGVjLCBkbGxzL29sZWF1dDMyL3Rlc3RzL29sZWF1dDMyX3Rlc3Quc3BlYywKCSAgZGxscy9vbGVjbGkvTWFrZWZpbGUuaW4sIGRsbHMvb2xlZGxnL01ha2VmaWxlLmluLAoJICBkbGxzL29sZXBybzMyL01ha2VmaWxlLmluLCBkbGxzL29sZXN2ci9NYWtlZmlsZS5pbiwKCSAgZGxscy9vcGVuZ2wzMi9NYWtlZmlsZS5pbiwgZGxscy9wc2FwaS9NYWtlZmlsZS5pbiwKCSAgZGxscy9xY2FwL01ha2VmaWxlLmluLCBkbGxzL3F1YXJ0ei9NYWtlZmlsZS5pbiwKCSAgZGxscy9yYXNhcGkzMi9NYWtlZmlsZS5pbiwgZGxscy9yaWNoZWRpdC9NYWtlZmlsZS5pbiwKCSAgZGxscy9ycGNydDQvTWFrZWZpbGUuaW4sIGRsbHMvZGRyYXcvTWFrZWZpbGUuaW4sCgkgIGRsbHMvZGRyYXcvZGRyYXcuc3BlYywgZGxscy9kZXZlbnVtL01ha2VmaWxlLmluLAoJICBkbGxzL2RpbnB1dC9NYWtlZmlsZS5pbiwgZGxscy9kcGxheS9NYWtlZmlsZS5pbiwKCSAgZGxscy9kcGxheXgvTWFrZWZpbGUuaW4sIGRsbHMvZHBsYXl4L2RwbGF5eC5zcGVjLAoJICBkbGxzL2Rzb3VuZC9NYWtlZmlsZS5pbiwgZGxscy9nZGkvTWFrZWZpbGUuaW4sIGRsbHMvZ2RpL2dkaTMyLnNwZWMsCgkgIGRsbHMvaWNtcC9NYWtlZmlsZS5pbiwgZGxscy9pbWFnZWhscC9NYWtlZmlsZS5pbiwKCSAgZGxscy9pbW0zMi9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sCgkgIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGRsbHMva2VybmVsL3Rlc3RzL2tlcm5lbDMyX3Rlc3Quc3BlYywKCSAgZGxscy9semV4cGFuZC9NYWtlZmlsZS5pbiwgZGxscy9tYXBpMzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvbXByL01ha2VmaWxlLmluLCBkbGxzL21zYWNtL01ha2VmaWxlLmluLAoJICBkbGxzL21zYWNtL21zYWNtMzIuc3BlYywgZGxscy9tc2FjbS9tc2c3MTEvTWFrZWZpbGUuaW4sCgkgIGRsbHMvbXNkbW8vTWFrZWZpbGUuaW4sIGRsbHMvbXNpbWczMi9NYWtlZmlsZS5pbiwKCSAgZGxscy9tc2lzeXMvTWFrZWZpbGUuaW4sIE1ha2UucnVsZXMuaW4sIGRlYnVnZ2VyL01ha2VmaWxlLmluLAoJICBkZWJ1Z2dlci93aW5lZGJnLmMsIGRlYnVnZ2VyL3dpbmVkYmcuc3BlYywgZGxscy9NYWtlZGxsLnJ1bGVzLmluLAoJICBkbGxzL2FkdmFwaTMyL01ha2VmaWxlLmluLCBkbGxzL2F2aWNhcDMyL01ha2VmaWxlLmluLAoJICBkbGxzL2F2aWZpbDMyL01ha2VmaWxlLmluLCBkbGxzL2NvbWN0bDMyL01ha2VmaWxlLmluLAoJICBkbGxzL2NvbWN0bDMyL2NvbWN0bDMyLnNwZWMsIGRsbHMvY29tbWRsZy9NYWtlZmlsZS5pbiwKCSAgZGxscy9jb21tZGxnL2NvbWRsZzMyLnNwZWMsIGRsbHMvY3J0ZGxsL01ha2VmaWxlLmluLAoJICBkbGxzL2NyeXB0MzIvTWFrZWZpbGUuaW4sIGRsbHMvZGNpbWFuMzIvTWFrZWZpbGUuaW46CglBZGRlZCAtcmVzIG9wdGlvbiB0byBzcGVjaWZ5IHJlc291cmNlcyBvbiB3aW5lYnVpbGQgY29tbWFuZC1saW5lLgoJQWRkZWQgLWV4ZSBtb2RlIHRvIGdlbmVyYXRlIGEgLnNwZWMuYyBmb3IgYW4gZXhlIHdpdGhvdXQgaGF2aW5nIHRvCglwcm92aWRlIGEgLnNwZWMuCglSZW1vdmVkIHNvbWUgbm8gbG9uZ2VyIG5lZWRlZCBzcGVjIGZpbGVzLgoJUmVtb3ZlZCAuZGxsIGV4dGVuc2lvbiBpbiBtYWtlZmlsZXMgaW1wb3J0IHNwZWNpZmljYXRpb25zLgoKCSogZGxscy93aW5tbS9tY2lhbmltL21jaWFuaW0uYywgZGxscy93aW5tbS9tY2lhdmkvbWNpYXZpLmMsCgkgIGRsbHMvd2lubW0vbWNpY2RhL21jaWNkYS5jLCBkbGxzL3dpbm1tL21jaXNlcS9tY2ltaWRpLmMsCgkgIGRsbHMvd2lubW0vbWNpd2F2ZS9tY2l3YXZlLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUxldCBNQ0kgZHJpdmVycyBzdXBwb3J0IHRoZSBzZXNzaW9uIGluc3RhbmNlIGxvYWRpbmcgbWVjaGFuaXNtIChOVUxMCglsUGFyYW0yIGluIE1DSV9PUEVOKS4KCgkqIGluY2x1ZGUvd2luZS9vYmpfY29tY2F0Lmg6CglKb2huIEsuIEhvaG0gPGpob2htQGFjbS5vcmc+CglGaXhlZCB0eXBvczsgYWRkZWQgc3RhbmRhcmQgQ0FUSURfJ3MuCgoJKiBtZW1vcnkvaW5zdHIuYzogSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJV2hlbiB1c2luZyBNYXBTTCwgMzItYml0IGFkZHJlc3NlcyBhcmUgbm8gbG9uZ2VyIHRydW5jYXRlZCBpbnRvIDE2LWJpdAoJYWRkcmVzc2VzLgoKCSogbXNkb3MvZHBtaS5jOiBKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglSYXdNb2RlU3dpdGNoIGNhbiBub3cgYmUgdXNlZCB0byByZXR1cm4gRFBNSSBhcHBsaWNhdGlvbiBiYWNrIHRvCglwcm90ZWN0ZWQgbW9kZS4KCgkqIGRsbHMvd2luZWRvcy92Z2EuYzoKCUNocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUF2b2lkIGRlYWRsb2NrIGluIFZHQV9Eb1NldE1vZGUuCgoJKiBmaWxlcy9wcm9maWxlLmM6CglBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CglNYWtlIFBST0ZJTEVfR2V0U3RyaW5nIGFjY291bnQgZm9yIGRlZmF1bHQgdmFsdWUgaW4gYWxsIGNhc2VzLgoKCSogdG9vbHMvd2luZWR1bXAvbWFpbi5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglBbGxvd2VkIG9wdGlvbnMgdG8gYmUgcHV0IGJldHdlZW4gbW9kZSBrZXl3b3JkIGFuZCBtYWluIGFyZ3VtZW50LgoKCSogZGxscy9tc2FjbS9kcml2ZXIuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJTW92ZWQgc2Vzc2lvbiBpbnN0YW5jZSBsb2FkaW5nIHRvIHdpbm1tLgoKCSogZGxscy9tc2FjbS9pbWFhZHAzMi9NYWtlZmlsZS5pbiwKCSAgZGxscy9tc2FjbS9pbWFhZHAzMi9pbWFhZHAzMi5hY20uc3BlYywKCSAgZGxscy9tc2FjbS9pbWFhZHAzMi9pbWFhZHAzMi5jLCBkb2N1bWVudGF0aW9uL3NhbXBsZXMvc3lzdGVtLmluaToKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJQ3JlYXRlZCBhbiBBQ00gSU1BIEFEUENNIGNvZGVjLgoKCSogZGxscy9tc2FjbS9mb3JtYXQuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgYnVnIGluIGFjbUZvcm1hdFRhZ0VudW1XLgoKCSogZGxscy93aW5tbS9kcml2ZXIuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJQ3JlYXRlZCBzZXNzaW9uIGluc3RhbmNlIGZvciBpbnN0YWxsYWJsZSBkcml2ZXJzLgoJTm93IHByb3Blcmx5IGZyZWVpbmcgbGlicmFyeSB1cG9uIGRyaXZlciBleGl0LgoKCSogaW5jbHVkZS93aW5iYXNlLmgsIHdpbjMyL25ld2Zucy5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBGbHVzaEluc3RydWN0aW9uQ2FjaGUgcHJvdG90eXBlLgoKCSogc2VydmVyL2NvbnNvbGUuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgbWlzc2luZyB3aW5lY29uc29sZSBub3RpZmljYXRpb24gb2YgdGl0bGUgbW9kaWZpY2F0aW9uLgoKCSogZGxscy9kc291bmQvZHNvdW5kX21haW4uYzoKCUpvcmlzIEJldWduaWVzIDxqb3Jpcy5iZXVnbmllc0BwYW5kb3JhLmJlPgoJTWFrZSBkZWZpbmVzIGNvbmZpZ3VyYWJsZSBhdCBydW4tdGltZS4KCgkqIGdyYXBoaWNzL3gxMWRydi9kaWIuYzoKCURhdmlkIEhhbW1lcnRvbiA8ZGF2aWRAdHJhbnNnYW1pbmcuY29tPgoJTG9jay91bmxvY2sgKGFuZCBoZW5jZSBtYXliZSBjb2VyY2UpIERJQlNlY3Rpb25zIGludG8gR2RpTW9kIGR1cmluZwoJdGhlIFNldERJQml0cyBhbmQgR2V0RElCaXRzIGZ1bmN0aW9ucywgYmVmb3JlIGFjdHVhbGx5IGFjY2Vzc2luZyB0aGUgWAoJUGl4bWFwLgoKMjAwMi0wNS0wOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIFZFUlNJT04sIGNvbmZpZ3VyZSwgQU5OT1VOQ0UsIENoYW5nZUxvZzoKCVJlbGVhc2UgMjAwMjA1MDkuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjIwMDItMDUtMDkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBtZW1vcnkvdmlydHVhbC5jOgoJQnVpbGQgYW4gZXhwbGljaXQgYXJndW1lbnQgc3RydWN0dXJlIGZvciBtbWFwIGluc3RlYWQgb2YgcmVseWluZyBvbgoJdGhlIHN0YWNrIGxheW91dC4KCgkqIGNvbmZpZ3VyZS5hYywgaW5jbHVkZS9jb25maWcuaC5pbiwgaW5jbHVkZS93aW5lL3BvcnQuaCwKCSAgdG9vbHMvd3JjL3BweS55LCBjb25maWd1cmU6CglTdGV2ZW4gRWR3YXJkcyA8U3RldmVuX0VkNDE1M0B5YWhvby5jb20+CglEZXRlY3Qgc25wcmludGYgJiYgX3NucHJpbnRmLCB1c2UgX3NucHJpbnRmIG9uIHN0dXBpZCBwbGF0Zm9ybXMKCSh3aW5kb3dzKS4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL2ZpbGUuYzoKCVJlbW92ZWQgZXh0cmEgcmV0dXJuIHN0YXRlbWVudC4KCgkqIGluY2x1ZGUvdHNfeGxpYi5oLCBpbmNsdWRlL3RzX3hyZXNvdXJjZS5oLCBpbmNsdWRlL3RzX3h1dGlsLmgsCgkgIHRvb2xzL21ha2VfWDExd3JhcHBlcnMsIHRzeDExL1gxMV9jYWxscywgdHN4MTEvdHNfeGxpYi5jLAoJICB0c3gxMS90c194cmVzb3VyY2UuYywgdHN4MTEvdHNfeHV0aWwuYzoKCUFkZGVkIHNvbWUgI2lmZGVmcyBIQVZFX1gxMV9YTElCX0ggd2hlcmUgYXBwcm9wcmlhdGUuCgoJKiBBTk5PVU5DRSwgUkVBRE1FLCBkb2N1bWVudGF0aW9uL2ZvbnRzLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vZ2V0dGluZy5zZ21sLAoJICBkb2N1bWVudGF0aW9uL2luc3RhbGxhdGlvbi11bmQta29uZmlndXJhdGlvbi5nZXJtYW4sCgkgIGRvY3VtZW50YXRpb24vd2luZS5tYW4uaW46CglGaXhlZCBzb21lIHdpbmVocS5jb20gVVJMcy4KCgkqIGRsbHMvbnRkbGwvbnQuYywgZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL250ZGxsL3NlYy5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2Vuc2NobWllZEBseWNvcy5kZT4KCUNvcnJlY3RlZCBSdGxDb252ZXJ0U2lkVG9Vbmljb2RlU3RyaW5nLCBzdHViIGZvciBWZXJTZXRDb25kaXRpb25NYXNrLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvZmlsZS5jOgoJSmFrb2IgRXJpa3Nzb24gPGpha29iQHZtbGludXgub3JnPgoJQWRkZWQgc29tZSBtb3JlIHRlc3RzLgoKCSogaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9jb21jYXQuaCwgaW5jbHVkZS93aW5lL29ial9jb21jYXQuaCwKCSAgaW5jbHVkZS93aW5lL29ial9lbnVtZ3VpZC5oLCBvbGUvdXVpZC5jOgoJSm9obiBLLiBIb2htIDxqaG9obUBhY20ub3JnPgoJQWRkZWQgZGVmaW5pdGlvbnMgZm9yIHRoZSBDb21wb25lbnQgQ2F0ZWdvcmllcyBNYW5hZ2VyLgoKCSogZGxscy9zaGx3YXBpL3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMvc2hsd2FwaS90ZXN0cy9zaGx3YXBpX3Rlc3Quc3BlYywKCSAgZGxscy9zaGx3YXBpL3Rlc3RzL3NocmVnLmMsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLAoJICBkbGxzL3NobHdhcGkvTWFrZWZpbGUuaW46CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW5zY2htaWVkQGx5Y29zLmRlPgoJQWRkZWQgc29tZSB0ZXN0cy4KCgkqIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsIGRsbHMvc2hsd2FwaS9yZWcuYywgZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbnNjaG1pZWRAbHljb3MuZGU+CglSZWltcGxlbWVudGVkIFNIUmVnR2V0UGF0aEEvVywgU0hHZXRWYWx1ZUEvVywgU0hSZWdHZXRQYXRoQS9XLgoKCSogZGxscy9zaGVsbDMyL01ha2VmaWxlLmluLCBkbGxzL3NoZWxsMzIvZGVidWdobHAuYywKCSAgZGxscy9zaGVsbDMyL2RlYnVnaGxwLmgsIGRsbHMvc2hlbGwzMi9waWRsLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW5zY2htaWVkQGx5Y29zLmRlPgoJTW92aW5nIHRoZSBwaWRsIGRlYnVnIGZ1bmN0aW9ucyB0byBhIHNlcGFyYXRlIGZpbGUgYW5kIG1hZGUgdGhlbSBzZWxmCgljb250YWluZWQuIFRoaXMgcHJldmVudHMgdXNlbGVzcyB0cmFjZSBtZXNzYWdlcyBnZW5lcmF0ZWQgZnJvbSB0aGUKCWRlYnVnIGZ1bmN0aW9ucyB0aGVtc2VsdmVzLgoKCSogZGxscy9udGRsbC9maWxlLmMsIGluY2x1ZGUvd2luaW9jdGwuaDoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbnNjaG1pZWRAbHljb3MuZGU+CglUeXBlcyBhbmQgcGFydGlhbCBpbXBsZW1lbnRhdGlvbiBmb3IgTnRRdWVyeVZvbHVtZUluZm9ybWF0aW9uRmlsZS4KCgkqIGRsbHMvYWR2YXBpMzIvcmVnaXN0cnkuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbnNjaG1pZWRAbHljb3MuZGU+CglNYWtlIHVzZSBvZiBhY2Nlc3MgbWFzayBNQVhJTVVNX0FMTE9XRUQgcG9zc2libGUuCgoJKiBtaXNjL3JlZ2lzdHJ5LmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW5zY2htaWVkQGx5Y29zLmRlPgoJVXNlIG9ubHkgd2luYXBpIGZ1bmN0aW9ucyBpbiBfY29udmVydF93aW5udF9yZWdpc3RyeV90b193aW5lX2Zvcm1hdC4KCgkqIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIG1pc2MvdmVyc2lvbi5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2Vuc2NobWllZEBseWNvcy5kZT4KCVN0dWIgZm9yIFZlcmlmeVZlcnNpb25JbmZvVy4KCgkqIGZpbGVzL2RpcmVjdG9yeS5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2Vuc2NobWllZEBseWNvcy5kZT4KCVVzZSBsb25nIG5hbWVzLCBub3QgOC4zIG5hbWVzIGluIGVudmlyb25tZW50LgoKCSogZGxscy94MTFkcnYvTWFrZWZpbGUuaW4sIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGxpYnJhcnkvTWFrZWZpbGUuaW4sCgkgIG9sZS9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvTWFrZXByb2cucnVsZXMuaW4sCgkgIHByb2dyYW1zL2F2aXRvb2xzL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5ldGVzdC9NYWtlZmlsZS5pbiwKCSAgc2VydmVyL01ha2VmaWxlLmluLCB0b29scy9NYWtlZmlsZS5pbiwgdG9vbHMvaW5zdGFsbC1zaCwKCSAgdG9vbHMvbWtpbnN0YWxsZGlycywgdG9vbHMvd2luYXBpL01ha2VmaWxlLmluLAoJICB0b29scy93aW5lYnVpbGQvTWFrZWZpbGUuaW4sIHRvb2xzL3dpbmVkdW1wL01ha2VmaWxlLmluLAoJICB0b29scy93bWMvTWFrZWZpbGUuaW4sIHRvb2xzL3dyYy9NYWtlZmlsZS5pbiwgdHN4MTEvTWFrZWZpbGUuaW4sCgkgIHVuaWNvZGUvTWFrZWZpbGUuaW4sIE1ha2UucnVsZXMuaW4sIE1ha2VmaWxlLmluLAoJICBkbGxzL01ha2VkbGwucnVsZXMuaW46CglBZGRlZCBta2luc3RhbGxkaXJzIHRvIGNyZWF0ZSBkaXJlY3RvcmllcyBtb3JlIHBvcnRhYmx5LgoKCSogZGxscy9nZGkvZW5obWZkcnYvZGMuYywgZGxscy9nZGkvZW5obWZkcnYvZW5obWV0YWZpbGVkcnYuaCwKCSAgZGxscy9nZGkvZW5obWZkcnYvaW5pdC5jLCBkbGxzL2dkaS9tZmRydi9ncmFwaGljcy5jLAoJICBkbGxzL2dkaS9tZmRydi9pbml0LmMsIGRsbHMvZ2RpL21mZHJ2L21ldGFmaWxlZHJ2LmgsCgkgIGRsbHMvZ2RpL3dpbjE2ZHJ2L2luaXQuYywgaW5jbHVkZS9nZGkuaCwgb2JqZWN0cy9jbGlwcGluZy5jLAoJICBkbGxzL2dkaS9kcml2ZXIuYzoKCUFkZGVkIEV4dFNlbGVjdENsaXBSZ24gdG8gdGhlIERDIGludGVyZmFjZSBhbmQgaW1wbGVtZW50ZWQgaXQgZm9yCglzdGFuZGFyZCBhbmQgZW5oYW5jZWQgbWV0YWZpbGVzLgoKCSogdG9vbHMvY29uZmlnLmd1ZXNzLCB0b29scy9jb25maWcuc3ViOgoJVXBkYXRlZCB0byB0aGUgbGF0ZXN0IHZlcnNpb24uCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYzoKCVRoZXJlJ3Mgbm8gbmVlZCB0byBjaGVjayBmb3IgZGxvcGVuIG9uIGN5Z3dpbi4KCgkqIGNvbnRyb2xzL21lbnUuYzoKCVJpenNhbnlpIFpzb2x0IDxyaXpzYW55aUBteXJlYWxib3guY29tPgoJRGlzYWJsZWQgY2F0Y2hpbmcgb2YgbW91c2UgbW92ZSBldmVudHMgd2hlbiBub3Qgb3ZlciBtZW51LgoJQ2hhbmdlZCBNRU5VX1NlbGVjdEl0ZW0gYWxsb3cgRW5kTWVudSB0byBkZXNlbGVjdCB0aGUgc2VsZWN0ZWQgbWVudS4KCgkqIHRvb2xzL3dpbmVidWlsZC9pbXBvcnQuYywgdG9vbHMvd2luZWJ1aWxkL21haW4uYywKCSAgcHJvZ3JhbXMvbm90ZXBhZC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvbm90ZXBhZC9ub3RlcGFkLnNwZWMsCgkgIHByb2dyYW1zL29zdmVyc2lvbmNoZWNrL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy9vc3ZlcnNpb25jaGVjay9vc3ZlcnNpb25jaGVjay5zcGVjLAoJICBwcm9ncmFtcy9wcm9nbWFuL01ha2VmaWxlLmluLCBwcm9ncmFtcy9wcm9nbWFuL3Byb2dtYW4uc3BlYywKCSAgcHJvZ3JhbXMvcmVnYXBpL01ha2VmaWxlLmluLCBwcm9ncmFtcy9yZWdhcGkvcmVnYXBpLnNwZWMsCgkgIHByb2dyYW1zL3JlZ2VkaXQvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3JlZ2VkaXQvcmVnZWRpdC5zcGVjLAoJICBwcm9ncmFtcy9yZWdzdnIzMi9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvcmVnc3ZyMzIvcmVnc3ZyMzIuc3BlYywKCSAgcHJvZ3JhbXMvcmVndGVzdC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvcmVndGVzdC9yZWd0ZXN0LnNwZWMsCgkgIHByb2dyYW1zL3VuaW5zdGFsbGVyL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy91bmluc3RhbGxlci91bmluc3RhbGxlci5zcGVjLCBwcm9ncmFtcy92aWV3L01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy92aWV3L3ZpZXcuc3BlYywgcHJvZ3JhbXMvd2NtZC9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvd2NtZC93Y21kLnNwZWMsIHByb2dyYW1zL3dpbmVjb25zb2xlL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZS5zcGVjLCBwcm9ncmFtcy93aW5lbWluZS9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvd2luZW1pbmUvd2luZW1pbmUuc3BlYywgcHJvZ3JhbXMvd2luZXBhdGgvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL3dpbmVwYXRoL3dpbmVwYXRoLnNwZWMsIHByb2dyYW1zL3dpbmV0ZXN0L01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy93aW5ldGVzdC93aW5ldGVzdC5zcGVjLCBwcm9ncmFtcy93aW5oZWxwL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy93aW5oZWxwL3dpbmhlbHAuc3BlYywgcHJvZ3JhbXMvd2ludmVyL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy93aW52ZXIvd2ludmVyLnNwZWMsIGRsbHMvd2lubmxzL01ha2VmaWxlLmluLAoJICBkbGxzL3dpbm5scy93aW5ubHMzMi5zcGVjLCBkbGxzL3dpbnNvY2svTWFrZWZpbGUuaW4sCgkgIGRsbHMvd2luc29jay90ZXN0cy93czJfMzJfdGVzdC5zcGVjLCBkbGxzL3dpbnNvY2svd3MyXzMyLnNwZWMsCgkgIGRsbHMvd2luc3Bvb2wvTWFrZWZpbGUuaW4sIGRsbHMvd2luc3Bvb2wvd2luc3Bvb2wuZHJ2LnNwZWMsCgkgIGRsbHMvd2ludHJ1c3QvTWFrZWZpbGUuaW4sIGRsbHMvd2ludHJ1c3Qvd2ludHJ1c3Quc3BlYywKCSAgZGxscy93b3czMi9NYWtlZmlsZS5pbiwgZGxscy93b3czMi93b3czMi5zcGVjLAoJICBkbGxzL3dzb2NrMzIvTWFrZWZpbGUuaW4sIGRsbHMvd3NvY2szMi93c29jazMyLnNwZWMsCgkgIGRsbHMveDExZHJ2L01ha2VmaWxlLmluLCBkbGxzL3gxMWRydi94MTFkcnYuc3BlYywKCSAgbGlidGVzdC9NYWtlZmlsZS5pbiwgbGlidGVzdC9leHBhbmQuc3BlYywgbGlidGVzdC9oZWxsby5zcGVjLAoJICBsaWJ0ZXN0L2hlbGxvMi5zcGVjLCBsaWJ0ZXN0L2hlbGxvMy5zcGVjLCBsaWJ0ZXN0L2hlbGxvNC5zcGVjLAoJICBsaWJ0ZXN0L2hlbGxvNS5zcGVjLCBsaWJ0ZXN0L25ldy5zcGVjLCBsaWJ0ZXN0L3JvbGV4LnNwZWMsCgkgIGxpYnRlc3Qvdm9saW5mby5zcGVjLCBtaXNjZW11L01ha2VmaWxlLmluLCBtaXNjZW11L3dpbmUuc3BlYywKCSAgcHJvZ3JhbXMvTWFrZXByb2cucnVsZXMuaW4sIHByb2dyYW1zL2F2aXRvb2xzL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy9hdml0b29scy9hdmlpbmZvLnNwZWMsIHByb2dyYW1zL2F2aXRvb2xzL2F2aXBsYXkuc3BlYywKCSAgcHJvZ3JhbXMvYXZpdG9vbHMvaWNpbmZvLnNwZWMsIHByb2dyYW1zL2Nsb2NrL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy9jbG9jay9jbG9jay5zcGVjLCBwcm9ncmFtcy9jbWRsZ3RzdC9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvY21kbGd0c3QvY21kbGd0c3Quc3BlYywgcHJvZ3JhbXMvY29udHJvbC9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvY29udHJvbC9jb250cm9sLnNwZWMsIGRsbHMvd2luMzJzL01ha2VmaWxlLmluLAoJICBkbGxzL3dpbjMycy93MzJza3JubC5zcGVjLCBkbGxzL3dpbmFzcGkvTWFrZWZpbGUuaW4sCgkgIGRsbHMvd2luYXNwaS93bmFzcGkzMi5zcGVjLCBkbGxzL3dpbmVkb3MvTWFrZWZpbGUuaW4sCgkgIGRsbHMvd2luZWRvcy93aW5lZG9zLnNwZWMsIGRsbHMvd2luZXBzL01ha2VmaWxlLmluLAoJICBkbGxzL3dpbmVwcy93aW5lcHMuc3BlYywgZGxscy93aW5pbmV0L01ha2VmaWxlLmluLAoJICBkbGxzL3dpbmluZXQvd2luaW5ldC5zcGVjLCBkbGxzL3dpbm1tL01ha2VmaWxlLmluLAoJICBkbGxzL3dpbm1tL2pveXN0aWNrL01ha2VmaWxlLmluLAoJICBkbGxzL3dpbm1tL2pveXN0aWNrL2pveXN0aWNrLmRydi5zcGVjLAoJICBkbGxzL3dpbm1tL21jaWFuaW0vTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vbWNpYW5pbS9tY2lhbmltLmRydi5zcGVjLAoJICBkbGxzL3dpbm1tL21jaWF2aS9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS9tY2lhdmkvbWNpYXZpLmRydi5zcGVjLAoJICBkbGxzL3dpbm1tL21jaWNkYS9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS9tY2ljZGEvbWNpY2RhLmRydi5zcGVjLAoJICBkbGxzL3dpbm1tL21jaXNlcS9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS9tY2lzZXEvbWNpc2VxLmRydi5zcGVjLAoJICBkbGxzL3dpbm1tL21jaXdhdmUvTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vbWNpd2F2ZS9tY2l3YXZlLmRydi5zcGVjLAoJICBkbGxzL3dpbm1tL21pZGltYXAvTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vbWlkaW1hcC9taWRpbWFwLmRydi5zcGVjLAoJICBkbGxzL3dpbm1tL3dhdmVtYXAvTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vd2F2ZW1hcC9tc2FjbS5kcnYuc3BlYywKCSAgZGxscy93aW5tbS93aW5lYXJ0cy9NYWtlZmlsZS5pbiwKCSAgZGxscy93aW5tbS93aW5lYXJ0cy93aW5lYXJ0cy5kcnYuc3BlYywKCSAgZGxscy93aW5tbS93aW5lb3NzL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL3dpbmVvc3Mvd2luZW9zcy5kcnYuc3BlYywKCSAgZGxscy93aW5tbS93aW5tbS5zcGVjLCBkbGxzL3NlcmlhbHVpL01ha2VmaWxlLmluLAoJICBkbGxzL3NlcmlhbHVpL3NlcmlhbHVpLnNwZWMsIGRsbHMvc2V0dXBhcGkvTWFrZWZpbGUuaW4sCgkgIGRsbHMvc2V0dXBhcGkvc2V0dXBhcGkuc3BlYywgZGxscy9zaGRvY3Z3L01ha2VmaWxlLmluLAoJICBkbGxzL3NoZG9jdncvc2hkb2N2dy5zcGVjLCBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsIGRsbHMvc2hmb2xkZXIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvc2hmb2xkZXIvc2hmb2xkZXIuc3BlYywgZGxscy9zaGx3YXBpL01ha2VmaWxlLmluLAoJICBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjLCBkbGxzL3NubXBhcGkvTWFrZWZpbGUuaW4sCgkgIGRsbHMvc25tcGFwaS9zbm1wYXBpLnNwZWMsIGRsbHMvc3RpL01ha2VmaWxlLmluLCBkbGxzL3N0aS9zdGkuc3BlYywKCSAgZGxscy90YXBpMzIvTWFrZWZpbGUuaW4sIGRsbHMvdGFwaTMyL3RhcGkzMi5zcGVjLAoJICBkbGxzL3R0eWRydi9NYWtlZmlsZS5pbiwgZGxscy90dHlkcnYvdHR5ZHJ2LnNwZWMsCgkgIGRsbHMvdHdhaW4vTWFrZWZpbGUuaW4sIGRsbHMvdHdhaW4vdHdhaW5fMzIuc3BlYywKCSAgZGxscy91cmwvTWFrZWZpbGUuaW4sIGRsbHMvdXJsL3VybC5zcGVjLCBkbGxzL3VybG1vbi9NYWtlZmlsZS5pbiwKCSAgZGxscy91cmxtb24vdXJsbW9uLnNwZWMsIGRsbHMvdXNlci9NYWtlZmlsZS5pbiwKCSAgZGxscy91c2VyL3Rlc3RzL3VzZXIzMl90ZXN0LnNwZWMsIGRsbHMvdXNlci91c2VyMzIuc3BlYywKCSAgZGxscy92ZXJzaW9uL01ha2VmaWxlLmluLCBkbGxzL3ZlcnNpb24vdmVyc2lvbi5zcGVjLAoJICBkbGxzL21zdmlkZW8vTWFrZWZpbGUuaW4sIGRsbHMvbXN2aWRlby9tc3ZmdzMyLnNwZWMsCgkgIGRsbHMvbmV0YXBpMzIvTWFrZWZpbGUuaW4sIGRsbHMvbmV0YXBpMzIvbmV0YXBpMzIuc3BlYywKCSAgZGxscy9vZGJjMzIvTWFrZWZpbGUuaW4sIGRsbHMvb2RiYzMyL29kYmMzMi5zcGVjLAoJICBkbGxzL29sZTMyL01ha2VmaWxlLmluLCBkbGxzL29sZTMyL29sZTMyLnNwZWMsCgkgIGRsbHMvb2xlYXV0MzIvTWFrZWZpbGUuaW4sIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzIuc3BlYywKCSAgZGxscy9vbGVhdXQzMi90ZXN0cy9vbGVhdXQzMl90ZXN0LnNwZWMsIGRsbHMvb2xlY2xpL01ha2VmaWxlLmluLAoJICBkbGxzL29sZWNsaS9vbGVjbGkzMi5zcGVjLCBkbGxzL29sZWRsZy9NYWtlZmlsZS5pbiwKCSAgZGxscy9vbGVkbGcvb2xlZGxnLnNwZWMsIGRsbHMvb2xlcHJvMzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvb2xlcHJvMzIvb2xlcHJvMzIuc3BlYywgZGxscy9vbGVzdnIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvb2xlc3ZyL29sZXN2cjMyLnNwZWMsIGRsbHMvb3BlbmdsMzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvb3BlbmdsMzIvb3BlbmdsMzIuc3BlYywgZGxscy9wc2FwaS9NYWtlZmlsZS5pbiwKCSAgZGxscy9wc2FwaS9wc2FwaS5zcGVjLCBkbGxzL3FjYXAvTWFrZWZpbGUuaW4sIGRsbHMvcWNhcC9xY2FwLnNwZWMsCgkgIGRsbHMvcXVhcnR6L01ha2VmaWxlLmluLCBkbGxzL3F1YXJ0ei9xdWFydHouc3BlYywKCSAgZGxscy9yYXNhcGkzMi9NYWtlZmlsZS5pbiwgZGxscy9yYXNhcGkzMi9yYXNhcGkzMi5zcGVjLAoJICBkbGxzL3JpY2hlZGl0L01ha2VmaWxlLmluLCBkbGxzL3JpY2hlZGl0L3JpY2hlZDMyLnNwZWMsCgkgIGRsbHMvcnBjcnQ0L01ha2VmaWxlLmluLCBkbGxzL3JwY3J0NC9ycGNydDQuc3BlYywKCSAgZGxscy9pbW0zMi9NYWtlZmlsZS5pbiwgZGxscy9pbW0zMi9pbW0zMi5zcGVjLAoJICBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywKCSAgZGxscy9rZXJuZWwvdGVzdHMva2VybmVsMzJfdGVzdC5zcGVjLCBkbGxzL2x6ZXhwYW5kL01ha2VmaWxlLmluLAoJICBkbGxzL2x6ZXhwYW5kL2x6MzIuc3BlYywgZGxscy9tYXBpMzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvbWFwaTMyL21hcGkzMi5zcGVjLCBkbGxzL21wci9NYWtlZmlsZS5pbiwgZGxscy9tcHIvbXByLnNwZWMsCgkgIGRsbHMvbXNhY20vTWFrZWZpbGUuaW4sIGRsbHMvbXNhY20vaW1hYWRwMzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvbXNhY20vaW1hYWRwMzIvaW1hYWRwMzIuYWNtLnNwZWMsIGRsbHMvbXNhY20vbXNhY20zMi5zcGVjLAoJICBkbGxzL21zYWNtL21zZzcxMS9NYWtlZmlsZS5pbiwgZGxscy9tc2FjbS9tc2c3MTEvbXNnNzExLmRydi5zcGVjLAoJICBkbGxzL21zZG1vL01ha2VmaWxlLmluLCBkbGxzL21zZG1vL21zZG1vLnNwZWMsCgkgIGRsbHMvbXNpbWczMi9NYWtlZmlsZS5pbiwgZGxscy9tc2ltZzMyL21zaW1nMzIuc3BlYywKCSAgZGxscy9tc2lzeXMvTWFrZWZpbGUuaW4sIGRsbHMvbXNpc3lzL21zaXN5cy5vY3guc3BlYywKCSAgZGxscy9tc25ldDMyL01ha2VmaWxlLmluLCBkbGxzL21zbmV0MzIvbXNuZXQzMi5zcGVjLAoJICBkbGxzL21zcmxlMzIvTWFrZWZpbGUuaW4sIGRsbHMvbXNybGUzMi9tc3JsZTMyLnNwZWMsCgkgIGRsbHMvbXN2Y3J0L01ha2VmaWxlLmluLCBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYywKCSAgZGxscy9tc3ZjcnQyMC9NYWtlZmlsZS5pbiwgZGxscy9tc3ZjcnQyMC9tc3ZjcnQyMC5zcGVjLAoJICBkbGxzL2F2aWNhcDMyL01ha2VmaWxlLmluLCBkbGxzL2F2aWNhcDMyL2F2aWNhcDMyLnNwZWMsCgkgIGRsbHMvYXZpZmlsMzIvTWFrZWZpbGUuaW4sIGRsbHMvYXZpZmlsMzIvYXZpZmlsMzIuc3BlYywKCSAgZGxscy9jb21jdGwzMi9NYWtlZmlsZS5pbiwgZGxscy9jb21jdGwzMi9jb21jdGwzMi5zcGVjLAoJICBkbGxzL2NvbW1kbGcvTWFrZWZpbGUuaW4sIGRsbHMvY29tbWRsZy9jb21kbGczMi5zcGVjLAoJICBkbGxzL2NydGRsbC9NYWtlZmlsZS5pbiwgZGxscy9jcnRkbGwvY3J0ZGxsLnNwZWMsCgkgIGRsbHMvY3J5cHQzMi9NYWtlZmlsZS5pbiwgZGxscy9jcnlwdDMyL2NyeXB0MzIuc3BlYywKCSAgZGxscy9kY2ltYW4zMi9NYWtlZmlsZS5pbiwgZGxscy9kY2ltYW4zMi9kY2ltYW4zMi5zcGVjLAoJICBkbGxzL2RkcmF3L01ha2VmaWxlLmluLCBkbGxzL2RkcmF3L2RkcmF3LnNwZWMsCgkgIGRsbHMvZGV2ZW51bS9NYWtlZmlsZS5pbiwgZGxscy9kZXZlbnVtL2RldmVudW0uc3BlYywKCSAgZGxscy9kaW5wdXQvTWFrZWZpbGUuaW4sIGRsbHMvZGlucHV0L2RpbnB1dC5zcGVjLAoJICBkbGxzL2RwbGF5L01ha2VmaWxlLmluLCBkbGxzL2RwbGF5L2RwbGF5LnNwZWMsCgkgIGRsbHMvZHBsYXl4L01ha2VmaWxlLmluLCBkbGxzL2RwbGF5eC9kcGxheXguc3BlYywKCSAgZGxscy9kc291bmQvTWFrZWZpbGUuaW4sIGRsbHMvZHNvdW5kL2Rzb3VuZC5zcGVjLAoJICBkbGxzL2dkaS9NYWtlZmlsZS5pbiwgZGxscy9nZGkvZ2RpMzIuc3BlYywgZGxscy9pY21wL01ha2VmaWxlLmluLAoJICBkbGxzL2ljbXAvaWNtcC5zcGVjLCBkbGxzL2ltYWdlaGxwL01ha2VmaWxlLmluLAoJICBkbGxzL2ltYWdlaGxwL2ltYWdlaGxwLnNwZWMsIE1ha2UucnVsZXMuaW4sIE1ha2VmaWxlLmluLAoJICBkZWJ1Z2dlci9NYWtlZmlsZS5pbiwgZGVidWdnZXIvd2luZWRiZy5zcGVjLCBkbGxzL01ha2VkbGwucnVsZXMuaW4sCgkgIGRsbHMvYWR2YXBpMzIvTWFrZWZpbGUuaW4sIGRsbHMvYWR2YXBpMzIvYWR2YXBpMzIuc3BlYzoKCU1vdmVkIGltcG9ydHMgc3BlY2lmaWNhdGlvbiBmcm9tIHRoZSAuc3BlYyBpbnRvIHRoZSBNYWtlZmlsZSBzbyB0aGF0CglpdCBjYW4gYmUgdXNlZCBvbiBwbGF0Zm9ybXMgdGhhdCBkb24ndCBidWlsZCBhIC5zcGVjLmMgZmlsZS4KCjIwMDItMDUtMDggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jOgoJQmlsbCBNZWRsYW5kIDxtZWRiaTAxQGFjY3BhYy5jb20+CglGaXggdGhlIFdpbjMxIHN0eWxlIGZpbGUgZGlhbG9nIGJveC4KCS0gSWYgdGhlcmUgaXMgbm8gZmlsdGVyIGRvbid0IHB1dCBhIGJsYW5rIG9uZSBpbjsgaXQgZG9lc24ndAoJICB3b3JrIChsZWF2ZSBpdCBOVUxMKS4KCS0gQ29ycmVjdGx5IGZpZ3VyZSBvdXQgd2hpY2ggaXMgdGhlIGN1cnJlbnQgZHJpdmUgaW4gdGhlIGNvbWJvIGJveC4KCS0gQWRkIEZJWE1FIGZvciB0aGUgdmFyaWFibGUgImluaXRpYWwgZGlyIiBoYW5kbGluZy4KCgkqIGRvY3VtZW50YXRpb24vY29uZmlndXJpbmcuc2dtbCwgZG9jdW1lbnRhdGlvbi93aW5lLm1hbi5pbiwKCSAgdG9vbHMvYnVnX3JlcG9ydC5wbDoKCUFuZHJpeSBQYWxhbWFyY2h1ayA8YXBhM2FAeWFob28uY29tPgoJRGlyZWN0IGJ1ZyByZXBvcnRzIHRvIFdpbmUgYnVnemlsbGEuIFNvbWUgb3RoZXIgbWlub3IgZG9jdW1lbnRhdGlvbgoJY2hhbmdlcy4KCgkqIGxpYnJhcnkvZXJybm8uYzoKCURvbid0IG5lZWQgdG8gcmVmZXJlbmNlIGV4dGVybmFsIGVycm5vIHNpbmNlIG5vbi1yZWVudHJhbnQgWGxpYiBpcyBubwoJbG9uZ2VyIHN1cHBvcnRlZC4KCgkqIE1ha2VmaWxlLmluLCBwcm9ncmFtcy9NYWtlZmlsZS5pbjoKCVJ1biBtYWtlIHRlc3QgZm9yIGFsbCBwcm9ncmFtcyBieSBkZWZhdWx0LgoKCSogZmlsZXMvZG9zX2ZzLmMsIGZpbGVzL2RyaXZlLmM6CglNaWNoYWVsIFdldGhlcmVsbCA8bWlrZS53ZXRoZXJlbGxAbnRsd29ybGQuY29tPgoJRml4IGhhbmRsaW5nIG9mIHVuaXggYWJzb2x1dGUgcGF0aHMgaW4gRE9TRlNfR2V0RnVsbE5hbWUgYW5kCglHZXRTaG9ydFBhdGhOYW1lQS4KCUhhbmRsZSAnLi4nIGluIHBhdGhzIGluIERSSVZFX0ZpbmREcml2ZVJvb3QuCgoJKiBtZW1vcnkvc2VsZWN0b3IuYywgb2JqZWN0cy9iaXRtYXAuYywgb2JqZWN0cy9kaWIuYzoKCUFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCVJlcGxhY2UgU0VMRUNUT1JfQWxsb2NCbG9jayBhbmQgU0VMRUNUT1JfRnJlZUJsb2NrIHdpdGggc3RhbmRhcmQgV2luMTYKCXNlbGVjdG9yIGNhbGxzLgoKCSogcHJvZ3JhbXMvcmVnYXBpL3JlZ0ZpeGVyLnBsLCBwcm9ncmFtcy9yZWdhcGkvcmVnUmVzdG9yZXIucGwsCgkgIHByb2dyYW1zL3JlZ2FwaS9yZWdTZXQuc2g6CglSYXVsIERpYXMgPGNoYW9zQHN3aS5jb20uYnI+CgktIE1ha2UgcG9zc2libGUgdG8gZGlmZiByZWdpc3RyeSBpbmZvcm1hdGlvbiB0aGF0IGNvbnRhaW5zCgkgIHRpbWVzdGFtcHMuCgktIENyZWF0ZSBzYWZlIHRlbXAgZmlsZXMgaW4gL3RtcC4KCjIwMDItMDUtMDcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYzoKCUZpeGVkIGRsbCBjaGVjayBmb3IgY3lnd2luLgoKCSogd2luZG93cy93aW5wcm9jLmM6CglTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1saW5lLmNvbT4KCUFkZGVkIE5VTEwgcG9pbnRlciBjaGVjayBpbiBDYWxsV2luZG93UHJvYzE2LgoKCSogb2JqZWN0cy9nZGlvYmouYzoKCUZpeGVkIHZpcyByZWdpb24gaGFuZGxpbmcgYnJva2VuIGJ5IGxhc3QgY2hhbmdlLgoKCSogbXNkb3MvZHBtaS5jLCBtc2Rvcy9pbnQyZi5jLCBpbmNsdWRlL2NhbGxiYWNrLmg6CglKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglBZGRlZCBzdXBwb3J0IGZvciBEUE1JIFJhd01vZGVTd2l0Y2guCgoJKiBkbGxzL3R0eWRydi9iaXRtYXAuYywgZGxscy90dHlkcnYvZGMuYywgZGxscy90dHlkcnYvd25kLmMsCgkgIGRsbHMvd2luZXBzL2luaXQuYywgZ3JhcGhpY3MveDExZHJ2L2JpdG1hcC5jLCBncmFwaGljcy94MTFkcnYvaW5pdC5jLAoJICBvYmplY3RzL2RjLmMsIG9iamVjdHMvZ2Rpb2JqLmMsIGRsbHMvZ2RpL3dpbjE2ZHJ2L2luaXQuYzoKCU1vdmVkIHBhcnRzIG9mIHRoZSBEQyBpbml0aWFsaXNhdGlvbiBhbmQgYml0bWFwIHNlbGVjdGlvbiBvdXQgb2YgdGhlCglkcml2ZXJzIGludG8gdGhlIGNvbW1vbiBjb2RlLgoKCSogZGxscy9nZGkvcHJpbnRkcnYuYzoKCUFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCVJlcGxhY2UgRE9TRlNfR2V0RnVsbE5hbWUgd2l0aCB3aW5lX2dldF91bml4X2ZpbGVfbmFtZS4KCgkqIGRsbHMveDExZHJ2L3dpbmRvdy5jOgoJTWljaGFlbCBDYXJkZW5hcyA8bWljaGFlbC5jYXJkZW5hc0BsaW5kb3dzLmNvbT4KCUNhcCB3aW5kb3cgc2l6ZXMgYXQgNjU1MzUuCgoJKiBjb25maWd1cmUuYWMsIGluY2x1ZGUvY29uZmlnLmguaW4sIGNvbmZpZ3VyZToKCUFkZGVkIGNoZWNrIGZvciBzeXMvc3lzY3RsLmguCgoJKiBtZW1vcnkvZ2xvYmFsLmM6CglPbGl2aWVyIEhvdWNoYXJkIDxkb2dpbm91QGNpTy5yZz4KCVN1cHBvcnQgZm9yIGdldHRpbmcgbWVtb3J5IHNpemUgb24gRnJlZUJTRC4KCgkqIGRsbHMvZGlucHV0L2tleWJvYXJkL21haW4uYzoKCU9saXZpZXIgSG91Y2hhcmQgPGRvZ2lub3VAY2lPLnJnPgoJSGFjayB0byBtYWtlIFNldEV2ZW50Tm90aWZpY2F0aW9uIHdvcmsuCgoyMDAyLTA1LTA2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9rZXJuZWwvdGVzdHMvcGF0aC5jOgoJRml4ZWQgaGFuZGxpbmcgb2YgR2V0TG9uZ1BhdGhOYW1lQS4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL2ZpbGUuYzoKCUpha29iIEVyaWtzc29uIDxqYWtvYkB2bWxpbnV4Lm9yZz4KCVRlc3RzIGZvciBfbGNyZWF0LF9sbHNlZWsgYW5kIF9sbG9wZW4gYWRkZWQuCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJU21hbGwgaGFjayB0byBtYWtlIEluc3RhbGxTaGllbGQgdjYgd29yayBiZXR0ZXIuCgoJKiBkbGxzL29sZWF1dDMyL3RtYXJzaGFsLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUJTVFJzIGNhbiBiZSBOVUxMLCBoYW5kbGUgdGhlbSBzZXBlcmF0ZWx5LgoKCSogd2luZG93cy93aW4uYywgZGxscy91c2VyL3VzZXIzMi5zcGVjLCBpbmNsdWRlL3dpbnVzZXIuaDoKCURhdmlkIEhhbW1lcnRvbiA8ZGF2aWRAdHJhbnNnYW1pbmcuY29tPgoJQWRkZWQgaW1wbGVtZW50YXRpb24gb2YgR2V0V2luZG93SW5mby4KCgkqIERFVkVMT1BFUlMtSElOVFM6CglTeWx2YWluIFBldHJlb2xsZSA8c3BldHJlb2xsZUB5YWhvby5mcj4KCVVwZGF0ZSBvZiBERVZFTE9QRVJTLUhJTlRTIHRvIHJlZmxlY3QgdGhlIGN1cnJlbnQgc3RhdGUgb2YgV2luZS4KCjIwMDItMDUtMDUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3dpbmVkb3MvaW50MzEuYywgZGxscy93aW5lZG9zL3dpbmVkb3Muc3BlYzoKCUp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCURPU1ZNIG5vdyBleHBvcnRzIERQTUkgUmF3IE1vZGUgU3dpdGNoIHJvdXRpbmUuCgoJKiBjb25maWd1cmUuYWMsIGluY2x1ZGUvY29uZmlnLmguaW4sIGluY2x1ZGUvd2luZS9wb3J0LmgsIGNvbmZpZ3VyZToKCVN0ZXZlbiBFZHdhcmRzIDxTdGV2ZW5fRWQ0MTUzQHlhaG9vLmNvbT4KCUNoZWNrIGZvciBhbmQgdXNlIGNoc2l6ZSBpbnN0ZWFkIG9mIGZ0cnVuY2F0ZSBpZiBwcmVzZW50LgoKCSogZmlsZXMvZG9zX2ZzLmM6CglKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJRW5zdXJlIGNvcnJlY3QgZnVsbCBwYXRoIHJldHVybmVkIHdoZW4gR2V0RnVsbFBhdGhOYW1lIHN1cHBsaWVkIGEgcGF0aAoJcmVsYXRpdmUgZnJvbSB0aGUgcm9vdCBvZiB0aGUgZHJpdmUgJ2VnICdcd2luZG93c1xzeXN0ZW0nLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIHByb2dyYW1zL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy93aW5lcGF0aC8uY3ZzaWdub3JlLCBwcm9ncmFtcy93aW5lcGF0aC9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvd2luZXBhdGgvd2luZXBhdGguYywgcHJvZ3JhbXMvd2luZXBhdGgvd2luZXBhdGguc3BlYzoKCU1pa2UgV2V0aGVyZWxsIDxtaWtlLndldGhlcmVsbEBudGx3b3JsZC5jb20+CglVdGlsaXR5IHRvIGNvbnZlcnQgYmV0d2VlbiBVbml4IGFuZCBXaW5kb3dzIHBhdGhzIGF0IHRoZSBjb21tYW5kCglsaW5lLgoKCSogZmlsZXMvc21iLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAc3RhcnQuY29tLmF1PgoJSW1wbGVtZW50IE5ldEJJT1MgcmVzb2x1dGlvbiBmb3IgVU5DIHBhdGhuYW1lcy4KCgkqIGRsbHMvd2luZWRvcy9kb3NleGUuaCwgZGxscy93aW5lZG9zL2Rvc3ZtLmMsIGRsbHMvd2luZWRvcy9tb2R1bGUuYzoKCUp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCVRlcm1pbmF0aW5nIERPUyBwcm9ncmFtIGluIHJlYWwgbW9kZSBub3cgY2FsbHMgRXhpdFRocmVhZCB3aGljaCBpcwoJZXhhY3RseSB3aGF0IHRlcm1pbmF0aW5nIGluIHByb3RlY3RlZCBtb2RlIGRvZXMuCgoJKiBkbGxzL3dpbmVkb3MvaW50MjEuYzoKCUp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCVJlYWwgbW9kZSBpbnRlcnJ1cHQgaGFuZGxlciBub3cgaGFuZGxlcyBpbnRlcnJ1cHQgMjEgZnVuY3Rpb24gMEMuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bF9KYS5yYywgZGxscy9jb21jdGwzMi9yc3JjLnJjLAoJICBkbGxzL2tlcm5lbC9ubHMvanBuLm5scywgZGxscy9tc2FjbS9pbWFhZHAzMi9pbWFhZHAzMi5hY20uc3BlYywKCSAgZGxscy9tc2FjbS9pbWFhZHAzMi9pbWFhZHAzMi5jLCBkbGxzL21zYWNtL21zZzcxMS9tc2c3MTEuYywKCSAgZGxscy9tc2FjbS9tc2c3MTEvbXNnNzExLmRydi5zcGVjLCBkbGxzL21zcmxlMzIvbXNybGUzMi5jLAoJICBkbGxzL21zcmxlMzIvbXNybGUzMi5zcGVjLCBkbGxzL29sZWF1dDMyL01ha2VmaWxlLmluLAoJICBkbGxzL29sZWF1dDMyL2Rpc3BzdGQuYywgZGxscy9vbGVhdXQzMi9kaXNwdHlwZS5jLAoJICBkbGxzL29sZWF1dDMyL29sZTJkaXNwLmMsIGRsbHMvb2xlYXV0MzIvcHJvcGVydHlmcmFtZS5jLAoJICBkbGxzL29sZWF1dDMyL3N0dWJzLmMsIGRsbHMvc2hkb2N2dy9NYWtlZmlsZS5pbiwgZGxscy9zaGRvY3Z3L2FwaS5jLAoJICBkbGxzL3NoZG9jdncvYnJvd3Nlci5jLCBkbGxzL3NoZG9jdncvY2xhc3NpbmZvLmMsCgkgIGRsbHMvc2hkb2N2dy9jb21pbXBsLmMsIGRsbHMvc2hkb2N2dy9jb21pbXBsLmgsCgkgIGRsbHMvc2hkb2N2dy9jb25uZWN0LmMsIGRsbHMvc2hkb2N2dy9ldmVudHMuYywKCSAgZGxscy9zaGRvY3Z3L2ZhY3RvcnkuYywgZGxscy9zaGRvY3Z3L21pc2MuYywKCSAgZGxscy9zaGRvY3Z3L29sZW9iamVjdC5jLCBkbGxzL3NoZG9jdncvcGVyc2lzdC5jLAoJICBkbGxzL3NoZG9jdncvc2hkb2N2dy5jLCBkbGxzL3NoZG9jdncvc2hkb2N2dy5oLAoJICBkbGxzL3NoZG9jdncvc2hkb2N2dy5zcGVjLCBkbGxzL3NoZG9jdncvc2hkb2N2d19tYWluLmMsCgkgIGRsbHMvc2hkb2N2dy93ZWJicm93c2VyLmMsIGRsbHMvdXJsbW9uL01ha2VmaWxlLmluLAoJICBkbGxzL3VybG1vbi9jb21pbXBsLmMsIGRsbHMvdXJsbW9uL2NvbWltcGwuaCwgZGxscy91cmxtb24vbW9uaWtlci5jLAoJICBkbGxzL3VybG1vbi91bW9uLmMsIGRsbHMvdXJsbW9uL3VybG1vbi5zcGVjLAoJICBkbGxzL3VybG1vbi91cmxtb25fbWFpbi5jLCBkbGxzL3dpbm1tL3dpbm1tX0phLnJjLAoJICBkbGxzL3dpbm1tL3dpbm1tX3Jlcy5yYywgZG9jdW1lbnRhdGlvbi9zYW1wbGVzL3N5c3RlbS5pbmksCgkgIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvZHNvdW5kLmgsIGluY2x1ZGUvZHZkbWVkaWEuaCwKCSAgaW5jbHVkZS93aW5lL29ial9rc3Byb3BlcnR5LmgsIGRsbHMvYXZpY2FwMzIvYXZpY2FwMzIuc3BlYywKCSAgZGxscy9hdmljYXAzMi9hdmljYXAzMl9tYWluLmM6CglSZW1vdmVkIG1vcmUgY29kZSBhdCBIaWRlbm9yaSdzIHJlcXVlc3QuCgoyMDAyLTA1LTA0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZG9jdW1lbnRhdGlvbi9idWdzLnNnbWwsIGRvY3VtZW50YXRpb24vd2luZS5tYW4uaW4sIEJVR1MsIFJFQURNRToKCUFuZHJpeSBQYWxhbWFyY2h1ayA8YXBhM2FAeWFob28uY29tPgoJVXBkYXRlZCBkb2N1bWVudGF0aW9uLCBtb3N0bHkgaW1wcm92aW5nIGJ1Z3MgaGFuZGxpbmcuIERpcmVjdCB1c2VycyB0bwoJQnVnemlsbGEuCgoJKiBpbmNsdWRlL2FzeW5jLmgsIGluY2x1ZGUvd2lubnQuaCwgbWVtb3J5L3NlbGVjdG9yLmMsCgkgIHNjaGVkdWxlci9zeXNkZXBzLmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMTYuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJTVMgQyByZWxhdGVkIGNoYW5nZXMuCgoJKiBncmFwaGljcy94MTFkcnYvZGliLmM6CglEYXZpZCBIYW1tZXJ0b24gPGRhdmlkQHRyYW5zZ2FtaW5nLmNvbT4KCUluIGluaXRpYWwgZGlic2VjdGlvbiBjcmVhdGlvbiwgdGhlIGRpYnNlY3Rpb24gc2hvdWxkIGFsd2F5cyBiZSBpbgoJYXBwbW9kIGJlY2F1c2UgdGhlIGFwcCBtZW1vcnkgaXMgaW5pdGlhbGl6ZWQgdG8gemVybyBpZiBubwoJb2Zmc2V0L3NlY3Rpb24gaXMgc3BlY2lmaWVkLCB3aGlsZSB0aGUgRElCaXRtYXAgaXMgbm90LgoKCSogdG9vbHMvd2luZWluc3RhbGw6CglBbmRyaXkgUGFsYW1hcmNodWsgPGFwYTNhQHlhaG9vLmNvbT4KCU1hZGUgd2luZWluc3RhbGwgdG8gY3JlYXRlIHN5bWJvbGljIGxpbmtzIHRvIFdpbmUgYXBwbGljYXRpb25zIGluIGZha2UKCVdpbmRvd3MgZm9sZGVycy4gUmVwbGFjZWQgdXNhZ2Ugb2Ygb2Jzb2xldGUgcmVnYXBpIHdpdGggcmVnZWRpdC4KCgkqIHByb2dyYW1zL3JlZ2VkaXQvcmVnZWRpdC5jOgoJQW5kcml5IFBhbGFtYXJjaHVrIDxhcGEzYUB5YWhvby5jb20+CglGaXhlZCBhIHByb2JsZW0gd2hlbiByZWdlZGl0IGludGVycHJldGVkIGZpbGUgbmFtZXMsIHN0YXJ0aW5nIGZyb20gJy8nCglhcyBzd2l0Y2hlcy4KCgkqIHByb2dyYW1zL3djbWQvYnVpbHRpbnMuYywgcHJvZ3JhbXMvd2NtZC93Y21kLmgsCgkgIHByb2dyYW1zL3djbWQvd2NtZG1haW4uYywgcHJvZ3JhbXMvd2NtZC93Y21kcmMucmM6CglKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJQWRkIHN1cHBvcnQgZm9yIHRoZSAndGl0bGUnIGNvbW1hbmQuCgoJKiBmaWxlcy9kb3NfZnMuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRmluZENsb3NlOiBwcm90ZWN0IHRoZSBHbG9iYWxMb2NrIGZvciBwYWdlZmF1bHRzIHRvby4KCgkqIHRvb2xzL3dyYy9uZXdzdHJ1Yy5jOgoJV2FycmVuIEJhaXJkIDxXYXJyZW5fQmFpcmRAY2ltbWV0cnkuY29tPgoJU29sdmUgYWxpZ25tZW50IHByb2JsZW1zIGJ5IGNvbnZlcnRpbmcgYml0bWFwIGhlYWRlcnMgKmFmdGVyKiB0aGV5CgloYXZlIGJlZW4gY29waWVkIGludG8gYW4gYWxpZ25lZCBsb2NhdGlvbiwgYW5kIHRoZW4gY29weWluZyB0aGUKCWNvbnZlcnRlZCBoZWFkZXIgYmFjayBvdmVyIHRoZSBvcmlnaW5hbCBoZWFkZXIuCgoJKiBkbGxzL3gxMWRydi94cmVuZGVyLmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglEZXRlY3QgYW5kIHdhcm4gYWJvdXQgYnVnZ3kgdmVyc2lvbnMgb2YgbGliWHJlbmRlci4KCjIwMDItMDUtMDIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL2NvbG9yLmgsIG9iamVjdHMvY29sb3IuYywgb2JqZWN0cy9wYWxldHRlLmMsCgkgIHdpbmRvd3MvY3Vyc29yaWNvbi5jLCBkbGxzL3R0eWRydi9kYy5jLCBkbGxzL3R0eWRydi9wYWxldHRlLmMsCgkgIGRsbHMvdHR5ZHJ2L3R0eWRydi5oLCBncmFwaGljcy94MTFkcnYvYnJ1c2guYywKCSAgZ3JhcGhpY3MveDExZHJ2L3BhbGV0dGUuYzoKCUNsZWFuZWQgdXAgc29tZSBpbnRlci1kbGwgZGVwZW5kZW5jaWVzIGluIHBhbGV0dGUgbWFuYWdlbWVudC4KCgkqIHRvb2xzL3dpbmVpbnN0YWxsOgoJRHVzdGluIE5hdmVhIDxzcGVlZGR5bW9uQHlhaG9vLmNvbT4KCUNoYW5nZWQgYnVnIHJlcG9ydCBhZGRyZXNzLgoKCSogZGxscy9jb21jdGwzMi9zdGF0dXMuYzoKCUJpbGwgTWVkbGFuZCA8bWVkYmkwMUBhY2NwYWMuY29tPgoJTW92ZWQgZHJhd2luZyBvZiBvd25lci1kcmF3biBwYXJ0cyB0byBhZnRlciB0aGUgYmFja2dyb3VuZCBhbmQgZWRnZS4KCUFsc28gYWRkZWQgc29tZSBpbmRlbnRhdGlvbiB0byB0aGUgY29kZS4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbHRpcHMuYzoKCUNocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCVRPT0xUSVBTX0dldFRpcFRleHQ6IEFjY2VwdCBudWxsIG1vZHVsZSBpbnN0YW5jZSwgTG9hZHN0cmluZyBjYW4KCWhhbmRsZSBpdC4KCgkqIE1ha2VmaWxlLmluLCBwcm9ncmFtcy9NYWtlZmlsZS5pbjoKCUluc3RhbGwgbW9yZSBvZiB0aGUgV2luZWxpYiBwcm9ncmFtcyBieSBkZWZhdWx0IChiYXNlZCBvbiBhIHBhdGNoIGJ5CglBbmRyaXkgUGFsYW1hcmNodWspLgoKCSogcHJvZ3JhbXMvd2luaGVscC9NYWtlZmlsZS5pbjoKCUFuZHJpeSBQYWxhbWFyY2h1ayA8YXBhM2FAeWFob28uY29tPgoJRG8gbm90IGluc3RhbGwgaGxwMnNnbWwuCgoJKiBkbGxzL3R0eWRydi9kYy5jLCBkbGxzL3R0eWRydi90dHlkcnYuaCwgZGxscy90dHlkcnYvdHR5ZHJ2LnNwZWMsCgkgIGRsbHMvd2luZXBzL2JpdGJsdC5jLCBkbGxzL3dpbmVwcy9iaXRtYXAuYywgZGxscy93aW5lcHMvY2xpcHBpbmcuYywKCSAgZGxscy93aW5lcHMvZm9udC5jLCBkbGxzL3dpbmVwcy9ncmFwaGljcy5jLCBkbGxzL3dpbmVwcy9wZW4uYywKCSAgZGxscy93aW5lcHMvcHNkcnYuaCwgZGxscy93aW5lcHMvdGV4dC5jLCBkbGxzL3dpbmVwcy93aW5lcHMuc3BlYywKCSAgZGxscy94MTFkcnYveDExZHJ2LnNwZWMsIGdyYXBoaWNzL3gxMWRydi9jbGlwcGluZy5jLCBpbmNsdWRlL2dkaS5oLAoJICBpbmNsdWRlL3gxMWRydi5oLCBvYmplY3RzL2NsaXBwaW5nLmM6CglSZW1vdmVkIHNvbWUgZGlyZWN0IGFjY2Vzc2VzIHRvIHRoZSBEQyBzdHJ1Y3R1cmUuCgoJKiBpbmNsdWRlL2RzaG93Lmg6IENvbW1lbnRlZCBvdXQgcmVtb3ZlZCBoZWFkZXJzLgoKCSogZGxscy9hdmlmaWwzMi9NYWtlZmlsZS5pbiwgZGxscy9hdmlmaWwzMi9hcGkuYywKCSAgZGxscy9hdmlmaWwzMi9hdmlmaWwzMi5zcGVjLCBkbGxzL2F2aWZpbDMyL2F2aWZpbGUuYywKCSAgZGxscy9hdmlmaWwzMi9hdmlmaWxlX3ByaXZhdGUuaCwgZGxscy9hdmlmaWwzMi9jb21lbnRyeS5jLAoJICBkbGxzL2F2aWZpbDMyL2lhZmlsZS5jLCBkbGxzL2F2aWZpbDMyL2lhc3RyZWFtLmMsCgkgIGRsbHMvYXZpZmlsMzIvaWdmcmFtZS5jLCBkbGxzL2F2aWZpbDMyL21haW4uYywKCSAgZGxscy9hdmlmaWwzMi9zdHJpbmcuYywgZGxscy9pbW0zMi9pbW0uYywgZGxscy9pbW0zMi9pbW0zMi5zcGVjLAoJICBkbGxzL2ltbTMyL2ltbWRkay5oLCBkbGxzL3F1YXJ0ei9NYWtlZmlsZS5pbiwgZGxscy9xdWFydHovUkVBRE1FLAoJICBkbGxzL3F1YXJ0ei9hY213cmFwLmMsIGRsbHMvcXVhcnR6L2FtdW5kb2MuYywgZGxscy9xdWFydHovYXN5bmNzcmMuYywKCSAgZGxscy9xdWFydHovYXN5bmNzcmMuaCwgZGxscy9xdWFydHovYXVkaW91dGwuYywKCSAgZGxscy9xdWFydHovYXVkaW91dGwuaCwgZGxscy9xdWFydHovYXVkcmVuLmMsIGRsbHMvcXVhcnR6L2F1ZHJlbi5oLAoJICBkbGxzL3F1YXJ0ei9hdmlkZWMuYywgZGxscy9xdWFydHovYXZpcGFyc2UuYywgZGxscy9xdWFydHovYmFzZWZpbHQuYywKCSAgZGxscy9xdWFydHovYmFzZWZpbHQuaCwgZGxscy9xdWFydHovYmFzZXBpbi5jLAoJICBkbGxzL3F1YXJ0ei9jYXBncmFwaC5jLCBkbGxzL3F1YXJ0ei9jYXBncmFwaC5oLAoJICBkbGxzL3F1YXJ0ei9jb21wbGlzdC5jLCBkbGxzL3F1YXJ0ei9jb21wbGlzdC5oLCBkbGxzL3F1YXJ0ei9jc2NvbnYuYywKCSAgZGxscy9xdWFydHovZGV2ZW51bS5jLCBkbGxzL3F1YXJ0ei9kZXZlbnVtLmgsIGRsbHMvcXVhcnR6L2VudW11bmsuYywKCSAgZGxscy9xdWFydHovZW51bXVuay5oLCBkbGxzL3F1YXJ0ei9mZ2V2ZW50LmMsIGRsbHMvcXVhcnR6L2ZncGFzcy5jLAoJICBkbGxzL3F1YXJ0ei9mZ3JhcGguYywgZGxscy9xdWFydHovZmdyYXBoLmgsIGRsbHMvcXVhcnR6L2ZpbGVzaW5rLmMsCgkgIGRsbHMvcXVhcnR6L2ZpbGVzaW5rLmgsIGRsbHMvcXVhcnR6L2ZtYXAuYywgZGxscy9xdWFydHovZm1hcC5oLAoJICBkbGxzL3F1YXJ0ei9pZmdyYXBoLmMsIGRsbHMvcXVhcnR6L2lqZ2RlYy5jLCBkbGxzL3F1YXJ0ei9pamdkZWMuaCwKCSAgZGxscy9xdWFydHovaW1jbnRsLmMsIGRsbHMvcXVhcnR6L2ltZmlsdGVyLmMsIGRsbHMvcXVhcnR6L2ltcG9zLmMsCgkgIGRsbHMvcXVhcnR6L2ltc2Vlay5jLCBkbGxzL3F1YXJ0ei9pdW5rLmMsIGRsbHMvcXVhcnR6L2l1bmsuaCwKCSAgZGxscy9xdWFydHovbWFpbi5jLCBkbGxzL3F1YXJ0ei9tZW1hbGxvYy5jLCBkbGxzL3F1YXJ0ei9tZW1hbGxvYy5oLAoJICBkbGxzL3F1YXJ0ei9taWRwYXJzZS5jLCBkbGxzL3F1YXJ0ei9tanBnZGVjLmMsIGRsbHMvcXVhcnR6L21wYWRlYy5jLAoJICBkbGxzL3F1YXJ0ei9tcGdwYXJzZS5jLCBkbGxzL3F1YXJ0ei9tcHZkZWMuYywgZGxscy9xdWFydHovbXR5cGUuYywKCSAgZGxscy9xdWFydHovbXR5cGUuaCwgZGxscy9xdWFydHovcGFyc2VyLmMsIGRsbHMvcXVhcnR6L3BhcnNlci5oLAoJICBkbGxzL3F1YXJ0ei9xdGRlYy5jLCBkbGxzL3F1YXJ0ei9xdHBhcnNlLmMsIGRsbHMvcXVhcnR6L3F1YXJ0ei5zcGVjLAoJICBkbGxzL3F1YXJ0ei9xdWFydHpfcHJpdmF0ZS5oLCBkbGxzL3F1YXJ0ei9yZWdzdnIuYywKCSAgZGxscy9xdWFydHovcmVnc3ZyLmgsIGRsbHMvcXVhcnR6L3NhbXBsZS5jLCBkbGxzL3F1YXJ0ei9zYW1wbGUuaCwKCSAgZGxscy9xdWFydHovc2Vla3Bhc3MuYywgZGxscy9xdWFydHovc2Vla3Bhc3MuaCwKCSAgZGxscy9xdWFydHovc3lzY2xvY2suYywgZGxscy9xdWFydHovc3lzY2xvY2suaCwKCSAgZGxscy9xdWFydHovdmlkZW9ibHQuYywgZGxscy9xdWFydHovdmlkZW9ibHQuaCwgZGxscy9xdWFydHovdmlkcmVuLmMsCgkgIGRsbHMvcXVhcnR6L3ZpZHJlbi5oLCBkbGxzL3F1YXJ0ei93YXZwYXJzZS5jLCBkbGxzL3F1YXJ0ei94Zm9ybS5jLAoJICBkbGxzL3F1YXJ0ei94Zm9ybS5oLCBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL2FtYXVkaW8uaCwKCSAgaW5jbHVkZS9hbXZpZGVvLmgsIGluY2x1ZGUvY29udHJvbC5oLCBpbmNsdWRlL2Vycm9ycy5oLAoJICBpbmNsdWRlL2V2Y29kZS5oLCBpbmNsdWRlL3N0cm1pZi5oLCBvbGUvdXVpZC5jLCBkbGxzL01ha2VmaWxlLmluLAoJICB3aW5lZGVmYXVsdC5yZWc6CglSZW1vdmVkIGEgYnVuY2ggb2YgbXVsdGltZWRpYSBjb2RlIGF0IEhpZGVub3JpJ3MgcmVxdWVzdC4KCgkqIGluY2x1ZGUvdXVpZHMuaCwgaW5jbHVkZS92Zndtc2dzLmgsIGluY2x1ZGUvd2lucmVzcmMuaDoKCVJld3JvdGUgc29tZSBoZWFkZXJzIGZyb20gc2NyYXRjaCB0byBhdm9pZCBFVUxBL3BhdGVudCBjb25jZXJucy4KCjIwMDItMDUtMDEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL250ZGxsL2Nkcm9tLmMsIGZpbGVzL2RyaXZlLmMsIGluY2x1ZGUvY29uZmlnLmguaW4sIGNvbmZpZ3VyZSwKCSAgY29uZmlndXJlLmFjOgoJUml6c2FueWkgWnNvbHQgPHJpenNhbnlpQG15cmVhbGJveC5jb20+CglJbXBsZW1lbnRlZCBJT0NUTF9TQ1NJX0dFVF9BRERSRVNTIGZvciBub24gdHJ1ZSBzY3NpIGNkcm9tIGRyaXZlcwoJKG9ubHkgb24gbGludXgpLgoJSW5pdGlhbGl6ZSByZWdpc3RyeSB1bmRlciBIS0VZX0xPQ0FMX01BQ0hJTkUvSEFSRFdBUkUvREVWSUNFTUFQL1Njc2kuCglBZGRlZCBJT0NUTF9DRFJPTV9NRURJQV9SRU1PVkFMIHN1cHBvcnQuCgoJKiBkbGxzL250ZGxsL250LmM6CglMYXVyZW50IFBpbmNoYXJ0IDxsYXVyZW50LnBpbmNoYXJ0QHNreW5ldC5iZT4KCUZpeGVkIE50UXVlcnlJbmZvcm1hdGlvblByb2Nlc3MgdG8gcmV0dXJuIGNvcnJlY3QgaW5mb3JtYXRpb24gYW5kCgllcnJvciBjb2RlIGZvciBQcm9jZXNzRGVidWdQb3J0IHdoZW4gbm8gZGVidWdnZXIgaXMgYXR0YWNoZWQuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9udGRsbC9jZHJvbS5jLCBpbmNsdWRlL2NvbmZpZy5oLmluLAoJICBpbmNsdWRlL250ZGRzY3NpLmg6CglMYXVyZW50IFBpbmNoYXJ0IDxsYXVyZW50LnBpbmNoYXJ0QHNreW5ldC5iZT4KCUltcGxlbWVudGF0aW9uIG9mIElPQ1RMX1NDU0lfUEFTU19USFJPVUdIIGFuZAoJSU9DVExfU0NTSV9QQVNTX1RIUk9VR0hfRElSRUNULgoKCSogaW5jbHVkZS93aW5kZWYuaCwgZGVidWdnZXIvaGFzaC5jLCBkZWJ1Z2dlci9tc2MuYywgZGVidWdnZXIvc291cmNlLmMsCgkgIGRlYnVnZ2VyL3N0YWJzLmMsIGRsbHMvbXN2Y3J0L2Rpci5jLCBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYzoKCUF0dGVtcHQgYXQgZml4aW5nIE1BWF9QQVRIIGlzc3VlcyBmb3IgbWluZ3cuCgoJKiB0b29scy93aW5lc2hlbGxsaW5rOgoJTWljaGFlbCBDYXJkZW5hcyA8bWljaGFlbC5jYXJkZW5hc0BsaW5kb3dzLmNvbT4KCUZpeGVkIHF1b3Rpbmcgb2YgS0RFIGRlc2t0b3AgZW50cnkuCgoJKiBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jLCBpbmNsdWRlL2Rzb3VuZC5oOgoJSm9oYW4gR2lsbCA8am9oYW5lQGx5c2F0b3IubGl1LnNlPgoJRGlyZWN0U291bmRFbnVtZXJhdGVBKCkgbm93IHBhc3NlcyBhIEdVSUQgdG8gdGhlIGNhbGxiYWNrIGlmIHRoZSBmaXJzdAoJY2FsbCByZXR1cm5lZCBUUlVFLgoKCSogd2luMzIvZWRpdGxpbmUuYzoKCUphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglDb3JyZWN0IGJlaGF2aW91ciBvZiBERUwga2V5IGJhY2sgdG8gZGVsZXRpbmcgdGhlIGN1cnJlbnQgY2hhcmFjdGVyLgoKCSogZGxscy93aW5lZG9zL21vZHVsZS5jOgoJSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJV2hlbiBET1MgcHJvZ3JhbSBleGVjdXRlcyBhbm90aGVyIERPUyBwcm9ncmFtLCBjb21tYW5kIGxpbmUgaXMgbm93CglwYXNzZWQgY29ycmVjdGx5LiBJZiBET1MgY29tbWFuZCBsaW5lIGlzIHRvbyBsb25nLCBjb21tYW5kIGxpbmUgaXMgbm93Cgl0cnVuY2F0ZWQgaW5zdGVhZCBvZiBsZXR0aW5nIGl0IHRyYXNoIG1lbW9yeS4KCjIwMDItMDQtMzAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW4zMi9lZGl0bGluZS5jOgoJSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCS0gQWRkZWQgZjggKGhpc3RvcnkgcmV0cmlldmFsIGZyb20gcGFydGlhbCBjb21tYW5kKSBzdXBwb3J0CgktIERlbGV0ZSBrZXkgZGVsZXRlcyBjdXJyZW50IGNoYXJhY3RlcgoJLSBDdHJsICsgZW5kIGRlbGV0ZXMgdG8gZW5kIG9mIGxpbmUKCS0gQ3RybCArIHJpZ2h0IHN0b3BwZWQgYmVmb3JlIHRoZSB3b3JkIGl0c2VsZgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMveDExZHJ2Ly5jdnNpZ25vcmUsCgkgIGRsbHMveDExZHJ2L01ha2VmaWxlLmluLCBkbGxzL3gxMWRydi9jbGlwYm9hcmQuYywKCSAgZGxscy94MTFkcnYvZXZlbnQuYywgZGxscy94MTFkcnYva2V5Ym9hcmQuYywKCSAgZGxscy94MTFkcnYvd2luZWNsaXBzcnYuYywgZG9jdW1lbnRhdGlvbi9jb25maWd1cmluZy5zZ21sLAoJICBkb2N1bWVudGF0aW9uL3BhY2thZ2luZy5zZ21sOgoJTW92ZWQgcmVtYWluaW5nIGZpbGVzIGluIHdpbmRvd3MveDExZHJ2IHRvIGRsbHMveDExZHJ2LgoKMjAwMi0wNC0yOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBwcm9ncmFtcy9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvcmVnc3ZyMzIvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvcmVnc3ZyMzIvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL3JlZ3N2cjMyL3JlZ3N2cjMyLmMsIHByb2dyYW1zL3JlZ3N2cjMyL3JlZ3N2cjMyLnNwZWM6CglBbmRyaXkgUGFsYW1hcmNodWsgPGFwYTNhQHlhaG9vLmNvbT4KCUltcGxlbWVudGVkIHJlZ3N2cjMyIHRvb2wuIEJhc2VkIG9uIFJlYWN0T1MgaW1wbGVtZW50YXRpb24uCgoJKiBwcm9ncmFtcy93Y21kL2J1aWx0aW5zLmMsIHByb2dyYW1zL3djbWQvZGlyZWN0b3J5LmM6CglKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJLSBTdXBwb3J0IGZvciBkaXIgL3cgYW5kIC9iIGZsYWdzCgktIEZpeGVkIGEgY291cGxlIG9mIHVuY2xvc2VkIEZpbmRGaXJzdC9GaW5kTmV4dCBwYWlycwoKCSogZGxscy9pbW0zMi9pbW1fcHJpdmF0ZS5oLCBkbGxzL2ltbTMyL2ltbWRkay5oLCBkbGxzL2ltbTMyL21haW4uYywKCSAgZGxscy9pbW0zMi9tZW1vcnkuYywgZGxscy9pbW0zMi9zdHJpbmcuYywgZGxscy9pbW0zMi9NYWtlZmlsZS5pbiwKCSAgZGxscy9pbW0zMi9pbWMuYywgZGxscy9pbW0zMi9pbWVrbC5jLCBkbGxzL2ltbTMyL2ltZXduZC5jLAoJICBkbGxzL2ltbTMyL2ltbS5jOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCVJlbW92ZWQgc29tZSBjb2RlIGJlY2F1c2Ugb2YgTVMgRVVMQSBjb25jZXJucy4KCVJld3JvdGUgc3R1YnMuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCU1hcmNvIEJpenphcnJpIDxtLmJpenphcnJpQGljdWJlLml0PgoJSW1wbGVtZW50ZWQgdGhlIFRCX1JFUExBQ0VCSVRNQVAgbWVzc2FnZS4KCgkqIHNjaGVkdWxlci9wcm9jZXNzLmM6CglEb24ndCBwcmVwZW5kICctLScgdG8gdGhlIGNvbW1hbmQgbGluZSB3aGVuIHN0YXJ0aW5nIGEgV2luZG93cyBiaW5hcnkuCgoJKiB0b29scy93aW5lc2hlbGxsaW5rOgoJRHVzdGluIE5hdmVhIDxzcGVlZGR5bW9uQHlhaG9vLmNvbT4KCVdyaXRlIG1lbnUgaW5mb3JtYXRpb24gdG8gL3Vzci9saWIvbWVudS93aW5lLgoJVHJ5IHRvIGF1dG9kZXRlY3QgS0RFIHZlcnNpb24gdXNpbmcga2RlLWNvbmZpZy4KCgkqIGRsbHMvYWR2YXBpMzIvY3J5cHQuYywgZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYywKCSAgZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jLCBkbGxzL2NyeXB0MzIvY3J5cHQzMi5zcGVjLAoJICBkbGxzL2dkaS9wcmludGRydi5jLCBkbGxzL21zdmNydC9maWxlLmMsIGRsbHMvcmljaGVkaXQvcmljaGVkaXQuYywKCSAgZGxscy9zaGVsbDMyL3NocG9saWN5LmMsIGRsbHMvd2luaW5ldC9odHRwLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgaXNzdWVzIGZvdW5kIGJ5IHdpbmFwaV9jaGVjay4KCgkqIHRvb2xzL3dpbmFwaS93aW5hcGlfY2hlY2tfb3B0aW9ucy5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMuZGF0LAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvY29tY3RsMzIuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvY3J5cHQzMi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9nZGkzMi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9tc2lzeXMuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvdXJsbW9uLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3dzMl8zMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfY2hlY2ssCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfb3B0aW9ucy5wbSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9wYXJzZXIucG06CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gQVBJIGZpbGVzIHVwZGF0ZS4KCS0gRml4ZWQgcGFyc2VyIHRvIGhhbmRsZSBDL0MrKyBjb21tZW50cyBpbiBzdHJpbmdzLgoJLSBSZXBvcnQgaWYgQysrIGNvbW1lbnRzIGFyZSB1c2VkLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvc25tcGFwaS8uY3ZzaWdub3JlLAoJICBkbGxzL3NubXBhcGkvTWFrZWZpbGUuaW4sIGRsbHMvc25tcGFwaS9tYWluLmMsCgkgIGRsbHMvc25tcGFwaS9zbm1wYXBpLnNwZWM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCVN0dWIgaW1wbGVtZW50YXRpb24gb2YgU05NUEFQSS5ETEwuCgoJKiBpbmNsdWRlL3dpbm50LmgsIHNjaGVkdWxlci9zeXNkZXBzLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCU1pY3Jvc29mdCBDIHJlbGF0ZWQgY2hhbmdlcy4KCgkqIGRsbHMvcXVhcnR6L1JFQURNRSwgZGxscy9xdWFydHovYXN5bmNzcmMuYywgZGxscy9xdWFydHovYXN5bmNzcmMuaDoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglSZWltcGxlbWVudGVkIHRoZSBhc3luY2hyb25vdXMgc291cmNlIGZpbHRlci4KCgkqIGRsbHMva2VybmVsL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC90ZXN0cy8uY3ZzaWdub3JlLAoJICBkbGxzL2tlcm5lbC90ZXN0cy9maWxlLmM6CglKYWtvYiBFcmlrc3NvbiA8amFrb2JAdm1saW51eC5vcmc+CglBZGRlZCB1bml0IHRlc3RzIGZvciBmaWxlIGZ1bmN0aW9ucy4KCgkqIHByb2dyYW1zL3djbWQvYnVpbHRpbnMuYzoKCUphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglFbXVsYXRlIHRoZSBkb3MgY21kICdjbHMnLgoKCSogZGxscy93aW5lZG9zL3htcy5jOiBKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglXaGVuIGZyZWVpbmcgWE1TIG1lbW9yeSBibG9jaywgcmV0dXJuIGFuIGVycm9yIGlmIGJsb2NrIGhhcyBub3QgYmVlbgoJcHJldmlvdXNseSBhbGxvY2F0ZWQuCgoJKiBkbGxzL3R3YWluL2RzbV9jdHJsLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU1ha2UgdHdhaW4gY29tcGlsZSBhZ2Fpbi4KCgkqIGRsbHMvY29tY3RsMzIvc3RhdHVzLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIFN0YXR1c0JhciBTZXRUZXh0IGFnYWluLCBhZGRlZCBzb21lIGNvbW1lbnRzLgoKMjAwMi0wNC0yNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHRvb2xzL01ha2VmaWxlLmluLCB0b29scy93aW5lYnVpbGQvTWFrZWZpbGUuaW4sCgkgIHRvb2xzL3dpbmVkdW1wL01ha2VmaWxlLmluLCB0b29scy93bWMvTWFrZWZpbGUuaW4sCgkgIHRvb2xzL3dyYy9NYWtlZmlsZS5pbiwgTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLAoJICBzZXJ2ZXIvTWFrZWZpbGUuaW46CglMaW5rIHRoZSB0b29scyBhbmQgdGhlIHNlcnZlciBhZ2FpbnN0IGxpYndpbmUgc28gd2UgY2FuIHVzZSB0aGUKCXBvcnRhYmlsaXR5IGZ1bmN0aW9ucyBpbiB0aGVyZS4KCgkqIGRlYnVnZ2VyL2RiZy55LCBkbGxzL2NvbWN0bDMyL2lwYWRkcmVzcy5jLCBkbGxzL3F1YXJ0ei9pamdkZWMuYywKCSAgZGxscy90d2Fpbi9kc19jdHJsLmMsIGRsbHMvdHdhaW4vdHdhaW4uaDoKCUZpeGVkIHdhcm5pbmdzLgoKCSogaW5jbHVkZS9tc3ZjcnQvc3lzL3N0YXQuaDogRnJlZUJTRCBjb21waWxlIGZpeC4KCgkqIGRsbHMvd2luc29jay9NYWtlZmlsZS5pbiwgZGxscy93aW5zb2NrL3Rlc3RzLy5jdnNpZ25vcmUsCgkgIGRsbHMvd2luc29jay90ZXN0cy9zb2NrLmMsIGRsbHMvd2luc29jay90ZXN0cy93czJfMzJfdGVzdC5zcGVjOgoJTWFydGluIFdpbGNrIDxNYXJ0aW4uV2lsY2tAZnVqaXRzdS1zaWVtZW5zLmNvbT4KCUFkZGVkIHVuaXQgdGVzdCBmb3Igd2luc29jay4KCgkqIHNlcnZlci9zb2NrLmM6CglNYXJ0aW4gV2lsY2sgPE1hcnRpbi5XaWxja0BmdWppdHN1LXNpZW1lbnMuY29tPgoJRml4ZXMgdG8gRkRfQ0xPU0UgaGFuZGxpbmcuCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmM6CglNYXJ0aW4gV2lsY2sgPE1hcnRpbi5XaWxja0BmdWppdHN1LXNpZW1lbnMuY29tPgoJU09fT1BFTlRZUEUgaGFzIHRvIGJlIGEgcGVyLXRocmVhZCBzZXR0aW5nLgoKCSogcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS9hZHZhcGkzMi5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS9hdmljYXAzMi5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS9nZGkzMi5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS9pbW0zMi5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS9rZXJuZWwzMi5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS9tc2ltZzMyLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL21zaXN5c19vY3gucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvb2xlMzIucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvb2xlYXV0MzIucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvcnBjcnQ0LnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL3NldHVwYXBpLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL3NldHVwYXBpX2gucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvc2hkb2N2dy5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS9zaGVsbDMyLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL3NobHdhcGkucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvdXJsbW9uLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL3dpbmVhcnRzX2Rydi5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS93aW5nZGkucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvd2luaW5ldC5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS93aW5udC5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS93aW5zcG9vbF9kcnYucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvd2ludXNlci5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS93czJfMzIucG06CglVcGRhdGVkIG1vZHVsZSBkZWZpbml0aW9ucyBmb3IgUGVybCB1bml0IHRlc3RzLgoKCSogcHJvZ3JhbXMvd2luZXRlc3QvbWFrZV9zeW1ib2xzOgoJQWRkZWQgcG9zc2liaWxpdHkgb2Ygc3BlY2lmeWluZyBhIG5hbWUgZm9yIHRoZSAucG0gZmlsZSB0aGF0IGNhbiBiZQoJZGlmZmVyZW50IGZyb20gdGhlIGhlYWRlciBuYW1lLgoKCSogZGxscy9vbGVhdXQzMi9kaXNwc3RkLmMsIGRsbHMvb2xlYXV0MzIvZGlzcHR5cGUuYywKCSAgZGxscy9zaGRvY3Z3L2FwaS5jLCBkbGxzL3NoZG9jdncvY29taW1wbC5jLAoJICBkbGxzL3NoZG9jdncvc2hkb2N2dy5zcGVjLCBkbGxzL3VybG1vbi9jb21pbXBsLmMsCgkgIGRsbHMvdXJsbW9uL3VybG1vbi5zcGVjOgoJQWRkZWQgc29tZSBzaGRvY3Z3IG9yZGluYWxzIGFuZCBzdHVicy4KCUZpeGVkIGEgZmV3IHdpbmFwaV9jaGVjayBpc3N1ZXMuCgoJKiB0b29scy93aW5laW5zdGFsbDoKCUR1c3RpbiBOYXZlYSA8c3BlZWRkeW1vbkB5YWhvby5jb20+CglBbHdheXMgcnVuIGxkY29uZmlnIGV2ZW4gaWYgd2UgZG9uJ3QgY2hhbmdlIGxkLnNvLmNvbmYuCgoJKiBkbGxzL3VzZXIvdGV4dC5jOgoJUm9iZXJ0IE8nQ2FsbGFoYW4gPHJvYmVydEBvY2FsbGFoYW4ub3JnPgoJRml4ZWQgYnVnIGluIFRFWFRfV29yZEJyZWFrIHRoYXQgd2FzIHZhcmlvdXNseSB0aHJvd2luZyBMb3R1cyBOb3RlcwoJaW50byBhbiBpbmZpbml0ZSBsb29wIG9yIGNhdXNpbmcgaXQgdG8gY3Jhc2guCgoyMDAyLTA0LTI2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2VydmVyL2RlYnVnZ2VyLmMsIHNlcnZlci9ldmVudC5jLCBzZXJ2ZXIvaGFuZGxlLmMsIHNlcnZlci9tYXBwaW5nLmMsCgkgIHNlcnZlci9tdXRleC5jLCBzZXJ2ZXIvbmFtZWRfcGlwZS5jLCBzZXJ2ZXIvb2JqZWN0LmMsCgkgIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9xdWV1ZS5jLCBzZXJ2ZXIvcmVnaXN0cnkuYywKCSAgc2VydmVyL3NlbWFwaG9yZS5jLCBzZXJ2ZXIvc25hcHNob3QuYywgc2VydmVyL3RocmVhZC5jLAoJICBzZXJ2ZXIvdGltZXIuYywgc2VydmVyL3RyYWNlLmMsIHNlcnZlci91bmljb2RlLmMsIHNlcnZlci93aW5kb3cuYywKCSAgdG9vbHMvbWFrZWRlcC5jLCB0b29scy93aW5lZHVtcC9taXNjLmMsIHRvb2xzL3dpbmVkdW1wL21zbWFuZ2xlLmMsCgkgIHRvb2xzL3dpbmVkdW1wL291dHB1dC5jLCB0b29scy93aW5lZHVtcC9wZS5jLAoJICB0b29scy93aW5lZHVtcC9zZWFyY2guYywgdG9vbHMvd2luZWR1bXAvc3ltYm9sLmMsIHRvb2xzL3dtYy91dGlscy5jLAoJICB0b29scy93cmMvcmVhZHJlcy5jLCB0b29scy93cmMvdXRpbHMuYywgd2luMzIvY29uc29sZS5jLAoJICB3aW4zMi9lZGl0bGluZS5jLCB3aW5kb3dzL3dpbi5jLCBkbGxzL3VybG1vbi9jb21pbXBsLmMsCgkgIGRsbHMvdXNlci9kZGUvbWlzYy5jLCBkbGxzL3VzZXIvbWVzc2FnZS5jLCBkbGxzL3VzZXIvdGV4dC5jLAoJICBkbGxzL3dpbmVkb3MvbW9kdWxlLmMsIGRsbHMvd2luaW5ldC9mdHAuYywgZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsCgkgIGluY2x1ZGUvY29uZmlnLmguaW4sIGluY2x1ZGUvd2luZS9saWJyYXJ5LmgsIGluY2x1ZGUvd2luZS9wb3J0LmgsCgkgIGxpYnJhcnkvcG9ydC5jLCBtaXNjL3JlZ2lzdHJ5LmMsIG9iamVjdHMvZW5obWV0YWZpbGUuYywKCSAgb2xlL29sZTJubHMuYywgcHJvZ3JhbXMvcmVnZWRpdC9yZWdwcm9jLmMsCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25zb2xlLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsCgkgIHNjaGVkdWxlci9wdGhyZWFkLmMsIHNlcnZlci9hdG9tLmMsIHNlcnZlci9jb25zb2xlLmMsIGNvbmZpZ3VyZS5hYywKCSAgZGVidWdnZXIvZXh0X2RlYnVnZ2VyLmMsIGRlYnVnZ2VyL21lbW9yeS5jLCBkbGxzL2FkdmFwaTMyL2FkdmFwaS5jLAoJICBkbGxzL2RkcmF3L2RkcmF3L21haW4uYywgZGxscy9kZHJhdy9oZWxwZXIuYywKCSAgZGxscy9kc291bmQvZHNvdW5kX21haW4uYywgZGxscy9tc3ZjcnQvZGF0YS5jLCBkbGxzL21zdmNydC9kaXIuYywKCSAgZGxscy9tc3ZjcnQvZmlsZS5jLCBkbGxzL21zdmNydC9sb2NhbGUuYywgZGxscy9udGRsbC9yZWcuYywKCSAgZGxscy9vZGJjMzIvcHJveHlvZGJjLmMsIGRsbHMvcXVhcnR6L2l1bmsuYywgZGxscy9zZXR1cGFwaS9wYXJzZXIuYywKCSAgZGxscy9zaGRvY3Z3L2NvbWltcGwuYywgY29uZmlndXJlOgoJQmV0dGVyIHN1cHBvcnQgZm9yIGNvbmZpZ3VyZSBkZXRlY3Rpb24gb2YgbWlzc2luZyB0eXBlcywgYWRkZWQgY2hlY2sKCWZvciBzc2l6ZV90LgoJUmVtb3ZlZCBhIGNvdXBsZSBvZiBubyBsb25nZXIgdXNlZCBwb3J0YWJpbGl0eSBmdW5jdGlvbnMuCglWYXJpb3VzIHBvcnRhYmlsaXR5IGZpeGVzIGluIHBvcnQuaC4KCgkqIHdpbmRvd3MvbWVzc2FnZS5jOgoJVXBkYXRlIHRoZSBxdWV1ZSBrZXkgc3RhdGUgZXZlbiBpZiBubyB3aW5kb3cgaGFzIHRoZSBmb2N1cyAoc3BvdHRlZCBieQoJUml6c2FueWkgWnNvbHQpLgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jLCBmaWxlcy9maWxlLmMsIHNlcnZlci9maWxlLmMsIHNlcnZlci9zZXJpYWwuYywKCSAgc2VydmVyL3NvY2suYzoKCU1hcnRpbiBXaWxjayA8TWFydGluLldpbGNrQGZ1aml0c3Utc2llbWVucy5jb20+CglGaXhlZCBzb21lIGJ1Z3MgaW4gbXkgcmVjZW50bHkgc3VibWl0dGVkIHBhdGNoIHNlcmllcy4KCjIwMDItMDQtMjUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9wYXRoLmM6CglQYXVsIE1pbGxhciA8cGF1bG1AYXN0cm8uZ2xhLmFjLnVrPgoJRml4ZWQgbWlub3IgdHlwby4KCgkqIGluY2x1ZGUvbW1zeXN0ZW0uaDoKCVN0ZXZlbiBFZHdhcmRzIDxTdGV2ZW5fRWQ0MTUzQHlhaG9vLmNvbT4KCUZpeCBmb3IgbWluZ3czMi4KCgkqIGRvY3VtZW50YXRpb24vcnVubmluZy5zZ21sLCBkb2N1bWVudGF0aW9uL3dpbmUubWFuLmluOgoJQW5kcml5IFBhbGFtYXJjaHVrIDxhcGEzYUB5YWhvby5jb20+CglVcGRhdGVkIGxpc3RzIG9mIGRlYnVnZ2luZyBjaGFubmVscy4KCgkqIGRsbHMva2VybmVsL2NvbW0uYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlbUBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBzdXBwb3J0IGZvciBUcmFuc21pdENvbW1DaGFyLgoKCSogZmlsZXMvZmlsZS5jLCBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsIHNlcnZlci9wcm90b2NvbC5kZWYsCgkgIHNlcnZlci9zb2NrLmM6CglNYXJ0aW4gV2lsY2sgPE1hcnRpbi5XaWxja0BmdWppdHN1LXNpZW1lbnMuY29tPgoJRml4ZWQgUmVhZEZpbGUoKSBzZW1hbnRpY3Mgd2hlbiByZWFkaW5nIGFzeW5jaHJvbm91c2x5IG9uIHNvY2tldHMuCglQcm92aWRlIG1vcmUgYWNjdXJhdGUgc3RhdHVzIGNvZGVzIHRoYW4gU1RBVFVTX1VOU1VDQ0VTU0ZVTC4KCgkqIHRvb2xzL3dpbmVidWlsZC9idWlsZC5oLCB0b29scy93aW5lYnVpbGQvaW1wb3J0LmMsCgkgIHRvb2xzL3dpbmVidWlsZC9tYWluLmMsIHRvb2xzL3dpbmVidWlsZC9wYXJzZXIuYywKCSAgdG9vbHMvd2luZWJ1aWxkL3JlbGF5LmMsIHRvb2xzL3dpbmVidWlsZC9yZXMxNi5jLAoJICB0b29scy93aW5lYnVpbGQvcmVzMzIuYywgdG9vbHMvd2luZWJ1aWxkL3NwZWMxNi5jLAoJICB0b29scy93aW5lYnVpbGQvc3BlYzMyLmMsIHRvb2xzL3dpbmVidWlsZC91dGlscy5jLCB3aW5kb3dzL3dpbnByb2MuYywKCSAgZGxscy9tc3ZjcnQvZXhjZXB0LmMsIGRsbHMvbnRkbGwvY3JpdHNlY3Rpb24uYywKCSAgZGxscy9udGRsbC9kZWJ1Z3Rvb2xzLmMsIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmMsCgkgIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYywgZGxscy93aW5lZG9zL2ludDMxLmMsIGluY2x1ZGUvd2luZS9wb3J0LmgsCgkgIGluY2x1ZGUvd2lubnQuaCwgbGlicmFyeS9wb3J0LmMsIG1lbW9yeS9zZWxlY3Rvci5jLAoJICByZWxheTMyL3JlbGF5Mzg2LmMsIHJlbGF5MzIvc25vb3AuYywgc2NoZWR1bGVyL2NyaXRzZWN0aW9uLmM6CglNb3ZlZCBfX0FTTV9HTE9CQUxfRlVOQyBtYWNyb3MgYW5kIGludGVybG9ja2VkIGZ1bmN0aW9ucyB0byBwb3J0LltjaF0KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYywgZGxscy93aW5zb2NrL3dzMl8zMi5zcGVjLCBmaWxlcy9maWxlLmMsCgkgIGluY2x1ZGUvd2luYmFzZS5oOgoJTWFydGluIFdpbGNrIDxNYXJ0aW4uV2lsY2tAZnVqaXRzdS1zaWVtZW5zLmNvbT4KCUltcGxlbWVudGVkIG92ZXJsYXBwZWQgV1NBUmVjdkZyb20oKSwgV1NBU2VuZFRvKCksIGFuZAoJV1NBR2V0T3ZlcmxhcHBlZFJlc3VsdCgpLgoJRml4ZWQgc2h1dGRvd24oKSB0byB3b3JrIGNvcnJlY3RseSBmb3Igb3ZlcmxhcHBlZCBzb2NrZXRzIChkbyBub3QKCWFjdHVhbGx5IGRvIGEgc2h1dGRvd24oKSBzeXN0ZW0gY2FsbCBhcyBsb25nIGFzIHRoZXJlIGFyZSBwZW5kaW5nCglvdmVybGFwcGVkIHJlcXVlc3RzKS4KCUFsc28gYWRkZWQgY29ycmVjdCBlcnJvciByZXBvcnRpbmcgd2hlbiB0cnlpbmcgdG8gcmVhZCBvciB3cml0ZSBvbiBhCglzaHV0IGRvd24gY29ubmVjdGlvbiwgYWxzbyBmb3IgUmVhZEZpbGUoKS9Xcml0ZUZpbGUoKSBjYWxscy4KCgkqIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3NvY2suYzoKCU1hcnRpbiBXaWxjayA8TWFydGluLldpbGNrQGZ1aml0c3Utc2llbWVucy5jb20+CglJbXBsZW1lbnRlZCBzZXJ2ZXIgZnJhbWV3b3JrIGZvciBhc3luY2hyb25vdXMgSU8gb24gc29ja2V0cy4KCjIwMDItMDQtMjQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3gxMWRydi93aW5wb3MuYzoKCU5ldmVyIGFjdGl2YXRlIHRoZSB3aW5kb3cgb24gU1dfU0hPV05PQUNUSVZBVEUuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgaW5jbHVkZS9jb25maWcuaC5pbjoKCU5vIGxvbmdlciB0cnkgdG8gc3VwcG9ydCBub24tcmVlbnRyYW50IFhsaWIuCgoJKiBkbGxzL3gxMWRydi93aW5wb3MuYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCURvbid0IGNoZWNrIGh3bmRJbnNlcnRBZnRlciBpZiBTV1BfTk9aT1JERVIgaXMgc2V0LgoKCSogZGxscy94MTFkcnYveDExZHJ2X21haW4uYywgZ3JhcGhpY3MveDExZHJ2L2RpYi5jLCBpbmNsdWRlL3gxMWRydi5oOgoJQWRkZWQgc3VwcG9ydCBmb3IgaW5zdGFsbGluZyBhbiBlcnJvciBjYWxsYmFjayB3aGVuIGV4cGVjdGluZyBhbiBYMTEKCWVycm9yLgoKCSogc2VydmVyL2FzeW5jLmMsIHNlcnZlci9maWxlLmMsIHNlcnZlci9vYmplY3QuaCwgc2VydmVyL3NlcmlhbC5jOgoJTWFydGluIFdpbGNrIDxNYXJ0aW4uV2lsY2tAZnVqaXRzdS1zaWVtZW5zLmNvbT4KCUFkZCBtb3JlIGZsZXhpYmlsaXR5IHRvIHRoZSBxdWV1ZV9hc3luYyBzZXJ2ZXIgY2FsbCBieSBtb3ZpbmcgbW9zdAoJZnVuY3Rpb25hbGl0eSBpbnRvIHRoZSBvYmplY3QncyBxdWV1ZV9hc3luYyBtZXRob2QuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CgktIEltcHJvdmUgSV9JTUFHRUNBTExCQUNLIGhhbmRsaW5nIGFuZCBzdXBwb3J0IElfSU1BR0VOT05FLgoJLSBJbXBsZW1lbnQgVEJOX0hPVElURU1DSEFOR0UgaW4gdGhlIG1vdXNlIG1vdmUgcm91dGluZS4KCgkqIGRsbHMva2VybmVsL2NvbW0uYzoKCU1hcmNlbG8gV2VsdGVyIDxtYXJjZWxvQHN5c21vLmNvbS5icj4KCUZpeCB0byBvbGQgRENCIGZvcm1hdCBwYXJzaW5nLgoKCSogZGxscy91c2VyL3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMvdXNlci90ZXN0cy93c3ByaW50Zi5jLAoJICBkbGxzL3VzZXIvTWFrZWZpbGUuaW46CglCaWxsIE1lZGxhbmQgPG1lZGJpMDFAYWNjcGFjLmNvbT4KCUZpcnN0IHJlZ3Jlc3Npb24gdGVzdCBmb3Igd3NwcmludGYuCgoyMDAyLTA0LTIzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29uZmlndXJlLmFjLCBkbGxzL3gxMWRydi94cmVuZGVyLmMsIGluY2x1ZGUvY29uZmlnLmguaW4sCgkgIGluY2x1ZGUvdHNfeHJlbmRlci5oLCB0b29scy9tYWtlX1gxMXdyYXBwZXJzLCB0c3gxMS9NYWtlZmlsZS5pbiwKCSAgdHN4MTEvWDExX2NhbGxzLCB0c3gxMS90c194cmVuZGVyLmMsIGNvbmZpZ3VyZToKCUxvYWQgbGliWHJlbmRlciBhdCBydW4tdGltZSB3aXRoIGRsb3BlbiAoYmFzZWQgb24gYSBwYXRjaCBieSBIdXcKCURhdmllcykuCgoJKiBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsIHNlcnZlci9wcm90b2NvbC5kZWYsCgkgIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci9zb2NrLmMsIHNlcnZlci90cmFjZS5jLAoJICBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGRsbHMvd2luc29jay93czJfMzIuc3BlYzoKCU1hcnRpbiBXaWxjayA8TWFydGluLldpbGNrQGZ1aml0c3Utc2llbWVucy5jb20+CglGaXhlZCBoYW5kbGluZyBvZiBkZWZlcnJlZCBjb25uZWN0aW9ucyBpbiBXU0FBY2NlcHQoKS4KCgkqIHVuaWNvZGUvY185NTAuYywgdW5pY29kZS9jYXNlbWFwLmMsIHVuaWNvZGUvY29tcG9zZS5jLAoJICB1bmljb2RlL2NwbWFwLnBsLCB1bmljb2RlL2NwdGFibGUuYywgdW5pY29kZS93Y3R5cGUuYywKCSAgdW5pY29kZS9NYWtlZmlsZS5pbiwgdW5pY29kZS9jXzAzNy5jLCB1bmljb2RlL2NfMDQyLmMsCgkgIHVuaWNvZGUvY18xMDAwMC5jLCB1bmljb2RlL2NfMTAwMDYuYywgdW5pY29kZS9jXzEwMDA3LmMsCgkgIHVuaWNvZGUvY18xMDAyOS5jLCB1bmljb2RlL2NfMTAwNi5jLCB1bmljb2RlL2NfMTAwNzkuYywKCSAgdW5pY29kZS9jXzEwMDgxLmMsIHVuaWNvZGUvY18xMDI2LmMsIHVuaWNvZGUvY18xMjUwLmMsCgkgIHVuaWNvZGUvY18xMjUxLmMsIHVuaWNvZGUvY18xMjUyLmMsIHVuaWNvZGUvY18xMjUzLmMsCgkgIHVuaWNvZGUvY18xMjU0LmMsIHVuaWNvZGUvY18xMjU1LmMsIHVuaWNvZGUvY18xMjU2LmMsCgkgIHVuaWNvZGUvY18xMjU3LmMsIHVuaWNvZGUvY18xMjU4LmMsIHVuaWNvZGUvY18yMDg2Ni5jLAoJICB1bmljb2RlL2NfMjg1OTEuYywgdW5pY29kZS9jXzI4NTkyLmMsIHVuaWNvZGUvY18yODU5My5jLAoJICB1bmljb2RlL2NfMjg1OTQuYywgdW5pY29kZS9jXzI4NTk1LmMsIHVuaWNvZGUvY18yODU5Ni5jLAoJICB1bmljb2RlL2NfMjg1OTcuYywgdW5pY29kZS9jXzI4NTk4LmMsIHVuaWNvZGUvY18yODU5OS5jLAoJICB1bmljb2RlL2NfMjg2MDAuYywgdW5pY29kZS9jXzI4NjAzLmMsIHVuaWNvZGUvY18yODYwNC5jLAoJICB1bmljb2RlL2NfMjg2MDUuYywgdW5pY29kZS9jXzI4NjA2LmMsIHVuaWNvZGUvY180MjQuYywKCSAgdW5pY29kZS9jXzQzNy5jLCB1bmljb2RlL2NfNTAwLmMsIHVuaWNvZGUvY183MzcuYywgdW5pY29kZS9jXzc3NS5jLAoJICB1bmljb2RlL2NfODUwLmMsIHVuaWNvZGUvY184NTIuYywgdW5pY29kZS9jXzg1NS5jLCB1bmljb2RlL2NfODU2LmMsCgkgIHVuaWNvZGUvY184NTcuYywgdW5pY29kZS9jXzg2MC5jLCB1bmljb2RlL2NfODYxLmMsIHVuaWNvZGUvY184NjIuYywKCSAgdW5pY29kZS9jXzg2My5jLCB1bmljb2RlL2NfODY0LmMsIHVuaWNvZGUvY184NjUuYywgdW5pY29kZS9jXzg2Ni5jLAoJICB1bmljb2RlL2NfODY5LmMsIHVuaWNvZGUvY184NzQuYywgdW5pY29kZS9jXzg3NS5jLCB1bmljb2RlL2NfODc4LmMsCgkgIHVuaWNvZGUvY185MzIuYywgdW5pY29kZS9jXzkzNi5jLCB1bmljb2RlL2NfOTQ5LmM6CglVcGRhdGVkIGZvciBVbmljb2RlIDMuMi4KCUFkZGVkIElTTzg4NTktMTYgY29kZXBhZ2UuCgoJKiB0b29scy93aW5lY29uZjoKCUR1c3RpbiBOYXZlYSA8c3BlZWRkeW1vbkB5YWhvby5jb20+CglGaW5kIG50ZnMgZHJpdmVzIGFuZCBzdXBlcm1vdW50IGNkLXJvbXMuCglGaXggZmluZGluZyBub24tc3VwZXJtb3VudCBjZC1yb21zIG1vdW50ZWQgYXQgL2Nkcm9tLgoKCSogdG9vbHMvd2luZWluc3RhbGw6CglEdXN0aW4gTmF2ZWEgPHNwZWVkZHltb25AeWFob28uY29tPgoJU2VhcmNoIGZvciByZWFsLXdpbmRvd3MgcmVnaXN0cnkgbm93IGFjdHVhbGx5IGFjY2Vzc2VzIGEgZmlsZS4KCUZpbmQgY2xlYW4taW5zdGFsbCB3aW4yayByZWdpc3RyeS4KCUZpbmQgY29ycmVjdCBwYXJ0aXRpb24gb2YgcmVhbCBEcml2ZSBDIChtb3N0IG9mIHRoZSB0aW1lKS4KCgkqIGZpbGVzL2ZpbGUuYzoKCU1hcnRpbiBXaWxjayA8TWFydGluLldpbGNrQGZ1aml0c3Utc2llbWVucy5jb20+CglBdm9pZCBzZWdmYXVsdCB3aXRoIG92ZXJsYXBwZWQgV3JpdGVGaWxlKCkgY2FsbHMuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWJvZXguYzoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglGaXggV01fTk9USUZZRk9STUFUIGhhbmRsaW5nLgoKCSogZGxscy9jb21jdGwzMi9zdGF0dXMuYzoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CgktIGltcGxlbWVudCBXTV9OT1RJRllGT1JNQVQKCS0gZml4IGdyaXAgcGFpbnRpbmcKCS0gbWFrZSB1c2Ugb2YgRHJhd1N0YXR1c1RleHQgdG8gcGFpbnQgY29udHJvbAoKMjAwMi0wNC0yMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbnRyb2xzL2VkaXQuYywgZGxscy9yaWNoZWRpdC9yaWNoZWRpdC5jLCBpbmNsdWRlL3JpY2hlZGl0Lmg6CglDaHVjayBDcmF5bmUgPGNjcmF5bmVAY3JheW5lLm9yZz4KCS0gUmVjb2duaXplICJcbiIgYXMgYW4gYWx0ZXJuYXRpdmUgc29mdCBsaW5lIGJyZWFrIGluIGZ1bmN0aW9uCgkgIEVESVRfQnVpbGRMaW5lRGVmc19NTCBvZiBlZGl0LmMuCgktIE1ham9yIHJlc3RydWN0dXJpbmcgb2YgcmljaGVkaXQuYyB0byBwcm92aWRlIGJ1ZyBmaXhlcywgZW5oYW5jZWQKCSAgZnVuY3Rpb24sIGFuZCBpbXByb3ZlZCBkZWJ1ZyBzdXBwb3J0LgoKCSogd2luZG93cy9kY2UuYzoKCUNsZWFyIHRoZSBEQyBkaXJ0eSBmbGFnIGJlZm9yZSBjYWxsaW5nIFNldERDU3RhdGUgdG8gYXZvaWQgc3B1cmlvdXMKCXZpcyByZWdpb24gdXBkYXRlcy4KCgkqIHRvb2xzL3dpbmVpbnN0YWxsOiBGaXhlZCB0eXBvIGluIHN1IGNvbW1hbmQuCgoJKiBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglBIGJpdCBtb3JlIHJvYnVzdCBhZ2FpbnN0IHdhdmU/Pz9PcGVuIGZhaWx1cmVzLgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmMsIGRsbHMvd2lubW0vd2luZW9zcy9taWRpLmMsCgkgIGRsbHMvd2lubW0vd2luZW9zcy9vc3MuaDoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgbXVsdGktdGhyZWFkIGFjY2VzcyB0byBsb2NhbCB2YXJpYWJsZXMgKG1haW5seSBmZCBmb3IKCS9kZXYvZHNwKS4KCUdvZCByaWQgb2Ygb2Jzb2xldGUgbWFjcm8uCglGaXhlZCBzb21lIHNsaWdodCBpbml0IGlzc3Vlcy4KCgkqIGRsbHMvd2lubW0vbG9sdmxkcnYuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgYSBtaXNtYXRjaCBpbiB3YXZlaW4gMTYvMzIgbWFwcGluZy4KCVJlbGF4ZWQgc29tZSB0ZXN0cyBhYm91dCBidWZmZXIgbGVuZ3Rocy4KCgkqIGZpbGVzL2RyaXZlLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUFsd2F5cyBjbG9zZSBmZCB3aGVuIHJlYWRpbmcgc3VwZXIgYmxvY2suCgoJKiBpbmNsdWRlL3dpbnNvY2suaDoKCU1hcnRpbiBXaWxjayA8TWFydGluLldpbGNrQGZ1aml0c3Utc2llbWVucy5jb20+CglGaXhlZCBjdXQmcGFzdGUgYnVnLgoKCSogZGxscy9rZXJuZWwvY29tbS5jOgoJUmVtb3ZlZCBjb25zdGFudHMgdGhhdCBhcmVuJ3QgZGVmaW5lZCBpbiBXaW5kb3dzLgoKMjAwMi0wNC0yMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG9iamVjdHMvZGMuYzoKCUZpeGVkIGhhbmRsaW5nIG9mIHZpc2libGUgcmVnaW9uIGluIFNhdmUvUmVzdG9yZURDLgoKCSogbXNkb3MvaW50MTMuYywgd2luMzIvZGV2aWNlLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAc3RhcnQuY29tLmF1PgoJTW92ZWQgaW50MTMgc3VwcG9ydCB0byB0aGUgVldJTjMyX0RJT0NfRE9TX0lOVDEzIGlvY3RsLgoJQWRkZWQgc3VwcG9ydCBmb3IgdGhlIGZsb3BweSBwYXJhbWV0ZXIgdGFibGUuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL2tlcm5lbC90ZXN0cy9wcm9jZXNzLmMsCgkgIGRsbHMva2VybmVsL01ha2VmaWxlLmluOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBhIGZyYW1ld29yayBmb3IgdGVzdGluZyBDcmVhdGVQcm9jZXNzIGFuZCBhIGZldyB0ZXN0cy4KCgkqIHRvb2xzL3dpbmVpbnN0YWxsOgoJVG9ueSBMYW1icmVndHMgPHRvbnlfbGFtYnJlZ3RzQHRlbHVzcGxhbmV0Lm5ldD4KCUNvcnJlY3RseSBkZXRlY3QgdGhlIHByZXNlbmNlIG9mIGEgd2luZSBiaW5hcnkuCgoJKiBkbGxzL2tlcm5lbC9jb21tLmM6IDx3aW5lQGdjMi5rbG9lcGZlci5vcmc+CglGYXN0ZXIgc2VyaWFsIHNwZWVkIGNhc2VzIGZvciBub24gTGludXggc3lzdGVtcy4KCgkqIGRsbHMvdXNlci9NYWtlZmlsZS5pbiwgZGxscy91c2VyL3Rlc3RzLy5jdnNpZ25vcmUsCgkgIGRsbHMvdXNlci90ZXN0cy9jbGFzcy5jLCBkbGxzL3VzZXIvdGVzdHMvdXNlcjMyX3Rlc3Quc3BlYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlbUBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBhIHNpbXBsZSB0ZXN0IHNldCBmb3Igd2luZG93IGNsYXNzZXMuCgoJKiBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmM6CglCaWxsIE1lZGxhbmQgPG1lZGJpMDFAYWNjcGFjLmNvbT4KCVRoZSBleHRlbnNpb24gc2hvdWxkIG5vdCBiZSByZW1vdmVkIGZyb20gdGhlIGRpc3BsYXkgb2YgZm9sZGVyIG5hbWVzLgoKMjAwMi0wNC0yMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNlcnZlci9tYXBwaW5nLmM6CglDbGVhciBtYXBwaW5nLT5zaGFyZWRfZmlsZSBvbiBlcnJvci4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjOgoJQmlsbCBNZWRsYW5kIDxCaWxsLk1lZGxhbmRAYWNjcGFjLmNvbT4KCUdldCB0aGUgbGRjb25maWcgY2hlY2sgdG8gd29yayBmb3IgYmFzaCBzaGVsbHMuCgoJKiBkbGxzL29sZWF1dDMyL3N0dWJzLmM6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJSW1wbGVtZW50ZWQgT2xlSWNvblRvQ3Vyc29yLgoKCSogcHJvZ3JhbXMvd2NtZC9idWlsdGlucy5jOgoJSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCS0gRml4ZWQgbW92ZSBhbmQgY29weSB3aGVuIG5vIGRlc3RpbmF0aW9uIHN1cHBsaWVkIChhc3N1bWVzICcuJyBub3cgYXMKCSAgcGVyIHdpbmRvd3MpCgktIEZpeGVkIG1vdmUgc28gdXNlcyBmdWxsIHBhdGggbmFtZSBmb3IgZGVzdGluYXRpb24gZmlsZSwgYW5kIGlmCgkgIGRlc3RpbmF0aW9uIGlzIGEgZGlyZWN0b3J5LCB1c2VzIG9yaWdpbmFsIGZpbGVuYW1lLgoKCSogZGxscy91c2VyL3dzcHJpbnRmLmM6CglCaWxsIE1lZGxhbmQgPEJpbGwuTWVkbGFuZEBhY2NwYWMuY29tPgoJQ29ycmVjdCBoYW5kbGluZyBvZiB6ZXJvLXBhZGRlZCBuZWdhdGl2ZSBudW1iZXJzOyB0cmFuc2ZlciB0aGUgc2lnbgoJQkVGT1JFIGFkZGluZyB0aGUgemVyb2VzLgoKCSogdG9vbHMvd2luZWluc3RhbGw6CglCaWxsIE1lZGxhbmQgPEJpbGwuTWVkbGFuZEBhY2NwYWMuY29tPgoJSGFuZGxlIHdoZW4gbGRjb25maWcgaXMgbm90IG9uIHRoZSBwYXRoLCBhbmQgZG8gbm90IHJ1biBpdCB1bnRpbCBhZnRlcgoJdGhlIGxpYmRpciBoYXMgYmVlbiBwb3B1bGF0ZWQuCgoJKiB0b29scy93aW5lY2hlY2s6CglCaWxsIE1lZGxhbmQgPEJpbGwuTWVkbGFuZEBhY2NwYWMuY29tPgoJUHJldmVudCBlcnJvciBtZXNzYWdlIGlmIExEX0xJQlJBUllfUEFUSCBpcyBub3QgYmVpbmcgdXNlZC4KCUNvbW1lbnQgb3V0IHRoZSBERUJVRyBtZXNzYWdlLgoKCSogZGxscy9zaGVsbDMyL2Jyc2ZvbGRlci5jOgoJQmlsbCBNZWRsYW5kIDxCaWxsLk1lZGxhbmRAYWNjcGFjLmNvbT4KCUdldCB0aGUgZm9sZGVyIGJyb3dzZXIgdG8gd29yayBhcyB3ZWxsIHdpdGggVyBub3RpZmljYXRpb24gYXMgQSAoaXQKCXNlZW1zIHRvIHdvcmsgcmVhc29uYWJseSkuCgoJKiBkbGxzL3dpbmVkb3MvaW50MTAuYzoKCUNocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUdFVCBGVU5DVElPTkFMSVRZL1NUQVRFIElORk9STUFUSU9OOiBUaGUgaW5wdXQgcGFyYW1ldGVyIEVTOkRJIGlzIGEKCWJ1ZmZlciB3aGVyZSBiaW9zIGluZm9ybWF0aW9uIChhbGwgdGhlIFZJREVPU1RBVEUgc3RydWN0KSBtdXN0IGJlCgljb3BpZWQgdG8uCgoJKiBpbmNsdWRlL3dpbmUvdGVzdC5oLCBwcm9ncmFtcy93aW5ldGVzdC93dG1haW4uYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJTm93IEMgdGVzdHMgYXJlIGFibGUgdG8gYWNjZXNzIGFyZ2MvYXJndiBhcyBwYXNzZWQgdG8gdGhlIHByb2dyYW0uCgoyMDAyLTA0LTE5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy93aW5lZG9zL3ZnYS5jOgoJQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJVkdBX2lvcG9ydF9pbjogRmFrZSB0aGUgb2NjdXJyZW5jZSBvZiB0aGUgdmVydGljYWwgcmVmcmVzaCB3aGVuIG5vCglncmFwaGljIG1vZGUgaGFzIGJlZW4gc2V0LgoKCSogZGxscy9xdWFydHovTWFrZWZpbGUuaW4sIGRsbHMvcXVhcnR6L2F2aXBhcnNlLmMsCgkgIGRsbHMvcXVhcnR6L2lqZ2RlYy5jLCBkbGxzL3F1YXJ0ei9pamdkZWMuaCwgZGxscy9xdWFydHovbWpwZ2RlYy5jOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUltcGxlbWVudGVkIE1KUEcgaGFuZGxlci4KCgkqIGRsbHMvYWR2YXBpMzIvYWR2YXBpLmMsIGRsbHMvYWR2YXBpMzIvYWR2YXBpMzIuc3BlYywKCSAgZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jOgoJTGVvIHZhbiBkZW4gQmVyZyA8bGVvQGNvbm5lY3R1eC5jb20+CglBZGRlZCBzdHVicyBmb3IgQWJvcnRTeXN0ZW1TaHV0ZG93bltBV10gYW5kIFByaXZpbGVnZUNoZWNrLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jOgoJTWVobWV0IFlhc2FyIDxteWFzYXJAZnJlZS5mcj4KCU5vdywgd2UgYXJlIHJlYWxseSBlcmFzaW5nIFdTX0NBUFRJT04gc3R5bGUuCgoJKiBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL3dpbmUucG0sIHByb2dyYW1zL3dpbmV0ZXN0L3J1bnRlc3QsCgkgIHByb2dyYW1zL3dpbmV0ZXN0L3d0bWFpbi5jOgoJUGF1bCBNaWxsYXIgPHBhdWxtQGFzdHJvLmdsYS5hYy51az4KCUFkZGVkIG9wdGlvbiBmb3IgYW5ub3VuY2VtZW50IG9mIHN1Y2Nlc3NmdWwgdGVzdCByZXN1bHRzLgoKMjAwMi0wNC0xNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvZ2RpL2dkaTMyLnNwZWMsIGRsbHMvd2luZXBzL01ha2VmaWxlLmluLAoJICBNYWtlZmlsZS5pbjoKCUV4cG9ydCBhIGZldyBtb3JlIDE2LWJpdCBHREkgZnVuY3Rpb25zLiBGaW5pc2hlZCB3aW5lcHMgc2VwYXJhdGlvbi4KCgkqIGRsbHMvd2luZWRvcy9pbnQxMC5jOgoJQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJSW1wbGVtZW50IFNFVCBJTkRJVklEVUFMIERBQyBSRUdJU1RFUiBhbmQgU0VUIEJMT0NLIE9GIERBQyBSRUdJU1RFUlMuCgoJKiB3aW5kb3dzL3NweS5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCVB1dCB0aGUgTUNOXyBhbmQgRFROXyBpbiBjb3JyZWN0IG9yZGVyLgoKCSogZGxscy9jb21jdGwzMi9zdGF0dXMuYzoKCU1laG1ldCBZYXNhciA8bXlhc2FyQGZyZWUuZnI+CglBZGQgbW9yZSBjaGVjayBpbnNpZGUgU0JfU0VUVEVYVCBhbmQgU0JfR0VUVEVYVC4KCgkqIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYzoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglDb21wbGV0ZSBpbXBsZW1lbnRhdGlvbiBmb3IgRHJhd1N0YXR1c1RleHR7QSxXfS4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYzoKCU1hcnRpbiBXaWxjayA8TWFydGluLldpbGNrQEZ1aml0c3UtU2llbWVucy5jb20+CglfZ2V0X3NvY2tfZmRfdHlwZTogTmV3IGZ1bmN0aW9uLCByZXRyaWV2ZSBmZCB0eXBlIGFuZCBmbGFncyBsaWtlCglGSUxFX0dldFVuaXhIYW5kbGVUeXBlKCkuCglXU0FTZW5kVG8vV1NBUmVjdkZyb206IFVzZSAgX2dldF9zb2NrX2ZkX3R5cGUoKS4KCgkqIGZpbGVzL2ZpbGUuYzoKCU1hcnRpbiBXaWxjayA8TWFydGluLldpbGNrQEZ1aml0c3UtU2llbWVucy5jb20+CglHZXRPdmVybGFwcGVkUmVzdWx0OiBSZXR1cm4gRVJST1JfSU9fSU5DT01QTEVURSBpZiBJTyBzdGlsbCBwZW5kaW5nLgoJUmVhZEZpbGUgLyBXcml0ZUZpbGU6IFVzZSBHZXRPdmVybGFwcGVkUmVzdWx0KCkgdG8gY2hlY2sgZm9yIGltbWVkaWF0ZQoJY29tcGxldGlvbi4KCjIwMDItMDQtMTUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJRml4ZWQgc3R1cGlkIHR5cG8gaW4gcHJldmlvdXMgcGF0Y2guCgoyMDAyLTA0LTE0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy93aW5lcHMvcHNkcnYuaCwgZGxscy93aW5lcHMvd2luZXBzLnNwZWMsCgkgIGRsbHMveDExZHJ2L3gxMWRydi5zcGVjLCBncmFwaGljcy94MTFkcnYveGZvbnQuYywgaW5jbHVkZS9nZGkuaCwKCSAgaW5jbHVkZS94MTFkcnYuaCwgb2JqZWN0cy9mb250LmMsIGRsbHMvZ2RpL3dpbjE2ZHJ2L2ZvbnQuYywKCSAgZGxscy9nZGkvd2luMTZkcnYvd2luMTZkcnYuaCwgZGxscy93aW5lcHMvZm9udC5jOgoJUGFzcyBhIFBIWVNERVYgdG8gRW51bURldmljZUZvbnQgYW5kIHJlbGVhc2UgdGhlIEdESSBsb2NrIGluCglGT05UX0VudW1JbnN0YW5jZSBpbnN0ZWFkLgoKCSogbWlzYy9vcHRpb25zLmMsIHNjaGVkdWxlci9wcm9jZXNzLmM6CglGaXhlZCBpbmhlcml0aW5nIGNvbW1hbmQtbGluZSBvcHRpb25zIGZyb20gcGFyZW50IHByb2Nlc3MuCgoJKiBkbGxzL2tlcm5lbC9jb21tLmMsIGZpbGVzL2ZpbGUuYywgaW5jbHVkZS9hc3luYy5oOgoJTWFydGluIFdpbGNrIDxNYXJ0aW4uV2lsY2tAZnVqaXRzdS1zaWVtZW5zLmNvbT4KCS0gTmVlZCBhICJjbGVhbnVwIiBtZXRob2QuCgktIGNhbGxpbmcgdGhlICJjYWxsX2NvbXBsZXRpb24iIG1ldGhvZCB1bmNvbmRpdGlvbmFsbHkgaW4gZmluaXNoX2FzeW5jCgkgIChpbnRyb2R1Y2VkIGJ5IG1lKSB3YXMgd3JvbmcsIGJlY2F1c2UgdGhlIHRocmVhZCBtYXkgbmV2ZXIgYmUgaW4gYW4KCSAgYWxlcnRhYmxlIHdhaXQgc3RhdGUgLT4gY2FsbCBpdCBvbmx5IGlmIHVzZXIgY29tcGxldGlvbiBmdW5jdGlvbiBpcyBwcmVzZW50LgoJLSBXZSBuZWVkIHR3byBjb25zdGFudCAib3BzIiBvYmplY3RzLCBvbmUgd2l0aCBhbmQgb25lIHdpdGhvdXQgY2FsbF9jb21wbGV0aW9uCgkgIG1ldGhvZCAodGhlIGV2ZW50IGZpZWxkIG1heSBOT1QgYmUgdXNlZCB0byBkZXRlcm1pbmUgd2hldGhlciB0aGUgY29tcGxldGlvbgoJICBtdXN0IGJlIGNhbGxlZCBvciBub3QpLgoKCSogc2VydmVyL2FzeW5jLmM6CglNYXJ0aW4gV2lsY2sgPE1hcnRpbi5XaWxja0BmdWppdHN1LXNpZW1lbnMuY29tPgoJU1RBVFVTX0NBTkNFTExFRCBpcyBjb3JyZWN0IGZvciBjYW5jZWxsZWQgcmVxdWVzdHMgKGNvcnJlc3BvbmRzIHRvCglFUlJPUl9PUEVSQVRJT05fQUJPUlRFRCkuCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmM6CglNZWhtZXQgWWFzYXIgPG15YXNhckBmcmVlLmZyPgoJLSBDbGVhciBXU19DQVBUSU9OIHN0eWxlLgoJLSBTZW5kIG5vdyBDRE5fRklMRU9LIGJlZm9yZSBGSUxFT0tTVFJJTkcuCgktIEZpeCBidWcgcmVsYXRlZCB0byBEV0xfTVNHUkVTVUwgKHdlIHdlcmUgcmVhZGluZyBmcm9tIHdyb25nIGh3bmQpLgoKCSogZGxscy9xdWFydHovTWFrZWZpbGUuaW4sIGRsbHMvcXVhcnR6L1JFQURNRSwgZGxscy9xdWFydHovYWNtd3JhcC5jLAoJICBkbGxzL3F1YXJ0ei9hc3luY3NyYy5jLCBkbGxzL3F1YXJ0ei9hdWRyZW4uYywgZGxscy9xdWFydHovZm1hcC5jLAoJICBkbGxzL3F1YXJ0ei9pZmdyYXBoLmMsIGRsbHMvcXVhcnR6L2l1bmsuYywgZGxscy9xdWFydHovbWFpbi5jLAoJICBkbGxzL3F1YXJ0ei9tZW1hbGxvYy5jLCBkbGxzL3F1YXJ0ei9taWRwYXJzZS5jLAoJICBkbGxzL3F1YXJ0ei9tanBnZGVjLmMsIGRsbHMvcXVhcnR6L21wYWRlYy5jLCBkbGxzL3F1YXJ0ei9tcGdwYXJzZS5jLAoJICBkbGxzL3F1YXJ0ei9tcHZkZWMuYywgZGxscy9xdWFydHovcGFyc2VyLmMsIGRsbHMvcXVhcnR6L3BhcnNlci5oLAoJICBkbGxzL3F1YXJ0ei9xdGRlYy5jLCBkbGxzL3F1YXJ0ei9xdHBhcnNlLmMsIGRsbHMvcXVhcnR6L3NlZWtwYXNzLmMsCgkgIGRsbHMvcXVhcnR6L3ZpZHJlbi5jLCBkbGxzL3F1YXJ0ei94Zm9ybS5jLCBkbGxzL3F1YXJ0ei94Zm9ybS5oLAoJICB3aW5lZGVmYXVsdC5yZWc6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJRml4ZWQgc29tZSBidWdzLgoJQWRkZWQgc3R1YnMuCglSZW1vdmUgaGFybWxlc3MgRklYTUVzLgoKCSogdG9vbHMvd2luZW1ha2VyOgoJTWFydGluIFdpbGNrIDxNYXJ0aW4uV2lsY2tAZnVqaXRzdS1zaWVtZW5zLmNvbT4KCUZpeCB3aW5lbWFrZXItZ2VuZXJhdGVkIHJlZmVyZW5jZXMgdG8gZGxscyB0aGF0IGhhdmUgY2hhbmdlZCB0aGVpciBuYW1lcy4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCUltcGxlbWVudCBOTV9DVVNUT01EUkFXIG5vdGlmaWNhdGlvbi4KCgkqIHdpbmRvd3Mvc3B5LmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJLSBXaGVuIGR1bXBpbmcgTk1DVVNUT01EUkFXLCB1c2UgY29ycmVjdCBzaXplIGZvciBhIFRvb2xiYXIuCgktIEFkZCBub3RpZnkgbmFtZXMgZm9yIGNvbnRyb2xzOiB0b29sdGlwcywgdXBkb3duLCBjYWxlbmRhciwgZGF0ZXRpbWUsCgkgIGlwLCBhbmQgc3RhdHVzLgoKMjAwMi0wNC0xMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIEFOTk9VTkNFLCBDaGFuZ2VMb2csIFZFUlNJT04sIGNvbmZpZ3VyZToKCVJlbGVhc2UgMjAwMjA0MTEuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjIwMDItMDQtMTEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiAuY3ZzaWdub3JlLCBNYWtlZmlsZS5pbjoKCUNsZWFuIGF1dG9tNHRlLmNhY2hlLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIHByb2dyYW1zL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy9yZWdhcGkvcmVnRml4ZXIucGwsIHByb2dyYW1zL3JlZ2FwaS9yZWdSZXN0b3Jlci5wbCwKCSAgcHJvZ3JhbXMvcmVnYXBpL3Rlc3RzL1JFQURNRSwgcHJvZ3JhbXMvcmVnYXBpL3Rlc3RzL2FmdGVyLnJlZywKCSAgcHJvZ3JhbXMvcmVnYXBpL3Rlc3RzL2JlZm9yZS5yZWcsIHByb2dyYW1zL3JlZ2FwaS90ZXN0cy9vcmlnLnJlZywKCSAgcHJvZ3JhbXMvcmVnZWRpdC8uY3ZzaWdub3JlLCBwcm9ncmFtcy9yZWdlZGl0L01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy9yZWdlZGl0L3JlZ2VkaXQuYywgcHJvZ3JhbXMvcmVnZWRpdC9yZWdlZGl0LnNwZWMsCgkgIHByb2dyYW1zL3JlZ2VkaXQvcmVncHJvYy5jLCBwcm9ncmFtcy9yZWdlZGl0L3JlZ3Byb2MuaDoKCUFuZHJpeSBQYWxhbWFyY2h1ayA8YXBhM2FAeWFob28uY29tPgoJQ3JlYXRlZCByZWdlZGl0IHJlcGxhY2VtZW50LiBGaXhlZCBzb21lIGJ1Z3MuCgoJKiBwcm9ncmFtcy9jbG9jay9DaGFuZ2VMb2csIHByb2dyYW1zL25vdGVwYWQvQ2hhbmdlTG9nLAoJICBwcm9ncmFtcy9vc3ZlcnNpb25jaGVjay9DaGFuZ2VMb2csIHByb2dyYW1zL3Byb2dtYW4vQ2hhbmdlTG9nLAoJICBwcm9ncmFtcy9yZWd0ZXN0L0NoYW5nZUxvZywgcHJvZ3JhbXMvd2NtZC9DaGFuZ2VMb2csCgkgIHByb2dyYW1zL3dpbmhlbHAvQ2hhbmdlTG9nLCBwcm9ncmFtcy93aW52ZXIvQ2hhbmdlTG9nOgoJUmVtb3ZlZCBjaGFuZ2Vsb2cgZW50cmllcyB0aGF0IGFyZSBpbiB0aGUgbWFpbiBjaGFuZ2Vsb2csIGFuZCBhZGRlZAoJbm90aWNlIHRvIG5vdCBlZGl0IHRoZSBzZWNvbmRhcnkgY2hhbmdlbG9ncyBhbnltb3JlLgoKCSogZ3JhcGhpY3MveDExZHJ2L29wZW5nbC5jOgoJQ2hyaXN0b3BoIEZyaWNrIDxmcmlja0BTQy1OZXR3b3Jrcy5kZT4KCVJldXNlIHZpc3VhbHMgdG8gYXZvaWQgTUFYX1BJWEVMRk9STUFUUyBsaW1pdC4KCUFjdGl2YXRlZCB0aGUgY29kZSB0byBzdXBwb3J0IHRoZSBzdGVuY2lsIGJ1ZmZlci4KCgkqIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCVVzZSBoYXJkLWNvZGVkIGZvbnQgbmFtZSBiaW5kaW5ncyBvbmx5IHdpdGggdGhlIEFOU0lfQ0hBUlNFVCAobm9uLVVTCgljaGFyc2V0cyB3aXRoIG5vIGZvbnQgbmFtZSBzaG91bGRuJ3QgYmUgYm91bmQgdG8gVVMgY2hhcnNldCkuCgoJKiBkbGxzL29sZTMyL29sZTJzdHVicy5jLCBkbGxzL29sZWF1dDMyL29sZTJkaXNwLmM6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJUmV0dXJuIGVycm9yIGNvZGVzIGluIHNvbWUgMTZiaXQgb2xlIHN0dWJzLCByZXR1cm5pbmcgc3VjY2VzcyBjYXVzZXMKCWNyYXNoZXMuCgoJKiBpbmNsdWRlL2NvbmZpZy5oLmluLCBtaXNjL29wdGlvbnMuYywgcHJvZ3JhbXMvY2xvY2svbWFpbi5jLAoJICBwcm9ncmFtcy93aW52ZXIvd2ludmVyLmMsIHdpbmRvd3Mvbm9uY2xpZW50LmMsIE1ha2VmaWxlLmluLAoJICBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYzoKCVVwZGF0ZWQgY29uZmlndXJlIHRvIHRha2UgYWR2YW50YWdlIG9mIG5ldyBhdXRvY29uZiAyLjUzIGZlYXR1cmVzLgoKCSogZGxscy93aW5lZG9zL01ha2VmaWxlLmluLCBkbGxzL3dpbmVkb3MvaW50MTAuYywKCSAgZGxscy93aW5lZG9zL2ludDIxLmMsIGRsbHMvd2luZWRvcy9pbnQyOS5jLCBpbmNsdWRlL2NvbnNvbGUuaDoKCVJlbW92ZWQgb2Jzb2xldGUgY29uc29sZSBkcml2ZXIuCgoJKiBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwvdGVzdHMvLmN2c2lnbm9yZSwKCSAgZGxscy9rZXJuZWwvdGVzdHMvcGF0aC5jOgoJR2VvZmZyZXkgSGF1c2hlZXIgPGkxMzRydGg4ZDlzQHBocmFjdHVyZWRibHVlLmNvbT4KCUFkZGVkIHRlc3QgZm9yIEdldEZ1bGxQYXRoTmFtZXNBLCBHZXRMb25nUGF0aE5hbWVzQSwKCUdldFNob3J0UGF0aE5hbWVzQSwgR2V0Q3VycmVudERpcmVjdG9yeUEsIFNldEN1cnJlbnREaXJlY3RvcnlBLgoKCSogZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJU0lDX0dldEljb25JbmRleDogc3RhcnQgRFBBX1NlYXJjaCBmcm9tIGluZGV4IDAuCgoJKiB1bmljb2RlL3djdG9tYi5jOgoJJ3VzZWQnIHNob3VsZCBiZSBzZXQgZXZlbiBpZiB3ZSBhcmUgb25seSBjb21wdXRpbmcgdGhlIG5lY2Vzc2FyeQoJYnVmZmVyIHNpemUuCgoJKiBkbGxzL2NyeXB0MzIvbWFpbi5jLCBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGZpbGVzL2ZpbGUuYzoKCVN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJQ29tcGlsZSBmaXhlcyBmb3IgZ2NjIDIuNy4yLjMuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWJvZXguYzoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CgktIGltcGxlbWVudCBMUFNUUl9URVhUQ0FMTEJBQ0sKCS0gZml4IG1hbnkgbWVtb3J5LW1hbmFnZW1lbnQgYnVncwoJLSBtYW55IFVuaWNvZGUgZml4ZXMKCS0gZml4IGluZGVudGF0aW9uIGluIGEgZmV3IHBsYWNlcwoJLSBiaXRzIG9mIGNvZGUgY2xlYW51cAoKCSogZGxscy93aW5lZG9zL2ludDEwLmMsIGRsbHMvd2luZWRvcy92Z2EuYywgZGxscy93aW5lZG9zL3ZnYS5oOgoJSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJUmVtb3ZlZCBvYnNvbGV0ZSB0ZXh0IG1vZGUgY29sb3IgYW5kIGF0dHJpYnV0ZSBjb2RlLgoJTWFkZSByb3V0aW5lcyBmb3IgdGV4dCBtb2RlIHNjb2xsaW5nLCBjbGVhcmluZyBhbmQgZ2V0dGluZyBjaGFyYWN0ZXIKCWF0IGN1cnNvciB1c2UgV2luZG93cyBjb25zb2xlIGFuZCBWR0EgYnVmZmVyLgoKCSogZGxscy9jb21tZGxnL3ByaW50ZGxnLmM6CglNYXJjdXMgTWVpc3NuZXIgPE1hcmN1cy5NZWlzc25lckBjYWxkZXJhLmRlPgoJSW1wbGVtZW50ZWQgUHJpbnREbGdXIGFuZCBQYWdlU2V0dXBEbGdXLgoKCSogc2VydmVyL3dpbmRvdy5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJZ2V0X3dpbmRvd19jaGlsZHJlbjogb25seSBkZWNyZW1lbnQgYXZhaWxhYmxlIHNpemUgaWYgZWxlbWVudCB3YXMKCXdyaXR0ZW4uCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglMSVNUVklFV19HZXRDb2x1bW5UOiBjYXJlIGZvciB0aGUgZm9ybWF0IG9mIHRoZSBzdHJpbmcuCglMSVNUVklFV19DcmVhdGU6IHNlbmQgSERNX1NFVFVOSUNPREVGT1JNQVQgbWVzc2FnZS4KCgkqIGRsbHMvbXN2aWRlby9tY2l3bmQuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCU1DSVduZENyZWF0ZUE6IGNoZWNrIGZvciBOVUxMIGZpbGVuYW1lLgoKCSogY29udHJvbHMvZWRpdC5jOgoJUml6c2FueWkgWnNvbHQgPHJpenNhbnlpQG15cmVhbGJveC5jb20+CglTZW5kaW5nIEVOX1VQREFURSBub3RpZmljYXRpb24gaW4gdGhlIEVESVRfV01fU2V0VGV4dCAtIHRoZSBjb21tZW50CglhbHJlYWR5IHNheXMsIHRoYXQgdGhlIG1lc3NhZ2UgaXMgc2VudCwgYnV0IGl0IGlzIG5vdC4uLgoKMjAwMi0wNC0wOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNjaGVkdWxlci9wcm9jZXNzLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQ3JlYXRlIG5ldyBjb25zb2xlIG9ubHkgaWYgdGhlIHByb2Nlc3MgaXMgYSBjb25zb2xlIGFwcGxpY2F0aW9uLgoKCSogd2luZG93cy9kZWZ3bmQuYywgd2luZG93cy9ub25jbGllbnQuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglGaXhlZCBwcm9ibGVtIHdpdGggbW91c2UgY3Vyc29ycyBpbiBXb3JkLgoKCSogY29udHJvbHMvc3RhdGljLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWx3YXlzIGVyYXNlIGJhY2tncm91bmQuCgoJKiBncmFwaGljcy94MTFkcnYvYml0Ymx0LmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglXZSBkb24ndCBoYW5kbGUgU1RSRVRDSF9IQUxGVE9ORSBtb2RlIHlldDsgbWFrZSB0aGlzIGRvIHRoZSBzYW1lIGFzCglTVFJFVENIX0RFTEVURVNDQU5TIGZvciBub3cuCgoyMDAyLTA0LTA4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy93aW4uYzoKCU5lZWQgdG8gY2hlY2sgZm9yIGZvY3VzIGFuZCBjYXB0dXJlIGFsc28gb24gdGhlIGNoaWxkcmVuIG9mIHRoZSB3aW5kb3cKCWJlaW5nIGRpc2FibGVkLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvbXNpc3lzLy5jdnNpZ25vcmUsCgkgIGRsbHMvbXNpc3lzL01ha2VmaWxlLmluLCBkbGxzL21zaXN5cy9tc2lzeXMuYywKCSAgZGxscy9tc2lzeXMvbXNpc3lzLm9jeC5zcGVjOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQHN0YXJ0LmNvbS5hdT4KCUNyZWF0ZWQgYSBzdHViYmVkIHZlcnNpb24gb2YgTVNJU1lTLk9DWC4KCgkqIHdpbmRvd3Mvc3B5LmM6CglHdXkgQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJU29tZSBhZGRpdGlvbmFsIHRyYWNlcy4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYzoKCUR1c2FuIExhY2tvIDxkbGFja29AY29kZXdlYXZlcnMuY29tPgoJSWYgd2UgY2FuJ3QgZXh0cmFjdCB0aGUgaWNvbiwgZGVmZXIgbGluayBjcmVhdGlvbiB0byBydW5vbmNlLgoKCSogZ3JhcGhpY3MveDExZHJ2L29wZW5nbC5jOgoJRml4ZWQgY29tcGlsZSB3aGVuIEhBVkVfT1BFTkdMIGlzIG5vdCBkZWZpbmVkLgoKCSogY29udHJvbHMvZWRpdC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIENTX1BBUkVOVERDIHN0eWxlLgoKCSogaW5jbHVkZS91cmxtb24uaDoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBzb21lIGVycm9yIGNvZGVzLgoKCSogZGxscy9NYWtlZmlsZS5pbiwgZGxscy91cmxtb24vTWFrZWZpbGUuaW4sIGRsbHMvdXJsbW9uL2NvbWltcGwuYywKCSAgZGxscy91cmxtb24vY29taW1wbC5oLCBkbGxzL3VybG1vbi9tb25pa2VyLmMsIGRsbHMvdXJsbW9uL3Vtb24uYywKCSAgZGxscy91cmxtb24vdXJsbW9uLnNwZWMsIGRsbHMvdXJsbW9uL3VybG1vbl9tYWluLmM6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJQWRkZWQgc29tZSBzdHVicy4KCgkqIGRsbHMvY29tY3RsMzIvc3RhdHVzLmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJLSBnZXQgcmlkIG9mIHBhcmVudCBoYW5kbGUgZnJvbSBpbmZvIHN0cnVjdAoJLSBzdG9yZSBod25kIGluIGluZm8gc3RydWN0LCBkbyBub3QgcGFzcyBpdCBhcm91bmQKCS0gdXNlIHVuaWNvZGUgZnVuY3Rpb25zIHdoZXJldmVyIHBvc3NpYmxlCgktIGNvbnNpc3RlbnQgaW5kZW50YXRpb24KCS0gYnVncyBpbiBVbmljb2RlIGhhbmRsaW5nIGZpeGVkCgktIGZpeCBoYW5kbGluZyBvZiBlcnJvciBjb25kaXRpb25zCgktIGZpeCBpbml0aWFsaXphdGlvbiBidWdzLCBldGMuCgktIGNvbXBsZXRlIHRvb2x0aXAgc3VwcG9ydAoJLSB0eXBlc2FmZXR5CgktIHVwZGF0ZSB0aGUgRklYTUUgbGlzdCB0byB0aGUgbGF0ZXN0IHNwZWNzCgoJKiBpbmNsdWRlL3gxMWRydi5oLCBncmFwaGljcy94MTFkcnYvb3BlbmdsLmM6CglNaWNoYWVsIEthcmNoZXIgPG1pY2hhZWwua2FyY2hlckBkcGsuYmVybGluLmZpZG8uZGU+CglGaXhlZCBPcGVuR0wgcm91dGluZXMgYnJva2VuIGJ5IHRoZSBEQyAtPiBQSFlTREVWIGNoYW5nZS4KCgkqIHByb2dyYW1zL3dpbmV0ZXN0L21ha2VfY3lnd2luX21ha2VmaWxlczoKCUdlb2ZmcmV5IEhhdXNoZWVyIDxpMTM0cnRoOGQ5c0BwaHJhY3R1cmVkYmx1ZS5jb20+CglBZGRlZCBjb21tZW50cyBleHBsYWluZyBob3cgdG8gdXNlIGN5Z3dpbi9taW5ndy93aW5lIGhlYWRlcnMuCglBZGRlZCAnY2xlYW4nIGFuZCAnZGlzdGNsZWFuJwoJQWRkZWQgbmV3IG9wdGlvbnMgLXMgYW5kIC1pLgoJQXJjaGl2ZXMgd2lsbCBub3cgaW5jbHVkZSB0aGUgZW50aXJlICcuL2luY2x1ZGUnIGRpcmVjdG9yeSBpbnN0ZWFkIG9mCglqdXN0ICcuL2luY2x1ZGUvd2luZScuCglSZW5hbWVkIG1ha2VmaWxlIGZyb20gTWFrZWZpbGUuY3lnIHRvIE1ha2VmaWxlLndpbi4KCVRoZSBtYWtlZmlsZSBpcyBub3cgbWluZ3cgY29tcGF0aWJsZSBhcyB3ZWxsIChhbHRob3VnaCBpdCdzIGJlIGJldHRlcgoJaWYgd2UgY291bGQgZGV0ZWN0IHRoZSBjb3JyZWN0IGxvY2F0aW9uIG9mIHRoZSB3aW5kb3dzLmggaGVhZGVycykuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWJvZXguYzoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CgktIGZpeCBpbmRlbnRhdGlvbgoJLSBoYW5kbGUgYWxsIG91dC1vZi1tZW1vcnkgY2FzZXMKCS0gYmV0dGVyIGRyYXdpbmcgY29kZQoJLSBmaXggQ0JFU19FWF9OT0VESVRJTUFHRSBoYW5kbGluZwoJLSBpbXBsZW1lbnQgQ0JFU19FWF9OT0VESVRJTUFHRUlOREVOVAoJLSBpbXBsZW1lbnQgSV97SU5ERU5ULElNQUdFfUNBTExCQUNLCgktIGZpeCBub3RpZmljYXRpb24gY29kZSBmb3IgQU5TSS9Vbmljb2RlCgktIG1ha2UgdXNlIG9mIGlPdmVybGF5IGltYWdlCgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOgoJUGF1bCBSdXBlIDxwcnVwZUBuYy5yci5jb20+CglBZGRlZCBrZXltYXAgdGFibGVzIGZvciBVUyBkdm9yYWsgbGF5b3V0LgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jOgoJR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglBbHNvICNpbmNsdWRlIDxzeXMvdWlvLmg+LgoKCSogZG9jdW1lbnRhdGlvbi9zYW1wbGVzL3dpbi5pbmk6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJQWRkZWQgYSBzYW1wbGUgd2luLmluaS4KCgkqIGRsbHMvcXVhcnR6L01ha2VmaWxlLmluLCBkbGxzL3F1YXJ0ei9tYWluLmMsIGRsbHMvcXVhcnR6L21wYWRlYy5jLAoJICBkbGxzL3F1YXJ0ei9tcHZkZWMuYywgZGxscy9xdWFydHoveGZvcm0uaDoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglBZGRlZCBzb21lIHN0dWJzLgoKCSogZGxscy93aW5tbS93aW5tbV9KYS5yYywgZGxscy93aW5tbS93aW5tbV9yZXMucmM6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJQWRkZWQgcmVzb3VyY2VzIGZvciBKYXBhbmVzZS4KCgkqIGRsbHMvcXVhcnR6L3BhcnNlci5jLCBkbGxzL3F1YXJ0ei9wYXJzZXIuaDoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglGaXhlZCBjcmFzaGluZyBpbiBzdG9wcGluZyBwYXJzZXIuCgoJKiB3aW5kb3dzL3N5c3BhcmFtcy5jOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCVVzZSBkZWZhdWx0IEdVSSBmb250IGluc3RlYWQgb2YgaGFyZC1jb2RlZCAnTVMgU2FucyBTZXJpZicuCgoJKiBkbGxzL3dpbmVkb3MvaW50MjEuYzoKCUp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCUNvbnZlcnRlZCAicmVhZCBzdGFuZGFyZCBpbnB1dCB3aXRoIGVjaG8iIGludGVycnVwdCBzZXJ2aWNlIHRvIHVzZQoJY29tbW9uIERPU1ZNIGNvbnNvbGUgaW5wdXQgcm91dGluZSBhbmQgbWFkZSB0aGUgc2VydmljZSByZWFsbHkgZWNoby4KCgkqIGRsbHMvd2luZWRvcy9pbnQxMC5jLCBkbGxzL3dpbmVkb3MvdmdhLmMsIGRsbHMvd2luZWRvcy92Z2EuaDoKCUp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCVdyaXRlcyB0byBzdGRvdXQgYW5kIFZHQV9Xcml0ZUNoYXJzIHJvdXRpbmUgbm93IHVwZGF0ZSBib3RoIFZHQQoJYnVmZmVycyBhbmQgV2luZG93cyBjb25zb2xlLgoJQWRkZWQgcm91dGluZSBmb3IgY2hhbmdpbmcgY3VycmVudCBjb25zb2xlIGF0dHJpYnV0ZXMuCglNb3ZlZCB0ZXh0IG1vZGUgaGFuZGxpbmcgZnJvbSBWR0FfUG9sbCBpbnRvIG5ldyByb3V0aW5lIGFuZCBjaGFuZ2VkCglsb2NraW5nIHByaW1pdGl2ZSBpbnRvIGNyaXRpY2FsIHNlY3Rpb24uCgoJKiBkbGxzL3dpbm1tL21jaXdhdmUvbWNpd2F2ZS5jOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUZpeGVkIGFuIG92ZXJmbG93IGluIGNhbGN1bGF0aW5nIHRpbWVzLgoKMjAwMi0wNC0wNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmVkZWZhdWx0LnJlZzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGRlZCByZWdpc3RyeSBlbnRyaWVzIHJlcXVpcmVkIGZvciBJRSBpbnN0YWxsZXIuCgoJKiB3aW5kb3dzL3gxMWRydi9jbGlwYm9hcmQuYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCURvbid0IGhhbmcgYXJvdW5kIGZvciBhIG1pbnV0ZSBpZiB3ZSBjYW4ndCBleGVjIHRoZSBjbGlwYm9hcmQgc2VydmVyLgoKCSogd2luZG93cy9mb2N1cy5jLCB3aW5kb3dzL3dpbnBvcy5jOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVJlcGxhY2Ugc29tZSBTZW5kTWVzc2FnZSB3aXRoIFNlbmROb3RpZnlNZXNzYWdlIGluIGNhc2UgdGhlIHRhcmdldAoJd2luZG93IGJlbG9uZ3MgdG8gYW5vdGhlciB0aHJlYWQuCgoJKiBwcm9ncmFtcy91bmluc3RhbGxlci9tYWluLmM6CglKZXJlbXkgV2hpdGUgPGp3aGl0ZUBjb2Rld2VhdmVycy5jb20+CglGaXhlZCBleGl0IHN0YXR1cyBpbiBzb21lIGNhc2VzLgoKCSogb2JqZWN0cy90ZXh0LmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglTcG91dCBhIEZJWE1FIGlmIHdlIHRyeSB0byBjYWxsIEV4dFRleHRPdXQgb24gYW4gb3BlbiBwYXRoLgoKCSogZGxscy93aW5lcHMvZHJpdmVyLmMsIGRsbHMvd2luZXBzL2luaXQuYywgZGxscy93aW5lcHMvcHMuYywKCSAgZGxscy93aW5lcHMvcHNkcnYuaCwgZGxscy93aW5lcHMvd2luZXBzLnNwZWM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgUmVzZXREQyBhbmQgUEhZU0lDQUxPRkZTRVRbWHxZXSBkZXZjYXBzLgoJRml4ZXMgdG8gTWVyZ2VEZXZtb2Rlcy4KCgkqIGRsbHMvd2luZXBzL2luaXQuYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUNoYW5nZWQgZGVmYXVsdCBwYXBlciBzaXplIHRvIGxldHRlci4KCgkqIHNlcnZlci9wcm9jZXNzLmM6CglBdm9pZCBjcmFzaCB3aGVuIHRyeWluZyB0byBhdHRhY2ggdG8gYSB0ZXJtaW5hdGluZyBwcm9jZXNzLgoKCSogZGxscy9nZGkvZHJpdmVyLmMsIGRsbHMvZ2RpL2VuaG1mZHJ2L2luaXQuYywgZGxscy9nZGkvbWZkcnYvaW5pdC5jLAoJICBkbGxzL2dkaS93aW4xNmRydi9pbml0LmMsIGluY2x1ZGUvZ2RpLmgsIG9iamVjdHMvZGMuYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIHN1cHBvcnQgZm9yIFJlc2V0REMuCgoyMDAyLTA0LTA1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy93aW5lcHMvZHJpdmVyLmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglNYWtlIEV4dERldmljZU1vZGUgZGlhbG9nIHVzZSB1bmljb2RlIHByb3BlcnR5IHNoZWV0IGZ1bmN0aW9ucy4KCgkqIHdpbmVkZWZhdWx0LnJlZzoKCU1hcmN1cyBNZWlzc25lciA8TWFyY3VzLk1laXNzbmVyQGNhbGRlcmEuZGU+CglIS0VZX0xPQ0FMX1VTRVIgc2hvdWxkIGJlIEhLRVlfQ1VSUkVOVF9VU0VSLgoKCSogc2VydmVyL2FzeW5jLmgsIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci90aHJlYWQuYywKCSAgc2VydmVyL3RyYWNlLmMsIGRsbHMva2VybmVsL2NvbW0uYywgZmlsZXMvZmlsZS5jLCBpbmNsdWRlL2FzeW5jLmgsCgkgIGluY2x1ZGUvZmlsZS5oLCBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsIHNjaGVkdWxlci9zeW5jaHJvLmMsCgkgIHNlcnZlci9hc3luYy5jOgoJTWFydGluIFdpbGNrIDxNYXJ0aW4uV2lsY2tAZnVqaXRzdS1zaWVtZW5zLmNvbT4KCS0gc2VwYXJhdGUgY2xlYW5seSBiZXR3ZWVuIGFzeW5jIHNjaGVkdWxpbmcgYW5kIGZpbGUgSU8gcmVsYXRlZCBpc3N1ZXMuCgktIG1ha2UgdGhlIEFQSSBjb21wYXRpYmxlIHdpdGggb3RoZXIgdHlwZXMgb2YgYXN5bmMgcmVxdWVzdHMgKGUuZy4gZm9yCgkgIHNvY2tldHMpLgoJLSByZW1vdmUgZXhwb3J0cyBvZiBhc3luYyBJTyByZWxhdGVkIGZ1bmN0aW9ucyBmb3IgRExMIHNlcGFyYXRpb24uCgoJKiBvYmplY3RzL2ZvbnQuYzoKCUZpeGVkIEdldFRleHRFeHRlbnRQb2ludEkgZHJpdmVyIHVzYWdlLgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jLCBkbGxzL3dpbnNvY2svd3MyXzMyLnNwZWM6CglNYXJ0aW4gV2lsY2sgPE1hcnRpbi5XaWxja0BmdWppdHN1LXNpZW1lbnMuY29tPgoJTWFrZSB0aGUgcmVjdigpIGFuZCBzZW5kKCkgZmFtaWx5IG9mIGZ1bmN0aW9ucyB1c2UgV1NBUmVjdkZyb20oKSBhbmQKCVdTQVNlbmRUbygpLgoKCSogaW5jbHVkZS93aW5udC5oOgoJU3RldmVuIEVkd2FyZHMgPFN0ZXZlbl9FZDQxNTNAeWFob28uY29tPgoJRml4ZWQgbWluZ3czMiB3YXJuaW5nIGFib3V0IHN0ZGNhbGwgYW5kIGZhc3RjYWxsIGJlaW5nIHJlZGVmaW5lZC4KCgkqIGRsbHMvdXNlci90ZXh0LmM6CglTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1saW5lLmNvbT4KCUNoZWNrIGZvciBOVUxMIHBvaW50ZXIgaW4gRHJhd1RleHRFeEEuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWJvZXguYzoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CgktIGZpeCBlZGl0IGJveCBwbGFjZW1lbnQKCS0gcmVvcmdhbml6ZSBkcmF3aW5nIGZvciBwcm9wZXIgaGFuZGxpbmcgb2YgZWRpdCBib3gKCS0gdHlwZXNhZmV0eSB3aGVuIHByb2Nlc3NpbmcgbWVzc2FnZXMKCS0gc3ViY2xhc3MgZWRpdCB0byBoYW5kbGUgdXAvZG93biBhcnJvd3MKCS0gbW9yZSByb2J1c3QgaGFuZGxpbmcgb2YgZmFpbHVyZSBjYXNlcwoJLSBudW1lcm91cyBidWdzIGZpeGVkCgktIGNvbXBsZXRlIHVuaWNvZGlmaWNhdGlvbgoJLSBtb3JlIHNwZWNpZmljIGRlYnVnIG1lc3NhZ2VzCgktIHJlbW92ZSBjdnMgbG9nIGluZm8gZnJvbSBmaWxlCgktIGNvbnNpc3RlbnQgaW5kZW50YXRpb24KCgkqIGluY2x1ZGUvY29tbWN0cmwuaDoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CgktIEFkZCBkZWZpbmVzIGZvciB0aGUgTk1UQkhPVElURU0gZmxhZyB3b3JkLgoJLSBBZGQgZGVmaW5lcyBmb3IgdGhlIE5NX0NVU1RPTURSQVcgcmV0dXJuIGZsYWdzIGZvciB0b29sYmFyLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJLSBVc2UgdGhlIG5ldyBjb21jdGwzMiBjb2xvciBhcnJheSBmb3IgdGhlIGNvbG9ycy4gUHJvdmlkZXMgYmV0dGVyCgkgIHN1cHBvcnQgZm9yIHRoZSBUQl9TRVRDT0xPUlNDSEVNRS4KCS0gRG8gc29tZSBvcHRpbWl6YXRpb25zLgoJLSBDb3JyZWN0IGNvbXB1dGF0aW9uIG9mIG5IZWlnaHQgYW5kIFBHTl9DQUxDU0laRS4KCS0gSW1wbGVtZW50IHRoZSB1bmRvY3VtZW50ZWQgMDQ1RSBtZXNzYWdlLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMi5oLCBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJLSBLZWVwIHRyYWNrIG9mIGFsbCBzeXN0ZW0gY29sb3JzIHVzZWQgYnkgY29tY3RsMzIuZGxsLgoJLSBQcm92aWRlIHJvdXRpbmUgdG8gc3VwcG9ydCB0aGUgV01fU1lTQ09MT1JDSEFOR0UgbWVzc2FnZS4KCgkqIGRsbHMvY29tY3RsMzIvcmViYXIuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglBZGp1c3QgdGhlIGNoaWxkIG9mZnNldCB4IHZhbHVlIGJhc2VkIG9uIGJhbmQgc3R5bGUgUkJCU19DSElMREVER0UuCgoJKiBkbGxzL2NvbWN0bDMyL3BhZ2VyLmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJLSBUcnkgdG8gbWF0Y2ggdGhlIG5hdGl2ZSBjb250cm9sIGZvciB0aGUgU2V0QmtDb2xvciBtZXNzYWdlLgoJLSBDb3JyZWN0IHByb2Nlc3NpbmcgaW4gTkNDYWxjU2l6ZSBtZXNzYWdlIHByb2Nlc3NpbmcuCgoyMDAyLTA0LTA0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9nZGkvZnJlZXR5cGUuYzoKCUZpeGVkIGNvbXBpbGUgd2l0aG91dCBmcmVldHlwZS4KCjIwMDItMDQtMDMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmM6CglDaGFybGVzIExvZXAgPGNoYXJsZXNAY29kZXdlYXZlcnMuY29tPgoJU3VwcG9ydCBmb3IgaGlkaW5nIGZpbGUgZXh0ZW5zaW9ucyBpbiBJU2hlbGxGb2xkZXJfR2V0RGlzcGxheU5hbWVPZi4KCgkqIGRsbHMvc2hlbGwzMi9waWRsLmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglDaGVjayBmb3IgZmFpbHVyZSBvZiBJU2hlbGxGb2xkZXJfR2V0RGlzcGxheU5hbWVPZi4KCgkqIHNlcnZlci9tYWluLmMsIHNlcnZlci9vYmplY3QuaCwgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3JlcXVlc3QuYywKCSAgc2VydmVyL3NlbGVjdC5jOgoJQWRkZWQgdGltZXIgb24gc2VydmVyIGV4aXQgdG8gd2FpdCBhIGJpdCBmb3IgbmV3IGNsaWVudHMuCglEb24ndCByZW1vdmUgdGhlIHNvY2tldCB1bnRpbCB0aGUgcmVnaXN0cnkgaXMgY2xvc2VkIHRvIGF2b2lkIGEgcmFjZS4KCgkqIGRsbHMvbXN2Y3J0MjAvbXN2Y3J0MjAuc3BlYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRm9yd2FyZCBDKysgZnVuY3Rpb25zIHRvIHRoZSBtc3ZjcnQgbGlicmFyeS4KCgkqIGRsbHMvZ2RpL21mZHJ2L3RleHQuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglVc2UgcmVjdCBvbmx5IGlmIHRoZXJlIGFyZSBmbGFncy4KCgkqIGRsbHMvZ2RpL21mZHJ2L2luaXQuYywgZGxscy9nZGkvbWZkcnYvbWV0YWZpbGVkcnYuaDoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIHdyaXRpbmcgTUVUQV9FU0NBUEUgcmVjb3Jkcy4KCgkqIG9iamVjdHMvbWV0YWZpbGUuYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCURvIG5vdCBlbnVtZXJhdGUgdGhlIE1FVEFfRU9GIHJlY29yZC4KCgkqIGRsbHMvZ2RpL2ZyZWV0eXBlLmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglSZW1vdmVkIG9sZCBGRl8gY29kZS4KCgkqIGRsbHMvY29tY3RsMzIvaGVhZGVyLmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglGaXggb2ZmIGJ5IG9uZSBlcnJvciBpbiBIRUFERVJfSW5zZXJ0SXRlbVcuCgoJKiBsaWJyYXJ5L2xvYWRlci5jOgoJTWFrZSBkbG9wZW5fZGxsIHJldHVybiBhbiBlcnJvciBpbW1lZGlhdGVseSBpZiB0aGUgbGlicmFyeSBleGlzdHMgYnV0CglkbG9wZW4oKSBmYWlscy4KCgkqIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJSWYgbGZGYWNlTmFtZSA9PSAiIiwgdGhlbiB3ZSBwYXRjaCB1cCB0aGUgbmFtZXMgYWNjb3JkaW5nIHRvCglsZlBpdGNoQW5kRmFtaWx5LiAgVGhpcyBpcyBub3QgdmVyeSBwcmV0dHkgSSdtIGFmcmFpZC4uLgoKCSogZGxscy9nZGkvZnJlZXR5cGUuYywgZGxscy9nZGkvZ2RpMzIuc3BlYywgZGxscy94MTFkcnYveHJlbmRlci5jLAoJICBpbmNsdWRlL2ZvbnQuaCwgaW5jbHVkZS9nZGkuaCwgaW5jbHVkZS93aW5nZGkuaCwgb2JqZWN0cy9mb250LmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgR2V0VGV4dEV4dGVudFBvaW50SSBhbmQgYWRkIHN1cHBvcnQgZm9yIEVUT19HTFlQSF9JTkRFWC4KCgkqIGdyYXBoaWNzL3gxMWRydi9pbml0LmMsIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLCBpbmNsdWRlL3gxMWRydi5oOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJRG9uJ3QgY2FsY3VsYXRlIGNhY2hlZCBtZXRyaWNzIG9yIGVudW1lcmF0ZSBYMTEgZm9udHMgaWYgd2UncmUgdXNpbmcKCWNsaWVudCBzaWRlIGZvbnRzLgoKCSogb2JqZWN0cy9mb250LmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglGaXhlZCBmb250IGVudW1lcmF0aW9uLgoKCSogZGxscy9nZGkvZnJlZXR5cGUuYywgZGxscy94MTFkcnYveHJlbmRlci5jLCBpbmNsdWRlL2ZvbnQuaCwKCSAgb2JqZWN0cy9nZGlvYmouYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBhIGZldyBmb250IHByb2JsZW1zIHdpdGggcm90YXRlZCB0ZXh0IGFuZCBub24gTU1fVEVYVCBtYXBwaW5nCgltb2Rlcy4gRG8gc2xpZ2h0bHkgYmV0dGVyIHdpdGggdGhlIEZGXyBmbGFncyBpbiBXaW5lRW5nR2V0VGV4dE1ldHJpY3MuCgoJKiBkbGxzL2dkaS9mcmVldHlwZS5jLCB3aW5lZGVmYXVsdC5yZWc6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglBZGQgZm9udCBzdWJzdGl0dXRpb24gbG9va3VwIGluIHRoZSByZWdpc3RyeS4gIFdlIGxvb2sgdW5kZXIgdGhlIGtleQoJSEtMTVxTb2Z0d2FyZVxNaWNyb3NvZnRcV2luZG93cyBOVFxDdXJyZW50VmVyc2lvblxGb250U3Vic3RpdHV0ZXMgZm9yCgkiZnJvbU5hbWVbLGNwXSI9InRvTmFtZVssY3BdIiB3aGVyZSBjcCBjYW4gYmUgYW4gb3B0aW9uYWwgY29kZXBhZ2UuCglTdWJzdGl0dXRpb24gb2NjdXJzIGJlZm9yZSBzY2FubmluZyB0aGUgYXZhaWxhYmxlIGZvbnQgbGlzdCwgYXMgaXMgdGhlCgljYXNlIHdpdGggV2luZG93cy4KCgkqIGRsbHMvZ2RpL2ZyZWV0eXBlLmMsIGRsbHMvZ2RpL2dkaTMyLnNwZWMsIGluY2x1ZGUvZm9udC5oLAoJICBpbmNsdWRlL3dpbmdkaS5oLCBvYmplY3RzL2ZvbnQuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgR2V0R2x5cGhJbmRpY2VzLiBUd2VhayBHZXRDaGFyYWN0ZXJQbGFjZW1lbnQgdG8gdXNlIGl0LgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGluY2x1ZGUvY29uZmlnLmguaW46CglCZXR0ZXIgY2hlY2sgZm9yIC1scmVzb2x2LiBSZW1vdmVkIEZSRUVUWVBFTElCUy4KCgkqIGRsbHMvZ2RpL01ha2VmaWxlLmluLCBkbGxzL2dkaS9mcmVldHlwZS5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJTG9hZCBsaWJmcmVldHlwZS5zbyBvbiB0aGUgZmx5IHdpdGggZGxvcGVuIGFuZCBmcmllbmRzLgoKCSogd2luZG93cy9kaWFsb2cuYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCVRoZSBob3Jpem9udGFsIGRpYWxvZyBiYXNlIHVuaXQgaXMgY2FsY3VsYXRlZCBhcyB0aGUgc3RyYWlnaHQgYXZlcmFnZQoJb2YgYS16LEEtWiAodG1BdmVDaGFyV2lkdGggaXMgc3VwcG9zZWQgdG8gYmUgYSB3ZWlnaHRlZCBhdmVyYWdlCglhY2NvcmRpbmcgdG8gY2hhcmFjdGVyIHVzYWdlLCBzbyB3ZSBzaG91bGRuJ3QgdXNlIHRoaXMpLgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jLCBkbGxzL3dpbnNvY2svd3MyXzMyLnNwZWM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAc3RhcnQuY29tLmF1PgoJQWRkIHN0dWIgZm9yIFdTQUVudW1Qcm90b2NvbHMoQS9XKSBmdW5jdGlvbnMuCgoJKiBkbGxzL3dpbmVwcy9NYWtlZmlsZS5pbiwgZGxscy93aW5lcHMvdHJ1ZXR5cGUuYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUxvYWQgbGliZnJlZXR5cGUuc28gb24gdGhlIGZseSB3aXRoIGRsb3BlbiBhbmQgZnJpZW5kcy4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUVuYWJsZSBTaGVsbEV4ZWN1dGVFeCB0byBhY3R1YWxseSBvcGVuIHRoaW5ncyB3aXRoIHRoZWlyIGhlbHBlcgoJYXBwbGljYXRpb25zLgoKCSogZGxscy9jcnlwdDMyL2NyeXB0MzIuc3BlYywgZGxscy9jcnlwdDMyL21haW4uYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0BzdGFydC5jb20uYXU+CglBZGRlZCBzb21lIHN0dWJzLgoKCSogZGxscy9hZHZhcGkzMi9hZHZhcGkzMi5zcGVjLCBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmMsCgkgIGluY2x1ZGUvd2luYmFzZS5oOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgSW1wZXJzb25hdGVMb2dnZWRPblVzZXIgc3R1Yi4KCgkqIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmgsIGRsbHMvc2hsd2FwaS9wYXRoLmM6CglBdm9pZCBsb2NhbCBXSU5BUEkgZnVuY3Rpb24gcG9pbnRlcnMgdG8gd29yayBhcm91bmQgZ2NjIGJ1Zy4KCgkqIGdyYXBoaWNzL3gxMWRydi9iaXRtYXAuYywgZ3JhcGhpY3MveDExZHJ2L2JydXNoLmMsCgkgIGdyYXBoaWNzL3gxMWRydi9kaWIuYywgZ3JhcGhpY3MveDExZHJ2L3Blbi5jLAoJICBncmFwaGljcy94MTFkcnYveGZvbnQuYywgZGxscy9zZXR1cGFwaS9kaXJpZC5jLAoJICBkbGxzL3NldHVwYXBpL3NldHVwYXBpLnNwZWMsIGRsbHMvc2V0dXBhcGkvc3R1YnMuYywKCSAgZGxscy90dHlkcnYvYml0bWFwLmMsIGRsbHMvdHR5ZHJ2L29iamVjdHMuYywgZGxscy93aW5lcHMvYnJ1c2guYywKCSAgZGxscy93aW5lcHMvZm9udC5jLCBkbGxzL3dpbmVwcy9vYmplY3RzLmMsIGRsbHMvd2luZXBzL3Blbi5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIGlzc3VlcyBmb3VuZCBieSB3aW5hcGlfY2hlY2suCgoJKiB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5kYXQsIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLnBtLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMTYvc2V0dXB4LmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL2ltYWFkcDMyLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL250ZGxsLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3NldHVwYXBpLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3R0eWRydi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi93aW5lcHMuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIveDExZHJ2LmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9jaGVjazoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBNaW5vciBBUEkgZmlsZSB1cGRhdGUuCgktIE1pbm9yIGJ1ZyBmaXhlcy4KCgkqIGRsbHMvd2luZWRvcy9kb3NleGUuaCwgZGxscy93aW5lZG9zL2ludDEwLmMsIGRsbHMvd2luZWRvcy9pbnQyMS5jLAoJICBkbGxzL3dpbmVkb3MvaW50MjkuYzoKCUp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCVJlZGlyZWN0IERPUyB3cml0ZXMgdG8gc3Rkb3V0L2NvbnNvbGUgdG8gRE9TVk1fUHV0Q2hhci4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL3RocmVhZC5jOgoJR2VvZmZyZXkgSGF1c2hlZXIgPGkxMzRydGg4ZDlzQHBocmFjdHVyZWRibHVlLmNvbT4KCUNsZWFuZWQgdXAgYSBiaXQsIHJlbW92ZWQgdG9kb3MgZm9yIE9wZW5UaHJlYWQsIGF2b2lkIFRlcm1pbmF0ZVRocmVhZAoJcmFjZS4KCjIwMDItMDQtMDIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2RpbnB1dC9kZXZpY2UuYywgZGxscy9pY21wL2ljbXBfbWFpbi5jLAoJICBkbGxzL3JpY2hlZGl0L3JpY2hlZGl0LmMsIGxvYWRlci9tb2R1bGUuYywgbG9hZGVyL3BlX2ltYWdlLmM6CglBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CglTcGVsbGluZy9lcnJvciBtZXNzYWdlcyBmaXhlcy4KCgkqIGRlYnVnZ2VyL3N0YWJzLmM6IE1vcmUgcG9ydGFibGUgc2lnbmF0dXJlIGNoZWNrLgoKCSogbWVtb3J5L2dsb2JhbC5jLCBtaXNjL2NwdS5jOgoJQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJQWRkIHJldHVybiB0cmFjZXMgdG8gR2xvYmFsTWVtb3J5U3RhdHVzLCBHZXRTeXN0ZW1JbmZvIGFuZCBmaXhtZSBpbgoJR2V0U3lzdGVtSW5mby4KCgkqIHNjaGVkdWxlci90aHJlYWQuYywgZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sCgkgIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGRsbHMva2VybmVsL3Rlc3RzLy5jdnNpZ25vcmUsCgkgIGRsbHMva2VybmVsL3Rlc3RzL3RocmVhZC5jLCBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW5udC5oOgoJR2VvZmZyZXkgSGF1c2hlZXIgPGkxMzRydGg4ZDlzQHBocmFjdHVyZWRibHVlLmNvbT4KCUFkZGVkIHRlc3QgZm9yIHRocmVhZCBmdW5jdGlvbnMuCgoJKiBwcm9ncmFtcy93aW5ldGVzdC9tYWtlX2N5Z3dpbl9tYWtlZmlsZXM6CglHZW9mZnJleSBIYXVzaGVlciA8aTEzNHJ0aDhkOXNAcGhyYWN0dXJlZGJsdWUuY29tPgoJQWRkZWQgcGVybCBzY3JpcHQgd2hpY2ggd2lsbCBidWlsZCBhIE1ha2VmaWxlIGZvciBydW5uaW5nIEMgdGVzdHMgb24KCVdpbmRvd3MgdGhyb3VnaCBDeWd3aW4vZ2NjLgoKCSogZGxscy93aW5lZG9zL2Rvc3ZtLmM6CglKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglDb21waWxlcyBub3cgZXZlbiBvbiBwbGF0Zm9ybXMgdGhhdCBkbyBub3Qgc3VwcG9ydCBET1MgVk0uCgoJKiBkbGxzL250ZGxsL2Nkcm9tLmM6CglHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCVVzZSBFTk9NRURJVU0gZXJybm8gY29kZSBvbmx5IHdoZW4gZGVmaW5lZC4KCgkqIGRsbHMvY29tY3RsMzIvaXBhZGRyZXNzLmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJLSBjb3JyZWN0IG5vdGlmaWNhdGlvbnMKCS0gYmVoYXZpb3VyIGNsb3NlciB0byBuYXRpdmUKCS0gYmV0dGVyIGRyYXdpbmcKCS0gbXVsdGlwbGUgYnVncyBmaXhlZAoJLSBmYXN0ZXIgJiBjbGVhbmVyIGNvZGUKCS0gY29uc2lzdGVudCBpbmRlbnRhdGlvbgoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYywgZGxscy9jcnlwdDMyL21haW4uYzoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglGaXggdHdvIGNvbXBpbGF0aW9uIHdhcm5pbmdzLgoKCSogaW5jbHVkZS9udGRkay5oOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCURlY2xhcmUgc3dwcmludGYuCgoJKiBncmFwaGljcy9iaXRibHQuYywgZ3JhcGhpY3MveDExZHJ2L2JpdGJsdC5jOgoJRml4ZWQgY3Jhc2ggaW4gQml0Qmx0IHdoZW4gc291cmNlIERDIGlzIE5VTEwuCgoJKiBwcm9ncmFtcy93aW5ldGVzdC9NYWtlZmlsZS5pbiwgTWFrZS5ydWxlcy5pbiwgTWFrZWZpbGUuaW4sCgkgIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvbWFrZV9kbGxzLCBkbGxzL29sZWF1dDMyL01ha2VmaWxlLmluOgoJVmFyaW91cyBtYWtlZmlsZSBmaXhlcyBmb3IgdGhlIHRlc3QgZW52aXJvbm1lbnQuCgoJKiBkbGxzL3NldHVwYXBpL01ha2VmaWxlLmluLCBkbGxzL3NldHVwYXBpL2RpcmlkLmMsCgkgIGRsbHMvc2V0dXBhcGkvaW5mcGFyc2UuYywgZGxscy9zZXR1cGFwaS9pbnN0YWxsLmMsCgkgIGRsbHMvc2V0dXBhcGkvcGFyc2VyLmMsIGRsbHMvc2V0dXBhcGkvcXVldWUuYywKCSAgZGxscy9zZXR1cGFwaS9zZXR1cGFwaS5zcGVjLCBkbGxzL3NldHVwYXBpL3NldHVwYXBpX3ByaXZhdGUuaCwKCSAgZGxscy9zZXR1cGFwaS9zZXR1cHguc3BlYywgZGxscy9zZXR1cGFwaS9zZXR1cHhfbWFpbi5jLAoJICBkbGxzL3NldHVwYXBpL3N0dWJzLmMsIGRsbHMvc2V0dXBhcGkvdmlydGNvcHkuYywgaW5jbHVkZS9zZXR1cGFwaS5oLAoJICBpbmNsdWRlL3dpbm50Lmg6CglJbXBsZW1lbnRlZCBhIGxhcmdlIG51bWJlciBvZiB0aGUgMzItYml0IHNldHVwYXBpIGZ1bmN0aW9ucy4KCUZpeGVkIGEgbnVtYmVyIG9mIHNldHVweCBmdW5jdGlvbnMgYnkgbWFraW5nIHRoZW0gY2FsbCB0aGUgc2V0dXBhcGkKCWVxdWl2YWxlbnRzLgoKCSogc2VydmVyL3RocmVhZC5jOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCURvbid0IHN1c3BlbmQgYSB0ZXJtaW5hdGVkIHRocmVhZC4KCgkqIHdpbmRvd3Mvd2lucHJvYy5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBzaWduIGV4dGVuc2lvbiBpbiBtZXNzYWdlIG1hcHBpbmcgcm91dGluZXMuCgoJKiBzZXJ2ZXIvZGVidWdnZXIuYzoKCUF2b2lkIGNyYXNoIHdoZW4gdHJ5aW5nIHRvIGF0dGFjaCB0byBhIHRlcm1pbmF0aW5nIHByb2Nlc3MuCgoJKiByZWxheTMyL3Nub29wLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRml4ZWQgaGFuZGxpbmcgb2YgYSBkbGwgYmVpbmcgbG9hZGVkIGF0IHRoZSBzYW1lIGFkZHJlc3MgYXMgYSBwcmV2aW91cwoJb25lLgoKCSogb2JqZWN0cy9kYy5jOiBBdm9pZCByZWN1cnNpdmUgRGVsZXRlREMgY2FsbHMuCgoJKiBmaWxlcy9kb3NfZnMuYzoKCU1ha2UgR2V0RnVsbFBhdGhOYW1lIGZhaWwgaWYgaW5wdXQgcGF0aCBuYW1lIGlzIGVtcHR5LgoKCSogZGxscy92ZXJzaW9uL2luZm8uYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBbHdheXMgY2FsbCBMb2FkTGlicmFyeS4KCVdvcmthcm91bmQgYSBicm9rZW4gYmVoYXZpb3VyIG9mIHRoZSAxNi1iaXQgbG9hZGVyLgoKCSogZGxscy9udGRsbC9ydGxzdHIuYzoKCUZpeGVkIGxlbmd0aCBoYW5kbGluZyBpbiBSdGxVbmljb2RlU3RyaW5nVG9BbnNpL09lbVN0cmluZy4KCgkqIGRsbHMvbXN2Y3J0L21iY3MuYywgZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWM6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50ZWQgX21ic25iaWNtcC4KCgkqIGRsbHMvYWR2YXBpMzIvcmVnaXN0cnkuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglNYWtlIHN1cmUgdGhlIHNlY3VyaXR5IGRlc2NyaXB0b3IgaXMgaW5pdGlhbGl6ZWQgaW4gUmVnR2V0S2V5U2VjdXJpdHkuCgoJKiBkZWJ1Z2dlci9zdGFicy5jOgoJQ2hlY2sgRUxGIHNpZ25hdHVyZSBiZWZvcmUgcHJvY2Vzc2luZyBmaWxlLgoKCSogY29udHJvbHMvbWVudS5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUNvbnZlcnQgTlVMTCBtZW51IGl0ZW1zIHRvIHNlcGFyYXRvcnMuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBpbmNsdWRlL3dpbmJhc2UuaCwKCSAgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLCBzY2hlZHVsZXIvcHRocmVhZC5jLAoJICBzY2hlZHVsZXIvdGhyZWFkLmMsIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci9yZXF1ZXN0LmgsCgkgIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RyYWNlLmM6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5AYWx1bS53cGkuZWR1PgoJSW1wbGVtZW50IE9wZW5UaHJlYWQoKSB3aW5hcGkgY2FsbC4KCUltcGxlbWVudCBhIGZldyBwdGhyZWFkcyBmdW5jdGlvbnMuCgoJKiBkbGxzL21zYWNtL2ltYWFkcDMyL2ltYWFkcDMyLmMsIGRsbHMvbXNhY20vbXNnNzExL21zZzcxMS5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglNYWRlIHVzZSBvZiBNU0FDTSBkcml2ZXIgZGVmaW5pdGlvbnMuCgoJKiBkbGxzL3VzZXIvdGVzdHMvc3lzcGFyYW1zLmM6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJSW5jbHVkZSB3aW5lL3Rlc3QuaCBiZWZvcmUgd2luZG93cyBoZWFkZXJzLgoJQWRkIGRlZmluaXRpb25zIGZvciBJRElfQVBQTElDQVRJT05BIGFuZCBJRENfQVJST1dBIGZvciBXaW5kb3dzLgoJRml4IGEgY2hlY2sgaW4gdGhlIFNQSV97R0VULFNFVH1CT1JERVIgdGVzdC4KCUZpeCBiYWQgY29weS9wYXN0ZSBpbiB0aGUgU1BJX3tHRVQsU0VUfUJPUkRFUiB0ZXN0LgoJVXNlIGVxIG1hY3JvIHRvIHByaW50IHZhbHVlcyB3aGVuIHNvbWV0aGluZyBnb2VzIHdyb25nLgoKCSogcHJvZ3JhbXMvd2luZXRlc3Qvd3RtYWluLmM6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJTWFrZSB0aGUgdGVzdGluZyBmcmFtZXdvcmsgdGhyZWFkIHNhZmUuCgoyMDAyLTA0LTAxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9udGRsbC9jZHJvbS5jLCBkbGxzL3gxMWRydi94cmVuZGVyLmMsIGxpYnJhcnkvcG9ydC5jLAoJICBzZXJ2ZXIvcmVxdWVzdC5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCB3YXJuaW5ncyBmb3IgTGludXgsIEZyZWVCU0QgYW5kIFNvbGFyaXMuCgoJKiB0b29scy93aW5lYnVpbGQvYnVpbGQuaCwgdG9vbHMvd2luZWJ1aWxkL3JlbGF5LmM6CglHb3QgcmlkIG9mICNpZmRlZiBVU0VfU1RBQlMuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgaW5jbHVkZS9jb25maWcuaC5pbjoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglPbiBTb2xhcmlzIGluZXRfYXRvbiBpcyBleHBvcnRlZCBieSBsaWJyZXNvbHYuc28uCgoJKiBkbGxzL21zdmNydC9tYXRoLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgbWlzc2luZyBGUF9QTk9STSBjYXNlLgoKCSogbG9hZGVyL21vZHVsZS5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglSZW1vdmVkIGEgY291cGxlIG9mIG5vdyBvYnNvbGV0ZSBGSVhNRXMuCgoJKiBkZWJ1Z2dlci9icmVhay5jLCBkZWJ1Z2dlci9kYmcueSwgZGVidWdnZXIvZGVidWdnZXIuaCwKCSAgZGVidWdnZXIvd2luZWRiZy5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBzb21lIGJ1Z3MgaW4gZmlyc3QgY2hhbmNlIGV4Y2VwdGlvbiBoYW5kbGluZy4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglNb3JlIHJvYnVzdCBhbmQgbGVzcyB0aW1lIGNvbnN1bWluZyBwbGF5YmFjay4KCgkqIGRsbHMvd2lubW0vd2F2ZW1hcC93YXZlbWFwLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIHNpemUgb2YgYnVmZmVycyBpbiBjb252ZXJzaW9uLgoKCSogd2luMzIvY29uc29sZS5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCB3cml0aW5nIG11bHRpbGluZSBibG9jayB3aGlsZSB3cmFwcGluZyBlbmFibGVkLgoJRml4ZWQgc3RhcnR1cCBpbmZvcm1hdGlvbiByZWFkaW5nIChjb25zb2xlIHNpemUpLgoKCSogZGVidWdnZXIvbXNjLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIG1vZHVsZSBtYXBwaW5nIGZvciBkZWJ1ZyBpbmZvIHdoZW4gUEUgc2VjdGlvbiBpcyBjb21wcmVzc2VkLgoKCSogZGxscy93aW5zb2NrL3dzMl8zMi5zcGVjLCBkbGxzL3dzb2NrMzIvd3NvY2szMi5zcGVjLAoJICBpbmNsdWRlL3dpbnNvY2suaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglGaXggZm9yIHRoZSB1bmlzdGQuaCB2cy4gd2luc29jay5oIHByb2JsZW0gaW4gV2luZWxpYiBhcHBsaWNhdGlvbnMuCglSZWZpbmUgdGhlIFdTX0RFRklORV9IVE9OTCBkZWZpbml0aW9uLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvYXRvbS5wbDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglEb24ndCBib3RoZXIgd2l0aCBkZWNsYXJlLCBqdXN0ICd1c2Uga2VybmVsMzInLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvZGlyZWN0b3J5LmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJV2luZG93cyBoZWFkZXJzIG11c3QgYmUgaW5jbHVkZWQgYWZ0ZXIgd2luZS90ZXN0LmguCgoJKiBkbGxzL3F1YXJ0ei9SRUFETUUsIGRsbHMvcXVhcnR6L2FjbXdyYXAuYywgZGxscy9xdWFydHovYmFzZWZpbHQuYywKCSAgZGxscy9xdWFydHovZm1hcC5jLCBkbGxzL3F1YXJ0ei9tYWluLmMsIGRsbHMvcXVhcnR6L21wZ3BhcnNlLmMsCgkgIGRsbHMvcXVhcnR6L3BhcnNlci5jLCBkbGxzL3F1YXJ0ei94Zm9ybS5oLCB3aW5lZGVmYXVsdC5yZWc6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJRml4ZWQgc29tZSBidWdzLgoJSW1wbGVtZW50ZWQgc29tZSBtZXRob2RzIG9mIENMU0lEX0FDTVdyYXBwZXIuCgoJKiBkbGxzL29sZWF1dDMyL01ha2VmaWxlLmluLCBkbGxzL29sZWF1dDMyL2Rpc3BzdGQuYywKCSAgZGxscy9vbGVhdXQzMi9kaXNwdHlwZS5jLCBkbGxzL29sZWF1dDMyL29sZTJkaXNwLmM6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJSW1wbGVtZW50ZWQgQ3JlYXRlU3RkRGlzcGF0Y2ggYW5kIENyZWF0ZURpc3BUeXBlSW5mby4KCgkqIGRsbHMvY29tY3RsMzIvdXBkb3duLmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJLSBpbXBsZW1lbnQgVURTX0hPVFRSQUNLCgktIGltcGxlbWVudCBOTV9SRUxFQVNFRENBUFRVUkUKCS0gaW1wbGVtZW50IFVETV9bR1NdRVRVTklDT0RFRk9STUFUCgktIGdldCByaWQgb2YgV01fTkNDUkVBVEUgcHJvY2Vzc2luZwoJLSB1c2UgSW52YWxpZGF0ZVJlY3QgaW5zdGVhZCBvZiBhIHN5bmNoIHJlZnJlc2gKCS0gaW1wbGVtZW50IGF1dG8gYXV0byBhcnJvdyBwcmVzcyBvbiBrZXkgcHJlc3NlcwoJLSBtb3JlIGNvZGUgY2xlYW51cHMKCS0gYmV0dGVyIGRyYXdpbmcsIGNsb3NlciB0byBuYXRpdmUKCgkqIGluY2x1ZGUvd2ludXNlci5oOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUFkZGVkIHRoZSBERkNTX3tIT1QsVFJBTlNQQVJFTlR9IGRlZmluaXRpb25zLgoKCSogdG9vbHMvd2luZWluc3RhbGw6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5AYWx1bS53cGkuZWR1PgoJUHJldmVudCB0aGUgdXNlciBmcm9tIHJ1bm5pbmcgd2luZWluc3RhbGwgYXMgcm9vdCwgYWRkIHNjcmlwdCBjb21tYW5kcwoJc28gd2UgJ3N1IHJvb3QnIGZvciBpbnN0YWxsaW5nIGFuZCBvdGhlciBjb21tYW5kcyB0aGF0IHJlcXVpcmUgcm9vdAoJYWNjZXNzLiAgRml4IG1vZGlmaWNhdGlvbiB0aW1lIGNvbXBhcmlzb24gb2Ygd3JvbmcgZmlsZS4gIEFkZGVkCgltaXNzaW5nIHNlZCBsaW5lLiBBbHdheXMgJ21ha2UnIGJlZm9yZSB3ZSBydW4gbWFrZSBpbnN0YWxsIHNvIG5vIGJ1aWxkCglmaWxlcyBiZWNvbWUgb3duZWQgYnkgcm9vdC4KCgkqIGRsbHMvd2luZWRvcy9kb3N2bS5jOgoJSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJUm91dGluZSBET1NWTV9XYWl0IG5vdyB3YWtlcyB1cCBpZiBuZXcgZXZlbnRzIGFyZSBxdWV1ZWQgYW5kIGl0CglyZXR1cm5zIGlmIGl0IHByb2Nlc3NlZCBhbnkgcXVldWVkIGV2ZW50cy4KCjIwMDItMDMtMzEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYzoKCU1vcmUgcm9idXN0IGxpYnNhbmUgY2hlY2suCgoJKiB3aW4zMi9jb25zb2xlLmMsIHNjaGVkdWxlci9wcm9jZXNzLmM6CglIYWNrIHRvIG1ha2Ugd2luZWNvbnNvbGUgd29yayBhZ2Fpbi4KCjIwMDItMDMtMjkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3R0eWRydi90dHlkcnYuaDoKCUZpeGVkIGNvbXBpbGUgd2l0aG91dCBjdXJzZXMuCgoJKiBpbmNsdWRlL3dpbmUvc2VydmVyLmgsIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwKCSAgbWVtb3J5L2Vudmlyb24uYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2VydmVyL3Byb2Nlc3MuYywKCSAgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3RyYWNlLmM6CglUcmFuc2ZlciB0aGUgZnVsbCBwcm9jZXNzIHN0YXJ0dXAgaW5mbyBhcyB3ZWxsIGFzIHRoZSBjb21tYW5kLWxpbmUKCXRocm91Z2ggdGhlIHNlcnZlci4KCgkqIG1pc2MvcmVnaXN0cnkuYzogTG9hZCBjbGFzc2VzLmRhdCB0b28uCgoJKiBtZW1vcnkvdmlydHVhbC5jOgoJTWFrZSBzdXJlIHRoZSBpbXBvcnQgZGlyZWN0b3J5IGlzIG5vdCBpbiBzaGFyZWQgbWVtb3J5LgoKCSogZGxscy9rZXJuZWwva2VybmVsX21haW4uYywgZmlsZXMvZmlsZS5jLCBpbmNsdWRlL2ZpbGUuaCwKCSAgd2luMzIvTWFrZWZpbGUuaW4sIHdpbjMyL2ZpbGUuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglGaXggU2V0RmlsZUF0dHJpYnV0ZXMgdG8gaG9ub3IgdGhlIHVtYXNrIChyYXRoZXIgdGhhbiBtYWtpbmcgZmlsZXMKCXdvcmxkLXdyaXRhYmxlKS4KCgkqIHRvb2xzL01ha2VmaWxlLmluLCB0b29scy93aW5lbGF1bmNoZXIuaW46CglGaXhlZCB3aW5lbGF1bmNoZXIgZm9yIG5ldyBkbGwgZmlsZXMgbGF5b3V0LgoKCSogcHJvZ3JhbXMvd2luZXRlc3Qvd3RtYWluLmM6CglVc2UgRXhpdFByb2Nlc3MgdG8gdGVybWluYXRlIHRoZSBhcHBsaWNhdGlvbi4KCgkqIGxpYnJhcnkvcG9ydC5jLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgaW5jbHVkZS9jb25maWcuaC5pbjoKCU1pY2hhbCBQYXN0ZXJuYWsgPG1wYXN0ZXJuYWtAbHVibGluLnQxLnBsPgoJRml4ZWQgcGFjay91bnBhY2sgcm91dGluZXMgZm9yIFdNX0RERV9FWEVDVVRFLgoKCSogZGxscy91c2VyL2RkZS9taXNjLmM6CglGaXhlZCBwYWNrL3VucGFjayByb3V0aW5lcyBmb3IgV01fRERFX0VYRUNVVEUuCgoJKiBkb2N1bWVudGF0aW9uL3BhY2thZ2luZy5zZ21sOgoJQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJVXBkYXRlZCBmb3IgbmV3IGRsbCBuYW1lcy4KCgkqIGRsbHMvbnRkbGwvY2Ryb20uYzoKCUFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCUFkZGVkIG1hcHBpbmcgZm9yIGVycm5vIEVOT01FRElVTSB0byBTVEFUVVNfTk9fTUVESUFfSU5fREVWSUNFLgoKMjAwMi0wMy0yOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvZGRyYXcvZGRyYXcvbWFpbi5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL2RpYi5jOgoJUmVtb3ZlZCBjYWxsIHRvIERJQl9HZXRESUJXaWR0aEJ5dGVzLgoKCSogZ3JhcGhpY3MveDExZHJ2L2JpdGJsdC5jLCBncmFwaGljcy94MTFkcnYvYml0bWFwLmMsCgkgIGdyYXBoaWNzL3gxMWRydi9icnVzaC5jLCBncmFwaGljcy94MTFkcnYvY2xpcHBpbmcuYywKCSAgZ3JhcGhpY3MveDExZHJ2L2RpYi5jLCBncmFwaGljcy94MTFkcnYvZ3JhcGhpY3MuYywKCSAgZ3JhcGhpY3MveDExZHJ2L2luaXQuYywgZ3JhcGhpY3MveDExZHJ2L29iamVjdHMuYywKCSAgZ3JhcGhpY3MveDExZHJ2L3BhbGV0dGUuYywgZ3JhcGhpY3MveDExZHJ2L3Blbi5jLAoJICBncmFwaGljcy94MTFkcnYvdGV4dC5jLCBncmFwaGljcy94MTFkcnYveGZvbnQuYywgaW5jbHVkZS9iaXRtYXAuaCwKCSAgaW5jbHVkZS9nZGkuaCwgaW5jbHVkZS94MTFkcnYuaCwgb2JqZWN0cy9iaXRtYXAuYywKCSAgb2JqZWN0cy9jbGlwcGluZy5jLCBvYmplY3RzL2RjLmMsIG9iamVjdHMvZGN2YWx1ZXMuYywgb2JqZWN0cy9kaWIuYywKCSAgb2JqZWN0cy9mb250LmMsIG9iamVjdHMvZ2Rpb2JqLmMsIG9iamVjdHMvdGV4dC5jLAoJICBkbGxzL2dkaS9tZmRydi9iaXRibHQuYywgZGxscy9nZGkvbWZkcnYvZGMuYywKCSAgZGxscy9nZGkvbWZkcnYvZ3JhcGhpY3MuYywgZGxscy9nZGkvbWZkcnYvaW5pdC5jLAoJICBkbGxzL2dkaS9tZmRydi9tYXBwaW5nLmMsIGRsbHMvZ2RpL21mZHJ2L21ldGFmaWxlZHJ2LmgsCgkgIGRsbHMvZ2RpL21mZHJ2L29iamVjdHMuYywgZGxscy9nZGkvbWZkcnYvdGV4dC5jLAoJICBkbGxzL2dkaS93aW4xNmRydi9icnVzaC5jLCBkbGxzL2dkaS93aW4xNmRydi9mb250LmMsCgkgIGRsbHMvZ2RpL3dpbjE2ZHJ2L2dyYXBoaWNzLmMsIGRsbHMvZ2RpL3dpbjE2ZHJ2L2luaXQuYywKCSAgZGxscy9nZGkvd2luMTZkcnYvb2JqZWN0cy5jLCBkbGxzL2dkaS93aW4xNmRydi9wZW4uYywKCSAgZGxscy9nZGkvd2luMTZkcnYvdGV4dC5jLCBkbGxzL2dkaS93aW4xNmRydi93aW4xNmRydi5oLAoJICBkbGxzL3R0eWRydi9iaXRtYXAuYywgZGxscy90dHlkcnYvZGMuYywgZGxscy90dHlkcnYvZ3JhcGhpY3MuYywKCSAgZGxscy90dHlkcnYvb2JqZWN0cy5jLCBkbGxzL3R0eWRydi90dHlkcnYuaCwKCSAgZGxscy90dHlkcnYvdHR5ZHJ2LnNwZWMsIGRsbHMvdHR5ZHJ2L3VzZXIuYywgZGxscy93aW5lcHMvYml0Ymx0LmMsCgkgIGRsbHMvd2luZXBzL2JpdG1hcC5jLCBkbGxzL3dpbmVwcy9icnVzaC5jLCBkbGxzL3dpbmVwcy9jbGlwcGluZy5jLAoJICBkbGxzL3dpbmVwcy9jb2xvci5jLCBkbGxzL3dpbmVwcy9lc2NhcGUuYywgZGxscy93aW5lcHMvZm9udC5jLAoJICBkbGxzL3dpbmVwcy9ncmFwaGljcy5jLCBkbGxzL3dpbmVwcy9pbml0LmMsIGRsbHMvd2luZXBzL29iamVjdHMuYywKCSAgZGxscy93aW5lcHMvcGVuLmMsIGRsbHMvd2luZXBzL3BzLmMsIGRsbHMvd2luZXBzL3BzZHJ2LmgsCgkgIGRsbHMvd2luZXBzL3RleHQuYywgZGxscy93aW5lcHMvd2luZXBzLnNwZWMsCgkgIGRsbHMveDExZHJ2L3gxMWRydi5zcGVjLCBkbGxzL3gxMWRydi94cmVuZGVyLmMsCgkgIGRsbHMveDExZHJ2L3h2aWRtb2RlLmMsIGdyYXBoaWNzL2JpdGJsdC5jLCBncmFwaGljcy9lc2NhcGUuYywKCSAgZ3JhcGhpY3MvbWFwcGluZy5jLCBncmFwaGljcy9wYWludGluZy5jLCBncmFwaGljcy9wYXRoLmMsCgkgIGRsbHMvZ2RpL01ha2VmaWxlLmluLCBkbGxzL2dkaS9kcml2ZXIuYywgZGxscy9nZGkvZW5obWZkcnYvZGMuYywKCSAgZGxscy9nZGkvZW5obWZkcnYvZW5obWV0YWZpbGVkcnYuaCwgZGxscy9nZGkvZW5obWZkcnYvZ3JhcGhpY3MuYywKCSAgZGxscy9nZGkvZW5obWZkcnYvaW5pdC5jLCBkbGxzL2dkaS9lbmhtZmRydi9tYXBwaW5nLmMsCgkgIGRsbHMvZ2RpL2VuaG1mZHJ2L29iamVjdHMuYywgZGxscy9nZGkvcHJpbnRkcnYuYzoKCUNoYW5nZWQgdGhlIEdESSBkcml2ZXIgaW50ZXJmYWNlIHRvIHBhc3MgYW4gb3BhcXVlIFBIWVNERVYgcG9pbnRlcgoJaW5zdGVhZCBvZiBhIERDIHN0cnVjdHVyZS4KCVJlbW92ZWQgc29tZSBkaXJlY3QgYWNjZXNzZXMgdG8gdGhlIERDIHN0cnVjdHVyZSBmcm9tIHRoZSBkcml2ZXJzLgoJR290IHJpZCB0aGUgYml0bWFwIGRyaXZlci4KCgkqIGxvYWRlci9sb2Fkb3JkZXIuYzoKCURvbid0IHN0cmlwIG91dCAuZXhlIGV4dGVuc2lvbi4KCgkqIGluY2x1ZGUvd2luYmFzZS5oOgoJQW5kcml5IFBhbGFtYXJjaHVrIDxhcGEzYUB5YWhvby5jb20+CglBZGRlZCBkZWNsYXJhdGlvbiBvZiB0aGUgRGlzY29ubmVjdE5hbWVkUGlwZSBjYWxsLgoKCSogZGxscy94MTFkcnYvbW91c2UuYzoKCU1hcmNvIFBpZXRyb2Jvbm8gPHBpZXRyb2JvQHBpZXRyb2JvLmNvbT4KCUFkZGVkIHN1cHBvcnQgZm9yIDE2Yml0IG1vdXNlIGN1cnNvciBiaXRtYXBzIGluIFJHQiA1NjUgZm9ybWF0LgoKCSogZGxscy9jb21jdGwzMi91cGRvd24uYzoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CgktIHVwZG93biB1bmljb2RpZmljYXRpb24KCS0gYmV0dGVyL2NsZWFuZXIgYnVkZHkgaGFuZGxpbmcKCS0gZmV3IGJ1Z3MgZml4ZWQKCS0gbW9yZSB0ZXN0aW5nCgktIGNvbnNpc3RlbnQgaW5kZW50YXRpb24KCgkqIGNvbnRyb2xzL21lbnUuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCU1lbnVJdGVtRnJvbVBvaW50OiByb3VnaCBpbXBsZW1lbnRhdGlvbi4KCgkqIHByb2dyYW1zL3dpbmV0ZXN0L3J1bnRlc3Q6CglOZWVkIHRvIHNldCBXSU5FRExMUEFUSCB0b28uCgoyMDAyLTAzLTI3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9rZXJuZWwvdGVzdHMvLmN2c2lnbm9yZTogQWRkZWQgYWxsb2Mub2suCgoJKiBwcm9ncmFtcy9jbG9jay9DaGFuZ2VMb2csIHByb2dyYW1zL2Nsb2NrL0RhLnJjLAoJICBwcm9ncmFtcy9jbG9jay9EZS5yYywgcHJvZ3JhbXMvY2xvY2svRW4ucmMsIHByb2dyYW1zL2Nsb2NrL0VzLnJjLAoJICBwcm9ncmFtcy9jbG9jay9GaS5yYywgcHJvZ3JhbXMvY2xvY2svRnIucmMsIHByb2dyYW1zL2Nsb2NrL1B0LnJjLAoJICBwcm9ncmFtcy9jbG9jay9Tay5yYywgcHJvZ3JhbXMvY2xvY2svU3cucmMsIHByb2dyYW1zL2Nsb2NrL1RPRE8sCgkgIHByb2dyYW1zL2Nsb2NrL1dhLnJjLCBwcm9ncmFtcy9jbG9jay9jbG9jay5yYywKCSAgcHJvZ3JhbXMvY2xvY2svY2xvY2tfcmVzLmgsIHByb2dyYW1zL2Nsb2NrL2xhbmd1YWdlLmMsCgkgIHByb2dyYW1zL2Nsb2NrL2xhbmd1YWdlLmgsIHByb2dyYW1zL2Nsb2NrL21haW4uYywKCSAgcHJvZ3JhbXMvY2xvY2svbWFpbi5oLCBwcm9ncmFtcy9jbG9jay9yc3JjLnJjOgoJU3lsdmFpbiBQZXRyZW9sbGUgPHNwZXRyZW9sbGVAeWFob28uZnI+CglDb252ZXJ0ZWQgdG8gdXNlIG9mIE5MUy4KCgkqIGluY2x1ZGUvZW5obWV0YWZpbGVkcnYuaCwgaW5jbHVkZS93aW4xNmRydi5oLCBjb25maWd1cmUsCgkgIGNvbmZpZ3VyZS5hYywgZGxscy9nZGkvTWFrZWZpbGUuaW4sIGRsbHMvZ2RpL2RyaXZlci5jLAoJICBkbGxzL2dkaS9lbmhtZmRydi9kYy5jLCBkbGxzL2dkaS9lbmhtZmRydi9lbmhtZXRhZmlsZWRydi5oLAoJICBkbGxzL2dkaS9lbmhtZmRydi9ncmFwaGljcy5jLCBkbGxzL2dkaS9lbmhtZmRydi9pbml0LmMsCgkgIGRsbHMvZ2RpL2VuaG1mZHJ2L21hcHBpbmcuYywgZGxscy9nZGkvZW5obWZkcnYvb2JqZWN0cy5jLAoJICBkbGxzL2dkaS9nZGlfbWFpbi5jLCBkbGxzL2dkaS9tZmRydi9iaXRibHQuYywgZGxscy9nZGkvbWZkcnYvZGMuYywKCSAgZGxscy9nZGkvbWZkcnYvZ3JhcGhpY3MuYywgZGxscy9nZGkvbWZkcnYvaW5pdC5jLAoJICBkbGxzL2dkaS9tZmRydi9tYXBwaW5nLmMsIGRsbHMvZ2RpL21mZHJ2L21ldGFmaWxlZHJ2LmgsCgkgIGRsbHMvZ2RpL21mZHJ2L29iamVjdHMuYywgZGxscy9nZGkvbWZkcnYvdGV4dC5jLAoJICBkbGxzL2dkaS93aW4xNmRydi8uY3ZzaWdub3JlLCBkbGxzL2dkaS93aW4xNmRydi9icnVzaC5jLAoJICBkbGxzL2dkaS93aW4xNmRydi9mb250LmMsIGRsbHMvZ2RpL3dpbjE2ZHJ2L2dyYXBoaWNzLmMsCgkgIGRsbHMvZ2RpL3dpbjE2ZHJ2L2luaXQuYywgZGxscy9nZGkvd2luMTZkcnYvb2JqZWN0cy5jLAoJICBkbGxzL2dkaS93aW4xNmRydi9wZW4uYywgZGxscy9nZGkvd2luMTZkcnYvcHJ0ZHJ2LmMsCgkgIGRsbHMvZ2RpL3dpbjE2ZHJ2L3RleHQuYywgZGxscy9nZGkvd2luMTZkcnYvd2luMTZkcnYuaDoKCU1vdmVkIG1ldGFmaWxlcyBhbmQgd2luMTYgZHJpdmVycyB0byBkbGxzL2dkaS4KCgkqIGRsbHMva2VybmVsL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC90ZXN0cy9hbGxvYy5jOgoJR2VvZmZyZXkgSGF1c2hlZXIgPGkxMzRydGg4ZDlzQHBocmFjdHVyZWRibHVlLmNvbT4KCUFkZGVkIG1lbW9yeSBhbGxvY2F0aW9uIHRlc3QuCgoJKiBkbGxzL21zdmNydC9maWxlLmM6CglBbmRyaXkgUGFsYW1hcmNodWsgPGFwYTNhQHlhaG9vLmNvbT4KCWZ3cml0ZTogZml4ZWQgaGFuZGxpbmcgb2YgYWxyZWFkeSBidWZmZXJlZCBkYXRhLgoKMjAwMi0wMy0yNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvTWFrZWRsbC5ydWxlcy5pbiwgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9nZGkvLmN2c2lnbm9yZSwKCSAgZGxscy9nZGkvTWFrZWZpbGUuaW4sIGRsbHMvZ2RpL2dkaS5leGUuc3BlYywgZGxscy9nZGkvZ2RpLnNwZWMsCgkgIGRsbHMva2VybmVsLy5jdnNpZ25vcmUsIGRsbHMva2VybmVsL01ha2VmaWxlLmluLAoJICBkbGxzL2tlcm5lbC9rZXJuZWwuc3BlYywgZGxscy9rZXJuZWwva3JubDM4Ni5leGUuc3BlYywKCSAgZGxscy91c2VyLy5jdnNpZ25vcmUsIGRsbHMvdXNlci9NYWtlZmlsZS5pbiwKCSAgZGxscy91c2VyL3VzZXIuZXhlLnNwZWMsIGRsbHMvdXNlci91c2VyLnNwZWM6CglSZW5hbWVkIHNvbWUgMTYtYml0IHNwZWMgZmlsZXMgdG8gbWF0Y2ggdGhlIGRsbCBuYW1lLgoKCSogZGxscy9tc2FjbS9maWx0ZXIuYywgZGxscy9tc2FjbS9mb3JtYXQuYywgZGxscy9tc2FjbS9tc2FjbV9tYWluLmMsCgkgIGluY2x1ZGUvbXNhY20uaDoKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCS0gQ29udmVydGVkIEhBQ01PQkogdG8gdm9pZCoKCS0gYWNtTWV0cmljczE2IGNhbGxzIGFjbU1ldHJpY3Mgb25seSBpZiBoYW8gaXMgTlVMTAoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jOgoJTWVobWV0IFlhc2FyIDxteWFzYXJAZnJlZS5mcj4KCUZpeCBkZWZhdWx0IGV4dGVuc2lvbiBiZWhhdmlvciB3aXRoIEdldE9wZW5GaWxlTmFtZS4KCgkqIHRvb2xzL3dpbmVidWlsZC9idWlsZC5oLCB0b29scy93aW5lYnVpbGQvbWFpbi5jLAoJICB0b29scy93aW5lYnVpbGQvcGFyc2VyLmM6CglJZ25vcmUgaW1wb3J0cyBhbmQgcmVzb3VyY2VzIHdoZW4gYnVpbGRpbmcgYSAuZGVmIGZpbGUuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9vbGVhdXQzMi9NYWtlZmlsZS5pbiwKCSAgZGxscy9vbGVhdXQzMi90ZXN0cy8uY3ZzaWdub3JlLAoJICBkbGxzL29sZWF1dDMyL3Rlc3RzL29sZWF1dDMyX3Rlc3Quc3BlYywKCSAgZGxscy9vbGVhdXQzMi90ZXN0cy92YXJ0ZXN0LmMsIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jLAoJICBsaWJ0ZXN0L01ha2VmaWxlLmluLCBsaWJ0ZXN0L3ZhcnRlc3QtV2luMzIubG9nLCBsaWJ0ZXN0L3ZhcnRlc3QuYywKCSAgbGlidGVzdC92YXJ0ZXN0LnJlYWRtZSwgbGlidGVzdC92YXJ0ZXN0LnNwZWM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVBvcnRlZCB2YXJpYW50IHRlc3RzIHRvIHRoZSBuZXcgdGVzdGluZyBmcmFtZXdvcmsuCgoJKiBkbGxzL21zdmNydC9NYWtlZmlsZS5pbiwgZGxscy9tc3ZjcnQvbGNvbnYuYywKCSAgZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglBZGQgc3R1YiBmb3IgX19sY29udl9pbml0KCkuCgoyMDAyLTAzLTI1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9tc3ZjcnQvZGF0YS5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJX19beHxdZ2V0bWFpbmFyZ3M6IEFjY2VwdCBOVUxMIG5ld19tb2RlIGFyZ3VtZW50LgoKCSogaW5jbHVkZS9tc2FjbS5oOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJQ29udmVydGVkIEhBQ01TVFJFQU0sIEhBQ01EUklWRVJJRCBhbmQgSEFDTURSSVZFUiB0byB2b2lkKi4KCgkqIGRsbHMvd2lubW0vbW1zeXN0ZW0uYzoKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCUNoYW5nZXMgc29tZSBoYW5kbGUgZGVmaW5pdGlvbnMgdG8gdGhlIHByb3BlciB0eXBlLgoKCSogZGxscy93aW5tbS93aW5lYXJ0cy9hcnRzLmMsIGRsbHMvd2lubW0vd2luZWFydHMvYXJ0cy5oLAoJICBkbGxzL3dpbm1tL3dpbmVhcnRzL2F1ZGlvLmM6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5AYWx1bS53cGkuZWR1PgoJd29kT3BlbigpIHNob3VsZCByZXR1cm4gTU1TWVNFUlJfQUxMT0NBVEVEIGlmIHRoZSBkZXZpY2UgaXMgYWxyZWFkeQoJYWxsb2NhdGVkLiAgQWxsb3cgZm9yIG11bHRpcGxlIGF1ZGlvIGRldmljZXMuIEZpeCB3b2RQbGF5ZXJfcmVzZXQgYXMKCXdpdGggYVJ0cyB3ZSBjYW5ub3QgY2FuY2VsIGF1ZGlvIGRhdGEgYWxyZWFkeSB3cml0dGVuIHRvIHRoZSBzZXJ2ZXIuCglSZW5hbWUgc29tZSBmdW5jdGlvbnMuIENsZWFudXAgdW51c2VkIGNvZGUuCgoJKiBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQGFsdW0ud3BpLmVkdT4KCURzb3VuZCB3aWxsIG5vdyB0cnkgYXMgbWFueSBkZXZpY2VzIGFzIGFyZSBhdmFpbGFibGUgd2hlbiB0cnlpbmcgdG8KCW9wZW4gYSB3YXZlT3V0IGRldmljZSBpbiBEaXJlY3RTb3VuZENyZWF0ZSgpLgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBtaXNzaW5nIGhlYWRlci4KCjIwMDItMDMtMjMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBNYWtlZmlsZS5pbiwgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9vcGVuZ2wzMi9NYWtlZmlsZS5pbiwKCSAgZGxscy9vcGVuZ2wzMi9vcGVuZ2wzMi5zcGVjLCBkbGxzL29wZW5nbDMyL3dnbC5jLAoJICBncmFwaGljcy94MTFkcnYvaW5pdC5jLCBpbmNsdWRlL3gxMWRydi5oOgoJQWRkZWQgc3VwcG9ydCBmb3IgZHJpdmVyLXNwZWNpZmljIGVzY2FwZXMgaW4gdGhlIHgxMWRydiB0byByZXRyaWV2ZQoJWDExIGluZm9ybWF0aW9uLiBGaW5pc2hlZCBkbGwgc2VwYXJhdGlvbiBvZiBvcGVuZ2wzMi4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLmRhdCwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL2F2aWNhcDMyLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL21zZzcxMS5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9tc2ltZzMyLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3NoZG9jdncuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvc2hsd2FwaS5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi90d2Fpbl8zMi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi91cmxtb24uYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvd2luZWFydHMuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpLnBtLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2xvY2FsLnBtOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIEFQSSBmaWxlIHVwZGF0ZS4KCS0gTWlzc2luZyBBUEkgZmlsZSBlbnRyaWVzIG5vdyBvbmx5IHJlcG9ydGVkIG9uY2UuCgoJKiBkbGxzL2F2aWNhcDMyL2F2aWNhcDMyX21haW4uYywgZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYywKCSAgZGxscy93aW5pbmV0L2ludGVybmV0LmMsIGZpbGVzL3NtYi5jLCBmaWxlcy9zbWIuaDoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSBpc3N1ZXMgZm91bmQgYnkgd2luYXBpX2NoZWNrLgoKCSogaW5jbHVkZS9zZXJ2aWNlcy5oLCBsb2FkZXIvdGFzay5jLCBzY2hlZHVsZXIvTWFrZWZpbGUuaW4sIHNjaGVkdWxlci9zZXJ2aWNlcy5jOgoJUmVtb3ZlZCBzZXJ2aWNlIHRocmVhZCBzdXBwb3J0LgoKCSogZGxscy93aW5zb2NrL01ha2VmaWxlLmluLCBkbGxzL3dpbnNvY2svc29ja2V0LmMsCgkgIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwgaW5jbHVkZS93aW5zb2NrLmgsCgkgIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci9xdWV1ZS5jLCBzZXJ2ZXIvc29jay5jLCBzZXJ2ZXIvdHJhY2UuYywKCSAgc2VydmVyL3VzZXIuaCwgc2VydmVyL3dpbmRvdy5jOgoJU2VuZCBtZXNzYWdlIGZvciBXU0FBc3luY1NlbGVjdCBzb2NrZXRzIGRpcmVjdGx5IGZyb20gdGhlIHNlcnZlciwKCWluc3RlYWQgb2YgdXNpbmcgdGhlIHNlcnZpY2UgdGhyZWFkLiBGaW5pc2hlZCBzZXBhcmF0aW9uIG9mIHdzMl8zMi4KCgkqIGRvY3VtZW50YXRpb24vc2FtcGxlcy9zeXN0ZW0uaW5pLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywKCSAgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9tc2FjbS9pbWFhZHAzMi8uY3ZzaWdub3JlLAoJICBkbGxzL21zYWNtL2ltYWFkcDMyL01ha2VmaWxlLmluLAoJICBkbGxzL21zYWNtL2ltYWFkcDMyL2ltYWFkcDMyLmFjbS5zcGVjLAoJICBkbGxzL21zYWNtL2ltYWFkcDMyL2ltYWFkcDMyLmM6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJSW1wbGVtZW50ZWQgYW4gSU1BIGRyaXZlci4KCgkqIHByb2dyYW1zL3dpbmVjb25zb2xlL2RpYWxvZy5jLCBwcm9ncmFtcy93aW5lY29uc29sZS91c2VyLmMsCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25fdXNlci5oOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglXaW5lY29uc29sZSBpcyBub3cgYWJsZSB0byBoYW5kbGUgbm9uIHJhc3RlciBmb250cyAodmVjdG9yLCB0cnVlCgl0eXBlKS4KCgkqIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RpbWVyLmM6CglGaXhlZCBoYW5kbGluZyBvZiB0aW1lciBjYWxsYmFjayByb3V0aW5lcyB3aGVuIHRoZSB0aHJlYWQgb3duaW5nIHRoZQoJY2FsbGJhY2sgdGVybWluYXRlcy4KCgkqIGRsbHMvd2luZWRvcy92Z2EuYywgZGxscy93aW5lZG9zL3ZnYS5oLCBtaXNjL3N5c3RlbS5jOgoJQ3JlYXRlIHRocmVhZHMgdG8gbWFuYWdlIHRpbWVycyBpbnN0ZWFkIG9mIHVzaW5nIHRoZSBzZXJ2aWNlIHRocmVhZC4KCgkqIGluY2x1ZGUvd2luZS9zZXJ2ZXIuaCwgc2NoZWR1bGVyL2NsaWVudC5jLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsCgkgIGZpbGVzL2ZpbGUuYzoKCUV4cG9ydCB0aGUgRklMRV9HZXRVbml4SGFuZGxlIGZ1bmN0aW9uYWxpdHkgZnJvbSBudGRsbC4KCgkqIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25zb2xlLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCVN0YXJ0ZWQgaW1wbGVtZW50aW5nIGV2ZW50IHJlZHVjdGlvbi4KCgkqIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25zb2xlX0VuLnJjLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZV9Gci5yYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgc29tZSBpc3N1ZXMgaW4gcmVzb3VyY2VzIGRlZmluaXRpb24uCgoJKiBkbGxzL2dkaS9mcmVldHlwZS5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglDaGFuZ2VkIGZpeGVkIGZvbnRzIGZhbWlseSBuYW1lLgoKCSogdG9vbHMvZXhhbWluZS1yZWxheToKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgVnhEIGNhbGwgdHJhY2luZy4KCgkqIGRlYnVnZ2VyL2RiZy55OgoJVGlqcyB2YW4gQmFrZWwgPHRpanNAY29ubmVjdHV4LmNvbT4KCUFkZGVkIHN1cHBvcnQgZm9yIEMrKyBpZGVudGlmaWVyIHN5bnRheC4KCjIwMDItMDMtMjIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL2F1ZGV2Y29kLmgsIGluY2x1ZGUvZG1vLmgsIGluY2x1ZGUvZG1vcmVnLmgsCgkgIGluY2x1ZGUvZG1vcnQuaCwgaW5jbHVkZS9kc2hvdy5oLCBpbmNsdWRlL21lZGlhZXJyLmgsCgkgIGluY2x1ZGUvbWVkaWFvYmouaDoKCVJld3JvdGUgc29tZSBoZWFkZXJzIGZyb20gc2NyYXRjaCBiYXNlZCBvbiBwdWJsaWNseSBhdmFpbGFibGUKCWluZm9ybWF0aW9uIHRvIGF2b2lkIEVVTEEgY29uY2VybnMuCgoJKiBkbGxzL21zZG1vL2Rtb3JlZy5jLCBkbGxzL21zZG1vL2Rtb3J0LmMsIGRsbHMvbXNkbW8vbXNkbW8uc3BlYywKCSAgZGxscy9xdWFydHovUkVBRE1FLCBkbGxzL3F1YXJ0ei9jYXBncmFwaC5jLCBkbGxzL3F1YXJ0ei9jYXBncmFwaC5oLAoJICBkbGxzL3F1YXJ0ei9mZ2V2ZW50LmMsIGRsbHMvcXVhcnR6L2ZncGFzcy5jLCBkbGxzL3F1YXJ0ei9mZ3JhcGguYywKCSAgZGxscy9xdWFydHovZmdyYXBoLmgsIGRsbHMvcXVhcnR6L2ZtYXAuYywgZGxscy9xdWFydHovZm1hcC5oLAoJICBkbGxzL3F1YXJ0ei9pZmdyYXBoLmMsIGRsbHMvcXVhcnR6L21haW4uYywgZGxscy9xdWFydHovbXBncGFyc2UuYywKCSAgZGxscy9xdWFydHovcGFyc2VyLmgsIGRsbHMvcXVhcnR6L3ZpZHJlbi5jLCBkbGxzL3F1YXJ0ei92aWRyZW4uaCwKCSAgaW5jbHVkZS9jb250cm9sLmgsIGluY2x1ZGUvZXZjb2RlLmgsIGluY2x1ZGUvc3RybWlmLmgsCgkgIGluY2x1ZGUvdXVpZHMuaDoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglSZW1vdmVkIHNvbWUgY29kZSBiZWNhdXNlIG9mIGNvbmNlcm5zIG92ZXIgdGhlIE1pY3Jvc29mdCBEaXJlY3RYIFNESwoJbGljZW5zZSBhZ3JlZW1lbnQuCgoJKiBkb2N1bWVudGF0aW9uL3NhbXBsZXMvc3lzdGVtLmluaSwgY29uZmlndXJlLCBjb25maWd1cmUuYWMsCgkgIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvbXNhY20vbXNnNzExLy5jdnNpZ25vcmUsCgkgIGRsbHMvbXNhY20vbXNnNzExL01ha2VmaWxlLmluLCBkbGxzL21zYWNtL21zZzcxMS9tc2c3MTEuYywKCSAgZGxscy9tc2FjbS9tc2c3MTEvbXNnNzExLmRydi5zcGVjOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUltcGxlbWVudGVkIEc3MTEgY29kZWMgZHJpdmVyLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJLSBJbXBsZW1lbnQgQ0NNX3tHRVR8U0VUfUNPTE9SU0NIRU1FLgoJLSBJbXBsZW1lbnQgV01fTk9USUZZRk9STUFUIGFuZCBjb3JyZWN0IHBhc3NpbmcgV01fTk9USUZZIHdpdGggY29ycmVjdAoJICBtZXNzYWdlIGNhbGwuCgktIElnbm9yZSBQR01fRk9SV0FSRE1PVVNFIGxpa2UgbmF0aXZlLgoKCSogZGxscy9jb21jdGwzMi9wYWdlci5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCVJlYW5hbHl6ZSBidXR0b24gc3RhdHVzIGR1cmluZyBOQ0NhbGNTaXplIHByb2Nlc3NpbmcgYmVjYXVzZSBzaXplIG9mCgl3aW5kb3cgbWF5IGhhdmUgY2hhbmdlZC4KCgkqIHdpbmRvd3MveDExZHJ2L2V2ZW50LmM6CglXZSBjYW5ub3QgaWdub3JlIE5vdGlmeU5vbmxpbmVhciBmb2N1cyBldmVudHMuCgoJKiBsb2FkZXIvbG9hZG9yZGVyLmM6CglQcm9wZXJseSBoYW5kbGUgbG9hZG9yZGVyIHNwZWNpZmljYXRpb25zIGNvbnRhaW5pbmcgYSAuZGxsIGV4dGVuc2lvbi4KCgkqIE1ha2UucnVsZXMuaW46IEZpeGVkIHJ1bGUgZm9yIHRlc3QgcHJvZ3JhbS4KCgkqIGRsbHMva2VybmVsL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC90ZXN0cy8uY3ZzaWdub3JlLAoJICBkbGxzL2tlcm5lbC90ZXN0cy9kaXJlY3RvcnkuYywgZGxscy9rZXJuZWwvdGVzdHMva2VybmVsMzJfdGVzdC5zcGVjOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIHRlc3RzIGZvciBHZXRTeXN0ZW1EaXJlY3RvcnlBL1cgYW5kIEdldFdpbmRvd3NEaXJlY3RvcnlBL1cuCgoJKiBwcm9ncmFtcy93aW5ldGVzdC93dG1haW4uYywgaW5jbHVkZS93aW5lL3Rlc3QuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglBZGQgdHJhY2UgZnVuY3Rpb24gKHNhbWUgYXMgaW4gdGhlIHBlcmwgZnJhbWV3b3JrKS4KCUFkZCBzdXBwb3J0IGZvciB0b2RvIHRlc3RzLgoJTWFrZSBpdCBwb3NzaWJsZSB0byBzcGVjaWZ5IGEgcHJpbnRmLXN0eWxlIG1lc3NhZ2UgaW4gb2suCglJbmNsdWRlIHdpbmRlZi5oIGluIHRlc3QuaCBmb3IgY29tcGlsaW5nIHRlc3RzIG9uIFdpbmRvd3MuCgoJKiBkbGxzL3BzYXBpL3BzYXBpX21haW4uYzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglJbXBsZW1lbnRlZCBFbnVtUHJvY2Vzc2VzIGFuZCBFbnVtUHJvY2Vzc01vZHVsZXMuCgoJKiBkbGxzL2tlcm5lbC90b29saGVscC5jLCBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsCgkgIGxvYWRlci9wZV9pbWFnZS5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcHJvY2Vzcy5jLAoJICBzZXJ2ZXIvcHJvY2Vzcy5oLCBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvc25hcHNob3QuYywKCSAgc2VydmVyL3RyYWNlLmM6CglDb3JyZWN0bHkgZmlsbCBwYXJlbnQgcGlkLCBtb2R1bGUgc2l6ZSBhbmQgbW9kdWxlIG5hbWUgaW4gcHJvY2VzcyBhbmQKCW1vZHVsZSBzbmFwc2hvdHMuIEJhc2VkIG9uIHBhdGNoZXMgYnkgRXJpYyBQb3VlY2ggYW5kIEFuZHJlYXMgTW9oci4KCgkqIGRsbHMvd2lubW0vd2luZWFydHMvYXVkaW8uYzoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkBhbHVtLndwaS5lZHU+CglGaXggcmFuZ2UgaW4gYVJ0cyA4Yml0IHZvbHVtZSBjb2RlLgoKCSogZGxscy91c2VyL3RleHQuYzoKCUJpbGwgTWVkbGFuZCA8bWVkYmkwMUBhY2NwYWMuY29tPgoJSW5pdGlhbGlzZSBhIHN0YWNrIHZhcmlhYmxlLgoKMjAwMi0wMy0yMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIE1ha2VmaWxlLmluOiBGaXhlZCBsaW5raW5nIG9mIHdpbmUgdGFyZ2V0LgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvdHdhaW4vLmN2c2lnbm9yZSwKCSAgZGxscy90d2Fpbi9NYWtlZmlsZS5pbiwgZGxscy90d2Fpbi9SRUFETUUsIGRsbHMvdHdhaW4vVFdBSU4sCgkgIGRsbHMvdHdhaW4vY2FwYWJpbGl0eS5jLCBkbGxzL3R3YWluL2RzX2F1ZGlvLmMsCgkgIGRsbHMvdHdhaW4vZHNfY3RybC5jLCBkbGxzL3R3YWluL2RzX2ltYWdlLmMsIGRsbHMvdHdhaW4vZHNtX2N0cmwuYywKCSAgZGxscy90d2Fpbi90d2Fpbi5oLCBkbGxzL3R3YWluL3R3YWluMzJfbWFpbi5jLAoJICBkbGxzL3R3YWluL3R3YWluXzMyLnNwZWMsIGRsbHMvdHdhaW4vdHdhaW5faS5oLCBpbmNsdWRlL2NvbmZpZy5oLmluOgoJU2hpIFF1YW4gSGUgPHNoaXF1YW5AY3liZXJkdWRlLmNvbT4gKGZvciBDb3JlbCkKCVN0YXJ0ZWQgVFdBSU4gaW1wbGVtZW50YXRpb24uCgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglNZXJnZWQgaW50byBXaW5lSFEsIG1hZGUgc3VyZSBpdCB3b3JrcyB3aXRob3V0IFNBTkUuCgoJKiB0b29scy93aW5lYnVpbGQvYnVpbGQuaCwgdG9vbHMvd2luZWJ1aWxkL21haW4uYywKCSAgdG9vbHMvd2luZWJ1aWxkL3V0aWxzLmM6CglNYWtlIHdhcm5pbmdzIHF1aWV0IGJ5IGRlZmF1bHQgYW5kIGFkZGVkIC13IG9wdGlvbi4KCgkqIGRvY3VtZW50YXRpb24vc2FtcGxlcy9jb25maWcsIGluY2x1ZGUvY29uZmlnLmguaW4sIERFVkVMT1BFUlMtSElOVFMsCgkgIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL01ha2VmaWxlLmluLAoJICBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jLCBkbGxzL3dpbm1tL3dpbmVhcnRzLy5jdnNpZ25vcmUsCgkgIGRsbHMvd2lubW0vd2luZWFydHMvTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vd2luZWFydHMvYXJ0cy5jLAoJICBkbGxzL3dpbm1tL3dpbmVhcnRzL2FydHMuaCwgZGxscy93aW5tbS93aW5lYXJ0cy9hdWRpby5jLAoJICBkbGxzL3dpbm1tL3dpbmVhcnRzL3dpbmVhcnRzLmRydi5zcGVjOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQGFsdW0ud3BpLmVkdT4KCUFkZGVkIGFSdHMgZHJpdmVyLgoKCSogZGxscy91cmxtb24vdXJsbW9uLnNwZWMsIGRsbHMvdXJsbW9uL3VybG1vbl9tYWluLmM6CglNaWNoYWVsIENhcmRlbmFzIDxtaWNoYWVsLmNhcmRlbmFzQGxpbmRvd3MuY29tPgoJQWRkZWQgc29tZSBzdHVicy4KCgkqIGRsbHMvYWR2YXBpMzIvcmVnaXN0cnkuYzoKCU1pY2hhZWwgQ2FyZGVuYXMgPG1pY2hhZWwuY2FyZGVuYXNAbGluZG93cy5jb20+CglDaGFuZ2VkIHJlZ2lzdHJ5IGhhbmRsaW5nIGluIFJlZ09wZW5LZXlFeEEgdG8gYmVoYXZlIGxpa2Ugd2luZG93czk1Cgl3aGVuIHdpbnZlcj09d2luOTUuCgoJKiBkbGxzL21zdmNydC9maWxlLmM6CglBbmRyaXkgUGFsYW1hcmNodWsgPGFwYTNhQHlhaG9vLmNvbT4KCUFkZGVkIGNoZWNrIHRvIGZ3cml0ZSBmb3Igc2l6ZSA9PSAwLgoJRml4ZWQgb3JkZXIgYW5kIGZvcm1hdCBvZiAic2l6ZSIgYW5kICJubWVtYiIgcGFyYW1ldGVycyBpbiBjYWxscyB0bwoJZndyaXRlLgoKMjAwMi0wMy0yMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIE1ha2UucnVsZXMuaW4sIGRsbHMvTWFrZWRsbC5ydWxlcy5pbjoKCUZpeGVkIHJ1bGVzIGZvciBtYWluIG1vZHVsZSBzcGVjIGZpbGUuCgoJKiBkbGxzL01ha2VmaWxlLmluLCBkbGxzL3F1YXJ0ei9NYWtlZmlsZS5pbiwgZGxscy9xdWFydHovYWNtd3JhcC5jLAoJICBkbGxzL3F1YXJ0ei9hdmlwYXJzZS5jLCBkbGxzL3F1YXJ0ei9iYXNlZmlsdC5jLAoJICBkbGxzL3F1YXJ0ei9iYXNlZmlsdC5oLCBkbGxzL3F1YXJ0ei9tYWluLmMsIGRsbHMvcXVhcnR6L21wZ3BhcnNlLmMsCgkgIGRsbHMvcXVhcnR6L3BhcnNlci5jLCBkbGxzL3F1YXJ0ei9wYXJzZXIuaCwgZGxscy9xdWFydHovcXVhcnR6LnNwZWM6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJQWRkZWQgc29tZSBzdHVicy4KCVN0YXJ0ZWQgaW1wbGVtZW50aW5nIE1QRUcgcGFyc2VyLgoKCSogaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9kdmRtZWRpYS5oOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUFkZGVkIGEgbWlzc2luZyBoZWFkZXIuCgoJKiBwcm9ncmFtcy9ub3RlcGFkL0NoYW5nZUxvZywgcHJvZ3JhbXMvbm90ZXBhZC9EYS5yYywKCSAgcHJvZ3JhbXMvbm90ZXBhZC9EZS5yYywgcHJvZ3JhbXMvbm90ZXBhZC9Fbi5yYywKCSAgcHJvZ3JhbXMvbm90ZXBhZC9Fcy5yYywgcHJvZ3JhbXMvbm90ZXBhZC9GaS5yYywKCSAgcHJvZ3JhbXMvbm90ZXBhZC9Gci5yYywgcHJvZ3JhbXMvbm90ZXBhZC9QdC5yYywKCSAgcHJvZ3JhbXMvbm90ZXBhZC9SRUFETUUsIHByb2dyYW1zL25vdGVwYWQvU2sucmMsCgkgIHByb2dyYW1zL25vdGVwYWQvU3cucmMsIHByb2dyYW1zL25vdGVwYWQvV2EucmMsCgkgIHByb2dyYW1zL25vdGVwYWQvZGlhbG9nLmMsIHByb2dyYW1zL25vdGVwYWQvbGFuZ3VhZ2UuYywKCSAgcHJvZ3JhbXMvbm90ZXBhZC9sYW5ndWFnZS5oLCBwcm9ncmFtcy9ub3RlcGFkL21haW4uYywKCSAgcHJvZ3JhbXMvbm90ZXBhZC9tYWluLmgsIHByb2dyYW1zL25vdGVwYWQvbm90ZXBhZF9yZXMuaCwKCSAgcHJvZ3JhbXMvbm90ZXBhZC9yc3JjLnJjOgoJU3lsdmFpbiBQZXRyZW9sbGUgPHNwZXRyZW9sbGVAeWFob28uZnI+CglNYWRlIG5vdGVwYWQgdXNlcyBOTFMgcHJvcGVybHkuCgoJKiBkbGxzL21zdmNydC9maWxlLmMsIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjLCBpbmNsdWRlL01ha2VmaWxlLmluLAoJICBpbmNsdWRlL21zdmNydC9zeXMvbG9ja2luZy5oOgoJQmlsbCBNZWRsYW5kIDxtZWRiaTAxQGFjY3BhYy5jb20+CglDb25uZWN0IHRoZSBtc3ZjcnQgZmlsZSBieXRlIGxvY2tpbmcgdXAgdG8gbnRkbGwuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCUJpbGwgTWVkbGFuZCA8bWVkYmkwMUBhY2NwYWMuY29tPgoJTm8gbmVlZCBmb3IgdGhlIGZpeG1lIG9uIGEgc2ltcGxlIFRCU1RZTEVfU0VQLgoKCSogaW5jbHVkZS91dWlkcy5oOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUFkZGVkIHNvbWUgbWlzc2luZyBHVUlEcy4KCgkqIGRsbHMvd2luZWRvcy9NYWtlZmlsZS5pbiwgZGxscy93aW5lcHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvd2luaW5ldC9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS9NYWtlZmlsZS5pbiwKCSAgZGxscy93aW5ubHMvTWFrZWZpbGUuaW4sIGRsbHMvd2luc29jay9NYWtlZmlsZS5pbiwKCSAgZGxscy93aW5zcG9vbC9NYWtlZmlsZS5pbiwgZGxscy93aW50cnVzdC9NYWtlZmlsZS5pbiwKCSAgZGxscy93b3czMi9NYWtlZmlsZS5pbiwgZGxscy93c29jazMyL01ha2VmaWxlLmluLAoJICBkbGxzL3gxMWRydi9NYWtlZmlsZS5pbiwgaW5jbHVkZS9NYWtlZmlsZS5pbiwgbGlicmFyeS9NYWtlZmlsZS5pbiwKCSAgbGlicmFyeS9sb2FkZXIuYywgdG9vbHMvd2luZWJ1aWxkL2ltcG9ydC5jLAoJICB0b29scy93aW5lYnVpbGQvc3BlYzMyLmMsIGRsbHMvcHNhcGkvTWFrZWZpbGUuaW4sCgkgIGRsbHMvcWNhcC9NYWtlZmlsZS5pbiwgZGxscy9xdWFydHovTWFrZWZpbGUuaW4sCgkgIGRsbHMvcmFzYXBpMzIvTWFrZWZpbGUuaW4sIGRsbHMvcmljaGVkaXQvTWFrZWZpbGUuaW4sCgkgIGRsbHMvcnBjcnQ0L01ha2VmaWxlLmluLCBkbGxzL3NlcmlhbHVpL01ha2VmaWxlLmluLAoJICBkbGxzL3NldHVwYXBpL01ha2VmaWxlLmluLCBkbGxzL3NoZG9jdncvTWFrZWZpbGUuaW4sCgkgIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwgZGxscy9zaGZvbGRlci9NYWtlZmlsZS5pbiwKCSAgZGxscy9zaGZvbGRlci9zaGZvbGRlci5zcGVjLCBkbGxzL3NobHdhcGkvTWFrZWZpbGUuaW4sCgkgIGRsbHMvc3RpL01ha2VmaWxlLmluLCBkbGxzL3RhcGkzMi9NYWtlZmlsZS5pbiwKCSAgZGxscy90dHlkcnYvTWFrZWZpbGUuaW4sIGRsbHMvdXJsL01ha2VmaWxlLmluLAoJICBkbGxzL3VybG1vbi9NYWtlZmlsZS5pbiwgZGxscy91c2VyL01ha2VmaWxlLmluLAoJICBkbGxzL3ZlcnNpb24vTWFrZWZpbGUuaW4sIGRsbHMvd2luMzJzL01ha2VmaWxlLmluLAoJICBkbGxzL3dpbmFzcGkvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL01ha2VmaWxlLmluLAoJICBkbGxzL2x6ZXhwYW5kL01ha2VmaWxlLmluLCBkbGxzL21hcGkzMi9NYWtlZmlsZS5pbiwKCSAgZGxscy9tcHIvTWFrZWZpbGUuaW4sIGRsbHMvbXNhY20vTWFrZWZpbGUuaW4sCgkgIGRsbHMvbXNkbW8vTWFrZWZpbGUuaW4sIGRsbHMvbXNpbWczMi9NYWtlZmlsZS5pbiwKCSAgZGxscy9tc25ldDMyL01ha2VmaWxlLmluLCBkbGxzL21zcmxlMzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvbXN2Y3J0L01ha2VmaWxlLmluLCBkbGxzL21zdmNydDIwL01ha2VmaWxlLmluLAoJICBkbGxzL21zdmlkZW8vTWFrZWZpbGUuaW4sIGRsbHMvbmV0YXBpMzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sIGRsbHMvb2RiYzMyL01ha2VmaWxlLmluLAoJICBkbGxzL29sZTMyL01ha2VmaWxlLmluLCBkbGxzL29sZWF1dDMyL01ha2VmaWxlLmluLAoJICBkbGxzL29sZWNsaS9NYWtlZmlsZS5pbiwgZGxscy9vbGVkbGcvTWFrZWZpbGUuaW4sCgkgIGRsbHMvb2xlcHJvMzIvTWFrZWZpbGUuaW4sIGRsbHMvb2xlc3ZyL01ha2VmaWxlLmluLAoJICBkbGxzL29wZW5nbDMyL01ha2VmaWxlLmluLCBkbGxzL01ha2VkbGwucnVsZXMuaW4sIGRsbHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvYWR2YXBpMzIvTWFrZWZpbGUuaW4sIGRsbHMvYXZpY2FwMzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvYXZpZmlsMzIvTWFrZWZpbGUuaW4sIGRsbHMvY29tY3RsMzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvY29tbWRsZy9NYWtlZmlsZS5pbiwgZGxscy9jcnRkbGwvTWFrZWZpbGUuaW4sCgkgIGRsbHMvY3J5cHQzMi9NYWtlZmlsZS5pbiwgZGxscy9kY2ltYW4zMi9NYWtlZmlsZS5pbiwKCSAgZGxscy9kZHJhdy9NYWtlZmlsZS5pbiwgZGxscy9kZXZlbnVtL01ha2VmaWxlLmluLAoJICBkbGxzL2RpbnB1dC9NYWtlZmlsZS5pbiwgZGxscy9kcGxheS9NYWtlZmlsZS5pbiwKCSAgZGxscy9kcGxheXgvTWFrZWZpbGUuaW4sIGRsbHMvZHNvdW5kL01ha2VmaWxlLmluLAoJICBkbGxzL2dkaS9NYWtlZmlsZS5pbiwgZGxscy9nbHUzMi9NYWtlZmlsZS5pbiwgZGxscy9pY21wL01ha2VmaWxlLmluLAoJICBkbGxzL2ltYWdlaGxwL01ha2VmaWxlLmluLCBkbGxzL2ltbTMyL01ha2VmaWxlLmluLCBkbGxzL21ha2VfZGxscywKCSAgTWFrZS5ydWxlcy5pbiwgTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjOgoJQ2hhbmdlZCBidWlsdGluIGRsbHMgZmlsZSBuYW1lcyB0byBtYWtlIGl0IGNsZWFyIHRoZXkgYXJlIG5vdCBub3JtYWwKCVVuaXggbGlicmFyaWVzLCBhbmQgaW5zdGFsbCB0aGVtIGluICRsaWJkaXIvd2luZSBpbnN0ZWFkIG9mICRsaWJkaXIgdG8KCWF2b2lkIG5hbWUgY29uZmxpY3RzIGluIC91c3IvbGliLgoKCSogZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jLCBkbGxzL3NoZWxsMzIvdW5kb2NzaGVsbC5oOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCVVwZGF0ZSBzaGVsbCB4eHhBVyB3cmFwcGVyIHByb3RvdHlwZXMgZm9yIGZpeGVkIFNITFdBUEkgZnVuY3Rpb25zLgoKCSogZGxscy9zaGx3YXBpL29yZGluYWwuYywgZGxscy9zaGx3YXBpL29yZGluYWwuaCwgZGxscy9zaGx3YXBpL3BhdGguYywKCSAgZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYywgaW5jbHVkZS9zaGx3YXBpLmg6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJRG9jdW1lbnQsIGltcGxlbWVudC9maXggYW5kIHRlc3QgMTEwKyBQYXRoIGZ1bmN0aW9ucy4KCVNoYXJlIHRoZSBHRVRfRlVOQyBtYWNybywgb3RoZXIgcGxhY2VzIHRoYW4gb3JkaW5hbC5jIG5lZWQgaXQuCgoJKiB3aW5kb3dzL2RlZnduZC5jOgoJRHVhbmUgQ2xhcmsgPGRjbGFya0Bha2FtYWlsLmNvbT4KCU9uIFdNX0dFVFRFWFQsIHRlcm1pbmF0ZSB0aGUgbHBhcmFtIGJ1ZmZlciBldmVuIGlmIHN0cmluZyBpcyBlbXB0eS4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CgktIFByZWxpbWluYXJ5IGltcGxlbWVudGF0aW9uIG9mIFRWU19OT1NDUk9MTCBhbmQgVFZTX05PSFNDUk9MTAoJLSBJbXBsZW1lbnQgQSBhbmQgVyB2ZXJzaW9ucyBvZiBXTV9OT1RJRlkgYmFzZWQgb24gcmVzcG9uc2UgdG8KCSAgV01fTk9USUZZRk9STUFULiBOb3RlIHRoYXQgdGhlIEVESVRMQUJFTCBub3RpZmllcyBhcmUgbm90IGRvbmUuCgktIEltcGxlbWVudCBXTV9OT1RJRllGT1JNQVQuCgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOgoJTWF0dGhpYXMgRmVjaG5lciA8aWRlZml4QGZlY2huZXIubmV0PgoJQWRkZWQgR2VybWFuIDEwNSBrZXlzIGtleWJvYXJkLgoKCSogZGxscy9zaGRvY3Z3L01ha2VmaWxlLmluLCBkbGxzL3NoZG9jdncvYXBpLmMsCgkgIGRsbHMvc2hkb2N2dy9icm93c2VyLmMsIGRsbHMvc2hkb2N2dy9jbGFzc2luZm8uYywKCSAgZGxscy9zaGRvY3Z3L2NvbWltcGwuYywgZGxscy9zaGRvY3Z3L2NvbWltcGwuaCwKCSAgZGxscy9zaGRvY3Z3L2Nvbm5lY3QuYywgZGxscy9zaGRvY3Z3L2V2ZW50cy5jLAoJICBkbGxzL3NoZG9jdncvZmFjdG9yeS5jLCBkbGxzL3NoZG9jdncvbWlzYy5jLAoJICBkbGxzL3NoZG9jdncvb2xlb2JqZWN0LmMsIGRsbHMvc2hkb2N2dy9wZXJzaXN0LmMsCgkgIGRsbHMvc2hkb2N2dy9zaGRvY3Z3LmMsIGRsbHMvc2hkb2N2dy9zaGRvY3Z3LmgsCgkgIGRsbHMvc2hkb2N2dy9zaGRvY3Z3LnNwZWMsIGRsbHMvc2hkb2N2dy9zaGRvY3Z3X21haW4uYywKCSAgZGxscy9zaGRvY3Z3L3dlYmJyb3dzZXIuYywgb2xlL3V1aWQuYzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglJbXBsZW1lbnRlZCB0aGUgYmFzaWMgQ09NIGZyYW1ld29yay4KCUZpeGVkIGFsbCBJVW5rbm93biBvZiBzaGRvY3Z3LmRsbC4KCgkqIFJFQURNRToKCU1hcnRpbiBHYXJ0b24gPG1hcnRpbkB3cmFzc2UuZGVtb24uY28udWs+CglGaXhlZCBsaWNlbnNlIHRleHQuCgoJKiBkbGxzL29wZW5nbDMyL21ha2Vfb3BlbmdsLCBkbGxzL29wZW5nbDMyL29wZW5nbF9leHQuYzoKCUNoYXJsZXMgVmF1Z2huIDxjaGFybGVzdkBtZm9zLm9yZz4KCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIGFkZGVkIHN1cHBvcnQgZm9yIGdsTVRleENvb3JkMmZTR0lTCgktIHVwZGF0ZWQgdG8gbGF0ZXN0IE9wZW5HTCBleHRlbnNpb25zCgoJKiBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYywgZGxscy93aW5pbmV0L3dpbmluZXQuc3BlYzoKCUJlcm5oYXJkIFJvc2Vua3JhZW56ZXIgPGJlcm9AcmVkaGF0LmRlPgoJQWRkZWQgSW50ZXJuZXRPcGVuVVJMQSBpbXBsZW1lbnRhdGlvbi4KCgkqIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjOgoJQmlsbCBNZWRsYW5kIDxtZWRiaTAxQGFjY3BhYy5jb20+CglIb29rIGJhY2sgaW50byB0aGUgY29ycmVjdCBNU1ZDUlRfX3RvbG93ZXIvdXBwZXIuCgoJKiBkbGxzL3dpbmVkb3MvaW50MTAuYywgZGxscy93aW5lZG9zL3ZnYS5jLCBkbGxzL3dpbmVkb3MvdmdhLmg6CglBZG1pcmFsIENvZXltYW4gPGFkbWlyYWxAY29ybmVyLm5ldD4KCUJlZ2lubmluZ3Mgb2YgdGhlIGNvZGUgdGhhdCBzaG91bGQgYWxsb3cgRE9TIHByb2dyYW1zIHRvIHNldCB0aGVpcgoJY29sb3IgcGFsZXR0ZS4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCUR1YW5lIENsYXJrIDxkY2xhcmtAYWthbWFpbC5jb20+CglBZGQgTFZTX05PU09SVEhFQURFUiBzdXBwb3J0LgoJU29ydCBjb2x1bW4gb24gSEROX0lURU1DTElDS0EgdG9vLgoJRG8gbm90IGVkaXQgbGFiZWxzIGlmIGljb24gd2FzIGNsaWNrZWQuCglGaXggdGhlIGluY29ycmVjdCBpY29uIHdpZHRoIGluIG15IGVhcmxpZXIgcGF0Y2guCgoJKiBvYmplY3RzL2dkaW9iai5jOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUFkZGVkIGRlZmF1bHQgc3RvY2sgb2JqZWN0cyBmb3Iga25vd24gbm9uLVVTIGNoYXJzZXRzLgoKCSogZGxscy9tc2Rtby9NYWtlZmlsZS5pbiwgZGxscy9tc2Rtby9kbW9yZWcuYywgZGxscy9tc2Rtby9kbW9ydC5jLAoJICBkbGxzL21zZG1vL21zZG1vLnNwZWM6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJSW1wbGVtZW50ZWQgc29tZSBBUElzLgoJQWRkZWQgc29tZSBzdHVicy4KCgkqIHdpbmVkZWZhdWx0LnJlZzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglBZGRlZCBGaWx0ZXJEYXRhIG9mIERpcmVjdFNob3cgZmlsdGVycyAoRmlsdGVyRGF0YSBzaG91bGQgYmUKCXJlZ2lzdGVyZWQgZm9yIHJlbmRlcmluZyBtZWRpYSBmaWxlcykuCgoJKiBkbGxzL3NobHdhcGkvb3JkaW5hbC5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gUmVpbXBsZW1lbnQgZnVuY3Rpb25zIDM1MCwgMzUxLCAzNTIgdG8gdXNlIGFwcHJvcHJpYXRlIFcgZnVuY3Rpb25zCgkgICh0aGFua3MgSvxyZ2VuISkKCS0gQWRkIGFkZGl0aW9uYWwgY29tbWVudHMgdG8gZnVuY3Rpb25zIDI2NiwgMjY3LCAyNzYgYW5kIGFkanVzdCB0aGUKCSAgc3R1YmJlZCByZXR1cm4gdmFsdWVzLgoKCSogZGxscy9jb21jdGwzMi9yZWJhci5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gQ29ycmVjdCBSQk5fQ0hJTERTSVpFIHJlY3QgdmFsdWUgZm9yIENDU19WRVJUIHJlYmFyLgoJLSBEbyBVcGRhdGVXaW5kb3cgb25seSBpZiBkb2luZyByZWRyYXdzIHdoZW4gZG9pbmcgbGF5b3V0LgoKMjAwMi0wMy0xOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvcXVhcnR6L2FtdW5kb2MuYywgZGxscy9xdWFydHovYXVkcmVuLmMsIGRsbHMvcXVhcnR6L2F1ZHJlbi5oLAoJICBkbGxzL3F1YXJ0ei9hdmlkZWMuYywgZGxscy9xdWFydHovYXZpcGFyc2UuYywgZGxscy9xdWFydHovYmFzZXBpbi5jLAoJICBkbGxzL3F1YXJ0ei9jYXBncmFwaC5jLCBkbGxzL3F1YXJ0ei9jYXBncmFwaC5oLAoJICBkbGxzL3F1YXJ0ei9jc2NvbnYuYywgZGxscy9xdWFydHovZmdwYXNzLmMsIGRsbHMvcXVhcnR6L2ZncmFwaC5jLAoJICBkbGxzL3F1YXJ0ei9mZ3JhcGguaCwgZGxscy9xdWFydHovZmlsZXNpbmsuYywKCSAgZGxscy9xdWFydHovZmlsZXNpbmsuaCwgZGxscy9xdWFydHovZm1hcC5jLCBkbGxzL3F1YXJ0ei9pZmdyYXBoLmMsCgkgIGRsbHMvcXVhcnR6L2ltZmlsdGVyLmMsIGRsbHMvcXVhcnR6L2ltcG9zLmMsIGRsbHMvcXVhcnR6L2ltc2Vlay5jLAoJICBkbGxzL3F1YXJ0ei9tYWluLmMsIGRsbHMvcXVhcnR6L210eXBlLmMsIGRsbHMvcXVhcnR6L3BhcnNlci5jLAoJICBkbGxzL3F1YXJ0ei9wYXJzZXIuaCwgZGxscy9xdWFydHovcXVhcnR6X3ByaXZhdGUuaCwKCSAgZGxscy9xdWFydHovdmlkcmVuLmMsIGRsbHMvcXVhcnR6L3dhdnBhcnNlLmMsIGRsbHMvcXVhcnR6L3hmb3JtLmMsCgkgIGRsbHMvcXVhcnR6L3hmb3JtLmg6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJRml4ZWQgc29tZSBidWdzLgoJRml4ZWQgYXVkaW8gcmVuZGVyZXIuCglJbXBsZW1lbnRlZCBzZWVraW5nLgoJQWRkZWQgc29tZSBzdHVicy4KCgkqIGRsbHMvbXNpbWczMi9tc2ltZzMyLnNwZWMsIGRsbHMvbXNpbWczMi9tc2ltZzMyX21haW4uYywgaW5jbHVkZS93aW5nZGkuaDoKCUxlbyB2YW4gZGVuIEJlcmcgPGxlb0Bjb25uZWN0dXguY29tPgoJQWRkZWQgc29tZSBzdHVicy4KCgkqIGluY2x1ZGUvdXVpZHMuaDoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglBZGRlZCBhIG1pc3NpbmcgQ0xTSUQuCgoJKiBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLCBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjOgoJU2VyZ2VpIFR1cmNoYW5vdiA8cGx1bWJlckBwcmludC52bGFkLnJ1PgoJT3JkaW5hbCAzNDIgaXMgcmVhbGx5IG5hbWVkIFNISW50ZXJsb2NrZWRDb21wYXJlRXhjaGFuZ2UuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCUR1YW5lIENsYXJrIDxkY2xhcmtAYWthbWFpbC5jb20+CglUT09MQkFSX0xCdXR0b25VcCBzaG91bGQgd29yayBldmVuIGlmIFJlbGVhc2VDYXB0dXJlIHdhcyBhbHJlYWR5CgljYWxsZWQuCgoJKiBkb2N1bWVudGF0aW9uL3dpbmUudGV4aW5mbzoKCUplcmVteSBOZXdtYW4gPGpuZXdtYW5AY29kZXdlYXZlcnMuY29tPgoJRml4ZWQgV0FSUkFOVFkgaW5jbHVzaW9uLgoKCSogaW5jbHVkZS9zdHJtaWYuaDoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglBZGRlZCBzb21lIG1pc3NpbmcgZW51bXMuCgoJKiBkbGxzL2F2aWNhcDMyL2F2aWNhcDMyLnNwZWMsIGRsbHMvYXZpY2FwMzIvYXZpY2FwMzJfbWFpbi5jOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUFkZGVkIHN0dWJzLgoKCSogZmlsZXMvc21iLmM6CglHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCUFkZCBtaXNzaW5nICNpbmNsdWRlcyBmb3IgRnJlZUJTRCBhbmQgU29sYXJpcy4KCgkqIGRsbHMvd2luZWRvcy9kb3NleGUuaCwgZGxscy93aW5lZG9zL2Rvc3ZtLmMsIGRsbHMvd2luZWRvcy9pbnQzMy5jOgoJSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJQ29uc29sZSBtb2RlIERPUyBwcm9ncmFtcyBub3cgcmVjZWl2ZSBtb3VzZSBldmVudHMuCglSZXBsYWNlZCBHZXRNZXNzYWdlIHdpdGggUGVla01lc3NhZ2UsIHNpbmNlIE1zZ1dhaXRGb3JNdWx0aXBsZU9iamVjdHMKCWlzIGFsbG93ZWQgdG8gcmV0dXJuIHNwb250YW5lb3VzbHkuCgoJKiBwcm9ncmFtcy91bmluc3RhbGxlci9tYWluLmM6CglBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CgktIGZpeCBjb21wbGV0ZSBsaXN0Ym94IG1lc3N1cCBieSBvbmx5IHVwZGF0aW5nIGluIGNhc2UgaXQgbmVlZHMKCSAgdXBkYXRpbmcKCS0gZml4IGxpc3Rib3ggc2VsZWN0aW9uIGJyZWFrYWdlIGNhdXNpbmcgbXVsdGlwbGUgcHJvZ3JhbXMgdG8gZ2V0CgkgIHVuaW5zdGFsbGVkCgktIGltcGxlbWVudGVkIHNvcnRpbmcgb2YgZW50cmllcwoJLSBtdWNoIGJldHRlciBkZWJ1ZyBzdHJpbmdzCgoJKiBkbGxzL3VzZXIvdGVzdHMvc3lzcGFyYW1zLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJRG9uJ3Qgc2hvdyB0aGUgd2luZG93LgoKCSogaW5jbHVkZS9jb21tY3RybC5oLCBpbmNsdWRlL3dpbmJhc2UuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglTbWFsbCBmaXhlcy4KCjIwMDItMDMtMTIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBmaWxlcy9NYWtlZmlsZS5pbiwgZmlsZXMvZmlsZS5jLCBmaWxlcy9zbWIuYywgZmlsZXMvc21iLmgsCgkgIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwgc2VydmVyL01ha2VmaWxlLmluLAoJICBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvc21iLmMsIHNlcnZlci90cmFjZS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQHN0YXJ0LmNvbS5hdT4KCUJlZ2luIHRvIG1ha2Ugd2luZSBhbiBTTUIgY2xpZW50LgoKCSogaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9kbW8uaCwgaW5jbHVkZS9kbW9yZWcuaCwKCSAgaW5jbHVkZS9kbW9ydC5oLCBpbmNsdWRlL21lZGlhZXJyLmgsIGluY2x1ZGUvbWVkaWFvYmouaDoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglBZGRlZCBzb21lIG1pc3NpbmcgaGVhZGVycy4KCgkqIHNlcnZlci9zZXJpYWwuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0BzdGFydC5jb20uYXU+CglGaW5pc2ggYW55IHBlbmRpbmcgV2FpdENvbW1FdmVudHMgaWYgdGhlIGV2ZW50IG1hc2sgaXMgc2V0IHRvIDAuCgoJKiBkbGxzL21zcmxlMzIvbXNybGUzMi5jOgoJTWljaGFlbCBLYXJjaGVyIDxtaWNoYWVsLmthcmNoZXJAZHBrLmJlcmxpbi5maWRvLmRlPgoJcERzdCB3YXMgYWR2YW5jZWQgdG9vIG11Y2ggd2hlbiBkZWNvZGluZyBERUxUQSBibG9ja3MuCgoJKiBkbGxzL3gxMWRydi93aW5wb3MuYywgaW5jbHVkZS93aW51c2VyLmg6CglKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglBZGRlZCBvcHRpb24gU1dfRk9SQ0VNSU5JTUlaRSB0byBTaG93V2luZG93LgoKMjAwMi0wMy0xMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHRvb2xzL3dpbmVidWlsZC9idWlsZC5oLCB0b29scy93aW5lYnVpbGQvaW1wb3J0LmMsCgkgIHRvb2xzL3dpbmVidWlsZC9tYWluLmMsIHRvb2xzL3dpbmVidWlsZC9wYXJzZXIuYywKCSAgdG9vbHMvd2luZWJ1aWxkL3JlbGF5LmMsIHRvb2xzL3dpbmVidWlsZC9yZXMxNi5jLAoJICB0b29scy93aW5lYnVpbGQvcmVzMzIuYywgdG9vbHMvd2luZWJ1aWxkL3NwZWMxNi5jLAoJICB0b29scy93aW5lYnVpbGQvc3BlYzMyLmMsIHRvb2xzL3dpbmVidWlsZC91dGlscy5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglNYWRlIHdpbmVidWlsZCAoYWxtb3N0KSBjb21waWxlIGFuZCB3b3JrIG9uIFdpbmRvd3MuCgoJKiBkbGxzL2tlcm5lbC90aW1lLmMsIGluY2x1ZGUvd2luZS9wb3J0LmgsIGxpYnJhcnkvcG9ydC5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIEJldHRlciBoYW5kbGluZyB3aGVuIHNldHRpbWVvZmRheSBpcyBub3QgYXZhaWxhYmxlLgoJLSBBZGRpbmcgbmFtZSB0cmFuc2xhdGlvbnMgZm9yIHB7Y2xvc2Usb3Blbn0gYW5kIHN0cnssbn1jYXNlY21wIGlmCgkgIHRoZXkgZXhpc3RzIHVuZGVyIG90aGVyIG5hbWVzLgoKCSogY29uZmlndXJlLmFjLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBjb25maWd1cmU6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUFkZGVkIHNvbWUgb3B0aW9uYWwgaGVhZGVycyBhbmQgZnVuY3Rpb25zIGZvciBjb21waWxpbmcgb24gV2luZG93cwoJd2l0aCBNU1ZDLgoKCSogZGxscy91c2VyL21lc3NhZ2UuYzoKCUZpeGVkIGludGVyLXByb2Nlc3MgcGFja2luZyBvZiBDQi9MQl9GSU5EU1RSSU5HLCBDQi9MQl9GSU5EU1RSSU5HRVhBQ1QKCWFuZCBDQi9MQl9TRUxFQ1RTVFJJTkcuCgoJKiB3aW5kb3dzL3dpbnByb2MuYzogTWVobWV0IFlhc2FyIDxteWFzYXJAZnJlZS5mcj4KCUZpeGVkIFVuaWNvZGUgY29udmVyc2lvbiBmb3IgQ0IvTEJfRklORFNUUklORywgQ0IvTEJfRklORFNUUklOR0VYQUNUCglhbmQgQ0IvTEJfU0VMRUNUU1RSSU5HLgoKCSogZGxscy9tc3ZjcnQvZmlsZS5jLCBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYywgaW5jbHVkZS9tc3ZjcnQvc3RkaW8uaDoKCVdhbGRlayBIZWJpc2NoIDxoZWJpc2NoQG1hdGgudW5pLndyb2MucGw+CglJbXBsZW1lbnRlZCBzdGRpbyBidWZmZXJpbmcgYW5kIHVuZ2V0Yy4gTWlzYyBzdGRpbyBmaXhlcy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCUR1YW5lIENsYXJrIDxkY2xhcmtAYWthbWFpbC5jb20+CglBZGQgc3VwcG9ydCBmb3IgcmVwb3J0IG1vZGUgdGV4dCBqdXN0aWZpY2F0aW9uLgoKCSogc2NoZWR1bGVyL3N5bmNocm8uYywgZGxscy9rZXJuZWwvY29tbS5jLCBmaWxlcy9maWxlLmMsCgkgIGluY2x1ZGUvZmlsZS5oOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQHN0YXJ0LmNvbS5hdT4KCVNldCBhbiBvdmVybGFwcGVkIGhFdmVudCBiZWZvcmUgY2FsbGluZyBhbnkgQVBDcy4KCgkqIGRsbHMvcXVhcnR6L01ha2VmaWxlLmluLCBkbGxzL3F1YXJ0ei9jYXBncmFwaC5jLAoJICBkbGxzL3F1YXJ0ei9jYXBncmFwaC5oLCBkbGxzL3F1YXJ0ei9maWxlc2luay5jLAoJICBkbGxzL3F1YXJ0ei9maWxlc2luay5oLCBkbGxzL3F1YXJ0ei9tYWluLmM6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJQWRkZWQgc29tZSBzdHVicy4KCgkqIGluY2x1ZGUvdXVpZHMuaDoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglBZGRlZCBzb21lIENMU0lEcy4KCgkqIGRsbHMva2VybmVsL2RlYnVnZ2VyLmMsIGRsbHMvb2xlMzIvb2xlMzIuc3BlYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSBpc3N1ZXMgZm91bmQgYnkgd2luYXBpX2NoZWNrLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL25hdGl2ZWFwaS5wbSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL2FkdmFwaTMyLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL29sZTMyLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3JwY3J0NC5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9zaGx3YXBpLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9jaGVjazoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBNaW5vciBBUEkgdXBkYXRlLgoJLSBNaW5vciBidWcgZml4ZXMuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bF9KYS5yYywgZGxscy9jb21jdGwzMi9yc3JjLnJjLAoJICBkbGxzL2NvbW1kbGcvY2RsZ19KYS5yYywgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfSmEucmM6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJQWRkZWQgYW5kIGZpeGVkIHNvbWUgSmFwYW5lc2UgcmVzb3VyY2VzLgoKCSogZGxscy9jb21jdGwzMi9yZWJhci5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCUFkZCBzdXBwb3J0IGZvciBXTV9XSU5ET1dQT1NDSEFOR0VEIHRvIHNhdmUgbmV3IG9yaWdpbiBvZiB3aW5kb3cuCgoJKiBkbGxzL3VzZXIvdGV4dC5jOgoJQmlsbCBNZWRsYW5kIDxtZWRiaTAxQGFjY3BhYy5jb20+CglQYXNzIGluZm9ybWF0aW9uIHRocm91Z2ggYXJndW1lbnRzIGluc3RlYWQgb2Ygc3RhdGljIHZhcmlhYmxlcy4KCUFkZCBwcm90ZWN0aW9uIHRvIHByZXZlbnQgcmVhZGluZyBvdXRzaWRlIHRoZSBidWZmZXIuCglCZXR0ZXIgaGFuZGxpbmcgb2YgZGVnZW5lcmF0ZSBjYXNlcy4KCgkqIGRsbHMvc2V0dXBhcGkvc2V0dXB4X21haW4uYzoKCU1laG1ldCBZYXNhciA8bXlhc2FyQGZyZWUuZnI+CglQcmV2ZW50IHNldHVwIGZyb20gY3Jhc2hpbmcgaWYgYSBzZWN0aW9uIGluIHRoZSBJTkYgaXMgZW1wdHkgKG5vCgllbnRyaWVzKSAodGhpcyBoYXBwZW5zIHdoZW4gaW5zdGFsbGluZyBJRTUpLgoKCSogZGxscy9zaGx3YXBpL29yZGluYWwuYywgZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYzoKCVR1cmNoYW5vdiBTZXJnZWkgPHBsdW1iZXJAcHJpbnQudmxhZC5ydT4KCUltcGxlbWVudCBvcmRpbmFsIDM0Mi4KCgkqIHdpbmRvd3MveDExZHJ2L3dpbmVjbGlwc3J2LmM6CglKYXNvbiBQaGlsbGlwcyA8amFzb25wMUBjb3gubmV0PgoJTWFrZSB3aW5lY2xpcHNydiBydW4gYXMgYSBkYWVtb24gKGNsb3NlIHN0ZG91dC9zdGRlcnIsIG5vIGNvbnRyb2xsaW5nCgl0ZXJtaW5hbCwgc2Vzc2lvbiBncm91cCBsZWFkZXIpLgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzoKCUF4ZWwgU2NobWlkdCA8YmFiZUBheGVsLXNjaG1pZHQtbmV0LmRlPgoJQWRkZWQga2V5Ym9hcmQgbGF5b3V0IGZvciBMb2dpdGVjaCBDb3JkbGVzcyBEZXNrdG9wIFByby4KCgkqIHdpbmRvd3Mvc3lzcGFyYW1zLmM6CglBbmRyaXkgUGFsYW1hcmNodWsgPGFwYTNhQHlhaG9vLmNvbT4KCUFkZGVkIEZJWE1FcyBmb3IgYWN0aW9ucyB3aXRoIGlkPj0xMTUuIFRoZXNlIGFjdGlvbnMgd2VyZSBub3QKCXByb2Nlc3NlZCBiZWZvcmUuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CgktIEFkZCBzY2FmZm9sZGluZyBmb3IgVEJfe0dFVHxTRVR9UEFERElORy4KCS0gUmVwbGFjZSB3cm9uZyB0ZXN0IGZvciBDQ1NfVkVSVCB3aXRoIGNvcnJlY3QgdGVzdCBmb3IgdW5kb2N1bWVudGVkCgkgIFRCU1RZTEVfRVhfIHN0eWxlIDB4MDQuCgktIEFkZCBzdXBwb3J0IGZvciB1bmRvY3VtZW50ZWQgVEJfU0VUQlVUVE9OU0laRSB3aGVyZSB0aGUgc2l6ZSBpcwoJICB6ZXJvLCBzZXRzIHRvIGRlZmF1bHQgdmFsdWUuCgktIElzc3VlIEZJWE1FcyBmb3IgdW5zdXBwb3J0ZWQgZXh0ZW5kZWQgc3R5bGVzLgoJLSBJbXBsZW1lbnQgZmlyc3QgdHJ5IGF0IHVuZG9jdW1lbnRlZCB0b29sYmFyIG1lc3NhZ2UgMHgwNDYzLgoKCSogd2luZG93cy9zcHkuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglUcmFjZSB1bmRvY3VtZW50ZWQgdG9vbGJhciBtZXNzYWdlcy4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaDoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CgktIEFkZCBCVE5fLi4uIGRlZmluaXRpb25zIChyZXBsYWNlbWVudCBmb3IgVEJTVFlMRV8uLi4pLgoJLSBBZGQgZGVmaW5pdGlvbnMgb2YgYWRkaXRpb25hbCBUQlNUWUxFX0VYXyBzdHlsZXMuIEluY2x1ZGluZwoJICB1bmRvY3VtZW50ZWQgb25lIHVzZWQgYnkgSUU1LgoJLSBBZGQgYWRkaXRpb25hbCB0b29sYmFyIG1lc3NhZ2UgZGVmaW5pdGlvbnMgaW5jbHVkaW5nCgkgIHVuZG9jdW1lbnRlZCBvbmVzIHVzZWQgYnkgYXQgbGVhc3QgSUU1LgoKCSogZGxscy9kaW5wdXQvbW91c2UvbWFpbi5jOgoJQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJU29tZSBzbWFsbCBjbGVhbnVwcyB0byBkaW5wdXQgbW91c2UgY29kZS4KCgkqIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jLCBkbGxzL3dpbmluZXQvd2luaW5ldC5zcGVjOgoJQW5kcml5IFBhbGFtYXJjaHVrIDxhcGEzYUB5YWhvby5jb20+CglDcmVhdGVkIGR1bW15IGltcGxlbWVudGF0aW9uIG9mIEludGVybmV0U2V0T3B0aW9uIGZ1bmN0aW9uLgoKCSogZGxscy9jb21jdGwzMi9oZWFkZXIuYzoKCUR1YW5lIENsYXJrIDxkY2xhcmtAYWthbWFpbC5jb20+CglUZXN0IGJVbmljb2RlIGFuZCBjYWxsIGFwcHJvcHJpYXRlIERyYXdUZXh0IHJvdXRpbmUuCgoyMDAyLTAzLTEwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogQU5OT1VOQ0UsIENoYW5nZUxvZywgVkVSU0lPTiwgY29uZmlndXJlOgoJUmVsZWFzZSAyMDAyMDMxMC4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KMjAwMi0wMy0wOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIExJQ0VOU0UuT0xEOiBLZWVwIG9sZCBsaWNlbnNlIGFyb3VuZC4KCgkqIGluY2x1ZGUvZGVidWd0b29scy5oLCB0b29scy9hcGl3LmluZGV4LCB0b29scy9pcGNsLAoJICB0b29scy9tYWtlX29zMi5jbWQsIHRvb2xzL21ha2VodG1sLnBsLCB0b29scy91bmltYXAucGwsCgkgIHRvb2xzL3dtYy9sYW5ndWFnZS5jOgoJUmVtb3ZlZCBzb21lIG9ic29sZXRlIGZpbGVzLgoKCSogKi8qOgoJQWRkZWQgTEdQTCBzdGFuZGFyZCBjb21tZW50LCBhbmQgY29weXJpZ2h0IG5vdGljZXMgd2hlcmUgbmVjZXNzYXJ5LgoJR2xvYmFsIHJlcGxhY2VtZW50IG9mIGRlYnVndG9vbHMuaCBieSB3aW5lL2RlYnVnLmguCgoJKiBDT1BZSU5HLkxJQiwgTElDRU5TRSwgV0FSUkFOVFk6CglDaGFuZ2VkIGxpY2Vuc2UgdG8gTEdQTC4KCjIwMDItMDItMjggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBWRVJTSU9OLCBjb25maWd1cmUsIEFOTk9VTkNFLCBDaGFuZ2VMb2c6CglSZWxlYXNlIDIwMDIwMjI4LgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoyMDAyLTAyLTI4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9zaGVsbDMyL2F1dGhvcnMuaCwgQVVUSE9SUzoKCVVwZGF0ZWQgYXV0aG9ycyBsaXN0IGZyb20gdGhlIENoYW5nZWxvZy4gUGxlYXNlIGxldCBtZSBrbm93IGlmIHlvdQoJaGF2ZSBiZWVuIGxlZnQgb3V0LgoKCSogY29uZmlndXJlLmFjLCBjb25maWd1cmU6CglBZGRlZCB0ZXN0cyBleHRyYSBkaXJlY3Rvcmllcy4KCgkqIHByb2dyYW1zL3JlZ2FwaS90ZXN0cy8uY3ZzaWdub3JlLCBwcm9ncmFtcy9yZWdhcGkvdGVzdHMvUkVBRE1FLAoJICBwcm9ncmFtcy9yZWdhcGkvdGVzdHMvYWZ0ZXIucmVnLCBwcm9ncmFtcy9yZWdhcGkvdGVzdHMvYmVmb3JlLnJlZywKCSAgcHJvZ3JhbXMvcmVnYXBpL3Rlc3RzL29yaWcucmVnLCBwcm9ncmFtcy9yZWdhcGkvdGVzdHMvcmVnYXBpLnBsLAoJICBwcm9ncmFtcy9yZWdhcGkvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3JlZ2FwaS9SRUFETUUsCgkgIHByb2dyYW1zL3JlZ2FwaS9yZWdGaXhlci5wbCwgcHJvZ3JhbXMvcmVnYXBpL3JlZ1Jlc3RvcmVyLnBsLAoJICBwcm9ncmFtcy9yZWdhcGkvcmVnU2V0LnNoLCBwcm9ncmFtcy9yZWdhcGkvcmVnYXBpLmM6CglBbmRyaXkgUGFsYW1hcmNodWsgPGFwYTNhQHlhaG9vLmNvbT4KCU1hZGUgcmVnYXBpIHNjcmlwdHMgYWJsZSB0byBwcm9jZXNzIC5yZWcgZmlsZXMgaW4gcmVnZWRpdAoJZm9ybWF0LiBJbXBsZW1lbnRlZCB1bml0IHRlc3RzIGZvciByZWcgZGlmZiBmdW5jdGlvbmFsaXR5LgoKCSogZGxscy9tYWtlX2RsbHMsIE1ha2UucnVsZXMuaW4sIE1ha2VmaWxlLmluLCBkbGxzL01ha2VmaWxlLmluOgoJQWRkZWQgbWFrZSBjaGVjayB0YXJnZXQgdG8gcnVuIHVuaXQgdGVzdHMgdG9vIHNpbmNlIHRoaXMgc2VlbXMgdG8gYmUKCXN0YW5kYXJkLgoKCSogd2luZG93cy93aW5wcm9jLmM6CglEYXZlIEhhd2tlcyA8ZGF2ZWgtd2luZUBjYWRsaW5rLmNvbT4KCUZpeGVkIHdpbnByb2MgbWVtb3J5IGxlYWsuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglEdWFuZSBDbGFyayA8ZGNsYXJrQGFrYW1haWwuY29tPgoJQXNrIGZvciBjb3JyZWN0IG51bWJlciBvZiBjaGFycyBpbiBFZGl0TGJsV25kUHJvY1QuCgoJKiBkbGxzL3NobHdhcGkvb3JkaW5hbC5jOgoJTWljaGFlbCBDYXJkZW5hcyA8bWljaGFlbGNAbGluZG93cy5jb20+CglNb3JlIGNvbXBsZXRlIGltcGxlbWVudGF0aW9uIG9mIFNITFdBUElfMzU2LgoKCSogZGxscy9vbGUzMi9zdG9yYWdlMzIuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0BzdGFydC5jb20uYXU+CglGaXhlZCBtZXJnZSBlcnJvci4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCUR1YW5lIENsYXJrIDxkY2xhcmtAYWthbWFpbC5jb20+CglMSVNUVklFV19JbnNlcnRDb2x1bW5UIGNhbiBiZSBjYWxsZWQgd2l0aCBhIHdpZHRoIG9mCglMVlNDV19BVVRPU0laRV9VU0VIRUFERVIuCglVc2UgdGhlIGNvcnJlY3Qgc3RyaW5ncyB3aGVuIGNvbHVtbiBhdXRvc2l6aW5nIG9uIGNvbHVtbnMgb3RoZXIgdGhhbgoJY29sdW1uIDAuCglMVlNDV19BVVRPU0laRV9VU0VIRUFERVIgdXNlcyBib3RoIGl0ZW0gYW5kIGhlYWRlciBzdHJpbmdzLgoKMjAwMi0wMi0yNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvd2lubnQuaDoKCUFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCUFkZGVkIHNvbWUgZGVmaW5lcyBhbmQgb2Zmc2V0cy4KCgkqIG9iamVjdHMvZ2Rpb2JqLmMsIHJlbGF5MzIvYnVpbHRpbjMyLmMsIG1pc2MvcmVnaXN0cnkuYywKCSAgZGxscy9rZXJuZWwvY29tbS5jLCBkbGxzL2tlcm5lbC9zdHJpbmcuYzoKCUFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCVZhcmlvdXMgY29zbWV0aWMgY2hhbmdlcy4KCgkqIGRsbHMvdXNlci9NYWtlZmlsZS5pbiwgZGxscy91c2VyL3Rlc3RzLy5jdnNpZ25vcmUsCgkgIGRsbHMvdXNlci90ZXN0cy9zeXNwYXJhbXMuYywgZGxscy91c2VyL3Rlc3RzL3VzZXIzMl90ZXN0LnNwZWM6CglBbmRyaXkgUGFsYW1hcmNodWsgPGFwYTNhQHlhaG9vLmNvbT4KCUFkZGVkIFN5c3RlbVBhcmFtZXRlcnNJbmZvIHVuaXQgdGVzdC4KCgkqIGRvY3VtZW50YXRpb24vTWFrZWZpbGUuaW4sIHRvb2xzL01ha2VmaWxlLmluOgoJQ29zbWV0aWMgZml4ZXMuCgoJKiBwcm9ncmFtcy9jb250cm9sL2xjY21ha2UuYmF0LCBwcm9ncmFtcy9ub3RlcGFkL2xjY21ha2UsCgkgIHByb2dyYW1zL3ZpZXcvbGNjbWFrZWZpbGUsIHByb2dyYW1zL3djbWQvbWFrZWZpbGUuYmNjOgoJQW5kcml5IFBhbGFtYXJjaHVrIDxhcGEzYUB5YWhvby5jb20+CglSZW1vdmVkIGFsdGVybmF0aXZlIG1ha2Ugc2NyaXB0cy4KCgkqIGZpbGVzL2RpcmVjdG9yeS5jOgoJQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJSW1wbGVtZW50ZWQgIkFwcCBQYXRocyIgcmVnaXN0cnkga2V5IHN1cHBvcnQgZm9yIFNlYXJjaFBhdGgoKS4KCgkqIGZpbGVzL3Byb2ZpbGUuYzoKCUFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCUZpeGVkIG92ZXJmbG93IGFuZCBzaWduZWQvdW5zaWduZWQgYmVoYXZpb3VyLgoKCSogc2VydmVyL2RlYnVnZ2VyLmMsIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci9yZXF1ZXN0LmgsCgkgIHNlcnZlci90cmFjZS5jLCBkbGxzL2tlcm5lbC9kZWJ1Z2dlci5jLAoJICBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmg6CglSZWltcGxlbWVudGVkIERlYnVnQnJlYWtQcm9jZXNzLgoKCSogdG9vbHMvd3JjL2R1bXByZXMuYywgdG9vbHMvd2luZWR1bXAvbWlzYy5jLAoJICBwcm9ncmFtcy9hdml0b29scy9hdmlpbmZvLmMsIG1zZG9zL3Z4ZC5jLCBncmFwaGljcy94MTFkcnYvZGliLmMsCgkgIGdyYXBoaWNzL3BhaW50aW5nLmMsIGRsbHMvd2luc3Bvb2wvaW5mby5jLCBkbGxzL3dpbmVkb3MvZGV2aWNlcy5jLAoJICBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3JpY2hlZGl0L2NoYXJsaXN0LmMsCgkgIGRsbHMva2VybmVsL2NvbnNvbGUuYywgZGxscy9xdWFydHovYXVkcmVuLmMsIGRsbHMvY29tY3RsMzIvdXBkb3duLmMsCgkgIGRsbHMvY29tY3RsMzIvcmViYXIuYywgZGxscy9jb21jdGwzMi90cmVldmlldy5jOgoJQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJU3BlbGxpbmcvYWxpZ25tZW50IGZpeGVzLgoKCSogZG9jdW1lbnRhdGlvbi9zYW1wbGVzL2NvbmZpZywgdG9vbHMvd2luZWNoZWNrLAoJICBkb2N1bWVudGF0aW9uL2luc3RhbGxpbmcuc2dtbCwgZG9jdW1lbnRhdGlvbi9yZWdpc3RyeS5zZ21sLAoJICBkb2N1bWVudGF0aW9uL3dpbmUuY29uZi5tYW4sIFJFQURNRToKCUFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCS0gc3RyZXNzIHRoZSBmYWN0IHRoYXQgd2luZWluc3RhbGwgaXMgaW4gV2luZSBzb3VyY2UKCS0gYWRkIG1pc3NpbmcgdHR5ZHJ2L3gxMWRydiBzZWN0aW9uIHRvIHdpbmUuY29uZi5tYW4KCS0gbWFrZSBzdXJlIHRoYXQgd2UgYWxzbyBsb2FkIHNoZG9jdncgYXMgYnVpbHRpbiBpbiBzYW1wbGUgY29uZmlnIGZpbGUKCS0gYWRkIHNhbXBsZSBBcHBEZWZhdWx0cyBzZWN0aW9uIHRvIHNhbXBsZSBjb25maWcgZmlsZQoJLSB3aW5lY2hlY2sgdXBkYXRlCgoJKiBkb2N1bWVudGF0aW9uL2RlYnVnZ2VyLnNnbWwsIGRlYnVnZ2VyL2RiZy55LCBkZWJ1Z2dlci9kZWJ1Zy5sLAoJICBkZWJ1Z2dlci9kZWJ1Z2dlci5oLCBkZWJ1Z2dlci93aW5lZGJnLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIHRoZSBkZXRhY2ggY29tbWFuZCB0byB0aGUgZGVidWdnZXIuCgoJKiBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsIHNlcnZlci9kZWJ1Z2dlci5jLCBzZXJ2ZXIvcHJvY2Vzcy5jLAoJICBzZXJ2ZXIvcHJvY2Vzcy5oLCBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvcmVxdWVzdC5oLAoJICBzZXJ2ZXIvdHJhY2UuYywgZGxscy9rZXJuZWwvZGVidWdnZXIuYywgZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywKCSAgaW5jbHVkZS93aW5iYXNlLmg6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCU5ldyBYUCBkZWJ1Z2dpbmcgQVBJczogaW1wbGVtZW50ZWQgRGVidWdBY3RpdmVQcm9jZXNzU3RvcCwKCURlYnVnU2V0UHJvY2Vzc0tpbGxPbkV4aXQsIERlYnVnQnJlYWtQcm9jZXNzLgoKCSogQlVHUzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBbmRyaXkgUGFsYW1hcmNodWsgPGFwYTNhQHlhaG9vLmNvbT4KCVJld3JvdGUgQlVHUyBmaWxlLiBMaXN0ZWQgZGlyZWN0aW9ucyBmb3IgdGhvc2Ugd2hvIHdhbnQgdG8gY29udHJpYnV0ZQoJdG8gdGhlIHByb2plY3QuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglCaWxsIE1lZGxhbmQgPG1lZGJpMDFAYWNjcGFjLmNvbT4KCUNlbnRyZSB0ZXh0IGNvcnJlY3RseSBmb3IgdGhlIHNlbGVjdGVkIGl0ZW0uCglEcmF3IGNvbXBsZXRlIGJhY2tncm91bmQgZm9yIHRoZSBzZWxlY3RlZCBpdGVtLgoJQ2FsY3VsYXRlIHRoZSBzaXplIG9mIGEgbGFyZ2UgaWNvbiBtb3JlIGNvcnJlY3RseSAoaW5jbHVkaW5nIG11bHRpbGluZQoJbGFiZWxzKS4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gU3VwcG9ydCBDQ1NfVkVSVCBhcyBhbHRlcm5hdGl2ZSBmb3IgVEJTVFlMRV9XUkFQQUJMRS4KCS0gVEJfSU5TRVJUQlVUVE9OVyB3YXMgbm90IGFzIGZ1bmN0aW9uYWwgYXMgdGhlICdBJyB2ZXJzaW9uLiBUaGV5IG5vdwoJICBtYXRjaC4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbC5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwgZGxscy9zaGVsbDMyL3NobGV4ZWMuYywKCSAgZGxscy9zaGVsbDMyL01ha2VmaWxlLmluOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBTaGVsbEV4ZWN1dGUgZnVuY3Rpb25zIHdoZW4gZGRlZXhlYyB3YXMgcHJlc2VudCBpbiByZWdpc3RyeS4KCgkqIHdpbmRvd3Mvd2luLmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJRml4IHRoZSBzdHJhbmdlIGNhc2UgaW4gV0lOX0ZpeENvb3JkaW5hdGVzIHdoZXJlIHggYW5kIGN4IGFyZSBub3QKCWRlZmF1bHQgYnV0IGN5IGlzIENXX1VTRURFRkFVTFQuCgoyMDAyLTAyLTI2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS9NYWtlZmlsZS5pbjogRml4ZWQgbWFrZSB1bmluc3RhbGwuCgoJKiBkbGxzL2tlcm5lbC9jb21tLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIGN1dCZwYXN0ZSBwcm9ibGVtIGluIFNFVFJUUy4KCgkqIGRsbHMvdXNlci90ZXh0LmM6CglCaWxsIE1lZGxhbmQgPG1lZGJpMDFAYWNjcGFjLmNvbT4KCUNvcnJlY3QgV29yZCBicmVha2luZyBpbiBjZW50cmVkL3JpZ2h0IGp1c3RpZmllZCBtb2RlOyBpdCB3YXMgbGVhdmluZyBhCgl0cmFpbGluZyBzcGFjZSB3aGljaCBpdCBzaG91bGQgb25seSBkbyBmb3IgbGVmdC1qdXN0aWZpZWQgdGV4dC4KCUFsc28gdGlnaHRlbiB1cCBzb21lIGNvbW1lbnRzLgoKCSogd2luZG93cy9zcHkuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglBZGQgYWRkaXRpb25hbCBDQ01fIG1lc3NhZ2UgbmFtZXMuCgoJKiBkbGxzL2NvbWN0bDMyL3BhZ2VyLmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJSW1wbGVtZW50IEVNX0ZNVExJTkVTIG1lc3NhZ2UgYmFzZWQgb24gcmVsYXkgdHJhY2Ugb2YgbmF0aXZlLgoKCSogaW5jbHVkZS9tbXJlZy5oOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBsb3RzIG9mIG1pc3NpbmcgZGVmaW5lcy4KCgkqIGRsbHMvdXNlci9kZGUvbWlzYy5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBEZGVHZXREYXRhIHdoZW4gY2FsbGVkIGZvciBnZXR0aW5nIHNpemUuCgoJKiBjb250cm9scy9zdGF0aWMuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgV01fU0VURk9OVCBoYW5kbGluZyAobm8gcmVkcmF3IG1hZGUgaW4gc29tZSBjYXNlcykuCgoJKiBkZWJ1Z2dlci9pbmZvLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUNvc21ldGljIGZpeGVzIHRvICd3YWxrIHByb2MnIGNvbW1hbmQuCgoJKiBkbGxzL2RkcmF3L2RzdXJmYWNlL2hhbC5jLCBkbGxzL3gxMWRydi94MTFkZHJhdy5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUZpeCBjcmFzaCBpbiB0aGUgWDExIEhBTCB3aGVuIHNldHRpbmcgYSBOVUxMIHBhbGV0dGUgdG8gYSBzdXJmYWNlLgoKCSogZG9jdW1lbnRhdGlvbi9kYjJodG1sLXdpbmVocToKCVBoaWxpcHAgV29sbGVybWFubiA8cGhpbF93b0BnbXgubmV0PgoJQWRkZWQgc3VwcG9ydCBmb3IgdGhlIENydXggTGludXggZGlzdHJpYnV0aW9uICh3aXRoIG9wZW5qYWRlKS4KCgkqIGRsbHMvY29tY3RsMzIvcmViYXIuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglGaXggYW5vdGhlciBiYWQgdGVzdC4gQ2F1c2VkIHJlZ3Jlc3Npb24gaW4gSUUgNC4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJQ2hhcmxlcyBEdWZmeSA8Y2R1ZmZ5QGJpZ2Zvb3QuY29tPgoJU3RvcCBUT09MQkFSX01lYXN1cmVTdHJpbmcgZnJvbSBkeWluZyBvbiBlbXB0eSBzdHJpbmdzLgoKCSogZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYzoKCURhdmUgSGF3a2VzIDxkYXZlaC13aW5lQGNhZGxpbmsuY29tPgoJUGFydGlhbGx5IHJlcGFpciBob3RzcG90IGhhbmRsaW5nLgoKMjAwMi0wMi0yNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MvY3Vyc29yaWNvbi5jLCByZWxheTMyL3Nub29wLmMsIHdpbjMyL2NvbnNvbGUuYywKCSAgd2luMzIvZXhjZXB0LmMsIHdpbjMyL2luaXQuYywgaW5jbHVkZS9tc3ZjcnQvZXhjcHQuaCwKCSAgaW5jbHVkZS93aW5udC5oLCBsb2FkZXIvcmVzb3VyY2UuYywgbWVtb3J5L2dsb2JhbC5jLAoJICBtZW1vcnkvc3RyaW5nLmMsIG1lbW9yeS92aXJ0dWFsLmMsIGRsbHMvd2luZWRvcy9kb3N2bS5jLAoJICBmaWxlcy9kb3NfZnMuYywgaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS93aW5kb3dzLmgsCgkgIGRsbHMvbnRkbGwvZGVidWd0b29scy5jLCBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jLCBkbGxzL250ZGxsL3NlYy5jLAoJICBkbGxzL29wZW5nbDMyL3dnbC5jLCBkbGxzL3VzZXIvbHN0ci5jLCBkZWJ1Z2dlci9kYmcueSwKCSAgZGVidWdnZXIvd2luZWRiZy5jLCBkbGxzL21zdmNydC9leGNlcHQuYzoKCVBldGVyIEh1bm5pc2V0dCA8cGV0ZXJAdHJhbnNnYW1pbmcuY29tPgoJTmV3IGZpbGUgbXN2Y3J0L2V4Y3B0LmguIE1vdmUgc29tZSBzdHVmZiBvdXQgb2Ygd2lubnQuaCBpbnRvIGl0LgoKCSogd2luZG93cy94MTFkcnYvZXZlbnQuYzoKCURhdmUgSGF3a2VzIDxkYXZlaC13aW5lQGNhZGxpbmsuY29tPgoJUHJldmVudCBsb2NrLXVwIHdpdGggYSBmb2N1cyBsb29wIGJldHdlZW4gdHdvIHRvcCBsZXZlbCB1bm1hbmFnZWQKCXdpbmRvd3MuCgoJKiBpbmNsdWRlL3RzX3hsaWIuaCwgdHN4MTEvWDExX2NhbGxzLCB0c3gxMS90c194bGliLmM6CglHYXZyaWVsIFN0YXRlIDxnYXZAdHJhbnNnYW1pbmcuY29tPgoJQWRkZWQgWFZpc3VhbElERnJvbVZpc3VhbCB0byB0c3gxMSBsaXN0LgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAbmVyaW0ubmV0PgoJTFZNX0dldEl0ZW1SZWN0IHNob3VsZCBub3QgdGFrZSB0ZXh0IHNpemUgaW4gYWNjb3VudCBmb3IgTFZJUl9MQUJFTCBpbgoJcmVwb3J0IG1vZGUuCgoyMDAyLTAyLTIyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZmlsZXMvZmlsZS5jOgoJR2VyaGFyZCBXLiBHcnViZXIgPHNwYXJoYXdrQGdteC5hdD4KCU1vdmVGaWxlRXggbm93IGVudGVycyB0aGUgZmlsZXMgaW4gdGhlIHJlZ2lzdHJ5IHdoZW4gdGhlIGJvb3QgZGVsYXkKCWZsYWcgaXMgc2V0LgoKCSogaW5jbHVkZS93aW5lL3dpbnVzZXIxNi5oLCB3aW5kb3dzL2lucHV0LmMsIGluY2x1ZGUvd2ludXNlci5oOgoJUGV0ZXIgSHVubmlzZXR0IDxwZXRlckB0cmFuc2dhbWluZy5jb20+CglGaXggcmV0dXJuIHR5cGUgb2YgR2V0QXN5bmNLZXlTdGF0ZS4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCUJpbGwgTWVkbGFuZCA8bWVkYmkwMUBhY2NwYWMuY29tPgoJSW1wbGVtZW50IG11bHRpbGluZSBsYWJlbHMgaW4gdGhlIExhcmdlIEl0ZW0gdmlldyBieSB1c2luZyBEcmF3VGV4dAoJTm90ZSB0aGF0IHRoaXMgbm93IGhpZ2hsaWdodHMgd2Vha25lc3NlcyBpbiB0aGUgbGFiZWwgbWVhc3VyaW5nIGNvZGUKCWV0Yy4gd2hpY2ggY2Fubm90IGNvcnJlY3RseSBoYW5kbGUgbXVsdGlsaW5lIGxhYmVscy4KCgkqIGRsbHMvb2xlMzIvbWFyc2hhbC5jOgoJU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtTGluZS5jb20+CglDb21waWxlIGZpeCBmb3IgR0NDIDIuNy54LgoKCSogZGxscy9udGRsbC9udGRsbC5zcGVjOgoJUGV0ZXIgSHVubmlzZXR0IDxwZXRlckB0cmFuc2dhbWluZy5jb20+CglBZGQgc3BlYyBzdHViIGZvciBSdGxHZXROdFZlcnNpb25OdW1iZXJzLgoKCSogZGxscy93aW5hc3BpL2FzcGkuYzoKCUdhdnJpZWwgU3RhdGUgPGdhdkB0cmFuc2dhbWluZy5jb20+CglDaGFuZ2UgdXNlbGVzcyB3YXJuaW5nIGludG8gYSBUUkFDRS4KCgkqIGluY2x1ZGUvbXN2Y3J0L3N0ZGxpYi5oLCBkbGxzL21zdmNydC9leGl0LmM6CglQZXRlciBIdW5uaXNldHQgPHBldGVyQHRyYW5zZ2FtaW5nLmNvbT4KCWF0ZXhpdCBkb2Vzbid0IHRha2UgYSBfb25leGl0X3QgcGFyYW1ldGVyLgoKCSogcHJvZ3JhbXMvdW5pbnN0YWxsZXIvbWFpbi5jOgoJQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJUmVtZW1iZXIgdGhlIGN1cnJlbnRseSBhY3RpdmUgaW5kZXggYmVmb3JlIHJlZnJlc2hpbmcuCgoyMDAyLTAyLTIxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9tc3ZjcnQvTWFrZWZpbGUuaW4sIGRsbHMvbXN2Y3J0L2NvbnNvbGUuYywgZGxscy9tc3ZjcnQvZXhpdC5jLAoJICBkbGxzL21zdmNydC9maWxlLmMsIGRsbHMvbXN2Y3J0L2hlYXAuYywgZGxscy9tc3ZjcnQvbG9jYWxlLmMsCgkgIGRsbHMvbXN2Y3J0L2xvY2suYywgZGxscy9tc3ZjcnQvbWFpbi5jLCBkbGxzL21zdmNydC9tc3ZjcnQuaCwKCSAgZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWMsIGRsbHMvbXN2Y3J0L210ZGxsLmg6CglQZXRlciBIdW5uaXNldHQgPHBldGVyQHRyYW5zZ2FtaW5nLmNvbT4KCUFkZCBfbG9jayxfdW5sb2NrIGFuZCBoZWFkZXIgZmlsZSBmb3IgdGhlbS4KCUNvbnZlcnQgYWxsIG1zdmNydCBsb2NrcyBvdmVyIHRvIHVzZSBfbG9jayBhbmQgX3VubG9jay4KCUV4cGxpY2l0bHkgbWFrZSBtc3ZjcnQgY29tcGlsZSB3aXRoIG11bHRpdGhyZWFkZWQgb3B0aW9uLgoJRml4IGZsYWcgaGFuZGxpbmcgaW4gX3NvcGVuLiBBZGQgVy0+QSBjYWxsIGZvciBuZXcgX3N3b3Blbi4KCgkqIGRlYnVnZ2VyL3N0YWJzLmM6CglQZXRlciBIdW5uaXNldHQgPHBldGVyQHRyYW5zZ2FtaW5nLmNvbT4KCUF2b2lkIGFzc2VydCBmb3IgdmVyeSBsYXJnZSBDKysgLnNvIGZpbGVzLgoKCSogaW5jbHVkZS93aW5lL29ial9iYXNlLmg6CglQZXRlciBIdW5uaXNldHQgPHBldGVyQHRyYW5zZ2FtaW5nLmNvbT4KCUZpeCBJQ09NX0RFRklORSBmb3IgQysrLgoKCSogZGxscy9zaGx3YXBpL29yZGluYWwuYywgZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYywKCSAgZGxscy9zaGx3YXBpL3NobHdhcGlfbWFpbi5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gRm9yd2FyZCBvcmRpbmFscyA0MCwgNDEsIDE0MywgMzYyIHRvIGFwcHJvcHJpYXRlIHJvdXRpbmVzLgoJLSBJbXBsZW1lbnQgb3JkaW5hbHMgMTU1LCAzNTAsIDM1MSwgMzUyLCA0MTgsIDQzNi4KCS0gRmFrZSBpbXBsZW1lbnRhdGlvbiBvZiBTSEdldEludmVyc2VDTUFQLgoJLSBTdHViIG9yZGluYWwgMjA5LgoJLSBGaXggZGVmaW5pdGlvbiBvZiBvcmRpbmFsIDcuCgktIEltcGxlbWVudCBTSEdldFRocmVhZFJlZiBhbmQgU0hTZXRUaHJlYWRSZWYuCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmgsIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCUZpeCBwcm9ibGVtcyBpbiBEUEFfTWVyZ2UgZXhwb3NlZCBieSBwcmV2aW91cyBjb2RlIGNsZWFudXAuCgoJKiB0b29scy93aW5laW5zdGFsbDogQWRhbSBELiBNb3NzIDxhZGFtQGdpbXAub3JnPgoJUGFydGlhbGx5IHJldmVydCBwcmV2aW91cyBjaGFuZ2VzLCBmb3JjZSBjb25maWd1cmUgdG8gd3JpdGUgYW4KCW9sZC1zdHlsZSBjb25maWcuY2FjaGUuCgoJKiBkbGxzL3VzZXIvdGV4dC5jOgoJQmlsbCBNZWRsYW5kIDxtZWRiaTAxQGFjY3BhYy5jb20+CglEcmF3VGV4dCBlbGxpcHNpZmljYXRpb24gb24gYWxsIGxpbmVzLCBub3QganVzdCBzaW5nbGUtbGluZS4KCjIwMDItMDItMjAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBwcm9ncmFtcy93aW5ldGVzdC9tYWtlX2N0ZXN0cywgcHJvZ3JhbXMvd2luZXRlc3QvcnVudGVzdCwKCSAgcHJvZ3JhbXMvd2luZXRlc3Qvd3RtYWluLmMsIGluY2x1ZGUvd2luZS90ZXN0LmgsCgkgIGRsbHMvTWFrZWRsbC5ydWxlcy5pbiwgTWFrZS5ydWxlcy5pbjoKCVByZWxpbWluYXJ5IHZlcnNpb24gb2YgdGhlIEMgdW5pdCB0ZXN0cyBydW4tdGltZSBlbnZpcm9ubWVudC4KCUFkZGVkIG1ha2UgcnVsZXMgZm9yIGJ1aWxkaW5nIGFuZCBydW5uaW5nIEMgdW5pdCB0ZXN0cy4KCgkqIHByb2dyYW1zL25vdGVwYWQvZGlhbG9nLmMsIHByb2dyYW1zL25vdGVwYWQvbGNjLmgsCgkgIHByb2dyYW1zL25vdGVwYWQvbWFpbi5jLCBwcm9ncmFtcy9ub3RlcGFkL21haW4uaDoKCUFuZHJpeSBQYWxhbWFyY2h1ayA8YXBhM2FAeWFob28uY29tPgoJLSBtYWRlIG5vdGVwYWQgY29tcGlsZSB3aXRoIEN5Z3dpbgoJLSBtYWRlIGNoYW5nZXMgdG8gdGhlIHByZWNvbXBpbGVyIGRpcmVjdGl2ZXMgdG8gY2hlY2sgZm9yIHNwZWNpZmljCgkgIGZlYXR1cmVzIGluc3RlYWQgb2YgY2hlY2tpbmcgZm9yIHRoZSBlbnZpcm9ubWVudCB2ZXJzaW9uLgoKCSogZGxscy91c2VyL3RleHQuYzoKCUJpbGwgTWVkbGFuZCA8bWVkYmkwMUBhY2NwYWMuY29tPgoJRHJhd3RleHQgdGlkeWluZyB1cCByZWFkeSBmb3IgdGhlIG5leHQgYmlnIGNoYW5nZToKCS0gRml4IGJyYWluZmFkZSBpbiBwcmV2aW91cyBkZWx0YQoJLSBNb3ZlIGVsbGlwc2lmaWNhdGlvbiByZXN1bHRzIHRvIHN0YXRpYyBtZW1vcnk7IHRoZXkgYXJlIGdvaW5nIHRvCgkgIGhhdmUgdG8gYmUgcmVmZXJlbmNlZCBpbnNpZGUgTmV4dExpbmVXIGFuZCB0aGUgYXJnIGxpc3QgaXMgdG9vIGJpZwoJICBhbHJlYWR5LgoJLSBBZGQgdGhlIG1pc3NpbmcgZWxsaXBzaWZpY2F0aW9uIHJlc3VsdCAobGVuX3VuZGVyKSB0byBzaW1wbGlmeSBjb2RpbmcuCgktIFNsaWdodCBjb3JyZWN0aW9uIHRvIHByZWZpeCB0cmFja2luZyBmb3Igd2hlbiB0aGVyZSBhcmUgc2V2ZXJhbAoJICB1bmRlcmxpbmVkIGNoYXJhY3RlcnMgb24gYSBzaW5nbGUgbGluZSAoRFRfRVhQQU5EVEFCUyBvbmx5KS4KCS0gQWxsb2NhdGUgYW5kIGZyZWUgdGhlIHRlbXBvcmFyeSBjb3B5IHJlcXVpcmVkIGZvciBEVF9NT0RJRllTVFJJTkcKCSAgcmF0aGVyIHRoYW4gdXNpbmcgYSBmaXhlZCBzaXplIHN0YWNrIGFycmF5LgoJLSBJbnRyb2R1Y2UgbGFzdGxpbmUgaW50byB0aGUgbWFpbiBsb29wOyBpdCBzaW1wbGlmaWVzIHRoZSBjb2RlIGFuZCB3ZQoJICBhcmUgZ29pbmcgdG8gbmVlZCBpdC4KCgkqIGRsbHMvc2hsd2FwaS9wYXRoLmM6CglMYXdzb24gV2hpdG5leSA8bGF3c29uX3doaXRuZXlAanVuby5jb20+CglQcm90ZWN0IFBhdGhJc1VOQ1NlcnZlclNoYXJlIGZyb20gbnVsbCBscHN6UGF0aC4KCjIwMDItMDItMTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL2NvbmZpZy5oLmluLCBkbGxzL2tlcm5lbC9jb21tLmMsIGNvbmZpZ3VyZS5hYywgY29uZmlndXJlOgoJTGF3c29uIFdoaXRuZXkgPGxhd3Nvbl93aGl0bmV5QGp1bm8uLmNvbT4KCVN1cHBvcnQgZm9yIG5vbnN0YW5kYXJkIGJhdWQgcmF0ZSBpbiBTZXRDb21tU3RhdGUuCgoJKiBwcm9ncmFtcy9ub3RlcGFkL0RhLnJjLCBwcm9ncmFtcy9ub3RlcGFkL0RlLnJjLAoJICBwcm9ncmFtcy9ub3RlcGFkL0VuLnJjLCBwcm9ncmFtcy9ub3RlcGFkL0VzLnJjLAoJICBwcm9ncmFtcy9ub3RlcGFkL0ZpLnJjLCBwcm9ncmFtcy9ub3RlcGFkL0ZyLnJjLAoJICBwcm9ncmFtcy9ub3RlcGFkL1B0LnJjLCBwcm9ncmFtcy9ub3RlcGFkL1NrLnJjLAoJICBwcm9ncmFtcy9ub3RlcGFkL1N3LnJjLCBwcm9ncmFtcy9ub3RlcGFkL1dhLnJjLAoJICBwcm9ncmFtcy9ub3RlcGFkL2RpYWxvZy5jLCBwcm9ncmFtcy9ub3RlcGFkL21haW4uYywKCSAgcHJvZ3JhbXMvbm90ZXBhZC9tYWluLmgsIHByb2dyYW1zL25vdGVwYWQvbm90ZXBhZC5yYzoKCUFuZHJpeSBQYWxhbWFyY2h1ayA8YXBhM2FAeWFob28uY29tPgoJSW1wbGVtZW50ZWQgcGFyc2luZyBvZiBmaWxlIG5hbWUsIHBhc3NlZCBpbiBjb21tYW5kIGxpbmUsIGxvYWRpbmcgbmV3CglmaWxlIG9uIHN0YXJ0dXAuCgoJKiBkbGxzL3JwY3J0NC9ycGNydDQuc3BlYzoKCVN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJQWRkZWQgdHdvIG1pc3NpbmcgZXhwb3J0cy4KCgkqIGNvbnRyb2xzL3Njcm9sbC5jOgoJUGhpbGxpcCBFem9sdCA8ZXpvbHRAcGVyZi56a28uZGVjLmNvbT4KCUZpeGVkIHRoZSBzY3JvbGxiYXIgcG9zaXRpb24gb3ZlcmZsb3dzIHVzaW5nIE11bERpdi4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCU9uZHJlaiBNYWNlayA8eG1hY2VrQGluZm9ybWF0aWNzLm11bmkuY3o+CglGaXggb2YgTGlzdFZpZXcgaW52YWxpZGF0aW9uIGluIExJU1RWSUVXX1NldEJrQ29sb3IuCgoJKiBkbGxzL3NoZWxsMzIvY2xhc3Nlcy5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAbmVyaW0ubmV0PgoJSENSX0dldERlZmF1bHRJY29uIHNob3VsZCBzZXQgaWNvbiBudW1iZXIgdG8gMCBpZiBpdCdzIG1pc3NpbmcgZnJvbQoJdGhlIHJlZyBlbnRyeS4KCgkqIHRvb2xzL3dpbmVpbnN0YWxsOiBBZGFtIEQuIE1vc3MgPGFkYW1AZ2ltcC5vcmc+CglNYWtlIHdpbmVpbnN0YWxsIHdvcmsgaW4gdGhlIG5ldy1hdXRvY29uZi12ZXJzaW9uIHdvcmxkLgoKCSogZGxscy9xdWFydHovYXVkcmVuLmMsIGRsbHMvcXVhcnR6L2F1ZHJlbi5oLCBkbGxzL3F1YXJ0ei9iYXNlZmlsdC5oLAoJICBkbGxzL3F1YXJ0ei9iYXNlcGluLmMsIGRsbHMvcXVhcnR6L210eXBlLmMsIGRsbHMvcXVhcnR6L3BhcnNlci5jLAoJICBkbGxzL3F1YXJ0ei92aWRyZW4uYywgZGxscy9xdWFydHovdmlkcmVuLmgsIGRsbHMvcXVhcnR6L3hmb3JtLmMsCgkgIGRsbHMvcXVhcnR6L3hmb3JtLmgsIGRsbHMvcXVhcnR6L2FzeW5jc3JjLmM6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJRml4ZWQgc29tZSBkZWFkbG9ja3MuCgoJKiBkbGxzL2F2aWZpbDMyL2lhc3RyZWFtLmMsIGRsbHMvYXZpZmlsMzIvaWdmcmFtZS5jOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUZpeGVzIGZvciBjb21wYXRpYmlsaXR5LgoKCSogZG9jdW1lbnRhdGlvbi9zYW1wbGVzL3N5c3RlbS5pbmk6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJQWRkZWQgbXNybGUzMi5kbGwgKGRlY29tcHJlc3NvciBvZiBNUkxFKS4KCgkqIGRsbHMvbXNybGUzMi9tc3JsZTMyLmM6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJRml4ZWQgYnVncyBpbiBwcm9jZXNzaW5nIERFTFRBLgoKCSogZGxscy91c2VyL3RleHQuYzoKCUJpbGwgTWVkbGFuZCA8bWVkYmkwMUBhY2NwYWMuY29tPgoJQ2hhbmdlIHRoZSB3YXkgdGhhdCBEcmF3VGV4dCBwYXJzZXMgdGhlIG5leHQgbGluZSB0byBkaXNwbGF5LCByZWFkeSB0bwoJc3VwcG9ydCBtdWx0aWxpbmUgZWxsaXBzaWZpY2F0aW9uIGV0Yy4gIFJhdGhlciB0aGFuIG1lYXN1cmluZyB0aGUgdGV4dAoJZWFjaCB0aW1lIHdlIGFkZCBhIGNoYXJhY3RlciBhbmQgYnJlYWtpbmcgb25jZSBpdCBpcyB0b28gbG9uZyBhbmQKCVdPUkRCUkVBSyBpcyBlbmFibGVkLCB3ZSBjb3B5IGEgd2hvbGUgdGV4dCBzZWdtZW50IGFuZCB0aGVuIG1lYXN1cmUKCWl0OyBHZXRUZXh0RXh0ZW50UG9pbnRFeCBpcyBkZXNpZ25lZCB0byB0ZWxsIHVzIGhvdyBtdWNoIGZpdHRlZC4gIFRoaXMKCW1heSByZXN1bHQgaW4gYSBsaXR0bGUgcmVzY2FubmluZyBpZiB3b3JkYnJlYWsgaXMgZW5hYmxlZCBidXQgd2lsbCBiZQoJd2VsbCB3b3J0aCB3aGlsZSB3aGVuIG11bHRpbGluZSBwYXRoIGVsbGlwc2lmaWNhdGlvbiBpcyBicm91Z2h0IGRvd24KCWludG8gdGhlIE5leHRMaW5lIGZ1bmN0aW9uLiAgTm90ZSBhbHNvIHRoYXQgdGhlIHdvcmRicmVhayBjYWxjdWxhdGlvbgoJaXMgYSBsaXR0bGUgbW9yZSBjb21wbGV0ZSAoZS5nLiAgaW5jbHVkaW5nIGJyZWFrLXdpdGhpbi13b3JkIGZvcgoJRFRfRURJVENPTlRST0wpLgoKCSogZGxscy9vbGVhdXQzMi92YXJpYW50LmM6CglQYXRyaWNrIEhhbGxlciA8cGF0cmljay5oYWxsZXJAaW5ub3Rlay5kZT4KCUZpeCBjcmFzaCBpbiBWYXJpYW50VGltZVRvRG9zRGF0ZVRpbWUuCgoJKiBkbGxzL29sZTMyL2NsaXBib2FyZC5jOgoJU2FuZGVyIHZhbiBMZWV1d2VuIDxzYW5kZXJ2bEB4czRhbGwubmw+CglNdXN0IG1ha2UgYSBjb3B5IG9mIGdsb2JhbCBoYW5kbGUgcmV0dXJuZWQgYnkgR2V0Q2xpcGJvYXJkRGF0YTsgaXQgaXMKCW5vdCB2YWxpZCBhZnRlciB3ZSBjYWxsIENsb3NlQ2xpcGJvYXJkLiBBcHBsaWNhdGlvbiBpcyByZXNwb25zaWJsZSBmb3IKCWZyZWVpbmcgdGhlIG1lbW9yeSAoZml4ZXMgY29weS9wYXN0ZSBpbiBtYWlsIGJvZHkgaW4gRm9ydGUgQWdlbnQpLgoKMjAwMi0wMi0xNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHRvb2xzL21ha2VkZXAuYzoKCU1vZGlmaWVkIG1ha2VkZXAgdG8gaGFuZGxlICNpbmNsdWRlIDw+IGNvcnJlY3RseSAoYmFzZWQgb24gYSBwYXRjaCBieQoJUGF0cmlrIFN0cmlkdmFsbCkuCgoJKiBkbGxzL3dpbmluZXQvTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vTWFrZWZpbGUuaW4sCgkgIGRsbHMvd2luc3Bvb2wvTWFrZWZpbGUuaW4sIGRsbHMvdXNlci9NYWtlZmlsZS5pbiwKCSAgZGxscy9zZXR1cGFwaS9NYWtlZmlsZS5pbiwgZGxscy9zaGRvY3Z3L01ha2VmaWxlLmluLAoJICBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW4sIGRsbHMvc2hsd2FwaS9NYWtlZmlsZS5pbiwKCSAgZGxscy9uZXRhcGkzMi9NYWtlZmlsZS5pbiwgZGxscy9udGRsbC9NYWtlZmlsZS5pbiwKCSAgZGxscy9vbGUzMi9NYWtlZmlsZS5pbiwgZGxscy9ycGNydDQvTWFrZWZpbGUuaW4sCgkgIGRsbHMvY29tY3RsMzIvTWFrZWZpbGUuaW4sIGRsbHMvY3J5cHQzMi9NYWtlZmlsZS5pbiwKCSAgZGxscy9nZGkvTWFrZWZpbGUuaW4sIGRsbHMvaW1hZ2VobHAvTWFrZWZpbGUuaW4sCgkgIGRsbHMvYWR2YXBpMzIvTWFrZWZpbGUuaW46CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUFkZGVkIHNvbWUgZGVmaW5lcyBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIFdpbmRvd3MgaGVhZGVycy4KCgkqIHdpbmRvd3Mvd2luLmM6IEp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCUNvbnZlcnQgc29tZSBpbnZhbGlkIG9mZnNldHMgaW4gR2V0V2luZG93TG9uZzE2IGludG8gdmFsaWQgb2Zmc2V0cy4KCgkqIGRsbHMvdXNlci90ZXh0LmM6CglCaWxsIE1lZGxhbmQgPG1lZGJpMDFAYWNjcGFjLmNvbT4KCU1lYXN1cmUgdGhlIHRleHQgbW9yZSByZWFzb25hYmx5LiBUaGlzIGhhbmRsZXMgaW50ZXJjaGFyYWN0ZXIgc3BhY2luZwoJYW5kIHNob3VsZCBoYW5kbGUgYW55IGtlcm5pbmcgZXRjLiB0aGF0IG1pZ2h0IGhhcHBlbi4gQWxzbyBlbnN1cmUgbm8KCXdvcmRicmVha2luZyBvbiBzaW5nbGVsaW5lIHRleHQuCgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOgoJRGF2ZSBIYXdrZXMgPGRhdmVoLXdpbmVAY2FkbGluay5jb20+CglBZGRlZCBhIGtleWJvYXJkIG1hdGNoZWQgdG8gVk5DLgoKCSogaW5jbHVkZS9udGRkay5oOiBSb24gR2FnZSA8cm9uQHJvbmdhZ2Uub3JnPgoJQWRkZWQgc2V2ZXJhbCBzdHJ1Y3R1cmVzLgoKCSogZGxscy9zaGVsbDMyL3NobGZpbGVvcC5jOgoJUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJSW4gU0hGaWxlT3BlcmF0aW9uKCkgd2hlbiByZXF1ZXN0ZWQgdG8gY29weSBmaWxlcywgZmlndXJlIG91dCB3aGVuIHRoZQoJZGVzdGluYXRpb24gaXMgdG8gYmUgdHJlYXRlZCBhcyBhIGRpcmVjdG9yeSBhbmQgaGFuZGxlIHRob3NlIGNhc2VzLgoKCSogY29uZmlndXJlLmFjLCBNYWtlZmlsZS5pbiwgY29uZmlndXJlOgoJRml4ZWQgaW5zdGFsbGF0aW9uIGlzc3VlcyBjYXVzZWQgYnkgbmV3IGNvbmZpZ3VyZSBzY3JpcHQuCgoyMDAyLTAyLTE0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogcHJvZ3JhbXMvY2xvY2svbWFpbi5jLCBwcm9ncmFtcy9ub3RlcGFkL2RpYWxvZy5jLAoJICBwcm9ncmFtcy93aW52ZXIvd2ludmVyLmMsIHdpbmRvd3Mvbm9uY2xpZW50LmMsIG1pc2Mvb3B0aW9ucy5jOgoJdmVyc2lvbi5oIGlzIG5vdyBpbiBpbmNsdWRlL3dpbmUgZGlyZWN0b3J5LgoKCSogdG9vbHMvd3JjL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5oZWxwL01ha2VmaWxlLmluLAoJICB0b29scy9NYWtlZmlsZS5pbiwgdG9vbHMvbWFrZWRlcC5jLCB0b29scy93aW5lbGF1bmNoZXIuaW4sCgkgIGRlYnVnZ2VyL01ha2VmaWxlLmluLCBkb2N1bWVudGF0aW9uLy5jdnNpZ25vcmUsCgkgIGRvY3VtZW50YXRpb24vTWFrZWZpbGUuaW4sIGRvY3VtZW50YXRpb24vd2luZS5jb25mLm1hbiwKCSAgZG9jdW1lbnRhdGlvbi93aW5lLmNvbmYubWFuLmluLCBkb2N1bWVudGF0aW9uL3dpbmUubWFuLmluLAoJICBpbmNsdWRlL2NvbmZpZy5oLmluLCBpbmNsdWRlL3ZlcnNpb24uaCwgaW5jbHVkZS93aW5lLy5jdnNpZ25vcmUsCgkgIGNvbmZpZ3VyZS5hYywgY29uZmlndXJlLmluLCBNYWtlLnJ1bGVzLmluLCBNYWtlZmlsZS5pbiwgVkVSU0lPTiwKCSAgY29uZmlndXJlOgoJVXBncmFkZWQgY29uZmlndXJlIHNjcmlwdCB0byB1c2UgYXV0b2NvbmYgMi41MCBmZWF0dXJlcywgYW5kIHJlbmFtZWQKCXRvIGNvbmZpZ3VyZS5hYy4KCUNoYW5nZWQgYSBmZXcgdGhpbmdzIHRvIGJldHRlciBmb2xsb3cgdGhlIGF1dG9jb25mIGd1aWRlbGluZXMuCgoJKiB0b29scy9jb25maWcuZ3Vlc3MsIHRvb2xzL2NvbmZpZy5zdWI6CglVcGRhdGVkIHRvIG5ld2VyIHZlcnNpb24uCgoJKiBkbGxzL2NvbW1kbGcvY2RsZ194eC5yYywgZGxscy9zaGVsbDMyL3NocmVzLnJjLCBkbGxzL2NvbWN0bDMyL3JzcmMucmM6CglNYXJ0aW4gRGFsZWNraSA8ZGFsZWNraUBldmlzaW9uLXZlbnR1cmVzLmNvbT4KCVNvbWUgYXJ0d29yayBvbiB0aGUgZGVmYXVsdCBpY29ucy4KCgkqIGRsbHMvdXNlci90ZXh0LmM6CglCaWxsIE1lZGxhbmQgPG1lZGJpMDFAYWNjcGFjLmNvbT4KCURyYXdUZXh0IHNob3VsZCBub3Qgc3BsaXQgd29yZHMganVzdCBiZWNhdXNlIG9mIGNsaXBwaW5nLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsLmM6CglSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglJbiBTaGVsbEV4ZWN1dGUxNiwgbWFrZSBzdXJlIHRoZXJlIGlzIGEgc3BhY2UgYmV0d2VlbiBjb21tYW5kIGFuZAoJcGFyYW1ldGVycy4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYzoKCUxhd3NvbiBXaGl0bmV5IDxsYXdzb25fd2hpdG5leUBqdW5vLmNvbT4KCVByb3RlY3QgYWdhaW5zdCBOVUxMIHdzYWRkcmxlbiBpbiB3c19zb2NrYWRkcl9hbGxvYy4KCjIwMDItMDItMTIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB0b29scy93aW5lYnVpbGQvcmVsYXkuYzoKCUdhdnJpZWwgU3RhdGUgPGdhdkB0cmFuc2dhbWluZy5jb20+CglTb21lIG9sZGVyIHZlcnNpb25zIG9mIEdEQiBuZWVkIHRvIGhhdmUgdGhlIGZpbGVuYW1lIGRhdGEgYXZhaWxhYmxlCglmb3IgZWFjaCBzZWN0aW9uLCBzbyB3ZSBuZWVkIHRvIG91dHB1dCBpdCBhZ2FpbiBmb3IgdGhlIGRhdGEgc2VjdGlvbi4KCgkqIHdpbjMyL2VkaXRsaW5lLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJTWFrZSBIb21lLCBFbmQgYW5kIEVudGVyIG9uIHRoZSBrZXlwYWQgd29yayBpbiB0aGUgZGVidWdnZXIuCgoJKiB3aW4zMi9maWxlLmM6IEp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCVNldEZpbGVBdHRyaWJ1dGVzIHJldHVybnMgbm93IGFuIGVycm9yIGlmIHRhcmdldCBmaWxlIGlzIG9uIENEUk9NLgoKCSogZmlsZXMvZHJpdmUuYzogSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJQWRkZWQgbWlzc2luZyBicmVhayBzdGF0ZW1lbnQuCgoJKiBkbGxzL3NobHdhcGkvcmVnLmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJUGFydGlhbGx5IGltcGxlbWVudCBTSFJlZ1dyaXRlVVNWYWx1ZXtBfFd9LgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJV2hlbiB0aGUgY29tbWFuZElEIHdhcyBiZWluZyB0cmVhdGVkIGFzIHRoZSBpbmRleCwgbm8gY2hlY2sgZm9yIGluZGV4CglncmVhdGVyIHRoYW4gbnVtYmVyIG9mIGJ1dHRvbnMgd2FzIGRvbmUuIE5vdyBmaXhlZC4KCgkqIGRsbHMvY29tY3RsMzIvcmViYXIuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglGaXggcmVncmVzc2lvbiBpbiBzb21lIHByb2dyYW1zIGR1ZSB0byBDTFJfREVGQVVMVCBmaXguIE5vdGljZWQgaW4KCWNvbnRyb2wtc3B5IHJlYmFyLmV4ZS4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWxsb3cgVG9Bc2NpaS9Ub1VuaWNvZGUgdG8gd29yayB3aXRoIHNjYW5Db2RlID0gMC4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglDb3JyZWN0IHRlc3RzIGludm9sdmVkIHdpdGggcHJvY2Vzc2luZyB0aGUgTFZJRl9ESV9TRVRJVEVNIGZsYWcuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWJvZXguYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglJbml0aWFsaXplIHBzelRleHQgdG8gMCBmb3IgaW50ZXJuYWwgLT5jZUl0ZW0gdG8gZWxpbWluYXRlIG1vdmVzIHRvCglnYXJiYWdlIGxvY2F0aW9ucy4KCgkqIHdpbmVkZWZhdWx0LnJlZzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgZGVmYXVsdCBmdW5jdGlvbiBtYXJzaGFsbGVyIHJlZ2lzdHJ5IGVudHJ5LgoKCSogZGxscy91c2VyL3RleHQuYzoKCUJpbGwgTWVkbGFuZCA8bWVkYmkwMUBhY2NwYWMuY29tPgoJUHV0IGluIHBsYWNlIGEgcHJvcGVyIHRhYiBtb2RlbCB3aXRoaW4gRHJhd1RleHQgKGFsc28gaW5jbHVkZXMKCXNpbXBsaWZ5aW5nIFRFWFRfTmV4dExpbmVXIHRvIHJlbW92ZSBkdXBsaWNhdGUgY29kZSkuCgoyMDAyLTAyLTA4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9tc3ZjcnQvY29uc29sZS5jLCBkbGxzL21zdmNydC9maWxlLmM6CglDLiBTY290dCBBbmFuaWFuIDxjYW5hbmlhbkBsZXNzZXItbWFnb28ubGNzLm1pdC5lZHU+CglGaWxsZWQgb3V0IHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBmc2NhbmYgYW5kIF9jc2NhbmYuCgoJKiBkbGxzL21zYWNtL2ludGVybmFsLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGJ1ZyBpbiBjYWNoZSBpbml0LgoKCSogZGxscy9jb21jdGwzMi9jb21ib2V4LmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJVXNlIHRoZSBzdXBwbGllZCBidWZmZXIgd2hlbiBjb3B5aW5nIGl0ZW0gdGV4dC4KCgkqIGluY2x1ZGUvd2luZ2RpLmg6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglGaXggUEFOX0ZBTUlMWVNUWUxFX0lOREVYIG5hbWUuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCVdlIG5lZWQgZnR0cmlnb24uaCwgc28gZG9uJ3QgZGVmaW5lIEhBVkVfRlJFRVRZUEUgaWYgd2UgZG9uJ3QgaGF2ZSBpdC4KCgkqIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmM6CglMYXdzb24gV2hpdG5leSA8bGF3c29uX3doaXRuZXlAanVuby5jb20+CglGaXggb2ZmLWJ5LW9uZSBlcnJvciBpbiBwbGFjaW5nIHRyYWlsaW5nIFwwLgoKCSogZGxscy9jb21jdGwzMi90b29sdGlwcy5jOgoJT3JpIFBlc3NhY2ggPG9yaV9wZXNzYWNoX2JsYWhAeWFob28uY29tPgoJU2V0IFdTX0VYX1RPT0xXSU5ET1cgaW4gYSB0b29sdGlwJ3MgZHdFeFN0eWxlLgoKMjAwMi0wMi0wNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvYWR2YXBpMzIvcmVnaXN0cnkuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglEb24ndCByZXR1cm4gb3ZlcmZsb3cgaWYgbm8gY2xhc3MgYnVmZmVyIHdhcyBzcGVjaWZpZWQuCgoJKiBmaWxlcy9wcm9maWxlLmM6CglHZXJoYXJkIEdydWJlciA8c3Bhcmhhd2tAZ214LmF0PgoJV3JpdGVQcml2YXRlUHJvZmlsZVNlY3Rpb24gc2hvdWxkIGFsbG93IHRvIGNyZWF0ZSBkdXBsaWNhdGUga2V5cwoJYmVjYXVzZSBpdCB0YWtlcyB0aGUgYnVmZmVyIGFzIGl0IGlzIHdpdGhvdXQgYW55IG1vZGlmaWNhdGlvbnMuCgoJKiBkbGxzL3gxMWRydi9zY3JvbGwuYzoKCVJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCUluIFgxMURSVl9TY3JvbGxEQyBvbmx5IG1vdmUgcGl4ZWxzIHRoYXQgYXJlIHdpdGhpbiB0aGUgY2xpcAoJcmVjdGFuZ2xlLCBiZWZvcmUgYW5kIGFmdGVyIHRoZXkgYXJlIHNjcm9sbGVkLgoKCSogb2JqZWN0cy9wYWxldHRlLmM6CglEYXZlIEhhd2tlcyA8ZGF2ZWgtd2luZUBjYWRsaW5rLmNvbT4KCUZpeCBmb3IgR2V0TmVhcmVzdENvbG9yIHNvIGl0IHJldHVybnMgdGhlIHRydWUgY29sb3IgcmF0aGVyIHRoYW4gdGhlCglzeXN0ZW0gcGFsZXR0ZSBpZiB0aGUgZGV2aWNlIGRvZXMgbm90IHN1cHBvcnQgYSBwYWxldHRlLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJTWlzYyBmaXhlczoKCS0gY2FjaGUgdGV4dCBtZXRyaWNzIGZvciB0aGUgZm9udCB3ZSdyZSB1c2luZwoJLSBpbXByb3ZlZCBpdGVtIGhpdCBkZXRlY3Rpb24KCS0gbW9yZSBkZWJ1Z2dpbmcgb3V0cHV0CgktIGltcGxlbWVudCBMVk1fU0VUSUNPTlNQQUNJTkcKCS0gbG90cyBvZiBidWdzIHNxdWFzaGVkCgoJKiBkbGxzL29sZWF1dDMyL01ha2VmaWxlLmluLCBkbGxzL29sZWF1dDMyL29sZWF1dC5jLAoJICBkbGxzL29sZWF1dDMyL29sZWF1dDMyLnNwZWMsIGRsbHMvb2xlYXV0MzIvdG1hcnNoYWwuYywKCSAgZGxscy9vbGVhdXQzMi90bWFyc2hhbC5oLCBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYywKCSAgZGxscy9vbGVhdXQzMi90eXBlbGliLmgsIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jLAoJICBkbGxzL29sZTMyL2NvbXBvYmpfcHJpdmF0ZS5oLCBkbGxzL29sZTMyL21hcnNoYWwuYywKCSAgZGxscy9vbGUzMi9vbGUzMi5zcGVjLCBkbGxzL29sZTMyL29sZXByb3h5LmMsIGRsbHMvb2xlMzIvcnBjLmMsCgkgIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL01ha2VmaWxlLmluOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglJbXBsZW1lbnRlZCBMb2NhbCBTZXJ2ZXIgQ09NLgoJSW1wbGVtZW50ZWQgdGhlIFR5cGVsaWIgYmFzZWQgTWFyc2hhbGVyLgoKCSogZGxscy9zaGx3YXBpL29yZGluYWwuYywgaW5jbHVkZS9iYXNldHNkLmgsIGluY2x1ZGUvbnRkZGsuaCwKCSAgaW5jbHVkZS9vbGVhdXRvLmgsIGluY2x1ZGUvcG9wcGFjay5oLCBpbmNsdWRlL3BzaHBhY2sxLmgsCgkgIGluY2x1ZGUvcHNocGFjazIuaCwgaW5jbHVkZS9wc2hwYWNrNC5oLCBpbmNsdWRlL3BzaHBhY2s4LmgsCgkgIGluY2x1ZGUvcnBjZGNlLmgsIGluY2x1ZGUvcnBjbmRyLmg6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCU1TVkMgY29tcGlsZSBmaXhlcy4KCgkqIGRsbHMvY29tY3RsMzIvcHJvZ3Jlc3MuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglSZW1vdmUgUFJPR1JFU1NfUmVmcmVzaCwgYWx3YXlzIGRvIEludmFsaWRhdGVSZWN0KCkgdG8gcmVwYWludC4KCUFkZCBXTV9FUkFTRUJLR05EIGhhbmRsZXIgYXMgaW4gV2luZG93cy4KCUJlIHNsaWdodGx5IHNtYXJ0ZXIgd2hldGhlciBpbnZhbGlkYXRlIGJhY2tncm91bmQgb3Igbm90LgoJQWx3YXlzIHRyZWF0IHdQYXJhbSBhcyBJTlQgdG8gbm90IGxvc2Ugc2lnbmVkIHZhbHVlcy4KCgkqIGRsbHMvY29tY3RsMzIvdXBkb3duLmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkaW1pQGNzLnRvcm9udG8uZWR1PgoJVmFyaW91cyBjbGVhbnVwczoKCS0gZ2V0IHJpZCBvZiB0aGUgc3RhdGljIGRhdGEgbWVtYmVyCgktIHBhc3MgdGhlIGluZm9QdHIgYXJvdW5kIGluc3RlYWQgb2YgdGhlIGh3bmQKCS0gZml4IGluZGVudGF0aW4vc3R5bGUgYSBiaXQgdG8gbWFrZSBpdCBjb25zaXN0ZW50IHdpdGggdGhlIHJlc3Qgb2YKCSAgdGhlIGZpbGUuCgoJKiBkbGxzL3VzZXIvdGV4dC5jOgoJQmlsbCBNZWRsYW5kIDxtZWRiaTAxQGFjY3BhYy5jb20+CglTcGxpdCB0aGUgcGF0aCBhbmQgd29yZC9lbmQgZWxsaXBzaWZpY2F0aW9uIG91dCBvZiB0aGUgbWFpbiBmdW5jdGlvbgoJYW5kIGRvIHRoZW0gdGhvcm91Z2hseS4gVGhlIGV4aXN0aW5nIG1ldGhvZCB3b3VsZCBiZSBpbmNvcnJlY3Qgd2hlcmUKCXRhYnMgd2VyZSBpbnZvbHZlZCBhbmQgaW4gc29tZSBrZXJuaW5nIHNpdHVhdGlvbnMuCgoyMDAyLTAyLTA0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS9jb25maWcuaC5pbiwgdG9vbHMvd2luZWJ1aWxkL2J1aWxkLmgsCgkgIHRvb2xzL3dpbmVidWlsZC9tYWluLmMsIHRvb2xzL3dpbmVidWlsZC9wYXJzZXIuYywKCSAgdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jLCBNYWtlLnJ1bGVzLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglTdXBwb3J0IGZvciBnZW5lcmF0aW9uIG9mIC5kZWYgZmlsZXMgZnJvbSAuc3BlYyBmaWxlcy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCURpbWl0cmllIE8uIFBhdW4gPGRpbWlAY3MudG9yb250by5lZHU+CglDb21wbGV0ZSBMaXN0dmlldyBVbmljb2RpZmljYXRpb24uCglTaW1wbGlmeSB0aGUgc2V0dGluZyBvZiAoc3ViKWl0ZW0gdGV4dCBieSB1c2luZyBjb21tb24gY29kZS4KCgkqIHByb2dyYW1zL3dpbmVjb25zb2xlL2RpYWxvZy5jLCBwcm9ncmFtcy93aW5lY29uc29sZS9yZWdpc3RyeS5jLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS91c2VyLmMsIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25fcHJpdmF0ZS5oLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uX3VzZXIuaCwKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbnNvbGVfRW4ucmMsCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25zb2xlX0ZyLnJjLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZV9yZXMuaDoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJLSB3aW5lY29uc29sZSBub3cgZXhpdHMgaWYgdGhlIHN0YXJ0ZWQgcHJvZ3JhbSBpbnNpZGUgaXQgdGVybWluYXRlcwoJICBiZWZvcmUgdGhlIGNvbnNvbGUgYWN0dWFsbHkgc3RhcnRzIHVwLgoJLSBSZW1vdmVkIHRoZSBsYXN0IEFuc2kgaW1wb3J0ZWQgQVBJcyBzaW5jZSBub3cgUHJvcHNoZWV0IGhhcyBhIGRlY2VudAoJICBVbmljb2RlIGludGVyZmFjZS4KCS0gRml4ZWQgYSBjb3VwbGUgb2YgbWVudSByZWxhdGVkIGJ1Z3MgKHN0YXRlcyB3ZXJlIHdyb25nKS4KCS0gRmluaXNoZWQgaW5wdXQgc2VsZWN0aW9uIGNvZGUgKG1hcmsgYW5kIGtleSBmb3Igc2VsZWN0aW9uIG1vdmluZyBhcmUKCSAgb3BlcmF0aW9uYWwsIGdlbmVyYXRpbmcgbW91c2UgZXZlbnRzIHRvIHByb2dyYW1zIGF0dGFjaGVkIHRvIHRoZQoJICBjb25zb2xlKS4KCgkqIGRlYnVnZ2VyL2RiZy55LCBkZWJ1Z2dlci9kZWJ1Zy5sLCBkZWJ1Z2dlci9kZWJ1Z2dlci5oLAoJICBkZWJ1Z2dlci9oYXNoLmMsIGRlYnVnZ2VyL3NvdXJjZS5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBzb21lIGJhZCBiZWhhdmlvciB3aGVuIG1hbnkgc3ltYm9scyB3aXRoIHNhbWUgbmFtZXMgd2hlcmUgZm91bmQuCglSZW1vdmVkIGV4dGVybmFsIHJlYWRsaW5lIHN1cHBvcnQuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgaW1wbGVtZW50YXRpb24gb2YgU2V0SXRlbVcuCgoJKiBkbGxzL2NvbWN0bDMyL2lwYWRkcmVzcy5jOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVN0b3JpbmcgYW4gSVAgYWRkcmVzcyBpbiBhIHNpZ25lZCBpbnQgcmVzdWx0cyBpbiBidWdzIGlmIGl0IHN0YXJ0cwoJd2l0aCA+PTEyOC4KCgkqIG1lbW9yeS9jb2RlcGFnZS5jLCBvbGUvb2xlMm5scy5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVJlaW1wbGVtZW50IEdldFN0cmluZ1R5cGVBIGFuZCBHZXRTdHJpbmdUeXBlRXhBLgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliLmM6CglNYWx0ZSBTdGFyb3N0aWsgPG1hbHRlQGtkZS5vcmc+CglEbyBub3QgZGVzdHJveSBJVHlwZUxpYiBoZWxkIGJ5IElUeXBlSW5mbyBiZWZvcmUgdGhlIGxhdHRlciBpcyBmcmVlZC4KCgkqIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglWVF9FTVBUWSBjYW4gYmUgY29lcmNlZCB0byBWVF9JNCwgdmFsdWUgMC4KCgkqIGRsbHMvY29tY3RsMzIvcHJvZ3Jlc3MuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglNb3ZlZCBzdHlsZSBjb3JyZWN0aW5nIGNvZGUgdG8gdGhlIFdNX0NSRUFURSBoYW5kbGVyIGFuZCBhZGRlZAoJY2xlYXJpbmcgb2YgV1NfRVhfQ0xJRU5URURHRSBhbmQgV1NfRVhfV0lORE9XRURHRSBhcyBpbiBXaW5kb3dzLgoJQWRkZWQgU2V0V2luZG93UG9zKFNXUF9GUkFNRUNIQU5HRUQpIHRvIG1ha2UgY2hhbmdlcyB0YWtlIGVmZmVjdC4KCgkqIHdpbmRvd3Mvc3lzcGFyYW1zLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJR3V5IEFsYmVydGVsbGkgPGd1eUBjb2Rld2VhdmVycy5jb20+CglVc2UgR2V0U3lzdGVtTWV0cmljcygpIHRvIGZvciBjYXB0aW9uIG1ldHJpY3MgaW4gTk9OQ0xJRU5UTUVUUklDUwoJc3RydWN0LiBJbml0aWFsaXplIGlTY3JvbGxXaWR0aCBhbmQgaVNjcm9sbEhlaWdodCBlbnRyaWVzIGZvcgoJU1BJX0dFVE5PTkNMSUVOVE1FVFJJQ1MuCgoJKiBkbGxzL2NvbWN0bDMyL3JlYmFyLmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJRml4IHByb2JsZW0gZXhwb3NlZCBieSB0aGUgaW1wcm92ZW1lbnRzIGluIHZlcnNpb24gOGIuIERlbW9uc3RyYXRlZCBieQoJT0UgNC4KCjIwMDItMDItMDIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL2RlZnduZC5jLCBvYmplY3RzL3BhbGV0dGUuYywgcHJvZ3JhbXMvYXZpdG9vbHMvYXZpaW5mby5jLAoJICBwcm9ncmFtcy9hdml0b29scy9hdmlwbGF5LmMsIHJlbGF5MzIvcmVsYXkzODYuYywgbGlidGVzdC9oZWxsbzUuYywKCSAgbG9hZGVyL25lL3NlZ21lbnQuYywgbG9hZGVyL3BlX2ltYWdlLmMsIGxvYWRlci9yZXNvdXJjZS5jLAoJICBkbGxzL3dpbnNwb29sL2luZm8uYywgaW5jbHVkZS9tc3ZjcnQvcHJvY2Vzcy5oLAoJICBkbGxzL3dpbmVwcy9kcml2ZXIuYywgZGxscy93aW5tbS9sb2x2bGRydi5jLCBkbGxzL3dpbm1tL21tc3lzdGVtLmMsCgkgIGRsbHMvd2lubW0vd2luZW1tLmgsIGRsbHMvdXNlci9kZGUvZGRlbWwxNi5jLCBkbGxzL3dpbmVkb3MvdmdhLmMsCgkgIGRsbHMvc2V0dXBhcGkvc2V0dXB4MTYuaCwgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsIGRsbHMvc2hlbGwzMi9zaGVsbG9sZS5jLAoJICBkbGxzL3NoZWxsMzIvc2hsdmlldy5jLCBkbGxzL3NoZWxsMzIvdW5kb2NzaGVsbC5oLAoJICBkbGxzL2x6ZXhwYW5kL2x6ZXhwYW5kX21haW4uYywgZGxscy9tc2FjbS93aW5lYWNtLmgsCgkgIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL2RwbGF5eC9kcGxheXNwLmgsIGRsbHMvZ2RpL3ByaW50ZHJ2LmMsCgkgIGRsbHMvaW1tMzIvaW1tX3ByaXZhdGUuaCwgZGxscy9rZXJuZWwvc3RyaW5nLmMsCgkgIGRsbHMva2VybmVsL3V0dGh1bmsuYywgZGxscy9jb21tZGxnL2NkbGcuaCwgZGxscy9jb21tZGxnL2NkbGczMi5jLAoJICBkbGxzL2RkcmF3L2RkcmF3X3ByaXZhdGUuaCwgZGxscy9jb21jdGwzMi9hbmltYXRlLmMsCgkgIGRsbHMvY29tY3RsMzIvc21vb3Roc2Nyb2xsLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCU1vdmUgX19zdGRjYWxsL19fY2RlY2wgdG8gdGhlIHJpZ2h0IHBsYWNlLgoKCSogcHJvZ3JhbXMvd2luZXRlc3QvcnVudGVzdCwgTWFrZS5ydWxlcy5pbjoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBNYWRlIHJ1bnRlc3QgInVzZSBzdHJpY3QiLgoJLSBBZGRlZCBuZXcgb3B0aW9uIC1NIHRvIHNwZWNpZnkgd2hpY2ggbW9kdWxlcyBzaG91bGQgYmUgdGVzdGVkIGFzCgkgIGJ1aWx0aW4uCgoJKiBsaWJ0ZXN0L3ZhcnRlc3QuYywgcHJvZ3JhbXMvcmVndGVzdC9yZWd0ZXN0LmMsIGRsbHMvd2luZXBzL21rYWdsLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCW1hbGxvYy5oIGlzIG9ic29sZXRlIGFuZCBzdGRsaWIuaCBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkLgoKCSogcHJvZ3JhbXMvY29udHJvbC9jb250cm9sLmM6CglXZSBjYW4gdXNlIG5vcm1hbCBpbXBvcnRzIGZvciBzaGVsbDMyIG5vdy4KCgkqIGRsbHMvdXNlci90ZXh0LmM6CglCaWxsIE1lZGxhbmQgPG1lZGJpMDFAYWNjcGFjLmNvbT4KCUVuc3VyZSB0aGF0IHRoZSB3aG9sZSBtb2RpZmllZCB0ZXh0IGlzIHJldHVybmVkIGZyb20gRHJhd1RleHRFeEEuCgoJKiBsb2FkZXIvbW9kdWxlLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci90aHJlYWQuYywKCSAgZGxscy9nZGkvZHJpdmVyLmM6CglEbyBub3QgdXNlIHRoZSBQRUIgbG9jayBhcyBsb2FkZXIgbG9jaywgdXNlIGEgc2VwYXJhdGUgY3JpdGljYWwKCXNlY3Rpb24gZm9yIHRoYXQgKGFuZCBmb3IgdGhlIGdyYXBoaWNzIGRyaXZlcnMpLgoKCSogdG9vbHMvd2luZWR1bXAvbXNtYW5nbGUuYywgZGxscy9jb21tZGxnL2ZvbnRkbGcuYywKCSAgZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jLCBkbGxzL3VzZXIvZGRlL2NsaWVudC5jLAoJICBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYywgZGxscy9jb21jdGwzMi9oZWFkZXIuYywKCSAgZGxscy9jb21jdGwzMi9yZWJhci5jOgoJQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJRml4ZWQgc29tZSBtb3JlIG1pc3NpbmcgcGFyZW50aGVzaXMgaXNzdWVzLgoKCSogUkVBRE1FLCBkb2N1bWVudGF0aW9uL0hPV1RPLXdpbmVsaWIsIGRvY3VtZW50YXRpb24vY29uZmlndXJpbmcuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi93aW5lLmNvbmYubWFuLmluLCBkb2N1bWVudGF0aW9uL3dpbmUubWFuLmluOgoJQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJLSBhZGQgZG9jdW1lbnRhdGlvbiBzZWN0aW9uIHRvIFJFQURNRQoJLSB1cGRhdGVkIEhPV1RPLXdpbmVsaWIKCS0gYWRkZWQgbmF0aXZlIERMTCBjb25maWcgaW5mbyB0byBjb25maWd1cmluZy5zZ21sCgktIGdyZWF0bHkgaW1wcm92ZSBkaXJlY3RvcnkgZGVzY3JpcHRpb24gb2Ygd2luZS5jb25mIG1hbiBwYWdlCgktIGFkZCAtLWRlYnVnbXNnICthbGwgd2FybmluZyB0byB3aW5lIG1hbiBwYWdlCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglGbGlwIEE8LT5XIGNvbnZlcnNpb24gaW4gZGlzcGluZm9fbm90aWZ5VC4KCjIwMDItMDItMDEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJRml4IHRvIEdldEl0ZW1XIHRvIHN0b3Agd2hpcGluZyBvdXQgdGhlIGl0ZW1zIHRleHQuCgoJKiBwcm9ncmFtcy93aW5ldGVzdC93aW5lLnhzOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+Cgljb25maWcuaCBzaG91bGQgYmUgaW5jbHVkZWQgZmlyc3QgKGlmIGF0IGFsbCkuCglGaXggcmV0dXJuIG9mIGNvbnZlcnRfdmFsdWUuCgoJKiBkbGxzL3RhcGkzMi9saW5lLmMsIGluY2x1ZGUvdGFwaS5oOgoJR3V5IEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCURvbid0IHRyeSB0byBzZXQgZmllbGRzIGluIG5vbmV4aXN0YW50IGxwTGluZUNvdW50cnlMaXN0LgoJU3VwcGx5IHZhbGlkIHRhcGkgY29kZXMuCgoyMDAyLTAxLTMxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2VydmVyL2F0b20uYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJQWxsb3cgaW50ZWdlciBhdG9tcyBpbiBzZXRfcHJvcGVydHkgYW5kIHJlbW92ZV9wcm9wZXJ0eS4gTmVlZGVkIGJ5CglGaW5kVGV4dCBjb21tb24gZGlhbG9nLgoKCSogbG9hZGVyL21vZHVsZS5jLCBsb2FkZXIvcGVfaW1hZ2UuYywgbG9hZGVyL3BlX3Jlc291cmNlLmM6CglMT0FEX0xJQlJBUllfQVNfREFUQUZJTEUgbW9kdWxlcyBtdXN0IGJlIG1hcHBlZCBsaWtlIG5vcm1hbCBmaWxlcywgbm90CglsaWtlIFBFIGltYWdlcy4gRml4ZWQgcmVzb3VyY2UgbG9hZGluZyB0byBoYW5kbGUgdGhhdC4KCgkqIHRvb2xzL3dpbmVidWlsZC9zcGVjMTYuYywgaW5jbHVkZS93aW5lL2V4Y2VwdGlvbi5oLAoJICBpbmNsdWRlL3dpbmUvbW1zeXN0ZW0xNi5oLCBpbmNsdWRlL3dpbmUvb2JqX2Jhc2UuaCwKCSAgaW5jbHVkZS93aW5lL29ial9vbGVhdXQuaCwgaW5jbHVkZS93aW5lL29ial9vbGV2aWV3LmgsCgkgIGluY2x1ZGUvd2luZS93aW5kZWYxNi5oLCBpbmNsdWRlL3dpbmUvd2luZ2RpMTYuaCwKCSAgaW5jbHVkZS93aW5lL3dpbnVzZXIxNi5oLCBpbmNsdWRlL25ldHNwaS5oLCBpbmNsdWRlL29sZS5oLAoJICBpbmNsdWRlL29sZTIuaCwgaW5jbHVkZS9vbGVkbGcuaCwgaW5jbHVkZS9wcnNodC5oLAoJICBpbmNsdWRlL3JpY2hlZGl0LmgsIGluY2x1ZGUvc2V0dXBhcGkuaCwgaW5jbHVkZS9zaGxvYmouaCwKCSAgaW5jbHVkZS9zaGx3YXBpLmgsIGluY2x1ZGUvdGFwaS5oLCBpbmNsdWRlL3Rhc2suaCwgaW5jbHVkZS92ZncuaCwKCSAgaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2luZGVmLmgsIGluY2x1ZGUvd2luZ2RpLmgsCgkgIGluY2x1ZGUvd2luaW5ldC5oLCBpbmNsdWRlL3dpbm5ldHdrLmgsIGluY2x1ZGUvd2lubmxzLmgsCgkgIGluY2x1ZGUvd2lubnQuaCwgaW5jbHVkZS93aW5zb2NrMi5oLCBpbmNsdWRlL3dpbnN2Yy5oLAoJICBpbmNsdWRlL3dpbnVzZXIuaCwgaW5jbHVkZS93czJzcGkuaCwgaW5jbHVkZS9jYWxsYmFjay5oLAoJICBpbmNsdWRlL2NvbW1jdHJsLmgsIGluY2x1ZGUvY29tbWRsZy5oLCBpbmNsdWRlL2QzZGNhcHMuaCwKCSAgaW5jbHVkZS9kM2RoYWwuaCwgaW5jbHVkZS9kM2R0eXBlcy5oLCBpbmNsdWRlL2RkZW1sLmgsCgkgIGluY2x1ZGUvZGRyYXcuaCwgaW5jbHVkZS9kZHJhd2kuaCwgaW5jbHVkZS9kaW5wdXQuaCwKCSAgaW5jbHVkZS9kcGxheS5oLCBpbmNsdWRlL2RwbG9iYnkuaCwgaW5jbHVkZS9kc291bmQuaCwKCSAgaW5jbHVkZS9pbWFnZWhscC5oLCBpbmNsdWRlL2ltbS5oLCBpbmNsdWRlL21pc2NlbXUuaCwKCSAgaW5jbHVkZS9tbXN5c3RlbS5oLCBpbmNsdWRlL21zYWNtLmg6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCU1vdmUgX19zdGRjYWxsL19fY2RlY2wgdG8gdGhlIHJpZ2h0IHBsYWNlLgoKCSogZG9jdW1lbnRhdGlvbi9zYW1wbGVzL2NvbmZpZzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUdpdmUgdXNlcnMgYSBoaW50IHRvIGNsZWFuIHRoZWlyIGNvbmZpZyBmcm9tIGNvbW1lbnRzIGFuZCBlbXB0eSBsaW5lcwoJZm9yIGEgYnVnIHJlcG9ydC4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQG5lcmltLm5ldD4KCUFkZGVkIG1pc3NpbmcgcGFyZW50aGVzaXMgaW4gU2hHZXRGaWxlSW5mb0EuCgoJKiBkbGxzL3dpbmVkb3MvaW50MjEuYzogTm9nIDxub2dAc2RmLmxvbmVzdGFyLm9yZz4KCUZpeGVkIGZ1bmN0aW9uIDB4Yi4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbC5jLCBpbmNsdWRlL3JwY2RjZS5oLCB3aW4zMi9pbml0LmMsCgkgIGRsbHMvcnBjcnQ0L3JwY3J0NC5zcGVjLCBkbGxzL3JwY3J0NC9ycGNydDRfbWFpbi5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIGlzc3VlcyBmb3VuZCBieSB3aW5hcGlfY2hlY2suCgoJKiB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5kYXQsCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9rZXJuZWwzMi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9tYXBpMzIuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvbXNpbWczMi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9udGRsbC5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9vbGVhdXQzMi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9ycGNydDQuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvd2luaW5ldC5hcGksIHRvb2xzL3dpbmFwaS9tYWtlX3BhcnNlci5wbToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJTWlub3IgQVBJIHVwZGF0ZS4KCgkqIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYywgY29udHJvbHMvbGlzdGJveC5jLCBjb250cm9scy9zY3JvbGwuYywKCSAgZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmM6CglDb2RlV2VhdmVycwoJTWlub3IgZml4ZXMuCgoJKiBjb250cm9scy9zdGF0aWMuYzoKCUd1eSBBbGJlcnRlbGxpIDxndXlAY29kZXdlYXZlcnMuY29tPgoJUGFpbnQgY29udHJvbCBpbW1lZGlhdGVseSBvbiBXTV9TRVRURVhULgoKCSogZGxscy9vbGUzMi9zdGdfc3RyZWFtLmMsIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmMsCgkgIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmg6CglDb2RlV2VhdmVycwoJU21hbGwgZml4ZXMuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCUd1eSBBbGJlcnRlbGxpIDxndXlAY29kZXdlYXZlcnMuY29tPgoJLSBiZXR0ZXIgdHJhY2Ugb3V0cHV0CgktIHN1cHBvcnQgc3RyaW5nIHNlbnQgaW4gYnkgYWRkcmVzcywgcmF0aGVyIHRoZW4gaW5kZXgKCS0gYWRkIEZJWE1FcyBmb3IgbXVsdGlwbGUgaW1hZ2UgbGlzdHMKCS0gcHJvdGVjdCBhZ2FpbnMgaW5leGlzdGVudCBidXR0b25zCgktIGNhbGwgdXAgdG8gdGhlIERlZldpbmRvd1Byb2Mgd2hlbiBlcmFzaW5nIGJrZ25kIHdoZW4gYXBwcm9wcmlhdGUKCgkqIGRsbHMvd2luZWRvcy9pbnQzMy5jOiBOb2cgPG5vZ0BzZGYubG9uZXN0YXIub3JnPgoJSW1wbGVtZW50IGZ1bmN0aW9uIDB4YiAoUmVhZCBtb3VzZSBtb3Rpb24gY291bnRlcnMpIGFuZCAweGYgKFNldAoJbWlja2V5L3BpeGVsIHJhdGlvKS4KCgkqIGRsbHMvdXNlci90ZXh0LmM6CglCaWxsIE1lZGxhbmQgPG1lZGJpMDFAYWNjcGFjLmNvbT4KCS0gSW50cm9kdWNlIGEgc2lnbmlmaWNhbnQgZGVzaWduIGRlY2lzaW9uLgoJLSBSZWNhbGN1bGF0ZSB0aGUgcHJlZml4IGxvY2F0aW9uIGlmIGVsbGlwc2lmaWNhdGlvbiBhbHRlcnMgaXQuICBUaGlzCgkgIGNhcmVmdWxseSBkb2VzIE5PVCBlbXVsYXRlIGEgTWljcm9zb2Z0IGJ1ZyBpbiB3aGljaCByZXByZWZpeGluZyBpcwoJICB3cm9uZyB3aGVuIHRoZSBmaXJzdCBjaGFyYWN0ZXIgcmVtb3ZlZCBieSBlbGxpcHNpZmljYXRpb24gaXMgdGhlIG9uZQoJICB0aGF0IHdvdWxkIGhhdmUgYmVlbiB1bmRlcmxpbmVkICh1bmRlciBXaW45OCBhdCBsZWFzdCkuCgoJKiBkbGxzL2FkdmFwaTMyL2FkdmFwaTMyLnNwZWMsIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglFcmljIEtvaGwgPGVrb2hsQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudGVkIENoZWNrVG9rZW5NZW1iZXJzaGlwIGFuZCBHZXRBY2UuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBuZXJpbS5uZXQ+CglEb24ndCByZXBhaW50IGhlYWRlciB3aGVuIHNjcm9sbGluZyBhIGxpc3R2aWV3IHZlcnRpY2FsbHkuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYzoKCUd1eSBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CgktIGZpeCBvcmRlciBvZiBwYXJhbWV0ZXJzIGlzIFNlbmROb3RpZnkKCS0gYWx3YXlzIHVzZSB0aGUgZGxnIGNudHJsIElEIG9mIHRoZSBzZW5kZXIKCgkqIHdpbmRvd3MvcmVjdC5jOgoJR3V5IEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCUFkZGVkIE5VTEwgY2hlY2tzIG9uIGFsbCByZWN0YW5nbGUgcG9pbnRlcnMuCgoyMDAyLTAxLTI5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9udGRsbC9NYWtlZmlsZS5pbiwgZGxscy9udGRsbC9sb2FkZXIuYywgZGxscy9udGRsbC9udGRsbC5zcGVjOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIExkckRpc2FibGVUaHJlYWRDYWxsb3V0c0ZvckRsbC4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbC5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLAoJICBkbGxzL3NoZWxsMzIvc2hlbGxzdHJpbmcuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglBZGRlZCBzdHVicyBmb3IgQ2hlY2tFc2NhcGVzW0FXXSBhbmQgRXh0cmFjdEFzc29jaWF0ZWRJY29uRXhXLgoKCSogZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jOgoJRXJpYyBLb2hsIDxla29obEBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBsb2NhdGlvbiBvZiBsb2NhbCBhcHBsaWNhdGlvbiBkYXRhLgoKCSogZGxscy9udGRsbC9zZWMuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglGaXhlZCBSdGxBZGRBY2Nlc3NBbGxvd2VkQWNlIHJldHVybiB2YWx1ZS4KCgkqIGRsbHMvcnBjcnQ0L3JwY3J0NC5zcGVjLCBkbGxzL3JwY3J0NC9ycGNydDRfbWFpbi5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQHN0YXJ0LmNvbS5hdT4KCUFkZGVkIHN0dWJzIGZvciBOZHJEbGxDYW5VbmxvYWROb3cgYW5kIE5kckRsbEdldENsYXNzT2JqZWN0LgoKCSogaW5jbHVkZS93aW5iYXNlLmgsIHdpbjMyL2luaXQuYywgZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBHZXRDb21wdXRlck5hbWVFeFtBV10gc2VtaS1zdHViLgoKCSogaW5jbHVkZS93aW5pbmV0LmgsIGRsbHMvd2luaW5ldC9NYWtlZmlsZS5pbiwKCSAgZGxscy93aW5pbmV0L3VybGNhY2hlLmMsIGRsbHMvd2luaW5ldC93aW5pbmV0LnNwZWM6CglFcmljIEtvaGwgPGVrb2hsQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIEZpbmRGaXJzdFVybENhY2hlRW50cnlbQVddIHN0dWJzLgoKCSogZGxscy9tYXBpMzIvbWFwaTMyLnNwZWMsIGRsbHMvbWFwaTMyL21hcGkzMl9tYWluLmMsCgkgIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvbWFwaS5oLCBpbmNsdWRlL21hcGljb2RlLmg6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgc29tZSBNQVBJIHN0dWJzLgoKCSogZGxscy9NYWtlZmlsZS5pbiwgZGxscy9tc3ZjcnQyMC8uY3ZzaWdub3JlLAoJICBkbGxzL21zdmNydDIwL01ha2VmaWxlLmluLCBkbGxzL21zdmNydDIwL2R1bW15LmMsCgkgIGRsbHMvbXN2Y3J0MjAvbXN2Y3J0MjAuc3BlYywgY29uZmlndXJlLmluLCBjb25maWd1cmU6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgYSBwYXNzLXRocm91Z2ggbXN2Y3J0MjAuCgoJKiBkbGxzL3VybG1vbi91bW9uLmMsIGRsbHMvdXJsbW9uL3VybG1vbi5zcGVjOgoJRXJpYyBLb2hsIDxla29obEBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBFeHRyYWN0IHN0dWIuCgoJKiBpbmNsdWRlL2ltbS5oLCBkbGxzL2ltbTMyL2ltbS5jLCBkbGxzL2ltbTMyL2ltbTMyLnNwZWM6CglFcmljIEtvaGwgPGVrb2hsQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIEltbURpc2FibGVJTUUgc3R1Yi4KCgkqIGRsbHMvbXN2Y3J0L2Rpci5jLCBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnRlZCBfd21ha2VwYXRoLgoKCSogZGxscy93aW5lZG9zL2Rvc2V4ZS5oLCBkbGxzL3dpbmVkb3MvZG9zdm0uYywgZGxscy93aW5lZG9zL2ludDIxLmMsCgkgIGRsbHMvd2luZWRvcy9pbnQ2Ny5jLCBmaWxlcy9kb3NfZnMuYywgZGxscy93aW5lZG9zL01ha2VmaWxlLmluOgoJSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJQWRkZWQgc3VwcG9ydCBmb3IgRE9TIEVNUyBtZW1vcnkuCgoJKiB0b29scy93aW5lbWFrZXIsIGRvY3VtZW50YXRpb24vZGIyaHRtbC13aW5laHEsCgkgIGRvY3VtZW50YXRpb24vbWFrZV93aW5laHEsIGRvY3VtZW50YXRpb24vd2luZWxpYi10b29sa2l0LnNnbWwsCgkgIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CgkndGVzdCAtZScgaXMgbm90IHN1cHBvcnRlZCBvbiBTb2xhcmlzLCByZXBsYWNlIHdpdGggJy1mJyBvciAnLWQnLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAbmVyaW0ubmV0PgoJRml4IHByb2JsZW1zIHdpdGggbGlzdHZpZXcgbm90aWZpY2F0aW9uLgoKCSogZ3JhcGhpY3MveDExZHJ2L2RpYi5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCURvIG5vdCB3cml0ZSBiZXlvbmQgZW5kIG9mIGNvbG9yIHRhYmxlIGluIFgxMURSVl9ESUJfU2V0RElCQ29sb3JUYWJsZS4KCgkqIGRsbHMvY29tY3RsMzIvcHJvZ3Jlc3MuYzoKCURpbWl0cmllIE8uIFBhdW4gPGRpbWlAY3MudG9yb250by5lZHU+CgktIGFkZCBuZXcgU2V0UmFuZ2UgZnVuY3Rpb25zIChpbnN0ZWFkIG9mIGR1cGxpY2F0aW5nIHRoZSBjb2RlKQoJLSBwYXNzIHRoZSBpbmZvUHRyIGFyb3VuZCBpbnN0ZWFkIG9mIHRoZSBod25kCgktIHVzZSBXLWZ1bmN0aW9ucyBpbnN0ZWFkIG9mIEEtZnVuY3Rpb25zCgktIG1vcmUgY2hlY2tzIGluIGNhc2Ugb2YgZmFpbHVyZXMKCS0gbWFrZSBpbmRlbnRhdGlvbiBhbmQgc3R5bGUgY29uc2lzdGVudCB0aHJvdWdob3V0IHRoZSBmaWxlCgoJKiBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jLCBpbmNsdWRlL3Byc2h0Lmg6CglHdXkgQWxiZXJ0ZWxsaSA8Z3V5QGNvZGV3ZWF2ZXJzLmNvbT4KCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0BzdGFydC5jb20uYXU+CglQcm9wZXJ0eSBzaGVldCBVbmljb2RpZmljYXRpb24uCglTdXBwb3J0IGFkZGl0aW9uYWwgd2l6YXJkIGZsYWdzLgoKCSogZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYzoKCUNoYXJsZXMgTG9lcCA8Y2hhcmxlc0Bjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnRlZCBJbWFnZUxpc3RfV3JpdGUuCgoJKiBkbGxzL2NvbWN0bDMyL25hdGl2ZWZvbnQuYzoKCUd1eSBBbGJlcnRlbGxpIDxndXlAY29kZXdlYXZlcnMuY29tPgoJRWxpbWluYXRlIHNvbWUgdXNlbGVzcyBlcnJvciBtZXNzYWdlcy4KCgkqIGluY2x1ZGUvY29uZmlnLmguaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJRG9uJ3QgZGVmaW5lIEhBVkVfRlJFRVRZUEUgdW5sZXNzIHdlIGhhdmUgZnJlZXR5cGUuaC4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYzoKCVJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCUNvcnJlY3Qgb3B0bGVuIHdoZW4gV1Nfc2V0c29ja29wdCBpcyBjYWxsZWQgd2l0aCBTT19MSU5HRVIuCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCVdlaXJkIHRoaW5nIHdpdGggbGNpZCBvZiBsaWJyYXJ5IGlzIHRoYXQgaWYgc3VibGFuZyBpcyBuZXV0cmFsIHRoZW4gd2UKCXJldHVybiB0aGUgcHJpbWFyeSBsYW5nIGVsc2Ugd2UgcmV0dXJuIDAuCgoJKiBncmFwaGljcy94MTFkcnYvZGliLmM6CglHdXkgQWxiZXJ0ZWxsaSA8Z3V5QGNvZGV3ZWF2ZXJzLmNvbT4KCURvbid0IGZpbGwgY29sb3JtYXAgYmV5b25kIGVuZCBvZiBzY3JlZW4gZGVwdGguCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmM6CglDaGFybGVzIExvZXAgPGNoYXJsZXNAY29kZXdlYXZlcnMuY29tPgoJRml4ZWQgZmlsZSBleHRlbnNpb24gcHJvYmxlbSBpbiB0aGUgZmlsZSBkaWFsb2cuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZWQgSXNCYWRTdHJpbmdQdHJBIGNhbGwgdGhhdCBjYXVzZWQgdHJvdWJsZS4KCgkqIGRsbHMvY29tY3RsMzIvc3RhdHVzLmM6CglDaGFybGVzIExvZXAgPGNoYXJsZXNAY29kZXdlYXZlcnMuY29tPgoJRml4IGVycm9ycyByZXN1bHRpbmcgZnJvbSBtaXNzaW5nIHBhcmVudGhlc2lzLgoKCSogZGxscy9jb21jdGwzMi9yZWJhci5jOgoJR3V5IEFsYmVydGVsbGkgPGd1eUBjb2Rld2VhdmVycy5jb20+CglUZXh0L0JrZ25kIGNvbG9yIGZpeGVzLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZGltaUBjcy50b3JvbnRvLmVkdT4KCVNpbXBsaWZ5IGFuZCBmaXggbGlzdHZpZXcgZWxsaXBzaWZpY2F0aW9uIG9mIGxhcmdlIHRleHQgbGFiZWxzLgoKCSogZ3JhcGhpY3MveDExZHJ2L3hmb250LmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglYRk9OVF9HZXRBdmdDaGFyV2lkdGg6IEFsd2F5cyByb3VuZCB1cC4KCgkqIHByb2dyYW1zL3dpbmV0ZXN0L3J1bnRlc3Q6IEZpeGVkIGNvcHkvcGFzdGUgYnVnLgoKCSogaW5jbHVkZS9udGRkay5oLCBpbmNsdWRlL3dpbmUvb2JqX3NoZWxsdmlldy5oLCBtc2Rvcy9kb3NtZW0uYywKCSAgd2luZG93cy93aW5wcm9jLmMsIGRsbHMvd2lubW0vbWNpc2VxL21jaW1pZGkuYywKCSAgZ3JhcGhpY3Mvd2luMTZkcnYvcHJ0ZHJ2LmMsIGRsbHMvd2lubW0vbW1zeXN0ZW0uYywKCSAgZGxscy9vbGVhdXQzMi90eXBlbGliLmMsIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5oLAoJICBkbGxzL3F1YXJ0ei9hdmlkZWMuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLAoJICBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmMsIGRsbHMvc2hlbGwzMi9zaGxtZW51LmMsCgkgIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmMsIGRsbHMvc2hlbGwzMi9zaHZfYmdfY21lbnUuYywKCSAgZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jLCBkbGxzL21zdmNydC9maWxlLmMsCgkgIGRsbHMvbXN2aWRlby9kcmF3ZGliLmMsIGRlYnVnZ2VyL3dpbmVkYmcuYywgZGxscy9hZHZhcGkzMi9zZXJ2aWNlLmMsCgkgIGRsbHMvY29tY3RsMzIvdXBkb3duLmMsIGNvbnRyb2xzL2J1dHRvbi5jLCBjb250cm9scy9lZGl0LmMsCgkgIGNvbnRyb2xzL21lbnUuYzoKCURpbWl0cmllIE8uIFBhdW4gPGRpbWlAY3MudG9yb250by5lZHU+CglNYWtlIEZJWE1FcyBtb3JlIGdyZXAtYWJsZS4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQG5lcmltLm5ldD4KCUF2b2lkIGNvbnZlcnRpbmcgbm9uZXhpc3RlbnQgdGV4dCBmcm9tIEEtPlcuCgoJKiBncmFwaGljcy94MTFkcnYvdGV4dC5jLCBncmFwaGljcy94MTFkcnYveGZvbnQuYywgaW5jbHVkZS94MTFkcnYuaCwKCSAgZGxscy94MTFkcnYvTWFrZWZpbGUuaW4sIGRsbHMveDExZHJ2L3gxMWRydi5zcGVjLAoJICBkbGxzL3gxMWRydi94cmVuZGVyLmMsIGdyYXBoaWNzL3gxMWRydi9jbGlwcGluZy5jLAoJICBncmFwaGljcy94MTFkcnYvaW5pdC5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJVXNlcyBYcmVuZGVyIGV4dGVuc2lvbiB0byBhbGxvdyBjbGllbnQgc2lkZSBmb250IHJlbmRlcmluZy4KCUFkZHMgbmljZSB0aGluZ3MgbGlrZSBhbnRpLWFsaWFzZWQgdGV4dC4KCgkqIGRsbHMveDExZHJ2Ly5jdnNpZ25vcmUsIHByb2dyYW1zL3dpbmVjb25zb2xlLy5jdnNpZ25vcmUsCgkgIGRsbHMvd2luc29jay8uY3ZzaWdub3JlLCBkbGxzL3dpbnNwb29sLy5jdnNpZ25vcmUsCgkgIGRsbHMvd2lubW0vd2luZW9zcy8uY3ZzaWdub3JlLCBkbGxzL3dpbm1tL3dhdmVtYXAvLmN2c2lnbm9yZSwKCSAgZGxscy93aW5tbS9tY2lzZXEvLmN2c2lnbm9yZSwgZGxscy93aW5tbS9tY2l3YXZlLy5jdnNpZ25vcmUsCgkgIGRsbHMvd2lubW0vbWlkaW1hcC8uY3ZzaWdub3JlLCBkbGxzL3dpbm1tL21jaWF2aS8uY3ZzaWdub3JlLAoJICBkbGxzL3dpbm1tL21jaWNkYS8uY3ZzaWdub3JlLCBkbGxzL3dpbm1tL2pveXN0aWNrLy5jdnNpZ25vcmUsCgkgIGRsbHMvd2lubW0vbWNpYW5pbS8uY3ZzaWdub3JlLCBkbGxzL3dpbmFzcGkvLmN2c2lnbm9yZSwKCSAgZGxscy93aW5tbS8uY3ZzaWdub3JlLCBkbGxzL3dpbjMycy8uY3ZzaWdub3JlLAoJICBkbGxzL3R0eWRydi8uY3ZzaWdub3JlLCBkbGxzL3ZlcnNpb24vLmN2c2lnbm9yZSwKCSAgZGxscy9zaGVsbDMyLy5jdnNpZ25vcmUsIGRsbHMvdGFwaTMyLy5jdnNpZ25vcmUsCgkgIGRsbHMvb3BlbmdsMzIvLmN2c2lnbm9yZSwgZGxscy9wc2FwaS8uY3ZzaWdub3JlLAoJICBkbGxzL3Jhc2FwaTMyLy5jdnNpZ25vcmUsIGRsbHMvb2xlcHJvMzIvLmN2c2lnbm9yZSwKCSAgZGxscy9vbGVzdnIvLmN2c2lnbm9yZSwgZGxscy9vbGVjbGkvLmN2c2lnbm9yZSwKCSAgZGxscy9vbGVkbGcvLmN2c2lnbm9yZSwgZGxscy9vbGUzMi8uY3ZzaWdub3JlLAoJICBkbGxzL29sZWF1dDMyLy5jdnNpZ25vcmUsIGRsbHMvbXN2aWRlby8uY3ZzaWdub3JlLAoJICBkbGxzL29kYmMzMi8uY3ZzaWdub3JlLCBkbGxzL21zYWNtLy5jdnNpZ25vcmUsCgkgIGRsbHMvbXNuZXQzMi8uY3ZzaWdub3JlLCBkbGxzL2x6ZXhwYW5kLy5jdnNpZ25vcmUsCgkgIGRsbHMva2VybmVsLy5jdnNpZ25vcmUsIGRsbHMva2VybmVsL21lc3NhZ2VzLy5jdnNpZ25vcmUsCgkgIGRsbHMvaW1hZ2VobHAvLmN2c2lnbm9yZSwgZGxscy9pbW0zMi8uY3ZzaWdub3JlLAoJICBkbGxzL2ljbXAvLmN2c2lnbm9yZSwgZGxscy9kZHJhdy8uY3ZzaWdub3JlLCBkbGxzL2RwbGF5eC8uY3ZzaWdub3JlLAoJICBkbGxzL2Rzb3VuZC8uY3ZzaWdub3JlLCBkbGxzL2RjaW1hbjMyLy5jdnNpZ25vcmUsCgkgIGRsbHMvY3J0ZGxsLy5jdnNpZ25vcmUsIGRsbHMvYXZpZmlsMzIvLmN2c2lnbm9yZSwKCSAgZGxscy9jb21jdGwzMi8uY3ZzaWdub3JlLCBkbGxzL2NvbW1kbGcvLmN2c2lnbm9yZSwKCSAgZGxscy9hZHZhcGkzMi8uY3ZzaWdub3JlOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglBdm9pZCB3aWxkY2FyZHMgaW4gLmN2c2lnbm9yZS4KCgkqIG9iamVjdHMvZGMuYywgb2JqZWN0cy9mb250LmMsIG9iamVjdHMvZ2Rpb2JqLmMsIGluY2x1ZGUvY29uZmlnLmguaW4sCgkgIGluY2x1ZGUvZm9udC5oLCBpbmNsdWRlL2dkaS5oLCBkbGxzL2dkaS9mcmVldHlwZS5jLCBjb25maWd1cmUsCgkgIGNvbmZpZ3VyZS5pbjoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUNoYXJsZXMgTG9lcCA8Y2hhcmxlc0Bjb2Rld2VhdmVycy5jb20+CglWYXJpb3VzIGZpeGVzIGZvciBnZGkgZm9udCBoYW5kbGluZyBjb2RlIGluY2x1ZGluZzoKCS0gVXNpbmcgVFRzIFZETVggdGFibGUgdG8gZW5zdXJlIHRoYXQgd2UgZ2V0IGV4YWN0bHkgdGhhdCBzYW1lIHNpemUKCSAgZm9udCB0aGF0IFdpbmRvd3MgdXNlcy4KCS0gRml4ZXMgdG8gbWFueSBtZW1iZXJzIG9mIHRoZSBtZXRyaWNzIHN0cnVjdHVyZXMuCgktIEZvbnQgY2FjaGUuCgktIFJvdGF0ZWQgdGV4dCBzdXBwb3J0LgoJLSBTdXBwb3J0IGZvciBHR09fR1JBWT9fQklUTUFQIChyZWFkeSBmb3IgYW50aS1hbGlhc2VkIHRleHQpLgoJLSBTdXBwb3J0IGZvciBHR09fTkFUSVZFLgoKCSogcHJvZ3JhbXMvb3N2ZXJzaW9uY2hlY2svb3N2ZXJzaW9uY2hlY2suYywKCSAgcHJvZ3JhbXMvb3N2ZXJzaW9uY2hlY2svb3N2ZXJzaW9uY2hlY2suc3BlYywKCSAgcHJvZ3JhbXMvd2NtZC93Y21kLnNwZWMsIHByb2dyYW1zL3djbWQvd2NtZG1haW4uYzoKCVN0ZXZlbiBFZHdhcmRzIDxTdGV2ZW5fRWQ0MTUzQHlhaG9vLmNvbT4KCUNoYW5nZXMgd2luZV9tYWluIHRvIG1haW4gdG8gcHJvcGVybHkgYnVpbGQgb24gYWxsIHBsYXRmb3Jtcy4KCgkqIHRvb2xzL3dpbmVidWlsZC9pbXBvcnQuYzoKCUNsZW1lbnMgPHRoZXJhcHlAZW5kb3JwaGluLm9yZz4KCVNob3VsZCBwcm9jZXNzIHRoZSAuZHluc3ltIG9mIHNoYXJlZCBsaWJyYXJpZXMgaW5zdGVhZCBvZiB0aGUgLnN0YWIuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzoKCUFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCUZpeGVkID09LyE9IG1pc21hdGNoLgoKCSogd2luZG93cy9ub25jbGllbnQuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglEbyBub3QgYmUgdG9vIHNtYXJ0IGFuZCBhZGQgV1NfQ0FQVElPTiBpbiBBZGp1c3RXaW5kb3dSZWN0RXguCgoJKiBpbmNsdWRlL3dpbnNvY2suaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQXZvaWQgY29uZmxpY3Qgd2l0aCBodG9ubCAmIGZyaWVuZHMgaW4gV2luZWxpYiBvbiBGcmVlQlNELgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglSZW5hbWUgc19hZGRyIHRvIHNyY19hZGRyIHRvIGF2b2lkIGEgY29uZmxpY3Qgb24gU29sYXJpcy4KCVJlbmFtZSBkX2FkZHIgdG8gZHN0X2FkZHIgZm9yIHN5bW1ldHJ5LgoKCSogaW5jbHVkZS9tc3ZjcnQvc2V0am1wLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVByZWZpeCBfSkJMRU4gdG8gYXZvaWQgY29uZmxpY3Qgb24gRnJlZUJTRC4KCgkqIG9iamVjdHMvZW5obWV0YWZpbGUuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglGbGVzaGVkIG91dCBzb21lIG1ldGFmaWxlIGNvbnZlcnNpb25zLgoKCSogb2JqZWN0cy9wYWxldHRlLmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgdGhlIGNvcnJlY3QgaGFsZnRvbmUgcGFsZXR0ZS4KCgkqIGRsbHMvd2luZWRvcy9pbnQzMy5jOiBOb2cgPG5vZ0BzZGYubG9uZXN0YXIub3JnPgoJSW1wbGVtZW50IGZ1bmN0aW9uIG51bWJlciAweDUgKFJldHVybiBtb3VzZSBidXR0b24gcHJlc3MgaW5mb3JtYXRpb24pLgoKCSogc2VydmVyL2ZpbGUuYzoKCVdvcmsgYXJvdW5kIGZ0cnVuY2F0ZSBpbXBsZW1lbnRhdGlvbnMgdGhhdCBkb24ndCBzdXBwb3J0IGV4dGVuZGluZwoJZmlsZXMuCgoJKiBkbGxzL3NobHdhcGkvcGF0aC5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCUZpeCBQYXRoQ3JlYXRlRnJvbVVybHtBfFd9IHRvIHJldHVybiB0aGUgY29ycnJlY3QgZXJyb3IgY29kZSBpbiBhbGwKCWNhc2VzLgoKCSogZGxscy9zaGx3YXBpL3JlZy5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCUZpeCBTSFJlZ09wZW5VU0tleXtBfFd9IGFuZCBTSFJlZ1F1ZXJ5VVNWYWx1ZXtBfFd9IHRvIGFjdHVhbGx5IHVzZQoJcHJldmlvdXNseSBvcGVuIGtleXMuCgoJKiBkbGxzL3dpbmVkb3MvdmdhLmM6IEp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCUxvdy1yZXNvbHV0aW9uIGFuZCBsb3ctY29sb3IgVkdBIG1vZGVzIGFyZSBub3cgbWFwcGVkIGludG8gbW9kZQoJNjQweDQ4MHg4LiBBZGRlZCBwcmVsaW1pbmFyeSBzdXBwb3J0IGZvciBmb3VyIGJpdCBtb2Rlcy4KCgkqIGRsbHMvdXNlci90ZXh0LmM6CglCaWxsIE1lZGxhbmQgPG1lZGJpMDFAYWNjcGFjLmNvbT4KCVB1dCB0aGUgcHJlZml4LXVuZGVybGluZS1kcmF3aW5nIGF3YXkgaW50byBpdCdzIG93biBmdW5jdGlvbiBzbyB3ZSBjYW4KCXNlZSB3aGF0IGlzIGhhcHBlbmluZy4KCgkqIGZpbGVzL2RyaXZlLmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJR2V0RGlza0ZyZWVTcGFjZSBuZWVkcyB0byBzZXQgdGhlIGxhc3QgZXJyb3Igb24gZmFpbHVyZS4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzIuc3BlYywgZGxscy9vbGVhdXQzMi9zYWZlYXJyYXkuYywKCSAgZGxscy9vbGVhdXQzMi92YXJpYW50LmM6CglCaWxsIE1lZGxhbmQgPG1lZGJpMDFAYWNjcGFjLmNvbT4KCUEgY291cGxlIG9mIGFkZGl0aW9ucy4KCjIwMDItMDEtMjIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3ZlcnNpb24uaCwgQU5OT1VOQ0UsIENoYW5nZUxvZzoKCVJlbGVhc2UgMjAwMjAxMjIuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjIwMDItMDEtMjIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL2RpYWxvZy5jOgoJUmVtb3ZlZCBubyBsb25nZXIgdXNlZCBhdmVyYWdlIHdpZHRoIGNhbGN1bGF0aW9uLgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVRoZSBcXDxucj4gbWFnaWMgaW4gTG9hZFR5cGVMaWJFeCBmb3VuZCBkaXJlY3Rvcmllcywgd2hpY2ggd2FzIG5vdAoJaW50ZW5kZWQuIFJldHVybiBlcnJvciBpbiB0aGF0IGNhc2UuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWJvcnQgaWYgd2UgZG8gbm90IGZpbmQgeWFjYyBvciBiaXNvbi4KCgkqIGluY2x1ZGUvd2luZS9vYmpfY2hhbm5lbC5oLCBpbmNsdWRlL3dpbmUvb2JqX21hcnNoYWwuaCwKCSAgaW5jbHVkZS93aW5lL29ial9vbGVhdXQuaCwgb2xlL3V1aWQuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJTW92ZWQgZ3VpZHMgbmVlZGVkIGZvciBQcm94eS9TdHViIGZhY3RvcmllcyB0byByZXNwZWN0aXZlIC5oIGZpbGVzLAoJYWRkIHRvIGxpYndpbmVfdXVpZC4KCgkqIGRsbHMvbXN2Y3J0L2NvbnNvbGUuYywgZGxscy9tc3ZjcnQvY3BwLmMsIGRsbHMvbXN2Y3J0L2N0eXBlLmMsCgkgIGRsbHMvbXN2Y3J0L2RhdGEuYywgZGxscy9tc3ZjcnQvZGlyLmMsIGRsbHMvbXN2Y3J0L2Vudmlyb24uYywKCSAgZGxscy9tc3ZjcnQvZXJybm8uYywgZGxscy9tc3ZjcnQvZXhjZXB0LmMsIGRsbHMvbXN2Y3J0L2V4aXQuYywKCSAgZGxscy9tc3ZjcnQvZmlsZS5jLCBkbGxzL21zdmNydC9oZWFwLmMsIGRsbHMvbXN2Y3J0L2xvY2FsZS5jLAoJICBkbGxzL21zdmNydC9tYWluLmMsIGRsbHMvbXN2Y3J0L21hdGguYywgZGxscy9tc3ZjcnQvbWJjcy5jLAoJICBkbGxzL21zdmNydC9taXNjLmMsIGRsbHMvbXN2Y3J0L21zdmNydC5oLCBkbGxzL21zdmNydC9wcm9jZXNzLmMsCgkgIGRsbHMvbXN2Y3J0L3N0cmluZy5jLCBkbGxzL21zdmNydC90aHJlYWQuYywgZGxscy9tc3ZjcnQvdGltZS5jLAoJICBkbGxzL21zdmNydC93Y3MuYzoKCURvbid0IGluY2x1ZGUgZGVidWd0b29scy5oIGluIHRoZSBoZWFkZXIgZmlsZSwgbW92ZWQgaXQgdG8gdGhlIEMgZmlsZXMKCXRoYXQgbmVlZCBpdCAoYW5kIHVzZWQgdGhlIG5ldyB3aW5lL2RlYnVnLmggd2hpbGUgd2UgYXJlIGF0IGl0KS4KCgkqIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvZGVidWd0b29scy5oLCBpbmNsdWRlL3dpbmUvZGVidWcuaCwKCSAgdG9vbHMvd2luZWR1bXAvb3V0cHV0LmM6CglNb3ZlZCBkZWJ1ZyBkZWZpbml0aW9ucyB0byBpbmNsdWRlL3dpbmUvZGVidWcuaC4KCgkqIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jOgoJUmVtb3ZlZCB1c2Ugb2YgU0VUX0RFQlVHR0lORywgaXQncyBicm9rZW4gYW55d2F5LgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglDb25zaXN0ZW50IHVzYWdlIG9mIGlzdHJpbmcsIHVzZSBTVFJfW0dldHxTZXRdUHRyIHdoZXJlIGFwcHJvcHJpYXRlLgoKCSogd2luZG93cy93aW4uYzoKCVRvbW15IFNjaHVsdHogTGFzc2VuIDx0bGFzc2VuQHRsYXNzZW4uZGs+CglNYWtlIEVudW1XaW5kb3dzIHJldHVybiBUUlVFIGlmIG5vIHdpbmRvd3MgZXhpc3RzLgoKCSogZGxscy93aW5zcG9vbC9pbmZvLmMsIGRsbHMvd2luc3Bvb2wvd2luc3Bvb2wuZHJ2LnNwZWMsCgkgIGluY2x1ZGUvd2luc3Bvb2wuaDoKCU1hcmsgRy4gQWRhbXMgPG1nYWRhbXNAc3ltcGF0aWNvLmNhPgoJQWRkIEdldERlZmF1bHRQcmludGVyKCkgZnVuY3Rpb25zLgoKMjAwMi0wMS0yMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG1pc2Mvb3B0aW9ucy5jLCBkbGxzL250ZGxsL2RlYnVndG9vbHMuYywgZGxscy9zaGVsbDMyL3BpZGwuYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGluY2x1ZGUvZGVidWd0b29scy5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglNYWtlIHRoZSBXaW5lIHRyYWNlIGZhY2lsaXRpZXMgYWNjZXNzaWJsZSBmcm9tIFdpbmVsaWIgYXBwbGljYXRpb25zLgoKCSogdG9vbHMvd2luZWR1bXAvcGUuYywgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLAoJICBkbGxzL3F1YXJ0ei9hdWRyZW4uYywgZGxscy9xdWFydHovc2FtcGxlLmMsIGRsbHMvd3NvY2szMi9zb2NrZXQuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQ29tbWVudCBvdXQvaWZkZWYgb3V0IHVudXNlZCBjb2RlIGFuZCB2YXJpYWJsZXMuCgoJKiBmaWxlcy9wcm9maWxlLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUhhbmRsZSBzZWN0aW9uPT1OVUxMIChlcnJvcikgaW4gV3JpdGVQcml2YXRlUHJvZmlsZVN0cmluZ0EuCgoJKiBkbGxzL3gxMWRydi9td20uaCwgZGxscy94MTFkcnYvd2luZG93LmM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUFkZGVkIHN1cHBvcnQgZm9yIE1XTSBoaW50cy4KCgkqIGNvbmZpZ3VyZS5pbiwgY29uZmlndXJlOgoJQW5kcmV3IExld3lja3kgPGFuZHJld0B0cmFuc2dhbWluZy5jb20+CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUNoZWNrIGZvciBjb21tb24gYnJva2VuIG5WaWRpYStNZXNhIE9wZW5HTCBsaWJyYXJ5IHNldHVwcy4KCUFkZCBzb21lIHF1b3RpbmcuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJUHJpbnQgdGhlIHN0cmVycm9yIGluc3RlYWQgb2YganVzdCB0aGUgZXJybm8uCgoJKiBkbGxzL2NvbW1kbGcvY29sb3JkbGcuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQWRkIG1pc3NpbmcgY2FzdC4KCgkqIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglGaXggaW52YWxpZCBDIGNvZGUgKHVuZGVmaW5lZCBiZWhhdmlvcikuCgoJKiBpbmNsdWRlL2NvbnNvbGUuaCwgd2luZG93cy9kZWZkbGcuYywgZGxscy93aW5zb2NrL3NvY2tldC5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglGaXggYSBjb3VwbGUgb2Ygd2FybmluZ3MgYW5kIGEgdHlwby4KCgkqIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvd2luZS5wbSwgcHJvZ3JhbXMvd2luZXRlc3QvdGVzdHMvd2luZS5wbCwKCSAgcHJvZ3JhbXMvd2luZXRlc3Qvd2luZS54czoKCURvbid0IGNvbnZlcnQgInB0ciIgcmV0dXJuIHR5cGUgdG8gYSBQZXJsIHN0cmluZy4KCUNhbGwgR2V0UHJvY0FkZHJlc3Mgb25seSB3aGVuIGEgZnVuY3Rpb24gaXMgYWN0dWFsbHkgY2FsbGVkLCBub3QgYXQKCWRlY2xhcmF0aW9uIHRpbWUuCgoJKiBmaWxlcy9maWxlLmM6CglGaXhlZCBmdW5jdGlvbiBwcm90b3R5cGUgdGhhdCBjb25mdXNlZCB3aW5hcGlfZXh0cmFjdC4KCgkqIHRvb2xzL3dpbmFwaS93aW5hcGlfZXh0cmFjdCwgdG9vbHMvd2luYXBpL3dpbmFwaV9leHRyYWN0X29wdGlvbnMucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvYWR2YXBpMzIucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvYXZpZmlsMzIucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvY29tY3RsMzIucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvY29tZGxnMzIucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvZGNpbWFuMzIucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvZGRyYXcucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvZGlucHV0LnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL2RwbGF5eC5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS9kc291bmQucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvZ2RpMzIucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvZ2x1MzIucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvaWNtcC5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS9pbWFnZWhscC5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS9pbW0zMi5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS9qb3lzdGlja19kcnYucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUva2VybmVsMzIucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvbHozMi5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS9tY2lhbmltX2Rydi5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS9tY2lhdmlfZHJ2LnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL21jaWNkYV9kcnYucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvbWNpc2VxX2Rydi5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS9tY2l3YXZlX2Rydi5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS9taWRpbWFwX2Rydi5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS9tcHIucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvbXNhY20zMi5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS9tc2FjbV9kcnYucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvbXN2Y3J0LnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL21zdmZ3MzIucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvbnRkbGwucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvb2RiYzMyLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL29sZTMyLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL29sZWF1dDMyLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL29sZWNsaTMyLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL29sZWRsZy5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS9vbGVwcm8zMi5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS9vbGVzdnIzMi5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS9vcGVuZ2wzMi5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS9wc2FwaS5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS9xdWFydHoucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvcmFzYXBpMzIucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvcmljaGVkMzIucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvcnBjcnQ0LnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL3NlcmlhbHVpLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL3NldHVwYXBpLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL3NoZG9jdncucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvc2hlbGwzMi5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS9zaGx3YXBpLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL3RhcGkzMi5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS91cmxtb24ucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvdXNlcjMyLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL3ZlcnNpb24ucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvdzMyc2tybmwucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvd2luZWRvcy5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS93aW5lb3NzX2Rydi5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS93aW5pbmV0LnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL3dpbm1tLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL3dpbnNwb29sX2Rydi5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS93aW50cnVzdC5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS93czJfMzIucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvd3NvY2szMi5wbToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJR2VuZXJhdGUgUGVybCBtb2R1bGVzIGRlZmluaW5nIHByb3RvdHlwZXMgZm9yIGV4cG9ydGVkIGZ1bmN0aW9ucy4KCjIwMDItMDEtMTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3VzZXIvZGRlL2RkZV9wcml2YXRlLmgsIGRsbHMvdXNlci9kZGUvbWlzYy5jLAoJICBkbGxzL3VzZXIvZGRlL3NlcnZlci5jLCBkbGxzL3VzZXIvZGRlL2NsaWVudC5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBpbml0aWFsaXNhdGlvbiBtZXNzYWdlcyBmb3IgcmF3IERERS4KCUZpeGVkIERkZUNyZWF0ZURhdGFIYW5kbGUgZm9yIG5vbiBOVUxMIG9yIENGX1RFWFQgZm9ybWF0cy4KCVZhcmlvdXMgZml4ZXMgKGNvc21ldGljcywgYmV0dGVyIGVycm9yIGNoZWNraW5nKS4KCgkqIHNlcnZlci9xdWV1ZS5jLCBkbGxzL3VzZXIvbWVzc2FnZS5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglJbXBsZW1lbnRlZCBpbnRlcnByb2Nlc3MgRERFIG1lc3NhZ2UgcG9zdGluZy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYywgaW5jbHVkZS9jb21tY3RybC5oLCB3aW5kb3dzL3NweS5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZGltaUBjcy50b3JvbnRvLmVkdT4KCS0gTWFrZSB0aGUgTGlzdFZpZXcgY29udHJvbCBVbmljb2RlIHJlYWR5LgoJLSBTdXBwb3J0IGJvdGggQU5TSSAmIFVuaWNvZGUgTGlzdFZpZXcgbm90aWZpY2F0aW9ucy4KCS0gRml4ZWQgYSBmZXcgYnVncy4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUluaXRpYWxpemUgc3RyZWFtRGF0YSBhbmQgY2hlY2sgb24gZmFpbHVyZSB0byByZWFkIGRlc2lyZWQgZGF0YSBmcm9tCglzdHJlYW0uCgoJKiBsb2FkZXIvbW9kdWxlLmM6CglCaWxsIE1lZGxhbmQgPG1lZGJpMDFAYWNjcGFjLmNvbT4KCVByZXZlbnQgdHJ5aW5nIHRvIGhhbmRsZSB1bmluaXRpYWxpc2VkIG1lbW9yeSBhcyBhIHN0cmluZy4KCgkqIHdpbjMyL2NvbnNvbGUuYywgZGxscy9zaGVsbDMyL3NoZWxsc3RyaW5nLmMsIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsCgkgIGRsbHMvd2luc29jay9zb2NrZXQuYywgZGxscy9hZHZhcGkzMi9jcnlwdC5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIGlzc3VlcyBmb3VuZCBieSB3aW5hcGlfY2hlY2suCgoJKiB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5kYXQsCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9jb21jdGwzMi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi91c2VyMzIuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvd3MyXzMyLmFwaToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJTWlub3IgQVBJIGZpbGVzIHVwZGF0ZS4KCgkqIGZpbGVzL2RpcmVjdG9yeS5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCByZXR1cm4gdmFsdWUgb2YgR2V0V2luZG93c0RpcmVjdG9yeUEvVyBhbmQgR2V0U3lzdGVtRGlyZWN0b3J5QS9XLgoKCSogZGxscy9udGRsbC9jZHJvbS5jOgoJQmFuZyBKdW4tWW91bmcgPGp1bnlvdW5nQG1vZ3VhLmNvbT4KCUZpeCBOZXRCU0QgY29tcGlsZSBlcnJvcnM7IENESU9DUkVBREFVRElPIGlzIG5vdCBhdmFpbGFibGUgb24gTmV0QlNELgoKCSogZGxscy9tc2ltZzMyL21zaW1nMzIuc3BlYywgZGxscy9tc2ltZzMyL21zaW1nMzJfbWFpbi5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQWRkZWQgR3JhZGllbnRGaWxsIHN0dWIuCgoJKiB3aW5kb3dzL3N5c3BhcmFtcy5jOgoJQW5kcml5IFBhbGFtYXJjaHVrIDxhcGEzYUB5YWhvby5jb20+CglTeXN0ZW1QYXJhbWV0ZXJzSW5mbzogZml4ZWQgcmV0dXJuIHZhbHVlIGZvciBTUElfU0VURkFTVFRBU0tTV0lUQ0guCgoJKiBkbGxzL29sZTMyL2NvbXBvYmouYzoKCUJpbGwgTWVkbGFuZCAobWVkYmkwMUBhY2NwYWMuY29tKQoJQ29HZXRDbGFzc09iamVjdDogZm9yIENMU0NUWF9MT0NBTF9TRVJWRVIgYXQgbGVhc3QgbG9vayB1cCB0aGUgc2VydmVyCglpbiB0aGUgcmVnaXN0cnksIGV2ZW4gdGhvdWdoIHdlIGRvbid0IHlldCBleGVjdXRlIGl0LgoKCSogZGxscy91c2VyL3RleHQuYzoKCUJpbGwgTWVkbGFuZCA8bWVkYmkwMUBhY2NwYWMuY29tPgoJLSBEb24ndCBzdHJpbmcgY29weSBmcm9tIHVuaW5pdGlhbGlzZWQgc3RhY2sgbWVtb3J5LiAgSW4gZmFjdCBkb24ndAoJICBtb2RpZnkgdGhlIGlucHV0IHN0cmluZyBpZiBpdCBkaWRuJ3QgY2hhbmdlLgoJLSBDb3JyZWN0IGFycmF5IHNpemUuCgktIExvZ2ljYWxseSBzZXBhcmF0ZSB0aGUgY2VudHJpbmcgZnJvbSB0aGUgZWxsaXBzaWZpY2F0aW9uLgoJLSBDb21tZW50IG9uIHByZWZpeCBlcnJvci4KCgkqIGRlYnVnZ2VyL3R5cGVzLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVzIGNoYXIgYXJyYXkgaW4gc3RydWN0dXJlIGR1bXBpbmcuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMyLnNwZWMsIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJU3R1YiBmb3IgY29tY3RsMzIuNDE5CgoyMDAyLTAxLTE1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9rZXJuZWwvdGVzdHMvLmN2c2lnbm9yZSwgZGxscy9rZXJuZWwvdGVzdHMvYXRvbS5wbCwgZGxscy9rZXJuZWwvTWFrZWZpbGUuaW46CglBZGRlZCBhdG9tIHRlc3Qgc2NyaXB0LgoKCSogcHJvZ3JhbXMvd2luZXRlc3QvdGVzdHMvd2luZS5wbDoKCUFkZGVkIHNvbWUgcHJvdG90eXBlcyB0byBmdW5jdGlvbiBkZWNsYXJhdGlvbnMuCgoJKiBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL3dpbmJhc2UucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvd2luY29uLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL3dpbmRlZi5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS93aW5lcnJvci5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS93aW5nZGkucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvd2lubmxzLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL3dpbm50LnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL3dpbnJlZy5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS93aW5zb2NrMi5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS93aW5zcG9vbC5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS93aW51c2VyLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL3dpbnZlci5wbSwgcHJvZ3JhbXMvd2luZXRlc3QvbWFrZV9zeW1ib2xzOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIE1hZGUgdGhlIFBlcmwgbW9kdWxlIGdlbmVyYXRlZCBieSBtYWtlX3N5bWJvbHMgYSByZWFsIGV4cG9ydGluZwoJICBtb2R1bGUuCgktIFVzZSBjb25zdGFudHMgaW5zdGVhZCBvZiB2YXJpYWJsZXMuCgoJKiBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL3dpbmUucG06CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUFkZGVkIHRoZSBwb3NzaWJpbGl0eSAoaXQgaXMgb3B0aW9uYWwgZm9yIGJhY2t3YXJkIGNvbXBhYmlsaXR5KSB0bwoJc3BlY2lmeSBhcmd1bWVudCB0eXBlcyBpbiBvcmRlciB0byBmaXggYSAiYnVnIiBjb25jZXJuaW5nCglpbnRlZ2VyL3N0cmluZyBzY2FsYXJzLgoKCSogd2luZG93cy9zeXNwYXJhbXMuYzoKCUFuZHJpeSBQYWxhbWFyY2h1ayA8YXBhM2FAeWFob28uY29tPgoJSW1wbGVtZW50ZWQgcHJvY2Vzc2luZyBvZiBhY3Rpb25zIFNQSV9TRVRLRVlCT0FSRFBSRUYsCglTUElfU0VUU0NSRUVOUkVBREVSLgoJU2F2ZSB0byByZWdpc3RyeSB2YWx1ZSBvZiBTUElfU0VUU0NSRUVOU0FWRUFDVElWRSBhY3Rpb24uCglDaGFuZ2VkIHByb2Nlc3Npbmcgb2YgYWN0aW9uIFNQSV9TRVRGQVNUVEFTS1NXSVRDSCB0byBjb25mb3JtIHRvCglXaW5kb3dzIGJlaGF2aW91ciBvbiBhbmQgYWZ0ZXIgV2luTlQgNC4wLCBXaW5kb3dzIDk1LgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQ2F0Y2ggbWF4aW11bSBudW1iZXIgb2YgdGltZXMgYW5kIHJldHVybiBvdXQgb2YgbWVtb3J5IGVycm9yLgoKCSogdG9vbHMvd2luZWR1bXAvb3V0cHV0LmMsIGluY2x1ZGUvY29uc29sZS5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglTbWFsbCB0eXBvIGZpeC4KCgkqIGRsbHMvdXNlci91c2VyMzIuc3BlYywgaW5jbHVkZS93aW51c2VyLmgsIHdpbmRvd3MvaW5wdXQuYywKCSAgZGxscy9jb21jdGwzMi9jb21tY3RybC5jOgoJUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJTW92ZSB0aGUgaW1wbGVtZW50YXRpb24gb2YgY29tY3RsMzIuX1RyYWNrTW91c2VFdmVudCB0bwoJdXNlcjMyLlRyYWNrTW91c2VFdmVudCBhbmQgY2FsbCB0aGlzIGZ1bmN0aW9uIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUKCXNwZWNzLgoKCSogZGxscy91c2VyL3RleHQuYzoKCUJpbGwgTWVkbGFuZCA8bWVkYmkwMUBhY2NwYWMuY29tPgoJRmlyc3Qgc3RhZ2Ugb2YgRHJhd1RleHQgdXBncmFkZS4KCS0gUmVhcnJhbmdlIGNvZGUgaW50byB0aHJlZSBkaXN0aW5jdCBhcmVhczsgRHJhd1RleHQsIEdyYXlTdHJpbmcsCgkgIFRhYmJlZFRleHQuCgktIFJlbW92ZSB1bnVzZWQgbWFjcm9zLgoJLSBNb2RpZnkgdHJlYXRtZW50IG9mIFRhYiBhcmd1bWVudHMgdG8gZml0IHdpdGggb2JzZXJ2ZWQgYmVoYXZpb3VyLgoJICBlLmcuIERyYXdUZXh0RXggd2l0aCBEVF9UQUJTVE9QIGJ1dCBudWxsIGR0cCB3aWxsIG5vdCB0YWtlIHRoZQoJICBzZXR0aW5nIGZyb20gdGhlIGZsYWdzLiAgQWxzbyBvbmx5IHVzZXMgYml0cyAxNSB0byA4LCBub3QgdGhlCgkgIGhpZ2hlciBiaXRzLgoKCSogZGxscy9pY21wL2ljbXBfbWFpbi5jOgoJUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJRG9uJ3QgY2hlY2sgdGhlIGNoZWNrc3VtIG9mIHRoZSBvcmlnaW5hbCBlY2hvIHJlcXVlc3QgcGFja2V0IGluIHRoZQoJcmVjZWl2ZWQgcmVwbHkgcGFja2V0LgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMi5zcGVjLCBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJU3R1YnMgZm9yIEltYWdlTGlzdF9bU3xHXWV0RmxhZ3MuCgoJKiBjb250cm9scy9idXR0b24uYzoKCVJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCURvbid0IGNoYW5nZSBidXR0b24gc3RhdGUgb24gV01fTU9VU0VNT1ZFIG1lc3NhZ2VzIHVubGVzcyBsZWZ0IG1vdXNlCglidXR0b24gaXMgcHJlc3NlZC4KCgkqIGNvbnRyb2xzL2NvbWJvLmM6CglSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglJbiBDQlBhaW50VGV4dCB1c2UgdGhlIHRleHQgc2l6ZSBhcyByZXR1cm5lZCBieSBMQl9HRVRURVhULiBUaGUgc2l6ZQoJcmV0dXJuZWQgYnkgTEJfR0VUVEVYVExFTiBtYXkgYmUgdG9vIGxhcmdlLgoKCSogd2luZG93cy9kZWZkbGcuYzoKCVJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCU1ha2UgRE1fU0VUREVGSUQgbWVzc2FnZSB3b3JrIGZvciBvd25lciBkcmF3biBidXR0b25zIGFzIHdlbGwuCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmM6CglNaWNoYWVsIEMuIE1hZ2dpbyA8dm95YWdlckB2b3lkLm5ldD4KCUNvZGUgdXNlZCBBRl9JUFggaW4gc29tZSBwbGFjZXMgd2hlcmUgaXQgc2hvdWxkIGhhdmUgdXNlZCBXU19BRl9JUFguCgoJKiBkbGxzL3dpbnNwb29sL3dpbnNwb29sLmRydi5zcGVjOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUZvcmNlIG9yZGluYWwgYWxsb2NhdGlvbiBzdGFydCBmcm9tIDEwMCBhcyBpbiBXaW5kb3dzLgoKCSogZG9jdW1lbnRhdGlvbi9kYjJodG1sLXdpbmVocToKCUZyYW5nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglGaXhlZCBpbmNvcnJlY3QgdXNlIG9mICd0ZXN0IC1hJyAoZm9yIEZyZWVCU0QpLgoKCSogZGxscy9vbGVhdXQzMi9vbGVmb250LmM6CglCaWxsIE1lZGxhbmQgPG1lZGJpMDFAYWNjcGFjLmNvbT4KCUxlYXZlIElJRCBjaGVjayB0byB0aGUgT2xlQ3JlYXRlRm9udEluZGlyZWN0LCBzbyB0aGF0IFNGQ0Ygd2lsbCBoYW5kbGUKCWFsbCB0aGUgaW50ZXJmYWNlcyB0aGF0IE9sZUNyZWF0ZS4uIHdpbGwuCgoyMDAyLTAxLTE0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogcHJvZ3JhbXMvd2luZXRlc3QvdGVzdHMvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvd2luZXRlc3QvdGVzdHMvd2luZS5wbCwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvd2luZXRlc3QvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L3Rlc3QucGw6CglJbnRlZ3JhdGVkIHRlc3Qgc2NyaXB0IGZvciB3aW5ldGVzdCBpbnRvIHRoZSBtYWtlIHRlc3QKCWluZnJhc3RydWN0dXJlLgoJQWRkZWQgYSBmZXcgdGVzdHMgZm9yIHRoZSBuZXcgd2luZS5wbSBmdW5jdGlvbnMuCgoJKiBkbGxzL21ha2VfZGxscywgcHJvZ3JhbXMvd2luZXRlc3QvcnVudGVzdCwgTWFrZS5ydWxlcy5pbjoKCVJld3JvdGUgcnVudGVzdCBpbiBQZXJsIHNvIHRoYXQgaXQgY2FuIGJlIHVzZWQgb24gdGhlIFdpbmRvd3Mgc2lkZS4KCUFkZGVkIG9wdGlvbnMgZm9yIGluY2x1ZGUgZGlyZWN0b3JpZXMsIGRlYnVnIGxldmVsIGFuZCB0YXJnZXQgcGxhdGZvcm0uCglzZWxlY3Rpb24uCgoJKiBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL3dpbmUucG0sIHByb2dyYW1zL3dpbmV0ZXN0L3dpbmUucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L3dpbmV0ZXN0LmM6CglBZGRlZCBvaygpIGZ1bmN0aW9uIHRoYXQgZG9lc24ndCBzdG9wIHRoZSB0ZXN0IG9uIHRoZSBmaXJzdCBlcnJvci4KCUFkZGVkIHRyYWNlKCkgZnVuY3Rpb24gZm9yIGRlYnVnZ2luZyB0ZXN0cy4KCUFkZGVkIHN1cHBvcnQgZm9yIHRvZG8gZnVuY3Rpb25hbGl0eS4KCU1vdmVkIHdpbmUucG0gdG8gaW5jbHVkZSBkaXJlY3RvcnkuCgoJKiBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL3dpbmJhc2UucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvd2luY29uLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL3dpbmRlZi5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS93aW5lcnJvci5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS93aW5nZGkucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvd2lubmxzLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL3dpbm50LnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL3dpbnJlZy5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS93aW5zb2NrMi5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS93aW5zcG9vbC5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS93aW51c2VyLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL3dpbnZlci5wbSwgcHJvZ3JhbXMvd2luZXRlc3QvbWFrZV9zeW1ib2xzOgoJQWRkZWQgUGVybCBtb2R1bGVzIGNvbnRhaW5pbmcgdGhlICNkZWZpbmVzIHZhbHVlcyBmb3IgdGhlCgljb3JyZXNwb25kaW5nIFdpbmRvd3MgaGVhZGVycy4KCgkqIGRvY3VtZW50YXRpb24vY29uZmlndXJpbmcuc2dtbCwgZG9jdW1lbnRhdGlvbi93aW5lLmNvbmYubWFuLmluOgoJU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtTGluZS5jb20+CglBZGRlZCwgdXBkYXRlIGluZm9ybWF0aW9uIGFib3V0IEFwcERlZmF1bHQuCgoJKiBpbmNsdWRlL3JpY2hlZGl0LmgsIGRsbHMvcmljaGVkaXQvY2hhcmxpc3QuYywKCSAgZGxscy9yaWNoZWRpdC9yZWFkZXIuYywgZGxscy9yaWNoZWRpdC9yaWNoZWRpdC5jLAoJICBkbGxzL3JpY2hlZGl0L3RleHQtd3JpdGVyLmM6CglEYW5pZWwgV2Fsa2VyIDxkaXdhbGtlckBlYXJ0aGxpbmsubmV0PgoJLSBBZGRlZCBkZWJ1Z2dpbmcuCgktIFRyYW5zZmVyIGFsbCByZWxldmFudCBtZXNzYWdlcyB0byB0aGUgdW5kZXJseWluZyBlZGl0IGNvbnRyb2wuCgoJKiBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGUzMi9vbGUyLmMsIGRsbHMvb2xlMzIvb2xlMm5scy5jLAoJICBkbGxzL29sZTMyL29sZTJzdHVicy5jLCBkbGxzL29sZTMyL3N0b3JhZ2UuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUmVtb3ZlZCBzb21lIHVzZWxlc3Mgd2luZ2RpLmggaW5jbHVkZXMuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMyLnNwZWMsIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJQ29udmVydCBNUlVMaXN0cyB0byBVbmljb2RlLgoKCSogZGxscy9zaGVsbDMyL3NobGZvbGRlci5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJSVNoZWxsRm9sZGVyX0JpbmRUb09iamVjdCBzaG91bGQgcmVzcGVjdCByaWlkLgoKCSogZGxscy9tc3ZjcnQvZmlsZS5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJX3N0YXQ6IEJldHRlciB0ZXN0IGZvciBkcml2ZSBsZXR0ZXIuCgoJKiBkbGxzL250ZGxsL2Nkcm9tLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUZpeCBjb21waWxhdGlvbiBlcnJvcnMgb24gRnJlZUJTRC4KCgkqIGxpYnRlc3QvaGVsbG81LmM6CglKYW1lcyBKdXJhbiA8amFtZXNqdXJhbkBhbHVtbmkucHN1LmVkdT4KCUxvYWRMaWJyYXJ5IHJldHVybnMgMCBvbiBmYWlsdXJlLCBub3QgPCAzMi4KCgkqIGxpYnRlc3QvTWFrZWZpbGUuaW46CglKYW1lcyBKdXJhbiA8amFtZXNqdXJhbkBhbHVtbmkucHN1LmVkdT4KCVVzZSAtRE5PTkFNRUxFU1NVTklPTiAtRE5PTkFNRUxFU1NTVFJVQ1Qgd2hlbiBjb21waWxpbmcuCgoJKiBpbmNsdWRlL3dpbnNvY2syLmgsIGRsbHMvd2luc29jay9zb2NrZXQuYywgZGxscy93aW5zb2NrL3dzMl8zMi5zcGVjOgoJRGFuaWVsIFdhbGtlciA8ZGl3YWxrZXJAZWFydGhsaW5rLm5ldD4KCUltcGxlbWVudGVkIFdTQUFjY2VwdCgpLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglHdXkgQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJLSBBZGQgYWRkaXRpb25hbCBUT09MQkFSX0NhbGNUb29sYmFyIGluIGEgZGlmZmVyZW50IHBhdGggb2YgQXV0b3NpemUuCgktIFJlbWVtYmVyIGFuZCBwcm9jZXNzIFdNX1NFVFJFRFJBVyBtZXNzYWdlcy4KCS0gUHJvY2VzcyBzdHJpbmdzIHNwZWNpZmljaWVkIGluIEluc2VydEJ1dHRvbntBfFd9LgoKCSogZGxscy9jb21jdGwzMi9yZWJhci5jOgoJR3V5IEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCUZpeCBhIGdyaXBwZXIgaXNzdWUgYW5kIHRoZSBhZGp1c3RtZW50IG9mIGJhbmRzIHdoZW4gUkJCU19GSVhFRFNJWkUKCXNwZWNpZmllZC4KCgkqIHRvb2xzL3dpbmVzaGVsbGxpbms6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVByZXBlbmQgIi0tIiB0byBhcmd1bWVudHMuCgoyMDAyLTAxLTEzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy93aW5tbS9tY2ljZGEvTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vbWNpY2RhL21jaWNkYS5jLAoJICBtc2Rvcy9pbnQyZi5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglOb3cgdXNpbmcgdGhlIE5UIENEIGludGVyZmFjZS4KCgkqIG1pc2MvTWFrZWZpbGUuaW4sIG1pc2MvY2Ryb20uYywgd2luMzIvZGV2aWNlLmMsCgkgIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sIGRsbHMvbnRkbGwvY2Ryb20uYywgZmlsZXMvZHJpdmUuYywKCSAgZmlsZXMvZmlsZS5jLCBpbmNsdWRlL2Nkcm9tLmgsIGluY2x1ZGUvZmlsZS5oLCBpbmNsdWRlL250ZGRjZHJtLmgsCgkgIGluY2x1ZGUvbnRkZHN0b3IuaCwgaW5jbHVkZS93aW5pb2N0bC5oOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglDaGFuZ2VkIHRoZSBXaW5lIGludGVybmFsIGNkcm9tIGludGVyZmFjZSB0byB0aGUgTlQgbW9kZWwuCgoyMDAyLTAxLTEyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS93aW5yZWcuaCwgaW5jbHVkZS93aW52ZXIuaDoKCVJlbW92ZWQgb2Jzb2xldGUgZGVmaW5pdGlvbnMuCgoJKiBpbmNsdWRlL3dpbnNvY2syLmgsIGluY2x1ZGUvd2lubnQuaDoKCUZpeGVkIHR5cG9zLgoKCSogZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZGxscy9udGRsbC9udGRsbC5zcGVjLAoJICBkbGxzL3VzZXIvdXNlcjMyLnNwZWM6CglVcGRhdGVkIGRlYnVnIGNoYW5uZWxzLgoKCSogc2VydmVyL3B0cmFjZS5jOgoJQ2hlY2sgdW5peF9waWQgYWdhaW4gYWZ0ZXIgYXR0YWNoLgoKCSogc2VydmVyL25hbWVkX3BpcGUuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkIHJlZmNvdW50aW5nIHRvIHRoZSB0aHJlYWQgbWVtYmVyIG9mIHRoZSBwaXBlIHVzZXIuCgoJKiBkb2N1bWVudGF0aW9uL2RlYnVnZ2VyLnNnbWw6CglCaWxsIE1lZGxhbmQgPG1lZGJpMDFAYWNjcGFjLmNvbT4KCUhvdyB0byBzcGVjaWZ5IGEgRExMIGluIGEgZGVidWdnZXIgYnJlYWsgY29tbWFuZC4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCB0aGUgd29kUmVzZXQgaW1wbGVtZW50YXRpb24sIGludGVybmFsIG1lc3NhZ2VzIHByaW9yaXR5LCBmdWxsCglkdXBsZXggY29kZSwgd2FpdCBhbGdvcml0aG0gZm9yIGZlZWRpbmcgdGhlIE9TUyBidWZmZXIuCgoJKiBkZWJ1Z2dlci9oYXNoLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUVuaGFuY2UgZGlzcGxheSBmb3Igc3ltYm9sIHBpY2tpbmcuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBvZmYgYnkgb25lIGVycm9yIGluIFRPT0xCQVJfQWRkU3RyaW5nVy4KCjIwMDItMDEtMTAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2NyeXB0MzIvLmN2c2lnbm9yZSwgZGxscy9jcnlwdDMyL01ha2VmaWxlLmluLAoJICBkbGxzL2NyeXB0MzIvY3J5cHQzMi5zcGVjLCBkbGxzL2NyeXB0MzIvbWFpbi5jLCBjb25maWd1cmUsCgkgIGNvbmZpZ3VyZS5pbjoKCVRyYXZpcyBNaWNoaWVsc2VuIDx0am1pY2hpZWxzZW5AeWFob28uY29tPgoJQWRkZWQgY3J5cHQzMi5kbGwgc3R1Yi4KCgkqIGluY2x1ZGUvd2luY3J5cHQuaCwgaW5jbHVkZS93aW5lcnJvci5oLCBkbGxzL2FkdmFwaTMyL2FkdmFwaTMyLnNwZWMsCgkgIGRsbHMvYWR2YXBpMzIvY3J5cHQuYywgZGxscy9hZHZhcGkzMi9jcnlwdC5oOgoJVHJhdmlzIE1pY2hpZWxzZW4gPHRqbWljaGllbHNlbkB5YWhvby5jb20+CglJbXBsZW1lbnQgYWR2YXBpMzIgcG9ydGlvbiBvZiB0aGUgQ3J5cHRvQVBJLgoKCSogZGxscy93aW5tbS9kcml2ZXIuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRml4IHBvdGVudGlhbCBtZW1vcnkgaXNzdWUuCgoJKiB3aW4zMi9lZGl0bGluZS5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglGaXggc29tZSBiYWQgYmVoYXZpb3Igd2hlbiBzb21lIGxvY2sgc3RhdGVzIChjYXBzbG9jaywgbnVtbG9jay4uLikKCXdlcmUgdHVybmVkIG9uLgoKCSogZGxscy9vbGVhdXQzMi9vbGUyZGlzcC5jOgoJQmlsbCBNZWRsYW5kIDxtZWRiaTAxQGFjY3BhYy5jb20+CglDb21tZW50IG9ubHk7IGVycm9yIGluIE1pY3Jvc29mdCBkb2N1bWVudGF0aW9uLgoKCSogdG9vbHMvd2luZXNoZWxsbGluazoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+Cgl3aGljaCBpcyBtb3JlIHBvcnRhYmxlIHRoYW4gdHlwZSAoRnJlZUJTRCkuCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUZpeCBwcmV2aW91cyBwYXRjaDogdGhlIHdzX3NvY2thZGRyX3Uyd3MgcmV0dXJuIHZhbHVlIHdhcyB3cm9uZy4KCU1ha2Ugd3Nfc29ja2FkZHJfe3dzMnUsdTJ3c30gc3RhdGljLgoKCSogcHJvZ3JhbXMvd2luZXRlc3QvcnVudGVzdCwgZGxscy9NYWtlZGxsLnJ1bGVzLmluLCBkbGxzL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy9NYWtlcHJvZy5ydWxlcy5pbiwgTWFrZS5ydWxlcy5pbiwgTWFrZWZpbGUuaW46CglBZGRlZCBydWxlcyBmb3IgcnVubmluZyB0ZXN0cy4KCjIwMDItMDEtMDkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmM6CglNYXJ0aW4gV2lsY2sgPE1hcnRpbi5XaWxja0BmdWppdHN1LXNpZW1lbnMuY29tPgoJTW92ZWQgdGhlIGZ1bmN0aW9uYWxpdHkgb2YgV1Nfc29ja2V0KCkgdG8gV1NBU29ja2V0QSgpLgoJTWFkZSBXU0FTb2NrZXRBKCkgYWNjb3VudCBmb3IgV1NBX0ZMQUdfT1ZFUkxBUFBFRC4KCgkqIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3NvY2suYywKCSAgc2VydmVyL3RyYWNlLmM6CglNYXJ0aW4gV2lsY2sgPE1hcnRpbi5XaWxja0BmdWppdHN1LXNpZW1lbnMuY29tPgoJQWRkZWQgc3VwcG9ydCBmb3Igc29ja2V0IGZsYWdzLgoKCSogaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLCBzZXJ2ZXIvY29uc29sZS5jLCBzZXJ2ZXIvZGV2aWNlLmMsCgkgIHNlcnZlci9maWxlLmMsIHNlcnZlci9tYXBwaW5nLmMsIHNlcnZlci9uYW1lZF9waXBlLmMsCgkgIHNlcnZlci9vYmplY3QuYywgc2VydmVyL29iamVjdC5oLCBzZXJ2ZXIvcGlwZS5jLAoJICBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvc2VyaWFsLmMsIHNlcnZlci9zb2NrLmMsIHNlcnZlci90cmFjZS5jLAoJICBmaWxlcy9maWxlLmM6CglNYXJ0aW4gV2lsY2sgPE1hcnRpbi5XaWxja0BmdWppdHN1LXNpZW1lbnMuY29tPgoJTW9yZSBnZW5lcmFsIGFwcHJvYWNoIHRvIGZpbGUgZGVzY3JpcHRvciB0eXBlcyBhbmQgZmxhZ3MuCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmM6CglQYXVsIFJ1cGUgPHBydXBlQG5jLnJyLmNvbT4KCVJldHVybiBsZW5ndGggb2YgV1Nfc29ja2FkZHIgc3RydWN0dXJlIGluIHdzX3NvY2thZGRyX3Uyd3MuCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYzoKCUJpbGwgTWVkbGFuZCA8bWVkYmkwMUBhY2NwYWMuY29tPgoJRml4ZWQgR2V0RG9jdW1lbnRhdGlvbiBhIGxpdHRsZS4gIFdoZW4gY2FsbGVkIGZyb20gUmVnaXN0ZXJUeXBlTGliIGl0Cgl3YXMgbGVhdmluZyB0aGUgRG9jIGVudHJ5IHVuaW5pdGlhbGlzZWQsIGxlYWRpbmcgdG8gcGFnZSBmYXVsdCB3aGVuCgltZWFzdXJpbmcgaXQuIEFsc28gZW5zdXJlIGNvcnJlY3QgZnJlZWluZyBvZiByZXNvdXJjZXMgb24gZmFpbHVyZS4KCgkqIHNlcnZlci90aHJlYWQuYzoKCU1hcnRpbiBXaWxjayA8TWFydGluLldpbGNrQGZ1aml0c3Utc2llbWVucy5jb20+CglGaXhlZCBhIGJ1ZyB0aGF0IGNhdXNlZCBBUENzIHRvIGJlICJmb3Jnb3R0ZW4iLgoKCSogZGxscy90dHlkcnYvd25kLmMsIGRsbHMveDExZHJ2L3dpbmRvdy5jLCB3aW5kb3dzL3dpbi5jOgoJUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJTW92ZSBjYWxsaW5nIG9mIENCVCBob29rcyBmcm9tIFdJTl9DcmVhdGVXaW5kb3dFeCgpIHRvIHRoZSBkcml2ZXIuCgoyMDAyLTAxLTA3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogb2JqZWN0cy9mb250LmMsIG9iamVjdHMvZ2Rpb2JqLmMsIG9iamVjdHMvbWV0YWZpbGUuYywKCSAgd2luZG93cy9jdXJzb3JpY29uLmMsIGRsbHMvc2hlbGwzMi9jb250cm9sLmMsIGRsbHMvdXNlci90ZXh0LmMsCgkgIGRsbHMvd2luZWRvcy9kb3Nhc3BpLmMsIGRsbHMvd2luZWRvcy9pbnQzMS5jLAoJICBkbGxzL3dpbmVkb3Mvd2luZWRvcy5zcGVjLCBkbGxzL2dkaS9nZGkuc3BlYywKCSAgZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgaXNzdWVzIGZvdW5kIGJ5IHdpbmFwaV9jaGVjay4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay93aW4xNi9nZGkuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMTYvdXNlci5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9nZGkzMi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9rZXJuZWwzMi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9tc3ZjcnQuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvbnRkbGwuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvc2hlbGwzMi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9zaGx3YXBpLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3R0eWRydi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi91cmxtb24uYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvdXNlcjMyLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3dpbmVkb3MuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvd2luaW5ldC5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfcGFyc2VyLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpLnBtLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2xvY2FsLnBtOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIEFQSSBmaWxlcyB1cGRhdGUKCS0gTWlub3IgYnVnIGZpeGVzCgoJKiBzZXJ2ZXIvZmlsZS5jLCBmaWxlcy9maWxlLmM6CglNYXJ0aW4gV2lsY2sgPE1hcnRpbi5XaWxja0BmdWppdHN1LXNpZW1lbnMuY29tPgoJQWRkIHNlcnZlciBzaWRlIHN1cHBvcnQgZm9yIGFzeW5jIElPIG9uIGZpbGVzLgoJVXNlIHByZWFkL3B3cml0ZSB0byByZWFkL3dyaXRlIGZyb20gdGhlIG9mZnNldCBzcGVjaWZpZWQgaW4gdGhlCglvdmVybGFwcGVkIHN0cnVjdHVyZS4KCgkqIGluY2x1ZGUvY29uZmlnLmguaW4sIGluY2x1ZGUvd2luZS9vYmpfc3RvcmFnZS5oLAoJICBpbmNsdWRlL3dpbmUvcG9ydC5oLCBsaWJyYXJ5L3BvcnQuYywgY29uZmlndXJlLCBjb25maWd1cmUuaW46CglBZGRlZCBjb25maWd1cmUgY2hlY2sgZm9yIHByZWFkL3B3cml0ZS4KCgkqIGZpbGVzL2ZpbGUuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0BzdGFydC5jb20uYXU+CgktIEF0dGVtcHQgd3JpdGUgYmVmb3JlIGdvaW5nIG92ZXJsYXBwZWQgaW4gV3JpdGVmaWxlLgoJLSBGaXggcmV0dXJuIGNvZGVzIGluIFdyaXRlRmlsZUV4LgoKCSogaW5jbHVkZS9maWxlLmgsIHNjaGVkdWxlci9zeW5jaHJvLmMsIGZpbGVzL2ZpbGUuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0BzdGFydC5jb20uYXU+CglJbXBsZW1lbnQgQ2FuY2VsSW8gcHJvcGVybHkuCgoJKiBkbGxzL3VzZXIvY29tbTE2LmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAc3RhcnQuY29tLmF1PgoJLSBEb24ndCB1c2UgZXZlbnQgZmxhZ3Mgd2l0aCBSZWFkRmlsZUV4IGFuZCBXcml0ZUZpbGVFeC4KCS0gVXNlIG92ZXJsYXBwZWQgc3RydWN0dXJlIHdpdGggV3JpdGVGaWxlLCBzaW5jZSBGSUxFX0ZMQUdfT1ZFUkxBUFBFRAoJICBpcyBzcGVjaWZpZWQuCgktIENhbmNlbCBvdmVybGFwcGVkIG9wZXJhdGlvbnMgaW4gQ2xvc2VDb21tLgoKCSogbWVtb3J5L3NlbGVjdG9yLmMsIG1lbW9yeS92aXJ0dWFsLmMsIHNjaGVkdWxlci9jbGllbnQuYywKCSAgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2NoZWR1bGVyL3N5bmNocm8uYywgc2NoZWR1bGVyL3N5c2RlcHMuYywKCSAgaW5jbHVkZS90aHJlYWQuaCwgaW5jbHVkZS93aW5lL2V4Y2VwdGlvbi5oOgoJQWRkZWQgc3VwcG9ydCBmb3IgY2xlYW5pbmcgdXAgdGhlIFRFQiBmcm9tIGluc2lkZSB0aGUgZXhpdGluZyB0aHJlYWQuCgoJKiBkbGxzL250ZGxsL2RlYnVndG9vbHMuYywgc2NoZWR1bGVyL3RocmVhZC5jOgoJQWxsb2NhdGUgZGVidWdfaW5mbyBzdHJ1Y3R1cmUgYXQgdGhlIHNhbWUgdGltZSBhcyB0aGUgVEVCLgoJUmVtb3ZlZCB0aGUgVEVCIGNsZWFudXAgc2VydmljZS4KCgkqIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYywgZGxscy9udGRsbC9zaWduYWxfc3BhcmMuYzoKCUFkZGVkIFNJR05BTF9SZXNldCBmdW5jdGlvbi4KCjIwMDItMDEtMDYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB0b29scy93aW5lZHVtcC9wZS5jOgoJQWRkZWQgc3VwcG9ydCBmb3IgZHVtcGluZyByZXNvdXJjZXMuCgoJKiBkbGxzL3JwY3J0NC9ycGNydDQuc3BlYywgZGxscy9ycGNydDQvcnBjcnQ0X21haW4uYzoKCU1hcmsgRy4gQWRhbXMgPG1nYWRhbXNAc3ltcGF0aWNvLmNhPgoJRml4IFV1aWRDcmVhdGUoKSB0byBub3QgZm9yZ2V0IE1BQyBhZGRyZXNzLgoJUmVtb3ZlIHt9J3MgZnJvbSBVdWlkVG9TdHJpbmdBKCkgb3V0cHV0LgoJQWRkIFV1aWRDcmVhdGVTZXF1ZW50aWFsKCkgZnVuY3Rpb24gZnJvbSBXaW5kb3dzIDIwMDAuCgoJKiBjb25maWd1cmUuaW46CglCZXJuaGFyZCBSb3NlbmtyYWVuemVyIDxiZXJvQHJlZGhhdC5kZT4KCUFkZGVkIG1pc3NpbmcgYnJhY2tldHMgaW4gbmN1cnNlcyBjaGVjay4KCgkqIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sIE1ha2VmaWxlLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCVJlbW92ZWQgb2Jzb2xldGUgZG9zbW9kLgoKCSogZGxscy9rZXJuZWwvbmxzL2RlYS5ubHMsIGRsbHMva2VybmVsL25scy9kZWwubmxzLAoJICBkbGxzL2tlcm5lbC9ubHMvZGV1Lm5scywgZGxscy9rZXJuZWwvbmxzL2VuaS5ubHMsCgkgIGRsbHMva2VybmVsL25scy9lc24ubmxzLCBkbGxzL2tlcm5lbC9ubHMvZXNwLm5scywKCSAgZGxscy9rZXJuZWwvbmxzL2Zpbi5ubHMsIGRsbHMva2VybmVsL25scy9mcmEubmxzLAoJICBkbGxzL2tlcm5lbC9ubHMvZnJiLm5scywgZGxscy9rZXJuZWwvbmxzL2ZybC5ubHMsCgkgIGRsbHMva2VybmVsL25scy9nYWUubmxzLCBkbGxzL2tlcm5lbC9ubHMvZ3JjLm5scywKCSAgZGxscy9rZXJuZWwvbmxzL2l0YS5ubHMsIGRsbHMva2VybmVsL25scy9ubGIubmxzLAoJICBkbGxzL2tlcm5lbC9ubHMvbmxkLm5scywgZGxscy9rZXJuZWwvbmxzL3B0Zy5ubHMsCgkgIGRsbHMva2VybmVsL25scy93YWwubmxzOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglDaGFuZ2UgY3VycmVuY3kgb2YgdGhlIGV1cm9wZWFuIEV1cm8gdXNpbmcgY291bnRyaWVzIHRvIEV1cm8uCgoJKiBMSUNFTlNFOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIGNvcHlyaWdodCBkYXRlLgoKCSogZGxscy93aW5lZG9zL2Rvc3ZtLmMsIGRsbHMvd2luZWRvcy9kb3N2bS5oLCBkbGxzL3dpbmVkb3MvbW9kdWxlLmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCURPUyBzdXBwb3J0IHJlc3RydWN0dXJlLiBUaGUgRE9TIHZpcnR1YWwgbWFjaGluZSBpcyBub3cgYSBzZXQgb2YKCXRocmVhZHMgcnVubmluZyB3aXRoaW4gV2luZSdzIG93biBhZGRyZXNzIHNwYWNlLCBvYnNvbGV0aW5nIHRoZSBvbGQKCWRvc21vZCBtb2R1bGUuCgoyMDAyLTAxLTA0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jLCBpbmNsdWRlL3RocmVhZC5oOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglGaXhlZCB2bTg2X2VudGVyIHJhY2UgY29uZGl0aW9ucy4KCgkqIGRsbHMvY29tY3RsMzIvY29tYm9leC5jLCBkbGxzL2NvbWN0bDMyL3JlYmFyLmMsCgkgIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJU2FuZGVyIHZhbiBMZWV1d2VuIDxzYW5kZXJ2bEB4czRhbGwubmw+CglOZXZlciBkZWxldGUgdGhlIGZvbnQgb2JqZWN0IHJlY2VpdmVkIGJ5IFdNX1NFVEZPTlQuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2x0aXBzLmM6CglTYW5kZXIgdmFuIExlZXV3ZW4gPHNhbmRlcnZsQHhzNGFsbC5ubD4KCUZpeGVkIGNhbGxzIHdpdGggd3JvbmcgcG9pbnRlcjogQ09NQ1RMMzJfRnJlZSgmbHB0dHNpKSBzaG91bGQgYmUKCUNPTUNUTDMyX0ZyZWUobHB0dHNpKS4KCgkqIGRsbHMvdXNlci90ZXh0LmM6CglTYW5kZXIgdmFuIExlZXV3ZW4gPHNhbmRlcnZsQHhzNGFsbC5ubD4KCUZpeGVkIERDIGxlYWsuCgoJKiBjb250cm9scy9idXR0b24uYzoKCVNhbmRlciB2YW4gTGVldXdlbiA8c2FuZGVydmxAeHM0YWxsLm5sPgoJQ2hlY2ssIFJhZGlvICYgM1N0YXRlIGJ1dHRvbnMgc2VuZCBXTV9DVExDT0xPUlNUQVRJQyBpbnN0ZWFkIG9mCglXTV9DVExDT0xPUkJUTi4KCgkqIGRvY3VtZW50YXRpb24vY29tcGlsaW5nLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vaW5zdGFsbGF0aW9uLXVuZC1rb25maWd1cmF0aW9uLmdlcm1hbiwKCSAgZG9jdW1lbnRhdGlvbi9wb3J0aW5nLnNnbWwsIFJFQURNRToKCVJlbW92ZWQgcmVmZXJlbmNlcyB0byB4cG0gcGFja2FnZXMuCgoJKiBpbmNsdWRlL2NvbmZpZy5oLmluLCB0b29scy93aW5laW5zdGFsbCwgY29uZmlndXJlLCBjb25maWd1cmUuaW46CglXZSBubyBsb25nZXIgbmVlZCBsaWJYcG0uCgoJKiB0c3gxMS9NYWtlZmlsZS5pbiwgdHN4MTEvWDExX2NhbGxzLCB0c3gxMS90c194cG0uYywKCSAgaW5jbHVkZS90c194cG0uaCwgdG9vbHMvbWFrZV9YMTF3cmFwcGVyczoKCVdlIG5vIGxvbmdlciBuZWVkIHRoZSB4cG0gd3JhcHBlcnMuCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmg6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAc3RhcnQuY29tLmF1PgoJQWRkIGRlZmluZSBmb3IgdW5kb2N1bWVudGVkIHN0YXR1cyBiYXIgbWVzc2FnZSBTQl9TRVRCT1JERVJTLgoKCSogaW5jbHVkZS9pbWFnZWhscC5oOgoJQmlsbCBNZWRsYW5kIDxtZWRiaTAxQGFjY3BhYy5jb20+CglEZWZpbmUgTFBTVEFDS0ZSQU1FIHRvby4KCgkqIGluY2x1ZGUvd2ludXNlci5oLCB3aW5kb3dzL3NweS5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBzb21lIG5ldyBtZXNzYWdlcyB0byB0aGUgc3B5IGFuZCB3aW51c2VyLmguCgoJKiBpbmNsdWRlL2JpdG1hcHMvb2JtX2Nsb3NlLCBpbmNsdWRlL2JpdG1hcHMvb2JtX2Nsb3NlXzk1LAoJICBpbmNsdWRlL2JpdG1hcHMvb2JtX2Nsb3NlZF85NSwgaW5jbHVkZS9iaXRtYXBzL29ibV9yZWR1Y2UsCgkgIGluY2x1ZGUvYml0bWFwcy9vYm1fcmVkdWNlXzk1LCBpbmNsdWRlL2JpdG1hcHMvb2JtX3JlZHVjZWQsCgkgIGluY2x1ZGUvYml0bWFwcy9vYm1fcmVkdWNlZF85NSwgaW5jbHVkZS9iaXRtYXBzL29ibV9yZXN0b3JlLAoJICBpbmNsdWRlL2JpdG1hcHMvb2JtX3Jlc3RvcmVfOTUsIGluY2x1ZGUvYml0bWFwcy9vYm1fcmVzdG9yZWQsCgkgIGluY2x1ZGUvYml0bWFwcy9vYm1fcmVzdG9yZWRfOTUsIGluY2x1ZGUvYml0bWFwcy9vYm1fem9vbSwKCSAgaW5jbHVkZS9iaXRtYXBzL29ibV96b29tXzk1LCBpbmNsdWRlL2JpdG1hcHMvb2JtX3pvb21kLAoJICBpbmNsdWRlL2JpdG1hcHMvb2JtX3pvb21kXzk1LCBpbmNsdWRlL2dkaS5oLCBpbmNsdWRlL3VzZXIuaCwKCSAgaW5jbHVkZS94MTFkcnYuaCwgZGxscy94MTFkcnYveDExZHJ2LnNwZWMsCgkgIGdyYXBoaWNzL3gxMWRydi9NYWtlZmlsZS5pbiwgZ3JhcGhpY3MveDExZHJ2L2luaXQuYywKCSAgZ3JhcGhpY3MveDExZHJ2L29lbWJpdG1hcC5jLCBkbGxzL3VzZXIvdXNlcl9tYWluLmMsCgkgIGRsbHMvdHR5ZHJ2L3R0eWRydi5zcGVjLCBkbGxzL3R0eWRydi91c2VyLmM6CglSZW1vdmVkIExvYWRPRU1SZXNvdXJjZSBmcm9tIFVTRVIgZHJpdmVyLgoKCSogZGxscy9udGRsbC9maWxlLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJUHJpbnQgRklYTUUoKSBmb3Igbm90IGltcGxlbWVudGVkIE50UXVlcnlWb2x1bWVJbmZvcm1hdGlvbkZpbGUuCgoJKiBmaWxlcy9wcm9maWxlLmM6IE1laG1ldCBZYXNhciA8bXlhc2FyQGZyZWUuZnI+CglEbyBub3Qgc2F2ZSBlbXB0eSBzZWN0aW9ucyBuYW1lcy4KCgkqIGRsbHMvY29tbWRsZy9jb2xvcmRsZy5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZGltaUBjcy50b3JvbnRvLmVkdT4KCVJlbW92ZSBhIGNhbGwgdG8gSEVBUF9zdHJkdXBBdG9XIGluIHRoZSBDb2xvciBkaWFsb2cuCgoJKiBncmFwaGljcy94MTFkcnYvZGliLmM6CglHYXZyaWVsIFN0YXRlIDxnYXZAdHJhbnNnYW1pbmcuY29tPgoJU3BlZWQgdXAgdGhlIEdldEltYWdlQml0cyBjYXNlIHdoZXJlIHdlIGhhdmUgYW4gWFNobSBpbWFnZS4KCjIwMDItMDEtMDMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL2N1cnNvcmljb24uYywgd2luZG93cy9tZGkuYywgd2luZG93cy9ub25jbGllbnQuYywKCSAgY29udHJvbHMvbWVudS5jLCBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9iaXRtYXBzLnJjOgoJVXNlIERyYXdGcmFtZUNvbnRyb2wgaW5zdGVhZCBvZiBiaXRtYXBzIGluIGNlcnRhaW4gY2FzZXMuCglNb3ZlZCByZW1haW5pbmcgT0VNIGJpdG1hcHMgdG8gdXNlcjMyIHJlc291cmNlcy4KCgkqIGRsbHMvb2xlMzIvb2xlMnN0dWJzLmMsIGRsbHMvb2xlMzIvY29tcG9iai5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglJbXBsZW1lbnRlZCBDb1RyZWF0QXNDbGFzcywgc2ltcGxpZmllZCBPbGVTZXRBdXRvQ29udmVydC4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglIYW5kbGUgdGhlIGxwRGlyZWN0b3J5IGZpZWxkIG9mIHRoZSBMUFNIRUxMRVhFQ1VURUlORk8uCgoyMDAyLTAxLTAyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS9maWxlLmgsIHNjaGVkdWxlci9zeW5jaHJvLmM6CglGaXhlZCBjaGVja19hc3luY19saXN0IGNhbGxpbmcgY29udmVudGlvbi4KCgkqIGdyYXBoaWNzL3gxMWRydi9vZW1iaXRtYXAuYywgaW5jbHVkZS9iaXRtYXBzL29ibV9idG5jb3JuZXJzLAoJICBpbmNsdWRlL2JpdG1hcHMvb2JtX2J0c2l6ZSwgaW5jbHVkZS9iaXRtYXBzL29ibV9jaGVjaywKCSAgaW5jbHVkZS9iaXRtYXBzL29ibV9jaGVja2JveGVzLCBpbmNsdWRlL2JpdG1hcHMvb2JtX2NvbWJvLAoJICBpbmNsdWRlL2JpdG1hcHMvb2JtX2RuYXJyb3csIGluY2x1ZGUvYml0bWFwcy9vYm1fZG5hcnJvd2QsCgkgIGluY2x1ZGUvYml0bWFwcy9vYm1fZG5hcnJvd2ksIGluY2x1ZGUvYml0bWFwcy9vYm1fbGZhcnJvdywKCSAgaW5jbHVkZS9iaXRtYXBzL29ibV9sZmFycm93ZCwgaW5jbHVkZS9iaXRtYXBzL29ibV9sZmFycm93aSwKCSAgaW5jbHVkZS9iaXRtYXBzL29ibV9tbmFycm93LCBpbmNsdWRlL2JpdG1hcHMvb2JtX29sZF9jbG9zZSwKCSAgaW5jbHVkZS9iaXRtYXBzL29ibV9vbGRfZG5hcnJvdywgaW5jbHVkZS9iaXRtYXBzL29ibV9vbGRfbGZhcnJvdywKCSAgaW5jbHVkZS9iaXRtYXBzL29ibV9vbGRfcmVkdWNlLCBpbmNsdWRlL2JpdG1hcHMvb2JtX29sZF9yZXN0b3JlLAoJICBpbmNsdWRlL2JpdG1hcHMvb2JtX29sZF9yZ2Fycm93LCBpbmNsdWRlL2JpdG1hcHMvb2JtX29sZF91cGFycm93LAoJICBpbmNsdWRlL2JpdG1hcHMvb2JtX29sZF96b29tLCBpbmNsdWRlL2JpdG1hcHMvb2JtX3JnYXJyb3csCgkgIGluY2x1ZGUvYml0bWFwcy9vYm1fcmdhcnJvd2QsIGluY2x1ZGUvYml0bWFwcy9vYm1fcmdhcnJvd2ksCgkgIGluY2x1ZGUvYml0bWFwcy9vYm1fc2l6ZSwgaW5jbHVkZS9iaXRtYXBzL29ibV90cnR5cGUsCgkgIGluY2x1ZGUvYml0bWFwcy9vYm1fdXBhcnJvdywgaW5jbHVkZS9iaXRtYXBzL29ibV91cGFycm93ZCwKCSAgaW5jbHVkZS9iaXRtYXBzL29ibV91cGFycm93aSwgd2luZG93cy9jdXJzb3JpY29uLmMsCgkgIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyLnJjLAoJICBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9iaXRtYXBzLnJjOgoJTW92ZWQgdGhlIE9FTSBiaXRtYXBzIHRoYXQgZG9uJ3QgZGVwZW5kIG9uIHRoZSBXaW5lIGxvb2sgaW50byB0aGUKCXVzZXIzMiByZXNvdXJjZXMuCgoJKiBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglGdXJ0aGVyIHVuaWZpZWQgSEFMIGFuZCBIRUwgbWl4aW5nLCBhbmQgYWRkZWQgc29tZSBtb3JlIGludGVsbGlnZW5jZQoJdG8gcHJlYnVmZmVyaW5nLCB3aXRoIHNvbWUgYmFzaWMgcHJlYnVmZmVyIGNhbmNlbGluZyBzdXBwb3J0LCB0byBnZXQKCXJpZCBvZiBtaXhpbmcgZGVsYXlzIGluIEhhbGYtTGlmZS4gVXNlZCBhIHZlcnkgc21hbGwgd2F2ZW91dCBidWZmZXIKCXF1ZXVlIGluIEhFTCBtb2RlLCB1c2luZyBhIGNhbGxiYWNrIHRvIHF1ZXVlIGFkZGl0aW9uYWwgYnVmZmVycywgdG8KCWdldCByaWQgb2YgcGxheWJhY2sgZGVsYXlzIGluIEhhbGYtTGlmZS4gRml4ZWQgYSBjb3VwbGUgb2YgYnVncy4KCgkqIHNlcnZlci9jb25zb2xlLmMsIHByb2dyYW1zL3dpbmVjb25zb2xlL2RpYWxvZy5jLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS9yZWdpc3RyeS5jLCBwcm9ncmFtcy93aW5lY29uc29sZS91c2VyLmMsCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25zb2xlLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGNvbG9yIGRlZmluaXRpb24gKGJnIGFuZCBmZyB3ZXJlIHN3YXBwZWQpLgoJRml4ZWQgc29tZSBpbml0aWFsaXNhdGlvbiBpc3N1ZXMuCglGaXhlZCBleGl0IGNvbmRpdGlvbiB3aGVuIG5vdGhpbmcgd2FzIGFsbG9jYXRlZC4KCgkqIGRsbHMvb2xlYXV0MzIvc2FmZWFycmF5LmM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUlmIFNhZmVBcnJheUdldEVsZW1lbnQgaXMgY2FsbGVkIG9uIGEgdmFyaWFudCBhcnJheSwgaW5pdGlhbGl6ZQoJZGVzdGluYXRpb24gdmFyaWFudCBiZWZvcmUgY29weWluZyB0aGUgYXJyYXkgZWxlbWVudCB0byBpdCwgc29tZSBiYWRseQoJYmVoYXZlZCBhcHBzIGRvbid0IHNlZW0gdG8gZG8gaXQgdGhlbXNlbHZlcy4KCgkqIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglGaXhlZCBhIGxvb2tzLWxpa2Utbm9ib2R5LWV2ZXItdGVzdGVkLXRoaXMtZnVuY3Rpb24ga2luZCBvZiBidWcgaW4KCVZhcmlhbnRDb3B5SW5kLgoKCSogZGxscy9udGRsbC9leGNlcHRpb24uYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJTWFkZSB0aGUgb3V0cHV0IG9mIC0tZGVidWdtc2cgK3NlaCBhIGJpdCBtb3JlIHZlcmJvc2UuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkaW1pQGNzLnRvcm9udG8uZWR1PgoJTWFrZSBEcmF3U3RhdHVzVGV4dCBVbmljb2RlIHJlYWR5LiBHZXQgcmlkIG9mIGEgSEVBUF9zdHJkdXAgY2FsbC4KCgkqIGRsbHMvb3BlbmdsMzIvbWFrZV9vcGVuZ2wsIGRsbHMvb3BlbmdsMzIvb3BlbmdsX2V4dC5jLAoJICBkbGxzL29wZW5nbDMyL29wZW5nbF9leHQuaCwgZGxscy9vcGVuZ2wzMi93Z2wuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIGJldHRlciBzdXBwb3J0IGZvciBleHRlbnNpb25zIGZ1bmN0aW9ucyB0aGF0IGRvIG5vdCBoYXZlIHRoZSBzYW1lCgkgIG5hbWUgaW4gd2luZG93cyBhbmQgaW4gVW5peC4KCS0gc3VwcG9ydCB0aGUgTlZfdmVydGV4X2FycmF5X3JhbmdlIGV4dGVuc2lvbi4KCjIwMDItMDEtMDEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb25zb2xlL3h0ZXJtLmMsIGRsbHMvd2luZWRvcy9NYWtlZmlsZS5pbiwgaW5jbHVkZS93aW5lL3BvcnQuaCwKCSAgbGlicmFyeS9wb3J0LmMsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJTGluayB3aXRoIGxpYnV0aWwgb25seSB3aGVyZSBuZWVkZWQuCgoJKiBzY2hlZHVsZXIvc3luY2hyby5jLCBmaWxlcy9maWxlLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAc3RhcnQuY29tLmF1PlIKCVNldCBhbiBvdmVybGFwcGVkJ3MgaEV2ZW50IGZvciBSZWFkRmlsZS9Xcml0ZUZpbGUgaW4gYW4gb3ZlcmxhcHBlZAoJY29tcGxldGlvbiBmdW5jdGlvbiwgbm90IGluIFJlYWRGaWxlRXggb3IgV3JpdGVGaWxlRXguCgoJKiB3aW5kb3dzL2N1cnNvcmljb24uYywgd2luZG93cy9tZGkuYywgd2luZG93cy9ub25jbGllbnQuYywKCSAgd2luZG93cy91c2VyLmMsIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3Mvd2luaGVscC5jLAoJICBvYmplY3RzL21ldGFmaWxlLmMsIG9sZS9vbGUybmxzLmMsIHdpbjMyL2ZpbGUuYywgd2luMzIvbmV3Zm5zLmMsCgkgIGdyYXBoaWNzL21ldGFmaWxlZHJ2L2luaXQuYywgbG9hZGVyL3BlX3Jlc291cmNlLmMsIG1pc2MvcmVnaXN0cnkuYywKCSAgZmlsZXMvY2hhbmdlLmMsIGdyYXBoaWNzL2VuaG1ldGFmaWxlZHJ2L2luaXQuYywKCSAgZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlYXV0MzIvaGFzaC5jLCBkbGxzL29sZWF1dDMyL29sZWZvbnQuYywKCSAgZGxscy91c2VyL2V4dGljb24uYywgZGxscy91c2VyL3Jlc291cmNlLmMsIGRsbHMvZGRyYXcvbWFpbi5jLAoJICBkbGxzL21wci93bmV0LmM6CglSZW1vdmVkIHNvbWUgb2YgdGhlIGNhbGxzIHRvIEhFQVBfc3RyZHVwKiBmdW5jdGlvbnMuCgoJKiBwcm9ncmFtcy93aW5lY29uc29sZS9kaWFsb2cuYywgcHJvZ3JhbXMvd2luZWNvbnNvbGUvdXNlci5jOgoJSmFtZXMgSnVyYW4gPGphbWVzanVyYW5AYWx1bW5pLnBzdS5lZHU+CglJbmNsdWRlIDxzdGRsaWIuaD4gdG8gZ2V0IHByb3RvdHlwZSBmb3IgYWJzKCkgZnVuY3Rpb24uCgoJKiBkbGxzL29sZTMyL3N0Z19zdHJlYW0uYywgZGxscy9vbGUzMi9zdG9yYWdlMzIuYywKCSAgZGxscy9vbGUzMi9zdG9yYWdlMzIuaDoKCUp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCU5hbWUgb2YgdGhlIHN0cnVjdHVyZWQgc3RvcmFnZSBmaWxlIHJvb3Qgbm9kZSBpcyBwYXRoIG9mIHRoZSBmaWxlLCBub3QKCXRoZSBuYW1lIG9mIHRoZSByb290IG5vZGUgc3RvcmVkIGluIHRoZSBmaWxlLgoJV2hlbiByZWFkaW5nIHN0cmVhbXMgc3RvcmVkIGludG8gc3RydWN0dXJlZCBzdG9yYWdlIGZpbGVzLCBFT0YgaXMgbm90CglzdXBwb3NlZCB0byBjYXVzZSBhbiBlcnJvciBpZiBhdCBsZWFzdCBvbmUgYnl0ZSBjYW4gYmUgcmV0dXJuZWQuCgoyMDAxLTEyLTMxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29uZmlndXJlLmluLCBsaWJyYXJ5L01ha2VmaWxlLmluLCBjb25maWd1cmU6CglMaW5rIHdpdGggbGliZGwgb25seSB3aGVyZSBuZWVkZWQuCgoJKiBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvdHJhY2UuYywgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oOgoJRml4ZWQgc3RyaW5nIHR5cGUgaW4gbmFtZWQgcGlwZSByZXF1ZXN0cy4KCgkqIG1pc2MvY2Ryb20uYzoKCUNocmlzIEdyZWVuIDxjaHJpc19lX2dyZWVuQHlhaG9vLmNvbT4KCUdldCB0aGUgY29ycmVjdCBsYWJlbCBvbiBpc285NjYwIG1peGVkLW1vZGUgY2RzLgoKCSogZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYzoKCU1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuZGU+CglGaXhlZCBtZW1vcnkgbGVhay4KCVJlbW92ZWQgcmVkdW5kYW50IEltYWdlTGlzdF9EcmFnU2hvd05vbG9jayhGQUxTRSkgY2FsbC4KCgkqIHByb2dyYW1zL3dpbmVjb25zb2xlL3VzZXIuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJU3dhcCBmZy9iZyBjb2xvciB0byBiZSBjb3JyZWN0LgoKMjAwMS0xMi0yNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvdmVyc2lvbi5oLCBBTk5PVU5DRSwgQ2hhbmdlTG9nOgoJUmVsZWFzZSAyMDAxMTIyNi4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KMjAwMS0xMi0yNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3Mvc3lzcGFyYW1zLmMsIGluY2x1ZGUvd2ludXNlci5oOgoJQW5kcml5IFBhbGFtYXJjaHVrIDxhcGEzYUB5YWhvby5jb20+CglJbXBsZW1lbnRlZCBiYXNpYyBoYW5kbGluZyBvZiBhc3Nlc3NpYmlsaXR5IGFjdGlvbnMuCgoJKiBkbGxzL2NvbWN0bDMyL2FuaW1hdGUuYzoKCU1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuZGU+CglJZiB0aGUgZmNjSGFuZGxlciBpcyBtbWlvRk9VUkNDKDAsIDAsIDAsIDApIHRoZSBBVkkgaXMgYWxzbwoJdW5jb21wcmVzc2VkLgoJaW5mb1B0ci0+aFduZCB3YXNuJ3QgdXBkYXRlZCBpbiBBTklNQVRFX09wZW5BLgoKCSogc2VydmVyL3NlbGVjdC5jOgoJU2F2ZSB0aGUgcmVnaXN0cnkgYmVmb3JlIGV4aXRpbmcgb24gYSBTSUdURVJNLgoKCSogb2JqZWN0cy9jbGlwcGluZy5jOgoJTWFrZSBzdXJlIHRoZSBEQyB2aXNpYmxlIHJlZ2lvbiBpcyB1cGRhdGVkIGluIEdldENsaXBCb3guCgoJKiBkbGxzL3dpbmVkb3MvTWFrZWZpbGUuaW4sIGluY2x1ZGUvY29uZmlnLmguaW4sIG1zZG9zL2ludDIxLmMsCgkgIGNvbmZpZ3VyZS5pbiwgZGxscy90dHlkcnYvTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZToKCUxpbmsgdG8gdGhlIGN1cnNlcyBsaWJyYXJ5IG9ubHkgZm9yIHRoZSBkbGxzIHRoYXQgbmVlZCBpdC4KCgkqIGluY2x1ZGUvaGVhcC5oLCBkbGxzL29sZWF1dDMyL29sZTJkaXNwLmg6CglSZW1vdmVkIHRoZSBTRUdQVFJfKiBtYWNyb3MuCgoJKiB0b29scy93cmMvUkVBRE1FLndyYywgdG9vbHMvd3JjL3BhcnNlci55LCBkbGxzL2RkcmF3L2RzdXJmYWNlL2RpYi5jLAoJICBkb2N1bWVudGF0aW9uL3JlZ2lzdHJ5LnNnbWwsIFJFQURNRSwgY29uZmlndXJlLCBjb25maWd1cmUuaW46CglBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CglEb2N1bWVudGF0aW9uIHVwZGF0ZS4KCgkqIG1lbW9yeS9oZWFwLmM6CglGaXhlZCBidWcgaW4gc3lzdGVtIGhlYXAgY3JlYXRpb24gd2hlbiBpdCBhbHJlYWR5IGV4aXN0cy4KCgkqIHByb2dyYW1zL2NvbnRyb2wvY29udHJvbC5jOgoJQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJVXBkYXRlZCB0byBub3QgcmVseSBvbiBydW5kbGwzMi5leGUgYW55IG1vcmUuCgoJKiB3aW5kb3dzL3N5c2NvbG9yLmMsIGNvbnRyb2xzL21lbnUuYywgZGxscy9zaGVsbDMyL2NvbnRyb2wuYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYywgZGxscy91c2VyL3VzZXIzMi5zcGVjOgoJQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJRml4ZWQsIGFkZGVkIG9yIGltcGxlbWVudGVkIHN0dWJzOgoJLSBEcmF3TWVudUJhclRlbXAoKTogY29ycmVjdGVkIHBhcmFtZXRlciBjb3VudC4KCS0gQ2FsbENQTEVudHJ5MTYoKTogc3R1Yi4KCS0gU2V0U3lzQ29sb3JzVGVtcCgpOiBmdWxseSBpbXBsZW1lbnRlZCAoaG9wZWZ1bGx5KSB0aGlzIHVuZG9jdW1lbnRlZAoJICBmdW5jdGlvbi4KCgkqIGRsbHMveDExZHJ2L21vdXNlLmM6CglEdWFuZSBDbGFyayA8ZGNsYXJrQGFrYW1haWwuY29tPgoJQWRkZWQgY29sb3IgY3Vyc29yIHN1cHBvcnQuCgoJKiB3aW5kb3dzL2N1cnNvcmljb24uYzoKCUR1YW5lIENsYXJrIDxkY2xhcmtAYWthbWFpbC5jb20+CglEZXN0cm95aW5nIGN1cnNvciBpcyBub3QgbmVjZXNzYXJpbHkgYW4gZXJyb3IuCgoJKiB3aW5kb3dzL3dpbnByb2MuYzoKCVVzZSBNYXBMUy9Vbk1hcExTIGluc3RlYWQgb2YgU0VHUFRSXyogbWFjcm9zLgoKCSogaW5jbHVkZS93aW5wcm9jLmgsIHdpbmRvd3MvaG9vay5jOgoJUmVzdHJ1Y3R1cmVkIGhvb2sgbWFwcGluZyBmdW5jdGlvbnMgdG8gYXZvaWQgbW9zdCBtZW1vcnkKCWFsbG9jYXRpb25zLiBHb3QgcmlkIG9mIFNFR1BUUl8qIG1hY3Jvcy4KCgkqIGRsbHMvd2luaW5ldC9mdHAuYywgaW5jbHVkZS93aW5iYXNlLmgsIGRsbHMvbXN2Y3J0L2ZpbGUuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglGaXggZGVmaW5pdGlvbiBvZiBCWV9IQU5ETEVfRklMRV9JTkZPUk1BVElPTiBzdHJ1Y3R1cmUuCgoJKiBkbGxzL2NvbW1kbGcvY2RsZ19Tdi5yYzoKCUpvaGFuIERhaGxpbiA8amRhaGxpbkB0ZWxpYS5jb20+CglVcGRhdGVkIFN3ZWRpc2ggdHJhbnNsYXRpb24uCgoJKiBkbGxzL3VzZXIvbHN0ci5jLCBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZS5jLAoJICB3aW4zMi9jb25zb2xlLmMsIGRsbHMva2VybmVsL2Zvcm1hdF9tc2cuYzoKCU1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuZGU+CglDaGVjayB0aGUgcmV0dXJuIHZhbHVlIG9mICpzbnByaW50ZiBmb3IgQzk5IHN0eWxlIG92ZXJmbG93IHJlcG9ydGluZy4KCgkqIGluY2x1ZGUvdXNlci5oLCBkbGxzL3VzZXIvY29tbTE2LmMsIGRsbHMvdXNlci9tc2cxNi5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQHN0YXJ0LmNvbS5hdT4KCVVzZSBhbGVydGFibGUgd2FpdHMgaW4gUGVla01lc3NhZ2UxNiBhbmQgR2V0TWVzc2FnZTE2IHNvIHdlIGNhbgoJcHJvY2VzcyBBUENzIGZvciAxNmJpdCBjb21tcy4KCgkqIGluY2x1ZGUvbXNkb3MuaDoKCUFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCUdvdCByaWQgb2YgV0lORV9QQUNLRUQuCgoyMDAxLTEyLTI0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9zaGx3YXBpL29yZGluYWwuYywgZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglJbXBsZW1lbnQvZG9jdW1lbnQgb3JkaW5hbHMgNy0xMS4KCgkqIGRsbHMvZ2RpL2ZyZWV0eXBlLmMsIGRsbHMvd2luZXBzL3RydWV0eXBlLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUluY2x1ZGUgZnRzbmFtZXMuaCBvciBmdG5hbWVzLmgsIG5vdCBib3RoLgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jLCBkbGxzL3VzZXIvY29tbTE2LmMsIGRsbHMvd2lubW0vZHJpdmVyLmMsCgkgIGRsbHMvd2lubW0vbG9sdmxkcnYuYywgZGxscy93aW5tbS9tY2kuYywgZGxscy93aW5tbS9tbWlvLmMsCgkgIGRsbHMvd2lubW0vbW1zeXN0ZW0uYywgZGxscy9vbGUzMi9pZnMuYywgZGxscy9vbGUzMi9zdG9yYWdlLmM6CglVc2UgTWFwTFMvVW5NYXBMUyBpbnN0ZWFkIG9mIFNFR1BUUl8qIG1hY3Jvcy4KCgkqIGRsbHMvY29tY3RsMzIvdGFiLmM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBuZXJpbS5uZXQ+CglGb3J3YXJkIHRhYiBub3RpZmljYXRpb25zIHRvIHRoZSBwYXJlbnQuCgoJKiBkbGxzL3VybG1vbi91bW9uLmMsIGRsbHMvdXJsbW9uL3VybG1vbi5zcGVjLAoJICBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYywgZGxscy93aW5pbmV0L3dpbmluZXQuc3BlYywKCSAgZGxscy9zaGx3YXBpL3N0cmluZy5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAbmVyaW0ubmV0PgoJVHJpdmlhbCBmaXhlcyBmb3Igc2hsd2FwaSBhbmQgSW50ZXJuZXQgcm91dGluZXMuCgoJKiBkZWJ1Z2dlci93aW5lZGJnLmM6CglCaWxsIE1lZGxhbmQgPG1lZGJpMDFAYWNjcGFjLmNvbT4KCUZpeGVkIHZzbnByaW50ZiByZXR1cm4gdmFsdWUgY2hlY2suCgoyMDAxLTEyLTIxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS9zeXNtZXRyaWNzLmgsIHdpbmRvd3Mvc3lzbWV0cmljcy5jLCB3aW5kb3dzL3N5c3BhcmFtcy5jOgoJQW5kcml5IFBhbGFtYXJjaHVrIDxhcGEzYUB5YWhvby5jb20+CglJbXBsZW1lbnRlZCBwcm9jZXNzaW5nIGZvciBhY3Rpb25zIFNQSV9TRVRNT1VTRUJVVFRPTlNXQVAsCglTUElfU0VURkFTVFRBU0tTV0lUQ0gsIFNQSV9TRVREUkFHRlVMTFdJTkRPV1MsIFNQSV9TRVRXT1JLQVJFQS4KCgkqIGRlYnVnZ2VyL3N0YWJzLmMsIGRlYnVnZ2VyL3R5cGVzLmMsIGRlYnVnZ2VyL3dpbmVkYmcuYywKCSAgZGVidWdnZXIvYnJlYWsuYywgZGVidWdnZXIvZGJnLnksIGRlYnVnZ2VyL2RlYnVnZ2VyLmgsCgkgIGRlYnVnZ2VyL2V4cHIuYywgZGVidWdnZXIvaW5mby5jLCBkZWJ1Z2dlci9pbnR2YXIuaCwKCSAgZGVidWdnZXIvbWVtb3J5LmMsIGRlYnVnZ2VyL21zYy5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBzdGFicyBwYXJzaW5nIGZvciBHQ0MgMy4wIChkZWZhdWx0IHR5cGVzKS4KCUFkZGVkIGJvb2xlYW4gdHlwZSBzdXBwb3J0LgoJU2ltcGxpZmllZCBpbnRlcm5hbCB0eXBlcyBoYW5kbGluZy4KCgkqIHdpbjMyL2NvbnNvbGUuYywgd2luMzIvZWRpdGxpbmUuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgYnVmZmVyIGxlbmd0aCBpbiBoaXN0b3J5IG1hbmlwdWxhdGlvbi4KCVdyaXRpbmcgbmV3IGNoYXJzIG11c3QgYmUgZG9uZSB3aXRoIGRlZmF1bHQgYXR0cmlidXRlIChub3QgY2VsbAoJY3VycmVudCBhdHRyaWJ1dGUpLgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIGZ1bGwtZHVwbGV4IGNhcGFiaWxpdHkuCglBZGRlZCBtaXNzaW5nIGluaXQgZm9yIHdhdmUtaW4uCglGaXhlZCBwYXVzZSBiZWhhdmlvciBpbiB3YXZlLW91dC4KCUFkZGVkIG1lc3NhZ2UtcmluZyBkZWxldGlvbi4KCUFkZGVkIGV4cGVyaW1lbnRhbCBmdWxsLWR1cGxleCBjYXBhYmlsaXR5LgoKCSogZGxscy93aW5tbS9tbWlvLmMsIGRsbHMvd2lubW0vd2luZW1tLmg6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGFub3RoZXIgYnVuY2ggb2YgYnVncyAobWFpbmx5IGxpbmtlZCB0byBvcGVyYXRpb25zIHdoZXJlIGZpbGUKCXBvaW50ZXIgd2FzIHBhc3QgdGhlIGVuZCBvZiBmaWxlKS4KCgkqIGRsbHMvbXN2Y3J0L2NwcC5jLCBkbGxzL21zdmNydC9leGNlcHQuYywgZGxscy9tc3ZjcnQvaGVhcC5jLAoJICBkbGxzL21zdmNydC9tYWluLmMsIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglBZGQgUlRUSSBzdXBwb3J0LgoJRml4IHdoYXRfZXhjZXB0aW9uIHByb3RvdHlwZS4KCUZpeCBuZXdfaGFuZGxlcl9mdW5jIHByb3RvdHlwZS4KCUFkZCBzZXRfbmV3X2hhbmRsZXIsIF9jYWxsbmV3aCwgX2hlYXBhZGQuCglBZGQgc3R1YnMgZm9yIF9fdW5ETmFtZSBhbmQgX191bkROYW1lRXguCglBZGRlZCBhIHNlbWktc3R1YiBmb3IgX19DeHhGcmFtZUhhbmRsZXIuCgoJKiBpbmNsdWRlL21zdmNydC9zZXRqbXAuaCwgaW5jbHVkZS9NYWtlZmlsZS5pbiwKCSAgZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWMsIGRsbHMvbXN2Y3J0L2V4Y2VwdC5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglBbGV4YW5kcmUgSnVsbGlhcmQgPGp1bGxpYXJkQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCBzZXRqbXAvc2V0am1wMyBhbmQgbG9uZ2ptcC4KCgkqIGdyYXBoaWNzL3gxMWRydi9wYWxldHRlLmM6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJSGFuZGxlIG1vcmUgdGhhbiA4IGJpdHMgcGVyIGNvbG9yIGNvbXBvbmVudC4KCgkqIGdyYXBoaWNzL3gxMWRydi9kaWIuYzoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglNZXJnZWQgdGhlIGhhbmRsaW5nIG9mIDE1IGFuZCAxNiBiaXRzIFggc2VydmVyIGRlcHRocy4KCVVzZSB0aGUgbWFza3MgdG8gZGlzdGluZ3Vpc2ggYmV0d2VlbiAxNSBhbmQgMTYgYml0cy4KCUNoZWNrIHRoZSBtYXNrcyBiZXR0ZXIgYW5kIGNhbGwgZ2VuZXJpYyBjb2RlIGlmIHRoZXkgYXJlIG5vdAoJc3VwcG9ydGVkIGRpcmVjdGx5LgoJQ2hhbmdlZCB0aGUgJ25vdHN1cHBvcnRlZCcgdHJhY2VzIGZyb20gRklYTUVzIHRvIFdBUk5zLgoKCSogc2VydmVyL3NlcmlhbC5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQHN0YXJ0LmNvbS5hdT4KCUhhbmRsZSBSZWFkSW50ZXJ2YWxUaW1lb3V0PU1BWERXT1JEIHNwZWNpYWwgY2FzZSBhIGJpdCBiZXR0ZXIuCgoJKiBmaWxlcy9maWxlLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAc3RhcnQuY29tLmF1PgoJRG9uJ3QgcmV0dXJuIGZyb20gb3ZlcmxhcHBlZCBSZWFkRmlsZSBvbiBFQUdBSU4gYW5kIG90aGVyIG5vbi1mYXRhbAoJZXJyb3JzLgoKCSogaW5jbHVkZS9tc3ZjcnQvc2hhcmUuaDoKCUJpbGwgTWVkbGFuZCA8bWVkYmkwMUBhY2NwYWMuY29tPgoJQW5kIGluIGFkZGl0aW9uIHRvIE1pbmd3MzIgd2Ugd2lsbCB3YW50IHRoZSBfIHZlcnNpb25zLgoKMjAwMS0xMi0yMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MvY2xhc3MuYywgd2luZG93cy9kaWFsb2cuYywgd2luZG93cy9tZGkuYywgbG9hZGVyL21vZHVsZS5jLAoJICBvYmplY3RzL2ZvbnQuYywgb2JqZWN0cy9nZGlvYmouYywgc2NoZWR1bGVyL3N5c2xldmVsLmMsCgkgIGRsbHMvdXNlci9tc2cxNi5jLCBkbGxzL3VzZXIvcHJvcGVydHkuYywgZ3JhcGhpY3Mvd2luMTZkcnYvYnJ1c2guYywKCSAgZ3JhcGhpY3Mvd2luMTZkcnYvZm9udC5jLCBncmFwaGljcy93aW4xNmRydi9pbml0LmMsCgkgIGdyYXBoaWNzL3dpbjE2ZHJ2L3Blbi5jLCBncmFwaGljcy93aW4xNmRydi9wcnRkcnYuYywKCSAgZGxscy9tc3ZpZGVvL21zdmlkZW9fbWFpbi5jLCBkbGxzL29sZWF1dDMyL29sZTJkaXNwLmM6CglVc2UgTWFwTFMvVW5NYXBMUyBpbnN0ZWFkIG9mIFNFR1BUUl8qIG1hY3Jvcy4KCgkqIHNlcnZlci9oYW5kbGUuYywgc2VydmVyL21hcHBpbmcuYywgc2VydmVyL211dGV4LmMsCgkgIHNlcnZlci9uYW1lZF9waXBlLmMsIHNlcnZlci9vYmplY3QuaCwgc2VydmVyL3BpcGUuYywKCSAgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3F1ZXVlLmMsCgkgIHNlcnZlci9yZWdpc3RyeS5jLCBzZXJ2ZXIvcmVxdWVzdC5jLCBzZXJ2ZXIvcmVxdWVzdC5oLAoJICBzZXJ2ZXIvc2VtYXBob3JlLmMsIHNlcnZlci9zZXJpYWwuYywgc2VydmVyL3NuYXBzaG90LmMsCgkgIHNlcnZlci9zb2NrLmMsIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RpbWVyLmMsIHNlcnZlci90cmFjZS5jLAoJICBzY2hlZHVsZXIvc3luY2hyby5jLCBzZXJ2ZXIvYXN5bmMuYywgc2VydmVyL2FzeW5jLmgsIHNlcnZlci9hdG9tLmMsCgkgIHNlcnZlci9jaGFuZ2UuYywgc2VydmVyL2NvbnNvbGUuYywgc2VydmVyL2RlYnVnZ2VyLmMsCgkgIHNlcnZlci9kZXZpY2UuYywgc2VydmVyL2V2ZW50LmMsIHNlcnZlci9maWxlLmMsIGluY2x1ZGUvZmlsZS5oLAoJICBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsIGZpbGVzL2ZpbGUuYywgZGxscy9rZXJuZWwvY29tbS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQHN0YXJ0LmNvbS5hdT4KCS0gbW92ZSBhc3luYyBhY3RpdmF0aW9uIGludG8gdGhlIHNlcnZlcgoJLSBpbXBsZW1lbnQgYXN5bmMgcXVldWVzCgoJKiBtZW1vcnkvZ2xvYmFsLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglHbG9iYWxSZUFsbG9jMTY6IElmIGhlYXAgaGFzIEdsb2JhbFBhZ2VMb2NrIHNldCwgdHJ5IG9ubHkgd2l0aAoJSEVBUF9SRUFMTE9DX0lOX1BMQUNFX09OTFkgZmxhZyBzZXQuCgoyMDAxLTEyLTE5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9rZXJuZWwvd293dGh1bmsuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVVzZSBHbG9iYWxQYWdlTG9jayBmb3IgR2V0VkRNUG9pbnRlcjMyVzE2IHBvaW50ZXJzLgoKCSogcmVsYXkzMi9yZWxheTM4Ni5jOgoJRml4ZWQgc3RhY2sgb2Zmc2V0IGluIHJlbGF5IGRlYnVnZ2luZyBvZiBjZGVjbCByZWdpc3RlciBmdW5jdGlvbnMuCgoJKiBtZW1vcnkvaGVhcC5jLCBtZW1vcnkvc2VsZWN0b3IuYywgZ3JhcGhpY3Mvd2luMTZkcnYvZm9udC5jLAoJICBpbmNsdWRlL2hlYXAuaCwgaW5jbHVkZS9udGRkay5oLCBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW5udC5oLAoJICBkbGxzL29sZTMyL2lmcy5jLCBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBkbGxzL250ZGxsL01ha2VmaWxlLmluLAoJICBkbGxzL250ZGxsL2RlYnVndG9vbHMuYywgZGxscy9udGRsbC9oZWFwLmMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywKCSAgZGxscy9udGRsbC9ydGwuYzoKCU1vdmVkIGhlYXAgZnVuY3Rpb25zIHRvIG50ZGxsLgoJR290IHJpZCBvZiBpbnRlcm5hbCBoZWFwIGZsYWdzLgoJUmVpbXBsZW1lbnRlZCBNYXBMUyB0byBub3QgZGVwZW5kIG9uIHRoZSBzZWdwdHIgaGVhcC4KCgkqIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvbXN2Y3J0L3NoYXJlLmg6CglCaWxsIE1lZGxhbmQgPG1lZGJpMDFAYWNjcGFjLmNvbT4KCUFkZGVkIHNoYXJlLmggZnJvbSBNaW5ndzMyLgoKCSogUkVBRE1FOiBCYW5nIEp1bi1Zb3VuZyA8anVueW91bmdAbW9ndWEuY29tPgoJV2luZSBpcyBub3cgd29ya2luZyBvbiBOZXRCU0QsIHNvIGFkZCBOZXRCU0QgdG8gdGhlIHN1cHBvcnRlZCBPUydlcwoJbGlzdCAoYW5kIGFkZCBzb21lIG5vdGVzIGFzIHdlbGwpLgoKCSogZmlsZXMvZmlsZS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQHN0YXJ0LmNvbS5hdT4KCUltcGxlbWVudGVkIHRpbWVkLW91dCBub24tb3ZlcmxhcHBlZCBSZWFkRmlsZS4KCgkqIHRvb2xzL3dyYy9wcGwubCwgdG9vbHMvd3JjL3dyYy5oOgoJTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5jb20+CglSZXBsYWNlZCBNQVggd2l0aCBtYXggYW5kIGRlbGV0ZWQgZGVmaW5pdGlvbiBvZiBNQVguCgoJKiBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jOgoJTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5jb20+CglGaXhlZC9pbXBsZW1lbnRlZCB0aGUgSW1hZ2VMaXN0XypEcmFnKiBmdW5jdGlvbnMuCgoJKiBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jOgoJTGF3c29uIFdoaXRuZXkgPGxhd3Nvbl93aGl0bmV5QGp1bm8uY29tPgoJSWYgdGhlcmUgaXMgbm8gcHNJbmZvLCBpdCBkb2Vzbid0IG5lZWQgdG8gYmUgY2xlYW5lZCB1cC4KCjIwMDEtMTItMTcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpZjE2MzIvLmN2c2lnbm9yZSwgaWYxNjMyL01ha2VmaWxlLmluLCBpZjE2MzIvdGh1bmsuYywKCSAgaW5jbHVkZS9jYWxsYmFjay5oOgoJUmVtb3ZlZCBubyBsb25nZXIgdXNlZCB0aHVua2luZyBhbmQgY2FsbG91dCBmdW5jdGlvbnMuCgoJKiBtaXNjL3N5c3RlbS5jOgoJU3RvcmUgdGhlIDE2LWJpdCBjYWxsYmFjayBpbiB0aGUgdGltZXIgc3RydWN0dXJlIGluc3RlYWQgb2YgdXNpbmcgYQoJdGh1bmsuCgoJKiB3aW5kb3dzL3VzZXIuYywgbXNkb3MvZHBtaS5jLCBvYmplY3RzL2RpYi5jLCBzY2hlZHVsZXIvdGhyZWFkLmMsCgkgIGlmMTYzMi9yZWxheS5jLCBsb2FkZXIvbmUvcmVzb3VyY2UuYywgbWVtb3J5L2xvY2FsLmMsCgkgIGRsbHMvc2V0dXBhcGkvdmlydGNvcHkuYywgZGxscy93aW5lZG9zL2Rvc2FzcGkuYywKCSAgZ3JhcGhpY3Mvd2luMTZkcnYvcHJ0ZHJ2LmMsIGRsbHMva2VybmVsL3V0dGh1bmsuYywKCSAgZGxscy9rZXJuZWwvd293dGh1bmsuYzoKCVJlbW92ZWQgdW5uZWNlc3NhcnkgaW5jbHVkZXMuCgoJKiBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJQ2FsbCB0aGUgMzItYml0IFVTRVIgc2lnbmFsIHByb2MgZGlyZWN0bHkgaW5zdGVhZCBvZiB1c2luZyBhIGNhbGxvdXQuCgoJKiBkbGxzL3gxMWRydi93aW5wb3MuYzoKCVBhdWwgUnVwZSA8cHJ1cGVAbmMucnIuY29tPgoJUHJldmVudCAid2luZG93IGJlbG9uZ3MgdG8gYW5vdGhlciBwcm9jZXNzIiBlcnJvcnMgd2hlbiBydW5uaW5nCgltdWx0aXBsZSBwcm9ncmFtcyBzaW11bHRhbmVvdXNseS4KCgkqIGRsbHMva2VybmVsL2tlcm5lbF9tYWluLmMsIGRsbHMva2VybmVsL3RodW5rLmM6CglEbyBub3QgY2FsbCBUSFVOS19Jbml0IGF0IHN0YXJ0dXAsIG9ubHkgZG8gaXQgd2hlbiB0aGUgYXBwIGFjdHVhbGx5CglyZXF1aXJlcyB0aHVua3MuCgoJKiBpbmNsdWRlL2N1cnNvcmljb24uaCwgbG9hZGVyL3Jlc291cmNlLmMsIHdpbmRvd3MvY3Vyc29yaWNvbi5jLAoJICBkbGxzL3VzZXIvdXNlcjMyLnNwZWM6CglFeHBvcnQgRGVzdHJveUljb24zMiBmcm9tIHVzZXIzMiBhbmQgdXNlIEdldFByb2NBZGRyZXNzIHRvIGNhbGwgaXQKCWZyb20gRnJlZVJlc291cmNlMTYuCgoJKiB3aW5kb3dzLy5jdnNpZ25vcmUsIHdpbmRvd3MvTWFrZWZpbGUuaW4sIHdpbmRvd3MvcGFpbnRpbmcuYywKCSAgd2luZG93cy93aW4uYywgZGxscy91c2VyLy5jdnNpZ25vcmUsIGRsbHMvdXNlci9NYWtlZmlsZS5pbiwKCSAgZGxscy91c2VyL3Byb3BlcnR5LmMsIGRsbHMvdXNlci90ZXh0LmMsIGRsbHMvdXNlci90aHVuay5jLAoJICBkbGxzL3VzZXIvdXNlci5zcGVjLCBkbGxzL3VzZXIvd25kMTYuYzoKCUNoYW5nZWQgMTYtYml0IFVTRVIgRW51bSogZnVuY3Rpb25zIHRvIG5vdCB1c2UgdGh1bmtzLCBub3cgdGhhdCAxNi1iaXQKCVdpbmVsaWIgaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZC4KCgkqIHdpbmRvd3MvaG9vay5jLCB3aW5kb3dzL2tleWJvYXJkLmMsIGRsbHMvdXNlci9tb3VzZS5jOgoJR290IHJpZCBvZiBkeW5hbWljIHRodW5rIGFsbG9jYXRpb24gaW4gbW91c2Uva2V5Ym9hcmQgZXZlbnQgcHJvY3MgYW5kCgl3aW5kb3cgaG9va3MuCgoJKiBkbGxzL3NobHdhcGkvcmVnLmMsIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWMsIGluY2x1ZGUvc2hsd2FwaS5oOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUltcGxlbWVudGVkLCBkb2N1bWVudGVkIG9yIGZpeGVkIFNIRGVsZXRlT3JwaGFuS2V5QS9XLCBTSEVudW1LZXlFeEEvVywKCVNIRW51bVZhbHVlQS9XLCBTSFF1ZXJ5SW5mb0tleUEvVy4gU0hSZWdHZXRQYXRoQS9XLCBTSFJlZ1NldFBhdGhBL1csCglTSEdldFZhbHVlQS9XLCBTSFNldFZhbHVlQS9XLCBTSFF1ZXJ5VmFsdWVFeEEvVywgU0hEZWxldGVLZXlBL1csCglTSERlbGV0ZUVtcHR5S2V5QS9XLCBTSERlbGV0ZVZhbHVlQS9XLCBvcmRpbmFscyAzMjAtMzIzLgoKCSogbWVtb3J5L2xvY2FsLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCUFkZGVkIGVycm9yIG1lc3NhZ2UgaW4gTE9DQUxfR2V0QmxvY2soKS4KCgkqIHdpbmRvd3Mvd2lucG9zLmM6CglEYXZlIEhhd2tlcyA8ZGF2ZWgtd2luZUBjYWRsaW5rLmNvbT4KCUFsdGVyZWQgdGhlIGFsZ29yaXRobSBmb3Igc2VsZWN0aW5nIGEgbmV3IGZvY3VzIGFmdGVyIGEgd2luZG93IGlzCglkZXN0cm95ZWQgdGhhdCBjdXJyZW50bHkgaGFzIHRoZSBmb2N1cy4KCgkqIGRsbHMvZ2RpLy5jdnNpZ25vcmUsIGRsbHMvZ2RpL01ha2VmaWxlLmluLCBkbGxzL2dkaS9nZGkuc3BlYywKCSAgZGxscy9nZGkvdGh1bmsuYywgb2JqZWN0cy9mb250LmMsIG9iamVjdHMvZ2Rpb2JqLmMsCgkgIG9iamVjdHMvbGluZWRkYS5jLCBvYmplY3RzL21ldGFmaWxlLmM6CglDaGFuZ2VkIDE2LWJpdCBHREkgRW51bSogZnVuY3Rpb25zIHRvIG5vdCB1c2UgdGh1bmtzLCBub3cgdGhhdCAxNi1iaXQKCVdpbmVsaWIgaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZC4KCgkqIG9iamVjdHMvLmN2c2lnbm9yZSwgb2JqZWN0cy9NYWtlZmlsZS5pbiwgb2JqZWN0cy9kYy5jLAoJICB3aW5kb3dzL2RjZS5jLCBncmFwaGljcy9lc2NhcGUuYywgaW5jbHVkZS9nZGkuaCwKCSAgaW5jbHVkZS93aW5lL3dpbmdkaTE2LmgsIGRsbHMvZ2RpL2dkaTMyLnNwZWMsIGRsbHMvZ2RpL3ByaW50ZHJ2LmM6CglDaGFuZ2VkIERDIGhvb2sgYW5kIGFib3J0IHByb2MgaGFuZGxpbmcgdG8gYXZvaWQgaGF2aW5nIHRvIGFsbG9jYXRlCgl0aHVua3MgZHluYW1pY2FsbHkuCgoJKiBkbGxzL2NvbWN0bDMyL3RhYi5jOiBOb2cgPG5vZ0BzZGYubG9uZXN0YXIub3JnPgoJUGFzcyBvbiBhbGwgdW5oYW5kZWxlZCBtZXNzYWdlcyB0byB0aGUgb3duZXIuCgoJKiBkbGxzL3NobHdhcGkvcGF0aC5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJUGF0aElzVVJMKEF8Vyk6IENoZWNrIGZvciBOVUxMIHN0cmluZ3MuCgoJKiBkbGxzL3dpbmluZXQvaHR0cC5jOgoJSm9oYW4gRGFobGluIDxqZGFobGluQHRlbGlhLmNvbT4KCUFkZCBhIGZldyBleHRyYSBmaWVsZHMgdG8gSFRUUF9HZXRTdGRIZWFkZXJJbmRleC4KCjIwMDEtMTItMTQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3VzZXIvdXNlci5zcGVjLCB3aW5kb3dzL3dpbnByb2MuYzoKCUNoYW5nZWQgMTYtPjMyIHdpbmRvdyBwcm9jZWR1cmUgdGh1bmtzIHRvIHVzZSB3aW5lYnVpbGQtZ2VuZXJhdGVkCgllbnRyeSBjb2RlIGRpcmVjdGx5LgoKCSogcmVsYXkzMi9yZWxheTM4Ni5jLCB0b29scy93aW5lYnVpbGQvUkVBRE1FLCB0b29scy93aW5lYnVpbGQvYnVpbGQuaCwKCSAgdG9vbHMvd2luZWJ1aWxkL2ltcG9ydC5jLCB0b29scy93aW5lYnVpbGQvcGFyc2VyLmMsCgkgIHRvb2xzL3dpbmVidWlsZC9zcGVjMTYuYywgdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jLAoJICBpbmNsdWRlL2J1aWx0aW4xNi5oLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGlmMTYzMi9idWlsdGluLmMsCgkgIGlmMTYzMi9yZWxheS5jLCBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBkbGxzL2tlcm5lbC90aHVuay5jLAoJICBkbGxzL2tlcm5lbC93aW44N2VtLnNwZWMsIGRsbHMva2VybmVsL3dpbmRlYnVnLnNwZWMsCgkgIGRsbHMva2VybmVsL3dwcm9jcy5zcGVjLCBNYWtlLnJ1bGVzLmluLCBkbGxzL2tlcm5lbC9rZXJuZWwuc3BlYzoKCU1hZGUgcmVnaXN0ZXIgYW5kIGludGVycnVwdCBmbGFncyBpbnN0ZWFkIG9mIGVudHJ5IHBvaW50IHR5cGVzLCBzbwoJdGhhdCB3ZSBjYW4gaGF2ZSBib3RoIHN0ZGNhbGwgYW5kIGNkZWNsIHJlZ2lzdGVyIGZ1bmN0aW9ucy4KCUNoYW5nZWQgMTYtYml0IC5zcGVjLmMgZmlsZSBnZW5lcmF0aW9uIHRvIGF2b2lkIGluY2x1ZGluZyBidWlsdGluMTYuaC4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYywgaW5jbHVkZS93aW5zb2NrLmg6CglQYXVsIFJ1cGUgPHBydXBlQG5jLnJyLmNvbT4KCVZlcnkgc2ltcGxlIHN1cHBvcnQgZm9yIFNPX09QRU5UWVBFIGluIGdldHNvY2tvcHQgYW5kIHNldHNvY2tvcHQuCgoJKiBsaWJyYXJ5L3BvcnQuYzoKCUJhbmcgSnVuLVlvdW5nIDxqdW55b3VuZ0Btb2d1YS5jb20+CglNYWtlIHVzZSBvZiBzb2xhcmlzX3RyeV9tbWFwKCkgZm9yIE5ldEJTRC4gUmVuYW1lIGl0IHRvCgl0cnlfbW1hcF9maXhlZCgpIHNpbmNlIGl0J3Mgbm8gbG9uZ2VyIFNvbGFyaXMtc3BlY2lmaWMuCgoJKiBpbmNsdWRlL2NvbmZpZy5oLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCUJhbmcgSnVuLVlvdW5nIDxqdW55b3VuZ0Btb2d1YS5jb20+CglBZGRlZCBjaGVjayBmb3Igc3RkaW50LmggKG5lZWRlZCBvbiBOZXRCU0QpLgoKCSogZGxscy93c29jazMyL3NvY2tldC5jLCBkbGxzL3dzb2NrMzIvd3Njb250cm9sLmg6CglCYW5nIEp1bi1Zb3VuZyA8anVueW91bmdAbW9ndWEuY29tPgoJRml4IE5ldEJTRCBjb21waWxhdGlvbiBlcnJvcnMuCgoJKiB0b29scy93aW5lc2hlbGxsaW5rOgoJU2ltb24gV2FsdG9uIDxzaW1vbncyQHBhY2JlbGwubmV0PgoJRml4ZWQgYSBiYXNoaXNtLgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCVRoYXdlZCBzb21lIGZyZWV6ZXMuCglDbGVhbmVkIHVwIHRpbWUgYW5kIG5vdGlmaWNhdGlvbiBoYW5kbGluZy4KCVR5cG9zIGZpeGVzIChHZXJhcmQpLgoJQWRkZWQgYnJlYWtsb29wIHN1cHBvcnQuCgoyMDAxLTEyLTEzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy91c2VyL01ha2VmaWxlLmluLCBkbGxzL3VzZXIvcGFpbnRpbmcuYywgZGxscy91c2VyL3duZDE2LmMsCgkgIHdpbmRvd3MvcGFpbnRpbmcuYzoKCVN0YXJ0ZWQgcmV3cml0ZSBvZiBwYWludGluZyBmdW5jdGlvbnMgZm9yIG11bHRpcGxlIHByb2Nlc3Nlcy4gTW92ZWQKCUJlZ2luUGFpbnQgdG8gZGxscy91c2VyLiBGaXhlZCBidWcgaW4gcGFpbnQgY291bnQgaGFuZGxpbmcuCgoJKiB0b29scy93aW5lc2hlbGxsaW5rOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCBzb21lIHBsYWNlcyB3aGVyZSB3aGl0ZXNwYWNlIHdhcyBub3QgaGFuZGxlZCBjb3JyZWN0bHkuCglEbyBub3QgdXNlIGBjbWRgcyB3aXRoaW4gY2F0IDw8RU9GIHNpbmNlIGJhc2gxIHNvbWV0aW1lcyBnZXRzIGNvbmZ1c2VkCglieSBpdC4KCgkqIGRsbHMva2VybmVsL2NvbW0uYywgZGxscy91c2VyL2NvbW0xNi5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQHN0YXJ0LmNvbS5hdT4KCU9ubHkgUlRTX0NPTlRST0xfSEFORFNIQUtFIHNob3VsZCBzZXQgQ1JUU0NUUy4KCgkqIGRsbHMvdHR5ZHJ2L3R0eWRydi5zcGVjLCBkbGxzL3R0eWRydi93bmQuYzoKCUVyaWMgTGFmb3Jlc3QgPGVjbEBwZXQuZGhzLm9yZz4KCUFkZCB0aGUgbWlzc2luZyBmdW5jdGlvbmFsaXR5IGluIHRoZSB0dHkgZHJpdmVyLgoKMjAwMS0xMi0xMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHRvb2xzL3dpbmVidWlsZC9idWlsZC5oLCB0b29scy93aW5lYnVpbGQvaW1wb3J0LmMsCgkgIHRvb2xzL3dpbmVidWlsZC9tYWluLmMsIHRvb2xzL3dpbmVidWlsZC9yZWxheS5jLAoJICB0b29scy93aW5lYnVpbGQvc3BlYzMyLmMsIGluY2x1ZGUvd2lubnQuaCwgcmVsYXkzMi9yZWxheTM4Ni5jLAoJICByZWxheTMyL3Nub29wLmMsIGRsbHMvbnRkbGwvLmN2c2lnbm9yZSwgZGxscy9udGRsbC9NYWtlZmlsZS5pbiwKCSAgZGxscy9udGRsbC9udGRsbC5zcGVjLCBpZjE2MzIvLmN2c2lnbm9yZSwgaWYxNjMyL01ha2VmaWxlLmluOgoJRXhwb3J0ZWQgQ0FMTDMyX1JlZ3MgZnJvbSBudGRsbCwgcmVuYW1lZCB0byBfX3dpbmVfY2FsbF9mcm9tXzMyX3JlZ3MKCXRvIGZvbGxvdyB0aGUgbmFtaW5nIGNvbnZlbnRpb24gZm9yIHRoaXMgdHlwZSBvZiBmdW5jdGlvbnMuCglTcGxpdCAxNiBhbmQgMzItYml0IHJlbGF5IGZ1bmN0aW9ucyBpbnRvIHNlcGFyYXRlIGZpbGVzLCBhbmQgbW92ZWQgdGhlCgkzMi1iaXQgb25lcyB0byBkbGxzL250ZGxsLgoKCSogZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglBZGQgbmV3IHN0dWIgTUxMb2FkTGlicmFyeS4KCgkqIGRsbHMvd2luaW5ldC9odHRwLmMsIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jLCBpbmNsdWRlL3NobHdhcGkuaCwKCSAgZGxscy9zaGx3YXBpL29yZGluYWwuYywgZGxscy9zaGx3YXBpL29yZGluYWwuaCwgZGxscy9zaGx3YXBpL3BhdGguYywKCSAgZGxscy9zaGx3YXBpL3JlZy5jLCBkbGxzL3NobHdhcGkvc2hsd2FwaV9tYWluLmMsCgkgIGRsbHMvc2hsd2FwaS9zdHJpbmcuYywgZGxscy9zaGx3YXBpL3VybC5jLCBkbGxzL3JpY2hlZGl0L3JpY2hlZGl0LmMsCgkgIGRsbHMvc2hlbGwzMi9jbGlwYm9hcmQuYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYywgZGxscy9zaGVsbDMyL3VuZG9jc2hlbGwuaCwKCSAgZGxscy9jb21jdGwzMi9jb21tY3RybC5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZ2Jyb3dzZXIuYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglBZGQgZXhjbHVzaW9uIGRlZnMgJiByZW1haW5pbmcgZnVuY3MsIHJlbW92ZSBpbnRlcm5hbCB0eXBlcyAmCglvYmpfYmFzZS5oIChzeW5jIHdpdGggd2luIHZlcnNpb24pLCBmaXhlZCBhIG51bWJlciBvZiBmdW5jdGlvbgoJcHJvdG90eXBlcy4KCgkqIHNjaGVkdWxlci9wdGhyZWFkLmM6CglKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglJbXBsZW1lbnRlZCBwdGhyZWFkX3J3bG9jayBzdHVicy4KCgkqIGNvbnRyb2xzL2J1dHRvbi5jOgoJQmlsbCBNZWRsYW5kIDxtZWRiaTAxQGFjY3BhYy5jb20+CglGb3IgYSByYWRpbyBidXR0b24gZXZlbiBpZiB0aGUgaW5pdGlhbCBzdHlsZSBpbmNsdWRlcyBXU19UQUJTVE9QIHRoZQoJZmlyc3QgQk1fU0VUQ0hFQ0sgMCB3aWxsIGNsZWFyIGl0IChldmVuIGlmIHRoZSBzdGF0ZSB3YXMgY2xlYXIpLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOgoJQmlsbCBNZWRsYW5kIDxtZWRiaTAxQGFjY3BhYy5jb20+CglBIHRyZWV2aWV3IGl0ZW0gbWF5IGJlIFRWSV9ST09ULgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglEYXZlIEhhd2tlcyA8ZGF2ZWhAY2FkbGluay5jb20+CglGaXggZm9yIHRvb2xiYXIgcG90ZW50aWFsbHkgdXNpbmcgYSBOVUxMIHBvaW50ZXIuCgoyMDAxLTEyLTA2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS93aW4uaCwgd2luZG93cy93aW4uYywgd2luZG93cy93aW5wb3MuYzoKCUFkZGVkIFdJTl9HZXRSZWN0YW5nbGVzIGZ1bmN0aW9uLgoJRml4ZWQgV2luZG93RnJvbVBvaW50IHRvIHdvcmsgYWNjcm9zcyBwcm9jZXNzZXMuCgoJKiB3aW5kb3dzL21lc3NhZ2UuYywgaW5jbHVkZS9zeXNtZXRyaWNzLmgsIHdpbmRvd3Mvc3lzbWV0cmljcy5jLAoJICB3aW5kb3dzL3N5c3BhcmFtcy5jLCBkbGxzL3VzZXIvdXNlcl9tYWluLmM6CglBbmRyaXkgUGFsYW1hcmNodWsgPGFwYTNhQHlhaG9vLmNvbT4KCUltcGxlbWVudGVkIHByb2Nlc3NpbmcgZm9yIGFjdGlvbnM6IFNQSV9HRVQvU0VUR1JJREdSQU5VTEFSSVRZLAoJU1BJX0dFVC9TRVRJQ09OVElUTEVXUkFQLCBTUElfR0VUL1NFVE1FTlVEUk9QQUxJR05NRU5ULAoJU1BJX0dFVC9TRVRET1VCTEVDTEtXSURUSCwgU1BJX0dFVC9TRVRET1VCTEVDTEtIRUlHSFQsCglTUElfR0VUL1NFVERPVUJMRUNMSUNLVElNRS4KCgkqIHdpbmRvd3Mvc3B5LmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJQ2hhbmdlIHRoZSBtZXNzYWdlIHRyYWNlIGluZGVudGF0aW9uIHRvIGJlIGNvbnNpc3RlbnQgYnkgdGhyZWFkLgoKCSogZGVidWdnZXIvbXNjLmMsIGRlYnVnZ2VyL3R5cGVzLmM6CglEYXZlIEhhd2tlcyA8ZGF2ZWgtd2luZUBjYWRsaW5rLmNvbT4KCUZpeCBmb3Igc29tZSB0eXBlcyBvZiBDKysgZGVidWcgaW5mbyB0aGF0IGNhbiBjYXVzZSB3aW5lZGJnIHRvIGNyYXNoLgoKCSogd2luZG93cy9kaWFsb2cuYzoKCURhdmUgSGF3a2VzIDxkYXZlaC13aW5lQGNhZGxpbmsuY29tPgoJRElBTE9HX0NyZWF0ZUluZGlyZWN0IGNhbiBpbmNvcnJlY3RseSBraWxsIHRoZSBjdXJyZW50IGlucHV0IGZvY3VzLgoKMjAwMS0xMi0wNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3Mvd2lucHJvYy5jLCBkbGxzL2tlcm5lbC90aHVuay5jLCBkbGxzL2tlcm5lbC91dHRodW5rLmM6CglSZW1vdmVkIGNhbGxzIHRvIEhFQVBfR2V0U2VncHRyLgoKCSogZGxscy93aW5lZG9zL21vZHVsZS5jOgoJRml4ZWQgY29tcGlsZSBmb3IgIU1aX1NVUFBPUlRFRC4KCgkqIGRsbHMvYWR2YXBpMzIvcmVnaXN0cnkuYywgbWVtb3J5L3JlZ2lzdHJ5LmM6CglVc2UgbnRkbGwgZnVuY3Rpb25zIGluc3RlYWQgb2YgTXVsdGlCeXRlVG9XaWRlQ2hhci9XaWRlQ2hhclRvTXVsdGlCeXRlCgl0byBhdm9pZCBjb3JydXB0aW5nIHRoZSBsYXN0IGVycm9yIGNvZGUuCgoJKiBpbmNsdWRlL250ZGRrLmgsIG1lbW9yeS9jb2RlcGFnZS5jLCBkbGxzL250ZGxsL21pc2MuYywKCSAgZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL250ZGxsL250ZGxsX21pc2MuaCwgZGxscy9udGRsbC9ydGwuYywKCSAgZGxscy9udGRsbC9ydGxzdHIuYywgZGxscy9udGRsbC9zZWMuYywgZGxscy9udGRsbC93Y3N0cmluZy5jOgoJUmVtb3ZlZCBudGRsbCBkZXBlbmRlbmN5IG9uIE11bHRpQnl0ZVRvV2lkZUNoYXIvV2lkZUNoYXJUb011bHRpQnl0ZQoJa2VybmVsMzIgZnVuY3Rpb25zLCBwbHVzIGEgZmV3IHNtYWxsIGNsZWFudXBzLgoKCSogaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9tc3ZjcnQvbWJjdHlwZS5oLAoJICBpbmNsdWRlL21zdmNydC9tYnN0cmluZy5oLCBpbmNsdWRlL21zdmNydC9zdHJpbmcuaCwKCSAgZGxscy9tc3ZjcnQvbWJjcy5jLCBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYzoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglDbGVhbnVwIGFuZCBpbXByb3ZlIHRoZSBtYmNzIHN1cHBvcnQuCglBZGQgbWJjdHlwZS5oIGFuZCBtYnN0cmluZy5oLgoJSW1wbGVtZW50IHB1dHdjIGFuZCBwdXR3Y2hhci4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJRGF2ZSBIYXdrZXMgPGRhdmVoLXdpbmVAY2FkbGluay5jb20+CglUaGUgdG9vbGJhciBjb21tYW5kcyB3ZXJlIG5vdCBzZW50IHRvIHRoZSBjb3JyZWN0IG5vdGlmaWNhdGlvbgoJd2luZG93LgoKCSogaW5jbHVkZS93aW5lL21tc3lzdGVtMTYuaCwgaW5jbHVkZS93aW5lL3dpbmRlZjE2LmgsCgkgIGluY2x1ZGUvd2luZS93aW5uZXQxNi5oOgoJSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJRml4ZWQgaW5jb3JyZWN0IHBhY2tpbmcuCgoJKiBkbGxzL21zdmNydC9lbnZpcm9uLmM6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJZ2V0ZW52IGlzIGNhc2UgaW5zZW5zaXRpdmUuCgoJKiBkbGxzL21zdmNydC90aW1lLmM6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJbWt0aW1lIG11c3Qgbm9ybWFsaXplIHRoZSBzdHJ1Y3QgdG0gZmllbGRzLgoKMjAwMS0xMi0wNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHByb2dyYW1zL3dpbmVjb25zb2xlL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5lY29uc29sZS9kaWFsb2cuYywKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvcmVnaXN0cnkuYywgcHJvZ3JhbXMvd2luZWNvbnNvbGUvdXNlci5jLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uX3ByaXZhdGUuaCwKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbl91c2VyLmgsCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25zb2xlLmMsCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25zb2xlLnNwZWMsCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25zb2xlX0VuLnJjLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZV9Gci5yYywKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbnNvbGVfcmVzLmg6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCS0gYWxsb3cgdG8gc2F2ZS9yZXN0b3JlIHNvbWUgcHJvcGVydGllcyBpbnRvIHRoZSByZWdpc3RyeSAobGlrZSBmb250LAoJICBjdXJzb3Igc2l6ZS4uLikKCS0gaW1wbGVtZW50IHRoZSB0d28gc2V0cyBvZiBwcm9wZXJ0aWVzIChkZWZhdWx0ICYgY3VycmVudCkKCS0gZml4ZWQgc29tZSBidWdzIG1haW5seSBpbiBkaWFsb2cKCS0gZW5oYW5jZWQgZm9udCBzZWxlY3Rpb24gbWVjaGFuaXNtcywKCS0gYWRkZWQgYW5kIHByb3RlY3RlZCBzdWItbWVudSBmb3IgYWxsIG9wZXJhdGlvbnMgKHN5c21lbnUgaXMgbm90CgkgIGF2YWlsIGluIG1hbmFnZWQgbW9kZSkKCS0gYmV0dGVyIGRhdGEgc2VwYXJhdGlvbiBmb3IgdGhlIGJhY2tlbmQocykKCgkqIHNlcnZlci9jb25zb2xlLmgsIHNlcnZlci9kZWJ1Z2dlci5jLCBzZXJ2ZXIvcHJvY2Vzcy5jLAoJICBzZXJ2ZXIvcHJvY2Vzcy5oLCBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci9jb25zb2xlLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUxldCB0aGUgY29uc29sZSByZW5kZXJlciBiZSBkZWZpbmVkIGFzIGEgdGhyZWFkLgoKCSogcHJvZ3JhbXMvd2luaGVscC9tYWNyby5oOgoJSmFtZXMgSnVyYW4gPGphbWVzanVyYW5AYWx1bW5pLnBzdS5lZHU+CglPbmx5IGluY2x1ZGUgdGhlIG5lY2Vzc2FyeSBmaWxlcyB0byBhdm9pZCBjb25mbGljdHMgaW4gZ2V0aG9zdG5hbWUKCXByb3RvdHlwZXMgYmV0d2VlbiB3aW5zb2NrLmggYW5kIHVuaXN0ZC5oCgoJKiBvYmplY3RzL2JpdG1hcC5jOgoJRXJpayBJbmdlIEJvbHP4IDxrbmFuQG1vLmhpbW9sZGUubm8+CglDcmVhdGVCaXRtYXAgY2FuIHRha2UgbkhlaWdodCBvciBuV2lkdGggPSB6ZXJvLCBhbmQgdGhlbiByZXR1cm5zIGEKCXBvaW50ZXIgdG8gYSAxeDEgbW9ub2Nocm9tZSBiaXRtYXAuCgoJKiBkbGxzL3NobHdhcGkvb3JkaW5hbC5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gQ29ycmVjdCBpbXBsZW1lbnRhdGlvbiBvZiBfMTY5IChjYWxsIG9mIFJlbGVhc2UpLiBUaGlzIGZpeGVzIGNyYXNoZXMKCSAgd2hlbiBhY3R1YWxseSBhdHRlbXB0aW5nIHRvIGNhbGwgUmVsZWFzZS4KCS0gQ29ycmVjdCBzb21lIHRyYWNlcy4KCgkqIG1zZG9zL01ha2VmaWxlLmluLCBtc2Rvcy9kZXZpY2VzLmMsIG1zZG9zL2Rvc2FzcGkuYywgbXNkb3MvZG9zbWVtLmMsCgkgIG1zZG9zL2RwbWkuYywgbXNkb3MvaW50MTAuYywgbXNkb3MvaW50MTYuYywgbXNkb3MvaW50MTcuYywKCSAgbXNkb3MvaW50MTkuYywgbXNkb3MvaW50MjAuYywgbXNkb3MvaW50MjEuYywgbXNkb3MvaW50MjkuYywKCSAgbXNkb3MvaW50MmYuYywgbXNkb3MvaW50MzMuYywgbXNkb3MvaW50ZXJydXB0cy5jLCBtc2Rvcy9pb3BvcnRzLmMsCgkgIG1zZG9zL3ZnYS5jLCBtc2Rvcy94bXMuYywgaW5jbHVkZS9jYWxsYmFjay5oLCBpbmNsdWRlL2Rvc2V4ZS5oLAoJICBpbmNsdWRlL21pc2NlbXUuaCwgaW5jbHVkZS92Z2EuaCwgbWlzY2VtdS9tYWluLmMsCgkgIGdyYXBoaWNzL2Rpc3BkaWIuYywgZGxscy9udGRsbC9NYWtlZmlsZS5pbiwgZGxscy9udGRsbC9udGRsbC5zcGVjLAoJICBkbGxzL3dpbmVkb3MvTWFrZWZpbGUuaW4sIGRsbHMvd2luZWRvcy9kZXZpY2VzLmMsCgkgIGRsbHMvd2luZWRvcy9kb3Nhc3BpLmMsIGRsbHMvd2luZWRvcy9kb3NleGUuaCwgZGxscy93aW5lZG9zL2Rvc3ZtLmMsCgkgIGRsbHMvd2luZWRvcy9pbnQwOS5jLCBkbGxzL3dpbmVkb3MvaW50MTAuYywgZGxscy93aW5lZG9zL2ludDE2LmMsCgkgIGRsbHMvd2luZWRvcy9pbnQxNy5jLCBkbGxzL3dpbmVkb3MvaW50MTkuYywgZGxscy93aW5lZG9zL2ludDIwLmMsCgkgIGRsbHMvd2luZWRvcy9pbnQyMS5jLCBkbGxzL3dpbmVkb3MvaW50MjkuYywgZGxscy93aW5lZG9zL2ludDMxLmMsCgkgIGRsbHMvd2luZWRvcy9pbnQzMy5jLCBkbGxzL3dpbmVkb3MvaW9wb3J0cy5jLCBkbGxzL3dpbmVkb3MvbW9kdWxlLmMsCgkgIGRsbHMvd2luZWRvcy92Z2EuYywgZGxscy93aW5lZG9zL3ZnYS5oLCBkbGxzL3dpbmVkb3Mvd2luZWRvcy5zcGVjLAoJICBkbGxzL3dpbmVkb3MveG1zLmMsIGRsbHMva2VybmVsL2tlcm5lbF9tYWluLmMsCgkgIGRsbHMva2VybmVsL3dwcm9jcy5zcGVjOgoJTW92ZWQgbW9zdCBvZiB0aGUgcmVhbC1tb2RlIHN0dWZmIHRvIGRsbHMvd2luZWRvcy4KCgkqIHNjaGVkdWxlci9wcm9jZXNzLmM6CglBZGRlZCBTWU5DSFJPTklaRSBhY2Nlc3MgdG8gc3RkaW8gaGFuZGxlcy4KCgkqIGRsbHMva2VybmVsL2NvbnNvbGUuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQ29weSB0aGUgY29ycmVjdCBudW1iZXIgb2YgYnl0ZXMgaW4gV3JpdGVDb25zb2xlSW5wdXRBLgoKCSogZGxscy93aW5tbS9tbWlvLmMsIGluY2x1ZGUvbW1zeXN0ZW0uaDoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgYnVncyBpbiBvdXRwdXQgZnVuY3Rpb25zICh3cml0ZSkuCglSZXdyb3RlIHNvbWUgcGFydHMgZm9yIGJldHRlciBETEwgc2VwYXJhdGlvbi4KCUZpeGVkIHNvbWUgcHJvdG90eXBlcy4KCUZpeGVkIG1taW9BZHZhbmNlIGluIHdyaXRlIG1vZGUuCgoJKiBkbGxzL21zYWNtL2Zvcm1hdC5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBhY21Gb3JtYXRDaG9vc2UgcmV0dXJuZWQgZmllbGRzLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAbmVyaW0ubmV0PgoJSW5pdGlhbGl6ZSBkaWFsb2cgZGF0YSBjb3JyZWN0bHkgaW4gQ3JlYXRlVGVtcGxhdGVEaWFsb2cuCgoJKiBkbGxzL2tlcm5lbC9jb21tLmM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBuZXJpbS5uZXQ+CglNaXNjIGZpeGVzIHRvIERDQiBidWlsZGluZyBmcm9tIGNvbW1hbmQgbGluZS4KCgkqIHRvb2xzL3dpbmVjb25mOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAbmVyaW0ubmV0PgoJQmV0dGVyIGhhbmRsaW5nIG9mIGNvbmZpZ3VyYXRpb24gd2l0aCBzZXZlcmFsIFdpbmRvd3MgaW5zdGFsbGF0aW9ucy4KCjIwMDEtMTItMDEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglVbmRvY3VtZW50ZWQgZmVhdHVyZSBvZiBUQl97R0VUfFNFVH1CVVRUT05JTkZPe0F8V306IGlmIG1hc2sgaGFzCgkweDgwMDAwMDAwIHNldCB0aGVuIHRoZSBjb21tYW5kIGlkIGlzIHJlYWxseSB0aGUgaW5kZXguCgoJKiBkbGxzL3NobHdhcGkvcGF0aC5jLCBkbGxzL3NobHdhcGkvcmVnLmMsIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWMsCgkgIGRsbHMvc2hsd2FwaS9zdHJpbmcuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CgktIEZpeGVkIFBhdGhJc1VSTHtBfFd9LgoJLSBJbXBsZW1lbnRlZCBQYXRoUmVuYW1lRXh0ZW5zaW9ue0F8V30sIFNIUmVnRHVwbGljYXRlSEtleSwKCSAgQ2hyQ21wSXtBfFd9LgoJLSBBZGRlZCBmb3J3YXJkcyB0byBEcmF3VGV4dFcsIENyZWF0ZURpYWxvZ1BhcmFtQSwgQ3JlYXRlRm9udFcsCgkgIFRyYWNlUG9wdXBNZW51RXguCgoJKiBpbmNsdWRlL3NobHdhcGkuaCwgZGxscy9zaGx3YXBpL29yZGluYWwuYywgZGxscy9zaGx3YXBpL3VybC5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gU3R1YiByb3V0aW5lcyBmb3IgXzE2NCwgXzIwOCwgXzIxMCwgXzIxMSwgXzIzOSwgXzM1NiwgXzQxMywgXzQzNywKCSAgQ29sb3JSR0JUb0hMUwoJLSBJbXBsZW1lbnQgcm91dGluZXMgZm9yIF8xNzIsIF8xNzQsIF8xNzYsIF8xOTksIF8yMTUsIF8yMTksIF8yMzYsIF8zNzcsCgkgIF8zNzgsIFVybENvbXBhcmV7QXxXfSwgVXJsQXBwbHlTY2hlbWV7QXxXfS4KCS0gRml4IHJvdXRpbmVzIF8yMTcsIF8xNjksIF8yNDAsIF8yNzYsIF8zNDIsIF8zNzYuCgoyMDAxLTExLTMwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS91c2VyLmgsIGRsbHMvdHR5ZHJ2L3R0eWRydi5zcGVjLCBkbGxzL3R0eWRydi91c2VyLmMsCgkgIGRsbHMvdXNlci91c2VyX21haW4uYywgZGxscy94MTFkcnYveDExZHJ2LnNwZWMsCgkgIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmM6CglBbmRyaXkgUGFsYW1hcmNodWsgPGFwYTNhQHlhaG9vLmNvbT4KCVJlbW92ZWQgR2V0L1NldFNjcmVlblNhdmVUaW1lb3V0IHVzZXIgZHJpdmVyIGZ1bmN0aW9ucyBiZWNhdXNlIHRoZXkKCWFyZSBub3QgdXNlZC4KCgkqIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmM6CglNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmRlPgoJSW1wbGVtZW50ZWQgSW1hZ2VMaXN0X0dldERyYWdJbWFnZS4KCUZpeGVkIEltYWdlTGlzdF9TZXREcmFnQ3Vyc29ySW1hZ2UgYW5kIEltYWdlTGlzdF9NZXJnZS4KCU5vIG5lZWQgZm9yIFN0cmV0Y2hCbHQgaW4gSW1hZ2VMaXN0X0JlZ2luRHJhZy4KCUFkZGVkIHNvbWUgdHJhY2VzLgoKCSogZGxscy94MTFkcnYvZGdhMi5jOgoJR2xlbm4gU2NocmFkZXIgPGdlc2NocmFkZXJAbWVkaWFvbmUubmV0PgoJVXNlIGdkaV9kaXNwbGF5IGV2ZXJ5d2hlcmUgdG8gYXZvaWQgQmFkQ29sb3IgZXJyb3JzLgoKCSogd2luZG93cy9ub25jbGllbnQuYywgd2luZG93cy9wYWludGluZy5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAbmVyaW0ubmV0PgoJUmVtb3ZlIHNvbWUgcG9zc2libGUgaW50ZXJsb2NraW5nIHByb2JsZW1zIHdpdGggcGViIGxvY2suCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmM6CglQYXVsIFJ1cGUgPHBydXBlQG5jLnJyLmNvbT4KCUZpeGVkIFdTX2dldHBlZXJuYW1lIHBhcmFtZXRlciBpbiBXU19hY2NlcHQuCglDaGFuZ2VkIG9yZGVyIG9mIGV2ZW50IHByb2Nlc3NpbmcgaW4gV0lOU09DS19Eb0FzeW5jRXZlbnQuCgoJKiBtZW1vcnkvdmlydHVhbC5jOgoJQW5kcmV3IExld3lja3kgPGFuZHJld0B0cmFuc2dhbWluZy5jb20+CgltYXBfaW1hZ2U6IG1hcCB0aGUgUEUgaGVhZGVyIHJlYWRvbmx5LgoKCSogbG9hZGVyL3BlX2ltYWdlLmM6CglBbmRyZXcgTGV3eWNreSA8YW5kcmV3QHRyYW5zZ2FtaW5nLmNvbT4KCWRvX3JlbG9jYXRpb25zOiBwcm9jZXNzIHJlbG9jYXRpb24gYmxvY2tzIHdpdGggYSBWaXJ0dWFsQWRkcmVzcyBvZiAwLAoJc3RvcCBvbmNlIFNpemVPZkJsb2NrID09IDAuCgoJKiBkb2N1bWVudGF0aW9uL2RlYnVnZ2luZy5zZ21sOgoJTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5jb20+CglSZW5hbWUgZGVidWcuaCB0byBkZWJ1Z3Rvb2xzLmguCgoJKiB3aW5kb3dzL3dpbnBvcy5jLCB3aW5kb3dzL3BhaW50aW5nLmMsIHdpbmRvd3MvcXVldWUuYywKCSAgd2luZG93cy90aW1lci5jLCB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL2RlZnduZC5jLCB3aW5kb3dzL2lucHV0LmMsCgkgIHdpbmRvd3MvbWVzc2FnZS5jLCB0b29scy9tYWtlX3JlcXVlc3RzLCB3aW4zMi9jb25zb2xlLmMsCgkgIHdpbjMyL2RldmljZS5jLCB3aW4zMi9leGNlcHQuYywgc2VydmVyL3RocmVhZC5oLCBzZXJ2ZXIvdGltZXIuYywKCSAgc2VydmVyL3RyYWNlLmMsIHNlcnZlci93aW5kb3cuYywgc2VydmVyL2FzeW5jLmMsIHNlcnZlci9hdG9tLmMsCgkgIHNlcnZlci9jaGFuZ2UuYywgc2VydmVyL2NvbnNvbGUuYywgc2VydmVyL2NvbnNvbGUuaCwKCSAgc2VydmVyL2NvbnRleHRfaTM4Ni5jLCBzZXJ2ZXIvY29udGV4dF9zcGFyYy5jLCBzZXJ2ZXIvZGVidWdnZXIuYywKCSAgc2VydmVyL2RldmljZS5jLCBzZXJ2ZXIvZXZlbnQuYywgc2VydmVyL2ZpbGUuYywgc2VydmVyL2hhbmRsZS5jLAoJICBzZXJ2ZXIvbWFwcGluZy5jLCBzZXJ2ZXIvbXV0ZXguYywgc2VydmVyL25hbWVkX3BpcGUuYywKCSAgc2VydmVyL29iamVjdC5jLCBzZXJ2ZXIvb2JqZWN0LmgsIHNlcnZlci9waXBlLmMsIHNlcnZlci9wcm9jZXNzLmMsCgkgIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci9xdWV1ZS5jLCBzZXJ2ZXIvcmVnaXN0cnkuYywKCSAgc2VydmVyL3JlcXVlc3QuYywgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3NlbGVjdC5jLAoJICBzZXJ2ZXIvc2VtYXBob3JlLmMsIHNlcnZlci9zZXJpYWwuYywgc2VydmVyL3NuYXBzaG90LmMsCgkgIHNlcnZlci9zb2NrLmMsIHNlcnZlci90aHJlYWQuYywgbXNkb3MvdmdhLmMsCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25zb2xlLmMsIHNjaGVkdWxlci9jbGllbnQuYywKCSAgc2NoZWR1bGVyL2hhbmRsZS5jLCBzY2hlZHVsZXIvcGlwZS5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLAoJICBzY2hlZHVsZXIvc3luY2hyby5jLCBzY2hlZHVsZXIvdGhyZWFkLmMsIHNjaGVkdWxlci90aW1lci5jLAoJICBtZW1vcnkvYXRvbS5jLCBtZW1vcnkvcmVnaXN0cnkuYywgbWVtb3J5L3NlbGVjdG9yLmMsCgkgIG1lbW9yeS92aXJ0dWFsLmMsIG1pc2Mvb3B0aW9ucy5jLCBtaXNjL3JlZ2lzdHJ5LmMsCgkgIGluY2x1ZGUvd2luZS9zZXJ2ZXIuaCwgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLAoJICBsb2FkZXIvbW9kdWxlLmMsIGxvYWRlci9wZV9pbWFnZS5jLCBpbmNsdWRlL3RocmVhZC5oLAoJICBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW5jb24uaCwgZGxscy91c2VyL21lc3NhZ2UuYywKCSAgZGxscy91c2VyL3Byb3BlcnR5LmMsIGRsbHMvd2luc29jay9zb2NrZXQuYywgZmlsZXMvY2hhbmdlLmMsCgkgIGZpbGVzL2Rvc19mcy5jLCBmaWxlcy9maWxlLmMsIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmMsCgkgIGRsbHMvbnRkbGwvbnQuYywgZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL250ZGxsL29tLmMsCgkgIGRsbHMvbnRkbGwvcmVnLmMsIGRsbHMvbnRkbGwvc3luYy5jLCBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwKCSAgZGxscy9rZXJuZWwvY29tbS5jLCBkbGxzL2tlcm5lbC9jb25zb2xlLmMsIGRsbHMva2VybmVsL2RlYnVnZ2VyLmMsCgkgIGRsbHMva2VybmVsL3N5bmMuYywgZGxscy9rZXJuZWwvdG9vbGhlbHAuYywKCSAgZGxscy9hZHZhcGkzMi9yZWdpc3RyeS5jOgoJUmVkZXNpZ24gb2YgdGhlIHNlcnZlciBjb21tdW5pY2F0aW9uIHByb3RvY29sIHRvIGFsbG93IGFyYml0cmFyeSBzaXplZAoJZGF0YSB0byBiZSBleGNoYW5nZWQuCglTcGxpdCByZXF1ZXN0IGFuZCByZXBseSBzdHJ1Y3R1cmVzIHRvIG1ha2UgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkKCWVhc2llci4KCU1vdmVkIG1hbnkgY29uc29sZSBmdW5jdGlvbnMgdG8gZGxscy9rZXJuZWwsIGFkZGVkIGNvZGUgcGFnZSBzdXBwb3J0LAoJY2hhbmdlZCBhIGZldyByZXF1ZXN0cyB0byBiZWhhdmUgcHJvcGVybHkgd2l0aCB0aGUgbmV3IHByb3RvY29sLgoKMjAwMS0xMS0yNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHRvb2xzL2ZvbnRfY29udmVydC5zaCwgZG9jdW1lbnRhdGlvbi9kYjJodG1sLXdpbmVocSwKCSAgZG9jdW1lbnRhdGlvbi9tYWtlX3dpbmVocToKCUFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCUF2b2lkIHBvdGVudGlhbCBwcm9ibGVtcyB3aXRoIGZpbGVuYW1lcyBjb250YWluaW5nIHNwYWNlcy4KCgkqIHdpbjMyL2NvbnNvbGUuYywgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbnNvbGUuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJTm93IHBhc3NpbmcgZXZlbnQgd2l0aCAtLXVzZS1ldmVudCB0byBsZXQgcHJvZ3JhbXMgc3RhcnRpbmcgd2l0aAoJZGlnaXRzIGJlaW5nIHJ1bi4KCgkqIG1pc2NlbXUvbWFpbi5jOgoJSm9zaHVhIFRoaWVsZW4gPHRoaWVsZW5AbmV0cHJpbmNlLm5ldD4KCW1tc3lzdGVtLmRsbCBzaG91bGQgYmUgYXV0b21hdGljYWxseSBsb2FkZWQgZm9yIDE2LWJpdCBhcHBzLgoKCSogZGVidWdnZXIvZGVidWcubDoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgSU8gd2hlbiBub3QgcnVuIHdpdGggd2luZWNvbnNvbGUuCgoyMDAxLTExLTI0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogcHJvZ3JhbXMvd2ludmVyL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5ldGVzdC9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvd2luaGVscC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luZWNvbnNvbGUvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL3dpbmVtaW5lL01ha2VmaWxlLmluLCBwcm9ncmFtcy91bmluc3RhbGxlci9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvdmlldy9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2NtZC9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvb3N2ZXJzaW9uY2hlY2svTWFrZWZpbGUuaW4sIHByb2dyYW1zL3Byb2dtYW4vTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL3JlZ2FwaS9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvcmVndGVzdC9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvY21kbGd0c3QvTWFrZWZpbGUuaW4sIHByb2dyYW1zL2NvbnRyb2wvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL25vdGVwYWQvTWFrZWZpbGUuaW4sIHByb2dyYW1zL2F2aXRvb2xzL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy9jbG9jay9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvTWFrZXByb2cucnVsZXMuaW46CglDb21waWxlIGFsbCBwcm9ncmFtcyB3aXRoIC1EU1RSSUNUIC1ETk9OQU1FTEVTU1VOSU9OIC1ETk9OQU1FTEVTU1NUUlVDVC4KCgkqIHNlcnZlci93aW5kb3cuYzoKCVNraXAgcXVldWUgY2xlYW51cHMgaWYgcXVldWUgaGFzIGJlZW4gZGVzdHJveWVkIGFscmVhZHkuCgoJKiBkbGxzL250ZGxsL3JlZy5jLCBtZW1vcnkvcmVnaXN0cnkuYywgZGxscy9hZHZhcGkzMi9yZWdpc3RyeS5jOgoJRml4ZWQgcmVnaXN0cnkgcm91dGluZXMgYnJva2VuIGJ5IHRoZSBzdHJ1Y3R1cmUgc2l6ZXMgZml4LgoKMjAwMS0xMS0yMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRlYnVnZ2VyL01ha2VmaWxlLmluLCBkZWJ1Z2dlci9kZWJ1Zy5sLCBkZWJ1Z2dlci9kZWJ1Z2dlci5oLAoJICBkZWJ1Z2dlci9lZGl0bGluZS5jLCBkZWJ1Z2dlci9oYXNoLmMsIGRlYnVnZ2VyL3NvdXJjZS5jLAoJICBkZWJ1Z2dlci93aW5lZGJnLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCVJldmlzaXRlZCBjb25zb2xlIHN1cHBvcnQgKGdvdCByaWQgb2Ygb2xkIGhhY2tzIGFuZCBwcml2YXRlIGVkaXRsaW5lCglzaW5jZSB3ZSBub3cgaGF2ZSBhIGJyYW5kIG5ldyBjb25zb2xlKSwgcmVtb3ZlZCBwcml2YXRlIGRlYnVnIGhlYXAuCgoJKiB3aW4zMi9NYWtlZmlsZS5pbiwgd2luMzIvY29uc29sZS5jLCB3aW4zMi9lZGl0bGluZS5jLAoJICB0b29scy9tYWtlX3JlcXVlc3RzLCBzZXJ2ZXIvY29uc29sZS5jLCBzZXJ2ZXIvY29uc29sZS5oLAoJICBzZXJ2ZXIvZGVidWdnZXIuYywgc2VydmVyL2ZpbGUuYywgc2VydmVyL2hhbmRsZS5jLCBzZXJ2ZXIvb2JqZWN0LmgsCgkgIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9wcm9jZXNzLmgsIHNlcnZlci9wcm90b2NvbC5kZWYsCgkgIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci90cmFjZS5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZS5zcGVjLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZV9Fbi5yYywKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbnNvbGVfRnIucmMsCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25zb2xlX3Jlcy5oLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZV9yZXMucmMsCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlLy5jdnNpZ25vcmUsIHByb2dyYW1zL3dpbmVjb25zb2xlL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS9kaWFsb2cuYywgcHJvZ3JhbXMvd2luZWNvbnNvbGUvdXNlci5jLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uX3ByaXZhdGUuaCwKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbnNvbGUuYywgbG9hZGVyL21vZHVsZS5jLAoJICBwcm9ncmFtcy9NYWtlZmlsZS5pbiwgaW5jbHVkZS9maWxlLmgsIGluY2x1ZGUvd2luY29uLmgsCgkgIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwgZGxscy94MTFkcnYveDExZHJ2X21haW4uYywKCSAgZG9jdW1lbnRhdGlvbi9ydW5uaW5nLnNnbWwsIGRvY3VtZW50YXRpb24vd2luZS5tYW4uaW4sIGZpbGVzL2ZpbGUuYywKCSAgY29uZmlndXJlLmluLCBNYWtlZmlsZS5pbiwgY29uZmlndXJlOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglOZXcgY29uc29sZSBjb2RlIGJhc2VkIG9uIFdpbjMyIHdpbmRvd3MuCgoJKiBtc2Rvcy92eGQuYywgbG9hZGVyL3BlX2ltYWdlLmMsIG1lbW9yeS9yZWdpc3RyeS5jLCBkbGxzL250ZGxsL3JlZy5jLAoJICBpbmNsdWRlL2NvbW1jdHJsLmgsIGluY2x1ZGUvZHBsYXkuaCwgaW5jbHVkZS9kcGxvYmJ5LmgsCgkgIGluY2x1ZGUvbW1zeXN0ZW0uaCwgaW5jbHVkZS9uYjMwLmgsIGluY2x1ZGUvbnRkZGsuaCwKCSAgaW5jbHVkZS9udGRlZi5oLCBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW5nZGkuaCwKCSAgaW5jbHVkZS93aW5udC5oLCBpbmNsdWRlL3dpbnVzZXIuaCwgZGxscy9hZHZhcGkzMi9yZWdpc3RyeS5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVkIHBhY2tpbmcgYW5kIGxheW91dCBvZiBtYW55IHN5c3RlbSBzdHJ1Y3R1cmVzLgoKCSogZGxscy9tc3ZjcnQvZW52aXJvbi5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJTVNWQ1JUX2dldGVudjogY29tcGFyZSBmb3IgdGhlIGxlbmd0aCBvZiB0aGUga2V5IGFuZCByZXR1cm4gTlVMTCBpbgoJY2FzZSBvZiBmYWlsdXJlLgoKCSogZG9jdW1lbnRhdGlvbi9wYWNrYWdpbmcuc2dtbDoKCU1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuY29tPgoJQWRkIG1pc3NpbmcgPC9wYXJhPi4KCgkqIGRsbHMvdXNlci9jb21tMTYuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0BzdGFydC5jb20uYXU+CglDaGVjayBmb3IgY29tcGxldGVkIG92ZXJsYXBwZWRzIGluIFJlYWRDb21tMTYgdG8gc29sdmUgcHJvYmxlbXMgd2l0aAoJcHJvZ3JhbXMgdGhhdCBsb29wIG9uIGl0IGJ1dCBkb24ndCBnZXQgZGF0YS4KCgkqIGluY2x1ZGUvbXN2Y3J0L3N5cy90eXBlcy5oOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJX2Rldl90IGlzIGFuIHVuc2lnbmVkIGludGVnZXIuCgoyMDAxLTExLTIwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy9zeXNwYXJhbXMuYywgZGxscy94MTFkcnYveDExZHJ2X21haW4uYzoKCUFuZHJpeSBQYWxhbWFyY2h1ayA8YXBhM2FAeWFob28uY29tPgoJSW1wbGVtZW50ZWQgcHJvY2Vzc2luZyBmb3IgYWN0aW9ucyBTUElfR0VUL1NFVFNDUkVFTlNBVkVUSU1FT1VULAoJU1BJX0dFVC9TRVRTQ1JFRU5TQVZFQUNUSVZFLCBTUElfR0VUL1NFVFNDUkVFTlNBVkVSUlVOTklORy4KCgkqIGRsbHMvYWR2YXBpMzIvYWR2YXBpLmM6CglKYW1lcyBKdXJhbiA8amFtZXNqdXJhbkBhbHVtbmkucHN1LmVkdT4KCUdldFVzZXJOYW1lIHNob3VsZCBpbmNsdWRlIHRoZSB0ZXJtaW5hdGluZyBudWxsIGNoYXJhY3RlciB3aGVuCglyZXR1cm5pbmcgdGhlIHNpemUgb2YgdGhlIGJ1ZmZlciByZXR1cm5lZC4gQ29ycmVjdGx5IGhhbmRsZSB0aGUKCUVSUk9SX01PUkVfREFUQSBjYXNlLgoKCSogbWVtb3J5L2dsb2JhbC5jOgoJQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJVXNlIGV4Y2VwdGlvbiBoYW5kbGVyIGZvciBHbG9iYWxVbmxvY2ssIEdsb2JhbEZyZWUuCgoJKiBkbGxzL3dpbmVkb3MvaW50MDkuYywgZGxscy93aW5lZG9zL21vZHVsZS5jLCB3aW5kb3dzL2N1cnNvcmljb24uYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsc3RyaW5nLmMsIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCURvY3VtZW50YXRpb24gZml4ZXMuCgoJKiBkbGxzL3gxMWRydi94MTFkcnYuc3BlYywgZGxscy9tc3JsZTMyL21zcmxlMzIuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSBpc3N1ZXMgZm91bmQgYnkgd2luYXBpX2NoZWNrLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMuZGF0LAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMTYvd2luc29jay5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9hdmljYXAzMi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9tYXBpMzIuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvbXNpbWczMi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9tc3JsZTMyLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL21zdmNydC5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9tc3ZmdzMyLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL25ldGFwaTMyLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3NobHdhcGkuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvc3RpLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3R0eWRydi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi91cmwuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvdXJsbW9uLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3dpbmVkb3MuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvd3MyXzMyLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3gxMWRydi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfY2hlY2s6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCU1pbm9yIEFQSSBmaWxlcyB1cGRhdGUuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCURhdmUgSGF3a2VzIDxkYXZlaC13aW5lQGNhZGxpbmsuY29tPgoJVE9PTEJBUl9HZXRSZWN0IGRpZCBub3QgY29ycmVjdGx5IHRyYW5zbGF0ZSB0aGUgY29tbWFuZCBJRCB0byB0aGUKCWJ1dHRvbiBpbmRleC4KCgkqIHRvb2xzL3dpbmVzaGVsbGxpbms6CglEdXNhbiBMYWNrbyA8ZGxhY2tvQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBEZWJpYW4vTWFuZHJha2UgbWVudSBzeXN0ZW0gc3VwcG9ydC4KCgkqIHdpbmRvd3MvY2xhc3MuYzoKCUJpbGwgTWVkbGFuZCA8QmlsbC5NZWRsYW5kQGFjY3BhYy5jb20+CglJdCBpcyBsZWdhbCB0byBjYWxsIFVucmVnaXN0ZXJDbGFzcyB3aXRoIGFuIGhJbnN0YW5jZSBvZiB6ZXJvLgoKCSogc2VydmVyL2NvbnRleHRfaTM4Ni5jLCBzZXJ2ZXIvY29udGV4dF9zcGFyYy5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglPbmx5IGluY2x1ZGUgJ3N5cy91c2VyLmgnIGZvciBMaW51eC4gRml4ZXMgYSBjb21waWxhdGlvbiBlcnJvciBvbgoJRnJlZUJTRCA1LjAuCgoJKiBpbmNsdWRlL3dpbm50LmgsIGRsbHMvYWR2YXBpMzIvc2VydmljZS5jLCBkbGxzL250ZGxsL250LmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUZpeCBMVUlEIGRlZmluaXRpb24uCgoJKiB3aW5kb3dzL3NweS5jLCBpbmNsdWRlL3dpbnVzZXIuaDoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglDb252ZXJ0IG1lc3NhZ2Ugc3B5IHRvIHVuaWNvZGUuCgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOgoJRGF2ZSBIYXdrZXMgPGRhdmVoLXdpbmVAY2FkbGluay5jb20+CglGaXggbG9jayB1cCBpbiBHZXRLZXlOYW1lVGV4dCBkdWUgdG8gYW4gaW5jcmVtZW50IHdyYXAgd2hlbiBLZXlDb2RlIGlzCglhIGNoYXIgdHlwZSBhbmQgbWF4X2tleWNvZGUgaXMgMjU1LgoKMjAwMS0xMS0xOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbjMyL2V4Y2VwdC5jLCB3aW4zMi90aW1lLmMsIHByb2dyYW1zL3VuaW5zdGFsbGVyL21haW4uYywKCSAgcHJvZ3JhbXMvdW5pbnN0YWxsZXIvcnNyYy5yYywgc2NoZWR1bGVyL3B0aHJlYWQuYywKCSAgdG9vbHMvd2luZWluc3RhbGwsIG1zZG9zL2ludDIxLmMsIG1pc2MvY2Ryb20uYywgZmlsZXMvZGlyZWN0b3J5LmMsCgkgIGZpbGVzL2Rvc19mcy5jLCBkb2N1bWVudGF0aW9uL3NhbXBsZXMvY29uZmlnLAoJICBkb2N1bWVudGF0aW9uL3BhY2thZ2luZy5zZ21sLCBkbGxzL3gxMWRydi9kZ2EyLmMsCgkgIGRsbHMvd2luZXBzL3dwc19EZS5yYywgZGxscy9vbGVhdXQzMi90eXBlbGliLmMsCgkgIGRsbHMvb2xlMzIvY29tcG9iai5jLCBjb250cm9scy9FRElULlRPRE8sCgkgIGRsbHMvZHBsYXl4L2RwbGF5eF9nbG9iYWwuYzoKCUFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCS0gZml4IHdyb25nIGhleGFkZWNpbWFsIEdldExhc3RFcnJvcigpIG91dHB1dAoJLSBtaXNjIGZpeGVzCgktIGNoYW5nZWQgbXkgZW1haWwgYWRkcmVzcwoKCSogZGxscy9rZXJuZWwvZGVidWdnZXIuYywgc2VydmVyL3Byb2Nlc3MuYywgdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jOgoJSmFtZXMgSnVyYW4gPGphbWVzanVyYW5AYWx1bW5pLnBzdS5lZHU+CglQcmV2ZW50IHdhcm5pbmdzIGFib3V0IGxhYmVscyBhdCBlbmQgb2Ygc3dpdGNoIHN0YXRlbWVudHMgd2hlbgoJY29tcGlsaW5nIHdpdGggZ2NjLTMueC4KCgkqIGRsbHMvd3NvY2szMi9wcm90b2NvbC5jLCBkbGxzL3dzb2NrMzIvc29ja2V0LmMsIHNlcnZlci90cmFjZS5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCB0aGUgU29sYXJpcyBhbmQgRnJlZUJTRCBjb21waWxhdGlvbiBlcnJvcnMgaW50cm9kdWNlZCBieSB0aGUKCXJlY2VudCB3aW5zb2NrIHVwZGF0ZS4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOgoJU2ltb24gQnJpdG5lbGwgPHVnaGJhc2hAeWFob28uY29tPgoJRml4IGEgbG9vcCBwbGF5aW5nIGZhaWx1cmUgYW5kIGEgcHJvYmxlbSB3aXRoIGNob3BweSBzb3VuZC4KCgkqIGluY2x1ZGUvbXN2Y3J0L3Byb2Nlc3MuaCwgZGxscy9kaW5wdXQvam95c3RpY2svbGludXguYywKCSAgZGxscy9zaGx3YXBpL3VybC5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBIGZldyB0eXBvcy4KCgkqIGluY2x1ZGUvcnBjbmRyLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCU1JRExfU1RVQl9NRVNTQUdFIG5lZWRzIGEgcGFjazQgZm9yIHRoZSBNYXhDb3VudCBmaWVsZC4KCgkqIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUJldHRlciByZWxheWluZyBmb3IgX2xjcmVhdC4KCgkqIGRsbHMvYXZpY2FwMzIvYXZpY2FwMzIuc3BlYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJU21hbGwgdHlwbyBpbiBhdmljYXAzMi5zcGVjIGZpeGVkLgoKCSogd2luZG93cy93aW4uYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQG5lcmltLm5ldD4KCUZpeCBleGNoYW5nZWQgbGluZXMgaW4gV0lOX0dldFdpbmRvd0xvbmcuCgoyMDAxLTExLTE2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy9kZWZ3bmQuYzoKCVRydW5jYXRlIHRoZSB3aW5kb3cgdGV4dCBpZiBpdCBpcyB0b28gbGFyZ2UgZm9yIHRoZSByZXF1ZXN0IGJ1ZmZlci4KCgkqIHdpbmRvd3MvY2xhc3MuYzoKCUpvc2h1YSBUaGllbGVuIDx0aGllbGVuQG5ldHByaW5jZS5uZXQ+CglMb2NhbCBjbGFzc2VzIHJlZ2lzdGVyZWQgd2l0aCBVU0VSIGluc3RhbmNlIGhhbmRsZSBub3cgYXJlIG5vdyBmb3VuZAoJaW4gQ0xBU1NfRmluZENsYXNzQnlBdG9tLgoKCSogaW5jbHVkZS9yaWNoZWRpdC5oLCBkbGxzL3JpY2hlZGl0L3JpY2hlZGl0LmM6CglKdXNzaSBKdW1wcGFuZW4gPGp1c3NpakB6ZXVzZWRpdC5jb20+CglBZGRlZCBtaXNzaW5nIFJpY2hFZGl0IGRlZmluZXMuCgoyMDAxLTExLTE0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy93aW4uYywgZGxscy91c2VyL21lc3NhZ2UuYywgaW5jbHVkZS93aW4uaCwgc2VydmVyL3F1ZXVlLmMsCgkgIHNlcnZlci91c2VyLmgsIHNlcnZlci93aW5kb3cuYzoKCU1vdmVkIFdJTl9GaW5kV2luVG9SZXBhaW50IGZ1bmN0aW9uYWxpdHkgdG8gdGhlIHNlcnZlci4KCgkqIHNlcnZlci9zb2NrLmMsIGluY2x1ZGUvd2luZS93aW5zb2NrMTYuaCwgaW5jbHVkZS9NYWtlZmlsZS5pbiwKCSAgaW5jbHVkZS93aW5kb3dzLmgsIGluY2x1ZGUvd2luc29jay5oLCBpbmNsdWRlL3dpbnNvY2syLmgsCgkgIGluY2x1ZGUvd3MydGNwaXAuaCwgaW5jbHVkZS93c2lweC5oLCBkbGxzL3dpbnNvY2svTWFrZWZpbGUuaW4sCgkgIGRsbHMvd2luc29jay9hc3luYy5jLCBkbGxzL3dpbnNvY2svc29ja2V0LmMsCgkgIGRsbHMvd2luc29jay93aW5zb2NrLnNwZWMsIGRsbHMvd2luc29jay93czJfMzIuc3BlYywKCSAgZGxscy93c29jazMyL3Byb3RvY29sLmMsIGRsbHMvd3NvY2szMi9zb2NrZXQuYywKCSAgZGxscy93c29jazMyL3dzb2NrMzIuc3BlYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJTWFrZSB3aW5zb2NrLmggYW5kIHdpbnNvY2syLmggaW5kZXBlbmRlbnQgZnJvbSB0aGUgVW5peCBoZWFkZXJzLgoJTWFrZSB0aGVtIGNvbXBhdGlibGUgd2l0aCBib3RoIHRoZSBVbml4IEMgaGVhZGVycyBhbmQgdGhlIE1TVkNSVAoJaGVhZGVycy4KCUVuc3VyZSBjb21wYXRpYmlsaXR5IHdpdGggdGhlIFVuaXggaGVhZGVycyB2aWEgdGhlIFVTRV9XU19QUkVGSVgKCW1hY3JvLgoJQWRkIFdJTkVfTk9XSU5TT0NLOiBwcmV2ZW50cyB3aW5zb2NrLmggZnJvbSBiZWluZyBpbmNsdWRlZCBmcm9tCgl3aW5kb3dzLmggd2hlbiBkZWZpbmVkLgoJQWRkIHdzMnRjcGlwLmgsIG1vdmUgZGVmaW5pdGlvbnMgdG8gdGhlIHJpZ2h0IGhlYWRlci4KCgkqIGluY2x1ZGUvd2luZ2RpLmg6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJU3RydWN0dXJlIE5FV1RFWFRNRVRSSUMgdXNlcyBwYWNraW5nIDQuCgoJKiBpbmNsdWRlL21hcGlkZWZzLmg6CglKdXNzaSBKdW1wcGFuZW4gPGp1c3NpakB6ZXVzZWRpdC5jb20+CglBZGRlZCBtaXNzaW5nIE1BUEkgZGVmaW5lcy4KCjIwMDEtMTEtMTMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL2RlZnduZC5jLCB3aW5kb3dzL3BhaW50aW5nLmMsIHdpbmRvd3Mvd2luLmMsCgkgIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3F1ZXVlLmMsCgkgIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci90cmFjZS5jLCBzZXJ2ZXIvdW5pY29kZS5oLCBzZXJ2ZXIvdXNlci5oLAoJICBzZXJ2ZXIvd2luZG93LmM6CglTdG9yZSB0aGUgd2luZG93IGNhcHRpb24gdGV4dCBpbiB0aGUgc2VydmVyLgoJTWFpbnRhaW4gYSBwYWludCBjb3VudCBzZXBhcmF0ZWx5IGZvciBlYWNoIHdpbmRvdy4KCgkqIGRsbHMveDExZHJ2L3dpbnBvcy5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAbmVyaW0ubmV0PgoJRml4IHRoZSBzZXJ2ZXIgcGFpbnQgY291bnQgaW4gU2V0V2luZG93UG9zLgoKCSogZGxscy93aW5tbS9tbXN5c3RlbS5jLCBkbGxzL3dpbm1tL3dhdmVtYXAvd2F2ZW1hcC5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCB3YXZlKElufE91dClPcGVuIHdoZW4gY2FsbGVkIHdpdGggV0FWRV9NQVBQRUQgZmxhZzsgc29tZSBtaW5vcgoJMTYvMzIgQVBJIGNhbGwgb3JkZXJpbmcuCgoJKiB3aW5kb3dzL2lucHV0LmMsIHdpbmRvd3Mvc3lzcGFyYW1zLmM6CglBbmRyaXkgUGFsYW1hcmNodWsgPGFwYTNhQHlhaG9vLmNvbT4KCUltcGxlbWVudGVkIHByb2Nlc3NpbmcgZm9yIFNQSV9HRVQvU0VUTU9VU0UsIFNQSV9HRVQvU0VUS0VZQk9BUkRERUxBWSwKCVNQSV9HRVQvU0VUS0VZQk9BUkRTUEVFRCBhY3Rpb25zLiBJbXBsZW1lbnRlZCB1c2Ugb2YgbW91c2UKCWFjY2VsZXJhdGlvbi90aHJlc2hvbGQgZm9yIHJlbGF0aXZlIG1vdXNlIG1vdmVtZW50cy4KCgkqIGNvbnRyb2xzL2VkaXQuYzoKCUFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCUVESVRfRU1fTGluZUxlbmd0aCBjYWxsZWQgZnJvbSB3aXRoaW4gRURJVF9FTV9MaW5lTGVuZ3RoIG5lZWRzCglzdGFydGluZyBsaW5lIGNoYXIgaW5kZXgsIG5vdCBsaW5lIGluZGV4ICg9PSBsaW5lIG51bWJlcikuCgoJKiBpbmNsdWRlL3NobHdhcGkuaCwgZGxscy9zaGx3YXBpL29yZGluYWwuYywgZGxscy9zaGx3YXBpL3JlZy5jLAoJICBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjLCBkbGxzL3NobHdhcGkvdXJsLmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJLSBJbXBsZW1lbnQgb3JkaW5hbHMgNywgOCwgOSwgMTMsIDE0LCAxOSwgMzYuCgktIEltcGxlbWVudCBTSFJlZ1dyaXRlVVNWYWx1ZXtBfFd9LCBVcmxHZXRQYXJ0e0F8V30sIFVybElzLi4ue0F8V30KCjIwMDEtMTEtMTIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgc29tZSByYWNlIGNvbmRpdGlvbnMgaW4gbm90aWZpY2F0aW9uIHZzLiBvcGVyYXRpb24KCXN5bmNocm9uaXphdGlvbiB1c2luZyB0aGUgc2FtZSBpbiBwcm9jZXNzIG1lc3NhZ2UgcmluZyBpbiB3YXZlSW4gYXMgaW4KCXdhdmVPdXQuCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVzIHN0dXBpZCBidWcgd2l0aCB0eXBlbGliIGZpbGVuYW1lcy4KCgkqIGRsbHMvdXNlci93bmQxNi5jOgoJTGF3c29uIFdoaXRuZXkgPGxhd3Nvbl93aGl0bmV5QGp1bm8uY29tPgoJQ2FzdCBpZCB0byB1bnNpZ25lZCBpbiBHZXREbGdJdGVtMTYuCgoJKiBkbGxzL2tlcm5lbC9jb21tLmM6CglHZXJzb24gS3VyeiA8R2Vyc29uLkt1cnpAcGVyZ2Ftb24tc29mdHdhcmUuZGU+CglQYXJpdHkgc2V0dGluZ3Mgd2VyZSBub3Qgc2V0IHByb3Blcmx5IGluIEJ1aWxkQ29tbURDQkFuZFRpbWVvdXRzKCkKCWJlY2F1c2Ugb2YgYW4gb2ZmLWJ5LW9uZSBlcnJvci4KCgkqIGRsbHMvY29tbWRsZy9mb250ZGxnLmM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBuZXJpbS5uZXQ+CglGaXhlZCBoYW5kbGluZyBvZiAtMSBpdGVtaWQgaW4gV01fRFJBV0lURU0uCgoJKiBkbGxzL21zdmNydC9tYmNzLmMsIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjLCBkbGxzL21zdmNydC90aW1lLmM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBuZXJpbS5uZXQ+CgktIGltcGxlbWVudCBtYnNjc3BuIG1vc3RseSBhcyBhIHN0dWIKCS0gcmVpbXBsZW1lbnQgbWt0aW1lCgoJKiBkbGxzL3Jhc2FwaTMyL3Jhc2FwaS5jOgoJQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJLSBkb24ndCBmb3JnZXQgdG8gaW5pdGlhbGl6ZSBudW1iZXIgb2YgY29ubmVjdGlvbnMgdG8gMAoJLSBhZGQgIlJBUyBkb2Vzbid0IHdvcmsiIHdhcm5pbmcKCjIwMDEtMTEtMDkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzoKCVNpbW9uIEJyaXRuZWxsIDx1Z2hiYXNoQHlhaG9vLmNvbT4KCUNsZWFuZWQgdXAgdGhlIHdvZFBsYXllciBmdW5jdGlvbmFsaXR5IHRvIG1ha2UgaXQgZWFzaWVyIHRvIGZvbGxvdy4KCUNoYW5nZWQgbm90aWZpY2F0aW9uIHRvIGJlIGNhbGN1bGF0ZWQgZnJvbSBieXRlcyBwbGF5ZWQgcmF0aGVyIHRoYW4KCXRpbWUgZWxhcHNlZC4KCgkqIGRsbHMvbXNhY20vZHJpdmVyLmM6CglUcmF2aXMgTWljaGllbHNlbiA8dGptaWNoaWVsc2VuQHlhaG9vLmNvbT4KCVRlc3QgYml0cyB3aXRoICcmJyBpbnN0ZWFkIG9mICcmJicuCgoJKiB3aW5kb3dzL3N5c21ldHJpY3MuYywgd2luZG93cy9zeXNwYXJhbXMuYzoKCUFuZHJpeSBQYWxhbWFyY2h1ayA8YXBhM2FAeWFob28uY29tPgoJSW1wbGVtZW50ZWQgU1BJX0lDT05IT1JJWk9OVEFMU1BBQ0lORywgU1BJX0lDT05WRVJUSUNBTFNQQUNJTkcgc3lzdGVtCglwYXJhbWV0ZXJzIHByb2Nlc3NpbmcuCgoJKiBwcm9ncmFtcy9yZWdhcGkvcmVnYXBpLmM6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQ29ycmVjdCBoYW5kbGluZyBvZiBzdHJpbmdzIGluIHNldFZhbHVlLgoJQmV0dGVyIGhhbmRsaW5nIG9mIHN0cih4KSBhbmQgaGV4KHgpIGluIHNldFZhbHVlLgoJTWlzYyB0eXBvcy4KCgkqIGRvY3VtZW50YXRpb24vd2luZS5tYW4uaW46CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj5vCglEb2N1bWVudCB0aGUgbmV3IC13aW52ZXIgdmVyc2lvbnMuCgoJKiBkbGxzL3VzZXIvd25kMTYuYzoKCUpvc2h1YSBUaGllbGVuIDx0aGllbGVuQG5ldHByaW5jZS5uZXQ+CglDaGFuZ2VkIEJNXyBtZXNzYWdlcyBTRVRDSEVDSyBhbmQgR0VUQ0hFQ0sgdG8gU0VUQ0hFQ0sxNiBhbmQKCUdFVENIRUNLMTYgaW4gQ2hlY2tEbGdJdGVtMTYgYW5kIElzRGxnSXRlbUNoZWNrZWQxNi4KCUNhc3QgVUlOVDE2IHZhbHVlIHRvIFVJTlQgb3IgSU5UIGRlcGVuZGluZyBvbiBzaWduIGluIFNldERsZ0l0ZW1JbnQxNi4KCgkqIHJlbGF5MzIvYnVpbHRpbjMyLmM6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJUmVjb2duaXplIHRoZSBGcmVlQlNEIGRsb3BlbiBlcXVpdmFsZW50IG9mICJjYW5ub3Qgb3BlbiIuCgoJKiBkbGxzL3NobHdhcGkvc3RyaW5nLmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJVXNlIHByb3BlciB1bmljb2RlIHJvdXRpbmUuCgoJKiBNYWtlLnJ1bGVzLmluOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2Ugb3V0LW9mLXNvdXJjZS10cmVlIGJ1aWxkcyB3b3JrIHdpdGggU29sYXJpcyBtYWtlLgoKMjAwMS0xMS0wOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvdmVyc2lvbi5oLCBBTk5PVU5DRSwgQ2hhbmdlTG9nOgoJUmVsZWFzZSAyMDAxMTEwOC4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KMjAwMS0xMS0wOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbXN2Y3J0L3djcy5jLCBkbGxzL3NobHdhcGkvdXJsLmMsIGluY2x1ZGUvd2luZS91bmljb2RlLmg6CglJbXBsZW1lbnRlZCBpbmxpbmUgdmVyc2lvbiBvZiB0aGUgaXN3eHh4IGZ1bmN0aW9ucy4KCgkqIG1zZG9zL2ludDA5LmMsIG1zZG9zL2ludGVycnVwdHMuYywgbXNkb3MvaW9wb3J0cy5jLAoJICBtc2Rvcy9NYWtlZmlsZS5pbiwgZGxscy93aW5lZG9zL01ha2VmaWxlLmluLCBkbGxzL3dpbmVkb3MvZG9zdm0uYywKCSAgZGxscy93aW5lZG9zL2ludDA5LmMsIGRsbHMvd2luZWRvcy93aW5lZG9zLnNwZWM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCU1vdmVkIHRoZSBpbnQgOSAoa2V5Ym9hcmQpIGhhbmRsZXIgdG8gZGxscy93aW5lZG9zLgoKCSogZGxscy91c2VyL2NvbW0xNi5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQHN0YXJ0LmNvbS5hdT4KCUZpbmQgb3V0IGhvdyBtdWNoIGRhdGEgaXMgYXZhaWxhYmxlIHdoZW4gY2FsbGluZyBSZWFkRmlsZUV4LgoKMjAwMS0xMS0wNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMveDExZHJ2L3dpbnBvcy5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAbmVyaW0ubmV0PgoJUmVwYWlyZWQgY2hpbGQgd2luZG93IGFjdGl2YXRpb24gYnJva2VuIGJ5IHByZXZpb3VzIGNoYW5nZS4KCgkqIHdpbmRvd3Mvd2luLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkIGR1bXBpbmcgb2Ygd2luZG93IHN0eWxlcyBhdCB0aGUgd2luZG93IGNyZWF0aW9uIHRpbWUuCgoJKiBtc2Rvcy92Z2EuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglBZGRlZCBhIGZldyBkZWZhdWx0IHBhbGV0dGUgZW50cmllcyBmb3IgdGhlIFZHQS9NQ0dBIDI1Ni1jb2xvciBtb2RlLgoJTWFkZSB0aGUgVkdBIG1vZGUgc2V0IGdvIHRocm91Z2ggUnVuSW5UaHJlYWQsIHNvIHRoYXQgdGhlIFZHQSBncmFwaGljcwoJd2luZG93IGdldHMgb3duZWQgYnkgdGhlIHJpZ2h0IHRocmVhZC4KCgkqIHNlcnZlci90aHJlYWQuYzoKCUF2b2lkIGZ0cnVuY2F0ZSB0byB3b3JrIGFyb3VuZCBicm9rZW4gVU1TRE9TIGZpbGUgc3lzdGVtLgoKCSogd2luZG93cy9zeXNtZXRyaWNzLmMsIHdpbmRvd3Mvc3lzcGFyYW1zLmM6CglBbmRyaXkgUGFsYW1hcmNodWsgPGFwYTNhQHlhaG9vLmNvbT4KCUNyZWF0ZWQgbmV3IGluZnJhc3RydWN0dXJlIGZvciBTeXN0ZW1QYXJhbWV0ZXJzSW5mbyBmdW5jdGlvbi4gVXNlZCBpdAoJdG8gaW1wbGVtZW50IHByb2Nlc3NpbmcgZm9yIFNQSV9HRVQvU0VUQkVFUCwgU1BJX0dFVC9TRVRCT1JERVIsCglTUElfR0VUL1NFVFNIT1dTT1VORFMgc3lzdGVtIHBhcmFtZXRlcnMuCgoJKiBkb2N1bWVudGF0aW9uL2FyY2hpdGVjdHVyZS5zZ21sOgoJQmlsbCBNZWRsYW5kIDxtZWRiaTAxQGFjY3BhYy5jb20+CglNaW5vciBncmFtbWF0aWNhbCBjb3JyZWN0aW9ucy4KCgkqIG1zZG9zL2RwbWkuYywgZGxscy93aW5lZG9zL21vZHVsZS5jLCBkbGxzL3dpbmVkb3Mvd2luZWRvcy5zcGVjLAoJICBpbmNsdWRlL2NhbGxiYWNrLmgsIGluY2x1ZGUvZG9zZXhlLmg6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUFkZGVkIFJ1bkluVGhyZWFkIGNhbGxvdXQgdG8gd2luZWRvcy4KCgkqIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci90cmFjZS5jLCBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsCgkgIHNjaGVkdWxlci9zeW5jaHJvLmMsIHNlcnZlci9uYW1lZF9waXBlLmMsIGRsbHMva2VybmVsL3N5bmMuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0BzdGFydC5jb20uYXU+CglNYWtlIENvbm5lY3ROYW1lZFBpcGUgd29yayBpbiBvdmVybGFwcGVkIG1vZGUuCgoJKiBkbGxzL2tlcm5lbC9jb21tLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAc3RhcnQuY29tLmF1PgoJSWdub3JlIERTUi9EVFIgZmxvdyBjb250cm9sIGluIERDQi4gdGVybWlvcyBkb2Vzbid0IHN1cHBvcnQgaXQuCgoyMDAxLTExLTA2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS9zaGx3YXBpLmgsIGRsbHMvc2hsd2FwaS9wYXRoLmMsIGRsbHMvc2hsd2FwaS9zaGx3YXBpX21haW4uYywKCSAgZGxscy9zaGx3YXBpL3N0cmluZy5jLCBkbGxzL3dpbmluZXQvaHR0cC5jLCBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYywKCSAgZGxscy9zaGVsbDMyL3NobG1lbnUuYywgZGxscy9jb21tZGxnL2ZpbGVkbGdicm93c2VyLmMsCgkgIGRsbHMvcmljaGVkaXQvcmljaGVkaXQuYywgZGxscy9zaGRvY3Z3L3NoZG9jdndfbWFpbi5jLAoJICBkbGxzL3NoZWxsMzIvY2xpcGJvYXJkLmMsIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYywKCSAgZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3NoZWxsLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZGxscy9zaGVsbDMyL3NoZWxsc3RyaW5nLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGxmaWxlb3AuYywgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jLAoJICBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmM6CglHdXkgQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJLSBEZWZpbmUgcmVzdCBvZiBVUkxfRVNDQVBFLi4uIGFuZCBvdGhlciBmbGFncy4KCS0gRGVmaW5lIGltcGxlbWVudGVkIGludGVyZmFjZXMgZm9yIHJlZy5jIGFuZCB1cmwuYy4KCgkqIGRsbHMvc2hsd2FwaS91cmwuYzoKCUd1eSBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CgktIEltcGxlbWVudCBVUkxfRVNDQVBFX1NFR0VNRU5UX09OTFksIFVSTF9FU0NBUEVfUEVSQ0VOVCwKCSAgYW5kIFVSTF9ET05UX0VTQ0FQRV9FWFRSQV9JTkZPIGluIHRoZSBVcmxFc2NhcGV7QXxXfSByb3V0aW5lcy4KCS0gTWFrZSBVcmxDYW5vbmljYWxpemVBIHVzZSBVcmxDYW5vbmljYWxpemVXLgoJLSBJbXBsZW1lbnQgZnVsbCBmdW5jdGlvbmFsaXR5IGluIFVybENhbm9uaWNhbGl6ZVcuCgktIEltcGxlbWVudCBVcmxDb21iaW5le0F8V30uCgoJKiBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLCBkbGxzL3NobHdhcGkvb3JkaW5hbC5oOgoJR3V5IEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gSW1wbGVtZW50IFNITFdBUElfMSAoQVNDSUkgdmVyc2lvbiBvZiBTSExXQVBJXzIpLgoJLSBGaXggZXJyb3IgaW4gU0hMV0FQSV8xOAoJLSBOZXcgZmlsZSAob3JkaW5hbC5oKSB3aXRoIGRvY3VtZW50YXRpb24gZm9yIF8xLCAmXzIuCgoJKiB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy93aW5wb3MuYywgZGxscy94MTFkcnYvd2lucG9zLmMsCgkgIGluY2x1ZGUvd2lucG9zLmgsIGRsbHMvdHR5ZHJ2L3duZC5jOgoJV2luZG93IGFjdGl2YXRpb24gY2xlYW51cHMuCgoJKiBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJUmV0dXJuIHN1Y2Nlc3MgaW4gQ3JlYXRlUHJvY2VzcyB3aGVuIHdlIHN0YXJ0ZWQgYSBub24tV2luZWxpYiBVbml4Cglwcm9jZXNzLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW46CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkICRYX0xJQlMgcGF0aCB3aGlsZSBzZWFyY2hpbmcgZm9yIGxpYmZyZWV0eXBlLgoKCSogZGxscy9kaW5wdXQvZGV2aWNlLmM6Cgk8bGFyc3RpcUBsYXJzdGlxLmR5bmRucy5vcmc+CglEZXZpY2VzIG5ldmVyIG5lZWQgdG8gYmUgcG9sbGVkLCBzbyByZXR1cm4gRElfTk9FRkZFQ1QgaW4gUG9sbC4KCgkqIHNlcnZlci9zZWxlY3QuYzoKCUJpbGwgTWVkbGFuZCA8bWVkYmkwMUBhY2NwYWMuY29tPgoJUHJldmVudCBkYW5nZXIgb2YgYWNjZXNzaW5nIGZyZWVkIG1lbW9yeSAodGhlb3JldGljYWwgYnV0IHVubGlrZWx5CglidWcpLgoKCSogcHJvZ3JhbXMvcmVnYXBpL3JlZ2FwaS5jOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCXN0cnNlcCBpcyBub3QgaW1wbGVtZW50ZWQgb24gU29sYXJpcywgcmVwbGFjZSBpdCB3aXRoIG91ciBvd24gcG9ydGFibGUKCWltcGxlbWVudGF0aW9uLgoKCSogbGlicmFyeS9kZWJ1Zy5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglSZW5hbWVkIHN0cnVjdCBvcHRpb24gdG8gc3RydWN0IGRlYnVnX29wdGlvbiB0byBhdm9pZCBjb21waWxlIHByb2JsZW1zCgl3aGVyZSBzdHJ1Y3Qgb3B0aW9uIGlzIGFscmVhZHkgZGVmaW5lZC4KCgkqIHRvb2xzL3dyYy93cml0ZXJlcy5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglGaXggYSBidWZmZXIgb3ZlcmZsb3cgaW4gd3JpdGVfbmFtZV9zdHIsIGJ1ZyBmb3VuZCBieQoJam9uYXRoYW5AY29ydnUuY29tLmF1LgoKCSogdG9vbHMvd2luZWNoZWNrOiA8Z2h1dGNoaXNAY2lzY28uY29tPgoJQXZvaWQgcGFyc2luZyB0aGUgd2hvbGUgdHJlZSB0byBmaW5kIGxpYndpbmUuc28uCgoJKiBsb2FkZXIvbW9kdWxlLmMsIHdpbmRvd3Mvc3lzcGFyYW1zLmMsIGRsbHMvdXNlci9leHRpY29uLmMsCgkgIGRsbHMvd3NvY2szMi9zb2NrZXQuYywgZ3JhcGhpY3Mvd2luMTZkcnYvaW5pdC5jLAoJICBncmFwaGljcy93aW4xNmRydi9wcnRkcnYuYywgZGxscy9zaGx3YXBpL3JlZy5jLAoJICBkbGxzL3NobHdhcGkvc3RyaW5nLmMsIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYywKCSAgZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYywgZGxscy9zaGVsbDMyL3NobG1lbnUuYywKCSAgZGxscy9zaGVsbDMyL3Nodl9pdGVtX2NtZW51LmMsIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jLAoJICBkbGxzL3NoZWxsMzIvY2hhbmdlbm90aWZ5LmMsIGRsbHMvY29tY3RsMzIvY29tYm9leC5jLAoJICBkbGxzL2NvbWN0bDMyL3RhYi5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZ2Jyb3dzZXIuYywKCSAgZGxscy9rZXJuZWwvdG9vbGhlbHAuYywgZGxscy9udGRsbC9yZWcuYywgY29udHJvbHMvY29tYm8uYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRG9uJ3QgcHJlZml4ICVwIHdpdGggMHguCglWYXJpb3VzIEVuZ2xpc2ggZml4ZXMuCgoJKiB3aW5kb3dzL3gxMWRydi9jbGlwYm9hcmQuYywgd2luZG93cy9jbGFzcy5jLCB3aW5kb3dzL2RpYWxvZy5jLAoJICB0b29scy93cmMvcGFyc2VyLmwsIHRvb2xzL3dyYy9wcGwubCwgd2luMzIvZGV2aWNlLmMsCgkgIHNlcnZlci9yZXF1ZXN0LmMsIHRvb2xzL21ha2VfWDExd3JhcHBlcnMsIHRvb2xzL3dpbmVidWlsZC9idWlsZC5oLAoJICB0b29scy93aW5lYnVpbGQvc3BlYzE2LmMsIHRvb2xzL3dpbmVidWlsZC91dGlscy5jLCBtc2Rvcy9kb3NtZW0uYywKCSAgbXNkb3MvZHBtaS5jLCBtc2Rvcy9pbnQxMC5jLCBzY2hlZHVsZXIvY2xpZW50LmMsCgkgIHNjaGVkdWxlci9zeXNkZXBzLmMsIHNjaGVkdWxlci90aHJlYWQuYywgbWVtb3J5L2dsb2JhbC5jLAoJICBtZW1vcnkvdmlydHVhbC5jLCBtaXNjL2NwdS5jLCBsaWJyYXJ5L3BvcnQuYywgbG9hZGVyL2VsZi5jLAoJICBsb2FkZXIvbmUvbW9kdWxlLmMsIGxvYWRlci9uZS9yZXNvdXJjZS5jLCBpbmNsdWRlL3dpbmUvcG9ydC5oLAoJICBpbmNsdWRlL2Nkcm9tLmgsIGluY2x1ZGUvY29uZmlnLmguaW4sIGluY2x1ZGUvY29uc29sZS5oLAoJICBpbmNsdWRlL2dkaS5oLCBpbmNsdWRlL2hlYXAuaCwgaW5jbHVkZS90aHJlYWQuaCwgaW5jbHVkZS90c19zaGFwZS5oLAoJICBpbmNsdWRlL3RzX3hmODZkZ2EuaCwgaW5jbHVkZS90c194Zjg2ZGdhMi5oLCBpbmNsdWRlL3RzX3hmODZ2bW9kZS5oLAoJICBpbmNsdWRlL3RzX3hsaWIuaCwgaW5jbHVkZS90c194cG0uaCwgaW5jbHVkZS90c194cmVuZGVyLmgsCgkgIGluY2x1ZGUvdHNfeHJlc291cmNlLmgsIGluY2x1ZGUvdHNfeHNobS5oLCBpbmNsdWRlL3RzX3h1dGlsLmgsCgkgIGluY2x1ZGUvdHNfeHZpZGVvLmgsIGluY2x1ZGUvd2luZV9nbC5oLCBpbmNsdWRlL3gxMWRydi5oLAoJICBkbGxzL3gxMWRydi9kZ2EyLmgsIGRsbHMveDExZHJ2L3gxMWRkcmF3LmgsIGRsbHMveDExZHJ2L3h2aWRtb2RlLmgsCgkgIGZpbGVzL2RyaXZlLmMsIGRsbHMvd2lubW0vd2luZW9zcy9vc3MuaCwgZGxscy93aW5zb2NrL2FzeW5jLmMsCgkgIGRsbHMvd2luc29jay9zb2NrZXQuYywgZGxscy90dHlkcnYvYml0bWFwLmMsIGRsbHMvdHR5ZHJ2L29iamVjdHMuYywKCSAgZGxscy90dHlkcnYvcGFsZXR0ZS5jLCBkbGxzL3R0eWRydi90dHlkcnYuaCwgZGxscy90dHlkcnYvdXNlci5jLAoJICBkbGxzL250ZGxsL21pc2MuYywgZGxscy9vZGJjMzIvcHJveHlvZGJjLmMsIGRsbHMva2VybmVsL2NvbW0uYywKCSAgZGxscy9tc3ZjcnQvbXN2Y3J0LmgsIGNvbnRyb2xzL21lbnUuYywgZGxscy9kZHJhdy9tZXNhLmMsCgkgIGRsbHMvZHBsYXl4L2RwbGF5LmMsIGNvbmZpZ3VyZS5pbiwgY29uc29sZS94dGVybS5jLCBjb25maWd1cmU6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJRml4IHRoZSAjaW5jbHVkZSBvcmRlciBmb3IgY29uZmlnLmguCglBZGQgI2luY2x1ZGUgImNvbmZpZy5oIiBkaXJlY3RpdmVzIHdoZXJlIG5lZWRlZC4KCgkqIGRsbHMvbmV0YXBpMzIvbmV0YXBpMzIuYywgaW5jbHVkZS9jb25maWcuaC5pbiwgaW5jbHVkZS9kZWJ1Z3Rvb2xzLmgsCgkgIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2UgZGVidWd0b29scy5oIGluZGVwZW5kZW50IGZyb20gY29uZmlnLmguCgoJKiBzZXJ2ZXIvd2luZG93LmM6CglBbGxvdyBvd25lciB0byBiZSB0aGUgZGVza3RvcCB3aW5kb3cuCgoJKiBwcm9ncmFtcy9yZWdhcGkvcmVnYXBpLmM6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJVGhlICdkd29yZCcgdmFsdWVzIHNob3VsZCBiZSBzdG9yZWQgYXMgYmlnIGVuZGlhbiB2YWx1ZXMuCgoJKiBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL25iMzAuaCwgY29uZmlndXJlLmluLCBkbGxzL01ha2VmaWxlLmluLAoJICBkbGxzL25ldGFwaTMyLy5jdnNpZ25vcmUsIGRsbHMvbmV0YXBpMzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvbmV0YXBpMzIvbmV0YXBpMzIuYywgZGxscy9uZXRhcGkzMi9uZXRhcGkzMi5zcGVjLCBjb25maWd1cmU6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAc3RhcnQuY29tLmF1PgoJQWRkZWQgbmV0YXBpMzIuZGxsIGFuZCB0aGUgTmV0YmlvcygpIGNhbGwuCgoJKiB3aW5kb3dzL2NhcmV0LmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUZvciBkcmF3aW5nIGEgY2FyZXQsIGludGVybmFsbHkgcmVwbGFjZWQgdGhlIGJydXNoIGJ5IGEgYml0bWFwICh0aGlzCglhbGxvd3MgY2FyZXQgb2Ygc2l6ZSA+IDh4OCksCgoJKiBtaXNjL29wdGlvbnMuYywgbWlzYy92ZXJzaW9uLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFkZCB2ZXJzaW9ucyBmb3IgV2luTUUgYW5kIFdpblhQLgoJRml4IHRoZSAxNmJpdCB2ZXJzaW9uIHJldHVybiBmb3IgV2luMjAwMC4KCU1vcmUgY2xvc2VseSBtYXRjaCB0aGUgV2luOTUvOTggQ1NEVmVyc2lvbiBmaWVsZHMuCglFbmhhbmNlIGRvY3VtZW50YXRpb24gb2YgV2luOTUgdmVyc2lvbiBudW1iZXJzLgoJQ29uZmlybSB0aGUgZXhpc3RpbmcgZGF0YSBmb3IgV2luMjAwMC4KCgkqIGRsbHMvc2hsd2FwaS9yZWcuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRml4IGluY29ycmVjdCB1c2Ugb2YgYSBVbmljb2RlIHN0cmluZyBsaXRlcmFsLgoKCSogZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsIG9iamVjdHMvZm9udC5jOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCB0cmFjZXMgdG8gaGVscCBkaWFnbm9zZSBzeXN0ZW1hdGljIGNhY2hlZC1tZXRyaWNzIHJlZ2VuZXJhdGlvbgoJcHJvYmxlbXMuCgoJKiBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVJlbmFtZSBTSUNfQ29tcGFyZUVudHJ5cyB0byBTSUNfQ29tcGFyZUVudHJpZXMsIGFuZCBtYWtlIGl0IHN0YXRpYy4KCgkqIGRsbHMvbXNybGUzMi8uY3ZzaWdub3JlLCBkbGxzL21zcmxlMzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvbXNybGUzMi9tc3JsZTMyLmMsIGRsbHMvbXNybGUzMi9tc3JsZTMyLnNwZWMsIGRsbHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvYXZpY2FwMzIvLmN2c2lnbm9yZSwgZGxscy9hdmljYXAzMi9NYWtlZmlsZS5pbiwKCSAgZGxscy9hdmljYXAzMi9hdmljYXAzMi5zcGVjLCBkbGxzL2F2aWNhcDMyL2F2aWNhcDMyX21haW4uYywKCSAgY29uZmlndXJlLCBjb25maWd1cmUuaW46CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJQWRkZWQgc3R1YnMgZm9yIG1zcmxlMzIuZGxsIGFuZCBpbXBsZW1lbnRlZCBSTEU4IGRlY29kZXIuCglBZGRlZCBzdHViIGZvciBhdmljYXAzMi4KCjIwMDEtMTEtMDUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBvYmplY3RzL2ZvbnQuYywgZ3JhcGhpY3MveDExZHJ2L3hmb250LmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQ29udmVydCBHZXRDaGFyV2lkdGggdG8gVW5pY29kZS4KCgkqIGRsbHMvdXNlci9tZXNzYWdlLmM6CglHdXkgQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJTW92ZSBTUFlfRW50ZXJNZXNzYWdlIGNhbGwgYWZ0ZXIgYWxsIHBvc3NpYmxlIGV4aXRzIHNvIHRoYXQgdGhlcmUgd2lsbAoJYmUgYSBtYXRjaGluZyBTUFlfRXhpdE1lc3NhZ2UuCgoJKiBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjLCBkbGxzL3NobHdhcGkvc3RyaW5nLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbHN0cmluZy5jOgoJR3V5IEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gSW5kaWNhdGUgdGhhdCBTdHJSZXRUb1N0ck57QXxXfSBhbmQgU3RyUmV0VG9CdWZ7QXxXfSBhcmUgaWRlbnRpY2FsCgkgIGNvZGUgYnV0IGR1cGxpY2F0ZWQgZGVsaWJlcmF0ZWx5LgoJLSBJbXBsZW1lbnQgU3RyUkNockl7QXxXfS4KCgkqIHdpbmRvd3Mvc3B5LmM6CglHdXkgQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJQWRkIHN1cHBvcnQgZm9yIFdpbmUgaW50ZXJuYWwgbWVzc2FnZXMuCgoJKiB0b29scy93aW5lZHVtcC9tYWluLmMsIHRvb2xzL3dpbmVkdW1wL21zbWFuZ2xlLmMsCgkgIHRvb2xzL3dpbmVkdW1wL291dHB1dC5jLCB0b29scy93aW5lZHVtcC9wZS5jLAoJICB0b29scy93aW5lZHVtcC93aW5lZHVtcC5oOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBhbmQgZ2xvYmFsaXplZCBzb21lIHBhdGggYW5kIG1vZHVsZSBuYW1lIGhhbmRsaW5nLgoJVHdlYWtlZCB0aGUgZGVtYW5nbGluZyBvZiBmdW5jdGlvbiBwb2ludGVycyBhcyBmdW5jdGlvbiBwYXJhbWV0ZXJzLgoKCSogZGxscy93aW5tbS93aW5lb3NzL21peGVyLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGRzdCAvIHNyYyBsaW5lcyBpbXBsZW1lbnRhdGlvbi4KCUFkZGVkIG11eC9taXhlciBjb250cm9sIGZvciBtYXN0ZXIgcmVjLgoJQWRkZWQgZnJhbWV3b3JrIGZvciBtdWx0aXBsZSBtaXhlcnMuCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBuZXJpbS5uZXQ+CglUZXN0IGZvciB3c190aW1lb3V0PU5VTEwgaW4gd2luc29jayBzZWxlY3QoKS4KCgkqIGNvbmZpZ3VyZS5pbiwgY29uZmlndXJlOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVRlbGwgU29sYXJpcyB1c2VycyB3aGVyZSB0byBnZXQgWFBNLgoKCSogbGlicmFyeS9wb3J0LmM6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJRkFMU0UgaXMgbm90IGRlZmluZWQgb24gU29sYXJpcy4KCgkqIGdyYXBoaWNzL3gxMWRydi9kaWIuYzoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglGaXggbGluZSBsZW5ndGggY2FsY3VsYXRpb24gaW4gWDExRFJWX0RJQl9Db252ZXJ0X2FueV9hc2lzLgoJQ29ycmVjdGx5IGluaXRpYWxpemUgdGhlIGNvbG9yIG1hc2tzIG9mIDI0YnBwIERJQnMuCgoJKiB3aW5kb3dzL2NsYXNzLmM6CglKb3NodWEgVGhpZWxlbiA8dGhpZWxlbkBuZXRwcmluY2UubmV0PgoJRm9yIGdsb2JhbCBjbGFzc2VzLCBHZXRDbGFzc0luZm8gbm93IHJldHVybnMgYSBoYW5kbGUgdG8gVVNFUi4KCgkqIG1zZG9zL2ludGVycnVwdHMuYywgaW5jbHVkZS9taXNjZW11Lmg6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUltcGxlbWVudGVkIGEgZHluYW1pYyB0YWJsZSBvZiBET1MgaW50ZXJydXB0IGhhbmRsZXJzLgoKMjAwMS0xMC0yOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvd2luc3Bvb2wvaW5mby5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAbmVyaW0ubmV0PgoJRml4IFJlZ1NldFZhbHVlRXggY2FsbHMgYW5kIGNyYXNoIHdoZW4gRHJpdmVyTmFtZT0iIiBpbiByZWdpc3RyeS4KCgkqIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJUHJvdGVjdCBhZ2FpbnN0IGFuIGludGVycnVwdC1wZW5kaW5nIHNpZ25hbCByZWN1cnNpb24uCgoJKiBkbGxzL3F1YXJ0ei9NYWtlZmlsZS5pbiwgZGxscy9xdWFydHovUkVBRE1FLCBkbGxzL3F1YXJ0ei9hc3luY3NyYy5jLAoJICBkbGxzL3F1YXJ0ei9hdmlkZWMuYywgZGxscy9xdWFydHovYmFzZXBpbi5jLCBkbGxzL3F1YXJ0ei9kZXZlbnVtLmMsCgkgIGRsbHMvcXVhcnR6L2RldmVudW0uaCwgZGxscy9xdWFydHovZGV2bW9uLmMsIGRsbHMvcXVhcnR6L2Rldm1vbi5oLAoJICBkbGxzL3F1YXJ0ei9mZ3Bhc3MuYywgZGxscy9xdWFydHovZm1hcC5jLCBkbGxzL3F1YXJ0ei9pZmdyYXBoLmMsCgkgIGRsbHMvcXVhcnR6L2l1bmsuYywgZGxscy9xdWFydHovbXR5cGUuYywgZGxscy9xdWFydHovbXR5cGUuaCwKCSAgZGxscy9xdWFydHovcGFyc2VyLmMsIGRsbHMvcXVhcnR6L3JlZ3N2ci5jLCBkbGxzL3F1YXJ0ei9yZWdzdnIuaCwKCSAgZGxscy9xdWFydHovc2Vla3Bhc3MuYywgZGxscy9xdWFydHovdmlkcmVuLmMsCgkgIGRsbHMvcXVhcnR6L3dhdnBhcnNlLmMsIHdpbmVkZWZhdWx0LnJlZzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglGaXhlZCBzb21lIGJ1Z3MuCglJbXBsZW1lbnRlZCBJUHJvcGVydHlCYWcuCglJbXBsZW1lbnRlZCBzb21lIEZpbHRlck1hcHBlcjIgbWV0aG9kcy4KCUltcGxlbWVudGVkIEFkZFNvdXJjZUZpbHRlci4KCUltcGxlbWVudGVkIFJlbmRlciBwYXJ0aWFsbHkuCglJbXBsZW1lbnRlZCBDb25uZWN0IHBhcnRpYWxseS4KCgkqIGluY2x1ZGUvc3RybWlmLmg6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJQWRkZWQgZGVmaW5pdGlvbnMgb2YgTUVSSVRzLgoKCSogZGxscy9tc3ZpZGVvL21zdmZ3MzIuc3BlYywgZGxscy9tc3ZpZGVvL21zdmlkZW9fbWFpbi5jOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUFkZGVkIHN0dWIgZm9yIElDSW1hZ2VDb21wcmVzcy4KCUltcGxlbWVudGVkIElDSW1hZ2VEZWNvbXByZXNzLgoKCSogZGxscy9zaGx3YXBpL29yZGluYWwuYywgZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CgktIEFkZGVkIHN0dWJzIGZvciBfMTgsXzIxLF8yMiB3aGljaCBzZWVtIHRvIGJlIHVzZWQgb25seSBieSBuYXRpdmUKCSAgc2hkb2N2dy5kbGwKCS0gSW1wbGVtZW50ZWQgXzI2LCBfMjcsIF8yOCwgXzMyLCBhbmQgXzM0IChtb3JlIGlzdy4uLiBmdW5jdGlvbnMpLgoKCSogZGxscy9zaGx3YXBpL3VybC5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCVN0dWIgVXJsQ29tYmluZUEgYW5kIGluaXRpYWwgaW1wbGVtZW50YXRpb24gb2YgVXJsQ29tYmluZVcuCgoJKiBkbGxzL3NobHdhcGkvcmVnLmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJSW1wbGVtZW50IFNIUmVnR2V0Qm9vbFVTVmFsdWV7QXxXfS4KCgkqIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX2ljb25zLnJjOgoJSmVyZW15IE5ld21hbiA8am5ld21hbkBjb2Rld2VhdmVycy5jb20+CglSZXBsYWNlZCBNYXJ0aW5pIGdsYXNzLgoKMjAwMS0xMC0yNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGxvYWRlci9wZV9pbWFnZS5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcHJvY2Vzcy5jOgoJRG9uJ3Qga2VlcCBtYWluIGV4ZSBhbmQgZGxscyBoYW5kbGVzIG9wZW4gd2hlbiB0aGUgZmlsZSBpcyBvbgoJcmVtb3ZhYmxlIG1lZGlhLgoKCSogZGxscy9zaGVsbDMyL3NobHZpZXcuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglBZGQgaGFuZGxpbmcgZm9yIExWTl9HRVRESVNQSU5GT1cuCgoyMDAxLTEwLTI0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9zaGx3YXBpL3JlZy5jOgoJR3V5IEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gQ29ycmVjdCBpbXBsZW1lbnRhdGlvbiBvZiBIVVNLRVkgaW50ZXJuYWxzLCBpbmNsdWRpbmcgZnVuY3Rpb25zOgoJICBTSFJlZ09wZW5VU0tleXtBfFd9LCBTSFJlZ0Nsb3NlVVNLZXksIFNIUmVnR2V0VVNWYWx1ZXtBfFd9LAoJICBTSFJlZ1F1ZXJ5SW5mb1VTS2V5e0F8V30KCS0gSW1wbGVtZW50IFNIUmVnUXVlcnlVU1ZhbHVle0F8V30KCgkqIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmM6CglHdXkgQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJLSAgSW1wbGVtZW50OgoJICAgICAgU0hMV0FQSV8yICAtIElkZW50aWZ5IGludGVybmV0IHByb3RvY29scy4KCSAgICAgIFNITFdBUElfMjUgIC0gIGlzd2FscGhhCgkgICAgICBTSExXQVBJXzMzICAtICBpc3dkaWdpdAoKCSogd2luZG93cy93aW5wb3MuYzoKCUpvc2h1YSBUaGllbGVuIDx0aGllbGVuQG5ldHByaW5jZS5uZXQ+CglTd2l0Y2ggZm9jdXMgdG8gYWN0aXZhdGVkIHdpbmRvdyBldmVuIGlmIG5vIHdpbmRvdyBwcmV2aW91c2x5IGhhZCB0aGUKCWZvY3VzLgoKCSogbWVtb3J5L3ZpcnR1YWwuYzoKCVRyeSB0byB1c2UgcmVhZCBpbnN0ZWFkIG9mIG1tYXAgZm9yIGZpbGVzIG9uIHJlbW92YWJsZSBtZWRpYSwgc28gdGhhdAoJd2UgZG9uJ3QgbmVlZCB0byBrZWVwIHRoZSBtYXBwaW5nIGhhbmRsZSBvcGVuLgoKCSogc2VydmVyL2ZpbGUuYywgc2VydmVyL21hcHBpbmcuYywgc2VydmVyL29iamVjdC5oLAoJICBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvdHJhY2UuYywgZmlsZXMvZG9zX2ZzLmMsIGZpbGVzL2ZpbGUuYywKCSAgaW5jbHVkZS9maWxlLmgsIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwgbWlzYy9yZWdpc3RyeS5jOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglTYXZlIGEgZGlzayBmaWxlJ3MgZHJpdmUgdHlwZSBpbiB0aGUgc2VydmVyIG9iamVjdC4KCjIwMDEtMTAtMjMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL3dpbi5jOiBDb3NtZXRpYyBmaXhlcy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2RldmVudW0vLmN2c2lnbm9yZSwKCSAgZGxscy9kZXZlbnVtL01ha2VmaWxlLmluLCBkbGxzL2RldmVudW0vZGV2ZW51bS5zcGVjLAoJICBkbGxzL2RldmVudW0vZGV2ZW51bV9tYWluLmMsIGRsbHMvbXNkbW8vLmN2c2lnbm9yZSwKCSAgZGxscy9tc2Rtby9NYWtlZmlsZS5pbiwgZGxscy9tc2Rtby9tc2Rtby5zcGVjLAoJICBkbGxzL21zZG1vL21zZG1vX21haW4uYywgZGxscy9xY2FwLy5jdnNpZ25vcmUsCgkgIGRsbHMvcWNhcC9NYWtlZmlsZS5pbiwgZGxscy9xY2FwL3FjYXAuc3BlYywgZGxscy9xY2FwL3FjYXBfbWFpbi5jOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUFkZGVkIHN0dWJzIGZvciBtc2Rtby5kbGwsIHFjYXAuZGxsIGFuZCBkZXZlbnVtLmRsbC4KCgkqIGNvbmZpZ3VyZS5pbiwgZGxscy9nZGkvZnJlZXR5cGUuYywgaW5jbHVkZS9jb25maWcuaC5pbiwKCSAgaW5jbHVkZS9mb250LmgsIG9iamVjdHMvZm9udC5jLCBjb25maWd1cmU6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgR2V0Rm9udERhdGEuCgoJKiBkbGxzL01ha2VmaWxlLmluLCBkbGxzL29sZWF1dDMyL01ha2VmaWxlLmluLAoJICBkbGxzL29sZWF1dDMyL29sZWF1dDMyLnNwZWMsIGRsbHMvb2xlYXV0MzIvcHJvcGVydHlmcmFtZS5jLAoJICBkbGxzL29sZWF1dDMyL3N0dWJzLmM6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJSW1wbGVtZW50ZWQgT2xlQ3JlYXRlUHJvcGVydHlGcmFtZSBhbmQKCU9sZUNyZWF0ZVByb3BlcnR5RnJhbWVJbmRpcmVjdC4KCgkqIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbmNvbi5oOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglNb3ZlZC9hZGRlZCBzb21lIGNvbnNvbGUgZGVmaW5pdGlvbnMuCgoJKiBtaXNjL3ZlcnNpb24uYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUmV2ZXJ0IDE2Yml0IHdpbjk1IHZlcnNpb24gYmFjayB0byBvcmlnaW5hbCB2YWx1ZS4gRml4ZXMgSW5zdGFsbFNoaWVsZAoJaW5zdGFsbGVyIHZlcnNpb24gY2hlY2suCgoJKiBncmFwaGljcy94MTFkcnYvY29kZXBhZ2UuYywgZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsCgkgIGluY2x1ZGUveDExZm9udC5oLCBvYmplY3RzL3RleHQuYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUV4dFRleHRPdXRXIHdpdGggc3ltYm9sIGZvbnRzIHdvcmtzIHdpdGggY2hhcnMgaW4gdGhlIHJhbmdlcwoJMHgwMDAwIC0tIDB4MDBmZiBhbmQgMHhmMDAwIC0tIDB4ZjBmZiBhbmQgbm90LCBmb3IgZXhhbXBsZSwgd2l0aAoJY2hhcnMgaW4gdGhlIFVuaWNvZGUgR3JlZWsgcmFuZ2UuCgoJKiBkbGxzL29sZTMyL2NvbXBvYmouYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUJldHRlciBmYWlsdXJlIG1lc3NhZ2VzIGZvciBDb0NyZWF0ZUluc3RhbmNlLgoKCSogd2luZG93cy9kY2UuYzoKCUZpeGVkIHdpbmRvdyBoYW5kbGUgY2hlY2sgaW4gR2V0RENFeC4KCgkqIHdpbmRvd3Mvd2luLmM6IEEgY291cGxlIG9mIG9wdGltaXphdGlvbnMuCgoJKiB3aW4zMi9leGNlcHQuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglFeHBhbmQgZW52aXJvbm1lbnQgdmFyaWFibGVzIGluICJEZWJ1Z2dlciIgc2V0dGluZy4KCVJlcGxhY2UgZml4ZWQtc2l6ZSBidWZmZXJzIHdpdGggZHluYW1pYyBvbmVzLgoKCSogZGxscy9zaGVsbDMyL2NsYXNzZXMuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVkIHRoZSBiZWhhdmlvciBmb3IgU0hHZXRGaWxlSW5mbyB3aGVuIHRoZSBTSEdGSV9VU0VGSUxFQVRUUklCVVRFUwoJZmxhZyBpcyBzZXQuIENvcnJlY3RzIHRoZSBnaXZlbiB0eXBlIGFuZCBpY29uLgoKMjAwMS0xMC0yMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvdHR5ZHJ2L3duZC5jLCBkbGxzL3VzZXIvbWVzc2FnZS5jLCBkbGxzL3VzZXIvdXNlcl9tYWluLmMsCgkgIGRsbHMveDExZHJ2L3dpbmRvdy5jLCBkbGxzL3gxMWRydi93aW5wb3MuYywgZGxscy94MTFkcnYveDExZHJ2LnNwZWMsCgkgIGluY2x1ZGUvdXNlci5oLCBpbmNsdWRlL3dpbi5oLCBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsCgkgIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci90cmFjZS5jLAoJICBzZXJ2ZXIvd2luZG93LmMsIHdpbmRvd3MvZGVmd25kLmMsIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3Mvd2lucG9zLmMsCgkgIGNvbnRyb2xzL3Njcm9sbC5jOgoJU3RvcmUgaW4gdGhlIHNlcnZlciBhbGwgdGhlIHdpbmRvdyBpbmZvcm1hdGlvbiBhY2Nlc3NpYmxlIHdpdGgKCUdldC9TZXRXaW5kb3dMb25nLgoKCSogZGxscy93aW5tbS93aW5lb3NzL21pZGkuYywgZmlsZXMvZmlsZS5jLCBkbGxzL2FkdmFwaTMyL3NlcnZpY2UuYywKCSAgZGxscy9udGRsbC9vbS5jLCBkbGxzL29sZTMyL2NvbXBvc2l0ZW1vbmlrZXIuYywKCSAgZGxscy9vbGUzMi9lcnJvcmluZm8uYywgZGxscy9vbGUzMi9maWxlbW9uaWtlci5jLAoJICBkbGxzL29sZTMyL2hnbG9iYWxzdHJlYW0uYywgZGxscy9vbGUzMi9zdGdfc3RyZWFtLmMsCgkgIGRsbHMvd2luaW5ldC9mdHAuYywgZGxscy93aW5pbmV0L2ludGVybmV0LmMsCgkgIGRsbHMvd2lubW0vbWNpd2F2ZS9tY2l3YXZlLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVNwZWxsaW5nLCBncmFtbWFyIGFuZCBhIGJpdCBvZiBjb21tZW50IGZvcm1hdHRpbmcgZml4ZXMuCgoJKiBkbGxzL01ha2VmaWxlLmluLCBkbGxzL3F1YXJ0ei9NYWtlZmlsZS5pbiwgZGxscy9xdWFydHovYXN5bmNzcmMuYywKCSAgZGxscy9xdWFydHovYXN5bmNzcmMuaCwgZGxscy9xdWFydHovYXVkcmVuLmMsIGRsbHMvcXVhcnR6L2F1ZHJlbi5oLAoJICBkbGxzL3F1YXJ0ei9hdmlkZWMuYywgZGxscy9xdWFydHovYXZpcGFyc2UuYywKCSAgZGxscy9xdWFydHovYmFzZWZpbHQuYywgZGxscy9xdWFydHovYmFzZWZpbHQuaCwKCSAgZGxscy9xdWFydHovYmFzZXBpbi5jLCBkbGxzL3F1YXJ0ei9jc2NvbnYuYywgZGxscy9xdWFydHovZmdwYXNzLmMsCgkgIGRsbHMvcXVhcnR6L2ltZmlsdGVyLmMsIGRsbHMvcXVhcnR6L21haW4uYywgZGxscy9xdWFydHovbWVtYWxsb2MuYywKCSAgZGxscy9xdWFydHovbXR5cGUuYywgZGxscy9xdWFydHovbXR5cGUuaCwgZGxscy9xdWFydHovcGFyc2VyLmMsCgkgIGRsbHMvcXVhcnR6L3BhcnNlci5oLCBkbGxzL3F1YXJ0ei9xdWFydHouc3BlYywgZGxscy9xdWFydHovc2FtcGxlLmMsCgkgIGRsbHMvcXVhcnR6L3NlZWtwYXNzLmMsIGRsbHMvcXVhcnR6L3NlZWtwYXNzLmgsCgkgIGRsbHMvcXVhcnR6L3ZpZGVvYmx0LmMsIGRsbHMvcXVhcnR6L3ZpZGVvYmx0LmgsCgkgIGRsbHMvcXVhcnR6L3ZpZHJlbi5jLCBkbGxzL3F1YXJ0ei92aWRyZW4uaCwgZGxscy9xdWFydHovd2F2cGFyc2UuYywKCSAgZGxscy9xdWFydHoveGZvcm0uYywgZGxscy9xdWFydHoveGZvcm0uaDoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglGaXhlZCBzb21lIGJ1Z3MuCglJbXBsZW1lbnRlZCBBVkkgRGVjb21wcmVzc29yLgoJU3RhcnRlZCBpbXBsZW1lbnRpbmcgQ29sb3IgU3BhY2UgQ29udmVydGVyLgoJU3RhcnRlZCBpbXBsZW1lbnRpbmcgc2Vla2luZy4KCgkqIGRlYnVnZ2VyL3dpbmVkYmcuYzogQWRkZWQgIi0tYXV0byIgb3B0aW9uLgoKCSogZGxscy93aW5lcHMvaW5pdC5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBzdXBwb3J0IGZvciBlbnZpcm9ubWVudCB2YXJpYWJsZXMgaW4gdGhlIHByaW50ZXIgc2V0dGluZ3MuCglSZW1vdmUgdGhlIGZpeGVkLXNpemUgYnVmZmVycy4KCgkqIGluY2x1ZGUvbXN2Y3J0L3N5cy9zdGF0LmgsIGluY2x1ZGUvbXN2Y3J0L3N5cy90aW1lYi5oLAoJICBpbmNsdWRlL21zdmNydC9zeXMvdHlwZXMuaCwgaW5jbHVkZS9tc3ZjcnQvc3lzL3V0aW1lLmgsCgkgIGluY2x1ZGUvbXN2Y3J0L2NvbmlvLmgsIGluY2x1ZGUvbXN2Y3J0L2NydGRiZy5oLAoJICBpbmNsdWRlL21zdmNydC9jdHlwZS5oLCBpbmNsdWRlL21zdmNydC9kaXJlY3QuaCwKCSAgaW5jbHVkZS9tc3ZjcnQvZG9zLmgsIGluY2x1ZGUvbXN2Y3J0L2VoLmgsIGluY2x1ZGUvbXN2Y3J0L2ZjbnRsLmgsCgkgIGluY2x1ZGUvbXN2Y3J0L2lvLmgsIGluY2x1ZGUvbXN2Y3J0L2xvY2FsZS5oLAoJICBpbmNsdWRlL21zdmNydC9tYWxsb2MuaCwgaW5jbHVkZS9tc3ZjcnQvcHJvY2Vzcy5oLAoJICBpbmNsdWRlL21zdmNydC9zZWFyY2guaCwgaW5jbHVkZS9tc3ZjcnQvc3RkZGVmLmgsCgkgIGluY2x1ZGUvbXN2Y3J0L3N0ZGlvLmgsIGluY2x1ZGUvbXN2Y3J0L3N0ZGxpYi5oLAoJICBpbmNsdWRlL21zdmNydC9zdHJpbmcuaCwgaW5jbHVkZS9tc3ZjcnQvdGltZS5oLAoJICBpbmNsdWRlL21zdmNydC93Y2hhci5oLCBpbmNsdWRlL21zdmNydC93Y3R5cGUuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQWRkZWQgX19XSU5FX1VTRV9NU1ZDUlQuCgoJKiBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvbnRkbGwvd2NzdHJpbmcuYzoKCURhdmlkIEVsbGlvdHQgPGRmZUB0Z3diZC5vcmc+CglJbXBsZW1lbnRlZCB0aGUgd2NzdG91bCBmdW5jdGlvbi4KCjIwMDEtMTAtMjEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkZWJ1Z2dlci93aW5lZGJnLmMsIGRsbHMvb2xlYXV0MzIvb2xlMmRpc3AuYywKCSAgZG9jdW1lbnRhdGlvbi9wYXRjaGVzLnNnbWwsIGRvY3VtZW50YXRpb24vc2FtcGxlcy9jb25maWcsCgkgIGZpbGVzL2Rvc19mcy5jLCBmaWxlcy9wcm9maWxlLmMsIGdyYXBoaWNzL3gxMWRydi9vZW1iaXRtYXAuYywKCSAgbWVtb3J5L2luc3RyLmMsIHRvb2xzL3dpbmVjaGVjaywgd2luMzIvZXhjZXB0LmMsIHdpbmRvd3Mva2V5Ym9hcmQuYywKCSAgd2luZG93cy93aW4uYzoKCUFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCUNvc21ldGljcy4KCgkqIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJLSBBZGQgc3R1YnMgZm9yIF8yNSwgXzMzLCBfMzUKCS0gQWRkL2NvcnJlY3QgY29kZSBmb3I6IF8xNSwgXzI5LCBfMzAsIF8zMSwgXzE1MSwgXzE1MiwgXzE1MywgXzE1NCwKCSAgXzE1OC4KCgkqIGRsbHMvc2hsd2FwaS9yZWcuYywgaW5jbHVkZS9zaGx3YXBpLmg6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJLSBJbXBsZW1lbnQgSFVTS0VZIGRlc2lnbi4KCS0gSW1wbGVtZW50IGZ1bmN0aW9uczogU0hSZWdPcGVuVVNLZXl7QXxXfSwgU0hSZWdDbG9zZVVTS2V5LAoJICBTSFJlZ0dldFVTVmFsdWV7QXxXfSwgU0hSZWdRdWVyeUluZm9VU0tleXtBfFd9CgoJKiBkbGxzL3NobHdhcGkvdXJsLmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJLSBJbXBsZW1lbnQgVXJsQ2Fub25pY2FsaXplVywgVXJsRXNjYXBlVywgVXJsVW5lc2NhcGVXLgoJLSBTdHViIFVybEdldExvY2F0aW9ue0F8V30uCgoJKiBkbGxzL250ZGxsL2RlYnVndG9vbHMuYzoKCUF2b2lkIGNyYXNoaW5nIG9uIG5vbi1pbml0aWFsaXplZCBkZWJ1ZyBpbmZvLgoKCSogaW5jbHVkZS93aW5lL29ial9wcm9wZXJ0eS5oOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUZpeGVkIGEgdHlwby4KCgkqIG9iamVjdHMvZm9udC5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCUltcGxlbWVudGVkIEdldENoYXJhY3RlclBsYWNlbWVudFcuCgoJKiBkbGxzL3gxMWRydi94dmlkbW9kZS5jOgoJQW5kcmV3IExld3lja3kgPGFuZHJld0B0cmFuc2dhbWluZy5jb20+CglYRnJlZTg2IDQuMSBnYW1tYSByYW1wIHN1cHBvcnQuCgoJKiBpbmNsdWRlL2Rzb3VuZC5oOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglGaXhlZCBhIHR5cG8uCgoJKiBkbGxzL2tlcm5lbC9jb21tLmMsIGRsbHMvdXNlci9jb21tMTYuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0BzdGFydC5jb20uYXU+CglSZXR1cm4gVFJVRSBvbiBzdWNjZXNzIGluIENPTU1fQnVpbGRPbGRDb21tRENCLgoJRENCMTYuQmF1ZFJhdGUgPiA1NzYwMCBtZWFucyAxMTUyMDAuCglPcGVuQ29tbTE2IHNob3VsZCB1c2Ugb3ZlcmxhcHBlZCBJL08uCgoyMDAxLTEwLTE4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy90dHlkcnYvdHR5ZHJ2LmgsIGRsbHMvdHR5ZHJ2L3R0eWRydi5zcGVjLCBkbGxzL3R0eWRydi91c2VyLmMsCgkgIGRsbHMvdXNlci9tb3VzZS5jLCBkbGxzL3VzZXIvbW91c2Uuc3BlYywgZGxscy91c2VyL3VzZXJfbWFpbi5jLAoJICBkbGxzL3gxMWRydi9NYWtlZmlsZS5pbiwgZGxscy94MTFkcnYvbW91c2UuYywgZGxscy94MTFkcnYvd2luZG93LmMsCgkgIGRsbHMveDExZHJ2L3gxMWRydi5zcGVjLCBpbmNsdWRlL21vdXNlLmgsIGluY2x1ZGUvdXNlci5oLAoJICBpbmNsdWRlL3gxMWRydi5oLCB3aW5kb3dzL2lucHV0LmMsIHdpbmRvd3MveDExZHJ2L01ha2VmaWxlLmluLAoJICB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jLAoJICB3aW5kb3dzL3gxMWRydi9tb3VzZS5jOgoJQ2hhbmdlZCBYMTEgbW91c2UgZHJpdmVyIHRvIHVzZSBTZW5kSW5wdXQsIGFuZCByZW1vdmVkIFdJTkVfTU9VU0VFVkVOVAoJaGFjay4gTW92ZWQgbW91c2UuYyB0byBkbGxzL3gxMWRydi4KCUFkZGVkIEtleW1hcE5vdGlmeSBldmVudCBoYW5kbGVyLCBhbmQgZml4ZWQgaGFuZGxpbmcgd2l0aCBtdWx0aXBsZQoJYWx0L3NoaWZ0L2NvbnRyb2wga2V5cy4KCVJlbW92ZWQgZGlucHV0IGZ1bmN0aW9ucyBmcm9tIFVTRVIgZHJpdmVyLgoKCSogaW5jbHVkZS93aW51c2VyLmg6IEFkZGVkIGEgZmV3IFhCVVRUT04gZGVmaW5lcy4KCgkqIHdpbmRvd3MvbWRpLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAc3RhcnQuY29tLmF1PgoJVXNlIFdJTl9SZWxlYXNlUHRyIG5vdCBXSU5fUmVsZWFzZVduZFB0ciB3aXRoIFdJTl9HZXRQdHIuCgoJKiBkbGxzL2RpbnB1dC9NYWtlZmlsZS5pbjoKCU1ha2UgZGlucHV0IGEgcHJvcGVybHkgc2VwYXJhdGVkIGRsbC4KCgkqIGRsbHMvZGlucHV0L21vdXNlL21haW4uYzoKCVVzZSBXSF9NT1VTRV9MTCBob29rIGluc3RlYWQgb2YgcmVkaXJlY3RpbmcgdGhlIG1vdXNlIGV2ZW50IGhhbmRsZXIuCgoJKiBkbGxzL2RpbnB1dC9rZXlib2FyZC9tYWluLmM6CglGaXhlZCBHZXREZXZpY2VTdGF0ZSBhbmQgR2V0RGV2aWNlRGF0YSB0byB1c2Ugb25seSBleHBvcnRlZCBBUElzLgoKMjAwMS0xMC0xNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGdyYXBoaWNzL3gxMWRydi9kaWIuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglGaXggdG9ucyBvZiBjb2xvciBjb252ZXJzaW9uIGJ1Z3MuCglSZW9yZ2FuaXplIHRoaW5ncyBtb3JlIHJhdGlvbmFsbHkgYW5kIHNvIHRoYXQgbW9yZSBjb2RlIGlzIHNoYXJlZC4KCgkqIHdpbmRvd3MvaW5wdXQuYzoKCUFuZHJpeSBQYWxhbWFyY2h1ayA8YXBhM2FAeWFob28uY29tPgoJRml4ZWQgbW91c2VfZXZlbnQgYnVnIC0gY3Vyc29yIHdhcyBtb3ZlZCBiZWZvcmUgbmV3IHBvc2l0aW9uIHdhcwoJY2FsY3VsYXRlZC4KCgkqIGRsbHMvbnRkbGwvZGVidWd0b29scy5jOgoJSm9oYW4gR2lsbCA8am9oYW5lQGx5c2F0b3IubGl1LnNlPgoJUmVsYXkgdHJhY2luZyB3b3VsZCBjcmFzaCBpZiBpdCBjYW1lIHVwb24gYSBmdW5jdGlvbiBjYWxsIHdpdGggYW4KCWludmFsaWQgcG9pbnRlciBhcyBhIHBhcmFtZXRlci4KCgkqIHdpbmRvd3MvaW5wdXQuYzogSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJUmVsZWFzaW5nIGEgbW91c2UgYnV0dG9uIG5vdyBjbGVhcnMgYW4gZW50cnkgaW4gdGFibGUKCUlucHV0S2V5U3RhdGVUYWJsZSBpbnN0ZWFkIG9mIEFzeW5jS2V5U3RhdGVUYWJsZS4KCgkqIHdpbmRvd3Mvd2lucG9zLmM6CglCaWxsIE1lZGxhbmQgPG1lZGJpMDFAYWNjcGFjLmNvbT4KCU9ubHkgbW9kaWZ5IHRoZSBhbmNlc3RvciBpZiB5b3UgZmluZCBpdC4KCgkqIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmMsCgkgIGluY2x1ZGUvd2luZS9rZXlib2FyZDE2LmgsIHdpbjMyL2NvbnNvbGUuYywgd2luZG93cy9ob29rLmMsCgkgIHdpbmRvd3MvaW5wdXQuYywgd2luZG93cy9rZXlib2FyZC5jLCB3aW5kb3dzL3N5c3BhcmFtcy5jLAoJICBpbmNsdWRlL2tleWJvYXJkLmgsIGluY2x1ZGUvcXVldWUuaCwgaW5jbHVkZS91c2VyLmgsCgkgIGluY2x1ZGUvd2ludXNlci5oLCBpbmNsdWRlL3gxMWRydi5oLCBkbGxzL3VzZXIvdXNlcl9tYWluLmMsCgkgIGRsbHMvdXNlci9rZXlib2FyZC5zcGVjLCBkbGxzL3VzZXIvbHN0ci5jOgoJQWRkZWQgc3VwcG9ydCBmb3IgbG93LWxldmVsIG1vdXNlIGFuZCBrZXlib2FyZCBob29rcy4KCU1pc2Mga2V5Ym9hcmQgaGFuZGxpbmcgY2xlYW51cHMuCgoJKiB3aW5kb3dzL21lc3NhZ2UuYywgZGxscy91c2VyL21lc3NhZ2UuYywgaW5jbHVkZS9tZXNzYWdlLmgsCgkgIHNlcnZlci9tYWluLmMsIHNlcnZlci9xdWV1ZS5jLCBzZXJ2ZXIvcmVxdWVzdC5jLCBzZXJ2ZXIvcmVxdWVzdC5oOgoJTWFrZSBzdXJlIHRoYXQgR2V0TWVzc2FnZVBvcyBhbmQgR2V0TWVzc2FnZVRpbWUgcmV0dXJuIHNhbmUgdmFsdWVzCglmb3IgYWxsIG1lc3NhZ2VzLgoKCSogZGxscy9kZHJhdy9kc3VyZmFjZS91c2VyLmM6CglKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglXaGVuIGEgc3VyZmFjZSBiZWNvbWVzIHByaW1hcnkgc3VyZmFjZSwgbWFyayB0aGUgd2hvbGUgc3VyZmFjZSBkYW1hZ2VkLgoKCSogZ3JhcGhpY3MveDExZHJ2L3BhbGV0dGUuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglVc2UgdGhlIHNhbWUgY29sb3IgY29udmVyc2lvbiBhbGdvcml0aG0gYXMgdGhlIERJQiBjb2RlIChhbmQgV2luZG93cyksCglpLmUuIHNoaWZ0cywgbm90IE11bERpdnMuCglGaXggdGhlIGdyYXlzY2FsZSBmb3JtdWxhLgoKCSogZmlsZXMvZmlsZS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQHN0YXJ0LmNvbS5hdT4KCVNlcGFyYXRlIGNvZGUgdG8gb3ZlcmxhcHBlZCB0aW1lb3V0cyBpbnRvIEZJTEVfR2V0VGltZW91dC4KCjIwMDEtMTAtMTYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3VzZXIvbWVzc2FnZS5jLCBkbGxzL3VzZXIvdXNlcl9tYWluLmMsIGRsbHMveDExZHJ2L3dpbmRvdy5jLAoJICBkbGxzL3gxMWRydi93aW5wb3MuYywgaW5jbHVkZS9xdWV1ZS5oLCBpbmNsdWRlL3VzZXIuaCwKCSAgaW5jbHVkZS93aW4uaCwgaW5jbHVkZS93aW5wb3MuaCwgd2luZG93cy9kY2UuYywgd2luZG93cy9wYWludGluZy5jLAoJICB3aW5kb3dzL3F1ZXVlLmMsIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3Mvd2lucG9zLmMsCgkgIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIGNvbnRyb2xzL2ljb250aXRsZS5jLCBkbGxzL3R0eWRydi93bmQuYzoKCUFkZGVkIGludGVybmFsIFdpbmUgbWVzc2FnZXMgdG8gcGVyZm9ybSBTZXRXaW5kb3dQb3MsIFNob3dXaW5kb3cgYW5kCglTZXRQYXJlbnQgaW4gdGhlIGNvcnJlY3QgdGhyZWFkLgoJUmVwbGFjZSBRVUVVRV9Jc0V4aXRpbmdRdWV1ZSBieSBVU0VSX0lzRXhpdGluZ1RocmVhZC4KCVN0b3JlIHdpbmRvdyByZWN0YW5nbGVzIGluIHRoZSBzZXJ2ZXIuCglQcmV2ZW50IERlc3Ryb3lXaW5kb3cgb24gd2luZG93cyBub3QgYmVsb25naW5nIHRvIHRoZSBjdXJyZW50IHRocmVhZC4KCgkqIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci90cmFjZS5jLCBzZXJ2ZXIvd2luZG93LmMsCgkgIHRvb2xzL21ha2VfcmVxdWVzdHMsIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwKCSAgc2VydmVyL3Byb3RvY29sLmRlZjoKCUFkZGVkIHJlcXVlc3RzIHRvIHN0b3JlIHdpbmRvdyByZWN0YW5nbGVzIGluIHRoZSBzZXJ2ZXIuCgoJKiBjb250cm9scy9tZW51LmMsIGNvbnRyb2xzL3Njcm9sbC5jLCBkbGxzL3VzZXIvY29udHJvbHMuaCwKCSAgaW5jbHVkZS9ub25jbGllbnQuaCwgd2luZG93cy9kZWZ3bmQuYywgd2luZG93cy9ub25jbGllbnQuYzoKCU1vdmVkIHNjcm9sbGJhciB0cmFja2luZyBjb2RlIHRvIHNjcm9sbC5jLgoJQXZvaWQgdW5uZWNlc3NhcnkgY29vcmRpbmF0ZXMgY29udmVyc2lvbiBpbiBOQ19IYW5kbGVTeXNDb21tYW5kLgoKCSogUkVBRE1FLCBkb2N1bWVudGF0aW9uL2J1Z3Muc2dtbCwgZG9jdW1lbnRhdGlvbi9jdnMtcmVncmVzc2lvbi5zZ21sOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAbmVyaW0ubmV0PgoJTWlzYyBkb2MgdXBkYXRlcy4KCgkqIHdpbmVkZWZhdWx0LnJlZzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJUmVnaXN0cnkgZW50cmllcyBmb3Igc3Rkb2xlMzIudGxiLgoKCSogdG9vbHMvd2luZWR1bXAvbWFpbi5jLCB0b29scy93aW5lZHVtcC9vdXRwdXQuYywgdG9vbHMvd2luZWR1bXAvcGUuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CgktIGVsaW1pbmF0ZSBkaWZmZXJlbnQgc2VnbWVudGF0aW9uIGZhdWx0cy4KCS0gd2hlbiBhdHRlbXB0aW5nIHRvIG9wZW4gYSBkbGwsIGFwcGVuZCAiLmRsbCIgdG8gZmluZCBpdCAod2FzCgkgIHN0cmlwcGVkIHByZXZpb3VzbHkpLgoJLSBpZGVudGlmeSBuYW1lZCBleHBvcnRzIHNvIHRoYXQgdGhlIG9yZGluYWwgbnVtYmVyIGlzICJAIiBpbiAuc3BlYwoJICBmaWxlLgoJLSBzZXR1cCBvdXRwdXQgZGxsIG5hbWUgcHJpb3IgdG8gY3JlYXRpbmcgb3JkaW5hbCBzeW1ib2xzLgoJLSBkb24ndCBvdmVybGF5IHRoZSBuYW1lZCBleHBvcnRzIHdpdGggdGhlIG9yZGluYWwgZXhwb3J0cy4KCS0gY29ycmVjdCB0ZXN0IGZvciBsYXN0IHN5bWJvbC4KCS0gZml4IGdlbmVyYXRlZCBpbnN0YWxsIHNjcmlwdCB0byBtYXRjaCBjdXJyZW50IG1ha2UgZmlsZXMuCgoyMDAxLTEwLTE1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy9tZGkuYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQG5lcmltLm5ldD4KCUZpeCB0aGUgY2FzZSB3aGVyZSBjaGlsZD0wIChsYXN0IGNoaWxkKSBpbiBNRElfQ2hpbGRBY3RpdmF0ZS4KCgkqIGNvbnRyb2xzL2ljb250aXRsZS5jLCBjb250cm9scy9zY3JvbGwuYywgZGxscy91c2VyL21zZzE2LmMsCgkgIGRsbHMveDExZHJ2L2Rlc2t0b3AuYywgZGxscy94MTFkcnYvc2Nyb2xsLmMsIGRsbHMveDExZHJ2L3dpbmRvdy5jLAoJICBkbGxzL3gxMWRydi93aW5wb3MuYywgaW5jbHVkZS93aW4uaCwgd2luZG93cy9jbGFzcy5jLCB3aW5kb3dzL2RjZS5jLAoJICB3aW5kb3dzL2RlZmRsZy5jLCB3aW5kb3dzL2RlZnduZC5jLCB3aW5kb3dzL2RpYWxvZy5jLCB3aW5kb3dzL21kaS5jLAoJICB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy9ub25jbGllbnQuYywgd2luZG93cy9wYWludGluZy5jLAoJICB3aW5kb3dzL3NweS5jLCB3aW5kb3dzL3RpbWVyLmMsIHdpbmRvd3Mvd2luLmM6CglSZW5hbWVkIFdJTl9HZXRXbmRQdHIgaW50byBXSU5fR2V0UHRyIGFuZCBhZGRlZCBjb3JyZXNwb25kaW5nCglXSU5fUmVsZWFzZVB0ci4gU3RhcnRlZCB1c2luZyBpdCBpbnN0ZWFkIG9mIFdJTl9GaW5kV25kUHRyIHdoZXJlIHdlCglkb24ndCBuZWVkIHRvIGFjY2VzcyB3aW5kb3dzIG9mIG90aGVyIHByb2Nlc3Nlcy4KCgkqIGluY2x1ZGUvdXVpZHMuaDoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglBZGRlZCBzb21lIG1pc3NpbmcgR1VJRHMuCgoJKiBkbGxzL21zdmNydC9maWxlLmMsIGluY2x1ZGUvbXN2Y3J0L3N0ZGlvLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJVGhlIF9JT1hYWCBtYWNyb3MgY29uZmxpY3Qgd2l0aCBzeXN0ZW0gaGVhZGVycyBvbiBTb2xhcmlzLiBQcmVmaXgKCXRoZW0uCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwuYzoKCUthaSBNb3JpY2ggPG1haWxAa2FpLW1vcmljaC5kZT4KCUludGVybmFsRXh0cmFjdEljb24xNiBmb3Jnb3QgdG8gY2xvc2UgZmlsZSBoYW5kbGUuCgoJKiBpbmNsdWRlL3dpbmJhc2UuaCwgbWVtb3J5L2F0b20uYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQWRkIElOVkFMSURfQVRPTSBhbmQgTUFYSU5UQVRPTSB0byB3aW5iYXNlLmguCglSZXBsYWNlIE1JTl9TVFJfQVRPTSB3aXRoIE1BWElOVEFUT00uCgoyMDAxLTEwLTE0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy9jbGFzcy5jLCB3aW5kb3dzL2RpYWxvZy5jLCBsb2FkZXIvZWxmLmMsIGxvYWRlci9uZS9tb2R1bGUuYywKCSAgbG9hZGVyL25lL3Jlc291cmNlLmMsIG1lbW9yeS9nbG9iYWwuYywgbWVtb3J5L3ZpcnR1YWwuYywgbWlzYy9jcHUuYywKCSAgbXNkb3MvZG9zbWVtLmMsIG1zZG9zL2RwbWkuYywgc2NoZWR1bGVyL2NsaWVudC5jLAoJICBzY2hlZHVsZXIvc3lzZGVwcy5jLCBzY2hlZHVsZXIvdGhyZWFkLmMsIHNlcnZlci9yZXF1ZXN0LmMsCgkgIHRvb2xzL3dpbmVidWlsZC9zcGVjMTYuYywgd2luMzIvZGV2aWNlLmMsIGNvbnRyb2xzL21lbnUuYywKCSAgZGxscy9kcGxheXgvZHBsYXkuYywgZGxscy9rZXJuZWwvY29tbS5jLCBkbGxzL29kYmMzMi9wcm94eW9kYmMuYywKCSAgZGxscy93aW5zb2NrL2FzeW5jLmMsIGRsbHMvd2luc29jay9zb2NrZXQuYywgZmlsZXMvZHJpdmUuYywKCSAgbGlicmFyeS9wb3J0LmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJV2hlbiBpbmNsdWRpbmcgJ3dpbmUvcG9ydC5oJywgaW5jbHVkZSBpdCBmaXJzdC4KCVJlbW92ZSByZWR1bmRhbnQgJ2NvbmZpZy5oJyBpbmNsdWRlcy4KCgkqIHRvb2xzL3dpbmVidWlsZC9yZWxheS5jLCB0b29scy93aW5lYnVpbGQvc3BlYzMyLmMsIHRvb2xzL3dtYy9tY2wuYywKCSAgdG9vbHMvd21jL21jeS55LCB0b29scy93bWMvd21jLmMsIHdpbmRvd3Mvd2lucHJvYy5jLAoJICB3aW5kb3dzL3gxMWRydi93aW5lY2xpcHNydi5jLCBkbGxzL3VzZXIvZXh0aWNvbi5jLAoJICBkbGxzL3dpbmVwcy9ncmFwaGljcy5jLCBncmFwaGljcy9lbnYuYywgZ3JhcGhpY3MvcGF0aC5jLAoJICBsb2FkZXIvbG9hZG9yZGVyLmMsIGxvYWRlci9wZV9yZXNvdXJjZS5jLCBtZW1vcnkvaGVhcC5jLAoJICBtZW1vcnkvc2VsZWN0b3IuYywgbXNkb3MvaW50MTEuYywgbXNkb3MvaW50MTYuYywgcmVsYXkzMi9yZWxheTM4Ni5jLAoJICBzY2hlZHVsZXIvY3JpdHNlY3Rpb24uYywgc2VydmVyL21hcHBpbmcuYywgc2VydmVyL3RyYWNlLmMsCgkgIHRvb2xzL3dpbmVidWlsZC9pbXBvcnQuYywgdG9vbHMvd2luZWJ1aWxkL21haW4uYywKCSAgdG9vbHMvd2luZWJ1aWxkL3BhcnNlci5jLCBjb25zb2xlL2dlbmVyaWMuYywgY29uc29sZS9pbnRlcmZhY2UuYywKCSAgY29uc29sZS9uY3Vyc2VzLmMsIGNvbnNvbGUvdHR5LmMsIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21haW4uYywKCSAgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLCBkbGxzL2RkcmF3L2QzZGV4ZWN1dGVidWZmZXIuYywKCSAgZGxscy9kZHJhdy9kM2R0ZXh0dXJlLmMsIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmMsCgkgIGRsbHMvb3BlbmdsMzIvd2dsLmMsIGRsbHMvc2hlbGwzMi9zeXN0cmF5LmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJV2hlbiBpbmNsdWRpbmcgY29uZmlnLmgsIGluY2x1ZGUgaXQgZmlyc3QuCgoJKiBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL3JwY2RjZS5oLCBpbmNsdWRlL3JwY25kci5oLAoJICBpbmNsdWRlL3JwY3Byb3h5Lmg6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUFkZGVkIHNvbWUgUlBDIGRlZmluaXRpb25zLgoKCSogb2JqZWN0cy9mb250LmMsIHdpbmRvd3MvZHJpdmVyLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLAoJICBkbGxzL3VzZXIvY29tbTE2LmMsIGRsbHMvd2lubW0vZHJpdmVyLmMsIGRsbHMvd2luc3Bvb2wvaW5mby5jLAoJICBsb2FkZXIvbW9kdWxlLmMsIGRsbHMvc2hlbGwzMi9waWRsLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJRG9uJ3QgcHJpbnQgTlVMTCBzdHJpbmdzIChjcmFzaGVzIG9uIFNvbGFyaXMpLgoJU21hbGwgY29kZSBtYWludGFpbmFiaWxpdHkgdHdlYWsgaW4gU2hlbGxFeGVjdXRlRXhBLgoJVHdvIHR5cG8gZml4ZXMgaW4gd2lubW0uCgoJKiBpbmNsdWRlL2FtdmlkZW8uaCwgaW5jbHVkZS9jb250cm9sLmgsIGluY2x1ZGUvc3RybWlmLmgsCgkgIGRsbHMvcXVhcnR6L01ha2VmaWxlLmluLCBkbGxzL3F1YXJ0ei9hc3luY3NyYy5jLAoJICBkbGxzL3F1YXJ0ei9hc3luY3NyYy5oLCBkbGxzL3F1YXJ0ei9hdWRpb3V0bC5jLAoJICBkbGxzL3F1YXJ0ei9hdWRpb3V0bC5oLCBkbGxzL3F1YXJ0ei9hdWRyZW4uYywKCSAgZGxscy9xdWFydHovYXZpcGFyc2UuYywgZGxscy9xdWFydHovYmFzZWZpbHQuYywKCSAgZGxscy9xdWFydHovYmFzZXBpbi5jLCBkbGxzL3F1YXJ0ei9jb21wbGlzdC5jLAoJICBkbGxzL3F1YXJ0ei9jb21wbGlzdC5oLCBkbGxzL3F1YXJ0ei9kZXZlbnVtLmMsIGRsbHMvcXVhcnR6L2Rldm1vbi5jLAoJICBkbGxzL3F1YXJ0ei9lbnVtdW5rLmMsIGRsbHMvcXVhcnR6L2ZnZXZlbnQuYywgZGxscy9xdWFydHovZmdpZGlzcC5jLAoJICBkbGxzL3F1YXJ0ei9mZ3Bhc3MuYywgZGxscy9xdWFydHovZmdyYXBoLmMsIGRsbHMvcXVhcnR6L2ZncmFwaC5oLAoJICBkbGxzL3F1YXJ0ei9mbWFwLmMsIGRsbHMvcXVhcnR6L2ZtYXAuaCwgZGxscy9xdWFydHovZm1hcDIuYywKCSAgZGxscy9xdWFydHovZm1hcDIuaCwgZGxscy9xdWFydHovaWZncmFwaC5jLCBkbGxzL3F1YXJ0ei9pZ2NvbmZpZy5jLAoJICBkbGxzL3F1YXJ0ei9pZ3J2ZXIuYywgZGxscy9xdWFydHovaW1jbnRsLmMsIGRsbHMvcXVhcnR6L2ltZmlsdGVyLmMsCgkgIGRsbHMvcXVhcnR6L2ltcG9zLmMsIGRsbHMvcXVhcnR6L2ltc2Vlay5jLCBkbGxzL3F1YXJ0ei9tYWluLmMsCgkgIGRsbHMvcXVhcnR6L21lbWFsbG9jLmMsIGRsbHMvcXVhcnR6L210eXBlLmMsIGRsbHMvcXVhcnR6L210eXBlLmgsCgkgIGRsbHMvcXVhcnR6L3BhcnNlci5jLCBkbGxzL3F1YXJ0ei9wYXJzZXIuaCwKCSAgZGxscy9xdWFydHovcXVhcnR6X3ByaXZhdGUuaCwgZGxscy9xdWFydHovcmVnc3ZyLmMsCgkgIGRsbHMvcXVhcnR6L3NhbXBsZS5jLCBkbGxzL3F1YXJ0ei9zZWVrcGFzcy5jLAoJICBkbGxzL3F1YXJ0ei9zeXNjbG9jay5jLCBkbGxzL3F1YXJ0ei92aWRyZW4uYywKCSAgZGxscy9xdWFydHovd2F2cGFyc2UuYzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglTdGFydGVkIGltcGxlbWVudGluZyBBVkkgc3BsaXR0ZXIuCglJbXBsZW1lbnRlZCBBc3luY1NvdXJjZS4KCU1lcmdlZCBzb21lIEMgc291cmNlcy4KCUZpeGVkIHNvbWUgYnVncy4KCgkqIGluY2x1ZGUvbW1yZWcuaDoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglBZGRlZCBNUEVHMVdBVkVGT1JNQVQgYW5kIE1QRUdMQVlFUjNXQVZFRk9STUFULgoKCSogZmlsZXMvZG9zX2ZzLmMsIGZpbGVzL2ZpbGUuYywgaW5jbHVkZS9maWxlLmg6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCVBhc3Mgc2VjdXJpdHkgYXR0cmlidXRlcyBmb3IgRE9TRlMgY3JlYXRpb24uCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJRml4ZWQgYnVncyB3aXRoIHByb3BnZXQgbWV0aG9kcyB3aXRoIGlucHV0IGFyZ3VtZW50cy4KCUltcHJvdmVkIHZhcmlhbnQgZGVidWcgZHVtcHMuCgoJKiBkbGxzL29sZWF1dDMyL3NhZmVhcnJheS5jOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglGaXhlZCBidWdzIGluIHNhZmUgYXJyYXlzLgoJLSBlbmxhcmdpbmcgYSBzYWZlIGFycmF5IGRpZG4ndCBjbGVhciB0aGUgbmV3IGVudHJpZXMKCS0gZWxlbWVudCBhY2Nlc3Mgb25seSB2YWxpZGF0ZWQgdGhlIGZpcnN0IGRpbWVuc2lvbgoJLSB0aGUgdmFsaWRhdGlvbiBhbHdheXMgZmFpbGVkIHdoZW4gdGhlIGFycmF5IGNvbnRhaW5lZCAxIGVsZW1lbnQKCgkqIGRsbHMvb2xlYXV0MzIvb2xlcGljdHVyZS5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglGaXggYSBVSU5UMTYgcmVkZWZpbml0aW9uIHByb2JsZW0uCgoJKiByZWxheTMyL2J1aWx0aW4zMi5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVJlY29nbml6ZSB0aGUgU29sYXJpcyBkbG9wZW4gZXF1aXZhbGVudCBvZiAiY2Fubm90IG9wZW4iLgoKCSogdG9vbHMvd2luZW1ha2VyOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglGaXggaGFuZGxpbmcgb2YgZW1wdHkgbGlzdHMgaW4gaW5zdGFsbCBhbmQgdW5pbnN0YWxsIHRhcmdldHMuCglJbnN0YWxsIHRoZSBleGVjdXRhYmxlcyAuc28gbGlicmFyaWVzIGluICRiaW5kaXIgKG5vdCAkbGliZGlyISkuCgoyMDAxLTEwLTEyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy9NYWtlZmlsZS5pbiwgd2luZG93cy9wcm9wZXJ0eS5jLCB3aW5kb3dzL3dpbi5jLAoJICBkbGxzL3VzZXIvTWFrZWZpbGUuaW4sIGRsbHMvdXNlci9wcm9wZXJ0eS5jLCBpbmNsdWRlL3dpbi5oLAoJICBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsIHNlcnZlci9wcm90b2NvbC5kZWYsCgkgIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci90cmFjZS5jLCBzZXJ2ZXIvd2luZG93LmM6CglTdG9yZSB3aW5kb3cgcHJvcGVydGllcyBpbiB0aGUgc2VydmVyLiBNb3ZlZCBwcm9wZXJ0eS5jIHRvIGRsbHMvdXNlci4KCgkqIG1lbW9yeS9hdG9tLmMsIHNlcnZlci9hdG9tLmMsIHNlcnZlci9vYmplY3QuaCwgc2VydmVyL3Byb3RvY29sLmRlZiwKCSAgc2VydmVyL3RyYWNlLmMsIHRvb2xzL21ha2VfcmVxdWVzdHMsIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaDoKCUFkZGVkIGF0b21fdCB0eXBlIGZvciBhdG9tcyB0byBtYWtlIHN1cmUgd2UgdXNlIHRoZSBzYW1lIHR5cGUKCWV2ZXJ5d2hlcmUuIEhhbmRsZSBNSU5fU1RSX0FUT00gb2Zmc2V0IGluIHRoZSBzZXJ2ZXIuCgoJKiBkbGxzL3VzZXIvY29udHJvbHMuaCwgaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2luZGVmLmgsCgkgIGluY2x1ZGUvd2ludXNlci5oOgoJTW92ZWQgTUFLRUlOVEFUT00gdG8gd2luYmFzZS5oIGFuZCBhZGRlZCBVbmljb2RlIHZlcnNpb24uCgoJKiB3aW5kb3dzL2N1cnNvcmljb24uYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSGFuZGxlIGJhZCBwb2ludGVyIGFyZ3VtZW50cyB0byBMb2FkSW1hZ2VBKCkgKGFuZCBmdW5jdGlvbnMKCWNhbGxpbmdMb2FkSW1hZ2VBKSB3aXRoIGFuIGV4Y2VwdGlvbiBoYW5kbGVyLgoKCSogd2luZG93cy94MTFkcnYvY2xpcGJvYXJkLmM6CglEb21pbmlrIFN0cmFzc2VyIDxkb21pbmlrLnN0cmFzc2VyQHQtb25saW5lLmRlPgoJV29ya2Fyb3VuZCBYMTEgQmFkV2luZG93IGVycm9yIGlmIG5vIHBhcmVudCB3aW5kb3cgaXMgZm91bmQuCgoJKiB0b29scy93aW5lbWFrZXI6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUZpeCB0aGUgV2luZSB0b29scyBzZWFyY2ggcGF0aC4KCUFkZCAvdXNyL2xvY2FsL2xpYiB0byB0aGUgZGVmYXVsdCBudGRsbCBzZWFyY2ggcGF0aC4KCjIwMDEtMTAtMTEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3F1ZXVlLmgsIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwKCSAgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3F1ZXVlLmMsIHNlcnZlci9yZXF1ZXN0LmgsCgkgIHNlcnZlci90cmFjZS5jLCB3aW5kb3dzL3F1ZXVlLmM6CglSZW1vdmVkIHRoZSBjbGVhbnVwX3dpbmRvd19xdWV1ZSByZXF1ZXN0LgoKCSogZGxscy90dHlkcnYvd25kLmMsIGRsbHMveDExZHJ2L3Njcm9sbC5jLCBkbGxzL3gxMWRydi93aW5wb3MuYywKCSAgaW5jbHVkZS93aW4uaCwgd2luZG93cy9wcm9wZXJ0eS5jLCB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3dpbnBvcy5jOgoJUmVtb3ZlZCBuZXh0IGFuZCBjaGlsZCBmaWVsZHMgaW4gdGhlIHdpbmRvdyBzdHJ1Y3R1cmUgYW5kIHVzZQoJV0lOX0xpc3RDaGlsZHJlbiBpbnN0ZWFkLgoKCSogaW5jbHVkZS91dWlkcy5oOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUFkZGVkIHNvbWUgbWlzc2luZyBHVUlEcy4KCgkqIHRvb2xzL3dpbmVtYWtlcjoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglGaXggdGhlIC5zcGVjLmMgcnVsZS4KCjIwMDEtMTAtMTAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3R0eWRydi93bmQuYywgZGxscy94MTFkcnYvd2luZG93LmMsIGRsbHMveDExZHJ2L3dpbnBvcy5jLAoJICBpbmNsdWRlL3dpbi5oLCB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3dpbnBvcy5jOgoJU3RvcmUgd2luZG93IHBhcmVudCBhcyBhbiBIV05EIGluc3RlYWQgb2YgYSBwb2ludGVyLgoKCSogZmlsZXMvZmlsZS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQHN0YXJ0LmNvbS5hdT4KCURvIG92ZXJsYXBwZWQgcmVhZHMgaWYgYW5kIG9ubHkgaWYgdGhlIGZpbGUgd2FzIG9wZW5lZCB3aXRoCglGSUxFX0ZMQUdfT1ZFUkxBUFBFRC4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQWxsb2NhdGUgdGhlIGFycmF5IGFuZCBzdHJpbmdzIGluIG9uZSBsdW1wIChidWcgZm91bmQgYnkgTWFsdGUKCVN0YXJvc3RpaykuCglTYW1lIHRoaW5nIGZvciB0aGUgbHBDbWRsaW5lPSIiIGNhc2UuCglUaGVyZSBpcyBubyBOVUxMIHBvaW50ZXIgYXQgdGhlIGVuZCBvZiB0aGUgYXJndiBsaXN0LgoKCSogb2JqZWN0cy90ZXh0LmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglHZXRUZXh0Q2hhcnNldEluZm8gc2hvdWxkIHJldHVybiB0aGUgY2hhcnNldCB0aGF0IHRoZSBkcml2ZXIgaXMKCWFjdHVhbGx5IHVzaW5nLCByYXRoZXIgdGhhbiB0aGF0IHNwZWNpZmllZCBpbiB0aGUgTE9HRk9OVC4KCgkqIGRvY3VtZW50YXRpb24vaW50cm9kdWN0aW9uLnNnbWw6CglBbmRyaXkgUGFsYW1hcmNodWsgPGFwYTNhQHlhaG9vLmNvbT4KCUluY2x1ZGUgaW5mb3JtYXRpb24gYWJvdXQgWEZyZWU4NiBXaW5kb3dzIHNlcnZlci4KCgkqIGRsbHMva2VybmVsL2Zvcm1hdF9tc2cuYywgZGxscy9tc3ZjcnQvbG9jYWxlLmMsCgkgIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jLCBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW51c2VyLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCU1vdmUgdGhlIFJUX1hYWCBtYWNyb3MgdG8gd2ludXNlci5oLgoJd2ludXNlci5oOiBBZGQgc3VwcG9ydCBmb3IgTk9HREkuCgl3aW51c2VyLmg6IE1vZGlmeSB0byBhbGxvdyBjb21waWxhdGlvbiB3aXRob3V0IHdpbmdkaS5oLgoKCSogaW5jbHVkZS9zaGxvYmouaCwgZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jOgoJQ2hyaXMgR3JlZW4gPGNocmlzX2VfZ3JlZW5AeWFob28uY29tPgoJQWRkZWQgbmFtZXMgb2YgdGhlICJtaXNzaW5nIiBwYXRocyBmb3IgU0hHZXRTcGVjaWFsRm9sZGVyUGF0aEEuCgoyMDAxLTEwLTA5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy9jbGFzcy5jOiBGaXhlZCBsb2NraW5nIG9mIGNsYXNzIGxpc3QuCglQcmludCBFUlIgd2hlbiBhY2Nlc3NpbmcgY2xhc3NlcyBvZiBvdGhlciBwcm9jZXNzZXMuCgoJKiBpbmNsdWRlL3dpbi5oLCBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsIHNlcnZlci9wcm90b2NvbC5kZWYsCgkgIHNlcnZlci90cmFjZS5jLCBzZXJ2ZXIvd2luZG93LmMsIHdpbmRvd3Mvd2luLmM6CglTdG9yZSB3aW5kb3cgY2xhc3MgYXRvbSBpbiB0aGUgc2VydmVyLgoJS2VlcCB1bmxpbmtlZCB3aW5kb3dzIG9uIGEgc2VwYXJhdGUgbGlzdC4KCUltcGxlbWVudGVkIGludGVyLXByb2Nlc3MgRmluZFdpbmRvdygpLgoKCSogaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2luZS93aW51c2VyMTYuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJUmVtb3ZlIG5vbiB3aW5kb3dzIG1hY3Jvcy4KCgkqIHNjaGVkdWxlci9wdGhyZWFkLmM6CglTaWxlbmNlIHRoZSBwdGhyZWFkX2tpbGxfb3RoZXJfdGhyZWFkc19ucCBGSVhNRS4KCgkqIG1lbW9yeS92aXJ0dWFsLmM6CglGaXggTWFwVmlld09mRmlsZSB0byBhbHdheXMgcmV0dXJuIGEgNjRLLWFsaWduZWQgYWRkcmVzcy4KCUF2b2lkIGNvbnZlcnRpbmcgcG9pbnRlcnMgdG8gVUlOVC4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLmRhdCwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjE2L2tlcm5lbC5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4xNi93aW5zb2NrLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL2FkdmFwaTMyLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL2tlcm5lbDMyLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL21hcGkzMi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9tc2ltZzMyLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3F1YXJ0ei5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9zaGVsbDMyLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3N0aS5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi91cmwuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvd3MyXzMyLmFwaToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQVBJIGZpbGVzIHVwZGF0ZS4KCgkqIGRsbHMvYWR2YXBpMzIvY3J5cHQuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgaXNzdWUgZm91bmQgYnkgd2luYXBpX2NoZWNrLgoKCSogZGxscy93aW5zb2NrL2FzeW5jLmMsIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvd3Myc3BpLmg6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUFkZGVkIG5ldyBpbmNsdWRlIGZpbGUgd3Myc3BpLmggZm9yIGFkZGluZyBuZWVkZWQgdHlwZXMuCgoJKiBkbGxzL3NldHVwYXBpL3NldHVwYXBpLnNwZWM6CglTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1saW5lLmNvbT4KCUZpeGVkIHBhcmFtZXRlcnMgb2YgU2V0dXBPcGVuSW5mRmlsZUEuCgoyMDAxLTEwLTA4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy9wYWludGluZy5jOgoJTW92ZWQgTXNnV2FpdEZvck11bHRpcGxlT2JqZWN0cyBjYWxsIG9uIFJEV19VUERBVEVOT1cgb3V0IG9mIHRoZQoJUkRXX1BhaW50IHJlY3Vyc2lvbi4KCgkqIGluY2x1ZGUvd2ludXNlci5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBZGQgc3VwcG9ydCBmb3IgTk9DT0xPUi4KCgkqIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbmUvd2luYmFzZTE2LmgsIG1pc2MvdmVyc2lvbi5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglNb3ZlIFdJTkRFQlVHSU5GTyBmcm9tIHdpbmJhc2UuaCB0byB3aW5iYXNlMTYuaCBhbmQgcmVuYW1lIHRvCglXSU5ERUJVR0lORk8xNi4KCU1vdmUgdGhlIHJlbGF0ZWQgbWFjcm9zIHRvIHZlcnNpb24uYyBhbmQgaWZkZWYgdGhlbSBvdXQgKGtlcHQgZm9yCglkb2N1bWVudGF0aW9uIG9ubHksIHRoZXkgYXJlIG5vdCB1c2VkKS4KCgkqIGRlYnVnZ2VyL2hhc2guYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJV0lORUxJQiBhcHBsaWNhdGlvbnMgKGxpa2UgcmVha3RpdmF0ZSkgbWlnaHQgaGF2ZSB2ZXJ5IGxvbmcgKEMrKykKCXN5bWJvbHMuIFVzZSBhIGxhcmdlciBidWZmZXIuCgoJKiBmaWxlcy9kcml2ZS5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAbmVyaW0ubmV0PgoJR2V0RGlza0ZyZWVTcGFjZUV4IHNob3VsZCBhY2NlcHQgYW4gaW5wdXQgbGlrZSAiQzoiLgoKCSogZmlsZXMvZmlsZS5jLCBzZXJ2ZXIvZmlsZS5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CgktIGZpeGVkIGNvcHkmcGFzdGUgYnVnIChHRU5FUklDX1dSSVRFIGluc3RlYWQgb2YgR0VORVJJQ19SRUFEKQoJLSB3aGVuIGdldHRpbmcgdGhlIHR5cGUgb2YgYSBoYW5kbGUsIGl0IGhhcyB0byBiZSBkb25lIGV2ZW4gaWYgbm8gZmQKCSAgaXMgYXR0YWNoZWQgdG8gaXQgKGNvbnNvbGUgZm9yIGV4YW1wbGUpCgoJKiBkbGxzL3F1YXJ0ei9hc3luY3NyYy5jLCBkbGxzL3F1YXJ0ei9hc3luY3NyYy5oLAoJICBkbGxzL3F1YXJ0ei9hdWRyZW4uYywgZGxscy9xdWFydHovYmFzZWZpbHQuYywKCSAgZGxscy9xdWFydHovYmFzZWZpbHQuaCwgZGxscy9xdWFydHovYmFzZXBpbi5jLAoJICBkbGxzL3F1YXJ0ei9pZ2NvbmZpZy5jLCBkbGxzL3F1YXJ0ei9tYWluLmMsIGRsbHMvcXVhcnR6L21lbWFsbG9jLmMsCgkgIGRsbHMvcXVhcnR6L210eXBlLmMsIGRsbHMvcXVhcnR6L210eXBlLmgsIGRsbHMvcXVhcnR6L3BhcnNlci5jLAoJICBkbGxzL3F1YXJ0ei9wYXJzZXIuaCwgZGxscy9xdWFydHovcXVhcnR6LnNwZWMsIGRsbHMvcXVhcnR6L3NhbXBsZS5jLAoJICBkbGxzL3F1YXJ0ei9zYW1wbGUuaCwgZGxscy9xdWFydHovdmlkcmVuLmMsIGRsbHMvcXVhcnR6L3ZpZHJlbi5oLAoJICBkbGxzL3F1YXJ0ei93YXZwYXJzZS5jLCBpbmNsdWRlL2FtdmlkZW8uaCwgZGxscy9xdWFydHovTWFrZWZpbGUuaW4sCgkgIHdpbmVkZWZhdWx0LnJlZzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglTdGFydGVkIEltcGxlbWVudGluZyBWaWRlbyBSZW5kZXJlci4KCVN0YXJ0ZWQgSW1wbGVtZW50aW5nIFdBVkUvQVUvQUlGRiBQYXJzZXIuCglTdGFydGVkIEltcGxlbWVudGluZyBmaWxlIHNvdXJjZS4KCUZpeGVkIHNvbWUgYnVncy4KCgkqIGRsbHMvdXNlci91c2VyMzIuc3BlYywgZGxscy91c2VyL3VzZXJfbWFpbi5jOgoJUmVuYW1lZCBVU0VSX0luaXQgaW50byBVc2VyQ2xpZW50RGxsSW5pdGlhbGl6ZS4KCgkqIGZpbGVzL2Rvc19mcy5jLCBmaWxlcy9maWxlLmMsIGluY2x1ZGUvZmlsZS5oLAoJICBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsIHNlcnZlci9wcm90b2NvbC5kZWYsCgkgIHNlcnZlci9zZXJpYWwuYywgc2VydmVyL3RyYWNlLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAc3RhcnQuY29tLmF1PgoJTWFrZSBzZXJpYWwgZmQgYmxvY2tpbmcgbW9kZSBkZXBlbmQgb24gRklMRV9GTEFHX09WRVJMQVBQRUQuCgoJKiBvYmplY3RzL3RleHQuYywgZG9jdW1lbnRhdGlvbi9mb250cy5zZ21sLCBncmFwaGljcy94MTFkcnYveGZvbnQuYywKCSAgZGxscy9jb21tZGxnL3ByaW50ZGxnLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVNtYWxsIHR5cG8gZml4ZXMvdXBkYXRlcy4KCgkqIGluY2x1ZGUvd2luYmFzZS5oLCBtaXNjL2Vycm9yLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCU1vdmUgdGhlIEVSUl9YWFggbWFjcm9zIGZyb20gd2luYmFzZS5oIHRvIGVycm9yLmMuCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGluY2x1ZGUvd2luc29jay5oLCBpbmNsdWRlL3dzaXB4Lmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUZpeCB0aGUgU09DS0FERFJfSVBYIGRlY2xhcmF0aW9uLgoJQ2VudHJhbGl6ZSBhbGwgc29ja2FkZHJfeHh4IGNvbnZlcnNpb25zIGluIHdzX3NvY2thZGRyX3dzMnUgYW5kCgl3c19zb2NrYWRkcl91MndzLgoJUmVtb3ZlIHVnbHkgY2FzdHMgaW4gVFJBQ0VzLgoKCSogY29udHJvbHMvZWRpdC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCURlZmVyIGVkaXQgc3R5bGUgY29ycmVjdGlvbiB1bnRpbCBFRElUU1RBVEUgaXMgZnVsbHkgaW5pdGlhbGl6ZWQuCgoJKiBkbGxzL21zdmNydC90aHJlYWQuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglfYmVnaW50aHJlYWQ6IERvbid0IHN0b3JlIHRoZSB0cmFtcG9saW5lIG9uIHRoZSBzdGFjay4KCgkqIGluY2x1ZGUvd2luZGVmLmgsIGluY2x1ZGUvd2luZ2RpLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCU1vdmUgQ09MT1JSRUYgZnJvbSB3aW5nZGkuaCB0byB3aW5kZWYuaC4KCUFkZCBhIHByb3RvdHlwZSBmb3IgR2RpRmx1c2guCgoJKiB0b29scy93aW5lbWFrZXI6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVdyYXBwZXJzIG11c3QgYWx3YXlzIGJlIGNvbXBpbGVkIGluIFNUUklDVCBtb2RlLgoKCSogZGVidWdnZXIvZGVidWcubDoKCVByb3ZpZGUgaGVscCBldmVuIHdoZW4gaW4gdGhlIE5PUFJPQ0VTUyBzdGF0ZS4KCgkqIHdpbmRvd3MveDExZHJ2L2NsaXBib2FyZC5jLCB3aW5kb3dzL3gxMWRydi93aW5lY2xpcHNydi5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBpbmZpbml0ZSBsb29wIHByb2JsZW0gaW4gd2luZWNsaXBzcnYgc3RhcnR1cC4KCUxhdW5jaFNlcnZlcjogRG9uJ3QgZ2l2ZSB1cCBvbiB0aGUgZmlyc3QgbWVzc2FnZS4KCUFkZGVkIEdldFNlbGVjdGlvbkV2ZW50OiBMaW1pdCBDUFUgdXNlIGFuZCBpbnRyb2R1Y2UgdGltZW91dC4KCgkqIHdpbmRvd3MvbWVzc2FnZS5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUJldHRlciBoYW5kbGluZyBvZiB0aGUgdGltZW91dCBpbiBXYWl0Rm9ySW5wdXRJZGxlLgoJVXNlIFdBSVRfRkFJTEVEIHJhdGhlciB0aGFuIHRoZSBjb3JyZXNwb25kaW5nIGxpdGVyYWwuCgoJKiBkbGxzL3VybG1vbi91bW9uLmMsIGluY2x1ZGUvdXJsbW9uLmg6CglNYWx0ZSBTdGFyb3N0aWsgPG1hbHRlQGtkZS5vcmc+CglDcmVhdGVVUkxNb25pa2VyIHRha2VzIGEgTFBDV1NUUiwgbm90IGEgTFBXU1RSLgoKMjAwMS0xMC0wNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MvcGFpbnRpbmcuYzoKCVByb2Nlc3MgcGVuZGluZyBldmVudHMgYmVmb3JlIHNlbmRpbmcgV01fUEFJTlQgb24gUkRXX1VQREFURU5PVy4KCgkqIHNlcnZlci9uYW1lZF9waXBlLmMsIHNlcnZlci9zb2NrLmM6CglBZGRlZCBnZXRfZmlsZV9pbmZvIHN1cHBvcnQgdG8gbmFtZWQgcGlwZXMgYW5kIHNvY2tldHMgdG8gYXZvaWQKCWJyZWFraW5nIHRoZSBnZXRfaGFuZGxlX2ZkIHJlcXVlc3QuCgoJKiBkbGxzL2tlcm5lbC9mb3JtYXRfbXNnLmMsIGluY2x1ZGUvd2luYmFzZS5oOgoJU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtbGluZS5jb20+CglBZGRlZCBkZWZpbmVzIGZvciByZXNvdXJjZSB0eXBlcyBSVF9NRVNTQUdFVEFCTEUsIFJUX1ZFUlNJT04uCgoJKiBkbGxzL3VzZXIvbWVzc2FnZS5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAbmVyaW0ubmV0PgoJRml4IHNpZ24gZXh0ZW5zaW9uIHByb2JsZW0gaW4gbWFwX3dwYXJhbV9XdG9BLgoKCSogaW5jbHVkZS91cmxtb24uaCwgaW5jbHVkZS93aW5lL29ial9wcm9wZXJ0eS5oOgoJTWFsdGUgU3Rhcm9zdGlrIDxtYWx0ZUBrZGUub3JnPgoJQWRkZWQgSVBlcnNpc3RQcm9wZXJ0eUJhZzIgYW5kIElQcm9wZXJ0eUJhZzIgZGVmaW5pdGlvbnMsIGFkZGVkCgltaXNzaW5nICBCSU5ESU5GTyBtZW1iZXIuCgoJKiB3aW5kb3dzL2N1cnNvcmljb24uYzoKCUpvaGFuIEdpbGwgPGpvaGFuZUBseXNhdG9yLmxpdS5zZT4KCVRoZSBMUl8gZGVmaW5lcyBkbyBub3QgcmVzaWRlIGluIHdpbmRvd3MuaCBhbnltb3JlLgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliLmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglSZW1vdmUgc29tZSB1bm5lY2Vzc2FyeSBBZGRSZWYncy4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkIFhLX01vZGVfc3dpdGNoIHRvIHRoZSBsaXN0IG9mIGlnbm9yZWQga2V5c3ltcy4KCgkqIHRvb2xzL3dpbmVsYXVuY2hlci5pbjoKCURhbmllbCBTYWJvIDxkYW5pZWxzYWJvQGhvdG1haWwuY29tPgoJQSAnZmknIHdhcyBuZWVkZWQgaW4gdGhlIGxhc3QgaWYgc3RhdGVtZW50LgoKMjAwMS0xMC0wNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvdmVyc2lvbi5oLCBBTk5PVU5DRSwgQ2hhbmdlTG9nOgoJUmVsZWFzZSAyMDAxMTAwNC4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KMjAwMS0xMC0wNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGdyYXBoaWNzL3gxMWRydi9kaWIuYzoKCUlnbm9yZSBSTEUgZGF0YSB0aGF0IGdvZXMgcGFzdCB0aGUgbGluZSBlbmQgKGZvdW5kIGJ5IFV3ZSBCb25uZXMpLgoJR2VuZXJhbCBjbGVhbnVwIG9mIHRoZSBSTEUgcm91dGluZXMuCgoJKiBkbGxzL3dpbmluZXQvaHR0cC5jLCBkbGxzL3dpbmluZXQvdXRpbGl0eS5jOgoJTmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+CglTa2lwIHBvcnQgbnVtYmVyIGJlZm9yZSBjYWxsaW5nIGdldGhvc3RieW5hbWUuCglGaXggbm9uLWFic29sdXRlIHVybHMuCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJVGhlIERJU1BQQVJBTVMgcGFyYW1ldGVyIGFycmF5IGlzIGEgcmV2ZXJzZS1vcmRlciBhcnJheS4KCgkqIGZpbGVzL2ZpbGUuYywgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLCBzZXJ2ZXIvY29uc29sZS5jLAoJICBzZXJ2ZXIvZGV2aWNlLmMsIHNlcnZlci9maWxlLmMsIHNlcnZlci9tYXBwaW5nLmMsIHNlcnZlci9vYmplY3QuYywKCSAgc2VydmVyL3BpcGUuYywgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3NlcmlhbC5jLCBzZXJ2ZXIvdHJhY2UuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0BzdGFydC5jb20uYXU+CglGZXRjaCBhIGhhbmRsZSB0eXBlIGluIEZJTEVfR2V0VW5peEhhbmRsZS4KCgkqIGRlYnVnZ2VyL3dpbmVkYmcuYzoKCURvbid0IGlnbm9yZSBmaXJzdCBjaGFuY2UgZGVidWcgZXhjZXB0aW9ucyBzaW5jZSBpdCBtYXkgYmUgYQoJYnJlYWtwb2ludCB0aGF0IHdlIHNldCBvdXJzZWx2ZXMuCgoJKiBkb2N1bWVudGF0aW9uL2ZvbnRzLnNnbWw6CglCaWxsIE1lZGxhbmQgPG1lZGJpMDFAYWNjcGFjLmNvbT4KCUEgY291cGxlIG9mIG1pbm9yIHBvaW50cyBhYm91dCBjb252ZXJ0aW5nIFdpbmRvd3MgZm9udHMuCgoJKiBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJSW1wbGVtZW50IGNvZXJjaW9uIHRvIFZUX1VOS05PV04gZnJvbSBWVF9ESVNQQVRDSC4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglJVHlwZUluZm86Okludm9rZSBzaG91bGQgYWxzbyBzZWFyY2ggaW5oZXJpdGVkIGludGVyZmFjZXMgZm9yIHRoZQoJbWV0aG9kIHRvIGludm9rZS4KCUlUeXBlSW5mbzo6R2V0SURzT2ZOYW1lcyBuZWVkcyB0byBkbyBjYXNlLWluc2Vuc2l0aXZlIHN0cmluZwoJY29tcGFyZXMuCgoyMDAxLTEwLTAzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZ3JhcGhpY3MveDExZHJ2L2JpdGJsdC5jOgoJU2tpcCBCaXRCbHQgRElCIG9wdGltaXphdGlvbiBpZiBzb3VyY2UgYW5kIGRlc3QgRENzIGhhdmUgZGlmZmVyZW50CglkZXB0aHMuCgoJKiB3aW5kb3dzL3dpbi5jLCBkbGxzL3VzZXIvdXNlcl9tYWluLmMsIGRsbHMveDExZHJ2L3dpbnBvcy5jLAoJICBkbGxzL3gxMWRydi94MTFkcnYuc3BlYywgaW5jbHVkZS91c2VyLmgsIHdpbmRvd3MvZGVmd25kLmM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBuZXJpbS5uZXQ+CglNYXAgYSB3aW5kb3cgaWYgaXQgaXMgc2hvd24gYnkgYSBkaXJlY3Qgc3R5bGUgY2hhbmdlLgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliLmM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCURvbid0IGlnbm9yZSBESVNQQVRDSF9NRVRIT0QgaW4gSVR5cGVJbmZvOjpJbnZva2UuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jOgoJR3V5IEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCUZpeCBTSEFkZFRvUmVjZW50RG9jcyBjb2RlIHRvIHByb3Blcmx5IGhhbmRsZSBuYXRpdmUgQ29tY3RsMzIgYW5kCgltaXNzaW5nIHBvbGljaWVzIGxvY2F0aW9uLgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliLmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglMb29rcyBsaWtlIHRoZSBTTFRHX0ltcGxJbmZvIHN0cnVjdCBpc24ndCBhIGZpeGVkIHNpemUuCgoJKiBpbmNsdWRlL3dpbmUvb2JqX29sZWF1dC5oOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglDb3JyZWN0ZWQgSU5WT0tFS0lORCBlbnVtZXJhdGlvbiB2YWx1ZXMuCgoJKiBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2Ugc3VyZSB0aGF0IG5ld2x5IGFsbG9jYXRlZCBUTFMgaW5kZXhlcyBhcmUgY2xlYXJlZC4KCgkqIHNjaGVkdWxlci90aHJlYWQuYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUJldHRlciBmYWtlIGltcGxlbWVudGF0aW9uIG9mIFNldFRocmVhZEV4ZWN1dGlvblN0YXRlLgoKMjAwMS0xMC0wMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG9iamVjdHMvZGMuYywgd2luZG93cy9kY2UuYzoKCUZyZWUgY2FjaGUgRENFcyBpZiB0aGUgREMgZ2V0cyBkZWxldGVkLgoKCSogd2luZG93cy9pbnB1dC5jOiBGaXhlZCB0eXBvIGluIHByZXZpb3VzIGNoYW5nZS4KCgkqIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYzoKCUF2b2lkIGluY2x1ZGluZyB3aW5iYXNlLmggaW4gZ2VuZXJhdGVkIC5zcGVjLmMgZmlsZXMuCgoJKiBkbGxzL29kYmMzMi9wcm94eW9kYmMuYywgZGxscy9vZGJjMzIvcHJveHlvZGJjLmg6CglCaWxsIE1lZGxhbmQgPG1lZGJpMDFAYWNjcGFjLmNvbT4KCUFsbG93IHR3byBjb25uZWN0aW9ucyBieSBub3QgcmVsZWFzaW5nIHRoZSB3cmFwcGVkIGxpYnJhcnkgdG9vIGVhcmx5LgoJQWxzbyBoZWF2aWx5IHByb3RlY3RlZCBhbmQgYWRkZWQgYWRkaXRpb25hbCB0cmFjZSBpbmZvcm1hdGlvbi4KCU1ha2UgdGhlIExvYWQgZnVuY3Rpb25zIHN0YXRpYyB0byByZWR1Y2UgdmlzaWJsaXR5IChlbmhhbmNlCglzaW1wbGljaXR5KS4KCgkqIHdpbmRvd3MvaW5wdXQuYywgd2luZG93cy9tZXNzYWdlLmMsIGRsbHMvdXNlci9tZXNzYWdlLmMsCgkgIGluY2x1ZGUvaW5wdXQuaDoKCU1lcmdlZCBtb3VzZSBidXR0b25zIHN0YXRlcyBpbnRvIHRoZSBrZXkgc3RhdGUgYXJyYXkuCglGaXhlZCBjb25mdXNpb24gYmV0d2VlbiBxdWV1ZSBzdGF0ZSBhbmQgYXN5bmMgc3RhdGUuCgoJKiBkbGxzL2RpbnB1dC9rZXlib2FyZC9tYWluLmMsIGRsbHMvZGlucHV0L21vdXNlL21haW4uYzoKCVJlbW92ZWQgdW5uZWNlc3NhcnkgaW5jbHVkZXMvZGVmaW5pdGlvbnMuCgoJKiBkbGxzL3gxMWRydi93aW5kb3cuYzoKCUlseWEgS29uc3RhbnRpbm92IDx3aW5lLXBhdGNoZXNAZnV0dXJlLnNoaW55LmNvLmlsPgoJQWRkZWQgYSBfTkVUX1dNX05BTUUoVVRGOF9TVFJJTkcpIHByb3BlcnR5IHRvIGV2ZXJ5IHdpbmRvdy4KCgkqIGluY2x1ZGUvc3lzbWV0cmljcy5oLCB3aW5kb3dzL3N5c21ldHJpY3MuYywgd2luZG93cy9zeXNwYXJhbXMuYzoKCUFuZHJpeSBQYWxhbWFyY2h1ayA8YXBhM2FAeWFob28uY29tPgoJQWRkZWQgU1lTTUVUUklDU19TZXQuCglJbXBsZW1lbnRlZCBTUElfU0VUU0hPV1NPVU5EUyBhY3Rpb24uCgoJKiBkbGxzL29sZWF1dDMyL29sZWF1dC5jLCBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCU1ha2UgT2FCdWlsZFZlcnNpb24oKSByZXR1cm4gdGhlIGhpZ2hlc3QgdmVyc2lvbiB2YWx1ZSBwb3NzaWJsZS4KCVNvbWUgY2xlYW51cHMuCgoJKiB0b29scy93aW5lbGF1bmNoZXIuaW4sIHdpbjMyL2RldmljZS5jLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwKCSAgZmlsZXMvZHJpdmUuYywgZmlsZXMvcHJvZmlsZS5jLCBsb2FkZXIvbW9kdWxlLmMsIGxvYWRlci9wZV9pbWFnZS5jLAoJICBtZW1vcnkvZW52aXJvbi5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJWWV0IGFub3RoZXIgZG9jdW1lbnRhdGlvbi9tZXNzYWdlIHRleHQgcGF0Y2guCgoJKiBkb2N1bWVudGF0aW9uL2RvY3VtZW50YXRpb24uc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi93aW5lbGliLWJpbmRsbHMuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi93aW5lbGliLWludHJvLnNnbWw6CglCaWxsIE1lZGxhbmQgPG1lZGJpMDFAYWNjcGFjLmNvbT4KCUFkZGl0aW9ucyB0byBob3cgdG8gdXNlIERvY2Jvb2sgdW5kZXIgUmVkSGF0ICh0byBoZWxwIGJlZ2lubmVycyBsaWtlCgltZSkuCglBZGRlZCBjb250ZW50IHRvIHRoZSBiaW5kbGxzIHNlY3Rpb24gb2YgV2luZWxpYiAoYmFzZWQgb24KCWV4cGVyaWVuY2UpLgoKCSogZG9jdW1lbnRhdGlvbi93aW5lbWFrZXIubWFuOgoJQmlsbCBNZWRsYW5kIDxtZWRiaTAxQGFjY3BhYy5jb20+CglVcGdyYWRlIHdpbmVtYWtlciBtYW4gcGFnZSBmb3IgdGhlIHR3byBvcHRpb25zIGFkZGVkIGF0IHZlcnNpb24KCTAuNS44LgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jLCBkbGxzL3dpbnNvY2svd3MyXzMyLnNwZWMsIGluY2x1ZGUvd2luc29jazIuaDoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUFkZGVkIFdTQypJbnN0YWxsUHJvdmlkZXIgc3R1YnMuCgoJKiBkb2N1bWVudGF0aW9uL3dpbmVsaWItbWZjLnNnbWw6CglHcmFjamFuIFBvbGFrIDxncmFjamFuQGFjY2hzaC5jb20+CglBZGRlZCBzb21lIE1GQyBkb2N1bWVudGF0aW9uICh3aXRoIHRoZSBoZWxwIG9mIEZyYW5jb2lzIEdvdWdldCkuCgoJKiBmaWxlcy9maWxlLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglDaGVjayBmb3IgTlVMTCBwYXRoIGFyZ3VtZW50IGluIERlbGV0ZUZpbGUuCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUxvbmcgbmFtZWxlc3MgYXJncyBpbiBTTFRHIGFwcGFyZW50bHkgZ2V0IGRlbm90ZWQgYnkgMHhmZmZlLgoKCSogZGxscy9zaGVsbDMyL2NoYW5nZW5vdGlmeS5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLAoJICBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYzoKCUd1eSBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglJbXBsZW1lbnRlZCBkdW1teSBzdHViIGZvciBTSENoYW5nZU5vdGlmeVVwZGF0ZUVudHJ5TGlzdCBhbmQKCWZ1bmN0aW9uYWwgQ0lETERhdGFfQ3JlYXRlRnJvbUlEQXJyYXkuCgoJKiBsaWJyYXJ5L3BvcnQuYzoKCUdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJRml4IGltcGxpY2l0IHR5cGUgZGVjbGFyYXRpb25zLiBBZGQgcmVxdWlyZWQgY2FzdC4KCgkqIHdpbmRvd3MvaW5wdXQuYywgd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYywgaW5jbHVkZS93aW51c2VyLmg6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlIGEgaGFjayBmb3Iga2V5Ym9hcmQgZ3JvdXAgc3dpdGNoaW5nLgoJQWx3YXlzIHNhdmUvcmVzdG9yZSBjb3JyZWN0IGtleWJvYXJkIGdyb3VwIGluZGV4LgoJRXhwbGljaXRseSBpZ25vcmUgdGhlIGtleWJvYXJkIGdyb3VwIHN3aXRjaGluZyBldmVudHMuCgoyMDAxLTEwLTAxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9xdWFydHovTWFrZWZpbGUuaW4sIGRsbHMvcXVhcnR6L2F1ZHJlbi5jLCBkbGxzL3F1YXJ0ei9hdWRyZW4uaCwKCSAgZGxscy9xdWFydHovYmFzZWZpbHQuYywgZGxscy9xdWFydHovYmFzZWZpbHQuaCwKCSAgZGxscy9xdWFydHovYmFzZXBpbi5jLCBkbGxzL3F1YXJ0ei9mZ2V2ZW50LmMsIGRsbHMvcXVhcnR6L2ZncmFwaC5oLAoJICBkbGxzL3F1YXJ0ei9pZmdyYXBoLmMsIGRsbHMvcXVhcnR6L2ltZmlsdGVyLmMsIGRsbHMvcXVhcnR6L21haW4uYywKCSAgZGxscy9xdWFydHovbWVtYWxsb2MuYywgZGxscy9xdWFydHovcXVhcnR6LnNwZWMsCgkgIGRsbHMvcXVhcnR6L3NhbXBsZS5jLCBpbmNsdWRlL3N0cm1pZi5oLCB3aW5lZGVmYXVsdC5yZWc6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJSW1wbGVtZW50ZWQgQ0xTSURfQXVkaW9SZW5kZXIuCgoJKiBkbGxzL29sZWF1dDMyL2Rpc3BhdGNoLmM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUltcGxlbWVudGVkIERpc3BHZXRQYXJhbS4KCgkqIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglGaXgvZG9jdW1lbnQgU0hMV0FQSSBvcmRpbmFscyAyMTcgYW5kIDIxOC4KCgkqIG1pc2MvdmVyc2lvbi5jOiBBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglTcGVlZCBvcHRpbWl6YXRpb24uCgoJKiBkbGxzL3dpbnNvY2svYXN5bmMuYywgZGxscy93aW5zb2NrL3dzMl8zMi5zcGVjOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJQWRkZWQgc3R1YiBmb3IgV1NBcFNldFBvc3RSb3V0aW5lLgoKCSogZmlsZXMvZmlsZS5jOiBPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCU1ha2UgTW92ZUZpbGVFeCBmYWlsIHdpdGggRVJST1JfSU5WQUxJRF9QQVJBTUVURVIgKGJldHRlciB0aGFuCgljcmFzaGluZykgd2hlbiB0aGUgc291cmNlIGZpbGUgb3BlcmFuZCBpcyBOVUxMLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsb2xlLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCVNob3VsZCBpbml0aWFsaXplIENPTSBiZWZvcmUgY2FsbGluZyBpdC4KCjIwMDEtMDktMjYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBtZW1vcnkvaGVhcC5jOgoJRml4ZWQgc2l6ZSBjaGVjayBpbiBIRUFQX0ZpbmRGcmVlQmxvY2sgdG8gbWFrZSBzdXJlIHdlIGFsc28gZmluZAoJYmxvY2tzIHRoYXQgaGF2ZSB0aGUgZXhhY3Qgc2l6ZSBuZWVkZWQuCgoJKiBkb2N1bWVudGF0aW9uL3dpbmVsaWItaW50cm8uc2dtbDoKCUFuZHJpeSBQYWxhbWFyY2h1ayA8YXBhM2FAeWFob28uY29tPgoJd2luZW1ha2VyIGRvY3VtZW50YXRpb24gZml4LgoKCSogZGxscy9udGRsbC93Y3N0cmluZy5jLCBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYywgaW5jbHVkZS9udGRkay5oOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJQmV0dGVyIGhhbmRsaW5nIG9mIHR5cGVsaWJzIGxvYWRlZCB3aXRoIGEgdHJhaWxpbmcgcmVzb3VyY2UgbnVtYmVyLgoJVGhlIGxvZ2ljIGZvciBkZXRlcm1pbmluZyB3aGV0aGVyIGFuIFNMVEcgdHlwZWxpYiBoYXMgYSBmdW5jdGlvbiBwYXJhbQoJYXMgYSAnc2hvcnQnIG9yICdsb25nJyB0eXBlIGhhcyBiZWVuICdyZWZpbmVkJy4KCgkqIHNjaGVkdWxlci9wdGhyZWFkLmM6CglCaWxsIE1lZGxhbmQgPG1lZGJpMDFAYWNjcGFjLmNvbT4KCVByZXZlbnQgY2FsbGluZyBudWxsIGZ1bmN0aW9ucy4KCgkqIGRsbHMvbXN2Y3J0L2ZpbGUuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglSZW5hbWVkIFdfT0sgdG8gTVNWQ1JUX1dfT0suCgoJKiBkb2N1bWVudGF0aW9uL01ha2VmaWxlLmluLCBkb2N1bWVudGF0aW9uL2NvbmZpZ3VyaW5nLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vZm9udHMuc2dtbCwgZG9jdW1lbnRhdGlvbi9nZXR0aW5nLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vaW5zdGFsbGluZy5zZ21sLCBkb2N1bWVudGF0aW9uL2ludHJvZHVjdGlvbi5zZ21sLAoJICBkb2N1bWVudGF0aW9uL21ha2Vfd2luZWhxLCBkb2N1bWVudGF0aW9uL3ByaW50LmRzbCwKCSAgZG9jdW1lbnRhdGlvbi9ydW5uaW5nLnNnbWwsIGRvY3VtZW50YXRpb24vd2luZWhxLmRzbDoKCVN1c2FuIEZhcmxleSA8c3VzYW5AY29kZXdlYXZlcnMuY29tPgoJQmV0dGVyIGZvcm1hdHRpbmcgZm9yIFBERiBvdXRwdXQuCgoyMDAxLTA5LTI1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS93aW5lL29ial9jaGFubmVsLmg6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUZpeGVkIGEgY291cGxlIG9mIHR5cG9zLgoKCSogaW5jbHVkZS93aW5lL29ial9iYXNlLmg6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUFkZGVkIElDT01fW0NdVEhJU19NVUxUSSBtYWNyb3MgdG8gbWFrZSBpdCBlYXNpZXIgdG8gaW1wbGVtZW50IG9iamVjdHMKCXRoYXQgZXhwb3NlIG11bHRpcGxlIGludGVyZmFjZXMuIEFkZGVkIHByb3RvdHlwZXMgZm9yIENvR2V0UFNDbHNpZCBhbmQKCUlVbmtub3duXypfUHJveHkuCgoJKiBpbmNsdWRlL3dpbmJhc2UuaDoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJQWRkZWQgc29tZSBuYW1lZCBwaXBlIGRlZmluaXRpb25zLgoKCSogaW5jbHVkZS9vbGUyLmg6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUFkZGVkIHByb3RvdHlwZSBmb3IgR2V0SEdsb2JhbEZyb21TdHJlYW0uCgoJKiBmaWxlcy9maWxlLmM6IE92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJQSBmYWlsdXJlIHRvIG9wZW4gYSBwaXBlIHNob3VsZCByZXR1cm4gSU5WQUxJRF9IQU5ETEVfVkFMVUUuCgoJKiBkbGxzL3F1YXJ0ei9NYWtlZmlsZS5pbiwgZGxscy9xdWFydHovUkVBRE1FLCBkbGxzL3F1YXJ0ei9hbWVycm9yLmMsCgkgIGRsbHMvcXVhcnR6L2Jhc2VmaWx0LmMsIGRsbHMvcXVhcnR6L2Jhc2VmaWx0LmgsCgkgIGRsbHMvcXVhcnR6L2Jhc2VwaW4uYywgZGxscy9xdWFydHovZGV2ZW51bS5jLCBkbGxzL3F1YXJ0ei9kZXZtb24uYywKCSAgZGxscy9xdWFydHovZGV2bW9uLmgsIGRsbHMvcXVhcnR6L2VudW11bmsuYywgZGxscy9xdWFydHovZmdjbHNpZC5jLAoJICBkbGxzL3F1YXJ0ei9mZ2V2ZW50LmMsIGRsbHMvcXVhcnR6L2ZncGFzcy5jLCBkbGxzL3F1YXJ0ei9mZ3JhcGguYywKCSAgZGxscy9xdWFydHovZmdyYXBoLmgsIGRsbHMvcXVhcnR6L2ZtYXAuYywgZGxscy9xdWFydHovZm1hcDIuYywKCSAgZGxscy9xdWFydHovaWJhc2F1ZC5jLCBkbGxzL3F1YXJ0ei9pYmFzdmlkLmMsCgkgIGRsbHMvcXVhcnR6L2lkZXZlbnVtLmMsIGRsbHMvcXVhcnR6L2lmZ3JhcGguYywgZGxscy9xdWFydHovaWZtYXAuYywKCSAgZGxscy9xdWFydHovaWZtYXAzLmMsIGRsbHMvcXVhcnR6L2lnY29uZmlnLmMsIGRsbHMvcXVhcnR6L2ltZW0uYywKCSAgZGxscy9xdWFydHovaW1lc2luay5jLCBkbGxzL3F1YXJ0ei9pbWV2ZW50LmMsCgkgIGRsbHMvcXVhcnR6L2ltZmlsdGVyLmMsIGRsbHMvcXVhcnR6L2ltc2Vlay5jLCBkbGxzL3F1YXJ0ei9pcmNsb2NrLmMsCgkgIGRsbHMvcXVhcnR6L2l1bmsuYywgZGxscy9xdWFydHovaXZpZHdpbi5jLCBkbGxzL3F1YXJ0ei9tYWluLmMsCgkgIGRsbHMvcXVhcnR6L21lbWFsbG9jLmMsIGRsbHMvcXVhcnR6L21vbnByb3AuYywKCSAgZGxscy9xdWFydHovbW9ucHJvcC5oLCBkbGxzL3F1YXJ0ei9tdHlwZS5jLCBkbGxzL3F1YXJ0ei9tdHlwZS5oLAoJICBkbGxzL3F1YXJ0ei9wdGltcGwuYywgZGxscy9xdWFydHovcHRpbXBsLmgsIGRsbHMvcXVhcnR6L3B0bXBvcy5jLAoJICBkbGxzL3F1YXJ0ei9wdG1zZWVrLmMsIGRsbHMvcXVhcnR6L3F1YXJ0el9wcml2YXRlLmgsCgkgIGRsbHMvcXVhcnR6L3NhbXBsZS5jLCBkbGxzL3F1YXJ0ei9zZWVrcGFzcy5jLAoJICBkbGxzL3F1YXJ0ei9zZWVrcGFzcy5oLCBkbGxzL3F1YXJ0ei9zeXNjbG9jay5jOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCU1lcmdlZCBzb21lIEMgc291cmNlcy4KCUZpeGVkIHNvbWUgYnVncy4KCVN0YXJ0ZWQgaW1wbGVtZW50aW5nIHNvbWUgcGFzcy10aHJvdWdoIGludGVyZmFjZXMuCgoyMDAxLTA5LTI0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2VydmVyL3VzZXIuYywgd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3MvdGltZXIuYywgd2luZG93cy93aW4uYywKCSAgd2luZG93cy93aW5wb3MuYywgZGxscy91c2VyL21zZzE2LmMsIGluY2x1ZGUvd2luLmgsCgkgIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3RyYWNlLmM6CglBIGNvdXBsZSBvZiBvcHRpbWl6YXRpb25zIHRvIGF2b2lkIHNvbWUgc2VydmVyIGNhbGxzIGluIFdJTl9GaW5kV25kUHRyCglhbmQgcmVsYXRlZCBmdW5jdGlvbnMuCgoJKiBzZXJ2ZXIvd2luZG93LmM6CglBdm9pZCBsaXN0IGNvcnJ1cHRpb24gd2hlbiBsaW5raW5nIHdpbmRvdyB3aXRoIEhXTkRfQk9UVE9NICh0aGFua3MgdG8KCUdlcmFyZCBQYXRlbCkuCgoJKiBvYmplY3RzL2ZvbnQuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglHZXRUZXh0RXh0ZW50RXhQb2ludFc6IGR1bXAgdGhlIHN0cmluZyBiZWZvcmUgbW9kaWZ5aW5nIHRoZSBwb2ludGVyLgoKCSogdG9vbHMvd2luZW1ha2VyOgoJQmlsbCBNZWRsYW5kIDxtZWRiaTAxQGFjY3BhYy5jb20+CglBZGQgc3VwcG9ydCBmb3IgbWFraW5nIGEgYnVpbGQgZW52aXJvbm1lbnQgd2l0aG91dCBlZGl0aW5nIHRoZSBzb3VyY2UKCWFuZCBzcGVjIGZpbGVzLgoKMjAwMS0wOS0yMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbnRyb2xzL3Njcm9sbC5jOgoJR3V5IEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gSW1wbGVtZW50IG1lc3NhZ2UgbG9vcCBvbiB0aGUgY2xpZW50IHNpZGUgb2YgdGhlIHNjcm9sbCBjb250cm9sLgoJLSBNb3ZlIHRoZSBtb3VzZSBjYXB0dXJlIHRvIGFmdGVyIHRoZSBTZXRGb2N1cyBzbyB0aGF0IGl0IHN0YXlzCgkgIGNhcHR1cmVkLgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jOgoJRGF2aWQgSGFtbWVydG9uIDxjcmF6bmV5QGNyYXpuZXkubmV0PgoJRml4ZWQgdHlwb3MuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYzoKCUd1eSBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglJbXBsZW1lbnQgaW5pdGlhbCB2ZXJzaW9uIG9mIFNIQWRkVG9SZWNlbnREb2NzLgoKCSogaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLCBpbmNsdWRlL3dpbnVzZXIuaCwKCSAgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3F1ZXVlLmMsIHNlcnZlci9yZXF1ZXN0LmgsCgkgIHNlcnZlci90cmFjZS5jLCBzZXJ2ZXIvdXNlci5jLCBzZXJ2ZXIvdXNlci5oLCBzZXJ2ZXIvd2luZG93LmMsCgkgIHdpbmRvd3Mvd2luLmM6CglBZGRlZCBwcm9wZXIgc3VwcG9ydCBmb3Igc3RvcmluZyB3aW5kb3cgcGFyZW50cyBpbiB0aGUgc2VydmVyLgoJQWRkZWQgYSBmZXcgcmVxdWVzdHMgdG8gcXVlcnkgdGhlIHdpbmRvdyBoaWVyYXJjaHkuCgoJKiBkbGxzL3gxMWRydi93aW5wb3MuYzoKCUlnbm9yZSBDb25maWd1ZU5vdGlmeSBzaXplIGNoYW5nZXMgd2hpbGUgdGhlIHdpbmRvdyBpcyBpY29uaWMuCgoJKiB0b29scy93aW5lZHVtcC9kZWJ1Zy5jLCB0b29scy93aW5lZHVtcC9tYWluLmMsCgkgIHRvb2xzL3dpbmVkdW1wL21zbWFuZ2xlLmMsIHRvb2xzL3dpbmVkdW1wL3BlLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCVNvbWUgZHVtYiBmaXhlcy4KCgkqIGluY2x1ZGUvd2luYmFzZS5oOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQHN0YXJ0LmNvbS5hdT4KCURlY2xhcmUgRGV2aWNlSW9Db250cm9sLgoKCSogd2luZG93cy9zeXNwYXJhbXMuYzoKCUFuZHJpeSBQYWxhbWFyY2h1ayA8YXBhM2FAeWFob28uY29tPgoJSW1wbGVtZW50ZWQgU1BJX0dFVFNIT1dTT1VORFMuCgoJKiBkbGxzL29sZWF1dDMyL3NhZmVhcnJheS5jLCBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJVmFyaWFudHMgYW5kIHNhZmUgYXJyYXlzIGlzIG5vdyBhYmxlIHRvIGNvcHkgQlNUUiBzd2l0aCBlbWJlZGRlZCBudWxsCgljaGFyYWN0ZXJzLiBTYWZlIGFycmF5cyBub3cgaGFuZGxlIEJTVFJzIGFuZCB2YXJpYW50cy4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzIuc3BlYywgZGxscy9vbGVhdXQzMi90eXBlbGliLmM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCVJlZ2lzdGVyIHR5cGVsaWIgbWFyc2hhbGluZyBmb3IgT0xFIEF1dG9tYXRpb24tY29tcGF0aWJsZSBpbnRlcmZhY2VzLgoKMjAwMS0wOS0yMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbXN2Y3J0L2V4Y2VwdC5jOgoJRml4ZWQgYSBjb3VwbGUgb2YgYnVncyBpbiBfZXhjZXB0X2hhbmRsZXIzLgoKCSogZGxscy9nZGkvZ2RpLnNwZWMsIG9iamVjdHMvZ2Rpb2JqLmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglBZGRlZCBzdHViIGZvciBHZGlJbml0MigpLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmg6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJR2V0IG1vcmUgZW50cnkgcG9pbnRzIGZyb20gQ29tY3RsMzIgYW5kIHNhdmUgdGhlIGFkZHJlc3Nlcy4KCgkqIGluY2x1ZGUvc2hsd2FwaS5oOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCURlZmluZSB0aGUgU0hRdWVyeVZhbHVlRXh7QXxXfSBlbnRyeSBwb2ludHMuCgoJKiBkbGxzL3VzZXIvd3NwcmludGYuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglUaGUgYmVoYXZpb3IgZm9yIHdzcHJpbnRmQSBpcyBkaWZmZXJlbnQgdGhhdCBmb3Igd3NwcmludGYxNiBpbiBob3cgaXQKCWhhbmRsZXMgTlVMTHMgYmVpbmcgcGFzc2VkIGFzIGNoYXJhY3RlciBwYXJhbWV0ZXJzLgoKCSogbWVtb3J5L2Vudmlyb24uYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglGaXggdGhlIGNvbnZlcnNpb25zIG9mIGEgY29tbWFuZCBsaW5lIHRvL2Zyb20gYW4gYXJndiBhcnJheS4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jOgoJR3V5IEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCUltcGxlbWVudCBtb3N0IG9mIHRoZSBNUlUgcmVsYXRlZCBmdW5jdGlvbnMuCgoJKiB0b29scy9leGFtaW5lLXJlbGF5OgoJR3V5IEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCUFkZCBzdXBwb3J0IGZvciB0aGUgK3Nub29wIHN0eWxlIG91dHB1dC4KCgkqIG9iamVjdHMvdGV4dC5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJRml4IG1hcHBpbmcgb2YgREVGQVVMVF9DSEFSU0VULgoKMjAwMS0wOS0xOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MvaW5wdXQuYywgd2luZG93cy94MTFkcnYvZXZlbnQuYywgd2luZG93cy94MTFkcnYvbW91c2UuYzoKCUJyYWQgQ2FtcGJlbGwgPGJyYWRAc2VtZS5jb20uYXU+CglGaXhlZCBtb3VzZSBwb3NpdGlvbiBwcm9jZXNzaW5nIGZvciB1c2Ugd2l0aCBhIHRvdWNoc2NyZWVuLgoKCSogZGxscy9xdWFydHovTWFrZWZpbGUuaW4sIGRsbHMvcXVhcnR6L3B0aW1wbC5jLCBkbGxzL3F1YXJ0ei9wdGltcGwuaCwKCSAgZGxscy9xdWFydHovcHRtcG9zLmMsIGRsbHMvcXVhcnR6L3B0bXNlZWsuYywgZGxscy9xdWFydHovc2Vla3Bhc3MuYywKCSAgZGxscy9xdWFydHovc2Vla3Bhc3MuaDoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglJbXBsZW1lbnRlZCBJU2Vla2luZ1Bhc3NUaHJ1LgoKCSogdG9vbHMvd2luZWNoZWNrLCBERVZFTE9QRVJTLUhJTlRTLCBSRUFETUUsCgkgIGRvY3VtZW50YXRpb24vYXJjaGl0ZWN0dXJlLnNnbWwsIGRvY3VtZW50YXRpb24vY29uZmlndXJpbmcuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9pbnN0YWxsYXRpb24tdW5kLWtvbmZpZ3VyYXRpb24uZ2VybWFuLAoJICBkb2N1bWVudGF0aW9uL3dpbmUuY29uZi5tYW4uaW4sIGZpbGVzL2Rvc19mcy5jLCBsaWJ0ZXN0L3ZvbGluZm8uYywKCSAgbXNkb3MvaW50MjUuYywgbXNkb3MvaW50MjYuYywgd2luZWRlZmF1bHQucmVnOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJVXBkYXRlcyBhbmQgZXJyb3IgbWVzc2FnZSBpbXByb3ZlbWVudHMuCgoJKiB3aW5kb3dzL21kaS5jOgoJSm9zaHVhIFRoaWVsZW4gPHRoaWVsZW5AbmV0cHJpbmNlLm5ldD4KCUNoYW5nZWQgTURJQ3JlYXRlQ2hpbGQgdG8gc3VwcG9ydCBDV19VU0VERUZBVUxUIGZvciAxNi1iaXQgTURJCgl3aW5kb3dzLgoKCSogd2luZG93cy93aW4uYzoKCUZpeGVkIGEgY291cGxlIG9mIGJ1Z3MgaW4gV0lOX1NldFdpbmRvd0xvbmcgY2F1c2VkIGJ5IHByZXZpb3VzCgljaGFuZ2UuCgoJKiBkbGxzL2ltbTMyL2ltZWtsLmMsIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbm5scy5oLAoJICBvbGUvb2xlMm5scy5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglGaXggdGhlIGRlZmluaXRpb24gb2Ygc3RydWN0cyBOVU1CRVJGTVQqIGFuZCBDVVJSRU5DWUZNVCouCglBZGQsIGZpeCBhbmQgbW92ZSBwcm90b3R5cGVzIGZyb20gd2luYmFzZS5oIHRvIHdpbm5scy5oLgoKCSogZGxscy9zaGVsbDMyL3NobGZvbGRlci5jOgoJR3V5IEFsYmVydGVsbGkgPGd1eUBjb2Rld2VhdmVycy5jb20+CglGaXggcHJvYmxlbSBjb21wYXJpbmcgcGlkbHMgYW5kIHJldHVybiBjb3JyZWN0IGNvZGUuCgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOgoJQW5kcml5IFBhbGFtYXJjaHVrIDxhcGEzYUB5YWhvby5jb20+CglBZGRlZCBydXNzaWFuIGxheW91dCB3aXRoIHBoYW50b20ga2V5LgoKCSogaW5jbHVkZS93aW51c2VyLmgsIHdpbmRvd3Mvc3B5LmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVJlbW92ZSBtYWNyb3MgdGhhdCBzaG91bGQgbm90IGJlIHRoZXJlIChjYXVzZSBjb25mbGljdHMgaW4gV2luZUxpYikuCglBZGQgY29ycmVzcG9uZGluZyBjb21tZW50cyBpbiBzcHkuYy4KCgkqIGluY2x1ZGUvdGNoYXIuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJUmVtb3ZlIGR1cGxpY2F0ZSBkZWZpbml0aW9uIG9mIF90bWFpbi4KCUFkZCBkZWZpbml0aW9ucyBmb3IgX190YXJndiBhbmQgX3RlbnZpcm9uLgoKCSogY29udHJvbHMvc2Nyb2xsLmMsIGRsbHMvdXNlci9NYWtlZmlsZS5pbiwgZGxscy91c2VyL2NvbnRyb2xzLmgsCgkgIGRsbHMvdXNlci9tc2cxNi5jLCBkbGxzL3VzZXIvdGh1bmsuYywgZGxscy91c2VyL3VzZXIuc3BlYywKCSAgZGxscy91c2VyL3duZDE2LmMsIGRsbHMveDExZHJ2L3dpbnBvcy5jLCBpbmNsdWRlL3dpbi5oLAoJICBpbmNsdWRlL3dpbnByb2MuaCwgaW5jbHVkZS93aW51c2VyLmgsIHdpbmRvd3MvY2FyZXQuYywKCSAgd2luZG93cy9jbGFzcy5jLCB3aW5kb3dzL2NsaXBib2FyZC5jLCB3aW5kb3dzL2RjZS5jLAoJICB3aW5kb3dzL2RlZmRsZy5jLCB3aW5kb3dzL2RlZnduZC5jLCB3aW5kb3dzL2RpYWxvZy5jLAoJICB3aW5kb3dzL2ZvY3VzLmMsIHdpbmRvd3MvaG9vay5jLCB3aW5kb3dzL2lucHV0LmMsIHdpbmRvd3MvbWRpLmMsCgkgIHdpbmRvd3MvbXNnYm94LmMsIHdpbmRvd3Mvbm9uY2xpZW50LmMsIHdpbmRvd3MvcGFpbnRpbmcuYywKCSAgd2luZG93cy9wcm9wZXJ0eS5jLCB3aW5kb3dzL3F1ZXVlLmMsIHdpbmRvd3Mvc2Nyb2xsLmMsCgkgIHdpbmRvd3Mvc3B5LmMsIHdpbmRvd3Mvc3RydWN0MzIuYywgd2luZG93cy90aW1lci5jLCB3aW5kb3dzL3dpbi5jLAoJICB3aW5kb3dzL3dpbmhlbHAuYywgd2luZG93cy93aW5wb3MuYywgd2luZG93cy93aW5wcm9jLmMsCgkgIGNvbnRyb2xzL2J1dHRvbi5jLCBjb250cm9scy9jb21iby5jLCBjb250cm9scy9pY29udGl0bGUuYywKCSAgY29udHJvbHMvbWVudS5jOgoJTWFkZSBhbGwgMTY8LT4zMiBIV05EIGNvbnZlcnNpb25zIHVzZSBleHBsaWNpdCBmdW5jdGlvbnMgaW5zdGVhZCBvZgoJaW1wbGljaXQgdHlwZSBjYXN0cy4KCU1vdmVkIGEgbG90IG9mIDE2LWJpdCBmdW5jdGlvbnMgdG8gdGhlIG5ldyB3bmQxNi5jIGZpbGUuCglDaGFuZ2VkIERJQUxPR0lORk8gc3RydWN0dXJlIGhhbmRsaW5nIHRvIHN1cHBvcnQgMzItYml0IGhhbmRsZXMuCgoJKiB3aW5kb3dzL3gxMWRydi9jbGlwYm9hcmQuYywgd2luZG93cy94MTFkcnYvZXZlbnQuYywKCSAgZGxscy9zZXR1cGFwaS9zZXR1cHhfbWFpbi5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsCgkgIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmM6CglGaXhlZCBhIGNvdXBsZSBvZiBIV05EIHR5cGUgbWlzbWF0Y2hlcy4KCgkqIGluY2x1ZGUvZm9udC5oLCBvYmplY3RzL2ZvbnQuYywgb2JqZWN0cy90ZXh0LmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglVc2UgdGhlIGZvbnQgY2hhcnNldCB0byBvYnRhaW4gYSBjb2RlcGFnZSBmb3IgQS0+VyBjb252ZXJzaW9uIGluIHRoZQoJdGV4dCBmdW5jdGlvbnMuCgoJKiBkbGxzL3dpbmluZXQvdXRpbGl0eS5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJUmVuYW1lICJTeXN0ZW1UaW1lIiB0byAidCIgKHRoaXMgaXMgKm5vdCogU1lTVEVNVElNRSAtIGF2b2lkCgljb25mdXNpb24pLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW46CglCZXJuaGFyZCBSb3NlbmtyYWVuemVyIDxiZXJvQHJlZGhhdC5kZT4KCUZpeGVzIGZvciBhdXRvY29uZiAyLjUyIG9yIGhpZ2hlci4KCgkqIGRsbHMvbXN2Y3J0L2xvY2FsZS5jLCBkbGxzL21zdmNydC9tYWluLmMsIGluY2x1ZGUvTWFrZWZpbGUuaW4sCgkgIGluY2x1ZGUvbXN2Y3J0L2xvY2FsZS5oLCBpbmNsdWRlL21zdmNydC9zeXMvc3RhdC5oLAoJICBpbmNsdWRlL21zdmNydC93Y2hhci5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBZGQgbXN2Y3J0L2xvY2FsZS5oLgoJQWRkIG1pc3NpbmcgaW5jbHVkZSBkaXJlY3RpdmVzIGluIG1zdmNydC93Y2hhci5oLgoJRml4IHByb3RvdHlwZSBvZiBfd3N0YXRpNjQgaW4gbXN2Y3J0L3N5cy9zdGF0LmguCgoyMDAxLTA5LTE3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZmlsZXMvZHJpdmUuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglNYWtlIHJlbGF0aXZlIHBhdGhzIG9mIFtEcml2ZV0gc2VjdGlvbnMgcmVsYXRpdmUgdG8gV0lORVBSRUZJWC4KCgkqIGRsbHMvcnBjcnQ0L3JwY3J0NC5zcGVjOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglMb3RzIG9mIHJwY3J0NC5kbGwgc3R1YnMuCgoJKiB0b29scy93aW5lZHVtcC9tYWluLmMsIHRvb2xzL3dpbmVkdW1wL21zbWFuZ2xlLmMsCgkgIHRvb2xzL3dpbmVkdW1wL3BlLmMsIHRvb2xzL3dpbmVkdW1wL3N5bWJvbC5jLAoJICB0b29scy93aW5lZHVtcC93aW5lZHVtcC5oOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBkZW1hbmdsaW5nIGludm9jYXRpb24uCglCZSBhIGJpdCBtb3JlIHZlcmJvc2Ugb24gaW1wbGVtZW50ZWQgZmVhdHVyZXMuCgoJKiBkbGxzL2NvbWN0bDMyL2hlYWRlci5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQHN0YXJ0LmNvbS5hdT4KCUlnbm9yZSBuZWdhdGl2ZSB3aWR0aHMgaW4gSEVBREVSX1NldEl0ZW1Cb3VuZHMuCgoJKiBkb2N1bWVudGF0aW9uL3NhbXBsZXMvY29uZmlnOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglDb3NtZXRpYyBjaGFuZ2VzLgoKCSogTWFrZS5ydWxlcy5pbiwgTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLAoJICBkbGxzL01ha2VkbGwucnVsZXMuaW4sIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvbWFrZV9kbGxzOgoJSW1wcm92ZWQgbWFrZV9kbGxzIHNjcmlwdC4gTW92ZWQgZGxsIGxpc3Qgb3V0IG9mCglNYWtlLnJ1bGVzLmluLiBSZW1vdmVkIGEgZmV3IG5vIGxvbmdlciB1c2VkIHJ1bGVzLgoKCSogZGxscy9xdWFydHovTWFrZWZpbGUuaW4sIGRsbHMvcXVhcnR6L2NvbXBsaXN0LmMsCgkgIGRsbHMvcXVhcnR6L2RldmVudW0uYywgZGxscy9xdWFydHovZW51bXVuay5jLCBkbGxzL3F1YXJ0ei9mZ2Nsc2lkLmMsCgkgIGRsbHMvcXVhcnR6L2ZnaWRpc3AuYywgZGxscy9xdWFydHovZmdyYXBoLmMsIGRsbHMvcXVhcnR6L2ZtYXAuYywKCSAgZGxscy9xdWFydHovZm1hcDIuYywgZGxscy9xdWFydHovaWJhc2F1ZC5jLCBkbGxzL3F1YXJ0ei9pYmFzdmlkLmMsCgkgIGRsbHMvcXVhcnR6L2lmZ3JhcGguYywgZGxscy9xdWFydHovaWZtYXAuYywgZGxscy9xdWFydHovaWZtYXAzLmMsCgkgIGRsbHMvcXVhcnR6L2lncnZlci5jLCBkbGxzL3F1YXJ0ei9pbWNudGwuYywgZGxscy9xdWFydHovaW1lbS5jLAoJICBkbGxzL3F1YXJ0ei9pbWVzaW5rLmMsIGRsbHMvcXVhcnR6L2ltZXZlbnQuYywKCSAgZGxscy9xdWFydHovaW1maWx0ZXIuYywgZGxscy9xdWFydHovaW1wb3MuYywgZGxscy9xdWFydHovaW1zZWVrLmMsCgkgIGRsbHMvcXVhcnR6L2lyY2xvY2suYywgZGxscy9xdWFydHovaXZpZHdpbi5jLCBkbGxzL3F1YXJ0ei9tYWluLmMsCgkgIGRsbHMvcXVhcnR6L21lbWFsbG9jLmMsIGRsbHMvcXVhcnR6L21lbWFsbG9jLmgsCgkgIGRsbHMvcXVhcnR6L3NhbXBsZS5jLCBkbGxzL3F1YXJ0ei9zYW1wbGUuaCwgZGxscy9xdWFydHovc2Vla3Bhc3MuYywKCSAgZGxscy9xdWFydHovc3lzY2xvY2suYywgaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9kc291bmQuaCwKCSAgaW5jbHVkZS9zdHJtaWYuaCwgaW5jbHVkZS93aW5lL29ial9rc3Byb3BlcnR5Lmg6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJSW1wbGVtZW50ZWQgSU1lbUFsbG9jYXRvci4KCgkqIGRvY3VtZW50YXRpb24vc3RhdHVzL2ludGVybmF0aW9uYWxpc2F0aW9uLAoJICB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOgoJQW5kcml5IFBhbGFtYXJjaHVrIDxhcGEzYUB5YWhvby5jb20+CglGaXhlZCByZWZlcmVuY2VzIHRvIG9sZCBkb2N1bWVudGF0aW9uIGxvY2F0aW9uLgoKCSogZGxscy9tc3ZjcnQvbWJjcy5jLCBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnRlZCBfbWJzdXByLgoKCSogY29udHJvbHMvc2Nyb2xsLmM6CglCb2JieSBCaW5naGFtIDx1aG1tbW1AYW1lcml0ZWNoLm5ldD4KCVdoZW4geW91IGhvbGQgdGhlIGxlZnQgbW91c2UgYnV0dG9uIGluc2lkZSB0aGUgc2Nyb2xsYmFyLCB0aGVuIG1vdmUKCXRoZSBtb3VzZSBvZmYgc28gaXQgc3RvcHMgc2Nyb2xsaW5nLCBhbmQgcmV0dXJuIHRoZSBtb3VzZSwgaXQgc2hvdWxkCgljb250aW51ZSBzY3JvbGxpbmcuCgoyMDAxLTA5LTE0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9xdWFydHovcXVhcnR6LnNwZWMsIGRsbHMvc3RpLy5jdnNpZ25vcmUsIGRsbHMvc3RpL01ha2VmaWxlLmluLAoJICBkbGxzL3N0aS9zdGkuc3BlYywgZGxscy9zdGkvc3RpX21haW4uYywgZGxscy91cmwvLmN2c2lnbm9yZSwKCSAgZGxscy91cmwvTWFrZWZpbGUuaW4sIGRsbHMvdXJsL3VybC5zcGVjLCBkbGxzL3VybC91cmxfbWFpbi5jLAoJICBNYWtlLnJ1bGVzLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy9NYWtlZmlsZS5pbiwKCSAgZGxscy9tYXBpMzIvLmN2c2lnbm9yZSwgZGxscy9tYXBpMzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvbWFwaTMyL21hcGkzMi5zcGVjLCBkbGxzL21hcGkzMi9tYXBpMzJfbWFpbi5jLAoJICBkbGxzL21zaW1nMzIvLmN2c2lnbm9yZSwgZGxscy9tc2ltZzMyL01ha2VmaWxlLmluLAoJICBkbGxzL21zaW1nMzIvbXNpbWczMi5zcGVjLCBkbGxzL21zaW1nMzIvbXNpbWczMl9tYWluLmM6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJQWRkZWQgc3R1YnMgZm9yIG1hcGkzMiwgbXNpbWczMiwgc3RpIGFuZCB1cmwuCgoJKiB3aW5kb3dzL25vbmNsaWVudC5jOgoJRml4ZWQgSFdORCBjb21wYXJlIGluIE5DX0hhbmRsZVNldEN1cnNvci4KCgkqIGdyYXBoaWNzL3BhdGguYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUF2b2lkIGNhbGxpbmcgUmVzdG9yZURDIHdpdGggZ2RpIGxvY2suCgoJKiB0c3gxMS9NYWtlZmlsZS5pbiwgdHN4MTEvWDExX2NhbGxzLCB0c3gxMS90c194cmVuZGVyLmMsIGNvbmZpZ3VyZSwKCSAgY29uZmlndXJlLmluLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBpbmNsdWRlL3RzX3hyZW5kZXIuaCwKCSAgdG9vbHMvbWFrZV9YMTF3cmFwcGVyczoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBjb25maWcgY2hlY2sgYW5kIHRocmVhZCBzYWZlIHdyYXBwZXJzIGZvciB0aGUgWFJlbmRlciBsaWJyYXJ5LgoKCSogZGxscy9nZGkvZHJpdmVyLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRG8gbm90IGhvbGQgdGhlIEdESSBsb2NrIHdoaWxlIDE2LWJpdCBFeHREZXZpY2VNb2RlIGlzIGNhbGxlZC4KCgkqIHRvb2xzL3dpbmVidWlsZC9zcGVjMTYuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGQgbWlzc2luZyBDQUxMQkFDSyBtb2RpZmllci4KCgkqIGRsbHMvd3NvY2szMi9zb2NrZXQuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRml4IHJlY3YgcHJvdG90eXBlIGZvciBXU0FSZWN2RXguCgoJKiBmaWxlcy9kb3NfZnMuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglGaXggdGhlIGVycm9yIHJldHVybmVkIGJ5IEdldExvbmdQYXRoTmFtZUEuCgoJKiBkbGxzL3VzZXIvY29tbTE2LmMsIGRsbHMvdXNlci9kZGUvY2xpZW50LmMsIGRsbHMvdXNlci9kZGUvbWlzYy5jLAoJICBkbGxzL3VzZXIvZGRlL3NlcnZlci5jLCBkbGxzL3VzZXIvbWVzc2FnZS5jLCBkbGxzL3gxMWRydi9zY3JvbGwuYywKCSAgZGxscy94MTFkcnYvd2luZG93LmMsIGRsbHMveDExZHJ2L3dpbnBvcy5jLCB3aW5kb3dzL2NhcmV0LmMsCgkgIHdpbmRvd3MvY2xpcGJvYXJkLmMsIHdpbmRvd3MvZGVmd25kLmMsIHdpbmRvd3MvZGlhbG9nLmMsCgkgIHdpbmRvd3MvbWRpLmMsIHdpbmRvd3MvdGltZXIuYywgd2luZG93cy93aW4uYywgd2luZG93cy93aW5wb3MuYywKCSAgY29udHJvbHMvY29tYm8uYywgY29udHJvbHMvbWVudS5jLCBjb250cm9scy9zY3JvbGwuYzoKCU1ha2Ugc3VyZSB0aGF0IEhXTkQgY29tcGFyaXNvbnMgYXJlIGFsd2F5cyBkb25lIHdpdGggZnVsbCAzMi1iaXQKCWhhbmRsZXMuCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGluY2x1ZGUvd2luc29jay5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglGaXggdGhlIFdTQVN0YXJ0dXAgcHJvdG90eXBlLgoJRml4IGhhbmRsaW5nIG9mIHRpbWVvdXQgcGFyYW1ldGVyIGluIHNlbGVjdC4KCgkqIHRvb2xzL3dpbmVkdW1wL3BlLmM6CglGaXhlZCBkdW1waW5nIG9mIGRsbCBleHBvcnQgdGFibGUuCgoJKiBkbGxzL2RkcmF3L2RkcmF3L2hhbC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglSZXR1cm4gdGhlIEZPVVJDQyBjb2RlcyBzZXQgYnkgdGhlIEhBTCBkcml2ZXIuCgoJKiBncmFwaGljcy9lbmhtZXRhZmlsZWRydi9pbml0LmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglSZWxlYXNlIGdkaSBsb2NrIGJlZm9yZSBjYWxsaW5nIERlbGV0ZURDLgoKCSogdG9vbHMvd2luZWxhdW5jaGVyLmluOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglQbGFjZSB0aGUgbG9nIGluICRUTVAgaWYgc2V0IGFuZCAvdG1wIG90aGVyd2lzZS4KCgkqIGluY2x1ZGUvd2luY29uLmgsIHdpbjMyL2NvbnNvbGUuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJSEFORExFUl9ST1VUSU5FIGlzIGluIGZhY3QgUEhBTkRMRVJfUk9VVElORS4KCgkqIGRsbHMveDExZHJ2L3h2aWRtb2RlLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQ2hlY2sgZm9yIGh0b3RhbD12dG90YWw9MCAoZm9yIHhmcmVlIDQgdmVzYSBkcml2ZXIpLgoKMjAwMS0wOS0xMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvZ2RpL01ha2VmaWxlLmluLCBkbGxzL2dkaS9mcmVldHlwZS5jLCBkbGxzL3R0eWRydi9vYmplY3RzLmMsCgkgIGRsbHMvd2luZXBzL2ZvbnQuYywgZ3JhcGhpY3MvZW5obWV0YWZpbGVkcnYvb2JqZWN0cy5jLAoJICBncmFwaGljcy9tZXRhZmlsZWRydi9vYmplY3RzLmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L2ZvbnQuYywKCSAgZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsIGluY2x1ZGUvY29uZmlnLmguaW4sIGluY2x1ZGUvZm9udC5oLAoJICBpbmNsdWRlL2dkaS5oLCBvYmplY3RzL2RjLmMsIG9iamVjdHMvZm9udC5jLCBvYmplY3RzL2dkaW9iai5jLAoJICBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUxheSBkb3duIHRoZSBpbmZyYXN0cnVjdHVyZSBmb3IgZ2RpIGZvbnQgcmVuZGVyaW5nLgoJUGFydGlhbCBpbXBsZW1lbnRhdGlvbiBvZiBHZXRHeWxwaE91dGxpbmUgYW5kIEdldE91dGxpbmVUZXh0TWV0cmljcwoJZm9yIGdkaSBmb250cy4KCgkqIHdpbmRvd3Mvd2lucG9zLmMsIGRsbHMvdXNlci9tZXNzYWdlLmMsIGluY2x1ZGUvd2luLmgsCgkgIHdpbmRvd3MvY2xpcGJvYXJkLmMsIHdpbmRvd3MvZGNlLmMsIHdpbmRvd3MvZGlhbG9nLmMsCgkgIHdpbmRvd3MvZm9jdXMuYywgd2luZG93cy9pbnB1dC5jLCB3aW5kb3dzL3dpbi5jOgoJTWFrZSBzdXJlIHRoYXQgZnVuY3Rpb25zIHJldHVybmluZyBhbiBIV05EIGFsd2F5cyByZXR1cm4gYSBmdWxsIDMyLWJpdAoJaGFuZGxlLgoKCSogZGxscy9hZHZhcGkzMi9hZHZhcGkzMi5zcGVjLCBkbGxzL2FkdmFwaTMyL2NyeXB0LmM6CglUcmF2aXMgTWljaGllbHNlbiA8dGptaWNoaWVsc2VuQHlhaG9vLmNvbT4KCUNyZWF0ZWQgc3R1YnMgZm9yIGFsbCBjcnlwdG9ncmFwaGljIGZ1bmN0aW9ucy4KCgkqIHNlcnZlci9xdWV1ZS5jLCBzZXJ2ZXIvdXNlci5jLCBzZXJ2ZXIvdXNlci5oOgoJQ29udmVydCB1c2VyIGhhbmRsZXMgcmVjZWl2ZWQgZnJvbSBjbGllbnQgdG8gZnVsbCBoYW5kbGVzLgoKMjAwMS0wOS0xMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvcHJvY2Vzcy5oOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZSBub3QgdXNlZCBpbmNsdWRlL3Byb2Nlc3MuaC4KCgkqIG9iamVjdHMvY2xpcHBpbmcuYywgZGxscy9zaGVsbDMyL3NocG9saWN5LmMsCgkgIGRsbHMvd2luYXNwaS93aW5hc3BpMzIuYywgZGxscy93aW5pbmV0L2Z0cC5jLCBkbGxzL3dpbmluZXQvaHR0cC5jLAoJICBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYywgZGxscy94MTFkcnYvZGdhMi5jLCBkbGxzL3gxMWRydi94dmlkbW9kZS5jLAoJICBncmFwaGljcy9wYWludGluZy5jLCBncmFwaGljcy94MTFkcnYvYml0Ymx0LmMsCgkgIGdyYXBoaWNzL3gxMWRydi9vZW1iaXRtYXAuYywgbXNkb3MvaW50MTAuYywgZGxscy9jb21jdGwzMi90YWIuYywKCSAgZGxscy9kZHJhdy9kZHJhdy9oYWwuYywgZGxscy9pbWFnZWhscC9tb2RpZnkuYywKCSAgZGxscy9tc3ZjcnQvbG9jYWxlLmMsIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmMsIGRsbHMvb2xlMzIvYmluZGN0eC5jLAoJICBkbGxzL29sZTMyL2ZpbGVtb25pa2VyLmMsIGRsbHMvb2xlMzIvaXRlbW1vbmlrZXIuYywKCSAgZGxscy9vbGUzMi9tb25pa2VyLmMsIGRsbHMvb2xlMzIvb2xlMi5jLCBkbGxzL3F1YXJ0ei9hbWVycm9yLmMsCgkgIGRsbHMvc2V0dXBhcGkvc2V0dXB4X21haW4uYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQ2xlYW51cCBjb2RlIHRoYXQgaXMgc3RyYW5nZSBvciBkaWZmaWN1bHQgdG8gcGFyc2UuCgoJKiBzY2hlZHVsZXIvY2xpZW50LmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQmV0dGVyIHNlcGFyYXRlIHNvbWUgc3lzdGVtIHNwZWNpZmljIGNvZGUuCgoJKiBpbmNsdWRlL2RzaG93LmgsIGluY2x1ZGUvc3RybWlmLmgsIGRsbHMvcXVhcnR6L01ha2VmaWxlLmluLAoJICBkbGxzL3F1YXJ0ei9hbXVuZG9jLmMsIGRsbHMvcXVhcnR6L2ZncmFwaC5jLCBkbGxzL3F1YXJ0ei9mZ3JhcGguaCwKCSAgZGxscy9xdWFydHovaWZtYXAuYywgZGxscy9xdWFydHovaWZtYXAzLmMsIGRsbHMvcXVhcnR6L2ltY250bC5jLAoJICBkbGxzL3F1YXJ0ei9pbWVtLmMsIGRsbHMvcXVhcnR6L2ltZmlsdGVyLmMsIGRsbHMvcXVhcnR6L2lyY2xvY2suYywKCSAgZGxscy9xdWFydHovaXVuay5jLCBkbGxzL3F1YXJ0ei9pdW5rLmgsIGRsbHMvcXVhcnR6L21haW4uYywKCSAgZGxscy9xdWFydHovbWVtYWxsb2MuaCwgZGxscy9xdWFydHovc2Vla3Bhc3MuYywKCSAgZGxscy9xdWFydHovc2Vla3Bhc3MuaCwgZGxscy9xdWFydHovc3lzY2xvY2suaCwgd2luZWRlZmF1bHQucmVnOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUZpeGVkIHNvbWUgYnJva2VuIG1hY3Jvcy4KCUFkZGVkIHNvbWUgc3R1YnMuCglJbXBsZW1ldGVkIHVuZG9jdW1lbnRlZCBBUElzLgoJSW1wbGVtZW50ZWQgbWFueSBtZXRob2RzIGluIElNZWRpYUZpbHRlciwgSU1lZGlhQ29udHJvbCBhbmQKCUlSZWZlcmVuY2VDbG9jay4KCVN0YXJ0ZWQgSW1wbGVtZW50aW5nIElNZW1vcnlBbGxvY2F0b3IuCgoJKiB3aW4zMi9uZXdmbnMuYzoKCUd1eSBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBjb2Rld2VhdmVycy5jb20+CglRdWlldCBGbHVzaEluc3RydWN0aW9uQ2FjaGUgZm9yIG5vbi1OVCBzeXN0ZW1zIHdoZXJlIGl0IGRvZXMgbm90aGluZwoJcGVyIE1TRE4uCgoJKiBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGUzMi9vbGUzMl9tYWluLmMsCgkgIGRsbHMvb2xlMzIvb2xlMzJfbWFpbi5oOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCVN5bmNocm9uaXplIGFjY2VzcyB0byB0aGUgc19DT01Mb2NrQ291bnQsIGZpcnN0UmVnaXN0ZXJlZENsYXNzLAoJb3BlbkRsbExpc3QgaW4gY29tcG9iai4KCjIwMDEtMDktMTAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3gxMWRydi93aW5wb3MuYzoKCUlnbm9yZSBzaXplIGNoYW5nZSBvbiBDb25maWd1cmVOb3RpZnkgaWYgd2luZG93IHJlY3QgaXMgZW1wdHkgYW5kIG5ldwoJc2l6ZSBpcyAxeDEuCgoJKiB3aW5kb3dzL3dpbi5jOgoJTWFrZSBzdXJlIHRoYXQgcmV0dXJuZWQgd2luZG93IGJlbG9uZ3MgdG8gY29ycmVjdCB0aHJlYWQgd2hlbiBjaGVja2luZwoJc2libGluZ3Mgb2YgdHJhbnNwYXJlbnQgd2luZG93cyBpbiBXSU5fRmluZFdpblRvUmVwYWludC4KCgkqIGRvY3VtZW50YXRpb24vcHJpbnRpbmcuc2dtbDoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCVRoZSBbd2luZG93c10gc2VjdGlvbiBpcyBpbiB3aW4uaW5pIG5vdCBpbiB+Ly53aW5lL2NvbmZpZy4KCgkqIGRsbHMvbXN2aWRlby9tY2l3bmQuYywgZGxscy9vbGVhdXQzMi92YXJpYW50LmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbHN0cmluZy5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglEb2N1bWVudGF0aW9uIGZpeGVzLgoKCSogdG9vbHMvd2luYXBpL2NfcGFyc2VyLnBtLCB0b29scy93aW5hcGkvbWFrZV9wYXJzZXIucG0sCgkgIHRvb2xzL3dpbmFwaS9vcHRpb25zLnBtLCB0b29scy93aW5hcGkvb3V0cHV0LnBtLAoJICB0b29scy93aW5hcGkvd2luYXBpX2ZpeHVwLCB0b29scy93aW5hcGkvd2luYXBpX2ZpeHVwX3N0YXRlbWVudHMucG0sCgkgIHRvb2xzL3dpbmFwaS93aW5hcGlfbW9kdWxlX3VzZXIucG0sCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4xNi93aW5zb2NrLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3F1YXJ0ei5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9ycGNydDQuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2NoZWNrOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIEZyZWVCU0Qgbm93IHN1cHBvcnRlZC4KCS0gTXVjaCBtb3JlIHdvcmsgb24gdGhlIG5ldyBDIHBhcnNlci4KCS0gQVBJIGZpbGVzIHVwZGF0ZS4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6CglBbmR5IFJ5c2luIDxhcnlzaW5AeWFob28uY29tPgoJQWRkZWQgVWtyYWluaWFuIGtleWJvYXJkIGxheW91dC4KCgkqIGRsbHMvb2xlMzIvc3RnX3N0cmVhbS5jOgoJQmlsbCBNZWRsYW5kIDxCaWxsLk1lZGxhbmRAYWNjcGFjLmNvbT4KCUJhc2ljIGltcGxlbWVudGF0aW9uIG9mIElTdHJlYW06Q2xvbmUuCgoJKiBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYzoKCUJpbGwgTWVkbGFuZCA8QmlsbC5NZWRsYW5kQGFjY3BhYy5jb20+CglNb3JlIGdyYWNlZnVsIGV4aXQgb24gZmFpbHVyZS4KCgkqIGxpYnRlc3QvdmFydGVzdC5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJVXNlIFZfKiBtYWNyb3MuCgoJKiBpbmNsdWRlL3dpbmUvb2JqX29sZWF1dC5oOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJRml4IHR5cG8uCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYywgZGxscy9vbGVhdXQzMi90eXBlbGliLmg6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglMb2FkIHNvbWUgdXNlZnVsIFRZUEVBVFRSIGVsZW1lbnRzIGZyb20gdjEgdHlwZWxpYnMuCgoJKiBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYywgZGxscy93aW5pbmV0L3dpbmluZXQuc3BlYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJTW9yZSBkZWJ1ZyBvdXRwdXQgZm9yIEludGVybmV0R2V0Q29va2llLCBhZGRlZCBzdHViIGZvciBJbnRlcm5ldFNldENvb2tpZS4KCgkqIGRsbHMvZGRyYXcvZGRyYXdfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L2RzdXJmYWNlL2RpYi5jLAoJICBkbGxzL2RkcmF3L2RzdXJmYWNlL2hhbC5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL2hhbC5oLAoJICBkbGxzL2RkcmF3L2RzdXJmYWNlL21haW4uYywgZGxscy9kZHJhdy9kc3VyZmFjZS9tYWluLmgsCgkgIGRsbHMvZGRyYXcvZHN1cmZhY2UvdGh1bmtzLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UvdXNlci5jLAoJICBkbGxzL2RkcmF3L2RzdXJmYWNlL3VzZXIuaCwgaW5jbHVkZS9kZHJhd2kuaDoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgZHdGbGFncyB0byBsb2NrX3VwZGF0ZSBwcml2YXRlIGZ1bmN0aW9ucyBzbyB3ZSBjYW4gcGFzcwoJV1JJVEVPTkxZL1JFQURPTkxZLgoJQWRkZWQgdGhvc2UgZmxhZ3MgdG8gdGhlIGludGVybmFsIExvY2soKSBjYWxscy4KCU9ubHkgY29weSB0aGUgc3VyZmFjZSBmcm9tIHNjcmVlbiB0byBzdXJmYWNlIGlmIG5vdCB3cml0ZW9ubHkuCglSZXN0cmljdCBibGl0dGluZyBiZXR3ZWVuIGRpc3BsYXkgd2luZG93IGFuZCBzdXJmYWNlIHRvIHRoZQoJbG9ja2VkL3VubG9ja2VkIHJlY3RhbmdsZSBhbmQgdGhlIGNsaXB3aW5kb3cgc2VjdGlvbi4KCUFkZGVkIGRlZmluZXMgZm9yIERESEFMX1VOTE9DS0RBVEEvRERIQUxfTE9DS0RBVEEsIGFkZGVkIGNhbGxzIHRvIEhBTAoJaW1wbGVtZW50YXRpb24uCgoJKiB3aW5kb3dzL3dpbi5jOiBQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCVRoZSBtZXNzYWdlIGhhbmRsZXIgb2YgV01fU1RZTEVDSEFOR0lORyBpcyBzdXBwb3NlZCB0byBiZSBhYmxlIHRvCgltb2RpZnkgdGhlIHByb3Bvc2VkIHN0eWxlIGlmIGl0IHdpc2hlcy4KCgkqIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmMsIGRsbHMvY29tY3RsMzIvc3RhdHVzLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCVVzZSB0aGUgbWluL21heCBpbiB3aW5kZWYuaCBpbnN0ZWFkLgoKCSogZGxscy9rZXJuZWwvdGltZS5jLCBpbmNsdWRlL3dpbm5scy5oOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAd2luZS5sc3QuZGU+CglFbmhhbmNlZCBHZXRDYWxlbmRhckluZm8gc3R1YiwgYWRkZWQga25vd24gQ0FMXyogZGVmaW5lcy4KCgkqIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmMsIGluY2x1ZGUvZHNvdW5kLmg6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUZpeCBidWZmZXJpbmcgcHJvYmxlbXMgaW4gSEVMIG1vZGUuCgoJKiBkbGxzL3dpbmluZXQvZnRwLmMsIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglGaXggY29tcGlsYXRpb24gZXJyb3JzIG9uIEZyZWVCU0QuCgoJKiBkbGxzL21zdmNydC9wcm9jZXNzLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVJld3JpdGUgbXN2Y3J0X3thcmd2dG9zLHZhbGlzdHRvc30gdG8gYmUgbW9yZSBlZmZpY2llbnQuCglXYXJuIGFib3V0IHRoZSAnICcgYW5kICciJyBoYW5kbGluZyBvZiB0aGUgZXhlYyBhbmQgc3Bhd24gZnVuY3Rpb25zLgoJQ29weSB0aGUgY29tbWFuZCBsaW5lIGluIE1TVkNSVF9zeXN0ZW0gdG8gbWFrZSBpdCB3cml0YWJsZS4KCgkqIHRzeDExL01ha2VmaWxlLmluOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUxpbmsgdHN4MTEgd2l0aCB0aGUgWC9HTCBsaWJyYXJpZXMuCgoJKiBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jLCBkbGxzL3gxMWRydi94dmlkbW9kZS5jLAoJICBkb2N1bWVudGF0aW9uL3NhbXBsZXMvY29uZmlnOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIGFuIG9wdGlvbiB0byBkaXNhYmxlIFhWaWRNb2RlIHN1cHBvcnQuCgoJKiB0b29scy93aW5lbGF1bmNoZXIuaW46CglFcmljIExhbW1lcnRzIDxlcmljQGxhbW1lcnRzLm9yZz4KCVByZXNlcnZlIHdpbmUgcmV0dXJuIHN0YXR1cy4KCjIwMDEtMDktMDcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB0b29scy93bWMvd3JpdGUuYzoKCUp1c3RpbiBTYW50YSBCYXJiYXJhIDxqdXN0aW5zYkBob3RtYWlsLmNvbT4KCUZpeGVkIHByb2JsZW0gd2l0aCBjaGVjayBmb3Igc3BlY2lhbCBjaGFyYWN0ZXJzLgoKCSogZGxscy9udGRsbC9zdHJpbmcuYzoKCUpvaGFubiBNZXNzbmVyIDxqb2hhbm4ubWVzc25lckB6aWQudW5pLWxpbnouYWMuYXQ+CglGaXhlZCBidWcgaW4gX3VsdG9hLgoKCSogZGxscy9tc3ZjcnQvZGF0YS5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglJbml0aWFsaXplIGFyZ2MvYXJndi93YXJndiBieSBjYWxsaW5nIG50ZGxsLl9fd2luZV9nZXRfe3d9bWFpbl9hcmdzLgoKCSogZ3JhcGhpY3MveDExZHJ2L2RpYi5jOgoJSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJQ2hhbmdpbmcgRElCIGNvbG9yIHRhYmxlIG5vdyB1cGRhdGVzIHRoZSBESUIgdmlzaWJsZSBzdGF0ZS4KCgkqIGRsbHMvcXVhcnR6L01ha2VmaWxlLmluLCBkbGxzL3F1YXJ0ei9jb21wbGlzdC5jLAoJICBkbGxzL3F1YXJ0ei9jb21wbGlzdC5oLCBkbGxzL3F1YXJ0ei9kZXZlbnVtLmMsCgkgIGRsbHMvcXVhcnR6L2RldmVudW0uaCwgZGxscy9xdWFydHovZGV2bW9uLmMsIGRsbHMvcXVhcnR6L2Rldm1vbi5oLAoJICBkbGxzL3F1YXJ0ei9lbnVtdW5rLmMsIGRsbHMvcXVhcnR6L2VudW11bmsuaCwgZGxscy9xdWFydHovZmdjbHNpZC5jLAoJICBkbGxzL3F1YXJ0ei9mZ2lkaXNwLmMsIGRsbHMvcXVhcnR6L2ZncmFwaC5jLCBkbGxzL3F1YXJ0ei9mZ3JhcGguaCwKCSAgZGxscy9xdWFydHovZm1hcC5jLCBkbGxzL3F1YXJ0ei9mbWFwLmgsIGRsbHMvcXVhcnR6L2ZtYXAyLmMsCgkgIGRsbHMvcXVhcnR6L2ZtYXAyLmgsIGRsbHMvcXVhcnR6L2liYXNhdWQuYywgZGxscy9xdWFydHovaWJhc3ZpZC5jLAoJICBkbGxzL3F1YXJ0ei9pZGV2ZW51bS5jLCBkbGxzL3F1YXJ0ei9pZmdyYXBoLmMsIGRsbHMvcXVhcnR6L2lmbWFwLmMsCgkgIGRsbHMvcXVhcnR6L2lmbWFwMy5jLCBkbGxzL3F1YXJ0ei9pZ3J2ZXIuYywgZGxscy9xdWFydHovaW1jbnRsLmMsCgkgIGRsbHMvcXVhcnR6L2ltZW0uYywgZGxscy9xdWFydHovaW1lc2luay5jLCBkbGxzL3F1YXJ0ei9pbWV2ZW50LmMsCgkgIGRsbHMvcXVhcnR6L2ltZmlsdGVyLmMsIGRsbHMvcXVhcnR6L2ltcG9zLmMsIGRsbHMvcXVhcnR6L2ltc2Vlay5jLAoJICBkbGxzL3F1YXJ0ei9pcmNsb2NrLmMsIGRsbHMvcXVhcnR6L2l1bmsuaCwgZGxscy9xdWFydHovaXZpZHdpbi5jLAoJICBkbGxzL3F1YXJ0ei9tYWluLmMsIGRsbHMvcXVhcnR6L21lbWFsbG9jLmMsIGRsbHMvcXVhcnR6L21lbWFsbG9jLmgsCgkgIGRsbHMvcXVhcnR6L21vbnByb3AuYywgZGxscy9xdWFydHovbW9ucHJvcC5oLAoJICBkbGxzL3F1YXJ0ei9xdWFydHouc3BlYywgZGxscy9xdWFydHovcmVnc3ZyLmMsIGRsbHMvcXVhcnR6L3JlZ3N2ci5oLAoJICBkbGxzL3F1YXJ0ei9zeXNjbG9jay5jLCBkbGxzL3F1YXJ0ei9zeXNjbG9jay5oOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUFkZGVkIHNvbWUgc3R1YnMuCglTdGFydGVkIGltcGxlbWVudGluZyBzb21lIGludGVyZmFjZXMgaW4gRmlsdGVyR3JhcGguCgoJKiBsaWJyYXJ5L3BvcnQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGltbWQxLmluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJRW11bGF0ZSB0aGUgYmVoYXZpb3VyIG9mIExpbnV4IG1tYXAoKSBvbiBTb2xhcmlzLiBCYXNlZCBvbiBpZGVhcyBhbmQKCXNhbXBsZSBjb2RlIGR1ZSB0byBFcmlrIEJvYXNzb24gPGVib2Fzc29uQHNpZ25hYWwubmw+IGFuZCBKb2huIFdlaGxlCgk8am9obkBmZWl0aC5jb20+LgoKCSogd2luZG93cy9zcHkuYywgd2luZG93cy93aW5wcm9jLmMsIGNvbnRyb2xzL2NvbWJvLmMsCgkgIGNvbnRyb2xzL2xpc3Rib3guYywgZGxscy91c2VyL21lc3NhZ2UuYywgaW5jbHVkZS9zcHkuaCwKCSAgd2luZG93cy9tZXNzYWdlLmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJRW5oYW5jZSBTUFlfR2V0TXNnTmFtZSB0byB0cmFuc2xhdGUgY29tbW9uIGNvbnRyb2wgbWVzc2FnZXMuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJQWRkIFNIR2V0U3BlY2lhbEZvbGRlclBhdGhXIHRvIHNwZWMgZmlsZS4KCgkqIGRsbHMvc2hsd2FwaS9wYXRoLmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z3V5QGNvZGV3ZWF2ZXJzLmNvbT4KCS0gRmluaXNoIFBhdGhQYXJzZUljb25Mb2NhdGlvbntBfFd9LgoJLSBJbXBsZW1lbnQgUGF0aElzVU5DU2VydmVye0F8V3xTaGFyZUF8U2hhcmVXfS4KCgkqIGRsbHMvc2hsd2FwaS9yZWcuYywgZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxndXlAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50ZWQgc3R1YnMgZm9yIFNIUmVnRW51bVVTS2V5e0F8V30gYW5kIHJldHVybiBlbmQtb2YtbGlzdCBlcnJvcgoJYXMgcmVzdWx0LgoKCSogZGxscy93aW5zcG9vbC9pbmZvLmM6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJVXNlIGEgZGVmYXVsdCBEZXZNb2RlIGlmIG5vIERldk1vZGUgaW5mb3JtYXRpb24gaXMgYXZhaWxhYmxlIGluCglyZWdpc3RyeS4KCgkqIGRsbHMvbXN2Y3J0L21iY3MuYywgZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUltcGxlbWVudGVkIG1ic25iY250LCBhZGRlZCBzdHVicyBmb3IgX0dldHRuYW1lcyBhbmQgX19sY19jb2xsYXRlX2NwLgoKCSogZGxscy9jb21jdGwzMi9yZWJhci5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gSGFuZGxlIENDU19OT0RJVklERVIgYm90aCB3aGVuIHByZXNlbnQgYW5kIHdoZW4gbm90LgoJLSBIYW5kbGUgc29tZSBjYXNlcyBvZiBDQ1NfVE9QLCBDQ1NfQk9UVE9NLCBhbmQgQ0NTX05PUEFSRU5UQUxJR04uCgktIEhhbmRsZSB2YWx1ZXMgcmV0dXJuZWQgZnJvbSB0aGUgUkJOX0NISUxEU0laRSBub3RpZmljYXRpb24uCgktIEltcGxlbWVudCBSQkJTX0NISUxERURHRS4KCS0gRml4IHNvbWUgbG9naWMgZXJyb3JzIGluIFJFQkFSX0FkanVzdEJhbmRzLCBhbmQgcHJvYmxlbXMgd2l0aCBDQ1NfVkVSVC4KCgkqIGNvbmZpZ3VyZS5pbiwgdG9vbHMvTWFrZWZpbGUuaW4sIHRvb2xzL3dpbmVkdW1wLy5jdnNpZ25vcmUsCgkgIHRvb2xzL3dpbmVkdW1wL01ha2VmaWxlLmluLCB0b29scy93aW5lZHVtcC9SRUFETUUsCgkgIHRvb2xzL3dpbmVkdW1wL2N2aW5jbHVkZS5oLCB0b29scy93aW5lZHVtcC9kZWJ1Zy5jLAoJICB0b29scy93aW5lZHVtcC9mdW5jdGlvbl9ncmVwLnBsLCB0b29scy93aW5lZHVtcC9tYWluLmMsCgkgIHRvb2xzL3dpbmVkdW1wL21pc2MuYywgdG9vbHMvd2luZWR1bXAvbXNtYW5nbGUuYywKCSAgdG9vbHMvd2luZWR1bXAvb3V0cHV0LmMsIHRvb2xzL3dpbmVkdW1wL3BlLmMsIHRvb2xzL3dpbmVkdW1wL3BlLmgsCgkgIHRvb2xzL3dpbmVkdW1wL3NlYXJjaC5jLCB0b29scy93aW5lZHVtcC9zeW1ib2wuYywKCSAgdG9vbHMvd2luZWR1bXAvd2luZWR1bXAuaCwgY29uZmlndXJlOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBQRSBkdW1wIGNhcGFiaWxpdGllcyB0byBzcGVjbWFrZXIgYW5kIHJlbmFtZWQgc3BlY21ha2VyIGludG8KCXdpbmVkdW1wLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJLSBGaXggcG9zaXRpb25pbmcgb2YgdGV4dCBpbiBidXR0b25zLgoJLSBGaXggbkJ1dHRvbkhlaWdodCBzbyB0aGF0IGl0IGlzIG5vdCB6ZXJvIGluIHNvbWUgY2FzZXMKCS0gU3VwcG9ydCBUQlNUWUxFX1RSQU5TUEFSRU5ULgoJLSBGaXggaGFuZGxpbmcgaW4gV01fRVJBU0VCS0dORCBzbyB0aGF0IHRoZSBkZWZhdWx0IGVyYXNlIG9jY3VycwoJICBiZXR3ZWVuIG5vdGlmaWVzLgoJLSBGaXggV01fTkNDUkVBVEUgcHJvY2Vzc2luZyB0byBpc3N1ZSBwcm9wZXIgV01fU1RZTEVDSEFOR0lORyAodmlhCgkgIFNldFdpbmRvd0xvbmcpIGFuZCBkb2N1bWVudCB0aGUgaXNzdWVzLgoKCSogb2JqZWN0cy9mb250LmM6CglUcmF2aXMgTWljaGllbHNlbiA8dGptaWNoaWVsc2VuQHlhaG9vLmNvbT4KCUZpeGVkIGJlaGF2aW9yIG9mIEdldFRleHRFeHRlbnRFeFBvaW50Vy4gIEl0IG11c3QgYWx3YXlzIHJldHVybiB0aGUKCWV4dGVudHMgb2YgdGhlIGVudGlyZSBzdHJpbmcgaW4gc2l6ZS4KCgkqIGdyYXBoaWNzL3gxMWRydi9iaXRtYXAuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxndXlAY29kZXdlYXZlcnMuY29tPgoJUHJldmVudCBib21iIHdoZW4gR0RJX09ialB0ciByZXR1cm5zIG51bGwgb2JqZWN0LgoKCSogaW5jbHVkZS93aW5lcnJvci5oLCBpbmNsdWRlL3dpbmdkaS5oOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJTW92ZSBHRElfRVJST1IgZGVmaW5pdGlvbiB0byB3aW5nZGkuaC4KCUFkZCBIR0RJX0VSUk9SLgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliLmMsIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5oOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJQWRkIHJlYWRlciBmb3IgdjEgKFNMVEcpIHR5cGVsaWJzLgoJRml4IGEgZmV3IHByb2JsZW1zIHdpdGggdjIgKE1TRlQpIHR5cGVsaWJzLgoJTG9hZFR5cGVMaWJFeCBzaG91bGQgZG8gYSBTZWFyY2hQYXRoIHRvIGxvY2F0ZSB0eXBlbGliLgoKCSogZGxscy93aW5zcG9vbC9pbmZvLmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglPcGVuUHJpbnRlciBzaG91bGQgZmFpbCBpZiBwUHJpbnRlck5hbWUgaXMgIiIuCgoJKiBpbmNsdWRlL3dpbmUvb2JqX29sZWF1dC5oOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJQWRkIEZVTkNGTEFHUyBhbmQgY2hhbmdlIFRZUEVGTEFHU18qIHRvIGFuIGVudW0uCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUNvbnZlcnQgdGhlIHNvY2tldCB0eXBlIChuZWNlc3Nhcnkgb24gU29sYXJpcykuCgoJKiBkbGxzL3JwY3J0NC9ycGNydDQuc3BlYywgZGxscy9ycGNydDQvcnBjcnQ0X21haW4uYywKCSAgaW5jbHVkZS9ycGNkY2UuaDoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCVN0dWIgaW1wbGVtZW50YXRpb24gZm9yIFV1aWRIYXNoKCkuCgoJKiBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUNvcnJlY3QgLnNwZWMgZmlsZSBwYXJhbWV0ZXJzIGZvciBtc3ZjcnQuX2Z1bGxwYXRoIGFuZCBudGRsbC5fc3BsaXRwYXRoLgoKCSogd2luZWRlZmF1bHQucmVnOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUFkZGVkIERpcmVjdFNob3cgZmlsdGVyIGNhdGVnb3JpZXMuCgoJKiBpbmNsdWRlL3V1aWRzLmg6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJQWRkZWQgc29tZSBtaXNzaW5nIEdVSURzLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsc3RyaW5nLmM6CglHdXkgQWxiZXJ0ZWxsaSA8Z3V5QGNvZGV3ZWF2ZXJzLmNvbT4KCVJlcGxhY2UgY2FsbHMgdG8gU3RyUmV0VG9CdWZ7QXxXfSB3aXRoIGR1cGxpY2F0ZSBjb2RlIHRvIGVsaW1pbmF0ZQoJcHJvYmxlbXMgYmV0d2VlbiBuYXRpdmUgYW5kIGJ1aWx0LWluIERMTHMuCgoyMDAxLTA4LTI5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy93aW5wcm9jLmMsIGluY2x1ZGUvd2luLmgsIHdpbmRvd3Mvd2luLmM6CglNYWtlIHdpbmRvdyBoYW5kbGVzIDMyLWJpdCBiZWZvcmUgY2FsbGluZyB3aW5kb3cgcHJvY2VkdXJlLgoJRG9uJ3QgY2xlYXIgd2luZG93IHBhcmVudCBmaWVsZCB3aGVuIHVubGlua2luZyBpdC4KCjIwMDEtMDgtMjggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3dpbi5oLCBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsIHNlcnZlci9NYWtlZmlsZS5pbiwKCSAgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3F1ZXVlLmMsIHNlcnZlci9yZXF1ZXN0LmgsCgkgIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RyYWNlLmMsIHNlcnZlci91c2VyLmMsIHNlcnZlci91c2VyLmgsCgkgIHNlcnZlci93aW5kb3cuYywgdG9vbHMvbWFrZV9yZXF1ZXN0cywgd2luZG93cy9xdWV1ZS5jLAoJICB3aW5kb3dzL3dpbi5jLCBkbGxzL3R0eWRydi93bmQuYywgZGxscy94MTFkcnYvZGVza3RvcC5jLAoJICBkbGxzL3gxMWRydi93aW5kb3cuYywgZGxscy94MTFkcnYvd2lucG9zLmM6CglBZGRlZCBnbG9iYWwgbWFuYWdlbWVudCBvZiB1c2VyIGhhbmRsZXMgaW4gdGhlIHNlcnZlci4KCVZlcnkgcHJlbGltaW5hcnkgc3VwcG9ydCBmb3Igc2hhcmVkIHdpbmRvdyBoYW5kbGVzLgoKCSogQU5OT1VOQ0U6CglKYW1lcyBKdXJhbiA8amFtZXNqdXJhbkBhbHVtbmkucHN1LmVkdT4KCVVzZSB0aGUgbmV3IGRldmVsb3BtZW50IHBhZ2UgVVJMIGluIHRoZSBhbm5vdW5jZW1lbnQuCgoJKiBmaWxlcy9wcm9maWxlLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVJlaW1wbGVtZW50IFBST0ZJTEVfR2V0U2VjdGlvbk5hbWVzIHRvIG1hdGNoIHRoZSBOVCAmIE1TRE4gYmVoYXZpb3IuCglUaGUgMzJBIHZlcnNpb24gaXMgbm93IHRoZSByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gKGluc3RlYWQgb2YgdGhlCgkxNmJpdCB2ZXJzaW9uKS4KCgkqIGxvYWRlci90YXNrLmMsIGRsbHMvaWNtcC9pY21wX21haW4uYywgZGxscy93c29jazMyL3Byb3RvY29sLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCU9ubHkgdXNlIHdpbnNvY2syLmggaW4gV2luZS4KCgkqIHdpbmRvd3Mvc3B5LmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJQWRkZWQgV01fTU9VU0VIT1ZFUiBhbmQgV01fTU9VU0VMRUFWRSB0byBmb3JtYXR0aW5nLgoKCSogdG9vbHMvd2luZWJ1aWxkL3JlbGF5LmM6CglPdXRwdXQgY29ycmVjdCBhc3NlbWJseSBmdW5jdGlvbiBoZWFkZXJzIGZvciBhbGwgZnVuY3Rpb25zLgoKCSogZGxscy9xdWFydHovTWFrZWZpbGUuaW4sIGRsbHMvcXVhcnR6L2RldmVudW0uYywKCSAgZGxscy9xdWFydHovZGV2ZW51bS5oLCBkbGxzL3F1YXJ0ei9mZ3JhcGguYywgZGxscy9xdWFydHovZmdyYXBoLmgsCgkgIGRsbHMvcXVhcnR6L2ZtYXAuYywgZGxscy9xdWFydHovZm1hcC5oLCBkbGxzL3F1YXJ0ei9mbWFwMi5jLAoJICBkbGxzL3F1YXJ0ei9mbWFwMi5oLCBkbGxzL3F1YXJ0ei9pYmFzYXVkLmMsIGRsbHMvcXVhcnR6L2liYXN2aWQuYywKCSAgZGxscy9xdWFydHovaWRldmVudW0uYywgZGxscy9xdWFydHovaWZncmFwaC5jLCBkbGxzL3F1YXJ0ei9pZm1hcC5jLAoJICBkbGxzL3F1YXJ0ei9pZm1hcDMuYywgZGxscy9xdWFydHovaW1jbnRsLmMsIGRsbHMvcXVhcnR6L2ltZXZlbnQuYywKCSAgZGxscy9xdWFydHovaW1wb3MuYywgZGxscy9xdWFydHovaW1zZWVrLmMsIGRsbHMvcXVhcnR6L2l1bmsuYywKCSAgZGxscy9xdWFydHovaXVuay5oLCBkbGxzL3F1YXJ0ei9pdmlkd2luLmMsIGRsbHMvcXVhcnR6L21haW4uYywKCSAgZGxscy9xdWFydHovcXVhcnR6LnNwZWMsIGRsbHMvcXVhcnR6L3JlZ3N2ci5jLCBkbGxzL3F1YXJ0ei9yZWdzdnIuaCwKCSAgd2luZWRlZmF1bHQucmVnOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUFkZGVkIHNvbWUgc3R1YnMuCgoyMDAxLTA4LTI3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogb2JqZWN0cy9nZGlvYmouYzoKCUNoZWNrIGZvciB2YWxpZCBvYmplY3QgaW4gR0RJX0dldE9ialB0ciBldmVuIGZvciBNQUdJQ19ET05UQ0FSRS4KCgkqIGRsbHMveDExZHJ2L3gxMWRkcmF3LmM6CglKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglHcmFiUG9pbnRlciB1c2VzIG5vdyBTZXRXaW5kb3dMb25nIHRvIGNoYW5nZSB3aW5kb3cgcHJvY2VkdXJlIGluc3RlYWQKCW9mIGFjY2Vzc2luZyBkaXJlY3RseSBXTkQgc3RydWN0dXJlLgoKCSogZGxscy9rZXJuZWwvc3luYy5jLCBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsCgkgIHNlcnZlci9uYW1lZF9waXBlLmMsIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci9yZXF1ZXN0LmgsCgkgIHNlcnZlci90cmFjZS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQHN0YXJ0LmNvbS5hdT4KCUltcGxlbWVudGVkIEdldE5hbWVkUGlwZUluZm8uCgoJKiBpbmNsdWRlL3N0cm1pZi5oOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUFkZGVkIHNvbWUgbWlzc2luZyBpbnRlcmZhY2VzLgoKCSogaW5jbHVkZS93aW5lL29ial9iYXNlLmg6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJQWRkZWQgSUNPTV9NRVRIT0QxMi0yNiwgSUNPTV9WTUVUSE9EMTItMjYsIElDT01fQ0FMTDEyLTI2LgoKMjAwMS0wOC0yNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvdmVyc2lvbi5oLCBBTk5PVU5DRSwgQ2hhbmdlTG9nOgoJUmVsZWFzZSAyMDAxMDgyNC4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KMjAwMS0wOC0yNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYywgaW5jbHVkZS93aW5lL3dpbnNvY2sxNi5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBZGRlZCBXU0FTVEFSVFVQMTYgYSAxIGJ5dGUgYWxpZ25tZW50IHZlcnNpb24gb2YgV1NBU1RBUlRVUCBmb3Igd2luMTYuCgoJKiBpbmNsdWRlL3V1aWRzLmg6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJQWRkZWQgc29tZSBtaXNzaW5nIENMU0lEcy4KCgkqIGZpbGVzL2RpcmVjdG9yeS5jLCBpbmNsdWRlL2ZpbGUuaCwgaW5jbHVkZS9tb2R1bGUuaCwgbG9hZGVyL21vZHVsZS5jLAoJICBsb2FkZXIvcGVfaW1hZ2UuYzoKCUJpbGwgTWVkbGFuZCA8bWVkYmkwMUBhY2NwYWMuY29tPgoJQWRkZWQgTE9BRF9XSVRIX0FMVEVSRURfU0VBUkNIX1BBVEggc3VwcG9ydCB0byBMb2FkTGlicmFyeUV4LgoKCSogY29udHJvbHMvaWNvbnRpdGxlLmMsIGRsbHMveDExZHJ2L3dpbmRvdy5jLCBkbGxzL3gxMWRydi93aW5wb3MuYywKCSAgaW5jbHVkZS93aW4uaCwgd2luZG93cy9kaWFsb2cuYywgd2luZG93cy9tZGkuYywgd2luZG93cy9wYWludGluZy5jLAoJICB3aW5kb3dzL3VzZXIuYywgd2luZG93cy93aW4uYywgd2luZG93cy93aW5wb3MuYzoKCUFkZGVkIFdJTl9MaXN0UGFyZW50cyBmdW5jdGlvbiBhbmQgcmVuYW1lZCBXSU5fQnVpbGRXaW5BcnJheSBpbnRvCglXSU5fTGlzdENoaWxkcmVuLiBNYWRlIG93bmVyIGZpZWxkIGluIFdORCBzdHJ1Y3R1cmUgYW4gSFdORC4KCgkqIGRsbHMvY29tY3RsMzIvcmViYXIuYzoKCVJlbW92ZWQgaW5jbHVzaW9uIG9mIHdpbi5oLgoKCSogZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZGxscy9rZXJuZWwvc3luYy5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQHN0YXJ0LmNvbS5hdT4KCUFkZCBzdHVicyBmb3Igc2V2ZXJhbCBuYW1lZCBwaXBlIGZ1bmN0aW9ucy4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYywgaW5jbHVkZS93aW5zb2NrLmgsIHNlcnZlci9zb2NrLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVJlbmFtZSB0aGUgcmVndWxhciBXU19GRF9YWFggbWFjcm9zIHRvIEZEX1hYWC4KCVJlbmFtZSB0aGUgV2luZSBzcGVjaWZpYyBXU19GRF9YWFggbWFjcm9zIHRvIEZEX1dJTkVfWFhYLgoKCSogZGxscy93aW5pbmV0L2Z0cC5jLCBkbGxzL3dpbmluZXQvaHR0cC5jLCBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYywKCSAgZGxscy93aW5pbmV0L2ludGVybmV0LmgsIGRsbHMvd2luaW5ldC91dGlsaXR5LmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCU1hZGUgaW5kZXBlbmRlbnQgZnJvbSB3aW5zb2NrLgoJSW5jbHVkZSB0aGUgbmVlZGVkIGhlYWRlcnMgZGlyZWN0bHkgaW4gaW50ZXJuZXQuaC4KCgkqIG9iamVjdHMvZm9udC5jOgoJQmlsbCBNZWRsYW5kIDxtZWRiaTAxQGFjY3BhYy5jb20+CglNaW5vciBmaXhlcyBpbnZvbHZpbmcgaGFuZGxpbmcgTlVMTCBwb2ludGVycy4KCgkqIHdpbmRvd3MveDExZHJ2L2NsaXBib2FyZC5jLCB3aW5kb3dzL3gxMWRydi9ldmVudC5jLAoJICBkbGxzL3VzZXIvdXNlcjMyLnNwZWMsIGRsbHMveDExZHJ2L3dpbmRvdy5jLCBkbGxzL3gxMWRydi93aW5wb3MuYywKCSAgaW5jbHVkZS9kY2UuaCwgaW5jbHVkZS93aW4uaCwgaW5jbHVkZS93aW51c2VyLmgsIGluY2x1ZGUveDExZHJ2LmgsCgkgIHdpbmRvd3MvZGNlLmMsIHdpbmRvd3MvZGVmd25kLmMsIHdpbmRvd3MvZGlhbG9nLmMsIHdpbmRvd3MvZm9jdXMuYywKCSAgd2luZG93cy9tZGkuYywgd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3Mvbm9uY2xpZW50LmMsCgkgIHdpbmRvd3MvcGFpbnRpbmcuYywgd2luZG93cy93aW4uYywgd2luZG93cy93aW5wb3MuYzoKCUltcGxlbWVudGVkIEdldEFuY2VzdG9yIGFuZCByZW1vdmVkIFdJTl9HZXRUb3BQYXJlbnQuCglSZW1vdmVkIGEgZmV3IG1vcmUgYWNjZXNzZXMgdG8gdGhlIFdORCBzdHJ1Y3R1cmUuCgoyMDAxLTA4LTIzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogb2JqZWN0cy9lbmhtZXRhZmlsZS5jLCBvYmplY3RzL21ldGFmaWxlLmM6CglEb24ndCBob2xkIHRoZSBHREkgbG9jayBkdXJpbmcgYWNjZXNzZXMgdG8gdGhlIG1ldGFmaWxlIGRhdGEuCgoJKiBkbGxzL2tlcm5lbC9zeW5jLmMsIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwKCSAgc2VydmVyL25hbWVkX3BpcGUuYywgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3JlcXVlc3QuaCwKCSAgc2VydmVyL3RyYWNlLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAc3RhcnQuY29tLmF1PgoJSW1wbGVtZW50IFdhaXROYW1lZFBpcGUgYW5kIERpc2Nvbm5lY3ROYW1lZFBpcGUuCglBZGQgYSBzdGF0ZSBmb3IgZWFjaCBwaXBlIGhhbmRsZSBpbiB0aGUgc2VydmVyLgoJQ3JlYXRlIGEgc29ja2V0IG9uIHdoZW4gdGhlIHBpcGUgaXMgb3BlbmVkLCBub3QgYmVmb3JlLgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jLCBzZXJ2ZXIvc29jay5jOgoJRGFuaWVsIFdhbGtlciA8ZGl3YWxrZXJAZWFydGhsaW5rLm5ldD4KCS0gRml4IGZvciBub25ibG9ja2luZyBzb2NrZXRzIHVzaW5nIFdTQUV2ZW50U2VsZWN0KCkgKHBhdGNoIGZyb20gT3ZlCgkgIEthYXZlbikuCgktIENoYW5nZWQgV1NBRW51bU5ldHdvcmtFdmVudHMoKSBzbyBpdCBvbmx5IHJldHVybnMgZXZlbnRzIHRoYXQgdGhlCgkgIGFwcGxpY2F0aW9uIGlzIGxvb2tpbmcgZm9yLgoJLSBDaGFuZ2VkIHNvY2tfcG9sbF9ldmVudCgpIHRvIGludGVycHJldCBhIFBPTExJTiBldmVudCB3aXRoIHplcm8KCSAgYnl0ZXMgd2FpdGluZyB0byBiZSByZWFkIGFzIGEgUE9MTEhVUC4KCjIwMDEtMDgtMjIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3F1YXJ0ei9NYWtlZmlsZS5pbiwgZGxscy9xdWFydHovYW1lcnJvci5jLAoJICBkbGxzL3F1YXJ0ei9xdWFydHouc3BlYywgaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9lcnJvcnMuaCwKCSAgaW5jbHVkZS92Zndtc2dzLmg6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJQWRkZWQgdHdvIG1pc3NpbmcgaGVhZGVycy4KCUltcGxlbWVudGVkIEFNR2V0RXJyb3JUZXh0LgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL2tlcm5lbDMyLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL29sZWF1dDMyLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3F1YXJ0ei5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9zaGVsbDMyLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3R0eWRydi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi94MTFkcnYuYXBpLCB0b29scy93aW5hcGkvY19mdW5jdGlvbi5wbSwKCSAgdG9vbHMvd2luYXBpL2NfcGFyc2VyLnBtLCB0b29scy93aW5hcGkvbWFrZV9wYXJzZXIucG0sCgkgIHRvb2xzL3dpbmFwaS9vdXRwdXQucG0sIHRvb2xzL3dpbmFwaS93aW5hcGlfZXh0cmFjdCwKCSAgdG9vbHMvd2luYXBpL3dpbmFwaV9maXh1cCwgdG9vbHMvd2luYXBpL3dpbmFwaV9maXh1cF9lZGl0b3IucG0sCgkgIHRvb2xzL3dpbmFwaS93aW5hcGlfZml4dXBfb3B0aW9ucy5wbSwKCSAgdG9vbHMvd2luYXBpL3dpbmFwaV9maXh1cF9zdGF0ZW1lbnRzLnBtLAoJICB0b29scy93aW5hcGkvd2luYXBpX21vZHVsZV91c2VyLnBtLCB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5wbSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL25hdGl2ZWFwaS5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaS5wbSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9jaGVjazoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBDb250aW51ZWQgb24gdGhlIG5ldyBDIHBhcnNlci4KCS0gTW9yZSByZW9yZ2FuaXphdGlvbnMgYW5kIGZpeGVzLgoJLSBBUEkgZmlsZXMgdXBkYXRlLgoKCSogZGxscy9xdWFydHovTWFrZWZpbGUuaW4sIGRsbHMvcXVhcnR6L2NvbXBsaXN0LmMsCgkgIGRsbHMvcXVhcnR6L2NvbXBsaXN0LmgsIGRsbHMvcXVhcnR6L2ZncmFwaC5jLCBkbGxzL3F1YXJ0ei9mZ3JhcGguaCwKCSAgZGxscy9xdWFydHovaWJhc2F1ZC5jLCBkbGxzL3F1YXJ0ei9pYmFzdmlkLmMsIGRsbHMvcXVhcnR6L2lmZ3JhcGguYywKCSAgZGxscy9xdWFydHovaW1jbnRsLmMsIGRsbHMvcXVhcnR6L2ltZW0uYywgZGxscy9xdWFydHovaW1ldmVudC5jLAoJICBkbGxzL3F1YXJ0ei9pbXBvcy5jLCBkbGxzL3F1YXJ0ei9pbXNlZWsuYywgZGxscy9xdWFydHovaXJjbG9jay5jLAoJICBkbGxzL3F1YXJ0ei9pdW5rLmMsIGRsbHMvcXVhcnR6L2l1bmsuaCwgZGxscy9xdWFydHovaXZpZHdpbi5jLAoJICBkbGxzL3F1YXJ0ei9tYWluLmMsIGRsbHMvcXVhcnR6L21lbWFsbG9jLmMsIGRsbHMvcXVhcnR6L3N5c2Nsb2NrLmM6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJQWRkZWQgc29tZSBzdHVicyBmb3IgQ0xTSURfRmlsdGVyR3JhcGguCgoJKiBkbGxzL3gxMWRydi93aW5kb3cuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglGaXhlZCBhbiBpbmNvcnJlY3QgKGhhcm1sZXNzKSBtZW1vcnkgYWxsb2NhdGlvbi4KCgkqIGluY2x1ZGUvY29udHJvbC5oLCBvbGUvdXVpZC5jOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUFkZGVkIG1pc3NpbmcgSUlEcy4KCgkqIGRsbHMvdXNlci9jb21tMTYuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglSZXBsYWNlZCBQUk9GSUxFXyBmdW5jdGlvbnMgYnkgUmVnUXVlcnlWYWx1ZUV4QS4KCgkqIGluY2x1ZGUvd2luYmFzZS5oLCBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBmaWxlcy9maWxlLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAc3RhcnQuY29tLmF1PgoJQWRkZWQgc3R1YiBmb3IgQ2FuY2VsSW8uCgoJKiBNYWtlLnJ1bGVzLmluOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUZpeGVkIG1hbiBhbmQgZG9jLWh0bWwgcnVsZXMuCgoJKiBkbGxzL3VzZXIvdGV4dC5jOgoJRXVnZW5lIE1heWV2c2tpIDxtYXlldnNraUBlbGRvcy5vcmc+CglGaXhlZCBEVF9SVExSRUFESU5HIGZsYWcgaW50ZXJwcmV0YXRpb24uCgoyMDAxLTA4LTIxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy9wYWludGluZy5jLCB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3dpbnBvcy5jLAoJICBkbGxzL3gxMWRydi93aW5wb3MuYywgaW5jbHVkZS93aW4uaDoKCVJlbW92ZWQgV0lOX0dldERlc2t0b3AoKS4KCgkqIHdpbjMyL2NvbnNvbGUuYywgd2luZG93cy9tdWx0aW1vbi5jLCB3aW5kb3dzL3gxMWRydi9jbGlwYm9hcmQuYywKCSAgZGVidWdnZXIvYnJlYWsuYywgZGVidWdnZXIvZWRpdGxpbmUuYywgZGVidWdnZXIvbXNjLmMsCgkgIGRsbHMvbXNhY20vbXNhY20zMl9tYWluLmMsIGRsbHMvb2xlMzIvb2xlMi5jLCBkbGxzL3NoZWxsMzIvc3lzdHJheS5jLAoJICBkbGxzL3VzZXIvZGRlL3NlcnZlci5jLCBkbGxzL3dpbm1tL2RyaXZlci5jLCBkbGxzL3dpbm1tL21jaS5jLAoJICBkbGxzL3dpbm1tL21taW8uYywgZGxscy93aW5tbS93aW5lb3NzL21tYXV4LmMsCgkgIGRvY3VtZW50YXRpb24vZGVidWdnZXIuc2dtbCwgbXNkb3MvaW50MmYuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRG9jdW1lbnRhdGlvbiB1cGRhdGVzIChtYWlubHkgdGhydSB2cy4gdGhyb3VnaCkuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBuZXJpbS5uZXQ+CglSZWN0IHJldHVybmVkIGJ5IExJU1RWSUVXX0dldEl0ZW1SZWN0IHNob3VsZCBiZSB0b3RhbCBzaXplIGluIHJlcG9ydAoJbW9kZS4KCgkqIGdyYXBoaWNzL3gxMWRydi9iaXRtYXAuYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQG5lcmltLm5ldD4KCURlZmF1bHQgYml0bWFwIGlzIG5vdCBzdWJqZWN0IHRvIHJlZmVyZW5jZSBjb3VudGluZy4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlcGljdHVyZS5jLCBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYywKCSAgZGxscy9vbGVhdXQzMi92YXJpYW50LmMsIGluY2x1ZGUvb2xlYXV0by5oLCBpbmNsdWRlL3dpbmUvb2JqX29sZWF1dC5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBZGQgdGhlIGRlY1ZhbCBmaWVsZCB0byBWQVJJQU5ULgoJRml4IHRoZSBWQVJJQU5UIEMgbGF5b3V0LCBpLmUuIHRoZSB1bmlvbi9zdHJ1Y3QgbmFtZXMvbmVzdGluZy4KCUVuY2Fwc3VsYXRlIGFsbCBhY2Nlc3NlcyB0byBWQVJJQU5UIHR5cGVzIHdpdGggdGhlIFZfVlQgYW5kIFZfVU5JT04KCW1hY3Jvcy4KCgkqIHNlcnZlci9zZXJpYWwuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0BzdGFydC5jb20uYXU+CglVbmNvbmRpdGlvbmFsbHkgc2V0IE9fTk9OQkxPQ0sgd2hlbiBvcGVuaW5nLgoKMjAwMS0wOC0yMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGdyYXBoaWNzL3gxMWRydi9iaXRtYXAuYzoKCVJlZnVzZSB0byBzZWxlY3QgYSBiaXRtYXAgdGhhdCBpcyBhbHJlYWR5IHNlbGVjdGVkIGluIGFub3RoZXIgREMuCgoJKiBvYmplY3RzL2RjLmMsIG9iamVjdHMvZ2Rpb2JqLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglBZGRlZCByZWZlcmVuY2UgY291bnRpbmcgYW5kIGRlbGF5ZWQgZGVzdHJ1Y3Rpb24gb2YgR0RJIG9iamVjdHMuCgoJKiBpbmNsdWRlL3dpbnVzZXIuaCwgd2luZG93cy9jbGFzcy5jLCB3aW5kb3dzL25vbmNsaWVudC5jOgoJRml4ZWQgR2V0Q2xhc3NMb25nIHRvIHJldHVybiBmdWxsIDMyIGJpdHMgZm9yIGFsbCBpdGVtcy4KCVJlbW92ZWQgR0NXXyogZGVmaW5pdGlvbnMgdGhhdCBkb24ndCBleGlzdCBpbiBXaW4zMi4KCgkqIG9iamVjdHMvZGliLmM6CglDcmVhdGUgYSBjb2xvciBiaXRtYXAgaW4gQ3JlYXRlRElCaXRtYXAgZXZlbiB3aXRoIGEgYmxhY2smd2hpdGUgREMuCgoJKiBpbmNsdWRlL29sZWF1dG8uaDoKCU5pa29sYXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3JnPgoJUmVtb3ZlZCBzdHJ1Y3QgVURBVEUgZm9yd2FyZCBkZWNsYXJhdGlvbi4KCgkqIGRsbHMva2VybmVsL2NvbW0uYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0BzdGFydC5jb20uYXU+CglTdG9yZSB0aGUgY29tbSBlcnJvciB2YWx1ZSBpbiB0aGUgd2luZXNlcnZlciwgbm90IGEgZ2xvYmFsLgoKCSogZmlsZXMvZmlsZS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQHN0YXJ0LmNvbS5hdT4KCVJlYWQgZGF0YSBpbW1lZGlhdGVseSBpbiBvdmVybGFwcGVkIFJlYWRGaWxlIGlmIHBvc3NpYmxlLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAbmVyaW0ubmV0PgoJRG8gbm90IGtlZXAgdGhlIGhhbmRsZSBvZiBhIGRlbGV0ZWQgaXRlbSBhcyB0aGUgc2VsZWN0ZWRJdGVtLi4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlcGljdHVyZS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglVc2UgR2V0REMoMCkgaW5zdGVhZCBvZiBDcmVhdGVDb21wYXRpYmxlREMoMCkuCgoJKiBkbGxzL29sZWF1dDMyL29sZWZvbnQuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJV2UgbmVlZCB0byBtYWtlIGEgY29weSBvZiB0aGUgZm9udG5hbWUgYW5kIHRoZSBIRk9OVCBoYW5kbGUgaW4KCUlGb250X0Nsb25lLCBvdGhlcndpc2Ugd2UgZ2V0IG1lbW9yeSBjb3JydXB0aW9uIGFuZCBiYWQgR0RJIGhhbmRsZXMuCgoyMDAxLTA4LTE4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29udHJvbHMvbWVudS5jLCB3aW5kb3dzL3dpbnByb2MuYzoKCUFkZGVkIHByb3BlciBzdXBwb3J0IGZvciAzMi1iaXQgV01fTkVYVE1FTlUuCgoJKiBkbGxzL3R0eWRydi91c2VyLmMsIGRsbHMvdXNlci9tc2cxNi5jLCBkbGxzL3gxMWRydi93aW5wb3MuYywKCSAgaW5jbHVkZS91c2VyLmgsIGluY2x1ZGUvd2luLmgsIHdpbmRvd3MvZGVmZGxnLmMsIHdpbmRvd3MvZGVmd25kLmMsCgkgIHdpbmRvd3MvbWRpLmMsIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL3BhaW50aW5nLmMsIHdpbmRvd3MvdXNlci5jLAoJICB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3dpbnBvcy5jLCB3aW5kb3dzL3gxMWRydi9jbGlwYm9hcmQuYywKCSAgZGxscy90dHlkcnYvdHR5ZHJ2LnNwZWM6CglSZW1vdmVkIGEgbnVtYmVyIG9mIGRpcmVjdCBhY2Nlc3NlcyB0byB0aGUgd2luZG93IHN0cnVjdHVyZS4KCgkqIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvbXN2aWRlby9NYWtlZmlsZS5pbiwgZGxscy9tc3ZpZGVvL21jaXduZC5jLAoJICBkbGxzL21zdmlkZW8vbXN2ZnczMi5zcGVjLCBkbGxzL21zdmlkZW8vbXN2aWRlb19tYWluLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCVN0YXJ0ZWQgaW1wbGVtZW50aW5nIHRoZSBNQ0lXbmQqIGZ1bmN0aW9ucy4KCgkqIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglEbyBub3QgcGFzcyB0aGUgaGlnaCBsZXZlbCB3RmxhZ3MgZnJvbSBWYXJpYW50Q2hhbmdlVHlwZSogZG93biB0byBsb3cKCWxldmVsIFZhcmlhbnQgY29udmVyc2lvbiBmdW5jdGlvbnMuCgoJKiBkbGxzL3VzZXIvZGRlL2RkZV9wcml2YXRlLmg6CglGaXhlZCBpbnRlcm5hbCBpbmxpbmUgZnVuY3Rpb24gdGhhdCB3YXMgZGVjbGFyZWQgZXh0ZXJuLgoKCSogd2luZG93cy9kZWZ3bmQuYzoKCUV4cGxpY2l0bHkgY2hlY2sgZm9yIENTX1BBUkVOVERDIGluIFdNX0VSQVNFQktHTkQgaGFuZGxpbmcuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJUmVwbGFjZWQgbWVtc2V0IGJ5IGhhbmQgbWFkZSBlcXVpdmFsZW50IHRvIHdvcmsgYXJvdW5kIHNvbWUgYnVnZ3kKCW1lbXNldCBpbXBsZW1lbnRhdGlvbnMuCgoJKiBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2NvbWN0bDMyL2FuaW1hdGUuYywKCSAgZGxscy9jb21jdGwzMi9jb21jdGwzMi5zcGVjOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglCZWNhdXNlIG9mIGNpcmN1bGFyIGRlcGVuZGVuY2llcyBiZXR3ZWVuIGNvbWN0bDMyIGFuZCBtc3ZmdzMyLCByZXBsYWNlCglpbiBjb21jdGwzMiBkZWxheSBsb2FkaW5nIG9mIG1zdmZ3MzIgYnkgbWFudWFsIGxvYWRpbmcuCgoJKiBvYmplY3RzL2dkaW9iai5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAbmVyaW0ubmV0PgoJVGVzdCBmb3IgaW52YWxpZCBsYXJnZSBoYW5kbGVzIGluIEdESV9HZXRPYmpQdHIgYW5kIEdESV9GcmVlT2JqZWN0LgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAbmVyaW0ubmV0PgoJRml4IEZpbGxSZWN0IGNhbGxzIGluIEZJTEVETEc5NV9MT09LSU5fRHJhd0l0ZW0uCgoJKiBkbGxzL2dkaS9wcmludGRydi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglEbyBub3QgaG9sZCB0aGUgR0RJIGxvY2sgd2hlbiB0aGUgQUJPUlRET0MgcHJvY2VkdXJlIGlzIGNhbGxlZC4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzIuc3BlYywgZGxscy9vbGVhdXQzMi92YXJpYW50LmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAc3RhcnQuY29tLmF1PgoJSW1wbGVtZW50ZWQgb2xlYXV0MzIuVmFyQnN0ckNhdC4KCjIwMDEtMDgtMTcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3dpbmJhc2UuaCwgc2NoZWR1bGVyL2NyaXRzZWN0aW9uLmM6CglNYWRlIHRoZSBJbnRlcmxvY2tlZCpQb2ludGVyIGZ1bmN0aW9ucyBzdGF0aWMgaW5saW5lIHNpbmNlIHRoZXkgYXJlbid0CglleHBvcnRlZCBieSB0aGUgV2luZG93cyBBUEkuCgoJKiBvYmplY3RzL2RpYi5jOgoJVXNlIHRoZSBwYXNzZWQgaGRjIGluIENyZWF0ZURJQml0bWFwIGluc3RlYWQgb2YgY3JlYXRpbmcgYSBuZXcgb25lLgoKCSogb2JqZWN0cy9kYy5jLCBvYmplY3RzL2dkaW9iai5jLCB3aW5kb3dzL3N5c2NvbG9yLmMsCgkgIGRsbHMvd2luZXBzL2ZvbnQuYywgZ3JhcGhpY3MvZW5obWV0YWZpbGVkcnYvb2JqZWN0cy5jLAoJICBncmFwaGljcy94MTFkcnYveGZvbnQuYywgaW5jbHVkZS9nZGkuaDoKCUNyZWF0ZSBHREkgc3RvY2sgb2JqZWN0cyBhcyBub3JtYWwgb2JqZWN0cyBpbnN0ZWFkIG9mIHVzaW5nIG1hZ2ljCgloYW5kbGUgdmFsdWVzLgoKMjAwMS0wOC0xNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvd2luZXBzL2ZvbnQuYywgZ3JhcGhpY3MveDExZHJ2L2JpdG1hcC5jLCBncmFwaGljcy94MTFkcnYvYnJ1c2guYywKCSAgZ3JhcGhpY3MveDExZHJ2L29iamVjdHMuYywgZ3JhcGhpY3MveDExZHJ2L3Blbi5jLAoJICBncmFwaGljcy94MTFkcnYveGZvbnQuYywgaW5jbHVkZS94MTFkcnYuaCwgb2JqZWN0cy9nZGlvYmouYzoKCVNwZWNpZnkgc2l6ZXMgZm9yIHN0b2NrIGZvbnRzIGFnYWluOyByZW1vdmVkIHRoZSBGaXhTdG9ja0ZvbnRTaXplCgloYWNrLiBJZ25vcmUgbWFwcGluZyBtb2RlcyB3aGVuIHNlbGVjdGluZyBzdG9jayBmb250cyBpbnRvIGEgREMuCglSZW1vdmVkIGEgZmV3IGRpcmVjdCBhY2Nlc3NlcyB0byBHREkgc3RydWN0dXJlcyBmcm9tIHgxMWRydi4KCgkqIG9iamVjdHMvZGMuYzoKCVJlbGVhc2UgR0RJIGxvY2sgYmVmb3JlIGNhbGxpbmcgRGVsZXRlREMgZnJvbSBSZXN0b3JlREMuCgoJKiBkbGxzL3NoZWxsMzIvY2xpcGJvYXJkLmMsIGRsbHMvc2hlbGwzMi9kYXRhb2JqZWN0LmMsCgkgIGRsbHMvc2hlbGwzMi9kaWFsb2dzLmMsIGRsbHMvc2hlbGwzMi9lbnVtaWRsaXN0LmMsCgkgIGRsbHMvc2hlbGwzMi9mb2xkZXJzLmMsIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYywgZGxscy9zaGVsbDMyL3BpZGwuYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLCBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbG9sZS5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywKCSAgZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jLCBkbGxzL3NoZWxsMzIvc2hlbGxyZWcuYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsc3RyaW5nLmMsIGRsbHMvc2hlbGwzMi9zaGxmaWxlb3AuYywKCSAgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jLCBkbGxzL3NoZWxsMzIvc2hsbWVudS5jLAoJICBkbGxzL3NoZWxsMzIvc2hsdmlldy5jLCBkbGxzL3NoZWxsMzIvc2hwb2xpY3kuYywKCSAgZGxscy9zaGVsbDMyL3Nodl9iZ19jbWVudS5jLCBkbGxzL3NoZWxsMzIvc2h2X2l0ZW1fY21lbnUuYywKCSAgZGxscy9zaGVsbDMyL3VuZG9jc2hlbGwuaCwgaW5jbHVkZS93aW5lL3NoZWxsMTYuaCwKCSAgaW5jbHVkZS93aW5lL3VuZG9jc2hlbGwuaCwgZGxscy9zaGVsbDMyL2Jyc2ZvbGRlci5jLAoJICBkbGxzL3NoZWxsMzIvY2hhbmdlbm90aWZ5LmM6CglNb3ZlZCB1bmRvY3NoZWxsLmggdG8gZGxscy9zaGVsbDMyLiBSZW1vdmVkIHNoZWxsMTYuaC4KCgkqIHdpbmRvd3MvZGNlLmMsIHdpbmRvd3MvdXNlci5jLCB3aW5kb3dzL3dpbi5jLCBpbmNsdWRlL3VzZXIuaCwKCSAgaW5jbHVkZS93aW4uaDoKCU1vdmVkIHVzZXIgbG9jayB0byB1c2VyLmMuIEFkZGVkIFVTRVJfQ2hlY2tOb3RMb2NrIGZ1bmN0aW9uLgoKCSogZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsIGluY2x1ZGUvd2luYmFzZS5oLCBtZW1vcnkvdmlydHVhbC5jLAoJICBvYmplY3RzL2dkaW9iai5jLCBzY2hlZHVsZXIvcHRocmVhZC5jLCBzY2hlZHVsZXIvc3lzbGV2ZWwuYywKCSAgd2luZG93cy9jdXJzb3JpY29uLmMsIHdpbmRvd3MvdGltZXIuYywgZGxscy9udGRsbC9jcml0c2VjdGlvbi5jLAoJICBkbGxzL250ZGxsL3J0bC5jLCBkbGxzL3NoZWxsMzIvY2hhbmdlbm90aWZ5LmMsCgkgIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYywgZGxscy91c2VyL2RkZS9taXNjLmMsCgkgIGRsbHMvd2luYXNwaS93aW5hc3BpMzIuYywgZGxscy93aW5zb2NrL2FzeW5jLmMsCgkgIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmMsIGZpbGVzL3Byb2ZpbGUuYzoKCUFkZGVkIG5hbWVzIHRvIHN0YW5kYXJkIGNyaXRpY2FsIHNlY3Rpb25zIChzdWdnZXN0ZWQgYnkgQW5kcmVhcwoJTW9ocikuCgoJKiBkbGxzL29sZWF1dDMyL29sZWF1dDMyLnNwZWMsIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQHN0YXJ0LmNvbS5hdT4KCVBhcnRpYWxseSBpbXBsZW1lbnQgb2xlYXV0MzIuVmFyQnN0ckNtcC4KCjIwMDEtMDgtMTUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL2dkaS5oLCBvYmplY3RzL2RjLmMsIG9iamVjdHMvZGliLmMsIG9iamVjdHMvZ2Rpb2JqLmM6CglNYWtlIHN1cmUgd2UgZG9uJ3QgaG9sZCB0aGUgR0RJIGxvY2sgd2hlbiBsb2FkaW5nIGRyaXZlcnMuCgoJKiBpbmNsdWRlL3dpbmJhc2UuaCwgc2NoZWR1bGVyL3N5c2xldmVsLmM6CglJbXBsZW1lbnRlZCBfQ2hlY2tOb3RTeXNMZXZlbC4KCgkqIGluY2x1ZGUvd2luMTZkcnYuaCwgZGxscy9nZGkvZHJpdmVyLmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L2luaXQuYzoKCUZpeGVkIHdpbjE2ZHJ2IGluaXRpYWxpc2F0aW9uLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYywgZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jLCBpbmNsdWRlL3dpbmUvdW5kb2NzaGVsbC5oOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJUGF0aEdldEV4dGVuc2lvbkFXIGhhcyB0aHJlZSBhcmd1bWVudHMuCgoJKiBtc2Rvcy9pb3BvcnRzLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglEb24ndCBjYWxsIERvc3ZtIGZ1bmN0aW9ucyB3aGVuIERvc3ZtIGlzbid0IGluaXRpYWxpemVkLgoKCSogZGxscy9xdWFydHovTWFrZWZpbGUuaW4sIGRsbHMvcXVhcnR6L2ZncmFwaC5jLCBkbGxzL3F1YXJ0ei9mZ3JhcGguaCwKCSAgZGxscy9xdWFydHovaWZncmFwaC5jLCBkbGxzL3F1YXJ0ei9pbWVtLmMsIGRsbHMvcXVhcnR6L2lyY2xvY2suYywKCSAgZGxscy9xdWFydHovaXVuay5jLCBkbGxzL3F1YXJ0ei9pdW5rLmgsIGRsbHMvcXVhcnR6L21haW4uYywKCSAgZGxscy9xdWFydHovbWVtYWxsb2MuYywgZGxscy9xdWFydHovbWVtYWxsb2MuaCwKCSAgZGxscy9xdWFydHovcXVhcnR6LnNwZWMsIGRsbHMvcXVhcnR6L3F1YXJ0el9wcml2YXRlLmgsCgkgIGRsbHMvcXVhcnR6L3N5c2Nsb2NrLmMsIGRsbHMvcXVhcnR6L3N5c2Nsb2NrLmgsIHdpbmVkZWZhdWx0LnJlZzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglBZGRlZCBzb21lIHN0dWJzIGZvciBxdWFydHogZGxsLgoKCSogZ3JhcGhpY3MveDExZHJ2L3hmb250LmM6CglKZXJlbXkgV2hpdGUgPGp3aGl0ZUBjb2Rld2VhdmVycy5jb20+CglOb3JtYWxpemUgdGhlIGRpc3BsYXkgbmFtZSB1c2VkIHRvIGJ1aWxkIHRoZSBjYWNoZWQgbWV0cmljIGZpbGVuYW1lIHNvCgl0aGF0ICc6MCcsICc6MC4wJywgYW5kICd1bml4OjAuMCcgYWxsIHJlc29sdmUgdG8gdGhlIHNhbWUgZmlsZS4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzIuc3BlYywgZGxscy9vbGVhdXQzMi92YXJpYW50LmMsCgkgIGluY2x1ZGUvb2xlYXV0by5oOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglJbXBsZW1lbnRlZCBWYXJQYXJzZU51bUZyb21TdHIsIFZhck51bUZyb21QYXJzZU51bS4KCgkqIGRsbHMvd2luZXBzL2FmbS5jLCBkbGxzL3dpbmVwcy9hZm0yYy5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0F2YW50R2FyZGVfQm9vay5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0F2YW50R2FyZGVfQm9va09ibGlxdWUuYywKCSAgZGxscy93aW5lcHMvZGF0YS9BdmFudEdhcmRlX0RlbWkuYywKCSAgZGxscy93aW5lcHMvZGF0YS9BdmFudEdhcmRlX0RlbWlPYmxpcXVlLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvQm9va21hbl9EZW1pLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvQm9va21hbl9EZW1pSXRhbGljLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvQm9va21hbl9MaWdodC5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0Jvb2ttYW5fTGlnaHRJdGFsaWMuYywgZGxscy93aW5lcHMvZGF0YS9DT1BZUklHSFRTLAoJICBkbGxzL3dpbmVwcy9kYXRhL0NvdXJpZXIuYywgZGxscy93aW5lcHMvZGF0YS9Db3VyaWVyX0JvbGQuYywKCSAgZGxscy93aW5lcHMvZGF0YS9Db3VyaWVyX0JvbGRPYmxpcXVlLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvQ291cmllcl9PYmxpcXVlLmMsIGRsbHMvd2luZXBzL2RhdGEvSGVsdmV0aWNhLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvSGVsdmV0aWNhX0JvbGQuYywKCSAgZGxscy93aW5lcHMvZGF0YS9IZWx2ZXRpY2FfQm9sZE9ibGlxdWUuYywKCSAgZGxscy93aW5lcHMvZGF0YS9IZWx2ZXRpY2FfTmFycm93LmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvSGVsdmV0aWNhX05hcnJvd19Cb2xkLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvSGVsdmV0aWNhX05hcnJvd19Cb2xkT2JsaXF1ZS5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0hlbHZldGljYV9OYXJyb3dfT2JsaXF1ZS5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0hlbHZldGljYV9PYmxpcXVlLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvTmV3Q2VudHVyeVNjaGxia19Cb2xkLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvTmV3Q2VudHVyeVNjaGxia19Cb2xkSXRhbGljLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvTmV3Q2VudHVyeVNjaGxia19JdGFsaWMuYywKCSAgZGxscy93aW5lcHMvZGF0YS9OZXdDZW50dXJ5U2NobGJrX1JvbWFuLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvUGFsYXRpbm9fQm9sZC5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL1BhbGF0aW5vX0JvbGRJdGFsaWMuYywKCSAgZGxscy93aW5lcHMvZGF0YS9QYWxhdGlub19JdGFsaWMuYywgZGxscy93aW5lcHMvZGF0YS9QYWxhdGlub19Sb21hbi5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL1N5bWJvbC5jLCBkbGxzL3dpbmVwcy9kYXRhL1RpbWVzX0JvbGQuYywKCSAgZGxscy93aW5lcHMvZGF0YS9UaW1lc19Cb2xkSXRhbGljLmMsIGRsbHMvd2luZXBzL2RhdGEvVGltZXNfSXRhbGljLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvVGltZXNfUm9tYW4uYywKCSAgZGxscy93aW5lcHMvZGF0YS9aYXBmQ2hhbmNlcnlfTWVkaXVtSXRhbGljLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvWmFwZkRpbmdiYXRzLmMsIGRsbHMvd2luZXBzL3BzZHJ2LmgsCgkgIGRsbHMvd2luZXBzL3RydWV0eXBlLmMsIGRsbHMvd2luZXBzL3R5cGUxYWZtLmM6CglJYW4gUGlsY2hlciA8aWFuLnBpbGNoZXJAaG9tZS5jb20+CglFbGltaW5hdGUgZ2x5cGggYm91bmRpbmcgYm94ZXMgJiBvdGhlciB1bnVzZWQgZm9udCBtZXRyaWNzLgoKCSogZGVidWdnZXIvZGJnLnksIGRlYnVnZ2VyL2RlYnVnLmwsIGRlYnVnZ2VyL2RlYnVnZ2VyLmgsCgkgIGRlYnVnZ2VyL2V4cHIuYywgZGVidWdnZXIvaGFzaC5jLCBkZWJ1Z2dlci9tb2R1bGUuYywKCSAgZGVidWdnZXIvd2luZWRiZy5jLCBkb2N1bWVudGF0aW9uL2RlYnVnZ2VyLnNnbWw6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIHRoZSBwYXJzaW5nIG9mIGlkMS5pZDIgd2hpY2ggY291bGQgYmUgZWl0aGVyIGFjY2VzcyB0byBmaWVsZCBpZDIKCW9mIHN0cnVjdCBpZDEsIG9yIHRoZSBpZGVudGlmaWVyIGlkMiBpbiBkbGwgaWQxLgoJRW5oYW5jZWQgc29tZSBlcnJvciByZXBvcnRpbmcgYXMgd2VsbCBhcyAnaW5mbyBsb2NhbCcgZGlzcGxheSBsYXlvdXQuCglNaW5vciBjb3NtZXRpYyBjaGFuZ2VzLgoKCSogZGxscy93aW5tbS9tY2kuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgZXJyb3IgbWVzc2FnZSBhbmQgcmV0dXJuIHZhbHVlIGluIGNhc2Ugb2YgYm9ndXMgJ29wZW4gYWxsJyBtY2kKCXN0cmluZyBjb21tYW5kLiBNaW5vciAzMi8xNiBvcHRpbWl6YXRpb25zIGFuZCBjb3NtZXRpYyBmaXhlcy4KCgkqIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglEYXRlVGltZVN0cmluZ1RvVG0gYW5kIERhdGVUb1RtIG11c3QgdXNlIGR3RmxhZ3MgaW5zdGVhZCBvZiBsY2lkLgoKCSogb2xlL3V1aWQuYzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglJbmNsdWRlIEdVSURzIGluIHN0cm1pZi5oIGFuZCB1dWlkcy5oLgoKCSogaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9hdWRldmNvZC5oLCBpbmNsdWRlL2RzaG93LmgsCgkgIGluY2x1ZGUvZXZjb2RlLmgsIGluY2x1ZGUvdXVpZHMuaDoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglBZGRlZCBzb21lIGRzaG93IGhlYWRlcnMuCgoJKiBpbmNsdWRlL3N0cm1pZi5oOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUFkZGVkIElHcmFwaEJ1aWxkZXIsIElGaWx0ZXJHcmFwaDIsIElNZWRpYVNlZWtpbmcgaW50ZXJmYWNlcy4KCgkqIHdpbjMyL2V4Y2VwdC5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglNb2RpZmllZCB0aGUgZGVidWdnZXIgbGF1bmNoaW5nIGNvZGUgc28gdGhhdCBvbmx5IG9uZSBpbnN0YW5jZSBvZiB0aGUKCWRlYnVnZ2VyIGlzIGNyZWF0ZWQgcGVyIHByb2Nlc3MuCgoyMDAxLTA4LTEzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy91c2VyL21lc3NhZ2UuYywgaW5jbHVkZS93aW5wcm9jLmgsIHdpbmRvd3Mvd2lucHJvYy5jOgoJQWRkZWQgbWFwcGluZ3MgZm9yIGEgZmV3IG1lc3NhZ2VzLgoJQWRkZWQgdW5pY29kZSBtZXNzYWdlcyBiaXQgc2V0IHRvIHNob3J0Y3V0IG1lc3NhZ2UgbWFwcGluZyB3aGVuCglwb3NzaWJsZS4KCgkqIHdpbmRvd3Mvc3B5LmM6IEZpeGVkIHNvbWUgbWVzc2FnZSBuYW1lcy4KCgkqIGRsbHMvY29tY3RsMzIvcmViYXIuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CgktIEltcGxlbWVudGVkIFJCX01BWElNSVpFQkFORCBmb3IgdGhlICJpZGVhbD1UUlVFIiBjYXNlLgoJLSBJbXBsZW1lbnRlZCBOTV9DVVNUT01EUkFXIG5vdGlmaWNhdGlvbnMgZm9yIHRoZSBJVEVNUFJFUEFJTlQgYW5kCgkgIElURU1QT1NUUEFJTlQgb25seS4gKFVzZWQgYnkgSUU0IC0gZ28gZmlndXJlLikKCS0gSW52YWxpZGF0ZSB3aW5kb3cgcmVjdGFuZ2xlcyBhZnRlciBjZXJ0YWluIFJCXyBtZXNzYWdlcyBsaWtlIHRoZQoJICBuYXRpdmUuIEZpeGVkIHNvbWUgcGFpbnRpbmcgcHJvYmxlbXMuCgktIEFkZGVkIFVwZGF0ZVdpbmRvdyBjYWxsIGluIF9Nb3ZlQ2hpbGRXaW5kb3dzIHRvIGZpeCBvdGhlciBwYWludGluZwoJICBwcm9ibGVtcy4KCS0gU2V0IHRoZSBDYXB0aW9uIEZvbnQgYXMgdGhlIGRlZmF1bHQgZm9udCBmb3IgYWxsIGJhbmRzLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJLSBJbXBsZW1lbnQgVEJTVFlMRV9GTEFUIGFzICJ0cmFuc3BhcmVudCIgdG9vbGJhciBhbmQgYnV0dG9ucy4gKFNraXAKCSAgRmlsbFJlY3QgYW5kIEJGX01JRERMRSBvbiBfRkxBVCB0b29sYmFycy4pCgktIElzc3VlIEZJWE1FcyBmb3IgdW5zdXBwb3J0ZWQgc3R5bGVzLgoJLSBJZiB0aGUgImhpZGRlbiIgc3RhdGUgaGFzIGNoYW5nZWQgdGhlbiByZWNhbGMgdGhlIGJ1dHRvbnMuCgktIFN1cHBvcnQgVEJTVFlMRV9DVVNUT01FUkFTRSAodXNlZCBieSBJRTQpIGFucyBpc3N1ZSBzb21lIG9mIHRoZQoJICBuZWNlc3NhcnkgTk1fQ1VTVE9NRFJBVyBub3RpZmllcy4KCS0gUGFzcyB0aGUgV01fRVJBU0VCS0dORCB0byBwYXJlbnQgaWYgdGhlIHRvb2xiYXIgaXMgInRyYW5zcGFyZW50Ii4KCS0gSW52YWxpZGF0ZSB0aGUgYXJlYSAxIGJpZ2dlciB0aGFuIHRoZSBidXR0b24gcmVjdCBvbiBhIFdNX01PVVNFTEVBVkUKCSAgc28gdGhhdCB0aGUgZWRnZSBpcyAiZXJhc2VkIiBieSB0aGUgcGFyZW50LgoJLSBTdXBwb3J0IHRoZSBQR05fQ0FMQ1NJWkUgbm90aWZ5IHNpbmNlIGEgdG9vbGJhciBjYW4gYmUgYSBjaGlsZCBvZiB0aGUKCSAgUGFnZXIgY29udHJvbC4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglBZGQgc3VwcG9ydCB0byByZXNwb25kIHRvIHRoZSBQR05fQ0FMQ1NJWkUgdmVyc2lvbiBvZiB0aGUgV01fTk9USUZZCgltZXNzYWdlLgoKCSogZGxscy9jb21jdGwzMi9wYWdlci5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gTWFrZSBhbGwgV01fTk9USUZZIG1lc3NhZ2VzIGdvIHRvIHRoZSBwYXJlbnQuCgktIEFsbG93IFdNX1dJTkRPV1BPU0NIQU5HSU5HIHdoZW4gdGhlIGNvbnRyb2wgaXMgc2l6ZSAwIHRvIHNldCBpbml0aWFsCgkgIHNpemUuCgktIENvbWJpbmUgbXVsdGlwbGUgU2V0V2luZG93UG9zIGNhbGxzIGluIHNhbWUgcHJvY2Vzc2luZyBsaW5lIGFuZCBtYWtlCgkgIHRoZSBmbGFncyBsaWtlIG5hdGl2ZS4KCS0gUmVkbyBXTV9OQ0NBTENTSVpFIHRvIG1hdGNoIG5hdGl2ZS4KCS0gU2luY2UgUGFnZXIgaXMgYSAidHJhbnNwYXJlbnQiIGNvbnRyb2wgKGV4Y2VwdCBmb3IgaXRzIG93biBidXR0b25zKSwKCSAgdGhlIFdNX0VSQVNFQktHTkQgbmVlZHMgdG8gYmUgcGFzc2VkIHRvIHRoZSBwYXJlbnQuIEFsc28gZG8gdGhlIHdpbmRvdwoJICBvZmZzZXQgbGlrZSB0aGUgbmF0aXZlIGNvbnRyb2wgZG9lcy4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzIuc3BlYywgZGxscy9vbGVhdXQzMi92YXJpYW50LmMsCgkgIGluY2x1ZGUvb2xlYXV0by5oOgoJRGFuaWVsIFdhbGtlciA8ZGl3YWxrZXJAZWFydGhsaW5rLm5ldD4KCS0gaW1wbGVtZW50ZWQgU3lzdGVtVGltZXRvVmFyaWFudFRpbWUvVmFyaWFudFRpbWV0b1N5c3RlbVRpbWUKCSAgICBUaGVyZSB3YXMgYW5vdGhlciBpbXBsZW1lbnRhdGlvbiBvZiBTeXN0ZW1UaW1ldG9WYXJpYW50VGltZQoJICAgIHN1Ym1pdHRlZCB0aGF0IGRpZG4ndCB3b3JrIGZvciBkYXRlcyBwcmlvciB0byAxOTAwLgoJLSBpbXBsZW1lbnRlZCBWYXJEYXRlRnJvbVVEYXRlL1ZhclVkYXRlRnJvbURhdGUKCS0gaW1wbGVtZW50ZWQgVmFyaWFudFRpbWVUb0Rvc0RhdGVUaW1lCgoJKiBkbGxzL21zdmNydC9tYXRoLmM6IEp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCUZpeGVkIF9jb250cm9sODcgcmV0dXJuIHZhbHVlLCB1c2Ugb2Ygd3JvbmcgYXNzZW1ibGVyIGNvbW1hbmQgdG8gZ2V0CglmcCBjb250cm9sIHdvcmQgYW5kIGEgYnVnIHRoYXQgaW52ZXJ0ZWQgX0lDX0FGRklORSBmbGFnLgoJTWFkZSBfY29udHJvbGZwIHdvcmsgYXMgc3BlY2lmaWVkIGluIE1TRE4uCgoyMDAxLTA4LTExICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbG9hZGVyL25lL3NlZ21lbnQuYzoKCUpvc2ggVGhpZWxlbiA8dGhpZWxlbkBuZXRwcmluY2UubmV0PgoJV3JvbmcgaGFuZGxlIHdhcyBiZWluZyBjbG9zZWQuCgoJKiBkbGxzL3dpbmVwcy9kYXRhL0F2YW50R2FyZGVfQm9vay5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0F2YW50R2FyZGVfQm9va09ibGlxdWUuYywKCSAgZGxscy93aW5lcHMvZGF0YS9BdmFudEdhcmRlX0RlbWkuYywKCSAgZGxscy93aW5lcHMvZGF0YS9BdmFudEdhcmRlX0RlbWlPYmxpcXVlLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvQm9va21hbl9EZW1pLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvQm9va21hbl9EZW1pSXRhbGljLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvQm9va21hbl9MaWdodC5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0Jvb2ttYW5fTGlnaHRJdGFsaWMuYywgZGxscy93aW5lcHMvZGF0YS9Db3VyaWVyLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvQ291cmllcl9Cb2xkLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvQ291cmllcl9Cb2xkT2JsaXF1ZS5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0NvdXJpZXJfT2JsaXF1ZS5jLCBkbGxzL3dpbmVwcy9kYXRhL0hlbHZldGljYS5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0hlbHZldGljYV9Cb2xkLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvSGVsdmV0aWNhX0JvbGRPYmxpcXVlLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvSGVsdmV0aWNhX05hcnJvdy5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0hlbHZldGljYV9OYXJyb3dfQm9sZC5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0hlbHZldGljYV9OYXJyb3dfQm9sZE9ibGlxdWUuYywKCSAgZGxscy93aW5lcHMvZGF0YS9IZWx2ZXRpY2FfTmFycm93X09ibGlxdWUuYywKCSAgZGxscy93aW5lcHMvZGF0YS9IZWx2ZXRpY2FfT2JsaXF1ZS5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL05ld0NlbnR1cnlTY2hsYmtfQm9sZC5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL05ld0NlbnR1cnlTY2hsYmtfQm9sZEl0YWxpYy5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL05ld0NlbnR1cnlTY2hsYmtfSXRhbGljLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvTmV3Q2VudHVyeVNjaGxia19Sb21hbi5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL1BhbGF0aW5vX0JvbGQuYywKCSAgZGxscy93aW5lcHMvZGF0YS9QYWxhdGlub19Cb2xkSXRhbGljLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvUGFsYXRpbm9fSXRhbGljLmMsIGRsbHMvd2luZXBzL2RhdGEvUGFsYXRpbm9fUm9tYW4uYywKCSAgZGxscy93aW5lcHMvZGF0YS9TeW1ib2wuYywgZGxscy93aW5lcHMvZGF0YS9UaW1lc19Cb2xkLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvVGltZXNfQm9sZEl0YWxpYy5jLCBkbGxzL3dpbmVwcy9kYXRhL1RpbWVzX0l0YWxpYy5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL1RpbWVzX1JvbWFuLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvWmFwZkNoYW5jZXJ5X01lZGl1bUl0YWxpYy5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL1phcGZEaW5nYmF0cy5jLCBkbGxzL3dpbmVwcy9wc2Rydi5oOgoJSWFuIFBpbGNoZXIgPGlhbi5waWxjaGVyQGhvbWUuY29tPgoJUmVtb3ZlIHVudXNlZCBjaGFyYWN0ZXIgd2lkdGggYXJyYXkuCgoJKiBkbGxzL3dpbmVwcy9mb250LmM6CglJYW4gUGlsY2hlciA8aWFuLnBpbGNoZXJAaG9tZS5jb20+CglNYWtlIEVudW1Gb250cyBhbmQgU2VsZWN0T2JqZWN0IHVzZSBjb21tb24gZm9udCBzY2FsaW5nLgoKMjAwMS0wOC0xMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvdXNlci9jb250cm9scy5oLCBkbGxzL3gxMWRydi93aW5wb3MuYywgaW5jbHVkZS9ub25jbGllbnQuaCwKCSAgaW5jbHVkZS93aW5wb3MuaCwgaW5jbHVkZS94MTFkcnYuaCwgd2luZG93cy9kZWZ3bmQuYywgd2luZG93cy9tZGkuYywKCSAgd2luZG93cy9ub25jbGllbnQuYywgd2luZG93cy93aW4uYywgd2luZG93cy93aW5wb3MuYywKCSAgY29udHJvbHMvYnV0dG9uLmMsIGNvbnRyb2xzL2NvbWJvLmMsIGNvbnRyb2xzL2Rlc2t0b3AuYywKCSAgY29udHJvbHMvZWRpdC5jLCBjb250cm9scy9pY29udGl0bGUuYywgY29udHJvbHMvbGlzdGJveC5jLAoJICBjb250cm9scy9tZW51LmMsIGNvbnRyb2xzL3Njcm9sbC5jLCBjb250cm9scy9zdGF0aWMuYzoKCVJlbW92ZWQgYSBudW1iZXIgb2YgZGlyZWN0IGFjY2Vzc2VzIHRvIHRoZSBXTkQgc3RydWN0dXJlLCByZXBsYWNpbmcKCXRoZW0gYnkgQVBJIGNhbGxzLgoKCSogZ3JhcGhpY3MvZGlzcGRpYi5jLCBsb2FkZXIvbmUvcmVzb3VyY2UuYywgZGxscy9jb21jdGwzMi9jb21ib2V4LmMsCgkgIGRsbHMvZGRyYXcvaGVscGVyLmMsIGRsbHMvZGRyYXcvbWFpbi5jLCBkbGxzL250ZGxsL3N5bmMuYzoKCUr2cmcgTWF5ZXIgPGptYXllckBsb3Bsb2YuZGU+CglGaXhlZCBhIGZldyBzaWduZWQvdW5zaWduZWQgYW5kICJ1bnNpZ25lZCA8IDAgYWx3YXlzIHRydWUiIHdhcm5pbmdzLgoKCSogZGxscy93aW5lcHMvZm9udC5jLCBkbGxzL3dpbmVwcy9wcy5jLCBkbGxzL3dpbmVwcy9wc2Rydi5oLAoJICBkbGxzL3dpbmVwcy90ZXh0LmM6CglJYW4gUGlsY2hlciA8aWFuLnBpbGNoZXJAaG9tZS5jb20+CglSZW1vdmVkIEFOU0kgZW5jb2Rpbmcgc3R1ZmYuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmM6CglEdXNhbiBMYWNrbyA8ZGxhY2tvQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBFeHRyYWN0RnJvbUVYRURMTCBmb3IgbkluZGV4ICE9IDAuCglQcmVmZXIgOGJpdCBpY29ucy4KCgkqIGluY2x1ZGUvY29uZmlnLmguaW4sIGxvYWRlci9sb2Fkb3JkZXIuYywgY29uZmlndXJlLCBjb25maWd1cmUuaW4sCgkgIGRlYnVnZ2VyL3N0YWJzLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVzIGZvciBTb2xhcmlzIFg4Ni4KCgkqIGRsbHMvbXN2Y3J0L21iY3MuYywgZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAc3RhcnQuY29tLmF1PgoJSW1wbGVtZW50ZWQgbXN2Y3J0Ll9tYnNwYnJrLgoKMjAwMS0wOC0wOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvdXNlci9NYWtlZmlsZS5pbiwgZGxscy91c2VyL2RkZS8uY3ZzaWdub3JlLAoJICBkbGxzL3VzZXIvZGRlL2NsaWVudC5jLCBkbGxzL3VzZXIvZGRlL2RkZV9wcml2YXRlLmgsCgkgIGRsbHMvdXNlci9kZGUvZGRlbWwxNi5jLCBkbGxzL3VzZXIvZGRlL21pc2MuYywgZGxscy91c2VyL2RkZS9zZXJ2ZXIuYywKCSAgZGxscy91c2VyL3VzZXIzMi5zcGVjLCBkbGxzL3VzZXIvdXNlcl9tYWluLmMsIGluY2x1ZGUvZGRlbWwuaDoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJLSBpbXBsZW1lbnRlZCBjb3JyZWN0bHkgdGhlIEhTWiBhcyBsb2NhbCBhdG9tcyBhbmQgYWRkZWQgdGhlIG5lZWRlZAoJICBjb252ZXJzaW9ucyB0byBnbG9iYWwgYXRvbXMKCS0gZW5oYW5jZWQgaW50ZXJuYWwgaGFuZGxlIDw9PiBwb2ludGVyIGNvbnZlcnNpb25zLCBhcyB3ZWxsIGFzCgkgIHZhbGlkaXR5IG9mIHN1Y2ggb2JqZWN0cyAobGlmZSB0aW1lLCBkZXN0cnVjdGlvbiwgbXV0dWFsIGFjY2Vzcy4uLikKCS0gZml4ZWQgYSBmZXcgQU5TSS9Vbmljb2RlIGlzc3Vlcywgc3RvcmVzIG1vc3Qgb2YgdGhlIGRhdGEgYXMgVW5pY29kZQoJLSBzdGFydGVkIGhhdmluZyBib3RoIEFuc2kvVW5pY29kZSBEREUgd2luZG93IHByb2NzIGZvciBtZXNzYWdlIEEvVwoJICB0cmFuc2Zvcm1hdGlvbgoJLSBmaXhlZCBhIGZldyBzZWdtZW50ZWQgcG9pbnRlciBpc3N1ZXMgKG1haW5seSBpbiBEZGVJbml0aWFsaXplICYKCSAgRGRlR2V0RGF0YSkKCS0gYWRkZWQgbW9zdCBvZiB0aGUgQ0JGXyBmbGFncyBoYW5kbGluZwoJLSBpbXBsZW1lbnRlZCB0aGUgY29udmVyc2F0aW9uIGFubm91bmNlbWVudCAoWFRZUF9DT05ORUNUX0NPTkZJUk0pIG9uCgkgIHNlcnZlciBzaWRlCgktIGVuaGFuY2VkIERkZVF1ZXJ5Q29uZmlnIGFuZCBpbXBsZW1lbnRlZCBEZGVSZWNvbm5lY3QKCS0gaW1wbGVtZW50ZWQgY29udmVyc2F0aW9uIHRlcm1pbmF0aW9uIChpbmNsdWRpbmcgWFRZUF9VTlJFR0lTVEVSKQoJLSBzZXZlcmFsIG90aGVycyBjb2RlIGNsZWFuIHVwCgktIGFkZGVkIHRyYW5zYWN0aW9uIHN1cHBvcnQgb24gc2VydmVyIHNpZGUgdG9vCgoJKiBkbGxzL21zdmNydC9tYmNzLmMsIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQHN0YXJ0LmNvbS5hdT4KCUltcGxlbWVudGVkIG11bHRpYnl0ZSBzdHJpbmcgcmV2ZXJzZS4KCgkqIGRsbHMvd2luZXBzL2ZvbnQuYywgZGxscy93aW5lcHMvcHMuYzoKCUlhbiBQaWxjaGVyIDxpYW4ucGlsY2hlckBob21lLmNvbT4KCVJlbW92ZSBwcmV2aW91c2x5IGRpc2FibGVkIGNvZGUuCgoJKiBkbGxzL3dpbmVwcy9lc2NhcGUuYywgZGxscy94MTFkcnYveHZpZG1vZGUuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRG9jdW1lbnRhdGlvbiBmaXhlcy4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlcGljdHVyZS5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBpc3N1ZSBmb3VuZCBieSB3aW5hcGlfY2hlY2suCgoJKiB0b29scy93aW5hcGkvY19wYXJzZXIucG0sIHRvb2xzL3dpbmFwaS9mdW5jdGlvbi5wbSwKCSAgdG9vbHMvd2luYXBpL21ha2VfZmlsdGVyLCB0b29scy93aW5hcGkvbWFrZV9wYXJzZXIucG0sCgkgIHRvb2xzL3dpbmFwaS93aW5hcGlfZml4dXAsIHRvb2xzL3dpbmFwaS93aW5hcGlfZml4dXBfZG9jdW1lbnRhdGlvbi5wbSwKCSAgdG9vbHMvd2luYXBpL3dpbmFwaV9maXh1cF9lZGl0b3IucG0sCgkgIHRvb2xzL3dpbmFwaS93aW5hcGlfZml4dXBfb3B0aW9ucy5wbSwKCSAgdG9vbHMvd2luYXBpL3dpbmFwaV9maXh1cF9zdGF0ZW1lbnRzLnBtLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvc2hlbGwzMi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi93aW5lcHMuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIveDExZHJ2LmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9wYXJzZXIucG06CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gQmVndW4gaW1wbGVtZW50YXRpb24gb2YgYSBDIHN0YXRlbWVudHMgcGFyc2VyLgoJLSBNb3JlIHJlb3JnYW5pemF0aW9ucyBhbmQgZml4ZXMuCgoJKiBzY2hlZHVsZXIvY2xpZW50LmMsIHNlcnZlci9yZXF1ZXN0LmM6CglEb24ndCBjcmVhdGUgdGhlIFdJTkVQUkVGSVggZGlyZWN0b3J5IGlmIGl0IGRvZXNuJ3QgZXhpc3QuCgoJKiBkbGxzL2RkcmF3L2RzdXJmYWNlL21haW4uYywgZGxscy9udGRsbC9jcml0c2VjdGlvbi5jLAoJICBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmMsIGluY2x1ZGUvd2luYmFzZS5oLAoJICBzY2hlZHVsZXIvY3JpdHNlY3Rpb24uYywgc2NoZWR1bGVyL3B0aHJlYWQuYzoKCUFkZGVkIEludGVybG9ja2VkKlBvaW50ZXIgZnVuY3Rpb25zLgoJRml4ZWQgSW50ZXJsb2NrZWRDb21wYXJlRXhjaGFuZ2UgcHJvdG90eXBlLgoKCSogZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jLCBkbGxzL3dpbm1tL2xvbHZsZHJ2LmMsIGRsbHMvd2lubW0vbW1pby5jLAoJICBkb2N1bWVudGF0aW9uLy5jdnNpZ25vcmUsIGRvY3VtZW50YXRpb24vd2luZS5tYW4uaW4sCgkgIGxvYWRlci9wZV9pbWFnZS5jLCBtaXNjL3ZlcnNpb24uYywgb2xlL29sZTJubHMuYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCVNwZWxsaW5nIGZpeGVzLgoKCSogdG9vbHMvd2luZWNoZWNrOiBBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglTbWFsbCB3aW5lY2hlY2sgdXBkYXRlIChER0EgY2hlY2sgaXMgYm9ndXMpLgoKCSogaW5jbHVkZS93aW5udC5oOiBBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglBZGRlZCBtb3JlIFNUQVRVU18gY29kZXMuCgoyMDAxLTA4LTA4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS9ub25jbGllbnQuaCwgd2luZG93cy9jbGlwYm9hcmQuYywgd2luZG93cy9kZWZkbGcuYywKCSAgd2luZG93cy9kaWFsb2cuYywgd2luZG93cy9tZGkuYywgd2luZG93cy9ub25jbGllbnQuYywgd2luZG93cy91c2VyLmMsCgkgIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3Mvd2lucG9zLmM6CglSZXBsYWNlIFNlbmRNZXNzYWdlMTYgYnkgU2VuZE1lc3NhZ2VXIHdoZXJlIHBvc3NpYmxlLgoKCSogZGxscy91c2VyL3RodW5rLmMsIGRsbHMvdXNlci91c2VyLnNwZWMsIHdpbmRvd3MvcGFpbnRpbmcuYzoKCUZpeGVkIERyYXdTdGF0ZTE2IGNhbGxiYWNrIHN1cHBvcnQuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmM6CglGaXhlZCBsb29wIHRlcm1pbmF0aW9uIGNoZWNrIGluIFBhdGhJc0V4ZVcuCgoJKiBncmFwaGljcy9lc2NhcGUuYzoKCUZpeGVkIGluX2RhdGEvb3V0X2RhdGEgbWl4dXAgaW4gRXNjYXBlMTYgKHRoYW5rcyB0byBMYWRpc2xhdiBTbGFkZWNlaykuCgoJKiBkbGxzL3dpbmVwcy9NYWtlZmlsZS5pbiwgZGxscy93aW5lcHMvYWZtLmMsIGRsbHMvd2luZXBzL3BzZHJ2LmgsCgkgIGRsbHMvd2luZXBzL3RydWV0eXBlLmMsIGRsbHMvd2luZXBzL3R5cGUxYWZtLmM6CglJYW4gUGlsY2hlciA8aWFuLnBpbGNoZXJAaG9tZS5jb20+CglSZXdyaXRlIGFuZCBzZXBhcmF0ZSBBRk0gcGFyc2luZyBjb2RlIChubyBtb3JlIFthZm1maWxlc10pLgoKCSogY29uZmlndXJlLmluLCBjb25maWd1cmU6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUNoYW5nZSBsaWJHTFUgY2hlY2sgdG8gbG9vayBmb3IgZ2x1TG9va0F0IGluc3RlYWQgb2YgZ2xCZWdpbi4KCjIwMDEtMDgtMDcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkZWJ1Z2dlci93aW5lZGJnLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCU5vdyB0cmllcyB0byBwcmludCB0aGUgc3ltYm9sIG5hbWUgb2YgYSBjcnN0IHdoZW4gaXQgdGltZXMgb3V0LgoKCSogc2VydmVyL3RocmVhZC5jOiBBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglEb24ndCBjcmFzaCBpZiBzZW5kX3RocmVhZF93YWtldXAoKSBmYWlscy4KCgkqIHdpbmVkZWZhdWx0LnJlZzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJQWRkZWQgc29tZSByZWdpc3RyeSBlbnRyaWVzIHJlbGF0ZWQgdG8gQ09NIGludGVyZmFjZSBtYXJzaGFsaW5nLgoKCSogd2luZG93cy9pbnB1dC5jLCB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy9xdWV1ZS5jLAoJICBkbGxzL3VzZXIvTWFrZWZpbGUuaW4sIGRsbHMvdXNlci9tZXNzYWdlLmMsIGRsbHMvdXNlci9tc2cxNi5jLAoJICBkbGxzL3VzZXIvdXNlci5zcGVjLCBpbmNsdWRlL21lc3NhZ2UuaCwgaW5jbHVkZS9xdWV1ZS5oLAoJICBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsIGluY2x1ZGUvd2luZS93aW51c2VyMTYuaCwKCSAgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3F1ZXVlLmMsIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci90cmFjZS5jOgoJUmV3cm90ZSBtb3N0IG9mIFNlbmRNZXNzYWdlL1BlZWtNZXNzYWdlLgoJSW1wbGVtZW50ZWQgaW50ZXItcHJvY2VzcyBtZXNzYWdpbmcuCglNb3ZlZCBtb3N0IG1lc3NhZ2Ugcm91dGluZXMgdG8gZGxscy91c2VyLCBhbmQgc3BsaXQgb2ZmIDE2LWJpdAoJcm91dGluZXMgdG8gYSBzZXBhcmF0ZSBmaWxlLgoKMjAwMS0wOC0wNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvY29uZmlnLmguaW4sIGluY2x1ZGUvb2xlY3RsLmgsIGluY2x1ZGUvd2luZS9vYmpfcGljdHVyZS5oLAoJICBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy9vbGVhdXQzMi9NYWtlZmlsZS5pbiwKCSAgZGxscy9vbGVhdXQzMi9vbGVwaWN0dXJlLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUltcGxlbWVudGVkIE9sZUxvYWRQaWN0dXJlLgoJQWRkZWQgc3VwcG9ydCBmb3IgbG9hZGluZyBKUEVHLCBCaXRtYXAgYW5kIEljb25zIGZyb20gcGVyc2lzdGFudAoJc3RyZWFtcy4KCUltcGxlbWVudGVkIEpQRUcgc3VwcG9ydCB1c2luZyBsaWJqcGVnLCBhZGRlZCBuZWNlc3NhcnkgY29uZmlndXJlLmluCglvcHRpb25zLgoJQWRkZWQgSUNvbm5lY3Rpb25Qb2ludCBzdHlsZSBub3RpZmljYXRpb25zIHRvIHRoZSBJUGljdHVyZSBpZmFjZS4KCUltcGxlbWVudGVkIHNldmVyYWwgb2YgdGhlIHN0dWJzIGFscmVhZHkgdGhlcmUsIGFkZGVkIHNvbWUgbW9yZS4KCgkqIGRsbHMveDExZHJ2L3gxMWRkcmF3LmM6CglKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglYR3JhYlBvaW50ZXIgaXMgbm93IGNhbGxlZCBmcm9tIHRoZSBjb3JyZWN0IHRocmVhZCBjb250ZXh0IGFuZCBpdCBpcwoJbWFkZSBzdXJlIHRoYXQgd2UgaGF2ZSBrZXlib2FyZCBmb2N1cyB3aGVuIHVzaW5nIERpcmVjdFguCgoJKiBkbGxzL3gxMWRydi93aW5wb3MuYywgd2luZG93cy9kaWFsb2cuYywgd2luZG93cy9ub25jbGllbnQuYywKCSAgY29udHJvbHMvbWVudS5jOgoJUmVwbGFjZWQgTVNHX0ludGVybmFsR2V0TWVzc2FnZSBjYWxscyBieSBlcXVpdmFsZW50IGV4cG9ydGVkIEFQSXMuCgoJKiB3aW5kb3dzL3dpbnByb2MuYzoKCUZpeGVkIHJldHVybiB2YWx1ZSBmb3IgV01fTk9USUZZIGFuZCBXTV9BQ1RJVkFURUFQUCBtYXBwaW5ncy4KCgkqIGluY2x1ZGUvd2ludXNlci5oOiBBZGRlZCBTTVRPXyogZGVmaW5lcy4KCgkqIGRlYnVnZ2VyL3dpbmVkYmcuYywgZG9jdW1lbnRhdGlvbi9kZWJ1Z2dlci5zZ21sLCBkZWJ1Z2dlci9kYmcueSwKCSAgZGVidWdnZXIvZGVidWdnZXIuaCwgZGVidWdnZXIvaW5mby5jLCBkZWJ1Z2dlci9zdGFjay5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglFeHRlbmRlZCBidCBjb21tYW5kIHRvIGRpc3BsYXkgYmFja3RyYWNlIG9mIGFub3RoZXIgdGhyZWFkLgoJRW5oYW5jZWQgcHJvY2VzcyAmIHRocmVhZCBkaXNwbGF5IHdpdGggcHJvY2VzcyBuYW1lLgoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUZpeGVkIHRhYiBjb250cm9sIGluZGV4IGhhbmRsaW5nLgoKCSogZGxscy9rZXJuZWwvY29tbS5jLCBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBpbmNsdWRlL3dpbmJhc2UuaDoKCU1hcmN1cyBNZWlzc25lciA8TWFyY3VzLk1laXNzbmVyQGNhbGRlcmEuZGU+CglTZXRDb21tQ29uZmlnIGhhcyAzIGFyZ3VtZW50cywgbm90IDIuCgoJKiBkb2N1bWVudGF0aW9uL3dpbmUuY29uZi5tYW4uaW4sIGRvY3VtZW50YXRpb24vd2luZS5tYW4uaW46CglMYXdzb24gV2hpdG5leSA8bGF3c29uX3doaXRuZXlAanVuby5jb20+CglSZWNvbmNpbGVkIHRoZSB3aW5lIG1hbiBwYWdlcyB0byB0aGUgYWJzZW5jZSBvZiB3aW5lLmNvbmYuCgoJKiBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBpbWFnZSBuYW1lIHZhbHVlIHNlbnQgdG8gc2VydmVyIHVwb24gcHJvY2VzcyBjcmVhdGlvbi4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXJzdCAocGFydGlhbCkgaW1wbGVtZW50YXRpb24gb2YgSVR5cGVJbmZvOjpJbnZva2UuCglGaXhlZCBidWZmZXIgbGVuIHBhc3NpbmcgdG8gc25wcmludGYoKS4KCjIwMDEtMDgtMDMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL3BhaW50aW5nLmM6CglNYXJjbyBCaXp6YXJyaSA8bS5iaXp6YXJyaUBpY3ViZS5pdD4KCUdldENvbnRyb2xCcnVzaDE2OiBhdm9pZCBwb3RlbnRpYWxseSByZWxlYXNpbmcgdGhlIHNhbWUgcG9pbnRlcgoJdHdpY2UuCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYzoKCU1hbHRlIFN0YXJvc3RpayA8bWFsdGVAa2RlLm9yZz4KCUltcGxlbWVudGVkIFJlZ2lzdGVyVHlwZUxpYi4KCgkqIGxpYnJhcnkvbGR0LmM6CglQaWVycmUgQmV5c3NhYyA8cGJAZmFzdGVyaXguZnJlZW5peC5vcmc+CglGb3JjZSBEUEwgMyB3aGVuIHNldHRpbmcgZW50cmllcyBvbiBCU0QuCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglPbmx5IGFkZCAiLiIgc2VwYXJhdG9yIGluIGNhc2UgYSBkZWZhdWx0IGZpbGUgbmFtZSBleHRlbnNpb24gZG9lcwoJZXhpc3QuCgoJKiBvYmplY3RzL2RpYi5jOiBBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglESUJfR2V0Qml0bWFwSW5mbyBkaWRuJ3QgcmVjb2duaXplIEJJVE1BUFY0LzVIRUFERVIuCgoJKiBkZWJ1Z2dlci9tc2MuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQ2hlY2sgZm9yIC0xIGFzIHRoZSB1bmRlZmluZWQgdmFsdWUgZm9yIGhhbmRsZXMgYmVmb3JlIENsb3NlSGFuZGxlLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJLSBBZGQgZGVidWdnaW5nIGR1bXBzIG9mIGJhciBhbmQgYnV0dG9ucywgYW5kIHRyYWNlIGVudHJ5IGZvciBlYWNoCgkgIG1lc3NhZ2UuCgktIE9yZ2FuaXplIFdNX05PVElGWSBwcm9jZXNzaW5nIGluIHByZXBhcmF0aW9uIGZvciBVbmljb2RlCgktIEltcGxlbWVudCBUQk5fR0VURElTUElORk8gYW5kIElfSU1BR0VDQUxMQkFDSyBmb3IgYml0bWFwcy4KCS0gSW1wbGVtZW50IGRyYXdpbmcgb2Ygc2VwYXJhdG9yIGZvciBUQlNUWUxFX0RST1BET1dOIHNpbWlsYXIgdG8gbmF0aXZlLgoJLSBDaGFuZ2UgZHJhd2luZyBvZiBidXR0b25zIHRvIHN1cHBvcnQgVEJTVFlMRV9MSVNUIGFuZCBtYWtlIG1hdGNoCgkgIG5hdGl2ZSBwaXhlbCBsYXlvdXQgKHdpdGggYW5kIHdpdGhvdXQgYml0bWFwcykuCgktIENoYW5nZSBUT09MQkFSX01lYXN1cmVTdHJpbmcgdG8gbWVhc3VyZSB3aXRoIERyYXdUZXh0IGxpa2UgbmF0aXZlLgoJICBUaGlzIGVsaW1pbmF0ZXMgZXh0cmEgc3BhY2UgZHVlIHRvIHByZWZpeCBjaGFyICgiJiIpLgoJLSBTcGVlZCB1cCBUT09MQkFSX0NhbGNTdHJpbmdzIGJ5IGRvaW5nIHRoZSBIREMgYW5kIEZPTlQgc2VsZWN0aW9uIG9uY2UuCgktIENoYW5nZSBjYWxjIG9mIGJ1dHRvbnMgdG8gbWF0Y2ggZHJhd2luZyBmb3IgVEJTVFlMRV9MSVNUIGFuZAoJICBzZXBhcmF0b3JzLgoKCSogd2luZG93cy9zcHkuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CgktIEFkZCBzdXBwb3J0IHRvIGR1bXAgbWVtb3J5IGF0IGxQYXJhbSBsb2NhdGlvbiBvbiBjb21tb24gY29udHJvbAoJICBtZXNzYWdlcy4KCS0gRml4ZWQgcmVtYWluaW5nIFRvb2xiYXIgYW5kIFBhZ2VyIG5vdGlmeSBkdW1wIGFtb3VudHMuCgktIFNlcGFyYXRlIG1lbW9yeSBkdW1wIGNvZGUgZm9yIGVhc3kgdXNlLgoKCSogaW5jbHVkZS9jb21tY3RybC5oOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCUFkZCBUQk5GXyogZmxhZ3MgZm9yIHRoZSBOTVRCRElTUElORk8gc3RydWN0dXJlLgoKMjAwMS0wNy0zMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvdmVyc2lvbi5oLCBBTk5PVU5DRSwgQ2hhbmdlTG9nOgoJUmVsZWFzZSAyMDAxMDczMS4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KMjAwMS0wNy0zMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvZ2RpL2RyaXZlci5jOiBKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglJbmNsdWRlIGRldmljZSBuYW1lIGluIGNhbGwgdG8gQ3JlYXRlSUMuCgoJKiBkbGxzL3gxMWRydi93aW5kb3cuYzoKCUZpeGVkIGRlc2t0b3Agd2luZG93IHN0cnVjdHVyZSBpbml0aWFsaXphdGlvbi4KCgkqIGRsbHMvZGRyYXcvZHN1cmZhY2UvdXNlci5jLCB3aW5kb3dzL2RjZS5jOgoJRml4ZWQgYSBmZXcgcHJvYmxlbXMgd2l0aCBEQ1hfKiBmbGFncyBoYW5kbGluZy4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJTm9nIDxub2dAc2RmLmxvbmVzdGFyLm9yZz4KCURvbid0IGVuYWJsZSB0aGUgJ2hvdCcgc3RhdGUgb2YgYSB0b29sYmFyIGJ1dHRvbiB3aGVuIGl0J3Mgbm90CgllbmFibGVkLgoKCSogZGxscy9vcGVuZ2wzMi9tYWtlX29wZW5nbCwgZGxscy9vcGVuZ2wzMi9vcGVuZ2xfZXh0LmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSBhZGRlZCBzdXBwb3J0IGZvciB0aGUgU0dJUyBtdWx0aXRleHR1cmUgZXh0ZW5zaW9uLgoJLSBtaXNjLiBvdGhlciBmaXhlcwoKCSogd2luZG93cy9kZWZ3bmQuYzoKCUVyYXNlIG9ubHkgY2xpZW50IGFyZWEgb24gV01fRVJBU0VCS0dORC4KCjIwMDEtMDctMzAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB0b29scy93aW5hcGkvLmN2c2lnbm9yZSwgdG9vbHMvd2luYXBpL01ha2VmaWxlLmluLAoJICB0b29scy93aW5hcGkvdHJhbXBvbGluZSwgdG9vbHMvd2luYXBpL3dpbmFwaV9jaGVjaywgY29uZmlndXJlLAoJICBjb25maWd1cmUuaW46CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCU1hZGUgaXQgcG9zc2libGUgdG8gaW5zdGFsbCB0aGUgd2luYXBpIHRvb2xzLgoKCSogaW5jbHVkZS93aW5ubHMuaCwgaW5jbHVkZS93aW51c2VyLmg6CglGb3JjZSBTVFJJQ1QgY2hlY2tpbmcgb2YgY2FsbGJhY2sgZnVuY3Rpb24gdHlwZXMgd2hlbiBjb21waWxpbmcgV2luZS4KCgkqIHdpbmRvd3MvcHJvcGVydHkuYzoKCUltcGxlbWVudCBFbnVtUHJvcHMgb24gdG9wIG9mIEVudW1Qcm9wc0V4IHRvIGF2b2lkIGZ1bmN0aW9uIHBvaW50ZXIKCXR5cGUgbWlzbWF0Y2hlcy4KCgkqIGxvYWRlci9uZS9tb2R1bGUuYywgbG9hZGVyL3Rhc2suYywgaW5jbHVkZS90YXNrLmg6CglGaXhlZCBIVEFTSy9IVEFTSzE2IGhhbmRsZSBtaXNtYXRjaC4KCgkqIGluY2x1ZGUvbW1zeXN0ZW0uaCwgaW5jbHVkZS9tc2FjbS5oLCBpbmNsdWRlL3dpbmRlZi5oOgoJTW92ZWQgc29tZSBoYW5kbGUgZGVjbGFyYXRpb25zIHRvIHRoZSByaWdodCBoZWFkZXJzLgoKCSogdG9vbHMvd2luYXBpL2NvbmZpZy5wbSwgdG9vbHMvd2luYXBpL21ha2VfcGFyc2VyLnBtLAoJICB0b29scy93aW5hcGkvb3B0aW9ucy5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMuZGF0LAoJICB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3R0eWRydi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi93aW5lcHMuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIveDExZHJ2LmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaS5wbSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9jaGVjaywKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9sb2NhbC5wbSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9wYXJzZXIucG06CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUEgZmV3IGJ1ZyBmaXhlcy4KCgkqIHRvb2xzL3dpbmVtYWtlcjoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglGaXggaGFuZGxpbmcgb2YgdGhlICctLXdpdGgtd2luZS14eHgnIG9wdGlvbnM6IG9ubHkgbG9vayBpbiB0aGUKCXNwZWNpZmllZCBwYXRoLgoJTGlicmFyaWVzIGFuZCB3aW5lIGRsbHMgYXJlIHNlcGFyYXRlIG5vdGlvbnMgdGhhdCBuZWVkIHNlcGFyYXRlIHBhdGhzCgktPiBhZGQgV0lORV9ETExfe1JPT1QsUEFUSH0sIC0td2l0aC13aW5lLWRsbHMgYW5kIGEgJy1QJyBvcHRpb24uCglTbWFsbCBmaXhlcyB0byB0aGUgc2VhcmNoIG9yZGVyLgoKMjAwMS0wNy0yOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvd2luZXBzL2luaXQuYywgZGxscy93aW5lcHMvd2luZXBzLnNwZWMsCgkgIGRsbHMveDExZHJ2L3gxMWRkcmF3LmMsIGRsbHMveDExZHJ2L3gxMWRydi5zcGVjLAoJICBncmFwaGljcy9lbmhtZXRhZmlsZWRydi9pbml0LmMsIGdyYXBoaWNzL2VzY2FwZS5jLAoJICBncmFwaGljcy9tZXRhZmlsZWRydi9pbml0LmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L2luaXQuYywKCSAgZ3JhcGhpY3MveDExZHJ2L2luaXQuYywgaW5jbHVkZS9nZGkuaCwgaW5jbHVkZS93aW5lL3dpbmdkaTE2LmgsCgkgIGluY2x1ZGUveDExZHJ2LmgsIGRsbHMvZ2RpL2RyaXZlci5jLCBkbGxzL2dkaS9nZGkuc3BlYywKCSAgZGxscy9nZGkvcHJpbnRkcnYuYywgZGxscy93aW5lcHMvZXNjYXBlLmM6CglSZXdyb3RlIEVzY2FwZSB0byBhdm9pZCBjYWxsaW5nIGRvd24gdG8gRXNjYXBlMTYuCglSZXBsYWNlZCBFc2NhcGUgYnkgRXh0RXNjYXBlIGluIHRoZSBEQyBmdW5jdGlvbiB0YWJsZS4KCgkqIE1ha2UucnVsZXMuaW46IFBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQWRkZWQgYSBmaWx0ZXIgcnVsZSBmb3IgZmlsdGVyaW5nIG1ha2Ugb3V0cHV0IHdpdGgKCXRvb2xzL3dpbmFwaS9tYWtlX2ZpbHRlci4KCgkqIGRsbHMvb2xlMzIvY2xpcGJvYXJkLmMsIGRsbHMvb2xlMzIvb2xlMi5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIHdhcm5pbmdzLgoKCSogdG9vbHMvd2luYXBpL2NvbmZpZy5wbSwgdG9vbHMvd2luYXBpL21ha2VfZmlsdGVyLAoJICB0b29scy93aW5hcGkvbWFrZV9maWx0ZXJfb3B0aW9ucy5wbSwgdG9vbHMvd2luYXBpL21ha2VfcGFyc2VyLnBtLAoJICB0b29scy93aW5hcGkvb3B0aW9ucy5wbSwgdG9vbHMvd2luYXBpL3NldHVwLnBtOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglBIGZldyBidWcgZml4ZXMuCgoJKiBpbmNsdWRlL2RwbGF5Lmg6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUNsZWFudXAvcmVtb3ZhbCBvZiB1bm5lc3NhcnkgdGhpbmdzIHRoYXQgd291bGQgaGF2ZSBtYWRlIHdpbmFwaV8qCglwYXJzaW5nIG1vcmUgY29tcGxpY2F0ZWQuCgoyMDAxLTA3LTI4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZ3JhcGhpY3MveDExZHJ2L2luaXQuYywgZ3JhcGhpY3MveDExZHJ2L3BhbGV0dGUuYywKCSAgZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsIGluY2x1ZGUvZ2RpLmgsIGluY2x1ZGUvd2luMTZkcnYuaCwKCSAgaW5jbHVkZS94MTFkcnYuaCwgb2JqZWN0cy9kYy5jLCBvYmplY3RzL3BhbGV0dGUuYywKCSAgZ3JhcGhpY3Mvd2luMTZkcnYvaW5pdC5jLCBncmFwaGljcy93aW4xNmRydi90ZXh0LmMsCgkgIGRsbHMvd2luZXBzL2VzY2FwZS5jLCBkbGxzL3dpbmVwcy9mb250LmMsIGRsbHMvd2luZXBzL2luaXQuYywKCSAgZGxscy93aW5lcHMvcHMuYywgZGxscy93aW5lcHMvcHNkcnYuaCwgZGxscy93aW5lcHMvd2luZXBzLnNwZWMsCgkgIGRsbHMveDExZHJ2L3gxMWRydi5zcGVjLCBncmFwaGljcy9lbmhtZXRhZmlsZWRydi9pbml0LmMsCgkgIGdyYXBoaWNzL21hcHBpbmcuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvaW5pdC5jLCBkbGxzL2dkaS9kcml2ZXIuYywKCSAgZGxscy90dHlkcnYvZGMuYywgZGxscy90dHlkcnYvcGFsZXR0ZS5jLCBkbGxzL3R0eWRydi90dHlkcnYuaCwKCSAgZGxscy90dHlkcnYvdHR5ZHJ2LnNwZWMsIGRsbHMvdHR5ZHJ2L3R0eWRydl9tYWluLmM6CglBZGRlZCBHZXREZXZpY2VDYXBzIHRvIHRoZSBEQyBkcml2ZXIgaW50ZXJmYWNlLiBSZW1vdmVkIGRldkNhcHMKCXBvaW50ZXIgaW4gdGhlIGdlbmVyaWMgREMgc3RydWN0dXJlLgoKCSogZGxscy9kZHJhdy9kZHJhd19wcml2YXRlLmg6CglSZW1vdmVkIHVudXNlZCBEQ19GVU5DUyBwb2ludGVycy4KCjIwMDEtMDctMjcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBtaXNjL3ZlcnNpb24uYzoKCUJvYiBHb29kd2luIDxnb29kaWUxQHBhY2JlbGwubmV0PgoJRml4IHRoZSAxNmJpdCB3aW45NSB2ZXJzaW9uLgoKCSogdG9vbHMvd2luZW1ha2VyOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVB1dCB0aGUgcGVyIHByb2plY3QgcGF0aHMgYmVmb3JlIHRoZSB3aW5lIHBhdGhzLgoJUmVtb3ZlIHVubmVjZXNzYXJ5IGxpYnJhcmllcyBmcm9tIHRoZSB3aW5lIGxpbmsgdGVzdC4KCU1vdmUgRExMX0xJTksgZnJvbSBjb25maWd1cmUuaW4gdG8gdGhlIE1ha2UucnVsZXMgZmlsZS4KCgkqIGRsbHMvY29tbWRsZy9wcmludGRsZy5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJRG9uJ3QgY3Jhc2ggaWYgRGV2aWNlQ2FwYWJpbGl0aWVzKERDX1BBUEVSTkFNRVMpIGZhaWxzLgoKCSogZGxscy9NYWtlZmlsZS5pbiwgZGxscy9kZHJhdy9NYWtlZmlsZS5pbiwgZGxscy9kZHJhdy9kZHJhdy5zcGVjLAoJICBkbGxzL29wZW5nbDMyL01ha2VmaWxlLmluLCBkbGxzL29wZW5nbDMyL29wZW5nbDMyLnNwZWM6CglBZGRlZCBtaXNzaW5nIG50ZGxsIGltcG9ydHMuCgoJKiBkbGxzL3dpbmVwcy9pbml0LmMsIGRsbHMvd2luZXBzL3dpbmVwcy5zcGVjLAoJICBkbGxzL3gxMWRydi94MTFkcnYuc3BlYywgZ3JhcGhpY3MvTWFrZWZpbGUuaW4sIGdyYXBoaWNzL2RyaXZlci5jLAoJICBncmFwaGljcy93aW4xNmRydi9pbml0LmMsIGdyYXBoaWNzL3gxMWRydi9iaXRtYXAuYywKCSAgZ3JhcGhpY3MveDExZHJ2L2luaXQuYywgZ3JhcGhpY3MveDExZHJ2L29lbWJpdG1hcC5jLCBpbmNsdWRlL2dkaS5oLAoJICBpbmNsdWRlL3gxMWRydi5oLCBvYmplY3RzL2RjLmMsIGRsbHMvZ2RpL01ha2VmaWxlLmluLAoJICBkbGxzL2dkaS9kcml2ZXIuYywgZGxscy9nZGkvZ2RpX21haW4uYywgZGxscy90dHlkcnYvYml0bWFwLmMsCgkgIGRsbHMvdHR5ZHJ2L2RjLmMsIGRsbHMvdHR5ZHJ2L3R0eWRydi5zcGVjOgoJQnVpbGQgdGhlIERDIGZ1bmN0aW9uIHRhYmxlIGJ5IHVzaW5nIEdldFByb2NBZGRyZXNzIG9uIHRoZSBncmFwaGljcwoJZHJpdmVyIG1vZHVsZS4gTW92ZWQgZHJpdmVyIHN1cHBvcnQgdG8gZGxscy9nZGkuCgoyMDAxLTA3LTI2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9NYWtlZmlsZS5pbiwgZGxscy9kZHJhdy9NYWtlZmlsZS5pbiwgZGxscy9kZHJhdy9kZHJhdy5zcGVjOgoJUmVtb3ZlZCBpbXBvcnQgb2YgeDExZHJ2IGZyb20gZGRyYXcuCgoJKiBkbGxzL2RpbnB1dC9kaW5wdXRfbWFpbi5jLCBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jLAoJICBsb2FkZXIvZG9zL2Rvc21vZC5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIHdhcm5pbmdzLgoKCSogZGxscy9vbGVhdXQzMi9vbGVhdXQuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRG9jdW1lbnRhdGlvbiBmaXhlcy4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaDoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQ2xlYW51cC9yZW1vdmFsIG9mIHVubmVzc2FyeSB0aGluZ3MgdGhhdCB3b3VsZCBoYXZlIG1hZGUgd2luYXBpXyoKCXBhcnNpbmcgbW9yZSBjb21wbGljYXRlZC4KCgkqIGRsbHMva2VybmVsL2NvbW0uYywgaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2ludXNlci5oOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIE1vdmVkIGNvbW0gcmVsYXRlZCBwcm90b3lwZXMgdG8gdGhlIGNvcnJlY3QgLmggZmlsZS4KCS0gQ2xlYW5lZCB1cCB0aGUgaW5jbHVkZSBzZWN0aW9uLgoKCSogaW5jbHVkZS93aW5lL3BvcnQuaDoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJUmVtb3ZlZCBpbmNsdXNpb24gb2Ygd2lubnQuaCBiZWNhdXNlIHRoZSBwb3J0aW5nIGxheWVyIHNob3VsZG4ndAoJaW5jbHVkZSBXaW5kb3dzIHNwZWNpZmljIHN0dWZmLgoKCSogZGxscy93aW5lcHMvYWZtLmMsIGRsbHMvd2luZXBzL2luaXQuYywgZGxscy93aW5lcHMvcHMuYywKCSAgZGxscy93aW5lcHMvcHNkcnYuaCwgZGxscy93aW5lcHMvdHJ1ZXR5cGUuYzoKCUlhbiBQaWxjaGVyIDxpYW4ucGlsY2hlckBob21lLmNvbT4KCVJld3JpdGUgVHJ1ZVR5cGUgZm9udCBtZXRyaWMgcGFyc2luZyBjb2RlLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMuZGF0LCB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5wbSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL25hdGl2ZWFwaS5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaS5wbSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9jaGVjaywKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9nbG9iYWwucG0sCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfcGFyc2VyLnBtLCB0b29scy93aW5hcGkvY29uZmlnLnBtLAoJICB0b29scy93aW5hcGkvbWFrZV9maWx0ZXIsIHRvb2xzL3dpbmFwaS9tYWtlX2ZpbHRlcl9vcHRpb25zLnBtLAoJICB0b29scy93aW5hcGkvbWFrZV9wYXJzZXIucG0sIHRvb2xzL3dpbmFwaS9vcHRpb25zLnBtLAoJICB0b29scy93aW5hcGkvb3V0cHV0LnBtLCB0b29scy93aW5hcGkvdHlwZS5wbSwKCSAgdG9vbHMvd2luYXBpL3dpbmFwaV9jaGVja19vcHRpb25zLnBtLCB0b29scy93aW5hcGkvd2luYXBpX2V4dHJhY3QsCgkgIHRvb2xzL3dpbmFwaS93aW5hcGlfZXh0cmFjdF9vcHRpb25zLnBtLCB0b29scy93aW5hcGkvd2luYXBpX2ZpeHVwOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIEEgZmV3IG1vcmUgYnVnIGZpeGVzCgktIFJlb3JnYW5pemF0aW9uIGNvbnRpbnVlcwoJLSBOZXcgdG9vbCAobWFrZV9maWx0ZXIpIGZvciBmaWx0ZXJpbmcgbWFrZSBvdXRwdXQgYWRkZWQKCgkqIGRsbHMvbnRkbGwvbWlzYy5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBhIHR5cG8uCgoJKiBncmFwaGljcy94MTFkcnYvYml0Ymx0LmM6CglCaWxsIE1lZGxhbmQgPG1lZGJpMDFAYWNjcGFjLmNvbT4KCURvbid0IGlubGluZSBwZXJmZWN0X2dyYXBoaWNzKCkuCgoJKiBpbmNsdWRlL2NhbGxiYWNrLmgsIGluY2x1ZGUvaG9vay5oLCBsb2FkZXIvbW9kdWxlLmMsIGxvYWRlci90YXNrLmMsCgkgIHNjaGVkdWxlci9wcm9jZXNzLmMsIGRsbHMvdXNlci91c2VyX21haW4uYywgaWYxNjMyL3RodW5rLmM6CglSZW1vdmVkIGEgZmV3IHVubmVjZXNzYXJ5IENhbGxvdXRzLgoKCSogaW5jbHVkZS9xdWV1ZS5oLCBpbmNsdWRlL3dpbmUvd2ludXNlcjE2LmgsIHdpbmRvd3MvY2xpcGJvYXJkLmMsCgkgIHdpbmRvd3MvZm9jdXMuYywgd2luZG93cy9ob29rLmMsIHdpbmRvd3MvaW5wdXQuYywKCSAgd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3MvcXVldWUuYywgd2luZG93cy90aW1lci5jLAoJICB3aW5kb3dzL3VzZXIuYywgd2luZG93cy93aW4uYywgd2luZG93cy93aW5wb3MuYywKCSAgZGxscy94MTFkcnYvZGVza3RvcC5jOgoJQXZvaWQgdXNpbmcgR2V0RmFzdFF1ZXVlMTYgZnJvbSBVU0VSLgoKCSogZGxscy91c2VyL3RleHQuYywgaW5jbHVkZS93aW51c2VyLmg6CglUcmF2aXMgTWljaGllbHNlbiA8dGptaWNoaWVsc2VuQHlhaG9vLmNvbT4KCUZ1bGx5IGltcGxlbWVudCBEcmF3VGV4dEV4KiBmdW5jdGlvbnMuCgoJKiBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglCZSBhIGJpdCBtb3JlIGdyYWNlZnVsIG9uIE5VTEwgcHJvcGVydHkgc2hlZXQgdGl0bGVzLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJLSBPbiBUQl9TRVRJTUFHRUxJU1QgcmV0cmlldmUgbmV3IHZhbHVlcyBvZiB0aGUgYml0bWFwIHdpZHRoIGFuZAoJICBoZWlnaHQgKGZpeGVzIG92ZXJsYXAgb2YgaW1hZ2UgYW5kIHRleHQgaW4gSUU0KS4KCS0gSGFuZGxlIHJldHVybiBjb2RlcyBmcm9tIFRCTl9EUk9QRE9XTiAoYWxsb3dzIGEgImRyb3Bkb3duIiB0byBiZQoJICB0cmVhdGVkIGxpa2UgYSByZWd1bGFyIGJ1dHRvbikuCgktIEltcGxlbWVudCBUQk5fQkVHSU5EUkFHIGFuZCBUQk5fRU5ERFJBRyBpbiBXTV9MQlVUVE9Oe0RPV058VVB9IChub3QKCSAgbmVjZXNzYXJ5IGJ1dCBkb25lIGJ5IG5hdGl2ZSkuCgktIEltcGxlbWVudCBOTV9SRUxFQVNFRENBUFRVUkUgYW5kIE5NX0NMSUNLLgoKCSogaW5jbHVkZS9jb21tY3RybC5oOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCUFkZCB2YWx1ZXMgdG8gZGVzY3JpYmUgcmV0dXJuIHZhbHVlcyBmcm9tIFdNX05PVElGWSBvZiBUQk5fRFJPUERPV04uCgoJKiBNYWtlLnJ1bGVzLmluOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQHN0YXJ0LmNvbS5hdT4KCUNvcnJlY3QgbWFuIHBhZ2Ugc3BlYyBkaXJlY3RvcnkuCgoyMDAxLTA3LTI1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy93aW5wb3MuYywgd2luZG93cy94MTFkcnYvZXZlbnQuYywgbG9hZGVyL25lL21vZHVsZS5jLAoJICBtZW1vcnkvZ2xvYmFsLmMsIG1lbW9yeS9sb2NhbC5jLCBtZW1vcnkvcmVnaXN0cnkuYywKCSAgbXNkb3MvZG9zYXNwaS5jLCBvYmplY3RzL2JpdG1hcC5jLCBvYmplY3RzL3JlZ2lvbi5jLAoJICBvYmplY3RzL3RleHQuYywgcmVsYXkzMi9idWlsdGluMzIuYywgc2NoZWR1bGVyL2NyaXRzZWN0aW9uLmMsCgkgIHNjaGVkdWxlci90aHJlYWQuYywgd2luMzIvZGV2aWNlLmMsIHdpbmRvd3MvZHJpdmVyLmMsCgkgIHdpbmRvd3MvaW5wdXQuYywgd2luZG93cy9rZXlib2FyZC5jLCB3aW5kb3dzL3BhaW50aW5nLmMsCgkgIGdyYXBoaWNzL2VuaG1ldGFmaWxlZHJ2L2dyYXBoaWNzLmMsCgkgIGdyYXBoaWNzL2VuaG1ldGFmaWxlZHJ2L29iamVjdHMuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvYml0Ymx0LmMsCgkgIGdyYXBoaWNzL21ldGFmaWxlZHJ2L2dyYXBoaWNzLmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L29iamVjdHMuYywKCSAgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvdGV4dC5jLCBncmFwaGljcy93aW4xNmRydi9ncmFwaGljcy5jLAoJICBncmFwaGljcy94MTFkcnYvYml0bWFwLmMsIGdyYXBoaWNzL3gxMWRydi9jbGlwcGluZy5jLAoJICBncmFwaGljcy94MTFkcnYvY29kZXBhZ2UuYywgZ3JhcGhpY3MveDExZHJ2L29lbWJpdG1hcC5jLAoJICBncmFwaGljcy94MTFkcnYvdGV4dC5jLCBpZjE2MzIvYnVpbHRpbi5jLCBpZjE2MzIvcmVsYXkuYywKCSAgaWYxNjMyL3RodW5rLmMsIGRsbHMvd2luc29jay9hc3luYy5jLCBkbGxzL3dzb2NrMzIvcHJvdG9jb2wuYywKCSAgZ3JhcGhpY3MvcGFpbnRpbmcuYywgZGxscy91c2VyL25ldHdvcmsuYywgZGxscy93aW5hc3BpL3dpbmFzcGkxNi5jLAoJICBkbGxzL3dpbmFzcGkvd2luYXNwaTMyLmMsIGRsbHMvd2luaW5ldC9mdHAuYywKCSAgZGxscy93aW5tbS9tY2l3YXZlL21jaXdhdmUuYywgZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmMsCgkgIGRsbHMvd2lubW0vd2luZW9zcy9taWRpLmMsIGRsbHMvbXNhY20vZHJpdmVyLmMsIGRsbHMvbnRkbGwvcnRsLmMsCgkgIGRsbHMvbnRkbGwvcnRsc3RyLmMsIGRsbHMvbnRkbGwvc2VjLmMsIGRsbHMvb2xlMzIvYmluZGN0eC5jLAoJICBkbGxzL29sZTMyL2Vycm9yaW5mby5jLCBkbGxzL29sZTMyL21vbmlrZXIuYywgZGxscy9vbGUzMi9vbGUybmxzLmMsCgkgIGRsbHMvb2xlYXV0MzIvZGlzcGF0Y2guYywgZGxscy9vbGVhdXQzMi9vbGVhdXQuYywKCSAgZGxscy9vbGVhdXQzMi9zdHVicy5jLCBkbGxzL3JpY2hlZGl0L3JpY2hlZGl0LmMsCgkgIGRsbHMvc2V0dXBhcGkvZGV2aW5zdC5jLCBkbGxzL3NldHVwYXBpL2luZnBhcnNlLmMsCgkgIGRsbHMvc2V0dXBhcGkvdmlydGNvcHkuYywgZGxscy9zaGVsbDMyL21lbW9yeXN0cmVhbS5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGxzdHJpbmcuYywgZGxscy9zaGVsbDMyL3N5c3RyYXkuYywKCSAgZGxscy9zaGx3YXBpL3JlZ3N0cmVhbS5jLCBkbGxzL3R0eWRydi9ncmFwaGljcy5jLAoJICBjb250cm9scy9kZXNrdG9wLmMsIGNvbnRyb2xzL2ljb250aXRsZS5jLCBjb250cm9scy9zdGF0aWMuYywKCSAgZGxscy9jb21jdGwzMi9pcGFkZHJlc3MuYywgZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jLAoJICBkbGxzL2NvbW1kbGcvZmlsZWRsZ2Jyb3dzZXIuYywgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWFpbi5jLAoJICBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsIGRsbHMvZGRyYXcvZDNkZXhlY3V0ZWJ1ZmZlci5jLAoJICBkbGxzL2RkcmF3L2QzZGxpZ2h0LmMsIGRsbHMvZGRyYXcvZDNkbWF0ZXJpYWwuYywKCSAgZGxscy9kZHJhdy9kM2R0ZXh0dXJlLmMsIGRsbHMvZGRyYXcvZDNkdmlld3BvcnQuYywKCSAgZGxscy9kZHJhdy9oZWxwZXIuYywgZGxscy9kcGxheXgvZHBsYXlzcC5jLAoJICBkbGxzL2RwbGF5eC9kcGxheXhfZ2xvYmFsLmMsIGRsbHMva2VybmVsL3Rvb2xoZWxwLmMsCgkgIGRsbHMva2VybmVsL3dvd3RodW5rLmMsIGRsbHMvbXByL21wcl9tYWluLmMsIGNvbnRyb2xzL2NvbWJvLmM6CglSZW1vdmVkIHVubmVjZXNzYXJ5IGluY2x1c2lvbiBvZiBoZWFwLmguCgoyMDAxLTA3LTI0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZ3JhcGhpY3MvZW5obWV0YWZpbGVkcnYvaW5pdC5jLCBpbmNsdWRlL2VuaG1ldGFmaWxlLmgsCgkgIGluY2x1ZGUvZ2RpLmgsIG9iamVjdHMvZW5obWV0YWZpbGUuYzoKCVJlbW92ZWQgZW5obWV0YWZpbGUuaC4gU2ltcGxpZmllZCBFTkhNRVRBRklMRU9CSiBzdHJ1Y3R1cmUgYSBiaXQuCgoJKiBpbmNsdWRlL2hlYXAuaCwgaW5jbHVkZS9tb2R1bGUuaCwgbG9hZGVyL2VsZi5jLCBsb2FkZXIvbG9hZG9yZGVyLmMsCgkgIGxvYWRlci9tb2R1bGUuYywgbXNkb3MvaW50MjEuYywgcmVsYXkzMi9zbm9vcC5jLAoJICB3aW5kb3dzL2NsaXBib2FyZC5jLCBkbGxzL3VzZXIvbHN0ci5jLCBkbGxzL3dpbmVwcy9hZm0uYywKCSAgZGxscy93aW5lcHMvZXNjYXBlLmMsIGRsbHMvd2luZXBzL2luaXQuYywgZGxscy93aW5lcHMvcHBkLmMsCgkgIGRsbHMvd2luZXBzL3RydWV0eXBlLmMsIGRsbHMvd2lubW0vbWNpLmMsIGRsbHMvd2lubW0vbW1zeXN0ZW0uYywKCSAgZmlsZXMvZG9zX2ZzLmMsIGZpbGVzL2RyaXZlLmMsIGZpbGVzL3Byb2ZpbGUuYywgZ3JhcGhpY3MvZHJpdmVyLmMsCgkgIGdyYXBoaWNzL2Vudi5jLCBncmFwaGljcy93aW4xNmRydi9wcnRkcnYuYywKCSAgZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsIGlmMTYzMi9zbm9vcC5jLCBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jLAoJICBkbGxzL2dkaS9wcmludGRydi5jLCBkbGxzL2tlcm5lbC9mb3JtYXRfbXNnLmMsCgkgIGRsbHMvc2V0dXBhcGkvc2V0dXB4X21haW4uYywgZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmM6CglSZW1vdmVkIEhFQVBfc3RyZHVwQS4KCgkqIGRsbHMvd2luZXBzL2RhdGEvUGFsYXRpbm9fQm9sZEl0YWxpYy5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL1BhbGF0aW5vX0l0YWxpYy5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL1BhbGF0aW5vX1JvbWFuLmMsIGRsbHMvd2luZXBzL2RhdGEvU3ltYm9sLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvVGltZXNfQm9sZC5jLCBkbGxzL3dpbmVwcy9kYXRhL1RpbWVzX0JvbGRJdGFsaWMuYywKCSAgZGxscy93aW5lcHMvZGF0YS9UaW1lc19JdGFsaWMuYywgZGxscy93aW5lcHMvZGF0YS9UaW1lc19Sb21hbi5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL1phcGZDaGFuY2VyeV9NZWRpdW1JdGFsaWMuYywKCSAgZGxscy93aW5lcHMvZGF0YS9aYXBmRGluZ2JhdHMuYywgZGxscy93aW5lcHMvZGF0YS9hZ2wuYywKCSAgZGxscy93aW5lcHMvZGF0YS9hZ2wuaCwgZGxscy93aW5lcHMvZGF0YS9BdmFudEdhcmRlX0Jvb2suYywKCSAgZGxscy93aW5lcHMvZGF0YS9BdmFudEdhcmRlX0Jvb2tPYmxpcXVlLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvQXZhbnRHYXJkZV9EZW1pLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvQXZhbnRHYXJkZV9EZW1pT2JsaXF1ZS5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0Jvb2ttYW5fRGVtaS5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0Jvb2ttYW5fRGVtaUl0YWxpYy5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0Jvb2ttYW5fTGlnaHQuYywKCSAgZGxscy93aW5lcHMvZGF0YS9Cb29rbWFuX0xpZ2h0SXRhbGljLmMsIGRsbHMvd2luZXBzL2RhdGEvQ291cmllci5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0NvdXJpZXJfQm9sZC5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0NvdXJpZXJfQm9sZE9ibGlxdWUuYywKCSAgZGxscy93aW5lcHMvZGF0YS9Db3VyaWVyX09ibGlxdWUuYywgZGxscy93aW5lcHMvZGF0YS9IZWx2ZXRpY2EuYywKCSAgZGxscy93aW5lcHMvZGF0YS9IZWx2ZXRpY2FfQm9sZC5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0hlbHZldGljYV9Cb2xkT2JsaXF1ZS5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0hlbHZldGljYV9OYXJyb3cuYywKCSAgZGxscy93aW5lcHMvZGF0YS9IZWx2ZXRpY2FfTmFycm93X0JvbGQuYywKCSAgZGxscy93aW5lcHMvZGF0YS9IZWx2ZXRpY2FfTmFycm93X0JvbGRPYmxpcXVlLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvSGVsdmV0aWNhX05hcnJvd19PYmxpcXVlLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvSGVsdmV0aWNhX09ibGlxdWUuYywKCSAgZGxscy93aW5lcHMvZGF0YS9OZXdDZW50dXJ5U2NobGJrX0JvbGQuYywKCSAgZGxscy93aW5lcHMvZGF0YS9OZXdDZW50dXJ5U2NobGJrX0JvbGRJdGFsaWMuYywKCSAgZGxscy93aW5lcHMvZGF0YS9OZXdDZW50dXJ5U2NobGJrX0l0YWxpYy5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL05ld0NlbnR1cnlTY2hsYmtfUm9tYW4uYywKCSAgZGxscy93aW5lcHMvZGF0YS9QYWxhdGlub19Cb2xkLmMsIGRsbHMvd2luZXBzL21rYWdsLmMsCgkgIGRsbHMvd2luZXBzL3BzZHJ2Lmg6CglJYW4gUGlsY2hlciA8aWFuLnBpbGNoZXJAaG9tZS5jb20+CglNYWtlIGJ1aWx0LWluIGZvbnQgZGF0YSByZWFkLW9ubHkuCgoJKiBvYmplY3RzL2RjdmFsdWVzLmM6CglHb3QgcmlkIG9mIGFsbCB0aGUgdWdseSBtYWNyb3MuCgoJKiBkbGxzL3dpbmVwcy9hZm0uYywgZGxscy93aW5lcHMvZm9udC5jLCBkbGxzL3dpbmVwcy9nbHlwaGxpc3QuYywKCSAgZGxscy93aW5lcHMvaW5pdC5jLCBkbGxzL3dpbmVwcy9wc2Rydi5oLCBkbGxzL3dpbmVwcy90cnVldHlwZS5jOgoJSWFuIFBpbGNoZXIgPGlhbi5waWxjaGVyQGhvbWUuY29tPgoJTW9kaWZ5IGluaXQgY29kZSB0byBoYW5kbGUgY29uc3QgZGF0YSB0eXBlcy4KCgkqIGRsbHMva2VybmVsL2NvbW0uYywgZGxscy9rZXJuZWwva2VybmVsX21haW4uYywKCSAgZGxscy91c2VyL01ha2VmaWxlLmluLCBkbGxzL3VzZXIvY29tbTE2LmMsIGRsbHMvdXNlci91c2VyX21haW4uYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0BzdGFydC5jb20uYXU+CglNb3ZlIDE2LWJpdCBDT01NIGNvZGUgdG8gVVNFUiBkbGwuCgoJKiBjb250cm9scy9idXR0b24uYywgY29udHJvbHMvY29tYm8uYywgY29udHJvbHMvZWRpdC5jLAoJICBjb250cm9scy9pY29udGl0bGUuYywgY29udHJvbHMvbGlzdGJveC5jLCBjb250cm9scy9zY3JvbGwuYywKCSAgY29udHJvbHMvc3RhdGljLmM6CglKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglXTkRQUk9DIGhhbmRsZXJzIG5vdyBjaGVjayB3aGV0aGVyIEhXTkQgYXJndW1lbnQgaXMgdmFsaWQuCgoJKiBkbGxzL29sZWF1dDMyL29sZWF1dC5jLCBkbGxzL29sZWF1dDMyL29sZWF1dDMyLnNwZWMsCgkgIGRsbHMvb2xlYXV0MzIvb2xlZm9udC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglPTEVBVVQzMi5EbGxHZXRDbGFzc09iamVjdCBhbmQgc3VwcG9ydCBmb3IgdGhlIE9sZSBTdGRGb250IGFkZGVkIChqdXN0CglnaXZpbmcgYmFjayBhIDggcG9pbnQgU3lzdGVtIGZvbnQgZm9yIG5vdykuCgoJKiBvYmplY3RzL2RjdmFsdWVzLmMsIHNjaGVkdWxlci9jcml0c2VjdGlvbi5jLCBzY2hlZHVsZXIvc3lzZGVwcy5jLAoJICBzY2hlZHVsZXIvdGhyZWFkLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCURvY3VtZW50YXRpb24gZml4ZXMuCgoyMDAxLTA3LTIzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jLCBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGUzMi9pZnMuYywKCSAgZGxscy9vbGUzMi9pZnMuaCwgZGxscy9vbGUzMi9vbGUyLmMsIGRsbHMvb2xlYXV0MzIvb2xlMmRpc3AuYywKCSAgZGxscy9vbGVhdXQzMi9vbGUyZGlzcC5oLCBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYywKCSAgZGxscy9vbGVjbGkvb2xlY2xpX21haW4uYywgZGxscy9vbGVzdnIvb2xlc3ZyX21haW4uYywKCSAgZGxscy9zaGVsbDMyL3NobG1lbnUuYywgaW5jbHVkZS9vbGUuaCwKCSAgZGxscy9semV4cGFuZC9semV4cGFuZF9tYWluLmMsIGRsbHMvbXN2Y3J0L2NwcC5jLAoJICBkbGxzL21zdmNydC9leGl0LmMsIGRsbHMvbXN2Y3J0L21iY3MuYywgZGxscy9tc3ZjcnQvbXN2Y3J0Lmg6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gTWFkZSBzdXJlIHRoYXQgdGhlIGZpbGVzIHRoYXQgY29udGFpbnMgdGhlIGRlY2xhcmF0aW9ucwoJICBvZiB0aGUgaW1wbGVtZW50YXRlZCBmdW5jdGlvbnMgYXJlIGluY2x1ZGVkLgoJLSBDb3JyZWN0ZWQgbWlzbWF0Y2hpbmcgcHJvdG90eXBlcy4KCS0gQ2xlYW5lZCB1cCB0aGUgaW5jbHVkZSBzZWN0aW9uLgoKCSogZGxscy93aW5lcHMvZm9udC5jOgoJSWFuIFBpbGNoZXIgPGlhbi5waWxjaGVyQGhvbWUuY29tPgoJVXNlIFdpbmRvd3MgbWV0cmljcyBmb3IgZm9udCBzY2FsaW5nLgoKCSogdG9vbHMvd2luYXBpL2NvbmZpZy5wbSwgdG9vbHMvd2luYXBpL29wdGlvbnMucG0sCgkgIHRvb2xzL3dpbmFwaS9vdXRwdXQucG0sIHRvb2xzL3dpbmFwaS93aW5hcGlfY2hlY2tfb3B0aW9ucy5wbSwKCSAgdG9vbHMvd2luYXBpL3dpbmFwaV9leHRyYWN0LAoJICB0b29scy93aW5hcGkvd2luYXBpX2V4dHJhY3Rfb3B0aW9ucy5wbSwgdG9vbHMvd2luYXBpL3dpbmFwaV9maXh1cCwKCSAgdG9vbHMvd2luYXBpL3dpbmFwaV9maXh1cF9vcHRpb25zLnBtLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2NoZWNrLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2RvY3VtZW50YXRpb24ucG0sCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfZnVuY3Rpb24ucG0sCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfZ2xvYmFsLnBtLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2xvY2FsLnBtLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX29wdGlvbnMucG0sCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfcGFyc2VyLnBtOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglZZXQgYW5vdGhlciBtYWpvciByZW9yZ2FuaXphdGlvbiBhbmQgYSBmZXcgbmV3IGZlYXR1cmVzLgoKCSogZmlsZXMvZmlsZS5jLCBzZXJ2ZXIvZmlsZS5jOgoJQmVybmhhcmQgUm9zZW5rcmFlbnplciA8YmVyb0ByZWRoYXQuZGU+CglTZXQgZXhlY3V0YWJsZSBwZXJtaXNzaW9ucyB3aGVuIGNyZWF0aW5nIC5leGUvLmNvbSBmaWxlcy4KCgkqIGRsbHMvbXN2Y3J0L2ZpbGUuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUGFzcyBoYW5kbGUgdG8gR2V0RmlsZVR5cGUsIG5vdCBNU1ZDUlQgZmQuCgoJKiBkbGxzL2tlcm5lbC9jb21tLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAc3RhcnQuY29tLmF1PgoJUmV3cml0ZSBCdWlsZENvbW1EQ0IxNiB0byBkZXBlbmQgb24gQnVpbGRDb21tRENCLCBub3QgdmljZS12ZXJzYS4KCgkqIGRsbHMvd2luZXBzL2FmbS5jLCBkbGxzL3dpbmVwcy9kYXRhL2FnbC5jLCBkbGxzL3dpbmVwcy9nbHlwaGxpc3QuYywgZGxscy93aW5lcHMvbWthZ2wuYzoKCUlhbiBQaWxjaGVyIDxpYW4ucGlsY2hlckBob21lLmNvbT4KCU9ubHkgaW5kZXggZ2x5cGggbmFtZXMgd2hlbiBuZWNlc3NhcnkuCgoJKiBpbmNsdWRlL2xvYWRvcmRlci5oLCBpbmNsdWRlL21ldGFmaWxlLmgsIGluY2x1ZGUvbW9kdWxlLmgsCgkgIGluY2x1ZGUvb3B0aW9ucy5oLCBsb2FkZXIvbG9hZG9yZGVyLmMsIGxvYWRlci9tYWluLmMsCgkgIGxvYWRlci9tb2R1bGUuYywgbG9hZGVyL25lL21vZHVsZS5jLCBtaXNjL29wdGlvbnMuYywKCSAgb2JqZWN0cy9mb250LmMsIG9iamVjdHMvbWV0YWZpbGUuYywgd2luZG93cy9jbGFzcy5jLAoJICB3aW5kb3dzL3VzZXIuYywgd2luZG93cy94MTFkcnYvZXZlbnQuYywgd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYywKCSAgZGxscy90dHlkcnYvdHR5ZHJ2X21haW4uYywgZGxscy93aW5hc3BpL3dpbmFzcGkzMi5jLAoJICBkbGxzL3dpbmVwcy9iaXRtYXAuYywgZGxscy94MTFkcnYveDExZHJ2X21haW4uYywKCSAgZ3JhcGhpY3Mvd2luMTZkcnYvcHJ0ZHJ2LmMsIGdyYXBoaWNzL3gxMWRydi9iaXRibHQuYywKCSAgZ3JhcGhpY3MveDExZHJ2L2dyYXBoaWNzLmMsIGdyYXBoaWNzL3gxMWRydi9vZW1iaXRtYXAuYywKCSAgZ3JhcGhpY3MveDExZHJ2L3BhbGV0dGUuYywgZGVidWdnZXIvZGVidWdnZXIuaCwgZGVidWdnZXIvaW5mby5jLAoJICBkZWJ1Z2dlci9tZW1vcnkuYywgZGVidWdnZXIvbW9kdWxlLmMsIGRlYnVnZ2VyL21zYy5jLAoJICBkZWJ1Z2dlci93aW5lZGJnLmMsIGRsbHMvZGRyYXcvZGRyYXcvaGFsLmMsCgkgIGRsbHMvZGRyYXcvZGRyYXcvbWFpbi5jLCBkbGxzL2RkcmF3L2RpcmVjdDNkL21haW4uYywKCSAgZGxscy9kZHJhdy9kaXJlY3QzZC9tZXNhLmMsIGRsbHMvZGRyYXcvaGVscGVyLmMsCgkgIGRsbHMvZ2RpL3ByaW50ZHJ2LmMsIGRsbHMvc2V0dXBhcGkvdmlydGNvcHkuYzoKCVJlbW92ZWQgc29tZSB1bm5lY2Vzc2FyeSBpbmNsdWRlcy4KCjIwMDEtMDctMjIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3dpbmVwcy9hZm0uYywgZGxscy93aW5lcHMvZGF0YS9hZ2wuYywgZGxscy93aW5lcHMvZGF0YS9hZ2wuaCwKCSAgZGxscy93aW5lcHMvbWthZ2wuYywgZGxscy93aW5lcHMvcHNkcnYuaDoKCUlhbiBQaWxjaGVyIDxpYW4ucGlsY2hlckBob21lLmNvbT4KCUVsaW1pbmF0ZSBVTklDT0RFVkVDVE9SIGRhdGEgdHlwZS4KCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywgZGxscy9kZHJhdy9tZXNhX3ByaXZhdGUuaCwKCSAgaW5jbHVkZS93aW5lX2dsLmg6CglDb21tZW50ZWQgb3V0IHJlZmVyZW5jZXMgdG8geDExZHJ2IGludGVybmFscyBmcm9tIE1FU0EgY29kZS4KCgkqIGdyYXBoaWNzL2VuaG1ldGFmaWxlZHJ2L29iamVjdHMuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvb2JqZWN0cy5jLAoJICBncmFwaGljcy93aW4xNmRydi9icnVzaC5jLCBncmFwaGljcy93aW4xNmRydi9mb250LmMsCgkgIGdyYXBoaWNzL3dpbjE2ZHJ2L29iamVjdHMuYywgZ3JhcGhpY3Mvd2luMTZkcnYvcGVuLmMsCgkgIGluY2x1ZGUvd2luMTZkcnYuaCwgZGxscy90dHlkcnYvb2JqZWN0cy5jLCBkbGxzL3dpbmVwcy9icnVzaC5jLAoJICBkbGxzL3dpbmVwcy9mb250LmMsIGRsbHMvd2luZXBzL29iamVjdHMuYywgZGxscy93aW5lcHMvcGVuLmMsCgkgIGRsbHMvd2luZXBzL3BzZHJ2Lmg6CglSZW1vdmVkIHNvbWUgZGlyZWN0IGFjY2Vzc2VzIHRvIEdESSBpbnRlcm5hbCBwZW4vYnJ1c2gvZm9udAoJc3RydWN0dXJlcy4KCgkqIHdpbmRvd3Mvc3B5LmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJLSBJZiB0aGUgY2xhc3Mgb2YgdGhlIHdpbmRvdyBpcyBhIGtub3duIHN0YW5kYXJkLCB0aGVuIGZvcm1hdCB0aGUgbmFtZQoJICBvZiB0aGUgV01fVVNFUitubm4gbWVzc2FnZXMgaWYgcG9zc2libGUuCgktIEZpeCBjYXNlIHdoZXJlIHRoZSBjbGFzc25hbWUgcmV0dXJuZWQgd2FzIHRydW5jYXRlZCBhbmQgbm90IHByaW50ZWQKCSAgYXQgYWxsLgoJLSBJc3N1ZSBlcnJvcnMgaWYgZWl0aGVyIHRoZSBOb3RpZnkgb3IgY29tbW9uIGNvbnRyb2wgbWVzc2FzZ2UgbGlzdHMKCSAgYXJlIG91dCBvZiBvcmRlci4KCS0gUHJlcGFyZSB0byBkdW1wIG91dCBjb250cm9sIGJsb2NrIHN0cnVjdHVyZXMgcG9pbnRlZCB0byBieSBscGFyYW0KCSAgZm9yIG1lc3NhZ2VzLgoKCSogZGxscy90dHlkcnYvYml0bWFwLmMsIGRsbHMvdHR5ZHJ2L2RjLmMsIGRsbHMvdHR5ZHJ2L3R0eWRydi5oLAoJICBkbGxzL3dpbmVwcy9pbml0LmMsIGdyYXBoaWNzL2VuaG1ldGFmaWxlZHJ2L2luaXQuYywKCSAgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvaW5pdC5jLCBncmFwaGljcy93aW4xNmRydi9pbml0LmMsCgkgIGdyYXBoaWNzL3gxMWRydi9kaWIuYywgZ3JhcGhpY3MveDExZHJ2L2luaXQuYywgaW5jbHVkZS9iaXRtYXAuaCwKCSAgaW5jbHVkZS9nZGkuaCwgaW5jbHVkZS94MTFkcnYuaCwgb2JqZWN0cy9iaXRtYXAuYywgb2JqZWN0cy9kaWIuYywKCSAgZGxscy9nZGkvd2luZy5jOgoJTW92ZWQgdGhlIDE2LWJpdCBwb2ludGVyIHRvIHRoZSBESUIgYml0cyBvdXQgb2YgdGhlIGRyaXZlci1zcGVjaWZpYwoJc3RydWN0dXJlIGFuZCBpbnRvIHRoZSBtYWluIGJpdG1hcCBzdHJ1Y3R1cmUuIFJlbW92ZWQKCUNyZWF0ZURJQlNlY3Rpb24xNiBmcm9tIHRoZSBkcml2ZXIgaW50ZXJmYWNlLgoKCSogY29udHJvbHMvbWVudS5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGluY2x1ZGUvaGVhcC5oLCB3aW5kb3dzL21kaS5jOgoJR290IHJpZCBvZiBIRUFQX3N0cmR1cFcuCgoJKiBkbGxzL3dpbmVwcy9kYXRhL0F2YW50R2FyZGVfQm9vay5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0F2YW50R2FyZGVfQm9va09ibGlxdWUuYywKCSAgZGxscy93aW5lcHMvZGF0YS9BdmFudEdhcmRlX0RlbWkuYywKCSAgZGxscy93aW5lcHMvZGF0YS9BdmFudEdhcmRlX0RlbWlPYmxpcXVlLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvQm9va21hbl9EZW1pLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvQm9va21hbl9EZW1pSXRhbGljLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvQm9va21hbl9MaWdodC5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0Jvb2ttYW5fTGlnaHRJdGFsaWMuYywgZGxscy93aW5lcHMvZGF0YS9Db3VyaWVyLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvQ291cmllcl9Cb2xkLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvQ291cmllcl9Cb2xkT2JsaXF1ZS5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0NvdXJpZXJfT2JsaXF1ZS5jLCBkbGxzL3dpbmVwcy9kYXRhL0hlbHZldGljYS5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0hlbHZldGljYV9Cb2xkLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvSGVsdmV0aWNhX0JvbGRPYmxpcXVlLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvSGVsdmV0aWNhX05hcnJvdy5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0hlbHZldGljYV9OYXJyb3dfQm9sZC5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0hlbHZldGljYV9OYXJyb3dfQm9sZE9ibGlxdWUuYywKCSAgZGxscy93aW5lcHMvZGF0YS9IZWx2ZXRpY2FfTmFycm93X09ibGlxdWUuYywKCSAgZGxscy93aW5lcHMvZGF0YS9IZWx2ZXRpY2FfT2JsaXF1ZS5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL05ld0NlbnR1cnlTY2hsYmtfQm9sZC5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL05ld0NlbnR1cnlTY2hsYmtfQm9sZEl0YWxpYy5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL05ld0NlbnR1cnlTY2hsYmtfSXRhbGljLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvTmV3Q2VudHVyeVNjaGxia19Sb21hbi5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL1BhbGF0aW5vX0JvbGQuYywKCSAgZGxscy93aW5lcHMvZGF0YS9QYWxhdGlub19Cb2xkSXRhbGljLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvUGFsYXRpbm9fSXRhbGljLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvUGFsYXRpbm9fUm9tYW4uYywgZGxscy93aW5lcHMvZGF0YS9TeW1ib2wuYywKCSAgZGxscy93aW5lcHMvZGF0YS9UaW1lc19Cb2xkLmMsIGRsbHMvd2luZXBzL2RhdGEvVGltZXNfQm9sZEl0YWxpYy5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL1RpbWVzX0l0YWxpYy5jLCBkbGxzL3dpbmVwcy9kYXRhL1RpbWVzX1JvbWFuLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvWmFwZkNoYW5jZXJ5X01lZGl1bUl0YWxpYy5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL1phcGZEaW5nYmF0cy5jLCBkbGxzL3dpbmVwcy9wc2Rydi5oLAoJICBkbGxzL3dpbmVwcy90cnVldHlwZS5jLCBkbGxzL3dpbmVwcy9hZm0uYzoKCUlhbiBQaWxjaGVyIDxpYW4ucGlsY2hlckBob21lLmNvbT4KCVJlbW92ZSByZWR1bmRhbnQgZGF0YSBzdHJ1Y3R1cmUgZnJvbSBmb250IG1ldHJpY3MuCgoJKiBkbGxzL29sZWF1dDMyL29sZWZvbnQuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJT2xlRm9udDo6SURpc3BhdGNoOjpJbnZva2Ugc3R1YiBjYW4ganVzdCByZXR1cm4gU19PSy4KCjIwMDEtMDctMjAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3gxMWRydi93aW5kb3cuYzoKCVVzZSBBZGp1c3RXaW5kb3dSZWN0IHRvIHRyYW5zbGF0ZSBYIHRvIHdpbmRvdyByZWN0YW5nbGUgaW5zdGVhZCBvZgoJZHVwbGljYXRpbmcgd2hhdCdzIGRvbmUgaW4gbm9uY2xpZW50LmMuCgoJKiB3aW5kb3dzL25vbmNsaWVudC5jOgoJQmlsbCBNZWRsYW5kIDxtZWRiaTAxQGFjY3BhYy5jb20+CglDb3JyZWN0aW9ucyB0byB0aGUgV2luOTUgYW5kIGxhdGVyIGZyYW1lIGRyYXdpbmcgY29kZS4KCgkqIHdpbmRvd3Mvd2luLmM6IEJpbGwgTWVkbGFuZCA8bWVkYmkwMUBhY2NwYWMuY29tPgoJQWRkaXRpb25hbCBtb2RpZmljYXRpb25zIHRvIHRoZSB3aW5kb3cgc3R5bGVzIGR1cmluZyB3aW5kb3cgY3JlYXRpb24uCgoJKiBpbmNsdWRlL3dpbmUvc2hlbGwxNi5oLCBtZW1vcnkvYXRvbS5jLCBkbGxzL3dpbm1tL3dpbmVtbS5oLAoJICBkbGxzL250ZGxsL3NpZ25hbF9zcGFyYy5jLCBkbGxzL29sZTMyL2NvbXBvYmpfcHJpdmF0ZS5oLAoJICBkbGxzL29sZTMyL2Vycm9yaW5mby5jLCBkbGxzL29sZTMyL2ZpbGVtb25pa2VyLmMsCgkgIGRsbHMvb2xlMzIvaGdsb2JhbHN0cmVhbS5jLCBkbGxzL29sZTMyL21lbWxvY2tieXRlcy5jLAoJICBkbGxzL29sZTMyL29sZTJubHMuYywgZGxscy9vbGVhdXQzMi9kaXNwYXRjaC5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYywgZGxscy9zaGVsbDMyL3NoZWxscmVnLmMsCgkgIGRsbHMvc2hlbGwzMi9zaHBvbGljeS5jLCBkbGxzL2tlcm5lbC9zeW5jLmMsIGRsbHMvbXN2aWRlby92ZncxNi5oOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIE1hZGUgc3VyZSB0aGF0IHRoZSBmaWxlcyB0aGF0IGNvbnRhaW5zIHRoZSBkZWNsYXJhdGlvbnMKCSAgb2YgdGhlIGltcGxlbWVudGF0ZWQgZnVuY3Rpb25zIGFyZSBpbmNsdWRlZC4KCS0gQ29ycmVjdGVkIG1pc21hdGNoaW5nIHByb3RvdHlwZXMuCgktIENsZWFuZWQgdXAgdGhlIGluY2x1ZGUgc2VjdGlvbi4KCgkqIGluY2x1ZGUvTWFrZWZpbGUuaW46CglBZGRlZCBhIGZldyBtb3JlIGZpbGVzIHRvIHRoZSBpbnN0YWxsIGxpc3QuCgoJKiB3aW5kb3dzL3dpbnBvcy5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCVRyYWNlIHJlY3RhbmdsZXMgcmV0dXJuZWQgYnkgR2V0Q2xpZW50UmVjdCBhbmQgR2V0V2luZG93UmVjdC4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gUmVjYWxjIHRoZSB0b29sYmFyIHNpemUgb24gVEJfU0VUQlVUVE9OU0laRSBpbiBjZXJ0YWluIGNvbmRpdGlvbnMuCgktIEFkZCB0cmFjZSB0byBzaG93IHRoZSBwYWludCByZWN0YW5nbGUgcHJpb3IgdG8gcmVmcmVzaGluZy4KCgkqIGRsbHMvY29tY3RsMzIvcmViYXIuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CgktIEZpeCBoYW5kbGluZyBvZiB0ZXh0IGNvbG9yLgoJLSBDb3JyZWN0IGltcGxlbWVudGF0aW9uIG9mIFdNX1NFVFJFRFJBVyB0byBiZSBjbG9zZXIgdG8gbmF0aXZlLgoJLSBEbyBtb3JlIGltcGxlbWVudGF0aW9uIG9mIFJCU19BVVRPU0laRSBpbiB0aGUgV01fU0laRSBwcm9jZXNzb3IuCgktIEltcGxlbWVudCBSQkJTX1ZBUklBQkxFSEVJR0hULiBVc2VkIGJ5IElFNC4KCS0gRG8gbW9yZSB0ZXN0aW5nIGluIFdNX1NJWkUgdG8gaGFuZGxlIHN0cmFuZ2UgY2FzZXMgbGlrZSBuYXRpdmUuCgoJKiB3aW5kb3dzL3NweS5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCURpc3BsYXkgcmVjdGFuZ2xlIGZyb20gV01fTkNDQUxDU0laRSBvbiBlbnRyeSBhbmQgZXhpdC4KCgkqIGRsbHMvY29tY3RsMzIvY29tYm9leC5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCUZpeCBjb252ZXJzaW9uIG9mIFcgc3RydWN0dXJlIHRvIEEgc3RydWN0dXJlIGR1cmluZyBub3RpZnkuCgoJKiBSRUFETUU6CglHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCVVwZGF0ZSBpbmZvcm1hdGlvbiBjb25jZXJuaW5nIEZyZWVCU0QuCglSZWZlciB0byBXaW5lIGluc3RlYWQgb2Ygd2luZSBhcyB0aGUgcGFja2FnZSBuYW1lLgoKCSogZGxscy9rZXJuZWwvY29tbS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQHN0YXJ0LmNvbS5hdT4KCVJlcGxhY2Ugc2VydmljZSB0aHJlYWQgd2l0aCBSZWFkRmlsZUV4L1dyaXRlRmlsZUV4LgoKCSogZmlsZXMvcHJvZmlsZS5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUZpeCAndW5kb2N1bWVudGVkJyBiZWhhdmlvdXIgb2YgR2V0UHJpdmF0ZVByb2ZpbGVTdHJpbmcuCgoyMDAxLTA3LTE5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9zaGVsbDMyL3NocG9saWN5Lmg6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCVJlbW92ZWQgdW51c2VkIGZpbGUuCgoJKiB0b29scy93aW5hcGlfY2hlY2svd2luMzIvc2hlbGwzMi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi91c2VyMzIuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2NoZWNrLCB0b29scy93aW5hcGkvd2luYXBpX2V4dHJhY3Q6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCU1pbm9yIHJlb3JnYW5pc2F0aW9uIGFuZCBhIGZldyBidWcgZml4ZXMuCgoJKiBkbGxzL2RkcmF3L2RzdXJmYWNlL3duZHByb2MuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglGaXggb3V0IG9mIHRoZSBzb3VyY2UgdHJlZSBidWlsZCAoYWdhaW4pLgoKCSogbWlzYy9yZWdpc3RyeS5jLCByZWxheTMyL2J1aWx0aW4zMi5jLCBzY2hlZHVsZXIvY2xpZW50LmMsCgkgIHNjaGVkdWxlci9oYW5kbGUuYywgc2NoZWR1bGVyL3BpcGUuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywKCSAgc2NoZWR1bGVyL3N5bmNocm8uYywgc2NoZWR1bGVyL3N5c2RlcHMuYywgc2NoZWR1bGVyL3RocmVhZC5jLAoJICBzY2hlZHVsZXIvdGltZXIuYywgd2luMzIvY29uc29sZS5jLCB3aW4zMi9kZXZpY2UuYywgd2luMzIvZXhjZXB0LmMsCgkgIHdpbmRvd3MvaW5wdXQuYywgd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3MvcGFpbnRpbmcuYywKCSAgd2luZG93cy9xdWV1ZS5jLCB3aW5kb3dzL3RpbWVyLmMsIGRsbHMvd2luc29jay9zb2NrZXQuYywKCSAgZmlsZXMvY2hhbmdlLmMsIGZpbGVzL2Rvc19mcy5jLCBmaWxlcy9maWxlLmMsIGZpbGVzL3Byb2ZpbGUuYywKCSAgZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsIGluY2x1ZGUvc2VydmVyLmgsIGluY2x1ZGUvd2luZS9zZXJ2ZXIuaCwKCSAgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLCBsb2FkZXIvbWFpbi5jLCBsb2FkZXIvbW9kdWxlLmMsCgkgIGxvYWRlci9wZV9pbWFnZS5jLCBsb2FkZXIvdGFzay5jLCBtZW1vcnkvYXRvbS5jLCBtZW1vcnkvcmVnaXN0cnkuYywKCSAgbWVtb3J5L3NlbGVjdG9yLmMsIG1lbW9yeS92aXJ0dWFsLmMsIGRsbHMvYWR2YXBpMzIvcmVnaXN0cnkuYywKCSAgZGxscy9rZXJuZWwvY29tbS5jLCBkbGxzL2tlcm5lbC9kZWJ1Z2dlci5jLCBkbGxzL2tlcm5lbC9zeW5jLmMsCgkgIGRsbHMva2VybmVsL3Rvb2xoZWxwLmMsIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmMsIGRsbHMvbnRkbGwvbnQuYywKCSAgZGxscy9udGRsbC9vbS5jLCBkbGxzL250ZGxsL3JlZy5jLCBkbGxzL250ZGxsL3N5bmMuYzoKCU1vdmVkIHNlcnZlci5oIHRvIGluY2x1ZGUvd2luZS4KCgkqIHNlcnZlci9NYWtlZmlsZS5pbiwgc2VydmVyL2hhbmRsZS5oLCBzZXJ2ZXIvb2JqZWN0LmgsCgkgIHNlcnZlci9wcm9jZXNzLmgsIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci9yZXF1ZXN0LmMsCgkgIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci90aHJlYWQuaCwgc2VydmVyL3VuaWNvZGUuaCwKCSAgdG9vbHMvbWFrZV9yZXF1ZXN0czoKCVVzZSB0aGUgbmV3IHByb3RvY29sLmRlZiBmaWxlIHRvIGJ1aWxkIHRoZSByZXF1ZXN0IHN0cnVjdHVyZXMuCglEZWZpbmUgcHJvdG9jb2wgc3RydWN0dXJlcyBpbiBhIHNlcGFyYXRlIHNlcnZlcl9wcm90b2NvbC5oIGZpbGUuCglSZW1vdmVkIF9fV0lORV9TRVJWRVJfXyBjaGVja3Mgbm93IHRoYXQgYWxsIGluY2x1ZGVzIGFyZSBpbiB0aGUgcmlnaHQKCWRpcmVjdG9yeS4KCgkqIGRsbHMvd2luZXBzL2FmbS5jLCBkbGxzL3dpbmVwcy9mb250LmMsIGRsbHMvd2luZXBzL3BzLmMsCgkgIGRsbHMvd2luZXBzL3BzZHJ2LmgsIGRsbHMvd2luZXBzL3RydWV0eXBlLmM6CglJYW4gUGlsY2hlciA8aWFuLnBpbGNoZXJAaG9tZS5jb20+CglSZWFkL2NhbGN1bGF0ZSBhdmVyYWdlIGNoYXJhY3RlciB3aWR0aCBmb3IgYWxsIGZvbnRzLgoJV29yayBkaXJlY3RseSB3aXRoIDE2LWJpdCBXQ0hBUnM7IGRvbid0IGNvbnZlcnQgdG8gQ1AxMjUyLgoKCSogZGxscy93aW5lcHMvZGF0YS9IZWx2ZXRpY2FfTmFycm93LmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvSGVsdmV0aWNhX05hcnJvd19Cb2xkLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvSGVsdmV0aWNhX05hcnJvd19Cb2xkT2JsaXF1ZS5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0hlbHZldGljYV9OYXJyb3dfT2JsaXF1ZS5jOgoJSWFuIFBpbGNoZXIgPGlhbi5waWxjaGVyQGhvbWUuY29tPgoJTWFrZSBIZWx2ZXRpY2EgTmFycm93IGEgc2VwYXJhdGUgZm9udCBmYW1pbHkuCgoyMDAxLTA3LTE4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbWVtb3J5L2Vudmlyb24uYywgbWlzYy9yZWdpc3RyeS5jLCBtc2Rvcy9kb3Njb25mLmMsIG1zZG9zL2ludDI5LmMsCgkgIG1zZG9zL3BwZGV2LmMsIG9iamVjdHMvYnJ1c2guYywgb2JqZWN0cy9tZXRhZmlsZS5jLCBvYmplY3RzL3Blbi5jLAoJICB3aW4zMi9maWxlLmMsIGRsbHMvdmVyc2lvbi9yZXNvdXJjZS5jLCBkbGxzL3dpbm1tL2pveXN0aWNrLmMsCgkgIGRsbHMvd2lubW0vbWNpLmMsIGRsbHMvd2lubW0vbW1pby5jLCBkbGxzL3dpbm1tL21tc3lzdGVtLmMsCgkgIGRsbHMvd2lubW0vdGltZS5jLCBmaWxlcy9kb3NfZnMuYywgZ3JhcGhpY3Mvd2luMTZkcnYvb2JqZWN0cy5jLAoJICBncmFwaGljcy94MTFkcnYvb2JqZWN0cy5jLCBpbmNsdWRlL21zdmNydC9zdHJpbmcuaCwKCSAgaW5jbHVkZS93aW5lL3dpbnVzZXIxNi5oLCBpbmNsdWRlL3dpbnVzZXIuaCwgbG9hZGVyL3Rhc2suYywKCSAgZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmMsIGRsbHMvZGRyYXcvZGNsaXBwZXIvbWFpbi5jLAoJICBkbGxzL2RkcmF3L2RpcmVjdDNkL21lc2EuYywgZGxscy9kZHJhdy9kc3VyZmFjZS93bmRwcm9jLmMsCgkgIGRsbHMvZGRyYXcvaGVscGVyLmMsIGRsbHMva2VybmVsL2NvbW0uYywgZGxscy9rZXJuZWwva2VybmVsX21haW4uYywKCSAgZGxscy9tc2FjbS9wY21jb252ZXJ0ZXIuYywgZGxscy9tc3ZjcnQvZXJybm8uYywgZGxscy9tc3ZjcnQvbWJjcy5jLAoJICBkbGxzL21zdmNydC9tc3ZjcnQuaCwgZGxscy91c2VyL2xzdHIuYywgZGxscy91c2VyL3dzcHJpbnRmLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gTWFkZSBzdXJlIHRoYXQgdGhlIGZpbGVzIHRoYXQgY29udGFpbnMgdGhlIGRlY2xhcmF0aW9ucwoJICBvZiBpbXBsZW1lbnRhdGVkIGZ1bmN0aW9ucyBhcmUgaW5jbHVkZWQuCgktIENvcnJlY3RlZCBtaXNtYXRjaGluZyBwcm90b3R5cGVzLgoJLSBDbGVhbmVkIHVwIHRoZSBpbmNsdWRlIHNlY3Rpb24uCgoJKiBtZW1vcnkvYXRvbS5jOiBQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCURvY3VtZW50YXRpb24gZml4ZXMuCgoJKiB0b29scy93aW5hcGlfY2hlY2svd2luMzIvbXN2Y3J0LmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL29sZTMyLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3NoZWxsMzIuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL291dHB1dC5wbSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaS5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9jaGVjaywKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9mdW5jdGlvbi5wbSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9nbG9iYWwucG0sCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfb3B0aW9ucy5wbSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9wYXJzZXIucG0sIHRvb2xzL3dpbmFwaS9jb25maWcucG0sCgkgIHRvb2xzL3dpbmFwaS9vdXRwdXQucG0sIHRvb2xzL3dpbmFwaS9zZXR1cC5wbSwKCSAgdG9vbHMvd2luYXBpL3dpbmFwaV9leHRyYWN0OgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglTZXZlcmFsIGFkZGl0aW9ucyBhbmQgYnVnIGZpeGVzLgoKCSogd2luZG93cy9tZXNzYWdlLmMsIGluY2x1ZGUvd2ludXNlci5oOgoJUmVqZWN0IHBvaW50ZXIgbWVzc2FnZXMgaW4gU2VuZE5vdGlmeU1lc3NhZ2VbQVddIGFuZAoJU2VuZE1lc3NhZ2VDYWxsYmFja1tBV10uIEZpeGVkIHByb3RvdHlwZXMuCgoJKiBpbmNsdWRlL2NvbWNhdC5oLCBpbmNsdWRlL2RvY29iai5oLCBpbmNsdWRlL29haWRsLmgsCgkgIGluY2x1ZGUvb2JqaWRsLmgsIGluY2x1ZGUvb2NpZGwuaCwgaW5jbHVkZS9vbGVpZGwuaCwgaW5jbHVkZS9ycGMuaCwKCSAgaW5jbHVkZS9zZXJ2cHJvdi5oLCBpbmNsdWRlL3N0cm1pZi5oLCBpbmNsdWRlL3Vua253bi5oLAoJICBpbmNsdWRlL3VybG1vbi5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglJbmNsdWRlIHJwYyouaC93aW5kb3dzLmgvb2xlMi5oIGp1c3QgbGlrZSB3aW5kb3dzLgoKCSogZGxscy9rZXJuZWwvY29tbS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQHN0YXJ0LmNvbS5hdT4KCVVzZSBHZXRDb21tU3RhdGUxNiB0byBzYXZlIHN0YXRlIGluIE9wZW5Db21tMTYuCglNZXJnZSBjb21tMTYgZ2xvYmFscyBpbnRvIG9uZSBzdHJ1Y3R1cmUuCgoJKiB0b29scy9mbnQyYmRmLmM6CglCaWxsIE1lZGxhbmQgPG1lZGJpMDFAYWNjcGFjLmNvbT4KCU1ha2UgdGhlIGZvbnQgbmFtZSBhbmQgc2l6ZSBzZXR0aW5ncyByZWZsZWN0IHRoZSBkYXRhIGluIHRoZSBmb250IGZpbGUKCXJhdGhlciB0aGFuIGFyYml0cmFyeSB2YWx1ZXMuCgoJKiByZWxheTMyL3Nub29wLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglTTk9PUF9Eb1JldHVybjogcmVtb3ZlIHJlZHVuZGFudCBwcmludGluZyBvZiB0aWQuCgoyMDAxLTA3LTE3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9NYWtlZmlsZS5pbjogVXBkYXRlZCBkZXBlbmRlbmNpZXMuCgoJKiBkbGxzL2tlcm5lbC9jb21tLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAc3RhcnQuY29tLmF1PgoJUmV3cml0ZSBTZXRDb21tU3RhdGUxNiB0byB1c2UgU2V0Q29tbVN0YXRlLgoKCSogZGxscy9udGRsbC9kZWJ1Z3Rvb2xzLmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglNb3JlIGRlc2NyaXB0aXZlIGVycm9yIG9uIGJ1ZmZlciBvdmVyZmxvdy4KCgkqIGNvbnRyb2xzL2xpc3Rib3guYzoKCUJpbGwgTWVkbGFuZCA8bWVkYmkwMUBhY2NwYWMuY29tPgoJQXMgZm9yIHRoZSBlZGl0IGNvbnRyb2wsIHRoZSBzdHlsZSBvZiB0aGUgYm9yZGVycyBvbiB0aGUgbGlzdCBjb250cm9sCglpcyBtb2RpZmllZCBpbiB0aGUgZGlhbG9nIGxvYWRpbmcgY29kZSwgbm90IGluIHRoZSBjb250cm9sIGl0c2VsZi4KCgkqIG9sZS9vbGUybmxzLmMsIGRsbHMvdXNlci90ZXh0LmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglGaXhlZCBzb21lIG1vcmUgb3ZlcmZsb3dpbmcgc3RyaW5nIHRyYWNlcy4KCgkqIGNvbnRyb2xzL21lbnUuYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQG5lcmltLm5ldD4KCURyYXcgTWVudUJhciBpbiBwcm9wZXIgcGxhY2UgKHNvbWUgY2FzZXMpLgoKCSogZGxscy9vcGVuZ2wzMi9vcGVuZ2wzMi5zcGVjOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCU1ha2Ugc3VyZSB1c2VyMzIgaXMgYWx3YXlzIGxvYWRlZCBiZWZvcmUgeDExZHJ2LgoKCSogdG9vbHMvd2luZWxhdW5jaGVyLmluOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglIYW5kbGUgc3BhY2VzIHByb3Blcmx5IHdoZW4gcmVzdGFydGluZyB3aW5lbGF1bmNoZXIgZm9yIGRlYnVnLgoKCSogZGxscy9jb21jdGwzMi9kYXRldGltZS5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglTb21lICdjYWxlbmRhcicgdHlwb3MuLi4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgaW5jbHVkZS9zaGVsbGFwaS5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBZGRlZCBtaXNzaW5nIENvbW1hbmRMaW5lVG9Bcmd2VyBwcm90b3R5cGUuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQG5lcmltLm5ldD4KCVJlZnJlc2ggYml0bWFwIGNvdW50IHRvIHRha2UgaW4gYWNjb3VudCBpbWFnZWxpc3QgY2hhbmdlcyBhZnRlcgoJVEJfU0VUSU1BR0VMSVNULgoKCSogZGxscy91c2VyL2RkZS9taXNjLmM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBuZXJpbS5uZXQ+CglGaXhlZCB1bmljb2RlIHdhcm5pbmcuCgoJKiBpbmNsdWRlL3dpbm50LmgsIHNlcnZlci9uYW1lZF9waXBlLmM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUFkZGVkIFNUQVRVU18qIGNvbnN0YW50IGZvciBuYW1lZCBwaXBlcy4gUmV0dXJuIFNUQVRVU19QSVBFX05PVF9BVkFJTEFCTEUKCXdoZW4gb3BlbmluZyBhIG5hbWVkIHBpcGUgaWYgdGhlIHBpcGUgZXhpc3RzIGJ1dCBubyBpbnN0YW5jZXMgb2YgaXQgYXJlCgljdXJyZW50bHkgd2FpdGluZyBmb3IgYSBjb25uZWN0aW9uLgoKMjAwMS0wNy0xNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNlcnZlci9kZWJ1Z2dlci5jLCBzZXJ2ZXIvZmlsZS5jLCBzZXJ2ZXIvcHJvY2Vzcy5jLAoJICBzZXJ2ZXIvcHJvY2Vzcy5oLCBzZXJ2ZXIvcHRyYWNlLmM6CglCYWNrZWQgb3V0IHRoZSBzdXNwZW5kX3Byb2Nlc3NfZm9yX3B0cmFjZSBjaGFuZ2UuCglGaXhlZCBhIGNvdXBsZSBvZiByYWNlcyBpbiBwdHJhY2UgY29kZS4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJSmVyZW15IFdoaXRlIDxqd2hpdGVAY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlIHRoZSAtcnBhdGggb3B0aW9uIGZyb20gdGhlIGxpbmsgY29tbWFuZC4KCgkqIGRsbHMvbnRkbGwvbnRkbGwuc3BlYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgaXNzdWUgZm91bmQgYnkgd2luYXBpX2NoZWNrLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMuZGF0LCB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5wbSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL25hdGl2ZWFwaS5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL291dHB1dC5wbSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL21zdmNydC5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGkucG0sCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfY2hlY2ssCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfZG9jdW1lbnRhdGlvbi5wbSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9mdW5jdGlvbi5wbSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9nbG9iYWwucG0sCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfcGFyc2VyLnBtLCB0b29scy93aW5hcGkvb3V0cHV0LnBtLAoJICB0b29scy93aW5hcGkvd2luYXBpX2V4dHJhY3QsIHRvb2xzL3dpbmFwaS93aW5hcGlfZml4dXA6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCVNldmVyYWwgYWRkaXRpb25zIGFuZCBidWcgZml4ZXMuCgoJKiB3aW5kb3dzL2RjZS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglCZXR0ZXIgTG9ja1dpbmRvd1VwZGF0ZSBkZWJ1Zy4KCgkqIGRsbHMvb2xlMzIvb2xlMzIuc3BlYywgZGxscy9vbGUzMi9zdG9yYWdlMzIuYywKCSAgZGxscy9vbGVhdXQzMi9vbGVmb250LmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU1hZGUgc29tZSBGSVhNRSgpcyBwcmludCB0aGUgcmVzcGVjdGl2ZSBzdHJpbmdzIHBhc3NlZC4KCUNoYW5nZWQgU3RnU2V0VGltZXMoKSB0byBjb3JyZWN0IHR5cGUuCgoJKiBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgUXVhbGl0eSBCb3ggKHJlYWRvbmx5IGN1cnJlbnRseSkgZm9yIDE2Yml0IHRlbXBsYXRlZCBkaWFsb2dzLgoJQWRkZWQgW1ByaW50ZXJdIGJ1dHRvbiBzdXBwb3J0IGluIDE2Yml0IHRlbXBsYXRlZCBkaWFsb2dzLgoJVHJ5IHNlbmRpbmcgb3JpZW50YXRpb24gaWNvbiB0byBzdGMxMCB0b28uCgoJKiBkbGxzL2NvbW1kbGcvY2RsZ19EZS5yYywgZGxscy9jb21tZGxnL2NkbGdfRW4ucmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVJlcGxhY2VkIG1vc3Qgb2YgdGhlIG51bWJlcnMgd2l0aCB0aGUgc3ltYm9saWMgY29uc3RhbnRzIG9mIHRoZSBkaWFsb2cKCWl0ZW1zLgoKCSogbXNkb3MvcHBkZXYuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCURvbid0IGNsYWltIHRoZSBwYXJwb3J0IGZvciBleGNsdXNpdmUgYWNjZXNzIGFuZCByZWxlYXNlIHRoZSBwb3J0CglhZnRlciBldmVyeSBhY2Nlc3MuCgoJKiBkbGxzL2tlcm5lbC9jb21tLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAc3RhcnQuY29tLmF1PgoJUmV3cml0ZSBHZXRDb21tU3RhdGUxNiB1c2luZyBHZXRDb21tU3RhdGUuCgoJKiByZWxheTMyL3Nub29wLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglTTk9PUF9HZXRQcm9jQWRkcmVzczogZG9uJ3QgdG91Y2ggYWxyZWFkeSBpbml0aWFsaXplZCBmdW4tZW50cmllcy4KCjIwMDEtMDctMTIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90aHJlYWQuaDoKCVJlbW92ZWQgdW51c2VkIGZ1bmN0aW9ucyBzdXNwZW5kL3JlbW92ZV9hbGxfdGhyZWFkcy4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYywgZmlsZXMvZG9zX2ZzLmMsIGdyYXBoaWNzL2ZvbnRlbmdpbmUuYywKCSAgbWVtb3J5L3N0cmluZy5jLCBvYmplY3RzL2RjLmMsIG9iamVjdHMvZ2Rpb2JqLmMsIG9iamVjdHMvcGVuLmMsCgkgIG9iamVjdHMvcmVnaW9uLmMsIHdpbmRvd3MvaW5wdXQuYywgd2luZG93cy9tZGkuYywKCSAgd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3Mvc3lzY29sb3IuYywgd2luZG93cy93aW5wb3MuYywKCSAgZGxscy9rZXJuZWwvdGh1bmsuYywgZGxscy9vbGUzMi9zdG9yYWdlMzIuYywKCSAgZGxscy9yYXNhcGkzMi9yYXNhcGkuYywgZGxscy9zaGVsbDMyL3NoZWxsb2xlLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCURvY3VtZW50YXRpb24gZml4ZXMuCgoJKiBmaWxlcy9maWxlLmMsIGluY2x1ZGUvZmlsZS5oLCBzY2hlZHVsZXIvc3luY2hyby5jLAoJICBkbGxzL2tlcm5lbC9jb21tLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAc3RhcnQuY29tLmF1PgoJSW1wbGVtZW50IG92ZXJsYXBwZWQgY29tcGxldGlvbiByb3V0aW5lcy4KCURvbid0IHVzZSBscE92ZXJsYXBwZWQtPk9mZnNldEhpZ2ggdG8gc3RvcmUgYnl0ZXMgdG8gdHJhbnNmZXIuCgoJKiBkbGxzL3gxMWRydi93aW5kb3cuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglGaXggWCBjcmFzaCB3aGVuIHJ1bm5pbmcgaW4gbWFuYWdlZCBtb2RlLgoKCSogdW5pY29kZS9jYXNlbWFwLmMsIHVuaWNvZGUvd2N0eXBlLmMsIHVuaWNvZGUvY18wNDIuYywKCSAgdW5pY29kZS9jXzEwMDA2LmMsIHVuaWNvZGUvY18xMjUzLmMsIHVuaWNvZGUvY18yODU5Ny5jLAoJICB1bmljb2RlL2NfNDM3LmMsIHVuaWNvZGUvY183MzcuYywgdW5pY29kZS9jXzg2MC5jLCB1bmljb2RlL2NfODYxLmMsCgkgIHVuaWNvZGUvY184NjIuYywgdW5pY29kZS9jXzg2My5jLCB1bmljb2RlL2NfODY1LmMsIHVuaWNvZGUvY184NjkuYywKCSAgdW5pY29kZS9jXzg3NS5jLCB1bmljb2RlL2NfOTMyLmMsIHVuaWNvZGUvY185MzYuYywgdW5pY29kZS9jXzk0OS5jLAoJICB1bmljb2RlL2NfOTUwLmM6CglSZWdlbmVyYXRlZCBjb2RlcGFnZSBmaWxlcyB3aXRoIFVuaWNvZGUgMy4xIGRhdGEuCgoJKiBkbGxzL3JwY3J0NC9ycGNydDRfbWFpbi5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIGlzc3VlcyBmb3VuZCBieSB3aW5hcGlfY2hlY2suCgoJKiB0b29scy93aW5hcGlfY2hlY2svd2luMzIvcmFzYXBpMzIuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvcnBjcnQ0LmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3dzMl8zMi5hcGksIHRvb2xzL3dpbmFwaS93aW5hcGlfZml4dXAsCgkgIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLmRhdCwgdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMucG0sCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGkucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfY2hlY2ssCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfZG9jdW1lbnRhdGlvbi5wbSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9mdW5jdGlvbi5wbSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9sb2NhbC5wbSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9wYXJzZXIucG06CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCVNldmVyYWwgYWRkaXRpb25zIGFuZCBidWcgZml4ZXMuCgoJKiB0b29scy93aW5lbWFrZXI6CglCaWxsIE1lZGxhbmQgPG1lZGJpMDFAYWNjcGFjLmNvbT4KCUdldCB3aW5lbWFrZXIgdG8gZHJvcCB0aGUgdHJhaWxpbmcgQ3RybFogdGhhdCBpcyBzdGlsbCB0byBiZSBmb3VuZCBvbgoJcXVpdGUgYSBsb3Qgb2YgRE9TIGZpbGVzLgoKCSogZGxscy94MTFkcnYvd2luZG93LmMsIGdyYXBoaWNzL3gxMWRydi9iaXRibHQuYywKCSAgZ3JhcGhpY3MveDExZHJ2L2dyYXBoaWNzLmM6CglGaXhlZCBhIGZldyBpc3N1ZXMgd2l0aCB0c3gxMSBsb2NraW5nLgoJQWx3YXlzIG1hcCB0aGUgY2xpZW50IHdpbmRvdyB3aGVuIG1vdmluZyBvdXQgb2YgaWNvbmljIHN0YXRlLgoKCSogbG9hZGVyL3BlX2ltYWdlLmM6CglEb24ndCBjYWxsIFNOT09QX1JlZ2lzdGVyRExMIG9uIGJ1aWx0aW5zLgoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLCBkbGxzL2RkcmF3L21lc2FfcHJpdmF0ZS5oLAoJICBpbmNsdWRlL2NvbmZpZy5oLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIHJlbW92ZWQgdW51c2VkIE9TTWVzYSBsaW5raW5nCgktIHJlbW92ZWQgT1NNZXNhIGNvZGUKCgkqIGRsbHMva2VybmVsL2NvbW0uYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0BzdGFydC5jb20uYXU+CglJbXBsZW1lbnQgQ09NTV9NU1JVcGRhdGUgd2l0aCBHZXRDb21tTW9kZW1TdGF0dXMuCgoyMDAxLTA3LTExICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9ycGNydDQvcnBjcnQ0LnNwZWMsIGRsbHMvcnBjcnQ0L3JwY3J0NF9tYWluLmMsCgkgIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvcnBjLmgsIGluY2x1ZGUvcnBjZGNlLmgsCgkgIGluY2x1ZGUvcnBjbnRlcnIuaDoKCVBldGVyIEh1bm5pc2V0dCA8aHVubmlzZUB5YWhvby5jb20+CglBZGRlZCBhIGJ1bmNoIG9mIGVudHJ5IHBvaW50cy4KCUFkZGVkIHNvbWUgc3R1YnMgYW5kIGhlYWRlciBpbmZvcm1hdGlvbi4KCUZpeGVkIHNvbWUgcmV0dXJuIGNvZGVzLgoKCSogd2luZG93cy9zeXNtZXRyaWNzLmM6CglCaWxsIE1lZGxhbmQgPG1lZGJpMDFAYWNjcGFjLmNvbT4KCU1vZGlmeSBzb21lIHN5c3RlbSBtZXRyaWNzIHRvIGFncmVlIHdpdGggV2luOTUgYW5kIHJlZmxlY3QgdGhlIGRlc2t0b3AKCXJlZ2lzdHJ5IGVudHJpZXMuCgoJKiBkbGxzL21zdmNydC9tYmNzLmMsIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJU2VtaXN0dWJzIGZvciBfaXNtYmNkaWdpdCxfaXNtYmNzcGFjZSxfbWJzbHdyLF9tYnNuYmNtcCxfbWJzc3BuLgoKCSogd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3Mvc3lzY29sb3IuYywgd2luZG93cy93aW5wb3MuYywKCSAgbXNkb3MvaW50MjEuYywgbXNkb3MvaW50NWMuYywgb2JqZWN0cy9iaXRtYXAuYywgb2JqZWN0cy9jbGlwcGluZy5jLAoJICBvYmplY3RzL2RjLmMsIG9iamVjdHMvZGliLmMsIG9iamVjdHMvZm9udC5jLCBvYmplY3RzL2dkaW9iai5jLAoJICBvYmplY3RzL3BhbGV0dGUuYywgb2JqZWN0cy9wZW4uYywgb2JqZWN0cy9yZWdpb24uYywgb2JqZWN0cy90ZXh0LmMsCgkgIG9sZS9vbGUybmxzLmMsIHNjaGVkdWxlci9oYW5kbGUuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywKCSAgc2NoZWR1bGVyL3RocmVhZC5jLCB3aW5kb3dzL2N1cnNvcmljb24uYywgd2luZG93cy9pbnB1dC5jLAoJICB3aW5kb3dzL21kaS5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9pbml0LmMsIGxvYWRlci9tb2R1bGUuYywKCSAgbG9hZGVyL25lL2NvbnZlcnQuYywgbG9hZGVyL25lL21vZHVsZS5jLCBsb2FkZXIvbmUvc2VnbWVudC5jLAoJICBsb2FkZXIvcmVzb3VyY2UuYywgbG9hZGVyL3Rhc2suYywgbWVtb3J5L2F0b20uYywgbWVtb3J5L2NvZGVwYWdlLmMsCgkgIG1lbW9yeS9lbnZpcm9uLmMsIG1lbW9yeS9nbG9iYWwuYywgbWVtb3J5L2hlYXAuYywKCSAgbWVtb3J5L3NlbGVjdG9yLmMsIG1lbW9yeS9zdHJpbmcuYywgbWlzYy9tYWluLmMsIG1pc2MvcmVnaXN0cnkuYywKCSAgZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmMsIGRsbHMvd2lubW0vd2luZW9zcy9taWRpLmMsCgkgIGRsbHMvd2lubW0vd2luZW9zcy9taXhlci5jLCBkbGxzL3dpbm1tL3dpbmVvc3MvbW1hdXguYywKCSAgZGxscy93aW5tbS93aW5lb3NzL29zcy5jLCBkbGxzL3dpbnNvY2svc29ja2V0LmMsCgkgIGRsbHMvd3NvY2szMi9wcm90b2NvbC5jLCBkbGxzL3dzb2NrMzIvc29ja2V0LmMsIGZpbGVzL2Rvc19mcy5jLAoJICBmaWxlcy9wcm9maWxlLmMsIGdyYXBoaWNzL2JpdGJsdC5jLCBkbGxzL3dpbm1tL2RyaXZlci5jLAoJICBkbGxzL3dpbm1tL2pveXN0aWNrL2pveXN0aWNrLmMsIGRsbHMvd2lubW0vbWNpLmMsCgkgIGRsbHMvd2lubW0vbWNpYW5pbS9tY2lhbmltLmMsIGRsbHMvd2lubW0vbWNpYXZpL21jaWF2aS5jLAoJICBkbGxzL3dpbm1tL21jaWNkYS9tY2ljZGEuYywgZGxscy93aW5tbS9tY2lzZXEvbWNpbWlkaS5jLAoJICBkbGxzL3dpbm1tL21jaXdhdmUvbWNpd2F2ZS5jLCBkbGxzL3dpbm1tL21pZGltYXAvbWlkaW1hcC5jLAoJICBkbGxzL3dpbm1tL21taW8uYywgZGxscy93aW5tbS9tbXN5c3RlbS5jLCBkbGxzL3dpbm1tL3RpbWUuYywKCSAgZGxscy93aW5tbS93YXZlbWFwL3dhdmVtYXAuYywgZGxscy9vbGVkbGcvb2xlZGxnX21haW4uYywKCSAgZGxscy9vcGVuZ2wzMi9vcGVuZ2xfbm9ybS5jLCBkbGxzL3JpY2hlZGl0L3JpY2hlZGl0LmMsCgkgIGRsbHMvc2V0dXBhcGkvc2V0dXB4X21haW4uYywgZGxscy9zaGVsbDMyL2Jyc2ZvbGRlci5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGxyZWcuYywgZGxscy9zaGx3YXBpL3JlZ3N0cmVhbS5jLAoJICBkbGxzL3VzZXIvbHN0ci5jLCBkbGxzL3VzZXIvbW91c2UuYywgZGxscy92ZXJzaW9uL2luc3RhbGwuYywKCSAgZGxscy93aW4zMnMvdzMyc3lzLmMsIGRsbHMvd2luZXBzL2RyaXZlci5jLCBkbGxzL2tlcm5lbC9kZWJ1Z2dlci5jLAoJICBkbGxzL2tlcm5lbC9zeW5jLmMsIGRsbHMva2VybmVsL3RodW5rLmMsIGRsbHMva2VybmVsL3dvd3RodW5rLmMsCgkgIGRsbHMvbXNhY20vcGNtY29udmVydGVyLmMsIGRsbHMvbXN2Y3J0L21haW4uYywKCSAgZGxscy9tc3ZjcnQvc3RyaW5nLmMsIGRsbHMvbXN2aWRlby9tc3ZpZGVvX21haW4uYywKCSAgZGxscy9udGRsbC9leGNlcHRpb24uYywgZGxscy9udGRsbC9maWxlLmMsIGRsbHMvbnRkbGwvbnQuYywKCSAgZGxscy9udGRsbC9vbS5jLCBkbGxzL250ZGxsL3JlZy5jLCBkbGxzL250ZGxsL3J0bHN0ci5jLAoJICBkbGxzL250ZGxsL3N5bmMuYywgZGxscy9udGRsbC90aW1lLmMsIGRsbHMvb2xlMzIvY29tcG9iai5jLAoJICBkbGxzL29sZTMyL21vbmlrZXIuYywgZGxscy9vbGUzMi9vbGUyLmMsIGRsbHMvb2xlMzIvb2xlMmltcGwuYywKCSAgZGxscy9vbGUzMi9zdG9yYWdlMzIuYywgZGxscy9vbGVhdXQzMi9vbGUyZGlzcC5jLAoJICBkbGxzL29sZWF1dDMyL29sZWF1dC5jLCBkbGxzL2RwbGF5eC9kcGxheS5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglEb2N1bWVudGF0aW9uIGZpeGVzLgoKCSogZGVidWdnZXIvZGJfZGlzYXNtLmM6CglBZGRlZCBkaXNhc3NlbWJseSBmb3IgMHgwZiAweDV4IG9wY29kZXMuCgoJKiBkZWJ1Z2dlci9kYmcueSwgZGVidWdnZXIvd2luZWRiZy5jOgoJQmV0dGVyIGVycm9yIHJlcG9ydGluZyBvbiBEZWJ1Z0FjdGl2ZVByb2Nlc3MgZmFpbHVyZS4KCgkqIHNlcnZlci9jb250ZXh0X2kzODYuYywgc2VydmVyL2RlYnVnZ2VyLmMsIHNlcnZlci9wcm9jZXNzLmMsCgkgIHNlcnZlci9wcm9jZXNzLmg6CglTbWFsbCBmaXhlcyB0byB0aGUgZGVidWdnZXIgc3VwcG9ydC4KCgkqIHNlcnZlci9xdWV1ZS5jOiBNZXJnZSBXTV9NT1VTRU1PVkUgbWVzc2FnZXMuCgoJKiB0b29scy93aW5hcGlfY2hlY2svd2luMzIvd293MzIuYXBpLCB0b29scy93aW5hcGkvY29uZmlnLnBtLAoJICB0b29scy93aW5hcGkvZnVuY3Rpb24ucG0sIHRvb2xzL3dpbmFwaS9vcHRpb25zLnBtLAoJICB0b29scy93aW5hcGkvdXRpbC5wbSwgdG9vbHMvd2luYXBpL3dpbmFwaV9leHRyYWN0LAoJICB0b29scy93aW5hcGkvd2luYXBpX2ZpeHVwLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpLnBtLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2NoZWNrLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2RvY3VtZW50YXRpb24ucG0sCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfZnVuY3Rpb24ucG0sCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfbG9jYWwucG0sCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfb3B0aW9ucy5wbSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9wYXJzZXIucG06CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCU1ham9yIHJlb3JnYW5pemF0aW9uIGFuZCBjbGVhbnVwLgoKCSogZGxscy9rZXJuZWwvY29tbS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQHN0YXJ0LmNvbS5hdT4KCUltcGxlbWVudCBGbHVzaENvbW0xNiB3aXRoIFB1cmdlQ29tbS4KCgkqIGNvbnRyb2xzL2VkaXQuYywgd2luZG93cy9kaWFsb2cuYzoKCUJpbGwgTWVkbGFuZCA8bWVkYmkwMUBhY2NwYWMuY29tPgoJQ29ycmVjdCB0aGUgbG9jYXRpb24gb2YgdGhlIHN0eWxlIHBhdGNoaW5nIGZvciB0aGUgZWRpdCBjb250cm9sLgoKCSogZGxscy9yYXNhcGkzMi9yYXNhcGkuYywgZGxscy9yYXNhcGkzMi9yYXNhcGkzMi5zcGVjOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQHN0YXJ0LmNvbS5hdT4KCVN0dWIgc29tZSByYXNhcGkgZnVuY3Rpb25zLgoKCSogZGxscy93aW5pbmV0L2ludGVybmV0LmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUhhdmUgSW50ZXJuZXRHZXRDb25uZWN0ZWRTdGF0ZSBhbHdheXMgcmV0dXJuICdMQU4gY29ubmVjdGlvbicuCgoyMDAxLTA3LTEwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2VydmVyL01ha2VmaWxlLmluLCBzZXJ2ZXIvbmFtZWRfcGlwZS5jLCBzZXJ2ZXIvcmVxdWVzdC5oLAoJICBzZXJ2ZXIvdHJhY2UuYywgZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZGxscy9rZXJuZWwvc3luYy5jLAoJICBmaWxlcy9maWxlLmMsIGluY2x1ZGUvc2VydmVyLmgsIGluY2x1ZGUvd2luYmFzZS5oOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQHN0YXJ0LmNvbS5hdT4KCVN0YXJ0IGltcGxlbWVudGluZyBuYW1lZCBwaXBlcy4KCgkqIGluY2x1ZGUvc2hsd2FwaS5oLCBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjOgoJUGV0ZXIgSHVubmlzZXR0IDxodW5uaXNlQHlhaG9vLmNvbT4KCUFkZCBzaGx3YXBpLnd2bnNwcmludGZbQVddLCBoZWFkZXIgaW5mbyBhbmQgY29tbWVudHMuCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGRsbHMvd2luc29jay93czJfMzIuc3BlYywKCSAgaW5jbHVkZS93aW5zb2NrMi5oOgoJUGV0ZXIgSHVubmlzZXR0IDxodW5uaXNlQHlhaG9vLmNvbT4KCUltcGxlbWVudGVkIGEgc3R1YiBmb3IgV1NBUmVjdkZyb20uCgoJKiBjb250cm9scy9tZW51LmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAc3RhcnQuY29tLmF1PgoJR2V0TWVudUl0ZW1JRDogcmV0dXJuIC0xIGZvciBpbnZhbGlkIG1lbnUgaXRlbXMsIG5vdCB6ZXJvLgoKCSogZGxscy9rZXJuZWwvY29tbS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQHN0YXJ0LmNvbS5hdT4KCVJld3JpdGUgRXNjYXBlQ29tbUZ1bmN0aW9uMTYgdG8gdXNlIEVzY2FwZUNvbW1GdW5jdGlvbi4KCgkqIGRsbHMvbXN2Y3J0L2ZpbGUuYzoKCVBldGVyIEh1bm5pc2V0dCA8aHVubmlzZUB5YWhvby5jb20+CglDcmVhdGVGaWxlIHNob3VsZCBiZSBjYWxsZWQgd2l0aCBzZWN1cml0eSBhdHRyaWJ1dGVzIGluIF9vcGVuLgoKCSogZGxscy9kZHJhdy9kY2xpcHBlci9tYWluLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU1ha2UgKEd8UylldENsaXBMaXN0IG5vdCBhYm9ydCwgYnV0IHJldHVybiBEREVSUl9OT0NMSVBMSVNULgoJRG8gbm90IHNjcm9sbCBGSVhNRSgpcyB0b28gbXVjaC4KCjIwMDEtMDctMDggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvb2xlMzIvY29tcG9iai5zcGVjLAoJICBkbGxzL29sZWRsZy9vbGVkbGcuc3BlYywgZGxscy9vcGVuZ2wzMi9tYWtlX29wZW5nbDoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgaXNzdWVzIGZvdW5kIGJ5IHdpbmFwaV9jaGVjay4KCgkqIGRsbHMvb2xlYXV0MzIvcGFyc2VkdC5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIEFkZGVkIGNvbW1lbnQgdGhhdCBjb2RlIGlzIGJyb2tlbi4KCS0gU2lsZW5jZWQgYW5ub3lpbmcgbG9uZyB0ZXJtIHdpbmFwaV9jaGVjayBtZXNzYWdlLgoKCSogZGxscy9ycGNydDQvcnBjcnQ0X21haW4uYywgaW5jbHVkZS9jb25maWcuaC5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW46CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUFkZCBwcm9wZXIgY2hlY2sgZm9yIGV4aXN0YW5jZSBvZiBzdHJ1Y3Qgc29ja2FkZHIgbWVtYmVyIHNhX2xlbi4KCgkqIGRvY3VtZW50YXRpb24vcHJpbnRpbmcuc2dtbDoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCVVwZGF0ZWQgcHJpbnRpbmcgZG9jdW1lbnRhdGlvbiBhIGJpdC4KCgkqIHRvb2xzL3dpbmFwaS9jb25maWcucG0sIHRvb2xzL3dpbmFwaS93aW5hcGlfZXh0cmFjdCwKCSAgdG9vbHMvd2luYXBpL3dpbmFwaV9maXh1cCwgdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMuZGF0LAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMTYvZ2RpLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL29sZWRsZy5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9xdWFydHouYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvd2lubW0uYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvd3NvY2szMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGkucG0sCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfY2hlY2ssCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfZG9jdW1lbnRhdGlvbi5wbSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9mdW5jdGlvbi5wbSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9sb2NhbC5wbSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9vcHRpb25zLnBtOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglTZXZlcmFsIGJ1ZyBmaXhlcyBhbmQgYWRkaXRpb25zLgoKCSogZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYzoKCVBldGVyIEh1bm5pc2V0dCA8aHVubmlzZUB5YWhvby5jb20+CglGaXggc29tZSBvcmRpbmFsIGZvcndhcmRpbmcuCgoJKiBjb250cm9scy9tZW51LmM6CglNYXJjdXMgTWVpc3NuZXIgPE1hcmN1cy5NZWlzc25lckBjYWxkZXJhLmRlPgoJQWRkIHNvbWUgYXJndW1lbnQgdmFsaWRhdGlvbiB0byBTZXRNZW51SXRlbUluZm9BLCBzbyBRVDUgZG9lcyBub3QKCWNvcnJ1cHQgaXRzIG1lbnVzLgoKCSogZGxscy9jb21jdGwzMi9yZWJhci5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gTW92ZSBjcmVhdGlvbiBwcm9jZXNzIHRvIHRoZSBXTV9OQ0NSRUFURSBtZXNzYWdlIGxpa2UgbmF0aXZlIGFuZCBmb3JjZQoJICBzdHlsZXMgV1NfVklTSUJMRSBhbmQgQ0NTX1RPUC4KCS0gSW1wbGVtZW50IG1lc3NhZ2VzIFdNX05DSElUVEVTVCwgV01fU1RZTEVDSEFOR0VELCBSQl9NT1ZFQkFORCwKCSAgUkJfTUlOSU1JWkVCQU5ELgoJLSBJbXByb3ZlIHByZWZvcm1hbmNlIGJ5IHJlbW92aW5nIGNhbGxzIHRvIEdldFdpbmRvd0xvbmcgZm9yIEdXTF9TVFlMRQoJICAoYnkgc2F2aW5nIHN0YXRlIGFuZCBoYW5kbGluZyBXTV9TVFlMRUNIQU5HRUQpLgoJLSBDbGVhbnVwIGFuZCByZW1vdmUgZGVhZCBhbmQgdGVzdCBjb2RlLgoKCSogd2luZG93cy9zcHkuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglDb3JyZWN0IGFtb3VudCBvZiBpbmZvIGRpc3BsYXllZCBmb3IgTk1fTkNISVRURVNUIGFuZCBhbGwgdGhlIExWTl8qLgoKCSogY29udHJvbHMvdWl0b29scy5jOgoJQmlsbCBNZWRsYW5kIDxtZWRiaTAxQGFjY3BhYy5jb20+CglDb3JyZWN0IG1vcmUgY29sb3VycyBzbyB0aGF0IERyYXdFZGdlIHdvcmtzIGZvciBtb3JlIGNhc2VzLgoKCSogaW5jbHVkZS9zdHJtaWYuaDoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglBZGRlZCBtaXNzaW5nIElJRHMuCgoJKiBmaWxlcy9maWxlLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAc3RhcnQuY29tLmF1PgoJSW1wbGVtZW50IFJlYWRGaWxlRXggYW5kIFdyaXRlRmlsZUV4IChscE92ZXJsYXBwZWRDb21wbGV0aW9uIHJvdXRpbmUKCWlzIG5vdCBzdXBwb3J0ZWQgeWV0Li4uKQoKCSogZGxscy9rZXJuZWwvY29tbS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQHN0YXJ0LmNvbS5hdT4KCVVzZSBIQU5ETEVzIGluc3RlYWQgb2YgdW5peCBmZHMuCgoJKiBwcm9ncmFtcy91bmluc3RhbGxlci9tYWluLmM6CglKZXJlbXkgV2hpdGUgPGp3aGl0ZUBjb2Rld2VhdmVycy5jb20+CglBZGQgLS1saXN0IGZhY2lsaXR5IHRvIGxpc3QgaW5zdGFsbGVkIHByb2dyYW1zLgoJQWRkIC0tcmVtb3ZlIHh4eCBmYWNpbGl0eSB0byByZW1vdmUgYSBzcGVjaWZpYyBwcm9ncmFtLgoKMjAwMS0wNy0wMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MvZGlhbG9nLmMsIHdpbmRvd3MvaW5wdXQuYywgd2luZG93cy9rZXlib2FyZC5jLAoJICB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy9xdWV1ZS5jLCBtZW1vcnkvYXRvbS5jLCBtZW1vcnkvZ2xvYmFsLmMsCgkgIG1lbW9yeS9oZWFwLmMsIG1lbW9yeS9sb2NhbC5jLCBtZW1vcnkvc2VsZWN0b3IuYywgbWVtb3J5L3N0cmluZy5jLAoJICBtaXNjL2Vycm9yLmMsIG1pc2MvcmVnaXN0cnkuYywgbWlzYy9zeXN0ZW0uYywgbWlzYy92ZXJzaW9uLmMsCgkgIG9iamVjdHMvYml0bWFwLmMsIG9iamVjdHMvZGliLmMsIG9iamVjdHMvZm9udC5jLCBvYmplY3RzL2dkaW9iai5jLAoJICBvYmplY3RzL3BhbGV0dGUuYywgb2JqZWN0cy90ZXh0LmMsIHNjaGVkdWxlci9zeW5jaHJvLmMsCgkgIHNjaGVkdWxlci9zeXNsZXZlbC5jLCBmaWxlcy9kaXJlY3RvcnkuYywgZmlsZXMvZG9zX2ZzLmMsCgkgIGZpbGVzL2RyaXZlLmMsIGZpbGVzL2ZpbGUuYywgZmlsZXMvcHJvZmlsZS5jLCBncmFwaGljcy9iaXRibHQuYywKCSAgZ3JhcGhpY3MvZXNjYXBlLmMsIGdyYXBoaWNzL2ZvbnRlbmdpbmUuYywgZ3JhcGhpY3MvbWFwcGluZy5jLAoJICBncmFwaGljcy9wYWludGluZy5jLCBncmFwaGljcy9wYXRoLmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L3BydGRydi5jLAoJICBncmFwaGljcy94MTFkcnYvb2VtYml0bWFwLmMsIGxvYWRlci9tYWluLmMsIGxvYWRlci9tb2R1bGUuYywKCSAgbG9hZGVyL25lL21vZHVsZS5jLCBsb2FkZXIvbmUvcmVzb3VyY2UuYywgbG9hZGVyL3Jlc291cmNlLmMsCgkgIGxvYWRlci90YXNrLmMsIGRsbHMvd2lubW0vbWlkaW1hcC9taWRpbWFwLmMsCgkgIGRsbHMvd2lubW0vd2F2ZW1hcC93YXZlbWFwLmMsIGRsbHMvd2lubW0vd2luZW9zcy9vc3MuYywKCSAgZGxscy93aW5zb2NrL2FzeW5jLmMsIGRsbHMvd2luc29jay9zb2NrZXQuYywgZGxscy93aW5zcG9vbC9pbmZvLmMsCgkgIGRsbHMvd3NvY2szMi9zb2NrZXQuYywgZGxscy94MTFkcnYvd2luZG93LmMsIGRsbHMveDExZHJ2L3dpbnBvcy5jLAoJICBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jLCBkbGxzL3dpbm1tL21jaWNkYS9tY2ljZGEuYywKCSAgZGxscy92ZXJzaW9uL3Jlc291cmNlLmMsIGRsbHMvdmVyc2lvbi92ZXIxNi5jLAoJICBkbGxzL3dpbjMycy93MzJza2VybmVsLmMsIGRsbHMvd2luMzJzL3czMnN5cy5jLAoJICBkbGxzL3dpbjMycy93aW4zMnMxNi5jLCBkbGxzL3dpbmFzcGkvd2luYXNwaTE2LmMsCgkgIGRsbHMvd2luZWRvcy9kb3N2bS5jLCBkbGxzL3dpbmVkb3MvbW9kdWxlLmMsIGRsbHMvd2luZXBzL2RyaXZlci5jLAoJICBkbGxzL3dpbmluZXQvd2luaW5ldF9tYWluLmMsIGRsbHMvd2lubW0vZHJpdmVyLmMsCgkgIGRsbHMvd2lubW0vam95c3RpY2suYywgZGxscy93aW5tbS9qb3lzdGljay9qb3lzdGljay5jLAoJICBkbGxzL3dpbm1tL21jaS5jLCBkbGxzL3dpbm1tL21taW8uYywgZGxscy93aW5tbS9tbXN5c3RlbS5jLAoJICBkbGxzL3dpbm1tL3NvdW5kMTYuYywgZGxscy93aW5tbS90aW1lLmMsIGRsbHMvc2hlbGwzMi9waWRsLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbC5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbG9sZS5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywKCSAgZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jLCBkbGxzL3NoZWxsMzIvc2hlbGxyZWcuYywKCSAgZGxscy9zaGVsbDMyL3NobG1lbnUuYywgZGxscy9zaGx3YXBpL29yZGluYWwuYywgZGxscy9zaGx3YXBpL3JlZy5jLAoJICBkbGxzL3R0eWRydi91c2VyLmMsIGRsbHMvdXJsbW9uL3VybG1vbl9tYWluLmMsIGRsbHMvdXNlci9iaWRpMTYuYywKCSAgZGxscy91c2VyL2RkZS9kZGVtbDE2LmMsIGRsbHMvdXNlci9kaXNwbGF5LmMsIGRsbHMvdXNlci9sc3RyLmMsCgkgIGRsbHMvdXNlci9taXNjLmMsIGRsbHMvdXNlci9tb3VzZS5jLCBkbGxzL3VzZXIvbmV0d29yay5jLAoJICBkbGxzL3VzZXIvcmVzb3VyY2UuYywgZGxscy91c2VyL3RleHQuYywgZGxscy91c2VyL3RodW5rLmMsCgkgIGRsbHMvdXNlci93c3ByaW50Zi5jLCBkbGxzL3ZlcnNpb24vaW5zdGFsbC5jLCBkbGxzL250ZGxsL3J0bC5jLAoJICBkbGxzL250ZGxsL3NlYy5jLCBkbGxzL250ZGxsL3djc3RyaW5nLmMsIGRsbHMvb2xlMzIvY29tcG9iai5jLAoJICBkbGxzL29sZTMyL2ZpbGVtb25pa2VyLmMsIGRsbHMvb2xlMzIvbW9uaWtlci5jLCBkbGxzL29sZTMyL29sZTIuYywKCSAgZGxscy9vbGUzMi9vbGUybmxzLmMsIGRsbHMvb2xlMzIvc3RvcmFnZS5jLAoJICBkbGxzL29sZWF1dDMyL29sZTJkaXNwLmMsIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jLAoJICBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYywgZGxscy9vbGVjbGkvb2xlY2xpX21haW4uYywKCSAgZGxscy9vbGVwcm8zMi9vbGVwcm8zMnN0dWJzLmMsIGRsbHMvb2xlc3ZyL29sZXN2cl9tYWluLmMsCgkgIGRsbHMvc2VyaWFsdWkvY29uZmRsZy5jLCBkbGxzL3NldHVwYXBpL2luZnBhcnNlLmMsCgkgIGRsbHMvc2hlbGwzMi9jaGFuZ2Vub3RpZnkuYywgZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jLAoJICBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jLCBkbGxzL2NvbW1kbGcvZmlsZXRpdGxlLmMsCgkgIGRsbHMvY29tbWRsZy9maW5kZGxnLmMsIGRsbHMvY29tbWRsZy9mb250ZGxnLmMsCgkgIGRsbHMvY29tbWRsZy9nZW5lcmljLmMsIGRsbHMvY29tbWRsZy9wcmludGRsZy5jLAoJICBkbGxzL2RwbGF5eC9kcGNsYXNzZmFjdG9yeS5jLCBkbGxzL2dkaS9iaWRpMTYuYywKCSAgZGxscy9nZGkvcHJpbnRkcnYuYywgZGxscy9nZGkvdGh1bmsuYywgZGxscy9nZGkvd2luZy5jLAoJICBkbGxzL2tlcm5lbC9jb21tLmMsIGRsbHMva2VybmVsL2RlYnVnZ2VyLmMsCgkgIGRsbHMva2VybmVsL2tlcm5lbF9tYWluLmMsIGRsbHMva2VybmVsL3N0cmluZy5jLAoJICBkbGxzL2tlcm5lbC9zeW5jLmMsIGRsbHMva2VybmVsL3RodW5rLmMsIGRsbHMva2VybmVsL3Rvb2xoZWxwLmMsCgkgIGRsbHMva2VybmVsL3V0dGh1bmsuYywgZGxscy9rZXJuZWwvd2luODdlbS5jLAoJICBkbGxzL2tlcm5lbC93b3d0aHVuay5jLCBkbGxzL2x6ZXhwYW5kL2x6ZXhwYW5kX21haW4uYywKCSAgZGxscy9tcHIvbXByX21haW4uYywgZGxscy9tc2FjbS9wY21jb252ZXJ0ZXIuYywgZGxscy9tc3ZjcnQvY3BwLmMsCgkgIGRsbHMvbXN2Y3J0L2hlYXAuYywgY29udHJvbHMvbWVudS5jLCBkbGxzL2F2aWZpbDMyL2FwaS5jLAoJICBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYywgZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYywKCSAgZGxscy9jb21tZGxnL2NvbG9yZGxnLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCURvY3VtZW50YXRpb24gZml4ZXMuCgoJKiBNYWtlLnJ1bGVzLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy9NYWtlZmlsZS5pbiwKCSAgZGxscy9xdWFydHovLmN2c2lnbm9yZSwgZGxscy9xdWFydHovTWFrZWZpbGUuaW4sCgkgIGRsbHMvcXVhcnR6L21haW4uYywgZGxscy9xdWFydHovcXVhcnR6LnNwZWM6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJQWRkZWQgc3R1YnMgZm9yIHF1YXJ0ei5kbGwuCgoJKiB3aW4zMi9maWxlLmMsIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGZpbGVzL2ZpbGUuYywKCSAgaW5jbHVkZS93aW5iYXNlLmg6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAc3RhcnQuY29tLmF1PgoJRGVjbGFyZSBzdHVicyBmb3IgUmVhZEZpbGVFeCwgV3JpdGVGaWxlRXguCgoJKiBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL2FtYXVkaW8uaCwgaW5jbHVkZS9hbXZpZGVvLmgsCgkgIGluY2x1ZGUvY29udHJvbC5oLCBpbmNsdWRlL3N0cm1pZi5oOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUFkZGVkIHNvbWUgZHNob3cgaGVhZGVycy4KCgkqIGRsbHMvd2luZXBzL3dpbmVwcy5zcGVjLCBkbGxzL3gxMWRydi94MTFkcnYuc3BlYywgZGxscy9NYWtlZmlsZS5pbjoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglGaXggc29tZSBpbnRlciBkbGwgZGVwZW5kZW5jaWVzLgoKCSogZGxscy93c29jazMyL3Byb3RvY29sLmMsIGRsbHMvd3NvY2szMi93c29jazMyLnNwZWM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkIHN0ZGNhbGwtPmNkZWNsIHRodW5rcyBmb3IgaW5ldF9uZXR3b3JrIGFuZCBnZXRuZXRieW5hbWUuCgoJKiBkbGxzL3dpbmVwcy9hZm0uYywgZGxscy93aW5lcHMvaW5pdC5jLCBkbGxzL3dpbmVwcy90cnVldHlwZS5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVJlcGxhY2UgUFJPRklMRV8qIGZ1bmN0aW9ucyBieSBSZWcqLgoKCSogZGxscy9jb21jdGwzMi9yZWJhci5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCVJCQlNfRklYRURTSVpFIHNob3VsZCBub3QgYWZmZWN0IF9BZGp1c3RCYW5kcyAoZm91bmQgYnkgTWlrZSBNY0Nvcm1hY2sKCWluIFdpblppcCkuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0BzdGFydC5jb20uYXU+CglGaXggYnV0dG9uIHRleHQgcGxhY2VtZW50IGZvciBkaXNhYmxlZCBidXR0b25zIChzZWUgV2luemlwIDguMCkuCgoJKiBpbmNsdWRlL3VybG1vbi5oOgoJTmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+CglBZGRlZCBJQmluZEhvc3QsIElXaW5JbmV0SW5mbywgSVdpbkluZXRIdHRwSW5mbyBjbGFzcyBkZWZpbml0aW9ucywKCUJJTkRGLCBCSU5EU1RBVFVTIHN0cnVjdHMuCgoJKiBkbGxzL2dkaS9kaXNwZGliLnNwZWMsIGRsbHMvZ2RpL3dpbmcuc3BlYywgZGxscy9rZXJuZWwvc3RyZXNzLnNwZWMsCgkgIGRsbHMvbXN2aWRlby9tc3ZpZGVvLnNwZWMsIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYywKCSAgZGxscy9vbGUzMi9jb21wb2JqLnNwZWMsIGRsbHMvd2lubW0vbW1zeXN0ZW0uc3BlYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSBpc3N1ZXMgZm91bmQgYnkgd2luYXBpX2NoZWNrLgoKCSogdG9vbHMvd2luYXBpL3dpbmFwaV9leHRyYWN0LCB0b29scy93aW5hcGkvd2luYXBpX2ZpeHVwLAoJICB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5kYXQsIHRvb2xzL3dpbmFwaV9jaGVjay9uYXRpdmVhcGkucG0sCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4xNi9jb21wb2JqLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaS5wbSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9wYXJzZXIucG06CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCVNldmVyYWwgYnVnIGZpeGVzIGFuZCBhZGRpdGlvbnMuCgoJKiBkbGxzL21zdmlkZW8vbXN2aWRlb19tYWluLmMsIG9iamVjdHMvY2xpcHBpbmcuYywgb2JqZWN0cy9wYWxldHRlLmMsCgkgIHdpbmRvd3MvY2xpcGJvYXJkLmMsIHdpbmRvd3MvbWRpLmMsIGNvbnRyb2xzL21lbnUuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglSZXBsYWNlIHNvbWUgMTYtYml0IGNhbGxzIGJ5IHRoZWlyIDMyLWJpdCBlcXVpdmFsZW50cy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglSZW1lbWJlciByZXNwb25zZSBmcm9tIExWTl9HRVRESVNQSU5GTyBpZiB1c2VyIHNldHMgTFZJRl9ESV9TRVRJVEVNLgoKCSogZGxscy93aW4zMnMvd2luMzJzMTYuYywgZGxscy93aW4zMnMvd2luMzJzMTYuc3BlYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglGaW5pc2ggd2luMzJzIHNlcGFyYXRpb24uCgoyMDAxLTA2LTI5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS92ZXJzaW9uLmgsIEFOTk9VTkNFLCBDaGFuZ2VMb2c6CglSZWxlYXNlIDIwMDEwNjI5LgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoyMDAxLTA2LTI5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29uZmlndXJlLmluLCBkbGxzL3VzZXIvZGRlL2NsaWVudC5jLCBkbGxzL3VzZXIvZGRlL21pc2MuYywKCWRsbHMvdXNlci9kZGUvc2VydmVyLmMsIGNvbmZpZ3VyZToKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglGaXggJ21ha2UgZGVwZW5kJyBmb3Igb3V0IG9mIHRoZSBzb3VyY2UgdHJlZSBidWlsZC4KCgkqIGRsbHMvbXN2Y3J0L2V4Y2VwdC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBtaXNzaW5nIGNvbmZpZy5oIGluY2x1ZGUuCgoJKiBkbGxzL3gxMWRydi93aW5wb3MuYzoKCVJlbW92ZWQgdW5uZWNlc3NhcnkgU2V0V2luZG93UG9zIGNhbGwgaW4gU2V0V2luZG93UmduLgoKCSogUkVBRE1FOiBBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglEb2N1bWVudGF0aW9uIHVwZGF0ZS4KCgkqIHdpbmRvd3MveDExZHJ2L01ha2VmaWxlLmluLCB3aW5kb3dzL3gxMWRydi93bmQuYywKCWRsbHMvdHR5ZHJ2L3R0eWRydi5oLCBkbGxzL3R0eWRydi90dHlkcnZfbWFpbi5jLAoJZGxscy90dHlkcnYvd25kLmMsIGRsbHMvdXNlci91c2VyX21haW4uYywgZGxscy94MTFkcnYvd2lucG9zLmMsCglkbGxzL3gxMWRydi94MTFkcnYuc3BlYywgZGxscy94MTFkcnYveDExZHJ2X21haW4uYywKCWluY2x1ZGUvdXNlci5oLCBpbmNsdWRlL3dpbi5oLCBpbmNsdWRlL3gxMWRydi5oLCB3aW5kb3dzL3dpbi5jLAoJd2luZG93cy93aW5wb3MuYzoKCU1vdmVkIEZvcmNlV2luZG93UmFpc2UgdG8gdGhlIFVTRVIgZHJpdmVyIGFuZCByZW1vdmVkIHRoZSBXTkQgZHJpdmVyLgoKCSogd2luZG93cy9tZXNzYWdlLmM6CglUcmF2aXMgTWljaGllbHNlbiA8dGptaWNoaWVsc2VuQHlhaG9vLmNvbT4KCUZpeGVkIGhhbmRsaW5nIG9mIFdNX01PVVNFV0hFRUwgbWVzc2FnZXMgaW4gbm9uLWNsaWVudCBzcGFjZS4KCjIwMDEtMDYtMjggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL2RpYWxvZy5jLCB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy93aW4uYywKCSAgY29udHJvbHMvbWVudS5jLCBkbGxzL250ZGxsL2RlYnVndG9vbHMuYywgZGxscy9udGRsbC9udC5jLAoJICBkbGxzL250ZGxsL3J0bC5jLCBtc2Rvcy9pb3BvcnRzLmMsIG9iamVjdHMvYml0bWFwLmMsCgkgIG9iamVjdHMvYnJ1c2guYywgb2JqZWN0cy9jbGlwcGluZy5jLCBvYmplY3RzL2RjLmMsCgkgIG9iamVjdHMvZGN2YWx1ZXMuYywgb2JqZWN0cy9kaWIuYywgb2JqZWN0cy9mb250LmMsCgkgIG9iamVjdHMvZ2Rpb2JqLmMsIG9iamVjdHMvbWV0YWZpbGUuYywgb2JqZWN0cy9wYWxldHRlLmMsCgkgIG9iamVjdHMvcGVuLmMsIG9iamVjdHMvcmVnaW9uLmMsIG9iamVjdHMvdGV4dC5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglEb2N1bWVudGF0aW9uIG5hbWUgZml4ZXMuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgaW5jbHVkZS9jb25maWcuaC5pbjoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc3VidGxlIGNvbmZpZ3VyZSBidWcgY29uY2VybmluZyBPcGVuR0wuCglGb3VuZCBvbiBGcmVlQlNEICh3aGljaCBoYXMgT3BlbkdMIGluIC91c3IvWDExUjYvbGliKS4KCgkqIGRsbHMvd2lubW0vbW1zeXN0ZW0uYywgZGxscy93aW5tbS9tbXN5c3RlbS5zcGVjOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIGlzc3VlcyBmb3VuZCBieSB3aW5hcGlfY2hlY2suCgoJKiB0b29scy93aW5hcGkvd2luYXBpX2ZpeHVwLCB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5kYXQsCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi91c2VyMzIuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIveDExZHJ2LmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaS5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9jaGVjaywKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9kb2N1bWVudGF0aW9uLnBtLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2xvY2FsLnBtOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglTZXZlcmFsIGJ1ZyBmaXhlcyBhbmQgYWRkaXRpb25zLgoKCSogY29udHJvbHMvZWRpdC5jOgoJQmlsbCBNZWRsYW5kIDxtZWRiaTAxQGFjY3BhYy5jb20+CglJbXByb3ZlZCBoYW5kbGluZyBvZiBzdHlsZXMgaW4gdGhlIGVkaXQgY29udHJvbCwgaW5jbHVkaW5nIGRldGVjdGluZwoJY2hhbmdlcyBvZiBzdHlsZSBhbmQgY29ycmVjdGluZyBoYW5kbGluZyBvZiBpbmNvbnNpc3RhbnQgc3R5bGVzLgoKCSogaW5jbHVkZS93aW5ubHMuaCwgZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvY29tcG9iai5zcGVjLAoJICBkbGxzL29sZTMyL29sZTJubHMuYywgZGxscy9vbGUzMi9vbGUybmxzLnNwZWM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRmluaXNoIG9sZTMyIHNlcGFyYXRpb24uCgoJKiBpbmNsdWRlL3F1ZXVlLmgsIGluY2x1ZGUvc2VydmVyLmgsIHNlcnZlci9xdWV1ZS5jLAoJICB3aW5kb3dzL2lucHV0LmMsIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL3F1ZXVlLmM6CgktIFJlbW92ZSBjb29rZWQgaGFyZHdhcmUgbWVzc2FnZXMgd2hlbiB0aGV5IGFyZSBkcm9wcGVkIChyZXBvcnRlZCBieQoJICBHZXJhcmQgUGF0ZWwpLgoJLSBDb252ZXJ0IGFsbCBwb3N0ZWQgMzItYml0IG1lc3NhZ2VzIHRvIFVuaWNvZGUgYmVmb3JlIHN0b3JpbmcgdGhlbSBpbgoJICB0aGUgcXVldWUuCgktIEZhc3RlciBpbXBsZW1lbnRhdGlvbiBvZiBNU0dfSXNQb2ludGVyTWVzc2FnZS4KCS0gTW92ZWQgYSBjb3VwbGUgb2YgZnVuY3Rpb25zIGZyb20gcXVldWUuYyB0byBtZXNzYWdlLmMuCgoyMDAxLTA2LTI3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS9hY2NvbmZpZy5oLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBpbmNsdWRlL3dpbmUvcG9ydC5oLAoJICBsaWJyYXJ5L3BvcnQuYywgbG9hZGVyL2VsZi5jLCBNYWtlZmlsZS5pbiwgY29uZmlndXJlLAoJICBjb25maWd1cmUuaW46CglQdXQgQUNfREVGSU5FIHN5bWJvbHMgZGVmaW5pdGlvbnMgZGlyZWN0bHkgaW4gdGhlIGNvbmZpZ3VyZSBzY3JpcHQgc28KCXRoYXQgd2Ugbm8gbG9uZ2VyIG5lZWQgYW4gYWNjb25maWcuaC4gQ2xlYW5lZCB1cCBkbG9wZW4oKSB0ZXN0cyBhIGJpdC4KCgkqIG1pc2MvY3B1LmM6IEFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUZpeCBtaXNsZWFkaW5nIFA0IHdhcm5pbmcgbWVzc2FnZSBhcHBlYXJpbmcgZXZlbiBpbiBjYXNlIG9mIG1hdGNoLgoKMjAwMS0wNi0yNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvb3BlbmdsMzIvd2dsLmMsIGRsbHMveDExZHJ2L3dpbmRvdy5jLCBpbmNsdWRlL3gxMWRydi5oOgoJQWRkZWQgd2luZG93IHByb3BlcnRpZXMgdG8gbWFrZSBzb21lIHgxMWRydi1zcGVjaWZpYyBpbmZvcm1hdGlvbgoJYXZhaWxhYmxlIHRvIGhpZ2hlciBsZXZlbCBjb2RlLgoKCSogZG9jdW1lbnRhdGlvbi9zYW1wbGVzL2NvbmZpZywgaW5jbHVkZS9jb25maWcuaC5pbiwKCSAgaW5jbHVkZS9taXNjZW11LmgsIG1zZG9zL01ha2VmaWxlLmluLCBtc2Rvcy9pb3BvcnRzLmMsCgkgIG1zZG9zL3BwZGV2LmMsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQWRkZWQgL2Rldi9wYXJwb3J0IHN1cHBvcnQgZm9yIGRpcmVjdCBwb3J0IGFjY2Vzcy4KCgkqIGRsbHMveDExZHJ2L3dpbnBvcy5jOgoJTWFrZSB0aGUgdmlzaWJsZSByZWdpb24gZW1wdHkgZm9yIG5vbi12aXNpYmxlIHdpbmRvd3MuCgoJKiB3aW5kb3dzL3gxMWRydi9ldmVudC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVJlcGxhY2Ugb25lIG1vcmUgUFJPRklMRV8gZnVuY3Rpb24gYnkgUmVnUXVlcnlWYWx1ZUV4QS4KCgkqIGRsbHMvd2luZXBzL29iamVjdHMuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvb2JqZWN0cy5jLAoJICBncmFwaGljcy93aW4xNmRydi9vYmplY3RzLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJUmVwbGFjZSBzb21lIDE2LWJpdCBjYWxscyBieSB0aGVpciAzMi1iaXQgZXF1aXZhbGVudHMuCgoyMDAxLTA2LTI1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jOgoJRG9uJ3QgY29tcGlsZSB2bTg2LXNwZWNpZmljIGNvZGUgb24gcGxhdGZvcm1zIHRoYXQgZG9uJ3Qgc3VwcG9ydCBpdC4KCgkqIGRsbHMvY29tbWRsZy9jZGxnX1poLnJjLCBkbGxzL2NvbW1kbGcvcnNyYy5yYywKCSAgZGxscy9rZXJuZWwvbmxzL2NodC5ubHMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX1poLnJjLAoJICBkbGxzL3NoZWxsMzIvc2hyZXMucmMsIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX1poLnJjLAoJICBncmFwaGljcy94MTFkcnYvY29kZXBhZ2UuYywgZ3JhcGhpY3MveDExZHJ2L3hmb250LmM6CglKYXUtSG9ybmcgQ2hlbiA8YjY1MDIwMDJAZWUubnR1LmVkdS50dz4KCUFkZGVkIFRyYWRpdGlvbmFsIENoaW5lc2UgU3VwcG9ydAoJRml4ZWQgc3VibGFuZyBmb250IHNpemUgZXJyb3Igd2hlbiBub3QgdXNpbmcgZml4ZWQtc2l6ZSBmb250LgoKCSogZ3JhcGhpY3MveDExZHJ2L2JydXNoLmMsIGdyYXBoaWNzL3gxMWRydi9vYmplY3RzLmMsCgkgIG9iamVjdHMvY2xpcHBpbmcuYywgb2JqZWN0cy9kYy5jLCB3aW5kb3dzL3gxMWRydi9ldmVudC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVJlcGxhY2Ugc29tZSAxNi1iaXQgY2FsbHMgYnkgdGhlaXIgMzItYml0IGVxdWl2YWxlbnRzLgoKCSogaW5jbHVkZS93aW51c2VyLmgsIGluY2x1ZGUveDExZHJ2LmgsIHdpbmRvd3MvaW5wdXQuYywKCSAgd2luZG93cy94MTFkcnYvZXZlbnQuYywgd2luZG93cy94MTFkcnYvbW91c2UuYywKCSAgZGxscy91c2VyL3VzZXIuc3BlYywgZGxscy91c2VyL3VzZXIzMi5zcGVjOgoJSW1wbGVtZW50ZWQgU2VuZElucHV0KCkuCgoJKiBncmFwaGljcy94MTFkcnYvZGliLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQmV0dGVyIHNlcGFyYXRlIHRoZSBYU2htIHVzaW5nIGNvZGUuCgoyMDAxLTA2LTI0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogdG9vbHMvd3JjL3BhcnNlci55OgoJQmFuZyBKdW4tWW91bmcgPGJqeUBtb2d1YS5vcmc+CglBZGQgYSB3b3JrYXJvdW5kIGZvciBhIGJ1ZyBpbiBieWFjYyAoYWdhaW4pLgoKCSogdG9vbHMvZXhhbWluZS1yZWxheToKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgZm9yIG5ldyByZWxheSBmb3JtYXQuIGFkZGVkIHRocmVhZCBrbm93bGVkZ2UuCgoJKiBkbGxzL2NvbWN0bDMyL3JlYmFyLmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJLSBBZGQgc3VwcG9ydCBmb3IgV01fTk9USUZZRk9STUFUIGFuZCBzdXBwb3J0IGJvdGggQU5TSSBhbmQgVU5JQ09ERQoJICBub3RpZnkgZm9ybWF0cy4KCS0gTW92ZSB0aGUgZHJhd2luZyBvZiB0aGUgYmFuZCBiYWNrZ3JvdW5kcyBhbmQgYmFuZCBzZXBhcmF0b3JzIHRvIHRoZQoJICBXTV9FUkFTRUJLR05EIHByb2Nlc3NpbmcganVzdCB0aGUgd2F5IHRoZSBuYXRpdmUgY29udHJvbHMgZG8uCgktIEltcGxlbWVudCBXTV9TRVRSRURSQVcuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWJvZXguYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CgktIEZpeCBtZW1vcnkgbGVha3MuCgktIEFkZCBzdXBwb3J0IGZvciBXTV9OT1RJRllGT1JNQVQgYW5kIHN1cHBvcnQgYm90aCBBTlNJIGFuZCBVTklDT0RFCgkgIG5vdGlmeSBmb3JtYXRzLgoJLSBGaXggc29tZSBkcmF3aW5nIGlzc3VlcyB3aXRoIENPTUJPRVhfRHJhd0l0ZW0uCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglGaXhlZCB0ZXN0IHNvIDB4ZmZmZmZmZmYgaXMgcHJvcGVybHkgcmVjb2duaXplZC4KCjIwMDEtMDYtMjIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5lZGVmYXVsdC5yZWc6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglBZGQgUmVnaXN0ZXJlZE93bmVyIGFuZCBSZWdpc3RlcmVkT3JnYW5pemF0aW9uLgoKCSogaW5jbHVkZS93aW5udC5oOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQHN0YXJ0LmNvbS5hdT4KCUFkZGVkIHNvbWUgZGVmaW5lcyBmb3IgcHJvY2VzcyBzZWN1cml0eSB0b2tlbnMuCgoJKiBjb250cm9scy9zY3JvbGwuYywgZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmMsIG1pc2MvcmVnaXN0cnkuYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCVNwZWxsaW5nIGZpeGVzLgoKCSogbWlzYy9jcHUuYzogQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJR2V0U3lzdGVtSW5mbygpIFBlbnRpdW0gNCBzdXBwb3J0LgoKCSogc2VydmVyL2ZpbGUuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0BzdGFydC5jb20uYXU+CglSZW1vdmUgdHJ1bmNhdGUgZGVidWcgbWVzc2FnZSBwcmludGVkIG9uIHN1Y2Nlc3NmdWwgdHJ1bmNhdGVzLgoKCSogaW5jbHVkZS9kZGUuaCwgaW5jbHVkZS9kZGVtbC5oLCBkbGxzL3VzZXIvZGRlL2NsaWVudC5jLAoJICBkbGxzL3VzZXIvZGRlL2RkZV9wcml2YXRlLmgsIGRsbHMvdXNlci9kZGUvZGRlbWwxNi5jLAoJICBkbGxzL3VzZXIvZGRlL21pc2MuYywgZGxscy91c2VyL2RkZS9zZXJ2ZXIuYywKCSAgZGxscy91c2VyL01ha2VmaWxlLmluLCBkbGxzL3VzZXIvZGRlbWwuYywgZGxscy91c2VyL2RkZW1sMTYuaCwKCSAgZGxscy91c2VyL3VzZXIzMi5zcGVjOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglNZXJnZSBmcm9tIENvcmVsIHRyZWUuIENvbnRyaWJ1dG9ycyBhcmU6CgktIENvcmVsIChTZWFuIExhbmdsZXksIE1pY2hhZWwgQWJkLUVsLU1hbGVrLCBSaWNrIE11dHprZSwgQmlsbCBYaW5nKQoJLSBNYWNhZGFtaWFuIG9uIGJlaGFsZiBvZiBDb3JlbCAoTG91aXMtUGhpbGlwcGUgR2Fnbm9uLCBKZWFuLUNsYXVkZSBCYXRpc3RhKQoJQWxzbyBhZGRlZCBhIGZldyBiaXRzOgoJLSBDb21wbGV0ZSB3aW5kb3cgbW9kZWwgZm9yIHNldmVyYWwgaW5zdGFuY2VzIGFuZCBjb252ZXJzYXRpb25zLgoJLSBTdXBwb3J0IGZvciBhc3luY2hyb25vdXMgdHJhbnNhY3Rpb25zLgoJLSBGaXhlZCBzb21lIGNvZGUgKFdNX0RERV9SRVFVRVNULCBXTV9EREVfQURWSVNFLCBXTV9EREVfUkVRVUVTVCkgaGFuZGxpbmcuCgktIFN1cHBvcnQgZm9yIHdpbGQgY29ubmVjdGlvbnMuCgoJKiB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCBkbGxzL3gxMWRydi93aW5wb3MuYzoKCURvbid0IHJlbHkgb24gWCB0byBleHBvc2Ugd2luZG93cyBjb3ZlcmVkIGJ5IGEgc2libGluZywgZG8gaXQKCW1hbnVhbGx5LgoKMjAwMS0wNi0yMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvdXNlci5oLCB3aW5kb3dzL2N1cnNvcmljb24uYywgd2luZG93cy9pbnB1dC5jLAoJICB3aW5kb3dzL3gxMWRydi9tb3VzZS5jLCBkbGxzL3R0eWRydi90dHlkcnYuc3BlYywKCSAgZGxscy90dHlkcnYvdXNlci5jLCBkbGxzL3VzZXIvZGlzcGxheS5jLCBkbGxzL3VzZXIvdXNlcl9tYWluLmMsCgkgIGRsbHMveDExZHJ2L3gxMWRydi5zcGVjOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglNYWtlIEdldEN1cnNvclBvcyBjYWxsIFhRdWVyeVBvaW50ZXIuCgoJKiBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmMsIGluY2x1ZGUvdGhyZWFkLmg6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUV4dGVuZGVkIF9fd2luZV9lbnRlcl92bTg2IHRvIGhhbmRsZSBwZW5kaW5nIGludGVycnVwdHMuCgoyMDAxLTA2LTIwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS9xdWV1ZS5oLCBpbmNsdWRlL3dpbnBvcy5oLCB3aW5kb3dzL2RlZnduZC5jLAoJICB3aW5kb3dzL2lucHV0LmMsIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL3F1ZXVlLmMsCgkgIHdpbmRvd3Mvd2lucG9zLmMsIHdpbmRvd3Mvd2lucHJvYy5jOgoJQXZvaWQgcmV0dXJuaW5nIGFuIHVubG9ja2VkIHdpbmRvdyBwb2ludGVyIGZyb20gV0lOUE9TX1dpbmRvd0Zyb21Qb2ludC4KCVJlbW92ZWQgYSBmZXcgbm8gbG9uZ2VyIHVzZWQgcm91dGluZXMuCgoJKiBtc2Rvcy9kcG1pLmMsIG1zZG9zL2ludDEwLmMsIG1zZG9zL2ludDExLmMsIG1zZG9zL2ludDEyLmMsCgkgIG1zZG9zL2ludDEzLmMsIG1zZG9zL2ludDE1LmMsIG1zZG9zL2ludDFhLmMsIG1zZG9zL2ludDIwLmMsCgkgIG1zZG9zL2ludDI1LmMsIG1zZG9zL2ludDI2LmMsIG1zZG9zL2ludDJhLmMsIG1zZG9zL2ludDJmLmMsCgkgIG1zZG9zL2ludDNkLmMsIG1zZG9zL2ludDQxLmMsIG1zZG9zL2ludDRiLmMsIG1zZG9zL2ludGVycnVwdHMuYywKCSAgbXNkb3MvdnhkLmMsIG9iamVjdHMvZm9udC5jLCBvYmplY3RzL3JlZ2lvbi5jLAoJICBzY2hlZHVsZXIvY3JpdHNlY3Rpb24uYywgc2NoZWR1bGVyL3RocmVhZC5jLAoJICBkbGxzL3dpbm1tL21tc3lzdGVtLmMsIGRsbHMvd2luc29jay9zb2NrZXQuYywKCSAgZGxscy93aW5zcG9vbC9pbmZvLmMsIGZpbGVzL2RpcmVjdG9yeS5jLCBmaWxlcy9kb3NfZnMuYywKCSAgZmlsZXMvZmlsZS5jLCBmaWxlcy9wcm9maWxlLmMsIGxvYWRlci9tb2R1bGUuYywKCSAgbWVtb3J5L2NvZGVwYWdlLmMsIG1lbW9yeS9nbG9iYWwuYywgbWVtb3J5L3NlbGVjdG9yLmMsCgkgIG1pc2Mvb3B0aW9ucy5jLCBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGUzMi9tb25pa2VyLmMsCgkgIGRsbHMvb2xlMzIvb2xlMnN0dWJzLmMsIGRsbHMvb2xlMzIvb2xlMzJfbWFpbi5jLAoJICBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYywgZGxscy9ycGNydDQvcnBjcnQ0X21haW4uYywKCSAgZGxscy9zZXR1cGFwaS92aXJ0Y29weS5jLCBkbGxzL3NoZG9jdncvc2hkb2N2d19tYWluLmMsCgkgIGRsbHMvc2hlbGwzMi9jaGFuZ2Vub3RpZnkuYywgZGxscy9zaGVsbDMyL3BpZGwuYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywKCSAgZGxscy9zaGVsbDMyL3NoZWxscmVnLmMsIGRsbHMvc2hsd2FwaS9zaGx3YXBpX21haW4uYywKCSAgZGxscy9zaGx3YXBpL3N0cmluZy5jLCBkbGxzL3NobHdhcGkvdXJsLmMsIGRsbHMvd2luaW5ldC9odHRwLmMsCgkgIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmMsIGRsbHMva2VybmVsL3RodW5rLmMsCgkgIGRsbHMvbXNhY20vbXNhY21fbWFpbi5jLCBkbGxzL21zdmlkZW8vZHJhd2RpYi5jLAoJICBkbGxzL250ZGxsL2ZpbGUuYywgZGxscy9udGRsbC9taXNjLmMsIGRsbHMvbnRkbGwvbnQuYywKCSAgZGxscy9udGRsbC9vbS5jLCBkbGxzL250ZGxsL3JlZy5jLCBkbGxzL250ZGxsL3J0bC5jLAoJICBkbGxzL250ZGxsL3NlYy5jLCBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmMsCgkgIGRsbHMvbnRkbGwvc2lnbmFsX3NwYXJjLmMsIGRsbHMvbnRkbGwvc3RyaW5nLmMsCgkgIGRsbHMvbnRkbGwvdGltZS5jLCBkbGxzL250ZGxsL3djc3RyaW5nLmMsIGNvbnRyb2xzL21lbnUuYywKCSAgZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmMsIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYywKCSAgZGxscy9kZHJhdy9tYWluLmMsIGRsbHMvZHBsYXl4L2RwbGF5eF9tYWluLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCURvY3VtZW50YXRpb24gb3JkaW5hbCBmaXhlcy4KCgkqIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL3BhaW50aW5nLmMsIHdpbmRvd3MvcXVldWUuYywKCSAgd2luZG93cy93aW4uYywgZGxscy91c2VyL3VzZXJfbWFpbi5jLCBpbmNsdWRlL3NlcnZlci5oLAoJICBpbmNsdWRlL3dpbi5oLCBzZXJ2ZXIvcXVldWUuYywgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3RyYWNlLmM6CglNb3ZlZCBxdWV1ZSBwYWludCBjb3VudCB0byB0aGUgc2VydmVyLiBSZW1vdmVkIGEgZmV3IG5vIGxvbmdlciB1c2VkCglyb3V0aW5lcy4KCgkqIGRsbHMvY29tbWRsZy9jb21kbGczMi5zcGVjLCBkbGxzL3NldHVwYXBpL3NldHVweC5zcGVjLAoJICBkbGxzL3VzZXIvdXNlci5zcGVjOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIGlzc3VlcyBmb3VuZCBieSB3aW5hcGlfY2hlY2suCgoJKiB0b29scy93aW5hcGkvY29uZmlnLnBtLCB0b29scy93aW5hcGkvd2luYXBpX2ZpeHVwLAoJICB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5wbSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjE2L3NldHVweC5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi93aW5tbS5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGkucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfY2hlY2ssCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfZG9jdW1lbnRhdGlvbi5wbToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJU2V2ZXJhbCBidWcgZml4ZXMgYW5kIGFkZGl0aW9ucy4KCgkqIHByb2dyYW1zL3djbWQvZGlyZWN0b3J5LmM6CglEYXZlIFBpY2tsZXMgPGRhdmVwQGN5dy51a2xpbnV4Lm5ldD4KCS0gRml4IHVuaW5pdGlhbGlzZWQgdmFyaWFibGUgcHJvYmxlbSBpbiBESVIgY29tbWFuZC4KCS0gQ29ycmVjdCBzb21lIGNvbW1lbnRzLgoKCSogZGxscy94MTFkcnYvd2lucG9zLmM6CglDbGlwIHBhcmVudCBjbGllbnQgYXJlYSB3aGVuIHVzaW5nIHRoZSBkcmF3YWJsZSBmcm9tIGEgaGlnaGVyIGxldmVsCglwYXJlbnQuCgoJKiBkbGxzL3gxMWRydi9zY3JvbGwuYzogRml4ZWQgcmVnaW9uIGxlYWsuCgoJKiBncmFwaGljcy94MTFkcnYvY2xpcHBpbmcuYzoKCVN1YnRyYWN0IERDIG9yaWdpbiBmcm9tIGdyYXBoaWNzIGV4cG9zdXJlIGV2ZW50IGNvb3JkaW5hdGVzLgoKMjAwMS0wNi0xOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNlcnZlci9xdWV1ZS5jLCBzZXJ2ZXIvdHJhY2UuYywgdG9vbHMvbWFrZV9yZXF1ZXN0cywKCSAgd2luZG93cy9pbnB1dC5jLCB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy9xdWV1ZS5jLAoJICBkbGxzL3VzZXIvdXNlcl9tYWluLmMsIGRsbHMveDExZHJ2L3dpbmRvdy5jLCBpbmNsdWRlL3F1ZXVlLmgsCgkgIGluY2x1ZGUvc2VydmVyLmg6CglNb3ZlZCBoYXJkd2FyZSBtZXNzYWdlIHF1ZXVlIGhhbmRsaW5nIHRvIHRoZSBzZXJ2ZXIuCgoJKiBzZXJ2ZXIvcmVxdWVzdC5jOgoJSWdub3JlIEVBR0FJTiBlcnJvcnMgaW4gcmVhZF9yZXF1ZXN0LgoKCSogZGxscy92ZXJzaW9uL2luZm8uYywgZGxscy92ZXJzaW9uL2luc3RhbGwuYywKCSAgZGxscy93aW4zMnMvdzMyc2tlcm5lbC5jLCBkbGxzL3dpbjMycy93aW4zMnMxNi5jLAoJICBkbGxzL3dpbmFzcGkvd2luYXNwaTMyLmMsIGRsbHMvd2luaW5ldC9mdHAuYywKCSAgZGxscy93aW5pbmV0L2h0dHAuYywgZGxscy93aW5pbmV0L2ludGVybmV0LmMsCgkgIGRsbHMvd2lubW0vZHJpdmVyLmMsIGRsbHMvd2lubW0vam95c3RpY2suYywgZGxscy93aW5tbS9tY2kuYywKCSAgZGxscy93aW5tbS9tbXN5c3RlbS5jLCBkbGxzL3dpbm1tL3NvdW5kMTYuYywgZGxscy93aW5tbS90aW1lLmMsCgkgIGRsbHMvd2luc29jay9zb2NrZXQuYywgZGxscy93aW5zcG9vbC9pbmZvLmMsCgkgIGRsbHMveDExZHJ2L3dpbmRvdy5jLCBkbGxzL3gxMWRydi93aW5wb3MuYywKCSAgZGxscy94MTFkcnYveDExZHJ2X21haW4uYywgZGxscy9zZXR1cGFwaS9pbmZwYXJzZS5jLAoJICBkbGxzL3NldHVwYXBpL3NldHVweF9tYWluLmMsIGRsbHMvc2V0dXBhcGkvc3R1YnMuYywKCSAgZGxscy9zaGRvY3Z3L3NoZG9jdndfbWFpbi5jLCBkbGxzL3NoZWxsMzIvYnJzZm9sZGVyLmMsCgkgIGRsbHMvc2hlbGwzMi9jaGFuZ2Vub3RpZnkuYywgZGxscy9zaGVsbDMyL2NvbnRyb2wuYywKCSAgZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3NoZWxsLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZGxscy9zaGVsbDMyL3NoZWxsb2xlLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGxmaWxlb3AuYywgZGxscy9zaGVsbDMyL3N5c3RyYXkuYywKCSAgZGxscy9zaGx3YXBpL29yZGluYWwuYywgZGxscy9zaGx3YXBpL3BhdGguYywgZGxscy90dHlkcnYvdXNlci5jLAoJICBkbGxzL3VybG1vbi91bW9uLmMsIGRsbHMvbnRkbGwvb20uYywgZGxscy9udGRsbC9yZWcuYywKCSAgZGxscy9udGRsbC9ydGwuYywgZGxscy9udGRsbC9ydGxzdHIuYywgZGxscy9udGRsbC9zZWMuYywKCSAgZGxscy9udGRsbC9zeW5jLmMsIGRsbHMvbnRkbGwvdGltZS5jLCBkbGxzL29sZTMyL2FudGltb25pa2VyLmMsCgkgIGRsbHMvb2xlMzIvYmluZGN0eC5jLCBkbGxzL29sZTMyL2NvbXBvYmouYywKCSAgZGxscy9vbGUzMi9jb21wb3NpdGVtb25pa2VyLmMsIGRsbHMvb2xlMzIvZXJyb3JpbmZvLmMsCgkgIGRsbHMvb2xlMzIvZmlsZW1vbmlrZXIuYywgZGxscy9vbGUzMi9pdGVtbW9uaWtlci5jLAoJICBkbGxzL29sZTMyL29sZTIuYywgZGxscy9vbGUzMi9vbGUybmxzLmMsIGRsbHMvb2xlMzIvb2xlMnN0dWJzLmMsCgkgIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmMsIGRsbHMvb2xlYXV0MzIvaGFzaC5jLAoJICBkbGxzL29sZWF1dDMyL29sZWF1dC5jLCBkbGxzL29sZWF1dDMyL29sZXBpY3R1cmUuYywKCSAgZGxscy9vbGVhdXQzMi9zYWZlYXJyYXkuYywgZGxscy9vbGVhdXQzMi9zdHVicy5jLAoJICBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYywgZGxscy9vbGVwcm8zMi9vbGVwcm8zMnN0dWJzLmMsCgkgIGRsbHMvb3BlbmdsMzIvd2dsLmMsIGRsbHMvcnBjcnQ0L3JwY3J0NF9tYWluLmMsCgkgIGRsbHMvZHBsYXl4L2RwbGF5LmMsIGRsbHMvZHBsYXl4L2RwbGF5eF9tYWluLmMsCgkgIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmMsIGRsbHMvaWNtcC9pY21wX21haW4uYywKCSAgZGxscy9rZXJuZWwvc3luYy5jLCBkbGxzL2tlcm5lbC90aHVuay5jLAoJICBkbGxzL2x6ZXhwYW5kL2x6ZXhwYW5kX21haW4uYywgZGxscy9tcHIvYXV0aC5jLAoJICBkbGxzL21wci9tdWx0aW5ldC5jLCBkbGxzL21wci9ucHMuYywgZGxscy9tcHIvcHdjYWNoZS5jLAoJICBkbGxzL21wci93bmV0LmMsIGRsbHMvbXNhY20vbXNhY21fbWFpbi5jLCBkbGxzL21zdmNydC9tYmNzLmMsCgkgIGRsbHMvbXN2aWRlby9kcmF3ZGliLmMsIGRsbHMvbXN2aWRlby9tc3ZpZGVvX21haW4uYywKCSAgZGxscy9udGRsbC9lcnJvci5jLCBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jLCBkbGxzL250ZGxsL2ZpbGUuYywKCSAgZGxscy9udGRsbC9udC5jLCBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYywKCSAgZGxscy9jb21jdGwzMi9jb21tY3RybC5jLCBkbGxzL2RkcmF3L21haW4uYywKCSAgZGxscy9kaW5wdXQvZGlucHV0X21haW4uYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRG9jdW1lbnRhdGlvbiBvcmRpbmFsIGZpeGVzLgoKCSogZGxscy93aW5tbS9taWRpbWFwL21pZGltYXAuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRmFpbHMgbWFwcGVyIG9wZW5pbmcgd2hlbiBubyBtaWRpIG91dCBkZXZpY2VzIGFyZSBwcmVzZW50LgoKCSogZGxscy93aW5tbS9tbWlvLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGJ1Z3MgaW4gb3V0cHV0IGZ1bmN0aW9ucyAoYXNjZW5kLCBjcmVhdGVDaHVuaykuCglDbGVhbmVkIHVwIHRyYWNlIG1lc3NhZ2VzLgoJRml4ZWQgc29tZSBtbWlvT3BlbiBmaWxlIG5hbWUgcGFyc2luZy4KCgkqIGluY2x1ZGUvdXJsbW9uLmg6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUJTQ0YgZW51bSBkZWZpbmVzIGZsYWdzLCBub3QgYW4gZW51bWVyYXRpb24uCgoJKiBtc2Rvcy92Z2EuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJTWFkZSBET1MgVkdBIGRpc3BsYXkgYWdhaW4gd2l0aCBsYXN0IG1vbnRocyBERFJBVyB1cGRhdGVzLgoKCSogZ3JhcGhpY3MveDExZHJ2L3hmb250LmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkIFN5c3RlbSBmb250IHRvIHRoZSBzZXQgb2YgZGVmYXVsdCBzYW5zIHNlcmlmIGZvbnRzLgoKCSogZGxscy94MTFkcnYvd2lucG9zLmM6CglGaXhlZCBvbmUgbW9yZSBidWcgaW4gY2xpcF9jaGlsZHJlbi4KCgkqIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjLCBkbGxzL21zdmNydC90aHJlYWQuYywKCSAgaW5jbHVkZS9tc3ZjcnQvcHJvY2Vzcy5oOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIEFkZGVkLCBjbGVhbmVkIHVwIGFuZC9vciBkb2N1bWVudGF0ZWQgX3tiZWdpbixlbmR9dGhyZWFkeyxleH0uCgktIF9sZmluZCBhbmQgX2x0b3cgYXJlIGltcGxlbWVudGVkIChub3Qgc3R1YnMpLgoKCSogZGxscy9tc3ZjcnQvd2NzLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCVJlbW92ZWQgaW1wbGVtZW50YXRpb24gb2YgX3VsdG93IHNpbmNlIGl0IGlzIGZvcndhcmRlZCB0byBOVERMTCBpbiB0aGUKCS5zcGVjIGZpbGUuCgoJKiBkbGxzL2tlcm5lbC9jb21tLmMsIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGluY2x1ZGUvd2luYmFzZS5oOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBHZXRDb21tQ29uZmlnIG51bWJlciBvZiBhcmd1bWVudHMuCgoJKiBNYWtlZmlsZS5pbjogUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+Cgl3aW5lIG5lZWRzIHRvIGJlIGJ1aWx0IGJlZm9yZSB3aW5lZGJnLgoKCSogaWYxNjMyL3JlbGF5LmMsIGRsbHMvYXZpZmlsMzIvYXBpLmMsCgkgIGRsbHMvYXZpZmlsMzIvYXZpZmlsMzIuc3BlYywgZGxscy9rZXJuZWwvZGVidWdnZXIuYywKCSAgZGxscy9rZXJuZWwva2VybmVsLnNwZWMsIGRsbHMva2VybmVsL3RpbWUuYywKCSAgZGxscy91c2VyL3VzZXIzMi5zcGVjLCBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYywKCSAgZGxscy93aW5tbS9tbXN5c3RlbS5jLCBkbGxzL3dpbm1tL21tc3lzdGVtLnNwZWM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgaXNzdWVzIGZvdW5kIGJ5IHdpbmFwaV9jaGVjay4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLmRhdCwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL25hdGl2ZWFwaS5kYXQsCgkgIHRvb2xzL3dpbmFwaV9jaGVjay9wcmVwcm9jZXNzb3IucG0sCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9hdmlmaWwzMi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9jcnRkbGwuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvbXN2Y3J0LmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL29sZTMyLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3NoZWxsMzIuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvdzMyc2tybmwuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvd293MzIuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvd3NvY2szMi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGkucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfY2hlY2ssCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfZG9jdW1lbnRhdGlvbi5wbSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9nbG9iYWwucG0sCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfbG9jYWwucG0sCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfb3B0aW9ucy5wbSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9wYXJzZXIucG06CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gU2xpZ2h0bHkgYmV0dGVyIGhhbmRsaW5nIG9mIGV4dGVybmFsL2ludGVybmFsIG5hbWVzLgoJLSBNaW5vciBidWcgZml4ZXMuCgktIE1pbm9yIEFQSSBmaWxlcyB1cGRhdGUuCgoJKiB0b29scy93aW5hcGkvY29uZmlnLnBtLCB0b29scy93aW5hcGkvd2luYXBpX2V4dHJhY3QsCgkgIHRvb2xzL3dpbmFwaS93aW5hcGlfZml4dXA6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCVNldmVyYWwgYnVnIGZpeGVzIGFuZCBhZGRpdGlvbnMuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYywgZGxscy9jb21jdGwzMi9jb21tY3RybC5jLAoJICBkbGxzL2NvbWN0bDMyL2RyYWdsaXN0LmMsIGRsbHMvY29tY3RsMzIvZmxhdHNiLmMsCgkgIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmMsIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmMsCgkgIGRsbHMvY29tbWRsZy9jZGxnMzIuYywgZGxscy9jb21tZGxnL2NvbG9yZGxnLmMsCgkgIGRsbHMvY29tbWRsZy9maWxlZGxnLmMsIGRsbHMvY29tbWRsZy9maWxldGl0bGUuYywKCSAgZGxscy9jb21tZGxnL2ZpbmRkbGczMi5jLCBkbGxzL2NvbW1kbGcvZm9udGRsZy5jLAoJICBkbGxzL2NvbW1kbGcvZ2VuZXJpYy5jLCBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRG9jdW1lbnRhdGlvbiBvcmRpbmFsIGZpeGVzLgoKCSogZGxscy94MTFkcnYvd2luZG93LmMsIGdyYXBoaWNzL3gxMWRydi9iaXRibHQuYywKCSAgZ3JhcGhpY3MveDExZHJ2L3BhbGV0dGUuYywgZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsCgkgIHdpbmRvd3MveDExZHJ2L2NsaXBib2FyZC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVJlcGxhY2UgUFJPRklMRV8gZnVuY3Rpb25zIGJ5IFJlZ1F1ZXJ5VmFsdWVFeEEgaW4geDExZHJ2LgoKCSogc2VydmVyL2ZpbGUuYzogQmlsbCBNZWRsYW5kIDxtZWRiaTAxQGFjY3BhYy5jb20+CglTZXRGaWxlUG9pbnRlciBjb3JyZWN0aW9uOyByZXR1cm4gRVJST1JfTkVHQVRJVkVfU0VFSyAoYnJva2VuIGJ5IHRoZQoJNjQgYml0IGZpbGUgYWNjZXNzIGVuaGFuY2VtZW50KS4KCgkqIGNvbmZpZ3VyZS5pbiwgdG9vbHMvY29uZmlnLmd1ZXNzLCB0b29scy9jb25maWcuc3ViLCBjb25maWd1cmU6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUFkZGVkIHN1cHBvcnQgZm9yIGF1dG9jb25mIDIuNTAuCgoyMDAxLTA2LTE1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy94MTFkcnYvd2lucG9zLmM6CgljbGlwX2NoaWxkcmVuOiBkb24ndCBjcmFzaCBpZiBjaGlsZCBpcyBub3QgaW4gbGlzdCAoY2FuIGhhcHBlbiBvbgoJV01fTkNDUkVBVEUpLgoKCSogc2NoZWR1bGVyL3N5c2RlcHMuYzoKCUJhbmcgSnVuLVlvdW5nIDxianlAbW9ndWEub3JnPgoJVXNlIGNsb25lKCkgaWYgSEFWRV9DTE9ORSBpcyBkZWZpbmVkLgoKCSogZGxscy9udGRsbC9leGNlcHRpb24uYywgZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jLAoJICBkbGxzL250ZGxsL3NpZ25hbF9zcGFyYy5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglCbG9jayBTSUdJTlQgYW5kIFNJR0FMUk0gaW4gc2lnbmFsIGhhbmRsZXJzLgoKMjAwMS0wNi0xNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG1lbW9yeS92aXJ0dWFsLmM6CglBZGRlZCBkaXJlY3Qgc3lzdGVtIGNhbGwgZm9yIHVuYWxpZ25lZCBtbWFwIHN1cHBvcnQgb24gTGludXguCglTdXBwb3J0IDY0LWJpdCBmaWxlIG9mZnNldHMgaW4gTWFwVmlld09mRmlsZUV4LgoKCSogb2xlL29sZTJubHMuYywgbWlzYy9sc3RyLmMsIG1pc2MvTWFrZWZpbGUuaW4sIGRsbHMvdXNlci9sc3RyLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJTW92ZSBJc0NoYXJBbHBoYUEgYW5kIElzQ2hhckFscGhhTnVtZXJpY0EgdG8gdXNlcjMyLgoJQmV0dGVyIGltcGxlbWVudCBzb21lIG9mIHVzZXIzMiAqQ2hhciogZnVuY3Rpb25zIHJlZ2FyZGluZyBsb2NhbGUuCglSZW1vdmUga2VybmVsMzIgZGVwZW5kZW5jeSBvbiB1c2VyMzIuCgoJKiBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYywgZGxscy93aW5pbmV0L3dpbmluZXQuc3BlYzoKCVVscmljaCBDemVrYWxsYSA8dWN6ZWthbGxhQGNvZGV3ZWF2ZXJzLmNvbT4KCVN0dWIgZm9yIEludGVybmV0R2V0Q29va2llQS4KCgkqIHdpbmRvd3Mvbm9uY2xpZW50LmMsIHdpbmRvd3Mvc3B5LmMsIHdpbmRvd3Mvc3lzbWV0cmljcy5jLAoJICB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3dpbnBvcy5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVJlcGxhY2UgbW9yZSBQUk9GSUxFXyBmdW5jdGlvbnMgYnkgUmVnUXVlcnlWYWx1ZUV4QS4KCgkqIG9iamVjdHMvZGliLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU11bHRpcGxlICpwdHIrKyBjb25zdHJ1Y3RzIGluIG9uZSBleHByZXNzaW9uIGhhdmUgdW5kZWZpbmVkIGJlaGF2aW91ciwKCW1vdmVkIHRoZW0gb3V0IG9mIHRoZSBleHByZXNzaW9uLgoKMjAwMS0wNi0xMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbjMyL2RldmljZS5jLCB3aW4zMi9rZXJuZWwzMi5jLCB3aW4zMi9uZXdmbnMuYywKCSAgc2NoZWR1bGVyL2NyaXRzZWN0aW9uLmMsIHNjaGVkdWxlci9oYW5kbGUuYywgc2NoZWR1bGVyL3BpcGUuYywKCSAgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2NoZWR1bGVyL3N5bmNocm8uYywgc2NoZWR1bGVyL3N5c2xldmVsLmMsCgkgIHNjaGVkdWxlci90aHJlYWQuYywgc2NoZWR1bGVyL3RpbWVyLmMsIHdpbjMyL2NvbnNvbGUuYywKCSAgbG9hZGVyL25lL21vZHVsZS5jLCBsb2FkZXIvbmUvcmVzb3VyY2UuYywgbWVtb3J5L2F0b20uYywKCSAgbWVtb3J5L2Vudmlyb24uYywgbWVtb3J5L2dsb2JhbC5jLCBtZW1vcnkvaGVhcC5jLAoJICBtZW1vcnkvbG9jYWwuYywgbWVtb3J5L3JlZ2lzdHJ5LmMsIG1lbW9yeS9zZWxlY3Rvci5jLAoJICBtZW1vcnkvc3RyaW5nLmMsIG1lbW9yeS92aXJ0dWFsLmMsIG1pc2MvY3B1LmMsIG1pc2MvbHN0ci5jLAoJICBtaXNjL21haW4uYywgbWlzYy9yZWdpc3RyeS5jLCBtaXNjL3ZlcnNpb24uYywgb2xlL29sZTJubHMuYywKCSAgZGxscy91c2VyL2RkZW1sLmMsIGRsbHMvdXNlci9sc3RyLmMsIGRsbHMvd2luc3Bvb2wvaW5mby5jLAoJICBmaWxlcy9jaGFuZ2UuYywgZmlsZXMvZGlyZWN0b3J5LmMsIGZpbGVzL2Rvc19mcy5jLAoJICBmaWxlcy9kcml2ZS5jLCBmaWxlcy9maWxlLmMsIGZpbGVzL3Byb2ZpbGUuYywgZmlsZXMvdGFwZS5jLAoJICBsb2FkZXIvbW9kdWxlLmMsIGxvYWRlci9wZV9yZXNvdXJjZS5jLCBsb2FkZXIvcmVzb3VyY2UuYywKCSAgbG9hZGVyL3Rhc2suYywgZGxscy9nZGkvd2luZy5jLCBkbGxzL2tlcm5lbC9jb21tLmMsCgkgIGRsbHMva2VybmVsL2RlYnVnZ2VyLmMsIGRsbHMva2VybmVsL2Zvcm1hdF9tc2cuYywKCSAgZGxscy9rZXJuZWwvc3RyaW5nLmMsIGRsbHMva2VybmVsL3N5bmMuYywgZGxscy9rZXJuZWwvdGh1bmsuYywKCSAgZGxscy9rZXJuZWwvdGltZS5jLCBkbGxzL2tlcm5lbC90b29saGVscC5jLAoJICBkbGxzL2tlcm5lbC91dHRodW5rLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCURvY3VtZW50YXRpb24gb3JkaW5hbCBmaXhlcyAodXNpbmcgd2luYXBpX2ZpeHVwKS4KCgkqIGRsbHMveDExZHJ2L3dpbnBvcy5jOgoJVXNlIHRoZSB0b3Btb3N0IHBhcmVudCB0aGF0IGlzbid0IGNsaXBwaW5nIGNoaWxkcmVuIGFzIGRyYXdhYmxlLAoJdG8gbWFrZSBzdXJlIHBhcmVudCBzaWJsaW5ncyBhcmUgbm90IGNsaXBwZWQuCgoJKiBkbGxzL2NvbW1kbGcvZm9udGRsZy5jOgoJSWFuIFBpbGNoZXIgPGlhbi5waWxjaGVyQGhvbWUuY29tPgoJTWFrZSBDaG9vc2VGb250VyB1c2UgQ2hvb3NlRm9udEEuCgoJKiB3aW5kb3dzL3gxMWRydi9ldmVudC5jOgoJRm9yY2UgaW52YWxpZGF0aW5nIG9mIHNpYmxpbmdzIGNoaWxkcmVuIG9uIGV4cG9zZSBldmVudC4KCgkqIHRvb2xzL3dpbmFwaS9jb25maWcucG0sIHRvb2xzL3dpbmFwaS9vcHRpb25zLnBtLAoJICB0b29scy93aW5hcGkvb3V0cHV0LnBtLCB0b29scy93aW5hcGkvc2V0dXAucG0sCgkgIHRvb2xzL3dpbmFwaS91dGlsLnBtLCB0b29scy93aW5hcGkvd2luYXBpX2V4dHJhY3QsCgkgIHRvb2xzL3dpbmFwaS93aW5hcGlfZml4dXA6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gTmV3IGNvbW1vbiBjb2RlIGZvciB0aGUgd2luYXBpIHRvb2xzLgoJLSBOZXcgdG9vbCBmb3IgZXh0cmFjdGluZyBzb3VyY2UgY29kZSBpbmZvcm1hdGlvbi4KCS0gTmV3IHRvb2wgZm9yIGF1dG9tYXRpY2FsbHkgbW9kaWZ5aW5nIChmaXhpbmcpIHRoZSBzb3VyY2UgY29kZS4KCgkqIGRsbHMvZ2RpL3ByaW50ZHJ2LmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJUmVwbGFjZSBQUk9GSUxFX0dldFdpbmVJbmlTdHJpbmcgYnkgUmVnUXVlcnlWYWx1ZUV4QS4KCgkqIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmMsIGluY2x1ZGUvZHNvdW5kLmgsIGluY2x1ZGUvd2luZXJyb3IuaDoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgZGVmaW5pdGlvbnMgZm9yIElLc1Byb3BlcnR5U2V0LCBzbWFsbCBzdHViIGltcGxlbWVudGF0aW9uIGZvcgoJSURpcmVjdFNvdW5kM0RCdWZmZXIuIEZpeGVkIG9uZSBwb2ludGVyIHJlZmVyZW5jZS4KCgkqIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglfdHpzZXQganVzdCBmb3J3YXJkcyB0byBsaWJjIHR6c2V0KCkuCgoJKiBkbGxzL21zYWNtL2RyaXZlci5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVByb3RlY3QgYWdhaW5zdCBhIGRyaXZlciBtaXNjb25maWd1cmF0aW9uLgoKMjAwMS0wNi0xMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMveDExZHJ2L3dpbmRvdy5jOgoJRml4ZWQgaGFuZGxpbmcgb2YgemVyby1zaXplZCBjbGllbnQgd2luZG93LgoJQ3JlYXRlIHRoZSBYIHdpbmRvd3MgYmVmb3JlIHNlbmRpbmcgV01fTkNDUkVBVEUuCgoyMDAxLTA2LTExICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZ3JhcGhpY3MveDExZHJ2L2JpdGJsdC5jLCBncmFwaGljcy94MTFkcnYvY2xpcHBpbmcuYywgaW5jbHVkZS94MTFkcnYuaDoKCUFkZGVkIGNvdW50ZXIgZm9yIG9wZXJhdGlvbnMgZ2VuZXJhdGluZyBncmFwaGljcyBleHBvc3VyZXMgdG8gdGhlIERDCglzdHJ1Y3QsIHRvIGF2b2lkIHdhaXRpbmcgZm9yIGV4cG9zZSBldmVudHMgd2hlbiBub25lIHdlcmUgZ2VuZXJhdGVkLgoKCSogZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWMsIGRsbHMvbXN2aWRlby9tc3ZpZGVvX21haW4uYywKCSAgZGxscy9vbGUzMi9hbnRpbW9uaWtlci5jLCBkbGxzL29sZTMyL2NvbXBvYmouYywKCSAgZGxscy9vbGUzMi9jb21wb3NpdGVtb25pa2VyLmMsIGRsbHMvb2xlMzIvaXRlbW1vbmlrZXIuYywKCSAgZGxscy9zaGx3YXBpL29yZGluYWwuYywgZGxscy9zaGx3YXBpL3BhdGguYywgZGxscy9zaGx3YXBpL3JlZy5jLAoJICBkbGxzL3dpbmVwcy9hZm0uYywgZGxscy93aW5lcHMvaW5pdC5jLCBkbGxzL3dpbm1tL21tc3lzdGVtLmMsCgkgIGdyYXBoaWNzL2RyaXZlci5jLCBtaXNjL2NwdS5jLCBkbGxzL2dkaS9wcmludGRydi5jLAoJICBkbGxzL2dsdTMyL2dsdS5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIGlzc3VlcyBmb3VuZCBieSB3aW5hcGlfY2hlY2suCgoJKiBkbGxzL21zYWNtL2RyaXZlci5jLCBkbGxzL21zYWNtL2ZpbHRlci5jLCBkbGxzL21zYWNtL2Zvcm1hdC5jLAoJICBkbGxzL21zYWNtL21zYWNtMzJfbWFpbi5jLCBkbGxzL21zYWNtL3N0cmVhbS5jLAoJICBkbGxzL2RkcmF3L2RjbGlwcGVyL21haW4uYywgZGxscy9kZHJhdy9tYWluLmMsCgkgIGRsbHMva2VybmVsL2RlYnVnZ2VyLmMsIGRsbHMva2VybmVsL3RodW5rLmMsCgkgIGRsbHMva2VybmVsL3dvd3RodW5rLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCURvY3VtZW50YXRpb24gb3JkaW5hbCBmaXhlcyAodXNpbmcgd2luYXBpX2ZpeHVwKS4KCgkqIHNjaGVkdWxlci9zeXNkZXBzLmM6IFdhcm5pbmcgZml4LgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMuZGF0LAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMTYvYXZpZmlsZS5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9hdmlmaWwzMi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9nbHUzMi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9rZXJuZWwzMi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9taWRpbWFwLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL21zdmNydC5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9zaGx3YXBpLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3R0eWRydi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi91cmxtb24uYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvd25hc3BpMzIuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIveDExZHJ2LmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9jaGVjaywKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9wYXJzZXIucG06CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gTWlub3IgQVBJIGZpbGVzIHVwZGF0ZS4KCS0gTWlub3IgYnVnIGZpeGVzLgoKCSogZGxscy93aW5tbS9tY2kuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWxpYXMgYW5kIERldmljZSBUeXBlIGFyZSBjYXNlIGluc2Vuc2l0aXZlLgoKCSogZGxscy9jb21jdGwzMi9yZWJhci5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gY29ycmVjdCByZWJhciB3aW5kb3cgYm9yZGVycyBhbmQgaGFuZGxpbmcgb2YgUkJTX0JPUkRFUlMsIG5vdwoJICBtYXRjaGVzIG5hdGl2ZS4KCS0gbWFqb3IgcmVkZXNpZ24gb2YgYmFuZCBsYXlvdXQsIG5vdyBjb21lcyBhIGxvdCBjbG9zZXIgdG8gbmF0aXZlIGZvcgoJICB0aGUgdGVzdCBwcm9ncmFtcy4KCS0gc3VwcG9ydCBSQlNfVkFSSEVJR0hUIGZvciBib3RoIG9uIGFuZCBvZmYuCgktIGJldHRlciBkZWJ1ZyBpbmZvLCBhbmQgcGVyZm9ybWFuY2UgaW1wcm92ZW1lbnQKCjIwMDEtMDYtMDggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB0b29scy93aW5lYnVpbGQvcmVsYXkuYzoKCUJvYiBHb29kd2luIDxnb29kaWUxQHBhY2JlbGwubmV0PgoJTWFzayBvdXQgZ2FyYmFnZSBpbiB0aGUgdXBwZXIgaGFsZiBvZiBzdGFjayBwb2ludGVyLgoKCSogZGxscy9udGRsbC9kZWJ1Z3Rvb2xzLmMsIGRsbHMvdXNlci90ZXh0LmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglMaW1pdCBvdXRwdXQgZm9yIGNlcnRhaW4gdGV4dCBmdW5jdGlvbnMuCgoJKiBjb25maWd1cmUuaW4sIGluY2x1ZGUvYWNjb25maWcuaCwgaW5jbHVkZS9jb25maWcuaC5pbiwgY29uZmlndXJlOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBjaGVjayBmb3IgYnJva2VuIG1tYXA2NC4KCgkqIGRsbHMvbWFrZV9kbGxzOgoJQWRkZWQgc2NyaXB0IHRvIHVwZGF0ZSBkbGxzIGRlcGVuZGVuY2llcy4KCgkqIGNvbmZpZ3VyZS5pbiwgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9nbHUzMi8uY3ZzaWdub3JlLAoJICBkbGxzL2dsdTMyL01ha2VmaWxlLmluLCBkbGxzL2dsdTMyL2dsdS5jLCBkbGxzL2dsdTMyL2dsdTMyLnNwZWMsCgkgIHRvb2xzL3dpbmVidWlsZC9idWlsZC5oLCBNYWtlLnJ1bGVzLmluLCBjb25maWd1cmU6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUltcGxlbWVudGVkIGdsdTMyLmRsbCBhcyBsaWJHTFUuc28gZm9yd2FyZGVyLgoKCSogaW5jbHVkZS93aW4uaCwgd2luZG93cy9kY2UuYywgZGxscy94MTFkcnYvd2luZG93LmM6CglSZW1vdmVkIFdJTl9OQVRJVkUgZmxhZy4KCgkqIHByb2dyYW1zL3djbWQvZGlyZWN0b3J5LmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVVMQVJHRV9JTlRFR0VSIG1heSBoYXZlIGEgZHVtbXkgc3RydWN0IG5hbWUuCgoJKiBkbGxzL29wZW5nbDMyL29wZW5nbF9leHQuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglVcGdyYWRlIE9wZW5HTCB0aHVua3Mgd2l0aCBsYXRlc3QgaW5mb3JtYXRpb25zIGZyb20gT3BlbkdMIHNwZWMgZmlsZS4KCjIwMDEtMDYtMDcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBsb2FkZXIvdGFzay5jLCB3aW5kb3dzL2NsaXBib2FyZC5jLCB3aW5kb3dzL2RpYWxvZy5jLAoJICB3aW5kb3dzL25vbmNsaWVudC5jLCB3aW5kb3dzL3RpbWVyLmMsIHdpbmRvd3MvdXNlci5jOgoJUmVtb3ZlZCB1bm5lZWRlZCBpbmNsdXNpb24gb2YgcXVldWUuaC4KCgkqIHNjaGVkdWxlci9wcm9jZXNzLmMsIHRvb2xzL3dpbmVidWlsZC9SRUFETUUsCgkgIHRvb2xzL3dpbmVidWlsZC9idWlsZC5oLCB0b29scy93aW5lYnVpbGQvbWFpbi5jLAoJICB0b29scy93aW5lYnVpbGQvcGFyc2VyLmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYzoKCVN1cHBvcnQgZm9yIHNwZWNpZnlpbmcgc3RhY2sgc2l6ZSBvZiBXaW5lbGliIGFwcHMuCgoJKiBkbGxzL2F2aWZpbDMyL01ha2VmaWxlLmluLCBkbGxzL2F2aWZpbDMyL2FwaS5jLAoJICBkbGxzL2F2aWZpbDMyL2F2aWZpbDMyLnNwZWMsIGRsbHMvYXZpZmlsMzIvYXZpZmlsZS5jLAoJICBkbGxzL2F2aWZpbDMyL2F2aWZpbGVfcHJpdmF0ZS5oLCBkbGxzL2F2aWZpbDMyL2NvbWVudHJ5LmMsCgkgIGRsbHMvYXZpZmlsMzIvaWFmaWxlLmMsIGRsbHMvYXZpZmlsMzIvaWFzdHJlYW0uYywKCSAgZGxscy9hdmlmaWwzMi9pZ2ZyYW1lLmMsIGRsbHMvYXZpZmlsMzIvbWFpbi5jLAoJICBkbGxzL2F2aWZpbDMyL3N0cmluZy5jLCBpbmNsdWRlL3Zmdy5oOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUltcGxlbWVudGVkIHNvbWUgcGFydCBvZiBBVklGSUwzMi4KCgkqIHRvb2xzL3dpbmVjb25mOgoJRG9ubiBNaWxsZXIgPGRtbWlsbGVyQGN2em9vbS5uZXQ+CglDYXNlIGluc2Vuc2l0aXZlIHNlYXJjaCBmb3Igd2luLmluaS4KCgkqIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIHdpbjMyL25ld2Zucy5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTdHViIGZvciBHZXRRdWV1ZWRDb21wbGV0aW9uU3RhdHVzLgoKCSogZGxscy9jb21tZGxnL2NkbGdfRnIucmM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBuZXJpbS5uZXQ+CglGaXhlcyB0byBGcmVuY2ggdHJhbnNsYXRpb24gb2YgY29tbW9uIGRpYWxvZyBtZXNzYWdlcy4KCjIwMDEtMDYtMDYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb250cm9scy91aXRvb2xzLmM6CglTdXNhbiBGYXJsZXkgPHN1c2FuQGNvZGV3ZWF2ZXJzLmNvbT4KCUNoYW5nZWQgdGhlIG91dGVyIGNvbG9yIG9mIGEgcHVzaCBidXR0b24gZnJhbWUgZnJvbSBncmF5IHRvIHdoaXRlLAoJbWF0Y2hpbmcgdGhlIFdpbmRvd3MgbG9vazsgbW9kaWZpZWQgdGhlIHBhaW50IHJvdXRpbmUgZm9yIHRoZQoJY2xvc2UgYnV0dG9uIG9mIGEgdG9vbCB3aW5kb3cgdG8gaW1wcm92ZSBzY2FsYWJpbGl0eS4KCgkqIGRsbHMvdHR5ZHJ2L3R0eWRydi5zcGVjLCBkbGxzL3R0eWRydi93bmQuYywKCSAgZGxscy94MTFkcnYvd2luZG93LmMsIGRsbHMveDExZHJ2L3gxMWRydi5zcGVjLCBpbmNsdWRlL3VzZXIuaCwKCSAgd2luZG93cy93aW4uYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQG5lcmltLm5ldD4KCVVzZSBhIGZsYWcgdG8gdGVzdCBpZiBjcmVhdGUgc3RydWN0dXJlIGlzIHVuaWNvZGUuCgoJKiBjb25maWd1cmUuaW4sIGNvbmZpZ3VyZToKCUJhbmcgSnVuLVlvdW5nIDxianlAbW9ndWEub3JnPgoJUmVwbGFjZSAiTGludXggZGxsIiB3aXRoICJHTlUgc3R5bGUgRUxGIGRsbCIuCglSZW1vdmUgc3VwcG9ydCBmb3IgTmV0QlNEIGEub3V0IGRsbC4KCgkqIEJVR1MsIGluY2x1ZGUvd2lubnQuaCwgb2JqZWN0cy9yZWdpb24uYywKCSAgcHJvZ3JhbXMvcmVnYXBpL3JlZ2FwaS5jLCB3aW4zMi9maWxlLmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglEb2N1bWVudGF0aW9uIHVwZGF0ZXMuCgoJKiBkbGxzL3ZlcnNpb24vaW5mby5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJUmVtb3ZlIHVubmVlZGVkIFdJTkFQSS4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzL3dpbmVwcy90cnVldHlwZS5jLCBpbmNsdWRlL2NvbmZpZy5oLmluOgoJSWFuIFBpbGNoZXIgPGlhbi5waWxjaGVyQGhvbWUuY29tPgoJVXNlIGF1dG9jb25mIGNoZWNrcyB0byBjaGVjayBmb3IgdmFyaW91cyBGcmVlVHlwZSBoZWFkZXJzLgoKCSogdG9vbHMvd3JjL3BhcnNlci55LCB0b29scy93cmMvcHJlcHJvYy5jLCB0b29scy93cmMvcGFyc2VyLmgsCgkgIHRvb2xzL3dyYy9wYXJzZXIubDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJV3JjIG5vIGxvbmdlciBuZWVkcyB0byBwYXJzZSBDIGNvZGUuIFJlbW92ZSBjLWp1bmsgaGFuZGxpbmcgY29kZS4KCgkqIGZpbGVzL3Byb2ZpbGUuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQ2hlY2sgZm9yIGVub3VnaCBidWZmZXIgc3BhY2UgaW4gUFJPRklMRV9HZXRTZWN0aW9uKCkuCgoJKiBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglJbXBsZW1lbnRlZCBwYWdlIHNraXBwaW5nIG9uIFBTTl9TRVRBQ1RJVkUgLTEgcmV0dXJuLgoKCSogc2NoZWR1bGVyL3Byb2Nlc3MuYywgaW5jbHVkZS9tb2R1bGUuaCwgbG9hZGVyL21vZHVsZS5jLAoJICBsb2FkZXIvcGVfcmVzb3VyY2UuYzoKCVNldCBsb3ctb3JkZXIgYml0IG9mIG1vZHVsZSBoYW5kbGUgZm9yIExPQURfTElCUkFSWV9BU19EQVRBRklMRS4KCUNsZWFuZWQgdXAgYSBmZXcgSE1PRFVMRS9ITU9EVUxFMTYgbWlzbWF0Y2hlcy4KCgkqIGRsbHMvd2luZXBzL01ha2VmaWxlLmluLCBkbGxzL3dpbmVwcy9kYXRhL0F2YW50R2FyZGVfQm9vay5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0F2YW50R2FyZGVfQm9va09ibGlxdWUuYywKCSAgZGxscy93aW5lcHMvZGF0YS9BdmFudEdhcmRlX0RlbWkuYywKCSAgZGxscy93aW5lcHMvZGF0YS9BdmFudEdhcmRlX0RlbWlPYmxpcXVlLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvQm9va21hbl9EZW1pLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvQm9va21hbl9EZW1pSXRhbGljLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvQm9va21hbl9MaWdodC5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0Jvb2ttYW5fTGlnaHRJdGFsaWMuYywKCSAgZGxscy93aW5lcHMvZGF0YS9Db3VyaWVyLmMsIGRsbHMvd2luZXBzL2RhdGEvQ291cmllcl9Cb2xkLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvQ291cmllcl9Cb2xkT2JsaXF1ZS5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0NvdXJpZXJfT2JsaXF1ZS5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0hlbHZldGljYS5jLCBkbGxzL3dpbmVwcy9kYXRhL0hlbHZldGljYV9Cb2xkLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvSGVsdmV0aWNhX0JvbGRPYmxpcXVlLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvSGVsdmV0aWNhX0NvbmRlbnNlZC5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0hlbHZldGljYV9Db25kZW5zZWRfQm9sZC5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0hlbHZldGljYV9Db25kZW5zZWRfQm9sZE9ibC5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0hlbHZldGljYV9Db25kZW5zZWRfT2JsaXF1ZS5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0hlbHZldGljYV9OYXJyb3cuYywKCSAgZGxscy93aW5lcHMvZGF0YS9IZWx2ZXRpY2FfTmFycm93X0JvbGQuYywKCSAgZGxscy93aW5lcHMvZGF0YS9IZWx2ZXRpY2FfTmFycm93X0JvbGRPYmxpcXVlLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvSGVsdmV0aWNhX05hcnJvd19PYmxpcXVlLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvSGVsdmV0aWNhX09ibGlxdWUuYywKCSAgZGxscy93aW5lcHMvZGF0YS9OZXdDZW50dXJ5U2NobGJrX0JvbGQuYywKCSAgZGxscy93aW5lcHMvZGF0YS9OZXdDZW50dXJ5U2NobGJrX0JvbGRJdGFsaWMuYywKCSAgZGxscy93aW5lcHMvZGF0YS9OZXdDZW50dXJ5U2NobGJrX0l0YWxpYy5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL05ld0NlbnR1cnlTY2hsYmtfUm9tYW4uYywKCSAgZGxscy93aW5lcHMvZGF0YS9QYWxhdGlub19Cb2xkLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvUGFsYXRpbm9fQm9sZEl0YWxpYy5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL1BhbGF0aW5vX0l0YWxpYy5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL1BhbGF0aW5vX1JvbWFuLmMsIGRsbHMvd2luZXBzL2RhdGEvU3ltYm9sLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvVGltZXNfQm9sZC5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL1RpbWVzX0JvbGRJdGFsaWMuYywKCSAgZGxscy93aW5lcHMvZGF0YS9UaW1lc19JdGFsaWMuYywgZGxscy93aW5lcHMvZGF0YS9UaW1lc19Sb21hbi5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL1phcGZDaGFuY2VyeV9NZWRpdW1JdGFsaWMuYywKCSAgZGxscy93aW5lcHMvZGF0YS9aYXBmRGluZ2JhdHMuYywgZGxscy93aW5lcHMvZGF0YS9hZ2wuYzoKCUlhbiBQaWxjaGVyIDxpYW4ucGlsY2hlckBob21lLmNvbT4KCVVwZGF0ZWQgYnVpbHQtaW4gbWV0cmljcyBmb3IgY29yZSBQb3N0U2NyaXB0IGZvbnRzLgoKCSogaW5jbHVkZS9nZGkuaDoKCUlhbiBQaWxjaGVyIDxpYW4ucGlsY2hlckBob21lLmNvbT4KCUZpeGVkIHR5cG8gaW4gSU5URVJOQUxfWVdTVE9EUy4KCgkqIGRsbHMvd2luZXBzL3RydWV0eXBlLmM6CglJYW4gUGlsY2hlciA8aWFuLnBpbGNoZXJAaG9tZS5jb20+CglSZW1vdmVkIGluY29ycmVjdCBzdHJpbmcgbGVuZ3RoIGNhbGN1bGF0aW9uLgoKCSogZGxscy91c2VyL3VzZXIzMi5zcGVjLCBpbmNsdWRlL3dpbnVzZXIuaCwgd2luZG93cy93aW5wb3MuYzoKCUJvYmJ5IEJpbmdoYW0gPHVobW1tbUBhbWVyaXRlY2gubmV0PgoJU3R1YiBpbXBsZW1lbnRhdGlvbiBvZiBBbmltYXRlV2luZG93KCkuCgoJKiBpbmNsdWRlL3duYXNwaTMyLmgsIGRsbHMvd2luYXNwaS93aW5hc3BpMzIuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJU29tZSBBU1BJIGZpeGVzLCBTQ19HRVRfRElTS19JTkZPIHN0dWJiZWQsIGJ1dCByZXR1cm5pbmcgc3VjZXNzLCBBU1BJCglidWZmZXIgYWxsb2NhdGlvbi9mcmVlIGltcGxlbWVudGVkLgoKMjAwMS0wNi0wNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MvcGFpbnRpbmcuYywgd2luZG93cy9zY3JvbGwuYywgd2luZG93cy93aW4uYywKCSAgd2luZG93cy93aW5wb3MuYywgd2luZG93cy94MTFkcnYvY2xpcGJvYXJkLmMsCgkgIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmMsCgkgIHdpbmRvd3MveDExZHJ2L21vdXNlLmMsIHdpbmRvd3MveDExZHJ2L3duZC5jLAoJICBkbGxzL3R0eWRydi90dHlkcnYuc3BlYywgZGxscy90dHlkcnYvd25kLmMsCgkgIGRsbHMvdXNlci91c2VyX21haW4uYywgZGxscy94MTFkcnYvTWFrZWZpbGUuaW4sCgkgIGRsbHMveDExZHJ2L2Rlc2t0b3AuYywgZGxscy94MTFkcnYvc2Nyb2xsLmMsCgkgIGRsbHMveDExZHJ2L3dpbmRvdy5jLCBkbGxzL3gxMWRydi93aW5wb3MuYywKCSAgZGxscy94MTFkcnYveDExZGRyYXcuYywgZGxscy94MTFkcnYveDExZHJ2LnNwZWMsCgkgIGdyYXBoaWNzL3gxMWRydi9iaXRibHQuYywgZ3JhcGhpY3MveDExZHJ2L2JpdG1hcC5jLAoJICBncmFwaGljcy94MTFkcnYvY2xpcHBpbmcuYywgaW5jbHVkZS91c2VyLmgsIGluY2x1ZGUvd2luLmgsCgkgIGluY2x1ZGUvd2lucG9zLmgsIGluY2x1ZGUveDExZHJ2LmgsIHdpbmRvd3MvZGNlLmMsCgkgIHdpbmRvd3MvZGVmd25kLmMsIHdpbmRvd3Mvbm9uY2xpZW50LmM6CglDcmVhdGUgYW4gWCB3aW5kb3cgZm9yIGV2ZXJ5IHdpbmRvdywgaW5jbHVkaW5nIGNoaWxkcmVuLgoJRml4ZWQgbm9uLWNsaWVudCByZWN0YW5nbGUgY2FsY3VsYXRpb25zIGluIG1hbmFnZWQgbW9kZS4KCUFkZGVkIHN1cHBvcnQgZm9yIGljb24gd2luZG93IGluIG1hbmFnZWQgbW9kZS4KCgkqIHRvb2xzL3dyYy9wcGwubCwgdG9vbHMvd3JjL3BweS55OgoJTWFjaWVrIEthbGlzemV3c2tpIDxrZW5vbkBnbzIucGw+CglBZGRlZCBzdXBwb3J0IGZvciBSQ0lOQ0xVREUgZGlyZWN0aXZlLiBOb3cgd3JjIGlnbm9yZXMgZXZlcnl0aGluZwoJZXhjZXB0IHByZXByb2Nlc3NvciBkaXJlY3RpdmVzIGZyb20gaW5jbHVkZWQgKi5oICouYyBmaWxlcy4KCgkqIHRvb2xzL3dyYy9wcHkueToKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRml4IHRoZSBjb252ZXJzaW9uIG9mIE1TIHN0eWxlICcjbGluZScgZGlyZWN0aXZlcyB0byBnY2Mgc3R5bGUuCgoJKiBwcm9ncmFtcy93Y21kL0NoYW5nZUxvZywgcHJvZ3JhbXMvd2NtZC9SRUFETUUsCgkgIHByb2dyYW1zL3djbWQvYnVpbHRpbnMuYywgcHJvZ3JhbXMvd2NtZC9kaXJlY3RvcnkuYywKCSAgcHJvZ3JhbXMvd2NtZC93Y21kLmgsIHByb2dyYW1zL3djbWQvd2NtZG1haW4uYzoKCURhdmUgUGlja2xlcyA8ZGF2ZXBAY3l3LnVrbGludXgubmV0PgoJLSBSZXBvcnQgZmlsZSBhbmQgZGlyZWN0b3J5IHNpemVzIHVzaW5nIDY0LWJpdCBhcml0aG1ldGljIChsaWtlIE5UKS4KCS0gSGFuZGxlIHBpcGVzIGluIGNvbW1hbmRzLgoKCSogdG9vbHMvd2luZW1ha2VyOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUlOU1RBTExfTElCUkFSWSBkb2VzIG5vdCBleGlzdCwgdXNlIElOU1RBTExfUFJPR1JBTS4gRml4IGhhbmRsaW5nIG9mCgl0aGUgSU5TVEFMTCogdmFyaWFibGVzLgoJV2luZWxpYiBhcHBsaWNhdGlvbnMgZG9uJ3QgbmVlZCB0byBsaW5rIHdpdGggWCwgaTM4Niwgb3NzYXVkaW8sIHhwZzQsCgltbWFwLCB1dGlsLCBkbCBvciBjdXJzZXMuIE9ubHkgd2luZSBkb2VzIChub3JtYWxseSkuCglSZW1vdmUgWUFDQyAmIExFWCB2YXJpYWJsZXMgKE1ha2UucnVsZXMuaW4pLgoJV2luZW1ha2VyJ3MgbWFrZWZpbGVzIGRvbid0IHVzZSBsZGNvbmZpZy4KCgkqIHdpbmRvd3Mvbm9uY2xpZW50LmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlIG9wdGltaXphdGlvbiBpbiBOQ19IYW5kbGVOQ0FjdGl2YXRlLgoKCSogd2luZG93cy9zcHkuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglEaXNwbGF5IGV4dHJhIGRhdGEgZm9yIFdNX05PVElGWSB0aGF0IHVzZSBOTUNPTUJPRVh7QXxXfS4KCjIwMDEtMDUtMzEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb250cm9scy9jb21iby5jOgoJU3VzYW4gRmFybGV5IDxzdXNhbkBjb2Rld2VhdmVycy5jb20+CglEaXNhYmxlIHRoZSBlZGl0IGJveCB3aGVuIGNyZWF0ZWQgd2l0aCBXU19ESVNBQkxFRC4KCgkqIGRsbHMvdXJsbW9uL3Vtb24uYywgZGxscy91cmxtb24vdXJsbW9uLnNwZWMsIGluY2x1ZGUvdXJsbW9uLmg6CglNYWx0ZSBTdGFyb3N0aWsgPE1hbHRlLlN0YXJvc3Rpa0B0LW9ubGluZS5kZT4KCUltcGxlbWVudGVkIHNvbWUgdmVyeSBiYXNpYyBmdW5jdGlvbmFsaXR5LgoKCSogTWFrZS5ydWxlcy5pbiwgZGxscy9nZGkvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL01ha2VmaWxlLmluLAoJICBkbGxzL3VzZXIvTWFrZWZpbGUuaW46CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJTGlzdCAxNi1iaXQgcmVzb3VyY2VzIHNlcGFyYXRlbHkgYXMgUkNfU1JDUzE2LgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW46CglNYXJjdXMgTWVpc3NuZXIgPE1hcmN1cy5NZWlzc25lckBjYWxkZXJhLmRlPgoJSWYgeW91IGhhdmUgZnJlZXR5cGUxIGFuZCBmcmVldHlwZTIgY29leGlzdGluZywgZnJlZXR5cGUtY29uZmlnIHNob3VsZAoJYmUgZnJlZXR5cGUyLWNvbmZpZy4KCgkqIGRsbHMvd2luZXBzL2FmbS5jOgoJSWFuIFBpbGNoZXIgPGlhbi5waWxjaGVyQGhvbWUuY29tPgoJRml4ZWQgZm9udCBtZXRyaWMgcm91bmRpbmcgZXJyb3IuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJVE9PTEJBUl9JbnNlcnRCdXR0b25BOiBJZiBpU3RyaW5nPT0tMSB0aGVuIGRvbid0IHVzZSBpdCBhcyBhIHBvaW50ZXIuCgoJKiBkbGxzL21zdmNydC9maWxlLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCWZjbG9zZSBzaG91bGQgcmV0dXJuIEVPRiAoLTEpIGlmIGFuIGVycm9yIGNvbmRpdGlvbiBleGlzdHMuCgoJKiBkbGxzL21zdmNydC9kYXRhLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUNhbGwgRnJlZUVudmlyb25tZW50U3RyaW5ncyB3aGVuIG1zdmNydCBpcyB1bmxvYWRlZC4KCgkqIGRsbHMvbXN2Y3J0L2NwcC5jLCBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYywgaW5jbHVkZS9tc3ZjcnQvZWguaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBtc3ZjcnQvZWguaC4KCUltcGxlbWVudGVkIHVuZXhwZWN0ZWQsIHRlcm1pbmF0ZSBhbmQgc2V0X3VuZXhwZWN0ZWQvdGVybWluYXRlLgoKCSogZGxscy9vbGVhdXQzMi92YXJpYW50LmMsIGluY2x1ZGUvb2xlYXV0by5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCB0aGUgVmFyWHh4RnJvbUN5IGNvbnZlcnNpb25zLgoJUmVtb3ZlIChjb21tZW50ZWQtb3V0KSByZWZlcmVuY2VzIHRvIGluZXhpc3RlbnQgVmFyWHh4RnJvbTMyIGZ1bmN0aW9ucy4KCVJlbW92ZSBvYnNvbGV0ZSAnMzInIHN1ZmZpeGVzLgoKCSogZGxscy9kZHJhdy9kZHJhdy9tYWluLmM6CglKYXNvbiBNY011bGxhbiA8am1jbXVsbGFuQGxpbnV4Y2FyZS5jb20+CglNb3JlIGFjY3VyYXRlIHN0dWIgb2YgRERSQVc6R2V0Rm91ckNDQ29kZXMuCgoJKiBjb250cm9scy9zY3JvbGwuYzoKCUJvYmJ5IEJpbmdoYW0gPHVobW1tbUBhbWVyaXRlY2gubmV0PgoJRml4ZWQgc2Nyb2xsYmFycyByZXR1cm4gdmFsdWUgdG8gdGhlIFNCTV9TRVRSQU5HRSBhbmQKCVNCTV9TRVRSQU5HRVJFRFJBVyBtZXNzYWdlcy4KCjIwMDEtMDUtMjkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3dpbmVwcy9kYXRhL05ld0NlbnR1cnlTY2hsYmtfQm9sZC5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL05ld0NlbnR1cnlTY2hsYmtfQm9sZEl0YWxpYy5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL05ld0NlbnR1cnlTY2hsYmtfSXRhbGljLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvTmV3Q2VudHVyeVNjaGxia19Sb21hbi5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL1BhbGF0aW5vX0JvbGQuYywKCSAgZGxscy93aW5lcHMvZGF0YS9QYWxhdGlub19Cb2xkSXRhbGljLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvUGFsYXRpbm9fSXRhbGljLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvUGFsYXRpbm9fUm9tYW4uYywgZGxscy93aW5lcHMvZGF0YS9TeW1ib2wuYywKCSAgZGxscy93aW5lcHMvZGF0YS9UaW1lc19Cb2xkLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvVGltZXNfQm9sZEl0YWxpYy5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL1RpbWVzX0l0YWxpYy5jLCBkbGxzL3dpbmVwcy9kYXRhL1RpbWVzX1JvbWFuLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvWmFwZkNoYW5jZXJ5X01lZGl1bUl0YWxpYy5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL1phcGZEaW5nYmF0cy5jLCBkbGxzL3dpbmVwcy9kYXRhL2FnbC5jLAoJICBkbGxzL3dpbmVwcy9NYWtlZmlsZS5pbiwgZGxscy93aW5lcHMvYWZtLmMsIGRsbHMvd2luZXBzL2FmbTJjLmMsCgkgIGRsbHMvd2luZXBzL2FnbC5jLCBkbGxzL3dpbmVwcy9kYXRhL0F2YW50R2FyZGVfQm9vay5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0F2YW50R2FyZGVfQm9va09ibGlxdWUuYywKCSAgZGxscy93aW5lcHMvZGF0YS9BdmFudEdhcmRlX0RlbWkuYywKCSAgZGxscy93aW5lcHMvZGF0YS9BdmFudEdhcmRlX0RlbWlPYmxpcXVlLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvQm9va21hbl9EZW1pLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvQm9va21hbl9EZW1pSXRhbGljLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvQm9va21hbl9MaWdodC5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0Jvb2ttYW5fTGlnaHRJdGFsaWMuYywKCSAgZGxscy93aW5lcHMvZGF0YS9Db3VyaWVyLmMsIGRsbHMvd2luZXBzL2RhdGEvQ291cmllcl9Cb2xkLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvQ291cmllcl9Cb2xkT2JsaXF1ZS5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0NvdXJpZXJfT2JsaXF1ZS5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0hlbHZldGljYS5jLCBkbGxzL3dpbmVwcy9kYXRhL0hlbHZldGljYV9Cb2xkLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvSGVsdmV0aWNhX0JvbGRPYmxpcXVlLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvSGVsdmV0aWNhX0NvbmRlbnNlZC5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0hlbHZldGljYV9Db25kZW5zZWRfQm9sZC5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0hlbHZldGljYV9Db25kZW5zZWRfQm9sZE9ibC5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0hlbHZldGljYV9Db25kZW5zZWRfT2JsaXF1ZS5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0hlbHZldGljYV9OYXJyb3cuYywKCSAgZGxscy93aW5lcHMvZGF0YS9IZWx2ZXRpY2FfTmFycm93X0JvbGQuYywKCSAgZGxscy93aW5lcHMvZGF0YS9IZWx2ZXRpY2FfTmFycm93X0JvbGRPYmxpcXVlLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvSGVsdmV0aWNhX05hcnJvd19PYmxpcXVlLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvSGVsdmV0aWNhX09ibGlxdWUuYywgZGxscy93aW5lcHMvbWthZ2wuYywKCSAgZGxscy93aW5lcHMvcHNkcnYuaCwgY29uZmlndXJlLCBjb25maWd1cmUuaW46CglJYW4gUGlsY2hlciA8aWFuLnBpbGNoZXJAaG9tZS5jb20+CglCdWlsZCBBRk0gZGF0YSBmb3IgY29yZSBQb3N0U2NyaXB0IGZvbnRzIGludG8gV0lORVBTLgoKCSogaW5jbHVkZS9hY2NvbmZpZy5oLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBpbmNsdWRlL3dpbmUvcG9ydC5oLAoJICBsaWJyYXJ5L3BvcnQuYywgc2VydmVyL2ZpbGUuYywgd2luMzIvZmlsZS5jLCBjb25maWd1cmUsCgkgIGNvbmZpZ3VyZS5pbiwgZmlsZXMvZmlsZS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglEcm9wIGFueSBmaWxlNjQgZnVuY3Rpb25zLCB0cnkgdG8gdXNlIHN5c3RlbSBzdXBwbGllZCA2NC1iaXQgbW9kZSBieQoJdXNpbmcgcHJvcGVyIGRlZmluZXMuCgoJKiBvbGUvb2xlMm5scy5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJV2hlbiByZWFkaW5nIHJlc291cmNlcyBpbiBOTFNfTG9hZFN0cmluZ0V4VyB3ZSBzaG91bGQgbWFwCglTVUJMQU5HX05FVVRSQUwgdG8gU1VCTEFOR19ERUZBVUxULgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglBdHRlbXB0IHRvIHdyaXRlIGZyYWdtZW50cyBhbmQgY2hlY2sgd2hldGhlciB3ZSBjYW4gbm90aWZ5IHRoZSBjbGllbnQKCWFmdGVyIGV2ZXJ5IG1lc3NhZ2UuCgoJKiBkbGxzL3NobHdhcGkvcGF0aC5jLCBpbmNsdWRlL3NobHdhcGkuaDoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRmlyc3QgdHJ5IGF0IGltcGxlbWVudGluZyBQYXRoR2V0Q2hhclR5cGUoKS4KCgkqIHRvb2xzL3dyYy9wcHkueToKCU1hY2llayBLYWxpc3pld3NraSA8a2Vub25AZ28yLnBsPgoJQWRkZWQgYmV0dGVyIEdDQy1zdHlsZSAjbGluZSBkaXJlY3RpdmUgaGFuZGxpbmcuCgoJKiB0b29scy93aW5lbWFrZXI6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJY29uZmlndXJlLmluOiBSZW1vdmUgdW5uZWNlc3NhcnkgQUNfUFJPR19SQU5MSUIgY2hlY2sKCU1ha2UucnVsZXMuaW46IEFkZCBtaXNzaW5nIENYWCB2YXJpYWJsZQoJQ29zbWV0aWMgY2hhbmdlcwoKCSogbGlicmFyeS9NYWtlZmlsZS5pbjoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglMaW5rIGxpYndpbmUuc28gd2l0aCAkKExJQlMpLgoKCSogZGxscy93aW5lcHMvdHJ1ZXR5cGUuYzoKCUlhbiBQaWxjaGVyIDxpYW4ucGlsY2hlckBob21lLmNvbT4KCVVzZSBtYWNyb3MgZm9yIEZyZWVUeXBlIGluY2x1ZGVzLgoKMjAwMS0wNS0yNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGZpbGVzL2Rvc19mcy5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglEb24ndCBqdXN0IGFzc3VtZSBldmVyeXRoaW5nIGlzIGEgRG9zIERldmljZSwgb3IgbWlyYyB3aWxsIG5vdCBnZXQgYW55CglEQ0Mgc2VuZHMuCgoJKiBkbGxzL2NvbWN0bDMyL2RhdGV0aW1lLmM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBhc2kuZnI+CglJbXBsZW1lbnRlZCBEVE1fR0VUL1NFVFJBTkdFLgoKMjAwMS0wNS0yNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLAoJICBkbGxzL2tlcm5lbC9rZXJuZWxfbWFpbi5jLCBkbGxzL2tlcm5lbC9zdHJpbmcuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglSZW1vdmUga2VybmVsMzIgZGVwZW5kZW5jeSBvbiB1c2VyMzIgYnkgaW1wbGVtZW50aW5nIGZhbWlseSBvZiBrMzIKCWZ1bmN0aW9ucyBhcyBjYWxsb3V0cyB0byB1c2VyMzIuCgoJKiBpbmNsdWRlL3dpbmVycm9yLmg6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglBZGRlZCBhbiB1bmtub3duIFZ4RCBlcnJvciBjb2RlLgoKCSogZG9jdW1lbnRhdGlvbi9pbnN0YWxsYXRpb24tdW5kLWtvbmZpZ3VyYXRpb24uZ2VybWFuOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJVXBkYXRlZCBHZXJtYW4gZG9jdW1lbnRhdGlvbi4KCgkqIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmMsIGRsbHMvd2lubW0vam95c3RpY2svam95c3RpY2suYywKCSAgZGxscy93aW5tbS90aW1lLmMsIGxvYWRlci90YXNrLmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglTcGVsbGluZyBmaXhlcy4KCgkqIGRsbHMvdXNlci91c2VyLnNwZWMsIHdpbmRvd3MvbWVzc2FnZS5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJR2V0IHJpZCBvZiBHZXRDdXJyZW50VGltZTE2KCkuCgoJKiBpbmNsdWRlL3Nub29wLmgsIGxvYWRlci9lbGYuYywgbG9hZGVyL3BlX2ltYWdlLmMsIHJlbGF5MzIvc25vb3AuYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCU1ha2Ugc25vb3AgY29kZSB0YWtlIG9yZGluYWwgYmFzZSBpbnRvIGFjY291bnQuCgoJKiBkbGxzL2tlcm5lbC9jb21tLmMsIGluY2x1ZGUvd2luZS93aW51c2VyMTYuaDoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCS0gQnVpbGRDb21tRENCMTYoKSB1c2VzIGludCBpbnN0ZWFkIG9mIEJPT0wKCS0gT3BlbkNvbW0xNigpIHNob3VsZCByZXR1cm4gSUVfQkFESUQgZm9yICphbGwqIGludmFsaWQgc3RyaW5ncwoKCSogZGxscy9zaGx3YXBpL29yZGluYWwuYywgZGxscy9zaGx3YXBpL3JlZy5jLAoJICBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjLCBkbGxzL3NobHdhcGkvc3RyaW5nLmMsCgkgIGRsbHMvc2hsd2FwaS91cmwuYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCS0gYWRkIHN0dWJzIFNITFdBUElfMjk0LCBVcmxBcHBseVNjaGVtZVcKCS0gY29ycmVjdCBTSExXQVBJXzE1MSBwYXJhbWV0ZXJzCgktIGltcGxlbWVudGVkIFN0clRyaW1BCgoJKiBkbGxzL3NldHVwYXBpL3ZpcnRjb3B5LmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglWY3BRdWV1ZURlbGV0ZSgpIGRvZXMgbm90IGhhdmUgYSBMUEVYUEFORFZUQkwgcGFyYW1ldGVyLgoKCSogd2luMzIvZGV2aWNlLmM6IEFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCS0gYWRkIGhhbmRsZXIgZm9yIFZDRCBWeEQgKCJ2aXJ0dWFsIGNvbW0gZGV2aWNlIiA/KQoJLSBTZXRMYXN0RXJyb3IoIEVSUk9SX0lOVkFMSURfRlVOQ1RJT04gKTsgZm9yIHVuaW1wbGVtZW50ZWQgZnVuY3Rpb25zCgktIHNwZWxsaW5nIGZpeGVzCgoJKiBkbGxzL3dpbmVwcy9wc2Rydi5oOgoJSWFuIFBpbGNoZXIgPGlhbi5waWxjaGVyQGhvbWUuY29tPgoJQWRkZWQgQXZnQ2hhcldpZHRoIG1lbWJlciB0byBmb250IG1ldHJpY3MuCgoJKiBkbGxzL3dpbmVwcy9hZ2wuYzoKCUlhbiBQaWxjaGVyIDxpYW4ucGlsY2hlckBob21lLmNvbT4KCVVwZGF0ZWQgUG9zdFNjcmlwdCBnbHlwaCBuYW1lIGRhdGEuCgoJKiBtaXNjL3ZlcnNpb24uYzoKCUphbWVzIEp1cmFuIDxqYW1lc2p1cmFuQGFsdW1uaS5wc3UuZWR1PgoJT25seSBmYWlsIHdpdGggRVJST1JfSU5TVUZGSUNJRU5UX0JVRkZFUiBpZiB0aGUgc3RydWN0dXJlIHNpemUgaXMKCWFjdHVhbGx5IHRvbyBzbWFsbC4KCjIwMDEtMDUtMjIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB0b29scy93aW5lYnVpbGQvYnVpbGQuaCwgdG9vbHMvd2luZWJ1aWxkL2ltcG9ydC5jLAoJICB0b29scy93aW5lYnVpbGQvbWFpbi5jLCB0b29scy93aW5lYnVpbGQvcGFyc2VyLmMsCgkgIHRvb2xzL3dpbmVidWlsZC9zcGVjMTYuYywgdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVkIHNvbWUgaXNzdWVzLgoKCSogaW5jbHVkZS93aW5wb3MuaCwgd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3Mvd2lucG9zLmM6CglNYWtlIFdJTl9XaW5kb3dGcm9tUG9pbnQgdGFrZSBhIFBPSU5UIGluc3RlYWQgb2YgYSBQT0lOVDE2LgoJU21hbGwgYnVnIGZpeCBpbiBzY29wZSB3aW5kb3cgaGFuZGxpbmcuCglBbHdheXMgY2hlY2sgZm9yIG1lc3NhZ2Ugd2hlbiBRU19TRU5ETUVTU0FHRSBpcyBzZXQuCgoJKiBkb2N1bWVudGF0aW9uL2NvbmZpZ3VyaW5nLnNnbWwsIGRvY3VtZW50YXRpb24vbXVsdGltZWRpYS5zZ21sLAoJICBkb2N1bWVudGF0aW9uL3N0YXR1cy9tdWx0aW1lZGlhLCBkb2N1bWVudGF0aW9uL3dpbmUtZG9jLnNnbWw6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCVVwZGF0ZWQgbXVsdGltZWRpYSBkb2N1bWVudGF0aW9uLgoKCSogZGxscy9tc2FjbS9kcml2ZXIuYywgZGxscy9tc2FjbS9maWx0ZXIuYywgZGxscy9tc2FjbS9mb3JtYXQuYywKCSAgZGxscy9tc2FjbS9pbnRlcm5hbC5jLCBkbGxzL21zYWNtL21zYWNtMzJfbWFpbi5jLAoJICBkbGxzL21zYWNtL3BjbWNvbnZlcnRlci5jLCBkbGxzL21zYWNtL3N0cmVhbS5jLAoJICBkbGxzL21zYWNtL3dpbmVhY20uaDoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJTWltaWMgbW9yZSBjbG9zZWx5IFdpbmRvd3MnIGJlaGF2aW9yIChhIE1TQUNNIGRyaXZlciBpcyBhbHdheXMgb3BlbmVkCgl0d2ljZTogZmlyc3QgdGltZSBmb3IgaW5mbyBnYXRoZXJpbmcsIHN1YnNlcXVlbnQgb3BlbmluZ3MgZm9yCgljb252ZXJzaW9ucykuCglBZGRlZCBmb3JtYXQgc3VnZ2VzdGlvbiBmb3IgUENNLgoJQ2xlYW5lZCB1cCBpbnRlcm5hbCBzdHJ1Y3R1cmVzLgoKCSogZGxscy93aW5tbS9taWRpbWFwL21pZGltYXAuYywKCSAgZGxscy93aW5tbS9taWRpbWFwL21pZGltYXAuZHJ2LnNwZWMsIHdpbmVkZWZhdWx0LnJlZzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJTWFkZSBtaWRpIG1hcHBlciBtb3JlIHJvYnVzdC4KCUFkZGVkIGNoYW5uZWwgdG8gZGV2aWNlL2NoYW5uZWwgbWFwcGluZy4KCVJlbW92ZWQgbWlkaUluIG1hcHBpbmcgKGl0IGRvZXNuJ3QgZXhpc3Qgb24gV2luZG93cykuCgoJKiBkbGxzL3dpbm1tL2xvbHZsZHJ2LmMsIGRvY3VtZW50YXRpb24vc2FtcGxlcy9jb25maWc6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCU5vdyBsb2FkaW5nIHRoZSBkZWZhdWx0IHNldHRpbmcgZm9yIGxvdyBsZXZlbCBkcml2ZXJzIGZyb20gcmVnaXN0cnkuCgoJKiBtaXNjL2Nkcm9tLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJVXNlIG1lbXNldCByYXRoZXIgdGhhbiBiemVyby4KCgkqIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjLCBkbGxzL21zdmNydC9wcm9jZXNzLmM6CglNaWtlIEJvbmQgPG1ib25kQGNveC5yci5jb20+CglGaXhlZCBzcGF3bmxwIGFuZCBhZGRlZCBleGVjIHZhcmlhbnRzLgoKCSogZGxscy9rZXJuZWwvY29tbS5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVNtYWxsIGNsZWFuIHVwLgoKCSogZ3JhcGhpY3Mvd2luMTZkcnYvaW5pdC5jLCBvYmplY3RzL2dkaW9iai5jLCBvYmplY3RzL21ldGFmaWxlLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRml4ZWQgc29tZSBkbGwgc2VwYXJhdGlvbiBpc3N1ZXMuCgoJKiBkbGxzL21zdmNydC9kYXRhLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUNvcnJlY3RseSBnZW5lcmF0ZSB0aGUgZW52aXJvbm1lbnQgZ2xvYmFsIHZhcmlhYmxlcy4KCjIwMDEtMDUtMjEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzZXJ2ZXIvcXVldWUuYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQGFzaS5mcj4KCVRha2UgbWVzc2FnZSBmaWx0ZXJzIGludG8gYWNjb3VudCBmb3IgV01fUEFJTlQgdG9vLgoKCSogZGVidWdnZXIvYnJlYWsuYywgZGVidWdnZXIvZGVidWdnZXIuaCwgZGVidWdnZXIvaW5mby5jLAoJICBkZWJ1Z2dlci9zdGFicy5jLCBkZWJ1Z2dlci93aW5lZGJnLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIHRoZSBub3Rpb24gb2YgZGVsYXllZCBicmVha3BvaW50ICh3aGVuIGEgZnVuY3Rpb24gaXMgbm90IGxvYWRlZAoJeWV0LCB0aGUgbmFtZSB3aWxsIGJlIHRyaWVkIGFnYWluIGZvciBlYWNoIG5ldyBsb2FkZWQgbW9kdWxlKS4KCgkqIGRsbHMvY29tbWRsZy9jZGxnX0ZyLnJjOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglTb21lIEZyZW5jaCB0cmFuc2xhdGlvbnMuCgoJKiBkbGxzL3dpbm1tL3dhdmVtYXAvd2F2ZW1hcC5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBvcGVuIHJlcXVlc3RzIGluIGNhc2Ugb2YgZXJyb3IgKGlmIHRoZSBwaHlzaWNhbCBkZXZpY2UgZmFpbGVkIHRvCglvcGVuLCB0aGUgQUNNIHN0cmVhbSB3YXMgbGVmdCBvcGVuZWQpLgoJQWRkZWQgbWFwcGluZyBzZWFyY2ggZm9yIHdhdmVJbiBkZXZpY2VzLgoKCSogd2luZG93cy9zeXNwYXJhbXMuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgYmFzaWMgc3VwcG9ydCBmb3IgU1BJX0dFVFNDUkVFTlJFQURFUi4KCjIwMDEtMDUtMTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzZXJ2ZXIvcXVldWUuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgcmVwbHlfbWVzc2FnZSB3aGVuIHRoZXJlIGlzIG5vIHJlY2VpdmVkIG1lc3NhZ2UuCgoJKiB3aW5kb3dzL3RpbWVyLmM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBhc2kuZnI+CglGaXhlZCBTZXRUaW1lciBmb3IgaHduZCA9PSAwLgoKCSogZGVidWdnZXIvaGFzaC5jOgoJSmFtZXMgSnVyYW4gPGphbWVzanVyYW5AYWx1bW5pLnBzdS5lZHU+CglBY2NlcHQgcmVzcG9uc2VzIGZyb20gMS4ubiB3aGVuIGNob29zaW5nIGZyb20gbXVsdGlwbGUgc3ltYm9scyB0bwoJbWF0Y2ggdGhlIGlucHV0IGxhYmVscy4KCjIwMDEtMDUtMTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzZXJ2ZXIvcXVldWUuYzoKCUZpeGVkIHR5cG8gaW4gbWVzc2FnZSBmaWx0ZXIgY2hlY2suCgoJKiBpbmNsdWRlL3RocmVhZC5oLCBsb2FkZXIvdGFzay5jLCBzY2hlZHVsZXIvdGhyZWFkLmM6CglSZW1vdmVkIFRIUkVBRF9Jc1dpbjE2LgoKCSogY29udHJvbHMvbWVudS5jOgoJVWxyaWNoIEN6ZWthbGxhIDx1Y3pla2FsbGFAY29kZXdlYXZlcnMuY29tPgoJRml4IG1lbnUgYmVoYXZpb3VyIHdoZW4gZXNjYXBlIGlzIHByZXNzZWQuCgoJKiB3aW4zMi9maWxlLmM6CglNYXJjdXMgTWVpc3NuZXIgPE1hcmN1cy5NZWlzc25lckBjYWxkZXJhLmRlPgoJRG8gbm90IHJldHVybiBGQUxTRSBvbiBTZXRGaWxlQXR0cmlidXRlcygpIGZhaWx1cmUgKGluIHJlYWRvbmx5CglkaXJlY3Rvcnkgc2V0dXBzKS4KCgkqIHNlcnZlci9xdWV1ZS5jLCBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvdGhyZWFkLmMsCgkgIHNlcnZlci90cmFjZS5jLCB3aW5kb3dzL2NsaXBib2FyZC5jLCB3aW5kb3dzL21lc3NhZ2UuYywKCSAgd2luZG93cy9xdWV1ZS5jLCB3aW5kb3dzL3RpbWVyLmMsIHdpbmRvd3Mvd2luLmMsCgkgIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIGRsbHMvdXNlci91c2VyMzIuc3BlYywKCSAgZGxscy91c2VyL3VzZXJfbWFpbi5jLCBkbGxzL3gxMWRydi94MTFkcnYuc3BlYywKCSAgaW5jbHVkZS9tZXNzYWdlLmgsIGluY2x1ZGUvcXVldWUuaCwgaW5jbHVkZS9zZXJ2ZXIuaCwKCSAgaW5jbHVkZS91c2VyLmgsIGluY2x1ZGUvd2ludXNlci5oOgoJTW92ZWQgdGhlIG1ham9yIHBhcnQgb2YgbWVzc2FnZSBxdWV1ZSBhbmQgd2luZG93IHRpbWVyIGhhbmRsaW5nIGludG8KCXRoZSBzZXJ2ZXIuCglJbXBsZW1lbnRlZCBNc2dXYWl0Rm9yTXVsdGlwbGVPYmplY3RzRXguCgoJKiB3aW5kb3dzL3gxMWRydi9jbGlwYm9hcmQuYywgd2luZG93cy9kZWZ3bmQuYywKCSAgZG9jdW1lbnRhdGlvbi93aW5lbGliLXBvcnRpbmcuc2dtbCwgZGxscy9vbGVhdXQzMi92YXJpYW50LmMsCgkgIGRsbHMvZHBsYXl4L2RwbGF5c3AuYywgZGxscy9jb21jdGwzMi9tb250aGNhbC5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglTcGVsbGluZyB0eXBvcy4KCgkqIGRsbHMveDExZHJ2L3h2aWRtb2RlLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIGNvbXBpbGUgaWYgd2UgZG8gbm90IGhhdmUgdGhlIHhmODZ2aWRtb2RlIGV4dGVuc2lvbi4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYzoKCU1hcmN1cyBNZWlzc25lciA8TWFyY3VzLk1laXNzbmVyQGNhbGRlcmEuZGU+CglUaGUgc2hlbGwgc3BlY2lhbCBmb2xkZXIgcGF0aCBjcmVhdGlvbiBkaWQgbm90IG1rZGlyIHRoZSBsYXN0Cgljb21wb25lbnQgb2YgdGhlIHBhdGggaWYgaXQgZGlkIG5vdCBlbmQgd2l0aCBcLgoKCSogc2NoZWR1bGVyL3RocmVhZC5jLCBpbmNsdWRlL3dpbm50Lmg6CglNYXJjdXMgTWVpc3NuZXIgPE1hcmN1cy5NZWlzc25lckBjYWxkZXJhLmRlPgoJRW5oYW5jZWQgU2V0VGhyZWFkRXhlY3V0aW9uU3RhdGUgc3R1Yi4KCgkqIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjLCBkbGxzL21zdmNydC9wcm9jZXNzLmM6CglNaWtlIEJvbmQgPG1ib25kQGNveC5yci5jb20+CglJbXBsZW1lbnRhdGlvbiBvZiBzcGF3bmwgYW5kIHNwYXdubHAuCgoJKiBkbGxzL3dpbnNwb29sL2luZm8uYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJVXNlIG9sZGVyIGN1cHNHZXRQcmludGVycygpIEFQSSBzbyB3ZSBzdXBwb3J0IENVUFMgMS4wLnggdG9vIChhcyBmb3VuZAoJaW4gRGViaWFuIFBvdGF0bykuCglPbmx5IHNldCB0aGUgZGVmYXVsdCBwcmludGVyIGlmIHRoZXJlIGlzIG5vIGVudHJ5IHlldCBvciBpdCBpcyBub3QKCVdJTkVQUyBkcml2ZW4uCgoJKiB3aW5kb3dzL2lucHV0LmM6IEp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCUtleWJvYXJkIGV2ZW50cyBkaWQgbm90IHVwZGF0ZSBBc3luY0tleVN0YXRlVGFibGUsIG5vdyB0aGV5IGRvLgoKCSogY29udHJvbHMvZWRpdC5jLCBkbGxzL2ltbTMyL2ltbS5jOgoJSmFtZXMgSnVyYW4gPGphbWVzanVyYW5AYWx1bW5pLnBzdS5lZHU+CglNYWtlIHN1cmUgd2Ugc2V0IGR3T1NWZXJzaW9uSW5mb1NpemUgYmVmb3JlIGNhbGxpbmcgR2V0VmVyc2lvbkluZm8oKS4KCjIwMDEtMDUtMTYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3gxMWRydi9kZ2EyLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkb3B0ZWQgdG8gbmV3IHRocmVhZGVkIGRpc3BsYXlzLgoKCSogZGxscy93aW5lcHMvTWFrZWZpbGUuaW4sIGRsbHMvd2luZXBzL2FmbS5jLCBkbGxzL3dpbmVwcy9wc2Rydi5oLAoJICBkbGxzL3dpbmVwcy90cnVldHlwZS5jLCBpbmNsdWRlL2FjY29uZmlnLmgsIGluY2x1ZGUvY29uZmlnLmguaW4sCgkgIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJSWFuIFBpbGNoZXIgPGlhbi5waWxjaGVyQGhvbWUuY29tPgoJUmVhZCBtZXRyaWNzIGZyb20gVHJ1ZVR5cGUgZm9udHMuCgoJKiB3aW5kb3dzL21kaS5jOiBCaWxsIE1lZGxhbmQgPG1lZGJpMDFAYWNjcGFjLmNvbT4KCU9ubHkgbWVhc3VyZSBjaGlsZCByZWN0YW5nbGVzIG9mIHZpc2libGUgY2hpbGRyZW4gd2hlbiBkZWNpZGluZyBhYm91dAoJc2Nyb2xsIGJhcnMuCgoJKiBkbGxzL3dpbnNwb29sL2luZm8uYzoKCUlhbiBQaWxjaGVyIDxpYW4ucGlsY2hlckBob21lLmNvbT4KCURpc2FibGUgL2V0Yy9wcmludGNhcCBwYXJzaW5nIGlmIG5vIFBQRCBmaWxlIHNwZWNpZmllZC4KCgkqIGRsbHMvd2luZXBzL2FmbS5jLCBkbGxzL3dpbmVwcy9wc2Rydi5oOgoJSWFuIFBpbGNoZXIgPGlhbi5waWxjaGVyQGhvbWUuY29tPgoJR3Vlc3N0aW1hdGUgV2luZG93cyBmb250IG1ldHJpY3MgZm9yIFR5cGUgMSBmb250cy4KCgkqIHdpbmRvd3MveDExZHJ2L2NsaXBib2FyZC5jLCB3aW5kb3dzL3gxMWRydi9ldmVudC5jLAoJICB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jLCB3aW5kb3dzL3gxMWRydi9tb3VzZS5jLAoJICB3aW5kb3dzL3gxMWRydi93bmQuYywgd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3MvcXVldWUuYywKCSAgd2luZG93cy91c2VyLmMsIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3Mvd2lucG9zLmMsCgkgIGRsbHMvdXNlci9kaXNwbGF5LmMsIGRsbHMvdXNlci91c2VyX21haW4uYywKCSAgZGxscy94MTFkcnYvTWFrZWZpbGUuaW4sIGRsbHMveDExZHJ2L2Rlc2t0b3AuYywKCSAgZGxscy94MTFkcnYvZGdhMi5jLCBkbGxzL3gxMWRydi93aW5kb3cuYywgZGxscy94MTFkcnYvd2lucG9zLmMsCgkgIGRsbHMveDExZHJ2L3gxMWRkcmF3LmMsIGRsbHMveDExZHJ2L3gxMWRydi5zcGVjLAoJICBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jLCBpbmNsdWRlL3RocmVhZC5oLCBpbmNsdWRlL3VzZXIuaCwKCSAgaW5jbHVkZS94MTFkcnYuaCwgY29udHJvbHMvZGVza3RvcC5jLCBkbGxzL3R0eWRydi90dHlkcnYuc3BlYywKCSAgZGxscy90dHlkcnYvdXNlci5jOgoJQ3JlYXRlIGFuIFggY29ubmVjdGlvbiBmb3IgZWFjaCB0aHJlYWQsIGFuZCBwcm9jZXNzIFggZXZlbnRzIGluIHRoZQoJdGhyZWFkIHRoYXQgY3JlYXRlZCB0aGUgY29ycmVzcG9uZGluZyBYIHdpbmRvdy4KCVNwYXduIGEgc2VwYXJhdGUgdGhyZWFkIHRvIHJ1biB0aGUgZGVza3RvcCBtZXNzYWdlIGxvb3AgaW4gZGVza3RvcAoJbW9kZS4KCgkqIGluY2x1ZGUvd2luZS9wb3J0LmgsIGxpYnJhcnkvcG9ydC5jOgoJV2FybmluZ3MgZml4ZXMuCgoyMDAxLTA1LTE0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbGlicmFyeS9wb3J0LmMsIGxvYWRlci9kb3MvZG9zbW9kLmMsIGxvYWRlci9uZS9yZXNvdXJjZS5jLAoJICBsb2FkZXIvbmUvc2VnbWVudC5jLCBtc2Rvcy9pbnQxMy5jLCBtc2Rvcy9pbnQyMS5jLAoJICBzZXJ2ZXIvY29uc29sZS5jLCBzZXJ2ZXIvZmlsZS5jLCBzZXJ2ZXIvcGlwZS5jLCBzZXJ2ZXIvc2VyaWFsLmMsCgkgIHNlcnZlci9zb2NrLmMsIHdpbjMyL2RldmljZS5jLCB3aW4zMi9maWxlLmMsCgkgIHdpbmRvd3MvY2xpcGJvYXJkLmMsIGRsbHMvd2luYXNwaS9hc3BpLmMsCgkgIGRsbHMvd2luYXNwaS93aW5hc3BpMTYuYywgZGxscy93aW5hc3BpL3dpbmFzcGkzMi5jLAoJICBkbGxzL3dpbmVkb3MvZG9zdm0uYywgZGxscy93aW5lcHMvYWZtLmMsIGRsbHMvd2luaW5ldC9mdHAuYywKCSAgZmlsZXMvZmlsZS5jLCBncmFwaGljcy94MTFkcnYveGZvbnQuYywgaW5jbHVkZS9hY2NvbmZpZy5oLAoJICBpbmNsdWRlL2NvbmZpZy5oLmluLCBpbmNsdWRlL3dpbmUvcG9ydC5oLCBsaWJyYXJ5L2xvYWRlci5jLAoJICBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy9zaGVsbDMyL3NoZWxsbGluay5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglJbXBsZW1lbnRlZCA2NGJpdCBmaWxlIHNpemUgaGFuZGxpbmcuCglSZW1vdmVkIHNldmVyYWwgdW5uZWVkZWQgc3lzL3N0YXQuaCBpbmNsdWRlcy4KCgkqIHdpbmRvd3MvcXVldWUuYzoKCUNsZWFyIG93bmVyIG9mIHN5c3RlbSBtZXNzYWdlIHF1ZXVlIHRvIGF2b2lkIGZyZWVpbmcgaXQgd2hlbiB0aGUgZmlyc3QKCXRhc2sgZXhpdHMuCgoJKiBkb2N1bWVudGF0aW9uL3ByaW50aW5nLnNnbWw6CglJYW4gUGlsY2hlciA8aWFuLnBpbGNoZXJAaG9tZS5jb20+CglBZGQgY2xvc2luZyB0YWdzLgoKCSogaW5jbHVkZS93aW5zb2NrLmg6CglCYW5nIEp1bi1Zb3VuZyA8Ymp5QG1vZ3VhLm9yZz4KCURlZmluZSBIQVZFX1NZU19TT0NLRVRfSCBvbiBOZXRCU0QgYW5kIEZyZWVCU0QuCgoJKiBjb250cm9scy9tZW51LmM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBhc2kuZnI+CglUZXN0IGlmIHRoZSBtZW51IGlzIGRlc3Ryb3llZCBiZWZvcmUgZGlzcGxheWluZyBhIG1lbnUgaXRlbS4KCjIwMDEtMDUtMTEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb250cm9scy9tZW51LmMsIGRsbHMvdXNlci9jb250cm9scy5oLCB3aW5kb3dzL3VzZXIuYywgd2luZG93cy93aW4uYzoKCUNyZWF0ZSBhIG5ldyB3aW5kb3cgZm9yIHRoZSB0b3AgcG9wdXAgbWVudSBvbiBldmVyeSBuZXcgbWVudSB0cmFja2luZywKCXNvIHRoYXQgdGhlIHdpbmRvdyBiZWxvbmdzIHRvIHRoZSByaWdodCB0aHJlYWQuCgoJKiBkbGxzL3dpbmVwcy9mb250LmMsIGZpbGVzL2RyaXZlLmMsCgkgIGdyYXBoaWNzL2VuaG1ldGFmaWxlZHJ2L2luaXQuYywgZ3JhcGhpY3Mvd2luMTZkcnYvZm9udC5jLAoJICBncmFwaGljcy94MTFkcnYveGZvbnQuYywgb2JqZWN0cy9mb250LmMsIGNvbnRyb2xzL2xpc3Rib3guYywKCSAgZGxscy9hdmlmaWwzMi9hdmlmaWxlLmMsIGRsbHMvY29tY3RsMzIvc3RhdHVzLmMsCgkgIGRsbHMvY29tY3RsMzIvdGFiLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnLmMsIGRsbHMvbXN2Y3J0L2RhdGEuYywKCSAgZGxscy9tc3ZjcnQvZGlyLmMsIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJUmVtb3ZlIHVubmVjZXNzYXJ5IHNpbmdsZSBxdW90aW5nIG9mIGRlYnVnc3RyX3h4eCBzdHJpbmdzLgoKCSogZG9jdW1lbnRhdGlvbi9jb25maWd1cmluZy5zZ21sLCBkb2N1bWVudGF0aW9uL3J1bm5pbmcuc2dtbDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQWRkIGEgd2FybmluZyBzYXlpbmcgdGhhdCB0aGUgeDExZHJ2IHNlY3Rpb24gaXMgZ2V0dGluZyBvdXRkYXRlZC4KCUFkZCB0ZW1wbGF0ZXMgZm9yIG1pc3NpbmcgY29uZmlndXJhdGlvbiBvcHRpb25zIHRvIHRoZSB4MTFkcnYgc2VjdGlvbi4KCVJlbW92ZSBvYnNvbGV0ZSBjb21tYW5kLWxpbmUgb3B0aW9ucy4KCgkqIGluY2x1ZGUvaW1hZ2VobHAuaCwgaW5jbHVkZS93aW5iYXNlLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVJlbW92ZWQgc29tZSBtb3JlIG9ic29sZXRlIDMyIHN1ZmZpeGVzLgoKCSogZGxscy93aW5lcHMvYWZtLmM6CglJYW4gUGlsY2hlciA8aWFuLnBpbGNoZXJAaG9tZS5jb20+CglFbGltaW5hdGUgX19jb21wYXJfZm5fdC4KCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywgZGxscy9vcGVuZ2wzMi93Z2wuYywKCSAgZGxscy94MTFkcnYveDExZGRyYXcuYywgZGxscy94MTFkcnYveDExZHJ2X21haW4uYywKCSAgZGxscy94MTFkcnYveHZpZG1vZGUuYywgZ3JhcGhpY3MveDExZHJ2L2JpdGJsdC5jLAoJICBncmFwaGljcy94MTFkcnYvYml0bWFwLmMsIGdyYXBoaWNzL3gxMWRydi9icnVzaC5jLAoJICBncmFwaGljcy94MTFkcnYvY2xpcHBpbmcuYywgZ3JhcGhpY3MveDExZHJ2L2RpYi5jLAoJICBncmFwaGljcy94MTFkcnYvZ3JhcGhpY3MuYywgZ3JhcGhpY3MveDExZHJ2L2luaXQuYywKCSAgZ3JhcGhpY3MveDExZHJ2L29lbWJpdG1hcC5jLCBncmFwaGljcy94MTFkcnYvb3BlbmdsLmMsCgkgIGdyYXBoaWNzL3gxMWRydi9wYWxldHRlLmMsIGdyYXBoaWNzL3gxMWRydi90ZXh0LmMsCgkgIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLCBpbmNsdWRlL3gxMWRydi5oLAoJICB3aW5kb3dzL3gxMWRydi9jbGlwYm9hcmQuYywgd2luZG93cy94MTFkcnYvd25kLmM6CglSZW5hbWVkIGRpc3BsYXkgdG8gZ2RpX2Rpc3BsYXkgd2hlcmUgaXQgaXMgdXNlZCBmb3IgR0RJIG9wZXJhdGlvbnMsIHRvCglhbGxvdyBzdXBwb3J0aW5nIG11bHRpcGxlIFggY29ubmVjdGlvbnMuCgoyMDAxLTA1LTEwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS92ZXJzaW9uLmgsIEFOTk9VTkNFLCBDaGFuZ2VMb2c6CglSZWxlYXNlIDIwMDEwNTEwLgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoyMDAxLTA1LTEwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy94MTFkcnYvd2luZG93LmMsIHdpbmRvd3Mvd2luLmM6CglGaXhlZCByZXBhcmVudGluZyB0byBkZXNrdG9wIChmb3VuZCBieSBHZXJhcmQgUGF0ZWwpLgoKCSogbG9hZGVyL21vZHVsZS5jOgoJUmVhbGx5IGZyZWUgdGhlIG1lbW9yeSBvbiBkbGwgdW5sb2FkLgoKCSogZGxscy91c2VyL3VzZXJfbWFpbi5jLCBkbGxzL3gxMWRydi93aW5kb3cuYywKCSAgZGxscy94MTFkcnYveDExZHJ2LnNwZWMsIGluY2x1ZGUvdXNlci5oLCBpbmNsdWRlL3dpbi5oLAoJICB3aW5kb3dzL3Njcm9sbC5jLCB3aW5kb3dzL3gxMWRydi93bmQuYywgZGxscy90dHlkcnYvd25kLmM6CglNb3ZlZCBTY3JvbGxXaW5kb3dFeCBpbXBsZW1lbnRhdGlvbiB0byB0aGUgZ3JhcGhpY3MgZHJpdmVyLgoKCSogdG9vbHMvd2luZWxhdW5jaGVyLmluOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCURvbid0IHN0YXJ0IGFwcGxpY2F0aW9ucyBpbiB0aGUgYmFja2dyb3VuZCB0byBhdm9pZCBicmVha2luZyBjb25zb2xlCglhcHBsaWNhdGlvbnMuCgoJKiBpbmNsdWRlL3dpbmUvb2JqX29sZWF1dC5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglUaGUgZGVjbGFyYXRpb24gb2YgREVDSU1BTCBpbiBWQVJJQU5UIGhhcHBlbnMgaW4gdGhlIHdyb25nIHBsYWNlLgoJQ29tbWVudCBvdXQgZm9yIG5vdy4KCgkqIGRvY3VtZW50YXRpb24vcHJpbnRpbmcuc2dtbDoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQ2hhbmdlZCB0aGUgcHJpbnRpbmcgZG9jdW1lbnRhdGlvbiB0byBpbmNsdWRlIENVUFMgYW5kIExQUiBzdXBwb3J0LAoJYWxzbyBnaXZlIHNvbWUgaGludHMgb24gQUZNIGZpbGVzIGluIHN5c3RlbSBhbmQgZ2VuZXJpYy5wcGQuCgoJKiBkb2N1bWVudGF0aW9uL3NhbXBsZXMvZ2VuZXJpYy5wcGQ6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIGEgZ2VuZXJpYyBsZXZlbCAzIGNvbG9yIHBvc3RzY3JpcHQgUFBEIChmb3IgL2V0Yy9wcmludGNhcCBiYXNlZAoJcHJpbnRlcnMpLgoKCSogd2luZWRlZmF1bHQucmVnOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglBZGRlZCB2ZXJzaW9uIGVudHJ5IGZvciBEaXJlY3RYIDcuMGEuCgoyMDAxLTA1LTA5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy94MTFkcnYvZXZlbnQuYzoKCVJlbW92ZWQgWFNobUNvbXBsZXRpb24gZXZlbnQgc3VwcG9ydCAobm8gbG9uZ2VyIHVzZWQpLgoKCSogcHJvZ3JhbXMvd2luZXRlc3QvTWFrZWZpbGUuUEwsIHByb2dyYW1zL3dpbmV0ZXN0L01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy93aW5ldGVzdC93aW5lLnhzOgoJR290IHJpZCBvZiBNYWtlTWFrZXIgc28gd2UgY2FuIGJ1aWxkIG91dHNpZGUgdGhlIHNvdXJjZSB0cmVlLgoKCSogc2NoZWR1bGVyL2NsaWVudC5jOgoJQWxsb3cgV0lORVNFUlZFUiB0byBzcGVjaWZ5IGEgcmVsYXRpdmUgcGF0aC4KCgkqIGRsbHMvd3NvY2szMi9zb2NrZXQuYzoKCUJhbmcgSnVuLVlvdW5nIDxianlAbW9ndWEub3JnPgoJT24gTmV0QlNEIGlmX3R5cGUgaXMgZGVmaW5lZCBhcyBhIG1hY3JvIGluIC91c3IvaW5jbHVkZS9uZXQvaWYuaC4KCVVuZGVmaW5lIGl0IHRvIGF2b2lkIGEgY29uZmxpY3QuCgoJKiBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmM6CglCYW5nIEp1bi1Zb3VuZyA8Ymp5QG1vZ3VhLm9yZz4KCURvIG5vdCB1c2UgaW50ZXJuYWwgZXhjZXB0aW9uIGNvZGVzIGRlZmluZWQgYnkgV2luZSB3aXRoIE5ldEJTRCwKCXJhdGhlciB1c2UgbmF0aXZlIG9uZXMgZnJvbSAvdXNyL2luY2x1ZGUvaTM4Ni90cmFwLmguIE5vdGUgdGhhdCBUX01DSEsKCWlzIG5vdCBzdXBwb3J0ZWQgYnkgTmV0QlNELgoKCSogc2VydmVyL2NvbnRleHRfaTM4Ni5jOgoJQmFuZyBKdW4tWW91bmcgPGJqeUBtb2d1YS5vcmc+CglBZGRlZCBzdXBwb3J0IGZvciBOZXRCU0QuCgoJKiBpbmNsdWRlL2RkcmF3Lmg6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUZpeGVkIHRoZSBJRGlyZWN0RHJhd1N1cmZhY2U0IGludGVyZmFjZSBkZWNsYXJhdGlvbiB0byBjb25mb3JtIGEgYml0Cgltb3JlIHdpdGggdGhlIERpcmVjdFggU0RLIGhlYWRlcnMnIGlkZWEgb2Ygd2hhdCB0aGUgaW50ZXJmYWNlIGxvb2tzCglsaWtlLgoKCSogZGxscy9rZXJuZWwvZm9ybWF0X21zZy5jOgoJRHVhbmUgQ2xhcmsgPGRjbGFya0Bha2FtYWlsLmNvbT4KCUFkZCB0ZXN0cyBmb3IgdGhlIGZsYWcgRk9STUFUX01FU1NBR0VfSUdOT1JFX0lOU0VSVFMsIGFuZCBhY3QKCWFjY29yZGluZ2x5LgoKCSogd2luZG93cy9mb2N1cy5jLCB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy93aW4uYywKCSAgd2luZG93cy93aW5wb3MuYzoKCVVzZSAzMi1iaXQgaG9vayBmdW5jdGlvbnMgd2hlcmUgcG9zc2libGUuIENsZWFuZWQgdXAgYSBjb3VwbGUgb2YKCTE2LWJpdCB0eXBlIHVzZXMuCgoJKiB3aW5kb3dzL2NsaXBib2FyZC5jLCB3aW5kb3dzL2RlZnduZC5jLCB3aW5kb3dzL3Njcm9sbC5jLAoJICB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jLAoJICB3aW5kb3dzL3gxMWRydi93aW5lY2xpcHNydi5jLCBtZW1vcnkvZ2xvYmFsLmMsIG1zZG9zL2ludDEwLmMsCgkgIG1zZG9zL2ludDIxLmMsIG1zZG9zL2lvcG9ydHMuYywgb2JqZWN0cy9wYWxldHRlLmMsCgkgIGRsbHMvdXNlci9yZXNvdXJjZS5jLCBkbGxzL3ZlcnNpb24vaW5zdGFsbC5jLAoJICBkbGxzL3dpbmFzcGkvYXNwaS5jLCBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYywKCSAgZGxscy93aW5tbS9kcml2ZXIuYywgZGxscy93aW5tbS9tY2kuYywKCSAgZGxscy93aW5tbS9tY2lhdmkvbW1vdXRwdXQuYywgZGxscy93aW5tbS9tY2lhdmkvd25kLmMsCgkgIGRsbHMvd2lubW0vbWNpY2RhL21jaWNkYS5jLCBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYywKCSAgZmlsZXMvcHJvZmlsZS5jLCBncmFwaGljcy93aW4xNmRydi9pbml0LmMsCgkgIGdyYXBoaWNzL3gxMWRydi9wYWxldHRlLmMsIGRsbHMvb2RiYzMyL3Byb3h5b2RiYy5jLAoJICBkbGxzL29sZTMyL2JpbmRjdHguYywgZGxscy9vbGUzMi9jb21wb3NpdGVtb25pa2VyLmMsCgkgIGRsbHMvb2xlMzIvZmlsZW1vbmlrZXIuYywgZGxscy9vbGVhdXQzMi9zYWZlYXJyYXkuYywKCSAgZGxscy9vbGVhdXQzMi90eXBlbGliLmMsIGRsbHMvcHNhcGkvcHNhcGlfbWFpbi5jLAoJICBkbGxzL3JwY3J0NC9ycGNydDRfbWFpbi5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGxmaWxlb3AuYywgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jLAoJICBkbGxzL3NoZWxsMzIvc2hsdmlldy5jLCBkbGxzL3NobHdhcGkvc2hsd2FwaV9tYWluLmMsCgkgIGRsbHMvdHR5ZHJ2L3BhbGV0dGUuYywgZGxscy9jb21jdGwzMi90cmVldmlldy5jLAoJICBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jLCBkbGxzL2RkcmF3L2RkcmF3L21haW4uYywKCSAgZGxscy9kaW5wdXQvbW91c2UvbWFpbi5jLCBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jLAoJICBkbGxzL2ltbTMyL2ltYy5jLCBkbGxzL2ltbTMyL2ltZXduZC5jLCBkbGxzL2ltbTMyL2ltbS5jLAoJICBkbGxzL2ltbTMyL21lbW9yeS5jLCBkbGxzL2tlcm5lbC91dHRodW5rLmMsIGRsbHMvbXN2Y3J0L2ZpbGUuYywKCSAgZGxscy9tc3ZjcnQvbG9jYWxlLmMsIGRsbHMvbXN2Y3J0L21hdGguYywgY29udHJvbHMvbWVudS5jLAoJICBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmMsIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQWRkICdcbicgYXQgdGhlIGVuZCBvZiB0cmFjZXMuCgoJKiBpbmNsdWRlL25vbmNsaWVudC5oLCBpbmNsdWRlL3VzZXIuaCwgaW5jbHVkZS93aW4uaCwKCSAgaW5jbHVkZS94MTFkcnYuaCwgd2luZG93cy9ub25jbGllbnQuYywgd2luZG93cy94MTFkcnYvd25kLmMsCgkgIGRsbHMvdHR5ZHJ2L3R0eWRydi5oLCBkbGxzL3R0eWRydi93bmQuYywgZGxscy91c2VyL3VzZXJfbWFpbi5jLAoJICBkbGxzL3gxMWRydi93aW5wb3MuYywgZGxscy94MTFkcnYveDExZHJ2LnNwZWM6CglNb3ZlZCB3aW5kb3cgbW92ZS9yZXNpemUgc3lzY29tbWFuZCBoYW5kbGluZyB0byB0aGUgZ3JhcGhpY3MgZHJpdmVyLgoKCSogY29udHJvbHMvY29tYm8uYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0Bsb29rc21hcnQuY29tLmF1PgoJT25seSBkcmF3IHRoZSBwYWRkaW5nIGFyZWEgb2YgdGhlIGNvbWJvIGJveCwgZG9uJ3QgZXJhc2UgdGhlIGNvbWJvCglzZWxlY3Rpb24gdGV4dC4KCgkqIHRvb2xzL3NwZWNtYWtlci9tc21hbmdsZS5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglSZW5hbWVkICdvcGVyYXRvcl9jb21wbGltZW50JyB0byAnb3BlcmF0b3JfY29tcGxlbWVudCcuCgoJKiBjb250cm9scy9lZGl0LmM6CglVbHJpY2ggQ3pla2FsbGEgPHVscmljaC5jemVrYWxsYUB1dG9yb250by5jYT4KCUZpeGVkIGEgcGFpbnQgcHJvYmxlbSByZXBvcnRlZCBieSBNaWtlIE1jQ29ybWFjay4KCgkqIGRsbHMvd2luZXBzL2FmbS5jLCBkbGxzL3dpbmVwcy9hZ2wuYywgZGxscy93aW5lcHMvZ2x5cGhsaXN0LmMsCgkgIGRsbHMvd2luZXBzL3BzZHJ2Lmg6CglJYW4gUGlsY2hlciA8aWFuLnBpbGNoZXJAaG9tZS5jb20+CglVbmljb2RlIGVuY29kaW5ncyBmb3IgUG9zdFNjcmlwdCBmb250cy4KCgkqIGRsbHMvZ2RpL3ByaW50ZHJ2LmMsIGRsbHMvd2luZXBzL2luaXQuYywgZGxscy93aW5zcG9vbC9pbmZvLmMsCgkgIGRsbHMvd2luc3Bvb2wvd3Nwb29sLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUltcGxlbWVudGVkIC9ldGMvcHJpbnRjYXAgYmFzZWQgcHJpbnRpbmcgc3VwcG9ydC4KCUNoYW5nZWQgJ0NVUFM6cHJpbnRlcm5hbWUnIHRvICdMUFI6cHJpbnRlcm5hbWUnLgoJU29tZSBmaXhlcyBpbiBBZGRQcmludGVyVygpLgoKCSogbWlzYy92ZXJzaW9uLmM6CglKYW1lcyBKdXJhbiA8amFtZXNqdXJhbkBhbHVtbmkucHN1LmVkdT4KCUFkZCBtaXNzaW5nIG5ld2xpbmUgdG8gV0FSTiBtZXNzYWdlcy4KCjIwMDEtMDUtMDggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBsb2FkZXIvcGVfaW1hZ2UuYywgcmVsYXkzMi9yZWxheTM4Ni5jLCByZWxheTMyL3Nub29wLmMsCgkgIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci90aHJlYWQuYywgd2luZG93cy93aW5wcm9jLmMsCgkgIGRsbHMvbnRkbGwvZGVidWd0b29scy5jLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGlmMTYzMi9yZWxheS5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglQcmludCB0aGUgdGlkIGluIHRoZSBmaXJzdCBjb2x1bW4gd2hlbiArdGlkIGlzIHNwZWNpZmllZC4KCgkqIGRsbHMvd2luZXBzL2VzY2FwZS5jLCBncmFwaGljcy9lc2NhcGUuYywgaW5jbHVkZS93aW5nZGkuaDoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUFMgcGFzc3Rocm91Z2ggd2FzIHNlbmRpbmcgMiBieXRlcyB0b28gbWFueS4KCUFkZGVkIEdFVFNFVFBSSU5UT1JJRU5UIHN0dWIuCglJbXBsZW1lbnRlZCBFUFNQUklOVElORyBtb2RlIGNoYW5nZXIuCgoyMDAxLTA1LTA3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy93aW5lcHMvZXNjYXBlLmM6CglJYW4gUGlsY2hlciA8aWFuLnBpbGNoZXJAaG9tZS5jb20+CglNYWtlIFBTRFJWX0VzY2FwZShHRVRQSFlTUEFHRVNJWkUpIHJldHVybiBwaHlzaWNhbCBzaXplLgoKCSogZGxscy93aW5lcHMvaW5pdC5jOgoJSWFuIFBpbGNoZXIgPGlhbi5waWxjaGVyQGhvbWUuY29tPgoJRml4ZWQgcm91bmRpbmcgZXJyb3IgaW4gcGFnZSBzaXplIGNhbGN1bGF0aW9uLgoKCSogZGxscy9jb21tZGxnL3ByaW50ZGxnLmM6CglEdWFuZSBDbGFyayA8ZGNsYXJrQGFrYW1haWwuY29tPgoJU3dhcCBwb3J0cmFpdC9sYW5kc2NhcGUgaWNvbiB3aGVuIGJ1dHRvbiBjbGlja2VkLgoKCSogZG9jdW1lbnRhdGlvbi9zYW1wbGVzL2NvbmZpZzoKCUR1YW5lIENsYXJrIDxkY2xhcmtAYWthbWFpbC5jb20+CglBZGRlZCBlbnRyeSBmb3IgcHJpbnRpbmcgdG8gYSBmaWxlLgoKCSogZ3JhcGhpY3MveDExZHJ2L2NvZGVwYWdlLmMsIGluY2x1ZGUvTWFrZWZpbGUuaW4sCgkgIGluY2x1ZGUvbWlubWF4LmgsIGluY2x1ZGUvd2luZGVmLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgdGhlIG1pbm1heC5oIGhlYWRlciAoVkM2KS4KCUFkZGVkIHN1cHBvcnQgZm9yIE5PTUlOTUFYLgoJUmVtb3ZlIF9fbWluL19fbWF4IGZyb20gd2luZGVmLmgsIHRoZXkgYmVsb25nIHRvIChtc3ZjcnQvKXN0ZGxpYi5oLgoKCSogZGxscy9NYWtlZGxsLnJ1bGVzLmluOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTYW5pdHkgY2hlY2sgZm9yIE1ha2VkbGwucnVsZXMuaW4gLT4gTWFrZWRsbC5ydWxlcyBvbiB3aGV0aGVyIHRvIHJlcnVuCgljb25maWd1cmUuCgoJKiBjb25maWd1cmUuaW4sIGNvbmZpZ3VyZToKCUJhbmcgSnVuLVlvdW5nIDxianlAbW9ndWEub3JnPgoJQWRkIHRoZSBOZXRCU0Qgc3R5bGUgZXJybm8gbG9jYXRpb24uCglNb2RpZnkgYSBtZXNzYWdlIHRvIGdpdmUgYSBiaXQgbW9yZSBpbmZvIHdoZW4gYnVpbGRpbmcgV2luZSBvbiBOZXRCU0QuCgoJKiBpbmNsdWRlL2d1aWRkZWYuaCwgaW5jbHVkZS9vYmpiYXNlLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFkZGVkIG1pc3NpbmcgaW5jbHVkZSBkaXJlY3RpdmVzLgoKCSogdG9vbHMvd2luZW1ha2VyOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglSZW1vdmUgdGhlIGFub255bW91cyBmdW5jdGlvbiBwYXJhbWV0ZXIgZnJvbSBnZW5lcmF0ZV9saXN0IGNhbGxzIHdoZW4KCWl0IGlzIHVubmVjZXNzYXJ5LgoJTW9kaWZ5IHRoZSAuc3BlYy5jIHJ1bGUgdG8gYWxsb3cgY29tcGlsYXRpb24gb3V0IG9mICQoVE9QU1JDRElSKS4KCgkqIGluY2x1ZGUvbXN2Y3J0L3N0ZGlvLmgsIGluY2x1ZGUvd2luZG93cy5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglSQ19JTlZPS0VEICgmTk9XSU5SRVMpIHNwZWNpYWwgY2FzZXMuCgoJKiB0b29scy93cmMvd3JjLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCS1sLy1MIHdlcmUgbm90IHJlbmFtZWQgdG8gLXQvLVQgaW4gdGhlIHVzYWdlIG1lc3NhZ2VzLgoKCSogZGxscy9zZXR1cGFwaS92aXJ0Y29weS5jOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglGaXggZHVwbGljYXRlIGRpcmVjdG9yaWVzIGJlaW5nIGNvbmNhdGVuYXRlZCB0byBidWZmZXIgaW4KCVZjcEV4cGxhaW4xNigpLiAgQWRkZWQgYSBmZXcgdXNlZnVsIFRSQUNFIGxpbmVzLiAgRW5hYmxlZCBhIGlmZGVmJ2VkCglvdXQgY2FsbCB0byBDb3B5RmlsZSgpIGluc2lkZSBvZiBWQ1BfQ29weUZpbGVzKCkgc28gZmlsZXMgYXJlIGNvcGllZAoJdG8gYSB1c2VycyBkaXJlY3RvcmllcyBkdXJpbmcgYW4gaW5zdGFsbC4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9vc3MuYzoKCUJhbmcgSnVuLVlvdW5nIDxianlAbW9ndWEub3JnPgoJQ2FsbCBPU1NfTWlkaUluaXQoKSBvbmx5IGlmIEhBVkVfT1NTX01JREkgaXMgZGVmaW5lZC4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9taXhlci5jOgoJQmFuZyBKdW4tWW91bmcgPGJqeUBtb2d1YS5vcmc+CglJbmNsdWRlIG1pc3NpbmcgZXJybm8uaC4KCgkqIGRsbHMvY29tbWRsZy9mb250ZGxnLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCURyb3AgZmxhZ3MgZHVyaW5nIGZvbnQgZW51bWVyYXRpb24gZm9yIGZvbnQgY2hvb3NlciBpZiB3ZSBnZXQgbm8KCW1hdGNoZXMuCgoJKiBkbGxzL2dkaS9nZGkuc3BlYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQ2hhbmdlZCBzb21lIHB0ciBpbnRvIHN0ci4KCgkqIGluY2x1ZGUvd2luZS9vYmpfYmFzZS5oLCBpbmNsdWRlL3dpbmUvb2JqX29sZWF1dC5oLAoJICBpbmNsdWRlL3d0eXBlcy5oLCBpbmNsdWRlL29sZWF1dG8uaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBzdXBwb3J0IGZvciB0aGUgREVDSU1BTCB0eXBlLgoJTmFtZXMgYXJlIG5vIGxvbmdlciBzdWZmaXhlZCB3aXRoIDMyISBSZW1vdmVkIGl0LgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVkIGluY29ycmVjdCBjYXN0IGluIFdTT0NLMzJfc2VuZCBhbmQgV1NPQ0szMl9yZWN2ZnJvbS4KCgkqIGluY2x1ZGUvd2luZXJyb3IuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBJU19FUlJPUi4KCgkqIGRsbHMvd2luZXBzL2luaXQuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUmVwb3J0IHRoYXQgd2UgaGF2ZSAyXjE2IGNvbG9ycywgc28gUG93ZXJQb2ludDk3IHByaW50cyBjb2xvcmVkCglzbGlkZXMuCgoJKiBkbGxzL3dpbmVwcy90ZXh0LmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZvciB1bmRlcmxpbmluZyBhbmQgc3RyaWtpbmcgb3V0IHRleHQgd2UgbmVlZCB0byBzZW5kIGEgJ25ld3BhdGgnIG9yCgloYXZlIHRoZSB3aG9sZSBwYWdlIGZpbGxlZCB3aXRoIGJsYWNrLgoKCSogZGxscy93aW5lcHMvcnNyYy5yYywgZGxscy93aW5lcHMvd3BzX0RlLnJjOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglQYXBlciBkaWFsb2cgdHJhbnNsYXRlZCB0byBHZXJtYW4uCgoJKiBmaWxlcy9wcm9maWxlLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJUG90ZW50aWFsIGJ1ZmZlciBvdmVyZmxvdyBpbiBQUk9GSUxFX0NvcHlFbnRyeS4KCjIwMDEtMDUtMDUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jLCBkbGxzL3R0eWRydi90dHlkcnYuc3BlYywKCSAgZGxscy90dHlkcnYvdXNlci5jLCBkbGxzL3VzZXIvdXNlcl9tYWluLmMsCgkgIGRsbHMveDExZHJ2L3gxMWRydi5zcGVjLCBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jLAoJICBpbmNsdWRlL2tleWJvYXJkLmgsIGluY2x1ZGUvdXNlci5oLCB3aW5kb3dzL2tleWJvYXJkLmMsCgkgIHdpbmRvd3Mvc3lzcGFyYW1zLmM6CglSZW1vdmUgR2V0L1NldEJlZXBBY3RpdmUgZnJvbSBVU0VSIGRyaXZlciBhbmQgbWFuYWdlIGl0IGxvY2FsbHkgaW5zaWRlCglTeXN0ZW1QYXJhbWV0ZXJzSW5mby4KCgkqIGRsbHMvY29tbWRsZy9wcmludGRsZy5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCBXTV9DT01NQU5EIG5vdGlmaWNhdGlvbiBjb2RlcyBmb3IgMTYgYml0IFByaW50RGxnLgoKCSogZGVidWdnZXIvd2luZWRiZy5jLCBkZWJ1Z2dlci93aW5lZGJnLnNwZWM6CglEZWxheSBpbXBvcnQgb2YgdXNlcjMyIHRvIGFsbG93IGRlYnVnZ2luZyBjcmFzaGVzIGluIHVzZXIgaW5pdCBjb2RlLgoKCSogZGxscy9jb21tZGxnL2NkbGdfRGUucmMsIGRsbHMvY29tbWRsZy9jZGxnX0VuLnJjLAoJICBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSW1wbGVtZW50ZWQgbGFyZ2UgcGFydHMgb2YgUGFnZVNldHVwRGxnQS4KCgkqIGRsbHMvY29tbWRsZy9mb250ZGxnLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCURlYnVnIG91dHB1dCBmb3IgZmxhZ3MsIHNlbGVjdCBmaXJzdCBhdmFpbGFibGUgaGVpZ2h0IGFuZCB3ZWlnaHQgd2hlbgoJc2VsZWN0aW5nIGEgZm9udC4KCjIwMDEtMDUtMDMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL2RjZS5jOgoJTWFrZSBzdXJlIHdlIHJlY29tcHV0ZSB0aGUgdmlzaWJsZSByZWdpb24gaW4gREMgaG9vay4KCgkqIGRsbHMvd2luZXBzL2FmbS5jLCBkbGxzL3dpbmVwcy9pbml0LmMsIGRsbHMvd2luZXBzL3BzZHJ2Lmg6CglJYW4gUGlsY2hlciA8aWFuLnBpbGNoZXJAaG9tZS5jb20+CglNaXNjLiBlcnJvciBjaGVja2luZyBpbiBQb3N0U2NyaXB0IGRyaXZlci4KCgkqIGRsbHMvY29tY3RsMzIvcGFnZXIuYzoKCVN1c2FuIEZhcmxleSA8c3VzYW5AY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IGF1dG9yZXBlYXQgc2Nyb2xsaW5nIHdoZW4gYnV0dG9uIGlzIGhlbGQgZG93bi4KCUltcHJvdmVtZW50cyB0byBzaXplIGFuZCBhcHBlYXJhbmNlIG9mIGJ1dHRvbnMuCgoJKiBkb2N1bWVudGF0aW9uL01ha2VmaWxlLmluOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUNsZWFuIHNob3VsZCBhbHNvIGRlbGV0ZSB0aGUgcGRmLCBwcyBhbmQgLm91dCg/KSBmaWxlcy4KCgkqIGRvY3VtZW50YXRpb24vbWFrZV93aW5laHE6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJRml4IHRoZSB3d3cud2luZWhxLmNvbSBkaXJlY3RvcnkgaGFuZGxpbmcuCgoJKiBkZWJ1Z2dlci9icmVhay5jLCBkZWJ1Z2dlci9kYmcueSwgZGVidWdnZXIvZGVidWdnZXIuaCwKCSAgZGVidWdnZXIvaGFzaC5jLCBkZWJ1Z2dlci9tb2R1bGUuYywgZGVidWdnZXIvd2luZWRiZy5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglTdGFydGVkIGhhbmRsaW5nIG9mIHNldmVyYWwgc3ltYm9scyB3aXRoIHRoZSBzYW1lIG5hbWUuCglGaXhlZCB0cmFtcG9saW5lIGlkZW50aWZpY2F0aW9uLgoKCSogZG9jdW1lbnRhdGlvbi9kZWJ1Z2dlci5zZ21sOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBhIHNtYWxsIHNlY3Rpb24gYWJvdXQgZXhwcmVzc2lvbnMgaW4gd2luZWRiZy4KCjIwMDEtMDUtMDIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBsb2FkZXIvbW9kdWxlLmM6CglVbmNvbW1lbnRlZCB0aGUgVmlydHVhbEZyZWUgY2FsbCBvbiBkbGwgdW5sb2FkLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW46CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUZpeGVkIHRoZSBPU01lc2EgY29uZmlndXJlIGNoZWNrIHNvIHRoYXQgT1NNZXNhIHdvbid0IGJlIGxpbmtlZCBpbiBpZiBpdCdzCglpbmNvbXBhdGlibGUgd2l0aCB0aGUgR0xYIGltcGxlbWVudGF0aW9uIChlLmcuIG52aWRpYSkuCglSZW1vdmVkIHRoZSBvbGQgIk9TTWVzYSBub3QgZm91bmQiIHdhcm5pbmcuCgoJKiBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgUHJpbnREbGcgc28gdGhlIGRldm5hbWVzIHN0cnVjdCBjb250YWlucyB0aGUgY29ycmVjdCBkcml2ZXIKCXByaW50ZXIgYW5kIHBvcnQgbmFtZXMuCgoJKiBkb2N1bWVudGF0aW9uL2RlYnVnZ2luZy5zZ21sOgoJU2ltZW9uIFBpbGdyaW0gPHNpbWVvbi5waWxncmltQGFsbGllZHRlbGVzeW4uY28ubno+CglUeXBvIGluIHN0dWItcmVwb3J0aW5nIHN0eWxlIGRlc2NyaXB0aW9uCgoJKiBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJbnRkbGwuX2lzd2N0eXBlIHNob3VsZCBiZSBudGRsbC5pc3djdHlwZS4KCgkqIGNvbnRyb2xzL2NvbWJvLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCURvIG5vdCBIZWFwRnJlZSgpIG1lbW9yeSBub3QgYWxsb2NhdGVkIGJ5IHVzIGluIENPTUJPX0dldFRleHQuCglDb252ZXJ0IHJldHVybiB2YWx1ZSBmcm9tIExCX0dFVFRFWFQgaW50byBDT01CT19HZXRUZXh0LgoKMjAwMS0wNC0zMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBjaGVjayBmb3IgY3Vwcy9jdXBzLmggaGVhZGVyIGZpbGUgYW5kIGEgd2FybmluZyBpZiB3ZSBmaW5kIG9ubHkKCXJ1bnRpbWUgbGlicmFyaWVzLCBidXQgbm8gaGVhZGVycy4KCgkqIGNvbnRyb2xzL2NvbWJvLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAbG9va3NtYXJ0LmNvbS5hdT4KCURyYXcgdGhlIHBhZGRpbmcgYXJlYSBvZiBhIGNvbWJvIGJveC4KCgkqIGRsbHMvd2luZXBzL2luaXQuYzoKCUlhbiBQaWxjaGVyIDxpYW4ucGlsY2hlckBob21lLmNvbT4KCUNoZWNrIGZvciBlcnJvcnMgaW4gUFNEUlZfSW5pdC4KCgkqIHdpbmRvd3MveDExZHJ2L2V2ZW50LmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU1hZGUgY2hlY2tzIGluIF9nZXRfY29tbW9uX2FuY2VzdG9yIGEgYml0IHN0cmljdGVyIHRvIGF2b2lkIFhRdWVyeVRyZWUKCVhFcnJvcnMuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYywgZGxscy9jb21jdGwzMi9jb21jdGwzMi5zcGVjOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglJbXBsZW1lbnQgQ09NQ1RMMzJfU3RyVG9JbnRXKCkgdXNpbmcgTlRETEwncyBfd3RvaS4KCjIwMDEtMDQtMjcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzZXJ2ZXIvY29udGV4dF9pMzg2LmMsIHNlcnZlci9jb250ZXh0X3NwYXJjLmMsIHNlcnZlci9wdHJhY2UuYywKCSAgc2VydmVyL3RocmVhZC5oOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglQcmVzZXJ2ZSB0aGUgVEYgKFRyYXAgRmxhZykgd2hlbiBjb250aW51aW5nIGZyb20gYSBwdHJhY2VkIHN1c3BlbmQuCgoJKiBjb250cm9scy9kZXNrdG9wLmMsIGNvbnRyb2xzL2VkaXQuYywgY29udHJvbHMvbWVudS5jLAoJICBjb250cm9scy9zY3JvbGwuYywgY29udHJvbHMvdWl0b29scy5jLCBkbGxzL2tlcm5lbC9rZXJuZWwuc3BlYywKCSAgZGxscy93aW4zMnMvd2luMzJzMTYuc3BlYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywKCSAgc2NoZWR1bGVyL3N5c2xldmVsLmMsIHdpbjMyL2ZpbGUuYywgd2luZG93cy9tZGkuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRG9jdW1lbnRhdGlvbiBuYW1lIGZpeGVzLgoKCSogZGxscy93aW5lZG9zL2Rvc3ZtLmMsIGRsbHMvd2luZWRvcy9tb2R1bGUuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQWRkZWQgZG9jdW1lbnRhdGlvbi4KCgkqIGluY2x1ZGUvYWNjb25maWcuaCwgaW5jbHVkZS9jb25maWcuaC5pbiwgY29uZmlndXJlLAoJICBjb25maWd1cmUuaW4sIGRsbHMvY29tbWRsZy9wcmludGRsZy5jLCBkbGxzL2dkaS9wcmludGRydi5jLAoJICBkbGxzL3dpbmVwcy9NYWtlZmlsZS5pbiwgZGxscy93aW5lcHMvaW5pdC5jLAoJICBkbGxzL3dpbnNwb29sL01ha2VmaWxlLmluLCBkbGxzL3dpbnNwb29sL2luZm8uYywKCSAgZGxscy93aW5zcG9vbC93c3Bvb2wuYzoKCU1hcmN1cyBNZWlzc25lciA8TWFyY3VzLk1laXNzbmVyQGNhbGRlcmEuZGU+CglBZGRlZCBDVVBTIHByaW50aW5nIHN1cHBvcnQuCgoJKiBkbGxzL2RkcmF3L2RkcmF3X3ByaXZhdGUuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRERSQVdfe1hGODZER0EyLFhWaWRNb2RlfV9Jbml0IHdhcyBtb3ZlZCB0byBkbGxzL3gxMWRydi4KCgkqIGRsbHMveDExZHJ2L2RnYTIuYywgZGxscy94MTFkcnYveDExZGRyYXcuYywKCSAgZGxscy94MTFkcnYveDExZHJ2X21haW4uYywgZGxscy94MTFkcnYveHZpZG1vZGUuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJUmVpbXBsZW1lbnRlZCBEWEdyYWIgd2l0aCBpbXByb3ZlbWVudHM7IGl0IG5vIGxvbmdlciBkZXBlbmRzIG9uCglYVmlkTW9kZSwgYW5kIGl0IHJlbGVhc2VzIHRoZSBncmFiIGlmIHRoZSBhcHAgZXhpdHMgZnVsbC1zY3JlZW4KCURpcmVjdERyYXcuICBBbHNvIG1hZGUgdGhlIFVzZURHQSBvcHRpb24gYXZhaWxhYmxlIGZvciBBcHBEZWZhdWx0cwoJY29uZmlndXJhdGlvbi4KCjIwMDEtMDQtMjUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL2N1cnNvcmljb24uYywgd2luZG93cy9zeXNjb2xvci5jLAoJICBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYywgZGxscy9vbGUzMi9zdG9yYWdlMzIuYywKCSAgZGxscy9zZXR1cGFwaS92aXJ0Y29weS5jLCBkbGxzL3dpbnRydXN0L3dpbnRydXN0X21haW4uYywKCSAgZGxscy94MTFkcnYveDExZGRyYXcuYywgZGxscy94MTFkcnYveDExZHJ2LnNwZWM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgaXNzdWVzIGZvdW5kIGJ5IHdpbmFwaV9jaGVjay4KCgkqIHdpbmRvd3MveDExZHJ2L3duZC5jOgoJQXZvaWQgY3Jhc2ggb24gZGVsZXRlZCB3aW5kb3dzLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMuZGF0LAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMTYvY29tcG9iai5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4xNi9zZXR1cHguYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMTYvdXNlci5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9jcnRkbGwuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIva2VybmVsMzIuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvbXN2Y3J0LmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL250ZGxsLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL29sZTMyLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3R0eWRydi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi91c2VyMzIuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvdmVyc2lvbi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi93aW50cnVzdC5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi93czJfMzIuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIveDExZHJ2LmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9jaGVjaywKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9kb2N1bWVudGF0aW9uLnBtOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIE1pbm9yIEFQSSBmaWxlcyB1cGRhdGUKCS0gTWlub3IgYnVnIGZpeGVzCgoJKiBkbGxzL3NobHdhcGkvcmVnLmMsIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWMsIGRsbHMvc2hsd2FwaS9zdHJpbmcuYzoKCUdhZWwgZGUgQ2hhbGVuZGFyIDxHYWVsLmRlLkNoYWxlbmRhckBsaW1zaS5mcj4KCUNvcnJlY3RlZCBhIHR5cG8gaW4gc3BlYyBmaWxlIGFuZCBhZGRlZCBzb21lIHN0dWJzLgoKCSogZGxscy93aW5tbS9tbXN5c3RlbS5jOgoJSmFtZXMgSGF0aGV3YXkgPGphbWVzQG1hY2FkYW1pYW4uY29tPgoJUGxheVNvdW5kQSBzaG91bGQgcmV0dXJuIFRSVUUgd2hlbiBpdCBzdG9wcyBwbGF5aW5nIHNvdW5kLgoKMjAwMS0wNC0yNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmMsCgkgIHdpbmRvd3MveDExZHJ2L3duZC5jLCBkbGxzL3R0eWRydi9kYy5jLCBkbGxzL3R0eWRydi90dHlkcnYuaCwKCSAgZGxscy90dHlkcnYvdHR5ZHJ2LnNwZWMsIGRsbHMvdHR5ZHJ2L3VzZXIuYywgZGxscy90dHlkcnYvd25kLmMsCgkgIGRsbHMvdXNlci91c2VyX21haW4uYywgZGxscy94MTFkcnYvTWFrZWZpbGUuaW4sCgkgIGRsbHMveDExZHJ2L3dpbmRvdy5jLCBkbGxzL3gxMWRydi93aW5wb3MuYywKCSAgZGxscy94MTFkcnYveDExZHJ2LnNwZWMsIGluY2x1ZGUvZGNlLmgsIGluY2x1ZGUvbWVzc2FnZS5oLAoJICBpbmNsdWRlL3VzZXIuaCwgaW5jbHVkZS93aW4uaCwgaW5jbHVkZS93aW5wb3MuaCwKCSAgaW5jbHVkZS94MTFkcnYuaCwgd2luZG93cy9NYWtlZmlsZS5pbiwgd2luZG93cy9kY2UuYywKCSAgd2luZG93cy9kZWZ3bmQuYywgd2luZG93cy9ldmVudC5jLCB3aW5kb3dzL2ZvY3VzLmMsCgkgIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL3BhaW50aW5nLmMsIHdpbmRvd3Mvc2Nyb2xsLmMsCgkgIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3Mvd2lucG9zLmM6CglNb3ZlZCBtb3N0IG9mIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBTZXRXaW5kb3dQb3MgYW5kIFNldERyYXdhYmxlIGludG8KCXRoZSB1c2VyIGRyaXZlciwgYW5kIHRoZSBjb3JyZXNwb25kaW5nIGNvZGUgaW50byB0aGUgZGxscy94MTFkcnYKCWRpcmVjdG9yeS4gTW92ZWQgYSBmZXcgZnVuY3Rpb25zIG91dCBvZiB0aGUgd2luZG93IGRyaXZlciBpbnRvIHRoZQoJdXNlciBkcml2ZXIuIFBsdXMgYSBmZXcgcmVsYXRlZCBjbGVhbnVwcy4KCgkqIGRsbHMvZGRyYXcvZDNkdmlld3BvcnQuYywgZGxscy9kaW5wdXQva2V5Ym9hcmQvbWFpbi5jLAoJICBkbGxzL29wZW5nbDMyL3dnbC5jOgoJU21hbGwgY2xlYW51cHMuCgoJKiByZWxheTMyL3JlbGF5Mzg2LmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCURyb3AgU1lTTEVWRUwgY2hlY2tzIGZyb20gcmVsYXkgZGVidWdnaW5nLCBzaW5jZSB0aGV5IGJyZWFrIGRlYnVnZ2luZwoJYnVpbHRpbiBHREkgZGxscy4KCgkqIGluY2x1ZGUvbXN2Y3J0L3N0ZGxpYi5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglEb24ndCB1c2UgV2luZG93cyB0eXBlcyBsaWtlIExPTkdMT05HIGluIG1zdmNydCBoZWFkZXJzLgoKCSogZGVidWdnZXIvZGJfZGlzYXNtLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIHNvbWUgbW9yZSBkaXNhc3NlbWJseSBpbnN0cnVjdGlvbnMgKG5vdGFibHkgcmR0c2MsIHdoaWNoIGlzIHVzZWQKCWJ5IHNldmVyYWwgcHJvZ3JhbXMpIGFuZCBtb3JlIE1NWC4KCjIwMDEtMDQtMjMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW4zMi9leGNlcHQuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJVXNlIHNucHJpbnRmIHRvIHByZXZlbnQgYnVmZmVyIG92ZXJmbG93cyBpbiBmb3JtYXRfZXhjZXB0aW9uX21zZy4KCgkqIGluY2x1ZGUvdGNoYXIuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglQcmV2ZW50IHVzZSBieSBXaW5lJ3Mgc291cmNlLgoJQWRkZWQgbWlzc2luZyAnZnVuY3Rpb24nIGRlZmluaXRpb25zIChtYWNyb3MgcmVhbGx5KS4KCgkqIGRsbHMvbXN2Y3J0L3RpbWUuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglXZSBtdXN0IG5vdCBmcmVlIHRoZSBwb2ludGVyIHJldHVybmVkIGJ5IGxvY2FsdGltZSAoZXNwZWNpYWxseSBub3QKCXdpdGggTVNWQ1JUX2ZyZWUhKS4KCVdlIG5vIGxvbmdlciBuZWVkIHRvIGluY2x1ZGUgc3RkbGliLmguCgoJKiBpbmNsdWRlL21zdmNydC9zdGRkZWYuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBvZmZzZXRvZiAoZm9yIHRoZSBNRkMpLgoKCSogZGxscy9tc3ZjcnQvY29uc29sZS5jLCBkbGxzL21zdmNydC9jcHAuYywgZGxscy9tc3ZjcnQvaGVhcC5jLAoJICBkbGxzL21zdmNydC9taXNjLmMsIGRsbHMvbXN2Y3J0L3N0cmluZy5jLAoJICBpbmNsdWRlL21zdmNydC9tYWxsb2MuaCwgaW5jbHVkZS9tc3ZjcnQvc2VhcmNoLmgsCgkgIGluY2x1ZGUvbXN2Y3J0L3N0ZGxpYi5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBtc3ZjcnQvbWFsbG9jLmggKGZvciB0aGUgTUZDKS4KCUFkZCBtc3ZjcnQvc2VhcmNoLmguCglNb3ZlIGR1cGxpY2F0ZWQgZGVmaW5pdGlvbnMgdG8gdGhlIG5ldyBoZWFkZXJzLgoJVXNlIG1hbGxvYy5oIGluc3RlYWQgb2Ygc3RkbGliLmggd2hlbiBzZW5zaWJsZS4KCgkqIGluY2x1ZGUvbXN2Y3J0L2NydGRiZy5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVByb3ZpZGUgbGltaXRlZCBzdXBwb3J0IGZvciB0aGUgbXN2Y3J0IGRlYnVnIEFQSS4KCgkqIHRvb2xzL3dpbmVtYWtlcjoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglGaWxlcyB3aXRoIHNwZWNpYWwgY2hhcmFjdGVycyBtYXkgbm90IGhhdmUgYmVlbiByZW5hbWVkLiBUcnkgdG8gbWF0Y2gKCWJvdGggZm9ybXMuCgoJKiBkbGxzL21zYWNtL2RyaXZlci5jLCBkbGxzL21zYWNtL2ZpbHRlci5jLCBkbGxzL21zYWNtL2Zvcm1hdC5jLAoJICBkbGxzL21zYWNtL2ludGVybmFsLmMsIGRsbHMvbXNhY20vbXNhY20zMl9tYWluLmMsCgkgIGRsbHMvbXNhY20vcGNtY29udmVydGVyLmMsIGRsbHMvbXNhY20vc3RyZWFtLmMsCgkgIGRsbHMvbXNhY20vd2luZWFjbS5oOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBjYWNoZSBmb3IgZHJpdmVycyBpbmZvcm1hdGlvbi4KCUZpeGVkIGEgZmV3IGJ1Z3MgKG1lbW9yeSBoYW5kbGluZywgdmVyc2lvbiBpbmZvLi4uKQoJRW5oYW5jZWQgdmFsaWRpdHkgY2hlY2tzLgoKCSogZGxscy93aW5lcHMvZ2x5cGhsaXN0LmMsIGRsbHMvd2luZXBzL3BzZHJ2Lmg6CglJYW4gUGlsY2hlciA8aWFuLnBpbGNoZXJAaG9tZS5jb20+CglVc2UgdHlwZWNhc3RzIHRvIHN1cHByZXNzIGNvbXBpbGVyIHdhcm5pbmdzLgoKCSogb2JqZWN0cy9mb250LmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUltcGxlbWVudGVkIEdldENoYXJBQkNXaWR0aHMgd2l0aCBHZXRDaGFyV2lkdGguCgoJKiBvYmplY3RzL3JlZ2lvbi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglFeHRyYWN0ZWQgTUVNQ0hFQ0sgaW50byBhbiBleHRyYSBmdW5jdGlvbiB0byBhdm9pZCBhIGdjYy0yLjk1LjIKCWNvbXBpbGVyIGJ1Zy4KCgkqIGRlYnVnZ2VyL2RiX2Rpc2FzbS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBzb21lIE1NWCBkaXNhc3NlbWJseSB0byB0aGUgZGVidWdnZXIuCgoJKiBkZWJ1Z2dlci9leHByLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGdldHRpbmcgYSB2YXJpYWJsZSBhZGRyZXNzLgoKCSogZGVidWdnZXIvdHlwZXMuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgZmxvYXQgdmFyaWFibGVzIGRpc3BsYXkuCgoyMDAxLTA0LTIwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZmlsZXMvZG9zX2ZzLmM6CglEb21pbmlrIFN0cmFzc2VyIDxkb21pbmlrLnN0cmFzc2VyQG1jaHAuc2llbWVucy5kZT4KCUFsbG93IGlsbGVnYWwgaGFuZGxlcyBpbiBGaW5kQ2xvc2UuCgoJKiBkbGxzL29sZTMyL2JpbmRjdHguYywgZGxscy9vbGUzMi9jb21wb3NpdGVtb25pa2VyLmMsCgkgIGRsbHMvb2xlMzIvZmlsZW1vbmlrZXIuYywgZGxscy9vbGUzMi9pdGVtbW9uaWtlci5jLAoJICBmaWxlcy9kcml2ZS5jLCBvYmplY3RzL2RpYi5jLCB0b29scy93aW5lY29uZiwKCSAgZGVidWdnZXIvZXh0X2RlYnVnZ2VyLmMsIGRsbHMvY29tY3RsMzIvYW5pbWF0ZS5jLAoJICBkbGxzL29sZTMyL2FudGltb25pa2VyLmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglTcGVsbGluZyBmaXhlcy4KCgkqIHdpbmRvd3MvcHJvcGVydHkuYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCS0gbWFrZSBzdXJlIHRoYXQgd2UgcmVhbGx5IHVzZSB0aGUgY29ycmVjdCBhbW91bnQgb2YgcGFyYW1ldGVycyBlYWNoCgkgIHRpbWUgZm9yIHRoZSBjYWxsYmFjayBmdW5jdGlvbgoJLSBhbHdheXMgcGFzcyBzdHJpbmdzIGluc3RlYWQgb2YgYXRvbXMgdG8gV2luMzIgZW51bSBwcm9jCgktIGZpeCB0cmFjZSBjcmFzaCBkdWUgdG8gc3RyaW5nIGZvcm1hdCBkaXNwbGF5aW5nIG9mIGF0b20gKExPV09SRAoJICBvbmx5KSBoYW5kbGUKCgkqIGRsbHMvd2luZXBzL01ha2VmaWxlLmluLCBkbGxzL3dpbmVwcy9hZm0uYywgZGxscy93aW5lcHMvYWdsLmMsCgkgIGRsbHMvd2luZXBzL2dseXBobGlzdC5jLCBkbGxzL3dpbmVwcy9wc2Rydi5oOgoJSWFuIFBpbGNoZXIgPGlhbi5waWxjaGVyQGhvbWUuY29tPgoJU3RvcmUgZWFjaCBnbHlwaCBuYW1lIG9ubHkgb25jZSBpbiBQb3N0U2NyaXB0IGRyaXZlci4KCgkqIG9iamVjdHMvYnJ1c2guYzogQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJVGFrZSBhIHN0YWIgYXQgaW1wbGVtZW50aW5nIFNldFNvbGlkQnJ1c2gxNi4KCgkqIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglGaXhlZCBvZmYgYnkgb25lIGVycm9yIGluIEltYWdlTGlzdF9EcmF3SW5kaXJlY3QoKS4KCUZpeGVkIHNvbWUgbWlzc2luZyBOVUxMIEhJTUFHRUxJU1QgY2hlY2sgKGZpeGVzIE1pY3Jvc29mdCBXb3JrcwoJc3RhcnR1cCkuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvbWl4ZXIuYzoKCUphbWVzIEhhdGhld2F5IDxqYW1lc0BtYWNhZGFtaWFuLmNvbT4KCU1ha2Ugc3VyZSB0byByZXR1cm4gb3VyIHZhcmlhYmxlIHdpdGggdGhlIGNvcnJlY3QgcmV0dXJuIHZhbHVlLgoKCSogbWVtb3J5L3ZpcnR1YWwuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglWaXJ0dWFsUHJvdGVjdCBzaG91bGQgcmV0dXJuIGNvcnJlY3Qgb2xkIHByb3RlY3Rpb24gZmxhZ3MuCgoJKiBkbGxzL2NvbWN0bDMyL3JlYmFyLmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJLSBOb3RpZnkgcGFyZW50IG9mIGNoaWxkIHNpemUgY2hhbmdlcyB3aGVuIGNoYW5nZXMgYXJlIGZyb20gV01fU0laRQoJICBtZXNzYWdlcy4KCS0gSWYgbW9yZSB0aGFuIG9uZSBiYW5kIGV4aXN0cywgdGhlbiBmaXJzdCBiYW5kIG1heSBoYXZlIGEgZ3JpcHBlci4KCS0gRml4IHRoZSBiYW5kIGxheW91dCBhbGdvcml0aG0gdG8gaGFuZGxlIHNvbWUgaXNzdWVzIGZyb20gV2luQVJBLgoKCSogZGxscy9jb21jdGwzMi9jb21ib2V4LmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJLSBJbXBsZW1lbnQgQ0Jfe0dFVHxTRVR9SVRFTURBVEEgZm9yIENvbWJCb3hFeC4KCS0gSW1wbGVtZW50IFdNX05DQ1JFQVRFIHRvIHJlbW92ZSB1bndhbnRlZCB3aW5kb3cgc3R5bGVzIChhcyBuYXRpdmUgZG9lcykuCgktIENsZWFuIHVwIHNvbWUgdHJhY2VzLgoKCSogdG9vbHMvd2luZW1ha2VyOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglGaXggZmlsZSBsb3NzYWdlIGluIHN1YmRpcmVjdG9yaWVzIG9mIGFuICdpbmNsdWRlJyBkaXJlY3RvcnkgKGNsb3NlcyAjMTYzKS4KCVdoZW4gY2FzZSBmaXhpbmcgI2luY2x1ZGVzLCB0YWtlIGludG8gYWNjb3VudCB0aGF0IHRoZSBmaWxlIG1heSBoYXZlCgliZWVuIHJlbmFtZWQgKGNsb3NlcyAjMTYxKS4KCUJldHRlciBzdXBwb3J0IG9mICQoU1JDRElSKSBpbiAtSSBkaXJlY3RpdmVzLgoJUlRGIHdhcyBub3QgcmVjb2duaXNlZCBpbiByYyBmaWxlcyBiZWNhdXNlIGl0IHdhcyBpbiB0aGUgd3JvbmcgcGxhY2UuCglFc2NhcGUgd2VpcmQgY2hhcmFjdGVycyB3aGVuIHB1dHRpbmcgdGhlIHJjIGZpbGVuYW1lIGluIHRoZSBzcGVjIGZpbGUuCgoJKiBkb2N1bWVudGF0aW9uL3dpbmUubWFuLmluOgoJTGF3c29uIFdoaXRuZXkgPGxhd3Nvbl93aGl0bmV5QGp1bm8uY29tPgoJQWRkZWQgV0lORVBSRUxPQUQgdG8gbWFuIHdpbmUuCgoJKiBkbGxzL2tlcm5lbC9jb21tLmM6CglEb21pbmlrIFN0cmFzc2VyIDxkb21pbmlrLnN0cmFzc2VyQHQtb25saW5lLmRlPgoJRG9uJ3QgdXNlIFJUU0NUUyBpZiBTdHIgaGFuZHNoYWtlIGlzIGVuYWJsZWQuCglVc2UgYXBwcm9wcmlhdGUgVW5peCB0aW1lb3V0IHZhbHVlcyBpbiBTZXRDb21tVGltZW91dHMuCgoyMDAxLTA0LTE4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogQU5OT1VOQ0UsIENoYW5nZUxvZywgaW5jbHVkZS92ZXJzaW9uLmg6CglSZWxlYXNlIDIwMDEwNDE4LgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoyMDAxLTA0LTE4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9NYWtlZmlsZS5pbjogRml4ZWQgc2V0dXBhcGkgZGVwZW5kZW5jaWVzLgoKCSogd2luZG93cy9pbnB1dC5jOiBKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglHZXRBc3luY0tleVN0YXRlIG5vdyBjbGVhcnMgImhhcyBiZWVuIHByZXNzZWQiIGluZm9ybWF0aW9uIG9mIG9ubHkgdGhlCglyZXF1ZXN0ZWQga2V5IGluc3RlYWQgb2YgYWxsIGtleXMuCgoJKiB3aW5kb3dzL2RjZS5jLCBkbGxzL3VzZXIvdXNlcl9tYWluLmM6CglObyBuZWVkIHRvIHByZWFsbG9jYXRlIERDRXMgc2luY2UgdGhleSBhcmUgYWxsb2NhdGVkIG9uIGRlbWFuZAoJYW55d2F5LgoKCSogaW5jbHVkZS93aW5nZGkuaCwgaW5jbHVkZS93aW51c2VyLmgsIGluY2x1ZGUvZGNlLmg6CglNb3ZlZCBEQ1hfKiBjb25zdGFudHMgdG8gd2ludXNlci5oLgoKCSogZGxscy9kZHJhdy9NYWtlZmlsZS5pbiwgZGxscy9kZHJhdy9kZHJhdy9kZ2EyLmMsCgkgIGRsbHMvZGRyYXcvZGRyYXcvZGdhMi5oLCBkbGxzL2RkcmF3L2RkcmF3L3h2aWRtb2RlLmMsCgkgIGRsbHMvZGRyYXcvZGRyYXcveHZpZG1vZGUuaCwgZGxscy9kZHJhdy9kc3VyZmFjZS9kZ2EyLmMsCgkgIGRsbHMvZGRyYXcvZHN1cmZhY2UvZGdhMi5oOgoJUmVtb3ZlZCBhIGZldyBvYnNvbGV0ZSBmaWxlcy4KCgkqIGRsbHMvZGRyYXcvZHN1cmZhY2UvaGFsLmM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUZpeCBER0Egc28gaXQgd29ya3MgcHJvcGVybHkgYWdhaW4uCgoJKiBkbGxzL21zYWNtL21zYWNtMzJfbWFpbi5jOgoJSmFtZXMgSGF0aGV3YXkgPGphbWVzQG1hY2FkYW1pYW4uY29tPgoJQWRkIFxuIHRvIEZJWE1FIGNhbGwgaW4gYWNtR2V0VmVyc2lvbiB0byBwcmV2ZW50IG92ZXJmbG93aW5nIGJ1ZmZlciBpbgoJd2luZV9kYmdfdnByaW50Zi4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCUphbWVzIEhhdGhld2F5IDxqYW1lc0BtYWNhZGFtaWFuLmNvbT4KCUVsaW1pbmF0ZSB1bml0aWFsaXplZCBnYXJiYWdlIGJlaW5nIHJldHVybmVkIGZyb20gTElTVFZJRVdfR2V0SXRlbUEuCgoJKiB0b29scy93aW5lbWFrZXI6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJRW5oYW5jZWQgdGhlIHByYWdtYSBwYWNrIGhhbmRsaW5nLgoJRW5oYW5jZWQgdGhlICdhZnhyZXMuaCcgaGFuZGxpbmcgKHRoZSBpbmRlbnRhdGlvbikuCglTdGFydCBpc3N1aW5nIHdpbmVtYWtlcidzIHdhcm5pbmdzIGluIHRoZSBzb3VyY2UgZmlsZXMgdGhlbXNlbHZlcy4KCjIwMDEtMDQtMTcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb250cm9scy9saXN0Ym94LmMsIHdpbmRvd3MvbWVzc2FnZS5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAYXNpLmZyPgoJRG8gbm90IHNlbmQgV01fTU9VU0VBQ1RJVkFURSBmb3IgY2hpbGRyZW4gb2YgZGVza3RvcC4KCgkqIGRsbHMvZGRyYXcvTWFrZWZpbGUuaW4sIGRsbHMvZGRyYXcvZGRyYXcvaGFsLmMsCgkgIGRsbHMvZGRyYXcvZGRyYXcvaGFsLmgsIGRsbHMvZGRyYXcvZHBhbGV0dGUvaGFsLmMsCgkgIGRsbHMvZGRyYXcvZHBhbGV0dGUvaGFsLmgsIGRsbHMvZGRyYXcvZHN1cmZhY2UvaGFsLmMsCgkgIGRsbHMvZGRyYXcvZHN1cmZhY2UvaGFsLmgsIGRsbHMvZGRyYXcvbWFpbi5jOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglJbXBsZW1lbnRlZCBEaXJlY3REcmF3J3MgSGFyZHdhcmUgQWJzdHJhY3Rpb24gTGF5ZXIgKEhBTCkgaW50ZXJmYWNlLgoJRGlzYWJsZWQgRGlyZWN0RHJhdydzIG9sZCBYVmlkTW9kZSBhbmQgREdBMiBkcml2ZXJzLCBpdCBub3cgZGVwZW5kcyBvbiB0aGUKCWRpc3BsYXkgZHJpdmVyICh4MTFkcnYpIEhBTCBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlc2UgZmVhdHVyZXMuCgoJKiBkbGxzL3NldHVwYXBpLy5jdnNpZ25vcmUsIGRsbHMvc2V0dXBhcGkvTWFrZWZpbGUuaW4sCgkgIGRsbHMvc2V0dXBhcGkvaW5mcGFyc2UuYywgZGxscy9zZXR1cGFwaS9zZXR1cGFwaS5yYywKCSAgZGxscy9zZXR1cGFwaS9zZXR1cGFwaS5zcGVjLCBkbGxzL3NldHVwYXBpL3NldHVwYXBpX3ByaXZhdGUuaCwKCSAgZGxscy9zZXR1cGFwaS9zZXR1cHguc3BlYywgZGxscy9zZXR1cGFwaS9zZXR1cHgxNi5oLAoJICBkbGxzL3NldHVwYXBpL3NldHVweF9tYWluLmMsIGRsbHMvc2V0dXBhcGkvc2V0dXB4X3ByaXZhdGUuaCwKCSAgZGxscy9zZXR1cGFwaS92aXJ0Y29weS5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJLSBpbXBsZW1lbnQgc29tZSBtb3JlIHZpcnRjb3B5IChWQ1ApIHN0dWZmCgktIGFkZCBzb21lIHNldHVweCByZXNvdXJjZXMKCS0gaW1wbGVtZW50IFZIU1RSIGZ1bmN0aW9uYWxpdHkKCS0gbGFyZ2UgcGFydHMgb2YgVkNQIGNhbGxiYWNrIGhhbmRsaW5nCgktIG1lcmdlIHNldHVwYXBpIGFuZCBzZXR1cHggc3R1ZmYsIGVzcGVjaWFsbHkgcmVzb3VyY2UgaGFuZGxpbmcKCSAgZ2V0cyByaWQgb2Ygc2V0dXB4IGRlYnVnIGNoYW5uZWw7IHNldHVwYXBpIGlzIHRoZSBvbmx5IG9uZSB0aGF0IHJlbWFpbnMKCgkqIGRsbHMvZGRyYXcvTWFrZWZpbGUuaW4sIGRsbHMvZGRyYXcvZHN1cmZhY2UvZGlidGV4dHVyZS5jLAoJICBkbGxzL2RkcmF3L2RzdXJmYWNlL2RpYnRleHR1cmUuaDoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJUmVtb3ZlZCB0aGUgb2Jzb2xldGUgRElCVGV4dHVyZSBzdXJmYWNlIGNsYXNzLgoKCSogZGxscy9kZHJhdy9kc3VyZmFjZS9kaWIuYywgZGxscy9kZHJhdy9kc3VyZmFjZS9kaWIuaCwKCSAgZGxscy9kZHJhdy9kc3VyZmFjZS9tYWluLmM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUZpbGwgaW4gc29tZSBtb3JlIEhBTCBmaWVsZHMuIEZsaXAgc29tZSBvZiB0aGVtIHdoZW4gYXBwcm9wcmlhdGUuCglBbGxvdyBTZXRTdXJmYWNlRGVzYyB0byBjaGFuZ2UgY2xpZW50IG1lbW9yeSBzdXJmYWNlIGFkZHJlc3MuCglQcm9wYWdhdGUgRElCIGNvbG9yIHRhYmxlIHVwZGF0ZXMgdG8gYmFja2J1ZmZlcnMgdG9vICh0aGFua3MgdG8KCVN0ZXBoZW4gQ2xvdXNlKS4KCgkqIGRsbHMvZGRyYXcvZHBhbGV0dGUvbWFpbi5jLCBkbGxzL2RkcmF3L2RwYWxldHRlL21haW4uaDoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJRmlsbCBpbiBzb21lIERpcmVjdERyYXdQYWxldHRlIEhBTCBmaWVsZHMuCgoJKiBkbGxzL2RkcmF3L2RkcmF3L2RnYTIuYywgZGxscy9kZHJhdy9kZHJhdy9kZ2EyLmgsCgkgIGRsbHMvZGRyYXcvZGRyYXcvdXNlci5jLCBkbGxzL2RkcmF3L2RkcmF3L3VzZXIuaCwKCSAgZGxscy9kZHJhdy9kZHJhdy94dmlkbW9kZS5jLCBkbGxzL2RkcmF3L2RkcmF3L3h2aWRtb2RlLmg6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCVJlbW92ZWQgVXNlcl9EaXJlY3REcmF3X0dldENhcHMuIFVzaW5nIE1haW5fRGlyZWN0RHJhd19HZXRDYXBzIGluc3RlYWQsCglhbmQgdGhlIFVzZXIgY29uc3RydWN0b3IgZmlsbGluZyBpbiB0aGUgbWFpbiBjYXBhYmlsaXR5IGJpdHMuCgoJKiBkbGxzL2RkcmF3L2RkcmF3L21haW4uYywgZGxscy9kZHJhdy9kZHJhdy9tYWluLmg6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUZpbGwgaW4gc29tZSBvZiB0aGUgZGRyYXcgSEFMIGZpZWxkcy4KCUNhbGwgdGhlIHNldF9leGNsdXNpdmVfbW9kZSBjYWxsYmFjayB3aGVuIG5lY2Vzc2FyeS4KCUFkZGVkIGEgTWFpbl9EaXJlY3REcmF3X0dldENhcHMgbWV0aG9kLgoJUmVtb3ZlZCByZWZlcmVuY2VzIHRvIG9ic29sZXRlIERJQlRleHR1cmUgc3VyZmFjZSBjbGFzcy4KCgkqIGRsbHMvZGRyYXcvZHN1cmZhY2UvdXNlci5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL3VzZXIuaDoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJSW1wbGVtZW50ZWQgZ2FtbWEgY29udHJvbCBvbiB0aGUgRGlyZWN0RHJhdyBwcmltYXJ5IHdpbmRvdy4KCUVuc3VyZWQgdGhhdCB0aGUgcHJpbWFyeSB3aW5kb3cgaXMgY3JlYXRlZCBiZWZvcmUgdGhlIGNvbnN0cnVjdG9yIHJldHVybnMuCglGbGFnIHRoZSBwcmltYXJ5IHdpbmRvdyBhcyB0cmFuc3BhcmVudCBzbyBtb3VzZSBjbGlja3MgcGFzcyB0aHJvdWdoIGl0LgoJUHV0IHRoZSBwcmltYXJ5IHdpbmRvdyBoYW5kbGUgaW50byBhIHJlc2VydmVkIGZpZWxkIGZvciB4MTFkcnYgSEFMIHVzZS4KCgkqIGRsbHMvTWFrZWZpbGUuaW46CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUZpeCB0eXBvIHNvIHRoYXQgd2ludHJ1c3QgaXMgYnVpbHQuCgoJKiBkb2N1bWVudGF0aW9uL2NvbmZpZ3VyaW5nLnNnbWw6CglKb2VyZyBNYXllciA8am1heWVyQGxvcGxvZi5kZT4KCUFkZCBhIG1pc3NpbmcgPC9zZWN0Mz4uCgoJKiBkbGxzL3dzb2NrMzIvc29ja2V0LmM6CglKb2VyZyBNYXllciA8am1heWVyQGxvcGxvZi5kZT4KCVVzZSBvZiBwcm9wZXIgdGVzdCBnZXRzIHJpZCBvZiBhIHNpZ25lZC91bnNpZ25lZCB3YXJuaW5nLgoKCSogZ3JhcGhpY3MveDExZHJ2L2luaXQuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJSW1wbGVtZW50ZWQgdGhlIGRkcmF3IEhBTCBhY2Nlc3MgZXNjYXBlIChEQ0lDT01NQU5EKSBpbiB4MTFkcnYuCgoJKiBjb250cm9scy9jb21iby5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZSByZWR1bmRhbnQgc2VuZGluZyBvZiBXTV9EUkFXSVRFTSBtZXNzYWdlIHRvIG93bmVyZHJhd24KCWNvbWJvYm94LgoKMjAwMS0wNC0xNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvdXNlci9sc3RyLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUZpeCBzb21lIGNyYXNoIG9uIGJhZCBwYXJhbWV0ZXIgY29uZGl0aW9ucy4KCgkqIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy9udGRsbC93Y3N0cmluZy5jOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglJbXBsZW1lbnRlZCBfd3RvaSBhbmQgX3d0b2wuCgoJKiBkbGxzL3gxMWRydi9NYWtlZmlsZS5pbiwgZGxscy94MTFkcnYvZGdhMi5jLCBkbGxzL3gxMWRydi9kZ2EyLmgsCgkgIGRsbHMveDExZHJ2L3gxMWRkcmF3LmMsIGRsbHMveDExZHJ2L3gxMWRkcmF3LmgsCgkgIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmMsIGRsbHMveDExZHJ2L3h2aWRtb2RlLmM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUltcGxlbWVudGVkIHRoZSBYRjg2REdBMiBkcml2ZXIgZm9yIHRoZSBkZHJhdyBIQUwuCglFbnRlcmVkIHNvbWUgYmFzaWMgSEFMIGRldmljZSBjYXBhYmlsaXRpZXMgZGF0YS4KCUFkZGVkIGEgR2V0RHJpdmVySW5mbyBoYW5kbGVyLgoKCSogTWFrZS5ydWxlcy5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvd2ludHJ1c3QvLmN2c2lnbm9yZSwgZGxscy93aW50cnVzdC9NYWtlZmlsZS5pbiwKCSAgZGxscy93aW50cnVzdC93aW50cnVzdC5zcGVjLCBkbGxzL3dpbnRydXN0L3dpbnRydXN0X21haW4uYzoKCVJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCUFkZGVkIG5ldyBkbGwgd2ludHJ1c3QuZGxsIHdpdGggYSBzdHViIGZvciBXaW5WZXJpZnlUcnVzdCgpLgoKCSogZGxscy9kZHJhdy9NYWtlZmlsZS5pbiwgZGxscy9kZHJhdy9kc3VyZmFjZS9nYW1tYS5jLAoJICBkbGxzL2RkcmF3L2RzdXJmYWNlL21haW4uYywgZGxscy9kZHJhdy9kc3VyZmFjZS9tYWluLmg6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUltcGxlbWVudGVkIHRoZSBJRGlyZWN0RHJhd0dhbW1hQ29udHJvbCBpbnRlcmZhY2UuCgoJKiBkbGxzL3dpbmVwcy9pbml0LmMsIGRsbHMvd2luZXBzL3BwZC5jOgoJSWFuIFBpbGNoZXIgPGlhbi5waWxjaGVyQGhvbWUuY29tPgoJTWFrZSBwYXBlciBzaXplIGFuZCBiaW4gdHlwZSBoYW5kbGluZyBtb3JlIGxpa2UgV2luZG93cyBkcml2ZXJzLgoKCSogb2JqZWN0cy9mb250LmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkIE5VTEwgY2hlY2sgZm9yIGxwbkZpdCBpbiBHZXRUZXh0RXh0ZW50RXhQb2ludFcuCgoJKiBncmFwaGljcy94MTFkcnYvcGFsZXR0ZS5jLCBpbmNsdWRlL3RzX3hsaWIuaCwgdHN4MTEvWDExX2NhbGxzLAoJICB0c3gxMS90c194bGliLmM6CglHYXZyaWVsIFN0YXRlIDxnYXZAdHJhbnNnYW1pbmcuY29tPgoJQ29weSB0aGUgZmlyc3QgMTI4IGNvbG9ycyBmcm9tIHRoZSBkZWZhdWx0IGNvbG9ybWFwIHRvIFdpbmUncyBwcml2YXRlCgljb2xvcm1hcCB3aGVuIHVzaW5nICdzaGFyZWQnIGNvbG9ycy4KCgkqIGxvYWRlci9tb2R1bGUuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJTGV0IExPQURfTElCUkFSWV9BU19EQVRBRklMRSBsb2FkIHRoZSBidWlsdGluIGRsbCBpZiBsb2FkaW5nIGEgbmF0aXZlCglETEwgZmFpbGVkLCBzbyB0aGF0IHdpbmVzZXR1cHRrJ3MgZmFrZS13aW5kb3dzIGluc3RhbGxhdGlvbiB3b3JrLgoKCSogY29udHJvbHMvbGlzdGJveC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVNsaWdodGx5IGltcHJvdmUga2V5Ym9hcmQgdHJhY2tpbmcgaW4gY29tYm9ib3guCgoJKiBjb250cm9scy9lZGl0LmM6CglEYW4gRW5nZWwgPGRlbmdlbEBzb3VyY2VoYXJ2ZXN0LmNvbT4KCVNldCB0aGUgYmFja2dvdW5kIG1vZGUgdG8gb3BhcXVlIHRvIHBhaW50IGhpZ2hsaWdodGVkIHRleHQuCgoJKiBkbGxzL2RkcmF3L2RkcmF3X3ByaXZhdGUuaCwgZGxscy9kZHJhdy9kc3VyZmFjZS9kZ2EyLmMsCgkgIGRsbHMvZGRyYXcvZHN1cmZhY2UvZGdhMi5oLCBkbGxzL2RkcmF3L2RzdXJmYWNlL2RpYi5jLAoJICBkbGxzL2RkcmF3L2RzdXJmYWNlL2RpYi5oLCBkbGxzL2RkcmF3L2RzdXJmYWNlL21haW4uYywKCSAgZGxscy9kZHJhdy9kc3VyZmFjZS9tYWluLmgsIGRsbHMvZGRyYXcvZHN1cmZhY2UvdGh1bmtzLmMsCgkgIGRsbHMvZGRyYXcvZHN1cmZhY2UvdXNlci5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL3VzZXIuaDoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJQWRkZWQgZGRyYXcgSEFMIGFuZCBnYW1tYSByYW1wIHN0dWZmIHRvIGltcGxlbWVudGF0aW9uIHN0cnVjdHVyZXMuCglBZGRlZCBhIHBhcmFtZXRlciBhbmQgcmV0dXJuIHZhbHVlIHRvIGZsaXBfZGF0YSBhbmQgZmxpcF91cGRhdGUuCgoJKiBncmFwaGljcy94MTFkcnYvZGliLmMsIGluY2x1ZGUveDExZHJ2Lmg6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUZpeGVkIENvZXJjZURJQlNlY3Rpb24ncyBBdXhNb2QgaGFuZGxpbmcuIEFkZGVkIENvZXJjZURJQlNlY3Rpb24yLgoKCSogb2xlL3V1aWQuYzogT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglJbmNsdWRlIHRoZSBHVUlEcyBpbiBkZHJhd2kuaCBpbiB0aGUgbGlid2luZV91dWlkLmEgbGlicmFyeS4KCgkqIGluY2x1ZGUvZGRyYXdpLmg6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCVlldCBtb3JlIHN0dWZmIGZvciBkZHJhd2kuaCwgaW5jbHVkaW5nIHNvbWUgR2V0RHJpdmVySW5mbyBHVUlEcy4KCgkqIGRsbHMvZGRyYXcvLmN2c2lnbm9yZSwgZGxscy9kZHJhdy9NYWtlZmlsZS5pbiwKCSAgZGxscy9kZHJhdy9kZHJhdy5zcGVjLCBkbGxzL2RkcmF3L3ZlcnNpb24ucmM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUFkZCB2ZXJzaW9uIHJlc291cmNlIHRvIGRkcmF3LmRsbCwgdmVyc2lvbmVkIHRvIERpcmVjdFggNy4wLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglHZXRJdGVtU3BhY2luZyh0cnVlKTogUmV0dXJuIHRoZSBkZWZhdWx0IGl0ZW0gc3BhY2luZyBpZiB0aGUgdmlldyBpcwoJTFZTX0lDT04sIGFuZCB0aGUgY3VycmVudCAnaXRlbSBzaXplJyBvdGhlcndpc2UuCgoJKiByZWxheTMyL3Nub29wLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRGlzcGxheSB0aHJlYWQgaWQgaW5zdGVhZCBvZiAlZnMgaW4gc25vb3AgdHJhY2UuCgoJKiBkbGxzL2RpbnB1dC9rZXlib2FyZC9tYWluLmM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCURvbid0IHJlc3RvcmUgdGhlIHNhdmVkIGtleWJvYXJkIGF1dG9yZXBlYXQgY29uZmlnLCBzaW5jZSB0aGUgY29uZmlnCglzYXZlIGNvZGUgaXRzZWxmIHdhcyBkaXNhYmxlZCBhIHdoaWxlIGFnby4uLgoKCSogaW5jbHVkZS9kM2R0eXBlcy5oLCBpbmNsdWRlL2QzZHZlYy5pbmwsIGluY2x1ZGUvZDNkLmg6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCURpcmVjdDNEIGhlYWRlciB1cGRhdGUuCgoJKiBpbmNsdWRlL2QzZGhhbC5oOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglOZXcgaGVhZGVyIGQzZGhhbC5oLCB0aGUgRGlyZWN0M0QgSEFMIGRldmljZSBkcml2ZXIgaW50ZXJmYWNlLgoKCSogZGxscy9tc3ZjcnQvd2NzLmMsIGRsbHMvbnRkbGwvd2NzdHJpbmcuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJSGFuZGxlIHRoZSAlZiBjYXNlIGluIHdzcHJpbnRmLgoKCSogZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUNoYW5nZWQgdGhlIHNwZWMgZGVmaW5pdGlvbiBvZiAqcypwcmludGYgZnJvbSAqc3RyIHRvIHB0ciwgc2luY2UgdGhhdAoJcGFyYW1ldGVyIGlzIGEgZGVzdGluYXRpb24gYnVmZmVyIHRoYXQgbWF5IG9ubHkgY29udGFpbiBnYXJiYWdlIG9uIGVudHJ5LgoKCSogZGxscy9kcGxheXgvTWFrZWZpbGUuaW4sIGRsbHMvZHBsYXl4L2RwbGF5eC5zcGVjLAoJICBkbGxzL2RwbGF5eC92ZXJzaW9uLnJjLCBkbGxzL2RwbGF5eC8uY3ZzaWdub3JlOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglBZGQgdmVyc2lvbiByZXNvdXJjZSB0byBkcGxheXguZGxsLCB2ZXJzaW9uZWQgdG8gRGlyZWN0WCA3LjAuCgoJKiBpbmNsdWRlL3dpbmUvd2luZV9jb21tb25fdmVyLnJjOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglHZW5lcmFsaXplIHRoZSBXaW5lIHZlcnNpb24gcmVzb3VyY2UgdGVtcGxhdGUgYSBiaXQuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9DYS5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfQ3MucmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0RhLnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9Fbi5yYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfRW8ucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0VzLnJjLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9GaS5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfRnIucmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0h1LnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9JdC5yYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfSmEucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0tvLnJjLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9ObC5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfTm8ucmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX1BsLnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9QdC5yYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfUnUucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX1NrLnJjLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9Tdi5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfV2EucmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJUmVwbGFjZSAiU3lzdGVtIiBmb250IGJ5ICJIZWx2IiBpbiBzaGVsbDMyICJBYm91dCIgZGlhbG9nLgoKCSogZGxscy9vbGUzMi9vbGUyLmMsIGRsbHMvb2xlMzIvb2xlMnN0dWJzLmMsIGRsbHMvb2xlMzIvb2xlMzIuc3BlYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnRhdGlvbiBvZiBPTEUzMi5Jc0FjY2VsZXJhdG9yLgoKCSogZGxscy9vbGUzMi9zdG9yYWdlMzIuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglSZXR1cm4gU1RHX0VfRklMRUFMUkVBRFlFWElTVFMgaW4gb2xlMzIuU3RnT3BlblN0b3JhZ2UgaWYgdGhlIGZpbGUgaXMKCW5vdCBhIHN0b3JhZ2Ugb2JqZWN0LgoKCSogb2JqZWN0cy9kYy5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCU1vdmUgaW1wbGVtZW50YXRpb24gb2YgQ3JlYXRlREMxNiB0byBDcmVhdGVEQ0EuCgoJKiBvYmplY3RzL2dkaW9iai5jOgoJR2F2cmllbCBTdGF0ZSA8Z2F2QHRyYW5zZ2FtaW5nLmNvbT4KCUFsbG9jYXRlIGJpdG1hcCBvYmplY3RzIGluIHRoZSBsYXJnZSBoZWFwIGFyZWEuCgoJKiBkbGxzL3dpbmVwcy90ZXh0LmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglGaXhlZCAwIGNvdW50IGhhbmRsaW5nIGluIFBTRFJWX1RleHQuCgoJKiBncmFwaGljcy94MTFkcnYveGZvbnQuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGQgTVMgU2hlbGwgRGxnIGZvbnQgdG8gdGhlIHNldCBvZiBkZWZhdWx0IHNhbnMgc2VyaWYgZm9udHMuCgoJKiBkbGxzL21zdmNydC90aW1lLmM6CglHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCUZpeGVkIE1TVkNSVF9jbG9jayByZXR1cm4gdHlwZS4KCjIwMDEtMDQtMTMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkb2N1bWVudGF0aW9uL3ByaW50aW5nLnNnbWw6CglBZGRlZCBtaXNzaW5nIDxsaXN0aXRlbT4uCgoJKiBzZXJ2ZXIvZmlsZS5jLCBzZXJ2ZXIvbWFwcGluZy5jLCBzZXJ2ZXIvb2JqZWN0Lmg6CglSZXBhaXJlZCBzaGFyZWQgUEUgZGF0YSBzZWN0aW9ucy4KCgkqIGRvY3VtZW50YXRpb24vZGVidWdnZXIuc2dtbDoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgbm90ZSBvbiB1c2luZyBzaGVsbCBzY3JpcHRzIGFzIEFlRGVidWcgc2V0dXAsIGFkZGVkCglCcmVha09uRGxsTG9hZCB2YXJpYWJsZS4KCgkqIGRsbHMvbXNhY20vcGNtY29udmVydGVyLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUEgZmV3IGZpeGVzLgoKCSogZGxscy9tc2FjbS9kcml2ZXIuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgb3BlbmluZyBvZiBzb21lIGRyaXZlcnMuCgoJKiBkbGxzL3dpbm1tL3dhdmVtYXAvd2F2ZW1hcC5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBjYWxsYmFjayBwYXJhbWV0ZXJzIChib2d1cyBoV2F2ZSk7IGFkZGVkIGFjbSBjb252ZXJzaW9uIGZvcgoJd2F2ZUluLgoKCSogZGxscy93aW5tbS9tY2l3YXZlL21jaXdhdmUuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJQWxsb3cgTUNJX1NFVCB0byBjaGFuZ2Ugd2F2ZUZvcm1hdCBmb3IgcmVjb3JkaW5nLgoJRml4ZWQgYnVmZmVyIGhhbmRsaW5nIG9uIHJlY29yZGluZyBlbmQuCglGaXhlZCBzaXplIG9mIHJlY29yZGVkIGRhdGEgaW4gbW1pbyBmaWxlLgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIHNvbWUgYnVmZmVycyBpc3N1ZSBpbiByZWNvcmRpbmcuCglaZXJvZWQgdW5uZWNlc3Nhcnkgc2Vjb25kIHBhcmFtZXRlciBmb3IgV0lNX0RBVEEgbm90aWZpY2F0aW9uLgoKCSogZGVidWdnZXIvd2luZWRiZy5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglFbmhhbmNlZCByb2J1c3RuZXNzIGF0IHN0YXJ0dXAuCgoJKiB3aW5kb3dzL21zZ2JveC5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJUHJlbGltaW5hcnkgc3VwcG9ydCBmb3IgTUJfKk1PREFMIHN0eWxlcy4KCgkqIGRsbHMvY29tY3RsMzIvc3RhdHVzLmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CgktICpkb24ndCogTW92ZVdpbmRvdygpIHRoZSBzdGF0dXMgYmFyIGlmIENDU19OT1JFU0laRSBpcyBzcGVjaWZpZWQsCgkgIGFuZCB1c2UgU2V0V2luZG93UG9zIGluc3RlYWQgZm9yIG9uZSBvZiB0aGUgTW92ZVdpbmRvdygpcwoJLSBjYWxsIFNUQVRVU0JBUl9HZXRJbmZvUHRyICpvbmNlKiBsaWtlIFdpbmRvd3MgZG9lcywgbm90IHR3aWNlICh1c2VkIHRvIGJlCgkgIGluIGV2ZXJ5IHN1YiBmdW5jdGlvbiwgdG9vKQoJLSByZW1lbWJlciBod25kUGFyZW50IGZyb20gY3JlYXRlIHN0cnVjdCB0byB1c2UgaW4gYXQgbGVhc3QgV01fQ1JFQVRFIGFuZAoJICBXTV9TSVpFIGluc3RlYWQgb2YgR2V0UGFyZW50KCkgbGlrZSBpbiBXaW5kb3dzCgktIGFkZGVkIERlZldpbmRvd1Byb2MgY2FsbCB0byBXTV9TSVpFIGxpa2UgaW4gV2luZG93cwoJLSBhZGRlZCBJbnZhbGlkYXRlUmVjdCwgVXBkYXRlV2luZG93IHRvIFdNX0NSRUFURSBsaWtlIGluIFdpbmRvd3MKCS0gbXVjaCBtb3JlIHZlcmJvc2UgK3N0YXR1c2JhciBvdXRwdXQKCS0gcmVuYW1lIHBhcnRfbnVtIHRvIG5QYXJ0IGZvciBjb25zaXN0ZW5jeQoJLSBhZGRlZCBuY2xtLmNiU2l6ZSB0byBTeXN0ZW1QYXJhbWV0ZXJzSW5mb0EgY2FsbAoJLSBhZGRlZCBGSVhNRSB0byBTVEFUVVNCQVJfU2V0UGFydHMKCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQGFzaS5mcj4KCVNldCB0aGUgY3VzdG9tIGRpYWxvZyBib3ggdG8gdGhlIGJvdHRvbSBvZiB0aGUgWi1vcmRlci4KCjIwMDEtMDQtMTIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2RwbGF5eC9NYWtlZmlsZS5pbiwgZGxscy9kcGxheXgvZHBpbml0LmgsIGRsbHMvZHBsYXl4L2RwbGF5LmMsCgkgIGRsbHMvZHBsYXl4L2RwbGF5X2dsb2JhbC5oLCBkbGxzL2RwbGF5eC9kcGxheXNwLmMsCgkgIGRsbHMvZHBsYXl4L2RwbGF5eF9nbG9iYWwuYywgZGxscy9kcGxheXgvZHBsYXl4X21lc3NhZ2VzLmMsCgkgIGRsbHMvZHBsYXl4L2RwbGF5eF9tZXNzYWdlcy5oLCBkbGxzL2RwbGF5eC9sb2JieXNwLmMsCgkgIGRsbHMvZHBsYXl4L2xvYmJ5c3AuaCwgZGxscy9kcGxheXgvbmFtZV9zZXJ2ZXIuYywKCSAgZGxscy9kcGxheXgvbmFtZV9zZXJ2ZXIuaCwgaW5jbHVkZS9kcGxheS5oLCBpbmNsdWRlL29iamJhc2UuaCwKCSAgaW5jbHVkZS93aW5lcnJvci5oLCBvbGUvdXVpZC5jOgoJUGV0ZXIgSHVubmlzZXR0IDxodW5uaXNlQG5vcnRlbG5ldHdvcmtzLmNvbT4KCS0gUHJvdmlkZSBsb2JieSBwcm92aWRlciBDT00gb2JqZWN0IGhlYWRlciBmaWxlIGFuZCBzdHViIGltcGxlbWVudGF0aW9uCgktIEJyZWFrIG91dCBkcGwgYW5kIGRwIHNlcnZpY2UgcHJvdmlkZXIgaW50aWFsaXphdGlvbgoJLSBBZGQgbWlzc2luZyBkZWZpbml0aW9uIG9mIEVfUEVORElORwoJLSBSZXNvbHZlIGEgZmV3IGZpeG1lcwoJLSBGaXggaW5jbHVkZXMgZm9yIGRwbGF5LmgKCgkqIGNvbnRyb2xzL21lbnUuYywgaW5jbHVkZS9tZXNzYWdlLmgsIHdpbmRvd3MvZGlhbG9nLmMsIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL25vbmNsaWVudC5jOgoJQWRkZWQgZmlyc3QvbGFzdCBtZXNzYWdlIGZpbHRlcnMgdG8gTVNHX0ludGVybmFsR2V0TWVzc2FnZSB0byBhdm9pZAoJYnVzeSB3YWl0cy4KCgkqIGRlYnVnZ2VyL2VkaXRsaW5lLmMsIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGluY2x1ZGUvd2luY29uLmgsCgkgIHdpbjMyL2NvbnNvbGUuYzoKCU1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuZGU+CgktIGFkZGVkIHN0dWJzIGZvciB0aHJlZSBjb25zb2xlIGZ1bmN0aW9ucwoJLSB1cGRhdGVkIHdpbmNvbi5oCgoJKiBvbGUvb2xlMm5scy5jOgoJSmFtZXMgSGF0aGV3YXkgPGphbWVzQG1hY2FkYW1pYW4uY29tPgoJU21hbGwgdHlwbyBmaXguCgoJKiB3aW5kb3dzL3dpbnBvcy5jOgoJSmFtZXMgSGF0aGV3YXkgPGphbWVzQG1hY2FkYW1pYW4uY29tPgoJU2V0V2luZG93UmduIHNob3VsZG4ndCBhY3RpdmF0ZSB0aGUgd2luZG93LgoKMjAwMS0wNC0xMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvY3J0ZGxsL2NydGRsbF9tYWluLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUZpeCB0aGUgc2lnbmF0dXJlIG9mIF9fR2V0TWFpbkFyZ3MgYW5kIF9fZ2V0bWFpbmFyZ3MgKGZyb20gbXN2Y3J0KS4KCgkqIGRsbHMvbXN2Y3J0L01ha2VmaWxlLmluLCBkbGxzL21zdmNydC9jb25zb2xlLmMsIGRsbHMvbXN2Y3J0L2NwcC5jLAoJICBkbGxzL21zdmNydC9jdHlwZS5jLCBkbGxzL21zdmNydC9kYXRhLmMsIGRsbHMvbXN2Y3J0L2Rpci5jLAoJICBkbGxzL21zdmNydC9lbnZpcm9uLmMsIGRsbHMvbXN2Y3J0L2Vycm5vLmMsIGRsbHMvbXN2Y3J0L2V4aXQuYywKCSAgZGxscy9tc3ZjcnQvZmlsZS5jLCBkbGxzL21zdmNydC9oZWFwLmMsIGRsbHMvbXN2Y3J0L2xvY2FsZS5jLAoJICBkbGxzL21zdmNydC9tYWluLmMsIGRsbHMvbXN2Y3J0L21hdGguYywgZGxscy9tc3ZjcnQvbWJjcy5jLAoJICBkbGxzL21zdmNydC9taXNjLmMsIGRsbHMvbXN2Y3J0L21zdmNydC5oLCBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYywKCSAgZGxscy9tc3ZjcnQvcHJvY2Vzcy5jLCBkbGxzL21zdmNydC9zdHJpbmcuYywgZGxscy9tc3ZjcnQvdGhyZWFkLmMsCgkgIGRsbHMvbXN2Y3J0L3RpbWUuYywgZGxscy9tc3ZjcnQvd2NzLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUluY2x1ZGUgdGhlIG1zdmNydCBoZWFkZXJzLCByZW1vdmUgZHVwbGljYXRlIGRlZmluaXRpb25zLgoJRml4ZWQgdGhlIHNpZ25hdHVyZSBvZiBhIGZldyBmdW5jdGlvbnMuCglEb24ndCB1c2Ugd2NzKiBmdW5jdGlvbnMsIHVzZSAqVyAoZnJvbSB1bmljb2RlLmgpIGluc3RlYWQuCgoJKiBpbmNsdWRlL3RjaGFyLmgsIGluY2x1ZGUvd2luZGVmLmgsIGluY2x1ZGUvd2lubnQuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJUHJldmVudCBtdWx0aXBsZSBkZWZpbml0aW9ucyBjYXVzZWQgYnkgTVNWQ1JUIGhlYWRlcnMuCgoJKiBkbGxzL01ha2VkbGwucnVsZXMuaW46CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFsbG93IHRoZSBNYWtlZmlsZS5pbiB0byBkZWZpbmUgRVhUUkFERUZTIGFuZCBhZGQgaXQgdG8gREVGUy4KCgkqIGluY2x1ZGUvbXN2Y3J0L3N5cy9zdGF0LmgsIGluY2x1ZGUvbXN2Y3J0L3N5cy90aW1lYi5oLAoJICBpbmNsdWRlL21zdmNydC9zeXMvdHlwZXMuaCwgaW5jbHVkZS9tc3ZjcnQvc3lzL3V0aW1lLmgsCgkgIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvbXN2Y3J0L2NvbmlvLmgsCgkgIGluY2x1ZGUvbXN2Y3J0L2N0eXBlLmgsIGluY2x1ZGUvbXN2Y3J0L2RpcmVjdC5oLAoJICBpbmNsdWRlL21zdmNydC9kb3MuaCwgaW5jbHVkZS9tc3ZjcnQvZmNudGwuaCwgaW5jbHVkZS9tc3ZjcnQvaW8uaCwKCSAgaW5jbHVkZS9tc3ZjcnQvcHJvY2Vzcy5oLCBpbmNsdWRlL21zdmNydC9zdGRkZWYuaCwKCSAgaW5jbHVkZS9tc3ZjcnQvc3RkaW8uaCwgaW5jbHVkZS9tc3ZjcnQvc3RkbGliLmgsCgkgIGluY2x1ZGUvbXN2Y3J0L3N0cmluZy5oLCBpbmNsdWRlL21zdmNydC90aW1lLmgsCgkgIGluY2x1ZGUvbXN2Y3J0L3djaGFyLmgsIGluY2x1ZGUvbXN2Y3J0L3djdHlwZS5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBZGRlZCBoZWFkZXJzIGZvciB0aGUgbXN2Y3J0IGxpYnJhcnkuCgoJKiBjb250cm9scy9lZGl0LmMsIHdpbmRvd3Mvd2lucHJvYy5jOgoJQWRkZWQgbWFwcGluZ3MgZm9yIFdNX0NIQVJUT0lURU0gYW5kIFdNX01FTlVDSEFSIG1lc3NhZ2VzLgoJUmVtb3ZlZCBtYXBwaW5nIG9mIDE2LWJpdCBlZGl0IG1lc3NhZ2VzIGluIHRoZSBnZW5lcmljIHJvdXRpbmVzLgoKCSogcHJvZ3JhbXMvd2luZW1pbmUvbWFpbi5jOgoJUGFzcyB0aGUgY29ycmVjdCBzdHJpbmcgbGVuZ3RoIHRvIFJlZ1NldFZhbHVlRXhBLgoKCSogZGxscy9hZHZhcGkzMi9yZWdpc3RyeS5jOgoJUmVnU2V0VmFsdWVFeEEvVzogZml4ZWQgUkVHX1NaIHN0cmluZyBsZW5ndGggaGFuZGxpbmcgZm9yIFdpbjk1LgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jLCBkbGxzL3dpbnNvY2svd3MyXzMyLnNwZWMsIGluY2x1ZGUvd2luc29jazIuaDoKCVBldGVyIEh1bm5pc2V0dCA8aHVubmlzZUBub3J0ZWxuZXR3b3Jrcy5jb20+CglBZGRlZCBzdHViIGZvciBXU0FTZW5kLgoKCSogZGxscy9udGRsbC9yZWcuYywgc2VydmVyL3JlZ2lzdHJ5LmM6CglGaXhlZCBoYW5kbGluZyBvZiBcXFJlZ2lzdHJ5IHByZWZpeC4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzIuc3BlYywgZGxscy9vbGVhdXQzMi9vbGVwaWN0dXJlLmM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBhc2kuZnI+CglTdHViIGZvciBPbGVMb2FkUGljdHVyZUV4LgoKCSogZGxscy9jb21jdGwzMi9jb21ib2V4LmM6CglNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmRlPgoJRml4IGZvciBzbWFsbCB0eXBvLgoKCSogZGxscy9tc3ZjcnQvY29uc29sZS5jLCBkbGxzL21zdmNydC9jcHAuYywgZGxscy9tc3ZjcnQvY3R5cGUuYywKCSAgZGxscy9tc3ZjcnQvZGF0YS5jLCBkbGxzL21zdmNydC9kaXIuYywgZGxscy9tc3ZjcnQvZW52aXJvbi5jLAoJICBkbGxzL21zdmNydC9lcnJuby5jLCBkbGxzL21zdmNydC9leGNlcHQuYywgZGxscy9tc3ZjcnQvZXhpdC5jLAoJICBkbGxzL21zdmNydC9maWxlLmMsIGRsbHMvbXN2Y3J0L2hlYXAuYywgZGxscy9tc3ZjcnQvbG9jYWxlLmMsCgkgIGRsbHMvbXN2Y3J0L21haW4uYywgZGxscy9tc3ZjcnQvbWF0aC5jLCBkbGxzL21zdmNydC9tYmNzLmMsCgkgIGRsbHMvbXN2Y3J0L21pc2MuYywgZGxscy9tc3ZjcnQvbXN2Y3J0LmgsIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjLAoJICBkbGxzL21zdmNydC9wcm9jZXNzLmMsIGRsbHMvbXN2Y3J0L3N0cmluZy5jLCBkbGxzL21zdmNydC90aHJlYWQuYywKCSAgZGxscy9tc3ZjcnQvdGltZS5jLCBkbGxzL21zdmNydC93Y3MuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQWRqdXN0IHRoZSAnTVNWQ1JUXycgcHJlZml4IHRvIG1hdGNoIHRoZSBtc3ZjcnQgaGVhZGVycwoJUHJlZml4IGludGVybmFsIG1ldGhvZHMgd2l0aCAnbXN2Y3J0XycgaW5zdGVhZCBvZiAnTVNWQ1JUXycsICdfX01TVkNSVF8nLCBldGMuCglSZW1vdmUgJ19jZGVjbCcsIGl0J3MgdW5uZWNlc3NhcnkKCjIwMDEtMDQtMDkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBwcm9ncmFtcy93aW5ldGVzdC90ZXN0LnBsLCBwcm9ncmFtcy93aW5ldGVzdC93aW5lLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC93aW5lLnhzLCBwcm9ncmFtcy93aW5ldGVzdC93aW5ldGVzdC5jOgoJU3RvcmUgdGhlIGZ1bmN0aW9uIHBvaW50ZXIgaW4gdGhlICVwcm90b3R5cGVzIGhhc2ggaW5zdGVhZCBvZiB0aGUKCWZ1bmN0aW9uIG5hbWUgdG8gYXZvaWQgbG9va2luZyBpdCB1cCBvbiBldmVyeSBjYWxsLgoJRml4ZWQgY2FsbGJhY2sgdGh1bmtzIHRvIHVzZSBzdGRjYWxsIGNhbGxpbmcgY29udmVudGlvbi4KCgkqIHJlbGF5MzIvcmVsYXkzODYuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2NoZWR1bGVyL3RocmVhZC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCURpc3BsYXkgdGhyZWFkIGlkIGluc3RlYWQgb2YgJWZzIGluIHJlbGF5IHRyYWNlLgoKCSogZGxscy9rZXJuZWwvdGltZS5jOgoJSmFtZXMgSGF0aGV3YXkgPGphbWVzQG1hY2FkYW1pYW4uY29tPgoJRmlsbCBpbiBTdGFuZGFyZE5hbWUgZmllbGQgaW4gc3RydWN0IHJldHVybmVkIGZyb20gR2V0VGltZVpvbmVJbmZvcm1hdGlvbi4KCgkqIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywKCSAgZGxscy91c2VyL3VzZXIzMi5zcGVjLCBkbGxzL2FkdmFwaTMyL2FkdmFwaTMyLnNwZWM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIHNvbWUgc3R1YnMgZm9yIGZ1bmN0aW9ucyB1c2VkIGJ5IG5ld2VyIHJwY3J0NCBkbGxzLgoKCSogb2JqZWN0cy9kYy5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUdldERldmljZUNhcHM6IG1ha2Ugc3VyZSB0aGUgZGV2Q2FwcyBmaWVsZCBpcyBub3QgTlVMTCBiZWZvcmUKCWRlcmVmZXJlbmNpbmcgaXQuCgoJKiBkbGxzL29sZTMyL2NvbXBvYmouYywgaW5jbHVkZS93aW5lL29ial9iYXNlLmg6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFyZyAzIG9mIENvR2V0Q2xhc3NPYmplY3QgaXMgQ09TRVJWRVJJTkZPKiwgYWRkZWQgc29tZSBtb3JlIGRlYnVnLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGxfRGUucmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVRyYW5zbGF0aW9ucyBmb3IgR2VybWFuIGxhbmd1YWdlLgoKCSogZGxscy9vbGUzMi9vbGUzMi5zcGVjLCBkbGxzL29sZTMyL3N0b3JhZ2UzMi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBHZXRDb252ZXJ0U3RnIHN0dWIuCgoJKiBkbGxzL2RkcmF3L21haW4uYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWN0dWFsbHkgcHJpbnQgdGhlIGd1aWRzIGluIERsbEdldENsYXNzT2JqZWN0KCkuCgoJKiBSRUFETUUsIHRvb2xzL3dpbmVpbnN0YWxsOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJQWRkZWQgdW5pbnN0YWxsIGhpbnRzLgoKCSogZGVidWdnZXIvZGVidWdnZXIuaCwgZGVidWdnZXIvd2luZWRiZy5jOgoJSmFtZXMgSGF0aGV3YXkgPGphbWVzQG1hY2FkYW1pYW4uY29tPgoJTW9kaWZ5IGRlYnVnZ2VyIHRvIHVuZGVyc3RhbmQgc3BlY2lhbCB1bmRvY3VtZW50ZWQgIk5hbWUgVGhyZWFkIgoJZXhjZXB0aW9uIGZyb20gTVMgVkM2LgoKCSogY29udHJvbHMvY29tYm8uYywgY29udHJvbHMvbGlzdGJveC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVJlYWxseSBkbyBub3Qgcm9sbCB1cCBpZiBzZWxlY3Rpb24gaXMgYmVpbmcgdHJhY2tlZCBieSBhcnJvdyBrZXlzIGluCgl0aGUgZHJvcGRvd24gbGlzdGJveC4KCgkqIGRsbHMvdXNlci9kZGVtbC5jOgoJUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJV2hlbiBjYWxsaW5nIENyZWF0ZU11dGV4KCkgaGFuZGxlIHRoZSBjYXNlIHdoZW4gdGhlIG11dGV4IGlzIGFscmVhZHkKCWNyZWF0ZWQgaW4gYW5vdGhlciBwcm9jZXNzLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAYXNpLmZyPgoJQWZ0ZXIgYW4gaXRlbSB0ZXh0IGNoYW5nZXMsIHRoZSByZWN0YW5nbGUgd2lkdGggc2hvdWxkIGJlCglyZWNhbGN1bGF0ZWQuCgoyMDAxLTA0LTA0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy93aW4uYzoKCURvbid0IHVzZSBUSFJFQURfSWRUb1RFQiBpbiBFbnVtVGhyZWFkV2luZG93cy4KCgkqIHVuaWNvZGUvd2N0b21iLmM6CglKYW1lcyBIYXRoZXdheSA8amFtZXNAbWFjYWRhbWlhbi5jb20+CglNYWtlIHN1cmUgJ3VzZWQnIGlzIHNldCB0byAwIGlmIG5vIGNvbnZlcnNpb25zIHRha2UgcGxhY2UuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJRml4ZWQgc2Nyb2xsaW5nIG9mIGxpc3R2aWV3IHdpdGggYSBtb3VzZSB3aGVlbC4KCgkqIG9sZS9vbGUybmxzLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglJbXBsZW1lbnQgVElNRV9GT1JDRTI0SE9VUkZPUk1BVCBhbmQgVElNRV9OT1RJTUVNQVJLRVIgZmxhZ3MgaW4KCU9MRV9HZXRGb3JtYXRBLgoKCSogd2luZG93cy93aW5wcm9jLmMsIGNvbnRyb2xzL21lbnUuYywgZGxscy9rZXJuZWwvdGh1bmsuYywKCSAgZGxscy93aW5lZG9zL21vZHVsZS5jLCBmaWxlcy9kcml2ZS5jLCBsb2FkZXIvbmUvbW9kdWxlLmMsCgkgIG1zZG9zL2ludDIxLmMsIHNjaGVkdWxlci90aHJlYWQuYzoKCUFkZGVkIFRBU0tfR2V0UHRyL1RBU0tfR2V0Q3VycmVudCBmdW5jdGlvbnMgdG8gZ2V0IHRoZSBUREIgZm9yIGEgdGFzawoJaGFuZGxlLgoKCSogaW5jbHVkZS90YXNrLmgsIGxvYWRlci90YXNrLmMsIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL3F1ZXVlLmM6CglVbmlmaWVkIDE2LWJpdCBhbmQgMzItYml0IHNjaGVkdWxpbmcgYSBiaXQgbW9yZS4KCgkqIG1zZG9zL2Rvc2NvbmYuYzoKCURvbid0IGNhbGwgc3RydG9rIHR3aWNlIGlmIGl0IGZhaWxlZCB0aGUgZmlyc3QgdGltZS4KCgkqIHNlcnZlci9yZXF1ZXN0LmM6CglNYWtlIHN1cmUgdGhlIHByb2Nlc3Mgc29ja2V0IGlzIG5vbi1ibG9ja2luZy4KCURvbid0IGZhaWwgaWYgbm90aGluZyByZWFkeSBvbiByZWN2bXNnIGZvciBhIGZpbGUgZGVzY3JpcHRvci4KCgkqIGluY2x1ZGUvd2luZS93aW5nZGkxNi5oLCBvYmplY3RzL2ZvbnQuYywgaW5jbHVkZS93aW5nZGkuaDoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBtZW1iZXIgbmFtZXMgaW4gTkVXVEVYVE1FVFJJQ0VYIHN0cnVjdHMuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBhc2kuZnI+CglFcmFzZSB0aGUgaW4tbWVtb3J5IERDIGZvciB0cmVldmlldyBhbmQgZml4ZXMgdGhlIHJlY3RhbmdsZSBjYWxjdWxhdGlvbi4KCgkqIGRsbHMvY29tY3RsMzIvaGVhZGVyLmM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBhc2kuZnI+CglTZXQgYmFja2dyb3VuZCBtb2RlIHRvIHRyYW5zcGFyZW50IGJlZm9yZSBjYWxsaW5nIG93bmVyLWRyYXduIHVzZXIKCWhhbmRsaW5nLgoKMjAwMS0wNC0wMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvd2luZXBzL01ha2VmaWxlLmluLCBkbGxzL3dpbmVwcy9mb250LmMsCgkgIGRsbHMvd2luZXBzL2luaXQuYywgZGxscy93aW5lcHMvcHNkcnYuaCwgZGxscy93aW5lcHMvd2luZXBzLnNwZWMsCgkgIGRvY3VtZW50YXRpb24vY29uZmlndXJpbmcuc2dtbCwgZG9jdW1lbnRhdGlvbi9mb250cy5zZ21sLAoJICBkb2N1bWVudGF0aW9uL3ByaW50aW5nLnNnbWwsIGRvY3VtZW50YXRpb24vcHNkcnYucmVnLAoJICBkb2N1bWVudGF0aW9uL3dpbmUtZG9jLnNnbWwsIGRvY3VtZW50YXRpb24vd2luZS11c2VyLnNnbWw6CglJYW4gUGlsY2hlciA8aWFuLnBpbGNoZXJAaG9tZS5jb20+CglWYXJpb3VzIHJlZ2lzdHJ5LXJlbGF0ZWQgUG9zdFNjcmlwdCBkcml2ZXIgZW5oYW5jZW1lbnRzLgoKCSogY29udHJvbHMvZWRpdC5jOgoJUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCURvIG5vdCBzZW5kIHRoZSBFTl9DSEFOR0Ugbm90aWZpY2F0aW9uIG1lc3NhZ2UgdW50aWwgdGhlIHNlbGVjdGlvbgoJc3RhcnQgYW5kIGVuZCB2YWx1ZXMgYXJlIGZpbGxlZCBpbi4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6CglHdXN0YXZvIE5vcm9uaGEgU2lsdmEgKEtvVikgPGtvdkBkZWJpYW4ub3JnPgoJQWRkZWQgVVMgaW50ZXJuYXRpb25hbCBrZXlib2FyZC4KCgkqIGluY2x1ZGUvd2ludXNlci5oLCB3aW5kb3dzL3N5c3BhcmFtcy5jOgoJSmFtZXMgSnVyYW4gPGphbWVzanVyYW5AYWx1bW5pLnBzdS5lZHU+CglBZGQgdmFsdWUgMTA2IHRvIFN5c3RlbVBhcmFtZXRlcnNJbmZvLgoKMjAwMS0wMy0zMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHByb2dyYW1zL3dpbmV0ZXN0L01ha2VmaWxlLlBMLCBwcm9ncmFtcy93aW5ldGVzdC9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvTWFrZWZpbGUud2luMzIsIHByb2dyYW1zL3dpbmV0ZXN0L3dpbmUucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L3dpbmUueHMsIHByb2dyYW1zL3dpbmV0ZXN0L3dpbmV0ZXN0LmM6CglKb2huIEYgU3R1cnR6IDxqc3R1cnR6QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIHN1cHBvcnQgZm9yIGNhbGxiYWNrIGZ1bmN0aW9ucy4KCgkqIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBhc2kuZnI+CglEb24ndCB0cnkgdG8gY3JlYXRlIGZpbGUgdHdpY2UgaW4gdGhlIE5VTEwgZmlsZW5hbWUgY2FzZSBmb3IKCVN0Z0NyZWF0ZURvY0ZpbGUuCgoJKiBjb250cm9scy9lZGl0LmM6CglVbHJpY2ggQ3pla2FsbGEgPHVjemVrYWxsYUBjb2Rld2VhdmVycy5jb20+CglVcGRhdGUgZm9ybWF0IGVuZ2luZSB0byByZWR1Y2UgZmxpY2tlci4KCjIwMDEtMDMtMjggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jOgoJQWRkZWQgc3VwcG9ydCBmb3IgYXBwbGljYXRpb24tc3BlY2lmaWMgY29uZmlndXJhdGlvbiBmb3IgYSBmZXcgb3B0aW9ucwoJKERlc2t0b3AsIE1hbmFnZWQsIFNjcmVlbkRlcHRoIGFuZCBTeW5jaHJvbm91cykuCgoJKiBncmFwaGljcy94MTFkcnYvZGliLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIHVuZGVmaW5lZCBDIGNvbnN0cnVjdHMgKHZhbCBhc3NpZ25tZW50IGluIGV4cHJlc3Npb25zIHVzaW5nIGl0LAoJcG9zdGluYyBvcGVyYXRvcnMgaW4gbWFjcm9zKS4KCgkqIGxvYWRlci90YXNrLmMsIG1pc2NlbXUvbWFpbi5jOgoJRG9uJ3QgbG9hZCB1c2VyMzIgdG9vIGVhcmx5IG9uIGZvciAxNi1iaXQgYXBwcywgc28gdGhhdCBhcHAtc3BlY2lmaWMKCWNvbmZpZyBjYW4gYmUgYXZhaWxhYmxlIHdoaWxlIGxvYWRpbmcgaXQuCgoJKiB3aW5kb3dzL3dpbi5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUdldCBhbmQgcHJpbnQgY2xhc3MgbmFtZSBmb3IgcmlnaHQgd2luZG93IGluIFdJTl9XYWxrV2luZG93cy4KCgkqIHRvb2xzL3dpbmVidWlsZC9zcGVjMTYuYywgd2luZG93cy91c2VyLmMsIGRsbHMvdXNlci91c2VyLnNwZWMsCgkgIGlmMTYzMi9idWlsdGluLmMsIGluY2x1ZGUvYnVpbHRpbjE2Lmg6CglBbHdheXMgbG9hZCB0aGUgMzItYml0IGRsbCBjb250YWluaW5nIGEgZ2l2ZW4gMTYtYml0IGJ1aWx0aW4uCglDaGVjayB0aGUgbW9kdWxlIG5hbWUgaW4gYWRkaXRpb24gdG8gdGhlIGZpbGUgbmFtZSB3aGVuIGxvYWRpbmcgYQoJMTYtYml0IGJ1aWx0aW4gZGxsLgoKCSogZGxscy94MTFkcnYveDExZHJ2X21haW4uYywgZ3JhcGhpY3MveDExZHJ2L3BhbGV0dGUuYywKCSAgd2luZG93cy94MTFkcnYvd25kLmMsIGRsbHMvb3BlbmdsMzIvd2dsLmM6CglHYXZyaWVsIFN0YXRlIDxnYXZAdHJhbnNnYW1pbmcuY29tPgoJLSBBbHdheXMgdXNlIGEgZG91YmxlLWJ1ZmZlcmVkIHZpc3VhbCBpZiBvbmUgaXMgYXZhaWxhYmxlLgoJLSBFbnN1cmUgdGhhdCBhbGwgY29sb3JtYXBzIGNyZWF0ZWQgdXNlIHRoZSBkb3VibGUtYnVmZmVyZWQgdmlzdWFsIGlmCgkgIGl0IGV4aXN0cy4gVGhpcyBwcmV2ZW50cyBwcm9ibGVtcyB3aGVyZSBEUkkgR0wgaW1wbGVtZW50YXRpb25zIGZhaWwKCSAgdG8gd29yayB1bmxlc3MgdGhlIGNvbG9ybWFwIHZpc3VhbCBtYXRjaGVzIHRoZSB3aW5kb3cgdmlzdWFsIG1hdGNoZXMgdGhlCgkgIGdsWCB2aXN1YWwuCgktIEdldCBhcm91bmQgc2ltaWxhciB2aXN1YWwgaXNzdWUgd2l0aCB0aGUgZGVmYXVsdCBHTCBjb250ZXh0IGNyZWF0ZWQgZm9yCgkgIGFwcHMgdGhhdCBkb24ndCBjcmVhdGUgdGhlaXIgb3duIGNvbnRleHRzIGJlZm9yZSB0cnlpbmcgdG8gdXNlIEdMIGZ1bmN0aW9ucy4KCgkqIGRvY3VtZW50YXRpb24vd2luZS5tYW4uaW46CglMYXdzb24gV2hpdG5leSA8bGF3c29uX3doaXRuZXlAanVuby5jb20+CglGaXhlZCBjb21tYW5kLWxpbmUgZXhhbXBsZS4KCjIwMDEtMDMtMjYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBDaGFuZ2VMb2csIGluY2x1ZGUvdmVyc2lvbi5oLCBBTk5PVU5DRToKCVJlbGVhc2UgMjAwMTAzMjYuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjIwMDEtMDMtMjYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkb2N1bWVudGF0aW9uL3NhbXBsZXMvY29uZmlnOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIHNvbWUgYWRkaXRpb25hbCBkZWZhdWx0cyBhbmQgc2FtcGxlcyB0byBbZm9udHNdIHNlY3Rpb24uCgoyMDAxLTAzLTIzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbWlzYy9vcHRpb25zLmMsIHdpbmRvd3MvZGNlLmMsIHdpbmRvd3Mvd2luLmMsCgkgIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIHdpbmRvd3MveDExZHJ2L3duZC5jLAoJICBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jLCBkb2N1bWVudGF0aW9uL3NhbXBsZXMvY29uZmlnLAoJICBkb2N1bWVudGF0aW9uL3dpbmUubWFuLmluLCBncmFwaGljcy94MTFkcnYveGZvbnQuYywKCSAgaW5jbHVkZS9vcHRpb25zLmgsIGluY2x1ZGUveDExZHJ2Lmg6CglDbGVhbnVwIHByb3Blcmx5IG9uIHgxMWRydiB1bmxvYWRpbmcuCglNb3ZlZCAtLXN5bmNocm9ub3VzIG9wdGlvbiBpbnRvIGNvbmZpZyBmaWxlLgoJUmVtb3ZlZCAtLWRlc2t0b3AsIC0tZGlzcGxheSBhbmQgLS1sYW5ndWFnZSBjb21tYW5kLWxpbmUgb3B0aW9ucy4KCgkqIGRsbHMvd2lubW0vbWNpd2F2ZS9tY2l3YXZlLmM6CglKYW1lcyBIYXRoZXdheSA8amFtZXNAbWFjYWRhbWlhbi5jb20+CgktIE1DSV9TQVZFIHNob3VsZCBvdmVyd3JpdGUgaXRzIGRlc3RpbmF0aW9uIGZpbGUuCgktIHdpZENsb3NlKCkgaXMgc29tZXRpbWVzIGZhaWxpbmcuLi4gTUNJIChpbiBXQVZFX21jaVJlY29yZENhbGxiYWNrKQoJICBzaG91bGRuJ3QgcXVldWUgdXAgYnVmZmVycyBpZiBpdCBrbm93cyB3ZSBhcmUgbm8gbG9uZ2VyIHJlY29yZGluZy4KCgkqIGRsbHMvdXNlci91c2VyX21haW4uYywgZmlsZXMvcHJvZmlsZS5jLCBtZW1vcnkvbG9jYWwuYywKCSAgb2JqZWN0cy9nZGlvYmouYywgb2JqZWN0cy9tZXRhZmlsZS5jLCB3aW5kb3dzL3VzZXIuYzoKCVNtYWxsIGRsbCBzZXBhcmF0aW9uIGZpeGVzLgoKCSogZGxscy9hZHZhcGkzMi9yZWdpc3RyeS5jOgoJVXNlIFRFQiBzdGF0aWMgYnVmZmVyIGZvciBVbmljb2RlIGNvbnZlcnNpb24uCgoJKiB0b29scy93aW5lbWFrZXI6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgaGFuZGxpbmcgb2YgLmhwcCBmaWxlcyAoYW5vdGhlciBleHRlbnNpb24gZm9yIEMrKyBoZWFkZXJzKS4KCVRoZSB3cmFwcGVyIGNvZGUgbmVlZHMgdG8gaW1wb3J0IGRsbHMgdG9vLgoJQWxsIHRoZSBnZW5lcmF0ZWQgd3JhcHBlciBmaWxlcyB3ZXJlIGlkZW50aWNhbCwgdGhlICd2YXJpYWJsZScKCXN1YnNpdHV0aW9uIHdhcyBkb25lIG9uIHRoZSB0ZW1wbGF0ZSBpdHNlbGYuIE91cHMhCgoJKiBkbGxzL3ZlcnNpb24vaW5mby5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUNvbnZlcnRWZXJzaW9uSW5mbzMyVG8xNjogdGhlIGVuZCBvZiB0aGUgY2hpbGQgbGlzdCBtYXkgYWxzbyBiZSBtYXJrZWQKCWJ5IGEgMC1ieXRlIGNoaWxkLgoKMjAwMS0wMy0yMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL2NvbW0uYywgZmlsZXMvZmlsZS5jLCBpbmNsdWRlL2ZpbGUuaCwgaW5jbHVkZS9zZXJ2ZXIuaCwKCSAgaW5jbHVkZS90aHJlYWQuaCwgc2NoZWR1bGVyL3N5bmNocm8uYywgc2VydmVyL2FzeW5jLmMsCgkgIHNlcnZlci9vYmplY3QuaCwgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3NlcmlhbC5jLCBzZXJ2ZXIvdHJhY2UuYzoKCU1pY2hhZWwgTWNDb3JtYWNrIDxtY2Nvcm1hY0BhYWxzMjcuYWxjYXRlbC5jb20uYXU+CglVc2UgcG9sbCgpIG9uIHRoZSBjbGllbnQtc2lkZSBkdXJpbmcgc2VydmVyIHdhaXRzIHRvIGltcGxlbWVudAoJb3ZlcmxhcHBlZCBJL08uCgoJKiBpbmNsdWRlL3NlcnZlci5oLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvY29uc29sZS5jLAoJICBzZXJ2ZXIvdHJhY2UuYywgd2luMzIvY29uc29sZS5jOgoJVXNlIHRoZSBuZXcgc2VuZF9mZCBtZWNoYW5pc20gZm9yIHRoZSBzZXRfY29uc29sZV9mZCBzZXJ2ZXIgcmVxdWVzdC4KCgkqIGRsbHMvc2hsd2FwaS9yZWcuYywgZGxscy94MTFkcnYveDExZGRyYXcuYywgZGxscy94MTFkcnYveHZpZG1vZGUuYywKCSAgZGxscy9jb21jdGwzMi9jb21ib2V4LmM6CglKZWZmIEdhcnppayA8amdhcnppa0BtYW5kcmFrZXNvZnQuY29tPgoJQWRkZWQgbmVlZGVkIHN0cmluZy5oIGluY2x1ZGVzLgoKMjAwMS0wMy0yMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MvZGNlLmMsIHdpbmRvd3MvZGlhbG9nLmMsIHdpbmRvd3Mvbm9uY2xpZW50LmMsIHdpbmRvd3Mvd2luLmMsCgkgIHdpbmRvd3Mvd2lucG9zLmMsIHdpbmRvd3MveDExZHJ2L3duZC5jOgoJQ2xlYW5lZCB1cCBhc3N1bXB0aW9ucyBhYm91dCBXU19DSElMRCBmbGFnIHNvIHRoYXQgd2UgY2FuIGFsbG93IGl0IHRvCgliZSBjaGFuZ2VkIGluIFNldFdpbmRvd0xvbmcuCgoJKiBkbGxzL250ZGxsL2RlYnVndG9vbHMuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglJbmNyZWFzZSBkZWJ1ZyBidWZmZXIgc2l6ZSB1cCB0byAxMDI0IGJ5dGVzLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW4sIHByb2dyYW1zL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy93aW5ldGVzdC8uY3ZzaWdub3JlLCBwcm9ncmFtcy93aW5ldGVzdC9NYWtlZmlsZS5QTCwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmV0ZXN0L01ha2VmaWxlLndpbjMyLAoJICBwcm9ncmFtcy93aW5ldGVzdC90ZXN0LnBsLCBwcm9ncmFtcy93aW5ldGVzdC93aW5lLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC93aW5lLnhzLCBwcm9ncmFtcy93aW5ldGVzdC93aW5ldGVzdC5jLAoJICBwcm9ncmFtcy93aW5ldGVzdC93aW5ldGVzdC5zcGVjOgoJQWRkZWQgZmlyc3QgdmVyc2lvbiBvZiB0aGUgUGVybCByZWdyZXNzaW9uIHRlc3RpbmcgZnJhbWV3b3JrLgoKCSogZG9jdW1lbnRhdGlvbi9zYW1wbGVzL2NvbmZpZywgZG9jdW1lbnRhdGlvbi93aW5lLmNvbmYubWFuLmluLAoJICBsb2FkZXIvbG9hZG9yZGVyLmM6CglBZGRlZCAiKiIgd2lsZGNhcmQgZW50cnkgdG8gRGxsT3ZlcnJpZGVzIHRvIHJlcGxhY2UgRGxsRGVmYXVsdHMKCXNlY3Rpb247IHRoaXMgd2F5IGl0IGNhbiBhbHNvIGJlIHNwZWNpZmllZCBvbiBhIHBlci1hcHAgYmFzaXMuCglSZW1vdmVkIGNvbXBpbGVkLWluIGRlZmF1bHRzIGZvciBkbGxzIG1lbnRpb25lZCBpbiB0aGUgc2FtcGxlIGNvbmZpZy4KCVVwZGF0ZSBtYW4gcGFnZS4KCgkqIGRsbHMvZGRyYXcvZDNkdGV4dHVyZS5jLCBkbGxzL3dpbm1tL21jaWNkYS9tY2ljZGEuYywKCSAgaW5jbHVkZS9uZXRzcGkuaCwgc2VydmVyL21haW4uYywgc2VydmVyL3RyYWNlLmM6CglKZWZmIEdhcnppayA8amdhcnppa0BtYW5kcmFrZXNvZnQuY29tPgoJV2FybmluZyBmaXhlcy4KCgkqIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYywgdG9vbHMvd21jL21jbC5jLCBzY2hlZHVsZXIvcHRocmVhZC5jLAoJICBzY2hlZHVsZXIvc3luY2hyby5jLCBzZXJ2ZXIvYXRvbS5jOgoJSmVmZiBHYXJ6aWsgPGpnYXJ6aWtAbWFuZHJha2Vzb2Z0LmNvbT4KCUFkZGVkIHNvbWUgaW5jbHVzaW9ucyBvZiBzdHJpbmcuaCB3aGVyZSBuZWNlc3NhcnkuCgoJKiBsb2FkZXIvcGVfaW1hZ2UuYzoKCURpc2FibGUgRE9OVF9SRVNPTFZFX0RMTF9SRUZFUkVOQ0VTIGZvciBidWlsdGluIGRsbHMuCgoJKiBsb2FkZXIvbW9kdWxlLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWxsb3cgbG9hZGluZyBvZiBidWlsdC1pbiBkbGxzIHdpdGggTE9BRF9MSUJSQVJZX0FTX0RBVEFGSUxFIGZsYWcgc2V0LgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCVNob3cgYW4gZXJyb3IgaWYgc21hbGwgZW5vdWdoIGZyYWdtZW50IHNpemVzIGNvdWxkbid0IGJlIHNldC4KCUZvcmNlIGEgY29tcGxldGUgY2xvc2UvcmVvcGVuIG9mIHRoZSBzb3VuZCBkZXZpY2UgaWYgcGF1c2UgaXMKCXJlcXVlc3RlZCBpbiBEaXJlY3RTb3VuZCBtb2RlIChtYW55IGRyaXZlcnMgcmVxdWlyZSB0aGlzKS4KCgkqIGRsbHMvZGRyYXcvZGRyYXcvdXNlci5jOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglSZW1vdmUgb2Jzb2xldGUgYW5kIG1pc2xlYWRpbmcgRklYTUUuCgoJKiBkbGxzL2dkaS9nZGkzMi5zcGVjOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglJbXBsZW1lbnRlZCBHZXQvU2V0RGV2aWNlR2FtbWFSYW1wLgoKMjAwMS0wMy0yMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRvY3VtZW50YXRpb24vc2FtcGxlcy9jb25maWcsIGRvY3VtZW50YXRpb24vd2luZS5tYW4uaW4sCgkgIGluY2x1ZGUvbG9hZG9yZGVyLmgsIGluY2x1ZGUvb3B0aW9ucy5oLCBsb2FkZXIvbG9hZG9yZGVyLmMsCgkgIGxvYWRlci9tYWluLmMsIGxvYWRlci9tb2R1bGUuYywgbG9hZGVyL25lL21vZHVsZS5jLCBtaXNjL29wdGlvbnMuYzoKCS0gQWRkZWQgc3VwcG9ydCBmb3IgYXBwLXNwZWNpZmljIGRsbCBvdmVycmlkZXMgdXNpbmcKCSAgQXBwRGVmYXVsdHNcPGFwcG5hbWU+XERsbE92ZXJyaWRlcyBjb25maWd1cmF0aW9uIHNlY3Rpb24uCgktIEJldHRlciBzdXBwb3J0IGZvciBtdWx0aXBsZSAtLWRsbCBvcHRpb25zLgoJLSBBZGRlZCB3YXJuaW5nIG1lc3NhZ2UgdG8gZGlzY291cmFnZSBwdXR0aW5nIG11bHRpcGxlIGRsbHMgaW4gYQoJICBzaW5nbGUgb3ZlcnJpZGUgZW50cnkuCgoJKiB3aW4zMi9leGNlcHQuYzoKCVRlcm1pbmF0ZSBwcm9jZXNzIG9uIHVuaGFuZGxlZCBeQyBleGNlcHRpb24gaW5zdGVhZCBvZiBsYXVuY2hpbmcgdGhlCglkZWJ1Z2dlci4KCgkqIGRsbHMvdHR5ZHJ2L2RjLmMsIGRsbHMvd2luZXBzL2luaXQuYywKCSAgZ3JhcGhpY3MvZW5obWV0YWZpbGVkcnYvaW5pdC5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9pbml0LmMsCgkgIGdyYXBoaWNzL3dpbjE2ZHJ2L2luaXQuYywgZ3JhcGhpY3MveDExZHJ2L2luaXQuYywgaW5jbHVkZS9nZGkuaCwKCSAgaW5jbHVkZS93aW5nZGkuaCwgb2JqZWN0cy9kYy5jOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglJbXBsZW1lbnRlZCBHZXQvU2V0RGV2aWNlR2FtbWFSYW1wLgoKCSogZGxscy91c2VyL3VzZXIzMi5zcGVjLCB3aW5kb3dzL3dpbi5jOgoJRXJpYyBLb2hsIDxla29obEBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBzdHVicyBmb3IgR2V0V2luZG93c01vZHVsZUZpbGVOYW1lW0EvV10uCgoJKiBjb250cm9scy9jb21iby5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCU5hdGl2ZSB2ZXJzaW9uIHNlZW1zIHRvIGFsd2F5cyByZS1kcmF3IHRoZSBzZWxlY3RlZCB0ZXh0IGF0IHRoZSBlbmQgb2YKCWEgcm9sbHVwLgoKCSogZGxscy94MTFkcnYveDExZGRyYXcuYywgZGxscy94MTFkcnYveDExZGRyYXcuaCwKCSAgZGxscy94MTFkcnYveHZpZG1vZGUuYywgZGxscy94MTFkcnYveHZpZG1vZGUuaCwgaW5jbHVkZS94MTFkcnYuaDoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJQWRkZWQgZ2FtbWEgcmFtcCBjb2RlIHRvIHRoZSBYVmlkTW9kZSBpbnRlcmZhY2UuCgoJKiBpbmNsdWRlL2RkcmF3aS5oOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglNb3JlIERpcmVjdERyYXcgSEFMIHR5cGUgZGVjbGFyYXRpb25zLgoKMjAwMS0wMy0xOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJU2F0c3VraSBGdWppc2hpbWEgPHNmQGZyZWVic2Qub3JnPgoJRml4ZWQgRnJlZUJEUyB4cGc0IGNoZWNrLgoKCSogTWFrZS5ydWxlcy5pbiwgdG9vbHMvTWFrZWZpbGUuaW4sIHRvb2xzL3NwZWNtYWtlci9NYWtlZmlsZS5pbjoKCVNhdHN1a2kgRnVqaXNoaW1hIDxzZkBmcmVlYnNkLm9yZz4KCVVzZSBJTlNUQUxMX1NDUklQVCBpbnN0ZWFkIG9mIElOU1RBTExfUFJPR1JBTSBmb3Igc2NyaXB0cy4KCgkqIGluY2x1ZGUvd2luZS93aW5lX2NvbW1vbl92ZXIucmMsIGRsbHMvb2xlYXV0MzIvLmN2c2lnbm9yZSwKCSAgZGxscy9vbGVhdXQzMi9NYWtlZmlsZS5pbiwgZGxscy9vbGVhdXQzMi9vbGVhdXQzMi5zcGVjLAoJICBkbGxzL29sZWF1dDMyL3ZlcnNpb24ucmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkIHZlcnNpb24gaW5mbyBmb3IgYnVpbHQtaW4gb2xlYXV0MzIuZGxsLgoKCSogY29udHJvbHMvbWVudS5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAYXNpLmZyPgoJRml4IHN5c3RlbSBtZW51IGNyYXNoIGJ5IGVuc3VyaW5nIHRoYXQgaXRlbS0+dGV4dCBpcyBub3QgbnVsbCB3aGVuCglNRl9URVhUIHNldC4KCgkqIGluY2x1ZGUvZGRyYXcuaDoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJQWRkZWQgSURpcmVjdERyYXdHYW1tYUNvbnRyb2wgaW50ZXJmYWNlIGRlY2xhcmF0aW9uLgoKCSogZGxscy92ZXJzaW9uL2luZm8uYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglUcnVuY2F0ZSB2ZXJzaW9uIGRhdGEgaWYgcHJvdmlkZWQgYnVmZmVyIGlzIG5vdCBsYXJnZSBlbm91Z2guCgoJKiBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglGaXhlZCBzb3VuZCBkaXNhcHBlYXJpbmcgYWZ0ZXIgb24tdGhlLWZseSBzYW1wbGUgcmF0ZSBjaGFuZ2VzIGFuZAoJYWZ0ZXIgY2VydGFpbiB1bmRlcnJ1biBjb25kaXRpb25zLgoJQ29tcGlsYXRpb24gZml4ZXMgZm9yIHdoZW4gVVNFX0RTT1VORDNEIGlzIGRlZmluZWQuCgoJKiB3aW5kb3dzL3dpbnBvcy5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVdpbjIwMDA6IElmIGJvdGggV1NfRVhfTEFZRVJFRCBhbmQgV1NfRVhfVFJBTlNQQVJFTlQgc3R5bGVzIGFyZSBzZXQsCgltb3VzZSBjbGlja3Mgc2hvdWxkIGdvIHN0cmFpZ2h0IHRocm91Z2ggdGhlIHdpbmRvdy4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYzoKCUVyaWMgS29obCA8ZWtvaGxAY29kZXdlYXZlcnMuY29tPgoJU0hHZXRTcGVjaWFsRm9sZGVyUGF0aEEgbXVzdCBiZSBhYmxlIHRvIGNyZWF0ZSBhIGZ1bGwgcGF0aCBpZiBpdAoJZG9lc24ndCBleGlzdC4KCgkqIGRsbHMvbXN2Y3J0L2V4Y2VwdC5jLCBkbGxzL21zdmNydC9maWxlLmMsIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjOgoJRXJpYyBLb2hsIDxla29obEBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBzdHViIGZvciBfc2V0am1wMygpLgoJSW1wbGVtZW50ZWQgX3NvcGVuKCkuCgoyMDAxLTAzLTE2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMi5oLCBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmMsCgkgIGRsbHMvY29tY3RsMzIvcnNyYy5yYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQGFzaS5mcj4KCUFkZGVkIHZlcnNpb24gaW5mby4KCgkqIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLCBpbmNsdWRlL2dkaS5oLCBpbmNsdWRlL3dpbjE2ZHJ2LmgsCgkgIGluY2x1ZGUveDExZHJ2LmgsIG9iamVjdHMvZm9udC5jLCBkbGxzL3R0eWRydi9ncmFwaGljcy5jLAoJICBkbGxzL3R0eWRydi90dHlkcnYuaCwgZGxscy93aW5lcHMvZm9udC5jLCBkbGxzL3dpbmVwcy9wc2Rydi5oLAoJICBncmFwaGljcy93aW4xNmRydi9mb250LmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglNb3ZlZCBHZXRUZXh0TWV0cmljcyB0byB1bmljb2RlLgoKCSogZGxscy92ZXJzaW9uL2luZm8uYywgaW5jbHVkZS93aW52ZXIuaDoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglGaXhlZCBwcm90b3R5cGUgb2YgR2V0RmlsZVZlcnNpb25JbmZvQS9XLgoKCSogZGxscy9jb21jdGwzMi9jb21ib2V4LmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJLSBEb2N1bWVudGVkIHRoaW5ncyBrbm93biB0byBiZSB1bmltcGxlbWVudGVkLgoJLSBJbXBsZW1lbnRlZCBDQk5fU0VMQ0hBTkdFLCBDQk5fS0lMTEZPQ1VTLCBhbmQgQ0JOX1NFTEVORE9LLgoJLSBDb3JyZWN0ZWQgQ0JFTl9FTkRFRElUIG5vdGlmaWVzIHRvIGFsd2F5cyBoYXZlIGVkaXQgY29udHJvbCB0ZXh0LgoJLSBMb2NrZWQgInNlbGVjdGVkIiBzdGF0ZSBvZiBpY29uIHRvIGZvY3VzIHN0YXRlIG9mIGVkaXQgY29udHJvbCAoaWYKCSAgaXQgZXhpc3RzKSBqdXN0IGxpa2UgbmF0aXZlLgoKCSogZGxscy9jb21jdGwzMi9yZWJhci5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gQ29ycmVjdCBSQk5fQ0hJTERTSVpFIGJhbmQgcmVjdGFuZ2xlIHRvIG1hdGNoIG5hdGl2ZS4KCS0gQ29ycmVjdCBmbGFncyBpbiBEZWZlcldpbmRvd1BvcyB0byBTV1BfTk9aT1JERVIgdG8gbWF0Y2ggbmF0aXZlLgoJLSBNYWtlIGhhbmRsaW5nIENvbWJvQm94IGFuZCBDb21ib0JveEV4IHRoZSBzYW1lIHdoZW4gbW92aW5nIGNoaWxkCgkgIHdpbmRvd3MuCgoJKiB3aW5kb3dzL3NweS5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCUxhYmVsIHRoZSB3aWR0aCBhbmQgaGVpZ2h0IGNvcnJlY3RseSBpbiB0aGUgV0lORE9XUE9TIGRpc3BsYXkuCgoJKiBpbmNsdWRlL3dpbnVzZXIuaDoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQWRkZWQgV2luMjAwMCBXU19FWF9MQVlFUkVEIHdpbmRvdyBzdHlsZS4KCgkqIHRvb2xzL3dpbmVzaGVsbGxpbms6CglNYXJjdXMgTWVpc3NuZXIgPE1hcmN1cy5NZWlzc25lckBjYWxkZXJhLmRlPgoJUmVwbGFjZWQgb25lIC5rZGUgd2l0aCAua2RlMiBpbiBLREUyIG1lbnUgY29kZS4KCgkqIHdpbmVkZWZhdWx0LnJlZzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglSZW1vdmVkIHBhdGggZnJvbSBkcGxheXggcmVnaXN0cnkgZW50cnksIHNvIHRoYXQgdGhlIGJ1aWx0aW4gZHBsYXl4CgljYW4gYmUgbG9hZGVkLgoKCSogdG9vbHMvd2luZW1ha2VyOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVNldCBMRF9MSUJSQVJZX1BBVEggaWYgbmVjZXNzYXJ5IGJlZm9yZSBjYWxsaW5nIHdyYyAmIHdpbmVidWlsZC4KCjIwMDEtMDMtMTQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3ZlcnNpb24vaW5mby5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVJldHVybiBmcm9tIEdldEZpbGVWZXJzaW9uSW5mbyhTaXplKSBpZiBzcGVjaWZpZWQgZmlsZSBmb3VuZCwgYnV0CglWU19WRVJTSU9OX0lORk8gcmVzb3VyY2Ugbm90LgoKCSogc2VydmVyL3NlcmlhbC5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQGxvb2tzbWFydC5jb20uYXU+CglSZW1vdmVkIGJyb2tlbiBzdXBwb3J0IGZvciBFVl9UWEVNUFRZIGJlY2F1c2UgaXQgY2F1c2VzIGJ1c3kgbG9vcHMuCgoJKiBzZXJ2ZXIvYXN5bmMuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0Bsb29rc21hcnQuY29tLmF1PgoJQWRkIG1pc3NpbmcgcmVsZWFzZSBvYmplY3Qgc28gc2VydmVyIGV4aXRzIGNsZWFubHkuCgoJKiBjb250cm9scy9tZW51LmM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBhc2kuZnI+CglSZWNhbGN1bGF0ZSBtZW51IHNpemVzIGlmIFdNX0lOSVRNRU5VIGhhcyByZWNyZWF0ZWQvY2hhbmdlZCBzb21ldGhpbmcuCgoyMDAxLTAzLTEzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9rZXJuZWwvbmxzL2NodC5ubHM6CglIYW5uLWh1ZWkgQ2hpb3UgPGtvYWxhQG1hbmEuZWUubnR1LmVkdS50dz4KCVVwZGF0ZWQuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW5udC5oLAoJICBzY2hlZHVsZXIvdGhyZWFkLmM6CglKYW1lcyBKdXJhbiA8amFtZXNqdXJhbkBhbHVtbmkucHN1LmVkdT4KCUFkZGVkIHN0dWIgZm9yIFNldFRocmVhZEV4ZWN1dGlvblN0YXRlIChuZXcgZnVuY3Rpb24gaW4gV2luOTgvMjAwMCkuCgoJKiB3aW5kb3dzL3dpbnByb2MuYzoKCVJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglGaXggVW5pY29kZS9BbnNpIG1lc3NhZ2UgdHJhbnNsYXRpb24gZm9yIHNvbWUgbGlzdGJveC9jb21ib2JveAoJbWVzc2FnZXMgd2l0aCBhIHplcm8gdmFsdWVkIGxwYXJhbS4gT3V0cHV0IGFuIGVycm9yIHdoZW4gdGhlCgl0cmFuc2xhdGlvbiBmYWlscy4KCgkqIGluY2x1ZGUvd2luZ2RpLmgsIG9iamVjdHMvZm9udC5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJRml4IHR5cG8gaW4gT1VUTElORVRFWFRNRVRSSUMgZGVmaW5pdGlvbi4KCgkqIGNvbnRyb2xzL2VkaXQuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglZZXQgYW5vdGhlciBhdHRlbXB0IG9uIGZpeGluZyBub3RpZmljYXRpb25zIGluIHRoZSBlZGl0IGNvbnRyb2wuCgoJKiBkb2N1bWVudGF0aW9uL3NhbXBsZXMvY29uZmlnOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGQgc29tZSBzcGVjaWZpYyBhZm1kaXJzIGFzIGV4YW1wbGVzLgoKCSogZGxscy93aW5lcHMvYWZtLmM6CglJYW4gUGlsY2hlciA8cGlsY2hlckBjb25jZW50cmljLm5ldD4KCURvbid0IGxvYWQgQUZNIGZpbGVzIGZyb20gcHJlZGVmaW5lZCBkaXJlY3RvcmllczsgdXNlIFthZm1kaXJzXQoJc2VjdGlvbiBpbiBXaW5lIGNvbmZpZyBmaWxlIGluc3RlYWQuCgoyMDAxLTAzLTEwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29udHJvbHMvZWRpdC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVkIG5vdGlmaWNhdGlvbnMgb2YgdGhlIGVkaXQgY29udHJvbC4KCgkqIGNvbnRyb2xzL3N0YXRpYy5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAYXNpLmZyPgoJQ2FsbCBEZWZXaW5kb3dQcm9jIGZvciBXTV9DVExDT0xPUlNUQVRJQyBtZXNzYWdlIHdoZW4gdGhlIGFwcHMgZG9lcwoJbm90LgoKCSogY29udHJvbHMvY29tYm8uYywgZGxscy93aW5tbS9qb3lzdGljay9qb3lzdGljay5jLCBkbGxzL3dpbm1tL21taW8uYywKCSAgbG9hZGVyL2xvYWRvcmRlci5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVkIHNwZWxsaW5nL3R5cG9zIGluIGNvbW1lbnRzLgoKCSogdG9vbHMvd2luZW1ha2VyOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIG1pc3NpbmcgZXh0ZW5zaW9uIGZvciAnb2xlMzIuZGxsJy4KCgkqIGluY2x1ZGUvd2luYmFzZS5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIENyZWF0ZVJlbW90ZVRocmVhZC4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYzoKCUphbWVzIEp1cmFuIDxqYW1lc2p1cmFuQGFsdW1uaS5wc3UuZWR1PgoJSW1wbGVtZW50IFNIR2V0RmlsZUluZm9XIGJ5IGNhbGxpbmcgU0hHZXRGaWxlSW5mb0EuCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmMsIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQGFzaS5mcj4KCUhhbmRsZSBlbXB0eSBzdHJpbmdzIGFuZCBpbnZhbGlkIHZhbHVlcyBpbiBscHN0ckluaXRpYWxEaXIgZm9yIDMyIGJpdHMKCW9wZW4gZmlsZSBkaWFsb2dzLgoKMjAwMS0wMy0wOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL01ha2VmaWxlLmluOgoJQWRkZWQgdmVyc2lvbjE2LnJjIGluIFJDX1NSQ1MgbGlzdC4KCgkqIHNjaGVkdWxlci9jbGllbnQuYywgc2NoZWR1bGVyL3N5bmNocm8uYywgc2NoZWR1bGVyL3RocmVhZC5jLAoJICBzZXJ2ZXIvcmVxdWVzdC5jLCBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90cmFjZS5jLAoJICBpbmNsdWRlL3NlcnZlci5oLCBpbmNsdWRlL3RocmVhZC5oOgoJQWRkZWQgc3VwcG9ydCBmb3IgbmVzdGVkIHNlcnZlciB3YWl0cyAodG8gYWxsb3cgd2FpdGluZyBpbiBzaWduYWwKCWhhbmRsZXJzKS4KCgkqIFJFQURNRSwgdG9vbHMvd2luZWNoZWNrOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJQWRkZWQgYSBwZXJsIHNjcmlwdCB0byBjaGVjayBtYW55IGFzcGVjdHMgb2YgV2luZSBjb25maWd1cmF0aW9uLgoKCSogZGxscy9jb21tZGxnL2ZpbmRkbGczMi5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAYXNpLmZyPgoJTFBBUkFNIGluIGZpbmQgZGlhbG9nIHdtX2luaXRkaWFsb2cgaXMgdGhlIGZpbmQvcmVwbGFjZSBzdHJ1Y3R1cmUsIG5vdAoJY3VzdGRhdGEuCgoJKiBkbGxzL2tlcm5lbC9ubHMvbHZpLm5sczoKCU5lcmlqdXMgQmFsaXVuYXMgPG5lcmlqdXNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoJVXBkYXRlZCBMYXR2aWFuIGRhdGUgZm9ybWF0LgoKCSogdG9vbHMvd2luZXNoZWxsbGluazoKCU1hcmN1cyBNZWlzc25lciA8TWFyY3VzLk1laXNzbmVyQGNhbGRlcmEuZGU+CglBZGRlZCBTSEVMTCBsaW5raW5nIG9mIEtERTIgZGVza3RvcC9tZW51IGVudHJpZXMuCgoyMDAxLTAzLTA1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS92ZXJzaW9uLmgsIEFOTk9VTkNFLCBDaGFuZ2VMb2c6CglSZWxlYXNlIDIwMDEwMzA1LgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoyMDAxLTAzLTA1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVVwZGF0ZSBuU2VsZWN0aW9uTWFyayBhbmQgbkZvY3VzZWRJdGVtIHdoZW4gaW5zZXJ0aW5nL2RlbGV0aW5nL3NvcnRpbmcKCWl0ZW1zLgoJU29ydEl0ZW1zOiBJZiBzb3J0aW5nIGxlc3MgdGhhbiAyIGl0ZW1zLCBkbyBub3RoaW5nLgoKCSogd2luMzIvZmlsZS5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudGVkIFNldEZpbGVBcGlzVG9PRU0sIFNldEZpbGVBcGlzVG9BTlNJIGFuZCBBcmVGaWxlQXBpc0FOU0kuCgoJKiBkbGxzL2NvbWN0bDMyL3BhZ2VyLmM6CglTdXNhbiBGYXJsZXkgPHN1c2FuQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gQmFja2dyb3VuZCBvZiB0aGUgY2hpbGQgd25kIHNob3VsZCBiZSBlcmFzZWQgd2l0aCB0aGUgc2FtZSBjb2xvciBhcwoJICB0aGUgY29udHJvbC4KCS0gRGVmYXVsdCBzY3JvbGwgYW1vdW50IHNob3VsZCBiZSB0aGUgbWluaW11bSBjbGllbnQgYXJlYS4KCgkqIHdpbmRvd3MvZGlhbG9nLmM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBhc2kuZnI+CglVbmJsb2NrIHRoZSBkaWFsb2cgbWVzc2FnZSBsb29wIHdpdGggYSBXTV9OVUxMIG1lc3NhZ2UuCgoJKiBncmFwaGljcy94MTFkcnYvZGliLmM6CglWZWRyYW4gUm9kaWMgPHZlZHJhbkByZW5hdGEuaXJiLmhyPgoJTWFkZSA4IGJwcCB0byAyNCBiaXQgZGVwdGggY29udmVyc2lvbiBpbiBYMTFEUlZfRElCX1NldEltYWdlQml0c184CglmYXN0ZXIgYnkgdXNpbmcgaW5saW5lIGFzbS4KCgkqIHRvb2xzL3NwZWNtYWtlci9taXNjLmMsIHNlcnZlci9kZWJ1Z2dlci5jLCBzZXJ2ZXIvcmVnaXN0cnkuYywgZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsIHByb2dyYW1zL3dpbmhlbHAvaGxwZmlsZS5jLCBmaWxlcy9kb3NfZnMuYywgZmlsZXMvZHJpdmUuYywgZGxscy93aW5tbS9tbWlvLmM6CglDaGFuZ2VkIGlzb2xhdGVkIGZvciBsb29wcyB0byB3aGlsZSBsb29wcyAoYmFzZWQgb24gYSBwYXRjaCBieSBBbmRyZWFzCglNb2hyKS4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJVGhlIGZvciBsb29wIGluIElUeXBlTGliMl9mbkZpbmROYW1lIHdhcyB3cm9uZyAoZXh0cmEgJzsnKS4KCgkqIGZpbGVzL2ZpbGUuYzogQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJR2V0RmlsZUluZm9ybWF0aW9uQnlIYW5kbGUoKSBmYWlscyBmb3IgcGlwZSBoYW5kbGVzIGFjY29yZGluZyB0bwoJTVNETiwgYW5kIGFsc28gZm9yIHNlcmlhbCBoYW5kbGVzIChGSUxFX1RZUEVfQ0hBUiBpbiBnZW5lcmFsID8pLgoKCSogZGxscy9nZGkvZ2RpX21haW4uYywgZ3JhcGhpY3MvZHJpdmVyLmM6CglJYW4gUGlsY2hlciA8cGlsY2hlckBjb25jZW50cmljLm5ldD4KCURvbid0IGxvYWQgdGhlIFdJTkVQUyBkcml2ZXIgdW50aWwgaXQncyBuZWVkZWQuCgoJKiBjb250cm9scy9lZGl0LmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJTWFrZSBFRElUX1VubG9ja0J1ZmZlciBjb3BlIHdpdGggZGVzdHJveWVkIHdpbmRvd3MuCgoyMDAxLTAzLTA0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9rZXJuZWwva2VybmVsX21haW4uYywgbWVtb3J5L2hlYXAuYzoKCVdlIG5lZWQgdG8gY3JlYXRlIHRoZSBzeXN0ZW0gaGVhcCBhdCBzdGFydHVwIGV2ZW4gdGhvdWdoIHdlIGRvbid0IHVzZQoJaXQsIHNpbmNlIHNvbWUgV2luOTUgbmF0aXZlIGRsbHMgZGVwZW5kIG9uIHRoYXQuCgoJKiBkbGxzL29wZW5nbDMyL21ha2Vfb3BlbmdsLCBkbGxzL29wZW5nbDMyL29wZW5nbDMyLnNwZWMsIGRsbHMvb3BlbmdsMzIvb3BlbmdsX2V4dC5jLCBkbGxzL29wZW5nbDMyL29wZW5nbF9ub3JtLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJIC0gYWRkIHRyYWNpbmcgdG8gT3BlbkdMIHRodW5rcwoJIC0gdXBkYXRlIHRvIGxhdGVzdCBnbC5zcGVjIGZpbGUKCgkqIHdpbmRvd3Mvd2lucG9zLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkIERDWF9DTElQU0lCTElOR1MgdG8gZmxhZ3MgZm9yIERDRV9HZXRWaXNSZ24gb25seSBpZiB3aW5kb3cgaGFzCglXU19DTElQU0lCTElOR1MgYml0IHNldC4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglJbiBMSVNUVklFV19BZGRHcm91cFNlbGVjdGlvbiBhbmQgTElTVFZJRVdfU2V0R3JvdXBTZWxlY3Rpb24sIGlmIG5vCglzZWxlY3Rpb24gbWFyayBoYXMgYmVlbiBzZXQsIGp1c3Qgc2VsZWN0IHRoZSBjdXJyZW50IGl0ZW0uCglJbiBMSVNUVklFV19TZXRHcm91cFNlbGVjdGlvbiB3ZSBtdXN0IGFsc28gc2V0IHRoZSBzZWxlY3Rpb24gbWFyayBpbgoJdGhhdCBjYXNlIChhbmQgb25seSBpbiB0aGF0IGNhc2UpLgoJUmVtb3ZlZCBhIG5hdWdodHkgJzsnIChzcG90dGVkIGJ5IEVyaWMgUG91ZWNoKS4KCgkqIHRvb2xzL3dpbmVtYWtlcjoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglJZiBhIHRhcmdldCBoYXMgQysrIHNvdXJjZXMsIHRoZW4gdXNlIGcrKyB0byBsaW5rIGl0IChmaXhlcyAjMTYyKS4KCVJlbW92ZWQgU09OQU1FLCBpdCdzIG5vdCByZWxldmFudCBmb3IgZGxscyBhbmQgd2FzIHVudXNlZCBhbnl3YXkuCgoyMDAxLTAzLTAzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2NoZWR1bGVyL2NsaWVudC5jOiBGaXhlZCBmaWxlIGRlc2NyaXB0b3IgbGVhay4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9taWRpLmMsIGRvY3VtZW50YXRpb24vc2FtcGxlcy9jb25maWcsIGZpbGVzL2RpcmVjdG9yeS5jLCB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJU29tZSBtb3JlIG1lc3NhZ2UgY2xlYW51cHMuCgoJKiBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jOiBDaHJpcyBKYWNvYnNvbgoJU21hbGwgYnVnIGZpeC4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnLmM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBhc2kuZnI+CglJbml0aWFsaXplIHRoZSByZXR1cm4gZXJyb3IgY29kZSB0byAwIGZvciBjb21tb24gZGlhbG9nIGZpbGUKCWZ1bmN0aW9ucy4KCgkqIHRvb2xzL3dpbmVtYWtlcjoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglBZGQgZmlsZXMgZm91bmQgaW4gYW4gJ2luY2x1ZGUnIGRpcmVjdG9yeSwgdG8gdGhlICdtaXNjIHNvdXJjZXMnIGxpc3QuCgoyMDAxLTAzLTAxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2VydmVyL2ZpbGUuYywgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3JlcXVlc3QuYywgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdGhyZWFkLmgsIHNlcnZlci90cmFjZS5jLCBmaWxlcy9maWxlLmMsIGluY2x1ZGUvc2VydmVyLmgsIGluY2x1ZGUvdGhyZWFkLmgsIHNjaGVkdWxlci9jbGllbnQuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2NoZWR1bGVyL3N5c2RlcHMuYywgc2NoZWR1bGVyL3RocmVhZC5jOgoJQ3JlYXRlIHRoZSBzZXJ2ZXIgcGlwZXMgb24gdGhlIGNsaWVudCBzaWRlIGFuZCB0cmFuc2ZlciB0aGVtIHRvIHRoZQoJc2VydmVyIG9uIHRocmVhZCBjcmVhdGlvbi4KCVVzZSBhIHNpbmdsZSBwZXItcHJvY2VzcyBzb2NrZXQgaW5zdGVhZCBvZiBvbmUgcGVyIHRocmVhZCBmb3IKCXRyYW5zZmVycmluZyBmaWxlIGhhbmRsZXMgYmV0d2VlbiBjbGllbnQgYW5kIHNlcnZlci4KCgkqIHRvb2xzL3dpbmVtYWtlcjoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglSZWVuYWJsZSB0aGUgd3JhcHBlciBzdXBwb3J0LgoKCSogZGxscy93aW5lcHMvYWZtLmM6CglJYW4gUGlsY2hlciA8cGlsY2hlckBjb25jZW50cmljLm5ldD4KCVNxdWFzaCBhbm90aGVyIEFGTSBjaGFyYWN0ZXIgbWV0cmljcyBwYXJzaW5nIGJ1Zy4KCjIwMDEtMDItMjggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzY2hlZHVsZXIvY2xpZW50LmMsIHNlcnZlci9maWxlLmMsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9wcm9jZXNzLmgsIHNlcnZlci9yZXF1ZXN0LmMsIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RocmVhZC5oLCBzZXJ2ZXIvdHJhY2UuYywgZmlsZXMvZmlsZS5jLCBpbmNsdWRlL3NlcnZlci5oOgoJTmV3IG1lY2hhbmlzbSB0byB0cmFuc2ZlciBmaWxlIGRlc2NyaXB0b3JzIGZyb20gY2xpZW50IHRvIHNlcnZlci4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6CglKb2hhbm5lcy5TY2hpbmRlbGluQGdteC5kZQoJU29tZSBtaW5vciBjaGFuZ2VzIHRvIHRoZSBHZXJtYW4ga2V5Ym9hcmQgbGF5b3V0LgoKCSogd2luZG93cy93aW5wb3MuYzoKCURvbWluaWsgU3RyYXNzZXIgPGRvbWluaWsuc3RyYXNzZXJAbWNocC5zaWVtZW5zLmRlPgoJQXZvaWQgY3Jhc2ggYXQgZW5kIG9mIGxpc3QuCgoJKiBkbGxzL3dpbmVwcy9hZm0uYzoKCUlhbiBQaWxjaGVyIDxwaWxjaGVyQGNvbmNlbnRyaWMubmV0PgoJRml4IGJ1ZyBpbiBBRk0gY2hhcmFjdGVyIHdpZHRoIHBhcnNpbmcuCgoJKiB3aW4zMi9kZXZpY2UuYywgd2luZG93cy93aW5wb3MuYywgZGxscy9vbGUzMi9hbnRpbW9uaWtlci5jLCBkbGxzL29sZTMyL2JpbmRjdHguYywgZGxscy9vbGUzMi9jbGlwYm9hcmQuYywgZGxscy9vbGUzMi9jb21wb3NpdGVtb25pa2VyLmMsIGRsbHMvb2xlMzIvZmlsZW1vbmlrZXIuYywgZGxscy9vbGUzMi9pdGVtbW9uaWtlci5jLCBkbGxzL29sZTMyL21vbmlrZXIuYywgZGxscy9vbGUzMi9zdG9yYWdlMzIuYywgZGxscy9vbGVhdXQzMi90eXBlbGliLmMsIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jLCBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmMsIGRsbHMvdXNlci9kZGVtbC5jLCBkbGxzL3VzZXIvZXh0aWNvbi5jLCBncmFwaGljcy94MTFkcnYvZ3JhcGhpY3MuYywgaW5jbHVkZS9kZHJhdy5oLCBvYmplY3RzL21ldGFmaWxlLmMsIHByb2dyYW1zL25vdGVwYWQvbWFpbi5jLCBkZWJ1Z2dlci90eXBlcy5jLCBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmMsIGRsbHMvY29tY3RsMzIvcGFnZXIuYywgZGxscy9jb21jdGwzMi90b29sYmFyLmMsIGRsbHMvZHBsYXl4L2RwbGF5LmMsIGRsbHMvbXN2Y3J0L3Byb2Nlc3MuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJU21hbGwgJ3R5cG9zIGluIGNvbW1lbnRzJyBmaXhlcy4KCgkqIGluY2x1ZGUvbW9kdWxlLmgsIGluY2x1ZGUvdGFzay5oLCBpbmNsdWRlL3RocmVhZC5oLCBsb2FkZXIvbmUvbW9kdWxlLmMsIGxvYWRlci90YXNrLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci90aHJlYWQuYywgZGxscy9rZXJuZWwva2VybmVsX21haW4uYzoKCVVzZSB0aGUgc3RhbmRhcmQgQ3JlYXRlVGhyZWFkIHJvdXRpbmUgdG8gY3JlYXRlIDE2LWJpdCB0YXNrcyBpbnN0ZWFkCglvZiBkdXBsaWNhdGluZyB0aGUgY29kZS4KCgkqIGRsbHMvd2luc3Bvb2wvd3Nwb29sLmMsIGRsbHMvd2luc3Bvb2wvaW5mby5jOgoJUmVtb3ZlZCBkZXBlbmRlbmN5IG9uIGNvbWN0bDMyLgoKCSogaW5jbHVkZS93aW5udC5oOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVdJTkVfVU5JQ09ERV9URVhUIHdhcyBpbmNvcnJlY3QuCglEcm9wcGVkIHN1cHBvcnQgZm9yIFdJTkVfVU5JQ09ERV9URVhUKCdjJykgaW4gQy4KCgkqIGRsbHMvd3NvY2szMi9zb2NrZXQuYywgZGxscy93c29jazMyL3dzY29udHJvbC5oOgoJTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5kZT4KCUltcGxlbWVudGVkIFdzQ29udHJvbCBjb21tYW5kIHdpdGggaWQgMHgxMDEuCgoJKiBkbGxzL2tlcm5lbC9ubHMvYWZrLm5scywgZGxscy9rZXJuZWwvbmxzL2JlbC5ubHMsIGRsbHMva2VybmVsL25scy9iZ3IubmxzLCBkbGxzL2tlcm5lbC9ubHMvY2F0Lm5scywgZGxscy9rZXJuZWwvbmxzL2N6ZS5ubHMsIGRsbHMva2VybmVsL25scy9kZWEubmxzLCBkbGxzL2tlcm5lbC9ubHMvZGVjLm5scywgZGxscy9rZXJuZWwvbmxzL2RlbC5ubHMsIGRsbHMva2VybmVsL25scy9kZXMubmxzLCBkbGxzL2tlcm5lbC9ubHMvZXNtLm5scywgZGxscy9rZXJuZWwvbmxzL2Vzbi5ubHMsIGRsbHMva2VybmVsL25scy9lc3AubmxzLCBkbGxzL2tlcm5lbC9ubHMvZXVxLm5scywgZGxscy9rZXJuZWwvbmxzL2Zpbi5ubHMsIGRsbHMva2VybmVsL25scy9mcmEubmxzLCBkbGxzL2tlcm5lbC9ubHMvZnJiLm5scywgZGxscy9rZXJuZWwvbmxzL2ZyYy5ubHMsIGRsbHMva2VybmVsL25scy9mcmwubmxzLCBkbGxzL2tlcm5lbC9ubHMvZnJzLm5scywgZGxscy9rZXJuZWwvbmxzL2dyYy5ubHMsIGRsbHMva2VybmVsL25scy9odW4ubmxzLCBkbGxzL2tlcm5lbC9ubHMvaW5kLm5scywgZGxscy9rZXJuZWwvbmxzL2lzbC5ubHMsIGRsbHMva2VybmVsL25scy9pdGEubmxzLCBkbGxzL2tlcm5lbC9ubHMvaXRzLm5scywgZGxscy9rZXJuZWwvbmxzL2pwbi5ubHMsIGRsbHMva2VybmVsL25scy9ubGIubmxzLCBkbGxzL2tlcm5lbC9ubHMvbmxkLm5scywgZGxscy9rZXJuZWwvbmxzL25vbi5ubHMsIGRsbHMva2VybmVsL25scy9ub3IubmxzLCBkbGxzL2tlcm5lbC9ubHMvcGxrLm5scywgZGxscy9rZXJuZWwvbmxzL3B0Yi5ubHMsIGRsbHMva2VybmVsL25scy9wdGcubmxzLCBkbGxzL2tlcm5lbC9ubHMvcm9tLm5scywgZGxscy9rZXJuZWwvbmxzL3NreS5ubHMsIGRsbHMva2VybmVsL25scy9zbHYubmxzLCBkbGxzL2tlcm5lbC9ubHMvc3ZlLm5scywgZGxscy9rZXJuZWwvbmxzL3Ryay5ubHM6CglQcnplbXlzbGF3IEJydXNraSA8ZjY2MzM2cGJAYXNrLmV0aS5wZy5nZGEucGw+CglBZGRlZCBMT0NBTEVfSURFRkFVTFRNQUNDT0RFUEFHRSBkZWZpbml0aW9uIGluIG1vc3QgbmxzIGZpbGVzLgoKMjAwMS0wMi0yNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MvcXVldWUuYywgc2NoZWR1bGVyL2NsaWVudC5jLCBzY2hlZHVsZXIvaGFuZGxlLmMsIHNjaGVkdWxlci9waXBlLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci9zeW5jaHJvLmMsIHNjaGVkdWxlci90aHJlYWQuYywgc2NoZWR1bGVyL3RpbWVyLmMsIHNlcnZlci9yZXF1ZXN0LmMsIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RocmVhZC5oLCB0b29scy9tYWtlX3JlcXVlc3RzLCB3aW4zMi9jb25zb2xlLmMsIHdpbjMyL2RldmljZS5jLCB3aW4zMi9leGNlcHQuYywgbG9hZGVyL21vZHVsZS5jLCBsb2FkZXIvbmUvbW9kdWxlLmMsIGxvYWRlci9wZV9pbWFnZS5jLCBtZW1vcnkvYXRvbS5jLCBtZW1vcnkvcmVnaXN0cnkuYywgbWVtb3J5L3NlbGVjdG9yLmMsIG1lbW9yeS92aXJ0dWFsLmMsIG1pc2MvcmVnaXN0cnkuYywgZGxscy9udGRsbC9leGNlcHRpb24uYywgZGxscy9udGRsbC9udC5jLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvbnRkbGwvb20uYywgZGxscy9udGRsbC9yZWcuYywgZGxscy9udGRsbC9zeW5jLmMsIGRsbHMvd2luc29jay9zb2NrZXQuYywgZmlsZXMvY2hhbmdlLmMsIGZpbGVzL2Rvc19mcy5jLCBmaWxlcy9maWxlLmMsIGluY2x1ZGUvc2VydmVyLmgsIGluY2x1ZGUvdGhyZWFkLmgsIGRsbHMvYWR2YXBpMzIvcmVnaXN0cnkuYywgZGxscy9rZXJuZWwvY29tbS5jLCBkbGxzL2tlcm5lbC9kZWJ1Z2dlci5jLCBkbGxzL2tlcm5lbC9zeW5jLmMsIGRsbHMva2VybmVsL3Rvb2xoZWxwLmM6CglOZXcgc2V0IG9mIG1hY3JvcyBmb3Igc2VydmVyIGNhbGxzOyBtYWtlcyByZXF1ZXN0cyB3aXRob3V0IHZhcmlhYmxlCglwYXJ0IHNvbWV3aGF0IGZhc3Rlci4KCgkqIHNjaGVkdWxlci9wdGhyZWFkLmM6CglNb3ZlZCBQVEhSRUFEX2luaXRfZG9uZSBvdXQgb2YgdGhlICNpZmRlZi4KCjIwMDEtMDItMjYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb250cm9scy9tZW51LmMsIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGRsbHMva2VybmVsL3RpbWUuYywgZGxscy91c2VyL3VzZXIzMi5zcGVjLCB3aW5kb3dzL3N5c2NvbG9yLmMsIHdpbmRvd3MvdXNlci5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBhIGZldyBtaXNzaW5nIHN0dWJzIHRvIEtFUk5FTDMyIGFuZCBVU0VSMzIuCgoJKiB0b29scy93aW5lbGF1bmNoZXIuaW46CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUhhbmRsZSBmaWxlbmFtZXMgd2l0aCBzcGFjZXMuCgoJKiBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQGFzaS5mcj4KCU1hcCAzMiBiaXRzIHJlc291cmNlIGZvciAxNiBiaXRzIHByaW50IGRpYWxvZy4KCgkqIGNvbnRyb2xzL2xpc3Rib3guYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglVc2UgR2V0U3lzQ29sb3JCcnVzaChDT0xPUl9XSU5ET1cpIHdoZW4gdGhlcmUgaXMgbm8gYnJ1c2ggZm9yIGRyYXdpbmcKCWJhY2tncm91bmQgaW4gbGlzdGJveC4KCgkqIGRsbHMvc2hlbGwzMi9zaGxmaWxlb3AuYzoKCURhdmlkIEdyYW50IDxkYXZlQHJlYWNoLm5ldD4KCUFkZGVkIChwYXJ0aWFsKSBzdXBwb3J0IGZvciBGT19DT1BZIGFuZCBGT19ERUxFVEUuCgoyMDAxLTAyLTIzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy91c2VyL3Jlc291cmNlcy8uY3ZzaWdub3JlLCBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMi5yYywgZGxscy91c2VyL3Jlc291cmNlcy92ZXJzaW9uLnJjLCBkbGxzL3VzZXIvcmVzb3VyY2VzL3ZlcnNpb24xNi5yYywgZGxscy92ZXJzaW9uL2luZm8uYywgaW5jbHVkZS93aW5lL3dpbmVfY29tbW9uX3Zlci5yYywgZGxscy9rZXJuZWwvLmN2c2lnbm9yZSwgZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL2tlcm5lbC5yYywgZGxscy9rZXJuZWwva2VybmVsLnNwZWMsIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGRsbHMva2VybmVsL3ZlcnNpb24ucmMsIGRsbHMva2VybmVsL3ZlcnNpb24xNi5yYywgZGxscy91c2VyL01ha2VmaWxlLmluLCBkbGxzL3VzZXIvdXNlci5zcGVjLCBkbGxzL2dkaS8uY3ZzaWdub3JlLCBkbGxzL2dkaS9NYWtlZmlsZS5pbiwgZGxscy9nZGkvZ2RpLnNwZWMsIGRsbHMvZ2RpL2dkaTMyLnNwZWMsIGRsbHMvZ2RpL3ZlcnNpb24ucmMsIGRsbHMvZ2RpL3ZlcnNpb24xNi5yYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGQgdmVyc2lvbiBpbmZvcm1hdGlvbiAoMTYgYW5kIDMyIGJpdCkgdG8gY29yZSBidWlsdC1pbiBkbGxzOgoJa3JubDM4Ni5leGUva2VybmVsMzIuZGxsLCB1c2VyLmV4ZS91c2VyMzIuZGxsLCBnZGkuZXhlL2dkaTMyLmRsbC4KCVByb3ZpZGUgYSB3YXkgZm9yIHJlYWRpbmcgdmVyc2lvbiBpbmZvcm1hdGlvbiB1c2luZyBzdGFuZGFyZCBBUEk6CglHZXRGaWxlVmVyc2lvbkluZm9TaXplIC0+IEdldEZpbGVWZXJzaW9uSW5mbyAtPiBWZXJRdWVyeVZhbHVlLgoKCSogaW5jbHVkZS9oZWFwLmgsIG1lbW9yeS9oZWFwLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci9wdGhyZWFkLmM6CglPbmx5IGNyZWF0ZSB0aGUgc3lzdGVtIGhlYXAgd2hlbiB3ZSBhY3R1YWxseSBuZWVkIGl0LgoKCSogZmlsZXMvZG9zX2ZzLmMsIG1lbW9yeS9nbG9iYWwuYzoKCUFsbG9jYXRpb25zIGRvIG5vdCBuZWVkIHRvIGJlIG9uIHRoZSBzeXN0ZW0gaGVhcC4KCgkqIGRsbHMvY29tY3RsMzIvcGFnZXIuYzoKCVN1c2FuIEZhcmxleSA8c3VzYW5AY29kZXdlYXZlcnMuY29tPgoJSG9yaXovVmVydCBkZXRlcm1pbmF0aW9uIG11c3QgYmUgZHluYW1pYywgYXMgdGhlIHN0eWxlIG1heSBub3QgYmUgc2V0Cgl1cG9uIGNyZWF0aW9uOyBpbXByb3ZlZCBwb3NpdGlvbmluZyBhbmQgc2Nyb2xsaW5nLgoKCSogaW5jbHVkZS9jb21tY3RybC5oOgoJU3VzYW4gRmFybGV5IDxzdXNhbkBjb2Rld2VhdmVycy5jb20+CglBdm9pZCBhbGlnbm1lbnQgcHJvYmxlbXMgd2l0aCBOTVBHU0NST0xMIHN0cnVjdC4KCgkqIHdpbmRvd3Mvc3lzcGFyYW1zLmM6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5AY29kZXdlYXZlcnMuY29tPgoJUmVwbGFjZSBmaXhtZSBmb3IgU1BJX0dFVFdIRUVMU0NST0xMTElORVMgd2l0aCB0aGUgZGVmYXVsdCB2YWx1ZSBvZiAzLgoKCSogY29udHJvbHMvYnV0dG9uLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJUHJlcGFyZSBiYWNrZ3JvdW5kIHdoaWxlIGRyYXdpbmcgcmFkaW8gYnV0dG9ucyBhbmQgY2hlY2tib3hlcy4KCgkqIHdpbmRvd3MveDExZHJ2L2NsaXBib2FyZC5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gV2UgbmVlZCB0byBtYWtlIHN1cmUgd2UgcGF5IGF0dGVudGlvbiB0byBpZiBvdXIgY2FsbCB0bwoJICBTZXRDbGlwYm9hcmREYXRhIGZyb20gdGhlIFgxMURSViB2ZXJzaW9uIG9mIHRoZSBmdW5jdGlvbiB3b3Jrcy4gSWYgbm90CgkgIHdlIG5lZWQgdG8gZGVsZXRlIHRoZSBnbG9iYWwgYmxvY2sgd2UgYWxsb2NhdGVkLiBUaGlzIGlzIGEgc2V2ZXIgbWVtb3J5CgkgIGxlYWsgd2l0aCBsYXJnZSBjbGlwYm9hcmQgaXRlbXMuCgktIElmIGFuIFggc2VsZWN0aW9uIGl0IHRvbyBsYXJnZSB0aGVuIFggbWF5IGdpdmUgaXQgdG8gdXMgaW4gY2h1bmtzLAoJICB3ZSB3ZXJlIG5vdCBoYW5kbGluZyB0aGlzIHdlbGwuCgoJKiBkbGxzL2tlcm5lbC9ubHMvdWtyLm5sczoKCVZhbGVyeSBLYXJ0ZWwgPGt2bkBpZ2sua2lldi51YT4KCVVwZGF0ZWQgYWxsIGZpZWxkcyB3aXRoIFVrcmFpbmlhbiB2YWx1ZXMuCgoJKiBjb250cm9scy9tZW51LmMsIGNvbnRyb2xzL3Njcm9sbC5jLCBkbGxzL3R0eWRydi93bmQuYywgd2luZG93cy9jdXJzb3JpY29uLmMsIHdpbmRvd3MvZGNlLmMsIHdpbmRvd3MvZGVmd25kLmMsIHdpbmRvd3MvbWRpLmMsIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL3Byb3BlcnR5LmMsIHdpbmRvd3MvcXVldWUuYywgd2luZG93cy93aW5wb3MuYywgd2luZG93cy94MTFkcnYvd25kLmM6CglEbyBub3QgYWxsb2NhdGUgYW55IFVTRVIgZGF0YSBvbiB0aGUgc3lzdGVtIGhlYXAuCgoJKiBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL2NwbC5oLCBpbmNsdWRlL3dpbnVzZXIuaCwgZGxscy9zaGVsbDMyL01ha2VmaWxlLmluLCBkbGxzL3NoZWxsMzIvY29udHJvbC5jLCBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUEgZmlyc3Qgc3RhYiBhdCBpbXBsZW1lbnRpbmcgdGhlIFJ1bkRsbCBmZWF0dXJlcy4KCgkqIGRsbHMva2VybmVsL2NvbW0uYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUJ1aWxkQ29tbURDQjE2IGhhZCBhIHJhdGhlciBicm9rZW4gYmF1ZCByYXRlIGhhbmRsaW5nLgoKCSogdG9vbHMvd2luZWxhdW5jaGVyLmluOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglNYWRlIHRoZSB3aW5lbGF1bmNoZXIgc3VwcG9ydCB3aW5lbGliIGFwcCBpbnZvY2F0aW9ucy4gRml4ZWQgYSBmZXcKCWZpbGUgcGF0aCBpc3N1ZXMuCgoyMDAxLTAyLTIxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9rZXJuZWwva2VybmVsLnNwZWMsIGluY2x1ZGUvc2VydmVyLmgsIGluY2x1ZGUvdGhyZWFkLmgsIHNjaGVkdWxlci9jbGllbnQuYywgc2NoZWR1bGVyL3N5bmNocm8uYywgc2NoZWR1bGVyL3RocmVhZC5jLCBzZXJ2ZXIvcmVxdWVzdC5jLCBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90aHJlYWQuaCwgc2VydmVyL3RyYWNlLmM6CglBZGRlZCBzZXBhcmF0ZSBzZXJ2ZXIgcGlwZSB0byB3YWl0IG9uIGJsb2NraW5nIHNlcnZlciBjYWxscy4KCVNlbmQgdGhlIGNvbXBsZXRlIHJlcXVlc3QvcmVwbHkgdGhyb3VnaCB0aGUgcmVxdWVzdCBmaWZvIGluc3RlYWQgb2YKCWp1c3QgYSBkdW1teSBieXRlLgoJQ29udmVydCBlcnJvciBzdGF0dXMgdG8gdGV4dCBpbiBzZXJ2ZXIgcmVwbHkgdHJhY2luZy4KCgkqIGRsbHMvc2hlbGwzMi9zaGxmaWxlb3AuYywgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jLCBkbGxzL3NoZWxsMzIvc2hyZXMucmMsIGRsbHMvc2hlbGwzMi9zaHJlc2RlZi5oOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQGNvZGV3ZWF2ZXJzLmNvbT4KCUNvbmZpcm0gZmlsZSBkZWxldGVzLiAgTWFrZSBkZWxldGUgY29uZmlybWF0aW9uIG1lc3NhZ2VzIG1vcmUKCWNvbnNpc3RlbnQuIEltcHJvdmUgdHJhY2UgbWVzc2FnZXMgb24gZGVsZXRlIGZhaWx1cmUuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmM6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5AY29kZXdlYXZlcnMuY29tPgoJQWRkIHNoZWxsIHN1cHBvcnQgZm9yIGRlbGV0aW5nIGZpbGVzIHVzaW5nIHRoZSBEZWxldGUga2V5LgoKCSogZGxscy93aW5zcG9vbC9pbmZvLmMsIGRsbHMvd2luc3Bvb2wvd2luc3Bvb2wuZHJ2LnNwZWMsIGluY2x1ZGUvd2luc3Bvb2wuaDoKCUlhbiBQaWxjaGVyIDxwaWxjaGVyQGNvbmNlbnRyaWMubmV0PgoJSW1wbGVtZW50IEVudW1QcmludGVyRGF0YUV4e0F8V30uCgoJKiBkbGxzL2NvbW1kbGcvY29tZGxnMzIuc3BlYywgZGxscy9tc2FjbS9tc2FjbTMyLnNwZWMsIGRsbHMvbXNuZXQzMi9tc25ldDMyLnNwZWMsIGRsbHMvbXN2aWRlby9tc3ZmdzMyLnNwZWM6CglSZW1vdmVkIHNvbWUgdW5uZWNlc3Nhcnkgb3JkaW5hbHMuCgoJKiBkbGxzL2NydGRsbC9jcnRkbGxfbWFpbi5jLCBkbGxzL21zdmNydC9kYXRhLmMsIGRsbHMvbXN2Y3J0L21zdmNydC5oOgoJX19nZXRtYWluYXJncyBsYXN0IGFyZ3VtZW50IGlzIGEgcG9pbnRlciB0byBuZXdfbW9kZS4KCjIwMDEtMDItMjAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzZXJ2ZXIvbWFwcGluZy5jLCBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvdHJhY2UuYywgaW5jbHVkZS9zZXJ2ZXIuaCwgbWVtb3J5L3ZpcnR1YWwuYywgc2NoZWR1bGVyL2NsaWVudC5jOgoJU21hbGwgc2VydmVyIHByb3RvY29sIGNsZWFudXBzLgoKCSogZGxscy9vbGVjbGkvb2xlY2xpLnNwZWMsIGRsbHMvb2xlY2xpL29sZWNsaTMyLnNwZWMsIGRsbHMvb2xlY2xpL29sZWNsaV9tYWluLmM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBhc2kuZnI+CglTdHViIGZvciBPbGVTYXZlZENsaWVudERvYy4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglJbnNlcnQgdGhlIGl0ZW0gYmVmb3JlIGNhbGxpbmcgYSBTZXRGaXJzdFZpc2libGUgd2hpY2ggY2FuIGdlbmVyYXRlIGEKCVdNX1BBSU5UIG1lc3NhZ2UuCgoJKiBsaWJyYXJ5L3BvcnQuYzoKCUNsZWFyICVlYnAgYmVmb3JlIGVudGVyaW5nIHRoZSBuZXcgdGhyZWFkLgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jOgoJR290IHJpZCBvZiB0aGUgV1NJTkZPIHN0cnVjdHVyZS4gRml4ZWQgYSBjb3VwbGUgb2YgYnVncy4KCgkqIGRsbHMvY3J0ZGxsL2NydGRsbC5zcGVjLCBkbGxzL2NydGRsbC9jcnRkbGxfbWFpbi5jOgoJRml4ZWQgX19HZXRNYWluQXJncy4KCgkqIEFOTk9VTkNFLCBSRUFETUUsIGRvY3VtZW50YXRpb24vd2luZS5tYW4uaW46CglKb2VyZyBNYXllciA8am1heWVyQGxvcGxvZi5kZT4KCUFkZCBpbmZvcm1hdGlvbiBhYm91dCBwcmVidWlsdCBkb2N1bWVudGF0aW9uIHBhY2thZ2VzIGluCglvdGhlci10aGFuLXNnbWwgZm9ybS4KCgkqIHdpbmRvd3MvY2xpcGJvYXJkLmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJV2UgbmVlZCB0byBnaXZlIHJvb20gZm9yIHRoZSBudWxsIHRlcm1pbmF0aW9uIHdoZW4gdHJhbnNsYXRpbmcgdGhlCgljbGlwYm9hcmQgdGV4dC4KCgkqIGRsbHMvY29tY3RsMzIvY29tYm9leC5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gSW1wbGVtZW50IENCX1NFVENVUlNFTCwgQ0JFTV9ERUxFVEVJVEVNLCBDQkVNX0dFVElURU0sCgkgIENCRU1fe0dFVHxTRVR9VU5JQ09ERUZPUk1BVCwgQ0JfRklORFNUUklOR0VYQUNULCBXTV9DT01NQU5ELAoJICBXTV9ERUxFVEVJVEVNLgoJLSBJbXBsZW1lbnQgZXh0ZW5kZWQgc3R5bGUgQ0JFU19FWF9OT0VESVRJTUFHRSwgYW5kIHdhcm4gb3RoZXJzIGFyZQoJICBub3QgeWV0IGltcGxlbWVudGVkLgoJLSBSZXN0cnVjdHVyZSBEcmF3SXRlbSBjb2RlIHRvIGRvIHRoaW5ncyBtb3JlIHJhdGlvbmFsbHkuCgoJKiBjb250cm9scy9jb21iby5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gUmVzdHJ1Y3R1cmUgUGFpbnRUZXh0IGNvZGUgdG8gcmVtb3ZlIEZpbGxSZWN0IGZyb20gb3duZXItZHJhd24gcGF0aC4KCS0gQ2hhbmdlIFNldEZvY3VzIHRvIGluZGljYXRlIGZvY3VzIHNldCBvbmx5IGFmdGVyIE5vdGlmeSBpcyBzZW50IHRvIG93bmVyLgoJLSBHZXQgbW9yZSBpbmZvIGluIGEgdHJhY2UuCgoJKiBmaWxlcy9kb3NfZnMuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCUNvcnJlY3QgZXJyb3IgbWVzc2FnZSBpbiBjYXNlIERPU0ZTX09wZW5EZXZpY2UoKSBmYWlscyBvbiBhIENPTXgKCWRldmljZS4KCgkqIG1pc2NlbXUvbWFpbi5jLCBvYmplY3RzL3BhbGV0dGUuYywgd2luMzIvZXhjZXB0LmMsIGRsbHMvd2luZWRvcy9kb3N2bS5jLCBpZjE2MzIvdGh1bmsuYywgaW5jbHVkZS9jYWxsYmFjay5oLCBsb2FkZXIvdGFzay5jOgoJUmVtb3ZlZCBhIGZldyBDYWxsb3V0IGZ1bmN0aW9ucyBieSBkb2luZyBhIEdldFByb2NBZGRyZXNzIGF0IHRoZSB0aW1lCgl3ZSBhY3R1YWxseSBuZWVkIHRoZSBmdW5jdGlvbi4KCgkqIG1lbW9yeS92aXJ0dWFsLmM6CglGaXhlZCBNRU1fU1lTVEVNIGhhbmRsaW5nIHRvIGF2b2lkIHVubWFwcGluZyBhcmVhcyB0aGF0IHdlIGRpZG4ndCBtbWFwLgoKCSogZGxscy9tc3ZjcnQvZGF0YS5jLCBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglGaXggcHJvdG90eXBlcyBvZiBNU1ZDUlRfX19nZXRtYWluYXJncyBhbmQgTVNWQ1JUX19fd2dldG1haW5hcmdzLgoJUHJvdGVjdCBNU1ZDUlRfX2FjbWRsbiBnbG9iYWwgdmFyaWFibGUgZnJvbSBjb3JydXB0aW9uLgoKCSogaW5jbHVkZS93aW5udC5oOgoJSm9zaCBEdUJvaXMgPGR1Ym9pc2pAY29kZXdlYXZlcnMuY29tPgoJTW92ZWQgdHlwZWRlZiBvZiBDUklUSUNBTF9TRUNUSU9OIG91dCBvZiAjcHJhZ21hIHBhY2soMSkgYmxvY2suCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCUVyaWMgS29obCA8ZWtvaGxAY29kZXdlYXZlcnMuY29tPgoJRml4ZWQgYmVoYXZpb3VyIG9mIGRyb3Bkb3duIGJ1dHRvbnMuIFdoZW4gYSBkcm9wZG93biBidXR0b24gaXMKCWNsaWNrZWQsIGl0IGRvZXMgbm90IGNoYW5nZSBpbnRvIHByZXNzZWQgc3RhdGUuCgoJKiBvYmplY3RzL2VuaG1ldGFmaWxlLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQmV0dGVyIGltcGxlbWVudGF0aW9uIG9mIEVNRiByZWNvcmQgRU1SX0VYVFNFTEVDVENMSVBSR04uCgoJKiBkbGxzL2NvbW1kbGcvY2RsZ19EZS5yYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJVHJhbnNsYXRlZCBuZXcgY29tbW9uIGRpYWxvZyByZXNvdXJjZXMgaW50byBHZXJtYW4uCglSZXNpemVkIGZpbGUgZGlhbG9nIGEgYml0IHRvIG1ha2UgdG9vbGJhciBjb21wbGV0ZWx5IHZpc2libGUgYWdhaW4uCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9EZS5yYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgR2VybWFuIHRyYW5zbGF0aW9uLCBjaGFuZ2VkIGRpYWxvZyBmb250IHRvIEhlbHZldGljYS4KCjIwMDEtMDItMTYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBBTk5PVU5DRSwgQ2hhbmdlTG9nLCBpbmNsdWRlL3ZlcnNpb24uaDoKCVJlbGVhc2UgMjAwMTAyMTYuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjIwMDEtMDItMTYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL250ZGxsL2RlYnVndG9vbHMuYzoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJQXNzZXJ0IG9uIG91dHB1dCBidWZmZXIgb3ZlcmZsb3cuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglKYW1lcyBIYXRoZXdheSA8amFtZXNAbWFjYWRhbWlhbi5jb20+CglVcGRhdGUgc2VsZWN0aW9uIGFmdGVyIHNvcnRpbmcgKGluIExJU1RWSUVXX1NvcnRJdGVtcykgYnkgbWFraW5nIHN1cmUKCXNlbGVjdGlvbiBsaXN0IG1hdGNoZXMgc3RhdGVzIG9mIGluZGl2aWR1YWwgaXRlbXMuCgoJKiBncmFwaGljcy94MTFkcnYvZ3JhcGhpY3MuYzoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBESUIvcGl4bWFwIHN5bmNocm9uaXphdGlvbiBmb3Ige0dldCxTZXR9UGl4ZWwuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglUQl9TRVRCVVRUT05TSVpFIG1lc3NhZ2VzIG11c3QgYmUgdGFrZW4gaW50byBhY2NvdW50IGV2ZW4gYWZ0ZXIKCWJ1dHRvbnMgaGF2ZSBiZWVuIGFkZGVkLgoKCSogaW5jbHVkZS9zZXJ2ZXIuaCwgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2VydmVyL2NvbnNvbGUuYywgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3RyYWNlLmMsIHdpbjMyL2NvbnNvbGUuYzoKCVBhc3MgdGhlIHN0ZGluL3N0ZG91dCBoYW5kbGVzIG9uIHN0YXJ0dXAgdG8gdXNlIGFzIGNvbnNvbGUgKGJhc2VkIG9uIGEKCXBhdGNoIGJ5IEVyaWMgUG91ZWNoKS4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQ29ycmVjdCB0aGUgY29kZXBhZ2UgZm9yIHRoZSBUdXJraXNoIGtleWJvYXJkLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJU2V0dGluZyB0aGUgSG90SXRlbSB0byAtMSBjYW4gYmUgZGlzYXN0cm91cyBhdCB0aW1lcyBpZiBpdCBlcXVhbHMKCW9sZGhpdC4KCgkqIHRvb2xzL3NwZWNtYWtlci9kbGwuYywgdG9vbHMvc3BlY21ha2VyL21haW4uYywgdG9vbHMvc3BlY21ha2VyL21zbWFuZ2xlLmMsIHRvb2xzL3NwZWNtYWtlci9vdXRwdXQuYywgdG9vbHMvc3BlY21ha2VyL3NlYXJjaC5jLCB0b29scy9zcGVjbWFrZXIvc3BlY21ha2VyLmgsIHRvb2xzL3NwZWNtYWtlci9zeW1ib2wuYywgdG9vbHMvc3BlY21ha2VyL1JFQURNRToKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CgktIENyZWF0ZSBlbnRyaWVzIGZvciBvcmRpbmFsIG9ubHkgZXhwb3J0cywgdXNlIG9yZGluYWxzIGlmIG5vbi1zdGFuZGFyZC4KCS0gSW1wcm92ZSBDKysgZGVtYW5nbGVyLCByZWNvZ25pc2UgZGF0YSB0eXBlcywgZml4IHNvbWUgYnVncy4KCgkqIGZpbGVzL2RpcmVjdG9yeS5jLCBmaWxlcy9kb3NfZnMuYywgZmlsZXMvZmlsZS5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAYXNpLmZyPgoJR2l2ZXMgYmFjayB0aGUgRVJST1JfRklMRV9OT1RfRk9VTkQgdG8gR2V0RmlsZUF0dHJpYnV0ZXMuCgoyMDAxLTAyLTE1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogdG9vbHMvd2luZWJ1aWxkL3BhcnNlci5jOgoJQWRkZWQgc3VwcG9ydCBmb3IgYmFja3NsYXNoIGVzY2FwaW5nIG9mIHNwZWNpYWwgY2hhcmFjdGVycy4KCgkqIGRsbHMvdmVyc2lvbi9pbmZvLmM6CglMYXdzb24gV2hpdG5leSA8bGF3c29uX3doaXRuZXlAanVuby5jb20+CglJZiBWZXJRdWVyeVZhbHVlQSBpcyBjYWxsZWQgd2l0aCBhIFBFIHJlc291cmNlLCB0cmFuc2xhdGUgdGhlIGNhbGwgdG8KCVZlclF1ZXJ5VmFsdWVXLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQ29udGludWVkIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBTZXQgSG90IEl0ZW0uCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglKYW1lcyBIYXRoZXdheSA8amFtZXNAbWFjYWRhbWlhbi5jb20+CglTZW5kIExWTl9ERUxFVEVJVEVNIG5vdGlmaWNhdGlvbiBmaXJzdCwgdG8gYXZvaWQgY3Jhc2hlcyBpZiB0aGUgYXBwCglyZXF1ZXN0cyBMVklGX1BBUkFNIHdpdGggTElTVFZJRVdfR2V0SXRlbSgpIGR1cmluZyBpdHMgTFZOX0RFTEVURUlURU0KCW1lc3NhZ2UgaGFuZGxlci4KCgkqIGRsbHMvd2luaW5ldC9mdHAuYywgZGxscy93aW5pbmV0L2h0dHAuYywgZGxscy93aW5pbmV0L2ludGVybmV0Lmg6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5AY29kZXdlYXZlcnMuY29tPgoJQWRkIGluY2x1ZGVzIGZvciA8dGltZS5oPi4KCgkqIGRsbHMvd2luZXBzL2FmbS5jOgoJTW9ydGVuIFdlbGluZGVyIDx0ZXJyYS13aW5lQGRpa3UuZGs+CgkoUFNEUlZfQUZNR2V0Q2hhck1ldHJpY3MpOiBVc2UgdW5zaWduZWQgY2hhcnMgKHNpbmNlIGlzc3BhY2UgaXMgdXNlZCkuCgkoUFNEUlZfQUZNUGFyc2UpOiBEb24ndCBjcmFzaCBvbiBtaXNzaW5nIGZvbnQgbmFtZS4gIFVzZSB1bnNpZ25lZAoJY2hhcnMuICBGaXggcGVjdWxpYXIgaW5jb25zaXN0ZW50IGluZGVudGF0aW9uLiAgRG9uJ3QgbGVhayBhIEZJTEUuCglDYXRjaCBwcm9ibGVtYXRpYyBmaWxlcyB3aXRoIG5vIGxpbmUgZmVlZCBpbiB0aGVtLiAgRG9uJ3QgbWl4CgljaGFyYWN0ZXJzIGFuZCBpbnRlZ2Vycy4gIERvbid0IG92ZXJydW4gdGhlIGJ1ZmZlci4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgYSB0dXJraXNoIGtleWJvYXJkIGxheW91dC4KCjIwMDEtMDItMTQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjOgoJUmVtb3ZlZCBvcmRpbmFsIGZyb20gZnVuY3Rpb25zIHRoYXQgZG9uJ3QgbmVlZCBhIHNwZWNpZmljIHZhbHVlLgoKCSogc2NoZWR1bGVyL3N5c2RlcHMuYywgc2NoZWR1bGVyL3RocmVhZC5jLCB3aW4zMi9jb25zb2xlLmMsIHdpbjMyL2RldmljZS5jLCB3aW4zMi9leGNlcHQuYywgd2luMzIvZmlsZS5jLCB3aW4zMi9pbml0LmMsIHdpbjMyL25ld2Zucy5jLCB3aW4zMi90aW1lLmMsIGdyYXBoaWNzL3gxMWRydi9vZW1iaXRtYXAuYywgaWYxNjMyL2J1aWx0aW4uYywgaWYxNjMyL3JlbGF5LmMsIG1pc2MvcmVnaXN0cnkuYywgb2JqZWN0cy9iaXRtYXAuYywgb2JqZWN0cy9icnVzaC5jLCBvYmplY3RzL2NsaXBwaW5nLmMsIG9iamVjdHMvZGMuYywgb2JqZWN0cy9kY3ZhbHVlcy5jLCBvYmplY3RzL2RpYi5jLCBvYmplY3RzL2VuaG1ldGFmaWxlLmMsIG9iamVjdHMvbGluZWRkYS5jLCBvYmplY3RzL21ldGFmaWxlLmMsIG9iamVjdHMvcGFsZXR0ZS5jLCBvYmplY3RzL3Blbi5jLCBvYmplY3RzL3JlZ2lvbi5jLCBvYmplY3RzL3RleHQuYywgb2xlL29sZTJubHMuYywgc2NoZWR1bGVyL2NsaWVudC5jLCBzY2hlZHVsZXIvaGFuZGxlLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIGRsbHMvYXZpZmlsMzIvYXZpZmlsZS5jLCBncmFwaGljcy9iaXRibHQuYywgZ3JhcGhpY3MvZW5obWV0YWZpbGVkcnYvaW5pdC5jLCBncmFwaGljcy9lbnYuYywgZ3JhcGhpY3MvZXNjYXBlLmMsIGdyYXBoaWNzL21hcHBpbmcuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvaW5pdC5jLCBncmFwaGljcy9wYWludGluZy5jLCBncmFwaGljcy9wYXRoLmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L3BydGRydi5jLCBkbGxzL2FkdmFwaTMyL2FkdmFwaS5jLCBkbGxzL2FkdmFwaTMyL2NyeXB0LmMsIGRsbHMvYWR2YXBpMzIvZXZlbnRsb2cuYywgZGxscy9hZHZhcGkzMi9yZWdpc3RyeS5jLCBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmMsIGRsbHMvYWR2YXBpMzIvc2VydmljZS5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglEb2N1bWVudGF0aW9uIG9yZGluYWwgZml4ZXMuCgoJKiBncmFwaGljcy9lbmhtZXRhZmlsZWRydi9vYmplY3RzLmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L29iamVjdHMuYywgZ3JhcGhpY3Mvd2luMTZkcnYvZm9udC5jLCBncmFwaGljcy94MTFkcnYveGZvbnQuYywgaW5jbHVkZS9mb250LmgsIGluY2x1ZGUvZ2RpLmgsIGluY2x1ZGUvd2luMTZkcnYuaCwgaW5jbHVkZS94MTFkcnYuaCwgb2JqZWN0cy9mb250LmMsIG9iamVjdHMvZ2Rpb2JqLmMsIGRsbHMvd2luZXBzL2ZvbnQuYywgZGxscy93aW5lcHMvcHNkcnYuaDoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUNoYW5nZSBGT05UT0JKIHRvIHVzZSBMT0dGT05UVyByYXRoZXIgdGhhbiBMT0dGT05UMTYuCglVcGRhdGVkIHBhcmFtZXRlcnMgb2YgREVWSUNFRk9OVEVOVU1QUk9DLgoKCSogd2luZG93cy9kZWZ3bmQuYzoKCUZpeGVkIFdNX0dFVFRFWFRMRU5HVEggaGFuZGxpbmcuCgoJKiBkbGxzL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL21jaWF2aS8uY3ZzaWdub3JlLCBkbGxzL3dpbm1tL21jaWF2aS9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS9tY2lhdmkvaW5mby5jLCBkbGxzL3dpbm1tL21jaWF2aS9tY2lhdmkuYywgZGxscy93aW5tbS9tY2lhdmkvbWNpYXZpLmRydi5zcGVjLCBkbGxzL3dpbm1tL21jaWF2aS9tY2lhdmlfcmVzLnJjLCBkbGxzL3dpbm1tL21jaWF2aS9tbW91dHB1dC5jLCBkbGxzL3dpbm1tL21jaWF2aS9wcml2YXRlX21jaWF2aS5oLCBkbGxzL3dpbm1tL21jaWF2aS93bmQuYywgaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9tY2lhdmkuaCwgaW5jbHVkZS92ZncuaDoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJU3RhcnRlZCB0aGUgcmVhbCBpbXBsZW1lbnRhdGlvbiBvZiBtY2lhdmkuCgoJKiBkbGxzL2FkdmFwaTMyL3JlZ2lzdHJ5LmM6CglBbHdheXMgcmV0dXJuIHN1Y2Nlc3MgaW5zdGVhZCBvZiBvdmVyZmxvdyBpZiBjYWxsZXIgZGlkbid0IHNwZWNpZnkgYQoJYnVmZmVyLgoKCSogdG9vbHMvd2luZWNvbmY6CglNb3J0ZW4gV2VsaW5kZXIgPHRlcnJhLXdpbmVAZGlrdS5kaz4KCU91dHB1dCB0aGUgcmlnaHQgbnVtYmVyIG9mIGJhY2tzbGFzaGVzIGluIHZhbHVlcy4KCgkqIHdpbmRvd3Mvc3B5LmM6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQmUgc21hcnRlciBhYm91dCB0aGUgZWxsaXBzaXMgaW4gU1BZX0dldFduZE5hbWUuCgoJKiBkbGxzL3JpY2hlZGl0L3JpY2hlZGl0LmMsIG1lbW9yeS9oZWFwLmMsIHByb2dyYW1zL3JlZ2FwaS9yZWdhcGkuYywgd2luZG93cy9jdXJzb3JpY29uLmM6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJTWlzYyB0eXBvcyBpbiBjb21tZW50cy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglMaXN0Vmlld19HZXRJdGVtUmVjdCBhbHJlYWR5IHNldHMgcmMubGVmdC4KCgkqIGNvbnRyb2xzL21lbnUuYywgZGxscy9jb21jdGwzMi90b29sYmFyLmMsIG9sZS9vbGUybmxzLmM6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJZGVidWdzdHJfeHh4IGFscmVhZHkgZG9lcyB0aGUgcXVvdGluZy4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUNoYW5nZSB0aGUgY2FsbGJhY2sgZGVjbGFyYXRpb25zIHRvIGEgc2FmZXIgZm9ybWF0LgoKCSogZG9jdW1lbnRhdGlvbi93aW5lLm1hbi5pbjoKCUxhd3NvbiBXaGl0bmV5IDxsYXdzb25fd2hpdG5leUBqdW5vLmNvbT4KCVR1bmUgdGhlIGRvY28gdG8gdGhlIGNvZGUgZm9yIHJlbGF5L3Nub29wIHNwZWNpZmljLgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jLCBkbGxzL2tlcm5lbC9jb21tLmMsIGRsbHMvc2hlbGwzMi9zaHJlcy5yYywgZGxscy93aW5tbS9tbXN5c3RlbS5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglDb3NtZXRpY3MuCgoJKiB3aW4zMi9kZXZpY2UuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJR2l2ZSBib3RoIC0td2ludmVyIG50NDAgYW5kIHdpbjMxIGZvciBWeEQgd2FybmluZywgYXMgc29tZSBwcm9ncmFtcwoJd29yayB3aXRoIHdpbjMxLgoKCSogZGxscy9kZHJhdy9kZHJhdy90aHVua3MuYywgZGxscy9kZHJhdy9kZHJhd19wcml2YXRlLmgsIGRsbHMvZGRyYXcvc3RydWN0X2NvbnZlcnQuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJLSBjb3JyZWN0IEREUkFXX0NvbnZlcnRfRERERVZJQ0VJREVOVElGSUVSXzJfVG9fMSBjb25mdXNpb24KCS0gZml4IEdldEF2YWlsYWJsZVZpZE1lbSBkZHJhdyBpZmFjZSBjb3B5JnBhc3RlIGJ1ZyAoZG9oICEpCgoJKiBkbGxzL3gxMWRydi94MTFkZHJhdy5jLCBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jLCBkbGxzL3gxMWRydi94dmlkbW9kZS5jLCBkbGxzL3gxMWRydi94dmlkbW9kZS5oLCBkbGxzL3gxMWRydi9NYWtlZmlsZS5pbjoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJR3V0cyBvZiBhIHNpbXBsZSBYVmlkTW9kZS1zdXBwb3J0aW5nIERpcmVjdERyYXcgSEFMIGluIHgxMWRydi4KCgkqIGZpbGVzL2ZpbGUuYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglTZXRMYXN0RXJyb3IoKSBmb3IgR2V0RmlsZUF0dHJpYnV0ZXNBLgoKCSogd2luZG93cy9kZWZ3bmQuYzoKCVN1c2FuIEZhcmxleSA8c3VzYW5AY29kZXdlYXZlcnMuY29tPgoJRXhjZXB0aW9uIGZvciBhbGxvd2luZyB0aGUgcGFyZW50IHRvIHNldCB0aGUgY3Vyc29yIGZvciBhIGNoaWxkIHduZCBpcwoJd2hlbiB0aGUgY3Vyc29yIGlzIG9uIHRoZSBib3JkZXIgb2YgYSByZXNpemFibGUgd25kLgoKCSogY29udHJvbHMvbWVudS5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUNvbnZlcnQgbWVudSBpdGVtIHRvIHNlcGVyYXRvciBvbmx5IHdoZW4gc3RyaW5nIGlzIE5VTEwuCgoyMDAxLTAyLTEzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS9kY2lkZGkuaCwgaW5jbHVkZS9kZHJhd2kuaDoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJU29tZSBpbXBvcnRhbnQgc3R1ZmYgZnJvbSB0aGUgRGlyZWN0RHJhdyBEREsgaGVhZGVycy4KCgkqIGluY2x1ZGUvd2luZS9saWJyYXJ5LmgsIGxpYnJhcnkvbG9hZGVyLmMsIHNjaGVkdWxlci9wcm9jZXNzLmM6CglKb3NoIER1Qm9pcyA8ZHVib2lzakBjb2Rld2VhdmVycy5jb20+CglNb3JlIHZlcmJvc2UgZXJyb3IgbWVzc2FnZXMgd2hlbiBhcHBsaWNhdGlvbiBsb2FkIGZhaWxzLgoKCSogaW5jbHVkZS93aW5udC5oLCBtaXNjL2NwdS5jLCB3aW4zMi9uZXdmbnMuYzoKCUphbWVzIEFiYmF0aWVsbG8gPGphYmJleUBjb2Rld2VhdmVycy5jb20+CglVc2UgdGhlIFBlbnRpdW0ncyByZHRzYyBpbnN0cnVjdGlvbiAoaWYgYXZhaWxhYmxlKSB0byBpbXBsZW1lbnQKCVF1ZXJ5UGVyZm9ybWFuY2VDb3VudGVyLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL3dpbjE2L3dpbm5scy5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9kY2ltYW4zMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLmRhdCwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9kb2N1bWVudGF0aW9uLnBtOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIE1pbm9yIEFQSSBmaWxlcyBmaXhlcwoJLSBNaW5vciBidWcgZml4ZXMKCgkqIGRsbHMvd2lubmxzL3dpbm5scy5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIGlzc3VlcyBmb3VuZCBieSB3aW5hcGlfY2hlY2suCgoJKiBkbGxzL3dpbmVwcy9hZm0uYzoKCVBldGVyIEguIEdhbnRlbiA8cGV0ZXJAZ2FudGVuLm9yZz4KCS0gb25seSBwYXJzZSBBRk0tZmlsZXMsIHdoaWNoIHN0YXJ0IHdpdGggIkJlZ2luRm9udE1ldHJpY3MiCgktIHVzZSBmZ2V0YyBpbnN0ZWFkIG9mIGZnZXRzIHRvIGNvcGUgd2l0aCBBRk0tRmlsZXMgd2l0aAoJICBNYWNpbnRvc2gtU3R5bGUgbGluZS1icmVha3MgKCdccicpIGluIHRoZSBwYXJzZXIuCgoJKiBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLCBkbGxzL3NobHdhcGkvcmVnLmMsIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWMsIGRsbHMvc2hsd2FwaS9zaGx3YXBpX21haW4uYywgZGxscy9zaGx3YXBpL3VybC5jLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvc2hsd2FwaS5hcGk6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJSW1wbGVtZW50IGEgYnVuY2ggb2Ygc2hsd2FwaSBmdW5jdGlvbnMsIGFkZCBzb21lIG5ldyBzdHVicy4KCgkqIGdyYXBoaWNzL3gxMWRydi9kaWIuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglBZGRlZCBSR0IgNTY1ID0+IFJHQiAwODg4IGNvbnZlcnNpb24uCgoJKiBkbGxzL3NoZWxsMzIvc2hsdmlldy5jOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCBrZXlib2FyZCBzaG9ydGN1dCBGMiB0byByZW5hbWUgZmlsZXMgYW5kIGRpcmVjdG9yaWVzIGluIHRoZQoJc2hlbGx2aWV3IChhbmQgaW4gY29tbW9uIGRpYWxvZ3MpLgoKCSogdG9vbHMvd2luZWJ1aWxkL2J1aWxkLmgsIHRvb2xzL3dpbmVidWlsZC9pbXBvcnQuYywgdG9vbHMvd2luZWJ1aWxkL3BhcnNlci5jLCB0b29scy93aW5lYnVpbGQvcmVsYXkuYywgdG9vbHMvd2luZWJ1aWxkL3NwZWMxNi5jLCB0b29scy93aW5lYnVpbGQvc3BlYzMyLmMsIHRvb2xzL3dpbmVidWlsZC91dGlscy5jOgoJSm9zaCBEdUJvaXMgPGR1Ym9pc2pAY29kZXdlYXZlcnMuY29tPgoJTW9yZSBwb3J0YWJsZSAuYWxpZ24gZGlyZWN0aXZlLgoJSWdub3JlIC1kZWxheSBkaXJlY3RpdmUgb24gcHBjIG9ubHkuCglBZGRlZCBjb2RlIHRvIGNhbGwgdGhlIGRsbCBjb25zdHJ1Y3RvcnMuCgoJKiBpbmNsdWRlL3dpbm50Lmg6CglKb3NoIER1Qm9pcyA8ZHVib2lzakBjb2Rld2VhdmVycy5jb20+CglEZWZpbmVkIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBtYWNyb3MgZm9yIHBwYy4KCgkqIGNvbnRyb2xzL21lbnUuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRG9uJ3QgY3Jhc2ggb24gY2xvc2UgZnJvbSB3aW5kb3cgbWFuYWdlci4KCgkqIHdpbmRvd3MvbWVzc2FnZS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglQb3N0TWVzc2FnZUEvVyBpZ25vcmVzIG1lc3NhZ2VzIGNvbnRhaW5pbmcgcG9pbnRlcnMgYW5kIHJldHVybnMKCUZBTFNFL0xhc3RFcnJvciBFUlJPUl9JTlZBTElEX1BBUkVNRVRFUi4KCgkqIHdpbmRvd3MvY3Vyc29yaWNvbi5jOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUNyZWF0ZUljb24gbXVzdCBwZXJmb3JtIGNvbG9yIGRlcHRoIGNvbnZlcnNpb24gaWYgdGhlIHByb3ZpZGVkIGJpdG1hcAoJaXMgbm90IG9mIHRoZSBzYW1lIGRlcHRoIGFzIHRoZSBzY3JlZW4uCglBZGRlZCBzb21lIGRvY3VtZW50YXRpb24uCgoyMDAxLTAyLTEyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jb21tZGxnL3ByaW50ZGxnLmM6CglEdWFuZSBDbGFyayA8ZGNsYXJrQGFrYW1haWwuY29tPgoJLSBtYWtlIHRoZSBMYW5kc2NhcGUvUG9ydHJhaXQgYnV0dG9ucyBkbyBzb21ldGhpbmcuCgktIGZpeCB0aGVzZSBwcm9ibGVtcyBpbiB0aGUgUGFwZXIgU2l6ZSBhbmQgU291cmNlIGNvbWJvIGJveGVzOgoJICAxKSBFdmVyeSB0aW1lIHRoZSBwcmludGVyIHNldHVwIGRpYWxvZyBpcyBvcGVuZWQsIHRoZSBzZXR0aW5ncwoJICBhcmUgc2V0IGJhY2sgdG8gZ2FyYmFnZSBzZXR0aW5ncy4KCSAgMikgSWYgdGhlIHBhcGVyIHNpemUgb3Igc291cmNlIGlzIGNoYW5nZWQsIGFuZCB0aGVuIHRoZSBwcmludGVyIGlzCgkgIGNoYW5nZWQsIHRoZSBuZXcgcHJpbnRlciBkb2VzIG5vdCBnZXQgdGhlIG5ldyBzaXplIGFuZCBzb3VyY2UKCSAgc2V0dGluZ3MgZXZlbiB0aG91Z2ggaXQgYXBwZWFycyB0byBmcm9tIHRoZSBkaWFsb2cuCgoJKiBncmFwaGljcy94MTFkcnYvZGliLmMsIG9iamVjdHMvZGliLmM6CglKYW1lcyBBYmJhdGllbGxvIDxqYWJiZXlAY29kZXdlYXZlcnMuY29tPgoJSW4gQ3JlYXRlRElCU2VjdGlvbiwgdGhlIG9mZnNldCBpbnRvIHRoZSBmaWxlIG1hcHBpbmcgZG9lcyBub3QgaGF2ZSB0bwoJYmUgYSBtdWx0aXBsZSBvZiB0aGUgbWVtb3J5IGFsbG9jYXRpb24gZ3JhbnVsYXJpdHkuCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFkZCBtaXNzaW5nIGRlZmluaXRpb25zIHJlcXVpcmVkIGJ5IHRoZSBDb250cm9sIFNweSBleGFtcGxlcy4KCgkqIG9iamVjdHMvZW5obWV0YWZpbGUuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgcGxheWluZyBvZiBFTVJfQklUQkxULCBFTVJfU1RSRVRDSEJMVCwgRU1SX01BU0tCTFQsCglFTVJfUExHQkxULCBFTVJfU0VURElCSVRTVE9ERVZJQ0UsIEVNUl9QT0xZVEVYVE9VVEEsIEVNUl9QT0xZVEVYVE9VVFcsCglFTVJfRklMTFJHTiwgRU1SX0ZSQU1FUkdOLCBFTVJfSU5WRVJUUkdOLCBFTVJfUEFJTlRSR04gZW5oYW5jZWQKCW1ldGFmaWxlIHJlY29yZCB0eXBlcyBhY2NvcmRpbmcgdG8gc3BlY3MuCgoJKiBpbmNsdWRlL29sZWF1dG8uaCwgZGxscy9vbGVhdXQzMi9NYWtlZmlsZS5pbiwgZGxscy9vbGVhdXQzMi9oYXNoLmMsIGRsbHMvb2xlYXV0MzIvc3R1YnMuYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglJbXBsZW1lbnQgTEhhc2hWYWxPZk5hbWVTeXNBIGZvciA0IExDSURzLCBmaXggcHJvdG90eXBlLgoKCSogZGxscy9zaGVsbDMyL3NobHZpZXcuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJUmVtb3ZlIFRPT0xCQVJfSUQgYW5kIFdNX1NFVFRJTkdDSEFOR0UsIHRoZXkgYXJlIG5vdCB1c2VkLgoKCSogaW5jbHVkZS9yaWNoZWRpdC5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglEZWNsYXJlIFJJQ0hFRElUX0NMQVNTMjBXIHVzaW5nIGEgV0NIQVIgYXJyYXkuCgoJKiB3aW5kb3dzL2NsaXBib2FyZC5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUlmIGFuIGFwcGxpY2F0aW9uIGRpcmVjdGx5IGNhbGxzIFNldENsaXBib2FyZERhdGEgd2l0aCBDRl9URVhUIGFuZAoJdGhlbiBsYXRlciBjYWxsZWQgR2V0Q2xpcGJvYXJkRGF0YSB3aXRoIENGX1RFWFQgd2UgZ2F2ZSB0aGVtIGEgTlVMTAoJYmVjYXVzZSB3ZSB3aGVyZSBub3QgaGFuZGxpbmcgdGhpcyBjYXNlLgoKCSogY29udHJvbHMvZWRpdC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCB0aGUgYmVoYXZpb3VyIG9mIEVNX0dFVExJTkUgbWVzc2FnZS4KCgkqIHdpbmRvd3MvbWVzc2FnZS5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglNYWtlIHN1cmUgdGhhdCBNU0dfUGVla01lc3NhZ2UgdXNlcyBhbiBpbnRlcm5hbCB2YXJpYWJsZSB0byBhdm9pZAoJY29ycnVwdGlvbi4KCgkqIGRsbHMvbnRkbGwvcmVnLmMsIGZpbGVzL2RpcmVjdG9yeS5jLCBwcm9ncmFtcy9yZWdhcGkvUkVBRE1FLCB0b29scy93aW5laW5zdGFsbDoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJLSBUUkFDRSBvcGVuZWQgcmVnaXN0cnkgaGFuZGxlcwoJLSBhZGQgcHJvcGVyIHF1b3RlcyB0byB3aW5laW5zdGFsbAoJLSBzcGVsbGluZwoKCSogZ3JhcGhpY3MveDExZHJ2L3BhbGV0dGUuYywgd2luZG93cy9ub25jbGllbnQuYywgd2luZG93cy94MTFkcnYvd25kLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gbW92ZSBUU1hHcmFiU2VydmVyIGFmdGVyIGEgcG9zc2libGUgcmV0dXJuIEZBTFNFOwoJLSBtb3ZlIG1pc3BsYWNlZCBjb21tZW50CgktIG9wdGltaXplIFRTWEdyYWJTZXJ2ZXIgdXNlCgoJKiB3aW5kb3dzL21kaS5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZSByZWR1bmRhbnQgcGFyYW1ldGVycyBmcm9tIE1ESUNyZWF0ZUNoaWxkIGFuZCBNRElEZXN0cm95Q2hpbGQuCglNYWtlIHRoZSBwYXJhbWV0ZXIgbmFtZXMgc2xpZ2h0bHkgbW9yZSBkZXNjcmlwdGl2ZS4KCgkqIGRsbHMvY29tbWRsZy9jZGxnX0VuLnJjLCBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBhbiB1cGRvd24gY29udHJvbCB0byB0aGUgY29weSBjb3VudCBlbnRyeS4KCURpc2FibGUgdGhlIGNvbGxhdGUgYnV0dG9uIGlmIG5vLiBvZiBjb3BpZXMgaXMgMS4KCUFkZCBMYW5kc2NhcGUvUG9ydHJhaXQgaWNvbnMuCglHZXQgcmlkIG9mIHRoZSAiRHVtbXkgQ29tbWVudCIgbGluZS4KCUZpeCB0aGUgRW5nbGlzaCBvZiBzb21lIG9mIHRoZSBlcnJvciBtZXNzYWdlcy4KCgkqIG9iamVjdHMvZW5obWV0YWZpbGUuYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZSB1bnVzZWQgb3V0WGZvcm0uCgoJKiBkbGxzL2RkcmF3L2RkcmF3L21haW4uYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglBbGxvdyBhbiBhcHBsaWNhdGlvbiB0byByZS1hc2sgZm9yIEVYQ0xVU0lWRSBEaXJlY3REcmF3IGFjY2Vzcy4KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCUNoZWNrIFBST1BTSEVFVFBBR0VBLnBmbkNhbGxiYWNrIGZvciBOVUxMIHBvaW50ZXIgaWYgUFNQX1VTRUNBTExCQUNLCglpcyBnaXZlbi4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglIYW5kbGUgV01fQ0hBUnMgYW5kIHBhc3MgdGhlbSB0byBUUkVFVklFV19Qcm9jZXNzTGV0dGVyS2V5cy4gU2VlIGFsc28KCUxJU1RWSUVXX1Byb2Nlc3NMZXR0ZXJLZXlzIGluIGxpc3R2aWV3LmMuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJRml4IChyZXdyaXRlKSwgYW5kIGFkZCBkb2N1bWVudGF0aW9uIHRvIExJU1RWSUVXX1Byb2Nlc3NMZXR0ZXJLZXlzLgoJTG93ZXJlZCB0aGUga2V5IHJlcGV0aXRpb24gZGVsYXkgKEFyaWMpLgoKCSogbWVtb3J5L3ZpcnR1YWwuYzoKCUphbWVzIEFiYmF0aWVsbG8gPGphYmJleUBjb2Rld2VhdmVycy5jb20+CglEb24ndCByZXF1aXJlIHdyaXRlIGFjY2VzcyBvbiB0aGUgZmlsZSBoYW5kbGUgdG8gY3JlYXRlIGEKCWNvcHktb24td3JpdGUgbWFwcGluZy4KCgkqIGRsbHMvd2lubW0vbW1zeXN0ZW0uYywgZGxscy93aW5zcG9vbC9pbmZvLmMsIGRsbHMvd2luc3Bvb2wvd3Nwb29sLmMsIGxpYnRlc3QvaGVsbG81LmMsIHByb2dyYW1zL2F2aXRvb2xzL2F2aWluZm8uYywgcHJvZ3JhbXMvYXZpdG9vbHMvYXZpcGxheS5jLCB3aW5kb3dzL2RlZnduZC5jLCBkbGxzL2NvbWN0bDMyL3Ntb290aHNjcm9sbC5jLCBkbGxzL2NvbW1kbGcvY2RsZy5oLCBkbGxzL2NvbW1kbGcvY2RsZzMyLmMsIGRsbHMvZHBsYXl4L2RwbGF5c3AuaCwgZGxscy9pbW0zMi9pbW1fcHJpdmF0ZS5oLCBkbGxzL2tlcm5lbC91dHRodW5rLmMsIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL3NldHVwYXBpL3NldHVweDE2LmgsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLCBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYywgZGxscy9zaGVsbDMyL3NobHZpZXcuYywgZGxscy93aW5lcHMvZHJpdmVyLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUNoYW5nZSB0aGUgY2FsbGJhY2sgZGVjbGFyYXRpb25zIHRvIGEgc2FmZXIgZm9ybWF0LgoKCSogZGxscy9vbGVhdXQzMi9kaXNwYXRjaC5jLCBmaWxlcy9maWxlLmMsIGRsbHMva2VybmVsL2NvbW0uYywgZGxscy9rZXJuZWwvZGVidWdnZXIuYywgZGxscy9rZXJuZWwvdGltZS5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglEb2N1bWVudGF0aW9uIGFyZ3VtZW50IGZpeGVzLgoKCSogd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3MvdXNlci5jLCB3aW5kb3dzL3gxMWRydi9jbGlwYm9hcmQuYywgd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYywgd2luZG93cy94MTFkcnYvbW91c2UuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRG9jdW1lbnRhdGlvbiBuYW1lIGZpeGVzIChhbHdheXMgdXNlIGV4dGVybmFsIG5hbWUpLgoKCSogZGxscy9kcGxheXgvZHBsYXkuYywgZGxscy9vbGUzMi9zdG9yYWdlLmMsIGRsbHMvc2hlbGwzMi9zaHZfYmdfY21lbnUuYywgbGlidGVzdC92YXJ0ZXN0LmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUZpeCB0eXBvcyBpbiBjb21tZW50cy4KCgkqIGRsbHMva2VybmVsL25scy9tc2wubmxzLCBtaXNjL29wdGlvbnMuYywgdG9vbHMvd21jL2xhbmcuYywgdG9vbHMvd21jL2xhbmd1YWdlLmMsIHRvb2xzL3dyYy91dGlscy5jLCBkbGxzL2tlcm5lbC9sb2NhbGVfcmMucmM6CglSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJQWRkZWQgc3VwcG9ydCBmb3IgdGhlIE1hbGF5YW4gbGFuZ3VhZ2UuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmMsIGluY2x1ZGUvY29tbWN0cmwuaDoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkBjb2Rld2VhdmVycy5jb20+CglGaXggTGlzdFZpZXdfR2V0SXRlbVJlY3QoKSBtYWNyby4KCUZpeCB1c2Ugb2YgTGlzdFZpZXdfR2V0SXRlbVJlY3QoKSBtYWNybyBpbiBsaXN0dmlldyBjb250cm9sLgoJQWRkIHNvbWUgZG9jdW1lbnRhdGlvbiB0byBMSVNUVklFV19HZXRJdGVtUmVjdCgpLgoKCSogZGxscy9tc2FjbS9tc2FjbV9tYWluLmMsIGRsbHMvbXN2Y3J0L2RhdGEuYywgZGxscy9tc3ZjcnQvbWF0aC5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIGlzc3VlcyBmb3VuZCBieSB3aW5hcGlfY2hlY2suCgoJKiB0b29scy93aW5hcGlfY2hlY2svd2luMTYvbXN2aWRlby5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4xNi91c2VyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9jaGVjaywgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9kb2N1bWVudGF0aW9uLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2Z1bmN0aW9uLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2xvY2FsLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX3BhcnNlci5wbToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBBZGRkZWQgc3VwcG9ydCBmb3IgQVBJOnMgaW1wbGVtZW50ZWQgd2l0aCBfX0FTTV9HTE9CQUxfRlVOQwoJLSBSZW9yZ2FuaXplZCBkb2N1bWVudGF0aW9uIGNoZWNraW5nLgoJLSBNaW5vciBBUEkgZmlsZXMgZml4ZXMKCgkqIGRsbHMvZGRyYXcvZGRyYXcvbWFpbi5jLCBkbGxzL2RkcmF3L2RkcmF3L3RodW5rcy5jLCBkbGxzL2RkcmF3L2RkcmF3L3VzZXIuYywgZGxscy9kZHJhdy9kZHJhd19wcml2YXRlLmgsIGRsbHMvZGRyYXcvZHN1cmZhY2UvbWFpbi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglIYW5kbGUgZGlmZmVyZW50bHkgc2l6ZWQgc3RydWN0cyBieSB1c2luZyB0aGVpciBkd1NpemUgcGFyYW1ldGVycy4KCgkqIGRsbHMvZGlucHV0L2pveXN0aWNrL2xpbnV4aW5wdXQuYywgaW5jbHVkZS9jYWxsYmFjay5oLCB3aW5kb3dzL3dpbnByb2MuYzoKCUphbWVzIEFiYmF0aWVsbG8gPGphYmJleUBjb2Rld2VhdmVycy5jb20+CglGaXggYSBmZXcgY29tcGlsZXIgd2FybmluZ3MuCgoJKiBkbGxzL2NvbWN0bDMyL2RhdGV0aW1lLmMsIGRsbHMvY29tY3RsMzIvZmxhdHNiLmMsIGRsbHMvY29tY3RsMzIvbmF0aXZlZm9udC5jLCBkbGxzL2NvbWN0bDMyL3BhZ2VyLmMsIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJSmFtZXMgQWJiYXRpZWxsbyA8amFiYmV5QGNvZGV3ZWF2ZXJzLmNvbT4KCURvbid0IGFsbG93IGNvbWN0bDMyIGNvbnRyb2xzIHRvIGFjY2VzcyB0aGVpciBpbmZvUHRyIGJlZm9yZSBpdCBoYXMKCWJlZW4gIGFsbG9jYXRlZCBvciBhZnRlciBpdCBoYXMgYmVlbiBmcmVlZC4KCgkqIGRsbHMvd2lubW0vbW1pby5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglNYWtlIE1NSU9fT3BlbiB3b3JrIHdpdGggTlVMTCBmaWxlbmFtZSBhZ2Fpbi4KCgkqIGRsbHMvdXNlci91c2VyMzIuc3BlYywgaW5jbHVkZS93aW51c2VyLmgsIHdpbmRvd3MvbWRpLmMsIHdpbmRvd3Mvd2luLmMsIGRsbHMvdXNlci9jb250cm9scy5oOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIHVuaWNvZGUgTURJIGNsaWVudCB3aW5kb3cgcHJvYy4KCgkqIHdpbmRvd3MveDExZHJ2L2V2ZW50LmM6CglKb3NoIER1Qm9pcyA8ZHVib2lzakBjb2Rld2VhdmVycy5jb20+CglGaXhlZCBhIGNoYXIgdGhhdCBzaG91bGQgaGF2ZSBiZWVuIHNpZ25lZC4KCgkqIGluY2x1ZGUvcHJvY2Vzcy5oOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCVVzZSBleHRlcm4gIkMiIGZvciBXaW5lbGliIEMrKyBhcHBzLgoKCSogZGxscy9jb21tZGxnL3ByaW50ZGxnLmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglDYWxsIExvYWRJbWFnZSB0byBsb2FkIHRoZSBub24tc3RhbmRhcmQgc2l6ZWQgY29sbGF0ZSBpY29ucy4KCgkqIGRsbHMvd2luZXBzL2ZvbnQuYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCU1hcCAnQ291cmllciBOZXcnIHRvICdDb3VyaWVyJy4KCgkqIG9iamVjdHMvZW5obWV0YWZpbGUuYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBFTUYgcG9zaXRpb25pbmcgd2hlbiByY2xGcmFtZSBoYXMgYSBub24temVybyBvcmlnaW4uCgoJKiBpbmNsdWRlL3dpbmUvdW5kb2NzaGVsbC5oLCBpbmNsdWRlL3Byb2Nlc3MuaCwgaW5jbHVkZS9zZXR1cGFwaS5oLCBpbmNsdWRlL3NobHdhcGkuaCwgaW5jbHVkZS92ZncuaCwgaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2luc29jazIuaCwgaW5jbHVkZS93aW5zdmMuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQ2hhbmdlIHRoZSBjYWxsYmFjayBkZWNsYXJhdGlvbnMgdG8gYSBzYWZlciBmb3JtYXQuCgoJKiBkbGxzL21zYWNtL2ZpbHRlci5jLCBkbGxzL21zYWNtL2Zvcm1hdC5jOgoJSmFtZXMgSGF0aGV3YXkgPGphbWVzQG1hY2FkYW1pYW4uY29tPgoJYWNtRHJpdmVyRW51bVcgc2hvdWxkbid0IHJldHVybiBNTVNZU0VSUl9FUlJPUiBpZgoJYWNtRHJpdmVyRW51bUNhbGxiYWNrIHJldHVybnMgVFJVRS4KCgkqIGRsbHMvd2luc3Bvb2wvaW5mby5jLCBkbGxzL3dpbnNwb29sL3dpbnNwb29sLmRydi5zcGVjLCBpbmNsdWRlL3dpbnNwb29sLmg6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgU2V0L0dldFByaW50ZXJEYXRhW0V4XS4KCVJlbW92ZSBvcmRpbmFscyBmcm9tIHdpbnNwb29sLmRydi5zcGVjIC4KCgkqIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL29sZTJzdHVicy5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglUYWtlIGEgc3RhYiBhdCBpbXBsZW1lbnRpbmcgT2xlU2V0QXV0b0NvbnZlcnQuCgoJKiBkbGxzL3dpbmVwcy9hZm0uYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgYSBOVUxMIHB0ciBwcm9ibGVtLgoJQWRkZWQgbG9hZGluZyBvZiAuYWZtIGZpbGVzIGZyb20gc2V2ZXJhbCBjb21tb24gbG9jYXRpb25zCgkoZ2hvc3RzY3JpcHQsIGEycHMsIGVuc2NyaXB0LCAodGVUZVgpLCBYMTEpLgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCURvbid0IHRvdWNoIFdBVkVIRFJzIGR3TG9vcHMgdmFyaWFibGUuCgoJKiBkbGxzL3dpbmVwcy9wcGQuYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCVNwYWNlcyBkbyBub3QgaGF2ZSB0byBjb21lIGFmdGVyIHRoZSAnOicgdGhhdCBlbmRzIGEga2V5d29yZC4KCU1hcCBiaW4gbmFtZSBNYW51YWxFbnYgdG8gRE1CSU5fRU5WTUFOVUFMLgoKCSogdG9vbHMvd2luZW1ha2VyOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2Ugc3VyZSBhbGwgZmlsZXMgYXJlIHRlcm1pbmF0ZWQgd2l0aCBhICdcbicuCglSZW1vdmUgb2Jzb2xldGUgY29tbWVudCBhYm91dCAnYWZ4cmVzLmgnIGNvbWluZyBiYWNrIGFmdGVyIGVkaXRpbmcgaW4gVkMuCglBZGRlZCBzdXBwb3J0IGZvciB0aGUgUlRGIHF1YWxpZmllciBpbiBSQyBmaWxlcy4KCgkqIG1zZG9zL2ludDIxLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudGVkIHRoZSBpbnQyMSBMRk4gcmVuYW1lIGZpbGUgZnVuY3Rpb24uCgoJKiBkbGxzL29sZTMyL29sZTIuYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBSZWxlYXNlU3RnTWVkaXVtIGZvciBNZXRhRmlsZVBpY3QgdHlwZXMuCgoJKiBkbGxzL3dpbmVwcy90ZXh0LmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglGaXggZm9yIHJvdGF0ZWQgdGV4dCB3aGVuIGxwRHggaXMgc3BlY2lmaWVkLgoJQmV0dGVyIGhhbmRsaW5nIG9mIGN1bXVsYXRpdmUgcm91bmRpbmcgZXJyb3JzLgoKCSogZGxscy9jb21jdGwzMi9wYWdlci5jOgoJU3VzYW4gRmFybGV5IDxzdXNhbkBjb2Rld2VhdmVycy5jb20+CglIYW5kbGUgdGhlIENDU19OT1JFU0laRSBzdHlsZS4KCUNoYW5nZSB0aGUgc2Nyb2xsIGRlbHRhIG9ubHkgd2hlbiB0aGUgYXBwIHJlc3BvbmRzIHRvIHRoZSBQR05fTk9USUZZIG1zZy4KCgkqIGdyYXBoaWNzL3gxMWRydi9kaWIuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJSW4gQ29weURJQlNlY3Rpb24sIHVzZSBzb3VyY2UgRElCIGNvbG9ybWFwIGluc3RlYWQgaWYgbm8gcGFsZXR0ZSBoYXMKCWJlZW4gc2VsZWN0ZWQgaW50byB0aGUgc291cmNlIERDLCB0byB3b3JrIGFyb3VuZCBzb21lIFgxMS1pbXBvc2VkCglESUJzZWN0aW9uIGltcGxlbWVudGF0aW9uIGRlZmljaWVuY2llcy4KCgkqIGRsbHMvZGRyYXcvZGRyYXcvZGdhMi5jOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglGaXggREdBMiBtb2RlIHNldHRpbmcgdG8gdXNlIHRoZSBjb3JyZWN0IGNvbG9yIGRlcHRoLgoKCSogdG9vbHMvd2luZWNvbmY6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gZml4IHdpbmVjb25mIHRvIGdlbmVyYXRlIG5ldyBjb25maWcgZmlsZSBmb3JtYXQKCS0gZml4IHNvbWUgdmFyaWFibGUgY2hlY2tzCgoJKiBvYmplY3RzL2VuaG1ldGFmaWxlLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkIHN1cHBvcnQgZm9yIEVNUl9FWFRURVhUT1VUQSBhbmQgRU1SX0NSRUFURU1PTk9CUlVTSCBlbmhhbmNlZAoJbWV0YWZpbGUgcmVjb3Jkcy4gQmV0dGVyIGltcGxlbWVudGF0aW9uIG9mIEVNUl9TVFJFVENIRElCSVRTIGFuZAoJRU1SX0VYVFRFWFRPVVRXLgoKCSogcmVsYXkzMi9zbm9vcC5jOgoJTGF3c29uIFdoaXRuZXkgPGxhd3Nvbl93aGl0bmV5QGp1bm8uY29tPgoJTWFrZSBzbm9vcCBzcGVjaWZpYyBjYXNlIGluc2Vuc2l0aXZlLgoKCSogZGxscy9kY2ltYW4zMi9kY2ltYW4zMi5zcGVjLCBkbGxzL2RjaW1hbjMyL2RjaW1hbl9tYWluLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIERDSUNsb3NlUHJvdmlkZXIgc3R1Yi4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYzoKCUphbWVzIEFiYmF0aWVsbG8gPGphYmJleUBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgSVNoZWxsTGluazxBfFc+X2ZuR2V0V29ya2luZ0RpcmVjdG9yeSwKCUlTaGVsbExpbms8QXxXPl9mbkdldEFyZ3VtZW50cywgSVNoZWxsTGluazxBfFc+X2ZuR2V0SWNvbkxvY2F0aW9uLgoKCSogY29udHJvbHMvY29tYm8uYzoKCUphbWVzIEFiYmF0aWVsbG8gPGphYmJleUBjb2Rld2VhdmVycy5jb20+CglPd25lcmRyYXduIGNvbWJvIGJveGVzIHNob3VsZCB1c2UgT0RTX0NPTUJPQk9YRURJVCBpbiB0aGUgaXRlbVN0YXRlLgoKCSogaW5jbHVkZS9jb21tY3RybC5oOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gRml4IHR5cG8gaW4gcHJldmlvdXMgY2hhbmdlLgoJLSBBZGQgc3RydWN0dXJlcyBmb3IgQ0JFTl9JTlNFUlRJVEVNIG5vdGlmeSBtZXNzYWdlLgoKCSogdG9vbHMvd3JjL3V0aWxzLmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJUmVtb3ZlIHhtYWxsb2MveHJlYWxsb2MgbGltaXRzIGZvciBsYXJnZSBiaW5hcnkgcmVzb3VyY2VzLgoKCSogZ3JhcGhpY3MveDExZHJ2L3RleHQuYzoKCUVyaWMgS29obCA8ZWtvaGxAY29kZXdlYXZlcnMuY29tPgoJRml4ZWQgdGV4dCBzaXplIGNhbGN1bGF0aW9uIGJ1ZyBpbiBHZXRUZXh0RXh0ZW50UG9pbnQoKSBmb3Igd2luZG93IGRjJ3MuCgoJKiBkb2N1bWVudGF0aW9uL2RvY3VtZW50YXRpb24uc2dtbDoKCUpvaG4gUi4gU2hlZXRzIDxqc2hlZXRzQGNvZGV3ZWF2ZXJzLmNvbT4KCU5ldyBzZWN0aW9uIGFib3V0IHdyaXRpbmcgZG9jcyBpbiBEb2NCb29rIGFuZCBkZWFsaW5nIHdpdGggdGhlIFdpbmUKCVNHTUwgYnVpbGQgc3lzdGVtOyBoYWxmIGRvbmUsIGJ1dCBhIGdvb2Qgc3RhcnQuCgoJKiBkbGxzL3dpbm5scy93aW5ubHMuYywgZGxscy93aW5ubHMvd2lubmxzLnNwZWM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCUEgY291cGxlIG9mIHN0dWJzIGZvciBUZXJtaW5hbCBTZXJ2ZXIgQ2xpZW50IDE2IGJpdC4KCjIwMDEtMDEtMjkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBwcm9ncmFtcy9hdml0b29scy9NYWtlZmlsZS5pbjoKCU1hdHRoZXcgQ2xhcmtlIDxNYXR0aGV3X0NsYXJrZUBtaW5kbGluay5iYy5jYT4KCURvbid0IGFzc3VtZSAuc3BlYyBmaWxlcyBhcmUgZm91bmQgaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5LCBhcyB0aGlzCglpcyBub3QgdGhlIGNhc2Ugd2hlbiBidWlsZGluZyBvdXRzaWRlIHRoZSBzb3VyY2UgdHJlZS4KCgkqIGluY2x1ZGUvcXVldWUuaCwgd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3MvcXVldWUuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGltbWQxLmluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJU3luY2hyb25pemUgYWNjZXNzIHRvIE1FU1NBR0VRVUVVRSBtZW1iZXJzLgoKCSogZGxscy9tc3ZpZGVvL21zdmlkZW9fbWFpbi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBzb21lIG1vcmUgMTYtPjMyIG1hcHBpbmdzIGZvciBJQ00qIG1lc3NhZ2VzLgoKCSogZGxscy9kZHJhdy9kZHJhdy9tYWluLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCWR2aWRlby5kbGwgZm9yZ2V0cyB0byBzZXQgdGhlIEREU0RfQ0FQUyBmbGFnLCBqdXN0IGFzc3VtZSBpdCBzZXQuCglPdXRwdXQgbW9yZSBkZWJ1ZyBpbmZvIG9uIGZhaWx1cmUuCgoJKiBvYmplY3RzL2VuaG1ldGFmaWxlLmM6CglFcmljIEtvaGwgPGVrb2hsQGNvZGV3ZWF2ZXJzLmNvbT4KCURpc2FibGVkIHNldHRpbmcgb2Ygd2luZG93IG9yaWdpbiBmcm9tIGFuIEVNRi4KCjIwMDEtMDEtMjggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL01ha2VmaWxlLmluLCBkbGxzL21zdmlkZW8vbXN2ZnczMi5zcGVjLCBkbGxzL21zdmlkZW8vbXN2aWRlb19tYWluLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUltcGxlbWVudGVkIFZpZGVvQ2FwRHJpdmVyRGVzY0FuZFZlci4KCgkqIGRsbHMvdXNlci91c2VyLnNwZWMsIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL3VzZXIuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgYSBmZXcgbWlzc2luZyBleHBvcnRzLgoKCSogZGxscy9kaW5wdXQva2V5Ym9hcmQvbWFpbi5jOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglEb24ndCBkaXNhYmxlIGtleWJvYXJkIGF1dG9yZXBlYXQsIHNpbmNlIGF1dG9yZXBlYXQgaXMgbm93IGRldGVjdGFibGUuCgoJKiBkbGxzL2RkcmF3L2RzdXJmYWNlL21haW4uYywgZGxscy9kZHJhdy9kZHJhdy9kZ2EyLmMsIGRsbHMvZGRyYXcvZGRyYXcvdXNlci5jLCBkbGxzL2RkcmF3L2RkcmF3L3h2aWRtb2RlLmMsIGRsbHMvZGRyYXcvZGRyYXdfcHJpdmF0ZS5oOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CgktIFNpZWRsZXIzIGFwcGVhcnMgdG8gaGF2ZSByYXRoZXIgbGltaXRlZCBidWZmZXJzIGZvciBkZXZpY2UvZGVzY3JpcHRpb24KCSAgc3RyaW5ncyBhbmQgY3Jhc2hlcyB3aXRoIHRob3NlIGxvbmcgc3RyaW5ncy4gU2hvcnRlbmVkIHRob3NlIHN0cmluZ3MuCgktIEFsc28gZHJpdmVyIG5lZWRzIHRvIGJlICJkaXNwbGF5IiBmb3IgZGlzcGxheSBkZXZpY2VzIChzb21lIG90aGVyCgkgIHByb2dyYW1zIHJlbHkgb24gdGhhdCBpbmZvIEkgc2VlbSB0byByZW1lbWJlcikuCgktIEZpeGVkIERTdXJmYWNlOjpHZXRTdXJmYWNlRGVzYyB0byBub3QganVzdCBibGluZGx5IGNvcHkgYQoJICBERFNVUkZBQ0VERVNDMiBzdHJ1Y3Qgb3ZlciBhIHNtYWxsZXIgRERTVVJGQUNFREVTQyBvbmUuCgoJKiBkbGxzL2RpbnB1dC9kZXZpY2VfcHJpdmF0ZS5oLCBkbGxzL2RpbnB1dC9kaW5wdXRfbWFpbi5jLCBkbGxzL2RpbnB1dC9qb3lzdGljay9saW51eC5jLCBkbGxzL2RpbnB1dC9qb3lzdGljay9saW51eGlucHV0LmMsIGRsbHMvZGlucHV0L21vdXNlL21haW4uYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJR2F2cmllbCBTdGF0ZSA8Z2F2QHRyYW5zZ2FtaW5nLmNvbT4KCUltcGxlbWVudGVkIGNpcmN1bGFyIGJ1ZmZlcmluZyBmb3IgdGhlIGRpbnB1dCBtb3VzZSBkZXZpY2UuCglNYXBwZWQgdGhlIG1vdXNlIHdhcnAgb24gdGhlIGNlbnRlciBvZiB0aGUgY29vcGVyYXRpdmUgd2luZG93LCB3aGljaAoJc2hvdWxkIG1ha2Ugd2luZG93ZWQgZ2FtZXMgd29yayBiZXR0ZXIgaW4gbWFuYWdlZCBtb2RlLgoKCSogZGxscy93aW5lcHMvaW5pdC5jLCBkbGxzL3dpbmVwcy9wcy5jLCBkbGxzL3dpbmVwcy9wc2Rydi5oOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJVGFrZSBpbnRvIGFjY291bnQgdW5wcmludGFibGUgbWFyZ2lucyBpbiBwc2Rydi4KCgkqIGRsbHMvd2luZXBzL2RyaXZlci5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCXBzZHJ2J3MgRGV2aWNlQ2FwYWJpbGl0aWVzIHNob3VsZCBsaXN0IERNQklOX0FVVE8gYXMgYW4gYXZhaWxhYmxlCgliaW4uCgoJKiBkbGxzL3dpbmVwcy9wcGQuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGQgIk9ubHlPbmUiIHBhcGVyIHNvdXJjZSwgdXNlZCBieSB0aGUgQWNyb2JhdCBEaXN0aWxsZXIgUFBELgoKCSogZGxscy9tc3ZjcnQvbWF0aC5jOgoJSm9zaCBEdUJvaXMgPGR1Ym9pc2pAY29kZXdlYXZlcnMuY29tPgoJRml4ZWQgdHlwby4KCgkqIGRsbHMvd2lubW0vbWNpLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIHNvbWUgbWNpIHN0cmluZyBwYXJzaW5nIGlzc3Vlcy4KCUFkZGVkIG1vcmUgbWFwcGluZ3MgMzJBVG8xNi4KCgkqIGRsbHMvd2lubW0vbWNpc2VxL21jaW1pZGkuYywgZGxscy93aW5tbS9tY2l3YXZlL21jaXdhdmUuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJU2ltcGxpZmllZCBtZW1vcnkgYWxsb2NhdGlvbiBmb3IgYXN5bmNocm9ub3VzIE1DSSBtZXNzYWdlIGhhbmRsaW5nLgoKCSogZGxscy93aW5tbS9tY2ljZGEvbWNpY2RhLmRydi5zcGVjLCBkbGxzL3dpbm1tL21jaXNlcS9tY2lzZXEuZHJ2LnNwZWMsIGRsbHMvd2lubW0vbWNpd2F2ZS9tY2l3YXZlLmRydi5zcGVjOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglEZWxheSBpbXBvcnRpbmcgdXNlcjMyIChvbmx5IHVzZWQgZm9yIGNvbmZpZ3VyYXRpb24pLgoKCSogZGxscy9tc3ZpZGVvL21zdmlkZW9fbWFpbi5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBhIGZldyBvZGRpdGllcy4KCgkqIGRsbHMvbXN2aWRlby9kcmF3ZGliLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIGEgYml0IG1vcmUgb2YgZmxhZ3MgaGFuZGxpbmcgaW4gZHJhd2RpYiBmdW5jdGlvbnMuCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmM6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5AY29kZXdlYXZlcnMuY29tPgoJUHV0IGEgJ1xuJyBhdCB0aGUgZW5kIG9mIHRoZSBGSVhNRSB0byBwcmV2ZW50IHZlcnkgb2RkIGFuZCBkaWZmaWN1bHQKCXRvIGRlYnVnIGNyYXNoZXMgZHVlIHRvIG92ZXJmbG93aW5nIG9mIHRoZSBkZWJ1ZyBpbmZvJ3Mgb3V0cHV0IGJ1ZmZlci4KCgkqIHRvb2xzL3NwZWNtYWtlci9SRUFETUUsIHRvb2xzL3NwZWNtYWtlci9tYWluLmMsIHRvb2xzL3NwZWNtYWtlci9tc21hbmdsZS5jLCB0b29scy9zcGVjbWFrZXIvb3V0cHV0LmMsIHRvb2xzL3NwZWNtYWtlci9zcGVjbWFrZXIuaDoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglJbXByb3ZlIG5hbWUgZGVtYW5nbGluZywgYWRkICdkZW1hbmdsZSBzeW1ib2wnIG9wdGlvbi4KCjIwMDEtMDEtMjYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB0b29scy93aW5lbGF1bmNoZXIuaW46CglKZXJlbXkgV2hpdGUgPGp3aGl0ZUBjb2Rld2VhdmVycy5jb20+CglSZW1vdmUgdGhlIGtleXdvcmQgJ2Z1bmN0aW9uJywgYXMgcmVxdWVzdGVkIGJ5IFJvYmVydCBMdWJlcmRhLgoKCSogbWlzYy9yZWdpc3RyeS5jOgoJTWFydGluIFBpbGthIDxtcGlsa2FAY29kZXdlYXZlcnMuY29tPgoJRml4ZWQgdHlwbyB3aGljaCBjYXVzZWQgdGhlIFdyaXRldG9Ib21lUmVnaXN0cnlGaWxlcyBvcHRpb24gdG8gYmUKCWlnbm9yZWQuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWJvZXguYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CgktIFJld3JpdGUgV01fQ1JFQVRFIHRvIG1hdGNoIG5hdGl2ZSAoYWxsb2NhdGluZyBvd24gRWRpdCBjb250cm9sLCBldGMpLgoJLSBJbXBsZW1lbnQgYWRkaXRpb25hbCBXTkRQUk9DcyBmb3IgdGhlIENvbWJvIGFuZCBFZGl0IGNvbnRyb2xzIHRvCgkgIGhhbmRsZSBkaWZmZXJlbnQgZnVuY3Rpb25zLgoJLSBJbXBsZW1lbnQgQ0JFTV9TRVRDVVJTRUwgYW5kIENCRU1fSEFTRURJVENIQU5HRUQuCgoJKiBjb250cm9scy9jb21iby5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gV2hlbiBwYWludGluZyB0aGUgdGV4dCwgaWYgdGhlIGNvbnRyb2wgaXMgT1dORVJEUkFXTiB0aGUgaXNzdWUgdGhlCgkgIFdNX0RSQVdJVEVNIG1lc3NhZ2UuCgktIFNldCB0aGUgZm9jdXNlZCBzdGF0dXMgYXQgdGhlIGVuZCBvZiB0aGUgZW5kIG9mIHRoZSBTZXRmb2N1cyByb3V0aW5lLgoJLSBGbGlwIHRoZSBvcmRlciBvZiB1cGRhdGluZyB0aGUgbGlzdCBib3ggYW5kIGlzc3VpbmcgdGhlIFdNX05PVElGWQoJICBmb3IgQ0JOX0VESVRVUERBVEUgdG8gbWF0Y2ggbmF0aXZlLgoKCSogaW5jbHVkZS9zZXJ2ZXIuaCwgc2VydmVyL2RlYnVnZ2VyLmMsIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci90cmFjZS5jLCB3aW4zMi9leGNlcHQuYywgZGxscy9udGRsbC9leGNlcHRpb24uYzoKCU1hZGUgZXhjZXB0aW9uX2V2ZW50X3JlcXVlc3Qgbm9uLWJsb2NraW5nLCBhbmQgYWRkZWQKCWdldF9leGNlcHRpb25fc3RhdHVzIHRvIHJldHJpZXZlIHRoZSBleGNlcHRpb24gcmVzdWx0IHJldHVybmVkIGJ5IHRoZQoJZGVidWdnZXIuCgoJKiB3aW5kb3dzL3N5c3BhcmFtcy5jLCB3aW5kb3dzL3VzZXIuYywgd2luZG93cy9tdWx0aW1vbi5jLCB3aW5kb3dzL3BhaW50aW5nLmMsIGRsbHMvd2lubW0vbWNpc2VxL21jaW1pZGkuYywgZGxscy93aW5tbS9taWRpbWFwL21pZGltYXAuYywgZGxscy93aW5tbS93YXZlbWFwL3dhdmVtYXAuYywgZGxscy93c29jazMyL3NvY2tldC5jLCBncmFwaGljcy94MTFkcnYvZGliLmMsIGluY2x1ZGUvaGVhcC5oLCBtZW1vcnkvY29kZXBhZ2UuYywgbXNkb3MvZG9zYXNwaS5jLCBtc2Rvcy9pbnQxMS5jLCBtc2Rvcy9pbnQyZi5jLCBtc2Rvcy9pbnQzMy5jLCBvYmplY3RzL2RpYi5jLCBkbGxzL29sZWF1dDMyL2Nvbm5wdC5jLCBkbGxzL29sZWF1dDMyL29sZXBpY3R1cmUuYywgZGxscy9yaWNoZWRpdC9yaWNoZWRpdC5jLCBkbGxzL3NldHVwYXBpL2luZnBhcnNlLmMsIGRsbHMvc2hkb2N2dy9jbGFzc2luZm8uYywgZGxscy9zaGRvY3Z3L2V2ZW50cy5jLCBkbGxzL3NoZG9jdncvZmFjdG9yeS5jLCBkbGxzL3NoZG9jdncvb2xlb2JqZWN0LmMsIGRsbHMvc2hkb2N2dy9zaGRvY3Z3X21haW4uYywgZGxscy9zaGx3YXBpL29yZGluYWwuYywgZGxscy9zaGx3YXBpL3VybC5jLCBkbGxzL3R0eWRydi9iaXRtYXAuYywgZGxscy91c2VyL2JpZGkxNi5jLCBkbGxzL3dpbm1tL21jaWFuaW0vbWNpYW5pbS5jLCBkbGxzL3dpbm1tL21jaWNkYS9tY2ljZGEuYywgZGxscy9kcGxheXgvZHBjbGFzc2ZhY3RvcnkuYywgZGxscy9kcGxheXgvZHBsYXkuYywgZGxscy9kcGxheXgvZHBsYXlzcC5jLCBkbGxzL2RwbGF5eC9kcGxheXhfZ2xvYmFsLmMsIGRsbHMvZHBsYXl4L2RwbGF5eF9tZXNzYWdlcy5jLCBkbGxzL2RwbGF5eC9uYW1lX3NlcnZlci5jLCBkbGxzL2dkaS9nZGlfbWFpbi5jLCBkbGxzL2ltYWdlaGxwL2FjY2Vzcy5jLCBkbGxzL2tlcm5lbC9rZXJuZWxfbWFpbi5jLCBkbGxzL21zYWNtL2ZpbHRlci5jLCBkbGxzL21zYWNtL2Zvcm1hdC5jLCBkbGxzL21zYWNtL3BjbWNvbnZlcnRlci5jLCBkbGxzL21zYWNtL3N0cmVhbS5jLCBkbGxzL21zdmlkZW8vZHJhd2RpYi5jLCBkbGxzL250ZGxsL3JlZy5jLCBkbGxzL29sZTMyL2FudGltb25pa2VyLmMsIGRsbHMvb2xlMzIvY2xpcGJvYXJkLmMsIGRsbHMvb2xlMzIvY29tcG9zaXRlbW9uaWtlci5jLCBkbGxzL29sZTMyL2RhdGFjYWNoZS5jLCBkbGxzL29sZTMyL2RlZmF1bHRoYW5kbGVyLmMsIGRsbHMvb2xlMzIvZXJyb3JpbmZvLmMsIGRsbHMvb2xlMzIvaXRlbW1vbmlrZXIuYywgZGxscy9vbGUzMi9tb25pa2VyLmMsIGRsbHMvb2xlMzIvb2xlMmltcGwuYywgZGxscy9jb21jdGwzMi90cmFja2Jhci5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZ2Jyb3dzZXIuYywgZGxscy9jb21tZGxnL2ZpbmRkbGczMi5jLCBkbGxzL2RkcmF3L2NvbnZlcnQuYywgZGxscy9kZHJhdy9kY2xpcHBlci9tYWluLmMsIGRsbHMvZGRyYXcvZGRyYXcvdXNlci5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL2RpYi5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL3VzZXIuYywgZGxscy9kZHJhdy9kc3VyZmFjZS93bmRwcm9jLmMsIGRsbHMvZGlucHV0L2RldmljZS5jLCBkbGxzL2RpbnB1dC9kaW5wdXRfbWFpbi5jLCBkbGxzL2NvbWN0bDMyL2NvbWJvZXguYywgZGxscy9jb21jdGwzMi9mbGF0c2IuYywgZGxscy9jb21jdGwzMi9ob3RrZXkuYywgZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYywgZGxscy9jb21jdGwzMi9pcGFkZHJlc3MuYywgZGxscy9jb21jdGwzMi9tb250aGNhbC5jLCBkbGxzL2NvbWN0bDMyL25hdGl2ZWZvbnQuYywgZGxscy9jb21jdGwzMi9wYWdlci5jLCBkbGxzL2NvbWN0bDMyL3Byb2dyZXNzLmMsIGRsbHMvY29tY3RsMzIvc3RhdHVzLmMsIGRsbHMvYWR2YXBpMzIvc2VydmljZS5jLCBkbGxzL2NvbWN0bDMyL2FuaW1hdGUuYzoKCUphbWVzIEp1cmFuIDxqYW1lc2p1cmFuQGFsdW1uaS5wc3UuZWR1PgoJQWRkIDxzdHJpbmcuaD4gdG8gZmlsZXMgdGhhdCBuZWVkZWQgaXQuCgoJKiBmaWxlcy9maWxlLmMsIG1lbW9yeS9hdG9tLmMsIHByb2dyYW1zL3JlZ2FwaS9yZWdhcGkuYywgd2luZG93cy9kY2UuYywgd2luZG93cy93aW5oZWxwLmMsIHdpbmRvd3Mvd2lucHJvYy5jLCBkbGxzL2NvbW1kbGcvY29sb3JkbGcuYywgZGxscy9vbGUzMi9maWxlbW9uaWtlci5jLCBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmMsIGRsbHMvdXNlci91c2VyLnNwZWMsIGRsbHMvd2lubW0vbW1zeXN0ZW0uYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJU29tZSBtb3JlIGNsZWFudXBzLgoKCSogZGxscy9kaW5wdXQvam95c3RpY2svbGludXhpbnB1dC5jOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglDaGVjayB0aGF0IHRoZSBsaW51eCAyLjQgZXZlbnQgaW50ZXJmYWNlIGlzIGF2YWlsYWJsZSBiZWZvcmUgY3JlYXRpbmcKCWEgZGlucHV0IGRldmljZSBiYXNlZCBvbiBpdC4KCgkqIGRsbHMvd2luZXBzL3RleHQuYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUhhbmRsZSB0aGUgbHBEeCBhcnJheSBwcm9wZXJseS4KCgkqIHdpbmRvd3Mvd2lucG9zLmM6CglNYXJ0aW4gUGlsa2EgPG1waWxrYUBjb2Rld2VhdmVycy5jb20+CglGaXhlZCBTV19SRVNUT1JFIGhhbmRsaW5nLgoKCSogY29udHJvbHMvZWRpdC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCURvIG5vdCBub3RpZnkgcGFyZW50IG9mIHRoZSBFZGl0IGNvbnRyb2wgb24gV01fU0VUVEVYVCB3aGVuIEVkaXQgaXMKCXBhcnQgb2YgdGhlIENvbWJvQm94LgoKCSogZGxscy9jb21jdGwzMi9yZWJhci5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gbWFrZSBoaWRkZW4gYmFuZHMgaGF2ZSB2YWxpZCAoMCB3aWR0aCkgY2hpbGQgd2luZG93IGFyZWFzCgktIHdoZW4gaGlkaW5nIGEgYmFuZCwgZG9uJ3Qgc2hvdyB0aGUgd2luZG93LCBoaWRlIGl0LgoKCSogZGxscy9rZXJuZWwvZGVidWdnZXIuYywgaW5jbHVkZS9zZXJ2ZXIuaCwgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2VydmVyL2RlYnVnZ2VyLmMsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci90cmFjZS5jOgoJQ2hhbmdlZCB3YWl0X3Byb2Nlc3MgYW5kIHdhaXRfZGVidWdfZXZlbnQgcmVxdWVzdHMgdG8gbmV2ZXIgYmxvY2s7Cgl3YWl0aW5nIGlzIGFsd2F5cyBkb25lIHRocm91Z2ggV2FpdEZvclNpbmdsZU9iamVjdCgpLgoKCSogZGxscy9rZXJuZWwvY29tbS5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglEb24ndCBvcGVuIHRoZSBjb21tIGhhbmRsZSB3aXRoIEdFTkVSSUNfV1JJVEUgdmlhIEZJTEVfR2V0VW5peEhhbmRsZS4KCgkqIHdpbmRvd3MvZGVmd25kLmMsIGluY2x1ZGUvd2luLmg6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJUmVwbGFjZSAxNi1iaXQgY2FsbHMgaW4gRGVmV2luZG93UHJvYyBieSAzMi1iaXQsIHByZWZlcnJpbmcgdW5pY29kZQoJQVBJIGNhbGxzLgoKMjAwMS0wMS0yNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvdXNlci93c3ByaW50Zi5jOgoJR290IHJpZCBvZiBXUFJJTlRGX0V4dHJhY3RWQVB0ci4KCgkqIGRsbHMvc2hkb2N2dy9zaGRvY3Z3LnNwZWMsIGRsbHMvd2luMzJzL3dpbjMyczE2LnNwZWMsIGRsbHMvd2luZWRvcy9kb3N2bS5jLCBkbGxzL3dpbm1tL3dpbmVvc3Mvb3NzLmMsIGluY2x1ZGUvZG9zZXhlLmgsIHRvb2xzL3NwZWNtYWtlci9vdXRwdXQuYywgZGxscy9kZHJhdy9kZHJhdy9kZ2EyLmMsIGRsbHMvZGRyYXcvZGRyYXcvdGh1bmtzLmMsIGRsbHMvZGRyYXcvZGRyYXcvdXNlci5jLCBkbGxzL2RkcmF3L2RkcmF3L3h2aWRtb2RlLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UvZmFrZXpidWZmZXIuYywgZGxscy9kZHJhdy9zdHJ1Y3RfY29udmVydC5jLCBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSBpc3N1ZXMgZm91bmQgYnkgd2luYXBpX2NoZWNrLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL21zdmNydC5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9vbGVhdXQzMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi93aW5lZG9zLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaS5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9jaGVjaywgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9sb2NhbC5wbToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJTWlub3IgYnVnZml4ZXMuCgoJKiB3aW5kb3dzL2NsaXBib2FyZC5jLCB3aW5kb3dzL2N1cnNvcmljb24uYywgd2luZG93cy9kaWFsb2cuYywgd2luZG93cy9kcml2ZXIuYywgd2luZG93cy9ob29rLmMsIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL3F1ZXVlLmMsIHdpbmRvd3Mvc2Nyb2xsLmMsIHdpbmRvd3Mvc3lzY29sb3IuYywgd2luZG93cy91c2VyLmMsIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3Mvd2lucG9zLmMsIGNvbnRyb2xzL2Rlc2t0b3AuYywgY29udHJvbHMvbWVudS5jLCBjb250cm9scy9zY3JvbGwuYywgY29udHJvbHMvdWl0b29scy5jLCBkbGxzL2tlcm5lbC9jb21tLmMsIGRsbHMva2VybmVsL2RlYnVnZ2VyLmMsIGRsbHMva2VybmVsL2Zvcm1hdF9tc2cuYywgZGxscy9rZXJuZWwva2VybmVsX21haW4uYywgZGxscy9rZXJuZWwvc3RyZXNzLmMsIGRsbHMva2VybmVsL3N5bmMuYywgZGxscy9rZXJuZWwvdGh1bmsuYywgZGxscy9rZXJuZWwvdGltZS5jLCBkbGxzL2tlcm5lbC90b29saGVscC5jLCBkbGxzL2tlcm5lbC91dHRodW5rLmMsIGRsbHMva2VybmVsL3dpbjg3ZW0uYywgZGxscy9rZXJuZWwvd293dGh1bmsuYywgZGxscy9wc2FwaS9wc2FwaV9tYWluLmMsIGRsbHMvdXNlci9iaWRpMTYuYywgZGxscy91c2VyL2RkZW1sLmMsIGRsbHMvdXNlci9leHRpY29uLmMsIGRsbHMvdXNlci9sc3RyLmMsIGRsbHMvdXNlci9taXNjLmMsIGRsbHMvdXNlci9yZXNvdXJjZS5jLCBkbGxzL3VzZXIvdGV4dC5jLCBsb2FkZXIvdGFzay5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglEb2N1bWVudGF0aW9uIG9yZGluYWwgZml4ZXMuCgoJKiBtaXNjL3JlZ2lzdHJ5LmM6CglGaXhlZCB0eXBvIGluIEhLRVlfVVNFUlMvLkRlZmF1bHQgY3JlYXRpb24uCgoJKiBkbGxzL2NvbWN0bDMyL3RhYi5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAYXNpLmZyPgoJRG9uJ3Qgc2VuZCBub3RpZmljYXRpb25zIGZvciB0aGUgaW5pdGlhbCBkaXNwbGF5IG9mIHRoZSBmaXJzdCB0YWIgb2YKCXRoZSBjb250cm9sLgoKCSogd2luZG93cy9zcHkuYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQGFzaS5mcj4KCUFkZGVkIGEgZmV3IG1lc3NhZ2VzIGFuZCBub3RpZmljYXRpb25zLgoKCSogb2JqZWN0cy9lbmhtZXRhZmlsZS5jOgoJRXJpYyBLb2hsIDxla29obEBjb2Rld2VhdmVycy5jb20+CglEaXNhYmxlZCBzZXR0aW5nIG9mIHZpZXdwb3J0IG9yaWdpbiBmcm9tIGFuIEVNRi4KCgkqIHdpbmRvd3Mvd2lucG9zLmM6CglTdXNhbiBGYXJsZXkgPHN1c2FuQGNvZGV3ZWF2ZXJzLmNvbT4KCUFsd2F5cyByZXN0b3JlIHRoZSBiaXRfZ3Jhdml0eSB0byBCR0ZvcmdldCBhZnRlciB1c2luZyBCR05vcnRod2VzdCB0bwoJY29weSBiaXRzIGR1cmluZyBTZXRXaW5kb3dQb3MuCgoJKiB3aW5lZGVmYXVsdC5yZWc6CglKb2huIFIuIFNoZWV0cyA8anNoZWV0c0Bjb2Rld2VhdmVycy5jb20+CglBZGRlZCB0aGUgbmVjZXNzYXJ5IHJlZ2lzdHJ5IGVudHJpZXMgZm9yIHRoZSBNb3ppbGxhIEFjdGl2ZVggY29udHJvbC4KCjIwMDEtMDEtMjQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL2RlZnduZC5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglPbmx5IHNldCB3aW5kb3cgdGV4dCBmb3IgV01fTkNDUkVBVEUgaW4gRGVmV2luZG93UHJvYyooKSBpbiBjYXNlCglscHN6TmFtZSBpcyBhIHN0cmluZyAoaS5lLiBjaGVjayBISVdPUkQpLgoKCSogZ3JhcGhpY3MveDExZHJ2L29lbWJpdG1hcC5jLCBpbmNsdWRlL2JpdG1hcHMvb2JtX3JhZGlvY2hlY2ssIGluY2x1ZGUvd2ludXNlci5oOgoJUmVtb3ZlZCBub24tc3RhbmRhcmQgT0JNX1JBRElPQ0hFQ0sgYml0bWFwLgoKCSogY29udHJvbHMvbWVudS5jLCBjb250cm9scy91aXRvb2xzLmMsIHdpbmRvd3Mvbm9uY2xpZW50LmMsIHdpbmRvd3Mvc3lzbWV0cmljcy5jOgoJVXNlIERyYXdGcmFtZUNvbnRyb2woKSBpbnN0ZWFkIG9mIE9FTSBiaXRtYXBzIHRvIHBhaW50IGNhcHRpb24gYnV0dG9ucwoJYW5kIG1lbnUgY2hlY2sgbWFya3MuCgoJKiBkbGxzL3dpbmVwcy9mb250LmMsIGRsbHMvd2luZXBzL2dyYXBoaWNzLmMsIGRsbHMvd2luZXBzL3Blbi5jLCBkbGxzL3dpbmVwcy90ZXh0LmM6CglFcmljIEtvaGwgPGVrb2hsQGNvZGV3ZWF2ZXJzLmNvbT4KCVBhcnRpYWwgaW1wbGVtZW50YXRpb24gb2Ygd29ybGQgdHJhbnNmb3JtIHN1cHBvcnQuCgoJKiBvYmplY3RzL2VuaG1ldGFmaWxlLmM6CglFcmljIEtvaGwgPGVrb2hsQGNvZGV3ZWF2ZXJzLmNvbT4KCVNldmVyYWwgZml4ZXMgZm9yIHBsYXlpbmcgZW5oYW5jZWQgbWV0YWZpbGVzIGluIGEgZ2l2ZW4gcmVjdGFuZ2xlLgoKCSogZ3JhcGhpY3MveDExZHJ2L2dyYXBoaWNzLmMsIGdyYXBoaWNzL3gxMWRydi9wZW4uYywgZ3JhcGhpY3MveDExZHJ2L3RleHQuYywgZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsIGluY2x1ZGUvZ2RpLmg6CglFcmljIEtvaGwgPGVrb2hsQGNvZGV3ZWF2ZXJzLmNvbT4KCVBhcnRpYWwgaW1wbGVtZW50YXRpb24gb2Ygd29ybGQgdHJhbnNmb3JtIHN1cHBvcnQuCgoJKiBkb2N1bWVudGF0aW9uL3dpbmUubWFuLmluLCBvYmplY3RzL2ZvbnQuYywgUkVBRE1FLCBkZWJ1Z2dlci9SRUFETUU6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCURvY3VtZW50YXRpb24gdXBkYXRlcy4KCgkqIGRvY3VtZW50YXRpb24vTWFrZWZpbGUuaW4sIGRvY3VtZW50YXRpb24vcnVubmluZy5zZ21sLCBkb2N1bWVudGF0aW9uL3dpbmUtZG9jLnNnbWwsIGRvY3VtZW50YXRpb24vd2luZWxpYi1iaW5kbGxzLnNnbWwsIGRvY3VtZW50YXRpb24vd2luZWxpYi1pbnRyby5zZ21sLCBkb2N1bWVudGF0aW9uL3dpbmVsaWItbWZjLnNnbWwsIGRvY3VtZW50YXRpb24vd2luZWxpYi1wa2cuc2dtbCwgZG9jdW1lbnRhdGlvbi93aW5lbGliLXBvcnRpbmcuc2dtbCwgZG9jdW1lbnRhdGlvbi93aW5lbGliLXRvb2xraXQuc2dtbCwgZG9jdW1lbnRhdGlvbi93aW5lbGliLXVzZXIuc2dtbDoKCUpvaG4gUi4gU2hlZXRzIDxqc2hlZXRzQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gU3BsaXQgV2luZWxpYiBVc2VyIEd1aWRlIGludG8gc21hbGxlciBmaWxlcyBmb3IgZWFzaWVyIG1haW50ZW5hbmNlCgkgIGFuZCBiZXR0ZXIgaW50ZWdyYXRpb24gd2l0aCBtYWtlX3dpbmVocS4KCS0gQWRkIHNvbWUgV2luZWxpYiBkb2NzIGZyb20gSm9uIEdyaWZmaXRocy4KCS0gRml4IGEgPHNlY3QyPiBwcm9ibGVtIGluIHJ1bm5pbmcuc2dtbC4KCjIwMDEtMDEtMjIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb250cm9scy9lZGl0LmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJUHJvdGVjdCByZWFkLW9ubHkgZWRpdCBjb250cm9sIGZyb20gbW9kaWZpY2F0aW9uLgoKCSogZGxscy9tc3ZjcnQvZXhpdC5jOgoJSm9uIEdyaWZmaXRocyA8dG50anBncmlmZkB0c254dC5jby51az4KCUltcGxlbWVudGVkIF9fZGxsb25leGl0LgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAYXNpLmZyPgoJTWlzYyBmaXhlcyBpbiBMSVNUVklFV19TZXRJbWFnZUxpc3QsIExJU1RWSUVXX1NldEl0ZW1Db3VudCwKCUxJU1RWSUVXX1VwZGF0ZVNpemUuCgoJKiBmaWxlcy9wcm9maWxlLmM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBhc2kuZnI+CglEaXNwbGF5IHRoZSBjb25maWcgZmlsZSBsb2NhdGlvbiBpbiB0aGUgaW5jb3JyZWN0IGNvbmZpZyBmaWxlIGVycm9yCgltZXNzYWdlLgoKCSogZGxscy9tc3ZjcnQvd2NzLmMsIGRsbHMvbnRkbGwvd2NzdHJpbmcuYzoKCUphbWVzIEp1cmFuIDxqYW1lc2p1cmFuQGFsdW1uaS5wc3UuZWR1PgoJVXNlIGludCBpbnN0ZWFkIG9mIFdDSEFSIGluIHZhX2FyZygpIChmaXhlcyBnY2MtY3VycmVudCBjb21waWxhdGlvbgoJcHJvYmxlbSkuCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFkZGVkIHZhcmlvdXMgZGVmaW5pdGlvbnMgKG1vc3RseSBtYWNyb3MpLgoJRml4ZWQgdHlwbyBpbiB0aGUgSEROX3tCRUdJTixFTkR9RFJBRyBtYWNyb3MuCglBZGRlZCBhIHBvaW50ZXIgdHlwZSBmb3IgSU1BR0VJTkZPLgoJRml4ZWQgdGhlIHJldHVybiB0eXBlIG9mIFRyZWVWaWV3X3tTZXRUb29sVGlwcyxHZXRUb29sVGlwc30uCglFdmVuIG1hY3JvcyBtdXN0IGNvbWUgaW4gQS9XIGFuZCBuZXV0cmFsIGZvcm0gKHNlZSB0aGUgTGlzdFZpZXdfIHNlcmllcykuCglGaXhlZCB0eXBvIGluIE1vbnRoQ2FsX1NldENvbG9yLgoKCSogaW5jbHVkZS9yaWNoZWRpdC5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBZGRlZCBDSEFSUkFOR0UuCgoJKiBpbmNsdWRlL3Byc2h0Lmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFkZGVkIFBTTl9HRVRPQkpFQ1QuCgoJKiBkbGxzL2RkcmF3L2RkcmF3L3h2aWRtb2RlLmM6CglKb3NoIER1Qm9pcyA8ZHVib2lzakBjb2Rld2VhdmVycy5jb20+CglJbmNsdWRlICdvcHRpb25zLmgnIGZvciBhIG5lZWRlZCBwcm90b3R5cGUuCgoJKiBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYywgaW5jbHVkZS9vbGVhdXRvLmg6CglKb3NoIER1Qm9pcyA8ZHVib2lzakBjb2Rld2VhdmVycy5jb20+CglDaGFuZ2VkIFZhckN5RnJvbUkxIHRvIHRha2UgYSBzaWduZWQgY2hhci4KCgkqIGNvbnRyb2xzL2NvbWJvLmMsIGRsbHMvbXN2Y3J0L21iY3MuYywgb2JqZWN0cy9iaXRtYXAuYywgdG9vbHMvc3BlY21ha2VyL291dHB1dC5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglUeXBvIGZpeGVzIGluIGNvbW1lbnRzLgoKCSogZGxscy9tc3ZjcnQvY3BwLmMsIGRsbHMvbXN2Y3J0L2RhdGEuYywgZGxscy9tc3ZjcnQvZGlyLmMsIGRsbHMvbXN2Y3J0L2Vudmlyb24uYywgZGxscy9tc3ZjcnQvZXJybm8uYywgZGxscy9tc3ZjcnQvZmlsZS5jLCBkbGxzL21zdmNydC9oZWFwLmMsIGRsbHMvbXN2Y3J0L2xvY2FsZS5jLCBkbGxzL21zdmNydC9tYXRoLmMsIGRsbHMvbXN2Y3J0L21pc2MuYywgZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWMsIGRsbHMvbXN2Y3J0L3Byb2Nlc3MuYywgZGxscy9tc3ZjcnQvdGhyZWFkLmMsIGRsbHMvbXN2Y3J0L3djcy5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCS0gTmV3IG1zdmNydCB1bmljb2RlIGZ1bmN0aW9ucywgd2luYXBpX2NoZWNrLy1XYWxsLy1XIGNsZWFuLgoJLSBGb3J3YXJkIHRvIG50ZGxsIHdoZXJlIHBvc3NpYmxlLgoJLSBGaXggc29tZSAuc3BlYyBlbnRyaWVzIHdpdGggaW5jb3JyZWN0IHBhcmFtZXRlcnMuCgoJKiBpbmNsdWRlL3dpbmUvb2JqX2NvbnRleHRtZW51Lmg6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJRml4ZWQgVW5pY29kZSBzdHJpbmdzLgoKCSogZGxscy9udGRsbC9jcml0c2VjdGlvbi5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCU1hZGUgU3BpbkNvdW50IEZJWE1FIGludG8gYSBUUkFDRS4KCgkqIGRlYnVnZ2VyL3N0YWJzLmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJSW5jcmVhc2VkIGRlYnVnZ2VyIGluY2x1ZGUgbGltaXQgdG8gNTEyLgoKCSogZGxscy93aW5hc3BpL2FzcGkuYywgZGxscy93aW5pbmV0L2h0dHAuYywgZGxscy93c29jazMyL3Byb3RvY29sLmMsIGluY2x1ZGUvd2lubnQuaCwgbG9hZGVyL3BlX2ltYWdlLmMsIHRvb2xzL3dpbmVidWlsZC9pbXBvcnQuYywgdG9vbHMvd2luZWJ1aWxkL21haW4uYywgZGxscy9kcGxheXgvZHBsb2JieS5jLCBkbGxzL21zdmNydC9tc3ZjcnQuaCwgZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL250ZGxsL3N0cmluZy5jLCBkbGxzL250ZGxsL3djc3RyaW5nLmMsIGRsbHMvb3BlbmdsMzIvd2dsLmMsIGRsbHMvc2V0dXBhcGkvc2V0dXB4X21haW4uYywgZGxscy91c2VyL2xzdHIuYywgZGxscy91c2VyL3VzZXJfbWFpbi5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCS0gUmVtb3ZlIDxzdHJpbmcuaD4gZnJvbSB3aW5udC5oLgoJLSBudGRsbDogY29tcGxldGUgY3J0IGZ1bmN0aW9ucywgcHJldmVudCBsaWJjIGltcG9ydHMsIGZpeCBzc2NhbmYuCgoJKiBkbGxzL2NvbW1kbGcvY29sb3JkbGcuYywgZGxscy9jb21tZGxnL2ZpbGVkbGcuYywgZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jLCBkbGxzL2NvbW1kbGcvZmluZGRsZy5jLCBkbGxzL2NvbW1kbGcvZmluZGRsZzMyLmMsIGRsbHMvY29tbWRsZy9mb250ZGxnLmMsIGRsbHMvY29tbWRsZy9wcmludGRsZy5jLCBpbmNsdWRlL2NvbW1jdHJsLmgsIGluY2x1ZGUvY29tbWRsZy5oLCBpbmNsdWRlL21zYWNtLmgsIGluY2x1ZGUvcHJzaHQuaDoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CgktIEZpeCBhIHR5cG8gaW4gVEJTQVZFUEFSQU1TIEEvVyBkZWNsYXJhdGlvbi4KCS0gVXNlIDE2IGJpdCBVbmljb2RlIGNvbnN0YW50cyBmb3Igd2Mgc3RyaW5ncy4KCS0gTWFrZSBzb21lIHN0cmluZyBjb25zdGFudHMgYXZhaWxhYmxlIGFzIFVuaWNvZGUuCgoyMDAxLTAxLTIxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jb21tZGxnL2NkbGdfeHgucmMsIGRsbHMvY29tbWRsZy9maWxlZGxnLmM6CglGaXhlZCB0aGUgc2l6ZSBvZiB0aGUgZmlsZSBkaWFsb2cgaWNvbnMuCgoJKiB3aW5kb3dzL3NweS5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gQWRkZWQgTk1DQkVFTkRFRElUIHN0cnVjdHVyZSBmb3IgTk9USUZZIGR1bXAuCgktIEFkZGVkIGR1bXAgb2YgcG9zaXRpb25pbmcgc3RydWN0dXJlIGZvciBXTV9XSU5ET1dQT1NDSEFOR3tFRHxJTkd9LgoKCSogaW5jbHVkZS9jb21tY3RybC5oOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCUFkZGVkIE5NQ0JFRU5ERURJVHtXfEF9IHN0cnVjdHVyZXMgYW5kIGZsYWdzLgoKCSogbG9hZGVyL25lL21vZHVsZS5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAYXNpLmZyPgoJRml4IHRoZSBjbWRsaW5lIGFyZ3VtZW50IHBhc3NlZCB0byBORV9DcmVhdGVUaHJlYWQgdG8gaW5jbHVkZSBzdHJpbmcKCWxlbmd0aC4KCgkqIGluY2x1ZGUvd2luYmFzZS5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBZGRlZCBtaXNzaW5nIHBvaW50ZXIgdHlwZSBkZWNsYXJhdGlvbnMgKHVzdWFsbHkgUHh4eCkuCgoJKiBkbGxzL3dpbmluZXQvaHR0cC5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJRXNjYXBlIGFueSBzcGFjZXMgaW4gbHBzek9iamVjdE5hbWUgcGFzc2VkIHRvIEh0dHBPcGVuUmVxdWVzdC4KCjIwMDEtMDEtMjAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL3gxMWRydi9ldmVudC5jOiBXYXJuaW5nIGZpeC4KCgkqIGxvYWRlci9wZV9pbWFnZS5jOgoJRGlzcGxheSB0aGUgaW1wb3J0aW5nIGRsbCBpbiB0aGUgMHhkZWFkYmVlZiBtZXNzYWdlLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9jdXJzb3JzLnJjLCBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9pY29ucy5yYywgaW5jbHVkZS93aW51c2VyLmgsIHByb2dyYW1zL2Nsb2NrL21haW4uaCwgcHJvZ3JhbXMvbm90ZXBhZC9sY2MuaCwgcHJvZ3JhbXMvbm90ZXBhZC9tYWluLmgsIHByb2dyYW1zL3Byb2dtYW4vZ3JvdXAuYywgcHJvZ3JhbXMvcHJvZ21hbi9wcm9nbWFuLmgsIHByb2dyYW1zL3Byb2dtYW4vcHJvZ3JhbS5jLCB3aW5kb3dzL25vbmNsaWVudC5jLCB3aW5kb3dzL3dpbi5jLCBkbGxzL2NvbW1kbGcvY2RsZ194eC5yYywgZGxscy9jb21tZGxnL2ZpbGVkbGcuYzoKCUZpeGVkIGEgbnVtYmVyIG9mIGluY29tcGF0aWJpbGl0aWVzIGluIE9FTSBpY29ucy9jdXJzb3JzIGhhbmRsaW5nLgoKCSogZGxscy91c2VyL3RleHQuYzoKCVVscmljaCBDemVrYWxsYSA8dWN6ZWthbGxhQGNvZGV3ZWF2ZXJzLmNvbT4KCVByZXZlbnQgYnVmZmVyIG92ZXJmbG93IGluIFRFWFRfTmV4dExpbmVXLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMuZGF0LCB0b29scy93aW5hcGlfY2hlY2svd2luMTYvbXNhY20uYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvY3J0ZGxsLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL21zdmNydC5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9vbGVhdXQzMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9yYXNhcGkzMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9zZXR1cGFwaS5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9zaGRvY3Z3LmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3VzZXIzMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi93aW5lZG9zLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3dzb2NrMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2NoZWNrLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX29wdGlvbnMucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfcGFyc2VyLnBtOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIE1pbm9yIEFQSSBmaWxlcyB1cGRhdGUuCgktIE1pbm9yIGJ1ZyBmaXhlcy4KCS0gTWlub3IgZG9jdW1lbnRhdGlvbiBjaGVjayBpbXByb3ZlbWVudHMuCgoyMDAxLTAxLTE5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9kaW5wdXQvam95c3RpY2svbGludXhpbnB1dC5jLCBpbmNsdWRlL2FjY29uZmlnLmgsIGluY2x1ZGUvY29uZmlnLmguaW4sIGNvbmZpZ3VyZS5pbiwgY29uZmlndXJlOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBjb25maWd1cmUgY2hlY2sgZm9yIG9sZCBsaW51eC9pbnB1dC5oLgoKCSogZG9jdW1lbnRhdGlvbi9tYWtlX3dpbmVocSwgZG9jdW1lbnRhdGlvbi93aW5lLWRldmVsLnNnbWwsIGRvY3VtZW50YXRpb24vd2luZS1wa2cuc2dtbCwgZG9jdW1lbnRhdGlvbi93aW5lLXVzZXIuc2dtbDoKCUpvaG4gUi4gU2hlZXRzIDxqc2hlZXRzQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIGNvbnZlbmllbmNlIHNjcmlwdCBmb3IgZ2VuZXJhdGluZyBvbmxpbmUgZG9jcyBmb3Igd2luZWhxLmNvbS4KCgkqIGNvbnRyb2xzL3VpdG9vbHMuYzoKCUpvc2ggRHVCb2lzIDxkdWJvaXNqQGNvZGV3ZWF2ZXJzLmNvbT4KCVNwZWNpZmllZCAnc2lnbmVkJyBvbiBjaGFycyBjb21wYXJlZCB0byAtMS4KCgkqIGRvY3VtZW50YXRpb24vcGFja2FnaW5nLnNnbWw6CglKb2huIFIuIFNoZWV0cyA8anNoZWV0c0Bjb2Rld2VhdmVycy5jb20+CglNYWtlIFNHTUwgSUQgYXR0cmlidXRlcyBpbiBwYWNrYWdpbmcuc2dtbCBtb3JlIHVuaXF1ZSB0byBhdm9pZAoJY29uZmxpY3RzIHdoZW4gd2UgYnVuZGxlIGFsbCBmb3VyIGd1aWRlcyBpbnRvIGEgc2luZ2xlIHNldC4KCgkqIGNvbnRyb2xzL2VkaXQuYywgY29udHJvbHMvc2Nyb2xsLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJU29sdmUgcmVtYWluaW5nIHByb2JsZW1zIHdpdGggc2Nyb2xsIGJhcnMgaW4gdGhlIGVkaXQgY29udHJvbC4KCjIwMDEtMDEtMTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkb2N1bWVudGF0aW9uL2RiMmh0bWwtd2luZWhxOgoJSm9obiBSLiBTaGVldHMgPGpzaGVldHNAY29kZXdlYXZlcnMuY29tPgoJQ2xlYW4gdXAgZGIyaHRtbC13aW5laHEgSFRNTCBnZW5lcmF0aW9uIHNjcmlwdC4gIFdvcmtzIGluIERlYmlhbiwgYW5kCgltYXkgYWN0dWFsbHkgd29yayBpbiBSZWRoYXQgbm93LCB0b28uCgoJKiBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvcGlkbC5oLCBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLCBkbGxzL3NoZWxsMzIvc2hsZmlsZW9wLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudGVkIFNIRUxMMzIuSXNOZXREcml2ZSBhbmQgU0hFTEwzMi5JTFNhdmVUb1N0cmVhbSBuZWVkZWQgZm9yCglJRSA1LgoKCSogZG9jdW1lbnRhdGlvbi9jb25maWd1cmluZy5zZ21sLCBkb2N1bWVudGF0aW9uL2ZvbnRzLnNnbWwsIGRvY3VtZW50YXRpb24vaW5zdGFsbGF0aW9uLXVuZC1rb25maWd1cmF0aW9uLmdlcm1hbiwgZG9jdW1lbnRhdGlvbi9pbnN0YWxsaW5nLnNnbWwsIGRvY3VtZW50YXRpb24vb3BlbmdsLnNnbWwsIGRvY3VtZW50YXRpb24vcHJpbnRpbmcuc2dtbCwgZG9jdW1lbnRhdGlvbi9yZWdpc3RyeS5zZ21sLCBkb2N1bWVudGF0aW9uL3J1bm5pbmcuc2dtbDoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkBjb2Rld2VhdmVycy5jb20+CglVcGRhdGVkIGZvciBjaGFuZ2UgaW4gY29uZmlnIGZpbGUgbmFtZS4gIFJlbW92ZWQgcmVmZXJlbmNlcyB0bwoJb2Jzb2xldGUgZ2xvYmFsIHdpbmUgY29uZmlndXJhdGlvbiBmaWxlIHdoZXJlIGFwcHJvcHJpYXRlLiAgVXBkYXRlZAoJY29uZmlnIG9wdGlvbiBmb3JtYXQgdG8gbWF0Y2ggdGhlIG5ldyBzeW50YXguICBNaXNjIGNsZWFudXBzLgoKCSogZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzIucmMsIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX2N1cnNvcnMucmMsIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX2ljb25zLnJjLCBncmFwaGljcy94MTFkcnYvb2VtYml0bWFwLmMsIGluY2x1ZGUvYml0bWFwcy9vY3JfYXBwc3RhcnRpbmcsIGluY2x1ZGUvYml0bWFwcy9vY3JfYnVtbWVyLCBpbmNsdWRlL2JpdG1hcHMvb2NyX2Nyb3NzLCBpbmNsdWRlL2JpdG1hcHMvb2NyX2RyYWdvYmplY3QsIGluY2x1ZGUvYml0bWFwcy9vY3JfaGFuZCwgaW5jbHVkZS9iaXRtYXBzL29jcl9oZWxwLCBpbmNsdWRlL2JpdG1hcHMvb2NyX2liZWFtLCBpbmNsdWRlL2JpdG1hcHMvb2NyX2ljb24sIGluY2x1ZGUvYml0bWFwcy9vY3Jfbm8sIGluY2x1ZGUvYml0bWFwcy9vY3Jfbm9ybWFsLCBpbmNsdWRlL2JpdG1hcHMvb2NyX3NpemUsIGluY2x1ZGUvYml0bWFwcy9vY3Jfc2l6ZW5lc3csIGluY2x1ZGUvYml0bWFwcy9vY3Jfc2l6ZW5zLCBpbmNsdWRlL2JpdG1hcHMvb2NyX3NpemVud3NlLCBpbmNsdWRlL2JpdG1hcHMvb2NyX3NpemV3ZSwgaW5jbHVkZS9iaXRtYXBzL29jcl91cCwgaW5jbHVkZS9iaXRtYXBzL29jcl93YWl0LCBpbmNsdWRlL2JpdG1hcHMvb2ljX2JhbmcsIGluY2x1ZGUvYml0bWFwcy9vaWNfYmFuZ185NSwgaW5jbHVkZS9iaXRtYXBzL29pY19jZHJvbSwgaW5jbHVkZS9iaXRtYXBzL29pY19mbG9wcHksIGluY2x1ZGUvYml0bWFwcy9vaWNfZm9sZGVyLCBpbmNsdWRlL2JpdG1hcHMvb2ljX2ZvbGRlcjIsIGluY2x1ZGUvYml0bWFwcy9vaWNfaGFuZCwgaW5jbHVkZS9iaXRtYXBzL29pY19oYW5kXzk1LCBpbmNsdWRlL2JpdG1hcHMvb2ljX2hkaXNrLCBpbmNsdWRlL2JpdG1hcHMvb2ljX2xhbmRzY2FwZSwgaW5jbHVkZS9iaXRtYXBzL29pY19uZXR3b3JrLCBpbmNsdWRlL2JpdG1hcHMvb2ljX25vdGUsIGluY2x1ZGUvYml0bWFwcy9vaWNfbm90ZV85NSwgaW5jbHVkZS9iaXRtYXBzL29pY19wb3J0cmFpdCwgaW5jbHVkZS9iaXRtYXBzL29pY19xdWVzLCBpbmNsdWRlL2JpdG1hcHMvb2ljX3F1ZXNfOTUsIGluY2x1ZGUvYml0bWFwcy9vaWNfc2FtcGxlLCBpbmNsdWRlL2JpdG1hcHMvb2ljX3dpbmVpY29uLCBpbmNsdWRlL3dpbnVzZXIuaCwgd2luZG93cy9jdXJzb3JpY29uLmM6CglTdG9yZSBVU0VSIGljb25zIGFuZCBjdXJzb3JzIGFzIHJlc291cmNlcyBpbnN0ZWFkIG9mIHhwbSBiaXRtYXBzLgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglGaXggb2ZmIGJ5IG9uZSBlcnJvciBpbiBidWZmZXIgbGVuZ3RoIGNoZWNrLgoKCSogdG9vbHMvd2luZWluc3RhbGw6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5AY29kZXdlYXZlcnMuY29tPgoJU3dpdGNoZWQgZnJvbSB3aW5lLmNvbmZpZyBiYWNrIHRvIHdpbmUuY29uZiwgbm8gbmVlZCB0byB1c2Ugc29tZXRoaW5nCglub3QgbGludXggc3RhbmRhcmQuICBSZW1vdmVkIHVzZSBvZiBvYnNvbGV0ZSAiLS1jb25maWciIG9wdGlvbiB3aGVuCgljYWxsaW5nIHJlZ2FwaS4gIExvdHMgb2YgY2xlYW51cCBhbmQgcmVvcmdhbml6YXRpb24uICBDaGVjayB0byBzZWUgaWYKCXdpbmUgaXMgaW5zdGFsbGVkIHdoZW4gd2luZWluc3RhbGwgaXMgbm90IHJ1biBhcyByb290LgoKCSogaW5jbHVkZS93aW5iYXNlLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFkZGVkIDMgbWlzc2luZyBGU194eHggbWFjcm9zLgoKMjAwMS0wMS0xNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwgZGxscy9zaGVsbDMyL3NobG1lbnUuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZ2Jyb3dzZXIuYywgZGxscy9zaGVsbDMyL2ZvbGRlcnMuYywgZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jLCBkbGxzL2NvbW1kbGcvY2RsZy5oLCBkbGxzL2NvbW1kbGcvY2RsZzMyLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYzoKCVJlcGxhY2VkIHNvbWUgR2V0UHJvY0FkZHJlc3MoKSBpbXBvcnRzIGJ5IHRoZSBzdGFuZGFyZCBkbGwgaW1wb3J0CgltZWNoYW5pc20uCgoJKiBkbGxzL3dpbmVwcy9pbml0LmMsIGRsbHMvd2lubW0vbW1zeXN0ZW0uYywgZGxscy9kcGxheXgvZHBsYXl4X21haW4uYywgZGxscy9pbW0zMi9tYWluLmMsIGRsbHMvbXNhY20vbXNhY20zMl9tYWluLmMsIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL29sZTMyX21haW4uYywgZGxscy9vcGVuZ2wzMi93Z2wuYywgZGxscy9yaWNoZWRpdC9yaWNoZWQzMi5oLCBkbGxzL3JpY2hlZGl0L3JpY2hlZGl0LmMsIGRsbHMvcnBjcnQ0L3JwY3J0NF9tYWluLmMsIGRsbHMvc2VyaWFsdWkvY29uZmRsZy5jLCBkbGxzL3NoZWxsMzIvc2hlbGwuYywgZGxscy90dHlkcnYvdHR5ZHJ2X21haW4uYywgZGxscy93aW5hc3BpL3dpbmFzcGkzMi5jLCBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmMsIGRsbHMvY29tbWRsZy9nZW5lcmljLmM6CglDbGVhbmVkIHVwIGRsbCBzdGFydHVwIHJvdXRpbmVzIG5vdyB0aGF0IHdlIGhhdmUgc2VwYXJhdGUgYWRkcmVzcwoJc3BhY2VzLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvYWR2YXBpMzIvc2VydmljZS5jLCBkbGxzL3dpbm1tL2RyaXZlci5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglDb3NtZXRpY3MuCgoJKiBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jLCBpbmNsdWRlL3gxMWRydi5oLCB3aW5kb3dzL3gxMWRydi9ldmVudC5jOgoJSm9zaCBEdUJvaXMgPGR1Ym9pc2pAY29kZXdlYXZlcnMuY29tPgoJTWFrZSBzb21lIG5vaXNlIGluIGEgZmV3IGNhc2VzIHdoZXJlIHRoZSBYMTFkcnYgZG9lc24ndCBsb2FkLCBidXQgdXNlZAoJdG8gZmFpbCBzaWxlbnRseS4KCgkqIHNjaGVkdWxlci9zZXJ2aWNlcy5jOgoJSm9zaCBEdUJvaXMgPGR1Ym9pc2pAY29kZXdlYXZlcnMuY29tPgoJU0VSVklDRV9DcmVhdGVTZXJ2aWNlVGFibGUgc3RpbGwgcmV0dXJuZWQgVFJVRSBpZiBDcmVhdGVUaHJlYWQgZmFpbGVkLgoKCSogaW5jbHVkZS93aW5lL2xpYnJhcnkuaCwgbGlicmFyeS9NYWtlZmlsZS5pbiwgbGlicmFyeS9lcnJuby5jLCBzY2hlZHVsZXIvc3lzZGVwcy5jLCBzY2hlZHVsZXIvdGhyZWFkLmMsIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmMsIGluY2x1ZGUvYWNjb25maWcuaCwgaW5jbHVkZS9jb25maWcuaC5pbiwgaW5jbHVkZS94MTFkcnYuaCwgY29uZmlndXJlLCBjb25maWd1cmUuaW46CglDbGVhbmVkIHVwIHRoZSB2YXJpb3VzIGVycm5vIGxvY2F0aW9uIHRlc3RzIGluIGNvbmZpZ3VyZS4KCUFkZGVkIChoXyllcnJub19sb2NhdGlvbiBwb2ludGVycyBpbiB0aGUgbGlicmFyeSB0aGF0IGFsbG93IHJlbWFwcGluZwoJdGhlIGNhbGxzIGluIGhpZ2hlciBsZXZlbCBkbGxzLgoJTW92ZWQgWDExRFJWX0NyaXRTZWN0aW9uIG91dCBvZiBzeXNkZXBzLmMgYW5kIGludG8geDExZHJ2LmRsbC4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYywgZGxscy93c29jazMyL3NvY2tldC5jOgoJSmFtZXMgSGF0aGV3YXkgPGphbWVzQG1hY2FkYW1pYW4uY29tPgoJSW4gV3NDb250cm9sLCBkb24ndCBtaXggTGludXggYW5kIFdpbmUgc29ja2V0IGNhbGxzLiBBbHdheXMgdXNlIFdpbmUgY2FsbHMuCglBZGRlZCBoYWNrIGZvciBtaXNzaW5nIFdJTkFQSSBpbiBVbml4IHNvY2tldCgpIGRlZmluaXRpb24uCgoJKiBkbGxzL3NldHVwYXBpL3NldHVwYXBpLnNwZWMsIGRsbHMvc2V0dXBhcGkvc3R1YnMuYywgaW5jbHVkZS9zZXR1cGFwaS5oOgoJSmFtZXMgSnVyYW4gPGphbWVzanVyYW5AYWx1bW5pLnBzdS5lZHU+CglBZGRlZCBzb21lIHN0dWJzIG5lZWRlZCBmb3IgSUUgNS41IHNldHVwLgoKCSogdG9vbHMvd2luZXNoZWxsbGluazoKCUplcmVteSBXaGl0ZSA8andoaXRlQGNvZGV3ZWF2ZXJzLmNvbT4KCVJldmlzZWQgd2luZXNoZWxsbGluayB0byB3YWtlIHVwIEtERSAxLnggc28gdGhhdCBhcHBsaWNhdGlvbnMgdGhhdCBnZXQKCWluc3RhbGxlZCBzaG93IHVwIHdpdGhvdXQgYSBtYW51YWwgS0RFIG1lbnUgcmVmcmVzaCByZXF1aXJlZC4KCUFkZGVkIGEgZmV3IHVzYWdlIGNoZWNrcyB0byBtYWtlIG1hbnVhbCBpbnZvY2F0aW9uIGEgbGl0dGxlIGxlc3MKCXBhaW5mdWwuCgoJKiB0b29scy9iaW4ycmVzLmM6IEZpeGVkIHRtcGZpbGUgYnVmZmVyIHNpemUuCgoJKiBmaWxlcy9kb3NfZnMuYzoKCUZpeGVkIHR5cG8gaW4gd2luZV9nZXRfdW5peF9maWxlX25hbWUoKS4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYzoKCUplcmVteSBXaGl0ZSA8andoaXRlQGNvZGV3ZWF2ZXJzLmNvbT4KCVJldmlzZWQgc2hlbGwgbGluayBwcm9jZXNzIHRvIHRyZWF0IGVtcHR5IChlLmcuICIiKSBzdHJpbmdzCglpZGVudGljYWxseSB0byBOVUxMIHN0cmluZ3MuIE1ha2VzIG1hbnkgbW9yZSBpbnN0YWxsZXJzIHRha2UgdXNlZnVsCglhY3Rpb24uIEFkZGVkIG1hbnkgdHJhY2UgbWVzc2FnZXMuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglVbHJpY2ggQ3pla2FsbGEgPHVjemVrYWxsYUBjb2Rld2VhdmVycy5jb20+CglPbmx5IGFkanVzdCBpdGVtIHJlY3QgYnkgaG9yaXpvbnRhbCBzY3JvbGxiYXIgb2Zmc2V0IGluIHJlcG9ydCB2aWV3LgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAYXNpLmZyPgoJQ2hhbmdlIFdTQUNsZWFudXAgLSB3c2luZm8gaXMgYSBzdGF0aWMgc3RydWN0dXJlIG5vdy4KCgkqIHRvb2xzL3dpbmVsYXVuY2hlci5pbjoKCUplcmVteSBXaGl0ZSA8andoaXRlQGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2Ugd2luZWxhdW5jaGVyIHRlc3QgZm9yIHhtZXNzYWdlIGFuZCB3YXJuIHRoZSB1c2VyIGlmIHRoZXkgZG9uJ3QKCWhhdmUgaXQuCgoyMDAxLTAxLTE1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZ3JhcGhpY3MveDExZHJ2L2JydXNoLmMsIGluY2x1ZGUvd2luZV9nbC5oLCB3aW5kb3dzL3gxMWRydi9jbGlwYm9hcmQuYywgd2luZG93cy94MTFkcnYvZXZlbnQuYzoKCVJlcGxhY2VkIFgxMURSVl9Dcml0U2VjdGlvbiByZWZlcmVuY2VzIGJ5IHdpbmVfdHN4MTFfKHVuKWxvY2suCgoJKiBncmFwaGljcy94MTFkcnYvYml0Ymx0LmMsIGdyYXBoaWNzL3gxMWRydi9iaXRtYXAuYywgZ3JhcGhpY3MveDExZHJ2L2RpYi5jLCBncmFwaGljcy94MTFkcnYvZ3JhcGhpY3MuYywgZ3JhcGhpY3MveDExZHJ2L29lbWJpdG1hcC5jLCBpbmNsdWRlL2NhbGxiYWNrLmgsIGluY2x1ZGUveDExZHJ2LmgsIHNjaGVkdWxlci9zeXNkZXBzLmMsIHdpbmRvd3MveDExZHJ2L21vdXNlLmMsIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmM6CglSZW1vdmVkIENBTExfTEFSR0VfU1RBQ0sgc3VwcG9ydC4KCgkqIGxvYWRlci9uZS9zZWdtZW50LmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbW1kMS5pbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCURvbid0IGNhbGwgYSBORSBETEwncyBEbGxFbnRyeVBvaW50IHR3aWNlIGR1cmluZyBvbmUgc2luZ2xlCglMb2FkTW9kdWxlKCkgY2FsbC4KCgkqIG1lbW9yeS92aXJ0dWFsLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglNYXBWaWV3T2ZGaWxlRXg6IG1ha2UgdGhlIHJldHVybmVkIGVycm9yIGRlcGVuZGVudCBvbiB0aGUgV2luZG93cwoJdmVyc2lvbiB1c2VkLgoKCSogZGxscy91c2VyL3VzZXIzMi5zcGVjLCBkbGxzL3dpbmVkb3Mvd2luZWRvcy5zcGVjLCBkbGxzL3gxMWRydi94MTFkcnYuc3BlYywgZGxscy9udGRsbC9udGRsbC5zcGVjOgoJVXBkYXRlZCBkZWJ1ZyBjaGFubmVscy4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9taXhlci5jLCB3aW5kb3dzL3dpbnByb2MuYywgd2luZG93cy94MTFkcnYvd25kLmMsIGRsbHMvd2lubW0vbWNpYXZpL21jaWF2aS5jOgoJUmVtb3ZlZCB1bm5lY2Vzc2FyeSBoZWFkZXJzLgoKCSogd2luZG93cy9tZGkuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglJbml0aWFsaXplIE1FTlVJVEVNSU5GTyBzdHJ1Y3R1cmUgYmVmb3JlIGNhbGxpbmcgR2V0TWVudUl0ZW1JbmZvLgoKCSogZGxscy9kZHJhdy9kZHJhdy90aHVua3MuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgYW4gaW50ZXJmYWNlIGNhc3QgaW4gREQyLT5ERDcgdGh1bmsuCgoJKiBjb250cm9scy9lZGl0LmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkIG9uZSBtaXNzaW5nIGJ1ZmZlciBzaXplIHJvdW5kaW5nIGluIHRoZSBlZGl0IGNvbnRyb2wuCglNYWtlIHJvdW5kaW5nIGNvZGUgc2xpZ2h0bHkgbW9yZSByZWFkYWJsZS4KCgkqIGxvYWRlci9uZS9tb2R1bGUuYywgbG9hZGVyL25lL3Jlc291cmNlLmMsIGxvYWRlci90YXNrLmMsIGlmMTYzMi9idWlsdGluLmM6CglSZXBsYWNlZCBHTE9CQUxfQWxsb2MgYnkgR2xvYmFsQWxsb2MxNiB3aGVyZSBwb3NzaWJsZS4KCgkqIG1pc2MvTWFrZWZpbGUuaW4sIG1pc2MvdHdlYWsuYywgb2JqZWN0cy9nZGlvYmouYywgd2luZG93cy9kZWZ3bmQuYywgd2luZG93cy9tZGkuYywgd2luZG93cy9tc2dib3guYywgd2luZG93cy9ub25jbGllbnQuYywgd2luZG93cy9wYWludGluZy5jLCB3aW5kb3dzL3N5c2NvbG9yLmMsIHdpbmRvd3Mvc3lzbWV0cmljcy5jLCB3aW5kb3dzL3N5c3BhcmFtcy5jLCBjb250cm9scy9idXR0b24uYywgY29udHJvbHMvY29tYm8uYywgY29udHJvbHMvZWRpdC5jLCBjb250cm9scy9saXN0Ym94LmMsIGNvbnRyb2xzL21lbnUuYywgY29udHJvbHMvc2Nyb2xsLmMsIGNvbnRyb2xzL3N0YXRpYy5jLCBjb250cm9scy91aXRvb2xzLmMsIGRsbHMvZ2RpL2dkaV9tYWluLmMsIGRsbHMvdXNlci9jYWNoZS5jLCBkbGxzL3VzZXIvdGV4dC5jLCBkbGxzL3VzZXIvdXNlcl9tYWluLmMsIGdyYXBoaWNzL3gxMWRydi9vZW1iaXRtYXAuYywgZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsIGluY2x1ZGUvY2FjaGUuaCwgaW5jbHVkZS90d2Vhay5oLCBpbmNsdWRlL3VzZXIuaDoKCU1vdmVkIHR3ZWFrIHN1cHBvcnQgdG8gVVNFUiBkbGwuIFJlbW92ZWQgdHdlYWsuaCBhbmQgY2FjaGUuaC4KCgkqIG1lbW9yeS9sb2NhbC5jLCBtc2Rvcy9pbnQyMC5jLCBtc2Rvcy9pbnQyZi5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCB3aW4zMi9pbml0LmMsIHdpbmRvd3MvY2xpcGJvYXJkLmMsIHdpbmRvd3MvY3Vyc29yaWNvbi5jLCB3aW5kb3dzL2ZvY3VzLmMsIHdpbmRvd3MvaG9vay5jLCB3aW5kb3dzL2lucHV0LmMsIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL3F1ZXVlLmMsIHdpbmRvd3MvdGltZXIuYywgd2luZG93cy91c2VyLmMsIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3Mvd2lucG9zLmMsIGluY2x1ZGUvcXVldWUuaCwgaW5jbHVkZS90YXNrLmgsIGluY2x1ZGUvd2luZS93aW5iYXNlMTYuaCwgbG9hZGVyL25lL3NlZ21lbnQuYywgbG9hZGVyL3BlX3Jlc291cmNlLmMsIGxvYWRlci9yZXNvdXJjZS5jLCBkZWJ1Z2dlci9kYmcueSwgZGVidWdnZXIvZXhwci5jLCBkbGxzL3dpbnNvY2svYXN5bmMuYywgZGxscy93aW5zb2NrL3NvY2tldC5jLCBmaWxlcy9maWxlLmMsIGlmMTYzMi9yZWxheS5jOgoJUmVtb3ZlZCBzb21lIGRpcmVjdCBhY2Nlc3NlcyB0byB0aGUgMTYtYml0IHRhc2sgc3RydWN0dXJlLgoKCSogZGxscy9jcnRkbGwvY3J0ZGxsLnNwZWMsIGRsbHMvbXN2Y3J0L2N0eXBlLmMsIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjOgoJRml4ZWQgdG91cHBlci9fdG91cHBlciBtaXh1cC4KCjIwMDEtMDEtMTIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBBTk5PVU5DRSwgQ2hhbmdlTG9nLCBpbmNsdWRlL3ZlcnNpb24uaDoKCVJlbGVhc2UgMjAwMTAxMTIuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjIwMDEtMDEtMTIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2RkcmF3L2RkcmF3L3h2aWRtb2RlLmM6CglBZGRlZCBtaXNzaW5nIFdJTl9SZWxlYXNlV25kUHRyLgoKCSogZGxscy93aW5tbS9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS9tbXN5c3RlbS5zcGVjOgoJd2lubW0uZGxsIGNhbiBub3cgYmUgcHJvcGVybHkgc2VwYXJhdGVkLgoKCSogZGxscy9tc3ZpZGVvL21zdmlkZW9fbWFpbi5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglXYXJuaW5nIGZpeC4KCgkqIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUZpeGVzIGZvciB2YXJpb3VzIHVuZGVycnVuLXJlbGF0ZWQgcHJvYmxlbXMuIEFsc28gYWRkZWQgYSBtZWNoYW5pc20KCWZvciB0aGUgc291bmQgZHJpdmVyIHRvIHJlcXVlc3QgdGhhdCBhIFN0b3Agc2hvdWxkIGNsb3NlIGFuZCByZW9wZW4KCXRoZSBkZXZpY2UuCgoJKiBkbGxzL3dpbm1tL21tc3lzdGVtLmMsIGRsbHMvd2lubW0vdGltZS5jLCBkbGxzL3dpbm1tL3dpbmVtbS5oOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglSZW1vdmUgbXVsdGltZWRpYSB0aW1lcnMgZnJvbSB0aGUgc2VydmljZSB0aHJlYWQsIHVzZSBhIHNlcGFyYXRlIHRocmVhZAoJaW5zdGVhZC4KCgkqIGRsbHMvY29tY3RsMzIvc3RhdHVzLmM6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJSW4gU1RBVFVTQkFSX0dldFRpcFRleHR7YSxXLCBhbHdheXMgcHV0IGEgdGVybWluYXRpbmcgJ1wwJyBpbiB0aGUKCWJ1ZmZlci4KCVBhc3MgYSBidWZmZXIgb2Ygc3VmZmljaWVudCBzaXplIHRvIFRUTV9HRVRURVhUQS4KCgkqIGRsbHMvZGRyYXcvZGRyYXcvbWFpbi5jLCBkbGxzL2RkcmF3L2RkcmF3L3RodW5rcy5jLCBkbGxzL2RkcmF3L2RkcmF3X3ByaXZhdGUuaCwgZGxscy9kZHJhdy9kZ2EyX3ByaXZhdGUuaCwgZGxscy9kZHJhdy9kZ2FfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L2RzdXJmYWNlL21haW4uYywgZGxscy9kZHJhdy9kc3VyZmFjZS90aHVua3MuYywgZGxscy9kZHJhdy9kc3VyZmFjZS91c2VyLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2Uvd25kcHJvYy5jLCBkbGxzL2RkcmF3L21haW4uYzoKCUdhdnJpZWwgU3RhdGUgPGdhdkB0cmFuc2dhbWluZy5jb20+CglXYXJuaW5nIGZpeGVzLgoKCSogZGxscy93c29jazMyL3dzb2NrMzIuc3BlYywgaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9uc3BhcGkuaCwgaW5jbHVkZS93c2hpc290cC5oLCBpbmNsdWRlL3dzaXB4LmgsIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvd3NvY2szMi9NYWtlZmlsZS5pbiwgZGxscy93c29jazMyL3Byb3RvY29sLmM6CglTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1saW5lLmNvbT4KCUltcGxlbWVudGVkIEVudW1Qcm90b2NvbEEvVy4KCgkqIGNvbmZpZ3VyZS5pbiwgaW5jbHVkZS9jb25maWcuaC5pbiwgbGlicmFyeS9wb3J0LmMsIGNvbmZpZ3VyZToKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJTmV0QlNEIDEuNSBpcyBsYWNraW5nIGVjdnQsIGZjdnQsIGdjdnQgZm9yIGNydGRsbC4KCgkqIHNlcnZlci9maWxlLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCVdvcmthcm91bmQgZm9yIFN1U0UgNyAyLjIuMTYga2VybmVsIGJ1Zy4KCgkqIGNvbnRyb2xzL2VkaXQuYzoKCUphbWVzIEhhdGhld2F5IDxqYW1lc0BtYWNhZGFtaWFuLmNvbT4KCUd1YXJkIGFnYWluc3QgaW5jb21pbmcgc3RyaW5nIG9mIE5VTEwgaW4gV01fU0VUVEVYVC4KCgkqIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvY3J0ZGxsL01ha2VmaWxlLmluLCBkbGxzL2NydGRsbC9jb25zb2xlLmMsIGRsbHMvY3J0ZGxsL2NydGRsbC5oLCBkbGxzL2NydGRsbC9jcnRkbGwuc3BlYywgZGxscy9jcnRkbGwvY3J0ZGxsX21haW4uYywgZGxscy9jcnRkbGwvZGlyLmMsIGRsbHMvY3J0ZGxsL2V4aXQuYywgZGxscy9jcnRkbGwvZmlsZS5jLCBkbGxzL2NydGRsbC9sb2NhbGUuYywgZGxscy9jcnRkbGwvbWJzdHJpbmcuYywgZGxscy9jcnRkbGwvbWVtb3J5LmMsIGRsbHMvY3J0ZGxsL3NwYXduLmMsIGRsbHMvY3J0ZGxsL3N0cmluZy5jLCBkbGxzL2NydGRsbC90aW1lLmMsIGRsbHMvY3J0ZGxsL3djc3RyaW5nLmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJVHVybiBjcnRkbGwgaW50byBmb3J3YXJkcyB0byBtc3ZjcnQuCgoJKiBkbGxzL21zdmNydC9leGNlcHQuYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglBZGRlZCBzb21lIGV4Y2VwdGlvbiBoYW5kbGluZyBmdW5jdGlvbnMuCgoJKiBkbGxzL21zdmNydC9tYXRoLmM6CglHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCUZpeGVkIG1pc3R5cGVkIHZhcmlhYmxlIG5hbWUgaW4gTVNWQ1JUX19mcGNsYXNzKCkuCgoJKiBtZW1vcnkvdmlydHVhbC5jOgoJQWRkZWQgZmxhZyB0byBkaWZmZXJlbnRpYXRlIGZpbGUgbWFwcGluZ3MgYW5kIFZpcnR1YWxBbGxvYygpIGJsb2NrcywKCWFuZCByZWplY3QgVmlydHVhbEZyZWUoKSBjYWxscyBvbiBmaWxlIG1hcHBpbmdzLgoKCSogaW5jbHVkZS9zZXJ2ZXIuaCwgc2NoZWR1bGVyL2NsaWVudC5jOgoJUmVtb3ZlZCBvYnNvbGV0ZSBnZXRfcmVxX2J1ZmZlcigpIGZ1bmN0aW9uLgoKCSogZmlsZXMvZmlsZS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQGxvb2tzbWFydC5jb20uYXU+CglTd2FwIGxwT3ZlcmxhcHBlZCBwYXJhbWV0ZXJzIGluIFJlYWRGaWxlIGFuZCBXcml0ZUZpbGUuCglUaGUgSW50ZXJuYWxIaWdoIG1lbWJlciBzaG91bGQgY29udGFpbiB0aGUgbnVtYmVyIG9mCglieXRlcyB0cmFuc2ZlcnJlZC4KCgkqIGRsbHMvbXN2Y3J0L2xvY2FsZS5jLCBkbGxzL21zdmNydC9tYXRoLmMsIGRsbHMvbXN2Y3J0L21iY3MuYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglGaXhlcyBhcyBhIHJlc3VsdCBvZiB0ZXN0aW5nIGJ1aWx0aW4gY3J0ZGxsIGFnYWluc3QgYnVpbHRpbiBtc3ZjcnQuCgoJKiBmaWxlcy9kaXJlY3RvcnkuYywgZmlsZXMvZHJpdmUuYzoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkBjb2Rld2VhdmVycy5jb20+CglVcGRhdGVkIG1lc3NhZ2VzIHdpdGggbmV3IGNvbmZpZyBmaWxlcyBpbiBtaW5kIHRvIGtlZXAgZnJvbSBjb25mdXNpbmcKCXVzZXJzLgoKCSogZGxscy9jb21jdGwzMi9wYWdlci5jOgoJU3VzYW4gRmFybGV5IDxzdXNhbkBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnRlZCBtb3N0IGZ1bmN0aW9uYWxpdHkuICBUT0RPIGxpc3RzIHdoYXRzIGxlZnQuCgoyMDAxLTAxLTExICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogTWFrZS5ydWxlcy5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvc2hkb2N2dy8uY3ZzaWdub3JlLCBkbGxzL3NoZG9jdncvTWFrZWZpbGUuaW4sIGRsbHMvc2hkb2N2dy9jbGFzc2luZm8uYywgZGxscy9zaGRvY3Z3L2V2ZW50cy5jLCBkbGxzL3NoZG9jdncvZmFjdG9yeS5jLCBkbGxzL3NoZG9jdncvbWlzYy5jLCBkbGxzL3NoZG9jdncvb2xlb2JqZWN0LmMsIGRsbHMvc2hkb2N2dy9wZXJzaXN0LmMsIGRsbHMvc2hkb2N2dy9zaGRvY3Z3LmgsIGRsbHMvc2hkb2N2dy9zaGRvY3Z3LnNwZWMsIGRsbHMvc2hkb2N2dy9zaGRvY3Z3X21haW4uYywgZGxscy9zaGRvY3Z3L3dlYmJyb3dzZXIuYywgZG9jdW1lbnRhdGlvbi9NYWtlZmlsZS5pbiwgaW5jbHVkZS93aW5lL29ial93ZWJicm93c2VyLmgsIHdpbmVkZWZhdWx0LnJlZzoKCUpvaG4gUi4gU2hlZXRzIDxkdXNrQHJhdmVuZHVzay5vcmc+CglJbXBsZW1lbnRlZCBzdHVicyBmb3IgSVdlYkJyb3dzZXIgaW4gc2hkb2N2dy5kbGwuCgoJKiB0b29scy93aW5lYnVpbGQvbWFpbi5jOgoJTmF0aGFuIE5ldWxpbmdlciA8bm5ldWxAdW1yLmVkdT4KCVJlbmFtZWQgc3RydWN0IG9wdGlvbiB0byBhdm9pZCBjb25mbGljdHMgd2l0aCBnZXRvcHQuaC4KCgkqIGRsbHMvbXN2Y3J0L2V4Y2VwdC5jLCBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglBZGRlZCBiaW5hcnkgY29tcGF0aWJsZSBfX0VIX3Byb2xvZy4KCgkqIHNlcnZlci9tYWluLmM6CglKb3NoIER1Qm9pcyA8ZHVib2lzakBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBhIHNpbXBsZSB1c2FnZSgpIGZ1bmN0aW9uLgoKCSogZGxscy9kZHJhdy9kZ2EuYywgZGxscy9kZHJhdy9kZ2EyLmM6CglObyBsb25nZXIgdXNlZC4KCgkqIGluY2x1ZGUvd2luZS9vYmpfY2FjaGUuaCwgaW5jbHVkZS93aW5lL29ial9jb25uZWN0aW9uLmgsIGluY2x1ZGUvd2luZS9vYmpfb2xlb2JqLmgsIGluY2x1ZGUvd2luZS9vYmpfb2xldmlldy5oOgoJSm9obiBSLiBTaGVldHMgPGR1c2tAcmF2ZW5kdXNrLm9yZz4KCUNvcnJlY3Qgc29tZSBjdXQgJiBwYXN0ZSB0eXBvcy4KCgkqIHRvb2xzL3dpbmVpbnN0YWxsOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQGNvZGV3ZWF2ZXJzLmNvbT4KCVVwZGF0ZSBmb3IgdGhlIG5ldyBjb25maWcgZm9ybWF0IGFuZCBsb2NhdGlvbiBvZiB0aGUgZGVmYXVsdCBjb25maWcKCWZpbGUuICBBZGQgYSBjb25mX3F1ZXNpb24gdG8gY29udmVydCBhbiBvbGQgdXNlciBjb25maWcgZmlsZSwgb3IgdXNlCgl0aGUgZGVmYXVsdCBXaW5lIGNvbmZpZyBmaWxlLiAgUmVtb3ZlZCB0aGUgc2V0dGluZyBvZiBvYnNvbGV0ZQoJRVhUUkFfTERfTElCUkFSWV9QQVRILiAgQWRkZWQgYSBjb25mX3F1ZXN0aW9uIHRvIGdpdmUgdGhlIHVzZXIgdGhlCglvcHRpb24gdG8gaW5zdGFsbCBsb2NhbCBjb25maWcgYW5kIHJlZ2lzdHJ5IGZpbGVzIHdoZW4gdGhlIHNjcmlwdCBpcwoJYmVpbmcgcnVuIGJ5IHJvb3QuCgoJKiB0b29scy93aW5lbWFrZXI6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQ3JlYXRlIHRoZSBtYWluX3RhcmdldCBpbiBzaW5nbGUtdGFyZ2V0IG1vZGUuCglUaGUgZGVmaW5lZChAYXJyYXkpIGNvbnN0cnVjdCBpcyBzYWlkIHRvIGJlIGRlcHJlY2F0ZWQsIGF2b2lkIGl0LgoJU2ltcGxpZnkgdGhlIHVzYWdlIHJlcG9ydGluZy4KCUFkZCBhIHdvcmQgb2YgY2F1dGlvbiB0byB0aGUgdXNhZ2UgbWVzc2FnZS4KCgkqIGNvbnRyb2xzL2VkaXQuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglGaXggdGhlIHJldHVybiB2YWx1ZSBvZiBXTV9HRVRURVhUIGluIHRoZSBlZGl0IGNvbnRyb2wuCgoJKiBjb250cm9scy9jb21iby5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVZhcmlvdXMgY29tYm9ib3ggZml4ZXMuCgoJKiBmaWxlcy9NYWtlZmlsZS5pbjoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkBjb2Rld2VhdmVycy5jb20+CglSZW1vdmVkIHNvbWUgdW5uZWNlc3NhcnkgZGVmaW5lcyBhZnRlciBwcm9maWxlLmMgY2xlYW51cC4KCgkqIHByb2dyYW1zL2F2aXRvb2xzL2F2aXBsYXkuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGltbWQxLmluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJRml4ZWQgdW5uYW1lZCB1bmlvbiBkdW1teSBuYW1lcy4KCgkqIGNvbmZpZ3VyZS5pbiwgaW5jbHVkZS9hY2NvbmZpZy5oLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBpbmNsdWRlL3dpbmUvcG9ydC5oLCBpbmNsdWRlL3dpbm50LmgsIGNvbmZpZ3VyZToKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGltbWQxLmluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJUmVwbGFjZWQgYXJjaGl0ZWN0dXJlLWRlcGVuZGVudCBjb25maWd1cmUgY2hlY2tzIGJ5IGhhcmRjb2RlZAoJZGVmaW5pdGlvbnMgaW4gd2lubnQuaCAodG8gYXZvaWQgY29uZmlnLmggZGVwZW5kZW5jeSkuCgoJKiBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW1tZDEuaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBZGRlZCBtaXNzaW5nIHByb3RvdHlwZXMgdG8gYXZvaWQgY29tcGlsZSB3YXJuaW5ncyBvbiBTb2xhcmlzLgoKCSogaW5jbHVkZS93aW5zb2NrLmg6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbW1kMS5pbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVdvcmsgYXJvdW5kIHByb2JsZW1zIG9uIFNvbGFyaXMgaWYgY29uZmlnLmggaXMgbm90IGluY2x1ZGVkLgoKCSogd2luZG93cy9tZXNzYWdlLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbW1kMS5pbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUZpeGVkIGJ5dGVvcmRlciBwcm9ibGVtcyBjYXVzZWQgYnkgbm9uLXBvcnRhYmxlIGNvZGUuCgoyMDAxLTAxLTEwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9tc3ZjcnQvY3BwLmMsIGRsbHMvbXN2Y3J0L2N0eXBlLmMsIGRsbHMvbXN2Y3J0L2RhdGEuYywgZGxscy9tc3ZjcnQvZGlyLmMsIGRsbHMvbXN2Y3J0L2Vudmlyb24uYywgZGxscy9tc3ZjcnQvZXJybm8uYywgZGxscy9tc3ZjcnQvZXhjZXB0LmMsIGRsbHMvbXN2Y3J0L2V4aXQuYywgZGxscy9tc3ZjcnQvZmlsZS5jLCBkbGxzL21zdmNydC9oZWFwLmMsIGRsbHMvbXN2Y3J0L2xvY2FsZS5jLCBkbGxzL21zdmNydC9tYWluLmMsIGRsbHMvbXN2Y3J0L21hdGguYywgZGxscy9tc3ZjcnQvbWJjcy5jLCBkbGxzL21zdmNydC9taXNjLmMsIGRsbHMvbXN2Y3J0L21zX2Vycm5vLmgsIGRsbHMvbXN2Y3J0L21zdmNydC5oLCBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYywgZGxscy9tc3ZjcnQvcHJvY2Vzcy5jLCBkbGxzL21zdmNydC9zdHJpbmcuYywgZGxscy9tc3ZjcnQvdGhyZWFkLmMsIGRsbHMvbXN2Y3J0L3RpbWUuYywgZGxscy9tc3ZjcnQvd2NzLmMsIGRvY3VtZW50YXRpb24vc2FtcGxlcy9jb25maWcsIGxvYWRlci9sb2Fkb3JkZXIuYywgREVWRUxPUEVSUy1ISU5UUywgTWFrZS5ydWxlcy5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvbXN2Y3J0Ly5jdnNpZ25vcmUsIGRsbHMvbXN2Y3J0L01ha2VmaWxlLmluLCBkbGxzL21zdmNydC9jb25zb2xlLmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJLSBNaWdyYXRlIENSVERMTCB0byBNU1ZDUlQuCgktIE1hbnkgZml4ZXMgYW5kIGEgbG9hZCBvZiBuZXcgZnVuY3Rpb25zLgoKCSogaW5jbHVkZS9vcHRpb25zLmgsIG1pc2Mvb3B0aW9ucy5jOgoJUmVtb3ZlZCBhbGwgdHJhY2VzIG9mIHRoZSAtLWNvbmZpZyBvcHRpb24uCgoJKiBkbGxzL2RkcmF3L2RkcmF3L3h2aWRtb2RlLmM6CglHYXZyaWVsIFN0YXRlIDxnYXZAdHJhbnNnYW1pbmcuY29tPgoJUmVlbmFibGVkIERYR3JhYiBvcHRpb24uCgoJKiBjb250cm9scy9lZGl0LmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJU3luY2hyb25pemUgdGhlIHNpemVzIG9mIHRoZSBleHRlcm5hbCBhbmQgaW50ZXJuYWwgYnVmZmVycyBhdCBzdGFydAoJYW5kIGVuZCBvZiBtZXNzYWdlIHByb2Nlc3NpbmcgaW4gdGhlIGVkaXQgY29udHJvbC4KCgkqIGNvbnRyb2xzL2xpc3Rib3guYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQGFzaS5mcj4KCUZpeGVkIHJldHVybmVkIGxlbmd0aCBmb3IgTEJfR0VUVEVYVC4KCgkqIGRsbHMva2VybmVsL01ha2VmaWxlLmluOgoJQWRkZWQgbmxzIHRvIEVYVFJBU1VCRElSUy4KCgkqIGZpbGVzL3Byb2ZpbGUuYzoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkBjb2Rld2VhdmVycy5jb20+CglSZW1vdmVkIHVzZSBvZiBvdXRkYXRlZCBXSU5FX0lOSSBlbnZpcm9ubWVudCB2YXJpYWJsZS4gIFJlbW92ZWQKCW9ic29sZXRlIC0tY29uZmlnIG9wdGlvbi4gIFJlbW92ZWQgbG9hZGluZyBvZiBnbG9iYWwgd2luZSBjb25maWcgZmlsZS4KCUNsZWFuZWQgdXAgc29tZSBtZXNzYWdlcy4KCgkqIGNvbnRyb2xzL2VkaXQuYzoKCUphbWVzIEhhdGhld2F5IDxqYW1lc0BtYWNhZGFtaWFuLmNvbT4KCWVzLT5idWZmZXJfc2l6ZSBpcyBub3QgYWx3YXlzIHRoZSBsZW5ndGggb2YgdGhlIHRleHQgY3VycmVudGx5IGluIHRoZQoJZWRpdGJveCwgc28gdXNlIC0xIGluc3RlYWQuCgoJKiBsb2FkZXIvbW9kdWxlLmMsIGxvYWRlci9uZS9tb2R1bGUuYywgZGxscy9udGRsbC9udGRsbC5zcGVjOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAYXNpLmZyPgoJQWRkZWQgYSBzcGVjaWZpYyBkZWJ1ZyBjaGFubmVsIGZvciBkbGwgbG9hZGluZyAoYnVpbHRpbi9uYXRpdmUpLgoKCSogb2JqZWN0cy9kaWIuYywgb2JqZWN0cy9lbmhtZXRhZmlsZS5jLCBvYmplY3RzL21ldGFmaWxlLmMsIG9iamVjdHMvcGFsZXR0ZS5jLCBvYmplY3RzL3RleHQuYzoKCUpvZXJnIE1heWVyIDxqbWF5ZXJAbG9wbG9mLmRlPgoJRml4ZWQgc29tZSBzaWduZWQvdW5zaWduZWQgd2FybmluZ3MuCgoJKiBmaWxlcy9maWxlLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAbG9va3NtYXJ0LmNvbS5hdT4KCUltcGxlbWVudGVkIGFzeW5jaHJvbm91cyBSZWFkRmlsZSBhbmQgV3JpdGVGaWxlLgoKCSogdG9vbHMvd2luZW1ha2VyOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVJlcXVpcmUgdGhhdCB0aGUgdXNlciBzcGVjaWZ5IGEgd29yayBkaXJlY3RvcnkuIFRoaXMgcHJvdmlkZXMgYQoJc2FmZWd1YXJkIGFnYWluc3QgYWNjaWRlbnRhbCBpbnZvY2F0aW9ucy4KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmM6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJT25seSBjb3B5IHRoZSBkd1NpemUgYnl0ZXMgcmVhbGx5IG9jY3VwaWVkIGJ5IGxwUHJvcFNoZWV0UGFnZS4KCgkqIGluY2x1ZGUvd2luZG93c3guaDoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRm9yIHRoZSBHbG9iYWwqUHRyKiBzZXQgb2YgbWFjcm9zLCByZXBsYWNlIHRoZSAxNmJpdCB2ZXJzaW9uIHdpdGgKCXRoZWlyIDMyIGJpdCBlcXVpdi4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJVWxyaWNoIEN6ZWthbGxhIDx1Y3pla2FsbGFAY29kZXdlYXZlcnMuY29tPgoJT25seSBjYWxsIFRPT0xCQVJfQ2FsY1Rvb2xiYXIgd2hlbiBwYXJhbWV0ZXJzIGNoYW5nZS4KCjIwMDEtMDEtMDkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb250cm9scy9jb21iby5jLCBjb250cm9scy9saXN0Ym94LmMsIGRsbHMvdXNlci9jb250cm9scy5oOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIHVuaWNvZGUgd2luZG93IHByb2MgZm9yIHRoZSBsaXN0Ym94IGNvbnRyb2wuCglSZXBsYWNlZCBhbGwgYW5zaSBjYWxscyBieSB0aGVpciB1bmljb2RlIGVxdWl2YWxlbnRzLgoJUmVtb3ZlZCB1c2Ugb2YgdGhlIGN1c3RvbSBsb2NhbCBoZWFwLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVRlc3QgZm9yIE5VTEwgYW5kIExQU1RSX1RFWFRDQUxMQkFDSyBiZWZvcmUgdXNpbmcgbHBDb2x1bW4tPnBzelRleHQuCgoJKiBkbGxzL2RkcmF3L2RzdXJmYWNlL21haW4uYzoKCUdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJRml4ZWQgc29tZSBpbmNvcnJlY3QgZm9ybWF0IHN0cmluZ3MuCgoJKiBkZWJ1Z2dlci9kYmdtYWluLmM6IFJlbW92ZWQgb2Jzb2xldGUgZmlsZS4KCgkqIGluY2x1ZGUvd2luZGVmLmgsIGluY2x1ZGUvd2ludXNlci5oLCB3aW5kb3dzL3VzZXIuYywgZGxscy91c2VyL21pc2MuYzoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglNb3ZlIEhEV1AgdG8gd2ludXNlci5oLgoJQ29udmVydCBIV0lOU1RBIHRvIFNUUklDVC4KCgkqIGZpbGVzL2RyaXZlLmMsIG1pc2MvY2Ryb20uYzoKCVJ5YW4gQ3VtbWluZyA8Ym9kbmFyNDJAYm9kbmFyNDIuZGhzLm9yZz4KCU1ha2UgQ0RST01fR2V0TGFiZWwgcmV0dXJuIDAgaW4gdGhlIGV2ZW50IG9mIGZhaWx1cmUsIGFuZCBtYWtlIHRoZQoJZGVmYXVsdCBsYWJlbCBmb3IgZHJpdmVzIGEgc3RyaW5nIG9mIDExIHNwYWNlcy4KCgkqIGRsbHMvd2luYXNwaS9hc3BpLmM6CglEYXZpZCBFbGxpb3R0IDxkZmVAaW5maW5pdGUtaW50ZXJuZXQubmV0PgoJRml4ZWQgdXNhZ2Ugb2YgUmVnRW51bVZhbHVlQS4KCgkqIGRsbHMvd2luc3Bvb2wvaW5mby5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJSGFuZGxlIHRoZSBFbnVtUHJpbnRlcnMoKSBmbGFnIFBSSU5URVJfRU5VTV9ERUZBVUxUIGluIHRoZSBzYW1lIHdheQoJdGhhdCBOVCBkb2VzIC0gdGhhdCBpcyBpZ25vcmUgaXQgYW5kIHJldHVybiBUUlVFLgoKCSogZGxscy93aW5tbS9tY2ljZGEvbWNpY2RhLmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglBY3R1YWxseSBjYWxsIENEUk9NX0F1ZGlvX0dldFRyYWNrc0luZm8gd2hlbiByZXRyaWV2aW5nCglNQ0lfQ0RBX1NUQVRVU19UUkFDS19UWVBFLgoJV0lORV9DREFfT1BFTiBtYXBzIHRvIE1DSUVSUl9IQVJEV0FSRS4KCgkqIHNjaGVkdWxlci9zZXJ2aWNlcy5jOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVNFUlZJQ0VfQWRkT2JqZWN0IGNoZWNrIGZvciBOVUxMIGhhbmRsZXMgaW4gYWRkaXRpb24gdG8KCUlOVkFMSURfSEFORExFX1ZBTFVFLgoKCSogZmlsZXMvZmlsZS5jOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVRoZSBsYXN0IHBhcmFtZXRlciBvZiBDcmVhdGVGaWxlIHNob3VsZCBiZSAwIChha2EgTlVMTCksIG5vdCAtMS4KCUNyZWF0ZUZpbGUgcmV0dXJucyBJTlZBTElEX0hBTkRMRV9WQUxVRSB3aGVuIGl0IGZhaWxzLCBub3QKCUhGSUxFX0VSUk9SLgoJQWRkZWQgY29tbWVudHMuCgoJKiB3aW4zMi9jb25zb2xlLmM6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJcHR5X2hhbmRsZSBpcyBhIEhBTkRMRSwgbm90IGFuIGludC4KCgkqIHRvb2xzL3dpbmVtYWtlcjoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CgkoY29uZmlndXJlKSBMb29rIGZvciB0aGUgaGVhZGVycyBpbiAkV0lORV9ST09UL2luY2x1ZGUvd2luZSBhbmQKCS9vcHQvd2luZS9pbmNsdWRlL3dpbmUuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBhc2kuZnI+CglTZW5kIHRoZSBjcmVhdGlvbiBub3RpZmljYXRpb24gdG8gdGhlIHRydWUgb3duZXIgb2YgdGhlIHRvb2x0aXAuCgoJKiBjb250cm9scy9jb21iby5jOgoJVWxyaWNoIEN6ZWthbGxhIDx1Y3pla2FsbGFAY29kZXdlYXZlcnMuY29tPgoJRW5zdXJlIHRoZXJlIGlzIGFuIGVkaXQgY29udHJvbCB3aGVuIHdlIHJlc2V0IGNvbnRlbnRzLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJVWxyaWNoIEN6ZWthbGxhIDx1Y3pla2FsbGFAY29kZXdlYXZlcnMuY29tPgoJQWRqdXN0IGl0ZW0gcmVjdHMgYnkgaG9yaXpvbnRhbCBzY3JvbGxiYXIgb2Zmc2V0LgoKCSogZGxscy9jb21jdGwzMi90YWIuYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQGFzaS5mcj4KCUZpeGVkIFRDTV9HZXRSb3dDb3VudC4KCjIwMDEtMDEtMDcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3R0eWRydi90dHlkcnYuc3BlYzoKCU5lZWQgdG8gaW1wb3J0IHVzZXIzMiBldmVuIHRob3VnaCB3ZSBkb24ndCB1c2Ugc3ltYm9scyBmcm9tIGl0IHlldC4KCgkqIHRvb2xzL3NwZWNtYWtlci9NYWtlZmlsZS5pbjoKCUxlb25hcmQgTm9ycmflcmQgPHZpbnNjaUBuaWMuZnVuZXQuZmk+CglSZWZlcmVuY2UgJChTUkNESVIpIHdoZW4gaW5zdGFsbGluZyB0aGUgcGVybCBzY3JpcHQgKGl0IGRvZXNuJ3QgZXhpc3QKCWluIHRoZSBidWlsZCBkaXJlY3RvcnkpLgoKCSogZGxscy9jb21tZGxnL2ZpbmRkbGczMi5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAYXNpLmZyPgoJQ2hhbmdlZCBzdHJpbmcgcG9pbnRlciBjYWxjdWxhdGlvbi4KCgkqIGluY2x1ZGUvc2hsd2FwaS5oLCBpbmNsdWRlL3dpbmUvdW5kb2NzaGVsbC5oLCBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLCBkbGxzL3NobHdhcGkvcGF0aC5jLCBkbGxzL3NobHdhcGkvcmVnLmMsIGRsbHMvc2hlbGwzMi9jbGlwYm9hcmQuYywgZGxscy9zaGVsbDMyL2VudW1pZGxpc3QuYywgZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jLCBkbGxzL3NoZWxsMzIvc2hsZmlsZW9wLmMsIGRsbHMvc2hlbGwzMi9zaGxtZW51LmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglNb3ZlZCBhbGwgdGhlIGRvY3VtZW50ZWQgc2hsd2FwaSBmdW5jdGlvbnMgb3V0IG9mIHVuZG9jc2hlbGwuaCBpbnRvCglzaGx3YXBpLmguICBOb3RoaW5nIGJ1dCBmaWxlcyBpbiBkbGxzL3NoZWxsMzIgd2lsbCBub3cgaW5jbHVkZQoJdW5kb2NzaGVsbC5oLgoKCSogZGxscy9kZHJhdy9tYWluLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVJlbW92ZWQgb25lICYsIG5vdyBDb0NyZWF0ZUluc3RhbmNlKCkgb2YgZGRyYXcgb2JqZWN0cyB3b3JrcyBhZ2Fpbi4KCgkqIHNlcnZlci9hc3luYy5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQGxvb2tzbWFydC5jb20uYXU+CglDYWxjdWxhdGUgdGhlIHRpbWVvdXQgdGltZSBvbmNlIHdoZW4gdGhlIGFzeW5jIGlzIGNyZWF0ZWQuCgoJKiBpbmNsdWRlL3dpbmJhc2UuaDoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0Bsb29rc21hcnQuY29tLmF1PgoJSW1wbGVtZW50ZWQgSGFzT3ZlcmxhcHBlZENvbXBsZXRlZCBtYWNyby4KCgkqIHdpbmRvd3Mvd2lucHJvYy5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBtaXNzaW5nIG1hcHBpbmcgZm9yIExCX0ZJTkRTVFJJTkdFWEFDVCBtZXNzYWdlICh0aGFua3MgdG8gR2VyYXJkCglQYXRlbCBmb3IgcmVwb3J0aW5nIHRoZSBidWcpLgoKCSogY29udHJvbHMvY29tYm8uYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglDb21ib2JveCBzaG91bGQgY2xlYXIgaXRzIGN1cnJlbnQgc2VsZWN0aW9uIG9uIHJlc3BvbnNlIHRvCglDQl9TRVRDVVJTRUwoLTEpIG1lc3NhZ2UuCgoyMDAxLTAxLTA2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy93aW5lZG9zL21vZHVsZS5jLCBkbGxzL3dpbmVkb3Mvd2luZWRvcy5zcGVjLCBpbmNsdWRlL2NhbGxiYWNrLmgsIGluY2x1ZGUvZG9zZXhlLmgsIGxvYWRlci9uZS9tb2R1bGUuYywgbWlzY2VtdS9tYWluLmMsIHNjaGVkdWxlci9wcm9jZXNzLmM6CglVc2UgdGhlIGV4ZSBuYW1lIGFuZCBmaWxlIGhhbmRsZSB3ZSBnb3QgZnJvbSB0aGUgc2VydmVyIGFsc28gd2hlbgoJc3RhcnRpbmcgV2luMTYgb3IgRE9TIHByb2dyYW1zLCB0byBhdm9pZCBkZXBlbmRpbmcgb24gdGhlIGNvbnRlbnRzIG9mCgl0aGUgY29tbWFuZC1saW5lLgoKCSogc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdGhyZWFkLmgsIHNlcnZlci90aW1lci5jLCBzZXJ2ZXIvdHJhY2UuYywgaW5jbHVkZS9zZXJ2ZXIuaCwgc2NoZWR1bGVyL3N5bmNocm8uYywgc2NoZWR1bGVyL3RocmVhZC5jLCBzZXJ2ZXIvYXN5bmMuYywgc2VydmVyL2RlYnVnZ2VyLmM6CglBZGRlZCBzZXBhcmF0ZSBxdWV1ZSBmb3IgInN5c3RlbSIgQVBDcyB0aGF0IGdldCBjYWxsZWQgZXZlbiB3aGVuIHRoZQoJdGhyZWFkIGlzIG5vdCBpbiBhbiBhbGVydGFibGUgc3RhdGUuCglTcGVjaWZ5IHRoZSBzZWxlY3RfcmVxdWVzdCB0aW1lb3V0IGFzIGFic29sdXRlIHZhbHVlIHNvIHRoYXQgd2UgY2FuCglyZXN0YXJ0IHRoZSByZXF1ZXN0IHdoZW4gaW50ZXJydXB0ZWQuCgoJKiB3aW5lLmluaTogUmVtb3ZlZCBvbGQgZm9ybWF0IGNvbmZpZyBmaWxlLgoKCSogY29udHJvbHMvbWVudS5jOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCU1vZGlmeSB0aGUgbG9vayBvZiBiaXRtYXAgbWVudSBpdGVtcyB0byBtYXRjaCBXaW45NSBhbmQgV2luOTgKCUZpeCB0aGUgc3Vua2VuIGVkZ2UvYml0bWFwIG92ZXJsYXAgaW4gdGhlIFdpbjk4IGxvb2sKCUludHJvZHVjZSBhbiBJU19NQUdJQ19JVEVNIG1hY3JvIHRvIHRlc3QgaWYgdGhlIGl0ZW0gaXMgJ21hZ2ljJwoKCSogZ3JhcGhpY3MvZW5obWV0YWZpbGVkcnYvaW5pdC5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9pbml0LmMsIGxvYWRlci9tb2R1bGUuYywgbG9hZGVyL25lL21vZHVsZS5jLCBsb2FkZXIvcGVfaW1hZ2UuYywgbWVtb3J5L3JlZ2lzdHJ5LmMsIG1zZG9zL2ludDIxLmMsIG9iamVjdHMvZW5obWV0YWZpbGUuYywgb2JqZWN0cy9tZXRhZmlsZS5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBkbGxzL2FkdmFwaTMyL3JlZ2lzdHJ5LmMsIGRsbHMvY3J0ZGxsL2ZpbGUuYywgZGxscy9vbGVhdXQzMi90eXBlbGliLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZGxscy91c2VyL2V4dGljb24uYywgZGxscy93aW5lZG9zL21vZHVsZS5jOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVkIHNvbWUgSEZJTEUgdnMuIEhBTkRMRSBtaXNtYXRjaGVzLgoJSWYgbm90IHVzZWQgdGhlIGxhc3QgcGFyYW1ldGVyIG9mIENyZWF0ZUZpbGUgbXVzdCBiZSAwLCBub3QgLTEuCgoJKiBkbGxzL21zYWNtL21zYWNtLnNwZWMsIGRsbHMvbXNhY20vbXNhY21fbWFpbi5jLCBkb2N1bWVudGF0aW9uL3NhbXBsZXMvY29uZmlnLCBsb2FkZXIvbG9hZG9yZGVyLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZvcmNlZCBsb2FkaW5nIG9mIG1zYWNtMzIgd2hlbiBtc2FjbSBpcyBsb2FkZWQuCglBZGRlZCBtc2FjbSBETEwgcGFpciBpbiBjb25maWcgZmlsZXMuCglBZGRlZCBzb21lIGR1bWIgY2FsbHMgZnJvbSAxNiB0byAzMi4KCgkqIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jLCBkbGxzL3dpbmluZXQvd2luaW5ldC5zcGVjOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IEludGVybmV0Q2Fub25pY2FsaXplVXJsLgoKCSogZGxscy9kc291bmQvZHNvdW5kX21haW4uYzoKCUpvaGFuIEdpbGwgPGpvaGFuZUBseXNhdG9yLmxpdS5zZT4KCUFkZGVkIGEgbW9yZSB0cnV0aGZ1bCBtZXNzYWdlIGFib3V0IHdoYXQgcmVhbGx5IGlzIHdyb25nLgoKCSogZGxscy9nZGkvcHJpbnRkcnYuYywgaW5jbHVkZS93aW5lL3dpbmdkaTE2Lmg6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCURvbid0IGNhbGwgUXVlcnlBYm9ydDE2KCkgaW4gV3JpdGVTcG9vbDE2KCksIHNpbmNlIGl0IG1pZ2h0IGJlIGNhbGxlZAoJd2l0aCBsb2NrcyBoZWxkIChhbmQgd2UgZG8gbm90IG5lZWQgdG8gY2FsbCBpdCBoZXJlKS4KCgkqIGNvbnRyb2xzL2xpc3Rib3guYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJVG9vayBhIHN0YWIgYXQgaW1wbGVtZW50aW5nIExCU19OT1NFTC4KCjIwMDEtMDEtMDUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3NlcnZlci5oLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvdHJhY2UuYzoKCVNlbmQgdGhlIGV4ZSBmaWxlIGhhbmRsZSBpbiBpbml0X3Byb2Nlc3NfZG9uZSByZXF1ZXN0LgoKCSogZmlsZXMvcHJvZmlsZS5jOgoJQXZvaWQgY3Jhc2hpbmcgb24gaW52YWxpZCBsaW5lcyBkdXJpbmcgY29uZmlnIGZpbGUgY29udmVyc2lvbi4KCgkqIGRsbHMvc2hsd2FwaS9NYWtlZmlsZS5pbiwgZGxscy9zaGx3YXBpL29yZGluYWwuYywgZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYywgZGxscy9zaGx3YXBpL3VybC5jLCBpbmNsdWRlL3NobHdhcGkuaDoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudGVkIGEgZmV3IFVybCogZnVuY3Rpb25zLgoKCSogY29udHJvbHMvY29tYm8uYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGRlZCB1bmljb2RlIHdpbmRvdyBwcm9jIGZvciBjb21ib2JveCBjb250cm9sLgoJUmVwbGFjZWQgYW5zaSBjYWxscyBieSB0aGVpciB1bmljb2RlIGVxdWl2YWxlbnRzLgoKCSogY29udHJvbHMvc3RhdGljLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgdW5pY29kZSB3aW5kb3cgcHJvYyBmb3IgdGhlIHN0YXRpYyBjb250cm9sLgoJUmVwbGFjZWQgYW5zaSBjYWxscyBieSB0aGVpciB1bmljb2RlIGVxdWl2YWxlbnRzLgoKCSogZGxscy93c29jazMyL3NvY2tldC5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQGxvb2tzbWFydC5jb20uYXU+CglSZXR1cm5pbmcgc3VjY2VzcyBmb3IgdW5rbm93biBXU0NOVExfVENQSVBfUVVFUllfSU5GTyBjb2RlIG1ha2VzIHdpbjk4Cgl3aW5pcGNmZyB3b3JrLgoKCSogZGxscy9kaW5wdXQvbW91c2UvbWFpbi5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglNb3VzZSBldmVudHMgZml4LgoKCSogdG9vbHMvbWFrZV9yZXF1ZXN0cywgd2luMzIvY29uc29sZS5jLCB3aW4zMi9kZXZpY2UuYywgd2luZG93cy9xdWV1ZS5jLCBsb2FkZXIvbmUvbW9kdWxlLmMsIG1lbW9yeS92aXJ0dWFsLmMsIG1pc2MvcmVnaXN0cnkuYywgcmVsYXkzMi9idWlsdGluMzIuYywgc2NoZWR1bGVyL2NsaWVudC5jLCBzY2hlZHVsZXIvaGFuZGxlLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci90aHJlYWQuYywgc2NoZWR1bGVyL3RpbWVyLmMsIHNlcnZlci9hc3luYy5jLCBzZXJ2ZXIvY2hhbmdlLmMsIHNlcnZlci9jb25zb2xlLmMsIHNlcnZlci9kZWJ1Z2dlci5jLCBzZXJ2ZXIvZGV2aWNlLmMsIHNlcnZlci9ldmVudC5jLCBzZXJ2ZXIvZmlsZS5jLCBzZXJ2ZXIvaGFuZGxlLmMsIHNlcnZlci9oYW5kbGUuaCwgc2VydmVyL21hcHBpbmcuYywgc2VydmVyL211dGV4LmMsIHNlcnZlci9vYmplY3QuaCwgc2VydmVyL3BpcGUuYywgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3Byb2Nlc3MuaCwgc2VydmVyL3F1ZXVlLmMsIHNlcnZlci9yZWdpc3RyeS5jLCBzZXJ2ZXIvcmVxdWVzdC5jLCBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvc2VtYXBob3JlLmMsIHNlcnZlci9zZXJpYWwuYywgc2VydmVyL3NuYXBzaG90LmMsIHNlcnZlci9zb2NrLmMsIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RocmVhZC5oLCBzZXJ2ZXIvdGltZXIuYywgc2VydmVyL3RyYWNlLmMsIGRsbHMva2VybmVsL3N5bmMuYywgZGxscy9rZXJuZWwvdG9vbGhlbHAuYywgZGxscy9udGRsbC9yZWcuYywgZGxscy9udGRsbC9zeW5jLmMsIGRsbHMvd2luc29jay9zb2NrZXQuYywgZmlsZXMvZG9zX2ZzLmMsIGZpbGVzL2ZpbGUuYywgaW5jbHVkZS9maWxlLmgsIGluY2x1ZGUvbW9kdWxlLmgsIGluY2x1ZGUvc2VydmVyLmgsIGxvYWRlci9lbGYuYywgbG9hZGVyL21vZHVsZS5jLCBsb2FkZXIvcGVfaW1hZ2UuYzoKCUFkZGVkIGhhbmRsZV90IHR5cGUgdG8gc2VydmVyIGludGVyZmFjZSBzbyB0aGF0IHdlIGNhbiBtYWtlIGhhbmRsZXMKCXBvaW50ZXJzIGxhdGVyIG9uLgoJQWx3YXlzIHVzZSAwIHRvIHNpZ25hbCBpbnZhbGlkIGhhbmRsZSBpbiBzZXJ2ZXIgcmVxdWVzdHMuCgoJKiBpbmNsdWRlL2NvbW1kbGcuaCwgcHJvZ3JhbXMvY21kbGd0c3QvY21kbGd0c3QuYzoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglJIHRyaXBsZSBjaGVja2VkIGJ1dCB5ZXMsIENIT09TRUNPTE9SLmhJbnN0YW5jZSBpcyBhbiBIV05ELi4uCgoJKiBkbGxzL3dpbm1tL2RyaXZlci5jLCBtc2Rvcy92Z2EuYzoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglXZSBtdXN0IGNhc3QgdGhlIHJldHVybiB2YWx1ZSBvZiBHZXRQcm9jQWRkcmVzcy4KCgkqIHByb2dyYW1zL3Byb2dtYW4vZGlhbG9nLmMsIHByb2dyYW1zL3Byb2dtYW4vZ3JvdXAuYywgcHJvZ3JhbXMvcHJvZ21hbi9tYWluLmMsIHByb2dyYW1zL3Byb2dtYW4vcHJvZ3JhbS5jOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVRoZSBXbmRQcm9jIGZ1bmN0aW9uIHdhcyBtaXNzaW5nIHRoZSBDQUxMQkFDSyBtb2RpZmllci4KCgkqIHByb2dyYW1zL2F2aXRvb2xzL2F2aWluZm8uYywgcHJvZ3JhbXMvYXZpdG9vbHMvYXZpcGxheS5jLCBwcm9ncmFtcy9hdml0b29scy9pY2luZm8uYzoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglUaGUgZmlyc3QgMiBwYXJhbWV0ZXJzIG9mIFdpbk1haW4gYXJlIEhJTlNUQU5DRXMsIG5vdCBIQU5ETEVzLgoKCSogY29udHJvbHMvZWRpdC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVkIHNvbWUgcHJvYmxlbXMgd2l0aCBzY3JvbGxpbmcgaW4gdGhlIGVkaXQgY29udHJvbC4KCjIwMDEtMDEtMDQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGUzMi9pZnMuYywgZGxscy9vbGUzMi9zdG9yYWdlLmMsIGluY2x1ZGUvd2luZS9vYmpfYmFzZS5oLCBpbmNsdWRlL3dpbmUvb2JqX2NvbnRyb2wuaCwgaW5jbHVkZS93aW5lL29ial9pbnBsYWNlLmgsIGluY2x1ZGUvd2luZS9vYmpfbW9uaWtlci5oLCBkbGxzL2RkcmF3L2QzZG1hdGVyaWFsLmMsIGRsbHMvZGRyYXcvZDNkdGV4dHVyZS5jLCBkbGxzL2RkcmF3L2RpcmVjdDNkL21lc2EuYywgZGxscy9kaW5wdXQvZGlucHV0X21haW4uYywgZGxscy9kaW5wdXQvam95c3RpY2svbGludXguYywgZGxscy9kaW5wdXQvam95c3RpY2svbGludXhpbnB1dC5jLCBkbGxzL2RpbnB1dC9rZXlib2FyZC9tYWluLmMsIGRsbHMvZGlucHV0L21vdXNlL21haW4uYywgZGxscy9kcGxheXgvZHBsYXkuYywgZGxscy9kcGxheXgvZHBsb2JieS5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglSZW1vdmVkIHRoZSAnZm4nIHByZWZpeCAoaS5lLiBJQ09NX0ZOKS4KCgkqIGluY2x1ZGUvYWNjb25maWcuaCwgaW5jbHVkZS9jb25maWcuaC5pbiwgaW5jbHVkZS9kZHJhdy5oLCBtc2Rvcy92Z2EuYywgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLCBkbGxzL2RkcmF3L2RjbGlwcGVyL21haW4uYywgZGxscy9kZHJhdy9kY2xpcHBlci9tYWluLmgsIGRsbHMvZGRyYXcvZGRyYXcvZGdhLmMsIGRsbHMvZGRyYXcvZGRyYXcvZGdhMi5jLCBkbGxzL2RkcmF3L2RkcmF3L2RnYTIuaCwgZGxscy9kZHJhdy9kZHJhdy9tYWluLmMsIGRsbHMvZGRyYXcvZGRyYXcvbWFpbi5oLCBkbGxzL2RkcmF3L2RkcmF3L3RodW5rcy5jLCBkbGxzL2RkcmF3L2RkcmF3L3VzZXIuYywgZGxscy9kZHJhdy9kZHJhdy91c2VyLmgsIGRsbHMvZGRyYXcvZGRyYXcveDExLmMsIGRsbHMvZGRyYXcvZGRyYXcveHZpZG1vZGUuYywgZGxscy9kZHJhdy9kZHJhdy94dmlkbW9kZS5oLCBkbGxzL2RkcmF3L2RpcmVjdDNkL21lc2EuYywgZGxscy9kZHJhdy9kcGFsZXR0ZS9kZ2EuYywgZGxscy9kZHJhdy9kcGFsZXR0ZS9tYWluLmMsIGRsbHMvZGRyYXcvZHBhbGV0dGUvbWFpbi5oLCBkbGxzL2RkcmF3L2RwYWxldHRlL3gxMS5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL2RnYS5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL2RnYTIuYywgZGxscy9kZHJhdy9kc3VyZmFjZS9kZ2EyLmgsIGRsbHMvZGRyYXcvZHN1cmZhY2UvZGliLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UvZGliLmgsIGRsbHMvZGRyYXcvZHN1cmZhY2UvZGlidGV4dHVyZS5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL2RpYnRleHR1cmUuaCwgZGxscy9kZHJhdy9kc3VyZmFjZS9mYWtlemJ1ZmZlci5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL2Zha2V6YnVmZmVyLmgsIGRsbHMvZGRyYXcvZHN1cmZhY2UvbWFpbi5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL21haW4uaCwgZGxscy9kZHJhdy9kc3VyZmFjZS90aHVua3MuYywgZGxscy9kZHJhdy9kc3VyZmFjZS90aHVua3MuaCwgZGxscy9kZHJhdy9kc3VyZmFjZS91c2VyLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UvdXNlci5oLCBkbGxzL2RkcmF3L2RzdXJmYWNlL3duZHByb2MuYywgZGxscy9kZHJhdy9kc3VyZmFjZS93bmRwcm9jLmgsIGRsbHMvZGRyYXcvZHN1cmZhY2UveDExLmMsIGRvY3VtZW50YXRpb24vZGRyYXcudHh0LCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy9kZHJhdy9NYWtlZmlsZS5pbiwgZGxscy9kZHJhdy9jb252ZXJ0LmMsIGRsbHMvZGRyYXcvZDNkX3ByaXZhdGUuaCwgZGxscy9kZHJhdy9kM2R0ZXh0dXJlLmMsIGRsbHMvZGRyYXcvZGRjb21pbXBsLmgsIGRsbHMvZGRyYXcvZGRyYXcuc3BlYywgZGxscy9kZHJhdy9kZHJhd19wcml2YXRlLmgsIGRsbHMvZGRyYXcvaGVscGVyLmMsIGRsbHMvZGRyYXcvbWFpbi5jLCBkbGxzL2RkcmF3L21lc2FfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L3N0cnVjdF9jb252ZXJ0LmMsIGRsbHMvZGRyYXcveDExLmMsIGRsbHMvZGRyYXcveDExX3ByaXZhdGUuaDoKCUFuZHJldyBMZXd5Y2t5IDxhbmRyZXdAdHJhbnNnYW1pbmcuY29tPgoJR2F2cmllbCBTdGF0ZSA8Z2F2QHRyYW5zZ2FtaW5nLmNvbT4KCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJTWFqb3IgRGlyZWN0RHJhdyByZXN0cnVjdHVyZS9yZWltcGxlbWVudGF0aW9uLCB1c2luZyBhbiBpbXByb3ZlZCBjb21wb25lbnQKCW9iamVjdCBtb2RlbCBoaWVyYXJjaHkuIFRoZSBpbXBsZW1lbnRhdGlvbiBjdXJyZW50bHkgc3VwcG9ydHM6CgktIERpcmVjdERyYXcgb3ZlciBHREkvVVNFUiBpbiBhIHdpbmRvdyAodXNpbmcgRElCc2VjdGlvbnMgYW5kCgkgIGFzeW5jaHJvbm91cyB1cGRhdGVzKQoJLSBYVmlkTW9kZQoJLSBYRjg2REdBMgoJLSBBbGwgRGlyZWN0RHJhdyBpbnRlcmZhY2VzIGZyb20gdmVyc2lvbnMgMSB0byA3IChhdCBsZWFzdCBpbiB0aGVvcnkpCgktIEhvb2tzIGZvciBEaXJlY3QzRCBpbnRlcmZhY2VzCgoJKiBkbGxzL21zYWNtL3dpbmVhY20uaCwgaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9tbXN5c3RlbS5oLCBpbmNsdWRlL21zYWNtLmgsIGluY2x1ZGUvbXNhY21kbGcuaDoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgYSBmZXcgbWlzc2luZyBwYXJ0cy4KCgkqIGNvbnRyb2xzL21lbnUuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRml4ZWQgdGhlIGFsaWdubWVudCBvZiB0aGUgTUZfUklHSFRKVVNUSUZZIG1lbnUgaXRlbXMuCgoJKiBtaXNjL21haW4uYzogUmVtb3ZlZCBvYnNvbGV0ZSBjb2RlLgoKCSogZGxscy9NYWtlZmlsZS5pbjogRml4ZWQgZGxsIGRlcGVuZGVuY2llcy4KCgkqIGRsbHMvd2lubW0vbG9sdmxkcnYuYywgZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmMsIGluY2x1ZGUvbW1kZGsuaCwgZGxscy9kc291bmQvZHNvdW5kX21haW4uYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJTm93IHVzaW5nIG1hbmlmZXN0IGNvbnN0YW50IGluc3RlYWQgb2YgcmF3IHZhbHVlcyBmb3IgYWxsIHRoZQoJRFJWX1FVRVJZPz8/IHZhbHVlcy4KCgkqIGRsbHMva2VybmVsL3RodW5rLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAbG9va3NtYXJ0LmNvbS5hdT4KCUFkZGVkIFVscmljaCBXZWlnYW5kJ3MgZGVzY3JpcHRpb24gb2YgS0VSTkVMMzJfOTkuCgoJKiBtZW1vcnkvZ2xvYmFsLmM6CglNaWtlIE1jQ29ybWFjayAgPG1pa2VfbWNjb3JtYWNrQGxvb2tzbWFydC5jb20uYXU+CglTb21lIGJvcmtlbiBtZW1vcnkgbW9uaXRvcmluZyBwcm9ncmFtcyBkaXZpZGUgYnkgZHdUb3RhbFBhZ2VGaWxlLAoJd2hpY2ggcHJvYmFibHkgaXNuJ3QgemVybyBvbiB3aW5kb3dzLgoKCSogY29uZmlndXJlLmluLCB0b29scy9NYWtlZmlsZS5pbiwgdG9vbHMvc3BlY21ha2VyLy5jdnNpZ25vcmUsIHRvb2xzL3NwZWNtYWtlci9NYWtlZmlsZS5pbiwgdG9vbHMvc3BlY21ha2VyL1JFQURNRSwgdG9vbHMvc3BlY21ha2VyL2RsbC5jLCB0b29scy9zcGVjbWFrZXIvZnVuY3Rpb25fZ3JlcC5wbCwgdG9vbHMvc3BlY21ha2VyL21haW4uYywgdG9vbHMvc3BlY21ha2VyL21pc2MuYywgdG9vbHMvc3BlY21ha2VyL21zbWFuZ2xlLmMsIHRvb2xzL3NwZWNtYWtlci9vdXRwdXQuYywgdG9vbHMvc3BlY21ha2VyL3NlYXJjaC5jLCB0b29scy9zcGVjbWFrZXIvc3BlY21ha2VyLmgsIHRvb2xzL3NwZWNtYWtlci9zeW1ib2wuYywgY29uZmlndXJlOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUFkZGVkIHNwZWMgZ2VuZXJhdGlvbiB0b29sIHNwZWNtYWtlci4KCgkqIG1pc2Mvb3B0aW9ucy5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCVJlaW1wbGVtZW50ZWQgInJlbGF5PSIgYW5kICJzbm9vcD0iIHN1Ym9wdGlvbnMuCgoJKiBpbmNsdWRlL21tc3lzdGVtLmgsIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbmRlZi5oLCBpbmNsdWRlL3dpbm5scy5oLCBpbmNsdWRlL3dpbnVzZXIuaDoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglNb3ZlZCB0aGUgZnVuY3Rpb24gcG9pbnRlciB0eXBlcyB0byB0aGVpciByaWdodGZ1bCBoZWFkZXJzLgoJVGhlIGRlZmluaXRpb24gb2YgdGhlIGZ1bmN0aW9uIHBvaW50ZXIgdHlwZXMgbXVzdCBiZSBiYXNlZCBvbiBTVFJJQ1QuCgoJKiBncmFwaGljcy94MTFkcnYvYml0Ymx0LmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCVN0YXJjcmFmdCB3YXMgY29uZnVzZWQgYnkgYSB3cm9uZyBGQUxTRSBCaXRCbHQgcmV0dXJuLgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVNldCBmcmFnbWVudHMgZm9yIHdhdmUgaW5wdXQgdG8gNyB4IDEwMjQgYnl0ZS4KCgkqIGRsbHMvd2lubW0vbG9sdmxkcnYuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgbG9hZGluZyBvZiAxNiBiaXQgZHJpdmVycy4KCUJldHRlciBzdXBwb3J0IGZvciBuYXRpdmUgbWFwcGVycy4KCgkqIGNvbnRyb2xzL2xpc3Rib3guYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglGaXhlZCBhIHByb2JsZW0gd2hlcmUgd2hlbiBkZWxldGluZyBhbiBpdGVtIHVzaW5nIGluZGV4IC0xIG9uIGFuIGVtcHR5CglsaXN0Ym94IHdlIHdvdWxkIHBhc3MgdGhyb3VnaCBhbiBpbGxlZ2FsIG5lZ2F0aXZlIGluZGV4IGFuZCBjYXVzZQoJcHJvYmxlbXMuCgoyMDAxLTAxLTAzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCVBhc3MgdGhlIGFwcGxpY2F0aW9uIG5hbWUgYWxzbyB3aGVuIHN0YXJ0aW5nIGEgVW5peCBhcHAsIGFuZCB1c2UgaXQgdG8KCWxvYWQgdGhlIG1haW4gZXhlIC5zbyBmaWxlLgoJRml4ZWQgYnVnIGluIGRpcmVjdG9yeSBoYW5kbGluZyBpbiBQUk9DRVNTX0NyZWF0ZS4KCgkqIGluY2x1ZGUvd2luYmFzZS5oOgoJSm9uIEdyaWZmaXRocyA8dG50anBncmlmZkB0c254dC5jby51az4KCUFkZGVkIEluaXRpYWxpemVDcml0aWNhbFNlY3Rpb25BbmRTcGluQ291bnQgcHJvdG90eXBlLgoKCSogaW5jbHVkZS93aW5kZWYuaCwgd2luZG93cy91c2VyLmM6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQ29udmVydCBIREVTSyB0byBTVFJJQ1QuCgoJKiBkbGxzL3dpbm1tL21jaXdhdmUvbWNpd2F2ZS5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglSZW1vdmVkIGR1cGxpY2F0ZSBmaWVsZCBpbiBpbnRlcm5hbCBzdHJ1Y3R1cmUuCglTaWxlbmNlZCB3YXJuaW5nIGZvciBNQ0lfQ09ORklHVVJFIG1lc3NhZ2UuCgoJKiBkbGxzL3dpbm1tL2xvbHZsZHJ2LmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIHN1cHBvcnQgZm9yIHRoZSBEUlZNX01BUFBFUl9TVEFUVVMgbWVzc2FnZS4KCgkqIGRsbHMvd2lubW0vd2F2ZW1hcC9tc2FjbS5kcnYuc3BlYywgZGxscy93aW5tbS93YXZlbWFwL3dhdmVtYXAuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJUmVwbGFjZWQgcG9pbnRlcnMgdG8gZXh0ZXJuYWwgZnVuY3Rpb25zIGJ5IGEgRExMIGltcG9ydC4KCgkqIGRsbHMvbXN2aWRlby9kcmF3ZGliLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVkIGJpdG1hcCBzaXplIGhhbmRsaW5nLgoKMjAwMS0wMS0wMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbmZpZ3VyZS5pbiwgaW5jbHVkZS9hY2NvbmZpZy5oLCBpbmNsdWRlL2NvbmZpZy5oLmluLCB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jLCBjb25maWd1cmU6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCVR1cm4gb24gZGV0ZWN0YWJsZSBhdXRvcmVwZWF0IGlmIHRoZSBYIEtleWJvYXJkIEV4dGVuc2lvbiBpcwoJZGV0ZWN0ZWQuCgoJKiBpbmNsdWRlL3dpbmRlZi5oLCBpbmNsdWRlL3d0eXBlcy5oOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCU1vdmVkIEhNRVRBRklMRVBJQ1QgdG8gd3R5cGVzLmguIE5vdGUsIEhNRVRBRklMRVBJQ1QgaXMgYWx3YXlzIGEKCSd2b2lkKicgdW5saWtlIHJlZ3VsYXIgaGFuZGxlcy4KCgkqIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGRsbHMvY29tbWRsZy9wcmludGRsZy5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglJbXBsZW1lbnQgUHJpbnREbGcxNiBiZXR0ZXIgKGFkZGluZyBQcmludERsZ1Byb2MxNiBhbmQgc2V2ZXJhbCBvdGhlcgoJMTZiaXQgZGVwZW5kZW50IGZ1bmN0aW9ucykKCUlmIHdlIGFyZSB1c2luZyBhIHRlbXBsYXRlIHdlIG1pZ2h0IG5vdCBoYXZlIHRoZSBkZWZhdWx0IGNvbWJvYm94IGZvcgoJcHJpbnRlcnMsIHVzZSB0aGUgZGVmYXVsdCBwcmludGVyIGluIHRob3NlIGNhc2VzLgoJTW9yZSBlcnJvciBtZXNzYWdlcyBhbmQgY2hlY2tzLgoJQWRkZWQgR2xvYmFsRmxhZ3MxNiBhbmQgR2xvYmFsUmVBbGxvYzE2IHRvIGtlcm5lbDMyLnNwZWMuCgoJKiB0b29scy93aW5lYnVpbGQvaW1wb3J0LmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbW1kMS5pbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCURlbGF5ZWQgaW1wb3J0IHRodW5rcyBmb3IgU3BhcmMuCgoJKiBkbGxzL2RwbGF5eC9kcGxheXhfbWVzc2FnZXMuYzoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglSZW1vdmVkIGFuICcjaWZkZWYgU1RSSUNUJy4KCgkqIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUJ1Z2ZpeCBmb3Igc291bmQgZHJvcHBpbmcgb3V0LCBhbmQgd29ya2Fyb3VuZCBmb3IgSGFsZi1MaWZlJ3MKCWJyYWluZGVhZCBzZWNvbmRhcnkgc291bmQgYnVmZmVyIG1hbmFnZW1lbnQuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYywgaW5jbHVkZS9zaGVsbGFwaS5oLCBpbmNsdWRlL3dpbmRlZi5oLCB3aW5kb3dzL3gxMWRydi9ldmVudC5jOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCU1vdmVkIEhEUk9QIHRvIHNoZWxsYXBpLmguCgoJKiBpbmNsdWRlL29iamJhc2UuaDoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglTaG91bGQgaW5jbHVkZSBjZ3VpZC5oLgoKCSogaW5jbHVkZS9vbGUyLmg6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgdHdvIGVycm9yIGNvZGVzOiBFX0RSQVcgYW5kIERBVEFfRV9GT1JNQVRFVEMuCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglSZXR1cm4gOC4zIGZpbGUgbmFtZXMuCglGaXhlZCBzaXplb2YoV0NIQVIpIGJ1Z3MuCgoJKiB0b29scy93cmMvQ0hBTkdFUywgdG9vbHMvd3JjL2dlbnJlcy5jLCB0b29scy93cmMvbmV3c3RydWMuYywgdG9vbHMvd3JjL3BhcnNlci55LCB0b29scy93cmMvd3JjLmg6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCS0gRml4ZWQgYSBieXRlb3JkZXIgY29udmVyc2lvbiBwcm9ibGVtIHdpdGggbWVzc2FnZSB0YWJsZXMuCgktIENhcmVmdWxseSByZWFkIGFuZCB3cml0ZSAocG9zc2libHkpIG1pc2FsaWduZWQgZGF0YSBlbGVtZW50cwoJICB0byBhdm9pZCBjcmFzaGVzIG9uIGFyY2hpdGVjdHVyZXMgd2hlcmUgdGhpcyBpcyBub3QgYWxsb3dlZC4KCgkqIHByb2dyYW1zL3ZpZXcvdmlldy5jLCBwcm9ncmFtcy9ub3RlcGFkL21haW4uYzoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglSZXBsYWNlZCBjYWxscyB0byBPcGVuRmlsZSB3aXRoIHRoZSBlcXVpdmFsZW50IGNhbGwgdG8KCUNyZWF0ZUZpbGUuIFJlbW92ZXMgdGhlIG5lZWQgdG8gY2FzdCB0aGUgcmVzdWx0IHRvIEhBTkRMRS4KCgkqIHByb2dyYW1zL3djbWQvYmF0Y2guYywgcHJvZ3JhbXMvd2NtZC9idWlsdGlucy5jLCBwcm9ncmFtcy93Y21kL3djbWRtYWluLmM6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJVGhlIGxhc3QgcGFyYW1ldGVyIG9mIENyZWF0ZUZpbGUgaXMgYSBIQU5ETEUgYW5kIHNob3VsZCB0aHVzIGJlIE5VTEwuCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUEgc29ja2V0IGJlY29tZXMgcmVhZGFibGUgYWZ0ZXIgY29ubmVjdCBpbiBMaW51eCAyLjQgKGV2ZW4gZm9yCgljb25uZWN0aW9uIHJlZnVzZWQpLgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVJlYWQgNCBieXRlcyB0byB3YWtlIHVwIEdFVElTUEFDRS4KCgkqIGRsbHMvd2luZXBzL2FmbS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBvbmUgc2FmZXR5IGNoZWNrIHRvIEFGTSBwYXJzaW5nLgoKCSogZGxscy91c2VyL3VzZXIuc3BlYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJMTZiaXQgdXNlciBHZXRQcm9wL1NldFByb3AgZ2V0IHN0cmluZ3Mgb3IgYXRvbXMsIHNvIHdlIGNhbiB1c2UgJ3N0cicuCgoJKiBkbGxzL2FkdmFwaTMyL3NlcnZpY2UuYzoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglGaXhlZCBzb21lIDAgdnMuIEZBTFNFIG1pc21hdGNoZXMuCglGaXhlZCBhICcleCcgdnMuICclbHgnIG1pc21hdGNoLgoJRml4ZWQgc29tZSBEV09SRCB2cy4gU0NfSEFORExFIG1pc21hdGNoZXMuCgoJKiBpbmNsdWRlL3dpbnN2Yy5oOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVNDX0hBTkRMRSBpcyBhIEhBTkRMRSwgbm90IGEgJ0RFQ0xBUkVfSEFORExFJwoJU0VSVklDRV9TVEFUVVNfSEFORExFIGlzIGEgRFdPUkQKCgkqIG1lbW9yeS9sb2NhbC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW1tZDEuaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBbGlnbiBtb3ZlYWJsZSBibG9ja3MgaWYgdGhlIGFyY2hpdGVjdHVyZSByZXF1aXJlcyBpdC4KCgkqIGluY2x1ZGUvd2luZXJyb3IuaDoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglSZW9yZGVyZWQgdGhlIGRlZmluaXRpb25zIGFjY29yZGluZyB0byB0aGVpciB2YWx1ZS4KCUluc2VydGVkIHRoZSAqX1NfKiBtYWNyb3MgcmlnaHQgYmVmb3JlIHRoZSBjb3JyZXNwb25kaW5nICpfRV8qIGJsb2NrCglSZWluZGVudGVkIHRoZSB2YWx1ZXMuCglSZW1vdmVkIHRoZSBkdXBsaWNhdGUgc2V0IG9mIEVfeHh4IG1hY3JvcyBzaW5jZSB0aGV5IGFyZSBvbmx5IHVzZWQgb24KCW5vbiBXSU4zMiBwbGF0Zm9ybXMuCglVbmNvbW1lbnRlZCB0aGUgQ09fRV9JTklUXyBzZXQgb2YgbWFjcm9zLgoJUmVtb3ZlZCBzb21lIGR1cGxpY2F0ZSBtYWNybyBkZWZpbml0aW9ucyBhbmQgZml4ZWQgdmFyaW91cyB0eXBvcy4KCUFkZGVkIHRoZSBkZWZpbml0aW9ucyBuZWVkZWQgYnkgdGhlIE1GQy4KCgkqIGRsbHMva2VybmVsL2tlcm5lbC5zcGVjLCBkbGxzL2tlcm5lbC9rZXJuZWxfbWFpbi5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBSZXNlcnZlZDUgLT4gbHN0cmNtcDE2LgoKCSogZGxscy92ZXJzaW9uL2luc3RhbGwuYywgZGxscy92ZXJzaW9uL3Jlc291cmNlLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCUNvZGUgd2FzIGNoZWNraW5nIGZvciAwIG9yIEhGSUxFX0VSUk9SIGluc3RlYWQgb2YgbmVnYXRpdmUgZXJyb3IKCXZhbHVlcy4KCjIwMDAtMTItMjkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL2lucHV0LmMsIHdpbmRvd3Mva2V5Ym9hcmQuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CgkiSW1wbGVtZW50IiBHZXRLQkNvZGVQYWdlIGFuZCBHZXRLQkNvZGVQYWdlMTYuCgoJKiBmaWxlcy9maWxlLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAbG9va3NtYXJ0LmNvbS5hdT4KCUltcGxlbWVudGVkIEdldE92ZXJsYXBwZWRSZXN1bHQuCgoJKiBvYmplY3RzL2ZvbnQuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQ3JlYXRlRm9udEluZGlyZWN0KCkgY2FuIGdldCBOVUxMIHBvaW50ZXJzLgoKCSogZGxscy9rZXJuZWwvY29tbS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQGxvb2tzbWFydC5jb20uYXU+CglJbXByb3ZlIGFzeW5jIGkvbyBjb21wYXRhYmlsaXR5LiBscE92ZXJsYXBwZWQtPkludGVybmFsIHNob3VsZCBob2xkCgl0aGUgb3ZlcmxhcHBlZCB0cmFuc2ZlciBzdGF0dXMuCgoJKiB0b29scy93aW5lYnVpbGQvaW1wb3J0LmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbW1kMS5pbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUZpeGVkIGJ1aWx0aW4gaW1wb3J0cyBicm9rZW4gYnkgbGF0ZXN0IGNoYW5nZS4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglNYWRlIHVuYWxpZ25lZCBhY2Nlc3MgdGVzdCBlZmZlY3RpdmUuCgoJKiBpbmNsdWRlL3dpbmUvcG9ydC5oOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBldmlsaXNoIGN1dCBhbmQgcGFzdGUuCgoJKiBkZWJ1Z2dlci9NYWtlZmlsZS5pbiwgZGVidWdnZXIvZGJnLnksIGRlYnVnZ2VyL2luZm8uYywgZGVidWdnZXIvbW9kdWxlLmMsIGRlYnVnZ2VyL21zYy5jLCBkZWJ1Z2dlci93aW5lZGJnLmM6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQ29tcGlsZSB0aGUgZGVidWdnZXIgd2l0aCBTVFJJQ1Qgb24uCgoJKiBkbGxzL3dpbmVwcy9mb250LmM6CglJYW4gUGlsY2hlciA8cGlsY2hlckBjb25jZW50cmljLm5ldD4KCVVzZSBhIGNhc2UtaW5zZW5zaXRpdmUgY29tcGFyaXNvbiB0byBtYXRjaCBQb3N0U2NyaXB0IGZvbnQgbmFtZXMuCgoJKiBpbmNsdWRlL3dpbmUvb2JqX2Jhc2UuaDoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBhbiBJQ09NX0ZOIHRoYXQgZ2VuZXJhdGVzIGVpdGhlciBmbiMjeGZuIG9yIHNmbiBhcyBhcHByb3ByaWF0ZS4KCVVzZSBJQ09NX0ZOIHRvIGF2b2lkIGR1cGxpY2F0aW5nIHRoZSAnSUNPTV9WP01FVEhPRC4qJyBkZWZpbml0aW9ucy4KCVJlbW92ZSB0aGUgb2Jzb2xldGUgSUNPTV9DVk1FVEhPRCBtYWNyb3MuCglVc2UgdGhlIElDT01fVlRCTCBtYWNybyB0byBhdm9pZCBkdXBsaWNhdGluZyB0aGUgJ0lDT01fQ0FMTC4qJwoJZGVmaW5pdGlvbnMuCgoJKiBkbGxzL3dpbmluZXQvZnRwLmMsIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5oOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CgktIGltcGxlbWVudGVkIHBhc3NpdmUgRlRQIHRyYW5zZmVycyAoUEFTViwgbmVlZGVkIGZvciBmaXJld2FsbHMpCgktIGZpeGVkIGxzdG5Tb2NrZXQgY2xvc2luZwoKCSogaW5jbHVkZS9idWlsdGluMTYuaCwgaW5jbHVkZS93aW5udC5oLCB0b29scy93aW5lYnVpbGQvaW1wb3J0LmMsIHRvb2xzL3dpbmVidWlsZC9yZWxheS5jLCB0b29scy93aW5lYnVpbGQvcmVzMTYuYywgdG9vbHMvd2luZWJ1aWxkL3NwZWMxNi5jLCB0b29scy93aW5lYnVpbGQvc3BlYzMyLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbW1kMS5pbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUZpeGVkIHdpbmVidWlsZCB0byB3b3JrIG9uIG5vbi1JbnRlbCBhcmNoaXRlY3R1cmVzLgoKCSogbG9hZGVyL25lL21vZHVsZS5jLCBsb2FkZXIvbmUvcmVzb3VyY2UuYywgbG9hZGVyL21vZHVsZS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW1tZDEuaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglQcmV2ZW50IHVuYWxpZ25lZCBhY2Nlc3MgdG8gTkUgaW4tbWVtb3J5IG1vZHVsZSBkYXRhLgoKCSogbWVtb3J5L2NvZGVwYWdlLmMsIHVuaWNvZGUvTWFrZWZpbGUuaW4sIHVuaWNvZGUvY29tcG9zZS5jLCB1bmljb2RlL2NwbWFwLnBsLCB1bmljb2RlL21idG93Yy5jLCB1bmljb2RlL3djdG9tYi5jOgoJQWRkZWQgc3VwcG9ydCBmb3IgY29tcG9zaXRlIFVuaWNvZGUgY2hhcmFjdGVycyBpbiBNdWx0aUJ5dGVUb1dpZGVDaGFyCglhbmQgV2lkZUNoYXJUb011bHRpQnl0ZS4KCgkqIGluY2x1ZGUvd2luZ2RpLmg6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgYSBwcm90b3R5cGUgZm9yIEdldExvZ0NvbG9yU3BhY2UuCgoJKiBpbmNsdWRlL3dpbmRlZi5oOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUNvbnZlcnQgSENPTE9SU1BBQ0UgdG8gU1RSSUNUIG1vZGUuCgoJKiBkb2N1bWVudGF0aW9uL0hPV1RPLXdpbmVsaWI6CglXaWxidXIgTi4gRGFsZSA8d2lsYnVyLmRhbGVAbHVtaW4ubmw+CglVcGRhdGVkIGZpcnN0IGV4YW1wbGUgdXNpbmcgbGF0ZXN0IHdpbmVidWlsZCBkbGwvc28gcHJvY2VkdXJlLgoKCSogZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglGaXhlZCBzbWFsbCByYWNlIGNvbmRpdGlvbiBiZXR3ZWVuIHZtODZfZW50ZXIoKSBhbmQgc2lnbmFsIGhhbmRsaW5nLgoJTWFkZSBzZXBhcmF0ZSBzYXZlX3ZtODZfY29udGV4dCBhbmQgcmVzdG9yZV92bTg2X2NvbnRleHQgZnVuY3Rpb25zLgoKCSogdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUFsbG93IHN0dWJzIGZvciBleHBvcnRzIHRoYXQgYXJlIG5vdCBsZWdhbCBDIGlkZW50aWZpZXJzLgoKCSogZGxscy9rZXJuZWwvc3luYy5jOgoJUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCVRlc3QgcG9pbnRlciBiZWZvcmUgaXQgaXMgZGVyZWZlcmVuY2VkIGluIENyZWF0ZUV2ZW50VygpLgoKMjAwMC0xMi0yNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG9sZS9NYWtlZmlsZS5pbiwgdG9vbHMvd2luZW1ha2VyLCBNYWtlLnJ1bGVzLmluLCBNYWtlZmlsZS5pbjoKCVJlbmFtZWQgbGlidXVpZC5hIHRvIGxpYndpbmVfdXVpZC5hCgoJKiBpbmNsdWRlL2NvbmZpZy5oLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy9jcnRkbGwvY3J0ZGxsX21haW4uYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGltbWQxLmluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJRG9uJ3QgbGluayB3aXRoIGxpYncgaWYgbGliYyBhbHJlYWR5IGNvbnRhaW5zIHcqIHJvdXRpbmVzLgoJTGluayBldmVyeSBsaWJyYXJ5IHdpdGggbGlibnNsIGlmIHJlcXVpcmVkLgoJSW5jbHVkZSBpZWVlZnAuaCB3aGVyZSBuZWNlc3NhcnkuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3Mvb3NzLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbW1kMS5pbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUNvbXBpbGUgZml4IGlmIEhBVkVfT1NTIGlzIG5vdCBkZWZpbmVkLgoKCSogaWYxNjMyL3JlbGF5LmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbW1kMS5pbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUZpeGVkIGJyb2tlbiBwcm90b3R5cGVzLgoKCSogaWYxNjMyL3Nub29wLmMsIHJlbGF5MzIvc25vb3AuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGltbWQxLmluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJU2lsZW5jZSBzaWxseSBlcnJvciBtZXNzYWdlcy4KCgkqIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvZGNpbWFuMzIvZGNpbWFuMzIuc3BlYywgZGxscy9vbGVkbGcvb2xlZGxnLnNwZWM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbW1kMS5pbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUltcG9ydCBrZXJuZWwzMiAoZm9yIFNldExhc3RFcnJvcigpKS4KCgkqIGRsbHMvdmVyc2lvbi9yZXNvdXJjZS5jLCBpbmNsdWRlL2FjY29uZmlnLmgsIGluY2x1ZGUvY29uZmlnLmguaW4sIGluY2x1ZGUvd2luZGVmLmgsIGluY2x1ZGUvd2luZS9wb3J0LmgsIGxvYWRlci9wZV9yZXNvdXJjZS5jLCBsb2FkZXIvdGFzay5jLCBtZW1vcnkvZW52aXJvbi5jLCBtZW1vcnkvaGVhcC5jLCB3aW5kb3dzL2NsYXNzLmMsIHdpbmRvd3MvZGlhbG9nLmMsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzL2RwbGF5eC9kcGxheS5jLCBkbGxzL3VzZXIvZXh0aWNvbi5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW1tZDEuaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBZGRlZCBjaGVjayB3aGV0aGVyIHVuYWxpZ25lZCBtZW1vcnkgYWNjZXNzIGlzIGFsbG93ZWQuCglBZGRlZCBtYWNyb3MgdG8gYWNjZXNzIHVuYWxpZ25lZCBXT1JEcyAvIERXT1JEcy4KCgkqIGRsbHMvY29tY3RsMzIvdGFiLmMsIGRsbHMva2VybmVsL2NvbW0uYywgZGxscy93aW5tbS9sb2x2bGRydi5jLCBmaWxlcy9kaXJlY3RvcnkuYywgZmlsZXMvZHJpdmUuYywgc2NoZWR1bGVyL2NsaWVudC5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCB3aW4zMi9jb25zb2xlLmMsIHdpbjMyL2V4Y2VwdC5jLCB3aW4zMi9maWxlLmMsIFJFQURNRSwgY29uc29sZS9nZW5lcmljLmMsIGNvbnRyb2xzL21lbnUuYywgZGxscy9jb21jdGwzMi9jb21tY3RybC5jLCBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CgktIGNsYXJpZnkgbWFueSBlcnJvciBtZXNzYWdlcwoJLSBhZGQgZGF0YSBjb3JydXB0aW9uIHdhcm5pbmcgdG8gUkVBRE1FIGZpbGUKCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVVzZSB0aGUgWCBzdGF0ZSBpbnN0ZWFkIG9mIHRoZSBWSyBrZXkgc3RhdGUgdG8gY2hlY2sgZm9yIGVhdGFibGUKCWNoYXJhY3RlcnMsIHNpbmNlIHRoZSBWSyBrZXkgc3RhdGUgaXNuJ3QgYSBmYW4gb2YgQWx0R3IuCgoJKiBmaWxlcy9kb3NfZnMuYzoKCUxhd3NvbiBXaGl0bmV5IDxsYXdzb25fd2hpdG5leUBqdW5vLmNvbT4KCUFsbG93IGFuIGFwcGxpY2F0aW9uIHRvIG9wZW4gYSBkb3MgZGV2aWNlIGVuZGluZyB3aXRoICc6Jy4KCgkqIGRsbHMvd2luZWRvcy9tb2R1bGUuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJUmVsZWFzZSB0aGUgV2luMTYgbG9jayBiZWZvcmUgc3RhcnRpbmcgdGhlIERPUyBwcm9jZXNzLCBzaW5jZSBpdCdzIG5vdAoJcmVhbGx5IGEgV2luMTYgYXBwLgoKCSogZGxscy93aW5lZG9zL2Rvc3ZtLmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVNpbmNlIERPU1ZNX1dhaXQoKSBibG9ja3MgdGhlIG5vcm1hbCBldmVudCBwcm9jZXNzaW5nLCBpdCBzaG91bGQKCWRpc3BhdGNoIHBlbmRpbmcgZXZlbnRzIGl0c2VsZi4KCjIwMDAtMTItMjYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkZWJ1Z2dlci9zdGFicy5jLCBkZWJ1Z2dlci9leHByLmMsIGRlYnVnZ2VyL21vZHVsZS5jLCBkZWJ1Z2dlci9tc2MuYzoKCUpvZXJnIE1heWVyIDxqbWF5ZXJAbG9wbG9mLmRlPgoJRml4IHRoZSB0cml2aWFsIGNvbXBpbGVyIHdhcm5pbmdzIGluIGRlYnVnZ2VyLyB3aGVuIGNvbXBpbGluZyB3aXRoIC1XCgktIG1vdmVkIGlubGluZSBzdGF0ZW1lbnRzIHRvIGZyb250CgktIGZpeGVkIHRoZSB0cml2aWFsIGNhc2VzIG9mIHNpZ25lZC91bnNpZ25lZCBjb21wYXJpc29ucwoKCSogZGxscy9jb21jdGwzMi9hbmltYXRlLmMsIGRsbHMvY29tY3RsMzIvY29tY3RsMzIuc3BlYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJTm8gbG9uZ2VyIHVzaW5nIGZ1bmN0aW9uIHBvaW50ZXJzIHRvIHdpbm1tIGFuZCBtc3ZmdzMyLCBidXQgZGVsYXkKCWxvYWRpbmcgaW5zdGVhZC4KCgkqIHRvb2xzL3dpbmVidWlsZC9SRUFETUUsIHRvb2xzL3dpbmVidWlsZC9idWlsZC5oLCB0b29scy93aW5lYnVpbGQvaW1wb3J0LmMsIHRvb2xzL3dpbmVidWlsZC9wYXJzZXIuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgYWJpbGl0eSB0byBkZWxheSBsb2FkaW5nIG9mIGFuIGltcG9ydGVkIERMTCB1bnRpbCBpdCdzIG5lZWRlZAoJKG5ldyAtZGVsYXkgb3B0aW9uIGZvciBpbXBvcnQgZGlyZWN0aXZlIGluIHNwZWMgZmlsZSkuCgoJKiBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvdGhyZWFkLmM6CglGaXhlZCBlcnJvciByZWNvdmVyeSBkdXJpbmcgdGhyZWFkIGNyZWF0aW9uLgoKCSogZGxscy93aW5lZG9zL01ha2VmaWxlLmluLCBkbGxzL3dpbmVkb3MvZG9zdm0uYywgZGxscy93aW5lZG9zL21vZHVsZS5jLCBkbGxzL3dpbmVkb3Mvd2luZWRvcy5zcGVjLCBpbmNsdWRlL2NhbGxiYWNrLmgsIGluY2x1ZGUvZG9zZXhlLmgsIGluY2x1ZGUvbWlzY2VtdS5oLCBsb2FkZXIvZG9zL01ha2VmaWxlLmluLCBsb2FkZXIvZG9zL2Rvc3ZtLmMsIGxvYWRlci9kb3MvbW9kdWxlLmMsIG1pc2NlbXUvbWFpbi5jLCBtc2Rvcy9kZXZpY2VzLmMsIG1zZG9zL2RwbWkuYywgbXNkb3MvaW50MDkuYywgbXNkb3MvaW50MTYuYywgbXNkb3MvaW50MjAuYywgbXNkb3MvaW50MjEuYywgbXNkb3MvaW50MzMuYywgbXNkb3MvaW9wb3J0cy5jLCBNYWtlLnJ1bGVzLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9udGRsbC9NYWtlZmlsZS5pbiwgZGxscy93aW5lZG9zLy5jdnNpZ25vcmU6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVNlcGFyYXRlZCB0aGUgTVogbG9hZGVyIGFuZCBjb3JlIERPUyBWTSBpbnRvIGRsbHMvd2luZWRvcy4KCgkqIGluY2x1ZGUvZGRlbWwuaCwgaW5jbHVkZS92ZncuaCwgaW5jbHVkZS93aW5kZWYuaCwgaW5jbHVkZS93aW5udC5oLCBpbmNsdWRlL3dpbnN2Yy5oOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCURlY2xhcmUgYWxsIGhhbmRsZXMgd2l0aCBERUNMQVJFX09MRF9IQU5ETEUgdG8gZWFzZSBjb252ZXJzaW9uIHRvCglTVFJJQ1QuCgoJKiBkbGxzL2dkaS9nZGkzMi5zcGVjLCBpbmNsdWRlL3dpbmdkaS5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBZGRlZCBHZXREQ0JydXNoQ29sb3IgYW5kIEdldERDUGVuQ29sb3IuCgoyMDAwLTEyLTI1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZG9jdW1lbnRhdGlvbi93aW5lLm1hbi5pbjoKCUxhd3NvbiBXaGl0bmV5IDxsYXdzb25fd2hpdG5leUBqdW5vLmNvbT4KCVJlbW92ZWQgLS1jb25maWcgZnJvbSBtYW4gd2luZS4KCgkqIGRvY3VtZW50YXRpb24vc2FtcGxlcy9jb25maWc6CglMYXdzb24gV2hpdG5leSA8bGF3c29uX3doaXRuZXlAanVuby5jb20+CglSZW1vdmVkIHRyYWlsaW5nIGdhcmJhZ2UgYWZ0ZXIgW3NlcmlhbHBvcnRzXSBkZXZpY2UgbmFtZS4KCjIwMDAtMTItMjQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3Jhc2FwaTMyL3Jhc2FwaS5jLCBpbmNsdWRlL3Jhcy5oLCBpbmNsdWRlL3dpbmRlZi5oOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCU1vdmVkIEhSQVNDT05OIGZyb20gd2luZGVmLmguCglBZGRlZCBtaXNzaW5nIFVuaWNvZGUgdHlwZSBhbmQgZnVuY3Rpb24gZGVmaW5pdGlvbnMuCglBZGRlZCBhIGZldyBtaXNzaW5nIG1hY3JvIGRlZmluaXRpb25zLgoJRW5jbG9zZSBpbiBhbiBleHRlcm4gIkMiIGZvciBDKysgV2luZWxpYiBhcHBsaWNhdGlvbnMuCglBZGRlZCB0aGUgc3RydWN0dXJlIHBhY2tpbmcgc3BlY2lmaWNhdGlvbi4KCgkqIGZpbGVzL2NoYW5nZS5jLCBncmFwaGljcy9lbmhtZXRhZmlsZWRydi9vYmplY3RzLmMsIGluY2x1ZGUvd2ludXNlci5oLCBsb2FkZXIvcGVfcmVzb3VyY2UuYywgbG9hZGVyL3Jlc291cmNlLmMsIHNjaGVkdWxlci9oYW5kbGUuYzoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglGaXhlZCBhIGZldyB0eXBlIGNsYXNoZXMgaW4gcHJlcGFyYXRpb24gZm9yIHRoZSBzd2l0Y2ggdG8gU1RSSUNULgoKCSogZ3JhcGhpY3MveDExZHJ2L3Blbi5jLCB3aW5kb3dzL3BhaW50aW5nLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVVwZGF0ZWQgdGhlIGxvb2sgb2YgZG90cyBhbmQgZGFzaGVzIHRvIG1hdGNoIHRoZSBXaW4zMiBsb29rLgoJSXNzdWUgYSBGSVhNRSBhYm91dCBQU19VU0VSU1RZTEUuCgoJKiBmaWxlcy9kaXJlY3RvcnkuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglEZWZpbmUgZW52aXJvbm1lbnQgdmFyaWFibGUgVE1QIGFzIGFuIGFsaWFzIGZvciBURU1QLgoKCSogcHJvZ3JhbXMvcmVnYXBpL3JlZ2FwaS5jOgoJR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+Cgk8bWFsbG9jLmg+IGlzIG5vdCBJU08gQywgPHN0ZGxpYi5oPiBpcy4KCgkqIHdpbmRvd3Mvc3B5LmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJRml4ZWQgbG9vcCB0ZXN0IGZvciBuZWdhdGl2ZSB2YWx1ZS4KCjIwMDAtMTItMjIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3ZlcnNpb24uaCwgQU5OT1VOQ0UsIENoYW5nZUxvZzoKCVJlbGVhc2UgMjAwMDEyMjIuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjIwMDAtMTItMjIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL2NsaXBib2FyZC5jLCB3aW5kb3dzL3gxMWRydi9jbGlwYm9hcmQuYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQGFzaS5mcj4KCUNhbmNlbCBhIGZldyBjaGFuZ2VzIHRvIGdldCBiYWNrIGJhc2ljIHRleHQgY2xpcGJvYXJkIGZ1bmN0aW9uYWxpdHkuCgoJKiBkbGxzL3dpbm1tL21tc3lzdGVtLmMsIGluY2x1ZGUvd2luZS93aW5iYXNlMTYuaCwgd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3MvcXVldWUuYywgd2luZG93cy93aW5oZWxwLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVJlcGxhY2VkIGNhbGxzIHRvIEtFUk5FTC5ZaWVsZDE2IGJ5IGNhbGxzIHRvIEtFUk5FTDMyLkszMldPV1lpZWxkIGZyb20KCW91dHNpZGUgbGlia2VybmVsLnNvLgoKCSogbG9hZGVyL21vZHVsZS5jOgoJTm8gbG9uZ2VyIHRyeSB0byBsb2FkIGJ1aWx0aW4gbGlicmFyeSB3aGVuIGxvYWRvcmRlciBpcyAnc28nLgoKCSogTWFrZS5ydWxlcy5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvTWFrZWRsbC5ydWxlcy5pbiwgbGlicmFyeS9NYWtlZmlsZS5pbiwgdHN4MTEvTWFrZWZpbGUuaW4sIHVuaWNvZGUvTWFrZWZpbGUuaW4sIHVuaWNvZGUvd2luZV91bmljb2RlLmRlZjoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglVc2UgZGxsd3JhcCBmb3IgYnVpbGRpbmcgc2hhcmVkIGxpYnJhcmllcyBpbiBjeWd3aW4uCgoJKiBzZXJ2ZXIvYXN5bmMuYywgc2VydmVyL2NvbnNvbGUuYywgc2VydmVyL2ZpbGUuYywgc2VydmVyL2hhbmRsZS5jLCBzZXJ2ZXIvbWFwcGluZy5jLCBzZXJ2ZXIvcGlwZS5jLCBzZXJ2ZXIvcmVnaXN0cnkuYywgc2VydmVyL3JlcXVlc3QuYywgc2VydmVyL3NlcmlhbC5jLCBzZXJ2ZXIvc29jay5jLCBzZXJ2ZXIvdGhyZWFkLmM6CglBdm9pZCBkdXAnaW5nIGZpbGUgZGVzY3JpcHRvcnMgd2hlbiBub3QgbmVjZXNzYXJ5LgoJRG8gbm90IHNlbmQgZmQgdG8gdGhlIGNsaWVudCBpZiBvcHMtPmdldF9mZCgpIGZhaWxzLgoKCSogc2NoZWR1bGVyL3RocmVhZC5jOgoJRml4ZWQgY29weS9wYXN0ZSBidWcgKHRoYW5rcyB0byBHZXJhcmQgUGF0ZWwpLgoKCSogZGxscy9kc291bmQvZHNvdW5kX21haW4uYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJTW9yZSBpbnRlbGxpZ2VudCBEaXJlY3RTb3VuZCBwcmVidWZmZXJpbmcuIEJ5IHRyYWNraW5nIHRoZQoJbGFzdC13cml0dGVuIHBvc2l0aW9uIG9mIHN0cmVhbWluZyBidWZmZXJzLCBpdCBhdHRlbXB0cyB0byBhdm9pZAoJcHJlYnVmZmVyaW5nIHBhc3QgdGhpcyBwb3NpdGlvbiB1bmxlc3MgbmVjZXNzYXJ5OyB0aGlzIG1heSBhdm9pZCBhCgludW1iZXIgb2Ygc291bmQgcHJvYmxlbXMgaW4gdmFyaW91cyBzaXR1YXRpb25zLiBNZXJnZWQgSEVMIGFuZCBIQUwKCW1peGluZyBjb2RlLCB3aGljaCBzaG91bGQgcmVkdWNlIHRoZSBIRUwgbW9kZSdzIENQVSB1c2FnZSBzbGlnaHRseS4KCgkqIHdpbmRvd3Mvd2luLmM6IEpvZXJnIE1heWVyIDxqbWF5ZXJAbG9wbG9mLmRlPgoJV2FybiB3aGVuIEZpbmRXaW5kb3cgbmVlZHMgdG8gY2hlY2sgb3RoZXIgcHJvY2Vzc2VzIHdpbmRvd3MuCgoJKiBkb2N1bWVudGF0aW9uL01ha2VmaWxlLmluOgoJSm9lcmcgTWF5ZXIgPGptYXllckBsb3Bsb2YuZGU+CglEb24ndCBzdXBwcmVzcyBlcnJvciBtZXNzYWdlcy4KCgkqIGRsbHMvbnRkbGwvY3JpdHNlY3Rpb24uYzoKCUpvZXJnIE1heWVyIDxqbWF5ZXJAbG9wbG9mLmRlPgoJQWRkICVmcyBpbmZvIHRvIHRoZSBjcml0aWNhbCBzZWN0aW9uIHRpbWVvdXQgbWVzc2FnZS4KCgkqIGluY2x1ZGUvZGVidWd0b29scy5oOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZSByZWR1bmRhbnQgJzsnIGF0IHRoZSBlbmQgb2YgbGluZS4KCgkqIGNvbnRyb2xzL2VkaXQuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglGaXggcmVtYWluaW5nIHNpZ25lZC91bnNpZ25lZCBtaXNtYXRjaGVzLgoKCSogZGxscy9udGRsbC9vbS5jLCBmaWxlcy9maWxlLmMsIGluY2x1ZGUvc2VydmVyLmgsIGluY2x1ZGUvdGhyZWFkLmgsIGxvYWRlci9uZS9tb2R1bGUuYywgbWVtb3J5L3ZpcnR1YWwuYywgc2NoZWR1bGVyL2NsaWVudC5jLCBzY2hlZHVsZXIvaGFuZGxlLmMsIHNjaGVkdWxlci90aHJlYWQuYywgc2VydmVyL2NvbnNvbGUuYywgc2VydmVyL2RlYnVnZ2VyLmMsIHNlcnZlci9maWxlLmMsIHNlcnZlci9oYW5kbGUuYywgc2VydmVyL2hhbmRsZS5oLCBzZXJ2ZXIvbWFwcGluZy5jLCBzZXJ2ZXIvb2JqZWN0LmgsIHNlcnZlci9waXBlLmMsIHNlcnZlci9yZXF1ZXN0LmMsIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RocmVhZC5oLCBzZXJ2ZXIvdHJhY2UuYzoKCVVzZSBhIHNlcGFyYXRlIEZJRk8gcGFpciBmb3Igc2VydmVyIHJlcXVlc3RzIHRoYXQgZG9uJ3QgbmVlZCB0byBwYXNzIGEKCWZpbGUgZGVzY3JpcHRvci4KCUFzc29jaWF0ZSBmaWxlIGRlc2NyaXB0b3JzIHdpdGggaGFuZGxlcyBvbiB0aGUgc2VydmVyIHNpZGUgc28gdGhhdCB3ZQoJZG9uJ3QgbmVlZCB0byBwYXNzIHRoZSBmZCBldmVyeSB0aW1lIHRoZSBjbGllbnQgd2FudHMgdG8gdXNlIGl0LgoKCSogd2luZS5pbmk6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJTmF0aXZlIElNTTMyLkRMTCBjcmFzaGVzIHdpbmUgLSB1c2UgYnVpbHRpbiBETEwuCgoJKiByZWxheTMyL2J1aWx0aW4zMi5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglQcmludCBhbGwgcHJvYmxlbXMgYXMgRVJSKCkgZXhjZXB0IGZvciAiY291bGQgbm90IG9wZW4iIGxpYnJhcnksIHdoaWNoCglpcyBXQVJOKCkuCgoJKiBkbGxzL2RkcmF3L2RzdXJmYWNlL21haW4uYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSURpcmVjdERyYXdTdXJmYWNlOjpCbHQ6OlNSQ0NPUFkgaXMgdGhlIGRlZmF1bHQgUk9QIG9wZXJhdGlvbiwgZG8gbm90Cgl0aHJvdyBlcnJvci4KCgkqIHdpbmRvd3MveDExZHJ2L2NsaXBib2FyZC5jLCB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jLCB3aW5kb3dzL3gxMWRydi9tb3VzZS5jLCB3aW5kb3dzL2RjZS5jLCB3aW5kb3dzL2RlZmRsZy5jLCB3aW5kb3dzL2RlZnduZC5jLCB3aW5kb3dzL2RpYWxvZy5jLCB3aW5kb3dzL2RyaXZlci5jLCB3aW5kb3dzL2ZvY3VzLmMsIHdpbmRvd3MvaG9vay5jLCB3aW5kb3dzL2lucHV0LmMsIHdpbmRvd3Mva2V5Ym9hcmQuYywgd2luZG93cy9tZGkuYywgd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3MvbXNnYm94LmMsIHdpbmRvd3MvbXVsdGltb24uYywgd2luZG93cy9ub25jbGllbnQuYywgd2luZG93cy9wYWludGluZy5jLCB3aW5kb3dzL3Byb3BlcnR5LmMsIHdpbmRvd3MvcXVldWUuYywgd2luZG93cy9yZWN0LmMsIHdpbmRvd3Mvc2Nyb2xsLmMsIHdpbmRvd3Mvc3lzY29sb3IuYywgd2luZG93cy9zeXNtZXRyaWNzLmMsIHdpbmRvd3Mvc3lzcGFyYW1zLmMsIHdpbmRvd3MvdGltZXIuYywgd2luZG93cy91c2VyLmMsIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3Mvd2luaGVscC5jLCB3aW5kb3dzL3dpbnBvcy5jLCB3aW5kb3dzL3dpbnByb2MuYywgd2luZG93cy9jYXJldC5jLCB3aW5kb3dzL2NsYXNzLmMsIHdpbmRvd3MvY2xpcGJvYXJkLmMsIHdpbmRvd3MvY3Vyc29yaWNvbi5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglWYXJpb3VzIGRvY3VtZW50YXRpb24gZml4ZXMuCgoJKiB3aW5kb3dzL3dpbnBvcy5jOgoJUmVtb3ZlZCB0aGUgZHVtbXkgbW91c2UgZXZlbnQgaW4gU2V0V2luZG93UG9zLgoKCSogZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZGxscy91c2VyL3VzZXIzMi5zcGVjOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBzb21lIDE2IGJpdCBlbnRyeSBwb2ludHMgbmVlZGVkIGJ5IG11bHRpbWVkaWEgRExMcy4KCgkqIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIGluY2x1ZGUvZmlsZS5oLCBpbmNsdWRlL3dpbmUvd2luYmFzZTE2LmgsIGxvYWRlci9yZXNvdXJjZS5jLCBtZW1vcnkvZ2xvYmFsLmMsIG1lbW9yeS9sb2NhbC5jLCBvYmplY3RzL21ldGFmaWxlLmMsIGNvbnRyb2xzL2VkaXQuYywgZGxscy9rZXJuZWwvd293dGh1bmsuYywgZGxscy93aW5tbS9tbWlvLmMsIGZpbGVzL2ZpbGUuYywgZ3JhcGhpY3Mvd2luMTZkcnYvaW5pdC5jOgoJUmVwbGFjZWQgV0lOMTZfR2xvYmFsTG9jazE2IGJ5ICJvZmZpY2lhbCIgZnVuY3Rpb24gSzMyV09XR2xvYmFsTG9jazE2LgoKCSogZ3JhcGhpY3MveDExZHJ2L2JpdGJsdC5jLCBncmFwaGljcy94MTFkcnYvZGliLmMsIGluY2x1ZGUveDExZHJ2Lmg6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUdhdnJpZWwgU3RhdGUgPGdhdkB0cmFuc2dhbWluZy5jb20+CglNb3JlIERJQiBzZWN0aW9uIGNvcHktYmxpdHRpbmcgaW1wcm92ZW1lbnRzOiBIYW5kbGUgOGJwcCBESUJzLCBEQwoJbWFwcGluZyBtb2RlcywgYW5kIGNsaXBwaW5nLiBUYWtlIGFkdmFudGFnZSBvZiB0aGUgRElCc2VjdGlvbidzCglYU2htSW1hZ2UgbWVjaGFuaXNtIHRvIGdldCBhIHJlYWxseSBmYXN0IGJsaXQgdG8gdGhlIGRpc3BsYXkuCgoyMDAwLTEyLTIxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy91c2VyL3VzZXIuc3BlYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSBpc3N1ZXMgZm91bmQgYnkgd2luYXBpX2NoZWNrLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL3dpbjE2L3VzZXIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvc2hsd2FwaS5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGkucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfY2hlY2ssIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfbG9jYWwucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfb3B0aW9ucy5wbToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBNaW5vciBBUEkgZmlsZSB1cGRhdGUuCgktIE1pbm9yIGJ1ZyBmaXhlcy4KCS0gQWRkZWQgbmV3IG9wdGlvbiBvbiAtLWRvY3VtZW50YXRpb24tb3JkaW5hbCAob2ZmIGJ5IGRlZmF1bHQpLgoJLSBBZGRlZCBuZXcgb3B0aW9uIG9uIC0tZG9jdW1lbnRhdGlvbi1wZWRhbnRpYyAob2ZmIGJ5IGRlZmF1bHQpLgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmMsIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUhhbmRsZSBlcnJvcnMgZm9yIElEc0RyaXZlcl9HZXRQb3NpdGlvbi4KCVJlcG9ydCBEU0VSUl9VTklOSVRJQUxJWkVEIG9uIG5vbi1vcGVuZWQgV2luZU9TUyBhdWRpbyBkZXZpY2UuCgoJKiBkbGxzL3dpbm1tL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL2RyaXZlci5jLCB3aW5kb3dzL2RyaXZlci5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglDbGVhbmVkIHVwIHRoZSBjb2RlIGEgYml0LgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUVuYWJsZSB0aGUgRGlyZWN0U291bmQgSEFMIGZvciBzb3VuZCBkcml2ZXJzIHRoYXQgZG8gbm90IHJlcG9ydAoJRFNQX0NBUF9SRUFMVElNRS4gU2V0IHByZWNpc2lvbiBvZiB0aGVzZSB0byAyNTYgYnl0ZXMgKGFib3V0IDNtcykuCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYzoKCUZyYW5jb2lzIEphY3F1ZXMgPGZyYW5jb2lzakBtYWNhZGFtaWFuLmNvbT4KCS0gVExCX0RvRnVuY3M6IGNvZGUgY2xlYW51cCBhbmQgZWxlbWRlc2NGdW5jIHJlYWQgY29ycmVjdGx5IGZyb20gVExCLgoJLSBUTEJfTG9hZFR5cGVMaWI6IHJlZiBjb3VudCBwcm9ibGVtLgoJLSBJVHlwZUxpYjo6R2V0VHlwZUluZm9PZkd1aWQ6IHNhZmVyIGltcGxlbWVudGF0aW9uIChwb2ludGVyIHRlc3RpbmcpLgoJLSBJVHlwZUluZm86OkdldFJlZlR5cGVPZkltcGxUeXBlOiBzYWZlciBpbXBsZW1lbnRhdGlvbiAocG9pbnRlciB0ZXN0aW5nKS4KCS0gSVR5cGVJbmZvMjo6R2V0RG9jdW1lbnRhdGlvbkwgcmV0dXJuIGVycm9ycyBpZiBTeXNBbGxvY1N0cmluZyBmYWlsZWQuCgktIFRMQiBsb2FkZXIgZnVuY3Rpb25zIG5vdyB0cmFjZSBpbiAidHlwZWxpYiIgY2hhbm5lbC4KCS0gSW1wcm92ZWQgdHJhY2VzIGluIEFkZFJlZi9SZWxlYXNlIGFuZCBpbXByb3ZlZCBkdW1wXyogZnVuY3Rpb25zIGZvcgoJICBkZWJ1Z2dpbmcuCgoJKiBjb250cm9scy9lZGl0LmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRG9uJ3Qgd3JpdGUgdG8gYnVmZmVyIHdpdGggemVybyBsZW5ndGguCglSZW1vdmVkIHNvbWUgdW51c2VkIGZ1bmN0aW9uIHBhcmFtZXRlcnMuCgoJKiBkbGxzL2NydGRsbC9jcnRkbGxfbWFpbi5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCURvIG5vdCBmcmVlIHRoZSBub3Qgb3duZWQgZXJyb3Igc3RyaW5nLgoKCSogZGxscy9vbGVhdXQzMi9zYWZlYXJyYXkuYzoKCUZyYW5jb2lzIEphY3F1ZXMgPGZyYW5jb2lzakBtYWNhZGFtaWFuLmNvbT4KCVVwZGF0ZWQgU2FmZUFycmF5R2V0VUJvdW5kIGFuZCBTYWZlQXJyYXlHZXRMQm91bmQgd2l0aCBtb3JlIHNhbml0eQoJY2hlY2tzOiBhbiBhcnJheSBoYXMgYXQgbGVhc3Qgb25lIGRpbWVuc2lvbi4KCVVwZGF0ZWQgdmFsaWRDb29yZGluYXRlcywgd2hlcmUgU2FmZUFycmF5R2V0TEJvdW5kIHdhcyBjYWxsZWQgb24KCWRpbWVuc2lvbiAwLgoKCSogZGxscy93aW5tbS9sb2x2bGRydi5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglSZXdyb3RlIHRoZSBhbGxvY2F0aW9uIG9mIE1NIGRyaXZlciBkZXNjcmlwdG9ycy4KCgkqIG9iamVjdHMvZW5obWV0YWZpbGUuYzoKCUVyaWMgS29obCA8ZWtvaGxAY29kZXdlYXZlcnMuY29tPgoJVXNlIGhhbmRsZSB0byBwYWxldHRlIGluc3RlYWQgb2YgaW5kZXggZm9yIEVNUl9TRUxFQ1RQQUxFVFRFLgoJSW1wbGVtZW50ZWQgc2ltcGxlIGNhc2UgZm9yIEVNUl9FWFRTRUxFQ1RDTElQUkdOLgoKMjAwMC0xMi0yMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbnRkbGwvZGVidWd0b29scy5jOgoJRml4ZWQgZGVidWcgcm91dGluZXMgdG8gd29yayBiZWZvcmUgdGhlIHByb2Nlc3MgaGVhcCBpcyBjcmVhdGVkLgoKCSogbG9hZGVyL21vZHVsZS5jOgoJRG8gbm90IGNhbGwgdGhyZWFkIGF0dGFjaC9kZXRhY2ggcm91dGluZXMgZHVyaW5nIHByb2Nlc3MgZXhpdCB0byBhdm9pZAoJcG90ZW50aWFsIGRlYWRsb2Nrcy4KCgkqIGdyYXBoaWNzL3gxMWRydi9kaWIuYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQGFzaS5mcj4KCVNldCB0aGUgY29sb3IgbWFzayB3aXRoIEJJX0JJVEZJRUxEIGRpYnMsIGRvbid0IHVzZSB0aGUKCWFwcGxpY2F0aW9uLXByb3ZpZGVkIHZhbHVlLgoKCSogbWVtb3J5L2dsb2JhbC5jLCBjb250cm9scy9lZGl0LmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJTWFrZSBuZXcgZWRpdCBjb250cm9sIGFsbG9jYXRlIGl0cyBidWZmZXJzIHdpdGggZ3JhbnVsYXJpdHkgMzIgYnl0ZS4KCUVuc3VyZSB0aGF0IGFsbCBjb3BpZWQgc3RyaW5ncyBhcmUgMCB0ZXJtaW5hdGVkLgoKCSogd2luZG93cy9zcHkuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CgktIHByaW50IG91dCBXTV9OT1RJRlkgbWVzc2FnZSBjb2RlIGlmIHdlIGtub3cgaXQuCgktIHByaW50IG91dCBtZW1vcnkgcGFzdCBlbmQgb2YgTk1IRFIgc3RydWN0dXJlIGZvciB0aGUgc2l6ZSBvZgoJICB0aGUgbm9ybWFsIE5NeHh4eHggc3RydWN0dXJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgbWVzc2FnZSBjb2RlLgoJLSBzZXR1cCBub3RpZnkgY29kZSB0YWJsZSBmb3IgY29tbW9uLCBSRUJBUiwgVE9PTEJBUiwgYW5kIENPTUJPRVggKGF0CgkgIGxlYXN0IHBhcnRpYWxseSkuCgoyMDAwLTEyLTE5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbWVtb3J5L2dsb2JhbC5jOiBTZXQgbGFzdCBlcnJvciBpbiBHbG9iYWxVbmxvY2suCgoJKiBkbGxzL2tlcm5lbC9jb21tLmMsIGRsbHMva2VybmVsL2RlYnVnZ2VyLmMsIGRsbHMva2VybmVsL3RpbWUuYzoKCUFuZHJldyBKb2huc3RvbiA8YWpvaG5zdG9uQHN3aXRjaC5jb20+CglEb2N1bWVudGF0aW9uIHVwZGF0ZS4KCgkqIGRsbHMvdXNlci9leHRpY29uLmMsIGRsbHMvdmVyc2lvbi9yZXNvdXJjZS5jLCBpbmNsdWRlL3dpbm50LmgsIGxpYnJhcnkvbG9hZGVyLmMsIGxvYWRlci9wZV9yZXNvdXJjZS5jOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCURVTU1ZU1RSVUNUTkFNRTIgY3JlYXRlcyBhIGNvbmZsaWN0IHdoZW4gdXNpbmcgYW5vbnltb3VzIHVuaW9uIG5hbWVzLgoKCSogZG9jdW1lbnRhdGlvbi9wcmludGluZy5zZ21sOgoJU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtbGluZS5jb20+CglBZGRlZCBkZXNjcmlwdGlvbiBvZiBwcmludGVycG9ydHMgc2VjdGlvbiBvZiB0aGUgd2luLmluaSBmaWxlIGZvciB3aW5lcHMuZHJ2LgoKCSogaW5jbHVkZS93aW5lL29ial9jb25uZWN0aW9uLmg6CglKYW1lcyBIYXRoZXdheSA8amFtZXNAbWFjYWRhbWlhbi5jb20+CglGaXggSUNvbm5lY3Rpb25Qb2ludENvbnRhaW5lciBpbnRlcmZhY2UgbWFjcm9zLgoKCSogZGxscy9vbGVhdXQzMi9NYWtlZmlsZS5pbiwgZGxscy9vbGVhdXQzMi9kaXNwYXRjaC5jLCBkbGxzL29sZWF1dDMyL29sZWF1dDMyLnNwZWM6CglGcmFuY29pcyBKYWNxdWVzIDxmcmFuY29pc2pAbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRhdGlvbiBvZiBEaXNwYXRjaCBBUEkuCgoJKiBkbGxzL2NydGRsbC9jb25zb2xlLmMsIGRsbHMvY3J0ZGxsL2NydGRsbC5oLCBkbGxzL2NydGRsbC9jcnRkbGwuc3BlYywgZGxscy9jcnRkbGwvY3J0ZGxsX21haW4uYywgZGxscy9jcnRkbGwvZGlyLmMsIGRsbHMvY3J0ZGxsL2V4aXQuYywgZGxscy9jcnRkbGwvZmlsZS5jLCBkbGxzL2NydGRsbC9sb2NhbGUuYywgZGxscy9jcnRkbGwvbWJzdHJpbmcuYywgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL2NydGRsbC5hcGk6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJLSBBZGQgc2V2ZXJhbCBtYmNzIGFuZCBDUCA5MzIgZnVuY3Rpb25zLCBmaXggc29tZSBleGlzdGluZyBjYWxscwoJLSBCdWcgZml4ZXMsIC1XIHdhcm5pbmdzIGFuZCB3aW5hcGlfY2hlY2sgdXBkYXRlcy4KCS0gRG9uJ3QgYmUgc28gc3RyaWN0IHNldHRpbmcgZGVmYXVsdCBsb2NhbGUsIHN0b3JlIGNvZGVwYWdlCgoJKiBsaWJyYXJ5L3BvcnQuYzoKCUluY2x1ZGUgc3RkbGliLmggaW5zdGVhZCBvZiB3Y2hhci5oLgoKCSogZGxscy9zaGx3YXBpL29yZGluYWwuYywgZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJc2hsd2FwaSBmb3J3YXJkZXJzIGZvciBTZXRXaW5kb3dMb25nVyBhbmQgQ2FsbFdpbmRvd1Byb2NXLgoKCSogZGxscy91c2VyL3VzZXIzMi5zcGVjOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCU5ldyB1bmljb2RlIGVkaXQgY29udHJvbC4KCgkqIGZpbGVzL3Byb2ZpbGUuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglQcm90ZWN0IGFnYWluc3QgTlVMTCBidWZmZXIgaW4gdGhlIHByb2ZpbGUgZnVuY3Rpb25zLgoKCSogY29udHJvbHMvZWRpdC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCU5ldyB1bmljb2RlIGVkaXQgY29udHJvbC4KCgkqIG9sZS9vbGUybmxzLmMsIHRvb2xzL2JpbjJyZXMuYywgdG9vbHMvd3JjL2dlbnJlcy5jLCB0b29scy93cmMvcGFyc2VyLnksIHdpbmRvd3MvY2xpcGJvYXJkLmMsIHdpbmRvd3MvZGlhbG9nLmMsIHdpbmRvd3MvaG9vay5jLCB3aW5kb3dzL2lucHV0LmMsIHdpbmRvd3Mva2V5Ym9hcmQuYywgd2luZG93cy9tZGkuYywgZGxscy93aW5tbS9tY2lhbmltL21jaWFuaW0uYywgZGxscy93aW5tbS9tY2lhdmkvbWNpYXZpLmMsIGRsbHMvd2lubW0vbWNpY2RhL21jaWNkYS5jLCBkbGxzL3dpbm1tL21jaXNlcS9tY2ltaWRpLmMsIGRsbHMvd2lubW0vbWNpd2F2ZS9tY2l3YXZlLmMsIGRsbHMvd2lubW0vbWlkaW1hcC9taWRpbWFwLmMsIGRsbHMvd2lubW0vd2F2ZW1hcC93YXZlbWFwLmMsIGRsbHMvd2lubW0vd2luZW9zcy9taWRpLmMsIGRsbHMvd2lubW0vd2luZW9zcy9vc3MuYywgaW5jbHVkZS93aW4uaCwgaW5jbHVkZS93aW5wb3MuaCwgbWlzYy90d2Vhay5jLCBtc2Rvcy9pbnQwOS5jLCBtc2Rvcy9pbnQzMy5jLCBjb250cm9scy9pY29udGl0bGUuYywgZGxscy9jb21tZGxnL2ZpbGVkbGdicm93c2VyLmMsIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmMsIGRsbHMvbXN2aWRlby9kcmF3ZGliLmMsIGRsbHMvb2xlMzIvY2xpcGJvYXJkLmMsIGRsbHMvb2xlMzIvb2xlMm5scy5jLCBkbGxzL29sZWF1dDMyL29sZTJkaXNwLmMsIGRsbHMvb2xlYXV0MzIvb2xlYXV0LmMsIGRsbHMvb2xlYXV0MzIvc3R1YnMuYywgZGxscy9yaWNoZWRpdC9ydGYuaCwgZGxscy91c2VyL3VzZXJfbWFpbi5jLCBkbGxzL3dpbm1tL2pveXN0aWNrL2pveXN0aWNrLmMsIGRsbHMvd2lubW0vdGltZS5jOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCXdpbnVzZXIuaCBub3cgcmVxdWlyZXMgdGhhdCB3ZSBpbmNsdWRlIHdpbmJhc2UuaCBmaXJzdC4KCgkqIGluY2x1ZGUvd2ludXNlci5oOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIENyZWF0ZVdpbmRvd1N0YXRpb24uCgoJKiBpbmNsdWRlL3dpbmRvd3MuaDoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglSZW1vdmVkIHRoZSAnZXh0ZXJuICJDIiB7IC4uLiB9JyBzdGF0ZW1lbnQuIEl0IGlzIG5vdCBzdXBwb3NlZCB0byBiZQoJdGhlcmUuCgoJKiBpbmNsdWRlL3dpbmRlZi5oOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCU1vdmVkIGEgbWlzcGxhY2VkICdleHRlcm4gIkMiIHsgLi4uIH0nIHN0YXRlbWVudC4KCgkqIGxpYnJhcnkvcG9ydC5jLCBpbmNsdWRlL3RjaGFyLmgsIGluY2x1ZGUvd2lubnQuaCwgaW5jbHVkZS93dHlwZXMuaDoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBiZXR0ZXIgc3VwcG9ydCBmb3IgVW5pY29kZToKCUFkZGVkIHN1cHBvcnQgZm9yIDE2LWJpdCB3Y2hhcl90CglBZGRlZCBzdXBwb3J0IGZvciByZXdyaXRpbmcgNC1ieXRlIFVuaWNvZGUgbGl0ZXJhbHMgdG8gMTZiaXQgVW5pY29kZQoKCSogZGxscy91c2VyL2V4dGljb24uYywgZGxscy92ZXJzaW9uL3Jlc291cmNlLmMsIGluY2x1ZGUvYWNjb25maWcuaCwgaW5jbHVkZS9jb25maWcuaC5pbiwgaW5jbHVkZS93aW5udC5oLCBsb2FkZXIvcGVfcmVzb3VyY2UuYywgY29uZmlndXJlLCBjb25maWd1cmUuaW46CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbW1kMS5pbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUZpeGVkIElNQUdFX1JFU09VUkNFX0RJUkVDVE9SWV9FTlRSWSBvbiBiaWctZW5kaWFuIG1hY2hpbmVzLgoKCSogZGxscy9vbGUzMi9vbGUyLmMsIGRsbHMvb2xlMzIvb2xlMzIuc3BlYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQGFzaS5mcj4KCVN0dWIgZm9yIERsbERlYnVnT2JqZWN0UlBDSG9vay4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAYXNpLmZyPgoJTWlzYyBmaXhlcyBmb3IgUXVlcnlQYXRoT2ZSZWdUeXBlTGliLCBUTEJfUmVhZFR5cGVMaWIsCglJVHlwZUluZm9fZm5HZXRDb250YWluaW5nVHlwZUxpYi4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbHRpcHMuYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQGFzaS5mcj4KCURvIG5vdCBzZW5kIGEgV01fTk9USUZZRk9STUFUIHRvIGEgbm9uLWV4aXN0ZW50IG93bmVyLgoKCSogc2VydmVyL2F0b20uYywgc2VydmVyL2NoYW5nZS5jLCBzZXJ2ZXIvY29uc29sZS5jLCBzZXJ2ZXIvZGVidWdnZXIuYywgc2VydmVyL2RldmljZS5jLCBzZXJ2ZXIvZXZlbnQuYywgc2VydmVyL2ZpbGUuYywgc2VydmVyL2hhbmRsZS5jLCBzZXJ2ZXIvbWFwcGluZy5jLCBzZXJ2ZXIvbXV0ZXguYywgc2VydmVyL29iamVjdC5jLCBzZXJ2ZXIvb2JqZWN0LmgsIHNlcnZlci9waXBlLmMsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9xdWV1ZS5jLCBzZXJ2ZXIvcmVnaXN0cnkuYywgc2VydmVyL3JlcXVlc3QuYywgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3NlbWFwaG9yZS5jLCBzZXJ2ZXIvc2VyaWFsLmMsIHNlcnZlci9zbmFwc2hvdC5jLCBzZXJ2ZXIvc29jay5jLCBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90aW1lci5jLCBzZXJ2ZXIvdHJhY2UuYywgZmlsZXMvZmlsZS5jLCBpbmNsdWRlL3NlcnZlci5oLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvYXN5bmMuYzoKCU1lcmdlZCB0aGUgZ2V0X3JlYWRfZmQgYW5kIGdldF93cml0ZV9mZCByZXF1ZXN0cy4KCgkqIGRsbHMvZGlucHV0L21vdXNlL21haW4uYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSW1wbGVtZW50ZWQgRElHRERfUEVFSyBmb3IgU3lzTW91c2VBOjpHZXREZXZpY2VEYXRhLgoKCSogaW5jbHVkZS90Y2hhci5oOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCV9zdHJ7ZGVjLGluY306IENhc3QgdGhlIHBhcmFtZXRlcnMgdG8gdGhlIHByb3BlciB0eXBlIGZpcnN0CglBZGRlZCBkZWZpbml0aW9ucyBmb3IgX3RmaW5kZGF0YSoKCgkqIGluY2x1ZGUvb2JqYmFzZS5oLCBpbmNsdWRlL3dpbm50Lmg6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJTW92ZWQgc29tZSBvZiB0aGUgU1RETUVUSE9EL1NUREFQSSB0byB3aW5udC5oLgoJTW92ZWQgdGhlIEVYVEVSTl9DIG1hY3JvIHRvIHdpbm50LmguCglBZGRlZCBhICcjaWZuZGVmIF9fV0lORV9fJyBhcm91bmQgdGhlIHJlbWFpbmluZyBtYWNyb3MuCgoJKiBpbmNsdWRlL3d0eXBlcy5oOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZWQgc29tZSBvZiB0aGUgU0VDVVJJVFlfeHh4IHR5cGVzLgoKCSogaW5jbHVkZS93aW51c2VyLmg6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgU2V0VXNlck9iamVjdFNlY3VyaXR5LgoKCSogaW5jbHVkZS9jb21tY3RybC5oOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCUFkZCBub3RpZnkgc3RydWN0dXJlcyBOTU1PVVNFLCBOTU9CSkVDVE5PVElGWSwgTk1LRVksIGFuZCBOTUNIQVIuCgoyMDAwLTEyLTE4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9pbW0zMi9NYWtlZmlsZS5pbiwgZGxscy9pbW0zMi9pbWMuYywgZGxscy9pbW0zMi9pbWVrbC5jLCBkbGxzL2ltbTMyL2ltZXduZC5jLCBkbGxzL2ltbTMyL2ltbS5jLCBkbGxzL2ltbTMyL2ltbTMyLnNwZWMsIGRsbHMvaW1tMzIvaW1tX3ByaXZhdGUuaCwgZGxscy9pbW0zMi9tYWluLmM6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJSW1wbGVtZW50ZWQga2V5Ym9hcmQgbGF5b3V0IGFuZCBjb250ZXh0ICAtIGZhciBmcm9tIGNvbXBsZXRlLgoKCSogbGlicmFyeS9wb3J0LmM6CglNb3J0ZW4gV2VsaW5kZXIgPHRlcnJhLXdpbmVAZGlrdS5kaz4KCShzdHJjYXNlY21wKTogQ29uZm9ybSB0byBBTlNJIHNwZWNzIGZvciB0b3VwcGVyLgoJKHN0cm5jYXNlY21wKTogRGl0dG8uICBBbHNvIGRvIG5vdCB1c2Ugc2lkZS1lZmZlY3RzIGluIG1hY3JvIGFyZ3MuCgkod2luZV9vcGVucHR5KTogUGx1ZyBkZXNjcmlwdG9yIGxlYWsuICBBbHdheXMgc2V0IGVycm5vIG9uIGZhaWx1cmUuCgkod2luZV9hbm9uX21tYXApOiBGaXggY29tbWVudCBsb2NhdGlvbi4KCgkqIG1pc2Mvb3B0aW9ucy5jOgoJTW9ydGVuIFdlbGluZGVyIDx0ZXJyYS13aW5lQGRpa3UuZGs+CgkocGFyc2Vfb3B0aW9ucyk6IEFsbG93IEdOVS1saWtlIG9wdGlvbiBhcmd1bWVudHMgbGlrZQoJIi0tZGVza3RvcD04MDB4NjAwIi4gIChOb3QgcGVyZmVjdCAtLSB3ZSBkb24ndCBhbGxvdyBzaG9ydGhhbmRzLikKCgkqIHRvb2xzL3dpbmVidWlsZC9pbXBvcnQuYywgY29uZmlndXJlLCBjb25maWd1cmUuaW46CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCVNvbGFyaXMgZml4ZXMuCgoJKiBkbGxzL2NvbWN0bDMyL3JlYmFyLmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJLSBJbXBsZW1lbnQgZHJhZyBmb3IgdmVydGljYWwgcmViYXJzIChkcmFnIHVwIGFuZCBkb3duKS4KCS0gQmV0dGVyIGFsZ29yaXRoaW1zIGZvciBpbnNlcnRpbmcgbmV3IGJhbmRzIC0gbWF0Y2hlcyBuYXRpdmUgdmVyc2lvbgoJICBjbG9zZXIuCgktIE1ha2UgZHJhd2luZyBvZiByZWJhciBhdHRlbXB0IHRvIG1hdGNoIG5hdGl2ZSBwaXhlbCBieSBwaXhlbCAobm90ZQoJICB0aGlzIGRvZXMgbm90IGZpeCB0aGUgZW1iZWRkZWQgY29udHJvbHMgaW4gZWFjaCBiYW5kIC0gdGhleSBzdGlsbCBhcmUKCSAgYXMgZ29vZCBvciBiYWQgYXMgYmVmb3JlLikKCS0gSW1wbGVtZW50IHNvbWUgb2YgdGhlIG5vdGlmaWNhdGlvbnMgKFJCTl9IRUlHSFRDSEFOR0UsIF9DSElMRFNJWkUsCgkgIF9ERUxFVElOR0JBTkQsIF9ERUxFVEVEQkFORCkuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWJvZXguYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglQYXNzIFdNX0NPTU1BTkQgYW5kIFdNX05PVElGWSB0byBwYXJlbnQgYXMgcmVjZWl2ZWQuCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmMsIGRsbHMvY29tbWRsZy9maWxlZGxnYnJvd3Nlci5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAYXNpLmZyPgoJQ2hhbmdlIHRoZSBjdXJyZW50IGRpcmVjdG9yeSBhcyB0aGUgdXNlciBicm93c2VzIHRoZSBkaXJlY3RvcnkgdHJlZS4KCgkqIGRsbHMvY3J0ZGxsL2ZpbGUuYzoKCURhdmlkIEVsbGlvdHQgPGRmZUBpbmZpbml0ZS1pbnRlcm5ldC5uZXQ+CglDaGFuZ2VkIHR5cG8gdmFfbGlzdCB0byB2YWxpc3QuCgoJKiB3aW5kb3dzL2RpYWxvZy5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAYXNpLmZyPgoJQWxsb3cgZm9yIHRoZSBkaWFsb2cgZm9udCBzaXplIHRvIGJlIHNldCBkaXJlY3RseSBpbiBwaXhlbHMuCgoJKiB3aW5kb3dzL3dpbnBvcy5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAYXNpLmZyPgoJV01fR0VUTUlOTUFYSU5GTyB0cmFjayBtaW4gc2l6ZSBzaG91bGQgYmUgdXNlZCBpbiBTZXRXaW5kb3dQb3MgYWxzbwoJZm9yIDMyIGJpdHMgYXBwcy4KCgkqIGRsbHMvbXN2aWRlby9tc3ZpZGVvX21haW4uYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJTWFwcGluZyBmb3IgSUNNX1NFVFNUQVRFIChwdHIgaW4gbFBhcmFtMSB0byBwcml2YXRlIGRhdGEpLgoKMjAwMC0xMi0xNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYywgbWVtb3J5L2Vudmlyb24uYywgZGxscy9zZXR1cGFwaS9kZXZpbnN0LmMsIGRsbHMvc2V0dXBhcGkvc2V0dXB4X21haW4uYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSBpc3N1ZXMgZm91bmQgYnkgd2luYXBpX2NoZWNrLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL3dpbjE2L3NldHVweC5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9jcnRkbGwuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvaW1tMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvbnRkbGwuYXBpLCB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5kYXQsIHRvb2xzL3dpbmFwaV9jaGVjay93aW4xNi9vbGVjbGkuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2NoZWNrLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX29wdGlvbnMucG06CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gTWlub3IgQVBJIGZpbGUgdXBkYXRlLgoJLSBUdXJuZWQgb24gLS1kb2N1bWVudGF0aW9uLWFyZ3VtZW50cyBieSBkZWZhdWx0LgoKCSogZGxscy9jcnRkbGwvZGlyLmMsIGRsbHMvY3J0ZGxsL2ZpbGUuYywgZGxscy9jcnRkbGwvbG9jYWxlLmMsIGRsbHMvY3J0ZGxsL3NwYXduLmMsIGRsbHMvY3J0ZGxsL2NydGRsbF9tYWluLmMsIGRsbHMvY3J0ZGxsL2NvbnNvbGUuYywgZGxscy9jcnRkbGwvY3J0ZGxsLmgsIGRsbHMvY3J0ZGxsL2NydGRsbC5zcGVjOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCS0gRml4IF9mdWxscGF0aCAmIHNwbGl0cGF0aCwgd2luYXBpX2NoZWNrIGZpeGVzCgktIEFkZCBjcHJpbnRmLGNzY2FuZixfZmdldHdjaGFyLF9mZ2V0d2MsX2ZwdXR3Y2hhcixfZnB1dHdjLAoJICBfd3RvaSAmIF93dG9sIChmd2QpLHNjYW5mLF90aW1lem9uZV9kbGwKCgkqIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIGRsbHMvZGlucHV0L21vdXNlL21haW4uYywgaW5jbHVkZS9pbnB1dC5oLCB3aW5kb3dzL2N1cnNvcmljb24uYywgd2luZG93cy9pbnB1dC5jLCB3aW5kb3dzL3dpbnBvcy5jOgoJQXZvaWQgYSBjb3VwbGUgb2YgZGVwZW5kZW5jaWVzIG9uIGlucHV0LmMgaW50ZXJuYWwgdmFyaWFibGVzLgoKCSogZGxscy9jcnRkbGwvZmlsZS5jOgoJRml4ZWQgaW5maW5pdGUgbG9vcCBpbiBDUlRETExfX2ZjbG9zZWFsbC4KCgkqIGRsbHMvaW1tMzIvTWFrZWZpbGUuaW4sIGRsbHMvaW1tMzIvaW1ld25kLmMsIGRsbHMvaW1tMzIvaW1tLmMsIGRsbHMvaW1tMzIvaW1tX3ByaXZhdGUuaCwgZGxscy9pbW0zMi9tYWluLmM6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJSW1wbGVtZW50ZWQgc29tZSBBUElzIGFuZCBJTUUgY2xhc3MgLSBmYXIgZnJvbSBjb21wbGV0ZS4KCgkqIGRsbHMvZGRyYXcvbWFpbi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglDaGVjayBmb3IgTlVMTCBiZWZvcmUgZG9pbmcgSXNFcXVhbEdVSUQoKS4KCgkqIGRsbHMvd2lubW0vbWNpLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGxvYWRpbmcgb2YgMTYgYml0IE1DSSBkcml2ZXJzIChmb3IgY29tbWFuZCB0YWJsZXMpLgoJRml4ZWQgYWxpYXMgaGFuZGxpbmcgaW4gbWNpU2VuZFN0cmluZy4KCgkqIGRsbHMvc2V0dXBhcGkvc2V0dXB4LnNwZWMsIGRsbHMvc2V0dXBhcGkvc2V0dXB4X21haW4uYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJLSBkb24ndCBpbml0aWFsaXplIHdpdGggcEZpcnN0TEREIGlmIHBGaXJzdExERCBpc24ndCBpbml0aWFsaXplZCB5ZXQgZWl0aGVyCgktIGNvcnJlY3RlZCBWY3BDbG9zZSAuc3BlYwoKMjAwMC0xMi0xNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHRvb2xzL3dpbmVidWlsZC9idWlsZC5oLCB0b29scy93aW5lYnVpbGQvaW1wb3J0LmMsIHRvb2xzL3dpbmVidWlsZC9tYWluLmMsIHRvb2xzL3dpbmVidWlsZC9wYXJzZXIuYywgdG9vbHMvd2luZWJ1aWxkL3NwZWMxNi5jLCB0b29scy93aW5lYnVpbGQvc3BlYzMyLmM6CglBbGxvY2F0ZSBlbnRyeSBwb2ludHMgZHluYW1pY2FsbHkgdG8gYWxsb3cgZm9yIGEgbGFyZ2VyIG51bWJlciBvZgoJb3JkaW5hbHMuCgoJKiBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2ltbTMyL01ha2VmaWxlLmluLCBkbGxzL2ltbTMyL2ltbS5jLCBkbGxzL2ltbTMyL2ltbTMyLnNwZWMsIGRsbHMvaW1tMzIvaW1tX3ByaXZhdGUuaCwgZGxscy9pbW0zMi9pbW1kZGsuaCwgZGxscy9pbW0zMi9tYWluLmMsIGRsbHMvaW1tMzIvbWVtb3J5LmMsIGRsbHMvaW1tMzIvc3RyaW5nLmM6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJSW1wbGVtZW50ZWQgc29tZSBEREsgQVBJcyAtIGZhciBmcm9tIGNvbXBsZXRlLgoKCSogTWFrZWZpbGUuaW46CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQ3JlYXRlIGEgc3ltYm9saWMgbGluayB0byBvbGUvbGlidXVpZC5hLgoKCSogdG9vbHMvd2luZW1ha2VyOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUFsd2F5cyBsaW5rIHdpdGggdXVpZC4KCgkqIGNvbnRyb2xzL2xpc3Rib3guYzoKCVVscmljaCBDemVrYWxsYSA8dWxyaWNoY0Bjb2Rld2VhdmVycy5jb20+CglPbmx5IGNhcHR1cmUgbW91c2Ugd2hlbiBhbiBpdGVtIGlzIHNlbGVjdGVkLgoKCSogaW5jbHVkZS9udGRlZi5oLCBpbmNsdWRlL3dpbmRlZi5oLCBpbmNsdWRlL3dpbm50Lmg6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJTW92ZWQgc29tZSBtYWNyb3MgbGlrZSBOVUxMLCBGQUxTRSB0byB3aW5udC5oCglNb3ZlZCB0aGUgYW5vbnltb3VzIHN0cnVjdC91bmlvbnMgdG8gd2lubnQuaAoJTW92ZWQgY2FsbGluZyBjb252ZW50aW9uIG1hY3JvcyB0byB3aW5udC5oCglNb3ZlZCBzb21lIGJhc2ljIHR5cGVzIGxpa2UgQk9PTCwgSU5ULCBMT05HLCBldGMuIHRvIHdpbm50LmgKCU1vdmVkIEhBTkRMRSBhbmQgREVDTEFSRV9IQU5ETEUgdG8gd2lubnQuaAoJTW92ZWQgc3RydWN0dXJlIHBhY2tpbmcgbWFjcm9zIHRvIHdpbm50LmgKCgkqIGluY2x1ZGUvZGRyYXcuaCwgaW5jbHVkZS93aW5iYXNlLmgsIHNlcnZlci9zbmFwc2hvdC5jOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCU5lZWRzIHRvIGluY2x1ZGUgd2luZGVmLmguCgoJKiBpbmNsdWRlL29sZTIuaDoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBPbGVJc0N1cnJlbnRDbGlwYm9hcmQgYW5kIE9sZVNldENsaXBib2FyZC4KCgkqIGluY2x1ZGUvb2JqYmFzZS5oOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVkIHRoZSBwcm90b3R5cGUgb2YgR2V0Q2xhc3NGaWxlLgoKCSogd2luZG93cy93aW4uYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQGFzaS5mcj4KCURvbid0IHJldHVybiBsYXN0IGFjdGl2ZSBwb3B1cCBpZiBpdCBpcyBwb2ludGluZyB0byBhIGRlbGV0ZWQgd2luZG93LgoKCSogZG9jdW1lbnRhdGlvbi93aW5lLm1hbi5pbiwgbWlzYy9vcHRpb25zLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcHJvdmVkIHVzYWdlIG1lc3NhZ2UuCgoJKiBkbGxzL2FkdmFwaTMyL3JlZ2lzdHJ5LmMsIGRsbHMvbnRkbGwvcmVnLmMsIGluY2x1ZGUvc2VydmVyLmgsIG1lbW9yeS9yZWdpc3RyeS5jLCBzZXJ2ZXIvcmVnaXN0cnkuYywgc2VydmVyL3JlcXVlc3QuYywgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3RyYWNlLmM6CglDb252ZXJ0ZWQgZW51bV9rZXlfdmFsdWUgcmVxdWVzdCB0byB0aGUgbmV3IHJlcXVlc3QgbWVjaGFuaXNtLgoKCSogbWlzYy9jZHJvbS5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJU3RhdHVzIG9mIENEUk9NX0FVRElPX0lOVkFMSUQgc2VlbXMgdG8gbWVhbiB0aGUgZGlzayBpcyBzdG9wcGVkLgoKCSogZGxscy9jb21jdGwzMi90YWIuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglGaXhlZCBzb21lIGRpZmZpY3VsdGllcyB3aXRoIHRoZSBmb250IG9uIHZlcnRpY2FsIHRhYnMuIEFsc28gcGx1Z2dlZCBhCglyZXNvdXJjZSBsZWFrLgoKCSogZGxscy9jb21jdGwzMi9oZWFkZXIuYzoKCVVscmljaCBDemVrYWxsYSA8dWxyaWNoY0Bjb2Rld2VhdmVycy5jb20+CglNYXJrIHdpZHRoIGFzIHZhbGlkIHdoZW4gd2Ugc2VuZCBIRE5fRU5EVFJBQ0tBLgoKCSogZGxscy9vbGUzMi9vbGUyLmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdndlcnMuY29tPgoJQ2hlY2sgdG8gc2VlIHdoZXRoZXIgYW55IGFuY2VzdG9yIHdpbmRvd3MgYXJlIGRyb3AgdGFyZ2V0cy4KCgkqIGZpbGVzL2Rvc19mcy5jOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJU3BlbGxpbmcgZml4LgoKCSogaW5jbHVkZS93aW5udC5oLCBsb2FkZXIvcGVfaW1hZ2UuYzoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglDaGFuZ2VkIHRoZSB0eXBlIG9mIEZ1bmN0aW9uIHRvIFBEV09SRCBhcyBvbiBXaW5kb3dzLgoKCSogZGxscy9kcGxheXgvZHBsYXlzcC5oOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZWQgdGhlIGRlY2xzcGVjIHNwZWNpZmllci4KCgkqIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgbWlzYy9vcHRpb25zLmMsIG1pc2NlbXUvbWFpbi5jLCBtaXNjZW11L3dpbmUuc3BlYywgdG9vbHMvd2luZWJ1aWxkL1JFQURNRSwgdG9vbHMvd2luZWJ1aWxkL2J1aWxkLmgsIHRvb2xzL3dpbmVidWlsZC9pbXBvcnQuYywgdG9vbHMvd2luZWJ1aWxkL3BhcnNlci5jLCB0b29scy93aW5lYnVpbGQvc3BlYzMyLmM6CglBZGRlZCBzdXBwb3J0IGZvciBVbmljb2RlIGFwcGxpY2F0aW9ucyBpbiB3aW5lYnVpbGQuCglSZW1vdmVkIGN1aWV4ZV9ub19tYWluIGhhY2suCglBdm9pZCBzdGRjYWxsIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucyBpbnNpZGUgZnVuY3Rpb25zIGJlY2F1c2Ugb2YgZ2NjIGJ1Zy4KCgkqIG1pc2MvcmVnaXN0cnkuYzoKCU1hcnRpbiBQaWxrYSA8bXBpbGthQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gcmVnaXN0cnkgbG9hZGluZyBzcGVlZCB1cCAocmVkdWNlZCBjbGllbnQgPC0+IHNlcnZlciBjb21tdW5pY2F0aW9uKQoJLSBtYWtlIHRoZSBjb2RlIGEgYml0IG1vcmUgdW5kZXJzdGFuZGFibGUKCjIwMDAtMTItMTQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB0b29scy93aW5lYnVpbGQvYnVpbGQuaCwgdG9vbHMvd2luZWJ1aWxkL2ltcG9ydC5jLCB0b29scy93aW5lYnVpbGQvcGFyc2VyLmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJQWRkZWQgImlnbm9yZSIgZGlyZWN0aXZlIGZvciBza2lwcGluZyBpbmRpdmlkdWFsIHN5bWJvbCByZXNvbHV0aW9uLgoKCSogZGxscy9jb21tZGxnL2NkbGdfUnUucmM6CglWYXNpbHkgSS4gVm9sY2hlbmtvIDxWYXNpbHkuVm9sY2hlbmtvQG1zdHUuZWR1LnJ1PgoJQWRkZWQgbW9yZSBSdXNzaWFuIHN1cHBvcnQuCgoJKiBNYWtlLnJ1bGVzLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9pbW0zMi9NYWtlZmlsZS5pbiwgZGxscy9pbW0zMi9pbW0uc3BlYywgZGxscy93aW5ubHMvLmN2c2lnbm9yZSwgZGxscy93aW5ubHMvTWFrZWZpbGUuaW4sIGRsbHMvd2lubmxzL3dpbm5scy5jLCBkbGxzL3dpbm5scy93aW5ubHMuc3BlYywgZGxscy93aW5ubHMvd2lubmxzMzIuc3BlYzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglBZGRlZCBhIHNwZWMgZmlsZSBmb3IgMTZiaXQgaW1tLgoJQWRkZWQgc3BlYyBmaWxlcyBmb3Igd2lubmxzIGFuZCB3aW5ubHMzMi4KCgkqIGluY2x1ZGUvd2luZS93aW5iYXNlMTYuaDoKCUFkZGVkIGlubGluZSBkZWZpbml0aW9uIGZvciBNYXBTTC4KCgkqIHRvb2xzL3dpbmVzaGVsbGxpbms6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVkIGFuIHVucXVvdGVkIHN0cmluZy4KCgkqIGZpbGVzL2RpcmVjdG9yeS5jLCBmaWxlcy9kcml2ZS5jOgoJTGF3c29uIFdoaXRuZXkgPGxhd3Nvbl93aGl0bmV5QGp1bm8uY29tPgoJQWRkIHN0cmVycm9yKCkgdG8gdGhlICJDb3VsZCBub3Qgc3RhdCIgYW5kICJJbnZhbGlkIHBhdGgiIHN0YXJ0dXAKCWVycm9yIG1lc3NhZ2VzLgoKCSogc2NoZWR1bGVyL3N5c2RlcHMuYzoKCUNvbW1lbnRlZCBvdXQgbGFyZ2Ugc3RhY2sgaW5pdCBub3cgdGhhdCB0aHJlYWQgc3RhY2tzIGFyZSBhdCBsZWFzdCAxTWIuCgoJKiBkbGxzL2RkcmF3L21haW4uYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSWYgRGlyZWN0RHJhd0NyZWF0ZSBnZXRzIHBhc3NlZCBhIElEaXJlY3REcmF3ezIsNCw3fSBpbnRlcmZhY2UsIGdldAoJdGhpcyBpbnRlcmZhY2UgYW5kIGRvIG5vdCB1c2UgSURpcmVjdERyYXcuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMyLnNwZWMsIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlZCB0aGUgbmFtZSBvZiBBUElzIGV4cG9ydGVkIGJ5IG9yZGluYWwuCgoJKiBkbGxzL2tlcm5lbC9ubHMvaHVuLm5sczoKCU5lbWV0aCBQZXRlciA8cWdlbnBldGVAZ29sZC51bmktbWlza29sYy5odT4KCVNvbWUgTkxTIHVwZGF0ZXMuCgoyMDAwLTEyLTEzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZG9jdW1lbnRhdGlvbi9NYWtlZmlsZS5pbiwgZG9jdW1lbnRhdGlvbi9hcmNoaXRlY3R1cmUuc2dtbCwgZG9jdW1lbnRhdGlvbi9hdXRob3JzLmVudCwgZG9jdW1lbnRhdGlvbi9idWdzLnNnbWwsIGRvY3VtZW50YXRpb24vYnVpbGQuc2dtbCwgZG9jdW1lbnRhdGlvbi9jb21waWxpbmcuc2dtbCwgZG9jdW1lbnRhdGlvbi9jb25maWd1cmluZy5zZ21sLCBkb2N1bWVudGF0aW9uL2NvbnNvbGVzLnNnbWwsIGRvY3VtZW50YXRpb24vY3ZzLXJlZ3Jlc3Npb24uc2dtbCwgZG9jdW1lbnRhdGlvbi9kYjJodG1sLXdpbmVocSwgZG9jdW1lbnRhdGlvbi9kZWJ1Z2dlci5zZ21sLCBkb2N1bWVudGF0aW9uL2RlYnVnZ2luZy5zZ21sLCBkb2N1bWVudGF0aW9uL2RlZmF1bHQuZHNsLCBkb2N1bWVudGF0aW9uL2RsbHMuc2dtbCwgZG9jdW1lbnRhdGlvbi9kb2N1bWVudGF0aW9uLnNnbWwsIGRvY3VtZW50YXRpb24vZm9udHMuc2dtbCwgZG9jdW1lbnRhdGlvbi9nZXR0aW5nLnNnbWwsIGRvY3VtZW50YXRpb24vaTE4bi5zZ21sLCBkb2N1bWVudGF0aW9uL2ltcGxlbWVudGF0aW9uLnNnbWwsIGRvY3VtZW50YXRpb24vaW5zdGFsbGluZy5zZ21sLCBkb2N1bWVudGF0aW9uL2ludHJvZHVjdGlvbi5zZ21sLCBkb2N1bWVudGF0aW9uL29sZS5zZ21sLCBkb2N1bWVudGF0aW9uL29wZW5nbC5zZ21sLCBkb2N1bWVudGF0aW9uL3BhY2thZ2luZy5zZ21sLCBkb2N1bWVudGF0aW9uL3BhdGNoZXMuc2dtbCwgZG9jdW1lbnRhdGlvbi9wb3J0aW5nLnNnbWwsIGRvY3VtZW50YXRpb24vcHJpbnRpbmcuc2dtbCwgZG9jdW1lbnRhdGlvbi9yZWdpc3RyeS5zZ21sLCBkb2N1bWVudGF0aW9uL3J1bm5pbmcuc2dtbCwgZG9jdW1lbnRhdGlvbi90b29scy5zZ21sLCBkb2N1bWVudGF0aW9uL3dpbmUtZG9jLnNnbWwsIGRvY3VtZW50YXRpb24vd2luZWhxLmRzbCwgZG9jdW1lbnRhdGlvbi93aW5lbGliLXVzZXIuc2dtbDoKCUpvaG4gUi4gU2hlZXRzIDxqc2hlZXRzQGNvZGV3ZWF2ZXJzLmNvbT4KCURvY3VtZW50YXRpb24gdXBkYXRlLgoKCSogZGxscy9vZGJjMzIvcHJveHlvZGJjLmMsIGluY2x1ZGUvd2luZS9saWJyYXJ5LmgsIGluY2x1ZGUvd2luZS9wb3J0LmgsIGxpYnJhcnkvbG9hZGVyLmMsIGxpYnJhcnkvcG9ydC5jLCBsb2FkZXIvZWxmLmMsIGxvYWRlci9tb2R1bGUuYywgcmVsYXkzMi9idWlsdGluMzIuYzoKCUphbWVzIEFiYmF0aWVsbG8gPGphYmJleUBjb2Rld2VhdmVycy5jb20+CglXb3JrIGFyb3VuZCBnbGliYyAyLjEueCBkbG9wZW4gYnVnIChhZ2FpbikuCgoJKiBkbGxzL3NldHVwYXBpL01ha2VmaWxlLmluLCBkbGxzL3NldHVwYXBpL2Rldmluc3QuYywgZGxscy9zZXR1cGFwaS9pbmZwYXJzZS5jLCBkbGxzL3NldHVwYXBpL3NldHVweC5zcGVjLCBkbGxzL3NldHVwYXBpL3NldHVweDE2LmgsIGRsbHMvc2V0dXBhcGkvc2V0dXB4X21haW4uYywgZGxscy9zZXR1cGFwaS9zZXR1cHhfcHJpdmF0ZS5oOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CgktIGltcGxlbWVudGVkIHByb3BlciBMREQvTERJRCBoYW5kbGluZwoJLSBpbXBsZW1lbnQgQ3RsKkxkZCgpLCBDdGxbR1NdZXRMZGRQYXRoLCBHZW5JbnN0YWxsIChubyByZWFsIG9wZXJhdGlvbnMKCSAgeWV0LCBJIHdhbnQgaGVscCksIEluc3RhbGxIaW5mU2VjdGlvbgoJLSBTdHViYmVkIG91dCBEaUdldENsYXNzRGV2czE2IChuZWVkZWQgZm9yIGUuZy4gTW9ua2V5IElzbGFuZCAzIDspCgktIG1hbnkgbmV3IC5zcGVjIHN0dWJzCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYywgaW5jbHVkZS93aW5lL29ial9iYXNlLmg6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCVNIR2V0TWFsbG9jIG11c3QgdXNlIE1FTUNUWF9UQVNLLCBvdGhlcndpc2UgQ29HZXRNYWxsb2Mgd2lsbAoJYmFkbHkgZmFpbCB3aXRoIEVfSU5WQUxJREFSRyBpbiBjYXNlIG5hdGl2ZSBPTEUzMiBpcyB1c2VkLgoKCSogaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9tYXBpLmgsIGluY2x1ZGUvbWFwaWRlZnMuaDoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBtYXBpLmggd2l0aCB0aGUgZGVmaW5pdGlvbnMgbmVlZGVkIGJ5IHRoZSBNRkMuCgoJKiBkbGxzL250ZGxsL250LmMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy9udGRsbC93Y3N0cmluZy5jOgoJRXJpYyBLb2hsIDxla29obEBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnRlZCBfdWx0b3coKSBhbmQgZXhwb3J0IFtOdC9ad11RdWVyeVZvbHVtZUluZm9ybWF0aW9uRmlsZSgpLgoKCSogdG9vbHMvbWFrZWRlcC5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBwYXRoIHJlc29sdXRpb24gZm9yIGEvYi5jIHNvdXJjZSBmaWxlcy4KCgkqIGNvbnRyb2xzL2xpc3Rib3guYzoKCUxvdWlzIFBoaWxpcHBlIEdhZ25vbiA8bG91aXNwaGlsaXBwZUBtYWNhZGFtaWFuLmNvbT4KCUludmFsaWRhdGUgdGhlIGZvY3VzIHJlY3Qgd2hlbiBhIGxpc3Rib3ggaXMgcmVzaXplZC4KCgkqIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci9zeXNsZXZlbC5jLCB0b29scy93aW5lYnVpbGQvc3BlYzE2LmMsIHdpbjMyL2V4Y2VwdC5jLCB3aW5kb3dzL2RjZS5jLCB3aW5kb3dzL25vbmNsaWVudC5jLCBncmFwaGljcy9lbmhtZXRhZmlsZWRydi9pbml0LmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L2luaXQuYywgZ3JhcGhpY3MveDExZHJ2L2JpdG1hcC5jLCBncmFwaGljcy94MTFkcnYvYnJ1c2guYywgZ3JhcGhpY3MveDExZHJ2L2NsaXBwaW5nLmMsIGdyYXBoaWNzL3gxMWRydi9vYmplY3RzLmMsIGdyYXBoaWNzL3gxMWRydi9vZW1iaXRtYXAuYywgZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsIGluY2x1ZGUvZ2RpLmgsIGluY2x1ZGUvbGR0LmgsIGluY2x1ZGUvbWlzY2VtdS5oLCBpbmNsdWRlL3NlbGVjdG9ycy5oLCBtaXNjL2xzdHIuYywgbXNkb3MvZG9zYXNwaS5jLCBtc2Rvcy9pbnQyNS5jLCBtc2Rvcy9pbnQyNi5jLCBvYmplY3RzL2dkaW9iai5jLCByZWxheTMyL2J1aWx0aW4zMi5jLCByZWxheTMyL3JlbGF5Mzg2LmMsIHJlbGF5MzIvc25vb3AuYywgZGVidWdnZXIvZGJnbWFpbi5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmMsIGRsbHMvZ2RpL2dkaV9tYWluLmMsIGRsbHMvb2xlYXV0MzIvb2xlYXV0LmMsIGRsbHMvdXNlci9yZXNvdXJjZS5jLCBkbGxzL3dpbmFzcGkvd2luYXNwaTMyLmMsIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jLCBkbGxzL3dpbm1tL3dpbmVvc3MvbWlkaS5jOgoJUmVtb3ZlZCBzb21lIHVubmVjZXNzYXJ5IGluY2x1ZGVzLgoJR290IHJpZCBvZiBsZHQuaC4KCgkqIGluY2x1ZGUvZ2xvYmFsLmgsIG1lbW9yeS92aXJ0dWFsLmMsIG1pc2MvY3B1LmMsIG1zZG9zL3htcy5jLCBzY2hlZHVsZXIvc3lzZGVwcy5jLCB3aW4zMi9kZXZpY2UuYzoKCVVzZSBnZXRwYWdlc2l6ZSgpIGluc3RlYWQgb2YgVklSVFVBTF9HZXRQYWdlU2l6ZSgpLgoKCSogd2luZG93cy93aW4uYywgd2luZG93cy93aW5oZWxwLmMsIHdpbmRvd3Mvd2lucHJvYy5jLCBtc2Rvcy9kb3NtZW0uYywgbXNkb3MvZHBtaS5jLCBtc2Rvcy9pbnQyMS5jLCBtc2Rvcy9pbnQyZi5jLCBtc2Rvcy9pbnQzMy5jLCBtc2Rvcy9pbnQ1Yy5jLCBtc2Rvcy92eGQuYywgb2JqZWN0cy9iaXRtYXAuYywgb2JqZWN0cy9mb250LmMsIG9iamVjdHMvbWV0YWZpbGUuYywgc2NoZWR1bGVyL3RocmVhZC5jLCB3aW5kb3dzL2NsYXNzLmMsIHdpbmRvd3MvY3Vyc29yaWNvbi5jLCB3aW5kb3dzL2RlZnduZC5jLCB3aW5kb3dzL2RpYWxvZy5jLCB3aW5kb3dzL2hvb2suYywgd2luZG93cy9tZGkuYywgd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3MvbXNnYm94LmMsIHdpbmRvd3MvcGFpbnRpbmcuYywgd2luZG93cy9zY3JvbGwuYywgbWlzYy9lcnJvci5jLCBtc2Rvcy9kZXZpY2VzLmMsIGluY2x1ZGUvd2luZS9tbXN5c3RlbTE2LmgsIGluY2x1ZGUvd2luZS9wb3J0LmgsIGluY2x1ZGUvd2luZS93aW5iYXNlMTYuaCwgaW5jbHVkZS93aW5lL3dpbmRlZjE2LmgsIGluY2x1ZGUvd2luZS93aW5nZGkxNi5oLCBpbmNsdWRlL3dpbmUvd2ludXNlcjE2LmgsIGxvYWRlci9kb3MvbW9kdWxlLmMsIGxvYWRlci9tb2R1bGUuYywgbG9hZGVyL25lL21vZHVsZS5jLCBsb2FkZXIvbmUvcmVzb3VyY2UuYywgbG9hZGVyL25lL3NlZ21lbnQuYywgbG9hZGVyL3Jlc291cmNlLmMsIGxvYWRlci90YXNrLmMsIG1lbW9yeS9hdG9tLmMsIG1lbW9yeS9lbnZpcm9uLmMsIG1lbW9yeS9nbG9iYWwuYywgbWVtb3J5L2hlYXAuYywgbWVtb3J5L2luc3RyLmMsIG1lbW9yeS9sb2NhbC5jLCBtZW1vcnkvc2VsZWN0b3IuYywgbWVtb3J5L3N0cmluZy5jLCBkbGxzL3dpbm1tL21jaWFuaW0vbWNpYW5pbS5jLCBkbGxzL3dpbnNvY2svYXN5bmMuYywgZmlsZXMvZmlsZS5jLCBncmFwaGljcy9lc2NhcGUuYywgZ3JhcGhpY3MvbWFwcGluZy5jLCBncmFwaGljcy93aW4xNmRydi9pbml0LmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L3BydGRydi5jLCBncmFwaGljcy94MTFkcnYvZGliLmMsIGdyYXBoaWNzL3gxMWRydi9pbml0LmMsIGlmMTYzMi9idWlsdGluLmMsIGlmMTYzMi9yZWxheS5jLCBpZjE2MzIvc25vb3AuYywgaWYxNjMyL3RodW5rLmMsIGluY2x1ZGUvZGlnaXRhbHYuaCwgaW5jbHVkZS9tbWRkay5oLCBpbmNsdWRlL29sZS5oLCBpbmNsdWRlL3N0YWNrZnJhbWUuaCwgaW5jbHVkZS91c2VyLmgsIGluY2x1ZGUvd2luZ2RpLmgsIGluY2x1ZGUvd2lubnQuaCwgZGxscy91c2VyL2xzdHIuYywgZGxscy91c2VyL3RleHQuYywgZGxscy91c2VyL3dzcHJpbnRmLmMsIGRsbHMvdmVyc2lvbi92ZXIxNi5jLCBkbGxzL3dpbjMycy93aW4zMnMxNi5jLCBkbGxzL3dpbmFzcGkvd2luYXNwaTE2LmMsIGRsbHMvd2luZXBzL2VzY2FwZS5jLCBkbGxzL3dpbm1tL2RyaXZlci5jLCBkbGxzL3dpbm1tL2xvbHZsZHJ2LmMsIGRsbHMvd2lubW0vbWNpLmMsIGRsbHMvd2lubW0vbW1pby5jLCBkbGxzL3dpbm1tL21tc3lzdGVtLmMsIGRsbHMvd2lubW0vd2lubW0uc3BlYywgZGxscy9rZXJuZWwvZGVidWdnZXIuYywgZGxscy9rZXJuZWwva2VybmVsLnNwZWMsIGRsbHMva2VybmVsL2tlcm5lbF9tYWluLmMsIGRsbHMva2VybmVsL3RodW5rLmMsIGRsbHMva2VybmVsL3V0dGh1bmsuYywgZGxscy9rZXJuZWwvd293dGh1bmsuYywgZGxscy9tc3ZpZGVvL21zdmlkZW9fbWFpbi5jLCBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGUzMi9pZnMuYywgZGxscy9vbGUzMi9zdG9yYWdlLmMsIGRsbHMvb2xlYXV0MzIvb2xlMmRpc3AuYywgZGxscy9vbGVjbGkvb2xlY2xpLnNwZWMsIGRsbHMvb2xlY2xpL29sZWNsaV9tYWluLmMsIGRsbHMvc2hlbGwzMi9zaGVsbC5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGRsbHMvY29tbWRsZy9jb2xvcmRsZy5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jLCBkbGxzL2NvbW1kbGcvZmluZGRsZy5jLCBkbGxzL2NvbW1kbGcvZm9udGRsZy5jLCBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYywgZGxscy9nZGkvZ2RpLnNwZWMsIGRsbHMvZ2RpL3ByaW50ZHJ2LmMsIGRsbHMvZ2RpL3dpbmcuYywgZGxscy9jb21tZGxnL2NkbGcuaCwgY29udHJvbHMvZWRpdC5jLCBjb250cm9scy9saXN0Ym94LmMsIGNvbnRyb2xzL21lbnUuYywgY29udHJvbHMvY29tYm8uYzoKCVJlcGxhY2VkIFBUUl9TRUdfVE9fTElOIG1hY3JvIGJ5IGV4cG9ydGVkIE1hcFNMIGZ1bmN0aW9uLgoJRml4ZWQgYSBmZXcgcHRyL3NlZ3B0ciBtaXNtYXRjaGVzLgoJTW92ZWQgQ09OVl9SRUNUL1BPSU5UIG1hY3JvcyB0byB3aW5nZGkxNi5oLgoKCSogZGVidWdnZXIvZGVidWcubCwgZGxscy9jb21jdGwzMi9oZWFkZXIuYywgZGxscy9vbGVhdXQzMi90eXBlbGliLmMsIGRsbHMvc2VyaWFsdWkvY29uZmRsZy5jLCBkbGxzL3dpbnNwb29sL2luZm8uYywgb2JqZWN0cy9lbmhtZXRhZmlsZS5jLCB3aW5kb3dzL3dpbnBvcy5jOgoJRml4ZWQgc29tZSB3YXJuaW5ncy4KCgkqIHdpbmRvd3MvZHJpdmVyLmMsIGRsbHMvd2lubW0vTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vZHJpdmVyLmMsIGRsbHMvd2lubW0vbG9sdmxkcnYuYywgZGxscy93aW5tbS9tY2kuYywgZGxscy93aW5tbS9tbXN5c3RlbS5jLCBkbGxzL3dpbm1tL21tc3lzdGVtLnNwZWMsIGRsbHMvd2lubW0vd2luZW1tLmg6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVNwbGl0IGRyaXZlciBmdW5jdGlvbnMgaW50byBVU0VSICgxNiBiaXQgcGFydCkgYW5kIFdJTk1NICgzMiBiaXQgcGFydCkuCglGaXhlZCBzb21lIGJ1Z3MgaW4gMTYgYml0IHBhcnQgYXMgd2VsbC4KCU5vdyBjb3JyZWN0bHkgcGFyc2luZyB0aGUgc3lzdGVtLmluaSBleHRyYSBwYXJhbWV0ZXJzLgoKCSogZGxscy9jcnRkbGwvY3J0ZGxsLmgsIGRsbHMvY3J0ZGxsL2ZpbGUuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgY3J0ZGxsIGNvbXBpbGUgcHJvYmxlbSByZWdhcmRpbmcgZnBvc190IGluIGdsaWJjMi4yLgoKCSogZGxscy9jcnRkbGwvTWFrZWZpbGUuaW4sIGRsbHMvY3J0ZGxsL2NvbnNvbGUuYywgZGxscy9jcnRkbGwvY3J0ZGxsLmgsIGRsbHMvY3J0ZGxsL2NydGRsbC5zcGVjLCBkbGxzL2NydGRsbC9jcnRkbGxfbWFpbi5jLCBkbGxzL2NydGRsbC9kaXIuYywgZGxscy9jcnRkbGwvZXhpdC5jLCBkbGxzL2NydGRsbC9maWxlLmMsIGRsbHMvY3J0ZGxsL3NwYXduLmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJLSBJbXBsZW1lbnQgY29uc29sZSBJL08KCS0gU3VwcG9ydCB0ZW1wb3JhcnkgZmlsZXMsIGFkZCB0bXBmaWxlLCBybXRtcAoJLSBzcGF3biogZnVuY3Rpb25zOiBmaXggYXJncywgYWRkIGN3YWl0LCBzZWFyY2hlbnYKCgkqIHByb2dyYW1zL2Nsb2NrL21haW4uYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJUmVtb3ZlZCBhIGNyYXNoIGluIHByb2dyYW0vY2xvY2suCgoJKiBkbGxzL2NvbWN0bDMyL2hlYWRlci5jOgoJRXJpYyBLb2hsIDxla29obEByei1vbmxpbmUuZGU+CglGaXhlZCBjcmFzaCBvZiBXaW5aaXAgOC4wIGR1ZSB0byBpbnZhbGlkIGltYWdlIGxpc3QgaGFuZGxlLgoKCSogaW5jbHVkZS93aW5kZWYuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglEZWZpbmUgTlVMTCBhcyBpbiBXaW4zMi4KCgkqIGRsbHMvbXN2aWRlby9tc3ZpZGVvX21haW4uYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJUmV0dXJuIHZhbHVlcyBmcm9tIERSVl9FTkFCTEUgc2hvdWxkIG5vdCBiZSBjaGVja2VkLgoKCSogZGxscy9rZXJuZWwvZm9ybWF0X21zZy5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGb3JtYXRNZXNzYWdlQSB3YXNuJ3QgcHJvcGVybHkgaGFuZGxpbmcgdGhlICVscyBtb2RpZmllci4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglJbnZhbGlkIGJ1dHRvbnMgYXJlICJoaWRkZW4iLgoKCSogZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglNb3ZlIGFsbCB2YWx1ZXMgb2YgU0hHZXRTcGVjaWFsRm9sZGVyUGF0aEEgaW50byBhbiBhcnJheSwgYWRkIHNvbWUKCW90aGVyIHJlZ2lzdHJ5IGxvY2F0aW9ucyBhbmQgaW1wcm92ZSB0aGUgbnVtYmVyIG9mIHN1cHBvcnRlZCBDU0lETHMuCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmM6CglJYW4gUGlsY2hlciA8cGlsY2hlckBjb25jZW50cmljLm5ldD4KCUNoYW5nZWQgRklMRURMRzk1X09uT3BlbiB0byAiZG91YmxlIHRlcm1pbmF0ZSIgdGhlIHJldHVybmVkIHN0cmluZyBpZgoJT0ZOX0FMTE9XTVVMVElTRUxFQ1QgaXMgc2V0LgoKMjAwMC0xMi0xMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNjaGVkdWxlci9wcm9jZXNzLmMsIGlmMTYzMi9yZWxheS5jLCBpbmNsdWRlL21haW4uaCwgbG9hZGVyL21haW4uYywgbWlzYy9tYWluLmMsIG1pc2Mvb3B0aW9ucy5jLCBvbGUvb2xlMm5scy5jLCByZWxheTMyL2J1aWx0aW4zMi5jLCBkbGxzL2tlcm5lbC9rZXJuZWxfbWFpbi5jOgoJR290IHJpZCBvZiBtYWluLmguCgoJKiByZWxheTMyL3JlbGF5Mzg2LmMsIHJlbGF5MzIvc25vb3AuYzoKCVVzZSBfX0FTTV9HTE9CQUxfRlVOQyBkaXJlY3RseSBpbiBpMzg2LW9ubHkgY29kZS4KCgkqIGRsbHMvdXNlci91c2VyLnNwZWMsIGxvYWRlci9uZS9yZXNvdXJjZS5jLCB3aW5kb3dzL2N1cnNvcmljb24uYzoKCUNoYW5nZWQgTG9hZEltYWdlMTYgdG8gdGFrZSBhbiBMUENTVFIgaW5zdGVhZCBvZiBhIFNFR1BUUi4KCgkqIGluY2x1ZGUvZHJpdmUuaCwgaW5jbHVkZS93aW5iYXNlLmgsIG1pc2MvY2Ryb20uYywgbXNkb3MvaW50MTEuYywgbXNkb3MvaW50MTMuYywgbXNkb3MvaW50MTcuYywgbXNkb3MvaW50MjEuYywgbXNkb3MvaW50MmYuYywgY29udHJvbHMvY29tYm8uYywgY29udHJvbHMvbGlzdGJveC5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jLCBkbGxzL3NoZWxsMzIvc2hlbGwuYywgZGxscy91c2VyL25ldHdvcmsuYywgZmlsZXMvZHJpdmUuYzoKCVVzZSB0aGUgRFJJVkVfKiBBUEkgY29uc3RhbnRzIGluc3RlYWQgb2YgdGhlIERSSVZFVFlQRSBlbnVtLgoJQ2hhbmdlZCBEUklWRV9DQU5OT1RERVRFUk1JTkUgYW5kIERSSVZFX0RPRVNOT1RFWElTVCB0byB1c2UgdGhlCgljb3JyZWN0IG5hbWVzLgoJQ2xlYW5lZCB1cCBhIGZldyBkZXBlbmRlbmNpZXMgb24gaW50ZXJuYWwgZHJpdmUuYyBmdW5jdGlvbnMuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy9kaW5wdXQvTWFrZWZpbGUuaW4sIGRsbHMvZGlucHV0L2RpbnB1dF9tYWluLmMsIGRsbHMvZGlucHV0L2RpbnB1dF9wcml2YXRlLmgsIGRsbHMvZGlucHV0L2pveXN0aWNrL2xpbnV4LmMsIGRsbHMvZGlucHV0L2pveXN0aWNrL2xpbnV4aW5wdXQuYywgZGxscy9kaW5wdXQva2V5Ym9hcmQvbWFpbi5jLCBkbGxzL2RpbnB1dC9tb3VzZS9tYWluLmMsIGluY2x1ZGUvY29uZmlnLmguaW4sIGluY2x1ZGUvZGlucHV0Lmg6CglNYXJjdXMgTWVpc3NuZXIgPE1hcmN1cy5NZWlzc25lckBjYWxkZXJhLmRlPgoJQWRkZWQgcHJlZmVyZW5jZXMgdG8gZGlucHV0IGRyaXZlcnMgKHNvIHdlIGNhbiBoYXZlIHR3byBqb3lzdGljawoJZHJpdmVycykuIEltcGxlbWVudGVkIGEgam95c3RpY2sgZHJpdmVyIGZvciB0aGUgTGludXggMi40CglkZXYvaW5wdXQvZXZlbnQgQVBJLgoKCSogaW5jbHVkZS93aW5ubHMuaCwgZGxscy9jcnRkbGwvTWFrZWZpbGUuaW4sIGRsbHMvY3J0ZGxsL2NydGRsbC5oLCBkbGxzL2NydGRsbC9jcnRkbGwuc3BlYywgZGxscy9jcnRkbGwvY3J0ZGxsX21haW4uYywgZGxscy9jcnRkbGwvbG9jYWxlLmMsIGRsbHMvY3J0ZGxsL3RpbWUuYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CgktIEltcGxlbWVudGVkIHNldGxvY2FsZSBwYXJzaW5nIGFuZCBMQ19UWVBFIGJlaGF2aW9yLgoJLSBJbXBsZW1lbnRlZCBpc2xlYWRieXRlLCBzbnByaW50Zi4KCS0gQWRkZWQgTkxTIElzVmFsaWRDb2RlUGFnZSBwcm90b3R5cGUsIG1pc2MgQ1JURExMIGZpeGVzLgoKCSogaW5jbHVkZS9zaGVsbGFwaS5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIGEgcHJvdG90eXBlIGZvciBTSEFwcEJhck1lc3NhZ2UuCgoJKiBkbGxzL3VzZXIvdGV4dC5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZGltaUBjcy50b3JvbnRvLmVkdT4KCUZpeGVkIGluZGVudGF0aW9uIHByb2JsZW1zIHJlc3VsdGluZyBmcm9tIGF1dG9tYXRpYyByZW5hbWluZywgb3RoZXIKCWFlc3RoZXRpYyBmaXhlcy4KCgkqIGRsbHMvY29tY3RsMzIvdGFiLmM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBhc2kuZnI+CglVc2UgRHJhd1RleHQgdG8gZGlzcGxheSB0ZXh0IGluIGhvcml6b250YWwgdGFicy4KCgkqIHNlcnZlci9yZWdpc3RyeS5jOgoJTWFydGluIFBpbGthIDxtcGlsa2FAY29kZXdlYXZlcnMuY29tPgoJQ2hhbmdlZCB0aGUgY29uZGl0aW9uIHNvIGl0IGFsc28gd29ya3MgaW4gY2FzZSB3aGVuIHNzY2FuZiByZXR1cm5zIEVPRi4KCjIwMDAtMTItMTEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL3VzZXIuYywgbWVtb3J5L2Vudmlyb24uYywgbWVtb3J5L3NlbGVjdG9yLmMsIG1lbW9yeS92aXJ0dWFsLmMsIG1pc2MvdmVyc2lvbi5jLCBtaXNjZW11L21haW4uYywgbXNkb3MvZHBtaS5jLCBtc2Rvcy92eGQuYywgcmVsYXkzMi9yZWxheTM4Ni5jLCBzY2hlZHVsZXIvY2xpZW50LmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci90aHJlYWQuYywgd2luMzIvY29uc29sZS5jLCB3aW4zMi9kZXZpY2UuYywgd2luMzIvZXhjZXB0LmMsIHdpbjMyL2ZpbGUuYywgZGxscy9jcnRkbGwvZXhpdC5jLCBkbGxzL2NydGRsbC9zcGF3bi5jLCBkbGxzL2NydGRsbC90aW1lLmMsIGRsbHMva2VybmVsL3V0dGh1bmsuYywgaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9sZHQuaCwgaW5jbHVkZS9tb2R1bGUuaCwgaW5jbHVkZS9wcm9jZXNzLmgsIGluY2x1ZGUvd2luYmFzZS5oLCBsb2FkZXIvZG9zL21vZHVsZS5jLCBsb2FkZXIvZWxmLmMsIGxvYWRlci9tb2R1bGUuYywgbG9hZGVyL25lL21vZHVsZS5jLCBsb2FkZXIvcGVfaW1hZ2UuYywgbG9hZGVyL3BlX3Jlc291cmNlLmMsIGxvYWRlci9yZXNvdXJjZS5jLCBsb2FkZXIvdGFzay5jOgoJTW92ZWQgYWxsIFdpbmUgaW50ZXJuYWwgZGVmaW5pdGlvbnMgb3V0IG9mIHByb2Nlc3MuaC4KCgkqIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYzoKCU91dHB1dCB0aGUgZXhwb3J0cyB0YWJsZSBpbiBhc3NlbWJseSBjb2RlIHRvIG1ha2UgaXQgcG9zc2libGUgdG8KCWV4cG9ydCBDKysgbWFuZ2xlZCBuYW1lcy4KCgkqIGRsbHMvbnRkbGwvcnRsLmM6CglJbXBsZW1lbnRlZCBSdGxBY3F1aXJlUGViTG9jayBhbmQgUnRsUmVsZWFzZVBlYkxvY2suCgoJKiBkbGxzL3VzZXIvdGV4dC5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAYXNpLmZyPgoJSW1wbGVtZW50ZWQgRHJhd1RleHRXIGFzIFVuaWNvZGUgYW5kIERyYXdUZXh0QSBhcyBjYWxsIHRvIERyYXdUZXh0Vy4KCgkqIHdpbmRvd3MveDExZHJ2L2NsaXBib2FyZC5jLCB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCBpbmNsdWRlL2NsaXBib2FyZC5oLCB3aW5kb3dzL2NsaXBib2FyZC5jLCB3aW5kb3dzL3F1ZXVlLmMsIHdpbmRvd3MvdXNlci5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBDRl9VTklDT0RFVEVYVCBhcyBwcmltYXJ5IHRleHQgY2xpcGJvYXJkIGZvcm1hdC4KCVVzZSBbeDExZHJ2XS5UZXh0Q1AgZm9yIGludGVyY2hhbmdlIHdpdGggWC4KCjIwMDAtMTItMTAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBwcm9ncmFtcy9NYWtlcHJvZy5ydWxlcy5pbjoKCURlbm5pcyBCam9ya2x1bmQgPGRiQHppZ28uZGhzLm9yZz4KCVJlbW92ZSBvbGQgbGluayBiZWZvcmUgY3JlYXRpbmcgdGhlIG5ldyBvbmUuCgoJKiB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCB3aW5kb3dzL3gxMWRydi93bmQuYywgZGxscy90dHlkcnYvdHR5ZHJ2LmgsIGRsbHMvdHR5ZHJ2L3duZC5jLCBkbGxzL3VzZXIvY29udHJvbHMuaCwgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzIucmMsIGRsbHMvdXNlci91c2VyX21haW4uYywgaW5jbHVkZS9idXR0b24uaCwgaW5jbHVkZS9jb21iby5oLCBpbmNsdWRlL2Rlc2t0b3AuaCwgaW5jbHVkZS9kaWFsb2cuaCwgaW5jbHVkZS9tZGkuaCwgaW5jbHVkZS9tZW51LmgsIGluY2x1ZGUvc2Nyb2xsLmgsIGluY2x1ZGUvc3RhdGljLmgsIGluY2x1ZGUvd2luLmgsIGluY2x1ZGUveDExZHJ2LmgsIHdpbmRvd3MvTWFrZWZpbGUuaW4sIHdpbmRvd3MvY2xhc3MuYywgd2luZG93cy9kZWZkbGcuYywgd2luZG93cy9kaWFsb2cuYywgd2luZG93cy9tZGkuYywgd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3Mvbm9uY2xpZW50LmMsIHdpbmRvd3Mvc3lzcGFyYW1zLmMsIHdpbmRvd3MvdXNlci5jLCB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3dpbnBvcy5jLCB3aW5kb3dzL3dpbnByb2MuYywgTWFrZS5ydWxlcy5pbiwgY29udHJvbHMvTWFrZWZpbGUuaW4sIGNvbnRyb2xzL2J1dHRvbi5jLCBjb250cm9scy9jb21iby5jLCBjb250cm9scy9kZXNrdG9wLmMsIGNvbnRyb2xzL2VkaXQuYywgY29udHJvbHMvaWNvbnRpdGxlLmMsIGNvbnRyb2xzL2xpc3Rib3guYywgY29udHJvbHMvbWVudS5jLCBjb250cm9scy9zY3JvbGwuYywgY29udHJvbHMvc3RhdGljLmMsIGNvbnRyb2xzL3dpZGdldHMuYzoKCU1vdmVkIG1vc3QgYnVpbHRpbiBjb250cm9scyBzdHJ1Y3R1cmVzIGludG8gdGhlaXIgcmVzcGVjdGl2ZSBDIGZpbGUuCglDcmVhdGVkIG5ldyBjb250cm9scy5oIGZpbGUgcHJpdmF0ZSB0byB1c2VyMzIuZGxsIGFuZCBtb3ZlZCByZW1haW5pbmcKCWJ1aWx0aW4gY29udHJvbHMgZGVmaW5pdGlvbnMgdGhlcmUuCgoyMDAwLTEyLTA5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9udGRsbC9udGRsbC5zcGVjLCBpbmNsdWRlL2VsZmRsbC5oLCBsb2FkZXIvTWFrZWZpbGUuaW4sIGxvYWRlci9lbGYuYywgbG9hZGVyL2VsZmRsbC5jLCBsb2FkZXIvbG9hZG9yZGVyLmM6CglSZW1vdmVkIG5vIGxvbmdlciB1c2VkIGVsZmRsbCBsb2FkZXIuCgoJKiB3aW5kb3dzL2NsYXNzLmMsIHdpbmRvd3MvbWVzc2FnZS5jLCBkbGxzL3dpbm1tL3dpbmVvc3MvbWl4ZXIuYywgaW5jbHVkZS9xdWV1ZS5oLCBpbmNsdWRlL3duYXNwaTMyLmgsIG1pc2MvbWFpbi5jLCBkbGxzL29sZWF1dDMyL29sZTJkaXNwLmMsIFJFQURNRToKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJLSBSRUFETUUgdXBkYXRlCgktIGFkZCBvZmZzZXRzIHRvIEFTUEkgc3RydWN0IGRlZmluZXMKCS0gc3BlbGxpbmcKCgkqIGRsbHMvb2xlYXV0MzIvc2FmZWFycmF5LmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCURvbid0IGZhaWwgb24gcG9pbnRlciBhZGRyZXNzIGNoZWNraW5nIHdoZW4gZm9yZWlnbiBoZWFwLgoKCSogaW5jbHVkZS9vbGVhdXRvLmg6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZWQgZHVwbGljYXRlIGRlZmluZXMuCgoJKiBkbGxzL3NoZWxsMzIvZGlhbG9ncy5jLCBwcm9ncmFtcy9ub3RlcGFkL2RpYWxvZy5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglGaXhlZCBNZXNzYWdlQm94KCkgdXNhZ2UuCgoJKiBkbGxzL3dpbmFzcGkvd2luYXNwaTMyLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCVByaW50IENEQiBhcmVhLgoKMjAwMC0xMi0wNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MvZGVmd25kLmM6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJQWRkZWQgaGFuZGxlcnMgZm9yIHNvbWUgSU1FIG1lc3NhZ2VzIGluIERlZldpbmRvd1Byb2MuCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBhc2kuZnI+CglGaWxlb2tzdHJpbmcgbm90aWZpY2F0aW9uIHNob3VsZCBiZSBzZW50IHRvIHRoZSBjdXN0b20gY2hpbGQgZGlhbG9nLAoJbm90IHRvIHRoZSBtYWluIGRpYWxvZy4KCgkqIGRsbHMvbnRkbGwvbnRkbGwuc3BlYzoKCUFuZHJldyBMZXd5Y2t5IDxhbmRyZXdAdHJhbnNnYW1pbmcuY29tPgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglEZS1zdHViIHNpbigpIGFuZCBjb3MoKS4KCUFkZCBub2ltcG9ydCBmbGFnIHRvIHNpbigpLCBjb3MoKSwgYW5kIHBvdygpLgoKCSogd2luZG93cy94MTFkcnYvd25kLmMsIGRsbHMvdHR5ZHJ2L3R0eWRydi5oLCBkbGxzL3R0eWRydi93bmQuYywgZGxscy91c2VyL3VzZXIuc3BlYywgaW5jbHVkZS9idXR0b24uaCwgaW5jbHVkZS9jbGFzcy5oLCBpbmNsdWRlL3dpbi5oLCBpbmNsdWRlL3dpbmUvd2ludXNlcjE2LmgsIGluY2x1ZGUveDExZHJ2LmgsIHdpbmRvd3MvY2xhc3MuYywgd2luZG93cy9kY2UuYywgd2luZG93cy9kZWZ3bmQuYywgd2luZG93cy9tZGkuYywgd2luZG93cy91c2VyLmMsIHdpbmRvd3Mvd2luLmMsIGNvbnRyb2xzL2J1dHRvbi5jLCBjb250cm9scy9kZXNrdG9wLmMsIGNvbnRyb2xzL3dpZGdldHMuYzoKCVJlbW92ZWQgZGVwZW5kZW5jaWVzIG9uIHRoZSBpbnRlcm5hbHMgb2YgdGhlIENMQVNTIHN0cnVjdHVyZS4KCUFkZGVkIHN1cHBvcnQgZm9yIGhhdmluZyBib3RoIEFTQ0lJIGFuZCBVbmljb2RlIHdpbmRvdyBwcm9jZWR1cmVzIGZvcgoJYnVpbHRpbiBjbGFzc2VzLgoKCSogd2luZG93cy9kZWZkbGcuYywgd2luZG93cy93aW5wcm9jLmM6CglSZW1vdmVkIGNhbGxzIHRvIFdJREdFVFNfSXNDb250cm9sLgoKCSogaW5jbHVkZS93aW5pbmV0Lmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJVW5jb21tZW50IEdPUEhFUl9BVFRSSUJVVEVfVFlQRSBhbmQgR29waGVyR2V0QXR0cmlidXRlLgoJQ3JlYXRlIEEvVyB2ZXJzaW9ucyBvZiBHT1BIRVJfQVRUUklCVVRFX1RZUEUgYW5kCglHT1BIRVJfQVRUUklCVVRFX0VOVU1FUkFUT1IuCgoJKiBpbmNsdWRlL3dpbnNvY2suaCwgdG9vbHMvd2luZW1ha2VyOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIGEgcHJvdG90eXBlIGZvciBjbG9zZXNvY2tldC4KCgkqIGRsbHMvY29tbWRsZy9wcmludGRsZy5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCBoYW5kbGluZyBvZiBEaWFsb2dCb3hJbmRpcmVjdFBhcmFtQSByZXR1cm4gdmFsdWUuCgoyMDAwLTEyLTA2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZG9jdW1lbnRhdGlvbi93aW5lLmNvbmYubWFuLmluLCBkb2N1bWVudGF0aW9uL3dpbmUubWFuLmluLCBmaWxlcy9wcm9maWxlLmMsIFJFQURNRSwgd2luZS5pbmk6CglBZGRlZCBhdXRvbWF0aWMgdHJhbnNsYXRpb24gb2YgdGhlIGNvbmZpZyBmaWxlIHRvIHRoZSBuZXcKCWZvcm1hdC4gVXBkYXRlZCBkb2N1bWVudGF0aW9uLgoKCSogaW5jbHVkZS93aW5lL3BvcnQuaDoKCUFkZGVkIGRlZmluZSBmb3IgU19JU0xOSyBpZiBtaXNzaW5nLgoKCSogdG9vbHMvd2luZWJ1aWxkL3NwZWMxNi5jLCB0b29scy93aW5lYnVpbGQvc3BlYzMyLmM6CglEb24ndCBtYWtlIHRoZSBzcGVjIGZpbGUgY29uc3RydWN0b3JzIHN0YXRpYyBzbyB0aGF0IHRoZXkgZG9uJ3QgZ2V0CglvcHRpbWl6ZWQgb3V0LgoKCSogaW5jbHVkZS9iaXRtYXAuaCwgaW5jbHVkZS94MTFkcnYuaCwgZGxscy90dHlkcnYvYml0bWFwLmMsIGRsbHMvdHR5ZHJ2L2RjLmMsIGRsbHMvdHR5ZHJ2L3R0eWRydi5oLCBncmFwaGljcy94MTFkcnYvYml0Ymx0LmMsIGdyYXBoaWNzL3gxMWRydi9kaWIuYywgZ3JhcGhpY3MveDExZHJ2L2dyYXBoaWNzLmMsIGdyYXBoaWNzL3gxMWRydi9pbml0LmMsIGdyYXBoaWNzL3gxMWRydi90ZXh0LmM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUFuZHJldyBMZXd5Y2t5IDxhbmRyZXdAdHJhbnNnYW1pbmcuY29tPgoJR2F2cmllbCBTdGF0ZSA8Z2F2QHRyYW5zZ2FtaW5nLmNvbT4KCURJQiBzZWN0aW9uIGltcHJvdmVtZW50czsgVXBkYXRlRElCU2VjdGlvbiBoYXMgYmVlbiByZXBsYWNlZCB3aXRoCglMb2NrRElCU2VjdGlvbiBhbmQgVW5sb2NrRElCU2VjdGlvbiwgZm9yIGltcHJvdmVkIHRocmVhZCBzYWZldHkuCglESUJfU3RhdHVzXyogaXMgbm93IGRyaXZlci1pbmRlcGVuZGVudCwgYW5kIHRoZXJlJ3MgYSBuZXcKCURJQl9TdGF0dXNfQXV4TW9kLiBCZXR0ZXIgaGFuZGxpbmcgb2YgRElCIHN1cmZhY2VzIHdpdGggbm9uc3RhbmRhcmQKCXBpdGNoLiBTbGlnaHQgb3B0aW1pemF0aW9uIG9mIERJQnNlY3Rpb24tPmRpc3BsYXkgQml0Qmx0LgoKCSogZGxscy9rZXJuZWwvbmxzL2hlYi5ubHMsIG1pc2Mvb3B0aW9ucy5jLCB0b29scy93cmMvdXRpbHMuYywgZGxscy9rZXJuZWwvbG9jYWxlX3JjLnJjOgoJTWljaGFlbCBWZWtzbGVyIDxtdmVrc2xlckB0ZWNodW5peC50ZWNobmlvbi5hYy5pbD4KCUFkZCBiYXNpYyBOTFMgaW5mb3JtYXRpb24gbmVlZGVkIGZvciBIZWJyZXcuCgoJKiBkbGxzL2tlcm5lbC9ubHMvY3ltLm5sczoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCVdlbHNoIG5lZWRzIGlzbzg4NTktMTQuCgoJKiB3aW5kb3dzL3gxMWRydi9ldmVudC5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglVc2UgU2VuZE5vdGlmeU1lc3NhZ2UoKSBmb3IgV01fU1lOQ1BBSU5ULgoKCSogZGxscy9udGRsbC9udC5jOgoJSmFtZXMgSnVyYW4gPGphbWVzanVyYW5AYWx1bW5pLnBzdS5lZHU+CglSZXR1cm4gYSBtYXhpbXVtIHJlZ2lzdHJ5IHNpemUgb2YgMzIgTUIgaW4gTnRRdWVyeVN5c3RlbUluZm9ybWF0aW9uLgoKCSogZG9jdW1lbnRhdGlvbi9zYW1wbGVzL2NvbmZpZzoKCUFkZGVkIHNhbXBsZSBjb25maWcgZmlsZSBpbiB0aGUgbmV3IGZvcm1hdC4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJU2V0IC1tcHJlZmVycmVkLXN0YWNrLWJvdW5kYXJ5PTIgZmxhZyBpZiBzdXBwb3J0ZWQgdG8gYXZvaWQgd2FzdGVmdWwKCXN0YWNrIGFsaWdubWVudHMuCgoJKiB0b29scy93aW5lYnVpbGQvaW1wb3J0LmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCU5vdyBwcmludHMgbGluZSBudW1iZXIgZm9yICd4LmRsbCBpbXBvcnRlZCBidXQgbm8gc3ltYm9scyB1c2VkJyB3YXJuaW5nLgoKCSogY29udHJvbHMvY29tYm8uYzoKCUxvdWlzIFBoaWxpcHBlIEdhZ25vbiA8bG91aXNwaGlsaXBwZUBtYWNhZGFtaWFuLmNvbT4KCVVwZGF0ZSBpbnRlcm5hbCBjb250cm9scyBvbiBXTV9XSU5ET1dQT1NDSEFOR0VELgoKCSogZGxscy9udGRsbC9udGRsbC5zcGVjLCBtaXNjL01ha2VmaWxlLmluLCBtaXNjL2V4dF9kZWJ1Z2dlci5jLCBNYWtlZmlsZS5pbiwgZGVidWdnZXIvTWFrZWZpbGUuaW4sIGRlYnVnZ2VyL2V4dF9kZWJ1Z2dlci5jLCBkZWJ1Z2dlci93aW5lZGJnLmM6CglCdWlsZCB0aGUgZGVidWdnZXIgYXMgYSAuc28uCgoJKiBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW4sIGRsbHMvc2hlbGwzMi9zaGVsbGd1aWQuYywgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jLCBkbGxzL3NobHdhcGkvTWFrZWZpbGUuaW4sIGRsbHMvc2hsd2FwaS9zaGx3YXBpX21haW4uYywgaW5jbHVkZS9kcGxheS5oLCBvbGUvTWFrZWZpbGUuaW4sIG9sZS91dWlkLmMsIGRsbHMvYXZpZmlsMzIvTWFrZWZpbGUuaW4sIGRsbHMvYXZpZmlsMzIvYXZpZmlsZS5jLCBkbGxzL2NvbW1kbGcvTWFrZWZpbGUuaW4sIGRsbHMvY29tbWRsZy9maWxlZGxnYnJvd3Nlci5jLCBkbGxzL2RkcmF3L01ha2VmaWxlLmluLCBkbGxzL2RkcmF3L21haW4uYywgZGxscy9kaW5wdXQvTWFrZWZpbGUuaW4sIGRsbHMvZGlucHV0L2RpbnB1dF9tYWluLmMsIGRsbHMvZHBsYXl4L01ha2VmaWxlLmluLCBkbGxzL2RwbGF5eC9kcGxheXhfbWFpbi5jLCBkbGxzL2Rzb3VuZC9NYWtlZmlsZS5pbiwgZGxscy9kc291bmQvZHNvdW5kX21haW4uYywgZGxscy9vbGUzMi9NYWtlZmlsZS5pbiwgZGxscy9vbGUzMi9vbGVvYmouYywgZGxscy9vbGVhdXQzMi9NYWtlZmlsZS5pbiwgZGxscy9vbGVhdXQzMi9vbGVhdXQuYywgTWFrZS5ydWxlcy5pbiwgTWFrZWZpbGUuaW46CglDcmVhdGVkIGEgc21hbGwgc3RhdGljIGxpYnJhcnkgaW4gb2xlL2xpYnV1aWQuYSB0aGF0IGNvbnRhaW5zIGFsbCB0aGUKCVVVSUQgZGVmaW5pdGlvbnMgKHdpdGggdGhlIGhlbHAgb2YgRnJhbmNvaXMgR291Z2V0KS4KCgkqIHRvb2xzL3dtYy9NYWtlZmlsZS5pbiwgdG9vbHMvd3JjL01ha2VmaWxlLmluLCBkbGxzL2NydGRsbC9NYWtlZmlsZS5pbiwgZGxscy9semV4cGFuZC9NYWtlZmlsZS5pbiwgZGxscy9udGRsbC9NYWtlZmlsZS5pbiwgZGxscy9zaGVsbDMyL01ha2VmaWxlLmluLCBkbGxzL3NobHdhcGkvTWFrZWZpbGUuaW4sIGRsbHMvdmVyc2lvbi9NYWtlZmlsZS5pbiwgaWYxNjMyL01ha2VmaWxlLmluLCBsaWJ0ZXN0L01ha2VmaWxlLmluLCBwcm9ncmFtcy9NYWtlcHJvZy5ydWxlcy5pbiwgcHJvZ3JhbXMvYXZpdG9vbHMvTWFrZWZpbGUuaW4sIHNlcnZlci9NYWtlZmlsZS5pbiwgdG9vbHMvd2luZWJ1aWxkL01ha2VmaWxlLmluLCBkbGxzL01ha2VkbGwucnVsZXMuaW4sIGRsbHMvY29tY3RsMzIvTWFrZWZpbGUuaW46CglVc2UgbGlid2luZSBhbmQgbGlid2luZV91bmljb2RlIGRpcmVjdGx5IGZyb20gdGhlaXIgYnVpbGQgZGlyZWN0b3J5CglpbnN0ZWFkIG9mIHVzaW5nIHN5bWxpbmtzLgoKCSogZGxscy94MTFkcnYvTWFrZWZpbGUuaW4sIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmMsIGluY2x1ZGUvdHNfc2hhcGUuaCwgaW5jbHVkZS90c194Zjg2ZGdhLmgsIGluY2x1ZGUvdHNfeGY4NmRnYTIuaCwgaW5jbHVkZS90c194Zjg2dm1vZGUuaCwgaW5jbHVkZS90c194bGliLmgsIGluY2x1ZGUvdHNfeHBtLmgsIGluY2x1ZGUvdHNfeHJlc291cmNlLmgsIGluY2x1ZGUvdHNfeHNobS5oLCBpbmNsdWRlL3RzX3h1dGlsLmgsIGluY2x1ZGUvdHNfeHZpZGVvLmgsIHRvb2xzL21ha2VfWDExd3JhcHBlcnMsIHRzeDExLy5jdnNpZ25vcmUsIHRzeDExL01ha2VmaWxlLmluLCB0c3gxMS9sb2NraW5nLmMsIHRzeDExL3RzX3NoYXBlLmMsIHRzeDExL3RzX3hmODZkZ2EuYywgdHN4MTEvdHNfeGY4NmRnYTIuYywgdHN4MTEvdHNfeGY4NnZtb2RlLmMsIHRzeDExL3RzX3hsaWIuYywgdHN4MTEvdHNfeHBtLmMsIHRzeDExL3RzX3hyZXNvdXJjZS5jLCB0c3gxMS90c194c2htLmMsIHRzeDExL3RzX3h1dGlsLmMsIHRzeDExL3RzX3h2aWRlby5jLCBNYWtlLnJ1bGVzLmluLCBNYWtlZmlsZS5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW46CglCdWlsZCB0c3gxMSBsYXllciBhcyBhIHNlcGFyYXRlIHNoYXJlZCBsaWJyYXJ5LgoKMjAwMC0xMi0wNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvb2RiYzMyL3Byb3h5b2RiYy5jLCBpZjE2MzIvYnVpbHRpbi5jLCBsaWJyYXJ5L2xvYWRlci5jLCBsb2FkZXIvZWxmLmMsIHJlbGF5MzIvYnVpbHRpbjMyLmM6CglBbHdheXMgcGFzcyBsb3dlci1jYXNlIGZpbGVuYW1lcyB0byB3aW5lX2RsbF9sb2FkKCkuCglDbGVhciBkbGVycm9yKCkgYmVmb3JlIGFuZCBhZnRlciBjYWxscyB0byBkbG9wZW4vZGxzeW0gdG8gd29yayBhcm91bmQKCWEgZ2xpYmMgYnVnICh0aGFua3MgdG8gSmFtZXMgQWJiYXRpZWxsbyBmb3IgdHJhY2tpbmcgdGhlIGJ1ZykuCgoJKiBkbGxzL2tlcm5lbC9ubHMvc3JiLm5scywgdG9vbHMvd3JjL3V0aWxzLmM6CglOZXJpanVzIEJhbGl1bmFzIDxuZXJpanVzQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCUZpeGVkIFNlcmJpYW4gbGFuZ3VhZ2UgY29kZSBwYWdlLgoKCSogY29udHJvbHMvY29tYm8uYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglGaXhlZCBhIHByb2JsZW0gd2hlcmUgdGhlIHN0cmluZyBpbiBhIGNvbWJvIGJveCBmbGlja2VycyBpZiB5b3UKCXJhcGlkbHkgcmVzZXQgdGhlIGNvbnRlbnQgYW5kIHRoZW4gcmVwbGFjZSB0aGUgY29udGVudC4KCgkqIGxvYWRlci9wZV9pbWFnZS5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglCZXR0ZXIgZXJyb3IgbWVzc2FnZSBmb3IgZm9yd2FyZHMuCgoJKiBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMi5yYywgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfWmgucmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgQ2hpbmVzZSByZXNvdXJjZXMuCgoJKiBpbmNsdWRlL2ltbS5oOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUFkZGVkIHNvbWUgbWlzc2luZyBkZWZpbml0aW9ucy4KCgkqIGRsbHMvcnBjcnQ0L3JwY3J0NF9tYWluLmM6CglTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1saW5lLmNvbT4KCUNvbXBpbGUgZml4IGZvciBnY2MgMi43LjIuMy4KCgkqIE1ha2UucnVsZXMuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJRGltaXRyaWUgTy4gUGF1biA8ZGltaUBjcy50b3JvbnRvLmVkdT4KCVVzZSB0aGUgYXBwcm9yaWF0ZSBjb21tYW5kIGZvciBjb21iaW5pbmcgLm8gZmlsZXMuCgoJKiB3aW5kb3dzL3dpbnByb2MuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglSZW1vdmVkIHRoZSBjb2RlIGR1cGxpY2F0aW9uLgoKCSogd2luZG93cy93aW5wcm9jLmM6CglSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJRG9uJ3QgZm9yZ2V0IHRvIG1hcCB0aGUgbWVzc2FnZSBpbiBXSU5QUk9DX01hcE1zZzE2VG8zMlcoKS4KCgkqIHJlbGF5MzIvYnVpbHRpbjMyLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVkIGRsZXJyb3IoKSBjaGVjayB0byB1c2Ugc3Ryc3RyKCkuCgoJKiBkbGxzL01ha2VmaWxlLmluOgoJRGltaXRyaWUgTy4gUGF1biA8ZGltaUBjcy50b3JvbnRvLmVkdT4KCVVzZSBATElCRVhUQCBpbnN0ZWFkIG9mIC5zbyBmb3IgdGhlIGludGVyLWRsbHMgZGVwZW5kZW5jaWVzLgoKCSogdG9vbHMvbWFrZWRlcC5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZGltaUBjcy50b3JvbnRvLmVkdT4KCS0gb3ZlcndyaXRlIChyYXRoZXIgdGhhbiBhcHBlbmQpIHRoZSBvdXRwdXQgZmlsZSBpZiB3ZSBoYXZlIG5vIHNlcGFyYXRvcgoJLSBhdm9pZCBvdXRwdXQgaWYgdGhlcmUgaXMgbm90aGluZyB0byBkbwoKCSogZGxscy91c2VyL3VzZXIzMi5zcGVjLCBpbmNsdWRlL3dpbnVzZXIuaCwgd2luZG93cy9pbnB1dC5jOgoJS2VuIENvbGVtYW4gPGtlbl9jb2xlbWFuQGluYW1lLmNvbT4KCUFkZGVkIGEgZmlyc3QtY3V0IHZlcnNpb24gb2YgTWFwVmlydHVhbEtleUV4VygpIHRoYXQgaGFzIHRoZSBzYW1lCglmdW5jdGlvbmFsaXR5IChhbmQgbGltaXRhdGlvbnMpIGFzIHRoZSBBTlNJIHZlcnNpb24uCgoJKiB0b29scy93aW5laW5zdGFsbDoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJd2luZWluc3RhbGwgZGlkbid0IGNyZWF0ZSB0aGUgZGVmYXVsdCBuby13aW5kb3dzIGRpcmVjdG9yeSAvYwoJd2hlbiBqdXN0IHByZXNzaW5nIGVudGVyLgoKCSogZ3JhcGhpY3MveDExZHJ2L2RpYi5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gY29ycmVjdCBudW1iZXIgb2YgY29sb3JtYXAgZW50cmllcyBsb29rZWQgYXQgaW4gR2V0RElCQ29sb3JUYWJsZS4KCS0gY29ycmVjdCBudW1iZXIgb2YgY29sb3JtYXAgZW50cmllcyBwcm9jZXNzZWQgaW4gU2V0RElCQ29sb3JUYWJsZS4KCgkqIGRsbHMva2VybmVsL25scy9ubGIubmxzLCBkbGxzL2tlcm5lbC9ubHMvbmxkLm5sczoKCVJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglTb21lcyBmaXhlcyBmb3IgRHV0Y2ggbG9jYWxlcy4KCgkqIGRsbHMvaW1tMzIvaW1tMzIuc3BlYzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglBZGRlZCBzb21lIHN0dWJzLgoKMjAwMC0xMi0wMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIEFOTk9VTkNFLCBDaGFuZ2VMb2csIGluY2x1ZGUvdmVyc2lvbi5oOgoJUmVsZWFzZSAyMDAwMTIwMi4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KMjAwMC0xMi0wMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNlcnZlci9tYXBwaW5nLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCUNoZWNrIHRoZSBhdHRyaWJ1dGVzIG9mIHRoZSAqY3VycmVudCogc2VjdGlvbiwgbm90IG9ubHkgdGhlIGF0dHJpYnV0ZXMKCW9mIHRoZSAqZmlyc3QqIHNlY3Rpb24uLi4KCgkqIHdpbmRvd3Mvd2lucHJvYy5jOgoJRml4ZWQgV0lOUFJPQ19HZXRQdHIoKSB0byBhbHdheXMgcGFzcyB0aGUgc3RhcnQgb2YgdGhlIGJsb2NrIHRvCglIZWFwVmFsaWRhdGUoKS4KCgkqIHNjaGVkdWxlci9wcm9jZXNzLmM6CglEaXNwbGF5IGFuIGVycm9yIG1lc3NhZ2UgaWYgbG9hZGluZyBhIFdpbmVsaWIgYXBwIGZhaWxlZCAoc3VnZ2VzdGVkIGJ5CglGcmFuY29pcyBHb3VnZXQpLgoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLCBkbGxzL2RkcmF3L2QzZGV4ZWN1dGVidWZmZXIuYywgZGxscy9kZHJhdy9kM2RtYXRlcmlhbC5jLCBkbGxzL2RwbGF5eC9kcGxheS5jLCBkbGxzL2RwbGF5eC9kcGxheXhfZ2xvYmFsLmMsIGRsbHMvZHBsYXl4L2RwbG9iYnkuYywgZGxscy9kcGxheXgvbmFtZV9zZXJ2ZXIuYywgaW5jbHVkZS9kM2R0eXBlcy5oLCBpbmNsdWRlL2RwbGF5LmgsIGluY2x1ZGUvZHBsb2JieS5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglVc2UgdGhlIERVTU1ZVU5JT05OQU1FIG1hY3JvcyBzbyB0aGF0IHRoZSBoZWFkZXJzIGNhbiBiZSB1c2VkIGluCglXaW5lbGliLgoKCSogaWYxNjMyL2J1aWx0aW4uYywgaW5jbHVkZS9maWxlLmgsIGxvYWRlci9lbGYuYywgbG9hZGVyL2xvYWRvcmRlci5jLCBsb2FkZXIvbW9kdWxlLmMsIGxvYWRlci9uZS9tb2R1bGUuYywgZmlsZXMvZG9zX2ZzLmMsIGZpbGVzL2ZpbGUuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglBZGRlZCBBU0NJSS1vbmx5IHZlcnNpb24gb2YgdG91cHBlciwgdG9sb3dlciwgc3RyY2FzZWNtcCBhbmQgdGhlIGxpa2UKCWZvciBmaWxlIGFuZCBtb2R1bGUgSS9PLgoKCSogZGxscy93c29jazMyL3NvY2tldC5jLCBkbGxzL3dzb2NrMzIvd3NvY2szMi5zcGVjLCBpbmNsdWRlL3dpbnNvY2syLmg6CglVc2UgaW9jdGxzb2NrZXQoKSBpbnN0ZWFkIG9mIGlvY3RsKCkgc28gdGhhdCB3ZSBjYW4gaW1wb3J0IHdzMl8zMi5kbGwKCWFnYWluICh1bnRlc3RlZCkuCgoJKiBkbGxzL2NydGRsbC9jcnRkbGxfbWFpbi5jLCBkbGxzL2NydGRsbC9maWxlLmMsIGRsbHMvbXN2aWRlby9tc3ZpZGVvX21haW4uYywgZGxscy9udGRsbC9taXNjLmMsIGxvYWRlci9yZXNvdXJjZS5jLCB3aW4zMi9jb25zb2xlLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUFkZGVkL21vZGlmaWVkIGRvY3VtZW50YXRpb24gZm9yIGZ1bmN0aW9uIGFyZ3VtZW50cy4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLmRhdCwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjE2L2tlcm5lbC5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4xNi93aW5zb2NrLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjE2L3dwcm9jcy5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9rZXJuZWwzMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi91c2VyMzIuYXBpOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglNaW5vciBBUEkgZmlsZXMgdXBkYXRlLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJRmlsZU9wZW5EbGdQcm9jOTU6IG5vdGlmeSBhcHBsaWNhdGlvbiBvZiBjaGFuZ2VkIHNlbGVjdGlvbiBhZnRlcgoJZmlsbGluZyB0ZW1wbGF0ZS4KCgkqIGRsbHMvd2lubW0vbWNpY2RhL21jaWNkYS5jLCBtaXNjL2Nkcm9tLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGJ1Z3Mgd2hlbiB0cmF5IHdhcyBvcGVuLgoKCSogd2luZG93cy93aW5wcm9jLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgc2V2ZXJhbCBhZGRpdGlvbmFsIHRvL2Zyb20gdW5pY29kZSBtZXNzYWdlIG1hcHBpbmdzLgoKCSogcHJvZ3JhbXMvTWFrZXByb2cucnVsZXMuaW4sIHRvb2xzL3dpbmVidWlsZC9zcGVjMTYuYywgdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jLCBkbGxzL01ha2VkbGwucnVsZXMuaW46CglBbHdheXMgcHV0IHRoZSBkbGwgY29uc3RydWN0b3IgaW4gdGhlIC5pbml0IHNlY3Rpb24sIGFuZCBsaWtlIHRoZQoJLnNwZWMubyBmaWxlIGZpcnN0IHRvIGVuc3VyZSBjb3JyZWN0IGNhbGxpbmcgb3JkZXIgb2YgdGhlIGNvbnN0cnVjdG9ycy4KCgkqIG1zZG9zL2ludDEwLmMsIG1zZG9zL2ludDE1LmMsIG9iamVjdHMvYnJ1c2guYywgd2luMzIvZXhjZXB0LmMsIGRsbHMvY3J0ZGxsL2NydGRsbC5oLCBkbGxzL2NydGRsbC9maWxlLmMsIGRsbHMvb2xlMzIvY2xpcGJvYXJkLmMsIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jLCBtZW1vcnkvc2VsZWN0b3IuYywgbWlzYy9yZWdpc3RyeS5jLCB3aW5lLmluaToKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglGaXhlZCBtaXNjZWxsYW5lb3VzIHR5cG9zLCBzeW50YWN0aWMgYW5kIGdyYW1tYXRpY2FsIGVycm9ycy4KCgkqIERFVkVMT1BFUlMtSElOVFMsIGluY2x1ZGUvZHBsYXkuaCwgaW5jbHVkZS9kcGxvYmJ5LmgsIGluY2x1ZGUvcHJzaHQuaCwgaW5jbHVkZS93aW5lL29ial9iYXNlLmgsIGluY2x1ZGUvd2lubmxzLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJRml4ZWQgdGhlIGNhc2Ugb2YgIldpbmVsaWIiLgoKCSogZG9jdW1lbnRhdGlvbi93aW5lbWFrZXIubWFuOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCB0aGUgV2luZWxpYiBjYXNlLgoJVGhlIGxpbmtpbmcgYXNwZWN0cyBoYXZlIGJlZW4gc29sdmVkIGJ5IHRoZSBsYXN0IHdpbmVidWlsZCB1cGRhdGUgLT4KCXJlbW92ZWQgZnJvbSB0aGUgdG9kbyBsaXN0LgoJVGhlIGNvbmZpZ3VyZSBzY3JpcHQgaGFzIGJlZW4gdXBkYXRlZCAtPiByZW1vdmVkIGZyb20gdGhlIHRvZG8gbGlzdC4KCgkqIHRvb2xzL3dpbmVtYWtlcjoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglJZiB0aGVyZSBpcyBhIHNpbmdsZSB0YXJnZXQsIGl0IHNob3VsZCBhbHNvIGdldCB0aGUgJ3Byb2plY3Rfc2V0dGluZ3MKCXNvdXJjZXMnLgoJSWYgYSBzdWJkaXJlY3RvcnkgaXMgY2FsbGVkICdpbmNsdWRlJyB0aGVuIGFkZCBpdCB0byB0aGUgaW5jbHVkZSBwYXRoLgoKCSogd2luZG93cy93aW5wcm9jLmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkaW1pQGNzLnRvcm9udG8uZWR1PgoJSW5jbHVkZSBjb25maWcuaC4KCgkqIGluY2x1ZGUvd2ludXNlci5oOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIHNldmVyYWwgY2xpcGJvYXJkIGZvcm1hdHMuCgoJKiBNYWtlLnJ1bGVzLmluOgoJRGVubmlzIEJq9nJrbHVuZCA8ZGJAemlnby5kaHMub3JnPgoJQ29tcGlsZSBmaXggZm9yIGJ1aWxkaW5nIHdpbmUgb3V0c2lkZSB0aGUgc291cmNlIHRyZWUuCgoJKiBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJSW50ZXJuZXRDbG9zZUhhbmRsZSBkaWRuJ3QgcmV0dXJuIFRSVUUgaW4gYWxsIGFwcHJvcHJpYXRlIGNhc2VzLgoKCSogd2luMzIvZGV2aWNlLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIGEgLS13aW52ZXIgbnQ0MCBoaW50IHRvIFZ4RCBlcnJvciBtZXNzYWdlLgoKCSogZGxscy9pbW0zMi9pbW0uYywgZGxscy9pbW0zMi9pbW0zMi5zcGVjOgoJSGlkZW5vcmkgVGFrZXNoaW1hPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJQWRkZWQgc29tZSBzdHVicy4KCgkqIHdpbmRvd3MvZGVmd25kLmM6CglMb3VpcyBQaGlsaXBwZSBHYWdub24gPGxvdWlzcGhpbGlwcGVAbWFjYWRhbWlhbi5jb20+CgktIFRha2UgdGhlIG1vdXNlIGNhcHR1cmUgb24gYSBXTV9OQ1JCVVRUT05ET1dOIG9uIHRoZSBjYXB0aW9uIGJhciwKCSAgcmVsZWFzZSBpdCBvbiBhIFdNX1JCVVRUT05VUAoJLSBEb24ndCBzZW5kIFdNX0NPTlRFWFRNRU5VIG9uIGEgV01fTkNSQlVUVE9OVVAKCS0gVXNlIHBhcmVudC1yZWxhdGl2ZSBjb29yZGluYXRlcyB3aGVuIGNhbGxpbmcgTkNfSGFuZGxlTkNIaXRUZXN0CgoyMDAwLTEyLTAxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogb2JqZWN0cy9lbmhtZXRhZmlsZS5jLCBvYmplY3RzL2ZvbnQuYywgb2JqZWN0cy9tZXRhZmlsZS5jLCBvYmplY3RzL3BhbGV0dGUuYywgb2JqZWN0cy90ZXh0LmMsIG9sZS9vbGUybmxzLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHdpbmRvd3MvY2xhc3MuYywgd2luZG93cy9jdXJzb3JpY29uLmMsIHdpbmRvd3MvZGNlLmMsIHdpbmRvd3MvaG9vay5jLCB3aW5kb3dzL2tleWJvYXJkLmMsIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3dpbnByb2MuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvaW5pdC5jLCBsb2FkZXIvdGFzay5jLCBtZW1vcnkvdmlydHVhbC5jLCBtaXNjL3N5c3RlbS5jLCBtc2Rvcy9pbnQxMC5jLCBvYmplY3RzL2JydXNoLmMsIG9iamVjdHMvZGMuYywgZGxscy93aW5hc3BpL3dpbmFzcGkzMi5jLCBkbGxzL3dpbm1tL21tc3lzdGVtLmMsIGRsbHMvd2luc29jay9zb2NrZXQuYywgZGxscy93aW5zcG9vbC9pbmZvLmMsIGZpbGVzL2RyaXZlLmMsIGdyYXBoaWNzL2Rpc3BkaWIuYywgZ3JhcGhpY3MvZW5obWV0YWZpbGVkcnYvaW5pdC5jLCBkbGxzL21zYWNtL2Zvcm1hdC5jLCBkbGxzL250ZGxsL3JlZy5jLCBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGUzMi9vbGUyLmMsIGRsbHMvb2xlMzIvb2xlMm5scy5jLCBkbGxzL29sZTMyL29sZTJzdHVicy5jLCBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYywgZGxscy9ycGNydDQvcnBjcnQ0X21haW4uYywgZGxscy9zaGVsbDMyL3NoZWxsLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZGxscy9zaGVsbDMyL3NoZWxsb2xlLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmMsIGRsbHMvc2hlbGwzMi9zaGxtZW51LmMsIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsIGRsbHMvc2hsd2FwaS9yZWcuYywgZGxscy91c2VyL2V4dGljb24uYywgZGxscy91c2VyL2xzdHIuYywgY29udHJvbHMvc2Nyb2xsLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnLmMsIGRsbHMvY29tbWRsZy9wcmludGRsZy5jLCBkbGxzL2tlcm5lbC9jb21tLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUFkZGVkL21vZGlmaWVkIGRvY3VtZW50YXRpb24gZm9yIGZ1bmN0aW9uIGFyZ3VtZW50cy4KCgkqIGRsbHMva2VybmVsL2tlcm5lbF9tYWluLmMsIGRsbHMva2VybmVsL3RodW5rLmMsIGRsbHMvbXN2aWRlby9tc3ZpZGVvX21haW4uYywgZGxscy9zZXR1cGFwaS9zZXR1cHhfbWFpbi5jLCBsb2FkZXIvbmUvbW9kdWxlLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIFdpbjE2IGRvY3VtZW50YXRpb24gbm90IGZpeGVkIGJlY2F1c2Ugb2YgYSBidWcgaW4gd2luYXBpX2NoZWNrLgoKCSogZGxscy9jcnRkbGwvY3J0ZGxsLnNwZWMsIGRsbHMvY3J0ZGxsL2NydGRsbF9tYWluLmMsIGRsbHMvY3J0ZGxsL2ZpbGUuYywgZGxscy9pY21wL2ljbXBfbWFpbi5jLCBkbGxzL2tlcm5lbC9rZXJuZWwuc3BlYywgZGxscy93aW5pbmV0L2Z0cC5jLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBsb2FkZXIvZG9zL2Rvc21vZC5jLCBtaXNjL3JlZ2lzdHJ5LmMsIHNlcnZlci9jb250ZXh0X3NwYXJjLmMsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIGlzc3VlcyBmb3VuZCBieSB3aW5hcGlfY2hlY2suCgoJKiB0b29scy93aW5hcGlfY2hlY2svd2luMzIvZ2RpMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIva2VybmVsMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvbnRkbGwuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvdXNlcjMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjE2L2NvbXBvYmouYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2NoZWNrLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX29wdGlvbnMucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfcGFyc2VyLnBtOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIEZpeGVkIGEgYnVnIGNvbmNlcm5pbmcgV2luMTYgZG9jdW1lbnRhdGlvbi4KCS0gRml4ZWQgc29tZSBidWdzIGNvbmNlcm5pbmcgYXJndW1lbnQgZG9jdW1lbnRhdGlvbgoJLSBNaW5vciBBUEkgZmlsZXMgdXBkYXRlCgoJKiBzY2hlZHVsZXIvcHJvY2Vzcy5jLCB0b29scy9jdmR1bXAvY3ZkdW1wLmgsIHRvb2xzL2ZudDJiZGYuYywgdG9vbHMvd2luZWJ1aWxkL3NwZWMxNi5jLCB3aW5kb3dzL2RjZS5jLCB3aW5kb3dzL2RyaXZlci5jLCB3aW5kb3dzL2lucHV0LmMsIHdpbmRvd3MvcXVldWUuYywgd2luZG93cy9zcHkuYywgd2luZG93cy91c2VyLmMsIHdpbmRvd3Mvd2lucG9zLmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L2ZvbnQuYywgaWYxNjMyL3RodW5rLmMsIGxvYWRlci9kb3MvbW9kdWxlLmMsIGxvYWRlci9lbGYuYywgbG9hZGVyL2VsZmRsbC5jLCBsb2FkZXIvbW9kdWxlLmMsIGxvYWRlci9uZS9yZXNvdXJjZS5jLCBsb2FkZXIvcGVfaW1hZ2UuYywgbG9hZGVyL3BlX3Jlc291cmNlLmMsIGxvYWRlci9yZXNvdXJjZS5jLCBsb2FkZXIvdGFzay5jLCBtaXNjL3ZlcnNpb24uYywgbXNkb3MvZHBtaS5jLCBtc2Rvcy92eGQuYywgcmVsYXkzMi9idWlsdGluMzIuYywgcmVsYXkzMi9zbm9vcC5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmMsIGRsbHMvY29tbWRsZy9maW5kZGxnLmMsIGRsbHMvY29tbWRsZy9mb250ZGxnLmMsIGRsbHMvY29tbWRsZy9wcmludGRsZy5jLCBkbGxzL2NydGRsbC90aW1lLmMsIGRsbHMvb2xlMzIvaWZzLmMsIGRsbHMvb2xlMzIvb2xlMm5scy5jLCBkbGxzL29sZTMyL3N0b3JhZ2UuYywgZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jLCBkbGxzL3VzZXIvZXh0aWNvbi5jLCBkbGxzL3VzZXIvbW91c2UuYywgZGxscy92ZXJzaW9uL3Jlc291cmNlLmMsIGRsbHMvd2lubW0vbG9sdmxkcnYuYywgZGxscy93aW5tbS9tbXN5c3RlbS5jLCBkZWJ1Z2dlci9tc2MuYywgZGxscy9jb21jdGwzMi9hbmltYXRlLmMsIGRsbHMvY29tY3RsMzIvcmViYXIuYywgZGxscy9jb21tZGxnL2NvbG9yZGxnLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnLmM6CglSZW1vdmVkIHNvbWUgdW5uZWNlc3NhcnkgaW5jbHVkZXMuCgoJKiBpbmNsdWRlL21vZHVsZS5oLCBpbmNsdWRlL25lZXhlLmgsIGluY2x1ZGUvd2luZS93aW5iYXNlMTYuaDoKCU1vdmVkIHVzZWZ1bCBORSBmb3JtYXQgZGVmaW5pdGlvbnMgdG8gd2luYmFzZTE2LmguCgoJKiBpbmNsdWRlL3dpbm50LmgsIHRvb2xzL3dpbmVidWlsZC9pbXBvcnQuYywgdG9vbHMvd2luZWJ1aWxkL3JlbGF5LmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYzoKCURpbWl0cmllIE8uIFBhdW4gPGRpbWlAY3MudG9yb250by5lZHU+CglNb2RpZmllZCB3aW5lYnVpbGQgdG8gdXNlIHRoZSBfX0FTTV9GVU5DIG1hY3JvIGZvciBncmVhdGVyIHBvcnRhYmlsaXR5LgoKCSogZGxscy9rZXJuZWwva2VybmVsLnNwZWMsIGRsbHMva2VybmVsL2tlcm5lbF9tYWluLmMsIGRsbHMva2VybmVsL3V0dGh1bmsuYywgZGxscy9rZXJuZWwvd3Byb2NzLnNwZWMsIGxvYWRlci9uZS9tb2R1bGUuYywgbG9hZGVyL25lL3NlZ21lbnQuYywgbXNkb3MvaW50MmYuYywgbXNkb3MvaW50ZXJydXB0cy5jOgoJTW92ZWQgdGhlIGZldyByZW1haW5pbmcgZnVuY3Rpb25zIGluIHdwcm9jcy5kbGwgdG8ga2VybmVsLmRsbC4KCU5vIGxvbmdlciBsb2FkIHdwcm9jcy5kbGwgdW5jb25kaXRpb25hbGx5LgoJUmVzdG9yZWQgZGVmYXVsdCBpbnRlcnJ1cHQgaGFuZGxlciBiZWhhdmlvciAocmVwb3J0ZWQgYnkgQW5kcmVhcyBNb2hyKS4KCgkqIGRsbHMvdXNlci91c2VyMzIuc3BlYywgZGxscy93aW5zb2NrL3NvY2tldC5jLCBkbGxzL3dpbnNvY2svd2luc29jay5zcGVjLCBkbGxzL3dzb2NrMzIvTWFrZWZpbGUuaW4sIGRsbHMvd3NvY2szMi9zb2NrZXQuYywgZGxscy93c29jazMyL3dzb2NrMzIuc3BlYywgZmlsZXMvZG9zX2ZzLmMsIGluY2x1ZGUvd2luYmFzZS5oLCBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW4sIGRsbHMvc2hlbGwzMi9zaGVsbC5jLCBkbGxzL3NoZWxsMzIvc2hlbGwuc3BlYywgZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmMsIGRsbHMvc2hlbGwzMi9zaGVsbHJlZy5jOgoJRmluaXNoZWQgc2VwYXJhdGlvbiBvZiBzaGVsbDMyIGFuZCB3c29jazMyLgoKCSogbGlicmFyeS9wb3J0LmMsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBpbmNsdWRlL3dpbmUvcG9ydC5oOgoJRGltaXRyaWUgTy4gUGF1biA8ZGltaUBjcy50b3JvbnRvLmVkdT4KCVN1cHBseSBkdW1teSBnZXRybGltaXQgaWYgYWJzZW50LgoKCSogZGxscy9rZXJuZWwva2VybmVsLnNwZWM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIHNlZ3N0ciB0byBzdHIgcHJvdG8uCgoJKiBkZWJ1Z2dlci9kZWJ1Z2dlci5oLCBkZWJ1Z2dlci90eXBlcy5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglDbGVhbmVkIHVwIGludGVybmFsIHR5cGVzIGRlZmluaXRpb24uCgoJKiBkZWJ1Z2dlci9zdGFicy5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglJbXByb3ZlZCBzdGFicyBsb2FkaW5nIChub3cgdXNpbmcgcmVjdXJzaXZlIHBhcnNpbmcsIHJlcXVpcmVkIGJ5IHN0YWJzCglnZW5lcmF0ZWQgYnkgbGF0ZXN0IGdjYyB2ZXJzaW9ucykuCgoJKiBkZWJ1Z2dlci9leHByLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVdvcmsgYXJvdW5kIGZvciBkZXJlZiBpc3N1ZXMgKGxlYXN0IGltcGFjdCBzb2x1dGlvbiB0YWtlbiwgZXZlbiBpZiBpc3N1ZXMgcmVtYWluKS4KCgkqIGRsbHMva2VybmVsL25scy9jaHQubmxzLCBkbGxzL2tlcm5lbC9ubHMvY3plLm5scywgZGxscy9rZXJuZWwvbmxzL2Rhbi5ubHMsIGRsbHMva2VybmVsL25scy9maW4ubmxzLCBkbGxzL2tlcm5lbC9ubHMvdHJrLm5scywgZGxscy9rZXJuZWwvbmxzL3poaS5ubHM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQSBudW1iZXIgb2YgYWRkaXRpb25zIHRvIHRoZSBubHMgZmlsZXMuIEFsc28gb25lIGNvcnJlY3Rpb24sIHdlIGhhZAoJODk1IGZvciB0aGUgQ3plY2ggZGVmYXVsdCBjb2RlcGFnZSBidXQgYWNjb3JkaW5nIHRvIG1pY3Jvc29mdCBpdAoJc2hvdWxkIGJlIDg1Mi4KCgkqIHRvb2xzL3dpbmVsYXVuY2hlci5pbjoKCUplcmVteSBXaGl0ZSA8andoaXRlQGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2Ugd2luZWxhdW5jaGVyIHdvcmsgYmV0dGVyIGZvciBzb3VyY2UgdHJlZSBidWlsZHMuCglNYWtlIHdpbmVsYXVuY2hlciBkZXRlY3QgdGhlIGxhY2sgb2YgYSB+Ly53aW5lcmMgZmlsZSBhbmQgcHJvbXB0IHRoZQoJdXNlciBhYm91dCBpdC4KCVBhc3MgY29tbWFuZCBsaW5lIHBhcmFtZXRlcnMgYSBiaXQgbW9yZSBncmFjaW91c2x5OyBpbXByb3ZlcwoJaW50ZXJhY3Rpb24gd2l0aCBnbWMgYW5kIGtmbS4KCgkqIHdpbmRvd3MveDExZHJ2L3duZC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCB0aGUgS0RFIDIgYmV0YSBhbmQgZmluYWwgbWV0aG9kIG9mIHNwZWNpZnlpbmcgc3lzdHJheSB3aW5kb3dzLgoKMjAwMC0xMS0zMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbnRyb2xzL2xpc3Rib3guYzoKCUxvdWlzIFBoaWxpcHBlIEdhZ25vbiA8bG91aXNwaGlsaXBwZUBtYWNhZGFtaWFuLmNvbT4KCURvbid0IHVwZGF0ZSBzY3JvbGxiYXJzIHdoZW4gcHJvY2Vzc2luZyBXTV9ERVNUUk9ZLgoKCSogd2luZG93cy93aW5wcm9jLmM6CglDaGVjayBmb3IgTlVMTCBoYW5kbGUgYmVmb3JlIGNhbGxpbmcgSGVhcFZhbGlkYXRlLgoKCSogZG9jdW1lbnRhdGlvbi93aW5lbWFrZXIubWFuOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUJyaW5nIHRoZSBtYW4gcGFnZSBpbiBsaW5lIHdpdGggdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHdpbmVtYWtlci4KCgkqIHRvb2xzL3dpbmVtYWtlcjoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CgktIEluIGludGVyYWN0aXZlIG1vZGUsIGRvbid0IGlnbm9yZSBpbnZhbGlkIG9wdGlvbnMsIGFzayB0aGUgdXNlciBhZ2FpbgoJLSBVcHBlcmNhc2UgZXh0ZW5zaW9ucyBhcmUgbm90IHN1cHBvcnRlZCBhZnRlciBhbGwgKGhpbnQ6ICQoU1JDOi5jPS5vKSkKCS0gUGFzcyB0aGUgZ2xvYmFsIGRlZmluZXMgYW5kIGluY2x1ZGUgcGF0aCB0byBXUkMKCS0gQmFzZSB0aGUgY2xlYW51cCBvbiB0aGUgT0JKUyB2YXJpYWJsZSBzbyB0aGF0IGl0IHdvcmtzIGV2ZW4gaWYgdGhlCgkgIHNvdXJjZXMgYXJlIGluIGEgc3ViZGlyZWN0b3J5CgoJKiB0b29scy93aW5lbWFrZXI6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJLSBGaXggdGhlIGhhbmRsaW5nIG9mIHJlbGF0aXZlIGluY2x1ZGUvbGlicmFyeSBwYXRocwoJLSBJbiBpbnRlcmFjdGl2ZSBtb2RlLCBwcmludCAiLi8iIGZvciB0aGUgdG9wIGxldmVsIGRpcmVjdG9yeSByYXRoZXIKCSAgdGhhbiBhbiBlbXB0eSBzdHJpbmcKCS0gV2UgZG9uJ3QgbmVlZCB0byBmb3JjZSBhIHNwYWNlIGJlZm9yZSBhc3NpZ25tZW50cwoJLSBBbGlnbiBUT1BTUkNESVIgJiBjbyBsaWtlIGFsbCB0aGUgb3RoZXIgYXNzaWduZW1lbnRzCgktIENvbXBpbGUgRGxscyBmaXJzdCAoZGVwZW5kZW5jaWVzIHdvdWxkIGRvIGl0IG1vcmUgb3IgbGVzcyBhbnl3YXkpCgktIFdvcmRpbmcgY2hhbmdlIGluIHRoZSB1c2FnZQoKCSogZGxscy9zaGVsbDMyL01ha2VmaWxlLmluLCBkbGxzL3VzZXIvTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vbWNpLmMsIGRsbHMvd2lubW0vd2lubW0uc3BlYywgbWlzYy9yZWdpc3RyeS5jLCBkZWJ1Z2dlci9NYWtlZmlsZS5pbiwgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9hZHZhcGkzMi9NYWtlZmlsZS5pbiwgZGxscy9hZHZhcGkzMi9hZHZhcGkzMi5zcGVjLCBkbGxzL2FkdmFwaTMyL3JlZ2lzdHJ5LmMsIGRsbHMvZ2RpL01ha2VmaWxlLmluOgoJRmluaXNoZWQgc2VwYXJhdGlvbiBvZiBhZHZhcGkzMi4KCgkqIGRsbHMvb2xlMzIvTWFrZWZpbGUuaW4sIGRsbHMvb2xlMzIvaWZzLmMsIGRsbHMvZGRyYXcvTWFrZWZpbGUuaW4sIGRsbHMvZGRyYXcvZGRyYXcuc3BlYzoKCUZpbmlzaGVkIHNlcGFyYXRpb24gb2Ygb2xlMzIuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglJbXBsZW1lbnQgYmV0dGVyIHZlcnNpb24gb2YgRFBBX01lcmdlLgoKCSogZGxscy93aW5pbmV0L2Z0cC5jOgoJR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglBZGQgbWlzc2luZyAjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPiB0byBnZXQgc3RydWN0IGluX2FkZHIgb24gYWxsIHBsYXRmb3Jtcy4KCgkqIG1lbW9yeS9oZWFwLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVkIGNyYXNoIGluIFVuTWFwTFMgZm9yIHBvaW50ZXJzIG5vdCBiZWxvbmdpbmcgdG8gdGhlIHNlZ3B0ciBoZWFwLgoKCSogZGxscy93aW5tbS9tY2l3YXZlLy5jdnNpZ25vcmUsIGRsbHMvd2lubW0vbWlkaW1hcC8uY3ZzaWdub3JlLCBkbGxzL3dpbm1tL3dhdmVtYXAvLmN2c2lnbm9yZSwgZGxscy93aW5tbS93aW5lb3NzLy5jdnNpZ25vcmUsIGRsbHMvd2luc29jay8uY3ZzaWdub3JlLCBkbGxzL3dpbnNwb29sLy5jdnNpZ25vcmUsIGRsbHMvd293MzIvLmN2c2lnbm9yZSwgZGxscy93c29jazMyLy5jdnNpZ25vcmUsIGRsbHMveDExZHJ2Ly5jdnNpZ25vcmUsIGRsbHMvdXNlci8uY3ZzaWdub3JlLCBkbGxzL3ZlcnNpb24vLmN2c2lnbm9yZSwgZGxscy93aW4zMnMvLmN2c2lnbm9yZSwgZGxscy93aW5hc3BpLy5jdnNpZ25vcmUsIGRsbHMvd2luZXBzLy5jdnNpZ25vcmUsIGRsbHMvd2luaW5ldC8uY3ZzaWdub3JlLCBkbGxzL3dpbm1tLy5jdnNpZ25vcmUsIGRsbHMvd2lubW0vam95c3RpY2svLmN2c2lnbm9yZSwgZGxscy93aW5tbS9tY2lhbmltLy5jdnNpZ25vcmUsIGRsbHMvd2lubW0vbWNpYXZpLy5jdnNpZ25vcmUsIGRsbHMvd2lubW0vbWNpY2RhLy5jdnNpZ25vcmUsIGRsbHMvd2lubW0vbWNpc2VxLy5jdnNpZ25vcmUsIGRsbHMvb3BlbmdsMzIvLmN2c2lnbm9yZSwgZGxscy9wc2FwaS8uY3ZzaWdub3JlLCBkbGxzL3Jhc2FwaTMyLy5jdnNpZ25vcmUsIGRsbHMvcmljaGVkaXQvLmN2c2lnbm9yZSwgZGxscy9ycGNydDQvLmN2c2lnbm9yZSwgZGxscy9zZXJpYWx1aS8uY3ZzaWdub3JlLCBkbGxzL3NldHVwYXBpLy5jdnNpZ25vcmUsIGRsbHMvc2hlbGwzMi8uY3ZzaWdub3JlLCBkbGxzL3NoZm9sZGVyLy5jdnNpZ25vcmUsIGRsbHMvc2hsd2FwaS8uY3ZzaWdub3JlLCBkbGxzL3RhcGkzMi8uY3ZzaWdub3JlLCBkbGxzL3R0eWRydi8uY3ZzaWdub3JlLCBkbGxzL3VybG1vbi8uY3ZzaWdub3JlLCBkbGxzL21wci8uY3ZzaWdub3JlLCBkbGxzL21zYWNtLy5jdnNpZ25vcmUsIGRsbHMvbXNuZXQzMi8uY3ZzaWdub3JlLCBkbGxzL21zdmlkZW8vLmN2c2lnbm9yZSwgZGxscy9udGRsbC8uY3ZzaWdub3JlLCBkbGxzL29kYmMzMi8uY3ZzaWdub3JlLCBkbGxzL29sZTMyLy5jdnNpZ25vcmUsIGRsbHMvb2xlYXV0MzIvLmN2c2lnbm9yZSwgZGxscy9vbGVjbGkvLmN2c2lnbm9yZSwgZGxscy9vbGVkbGcvLmN2c2lnbm9yZSwgZGxscy9vbGVwcm8zMi8uY3ZzaWdub3JlLCBkbGxzL29sZXN2ci8uY3ZzaWdub3JlLCBkbGxzL2NydGRsbC8uY3ZzaWdub3JlLCBkbGxzL2RjaW1hbjMyLy5jdnNpZ25vcmUsIGRsbHMvZGRyYXcvLmN2c2lnbm9yZSwgZGxscy9kaW5wdXQvLmN2c2lnbm9yZSwgZGxscy9kcGxheS8uY3ZzaWdub3JlLCBkbGxzL2RwbGF5eC8uY3ZzaWdub3JlLCBkbGxzL2Rzb3VuZC8uY3ZzaWdub3JlLCBkbGxzL2dkaS8uY3ZzaWdub3JlLCBkbGxzL2ljbXAvLmN2c2lnbm9yZSwgZGxscy9pbWFnZWhscC8uY3ZzaWdub3JlLCBkbGxzL2ltbTMyLy5jdnNpZ25vcmUsIGRsbHMva2VybmVsLy5jdnNpZ25vcmUsIGRsbHMvbHpleHBhbmQvLmN2c2lnbm9yZSwgZGxscy9hZHZhcGkzMi8uY3ZzaWdub3JlLCBkbGxzL2F2aWZpbDMyLy5jdnNpZ25vcmUsIGRsbHMvY29tY3RsMzIvLmN2c2lnbm9yZSwgZGxscy9jb21tZGxnLy5jdnNpZ25vcmU6CglEYXZpZCBFbGxpb3R0IDxkZmVAaW5maW5pdGUtaW50ZXJuZXQubmV0PgoJUmVtb3ZlIGxpYlhYWFguc28uMS4wIGxpbmVzIGZyb20gLmN2c2lnbm9yZSBmaWxlcy4KCgkqIGRsbHMvY29tY3RsMzIvTWFrZWZpbGUuaW4sIGRsbHMvY29tY3RsMzIvY29tY3RsMzIuc3BlYywgZGxscy9jb21tZGxnL01ha2VmaWxlLmluLCBkbGxzL2NvbW1kbGcvY29sb3JkbGcuYywgZGxscy9jb21tZGxnL2NvbWRsZzMyLnNwZWMsIGRsbHMvY29tbWRsZy9maWxlZGxnLmMsIGRsbHMvY29tbWRsZy9mb250ZGxnLmM6CglGaW5pc2hlZCBzZXBhcmF0aW9uIG9mIGNvbWNsdDMyIGFuZCBjb21kbGczMi4KCgkqIHByb2dyYW1zL3Byb2dtYW4vTWFrZWZpbGUuaW4sIHByb2dyYW1zL3Byb2dtYW4vZ3JwZmlsZS5jLCBwcm9ncmFtcy9wcm9nbWFuL21haW4uYzoKCUZpeGVkIHByb2dtYW4gaW50ZXJuYWwgZGVwZW5kZW5jaWVzIGFuZCBidWlsZCBpdCBsaWtlIHRoZSBvdGhlcgoJcHJvZ3JhbXMuCgoJKiBkbGxzL2dkaS9nZGkzMi5zcGVjLCBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBkbGxzL3VzZXIvdXNlcjMyLnNwZWM6CglFeHBvcnQgYSBmZXcgMTYtYml0IGZ1bmN0aW9ucyBuZWVkZWQgYnkgaGlnaGVyLWxldmVsIGRsbHMuCgoJKiBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGluY2x1ZGUvc2VydmVyLmgsIHNjaGVkdWxlci9jbGllbnQuYzoKCUV4cG9ydCB0aGUgd2luZSBzZXJ2ZXIgZnVuY3Rpb25zIGZyb20gbnRkbGwuCgoJKiB0b29scy93aW5hcGlfY2hlY2svd2luMTYvdG9vbGhlbHAuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvY3J0ZGxsLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMuZGF0LCB0b29scy93aW5hcGlfY2hlY2svbmF0aXZlYXBpLmRhdCwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaS5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9jaGVjaywgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9sb2NhbC5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9vcHRpb25zLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX3BhcnNlci5wbToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBBZGRlZCBuZXcgb3B0aW9uIC0tZG9jdW1lbnRhdGlvbi1hcmd1bWVudHMKCS0gTWlub3IgQVBJIGZpbGVzIHVwZGF0ZQoKCSogZGxscy9yaWNoZWRpdC9jaGFybGlzdC5jLCBkbGxzL3JpY2hlZGl0L3JlYWRlci5jLCBkbGxzL3JpY2hlZGl0L3JpY2hlZGl0LmMsIGRsbHMvcmljaGVkaXQvcnRmLmgsIGRsbHMvdXJsbW9uL3Vtb24uYywgZGxscy93aW5pbmV0L2Z0cC5jLCBkbGxzL3dpbmluZXQvaHR0cC5jLCBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYywgZGxscy93aW5pbmV0L3V0aWxpdHkuYywgaW5jbHVkZS9vY2lkbC5oLCBpbmNsdWRlL3JwYy5oLCBpbmNsdWRlL3Vua253bi5oLCBpbmNsdWRlL3dpbmRvd3MuaCwgbXNkb3MvaW50MTEuYywgZGxscy9vbGUzMi9jbGlwYm9hcmQuYywgZGxscy9vbGUzMi9maWxlbW9uaWtlci5jLCBkbGxzL29sZWF1dDMyL2Nvbm5wdC5jLCBkbGxzL29sZWF1dDMyL29sZTJkaXNwLmMsIGRsbHMvb2xlYXV0MzIvb2xlYXV0LmMsIGRsbHMvb2xlYXV0MzIvb2xlZm9udC5jLCBkbGxzL29sZWF1dDMyL29sZXBpY3R1cmUuYywgZGxscy9vbGVhdXQzMi9zdHVicy5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglEb24ndCBpbmNsdWRlIHdpbmRvd3MuaCBpbnRlcm5hbGx5LgoKCSogZG9jdW1lbnRhdGlvbi93aW5lLm1hbi5pbiwgbWlzYy92ZXJzaW9uLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIGFsaWFzIGNhcGFiaWxpdHkgdG8gLS13aW52ZXIuCgl3aW4yMDAwIGlzIHRoZSBvZmZpY2lhbCB2YWx1ZS4KCgkqIGRsbHMvb2xlYXV0MzIvTWFrZWZpbGUuaW4sIGdyYXBoaWNzL3dpbjE2ZHJ2L2ZvbnQuYywgaWYxNjMyL3RodW5rLmMsIGluY2x1ZGUvaGVhcC5oLCBpbmNsdWRlL3dpbmJhc2UuaCwgbWVtb3J5L2hlYXAuYywgbWVtb3J5L3NlbGVjdG9yLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIGRsbHMva2VybmVsL3V0dGh1bmsuYywgZGxscy9tc3ZpZGVvL01ha2VmaWxlLmluOgoJVXNlIHRoZSBIRUFQX1dJTkVfU0VHUFRSIGZsYWcgdG8gc3BlY2lmeSBhbGxvY2F0aW9ucyBvbiB0aGUgc2VncHRyIGhlYXAuCglBZGRlZCBhIGhhY2sgaW4gTWFwTFMgdG8gcmVjb2duaXplIHN1Y2ggYWxsb2NhdGlvbnMgYW5kIHVzZSB0aGUgaGVhcAoJc2VsZWN0b3IgaW4gdGhpcyBjYXNlLgoKCSogZGxscy93aW5hc3BpL01ha2VmaWxlLmluLCBkbGxzL3dpbmFzcGkvYXNwaS5jLCBkbGxzL3dpbmFzcGkvd2luYXNwaTE2LmM6CglSZW1vdmVkIGRlcGVuZGVuY2llcyBvbiBXaW5lIGludGVybmFsIGZ1bmN0aW9ucy4KCgkqIHdpbmRvd3Mvd2lucHJvYy5jOgoJQWx3YXlzIGluaXRpYWxpemUgbXNnMTYgYW5kIHdwYXJhbTE2IGluIFdJTlBST0NfTWFwTXNnMzJXVG8xNi4KCgkqIGRvY3VtZW50YXRpb24vd2luZS5jb25mLm1hbi5pbiwgZG9jdW1lbnRhdGlvbi93aW5lLm1hbi5pbiwgaW5jbHVkZS9sb2Fkb3JkZXIuaCwgbG9hZGVyL2xvYWRvcmRlci5jLCBsb2FkZXIvbW9kdWxlLmMsIGxvYWRlci9uZS9tb2R1bGUuYywgcmVsYXkzMi9idWlsdGluMzIuYywgd2luZS5pbmk6CglSZW1vdmVkICJlbGZkbGwiIGxvYWQgb3JkZXIgb3B0aW9uIGFuZCB1cGRhdGVkIGRvY3VtZW50YXRpb24uCgoyMDAwLTExLTI5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luMzIvZGV2aWNlLmMsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmMsIGluY2x1ZGUvY29uZmlnLmguaW4sIHNlcnZlci9jb250ZXh0X2kzODYuYywgc2VydmVyL3B0cmFjZS5jLCBzZXJ2ZXIvcmVxdWVzdC5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZGltaUBjcy50b3JvbnRvLmVkdT4KCURvIG5vdCBpbmNsdWRlIHN5cy9wdHJhY2UuaCBhbmQgc3lzL3VzZXIuaCB1bmNvbmRpdGlvbmFsbHkuCglPdGhlciBwb3J0YWJpbGl0eSBmaXhlcy4KCgkqIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmMsIGRsbHMvbXN2aWRlby9tc3ZpZGVvX21haW4uYywgaW5jbHVkZS93aW5nZGkuaCwgb2JqZWN0cy9kYy5jOgoJQnJpYW4gVGVhZ3VlIDxidGVhZ3VlQHJpY2UuZWR1PgoJQWRkIGEgc3R1YiBmb3IgdGhlIENBUFMxIGNhcGFiaWxpdHkgaW4gR2V0RGV2aWNlQ2Fwcy4KCURlZmluZSB0aGUgQ0FQUzEgYml0IGZsYWdzIGluIHdpbmdkaS5oCglNYWtlIHZhcmlvdXMgY2FsbHMgdG8gR2V0RGV2aWNlQ2FwcyBpbiBETExTIHVzZSAjZGVmaW5lZCB2YWx1ZXMuCgoJKiB0b29scy93aW5lYnVpbGQvc3BlYzE2LmMsIHdpbmRvd3Mva2V5Ym9hcmQuYywgd2luZG93cy93aW5wcm9jLmMsIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGRsbHMva2VybmVsL3RodW5rLmMsIGRsbHMva2VybmVsL3dvd3RodW5rLmMsIGRsbHMvdXNlci9tb3VzZS5jLCBpZjE2MzIvcmVsYXkuYywgaW5jbHVkZS9idWlsdGluMTYuaCwgaW5jbHVkZS93aW5lL3dpbmJhc2UxNi5oLCBsb2FkZXIvbmUvbW9kdWxlLmMsIGxvYWRlci9uZS9zZWdtZW50LmMsIG1pc2Mvc3lzdGVtLmMsIG1zZG9zL2RwbWkuYywgc2NoZWR1bGVyL3RocmVhZC5jLCB0b29scy93aW5lYnVpbGQvcmVsYXkuYzoKCVJlbmFtZWQgQ2FsbFRvMTYqIGZ1bmN0aW9ucyB0byB3aW5lX2NhbGxfdG9fMTYqIGFuZCBleHBvcnQgdGhlbSBmcm9tCglrZXJuZWwzMi5zcGVjLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGcuYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQGFzaS5mcj4KCUZpeGVkIHJldHVybmVkIGxlbmd0aCBvZiBmaWxlcy4KCgkqIGNvbmZpZ3VyZS5pbiwgZGVidWdnZXIvc3RhYnMuYywgaW5jbHVkZS9jb25maWcuaC5pbiwgY29uZmlndXJlOgoJRGltaXRyaWUgTy4gUGF1biA8ZGltaUBjcy50b3JvbnRvLmVkdT4KCURvIG5vdCB1c2UgYS5vdXQuaC4KCgkqIGRsbHMvY29tbWRsZy9mb250ZGxnLmMsIGRsbHMvbXByL01ha2VmaWxlLmluLCBkbGxzL21wci93bmV0LmMsIGRsbHMvd2lubW0vbWNpYW5pbS9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS9tY2lhbmltL21jaWFuaW0uYywgZGxscy93aW5tbS9tY2lhdmkvTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vbWNpYXZpL21jaWF2aS5jLCBkbGxzL3dpbnNwb29sL01ha2VmaWxlLmluLCBkbGxzL3dpbnNwb29sL2luZm8uYywgZGxscy93aW5zcG9vbC93aW5zcG9vbC5kcnYuc3BlYywgaW5jbHVkZS93aW5nZGkuaCwgZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYywgZGxscy9jb21tZGxnL2ZpbGVkbGcuYzoKCUNsZWFuZWQgdXAgc29tZSBtb3JlIGRlcGVuZGVuY2llcyBvbiBXaW5lIGludGVybmFsIGZ1bmN0aW9ucy4KCgkqIGZpbGVzL2ZpbGUuYywgaW5jbHVkZS9jb25maWcuaC5pbiwgaW5jbHVkZS93aW5lL3BvcnQuaCwgbGlicmFyeS9wb3J0LmMsIHNjaGVkdWxlci9jbGllbnQuYywgY29uZmlndXJlLCBjb25maWd1cmUuaW46CglBZGRlZCBpbXBsZW1lbnRhdGlvbiBvZiBsc3RhdCB0byBwb3J0LmMuCgoJKiB3aW4zMi9kZXZpY2UuYzoKCUtlZXMgU2Nob2VubWFrZXJzIDxrZWVzc0BtaWxsdHJvbmljcy5jb20+CglBZGRlZCBIQVNQIGRldmljZSBzdHViLgoKCSogb2JqZWN0cy9nZGlvYmouYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglGaXhlZCB0aGUgc2l6ZSBvZiB0aGUgbGFyZ2VfaGFuZGxlcyBhcnJheS4KCgkqIGRsbHMvY29tY3RsMzIvcmViYXIuYywgZGxscy9vbGVjbGkvb2xlY2xpMzIuc3BlYywgZGxscy90dHlkcnYvdHR5ZHJ2LnNwZWMsIGRsbHMvd2lubW0vam95c3RpY2svam95c3RpY2suZHJ2LnNwZWM6CglEaW1pdHJpZSBPLiBQYXVuIDxkaW1pQGNzLnRvcm9udG8uZWR1PgoJRml4ZWQgYSBmZXcgY29tcGlsYXRpb24gd2FybmluZ3MuCgoJKiBjb250cm9scy9jb21iby5jLCBjb250cm9scy9zdGF0aWMuYywgd2luZG93cy9kZWZ3bmQuYywgd2luZG93cy9tZGkuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJV01fU0VUVEVYVCBzaG91bGQgcmV0dXJuIFRSVUUgb24gc3VjY2Vzcy4KCgkqIG1lbW9yeS92aXJ0dWFsLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCVZpcnR1YWxRdWVyeSBzaG91bGQgcmV0dXJuIDAgZm9yIGFsbCBhZGRyZXNzZXMgPj0gMHhjMDAwMDAwMC4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglPd25lcmRhdGEgbGlzdHZpZXdzIHdlcmUgbm90IGNsZWFyaW5nIHByZXZpb3VzbHkgc2VsZWN0ZWQgaXRlbXMgd2hlbiBhCgluZXcgaXRlbSBpcyBzZXQgYXMgc2VsZWN0ZWQgdXNpbmcgU2V0SXRlbSBhbmQgdGhlIGxpc3R2aWV3IGhhcwoJTFZJU19TSU5HTEVTRUwuCgoyMDAwLTExLTI4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglXZSB3ZXJlIHJldHVybmluZyBjaGFyYWN0ZXJzIGZvciB2YXJpb3VzIENUUkwgKyBTeW1ib2wga2V5c3Ryb2tlcwoJd2hpY2ggc2hvdWxkIG5vdCByZXR1cm4gY2hhcmFjdGVycy4KCgkqIG1pc2MvY3B1LmM6CglNYXJjdXMgTWVpc3NuZXIgPE1hcmN1cy5NZWlzc25lckBjYWxkZXJhLmRlPgoJbGludXgtMi40LjAtdGVzdDEwIG5vdyBjYWxscyAnZmxhZ3MnIGFzICdmZWF0dXJlcycuCgoJKiB3aW5kb3dzL3dpbi5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZHRpbW9zaGtvdkBjb2Rld2VhdmVycy5jb20+CglTbGlnaHRseSByZWFycmFuZ2UgV0lOMTYvV0lOMzJBL1dJTjMyIHdpbmRvdyBjcmVhdGlvbi4KCgkqIGNvbnRyb2xzL2J1dHRvbi5jLCBjb250cm9scy93aWRnZXRzLmM6CglEbWl0cnkgVGltb3Noa292IDxkdGltb3Noa292QGNvZGV3ZWF2ZXJzLmNvbT4KCU1hZGUgYnV0dG9uIGNvbnRyb2wgZnVsbHkgdW5pY29kZSBhd2FyZS4KCgkqIGRsbHMvc2V0dXBhcGkvc2V0dXB4MTYuaCwgZGxscy9zZXR1cGFwaS9zZXR1cHhfbWFpbi5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CgktIGZpeCBjcmFzaCBpbiBTRVRVUFhfVHJhbnNsYXRlTERJRCgpCgktIGltcGxlbWVudCBjdXN0b20gTERJRCBsb29rdXAKCgkqIG1pc2MvY2Ryb20uYywgbWlzYy9jcHUuYywgbWlzYy92ZXJzaW9uLmMsIG9iamVjdHMvZW5obWV0YWZpbGUuYywgb2JqZWN0cy9mb250LmMsIG9sZS9vbGUybmxzLmMsIHdpbjMyL2NvbnNvbGUuYywgd2luMzIvaW5pdC5jLCB3aW5kb3dzL2NsaXBib2FyZC5jLCB3aW5kb3dzL2RlZnduZC5jLCB3aW5kb3dzL2RpYWxvZy5jLCB3aW5kb3dzL2lucHV0LmMsIHdpbmRvd3MvbXNnYm94LmMsIHdpbmRvd3Mvc3lzcGFyYW1zLmMsIHdpbmRvd3MvdXNlci5jLCB3aW5kb3dzL3dpbnByb2MuYywgZmlsZXMvZGlyZWN0b3J5LmMsIGZpbGVzL2Rvc19mcy5jLCBmaWxlcy9kcml2ZS5jLCBmaWxlcy9maWxlLmMsIGZpbGVzL3Byb2ZpbGUuYywgZ3JhcGhpY3MvZW5obWV0YWZpbGVkcnYvaW5pdC5jLCBncmFwaGljcy9tZXRhZmlsZWRydi90ZXh0LmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L2ZvbnQuYywgZ3JhcGhpY3Mvd2luMTZkcnYvdGV4dC5jLCBpZjE2MzIvYnVpbHRpbi5jLCBpbmNsdWRlL3dpbmUvd2luZXN0cmluZy5oLCBsb2FkZXIvbW9kdWxlLmMsIGxvYWRlci9uZS9jb252ZXJ0LmMsIGxvYWRlci9wZV9yZXNvdXJjZS5jLCBtZW1vcnkvZW52aXJvbi5jLCBtZW1vcnkvcmVnaXN0cnkuYywgbWVtb3J5L3N0cmluZy5jLCBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmMsIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYywgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jLCBkbGxzL3NoZWxsMzIvc2hsdmlldy5jLCBkbGxzL3NoZWxsMzIvc2h2X2l0ZW1fY21lbnUuYywgZGxscy9zaGVsbDMyL3N5c3RyYXkuYywgZGxscy9zaGx3YXBpL3BhdGguYywgZGxscy9zaGx3YXBpL3N0cmluZy5jLCBkbGxzL3R0eWRydi9ncmFwaGljcy5jLCBkbGxzL3ZlcnNpb24vaW5mby5jLCBkbGxzL3dpbm1tL2pveXN0aWNrLmMsIGRsbHMvd2lubW0vbW1zeXN0ZW0uYywgZGxscy9rZXJuZWwvZm9ybWF0X21zZy5jLCBkbGxzL2x6ZXhwYW5kL2x6ZXhwYW5kX21haW4uYywgZGxscy9tcHIvd25ldC5jLCBkbGxzL21zYWNtL2RyaXZlci5jLCBkbGxzL21zYWNtL2ZpbHRlci5jLCBkbGxzL21zYWNtL2Zvcm1hdC5jLCBkbGxzL21zYWNtL3BjbWNvbnZlcnRlci5jLCBkbGxzL21zdmlkZW8vbXN2aWRlb19tYWluLmMsIGRsbHMvbnRkbGwvcnRsc3RyLmMsIGRsbHMvbnRkbGwvc2VjLmMsIGRsbHMvb2xlMzIvY2xpcGJvYXJkLmMsIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL2ZpbGVtb25pa2VyLmMsIGRsbHMvb2xlMzIvaXRlbW1vbmlrZXIuYywgZGxscy9vbGUzMi9vbGUyLmMsIGRsbHMvb2xlMzIvc3RvcmFnZS5jLCBkbGxzL29sZTMyL3N0b3JhZ2UzMi5jLCBkbGxzL3NoZWxsMzIvcGlkbC5jLCBjb250cm9scy9tZW51LmMsIGRsbHMvYWR2YXBpMzIvYWR2YXBpLmMsIGRsbHMvYWR2YXBpMzIvcmVnaXN0cnkuYywgZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jLCBkbGxzL2FkdmFwaTMyL3NlcnZpY2UuYywgZGxscy9jb21jdGwzMi9jb21ib2V4LmMsIGRsbHMvY29tY3RsMzIvZGF0ZXRpbWUuYywgZGxscy9jb21jdGwzMi9oZWFkZXIuYywgZGxscy9jb21jdGwzMi9yZWJhci5jLCBkbGxzL2NvbWN0bDMyL3N0YXR1cy5jLCBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYywgZGxscy9jb21jdGwzMi90cmVldmlldy5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmMsIGRsbHMvY29tbWRsZy9maWxlZGxnYnJvd3Nlci5jLCBkbGxzL2NvbW1kbGcvZmlsZXRpdGxlLmMsIGRsbHMvY29tbWRsZy9maW5kZGxnMzIuYywgZGxscy9jb21tZGxnL2ZvbnRkbGcuYzoKCUdvdCByaWQgb2YgdGhlIFdpbmUgaW50ZXJuYWwgbHN0cmNweSogZnVuY3Rpb25zIGFuZCBvZiB3aW5lc3RyaW5nLmguCgoJKiBkb2N1bWVudGF0aW9uL3dpbmUubWFuLmluOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglVcGRhdGVkIG1hbiBwYWdlLgoKCSogbWVtb3J5L2hlYXAuYywgaW5jbHVkZS9oZWFwLmg6CglNYWRlIEhFQVBfc3RyZHVwKiBmdW5jdGlvbnMgaW5saW5lICh0ZW1wb3JhcnkpLgoKCSogZGxscy93aW5zcG9vbC9pbmZvLmMsIHdpbjMyL25ld2Zucy5jOgoJTW92ZWQgRW51bVBvcnRzQSB0byBkbGxzL3dpbnNwb29sLgoKMjAwMC0xMS0yNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqICovKi5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZGltaUBjcy50b3JvbnRvLmVkdT4KCVJlcXVpcmUge0RFQ0xBUkUsREVGQVVMVH1fREVCVUdfQ0hBTk5FTCBzdGF0ZW1lbnRzIHRvIGVuZCBpbiBhIDsKCgkqIHJlbGF5MzIvcmVsYXkzODYuYywgdG9vbHMvd2luZWJ1aWxkL21haW4uYywgdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jOgoJU2V0IGRlYnVnZ2luZyBvcHRpb24gYmFzZWQgb24gTk9fVFJBQ0VfTVNHUyBkZWZpbmUuIE9ubHkgb3V0cHV0IDMyLWJpdAoJcmVsYXkgc3R1YnMgaWYgZGVidWdnaW5nIGlzIG9uLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGluY2x1ZGUvYWNjb25maWcuaCwgaW5jbHVkZS9jb25maWcuaC5pbiwgaW5jbHVkZS93aW5udC5oOgoJRGltaXRyaWUgTy4gUGF1biA8ZGltaUBjcy50b3JvbnRvLmVkdT4KCVRlc3QgaWYgd2UgbmVlZCB0byBwdXQgdGhlIC50eXBlIGRpcmVjdGl2ZSBpbnNpZGUgYSAuZGVmIGRpcmVjdGl2ZS4KCgkqIGRsbHMvZGRyYXcvZHN1cmZhY2UvbWFpbi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglUcnVuY2F0ZSBkZXN0IGJsaXQgcmVjdGFuZ2xlIGRvd24gdG8gc3VyZmFjZSBzaXplLgoKCSogZGxscy93aW5tbS93aW5lb3NzL21pZGkuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJV0FSTigpIGFib3V0IG1pc3NpbmcgL2Rldi9zZXF1ZW5jZXIsIGl0J3MgdG9vIGNvbmZ1c2luZyBmb3IgbmV3Ymllcy4KCgkqIGdyYXBoaWNzL3gxMWRydi9vZW1iaXRtYXAuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJQWxzbyBtZW50aW9uIHhwbS1kZXZlbCBpbiB0aGUgZXJyb3IgbXNnLgoKCSogbWlzYy9jcHUuYzogQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglBZGQgRmxvYXRpbmdQb2ludFByb2Nlc3NvciBlbXB0eSBlbnRyeSB0byB0aGUgcmVnaXN0cnkuCgoJKiBjb250cm9scy9tZW51LmM6CglMb3VpcyBQaGlsaXBwZSBHYWdub24gPGxvdWlzcGhpbGlwcGVAbWFjYWRhbWlhbi5jb20+CglXaGVuIHByb2Nlc3NpbmcgbW91c2UgbWVzc2FnZXMgaW4gTUVOVV9UcmFja01lbnUsIHVzZSB0aGUgY29vcmRpbmF0ZXMKCWluIGxQYXJhbSBpbnN0ZWFkIG9mIHRob3NlIGluIE1TRzo6cHQuCgoJKiBsb2FkZXIvcGVfaW1hZ2UuYzoKCURpc3BsYXkgdGhlIG5hbWUgb2YgdGhlIGZ1bmN0aW9uIHdoZW4gaW1wb3J0IGZhaWxlZC4KCgkqIGRsbHMvc2hsd2FwaS9NYWtlZmlsZS5pbiwgZGxscy9zaGx3YXBpL3N0cmluZy5jLCBkbGxzL3VzZXIvbmV0d29yay5jLCBkbGxzL3dpbjMycy9NYWtlZmlsZS5pbiwgZGxscy93aW4zMnMvdzMyc2tlcm5lbC5jLCBkbGxzL3dpbjMycy93MzJza3JubC5zcGVjLCBkbGxzL3dpbjMycy93MzJzeXMuYywgd2luZG93cy9kZWZ3bmQuYywgd2luZG93cy9tZGkuYywgd2luZG93cy9tc2dib3guYywgd2luZG93cy9ub25jbGllbnQuYywgd2luZG93cy9zeXNjb2xvci5jLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmMsIGRsbHMvbXByL3duZXQuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBjb250cm9scy9kZXNrdG9wLmMsIGNvbnRyb2xzL2ljb250aXRsZS5jLCBjb250cm9scy9zdGF0aWMuYzoKCUZpeGVkIGEgZmV3IGRlcGVuZGVuY2llcyBvbiAxNi1iaXQgb3IgaW50ZXJuYWwgZnVuY3Rpb25zLiBGaXhlZCBhIGZldwoJd2FybmluZ3MuCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGRsbHMvd2lubW0vbW1pby5jOgoJRml4ZWQgU0VHUFRSX0dFVCB1c2FnZS4KCgkqIGRsbHMvdXNlci91c2VyMzIuc3BlYzoKCUFkZGVkIGVudHJ5IGZvciBQcml2YXRlRXh0cmFjdEljb25zQS4KCgkqIGxvYWRlci9uZS9zZWdtZW50LmMsIG1zZG9zL2ludDIxLmMsIG1zZG9zL3Z4ZC5jLCBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBkbGxzL2tlcm5lbC90aHVuay5jLCBkbGxzL2tlcm5lbC91dHRodW5rLmMsIGRsbHMva2VybmVsL3dvd3RodW5rLmMsIGRsbHMvbHpleHBhbmQvTWFrZWZpbGUuaW4sIGRsbHMvbHpleHBhbmQvbHpleHBhbmRfbWFpbi5jLCBkbGxzL29sZTMyL2NvbXBvYmouYywgZmlsZXMvZmlsZS5jLCBpbmNsdWRlL2ZpbGUuaCwgaW5jbHVkZS93aW5iYXNlLmg6CglJbXBsZW1lbnRlZCBEb3NGaWxlSGFuZGxlVG9XaW4zMkhhbmRsZSwgV2luMzJIYW5kbGVUb0Rvc0ZpbGVIYW5kbGUgYW5kCglEaXNwb3NlTFozMkhhbmRsZSBhbmQgdXNlIHRoZW0gdG8gcmVwbGFjZSBmaWxlLmMgaW50ZXJuYWwgZnVuY3Rpb25zLgoJUmVuYW1lZCBXT1cqIGZ1bmN0aW9ucyBpbnRvIEszMldPVyouCgoJKiBkbGxzL2tlcm5lbC90b29saGVscC5zcGVjOgoJQWRkZWQgZW50cnkgZm9yIFRlcm1pbmF0ZUFwcDE2LgoKCSogd2luZG93cy9jdXJzb3JpY29uLmMsIHdpbmRvd3MvZGlhbG9nLmMsIHdpbmRvd3MvZHJpdmVyLmMsIHdpbmRvd3Mvd2luLmMsIGRsbHMvd2lubW0vbG9sdmxkcnYuYywgZGxscy93aW5tbS9tbXN5c3RlbS5jLCBmaWxlcy9kaXJlY3RvcnkuYywgZ3JhcGhpY3Mvd2luMTZkcnYvcHJ0ZHJ2LmMsIGlmMTYzMi90aHVuay5jLCBpbmNsdWRlL3dpbmUvd2luYmFzZTE2LmgsIGluY2x1ZGUvd2luZS93aW51c2VyMTYuaCwgbG9hZGVyL21vZHVsZS5jLCBsb2FkZXIvcmVzb3VyY2UuYywgY29udHJvbHMvbWVudS5jLCBkbGxzL2NvbW1kbGcvY29sb3JkbGcuYywgZGxscy9jb21tZGxnL2ZpbGVkbGcuYywgZGxscy9jb21tZGxnL2ZpbmRkbGcuYywgZGxscy9jb21tZGxnL2ZvbnRkbGcuYywgZGxscy9rZXJuZWwva2VybmVsLnNwZWMsIGRsbHMvb2xlMzIvaWZzLmMsIGRsbHMvb2xlMzIvc3RvcmFnZS5jLCBkbGxzL3NoZWxsMzIvc2hlbGwuYywgZGxscy91c2VyL3Jlc291cmNlLmMsIGRsbHMvdXNlci91c2VyLnNwZWM6CglDaGFuZ2VkIEdldFByb2NBZGRyZXNzMTYgYW5kIDE2LWJpdCByZXNvdXJjZSBmdW5jdGlvbnMgdG8gdGFrZSBub3JtYWwKCXBvaW50ZXJzIGluc3RlYWQgb2YgU0VHUFRScy4KCVJlbW92ZWQgV0lOMTZfR2V0VGVtcERyaXZlLgoKCSogZG9jdW1lbnRhdGlvbi93aW5lLm1hbi5pbiwgbWlzYy9vcHRpb25zLmMsIG1pc2MvdmVyc2lvbi5jLCBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJLSBhZGRlZCB3aW52ZXIgc2V0dGluZ3MgbnQyaywgd2luMzAgYW5kIHdpbjIwICh5ZXMsIHNvbWUgcmFyZSBwcm9ncmFtcyBuZWVkIHRoaXMpCgkgIGFuZCAqZG9jdW1lbnQqIGl0ICh3aW45OCB3YXMgbm90IGRvY3VtZW50ZWQgcHJldmlvdXNseSkKCS0gT2FCdWlsZFZlcnNpb246IGFkZCB2YWx1ZSBmb3IgTlQ0IFNQNgoJLSBzcGVsbGluZyBmaXhlcwoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvY3J0ZGxsL2NydGRsbC5oLCBkbGxzL2NydGRsbC9jcnRkbGwuc3BlYywgZGxscy9jcnRkbGwvY3J0ZGxsX21haW4uYywgaW5jbHVkZS9jb25maWcuaC5pbiwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL2NydGRsbC5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9udGRsbC5hcGk6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJLSBjb25maWd1cmUgdGVzdHMgZm9yIGZpbml0ZSgpL2ZwY2xhc3MoKSwgZml4ZXMgQlNEIGNvbXBpbGUKCS0gd2luYXBpX2NoZWNrIHVwZGF0ZXMsIGZpeCBlcnJubyBpbiBtb3JlIG1hdGggY2FsbHMKCgkqIHdpbjMyL2V4Y2VwdC5jLCBpbmNsdWRlL3Rvb2xoZWxwLmgsIGxvYWRlci90YXNrLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudGVkIFRlcm1pbmF0ZUFwcCBuZWVkZWQgZm9yIERCYXNlIDUuMC4KCU1hZGUgRmF0YWxBcHBFeGl0MTYgaG9ub3IgdGhlIFNFTV9OT0dQRkFVTFRFUlJPUkJPWCBlcnJvcl9tb2RlIGZsYWcuCgoJKiBjb250cm9scy9lZGl0LmM6CglEbWl0cnkgVGltb3Noa292IDxkdGltb3Noa292QGNvZGV3ZWF2ZXJzLmNvbT4KCUdlbmVyYWwgY2xlYW4gdXAgb2YgdGhlIGVkaXQgY29udHJvbDogcmVtb3ZlZCB0cmFuc2ZlciBvZiB1bnVzZWQKCXZhcmlhYmxlcywgZml4ZWQgc2lnbmVkL3Vuc2lnbmVkIG1pc21hdGNoZXMuCgoJKiB0b29scy93aW5lYnVpbGQvcGFyc2VyLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJVGhlIGluaXQgZnVuY3Rpb24gY2FuIGJlIGNhbGxlZCBtYWluLgoKCSogbWVtb3J5L2dsb2JhbC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZHRpbW9zaGtvdkBjb2Rld2VhdmVycy5jb20+CglHbG9iYWxBbGxvYyBhcyBHbG9iYWxBbGxvYzE2IHNob3VsZCByb3VuZCBzaXplIHRvIDMyLgoJQ2FsbCBTZXRMYXN0RXJyb3IgaW4gR2xvYmFsTG9jay4KCjIwMDAtMTEtMjYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3dpbjMycy93aW4zMnMxNi5jLCBtZW1vcnkvc2VsZWN0b3IuYzoKCU1vdmVkIFVUU2VsZWN0b3JPZmZzZXRUb0xpbmVhciBhbmQgVVRMaW5lYXJUb1NlbGVjdG9yT2Zmc2V0IHRvCglkbGxzL3dpbjMycy4KCgkqIGRsbHMvc2V0dXBhcGkvTWFrZWZpbGUuaW4sIGRsbHMvc2V0dXBhcGkvaW5mcGFyc2UuYywgZGxscy9zZXR1cGFwaS9zZXR1cHgxNi5oOgoJUmVtb3ZlZCBkZXBlbmRlbmN5IG9uIDE2LWJpdCBmaWxlIEkvTyBmdW5jdGlvbnMuCgoJKiBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvdXNlci9NYWtlZmlsZS5pbiwgZGxscy91c2VyL3VzZXIuc3BlYywgZGxscy91c2VyL3VzZXIzMi5zcGVjLCBkbGxzL3VzZXIvd3NwcmludGYuYywgZGxscy93aW5tbS9tY2kuYywgZGxscy93aW5zcG9vbC9NYWtlZmlsZS5pbiwgZGxscy93aW5zcG9vbC93aW5zcG9vbC5kcnYuc3BlYywgaW5jbHVkZS93aW5lL3dpbnVzZXIxNi5oLCBpbmNsdWRlL3dpbnVzZXIuaCwgbWlzYy9NYWtlZmlsZS5pbiwgbWlzYy93c3ByaW50Zi5jLCBtc2Rvcy9pbnQxMS5jLCBvbGUvb2xlMm5scy5jLCBkZWJ1Z2dlci9tb2R1bGUuYywgZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jLCBkbGxzL2NydGRsbC9NYWtlZmlsZS5pbiwgZGxscy9jcnRkbGwvY3J0ZGxsLnNwZWMsIGRsbHMvY3J0ZGxsL2NydGRsbF9tYWluLmMsIGRsbHMva2VybmVsL2RlYnVnZ2VyLmM6CglNb3ZlZCB3c3ByaW50ZiBmdW5jdGlvbnMgdG8gZGxscy91c2VyLgoKCSogY29udHJvbHMvc2Nyb2xsLmM6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5AY29kZXdlYXZlcnMuY29tPgoJRG9uJ3QgZHJhdyBzY3JvbGxiYXJzIGlmIHRoZWlyIGNsaWVudCByZWN0YW5nbGUgaXMgZW1wdHkuCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUlnbm9yZSBTT0xfU09DS0VUL1NPX0RFQlVHIHNldHNvY2tvcHQoKSBjYWxscy4KCgkqIGZpbGVzL3Byb2ZpbGUuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUmVtb3ZlZCBzdHJhbmdlIGNoZWNraiBmb3IgIWZpbGVuYW1lLCBzbyB3ZSBkb24ndCBnZXQgc2VjdGlvbiBOVUxMCglhY2Nlc3NlcyBsYXRlci4KCgkqIGxvYWRlci9wZV9pbWFnZS5jOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCVJlcGxhY2VkIHVfY2hhci91X3Nob3J0L3VfbG9uZyBieSBCWVRFL1dPUkQvRFdPUkQgZm9yIGluY3JlYXNlZCBwb3J0YWJpbGl0eS4KCgkqIGRsbHMvY29tY3RsMzIvdXBkb3duLmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkaW1pQGNzLnRvcm9udG8uZWR1PgoJQ29ycmVjdGVkIGRlZmF1bHQgdmFsdWVzIHdpdGggaGVscCBmcm9tIFVscmljaCBDemVrYWxsYS4KCgkqIGRsbHMvY3J0ZGxsL2NydGRsbC5zcGVjLCBkbGxzL2tlcm5lbC9rZXJuZWwuc3BlYywgZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZGxscy9udGRsbC9udGRsbC5zcGVjLCB0b29scy93aW5lYnVpbGQvUkVBRE1FLCB0b29scy93aW5lYnVpbGQvYnVpbGQuaCwgdG9vbHMvd2luZWJ1aWxkL3BhcnNlci5jLCB0b29scy93aW5lYnVpbGQvc3BlYzE2LmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYzoKCUFkZGVkIGVudHJ5IHBvaW50IGZsYWdzIC1ub2ltcG9ydCwgLW5vcmVsYXksIC1yZXQ2NCBhbmQgLWkzODYuCglSZXBsYWNlZCAnYnl0ZScsICd3b3JkJyBhbmQgJ2xvbmcnIGJ5ICd2YXJpYWJsZScgYW5kIG1hZGUgaXQgd29yayBmb3IKCVdpbjMyIHRvby4KCU1hZGUgcGFyc2VyIG1vcmUgcm9idXN0IGFnYWluc3QgdHJ1bmNhdGVkIGZpbGVzLgoKCSogaW5jbHVkZS9jZHJvbS5oLCBpbmNsdWRlL2VsZmRsbC5oLCB3aW5kb3dzL3gxMWRydi93aW5lY2xpcHNydi5jLCBkbGxzL2RkcmF3L3gxMV9wcml2YXRlLmgsIGRsbHMvd2lubW0vd2luZW9zcy9vc3MuaDoKCURpbWl0cmllIE8uIFBhdW4gPGRpbWlAY3MudG9yb250by5lZHU+CglNYWtlIHN1cmUgYWxsIGZpbGVzIHVzaW5nIGNvbmZpZy5oIGNvbnN0YW50cyBhY3R1YWxseSAjaW5jbHVkZSAiY29uZmlnLmgiCgoJKiBkbGxzL29sZTMyL29sZTMyX21haW4uYywgZGxscy9kY2ltYW4zMi9kY2ltYW5fbWFpbi5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIGlzc3VlcyBmb3VuZCBieSB3aW5hcGlfY2hlY2suCgoJKiB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5kYXQsIHRvb2xzL3dpbmFwaV9jaGVjay9uYXRpdmVhcGkuZGF0LCB0b29scy93aW5hcGlfY2hlY2svd2luMTYvYXZpZmlsZS5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9kY2ltYW4zMi5hcGk6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCU1pbm9yIEFQSSBmaWxlcyB1cGRhdGUuCgoJKiB0b29scy93aW5lYnVpbGQvaW1wb3J0LmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVRoZSBfX3dpbmVfY2FsbF9mcm9tXzE2XyBjYWxscyBpbiB0aGUgaW1wb3J0IHRhYmxlIHNob3VsZCB1c2UgYSB2YWxpZAoJc2VnbWVudCBmb3IgZGVyZWZlcmVuY2luZyB0aGVpciBwb2ludGVyICh1c2luZyBDUykuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy9pY21wL2ljbXBfbWFpbi5jLCBkbGxzL3dpbmluZXQvdXRpbGl0eS5jLCBkbGxzL3dpbnNvY2svYXN5bmMuYywgZGxscy93aW5zb2NrL3NvY2tldC5jLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBpbmNsdWRlL3dpbnNvY2suaDoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglBZGRlZCBjaGVja2luZyBmb3IgbmV0ZGIuaC4KCURvbid0IGluY2x1ZGUgYXJwYS9pbmV0LmggYW5kIHN5cy9zb2NrZXQuaCBpZiBzeXN0ZW0gZG9lc24ndCBoYXZlIHRoZXNlIGhlYWRlcnMuCgoJKiBpbmNsdWRlL3gxMWRydi5oLCBncmFwaGljcy94MTFkcnYvZGliLmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkaW1pQGNzLnRvcm9udG8uZWR1PgoJRG8gbm90IGNvbXBpbGUgY29kZSB0aGF0IG1ha2VzIHVzZSBvZiB0aGUgWCBTaG0gZXh0ZW5zaW9uLgoKMjAwMC0xMS0yNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL2RlYnVnZ2VyLmMsIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmMsIGluY2x1ZGUvd2lubnQuaDoKCU1vdmVkIEdFVF9JUCBvdXQgb2Ygd2lubnQuaC4KCgkqIHByb2dyYW1zL3Byb2dtYW4vQ2hhbmdlTG9nLCBwcm9ncmFtcy9wcm9nbWFuL1J1LnJjLCBwcm9ncmFtcy9wcm9nbWFuL2RpYWxvZy5jLCBwcm9ncmFtcy9wcm9nbWFuL3JzcmMucmM6CglWYXNpbHkgSS4gVm9sY2hlbmtvIDxGb29kVGVjaG5vbG9naXN0QHBpc2VtLm5ldD4KCUFkZGVkIFJ1c3NpYW4gbGFuZ3VhZ2Ugc3VwcG9ydC4KCUZpeGVkIGJ1ZyBvZiBmaWxlIGJyb3dzaW5nIG9wZXJhdGlvbiAoZmlsZXBhdGggbGVuZ3RoIGNvcnJlY3RlZCkuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgaW5jbHVkZS9jb25maWcuaC5pbiwgdG9vbHMvYmluMnJlcy5jLCB0b29scy93aW5lYnVpbGQvcmVzMTYuYywgdG9vbHMvd2luZWJ1aWxkL3JlczMyLmM6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJQWRkZWQgY2hlY2tpbmcgZm9yIG1tYXAuCgoJKiB0b29scy93cmMvdXRpbHMuYzoKCUFkZGVkIGEgZmV3IG1pc3NpbmcgbGFuZ3VhZ2VzLgoKCSogZGxscy9rZXJuZWwvbG9jYWxlX3JjLnJjLCBkbGxzL2tlcm5lbC9ubHMvaGtnLm5scywgZGxscy9rZXJuZWwvbmxzL3ByYy5ubHMsIGRsbHMva2VybmVsL25scy9zZ3AubmxzOgoJTmVyaWp1cyBCYWxpdW5hcyA8bmVyaWp1c0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CglBZGRlZCBtaXNzaW5nIGxvY2FsZXMgdG8gbG9jYWxlX3JjLnJjLgoKCSogZ3JhcGhpY3MveDExZHJ2L2RpYi5jOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglNYWRlIFgxMURSVl9ESUJfR2V0SW1hZ2VCaXRzXzE2IGF3YXJlIG9mIDU2NSBESUJzLgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliLmMsIGluY2x1ZGUvd2luZS9vYmpfb2xlYXV0Lmg6CglGcmFuY29pcyBKYWNxdWVzIDxmcmFuY29pc2pAbWFjYWRhbWlhbi5jb20+CgktIHN1cHBvcnQgZm9yIGFyZ3VtZW50cyB3aXRoIHJlZmVyZW5jZWQgdHlwZXMKCS0gaW1wb3J0ZWQgdHlwZSBsaWJyYXJpZXMKCS0gZGlzcGludGVyZmFjZXMKCS0gZHVhbCBpbnRlcmZhY2VzCgktIHJlZiBjb3VudCBwcm9ibGVtcwoJLSBtZW1vcnkgbGVha3MgZml4ZWQKCgkqIGRsbHMvY3J0ZGxsL2NydGRsbF9tYWluLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCWdsaWJjMi4yIG5lZWRzIF9fVVNFX0lTT0M5OSBmb3IgRlBfTkFOIGFuZCBpc2Zpbml0ZSgpLgoKCSogd2luMzIvY29uc29sZS5jLCBpbmNsdWRlL3dpbmNvbi5oLCBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjOgoJRml4ZWQgR2V0TGFyZ2VzdENvbnNvbGVXaW5kb3dTaXplIHJldHVybiB0eXBlIGZvciBXaW5lbGliIGFwcHMuCgoJKiBkbGxzL29sZTMyL29sZTMyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWMsIGRsbHMvc2hsd2FwaS9zdHJpbmcuYywgZGxscy93aW4zMnMvdzMyc2tybmwuc3BlYzoKCUFkZGVkIGEgZmV3IGZvcndhcmRzLgoKCSogZGxscy91c2VyL21pc2MuYywgZGxscy91c2VyL3VzZXIzMi5zcGVjOgoJRml4ZWQgdHlwb3MuCgoJKiBpbmNsdWRlL2JpdG1hcC5oLCBpbmNsdWRlL3gxMWRydi5oLCBvYmplY3RzL2RpYi5jLCBkbGxzL3R0eWRydi9iaXRtYXAuYywgZGxscy90dHlkcnYvZGMuYywgZGxscy90dHlkcnYvdHR5ZHJ2LmgsIGdyYXBoaWNzL3gxMWRydi9kaWIuYywgZ3JhcGhpY3MveDExZHJ2L2luaXQuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJSW1wbGVtZW50ZWQgR2V0L1NldERJQkNvbG9yVGFibGUuCgoJKiBkbGxzL2tlcm5lbC9ubHMvbHRoLm5scywgZGxscy9rZXJuZWwvbmxzL2x2aS5ubHM6CglOZXJpanVzIEJhbGl1bmFzIDxuZXJpanVzQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCUNvbXBsZXRlZCBsdmkubmxzIGFuZCBsdGgubmxzLgoKCSogd2luZG93cy9tZXNzYWdlLmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUNoZWNrIHdoZXRoZXIgc2VuZGVyUSBpcyBOVUxMIGJlZm9yZSB0cnlpbmcgdG8gbG9jayBpdC4KCgkqIGRsbHMvY3J0ZGxsL2NydGRsbC5oLCBkbGxzL2NydGRsbC9jcnRkbGwuc3BlYywgZGxscy9jcnRkbGwvY3J0ZGxsX21haW4uYywgZGxscy9jcnRkbGwvZmlsZS5jLCBkbGxzL2NydGRsbC9zdHJpbmcuYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CgktIEZpeCBjdHlwZSgpLCBtYWtlIGlzKiBmdW5jdGlvbnMgYmluYXJ5IGNvbXBhdGlibGUKCS0gQWRkIDEzIGZ1bmN0aW9ucywgc2V0IGVycm5vIGluIG1hdGggY2FsbHMKCgkqIGRsbHMvd2luaW5ldC9mdHAuYywgaWYxNjMyL3JlbGF5LmMsIHdpbmRvd3MvdXNlci5jLCBkbGxzL2RpbnB1dC9qb3lzdGljay9saW51eC5jLCBkbGxzL250ZGxsL2RlYnVndG9vbHMuYywgZGxscy9ycGNydDQvcnBjcnQ0X21haW4uYywgZGxscy9zZXR1cGFwaS9zZXR1cGFwaS5zcGVjLCBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmMsIGRsbHMvY29tbWRsZy9mb250ZGxnLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgaXNzdWVzIGZvdW5kIGJ5IHdpbmFwaV9jaGVjay4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLmRhdCwgdG9vbHMvd2luYXBpX2NoZWNrL25hdGl2ZWFwaS5kYXQsIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9jcnRkbGwuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIva2VybmVsMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvbnRkbGwuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvcnBjcnQ0LmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3NldHVwYXBpLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3VybG1vbi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi91c2VyMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2NoZWNrOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglNaW5vciBBUEkgZmlsZXMgdXBkYXRlLgoKCSogaW5jbHVkZS9jb21jYXQuaCwgaW5jbHVkZS9ycGMuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglJbmNsdWRlIHRoZSBzYW1lIGhlYWRlcnMgYXMgb24gV2luZG93cy4KCgkqIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL2NvbXBvYmpfcHJpdmF0ZS5oLCBkbGxzL29sZTMyL2ZpbGVtb25pa2VyLmMsIGRsbHMvb2xlMzIvbW9uaWtlci5jLCBpbmNsdWRlL2NvbXBvYmouaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+Cgljb21wb2JqLmggaXMgYSBzeW5vbnltIGZvciBvYmpiYXNlLmgKCU1vdmVkIGFsbCB0aGUgb3RoZXIgY29udGVudHMgdG8gZGxscy9vbGUzMi9jb21wb2JqX3ByaXZhdGUuaAoKCSogZGxscy9jb21jdGwzMi9oZWFkZXIuYzoKCUVyaWMgS29obCA8ZWtvaGxAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgbm90aWZpY2F0aW9uIGZvcm1hdCBoYW5kbGluZy4KCgkqIGNvbnRyb2xzL2xpc3Rib3guYywgZGxscy91c2VyL3VzZXIuc3BlYywgZGxscy91c2VyL3VzZXIzMi5zcGVjOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglJbXBsZW1lbnRlZCBXaW4xNiBiZWhhdmlvdXIgb2YgRERMX0RSSVZFUyBpbiBEbGdEaXJMaXN0LgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGR0aW1vc2hrb3ZAY29kZXdlYXZlcnMuY29tPgoJRml4ZWQgVG9Vbmljb2RlIFRSQUNFIG1lc3NhZ2UuCgoJKiBkbGxzL2NydGRsbC9jcnRkbGwuaCwgZGxscy9jcnRkbGwvY3J0ZGxsLnNwZWMsIGRsbHMvY3J0ZGxsL2NydGRsbF9tYWluLmMsIGRsbHMvY3J0ZGxsL2ZpbGUuYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CgktIEFkZCBtYXRoIGNhbGxzOiBzY2FsYiwgZnBjbGFzcywgbmV4dGFmdGVyLCBsb2diLCBfQ0kqCgktIEFkZCBmdXRpbWUsIHV0aW1lLCBwdXJlY2FsbCwgZ2V0cGlkCgoJKiBkbGxzL250ZGxsL21pc2MuYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglOVERMTF9fQ0lwb3cgcmV0dXJucyBkb3VibGUsIG5vdCBMT05HLgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6CglTdGVwaGFuZSBMdXNzaWVyIDxzdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KCS0gUmVhZCBhbGwgdGhlIGZyYWdtZW50cyBhdmFpbGFibGUsIG5vdCBvbmx5IG9uZSBmcmFnbWVudCBiZWZvcmUKCSAgZ29pbmcgYmFjayB0byBzbGVlcC4KCS0gVXNlIFNORENUTF9EU1BfU0VUVFJJR0dFUiBpb2N0bCBjb21tYW5kIHRvIHRyaWdnZXIgdGhlIHN0YXJ0IHRoZQoJICByZWNvcmRpbmcuIElmIHRoaXMgY29tbWFuZCBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBkZXZpY2UsIHJlYWQgNAoJICBieXRlcyBpbiB0aGUgc291bmQgZGV2aWNlIGluc3RlYWQuCgoJKiB3aW5kb3dzL2RpYWxvZy5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZHRpbW9zaGtvdkBjb2Rld2VhdmVycy5jb20+CglBZGQgc3VwcG9ydCBmb3IgbmF0aW9uYWwgY2hhcmFjdGVycyBhcyBhY2NlbGVyYXRvcnMgaW4gZGlhbG9ncy4KCgkqIHdpbmRvd3MvbWVzc2FnZS5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZHRpbW9zaGtvdkBjb2Rld2VhdmVycy5jb20+CglBbHdheXMgZ2VuZXJhdGUgdW5pY29kZSBDSEFSIG1lc3NhZ2VzLgoKCSogZGxscy9vbGUzMi9oZ2xvYmFsc3RyZWFtLmMsIGRsbHMvb2xlMzIvc3RnX2JpZ2Jsb2NrZmlsZS5jOgoJRml4ZWQgd2FybmluZ3MuCgoJKiBzY2hlZHVsZXIvcHJvY2Vzcy5jLCB3aW5kb3dzL2N1cnNvcmljb24uYywgd2luZG93cy9kcml2ZXIuYywgZGVidWdnZXIvd2luZWRiZy5jLCBkbGxzL29sZTMyL2lmcy5jLCBtc2Rvcy9kb3NtZW0uYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJQ29zbWV0aWNzLgoKCSogaW5jbHVkZS93aW5lL3dpbmdkaTE2Lmg6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIEdkaVNlZUdkaURvMTYuCgoJKiBpbmNsdWRlL3dpbm50Lmg6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZWQgZG91YmxlIEFOWVNJWkVfQVJSQVkgZGVmaW5lLgoKCSogdG9vbHMvd2luZW1ha2VyOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVdoZW4gYXV0b2RldGVjdGVkIHRoZSBNRkMgd2VyZSBzdGlsbCBnZW5lcmF0aW5nIHdyYXBwZXJzLgoJRml4ZWQgaW5jb25zaXN0ZW5jaWVzIGluIHRoZSB1c2Ugb2YgJ25vJyBpbiB0aGUgb3B0aW9uIG5hbWVzLgoJVXBkYXRlZCB0aGUgTUZDIGxpbmstbGlzdCAoY29uZmlndXJlLmluKS4KCU1hZGUgdGhlIE1ha2VmaWxlLmluIGxheW91dCBtb3JlIHJlYWRhYmxlLgoKCSogZGxscy9jb21jdGwzMi91cGRvd24uYzoKCURpbWl0cmllIE8uIFBhdW4gPGRpbWlAY3MudG9yb250by5lZHU+CglVcGRhdGUgY29tbWVudHMsIGNsZWFudXAgd2FybmluZyBtZXNzYWdlcy4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYywgbWVtb3J5L3NlbGVjdG9yLmMsIG1zZG9zL2RwbWkuYywgbXNkb3MvaW50MTEuYywgcmVsYXkzMi9yZWxheTM4Ni5jLCBzY2hlZHVsZXIvY3JpdHNlY3Rpb24uYywgc2VydmVyL3RyYWNlLmMsIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkaW1pQGNzLnRvcm9udG8uZWR1PgoJSW5jbHVkZSBjb25maWcuaCBpbiBmaWxlcyB0aGF0IHRlc3QgZm9yIGNvbnN0YW50cyBkZWZpbmVkIGluIGl0LgoKCSogZGxscy9rZXJuZWwvY29tbS5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZGltaUBjcy50b3JvbnRvLmVkdT4KCUF2b2lkIHVzaW5nIFRJT0NNXyogY29uc3RhbnRzIGlmIG5vdCBhdmFpbGFibGUuCgoJKiBpbmNsdWRlL3dpbmUvb2JqX2Jhc2UuaDoKCURpbWl0cmllIE8uIFBhdW4gPGRpbWlAY3MudG9yb250by5lZHU+CglGaXhlZCB0eXBvIGluIG1hY3JvIElDT01fTUVUSE9EMTEgcGFyYW1ldGVyIGxpc3QuCgoJKiBkbGxzL2ltYWdlaGxwL21vZGlmeS5jOgoJRXJpYyBLb2hsIDxla29obEBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnRlZCBQRSBmaWxlIGNoZWNrc3VtIGNhbGN1bGF0aW9uLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMi5oLCBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmMsIGRsbHMvY29tY3RsMzIvdGFiLmMsIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJRXJpYyBLb2hsIDxla29obEBjb2Rld2VhdmVycy5jb20+CglSZW1vdmVkIGNhbGxzIHRvIGludGVybmFsIChub24tZXhwb3J0ZWQpIHdpbmUgZnVuY3Rpb25zLgoKCSogZGxscy9rZXJuZWwvbG9jYWxlX3JjLnJjOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIHRoZSB0dXJraXNoIGxvY2FsZS4KCgkqIHdpbmRvd3MveDExZHJ2L2NsaXBib2FyZC5jOgoJVWxyaWNoIEN6ZWthbGxhIDx1Y3pla2FsbGFAY29kZXdlYXZlcnMuY29tPgoJQWxsb3cgZm9yIHplcm8tbGVuZ3RoIHN0cmluZyBzZWxlY3Rpb25zLgoKCSogZGxscy9jb21jdGwzMi9oZWFkZXIuYzoKCVVscmljaCBDemVrYWxsYSA8dWN6ZWthbGxhQGNvZGV3ZWF2ZXJzLmNvbT4KCVNlbmQgSEROX0lURU1DSEFOR0lORyBhbmQgSEROX0lURU1DSEFOR0VEIHdoZW4gcmVzaXppbmcuCgoJKiBvbGUvb2xlMm5scy5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglDb21wYXJlU3RyaW5nVyByZXR1cm5lZCB3cm9uZyByZXN1bHRzIHNvbWV0aW1lcy4KCgkqIG9sZS9NYWtlZmlsZS5pbjoKCURpbWl0cmllIE8uIFBhdW4gPGRpbWlAY3MudG9yb250by5lZHU+CglXZSBubyBsb25nZXIgaGF2ZSBhbiBvbGUvbmxzIGRpcmVjdG9yeS4KCgkqIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsIGRsbHMvc2hsd2FwaS9yZWcuYywgZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgc29tZSBvcmRpbmFsIHN0dWJzLCBpbXBsZW1lbnRlZCBTSERlbGV0ZVZhbHVlKiwgU0hTZXRWYWx1ZSouCgoJKiB3aW5kb3dzL21lc3NhZ2UuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJSW1wbGVtZW50ZWQgU2VuZE5vdGlmeU1lc3NhZ2UoKS4KCgkqIHRvb2xzL3dpbmVpbnN0YWxsOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglNYWRlIHdpbmVpbnN0YWxsIGEgYml0IG1vcmUgdmVyYm9zZS4KCgkqIGRsbHMvZ2RpL3dpbmcuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglXaW5HIHdhcyB3cml0dGVuIGZvciA4YnBwIERJQnMsIHNvIHNvbWUgYXBwcyBhc3N1bWUgdGhhdCwgc28gYWx3YXlzCglyZWNvbW1lbmQgOGJwcCwgcmVnYXJkbGVzcyBvZiB0aGUgYWN0dWFsIGRpc3BsYXkgZGVwdGguCgoJKiBncmFwaGljcy9wYWludGluZy5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglHZXRQaXhlbCBuZWVkcyB0byByZXR1cm4gQ0xSX0lOVkFMSUQgaWYgbm90IGluc2lkZSBjbGlwcGluZyByZWdpb24uCgoJKiBkbGxzL29sZTMyL29sZTMyLnNwZWMsIGRsbHMvb2xlMzIvb2xlMzJfbWFpbi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBPTEUzMi5EbGxSZWdpc3RlclNlcnZlciBzdHViLgoKCSogZGxscy9hdmlmaWwzMi9hdmlmaWxlLnNwZWM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVJvdXRlZCBhIGNvdXBsZSBvZiAxNi1iaXQgYXZpZmlsZS5kbGwgaGFuZGxlcnMgdG8gdGhlIDMyLWJpdAoJaGFuZGxlcnMuLi4gd2VsbCwgd29ya3MgZm9yIENpdmlsaXphdGlvbiBJSS4KCgkqIGRsbHMvbnRkbGwvbnRkbGwuc3BlYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgcG93KCkgZm9yd2FyZC4KCgkqIHJlbGF5MzIvc25vb3AuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRG9uJ3QgdGVzdCAhSElXT1JEIHZhbHVlcyBmb3IgcG9pbnRlcm5lc3MuCgoJKiBpbmNsdWRlL3dpbmRlZi5oOgoJRGltaXRyaWUgTy4gUGF1biA8ZGltaUBjcy50b3JvbnRvLmVkdT4KCUZpeGVkIGNvbXBpbGF0aW9uIHdhcm5pbmcgb24gQ3lnd2luLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU11bHRpQnl0ZVRvV2lkZUNoYXIoKSByZXR1cm5zIGNoYXJhY3RlcnMsIG5vdCBieXRlcy4KCgkqIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jOgoJRnJhbmNvaXMgSmFjcXVlcyA8ZnJhbmNvaXNqQG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50ZWQgVlRfRU1QVFkgdG8gVlRfQlNUUiB0eXBlIGNvZXJjaW9uLgoKCSogaW5jbHVkZS9vbGUyLmgsIGluY2x1ZGUvb2xlYXV0by5oOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBwcm90b3R5cGVzIGZvciBPbGV7RyxTfWV0QXV0b0NvbnZlcnQsIExIYXNoVmFsT2ZOYW1lU3lzeyxBfS4KCgkqIGRsbHMva2VybmVsL2Zvcm1hdF9tc2cuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSGFuZGxlICVscyBzYW1lIGFzICVzLgoKCSogZGxscy9kY2ltYW4zMi9kY2ltYW5fbWFpbi5jLCBkbGxzL2RjaW1hbjMyL2RjaW1hbjMyLnNwZWM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIHN0dWIgZm9yIERDSU9wZW5Qcm92aWRlci4KCjIwMDAtMTEtMTYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2ltYWdlaGxwL01ha2VmaWxlLmluLCBkbGxzL21zYWNtL01ha2VmaWxlLmluLCBkbGxzL21zYWNtL21zYWNtMzIuc3BlYywgZGxscy9vbGVhdXQzMi9vbGVhdXQzMi5zcGVjLCBkbGxzL29sZWNsaS9NYWtlZmlsZS5pbiwgZGxscy9vbGVjbGkvb2xlY2xpMzIuc3BlYywgZGxscy9vbGVzdnIvTWFrZWZpbGUuaW4sIGRsbHMvb2xlc3ZyL29sZXN2cjMyLnNwZWMsIGRsbHMvcmFzYXBpMzIvTWFrZWZpbGUuaW4sIGRsbHMvcmFzYXBpMzIvcmFzYXBpMzIuc3BlYywgZGxscy92ZXJzaW9uL01ha2VmaWxlLmluLCBkbGxzL3dpbmluZXQvTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vbWNpc2VxL01ha2VmaWxlLmluLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2F2aWZpbDMyL01ha2VmaWxlLmluLCBkbGxzL2RwbGF5eC9NYWtlZmlsZS5pbjoKCUF2b2lkIGxpbmtpbmcgd2l0aCBudGRsbCB3aGVyZSBwb3NzaWJsZS4KCgkqIGRsbHMvY3J0ZGxsL2NydGRsbC5zcGVjLCBkbGxzL2NydGRsbC9jcnRkbGxfbWFpbi5jLCBkbGxzL2NydGRsbC9kaXIuYywgZGxscy9jcnRkbGwvZmlsZS5jLCBkbGxzL2NydGRsbC9zcGF3bi5jOgoJUmVtb3ZlZCBjYWxscyB0byBXaW5lIGludGVybmFsIGZ1bmN0aW9ucy4KCgkqIGRsbHMvZHBsYXl4L2RwbGF5LmMsIGRsbHMvZHBsYXl4L2RwbGF5eF9nbG9iYWwuYywgZGxscy9kcGxheXgvZHBsb2JieS5jLCBkbGxzL2RwbGF5eC9uYW1lX3NlcnZlci5jLCBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjLCBkbGxzL3NobHdhcGkvc3RyaW5nLmMsIGRsbHMvdmVyc2lvbi9pbmZvLmMsIGRsbHMvdmVyc2lvbi9pbnN0YWxsLmMsIGRsbHMvdmVyc2lvbi9yZXNvdXJjZS5jLCBkbGxzL3dpbmluZXQvZnRwLmMsIGRsbHMvd2luaW5ldC9odHRwLmMsIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jOgoJUmVwbGFjZWQgSEVBUF9zdHJkdXAqIGFuZCBsc3RyY3B5bkF0b1cgY2FsbHMgYnkgZXhwb3J0ZWQgZnVuY3Rpb25zLgoKMjAwMC0xMS0xNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG9iamVjdHMvZ2Rpb2JqLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci9zeW5jaHJvLmMsIHNjaGVkdWxlci9zeXNsZXZlbC5jLCB0b29scy93aW5lYnVpbGQvcmVsYXkuYywgd2luZG93cy9xdWV1ZS5jLCB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3dpbmhlbHAuYywgaW5jbHVkZS93aW5lL3dpbmJhc2UxNi5oLCBpbmNsdWRlL3dpbmUvd2luZGVmMTYuaCwgbG9hZGVyL21vZHVsZS5jLCBsb2FkZXIvbmUvbW9kdWxlLmMsIGxvYWRlci90YXNrLmMsIGRsbHMva2VybmVsL2tlcm5lbC5zcGVjLCBkbGxzL2tlcm5lbC9zeW5jLmMsIGRsbHMva2VybmVsL3RodW5rLmMsIGRsbHMva2VybmVsL3dvd3RodW5rLmMsIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYywgZGxscy91c2VyL3VzZXJfbWFpbi5jLCBkbGxzL3dpbjMycy93MzJza2VybmVsLmMsIGRsbHMvd2luMzJzL3dpbjMyczE2LmMsIGRsbHMvd2lubW0vbW1zeXN0ZW0uYywgZGxscy93aW5tbS90aW1lLmMsIGZpbGVzL2Rvc19mcy5jLCBpbmNsdWRlL2hlYXAuaCwgaW5jbHVkZS9zeXNsZXZlbC5oLCBpbmNsdWRlL3dpbi5oLCBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW5kZWYuaCwgaW5jbHVkZS93aW5zb2NrLmg6CglNb3ZlZCBzdGFuZGFyZCBzeXNsZXZlbCBBUElzIGRlY2xhcmF0aW9uIHRvIHdpbmJhc2UuaC4KCVVzZSBleHBvcnRlZCBzeXNsZXZlbCBmdW5jdGlvbiB3aGVyZXZlciBwb3NzaWJsZS4KCU1vdmVkIFNFR1BUUiBkZWNsYXJhdGlvbiB0byB3aW5kZWYxNi5oLgoKCSogaW5jbHVkZS93aW5wcm9jLmgsIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL3dpbnByb2MuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGR0aW1vc2hrb3ZAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgbWFwcGluZyB0by9mcm9tIHVuaWNvZGUgZm9yIFdNX0NIQVIsIFdNX0RFQURDSEFSLCBXTV9TWVNDSEFSLAoJV01fU1lTREVBRENIQVIgbWVzc2FnZXMuCgoJKiB0b29scy93aW5lYnVpbGQvbWFpbi5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBbGxvdyB0aGUgdXNlciB0byBzdGljayB0aGUgb3B0aW9uIGFuZCBpdHMgYXJndW1lbnQgdG9nZXRoZXIuCgoJKiBkbGxzL2NydGRsbC9jcnRkbGwuaCwgZGxscy9jcnRkbGwvY3J0ZGxsLnNwZWMsIGRsbHMvY3J0ZGxsL2NydGRsbF9tYWluLmMsIGRsbHMvY3J0ZGxsL2ZpbGUuYywgZGxscy9jcnRkbGwvbWVtb3J5LmMsIGRsbHMvY3J0ZGxsL3N0cmluZy5jLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvY3J0ZGxsLmFwaToKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CgktIENvbXBsZXRlIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBoZWFwIGZ1bmN0aW9ucwoJLSBGb3J3YXJkIGowLGoxLGpuLHkwLHkxLHluIG1hdGggY2FsbHMgdG8gbGliYwoJLSBBZGQgc3RybmV4dGMsIHBhc3MgdGV4dCBmbGFnIGluIGNyZWF0LCB3aW5hcGlfY2hlY2sgZml4ZXMKCgkqIGNvbnRyb2xzL3dpZGdldHMuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGR0aW1vc2hrb3ZAY29kZXdlYXZlcnMuY29tPgoJUHJlcGFyZSBzd2l0Y2hpbmcgdG8gdW5pY29kZSBvZiBidWlsdGluIHdpZGdldHMuCgoJKiBpbmNsdWRlL3dpbmUvb2JqX2Jhc2UuaDoKCUphbWVzIEhhdGhld2F5IDxqYW1lc0BtYWNhZGFtaWFuLmNvbT4KCUluY3JlYXNlIG51bWJlciBvZiBwYXJhbWV0ZXJzIHBvc3NpYmxlIGZvciBJQ09NXyogbWFjcm9zIHRvIDExLgoKCSogZGVidWdnZXIvc3RhYnMuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGR0aW1vc2hrb3ZAY29kZXdlYXZlcnMuY29tPgoJU2tpcCBkaXJlY3RvcmllcyB3aGVuIGxvYWRpbmcgZGVidWcgc3ltYm9scy4KCgkqIGRlYnVnZ2VyL2RlYnVnZ2VyLmgsIGRlYnVnZ2VyL2hhc2guYywgZGVidWdnZXIvbW9kdWxlLmMsIGRlYnVnZ2VyL21zYy5jLCBkZWJ1Z2dlci9zdGFicy5jLCBkZWJ1Z2dlci93aW5lZGJnLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUltcHJvdmVkIGludGVybmFsIG1vZHVsZSBoYW5kbGluZyAobW9kdWxlIG5vdyBoYXZlIGEgc2l6ZSwgbWFwIG9mCglsb2FkZWQgbW9kdWxlIGlzIGNsZWFyZXIsIGJldHRlciBlcnJvciByZXBvcnRpbmcsIHNlcGVyYXRlZCBtb2R1bGUKCWxvYWRpbmcgY29kZSBmcm9tIHN5bWJvbCBleHRyYWN0aW9uKS4KCgkqIGRsbHMvY29tbWRsZy9maW5kZGxnLmMsIGRsbHMvY29tbWRsZy9mb250ZGxnLmMsIGRsbHMvY29tbWRsZy9wcmludGRsZy5jLCBkbGxzL2NvbWN0bDMyL21vbnRoY2FsLmMsIGRsbHMvY29tY3RsMzIvcmViYXIuYywgZGxscy9jb21tZGxnL2NvbG9yZGxnLmM6CglEbWl0cnkgVGltb3Noa292IDxkdGltb3Noa292QGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZSByZWR1bmRhbnQgaW5jbHVkZXMuCglFbGltaW5hdGUgdXNlIG9mIFVTRVIgaW50ZXJuYWwgc3RydWN0dXJlcy4KCgkqIGRsbHMvY29tY3RsMzIvdGFiLmM6CglFcmljIEtvaGwgPGVrb2hsQGNvZGV3ZWF2ZXJzLmNvbT4KCVVzZSBpbnRlcm5hbCB1bmljb2RlIHN0cmluZ3MuCglBZGRlZCB1bmljb2RlIG1lc3NhZ2VzLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMi5oLCBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYzoKCUVyaWMgS29obCA8ZWtvaGxAY29kZXdlYXZlcnMuY29tPgoJTmV3IHVuaWNvZGUgc3VwcG9ydCBmdW5jdGlvbnMuCgoJKiB0b29scy93aW5lYnVpbGQvc3BlYzE2LmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkaW1pQGNzLnRvcm9udG8uZWR1PgoJSW5jbHVkZSBjb25maWcuaC4KCgkqIGRsbHMvb2xlMzIvY29tcG9iai5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTaW1wbGlmaWVkIHJlZyBoYW5kbGluZyBpbiBDb0dldENsYXNzT2JqZWN0LCBkbyBub3QgdXNlIFJlZ1F1ZXJ5VmFsdWVXLgoKCSogbWlzYy9yZWdpc3RyeS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglSZWdTZXRWYWx1ZUV4MTYgbWlnaHQgZ2V0IHBhc3NlZCAwIGFzIGNvdW50IG9mIGRhdGFieXRlcywgZGV0ZXJtaW5lCglzdHJpbmcgbGVuZ3RoIGZvciBvdXJzZWx2ZXMgaW4gdGhpcyBjYXNlLgoKCSogaW5jbHVkZS9vYmpiYXNlLmgsIGluY2x1ZGUvdW5rbnduLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJTWF0Y2ggdGhlIFdpbmRvd3MgaGVhZGVyIGRlcGVuZGVuY2llcy4KCgkqIHdpbmRvd3Mvc3lzbWV0cmljcy5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVNNX0FSUkFOR0UgaXMgQVJXX0hJREUsIGkuZS4gOAoKCSogdG9vbHMvd2luZW1ha2VyOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCURpc3Rpbmd1aXNoIGJldHdlZW4gSU1QT1JUUyBhbmQgTElCUkFSSUVTLgoJUmVuYW1lZCBMSUJSQVJJRVMgdG8gRExMUyB0byBhdm9pZCBjb25mdXNpb24gd2l0aCB0aGUgYWJvdmUsIHJlbmFtZWQKCVBST0dSQU1TIHRvIEVYRVMgdG8gbWF0Y2guCglBZGRlZCBhICctaScgb3B0aW9uIGZvciBpbXBvcnRpbmcgYSBXaW5lbGliIGxpYnJhcnkuICctbCcgaXMgc3RpbGwKCXRoZXJlIGJ1dCBpcyBvbmx5IHVzZWQgZm9yIGxpbmtpbmcgaW4gdGhlIFVuaXggc2Vuc2UuCglEaXNhYmxlZCB0aGUgJ3dyYXBwZXInIG9wdGlvbnMuIEl0IHdpbGwgYmUgcmVtb3ZlZCBhcyBhIHNlcGFyYXRlCglwYXRjaC4KCU5vIGxvbmdlciBsaW5rIHdpdGggYWxsIG9mIFdpbmUncyBsaWJyYXJpZXMuCglJbXBvcnQgdGhlIHNhbWUgZGVmYXVsdCBzZXQgb2YgZGxscyBhcyBWaXN1YWwgU3R1ZGlvLgoJQXZvaWQgZHVwbGljYXRlIGltcG9ydHMgd2hlbiBnZW5lcmF0aW5nIHRoZSAuc3BlYyBmaWxlLgoJVXBkYXRlZCB0aGUgd2F5IHdpbmVidWlsZCBpcyB1c2VkLgoJTGluayBhcHBsaWNhdGlvbnMgYXMgbGlicmFyaWVzIGFuZCBjcmVhdGUgYSBzeW1ib2xpYyBsaW5rIHRvIHdpbmUuCglEZXRlY3Qgd2hlcmUgJ3dpbmUnIGlzIGxvY2F0ZWQgaW4gdGhlIGNvbmZpZ3VyZSBzY3JpcHQuCglSZW1vdmVkIHVudXNlZC9ubyBsb25nZXIgdXNlZCB2YXJpYWJsZXM6IERMTEZMQUdTLCBYTElCLCBYX0RMTFMsCglYRklMRVMsIERMTFMgKGNvbmZpZ3VyZS5pbikKCVVwZGF0ZWQgTERTSEFSRUQgQU5EIExERExMRkxBR1MgZGV0ZWN0aW9uIChjb25maWd1cmUuaW4pLgoJUmVtb3ZlZCB0aGUgcnVsZXMgcGVydGFpbmluZyB0byBzcGVjIGZpbGVzIGZyb20gdGhlIE1ha2UucnVsZXMuCglVcGRhdGVkIHRoZSBjbGVhbiBjb21tYW5kIHRvIHJlbW92ZSB0aGUgc3ltYm9saWMgbGlua3MuCgoJKiBkbGxzL3JwY3J0NC9ycGNydDQuc3BlYywgZGxscy9ycGNydDQvcnBjcnQ0X21haW4uYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgc29tZSBycGNydDQgc3R1YnMuCgoJKiBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jOgoJSmVyZW15IFdoaXRlIDxqd2hpdGVAY29kZXdlYXZlcnMuY29tPgoJQWxsb3cgZGVza3RvcD1OIGluIHRoZSBbeDExZHJ2XSBzZWN0aW9uIG9mIC53aW5lcmMsIGluc3RlYWQgb2YKCWRlZmF1bHRpbmcgdG8gZGVza3RvcD02NDB4NDgwLgoKMjAwMC0xMS0xNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHRvb2xzL3dpbmVidWlsZC9yZWxheS5jLCB0b29scy93aW5lYnVpbGQvc3BlYzE2LmMsIGxvYWRlci9uZS9tb2R1bGUuYywgbG9hZGVyL25lL3Jlc291cmNlLmMsIGxvYWRlci9uZS9zZWdtZW50LmMsIG1lbW9yeS9NYWtlZmlsZS5pbiwgbWVtb3J5L2Vudmlyb24uYywgbWVtb3J5L2dsb2JhbC5jLCBtZW1vcnkvaGVhcC5jLCBtZW1vcnkvaW5zdHIuYywgbWVtb3J5L2xkdC5jLCBtZW1vcnkvc2VsZWN0b3IuYywgbXNkb3MvZG9zbWVtLmMsIG1zZG9zL2RwbWkuYywgbXNkb3MvdnhkLmMsIG9iamVjdHMvbWV0YWZpbGUuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2NoZWR1bGVyL3RocmVhZC5jLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90cmFjZS5jLCBkbGxzL2tlcm5lbC9rZXJuZWxfbWFpbi5jLCBkbGxzL2tlcm5lbC90aHVuay5jLCBkbGxzL3dpbm1tL21tc3lzdGVtLmMsIGdyYXBoaWNzL3gxMWRydi9kaWIuYywgaWYxNjMyL2J1aWx0aW4uYywgaWYxNjMyL3JlbGF5LmMsIGlmMTYzMi9zbm9vcC5jLCBpbmNsdWRlL2J1aWx0aW4xNi5oLCBpbmNsdWRlL2dsb2JhbC5oLCBpbmNsdWRlL2xkdC5oLCBpbmNsdWRlL3NlbGVjdG9ycy5oLCBpbmNsdWRlL3NlcnZlci5oLCBpbmNsdWRlL3dpbmUvbGlicmFyeS5oLCBsaWJyYXJ5L01ha2VmaWxlLmluLCBsaWJyYXJ5L2xkdC5jLCBsb2FkZXIvdGFzay5jOgoJTW92ZWQgTERUIGhhbmRsaW5nIHRvIGxpYndpbmUuc28uIENoYW5nZWQgdGhlIGludGVyZmFjZSB0byB1c2UgdGhlCglleHBvcnRlZCBMRFRfRU5UUlkgc3RydWN0dXJlLgoKMjAwMC0xMS0xMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsIGRsbHMvY29tY3RsMzIvY29tY3RsMzIuc3BlYywgZGxscy9jb21tZGxnL2NvbWRsZzMyLnNwZWM6CglUZW1wIGhhY2s6IGRvIG5vdCBpbXBvcnQgZGxscyB0aGF0IHdlIGxpbmsgd2l0aCBhdCB0aGUgRUxGIGxldmVsLgoKCSogZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYzoKCUZpeGVkIGNvcHkvcGFzdGUgdHlwbyBzcG90dGVkIGJ5IERpbWl0cmllIE8uIFBhdW4uCgoJKiBkbGxzL2NvbWN0bDMyL3JlYmFyLmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJSW1wbGVtZW50IGRyYWdnaW5nIG9uIGdyaXBwZXIgdG8gZXhwYW5kIGFuZCBjb21wcmVzcyBiYW5kcy4gQWN0dWFsCgltb3ZpbmcgYmFuZHMgdG8gZGlmZmVyZW50IHJvd3Mgd2lsbCBiZSBsYXRlci4KCgkqIGRsbHMva2VybmVsL2NvbW0uYywgaW5jbHVkZS9zZXJ2ZXIuaCwgc2NoZWR1bGVyL3N5bmNocm8uYywgc2VydmVyL01ha2VmaWxlLmluLCBzZXJ2ZXIvYXN5bmMuYywgc2VydmVyL29iamVjdC5oLCBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvc2VyaWFsLmMsIHNlcnZlci90cmFjZS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQGxvb2tzbWFydC5jb20uYXU+CgktIGNyZWF0ZWQgc2VydmVyIG9iamVjdCBmb3IgaGFuZGxpbmcgYXN5bmMgaS9vCgktIGltcGxlbWVudGVkIFdhaXRDb21tRXZlbnQgd2l0aCB0aGUgRVZfUlhDSEFSIGZsYWcKCS0gaW1wbGVtZW50ZWQgR2V0T3ZlcmxhcHBlZFJlc3VsdAoKCSogZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZGxscy9rZXJuZWwvdGh1bmsuYywgaWYxNjMyL2J1aWx0aW4uYywgaWYxNjMyL3JlbGF5LmMsIGlmMTYzMi9zbm9vcC5jLCBpbmNsdWRlL2J1aWx0aW4xNi5oLCB0b29scy93aW5lYnVpbGQvcmVsYXkuYywgdG9vbHMvd2luZWJ1aWxkL3NwZWMxNi5jLCB3aW5kb3dzL3dpbnByb2MuYzoKCUV4cG9ydCB0aGUgQ2FsbEZyb20xNnh4eCBmdW5jdGlvbnMgZnJvbSBrZXJuZWwzMi4gUmVuYW1lZCB0aGVtCglfX3dpbmVfY2FsbF9mcm9tXzE2IHRvIGZvbGxvdyB0aGUgbmFtaW5nIGNvbnZlbnRpb24uCgoJKiB0b29scy93aW5lYnVpbGQvYnVpbGQuaCwgdG9vbHMvd2luZWJ1aWxkL2ltcG9ydC5jLCB0b29scy93aW5lYnVpbGQvbWFpbi5jLCB0b29scy93aW5lYnVpbGQvc3BlYzMyLmM6CglEbyBub3Qgd2FybiBmb3IgdW51c2VkIGltcG9ydGVkIGRsbHMgd2hlbiBmb3J3YXJkcyB0byB0aGUgc2FtZSBkbGxzCglhcmUgcHJlc2VudC4KCgkqIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYzoKCURvbid0IGluY2x1ZGUgd2luZSBpbnRlcm5hbCBmdW5jdGlvbnMgaW4gdGhlIHJlbGF5IGRlYnVnZ2luZyB0YWJsZS4KCgkqIE1ha2UucnVsZXMuaW46CglEbyBhIHN0cmlwIC0tc3RyaXAtdW5uZWVkZWQgb24gdGhlIC50bXAubyBmaWxlIHRvIHJlZHVjZSBkaXNrIHVzYWdlLgoKCSogZGxscy9zZXR1cGFwaS9pbmZwYXJzZS5jLCBkbGxzL3dpbm1tL21jaXNlcS9tY2ltaWRpLmMsIGRsbHMvd2luc3Bvb2wvaW5mby5jLCBncmFwaGljcy94MTFkcnYvZGliLmMsIG1lbW9yeS9nbG9iYWwuYywgc2NoZWR1bGVyL3RocmVhZC5jLCBkbGxzL2F2aWZpbDMyL2F2aWZpbGUuYywgZGxscy9kcGxheXgvZHBsYXkuYywgZGxscy9pbWFnZWhscC9hY2Nlc3MuYywgZGxscy9tc2FjbS9pbnRlcm5hbC5jOgoJUmVwbGFjZWQgYSBmZXcgaW50ZXJuYWwgZnVuY3Rpb25zIGJ5IGV4cG9ydGVkIG9uZXMuCgoJKiBzY2hlZHVsZXIvcHRocmVhZC5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglVbml4OTggcHRocmVhZF9yd2xvY2sqIHN0dWJzIGZvciBnbGliYzIuMiBjb21wYXRpYmlsaXR5LgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW46CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVNpbmNlIHdlIGNhbiBubyBsb25nZXIgYnVpbHQgLmEgZmlsZXM6CgktIHJlbW92ZSAtZGlzYWJsZS8tZW5hYmxlLWRsbCBvcHRpb24KCS0gZXJyb3IgYW5kIGFib3J0IGlmIG5vIHN1aXRhYmxlIHNoYXJlZCBsaWJyYXJ5IGxpbmtpbmcgaXMgcG9zc2libGUKCgkqIHRvb2xzL3dpbmVtYWtlcjoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglGaXhlZCB0aGUgZGV0ZWN0aW9uIG9mIHRoZSBsaW5rIGZsYWdzIGZvciBOZXRCU0QvQ3lnd2luIChjb25maWd1cmUuaW4pCglBZGRlZCBBQ19QQVRIX0hFQURFUiBhbmQgQUNfUEFUSF9MSUJSQVJZCglCZXR0ZXIgaGVhZGVyL2xpYnJhcnkgZGV0ZWN0aW9uLiBOb3cgd29ya3MgaWYgdGhpbmdzIGFyZSBhbHJlYWR5IGluCgl0aGUgaW5jbHVkZS9saWJyYXJ5IHBhdGgKCUxvb2sgZm9yIHRoZSB3aW5lL01GQyBoZWFkZXJzIGFuZCBsaWJyYXJpZXMgaW4gbW9yZSBwbGFjZXMgc28gdGhhdCBpdAoJd29ya3Mgb3V0IG9mIHRoZSBib3ggaWYgV2luZS9NRkMgaXMgaW5zdGFsbGVkIGluIGEgc3RhbmRhcmQgcGxhY2UKCShhbHRob3VnaCB0aGVyZSBpcyBub3QgcmVhbGx5IGEgc3RhbmRhcmQgcGxhY2UgeWV0IGZvciB0aGUgTUZDKQoJUmVuYW1lZCB0aGUgJy0td2l0aC14eHgnIG9wdGlvbnMgdG8gaGF2ZSBzaW1wbGVyIG1vcmUgbmF0dXJhbCBuYW1lcwoJUmVuYW1lZCB0aGUgY29ycmVzcG9uZGluZyAnV0lORUxJQl94eHgnIHZhcmlhYmxlcyB0byAnV0lORV94eHgnCgoJKiBtc2Rvcy9kcG1pLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJV2hlbiBhIFdpbjE2IGFwcCBzZXRzIGEgc2VsZWN0b3IgYmFzZSB0byBsb3cgRE9TIG1lbW9yeSwgbWFrZSBzdXJlIGxvdwoJRE9TIG1lbW9yeSBpcyBtYXBwZWQgZmlyc3QuCgoJKiBtc2Rvcy9pbnRlcnJ1cHRzLmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVVzZSB0aGUgdmlydHVhbCByZWFsLW1vZGUgaW50ZXJydXB0IHRhYmxlIGlmIGxvdyBET1MgbWVtb3J5IGlzbid0CgltYXBwZWQuCgoJKiBpbmNsdWRlL21pc2NlbXUuaCwgbXNkb3MvZG9zbWVtLmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVJlb3JnYW5pemVkIERPUyBtZW1vcnkgcmVtYXBwaW5nIHNsaWdodGx5LCBzbyB0aGF0IHRoZSByZWFsLW1vZGUKCWludGVycnVwdCB0YWJsZSBjYW4gZXhpc3QgZXZlbiB3aGVuIGxvdyBET1MgbWVtb3J5IGlzbid0IG1hcHBlZCwKCWFuZCBpcyBjb3BpZWQgZG93biBhbG9uZyB3aXRoIHRoZSBCSU9TIGFyZWEgd2hlbmV2ZXIgaXQgaXMgbWFwcGVkLgoJQWRkZWQgRE9TTUVNX1N5c3RlbUJhc2UoKSB3aGljaCByZXR1cm5zIGEgcG9pbnRlciB0byB0aGUgdmlydHVhbAoJcmVhbC1tb2RlIGludGVycnVwdCB0YWJsZSBhbmQgQklPUyBkYXRhIHNlZ21lbnQuCglBbGxvd2VkIERPU01FTV9Jbml0KFRSVUUpIHRvIGJlIGNhbGxlZCBtb3JlIHRoYW4gb25jZS4KCjIwMDAtMTEtMTIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3dpbjMycy9NYWtlZmlsZS5pbiwgZGxscy93aW5hc3BpL01ha2VmaWxlLmluLCBkbGxzL3dpbmluZXQvTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vam95c3RpY2svTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vbWNpY2RhL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL21jaXNlcS9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS9tY2l3YXZlL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL21pZGltYXAvTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vd2F2ZW1hcC9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS93aW5lb3NzL01ha2VmaWxlLmluLCBkbGxzL3dvdzMyL01ha2VmaWxlLmluLCBkbGxzL3NoZm9sZGVyL01ha2VmaWxlLmluLCBkbGxzL3NobHdhcGkvTWFrZWZpbGUuaW4sIGRsbHMvdGFwaTMyL01ha2VmaWxlLmluLCBkbGxzL3RhcGkzMi90YXBpMzIuc3BlYywgZGxscy90dHlkcnYvTWFrZWZpbGUuaW4sIGRsbHMvdXJsbW9uL01ha2VmaWxlLmluLCBkbGxzL3ZlcnNpb24vTWFrZWZpbGUuaW4sIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwgZGxscy9zZXR1cGFwaS9NYWtlZmlsZS5pbiwgZGxscy9vbGVwcm8zMi9NYWtlZmlsZS5pbiwgZGxscy9vbGVzdnIvTWFrZWZpbGUuaW4sIGRsbHMvcHNhcGkvTWFrZWZpbGUuaW4sIGRsbHMvcmFzYXBpMzIvTWFrZWZpbGUuaW4sIGRsbHMvcmljaGVkaXQvTWFrZWZpbGUuaW4sIGRsbHMvcnBjcnQ0L01ha2VmaWxlLmluLCBkbGxzL3JwY3J0NC9ycGNydDQuc3BlYywgZGxscy9zZXJpYWx1aS9NYWtlZmlsZS5pbiwgZGxscy9pbW0zMi9NYWtlZmlsZS5pbiwgZGxscy9semV4cGFuZC9NYWtlZmlsZS5pbiwgZGxscy9tcHIvTWFrZWZpbGUuaW4sIGRsbHMvbXNhY20vTWFrZWZpbGUuaW4sIGRsbHMvbXNuZXQzMi9NYWtlZmlsZS5pbiwgZGxscy9tc3ZpZGVvL01ha2VmaWxlLmluLCBkbGxzL29kYmMzMi9NYWtlZmlsZS5pbiwgZGxscy9vbGVhdXQzMi9NYWtlZmlsZS5pbiwgZGxscy9vbGVjbGkvTWFrZWZpbGUuaW4sIGRsbHMvb2xlZGxnL01ha2VmaWxlLmluLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2F2aWZpbDMyL01ha2VmaWxlLmluLCBkbGxzL2NvbWN0bDMyL01ha2VmaWxlLmluLCBkbGxzL2NvbW1kbGcvTWFrZWZpbGUuaW4sIGRsbHMvY29tbWRsZy9maWxlZGxnYnJvd3Nlci5jLCBkbGxzL2NydGRsbC9NYWtlZmlsZS5pbiwgZGxscy9kY2ltYW4zMi9NYWtlZmlsZS5pbiwgZGxscy9kcGxheS9NYWtlZmlsZS5pbiwgZGxscy9kcGxheXgvTWFrZWZpbGUuaW4sIGRsbHMvZHNvdW5kL01ha2VmaWxlLmluLCBkbGxzL2ljbXAvTWFrZWZpbGUuaW4sIGRsbHMvaW1hZ2VobHAvTWFrZWZpbGUuaW46CglTdGFydCB1c2luZyBpbXBvcnQgdGFibGVzIGZvciBkbGxzIHRoYXQgY2FuIGFscmVhZHkgc3VwcG9ydCBpdC4KCgkqIHRvb2xzL3dpbmVidWlsZC9zcGVjMTYuYywgdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jLCBkbGxzL2tlcm5lbC9rZXJuZWwuc3BlYywgZGxscy9vbGUzMi9jb21wb2JqLnNwZWMsIGlmMTYzMi9yZWxheS5jLCBsb2FkZXIvdGFzay5jLCB0b29scy93aW5lYnVpbGQvaW1wb3J0LmMsIHRvb2xzL3dpbmVidWlsZC9wYXJzZXIuYzoKCVJhaXNlIGFuIGV4Y2VwdGlvbiBmb3IgdW5pbXBsZW1lbnRlZCAxNi1iaXQgZW50cnkgcG9pbnRzIHRvby4KCUFkZGVkIGNoZWNrIGZvciBkdXBsaWNhdGUgbmFtZXMgaW4gMTYtYml0IHNwZWMgZmlsZXMuCgoJKiB3aW4zMi9leGNlcHQuYywgd2luZWRlZmF1bHQucmVnOgoJVGhlIGRlYnVnZ2VyICJBdXRvIiByZWdpc3RyeSB2YWx1ZSBzaG91bGQgYmUgYSBzdHJpbmcuCgoJKiBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jLCB3aW5lLmluaToKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50ZWQgdGhlIERlc2t0b3A9WFhYeFlZWSBzZXR0aW5nIGluIHRoZSBbeDExZHJ2XSBzZWN0aW9uIG9mIHRoZQoJY29uZmlnIGZpbGUuCgoJKiBkZWJ1Z2dlci9tc2MuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJTWFrZSB1c2Ugb2YgV2luZG93cyBzdHJ1Y3R1cmUgZm9yIENPRkYgaW5mby4KCUZpeGVkIGEgZmV3IGlzc3VlcyBpbiBDT0ZGIGxvYWRpbmcuCglDbGVhbmVkIHVwIHRoZSBjb2RlLgoKCSogdG9vbHMvYzJtYW4ucGw6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJRml4IGZvciBBUElzIHRoYXQgZG9uJ3QgaGF2ZSBhbnkgb3JkaW5hbCAob3JkaW5hbD1AKS4KCgkqIGRsbHMvd2luc3Bvb2wvaW5mby5jOgoJU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtbGluZS5jb20+CglNYWRlIFdJTlNQT09MX0dldFByaW50ZXJEcml2ZXIgd29yayBhZ2Fpbi4KCjIwMDAtMTEtMTEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb25zb2xlL2dlbmVyaWMuYywgY29udHJvbHMvYnV0dG9uLmMsIHNlcnZlci9yZXF1ZXN0LmMsIHRvb2xzL2JpbjJyZXMuYywgdG9vbHMvbWFrZWRlcC5jLCB0b29scy93aW5lYnVpbGQvcGFyc2VyLmMsIHRvb2xzL3dpbmVidWlsZC9yZXMxNi5jLCB0b29scy93aW5lYnVpbGQvcmVzMzIuYywgdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jLCB0b29scy93bWMvbGFuZy5jLCB0b29scy93cmMvZHVtcHJlcy5jLCB0b29scy93cmMvbmV3c3RydWMuYywgdG9vbHMvd3JjL25ld3N0cnVjLmgsIHRvb2xzL3dyYy9wYXJzZXIueSwgdG9vbHMvd3JjL3JlYWRyZXMuYywgdG9vbHMvd3JjL3V0aWxzLmMsIHRvb2xzL3dyYy93cmN0eXBlcy5oLCB0b29scy93cmMvd3JpdGVyZXMuYzoKCUpvZXJnIE1heWVyIDxqbWF5ZXJAbG9wbG9mLmRlPgoJR2V0IHJpZCBvZiBzb21lIHdhcm5pbmdzIGFib3V0IHVudXNlZCB2YXJpYWJsZXMsIHNpZ25lZC91bnNpZ25lZAoJY29tcGFyaXNvbnMgYW5kIGluY29tcGxldGUgaW5pdGlhbGl6YXRpb25zLgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYywgZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsIGluY2x1ZGUvd2luZ2RpLmgsIHVuaWNvZGUvTWFrZWZpbGUuaW4sIHVuaWNvZGUvY18yODU5Mi5jLCB1bmljb2RlL2NfMjg1OTMuYywgdW5pY29kZS9jXzI4NTk0LmMsIHVuaWNvZGUvY18yODU5OS5jLCB1bmljb2RlL2NfMjg2MDAuYywgdW5pY29kZS9jXzI4NjAzLmMsIHVuaWNvZGUvY18yODYwNC5jLCB1bmljb2RlL2NfMjg2MDUuYywgdW5pY29kZS9jcG1hcC5wbCwgdW5pY29kZS9jcHRhYmxlLmM6CglOZXJpanVzIEJhbGl1bmFzIDxuZXJpanVzQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCUFkZCBuZXcgZW5jb2RpbmdzIElTTyA4ODU5LTEwIChjcDI4NjAwKSwgODg1OS0xMyAoY3AyODYwMyksIDg4NTktMTQgKGNwMjg2MDQpLAoJODg1OS0xNSAoY3AyODYwNSkuIEFkZCBMaXRodWFuaWFuIChCYWx0aWMpIGtleWJvYXJkIGxheW91dC4KCgkqIGRsbHMvY29tY3RsMzIvYW5pbWF0ZS5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglGaXhlZCBXTV9QQUlOVCBpbiBBTklNQVRFX1dpbmRvd1Byb2M7IGNhbGwgRGVmV2luZG93UHJvY0EgZm9yIGRlZmF1bHQgaGFuZGxpbmcuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgYW5vdGhlciBkZXRlY3Rpb24gb2Ygc3RyZW5ndGgtcmVkdWNlIGJ1ZyBpbiBHQ0MuCgoyMDAwLTExLTEwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogcHJvZ3JhbXMvY21kbGd0c3QvTWFrZWZpbGUuaW4sIHByb2dyYW1zL2NvbnRyb2wvTWFrZWZpbGUuaW4sIHByb2dyYW1zL25vdGVwYWQvTWFrZWZpbGUuaW4sIHByb2dyYW1zL29zdmVyc2lvbmNoZWNrL01ha2VmaWxlLmluLCBwcm9ncmFtcy9wcm9nbWFuL01ha2VmaWxlLmluLCBwcm9ncmFtcy9yZWdhcGkvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3JlZ3Rlc3QvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3VuaW5zdGFsbGVyL01ha2VmaWxlLmluLCBwcm9ncmFtcy92aWV3L01ha2VmaWxlLmluLCBwcm9ncmFtcy93Y21kL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5lbWluZS9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luaGVscC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2ludmVyL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW52ZXIvd2ludmVyLnNwZWMsIHByb2dyYW1zL2F2aXRvb2xzL01ha2VmaWxlLmluLCBwcm9ncmFtcy9hdml0b29scy9hdmlpbmZvLnNwZWMsIHByb2dyYW1zL2F2aXRvb2xzL2F2aXBsYXkuc3BlYywgcHJvZ3JhbXMvYXZpdG9vbHMvaWNpbmZvLnNwZWMsIHByb2dyYW1zL2Nsb2NrL01ha2VmaWxlLmluOgoJQnVpbGQgbW9zdCBwcm9ncmFtcyBhcyAuc28gZmlsZXMuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgcHJvZ3JhbXMvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvTWFrZWZpbGUuaW4sIHByb2dyYW1zL01ha2Vwcm9nLnJ1bGVzLmluOgoJQWRkZWQgTWFrZXByb2cucnVsZXMuaW4gY29udGFpbmluZyBydWxlcyBmb3IgYnVpbGRpbmcgV2luZWxpYgoJcHJvZ3JhbXMuCgoJKiBkbGxzL250ZGxsL2RlYnVndG9vbHMuYywgZGxscy9udGRsbC9udGRsbC5zcGVjLCBmaWxlcy9maWxlLmMsIGluY2x1ZGUvZGVidWd0b29scy5oOgoJRGltaXRyaWUgTy4gUGF1biA8ZGltaUBjcy50b3JvbnRvLmVkdT4KCVVzZSB2YXJpYWJsZSBhcmd1bWVudCBtYWNyb3Mgd2hlbiBjb21waWxpbmcgd2l0aCBnY2MuCgoJKiB0b29scy93aW5lbGF1bmNoZXIuaW46CglKZXJlbXkgV2hpdGUgPGp3aGl0ZUBjb2Rld2VhdmVycy5jb20+CglNYWtlIHdpbmVsYXVuY2hlciBzbWFydGVyIGFib3V0IGZpbmRpbmcgdGhlIFdpbmUgbGlicmFyaWVzIGFuZAoJYmluYXJpZXMuICBDaGFuZ2UgdGhlIGNvbG9yIHNjaGVtZS4gIEhhbmRsZSBsYXVuY2hlcyB3aXRoIG5vCglhcmd1bWVudHMsIGNvcnJlY3RseSBoYW5kbGUgaW52b2NhdGlvbiBhcyBhIG1pbWUtdHlwZSBoYW5kbGVyIGZyb20KCUtERS4KCgkqIG1lbW9yeS9oZWFwLmMsIGRsbHMvdXNlci9leHRpY29uLmMsIGRsbHMvdmVyc2lvbi9yZXNvdXJjZS5jLCBpbmNsdWRlL3NxbGV4dC5oLCBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW5udC5oLCBsaWJyYXJ5L2xvYWRlci5jLCBsb2FkZXIvcGVfcmVzb3VyY2UuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglVc2UgRFVNTVl4eHhOQU1FIGZvciBhbm9ueW1vdXMgc3RydWN0L3VuaW9ucy4KCgkqIGluY2x1ZGUvd2luZ2RpLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgbWlzc2luZyBwb2ludGVyIHR5cGVzOiBQeHh4IG9yIExQeHh4CglGaXhlZCB0aGUgZGVmaW5pdGlvbiBvZiBGT05URU5VTVBST0MKCUZpeGVkIHR5cG86IFRBX1JUTEVBRElORyBpcyBpbiBmYWN0IFRBX1JUTFJFQURJTkcgKHJpZ2h0IHRvIGxlZnQKCXJlYWRpbmcgSSBiZWxpZXZlKQoJQWRkZWQgbWlzc2luZyBkZWZpbml0aW9uczogUENfVFJBUEVaT0lECglVc2UgRFVNTVl4eHhOQU1FIGZvciBhbm9ueW1vdXMgc3RydWN0L3VuaW9ucyBpbiBERVZNT0RFCgoJKiBpbmNsdWRlL3dpbnVzZXIuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBzb21lIFNUTl94eHggbWFjcm9zLgoKCSogaW5jbHVkZS93aW5kZWYuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglISUNPTiBhbmQgSENVUlNPUiBzaG91bGQgYmUgaW50ZXJjaGFuZ2VhYmxlLgoKCSogaW5jbHVkZS9jb21tY3RybC5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIExQVURBQ0NFTCBhbmQgSERGX1JUTFJFQURJTkcuCgoJKiB0b29scy93aW5lbWFrZXI6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQ29udmVydCBpbmNsdWRlIHN0YXRlbWVudHMgb2Ygbm90LWZvdW5kIGZpbGVzIHRvIGxvd2VyIGNhc2UgYnkKCWRlZmF1bHQKCUFkZGVkIC0tbm8tbG93ZXItaW5jbHVkZSBvcHRpb24gdG8gb3ZlcnJpZGUgdGhlIGFib3ZlCglCZWF1dGlmaWVkIHRoZSBpbnRlcmFjdGl2ZSBtb2RlIG91dHB1dCB0byBtYWtlIGl0IGVhc2llciB0byBmb2xsb3cKCUludGVyYWN0aXZlIG1vZGU6IHN1cHBvcnQgdGhlIC0tbWZjIGFuZCAtLXdyYXAgb3B0aW9ucyBmb3IgYm90aAoJcHJvamVjdHMgYW5kIHRhcmdldHMKCUZpeGVkIHRoZSBtZmMvd3JhcCBwcm9wYWdhdGlvbiBiZXR3ZWVuIHByb2plY3QgYW5kIHRhcmdldHMgKGdvZXMgYm90aAoJd2F5cykKCUF1dG9kZXRlY3QgTUZDIGJhc2VkIHByb2plY3RzIGJ5IGxvb2tpbmcgZm9yIGFuICdzdGRhZnguKGNwcHxoKScgZmlsZQoJRG9uJ3QgcHV0IHRoZSBzdGRhZnguY3BwIGZpbGUgaW4gdGhlIGxpc3Qgb2YgZmlsZXMgdG8gY29tcGlsZSAoaXQncwoJanVzdCB0aGVyZSBmb3IgcHJlLWNvbXBpbGVkIGhlYWRlcnMsIHl1aykKCUZpeGVkIExEX0xJQlJBUllfUEFUSCB3aGVuIGxpbmtpbmcgYW4gYXBwbGljYXRpb24gd2l0aCBhIGxpYnJhcnkgZnJvbQoJdGhlIHNhbWUgbWFrZWZpbGUKCURvbid0IGZvcmdldCAnZXh0cmEnIHNvdXJjZXMgd2hlbiBsb29raW5nIGZvciBhIGZpbGUgZm9yIGNvbmZpZ3VyZS5pbgoJUmVuYW1lZCB0aGUgJy0tbm8tbWFrZWZpbGUnIG9wdGlvbiB0byAnLW5vLWdlbmVyYXRlZC1maWxlJwoKCSogZG9jdW1lbnRhdGlvbi93aW5lbWFrZXIubWFuOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCURvY3VtZW50IHRoZSAtLWxvd2VyLWluY2x1ZGUgb3B0aW9ucy4KCURvY3VtZW50IHRoZSAtLW5vLWdlbmVyYXRlZC1maWxlcyBvcHRpb25zLgoKCSogcmVsYXkzMi9idWlsdGluMzIuYzogUmVwYWlyZWQgcmVsYXkgZGVidWdnaW5nLgoKCSogZGxscy9NYWtlZGxsLnJ1bGVzLmluOgoJV2UgZG8gbm90IG5lZWQgdG8gc2V0IFNPVkVSU0lPTiBmb3IgZGxscy4KCgkqIGxpYnRlc3QvTWFrZWZpbGUuaW4sIGxpYnRlc3QvZXhwYW5kLnNwZWMsIGxpYnRlc3QvaGVsbG8uc3BlYywgbGlidGVzdC9oZWxsbzIuc3BlYywgbGlidGVzdC9oZWxsbzMuc3BlYywgbGlidGVzdC9oZWxsbzQuYywgbGlidGVzdC9oZWxsbzQuc3BlYywgbGlidGVzdC9oZWxsbzUuc3BlYywgbGlidGVzdC9uZXcuc3BlYywgbGlidGVzdC9yb2xleC5zcGVjLCBsaWJ0ZXN0L3ZhcnRlc3QuYywgbGlidGVzdC92YXJ0ZXN0LnNwZWMsIGxpYnRlc3Qvdm9saW5mby5zcGVjOgoJQnVpbGQgdGVzdCBwcm9ncmFtcyBhcyAuc28gZmlsZXMuIEFkZGVkIG1pc3NpbmcgaW1wb3J0cy4KCgkqIGluY2x1ZGUvd2luZS9saWJyYXJ5LmgsIGxpYnJhcnkvbG9hZGVyLmMsIHNjaGVkdWxlci9wcm9jZXNzLmM6CglBZGRlZCBzdXBwb3J0IGZvciBsb2FkaW5nIGEgV2luZWxpYiBhcHAgbGlua2VkIGFzIGEgLnNvIGZyb20gdGhlIHdpbmUKCWxhdW5jaGVyLCBiYXNlZCBvbiB0aGUgdmFsdWUgb2YgYXJndlswXS4KCgkqIGRsbHMvTWFrZWRsbC5ydWxlcy5pbiwgZGxscy9udGRsbC9NYWtlZmlsZS5pbiwgZGxscy90dHlkcnYvTWFrZWZpbGUuaW46CglEb24ndCBsaW5rIGxpYndpbmVfdW5pY29kZSBpbnRvIGFsbCBkbGxzLgoKCSogcHJvZ3JhbXMvY2xvY2svbGFuZ3VhZ2UuYywgcHJvZ3JhbXMvY2xvY2svbGFuZ3VhZ2UuaCwgcHJvZ3JhbXMvY2xvY2svbGljZW5zZS5jLCBwcm9ncmFtcy9jbG9jay9saWNlbnNlLmgsIHByb2dyYW1zL2Nsb2NrL21haW4uYywgcHJvZ3JhbXMvY2xvY2svbWFpbi5oLCBwcm9ncmFtcy9ub3RlcGFkL2RpYWxvZy5jLCBwcm9ncmFtcy9ub3RlcGFkL2xhbmd1YWdlLmMsIHByb2dyYW1zL25vdGVwYWQvbGFuZ3VhZ2UuaCwgcHJvZ3JhbXMvbm90ZXBhZC9saWNlbnNlLmMsIHByb2dyYW1zL25vdGVwYWQvbGljZW5zZS5oLCBwcm9ncmFtcy9ub3RlcGFkL21haW4uYywgcHJvZ3JhbXMvbm90ZXBhZC9tYWluLmgsIHByb2dyYW1zL3dpbmhlbHAvd2luaGVscC5jOgoJRml4ZWQgbGFuZ3VhZ2UgaGFuZGxpbmcuIFJlbW92ZWQgc29tZSBkZXBlbmRlbmNpZXMgb24gV2luZSBpbnRlcm5hbHMuCgoJKiB3aW5lLmluaTogQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBhbiBleHBsYW5hdGlvbiBmb3IgdGhlIGRpcmVjdG9yeSBzeW1saW5rIHN0dWZmLgoKCSogZGxscy93aW5zcG9vbC9pbmZvLmM6CglTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1saW5lLmNvbT4KCUNvcnJlY3RlZCB1c2VkIHJlZ2lzdHJ5IGtleS4KCgkqIGRsbHMvd2luaW5ldC9odHRwLmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglJbml0aWFsaXplIG5Tb2NrZXRGRCB0byBJTlZBTElEX1NPQ0tFVC4KCjIwMDAtMTEtMDkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBwcm9ncmFtcy91bmluc3RhbGxlci91bmluc3RhbGxlci5zcGVjLCBwcm9ncmFtcy92aWV3L3ZpZXcuc3BlYywgcHJvZ3JhbXMvd2NtZC93Y21kLnNwZWMsIHByb2dyYW1zL3dpbmVtaW5lL3dpbmVtaW5lLnNwZWMsIHByb2dyYW1zL3dpbmhlbHAvd2luaGVscC5zcGVjLCBwcm9ncmFtcy93aW52ZXIvd2ludmVyLnNwZWMsIGRlYnVnZ2VyL3dpbmVkYmcuc3BlYywgcHJvZ3JhbXMvY2xvY2svY2xvY2suc3BlYywgcHJvZ3JhbXMvY21kbGd0c3QvY21kbGd0c3Quc3BlYywgcHJvZ3JhbXMvY29udHJvbC9jb250cm9sLnNwZWMsIHByb2dyYW1zL25vdGVwYWQvbm90ZXBhZC5zcGVjLCBwcm9ncmFtcy9vc3ZlcnNpb25jaGVjay9vc3ZlcnNpb25jaGVjay5zcGVjLCBwcm9ncmFtcy9wcm9nbWFuL3Byb2dtYW4uc3BlYywgcHJvZ3JhbXMvcmVnYXBpL3JlZ2FwaS5zcGVjLCBwcm9ncmFtcy9yZWd0ZXN0L3JlZ3Rlc3Quc3BlYzoKCUFkZGVkIHNvbWUgbWlzc2luZyBpbXBvcnRzLgoKCSogTWFrZS5ydWxlcy5pbiwgTWFrZWZpbGUuaW4sIHRvb2xzL3dpbmVidWlsZC9idWlsZC5oLCB0b29scy93aW5lYnVpbGQvaW1wb3J0LmMsIHRvb2xzL3dpbmVidWlsZC9tYWluLmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYzoKCUFkZGVkIHN1cHBvcnQgaW4gd2luZWJ1aWxkIGZvciByZXNvbHZpbmcgZnVuY3Rpb24gaW1wb3J0cyAoLXN5bSBvcHRpb24pLgoJQWRkZWQgLUwgb3B0aW9uIGZvciBsb2NhdGluZyBpbXBvcnRlZCBkbGxzLgoJQ2hhbmdlZCBnZW5lcmF0ZWQgZXhlIGluaXQgY29kZSB0byB1c2UgX193aW5lX2dldF9tYWluX2FyZ3MuCgoJKiBkbGxzL250ZGxsL250ZGxsLnNwZWMsIG1pc2Mvb3B0aW9ucy5jOgoJQWRkZWQgX193aW5lX2dldF9tYWluX2FyZ3MgdG8gcmV0cmlldmUgY29tbWFuZC1saW5lIGFyZ3VtZW50cyBmb3IgdGhlCglhcHBsaWNhdGlvbi4KCgkqIGxvYWRlci9lbGZkbGwuYzoKCURvbid0IHN0cmlwIHRoZSBsaWJyYXJ5IGV4dGVuc2lvbiBpZiBpdCdzIG5vdCAiLmRsbCIuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCUZpeGVkIE5ldEJTRCBkbGwgY2hlY2suCglBZGRlZCBjaGVjayBmb3IgLUJzeW1ib2xpYy4KCUZpeGVkIExEU0hBUkVEIGRlZmluaXRpb24gdG8gc3VwcG9ydCB1bmRlZmluZWQgU09OQU1FLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMi5oLCBkbGxzL2NvbWN0bDMyL2hlYWRlci5jLCBkbGxzL2NvbWN0bDMyL3JzcmMucmM6CglFcmljIEtvaGwgPGVrb2hsQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIGhlYWRlciBjb250cm9sIGN1cnNvcnMgYW5kIGRyYWcgbGlzdCBhcnJvdyBpY29uLgoKCSogZGxscy93aW5lcHMvcnNyYy5yYywgZGxscy93aW5lcHMvd3BzX0VuLnJjLCBkbGxzL3dpbmVwcy93cHNfUnUucmMsIGRsbHMvd2luZXBzL3dwc19Tay5yYzoKCURtaXRyeSBUaW1vc2hrb3YgPGR0aW1vc2hrb3ZAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgUnVzc2lhbiByZXNvdXJjZXMgdG8gdGhlIFBvc3RzY3JpcHQgZHJpdmVyLgoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGR0aW1vc2hrb3ZAY29kZXdlYXZlcnMuY29tPgoJTWFrZSBhIGNvcHkgb2YgdGhlIGRpYWxvZyByZXNvdXJjZSBiZWZvcmUgY29ycmVjdGluZyBzdHlsZXMuCgoyMDAwLTExLTA4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS93aW5lL2xpYnJhcnkuaCwgbGlicmFyeS9sb2FkZXIuYywgcmVsYXkzMi9idWlsdGluMzIuYzoKCURvIGJ1aWx0aW4gbW9kdWxlcyBmaXh1cHMgaW4gbGlicmFyeS9sb2FkZXIuYyBiZWZvcmUgY2FsbGluZyB0aGUKCWxvYWRfZGxsIGNhbGxiYWNrLgoKCSogaWYxNjMyL3RodW5rLmMsIGluY2x1ZGUvY2FsbGJhY2suaCwgaW5jbHVkZS90YXNrLmgsIGxvYWRlci9kb3MvZG9zdm0uYywgbG9hZGVyL21vZHVsZS5jLCBsb2FkZXIvdGFzay5jLCBtaXNjZW11L21haW4uYywgb2JqZWN0cy9wYWxldHRlLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci90aHJlYWQuYywgd2luMzIvZXhjZXB0LmMsIGRsbHMvZ2RpL3ByaW50ZHJ2LmMsIGRsbHMva2VybmVsL2NvbW0uYzoKCUNoZWNrIGFsbCBDYWxsb3V0cyBmdW5jdGlvbiBwb2ludGVycyBmb3IgTlVMTCBiZWZvcmUgdXNpbmcgdGhlbS4KCURvbid0IGxvYWQgVVNFUiBkbGwgaWYgbm90IG5lZWRlZCBieSB0aGUgYXBwbGljYXRpb24uCgoJKiBkbGxzL2NydGRsbC9jcnRkbGwuaCwgZGxscy9jcnRkbGwvY3J0ZGxsLnNwZWMsIGRsbHMvY3J0ZGxsL2NydGRsbF9tYWluLmMsIGRsbHMvY3J0ZGxsL2Rpci5jLCBkbGxzL2NydGRsbC9leGl0LmMsIGRsbHMvY3J0ZGxsL2ZpbGUuYywgZGxscy9jcnRkbGwvbWJzdHJpbmcuYywgZGxscy9jcnRkbGwvbWVtb3J5LmMsIGRsbHMvY3J0ZGxsL3NwYXduLmMsIGRsbHMvY3J0ZGxsL3N0cmluZy5jLCBkbGxzL2NydGRsbC90aW1lLmMsIGRsbHMvY3J0ZGxsL3djc3RyaW5nLmMsIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9jcnRkbGwuYXBpLCBkbGxzL2NydGRsbC9NYWtlZmlsZS5pbjoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CgktIEltcGxlbWVudGVkIDczIENSVCBmdW5jdGlvbnMKCS0gUmVpbXBsZW1lbnRlZCBmaWxlIEkvTyB1c2luZyBXaW4zMiBjYWxscwoJLSBTZXQgZXJybm8vZG9zZXJybm8gaW4gbW9zdCBjYWxscwoKCSogZGxscy93aW5pbmV0L2Z0cC5jOgoJR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglBZGQgbWlzc2luZyAjaW5jbHVkZSA8bmV0aW5ldC9pbl9zeXN0bS5oPiBhbmQgI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4uCgoJKiBwcm9ncmFtcy93aW5lbWluZS9tYWluLmM6CglBZGRlZCBtaWRkbGUgbW91c2UgYnV0dG9uIGhhbmRsaW5nLgoKCSogZGxscy91c2VyLy5jdnNpZ25vcmU6IFJlbW92ZWQgLnMgZmlsZXMuCgoJKiBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL2NvbWNhdC5oLCBpbmNsdWRlL3JwYy5oLCBpbmNsdWRlL3JwY2RjZS5oLCBpbmNsdWRlL3JwY2RjZXAuaCwgaW5jbHVkZS9ycGNuZHIuaCwgaW5jbHVkZS93dHlwZXMuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglNb3ZlZCB0aGluZ3MgdG8gdGhlIHByb3BlciBycGN4eHguaCBoZWFkZXIuCglBZGRlZCBzb21lIHR5cGUgZGVmaW5pdGlvbnMgdXNlZCBieSB0aGUgTUZDLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGdicm93c2VyLmMsIGRsbHMvZGRyYXcvZGRyYXdfcHJpdmF0ZS5oLCBkbGxzL2RwbGF5eC9kcGNsYXNzZmFjdG9yeS5jLCBkbGxzL29sZTMyL21vbmlrZXIuYywgZGxscy9zaGVsbDMyL2ZvbGRlcnMuYywgZGxscy9zaGVsbDMyL3NobHZpZXcuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglXZSBtdXN0IGluY2x1ZGUgd2luZGVmLmggYmVmb3JlIHd0eXBlcy5oIChkaXJlY3RseSBvciBpbmRpcmVjdGx5KS4KCgkqIGluY2x1ZGUvd2ludXNlci5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIERNX1JFUE9TSVRJT04uCgoJKiBpbmNsdWRlL3dpbmJhc2UuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglXZSBtdXN0IGluY2x1ZGUgc3RkYXJnLmguCglBZGRlZCBhIGZldyBtaXNzaW5nIGV4Y2VwdGlvbiByZWxhdGVkIHR5cGVzLgoKCSogaW5jbHVkZS93aW5udC5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVdlIG11c3QgaW5jbHVkZSBjdHlwZS5oIHNvIHRoYXQgYXBwbGljYXRpb25zIGdldCBpc2FsbnVtICYgY28uCgoJKiBpbmNsdWRlL2NvbW1kbGcuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBDQ19TT0xJRENPTE9SIGFuZCBDQ19BTllDT0xPUi4KCgkqIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvZG9zZXhlLmgsIGluY2x1ZGUvbW9kdWxlLmgsIGxpYnJhcnkvTWFrZWZpbGUuaW4sIGxpYnJhcnkvZGVidWcuYywgbGlicmFyeS9sb2FkZXIuYywgbG9hZGVyL2Rvcy9tb2R1bGUuYywgbG9hZGVyL21vZHVsZS5jLCBsb2FkZXIvcGVfaW1hZ2UuYywgbWlzY2VtdS9tYWluLmMsIHJlbGF5MzIvYnVpbHRpbjMyLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYzoKCU1vdmVkIGJ1aWx0aW4gZGxsIHJlZ2lzdHJhdGlvbiB0byBsaWJ3aW5lLgoJQ2hhbmdlZCBwcm9jZXNzIGluaXRpYWxpemF0aW9uIHRvIG5vdCBsb2FkIGltcG9ydGVkIGRsbHMgdG9vIGVhcmx5LgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudGVkIFZLX1BSSU9SIGFuZCBWS19ORVhUIHByb2Nlc3NpbmcgKG1lcmdlZCBmcm9tIENvcmVsIHRyZWUpLgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglUb1VuaWNvZGU6IGlnbm9yZSBDVFJMK251bWJlciBrZXlzdHJva2VzLgoKCSogaW5jbHVkZS93aW5lL2xpYnJhcnkuaCwgaW5jbHVkZS93aW5lL3BvcnQuaCwgbGlicmFyeS9wb3J0LmMsIG1lbW9yeS92aXJ0dWFsLmMsIG1pc2Mvb3B0aW9ucy5jOgoJQWRkZWQgbmV3IGxpYnJhcnkuaCBoZWFkZXIgZm9yIGxpYndpbmUgZGVmaW5pdGlvbnMuCglBZGRlZCBnZXRwYWdlc2l6ZSgpIGFuZCB3aW5lX2Fub25fbW1hcCgpIHBvcnRhYmlsaXR5IGZ1bmN0aW9ucy4KCjIwMDAtMTEtMDcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzY2hlZHVsZXIvcHRocmVhZC5jOgoJcHRocmVhZF9hdGZvcms6IGRvbid0IGNhbGwgY3JpdGljYWwgc2VjdGlvbiBmdW5jdGlvbnMgYmVmb3JlCglpbml0aWFsaXphdGlvbiBpcyBkb25lLgoKCSogbWVtb3J5L3ZpcnR1YWwuYzoKCUZpeGVkIDAvLTEgbWl4dXAgZm9yIGluZGljYXRpbmcgbm8gbWFwcGluZyBoYW5kbGUuCgoJKiBjb250cm9scy91aXRvb2xzLmMsIGluY2x1ZGUvdGNoYXIuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRml4ZWQgdHlwb3MgaW4gY29tbWVudHMuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMyLmgsIGRsbHMvY29tY3RsMzIvY29tY3RsX0RlLnJjLCBkbGxzL2NvbWN0bDMyL2NvbWN0bF9Fbi5yYywgZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglFcmljIEtvaGwgPGVrb2hsQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudGVkIHRvb2xiYXIgY3VzdG9taXphdGlvbiBkaWFsb2cuCgoJKiBkbGxzL2NvbWN0bDMyL3VwZG93bi5jOgoJRXJpYyBLb2hsIDxla29obEBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnRlZCBuZXcgbWVzc2FnZXMuCgoJKiBkZWJ1Z2dlci9tc2MuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGltbWQxLmluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJLSBUYWtlIE9NQVAgcmVjb3JkcyBpbnRvIGFjY291bnQgdG8gY29ycmVjdCBzeW1ib2wgYWRkcmVzc2VzLgoJLSBVbmRlcnN0YW5kIENvZGVWaWV3IGRhdGEgZW1iZWRkZWQgaW4gdGhlIFBFIGZpbGUgaXRzZWxmLgoJLSBVbmRlcnN0YW5kIE5CMTEgc2lnbmF0dXJlIENvZGVWaWV3IGRhdGEuCgktIE5vIG1vcmUgYm9ndXMgJ3RpbWVzdGFtcCBtaXNtYXRjaCcgZXJyb3JzLgoJLSBHZW5lcmFsIGNsZWFudXAgLyByZW1vdmFsIG9mIGR1cGxpY2F0ZSBjb2RlLgoKCSogaW5jbHVkZS93aW5udC5oOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW1tZDEuaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBZGRlZCBtaXNzaW5nIElNQUdFX0RFQlVHX01JU0MgZGVmaW5pdGlvbi4KCgkqIGRsbHMvd2luaW5ldC9mdHAuYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCVNlbmQgdGhlIGxvY2FsIGlwIGFkZHJlc3Mgd2l0aCB0aGUgUE9SVCBjb21tYW5kIGFuZCBub3QgdGhhdCBvZiB0aGUKCXNlcnZlci4KCUZpeCBoYW5kbGluZyBvZiBtdWx0aS1saW5lIHJlc3BvbnNlcy4KCVJlYWQgYSByZXNwb25zZSBhZnRlciB0aGUgU1RPUiBjb21tYW5kLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudGVkIHRoZSBSZWRyYXdJdGVtcyBtZXNzYWdlIGZvciBhIGxpc3R2aWV3LgoKCSogZGxscy93aW5lcHMvYWZtLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCU5ldyBwYXRoIGZvciBBRk0gZG9jdW1lbnRhdGlvbiBvbiB0aGUgbmV0LgoKCSogdG9vbHMvd2luZW1ha2VyOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCB0aGUgaW5jbHVkZSBwYXRoIGhhbmRsaW5nIGluIGdldF9yZWFsX2luY2x1ZGVfbmFtZQoJTW9kaWZpZWQgZ2V0X3JlYWxfaW5jbHVkZV9uYW1lIHNvIHRoYXQgaXQgY2FuIGZvbGxvdyBhbiBpbmNsdWRlIHBhdGgKCXN0YXJ0aW5nIHdpdGggJChUT1BTUkNESVIpCglJbmRlbnQgdGhlIGRlYnVnIG1lc3NhZ2VzIGEgYml0IG1vcmUgc28gdGhhdCB3aW5lbWFrZXIncyBpcyBzdGlsbAoJcmVhZGFibGUgd2hlbiB0aGV5IGFyZSBvbgoJVGhlIEFUTF9JTkNMVURFX1JPT1QgdmFyaWFibGUgd2FzIHNldCB3cm9uZyAoY29uZmlndXJlLmluKQoJVGhlIE1GQyBpbmNsdWRlIHBhdGggbXVzdCBjb250YWluIHRoZSBwYXRoIHRvIHRoZSBBVEwgaGVhZGVycwoJKGNvbmZpZ3VyZS5pbikKCgkqIGRsbHMvY29tY3RsMzIvdGFiLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVVzZSBEcmF3Rm9jdXNSZWN0IHRvIGRyYXcgdGhlIGZvY3VzIHJlY3RhbmdsZS4KCgkqIGRsbHMvd2luYXNwaS9hc3BpLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gZm9ydGlmeSBBU1BJIC9wcm9jIGZpbGUgcGFyc2luZyAoU0NTSV9nZXRwcm9jZW50cnkoKSkgYWdhaW5zdAoJICBDRC1ST00gZHJpdmVzIHRoYXQgYXJlIGRvaW5nIG1hZCB0aGluZ3Mgd2l0aCBzcGFjZXMKCS0gYWRkIEVSUigpcyBpbiBjYXNlIG9mIHBhcnNpbmcgcHJvYmxlbXMKCgkqIGluY2x1ZGUvYml0bWFwcy93aW5lX3NtYWxsLnhwbToKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglBZGRlZCAxNngxNiB3aW5lIGxvZ28uCgoyMDAwLTExLTA2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS93aW5tbS5zcGVjOgoJUmVtb3ZlZCBTVUJESVJTIGluIHdpbm1tIE1ha2VmaWxlLgoKCSogZGxscy9zZXR1cGFwaS9zZXR1cGFwaS5zcGVjLCBkbGxzL3NldHVwYXBpL3N0dWJzLmMsIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvc2V0dXBhcGkuaDoKCUphbWVzIEhhdGhld2F5IDxqYW1lc0BtYWNhZGFtaWFuLmNvbT4KCUFkZGVkIHN0dWJzIGFuZCBzZXR1cGFwaS5oLgoKCSogZGxscy9jb21jdGwzMi9jb21ib2V4LmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUNCRU1fU0VUSVRFTVcgZG9uZSBieSBleGFtcGxlIGZyb20gU0VUSVRFTUEsIGNvbnZlcnRlZCBTRVRJVEVNQSB0byB1c2UKCWl0LgoKCSogZG9jdW1lbnRhdGlvbi9NYWtlZmlsZS5pbiwgZG9jdW1lbnRhdGlvbi93aW5lbWFrZXIubWFuOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVdpbmVtYWtlcidzIG1hbiBwYWdlIGluaXRpYWwgcmVsZWFzZS4KCgkqIHRvb2xzL3dyYy9NYWtlZmlsZS5pbiwgZGVidWdnZXIvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmhlbHAvTWFrZWZpbGUuaW4sIHRvb2xzL21ha2VkZXAuYywgdG9vbHMvd21jL01ha2VmaWxlLmluOgoJQmV0dGVyIGVycm9yIG1lc3NhZ2Ugd2hlbiBhbiBpbmNsdWRlIGZpbGUgaXMgbm90IGZvdW5kIGJ5IG1ha2VkZXAuCglBZGRlZCBzdXBwb3J0IGZvciAubWMgZXh0ZW5zaW9uLgoJRG8gbm90IHRyeSB0byBvcGVuICoudGFiLmggYW5kICoubWMucmMgaW5jbHVkZSBmaWxlcy4KCgkqIGRsbHMvdXNlci9NYWtlZmlsZS5pbjoKCUFkZGVkIG1pc3NpbmcgZGVwZW5kZW5jeSBmb3IgMTYtYml0IHJlc291cmNlIGZpbGVzLgoKCSogTWFrZS5ydWxlcy5pbiwgZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL2tlcm5lbC5yYywgZGxscy9rZXJuZWwvbWVzc2FnZXMvLmN2c2lnbm9yZToKCVVzZSAubWMucmMgZXh0ZW5zaW9uIGZvciByYyBmaWxlcyBnZW5lcmF0ZWQgYnkgdGhlIG1lc3NhZ2UgY29tcGlsZXIuCgoJKiBsb2FkZXIvZWxmLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCUdldCBFTEZfTG9hZExpYnJhcnlFeEEgYmFjayBpbnRvIGEgd29ya2luZyBzdGF0ZS4KCgkqIGRsbHMvd2luc3Bvb2wvaW5mby5jOgoJU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtbGluZS5jb20+CglFbmFibGUgdGhlIGZ1bmN0aW9ucyBBZGRQcmludGVyVywgV0lOU1BPT0xfR2V0UHJpbnRlckRyaXZlciwKCUFkZFByaW50ZXJEcml2ZXJBLCBXSU5TUE9PTF9FbnVtUHJpbnRlckRyaXZlcnMgdG8gZGlzdGluZ3Vpc2ggdGhlCglyZWdpc3RyeSBlbnRyeXMgb2YgV2luOVs1OF0gYW5kIFdpbk5UIHByaW50ZXIgZHJpdmVycy4KCgkqIGNvbnRyb2xzL21lbnUuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJVGFrZSBpbnRvIGFjY291bnQgdGhlIHN1bmtlbiBib3JkZXIgZm9yIFdpbjk4IGxvb2suCglMZWF2ZSBhIDEgcGl4ZWwgZ2FwIHRvIHRoZSBsZWZ0IG9mIG1lbnUgYml0bWFwIGl0ZW1zIGZvciBzeW1ldHJ5IChhbmQKCWJlY2F1c2UgV2luOXggZG9lcyBpdCkuCglMZWF2ZSBhIDEgcGl4ZWwgZ2FwIGFib3ZlIG1lbnUgYmFyIGl0ZW1zIGZvciBzeW1ldHJ5IChhbmQgYmVjYXVzZQoJV2luOXggZG9lcyBpdCkuCgoyMDAwLTExLTA1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9kaW5wdXQvTWFrZWZpbGUuaW4sIGRsbHMvZGlucHV0L2RldmljZS5jLCBkbGxzL2RpbnB1dC9kZXZpY2VfcHJpdmF0ZS5oLCBkbGxzL2RpbnB1dC9kaW5wdXRfbWFpbi5jLCBkbGxzL2RpbnB1dC9kaW5wdXRfcHJpdmF0ZS5oLCBkbGxzL2RpbnB1dC9qb3lzdGljay9saW51eC5jLCBkbGxzL2RpbnB1dC9rZXlib2FyZC9tYWluLmMsIGRsbHMvZGlucHV0L21vdXNlL21haW4uYywgaW5jbHVkZS9kaW5wdXQuaCwgY29uZmlndXJlLCBjb25maWd1cmUuaW46CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSByZW9yZ2FuaXplZCBESW5wdXQgRExMCgktIGFkZGVkIHN0dWJiaW5nIGZvciBESW5wdXQgN2EKCS0gJ2ZpeGVkJyB0aGUgbW91c2UgcHJvYmxlbSBpbiBGYWxsb3V0CgoJKiBkbGxzL29sZTMyLy5jdnNpZ25vcmUsIGRsbHMvb2xlMzIvTWFrZWZpbGUuaW4sIGRsbHMvb2xlMzIvb2xlMi5jLCBkbGxzL29sZTMyL29sZTMyLnNwZWMsIGRsbHMvb2xlMzIvb2xlMzJfbWFpbi5jLCBkbGxzL29sZTMyL29sZTMyX21haW4uaCwgZGxscy9vbGUzMi9vbGUzMnJlcy5yYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIERuRCBjdXJzb3JzIGFzIG9sZTMyIHJlc291cmNlcy4KCgkqIGluY2x1ZGUvc3B5LmgsIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL3NweS5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglBZGRlZCB0aGUgYWJpbGl0eSB0byBzZWUgbmFtZXMgb2YgdGhlIHZpcnR1YWwga2V5IGNvZGVzLgoKCSogTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCB0b29scy8uY3ZzaWdub3JlLCB0b29scy9NYWtlZmlsZS5pbiwgdG9vbHMvd2luZWxhdW5jaGVyLmluOgoJSmVyZW15IFdoaXRlIDxqd2hpdGVAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgYSB3aW5lbGF1bmNoZXIgc2hlbGwgc2NyaXB0IHdoaWNoIG1ha2VzIHRoZSBwcm9jZXNzIG9mIHJ1bm5pbmcKCVdpbmUgYSBsaXR0bGUgbmljZXIgZm9yIGFuIGVuZCB1c2VyLiAgVGhlIGludGVudCBvZiB3aW5lbGF1bmNoZXIgaXMgdG8KCWJlIHVzZWQgaW5zaWRlIG9mIGEgZGlzdHJpYnV0aW9uIHBhY2thZ2UuCgoJKiB0b29scy9NYWtlZmlsZS5pbiwgdG9vbHMvd2luZW1ha2VyOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCU5ldyBzY3JpcHQgZm9yIHBvcnRpbmcgV2luZG93cyBzb3VyY2UgY29kZSB0byBXaW5lTGliLgoKCSogZGxscy94MTFkcnYveDExZHJ2LnNwZWMsIGRsbHMvd2lubW0vbWNpYW5pbS9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS9tY2lhbmltL21jaWFuaW0uZHJ2LnNwZWMsIGRsbHMvd2lubW0vbWNpYXZpL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL21jaWF2aS9tY2lhdmkuZHJ2LnNwZWMsIGRsbHMvd2lubW0vbWNpY2RhL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL21jaWNkYS9tY2ljZGEuZHJ2LnNwZWMsIGRsbHMvd2lubW0vbWNpc2VxL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL21jaXNlcS9tY2lzZXEuZHJ2LnNwZWMsIGRsbHMvd2lubW0vbWNpd2F2ZS9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS9tY2l3YXZlL21jaXdhdmUuZHJ2LnNwZWMsIGRsbHMvd2lubW0vbWlkaW1hcC9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS9taWRpbWFwL21pZGltYXAuZHJ2LnNwZWMsIGRsbHMvd2lubW0vd2F2ZW1hcC9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS93YXZlbWFwL21zYWNtLmRydi5zcGVjLCBkbGxzL3dpbm1tL3dpbmVvc3MvTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vd2luZW9zcy93aW5lb3NzLmRydi5zcGVjLCBkbGxzL3dpbnNvY2svd3MyXzMyLnNwZWMsIGRsbHMvd2luc3Bvb2wvTWFrZWZpbGUuaW4sIGRsbHMvd2luc3Bvb2wvd2luc3Bvb2wuZHJ2LnNwZWMsIGRsbHMvd3NvY2szMi9NYWtlZmlsZS5pbiwgZGxscy93c29jazMyL3dzb2NrMzIuc3BlYywgZGxscy92ZXJzaW9uL01ha2VmaWxlLmluLCBkbGxzL3ZlcnNpb24vdmVyc2lvbi5zcGVjLCBkbGxzL3dpbjMycy9NYWtlZmlsZS5pbiwgZGxscy93aW4zMnMvdzMyc2tybmwuc3BlYywgZGxscy93aW5hc3BpL01ha2VmaWxlLmluLCBkbGxzL3dpbmFzcGkvd25hc3BpMzIuc3BlYywgZGxscy93aW5lcHMvTWFrZWZpbGUuaW4sIGRsbHMvd2luZXBzL3dpbmVwcy5zcGVjLCBkbGxzL3dpbmluZXQvTWFrZWZpbGUuaW4sIGRsbHMvd2luaW5ldC93aW5pbmV0LnNwZWMsIGRsbHMvd2lubW0vTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vam95c3RpY2svTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vam95c3RpY2svam95c3RpY2suZHJ2LnNwZWMsIGRsbHMvd2lubW0vd2lubW0uc3BlYywgZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYywgZGxscy90YXBpMzIvdGFwaTMyLnNwZWMsIGRsbHMvdHR5ZHJ2L01ha2VmaWxlLmluLCBkbGxzL3R0eWRydi90dHlkcnYuc3BlYywgZGxscy91cmxtb24vTWFrZWZpbGUuaW4sIGRsbHMvdXJsbW9uL3VybG1vbi5zcGVjLCBkbGxzL3VzZXIvdXNlcjMyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsIGRsbHMvc2hsd2FwaS9NYWtlZmlsZS5pbiwgZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zZXJpYWx1aS9zZXJpYWx1aS5zcGVjLCBkbGxzL3NldHVwYXBpL01ha2VmaWxlLmluLCBkbGxzL3NldHVwYXBpL3NldHVwYXBpLnNwZWMsIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwgZGxscy9vbGVzdnIvb2xlc3ZyMzIuc3BlYywgZGxscy9vcGVuZ2wzMi9vcGVuZ2wzMi5zcGVjLCBkbGxzL3BzYXBpL01ha2VmaWxlLmluLCBkbGxzL3BzYXBpL3BzYXBpLnNwZWMsIGRsbHMvcmFzYXBpMzIvcmFzYXBpMzIuc3BlYywgZGxscy9yaWNoZWRpdC9NYWtlZmlsZS5pbiwgZGxscy9yaWNoZWRpdC9yaWNoZWQzMi5zcGVjLCBkbGxzL3JwY3J0NC9ycGNydDQuc3BlYywgZGxscy9zZXJpYWx1aS9NYWtlZmlsZS5pbiwgZGxscy9semV4cGFuZC9NYWtlZmlsZS5pbiwgZGxscy9semV4cGFuZC9sejMyLnNwZWMsIGRsbHMvbXByL01ha2VmaWxlLmluLCBkbGxzL21wci9tcHIuc3BlYywgZGxscy9tc2FjbS9NYWtlZmlsZS5pbiwgZGxscy9tc2FjbS9tc2FjbTMyLnNwZWMsIGRsbHMvbXN2aWRlby9NYWtlZmlsZS5pbiwgZGxscy9tc3ZpZGVvL21zdmZ3MzIuc3BlYywgZGxscy9vZGJjMzIvb2RiYzMyLnNwZWMsIGRsbHMvb2xlMzIvb2xlMzIuc3BlYywgZGxscy9vbGVhdXQzMi9NYWtlZmlsZS5pbiwgZGxscy9vbGVhdXQzMi9vbGVhdXQzMi5zcGVjLCBkbGxzL29sZWNsaS9NYWtlZmlsZS5pbiwgZGxscy9vbGVjbGkvb2xlY2xpMzIuc3BlYywgZGxscy9vbGVkbGcvb2xlZGxnLnNwZWMsIGRsbHMvb2xlcHJvMzIvTWFrZWZpbGUuaW4sIGRsbHMvb2xlcHJvMzIvb2xlcHJvMzIuc3BlYywgZGxscy9jb21tZGxnL2NvbWRsZzMyLnNwZWMsIGRsbHMvY3J0ZGxsL2NydGRsbC5zcGVjLCBkbGxzL2RkcmF3L2RkcmF3LnNwZWMsIGRsbHMvZGlucHV0L01ha2VmaWxlLmluLCBkbGxzL2RpbnB1dC9kaW5wdXQuc3BlYywgZGxscy9kcGxheXgvTWFrZWZpbGUuaW4sIGRsbHMvZHBsYXl4L2RwbGF5eC5zcGVjLCBkbGxzL2Rzb3VuZC9NYWtlZmlsZS5pbiwgZGxscy9kc291bmQvZHNvdW5kLnNwZWMsIGRsbHMvZ2RpL01ha2VmaWxlLmluLCBkbGxzL2dkaS9nZGkzMi5zcGVjLCBkbGxzL2ljbXAvTWFrZWZpbGUuaW4sIGRsbHMvaWNtcC9pY21wLnNwZWMsIGRsbHMvaW1hZ2VobHAvTWFrZWZpbGUuaW4sIGRsbHMvaW1hZ2VobHAvaW1hZ2VobHAuc3BlYywgZGxscy9pbW0zMi9NYWtlZmlsZS5pbiwgZGxscy9pbW0zMi9pbW0zMi5zcGVjLCBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBkbGxzL01ha2VkbGwucnVsZXMuaW4sIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvYWR2YXBpMzIvYWR2YXBpMzIuc3BlYywgZGxscy9hdmlmaWwzMi9NYWtlZmlsZS5pbiwgZGxscy9hdmlmaWwzMi9hdmlmaWwzMi5zcGVjLCBkbGxzL2NvbWN0bDMyL01ha2VmaWxlLmluLCBkbGxzL2NvbWN0bDMyL2NvbWN0bDMyLnNwZWM6CglEZWNsYXJlIGRlYnVnIGNoYW5uZWxzIGluIGFsbCBkbGxzIHRoYXQgbmVlZCB0aGVtOyBhZGRlZCBpbXBvcnRzIG9mCgludGRsbCB3aGVyZSBuZWNlc3NhcnkuCgoJKiBkbGxzL250ZGxsL01ha2VmaWxlLmluLCBkbGxzL250ZGxsL2RlYnVndG9vbHMuYywgZGxscy9udGRsbC9udGRsbC5zcGVjLCBpbmNsdWRlL2RlYnVnZGVmcy5oLCBpbmNsdWRlL2RlYnVndG9vbHMuaCwgaW5jbHVkZS9tYWluLmgsIGxpYnJhcnkvTWFrZWZpbGUuaW4sIGxpYnJhcnkvZGVidWcuYywgbWlzYy9NYWtlZmlsZS5pbiwgbWlzYy9kZWJ1Z3N0ci5jLCBtaXNjL21haW4uYywgbWlzYy9vcHRpb25zLmMsIHJlbGF5MzIvYnVpbHRpbjMyLmMsIHRvb2xzL2ZpbmRfZGVidWdfY2hhbm5lbHMsIHRvb2xzL21ha2VfZGVidWc6CglOZXcgZGVidWcgY2hhbm5lbCBtZWNoYW5pc20gYWxsb3dpbmcgZGVjZW50cmFsaXplZCBjaGFubmVsCglkZWNsYXJhdGlvbnMuCgoJKiB0b29scy93aW5lYnVpbGQvYnVpbGQuaCwgdG9vbHMvd2luZWJ1aWxkL21haW4uYywgdG9vbHMvd2luZWJ1aWxkL3BhcnNlci5jLCB0b29scy93aW5lYnVpbGQvc3BlYzMyLmM6CglBZGRlZCBkZWJ1Z19jaGFubmVscyBzdXBwb3J0LgoKCSogZ3JhcGhpY3Mvd2luMTZkcnYvZ3JhcGhpY3MuYywgZ3JhcGhpY3Mvd2luMTZkcnYvaW5pdC5jLCBncmFwaGljcy94MTFkcnYvaW5pdC5jLCBpbmNsdWRlL2VuaG1ldGFmaWxlZHJ2LmgsIGluY2x1ZGUvZ2RpLmgsIGluY2x1ZGUvd2luMTZkcnYuaCwgZGxscy90dHlkcnYvZGMuYywgZGxscy93aW5lcHMvaW5pdC5jLCBncmFwaGljcy9lbmhtZXRhZmlsZWRydi9ncmFwaGljcy5jLCBncmFwaGljcy9lbmhtZXRhZmlsZWRydi9pbml0LmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L2dyYXBoaWNzLmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L2luaXQuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvbWV0YWZpbGVkcnYuaCwgZ3JhcGhpY3MvcGFpbnRpbmcuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJT3B0aW1pemVkIHsscH1Nb3ZlVG97LEV4fXssMTZ9LgoKCSogd2luZG93cy9kY2UuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBZGRlZCBjb21tZW50IGV4cGxhaW5pbmcgd2h5IHdlIGhhdmUgYW4gRVJSIHJhdGhlciB0aGFuIGEgV0FSTi4KCgkqIG1zZG9zL2Rvc21lbS5jOgoJR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglBZGRlZCBtaXNzaW5nICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4uCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWJvZXguYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRm9yd2FyZCBDQkVNX1NFVEVYU1RZTEUgdG8gQ0JFTV9TRVRFWFRFTkRFRFNUWUxFLCBwYXNzIFdNX1NFVFRFWFQgYW5kCglXTV9HRVRURVhUIGRvd24gdG8gY29tYm8gYm94LgoKCSogd2luZG93cy9zeXNwYXJhbXMuYzoKCUphbWVzIEFiYmF0aWVsbG8gPGphYmJleUBjb2Rld2VhdmVycy5jb20+CglDbGVhbnVwIFN5c3RlbVBhcmFtZXRlcnNJbmZvPDE2fEF8Vz4uCgoJKiBjb250cm9scy9tZW51LmM6CglKYW1lcyBBYmJhdGllbGxvIDxqYWJiZXlAY29kZXdlYXZlcnMuY29tPgoJRG9uJ3QgcmVzZXQgTUZfUE9QVVAgZmxhZyBpbiBTZXRNZW51KCkuCgoJKiB3aW5kb3dzL3F1ZXVlLmM6CglKYW1lcyBBYmJhdGllbGxvIDxqYWJiZXlAY29kZXdlYXZlcnMuY29tPgoJRml4IHRlc3QgZm9yIHBlbmRpbmcgbWVzc2FnZSBpbiBRVUVVRV9SZWNlaXZlTWVzc2FnZSgpLgoKCSogd2luZG93cy9kY2UuYywgd2luZG93cy9zY3JvbGwuYywgd2luZG93cy94MTFkcnYvd25kLmMsIGdyYXBoaWNzL3gxMWRydi9iaXRtYXAuYywgZ3JhcGhpY3MveDExZHJ2L2JydXNoLmMsIGdyYXBoaWNzL3gxMWRydi9jbGlwcGluZy5jLCBncmFwaGljcy94MTFkcnYvZGliLmMsIGdyYXBoaWNzL3gxMWRydi9ncmFwaGljcy5jLCBncmFwaGljcy94MTFkcnYvaW5pdC5jLCBncmFwaGljcy94MTFkcnYvcGFsZXR0ZS5jLCBncmFwaGljcy94MTFkcnYvcGVuLmMsIGdyYXBoaWNzL3gxMWRydi90ZXh0LmMsIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLCBpbmNsdWRlL2RjLmgsIGluY2x1ZGUvZ2RpLmgsIG9iamVjdHMvYml0bWFwLmMsIG9iamVjdHMvYnJ1c2guYywgb2JqZWN0cy9jbGlwcGluZy5jLCBvYmplY3RzL2RjLmMsIG9iamVjdHMvZGN2YWx1ZXMuYywgb2JqZWN0cy9kaWIuYywgb2JqZWN0cy9mb250LmMsIG9iamVjdHMvZ2Rpb2JqLmMsIG9iamVjdHMvcGFsZXR0ZS5jLCBvYmplY3RzL3JlZ2lvbi5jLCBvYmplY3RzL3RleHQuYywgZ3JhcGhpY3MveDExZHJ2L2JpdGJsdC5jLCBkbGxzL3dpbmVwcy9icnVzaC5jLCBkbGxzL3dpbmVwcy9jbGlwcGluZy5jLCBkbGxzL3dpbmVwcy9jb2xvci5jLCBkbGxzL3dpbmVwcy9lc2NhcGUuYywgZGxscy93aW5lcHMvZm9udC5jLCBkbGxzL3dpbmVwcy9ncmFwaGljcy5jLCBkbGxzL3dpbmVwcy9pbml0LmMsIGRsbHMvd2luZXBzL3Blbi5jLCBkbGxzL3dpbmVwcy9wcy5jLCBkbGxzL3dpbmVwcy90ZXh0LmMsIGdyYXBoaWNzL2JpdGJsdC5jLCBncmFwaGljcy9lbmhtZXRhZmlsZWRydi9ncmFwaGljcy5jLCBncmFwaGljcy9lbmhtZXRhZmlsZWRydi9pbml0LmMsIGdyYXBoaWNzL2VuaG1ldGFmaWxlZHJ2L29iamVjdHMuYywgZ3JhcGhpY3MvZXNjYXBlLmMsIGdyYXBoaWNzL21hcHBpbmcuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvYml0Ymx0LmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L2dyYXBoaWNzLmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L2luaXQuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvbWFwcGluZy5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9vYmplY3RzLmMsIGdyYXBoaWNzL3BhaW50aW5nLmMsIGdyYXBoaWNzL3BhdGguYywgZ3JhcGhpY3Mvd2luMTZkcnYvYnJ1c2guYywgZ3JhcGhpY3Mvd2luMTZkcnYvZm9udC5jLCBncmFwaGljcy93aW4xNmRydi9ncmFwaGljcy5jLCBncmFwaGljcy93aW4xNmRydi9pbml0LmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L3Blbi5jLCBncmFwaGljcy93aW4xNmRydi90ZXh0LmMsIGRsbHMvZ2RpL3ByaW50ZHJ2LmMsIGRsbHMvb3BlbmdsMzIvd2dsLmMsIGRsbHMvdHR5ZHJ2L2JpdG1hcC5jLCBkbGxzL3R0eWRydi9kYy5jLCBkbGxzL3R0eWRydi9ncmFwaGljcy5jLCBkbGxzL3R0eWRydi9vYmplY3RzLmMsIGRsbHMvdHR5ZHJ2L3R0eWRydi5oLCBkbGxzL3R0eWRydi93bmQuYzoKCUFsbG9jYXRlIERDIG9iamVjdHMgb24gdGhlIHByb2Nlc3MgaGVhcCwgYW5kIHJlbW92ZWQgV0lOX0RDX0lORk8KCXN0cnVjdHVyZSAoYmFzZWQgb24gYSBwYXRjaCBieSBLZW4gQ29sZW1hbikuCgoyMDAwLTExLTA0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9zaGVsbDMyL3NoZWxsbGluay5jOgoJUmVtb3ZlZCBsZWZ0b3ZlciBkZWJ1ZyBvdXRwdXQuCgoJKiBkbGxzL3NldHVwYXBpL2luZnBhcnNlLmMsIGRsbHMvc2V0dXBhcGkvc2V0dXB4MTYuaCwgZGxscy9zZXR1cGFwaS9zZXR1cHhfbWFpbi5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CgktIGZpeCBpbmYgZmlsZSBvcGVuL2Nsb3NlCgkgIC0gZG8gTk9UIHJldHVybiBoYW5kbGVzIGJhc2VkIG9uIGxpc3Qgb2Zmc2V0CgkgIC0gd2UgbWlnaHQgd2FudCB0byB1c2UgSEVBUF9zdHJkdXBBIGluc3RlYWQgb2YgYXNzaWduaW5nIHN0cmluZyBwb2ludGVycy4uLgoJLSBpbXBsZW1lbnQgKG1vcmUgb3IgbGVzcykgR2VuRm9ybVN0cldpdGhvdXRQbGFjZWhvbGRlcnMKCgkqIGRvY3VtZW50YXRpb24vd2luZS5tYW4uaW46CglMYXdzb24gV2hpdG5leSA8bGF3c29uX3doaXRuZXlAanVuby5jb20+CglQcm90ZWN0IHRoZSBiYWNrc2xhc2hlcyB3ZSBtZWFuIHRvIGhhdmUgc2hvdyBmcm9tIGdyb2ZmLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIG9mZiBieSBvbmUgZXJyb3IgaW4gRFBBIGhhbmRsaW5nLCBhZGRlZCBzb21lIHdhcm5pbmdzLgoKCSogZmlsZXMvZmlsZS5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZGltaUBjcy50b3JvbnRvLmVkdT4KCVVzZSBkZWJ1Z2dpbmcgQVBJIGluc3RlYWQgb2Ygb3V0cHV0aW5nIHRvIHN0ZGVyciBkaXJlY3RseS4KCgkqIGRsbHMvZGRyYXcvZHN1cmZhY2UvbWFpbi5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglBdm9pZCBkaXZpc2lvbiBieSB6ZXJvLgoKCSogZGxscy9jb21jdGwzMi9yZWJhci5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglQYXNzIHVwIFdNX0RSQVdJVEVNIG1lc3NhZ2VzIHRvIHBhcmVudC4KCjIwMDAtMTEtMDIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmMsIGluY2x1ZGUvYml0bWFwcy93aW5lLnhwbSwgdG9vbHMvTWFrZWZpbGUuaW4sIHRvb2xzL3dpbmVzaGVsbGxpbmssIHdpbmUuaW5pOgoJQ3JlYXRlIEdub21lL0tERSBkZXNrdG9wIGFuZCBtZW51IGVudHJpZXMgZnJvbSBJU2hlbGxMaW5rCglpbnRlcmZhY2UuIEJhc2VkIG9uIHRoZSB3b3JrIG9mIEphbWVzIFRob21zb24gYW5kIER1c2FuIExhY2tvLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCVRyZWV2aWV3IGl0ZW0gc29ydGluZyBjb3VsZCBtZXNzIHVwIHRoZSB2aXNpYmxlT3JkZXIgb2YgdGhlIGl0ZW1zLgoKCSogd2luZG93cy93aW4uYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU1vdmUgZm9jdXMgcmVjYWxjdWxhdGlvbiBvdXQgb2YgdGhlIHdpbmRvdyBkZXN0cm95IHJlY3Vyc2lvbgoJc28gd2UgZG8gbm90IHNlbmQgV01fU0VURk9DVVMgdG8gYWxyZWFkeSBkZXN0cm95ZWQgd2luZG93cy4KCgkqIGNvbnRyb2xzL21lbnUuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJRG8gbm90IGludmVydCAibWFnaWMiIGJpdG1hcCBtZW51IGl0ZW1zLgoKCSogdG9vbHMvZmluZF9kZWJ1Z19jaGFubmVsczoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJTWFrZSBzdXJlIHRvIGNhcmVmdWxseSBxdW90ZSBmaWxlIG5hbWVzLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVN3YXAgQ2FsY1Rvb2xiYXIgYW5kIHBhaW50IHJlY3RhbmdsZSBjb21wdXRhdGlvbiB0byB0aGUgY29ycmVjdCBvcmRlci4KCgkqIHByb2dyYW1zL3djbWQvQ2hhbmdlTG9nLCBwcm9ncmFtcy93Y21kL01ha2VmaWxlLmluLCBwcm9ncmFtcy93Y21kL3djbWRtYWluLmM6CglEYXZlIFBpY2tsZXMgPGRhdmVwQGN5dy51a2xpbnV4Lm5ldD4KCVBhdXNlIGNvbW1hbmQgaW50ZXJwcmV0ZXIgd2hpbGUgZXhlY3V0aW5nIGEgY29uc29sZS1tb2RlIGFwcC4KCjIwMDAtMTEtMDEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBmaWxlcy9kaXJlY3RvcnkuYzoKCUZpeGVkIFNlYXJjaFBhdGggdG8gaGFuZGxlIGEgJzsnLXNlcGFyYXRlZCBwYXRoIGFzIGZpcnN0IGFyZ3VtZW50LgoKCSogZGxscy9udGRsbC9udC5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglDaGFuZ2VkIE50UXVlcnlJbmZvcm1hdGlvblRva2VuKCkgdG8gZmlsbCBvdXQgYSB2YWxpZCBUT0tFTl9HUk9VUCB3aXRoCglhZG1pbiBwcml2aWxlZ2VzLgoKCSogd2luZG93cy9jdXJzb3JpY29uLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCURyYXdJY29uRXg6IHdoZW4gZmxhZ3M9MCB1c2UgZmxhZ3M9RElfTk9STUFMIGluc3RlYWQuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJRXhwb3J0IFNIR2V0U2V0dGluZ3MgYnkgbmFtZS4gTmV3IHN0dWIgZm9yIHNoZWxsLjY4LgoKCSogZGxscy9jb21jdGwzMi9yZWJhci5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglIYXZlIEludGVybmV0IEV4cGxvcmVyIDMgc2hvdyBpdHMgdG9vbGJhcnMgYnkgcGFzc2luZyBSQl9HRVRCQU5ESU5GTwoJdG8gUkJfR0VUQkFORElORk9BLgoKCSogb2JqZWN0cy9tZXRhZmlsZS5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglVc2UgR0RJU2VsZWN0UGFsZXR0ZTE2IGluc3RlYWQgb2YgU2VsZWN0UGFsZXR0ZSBhbmQKCUdESVJlYWxpemVQYWxldHRlMTYgaW5zdGVhZCBvZiBSZWFsaXplUGFsZXR0ZSBpbiBvcmRlciB0byBnZXQgcmlkIG9mCglwb3NzaWJsZSBkZWFkbG9ja3MuCgoJKiByZWxheTMyL3Nub29wLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci90aW1lci5jLCBzZXJ2ZXIvYXRvbS5jLCBzZXJ2ZXIvbWFwcGluZy5jLCBzZXJ2ZXIvcmVxdWVzdC5jLCBzZXJ2ZXIvdGhyZWFkLmgsIHdpbjMyL2NvbnNvbGUuYywgd2luZG93cy9kaWFsb2cuYywgd2luZG93cy94MTFkcnYvY2xpcGJvYXJkLmMsIGRsbHMva2VybmVsL3RpbWUuYywgZGxscy9rZXJuZWwvd2luODdlbS5jLCBkbGxzL21zdmlkZW8vZHJhd2RpYi5jLCBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYywgZGxscy9zZXR1cGFwaS9zZXR1cHhfbWFpbi5jLCBkbGxzL3NoZWxsMzIvc2hsbWVudS5jLCBkbGxzL3NoZWxsMzIvc2h2X2JnX2NtZW51LmMsIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLCBsb2FkZXIvbmUvc2VnbWVudC5jLCBtaXNjL2NwdS5jLCBtaXNjL2Vycm9yLmMsIG1pc2Mvb3B0aW9ucy5jLCBtaXNjL3JlZ2lzdHJ5LmMsIG1zZG9zL2RldmljZXMuYywgbXNkb3MvdmdhLmMsIG1zZG9zL3Z4ZC5jLCBvYmplY3RzL2RpYi5jLCBjb250cm9scy9lZGl0LmMsIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYywgZGxscy9jb21jdGwzMi9tb250aGNhbC5jLCBkbGxzL2NvbWN0bDMyL3RhYi5jLCBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmMsIGRsbHMvZGRyYXcvZGRyYXcvZGdhLmMsIGRsbHMvZGRyYXcvZGRyYXcveDExLmMsIGRsbHMvZGRyYXcveDExX3ByaXZhdGUuaDoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJRGltaXRyaWUgTy4gUGF1biA8ZGltaUBjcy50b3JvbnRvLmVkdT4KCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJVmFyaW91cyB3YXJuaW5nIGZpeGVzLgoKCSogZ3JhcGhpY3MvcGFpbnRpbmcuYywgZ3JhcGhpY3MvcGF0aC5jLCBpbmNsdWRlL3BhdGguaDoKCU1hcmsgRHVmb3VyIDxtLmR1Zm91ckBzdHVkZW50LnR1ZGVsZnQubmw+CglNYWtlIHRoZSBmdW5jdGlvbnMgUGllLCBDaG9yZCwgUm91bmRSZWN0LCBBbmdsZUFyYywgUG9seURyYXcgYW5kCglFbGxpcHNlIHdvcmsgd2l0aCBhbiBvcGVuIHBhdGguCgoJKiBjb250cm9scy9tZW51LmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCU1ha2UgYml0bWFwIG1lbnUgaXRlbXMgbG9vayBsaWtlIGluIHdpbmRvd3Mgd2hlbiBzZWxlY3RlZCwKCWkuZS4gaW52ZXJ0ZWQgYW5kIGhpbGl0ZWQgKGluIFdpbjk4IGxvb2spLgoKCSogY29udHJvbHMvc2Nyb2xsLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUNoZWNrIGZvciBTQl9DVEwgYmVmb3JlIGRpc3BsYXlpbmcgYSBjYXJldC4KCgkqIGRsbHMva2VybmVsL2Zvcm1hdF9tc2cuYzoKCURvIG5vdCB0cnVuY2F0ZSBoaWdoIHdvcmQgb2YgbWVzc2FnZSBpZC4KCgkqIGluY2x1ZGUvY29tbWRsZy5oLCBpbmNsdWRlL3dpbmUvb2JqX3NlcnZpY2Vwcm92aWRlci5oLCBpbmNsdWRlL3dpbmUvb2JqX3NoZWxsYnJvd3Nlci5oLCBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmMsIGRsbHMvY29tbWRsZy9maWxlZGxnYnJvd3Nlci5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZ2Jyb3dzZXIuaDoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJQmV0dGVyIGhhbmRsaW5nIG9mIGN1c3RvbSB0ZW1wbGF0ZXMgYW5kIGhvb2tzLgoJQnVnIGZpeGVzLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVJlbW92ZWQgdW5uZWNlc3NhcnkgY2FsbHMgb2YgVE9PTEJBUl9DYWxjVG9vbGJhcigpICh3aGljaCB3b3VsZCBiZQoJcmVjYWxjdWxhdGVkIGR1ZSB0byBJbnZhbGlkYXRlUmVjdCgpLT5XTV9QQUlOVCBhbnl3YXkpLgoKCSogZGxscy91c2VyL3VzZXIzMi5zcGVjOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBpc3N1ZSBmb3VuZCBieSB3aW5hcGlfY2hlY2suCgoJKiB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5kYXQsIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9hZHZhcGkzMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9ycGNydDQuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvdHR5ZHJ2LmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3VzZXIzMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi93aW5pbmV0LmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3gxMWRydi5hcGk6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCU1pbm9yIEFQSSBmaWxlcyB1cGRhdGUuCgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOgoJR2FicmllbCBHYXJjaWEgPEdhcmNpYUdAb3JpZ2VuZXMuY29tLmFyPgoJQWRkZWQgTGF0aW4gQW1lcmljYW4gbGF5b3V0LgoKCSogZGxscy91cmxtb24vdXJsbW9uLnNwZWMsIGRsbHMvdXJsbW9uL3VybG1vbl9tYWluLmMsIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWM6CglMYXdzb24gV2hpdG5leSA8bGF3c29uX3doaXRuZXlAanVuby5jb20+CglTdHVicyBmb3IgVXJsTWtTZXRTZXNzaW9uT3B0aW9uLCBTSExXQVBJXzEzMiwgU0hHZXRJbnZlcnNlQ01BUC4KCVJlZGlyZWN0ZWQgZm9yd2FyZCBvZiBzaGx3YXBpLjU0IHRvIGdkaTMyLkNyZWF0ZUlDVy4KCjIwMDAtMTAtMzEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmMsIGRsbHMvY29tY3RsMzIvbW9udGhjYWwuYywgZGxscy9jb21jdGwzMi90YWIuYywgZGxscy9jb21jdGwzMi90cmVldmlldy5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglVc2UgUFNfQUxURVJOQVRFIHJhdGhlciB0aGFuIFBTX0RPVC4KCVVzZSBSZWN0YW5nbGUgdG8gZHJhdyBmb2N1cyByZWN0YW5nbGVzLgoKCSogb2JqZWN0cy9wZW4uYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBbGxvdyBwZW5zIHdpdGggc3R5bGVzIGdyZWF0ZXIgdGhhbiBQU19JTlNJREVGUkFNRSB0byBiZSBjcmVhdGVkIHdpdGgKCUNyZWF0ZVBlbkluZGlyZWN0IGFuZCBFeHRDcmVhdGVQZW4uCgoJKiBncmFwaGljcy94MTFkcnYvcGVuLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVVzZSBzaXplb2YgZm9yIG1haW50YWluYWJpbGl0eS4KCgkqIGRsbHMvY29tY3RsMzIvcmViYXIuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglJZ25vcmUgUkJCU19CUkVBSyBzdHlsZSBvbiBmaXJzdCBiYW5kLgoKCSogZ3JhcGhpY3MveDExZHJ2L2luaXQuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRml4ZWQgYSBmZXcgZGV2aWNlIGNhcHMgdmFsdWVzLgoKCSogbWlzYy9yZWdpc3RyeS5jOgoJRGF2aWQgRWxsaW90dCA8ZGZlQGluZmluaXRlLWludGVybmV0Lm5ldD4KCV9udF9wYXJzZV9uaygpIHNob3VsZCBub3QgY2xvc2Uga2V5cyB0aGF0IGl0IGRvZXMgbm90IG9wZW4uCgoJKiBvYmplY3RzL2dkaW9iai5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglTZXQgdGhlIHRoaWNrbmVzcyBvZiBzdG9jayBwZW5zIHRvIDAgc28gdGhhdCB0aGV5IGFyZSBub3Qgc2NhbGVkLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVkIGNhbmNlbHMgZWRpdGluZyBvZiBhIGxpc3R2aWV3IGxhYmVsIGlmIHRoZSBsaXN0dmlldyBpcwoJc2Nyb2xsZWQuCgoJKiB3aW5kb3dzL3N5c2NvbG9yLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUZpeGVkIHRoZSB2YWx1ZSBvZiBzb21lIHN5c3RlbSBjb2xvcnMuCgoJKiBkbGxzL2NvbWN0bDMyL3JlYmFyLmM6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJRml4IGZvciBhdm9pZGluZyBzdWJ0cmFjdGlvbiBmcm9tIHVuc2lnbmVkIHplcm8uCgoJKiBkbGxzL3dpbmVwcy9yc3JjLnJjLCBkbGxzL3dpbmVwcy93cHNfU2sucmMsIGRsbHMvd2lubW0vd2lubW1fU2sucmMsIGRsbHMvd2lubW0vd2lubW1fcmVzLnJjLCBkb2N1bWVudGF0aW9uL2kxOG4uc2dtbCwgcHJvZ3JhbXMvY2xvY2svU2sucmMsIHByb2dyYW1zL2Nsb2NrL3JzcmMucmMsIHByb2dyYW1zL25vdGVwYWQvU2sucmMsIHByb2dyYW1zL25vdGVwYWQvcnNyYy5yYywgcHJvZ3JhbXMvcHJvZ21hbi9Tay5yYywgcHJvZ3JhbXMvcHJvZ21hbi9yc3JjLnJjLCBwcm9ncmFtcy93aW5oZWxwL1NrLnJjLCBwcm9ncmFtcy93aW5oZWxwL3JzcmMucmMsIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmMsIGRsbHMvY29tbWRsZy9jZGxnX1NrLnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9Tay5yYywgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfU2sucmM6CglQZXRlciBJdmFueWkgPGl2YW55aUBpbnRlcm5ldC5zaz4KCUFkZGVkL3VwZ3JhZGVkIFNsb3ZhayBtZXNzYWdlcywgYW5kIFNsb3ZhayBhbmQgQ3plY2gga2V5Ym9hcmQgbGF5b3V0LgoKCSogY29udHJvbHMvc2Nyb2xsLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUhpZGUgdGhlIGNhcmV0IG9ubHkgb24gdGhlIGZpcnN0IFdNX0tFWURPV04uCgoJKiBkbGxzL2RpbnB1dC9kaW5wdXRfbWFpbi5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglDaGFuZ2VkIG1vdXNlIFVuQWNxdWlyZSB0byBOT1QgdW5hY3F1aXJlIGl0IG9uIG11bHRpcGxlIHVuYWNxdWlyZXMuCglJbXBsZW1lbnRlZCBESVBST1BfQVhJU01PREUgZm9yIFN5c01vdXNlQUltcGxfU2V0UHJvcGVydHkuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6CglTdXNhbiBGYXJsZXkgPHN1c2FuQGNvZGV3ZWF2ZXJzLmNvbT4KCVVuZGVyIHNvbWUgY29uZGl0aW9ucyBpdHMgbmVjZXNzYXJ5IHRvIGV4cGxpY2l0bHkgc2hvdyB0aGUKCXNjcm9sbGJhcnMuCgoJKiB3aW5kb3dzL2RpYWxvZy5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglEaXNwbGF5IGFuIEVSUiBvbiBlcnJvcnMgd2hpbGUgaW5pdGlhbGl6aW5nIFVTRVIuCgoJKiBkbGxzL2tlcm5lbC90aW1lLmM6CglSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJUmV0dXJuIFRJTUVfWk9ORV9JRF9TVEFOREFSRCBpbiBHZXRUaW1lWm9uZUluZm9ybWF0aW9uKCkuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWJvZXguYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglIYW5kbGUgc3BlY2lhbCBjYXNlIHdoZXJlIGl0ZW1JRCA9IC0xIChzcGVjaWFsIGZvY3VzIHJlY3QgZHJhdykuCgoJKiBkbGxzL3NoZWxsMzIvc2hyZXMucmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBpbnN1ZmZpY2llbnQgcmVjdCB3aWR0aCB2YWx1ZSBpbiByZXNvdXJjZSBmaWxlLgoKCSogd2luMzIvY29uc29sZS5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCU5lZWQgdG8gZ2V0IGFueSBvdXRzdGFuZGluZyBpbnB1dCBwcmlvciB0byByZXR1cm5pbmcgbnVtYmVyLgoKCSogdG9vbHMvd2luZWluc3RhbGw6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVNvbWUgYnVnZml4ZXMsIGFub3RoZXIgZnVuY3Rpb24gZm9yIHBhY2thZ2luZywgYW5kIHNvbWUgdGV4dAoJcmVmb3JtYXR0aW5nIGZyb20gRXJpYyBNYXJ5bmlhay4KCgkqIGRsbHMvZ2RpL01ha2VmaWxlLmluLCBkbGxzL3gxMWRydi9NYWtlZmlsZS5pbjoKCVJlbW92ZWQgb2Jzb2xldGUgVE9PTFNVQkRJUlMgZGVwZW5kZW5jeS4KCgkqIHByb2dyYW1zL3dpbmVtaW5lL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5oZWxwL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW52ZXIvTWFrZWZpbGUuaW4sIHByb2dyYW1zL2F2aXRvb2xzL01ha2VmaWxlLmluLCBwcm9ncmFtcy9jbG9jay9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvY21kbGd0c3QvTWFrZWZpbGUuaW4sIHByb2dyYW1zL2NvbnRyb2wvTWFrZWZpbGUuaW4sIHByb2dyYW1zL25vdGVwYWQvTWFrZWZpbGUuaW4sIHByb2dyYW1zL29zdmVyc2lvbmNoZWNrL01ha2VmaWxlLmluLCBwcm9ncmFtcy9wcm9nbWFuL01ha2VmaWxlLmluLCBwcm9ncmFtcy9yZWdhcGkvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3JlZ3Rlc3QvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3VuaW5zdGFsbGVyL01ha2VmaWxlLmluLCBwcm9ncmFtcy92aWV3L01ha2VmaWxlLmluLCBwcm9ncmFtcy93Y21kL01ha2VmaWxlLmluLCBkbGxzL29kYmMzMi9NYWtlZmlsZS5pbiwgZGxscy9vZGJjMzIvb2RiYzMyLnNwZWMsIGRsbHMvb2xlMzIvTWFrZWZpbGUuaW4sIGRsbHMvb2xlZGxnL01ha2VmaWxlLmluLCBkbGxzL29sZWRsZy9vbGVkbGcuc3BlYywgZGxscy9vbGVzdnIvTWFrZWZpbGUuaW4sIGRsbHMvb2xlc3ZyL29sZXN2cjMyLnNwZWMsIGRsbHMvcmFzYXBpMzIvTWFrZWZpbGUuaW4sIGRsbHMvcmFzYXBpMzIvcmFzYXBpMzIuc3BlYywgZGxscy9ycGNydDQvTWFrZWZpbGUuaW4sIGRsbHMvcnBjcnQ0L3JwY3J0NC5zcGVjLCBkbGxzL3VzZXIvTWFrZWZpbGUuaW4sIGRsbHMvd2luc29jay9NYWtlZmlsZS5pbiwgbGlidGVzdC9NYWtlZmlsZS5pbiwgbWlzY2VtdS93aW5lLnNwZWMsIHByb2dyYW1zL01ha2VmaWxlLmluLCBkZWJ1Z2dlci9NYWtlZmlsZS5pbiwgZGxscy9hZHZhcGkzMi9NYWtlZmlsZS5pbiwgZGxscy9jb21tZGxnL01ha2VmaWxlLmluLCBkbGxzL2NydGRsbC9NYWtlZmlsZS5pbiwgZGxscy9kY2ltYW4zMi9NYWtlZmlsZS5pbiwgZGxscy9kY2ltYW4zMi9kY2ltYW4zMi5zcGVjLCBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwgZGxscy9tc25ldDMyL01ha2VmaWxlLmluLCBkbGxzL21zbmV0MzIvbXNuZXQzMi5zcGVjOgoJQWRkZWQgaW1wb3J0IG9mIG50ZGxsLgoKCSogdG9vbHMvd2luZWJ1aWxkL01ha2VmaWxlLmluLCB0b29scy93bWMvTWFrZWZpbGUuaW4sIHRvb2xzL3dyYy9NYWtlZmlsZS5pbiwgdW5pY29kZS9NYWtlZmlsZS5pbiwgLmN2c2lnbm9yZSwgTWFrZS5ydWxlcy5pbiwgTWFrZWZpbGUuaW4sIGRsbHMvTWFrZWRsbC5ydWxlcy5pbiwgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9udGRsbC8uY3ZzaWdub3JlLCBkbGxzL250ZGxsL01ha2VmaWxlLmluLCBsaWJyYXJ5Ly5jdnNpZ25vcmUsIGxpYnJhcnkvTWFrZWZpbGUuaW4sIGxpYnJhcnkvcG9ydC5jLCBsaWJyYXJ5L3dpbmVzdHViLmMsIG1pc2MvTWFrZWZpbGUuaW4sIG1pc2MvcG9ydC5jOgoJQnVpbGQgbnRkbGwgYXMgYSByZWFsIGRsbCwgaW5jbHVkaW5nIGV2ZXJ5dGhpbmcgdGhhdCB3YXMgcHJldmlvdXNseSBpbgoJbGlid2luZS5zby4gQ3JlYXRlZCBhIG5ldyAobW9zdGx5IGVtcHR5KSBsaWJ3aW5lLnNvIGluIGxpYnJhcnkvIHN1YmRpci4KCjIwMDAtMTAtMjkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkZWJ1Z2dlci9tc2MuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCURFQlVHX1Byb2Nlc3NEQkdGaWxlOiB1c2UgYSBzdGFjayB2YXJpYWJsZSBmb3IgdGhlIGV4dHJhX2luZm8uCgoJKiByZWxheTMyL3Nub29wLmMsIGRsbHMvbXN2aWRlby9tc3ZpZGVvX21haW4uYywgZGxscy9yaWNoZWRpdC9jaGFybGlzdC5oLCBkbGxzL3dpbm1tL3dpbmVvc3MvbWlkaS5jLCBpZjE2MzIvc25vb3AuYywgaWYxNjMyL3RodW5rLmMsIGxvYWRlci90YXNrLmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkaW1pQGNzLnRvcm9udG8uZWR1PgoJRml4ZWQgYSBmZXcgY29tcGlsYXRpb24gd2FybmluZ3MKCgkqIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYywgZGxscy9vbGVhdXQzMi9zYWZlYXJyYXkuYywgZGxscy93aW5hc3BpL3dpbmVzY3NpLmgsIHNlcnZlci9oYW5kbGUuYzoKCUpvZXJnIE1heWVyIDxqbWF5ZXJAbG9wbG9mLmRlPgoJTW92ZSBpbmxpbmUgYW5kIHN0YXRpYyB0byB0aGUgYmVnaW5uaW5nIG9mIGRlY2xhcmF0aW9ucy4KCgkqIGRsbHMvY29tY3RsMzIvY29tYm9leC5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQ09NQk9FWF9EcmF3SXRlbTogY2hlY2sgcmV0dXJuIHZhbHVlIG9mIFNlbmRNZXNzYWdlQSguLi4sQ0JfR0VUSVRFTURBVEEsLi4uKQoKCSogdG9vbHMvd2luZWNvbmY6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJQWRkZWQgYSAnLWluaWZpbGUnIG9wdGlvbiB0byBzcGVjaWZ5IHRoZSBsb2NhdGlvbiBvZiB0aGUgd2luZS5pbmkgZmlsZQoJdXNlZCBpbiB0aGUgYnVpbGRpbmcgb2YgdGhlIG5ldyB3aW5lLmluaSBmaWxlLgoKCSogZGVidWdnZXIvbXNjLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCS0gZW5hYmxlIGxvYWRpbmcgb2YgcGRiIGZpbGVzIG5hbWVkIGluIE5CMTAgcmVjb3JkcyBvZiBhIGRiZyBmaWxlCgktIGRpc2FibGUgdGltZXN0YW1wIGNoZWNrIGZvciBwZGIgZmlsZXMKCgkqIHdpbjMyL2RldmljZS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglRdWlldGVuIFZ4RENhbGxfVk1NIG91dHB1dC4KCgkqIHRvb2xzL3dpbmVpbnN0YWxsOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+Cgl3aW5laW5zdGFsbCBpbXByb3ZlbWVudHMsIG1vc3RseSBmb3IgdXNhZ2UgaW4gcGFja2FnZSBwb3N0aW5zdGFsbAoJc2NyaXB0cy4KCgkqIGlmMTYzMi9idWlsdGluLmMsIGlmMTYzMi9yZWxheS5jLCBpbmNsdWRlL2J1aWx0aW4xNi5oLCB0b29scy93aW5lYnVpbGQvYnVpbGQuaCwgdG9vbHMvd2luZWJ1aWxkL21haW4uYywgdG9vbHMvd2luZWJ1aWxkL3JlbGF5LmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMTYuYzoKCVBhdGNoIGZsYXQgY3Mgb2YgMTYtYml0IGVudHJ5IHBvaW50cyBpZiBjdXJyZW50ICVjcyBpcyBkaWZmZXJlbnQgZnJvbQoJY29tcGlsZWQgdmFsdWUsIGFuZCByZXRyaWV2ZSBmbGF0IGRzIGZyb20gYSBnbG9iYWwgdmFyaWFibGUuIFRoaXMKCXNob3VsZCBhdm9pZCBwcm9ibGVtcyB3aXRoIHdpbjRsaW4ga2VybmVscy4KCgkqIHNjaGVkdWxlci9jcml0c2VjdGlvbi5jLCBzY2hlZHVsZXIvdGhyZWFkLmMsIHdpbmRvd3MvY2xpcGJvYXJkLmMsIHdpbmRvd3Mvd2lucG9zLmMsIGRsbHMvYWR2YXBpMzIvYWR2YXBpMzIuc3BlYywgZGxscy9hZHZhcGkzMi9yZWdpc3RyeS5jLCBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBkbGxzL250ZGxsL2NyaXRzZWN0aW9uLmMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy91c2VyL3VzZXIzMi5zcGVjLCBmaWxlcy9kaXJlY3RvcnkuYywgaW5jbHVkZS9udGRkay5oLCBtZW1vcnkvcmVnaXN0cnkuYzoKCURhdmlkIEVsbGlvdHQgPGRmZUBpbmZpbml0ZS1pbnRlcm5ldC5uZXQ+CglBZGRlZCBiYXNpYyB3b3JraW5nIHN0dWJzIG9mIG5ldyBXaW5kb3dzIDIwMDAgQVBJIGZ1bmN0aW9ucy4KCgkqIGluY2x1ZGUvbG9jYWwuaCwgbWVtb3J5L2xvY2FsLmM6CglSZW1vdmVkIHVudXNlZCBMT0NBTF9Mb2NrU2VncHRyLgoKCSogZ3JhcGhpY3MveDExZHJ2L3BhbGV0dGUuYywgb2JqZWN0cy9kYy5jLCBvYmplY3RzL3BhbGV0dGUuYywgd2luZG93cy9wYWludGluZy5jOgoJVXNlIEdldFN0b2NrT2JqZWN0KCkgaW5zdGVhZCBvZiB0aGUgbWFnaWMgU1RPQ0tfKiBoYW5kbGVzLgoKCSogZGVidWdnZXIvbXNjLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglERUJVR19Qcm9jZXNzREJHRmlsZTogYWxsb2NhdGUgTVNDX0RCR19JTkZPIGJlZm9yZSB3cml0aW5nIHRvIG1lbWJlcnMKCW9mIHRoYXQgc3RydWN0dXJlLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jOgoJRGF2ZSBQaWNrbGVzIDxkYXZlcEBjeXcudWtsaW51eC5uZXQ+CglJbXBsZW1lbnQgU0hHRklfRVhFVFlQRSBmdW5jdGlvbiBvZiBTSEdldEZpbGVJbmZvLgoKCSogd2luZG93cy93aW5oZWxwLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVJlcG9ydCBlcnJvcnMgb24gV2luSGVscCgpIGZhaWx1cmVzLgoKCSogZGxscy9jb21jdGwzMi9jb21ib2V4LmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJLSBpbXByb3ZlZCB0cmFjZSBpbmZvcm1hdGlvbgoJLSBpbXBsZW1lbnRlZCBDQl9TRVRJVEVNSEVJR0hULCBXTV9XSU5ET1dQT1NDSEFOR0lORywKCSAgV01fTUVBU1VSRUlURU0sIFdNX0RSQVdJVEVNCgktIGNoYW5nZWQgQ0JFTV9JTlNFUlRJVEVNQSwgQ0JFTV9TRVRJTUFHRUxJU1QsCgkgIFdNX0NSRUFURSwgV01fREVTVFJPWQoJLSBhYm92ZSBjaGFuZ2VzIGNvcnJlY3Qgd2luZG93IHJlY3RhbmdsZSwgZHJhd3MgaXRlbXMsIGFuZCBjcmVhdGVzCgkgIGNvbnRyb2wgY29ycmVjdGx5LgoKCSogZGxscy9jb21jdGwzMi9yZWJhci5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gY29ycmVjdCBwcm9jZXNzaW5nIG9mIFJCQlNfQlJFQUsgc3R5bGUuCgktIGhhbmRsZSBjYXNlcyB3aGVyZSBjeUNoaWxkIHdhcyBzZXQgdG8gLTEgYnkgYXBwbC4gLSB1bmRvY3VtZW50ZWQuCgktIHJlbW92ZSBzcGVjaWFsIGNvZGUgZm9yIENvbWJvYm94ZXggcHJvYmxlbSAobm93IHNvbHZlZCkuCgktIGZpeCBzb21lIHBhaW50aW5nIHByb2JsZW1zCgoyMDAwLTEwLTI4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbWVtb3J5L2dsb2JhbC5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglSZXR1cm4gdGhlIGNvcnJlY3QgdmFsdWUgZm9yIGR3VG90YWxWaXJ0dWFsLgoJUmV0dXJuIGEgbW9yZSBwbGF1c2libGUgdmFsdWUgZm9yIGR3QXZhaWxWaXJ0dWFsLgoKCSogbWlzYy9jcHUuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglSZXR1cm4gYSBtb3JlIHBsYXVzaWJsZSB2YWx1ZSBmb3IgTWluaW11bUFwcGxpY2F0aW9uQWRkcmVzcy4KCgkqIHRvb2xzL3dpbmVidWlsZC9tYWluLmMsIHNlcnZlci9jb250ZXh0X2kzODYuYzoKCUZlZGVyaWNvIFNjaHdpbmR0IDxmZ3NjaEBjb3JlLXNkaS5jb20+CglGaXhlcyBmb3IgT3BlbkJTRC4KCgkqIGRsbHMvb2xlMzIvaXRlbW1vbmlrZXIuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQ3JlYXRlSXRlbU1vbmlrZXIgbWF5IGdldCBOVUxMIGFzIHN6RGVsaW0sIHNvbWUgY2xlYW51cHMuCgoJKiBkbGxzL29sZTMyL3N0b3JhZ2UzMi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCBPbGVMb2FkRnJvbVN0cmVhbTogRGVyZWZlcmVuY2UgcHB2T2JqIGFuZCBnZXQgSVBlcnNpc3RTdHJlYW0KCWluc3RlYWQgb2YgYWNjZXNzaW5nIElVbmtub3duLgoKCSogZGxscy93aW5pbmV0L01ha2VmaWxlLmluLCBkbGxzL3dpbmluZXQvaHR0cC5jLCBkbGxzL3dpbmluZXQvd2luaW5ldC5zcGVjOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJU3R1YiBmb3IgSHR0cFNlbmRSZXF1ZXN0RXhBLgoKCSogY29udHJvbHMvY29tYm8uYywgZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CgktIHNldCB0aGUgaXRlbSBoZWlnaHQgbm90IG9ubHkgZm9yIHRoZSBsaXN0Ym94LCBidXQgYWxzbyBmb3IgdGhlIHRleHQgZmllbGQKCS0gY2VudGVyIHRleHQgdmVydGljYWxseQoJLSBiZWF1dGlmeSBjb21tZW50cwoKCSogZGxscy91c2VyL01ha2VmaWxlLmluOgoJTWF0dGhldyBDbGFya2UgPE1hdHRoZXdfQ2xhcmtlQG1pbmRsaW5rLmJjLmNhPgoJRG9uJ3QgYXNzdW1lIHdlIGFyZSBidWlsZGluZyBpbiB0aGUgc291cmNlIHRyZWUsIGJ1dCBhbGxvdyBtYWtlIHRvCglsb2NhdGUgcmVzb3VyY2VzL2Rpc3BsYXkucmMgYW5kIHJlc291cmNlcy9tb3VzZS5yYyB2aWEgVlBBVEguCgoyMDAwLTEwLTI2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGVidWdnZXIvd2luZWRiZy5jLCBpbmNsdWRlL3dpbmRlZi5oLCBpbmNsdWRlL3dpbmUvZXhjZXB0aW9uLmgsIHJlbGF5MzIvYnVpbHRpbjMyLmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYywgd2luMzIvZXhjZXB0LmM6CglSYWlzZSBhbiBleGNlcHRpb24gd2hlbiBhIHN0dWIgZW50cnkgcG9pbnQgaXMgY2FsbGVkLgoKCSogd2luZG93cy9rZXlib2FyZC5jLCB3aW5kb3dzL3N0cnVjdDMyLmMsIHdpbmRvd3Mvc3RydWN0MzIuaDoKCVJlbW92ZWQgdW51c2VkIFNUUlVDVDMyX05DQ0FMQ1NJWkUgZnVuY3Rpb25zLgoKCSogd2luZG93cy9pbnB1dC5jLCBjb250cm9scy9tZW51LmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCUFzayBhcHBsaWNhdGlvbiB0byByZWluaXRpYWxpemUgaXRzIG1lbnUgYmVmb3JlIHByb2Nlc3NpbmcgYW4KCWFjY2VsZXJhdG9yIGtleS4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYzoKCU1hcnRpbiBQaWxrYSA8bXBpbGthQGNvZGV3ZWF2ZXJzLmNvbT4KCSJTdGFydE1lbnUiIC0tPiAiU3RhcnQgTWVudSIsICJTdGFydHVwIiAtLT4gIlN0YXJ0VXAiLgoKCSogZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jOgoJRml4ZWQgdHlwbyBkdWUgdG8gbWVyZ2UgZXJyb3IuCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYzoKCUZyYW5jb2lzIEphY3F1ZXMgPGZyYW5jb2lzakBtYWNhZGFtaWFuLmNvbT4KCVVwZGF0ZWQgdGhlIGxvYWQgcHJvY2VzcyBzbyB0aGF0IGFsbCB0eXBlbGlicyAoYW5kIG5vdCBqdXN0IHRoZSBmaXJzdAoJb25lLCBhcyBpdCB1c2VkIHRvKSBzdG9yZWQgaW4gYSBETEwgY2FuIGJlIGxvYWRlZC4KCgkqIGdyYXBoaWNzL3BhaW50aW5nLmM6CglNYXJrIER1Zm91ciA8bS5kdWZvdXJAc3R1ZGVudC50dWRlbGZ0Lm5sPgoJSW1wbGVtZW50ZWQgUG9seURyYXcoKSBhbmQgQW5nbGVBcmMoKS4KCjIwMDAtMTAtMjYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBBTk5PVU5DRSwgQ2hhbmdlTG9nLCBpbmNsdWRlL3ZlcnNpb24uaDoKCVJlbGVhc2UgMjAwMDEwMjYuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjIwMDAtMTAtMjYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkZWJ1Z2dlci93aW5lZGJnLmMsIGluY2x1ZGUvd2luZGVmLmgsIGluY2x1ZGUvd2luZS9leGNlcHRpb24uaCwgcmVsYXkzMi9idWlsdGluMzIuYywgdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jLCB3aW4zMi9leGNlcHQuYzoKCVJhaXNlIGFuIGV4Y2VwdGlvbiB3aGVuIGEgc3R1YiBlbnRyeSBwb2ludCBpcyBjYWxsZWQuCgoJKiB3aW5kb3dzL2tleWJvYXJkLmMsIHdpbmRvd3Mvc3RydWN0MzIuYywgd2luZG93cy9zdHJ1Y3QzMi5oOgoJUmVtb3ZlZCB1bnVzZWQgU1RSVUNUMzJfTkNDQUxDU0laRSBmdW5jdGlvbnMuCgoJKiB3aW5kb3dzL2lucHV0LmMsIGNvbnRyb2xzL21lbnUuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJQXNrIGFwcGxpY2F0aW9uIHRvIHJlaW5pdGlhbGl6ZSBpdHMgbWVudSBiZWZvcmUgcHJvY2Vzc2luZyBhbgoJYWNjZWxlcmF0b3Iga2V5LgoKCSogZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jOgoJTWFydGluIFBpbGthIDxtcGlsa2FAY29kZXdlYXZlcnMuY29tPgoJIlN0YXJ0TWVudSIgLS0+ICJTdGFydCBNZW51IiwgIlN0YXJ0dXAiIC0tPiAiU3RhcnRVcCIuCgoJKiBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmM6CglGaXhlZCB0eXBvIGR1ZSB0byBtZXJnZSBlcnJvci4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jOgoJRnJhbmNvaXMgSmFjcXVlcyA8ZnJhbmNvaXNqQG1hY2FkYW1pYW4uY29tPgoJVXBkYXRlZCB0aGUgbG9hZCBwcm9jZXNzIHNvIHRoYXQgYWxsIHR5cGVsaWJzIChhbmQgbm90IGp1c3QgdGhlIGZpcnN0CglvbmUsIGFzIGl0IHVzZWQgdG8pIHN0b3JlZCBpbiBhIERMTCBjYW4gYmUgbG9hZGVkLgoKCSogZ3JhcGhpY3MvcGFpbnRpbmcuYzoKCU1hcmsgRHVmb3VyIDxtLmR1Zm91ckBzdHVkZW50LnR1ZGVsZnQubmw+CglJbXBsZW1lbnRlZCBQb2x5RHJhdygpIGFuZCBBbmdsZUFyYygpLgoKMjAwMC0xMC0yNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCUFkZGVkIGFuIGFub3RoZXIgc3BlY2lhbCBjYXNlIGhhbmRsaW5nIGZvciBTaGlmdCtbTnVtUGFkXURFTC4KCgkqIGRlYnVnZ2VyL01ha2VmaWxlLmluLCBzZXJ2ZXIvTWFrZWZpbGUuaW4sIHRvb2xzL3dpbmVidWlsZC9NYWtlZmlsZS5pbiwgdG9vbHMvd21jL01ha2VmaWxlLmluLCB0b29scy93cmMvTWFrZWZpbGUuaW46CglLcmlzdG9mZmVyIEdsZWRpdHNjaCA8dG9mZmVyQHBpbmcudWlvLm5vPgoJQWRkZWQgTERGTEFHUyB0byBsaW5raW5nIG9mIHdpbmUtcmVsYXRlZCBiaW5hcmllcy4KCgkqIGRsbHMvdHR5ZHJ2L3VzZXIuYywgZGxscy91c2VyL3VzZXJfbWFpbi5jLCBkbGxzL3gxMWRydi94MTFkcnYuc3BlYywgaW5jbHVkZS91c2VyLmgsIGluY2x1ZGUveDExZHJ2LmgsIHdpbmRvd3MvaW5wdXQuYywgd2luZG93cy9rZXlib2FyZC5jLCB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jLCBkbGxzL3R0eWRydi90dHlkcnYuc3BlYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJUmVwbGFjZWQgVG9Bc2NpaSBieSBUb1VuaWNvZGUgaW4gdGhlIFVzZXIgZHJpdmVyIGludGVyZmFjZS4KCgkqIGRsbHMvZGRyYXcvZGRyYXcveDExLmM6CglXaWxsaWFtIFdhZ2hvcm4gPHd3YWdob3JuQGxpdGFueS5kZW1vbi5jby51az4KCXhmODZ2bW9kZV9zZXRkaXNwbGF5bW9kZSgpIHdhc24ndCBwcm9wZXJseSBzYXZpbmcgdGhlICdwcml2YXRlJyBmaWVsZAoJb2YgdGhlIFhGODZWaWRNb2RlTW9kZUxpbmUgc3RydWN0dXJlLgoKCSogY29udHJvbHMvc2Nyb2xsLmM6CglGcmFuY29pcyBNZXRob3QgPGZyYW5jb2lzbUBtYWNhZGFtaWFuLmNvbT4KCUFkZGVkIHN1cHBvcnQgb2YgYmxpbmtpbmcgdGh1bWIgYXMgZm91bmQgaW4gV2luZG93cyBzY3JvbGxiYXIuCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYzoKCUZyYW5jb2lzIEphY3F1ZXMgPGZyYW5jb2lzakBtYWNhZGFtaWFuLmNvbT4KCVVwZGF0ZWQgdHlwZWxpYiBsb2FkZXIuIFR5cGVsaWIgY29udGVudHMgY2FuIGJlIHN0b3JlZCBhcyBtdWx0aWJ5dGUKCXN0cmluZ3MuIEhvd2V2ZXIsIHRoZXkgYXJlIGFsd2F5cyByZXR1cm5lZCB0byB0aGUgYXBwbGljYXRpb24gYXMgQlNUUiwKCWUuZy4gVU5JQ09ERSBzdHJpbmdzLiBBbGwgc3RyaW5ncyBhcmUgbm93IHN0b3JlZCBhcyBCU1RSIGluc3RlYWQgb2YKCUFTQ0lJIHN0cmluZ3MuCgoJKiBpbmNsdWRlL21vZHVsZS5oLCBsb2FkZXIvbW9kdWxlLmMsIGxvYWRlci9wZV9pbWFnZS5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglGcmVlIHRoZSBXaW4xNiBkdW1teSBtb2R1bGUgYW5kIHdtLT5kZXBzLgoKCSogZ3JhcGhpY3MveDExZHJ2L2dyYXBoaWNzLmM6CglNYXJrIER1Zm91ciA8bS5kdWZvdXJAc3R1ZGVudC50dWRlbGZ0Lm5sPgoJWDExRFJWX0RyYXdBcmM6IHN3YXAgdGhlIHN0YXJ0IGFuZCBlbmQgcG9pbnRzIHdoZW4gZHJhd2luZyBpbgoJY2xvY2t3aXNlIGRpcmVjdGlvbi4KCgkqIG9iamVjdHMvcmVnaW9uLmM6CglBdmlhZCBQaW5lbGVzIDxwYXZpYWRAbmV0dmlzaW9uLm5ldC5pbD4KCUF2b2lkIGluZmluaXRlIGxvb3AgaW4gQ3JlYXRlUm91bmRSZWN0UmduKCkuCgoJKiBNYWtlLnJ1bGVzLmluLCBkbGxzL3VzZXIvTWFrZWZpbGUuaW4sIGRsbHMvdXNlci9kaXNwbGF5LnNwZWMsIGRsbHMvdXNlci9tb3VzZS5zcGVjLCBkbGxzL3VzZXIvcmVzb3VyY2VzLy5jdnNpZ25vcmUsIGRsbHMvdXNlci9yZXNvdXJjZXMvZGlzcGxheS5yYywgZGxscy91c2VyL3Jlc291cmNlcy9kaXNwbGF5LnJjMTYsIGRsbHMvdXNlci9yZXNvdXJjZXMvbW91c2UucmMsIGRsbHMvdXNlci9yZXNvdXJjZXMvbW91c2UucmMxNiwgaWYxNjMyL2J1aWx0aW4uYywgdG9vbHMvd2luZWJ1aWxkL01ha2VmaWxlLmluLCB0b29scy93aW5lYnVpbGQvYnVpbGQuaCwgdG9vbHMvd2luZWJ1aWxkL21haW4uYywgdG9vbHMvd2luZWJ1aWxkL3BhcnNlci5jLCB0b29scy93aW5lYnVpbGQvcmVzMTYuYywgdG9vbHMvd2luZWJ1aWxkL3JlczMyLmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMTYuYywgdG9vbHMvd2luZWJ1aWxkL3V0aWxzLmM6CglBZGRlZCBzdXBwb3J0IGZvciBsb2FkaW5nIC5yZXMgZmlsZXMgZm9yIDE2LWJpdCByZXNvdXJjZXMuCgoJKiByZWxheTMyL2J1aWx0aW4zMi5jOgoJUmVtb3ZlZCBubyBsb25nZXIgdXNlZCBzdHJ1Y3R1cmUgZGVmaW5pdGlvbi4KCgkqIHRvb2xzL3dyYy93cml0ZXJlcy5jOgoJMTYtYml0IHJlc291cmNlIHNpemUgbXVzdCBiZSBzY2FsZWQgYnkgYWxpZ25tZW50LgoKCSogZGxscy9jb21jdGwzMi90YWIuYzoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgVENTX1ZFUlRJQ0FMIHN0eWxlLiAgRml4IHRhYiBib3JkZXJzIHRvIGhhdmUgc2hhZGluZyB0aGF0CgltYXRjaGVzIFdpbmRvd3MuICBDZW50ZXIgaW1hZ2UgYW5kIHRleHQgaW4gdGFicy4gIFNpemUgdGFicyB0bwoJY29tcGxldGVseSBmaWxsIGVhY2ggcm93IHdpdGggbXVsdGlsaW5lIHN0eWxlLiAgRml4IHBvc2l0aW9uaW5nIG9mCgl0YWJzIGZvciBUQ1NfQk9UVE9NIHN0eWxlLiAgRml4IHZhcmlvdXMgZHJhd2luZyBpc3N1ZXMuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6CglTdXNhbiBGYXJsZXkgPHN1c2FuQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gV2hlbiBpbnNlcnRpbmcgYW4gaXRlbSwgZG8gbm90IGludmFsaWRhdGUgdGhlIGFyZWEgYWJvdmUgdGhlIG5ldwoJICBpdGVtLgoJLSBUaGUgZGVidWcgZnVuY3Rpb24gdGhhdCB2ZXJpZmllcyB0aGUgdHJlZSBhZnRlciBlYWNoIGluc2VydGlvbgoJICBzaG91bGQgYmUgZGlzYWJsZWQgYnkgZGVmYXVsdC4KCgkqIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlaW1wbGVtZW50IHBhdGNoIGJ5IE1hcmN1cyBNZWlzc25lciAoJzk4KSB0byAiZml4IiBwcm9ibGVtcyB3aXRoCglEU0NBUFNfRU1VTERSSVZFUiBmbGFnIGZvciBnYW1lcyBsaWtlIFF1YWtlIDIgYW5kIFVucmVhbCBUb3VybmFtZW50LgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCVRyYW5zZm9ybSBkZXZpY2Ugb3BlbiBlcnJvciBUUkFDRSgpcyBpbnRvIFdBUk4oKTsgYmV0dGVyIGVycm9yIG1zZ3MuCgoJKiB3aW5kb3dzL3dpbnBvcy5jOgoJUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCUluIFNXUF9Eb05DQ2FsY1NpemUoKSB3aGVuIGRldGVybWluaW5nIHdoZXRoZXIgdGhlIGNsaWVudCBhcmVhIGhhcwoJbW92ZWQsIHVzZSB0aGUgY2xpZW50IGNvb3JkaW5hdGVzIGFzIHRoZXkgYXJlOiBub3QgcmVsYXRpdmUgdG8gaXRzCgl3aW5kb3cgY29vcmRpbmF0ZXMuCgoJKiB3aW5kb3dzL3N5c3BhcmFtcy5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBTUElfR0VUV0lORE9XU0VYVEVOU0lPTi4KCgkqIHNjaGVkdWxlci9wcm9jZXNzLmM6CglKZXJlbXkgV2hpdGUgPGp3aGl0ZUBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBzdXBwb3J0IGZvciBhIFdJTkVMT0FERVIgZW52aXJvbm1lbnQgdmFyaWFibGUgd2hpY2ggYWxsb3dzIHRoZQoJc3BlY2lmaWNhdGlvbiBvZiBhIGRpZmZlcmVudCBiaW5hcnkgbG9hZGVyLgoKMjAwMC0xMC0yNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvbW9kdWxlLmgsIGxvYWRlci9wZV9yZXNvdXJjZS5jOgoJUmVtb3ZlZCBHZXRSZXNEaXJFbnRyeUEvVy4KCgkqIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYywgZGxscy9zaGVsbDMyL3NoZWxsLmM6CglJbXBsZW1lbnQgSW50ZXJuYWxFeHRyYWN0SWNvbiBieSBjYWxsaW5nIFByaXZhdGVFeHRyYWN0SWNvbnMgaW5zdGVhZAoJb2YgZHVwbGljYXRpbmcgYWxsIHRoZSBjb2RlLgoKCSogdG9vbHMvd3JjL01ha2VmaWxlLmluLCB0b29scy93cmMvZ2VucmVzLmMsIHRvb2xzL3dyYy91dGlscy5jLCB0b29scy93cmMvdXRpbHMuaCwgdG9vbHMvd3JjL3dyaXRlcmVzLmM6CglBZGRlZCBjb2RlcGFnZSB0cmFuc2xhdGlvbiBiYXNlZCBvbiB0aGUgbGFuZ3VhZ2UgaWQgKGJhc2VkIG9uIGEgcGF0Y2gKCWJ5IEp1bmljaGkgS3VjaGluaXNoaSA8amt1Y2hpQG1haG9yb2JhLm5lLmpwPikuCgoJKiBjb250cm9scy9tZW51LmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQ29udmVydGVkIG1lbnUgc3RyaW5nIGhhbmRsaW5nIHRvIFVuaWNvZGUuCgoJKiBkbGxzL3dpbnNvY2svd3MyXzMyLnNwZWM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgZm9yd2FyZCBmb3IgV1NBUmVzZXRFdmVudC4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYzoKCVJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglDb252ZXJ0IHRoZSB2YWx1ZSBvZiBsZXZlbCB3aGVuIHNldHNvY2tvcHQgaXMgY2FsbGVkIHdpdGgKCVdTX1NPX0RPTlRMSU5HRVIuCgoJKiBtaXNjL29wdGlvbnMuYywgc2VydmVyL3JlcXVlc3QuYywgZGxscy9kc291bmQvZHNvdW5kX21haW4uYywgZGxscy9vZGJjMzIvcHJveHlvZGJjLmMsIGRsbHMvd2luZXBzL2luaXQuYywgaWYxNjMyL3RodW5rLmMsIGxvYWRlci90YXNrLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUV4cGxpY2l0bHkgaW5pdGlhbGl6ZSBzdHJ1Y3R1cmVzLgoKCSogb2JqZWN0cy9wYWxldHRlLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gRXhwbGljaXRseSBpbml0aWFsaXplIHN0cnVjdHVyZXMuCgktIEZpeGVkIHN0cmFuZ2UgY29kZSBwcm9iYWJseSBjYXVzZWQgYnkgYSBtZXJnZSBjb25mbGljdC4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOgoJRnJhbmNvaXMgSmFjcXVlcyA8ZnJhbmNvaXNqQG1hY2FkYW1pYW4uY29tPgoJLSBBbGwgYXVkaW8gZGV2aWNlIGhhbmRsZXMgYXJlIGluaXRpYWxpemVkIHRvIC0xIGFuZCBzZXQgdG8gLTEgd2hlbiBjbG9zZWQuCgktIFdJTkVfV01fSEVBREVSIGV2ZW50IHNob3VsZCAqTk9UKiBtYWtlIHRoZSByZWNvcmRpbmcgdGhyZWFkIHN0YXJ0LiBUaGUKCSAgdGhyZWFkIHNob3VsZCBvbmx5IHN0YXJ0IHRocm91Z2ggd2F2ZUluU3RhcnQuIFRoZSBhcHBsaWNhdGlvbiBjYWxsaW5nCgkgIHdhdmVJbkFkZEJ1ZmZlciBtaWdodCBub3QgYmUgaW4gYSBzdGF0ZSB0byBwcm92aWRlIGFub3RoZXIgYnVmZmVyIGluCgkgIGEgcGVyaW9kIG9mIHRpbWUgc2hvcnQgZW5vdWdoIHRvIGF2b2lkIGJ1ZmZlciB1bmRlcnJ1biBpbiB3aWRSZWNvcmRlcgoJICB0aHJlYWQuCgktIHdpZFJlY29yZGVyIC0gaW1wcm92ZWQgcm9idXN0bmVzcyBvZiB3aWRSZWNvcmRlciB0byBhdm9pZCBzb21lIGRhdGEKCSAgbG9zcyB0aGF0IG9jY3VyZWQgd2hlbiBub3QgcmVhZGluZyBvbmUgZnVsbCBmcmFnbWVudCBmcm9tIHRoZSBPU1MKCSAgYXVkaW8gZHJpdmVyLgoKCSogZGxscy9kZHJhdy9kZHJhdy94MTEuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSB3YXJuaW5ncy4KCgkqIGluY2x1ZGUvY2Ryb20uaDoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQWRkZWQgc29tZSBtaXNzaW5nIGRlZmluZXMgZm9yIG5vbi1MaW51eC4KCgkqIHRvb2xzL3dpbmVidWlsZC9yZXMzMi5jOgoJRGF2aWQgRWxsaW90dCA8ZGZlQGluZmluaXRlLWludGVybmV0Lm5ldD4KCUZpeGVkIE9GRlNFVE9GIG1hY3JvIGRlZmluaXRpb24gZm9yIGdjYyAyLjk2LgoKCSogZGxscy9hZHZhcGkzMi9hZHZhcGkzMi5zcGVjLCBkbGxzL2FkdmFwaTMyL2NyeXB0LmM6CglKYW1lcyBIYXRoZXdheSA8amFtZXNAbWFjYWRhbWlhbi5jb20+CglBZGRlZCBzdHVicyBmb3IgQ3J5cHRHZW5SYW5kb20oKSwgQ3J5cHRSZWxlYXNlQ29udGV4dCgpLgoKCSogY29udHJvbHMvY29tYm8uYzoKCVN1c2FuIEZhcmxleSA8c3VzYW5AY29kZXdlYXZlcnMuY29tPgoJRG8gbm90IGJsb2NrIENCTl9FRElUQ0hBTkdFIGZvciBXTV9QQVNURSBvciBXTV9DVVQgd2l0aCB0aGUKCU5PRURJVE5PVElGWSBmbGFnLCBhcyB0aGVzZSBtc2dzIGNhbiBjb21lIGRpcmVjdGx5IGZyb20gdGhlIGFwcCB0byB0aGUKCWNvbWJvIHduZHByb2MuCgoJKiBvYmplY3RzL2VuaG1ldGFmaWxlLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCU1ha2UgRW51bUVuaE1ldGFGaWxlIHdvcmsuCgoJKiBkbGxzL3JwY3J0NC9ycGNydDQuc3BlYywgZGxscy9ycGNydDQvcnBjcnQ0X21haW4uYzoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnRlZCBScGNTdHJpbmdGcmVlQSBhbmQgVXVpZFRvU3RyaW5nQS4KCjIwMDAtMTAtMjMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBwcm9ncmFtcy91bmluc3RhbGxlci8uY3ZzaWdub3JlLCBwcm9ncmFtcy91bmluc3RhbGxlci9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvdW5pbnN0YWxsZXIvdW5pbnN0YWxsZXIuc3BlYywgcHJvZ3JhbXMvdmlldy8uY3ZzaWdub3JlLCBwcm9ncmFtcy92aWV3L01ha2VmaWxlLmluLCBwcm9ncmFtcy92aWV3L3ZpZXcuc3BlYywgcHJvZ3JhbXMvd2NtZC8uY3ZzaWdub3JlLCBwcm9ncmFtcy93Y21kL01ha2VmaWxlLmluLCBwcm9ncmFtcy93Y21kL3djbWQuc3BlYywgcHJvZ3JhbXMvd2luZW1pbmUvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvd2luZW1pbmUvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmVtaW5lL3dpbmVtaW5lLnNwZWMsIHByb2dyYW1zL3dpbmhlbHAvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvd2luaGVscC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luaGVscC93aW5oZWxwLnNwZWMsIHJlbGF5MzIvYnVpbHRpbjMyLmMsIHRvb2xzL21ha2VkZXAuYywgZGxscy91c2VyL3Jlc291cmNlcy8uY3ZzaWdub3JlLCBkbGxzL3dpbmVwcy8uY3ZzaWdub3JlLCBkbGxzL3dpbmVwcy9NYWtlZmlsZS5pbiwgZGxscy93aW5lcHMvd2luZXBzLnNwZWMsIGRsbHMvd2lubW0vLmN2c2lnbm9yZSwgZGxscy93aW5tbS9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS93aW5tbS5zcGVjLCBpZjE2MzIvTWFrZWZpbGUuaW4sIGxpYnRlc3QvLmN2c2lnbm9yZSwgbGlidGVzdC9NYWtlZmlsZS5pbiwgbGlidGVzdC9oZWxsbzMuc3BlYywgcHJvZ3JhbXMvYXZpdG9vbHMvTWFrZWZpbGUuaW4sIHByb2dyYW1zL2Nsb2NrLy5jdnNpZ25vcmUsIHByb2dyYW1zL2Nsb2NrL01ha2VmaWxlLmluLCBwcm9ncmFtcy9jbG9jay9jbG9jay5zcGVjLCBwcm9ncmFtcy9jbWRsZ3RzdC8uY3ZzaWdub3JlLCBwcm9ncmFtcy9jbWRsZ3RzdC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvY21kbGd0c3QvY21kbGd0c3Quc3BlYywgcHJvZ3JhbXMvbm90ZXBhZC8uY3ZzaWdub3JlLCBwcm9ncmFtcy9ub3RlcGFkL01ha2VmaWxlLmluLCBwcm9ncmFtcy9ub3RlcGFkL25vdGVwYWQuc3BlYywgcHJvZ3JhbXMvcHJvZ21hbi8uY3ZzaWdub3JlLCBwcm9ncmFtcy9wcm9nbWFuL01ha2VmaWxlLmluLCBwcm9ncmFtcy9wcm9nbWFuL3Byb2dtYW4uc3BlYywgTWFrZS5ydWxlcy5pbiwgZGxscy9jb21jdGwzMi8uY3ZzaWdub3JlLCBkbGxzL2NvbWN0bDMyL01ha2VmaWxlLmluLCBkbGxzL2NvbWN0bDMyL2NvbWN0bDMyLnNwZWMsIGRsbHMvY29tbWRsZy8uY3ZzaWdub3JlLCBkbGxzL2NvbW1kbGcvTWFrZWZpbGUuaW4sIGRsbHMvY29tbWRsZy9jb21kbGczMi5zcGVjLCBkbGxzL2tlcm5lbC8uY3ZzaWdub3JlLCBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZGxscy9tc2FjbS8uY3ZzaWdub3JlLCBkbGxzL21zYWNtL21zYWNtMzIuc3BlYywgZGxscy9zZXJpYWx1aS8uY3ZzaWdub3JlLCBkbGxzL3NlcmlhbHVpL3NlcmlhbHVpLnNwZWMsIGRsbHMvc2hlbGwzMi8uY3ZzaWdub3JlLCBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW4sIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsIGRsbHMvdXNlci9NYWtlZmlsZS5pbiwgZGxscy91c2VyL2Rpc3BsYXkuc3BlYywgZGxscy91c2VyL21vdXNlLnNwZWMsIGRsbHMvdXNlci91c2VyMzIuc3BlYzoKCUJ1aWxkIFdpbjMyIHJlc291cmNlcyBhcyAucmVzIGZpbGVzIGFuZCBkdW1wIHRoZW0gaW50byB0aGUgLnNwZWMuYyBmaWxlLgoKCSogdG9vbHMvd2luZWJ1aWxkL01ha2VmaWxlLmluLCB0b29scy93aW5lYnVpbGQvYnVpbGQuaCwgdG9vbHMvd2luZWJ1aWxkL3BhcnNlci5jLCB0b29scy93aW5lYnVpbGQvcmVzMzIuYywgdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jLCB0b29scy93aW5lYnVpbGQvdXRpbHMuYzoKCUFkZGVkIHN1cHBvcnQgZm9yIGxvYWRpbmcgV2luMzIgLnJlcyBmaWxlcy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzL3VzZXIvZGlzcC5yYywgZGxscy91c2VyL21vdXNlcmMucmMsIGRsbHMvdXNlci9yZXNvdXJjZXMvVE9ETywgZGxscy91c2VyL3Jlc291cmNlcy9kaXNwbGF5LnJjMTYsIGRsbHMvdXNlci9yZXNvdXJjZXMvbW91c2UucmMxNiwgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzIucmMsIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX0NhLnJjLCBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9Dcy5yYywgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfRGEucmMsIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX0RlLnJjLCBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9Fbi5yYywgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfRW8ucmMsIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX0VzLnJjLCBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9GaS5yYywgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfRnIucmMsIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX0h1LnJjLCBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9JdC5yYywgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfSmEucmMsIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX0tvLnJjLCBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9ObC5yYywgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfTm8ucmMsIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX1BsLnJjLCBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9QdC5yYywgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfUnUucmMsIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX1NrLnJjLCBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9Tdi5yYywgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfV2EucmM6CglNb3ZlZCBhbGwgVVNFUiByZXNvdXJjZXMgdG8gbmV3IGRsbHMvdXNlci9yZXNvdXJjZXMgZGlyZWN0b3J5LgoKCSogaW5jbHVkZS93aW5lL3dpbnVzZXIxNi5oLCBpbmNsdWRlL3dpbnZlci5oLCBkbGxzL3ZlcnNpb24vaW5mby5jLCBkbGxzL3ZlcnNpb24vcmVzb3VyY2UuYywgZGxscy92ZXJzaW9uL3Zlci5zcGVjLCBkbGxzL3ZlcnNpb24vdmVyMTYuYzoKCUR1cGxpY2F0ZSByZXNvdXJjZSBkaXJlY3Rvcnkgc2VhcmNoaW5nIHJvdXRpbmVzIGluc3RlYWQgb2YgY2FsbGluZwoJcGVfcmVzb3VyY2UuYyBpbnRlcm5hbCBmdW5jdGlvbnMuCglNYWRlIEdldEZpbGVSZXNvdXJjZTE2IGFuZCBHZXRGaWxlUmVzb3VyY2VTaXplMTYgY2FsbGFibGUgZGlyZWN0bHkKCWluc3RlYWQgb2YgZGVmaW5pbmcgZXh0cmEgaW50ZXJuYWwgZnVuY3Rpb25zLgoKCSogZGxscy91c2VyL2V4dGljb24uYzoKCUR1cGxpY2F0ZSByZXNvdXJjZSBkaXJlY3Rvcnkgc2VhcmNoaW5nIHJvdXRpbmVzIGluc3RlYWQgb2YgY2FsbGluZwoJcGVfcmVzb3VyY2UuYyBpbnRlcm5hbCBmdW5jdGlvbnMuCgoJKiB0b29scy93cmMvd3JpdGVyZXMuYzoKCUZpeGVkIGR1cGxpY2F0aW9uIG9mIHR5cGVuYW1lIGluIDE2LWJpdCBhc3NlbWJseSBvdXRwdXQuCgoJKiBtZW1vcnkvaGVhcC5jOgoJRml4ZWQgbXVsdGlieXRlIGhhbmRsaW5nIGluIEhFQVBfc3RyZHVwQXRvVy4KCgkqIGRsbHMvd2lubW0vbWNpY2RhL21jaWNkYS5jLCBpbmNsdWRlL2Nkcm9tLmgsIG1pc2MvY2Ryb20uYywgbXNkb3MvaW50MmYuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJQWx3YXlzIG9wZW4vY2xvc2UgdGhlIENELVJPTSBkZXZpY2UgZm9yIGV2ZXJ5IFdpbmRvd3MgQVBJIENELVJPTQoJYWNjZXNzLgoKCSogY29udHJvbHMvZWRpdC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW1tZDEuaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglEbyBub3Qgc2VuZCBFTl9VUERBVEUgdG8gbXVsdGktbGluZSBlZGl0IGNvbnRyb2xzLgoKCSogY29udHJvbHMvbWVudS5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglGaXhlZCB0aGUgdGV4dCBjb2xvciBvZiBoaWdsaWdodGVkIG1lbnUgYmFyIGl0ZW0gZm9yIHRoZSBXaW45OCBsb29rLgoJQ2xpY2tpbmcgb24gYSBzZXBhcmF0b3Igc2hvdWxkIG5vdCBjbG9zZSB0aGUgbWVudS4KCURvIG5vdCByaWdodCBhbGlnbiAnYml0bWFwJyBpdGVtcyBhbmQgdGhlIGhlbHAgbWVudSBmb3IgdGhlIFdpbjl4IGxvb2sKCWFuZCBmZWVscy4KCgkqIGZpbGVzL2Rvc19mcy5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglJZiB3ZSBoYXZlIGEgZHJpdmUgcG9pbnRpbmcgdG8gLywgd2UgbXVzdCBub3QgcmVtb3ZlIHRoZSBmaW5hbCAvIG9yIHdlCglnZXQgdGhlIGN1cnJlbnQgZGlyZWN0b3J5IGRvdWJsZWQuCgoJKiBkbGxzL2RkcmF3L2RkcmF3L2RnYS5jLCBkbGxzL2RkcmF3L2RkcmF3L21haW4uYywgZGxscy9kZHJhdy9kZHJhdy94MTEuYywgZGxscy9kZHJhdy9kZHJhd19wcml2YXRlLmgsIGRsbHMvZGRyYXcveDExX3ByaXZhdGUuaCwgaW5jbHVkZS9kZHJhdy5oOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBzb21lIGJhc2ljIElEaXJlY3REcmF3NyBpbnRlcmZhY2Ugc3VwcG9ydCwgZml4ZWQgYXJndW1lbnQgY291bnQKCW9mIElEaXJlY3REcmF3ezQsN31fU2V0RGlzcGxheU1vZGUgZGVmaW5lcy4KCgkqIHdpbmRvd3Mvd2lucG9zLmM6CglMb3VpcyBQaGlsaXBwZSBHYWdub24gPGxvdWlzcGhpbGlwcGVAbWFjYWRhbWlhbi5jb20+CgktIENhbGN1bGF0ZSBjaGFuZ2VzIGluIHRoZSBjbGllbnQgYXJlYSByZWxhdGl2ZSB0byB0aGUgd2luZG93CgkgIGluc3RlYWQgb2YgaXRzIHBhcmVudCB3aGVuIHVzaW5nIFNXUF9FWF9QQUlOVFNFTEYuCgktIFdpdGggU1dQX0VYX1BBSU5UU0VMRiwgY29weSBvbmx5IGlmIGNsaWVudCBhcmVhIGNoYW5nZWQsIHNpbmNlIGEKCSAgd2luZG93IGNhbid0IG1vdmUgcmVsYXRpdmUgdG8gaXRzZWxmLgoJLSBJbiBTV1BfRG9OQ0NhbGNTaXplLCB3aGVuIGRldGVybWluaW5nIGlmIHRoZSBjbGllbnQgYXJlYQoJICBjaGFuZ2VkLCB1c2UgdmFsdWVzIHJlbGF0aXZlIHRvIHRoZSB3aW5kb3cgaXRzZWxmLCBub3QgaXRzIHBhcmVudC4KCgkqIG9iamVjdHMvcmVnaW9uLmMsIHdpbmRvd3MvcGFpbnRpbmcuYywgd2luZG93cy9zY3JvbGwuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGltbWQxLmluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJRml4ZWQgcGFpbnRpbmcgcHJvYmxlbXMgaW4gbm9uLU1NX1RFWFQgbW9kZXMuCgoyMDAwLTEwLTIyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZmlsZXMvZG9zX2ZzLmMsIG1zZG9zL2Rvc2NvbmYuYywgc2VydmVyL3JlZ2lzdHJ5LmMsIHRvb2xzL3dpbmVidWlsZC9tYWluLmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYywgd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzoKCUpvZXJnIE1heWVyIDxqbWF5ZXJAbG9wbG9mLmRlPgoJUmVkdWNlIHRoZSBudW1iZXIgb2Ygd2FybmluZ3MgYWJvdXQgbWlzc2luZyBpbml0aWFsaXplcnMuCgoJKiBkbGxzL2NvbW1kbGcvY2RsZzMyLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUdvdCByaWQgb2YgbWlzbGVhZGluZyAiTm8gVGxzIFNwYWNlIiBlcnJvciBtZXNzYWdlLgoKCSogaW5jbHVkZS93aW5nZGkuaDoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgaXNzdWUgZm91bmQgYnkgd2luYXBpX2NoZWNrLgoKCSogZGxscy9kaW5wdXQvZGlucHV0X21haW4uYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSB3YXJuaW5ncy4KCgkqIGluY2x1ZGUvcHJvY2Vzcy5oOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglVc2UgaW50ZXJtZWRpYXRlIHR5cGVkZWYuCgoJKiB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5kYXQsIHRvb2xzL3dpbmFwaV9jaGVjay93aW4xNi9vbGUyZGlzcC5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4xNi90eXBlbGliLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL2tlcm5lbDMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL21zYWNtMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvb2xlYXV0MzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvdXNlcjMyLmFwaToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJTWlub3IgQVBJIGZpbGVzIHVwZGF0ZS4KCgkqIHdpbmRvd3MvZGVmd25kLmMsIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL3NweS5jLCBpbmNsdWRlL3NweS5oOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCUFkZGVkIHdQYXJhbSBhbmQgbFBhcmFtIGFzIHBhcmFtZXRlcnMgaW4gU1BZX0V4aXRNZXNzYWdlCglBZGRlZCBkdW1wIGZvciB0aGUgU1RZTEVDSEFOR1tJTkd8RURdIG1lc3NhZ2VzLgoJRHVtcCBzdHJ1Y3R1cmVzIG9uIGV4aXQgb25seSBpZiBtZXNzYWdlIGFsbG93cyBjaGFuZ2VzLgoKCSogd2luMzIvZXhjZXB0LmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gUHJpbnQgQ1MgcmVnIGF0IGNyYXNoIE1lc3NhZ2VCb3ggKG5lZWRlZCBmb3IgV2luMTYgcHJvZ3JhbXMpLgoJLSBBZGQgImhpbnQiIGZvciBkZWJ1Z2dlciBzZXR1cC4KCgkqIGRlYnVnZ2VyL01ha2VmaWxlLmluLCBkZWJ1Z2dlci93aW5lZGJnLnNwZWM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIGFkdmFwaTMyIHRvIGltcG9ydGVkIERMTHMgbGlzdC4KCgkqIGRsbHMvbXNhY20vcGNtY29udmVydGVyLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIG1vcmUgY29udmVyc2lvbiByb3V0aW5lcyAocmF0ZSBjb252ZXJzaW9uIGlzIGltcGxlbWVudGVkKS4KCUNsZWFuZWQgdXAgdGhlIGNvZGUuCgoJKiBkZWJ1Z2dlci9tc2MuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGltbWQxLmluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJUERCIHN5bWJvbCBoZWFkZXIgZm9ybWF0IGRlcGVuZHMgb25seSBvbiB2ZXJzaW9uIGNvZGUuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCURvIG5vdCBzZXQgdGhlIGlTdWJJdGVtIHBhcnQgb2YgdGhlIHN0cnVjdCBmb3IgTFZNX0hJVFRFU1QsCglhcHBsaWNhdGlvbnMgb25seSBuZWVkIHRvIHBhc3MgbWVtb3J5IHNwYWNlIHVwIHRvIGlJdGVtLgoKCSogUkVBRE1FOiBBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCU1lbnRpb24gdGhhdCB5b3UgbmVlZCB0aGUgWDExIGRldmVsIGZpbGVzLgoKCSogZGxscy9kZHJhdy9tYWluLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCURpcmVjdERyYXdDcmVhdGVFeCgpIHNob3VsZCBhbHJlYWR5IHJldHVybiB0aGUgaW50ZXJmYWNlIGZvciB0aGUKCXBhc3NlZCByZWZpaWQuCgoJKiBkbGxzL2RkcmF3L2RkcmF3L2RnYTIuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglDaGFuZ2UgdGhlIHdpZHRoIC8gaGVpZ2h0IHBhcmFtZXRlciBvbiBhIFNldERpc3BsYXlNb2RlLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGcuYzoKCUdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJRml4ZWQgYnVnIHdoZW4gY2hhbmdpbmcgZHJpdmVzIGluIDE2IGJpdCBzdHlsZSBkaWFsb2cgZm9yIGEgMzIgYml0IGFwcAoJKyBtaXNjZWxsYW5lb3VzIGZpeGVzLgoKCSogZGxscy91c2VyL2V4dGljb24uYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgdHdvIGNoZWNrcyBmb3Igb3V0IG9mIHJhbmdlIHBvaW50ZXIgYWNjZXNzZXMuCgoJKiBkZWJ1Z2dlci90eXBlcy5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBmbG9hdGluZyBwb2ludCBkYXRhIHByaW50aW5nIGFuZCBtYWRlIGJhc2ljIHR5cGVzIHJlYWRpbmcgbW9yZQoJcm9idXN0LgoKCSogZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYzoKCUphc29uIE1hd2RzbGV5IDxqYXNvbkBtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIHNvbWUgZmxpY2tlcmluZyB0aGF0IHdhcyBvY2N1cnJpbmcgaW4gdGhlIGltYWdlIGxpc3QgY29udHJvbAoJd2hlbiBpdCByZXBhaW50ZWQuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgc2xlZXAgdGltZSBjYWxjdWxhdGlvbiBmb3IgdGhlIHdvZFBsYXllciB0aHJlYWQuCglDaGFuZ2VkIHRoZSB3b2RQbGF5ZXIgdGhyZWFkIG1lc3NhZ2luZyB0byB1c2UgaXRzIG93biBmYXN0IDMwIGVudHJpZXMKCXJpbmcgYnVmZmVyIGxpc3QuCgoJKiBpbmNsdWRlL3dpbmJhc2UuaDoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlZCByZWR1bmRhbnQgdGhyZWFkIHByaW9yaXR5IGRlZmluZXMuCgoyMDAwLTEwLTE5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS9wcm9jZXNzLmg6CglQZXRlciBIdW5uaXNldHQgPGh1bm5pc2VAbm9ydGVsbmV0d29ya3MuY29tPgoJQWRkZWQgY3J0L21zdmNydCB0aHJlYWQgcHJvdG90eXBlcy4KCgkqIGRsbHMvd2lubW0vbWNpd2F2ZS9tY2l3YXZlLmM6CglGcmFuY29pcyBKYWNxdWVzIDxmcmFuY29pc2pAbWFjYWRhbWlhbi5jb20+CglBZGRlZCBhc3luY2hyb25vdXMgcmVjb3JkaW5nIGluIE1DSSBsYXllci4KCgkqIGluY2x1ZGUvd2ludXNlci5oOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglBZGRlZCBzdXBwb3J0IGZvciBBWkVSVFkga2V5Ym9hcmQgbGF5b3V0LgoKCSogZGxscy93aW5tbS93aW5lb3NzL21pZGkuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJU2VxdWVuY2VyIGVycm9yIG1lc3NhZ2UgZml4LgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJSmFtZXMgSGF0aGV3YXkgPGphbWVzQG1hY2FkYW1pYW4uY29tPgoJRml4IG1lc3NhZ2VzIHNlbnQgd2hlbiByaWdodC1jbGlja2luZyBpbiBhIGJsYW5rIChub24taXRlbSkgYXJlYSBvZiBhCglsaXN0dmlldy4KCgkqIGxvYWRlci9wZV9pbWFnZS5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJUGFzcyB0aGUgY29ycmVjdCBoRmlsZSB0byBQRV9DcmVhdGVNb2R1bGUuCgoJKiBkbGxzL2NvbWN0bDMyL2hlYWRlci5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJRHJhdyB0ZXh0IGFuZCBpY29ucywgaW1wbGVtZW50IG9yZGVyaW5nIGZ1bmN0aW9ucywgYWxsb3cgcmVvcmRlcmluZwoJd2l0aCBtb3VzZSBhbmQgZml4IHRoZSBXTV9OT1RJRlkgdGFyZ2V0LgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJQWRkZWQgc3VwcG9ydCBmb3IgQVpFUlRZIGtleWJvYXJkIGxheW91dC4KCgkqIHByb2dyYW1zL3Byb2dtYW4vZ3JvdXAuYywgcHJvZ3JhbXMvcHJvZ21hbi9ncnBmaWxlLmMsIHByb2dyYW1zL3Byb2dtYW4vcHJvZ21hbi5oLCBwcm9ncmFtcy9wcm9nbWFuL3Byb2dyYW0uYzoKCTxld2lsbEBuY2FsLnZlcmlvLmNvbT4KCUNoYW5nZWQgR1JPVVAgdG8gUFJPR0dST1VQLgoKCSogZmlsZXMvZG9zX2ZzLmMsIGZpbGVzL2ZpbGUuYywgaW5jbHVkZS93aW5udC5oOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglTa2lwIGRpcmVjdG9yeSBzeW1saW5rcyBpbiBET1NGU19GaW5kTmV4dEV4LgoKCSogZGxscy93aW5lcHMvZXNjYXBlLmM6IEJyaWFuIFBpcmllCglBZGRlZCBzdXBwb3J0IGZvciBQQVNTVEhST1VHSCBhbmQgUE9TVFNDUklQVF9QQVNTVEhST1VHSCBlc2NhcGVzLgoKCSogaW5jbHVkZS93aW5lL29ial9iYXNlLmgsIGluY2x1ZGUvb2JqYmFzZS5oLCBpbmNsdWRlL29sZWF1dG8uaCwgaW5jbHVkZS9vbGVjdGwuaCwgaW5jbHVkZS93aW5pbmV0Lmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQvZml4ZWQgbWlzc2luZyBleHRlcm4gIkMiLgoKCSogY29uc29sZS9pbnRlcmZhY2UuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglGaXhlZCBhIGNoYXIvTlVMTCBjb21wYXJpc29uLgoKCSogaW5jbHVkZS93aW5lcnJvci5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIHRoZSB7SFJFU1VMVCxTQ09ERX1fU0VWRVJJVFkgbWFjcm9zLgoKCSogZGxscy91c2VyL2V4dGljb24uYywgZGxscy92ZXJzaW9uL3Jlc291cmNlLmMsIGluY2x1ZGUvbW9kdWxlLmgsIGxvYWRlci9wZV9yZXNvdXJjZS5jLCBkbGxzL3NoZWxsMzIvc2hlbGwuYzoKCVVzZSBhIGJpbmFyeSBzZWFyY2ggdG8gZmluZCBlbnRyaWVzIGluIHJlc291cmNlIGRpcmVjdG9yaWVzLgoJRml4ZWQgR2V0UmVzRGlyRW50cnlBL1cgcHJvdG90eXBlcy4KCgkqIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYywgaW5jbHVkZS93aW51c2VyLmg6CglDYWxsIFByaXZhdGVFeHRyYWN0SWNvbiBpbiB1c2VyMzIgaW5zdGVhZCBvZiBkdXBsaWNhdGluZyB0aGUgY29kZS4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOgoJRnJhbmNvaXMgSmFjcXVlcyA8ZnJhbmNvaXNqQG1hY2FkYW1pYW4uY29tPgoJU2hvdWxkIHRlc3QgdW5peGRldiBhZ2FpbnN0IC0xIChzZWUgd29kT3Blbi93aWRPcGVuKS4KCXdpZFJlY29yZGVyOiBieXRlc1JlYWQgaXMgbm93IHRlc3RlZCBhZ2FpbnN0IChEV09SRCkgLTEuCgoJKiBsb2FkZXIvZWxmZGxsLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCUJhY2sgb3V0IG15IEVMRkRMTF9kbG9wZW4gcGF0Y2ggYW5kIGFkZCBhIHdhcm5pbmcgZm9yIGZ1dHVyZSBtaXNndWlkZWQKCWhhY2tlcnMuCgoJKiBtZW1vcnkvZ2xvYmFsLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbW1kMS5pbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFsbG93IGZyZWVpbmcgbG9ja2VkIGdsb2JhbCBtZW1vcnkgaGFuZGxlcy4KCgkqIHdpbmRvd3MvbWRpLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbW1kMS5pbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVdhdGNoIG91dCBmb3IgRGVmTURJQ2hpbGRQcm9jIGNhbGxzIG9uIG5vbi1NREktY2hpbGQgd2luZG93cy4KCgkqIGdyYXBoaWNzL3gxMWRydi9vZW1iaXRtYXAuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGltbWQxLmluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJRG9uJ3QgaG9sZCB0aGUgWDExIGxvY2sgd2hpbGUgY2FsbGluZyBHREkgb2JqZWN0IHJvdXRpbmVzLgoKCSogZGxscy94MTFkcnYveDExZHJ2X21haW4uYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglEbyBub3QgZG8gYW55IEdMWCBjYWxscyBvbiBhIGRpc3BsYXkgdGhhdCBkb2VzIG5vdCBzdXBwb3J0IEdMWC4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkBjb2Rld2VhdmVycy5jb20+CglSZWNhbGN1bGF0ZSBuSXRlbUhlaWdodCB3aGVuIExWU19TRVRJTUFHRUxJU1QgaXMgY2FsbGVkLiAgRml4ZXMgaWNvbnMKCWJlaW5nIGNob3BwZWQgb2ZmIGluIHRoZSBmaWxlIGRpYWxvZyB3aW5kb3cuICBBbGlnbiBpdGVtcyB0byB0b3AgYW5kCglyZWZyZXNoIGFmdGVyIHNvcnRpbmcsIGFzIHdpbmRvd3MgZG9lcy4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlMmRpc3AuYywgZGxscy9vbGVhdXQzMi9vbGUyZGlzcC5zcGVjLCBkbGxzL29sZWF1dDMyL29sZWF1dDMyLnNwZWM6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5AY29kZXdlYXZlcnMuY29tPgoJU3R1YiBDcmVhdGVEaXNwVHlwZUluZm8sIENyZWF0ZVN0ZERpc3BhdGNoMTYgYW5kIENyZWF0ZVN0ZERpc3BhdGNoLgoKCSogZGxscy9kcGxheXgvZHBjbGFzc2ZhY3RvcnkuYywgZGxscy9kcGxheXgvZHBsYXkuYywgZGxscy9kcGxheXgvZHBsYXlfZ2xvYmFsLmgsIGRsbHMvZHBsYXl4L2RwbGF5c3AuYywgZGxscy9kcGxheXgvZHBsYXl4X21lc3NhZ2VzLmMsIGRsbHMvZHBsYXl4L2RwbGF5eF9tZXNzYWdlcy5oLCBkbGxzL2RwbGF5eC9kcGxvYmJ5LmM6CglQZXRlciBIdW5uaXNldHQgPGh1bm5pc2VAbm9ydGVsbmV0d29ya3MuY29tPgoJLSBBZGQgcHJvcGVyIG1lc3NhZ2UgcmVwbHkgbWVjaGFuaXNtIGFuZCBzcCBwbGF5ZXIgZGF0YSBzdG9yYWdlCgktIE1vcmUgaW1wbGVtZW50YXRpb24gYW5kIGZpeGVzCgoJKiBpbmNsdWRlL3BvcHBhY2suaCwgaW5jbHVkZS9wc2hwYWNrMS5oLCBpbmNsdWRlL3BzaHBhY2syLmgsIGluY2x1ZGUvcHNocGFjazQuaCwgaW5jbHVkZS9wc2hwYWNrOC5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIHN1cHBvcnQgZm9yIHRocmVlIGxldmVscyBvZiBuZXN0aW5nIG9mIHRoZSAncHJhZ21hIHBhY2snCglkaXJlY3RpdmVzLgoKMjAwMC0xMC0xNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG1zZG9zL2ludDIwLmMsIG1zZG9zL2ludDIxLmMsIGluY2x1ZGUvZG9zZXhlLmgsIGluY2x1ZGUvdGFzay5oLCBsb2FkZXIvZG9zL21vZHVsZS5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglJbXBsZW1lbnRlZCBET1MgSU5UMjEgQUg9NEIgKEVYRUMpLgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYywgaW5jbHVkZS93aW51c2VyLmg6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCUFkZGVkIHN1cHBvcnQgZm9yIGtleWJvYXJkIGlucHV0IGluIHZhcmlvdXMgbG9jYWxlcy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgTFZNX1NFVElURU1QT1NJVElPTjMyLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJUmVtZW1iZXIgb3duZXIgSFdORCB3aGVuIGNyZWF0aW5nIGFuZCB1c2UgdGhpcyBod25kIGZvciB0aGUgV01fTk9USUZZCgltZXNzYWdlIHRhcmdldC4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaDoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglBZGRlZCBmbGFnIGFuZCBub3RpZmljYXRpb24gZGVmaW5pdGlvbnMgZm9yIENvbWJvQm94RXguCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwuc3BlYywgZGxscy9rZXJuZWwva2VybmVsX21haW4uYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50ZWQgb2xkIFdpbiAyLnggc3RyaW5nIGZ1bmN0aW9ucy4KCgkqIGRsbHMvZGRyYXcvZGRyYXcveDExLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJV2FybmluZyBmaXguCgoJKiBzZXJ2ZXIvcHRyYWNlLmM6CglHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCUFkZCBhcHByb3ByaWF0ZSBjYXN0cyB0byBjYWRkcl90IGZvciB0aGUgdGhpcmQgcGFyYW1ldGVyIG9mIHB0cmFjZSgpLgoKMjAwMC0xMC0xNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGxvYWRlci9kb3MvZG9zdm0uYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRml4ZWQgYSBjb3VwbGUgb2YgcmVjZW50IGJ1Z3MsIGFuZCBhZGRlZCBzb21lIG1vcmUgc2FmZWd1YXJkcyAoY291bGQKCWJlIGhhbmR5IGZvciBwb3J0YWJpbGl0eSBhbnl3YXkpIGFuZCB0cmFjZSBzdGF0ZW1lbnRzLgoKCSogc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3JlZ2lzdHJ5LmMsIHNlcnZlci9zZXJpYWwuYywgc2VydmVyL3RyYWNlLmMsIHRvb2xzL21ha2VfcmVxdWVzdHMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIG1pc2MvcmVnaXN0cnkuYywgbWVtb3J5L3JlZ2lzdHJ5LmMsIGluY2x1ZGUvc2VydmVyLmgsIGRsbHMva2VybmVsL2NvbW0uYywgZmlsZXMvZG9zX2ZzLmMsIGRsbHMvYWR2YXBpMzIvcmVnaXN0cnkuYzoKCUNvbnZlcnRlZCBhIGZldyBtb3JlIHNlcnZlciByZXF1ZXN0cyB0byB0aGUgbmV3IG1lY2hhbmlzbS4KCgkqIGRsbHMvbnRkbGwvbWlzYy5jLCBkbGxzL250ZGxsL250ZGxsX21pc2MuaCwgZGxscy9udGRsbC9yZWcuYywgaW5jbHVkZS9udGRkay5oOgoJRml4ZWQgYSBmZXcgcHJvdG90eXBlcy4KCgkqIGluY2x1ZGUvbWlzY2VtdS5oLCBtc2Rvcy9kb3NtZW0uYywgZGxscy9rZXJuZWwva2VybmVsX21haW4uYzoKCVNldCBzZWxlY3RvciAwMDAwSCBiYXNlIHRvIDB4ZjAwMDAgdW50aWwgdGhlIGZpcnN0IDY0SyBhcmUKCXVucHJvdGVjdGVkLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGRsbHMvc2hlbGwzMi9zaGxmaWxlb3AuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgU2hlbGxNZXNzYWdlQm94W0FXXSBidWZmZXJzIHVzYWdlIChpbiBzb21lIGNhc2VzLCB3cm9uZyBidWZmZXJzCgl3ZXJlIHVzZWQgOyBkZXN0aW5hdGlvbiBidWZmZXIgZG9lc24ndCBoYXZlIGEgZml4ZWQgc2l6ZSkuCglGaXhlZCBGb3JtYXRNZXNzYWdlIHBhcmFtZXRlciB3YXJuaW5ncyAoaXQncyBub3cgYSB2YV9saXN0KikuCgoJKiBkbGxzL2RkcmF3L2RkcmF3L2RnYS5jOgoJR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglSZW1vdmUgdW51c2VkIHZhcmlhYmxlIG9yaWdfbW9kZS4KCgkqIGRsbHMvY29tY3RsMzIvdXBkb3duLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglEcmF3IHRoZSBzY3JvbGxiYXIgYmVzaWRlIHRoZSBidWRkeSB3aGVuIG5laXRoZXIgVURTX0FMSUdOW1JJR0hUfExFRlRdCglpcyBnaXZlbi4KCgkqIGRsbHMvY29tY3RsMzIvZGF0ZXRpbWUuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUxvY2FsaXphdGlvbiBhbmQgZXhwZWN0IGxlYXBkYXlzIHdoZW4gbG9va2luZyBmb3IgdGhlIGxlbmd0aCBvZiBhCgltb250aC4KCgkqIGRsbHMvY29tY3RsMzIvbW9udGhjYWwuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUxvY2FsaXphdGlvbiBhbmQgbWFueSBjaGFuZ2VzIHRvIGJlaGF2aW91ciBhbmQgb3V0bG9vay4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsX0RlLnJjLCBkbGxzL2NvbWN0bDMyL2NvbWN0bF9Fbi5yYywgZGxscy9jb21jdGwzMi9yc3JjLnJjOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJU3BsaXQgb3V0IHJlc291cmNlcyB0aGF0IG1pZ2h0IGJlIGxvY2FsaXplZC4KCUFkZGVkIEdlcm1hbiByZXNvdXJjZXMuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMyLmg6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglBZGRlZCBhZGRpdGlvbmFsIHJlc291cmNlIElEcy4KCgkqIGRsbHMvYWR2YXBpMzIvYWR2YXBpMzIuc3BlYywgZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTdHViYmVkIExvb2t1cEFjY291bnROYW1lQS4KCgkqIGRsbHMvZGRyYXcvbWFpbi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglSZXR1cm4gImRlZmF1bHQiIERpcmVjdERyYXcgZHJpdmVyIGlmIHdlIGhhdmUgYXQgbGVhc3Qgb25lIGRyaXZlcgoJcmVnaXN0ZXJlZC4KCgkqIHdpbmRvd3Mvbm9uY2xpZW50LmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCUZpeGVkIGJlaGF2aW91ciBvZiB3aW5kb3cncyBzeXN0ZW0gYnV0dG9ucy4KCgkqIGRsbHMvdXNlci9yZXNvdXJjZS5jOgoJUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCUxvYWRTdHJpbmdBIGluc2VydHMgdGVybWluYXRpbmcgbnVsbCBpbiB0aGUgYnVmZmVyIHdoZW4gdGhlIHN0cmluZwoJcmVzb3VyY2UgaXMgYW4gZW1wdHkgc3RyaW5nIG9yIHdoZW4gaXQgY2FuIG5vdCBiZSBmb3VuZC4KCjIwMDAtMTAtMTMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBncmFwaGljcy94MTFkcnYvb2VtYml0bWFwLmMsIGluY2x1ZGUvYml0bWFwcy9vY3JfaGFuZCwgaW5jbHVkZS93aW51c2VyLmg6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5AY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50ZWQgdGhlIElEQ19IQU5EIGN1cnNvci4KCgkqIGRsbHMva2VybmVsL2Zvcm1hdF9tc2cuYywgaW5jbHVkZS93aW5iYXNlLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJRml4ZWQgdGhlIHNpZ25hdHVyZSBvZiB0aGUgRm9ybWF0TWVzc2FnZSBBUElzLgoKCSogaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9tY3guaCwgaW5jbHVkZS93aW5iYXNlLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJVGhlIE1PREVNIHN0dWZmIGhhcyBiZWVuIHNwdW4gb2ZmIHRvIGl0cyByaWdodGZ1bCBwbGFjZTogbWN4LmguCgoJKiBpbmNsdWRlL3dpbm50LmgsIGluY2x1ZGUvd2luc29jay5oLCBpbmNsdWRlL3dpbmRvd3MuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglDb21wbGV0ZWQvY29ycmVjdGVkIHRoZSBsaXN0IG9mIGluY2x1ZGUgZmlsZXMuCglIYW5kbGUgV0lOMzJfTEVBTl9BTkRfTUVBTiBhbmQgdGhlIE5PeHh4IG1hY3Jvcy4KCgkqIGluY2x1ZGUvd2luZ2RpLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgYSBOT0dESSBwcm90ZWN0aW9uLgoJUmVwbGFjZWQgX01BWF9QQVRIIHdpdGggTUFYX1BBVEguCgkjdW5kZWYgY2FuIGJlIHVzZWQgZGlyZWN0bHkgb24gVFJBTlNQQVJFTlQuCgoJKiBpbmNsdWRlL29sZTIuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglNdXN0IGluY2x1ZGUgb2JqYmFzZS5oLgoKCSogZGxscy9vZGJjMzIvcHJveHlvZGJjLmMsIGluY2x1ZGUvd2luZGVmLmgsIGRsbHMva2VybmVsL2NvbW0uYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglIRklMRSBpcyBhbiBpbnQsIG5vdCBhIHJlZ3VsYXIgSEFORExFLgoKCSogaW5jbHVkZS93aW51c2VyLmg6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglBZGRlZCBNU0dGX0RERU1HUi4KCgkqIGRsbHMvZGRyYXcvZGRyYXcveDExLmM6CglHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCUZpeGVkIGluY29ycmVjdCBmb3JtYXQgc3RyaW5nLgoKCSogcHJvZ3JhbXMvd2luaGVscC93aW5oZWxwLmMsIHByb2dyYW1zL3dpbmhlbHAvd2luaGVscC5oOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIGNoYW5naW5nIG1vdXNlIGN1cnNvciB3aGVuIG92ZXIgYSBoZWxwIHRvcGljIGxpbmsuCgoJKiBkbGxzL2RpbnB1dC9kaW5wdXQuc3BlYywgZGxscy9kaW5wdXQvZGlucHV0X21haW4uYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSW1wbGVtZW50ZWQgRGlyZWN0SW5wdXRDcmVhdGVFeC4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzoKCUxvdWlzIFBoaWxpcHBlIEdhZ25vbiA8bG91aXNwaGlsaXBwZUBtYWNhZGFtaWFuLmNvbT4KCURvIG5vdCBzZW5kIGEgV01fQ09OVEVYVE1FTlUgbWVzc2FnZSB3aGVuIGEgVHJlZVZpZXcgcmVjZWl2ZXMgYQoJV01fUkJVVFRPTlVQLgoKCSogaWYxNjMyL2ZpbmRmdW5jLCB0b29scy9maW5kZnVuYzoKCUxhd3NvbiBXaGl0bmV5IDxsYXdzb25fd2hpdG5leUBqdW5vLmNvbT4KCU1ha2UgZmluZGZ1bmMgbG9vayBmb3IgLnNwZWMgZmlsZXMsIGFuZCBwdXQgaXQgd2l0aCB0aGUgb3RoZXIgdG9vbHMuCgoJKiBtZW1vcnkvdmlydHVhbC5jOgoJR3V5IEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCVZhbGlkYXRlIGFjY2VzcyBldmVuIGlmIHdyYXAgcGFzdCBhZGRyZXNzIDAgZm9yIElzQmFkU3RyaW5nUHRyW0F8V10KCWFuZCBJc0JhZFtSZWFkfFdyaXRlXVB0ci4KCgkqIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYywgZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYywgZGxscy9jb21jdGwzMi9saXN0dmlldy5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYywgZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmMsIGxvYWRlci9sb2Fkb3JkZXIuYywgbWVtb3J5L3JlZ2lzdHJ5LmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gc3R1cGlkIHNwZWxsaW5nIGZpeGVzCgktIHNvbWUgbW9yZSBsb2Fkb3JkZXIgYXJyYXkgd29yawoKCSogZGxscy9vbGUzMi9zdGdfc3RyZWFtLmMsIGZpbGVzL2RyaXZlLmMsIGZpbGVzL2ZpbGUuYywgaW5jbHVkZS9udGRkay5oLCBkbGxzL2tlcm5lbC90aW1lLmMsIGRsbHMvbnRkbGwvbGFyZ2VfaW50LmMsIGRsbHMvbnRkbGwvbnQuYywgZGxscy9udGRsbC9udGRsbC5zcGVjOgoJQWRkZWQgYSBmZXcgbW9yZSBsYXJnZSBpbnRlZ2VyIGZ1bmN0aW9ucy4KCgkqIGRsbHMvZ2RpL2dkaTMyLnNwZWMsIG9iamVjdHMvZGMuYzoKCU1hcmN1cyBNZWlzc25lciA8TWFyY3VzLk1laXNzbmVyQGNhbGRlcmEuZGU+CglTdHViYmVkIEdldERldmljZUdhbW1hUmFtcC4KCgkqIG1zZG9zL2ludDIxLmM6CglQZXRlciBIYXdraW5zIDxwZXRlckBoYXdraW5zLmVtdS5pZC5hdT4KCUFkZGVkIERPUyBpbnQgMjFoIGZ1bmN0aW9uIDQ0NTJoIHN1cHBvcnQgKERSLURPUyB2ZXJzaW9uIGNoZWNrKS4KCgkqIGdyYXBoaWNzL3gxMWRydi9kaWIuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRmlsbCBpbiB0aGUgZHNCbWloLmJpU2l6ZUltYWdlIGZpZWxkIG9mIERJQlNlY3Rpb25zIHdpdGggdGhlCgljYWxjdWxhdGVkIGJpdG1hcCBzaXplLgoKCSogZGxscy93aW5tbS93aW5lb3NzL21pZGkuYzoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJSW5kaWNhdGUgdGhhdCB0aGUgTUlESSBlcnJvciBtZXNzYWdlIG9ubHkgYWZmZWN0cyBwcm9ncmFtcyB0aGF0IG5lZWQgTUlESS4KCgkqIG1lbW9yeS9oZWFwLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCUdldCByaWQgb2Ygc2hhcmVkIGhlYXAgZml4bWUgbWVzc2FnZXMuCglTbGlnaHRseSBjb3JyZWN0ZWQgbXkgaGVhcCBjb21taXQgcGF0Y2ggKFhpbGlueCkuCgoJKiBsb2FkZXIvZG9zL2Rvc3ZtLmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCU1lcmdlZCBET1NWTV9JbnQgd2l0aCBET1NWTV9TaW11bGF0ZUludCwgYW5kIG1hZGUgaXQgaGFuZGxlIGFwcHMgdGhhdAoJcHVycG9zZWZ1bGx5IHNodWZmbGUgdGhlIGludGVycnVwdCB2ZWN0b3JzIGFyb3VuZC4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzoKCVN1c2FuIEZhcmxleSA8c2ZhcmxleUBjb2Rld2VhdmVycy5jb20+CglUbyBpbXByb3ZlIGN1c3RvbS1kcmF3biBpdGVtcywgYWRkIGZvY3VzIGJvcmRlciB0byBpdGVtUmVjdHMgYW5kIGRvCglub3Qgb3ZlcmxhcCB0aGVtLgoKCSogZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL2NvbW0uYywgZGxscy9rZXJuZWwva2VybmVsX21haW4uYywgZmlsZXMvZG9zX2ZzLmMsIGluY2x1ZGUvY29tbS5oLCBpbmNsdWRlL21zZG9zLmgsIG1pc2MvTWFrZWZpbGUuaW4sIG1pc2MvY29tbS5jLCBtc2Rvcy9pbnQxMS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQGxvb2tzbWFydC5jb20uYXU+CglNb3ZlZCBjb21tLmMgaW50byBrZXJuZWwzMi4KCgkqIGluY2x1ZGUvd2luZGVmLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQ2xhaW0gdGhhdCBvdXIgaGVhZGVycyBjb25mb3JtIHRvIHRoZSB2ZXJzaW9uIDUuMC4KCgkqIGluY2x1ZGUvcHJzaHQuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglUaGUgc3RyaW5nIGZpZWxkcyBpbiBQUk9QU0hFRVRQQUdFQSBzaG91bGQgYmUgQU5TSSBzdHJpbmdzLgoKCSogaW5jbHVkZS9vbGVjdGwuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglSZW1vdmVkIHRoZSBEVU1NWV9VTklPTl9OQU1FIGluIGZhdm9yIG9mIERVTU1ZVU5JT05OQU1FLgoKCSogaW5jbHVkZS9jb21tY3RybC5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIHRoZSBtaXNzaW5nIFRWSU5TRVJUU1RSVUNUIHN5bm9ueW1zLgoJQWRkZWQgbWlzc2luZyBDQkVJRl94eHggZGVmaW5pdGlvbnMuCgoJKiBkbGxzL29sZWF1dDMyL29sZTJkaXNwLmMsIGluY2x1ZGUvb2xlYXV0by5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVkIHRoZSBzaWduYXR1cmUgb2YgU3lzQWxsb2NTdHJpbmdCeXRlTGVuLgoKCSogZGxscy9jb21jdGwzMi9zdGF0dXMuYywgaW5jbHVkZS93aW4uaCwgaW5jbHVkZS93aW51c2VyLmgsIHdpbmRvd3Mvbm9uY2xpZW50LmMsIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3Mvd2lucG9zLmMsIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIHdpbmRvd3MveDExZHJ2L3duZC5jOgoJU3VzYW4gRmFybGV5IDxzZmFybGV5QGNvZGV3ZWF2ZXJzLmNvbT4KCVN0YXR1cyBiYXJzIG9uIG1hbmFnZWQgd2luZG93cyBzaG91bGQgbm90IGhhdmUgU0laRUdSSVAgc3R5bGUuCgoJKiBkbGxzL250ZGxsL3JlZy5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJTWFrZSByZWcgdGhlIGRlZmF1bHQgb3V0cHV0IGNoYW5lbC4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYzoKCVJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglJZ25vcmUgc2V0c29ja29wdCBjYWxscyB0aGF0IG1ha2UgdGhlIHNpemUgb2YgdGhlIHJlY2VpdmUgYnVmZmVyIHRvbwoJc21hbGwuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglTdGVwaGFuZSBMdXNzaWVyIDxzdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KCVN1Yml0ZW1zIG9mIGxpc3R2aWV3cyB3ZXJlIG5vdCBwYWludGVkIHdpdGggdGhlIHJpZ2h0IGJhY2tncm91bmQgd2hlbjoKCS1MVlNfRVhfRlVMTFJPV1NFTEVDVCBzdHlsZSBpcyBkZWZpbmVkCgktaXRlbSBpcyBzZWxlY3RlZAoJLUxpc3R2aWV3IGRvZXNuJ3QgaGF2ZSB0aGUgZm9jdXMuCgoJKiBzZXJ2ZXIvc29jay5jOgoJU3RlcGhhbmUgTHVzc2llciA8c3RlcGhhbmVAbWFjYWRhbWlhbi5jb20+CglBZnRlciBhY2NlcHQgaXMgY2FsbGVkIG9uIHRoZSBzb2NrZXQsIHRoZSBsaXN0ZW5pbmcgc29ja2V0IG5lZWRzIHRvIGJlCglyZXNlbGVjdGVkLgoKCSogbWVtb3J5L3JlZ2lzdHJ5LmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUNoZWNrIGZvciBidWZmZXIgb3ZlcmZsb3dzIG9uIGRhdGEgcmV0dXJucyBmcm9tIFJlZ1F1ZXJ5VmFsdWVFeEEuCgoJKiBpbmNsdWRlL3dpbmUvdW5pY29kZS5oOiBLb25yYWQgUmllY2sgPGtyQHIwcS5jeD4KCUNoYW5nZWQgcmVwbmUgdG8gcmVwbnogZm9yIFNvbGFyaXMgYXNzZW1ibGVyLgoKMjAwMC0xMC0xMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbmRlZi5oLCBpbmNsdWRlL3dpbmUvd2luYmFzZTE2LmgsIGluY2x1ZGUvd2lubmxzLmgsIGluY2x1ZGUvd2lubnQuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglNb3ZlZCBMQ1RZUEUsIEdldExvY2FsZUluZm8sIE5VTUJFUkZNVCwgQ1VSUkVOQ1lGTVQgYW5kIHRoZSByZWxhdGVkCglBUEkgdG8gd2lubmxzLmguCglNb3ZlZCBMQU5HX3h4eCwgU1VCTEFOR194eHgsIFNPUlRfeHh4IGFuZCBJU19URVhUX1VOSUNPREVfeHh4IHRvCgl3aW5udC5oLgoKCSogZGxscy91c2VyL3Jlc291cmNlLmMsIGluY2x1ZGUvd2ludXNlci5oLCB3aW5kb3dzL2N1cnNvcmljb24uYywgd2luZG93cy93aW5oZWxwLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgbWFueSBtaXNzaW5nICpQeHh4IHR5cGVzLgoJUmVtb3ZlZCBhIGZldyAqTFB4eHggdHlwZXMgdGhhdCBhcmUgbm90IHN1cHBvc2VkIHRvIGJlIHRoZXJlIChpbgoJcGFydGljdWxhciBMUElDT05JTkZPKS4KCUFkZGVkIGEgZmV3IG1pc3NpbmcgKkxQQ3h4eCB0eXBlcyAoTUVOVUlURU1JTkZPLCBTQ1JPTExJTkZPLAoJRExHSVRFTVRFTVBMQVRFKS4KCVdJTkhFTFAgYW5kIFBFX0FDQ0VMIGFyZSBpbnRlcm5hbCB0eXBlcy4KCU1VTFRJS0VZSEVMUCBhbmQgSEVMUFdJTklORk8gYm90aCBoYXZlIGFuIEEgYW5kIFcgdmFyaWFudC4KCU5VTUJFUkZNVCwgQ1VSUkVOQ1lGTVQgYW5kIHRoZSByZWxhdGVkIEFQSSBiZWxvbmcgdG8gd2lubmxzLmguCglBZGRlZCBtaXNzaW5nIEFSV194eHggZGVmaW5lcyAoZm9yIHN5c21ldHJpY3MpLgoKCSogaW5jbHVkZS93dHlwZXMuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglST1RGTEFHUyBoYXZlIHRoZWlyIG93biBpZmRlZiBwcm90ZWN0aW9uLCB0YWtlIHRoZW0gb3V0IG9mIHRoZQoJX1NFQ1VSSVRZX0RFRklORUQgaWZkZWYgYmxvY2suCgoJKiBpbmNsdWRlL3dpbmdkaS5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIGEgZGVjbGFyYXRpb24gZm9yIEdldEVuaE1ldGFGaWxlRGVzY3JpcHRpb24uCgoJKiB3aW5lZGVmYXVsdC5yZWc6IEFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUFkZGVkIEZvbnRzIHJlZ2lzdHJ5IGtleS4KCgkqIHdpbjMyL2V4Y2VwdC5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCByZWdyZXNzaW9uIGZvciBkZWJ1Z2dlciBzdGFydHVwIGV2ZW50IGNyZWF0aW9uLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5AY29kZXdlYXZlcnMuY29tPgoJRml4IGRlcHJlc3NlZCBzdGF0ZSB3aXRoIGZsYXQgdG9vbGJhcnMgc28gcHJlc3NpbmcgdGhlIGJ1dHRvbnMgZHJhd3MKCXRoZSBidXR0b24gaW4gYSBkZXByZXNzZWQgc3RhdGUuICBGaXggYml0bWFwIG9mZnNldHMsIGZpeGVzIGJpdG1hcAoJb2Zmc2V0IHByb2JsZW1zIGluIGZpbGUgY29tbW9uIGRpYWxvZy4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzoKCVN1c2FuIEZhcmxleSA8c2ZhcmxleUBjb2Rld2VhdmVycy5jb20+CglPbiBJbnNlcnRJdGVtIHdpdGggVFZJX0ZJUlNULCB0aGUgY2hlY2sgZm9yIHJlc2V0dGluZyBmaXJzdFZpc2libGUKCW11c3QgYmUgZG9uZSAqYmVmb3JlKiB0aGUgcGFyZW50J3MgZmlyc3RDaGlsZCBjaGFuZ2VzLgoKCSogZGxscy9kZHJhdy9kc3VyZmFjZS94MTEuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglTdXBwb3J0IG5vbi1idWZmZXJlZCBvdmVybGF5cy4KCgkqIGRsbHMvY29tY3RsMzIvcmViYXIuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglSZXdyaXRlIHRvIHN1cHBvcnQgcm93cyBvZiBiYW5kcy4KCURyYXcgc2VwYXJhdG9ycyBiZXR3ZWVuIGJhbmRzIGluIHJvd3MgYW5kIGJldHdlZW4gcm93cy4KCVN1cHBvcnQgdGV4dCBhbmQgYmFja2dyb3VuZCBjb2xvciBhbmQgY29sb3IgcHJvcGFnYXRpb24uCglJbXByb3ZlIGxheW91dCBjb2RlLgoJTWFrZSBmTWFzayBpbiBpbnRlcm5hbCBzdHJ1Y3R1cmUgdGhlIGluZGljYXRvciBvZiB2YWxpZCBpbmZvcm1hdGlvbi4KCUZpeCBzaXplIG9mIGdyaXBwZXJzLgoJQWRkIGRlYnVnZ2luZyB0cmFjZXMgZm9yIGZ1dHVyZS4KCgkqIGRsbHMvY29tY3RsMzIvaGVhZGVyLmM6CglTZXJnZSBJdmFub3YgPHNlcmdlaUBjb3JlbC5jb20+CglTaW1wbGUgTlVMTCBjaGVjay4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCVN0ZXBoYW5lIEx1c3NpZXIgPHN0ZXBoYW5lQG1hY2FkYW1pYW4uY29tPgoJLSBCYWNrZ3JvdW5kIHNob3VsZCBub3QgYmUgZHJhd24gaWYgdGhlIGJhY2tncm91bmQgY29sb3IgaXMgQ0xSX05PTkUuCgktIERvbid0IGNoYW5nZSB0aGUgc2l6ZSB0byAwIGZvciB0aGUgaGVhZGVyIGNvbnRyb2wgb2YgbGlzdHZpZXcgd2l0aAoJICBMVlNfTk9DT0xVTU5IRUFERVIgc3R5bGUuIEluIGZhY3QganVzdCBzZXR0aW5nIEhEU19ISURERU4gdG8gdGhlCgkgIGhlYWRlciBjb250cm9sIGlzIGVub3VnaC4KCgkqIGRsbHMvZGRyYXcvZGRyYXdfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L2NvbnZlcnQuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgMTYgKDU2NSkgLT4gMTUgKDU1NSkgYml0IGRlcHRoIGNvbnZlcnRlci4KCgkqIGdyYXBoaWNzL3gxMWRydi9jb2RlcGFnZS5jOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUFkZGVkIHN1cHBvcnQgZm9yIGNwOTM2LgoKCSogcmVsYXkzMi9yZWxheTM4Ni5jOiBXb3JrLWFyb3VuZCBmb3IgZ2NjIGJ1Zy4KCgkqIGRsbHMvZGRyYXcvZGRyYXcveDExLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJSW1wbGVtZW1udGVkIEdldEZvdXJDQ0NvZGVzLgoKCSogZGxscy9kZHJhdy9kZHJhdy9kZ2EuYywgZGxscy9kZHJhdy9kZHJhdy94MTEuYywgZGxscy9kZHJhdy9kZ2FfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L3gxMV9wcml2YXRlLmg6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUVuYWJsZSBYRjg2dm1vZGUgc3dpdGNoaW5nIHBvc3NpYmxlIGZvciBYMTEgdG9vLgoKCSogZGxscy9tc2FjbS9NYWtlZmlsZS5pbiwgZGxscy9tc2FjbS9kcml2ZXIuYywgZGxscy9tc2FjbS9mb3JtYXQuYywgZGxscy9tc2FjbS9pbnRlcm5hbC5jLCBkbGxzL21zYWNtL21zYWNtMzIuc3BlYywgZGxscy9tc2FjbS9wY21jb252ZXJ0ZXIuYywgZGxscy9tc2FjbS93aW5lYWNtLmg6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIFBDTSBjb252ZXJ0ZXIgaW50ZXJuYWwgZHJpdmVyLgoJQSBmZXcgZHJpdmVyIGhhbmRsaW5nIGZpeGVzLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW46CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJRml4ZWQgdGhlIE9wZW5HTCBkZXRlY3Rpb24gY29kZS4KCgkqIGRlYnVnZ2VyL3N0YWJzLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCUZpeGVkIGxvYWRpbmcgb2Ygc3ltYm9scyBmcm9tIGxpYnJhcmllcy4KCgkqIHdpbjMyL2ZpbGUuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCVByZXZlbnQgU2V0RmlsZUF0dHJpYnV0ZUEgZnJvbSBtYWtpbmcgZGlyZWN0b3J5IHJlYWQtb25seS4KCgkqIGluY2x1ZGUvd2luZGVmLmgsIGluY2x1ZGUvd2luZS9vYmpfYmFzZS5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUVuYWJsZSBhbm9ueW1vdXMgc3RydWN0L3VuaW9uIHN1cHBvcnQgYnkgZGVmYXVsdCBpbiBib3RoIEMgYW5kIEMrKy4KCURpc2FibGUgdGhlbSBmb3IgY29tcGlsZXJzIGtub3duIG5vdCB0byBzdXBwb3J0IHRoZW0uCglEaXNhYmxlIHRoZW0gZm9yIHRoZSBXSU5FIGNvZGUuCgoJKiBpbmNsdWRlL2RkZS5oLCBpbmNsdWRlL3dpbnVzZXIuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBmb3VyIERERWxQYXJhbSBmdW5jdGlvbnMuCglOb3cgbmVlZHMgYW4gJ2V4dGVybiAiQyInIHByb3RlY3Rpb24gZm9yIEMrKy4KCgkqIGRsbHMvdXNlci9kZGVtbC5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCB0aGUgcGFyYW1ldGVyIHR5cGVzIGFuZCBjb21tZW50cyBvZiB0aGUgRERFbFBhcmFtIGZ1bmN0aW9ucy4KCgkqIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbmluZXQuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJUmVtb3ZlZCBzdHJheSBBL1cgZnJvbSBpbnZvY2F0aW9ucyBvZiBXSU5FTElCX05BTUVfQVcuCgoJKiBtc2Rvcy9pbnQxMS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQGxvb2tzbWFydC5jb20uYXU+CglSZW1vdmVkIGRlcGVuZGVuY3kgb24gZ2xvYmFscyBMUFRbXSBhbmQgQ09Ne30uCgoJKiBkbGxzL29sZWF1dDMyL29sZWF1dDMyLnNwZWMsIGluY2x1ZGUvb2xlYXV0by5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBZGRlZCBzb21lIG9mIHRoZSBBUElzIGludHJvZHVjZWQgaW4gV2luOTgsIG1vc3RseSB0aGUgVmFyWHh4IG1hdGhzIEFQSXMuCgoJKiBtc2Rvcy92Z2EuYzogQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJUmVwbGFjZSBudWxsIGJ5dGVzIGJ5IHNwYWNlcyBpbiBXcml0ZUNvbnNvbGVPdXRwdXRBIGNhbGwuCgoJKiBkbGxzL3dpbm1tL21jaWNkYS9tY2ljZGEuYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCU1DSUNEQSBkaWRuJ3Qgb3Blbi9jbG9zZSB0aGUgZG9vciB3aGVuIGNhbGxpbmcgdGhlIGNvbW1hbmQgd2l0aG91dAoJdmFsaWQgcGFyYW1ldGVyIGJsb2NrIChpLmUuID09IE5VTEwpLgoKCSogZGxscy9vbGUzMi9vbGUyLmMsIGRsbHMvb2xlMzIvb2xlMnN0dWJzLmM6CglTdGVwaGFuZSBMdXNzaWVyIDxzdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGF0aW9uIG9mIE9sZUxvY2tSdW5uaW5nIGZ1bmN0aW9uLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUNvcnJlY3RlZCBzb21lIHNlZ3ZzIHRoYXQgb2NjdXIgd2l0aCBvd25lcmRhdGEgbGlzdHZpZXdzLgoKCSogb2JqZWN0cy9yZWdpb24uYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUmV0dXJuIHZhbHVlcyBhcmUgcmV2ZXJzZWQgaW4gZmFpbHVyZS9yZ2RhdGEgPT0gTlVMTCBjYXNlIGluCglHZXRSZWdpb25EYXRhICh3YXMgbWVyZ2UgZXJyb3IgYnkgbWUpLgoKCSogd2luMzIvZXhjZXB0LmMsIHdpbmVkZWZhdWx0LnJlZzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUNoYW5nZWQgZGVidWdnZXIgbGF1bmNoaW5nIHRvIGF1dG8gcGVyIGRlZmF1bHQuCgoJKiBkbGxzL2tlcm5lbC9ubHMvZGFuLm5sczoKCU5pZWxzIEtyaXN0aWFuIEJlY2ggSmVuc2VuIDxua2JqQGltYWdlLmRrPgoJRGVmaW5lIExPQ0FMRV9JREVGQVVMVE1BQ0NPREVQQUdFIGZvciBEYW5pc2ggbG9jYWxlLgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVN1cHByZXNzIGp1bmsgbm9pc2UgYXQgc3RhcnR1cCBvZiBEaXJlY3RTb3VuZCBvbiBTQiBMaXZlISBhbmQgRVMgMTM3MS4KCjIwMDAtMTAtMDMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL2RyaXZlLmgsIHNjaGVkdWxlci9wcm9jZXNzLmMsIGZpbGVzL2RyaXZlLmM6CglVc2Ugc3BlY2lhbCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdG8gdHJhbnNtaXQgdGhlIGN3ZCBvZiB0aGUgdmFyaW91cwoJZHJpdmVzIHRvIGNoaWxkIHByb2Nlc3NlcyAoYmFzZWQgb24gYSBwYXRjaCBieSBBbmRyZWFzIE1vaHIpLgoKCSogaW5jbHVkZS9tc2FjbS5oLCBpbmNsdWRlL3RjaGFyLmgsIGluY2x1ZGUvd2luaW5ldC5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZWQgdGhlICc7JyBlbmRpbmcgb24gbGluZXMgdXNpbmcgdGhlIERFQ0xfV0lORUxJQl9UWVBFX0FXIGFuZAoJV0lORUxJQl9OQU1FX0FXIG1hY3Jvcy4KCgkqIGluY2x1ZGUvb2xlYXV0by5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIHNvbWUgbWlzc2luZyAnU3lzQWxsb2NTdHJpbmcnIHByb3RvdHlwZXMuCglBZGRlZCBzb21lIG1pc3NpbmcgJ1R5cGVMaWInIHByb3RvdHlwZXMuCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglGaXhlZCBzb21lIHByb3RvdHlwZXMuCgoJKiBpbmNsdWRlL2JpdG1hcHMvb2NyX2liZWFtOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIGEgd2hpdGUgYm9yZGVyIGFyb3VuZCB0aGUgSS1iZWFtIGN1cnNvci4KCjIwMDAtMTAtMDIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBtZW1vcnkvZ2xvYmFsLmM6CglMYXdzb24gV2hpdG5leSA8bGF3c29uX3doaXRuZXlAanVuby5jb20+CglQcm90ZWN0IEdsb2JhbEhhbmRsZSgpIGFnYWluc3QgYmFkIHBhcmFtZXRlcnMuCgoJKiBkZWJ1Z2dlci9zdGFjay5jOgoJRml4ZWQgYmFja3RyYWNlIGZvciBhcHBzIHRoYXQgbmV2ZXIgY2FsbGVkIGRvd24gdG8gMTYtYml0IGNvZGUuCm4KCSogbG9hZGVyL3Rhc2suYzogQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJTWFrZSBzdXJlIHRoYXQgd2Ugc2tpcCB0YXNrcyB3aXRoIG1pc3NpbmcgaEluc3RhbmNlLgoKCSogbWVtb3J5L2dsb2JhbC5jOiBBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglJbnRyb2R1Y2VkIGEgbmV3IGFyZW5hIGZsYWcgY2FsbGVkIEdBX0RPU01FTSB0byBkaXN0aW5ndWlzaCBiZXR3ZWVuCglET1NNRU0gYW5kIG5vcm1hbCAid2luZG93cyIgZ2xvYmFsIG1lbS4KCgkqIGRsbHMvd2lubW0vbW1pby5jOgoJRnJhbmNvaXMgSmFjcXVlcyA8ZnJhbmNvaXNqQG1hY2FkYW1pYW4uY29tPgoJQnVnIGZpeGVzIGluIG1taW8sIHJlbGF0ZWQgdG8gYnVmZmVyaW5nIGluIHJlY29yZCBtb2RlLgoKMjAwMC0xMC0wMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIENoYW5nZUxvZywgaW5jbHVkZS92ZXJzaW9uLmgsIEFOTk9VTkNFOgoJUmVsZWFzZSAyMDAwMTAwMi4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KMjAwMC0xMC0wMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG1lbW9yeS9nbG9iYWwuYzoKCUxhd3NvbiBXaGl0bmV5IDxsYXdzb25fd2hpdG5leUBqdW5vLmNvbT4KCVByb3RlY3QgR2xvYmFsSGFuZGxlKCkgYWdhaW5zdCBiYWQgcGFyYW1ldGVycy4KCgkqIGRlYnVnZ2VyL3N0YWNrLmM6CglGaXhlZCBiYWNrdHJhY2UgZm9yIGFwcHMgdGhhdCBuZXZlciBjYWxsZWQgZG93biB0byAxNi1iaXQgY29kZS4KCgkqIGxvYWRlci90YXNrLmM6IEFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCU1ha2Ugc3VyZSB0aGF0IHdlIHNraXAgdGFza3Mgd2l0aCBtaXNzaW5nIGhJbnN0YW5jZS4KCgkqIG1lbW9yeS9nbG9iYWwuYzogQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJSW50cm9kdWNlZCBhIG5ldyBhcmVuYSBmbGFnIGNhbGxlZCBHQV9ET1NNRU0gdG8gZGlzdGluZ3Vpc2ggYmV0d2VlbgoJRE9TTUVNIGFuZCBub3JtYWwgIndpbmRvd3MiIGdsb2JhbCBtZW0uCgoJKiBkbGxzL3dpbm1tL21taW8uYzoKCUZyYW5jb2lzIEphY3F1ZXMgPGZyYW5jb2lzakBtYWNhZGFtaWFuLmNvbT4KCUJ1ZyBmaXhlcyBpbiBtbWlvLCByZWxhdGVkIHRvIGJ1ZmZlcmluZyBpbiByZWNvcmQgbW9kZS4KCgkqIHNlcnZlci9yZWdpc3RyeS5jLCBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvdHJhY2UuYywgbWVtb3J5L3JlZ2lzdHJ5LmMsIGluY2x1ZGUvbnRkZGsuaCwgaW5jbHVkZS9zZXJ2ZXIuaCwgZGxscy9udGRsbC9yZWcuYywgZGxscy9hZHZhcGkzMi9yZWdpc3RyeS5jOgoJQ29udmVydCBOdFF1ZXJ5S2V5IGFuZCBOdEVudW1lcmF0ZUtleSB0byB0aGUgbmV3IHJlcXVlc3QgbWVjaGFuaXNtLgoJRml4ZWQgYSBmZXcgYnVncy4KCgkqIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWM6CglGb3J3YXJkIGFsbCBsYXJnZSBpbnRlZ2VyIGZ1bmN0aW9ucyB0byBudGRsbC4KCgkqIG9sZS9vbGUybmxzLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglHZXREYXRlRm9ybWF0QTogQ2hlY2sgcmFuZ2UgYW5kIHJlY2FsY3VsYXRlIHdEYXlPZldlZWsuCglPTEVfR2V0Rm9ybWF0QXxXOiBGaXggdHJhbnNmb3JtYXRpb24gb2Ygd0RheU9mV2VlayB0bwoJTE9DQUxFX1MoQUJCUkVWKURBWU5BTUV4LgoKCSogaW5jbHVkZS93bmFzcGkzMi5oLCBkbGxzL2tlcm5lbC90aW1lLmMsIGRsbHMvd2luYXNwaS93aW5hc3BpMzIuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSBpc3N1ZXMgZm91bmQgYnkgd2luYXBpX2NoZWNrLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL2tlcm5lbDMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL250ZGxsLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3NoZWxsMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvc2hsd2FwaS5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi93bmFzcGkzMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4xNi9tbXN5c3RlbS5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4xNi9zZXR1cHguYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMTYvdXNlci5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGkucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfbG9jYWwucG0sIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLmRhdDoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBTdXBwb3J0IGZvciBzdGRjYWxsNjQKCS0gTWlub3IgQVBJIHVwZGF0ZXMuCgoJKiBsb2FkZXIvbG9hZG9yZGVyLmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglCZWF1dGlmaWVkIHRoZSBsb2Fkb3JkZXIgYXJyYXkgKGdyb3VwIERMTHMgYWNjb3JkaW5nIHRvIGZ1bmN0aW9uYWxpdHksCglhZGQgZ3JvdXAgaGVhZGVyIGNvbW1lbnRzLCAuLi4pLCBhZGRlZCBidWlsdGluIHgxMWRydiBhbmQgd2luYXNwaS4KCgkqIGRsbHMvbXNhY20vaW50ZXJuYWwuYzoKCUphbWVzIEhhdGhld2F5IDxqYW1lc0BtYWNhZGFtaWFuLmNvbT4KCVNpbGVuY2UgdW5uZWVkZWQgZXhjZXB0aW9uIHRvIGFsbG93IGVhc2llciBBQ00gZGVidWdnaW5nLgoKMjAwMC0xMC0wMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvc2VydmVyLmgsIG1lbW9yeS9yZWdpc3RyeS5jLCBzZXJ2ZXIvcmVnaXN0cnkuYywgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3RyYWNlLmMsIHRvb2xzL21ha2VfcmVxdWVzdHMsIGRsbHMvYWR2YXBpMzIvcmVnaXN0cnkuYywgZGxscy9udGRsbC9yZWcuYzoKCUNvbnZlcnRlZCBzb21lIG9mIHRoZSByZWdpc3RyeSBzZXJ2ZXIgcmVxdWVzdHMgdG8gdGhlIG5ldyByZXF1ZXN0CgltZWNoYW5pc20uCgoJKiB3aW4zMi90aW1lLmMsIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sIGRsbHMvbnRkbGwvbGFyZ2VfaW50LmMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy9udGRsbC9ydGwuYywgZGxscy9udGRsbC90aW1lLmMsIGluY2x1ZGUvbnRkZGsuaCwgaW5jbHVkZS93aW5udC5oLCBzY2hlZHVsZXIvdGltZXIuYywgZGxscy9rZXJuZWwvdGltZS5jOgoJSW1wbGVtZW50ZWQgYSBidW5jaCBvZiBsYXJnZSBpbnRlZ2VyIGZ1bmN0aW9ucyBpbiBudGRsbC4KCgkqIHRvb2xzL3dpbmVidWlsZC9idWlsZC5oLCB0b29scy93aW5lYnVpbGQvcGFyc2VyLmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYywgcmVsYXkzMi9yZWxheTM4Ni5jOgoJQWRkZWQgc3RkY2FsbDY0IGVudHJ5IHBvaW50IHR5cGUgdG8gYWxsb3cgY29ycmVjdCByZWxheSBkZWJ1Z2dpbmcKCXN1cHBvcnQgZm9yIGZ1bmN0aW9ucyB0aGF0IHJldHVybiA2NC1iaXQgdmFsdWVzLgoKMjAwMC0wOS0yOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG1lbW9yeS9oZWFwLmM6IEFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCU1ha2Ugc3VyZSB3ZSBjb21taXQgZW5vdWdoIG1lbW9yeSBpbiBhIG5ldyBzdWJoZWFwLgoKCSogZGxscy93aW5zcG9vbC93aW5zcG9vbC5kcnYuc3BlYywgZGxscy93aW5zcG9vbC9pbmZvLmM6CglTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1saW5lLmNvbT4KCS0gbW92ZWQgc29tZSBjb2RlIGZyb20gV0lOU1BPT0xfR2V0UHJpbnRlckRyaXZlciBpbnRvIG5ldyBmdW5jdGlvbgoJICBXSU5TUE9PTF9HZXREcml2ZXJJbmZvRnJvbVJlZwoJLSBidWcgZml4IGluIGZ1bmN0aW9uIEdldFByaW50ZXJEaXJlY3RvcnlXOiBmcmVlIGxvY2FsIHZhcmlhYmxlIG5vdAoJICB0aGUgb25lIGZyb20gZnVuY3Rpb24gaW50ZXJmYWNlCgktIGltcGxlbWVudGVkIEVudW1QcmludGVyRHJpdmVyc0F8VwoKCSogZmlsZXMvcHJvZmlsZS5jOiBBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglGaXhlZCB0aGUgZGVmYXVsdCB2YWx1ZSBoYW5kbGluZyAodHJhaWxpbmcgc3BhY2VzIG9mIHRoZSBkZWZhdWx0IHZhbHVlCglhcmUgY2xpcHBlZCkuCglzZWN0aW9uID09IE5VTEwsIGtleV9uYW1lID09IE5VTEwgdW5kb2MuIGZlYXR1cmUgaXMgb25seSB2YWxpZCBpbiBXaW4zMi4KCgkqIGRsbHMvbnRkbGwvc3luYy5jLCBpbmNsdWRlL250ZGRrLmgsIGxvYWRlci90YXNrLmMsIHNjaGVkdWxlci9NYWtlZmlsZS5pbiwgc2NoZWR1bGVyL2NyaXRzZWN0aW9uLmMsIHNjaGVkdWxlci9kZWJ1Z2dlci5jLCBzY2hlZHVsZXIvZXZlbnQuYywgc2NoZWR1bGVyL211dGV4LmMsIHNjaGVkdWxlci9zZW1hcGhvcmUuYywgc2NoZWR1bGVyL3N5c2xldmVsLmMsIHdpbjMyL01ha2VmaWxlLmluLCB3aW4zMi9leGNlcHQuYywgd2luMzIva2VybmVsMzIuYywgd2luMzIvbmV3Zm5zLmMsIHdpbjMyL3Byb2Nlc3MuYywgd2luMzIvdGltZS5jLCBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwvZGVidWdnZXIuYywgZGxscy9rZXJuZWwvc3luYy5jLCBkbGxzL2tlcm5lbC90aW1lLmM6CglNb3ZlZCBhIGJ1bmNoIG9mIHJvdXRpbmVzIHRvIGtlcm5lbDMyLmRsbCAod2l0aCB0aGUgaGVscCBvZgoJRGltaXRyaWUgTy4gUGF1bikuCgoJKiBvYmplY3RzL3BhbGV0dGUuYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUdESVNlbGVjdFBhbGV0dGUxNiBjaGVja2VkIEdldE9iamVjdFR5cGUoKSByZXR1cm4gdmFsdWUgZm9yCglQQUxFVFRFX01BR0lDIGluc3RlYWQgb2YgT0JKX1BBTC4KCgkqIGRsbHMvcmljaGVkaXQvcmljaGVkaXQuYywgZGxscy9zaGx3YXBpL3NobHdhcGlfbWFpbi5jLCBpbmNsdWRlL3NobHdhcGkuaCwgaW5jbHVkZS93aW5iYXNlLmgsIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglNb3ZlZCBETExWRVJTSU9OSU5GTyB0byBzaGx3YXBpLmguCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwuYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUxldCBJbnRlcm5hbEV4dHJhY3RJY29uMTYgbG9hZCBpY29ucyBmcm9tIGJ1aWx0aW4gRExMcy4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCU1vZGlmaWVkIHRoZSBiaXRtYXAgY2VudGVyaW5nIGFsZ29yaXRobSB0byB0YWtlIHRoZSBidXR0b24ncyBib3JkZXIKCWludG8gYWNjb3VudC4KCgkqIHdpbmRvd3MvdGltZXIuYywgaW5jbHVkZS9tZXNzYWdlLmgsIHdpbmRvd3MvbWVzc2FnZS5jOgoJU3RlcGhhbmUgTHVzc2llciA8c3RlcGhhbmVAbWFjYWRhbWlhbi5jb20+CglCZWZvcmUgY2FsbGluZyB0aGUgdGltZXIgd2luZG93IHByb2MsIG1ha2Ugc3VyZSBpdCBpcyB2YWxpZC4KCgkqIGRsbHMvbnRkbGwvbnQuYywgZGxscy9udGRsbC9ydGwuYywgZGxscy9udGRsbC9zZWMuYzoKCVJlbW92ZWQgYSBmZXcgZGVwZW5kZW5jaWVzIG9uIGtlcm5lbDMyIGZ1bmN0aW9ucy4KCgkqIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgaW5jbHVkZS9udGRkay5oLCBpbmNsdWRlL3dpbmJhc2UuaCwgc2NoZWR1bGVyL2NyaXRzZWN0aW9uLmMsIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sIGRsbHMvbnRkbGwvY3JpdHNlY3Rpb24uYzoKCU1vdmVkIGNyaXRpY2FsIHNlY3Rpb24gaW1wbGVtZW50YXRpb24gdG8gbnRkbGwuCgoJKiB3aW5kb3dzL3gxMWRydi9NYWtlZmlsZS5pbiwgd2luMzIvTWFrZWZpbGUuaW4sIHdpbmRvd3MvTWFrZWZpbGUuaW4sIHNjaGVkdWxlci9NYWtlZmlsZS5pbiwgdHN4MTEvTWFrZWZpbGUuaW4sIHJlbGF5MzIvTWFrZWZpbGUuaW4sIHJlc291cmNlcy9NYWtlZmlsZS5pbiwgb2JqZWN0cy9NYWtlZmlsZS5pbiwgb2xlL01ha2VmaWxlLmluLCBtaXNjL01ha2VmaWxlLmluLCBtaXNjZW11L01ha2VmaWxlLmluLCBtc2Rvcy9NYWtlZmlsZS5pbiwgbG9hZGVyL25lL01ha2VmaWxlLmluLCBtZW1vcnkvTWFrZWZpbGUuaW4sIGxvYWRlci9NYWtlZmlsZS5pbiwgbG9hZGVyL2Rvcy9NYWtlZmlsZS5pbiwgZ3JhcGhpY3MveDExZHJ2L01ha2VmaWxlLmluLCBpZjE2MzIvTWFrZWZpbGUuaW4sIGdyYXBoaWNzL3dpbjE2ZHJ2L01ha2VmaWxlLmluLCBncmFwaGljcy9lbmhtZXRhZmlsZWRydi9NYWtlZmlsZS5pbiwgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvTWFrZWZpbGUuaW4sIGZpbGVzL01ha2VmaWxlLmluLCBncmFwaGljcy9NYWtlZmlsZS5pbiwgY29uc29sZS9NYWtlZmlsZS5pbiwgY29udHJvbHMvTWFrZWZpbGUuaW4sIE1ha2UucnVsZXMuaW46CglNb3ZlZCAkKE1PRFVMRSkubyBydWxlIG91dCBvZiBNYWtlLnJ1bGVzIGludG8gdGhlIGluZGl2aWR1YWwKCU1ha2VmaWxlcy4KCgkqIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWMsIGluY2x1ZGUvc2hsd2FwaS5oLCBkbGxzL3NobHdhcGkvcmVnLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAbG9va3NtYXJ0LmNvbS5hdT4KCUltcGxlbWVudGVkIFNIRGVsZXRlRW1wdHlLZXlBLCBTSERlbGV0ZUtleUEuCgoJKiBvYmplY3RzL3JlZ2lvbi5jOgoJU2VyZ2VpIEl2YW5vdiA8c2VyZ2VpQGNvcmVsLmNvbT4KCUZpeGVkIHJldHVybiB2YWx1ZXMgb2YgR2V0UmVnaW9uRGF0YS4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJU3VzYW4gRmFybGV5IDxzZmFybGV5QGNvZGV3ZWF2ZXJzLmNvbT4KCUNhbGwgUmVsZWFzZUNhcHR1cmUgKHdoaWNoIHRyaWdnZXJzIFdNX0NBUFRVUkVDSEFOR0VEKSBhZnRlciB0aGUKCVdNX0NPTU1BTkQgZm9yIHRoZSBidXR0b24gaGFzIGJlZW4gc2VudCwgcmF0aGVyIHRoYW4gYmVmb3JlLgoKCSogZGxscy93aW5tbS93aW5tbV9yZXMucmM6CglGcmFuY29pcyBKYWNxdWVzIDxmcmFuY29pc2pAbWFjYWRhbWlhbi5jb20+CglVc2Ugd2F2ZWF1ZGlvLCBub3Qgd2F2ZWZvcm0uCgoJKiBkbGxzL29sZTMyL2NvbXBvYmouYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBhIGNvdXBsZSBvZiBUUkFDRSBtZXNzYWdlcy4KCgkqIGRlYnVnZ2VyL3N0YWJzLmM6CglHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCUFkZGVkIG1pc3NpbmcgY2FzdC4KCgkqIGluY2x1ZGUvd2luZS9tbXN5c3RlbTE2LmgsIGRsbHMvd2lubW0vbW1zeXN0ZW0uYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglGaXggdGhlIHJldHVybiB0eXBlIG9mIG1peGVyTWVzc2FnZTE2LgoKCSogaW5jbHVkZS93aW52ZXIuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglSZW5hbWVkIFZTX1VTRVJfSU5GTyB0byBWU19VU0VSX0RFRklORUQuCgoyMDAwLTA5LTI3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS9idWlsdGluMzIuaCwgbWlzY2VtdS8uY3ZzaWdub3JlLCBtaXNjZW11L01ha2VmaWxlLmluLCBtaXNjZW11L21haW4uYywgbWlzY2VtdS93aW5lLnNwZWMsIHJlbGF5MzIvYnVpbHRpbjMyLmMsIHRvb2xzL3dpbmVidWlsZC9NYWtlZmlsZS5pbiwgdG9vbHMvd2luZWJ1aWxkL2J1aWxkLmgsIHRvb2xzL3dpbmVidWlsZC9pbXBvcnQuYywgdG9vbHMvd2luZWJ1aWxkL21haW4uYywgdG9vbHMvd2luZWJ1aWxkL3BhcnNlci5jLCB0b29scy93aW5lYnVpbGQvc3BlYzMyLmMsIHRvb2xzL3dpbmVidWlsZC91dGlscy5jLCBNYWtlLnJ1bGVzLmluOgoJQ2hhbmdlZCB0aGUgV2luMzIgZGxsIGRlc2NyaXB0b3IgdG8gYmUgaW4gSU1BR0VfTlRfSEVBREVSUyBmb3JtYXQuCglHZW5lcmF0ZSB0aGUgaW1wb3J0IHRhYmxlIGRpcmVjdGx5IGluIFBFIGZvcm1hdC4KCUFkZGVkIGd1aS9jdWlleGVfbm9fbWFpbiBtb2RlcyBpbiBFWEUgc3BlYyBmaWxlcywgYW5kIHVzZSB0aGlzIGZvciB0aGUKCW1haW4gd2luZSBiaW5hcnkuCgoJKiBkbGxzL21zYWNtL01ha2VmaWxlLmluLCBkbGxzL21zYWNtL21zYWNtMzIuc3BlYywgZGxscy9vbGUzMi9vbGUzMi5zcGVjLCBkbGxzL29sZWF1dDMyL01ha2VmaWxlLmluLCBkbGxzL29sZWF1dDMyL29sZWF1dDMyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsIGRsbHMvdXNlci9NYWtlZmlsZS5pbiwgZGxscy91c2VyL3VzZXIzMi5zcGVjLCBkbGxzL3dpbmFzcGkvTWFrZWZpbGUuaW4sIGRsbHMvd2luYXNwaS93bmFzcGkzMi5zcGVjLCBkbGxzL3dpbnNvY2svd3MyXzMyLnNwZWMsIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvY29tY3RsMzIvTWFrZWZpbGUuaW4sIGRsbHMvY29tY3RsMzIvY29tY3RsMzIuc3BlYywgZGxscy9kcGxheXgvTWFrZWZpbGUuaW4sIGRsbHMvZHBsYXl4L2RwbGF5eC5zcGVjLCBkbGxzL2dkaS9NYWtlZmlsZS5pbiwgZGxscy9nZGkvZ2RpMzIuc3BlYzoKCUFkZGVkIGEgZmV3IG1pc3NpbmcgaW1wb3J0cy4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaCwgaW5jbHVkZS9jb21tZGxnLmgsIGluY2x1ZGUvb2xlYXV0by5oLCBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW5lcnJvci5oLCBpbmNsdWRlL3d0eXBlcy5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIHZhcmlvdXMgdHlwZSBhbmQgbWFjcm8gZGVmaW5pdGlvbnMgdGhhdCBhcmUgbmVlZGVkIHRvIGNvbXBpbGUKCXRoZSBsYXRlc3QgTUZDLgoKCSogZGxscy93aW5tbS93aW5lb3NzL21pZGkuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJU3RvcmUgYSBjb3B5IG9mIE1JRElPUEVOREVTQyBpbmZvcm1hdGlvbiBpbnN0ZWFkIG9mIHBvaW50ZXIuCgoJKiBkbGxzL3dpbm1tL21tc3lzdGVtLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVVubG9jayB3aW4xNiBjcnN0IHdoaWxlIHRodW5raW5nIHVwIHRvIDMyIGJpdCBkbGwuCgoJKiBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYzoKCUdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJSW5jbHVkZSA8dW5pc3RkLmg+IGZvciBwcm90b3R5cGUgb2Ygc2VsZWN0KCkuCgoJKiBzZXJ2ZXIvc29jay5jOgoJU3RlcGhhbmUgTHVzc2llciA8c3RlcGhhbmVAbWFjYWRhbWlhbi5jb20+CglTb2NrZXQgcmV0dXJuZWQgYnkgYWNjZXB0IGZ1bmN0aW9uIG9mIE1pY3Jvc29mdCBBUEkgc2hvdWxkIGtlZXAgdGhlCglwcm9wZXJ0aWVzIG9mIHRoZSBsaXN0ZW5pbmcgc29ja2V0LiBUaGlzIGlzIGFsc28gdHJ1ZSBmb3Igbm9uLWJsb2NraW5nCglwcm9wZXJ0eS4KCgkqIHdpbmRvd3Mvd2lucG9zLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCUlmIHdpbmRvdyB3YXMgbm90IHJlc2l6ZWQgYW5kIG5vdCBtb3ZlZCwgcmVwYWludCBvbmx5IGl0c2VsZiBleGNsdWRpbmcKCXBhcmVudC4KCgkqIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYywgaWYxNjMyL2J1aWx0aW4uYywgaW5jbHVkZS9idWlsdGluMzIuaCwgcmVsYXkzMi9yZWxheTM4Ni5jLCByZWxheTMyL3Nub29wLmM6CglHZW5lcmF0ZSBXaW4zMiBkbGwgZGVzY3JpcHRvciBzdHJ1Y3R1cmUgaW4gdGhlIC5zcGVjLmMgZmlsZSBzbyB0aGF0IHdlCglkb24ndCBuZWVkIHRvIGRlcGVuZCBvbiBidWlsdGluMzIuaC4KCgkqIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvbW91c2UuaCwgaW5jbHVkZS96bW91c2UuaDoKCUplcmVteSBXaGl0ZSA8andoaXRlQGNvZGV3ZWF2ZXJzLmNvbT4KCUNyZWF0ZWQgem1vdXNlLmgsIG1vdmVkIHdoZWVsIGNvZGUgZnJvbSBtb3VzZS5oIGludG8gaXQuCgoJKiBkbGxzL3dpbm1tL21jaWNkYS9tY2ljZGEuYzoKCUphbWVzIEFiYmF0aWVsbG8gPGFiYmV5akB3cGkuZWR1PgoJTUNJX1NUQVRVU19MRU5HVEggb24gV2luZG93cyByZXR1cm5zIG9uZSBmcmFtZSBsZXNzIHRoYW4gdGhlIHRvdGFsCgl0cmFjayBsZW5ndGggZm9yIHRoZSBsYXN0IHRyYWNrIG9uIGEgQ0QuICBUaGlzIGFsc28gYWZmZWN0cyBxdWVyaWVzCglmb3IgdGhlIHRvdGFsIGxlbmd0aCBvZiB0aGUgQ0QuCgoJKiBtc2Rvcy9kb3Nhc3BpLmMsIGluY2x1ZGUvd2luZS93aW5hc3BpLmgsIGluY2x1ZGUvbW1zeXN0ZW0uaCwgaW5jbHVkZS93bmFzcGkzMi5oLCBkbGxzL3dpbm1tL21tc3lzdGVtLmMsIGRsbHMvd2luYXNwaS93aW5hc3BpMzIuYzoKCUZpeGVkIGEgZmV3IG5vbiBwb3J0YWJsZSB6ZXJvLXNpemUgYXJyYXkgZGVjbGFyYXRpb25zLgoKCSogZmlsZXMvZHJpdmUuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSGF2ZSB0aGUgVU5JWCBjd2QgZm9sbG93IHRoZSBjdXJyZW50IGRpcmVjdG9yeSBvbiB0aGUgY3VycmVudCBkcml2ZS4KCgkqIHdpbmRvd3MveDExZHJ2L2V2ZW50LmM6CglTdGVwaGFuZSBMdXNzaWVyIDxzdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KCU9uIHJlY2VwdGlvbiBvZiBhIEZvY3VzT3V0IGV2ZW50LCBkb24ndCBkZWFjdGl2YXRlIHRoZSBhcHBsaWNhdGlvbiBpZiB0aGUKCW5leHQgd2luZG93IHRvIGdldCB0aGUgZm9jdXMgaXMgYSBXaW5lIHdpbmRvdy4KCjIwMDAtMDktMjYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkb2N1bWVudGF0aW9uL3N0YXR1cy9kaXJlY3RwbGF5LCBkbGxzL2RwbGF5eC9kcGxheS5jLCBkbGxzL2RwbGF5eC9kcGxheXNwLmMsIGRsbHMvZHBsYXl4L2RwbGF5c3AuaCwgZGxscy9kcGxheXgvZHBsYXl4LnNwZWMsIGRsbHMvZHBsYXl4L2RwbGF5eF9tZXNzYWdlcy5jLCBkbGxzL2RwbGF5eC9kcGxheXhfbWVzc2FnZXMuaCwgZGxscy9kcGxheXgvZHBsYXl4X3F1ZXVlLmgsIGRsbHMvZHBsYXl4L2RwbG9iYnkuYywgZGxscy9kcGxheXgvbmFtZV9zZXJ2ZXIuYywgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9kcGxheXgvTWFrZWZpbGUuaW46CglQZXRlciBIdW5uaXNldHQgPGh1bm5pc2VAbm9ydGVsbmV0d29ya3MuY29tPgoJLSBSZW1vdmUgd2lubW0gaGFjayBpbiBkcGxheSBjb2RlCgktIEZpeCB1cCBzb21lIG1pc3NpbmcgaG9sZXMgaW4gdGhlIGNvZGUKCS0gTW9yZSBtZXNzYWdlIGltcGxlbWVudGF0aW9uCgktIFN0YXR1cyBkb2N1bWVudGF0aW9uIHVwZGF0ZQoKCSogTWFrZS5ydWxlcy5pbiwgTWFrZWZpbGUuaW46CglNYXJjdXMgTWVpc3NuZXIgPE1hcmN1cy5NZWlzc25lckBjYWxkZXJhLmRlPgoJTWlncmF0ZSAkTERGTEFHUyBmcm9tIGNvbmZpZ3VyZSB0byBNYWtlZmlsZSBhbmQgaW50byBtYWluIHdpbmUKCWV4ZWN1dGFibGUuCgoJKiByZWxheTMyL2J1aWx0aW4zMi5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJRGlzcGxheSBhbiBFUlIoKSBpbiBjYXNlIG9mIHVuZGVmaW5lZCBzeW1ib2xzLgoKCSogZGxscy9zZXR1cGFwaS9NYWtlZmlsZS5pbiwgZGxscy9zZXR1cGFwaS9pbmZwYXJzZS5jLCBkbGxzL3NldHVwYXBpL3NldHVweC5zcGVjLCBkbGxzL3NldHVwYXBpL3NldHVweDE2LmgsIGRsbHMvc2V0dXBhcGkvc2V0dXB4X21haW4uYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCVN0YXJ0ZWQgc29tZSBiYXNpYyB3b3JrIG9uIHRoZSBtb3JlIG9yIGxlc3MgdW5kb2N1bWVudGVkIFNFVFVQWAoJZnVuY3Rpb25zLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglTdXNhbiBGYXJsZXkgPHNmYXJsZXlAY29kZXdlYXZlcnMuY29tPgoJU3VwcG9ydCBmb3IgVEJTVFlMRV9FWF9EUkFXRERBUlJPV1Mgc3R5bGU7IHJlc2V0IGNhcHR1cmUgYW5kIGJ1dHRvbgoJcHJlc3NlZCBmbGFncyBvbiBXTV9DQVBUVVJFQ0hBTkdFRC4KCgkqIG9iamVjdHMvZGMuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJV09SRCBpcyB1bnNpZ25lZCwgc28gd2UgbmVlZCB0byB0cmFuc2FsdGUgMHhmZmZmIGludG8gLTEuCgoJKiB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCB3aW4zMi9jb25zb2xlLmMsIHdpbmRvd3MvZGNlLmMsIHdpbmRvd3MvZGVmd25kLmMsIHdpbmRvd3MvbWRpLmMsIHdpbmRvd3Mvbm9uY2xpZW50LmMsIHdpbmRvd3Mvd2luLmMsIGluY2x1ZGUvd2luZS93aW51c2VyMTYuaCwgbXNkb3MvZG9zYXNwaS5jLCBtc2Rvcy94bXMuYywgb2xlL29sZTJubHMuYywgaW5jbHVkZS93aW5lL2V4Y2VwdGlvbi5oLCBpbmNsdWRlL3dpbmUva2V5Ym9hcmQxNi5oLCBpbmNsdWRlL3dpbmUvbW1zeXN0ZW0xNi5oLCBpbmNsdWRlL3dpbmUvb2JqX2Jhc2UuaCwgaW5jbHVkZS93aW5lL3dpbmFzcGkuaCwgaW5jbHVkZS93aW5lL3dpbmJhc2UxNi5oLCBpbmNsdWRlL3dpbmUvd2luZGVmMTYuaCwgaW5jbHVkZS93aW5lL3dpbmdkaTE2LmgsIGluY2x1ZGUvd2luZS93aW5uZXQxNi5oLCBpbmNsdWRlL3dpbmUvd2luc29jazE2LmgsIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbmNvbi5oLCBpbmNsdWRlL3dpbmRlZi5oLCBpbmNsdWRlL3dpbmdkaS5oLCBpbmNsdWRlL3dpbm5scy5oLCBpbmNsdWRlL3dpbnByb2MuaCwgaW5jbHVkZS93aW5zb2NrLmgsIGluY2x1ZGUvd2luc29jazIuaCwgaW5jbHVkZS93aW51c2VyLmgsIGluY2x1ZGUvd2ludmVyLmgsIGluY2x1ZGUvd25hc3BpMzIuaCwgaW5jbHVkZS93b3dudDMyLmgsIGluY2x1ZGUvd3R5cGVzLmgsIGluY2x1ZGUvbmVleGUuaCwgaW5jbHVkZS9ub25jbGllbnQuaCwgaW5jbHVkZS9udHNlY2FwaS5oLCBpbmNsdWRlL29sZS5oLCBpbmNsdWRlL29sZTIuaCwgaW5jbHVkZS9vbGVhdXRvLmgsIGluY2x1ZGUvc2hlbGxhcGkuaCwgaW5jbHVkZS90YXNrLmgsIGluY2x1ZGUvdGhyZWFkLmgsIGluY2x1ZGUvdG9vbGhlbHAuaCwgaW5jbHVkZS92ZncuaCwgaW5jbHVkZS93aW4uaCwgaW5jbHVkZS93aW5hc3BpLmgsIGluY2x1ZGUvYXNwaS5oLCBpbmNsdWRlL2Jhc2V0c2QuaCwgaW5jbHVkZS9idWlsdGluMTYuaCwgaW5jbHVkZS9jZHJvbS5oLCBpbmNsdWRlL2NsaXBib2FyZC5oLCBpbmNsdWRlL2NvbW1kbGcuaCwgaW5jbHVkZS9kY2UuaCwgaW5jbHVkZS9kZGVtbC5oLCBpbmNsdWRlL2RpbnB1dC5oLCBpbmNsdWRlL2ZpbGUuaCwgaW5jbHVkZS9nbG9iYWwuaCwgaW5jbHVkZS9sb2NhbC5oLCBpbmNsdWRlL2x6ZXhwYW5kLmgsIGluY2x1ZGUvbWVzc2FnZS5oLCBpbmNsdWRlL21pc2NlbXUuaCwgaW5jbHVkZS9tbWRkay5oLCBpbmNsdWRlL21tc3lzdGVtLmgsIGluY2x1ZGUvbW9kdWxlLmgsIGluY2x1ZGUvbXNhY20uaCwgaW5jbHVkZS9NYWtlZmlsZS5pbiwgaWYxNjMyL3Nub29wLmMsIGRsbHMvd2luc3Bvb2wvaW5mby5jLCBmaWxlcy9maWxlLmMsIGRsbHMvd2luc29jay9zb2NrZXQuYywgZGxscy93aW5tbS9tbXN5c3RlbS5jLCBkbGxzL3dpbm1tL3NvdW5kMTYuYywgZGxscy93aW5tbS93aW5lbW0uaCwgZGxscy93aW5hc3BpL2FzcGkuaCwgZGxscy93aW5hc3BpL3dpbmFzcGkxNi5jLCBkbGxzL3dpbjMycy93MzJzeXMuYywgZGxscy92ZXJzaW9uL3ZlcjE2LmMsIGRsbHMvdXNlci9kZGVtbC5jLCBkbGxzL3VzZXIvZGRlbWwxNi5oLCBkbGxzL3VzZXIvYmlkaTE2LmMsIGRsbHMvc2hlbGwzMi9waWRsLmgsIGRsbHMvc2hlbGwzMi9zaGVsbC5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwgZGxscy9zZXR1cGFwaS9zZXR1cHhfbWFpbi5jLCBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3JwY3J0NC9ycGNydDRfbWFpbi5jLCBkbGxzL29sZWNsaS9vbGVjbGlfbWFpbi5jLCBkbGxzL29sZXN2ci9vbGVzdnJfbWFpbi5jLCBkbGxzL29sZWF1dDMyL29sZTJkaXNwLmMsIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jLCBkbGxzL29sZWF1dDMyL3R5cGVsaWIuaCwgZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvaWZzLmMsIGRsbHMvb2xlMzIvb2xlMm5scy5jLCBkbGxzL21zdmlkZW8vbXN2aWRlb19tYWluLmMsIGRsbHMvbXN2aWRlby92ZncxNi5oLCBkbGxzL21zdmlkZW8vZHJhd2RpYi5jLCBkbGxzL21zYWNtL21zYWNtX21haW4uYywgZGxscy9tc2FjbS9tc2FjbWRydi5oLCBkbGxzL21zYWNtL3dpbmVhY20uaCwgZGxscy9rZXJuZWwvdXR0aHVuay5jLCBkbGxzL2tlcm5lbC93b3d0aHVuay5jLCBkbGxzL2x6ZXhwYW5kL2x6ZXhwYW5kX21haW4uYywgZGxscy9nZGkvYmlkaTE2LmMsIGRsbHMvZ2RpL3ByaW50ZHJ2LmMsIGRsbHMva2VybmVsL3N0cmVzcy5jLCBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jLCBkbGxzL2NvbW1kbGcvY2RsZy5oLCBkbGxzL2NvbW1kbGcvY29sb3JkbGcuYywgZGxscy9jb21jdGwzMi91cGRvd24uYywgZGxscy9jb21jdGwzMi9zdGF0dXMuYywgZGxscy9jb21jdGwzMi90cmVldmlldy5jLCBkbGxzL2NvbWN0bDMyL3Byb2dyZXNzLmMsIGNvbnRyb2xzL2xpc3Rib3guYywgY29udHJvbHMvbWVudS5jLCBjb250cm9scy9zY3JvbGwuYzoKCU1vdmVkIGFsbCBXaW4xNiBkZWZpbml0aW9ucyBvdXQgb2YgdGhlIHN0YW5kYXJkIFdpbmRvd3MgaGVhZGVycy4KCgkqIGxvYWRlci9wZV9yZXNvdXJjZS5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglBdm9pZCBjcmFzaGVzIGlmIDE2LWJpdCBtb2R1bGUgaGFuZGxlIHdhcyBwYXNzZWQgdG8gdGhlIDMyLWJpdAoJcmVzb3VyY2UgZW51bWVyYXRvci4KCgkqIGRsbHMvZGRyYXcvZGRyYXcveDExLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UveDExLmMsIGluY2x1ZGUvZGRyYXcuaCwgZGxscy9kZHJhdy9kZHJhd19wcml2YXRlLmgsIGRsbHMvZGRyYXcvaGVscGVyLmMsIGRsbHMvZGRyYXcveDExLmMsIGRsbHMvZGRyYXcveDExX3ByaXZhdGUuaCwgd2luZS5pbmk6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJQWRkZWQgc3VwcG9ydCBmb3IgRGlyZWN0RHJhdyBvdmVybGF5cyB1c2luZyB0aGUgWFZpZGVvIGV4dGVuc2lvbi4KCgkqIGdyYXBoaWNzL3gxMWRydi9jb2RlcGFnZS5jOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUNvZGUgY2xlYW51cC4KCUFkZCBjaGVja2luZyBmb3IgaW52YWxpZCBEQkNTIHRyYWlsZXIgYnl0ZXMuCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmg6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIHNvbWUgY29tbWN0bCBoZWFkZXIgaXNzdWVzIHJlcG9ydGVkIGluIG5ld3Nncm91cC4KCgkqIGRsbHMvd2luMzJzL3czMnNrZXJuZWwuYywgaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS93aW5lL3czMnNrcm5sLmgsIGluY2x1ZGUvd2luZS93aW5lc3RyaW5nLmgsIHJlc291cmNlcy9zeXNyZXNfV2EucmM6CglBIGZldyBpbmNsdWRlcyBjbGVhbnVwLgoKCSogcHJvZ3JhbXMvcmVnYXBpL3JlZ2FwaS5jLCBwcm9ncmFtcy93aW5oZWxwL21hY3JvLmMsIHByb2dyYW1zL25vdGVwYWQvZGlhbG9nLmMsIGxvYWRlci9tYWluLmMsIGluY2x1ZGUvd2luZS9vYmpfb2xldW5kby5oLCBpbmNsdWRlL3dpbmUvb2JqX29sZXZpZXcuaCwgaW5jbHVkZS93aW5lL29ial9waWN0dXJlLmgsIGluY2x1ZGUvd2luZS9vYmpfcHJvcGVydHkuaCwgaW5jbHVkZS93aW5lL29ial9wcm9wZXJ0eXN0b3JhZ2UuaCwgaW5jbHVkZS93aW5lL29ial9xdWVyeWFzc29jaWF0aW9ucy5oLCBpbmNsdWRlL3dpbmUvb2JqX3NoZWxsYnJvd3Nlci5oLCBpbmNsdWRlL3dpbmUvb2JqX3NoZWxsZXh0aW5pdC5oLCBpbmNsdWRlL3dpbmUvb2JqX3NoZWxsZm9sZGVyLmgsIGluY2x1ZGUvd2luZS9vYmpfc2hlbGxsaW5rLmgsIGluY2x1ZGUvd2luZS9vYmpfc2hlbGx2aWV3LmgsIGluY2x1ZGUvd2luZS9vYmpfc3RvcmFnZS5oLCBpbmNsdWRlL3dpbmUvdW5kb2NzaGVsbC5oLCBpbmNsdWRlL3dpbmUvb2JqX2NhY2hlLmgsIGluY2x1ZGUvd2luZS9vYmpfY2hhbm5lbC5oLCBpbmNsdWRlL3dpbmUvb2JqX2NsaWVudHNlcnZlci5oLCBpbmNsdWRlL3dpbmUvb2JqX2NvbW1kbGdicm93c2VyLmgsIGluY2x1ZGUvd2luZS9vYmpfY29ubmVjdGlvbi5oLCBpbmNsdWRlL3dpbmUvb2JqX2NvbnRleHRtZW51LmgsIGluY2x1ZGUvd2luZS9vYmpfY29udHJvbC5oLCBpbmNsdWRlL3dpbmUvb2JqX2RhdGFvYmplY3QuaCwgaW5jbHVkZS93aW5lL29ial9kb2NraW5nd2luZG93ZnJhbWUuaCwgaW5jbHVkZS93aW5lL29ial9kcmFnZHJvcC5oLCBpbmNsdWRlL3dpbmUvb2JqX2VudW1pZGxpc3QuaCwgaW5jbHVkZS93aW5lL29ial9lcnJvcmluZm8uaCwgaW5jbHVkZS93aW5lL29ial9leHRyYWN0aWNvbi5oLCBpbmNsdWRlL3dpbmUvb2JqX2lucGxhY2UuaCwgaW5jbHVkZS93aW5lL29ial9tYXJzaGFsLmgsIGluY2x1ZGUvd2luZS9vYmpfbWlzYy5oLCBpbmNsdWRlL3dpbmUvb2JqX21vbmlrZXIuaCwgaW5jbHVkZS93aW5lL29ial9vbGVhdXQuaCwgaW5jbHVkZS93aW5lL29ial9vbGVmb250LmgsIGluY2x1ZGUvd2luZS9vYmpfb2xlb2JqLmgsIGRsbHMvc2hsd2FwaS9zaGx3YXBpX21haW4uYywgZGxscy9zaGx3YXBpL3N0cmluZy5jLCBpbmNsdWRlL2RsZ3MuaCwgaW5jbHVkZS9tYWluLmgsIGluY2x1ZGUvb2NpZGwuaCwgaW5jbHVkZS9vbGUyLmgsIGluY2x1ZGUvb2xlYXV0by5oLCBpbmNsdWRlL29sZWlkbC5oLCBpbmNsdWRlL3NoZWxsLmgsIGluY2x1ZGUvc2hsb2JqLmgsIGluY2x1ZGUvc2hsd2FwaS5oLCBpbmNsdWRlL3dpbmRvd3MuaCwgZGxscy9zaGx3YXBpL3JlZ3N0cmVhbS5jLCBkbGxzL29sZWF1dDMyL29sZWZvbnQuYywgZGxscy9vbGVwcm8zMi9vbGVwcm8zMnN0dWJzLmMsIGRsbHMvc2hlbGwzMi9jbGFzc2VzLmMsIGRsbHMvc2hlbGwzMi9lbnVtaWRsaXN0LmMsIGRsbHMvc2hlbGwzMi9tZW1vcnlzdHJlYW0uYywgZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLCBkbGxzL3NoZWxsMzIvc2hlbGxmb2xkZXIuaCwgZGxscy9zaGVsbDMyL3NoZWxsZ3VpZC5jLCBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmMsIGRsbHMvc2hlbGwzMi9zaGVsbHN0cmluZy5jLCBkbGxzL3NoZWxsMzIvc2hsZmlsZW9wLmMsIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYywgZGxscy9zaGVsbDMyL3NobG1lbnUuYywgZGxscy9zaGVsbDMyL3NobHZpZXcuYywgZGxscy9zaGVsbDMyL3Nodl9iZ19jbWVudS5jLCBkbGxzL3NoZWxsMzIvc3lzdHJheS5jLCBkbGxzL29sZTMyL29sZTJpbXBsLmMsIGRsbHMvb2xlMzIvb2xlMnN0dWJzLmMsIGRsbHMvb2xlMzIvc3RnX2JpZ2Jsb2NrZmlsZS5jLCBkbGxzL29sZTMyL3N0Z19zdHJlYW0uYywgZGxscy9vbGUzMi9zdG9yYWdlMzIuaCwgZGxscy9vbGVhdXQzMi9jb25ucHQuYywgZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYywgZGxscy9jb21tZGxnL2NkbGcuaCwgZGxscy9vbGUzMi9hbnRpbW9uaWtlci5jLCBkbGxzL29sZTMyL2JpbmRjdHguYywgZGxscy9vbGUzMi9jb21wb3NpdGVtb25pa2VyLmMsIGRsbHMvb2xlMzIvZGF0YWNhY2hlLmMsIGRsbHMvb2xlMzIvZXJyb3JpbmZvLmMsIGRsbHMvb2xlMzIvaXRlbW1vbmlrZXIuYywgZGxscy9vbGUzMi9tb25pa2VyLmM6CglSZW1vdmVkIHNoZWxsLmguIENsZWFuZWQgdXAgdGhlIG5lc3RlZCBpbmNsdWRlcyBtZXNzIGluIHdpbmUvb2JqXyouaC4KCjIwMDAtMDktMjUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3NoZWxsMzIvY2xpcGJvYXJkLmMsIGRsbHMvc2hlbGwzMi9zaGVsbC5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYywgd2luZG93cy94MTFkcnYvZXZlbnQuYzoKCVVzZSBkb2N1bWVudGVkIERST1BGSUxFUyBzdHJ1Y3R1cmUgaW5zdGVhZCBvZiBpbnRlcm5hbCBEUk9QRklMRVNUUlVDVC4KCgkqIHJlbGF5MzIvcmVsYXkzODYuYywgcmVsYXkzMi9zbm9vcC5jLCB3aW4zMi9kZXZpY2UuYywgd2luZG93cy9rZXlib2FyZC5jLCB3aW5kb3dzL3dpbnByb2MuYywgbXNkb3MvZHBtaS5jLCBtc2Rvcy9pbnQxMC5jLCBtc2Rvcy9pbnQxMy5jLCBtc2Rvcy9pbnQxNS5jLCBtc2Rvcy9pbnQyMS5jLCBtc2Rvcy9pbnQyNS5jLCBtc2Rvcy9pbnQyNi5jLCBtc2Rvcy9pbnQyZi5jLCBtc2Rvcy9pbnQzMy5jLCBtc2Rvcy9pbnQ1Yy5jLCBtc2Rvcy92eGQuYywgbXNkb3MveG1zLmMsIGxvYWRlci9uZS9tb2R1bGUuYywgbG9hZGVyL25lL3NlZ21lbnQuYywgbWVtb3J5L2luc3RyLmMsIG1lbW9yeS9zZWxlY3Rvci5jLCBtaXNjL2Vycm9yLmMsIG1pc2Mvc3lzdGVtLmMsIG1zZG9zL2RldmljZXMuYywgbXNkb3MvZG9zYXNwaS5jLCBpbmNsdWRlL21pc2NlbXUuaCwgaW5jbHVkZS93aW5udC5oLCBsb2FkZXIvZG9zL2Rvc3ZtLmMsIGxvYWRlci90YXNrLmMsIGRsbHMva2VybmVsL3RodW5rLmMsIGRsbHMva2VybmVsL3dpbjg3ZW0uYywgZGxscy9udGRsbC9ydGwuYywgZGxscy91c2VyL21vdXNlLmMsIGlmMTYzMi9yZWxheS5jLCBpZjE2MzIvc25vb3AuYywgZGVidWdnZXIvcmVnaXN0ZXJzLmM6CglSZW1vdmVkIHNvbWUgb2YgdGhlIFhYWF9yZWcgbWFjcm9zIG5vdyB0aGF0IHdlIGFyZSB1c2luZyB0aGUgc3RhbmRhcmQKCUNPTlRFWFQ4NiBzdHJ1Y3R1cmUgZXZlcnl3aGVyZS4KCgkqIHdpbmRvd3MvY2xpcGJvYXJkLmMsIHdpbmRvd3MvZGVmd25kLmMsIHdpbmRvd3MvZGlhbG9nLmMsIHdpbmRvd3MvaW5wdXQuYywgd2luZG93cy9tc2dib3guYywgd2luZG93cy9zeXNwYXJhbXMuYywgd2luZG93cy91c2VyLmMsIHNjaGVkdWxlci9tdXRleC5jLCBzY2hlZHVsZXIvc2VtYXBob3JlLmMsIHNjaGVkdWxlci90aW1lci5jLCB3aW4zMi9jb25zb2xlLmMsIG1pc2MvY29tbS5jLCBtaXNjL2NwdS5jLCBtaXNjL21haW4uYywgbWlzYy92ZXJzaW9uLmMsIG9sZS9vbGUybmxzLmMsIHNjaGVkdWxlci9ldmVudC5jLCBsb2FkZXIvbW9kdWxlLmMsIGxvYWRlci9uZS9jb252ZXJ0LmMsIGxvYWRlci9uZS9yZXNvdXJjZS5jLCBtZW1vcnkvYXRvbS5jLCBtZW1vcnkvZW52aXJvbi5jLCBtZW1vcnkvcmVnaXN0cnkuYywgbWVtb3J5L3ZpcnR1YWwuYywgbWlzYy9jZHJvbS5jLCBmaWxlcy9kb3NfZnMuYywgZmlsZXMvcHJvZmlsZS5jLCBncmFwaGljcy9tZXRhZmlsZWRydi90ZXh0LmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L2ZvbnQuYywgZ3JhcGhpY3Mvd2luMTZkcnYvdGV4dC5jLCBpbmNsdWRlL3dpbmJhc2UuaCwgZGxscy9zaGx3YXBpL3BhdGguYywgZGxscy90dHlkcnYvZ3JhcGhpY3MuYywgZGxscy92ZXJzaW9uL2luZm8uYywgZGxscy93aW5tbS9qb3lzdGljay5jLCBkbGxzL3dpbm1tL21tc3lzdGVtLmMsIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmMsIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jLCBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmMsIGRsbHMvc2hlbGwzMi9zaHZfaXRlbV9jbWVudS5jLCBkbGxzL29sZTMyL2NsaXBib2FyZC5jLCBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGUzMi9maWxlbW9uaWtlci5jLCBkbGxzL29sZTMyL29sZTIuYywgZGxscy9rZXJuZWwvZm9ybWF0X21zZy5jLCBkbGxzL21wci93bmV0LmMsIGRsbHMvbXNhY20vZHJpdmVyLmMsIGRsbHMvbXNhY20vZmlsdGVyLmMsIGRsbHMvbXNhY20vZm9ybWF0LmMsIGRsbHMvbXNhY20vaW50ZXJuYWwuYywgZGxscy9tc3ZpZGVvL21zdmlkZW9fbWFpbi5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmMsIGRsbHMvY29tbWRsZy9maWxlZGxnYnJvd3Nlci5jLCBkbGxzL2NvbW1kbGcvZmluZGRsZzMyLmMsIGRsbHMvY29tbWRsZy9mb250ZGxnLmMsIGRsbHMvY3J0ZGxsL21ic3RyaW5nLmMsIGRsbHMvYWR2YXBpMzIvcmVnaXN0cnkuYywgZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jLCBkbGxzL2FkdmFwaTMyL3NlcnZpY2UuYywgZGxscy9jb21jdGwzMi9kYXRldGltZS5jLCBkbGxzL2NvbWN0bDMyL2hlYWRlci5jLCBkbGxzL2NvbWN0bDMyL3JlYmFyLmMsIGRsbHMvY29tY3RsMzIvc3RhdHVzLmMsIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jLCBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmMsIGNvbnRyb2xzL2xpc3Rib3guYywgY29udHJvbHMvbWVudS5jOgoJUmVtb3ZlZCBpbmNsdXNpb24gb2Ygd2luZS93aW5lc3RyaW5nLmggZnJvbSB3aW5iYXNlLmggYW5kIGFkZGVkIGl0IHRvCgl0aGUgQyBmaWxlcyB0aGF0IG5lZWQgaXQuCgoyMDAwLTA5LTI0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbXNkb3MvZGV2aWNlcy5jLCBtc2Rvcy9kb3NtZW0uYywgbXNkb3MvZHBtaS5jLCBtc2Rvcy9pbnQwOS5jLCBtc2Rvcy9pbnQyZi5jLCBtc2Rvcy9pbnQzMy5jLCBtZW1vcnkvaW5zdHIuYywgbG9hZGVyL2Rvcy9kb3N2bS5jLCBsb2FkZXIvZG9zL21vZHVsZS5jLCBsb2FkZXIvdGFzay5jLCBpbmNsdWRlL2xkdC5oLCBpbmNsdWRlL21pc2NlbXUuaCwgaW5jbHVkZS93aW5udC5oLCBpbmNsdWRlL2Rvc2V4ZS5oOgoJTW92ZWQgbW9zdCBnbG9iYWwgZGF0YSBvdXQgb2YgdGhlIExQRE9TVEFTSyBzdHJ1Y3R1cmUuCglBbGxvY2F0ZSBEUE1JIHJlYWwtbW9kZSBzZWdtZW50cyBnbG9iYWxseSBhdCBzdGFydHVwLgoJVHJ5IHRvIGFsbG9jYXRlIERPUyBtZW1vcnkgYXQgYWRkcmVzcyAwLgoKCSogd2luZG93cy93aW4uYywgd2luZG93cy9tZXNzYWdlLmMsIGluY2x1ZGUvd2luZS93aW51c2VyMTYuaCwgZGxscy91c2VyL3VzZXIuc3BlYzoKCUNhbGwgV0hfR0VUTUVTU0FHRSBob29rIGluIFBlZWtNZXNzYWdlIHRvbyAoYmFzZWQgb24gYSBwYXRjaCBieSBSb2IKCUZhcm51bSkuCgoJKiBtZW1vcnkvdmlydHVhbC5jOgoJR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglMb2NrcyB0aGUgdmlydHVhbCB2aWV3cyBsaW5rZWQgbGlzdC4KCgkqIGluY2x1ZGUvYWNjb25maWcuaCwgaW5jbHVkZS9jb25maWcuaC5pbiwgZGxscy93aW5zb2NrL2FzeW5jLmMsIGRsbHMvd2luc29jay9zb2NrZXQuYywgY29uZmlndXJlLmluLCBjb25maWd1cmU6CglSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJTWFrZSBjYWxscyB0byBnZXRob3N0YnluYW1lLCBnZXRob3N0YnlhZGRyLCBnZXRzZXJ2YnluYW1lLAoJZ2V0c2VydmJ5cG9ydCwgZ2V0cHJvdG9ieW5hbWUgYW5kIGdldHByb3RvYnludW1iZXIgdGhyZWFkLXNhZmUuCgoJKiBncmFwaGljcy94MTFkcnYveGZvbnQuYzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglVc2UgYXBwcm9wcmlhdGUgY2hhcnNldCBpZiBmYWNlbmFtZXMgb2YgZm9udCBpcyBrbm93bi4KCVVzZSBDUF9BQ1AgaWYgREVGQVVMVF9DSEFSU0VUIGlzIHJlcXVlc3RlZC4KCgkqIGNvbnRyb2xzL2xpc3Rib3guYzoKCUdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJSW4gV01fRFJBV0lURU0sIGFsd2F5cyBjYWxscyB0aGUgYXBwIHdpdGggYSB2YWxpZCBjdXJyZW50IGZvY3VzX2l0ZW0uCgoJKiBkZWJ1Z2dlci93aW5lZGJnLmMsIGRlYnVnZ2VyL3N0YWNrLmMsIGRlYnVnZ2VyL2luZm8uYywgZGVidWdnZXIvbWVtb3J5LmMsIGRlYnVnZ2VyL3JlZ2lzdGVycy5jLCBkZWJ1Z2dlci9kYmcueSwgZGVidWdnZXIvZGVidWcubCwgZGVidWdnZXIvZGVidWdnZXIuaCwgZGVidWdnZXIvZXhwci5jLCBkZWJ1Z2dlci9kYl9kaXNhc20uYywgZGVidWdnZXIvYnJlYWsuYzoKCUltcHJvdmVkIHN1cHBvcnQgZm9yIHZtODYgbW9kZS4KCgkqIGluY2x1ZGUvd2luZS9leGNlcHRpb24uaCwgZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jLCBkbGxzL250ZGxsL3NpZ25hbF9zcGFyYy5jOgoJQWRkZWQgc3VwcG9ydCBmb3IgZXhjZXB0aW9uIGhhbmRsaW5nIHdoaWxlIGluIHZtODYgbW9kZS4KCUZpeGVkIGEgY291cGxlIG9mIGJ1Z3MgaW4gdm04NiBzdXBwb3J0LgoKCSogd2luZG93cy9kaWFsb2cuYywgb2JqZWN0cy9mb250LmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L2ZvbnQuYywgZGxscy9vbGUzMi9kZWZhdWx0aGFuZGxlci5jLCBkbGxzL2NvbWN0bDMyL3JlYmFyLmMsIGRsbHMvY29tY3RsMzIvdG9vbHRpcHMuYzoKCUdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJRml4ZWQgZm9ybWF0IHN0cmluZ3MuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFkZGVkIHNldCBXU19DSElMRCBhbmQgQ0NTX1RPUCB0byB0aGUgdG9vbGJhcidzIHN0eWxlLgoJVE9PTEJBUl9DYWxjVG9vbGJhcigpOiBpZiB0aGUgYml0bWFwIHNpemUgaXMgMCwgdXNlIHRoZSBidWlsdGluCglkZWZhdWx0cy4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglUaGUgc2l6ZSBvZiB0aGUgY29tY3RsMzIgaW50ZXJuYWwgYml0bWFwcyBpcyAyNHgyNCBub3QgMjZ4MjYuCglGaXhlZCBtaW5vciB0eXBvcy4KCgkqIHRvb2xzL3dyYy9wYXJzZXIubCwgdG9vbHMvd3JjL1JFQURNRS53cmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUZpbGVuYW1lcyBtYXkgY29udGFpbiAnLycgYW5kICdcJy4KCVNtYWxsIHR5cG8gZml4ZXMuCgoyMDAwLTA5LTIyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQGNvZGV3ZWF2ZXJzLmNvbT4KCVBhaW50IGJhY2tncm91bmQgYmVmb3JlIGRyYXdpbmcgaXRlbSBhbmQgc3ViaXRlbXMuICBQYWludCBhbnkgYXJlYSBvZgoJdGhlIGNvbnRyb2wgbm90IG9jY3VwaWVkIGJ5IGl0ZW1zLiAgRWFybHkgb3V0IG9mIExJU1RWSUVXX1JlZnJlc2hYWFgKCWlmIG5vIGl0ZW1zIGV4aXN0LiBJbnZhbGlkYXRlUmVjdCgpIG9uIExCVVRUT05ET1dOIG9ubHkgaWYgdGhlIGNvbnRyb2wKCWhhcyBpdGVtcyB0byBkcmF3LgoKCSogd2luZG93cy94MTFkcnYvZXZlbnQuYywgd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYywgc2VydmVyL21haW4uYywgc2VydmVyL29iamVjdC5oLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvdHJhY2UuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgbWlzYy9tYWluLmMsIGluY2x1ZGUvb3B0aW9ucy5oLCBpbmNsdWRlL3NlcnZlci5oLCBpbmNsdWRlL3gxMWRydi5oLCBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJTWFrZSBHZXRUaWNrQ291bnQgbm90IHVzZSB0aGUgd2hvbGUgVW5peCBlcG9jaCAoc2luY2UgMTk3MCkgYW55IG1vcmUsCglzaW5jZSB0aGF0IGNyYXNoZWQgc2V2ZXJhbCBnYW1lcyBvciBjYXVzZWQgcHJvYmxlbXMgd2l0aCB0aGVtIGFzIHRoZXkKCWFyZW4ndCB1c2VkIHRvIGEgaGlnaCBXaW5kb3dzIHVwdGltZSBvZiBtb3JlIHRoYW4gMjQuOSBkYXlzLgoKCSogc2NoZWR1bGVyL2NsaWVudC5jOgoJUm9iZXJ0byBBdWd1c3RvIFB1bmdhcnRuaWsgPHB1bmdAa2FyaW5hLmV0Y29tLnVmcmdzLmJyPgoJQWRkZWQgU19JU0ZJRk8gY2hlY2sgZm9yIFNvbGFyaXMuCgoJKiBpbmNsdWRlL3dpbmRlZi5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIGEgbWFjcm8gZm9yIF9kZWNsc3BlYyAoYmFja3dhcmQgY29tcGF0aWJpbGl0eSBzeW5vbnltIG9mCglfX2RlY2xzcGVjKS4KCVJlbW92ZWQgdGhlIGRsbGltcG9ydCBhbmQgZGxsZXhwb3J0IG1hY3Jvcy4KCgkqIGluY2x1ZGUvb2JqYmFzZS5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCU11c3QgaW5jbHVkZSAnc3RkbGliLmgnLgoKCSogaW5jbHVkZS9jb21tY3RybC5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIEhBTkRMRV9XTV9OT1RJRlkgYW5kIEZPUldBUkRfV01fTk9USUZZLgoKCSogZGxscy93aW5lcHMvTWFrZWZpbGUuaW4sIGRsbHMvd2luZXBzL2RyaXZlci5jLCBkbGxzL3dpbmVwcy9wc2RsZy5oLCBkbGxzL3dpbmVwcy9wc2Rydi5oLCBkbGxzL3dpbmVwcy9yc3JjLnJjLCBkbGxzL3dpbmVwcy93aW5lcHMuc3BlYywgZGxscy93aW5lcHMvd3BzX0VuLnJjLCBkbGxzL3dpbmVwcy93cHNfeHgucmMsIGRsbHMvd2luZXBzLy5jdnNpZ25vcmUsIGRsbHMvTWFrZWZpbGUuaW46CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglQYXBlciBzaXplIGFuZCBvcmllbnRhdGlvbiBwcm9wIHNoZWV0IGZvciB3aW5lcHMuCgoJKiBkbGxzL3VzZXIvdGV4dC5jOgoJU3VzYW4gRmFybGV5IDxzZmFybGV5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIHN1cHBvcnQgRFRfUEFUSF9FTExJUFNJUywgRFRfRU5EX0VMTElQU0lTLCBhbmQgRFRfV09SRF9FTExJUFNJUwoJZmxhZ3MgaW4gRHJhd1RleHQuCgoJKiBsb2FkZXIvbW9kdWxlLmM6IEFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUZpeGVkIFdpbkV4ZWMxNiB0byBoYW5kbGUgcXVvdGVkIGZpbGVuYW1lcyBjb3JyZWN0bHkuCgoJKiBpbmNsdWRlL3dpbmUvb2JqX2Vycm9yaW5mby5oLCBkbGxzL29sZTMyL2Vycm9yaW5mby5jOgoJRGFteWFuIE9nbnlhbm9mZiA8RGFteWFuQHJvY2tldG1haWwuY29tPgoJSUVycm9ySW5mbyBpcyBub3cgZGVyaXZlZCBmcm9tIElVbmtub3duLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUNvcnJlY3Qgc29tZSBzaXR1YXRpb25zIHdpdGggbGlzdHZpZXcgc2VsZWN0aW9ucy4gU3BlY2lmaWNhbGx5IGZpeGVkCglzaXR1YXRpb25zIHdoZXJlIGluIGFuIE9XTkVSREFUQSBsaXN0dmlldyB0aGUgc2VsZWN0aW9uIHJhbmdlcyBiZWNvbWUKCWludmFsaWQgaWYgdGhlIG51bWJlciBvZiBpdGVtcyBpcyBjaGFuZ2VkLiBBZGRpdGlvbmFsIGZpeGVzIGEgZmV3Cglwcm9ibGVtcyByZXN1bHRpbmcgaW4gbG9vcHMgaW4gUmVtb3ZlQWxsU2VsZWN0aW9ucy4KCgkqIGluY2x1ZGUvbW1zeXN0ZW0uaCwgaW5jbHVkZS93aW5nZGkuaCwgaW5jbHVkZS93aW51c2VyLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFkZGVkIGEgZmV3IG1pc3NpbmcgbWFjcm9zLCB0eXBlcyBhbmQgcHJvdG90eXBlcy4KCgkqIGluY2x1ZGUvd2lucmVzLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCU5ldyBmaWxlLiBBbGwgUkMgZmlsZXMgZ2VuZXJhdGVkIGJ5IFZDNiBpbmNsdWRlIGFmeHJlcy5oIHdoaWNoIGluIHR1cm4KCWluY2x1ZGVzIHRoaXMgZmlsZS4KCgkqIHdpbmRvd3MvcXVldWUuYywgd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3Mvbm9uY2xpZW50LmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglTcGVsbGluZywgdHJhY2UgZml4ZXMuCgoJKiBtZW1vcnkvZW52aXJvbi5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJQWRkZWQgU2V0TGFzdEVycm9yKCkgaW4gR2V0RW52aXJvbm1lbnRWYXJpYWJsZUEuCgoJKiBncmFwaGljcy94MTFkcnYvdGV4dC5jOgoJRGFteWFuIE9nbnlhbm9mZiA8RGFteWFuQHJvY2tldG1haWwuY29tPgoJQWRkZWQgZXJyb3IgY29ycmVjdGlvbiB3aGVuIHVzaW5nIHN5bWJvbCBvZmZzZXRzLgoKCSogZGxscy93aW5tbS9tY2lzZXEvbWNpbWlkaS5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHZvaWxhLmZyPgoJRml4ZWQgcmVlbnRyYW5jeSBpc3N1ZXMgaW4gcGxheS9zdG9wIG9wZXJhdGlvbnMuCgoJKiBkbGxzL2NvbW1kbGcvY2RsZ194eC5yYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUZpeCBQcmludERsZyBjb2xsYXRlIGljb25zLiAgQWRkIG9yaWVudGF0aW9uIGljb25zLgoKCSogZGxscy9zaGx3YXBpL29yZGluYWwuYywgZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCVN0dWJzIGZvciBzaGx3YXBpLjE1MSBhbmQgc2hsd2FwaS4xNTMuCgoJKiBkbGxzL29sZTMyL29sZTJzdHVicy5jLCBkbGxzL29sZTMyL29sZTMyLnNwZWM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglTdHViIGZvciBDb0lzT2xlMUNsYXNzLgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmMsIGRsbHMvd2lubW0vd2luZW9zcy9taWRpLmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglTZXQgY2xvc2Ugb24gZXhlYygpIGZsYWcgYXQgdGltZXMgd2hlbiB3ZSBsZWF2ZSAvZGV2L2RzcCBhbmQKCS9kZXYvc2VxdWVuY2VyIG9wZW4uCgoJKiBkbGxzL2NvbWN0bDMyL3RhYi5jOgoJU3VzYW4gRmFybGV5IDxzZmFybGV5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIHN1cHBvcnQgZm9yIEZMQVRCVVRUT04gc3R5bGUgdGFicy4KCU1hZGUgd2lkdGggb2YgQlVUVE9OIHN0eWxlIHRhYnMgbm8gbGVzcyB0aGFuIDJ4IHRoZWlyIGhlaWdodC4KCUV4cGFuZGVkIGZvY3VzIHJlY3QgdG8gYmUganVzdCBpbnNpZGUgdGhlIGJvcmRlci4KCgkqIGRsbHMva2VybmVsL3Rvb2xoZWxwLmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglBZGQgRklYTUVzIGZvciBhbGwgdGhlc2UgbmljZSBjb21wbGV0ZWx5IHVuaW1wbGVtZW50ZWQgVE9PTEhFTFAKCWZ1bmN0aW9ucy4KCgkqIG1pc2MvcmVnaXN0cnkuYzogQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJZml4ZWQgdGhlIHdpbjk1IHJlZ2lzdHJ5IGxvYWRlciB0byBoYXZlIHNvbWV3aGF0IHN0cmljdGVyIGNoZWNraW5nLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5AY29kZXdlYXZlcnMuY29tPgoJRml4ZWQgYnV0dG9uIGltYWdlIHRvIGJlIG9mZnNldCB0byB0aGUgY2VudGVyIG9mIHRoZSBidXR0b24gaG9yaXpvbnRhbGx5LAoJdmlzaWJsZSB3aXRoIFdpblppcCBhbmQgQ3V0ZUZUUCA0LjAuICBGaXhlZCBjb21waWxlIHdhcm5pbmdzIGZyb20gZm9ybWF0IHR5cGUKCXNwZWNpZmllcnMgaW4gdHdvIFRSQUNFJ3MuICBSZW1vdmVkIFRSQUNFIGluIFRPT0xCQVJfR2V0SXRlbVJlY3QoKS4gIEFkZGVkCglidXR0b24gd2lkdGggdG8gVFJBQ0UgaW4gVE9PTEJBUl9DYWxjVG9vbGJhcigpLgoKCSogZGxscy9jb21jdGwzMi9kYXRldGltZS5jLCBkbGxzL2NvbWN0bDMyL21vbnRoY2FsLmMsIGRsbHMvY29tY3RsMzIvc3RhdHVzLmM6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5AY29kZXdlYXZlcnMuY29tPgoJQ2hhbmdlZCBSZWRyYXdXaW5kb3coKSdzIHRvIEludmFsaWRhdGVSZWN0KCkncy4gIFJlZHJhd1dpbmRvdygpIHdhcwoJYmVpbmcgY2FsbGVkIHdpdGggUkRXX1VQREFURU5PVywgZm9yY2luZyBpbW1lZGlhdGUgcGFpbnRpbmcuICBBZGRlZAoJcmVkcmF3aW5nIGxvZ2ljIHRvIFNUQVRVU0JBUl9TZXRUZXh0VygpLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBiZWhhdmlvciBvZiBUVlNfU0lOR0xFRVhQQU5EIHN0eWxlIGJyb2tlbiBpbiBDb3JlbCBtZXJnZS4gIE9wdGltaXplCglyZWRyYXdpbmcgaW4gVFJFRVZJRVdfU2V0SXRlbUEoKSB0byByZWRyYXcgb25seSBpZiB0aGUgaXRlbSBjaGFuZ2VzLgoKCSogcmVsYXkzMi9idWlsdGluMzIuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJUmFpc2VkIE1BWF9ETExTIHRvIDEwMC4KCjIwMDAtMDktMTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL2NvbW1jdHJsLmgsIGluY2x1ZGUvb2xlYXV0by5oLCBpbmNsdWRlL3Byc2h0LmgsIGluY2x1ZGUvc2hlbGxhcGkuaCwgaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2luZGVmLmgsIGluY2x1ZGUvd2lubnQuaCwgaW5jbHVkZS93aW5zb2NrMi5oLCBpbmNsdWRlL3dpbnN2Yy5oLCBpbmNsdWRlL3d0eXBlcy5oLCBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLCBkbGxzL3NoZWxsMzIvc3lzdHJheS5jLCBkbGxzL2FkdmFwaTMyL3NlcnZpY2UuYzoKCVBldGVyIEh1bm5pc2V0dCA8aHVubmlzZUBub3J0ZWxuZXR3b3Jrcy5jb20+CgktIEFkZGVkIHNvbWUgbWlzc2luZyBXSU5FTElCX05BTUVfQVcgZGVmaW5pdGlvbnMsIHR5cGVzIGFuZCBtZXNzYWdlcwoJLSBTbWFsbCBwcm90b3R5cGUgZml4ZXMKCgkqIHJlbGF5MzIvc25vb3AuYzoKCVJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglDYXRjaCBFWENFUFRJT05fUFJJVl9JTlNUUlVDVElPTiBleGNlcHRpb24gdG9vLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJU3RlcGhhbmUgTHVzc2llciA8c3RlcGhhbmVAbWFjYWRhbWlhbi5jb20+CglOb3RpZmljYXRpb24gTk1fQ0xJQ0ssIE5NX1JDTElDSyBhbmQgTk1fREJMQ0xLIHNlbnQgYnkgdGhlIGxpc3R2aWV3CglzaG91bGQgc2V0IGxQYXJhbSB0byBhIE5NTElTVFZJRVcgaW5zdGVhZCBvZiBhIE5NSERSLiBBY2NvcmRpbmcgdG8KCU1TRE4gZG9jLCBpdCBpcyBsaWtlIHRoYXQgc2luY2UgdmVyc2lvbiA0LjcxLCBXaW5lIGlzIHJldHVybmluZyA1LjAgYXMKCXRoZSBETEwgdmVyc2lvbi4KCgkqIGNvbnRyb2xzL21lbnUuYzogQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJRml4ZWQgd2luZG93IGxvY2sgcHJvYmxlbSBpbiBTZXRNZW51KCkuCgoJKiBvYmplY3RzL21ldGFmaWxlLmM6IEhlbm5pbmcgSG9mZm1hbm4KCUF2b2lkIGRlYWRsb2NrcyBpbiBFbnVtTWV0YUZpbGUuCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYzoKCUdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJQXZvaWQgaW5maW5pdGUgbG9vcCBpZiBRdWVyeVBhdGhPZlJlZ1R5cGVMaWIgaXMgY2FsbGVkIHdpdGggbGNpZD0wLgoKMjAwMC0wOS0xOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG1zZG9zL2ludGVycnVwdHMuYywgZGVidWdnZXIvZGJnbWFpbi5jLCBkZWJ1Z2dlci9tb2R1bGUuYywgbWVtb3J5L2luc3RyLmM6CglNaXNjIGNsZWFudXBzLgoKCSogZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jLCBpbmNsdWRlL3dpbmUvZXhjZXB0aW9uLmg6CglBZGRlZCBwcmVsaW1pbmFyeSBzdXBwb3J0IGZvciBzd2l0Y2hpbmcgdG8gdm04NiBtb2RlIHdpdGggcHJvcGVyCglleGNlcHRpb24gaGFuZGxpbmcuCgoJKiBmaWxlcy9maWxlLmMsIGluY2x1ZGUvZmlsZS5oLCBpbmNsdWRlL2dsb2JhbC5oLCBtZW1vcnkvdmlydHVhbC5jLCByZWxheTMyL2J1aWx0aW4zMi5jOgoJTW92ZWQgRklMRV9kb21tYXAoKSB0byBtZW1vcnkvdmlydHVhbC5jIChhbmQgcmVuYW1lZCBpdCBWSVJUVUFMX21tYXApLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCUNoYW5nZSBGSVhNRSgiQnV0dG9uIHNpemUgc2V0IGFmdGVyIGJ1dHRvbiBpbiB0b29sYmFyXG4iKSBpbgoJU2V0QnV0dG9uU2l6ZSgpIHRvIFdBUk4gYXMgcXVpdGUgYSBmZXcgYXBwbGljYXRpb25zIGFyZSBkb2luZyB0aGlzCglhZnRlciBhZGRpbmcgZWFjaCBidXR0b24gdG8gdGhlIHRvb2xiYXIgYW5kIHRoZXJlIGlzIG5vIHdheSB3ZSBjYW4KCXN0b3AgdGhlbS4KCgkqIGRsbHMvZGRyYXcvZHN1cmZhY2UvZGdhLmM6CglHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCVJlbW92ZSB1bnVzZWQgbG9jYWwgdmFyaWFibGUgaW4gREdBX0lEaXJlY3REcmF3U3VyZmFjZTRJbXBsX1NldFBhbGV0dGUoKS4KCgkqIG1pc2MvY29tbS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQGxvb2tzbWFydC5jb20uYXU+CgktIHJlbW92ZWQgcmVkdW5kYW50IGZ1bmN0aW9ucyBDT01NX0dldChSZWFkL1dyaXRlKUZkCgktIGNvcnJlY3RlZCB0aGUgbmFtZSBvZiAxNmJpdCBmdW5jdGlvbnMgaW4gY29tbWVudHMKCS0gcmVtb3ZlZCB1bnVzZWQgc3RhdGljIHZhcmlhYmxlCgoJKiBSRUFETUU6IEFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCS0gcHJlZmVyIHdpbmVpbnN0YWxsCgktIG1lbnRpb24gZGVidWdnZXIgc2V0dXAgKHRlbXBvcmFyeSkKCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBpbmNsdWRlL3NobG9iai5oOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQGxvb2tzbWFydC5jb20uYXU+CglGaXhlZCBpbmNvcnJlY3QgYXJnIGNvdW50IGluIFNIR2V0U2V0dGluZ3MgdGhhdCBjYXVzZXMgd2luemlwMzIuZXhlIHRvCglyZXBvcnQgYW4gZXJyb3IuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglTdGVwaGFuZSBMdXNzaWVyIDxzdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KCVNvcnRpbmcgaXRlbXMgaW4gYSBsaXN0dmlldyB1c2luZyBMVldfU09SVElURU1TIGlzIG9ubHkgc29ydGluZyB0aGUgaXRlbXMKCWFuZCBub3QgdGhlIHN1Yml0ZW1zLiBUaGlzIHBhdGNoIGZpeCB0aGlzIGlzc3VlLiBJJ3ZlIHJlbW92ZSB0aGUgdGVtcG9yYXJ5CglTb3J0bGlzdCwgaXQgd2FzIG5vdCBuZWNlc3NhcnkgdG8gY3JlYXRlIGFub3RoZXIgbGlzdCwgYW5kIGl0IHdhcyBidWdneS4KCjIwMDAtMDktMTYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL2NhbGxiYWNrLmgsIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIGlmMTYzMi90aHVuay5jOgoJUmVtb3ZlZCBhIGNvdXBsZSBvZiB1bnVzZWQgZnVuY3Rpb25zIGluIHRoZSBDYWxsb3V0IHN0cnVjdHVyZS4KCgkqIGRsbHMvdXNlci91c2VyMzIuc3BlYywgZGxscy91c2VyL3VzZXJfbWFpbi5jLCBvYmplY3RzL3BhbGV0dGUuYywgd2luZG93cy9wYWludGluZy5jOgoJTW92ZWQgU2VsZWN0L1JlYWxpemVQYWxldHRlIGltcGxlbWVudGF0aW9uIHRvIFVTRVIgYW5kIHVzZQoJcGZuU2VsZWN0L1JlYWxpemVQYWxldHRlIGZ1bmN0aW9uIHBvaW50ZXJzIGluIEdESS4KCU1ha2Ugc3VyZSB0aGUgcGFsZXR0ZSBoYW5kbGUgaXMgdmFsaWQgaW4gR0RJU2VsZWN0UGFsZXR0ZTE2ICh0aGFua3MgdG8KCVV3ZSBCb25uZXMpLgoKCSogc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3NlcmlhbC5jLCBzZXJ2ZXIvdHJhY2UuYywgaW5jbHVkZS9zZXJ2ZXIuaCwgbWlzYy9jb21tLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAbG9va3NtYXJ0LmNvbS5hdT4KCUltcGxlbWVudGVkIFNldENvbW1NYXNrLCBTZXRDb21tVGltZW91dHMsIEdldENvbW1NYXNrLCBHZXRDb21tVGltZW91dHMuCgoJKiBkbGxzL3dpbmVwcy9vYmplY3RzLmMsIGdyYXBoaWNzL2VuaG1ldGFmaWxlZHJ2L29iamVjdHMuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvb2JqZWN0cy5jLCBncmFwaGljcy93aW4xNmRydi9vYmplY3RzLmMsIGdyYXBoaWNzL3gxMWRydi9vYmplY3RzLmMsIGluY2x1ZGUvZ2RpLmgsIG9iamVjdHMvZGMuYywgb2JqZWN0cy9nZGlvYmouYywgd2luZG93cy9zeXNjb2xvci5jLCBkbGxzL3R0eWRydi9vYmplY3RzLmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglBZGRlZCBzdXBwb3J0IGZvciBub24tZGVsZXRhYmxlIHN5c3RlbSBicnVzaGVzIGFuZCBwZW5zIGNyZWF0ZWQgYnkKCVVTRVIuCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmM6CglKb2huIEdpbG1vcmUgPGdudUB0b2FkLmNvbT4KCUNsZWFuZWQgaXQgdXAgc28gdGhhdCBjb2RlIHBhdGhzIHdoaWNoIGhhdmUgdW5zdXBwb3J0ZWQgV1NfU08gdmFsdWVzCgluZXZlciBhY3R1YWxseSBwYXNzIHRoZW0gdG8gVW5peCBzeXN0ZW0gY2FsbHMuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBtZW1vcnkvdmlydHVhbC5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJQWRkZWQgVmlydHVhbEFsbG9jRXguCgoJKiBpbmNsdWRlL3dpbmJhc2UuaDoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglBZGRlZCBHZXRUaW1lWm9uZUluZm9ybWF0aW9uIGFuZCBUSU1FX1pPTkVfSURfSU5WQUxJRC4KCgkqIGRsbHMvY29tY3RsMzIvdGFiLmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglGaXhlZCB0YWIgY29udHJvbCB0byB1c2UgSFRUUkFOU1BBUkVOVCB3aGVuIG1vdXNlIGhpdHMgY2xpZW50IGFyZWEsCglidXQgbm90IHRhYiBjb250cm9sIGJ1dHRvbnMuCgoJKiBtaXNjL2Nkcm9tLmM6IEFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCVNpbGVuY2Ugc29tZSBib2d1cyBlcnJvciBtZXNzYWdlLgoKCSogaW5jbHVkZS93aW5zb2NrLmg6CglKZXJlbXkgV2hpdGUgPGp3aGl0ZUBjb2Rld2VhdmVycy5jb20+CglBZGp1c3RlZCB0byBhbGxvdyBNRkMgY29tcGlsYXRpb247IHByZXZlbnQgZGVmaW5pdGlvbiBvZiBzdHJ1Y3QgZmRfc2V0Cgl3aGljaCBjb25mbGljdHMgd2l0aCB0aGUgZmRfc2V0IHR5cGVkZWYuCgoJKiBpbmNsdWRlL3dpbnVzZXIuaDoKCUplcmVteSBXaGl0ZSA8andoaXRlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIFBXTkRDTEFTUyBkZWZpbml0aW9uLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJU3RlcGhhbmUgTHVzc2llciA8c3RlcGhhbmVAbWFjYWRhbWlhbi5jb20+CglBbGxvdyBoYXZpbmcgYSB0cmFuc3BhcmVudCBiYWNrZ3JvdW5kIHRleHQgY29sb3IgZm9yIHRoZSBsaXN0dmlldy4KCgkqIG9sZS9vbGUybmxzLmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkaW1pQGNzLnRvcm9udG8uZWR1PgoJVXNlIHRoZSBzeXN0ZW0gbG9jYWwgdGltZSBpZiBscFRpbWU9TlVMTC4KCjIwMDAtMDktMTMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC90aHVuay5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW1tZDEuaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglVcGRhdGUgRVNQIGNvcnJlY3RseSBvbiByZXR1cm4gZnJvbSBmbGF0IHRodW5rIHJvdXRpbmVzLgoKCSogd2luZG93cy93aW5wcm9jLmMsIGluY2x1ZGUvYnVpbHRpbjE2LmgsIGxvYWRlci9uZS9tb2R1bGUuYywgdG9vbHMvd2luZWJ1aWxkL3JlbGF5LmMsIGlmMTYzMi9yZWxheS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW1tZDEuaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglNb2RpZmllZCBDYWxsVG8xNlJlZ2lzdGVyIHJvdXRpbmVzIHRvIHVwZGF0ZSByZWdpc3RlciBjb250ZXh0IGFmdGVyCgljYWxsIHJldHVybnMuIENhbGxlcnMgYWRhcHRlZC4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbHN0cmluZy5jLCBkbGxzL3NobHdhcGkvc3RyaW5nLmMsIGluY2x1ZGUvc2hsd2FwaS5oLCBpbmNsdWRlL3dpbmUvdW5kb2NzaGVsbC5oOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJQWRkIHNvbWUgU3RyKiBwcm90b3R5cGVzIHRvIHNobHdhcGkuaC4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzIuaCwgZGxscy9jb21jdGwzMi9jb21tY3RybC5jLCBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCU1lcmdlZCBtYWluIFdpbmUgY2hhbmdlcyBpbnRvIENvcmVsJ3MgdHJlZXZpZXcgY29udHJvbCByZXdyaXR0ZW4gYnkKCVNlcmdlIEl2YW5vdiBhbmQgQW5kcmV3IExld3lja3kuICBGaXhlZCBpdGVtIGZvY3VzIGJlaGF2aW9yIHRvIG1hdGNoCglXaW5kb3dzLiAgRml4ZWQgaXRlbSBzZWxlY3Rpb24gd2hlbiB1bi9leHBhbmRpbmcgaXRlbXMuICBJbXBsZW1lbnRlZAoJV01fU0VUUkVEUkFXLiAgQWRkZWQgQ29yZWwncyBDT01DVEwzMl9DcmVhdGVUb29sVGlwKCkgaGVscGVyIGZ1bmN0aW9uCgl0byBjb21tY3RybC5jLgoKCSogd2luZG93cy9wYWludGluZy5jLCBjb250cm9scy9idXR0b24uYzoKCVNlcmdlIEl2YW5vdiA8c2VyZ2VpQGNvcmVsLmNhPgoJKE1lcmdlZCBieSBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4pCglGaXhlZCBwcm9ibGVtIHdpdGggb3JpZ2luIGZvciBEU1RfQ09NUExFWCBzdHlsZS4KCUZpeGVkIGhhbmRsaW5nIG9mIERTU19ESVNBQkxFRCBhbmQgRFNTX0RFRkFVTFQgc3R5bGVzLgoKCUFkZGVkIGhhbmRsaW5nIG9mIEJTX01VTFRJTElORSBzdHlsZSwgbGFiZWwgYWxpZ25tZW50CglzdHlsZXMgKEJTX1JJR0hULCBldGMuKSBhbmQgc29tZSBleG90aWMgc3R5bGVzIEJTX0ZMQVQgKG9ubHkKCXB1c2hidXR0b25zIGZvciBub3cpLCBhbmQgQlNfUFVTSExJS0UuCgoJTW9kaWZpZWQgbGFiZWwgZHJhd2luZyBwcm9jZWR1cmU6IG5vdyBhbGwga2luZHMgb2YgYnV0dG9ucwoJdXNlIGNvbW1vbiBCVVRUT05fRHJhd0xhYmVsIGZ1bmN0aW9uLiBBY3R1YWwgbGFiZWwgZHJhd2luZyBpcwoJcGVyZm9ybWVkIGJ5IERyYXdTdGF0ZVcgZnVuY3Rpb24uCgoJR3JvdXBCb3ggbXVzdCB1c2UgV01fQ1RMQ09MT1JTVEFUSUMgaW5zdGVhZCBvZiBXTV9DVExDT0xPUkJUTiBtZXNzYWdlLgoKCSogZGxscy9kZHJhdy9kZHJhdy9tYWluLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJVXBncmFkZSBhbHNvIDE1YnBwIHRvIDE2YnBwIHN1cmZhY2VzLgoKMjAwMC0wOS0xMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3Mvd2lucG9zLmM6CglKYW1lcyBIYXRoZXdheSA8amFtZXNAbWFjYWRhbWlhbi5jb20+CglLREUgMS54IGhhcyBwcm9ibGVtcyB3aXRoIHVzaW5nIFhTaGFwZUNvbWJpbmVNYXNrIHdoZW4gdGhlcmUgd2FzIG5vCglwcmV2aW91cyByZWdpb24uCgoJKiBjb250cm9scy9zY3JvbGwuYzoKCUdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJU2V0U2Nyb2xsSW5mbyA6IGRvbid0IHNob3cvaGlkZSBzY3JvbGxiYXIgaWYgbm8gcGFyYW1ldGVyIChtaW52YWwsCgltYXh2YWwpIGNoYW5nZS4KCgkqIGluY2x1ZGUvd2luZS91bmljb2RlLmg6CglBZGRlZCBtaXNzaW5nIF9fdm9sYXRpbGVfXy4KCgkqIGRsbHMvZGRyYXcvZGRyYXcveDExLmMsIGRsbHMvZ2RpL2dkaS5zcGVjLCBmaWxlcy9maWxlLmMsIG1pc2MvbWFpbi5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCB3aW5kb3dzL21lc3NhZ2UuYywgY29udHJvbHMvYnV0dG9uLmMsIGRlYnVnZ2VyL2JyZWFrLmMsIGRlYnVnZ2VyL3dpbmVkYmcuYywgZGxscy9jb21jdGwzMi9jb21tY3RybC5jLCBkbGxzL2NvbWN0bDMyL3RhYi5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJLSBmaXhlcyBkZWJ1Z2dlciBvdXRwdXQKCS0gZ2V0IHJpZCBvZiB3cm9uZyBjb21tZW50cwoJLSBmaXggY29tbWVudHMKCS0gLnNwZWMgc3BlbGxpbmcgZml4CgktIGltcHJvdmUgd2FybmluZyBtZXNzYWdlCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCB3aW4zMi90aW1lLmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CgkiaW1wbGVtZW50ZWQiIEdldFN5c3RlbVRpbWVBZGp1c3RtZW50LgoKCSogd2luZG93cy9jbGFzcy5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJRG9uJ3QgdHJ5IHRvIGRlbGV0ZSBhIHduZGNsYXNzIGJhY2tncm91bmQgYnJ1c2ggaWYgaXQncyBhIENPTE9SXyoKCWNvbnN0YW50LgoKCSogd2luZG93cy9ub25jbGllbnQuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0Bsb29rc21hcnQuY29tLmF1PgoJTWFrZSBzdXJlIE5DX0hhbmRsZU5DQ2FsY1NpemUgcmV0dXJucyBhIHZhbGlkIHJlY3RhbmdsZS4KCVBhaW50aW5nIGZhaWxzIGlmIHRoZSByZWN0YW5nbGUgaXMgaW52YWxpZC4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJSGlkZSB0aGUgdmVydGljYWwgc2Nyb2xsYmFyIHdoZW4gbGlzdHZpZXcgc3R5bGUgaXMgTFZTX0xJU1QuCgoJKiBpbmNsdWRlL3dpbnVzZXIuaDoKCUplcmVteSBXaGl0ZSA8andoaXRlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBXTV9VU0VSQ0hBTkdFRC4KCgkqIGRlYnVnZ2VyL2luZm8uYywgZGxscy9rZXJuZWwvdG9vbGhlbHAuYywgaW5jbHVkZS90bGhlbHAzMi5oOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJVXNlIHRwWFhYIGluc3RlYWQgb2YgdGJYWFggaW4gdGFnVEhSRUFERU5UUlkzMi4KCgkqIGRsbHMvZGRyYXcvZHBhbGV0dGUvZGdhLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UvZGdhLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UvZGdhMi5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUZpeGVkIERHQSAvIERHQSAyIHBhbGV0dGUgY3JlYXRpb24uCgoJKiBncmFwaGljcy94MTFkcnYvdGV4dC5jOgoJR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglGaXggYSBtZW1vcnkgbGVhayBpbiBYMTFEUlZfR2V0VGV4dEV4dGVudFBvaW50LgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoyMDAwLTA5LTEwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2NoZWR1bGVyL2NsaWVudC5jOgoJQWRkZWQgV0lORVNFUlZFUiBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byBhbGxvdyBvdmVycmlkaW5nIHRoZSBub3JtYWwKCXNlcnZlciBzZWFyY2ggc2VxdWVuY2UuCgoJKiBmaWxlcy9kaXJlY3RvcnkuYzoKCVJlbW92ZWQgY2hkaXIoIi8iKSB1bnRpbCB3ZSBoYXZlIHByb3BlciBVbml4IGN3ZCBtYW5hZ2VtZW50LgoKCSogZGxscy9udGRsbC9udGRsbC5zcGVjLCBzY2hlZHVsZXIvY3JpdHNlY3Rpb24uYzoKCUltcGxlbWVudGVkIFJ0bHBXYWl0Rm9yQ3JpdGljYWxTZWN0aW9uIGFuZCBSdGxwVW5XYWl0Q3JpdGljYWxTZWN0aW9uLgoKCSogbG9hZGVyL25lL21vZHVsZS5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJRml4ZWQgTkVfTG9hZEV4ZUhlYWRlciBlcnJvciBoYW5kbGluZy4KCgkqIGxvYWRlci9tb2R1bGUuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgbG9hZGVyIC0gYnJva2VuIHNlYXJjaCBmb3IgYWxyZWFkeSBsb2FkZWQgbW9kdWxlcy4KCgkqIG9iamVjdHMvZGliLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGZhbGxiYWNrIGNvZGUgZm9yIFN0cmV0Y2hCbHQgb24gUkxFIERJQnMgd2l0aCBnYXBzLgoKMjAwMC0wOS0wOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRvY3VtZW50YXRpb24vZm9udHMuc2dtbDoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgYmRmdG9wY2YgY29tbWFuZC4KCgkqIGRsbHMvbXNhY20vZmlsdGVyLmMsIGRsbHMvbXNhY20vZm9ybWF0LmMsIGRsbHMvbXNhY20vc3RyZWFtLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkICpGaWx0ZXIqIGZ1bmN0aW9ucy4KCU1pc2MgYnVnIGZpeGVzLgoKCSogZGxscy9jb21jdGwzMi90YWIuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSW1wbGVtZW50ZWQgVENNX0dFVFJPV0NPVU5ULgoKCSogcHJvZ3JhbXMvY29udHJvbC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvbm90ZXBhZC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvdmlldy9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luaGVscC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2ludmVyL01ha2VmaWxlLmluLCBsaWJ0ZXN0L01ha2VmaWxlLmluLCBwcm9ncmFtcy9jbG9jay9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvY21kbGd0c3QvTWFrZWZpbGUuaW46CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgdGhlIG1pc3NpbmcgbGlicmFyeSBkZXBlbmRlbmNpZXMuCgoJKiBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL2NndWlkLmg6CglQZXRlciBIdW5uaXNldHQgPGh1bm5pc2VAbm9ydGVsbmV0d29ya3MuY29tPgoJQWRkZWQgY2d1aWQuaC4KCgkqIGRsbHMvZGRyYXcvZGdhLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJRG8gbm90IHN1cHBvcnQgREdBIHdoZW4gRGlyZWN0VmlkZW8gbm90IHByZXNlbnQuCgoJKiB3aW5kb3dzL2RlZnduZC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglVbmlmeSBXTV9TRVRURVhUIGhhbmRsaW5nIGFtb25nIERlZldpbmRvd1Byb2MxNi9EZWZXaW5kb3dQcm9jQS9EZWZXaW5kb3dQcm9jVy4KCgkqIGNvbnRyb2xzL2xpc3Rib3guYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0Bsb29rc21hcnQuY29tLmF1PgoJQXZvaWQgZGl2aWRlIGJ5IHplcm8gd2hlbiBsaXN0Ym94IHNldCB0byB6ZXJvIGhlaWdodC4KCgkqIHdpbmRvd3MvbWRpLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCVNpbXBsaWZ5IGEgYml0IE1ESSBjaGlsZCB3aW5kb3cgY3JlYXRpb24uCgoJKiBjb250cm9scy9tZW51LmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCUdldE1lbnUgbWlnaHQgYmUgdXNlZCB0byBnZXQgY2hpbGQgd2luZG93IGlkLgoKMjAwMC0wOS0wNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6CglHaW92YW5uaSBQYW5jb3R0aSA8Z2lvdmFubmkucGFuY290dGlAY2VkZWNyYS5pdD4KCUl0YWxpYW4ga2V5Ym9hcmQgZml4ZXMuCgoJKiBmaWxlcy9kb3NfZnMuYzogQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJRE9TRlNfTWF0Y2hMb25nIGlnbm9yZWQgc2V2ZXJhbCB0aGluZ3MgYWJvdXQgZmlsZSBtYXNrIG1hdGNoaW5nIGZvcgoJbG9uZyBmaWxlIG5hbWVzLgoKCSogaW5jbHVkZS93aW5lL3VuaWNvZGUuaDoKCUVyaWsgSG9mbWFuIDxlcmlrLmhvZm1hbkBhMS5ubD4KCUFkZGVkIG1pc3NpbmcgY29uc3QgdG8gZXh0ZXJuYWwgdGFibGVzIGRlZmluaXRpb25zLgoKCSogZmlsZXMvZG9zX2ZzLmMsIGluY2x1ZGUvY29tbS5oLCBpbmNsdWRlL3NlcnZlci5oLCBtaXNjL2NvbW0uYywgc2VydmVyL01ha2VmaWxlLmluLCBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvc2VyaWFsLmMsIHNlcnZlci90cmFjZS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQGxvb2tzbWFydC5jb20uYXU+CglBZGRlZCBzZXJpYWwgcG9ydCBvYmplY3QgdG8gdGhlIHNlcnZlci4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbHRpcHMuYzoKCUZyYW5jb2lzIEphY3F1ZXMgPGZyYW5jb2lzakBtYWNhZGFtaWFuLmNvbT4KCS0gTWFrZSBzdXJlIHRvb2x0aXBzIGFyZSBoaWRkZW4gYmVmb3JlIGRlbGV0aW5nIHRoZW0uCgktIEdsaXRjaCBoYXBwZW5lZCB3aGlsZSBtb3ZpbmcgZnJvbSBhIHRvb2x0aXAgdG8gYW5vdGhlciAoZml4ZWQpLgoKCSogb2JqZWN0cy9kYy5jOiBHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCU1ha2UgR2V0RGV2aWNlQ2FwczE2IChoZGMsIE5VTUNPTE9SUykgbm90IHJldHVybiAtMSBmb3IgMTYgYml0cyBwcm9ncmFtcy4KCgkqIGdyYXBoaWNzL3gxMWRydi9jb2RlcGFnZS5jOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUFkZGVkIHN1cHBvcnQgZm9yIGNwOTQ5LgoKMjAwMC0wOS0wNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG1lbW9yeS9hdG9tLmM6IEZpeGVkIGN1dCZwYXN0ZSB0eXBvLgoKCSogdHN4MTEvTWFrZWZpbGUuaW4sIHRzeDExL1gxMV9jYWxscywgdHN4MTEvdHNfeHZpZGVvLmMsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBpbmNsdWRlL2FjY29uZmlnLmgsIGluY2x1ZGUvY29uZmlnLmguaW4sIGluY2x1ZGUvdHNfeHZpZGVvLmgsIHRvb2xzL21ha2VfWDExd3JhcHBlcnM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJQWRkZWQgcG9zc2liaWxpdHkgdG8gdXNlIFhWaWRlby4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYywgaW5jbHVkZS9jb21tY3RybC5oOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudGVkIGJvdGggY3VzdG9tZHJhdyBtZXNzYWdlIHNlbmRpbmcgYW5kIGhhbmRsaW5nIChiYXNlZCBvZmYKCXRoZSB0cmVldmlldyBtZXRob2QpIGFzIHdlbGwgYXMgTFZTX09XTkVSRFJBV0ZJWEVELgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAbG9va3NtYXJ0LmNvbS5hdT4KCUZpeGVkIGEgYnVnIChpbmNvcnJlY3Qgc2l6ZSBpbiBtZW1tb3ZlKSB0aGF0IEkgaW50cm9kdWNlZCB3aXRoIGFuCgllYXJsaWVyIHBhdGNoLiBUZXN0ZWQgd2l0aCB3b3Jkdmlldy4KCgkqIHRvb2xzL3dpbmVpbnN0YWxsOgoJUGhpbCBDb2xlIDx1a3BnY0BwLmNvbGUuZWFzeW5ldC5jby51az4KCUFkZGVkIHR3byBkaXJlY3RvcmllcyB0byBkZWZhdWx0IG5vbi13aW5kb3dzIGluc3RhbGwuCgoJKiBkbGxzL3dpbmFzcGkvYXNwaS5jLCBkbGxzL3dpbmFzcGkvd2luYXNwaTMyLmMsIGRsbHMvd2luYXNwaS93bmFzcGkzMi5zcGVjOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJQWRkZWQgbmV3ZXIgKEFTUEkgMy4wID8pIGZ1bmN0aW9uIHN0dWJzIHRvIFdOQVNQSTMyLgoJQmV0dGVyIGVycm9yIG1lc3NhZ2VzLgoKCSogZGxscy9zaGVsbDMyL3N5c3RyYXkuYzoKCUphbWVzIEhhdGhld2F5IDxqYW1lc0BtYWNhZGFtaWFuLmNvbT4KCVN5c3RyYXkgc2hvdWxkIGtlZXAgYSBjb3B5IG9mIGl0cyBpY29ucy4KCgkqIHNlcnZlci9zb2NrLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQWRhcHRlZCBXaW5zb2NrIHRvIExpbnV4IDIuNCBUQ1Agc29ja2V0IHBvbGwoKSBiZWhhdmlvdXIKCSh0aGFua3MgdG8gQmVyZW5kIE96Y2VyaSBmb3IgZmluZGluZyB0aGUgcHJvYmxlbSkuCgoJKiB3aW5kb3dzL21kaS5jOiBTZXJnZSBJdmFub3YKCURlbGF5IGRlc3Ryb3lpbmcgbWVudSBlbnRyeSB1bnRpbCBhbGwgbWVzc2FnZXMgYXJlIHNlbnQuCgoyMDAwLTA5LTA0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbWVtb3J5L2F0b20uYzoKCUZpeGVkIFVuaWNvZGUgY29udmVyc2lvbiBpbiBHZXRBdG9tTmFtZUEgKHRoYW5rcyB0byBHZXJhcmQgUGF0ZWwpLgoKCSogZGxscy9kcGxheXgvbmFtZV9zZXJ2ZXIuYywgZGxscy9udGRsbC9ydGxzdHIuYywgbG9hZGVyL3BlX2ltYWdlLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgaXNzdWVzIGZvdW5kIGJ5IHdpbmFwaV9jaGVjay4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9udGRsbC5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi90dHlkcnYuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIveDExZHJ2LmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMuZGF0LCB0b29scy93aW5hcGlfY2hlY2svbmF0aXZlYXBpLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luMTYvY29tcG9iai5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfY2hlY2ssIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfcGFyc2VyLnBtOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglNaW5vciBBUEkgZmlsZXMgdXBkYXRlLgoKCSogZ3JhcGhpY3MveDExZHJ2L3hmb250LmM6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJQWRkIGppc3gwMjEyIGVuY29kaW5nLgoJUmVtb3ZlIEZJWE1FcyBmb3IgaW1wbGVtZW50ZWQgREJDUyBoYW5kbGluZy4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAbG9va3NtYXJ0LmNvbS5hdT4KCUFkZGVkIG1pc3NpbmcgY29tbWEuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0Bsb29rc21hcnQuY29tLmF1PgoJUmV3cm90ZSBxdWlja3NvcnQgdG8gc29sdmUgaW5maW5pdGUgcmVjdXJzaW9ucyBXaW45OCBleHBsb3Jlci5leGUuCgoyMDAwLTA5LTAyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luMzIvY29uc29sZS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglDaGFuZ2UgeHRlcm0gbW91c2UgdHJhY2tpbmcgbW9kZSB0byBCVE5fRVZFTlRfTU9VU0UgKHRyYWNrIGlmIHByZXNzZWQpLgoKCSogc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUF2b2lkIGNyYXNoIG9uIGVtcHR5IGNvbW1hbmQtbGluZS4KCgkqIGRlYnVnZ2VyL3N0YWJzLmM6CglHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCUFkZGVkIHR3byBtaXNzaW5nIGNhc3RzLgoKCSogZGxscy9jb21jdGwzMi9hbmltYXRlLmM6CglKZWFuLUNsYXVkZSBCYXRpc3RhIDxqY2JAbWFjYWRhbWlhbi5jb20+CglVc2UgU2V0RElCaXRzIGluc3RlYWQgb2YgU3RyZXRjaERJQml0cyAoaW4gQU5JTUFURV9QYWludEZyYW1lKS4KCjIwMDAtMDktMDEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpZjE2MzIvYnVpbHRpbi5jLCByZWxheTMyL2J1aWx0aW4zMi5jOgoJQXZvaWQgYnVmZmVyIG92ZXJmbG93cyBpbiBidWlsdGluIGRsbCBsb2FkaW5nICh3aXRoIHRoZSBoZWxwIG9mIERtaXRyeQoJVGltb3Noa292KS4KCgkqIHdpbmRvd3MvbWRpLmM6IEhlbm5pbmcgSG9mZm1hbm4KCUF1Z21lbnQgbWVudSB3aGVuIGEgbWRpIHdpbmRvdyBzdGFydHMgbWF4aW1pemVkLgoKCSogd2luZG93cy9tZGkuYzogRnJhbmNpcyBCZWF1ZGV0CglNREkgUGF0Y2ggd2hpY2ggZml4ZXMgcHJvYmxlbXMgaW4gUFIsIFFQLCBXUCBhbmQgUGFyYWRveC4KCgkqIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmM6CglKYW1lcyBBYmJhdGllbGxvIDxhYmJleWpAd3BpLmVkdT4KCURvbid0IHVzZSBjb3BpZXMgb2YgY3JpdGljYWwgc2VjdGlvbnMgbWFkZSBieSBtZW1jcHkoKQoJQWRkZWQgbWlzc2luZyBXSU5BUElzCgoJKiBkZWJ1Z2dlci9icmVhay5jLCBkZWJ1Z2dlci9kZWJ1Z2dlci5oLCBkZWJ1Z2dlci93aW5lZGJnLmM6CglKYW1lcyBBYmJhdGllbGxvIDxhYmJleWpAd3BpLmVkdT4KCUZpeCBmb3IgZGVidWdnZXIgZGlzYXNzZW1ibHkgYmVpbmcgb2ZmIGJ5IG9uZSBieXRlIGFmdGVyIHVzaW5nIG5leHRpCglvbiBhICJjYWxsIiBpbnN0cnVjdGlvbi4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYzoKCVN0ZXBoYW5lIEx1c3NpZXIgPHN0ZXBoYW5lQG1hY2FkYW1pYW4uY29tPgoJV2hlbiBjaGVja2luZyB0aGUgc29ja2V0IHJldHVybiBieSB0aGUgc2VydmVyIHJlcXVlc3QsIHdlIHNob3VsZCBkbyBhCgkic2lnbmVkIiBjaGVjay4KCgkqIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL29sZTMyLnNwZWM6CglKYW1lcyBIYXRoZXdheSA8amFtZXNAbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRlZCBDb0dldFBTQ2xzaWQoKS4KCjIwMDAtMDgtMzEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB0b29scy93aW5lY29uZjoKCVBoaWwgQ29sZSA8dWtwZ2NAcC5jb2xlLmVhc3luZXQuY28udWs+CglUaGUgUGF0aCB2YXJpYWJsZSBpbiB0aGUgY3JlYXRlZCAud2luZXJjIG11c3QgYmUgaW4gZG9zIGZvcm1hdC4KCgkqIHRvb2xzL3dpbmVpbnN0YWxsOgoJUGhpbCBDb2xlIDx1a3BnY0BwLmNvbGUuZWFzeW5ldC5jby51az4KCVNtYWxsIGZpeC4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUZpeGVkIGEgc3RyaW5nIGJ1ZmZlciBvdmVyZmxvdy4KCgkqIGRsbHMvY29tY3RsMzIvYW5pbWF0ZS5jOgoJSmVhbi1DbGF1ZGUgQmF0aXN0YSA8amNiQG1hY2FkYW1pYW4uY29tPgoJLSBpbXByb3ZlZCBBQ1NfVFJBTlNQQVJFTlQgYW5kIEFDU19DRU5URVIgc3VwcG9ydAoJLSBhZGRlZCBSTEU4IGluY3JlbWVudGFsIGRlY29tcHJlc3Npb24KCS0gZWFjaCBhbmltYXRpb24gaXMgbm93IGNvbnRyb2xsZWQgYnkgaXRzIG93biBXaW5kb3dzIHRocmVhZAoJLSBhZGRlZCB1c2Ugb2YgQ3JpdGljYWwgU2VjdGlvbnMgaW4gdGhlIFdNX1BBSU5UIGhhbmRsZXIuCgoJKiB3aW4zMi9jb25zb2xlLmM6CglNYXJjdXMgTWVpc3NuZXIgPE1hcmN1cy5NZWlzc25lckBjYWxkZXJhLmRlPgoJUmVwbGFjZWQgVVNFUjMyLkRMTCB1c2UgYnkgaGFyZGNvZGVkIHRhYmxlcyBmb3IgVmtLZXlTY2FuQSBhbmQKCU1hcFZpcnR1YWxLZXlBLgoKCSogc2NoZWR1bGVyL3RocmVhZC5jLCBzZXJ2ZXIvY29uc29sZS5jLCBzZXJ2ZXIvY29udGV4dF9pMzg2LmMsIHNlcnZlci9jb250ZXh0X3NwYXJjLmMsIHNlcnZlci9kZWJ1Z2dlci5jLCBzZXJ2ZXIvZmlsZS5jLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvc29jay5jLCBzZXJ2ZXIvdHJhY2UuYywgdG9vbHMvbWFrZV9yZXF1ZXN0cywgd2luMzIvY29uc29sZS5jLCB3aW4zMi9leGNlcHQuYywgZGxscy9udGRsbC9leGNlcHRpb24uYywgZGxscy93aW5zb2NrL3NvY2tldC5jLCBmaWxlcy9kb3NfZnMuYywgZmlsZXMvZmlsZS5jLCBpbmNsdWRlL2ZpbGUuaCwgaW5jbHVkZS9zZXJ2ZXIuaCwgbG9hZGVyL2Rvcy9tb2R1bGUuYywgbWVtb3J5L3ZpcnR1YWwuYywgbWlzYy9jb21tLmMsIHNjaGVkdWxlci9jbGllbnQuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCUNvbnZlcnRlZCBhIGxvdCBvZiBzZXJ2ZXIgcmVxdWVzdHMgdG8gdGhlIG5ldyBleGNlcHRpb24gaGFuZGxpbmcKCW1lY2hhbmlzbS4KCjIwMDAtMDgtMzAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2RkcmF3L2RzdXJmYWNlL3gxMS5jOgoJRml4ZWQgbm9uLU9wZW5HTCBjb21waWxlLgoKCSogZmlsZXMvY2hhbmdlLmMsIGZpbGVzL2ZpbGUuYywgaW5jbHVkZS9udGRkay5oLCBpbmNsdWRlL3NlcnZlci5oLCBsb2FkZXIvbW9kdWxlLmMsIGxvYWRlci9uZS9tb2R1bGUuYywgbG9hZGVyL3BlX2ltYWdlLmMsIG1lbW9yeS9hdG9tLmMsIG1lbW9yeS9zZWxlY3Rvci5jLCBtZW1vcnkvdmlydHVhbC5jLCBtaXNjL3JlZ2lzdHJ5LmMsIHNjaGVkdWxlci9kZWJ1Z2dlci5jLCBzY2hlZHVsZXIvZXZlbnQuYywgc2NoZWR1bGVyL2hhbmRsZS5jLCBzY2hlZHVsZXIvbXV0ZXguYywgc2NoZWR1bGVyL3BpcGUuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2NoZWR1bGVyL3NlbWFwaG9yZS5jLCBzY2hlZHVsZXIvc3luY2hyby5jLCBzY2hlZHVsZXIvdGhyZWFkLmMsIHNjaGVkdWxlci90aW1lci5jLCBzZXJ2ZXIvYXRvbS5jLCBzZXJ2ZXIvZGVidWdnZXIuYywgc2VydmVyL2V2ZW50LmMsIHNlcnZlci9tYXBwaW5nLmMsIHNlcnZlci9tdXRleC5jLCBzZXJ2ZXIvb2JqZWN0LmMsIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci9zZW1hcGhvcmUuYywgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdGltZXIuYywgc2VydmVyL3RyYWNlLmMsIHRvb2xzL21ha2VfcmVxdWVzdHMsIHdpbjMyL2NvbnNvbGUuYywgd2luMzIvZGV2aWNlLmMsIHdpbmRvd3MvcXVldWUuYywgZGxscy9rZXJuZWwvdG9vbGhlbHAuYywgZGxscy9udGRsbC9leGNlcHRpb24uYywgZGxscy9udGRsbC9udC5jLCBkbGxzL250ZGxsL29tLmMsIGRsbHMvbnRkbGwvc3luYy5jOgoJQWRkZWQgZXhjZXB0aW9uIGhhbmRsaW5nIHdyYXBwZXIgdG8gYSBudW1iZXIgb2Ygc2VydmVyIHJlcXVlc3RzLgoJQ2hhbmdlZCBhIGZldyByZXF1ZXN0cyB0byB1c2UgdGhlIG5ldyB2YXJhcmcgbWVjaGFuaXNtLgoKMjAwMC0wOC0yOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvd2lubW0vbWNpY2RhL21jaWNkYS5jLCBtaXNjL2Nkcm9tLmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglGaXhlZCB2ZXJib3NlIENELVJPTSBzZXJpYWwgbnVtYmVyIHdhcm5pbmdzIGFuZCBzb21lIHNwZWxsaW5nIGVycm9ycy4KCgkqIGRsbHMvZGRyYXcvZGRyYXcveDExLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UveDExLmM6CglQZXRlciBIdW5uaXNldHQgPGh1bm5pc2VAbm9ydGVsbmV0d29ya3MuY29tPgoJTmV3YmllIGZyaWVuZGx5IGVycm9yIG1lc3NhZ2UgZm9yIDNEIGNyZWF0aW9uIGZhaWx1cmUuCgoJKiBkbGxzL2RwbGF5eC9kcGxheS5jLCBkbGxzL2RwbGF5eC9kcGxheV9nbG9iYWwuaCwgZGxscy9kcGxheXgvZHBsYXlzcC5jLCBkbGxzL2RwbGF5eC9kcGxheXNwLmgsIGRsbHMvZHBsYXl4L2RwbGF5eF9tZXNzYWdlcy5jLCBkbGxzL2RwbGF5eC9kcGxheXhfbWVzc2FnZXMuaCwgZGxscy9kcGxheXgvbmFtZV9zZXJ2ZXIuYzoKCVBldGVyIEh1bm5pc2V0dCA8aHVubmlzZUBub3J0ZWxuZXR3b3Jrcy5jb20+CgktIE1vcmUgaW1wbGVtZW50YXRpb24KCS0gU2hvdWxkIGJlIGFibGUgdG8gZW51bWVyYXRlIHNlc3Npb25zIGFueXdoZXJlIHdpdGggYXQgbGVhc3QgdGNwL2lwCgoJKiBpbmNsdWRlL3NlcnZlci5oLCBpbmNsdWRlL3RocmVhZC5oLCBzY2hlZHVsZXIvY2xpZW50LmMsIHNjaGVkdWxlci90aHJlYWQuYywgc2VydmVyL3JlcXVlc3QuYywgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdGhyZWFkLmgsIHNlcnZlci90cmFjZS5jLCB0b29scy9tYWtlX3JlcXVlc3RzOgoJQWRkZWQgdGhlIGRhdGEgc3RydWN0dXJlcyBhbmQgbWFjcm9zIHRoYXQgd2lsbCBiZSBuZWVkZWQgdG8gc3VwcG9ydAoJcmVlbnRyYW50IHNlcnZlciByZXF1ZXN0cy4KCgkqIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL3F1ZXVlLmMsIHdpbmRvd3MvaW5wdXQuYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCS0gZml4IG9uZSBsb2NraW5nIGlnbm9yYW50IHJldHVybiAwOyBpbiBNU0dfU2VuZE1lc3NhZ2VJbnRlclRocmVhZCgpCgktIGZpeCBhIGNyYXNoIGluIFFVRVVFX1JlbW92ZVNNU0coKQoJLSBjb252ZXJ0IHNvbWUgcXVldWUgV0FSTigpIHRvIEVSUigpCgktIHNwYWlsZW5nIGZpa3NlcwoKCSogY29udHJvbHMvbGlzdGJveC5jLCBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglBbHdheXMgY2FsbCBMSVNUVklFV19TZXRTZWxlY3Rpb24oKSBmb3IgYW4gaXRlbSwgZXZlbiBpZiB0aGF0IGl0ZW0KCWhhcyBiZWVuIHNlbGVjdGVkIGJlZm9yZSwgaW4gb3JkZXIgdG8gbGV0IG90aGVyIGl0ZW1zIGdldCBlcmFzZWQuCgoJKiBncmFwaGljcy94MTFkcnYvdGV4dC5jOgoJQWxiZXJ0IGRlbiBIYWFuIDxhbGJlcnRkQGNvcmVsLmNvbT4KCUNvbnZlcnQgdGhlIFVuaWNvZGUgQ2hhcmFjdGVyIGlkIHRvIGEgZ2x5cGggaWQgaW4KCVgxMURSVl9HZXRUZXh0RXh0ZW50UG9pbnQuCgoJKiBncmFwaGljcy94MTFkcnYveGZvbnQuYzoKCUFsYmVydCBkZW4gSGFhbiA8YWxiZXJ0ZEBjb3JlbC5jb20+CgktIGVuaGFuY2VkIHJlcG9ydGluZyBvZiB1bnN1cHBvcnRlZCBYIGZvbnQgZW5jb2RpbmdzCgktIGFkZGVkIC1jcC0qLSBkYXRhIHRvIGZvbnQgZW5jb2RpbmcgbG9va3VwIHN0cnVjdHVyZXMKCjIwMDAtMDgtMjggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiByZWxheTMyL2J1aWx0aW4zMi5jLCBkb2N1bWVudGF0aW9uL3dpbmUubWFuLmluLCBpbmNsdWRlL2xvYWRvcmRlci5oLCBsb2FkZXIvZWxmLmMsIGxvYWRlci9sb2Fkb3JkZXIuYywgbG9hZGVyL21vZHVsZS5jLCBsb2FkZXIvbmUvbW9kdWxlLmMsIGxvYWRlci9wZV9pbWFnZS5jLCBtaXNjL29wdGlvbnMuYzoKCVBldGVyIEdhbnRlbiA8cGV0ZXJAZ2FudGVuLm9yZz4KCS0gQWx3YXlzIHN0b3JlIHRoZSBmdWxsIHBhdGggbmFtZSBvZiAzMmJpdCBtb2R1bGVzIGluIFdJTkVfTU9EUkVGCgktIEFkZCB0aGUgcG9zc2liaWxpdHkgdG8gdXNlIHBhdGggbmFtZXMgd2l0aCB0aGUgLS1kbGwgY29tbWFuZCBsaW5lCgkgIG9wdGlvbgoJLSBBZGQgdGhlIHBvc3NpYmlsaXR5IHRvIHVzZSB0aGUgLS1kbGwgY29tbWFuZCBsaW5lIG9wdGlvbiBzZXZlcmFsCgkgIHRpbWVzLgoJLSBOb3RlOiBUaGUgY29sb24tc2lnbiBpcyBub3cgZXhjaGFuZ2VkIHdpdGggdGhlIHBsdXMtc2lnbiwgYXMgaXQgaXMKCSAgcGFydCBvZiBkb3MgcGF0aCBuYW1lcy4KCgkqIHRvb2xzL3dpbmVpbnN0YWxsOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJQWRkZWQgYSB3aW5lIHJwbSB1bmluc3RhbGwgc2VjdGlvbiB0byB3aW5laW5zdGFsbC4KCgkqIHdpbmRvd3Mvbm9uY2xpZW50LmM6CglGcmFuY29pcyBNZXRob3QgPGZyYW5jb2lzbUBtYWNhZGFtaWFuLmNvbT4KCURvIG5vdCBjaGVjayBmb3Igc3lzdGVtIG1lbnUgaWYgdGhlIHdpbmRvdyBoYXMgc3R5bGUgV1NfRVhfVE9PTF9XSU5ET1cuCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsIGRsbHMvZGRyYXcvZDNkdGV4dHVyZS5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL21haW4uYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIGFkZGVkIEFSR0IgMTU1NSBmb3JtYXQKCS0gZml4ZWQgcmVmY291bnQgcHJvYmxlbSBmb3IgQWRkL0RlbGV0ZUF0dGFjaGVkU3VyZmFjZQoKCSogc2VydmVyL3JlZ2lzdHJ5LmM6CglBbGJlcnQgZGVuIEhhYW4gPGFsYmVydGRAY29yZWwuY29tPgoJRml4ZWQgdHlwbyBpbiBIS0VZX0NVUlJFTlRfQ09ORklHIG5hbWUuCgoJKiBkbGxzL2tlcm5lbC9tZXNzYWdlcy93aW5lcnJfZW51Lm1jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglBZGQgbWlzc2luZyBtZXNzYWdlIHRvIHdpbmVycl9lbnUubWMuCgoJKiBkbGxzL2tlcm5lbC93b3d0aHVuay5jOgoJSmFtZXMgQWJiYXRpZWxsbyA8YWJiZXlqQHdwaS5lZHU+CglJbmNyZWFzZSBudW1iZXIgb2Ygc3VwcG9ydGVkIGFyZ3MgZm9yIFdPV19DYWxsUHJvYzMyVzE2IGZyb20gMTEgdG8gMTMKCShmb3IgQ3JlYXRlU2VydmljZSkuCgoJKiBkbGxzL2tlcm5lbC93cHJvY3Muc3BlYywgbXNkb3MvdnhkLmM6CglKYW1lcyBBYmJhdGllbGxvIDxhYmJleWpAd3BpLmVkdT4KCVN0dWIgc3VwcG9ydCBmb3IgaW50MmYvYXg9MTY4NC9ieD0wMDI3IChWWERMRFIpLgoKMjAwMC0wOC0yNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbjMyL2V4Y2VwdC5jLCBkZWJ1Z2dlci93aW5lZGJnLmMsIGRsbHMvZGlucHV0L2RpbnB1dF9tYWluLmMsIGRsbHMvZHBsYXl4L2RwbG9iYnkuYywgbG9hZGVyL3Rhc2suYzoKCVJlbW92ZWQgY2FsbHMgdG8gQ29udmVydFRvR2xvYmFsSGFuZGxlIGFuZCBNYWtlQ3JpdGljYWxTZWN0aW9uR2xvYmFsLgoKCSogZGxscy9udGRsbC9yZWcuYywgaW5jbHVkZS9udGRkay5oOgoJU2ltcGxpZmllZCByb290IGtleSBoYW5kbGluZyBub3cgdGhhdCB0aGUgc2VydmVyIHN1cHBvcnRzIGEgcmVhbCByb290CglrZXkuIEZpeGVkIGEgZmV3IHByb3RvdHlwZXMuIEltcGxlbWVudGVkIE50RGVsZXRlS2V5L050RGVsZXRlVmFsdWVLZXkuCgoJKiBkbGxzL250ZGxsL21pc2MuYywgZGxscy9udGRsbC9udGRsbF9taXNjLmg6CglGaXhlZCBkZWJ1Z3N0cl9hcy91cyBwcm90b3R5cGVzLgoKCSogZGxscy93aW5pbmV0L2h0dHAuYywgZGxscy93aW5tbS9qb3lzdGljay9qb3lzdGljay5jLCBkbGxzL3dpbm1tL3dpbmVvc3MvbWlkaS5jLCBsb2FkZXIvbWFpbi5jLCBsb2FkZXIvbW9kdWxlLmMsIGxvYWRlci9uZS9zZWdtZW50LmMsIGxvYWRlci9wZV9pbWFnZS5jLCBtaXNjL2NvbW0uYywgbWlzYy9leHRfZGVidWdnZXIuYywgd2luZG93cy94MTFkcnYvY2xpcGJvYXJkLmMsIGNvbnNvbGUveHRlcm0uYywgZGxscy9jb21tZGxnL2NvbG9yZGxnLmMsIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmMsIGRsbHMvZ2RpL3ByaW50ZHJ2LmMsIGRsbHMvbnRkbGwvc2lnbmFsX3NwYXJjLmMsIGRsbHMvb2xlYXV0MzIvcGFyc2VkdC5jLCBkbGxzL3dpbmluZXQvZnRwLmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CgktIG1hZGUgdGhlIE1JREkgc2VxdWVuY2VyIGVycm9yIG1lc3NhZ2UgbXVjaCBiZXR0ZXIgZm9yIGNvbmZ1c2VkIHVzZXJzCgkgIHRvIGJlIGZvdW5kIG9uICNXaW5lSFEKCS0gdXNlIHN0cmVycm9yIGluc3RlYWQgb2YgZXJybm8gYXQgaW1wb3J0YW50IHBsYWNlcwoJLSBnb3QgcmlkIG9mIEhBVkVfU1RSRVJST1IgbWFjcm8KCS0gcmVtb3ZlZCBzb21lICNpbmNsdWRlOnMgKGhvcGVmdWxseSBJIGRpZG4ndCBicmVhayBhbnl0aGluZykKCgkqIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglSZXBsYWNlZCBjQ3VySW1hZ2UgYnkgY01heEltYWdlLgoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCSJGaXhlZCIgaG9ycmlibHkgbWlzYWxpZ25lZCBwYWdlcyBpbiBwcm9wZXJ0eSBzaGVldHMgb2YgYXBwYXJlbnRseQoJbmV3ZXIgSW5zdGFsbFNoaWVsZHMuCgoJKiBkbGxzL3dpbmVwcy9pbml0LmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCVJlZ2lzdGVyIFdpbmUgUG9zdHNjcmlwdCBEcml2ZXIgYXMgIldJTkVQUyIsICJXSU5FUFMuRExMIiBhbmQKCSJXSU5FUFMuRFJWIiB0byBhbGxvdyBhbiBlYXN5IGNvbmZpZ3VyaW5nIGZvciB1c2Vycy4KCgkqIGdyYXBoaWNzL3gxMWRydi9jb2RlcGFnZS5jOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCSAgaW1wbGVtZW50cyBEcmF3VGV4dCBmb3IgY3A5MzIuCgoJKiBkbGxzL3VzZXIvZGRlbWwuYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCURvbid0IG1ha2UgRERFTUwgbXV0ZXhlcyBnbG9iYWwgYW55IG1vcmUuCgoJKiBmaWxlcy9wcm9maWxlLmMsIHNlcnZlci9tYWluLmMsIHNlcnZlci9vYmplY3QuYywgc2VydmVyL29iamVjdC5oLCBzZXJ2ZXIvcmVnaXN0cnkuYywgc2VydmVyL3JlcXVlc3QuYywgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3RocmVhZC5oOgoJQWRkZWQgYSByZWFsIHJvb3Qga2V5IGFuZCBzaW1wbGlmaWVkIGNyZWF0aW9uIG9mIHRoZSBIS0VZXyogc3BlY2lhbCByb290IGtleXMuCglEbyBub3QgcHJlZml4IGFsbCBrZXlzIHdpdGggdGhlIG5hbWUgb2YgdGhlIHRvcCBrZXkgd2hlbiBzYXZpbmcgdG8gYSBmaWxlLgoJVHJ5IHRvIGxvYWQgJFdJTkVQUkVGSVgvY29uZmlnIGludG8gdGhlIFdpbmUgY29uZmlnIGJyYW5jaCBhdCBzdGFydHVwLgoKCSogZGxscy9tc2FjbS8uY3ZzaWdub3JlLCBkbGxzL21zYWNtL01ha2VmaWxlLmluLCBkbGxzL21zYWNtL2RyaXZlci5jLCBkbGxzL21zYWNtL2ZpbHRlci5jLCBkbGxzL21zYWNtL2Zvcm1hdC5jLCBkbGxzL21zYWNtL2ludGVybmFsLmMsIGRsbHMvbXNhY20vbXNhY20ucmMsIGRsbHMvbXNhY20vbXNhY20zMi5zcGVjLCBkbGxzL21zYWNtL21zYWNtMzJfbWFpbi5jLCBkbGxzL21zYWNtL3N0cmVhbS5jLCBkbGxzL21zYWNtL3dpbmVhY20uaCwgaW5jbHVkZS9tc2FjbS5oOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglJbXBsZW1lbnRlZCBtb3N0IG9mICcqRm9ybWF0KicgQVBJLgoJSW1wcm92ZWQgaW50ZXJuYWwgb2JqZWN0IGFuZCBtZXNzYWdlcyBoYW5kbGluZy4KCVN0YXJ0ZWQgc29tZSAnKkZpbHRlcionIGZ1bmN0aW9ucy4KCUZpeGVkIHN0YW5kYXJkIGhlYWRlcnMgZm9yIFdpbmVsaWIuCglGaXhlZCBhY21NZXRyaWNzLgoKMjAwMC0wOC0yNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy9udGRsbC9ydGxzdHIuYywgaW5jbHVkZS9udGRkay5oOgoJRml4ZWQgUnRsKiBzdHJpbmcgZnVuY3Rpb25zIGZvciBwcm9wZXIgTUJDUy9jb2RlcGFnZSBzdXBwb3J0LiBBZGRlZCBhCglmZXcgbW9yZSBmdW5jdGlvbnMuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWxfbWFpbi5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJTW92ZWQgVEFTS19DcmVhdGUgY2FsbCB0byBLRVJORUwgaW5pdGlhbGlzYXRpb24gcm91dGluZS4KCUNsZWFyIGxhc3QgZXJyb3IgY29kZSBiZWZvcmUgY2FsbGluZyBtYWluIGVudHJ5IHBvaW50IChyZXBvcnRlZCBieQoJSmFtZXMgSnVyYW4pLgoKCSogZGxscy9rZXJuZWwva2VybmVsLnNwZWMsIGRsbHMvdXNlci9sc3RyLmMsIGRsbHMvdXNlci91c2VyLnNwZWMsIG1lbW9yeS9zdHJpbmcuYzoKCUZpeGVkIGEgY291cGxlIG9mIFdJTkFQSSBpc3N1ZXMgd2l0aCAxNi1iaXQgc3BlYyBmaWxlcyAodGhhbmtzIHRvCglNYXJjdXMgTWVpc3NuZXIpLgoKCSogZGxscy9kcGxheXgvZHBsYXlfZ2xvYmFsLmgsIGRsbHMvZHBsYXl4L2RwbGF5c3AuYywgZGxscy9kcGxheXgvZHBsYXlzcC5oLCBkbGxzL2RwbGF5eC9kcGxheXhfZ2xvYmFsLmMsIGRsbHMvZHBsYXl4L2RwbGF5eF9nbG9iYWwuaCwgZGxscy9kcGxheXgvZHBsYXl4X21haW4uYywgZGxscy9kcGxheXgvZHBsYXl4X21lc3NhZ2VzLmMsIGRsbHMvZHBsYXl4L2RwbGF5eF9tZXNzYWdlcy5oLCBkbGxzL2RwbGF5eC9kcGxheXhfcXVldWUuaCwgZGxscy9kcGxheXgvZHBsb2JieS5jLCBkbGxzL2RwbGF5eC9uYW1lX3NlcnZlci5jLCBkbGxzL2RwbGF5eC9uYW1lX3NlcnZlci5oLCBpbmNsdWRlL2RwbGF5LmgsIG9sZS9NYWtlZmlsZS5pbiwgb2xlL2d1aWQuYywgZGxscy9kcGxheXgvTWFrZWZpbGUuaW4sIGRsbHMvZHBsYXl4L2RwY2xhc3NmYWN0b3J5LmMsIGRsbHMvZHBsYXl4L2RwaW5pdC5oLCBkbGxzL2RwbGF5eC9kcGxheS5jOgoJUGV0ZXIgSHVubmlzZXR0IDxodW5uaXNlQG5vcnRlbG5ldHdvcmtzLmNvbT4KCS0gSW1wbGVtZW50ZWQgbG9hZGluZyBhbmQgaW5pdGlhbGl6YXRpb24gb2Ygc2VydmljZSBwcm92aWRlcnMKCS0gQ3JlYXRlZCBzZXJ2aWNlIHByb3ZpZGVyIENPTSBvYmplY3QKCS0gTG90cyBvZiBkcGxheS9kcGxvYmJ5IGltcGxlbWVudGF0aW9uL2ZpeGVzCgktIENsZWFuIHVwIG9mIG9sZS9ndWlkLmMKCgkqIG9iamVjdHMvZGMuYzogQmFja2VkIG91dCBmb250IGNvZGVwYWdlIGNoYW5nZS4KCgkqIGluY2x1ZGUvbWlzY2VtdS5oLCBtaXNjL2NvbW0uYywgbWlzYy92ZXJzaW9uLmMsIG1zZG9zL2ludDJmLmMsIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYywgZ3JhcGhpY3MveDExZHJ2L2RpYi5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJTWlub3IgY29zbWV0aWMgY2hhbmdlcy4KCgkqIG1pc2MvdHdlYWsuYzogQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJQ2xlYW51cCBhbmQgc3BlZWR1cCBvZiBpbml0IGNvZGUuCgoJKiBvYmplY3RzL2dkaW9iai5jOgoJR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglSZXN0b3JlZCB0aGUgaFBzZXVkb0JpdG1hcCBoYWNrIGZvciBwcm9ncmFtcyBkZWxldGluZyB0aGUgMXgxIGJpdG1hcAoJaW4gbWVtb3J5IERDcy4KCgkqIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLCBpbmNsdWRlL2dkaS5oLCBvYmplY3RzL2ZvbnQuYywgb2JqZWN0cy90ZXh0LmM6CglCYWNrZWQgb3V0IGZvbnQgY29kZXBhZ2UgY2hhbmdlLgoKCSogZGxscy9kZHJhdy9oZWxwZXIuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglGaXhlZCB0aGUgZGlzcGxheWluZyBvZiB0aGUgRk9VUkNDIGNvZGVzIGluIF9kdW1wX3BpeGVsZm9ybWF0LgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIHJlY29yZGluZyBmb3JtYXQgc2V0dGluZ3MgKDE2IGJpdCB3YXMgYnJva2VuKSBhbmQgcmVlbnRyYW5jeQoJaXNzdWVzLgoKCSogZGxscy9zaGVsbDMyL2Jyc2ZvbGRlci5jLCBkbGxzL3NoZWxsMzIvc2hyZXMucmMsIGRsbHMvc2hlbGwzMi9zaHJlc2RlZi5oLCBpbmNsdWRlL3NobG9iai5oOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglJbXByb3ZlZCBhIGJpdCB0aGUgZm9sZGVyIGJyb3dzaW5nIGltcGxlbWVudGF0aW9uLgoKCSogaW5jbHVkZS93aW5iYXNlLmg6CglNYXR0aGV3IExha2UgPE1hc3RlclJfTEB5YWhvby5jb20+CglBZGRlZCBMSE5ELgoKCSogdG9vbHMvd3JjLy5jdnNpZ25vcmUsIHRvb2xzL3dyYy9DSEFOR0VTLCB0b29scy93cmMvUkVBRE1FLndyYywgdG9vbHMvd3JjL3BhcnNlci55LCB0b29scy93cmMvd3JjLmgsIHRvb2xzL3dyYy93cmMubWFuOgoJQmVydGhvIFN0dWx0aWVucyA8YmVydGhvQGFraHBoZC5hdS5kaz4KCUZpeGVkIGEgTEFMUigyKSBwcm9ibGVtIHdoaWxlIHNjYW5uaW5nIHVzZXJ0eXBlIHJlc291cmNlcyB3aGljaCBoYWQKCWlkZW50aWZpZXJzIGZvciBib3RoIG5hbWUgYW5kIHR5cGUuCgoJKiBtaXNjL3dzcHJpbnRmLmM6CglNYXJjdXMgTWVpc3NuZXIgPE1hcmN1cy5NZWlzc25lckBjYWxkZXJhLmRlPgoJVXNlIGludCBpbnN0ZWFkIG9mIENIQVIvV0NIQVIgaW4gdmFfYXJnKCkgKGZpeGVzIGdjYy1jdXJyZW50IGNvbXBpbGUKCXByb2JsZW0pLgoKCSogZGxscy9kZHJhdy9kZHJhdy9tYWluLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJQ2hhbmdlIHBpeGVsIGZvcm1hdCBmb3IgMjQgQlBQIHN1cmZhY2VzIHdoZW4gdGhlIEREcmF3IEJQUCBpcyAzMi4KCgkqIG9iamVjdHMvZ2Rpb2JqLmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglHZXRPYmplY3RBOiB1bmxvY2sgdGhlIG9iamVjdCBhZ2FpbiBldmVuIGluIGNhc2Ugb2YgZmFpbHVyZS4KCjIwMDAtMDgtMjMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3dpbmUvZXhjZXB0aW9uLmg6CglGaXhlZCBmaW5hbGx5IGhhbmRsZXIgbmFtZS4KCgkqIHdpbmRvd3MvY2xhc3MuYzoKCUZpeGVkIFJlZ2lzdGVyQ2xhc3MgbGFzdCBlcnJvciBjb2RlIG9uIGF0b20gY3JlYXRpb24gZmFpbHVyZS4KCgkqIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jOgoJQ2xlYW5lZCB1cCBtYWpvciB1Z2xpbmVzcyBpbiBfX2xmQ2hlY2tTdW0uCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglTdXNhbiBGYXJsZXkgPHNmYXJsZXlAY29kZXdlYXZlcnMuY29tPgoJTGFyZ2UgY2FwdGlvbiBpY29ucyBzaG91bGQgZW5kIGluICcuLi4nIHdoZW4gdGhleSBhcmUgYWJicmV2aWF0ZWQuCgoJKiBkbGxzL2NvbWN0bDMyL2FuaW1hdGUuYzoKCUZyYW5jb2lzIE1ldGhvdCA8ZnJhbmNvaXNtQG1hY2FkYW1pYW4uY29tPgoJRm9yIHRoZSB0cmFuc3BhcmVuY3kgaXNzdWUsIGltcGxlbWVudGVkIGEgc3dpdGNoLWNhc2UgZm9yIHRoZSBiaXRjb3VudAoJKGJpdCBwZXIgcGl4ZWwpIG9mIHRoZSBhbmltYXRpb24gZmlsZXMuCgoJKiBkbGxzL2NvbWN0bDMyL3RyYWNrYmFyLmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJV2luZSB3YXMgbm90IGRyYXdpbmcgdHJhY2tiYXJzIHdpdGggbWluaW11bSByYW5nZXMgb2YgbW9yZSB0aGFuIDAKCWNvcnJlY3RseS4KCjIwMDAtMDgtMjIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYzoKCUZyYW5jb2lzIEphY3F1ZXMgPGZyYW5jb2lzakBtYWNhZGFtaWFuLmNvbT4KCS0gcmVtb3ZlZCB1bm5lY2Vzc2FyeSByZWN1cnNpb24KCS0gdXBvbiBxdWVyeSBmYWlsdXJlIG9uIG1haW4gcHJpbWFyeSBsY2lkIGFuZCBzZWNvbmRhcnkgbGNpZCwKCSAgYXR0ZW1wdHMgYSBxdWVyeSBvbiBzeXN0ZW0gbGNpZCAoMCkKCgkqIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jLCBpZjE2MzIvc25vb3AuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgc29tZSB3YXJuaW5ncy4KCgkqIG1zZG9zL2lvcG9ydHMuYzoKCUphbWVzIEFiYmF0aWVsbG8gPGFiYmV5akB3cGkuZWR1PgoJRml4ZXMgZm9yIHJlYWRpbmcgbGF0Y2hlZCB2YWx1ZXMgd2l0aCBwb3J0cyAweDQwLTB4NDMuCgoJKiBkbGxzL2RkcmF3L2RzdXJmYWNlL21haW4uYzoKCUphbWVzIEFiYmF0aWVsbG8gPGFiYmV5akB3cGkuZWR1PgoJRG9uJ3QgY3Jhc2ggd2hlbiBjYWxsaW5nIERpcmVjdERyYXdTdXJmYWNlOjpFbnVtQXR0YWNoZWRTdXJmYWNlcyBvbiBhCglzdXJmYWNlIHdpdGggbm8gYXR0YWNoZWQgc3VyZmFjZXMuCgoJKiBkbGxzL2tlcm5lbC9mb3JtYXRfbXNnLmM6CglKYW1lcyBBYmJhdGllbGxvIDxhYmJleWpAd3BpLmVkdT4KCUFsbG93IEZvcm1hdE1lc3NhZ2UgdG8gbG9hZCBVbmljb2RlIHN0cmluZyByZXNvdXJjZXMuCgoJKiBpbmNsdWRlL3NlcnZlci5oLCBpbmNsdWRlL3dpbm50LmgsIHNjaGVkdWxlci9zeW5jaHJvLmMsIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RocmVhZC5oLCBzZXJ2ZXIvdGltZXIuYywgc2VydmVyL3RyYWNlLmM6CglBZGRlZCBBUEMgc3VwcG9ydCBpbiB3YWl0YWJsZSB0aW1lcnMuCgoJKiBncmFwaGljcy9iaXRibHQuYywgZ3JhcGhpY3MveDExZHJ2L2JpdGJsdC5jOgoJUmVtb3ZlZCB1bm5lY2Vzc2FyeSBjYWxscyB0byBDTElQUElOR19VcGRhdGVHQ1JlZ2lvbi4gRml4ZWQgUGF0Qmx0IHRvCgl1c2UgRENfR2V0RENVcGRhdGUuCgoyMDAwLTA4LTIxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogQU5OT1VOQ0UsIENoYW5nZUxvZywgaW5jbHVkZS92ZXJzaW9uLmg6CglSZWxlYXNlIDIwMDAwODIxLgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoyMDAwLTA4LTIxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS93aW5iYXNlLmgsIHNjaGVkdWxlci9wcm9jZXNzLmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CgktIGRvbid0IHJldHVybiBGQUxTRSBmb3Igc3lzdGVtIHByb2Nlc3MgY2hhbmdlcwoJLSBTSFVURE9XTl9OT1JFVFJZIGlzIDEgYW5kIGhhcyB0byBiZSBpbiB3aW5iYXNlLmgKCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglCZWdpbm5pbmcgb2Ygc29tZSBzaW1wbGUgb3B0aW1pemF0aW9uIG9mIHRoZSBsaXN0dmlldwoJZHJhd2luZy4gU3BlY2lmaWNhbGx5IGl0IHJlZHVjZXMgZmxpY2tlciB3aGVuIHNlbGVjdGlvbiBjaGFuZ2VzLgoKCSogbG9hZGVyL3Rhc2suYzogQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJVHJhbnNmb3JtIGV2ZXJ5IEVSUigpIHRvIFdBUk4oKSBpbiBNYWtlUHJvY0luc3RhbmNlLgoKCSogZGxscy9rZXJuZWwva2VybmVsX21haW4uYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUNhbGwgV3JpdGVPdXRQcm9maWxlczE2IHRvIG1ha2Ugc3VyZSB0aGF0IGxhc3QgcHJvZmlsZSBnZXRzIHdyaXR0ZW4uCgoJKiBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jLCBpbmNsdWRlL2RpYWxvZy5oLCB3aW5kb3dzL2RpYWxvZy5jOgoJR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglEaXNhYmxlIHRoZSBvd25lciBvZiBhIG1vZGFsIGRpYWxvZyBib3gganVzdCBiZWZvcmUgY3JlYXRpbmcgdGhlCglkaWFsb2cgd2luZG93LgoKCSogZmlsZXMvZmlsZS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CgkoZnJvbSBJQk0gVG9wUGFnZSBwYXRjaCkgcmV0dXJuIGNvcnJlY3QgZXJyb3IgZm9yIGFscmVhZHkgZXhpc3RpbmcKCWZpbGUuCgoJKiB3aW5kb3dzL3dpbnByb2MuYzoKCUdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJSGFuZGxlIHRoZSBMQl9HRVRURVhUIGFuZCBDQl9HRVRMQlRFWFQgY2FzZXMgZm9yIDMyVyB0byAxNiBtYXBwaW5nLgoKCSogd2luZG93cy93aW5wb3MuYzoKCUdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJRW5hYmxlcyBzaG93aW5nIG9mIGhpZGRlbiB3aW5kb3dzIHdoZW4gdGhlIGFwcCBhc2sgKm9ubHkqIHRvIG1heGltaXplIGl0LgoKMjAwMC0wOC0yMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLCBpbmNsdWRlL2dkaS5oLCBvYmplY3RzL2RjLmMsIG9iamVjdHMvZm9udC5jLCBvYmplY3RzL3RleHQuYzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglIYW5kbGUgdGhlIGNvZGVwYWdlIG9mIGZvbnRzIGlmIHN1cHBvcnRlZCBieSB0aGUgZ3JhcGhpY3MgZHJpdmVyLgoKCSogZ3JhcGhpY3MveDExZHJ2L2NvZGVwYWdlLmMsIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLCBpbmNsdWRlL3gxMWZvbnQuaDoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglBZGRlZCBpbnRlcm5hbCBjaGFyc2V0cyBmb3Igc3VwcG9ydGluZyBEQkNTIGNoYXJzZXRzLgoKCSogb2JqZWN0cy9kYy5jOgoJRml4ZWQgR0RJIGxvY2tpbmcgaW4gR2V0RGV2aWNlQ2Fwcy4KCgkqIGRsbHMvc2hlbGwzMi9zeXN0cmF5LmM6CglLYWkgTW9yaWNoIDxtYWlsQGthaS1tb3JpY2guZGU+CglGaXhlZCBidWcgaW4gcmVwZWF0ZWRseSBpY29uaXNhdGlvbiwgY29kZSBjbGVhbnVwLgoKCSogZ3JhcGhpY3MveDExZHJ2L2luaXQuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJU2V0IFgxMURSVl9EZXZpY2VDYXBzLm51bUNvbG9ycyBhY2NvcmRpbmcgdG8gZG9jIChmaXhlcyBDdWJhc2UgVlNUMjQKCXN0YXJ0dXAgcHJvYmxlbSkuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmM6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCUltcGxlbWVudGVkIER1cGxpY2F0ZUljb24oKS4KCgkqIG1zZG9zL2ludDE1LmM6IENocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJU3R1YmJlZCBJTlQgMTUgZnVuY3Rpb24gODRoLgoKCSogaW5jbHVkZS93aW4uaCwgd2luZG93cy93aW4uYywgd2luZG93cy94MTFkcnYvZXZlbnQuYzoKCUxvdWlzIFBoaWxpcHBlIEdhZ25vbiA8bG91aXNwaGlsaXBwZUBtYWNhZGFtaWFuLmNvbT4KCS0gU2VwYXJhdGUgYXBwbGljYXRpb24gY2FsbHMgdG8gU2hvd093bmVkUG9wdXBzIGZyb20gV2luZSBjYWxscyAoaW4KCSAgRVZFTlRfTWFwTm90aWZ5KSBieSBpbnRyb2R1Y2luZyBhbiBpbnRlcm5hbCBmdW5jdGlvbi4KCS0gRml4IFNob3dPd25lZFBvcHVwcyBzbyBpdCBzZW5kcyBtZXNzYWdlcyB3aXRoIHRoZSBzYW1lIHBhcmFtZXRlcnMgYXMKCSAgaW4gV2luZG93cy4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJUmVtb3ZlZCBkaXJlY3QgY2FsbHMgdG8gVFJFRVZJRVdfUmVmcmVzaCgpLgoKCSogb2JqZWN0cy9lbmhtZXRhZmlsZS5jOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJSW1wbGVtZW50ZWQgcGxheWJhY2sgb2YgRU1SX1BPTFlCRVpJRVJ7VE99MTYsIEVNUl9QT0xZTElORTE2IGFuZAoJRU1SX1BPTFlQT0xZTElORS4KCgkqIGluY2x1ZGUvbWFpbi5oLCBtaXNjL21haW4uYywgb2xlL29sZTJubHMuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJQWRkZWQgbmV3IGxhbmd1YWdlIGRldGVjdGlvbiBzY2hlbWUgdGhhdCB1c2VzIE5MUyBkYXRhIGJhc2UgaW5zdGVhZCBvZgoJaGFyZCBjb2RlZCB2YWx1ZXMuCgoJKiBsb2FkZXIvcGVfcmVzb3VyY2UuYzoKCUR1c2FuIExhY2tvIDxkbGFja29AY29kZXdlYXZlcnMuY29tPgoJUGFzcyB0aGUgdHlwZS9uYW1lIGFzIGEgQyBzdHJpbmcgaW5zdGVhZCBvZiBhbgoJSU1BR0VfUkVTT1VSQ0VfRElSX1NUUklOR19VIHN0cnVjdHVyZSB0byB0aGUgY2FsbGJhY2sgZnVuY3Rpb24uCgoyMDAwLTA4LTE5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS9nbG9iYWwuaCwgaW5jbHVkZS9wYXRoLmgsIGluY2x1ZGUvd2luLmgsIGluY2x1ZGUvd2luMTZkcnYuaCwgaW5jbHVkZS93aW5lL3dpbmJhc2UxNi5oLCBpbmNsdWRlL3gxMWRydi5oLCBtZW1vcnkvbG9jYWwuYywgb2JqZWN0cy9iaXRtYXAuYywgb2JqZWN0cy9icnVzaC5jLCBvYmplY3RzL2NsaXBwaW5nLmMsIG9iamVjdHMvZGMuYywgb2JqZWN0cy9kY3ZhbHVlcy5jLCBvYmplY3RzL2RpYi5jLCBvYmplY3RzL2VuaG1ldGFmaWxlLmMsIG9iamVjdHMvZm9udC5jLCBvYmplY3RzL2dkaW9iai5jLCBvYmplY3RzL21ldGFmaWxlLmMsIG9iamVjdHMvcGFsZXR0ZS5jLCBvYmplY3RzL3Blbi5jLCBvYmplY3RzL3JlZ2lvbi5jLCBvYmplY3RzL3RleHQuYywgd2luZG93cy9jdXJzb3JpY29uLmMsIHdpbmRvd3MvZGNlLmMsIHdpbmRvd3Mvc2Nyb2xsLmMsIHdpbmRvd3MvdXNlci5jLCB3aW5kb3dzL3gxMWRydi93bmQuYywgZGxscy9kZHJhdy9kc3VyZmFjZS9kZ2EuYywgZGxscy9kZHJhdy9kc3VyZmFjZS94MTEuYywgZGxscy9nZGkvZ2RpX21haW4uYywgZGxscy9nZGkvcHJpbnRkcnYuYywgZGxscy9nZGkvd2luZy5jLCBkbGxzL29wZW5nbDMyL3dnbC5jLCBkbGxzL3R0eWRydi9iaXRtYXAuYywgZGxscy90dHlkcnYvZGMuYywgZGxscy90dHlkcnYvb2JqZWN0cy5jLCBkbGxzL3R0eWRydi93bmQuYywgZGxscy93aW5lcHMvYnJ1c2guYywgZGxscy93aW5lcHMvZm9udC5jLCBkbGxzL3dpbmVwcy9vYmplY3RzLmMsIGRsbHMvd2luZXBzL3BzZHJ2LmgsIGdyYXBoaWNzL2JpdGJsdC5jLCBncmFwaGljcy9lbmhtZXRhZmlsZWRydi9pbml0LmMsIGdyYXBoaWNzL2VuaG1ldGFmaWxlZHJ2L29iamVjdHMuYywgZ3JhcGhpY3MvZXNjYXBlLmMsIGdyYXBoaWNzL21hcHBpbmcuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvaW5pdC5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9vYmplY3RzLmMsIGdyYXBoaWNzL3BhaW50aW5nLmMsIGdyYXBoaWNzL3BhdGguYywgZ3JhcGhpY3Mvd2luMTZkcnYvZm9udC5jLCBncmFwaGljcy93aW4xNmRydi9vYmplY3RzLmMsIGdyYXBoaWNzL3gxMWRydi9iaXRtYXAuYywgZ3JhcGhpY3MveDExZHJ2L2JydXNoLmMsIGdyYXBoaWNzL3gxMWRydi9jbGlwcGluZy5jLCBncmFwaGljcy94MTFkcnYvZGliLmMsIGdyYXBoaWNzL3gxMWRydi9ncmFwaGljcy5jLCBncmFwaGljcy94MTFkcnYvaW5pdC5jLCBncmFwaGljcy94MTFkcnYvb2JqZWN0cy5jLCBncmFwaGljcy94MTFkcnYvb2VtYml0bWFwLmMsIGdyYXBoaWNzL3gxMWRydi9wYWxldHRlLmMsIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLCBpbmNsdWRlL2RjLmgsIGluY2x1ZGUvZ2RpLmg6CglBbGV4YW5kcmUgSnVsbGlhcmQgPGp1bGxpYXJkQGNvZGV3ZWF2ZXJzLmNvbT4gKGZvciBDb3JlbCkKCUFsYmVydCBkZW4gSGFhbiA8YWxiZXJ0ZEBjb3JlbC5jb20+CglBZGRlZCBzeXNsZXZlbCBsb2NraW5nIGZvciBHREkgb3BlcmF0aW9ucy4KCVByb3BhZ2F0ZSB0aGUgY2hhbmdlcyB0aHJvdWdoIHRoZSBncmFwaGljcyBjb2RlLgoKCSogbWlzYy9jZHJvbS5jOgoJRWQgU25vdyA8ZWRfc25vd0B0dG1lbmdpbmVlcmluZy5jb20+CglDb3JyZWN0ZWQgc2VyaWFsIG51bWJlciBnZW5lcmF0aW9uIGZvciBDRCdzIHdpdGggMSBvciAyIHRyYWNrcy4KCjIwMDAtMDgtMTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBtaXNjL2Nkcm9tLmMsIGZpbGVzL2Rvc19mcy5jOgoJU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtbGluZS5jb20+CglGaXhlZCByZXR1cm4gdmFsdWUgb2YgQ0RST01fR2V0TGFiZWwgaWYgQ0RST01fT3BlbiBmYWlsZWQgKGUuZy4gbm8KCURldmljZSBlbnRyeSBmb3IgZHJpdmUgaW4gd2luZS5jb25mKS4KCgkqIGluY2x1ZGUveDExZm9udC5oLCBncmFwaGljcy94MTFkcnYvY29kZXBhZ2UuYywgZ3JhcGhpY3MveDExZHJ2L3hmb250LmM6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJU2VwYXJhdGUgR2V0VGV4dE1ldHJpY3MgYW5kIGltcGxlbWVudCBpdCBmb3IgU0JDUy9Vbmljb2RlL2NwOTMyLgoKCSogZGxscy9jb21jdGwzMi9zdGF0dXMuYzoKCU1hcmN1cyBNZWlzc25lciA8TWFyY3VzLk1laXNzbmVyQGNhbGRlcmEuZGU+CglGaXhlZCBTVEFUVVNfR2V0VGV4dFcgaW4gcmVnYXJkIHRvIE5VTEwgcG9pbnRlcnMuCgoJKiBncmFwaGljcy93aW4xNmRydi9wcnRkcnYuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJQXBwZW5kIC5EUlYgdG8gbmFtZSBvbmx5IGlmIG5vIGV4dGVuc2lvbiBwcmVzZW50LgoKCSogZGVidWdnZXIvc3RhYnMuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJRG8gbm90IGNyYXNoIGlmIHBhdGggaXMgTlVMTCBpbiBERUJVR19Qcm9jZXNzRWxmRmlsZUZyb21QYXRoLgoKCSogZGxscy93aW5tbS93aW5lb3NzL21peGVyLmM6CglFZCBTbm93IDxlZF9zbm93QHR0bWVuZ2luZWVyaW5nLmNvbT4KCUNsZWFuIG91dCB0aGUgaGFjayBvbiBCQVNTL1RSRUJMRSBhbmQgc3VwcHJlc3MgdGhlbSBpbiB0aGUgbWFzayBhcyB3YXMKCXJlY29tbWVuZGVkIG9oIHNvIGxvbmcgYWdvLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCS0gQWRkZWQgYSBoZWxwZXIgZnVuY3Rpb24gVE9PTEJBUl9HZXRUZXh0KCkgYW5kIG1hY3JvIFRPT0xCQVJfSGFzVGV4dCgpIHRvCgkgIGRldGVybWluZSB3aGV0aGVyIHdlIG5lZWQgdG8gY2FsbCBJbnZhbGlkYXRlUmVjdCgpIHdpdGggYkVyYXNlIG9mIFRSVUUgb3IKCSAgRkFMU0UuICBSZWR1Y2VzIGJhY2tncm91bmQgZXJhc2VzIGluIG5vbi10ZXh0IHRvb2xiYXJzIGJ5IDgwLTg1JS4KCS0gRml4ZWQgYnV0dG9uIHN0YXRlIG5vdCBiZWluZyB1cGRhdGVkIHByb3Blcmx5IHdoZW4gTEJVVFRPTkRPV04gYW5kIGN1cnNvcgoJICBsZWF2ZXMgdGhlIHRvb2xiYXIuCgktIFJlbW92ZWQgRklYTUUoKSBpbiBUT09MQkFSX0RyYXdTdHJpbmcgZm9yIGJ0blB0ci0+aVN0cmluZyA9PSAtMSwgcmVwbGFjZWQKCSAgd2l0aCBhIHNvdXJjZSBjb2RlIGNvbW1lbnQuCgktIFJlbW92ZWQgdW5lY2Vzc2FyeSBjYWxsIHRvIFRPT0xCQVJfQ2FsY1Rvb2xiYXIoKSBpbgoJICBUT09MQkFSX0dldEl0ZW1SZWN0KCkuICBPcHRpbWl6ZWQgVE9PTEJBUl9DYWxjU3RyaW5ncygpLiBGaXhlcyB2ZXJ5CgkgIHNsb3cgcmVzcG9uZGluZyB0b29sYmFycyBpbiBVbHRyYWVkaXQgZHVlIHRvIHByb2Nlc3NpbmcgVEJfR0VUSVRFTVJFQ1QKCSAgbWVzc2FnZXMuCgktIE9wdGltaXplZCBUT09MQkFSX1NldEludGVudCgpLCBTZXRSb3dzKCkgYW5kIFNldFN0eWxlKCkuCgoJKiBzY2hlZHVsZXIvc3luY2hyby5jOgoJTWlrZSBNY0Nvcm1hY2sgIDxtaWtlX21jY29ybWFja0Bsb29rc21hcnQuY29tLmF1PgoJU2F2ZSBHRVRfQVBDUyBkYXRhIGJlZm9yZSBjYWxsaW5nIGFueSBhc3luY2hyb25vdXMgcHJvY2VkdXJlIGNhbGxzLCBpbgoJY2FzZSB0aGUgc2VydmVyIGlzIGNhbGxlZCBkdXJpbmcgdGhlIEFQQy4KCgkqIGRsbHMvY29tbWRsZy9maW5kZGxnLmMsIGluY2x1ZGUvZGlhbG9nLmgsIHdpbmRvd3MvZGlhbG9nLmM6CglHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCVR1cm5zIHRoZSBoYW5kbGluZyB0byBwdXJlIDE2IGJpdHMsIHJlbW92ZSByZWZlcmVuY2VzIHRvIGRpYWxvZy5oLgoKCSogZGxscy93aW5zcG9vbC9pbmZvLmM6CglBbGJlcnQgZGVuIEhhYW4gPGFsYmVydGRAY29yZWwuY29tPgoJUmVtb3ZlIHVudXNlZCBjcml0aWNhbCBzZWN0aW9uIGdsb2JhbCB2YXJpYWJsZSBQUklOVDMyX1JlZ2lzdHJ5QmxvY2tlci4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnLmM6CglHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCUF2b2lkcyBjaGFuZ2luZyAyIGxldmVscyB3aGVuIGNsaWNraW5nIC4uIGluIHRoZSBkaXJlY3RvcnkgbGlzdC4KCgkqIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIHdpbjMyL2NvbnNvbGUuYzoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJU3R1YmJlZCBTZXRDb25zb2xlSW5wdXRFeGVOYW1lQS9XLgoKCSogZGxscy9jb21jdGwzMi9zdGF0dXMuYzoKCUdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJV01fR0VURk9OVCBzaG91bGQgcmV0dXJuIGEgcmVhbCBmb250IGhhbmRsZSBpbnN0ZWFkIG9mIE5VTEwuCgoyMDAwLTA4LTE2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbG9hZGVyL3BlX2ltYWdlLmM6CglOaWNsYXMgS2FybHNzb24gTUFURSA8bmthcmxzc29AcmEuYWJvLmZpPgoJV0FUQ09NIGNvbXBpbGVkIHByb2dyYW1zIGxlYXZlIFZpcnR1YWxTaXplIHRvIHplcm8gd2hpY2ggdHJpZ2dlcnMgdGhlCgl2aXJ1cyBjaGVjay4gVXNlIFNpemVPZlJhd0RhdGEgaW5zdGVhZC4KCgkqIGRsbHMvY29tY3RsMzIvYW5pbWF0ZS5jOgoJTmljbGFzIEthcmxzc29uIE1BVEUgPG5rYXJsc3NvQHJhLmFiby5maT4KCUltcGxlbWVudGVkIEFDU19DRU5URVIgZm9yIGFuaW1hdGlvbiBjb250cm9scy4KCgkqIGxvYWRlci9wZV9pbWFnZS5jOgoJQXZvaWQgZ29pbmcgcGFzdCB0aGUgZW5kIG9mIHRoZSByZWxvY2F0aW9uIHNlY3Rpb24uIFNraXAgc2FuaXR5IGNoZWNrcwoJZm9yIGVtcHR5IHJlbG9jYXRpb24gYmxvY2tzLgoKCSogZGxscy9jb21jdGwzMi9hbmltYXRlLmM6CglGcmFuY29pcyBNZXRob3QgPGZyYW5jb2lzbUBtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGVkIGJhY2tncm91bmQgdHJhbnNwYXJlbmN5IG9uIGFuaW1hdGlvbiBjb250cm9sIGZvciBhdmkKCWNvbXBvc2VkIG9mIDggYnBwKG9yIGxlc3MpIGltYWdlLiBJIGFkZGVkIHN1cHBvcnQgZm9yIDggYnBwIG9yIG1vcmUsCglidXQgaXQgaGFzIG5vdCBiZWVuIHRlc3RlZC4KCgkqIGRsbHMvb2xlMzIvb2xlMi5jOgoJTG91aXMgUGhpbGlwcGUgR2Fnbm9uIDxsb3Vpc3BoaWxpcHBlQG1hY2FkYW1pYW4uY29tPgoJV2hpbGUgZHJhZ2dpbmcsIGNhdGNoIGtleWJvYXJkIG1lc3NhZ2VzIGJldHdlZW4gV01fS0VZRklSU1QgYW5kCglXTV9LRVlMQVNULCBub3QganVzdCBXTV9LRVlGSVJTVC4KCgkqIGRsbHMva2VybmVsL3dvd3RodW5rLmM6CglQZXRlciBHYW50ZW4gPHBldGVyQGdhbnRlbi5vcmc+CglJZiBhIG1vZHVsZSBjYW5ub3QgYmUgZm91bmQgaW4gTG9hZExpYnJhcnlFeDMyVzE2LCBjYWxsIExvYWRMaWJyYXJ5RXgKCWFueXdheSwgc2luY2UgaXQgbWlnaHQgYmUgYSBidWlsdGluIG1vZHVsZS4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJTWlzc2VkIHRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgZXZlcnkgYXJndW1lbnQgaW4gQ29tbWFuZExpbmVUb0FyZ3YuCgoJKiBkbGxzL3dpbnNwb29sL2luZm8uYzoKCUdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJQWRkIGFuIGVycm9yIG1lc3NhZ2UgaWYgZGV2bW9kZSBzdHJ1Y3R1cmUgaW4gcmVnaXN0cnkgaXMgaW52YWxpZDsKCWF0dGVtcHQgdG8gcHJvdmlkZSBwbGF1c2libGUgdmFsdWVzLgoKMjAwMC0wOC0xNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGdyYXBoaWNzL3gxMWRydi9jb2RlcGFnZS5jLCBncmFwaGljcy94MTFkcnYveGZvbnQuYywgaW5jbHVkZS90c194bGliLmgsIGluY2x1ZGUveDExZm9udC5oLCB0c3gxMS9YMTFfY2FsbHMsIHRzeDExL3RzX3hsaWIuYzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglGaXhlZCBmb3IgREJDUyhjcDkzMi9jcDk0OSkgY29kZXBhZ2UgY29udmVyc2lvbi4KCUltcGxlbWVudGVkIGNwOTMyIGhhbmRsaW5nIHBhcnRseShidXQgc3RpbGwgaW5jb21wbGV0ZSkuCglBZGRlZCBzdXBwb3J0aW5nIG11bHRpcGxlIGZvbnRzIGZvciBEQkNTIGhhbmRsaW5nLgoKCSogZGVidWdnZXIvZGVidWdnZXIuaCwgZGVidWdnZXIvc3RhYnMuYywgZG9jdW1lbnRhdGlvbi9kZWJ1Z2dlci5zZ21sOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglFbmhhbmNlZCBFTEYgZmlsZXMgbG9va3VwIGZvciBzeW1ib2xpYyBpbmZvLgoKCSogZGVidWdnZXIvYnJlYWsuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgcmVncmVzc2lvbiBpbiBicmVhayBjb21tYW5kLgoKMjAwMC0wOC0xNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnLmM6CglHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCUZpeCByZXR1cm4gdmFsdWUgdG8gMTYgYml0cyBmb3IgMTYgYml0IGhvb2s7IHJlbW92ZSBsZWFkaW5nIHNwYWNlIGZvcgoJZmlsZSBzcGVjaWZpY2F0aW9uLgoKCSogd2luZG93cy9tZXNzYWdlLmM6CglQZXRlciBHYW50ZW4gPHBldGVyQGdhbnRlbi5vcmc+CglUaHJlYWRzIHdpdGhvdXQgYWN0aXZlIG9yIGZvY3VzIHdpbmRvdyBzaG91bGQgbm90IHJlY2VpdmUga2V5Ym9hcmQKCW1lc3NhZ2VzLgoKCSogc2VydmVyL21hcHBpbmcuYywgc2VydmVyL3RyYWNlLmMsIGluY2x1ZGUvc2VydmVyLmgsIGxvYWRlci9wZV9pbWFnZS5jLCBtZW1vcnkvdmlydHVhbC5jOgoJSW1wbGVtZW50ZWQgU0VDX0lNQUdFIG1hcHBpbmdzIGFuZCBzaGFyZWQgUEUgc2VjdGlvbnMgKHdpdGggdGhlIGhlbHAKCW9mIFBldGVyIEdhbnRlbikuCgoJKiBpbmNsdWRlL250ZGRrLmgsIGxvYWRlci9uZS9tb2R1bGUuYywgbWlzYy9sc3RyLmMsIG1pc2MvbWFpbi5jLCBtc2Rvcy9pbnQyMS5jLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmMsIGRsbHMvdXNlci9sc3RyLmMsIGRsbHMvd2luaW5ldC9NYWtlZmlsZS5pbiwgZGxscy93aW5pbmV0L3dpbmluZXQuc3BlYywgZmlsZXMvZG9zX2ZzLmMsIGZpbGVzL3Byb2ZpbGUuYzoKCU1vdmVkIENoYXJVcHBlciogYW5kIENoYXJMb3dlciogZnVuY3Rpb25zIHRvIGRsbHMvdXNlci4KCgkqIGdyYXBoaWNzL3gxMWRydi9NYWtlZmlsZS5pbiwgZ3JhcGhpY3MveDExZHJ2L2NvZGVwYWdlLmMsIGdyYXBoaWNzL3gxMWRydi90ZXh0LmMsIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLCBpbmNsdWRlL3gxMWZvbnQuaDoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglBZGRlZCBzdXBwb3J0IGZvciBzcGVjaWFsIHRyZWF0bWVudHMgKHVzZSAyIG9yIG1vcmUgZm9udHMsIGNvZGVwYWdlCgljb252ZXJzaW9uLCBldGMuLi4pIGZvciBEQkNTIHRleHQuCgoJKiB3aW5kb3dzL25vbmNsaWVudC5jLCB3aW5kb3dzL3N5c3BhcmFtcy5jLCB3aW5lZGVmYXVsdC5yZWc6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCUFkZCAiRnVsbFdpbmRvd0RyYWciIGZlYXR1cmUgZm9yIG5vdCBtYW5hZ2VkIHdpbmRvd3MuCgoJKiBjb250cm9scy9jb21iby5jOgoJU3VzYW4gRmFybGV5IDxzZmFybGV5QGNvZGV3ZWF2ZXJzLmNvbT4KCVVwZGF0ZSB0aGUgZWRpdCBib3ggYmVmb3JlIHJvbGxpbmcgdXAgdGhlIGxpc3Rib3gsIHNvIHRoZQoJc2VsZWN0aW9uIGlzbid0IGxvc3QuCgoJKiBsaWJ0ZXN0L01ha2VmaWxlLmluOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBtaXNzaW5nIHJlZmVyZW5jZWQgZGxscyBmb3IgbGlidGVzdC4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCU5pY2xhcyBLYXJsc3NvbiBNQVRFIDxua2FybHNzb0ByYS5hYm8uZmk+CglMUFNUUl9URVhUQ0FMTEJBQ0sgd291bGRuJ3Qgd29yayBpZiB0aGUgYXBwbGljYXRpb24gc3VwcGxpZWQgdGhlIGl0ZW0KCXRleHQgaW4gaXRzIG93biBidWZmZXIuCgoJKiB3aW4zMi9NYWtlZmlsZS5pbiwgd2luMzIvZXJyb3IuYywgd2luMzIvZmlsZS5jLCBkbGxzL2NvbW1kbGcvY29tZGxnMzIuc3BlYywgZGxscy9jcnRkbGwvY3J0ZGxsX21haW4uYywgZGxscy9jcnRkbGwvd2NzdHJpbmcuYywgZGxscy9pbW0zMi9NYWtlZmlsZS5pbiwgZGxscy9pbW0zMi9pbW0zMi5zcGVjLCBkbGxzL2tlcm5lbC93b3d0aHVuay5jLCBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vcGVuZ2wzMi9NYWtlZmlsZS5pbiwgZGxscy9vcGVuZ2wzMi9vcGVuZ2wzMi5zcGVjLCBkbGxzL3NldHVwYXBpL01ha2VmaWxlLmluLCBkbGxzL3NldHVwYXBpL3NldHVwYXBpLnNwZWMsIGRsbHMvc2hsd2FwaS9NYWtlZmlsZS5pbiwgZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYywgZGxscy9zaGx3YXBpL3N0cmluZy5jLCBmaWxlcy9kb3NfZnMuYywgZmlsZXMvZmlsZS5jLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2FkdmFwaTMyL2FkdmFwaS5jLCBkbGxzL2F2aWZpbDMyL2F2aWZpbGUuYzoKCUNsZWFuZWQgdXAgYSBmZXcgaW50ZXItZGxsIGRlcGVuZGVuY2llcy4gQWRkZWQgYSBmZXcgaW1wb3J0cy4KCgkqIG9sZS9vbGUybmxzLmMsIHdpbmRvd3MvY2xhc3MuYywgd2luZG93cy9kZWZ3bmQuYywgd2luZG93cy9kaWFsb2cuYywgd2luZG93cy9tZGkuYywgd2luZG93cy9tdWx0aW1vbi5jLCB3aW5kb3dzL3BhaW50aW5nLmMsIHdpbmRvd3Mvc3B5LmMsIGRsbHMvdmVyc2lvbi9pbmZvLmMsIGRsbHMvd2luc3Bvb2wvaW5mby5jLCBncmFwaGljcy9lc2NhcGUuYywgZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsIGluY2x1ZGUvc2hsd2FwaS5oLCBpbmNsdWRlL3dpbmUvdW5kb2NzaGVsbC5oLCBpbmNsdWRlL3dpbmUvdW5pY29kZS5oLCBsb2FkZXIvbmUvY29udmVydC5jLCBtZW1vcnkvYXRvbS5jLCBtZW1vcnkvaGVhcC5jLCBtZW1vcnkvcmVnaXN0cnkuYywgb2JqZWN0cy9wYWxldHRlLmMsIGRsbHMvbXNhY20vaW50ZXJuYWwuYywgZGxscy9tc3ZpZGVvL21zdmlkZW9fbWFpbi5jLCBkbGxzL250ZGxsL3djc3RyaW5nLmMsIGRsbHMvb2xlMzIvYW50aW1vbmlrZXIuYywgZGxscy9vbGUzMi9iaW5kY3R4LmMsIGRsbHMvb2xlMzIvY29tcG9zaXRlbW9uaWtlci5jLCBkbGxzL29sZTMyL2RlZmF1bHRoYW5kbGVyLmMsIGRsbHMvb2xlMzIvZmlsZW1vbmlrZXIuYywgZGxscy9vbGUzMi9pdGVtbW9uaWtlci5jLCBkbGxzL29sZTMyL3N0b3JhZ2UuYywgZGxscy9vbGUzMi9zdG9yYWdlMzIuYywgZGxscy9vbGVhdXQzMi9vbGVmb250LmMsIGRsbHMvc2hlbGwzMi9jbGlwYm9hcmQuYywgZGxscy9zaGVsbDMyL3NoZWxsLmMsIGRsbHMvc2hlbGwzMi9zaHBvbGljeS5jLCBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLCBkbGxzL3NobHdhcGkvcGF0aC5jLCBkbGxzL2FkdmFwaTMyL3JlZ2lzdHJ5LmMsIGRsbHMvYWR2YXBpMzIvc2VydmljZS5jLCBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYywgZGxscy9jb21jdGwzMi9oZWFkZXIuYywgZGxscy9jb21jdGwzMi9tb250aGNhbC5jLCBkbGxzL2NvbWN0bDMyL3JlYmFyLmMsIGRsbHMvY29tY3RsMzIvc3RhdHVzLmMsIGRsbHMvY29tY3RsMzIvdGFiLmMsIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jLCBkbGxzL2NvbWN0bDMyL3Rvb2x0aXBzLmMsIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYywgZGxscy9jb21tZGxnL2ZpbGVkbGcuYywgZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jLCBkbGxzL2NvbW1kbGcvZmluZGRsZzMyLmMsIGRsbHMvY29tbWRsZy9mb250ZGxnLmMsIGRsbHMvZHBsYXl4L2RwbGF5eF9nbG9iYWwuYywgZGxscy9rZXJuZWwvZm9ybWF0X21zZy5jLCBjb250cm9scy9pY29udGl0bGUuYywgY29udHJvbHMvbGlzdGJveC5jOgoJUmVwbGFjZWQgYWxsIGxzdHIqIGNhbGxzIGZyb20gaW5zaWRlIFdpbmUgY29kZSBieSB0aGVpciBzdHIqIGVxdWl2YWxlbnQuCgoJKiBtc2Rvcy9kcG1pLmM6CglSZXBsYWNlZCBnbG9iYWwgQ2FsbGJhY2tzIHN0cnVjdHVyZSBieSBhcHByb3ByaWF0ZSBnbHVlIGNvZGUKCWdlbmVyYXRpb24uIFJlbW92ZWQgYSBmZXcgdW51c2VkIGVudHJpZXMgaW4gdGhlIENhbGxvdXQgc3RydWN0dXJlLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsIGRsbHMvc2hlbGwzMi9zaGVsbG9sZS5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jLCBkbGxzL3NoZWxsMzIvc2hlbGxyZWcuYywgZGxscy9zaGVsbDMyL3NoZWxsc3RyaW5nLmMsIGRsbHMvc2hlbGwzMi9zaGxmaWxlb3AuYywgZGxscy9zaGVsbDMyL3NobG1lbnUuYywgaW5jbHVkZS93aW52ZXJzaW9uLmgsIG1pc2MvdmVyc2lvbi5jLCB3aW4zMi9kZXZpY2UuYywgd2luZG93cy93aW5oZWxwLmMsIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYywgZGxscy9pbW0zMi9pbW0uYywgZGxscy9tc2FjbS9tc2FjbTMyX21haW4uYywgZGxscy9vbGVhdXQzMi9vbGVhdXQuYywgZGxscy9vbGVhdXQzMi90eXBlbGliLmMsIGRsbHMvc2hlbGwzMi9jaGFuZ2Vub3RpZnkuYywgZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jLCBkbGxzL3NoZWxsMzIvcGlkbC5jOgoJUmVwbGFjZWQgVkVSU0lPTl8qIGNhbGxzIGJ5IGV4cG9ydGVkIEFQSSBlcXVpdmFsZW50cy4KCgkqIGluY2x1ZGUvY2FsbGJhY2suaCwgbG9hZGVyL25lLy5jdnNpZ25vcmUsIGxvYWRlci9uZS9NYWtlZmlsZS5pbiwgbG9hZGVyL25lL21vZHVsZS5jLCBsb2FkZXIvbmUvcmVzb3VyY2UuYywgbG9hZGVyL25lL3NlZ21lbnQuYywgbWVtb3J5Ly5jdnNpZ25vcmUsIG1lbW9yeS9NYWtlZmlsZS5pbiwgbWVtb3J5L2xvY2FsLmMsIG1pc2MvY29tbS5jLCB0b29scy93aW5lYnVpbGQvc3BlYzE2LmMsIGNvbnRyb2xzLy5jdnNpZ25vcmUsIGNvbnRyb2xzL01ha2VmaWxlLmluLCBjb250cm9scy9lZGl0LmMsIGRsbHMva2VybmVsLy5jdnNpZ25vcmUsIGRsbHMva2VybmVsL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC90aHVuay5jLCBkbGxzL2tlcm5lbC91dHRodW5rLmMsIGRsbHMvd2luYXNwaS8uY3ZzaWdub3JlLCBkbGxzL3dpbmFzcGkvTWFrZWZpbGUuaW4sIGRsbHMvd2luYXNwaS93aW5hc3BpMTYuYywgZGxscy93aW5hc3BpL3dpbmFzcGkzMi5jLCBkbGxzL3dpbm1tL21tc3lzdGVtLmMsIGlmMTYzMi90aHVuay5jLCBpbmNsdWRlL2J1aWx0aW4xNi5oOgoJUmVwbGFjZWQgZ2xvYmFsIENhbGxiYWNrcyBzdHJ1Y3R1cmUgYnkgYXBwcm9wcmlhdGUgZ2x1ZSBjb2RlCglnZW5lcmF0aW9uLiBSZW1vdmVkIGEgZmV3IHVudXNlZCBlbnRyaWVzIGluIHRoZSBDYWxsb3V0IHN0cnVjdHVyZS4KCgkqIHdpbmVkZWZhdWx0LnJlZzoKCUdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJQWRkZWQgbG9hZCBhZGRyZXNzIGZvciB0aGUgc2hhcmVkIG1lbW9yeSBvZiBCREUgKEJvcmxhbmQgZGF0YWJhc2UKCW1hbmFnZXIpLgoKCSogc2NoZWR1bGVyL2NsaWVudC5jOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJRml4IGZvciBzdGFydGluZyBzZXJ2ZXIgZnJvbSB0aGUgY3VycmVudCBkaXJlY3RvcnkuCgoJKiBncmFwaGljcy94MTFkcnYveGZvbnQuYzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglBZGRlZCBjaGVja2luZyBmb3IgYnJva2VuIGZvbnQgY2FjaGUuCglBZGRlZCBzdXBwb3J0aW5nIGZvciBpc28xMDY0NiBlbmNvZGluZy4KCjIwMDAtMDgtMTEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzY2hlZHVsZXIvY2xpZW50LmMsIHNlcnZlci9yZXF1ZXN0LmM6CglNYWRlIHNlcnZlciBzdGFydHVwIG1vcmUgcm9idXN0IGFnYWluc3QgcmFjZXMgY2F1c2VkIGJ5IGEgcHJldmlvdXMKCXNlcnZlciB0ZXJtaW5hdGluZyBhdCB0aGUgc2FtZSB0aW1lLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW4sIHRvb2xzL2MybWFuLnBsOgoJTWlrZV9NY0Nvcm1hY2tAbG9va3NtYXJ0LmNvbS5hdQoJQ3JlYXRlZCBkZWZhdWx0IGMybWFuIGNvbXBhdGlibGUgcGVybCBzY3JpcHQgZm9yIGdlbmVyYXRpbmcKCWRvY3VtZW50YXRpb24sIGluIGNhc2UgYzJtYW4gaXNuJ3QgaW5zdGFsbGVkLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVkIHNlbmRpbmcgb2YgTFZOX0lURU1DSEFOR0lORyBhbmQgTFZOX0lURU1DSEFOR0VEIG1lc3NhZ2VzLAoJY2xlYW5lZCB1cCBzb21lIG9mIHRoZSBkcmF3aW5nLCBpbXBsZW1lbnRlZCB0aGUgaUluZGVudCBmb3IgTFZTX1JFUE9SVAoJYW5kIGZpeGVkIGEgcHJvYmxlbSB3aGVyZSBzdWIgaXRlbXMgd2hlcmUgbm90IGJlaW5nIHByb3Blcmx5Cglhc3NvY2lhdGVkIHdpdGggdGhlaXIgaXRlbSBmb3IgdmlydHVhbCBsaXN0IHZpZXdzLgoKCSogbWVtb3J5L2NvZGVwYWdlLmMsIG1pc2MvbHN0ci5jLCBvbGUvb2xlMm5scy5jLCB1bmljb2RlL01ha2VmaWxlLmluLCB1bmljb2RlL2NwbWFwLnBsLCB1bmljb2RlL3djdHlwZS5jLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy9jcnRkbGwvbWJzdHJpbmcuYywgZGxscy9jcnRkbGwvd2NzdHJpbmcuYywgZGxscy9udGRsbC93Y3N0cmluZy5jLCBkbGxzL3VzZXIvbHN0ci5jLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW5lL3VuaWNvZGUuaDoKCUFkZGVkIFVuaWNvZGUgY3R5cGUgc3VwcG9ydC4KCgkqIGRsbHMvY29tY3RsMzIvdXBkb3duLmMsIGluY2x1ZGUvY29tbWN0cmwuaDoKCU1vdmVkIE5NX1VQRE9XTiBkZWZpbml0aW9uIHRvIGNvbW1jdHJsLmguCgoJKiByZWxheTMyL3JlbGF5Mzg2LmM6CglQZXRlciBHYW50ZW4gPHBldGVyQGdhbnRlbi5vcmc+CglUaGUgdXNlciBkcml2ZXIgZnVuY3Rpb25zIG1pZ2h0IGJlIGNhbGxlZCB3aXRoIHRoZSB3aW5kb3cgbG9jayBoZWxkLgoKCSogaW5jbHVkZS9tb2R1bGUuaCwgbG9hZGVyL3BlX3Jlc291cmNlLmMsIGxvYWRlci9yZXNvdXJjZS5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglNYWtlIEZpbmRSZXNvdXJjZSBhbmQgRmluZFJlc291cmNlRXggZnVsbHkgd2luZG93cyBjb21wYXRpYmxlLgoKCSogaW5jbHVkZS90Y2hhci5oOgoJRGFteWFuIE9nbnlhbm9mZiA8RGFteWFuQHJvY2tldG1haWwuY29tPgoJUmVtb3ZlIHNvbWUgb2Jzb2xldGUgI2RlZmluZSdzIC0gc3RybHdyIGFuZCBzdHJ1cHIgYXJlIGluIE5URExMIG5vdy4KCgkqIGluY2x1ZGUvd2luZS91bmljb2RlLmgsIG1lbW9yeS9jb2RlcGFnZS5jLCB1bmljb2RlL01ha2VmaWxlLmluLCB1bmljb2RlL3V0ZjguYzoKCUFkZGVkIFVURi04IGNvbnZlcnNpb24gc3VwcG9ydC4KCgkqIHdpbmRvd3MveDExZHJ2L3duZC5jOgoJU3RlcGhhbmUgTHVzc2llciA8c3RlcGhhbmVAbWFjYWRhbWlhbi5jb20+CglJbnN0ZWFkIG9mIG5vdCBkb2luZyB0aGUgWiBvcmRlcmluZyB3aGVuIHRoZSBhcHBsaWNhdGlvbiBhc2tzIHRvIHBsYWNlCgl0aGUgd2luZG93IHVuZGVyIGEgemVyby1zaXplZCB3aW5kb3csIG5vdyB0aGUgd2luZG93IGFib3ZlIHRoZQoJemVyby1zaXplZCB3aW5kb3csIGlzIHVzZWQgdG8gZG8gdGhlIFogb3JkZXJpbmcuCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCUluaXRpYWxpemUgbHBzdHJJbml0aWFsRGlyIHRvIHJlYWxseSBib2d1cyB2YWx1ZSB0byByZXN0b3JlIG9yaWdpbmFsCgl2YWx1ZSBsYXRlci4KCgkqIGluY2x1ZGUvd2luZGVmLmg6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUFkZGVkIGEgZmV3IG1vcmUgYW5vbnltb3VzIHVuaW9uIGRlZmluaXRpb25zLgoKCSogaW5jbHVkZS9ndWlkZGVmLmg6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUZpeGVkIEMrKyBvcGVyYXRvcnMgcmV0dXJuIHZhbHVlLgoKCSogZGxscy9jcnRkbGwvY3J0ZGxsX21haW4uYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJSW1wbGVtZW50ZWQgZm9wZW4oKSBhcHBlbmQgbW9kZSwgYW5kIGEgcmVhbGx5IGNoZWVzeSBmc2NhbmYoKQoJaW1wbGVtZW50YXRpb24uLi4KCgkqIGRsbHMvc2hlbGwzMi9zaGxmaWxlb3AuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJMS4gTWFrZSBidWZmZXIgZm9yIG1lc3NhZ2UgbGFyZ2UgZW5vdWdoIHRvIGhvbGQgdmVyeSBsb25nIGZpbGUgbmFtZXMuCgkyLiBQYXNzIEZPUk1BVF9NRVNTQUdFX0FSR1VNRU5UX0FSUkFZIGZvciBGb3JtYXRNZXNzYWdlQSB0byBub3QgYXNzdW1lCgkgICBpbXBsZW1lbnRhdGlvbiBzcGVjaWZpYyBiZWhhdmlvdXIuCgkzLiBTaG93IGFjdHVhbCBtZXNzYWdlIHRvIHVzZXIsIG5vdCBub24tZm9ybWF0dGVkIG9uZS4KCjIwMDAtMDgtMTAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCB3aW5kb3dzL3gxMWRydi9pbml0LmMsIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmMsIHdpbmRvd3MveDExZHJ2L21vdXNlLmMsIHdpbmRvd3MveDExZHJ2L3duZC5jLCBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jLCBpbmNsdWRlL2NsaXBib2FyZC5oLCBpbmNsdWRlL3R0eWRydi5oLCBpbmNsdWRlL3VzZXIuaCwgaW5jbHVkZS94MTFkcnYuaCwgbWlzYy9tYWluLmMsIHdpbmRvd3MvY2xpcGJvYXJkLmMsIHdpbmRvd3MvY3Vyc29yaWNvbi5jLCB3aW5kb3dzL2RjZS5jLCB3aW5kb3dzL2V2ZW50LmMsIHdpbmRvd3Mva2V5Ym9hcmQuYywgd2luZG93cy9zeXNwYXJhbXMuYywgd2luZG93cy93aW4uYywgd2luZG93cy94MTFkcnYvTWFrZWZpbGUuaW4sIHdpbmRvd3MveDExZHJ2L2NsaXBib2FyZC5jLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgY29udHJvbHMvZGVza3RvcC5jLCBkbGxzL2RpbnB1dC9kaW5wdXRfbWFpbi5jLCBkbGxzL3R0eWRydi9NYWtlZmlsZS5pbiwgZGxscy90dHlkcnYvYml0bWFwLmMsIGRsbHMvdHR5ZHJ2L2RjLmMsIGRsbHMvdHR5ZHJ2L2dyYXBoaWNzLmMsIGRsbHMvdHR5ZHJ2L29iamVjdHMuYywgZGxscy90dHlkcnYvcGFsZXR0ZS5jLCBkbGxzL3R0eWRydi90dHlkcnYuaCwgZGxscy90dHlkcnYvdHR5ZHJ2LnNwZWMsIGRsbHMvdHR5ZHJ2L3R0eWRydl9tYWluLmMsIGRsbHMvdHR5ZHJ2L3VzZXIuYywgZGxscy90dHlkcnYvd25kLmMsIGRsbHMvdXNlci9kaXNwbGF5LmMsIGRsbHMvdXNlci9tb3VzZS5jLCBkbGxzL3VzZXIvdXNlcl9tYWluLmMsIGRsbHMveDExZHJ2L3gxMWRydi5zcGVjOgoJTWVyZ2VkIGNsaXBib2FyZCBkcml2ZXIgaW50byBVU0VSIGRyaXZlci4KCU1vdmVkIGFsbCB0dHlkcnYgc291cmNlIGZpbGVzIHRvIGRsbHMvdHR5ZHJ2LgoJTG9hZCBmdW5jdGlvbnMgcG9pbnRlciBmb3IgdGhlIFVTRVIgZHJpdmVyIGZyb20gdGhlIGdyYXBoaWNzIGRyaXZlcgoJZGxsIHdpdGggR2V0UHJvY0FkZHJlc3MuCgoyMDAwLTA4LTA5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogb2JqZWN0cy9iaXRtYXAuYywgcHJvZ3JhbXMvbm90ZXBhZC9zZWFyY2guYywgc2NoZWR1bGVyL3N5bmNocm8uYywgd2luZG93cy9jYXJldC5jLCB3aW5kb3dzL2N1cnNvcmljb24uYywgd2luZG93cy9xdWV1ZS5jLCB3aW5kb3dzL3gxMWRydi93bmQuYywgZGxscy93aW5zb2NrL2FzeW5jLmMsIGRsbHMvd2luc29jay9zb2NrZXQuYywgZmlsZXMvY2hhbmdlLmMsIGZpbGVzL2Rvc19mcy5jLCBncmFwaGljcy9wYWludGluZy5jLCBpbmNsdWRlL21zYWNtZHJ2LmgsIGluY2x1ZGUvbnRkZGsuaCwgaW5jbHVkZS9vbGUuaCwgaW5jbHVkZS93aW5lL29ial9iYXNlLmgsIG1pc2MvY29tbS5jLCBtaXNjL21haW4uYywgbXNkb3MvaW50MDkuYywgZGxscy9kZHJhdy9kaXJlY3QzZC9tYWluLmMsIGRsbHMvZGRyYXcvZGlyZWN0M2QvbWVzYS5jLCBkbGxzL2RpbnB1dC9kaW5wdXRfbWFpbi5jLCBkbGxzL21zYWNtL21zYWNtZHJ2LmgsIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL3N0b3JhZ2UuYywgZGxscy9zZXJpYWx1aS9jb25mZGxnLmMsIGRsbHMvc2hlbGwzMi9icnNmb2xkZXIuYywgZGxscy91c2VyL2RkZW1sLmMsIGRsbHMvd2luaW5ldC9odHRwLmMsIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jLCBjb250cm9scy9pY29udGl0bGUuYywgY29udHJvbHMvd2lkZ2V0cy5jLCBkbGxzL2NvbWN0bDMyL3RhYi5jLCBkbGxzL2NydGRsbC9jcnRkbGxfbWFpbi5jLCBkbGxzL2RkcmF3L2RkcmF3L2RnYS5jLCBkbGxzL2RkcmF3L2RkcmF3L21haW4uYywgZGxscy9kZHJhdy9kZHJhdy94MTEuYywgZGxscy9kZHJhdy9kZ2EuYywgZGxscy9kZHJhdy9kZ2EyLmMsIGRsbHMvZGRyYXcvaGVscGVyLmMsIGRsbHMvZGRyYXcvbWFpbi5jOgoJUmVtb3ZlZCBzb21lIHVubmVjZXNzYXJ5ICNpbmNsdWRlcyBhbmQgZGxsIGRlcGVuZGVuY2llcy4KCgkqIG1lbW9yeS9lbnZpcm9uLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci90aHJlYWQuYywgd2luMzIvaW5pdC5jLCBpbmNsdWRlL3Byb2Nlc3MuaCwgbG9hZGVyL3BlX2ltYWdlLmMsIGxvYWRlci90YXNrLmM6CglNYWtlIFBEQiwgRU5WREIgYW5kIFNUQVJUVVBJTkZPIGdsb2JhbCB2YXJpYWJsZXMuCglBZGRlZCAnbW9kdWxlJyBmaWVsZCBpbiBQREIsIGFuZCByZW1vdmVkIFdpbmUtc3BlY2lmaWMgZmllbGRzLgoKCSogbWlzYy92ZXJzaW9uLmMsIHNjaGVkdWxlci9zZXJ2aWNlcy5jOgoJUmVtb3ZlZCB3aW52ZXIgYW5kIHNlcnZpY2VfdGFibGUgZnJvbSB0aGUgUERCIGFuZCBtYWRlIHRoZW0gc3RhdGljCgl2YXJpYWJsZXMuCgoJKiBpbmNsdWRlL2ZpbGUuaCwgbG9hZGVyL2Rvcy9kb3N2bS5jLCBmaWxlcy9maWxlLmM6CglSZW1vdmVkIHRoZSBET1MgaGFuZGxlcyB0YWJsZSBmcm9tIHRoZSBQREIgYW5kIG1hZGUgaXQgYSBzdGF0aWMKCXZhcmlhYmxlLgoKCSogZGxscy9rZXJuZWwva2VybmVsX21haW4uYywgaWYxNjMyL2J1aWx0aW4uYywgaW5jbHVkZS9nbG9iYWwuaCwgbWVtb3J5L2dsb2JhbC5jLCBtc2Rvcy9kb3NtZW0uYywgb2JqZWN0cy9tZXRhZmlsZS5jOgoJUmVtb3ZlZCBvYnNvbGV0ZSBTSE1EQVRBIHBhcmFtZXRlciBpbiBHTE9CQUxfQ3JlYXRlQmxvY2suCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYzoKCUZyYW5jb2lzIEphY3F1ZXMgPGZyYW5jb2lzakBtYWNhZGFtaWFuLmNvbT4KCS0gQXZvaWQgbnVsbC1wb2ludGVyIGV4Y2VwdGlvbnMgYnkgdGVzdGluZyBsaXN0bm9kZXMgdmFsaWRpdHkgYmVmb3JlIGRvaW5nCgkgIGFueSB3b3JrIHdpdGggdGhvc2UuCgktIFRMQl9SZWFkVHlwZUxpYiBub3cgcmV0cmlldmVzIHRoZSBsZW5ndGggb2YgdGhlIFRMQiBhbmQgcGFzc2VzIGl0IHRvCgkgIHRoZSBUTEIgY29uc3RydWN0b3Igd2hpY2ggaW5pdGlhbGl6ZXMgVExCQ29udGV4dDo6bGVuZ3RoIHRvIHRoYXQKCSAgdmFsdWUuCgktIEZvciBub24tc3RhbmRhcmQgcG9pbnRlZCB0eXBlcywgdGRbM10gaXMgYWx3YXlzIDAuIEkgb2JzZXJ2ZWQgdGhhdAoJICB0aGUgdHlwZSBpcyBzdG9yZWQgYXQgdGRbMl0vOCBhbmQgbm90IHRkWzNdLzguCgktIE51bGwtcG9pbnRlciBleGNlcHRpb24gb2NjdXJzIHdoZW4gR2V0UmVmVHlwZU9mSW1wbFR5cGUgaXMgY2FsbGVkIG9uIGEKCSAgdHlwZSB3aXRoIG5vIGluaGVyaXRlZCBpbnRlcmZhY2VzLiBJZiB0aGUgaW1wbGVtZW50ZWQgdHlwZXMgbGlua2VkIGxpc3QKCSAgaXMgZW1wdHksIHNldCBwUmVmVHlwZSBhcyAwIGFuZCByZXR1cm4gU19PSy4KCgkqIGluY2x1ZGUvd2luZS9vYmpfb2xlYXV0Lmg6CglKYW1lcyBIYXRoZXdheSA8amFtZXNAbWFjYWRhbWlhbi5jb20+CglGaXhlZCB0eXBvIGluIHRoZSBJRGlzcGF0Y2hfR2V0VHlwZUluZm8gbWFjcm8uCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2x0aXBzLmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglGaXggc29tZSByZW1haW5pbmcgcHJvYmxlbXMgd2l0aCB0b29sdGlwcy4KCgkqIGNvbmZpZ3VyZS5pbiwgY29uZmlndXJlOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCBPcGVuR0wgY29uZmlndXJlOiBtb3ZlIEhBVkVfT1BFTkdMIGRlZmluZSB0byB3aGVyZSBpdCBiZWxvbmdzLAoJZml4ZWQgZ2xleHQuaCBwcmVzZW5jZSBpbiBjb25maWd1cmUgY2hlY2sgZm9yIFBGTkdMQ09MT1JUQUJMRUVYVFBST0MuCgoJKiBpbmNsdWRlL2F1dGhvcnMuaCwgaW5jbHVkZS9jcnRkbGwuaCwgaW5jbHVkZS9kZXZpY2UuaCwgaW5jbHVkZS9maWxlLmgsIGluY2x1ZGUvbWV0YWZpbGVkcnYuaCwgaW5jbHVkZS93MzJzeXMuaCwgdG9vbHMvbWFrZV9hdXRob3JzLCB3aW4zMi9maWxlLmMsIGRsbHMvb2xlMzIvb2xlMi5jLCBkbGxzL3NoZWxsMzIvYXV0aG9ycy5oLCBkbGxzL3NoZWxsMzIvYnJzZm9sZGVyLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBkbGxzL3NoZWxsMzIvc2hsdmlldy5jLCBkbGxzL3dpbjMycy93MzJzeXMuYywgZmlsZXMvZmlsZS5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9tZXRhZmlsZWRydi5oLCBkZWJ1Z2dlci93aW5lZGJnLmMsIGRsbHMvY3J0ZGxsL2NydGRsbC5oLCBkbGxzL2RkcmF3L2RnYS5jLCBkbGxzL2RkcmF3L2RnYTIuYywgZGxscy9kZHJhdy9oZWxwZXIuYywgZGxscy9rZXJuZWwvdG9vbGhlbHAuYywgZGxscy9udGRsbC9leGNlcHRpb24uYzoKCU1vdmVkIGEgZmV3IG5vbi1zdGFuZGFyZCBoZWFkZXJzIGludG8gdGhlaXIgcmVzcGVjdGl2ZSBkbGxzLgoKCSogaW5jbHVkZS9NYWtlZmlsZS5pbjoKCUluc3RhbGwgYWxsIHN0YW5kYXJkIFdpbmRvd3MgaW5jbHVkZXMsIHBsdXMgc29tZSBmcm9tIHRoZSB3aW5lIHN1YmRpci4KCgkqIGRsbHMvY29tY3RsMzIvZGF0ZXRpbWUuYywgZGxscy9jb21jdGwzMi9mbGF0c2IuYywgZGxscy9jb21jdGwzMi9oZWFkZXIuYywgZGxscy9jb21jdGwzMi9ob3RrZXkuYywgZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYywgZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuaCwgZGxscy9jb21jdGwzMi9pcGFkZHJlc3MuYywgZGxscy9jb21jdGwzMi9saXN0dmlldy5jLCBkbGxzL2NvbWN0bDMyL21vbnRoY2FsLmMsIGRsbHMvY29tY3RsMzIvbmF0aXZlZm9udC5jLCBkbGxzL2NvbWN0bDMyL3BhZ2VyLmMsIGRsbHMvY29tY3RsMzIvcHJvZ3Jlc3MuYywgZGxscy9jb21jdGwzMi9yZWJhci5jLCBkbGxzL2NvbWN0bDMyL3N0YXR1cy5jLCBkbGxzL2NvbWN0bDMyL3RhYi5jLCBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYywgZGxscy9jb21jdGwzMi90b29sdGlwcy5jLCBkbGxzL2NvbWN0bDMyL3RyYWNrYmFyLmMsIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYywgZGxscy9jb21jdGwzMi91cGRvd24uYywgZGxscy9zaGVsbDMyL3NoZWxsLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwgaW5jbHVkZS9hbmltYXRlLmgsIGluY2x1ZGUvY29tYm9leC5oLCBpbmNsdWRlL2NvbW1jdHJsLmgsIGluY2x1ZGUvZGF0ZXRpbWUuaCwgaW5jbHVkZS9mbGF0c2IuaCwgaW5jbHVkZS9oZWFkZXIuaCwgaW5jbHVkZS9ob3RrZXkuaCwgaW5jbHVkZS9pbWFnZWxpc3QuaCwgaW5jbHVkZS9pcGFkZHJlc3MuaCwgaW5jbHVkZS9saXN0dmlldy5oLCBpbmNsdWRlL21vbnRoY2FsLmgsIGluY2x1ZGUvbmF0aXZlZm9udC5oLCBpbmNsdWRlL3BhZ2VyLmgsIGluY2x1ZGUvcHJvZ3Jlc3MuaCwgaW5jbHVkZS9yZWJhci5oLCBpbmNsdWRlL3N0YXR1cy5oLCBpbmNsdWRlL3RhYi5oLCBpbmNsdWRlL3Rvb2xiYXIuaCwgaW5jbHVkZS90b29sdGlwcy5oLCBpbmNsdWRlL3RyYWNrYmFyLmgsIGluY2x1ZGUvdHJlZXZpZXcuaCwgaW5jbHVkZS91cGRvd24uaCwgZGxscy9jb21jdGwzMi9hbmltYXRlLmMsIGRsbHMvY29tY3RsMzIvY29tYm9leC5jLCBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmM6CglSZW1vdmVkIGFsbCBub24tc3RhbmRhcmQgY29tbW9uIGNvbnRyb2wgaGVhZGVycyBmcm9tIHRoZSBpbmNsdWRlCglkaXJlY3RvcnkuCgoJKiB3aW5kb3dzL01ha2VmaWxlLmluLCB3aW5kb3dzL3N0cnVjdDMyLmMsIHdpbmRvd3Mvc3RydWN0MzIuaCwgZ3JhcGhpY3MveDExZHJ2L2dyYXBoaWNzLmMsIGluY2x1ZGUvc3RydWN0MzIuaCwgd2luMzIvTWFrZWZpbGUuaW4sIHdpbjMyL3N0cnVjdDMyLmM6CglNb3ZlZCBzdHJ1Y3QzMi5jIHRvIHdpbmRvd3MgZGlyZWN0b3J5LgoKMjAwMC0wOC0wOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHJlbGF5MzIvYnVpbHRpbjMyLmM6CglNYWtlIHN1cmUgYnVpbHRpbiBkbGxzIGFyZSBuZXZlciBmcmVlZCBzaW5jZSB3ZSBkb24ndCBzdXBwb3J0IGRsY2xvc2UKCXByb3Blcmx5IHlldC4KCgkqIGRsbHMvcHNhcGkvTWFrZWZpbGUuaW4sIGRsbHMvcHNhcGkvcHNhcGkuc3BlYywgZGxscy9yaWNoZWRpdC9yZWFkZXIuYywgZGxscy9zZXJpYWx1aS9jb25mZGxnLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGVsbHN0cmluZy5jLCBkbGxzL3RhcGkzMi9NYWtlZmlsZS5pbiwgZGxscy90YXBpMzIvbGluZS5jLCBkbGxzL3RhcGkzMi90YXBpMzIuc3BlYywgZGxscy93aW5tbS9tbXN5c3RlbS5jLCBkbGxzL3dpbm1tL21tc3lzdGVtLnNwZWMsIGluY2x1ZGUvd2luZS93aW5iYXNlMTYuaCwgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9jb21tZGxnL2ZvbnRkbGcuYywgZGxscy9jb21tZGxnL3ByaW50ZGxnLmMsIGRsbHMva2VybmVsL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC9rZXJuZWwuc3BlYywgZGxscy9semV4cGFuZC9semV4cGFuZF9tYWluLmMsIGRsbHMvbXNhY20vZHJpdmVyLmMsIGRsbHMvb2xlMzIvb2xlMi5jLCBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYzoKCVNtYWxsIGRsbCBpbnRlcmZhY2VzIGNsZWFudXBzLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGluY2x1ZGUvd2luZV9nbC5oOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglFYXNlZCByZXN0cmljdGlvbnMgb24gT3BlbkdML01FU0EgdXNhZ2UgYSBiaXQuIEl0IGNvbXBpbGVzIGp1c3QgZmluZQoJdXNpbmcgbWVzYS0zLjIgZXZlbiB3aXRob3V0IGdsZXh0LmguCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmMsIGluY2x1ZGUvbGlzdHZpZXcuaDoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglSZXdvcmtlZCBob3cgc2VsZWN0aW9ucyBhcmUga2VwdCB0cmFjayBvZiBpbiB0aGUgbGlzdCB2aWV3LiBTZWxlY3Rpb25zCglhcmUgbm93IGxpc3RlZCBhcyBhIHNvcnRlZCByYW5nZSBvZiBwYWlyZWQgaW50ZWdlcnMuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2x0aXBzLmM6CglMb3VpcyBQaGlsaXBwZSBHYWdub24gPGxvdWlzcGhpbGlwcGVAbWFjYWRhbWlhbi5jb20+CglXaGVuIHVuc3ViY2xhc3NpbmcgdG9vbHMsIHVzZSB0b29sUHRyLT5od25kIGluc3RlYWQgb2YgdG9vbFB0ci0+dUlkIGlmCgl0b29sUHRyLT5mbGFncyBkb2VzIG5vdCBjb250YWluIFRURl9JRElTSFdORCAobWVhbmluZyB1SWQgaXMgbm90IGEKCXZhbGlkIHdpbmRvdyBoYW5kbGUpLgoKCSogZG9jdW1lbnRhdGlvbi9IT1dUTy13aW5lbGliOgoJV2lsYnVyIE4uIERhbGUgPHdpbGJ1ci5kYWxlQGx1bWluLm5sPgoJQWRkZWQgZGVzY3JpcHRpb24gb2YgdXNpbmcgRExMcyB3aXRoIFdpbmVMaWIuCgoJKiBkb2N1bWVudGF0aW9uLyo6CglKb2huIFIuIFNoZWV0cyA8anNoZWV0c0Bjb2Rld2VhdmVycy5jb20+CglDb252ZXJ0ZWQgV2luZSBkb2N1bWVudGF0aW9uIHRvIFNHTUwgZm9ybWF0LgoKMjAwMC0wOC0wNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbnRyb2xzL2ljb250aXRsZS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglJbml0aWFsaXplICdzdHInIGluIElDT05USVRMRV9HZXRUaXRsZVBvcy4KCgkqIGluY2x1ZGUvbW9kdWxlLmgsIGxvYWRlci9uZS9yZXNvdXJjZS5jLCBsb2FkZXIvcGVfcmVzb3VyY2UuYywgbG9hZGVyL3Jlc291cmNlLmM6CglGaXhlZCByZXNvdXJjZSBmdW5jdGlvbnMgdG8gd29yayB3aXRoIDMyLWJpdCBtb2R1bGVzIHRoYXQgZG9uJ3QgaGF2ZSBhCgkxNi1iaXQgY291bnRlcnBhcnQgKG5lY2Vzc2FyeSBmb3IgTE9BRF9MSUJSQVJZX0FTX0RBVEFGSUxFIHN1cHBvcnQpLgoKCSogcHJvZ3JhbXMvdW5pbnN0YWxsZXIvbWFpbi5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglBZGQgYW4gZWRpdCBjb250cm9sIHNob3dpbmcgdGhlIGNvbW1hbmQgbGluZSBvZiB0aGUgY3VycmVudGx5IHNlbGVjdGVkCglkZWluc3RhbGwgaXRlbS4KCgkqIHdpbmRvd3Mvd2lucG9zLmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglXSU5QT1NfV2luZG93RnJvbVBvaW50IHNob3VsZCByZXNwZWN0IGhyZ25XbmQuCgoJKiBsb2FkZXIvcGVfaW1hZ2UuYzoKCVBldGVyIEdhbnRlbiA8cGV0ZXJAZ2FudGVuLm9yZz4KCVNldCB1cCBleGVfbW9kcmVmIGJlZm9yZSBsb2FkaW5nIGltcGxpY2l0bHkgbGlua2VkIGRsbHMuCgoJKiBkbGxzL2tlcm5lbC9mb3JtYXRfbXNnLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCVByZXZlbnQgZW5kbGVzcyBsb29waW5nIGluIGxpbmVicmVhayBoYW5kbGluZy4KCgkqIGRsbHMvZGRyYXcvZGRyYXcveDExLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUlmIHdlIGFyZSBsb29raW5nIGZvciBhbiBleGlzdGluZyBwaXhtYXAgZm9ybWF0LCB3ZSBkbyBub3QgbmVlZCB0aGUKCXNhbWUgYml0c3BlcnBpeGVsIChmaXhlcyBkZXB0aCAxNS9iaXRzcGl4ZWwgMTYgbW9kZSkuCgoJKiBpbmNsdWRlL2RpbnB1dC5oOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglBZGRlZCBhIGZldyBEaXJlY3RJbnB1dCA3IGRlZmluaXRpb25zIGFuZCBDKysgZml4ZXMuCgoJKiBkbGxzL2tlcm5lbC93b3d0aHVuay5jOgoJUGV0ZXIgR2FudGVuIDxwZXRlckBnYW50ZW4ub3JnPgoJTG9hZExpYnJhcnlFeDMyVzE2IHNob3VsZCB1c2UgdGhlIHNlYXJjaCBhbGdvcml0aG0gb2YgMTYtYml0IGxpYnJhcmllcy4KCgkqIHdpbmRvd3MvY3Vyc29yaWNvbi5jLCB3aW5kb3dzL2lucHV0LmMsIHdpbmRvd3MvbXNnYm94LmMsIHdpbmRvd3Mvd2lucG9zLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVJlbW92ZWQgbG9jYWwgdmFyaWFibGUgc2hhZG93cyB3YXJuaW5ncy4KCgkqIHdpbjMyL3Byb2Nlc3MuYywgaW5jbHVkZS9lbGZkbGwuaCwgaW5jbHVkZS9tb2R1bGUuaCwgaW5jbHVkZS9wZV9pbWFnZS5oLCBsb2FkZXIvZWxmLmMsIGxvYWRlci9lbGZkbGwuYywgbG9hZGVyL21vZHVsZS5jLCBsb2FkZXIvbmUvbW9kdWxlLmMsIGxvYWRlci9wZV9pbWFnZS5jLCBsb2FkZXIvcGVfcmVzb3VyY2UuYywgbG9hZGVyL3Jlc291cmNlLmMsIGxvYWRlci90YXNrLmMsIG1pc2MvdmVyc2lvbi5jLCByZWxheTMyL2J1aWx0aW4zMi5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBkZWJ1Z2dlci9kYmdtYWluLmMsIGRlYnVnZ2VyL21zYy5jLCBkZWJ1Z2dlci90eXBlcy5jOgoJLSBGaXhlZCByZXNvdXJjZSBmdW5jdGlvbnMgdG8gd29yayBkaXJlY3RseSBmcm9tIHRoZSBITU9EVUxFIGluc3RlYWQgb2YKCSAgcmVxdWlyaW5nIGEgbW9kcmVmLgoJLSBBdHRlbXB0ZWQgdG8gZ2V0IExPQURfTElCUkFSWV9BU19EQVRBRklMRSByaWdodCAoYmFzZWQgb24gcGF0Y2hlcyBieQoJICBFcmljIFBvdWVjaCBhbmQgRHVzYW4gTGFja28pLgoJLSBTaW1wbGlmaWVkIG1vZHJlZiBzdHJ1Y3R1cmUgYW5kIGhhbmRsaW5nLgoKCSogaW5jbHVkZS93aW5lL29ial9iYXNlLmg6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCVByb3RlY3QgdGhlIHByb3RvdHlwZXMgaW4gaGVyZSBmcm9tIEMrKyBuYW1lIG1hbmdsaW5nLi4uCgoJKiBkbGxzL3ZlcnNpb24vaW5zdGFsbC5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglWSUZfT1VUT0ZTUEFDRSBhbmQgVklGX09VVE9GTUVNIHdlcmUgcmV2ZXJzZWQuCgoJKiBpbmNsdWRlL3Zmdy5oOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglpbmxpbmUgbXVzdCBiZSBmaXJzdCBhdHRyaWJ1dGUgaW4gZnVuY3Rpb24gZGVmaW5pdGlvbi4KCgkqIGRsbHMvdXNlci9sc3RyLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIENoYXJOZXh0Vy4KCgkqIGdyYXBoaWNzL3gxMWRydi9kaWIuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVgxMURSVl9ESUJfU2V0SW1hZ2VCaXRzX1JMRTg6IGJyZWFrIGltYWdlIGxpbmVzLgoKMjAwMC0wOC0wNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvd2luaW5ldC9NYWtlZmlsZS5pbiwgZGxscy93aW5pbmV0L3dpbmluZXQuc3BlYywgZGxscy93aW5tbS9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS93aW5tbS5zcGVjLCBkbGxzL3dpbnNvY2svTWFrZWZpbGUuaW4sIGRsbHMvd2luc29jay93czJfMzIuc3BlYywgZGxscy93aW5zcG9vbC9NYWtlZmlsZS5pbiwgZGxscy93aW5zcG9vbC93aW5zcG9vbC5kcnYuc3BlYywgZGxscy9pY21wL01ha2VmaWxlLmluLCBkbGxzL2ljbXAvaWNtcC5zcGVjLCBkbGxzL2ltYWdlaGxwL01ha2VmaWxlLmluLCBkbGxzL2ltYWdlaGxwL2ltYWdlaGxwLnNwZWMsIGRsbHMvbHpleHBhbmQvTWFrZWZpbGUuaW4sIGRsbHMvbHpleHBhbmQvbHozMi5zcGVjLCBkbGxzL21wci9NYWtlZmlsZS5pbiwgZGxscy9tcHIvbXByLnNwZWMsIGRsbHMvbXNhY20vTWFrZWZpbGUuaW4sIGRsbHMvbXNhY20vbXNhY20zMi5zcGVjLCBkbGxzL3JpY2hlZGl0L01ha2VmaWxlLmluLCBkbGxzL3JpY2hlZGl0L3JpY2hlZDMyLnNwZWMsIGRsbHMvc2VyaWFsdWkvTWFrZWZpbGUuaW4sIGRsbHMvc2VyaWFsdWkvc2VyaWFsdWkuc3BlYywgZGxscy9zZXR1cGFwaS9NYWtlZmlsZS5pbiwgZGxscy9zZXR1cGFwaS9zZXR1cGFwaS5zcGVjLCBkbGxzL3dpbmFzcGkvTWFrZWZpbGUuaW4sIGRsbHMvd2luYXNwaS93bmFzcGkzMi5zcGVjLCBkbGxzL3dpbmVwcy9NYWtlZmlsZS5pbiwgZGxscy93aW5lcHMvd2luZXBzLnNwZWMsIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvYWR2YXBpMzIvTWFrZWZpbGUuaW4sIGRsbHMvYWR2YXBpMzIvYWR2YXBpMzIuc3BlYywgZGxscy9jb21jdGwzMi9NYWtlZmlsZS5pbiwgZGxscy9jb21jdGwzMi9jb21jdGwzMi5zcGVjOgoJQWRkZWQgaW1wb3J0cyBvZiBrZXJuZWwzMi5kbGwgd2hlcmUgbmVjZXNzYXJ5LgoKCSogTWFrZWZpbGUuaW4sIGRsbHMvdXNlci9NYWtlZmlsZS5pbjoKCUxpbmsgVVNFUiByZXNvdXJjZXMgaW50byBsaWJ1c2VyLnNvLgoKCSogb2xlL29sZTJubHMuYzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglGaXggZm9yIGNhbGxpbmcgY3R5cGUgZnVuY3Rpb25zIHdpdGggVW5pY29kZSBjaGFyYWN0ZXJzLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCUNvbnZlcnRlZCBhbGwgY2FsbHMgdG8gUmVkcmF3V2luZG93IHRvIEludmFsaWRhdGVSZWN0LiAgUHJldmlvdXNseQoJUmVkcmF3V2luZG93IHdhcyBiZWluZyB1c2VkIGZvciB0aGUgUkRXX1VQREFURU5PVyBmbGFnIHdoaWNoIGZvcmNlZCBhbgoJaW1tZWRpYXRlIFdNX1BBSU5UIG1lc3NhZ2UuICBNb3ZpbmcgdG8gSW52YWxpZGF0ZVJlY3Qgc2hvdWxkIGxldAoJV01fUEFJTlRzIG9jY3VyIG5vcm1hbGx5LgoKCSogY29udHJvbHMvbGlzdGJveC5jOgoJU3VzYW4gRmFybGV5IDxzZmFybGV5QGNvZGV3ZWF2ZXJzLmNvbT4KCUF2b2lkIHJlc2V0dGluZyB0aGUgYmFja2dyb3VuZCBjb2xvciB3aGVuIGNsZWFyaW5nIG91dCBibGFuayBhcmVhcywgYXMKCWl0IG1heSBoYXZlIGJlZW4gc2V0IHRvIHNvbWV0aGluZyBvdGhlciB0aGFuIENPTE9SX1dJTkRPVyBieSB0aGUKCWFwcGxpY2F0aW9uLgoKCSogd2luZG93cy94MTFkcnYvd25kLmM6CglTdGVwaGFuZSBMdXNzaWVyIDxzdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KCVRvcCBsZXZlbCB3aW5kb3dzIHdpdGggMCB3aWR0aCBvciBoZWlnaHQgYXJlIGNyZWF0ZWQgd2l0aCBhIHNpemUgb2YgMXgxIGluCgl0aGUgWDExIGRyaXZlci4gSSd2ZSBhZGRlZCBzb21lIGNvZGUgdG8gbWFrZSBzdXJlIHRob3NlIHdpbmRvd3MgYXJlIG5ldmVyCgltYXBwZWQgd2hpbGUgdGhlIHNpemUgPD0gMC4KCgkqIG1pc2MvbHN0ci5jLCBtaXNjL21haW4uYywgcmVsYXkzMi9zbm9vcC5jLCB3aW4zMi9leGNlcHQuYywgZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYywgZGxscy9zaGx3YXBpL3N0cmluZy5jLCBkbGxzL3VzZXIvbHN0ci5jLCBkbGxzL3VzZXIvbWlzYy5jLCBkbGxzL3VzZXIvdXNlci5zcGVjLCBkbGxzL3VzZXIvdXNlcjMyLnNwZWMsIGlmMTYzMi9NYWtlZmlsZS5pbiwgaWYxNjMyL2R1bW15LmMsIGluY2x1ZGUvd2luZS9leGNlcHRpb24uaCwgaW5jbHVkZS93aW5lL3dpbmVzdHJpbmcuaCwgaW5jbHVkZS93aW5lL3dpbnVzZXIxNi5oLCBpbmNsdWRlL3dpbnVzZXIuaCwgbWVtb3J5L3N0cmluZy5jLCBjb25zb2xlL2ludGVyZmFjZS5jLCBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYywgZGxscy9nZGkvZ2RpX21haW4uYywgZGxscy9rZXJuZWwva2VybmVsLnNwZWMsIGRsbHMva2VybmVsL2tlcm5lbF9tYWluLmMsIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYzoKCU1vdmVkIG1vc3QgVVNFUiBzdHJpbmcgZnVuY3Rpb25zIHRvIGRsbHMvdXNlci4KCUNsZWFuZWQgdXAgYSBmZXcgbW9yZSBpbnRlci1kbGwgZGVwZW5kZW5jaWVzLgoKCSogb2xlL29sZTJubHMuYywgcmVsYXkzMi9yZWxheTM4Ni5jLCB3aW4zMi9kZXZpY2UuYywgd2luMzIvaW5pdC5jLCB3aW5kb3dzL2RyaXZlci5jLCB3aW5kb3dzL3BhaW50aW5nLmMsIHdpbmRvd3Mvd2luLmMsIGZpbGVzL2Rvc19mcy5jLCBmaWxlcy9kcml2ZS5jLCBmaWxlcy9maWxlLmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L2luaXQuYywgZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsIGxvYWRlci9sb2Fkb3JkZXIuYywgbG9hZGVyL25lL2NvbnZlcnQuYywgbG9hZGVyL25lL21vZHVsZS5jLCBsb2FkZXIvbmUvcmVzb3VyY2UuYywgbWlzYy9yZWdpc3RyeS5jLCBvYmplY3RzL2VuaG1ldGFmaWxlLmMsIGNvbnRyb2xzL2VkaXQuYywgY29udHJvbHMvbWVudS5jLCBkbGxzL3NobHdhcGkvcGF0aC5jLCBkbGxzL3VzZXIvdGV4dC5jOgoJUmVwbGFjZWQgbHN0cmxlbi9sc3RyY21wIGJ5IGxpYmMgZXF1aXZhbGVudHMgZXZlcnl3aGVyZSB3ZSBkb24ndCBuZWVkCgl0byB0cmFwIGV4Y2VwdGlvbnMuCgoyMDAwLTA4LTA0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMuZGF0LCB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL25hdGl2ZWFwaS5kYXQsIHRvb2xzL3dpbmFwaV9jaGVjay9uYXRpdmVhcGkucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9jb21jdGwzMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9vbGVhdXQzMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi93czJfMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvd3NvY2szMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfY2hlY2s6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gV2FybiBhYm91dCBkaXJlY3RvcmllcyBzcGVjaWZpZWQgaW4gbW9kdWxlcy5kYXQgdGhhdCBhcmUgbm90IHVzZWQuCgktIEVsaW1pbmF0ZWQgdGhlIHdhcm5pbmdzIGNhdXNlZCBieSB0aGUgY2hhbmdlIGFib3ZlLgoJLSBNaW5vciBBUEkgZmlsZXMgdXBkYXRlLgoJLSBNaW5vciBidWcgZml4ZXMuCgoJKiBpbmNsdWRlL2FjY29uZmlnLmgsIGluY2x1ZGUvY29uZmlnLmguaW4sIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBpc3N1ZXMgZm91bmQgYnkgd2luYXBpX2NoZWNrLgoKCSogZGVidWdnZXIvc3RhY2suYywgZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIHdhcm5pbmdzLgoKCSogcHJvZ3JhbXMvcmVnYXBpL01ha2VmaWxlLmluLCBwcm9ncmFtcy9yZWd0ZXN0L01ha2VmaWxlLmluLCBwcm9ncmFtcy91bmluc3RhbGxlci9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvdmlldy9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2NtZC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luZW1pbmUvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmhlbHAvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbnZlci9NYWtlZmlsZS5pbiwgZGVidWdnZXIvTWFrZWZpbGUuaW4sIHByb2dyYW1zL2F2aXRvb2xzL01ha2VmaWxlLmluLCBwcm9ncmFtcy9jbG9jay9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvY21kbGd0c3QvTWFrZWZpbGUuaW4sIHByb2dyYW1zL2NvbnRyb2wvTWFrZWZpbGUuaW4sIHByb2dyYW1zL25vdGVwYWQvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3Byb2dtYW4vTWFrZWZpbGUuaW46CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJQWRkZWQgYSBmZXcgbWlzc2luZyBpbXBvcnRzLgoKCSogb2JqZWN0cy9wYWxldHRlLmMsIG9iamVjdHMvdGV4dC5jLCBzY2hlZHVsZXIvdGhyZWFkLmMsIHdpbjMyL01ha2VmaWxlLmluLCB3aW4zMi9uZXdmbnMuYywgd2luMzIvb3JkaW5hbHMuYywgd2luZG93cy9xdWV1ZS5jLCB3aW5kb3dzL3Njcm9sbC5jLCBkbGxzL3VzZXIvTWFrZWZpbGUuaW4sIGRsbHMvdXNlci9jYWNoZS5jLCBkbGxzL3VzZXIvbHN0ci5jLCBkbGxzL3VzZXIvbWlzYy5jLCBkbGxzL3VzZXIvcmVzb3VyY2UuYywgZGxscy91c2VyL3RleHQuYywgZ3JhcGhpY3MvTWFrZWZpbGUuaW4sIGdyYXBoaWNzL2NhY2hlLmMsIGxvYWRlci9yZXNvdXJjZS5jLCBtaXNjL2xzdHIuYywgZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYzoKCU1vdmVkIGEgYnVuY2ggb2YgZnVuY3Rpb25zIG91dCBvZiBsaWJ3aW5lL2tlcm5lbC9nZGkgaW50byBVU0VSLgoKCSogd2luZG93cy94MTFkcnYvd25kLmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L2luaXQuYywgZ3JhcGhpY3Mvd2luMTZkcnYvaW5pdC5jLCBncmFwaGljcy94MTFkcnYvaW5pdC5jLCBpbmNsdWRlL2dkaS5oLCBpbmNsdWRlL3R0eWRydi5oLCBpbmNsdWRlL3VzZXIuaCwgaW5jbHVkZS93aW4uaCwgaW5jbHVkZS94MTFkcnYuaCwgb2JqZWN0cy9tZXRhZmlsZS5jLCB3aW5kb3dzL2NhcmV0LmMsIHdpbmRvd3MvY2xpcGJvYXJkLmMsIHdpbmRvd3MvY3Vyc29yaWNvbi5jLCB3aW5kb3dzL2RjZS5jLCB3aW5kb3dzL2RpYWxvZy5jLCB3aW5kb3dzL25vbmNsaWVudC5jLCB3aW5kb3dzL3BhaW50aW5nLmMsIHdpbmRvd3Mvd2lucG9zLmMsIGNvbnRyb2xzL2NvbWJvLmMsIGNvbnRyb2xzL21lbnUuYywgZGxscy90dHlkcnYvdHR5ZHJ2X21haW4uYywgZGxscy93aW5lcHMvaW5pdC5jLCBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jLCBncmFwaGljcy9lbmhtZXRhZmlsZWRydi9pbml0LmM6CglSZW1vdmVkIGEgZmV3IGRlcGVuZGVuY2llcyBvbiBHREkgaW50ZXJuYWxzIGZyb20gVVNFUiBkbGwuCgoJKiBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2dkaS9NYWtlZmlsZS5pbiwgZGxscy9nZGkvZ2RpMzIuc3BlYywgZGxscy91c2VyL3VzZXIzMi5zcGVjLCBwcm9ncmFtcy91bmluc3RhbGxlci9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2NtZC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luZW1pbmUvTWFrZWZpbGUuaW4sIGRlYnVnZ2VyL01ha2VmaWxlLmluLCBkZWJ1Z2dlci93aW5lZGJnLnNwZWM6CglBZGRlZCBhIGZldyBtaXNzaW5nIGltcG9ydHMuCgoyMDAwLTA4LTAzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luMzIvY29uc29sZS5jLCBNYWtlZmlsZS5pbiwgZGxscy9nZGkvLmN2c2lnbm9yZSwgZGxscy9nZGkvTWFrZWZpbGUuaW4sIGRsbHMvZ2RpL3ByaW50ZHJ2LmMsIGRsbHMva2VybmVsL3Rvb2xoZWxwLnNwZWMsIGRsbHMvdXNlci9NYWtlZmlsZS5pbiwgbWlzYy9NYWtlZmlsZS5pbiwgbWlzYy9wcmludGRydi5jLCBtc2Rvcy9pbnQwOS5jLCBtc2Rvcy9pbnQxNi5jLCBzY2hlZHVsZXIvdGhyZWFkLmM6CglNYWtlIFVTRVIgYW5kIEdESSBzZXBhcmF0ZSBkbGxzLgoKCSogZGxscy93aW5zb2NrL2FzeW5jLmMsIGRsbHMvd2luc29jay9zb2NrZXQuYywgaW5jbHVkZS93aW5lL3dpbnNvY2sxNi5oLCBpbmNsdWRlL3dpbnNvY2suaCwgaW5jbHVkZS93aW5zb2NrMi5oOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglGaXhlZCB0aGUgV2luMTYvV2luMzIgc3RydWN0dXJlIHNpemUvYWxpZ25tZW50IGRpZmZlcmVuY2VzIG9mCgl3c19ob3N0ZW50LCB3c19wcm90b2VudCwgd3Nfc2VydmVudCwgd3NfbmV0ZW50LgoKCSogZGxscy9jb21jdGwzMi90b29sdGlwcy5jLCBpbmNsdWRlL3Rvb2x0aXBzLmg6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJUmVkbyB0aGUgc2hvdy9oaWRlIGxvZ2ljIGFuZCBhZGQgYSBjb21tZW50IHRvIGV4cGxhaW4gd2hhdCdzIGdvaW5nIG9uLgoJRml4IFRUTV97U3xHfUVUREVMQVlUSU1FIHRvIHVzZSB0aGUgZG91YmxlIGNsaWNrIHRpbWUgYXMgZGVmYXVsdC4KCUZpeCBoYW5kbGluZyBvZiBUVERUX0FVVE9NQVRJQy4KCVJlbGF5ZWQgbW91c2UgbWVzc2FnZXMgc2hvdWxkIGV4dHJhY3QgdGhlIHBvc2l0aW9uIGZyb20gbFBhcmFtIG5vdAoJbXNnLnB0CglTdWJjbGFzc1Byb2Mgbm93IHVuaWZpZWQgd2l0aCBUVE1fUkVMQVlFVkVOVC4KCUNoYW5nZSBhbGwgbHN0cmNweXh0b3ggdG8gdXNlIHdpbjMyIEFQSXMuCgoJKiBkbGxzL3dpbmVwcy9hZm0uYywgZGxscy93aW5lcHMvcHNkcnYuaDoKCUFsZXhhbmRyZSBKdWxsaWFyZCA8anVsbGlhcmRAY29kZXdlYXZlcnMuY29tPiAoZm9yIENvcmVsKQoJQ2hhbmdlZCB0aGUgQUZNIG1ldHJpY3Mgc3RydWN0dXJlIHRvIHVzZSBhbiBhcnJheSBpbnN0ZWFkIG9mIGEgbGlua2VkCglsaXN0LiBUaGlzIGF2b2lkcyBkb2luZyB0d28gaGVhcCBhbGxvY2F0aW9ucyBmb3IgZXZlcnkgY2hhcmFjdGVyLCBhbmQKCXJlZHVjZXMgdGhlIG1ldHJpY3MgcGFyc2luZyB0aW1lIGJ5IGFwcHJveCAyNSUuCgoJKiBkbGxzL3dpbmluZXQvaHR0cC5jOgoJSm9obiBSLiBTaGVldHMgPGpzaGVldHNAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgIk1pbWUtVmVyc2lvbiIgdG8gc3RhbmRhcmQgTUlNRSBoZWFkZXJzIHBhcnNlZCBpbgoJSFRUUF9HZXRTdGRIZWFkZXJJbmRleCgpLgoKCSogZGxscy9vbGUzMi9lcnJvcmluZm8uYywgaW5jbHVkZS9vbGVhdXRvLmgsIGluY2x1ZGUvb2xlaWRsLmgsIGluY2x1ZGUvdGhyZWFkLmgsIGluY2x1ZGUvd2luZS9vYmpfZXJyb3JpbmZvLmgsIGluY2x1ZGUvd2luZS9vYmpfb2xlYXV0Lmg6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCUltcGxlbWVudGVkIHRoZSBFcnJvckluZm8gaW50ZXJmYWNlcy4KCgkqIGRsbHMva2VybmVsL01ha2VmaWxlLmluOgoJQWRkZWQgZXhwbGljaXQgZGVwZW5kZW5jeSBvbiBtZXNzYWdlIGZpbGVzIGZvciBwZW9wbGUgd2hvIGRvbid0IHJ1bgoJbWFrZSBkZXBlbmQuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxndWlkLmMsIGRsbHMvc2hsd2FwaS9zaGx3YXBpX21haW4uYywgb2xlL2d1aWQuYywgZGxscy9hdmlmaWwzMi9hdmlmaWxlLmMsIGRsbHMvZGRyYXcvbWFpbi5jLCBkbGxzL2RpbnB1dC9kaW5wdXRfbWFpbi5jLCBkbGxzL2RwbGF5eC9kcGxheXhfbWFpbi5jLCBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jLCBkbGxzL29sZTMyL29sZW9iai5jLCBkbGxzL29sZWF1dDMyL29sZWF1dC5jOgoJTW92ZWQgR1VJRCBkZWZpbml0aW9ucyB0byB0aGVpciByZXNwZWN0aXZlIGRsbC4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYywgaW5jbHVkZS93aW5lL29ial9zaGVsbGxpbmsuaDoKCUZpeGVkIElTaGVsbExpbmtBL1cgZGVmaW5pdGlvbnMuCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmMsIGRsbHMvY29tbWRsZy9maWxlZGxnYnJvd3Nlci5jLCBkbGxzL3NoZWxsMzIvYnJzZm9sZGVyLmMsIGRsbHMvc2hlbGwzMi9mb2xkZXJzLmMsIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGRsbHMvc2hlbGwzMi9zaGxtZW51LmMsIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmMsIGRsbHMvc2hlbGwzMi9zaHZfYmdfY21lbnUuYywgZGxscy9zaGVsbDMyL3Nodl9pdGVtX2NtZW51LmMsIGluY2x1ZGUvZ3VpZGRlZi5oLCBpbmNsdWRlL2luaXRndWlkLmgsIGluY2x1ZGUvcnBjLmgsIGluY2x1ZGUvc2hsZ3VpZC5oLCBpbmNsdWRlL3Zmdy5oLCBpbmNsdWRlL3dpbmUvb2JqX2Jhc2UuaCwgaW5jbHVkZS93aW5lL29ial9jb21tZGxnYnJvd3Nlci5oLCBpbmNsdWRlL3dpbmUvb2JqX2NvbnRleHRtZW51LmgsIGluY2x1ZGUvd2luZS9vYmpfZW51bWlkbGlzdC5oLCBpbmNsdWRlL3dpbmUvb2JqX2V4dHJhY3RpY29uLmgsIGluY2x1ZGUvd2luZS9vYmpfc2hlbGxicm93c2VyLmgsIGluY2x1ZGUvd2luZS9vYmpfc2hlbGxleHRpbml0LmgsIGluY2x1ZGUvd2luZS9vYmpfc2hlbGxmb2xkZXIuaCwgaW5jbHVkZS93aW5lL29ial9zaGVsbHZpZXcuaCwgaW5jbHVkZS93dHlwZXMuaDoKCUFkZGVkIGd1aWRkZWYuaCBhbmQgbW92ZWQgYSBmZXcgR1VJRCBkZWZpbml0aW9ucyB0byB0aGUgY29ycmVjdCBmaWxlLgoKCSogZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvb2xlMzIuc3BlYzoKCUZpeGVkIElzRXF1YWxHVUlEIGRlZmluaXRpb24uCgoJKiBpbmNsdWRlL3dpbm5scy5oLCBvbGUvb2xlMm5scy5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglMT0NBTEVfTk9VU0VST1ZFUlJJREUgbWVhbnM6IGRvIG5vdCBnZXQgdXNlciByZWRlZmluZWQgc2V0dGluZ3MgZnJvbQoJdGhlIHJlZ2lzdHJ5LiBJbnN0ZWFkLCB1c2Ugc3lzdGVtIGRlZmF1bHQgdmFsdWVzLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gRml4ZWQgYnVnIHdoZXJlIEluaXRTdWJJdGVtIHdhcyBkb2luZyBhIFplcm9NZW1vcnkgb24gdGhlIGl0ZW0uCgktIENsZWFuZWQgdXAgYSBzaXQgb2YgZXh0cmEgYmx1ZSBhdCB0aGUgZW5kIG9mIGEgRlVMTFJPV1NFTEVDVCBsaXN0IHZpZXcKCSAgaWYgdGhlcmUgaXMgb25seSBvbmUgY29sdW1uLgoJLSBDb3JyZWN0ZWQgYSBidWcgSSBpbnRyb2R1Y2VkIHdpdGggYW4gZWFybGllciBwYXRjaCB3aGljaCBjYXVzZWQKCSAgcHJvYmxlbXMgd2l0aCBtdWx0aXBsZSBzZWxlY3Rpb25zLgoKCSogZGxscy9kZHJhdy9jb252ZXJ0LmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU9uZSBvZiB0aGUgMjQvMzIgY29udmVydCBjb2xvciBtYXNrcyB3YXMgd3JvbmcuCgoJKiBkbGxzL3VzZXIvdXNlcjMyLnNwZWM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUdldFByb3BBL1cgaGF2ZSBzdHJpbmcgYXJncy4KCgkqIGlmMTYzMi90aHVuay5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBkbGxzLyovTWFrZWZpbGUuaW4sIGRsbHMvKi8qLnNwZWM6CglBZGRlZCBpbXBvcnRzIG9mIHVzZXIzMi9nZGkzMi9rZXJuZWwzMiB3aGVyZXZlciBuZWNlc3NhcnkuCgoyMDAwLTA4LTAxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS92ZXJzaW9uLmgsIEFOTk9VTkNFLCBDaGFuZ2VMb2c6CglSZWxlYXNlIDIwMDAwODAxLgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoyMDAwLTA4LTAxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS93aW5kZWYuaCwgaW5jbHVkZS93aW5udC5oLCBpbmNsdWRlL3dpbnVzZXIuaCwgaW5jbHVkZS93dHlwZXMuaDoKCUplcmVteSBXaGl0ZSA8andoaXRlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIFdNX1RDQVJEIGFuZCBEV09SRExPTkcuCgoJKiBkbGxzL2tlcm5lbC9mb3JtYXRfbXNnLmMsIHRvb2xzL3dtYy93cml0ZS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglQRV9NRVNTQUdFX0hFQURFUi5MZW5ndGggY29udGFpbnMgdGhlIGhlYWRlciBpdHNlbGYgdG9vLgoKCSogbWVtb3J5L3ZpcnR1YWwuYzogUGV0ZXIgR2FudGVuIDxwZXRlckBnYW50ZW4ub3JnPgoJQ29tbWl0dGluZyBhIHBhZ2Ugb2YgYSBzaGFyZWQgbWFwcGluZyBpbiBvbmUgcHJvY2VzcyBsZXRzIGl0IGFwcGVhcgoJY29tbWl0dGVkIGluIG90aGVyIHByb2Nlc3NlcywgdG9vLiBUbyBmYWtlIHRoaXMsIHdlIGNvbW1pdCB0aGVtIGFzCglzb29uIGFzIHRoZXkgYXJlIG1hcHBlZC4KCgkqIGluY2x1ZGUvd2lubnQuaCwgbWVtb3J5L2hlYXAuYzoKCVBldGVyIEdhbnRlbiA8cGV0ZXJAZ2FudGVuLm9yZz4KCU1vdmVkIFdpbmUgcHJpdmF0ZSBoZWFwIGNyZWF0aW9uIGZsYWdzIHRvIG90aGVyIHZhbHVlcy4KCVJldHVybiBzeXN0ZW0gaGVhcCB3aGVuIGEgc2hhcmVkIGhlYXAgaXMgcmVxdWVzdGVkLgoKCSogZmlsZXMvZGlyZWN0b3J5LmM6CglPbmx5IHNldCBDT01TUEVDIGlmIG5vdCBkZWZpbmVkIGFscmVhZHkuCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jLCBpbmNsdWRlL3dpbmUvdW5pY29kZS5oOgoJR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglDaGFuZ2VkIHRoZSB3aW4zMSBzdHlsZSBmaWxlIGRpYWxvZyB0byAzMiBiaXRzIHN0cnVjdHVyZXMgYW5kCgltZXNzYWdlcy4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzogU2VyZ2UgSXZhbm92CglBbmRyZXcgTGV3eWNreQoJSW1wcm92ZWQgZHJhd2luZyBvZiBpdGVtIHRleHQsIGFkZGVkIFNIT1dTRUxBTFdBWVMgY2FwYWJpbGl0eS4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCU1hdHRoZXcgTGFrZSA8TWFzdGVyUl9MQHlhaG9vLmNvbT4KCUZpeGVkIGEgc2VnZmF1bHQgcHJvYmxlbSB1c2luZyB0aGUgc3RhbmRhcmQgZmlsZSBvcGVuIGRpYWxvZyBib3guCgoJKiBmaWxlcy9kb3NfZnMuYywgZ3JhcGhpY3MvTWFrZWZpbGUuaW4sIGdyYXBoaWNzL3ZnYS5jLCBtc2Rvcy9NYWtlZmlsZS5pbiwgbXNkb3MvdmdhLmMsIG9iamVjdHMvZ2Rpb2JqLmM6CglNb3ZlZCBNdWxEaXYoKSBhbmQgVkdBIHJvdXRpbmVzIG91dCBvZiBHREkuCgoJKiBwcm9ncmFtcy93Y21kL0NoYW5nZUxvZywgcHJvZ3JhbXMvd2NtZC9SRUFETUUsIHByb2dyYW1zL3djbWQvYmF0Y2guYywgcHJvZ3JhbXMvd2NtZC9idWlsdGlucy5jLCBwcm9ncmFtcy93Y21kL2RpcmVjdG9yeS5jLCBwcm9ncmFtcy93Y21kL3djbWRtYWluLmMsIHByb2dyYW1zL3djbWQvd2NtZHJjLnJjOgoJRGF2ZSBQaWNrbGVzIDxkYXZlcEBjeXcudWtsaW51eC5uZXQ+CglBZGRlZCBzdXBwb3J0IGZvciBFUlJPUkxFVkVMLgoJTW9zdCBlcnJvcnMgcmVwb3J0ZWQgdmlhIEZvcm1hdE1lc3NhZ2UoKS4KCUNPUFkgY29tbWFuZCBub3cgd29ya3MgY29ycmVjdGx5IGlmIG91dHB1dCBzcGVjaWZpZXIgaXMgYSBkaXJlY3RvcnkuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6CglTdXNhbiBGYXJsZXkgPHNmYXJsZXlAY29kZXdlYXZlcnMuY29tPgoJTW9yZSBjb25zaXN0ZW50IGNhbGN1bGF0aW9uIG9mIGxpbmUgaGVpZ2h0LCBzY3JvbGxzIGEgZnVsbCBpdGVtIG9uCglsaW5lIHVwL2Rvd24uCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmMsIGluY2x1ZGUvbGlzdHZpZXcuaDoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglGaXhlZCBhIGZldyBidWdzIGluY2x1ZGluZyBvbmUgd2l0aCBzZXR0aW5nIGV4dGVuZGVkIHN0eWxlcyBhbmQKCWVkaXRpbmcgbGFiZWxzLgoJSW1wbGVtZW50ZWQgdGhlIExWU19FWF9GVUxMUk9XU0VMRUNUIGV4dGVuZGVkIHN0eWxlLgoJQmVnaW4gYW4gaW1wbGVtZW50YXRpb24gb2YgdmlydHVhbCBsaXN0IHZpZXdzIChMVlNfT1dORVJEQVRBIHN0eWxlCglzZXQpLgoKCSogaW5jbHVkZS9kZHJhdy5oOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglSZW1vdmVkIHVubmVjZXNzYXJ5IFgxMSBpbmNsdWRlcyBmcm9tIGRkcmF3LmguCgoJKiBsb2FkZXIvbW9kdWxlLmM6IFBldGVyIEdhbnRlbiA8cGV0ZXJAZ2FudGVuLm9yZz4KCVdpbkV4ZWMxNiBzaG91bGQgbm90IHNwbGl0IHF1b3RlZCBmaWxlbmFtZXMgd2l0aCBzcGFjZXMuCgoJKiBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYywgZGxscy93aW5pbmV0L3dpbmluZXQuc3BlYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnRlZCBJbnRlcm5ldENoZWNrQ29ubmVjdGlvbkEuCgoJKiBsb2FkZXIvZG9zL21vZHVsZS5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUZpeGVkIGFub3RoZXIgbm9uLUxpbnV4IGJ1aWxkIGZhaWx1cmUuCgoJKiBkbGxzL2NydGRsbC9jcnRkbGwuc3BlYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgMiBmb3J3YXJkIGVudHJpZXMuCgoJKiBkbGxzL2NvbWN0bDMyL3N0YXR1cy5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglSZW1vdmVkIHNvbWUgZmxpY2tlciBieSBkZXRlY3RpbmcgaWYgd2Ugc2V0IHRoZSBzYW1lIHZhbHVlIGFnYWluLgoKCSogY29udHJvbHMvbGlzdGJveC5jOiBHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCUNoYW5nZSBsb2dpYyBvZiBsaXN0Ym94IHJlc2l6aW5nIGZvciAxNiBiaXRzIGFwcHMgZm9yIGxpc3RzIHdpdGhvdXQKCUxCU19OT0lOVEVHUkFMSEVJR0hUIHN0eWxlLgoKCSogb2JqZWN0cy9kYy5jOiBQaGlsbGlwIEV6b2x0IDxlem9sdEBwZXJmLnprby5kZWMuY29tPgoJRml4ZWQgQ3JlYXRlREMgdG8gd29yayBwcm9wZXJseSB3aGVuIGl0IGlzIGNhbGxlZCB3aXRoIGEgZGV2aWNlLgoKCSogcHJvZ3JhbXMvd2NtZC9iYXRjaC5jLCBwcm9ncmFtcy93Y21kL2J1aWx0aW5zLmMsIHByb2dyYW1zL3djbWQvd2NtZC5oLCBwcm9ncmFtcy93Y21kL3djbWRtYWluLmM6CglKYXNvbiBFZG1lYWRlcyA8amFzb25AdGhlLWVkbWVhZGVzLmZzbmV0LmNvLnVrPgoJLSBTdXBwb3J0IHdoaXRlc3BhY2UgYXJvdW5kIGNvbW1hbmRzIGJldHRlciwgYW5kIHN1cHBvcnQgdGhlIEAKCSAgcHJlZml4IGJldHRlcgoJLSBFbmhhbmNlIHRoZSBzZXQgc3VwcG9ydCB0byB1bnNldCwgZGlzcGxheSB2YWx1ZSBlcnJvciBjb3JyZWN0bHkKCS0gRW5oYW5jZSB0aGUgY29tbWFuZCBsaW5lIHN1cHBvcnQgZm9yIHBhcm1zLCBhbmQgZW52IHZhciBleHBhbnNpb24KCS0gRW5oYW5jZSB0aGUgZWNobyBjb21tYW5kIHRvIG5vdCBsb29zZSB3aGl0ZXNwYWNlLCBhbmQgZGlzcGxheQoJICBvdXRwdXQgd2l0aCAlIHNpZ25zIGJldHRlcgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGluY2x1ZGUvcmVnc3RyLmgsIHByb2dyYW1zL01ha2VmaWxlLmluLCBwcm9ncmFtcy91bmluc3RhbGxlci8uY3ZzaWdub3JlLCBwcm9ncmFtcy91bmluc3RhbGxlci9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvdW5pbnN0YWxsZXIvUkVBRE1FLCBwcm9ncmFtcy91bmluc3RhbGxlci9tYWluLmMsIHByb2dyYW1zL3VuaW5zdGFsbGVyL21haW4uaCwgcHJvZ3JhbXMvdW5pbnN0YWxsZXIvcnNyYy5yYywgcHJvZ3JhbXMvdW5pbnN0YWxsZXIvdW5pbnN0YWxsZXIuc3BlYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJQWRkZWQgYW4gdW5pbnN0YWxsZXIgZm9yIEluc3RhbGxTaGllbGQsIFdJU0UgZXRjLgoKCSogd2luZG93cy94MTFkcnYvd25kLmM6CglKZWFuLUNsYXVkZSBCYXRpc3RhIDxqY2JAbWFjYWRhbWlhbi5jb20+CglQcm92aWRlIHBvc2l0aW9uIGhpbnRzIGZvciB3aW5kb3cgbWFuYWdlcnMuCgoyMDAwLTA3LTMxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZ3JhcGhpY3MveDExZHJ2L2luaXQuYywgaW5jbHVkZS9tb25pdG9yLmgsIGluY2x1ZGUvc3lzbWV0cmljcy5oLCBpbmNsdWRlL3R0eWRydi5oLCBpbmNsdWRlL3gxMWRydi5oLCBtaXNjL21haW4uYywgd2luZG93cy9tdWx0aW1vbi5jLCB3aW5kb3dzL3N5c21ldHJpY3MuYywgd2luZG93cy90dHlkcnYvaW5pdC5jLCB3aW5kb3dzL3VzZXIuYywgd2luZG93cy93aW4uYywgd2luZG93cy94MTFkcnYvaW5pdC5jLCB3aW5kb3dzL3gxMWRydi9tb3VzZS5jLCBkbGxzL2RkcmF3L2RkcmF3L2RnYS5jLCBkbGxzL2RkcmF3L2RkcmF3L2RnYTIuYywgZGxscy9kZHJhdy9kZHJhdy9tYWluLmMsIGRsbHMvZGRyYXcvZGRyYXcveDExLmMsIGRsbHMvZGRyYXcvZGlyZWN0M2QvbWFpbi5jLCBkbGxzL2RkcmF3L2RpcmVjdDNkL21lc2EuYywgZGxscy9kaW5wdXQvZGlucHV0X21haW4uYywgZGxscy9nZGkvd2luZy5jLCBkbGxzL3NoZWxsMzIvYnJzZm9sZGVyLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZGxscy90dHlkcnYvdHR5ZHJ2X21haW4uYywgZGxscy94MTFkcnYveDExZHJ2X21haW4uYywgZ3JhcGhpY3MvcGFpbnRpbmcuYywgZ3JhcGhpY3MvdHR5ZHJ2L2RjLmMsIGRsbHMvZGRyYXcvZGdhLmMsIGRsbHMvZGRyYXcvZGdhMi5jLCBkbGxzL2RkcmF3L2hlbHBlci5jLCBkbGxzL2RkcmF3L21haW4uYywgZGxscy9kZHJhdy94MTEuYzoKCUNsZWFuZWQgdXAgc29tZSBtb3JlIFVTRVIgZGVwZW5kZW5jaWVzLgoKCSogaW5jbHVkZS93aW5nZGkuaCwgaW5jbHVkZS93aW51c2VyLmg6CglNb3ZlZCBzeXN0ZW0gbWV0cmljcyBkZWZpbml0aW9ucyB0byB3aW51c2VyLmguCgoJKiBkZWJ1Z2dlci9zdGFjay5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVRpZHllZCB1cCBzdGFjayBiYWNrdHJhY2UgY29kZSBhIGJpdCwgYW5kIGFkZGVkIGEgc2ltcGxlIHNwZWNpYWwKCWNhc2UgZm9yIGJhY2t0cmFjaW5nIGZyb20gYSBudWxsIEVJUC4KCgkqIGZpbGVzL2ZpbGUuYywgc2VydmVyL2ZpbGUuYzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglGaXggZm9yIDY0LWJpdCBuZWdhdGl2ZSBzZWVrIHZhbHVlLgoKCSogaW5jbHVkZS9tb2R1bGUuaCwgbXNkb3MvaW50MmYuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJUmVtb3ZlZCBET1MgdGFzayBmaWVsZHMgZnJvbSB0aGUgTkVfTU9EVUxFIHN0cnVjdHVyZS4KCgkqIGxvYWRlci90YXNrLmM6CglTa2lwIHF1b3RlZCBwcm9ncmFtIG5hbWUgd2hlbiBidWlsZGluZyBjb21tYW5kIGxpbmUuCgoJKiBzY2hlZHVsZXIvcHJvY2Vzcy5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCURPUyBiaW5hcnkgc3VwcG9ydCBoYXMgYmVlbiByZXN0b3JlZC4KCgkqIGRlYnVnZ2VyL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwvdG9vbGhlbHAuYywgbWlzYy9NYWtlZmlsZS5pbiwgbWlzYy90b29saGVscC5jLCB3aW5kb3dzL3VzZXIuYzoKCU1vdmVkIHRvb2xoZWxwIGltcGxlbWVudGF0aW9uIGludG8ga2VybmVsMzIgZGxsLgoKCSogaW5jbHVkZS9wZV9pbWFnZS5oLCBsb2FkZXIvcGVfcmVzb3VyY2UuYywgbG9hZGVyL3Jlc291cmNlLmM6CglCYWNrZWQgb3V0IEZpbmRSZXNvdXJjZSBsYW5ndWFnZSBwYXRjaC4KCgkqIGxvYWRlci9kb3MvZG9zdm0uYywgbXNkb3MvaW50MDkuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRml4ZWQgYSBmZXcgcHJvYmxlbXMuCgoJKiBkbGxzL2tlcm5lbC9tZXNzYWdlcy93aW5lcnJfZW51Lm1jOgoJRGF2ZSBQaWNrbGVzIDxkYXZlcEBjeXcudWtsaW51eC5uZXQ+CglBZGRlZCB0ZXh0IGZvciBhbGwgbWVzc2FnZXMgaW5jbHVkZWQgaW4gd2luOTUgYW5kIHdpbk5ULgoKCSogZGxscy9rZXJuZWwvZm9ybWF0X21zZy5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCB7IH0gYXJvdW5kIHN0dWZmIGluIEFERF9UT19UIG1hY3Jvcy4KCgkqIGluY2x1ZGUvZG9zZXhlLmgsIGxvYWRlci9kb3MvbW9kdWxlLmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUNvbnZlcnQgRE9TIChNWikgYmluYXJ5IGxvYWRlciB0byB0aGUgbmV3IERPUyBwcm9jZXNzIG1vZGVsLgoKCSogbXNkb3MvZHBtaS5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVVzZSBNWl9DdXJyZW50KCkgaW5zdGVhZCBvZiBwTW9kdWxlLT5scERvc1Rhc2suIENsZWFuZWQgdXAgdGhlIFJNQ0IzMgoJYXNzZW1ibHkgY29kZSBhIGJpdCwgYW5kIHdyYXBwZWQgaXQgaW4gI2lmZGVmIF9faTM4Nl9fLgoKMjAwMC0wNy0zMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGlmMTYzMi90aHVuay5jLCBpbmNsdWRlL2NhbGxiYWNrLmgsIGluY2x1ZGUva2V5Ym9hcmQuaCwgbG9hZGVyL2Rvcy9kb3N2bS5jLCBtaXNjL21haW4uYywgb2JqZWN0cy9iaXRtYXAuYywgb2JqZWN0cy9kaWIuYywgb2JqZWN0cy9wYWxldHRlLmMsIHdpbmRvd3Mva2V5Ym9hcmQuYzoKCUNsZWFuZWQgdXAgYSBmZXcgVVNFUiBkZXBlbmRlbmNpZXMuCgoJKiBpbmNsdWRlL2Rvc2V4ZS5oLCBsb2FkZXIvZG9zL21vZHVsZS5jLCBtc2Rvcy9kcG1pLmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVJlbW92ZWQgaE1vZHVsZSBwYXJhbWV0ZXIgZnJvbSBNWl9BbGxvY0RQTUlUYXNrKCksIGFuZCByZW5hbWVkCglNWl9LaWxsTW9kdWxlKCkgdG8gTVpfS2lsbFRhc2soKS4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJQ3JlYXRlIGRsbC9rZXJuZWwvbWVzc2FnZXMgZGlyZWN0b3J5LgoKCSogaW5jbHVkZS9taXNjZW11LmgsIG1zZG9zL2Rvc21lbS5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglNYWRlIERPU01FTV9Jbml0KCkgdGFrZSBhIEJPT0wgcGFyYW1ldGVyIGluc3RlYWQgb2YgYSBITU9EVUxFMTYsIGFuZAoJaW5pdGlhbGl6ZSBET1MgbWVtb3J5IHByb3Blcmx5IGluIHRoZSBuZXcgcHJvY2VzcyBtb2RlbC4gTWFkZQoJRE9TTUVNX01lbW9yeUJhc2UoKSB1c2UgTVpfQ3VycmVudCgpLT5pbWcgaW5zdGVhZCBvZiBwTW9kdWxlLT5kb3NfaW1hZ2UuCgoJKiBsb2FkZXIvdGFzay5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVJlbW92ZWQgdXNhZ2Ugb2Ygb2Jzb2xldGUgcE1vZHVsZS0+bHBEb3NUYXNrLgoKMjAwMC0wNy0yOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbnVzZXIuaCwgbG9hZGVyL3Jlc291cmNlLmMsIG1lbW9yeS9hdG9tLmMsIG1lbW9yeS9lbnZpcm9uLmMsIG1pc2MvY29tbS5jLCBtaXNjL2xzdHIuYywgb2JqZWN0cy9nZGlvYmouYywgb2JqZWN0cy9yZWdpb24uYywgb2JqZWN0cy90ZXh0LmMsIHJlbGF5MzIvYnVpbHRpbjMyLmMsIHJlbGF5MzIvc25vb3AuYywgd2luMzIvZGV2aWNlLmMsIHdpbjMyL2V4Y2VwdC5jLCBkZWJ1Z2dlci93aW5lZGJnLmMsIGRsbHMvY3J0ZGxsL2NydGRsbC5zcGVjLCBkbGxzL2NydGRsbC9jcnRkbGxfbWFpbi5jLCBncmFwaGljcy9wYWludGluZy5jLCBncmFwaGljcy94MTFkcnYveGZvbnQuYywgaWYxNjMyL3Nub29wLmM6CglSZW1vdmVkIHNvbWUgdW5uZWNlc3NhcnkgaW5jbHVzaW9ucyBvZiB3aW5nZGkuaCBhbmQgd2ludXNlci5oCgoJKiBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jLCBkbGxzL250ZGxsL250LmMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy9udGRsbC9vbS5jLCBkbGxzL250ZGxsL3JlZy5jLCBkbGxzL250ZGxsL3J0bC5jLCBkbGxzL250ZGxsL3J0bHN0ci5jLCBkbGxzL250ZGxsL3NlYy5jLCBkbGxzL250ZGxsL3N5bmMuYywgZGxscy9udGRsbC90aW1lLmMsIGluY2x1ZGUvbnRkZGsuaCwgbG9hZGVyL21vZHVsZS5jOgoJUmVtb3ZlZCBhIGZldyBleHRlcm5hbCBkZXBlbmRlbmNpZXMgZnJvbSBudGRsbC4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzIuc3BlYywgZGxscy9vbGVhdXQzMi9zdHVicy5jLCBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgQ3JlYXRlVHlwZUxpYixMSGFzaFZhbE9mTmFtZVN5cyBzdHVicy4KCUNoZWNrIGZvciBjb3JyZWN0IHN0cnVjdCBtYWdpYyBiZWZvcmUgcmVhZGluZyBvdXQgb2YgaXQuCgoJKiBkbGxzL2NvbWN0bDMyL01ha2VmaWxlLmluLCBkbGxzL2NvbWN0bDMyL2NvbWN0bDMyLnNwZWMsIGRsbHMvY29tY3RsMzIvc21vb3Roc2Nyb2xsLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUltcGxlbWVudGVkIFNtb290aFNjcm9sbFdpbmRvdy4KCgkqIG1zZG9zL2Rvc21lbS5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUZpbGwgQklPUyBzZWdtZW50cyB1c2luZyBwb2ludGVycyBmcm9tIERPU01FTV9CaW9zKiBmdW5jdGlvbnMsIGluc3RlYWQKCW9mIHBvaW50ZXJzIGZyb20gZ2xvYmFsIGhlYXAgZnVuY3Rpb25zLgoKCSogZGxscy9rZXJuZWwvZm9ybWF0X21zZy5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglHZXQgcmlkIG9mIFVTRVIzMiBmdW5jdGlvbnMgaW4gS0VSTkVMMzIuCgoJKiBpbmNsdWRlL2Rvc2V4ZS5oLCBsb2FkZXIvZG9zL2Rvc3ZtLmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUFkZGVkIHN1cHBvcnQgZm9yIHRoZSBXaW4zMiBDb25zb2xlIGludGVyZmFjZSB0byB0aGUgbWFpbiBET1NWTSBldmVudAoJbG9vcC4gQ2xlYW5lZCB1cCBldmVudCBkaXNwYXRjaGluZyBjb2RlIGEgYml0LgoKCSogbXNkb3MvaW50MjEuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglNYWtlIGRpcmVjdCBjb25zb2xlIGlucHV0IHJvdXRpbmVzIGdvIHRocm91Z2ggaW50MTYsIHJhdGhlciB0aGFuCglyZWFkaW5nIGRpcmVjdGx5IGZyb20gdGhlIGNvbnNvbGUgZHJpdmVyLgoKCSogcHJvZ3JhbXMvbm90ZXBhZC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvb3N2ZXJzaW9uY2hlY2svTWFrZWZpbGUuaW4sIHByb2dyYW1zL3Byb2dtYW4vTWFrZWZpbGUuaW4sIHByb2dyYW1zL3djbWQvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmhlbHAvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbnZlci9NYWtlZmlsZS5pbiwgbGlidGVzdC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvY2xvY2svTWFrZWZpbGUuaW4sIHByb2dyYW1zL2NvbnRyb2wvTWFrZWZpbGUuaW46CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCW9sZTMyIG5vdyByZXF1aXJlcyBsaW5raW5nIHdpdGgga2VybmVsMzIKCXNoZWxsMzIgbm93IHJlcXVpcmVzIGxpbmtpbmcgd2l0aCBrZXJuZWwzMiBhbmQgc2hsd2FwaQoKCSogZGxscy93aW5hc3BpL3dpbmFzcGkxNi5jLCBkbGxzL3dpbnNvY2svc29ja2V0LmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglXZSBhbHdheXMgaGF2ZSBzdHJlcnJvciwgc28gbm8gbmVlZCB0byBpZmRlZiBIQVZFX1NUUkVSUk9SLgoKCSogd2luZG93cy93aW4uYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUluaXRpYWxpemUgaHJnblduZC4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUZpeCB0aGUgR0xFWFQgZnVuY3Rpb24gcHJvdG90eXBlIHR5cGVkZWZzIGRldGVjdGlvbi4KCgkqIGxvYWRlci9kb3MvZG9zdm0uYywgbXNkb3MvaW50MDkuYywgbXNkb3MvaW9wb3J0cy5jLCBpbmNsdWRlL21pc2NlbXUuaDoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJTGV0IEludDA5IHJvdXRpbmVzIHJlbWVtYmVyIGEga2V5c3Ryb2tlJ3MgQVNDSUkgY29kZSwgaWYgYXZhaWxhYmxlLgoKCSogbXNkb3MvaW50MzMuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglBZGRlZCBzb21lIGludDMzIGZ1bmN0aW9uIHN0dWJzLgoKCSogbXNkb3MvaW50MTAuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglDaGFuZ2VkIGEgZmV3IGNvcmUgaW50MTAgcm91dGluZXMgdG8gdXNlIHRoZSBCSU9TIGRhdGEgc2VnbWVudCBjdXJzb3IKCXBvc2l0aW9ucyBhbmQgdGhlIFZHQSByb3V0aW5lcywgaW5zdGVhZCBvZiBkaXJlY3RseSBhY2Nlc3NpbmcgdGhlCgljb25zb2xlIGRyaXZlci4KCgkqIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL29sZTMyLnNwZWM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUltcGxlbWVudGVkIE9sZUdldEF1dG9Db252ZXJ0LgoKCSogaW5jbHVkZS9wZV9pbWFnZS5oLCBsb2FkZXIvcGVfcmVzb3VyY2UuYywgbG9hZGVyL3Jlc291cmNlLmMsIG1pc2MvbWFpbi5jLCBvbGUvb2xlMm5scy5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglGaW5kUmVzb3VyY2VFeEEvVyBzaG91bGQgc2VhcmNoIGZvciB0aGUgc3BlY2lmaWVkIGxhbmd1YWdlIHJlc291cmNlIG9ubHkuCglGaW5kUmVzb3VyY2VBL1cgc2hvdWxkIHNlYXJjaCBmb3IgYW55IGxhbmd1YWdlIHJlc291cmNlLgoKCSogaW5jbHVkZS90c194bGliLmgsIHRzeDExL1gxMV9jYWxscywgdHN4MTEvdHNfeGxpYi5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL3gxMS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglObyBsb25nZXIgY3Jhc2ggd2hlbiBydW5uaW5nIHdpdGggRGlyZWN0RHJhdyB3aXRoIGEgRERDbGlwcGVyIGluCgktZGVza3RvcCBtb2RlLgoKCSogd2luZG93cy9ub25jbGllbnQuYzoKCUZyYW5jb2lzIEJvaXN2ZXJ0IDxmcmFuY29pc0BtYWNhZGFtaWFuLmNvbT4KCU5DX0RvTkNIaXRUZXN0IG5vdyByZXR1cm5zIEhUTk9XSEVSRSBsaWtlIFdpbmRvd3MgaXMgZG9pbmcgd2hlbgoJY2xpY2tpbmcgb24gYSB3aW5kb3cgaGF2aW5nIGEgY3VzdG9taXplIG5vbiBjbGllbnQgYXJlYS4KCjIwMDAtMDctMjggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBncmFwaGljcy94MTFkcnYvZGliLmMsIGluY2x1ZGUveDExZHJ2Lmg6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUFkZCBYMTFEUlZfRElCX1VwZGF0ZURJQlNlY3Rpb24yIHRoYXQgdGFrZXMgYSBIQklUTUFQIHBhcmFtZXRlci4KCgkqIG1lbW9yeS9jb2RlcGFnZS5jOgoJV29sZmdhbmcgU2Nod290emVyIDx3b3NjaHdvdEBnbXgubmV0PgoJQWRkZWQgTlVMTCBwb2ludGVyIGNoZWNrcy4KCgkqIGluY2x1ZGUvYWNjb25maWcuaCwgaW5jbHVkZS9jb25maWcuaC5pbiwgaW5jbHVkZS90c19zaGFwZS5oLCBpbmNsdWRlL3R0eWRydi5oLCBpbmNsdWRlL3dpbi5oLCBpbmNsdWRlL3gxMWRydi5oLCB0b29scy9tYWtlX1gxMXdyYXBwZXJzLCB0c3gxMS9NYWtlZmlsZS5pbiwgdHN4MTEvWDExX2NhbGxzLCB0c3gxMS90c19zaGFwZS5jLCB3aW5kb3dzL3R0eWRydi9pbml0LmMsIHdpbmRvd3MvdHR5ZHJ2L3duZC5jLCB3aW5kb3dzL3dpbnBvcy5jLCB3aW5kb3dzL3gxMWRydi9pbml0LmMsIHdpbmRvd3MveDExZHJ2L3duZC5jLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy94MTFkcnYveDExZHJ2X21haW4uYzoKCUZyYW5jb2lzIEphY3F1ZXMgPGZyYW5jb2lzakBtYWNhZGFtaWFuLmNvbT4KCS0gaW1wbGVtZW50YXRpb24gb2YgU2V0V2luZG93c1JnbiBhbmQgR2V0V2luZG93UmduCgktIFgxMURSViBhbmQgVFRZRFJWIHVwZGF0ZWQgd2l0aCBuZXcgQVBJIFNldFdpbmRvd1JnbgoKCSogaW5jbHVkZS9taXNjZW11LmgsIGluY2x1ZGUvd2lubnQuaCwgbG9hZGVyL2Rvcy9tb2R1bGUuYywgbWVtb3J5L2dsb2JhbC5jLCBtc2Rvcy9kb3NtZW0uYywgbXNkb3MvZHBtaS5jLCBtc2Rvcy9pbnQyMS5jLCBtc2Rvcy9pbnRlcnJ1cHRzLmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVJlbW92ZWQgdGhlIGhNb2R1bGUgcGFyYW1ldGVyIGZyb20gdmFyaW91cyBET1NNRU0gcm91dGluZXMsIHRoZSBET1NNRU0KCXJvdXRpbmVzIG5vdyBhbHdheXMgdXNlIHRoZSBjdXJyZW50IG1lbW9yeSBzcGFjZS4KCgkqIGluY2x1ZGUvc2hsd2FwaS5oOiBQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgd2FybmluZ3MuCgoJKiB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5kYXQsIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9zaGx3YXBpLmFwaToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJTWlub3IgQVBJIGZpbGVzIHVwZGF0ZS4KCgkqIHRvb2xzL3dtYy9tY3kueTogUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglTb2xhcmlzIHNwZWNpZmljIGZpeGVzLgoKCSogd2luZG93cy94MTFkcnYvZXZlbnQuYywgd2luZG93cy9kZWZ3bmQuYzoKCVN0ZXBoYW5lIEx1c3NpZXIgPHN0ZXBoYW5lQG1hY2FkYW1pYW4uY29tPgoJTm93IHRoZSBzZXJ2aWNlIHRocmVhZCBpcyBubyBtb3JlIGluIGNoYXJnZSBvZiBlcmFzaW5nIHRoZSBiYWNrZ3JvdW5kCglvZiB0aGUgV2luZG93LiBTZXJ2aWNlIHRocmVhZCBpcyBkb2luZyB0aGUgaW52YWxpZGF0aW9uIHBhcnQsIGFuZCB0aGUKCWFwcGxpY2F0aW9uIHRocmVhZCBpcyBkb2luZyB0aGUgZXJhc2luZyBwYXJ0LiBBbGwgdGhpcyBoYXMgYmVlbgoJaW1wbGVtZW50ZWQgdXNpbmcgV01fU1lOQ1BBSU5UIG1lc3NhZ2UuCgoJKiBkbGxzL29sZTMyL29sZTJzdHVicy5jLCBkbGxzL29sZTMyL29sZTMyLnNwZWM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCUFkZGVkIHN0dWIgZm9yIE9MRTMyLk9sZVNldEF1dG9Db252ZXJ0IG5lZWRlZCBieSBBZG9iZSBQaG90b3Nob3AgNC4wLgoKCSogd2luZG93cy94MTFkcnYvZXZlbnQuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJRG8gbm90IGNyYXNoIGlmIHdpbmRvdyB3YXMgbm90IGZvdW5kLgoKCSogd2luZG93cy9kaWFsb2cuYywgd2luZG93cy9wYWludGluZy5jOgoJU3RlcGhhbmUgTHVzc2llciA8c3RlcGhhbmVAbWFjYWRhbWlhbi5jb20+CgktIFVwZGF0ZVdpbmRvdyBzaG91bGQgcmVmcmVzaCBhbGwgY2hpbGRyZW4gdGhhdCBoYXZlIGFuIHVwZGF0ZSByZWdpb24uCgktIEluIERJQUxPR19DcmVhdGVJbmRpcmVjdCBVcGRhdGVXaW5kb3cgc2hvdWxkbid0IGJlIGNhbGxlZC4gV2luZSB3aWxsIGdlbmVyYXRlCgkgIGEgV01fUEFJTlQgZXZlbnR1YWxseSBmb3IgdGhlIGRpYWxvZywgbm8gbmVlZCB0byBmb3JjZSBhIHBhaW50IHJpZ2h0IGF3YXkuCgkoYmFzZWQgb24gYSBwYXRjaCBmcm9tIEphbWVzIEhhdGhld2F5IGluIHRoZSBDb3JlbCB0cmVlKQoKCSogbXNkb3MvaW50MjEuYywgbXNkb3MvaW50MmYuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJSnVzdCBnZXQgRE9TIHRhc2sgc3RydWN0dXJlIGZyb20gTVpfQ3VycmVudCgpLCBpbnN0ZWFkIG9mIChjbHVtc2lseSkKCXRyeWluZyB0byBmaW5kIGFuZCByZWFkIGZyb20gdGhlIGN1cnJlbnQgdGFzaydzIG1vZHVsZSBzdHJ1Y3R1cmVzLgoKCSogbXNkb3MvZHBtaS5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCU1ha2UgYSBnbG9iYWwgYXNtIGhlbHBlciBmdW5jdGlvbiB0byBoYW5kbGUgMzItYml0IFJNQ0IgY2FsbHMsIHNvIHdlCglkb24ndCBuZWVkIHRob3NlIGNvbXBsZXggY29uc3RyYWludHMgZWl0aGVyLgoKCSogd2luZG93cy9tZXNzYWdlLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQWx3YXlzIGdldCBhIGhhcmR3YXJlIG1lc3NhZ2UgZnJvbSB0aGUgc3lzdGVtIHF1ZXVlIGluIFBlZWtNZXNzYWdlLAoJZXZlbiBpZiBubyBzdWNoIHdha2UgYml0cyBhcmUgc2V0LCBiZWNhdXNlIGluIGEgUGVla01lc3NhZ2UgbG9vcCwKCXRoZXJlJ3Mgbm8gc2xlZXBpbmcsIHNvIHRoZSBuZWNlc3Nhcnkgd2FrZSBiaXRzIGFyZSBuZXZlciBzZXQuLi4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlZm9udC5jLCBpbmNsdWRlL29sZWN0bC5oOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJQWRkIENvbm5lY3Rpb24gUG9pbnQgc3VwcG9ydCB0byBPTEUgZm9udCBvYmplY3RzLgoJQWRkIHNvbWUgbW9yZSBUUkFDRSgpcy4KCgkqIGRsbHMvKi8qLnNwZWM6CglBZGRlZCAnb3duZXInIGZpZWxkIHRvIDE2LWJpdCBzcGVjIGZpbGVzIHRvIHNwZWNpZnkgdGhlIG5hbWUgb2YgdGhlCgkzMi1iaXQgZGxsIHRoYXQgY29udGFpbnMgaXQuCgoyMDAwLTA3LTI2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy93aW5tbS9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS9zb3VuZC5zcGVjLCBkbGxzL3dpbm1tL3NvdW5kMTYuYywgaW5jbHVkZS9zdHJlc3MuaCwgaW5jbHVkZS93aW5lL3dpbmVzb3VuZC5oLCBNYWtlLnJ1bGVzLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL3N0cmVzcy5jLCBkbGxzL2tlcm5lbC9zdHJlc3Muc3BlYywgZGxscy9zZXR1cGFwaS8uY3ZzaWdub3JlLCBkbGxzL3NldHVwYXBpL01ha2VmaWxlLmluLCBkbGxzL3NldHVwYXBpL3NldHVweC5zcGVjLCBkbGxzL3NldHVwYXBpL3NldHVweF9tYWluLmM6CglNZXJnZWQgc2V0dXB4LmRsbCBpbnRvIHNldHVwYXBpLmRsbC4KCU1lcmdlZCBzb3VuZC5kbGwgaW50byB3aW5tbS5kbGwuCglNZXJnZWQgc3RyZXNzLmRsbCBpbnRvIGtlcm5lbDMyLmRsbC4KCgkqIGRsbHMvZGNpbWFuMzIvTWFrZWZpbGUuaW4sIGRsbHMvZGNpbWFuMzIvZGNpbWFuX21haW4uYywgZGxscy9kcGxheS9NYWtlZmlsZS5pbiwgZGxscy9kcGxheS9kcGxheV9tYWluLmMsIGRsbHMvbXNuZXQzMi9NYWtlZmlsZS5pbiwgZGxscy9tc25ldDMyL21zbmV0X21haW4uYywgZGxscy9zaGZvbGRlci9NYWtlZmlsZS5pbiwgZGxscy9zaGZvbGRlci9zaGZvbGRlci5zcGVjLCBkbGxzL3NoZm9sZGVyL3NoZm9sZGVyX21haW4uYywgZGxscy93b3czMi9NYWtlZmlsZS5pbiwgZGxscy93b3czMi93b3dfbWFpbi5jOgoJQWRkZWQgYSBmZXcgZW1wdHkgc291cmNlIGZpbGVzIHNvIHRoYXQgZWFjaCBkbGwgaGFzIGF0IGxlYXN0IG9uZSBDCglmaWxlLgoKCSogZGxscy93aW5tbS9tY2lzZXEvbWNpbWlkaS5jLCBkbGxzL3dpbm1tL21jaXdhdmUvbWNpd2F2ZS5jLCBkbGxzL3dpbm1tL21pZGltYXAvbWlkaW1hcC5jLCBkbGxzL3dpbm1tL3dhdmVtYXAvd2F2ZW1hcC5jLCBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYywgZGxscy93aW5tbS93aW5lb3NzL21pZGkuYywgZGxscy93aW5tbS93aW5lb3NzL21peGVyLmMsIGRsbHMvd2lubW0vd2luZW9zcy9tbWF1eC5jLCBkbGxzL3dpbm1tL3dpbmVvc3Mvb3NzLmMsIGluY2x1ZGUvZHJpdmVyLmgsIGluY2x1ZGUvbW1zeXN0ZW0uaCwgaW5jbHVkZS9tc2FjbS5oLCBpbmNsdWRlL3Zmdy5oLCBwcm9ncmFtcy9hdml0b29scy9pY2luZm8uYywgd2luZG93cy9kcml2ZXIuYywgZGxscy9jb21jdGwzMi9hbmltYXRlLmMsIGRsbHMvbXNhY20vZHJpdmVyLmMsIGRsbHMvbXNhY20vaW50ZXJuYWwuYywgZGxscy9tc3ZpZGVvL2RyYXdkaWIuYywgZGxscy9tc3ZpZGVvL21zdmlkZW9fbWFpbi5jLCBkbGxzL3dpbm1tL2pveXN0aWNrLmMsIGRsbHMvd2lubW0vam95c3RpY2svam95c3RpY2suYywgZGxscy93aW5tbS9sb2x2bGRydi5jLCBkbGxzL3dpbm1tL21jaS5jLCBkbGxzL3dpbm1tL21jaWFuaW0vbWNpYW5pbS5jLCBkbGxzL3dpbm1tL21jaWF2aS9tY2lhdmkuYywgZGxscy93aW5tbS9tY2ljZGEvbWNpY2RhLmMsIGRsbHMvd2lubW0vbW1zeXN0ZW0uYywgZGxscy9hdmlmaWwzMi9hdmlmaWxlLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCS0gcmVtb3ZlZCAobm93IG9ic29sZXRlKSBkcml2ZXIuaCBmaWxlIChpdCdzIGNvbnRlbnQgaXMgbm93IGluIG1tc3lzdGVtLmgpCgktIHVwZ3JhZGVkIHZmdy5oIGNvbnRlbnQKCgkqIG1zZG9zL2RwbWkuYzogQXZvaWQgY2xvYmJlcmluZyAlZWJ4LgoKCSogbG9hZGVyL25lL21vZHVsZS5jOgoJUmV0dXJuIHRoZSBwcm9wZXIgZXJyb3IgY29kZSB3aGVuIGEgMTYtYml0IHRhc2sgZmFpbGVkIHRvIHN0YXJ0CgkodGhhbmtzIHRvIFBldGVyIEdhbnRlbikuCgoJKiBkb2N1bWVudGF0aW9uL0hPV1RPLXdpbmVsaWI6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCUFkYXB0ZWQgdG8gdGhlIHJlY2VudCB3aW5lYnVpbGQgcmVuYW1lLgoKCSogbG9hZGVyL21vZHVsZS5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglBZGRlZCBkZXRlY3Rpb24gY29kZSBmb3IgdmVyeSBvbGQgV2luZG93cyAoMS4xLCAyLjAsIC4uLikgYmluYXJpZXMgdG8KCU1PRFVMRV9HZXRCaW5hcnlUeXBlKCkuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxyZWcuYywgZGxscy9zaGVsbDMyL3NoZWxsc3RyaW5nLmMsIGRsbHMvc2hsd2FwaS9NYWtlZmlsZS5pbiwgZGxscy9zaGx3YXBpL29yZGluYWwuYywgZGxscy9zaGx3YXBpL3BhdGguYywgZGxscy9zaGx3YXBpL3JlZy5jLCBkbGxzL3NobHdhcGkvcmVnc3RyZWFtLmMsIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWMsIGRsbHMvc2hsd2FwaS9zaGx3YXBpX21haW4uYywgZGxscy9zaGx3YXBpL3N0cmluZy5jLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW4sIGRsbHMvc2hlbGwzMi9yZWdzdHJlYW0uYywgZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jOgoJTW92ZWQgc2hsd2FwaSByb3V0aW5lcyBmcm9tIHNoZWxsMzIuZGxsIHRvIHNobHdhcGkuZGxsLgoKMjAwMC0wNy0yNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIE1ha2UucnVsZXMuaW4sIE1ha2VmaWxlLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy9NYWtlZGxsLnJ1bGVzLmluLCBzZXJ2ZXIvTWFrZWZpbGUuaW4sIHNlcnZlci9hdG9tLmMsIHNlcnZlci9yZWdpc3RyeS5jLCBzZXJ2ZXIvdW5pY29kZS5jLCBzZXJ2ZXIvdW5pY29kZS5oLCB0b29scy93bWMvTWFrZWZpbGUuaW4sIHVuaWNvZGUvLmN2c2lnbm9yZSwgdW5pY29kZS9NYWtlZmlsZS5pbjoKCU1ha2UgdW5pY29kZS5vIGludG8gYSBzZXBhcmF0ZSBFTEYgbGlicmFyeSBzbyB0aGF0IHdlIGNhbiB1c2UgaXQgZnJvbQoJdGhlIHdpbmVzZXJ2ZXIgdG9vLgoKCSogZmlsZXMvZHJpdmUuYywgaW5jbHVkZS9jZHJvbS5oLCBtaXNjL2Nkcm9tLmMsIG1zZG9zL2ludDJmLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCS0gZml4ZWQgYSBncm9zcyBidWcgaW4gU2V0Q3VycmVudERpcmVjdG9yeUEgKHdoZXJlIGNoYW5naW5nIHRvIGEgbmV3CgkgIG5vbi1leGlzdGVudCBkaXJlY3Rvcnkgd291bGQgbGVhdmUgdGhlIG5ldyBkcml2ZSBlbmFibGVkIHVwb24gYWJvcnRpbmcKCSAgKGZpeGVzIEN1dGVGVFAgaW5zdGFsbCBhbmQgc2hvdWxkIGZpeCBNQU5ZIGFwcHMpCgkgIFRoaXMgaGFzIHByb2JhYmx5IGJlZW4gY2F1c2VkIGJ5IG15c2VsZi4gKmJyb3ducGFwZXJiYWcqCgktIGFkZGVkIEdldFZvbHVtZUluZm9ybWF0aW9uIHNlcmlhbCBudW1iZXIgYnVnLWZvci1idWcgY29tcGF0aWJpbGl0eQoJLSBjb3JyZWN0ZWQgVW5pY29kZSBsYWJlbHMgKGJldHRlciBDRC1ST00gaGFuZGxpbmcgaW4gZ2VuZXJhbCkKCS0gbW92ZWQgQ0QtUk9NIGxhYmVsIGRldGVjdGlvbiBjb2RlIHRvIG1pc2MvY2Ryb20uYwoJLSBwb3NzaWJsZSB0byB1c2UgbG9vcGJhY2sgbW91bnRlZCBJU085NjYwIGZpbGVzCgktIGluaXQgc29tZSB1bmluaXRpYWxpc2VkIGRyaXZlIGZpZWxkcwoJLSByZW1vdmUgc29tZSB1bm5lY2Vzc2FyeSBoZWFkZXIgaW5jbHVkZXMKCgkqIHdpbmRvd3Mvd2lucG9zLmM6CglTdXNhbiBGYXJsZXkgPHNmYXJsZXlAY29kZXdlYXZlcnMuY29tPgoJRG9uJ3QgZGVzdHJveSB0aGUgY2FyZXQgb24gU1dQX0hJREVXSU5ET1cuCgoJKiBkbGxzL2tlcm5lbC8uY3ZzaWdub3JlLCBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwvZm9ybWF0X21zZy5jLCBkbGxzL2tlcm5lbC9rZXJuZWwucmMsIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGRsbHMva2VybmVsL21lc3NhZ2VzLy5jdnNpZ25vcmUsIGRsbHMva2VybmVsL21lc3NhZ2VzL3dpbmVycl9lbnUubWMsIGxvYWRlci9yZXNvdXJjZS5jLCBtaXNjL2xzdHIuYzoKCURhdmUgUGlja2xlcyA8ZGF2ZXBAY3l3LnVrbGludXgubmV0PgoJSW1wcm92ZWQgRm9ybWF0TWVzc2FnZToKCS0gQWRkZWQgZnVsbCBzdXBwb3J0IGZvciBGT1JNQVRfTUVTU0FHRV9GUk9NX1NZU1RFTQoJLSBJbXBsZW1lbnRlZCBsYW5ndWFnZSBzZWFyY2ggYXMgZG9jdW1lbnRlZAoJLSBJbGxlZ2FsIGNvbWJpbmF0aW9ucyBvZiBvcHRpb25zIHRyYXBwZWQuCgktIE1lc3NhZ2UgdGFibGUgZm9yIHN5c3RlbSBtZXNzYWdlcyBhZGRlZC4KCgkqIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbnVzZXIuaDoKCU1vdmVkIEZPUk1BVF9NRVNTQUdFIGZsYWdzIGRlZmluaXRpb24gdG8gd2luYmFzZS5oLgoKCSogTWFrZS5ydWxlcy5pbjoKCUFkZGVkIHJ1bGVzIGZvciBtZXNzYWdlIGNvbXBpbGVyIC5tYyBmaWxlcy4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYywgZGxscy93c29jazMyL3NvY2tldC5jLCBkbGxzL3dzb2NrMzIvd3Njb250cm9sLmg6CglKYW1lcyBIYXRoZXdheSA8amFtZXNAbWFjYWRhbWlhbi5jb20+CglQb3J0YWJpbGl0eSBmaXhlcy4KCgkqIGRsbHMvcnBjcnQ0L3JwY3J0NF9tYWluLmMsIGRsbHMvc2VyaWFsdWkvc2VyaWFsdWkuc3BlYywgbWlzYy9jb21tLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIGlzc3VlcyBmb3VuZCBieSB3aW5hcGlfY2hlY2suCgoJKiB0b29scy93aW5hcGlfY2hlY2svd2luMzIvcmFzYXBpMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvcnBjcnQ0LmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3NlcmlhbHVpLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3dzMl8zMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLmRhdCwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjE2L3NldHVweC5hcGk6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCU1pbm9yIEFQSSBmaWxlcyB1cGRhdGUuCgoJKiB0b29scy93cmMvQ0hBTkdFUywgdG9vbHMvd3JjL01ha2VmaWxlLmluLCB0b29scy93cmMvUkVBRE1FLndyYywgdG9vbHMvd3JjL3BhcnNlci55LCB0b29scy93cmMvdXRpbHMuYywgdG9vbHMvd3JjL3dyYy5oLCB0b29scy93cmMvd3JjLm1hbjoKCUJlcnRobyBTdHVsdGllbnMgPGJlcnRob0Bha2hwaGQuYXUuZGs+CgktIEltcGxlbWVudGVkIGEgYnVnLXdvcmstYXJvdW5kIGZvciBCZXJrZWxleSB5YWNjIChieWFjYykgd2hpY2gKCSAgZG9lcyBub3QgZ2VuZXJhdGUgcHJvcGVyIGRlZmF1bHQgdHJhbnNpdGlvbiBydWxlcyBmb3Igbm9uLXRlcm1pbmFscy4KCSAgU2VlIGNvbW1lbnRzIGluIHBhcnNlci55IGhvdyB0aGUgZml4IHdvcmtzLgoJLSBDaGFuZ2VkIHRoZSBlcnJvci1saW5lL2NoYXIgcG9zaXRpb24gdG8gbWFrZSBlbWFjcyBoYXBweSBwYXJzaW5nCgkgIHRoZSBwb3NpdGlvbiBvZiB0aGUgZXJyb3IuCgktIEFkZGVkIGNvbW1lbnRzIGluIHRoZSBkb2N1bWVudGF0aW9uIGluIHdoaWNoIG9yZGVyIHRoZSBsaW5lLW51bWVyCgkgIGFuZCBjaGFyYWN0ZXItcG9zaXRpb24gb2YgdGhlIGVycm9yIGlzIHdyaXR0ZW4uCgoJKiBtc2Rvcy9kcG1pLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJVXNlIGxjYWxsIG9wY29kZXMsIHNvIGFsbCBnYXMtZXMgdW5kZXJzdGFuZCBpdC4uLgoKCSogZGxscy93aW4zMnMvTWFrZWZpbGUuaW4sIGRsbHMvd2luMzJzL3czMnNrcm5sLnNwZWMsIGlmMTYzMi9yZWxheS5jLCBpZjE2MzIvdGh1bmsuYywgaW5jbHVkZS9mbGF0dGh1bmsuaCwgbWlzYy9NYWtlZmlsZS5pbiwgbWlzYy93MzJzY29tYi5jLCByZWxheTMyL01ha2VmaWxlLmluLCByZWxheTMyL3V0dGh1bmsuYywgcmVsYXkzMi93b3d0aHVuay5jLCB3aW4zMi9rZXJuZWwzMi5jLCB3aW4zMi9vcmRpbmFscy5jLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwvZmxhdHRodW5rLmgsIGRsbHMva2VybmVsL2tlcm5lbF9tYWluLmMsIGRsbHMva2VybmVsL3RodW5rLmMsIGRsbHMva2VybmVsL3V0dGh1bmsuYywgZGxscy9rZXJuZWwvd293dGh1bmsuYywgZGxscy9vbGUzMi9NYWtlZmlsZS5pbiwgZGxscy9vbGUzMi9vbGUzMi5zcGVjOgoJTW92ZWQgdGh1bmtpbmcgZnVuY3Rpb25zIG9mZiB0byBrZXJuZWwzMi5kbGwuCgoJKiBNYWtlLnJ1bGVzLmluLCBNYWtlZmlsZS5pbiwgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9hZHZhcGkzMi8uY3ZzaWdub3JlLCBkbGxzL2FkdmFwaTMyL01ha2VmaWxlLmluLCBkbGxzL250ZGxsL3NlYy5jLCBtZW1vcnkvTWFrZWZpbGUuaW4sIG1lbW9yeS9yZWdpc3RyeS5jOgoJVGVtcG9yYXJpbHkgbW92ZWQgYWR2YXBpMzIgcmVnaXN0cnkgc3VwcG9ydCBiYWNrIGludG8gbGlid2luZS5zbywgYW5kCgltYWRlIGFkdmFwaTMyIGEgc2VwYXJhdGUgZGxsLgoKCSogZGVidWdnZXIvYnJlYWsuYywgZGVidWdnZXIvZGVidWdnZXIuaCwgZGVidWdnZXIvZXhwci5jLCBkZWJ1Z2dlci9tZW1vcnkuYywgZGVidWdnZXIvc291cmNlLmMsIGRlYnVnZ2VyL3N0YWJzLmMsIGRlYnVnZ2VyL3dpbmVkYmcuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJZml4ZWQgYSBudW1iZXIgb2YgbG9uZyBzdGFuZGluZyBidWdzOgoJICAgIC0gc2VnbWVudGVkIGV4cHJlc3Npb25zIGRpZG4ndCBkaXNwbGF5IGNvcnJlY3RseQoJICAgIC0gdXNpbmcgZHluYW1pYyBzaXplIGFycmF5IGZvciBuZXN0ZWQgdHlwZXMgcGFyc2luZwoJICAgIC0gY29ycmVjdCBkaXNwbGF5IG9mIHNvdXJjZSBjb2RlIGFmdGVyIGEgY3Jhc2gKCWZhY3Rvcml6ZWQgc29tZSBjb2RlCgoJKiBkbGxzL2dkaS93aW5nLmMsIGRsbHMvZ2RpL3dpbmcuc3BlYywgTWFrZS5ydWxlcy5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvZ2RpL01ha2VmaWxlLmluOgoJTWVyZ2VkIHdpbmcuZGxsIGludG8gZ2RpMzIuZGxsLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCVByZXZlbnQgdGhlIGF0dGVtcHQgdG8gZHJhdyBpbnZhbGlkIGltYWdlIGluZGV4ZXMuCglQcm92aWRlIHRoZSB0d28gcGl4ZWwgYnVmZmVyIGJldHdlZW4gdGhlIGltYWdlIGFuZCB0aGUgbGFiZWwuCgoJKiBkbGxzL29sZWF1dDMyL01ha2VmaWxlLmluLCBkbGxzL29sZWF1dDMyL2Nvbm5wdC5jLCBkbGxzL29sZWF1dDMyL2Nvbm5wdC5oOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJQSBnZW5lcmljIGltcGxlbWVudGlvbiBvZiBJQ29ubmVjdGlvblBvaW50L0lFbnVtQ29ubmVjdGlvbnMuCgoJKiB0b29scy9mbnQyYmRmLmMsIHRvb2xzL2ZudDJiZGYuaCwgaW5jbHVkZS93aW5lL3dpbmdkaTE2Lmg6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCU1ha2UgZm50MmJkZiBwcm9kdWNlIGNvcnJlY3QgZm9udHMuCgoJKiBtc2Rvcy9pbnQxNi5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCU1ha2UgaW50MTYgcmVhZCBmcm9tIHRoZSBCSU9TIGtleWJvYXJkIGJ1ZmZlciwgbm90IGRpcmVjdGx5IGZyb20gdGhlCgljb25zb2xlIGRyaXZlci4KCgkqIG1zZG9zL2RwbWkuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglGaXhlZCBicm9rZW4gYXNzZW1ibGVyLiBSZW1vdmVkIHN1cHBvcnQgZm9yIG9sZCBwcm90ZWN0ZWQtbW9kZSBoYWNrCglmb3IgcnVubmluZyByZWFsLW1vZGUgY29kZSBvbiBwbGF0Zm9ybXMgdGhhdCBkb24ndCBzdXBwb3J0IHZtODY7IHRoZQoJY3VycmVudCBDYWxsUk0tPlJNQ0Igc2hvcnRjdXQgY29kZSBzaG91bGQgdGFrZSBjYXJlIG9mIGFsbAoJV2luZS1zdXBwbGllZCBSTSBBUElzIChzdWNoIGFzIERPU0FTUEkpIGFueXdheS4KCgkqIGZpbGVzL2RpcmVjdG9yeS5jLCBpbmNsdWRlL3Rhc2suaCwgbG9hZGVyL25lL21vZHVsZS5jLCBsb2FkZXIvdGFzay5jOgoJUGVyZm9ybSBORV9Jbml0UHJvY2VzcyBpbiB0aGUgY29udGV4dCBvZiB0aGUgbmV3IHRhc2suCgoyMDAwLTA3LTI0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9tc2FjbS8uY3ZzaWdub3JlLCBkbGxzL21zYWNtL01ha2VmaWxlLmluLCBkbGxzL21zYWNtL2RyaXZlci5jLCBkbGxzL21zYWNtL2ZpbHRlci5jLCBkbGxzL21zYWNtL2Zvcm1hdC5jLCBkbGxzL21zYWNtL2ludGVybmFsLmMsIGRsbHMvbXNhY20vbXNhY20zMi5zcGVjLCBkbGxzL21zYWNtL21zYWNtMzJfbWFpbi5jLCBkbGxzL21zYWNtL3N0cmVhbS5jLCBkbGxzL21zYWNtL3dpbmVhY20uaCwgTWFrZS5ydWxlcy5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsLy5jdnNpZ25vcmUsIGRsbHMva2VybmVsL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC93aW44N2VtLmMsIGRsbHMva2VybmVsL3dpbjg3ZW0uc3BlYywgZGxscy9rZXJuZWwvd2luZGVidWcuYywgZGxscy9rZXJuZWwvd2luZGVidWcuc3BlYzoKCU1lcmdlZCBtc2FjbSBhbmQgbXNhY20zMiBkbGxzLgoJTWVyZ2VkIHdpbjg3ZW0gYW5kIHdpbmRlYnVnIGludG8ga2VybmVsMzIuZGxsLgoKMjAwMC0wNy0yMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHByb2dyYW1zL3Byb2dtYW4vZ3JvdXAuYywgcHJvZ3JhbXMvcHJvZ21hbi9ncnBmaWxlLmMsIHByb2dyYW1zL3Byb2dtYW4vcHJvZ3JhbS5jLCBwcm9ncmFtcy9yZWdhcGkvcmVnYXBpLmMsIHByb2dyYW1zL3dpbmhlbHAvaGxwMnNnbWwuYywgcHJvZ3JhbXMvd2luaGVscC93aW5oZWxwLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCUZpeGVkIGludC9IQU5ETEUgbWlzbWF0Y2hlcyByZXZlYWxlZCBieSAtRFNUUklDVC4KCVJlcGxhY2VkIHRoZSBXaW4xNiBobWVtY3B5MTYgKG9ic29sZXRlKSB3aXRoIG1lbWNweS4KCgkqIHByb2dyYW1zL3Byb2dtYW4vbWFpbi5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglGaXhlZCBXaW5NYWluJ3Mgc2lnbmF0dXJlLgoJUmVwbGFjZWQgdGhlIFdpbjE2IGhtZW1jcHkxNiAob2Jzb2xldGUpIHdpdGggbWVtY3B5LgoJUmVtb3ZlZCBvYnNvbGV0ZSByZWZlcmVuY2VzIHRvIHRoZSBMYW5ndWFnZXMgYXJyYXkuCgoJKiBwcm9ncmFtcy9jbG9jay9sYW5ndWFnZS5jLCBwcm9ncmFtcy9ub3RlcGFkL2xhbmd1YWdlLmMsIHByb2dyYW1zL3Byb2dtYW4vc3RyaW5nLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCVJlbW92ZWQgb2Jzb2xldGUgcmVmZXJlbmNlcyB0byB0aGUgTGFuZ3VhZ2VzIGFycmF5LgoKCSogcHJvZ3JhbXMvY2xvY2svbWFpbi5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglGaXhlZCBXaW5NYWluJ3Mgc2lnbmF0dXJlLgoJRml4ZWQgcGFyYW1ldGVyIG9yZGVyIGZvciB0aGUgY2FsbCB0byBDcmVhdGVXaW5kb3cuCgoJKiBsaWJ0ZXN0L2hlbGxvLmMsIGxpYnRlc3QvaGVsbG8yLmMsIGxpYnRlc3QvaGVsbG8zLmMsIGxpYnRlc3QvaGVsbG80LmMsIGxpYnRlc3QvaGVsbG81LmMsIGxpYnRlc3QvbmV3LmMsIGxpYnRlc3Qvcm9sZXguYywgbGlidGVzdC92YXJ0ZXN0LmMsIHByb2dyYW1zL25vdGVwYWQvbWFpbi5jLCBwcm9ncmFtcy93aW52ZXIvd2ludmVyLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCUZpeGVkIFdpbk1haW4ncyBzaWduYXR1cmUuCgoJKiBwcm9ncmFtcy93Y21kL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5lbWluZS9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luaGVscC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2ludmVyL01ha2VmaWxlLmluLCBwcm9ncmFtcy9jbG9jay9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvY21kbGd0c3QvTWFrZWZpbGUuaW4sIHByb2dyYW1zL2NvbnRyb2wvTWFrZWZpbGUuaW4sIHByb2dyYW1zL25vdGVwYWQvTWFrZWZpbGUuaW4sIHByb2dyYW1zL29zdmVyc2lvbmNoZWNrL01ha2VmaWxlLmluLCBwcm9ncmFtcy9wcm9nbWFuL01ha2VmaWxlLmluLCBwcm9ncmFtcy9yZWdhcGkvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3JlZ3Rlc3QvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3ZpZXcvTWFrZWZpbGUuaW4sIGxpYnRlc3QvTWFrZWZpbGUuaW46CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCUFkZGVkIC1EU1RSSUNULgoJQWRkZWQgbWlzc2luZyBsaWJyYXJpZXMgY29tY3RsMzIgYW5kIHJwY3J0NC4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYywgZGxscy93aW5zb2NrL3dzMl8zMi5zcGVjLCBkbGxzL3dzb2NrMzIvc29ja2V0LmMsIGRsbHMvd3NvY2szMi93c2NvbnRyb2wuaDoKCUphbWVzIEhhdGhld2F5IDxqYW1lc0BtYWNhZGFtaWFuLmNvbT4KCUFkZHMgYW4gaW5pdGlhbCBXU0FJb2N0bCBmdW5jdGlvbiB3aXRoIHN1cHBvcnQgZm9yIG9ubHkgdGhlCglTSU9fR0VUX0lOVEVSRkFDRV9MSVNUIGNvbW1hbmQuICBBZGRzIGluaXRpYWwgY29kZSB0byBXc0NvbnRyb2wKCWZ1bmN0aW9uIHRvIHN1cHBvcnQgdGhlIFdTQ05UTF9UQ1BJUF9RVUVSWV9JTkZPIGNvbW1hbmQuCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsIGRsbHMvZGRyYXcvZDNkdGV4dHVyZS5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglDb21waWxhdGlvbiBmaXhlcyBmb3IgT3BlbkdMLgoKCSogTWFrZS5ydWxlcy5pbjogTWlrZV9NY0Nvcm1hY2tAbG9va3NtYXJ0LmNvbS5hdQoJQ29ycmVjdGVkIGMybWFuIGZsYWdzLiBJdCBzdGlsbCBjcmFzaGVzIGFueWhvdyA6LS8KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsIGluY2x1ZGUvYWNjb25maWcuaCwgaW5jbHVkZS9jb25maWcuaC5pbjoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglEZXRlY3QgYnJva2VuIGdsZXh0LmggaGVhZGVycy4KCgkqIHByb2dyYW1zL25vdGVwYWQvZGlhbG9nLmMsIHByb2dyYW1zL25vdGVwYWQvbWFpbi5jLCBwcm9ncmFtcy9ub3RlcGFkL21haW4uaDoKCU1pa2VfTWNDb3JtYWNrQGxvb2tzbWFydC5jb20uYXUKCUFkZGVkIHNvbWUgYmFzaWMgdGV4dCBkaXNwbGF5IGFuZCBlZGl0aW5nIGNhcGFiaWxpdGllcywgY3Vyc29yCglwb3NpdGlvbmluZywgYSBiaXQgb2Ygc2Nyb2xsaW5nIGFuZCBhIHRleHQgZmlsZSBsb2FkZXIuCgoJKiBpbmNsdWRlL3RhcGkuaDogTWlrZV9NY0Nvcm1hY2tAbG9va3NtYXJ0LmNvbS5hdQoJSW1wbGVtZW50ZWQgbGluZUdldENvdW50cnkuICh3b3JrcyB3aXRoIEh5cGVyVHJtLmV4ZSkKCgkqIGRsbHMvY29tbWRsZy9jZGxnX0NhLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19Dcy5yYywgZGxscy9jb21tZGxnL2NkbGdfRGEucmMsIGRsbHMvY29tbWRsZy9jZGxnX0RlLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19Fbi5yYywgZGxscy9jb21tZGxnL2NkbGdfRW8ucmMsIGRsbHMvY29tbWRsZy9jZGxnX0VzLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19GaS5yYywgZGxscy9jb21tZGxnL2NkbGdfRnIucmMsIGRsbHMvY29tbWRsZy9jZGxnX0h1LnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19JdC5yYywgZGxscy9jb21tZGxnL2NkbGdfSmEucmMsIGRsbHMvY29tbWRsZy9jZGxnX0tvLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19ObC5yYywgZGxscy9jb21tZGxnL2NkbGdfTm8ucmMsIGRsbHMvY29tbWRsZy9jZGxnX1BsLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19QdC5yYywgZGxscy9jb21tZGxnL2NkbGdfUnUucmMsIGRsbHMvY29tbWRsZy9jZGxnX1NrLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19Tdi5yYywgZGxscy9jb21tZGxnL2NkbGdfV2EucmMsIGRsbHMvY29tbWRsZy9jb2xvcmRsZy5jOgoJR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglGb2N1cyBoYW5kbGluZywgdmlzdWFsIGNoYW5nZXMgKyBtaXNjIGZpeGVzLgoKCSogZGxscy90YXBpMzIvbGluZS5jOiBNaWtlX01jQ29ybWFja0Bsb29rc21hcnQuY29tLmF1CglJbXBsZW1lbnRlZCBsaW5lR2V0Q291bnRyeS4gKHdvcmtzIHdpdGggSHlwZXJUcm0uZXhlKQoKCSogaW5jbHVkZS93aW5iYXNlLmg6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJUmVtb3ZlZCBkdXBsaWNhdGUgZGVjbGFyYXRpb24gb2YgQWRkQWNjZXNzQWxsb3dlZEFjZS4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglIYW5kbGUgdGhlIGNhc2Ugd2hlcmUgdGhlIGZ1bmN0aW9uIFNldEl0ZW0gaXMgY2FsbGVkIHRvIHNlbGVjdCBhbiBpdGVtCglvciBzZXQgaXRzIGZvY3VzLgoKCSogZGxscy9kZHJhdy9kM2RsaWdodC5jLCBkbGxzL2RkcmF3L21lc2FfcHJpdmF0ZS5oLCBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jLCBpbmNsdWRlL2QzZHR5cGVzLmgsIGluY2x1ZGUvZDNkdmVjLmlubDoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJQWRkZWQgYSBmZXcgQysrIG9wZXJhdG9ycyB0byBEaXJlY3QzRCBzdHJ1Y3R1cmVzLCBhbmQgbWFkZSBzb21lIHVuaW9ucwoJJ25hbWVsZXNzJy4KCgkqIGRsbHMvd2luc29jay9hc3luYy5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglJbnN1cmVkIHRoYXQgYWxsIHBhcmFtZXRlcnMgb2YgYXN5bmMgZnVuY3Rpb25zIGFyZSBjb3BpZWQgYmVmb3JlCglyZXR1cm5pZyBmcm9tIHJlcXVlc3QuCgoJKiBjb250cm9scy9zY3JvbGwuYywgZG9jdW1lbnRhdGlvbi9kaXN0cmlidXRvcnMsIGRvY3VtZW50YXRpb24veDExZHJ2LCB0b29scy93aW5lY29uZjoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRml4IGEgZmV3IHR5cG9zIGFuZCBzdWNoLgoKCSogaW5jbHVkZS9kM2QuaCwgaW5jbHVkZS9kZHJhdy5oOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglBZGRlZCBzb21lIERpcmVjdERyYXc3LXJlbGF0ZWQgZGVmaW5pdGlvbnMuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgaW5jbHVkZS9jb25maWcuaC5pbjoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJTWFrZSBub24tZXhpc3RlbmNlIG9mIChmKWxleCBhbiBlcnJvci4KCgkqIGRsbHMvZGRyYXcvZGRyYXcvZGdhLmMsIGRsbHMvZGRyYXcvZGRyYXcvZGdhMi5jLCBkbGxzL2RkcmF3L2RkcmF3L21haW4uYywgZGxscy9kZHJhdy9kZHJhdy94MTEuYywgZGxscy9kZHJhdy9kcGFsZXR0ZS9kZ2EuYywgZGxscy9kZHJhdy9kcGFsZXR0ZS9tYWluLmMsIGRsbHMvZGRyYXcvZHBhbGV0dGUveDExLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UvZGdhLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UvZGdhMi5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL3gxMS5jLCBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsIGRsbHMvZGRyYXcvZGRyYXdfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L2RnYS5jLCBkbGxzL2RkcmF3L2RnYTIuYywgZGxscy9kZHJhdy9tYWluLmMsIGRsbHMvZGRyYXcveDExLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUlEaXJlY3REcmF3LElEaXJlY3REcmF3MixJRGlyZWN0RHJhdzQgZml4ZWQgdXAgaW4gcmVnYXJkIHRvIENPTSB1c2FnZS4KCgkqIGluY2x1ZGUvd2ludXNlci5oOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUFkZGVkIGEgZmV3IFdpbjMyIGRlZmluaXRpb25zLgoKCSogaW5jbHVkZS93aW5zcG9vbC5oOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVJlZHVjZSBzY29wZSBvZiAiU3RhdHVzIiAjaWZkZWYgaGFjay4KCgkqIGlmMTYzMi9yZWxheS5jLCByZWxheTMyL2J1aWx0aW4zMi5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglTYXkgdGhhdCAiTm8gaGFuZGxlciIgbWVzc2FnZXMgYXMgZmF0YWwuCgoJKiB3aW5lZGVmYXVsdC5yZWc6IEZpeGVkIFNoYXJlZERpciBsb2NhdGlvbi4KCgkqIGxvYWRlci9kb3MvZG9zdm0uYywgbXNkb3MvZHBtaS5jLCBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmMsIGluY2x1ZGUvd2lubnQuaDoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQ2hhbmdlIHRoZSBWODZCQVNFIG1hY3JvIHRvIGNhbGwgRE9TTUVNX01lbW9yeUJhc2UoKSBpbnN0ZWFkIG9mIHVzaW5nCgl0aGUgdWdseSBEcjcgaGFjay4KCgkqIGRsbHMvd2lubW0vbW1pby5jLCBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgZmlyc3Qgc2VlayBvbiBNRU0gbW1pbyBmaWxlcy4KCgkqIGRsbHMvY29tbWRsZy9mb250ZGxnLmM6CglHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCVJlbW92ZSBjYWxscyB0byBESUFMT0dfRG9EaWFsb2dCb3ggYW5kIERJQUxPR19DcmVhdGVJbmRpcmVjdC4KCgkqIGRsbHMvd2luaW5ldC9odHRwLmM6CglKb2huIFIuIFNoZWV0cyA8anNoZWV0c0Bjb2Rld2VhdmVycy5jb20+CglBZGQgYSBmZXcgbW9yZSBmaWVsZHMgdG8gSFRUUF9HZXRTdGRIZWFkZXJJbmRleCgpIGFuZCBmaXggc29tZSB0eXBvcy4KCgkqIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jOgoJSm9obiBSLiBTaGVldHMgPGpzaGVldHNAY29kZXdlYXZlcnMuY29tPgoJUHV0IHRoZSBVUkwgcGFyYW1ldGVyIGxpc3QgaW4gd2l0aCB0aGUgVVJMIHBhdGggaWYgdGhlIEV4dHJhSW5mbwoJYnVmZmVyIGlzbid0IHNwZWNpZmllZC4KCgkqIGNvbnRyb2xzL2ljb250aXRsZS5jOgoJR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglGaXhlZCBjYWxjdWxhdGlvbiBvZiBidWZmZXIgbGVuZ3RoIGFmdGVyIHN3aXRjaCBvZiB3aW5kb3cgdGV4dCB0bwoJdW5pY29kZS4KCgkqIGRlYnVnZ2VyL21lbW9yeS5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUNvbW1lbnQgb3V0IGEgbm9uZnVuY3Rpb25hbCBET1MgcGFydCBvZiBkZWJ1Z2dlci4KCgkqIGRsbHMvcmFzYXBpMzIvcmFzYXBpLmMsIGRsbHMvcmFzYXBpMzIvcmFzYXBpMzIuc3BlYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQWRkZWQgc3R1YiBmb3IgUmFzSGFuZ1VwQSgpLgoKCSogd2luZG93cy9kZWZ3bmQuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglEZWZXaW5kb3dQcm9jIHNob3VsZCBwYXNzIHVuaGFuZGxlZCBXTV9NT1VTRVdIRUVMIHRvIHBhcmVudCwgYWNjb3JkaW5nCgl0byBkb2N1bWVudGF0aW9uLgoKCSogdG9vbHMvd2luZWluc3RhbGw6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRml4ZWQgYSBmZXcgcHJvYmxlbXMuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCURhdmlkIEVsbGlvdHQgPGRmZUBpbmZpbml0ZS1pbnRlcm5ldC5uZXQ+CgktIENoYW5nZWQgdGhlIHRlbXBvcmFyeSBidWZmZXIgZm9yIGxvYWRpbmcgcmVzb3VyY2VzIGZyb20gMjU2IHRvIDUxMgoJLSBEZWZpbmUgTUFYX1JFU09VUkNFX1NUUklOR19MRU5HVEggaW5zdGVhZCBvZiB1c2luZyBpdCBtYWdpY2FsbHkgdGhyb3VnaG91dAoJICB0aGUgZnVuY3Rpb24KCS0gVXNlIGxzdHJjcHluVyBpbnN0ZWFkIG9mIGxzdHJjcHlXCgoyMDAwLTA3LTE2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogQU5OT1VOQ0UsIENoYW5nZUxvZywgaW5jbHVkZS92ZXJzaW9uLmg6CglSZWxlYXNlIDIwMDAwNzE2LgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoyMDAwLTA3LTE2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy93aW5wcm9jLmM6CglBZGRlZCBhc3NlbWJseSB3cmFwcGVyIGZvciBjYWxsaW5nIHdpbmRvdyBwcm9jZWR1cmVzLgoKCSogaW5jbHVkZS9tYWluLmgsIGluY2x1ZGUvb3B0aW9ucy5oLCBpbmNsdWRlL3Byb2Nlc3MuaCwgbG9hZGVyL2Rvcy9tb2R1bGUuYywgbG9hZGVyL21haW4uYywgbWlzYy9vcHRpb25zLmMsIHNjaGVkdWxlci9jbGllbnQuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCUdldCBmdWxsIHBhdGggb2YgYXJndlswXSBiZWZvcmUgd2UgY2hhbmdlIGRpcmVjdG9yaWVzLgoJTWFrZSBzdXJlIHByb2Nlc3MgbmFtZXMgYXJlIGxvbmcgcGF0aCBuYW1lcy4KCUNsZWFuZWQgdXAgaW5pdGlhbGlzYXRpb24gYSBiaXQuCgoJKiBzZXJ2ZXIvc29jay5jOgoJU3RlcGhhbmUgTHVzc2llciA8c3RlcGhhbmVAbWFjYWRhbWlhbi5jb20+CglJbiBzZXRfc29ja2V0X2V2ZW50LCB0aGUgZXZlbnQgc2hvdWxkIGJlIHNpZ25hbGVkIGlmIHRoZXJlJ3MgYSBwZW5kaW5nCgluZXR3b3JrIGV2ZW50IGNvcnJlc3BvbmRpbmcgdG8gdGhlIGV2ZW50cyB0aGUgYXBwbGljYXRpb24gd2FudGVkIHRvIGJlCglub3RpZmllZC4KCgkqIGRsbHMvd2luc3Bvb2wvaW5mby5jLCBmaWxlcy9maWxlLmMsIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLCBsb2FkZXIvdGFzay5jLCB3aW5kb3dzL2NsYXNzLmMsIGRsbHMvb2RiYzMyL3Byb3h5b2RiYy5jLCBkbGxzL29sZTMyL2RhdGFjYWNoZS5jLCBkbGxzL29sZWF1dDMyL29sZWZvbnQuYywgZGxscy9vbGVhdXQzMi9vbGVwaWN0dXJlLmMsIGRsbHMvcmljaGVkaXQvcmljaGVkaXQuYywgZGxscy9ycGNydDQvcnBjcnQ0X21haW4uYywgZGxscy9zZXJpYWx1aS9jb25mZGxnLmMsIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglTcGVsbGluZyBmaXhlcy4KCgkqIGxvYWRlci9lbGZkbGwuYywgbG9hZGVyL25lL21vZHVsZS5jLCB0b29scy93aW5laW5zdGFsbCwgZG9jdW1lbnRhdGlvbi93aW5lLm1hbi5pbiwgaW5jbHVkZS93aW51c2VyLmg6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCURvYyBhbmQgdHJhY2UgdXBkYXRlcy4KCgkqIGluY2x1ZGUvcHJvY2Vzcy5oLCBsb2FkZXIvbW9kdWxlLmMsIHNjaGVkdWxlci9wcm9jZXNzLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVRyYW5zbWl0IGN1cnJlbnQgZGlyZWN0b3J5IHNldHRpbmdzIHRvIG5ld2x5IGNyZWF0ZWQgcHJvY2Vzc2VzLgoKCSogZG9jdW1lbnRhdGlvbi9pbnN0YWxsYXRpb24tdW5kLWtvbmZpZ3VyYXRpb24uZ2VybWFuOgoJUGV0ZXIgR2FudGVuIDxwZXRlckBnYW50ZW4ub3JnPgoJQWRkZWQgR2VybWFuIGluc3RhbGxhdGlvbiBhbmQgY29uZmlndXJhdGlvbiBtYW51YWwuCgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOgoJUmF1bCBGZXJuYW5kZXMgPHJnZkBpZWcuY29tLmJyPgoJQWRkZWQgQnJhemlsaWFuIGtleWJvYXJkLgoKCSogY29udHJvbHMvbGlzdGJveC5jOiBHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCVNldCBjbGlwcGluZyByZWdpb24gdG8gY2xpZW50IHdpbmRvdyBiZWZvcmUgb3duZXItZHJhd24gcGFpbnRpbmcuCgoJKiB3aW5lZGVmYXVsdC5yZWc6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCUFkZGVkIHRoZSAiU2hhcmVkRGlyIiByZWdpc3RyeSBrZXkuCgoJKiBpbmNsdWRlL2FjY29uZmlnLmgsIGluY2x1ZGUvY29uZmlnLmguaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzL2RkcmF3L2QzZF9wcml2YXRlLmgsIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21haW4uYywgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLCBkbGxzL2RkcmF3L2QzZG1hdGVyaWFsLmMsIGRsbHMvZGRyYXcvZDNkdGV4dHVyZS5jLCBkbGxzL2RkcmF3L2RkcmF3X3ByaXZhdGUuaCwgZGxscy9kZHJhdy9kZ2EuYywgZGxscy9kZHJhdy9kaXJlY3QzZC9tZXNhLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UveDExLmMsIGRsbHMvZGRyYXcvbWVzYS5jLCBkbGxzL2RkcmF3L21lc2FfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L3gxMV9wcml2YXRlLmg6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSBmaXggRGlyZWN0M0Qgc3VwcG9ydCBhbmQgYSBsb3Qgb2Ygd2FybmluZ3MKCS0gYWRkIHN1cHBvcnQgZm9yIEREcmF3IGluIGEgd2luZG93IChub3Qgb3B0aW1pemVkIHlldCkKCS0gY2xlYW5zIHVwIE9wZW5HTCBleHRlbnNpb25zIGhhbmRsaW5nIGZvciBEM0QKCgkqIGNvbnRyb2xzL3N0YXRpYy5jOiBHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCUJhY2tncm91bmQgb2YgU1NfU0lNUExFIHN0YXRpYyBjb250cm9sIGlzIG5vdCBmaWxsZWQgKHVubGVzcyBpdCBoYXMKCVNTX05PUFJFRklYIHRvbykuCgoJKiBmaWxlcy9kaXJlY3RvcnkuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRHJvcCBVTklYIGN3ZCB0byAvIGFmdGVyIGNhbGN1bGF0aW5nIFdJTkUgY3VycmVudCBkaXJlY3RvcnkgKHRvIGFsbG93CglDRCB1bm1vdW50cykuCgoyMDAwLTA3LTE1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZ3JhcGhpY3MveDExZHJ2L2RpYi5jOgoJU3RlcGhhbmUgTHVzc2llciA8c3RlcGhhbmVAbWFjYWRhbWlhbi5jb20+CglOZXcgdmVyc2lvbiBvZiB0aGUgcGF0Y2ggZnJvbSBGcmFuY29pcyBKYWNxdWVzIHdpdGggYSBtb2RpZmljYXRpb24gb2YKCW15IG93biB0aGF0IG1ha2VzIGV2ZXJ5Ym9keSBoYXBweSA6LSkKCgkqIG1pc2MvY29tbS5jLCBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQGxvb2tzbWFydC5jb20uYXU+CglIb29rIHNlcmlhbHVpIGRsbCBpbnRvIGV4aXN0aW5nIGNvbW0gZnVuY3Rpb25zLgoKCSogTWFrZS5ydWxlcy5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvc2VyaWFsdWkvLmN2c2lnbm9yZSwgZGxscy9zZXJpYWx1aS9NYWtlZmlsZS5pbiwgZGxscy9zZXJpYWx1aS9jb25mZGxnLmMsIGRsbHMvc2VyaWFsdWkvc2VyaWFsdWkuaCwgZGxscy9zZXJpYWx1aS9zZXJpYWx1aS5zcGVjLCBkbGxzL3NlcmlhbHVpL3NlcmlhbHVpX3JjLnJjOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQGxvb2tzbWFydC5jb20uYXU+CglJbXBsZW1lbnRlZCBzZXJpYWx1aSBkbGwgY29udGFpbmluZyBDb21tQ29uZmlnRGlhbG9nLAoJR2V0RGVmYXVsdENvbW1Db25maWcgYW5kIFNldERlZmF1bHRDb21tQ29uZmlnLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsLmMsIGRsbHMvd2luYXNwaS9hc3BpLmMsIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jLCBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIHdhcm5pbmdzLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMuZGF0LCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvY3J0ZGxsLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL2tlcm5lbDMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL250ZGxsLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL29sZWF1dDMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3NldHVwYXBpLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3NobHdhcGkuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvdXNlcjMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3dzMl8zMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGkucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfY2hlY2ssIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfbG9jYWwucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfb3B0aW9ucy5wbToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBNaW5vciBBUEkgZmlsZXMgZml4ZXMuCgktIE1pbm9yIGJ1ZyBmaXhlcyBhbmQgYWRkaXRpb25zLgoKCSogZGxscy9jcnRkbGwvY3J0ZGxsX21haW4uYywgZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIGlzc3VlcyBmb3VuZCBieSB3aW5hcGlfY2hlY2suCgoJKiBjb250cm9scy9idXR0b24uYzoKCURhdmUgSGF3a2VzIDxkYXZlaC13aW5lQGNhZGxpbmsuY29tPgoJQWxsIHN0YW5kYXJkIHdpbmRvdyBjb250cm9scyBzaG91bGQgaGF2ZSBDU19QQVJFTlREQywgYnV0IHNob3VsZCBzdGlsbAoJY2xpcCB0byB0aGUgY29udHJvbCB3aW5kb3cuCgoJKiB3aW5kb3dzL21lc3NhZ2UuYzoKCUpvaG4gUiAuIFNoZWV0cyA8anNoZWV0c0Bjb2Rld2VhdmVycy5jb20+CglXZSBhbHNvIGhhdmUgdG8gdmFsaWRhdGUgdGhlIGZyYW1lIHRvIGF2b2lkIGFuIGluZmluaXRlIGxvb3Agd2hlbiB0aGUKCWFwcCBkb2Vzbid0IGNhbGwgQmVnaW5QYWludC4KCgkqIHNjaGVkdWxlci9oYW5kbGUuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJRXh0ZW5kIHRoZSBXU09DSzMyIHdhcm5pbmcgaW4gY2VydGFpbiBmdW5jdGlvbnMgdG8gbWVudGlvbiBXUzJfMzIgdG9vLgoKCSogZGxscy93aW5tbS93aW5lb3NzL21peGVyLmM6CglFZCBTbm93IDxlZF9zbm93QHR0bWVuZ2luZWVyaW5nLmNvbT4KCUZpeGVzIHVubXV0aW5nIHdoZW4gdW5tdXRlZC4KCVVuaWZpZXMgc2NhbGUgcmVwb3J0ZWQgd2l0aCBzY2FsZSB1c2VkIGZvciB2b2x1bWUgY29udHJvbC4KCUhhY2sgZm9yIEJhc3MvVHJlYmxlIHVudGlsIGJldHRlciBmaXggaXMgY29tcGxldGUuCgoJKiBncmFwaGljcy94MTFkcnYveGZvbnQuYzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglBZGRlZCBEQkNTL3VuaWNvZGUgZW5jb2RpbmcgdGVtcGxhdGVzLgoKCSogY29udHJvbHMvY29tYm8uYzoKCVN1c2FuIEZhcmxleSA8c2ZhcmxleUBjb2Rld2VhdmVycy5jb20+CglEb24ndCBjbGVhciBzZWxlY3Rpb24gd2hlbiBpbml0aWFsIGVudHJ5IGlzIG5vdCBpbiB0aGUgbGlzdC4KCgkqIGluY2x1ZGUvbWFpbi5oLCBpbmNsdWRlL250ZGRrLmgsIGluY2x1ZGUvb3B0aW9ucy5oLCBtaXNjL21haW4uYywgbWlzYy9vcHRpb25zLmMsIG9sZS9vbGUybmxzLmM6CglNYWRlIC0tbGFuZ3VhZ2UgYmVoYXZlIHRoZSBzYW1lIGFzIHNldHRpbmcgdGhlIExBTkdVQUdFIGVudmlyb25tZW50Cgl2YXJpYWJsZS4KCgkqIE1ha2UucnVsZXMuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL29sZTMyL01ha2VmaWxlLmluLCBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGUzMi9vbGUyc3R1YnMuYywgZGxscy9vbGUzMi9vbGUzMi5zcGVjLCBkbGxzL3JwY3J0NC8uY3ZzaWdub3JlLCBkbGxzL3JwY3J0NC9NYWtlZmlsZS5pbiwgZGxscy9ycGNydDQvcnBjcnQ0LnNwZWMsIGRsbHMvcnBjcnQ0L3JwY3J0NF9tYWluLmMsIGluY2x1ZGUvcnBjLmgsIGluY2x1ZGUvd3R5cGVzLmgsIGxvYWRlci9sb2Fkb3JkZXIuYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUNyZWF0ZSBycGNydDQuZGxsLgoJSW1wbGVtZW50IFV1aWRDcmVhdGUgKHVzaW5nIGV4aXN0aW5nIGNvZGUgZnJvbSBDb0NyZWF0ZUd1aWQpLgoJQ29DcmVhdGVHdWlkIGNhbGxzIFV1aWRDcmVhdGUuCgoJKiBtZW1vcnkvaGVhcC5jOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUZpeCBmb3Igc3VwcG9ydGluZyBEQkNTLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglSb2IgRmFybnVtIDxyZmFybnVtQG1pbmRzcHJpbmcuY29tPgoJSWdub3JlIGlCaXRtYXAgd2lkdGggd2hlbiBkcmF3aW5nIGZsYXQgdG9vbGJhci4KCgkqIGxvYWRlci9wZV9pbWFnZS5jOiBQZXRlciBHYW50ZW4gPHBldGVyQGdhbnRlbi5vcmc+CglGaXhlZCBhIGZpbGUgZGVzY3JpcHRvciBsZWFrIGluIHRoZSBQRSBsb2FkZXIuCgoJKiB3aW5kb3dzL3dpbnBvcy5jOgoJSmVhbi1DbGF1ZGUgQmF0aXN0YSA8amNiQG1hY2FkYW1pYW4uY29tPgoJRW5zdXJlIHRoZSB2YWxpZGl0eSBvZiBoT2xkRm9jdXMgYmVmb3JlIGNhbGxpbmcgV0lOX0dldFRvcFBhcmVudC4KCgkqIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jOgoJRHJldyBSb25uZWJlcmcgPGRyZXdAY29kb24ucHJpbmNldG9uLmVkdT4KCUlnbm9yZSBicm9rZW4gZm9udHMgd2hlbiBidWlsZGluZyBjYWNoZSBmaWxlLgoKCSogd2luZG93cy93aW4uYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglBbGxvdyBTZXRXaW5kb3dMb25nKC4uLiBHV0xfU1RZTEUpIHRvIGNoYW5nZSB2aXNpYmxlIGJpdC4KCgkqIGRvY3VtZW50YXRpb24vcmVnaXN0cnk6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz5ECglUZXh0IG9mIFdXTiBhcnRpY2xlICJUaGUgUmVnaXN0cnkiLgoKCSogZGxscy93aW5hc3BpL2FzcGkuYywgZGxscy93aW5hc3BpL3dpbmFzcGkzMi5jLCBkbGxzL3dpbmFzcGkvd2luZXNjc2kuaDoKCURhdmlkIEVsbGlvdHQgPGRmZUBpbmZpbml0ZS1pbnRlcm5ldC5uZXQ+CgktIE5ldyBmdW5jdGlvbiBpbiBhc3BpLmMgU0NTSV9GaXhfQ01EX0xFTiB3aGljaCBkZXRlcm1pbmVzIGlmIExpbnV4IGlzCgkgIGd1ZXNzaW5nIHRoZSBjb21tYW5kIGxlbmd0aCBjb3JyZWN0bHksIGFuZCBpZiBub3QsIHRlbGwncyBpdCB3aGF0J3MgdXAuCgktIENoYW5nZWQgc3RyY2F0IHRvIHN0cmNweSBpbiBTZW5kQVNQSTMyQ29tbWFuZCB0byBhdm9pZCByZXF1aXJpbmcgdGhlCgkgIGNhbGxlciB0byBjbGVhciB0aGUgZmllbGRzLgoJLSBBZGRlZCBhIG5ldyBmaWVsZCB0byBIQV9VbmlxdWUgY29udGVudCB0byBmaXggc29tZSBhcHBsaWNhdGlvbnMuICBXaWxsCgkgIGZpeCB0aGlzIGZvciBnb29kIGF0IGEgbGF0ZXIgZGF0ZS4KCS0gQWRkZWQgVFJBQ0UgdG8gR2V0QVNQSTMyRExMVmVyc2lvbiAoYW5kIEZJWE1FIHdoZW4gbm90IHJ1bm5pbmcgdW5kZXIKCSAgTGludXgpCgktIEFkZGVkIHNvbWUgY29uc3RhbnRzIHRvIHdpbmVzY3NpLmgKCSh3aXRoIHRoZSBoZWxwIG9mIEJlcm5kIEJlcm5pZSBNZXllciA8Ym1leWVyQGNzLm1vbmFzaC5lZHUuYXU+KQoKCSogZGxscy91c2VyL3VzZXIzMi5zcGVjLCB3aW5kb3dzL3VzZXIuYzoKCVBldGVyIEdhbnRlbiA8cGV0ZXJAZ2FudGVuLm9yZz4KCVN0dWJzIGZvciBDcmVhdGVEZXNrdG9wQSBhbmQgRW51bURlc2t0b3BXaW5kb3dzLgoKCSogbG9hZGVyL2xvYWRvcmRlci5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglBZGRlZCB3czJfMzIgbG9hZG9yZGVyLgoKCSogdG9vbHMvd2luZWJ1aWxkL21haW4uYzoKCVBldGVyIEdhbnRlbiA8cGV0ZXJAZ2FudGVuLm9yZz4KCVRyeSB0byB1bmxpbmsgb3V0cHV0IGZpbGUgYmVmb3JlIG9wZW5pbmcgaXQuCgoJKiBjb250cm9scy9lZGl0LmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVJlcGxhY2VkICVzIGJ5ICVwIGluIEVESVRfV01fU2V0VGV4dC4KCgkqIGRsbHMvd2luc29jay93czJfMzIuc3BlYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJQWRkZWQgV1NBV2FpdEZvck11bHRpcGxlRXZlbnRzIChhbGlhcyB0byBXYWl0Rm9yTXVsdGlwbGVPYmplY3RzRXgpLgoKCSogbG9hZGVyL3BlX2ltYWdlLmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJQWRkIGEgd2FybmluZyB3aGVuIHRoZSBub3JtYWwgbG9hZCBhZGRyZXNzIGZvciBhIHdpbjMyIHByb2dyYW0gaXMgbm90CglhdmFpbGFibGUuCgoJKiBkbGxzL29sZWF1dDMyL01ha2VmaWxlLmluLCBkbGxzL29sZWF1dDMyL29sZXBpY3R1cmUuYywgZGxscy9vbGVhdXQzMi9zdHVicy5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJT0xFIHBpY3R1cmUgb2JqZWN0IGltcGxlbWVudGF0aW9uLgoKCSogbWlzYy9jb21tLmM6CglHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCUZpeGVkIGFuIGluY29ycmVjdCBmb3JtYXQgc3RyaW5nLgoKCSogbG9hZGVyL2xvYWRvcmRlci5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglBZGRlZCBsb2Fkb3JkZXIgZW50cnkgZm9yIHRoZSBMaW51eCBnbGlkZTN4IGxpYnJhcnkuCgoJKiB3aW5lZGVmYXVsdC5yZWc6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglBZGRlZCAiQ29tbW9uRmlsZXNEaXIiPSJDOlxQcm9ncmFtIEZpbGVzXENvbW1vbiBGaWxlcyIuCgoJKiBkZWJ1Z2dlci9kYl9kaXNhc20uYzoKCUlhbiBTY2htaWR0IDxpc2NobWlkdEBjZmwucnIuY29tPgoJQWRkZWQgUGVudGl1bSBQcm8vMi8zLzQgY29uZGl0aW9uYWwgbW92ZSBpbnN0cnVjdGlvbnMuCgoyMDAwLTA3LTExICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9rZXJuZWwva2VybmVsX21haW4uYywgbWVtb3J5L2NvZGVwYWdlLmM6CglTZXQgYW5zaS9vZW0vbWFjIGNvZGUgcGFnZXMgZnJvbSBjdXJyZW50IGxvY2FsZS4KCgkqIHNjaGVkdWxlci9jbGllbnQuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJQmV0dGVyIGVycm9yIG1lc3NhZ2UgZm9yIHJlYWxseSBjbHVlbGVzcyBuZXdiaWVzLgoKCSogZGxscy9tc2FjbTMyL21zYWNtMzJfbWFpbi5jOgoJSmFtZXMgSGF0aGV3YXkgPGphbWVzQG1hY2FkYW1pYW4uY29tPgoJU3R1YiBmb3IgdGhlIEFDTV9NRVRSSUNfTUFYX1NJWkVfRk9STUFUIGNvbW1hbmQgb2YgYWNtTWV0cmljcy4KCgkqIGRsbHMvZGRyYXcvZHN1cmZhY2UvbWFpbi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglDaGVjayBmb3IgTlVMTCBmbGlwY2hhaW4gYW5kIGp1c3QgcmV0dXJuIHRoZSBjdXJyZW50IHN1cmZhY2UgaWYgaXQKCWhhcHBlbnMuCgoJKiBkbGxzL2NydGRsbC9jcnRkbGwuc3BlYywgZGxscy9jcnRkbGwvY3J0ZGxsX21haW4uYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSW1wbGVtZW50ZWQgX3ZzbnByaW50ZiBieSBjYWxsaW5nIHd2c25wcmludGZBLgoKCSogb2JqZWN0cy9kaWIuYzoKCVN0ZXBoYW5lIEx1c3NpZXIgPHN0ZXBoYW5lQG1hY2FkYW1pYW4uY29tPgoJSW4gQ3JlYXRlRElCU2VjdGlvbiBmdW5jdGlvbiwgaWYgaGRjIGlzIE5VTEwgaXQgbm93IHVzZXMgdGhlIGRlc2t0b3AgREMKCWluc3RlYWQgb2YgZmFpbGluZy4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglGaXhlZCBUT09MQkFSX0RyYXdTdHJpbmcoKSB0byBvZmZzZXQgYnV0dG9uIHRleHQgaWYgaW5mb1B0ci0+aGltbERlZgoJaXMgbm9uLXplcm8uICBCZXR0ZXIgZml4IHRoYW4gbXkgcHJldmlvdXMgcGF0Y2guCgoyMDAwLTA3LTEwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2NoZWR1bGVyL3RocmVhZC5jOgoJTGF6eSBpbml0aWFsaXNhdGlvbiBvZiB0aHJlYWQgbG9jYWxlLgoKCSogZGxscy9kcGxheXgvTWFrZWZpbGUuaW4sIGRsbHMvZHBsYXl4L2RwbGF5LmMsIGRsbHMvZHBsYXl4L2RwbGF5eF9nbG9iYWwuYywgZGxscy9kcGxheXgvZHBsYXl4X2dsb2JhbC5oLCBkbGxzL2RwbGF5eC9kcGxheXhfbWFpbi5jLCBkbGxzL2RwbGF5eC9kcGxheXhfbWVzc2FnZXMuYywgZGxscy9kcGxheXgvZHBsYXl4X21lc3NhZ2VzLmgsIGRsbHMvZHBsYXl4L2RwbGF5eF9xdWV1ZS5oLCBkbGxzL2RwbGF5eC9kcGxvYmJ5LmMsIGRvY3VtZW50YXRpb24vc3RhdHVzL2RpcmVjdHBsYXksIGluY2x1ZGUvZHBsb2JieS5oOgoJUGV0ZXIgSHVubmlzZXR0IDxodW5uaXNlQG5vcnRlbG5ldHdvcmtzLmNvbT4KCS0gTWFrZSByZWYgY291bnRpbmcgYSBsaXR0bGUgbW9yZSBlZmZpY2llbnQKCS0gQ29ycmVjdCBzdXNwZW5kZWQgcHJvY2VzcyByZXN1bXB0aW9uCgktIERvbid0IHVzZSBzeXMvcXVldWUuaCBhbnltb3JlCgktIFByb3Blcmx5IGluaXRpYWxpemUgdGhlIGdsb2JhbCBzZW1hcGhvcmUgYWNyb3NzIHByb2Nlc3NlcwoJLSBDcmVhdGUgYSBtYXBwZWQgZmlsZSBmb3Igc2hhcmVkIGRhdGEgc3RydWN0dXJlcwoJLSBDaGFuZ2Ugc29tZSB0cmFjZSBtZXNzYWdlcwoJLSBBbGxvY2F0ZSBkeW5hbWljIHNoYXJlZCBkYXRhIGZyb20gdGhlIG1hcHBlZCBmaWxlCgktIFJld29yayBzZXR0aW5nIGFuZCByZXRyaWV2aW5nIGxvYmJ5IHNldHRpbmdzIGZyb20gc2hhcmVkIG1lbW9yeQoJLSBBZGQgaW5mcmFzdHJ1Y3R1cmUgZm9yIHN5bmNyb25pemF0aW9uIGFmdGVyIGFwcCBsYXVuY2gKCS0gU21hbGwgZG9jdW1lbnRhdGlvbiB1cGRhdGUKCS0gSW5jbHVkZSBzb21lIHN0dWZmIG1pc3NpbmcgZnJvbSBoZWFkZXIKCS0gU3RhcnQgb24gZHAgYW5kIGRwbCBtZXNzYWdlIGluZnJhc3RydWN0dXJlCgktIFVuaWNvZGUgdmVyc2lvbnMgb2YgcGxheWVyL2dyb3VwIGNvbW1hbmRzIGFkZGVkCgktIENvbWJpbmVkIENvbm5lY3QvQ29ubmVjdEV4IGFuZCBPcGVuL1NlY3VyZU9wZW4KCS0gTW9yZSBpbXBsZW1lbnRhdGlvbgoKCSogZGxscy9rZXJuZWwvbmxzLyosIGRsbHMva2VybmVsLy5jdnNpZ25vcmUsIGRsbHMva2VybmVsL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBkbGxzL2tlcm5lbC9sb2NhbGVfcmMucmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCU1vdmVkIGFsbCBOTFMgZGVwZW5kZW50IGRhdGEgdG8gdGhlIEtFUk5FTCByZXNvdXJjZXMuCgoJKiBzY2hlZHVsZXIvdGhyZWFkLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCU1vdmVkIHNldHRpbmcgdGhlIGxvY2FsZSB2YWx1ZSB0byB0aGUgcmlnaHQgcG9zaXRpb24uCgoJKiBtaXNjL2xzdHIuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBGb3JtYXRNZXNzYWdlW0F8MTZdIGFnYWluc3Qgc29tZSBidWZmZXIgb3ZlcmZsb3cgY2FzZXMuCgoJKiBkZWJ1Z2dlci9pbmZvLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJUmVtb3ZlZCBleHRyYW5lb3VzIHRyYWNlIG1lc3NhZ2UuCgoJKiBkZWJ1Z2dlci93aW5lZGJnLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVVuY29uZGl0aW9ubmFsbHkgcHJpbnQgbWVzc2FnZXMgb24gRExMIGxvYWQgYnJlYWtwb2ludC4KCgkqIGRlYnVnZ2VyL2JyZWFrLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCUZpeGVkIHdpbmVkYmcgd2F0Y2hwb2ludHMuCgoJKiBkbGxzL29sZWF1dDMyL29sZTJkaXNwLmM6CglGcmFuY29pcyBKYWNxdWVzIDxmcmFuY29pc2pAbWFjYWRhbWlhbi5jb20+CglQcmV2ZW50IFN5c0FsbG9jU3RyaW5nIGFuZCBTeXNBbGxvY1N0cmluZzE2IHRvIHBlcmZvcm0gYW55IHByb2Nlc3NpbmcKCW9uIE5VTEwgc3RyaW5ncy4KCgkqIHRvb2xzL2ZudDJiZGYuYzoKCVN0YXMgU2VyZ2VldiA8c3Rhcy5vcmVsQG1haWxjaXR5LmNvbT4KCU1ha2UgaXQgcG9zc2libGUgdG8gY2hhbmdlIHRoZSBlbmNvZGluZyBvZiBmb250cyBmcm9tIHRoZSBjb21tYW5kCglsaW5lLCBldmVuIGlmIGF1dG9kZXRlY3RlZC4KCgkqIHdpbmRvd3Mvc3B5LmMsIHdpbmRvd3MvdHR5ZHJ2L3duZC5jLCB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3gxMWRydi93bmQuYywgY29udHJvbHMvYnV0dG9uLmMsIGNvbnRyb2xzL2ljb250aXRsZS5jLCBjb250cm9scy9zdGF0aWMuYywgaW5jbHVkZS9tZGkuaCwgaW5jbHVkZS90dHlkcnYuaCwgaW5jbHVkZS93aW4uaCwgaW5jbHVkZS94MTFkcnYuaCwgd2luZG93cy9kZWZ3bmQuYywgd2luZG93cy9kaWFsb2cuYywgd2luZG93cy9tZGkuYywgd2luZS5pbmk6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCUNvbnZlcnQgV05ELnRleHQgZmllbGQgdG8gVW5pY29kZS4KCUFkZCBuZXcga2V5IHRvIHdpbmUuaW5pIGluIHRoZSBzZWN0aW9uIFt4MTFkcnZdIC0gVGV4dENQLCB3aGljaCBtZWFucwoJY29kZSBwYWdlIHVzZWQgZm9yIHRleHRzIHBhc3NlZCB0byBYLgoJQWNjb3JkaW5nbHkgZml4IGhhbmRsZXJzIG9mIFdNX1NFVFRFWFQvV01fR0VUVEVYVC4KCgkqIGdyYXBoaWNzL3gxMWRydi9kaWIuYzogQmFja2VkIG91dCBwcmV2aW91cyBwYXRjaC4KCgkqIGRsbHMvdXNlci91c2VyMzIuc3BlYywgaW5jbHVkZS93aW51c2VyLmgsIHdpbmRvd3MvdXNlci5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTdHViIGZvciBSZWdpc3RlckRldmljZU5vdGlmaWNhdGlvbkEuCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmM6CglHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCUZha2VzIGEgbmVnb3RpYXRpb24gb2YgdGhlIHdpbnNvY2sgdmVyc2lvbi4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CgktIGJldHRlciBsb2FkaW5nIG9mICoudGxiIGZpbGVzCgktIHNlcGVyYXRlZCBjb2RlIGZvciBsb2FkaW5nIHRsYiByZXNvdXJjZSBpbnRvIG1lbW9yeSBmcm9tIGNvZGUgZm9yCgkgIHBhcnNpbmcgdGhlIHRsYiByZXNvdXJjZS4KCgkqIGRsbHMvb2xlMzIvb2xlMnN0dWJzLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCUltcGxlbWVudGVkIE9sZUNyZWF0ZS4KCjIwMDAtMDctMDkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL2NsYXNzLmM6IE5vb21lbiBIYW16YSA8bm9vbWVuQG1hY2FkYW1pYW4uY29tPgoJR2V0Q2xhc3NJbmZvIHNob3VsZCByZXR1cm4gZ2xvYmFsIGNsYXNzZXMgZXZlbiBpZiB0aGUgaEluc3RhbmNlCglwYXJhbWV0ZXIgaXMgZGlmZmVyZW50IGZyb20gdGhlIG9uZSBwYXNzZWQgdG8gdGhlIFJlZ2lzdGVyQ2xhc3MKCWZ1bmN0aW9uLgoKCSogbWlzYy9jb21tLmM6IFN0ZWZhbiBMZWljaHRlciA8c2xlQGNhbWxpbmUuY29tPgoJRml4ZXMgdGhlIEJ1aWxkQ29tbURDQkEgZnVuY3Rpb24uCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgaW5jbHVkZS9jb25maWcuaC5pbiwgbWlzYy9wb3J0LmM6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJQWRkZWQgY29uZmlndXJlIGNoZWNrIGZvciBsaWJ1dGlsLmguCgoJKiBjb250cm9scy9saXN0Ym94LmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJTWFrZSB0aGUgZm9jdXMgZm9sbG93IHRoZSBsYXN0IHNlbGVjdGVkIGl0ZW0gZm9yIG11bHRpc2VsZWN0IGxpc3Rib3hlcy4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzIuc3BlYywgZGxscy9vbGVhdXQzMi90eXBlbGliLmM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglTdHViIGltcGxlbWVudGF0aW9uIG9mIExIYXNoVmFsT2ZOYW1lU3lzQS4KCURvbid0IGNyYXNoIGlmIHdlIGVuY291bnRlciBhIEJTVFIgd2l0aCBsZW5ndGggPD0gMC4KCUZpeCB0eXBvcyBpbiBJVHlwZUxpYjo6R2V0RG9jdW1lbnRhdGlvbi4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbC5jOgoJRGF2ZSBIYXdrZXMgPGRhdmVoLXdpbmVAY2FkbGluay5jb20+CglXaXRoIHNvbWUgYXBwcyBhIGZhdWx0IHdhcyBwb3NzaWJsZSBpbiBFeHRyYWN0QXNzb2NpYXRlZEljb24uCgoJKiB3aW5kb3dzL2N1cnNvcmljb24uYzoKCURhdmUgSGF3a2VzIDxkYXZlaC13aW5lQGNhZGxpbmsuY29tPgoJR2V0SWNvbkluZm8gZGlkIG5vIGNvcnJlY3RseSBpZGVudGlmeSBpY29ucyBmcm9tIGN1cnNvcnMuCgoJKiB3aW5kb3dzL21zZ2JveC5jOgoJSGFpdGhlbSBIbWlkYSA8aGFpdGhlbUBtYWNhZGFtaWFuLmNvbT4KCVVuZGVyIFdpbmRvd3MgOTUvOTgvTlQsIG1lc3NhZ2UgYm94ZXMgZG8gbm90IGhhdmUgYSBkZWZhdWx0IGljb24uCgoJKiBtaXNjL3JlZ2lzdHJ5LmM6CglGaXhlZCBsc3RyY3B5bkF0b1cgdXNhZ2UgKHJlcG9ydGVkIGJ5IFN0YXMgU2VyZ2VldikuCglTbWFsbCBjbGVhbnVwcy4KCgkqIGRsbHMvd3NvY2szMi8uY3ZzaWdub3JlLCBkbGxzL3dzb2NrMzIvTWFrZWZpbGUuaW4sIGRsbHMvd3NvY2szMi9zb2NrZXQuYywgZGxscy93c29jazMyL3dzb2NrMzIuc3BlYywgZGxscy9kcGxheS8uY3ZzaWdub3JlLCBkbGxzL2RwbGF5L01ha2VmaWxlLmluLCBkbGxzL2RwbGF5L2RwbGF5LnNwZWMsIGRsbHMvZHBsYXl4L01ha2VmaWxlLmluLCBkbGxzL2RwbGF5eC9kcGxheS5zcGVjLCBkbGxzL2tlcm5lbC8uY3ZzaWdub3JlLCBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwvd293MzIuc3BlYywgZGxscy9zaGVsbDMyL01ha2VmaWxlLmluLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGRsbHMvc2hlbGwzMi9zaGZvbGRlci5zcGVjLCBkbGxzL3NoZWxsMzIvc2hsd2FwaS5zcGVjLCBkbGxzL3NoZm9sZGVyLy5jdnNpZ25vcmUsIGRsbHMvc2hmb2xkZXIvTWFrZWZpbGUuaW4sIGRsbHMvc2hmb2xkZXIvc2hmb2xkZXIuc3BlYywgZGxscy9zaGx3YXBpLy5jdnNpZ25vcmUsIGRsbHMvc2hsd2FwaS9NYWtlZmlsZS5pbiwgZGxscy9zaGx3YXBpL29yZGluYWwuYywgZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYywgZGxscy9zaGx3YXBpL3NobHdhcGlfbWFpbi5jLCBkbGxzL3dpbnNvY2svLmN2c2lnbm9yZSwgZGxscy93aW5zb2NrL01ha2VmaWxlLmluLCBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGRsbHMvd2luc29jay93czJfMzIuc3BlYywgZGxscy93aW5zb2NrL3dzb2NrMzIuc3BlYywgZGxscy93b3czMi8uY3ZzaWdub3JlLCBkbGxzL3dvdzMyL01ha2VmaWxlLmluLCBkbGxzL3dvdzMyL3dvdzMyLnNwZWMsIE1ha2UucnVsZXMuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzL01ha2VmaWxlLmluOgoJQ3JlYXRlZCBzZXBhcmF0ZSBsaWJyYXJpZXMgZm9yIGRwbGF5LCBzaGZvbGRlciwgc2hsd2FwaSwgd293MzIgYW5kCgl3c29jazMyIHNvIHRoYXQgd2UgaGF2ZSBhdCBtb3N0IG9uZSBXaW4zMiBkbGwgaW4gZWFjaCAuc28gbGlicmFyeS4KCjIwMDAtMDctMDggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBncmFwaGljcy94MTFkcnYvZGliLmM6CglGcmFuY29pcyBKYWNxdWVzIDxmcmFuY29pc2pAbWFjYWRhbWlhbi5jb20+CglVcGRhdGVkIFgxMURSVl9ESUJfR2V0RElCaXRzIHRvIHByb3Blcmx5IGhhbmRsZSBib3R0b20tdXAgRElCcwoJbWFuaXB1bGF0aW9uLgoJQ29ycmVjdGVkIFhHZXRTdWJJbWFnZSBhcmd1bWVudHMgb3JkZXIuCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmgsIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbmdkaS5oLCBpbmNsdWRlL3dpbnVzZXIuaDoKCU1hdHRoZXcgTGFrZSA8TUxha2VAc3VuYmVsdC1wbGIuY29tPgoJQWRkZWQgc29tZSBtaXNzaW5nIGRlZmluaXRpb25zLgoKCSogZGxscy9vbGVhdXQzMi9vbGVhdXQzMi5zcGVjLCBkbGxzL29sZWF1dDMyL3NhZmVhcnJheS5jLCBpbmNsdWRlL3dpbmUvb2JqX29sZWF1dC5oOgoJRnJhbmNvaXMgSmFjcXVlcyA8ZnJhbmNvaXNqQG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50ZWQgU2FmZUFycmF5R2V0VmFyVHlwZS4KCUFkZGVkIGEgVlRfUkVDT1JEIHZhcmlhbnQgdHlwZSBkZWZpbml0aW9uLgoKCSogZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgbWlzYy9jb21tLmM6CglTdGVmYW4gTGVpY2h0ZXIgPHNsZUBjYW1saW5lLmNvbT4KCVN0YXJ0ZWQgaW1wbGVtZW50YXRpb24gb2YgdGhlIGZ1bmN0aW9ucyBHZXREZWZhdWx0Q29tbUNvbmZpZ0EvVy4KCgkqIGRsbHMvZGRyYXcvY29udmVydC5jOgoJTWFyY3VzIE1laXNzbmVyIDxNYXJjdXMuTWVpc3NuZXJAY2FsZGVyYS5kZT4KCUNvcnJlY3RlZCAyNC0+MzIgY29udmVyc2lvbi4gU3RpbGwgb25seSBjb3JyZWN0IGZvciBsaXR0bGUgZW5kaWFuLgoKCSogd2luZG93cy93aW5wb3MuYzoKCVN1c2FuIEZhcmxleSA8c2ZhcmxleUBjb2Rld2VhdmVycy5jb20+CglDaGVjayBmb3IgV1NfRElTQUJMRUQgcGFyZW50IGluIFdpbmRvd0Zyb21Qb2ludCBmb3IgdW4tbWFuYWdlZCB3aW5kb3dzLgoKCSogbG9hZGVyL21vZHVsZS5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglSZW5hbWUgTU9EVUxFX0luaXREbGwgdG8gTU9EVUxFX0luaXRETEwgZm9yIHRoZSBzYWtlIG9mIGNvbnNpc3RlbmN5LgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCUZpeGVkIFRPT0xCQVJfRHJhd1N0cmluZygpIHRvIG9mZnNldCBidXR0b24gdGV4dCBpZiB0aGUgaGltbCBwYXJhbWV0ZXIKCWlzIG5vbi16ZXJvIG9yIHRoZSBkZWZhdWx0IGhpbWwsIGhpbWxEZWYsIGlzIG5vbi16ZXJvLiAgRml4ZXMgYSBidWcgaW4KCVdpblppcCA4LjAgd2hlcmUgdGV4dCBpcyBub3Qgc2hpZnRlZCBkb3duIGJ5IHRoZSBoZWlnaHQgb2YgdGhlIGJ1dHRvbgoJaW1hZ2UuCgoJKiB3aW5kb3dzL2RpYWxvZy5jOiBTbGF2YSBNb25pY2ggPFNsYXZhX01vbmljaEBjbnQuY29tPgoJQ2hlY2sgdGhlIHZhbHVlIHJldHVybmVkIGJ5IERJQUxPR19HZXRDaGFyU2l6ZS4KCgkqIE1ha2UucnVsZXMuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL3NldHVwYXBpLy5jdnNpZ25vcmUsIGRsbHMvc2V0dXBhcGkvTWFrZWZpbGUuaW4sIGRsbHMvc2V0dXBhcGkvc2V0dXBhcGkuc3BlYywgZGxscy9zZXR1cGFwaS9zdHVicy5jLCBpbmNsdWRlL2RlYnVnZGVmcy5oOgoJRnJhbmNvaXMgSmFjcXVlcyA8ZnJhbmNvaXNqQG1hY2FkYW1pYW4uY29tPgoJQWRkZWQgc2V0dXBhcGkgc2hhcmVkIGxpYnJhcnkgYW5kIFNldHVwSXRlcmF0ZUNhYmluZXQgc3R1Yi4KCgkqIGRsbHMvbXN2aWRlby8uY3ZzaWdub3JlLCBkbGxzL21zdmlkZW8vTWFrZWZpbGUuaW4sIGRsbHMvbXN2aWRlby9kcmF3ZGliLmMsIGRsbHMvbXN2aWRlby9tc3ZmdzMyLnNwZWMsIGRsbHMvbXN2aWRlby9tc3ZpZGVvLnNwZWMsIGRsbHMvbXN2aWRlby9tc3ZpZGVvX21haW4uYywgaW5jbHVkZS92ZncuaCwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjE2L21zdmlkZW8uYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvbXN2ZnczMi5hcGksIHdpbmRvd3MvZHJpdmVyLmM6CglCcmFkbGV5IEJhZXR6IDxiYmFldHpAc3R1ZGVudC51c3lkLmVkdS5hdT4KCUltcGxlbWVudGVkIGEgbGFyZ2UgbnVtYmVyIG9mIHRoZSBtc3ZpZGVvIGRsbCByb3V0aW5lcy4KCgkqIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmMsIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglBbGxvdyB0aGUgc2l6ZSBvZiBiaXRtYXBzIHRvIGJlIGNoYW5nZWQgYWZ0ZXIgdG9vbGJhciBidXR0b25zIGhhdmUKCWJlZW4gYWRkZWQuCgoJKiBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jOgoJU2xhdmEgTW9uaWNoIDxTbGF2YV9Nb25pY2hAY250LmNvbT4KCU9uIFdpbmRvd3MgcHJvcGVydHkgc2hlZXQgaGFzIERXTF9VU0VSIGR3b3JkIHBvaW50aW5nIHRvIGEgc3RydWN0dXJlCgl0aGF0IHN0YXJ0cyB3aXRoIEhXTkQgYW5kIFBST1BTSEVFVEhFQURFUiBmaWVsZHMuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBpbmNsdWRlL3dpbmJhc2UuaCwgc2NoZWR1bGVyL3RocmVhZC5jOgoJU2xhdmEgTW9uaWNoIDxTbGF2YV9Nb25pY2hAY250LmNvbT4KCUltcGxlbWVudGF0aW9uIG9mIEdldC9TZXRUaHJlYWRQcmlvcml0eUJvb3N0LgoKCSogZG9jdW1lbnRhdGlvbi9wc2RyaXZlcjoKCVN0ZWZhbiBMZWljaHRlciA8c2xlQGNhbWxpbmUuY29tPgoJQWRkZWQgZG9jdW1lbnRhdGlvbiBvbiBob3cgdG8gc2V0dXAgd2luZSdzIEJ1aWxkaW4gUG9zdHNjcmlwdCBEcml2ZXIKCXdvcmtpbmcgd2l0aCBnaG9zdHNjcmlwdCAoYWZtZmlsZXMsIHBwZGZpbGUpLgoKCSogZGVidWdnZXIvZGVidWdnZXIuaCwgZGVidWdnZXIvZXhwci5jLCBkZWJ1Z2dlci90eXBlcy5jOgoJUGV0ZXIgSHVubmlzZXR0IDxodW5uaXNlQG5vcnRlbG5ldHdvcmtzLmNvbT4KCS0gRXhwbGljaXQgaW5pdCBvZiBydG4uY29va2llIGluIERFQlVHX0V2YWxFeHByIHRvIGJhZCB2YWx1ZSB0bwoJICBleHBvc2UgZnVydGhlciBiYWQgY29kZQoJLSBQcmludCBvZiBwb2ludGVyIHVzZWQgYXMgYXJyYXkgbm93IHdvcmtzCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglKYW1lcyBIYXRoZXdheSA8amFtZXNAbWFjYWRhbWlhbi5jb20+CglPbmx5IHVzZSB0aGUgY29sdW1uIGhlYWRlcnMgdG8gY2FsY3VsYXRlIHRoZSB3aWR0aCBvZiBhCglMRFNfUkVQT1JULXR5cGUgbGlzdGJveCBpZiBpdCBhY3R1YWxseSBoYXMgY29sdW1uIGhlYWRlcnMuCgkoaWUuIExWU19OT0NPTFVNTkhFQURFUiBiaXQgaXMgbm90IHNldC4pCgoJKiB3aW5kb3dzL3dpbnBvcy5jOiBTbGF2YSBNb25pY2ggPFNsYXZhX01vbmljaEBjbnQuY29tPgoJQmVnaW5EZWZlcldpbmRvd1BvcyBzaG91bGQgYWxsb3cgemVybyBjb3VudC4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJQWRkZWQgc2VtaS1zdHViLgoKCSogZGxscy93aW5tbS9tY2kuYzoKCUJyYWRsZXkgQmFldHogPGJiYWV0ekBzdHVkZW50LnVzeWQuZWR1LmF1PgoJSGFuZGxlIG1jaVNlbmRTdHJpbmcoIm9wZW4gPG1jaXR5cGU+IiwuLi4pCgoJKiB0b29scy93cmMvQ0hBTkdFUywgdG9vbHMvd3JjL1JFQURNRS53cmMsIHRvb2xzL3dyYy9nZW5yZXMuYywgdG9vbHMvd3JjL3BhcnNlci5sLCB0b29scy93cmMvcGFyc2VyLnksIHRvb2xzL3dyYy9wcGwubCwgdG9vbHMvd3JjL3dyYy5jLCB0b29scy93cmMvd3JjLmgsIHRvb2xzL3dyYy93cmMubWFuOgoJQmVydGhvIFN0dWx0aWVucyA8YmVydGhvQHBhbnRlci5zb2NpLmFhdS5kaz4KCS0gQnVnZml4OiBNYWNybyBleHBhbnNpb24gb2Ygc3RyaW5ncyB3b3VsZCBhc3NlcnQgYW4gaW50ZXJuYWwgZXJyb3IKCSAgb3IgYSBzZWdmYXVsdCBkdWUgdG8gYSBsYWNraW5nICdcMCcgaW4gdGhlIGV4cGFuc2lvbi4KCS0gQnVnZml4OiBQcmV2ZW50IGJ1ZmZlciBvdmVyZmxvdyBpbiByZWFsbG9jYXRpb24gb2YgbWFjcm8gZXhwYW5zaW9uCgkgIGJ1ZmZlcnMuCgktIEJ1Z2ZpeDogV3JjJ3MgdmVyc2lvbiBpbmZvcm1hdGlvbiB3YXMgbm90IHBhc3NlZCBhcyBudW1lcmljYWwgdG8gdGhlCgkgIHByZXByb2Nlc3NvciBkdWUgdG8gYW4gZXJyb3IgaW4gdGhlIGRlZmluaXRpb24gb2YgdGhlIG1hY3JvLgoJLSBSZWxheGVkIHRoZSBuZXdsaW5lIGNvbnN0cmFpbnQgaW4gZ2xvYmFsIExBTkdVQUdFIHN0YXRlbWVudHMsIHdoaWNoCgkgIHdhcyBpbnRyb2R1Y2VkIGluIHZlcnNpb24gMS4xLjMsIHNvIHRoYXQgc29tZSBmYW5jeSBwcmVwcm9jZXNzb3IKCSAgY29uc3RydWN0cyBjYW4gd29yay4KCS0gUmVtb3ZlZCB0aGUgZ2NjLXN0eWxlICNsaW5lIGhhbmRsaW5nIGZyb20gdGhlIHJlc291cmNlLXBhcnNlciB0byB0aGUKCSAgcmVzb3VyY2Utc2Nhbm5lciBzbyB0aGF0IGl0IGlzIHBvc3NpYmxlIHRvIGluY2x1ZGUgZmlsZXMgYXQgYW55IHN0YWdlCgkgIG9mIHRoZSBzb3VyY2UsIGluZGVwZW5kZW50IG9mIHRoZSBwYXJzZXItc3RhdGUuCgktIEJ1Z2ZpeDogU3RyaW5ndGFibGVzIHdlcmUgbm90IGNvcnJlY3RseSBzZWFyY2hlZCBmb3IgZHVwbGljYXRlcwoJICBiZWNhdXNlIHRoZSBsYW5ndWFnZSBjb21wYXJpc29uIGRpc3JlZ2FyZGVkIHRoZSBzdWJsYW5ndWFnZS4KCS0gRWxpbWluYXRlZCBhIHJlcGV0aXRpdmUgd2FybmluZyB3aGVuIHdyaXRpbmcgc3RyaW5ndGFibGVzIHdpdGggemVybwoJICBsZW5ndGggc3RyaW5nIGVudHJpZXMuIFRoZXNlIGFyZSBwZXJmZWN0bHkgdmFsaWQgKGJ1dCBtYWtlIG5vIHNlbnNlOi0pLgoJICBXYXJuaW5ncyBhcmUgbm93IG9ubHkgZ2VuZXJhdGVkIGR1cmluZyBwYXJzZSBpbiBwZWRhbnRpYyBtb2RlLgoKCSogZGxscy9vbGVhdXQzMi9vbGUyZGlzcC5jOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJRml4IFN5c1N0cmluZ0J5dGVMZW4gdG8gcmVhbGx5IHJldHVybiB0aGUgbGVuZ3RoIGluIGJ5dGVzLgoKCSogZGxscy9jb21jdGwzMi9yc3JjLnJjOgoJU2xhdmEgTW9uaWNoIDxTbGF2YV9Nb25pY2hAY250LmNvbT4KCUNoYW5nZWQgdGhlIHNpemUgb2YgcHJvcGVydHkgc2hlZXQgdGVtcGxhdGUgdG8gYmUgdGhlIHNhbWUgYXMgdGhlCglvcmlnaW5hbCBvbmUgKHdhcyAyOTJ4MTU5LCBub3cgMjIweDE0MCkuCgoJKiBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGUzMi9vbGVvYmouYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUltcGxlbWVudCBJRGF0YUFkdmlzZUhvbGRlci4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJRml4IHR5cG8gaW4gSVR5cGVMaWI6OklzTmFtZS4KCgkqIGRsbHMvb2xlMzIvaGdsb2JhbHN0cmVhbS5jOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJQ3JlYXRlU3RyZWFtT25IR2xvYmFsIHNob3VsZCBhbGxvYyBhIHNoYXJlZCBtZW1vcnkgYmxvY2sgaWYgc3VwcGxpZWQKCWhhbmRsZSBpcyAwLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglEbyBub3QgY3Jhc2ggaWYgdGhlcmUgd2FzIG5vIGZpbGVzIHNlbGVjdGVkIGFuZCBPSyBidXR0b24gd2FzIHByZXNzZWQuCgoJKiBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglGaXggYSBjb3VwbGUgb2YgcHJvYmxlbXMgd2l0aCB1bmRlcnJ1bnMgYW5kIHN0b3BwaW5nL3Jlc3RhcnRpbmcuCgoJKiBtaXNjL21haW4uYzoKCUpvZXJnIE1heWVyIDxqbWF5ZXJAdGVsZXN1bjIudGVsZW1hdGlvbi5kZT4KCUZpeGVkIHRoZSBkZWJ1Z21zZyBoZWxwLgoKCSogZGxscy93aW5hc3BpL2FzcGkuYywgZGxscy93aW5hc3BpL3dpbmVzY3NpLmg6CglEYXZpZCBFbGxpb3R0IDxkZmVAaW5maW5pdGUtaW50ZXJuZXQubmV0PgoJTWFwIGVhY2ggY2hhbm5lbCBvbiBldmVyeSBob3N0IHRvIGFuIEFTUEkgY29udHJvbGxlciBudW1iZXIuCglTdG9yZSBtYXAgaW4gSEtFWV9EWU5fREFUQS4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglEU0FfSW5zZXJ0SXRlbSByZXR1cm5zIG5JbmRleCwgbm90IG5JdGVtQ291bnQuCgoJKiBkbGxzL2NvbWN0bDMyL21vbnRoY2FsLmM6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCUZpeGVkIGJhY2tncm91bmQgcmVkcmF3aW5nIHdoZW4gY29udHJvbCBpcyBjb3ZlcmVkLiAgRml4ZWQgYSByZWFsbHkKCWR1bWIgbWlzdGFrZSBJIG1hZGUgd2l0aCBib3JkZXIgZHJhd2luZyBtYW55IHBhdGNoZXMgYWdvLiAgRml4ZWQKCW9mZnNldCBieSAxIGFsaWdubWVudCBpc3N1ZXMuCgoJKiBkbGxzL2RkcmF3L2RzdXJmYWNlL21haW4uYzoKCU1hcmN1cyBNZWlzc25lciA8TWFyY3VzLk1laXNzbmVyQGNhbGRlcmEuZGU+CglSZW1vdmVkIGFub3RoZXIgYmFkIGFzc2VydCBhbmQgdHdvIG5vIGxvbmdlciBuZWVkZWQgb25lcy4KCjIwMDAtMDYtMjUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW4zMi9leGNlcHQuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBiYWQgZXhjZXB0aW9uIGhhbmRsZXIgY2hhaW4gdGVybWluYXRpb24uCgoJKiB3aW5kb3dzL3gxMWRydi93bmQuYywgd2luZG93cy93aW4uYzoKCUxhd3NvbiBXaGl0bmV5IDxsYXdzb25fd2hpdG5leUBqdW5vLmNvbT4KCU1vdmVkIHplcm8tc2l6ZWQgd2luZG93IGhhY2sgdG8geDExZHJ2LgoKCSogZGxscy9udGRsbC9udC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglSZXR1cm4gIm5vIGRlYnVnZ2VyIGF0dGFjaGVkIiBpbiBOdFF1ZXJ5SW5mb3JtYXRpb25Qcm9jZXNzIHRvIHNhdGlzZnkKCXNvbWUgY29weSBwcm90ZWN0aW9uIG1lY2hhbmlzbXMuCgoJKiBkbGxzL2NvbW1kbGcvY29sb3JkbGcuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgY3Jhc2ggd2hlbiBscFRlbXBsYXRlTmFtZSBpcyBnb3R0ZW4gZnJvbSBNQUtFSU5UUkVTT1VSQ0UuCgoJKiBkbGxzL2RkcmF3L2RzdXJmYWNlL21haW4uYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgdHdvIGFzc2VydHMgaW4gQmx0KCkuCgoJKiBkbGxzL2RkcmF3L2hlbHBlci5jOgoJR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglQcm9wZXJseSBjYXN0IGFyZ3VtZW50cyB0byBwcmludGYgdG8gbWF0Y2ggdGhlIGludGVuZGVkIG91dHB1dC4KCgkqIGRsbHMvd2lubW0vbW1pby5jLCBkbGxzL3dpbm1tL3dpbmVtbS5oLCBpbmNsdWRlL21tc3lzdGVtLmg6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVNldmVyYWwgZml4ZXMgc3BvdHRlZCBieSBDb3JlbCAoSmVhbi1DbGF1ZGUgQmF0aXN0YSAmIFNlYW4gTGFuZ2xleSkuCglTZWVraW5nIGZyb20gU0VFS19FTkQgd2FzIHdyb25nLgoJU2Vla2luZyBvbiBlbXB0eSBidWZmZXIgd2FzIHdyb25nLgoJU29tZSBpbnN0YWxsZWQgaW9Qcm9jcyBoYWQgdW5pbml0aWFsaXplZCBmaWVsZHMuCglBIGZldyBtb3JlIGJpdHMgZm9yIHJlbmFtZSBmdW5jdGlvbnMuCgoJKiBkZWJ1Z2dlci9kYmcueSwgZGVidWdnZXIvaW50dmFyLmgsIGRlYnVnZ2VyL3dpbmVkYmcuYywgZG9jdW1lbnRhdGlvbi93aW5lZGJnOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBCcmVha09uRGxsTG9hZCBpbnRlcm5hbCB2YXIsIGNsZWFuZWQgdXAgcmVnaXN0ZXIgdmFsaWRhdGlvbiBvbgoJZXhjZXB0aW9uLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglNaWtlIE1jQ29ybWFjayA8TWlrZV9NY0Nvcm1hY2tAbG9va3NtYXJ0LmNvbS5hdT4KCUFkZCB3b3JrYXJvdW5kcyBmb3IgbnVsbCBzdHJpbmdzIGluIFRPT0xCQVJfSW5zZXJ0QnV0dG9uQSBhbmQgY2FsbGluZwoJVE9PTEJBUl9TZXRCdXR0b25TaXplIGFmdGVyIGJ1dHRvbiBhZGRlZCB0byB0aGUgdG9vbGJhciAobGF0dGVyIGZvcgoJV0lOWklQMzIuRVhFKQoKCSogY29udHJvbHMvY29tYm8uYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglTZXQgdGhlIG1pbmltdW0gZHJvcHBlZCBoZWlnaHQgdG8gdGhlIGNvbWJvIGxpc3QgaGVpZ2h0IGlmIGFueSBpbgoJQ0JEcm9wRG93bi4KCgkqIGZpbGVzL2Rvc19mcy5jOiBEYXZlIEhhd2tlcyA8ZGF2ZWgtd2luZUBjYWRsaW5rLmNvbT4KCUlmIHdoaXRlc3BhY2Ugb3IgZG90cyBhcmUgYXBwZW5kZWQgdG8gdGhlIGVuZCBvZiBhbnkgY29tcG9uZW50IGluIGEKCXBhdGggdGhlbiBpdCBzaG91bGQgYmUgaWdub3JlZC4KCjIwMDAtMDYtMjQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBsb2FkZXIvbW9kdWxlLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIGluY2x1ZGUvcHJvY2Vzcy5oOgoJTWFrZSBzdXJlIHRoZSBjbWRsaW5lIHBhc3NlZCB0byBDcmVhdGVQcm9jZXNzQSBpcyB3cml0ZWFibGUgKHRoYW5rcyB0bwoJUGV0ZXIgR2FudGVuIDxwZXRlckBnYW50ZW4ub3JnPikuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYywgZGxscy93aW5tbS93aW5lb3NzL21pZGkuYywgZGxscy93aW5tbS93aW5lb3NzL29zcy5jLCBkbGxzL3dpbm1tL3dpbmVvc3Mvb3NzLmg6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUNsZWFuZWQgdXAgbG9hZGluZy9pbml0IGNvZGUgaW4gT1NTLgoJQ2xlYW5lZCB1cCBnZXREZXZDYXBzIGluIG1pZGkgcGFydC4KCUltcGxlbWVudGVkIGFzeW5jaHJvbm91cyB3YXZlSW4gcmVjb3JkaW5nIHVzaW5nIGEgdGhyZWFkLgoKCSogZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgd2luMzIvY29uc29sZS5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBIGZldyBtaXNzaW5nIGNvbnNvbGUgc3R1YnMuCgoJKiBkbGxzL2NvbWN0bDMyL2FuaW1hdGUuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgYW5pbWF0aW9uIGxvYWRpbmcgZm9yIFJMRSBlbmNvZGluZy4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5oLCBpbmNsdWRlL3dpbmUvb2JqX29sZWF1dC5oLCBkbGxzL29sZWF1dDMyL29sZWF1dDMyLnNwZWMsIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CgktIHJlbW92ZWQgaGFjayB0byBmaW5kIHRoZSByaWdodCByZXNvdXJjZQoJLSB1cGRhdGVkIHRvIHVzZSB0aGUgSUNPTSBtYWNyb3MKCS0gY2xlYW5lZCB1cCB1c2UgdHlwZWxpYiBhbmQgdHlwZWxpYjIgKHdhcyBtaXhlZCB1cCkKCgkqIGRsbHMvY29tbWRsZy9jZGxnLmgsIGRsbHMvY29tbWRsZy9jZGxnMzIuYywgZGxscy9jb21tZGxnL2NkbGdfRW4ucmMsIGRsbHMvY29tbWRsZy9jZGxnX3h4LnJjLCBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmMsIGRsbHMvY29tbWRsZy9maWxlZGxnYnJvd3Nlci5oOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CgktIGZpeGVkIHJlcG9ydGVkIGJ1Z3MKCS0gZml4ZWQgZGVmYXVsdCBleHRlbnNpb25zCgktIGltcGxlbWVudGVkICJicm93c2UgdG8gZGVza3RvcCIgYnV0dG9uCgoJKiBtZW1vcnkvZW52aXJvbi5jLCB0b29scy93aW5lYnVpbGQvc3BlYzMyLmMsIGluY2x1ZGUvd2luYmFzZS5oOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUdldENvbW1hbmRMaW5lIHNob3VsZCByZXR1cm4gbm9uLWNvbnN0IHN0cmluZ3MuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwuc3BlYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJQ2FsbFByb2NFeDMyVyBzaG91bGQgYmUgbmFtZWQgX0NhbGxQcm9jRXgzMlcuCgoJKiBmaWxlcy9jaGFuZ2UuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJQWRkZWQgc29tZSBzdHVmZiBzYXlpbmcgdGhhdCB0aGlzIGlzIE5PVCBzdXBwb3J0ZWQuCgoJKiByZWxheTMyL3Nub29wLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCUF2b2lkIGNhbGxpbmcgdGhlIGV4Y2VwdGlvbiBoYW5kbGVyIGluIHNvbWUgY2FzZXMuCgoJKiBkbGxzL3NoZWxsMzIvY2xhc3Nlcy5jLCBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmMsIGRsbHMvc2hlbGwzMi9zaGx3YXBpLnNwZWMsIGluY2x1ZGUvc2hsd2FwaS5oLCBpbmNsdWRlL3dpbmUvb2JqX3NoZWxsdmlldy5oLCBpbmNsdWRlL3dpbmUvdW5kb2NzaGVsbC5oOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CgktIG1hbnkgbmV3IFBhdGgqIHN0dWJzCgktIG1hbnkgYnVnZml4ZXMKCS0gY2xhc3MgZnVuY3Rpb25zIGV4cGFuZGluZyBlbnZpcm9ubWVudHMgdmFyaWFibGVzIG5vdwoKCSogZGxscy93aW5tbS9sb2x2bGRydi5jLCBkbGxzL3dpbm1tL21tc3lzdGVtLmMsIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglJbXBsZW1lbnRlZCB0aGUgRGlyZWN0U291bmQgSEFMIGluIHdpbm1tJ3Mgd2luZW9zcyAoT3BlbiBTb3VuZCBTeXN0ZW0pCglkcml2ZXIsIGFuZCB3aW5tbSdzIGludGVyZmFjZSBmb3IgRGlyZWN0U291bmQgdG8gYWNjZXNzIGl0LiBJdAoJcmVxdWlyZXMgdGhlIGFiaWxpdHkgdG8gbW1hcCAvZGV2L2RzcCwgdG8gdHJpZ2dlciBwbGF5YmFjaywgYW5kCglzYW1wbGUtYWNjdXJhdGUgcG9zaXRpb24gcmVhZG91dHMuIChJZiB0aGUgc291bmRjYXJkJ3MgZGV2aWNlIGRyaXZlcgoJZG9lcyBub3QgcmVwb3J0IHRoZXNlIGNhcGFiaWxpdGllcywgd2luZW9zcyB3aWxsIHJlcG9ydCB0aGUgSEFMIGFzCgl1bmF2YWlsYWJsZSBhbmQgZm9yY2UgRGlyZWN0U291bmQgdG8gdXNlIGl0cyBIRUwgaW5zdGVhZC4pCgoJKiBpbmNsdWRlL21tc3lzdGVtLmgsIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUltcGxlbWVudGVkIHRoZSBEaXJlY3RTb3VuZCBIQUwgbW9kZSBmb3IgRE1BIHByaW1hcnkgYnVmZmVycywgd2l0aCBhCgkxMG1zIGxhdGVuY3kgKG5vdCBub3RpY2VhYmxlKSwgYW5kIGFib3V0IDMwMG1zIG9mIHByZWJ1ZmZlcmluZy4gRml4ZWQKCWEgZmV3IGJ1Z3MuIEFkZGVkIGEgV2luZS1vbmx5IFdJTk1NIGZsYWcgZm9yIHdhdmVPdXRPcGVuIGZvcgoJRGlyZWN0U291bmQgdG8gdXNlIChzbyBkcml2ZXJzIGxpa2Ugd2luZW9zcyBoYXZlIHNvbWUgd2F5IG9mIGtub3dpbmcKCXdoYXQgdG8gcHJlcGFyZSBpdHNlbGYgZm9yKS4KCgkqIGRsbHMvdXNlci91c2VyLnNwZWMsIGluY2x1ZGUvd2luZS93aW51c2VyMTYuaCwgd2luZG93cy9jdXJzb3JpY29uLmMsIHdpbmRvd3Mvc3lzcGFyYW1zLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCUltcGxlbWVudGVkL3N0dWJiZWQgSWNvblNpemUoKSBhbmQgQ29udHJvbFBhbmVsSW5mbygpIG5lZWRlZCBmb3IgV2luCgkyLjAgY29udHJvbC5leGUgYW5kIHBhaW50LmV4ZS4KCgkqIGluY2x1ZGUvd2ludXNlci5oOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUFkZGVkIElESV9XSU5MT0dPLgoKCSogZGVidWdnZXIvd2luZWRiZy5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglEb24ndCBibG9jayBlbmRsZXNzbHkgYWZ0ZXIgbGFzdCBkZWJ1Z2dlZCBwcm9jZXNzIGhhcyBleGl0ZWQuCgoJKiBtZW1vcnkvc3RyaW5nLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgKGJhY2spIGNvcnJlY3QgYmVoYXZpb3IgZm9yIE5VTEwgcHRycyBpbiBDaGFyVG9PZW0gZnVuY3MuCgoJKiBtZW1vcnkvZ2xvYmFsLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgc29tZSBPT00gY29uZGl0aW9ucyBpbiBHbG9iYWxBbGxvYy4KCgkqIGRsbHMvbnRkbGwvbWlzYy5jOgoJR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglBZGRlZCBtaXNzaW5nICNpbmNsdWRlIDxtYXRoLmg+LgoKCSogaW5jbHVkZS93aW5yZXNyYy5oOiBSZW1vdmVkIE1JTUUgZ2FyYmFnZS4KCgkqIGRsbHMvZGRyYXcvZGRyYXcveDExLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUNyZWF0ZSB4bGliIGRkc3VyZmFjZXMgd2l0aCBjb3JyZWN0IHJlZmVyZW5jZSBjb3VudHMuCgoJKiBkbGxzL2dkaS9NYWtlZmlsZS5pbiwgZGxscy9nZGkvYmlkaTE2LmMsIGRsbHMvdXNlci9NYWtlZmlsZS5pbiwgZGxscy91c2VyL2JpZGkxNi5jLCBkbGxzL3VzZXIvbmV0d29yay5jLCBtaXNjL01ha2VmaWxlLmluLCBtaXNjL2JpZGkxNi5jLCBtaXNjL25ldHdvcmsuYzoKCVNwbGl0IGJpZGkxNi5jIGFuZCBuZXR3b3JrLmMgb3V0IG9mIG1pc2MvIGludG8gdGhlaXIgcmVzcGVjdGl2ZSBkbGxzLgoKMjAwMC0wNi0yMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHRvb2xzLy5jdnNpZ25vcmUsIHRvb2xzL01ha2VmaWxlLmluLCB0b29scy9idWlsZC1zcGVjLnR4dCwgdG9vbHMvYnVpbGQuYywgdG9vbHMvd2luZWJ1aWxkLy5jdnNpZ25vcmUsIHRvb2xzL3dpbmVidWlsZC9NYWtlZmlsZS5pbiwgdG9vbHMvd2luZWJ1aWxkL1JFQURNRSwgdG9vbHMvd2luZWJ1aWxkL2J1aWxkLmgsIHRvb2xzL3dpbmVidWlsZC9tYWluLmMsIHRvb2xzL3dpbmVidWlsZC9wYXJzZXIuYywgdG9vbHMvd2luZWJ1aWxkL3JlbGF5LmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMTYuYywgdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jLCB0b29scy93aW5lYnVpbGQvdXRpbHMuYywgTWFrZS5ydWxlcy5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGlmMTYzMi8uY3ZzaWdub3JlLCBpZjE2MzIvTWFrZWZpbGUuaW4sIHJlbGF5MzIvLmN2c2lnbm9yZSwgcmVsYXkzMi9NYWtlZmlsZS5pbjoKCVNwbGl0IHRoZSBidWlsZCBwcm9ncmFtIGluIHNldmVyYWwgZmlsZXMuCglSZW5hbWVkIGl0ICd3aW5lYnVpbGQnIHRvIGF2b2lkIHBvc3NpYmxlIGNvbmZsaWN0cy4KCUNsZWFuZWQgdXAgY29tbWFuZC1saW5lIHBhcnNpbmcuCglNYWtlIGl0IHVuZGVyc3RhbmQgLWZQSUMgaW5zdGVhZCBvZiAtcGljLgoJTWVyZ2VkIGNhbGwxNi5zIGFuZCBjYWxsMzIucyBnZW5lcmF0ZWQgZmlsZXMuCgoJKiBkbGxzL2dkaS9nZGkuc3BlYywgZGxscy9rZXJuZWwva2VybmVsLnNwZWMsIGRsbHMva2VybmVsL3N5c3RlbS5zcGVjLCBkbGxzL3NvdW5kL3NvdW5kLnNwZWMsIGRsbHMvdXNlci91c2VyLnNwZWM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCUFkZGVkIG1vcmUgb3JkaW5hbHMgdG8gS0VSTkVMLCBHREksIFVTRVIgYW5kIHN5c3RlbSBkcml2ZXJzCgkoV2luZG93cyAxLjEsIDIuMCkuCgoJKiBkbGxzL2RkcmF3L2RkcmF3L2RnYS5jOgoJUGV0ZXIgR2FudGVuIDxwZXRlckBnYW50ZW4ub3JnPgoJX2NvbW1vbl9kZXB0aF90b19waXhlbGZvcm1hdCgpIHJldHVybnMgLTEgYW5kIG5vdCB6ZXJvLCBpZiBhIG1vZGUgaXMKCXN1cHBvcnRlZC4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJRGF2ZSBIYXdrZXMgPGRhdmVoLXdpbmVAY2FkbGluay5jb20+CglBdm9pZCBncmF0dWl0b3VzbHkgY2hhbmdpbmcgdGhlIFpPUkRFUi4KCgkqIGRsbHMvZGRyYXcvZGRyYXcveDExLmMsIGRsbHMvZGRyYXcvZGRyYXdfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L2RzdXJmYWNlL3gxMS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglVc2UgY29ycmVjdCBicHAgZm9yIHRoZSBYIHNpZGUgb2YgdGhlIHN1cmZhY2UgWEltYWdlcy4KCUNsZWFuZWQgdXAgWGxpYl9TdXJmYWNlX1JlbGVhc2Ugc28gaXQgaXMgYSBiaXQgbW9yZSByZWFkYWJsZS4KCXVzZSBWaXJ0dWFsQWxsb2MgZm9yIGNvbnZlcnNpb24tcHJvZ3JhbXNpZGUgYnVmZmVyIHRvIHNpbXBsaWZ5CgloYW5kbGluZy4KCgkqIGxvYWRlci9yZXNvdXJjZS5jOgoJRGF2ZSBIYXdrZXMgPGRhdmVoLXdpbmVAY2FkbGluay5jb20+CglHbG9iYWxGcmVlMTYgcmV0dXJucyBOVUxMIG9uIHN1Y2Nlc3MsIGJ1dCBEZXN0cm95QWNjZWxlcmF0b3JUYWJsZQoJc2hvdWxkIHJldHVybiBUUlVFIG9uIHN1Y2Nlc3MuCgoJKiBkbGxzL2RkcmF3L2RzdXJmYWNlL21haW4uYywgZGxscy9kZHJhdy9oZWxwZXIuYywgZGxscy9kZHJhdy94MTEuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRHVtcCBGb3VyQ0MgY29ycmVjdGx5LCBwcmludCBjb252ZXJzaW9uIG1lc3NhZ2VzLCBhZGQgcmVmZXJlbmNlIHRvCglkZHJhdyBpbiBERFN1cmZhY2U6OkdldERESW50ZXJmYWNlLgoKCSogZGxscy94MTFkcnYveDExZHJ2X21haW4uYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUmVzdHJpY3QgblRpbWVvdXQgdG8gMC0zMjc2Nywgc2luY2UgaXQgaXMgYSAxNmJpdCB2YWx1ZSBpbiBYLgoKCSogZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jOgoJRGF2ZSBIYXdrZXMgPGRhdmVoLXdpbmVAY2FkbGluay5jb20+CglFeGNlcHRpb24gaGFuZGxpbmcgZm9yIFNJR0ZQRSBtdXN0IGFsd2F5cyBjbGVhciB0aGUgRlBVIGludGVycnVwdAoJc3RhdHVzLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jLCBkbGxzL2NydGRsbC8uY3ZzaWdub3JlLCBkbGxzL2NydGRsbC9NYWtlZmlsZS5pbiwgZGxscy9jcnRkbGwvY3J0ZGxsLnNwZWMsIGRsbHMvY3J0ZGxsL2NydGRsbF9tYWluLmMsIGRsbHMvY3J0ZGxsL21ic3RyaW5nLmMsIGRsbHMvY3J0ZGxsL3djc3RyaW5nLmMsIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sIGRsbHMvbnRkbGwvbWlzYy5jLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvbnRkbGwvcnRsc3RyLmMsIGRsbHMvbnRkbGwvc3RyaW5nLmMsIGRsbHMvbnRkbGwvd2NzdHJpbmcuYywgaW5jbHVkZS9jcnRkbGwuaCwgTWFrZS5ydWxlcy5pbiwgTWFrZWZpbGUuaW4sIGRsbHMvTWFrZWZpbGUuaW46CglNb3ZlZCBzaGFyZWQgY3J0ZGxsL250ZGxsIGZ1bmN0aW9ucyBpbnRvIG50ZGxsLgoJTWFkZSBjcnRkbGwgYSBzZXBhcmF0ZSBkbGwuCgoJKiBkbGxzL29sZWNsaS9vbGVjbGlfbWFpbi5jLCBkbGxzL3NoZWxsMzIvY2xhc3Nlcy5jLCBkbGxzL3NoZWxsMzIvZm9sZGVycy5jLCBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGluY2x1ZGUvd2luZS9vYmpfYmFzZS5oLCBtaXNjL2xzdHIuYywgZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvZGF0YWNhY2hlLmMsIGRsbHMvb2xlMzIvb2xlMi5jLCBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYzoKCUNsZWFuZWQgdXAgYSBmZXcgaW50ZXItZGxsIGRlcGVuZGVuY2llcy4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYywgZGxscy93aW5zb2NrL3NvY2tldC5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIGlzc3VlcyBmb3VuZCBieSB3aW5hcGlfY2hlY2suCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tYWluLmMsIGRsbHMvd2luaW5ldC9odHRwLmMsIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIHdhcm5pbmdzLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL29sZTMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL29sZWF1dDMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL29sZWNsaTMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL29wZW5nbDMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3NobHdhcGkuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvdXNlcjMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3dpbmluZXQuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvd3MyXzMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMuZGF0LCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvY3J0ZGxsLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL2tlcm5lbDMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL21zdmZ3MzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2xvY2FsLnBtOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIE1pbm9yIEFQSSBmaWxlcyBmaXhlcy4KCS0gTWlub3IgYnVnIGZpeGVzIGFuZCBhZGRpdGlvbnMuCgoJKiBpbmNsdWRlL2RzZHJpdmVyLmgsIGRsbHMvZHNvdW5kL01ha2VmaWxlLmluLCBkbGxzL2Rzb3VuZC9kc291bmQuc3BlYywgZGxscy9kc291bmQvZHNvdW5kX21haW4uYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJUmVzdHJ1Y3R1cmUgRGlyZWN0U291bmQuIFJlbW92ZSBkc291bmQgdGhyZWFkLCB1c2UgTU0gdGltZXJzCglpbnN0ZWFkLiBJbXBsZW1lbnRlZCB0aGUgRGlyZWN0U291bmQgSEVMLCB3aXRoIHRoZSBhYmlsaXR5IHRvCglwcmVidWZmZXIgMzAwbXMgb2Ygc291bmQsIHdoaWxlIG1haW50YWluaW5nIHBsYXkgbGF0ZW5jeSBvZiA0MG1zLCBhbmQKCXRoZSBleGFjdCBwbGF5cG9zaXRpb24gKFN0YXJjcmFmdCBjaW5lbWF0aWNzIGFyZSBsaXAtc3luY2hlZCkuICBTb21lCglpbml0aWFsIEhBTCBzdXBwb3J0LgoKCSogcmVsYXkzMi9idWlsdGluMzIuYzoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVJlcGxhY2VkIHRoZSBCVUlMVElOMzJfZGxvcGVuKCkgRVJSKCkgYnkgYSBXQVJOKCkuCgoJKiBpbmNsdWRlL3dpbnJlc3JjLmg6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJQWRkZWQgaW5jbHVkZS93aW5yZXNyYy5oIGZvciBwb3J0aW5nIHdpdGggd2luZWxpYi4KCgkqIGRsbHMvd2luc3Bvb2wvaW5mby5jLCBkbGxzL3dpbnNwb29sL3dpbnNwb29sLmRydi5zcGVjOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglNZXJnZWQgRGV2aWNlQ2FwYWJpbGl0aWVzIGFuZCBEZXZpY2VDYXBhYmlsaXRpZXNBLgoKCSogZGxscy9tc3ZpZGVvL21zdmZ3MzIuc3BlYywgZGxscy9tc3ZpZGVvL21zdmlkZW9fbWFpbi5jLCBpbmNsdWRlL3Zmdy5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglNZXJnZWQgTUNJV25kQ3JlYXRlIGFuZCBNQ0lXbmRDcmVhdGVBLgoKCSogZGxscy9vbGUzMi9jb21wb2JqLmM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglDTFNJREZyb21TdHJpbmcgYXBwYXJlbnRseSBhbHNvIGFjY2VwdHMgUHJvZ0lEcyBhcyBhbiBpbnB1dCBzdHJpbmcuCgoJKiBpbmNsdWRlL3dpbnVzZXIuaDoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglBZGRlZCBTQ19JQ09OL1NDX1pPT00gKG9ic29sZXRlIG1hY3JvcykuCgoJKiBpbmNsdWRlL3dpbmluZXQuaDoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgcHJvdG90eXBlcyBmb3IgbmV3IEludGVybmV0Q2hlY2tDb25uZWN0aW9uKi4KCjIwMDAtMDYtMjAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL29sZWNsaS9vbGVjbGkzMi5zcGVjLCBkbGxzL29sZWNsaS9vbGVjbGlfbWFpbi5jLCBkbGxzL29sZXN2ci9vbGVzdnJfbWFpbi5jLCBkbGxzL29sZWF1dDMyL29sZWF1dDMyLnNwZWM6CglDbGVhbmVkIHVwIGEgZmV3IGludGVyLWRsbCBkZXBlbmRlbmNpZXMuCgoJKiB0b29scy93bWMvTWFrZWZpbGUuaW4sIHRvb2xzL3dyYy9NYWtlZmlsZS5pbjoKCUFsZXhhbmRlciBWLiBMdWt5YW5vdiA8bGF2QGxvbmcueWFyLnJ1PgoJRml4ZWQgcHJvYmxlbXMgd2l0aCBjb21waWxhdGlvbi9pbnN0YWxsIG91dCBvZiBzb3VyY2UgdHJlZS4KCgkqIGluY2x1ZGUvd2luZXJyb3IuaCwgZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmM6CglOb29tZW4gSGFtemEgPG5vb21lbkBtYWNhZGFtaWFuLmNvbT4KCU9sZUNvbnZlcnRPTEVTVFJFQU1Ub0lTdG9yYWdlIGZhaWxzIChyZXR1cm5zIFJFR0RCX0VfQ0xBU1NOT1RSRUcpIHdoZW4KCXRoZSBDTFNJRCBvZiB0aGUgT0xFIG9iamVjdCBpcyBub3QgZm91bmQgaW4gdGhlIHJlZ2lzdHJ5LiBGaXhlZC4KCgkqIGZpbGVzL3Byb2ZpbGUuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCU1ha2UgV3JpdGVQcml2YXRlUHJvZmlsZVNlY3Rpb25BIGNhcmUgZm9yICIiIGFuZCBOVUxMIGFzIHRoZQoJc3RyaW5nIGFyZ3VtZW50LiBOZXcgZnVuY3Rpb24gUFJPRklMRV9EZWxldGVBbGxLZXlzLgoKCSogZGxscy93aW5tbS93aW5lb3NzL21pZGkuYzoKCUdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJRml4ZWQgZm9ybWF0IHN0cmluZ3MuCgoJKiBwcm9ncmFtcy93aW5oZWxwL2hscGZpbGUuYywgcHJvZ3JhbXMvd2luaGVscC9tYWNyby5jLCBwcm9ncmFtcy93aW5oZWxwL21hY3JvLmxleC5sLCBwcm9ncmFtcy93aW5oZWxwL3dpbmhlbHAuYzoKCVJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglGaXggYSBjcmFzaCBpbiB3aW5oZWxwIGNhdXNlZCBieSBobWVtY3B5MTYgd2l0aG91dCBwcm90b3R5cGUuCglGaXggc29tZSBjb21waWxlciB3YXJuaW5ncy4KCgkqIGRsbHMvKi9NYWtlZmlsZS5pbjoKCUZvciBkbGxzLCBkZXJpdmUgU1BFQ19TUkNTIGZyb20gTU9EVUxFIGFuZCBBTFROQU1FUy4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglGaXhlZCBXSERSX0RPTkUgcmFjZSBjb25kaXRpb24uCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxzdHJpbmcuYywgZGxscy9zaGVsbDMyL3NobHdhcGkuc3BlYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUltcGxlbWVudGVkIFN0ckNhdEJ1ZmYuCgoJKiBpbmNsdWRlL3NobG9iai5oOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUFkZGVkIHR5cGVkZWYgb2YgRFJPUEZJTEVTLgoKCSogaW5jbHVkZS93aW5lcnJvci5oOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUFkZGVkIFJlc3VsdEZyb21TY29kZS9HZXRTY29kZSAob2Jzb2xldGUgbWFjcm9zKS4KCgkqIGdyYXBoaWNzL3BhaW50aW5nLmM6CglEYXZlIEhhd2tlcyA8ZGF2ZWgtd2luZUBjYWRsaW5rLmNvbT4KCU1vdmVUb0V4OiByZXR1cm4gVFJVRSBldmVuIGlmIHRoZXJlIGlzIG5vIGRyaXZlciBpbXBsZW1lbnRhdGlvbi4KCgkqIGRsbHMvY29tY3RsMzIvc3RhdHVzLmM6CglHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCVByb3RlY3QgYWdhaW5zdCBwcm9ncmFtcyBjcmVhdGluZyBwYXJ0cyB3aXRoIG5lZ2F0aXZlIHdpZHRoLgoKMjAwMC0wNi0xOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGxvYWRlci9yZXNvdXJjZS5jLCBtc2Rvcy9pbnQyMS5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglVc2UgR2V0U3lzdGVtRGVmYXVsdExhbmdJRCgpIGluc3RlYWQgb2YgV0lORV9MYW5ndWFnZUlkLgoKCSogZG9jdW1lbnRhdGlvbi93aW5lZGJnLCBkZWJ1Z2dlci9icmVhay5jLCBkZWJ1Z2dlci9kYmcueSwgZGVidWdnZXIvZGVidWcubCwgZGVidWdnZXIvZGVidWdnZXIuaCwgZGVidWdnZXIvaW50dmFyLmgsIGRlYnVnZ2VyL21lbW9yeS5jLCBkZWJ1Z2dlci9tb2R1bGUuYywgZGVidWdnZXIvcmVnaXN0ZXJzLmMsIGRlYnVnZ2VyL3N0YWNrLmMsIGRlYnVnZ2VyL3R5cGVzLmMsIGRlYnVnZ2VyL3dpbmVkYmcuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJLSBjbGVhbmVkLXVwIGJyZWFrIGhhbmRsaW5nCgktIGJldHRlciBpbnRlZ3JhdGlvbiBvZiBkZWJ1Z2dlciBpbm5lciBsb29wcyAocGFyc2VyICYgZXZlbnRzKQoJLSBhZGRlZCBhdHRhY2ggY29tbWFuZAoJLSBpbXByb3ZlZCBwYXJzZXIgc28gdGhhdCBpdCBjYW4gYmUgZW50ZXJlZCB3aXRob3V0IGFueSBwcm9jZXNzIGxvYWRlZAoJLSBhZGRlZCBCcmVha09uRmlyc3RDaGFuY2UgaW50ZXJuYWwgdmFyaWFibGUKCS0gZGlzYWJsZWQgTkUgbW9kdWxlIHN5bWJvbCBtb2R1bGUgKHdoaWNoIGlzIGJyb2tlbiB3aXRoIEFTUykKCS0gbWlzYyBwb3J0YWJpbGl0eSBjbGVhbnVwcwoKCSogZGxscy9vbGVhdXQzMi9zYWZlYXJyYXkuYywgaW5jbHVkZS93aW5lL29ial9vbGVhdXQuaDoKCVN0ZXBoYW5lIEx1c3NpZXIgPHN0ZXBoYW5lQG1hY2FkYW1pYW4uY29tPgoJLSBGaXhlZCBhIG1lbW9yeSBjb3JydXB0aW9uIGluIHNhZmUgYXJyYXlzIHdoZW4gdXNpbmcgU2FmZUFycmF5Q29weSgpCgkgIGZ1bmN0aW9uIHdpdGggYSBTYWZlQXJyYXkgY3JlYXRlZCB3aXRoIEZBREZfRklYRURTSVpFLgoJLSBBZGRlZCBtb3JlIEZBREYgZmxhZ3MgaW4gdGhlIC5oIGZpbGUuCgktIEZBREYgZmxhZ3Mgd2VyZSBkZWZpbmVkIHR3aWNlLCBjb3JyZWN0ZWQgdGhlIHNpdHVhdGlvbi4KCgkqIGdyYXBoaWNzL3gxMWRydi90ZXh0LmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCURvIG5vdCBhc3N1bWUgdGhhdCBkb3VibGUgYnl0ZSBmb250ID09IHVuaWNvZGUgZm9udC4KCgkqIGRsbHMvbXN2aWRlby9tc3ZpZGVvX21haW4uYywgaW5jbHVkZS9kZGVtbC5oLCBpbmNsdWRlL3Zmdy5oLCBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW51c2VyLmgsIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9tc3ZmdzMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3VzZXIzMi5hcGksIHdpbmRvd3MvdXNlci5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglBZGRlZCBzb21lIG1pc3NpbmcgcHJvdG90eXBlcy4KCURlZmluZSB0aGUgSERSQVdESUIgaGFuZGxlIHR5cGUuCgoJKiBpbmNsdWRlL3dpbmRvd3N4Lmg6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJaG1lbWNweTE2IGlzIGEgV2luMTYgQVBJLCB0aGUgbWFjcm8gaXMgaG1lbWNweS4KCgkqIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvd2luc29jay9NYWtlZmlsZS5pbiwgZGxscy93aW5zb2NrL3NvY2tldC5jLCBkbGxzL3dpbnNvY2svd3MyXzMyLnNwZWMsIGluY2x1ZGUvd2luc29jazIuaDoKCUphbWVzIEhhdGhld2F5IDxqYW1lc0BtYWNhZGFtaWFuLmNvbT4KCUNyZWF0ZWQgYW4gaW5pdGlhbCBXaW5zb2NrIDIgKHdzMl8zMikgRExMLiBNYWtlcyB1c2Ugb2YgdGhlIFdpbnNvY2sgMQoJZnVuY3Rpb25zIGFscmVhZHkgaW1wbGVtZW50ZWQuCgoJKiBkbGxzL3dpbm1tL21jaXNlcS9tY2ltaWRpLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIHBvcnQgc3RhdHVzIHF1ZXJ5LgoKCSogaW5jbHVkZS9kc2RyaXZlci5oOiBPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUFkZGVkIERpcmVjdFNvdW5kIGRldmljZSBkcml2ZXIgaGVhZGVyIGZpbGUuCgoJKiBsb2FkZXIvcGVfaW1hZ2UuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglNYWtlIHRoZSBiYXNlIHJlbG9jYXRpb24gbWVzc2FnZSBhIFdBUk4sIG5vdCBhIEZJWE1FLgoKCSogdG9vbHMvTWFrZWZpbGUuaW46CglHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCURpc3Rpbmd1aXNoIGJldHdlZW4gU1VCRElSUyBhbmQgSU5TVEFMTFNVQkRJUlMuCgoJKiBjb250cm9scy9jb21iby5jOiBHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCUNCX1NFVENVUlNFTCBzaG91bGQgbm90IGdlbmVyYXRlIGFub3RoZXIgbGlzdGJveCBldmVudCBhZnRlciB1cGRhdGluZwoJdGhlIGVkaXQgYm94LgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOgoJTm9vbWVuIEhhbXphIDxub29tZW5AbWFjYWRhbWlhbi5jb20+CglXTV9QQUlOVCBzaG91bGQgYmUgcHJvY2Vzc2VkIG9ubHkgYnkgdGhlIFRSRUVWSUVXX1BhaW50IGZ1bmN0aW9uLCBzbwoJd2UgZG9uJ3QgbmVlZCB0byBjYWxsIERlZldpbmRvd1Byb2NBIGZ1bmN0aW9uIHdpdGhpbiBUUkVFVklFV19QYWludC4KCgkqIHdpbmRvd3MvY2xhc3MuYzoKCUphbWVzIEhhdGhld2F5IDxqYW1lc0BtYWNhZGFtaWFuLmNvbT4KCVdlIG11c3QgcmV0dXJuIHRoZSBhdG9tIG9mIHRoZSBjbGFzcyBpbiBHZXRDbGFzc0luZm9FeCBpbnN0ZWFkIG9mIGp1c3QKCVRSVUUuCgoJKiBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGUzMi9vbGUzMi5zcGVjOgoJSmFtZXMgSGF0aGV3YXkgPGphbWVzQG1hY2FkYW1pYW4uY29tPgoJQWRkZWQgYSBzdHViIGZvciBDb0NyZWF0ZUZyZWVUaHJlYWRlZE1hcnNoYWxlcigpLgoKCSogbWVtb3J5L3N0cmluZy5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCVJlaW1wbGVtZW50IENoYXJUb09lbUEvVywgQ2hhclRvT2VtQnVmZkEvVywgT2VtVG9DaGFyQS9XLAoJT2VtVG9DaGFyQnVmZkEvVyB1c2luZyBNdWx0aUJ5dGVUb1dpZGVDaGFyL1dpZGVDaGFyVG9NdWx0aUJ5dGUuCgoJKiBjb250cm9scy9tZW51LmM6CglGcmFuY29pcyBKYWNxdWVzIDxmcmFuY29pc2pAbWFjYWRhbWlhbi5jb20+CglHZXRTeXN0ZW1NZW51IGNhbGxlZCB3aXRoIGJSZXZlcnQgYXJndW1lbnQgc2V0IHRvIFRSVUUgbm93IHJldHVybnMKCU5VTEwgYXMgc3BlY2lmaWVkIGluIFBsYXRmb3JtIFNESy4KCgkqIGdyYXBoaWNzL3gxMWRydi9kaWIuYzoKCVN0ZXBoYW5lIEx1c3NpZXIgPHN0ZXBoYW5lQG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgbWVtb3J5IGFjY2VzcyBvdXRzaWRlIG9mIHRoZSByYW5nZSBmb3Igc291cmNlIGJpdHMgaW4gMjQtYml0IGJpdG1hcHMuCgoyMDAwLTA2LTE2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9vbGUzMi9vbGUzMi5zcGVjOgoJRnJhbmNvaXMgSmFjcXVlcyA8ZnJhbmNvaXNqQG1hY2FkYW1pYW4uY29tPgoJTWFrZSBJSURGcm9tU3RyaW5nIHBvaW50IHRvIENMU0lERnJvbVN0cmluZy4KCgkqIGRsbHMvY29tbWRsZy9jZGxnLmgsIGRsbHMvY29tbWRsZy9jZGxnMzIuYywgZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZ2Jyb3dzZXIuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJLSBiZXR0ZXIgZXJyb3IgY2hlY2sgd2hlbiBpbXBvcnRpbmcgZnVuY3Rpb25zIHZpYSBHZXRQcm9jQWRyZXNzCgktIHJlcGxhY2VkIFNIR2V0U3BlY2lhbEZvbGRlclBhdGggKG5vdCBhdmlhYmxlIGluIGFsbCBzaGVsbDMyIHZlcnNpb25zKQoJLSBjaGFuZ2VkIGNhbGwgb3JkZXIgd2hlbiBicm93c2luZyB0byBkaWZmZXJlbnQgZm9sZGVyIChjcmFzaCB3aXRoIG5hdGl2ZSBzaGVsbCkKCS0gcmVtb3ZlZCBNb3ZlIGNhbGwgc2luY2UgSVNoZWxsdmlld19DcmVhdGVWaWV3V2luZG93IGNyZWF0ZXMgaXQgYWxyZWFkeSBpbgoJICB0aGUgcmlnaHQgcmVjdAoKCSogZGxscy9zaGVsbDMyL3NobHdhcGkuc3BlYywgZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CgktIGZpeGVkIG51bGwtcGlkbCBmcm9tIF9JTENyZWF0ZUNvbnRyb2wKCS0gc29tZSBtb3JlIG5vLW5hbWUgZnVuY3Rpb25zIGluIHNobHdhcGkKCgkqIGRsbHMvc2hlbGwzMi9zeXN0cmF5LmM6CglGcmFuY29pcyBKYWNxdWVzIDxmcmFuY29pc2pAbWFjYWRhbWlhbi5jb20+CglLZWVwIGFuIGludGVybmFsIGNvcHkgb2YgdGhlIGljb24uCgoJKiBpbmNsdWRlL29iamJhc2UuaDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglSZW9yZGVyIHRoZSBfX2F0dHJpYnV0ZV9fIGRpcmVjdGl2ZSBpbiB0aGUgbGVnYWN5IG1hY3JvcyBmb3IKCWNvbXBhdGliaWxpdHkgd2l0aCBvbGQgZysrIGNvbXBpbGVycy4KCgkqIGdyYXBoaWNzL3gxMWRydi9kaWIuYzoKCUtlbiBDb2xlbWFuIDxrZW5fY29sZW1hbkBpbmFtZS5jb20+CglGaXhlcyB0byBDcmVhdGVESUJTZWN0aW9uIGFuZCBvdGhlciBhcmVhcyB3aGVyZSBiaVNpemVJbWFnZSBpcwoJaW5jb3JyZWN0bHkgYXNzdW1lZCB0byBiZSBjb3JyZWN0IGlmIGl0IG5vbi16ZXJvLiAgVGhpcyBmaXhlcyBhCgljcmFzaGluZyBwcm9ibGVtIGluIFNpZCBNZWllcidzIEFscGhhIENlbnRhdXJpLgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoyMDAwLTA2LTE1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy9tZGkuYywgaW5jbHVkZS9tZGkuaCwgcmVzb3VyY2VzL3N5c3Jlc19Fbi5yYywgcmVzb3VyY2VzL3VzZXIzMi5yYzoKCURhdmlkIExhc3NvbmRlIDxkYXZpZGxAbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRlZCB0aGUgTW9yZSBXaW5kb3dzLi4uIG1lbnUgaXRlbSBmb3IgTURJLgoKCSogd2luZG93cy9kaWFsb2cuYzoKCVNoZXJpIFN0ZWV2ZXMgPHNoZXJpQG1hY2FkYW1pYW4uY29tPgoJQ2hlY2sgYWdhaW4gZm9yIEdldE5leHREbGdUYWJJdGVtIGFmdGVyIHJldHVybiBmcm9tIFdNX0lOSVRESUFMT0cKCW1lc3NhZ2UgaW4gZGlhbG9nIGNyZWF0aW9uLgoKCSogY29udHJvbHMvbGlzdGJveC5jOiBHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCVNldCBjbGlwcGluZyByZWdpb24gdG8gY2xpZW50IHdpbmRvdyBpbiBMSVNUQk9YX1BhaW50LgoKCSogc2VydmVyL21haW4uYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJTW9yZSB2ZXJib3NlIGVycm9yIG1lc3NhZ2UuCgoJKiB1bmljb2RlL21idG93Yy5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJY3BfbWJzdG93Y3M6IGNoZWNrIGZ1bmN0aW9ucyByZXR1cm4gemVybyBvbiBzdWNjZXNzLgoKCSogZmlsZXMvZG9zX2ZzLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglHZXRGdWxsUGF0aE5hbWU6IGdldCAiZHJpdmUiIHZhbHVlIHRvbyBmb3IgYWJzb2x1dGUgcGF0aHMuCgoJKiBtaXNjL3ByaW50ZHJ2LmM6CglGcmVkZXJpYyBCb3VsYW5nZXIgPGZyZWRlcmljQG1hY2FkYW1pYW4uY29tPgoJQ3JlYXRlU3Bvb2xGaWxlIGlzIGNhbGxlZCB3aXRoIGEgZG9zIG5hbWUsIHdlIGhhdmUgdG8gbWFrZSBzdXJlIHRoYXQKCXdoZW4gd2UgY3JlYXRlIHRoZSBzcG9vbGZpbGUgd2UgdXNlIHRoZSB1bml4IG5hbWUgYXNzb2NpYXRlZCB0byB0aGUKCWRvcyBmaWxlIG5hbWUuCgoJKiBpbmNsdWRlL3dpbmJhc2UuaCwgbWlzYy9jb21tLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAbG9va3NtYXJ0LmNvbS5hdT4KCS0gYWRkIHByb3RvdHlwZXMgZm9yIHNlcmlhbCBBUEkgZnVuY3Rpb25zCgktIGNvcnJlY3QgZXhpc3Rpbmcgc2VyaWFsIEFQSSBwcm90b3R5cGVzIGluY29ycmVjdGx5IHVzaW5nIERXT1JECgkgIGluc3RlYWQgb2YgSEFORExFCgktIGRlZmluZSBtb3JlIHN0cnVjdHVyZXMgYW5kIHZhbHVlcyBpbiBzZXJpYWwgQVBJCgoJKiB3aW5kb3dzL2RjZS5jOiBOb29tZW4gSGFtemEgPG5vb21lbkBtYWNhZGFtaWFuLmNvbT4KCUFkZGVkIGEgTlVMTCBwb2ludGVyIGNoZWNrIHdpdGhpbiBEQ0VfQWRkQ2xpcFJlY3RzIGZ1bmN0aW9uLgoKCSogbG9hZGVyL3Jlc291cmNlLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCU9wdGltaXplZCBpbXBsZW1lbnRhdGlvbiBvZiBMb2FkU3RyaW5nQS4KCgkqIGRvY3VtZW50YXRpb24veDExZHJ2OiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVRleHQgb2YgV1dOIGFydGljbGUgIlRoZSBYMTEgZHJpdmVyIi4KCgkqIGRvY3VtZW50YXRpb24vSE9XVE8td2luZWxpYjoKCVdpbGJ1ciBOLiBEYWxlIDx3aWxidXIuZGFsZUBsdW1pbi5ubD4KCVdpbmVMaWIgZG9lcyBub3Qgc3VwcG9ydCBXaW4xNi4gUmVtb3ZlZCByZWZlcmVuY2VzIHRvIFdpbjE2IGFuZCBXaW4KCTMueCBpbiB0aGUgaW50cm9kdWN0aW9uLiBTdGFuZGFyZGl6ZWQgY2FwaXRhbGl6YXRpb24gb2YgV2luZSBhbmQKCVdpbmVMaWIuIEFkZGVkIGRvY3VtZW50YXRpb24gZm9yIGNvbXBpbGluZyBhIHNpbXBsZSAiSGVsbG8gV29ybGQiCglXaW5lTGliIHByb2dyYW0uCgoJKiB3aW5kb3dzL21lc3NhZ2UuYzoKCVNoZXJpIFN0ZWV2ZXMgPHNoZXJpQG1hY2FkYW1pYW4uY29tPgoJQWRkZWQgc2V0dGluZyBvZiBjdXJzb3IgcG9zdGl0aW9uIHRvIE1TR19Qb3N0VG9RdWV1ZS4KCgkqIGNvbnRyb2xzL2xpc3Rib3guYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglXTV9TRVRSRURSQVcgc2hvdWxkIHJlcGFpbnQgdGhlIGxpc3Rib3ggd2hlbiBzZXQgdG8gb24gaWYgc29tZXRoaW5nCgloYXMgYmVlbiBjaGFuZ2VkLgoKMjAwMC0wNi0xNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbmZpZ3VyZS5pbiwgZGVidWdnZXIvTWFrZWZpbGUuaW4sIHNlcnZlci9NYWtlZmlsZS5pbiwgdG9vbHMvTWFrZWZpbGUuaW4sIHRvb2xzL2N2ZHVtcC9NYWtlZmlsZS5pbiwgdG9vbHMvd21jL01ha2VmaWxlLmluLCB0b29scy93cmMvTWFrZWZpbGUuaW4sIE1ha2UucnVsZXMuaW4sIE1ha2VmaWxlLmluLCBjb25maWd1cmU6CglSZW1vdmVkIEBQUk9HRVhUQCAoaXQgd2FzIGJyb2tlbiBhbnl3YXkpLgoJSW1wcm92ZWQgJ21ha2UgaW5zdGFsbCcuCglDbGVhbmVkIHVwIHRoZSBtYWluIE1ha2VmaWxlLgoKCSogc2NoZWR1bGVyL2hhbmRsZS5jOgoJQWxleGFuZHJlIEp1bGxpYXJkIDxqdWxsaWFyZEBjb2Rld2VhdmVycy5jb20+IChmb3IgQ29yZWwpCglDb252ZXJ0VG9HbG9iYWxIYW5kbGU6IGZpeGVkIGhhbmRsZSBsZWFrLgoKCSogaW5jbHVkZS9vcHRpb25zLmg6CglGaXhlZCBvcHRpb25zIHN0cnVjdHVyZSBkZWZpbml0aW9uLgoKCSogd2luZG93cy93aW5wb3MuYzoKCU5vb21lbiBIYW16YSA8bm9vbWVuQG1hY2FkYW1pYW4uY29tPgoJTWFkZSBTZXRXaW5kb3dQb3MgaGFuZGxlIHRoZSBjYXNlIHdoZW4gaW5zZXJ0aW5nIGEgd2luZG93IGFmdGVyIGl0c2VsZgoJKGRvbid0IG5lZWQgdG8gY2hhbmdlIHRoZSBab3JkZXIpLgoKCSogZG9jdW1lbnRhdGlvbi9vcGVuZ2w6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJVXBkYXRlZCBPcGVuR0wgZG9jdW1lbnRhdGlvbi4KCgkqIGRsbHMvb2xlcHJvMzIvb2xlcHJvMzIuc3BlYzoKCUdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJU2V0IHRoZSBiYXNlIGZvciB0aGUgb3JkaW5hbHMgb2Ygb2xlcHJvMzIgdG8gMjQ4LgoKCSogaW5jbHVkZS9jb21tY3RybC5oOgoJTWF0dGhldyBKLiBGcmFuY2lzIDxtZnJhbmNpc0BwbHVzLm5ldC51az4KCUFsaWFzIE5NVVBET1dOIHRvIGJlIE5NX1VQRE9XTiwgcmF0aGVyIHRoYW4gb3ZlcndyaXRlIE5NX1VQRE9XTiB3aXRoCglOTVVQRE9XTi4KCgkqIGRsbHMvY3J0ZGxsL2NydGRsbC5zcGVjLCBkbGxzL2NydGRsbC9jcnRkbGxfbWFpbi5jOgoJamltcmVnYW5AbGl0c3UuaWUKCUFkZGVkIGRpZmZ0aW1lIGZ1bmN0aW9uLgoKMjAwMC0wNi0xMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHRvb2xzL01ha2VmaWxlLmluLCB0b29scy93bWMvLmN2c2lnbm9yZSwgdG9vbHMvd21jL0NIQU5HRVMsIHRvb2xzL3dtYy9NYWtlZmlsZS5pbiwgdG9vbHMvd21jL2xhbmcuYywgdG9vbHMvd21jL2xhbmcuaCwgdG9vbHMvd21jL2xhbmd1YWdlLmMsIHRvb2xzL3dtYy9tY2wuYywgdG9vbHMvd21jL21jeS55LCB0b29scy93bWMvdXRpbHMuYywgdG9vbHMvd21jL3V0aWxzLmgsIHRvb2xzL3dtYy93bWMuYywgdG9vbHMvd21jL3dtYy5oLCB0b29scy93bWMvd21jLm1hbiwgdG9vbHMvd21jL3dtY3R5cGVzLmgsIHRvb2xzL3dtYy93cml0ZS5jLCB0b29scy93bWMvd3JpdGUuaCwgdW5pY29kZS93Y3RvbWIuYywgTWFrZS5ydWxlcy5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW46CglCZXJ0aG8gU3R1bHRpZW5zIDxiZXJ0aG9AcGFudGVyLnNvY2kuYWF1LmRrPgoJSW5pdGlhbCByZWxlYXNlIG9mIHRoZSBtZXNzYWdlIGNvbXBpbGVyLgoKCSogbG9hZGVyL2xvYWRvcmRlci5jLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW4sIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmMsIGRsbHMvc2hlbGwzMi9zaGVsbHN0cmluZy5jLCBkbGxzL3NoZWxsMzIvc2hmb2xkZXIuc3BlYywgZGxscy9zaGVsbDMyL3NobHdhcGkuc3BlYywgaW5jbHVkZS9zaGVsbC5oLCBpbmNsdWRlL3NobG9iai5oLCBpbmNsdWRlL3NobHdhcGkuaCwgaW5jbHVkZS93aW5lL3VuZG9jc2hlbGwuaDoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJLSBuZXcgZGxsIHNoZm9sZGVyLmRsbAoJLSBzbWFsbCBmaXhlcwoKCSogZGxscy91c2VyL01ha2VmaWxlLmluLCB0b29scy93cmMvQ0hBTkdFUywgdG9vbHMvd3JjL1JFQURNRS53cmMsIHRvb2xzL3dyYy9kdW1wcmVzLmMsIHRvb2xzL3dyYy9nZW5yZXMuYywgdG9vbHMvd3JjL25ld3N0cnVjLmMsIHRvb2xzL3dyYy9wYXJzZXIubCwgdG9vbHMvd3JjL3BhcnNlci55LCB0b29scy93cmMvcHBsLmwsIHRvb2xzL3dyYy9wcHkueSwgdG9vbHMvd3JjL3dyYy5jLCB0b29scy93cmMvd3JjLmgsIHRvb2xzL3dyYy93cmMubWFuOgoJQmVydGhvIFN0dWx0aWVucyA8YmVydGhvQGFraHBoZC5hdS5kaz4KCS0gQnVnZml4OiBDb3JyZWN0ZWQgIm9mZiBieSBvbmUiIGVycm9yIGluIHRoZSBsaW5lbnVtYmVyIHdoaWxlIHBhcnNpbmcKCSAgcmVzb3VyY2UuCgktIEJ1Z2ZpeDogQSBzZWdmYXVsdCB3b3VsZCBvY2N1ciBpZiBtZXNzYWdldGFibGVzIHdlcmUgcGFyc2VkIHdpdGhvdXQKCSAgbWVtb3J5IG9wdGlvbnMgYXR0YWNoZWQuIEFsc28gYWRkZWQgYnVmZmVyLW92ZXJmbG93IHNhZmVndWFyZCB3aGlsZQoJICBjb252ZXJ0aW5nIGJldHdlZW4gYnl0ZW9yZGVycy4KCS0gRmluaXNoZWQgcmVtYXBwaW5nIHVzZXJ0eXBlIHJlc291cmNlcyBvbnRvIHN0YW5kYXJzIHR5cGVzIGJ5IHRyaWNraW5nCgkgIHRoZSBwYXJzZXIgaW50byBhY2NlcHRpbmcgYSBkaWZmZXJlbnQgdG9rZW4uIFRoZSByZW1hcHBpbmcgY2FuIGJlCgkgIGRpc2FibGVkIHdpdGggYSBuZXcgY29tbWFuZGxpbmUgb3B0aW9uICctbScuCgktIFJlc29sdmVkIHNvbWUgd2FybmluZyBhYm91dCBjaGFycyB1c2VkIGFzIGluZGV4IG9uIFNHSSBPMiBtYWNoaW5lCgkgICh0aGUgY3R5cGUgaXNYWFgoKSByb3V0aW5lcyBhcmUgbWFjcm9zIHRoZXJlKS4KCgkqIG9sZS9vbGUybmxzLmM6CglCZXJ0aG8gU3R1bHRpZW5zIDxiZXJ0aG9AcGFudGVyLnNvY2kuYWF1LmRrPgoJQ29tbWVudGVkIG91dCBJc0JhZFdyaXRlUHRyIGNoZWNrLiBNYWtlcyB3aW5obHAzMi5leGUgaGFwcHkgaW4KCWV4dGVuZGVkIHNlYXJjaC4KCgkqIGRvY3VtZW50YXRpb24vb3BlbmdsOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCU9wZW5HTCBkb2N1bWVudGF0aW9uLgoKCSogZmlsZXMvZHJpdmUuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJRFJJVkVfR2V0RnJlZVNwYWNlKCkgaXMgc3VwcG9zZWQgdG8gKmFsd2F5cyogcmV0dXJuIDAgZm9yICJhdmFpbCIKCW9uIENELVJPTXMsIGV2ZW4gaWYgQ0QtUk9NIGlzICpub3QqIG1vdW50ZWQgYW5kIHRodXMgdGhlIG1vdW50IHBvaW50Cglub3JtYWxseSByZXR1cm5zIHRoZSAiYXZhaWwiIG9mIHRoZSBjb3JyZXNwb25kaW5nIHBhcnRpdGlvbi4KCUNsZWFuZWQgdXAgR2V0RGlza0ZyZWVTcGFjZUEuCgoJKiB3aW5kb3dzL3gxMWRydi93bmQuYzoKCUdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJRG8gbm90IGNoYW5nZSB0aGUgV1NfQ0hJTEQgc3R5bGUgaW4gU2V0UGFyZW50LgoKCSogbG9hZGVyL3BlX3Jlc291cmNlLmMsIG9sZS9vbGUybmxzLmMsIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jLCBkbGxzL250ZGxsL3JlZy5jLCBkbGxzL29sZTMyL2RhdGFjYWNoZS5jLCBkbGxzL29sZTMyL29sZTJubHMuYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYywgZGxscy9zaGVsbDMyL3NoZWxscmVnLmMsIGRsbHMvc2hlbGwzMi9zaGVsbHN0cmluZy5jLCBkbGxzL3ZlcnNpb24vaW5mby5jOgoJVXNlIHRoZSBVbmljb2RlIHN0cmluZyBmdW5jdGlvbnMgZnJvbSB3aW5lL3VuaWNvZGUuaCBpbnN0ZWFkIG9mIHRoZQoJY3J0ZGxsIG9uZXMuCgoJKiBpbmNsdWRlL3dpbmUvdW5pY29kZS5oLCB1bmljb2RlL01ha2VmaWxlLmluLCB1bmljb2RlL3N0cmluZy5jOgoJQWRkZWQgYSBjb3VwbGUgb2YgVW5pY29kZSBzdHJpbmcgcm91dGluZXMuCgoJKiBkbGxzL2RkcmF3L2NvbnZlcnQuYywgZGxscy9kZHJhdy9kZHJhdy9kZ2EuYywgZGxscy9kZHJhdy9kZHJhdy94MTEuYywgZGxscy9kZHJhdy9kZHJhd19wcml2YXRlLmgsIGRsbHMvZGRyYXcvZGdhLmMsIGRsbHMvZGRyYXcvaGVscGVyLmMsIGRsbHMvZGRyYXcveDExLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIDI0LT4zMiBwYWNrZWQgcGl4ZWwgbWFwcGluZyBzdXBwb3J0IHRvIGNvbnZlcnQuCglTbGlnaHRseSByZXdyb3RlIHRoZSBjb252ZXJzaW9uIGluaXRpYWxpc2F0aW9uLgoKCSogZmlsZXMvcHJvZmlsZS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTdHJpcCB3aGl0ZXNwYWNlIGZyb20gZnJvbnQgb2YgcHJvZmlsZSB2YWx1ZXMuCgoyMDAwLTA2LTEyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy91c2VyL01ha2VmaWxlLmluLCBkbGxzL3VzZXIvZXh0aWNvbi5jLCB3aW4zMi9vcmRpbmFscy5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglJbXBsZW1lbnRhdGlvbiBmb3IgUHJpdmF0ZUV4dHJhY3RJY29ucywgUHJpdmF0ZUV4dHJhY3RJY29uRXguCgoJKiBzY2hlZHVsZXIvdGhyZWFkLmMsIGRsbHMvb2xlMzIvZXJyb3JpbmZvLmMsIGluY2x1ZGUvdGhyZWFkLmgsIHNjaGVkdWxlci9wcm9jZXNzLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCS0gaW1wbGVtZW50ZWQgR2V0L1NldFRocmVhZExvY2FsZQoJLSBhZGRlZCBjb21tZW50IGFib3V0IE9sZUVycm9ySW5mbyBmaWVsZCBpbiBURUIKCgkqIGluY2x1ZGUvZGRyYXcuaDoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgc3RydWN0IG9mZnNldHMgc28gdW5kZXJzdGFuZGluZyBnYW1lIGRpc2Fzc2VtYmx5IGlzIGVhc2llci4KCgkqIGRsbHMvd2luZXBzL2JydXNoLmM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglJZiBwcmludGVyIG9ubHkgc3VwcG9ydHMgbGV2ZWwgMSBQb3N0U2NyaXB0IHRoZW4gY29tcGxhaW4gcmF0aGVyIHRoYW4KCXRyeWluZyB0byB1c2UgYSBwYXR0ZXJuIGNvbG9yIHNwYWNlLiAgVGhhbmtzIHRvIERhdmlkIEdvb2Rlbm91Z2guCgoJKiBpbmNsdWRlL3dpbmUvb2JqX2Jhc2UuaDoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQ29ycmVjdGVkIElzRXF1YWxHVUlEIHByb3RvdHlwZS4KCgkqIGRsbHMvZGRyYXcvZGdhMi5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCXJlcGxhY2VkIGEgRFBSSU5URiBieSBhIFRSQUNFCgoJKiBkbGxzL29wZW5nbDMyL21ha2Vfb3BlbmdsLCBkbGxzL29wZW5nbDMyL29wZW5nbDMyLnNwZWMsIGRsbHMvb3BlbmdsMzIvd2dsLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSBtb3ZlZCB0aGUgJ2NvbnN0cnVjdG9yJyBpbnRvIGEgcmVhbCBETEwgaW5pdCBmdW5jdGlvbgoJLSBtYWtlIE9wZW5HTDMyIGRlcGVuZGFudCBvbiB0aGUgWDExIGRyaXZlcgoKCSogb2JqZWN0cy9kYy5jOiBHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCWhvb2tUaHVuayB3YXMgbm90IGluaXRpYWxpemVkIGluIEdldERjU3RhdGUuCgoJKiBncmFwaGljcy94MTFkcnYvdGV4dC5jOgoJVXNlIHRoZSBmb250IGRlZmF1bHQgY2hhciBmb3IgdW5kZWZpbmVkIGNoYXJhY3RlcnMgd2hlbiBtYXBwaW5nIGZyb20KCVVuaWNvZGUuCgoJKiBkbGxzL29wZW5nbDMyL21ha2Vfb3BlbmdsLCBkbGxzL29wZW5nbDMyL21ha2Vfb3BlbmdsX2V4dCwgZGxscy9vcGVuZ2wzMi9tYWtlX29wZW5nbF9ub3JtLCBkbGxzL29wZW5nbDMyL21ha2Vfb3BlbmdsX3NwZWMsIGRsbHMvb3BlbmdsMzIvb3BlbmdsMzIuc3BlYywgZGxscy9vcGVuZ2wzMi9vcGVuZ2xfZXh0LmMsIGRsbHMvb3BlbmdsMzIvb3BlbmdsX25vcm0uYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglOZXcgT3BlbkdMIHRodW5rIGdlbmVyYXRpb24gc2NyaXB0LgoKCSogZGxscy9kZHJhdy9kc3VyZmFjZS94MTEuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglSZW1vdmVkIHRoZSBSZWxlYXNlIGluIGNhc2Ugb2YgZXJyb3IgYXMgd2UgZG8gbm90IEFkZFJlZiBhbnltb3JlLgoKCSogbWlzYy92ZXJzaW9uLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCU1hZGUgdGhlIERMTCB2ZXJzaW9uIGNsYXNoIGVycm9yIG1lc3NhZ2UgbW9yZSB2ZXJib3NlLgoKCSogdW5pY29kZS9jXzkzMi5jLCB1bmljb2RlL2NfOTM2LmMsIHVuaWNvZGUvY185NDkuYywgdW5pY29kZS9jXzk1MC5jLCB1bmljb2RlL2Nhc2VtYXAuYywgdW5pY29kZS9jcG1hcC5wbCwgdW5pY29kZS9tYnRvd2MuYywgdW5pY29kZS93Y3RvbWIuYywgdW5pY29kZS9jXzA0Mi5jLCB1bmljb2RlL2NfMTAwMDAuYywgdW5pY29kZS9jXzEwMDA2LmMsIHVuaWNvZGUvY18xMDAwNy5jLCB1bmljb2RlL2NfMTAwMjkuYywgdW5pY29kZS9jXzEwMDYuYywgdW5pY29kZS9jXzEwMDc5LmMsIHVuaWNvZGUvY18xMDA4MS5jLCB1bmljb2RlL2NfMTAyNi5jLCB1bmljb2RlL2NfMTI1MC5jLCB1bmljb2RlL2NfMTI1MS5jLCB1bmljb2RlL2NfMTI1Mi5jLCB1bmljb2RlL2NfMTI1My5jLCB1bmljb2RlL2NfMTI1NC5jLCB1bmljb2RlL2NfMTI1NS5jLCB1bmljb2RlL2NfMTI1Ni5jLCB1bmljb2RlL2NfMTI1Ny5jLCB1bmljb2RlL2NfMTI1OC5jLCB1bmljb2RlL2NfMjA4NjYuYywgdW5pY29kZS9jXzI4NTkxLmMsIHVuaWNvZGUvY18yODU5Mi5jLCB1bmljb2RlL2NfMjg1OTMuYywgdW5pY29kZS9jXzI4NTk0LmMsIHVuaWNvZGUvY18yODU5NS5jLCB1bmljb2RlL2NfMjg1OTYuYywgdW5pY29kZS9jXzI4NTk3LmMsIHVuaWNvZGUvY18yODU5OC5jLCB1bmljb2RlL2NfMjg1OTkuYywgdW5pY29kZS9jXzQyNC5jLCB1bmljb2RlL2NfNDM3LmMsIHVuaWNvZGUvY181MDAuYywgdW5pY29kZS9jXzczNy5jLCB1bmljb2RlL2NfNzc1LmMsIHVuaWNvZGUvY184NTAuYywgdW5pY29kZS9jXzg1Mi5jLCB1bmljb2RlL2NfODU1LmMsIHVuaWNvZGUvY184NTYuYywgdW5pY29kZS9jXzg1Ny5jLCB1bmljb2RlL2NfODYwLmMsIHVuaWNvZGUvY184NjEuYywgdW5pY29kZS9jXzg2Mi5jLCB1bmljb2RlL2NfODYzLmMsIHVuaWNvZGUvY184NjQuYywgdW5pY29kZS9jXzg2NS5jLCB1bmljb2RlL2NfODY2LmMsIHVuaWNvZGUvY184NjkuYywgdW5pY29kZS9jXzg3NC5jLCB1bmljb2RlL2NfODc1LmMsIHVuaWNvZGUvY184NzguYywgZGxscy9udGRsbC9ydGxzdHIuYywgaW5jbHVkZS9jYXNlbWFwLmgsIGluY2x1ZGUvd2luZS91bmljb2RlLmgsIG1lbW9yeS9zdHJpbmcuYywgdW5pY29kZS9NYWtlZmlsZS5pbiwgdW5pY29kZS9jXzAzNy5jOgoJUmVpbXBsZW1lbnRlZCBVbmljb2RlIGNhc2UgbWFwcGluZyBpbiBhIHNsaWdodGx5IG1vcmUgZWZmaWNpZW50IHdheS4KCU1vdmVkIGNhc2UgbWFwcGluZyBzdXBwb3J0IHRvIHRoZSB1bmljb2RlIGRpcmVjdG9yeS4KCVNvbWUgY2xlYW51cHMgaW4gY3BtYXAucGwsIHVzZSBXQ0hBUiBpbnN0ZWFkIG9mIHVuc2lnbmVkIHNob3J0LgoKMjAwMC0wNi0xMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvY29tY3RsMzIvaGVhZGVyLmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJV2Ugd2VyZSBub3QgcHJvcGVybHkgbWFza2luZyB0aGUgaXRlbSB0aGF0IHdhcyBzZW50IHdpdGggdGhlIG1lc3NhZ2UKCWFuZCBhbHNvIHdlIHdoZXJlIG5vdCBzZW5kaW5nIHRoZSBub3RpZmljYXRpb24gYXQgdGhlIHByb3BlciB0aW1lcy4KCgkqIGNvbnRyb2xzL2xpc3Rib3guYzoKCUphc29uIE1hd2RzbGV5IDxqYXNvbkBtYWNhZGFtaWFuLmNvbT4KCVRha2UgZm9jdXMgYmVmb3JlIHNldHRpbmcgdGhlIGNhcmV0IHBvc2l0aW9uIGFuZCBzZWxlY3Rpb25zLgoKCSogcmVsYXkzMi9zbm9vcC5jOiBKYW1lcyBBYmJhdGllbGxvIDxhYmJleWpAd3BpLmVkdT4KCUZpeCBmb3IgY29tcGlsZXIgd2FybmluZyAoZHVlIHRvIHNldGptcC9sb25nam1wIGJlaW5nIHVzZWQgZm9yCglleGNlcHRpb24gaGFuZGxpbmcpLgoKCSogY29udHJvbHMvYnV0dG9uLmM6CglTaGVyaSBTdGVldmVzIDxzaGVyaUBtYWNhZGFtaWFuLmNvbT4KCUFkZGVkIHNhdmUgYW5kIHJlc2V0IG9mIFNldEJLTW9kZSB2YWx1ZXMgaW4gV01fUEFJTlQuCglBZGRlZCBoYW5kbGluZyBvZiBsUGFyYW0gdmFsdWUgaW4gQk1fU0VUU1RZTEUuCgoJKiBpbmNsdWRlL3dpbmUvZXhjZXB0aW9uLmgsIGluY2x1ZGUvd2luZS9vYmpfYmFzZS5oLCBpbmNsdWRlL3dpbmUvb2JqX2NoYW5uZWwuaCwgaW5jbHVkZS93aW5lL29ial9taXNjLmgsIGluY2x1ZGUvd2luZS9vYmpfb2xlYXV0LmgsIGluY2x1ZGUvd2luZS9vYmpfb2xldmlldy5oLCBpbmNsdWRlL3dpbmUvdW5kb2NzaGVsbC5oLCBpbmNsdWRlL3dpbmUvd2luZGVmMTYuaCwgaW5jbHVkZS93aW5lL3dpbmdkaTE2LmgsIGluY2x1ZGUvd2luZS93aW51c2VyMTYuaCwgaW5jbHVkZS9kZHJhdy5oLCBpbmNsdWRlL2RpbnB1dC5oLCBpbmNsdWRlL2RwbGF5LmgsIGluY2x1ZGUvZHBsb2JieS5oLCBpbmNsdWRlL2Rzb3VuZC5oLCBpbmNsdWRlL2dkaS5oLCBpbmNsdWRlL2ltYWdlaGxwLmgsIGluY2x1ZGUvaW1tLmgsIGluY2x1ZGUva2V5Ym9hcmQuaCwgaW5jbHVkZS9tbWRkay5oLCBpbmNsdWRlL21tc3lzdGVtLmgsIGluY2x1ZGUvbXNhY20uaCwgaW5jbHVkZS9uZXRzcGkuaCwgaW5jbHVkZS9udGRkay5oLCBpbmNsdWRlL29sZS5oLCBpbmNsdWRlL29sZTIuaCwgaW5jbHVkZS9vbGVhdXRvLmgsIGluY2x1ZGUvb2xlZGxnLmgsIGluY2x1ZGUvcGVfaW1hZ2UuaCwgaW5jbHVkZS9wcm9jZXNzLmgsIGluY2x1ZGUvcHJzaHQuaCwgaW5jbHVkZS9yaWNoZWRpdC5oLCBpbmNsdWRlL3NlcnZlci5oLCBpbmNsdWRlL3NobG9iai5oLCBpbmNsdWRlL3RhcGkuaCwgaW5jbHVkZS90YXNrLmgsIGluY2x1ZGUvdXNlci5oLCBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW5nZGkuaCwgaW5jbHVkZS93aW5pbmV0LmgsIGluY2x1ZGUvd2lubmV0d2suaCwgaW5jbHVkZS93aW5ubHMuaCwgaW5jbHVkZS93aW5udC5oLCBpbmNsdWRlL3dpbnN2Yy5oLCBpbmNsdWRlL3dpbnVzZXIuaCwgaW5jbHVkZS9hbmltYXRlLmgsIGluY2x1ZGUvY2FsbGJhY2suaCwgaW5jbHVkZS9jb21tY3RybC5oLCBpbmNsdWRlL2NvbW1kbGcuaCwgaW5jbHVkZS9jcnRkbGwuaCwgaW5jbHVkZS9kM2QuaCwgaW5jbHVkZS9kM2RjYXBzLmgsIGluY2x1ZGUvZDNkdHlwZXMuaCwgaW5jbHVkZS9kZGVtbC5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglSZW9yZGVyZWQgdGhlIENBTExCQUNLIGFuZCBXSU5BUEkgZGlyZWN0aXZlcyBzbyB0aGF0IGl0IGNvbXBpbGVzIHdpdGgKCW9sZCBnKysgdmVyc2lvbnMuCgoJKiBpbmNsdWRlL3Zmdy5oLCBpbmNsdWRlL3dpbmRlZi5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CgktIERlZmluZSBISUMgaW4gdGhpcyBoZWFkZXIgcmF0aGVyIHRoYW4gaW4gd2luZGVmLmggKHRoaXMgaXMgdGhlCgkgIGNvcnJlY3QgdGhpbmcgdG8gZG8gYWx0aG91Z2ggaXQgaXMgdW5yZWxhdGVkIHRvIHRoZSBDKysgaXNzdWVzKS4KCS0gV0lORV9ISUMgaXMgYW4gaW50ZXJuYWwgc3RydWN0dXJlIGFuZCBpdCB3b24ndCBjb21waWxlIGluIEMrKyBiZWNhdXNlCgkgIGl0IGNvbnRhaW5zIGEgZmllbGQgY2FsbGVkICdwcml2YXRlJy4gRW5jbG9zZWQgaW4gYSBfX1dJTkVfXyBpZmRlZi4KCS0gUmVvcmRlcmVkIHRoZSBDQUxMQkFDSyBhbmQgV0lOQVBJIGRpcmVjdGl2ZXMgc28gdGhhdCBpdCBjb21waWxlcyB3aXRoCgkgIG9sZCBnKysgdmVyc2lvbnMuCgoJKiBpbmNsdWRlL3dpbnNwb29sLmg6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJRml4ZWQgYSB0eXBvIGluIHRoZSBuYW1lIG9mIEZyZWVQcmludGVyTm90aWZ5SW5mby4KCgkqIGRsbHMvd2luaW5ldC9NYWtlZmlsZS5pbiwgZGxscy93aW5pbmV0L2Z0cC5jLCBkbGxzL3dpbmluZXQvaHR0cC5jLCBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYywgZGxscy93aW5pbmV0L2ludGVybmV0LmgsIGRsbHMvd2luaW5ldC91dGlsaXR5LmMsIGRsbHMvd2luaW5ldC93aW5pbmV0LnNwZWM6CglVbHJpY2ggQ3pla2FsbGEgPHVscmljaGNAY29yZWwuY2E+CglIVFRQIHByb3RvY29sIG5vdyBzdXBwb3J0ZWQsIEludGVybmV0Q3JhY2tVcmwgZml4ZWQsIGxvdHMgb2Ygb3RoZXIKCWZpeGVzLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmMsIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYywgdG9vbHMvYnVpbGQuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSB3YXJuaW5ncy4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzIuc3BlYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSBpc3N1ZXMgZm91bmQgYnkgd2luYXBpX2NoZWNrLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMuZGF0LCB0b29scy93aW5hcGlfY2hlY2svb3V0cHV0LnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvb2xlYXV0MzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2NoZWNrLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2xvY2FsLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX29wdGlvbnMucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfcGFyc2VyLnBtOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIE1pbm9yIEFQSSBmaWxlcyBmaXhlcwoJLSBVc2Ugb3V0cHV0IHByZWZpeCBpbnN0ZWFkIG9mIGhpZ2ggb3JkZXIgZnVuY3Rpb25zIHRoYXQsIGZvciBzb21lCgkgIHJlYXNvbiwgbGVha3MgbWVtb3J5LiBUaGUgbWVtb3J5IHVzYWdlIG9mIHdpbmFwaV9jaGVjayBpcyBub3cgZ3JlYXRseQoJICByZWR1Y2VkLiA6LSkKCS0gVHVybmVkIG9uIGFyZ3VtZW50IGtpbmQgY2hlY2tpbmcgb2YgZG91YmxlcyBieSBkZWZhdWx0CgoJKiBkbGxzL2NvbW1kbGcvY29tZGxnMzIuc3BlYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCVJlbW92ZSBzZWNvbmQgaW1wb3J0IG9mIHdpbnNwb29sLmRydi4KCgkqIGNvbnRyb2xzL3N0YXRpYy5jOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJQWRkIHN1cHBvcnQgZm9yIGljb25zIHNldCBieSBTVE1fU0VUSU1BR0UuCgoJKiBkbGxzL3dpbmVwcy9iaXRtYXAuYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCVRlcm1pbmF0ZSBpbWFnZSBkYXRhIHdpdGggYSAnPicgW1RoZSBQU0xSTSBpcyByYXRoZXIgdmFndWUgYWJvdXQgdGhpc10uCglUaGFua3MgdG8gQmVybmQgSGVyZC4KCgkqIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jOgoJSm9obiBFbGxpb3QgPGpjZUBzZWFzaXAuZGVtb24uY28udWs+CglTb21lIGZvbnRzIG1heSBoYXZlIG5vIGNoYXJhY3RlcnMgYXQgYWxsIGZvciBzb21lIHJlYXNvbiwgYXZvaWQgY3Jhc2hlcy4KCgkqIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmM6CglKYW1lcyBBYmJhdGllbGxvIDxhYmJleWpAd3BpLmVkdT4KCUFkZCBhIGZldyBtb3JlIGZsYWdzIHRvIHRob3NlIHJlY29nbml6ZWQgd2hlbiBkb2luZyB0cmFjZStkc291bmQuCgoJKiBvYmplY3RzL3RleHQuYzogSmFtZXMgQWJiYXRpZWxsbyA8YWJiZXlqQHdwaS5lZHU+CglEb24ndCBwcmludCB1aUxlbmd0aERyYXduIGluIHRoZSBGSVhNRSBpbiBEcmF3VGV4dEV4QS4gIEl0cyBhbiBvdXRwdXQKCXZhcmlhYmxlLCBub3QgYW4gaW5wdXQgdmFyaWFibGUuCgoJKiBncmFwaGljcy94MTFkcnYvZGliLmM6CglKYW1lcyBBYmJhdGllbGxvIDxhYmJleWpAd3BpLmVkdT4KCVVzZSBYQ3JlYXRlSW1hZ2UvWEdldFN1YkltYWdlIGluc3RlYWQgb2YgWEdldEltYWdlIGZvcgoJWDExRFJWX0RJQl9HZXRJbWFnZUJpdHMuCgoyMDAwLTA2LTEwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogdW5pY29kZS9jXzk1MC5jLCB1bmljb2RlL2NwbWFwLnBsLCB1bmljb2RlL2NwdGFibGUuYywgdW5pY29kZS9NYWtlZmlsZS5pbiwgdW5pY29kZS9jXzA0Mi5jLCB1bmljb2RlL2NfMTAwMDAuYywgdW5pY29kZS9jXzEwMDA2LmMsIHVuaWNvZGUvY18xMDA3OS5jLCB1bmljb2RlL2NfMTAwODEuYywgdW5pY29kZS9jXzEyNTMuYywgdW5pY29kZS9jXzEyNTUuYywgdW5pY29kZS9jXzEyNTcuYywgdW5pY29kZS9jXzI4NTkzLmMsIHVuaWNvZGUvY18yODU5Ni5jLCB1bmljb2RlL2NfMjg1OTcuYywgdW5pY29kZS9jXzI4NTk4LmMsIHVuaWNvZGUvY180MjQuYywgdW5pY29kZS9jXzg1Ni5jLCB1bmljb2RlL2NfODU3LmMsIHVuaWNvZGUvY184NjQuYywgdW5pY29kZS9jXzg3NC5jLCB1bmljb2RlL2NfOTMyLmMsIHVuaWNvZGUvY185MzYuYywgdW5pY29kZS9jXzk0OS5jLCBtZW1vcnkvY29kZXBhZ2UuYzoKCUFkZGVkIHN1cHBvcnQgZm9yIHN5bWJvbCBjb2RlcGFnZS4KCUltcHJvdmVkIGhhbmRsaW5nIG9mIHVuZGVmaW5lZCBjb2RlcGFnZSBjaGFyYWN0ZXJzLgoKCSogbG9hZGVyL25lL21vZHVsZS5jOgoJTWFrZSBzdXJlIEdldE1vZHVsZUZpbGVOYW1lMTYgZG9lcyBub3QgcmV0dXJuIGdhcmJhZ2UgZXZlbiBpZiB0aGUgcGF0aAoJaXMgbm90IHZhbGlkICh0aGFua3MgdG8gQW5kcmVhcyBNb2hyKS4KCgkqIGdyYXBoaWNzL3gxMWRydi90ZXh0LmMsIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLCBpbmNsdWRlL3gxMWZvbnQuaDoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJQXNzaWduIGNvZGVwYWdlIGZvciBldmVyeSBYMTEgZm9udCBzdWZmaXgsIGFuZCB1c2UgaXQgZm9yIGNvbnZlcnRpbmcKCXRleHQgdG8gZGlzcGxheS4KCgkqIHdpbjMyL01ha2VmaWxlLmluLCB3aW4zMi9jb2RlX3BhZ2UuYywgZGxscy9rZXJuZWwva2VybmVsLnNwZWMsIG1lbW9yeS9NYWtlZmlsZS5pbiwgbWVtb3J5L2NvZGVwYWdlLmMsIG1lbW9yeS9zdHJpbmcuYzoKCVJld3JvdGUgY29kZXBhZ2Ugc3VwcG9ydCB0byB1c2UgdGhlIG5ldyBjb2RlcGFnZSB0YWJsZXMuCgoJKiB1bmljb2RlL2NwbWFwLnBsLCB1bmljb2RlL21idG93Yy5jLCB1bmljb2RlL3djdG9tYi5jLCB1bmljb2RlL2NfODU3LmMsIHVuaWNvZGUvY184NjAuYywgdW5pY29kZS9jXzg2MS5jLCB1bmljb2RlL2NfODYyLmMsIHVuaWNvZGUvY184NjMuYywgdW5pY29kZS9jXzg2NC5jLCB1bmljb2RlL2NfODY1LmMsIHVuaWNvZGUvY184NjYuYywgdW5pY29kZS9jXzg2OS5jLCB1bmljb2RlL2NfODc0LmMsIHVuaWNvZGUvY184NzUuYywgdW5pY29kZS9jXzg3OC5jLCB1bmljb2RlL2NfOTMyLmMsIHVuaWNvZGUvY185MzYuYywgdW5pY29kZS9jXzk0OS5jLCB1bmljb2RlL2NfOTUwLmMsIGluY2x1ZGUvd2luZS91bmljb2RlLmgsIGluY2x1ZGUvd2lubmxzLmgsIHVuaWNvZGUvY18wMzcuYywgdW5pY29kZS9jXzEwMDAwLmMsIHVuaWNvZGUvY18xMDAwNi5jLCB1bmljb2RlL2NfMTAwMDcuYywgdW5pY29kZS9jXzEwMDI5LmMsIHVuaWNvZGUvY18xMDA2LmMsIHVuaWNvZGUvY18xMDA3OS5jLCB1bmljb2RlL2NfMTAwODEuYywgdW5pY29kZS9jXzEwMjYuYywgdW5pY29kZS9jXzEyNTAuYywgdW5pY29kZS9jXzEyNTEuYywgdW5pY29kZS9jXzEyNTIuYywgdW5pY29kZS9jXzEyNTMuYywgdW5pY29kZS9jXzEyNTQuYywgdW5pY29kZS9jXzEyNTUuYywgdW5pY29kZS9jXzEyNTYuYywgdW5pY29kZS9jXzEyNTcuYywgdW5pY29kZS9jXzEyNTguYywgdW5pY29kZS9jXzIwODY2LmMsIHVuaWNvZGUvY18yODU5MS5jLCB1bmljb2RlL2NfMjg1OTIuYywgdW5pY29kZS9jXzI4NTkzLmMsIHVuaWNvZGUvY18yODU5NC5jLCB1bmljb2RlL2NfMjg1OTUuYywgdW5pY29kZS9jXzI4NTk2LmMsIHVuaWNvZGUvY18yODU5Ny5jLCB1bmljb2RlL2NfMjg1OTguYywgdW5pY29kZS9jXzI4NTk5LmMsIHVuaWNvZGUvY180MjQuYywgdW5pY29kZS9jXzQzNy5jLCB1bmljb2RlL2NfNTAwLmMsIHVuaWNvZGUvY183MzcuYywgdW5pY29kZS9jXzc3NS5jLCB1bmljb2RlL2NfODUwLmMsIHVuaWNvZGUvY184NTIuYywgdW5pY29kZS9jXzg1NS5jLCB1bmljb2RlL2NfODU2LmM6CglBZGRlZCBzdXBwb3J0IGZvciBXQ19OT19CRVNUX0ZJVF9DSEFSIGFuZCBkZWZhdWx0IGNoYXIgcGFyYW1ldGVycyBpbgoJY3Bfd2NzdG9tYnMuCglNaW5vciBjb3NtZXRpYyBmaXhlcy4KCgkqIGRsbHMvZGRyYXcvZHBhbGV0dGUvZGdhLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UvZGdhLmM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUNhbGwgVFNYRmx1c2ggYWZ0ZXIgc2V0dGluZyBER0EgcGFsZXR0ZSwgc28gaXQgdXBkYXRlcyBpbW1lZGlhdGVseS4KCjIwMDAtMDYtMDkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB1bmljb2RlL2NfMjg1OTEuYywgdW5pY29kZS9jXzI4NTkyLmMsIHVuaWNvZGUvY18yODU5My5jLCB1bmljb2RlL2NfMjg1OTQuYywgdW5pY29kZS9jXzI4NTk1LmMsIHVuaWNvZGUvY18yODU5Ni5jLCB1bmljb2RlL2NfMjg1OTcuYywgdW5pY29kZS9jXzI4NTk4LmMsIHVuaWNvZGUvY18yODU5OS5jLCB1bmljb2RlL2NfNDI0LmMsIHVuaWNvZGUvY180MzcuYywgdW5pY29kZS9jXzUwMC5jLCB1bmljb2RlL2NfNzM3LmMsIHVuaWNvZGUvY183NzUuYywgdW5pY29kZS9jXzg1MC5jLCB1bmljb2RlL2NfODUyLmMsIHVuaWNvZGUvY184NTUuYywgdW5pY29kZS9jXzg1Ni5jLCB1bmljb2RlL2NfODU3LmMsIHVuaWNvZGUvY184NjAuYywgdW5pY29kZS9jXzg2MS5jLCB1bmljb2RlL2NfODYyLmMsIHVuaWNvZGUvY184NjMuYywgdW5pY29kZS9jXzg2NC5jLCB1bmljb2RlL2NfODY1LmMsIHVuaWNvZGUvY184NjYuYywgdW5pY29kZS9jXzg2OS5jLCB1bmljb2RlL2NfODc0LmMsIHVuaWNvZGUvY184NzUuYywgdW5pY29kZS9jXzg3OC5jLCB1bmljb2RlL2NfOTMyLmMsIHVuaWNvZGUvY185MzYuYywgdW5pY29kZS9jXzk0OS5jLCB1bmljb2RlL2NfOTUwLmMsIHVuaWNvZGUvY3BtYXAucGwsIHVuaWNvZGUvY3B0YWJsZS5jLCB1bmljb2RlL2RlZmF1bHRzLCB1bmljb2RlL21idG93Yy5jLCB1bmljb2RlL3djdG9tYi5jLCBNYWtlZmlsZS5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGluY2x1ZGUvd2luZS91bmljb2RlLmgsIHVuaWNvZGUvLmN2c2lnbm9yZSwgdW5pY29kZS9NYWtlZmlsZS5pbiwgdW5pY29kZS9jXzAzNy5jLCB1bmljb2RlL2NfMTAwMDAuYywgdW5pY29kZS9jXzEwMDA2LmMsIHVuaWNvZGUvY18xMDAwNy5jLCB1bmljb2RlL2NfMTAwMjkuYywgdW5pY29kZS9jXzEwMDYuYywgdW5pY29kZS9jXzEwMDc5LmMsIHVuaWNvZGUvY18xMDA4MS5jLCB1bmljb2RlL2NfMTAyNi5jLCB1bmljb2RlL2NfMTI1MC5jLCB1bmljb2RlL2NfMTI1MS5jLCB1bmljb2RlL2NfMTI1Mi5jLCB1bmljb2RlL2NfMTI1My5jLCB1bmljb2RlL2NfMTI1NC5jLCB1bmljb2RlL2NfMTI1NS5jLCB1bmljb2RlL2NfMTI1Ni5jLCB1bmljb2RlL2NfMTI1Ny5jLCB1bmljb2RlL2NfMTI1OC5jLCB1bmljb2RlL2NfMjA4NjYuYzoKCUFkZGVkIGEgYnVuY2ggb2YgY29kZSBwYWdlIHRhYmxlcyBmb3IgbXVsdGlieXRlPC0+d2lkZSBjaGFyCgljb252ZXJzaW9ucyAod2l0aCB0aGUgaGVscCBvZiBEbWl0cnkgVGltb3Noa292KS4KCjIwMDAtMDYtMDggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvbnRkbGwvcnRsc3RyLmMsIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYywgaW5jbHVkZS9udGRkay5oLCBpbmNsdWRlL3dpbm5scy5oLCBtZW1vcnkvc3RyaW5nLmMsIG1pc2MvbHN0ci5jLCBkbGxzL2NydGRsbC9jcnRkbGwuc3BlYywgZGxscy9jcnRkbGwvd2NzdHJpbmcuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJSW1wbGVtZW50IE5URExMLnRvd3VwcGVyIGFuZCBOVERMTC50b3dsb3dlciB1c2luZyBhbHJlYWR5IGV4aXN0aW5nCgljYXNlIGNvbnZlcnNpb24gdGFibGVzLiBSZXBsYWNlIGFsbCBkaXJlY3QgY2FsbHMgdG8gdG93dXBwZXIvdG93bG93ZXIKCWVpdGhlciB0byBOVERMTCBmb3IgY29yZSBvciB0byBDUlRETEwgaWYgbGF0dGVyIGFscmVhZHkgdXNlZCBpbiB0aGUKCW5vbiBjb3JlIGRsbC4KCgkqIGdyYXBoaWNzL3gxMWRydi9iaXRibHQuYzogU2hpIFF1YW4gSGUgKG9mIENvcmVsKQoJVGhlIGltcGxlbWVudGF0aW9uIG9mIFN0cmV0Y2hCbHQgaW4gV0lORSBkb2VzIG5vdCB1c2UgdGhlIGZvcmVncm91bmQgYW5kCgliYWNrZ3JvdW5kIGNvbG9yIHdoZW4gYSBiaXRtYXAgaXMgY29waWVkIGZyb20gbW9ubyB0byBtb25vLiAgVGhpcyBpcwoJbm90IHRoZSBjYXNlIGluIHRoZSBhY3R1YWwgaW1wbGVtZW50YXRpb24gdW5kZXIgV2luZG93cyBidXQgTVNETiBkaWQKCW5vdCBkb2N1bWVudCBpdC4KCgkqIGRsbHMvY29tY3RsMzIvc3RhdHVzLmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJV2luZG93cyBtdXN0IHVwZGF0ZSB0aGUgcmlnaHQgZWRnZSAoLTEpIG9mIHRoZSBsYXN0IHBhbmVsIHVwb24gZHJhd2luZwoJaW5zdGVhZCBvZiByZWx5aW5nIG9uIFdNX1NJWkUuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJUHJvcGVybHkgaGFuZGxlIEluc2VydEl0ZW0gd2l0aCBhbiBpbnZhbGlkIEhUUkVFSVRFTS4gV2luZG93cyBoYW5kbGVzCgl0aGVzZSBsaWtlIGEgVFZJX0xBU1QuCgoJKiB3aW5kb3dzL3gxMWRydi9ldmVudC5jOgoJVHVyY2hhbm92IFNlcmdlaSA8dHVyY2hhbm92QG90dnByaW0ucnU+CglER0EgY29tcGlsZSBmaXguCgoJKiBkbGxzL01ha2VmaWxlLmluOiBBZGRlZCBtaXNzaW5nIGRlcGVuZGVuY3kuCgoJKiBkZWJ1Z2dlci9tc2MuYywgZGVidWdnZXIvd2luZWRiZy5jLCByZWxheTMyL2J1aWx0aW4zMi5jOgoJUmVtb3ZlZCB0aGUgLnhjbmxuayBzZWN0aW9uIGhhY2ssIGFuZCByZXBsYWNlZCBpdCBieSBhbm90aGVyIGhhY2sgaW4KCXRoZSBkZWJ1Z2dlciBDUkVBVEVfUFJPQ0VTUyBldmVudCBoYW5kbGluZy4KCgkqIGRsbHMvTWFrZWZpbGUuaW46IE1lcmdlZCBtb3VzZSBkbGwgaW50byBVU0VSLgoKCSogcHJvZ3JhbXMvd2luaGVscC9tYWNyby5jOiBDb21waWxlIGZpeC4KCgkqIGlmMTYzMi9idWlsdGluLmMsIGlmMTYzMi90aHVuay5jLCBsb2FkZXIvdGFzay5jLCBtZW1vcnkvYXRvbS5jLCBzY2hlZHVsZXIvdGhyZWFkLmMsIHdpbjMyL2tlcm5lbDMyLmM6CglSZW1vdmVkIGEgZmV3IHVubmVjZXNzYXJ5IGluY2x1ZGVzLgoKCSogZGxscy90dHlkcnYvdHR5ZHJ2X21haW4uYywgZGxscy91c2VyLy5jdnNpZ25vcmUsIGRsbHMvdXNlci9NYWtlZmlsZS5pbiwgZGxscy91c2VyL2Rpc3BsYXkuYywgZGxscy91c2VyL2Rpc3BsYXkuc3BlYywgZGxscy91c2VyL21vdXNlLmMsIGRsbHMvdXNlci9tb3VzZS5zcGVjLCBkbGxzL3VzZXIvbW91c2VyYy5yYywgZGxscy91c2VyL3VzZXJfbWFpbi5jLCBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jLCBpbmNsdWRlL21vdXNlLmgsIGluY2x1ZGUvdHR5ZHJ2LmgsIGluY2x1ZGUvdXNlci5oLCBpbmNsdWRlL3gxMWRydi5oLCB3aW5kb3dzL3R0eWRydi9tb3VzZS5jLCB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCB3aW5kb3dzL3gxMWRydi9tb3VzZS5jLCBNYWtlZmlsZS5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvZGlucHV0L01ha2VmaWxlLmluLCBkbGxzL2RpbnB1dC9kaW5wdXQuc3BlYzoKCU1lcmdlZCBtb3VzZSBkbGwgaW50byBVU0VSLgoKCSogZGVidWdnZXIvTWFrZWZpbGUuaW4sIGRsbHMvcmljaGVkaXQvTWFrZWZpbGUuaW4sIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwgZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYywgZGxscy91cmxtb24vTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vd2lubW0uc3BlYywgbGlidGVzdC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvYXZpdG9vbHMvTWFrZWZpbGUuaW4sIHJlc291cmNlcy9NYWtlZmlsZS5pbiwgTWFrZS5ydWxlcy5pbjoKCVNpbXBsaWZpZWQgd3JjIGZsYWdzIGhhbmRsaW5nLgoKCSogd2luZG93cy93aW4uYzoKCVlldCBhbm90aGVyIGF0dGVtcHQgYXQgZml4aW5nIENXX1VTRURFRkFVTFQgaGFuZGxpbmcuCgoJKiBsb2FkZXIvbW9kdWxlLmM6CglVc2UgRklMRV9TSEFSRV9SRUFEIHRvIG9wZW4gdGhlIGZpbGUgaW4gR2V0QmluYXJ5VHlwZUEuCgoJKiBkZWJ1Z2dlci9tb2R1bGUuYzoKCVN0cmlwIHBhdGggbmFtZSBmcm9tIGRsbCB3aGVuIGFkZGluZyBzeW1ib2xzLgoKCSogbG9hZGVyL3BlX2ltYWdlLmM6CglTZW5kIGZ1bGwgcGF0aCBuYW1lIGFuZCBkZWJ1ZyBpbmZvcm1hdGlvbiBpbiBsb2FkX2RsbCBldmVudC4KCgkqIGluY2x1ZGUvc2VydmVyLmgsIHJlbGF5MzIvYnVpbHRpbjMyLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNlcnZlci9kZWJ1Z2dlci5jLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvdHJhY2UuYywgaW5jbHVkZS9tb2R1bGUuaDoKCVBhc3MgdGhlIG1haW4gZXhlIG5hbWUgaW4gdGhlIENSRUFURV9QUk9DRVNTIGRlYnVnIGV2ZW50LgoKCSogc2NoZWR1bGVyL3N5c2RlcHMuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJTWFrZSBhIGJldHRlciBndWVzcyB0byBmaW5kIHRoZSB0b3Agb2YgdGhlIGluaXRpYWwgc3RhY2suCglGaXhlZCBGcmVlQlNEIGNvbXBpbGUgcHJvYmxlbSAodGhhbmtzIHRvIEdlcmFsZCBQZmVpZmZlcikuCgoJKiB3aW5kb3dzL2N1cnNvcmljb24uYzoKCUxvdWlzLVBoaWxpcHBlIEdhZ25vbiAob2YgTWFjYWRhbWlhbiBmb3IgQ29yZWwpCglTZWFyY2ggZm9yIGFscmVhZHkgbG9hZGVkIEN1cnNvckljb24gd2FzIGRvbmUgd2l0aCB0aGUgd3JvbmcgaGFuZGxlLAoJc28gaXQgd2FzIGxlYWtpbmcgaWNvbnMuIEZpeGVkLgoKCSogdG9vbHMvd3JjL1JFQURNRS53cmMsIHRvb2xzL3dyYy9kdW1wcmVzLmMsIHRvb2xzL3dyYy9nZW5yZXMuYywgdG9vbHMvd3JjL25ld3N0cnVjLmMsIHRvb2xzL3dyYy9uZXdzdHJ1Yy5oLCB0b29scy93cmMvcGFyc2VyLmwsIHRvb2xzL3dyYy9wYXJzZXIueSwgdG9vbHMvd3JjL3BwbC5sLCB0b29scy93cmMvd3JjLmgsIHRvb2xzL3dyYy93cmMubWFuLCB0b29scy93cmMvd3JjdHlwZXMuaCwgdG9vbHMvd3JjL3dyaXRlcmVzLmMsIHRvb2xzL3dyYy9DSEFOR0VTOgoJQmVydGhvIFN0dWx0aWVucyA8YmVydGhvQGFraHBoZC5hdS5kaz4KCS0gSW1wbGVtZW50ZWQgTUVTU0FHRVRBQkxFIHJlc291cmNlIHR5cGUuCgktIFVzZXJ0eXBlIHJlc291cmNlcyB0aGF0IGNhdXNlIGEgdHlwZS1jbGFzaCB3aXRoIGRlZmluZWQgcmVzb3VyY2VzCgkgIGFyZSBub3cgZGV0ZWN0ZWQgYW5kIGEgd2FybmluZyBpcyBnZW5lcmF0ZWQuIFNvbWUgdHlwZXMgc2hvdWxkIGJlCgkgIHJlcm91dGVkIHRocm91Z2ggb3RoZXIgY29kZSBzbyB0aGF0IHRoZXkgd2lsbCBiZSAocmUtKWludGVycHJldGVkLgoJLSBCdWdmaXg6IExpbmUtY29udGludWF0aW9uIGluIHN0cmluZ3MgaW4gcmVzb3VyY2VzIGluY2x1ZGUgYSBuZXdsaW5lLgoJICBUaGlzIGBmZWF0dXJlJyBnb3QgZGVsZXRlZCB3aXRoIHRoZSBidWlsdGluIHByZXByb2Nlc3NvciwgYnV0IGhhcyBiZWVuCgkgIHB1dCBiYWNrIGludG8gcGxhY2UgKHNlZSBsYXN0IGNoYW5nZXMgY29tbWVudCBmcm9tIHZlcnNpb24gMS4xLjApLgoJLSBCdWdmaXg6IFRoZSBwcmVwcm9jZXNzb3Igbm93IGNvcnJlY3RseSB3aWxsIHNlZSAiXFxcclxuIiBhcyBhIGxpbmUtCgkgIGNvbnRpbnVhdGlvbi4KCS0gQnVnZml4OiBBc3NlbWJsZXJzIG9uIHNvbWUgcGxhdGZvcm1zIGRvIG5vdCB1c2UgMTZiaXQgcXVhbnRpdGllcwoJICBmb3IgYC53b3JkJy4gVGhpcyBkaXJlY3RpdmUgaXMgbm93IGNoYW5nZWQgaW50byBgLnNob3J0Jy4KCS0gQWxsIHR5cGVzIHRoYXQgYWNjZXB0IGlubGluZSBkYXRhIGRlZmluaXRpb25zIChhIGxhIFJDREFUQSkgbm93CgkgIGFsc28gYWNjZXB0IGEgZmlsZSBzcGVjaWZpY2F0aW9uLiBUaGlzIHVuaWZpZXMgdGhlIHN0cnVjdHVyZSBhIGJpdC4KCjIwMDAtMDYtMDcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkb2N1bWVudGF0aW9uL2RsbC1vdmVycmlkZXM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVRleHQgb2YgV1dOIGFydGljbGUgIkRMTCBvdmVycmlkZXMiLgoKCSogZG9jdW1lbnRhdGlvbi9IT1dUTy13aW5lbGliOgoJV2lsYnVyIE4uIERhbGUgPHdpbGJ1ci5kYWxlQGx1bWluLm5sPgoJQWRkZWQgdG8gcHJvamVjdC4gQ3VycmVudGx5IGluY29tcGxldGUgYnV0IHdpbGwgdXBkYXRlIHdlZWtseS4KCgkqIHNjaGVkdWxlci9jbGllbnQuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jOgoJU2V0dXAgc2lnbmFsIGhhbmRsaW5nIGFuZCBleGNlcHRpb25zIG9ubHkgYWZ0ZXIgUkVRX0lOSVRfUFJPQ0VTU19ET05FCgloYXMgYmVlbiBzZW50LCB0byBhdm9pZCBkZWFkbG9ja2luZyB0aGUgZGVidWdnZXIuCgoJKiBjb250cm9scy9jb21iby5jLCBpbmNsdWRlL2NvbWJvLmg6CglTZXJnZSBJdmFub3YgPHNlcmdlaUBjb3JlbC5jYT4KCS0gQ29tYm9MQm94IGlzIGFsd2F5cyBjcmVhdGVkIGFzIGNoaWxkIG9mIENvbWJvQm94LiBJZiBDb21ib0JveCBoYXMgc3R5bGUKCSAgb3RoZXIgdGhhbiBDQlNfU0lNUExFLCBwYXJlbnQgb2YgbGlzdGJveCBpcyBzZXQgdG8gZGVza3RvcC4KCS0gSW4gQ0JEcm9wRG93bi4gQ29tYm9Cb3ggdXNlcyBvbmx5IGZpcnN0IGl0ZW0gdG8gY2FsY3VsYXRlIGhlaWdodCBvZgoJICBkcm9wcGVkIGxpc3Rib3guIEFsc28gaWYgbGlzdGJveCBpcyBlbXB0eSBpdHMgaGVpZ2h0IGlzIHVubW9kaWZpZWQKCSAgKHByZXZpb3VzbHkgaXQgd2FzIHNldCB0byAwKS4KCS0gQWRkZWQgY29ycmVjdCBoYW5kbGluZyBvZiBXTV9HRVRETEdDT0RFIGFuZCBXTV8oU1lTKUtFWURPV04gbWVzc2FnZXMuCgktIEdlbmVyYWwgY2xlYW4tdXAuIE1lc3NhZ2Ugb3JkZXIgaXMgbm93IG1vcmUgcHJlY2lzZSAoYXQgbGVhc3QKCSAgbm90aWZpY2F0aW9ucyB0byBjbGllbnQpOyBsaXN0Ym94IC0gY29tYm9ib3ggaW50ZXJhY3Rpb24gaGFzIHNsaWdodAoJICBkaWZmZXJlbmNlcyBjb21wYXJpbmcgdG8gV2luZG93cy4KCgkqIGNvbnRyb2xzL2VkaXQuYzogU2VyZ2UgSXZhbm92IDxzZXJnZWlAY29yZWwuY2E+CgktIFJlbW92ZWQgZGVwZW5kZW5jeSBvZiBlZGl0IGNvbnRyb2wgZnJvbSBjb21ib2JveCBpbXBsZW1lbnRhdGlvbi4KCS0gRWRpdCBjb250cm9sIHVzZXMgdW5kb2N1bWVudGVkIHdpbmRvdyBzdHlsZSAweDAyMDAgdG8gZGV0ZWN0IGlzIGl0IGEgcGFydAoJICBvZiBjb21ib2JveC4gSWYgc28gaXQgY2FsbHMgR2V0RGxnSXRlbShod25kQ29tYm8sIDEwMDApIHRvIGdldCBDb21ib0xCb3gKCSAgd2luZG93IGhhbmRsZSAoc2VlIGNvbW1lbnRzIGZvciBjb21iby5jIGJlbG93KS4KCS0gRURJVF9DaGVja0NvbWJvIC0gbW9kaWZpZWQgZm9yIGNvcnJlY3QgaGFuZGxpbmcgb2Yga2V5Ym9hcmQgbWVzc2FnZXMuCgktIFByb2Nlc3Npbmcgb2YgV01fR0VURExHQ09ERSBhbmQgV01fQ0hBUiBmb3IgVktfUkVUVVJOIGFuZCBWS19FU0NBUEUKCSAgZGVwZW5kcyBvbiB3aGV0aGVyIGxpc3Rib3ggaXMgZHJvcHBlZCBkb3duLiBUaGlzIHByZXZlbnRzIGNsb3Npbmcgb2YgZGlhbG9nCgkgIGlmIGxpc3Rib3ggaXMgZHJvcHBlZCBkb3duIGFuZCBhbGxvd3MgY29tYm9ib3ggdG8gcHJvY2VzcyB0aGVzZSBrZXlib2FyZAoJICBtZXNzYWdlcyBwcm9wZXJseS4KCgkqIGNvbnRyb2xzL2xpc3Rib3guYzogU2VyZ2UgSXZhbm92IDxzZXJnZWlAY29yZWwuY2E+CgktIFdlIGNhbiB1c2Ugd25kLT53SURtZW51IGZvciBDb21ib0xCb3ggKGl0IGlzIG5vdCByZXNldCBhbnltb3JlIGluIFNldFBhcmVudCkKCS0gV2hlbiB1c2VyIGNsaWNrcyBvdXRzaWRlIG9mIGRyb3BwZWQgbGlzdGJveCwgb3JpZ2luYWwgc2VsZWN0aW9uIG11c3QgYmUKCSAgcmVzdG9yZWQuCgktIENvbWJvTEJveCBoYXMgY2FyZXRfb24gPSBGQUxTRSBvbiBjcmVhdGlvbiwgdGhhdCdzIHdoeSBjb21ib2JveCBzZW5kcwoJICBMQl9DQVJFVE9OIG1lc3NhZ2UgYmVmb3JlIGRyb3BwaW5nIGxpc3Rib3ggZG93biAoYnV0IG9ubHkgZm9yCgkgIENCU19EUk9QRE9XTkxJU1QgLSBJIGRvbid0IG5vdyB3aHkpLgoKCSogd2luZG93cy94MTFkcnYvd25kLmM6IFNlcmdlIEl2YW5vdiA8c2VyZ2VpQGNvcmVsLmNhPgoJV2VsbCwgU2V0UGFyZW50IGRvZXNuJ3Qgd29yayBwcm9wZXJseSBhdCBhbGwsIGJ1dCBhdCBsZWFzdCBpdCBtdXN0IHByZXNlcnZlCgl3aW5kb3cgSUQuICBJbiBmYWN0IGl0IGFsc28gbXVzdCBwcmVzZXJ2ZSB3aW5kb3cgc3R5bGVzLCBkZXN0cm95IFgKCWNvdW50ZXJwYXJ0IGlmIHBhcmVudCBvZiBwb3B1cCBvciBvdmVybGFwcGVkIHdpbmRvdyBpcyBzZXQgdG8gc29tZXRpbmcKCWRpZmZlcmVudCBmcm9tIERlc2t0b3AsIGFuZCBsb3Qgb2Ygb3RoZXIgc3R1ZmYgdGhhdCBpdCBtdXN0IGFuZCBtdXN0bid0IGRvLgoJQnV0IHByZXNlcnZpbmcgSUQgaXMgZ29vZCBlbm91Z2ggZm9yIG5vdy4KCgkqIGluY2x1ZGUvd2ludXNlci5oOiBTZXJnZSBJdmFub3YgPHNlcmdlaUBjb3JlbC5jYT4KCUFkZGVkIHVuZG9jdW1lbnRlZCB3aW5kb3cgc3R5bGUuCgoJKiBkbGxzL2RwbGF5eC9kcGxheS5jLCBkbGxzL2RwbGF5eC9kcGxheXhfbWFpbi5jLCBkbGxzL2RwbGF5eC9kcGxheXhfcXVldWUuaCwgZG9jdW1lbnRhdGlvbi9zdGF0dXMvZGlyZWN0cGxheToKCVBldGVyIEh1bm5pc2V0dCA8aHVubmlzZUBub3J0ZWxuZXR3b3Jrcy5jb20+CgktIFNtYWxsIHVwZGF0ZSB0byBkb2N1bWVudGF0aW9uCgktIE1vcmUgcGxheWVyL2dyb3VwIGludGVyZmFjZSBpbXBsZW1lbnRhdGlvbiAobm90IHRlc3RlZCkKCgkqIHdpbjMyL2V4Y2VwdC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglEb24ndCBjYWxsIE1lc3NhZ2VCb3hBIGJlZm9yZSBVU0VSIGlzIGluaXRpYWxpemVkLgoKCSogY29udHJvbHMvbGlzdGJveC5jOiBTdGVwaGFuZSBMdXNzaWVyCglTaGVyaSBTdGVldmVzCglIYWl0aGVtIEhtaWRhCgktIEhlaWdodCBvZiB0aGUgbGlzdGJveCBzaG91bGQgYmUgYWRqdXN0IHdoZW4gTEJTX09XTkVSRFJBV0ZJWEVEIGlzIHNldAoJICBhbmQgbm90IGlmIExCU19PV05FUkRSQVdWQVJJQUJMRSBpcyBzZXQsIHByZXZpb3VzbHkgaXQgd2FzIG5vdCBhZGp1c3RpbmcKCSAgdGhlIHNpemUgaW4gYm90aCBjYXNlcy4KCS0gV2hlbiB0aGUgY2FyZXQgaW5kZXggY2hhbmdlLCBpdGVtcyByZXBhaW50aW5nIG5lZWQgdHAgYmUgaW4gdGhpcwoJICBvcmRlcgoJICBhKSBQYWludCBvbGQgY2FyZXQgaXRlbSB3aXRob3V0IHRoZSBmb2N1cwoJICBiKSBQYWludCBvbGQgY2FyZXQgaXRlbSB3aXRob3V0IHRoZSBzZWxlY3Rpb24KCSAgYykgUGFpbnQgbmV3IGNhcmV0IGl0ZW0gd2l0aCB0aGUgc2VsZWN0aW9uCgkgIGQpIFBhaW50IG5ldyBjYXJldCBpdGVtIHdpdGggdGhlIGZvY3VzLgoJLSBXaGVuIHJlcGFpbnRpbmcgdGhlIGxpc3Rib3gsIHdlIHNob3VsZCBwYWludCBhbGwgaXRlbXMgcmVnYXJkaW5nIGlmCgkgIHRoZXkgYXJlIHNsZWN0ZWQgb3Igbm90IGFuZCB0aGVuIHBhaW50IGFmdGVyIHRoZSBmb2N1cyBpdGVtLiBTbyBmb2N1cwoJICBpdGVtIHdpbGwgZW5kIG91dCBiZWluZyBwYWludGVkIHR3aWNlLiAoVGhhdCdzIHdoYXQgV2luZG93cyBkb2VzKS4KCgkqIGZpbGVzL2ZpbGUuYzogU3RhcyBTZXJnZWV2IDxzdGFzLm9yZWxAbWFpbGNpdHkuY29tPgoJbW1hcCgpIGZhaWxzIHdpdGggRU5PREVWIG9uIE5URlMgdW5kZXIgTGludXguCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmMsIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVBhdGhGaW5kTmV4dENvbXBvbmVudDogcmV0dXJuIHBvaW50ZXIgdG8gTlVMTCBhbmQgbm90IE5VTEwuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglBZGRlZCBoYW5kbGluZyBvZiBUQlNUWUxFX0FVVE9TSVpFLgoKCSogZGxscy9jb21jdGwzMi9kYXRldGltZS5jLCBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmMsIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYywgZGxscy94MTFkcnYveDExZHJ2X21haW4uYywgaW5jbHVkZS9jcnRkbGwuaCwgbXNkb3MvaW9wb3J0cy5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIHdhcm5pbmdzLgoKCSogZGxscy91cmxtb24vdW1vbi5jLCBpbmNsdWRlL3VybG1vbi5oLCBzY2hlZHVsZXIvY3JpdHNlY3Rpb24uYywgZGxscy9vZGJjMzIvcHJveHlvZGJjLmMsIGRsbHMvb2xlMzIvbW9uaWtlci5jLCBkbGxzL3NoZWxsMzIvc2hlbGxzdHJpbmcuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgaXNzdWVzIGZvdW5kIGJ5IHdpbmFwaV9jaGVjay4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9jb21kbGczMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9vZGJjMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2xvY2FsLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX29wdGlvbnMucG0sIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLmRhdCwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9jaGVjazoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBNaW5vciBBUEkgZmlsZXMgdXBkYXRlLgoJLSBUdXJuZWQgb24gY2FsbGluZyBjb252ZW50aW9uIGNoZWNraW5nIGZvciBXaW4zMiBmdW5jdGlvbnMgYnkKCSAgZGVmYXVsdC4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJVE9PTEJBUl9EcmF3U3RyaW5nOiBjYXRjaCBpbmRleD09IC0xIChidXQgbm90IHlldCBoYW5kbGVkKS4KCgkqIG1pc2Mvb3B0aW9ucy5jOgoJRml4ZWQgb2ZmLWJ5LW9uZSBlcnJvciBpbiBzdHJpbmcgYWxsb2NhdGlvbi4KCgkqIHdpbmRvd3Mvd2luLmM6CglBbGV4YW5kcmUgSnVsbGlhcmQgPGp1bGxpYXJkQGNvZGV3ZWF2ZXJzLmNvbT4gZm9yIENvcmVsCglUaGUgd2luZG93IGRpbWVuc2lvbnMgaGF2ZSB0byBiZSBpbml0aWFsaXplZCBiZWZvcmUgc2VuZGluZyB0aGUKCVdNX0dFVE1JTk1BWElORk8gbWVzc2FnZS4KCgkqIGluY2x1ZGUvbWlzY2VtdS5oLCBtc2Rvcy9kZXZpY2VzLmMsIG1zZG9zL2Rvc21lbS5jLCBtc2Rvcy9kcG1pLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVJlbW92ZWQgbWlzLWFsaWduZWQgYWNjZXNzZXMgZHVyaW5nIEJJT1MvRE9TIGRhdGEgaW5pdGlhbGl6YXRpb24uCgoJKiB0b29scy9idWlsZC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglGaXhlZCBzaXplIG9mIHBlX2hlYWRlciBvbiBtYWNoaW5lcyB3aXRoIG5vbi00SyBwYWdlcy4KCgkqIGlmMTYzMi9zbm9vcC5jLCByZWxheTMyL3Nub29wLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglVc2UgIkNBTEwiIGFuZCAiUkVUIiBpbiBjYXBpdGFsIGxldHRlcnMgZm9yIGRpc3RpbmN0aW9uLgoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYzoKCU5vb21lbiBIYW16YSA8bm9vbWVuQG1hY2FkYW1pYW4uY29tPgoJVGhlIGFjdGl2ZSBwYWdlIHNob3VsZCBiZSB1bmNoYW5nZWQgd2hlbiByZW1vdmluZyBhbiBhY3RpdmUgZmlyc3QgcGFnZQoJZnJvbSBhIHByb3BlcnR5IHNoZWV0cy4KCjIwMDAtMDYtMDQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL250ZGxsL3NpZ25hbF9zcGFyYy5jLCBtZW1vcnkvc2VsZWN0b3IuYywgc2NoZWR1bGVyL2NyaXRzZWN0aW9uLmMsIHNlcnZlci9NYWtlZmlsZS5pbiwgc2VydmVyL2NvbnRleHRfc3BhcmMuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJVXBkYXRlZCBzdXBwb3J0IGZvciBTb2xhcmlzL1NwYXJjIGFyY2hpdGVjdHVyZS4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJTWljaGFlbCBDYXJkZW5hcyA8bWljaGFlbF9jYXJkZW5hc0BkZW5lYmEuY29tPgoJQ29ycmVjdGVkIGEgcG90ZW50aWFsIGNyYXNoLgoKCSogc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2NoZWR1bGVyL3N5c2RlcHMuYywgdG9vbHMvYnVpbGQuYywgaW5jbHVkZS9jYWxsYmFjay5oLCBsb2FkZXIvdGFzay5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglNb3ZlZCBzdGFjayBzd2l0Y2ggaGFuZGxpbmcgKGxhcmdlIHN0YWNrKSB0byBzeXNkZXBzLmMKCUVuYWJsZSBleGNlcHRpb24gZGlzcGF0Y2ggd2hpbGUgb24gbGFyZ2Ugc3RhY2suCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCUZpbmlzaGVkIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBMSVNUVklFV19TZXRDb2x1bW5XaWR0aC4gIFRlc3RlZAoJYWdhaW5zdCB3aW5kb3dzIHRob3JvdWdobHkuICBGaXhlZCBidWcgcmVzdWx0aW5nIGluIHVuc2lnbmVkIHZhbHVlcwoJYmVpbmcgcGFzc2VkIGludG8gTElTVFZJRVdfU2V0Q29sdW1uV2lkdGggZnJvbSB0aGUgbGlzdHZpZXcgd2luZG93Cglwcm9jZWR1cmUuICBGaXhlZCBMSVNUVklFV19HZXRJdGVtSGVpZ2h0IHRvIGRpc3JlZ2FyZCB0aGUgaGVpZ2h0IG9mCglpY29ucyBpZiBubyBpY29ucyBleGlzdC4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaDogQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglBZGRlZCBkZWZpbmVzIGZvciBMVlNDV19BVVRPU0laRS9fVVNFSEVBREVSLgoKCSogZGxscy9jb21jdGwzMi9oZWFkZXIuYzoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJUmVwbGFjZWQgY2FsbHMgdG8gSEVBREVSX1JlZnJlc2ggd2l0aCBJbnZhbGlkYXRlUmVjdC4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJRXJpYyBLb2hsIDxla29obEByei1vbmxpbmUuZGU+CglTdGFydGVkIHN1cHBvcnQgZm9yIG1lbnViYXItbGlrZSB0b29sYmFycy4KCgkqIGRlYnVnZ2VyL2JyZWFrLmMsIGRlYnVnZ2VyL2RlYnVnZ2VyLmgsIGRlYnVnZ2VyL2hhc2guYywgZGVidWdnZXIvbWVtb3J5LmMsIGRlYnVnZ2VyL3NvdXJjZS5jLCBkZWJ1Z2dlci9zdGFjay5jLCBkZWJ1Z2dlci93aW5lZGJnLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUNvbXBpbGUgZml4ZXMgZm9yIG5vbi1pMzg2IGFyY2hzLgoKCSogY29udHJvbHMvYnV0dG9uLmMsIGNvbnRyb2xzL3VpdG9vbHMuYzoKCVN1c2FuIEZhcmxleSA8c2ZhcmxleUBjb2Rld2VhdmVycy5jb20+CglBdHRlbXB0IHRvIHBhaW50IHRoZSBjaGVja2JveCBhbmQgcmFkaW8gYnV0dG9ucyBiZXR0ZXIuCgoyMDAwLTA2LTAzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy90dHlkcnYvdHR5ZHJ2X21haW4uYzogRml4ZWQgd2FybmluZy4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzIuc3BlYywgZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmMsIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYywgaW5jbHVkZS9jb21tY3RybC5oOgoJRXJpYyBLb2hsIDxla29obEByei1vbmxpbmUuZGU+CglVcGRhdGVkIHRvIGRsbCB2ZXJzaW9uIDUuODEgKElFIDUuMDEpLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOgoJRXJpYyBLb2hsIDxla29obEByei1vbmxpbmUuZGU+CglJbXBsZW1lbnRlZCBUVk1fR0VUSVRFTVcuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmMsIGluY2x1ZGUvbGlzdHZpZXcuaDoKCUphc29uIE1hd2RzbGV5IDxqYXNvbkBtYWNhZGFtaWFuLmNvbT4KCUFkZGVkIHN1cHBvcnQgZm9yIHR5cGluZyB0aGUgZmlsZW5hbWUgaW4gdGhlIGxpc3R2aWV3IGNvbnRyb2wgYW5kCgloYXZpbmcgdGhlIGNvbnRyb2wgc2VsZWN0IGl0LgoKCSogd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmMsIGluY2x1ZGUvbWVzc2FnZS5oLCBtaXNjL21haW4uYzoKCVJlbW92ZWQgTVNHX1dpbmVTdGFydFRpY2tzIChkb2VzIG5vdCB3b3JrIGZvciBtdWx0aXBsZSBhZGRyZXNzIHNwYWNlcwoJYW55d2F5KS4KCgkqIGdyYXBoaWNzL2VuaG1ldGFmaWxlZHJ2L2luaXQuYzoKCVJlcGxhY2VkIEdldERDIGJ5IENyZWF0ZURDLgoKCSogaW5jbHVkZS9iaXRtYXAuaCwgb2JqZWN0cy9kaWIuYywgd2luZG93cy9jdXJzb3JpY29uLmM6CglNb3ZlZCBESUJfRml4Q29sb3JzVG9Mb2FkZmxhZ3MgdG8gY3Vyc29yaWNvbi5jLgoKCSogZG9jdW1lbnRhdGlvbi93aW5lLm1hbi5pbjoKCVBldGVyIEdhbnRlbiA8cGV0ZXJAZ2FudGVuLm9yZz4KCURvY3VtZW50ZWQgdGhlIG5ldyB3aW5lIGNvbW1hbmQgbGluZSBhbmQgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlCglXSU5FUFJFRklYLgoKCSogbXNkb3MvZHBtaS5jLCBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIHdhcm5pbmdzLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL3dpbjE2L3dpbmVwczE2LmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL2NvbWRsZzMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL2Rzb3VuZC5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9rZXJuZWwzMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9zaGx3YXBpLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMuZGF0LCB0b29scy93aW5hcGlfY2hlY2svd2luMTYvd2luZXBzLmFwaToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQVBJIGZpbGVzIHVwZGF0ZS4KCgkqIG1lbW9yeS9pbnN0ci5jLCBtc2Rvcy9pbnRlcnJ1cHRzLmMsIGRsbHMva2VybmVsL3dwcm9jcy5zcGVjLCBpZjE2MzIvYnVpbHRpbi5jLCBpbmNsdWRlL2J1aWx0aW4xNi5oOgoJRGVsYXkgbG9hZGluZyBvZiBpbnRlcnJ1cHQgdGFibGUgZnVuY3Rpb25zIHVudGlsIHRoZXkgYXJlIG5lZWRlZC4KCgkqIGluY2x1ZGUvbWlzY2VtdS5oLCBtc2Rvcy9pb3BvcnRzLmM6CglEZWxheSBpbml0aWFsaXphdGlvbiBvZiBJL08gcGVybWlzc2lvbnMgdW50aWwgdGhleSBhcmUgZmlyc3QgdXNlZC4KCgkqIGxvYWRlci9tYWluLmMsIGRsbHMva2VybmVsL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC9rZXJuZWxfbWFpbi5jLCBkbGxzL3R0eWRydi90dHlkcnZfbWFpbi5jLCBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jLCBpZjE2MzIvcmVsYXkuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCU1vdmVkIGtlcm5lbCBpbml0aWFsaXphdGlvbiB0byBrZXJuZWxfbWFpbi5jCgoJKiB3aW5kb3dzL3gxMWRydi93bmQuYywgY29uZmlndXJlLmluLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2RpbnB1dC9kaW5wdXRfbWFpbi5jLCBkbGxzL3VzZXIvLmN2c2lnbm9yZSwgZGxscy91c2VyL01ha2VmaWxlLmluLCBkbGxzL3VzZXIvZGlzcC5yYywgZGxscy91c2VyL2Rpc3BsYXkuYywgZGxscy91c2VyL2Rpc3BsYXkuc3BlYywgZGxscy91c2VyL3VzZXJfbWFpbi5jLCBpbmNsdWRlL2Rpc3BsYXkuaCwgbG9hZGVyL21haW4uYywgd2luZG93cy9jdXJzb3JpY29uLmMsIE1ha2VmaWxlLmluLCBjb25maWd1cmU6CglNZXJnZWQgZGlzcGxheS5kbGwgaW50byBVU0VSLgoKCSogbWlzYy93c3ByaW50Zi5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglGaXhlZCBjcmFzaC4KCgkqIHJlbGF5MzIvLmN2c2lnbm9yZSwgcmVsYXkzMi9NYWtlZmlsZS5pbiwgcmVsYXkzMi9rZXJuZWwzMi5zcGVjLCByZWxheTMyL3dvdzMyLnNwZWMsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC8uY3ZzaWdub3JlLCBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwvY29tbS5zcGVjLCBkbGxzL2tlcm5lbC9rZXJuZWwuc3BlYywgZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZGxscy9rZXJuZWwvc3lzdGVtLnNwZWMsIGRsbHMva2VybmVsL3Rvb2xoZWxwLnNwZWMsIGRsbHMva2VybmVsL3dvdzMyLnNwZWMsIGRsbHMva2VybmVsL3dwcm9jcy5zcGVjLCBpZjE2MzIvLmN2c2lnbm9yZSwgaWYxNjMyL01ha2VmaWxlLmluLCBpZjE2MzIvY29tbS5zcGVjLCBpZjE2MzIva2VybmVsLnNwZWMsIGlmMTYzMi9zeXN0ZW0uc3BlYywgaWYxNjMyL3Rvb2xoZWxwLnNwZWMsIGlmMTYzMi93cHJvY3Muc3BlYywgTWFrZS5ydWxlcy5pbiwgTWFrZWZpbGUuaW46CglEaW1pdHJpZSBPLiBQYXVuIDxkaW1pQGNzLnRvcm9udG8uZWR1PgoJU3RhcnQgdG8gc2VwYXJhdGUgS0VSTkVMIG91dCBvZiBsaWJ3aW5lLgoKMjAwMC0wNi0wMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvdHNfeHV0aWwuaCwgdHN4MTEvWDExX2NhbGxzLCB0c3gxMS90c194dXRpbC5jLCB3aW5kb3dzL3gxMWRydi93bmQuYzoKCVN1c2FuIEZhcmxleSA8c2ZhcmxleUBjb2Rld2VhdmVycy5jb20+CglQcmVzZXJ2ZSBXTSBoaW50cyB0aGF0IHdlcmUgc2V0IGR1cmluZyB3aW5kb3cgY3JlYXRpb24gYnkgY2FsbGluZwoJWEdldFdNSGludHMgcHJpb3IgdG8gWFNldFdNSGludHMuCgoJKiBpbmNsdWRlL2NvbW1kbGcuaDoKCU1pY2hhZWwgQ2FyZGVuYXMgPG1pY2hhZWxfY2FyZGVuYXNAZGVuZWJhLmNvbT4KCUFkZGVkIGEgZmV3IG1lc3NhZ2UgY3JhY2tlcnMuCgoJKiB0b29scy93aW5lY29uZjogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglBZGQgIlVuaXggZHJpdmVzIiAvdG1wIGFuZCAke0hPTUV9LCBhbmQgRGV2aWNlIGFuZCBGaWxlc3lzdGVtCglzdGF0ZW1lbnRzLCB0byBhdXRvZ2VuZXJhdGVkIHdpbmUuY29uZi4KCgkqIGRsbHMvY29tbWRsZy9jZGxnLmgsIGRsbHMvY29tbWRsZy9jZGxnMzIuYywgZGxscy9jb21tZGxnL2NkbGdfRW4ucmMsIGRsbHMvY29tbWRsZy9jb21kbGczMi5zcGVjLCBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmMsIGRsbHMvY29tbWRsZy9maWxlZGxnYnJvd3Nlci5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZ2Jyb3dzZXIuaCwgZGxscy9jb21tZGxnL3ByaW50ZGxnLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCS0gUmV3cml0ZSBvZiB0aGUgc2hlbGwgcmVsYXRlZCBwYXJ0cyBvZiB0aGUgZGlhbG9nIHRvIHVzZSB0aGUgYWxyZWFkeQoJICBpbiBzaGVsbDMyaW1wbGVtZW50ZWQgZnVuY3Rpb25zIChTaGVsbEZvbGRlci9QYXRoKikuIEVsaW1pbmF0ZWQgZGlyZWN0CgkgIGZpbGUgYWNjZXNzLgoJLSBSZXBsYWNlZCBMb2FkTGlicmFyeUEgd2l0aCBHZXRNb2R1bGVIYW5kbGVBIHNpbmNlIGNvbWRsZzMyIGlzIGltcG9ydHMKCSAgc29tZSBkbGxzIHBlciAqLnNwZWMgZmlsZQoJLSBNb3N0IE9wZW5GaWxlIEZsYWdzIChPRk5fKikgc2hvdWxkIHdvcmsgcHJvcGVybHkgbm93CgktIFRoZSBlZGl0IGJveCBzaG91bGQgd29yayByaWdodCB3aXRoIGFsbCBzdHVmZiBlbnRlcmVkIGluIGl0IGxpa2UKCSAgLi5cdGVtcFxmaWxlLnR4dCBvciBqdXN0IGM6IHRvIGNoYW5nZSBhIGRyaXZlCgktIE9wdGltaXplZCBEYXRhT2JqZWN0IGhhbmRsaW5nCgktIFNvbWUgYnVncyBmaXhlZCwgc2hvdWxkIHdvcmsgd2l0aCBuYXRpdmUgc2hlbGwzMiBhZ2Fpbi4KCS0gU3R1YnMgZm9yIFByaW50RGxnRXgKCjIwMDAtMDYtMDEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2RwbGF5eC9kcGxheS5jLCBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYywgZGxscy93aW5tbS93aW5lb3NzL21pZGkuYywgZG9jdW1lbnRhdGlvbi9jb25maWcsIGRvY3VtZW50YXRpb24vZGlzdHJpYnV0b3JzLCBkb2N1bWVudGF0aW9uL2ZvbnRzLCBkb2N1bWVudGF0aW9uL25vLXdpbmRvd3MsIG1pc2MvcmVnaXN0cnkuYywgd2luMzIva2VybmVsMzIuYywgd2luZG93cy9kcml2ZXIuYywgd2luZG93cy9tZXNzYWdlLmMsIGNvbnRyb2xzL21lbnUuYywgZGxscy9kZHJhdy9kZHJhdy94MTEuYywgZGxscy9kZHJhdy9kZHJhd19wcml2YXRlLmgsIGRsbHMvZGRyYXcvbWVzYV9wcml2YXRlLmg6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCUxvdHMgb2Ygc3BlbGxpbmcgZml4ZXMgdGhhdCBhY2N1bXVsYXRlZCBpbiBteSB0cmVlIGFnYWluLCBtYWRlIHNldmVyYWwKCWVycm9yIG1zZ3MgbW9yZSB2ZXJib3NlLCBkb2MgdXBkYXRlcy4KCgkqIGRvY3VtZW50YXRpb24vc2hlbGwzMiwgaW5jbHVkZS9zaGx3YXBpLmgsIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwgZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3JlZ3N0cmVhbS5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmMsIGRsbHMvc2hlbGwzMi9zaGVsbHJlZy5jLCBkbGxzL3NoZWxsMzIvc2hlbGxzdHJpbmcuYywgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jLCBkbGxzL3NoZWxsMzIvc2hsbWVudS5jLCBkbGxzL3NoZWxsMzIvc2hsd2FwaS5zcGVjOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CgktIE5ldyAoc29tZSBzdHVicyk6IFNIR2V0Rm9sZGVyTG9jYXRpb24sIFBhdGhBZGRFeHRlbnNpb24sCgkgIFBhdGhJc1VOQ1NlcnZlciwgUGF0aElzVU5DU2VydmVyU2hhcmUsIFBhdGhNYWtlUHJldHR5LAoJICBTSENyZWF0ZVNoZWxsUGFsZXR0ZSwgU0hPcGVuUmVnU3RyZWFtLCBTSE9wZW5SZWdTdHJlYW0yCgktIE1hbnkgc3RyaW5nIGZ1bmN0aW9ucyBpbXBsZW1lbnRlZAoJLSBTb21lIHN0dWJzIGZvciBleHBvcnRzIGJ5IG9yZGluYWwKCgkqIGxvYWRlci9wZV9pbWFnZS5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglHaXZlIGEgZXJyb3IgbWVzc2FnZSBpZiBhIGZvcndhcmRlZCBleHBvcnQgaXMgbm90IHJlc29sdmVkLgoKCSogZmlsZXMvZG9zX2ZzLmMsIGluY2x1ZGUvd2luYmFzZS5oLCByZWxheTMyL2tlcm5lbDMyLnNwZWM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCUltcGxlbWVudGVkIEZpbmRGaXJzdEZpbGVFeCwgY2xlYW5lZCBvbGQgaW1wbGVtZW50YXRpb24gdXAuCgoJKiBjb250cm9scy93aWRnZXRzLmM6CglMb3Vpcy1QaGlsaXBwZSBHYWdub24gKG9mIE1hY2FkYW1pYW4gZm9yIENvcmVsKQoJU3RhdGljIGNvbnRyb2xzIHdlcmVuJ3QgcmVjZWl2aW5nIFdNX0xCVVRUT05EQkxDTEsgbWVzc2FnZXMgYmVjYXVzZSB0aGUKCVN0YXRpYyB3aW5kb3cgY2xhc3Mgd2FzIHJlZ2lzdGVyZWQgd2l0aG91dCB0aGUgQ1NfREJMQ0xLUyBzdHlsZSAod2hpY2ggaXQKCWhhcyBpbiBXaW5kb3dzKS4KCgkqIHNjaGVkdWxlci9wcm9jZXNzLmM6CglNYWtlIHN1cmUgbWFpbl9leGVfbmFtZSBpcyBhIERPUyBmaWxlbmFtZSAodGhhbmtzIHRvIFV3ZSBCb25uZXMpLgoKCSogaW5jbHVkZS9kc291bmQuaCwgZGxscy9kc291bmQvZHNvdW5kX21haW4uYywgaW5jbHVkZS9kcGxheS5oOgoJUGV0ZXIgSHVubmlzZXR0IDxodW5uaXNlQG5vcnRlbG5ldHdvcmtzLmNvbT4KCS0gQWRkZWQgRGlyZWN0U291bmRDYXB0dXJlIGFuZCBEaXJlY3RTb3VuZENhcHR1cmVCdWZmZXIgaW50ZXJmYWNlcwoJLSBBZGRlZCBzb21lIFNvdW5kQ2FwdHVyZSBzdHVicwoJLSBDaGFuZ2VkIFJFRklJRCB0byBMUENHVUlEIGluIGEgZmV3IHBsYWNlcyBhcyBwZXIgTVMgaGVhZGVyIGZpbGUKCgkqIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy9udGRsbC9zZWMuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJU3R1YiBmb3IgUnRsQ29udmVydFNpZFRvVW5pY29kZVN0cmluZy4KCgkqIGNvbnRyb2xzL3N0YXRpYy5jOiBTZXJnZSBJdmFub3YgPHNlcmdlaUBjb3JlbC5jYT4KCU1TRE46ICJXTV9OQ0hJVFRFU1QgLSBSZXR1cm5zIEhUQ0xJRU5UIGlmIHRoZSBjb250cm9sIHN0eWxlIGlzCglTU19OT1RJRlk7IG90aGVyd2lzZSwgcmV0dXJucyBIVFRSQU5TUEFSRU5ULiAiCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmM6CglHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCUZpeGVkIHdhcm5pbmcuCgoyMDAwLTA1LTMxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy93aW4uYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglTZXQgYSBkZWZhdWx0IHNpemUgZm9yIHdpbmRvd3Mgd2hlbiBDV19VU0VERUZBVUxUIGlzIHVzZWQuCgoyMDAwLTA1LTMwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogb2xlL25scy9ocnYubmxzLCB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jLCBkb2N1bWVudGF0aW9uL2xhbmd1YWdlcywgZG9jdW1lbnRhdGlvbi93aW5lLm1hbi5pbiwgaW5jbHVkZS9vcHRpb25zLmgsIG1pc2MvbWFpbi5jLCBvbGUvb2xlMm5scy5jOgoJWm9yYW4gRHplbGFqbGlqYSA8amVsbHlAc3JrLmZlci5ocj4KCUJhc2ljIENyb2F0aWFuIGxhbmd1YWdlIHN1cHBvcnQuCgoJKiBjb250cm9scy9lZGl0LmM6IFNlcmdlIEl2YW5vdgoJUmV0dXJuaW5nIERMR0NfV0FOVEFMTEtFWVMgZm9yIG11bHRpbGluZSBlZGl0IGNvbnRyb2wgd2FzIG5vdCBnb29kIGJlY2F1c2UKCWl0IGJyZWFrcyBuYXZpZ2F0aW9uIGluIGRpYWxvZ3MuCgoJKiBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jOgoJUGV0ZXIgSHVubmlzZXR0IDxodW5uaXNlQG5vcnRlbG5ldHdvcmtzLmNvbT4KCS0gRml4ZWQgc29tZSBpbml0aWFsaXphdGlvbi9kZXN0cnVjdGlvbiBhbmQgcmVmZXJlbmNlIGNvdW50aW5nCgktIEFkZGVkIGEgbGl0dGxlIG1vcmUgZGVidWdnaW5nIGluZm9ybWF0aW9uCgoJKiB0b29scy9mb250X2NvbnZlcnQuc2g6CglQZXRlciBHYW50ZW4gPHBldGVyQGdhbnRlbi5vcmc+CglBZGRlZCBhIHNoZWxsLXNjcmlwdCBmb3IgZWFzaWVyIGZvbnQtaW5zdGFsbGF0aW9uLgoKCSogZGxscy93aW5lcHMvYml0bWFwLmMsIGRsbHMvd2luZXBzL2JydXNoLmMsIGRsbHMvd2luZXBzL2NsaXBwaW5nLmMsIGRsbHMvd2luZXBzL2NvbG9yLmMsIGRsbHMvd2luZXBzL2RyaXZlci5jLCBkbGxzL3dpbmVwcy9lc2NhcGUuYywgZGxscy93aW5lcHMvZm9udC5jLCBkbGxzL3dpbmVwcy9ncmFwaGljcy5jLCBkbGxzL3dpbmVwcy9pbml0LmMsIGRsbHMvd2luZXBzL29iamVjdHMuYywgZGxscy93aW5lcHMvcGVuLmMsIGRsbHMvd2luZXBzL3BwZC5jLCBkbGxzL3dpbmVwcy9wcy5jLCBkbGxzL3dpbmVwcy9wc2Rydi5oLCBkbGxzL3dpbmVwcy90ZXh0LmMsIGRsbHMvd2luZXBzL3dpbmVwcy5zcGVjLCBkbGxzL3dpbmVwcy93aW5lcHMxNi5zcGVjLCBpZjE2MzIvLmN2c2lnbm9yZSwgaWYxNjMyL01ha2VmaWxlLmluLCBpZjE2MzIvd2luZXBzLnNwZWMsIGluY2x1ZGUvcHNkcnYuaCwgbG9hZGVyL21haW4uYywgTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2dkaS9nZGlfbWFpbi5jLCBkbGxzL3dpbmVwcy8uY3ZzaWdub3JlLCBkbGxzL3dpbmVwcy9NYWtlZmlsZS5pbiwgZGxscy93aW5lcHMvYWZtLmMsIGRsbHMvd2luZXBzL2JpdGJsdC5jLCBNYWtlLnJ1bGVzLmluOgoJRGltaXRyaWUgTy4gUGF1biA8ZGltaUBjcy50b3JvbnRvLmVkdT4KCVNlcGFyYXRlIHdpbmVwcyBvdXQgb2YgV2luZSdzIGNvcmUuCgoJKiBkbGxzL2RwbGF5eC9kcGxheXhfbWFpbi5jLCBkbGxzL2RwbGF5eC9kcGxheXhfcXVldWUuaCwgZGxscy9kcGxheXgvZHBsb2JieS5jLCBkbGxzL2RwbGF5eC9kcGxheS5jOgoJUGV0ZXIgSHVubmlzZXR0IDxodW5uaXNlQG5vcnRlbG5ldHdvcmtzLmNvbT4KCS0gQWRkZWQgYSBsaXR0bGUgbW9yZSBkbGwgbGV2ZWwgZGVidWdnaW5nIGFuZCBzbWFsbCBjaGFuZ2VzCgktIFN0YXJ0IG9uIGdyb3VwIGFuZCBwbGF5ZXIgaW50ZXJmYWNlcwoKCSogZGxscy9kc291bmQvZHNvdW5kLnNwZWMsIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmMsIGluY2x1ZGUvZHNvdW5kLmg6CglQZXRlciBIdW5uaXNldHQgPGh1bm5pc2VAbm9ydGVsbmV0d29ya3MuY29tPgoJLSBBZGQgYW5vdGhlciB3YXkgdG8gY3JlYXRlIGEgM2QgbGlzdGVuZXIgaW50ZXJmYWNlLgoJLSBGaXggdXAgc29tZSByZWZlcmVuY2UgY291bnRpbmcgYnVncyBhbmQgaW50ZXJmYWNlIGNyZWF0aW9uIGJ1Z3MKCS0gQWRkIERpcmVjdFNvdW5kRW51bWVyYXRlVyBzdHViCgktIEFkZCBEaXJlY3RTb3VuZENhcHR1cmVFbnVtZXJhdGV7QSxXfSBzdHVicwoKCSogZGxscy9jb21jdGwzMi9kYXRldGltZS5jLCBpbmNsdWRlL2RhdGV0aW1lLmg6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCUFkZGVkIDNEIGJvcmRlciBhcm91bmQgY29udHJvbC4gIEZpeGVkIG1vbnRoY2FsIGNvbnRyb2wgcG9wdXAuICBBZGRlZAoJV01fU0laRSBzdXBwb3J0LiAgT3B0aW1pemVkIGRyYXdpbmcuICBBZGRlZCBXTV9MQlVUVE9OVVAgaGFuZGxpbmcuCglIYW5kbGUgRFRTX1JJR0hUQUxJR04gc3R5bGUuICBGaXhlZCBoYW5kbGluZyBvZiBmb3JtYXR0aW5nIHN0eWxlcywKCWRhdGUgaXMgbm93IGRpc3BsYXllZCBwcm9wZXJseSBmb3IgRFRTX1NIT1JUREFURUZPUk1BVC4KCgkqIGRsbHMvY29tY3RsMzIvbW9udGhjYWwuYzoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJUmVtb3ZlZCBhbGwgZGlyZWN0IGNhbGxzIHRvIE1PTlRIQ0FMX1JlZnJlc2goKSBhbmQgcmVwbGFjZWQgd2l0aAoJZWl0aGVyIFJlZHJhd1dpbmRvdyBvciBJbnZhbGlkYXRlUmVjdC4gT3B0aW1pemVkIGRyYXdpbmcgdXNpbmcKCVJlZHJhV2luZG93IGFuZCB1cGRhdGUgcmVnaW9ucy4gIEZpeGVkICJUb2RheSIgZGF0ZSBidWcgd2hlcmUgeWVhciB3YXMKCW9ubHkgb25lIGRpZ2l0LiAgRml4ZWQgZHJhd2luZyBvZiBjaXJjbGUgZHJhd24gbmV4dCB0byAiVG9kYXkiLiAgRml4ZWQKCW1vdmluZyB0byBwcmV2aW91cyBvciBuZXh0IG1vbnRoIGJ5IGNsaWNraW5nIG9uIGRheXMgYmVsb25naW5nIHRvCglwcmV2aW91cyBvciBuZXh0IG1vbnRocy4KCgkqIHJlbGF5MzIva2VybmVsMzIuc3BlYywgd2luMzIvY29uc29sZS5jOgoJVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hjQGNvcmVsLmNvbT4KCUFkZCBzdHViIGZvciBTZXRDb25zb2xlT3V0cHV0Q1AuCgoJKiB0b29scy93cmMvcHB5Lnk6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZCBhIDsgbmVlZGVkIGJ5IHNvbWUgWUFDQ3MuCgoJKiBkbGxzL2RkcmF3L2RzdXJmYWNlL3gxMS5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUluc3RhbGwgdGhlIGNvbG9ybWFwIG9ubHkgaWYgaXQgd2FzIGNyZWF0ZWQuCgoJKiBtc2Rvcy9pbnQyMS5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglJbXBsZW1lbnRlZCBpbnQgMHgyMSBsb25nIGZpbGUgbmFtZSBmdW5jdGlvbiAweDcxYTA6IEdldCBWb2x1bWUgSW5mby4KCgkqIGRsbHMvb3BlbmdsMzIvd2dsLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJSW1wbGVtZW50ZWQgd2dsU2hhcmVMaXN0cyBhbmQgd2dsR2V0Q3VycmVudERDLgoKCSogd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3MvcXVldWUuYywgd2luZG93cy91c2VyLmMsIGluY2x1ZGUvcHJvY2Vzcy5oLCBpbmNsdWRlL3F1ZXVlLmgsIGluY2x1ZGUvc2VydmVyLmgsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNlcnZlci9NYWtlZmlsZS5pbiwgc2VydmVyL29iamVjdC5oLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcHJvY2Vzcy5oLCBzZXJ2ZXIvcXVldWUuYywgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdGhyZWFkLmgsIHNlcnZlci90cmFjZS5jOgoJTW92ZWQgaWRsZSBldmVudCBoYW5kbGluZyB0byB0aGUgc2VydmVyLgoKCSogd2luZG93cy93aW4uYzoKCVVzZSBHZXRTdGFydHVwSW5mb0EoKSBpbnN0ZWFkIG9mIGFjY2Vzc2luZyBwcm9jZXNzIHN0cnVjdHVyZQoJZGlyZWN0bHkuCgoJKiBsb2FkZXIvdGFzay5jOgoJTWFrZSBzdXJlIGluaXRpYWwgdGFzayBpcyBub3QgbWFya2VkIGFzIDMyLWJpdC4KCgkqIG1pc2Mvb3B0aW9ucy5jOgoJTWFrZSBjaGlsZCBwcm9jZXNzZXMgaW5oZXJpdCBjb21tYW5kLWxpbmUgb3B0aW9ucyB0aHJvdWdoIHRoZQoJV0lORU9QVElPTlMgZW52aXJvbm1lbnQgdmFyaWFibGUuCgoJKiB3aW5kb3dzL3dpbi5jOiBTZXJnZSBJdmFub3YKCVNldFBhcmVudDogY2FsbCBTZXRXaW5kb3dQb3Mgd2l0aCBTV1BfTk9BQ1RJVkFURSBmbGFnIHNldC4KCgkqIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvZ2RpL01ha2VmaWxlLmluLCBkbGxzL2dkaS9kaXNwZGliLnNwZWMsIGlmMTYzMi9NYWtlZmlsZS5pbiwgaWYxNjMyL2Rpc3BkaWIuc3BlYzoKCURpbWl0cmllIE8uIFBhdW4gPGRpbWlAY3MudG9yb250by5lZHU+CglNb3ZlZCBESVNQRElCIG91dCBvZiB0aGUga2VybmVsIGludG8gR0RJLgoKCSogY29udHJvbHMvY29tYm8uYywgaW5jbHVkZS9jb21iby5oOgoJRGF2aWQgR3JhbnQgPGRhdmlkZ3JhQGNvcmVsLmNhPgoJLSBDcmVhdGluZyBjb21ib2JveCB3aXRoIENCU19TSU1QTEUgc3R5bGUgc2hhbGwgc2V0IGludGVybmFsIGZsYWcgQ0JGX0VESVQuCgktIEVkaXQgdGV4dCBtdXN0IGJlIHNlbGVjdGVkIG9ubHkgaWYgQ0IgaXMgaW4gZm9jdXMuCgktIElmIENCIGhhcyBlZGl0IGNvbnRyb2wgd2UgaGF2ZSB0byBjYWxsIENCVXBkYXRlRWRpdCB0byB1cGRhdGUgaXRzCgkgIGNvbnRlbnRzLiBJbnZhbGlkYXRpbmcgdGV4dFJlY3Qgd2lsbCBub3QgZm9yY2UgdXBkYXRpbmcgb2YgY2hpbGQKCSAgZWRpdCBjb250cm9sLCBvYnZpb3VzbHkuCgktIFdlIGhhdmUgdG8gcHJvdGVjdCBvdXJzZWx2ZXMgZnJvbSBjaGFuZ2luZyBzZWxlY3Rpb24gaW4gbGlzdGJveCB3aGVuCgkgIHdlIHJlY2VpdmUgbGlzdGJveCBub3RpZmljYXRpb24uIFNvIExCTl9TRUxDSEFOR0UgLT4gQ0JVcGRhdGVFZGl0IC0+CgkgIEVOX0NIQU5HRSB3aWxsIG5vdCByZXNlbGVjdCBpdGVtIGluIHRoZSBsaXNib3guCgoJKiBkbGxzL2dkaS9nZGlfbWFpbi5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZGltaUBjcy50b3JvbnRvLmVkdT4KCUFkZCBpbmNsdWRlIGZvciBMb2FkTGlicmFyeS4KCgkqIGluY2x1ZGUvc2VydmVyLmgsIG1lbW9yeS9hdG9tLmMsIHJlbGF5MzIva2VybmVsMzIuc3BlYywgc2VydmVyL2F0b20uYywgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3Byb2Nlc3MuaCwgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3RyYWNlLmM6CglUdXJjaGFub3YgU2VyZ2VpIDx0dXJjaGFub3ZAb3R2cHJpbS5ydT4KCUltcGxlbWVudGVkIGxvY2FsIGF0b21zIGluIHRoZSBzZXJ2ZXIuCgoJKiBpZjE2MzIvYnVpbHRpbi5jOiBEbyBub3QgbG9hZCB3aW5lcHMgb24gc3RhcnR1cC4KCgkqIG1pc2MvY29tbS5jOgoJR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglGaXhlZCB3YXJuaW5nLgoKCSogY29udHJvbHMvY29tYm8uYzogT3dlbiBXYW5nCglXaGVuIHlvdSBjbGljayBvbiBhbiBpY29uIHRvIG9wZW4gYSBjb21ibyBib3gsIHlvdSB3b3VsZCBleHBlY3QgaXQgdG8KCWJlIGVuYWJsZWQgc28geW91IGNhbiBjaG9vc2Ugc29tZXRoaW5nIGluIGl0LiBJbiBXaW5lIHRoaXMgd2FzIG5vdAoJZ3VhcmFudGVlZCBzaW5jZSB5b3VyIGRlZmF1bHQgZmxhZ3MgY291bGQgZ2V0IGxvc3QgaW4gdGhlIHByb2Nlc3MtaGVhcAoJb2YgdGhlIGFwcGxpY2F0aW9uLgoKMjAwMC0wNS0yOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG1zZG9zL2ludDIxLmMsIHNjaGVkdWxlci9jbGllbnQuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2NoZWR1bGVyL3RocmVhZC5jLCB3aW4zMi9leGNlcHQuYywgd2luZG93cy9ub25jbGllbnQuYywgd2luZG93cy9xdWV1ZS5jLCB3aW5kb3dzL3VzZXIuYywgbG9hZGVyL2Rvcy9tb2R1bGUuYywgbG9hZGVyL25lL21vZHVsZS5jLCBsb2FkZXIvcGVfaW1hZ2UuYywgbG9hZGVyL3Rhc2suYywgbWVtb3J5L2Vudmlyb24uYywgbWlzYy9tYWluLmMsIG1pc2Mvb3B0aW9ucy5jLCBtaXNjZW11L21haW4uYywgbXNkb3MvaW50MjAuYywgZGxscy9zaGVsbDMyL3NoZWxsLmMsIGluY2x1ZGUvbWFpbi5oLCBpbmNsdWRlL21vZHVsZS5oLCBpbmNsdWRlL29wdGlvbnMuaCwgaW5jbHVkZS9wZV9pbWFnZS5oLCBpbmNsdWRlL3Byb2Nlc3MuaCwgaW5jbHVkZS90YXNrLmgsIGluY2x1ZGUvdGhyZWFkLmgsIGxvYWRlci9tYWluLmMsIGxvYWRlci9tb2R1bGUuYzoKCUV4ZWMgYSBzZXBhcmF0ZSB3aW5lIGJpbmFyeSBmb3IgZXZlcnkgd2luMzIgcHJvY2VzcyBzbyB0aGF0IHRoZXkgcnVuCglpbiBzZXBhcmF0ZSBhZGRyZXNzIHNwYWNlcy4KCVJ1biAxNi1iaXQgdGFza3MgYXMgV2luMzIgdGhyZWFkcywgbm90IHByb2Nlc3Nlcy4KCjIwMDAtMDUtMjYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3ZlcnNpb24uaCwgQU5OT1VOQ0UsIENoYW5nZUxvZzoKCVJlbGVhc2UgMjAwMDA1MjYuCgoJKiBjb250cm9scy9saXN0Ym94LmM6IFNlcmdlIEl2YW5vdgoJLSBBZGRlZCBoYW5kbGluZyBvZiBXTV9NT1VTRUFDVElWQVRFIG1lc3NhZ2UKCS0gQWRkZWQgaW5fZm9jdXMgZmllbGQgdG8gaW50ZXJuYWwgbGlzdGJveCdzIHN0cnVjdHVyZS4gVGhpcyBmbGFnIGlzIHNldCBvbgoJICByZWNlaXZpbmcgV01fU0VURk9DVVMgbWVzc2FnZSBhbmQgaXMgcmVzZXRlZCBvbiBXTV9LSUxMRk9DVVMuIEFsbCBjYWxscyB0bwoJICBHZXRGb2N1cyBmdW5jdGlvbiB3ZXJlIHJlcGxhY2VkIHdpdGggY2hlY2tzIG9mIHRoaXMgZmxhZy4KCS0gSW4gTElTVEJPWF9IYW5kbGVMQnV0dG9uRG93bjogZm9jdXMgaXMgc2V0IG9ubHkgaWYgJ2luX2ZvY3VzJyBmbGFnIGlzCgkgIGNsZWFyCgoJKiBkbGxzL2RwbGF5eC9kcGxheS5jLCBkbGxzL2RwbGF5eC9kcGxheXhfZ2xvYmFsLmMsIGRsbHMvZHBsYXl4L2RwbGF5eF9nbG9iYWwuaCwgZGxscy9kcGxheXgvbmFtZV9zZXJ2ZXIuYywgZGxscy9kcGxheXgvbmFtZV9zZXJ2ZXIuaDoKCVBldGVyIEh1bm5pc2V0dCA8aHVubmlzZUBub3J0ZWxuZXR3b3Jrcy5jb20+CglTdGFydGVkIGxvY2FsIG5hbWUgc2VydmVyIGZyYW1ld29yay4KCgkqIGRsbHMvY29tbWRsZy9maW5kZGxnLmMsIGRsbHMvY29tbWRsZy9mb250ZGxnLmMsIGRsbHMvY29tbWRsZy9wcmludGRsZy5jLCBpbmNsdWRlL2NvbW1kbGcuaCwgZGxscy9jb21tZGxnL2NkbGcuaCwgZGxscy9jb21tZGxnL2NkbGdfRW4ucmMsIGRsbHMvY29tbWRsZy9jb21kbGczMi5zcGVjLCBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJQWRkIFByaW50U2V0dXAgZGlhbG9nIGFuZCBzdXBwb3J0IGZvciBob29rcyBhbmQgdGVtcGxhdGVzLgoJTW92ZSAxNiBiaXQgYXBpIGRlZmluaXRpb25zIG91dCBvZiBjb21tZGxnLmggdG8gY2RsZy5oCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjIwMDAtMDUtMjYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb250cm9scy9saXN0Ym94LmM6IFNlcmdlIEl2YW5vdgoJLSBBZGRlZCBoYW5kbGluZyBvZiBXTV9NT1VTRUFDVElWQVRFIG1lc3NhZ2UKCS0gQWRkZWQgaW5fZm9jdXMgZmllbGQgdG8gaW50ZXJuYWwgbGlzdGJveCdzIHN0cnVjdHVyZS4gVGhpcyBmbGFnIGlzIHNldCBvbgoJICByZWNlaXZpbmcgV01fU0VURk9DVVMgbWVzc2FnZSBhbmQgaXMgcmVzZXRlZCBvbiBXTV9LSUxMRk9DVVMuIEFsbCBjYWxscyB0bwoJICBHZXRGb2N1cyBmdW5jdGlvbiB3ZXJlIHJlcGxhY2VkIHdpdGggY2hlY2tzIG9mIHRoaXMgZmxhZy4KCS0gSW4gTElTVEJPWF9IYW5kbGVMQnV0dG9uRG93bjogZm9jdXMgaXMgc2V0IG9ubHkgaWYgJ2luX2ZvY3VzJyBmbGFnIGlzCgkgIGNsZWFyCgoJKiBkbGxzL2RwbGF5eC9kcGxheS5jLCBkbGxzL2RwbGF5eC9kcGxheXhfZ2xvYmFsLmMsIGRsbHMvZHBsYXl4L2RwbGF5eF9nbG9iYWwuaCwgZGxscy9kcGxheXgvbmFtZV9zZXJ2ZXIuYywgZGxscy9kcGxheXgvbmFtZV9zZXJ2ZXIuaDoKCVBldGVyIEh1bm5pc2V0dCA8aHVubmlzZUBub3J0ZWxuZXR3b3Jrcy5jb20+CglTdGFydGVkIGxvY2FsIG5hbWUgc2VydmVyIGZyYW1ld29yay4KCgkqIGRsbHMvY29tbWRsZy9maW5kZGxnLmMsIGRsbHMvY29tbWRsZy9mb250ZGxnLmMsIGRsbHMvY29tbWRsZy9wcmludGRsZy5jLCBpbmNsdWRlL2NvbW1kbGcuaCwgZGxscy9jb21tZGxnL2NkbGcuaCwgZGxscy9jb21tZGxnL2NkbGdfRW4ucmMsIGRsbHMvY29tbWRsZy9jb21kbGczMi5zcGVjLCBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJQWRkIFByaW50U2V0dXAgZGlhbG9nIGFuZCBzdXBwb3J0IGZvciBob29rcyBhbmQgdGVtcGxhdGVzLgoJTW92ZSAxNiBiaXQgYXBpIGRlZmluaXRpb25zIG91dCBvZiBjb21tZGxnLmggdG8gY2RsZy5oCgoJKiBjb250cm9scy9lZGl0LmM6IEhlbm5pbmcgSG9mZm1hbm4KCURvbid0IHNlbmQgRU5fQ0hBTkdFIGFmdGVyIHBhaW50aW5nIHRoZSBlZGl0LgoJU2VuZCBpdCB3aGVyZXZlciB0ZXh0IGlzIGNoYW5nZWQuCgoJKiBjb250cm9scy9lZGl0LmM6IFVscmljaCBDemVrYWxsYSA8dWxyaWNoY0Bjb3JlbC5jb20+CglNb3ZlZCB0aGUgRU5fVVBEQVRFIG5vdGlmaWNhdGlvbiBvdXQgb2YgdGhlIHBhaW50IGhhbmRsZXIuIEluc3RlYWQsCgl0aGUgbm90aWZpY2F0aW9uIGlzIHNlbnQgd2hlbiBhbiBJbnZhbGlkYXRlUmVjdCBpcyBtYWRlIGFmdGVyCgltb2RpZnlpbmcgdGhlIHRleHQuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2x0aXBzLmM6CglGcmFuY29pcyBNZXRob3QgKE1hY2FkYW1pYW4pCglGaXhlZCB0aGUgYmxhbmsgY29sb3IgcGFsZXR0ZSB0b29sdGlwIGJ1ZyBieSB0cmlnZ2VyaW5nIGEgcmVmcmVzaCBvZgoJdGhlIHRvb2x0aXAgd2l0aCBVcGRhdGVXaW5kb3cgZnVuY3Rpb24gaW5zdGVhZCBvZiBjYWxsaW5nIGRpcmVjdGx5IHRoZQoJcmVmcmVzaCBmdW5jdGlvbi4KCgkqIGRlYnVnZ2VyL01ha2VmaWxlLmluLCBkZWJ1Z2dlci9leHRlcm5hbC5jLCBtaXNjL01ha2VmaWxlLmluLCBtaXNjL2V4dF9kZWJ1Z2dlci5jOgoJSmFtZXMgSnVyYW4gPGp1cmFuQGNzZS5wc3UuZWR1PgoJREVCVUdfRXh0ZXJuYWxEZWJ1Z2dlcigpIG5lZWRzIHRvIGJlIGEgcGFydCBvZiB3aW5lLCBub3Qgd2luZWRiZy4KCjIwMDAtMDUtMjUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBNYWtlLnJ1bGVzLmluOgoJRG8gbm90IGNsZWFyIHN1ZmZpeGVzIGxpc3QgKGJyZWFrcyBCU0QgbWFrZSkuCgoJKiBkbGxzL3dpbnNwb29sL2luZm8uYywgaW5jbHVkZS93aW5zcG9vbC5oOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJTW92ZSB3aW5zcG9vbCB0byB1bmljb2RlLgoJTWlub3IgYnVnIGZpeGVzLgoKCSogZGxscy9jb21jdGwzMi90cmFja2Jhci5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCVJld29ya2VkIHRoZSB0aHVtYiBkcmF3aW5nIGNvZGUsIHRodW1iIGNhbGN1bGF0aW9uIGNvZGUsIGNoYW5uZWwKCWNhbGN1bGF0aW9uIGNvZGUsIGFuZCBjb3JyZWN0ZWQgc29tZSBidWdzIGluIGhvdyB0aWNzIGFyZSBkcmF3biBhbmQKCWhvdyBjbGlja3MgYXJlIGhhbmRsZWQuCgoJKiBjb250cm9scy9lZGl0LmM6CglMb3Vpcy1QaGlsaXBwZSBHYWdub24gKG9mIE1hY2FkYW1pYW4gVGVjaG5vbG9naWVzIGZvciBDb3JlbCkKCUFkZGVkIGV2ZW50IGhhbmRsZXIgZm9yIFdNX01CVVRUT05ET1dOIChzZW5kcyBXTV9QQVNURSBtZXNzYWdlKS4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglVc2UgY2xpcHBpbmcgcmVnaW9ucyB0byByZWR1Y2UgdGhlIGFtb3VudCBvZiBwcm9jZXNzaW5nIHBlcmZvcm1lZCB3aGVuIHRoZQoJdG9vbGJhciBpcyByZXBhaW50aW5nLiAgUmVkdWNlcyBwcm9jZXNzaW5nIGJ5IGFwcHJveGltYXRlbHkgODUtOTUlIGluIG1vc3QKCWNhc2VzLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOgoJR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglGaXhlcyBjcmFzaCB3aGVuIGNhbGxpbmcgVHJlZXZpZXdfRW5kRWRpdExhYmVsTm93IGFuZCBubyBub2RlIGlzCgljdXJyZW50bHkgZWRpdGVkLgoKMjAwMC0wNS0yNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvY29tY3RsMzIvZmxhdHNiLmM6CglTdXNhbiBGYXJsZXkgPHNmYXJsZXlAY29kZXdlYXZlcnMuY29tPgoJRGVmZXIgdG8gc3RhbmRhcmQgc2Nyb2xsaW5nIEFQSXMgZm9yIG5vbi1mbGF0U0Igc3BlY2lmaWMgZnVuY3Rpb25zIHNvCgl0aGF0IGZsYXRTQnMgc2hvdyB1cCBhbmQgYmVoYXZlIHByb3Blcmx5LCBqdXN0IG5vdCB3aXRoIGZsYXQgcHJvcGVydGllcy4KCgkqIGdyYXBoaWNzL3gxMWRydi9kaWIuYzoKCVJvYiBGYXJudW0gPHJvYmZAY29kZXdlYXZlcnMuY29tPgoJU2VwYXJhdGUgb3V0IHRoZSAzMmJpdCBjYXNlIGZyb20gdGhlIDI0Yml0IGNhc2UsIGFuZCBjb3B5IDNieXRlcyBvZgoJc291cmNlIGZvciBldmVyeSA0Ynl0ZXMgb2YgaW5wdXQsIGludG8gdGhlIGRlc3RpbmF0aW9uIGZvciB0aGUgMjRiaXQKCWNhc2UuCgoJKiBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW5udC5oLCB3aW4zMi9maWxlLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCVNvcnRlZCBvdXQgYSBmZXcgbWlzcGxhY2VkIGRlZmluaXRpb25zLgoJQWRkZWQgc29tZSBtaXNzaW5nIGRlZmluaXRpb25zIHJlbGF0ZWQgdG8gZmlsZSBoYW5kbGluZyBhbmQgdmlydHVhbAoJbWVtb3J5IG1hbmlwdWxhdGlvbi4KCUFkZGVkIElzVGV4dFVuaWNvZGUuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgaGFuZGxpbmcgZm9yIFRWU19TSU5HTEVFWFBBTkQuCgoJKiBkbGxzL2NvbWN0bDMyL3RhYi5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUNvcnJlY3RlZCB0aGUgcHJvYmxlbSB3aGVyZSBhIHRhYiBjb250cm9sIG1hcmtlZCBtdWx0aWxpbmUgYnV0IGhhcwoJb25seSBvbmUgdGFiIHdhcyBiZWluZyBqdXN0aWZpZWQgdG8gZmlsbCB0aGUgd2hvbGUgdGFiIHNwYWNlLgoKCSogbXNkb3MvZHBtaS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUNvbW1lbnRlZCBvdXQgYnJva2VuIF9fYXNtX18sIGFkZGVkIGNvbW1lbnRzIHdoZXJlIGl0IGlzIGJyb2tlbi4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCU1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CglJbnNlcnRlZCBhIG1pc3NpbmcgY2FsbCB0byBTZXRXaW5kb3dQb3MoKS4gV2l0aCB0aGlzIGNoYW5nZSB0aGUgaGVhZGVyCgljb250cm9sIGlzIHZpc2libGUgYWdhaW4gaW4gbGlzdCB2aWV3cyB3aXRoIHJlcG9ydCBzdHlsZS4KCgkqIE1ha2UucnVsZXMuaW4sIHRvb2xzL3dyYy9NYWtlZmlsZS5pbjoKCVJldml2ZWQgdGhlIEdFTl9DX1NSQ1MgdmFyaWFibGUgdG8gc3VwcG9ydCB3cmMgbGV4L3lhY2Mgc291cmNlcy4KCjIwMDAtMDUtMjMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL21lc3NhZ2UuYzoKCUFsZXhhbmRyZSBKdWxsaWFyZCA8anVsbGlhcmRAY29kZXdlYXZlcnMuY29tPiAoZm9yIENvcmVsKQoJU2VuZCBhIG5vcm1hbCBtb3VzZSBtZXNzYWdlIGNvZGUgaW4gV01fUEFSRU5UTk9USUZZLCBldmVuIGlmIHRoZQoJYWN0dWFsIG1lc3NhZ2Ugd2FzIGEgbm9uLWNsaWVudCBvbmUuCgoJKiBzZXJ2ZXIvcmVnaXN0cnkuYywgZGxscy9kZHJhdy9tYWluLmMsIGRsbHMvb3BlbmdsMzIvd2dsLmMsIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmMsIGluY2x1ZGUveDExZHJ2Lmg6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIGlzc3VlcyBmb3VuZCBieSB3aW5hcGlfY2hlY2suCgoJKiB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5kYXQsIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLnBtLCB0b29scy93aW5hcGlfY2hlY2svbmF0aXZlYXBpLmRhdCwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL29wZW5nbDMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaS5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9jaGVjaywgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9mdW5jdGlvbi5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9sb2NhbC5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9vcHRpb25zLnBtOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIFVwZGF0ZWQgQVBJIGZpbGVzCgktIEJldHRlciBoZWFkZXJzIGFuZCBwcm90b3R5cGUgY2hlY2tpbmcKCS0gUHJvdG90eXBlIGNoZWNraW5nIG5vdyBjYWxsZWQgLS1wcm90b3R5cGUgaW5zdGVhZCBvZiAtLWhlYWRlcnMKCS0gTmV3IG9wdGlvbnMgLS1oZWFkZXJzLXtkdXBsaWNhdGVkLG1pc3BsYWNlZH0gZm9yCgkgIGR1cGxpY2F0ZWQvbWlzcGxhY2VkIGZ1bmN0aW9ucyBjaGVja2luZyBvZiB0aGUgaGVhZGVycy4KCS0gTWlub3IgYnVnIGZpeGVzLgoKCSogTWFrZS5ydWxlcy5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW46CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJSWYgc3lzdGVtIGRvZXNuJ3QgaGF2ZSBPcGVuR0wsIGRvbid0IHJlZmVyIHRvIGxpYm9wZW5nbDMyLnNvLgoKCSogZGxscy9vbGUzMi9kYXRhY2FjaGUuYywgZGxscy9vbGUzMi9kZWZhdWx0aGFuZGxlci5jOgoJQWJleSBHZW9yZ2UgKG9mIE1hY2FkYW1pYW4vQ29yZWwpCglXaGVuIHlvdSBvcGVuIGZpbGVzIHdpdGggRW1iZWRkZWQgb2JqZWN0cywgdGhleSB3ZXJlIG5vdCBnZXR0aW5nIGRyYXduCgljb3JyZWN0bHkuICBXaGVuIHlvdSBwYXN0ZSBPTEUgb2JqZWN0cyB3aXRoIHByZXNlbnRhdGlvbiBkYXRhLCB0aGV5Cgl3ZXJlIG5vdCBnZXR0aW5nIGRyYXduIGNvcnJlY3RseS4KCgkqIGNvbnRyb2xzL21lbnUuYzogUm9iIEZhcm51bSA8cm9iZkBjb2Rld2VhdmVycy5jb20+CglQb3N0IGEgV01fQ0FOQ0VMTU9ERSBtZXNzYWdlIHRvIHdha2UgdXAgdGhlIGludGVybmFsIG1lbnUgaGFuZGxpbmcKCWNvZGUuIFRoaXMgZml4ZXMgdGhlIHByb2JsZW0gb2YgYSBtZW51IGJlaW5nIG9ycGhhbmVkIHdoZW4gdGhlIHBhcmVudAoJd2luZG93IGRpc2FwcGVhcnMsIG9yIGlmIHRoZSBwYXJlbnQgbG9zZXMgZm9jdXMuCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmM6CglHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCUZpeCBhIG1pc21hdGNoIGJldHdlZW4gZm9ybWF0IHN0cmluZyBhbmQgcGFyYW1ldGVyLgoKCSogZGxscy9jb21jdGwzMi91cGRvd24uYzoKCVN1c2FuIEZhcmxleSA8c2ZhcmxleUBjb2Rld2VhdmVycy5jb20+CglTZXRCdWRkeSBubyBsb25nZXIgb3ZlcndyaXRlcyBpdHMgc3VwZXJjbGFzcycgV25kUHJvYyBwcm9wZXJ0eSB3aGVuCgl0aGUgYnVkZHkgaGFzIGFscmVhZHkgYmVlbiBzdWJjbGFzc2VkLCBlbGltaW5hdGluZyB0aGUgaW5maW5pdGUgbG9vcAoJdGhhdCByZXN1bHRlZC4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJSm9obiBSLiBTaGVldHMgPGpzaGVldHNAY29kZXdlYXZlcnMuY29tPgoJQ2xlYW5lZCB1cCBYMTEgZXh0ZW5zaW9uIHRlc3RzLgoKCSogY29udHJvbHMvZWRpdC5jOiBVbHJpY2ggQ3pla2FsbGEgPHVscmljaGNAY29yZWwuY29tPgoJQ2FwdHVyZSBeVixeWCxeQyBhbmQgdHJhbnNsYXRlIGl0IHRvIHRoZSBjb3JyZXNwb25kaW5nIG1lc3NhZ2UgZm9yCglwYXN0ZSwgY3V0LCBjb3B5LgoKCSogZGxscy9vcGVuZ2wzMi9tYWtlX29wZW5nbF9zcGVjLCBkbGxzL29wZW5nbDMyL29wZW5nbDMyLnNwZWMsIGRsbHMvb3BlbmdsMzIvd2dsLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSBmaXhlZCB0aGUgT3BlbkdMMzIgc3BlYyBmaWxlIChhbmQgdGhlIG1ha2Vfb3BlbmdsX3NwZWMgdG9vbCkKCS0gcHJldmVudCBIYWxmTGlmZSBmcm9tIGNyYXNoaW5nIHdoZW4gaXQgZnJlZXMgdGhyZWUgdGltZXMgdGhlIHNhbWUKCSAgcmVuZGVyaW5nIGNvbnRleHQKCgkqIGdyYXBoaWNzL3ZnYS5jLCBpbmNsdWRlL3ZnYS5oOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglJbXByb3ZlZCBEaXJlY3REcmF3UGFsZXR0ZSBoYW5kbGluZyAoc2V0IGl0IG9uIGluaXQsIG5vdCBldmVyeSB0aW1lIGl0CgljaGFuZ2VzKS4gQWRkZWQgVkdBX1dyaXRlQ2hhcnMoKSBmdW5jdGlvbi4KCgkqIG1zZG9zL2ludDMzLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJU2NhbGUgbW91c2UgY29vcmRpbmF0ZXMgdG8gZGVmYXVsdCB3aWR0aCA2NDAuCgoJKiBkbGxzL2RkcmF3L2RkcmF3L21haW4uYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJTWFkZSBXSU5FX0RpcmVjdERyYXcgYSBkZWNvcmF0aW9ubGVzcyBwb3B1cCB3aW5kb3cuIEZpeGVzIG1vdXNlCgljb29yZGluYXRlcyBwcmV2aW91c2x5IG9mZnNldCBieSB0aGUgaW52aXNpYmxlIGRlY29yYXRpb25zLgoKCSogaW5jbHVkZS93aW5udC5oOgoJR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CgkjdW5kZWYgREVMRVRFIGJlZm9yZSAocmUpZGVmaW5pbmcgaXQuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2x0aXBzLmM6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCUZpeGVkIHRvb2x0aXBzLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCVJlZHVjZSB0b29sYmFyIHJlZHJhd2luZyBhbmQgZmxpY2tlciBieSBjYWxsaW5nIFJlZHJhd1dpbmRvdygpIGluCglUT09MQkFSX01vdXNlTW92ZSgpIG9ubHkgaWYgaG90IGVmZmVjdCBhcHBsaWVzIHRvIHRoZSBjdXJyZW50IGhvdAoJYnV0dG9uLiAgUmVzdG9yZSBiSG90IGZsYWcgb2YgaG90IGJ1dHRvbiBpbiBUT09MQkFSX0xCdXR0b25VcCgpIHRvCglyZXN0b3JlIGhvdCBlZmZlY3QgcHJvcGVybHkuCgoJKiBjb250cm9scy9saXN0Ym94LmM6IFNlcmdlIEl2YW5vdgoJRml4ZWQgV01fTEJVVFRPTkRCTENMSyBoYW5kbGluZy4KCgkqIGluY2x1ZGUvd2luLmgsIGluY2x1ZGUveDExZHJ2LmgsIHdpbmRvd3MvZGVmd25kLmMsIHdpbmRvd3Mvbm9uY2xpZW50LmMsIHdpbmRvd3MveDExZHJ2L3duZC5jOgoJU3VzYW4gRmFybGV5IDxzZmFybGV5QGNvZGV3ZWF2ZXJzLmNvbT4KCVNldCBhbmQgcmV0cmlldmUgdGhlIHdpbmRvdyBpY29uIHRoYXQgaXMgZHJhd24gdW5kZXIgbWFuYWdlZCBtb2RlCgkoYmFzZWQgb24gdGhlIHdvcmsgb2YgQW5kcmV3IExld3lja3kgZm9yIENvcmVsKS4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUNvcnJlY3RlZCBhIHByb2JsZW0gb2Ygd2hlbiBvbGRIaXQgaXMgbmVnYXRpdmUgYW5kIHdlIHRyeSB0byB1c2UgaXQgYXMKCWFuIGluZGV4IGludG8gdGhlIGJ1dHRvbnMgYXJyYXkuCgoJKiBpbmNsdWRlL3dpbmRvd3MuaDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglTaG91bGQgaW5jbHVkZSBjb21tZGxnLmguCgoJKiBpbmNsdWRlL3dpbmRlZi5oOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCURlZmluZSB0aGUgX1g4Nl8gbWFjcm8gb24gSW50ZWwgcHJvY2Vzc29ycy4KCgkqIGNvbnRyb2xzL2VkaXQuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJU29tZSBwYXJ0IG9mIEVESVRfRU1fTGluZUxlbmd0aCBjb2RlIHdhcyBjb21tZW50ZWQgKGJyb2tlbikuIFJlc3RvcmVkCgl0aGUgY2FwYWJpbGl0eSB0byBjYWxjdWxhdGUgdGhlIHJlbWFpbmluZyBub24tc2VsZWN0ZWQgY2hhcnMgb2YgYQoJc2VsZWN0aW9uIGFyZWEuCgoJKiBkbGxzL2RkcmF3L2RkcmF3L2RnYS5jLCBkbGxzL2RkcmF3L2RkcmF3L3gxMS5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCVJlbW92ZSB0aGUgUFJJTUFSWVNVUkZBQ0UgYXR0cmlidXRlIGZyb20gYmFjayBidWZmZXJzLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUlmIGEgbGlzdHZpZXcgaXMgY3JlYXRlZCB3aXRoIExWU19OT0NPTFVNTkVIRUFERVIgdGhlbiB3aW5lIGNyZWF0ZXMgdGhlCgloZWFkZXIgbGlrZSBub3JtYWwgYnV0IGp1c3Qgc2V0cyBpdCBub3QgdmlzaWJsZS4gVGhpcyBmaXggbGF5cyBvdXQKCXRob3NlIHN1cHBvc2VkbHkgbm9uZXhpc3RlbnQgaGVhZGVycyB0byBzaXplIDAsMC4gU28gdGhhdCBldmVuIGlmIHRoZXkKCWJlY29tZSB2aXNpYmxlIHRoZXkgYXJlIG5vdCBkcmF3bi4KCgkqIGRsbHMvY29tbWRsZy9jb2xvcmRsZy5jLCBpbmNsdWRlL3dpbmUvd2ludXNlcjE2Lmg6CglHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCVJlbW92ZSB0aGUgZGlyZWN0IGNhbGwgaW50byBjb3JlIChESUFMT0dfRG9EaWFsb2dCb3gpLgoKCSogZGxscy9kZHJhdy9kZHJhdy9kZ2EuYywgZGxscy9kZHJhdy9kZHJhdy9kZ2EyLmMsIGRsbHMvZGRyYXcvZGdhX3ByaXZhdGUuaDoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglJbml0aWFsaXplIHRoZSBiYWNrLWJ1ZmZlciB3aXRoIHRoZSBjb3JyZWN0IFZUYWJsZS4KCgkqIGRsbHMvb3BlbmdsMzIvb3BlbmdsMzIuc3BlYywgZGxscy9vcGVuZ2wzMi93Z2wuYywgZGxscy94MTFkcnYveDExZHJ2X21haW4uYywgZGxscy9vcGVuZ2wzMi9tYWtlX29wZW5nbF9zcGVjLCB3aW5lLmluaToKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIGFkZGVkIG9wdGlvbiB0byBnZXQgZG91YmxlLWJ1ZmZlcmVkIGRlc2t0b3AKCS0gaW1wbGVtZW50ZWQgd2dsVXNlRm9udEJpdG1hcHNBIGFuZCB3Z2xEZWxldGVDb250ZXh0CgoJKiB0b29scy93cmMvQ0hBTkdFUywgdG9vbHMvd3JjL1JFQURNRS53cmMsIHRvb2xzL3dyYy9kdW1wcmVzLmMsIHRvb2xzL3dyYy9kdW1wcmVzLmgsIHRvb2xzL3dyYy9nZW5yZXMuYywgdG9vbHMvd3JjL25ld3N0cnVjLmMsIHRvb2xzL3dyYy9uZXdzdHJ1Yy5oLCB0b29scy93cmMvcGFyc2VyLmgsIHRvb2xzL3dyYy9wYXJzZXIubCwgdG9vbHMvd3JjL3BhcnNlci55LCB0b29scy93cmMvdXRpbHMuYywgdG9vbHMvd3JjL3V0aWxzLmgsIHRvb2xzL3dyYy93cmMuaCwgdG9vbHMvd3JjL3dyYy5tYW4sIHRvb2xzL3dyYy93cmN0eXBlcy5oLCB0b29scy93cmMvd3JpdGVyZXMuYzoKCUJlcnRobyBTdHVsdGllbnMgPGJlcnRob0Bha2hwaGQuYXUuZGs+CgktIEltcGxlbWVudGVkIGFuaW1hdGVkIGN1cnNvcnMgYW5kIGljb25zIHJlc291cmNlIHR5cGVzLgoJLSBBZGRlZCBwYXJ0aWFsIHN1cHBvcnQgZm9yIGZvbnQgcmVzb3VyY2VzICh1c2VyIHN1cHBsaWVkIGZvbnRkaXIgaXMKCSAgcmVxdWlyZWQpLgoJLSBBbGwgcmVzb3VyY2VzIHdpdGggaW5saW5lIGRhdGEgKGEgbGEgUkNEQVRBKSBub3cgc3VwcG9ydCBsYW5ndWFnZSwKCSAgdmVyc2lvbiBhbmQgY2hhcmFjdGVyaXN0aWNzIGRhdGEuCgktIEltcGxlbWVudGVkIHJlc291cmNlIG5hbWUgZHVwbGljYXRlIGNoZWNrcy4gSXQgaXMgbm93IGFuIGVycm9yIGlmCgkgIHR3byByZXNvdXJjZXMgb2YgdGhlIHNhbWUgdHlwZSBoYXZlIHRoZSBzYW1lIG5hbWUuCgktIEJ1Z2ZpeDogTGFuZ3VhZ2UgcHJvcGFnYXRpb24gd2FzIG5vdCBjb3JyZWN0IHdoZW4gLnJlcyBmaWxlcyB3ZXJlCgkgIGdlbmVyYXRlZC4KCS0gQnVnZml4OiBWRVJTSU9OSU5GTyBub3cgaGFuZGxlcyBtZW1vcnkgb3B0aW9ucy4KCS0gQnVnZml4OiByZXNvdXJjZSBuYW1lcyBhbmQgdGhlIHJlc291cmNlIHR5cGUgbWF5IGJlIGVxdWFsIChlLmcuIE1FTlUKCSAgTUVOVSB7Li4ufSkuIFRoaXMgc3VwcG9ydCB3YXMgbWlzdGFraW5nbHkgZGVsZXRlZCBpbiB0aGUgdXBncmFkZSB0bwoJICB0aGUgYnVpbHRpbiBwcmVwcm9jZXNzb3IuCgkgIFRoZSBzdGFuZGFsb25lIExBTkdVQUdFIHNldHRpbmcgYmVjYW1lIGNvbnRleHQgc2Vuc2l0aXZlIGFzIGEgY29uc2VxdWVuY2UKCSAgb2YgdGhpcy4gTm93IGl0ICptdXN0KiBlbmQgd2l0aCBhIG5ld2xpbmUgKmFmdGVyKiBib3RoIGV4cHJlc3Npb25zIGFuZAoJICBubyBuZXdsaW5lcyBhcmUgYWxsb3dlZCB3aXRoaW4gdGhlIGxpbmUgKHRoZSBzdGF0ZW1lbnQgbXVzdCBmaXQgb24gb25lCgkgIGxpbmUpLiBUaGlzIGlzIG5vIHByYWN0aWNhbCBwcm9ibGVtIHRob3VnaC4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay9vdXRwdXQucG06CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCVNlbmQgcmVndWxhciBtZXNzYWdlcyB0byBzdGRvdXQgc28gdGhhdCB0aGV5IGFyZSBzZXBhcmF0ZSBmcm9tCglwcm9ncmVzcyBtZXNzYWdlcy4KCgkqIGRvY3VtZW50YXRpb24vYnVncmVwb3J0czoKCUdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJUmVncmVzc2lvbiB0ZXN0aW5nIHVzaW5nIENWUy4KCgkqIGRsbHMvZHBsYXl4L2RwbGF5LmMsIGRsbHMvZHBsYXl4L2RwbGF5eF9nbG9iYWwuYywgZG9jdW1lbnRhdGlvbi9zdGF0dXMvZGlyZWN0cGxheToKCVBldGVyIEh1bm5pc2V0dCA8aHVubmlzZUBub3J0ZWxuZXR3b3Jrcy5jb20+CgktIFNtYWxsIGZpeGVzL3VwZGF0ZXMKCS0gQWRkIHN1cHBvcnQgZm9yIHRoZSBEUENPTk5FQ1RJT05fRElSRUNUUExBWUxPQkJZIGZsYWcKCgkqIGRvY3VtZW50YXRpb24vd2luZWRiZzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQSBiaXQgb2YgZG9jdW1lbnRhdGlvbiBvbiBuZXcgZGVidWdnaW5nIGZlYXR1cmVzLgoKCSogZmlsZXMvZGlyZWN0b3J5LmM6IEphbWVzIEp1cmFuIDxqdXJhbkBjc2UucHN1LmVkdT4KCVNlYXJjaFBhdGhBIG5lZWRzIHRvIHNldCB0aGUgbGFzdCBlcnJvciB0byBFUlJPUl9GSUxFX05PVF9GT1VORCB3aGVuCglpdCBkb2VzIG5vdCBmaW5kIHRoZSBmaWxlLgoKCSogc2NoZWR1bGVyL2RlYnVnZ2VyLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCVVzZSBXQVJOKCkgaW5zdGVhZCBvZiBUUkFDRSgpIGluIERlYnVnT3V0cHV0QSgpLgoKCSogbWVtb3J5L2hlYXAuYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUhlYXBGcmVlIG9uIGEgTlVMTCBwdHIgc2hvdWxkIHJldHVybiBUUlVFLgoKMjAwMC0wNS0xOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJVXBkYXRlIG5JdGVtV2lkdGggaW4gTElTVFZJRVdfU2V0SXRlbSgpIGlmIExWU19MSVNUIG9yIExWU19TTUFMTElDT04KCW1vZGUgYW5kIGl0ZW0gdGV4dCBpcyB3aWRlciB0aGFuIHRoZSBjdXJyZW50IG5JdGVtV2lkdGguCgoJKiBsb2FkZXIvdGFzay5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+VQoJRml4ZWQgaW5pdGlhbGl6YXRpb24gb2YgSU5TVEFOQ0VEQVRBIGluIEluaXRUYXNrKCkuCgoJKiBkbGxzL29sZTMyL3N0b3JhZ2UuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVN0Z09wZW5TdG9yYWdlMTY6IGNvcnJlY3QgYXJndW1lbnRzIHRvIHRoZSBDcmVhdGVGaWxlIGNhbGwuCgoJKiBmaWxlcy9kb3NfZnMuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCURPU0ZTX0RvR2V0RnVsbFBhdGhOYW1lOiB0ZXJtaW5hdGUgc3RyaW5nIHdlaCBjYWxsZWQgbGlrZSAuXFxmaWxlCgoJKiBkbGxzL2ljbXAvaWNtcF9tYWluLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCVJlcGxhY2UgdGhlIGNhbGxzIHRvIG1hbGxvYyBieSBjYWxscyB0byBIZWFwQWxsb2MgYW5kIGZyaWVuZHMuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglGaXhlcyB0aGUgbGluZSBvZiBnYXJiYWdlIGF0IHRoZSBib3R0b20gb2YgaW1hZ2VzIGFuZCB0aGUgZmFjdCB0aGF0Cgl0aGUgYnV0dG9ucyBpbiB0aGUgb3BlbiBkaWFsb2cgYm94IHdoZXJlIHRvbyB0YWxsLgoKCSogZGxscy9vbGUzMi9NYWtlZmlsZS5pbiwgZGxscy9vbGUzMi9vbGUyY29udi5zcGVjLCBkbGxzL29sZTMyL29sZTJwcm94LnNwZWMsIGRsbHMvb2xlMzIvb2xlMnRoay5zcGVjLCBpZjE2MzIvLmN2c2lnbm9yZSwgaWYxNjMyL01ha2VmaWxlLmluLCBpZjE2MzIvb2xlMmNvbnYuc3BlYywgaWYxNjMyL29sZTJwcm94LnNwZWMsIGlmMTYzMi9vbGUydGhrLnNwZWMsIGRsbHMvTWFrZWZpbGUuaW46CglEaW1pdHJpZSBPLiBQYXVuIDxkaW1pQGNzLnRvcm9udG8uZWR1PgoJTW92ZWQgaWYxNjMyL29sZTJ7Y29udixwcm94LHRoa30uc3BlYyBpbnRvIGRsbHMvb2xlMzIuCgoyMDAwLTA1LTE4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS9kM2QuaCwgaW5jbHVkZS9kM2RjYXBzLmgsIGluY2x1ZGUvZDNkdHlwZXMuaCwgaW5jbHVkZS9kc291bmQuaDoKCVBldGVyIEh1bm5pc2V0dCA8aHVubmlzZUBub3J0ZWxuZXR3b3Jrcy5jb20+CgktIEFkZGVkIHJlbWFpbmluZyBEaXJlY3RYIDNEMyA2JjcgM0QgaW50ZXJmYWNlcy4KCS0gQWRkZWQgZDNkY2Fwcy5oLCBkM2R0eXBlcy5oIGFuZCByZWFycmFuZ2VkIGNvbnRlbnRzIGFjY29yZGluZyB0bwoJICBEaXJlY3RYIDcgaGVhZGVycy4KCS0gRml4ZWQgZHNvdW5kLmggaW5jbHVkZSBsaXN0IChkM2QuaC0+ZDNkdHlwZXMuaCkuCgoJKiBwcm9ncmFtcy9yZWdhcGkvUkVBRE1FOgoJSnVlcmdlbiBMb2NrIDxub3hAamVsYWwua24tYnJlbWVuLmRlPgoJTWlub3IgdXBkYXRlLgoKCSogbWlzYy9wcmludGRydi5jOiBQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIGlzc3VlcyBmb3VuZCBieSB3aW5hcGlfdGVzdC4KCgkqIGRsbHMvZ2RpL2dkaTMyLnNwZWMsIGluY2x1ZGUvd2luZ2RpLmgsIG9iamVjdHMvZGMuYywgb2JqZWN0cy9kY3ZhbHVlcy5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglHZXRSZWxBYnMgZm9yIHNvbWUgcmVhc29uIHRha2VzIDIgcGFyYW1ldGVycywgZXZlbiB0aG91Z2ggdGhlIHNlY29uZAoJb25lIGlzIGlnbm9yZWQgYXQgbGVhc3Qgb24gV2luZG93cyBOVCAzLjUxIGFjY29yZGluZyB0byBNYXJjdXMgTWVpc3NuZXIuCgoJKiBjb250cm9scy9lZGl0LmM6IFNoZXJpIFN0ZWV2ZXMKCVRoZSBlZGl0IGlzIG5vdyBkZXRlY3RlZCBjb3JyZWN0bHkgaWYgdGhlIHBhcmVudCBpcyBhIGNvbWJvIGJveC4gSXQKCXdhc24ndCB3b3JraW5nIHdoZW4gdGhlIGNvbWJvYm94IHdhcyBzdXBlcmNsYXNzZWQuCgoJKiB3aW5kb3dzL25vbmNsaWVudC5jOiBGcmFuY29pcyBCb2lzdmVydAoJU3lzdGVtIGljb25zIGluIHRoZSBzbWFsbCBjYXB0aW9uIGJhcnMgYXJlIGRpc3BsYXllZCB3aXRoIHRoZSByaWdodCBzaXplLgoKCSogZGxscy9vcGVuZ2wzMi9tYWtlX29wZW5nbF9ub3JtLCBkbGxzL29wZW5nbDMyL29wZW5nbF9ub3JtLmMsIGRsbHMvb3BlbmdsMzIvd2dsLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIGlzc3VlcyBmb3VuZCBieSB3aW5hcGlfY2hlY2suCgoJKiB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5kYXQsIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9vcGVuZ2wzMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGkucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfY2hlY2ssIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfb3B0aW9ucy5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9wYXJzZXIucG06CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCU1pbm9yIGJ1ZyBmaXhlcy4KCgkqIGRsbHMvY29tY3RsMzIvdGFiLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCUNvbnZlcnQgQysrIGNvbW1lbnRzIHRvIHJlZ3VsYXIgQyBjb21tZW50cy4KCgkqIGRsbHMvZGRyYXcvZGdhX3ByaXZhdGUuaCwgZGxscy9kZHJhdy9kc3VyZmFjZS9kZ2EuYywgZGxscy9kZHJhdy9kc3VyZmFjZS9kZ2EyLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UveDExLmMsIGRsbHMvZGRyYXcveDExX3ByaXZhdGUuaDoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJTWFkZSBJRGlyZWN0RHJhd1N1cmZhY2U6OlNldFBhbGV0dGUgc2V0IHRoZSBzdXJmYWNlJ3MgRElCU2VjdGlvbiBjb2xvcgoJbWFwIHRvIHBvaW50IHRvIHRoZSBJRGlyZWN0RHJhd1BhbGV0dGUncyBvd24gZGVwdGggY29udmVyc2lvbiBjb2xvciBtYXAuCgoJKiBkbGxzL2RkcmF3L2RkcmF3L21haW4uYywgZGxscy9kZHJhdy9tYWluLmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUluaXRpYWxpemUgYW4gaWRlbnRpdHkgbWFwcGluZyBpbiBDcmVhdGVQYWxldHRlIGlmIG5vIGRlcHRoIGNvbnZlcnNpb24KCWlzIG5lY2Vzc2FyeS4gQWxzbyBmaXhlZCBhIHdhcm5pbmcuCgoJKiBncmFwaGljcy94MTFkcnYvZGliLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJTWFkZSBYMTFEUlZfRElCX01hcENvbG9yIG1hcCBiYWNrIHRvIHRoZSBvcmlnaW5hbCBjb2xvciBpbmRleCBpZiB0aGUKCVhJbWFnZSBwaXhlbCdzIHBoeXNpY2FsIGNvbG9yIGlzIHN0aWxsIHRoZSBzYW1lLgoKMjAwMC0wNS0xNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jOgoJVXNlIHRoZSBjb3JyZWN0IGRpc3BsYXkgZm9yIGNhY2hlZCBtZXRyaWNzIGZpbGUgbmFtZS4KCVN0b3JlIG1ldHJpY3MgaW4gc3BlY2lmaWVkIGNvbmZpZyBkaXIuCgoJKiBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jLCBpbmNsdWRlL29wdGlvbnMuaCwgd2luZS5pbmk6CglNYWtlIHN1cmUgYWxsIFdpbmUgcHJvY2Vzc2VzIHNoYXJlIHRoZSBzYW1lIFggZGlzcGxheS4KCUluaGVyaXQgLS1tYW5hZ2VkIG9wdGlvbiBhY3Jvc3MgcHJvY2Vzc2VzLgoJQWRkIHN1cHBvcnQgZm9yIHNwZWNpZnlpbmcgZGlzcGxheSBhbmQgbWFuYWdlZCBtb2RlIGluIGNvbmZpZyBmaWxlLgoKCSogZGxscy9kZHJhdy9jb252ZXJ0LmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJVXNlIHVuc2lnbmVkIGludCBpbnN0ZWFkIG9mIHVuc2lnbmVkIHNob3J0IGluIERpcmVjdERyYXcKCWRlcHRoLWNvbnZlcnNpb24gY29sb3IgbWFwLgoKCSogY29udHJvbHMvbGlzdGJveC5jOgoJU3VzYW4gRmFybGV5IDxzZmFybGV5QGNvZGV3ZWF2ZXJzLmNvbT4KCUF2b2lkIGNhbGxzIHRvIFNldEZvY3VzIHdoZW4gdGhleSBhcmUgdW5uZWNlc3NhcnkuCgoyMDAwLTA1LTE0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOgoJRGF2aWQgQmxhY2sgPGRibGFja0BidGludGVybmV0LmNvbT4KCUltcGxlbWVudGVkIFRWTV9FRElUTEFCRUxBLCBwbHVzIHNvbWUgaW1wcm92ZW1lbnRzIHRvIEVuZExhYmVsRWRpdE5vdy4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9taWRpLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCU1vcmUgdmVyYm9zZSBlcnJvcnMuCgoJKiB3aW5kb3dzL25vbmNsaWVudC5jOiBDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCUZpeGVkIGJvcmRlcnMgb2Ygd2luZG93cyB3aGlsZSBkcmFnZ2luZyBvciBzaXppbmcgdG8gbWF0Y2gKCVRXRUFLX1dpbmVMb29rIHNldHRpbmcuCgoJKiByZWxheTMyL2J1aWx0aW4zMi5jOgoJR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CgkjaW5jbHVkZSA8c3lzL3R5cGVzLmg+IGJlZm9yZSA8c3lzL21tYW4uaD4uCgoJKiBtaXNjL01ha2VmaWxlLmluLCBtaXNjL2RkZW1sLmMsIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvdXNlci9NYWtlZmlsZS5pbiwgZGxscy91c2VyL2RkZW1sLmMsIGRsbHMvdXNlci9kZGVtbC5zcGVjLCBpZjE2MzIvLmN2c2lnbm9yZSwgaWYxNjMyL01ha2VmaWxlLmluLCBpZjE2MzIvZGRlbWwuc3BlYywgaWYxNjMyL29sZTJubHMuc3BlYzoKCURpbWl0cmllIE8uIFBhdW4gPGRpbWlAY3MudG9yb250by5lZHU+CglNb3ZlZCBEREVNTCBpbnRvIGRsbHMvdXNlci4KCgkqIGRsbHMvYWR2YXBpMzIvcmVnaXN0cnkuYywgaW5jbHVkZS9zZXJ2ZXIuaCwgbWlzYy9yZWdpc3RyeS5jLCBzZXJ2ZXIvcmVnaXN0cnkuYywgc2VydmVyL3RyYWNlLmM6CglBZGRlZCBzdXBwb3J0IGZvciByZWdpc3RyeSB2YWx1ZXMgbGFyZ2VyIHRoYW4gdGhlIHNlcnZlciBidWZmZXIuCglXaGVuIGxvYWRpbmcgYSByZWdpc3RyeSBmaWxlLCBhdXRvbWF0aWNhbGx5IGRldGVybWluZSBvdmVybGFwIGJldHdlZW4KCWtleSBuYW1lIGFuZCBmaWxlIGNvbnRlbnRzIGJhc2VkIG9uIHRoZSBmaXJzdCBrZXkgbmFtZS4KCVJlbW92ZWQgdjEgc2F2aW5nIGNvZGUuCglTYXZlIFVTRVJcLkRlZmF1bHQgc2VwYXJhdGVseSBpbnRvIH4vLndpbmUvdXNlcmRlZi5yZWcuCgoJKiBkbGxzL2RkcmF3L2RkcmF3L2RnYS5jLCBkbGxzL2RkcmF3L2RkcmF3L2RnYTIuYywgZGxscy9kZHJhdy9kZHJhdy9tYWluLmMsIGRsbHMvZGRyYXcvZGRyYXcveDExLmMsIGRsbHMvZGRyYXcvZGdhLmMsIGRsbHMvZGRyYXcvZGdhMi5jLCBkbGxzL2RkcmF3L2RnYV9wcml2YXRlLmgsIGRsbHMvZGRyYXcvZHN1cmZhY2UvZGdhLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UvZGdhMi5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL21haW4uYywgZGxscy9kZHJhdy9kc3VyZmFjZS94MTEuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJSW1wcm92ZWQgRElCU2VjdGlvbiBzdXBwb3J0IGZvciBJRGlyZWN0RHJhd1N1cmZhY2U6OkdldERDLgoKCSogZ3JhcGhpY3MveDExZHJ2L29wZW5nbC5jLCBkbGxzL29wZW5nbDMyL3dnbC5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gc2V0IGRlYnVnIG1lc3NhZ2VzIGFmdGVyIGEgVFJBQ0VfT04gdGVzdAoJLSBwcmV2ZW50IGNyYXNoIHdoZW4gbWFraW5nIHRoZSBOVUxMIGNvbnRleHQgY3VycmVudAoKCSogY29udHJvbHMvbWVudS5jOiBHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCVdoZW4gbmV3IG1lbnUgSWQgaXMgbm90IGZvdW5kIG9yIGluZGV4ID4gbml0ZW1zLCBpbnNlcnQgdGhlIG5ldyBtZW51CglhdCBlbmQgb2YgY3VycmVudCBtZW51LgoKMjAwMC0wNS0xMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvZGRyYXcvZDNkX3ByaXZhdGUuaCwgZGxscy9kZHJhdy9kZHJhdy5zcGVjLCBkbGxzL2RkcmF3L2RkcmF3L3gxMS5jLCBkbGxzL2RkcmF3L2RpcmVjdDNkL21lc2EuYywgZGxscy9kZHJhdy9tYWluLmMsIGRsbHMvZGRyYXcvbWVzYV9wcml2YXRlLmgsIGluY2x1ZGUvZGRyYXcuaDoKCVBldGVyIEh1bm5pc2V0dCA8aHVubmlzZUBub3J0ZWxuZXR3b3Jrcy5jb20+CgktIEFkZGVkIGFiaWxpdHkgdG8gY3JlYXRlIDNEMyBpbnRlcmZhY2VzIGZvciBYbGliCgktIENoYW5nZWQgRERfT0sgdG8gRDNEX09LIGluIHNvbWUgcGxhY2VzIGZvciBjb25zaXN0ZW5jeQoJLSBDbGVhbmVkIHVwIHNvbWUgY29tcGlsZXIgd2FybmluZ3MgcHJlc2VudCB3aXRob3V0IERHQTIKCS0gQ2hhbmdlZCBvcmRlciBmb3IgRGlyZWN0RHJhd0VudW1lcmF0ZUV4QSB0byBlbnVtZXJhdGUgYXQgbGVhc3QKCSAgd2hhdCBhYmlsaXRpZXMgYXJlIGtub3duIHJhdGhlciB0aGFuIGJhaWxpbmcgb24gdW5zdXBwb3J0ZWQgZmxhZ3MKCS0gQWRkZWQgRGlyZWN0RHJhd0NyZWF0ZUV4IHN0dWIKCjIwMDAtMDUtMTIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb250cm9scy9tZW51LmM6CglTdXNhbiBGYXJsZXkgPHNmYXJsZXlAY29kZXdlYXZlcnMuY29tPgoJRGlzdGluZ3Vpc2ggUkFESU9DSEVDSyBzdHlsZSBtZW51IGl0ZW1zIGZyb20gc3RhbmRhcmQgY2hlY2ttYXJrIG1lbnUKCWl0ZW1zLgoKCSogY29udHJvbHMvYnV0dG9uLmM6CglTdXNhbiBGYXJsZXkgPHNmYXJsZXlAY29kZXdlYXZlcnMuY29tPgoJTGlrZSB0aGUgQVVUT1JBRElPQlVUVE9OLCB0aGUgcGFyZW50IG9mIGEgUkFESU9CVVRUT04gc3R5bGUgYnV0dG9uCglzaG91bGQgYmUgc2VudCBhIEJOX0NMSUNLRUQgd2hlbiBpdCByZWNlaXZlcyB0aGUgZm9jdXMuCgoJKiBmaWxlcy9kb3NfZnMuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUdldEZ1bGxQYXRobmFtZTogYWRkIG1pc3NpbmcgdGVybWluYXRpb24gdG8gdGhlIHN0cmluZy4KCgkqIHRvb2xzL3dyYy9nZW5yZXMuYywgdG9vbHMvd3JjL25ld3N0cnVjLmMsIHRvb2xzL3dyYy9wYXJzZXIueSwgdG9vbHMvd3JjL3dyYy5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBieXRlIG9yZGVyIG9uIFNvbGFyaXMgYW5kIEZyZWVCU0QuCgoJKiBncmFwaGljcy9tZXRhZmlsZWRydi9pbml0LmMsIGdyYXBoaWNzL3BzZHJ2L2luaXQuYywgZ3JhcGhpY3MvdHR5ZHJ2L2luaXQuYywgZ3JhcGhpY3Mvd2luMTZkcnYvaW5pdC5jLCBncmFwaGljcy94MTFkcnYvTWFrZWZpbGUuaW4sIGdyYXBoaWNzL3gxMWRydi9pbml0LmMsIGdyYXBoaWNzL3gxMWRydi9vcGVuZ2wuYywgaW5jbHVkZS9hY2NvbmZpZy5oLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBpbmNsdWRlL2RlYnVnZGVmcy5oLCBpbmNsdWRlL2dkaS5oLCBpbmNsdWRlL3dpbmVfZ2wuaCwgaW5jbHVkZS94MTFkcnYuaCwgbG9hZGVyL2xvYWRvcmRlci5jLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2RkcmF3L2QzZHZpZXdwb3J0LmMsIGRsbHMvZGRyYXcvZGRyYXcvZGdhLmMsIGRsbHMvZGRyYXcvZGRyYXcveDExLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UveDExLmMsIGRsbHMvZGRyYXcvbWVzYV9wcml2YXRlLmgsIGRsbHMvb3BlbmdsMzIvLmN2c2lnbm9yZSwgZGxscy9vcGVuZ2wzMi9NYWtlZmlsZS5pbiwgZGxscy9vcGVuZ2wzMi9tYWtlX29wZW5nbF9leHQsIGRsbHMvb3BlbmdsMzIvbWFrZV9vcGVuZ2xfbm9ybSwgZGxscy9vcGVuZ2wzMi9tYWtlX29wZW5nbF9zcGVjLCBkbGxzL29wZW5nbDMyL29wZW5nbDMyLnNwZWMsIGRsbHMvb3BlbmdsMzIvb3BlbmdsX2V4dC5jLCBkbGxzL29wZW5nbDMyL29wZW5nbF9leHQuaCwgZGxscy9vcGVuZ2wzMi9vcGVuZ2xfbm9ybS5jLCBkbGxzL29wZW5nbDMyL3dnbC5jLCBkbGxzL29wZW5nbDMyL3dnbC5oLCBncmFwaGljcy9lbmhtZXRhZmlsZWRydi9pbml0LmMsIGdyYXBoaWNzL3BhaW50aW5nLmMsIE1ha2UucnVsZXMuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUFkZGVkIHN1cHBvcnQgZm9yIE9wZW5HTC4KCgkqIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgYWJzb2x1dGUgcGF0aCB0byBwaWRsIGdlbmVyYXRpb24uCgoyMDAwLTA1LTExICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9zaGVsbDMyL3NobGZvbGRlci5jOgoJQWxleGFuZHJlIEp1bGxpYXJkIDxqdWxsaWFyZEBjb2Rld2VhdmVycy5jb20+IChmb3IgQ29yZWwpCglGaXhlZCBidWZmZXIgb3ZlcmZsb3cuCgoJKiBkbGxzL2ltYWdlaGxwL2FjY2Vzcy5jLCBkbGxzL2ltYWdlaGxwL2ludGVncml0eS5jLCBkbGxzL2ltYWdlaGxwL3N5bWJvbC5jLCBkbGxzL3NoZWxsMzIvYnJzZm9sZGVyLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBkbGxzL3RhcGkzMi9saW5lLmMsIGRsbHMvdGFwaTMyL3Bob25lLmMsIHdpbmRvd3MvZHJpdmVyLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgZGVidWcgbWVzc2FnZXMuCgoJKiBkbGxzL3JpY2hlZGl0L3JpY2hlZGl0LmMsIGluY2x1ZGUvcmljaGVkaXQuaCwgZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBpc3N1ZXMgZm91bmQgYnkgd2luYXBpX2NoZWNrLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMuZGF0LCB0b29scy93aW5hcGlfY2hlY2svd2luMTYvb2xlMmRpc3AuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvYWR2YXBpMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvY3J0ZGxsLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL2ltYWdlaGxwLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL2tlcm5lbDMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL250ZGxsLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL29sZWF1dDMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3JpY2hlZDMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaS5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9jaGVjaywgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9mdW5jdGlvbi5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9sb2NhbC5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9vcHRpb25zLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX3BhcnNlci5wbToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBDaGVjayBmb3IgbWlzc2luZyBtb2R1bGVzIGluIG1vZHVsZXMuZGF0LgoJLSBOZXcgb3B0aW9ucyAtLWRlYnVnLW1lc3NhZ2VzIGZvciBkZWJ1ZyBtZXNzYWdlIGNoZWNraW5nICh0dXJuZWQgb2ZmCgkgIGJ5IGRlZmF1bHQpCgktIERvIG5vdCBkaXNjYXJkIHRoZSBhcmd1bWVudCBuYW1lICh1c2UgaW4gZGVidWcgbWVzc2FnZSBjaGVja2luZykKCS0gSW1wcm92ZWQgcGFyc2luZwoJLSBNaW5vciBidWcgZml4ZXMKCgkqIGdyYXBoaWNzL3gxMWRydi9kaWIuYzoKCU1hcmN1cyBNZWlzc25lciA8TWFyY3VzLk1laXNzbmVyQGNhbGRlcmEuZGU+CglGaXhlZCBhc20oKSBjb25zdHJhaW50cy4KCgkqIGRlYnVnZ2VyL2RiZy55LCBkZWJ1Z2dlci9kZWJ1Z2dlci5oLCBkZWJ1Z2dlci9pbmZvLmMsIGRlYnVnZ2VyL2ludHZhci5oLCBkZWJ1Z2dlci9zdGFicy5jLCBkZWJ1Z2dlci9zdGFjay5jLCBkZWJ1Z2dlci90eXBlcy5jLCBkZWJ1Z2dlci93aW5lZGJnLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkICVwIGluIHByaW50ZiAobm93IHVzaW5nIHdzcHJpbnRmIHdoaWNoIGRvZXNuJ3Qgc3VwcG9ydCBpdCkuCglBZGRlZCBUaHJlYWRJZCBhbmQgUHJvY2Vzc0lkIGludGVybmFsIHZhcnMuCglBbGxvdyBhdCBzdGFydHVwIHRvIHBpY2sgdXAgYSBwcm9jZXNzIHRvIGRlYnVnLgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGRpdmlzaW9uIGJ5IHplcm8uCgoJKiBkbGxzL2NvbWN0bDMyL3RyYWNrYmFyLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIHNvbWUgcXVpcmtzIChyYW5nZSBpcyAzMiBiaXQsIHBhZ2UgdXAvZG4gbWlzbWF0Y2ggb24gSFogdHJhY2tiYXJzKS4KCgkqIHdpbmRvd3Mvc2Nyb2xsLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJU2Nyb2xsIG9mZi1zY3JlZW4gY29udHJvbHMgd2hlbiBzY3JvbGwgcmVjdGFuZ2xlIGlzIE5VTEwuCgoJKiBkbGxzL2NvbWN0bDMyL3RhYi5jLCBpbmNsdWRlL3RhYi5oOgoJS2VuIFRob21hc2VzIDxrZW5AY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50ZWQgdGFiIGNvbnRyb2wgc3R5bGUgVENTX0hPVFRSQUNLICh0YWJzIGFyZSBoaWdobGlnaHRlZCBvbgoJbW91c2Utb3ZlcikuCgoJKiBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZSB0aGUgYmFja2dyb3VuZCBmcm9tIHRoZSBuZXcgaW1hZ2Ugd2hlbiBpdCBpcyBiZWluZyByZXBsYWNlZAoJd2l0aCBhIFJlcGxhY2VJbWFnZS4KCgkqIGxvYWRlci9uZS9tb2R1bGUuYywgbG9hZGVyL25lL3NlZ21lbnQuYywgbG9hZGVyL3Rhc2suYzoKCUJlcm5kIEhlcmQgPGluZm9AaGVyZHNvZnQuY29tPgoJTWFrZSBzdXJlIGhJbnN0YW5jZSBpcyBhIHByb3BlciBnbG9iYWwgaGFuZGxlIGFuZCBub3QgYSBzZWxlY3RvcgoJdmFsdWUuCgoJKiBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYzogSmVhbi1DbGF1ZGUgQmF0aXN0YQoJUHJpbnREaWFsb2cgbm93IGNyZWF0ZXMgYSBEQyB3aGVuIHJlY2VpdmluZyBhIFBEX1JFVFVSTkRDIGZsYWcuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQ2xlYW4gdXAgdGhlIGRyYXdpbmcgY29kZSBhZnRlciBhIGxhYmVsIHVwZGF0ZS4gVGhlcmUgd2VyZSBwcm9ibGVtcyBpZgoJdGhlIG5ldyBsYWJlbCBpcyBzaG9ydGVyIHRoYXQgdGhlIG9sZCBsYWJlbCBmcmFnbWVudHMgb2YgdGhlIG9sZCBsYWJlbAoJd2VyZSBsZWZ0IGRyYXduLgoKCSogd2luZG93cy93aW4uYzogR3V5IEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCUNsZWFyIG1lbnUgaGFuZGxlIGFmdGVyIGRlc3Ryb3lpbmcgbWVudS4KCgkqIGNvbnRyb2xzL21lbnUuYzoKCUd1eSBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglSZXZhbGlkYXRlIG1lbnUgaGFuZGxlIGluIG10LmhUb3BNZW51IGFmdGVyIERpc3BhdGNoTWVzc2FnZS4KCgkqIHdpbmRvd3MvZGlhbG9nLmM6IEJlcm5kIEhlcmQgPGluZm9AaGVyZHNvZnQuY29tPgoJUGFzcyBDVExEQVRBIGFzIFNFR1BUUiBmb3IgMTYtYml0IHByb2dyYW1zLgoKCSogZGxscy92ZXJzaW9uL3ZlcjE2LmM6CglBbGV4YW5kZXIgRnJpbmsgPEFsZXhhbmRlci5Gcmlua0BVbmktTWFpbnouREU+CglQcmV2ZW50IHBvc3NpYmxlIE5VTEwgcG9pbnRlciBhY2Nlc3MuCgoyMDAwLTA1LTEwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29udHJvbHMvbWVudS5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJLSBXaW5lIHdhcyBwYXNzaW5nIHRoZSB3cm9uZyBod25kIGFzIHRoZSBvd25lciB3aGVuIHByb2Nlc3Npbmcgb3duZXIKCSAgZHJhd24gbWVudWJhcnMuCgktIFdoZW4gZG9pbmcgTUVOVV9DYWxjSXRlbVNpemUgZm9yIHRoZSBtZW51IGJhciB3ZSB3ZXJlIG5vdCBwcm9wZXJseQoJICBwYWRkaW5nIHRoZSByZXR1cm5lZCByZWN0LgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUFsbG93IHRoZSB1c2VyIHRvIGNhbmNlbCBsYWJlbCBlZGl0aW5nIHdpdGggZXNjIGFuZCBjb25maXJtIHdpdGggcmV0dXJuLgoKCSogZGxscy9jb21jdGwzMi90YWIuYzoKCUtlbiBUaG9tYXNlcyA8a2VuQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlc3RvcmUgYWNjaWRlbnRhbGx5IHVuZG9uZSBjaGFuZ2VzLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gV2luZSB3YXMgbm90IHByb3Blcmx5IHJlcG9ydGluZyBiYWNrIHRoZSBlZGl0ZWQgbGFiZWwgdG8gdGhlCgkgIGFwcGxpY2F0aW9uIGluIGEgdHJlZXZpZXcgd2hlbiB0aGUgbGFiZWwgaXMgYSBjYWxsYmFjay4KCS0gQmVjYXVzZSB3aW5kb3dzIGFwcGxpY2F0aW9ucyBhc3N1bWUgdGhleSBnZXQgYSBuZXcgZWRpdCBjb250cm9sCgkgIGV2ZXJ5IHRpbWUgdGhleSBvZnRlbiBzdWJjbGFzcyB0aGF0IGVkaXQgYm94IHdpbGx5LW5pbGx5IGFuZCBkbyBub3QKCSAgY2xlYW4gdXAuIFNvIGl0IGlzIG5lY2Vzc2FyeSB0byBhY3R1YWxseSBnaXZlIHRoZW0gYSBuZXcgZWRpdCBjb250cm9sCgkgIGVhY2ggdGltZS4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gQ2xlYW5lZCB1cCBzb21lIG9mIHRoZSBkcmF3aW5nIGNvZGUsIHNwZWNpZmljYWxseSBkZWFsaW5nIHdpdGgKCSAgYXZvaWRpbmcgdHJ5aW5nIHRvIGRyYXcgaW52YWxpZCBiaXRtYXBzLgoJLSBBdm9pZCBkaXJlY3RseSBjYWxsaW5nIGRyYXdpbmcgZnVuY3Rpb25zIGluc3RlYWQgaW52YWxpZGF0aW5nIHJlY3RzCgkgIGFuZCByZWx5aW5nIG9uIFdNX1BBSU5ULgoJLSBGb3IgdGhlIGRyb3Bkb3duIGV2ZW50IGNoZWNrIHRoZSBidXR0b24gc3R5bGUgYXMgb3Bwb3NlZCB0byB0aGUKCSAgdG9vbGJhciBzdHlsZS4KCgkqIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCU1ha2UgaW50ZXJuYWwgYnVmZmVycyBzaXplIG11bHRpcGxlIG9mIDQuCgoJKiB3aW5kb3dzL21kaS5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCVZlcmlmeSB0aGUgbWVudSBoYW5kbGUgaXMgbm9uLXplcm8gcHJpb3IgdG8gdXNlLgoKCSogY29udHJvbHMvbWVudS5jOiBLZW4gVGhvbWFzZXMgPGtlbkBjb2Rld2VhdmVycy5jb20+CglGaXhlZCB0byBkaXNwbGF5IHBvcHVwLW1lbnUgYXJyb3cgb24gb3duZXItZHJhd24gcG9wdXAgbWVudXMuCglGaXhlZCBwb3NpdGlvbmluZyBvZiBzdWJtZW51cyByZWxhdGl2ZSB0byBwYXJlbnQgbWVudXMuCgoJKiB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCBkbGxzL2NvbWN0bDMyL2FuaW1hdGUuYywgZGxscy93aW5tbS90aW1lLmMsIGdyYXBoaWNzL3ZnYS5jLCBtaXNjL3N5c3RlbS5jLCBzY2hlZHVsZXIvc2VydmljZXMuYywgd2luZG93cy90aW1lci5jOgoJU3BlY2lmeSB0aGUgc2VydmljZSB0aHJlYWQgdGltZXJzIGluIG1zIGluc3RlYWQgb2YgdXMuCgoJKiByZWxheTMyL2J1aWx0aW4zMi5jLCByZWxheTMyL3JlbGF5Mzg2LmMsIHRvb2xzL2J1aWxkLmMsIGluY2x1ZGUvYnVpbHRpbjMyLmgsIGluY2x1ZGUvd2lubnQuaCwgbWlzYy9tYWluLmM6CglSZXNlcnZlIHNwYWNlIGZvciB0aGUgUEUgaGVhZGVyIGF0IHRoZSBzdGFydCBvZiB0aGUgLnNvIGZpbGUuCglTdG9yZSB0aGUgZXhwb3J0IHRhYmxlIGluc2lkZSB0aGUgZGF0YSBzZWN0aW9uIHNvIHRoYXQgc2VjdGlvbnMgY2FuIGJlCglwcm9wZXJseSBhbGlnbmVkLgoJQnVpbGQgdGhlIHJlbGF5IGZ1bmN0aW9uIHRhYmxlIGRpcmVjdGx5IGluIHRoZSAuc3BlYy5jIGZpbGUuCglNb3ZlZCByZWxheSBkZWJ1Z2dpbmcgZnVuY3Rpb25zIHRvIHJlbGF5Mzg2LmMuCgoJKiBkbGxzL2NvbWN0bDMyL3BhZ2VyLmMsIGRsbHMvY29tY3RsMzIvcHJvZ3Jlc3MuYywgZGxscy9jb21jdGwzMi9yZWJhci5jLCBkbGxzL2NvbWN0bDMyL3N0YXR1cy5jLCBkbGxzL2NvbWN0bDMyL3RhYi5jLCBkbGxzL2NvbWN0bDMyL3Rvb2x0aXBzLmMsIGRsbHMvY29tY3RsMzIvdHJhY2tiYXIuYywgZGxscy9jb21jdGwzMi91cGRvd24uYywgZGxscy9jb21jdGwzMi9hbmltYXRlLmMsIGRsbHMvY29tY3RsMzIvY29tYm9leC5jLCBkbGxzL2NvbWN0bDMyL2hlYWRlci5jLCBkbGxzL2NvbWN0bDMyL2hvdGtleS5jLCBkbGxzL2NvbWN0bDMyL2lwYWRkcmVzcy5jLCBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmMsIGRsbHMvY29tY3RsMzIvbW9udGhjYWwuYzoKCUdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJUHJvdGVjdCBhZ2FpbnN0IHVzZSBvZiBjb21jdGwzMiBwcml2YXRlIGNvbnRyb2wgbWVtb3J5IGFmdGVyIGl0IGhhcwoJYmVlbiBmcmVlZC4KCgkqIGRsbHMvY29tY3RsMzIvc3RhdHVzLmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJU29tZSBwcm9ncmFtcyBzd2l0Y2ggdGhlaXIgc3RhdHVzIGJhciBiYWNrIGFuZCBmb3J0aCBmcm9tIHNpbXBsZSBtb2RlCgl3aGlsZSBydW5uaW5nLiBUaGlzIGZpeCBjb3JyZWN0cyBkcmF3aW5nIGFuZCB0ZXh0IHNldHRpbmcgcHJvYmxlbXMgdGhhdAoJcmVzdWx0IGZyb20gdGhpcyBiZWhhdmlvci4KCjIwMDAtMDUtMDkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBtZW1vcnkvaGVhcC5jOgoJQWxleGFuZHJlIEp1bGxpYXJkIDxqdWxsaWFyZEBjb2Rld2VhdmVycy5jb20+IChmb3IgQ29yZWwpCglGaXhlZCBIZWFwQWxsb2MoSEVBUF9aRVJPX01FTU9SWSkgdG8gY2xlYXIgdGhlIHdob2xlIGFsbG9jYXRlZCBibG9jay4KCVZhcmlvdXMgb3B0aW1pemF0aW9ucy4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglDaGFuZ2VkIFdBVkVIRFIgbm90aWZpY2F0aW9uIGhldXJpc3RpYy4KCUFkZGVkIHByZWxpbWluYXJ5IHN1cHBvcnQgZm9yIGxvb3BzIGluIFdBVkVIRFJzLgoJRml4ZWQgaXNzdWVzIHdoZW4gbWl4aW5nIG9wZW4gYW5kIGdldENhcHMgY2FsbHMuCgoJKiB0b29scy93cmMvQ0hBTkdFUywgdG9vbHMvd3JjL01ha2VmaWxlLmluLCB0b29scy93cmMvUkVBRE1FLndyYywgdG9vbHMvd3JjL2R1bXByZXMuYywgdG9vbHMvd3JjL2dlbnJlcy5jLCB0b29scy93cmMvbmV3c3RydWMuYywgdG9vbHMvd3JjL3BhcnNlci5oLCB0b29scy93cmMvcGFyc2VyLmwsIHRvb2xzL3dyYy9wYXJzZXIueSwgdG9vbHMvd3JjL3JlYWRyZXMuYywgdG9vbHMvd3JjL3dyYy5jLCB0b29scy93cmMvd3JjLmgsIHRvb2xzL3dyYy93cmMubWFuLCB0b29scy93cmMvd3JjdHlwZXMuaCwgdG9vbHMvd3JjL3dyaXRlcmVzLmM6CglCZXJ0aG8gU3R1bHRpZW5zIDxiZXJ0aG9AYWtocGhkLmF1LmRrPgoJLSBCdWdmaXg6IENvcnJlY3RlZCBhIFNFR1YgaW4gdGhlIHJhd2RhdGEgaGFuZGxpbmcuIE1pc3Rha2luZ2x5IHRvb2sgdGhlCgkgIGFkZHJlc3Mgb2YgYSBwb2ludGVyIGluc3RlYWQgb2YgaXRzIHZhbHVlLiBUaGlzIHByb2JhYmx5IHNsaXBwZWQgaW4KCSAgZHVyaW5nIHRoZSBtZXJnZSBvZiBteSB0cmVlIGludG8gdGhlIHdpbmV0cmVlLgoJICBMZXNzb24gbGVhcm5lZDogYWx3YXlzIGRvdWJsZSBjaGVjay4KCS0gVmVyaWZpZWQgbW9zdCByZXNvdXJjZXMgc28gdGhhdCB3aW4xNiBjb21waWxlIGFsc28gZ2VuZXJhdGVzIGNvcnJlY3QKCSAgb3V0cHV0IGZvciByZXZlcnNlZCBlbmRpYW4uCgktIEltcGxlbWVudGVkIGJ5dGUtb3JkZXJpbmcgZm9yIHJlc291cmNlcy4gQWxsIHJlc291cmNlcyBjYW4gYmUgZm9yY2VkCgkgIHRvIGJlIGxpdHRsZS0sIGJpZy0gb3IgbmF0aXZlIGVuZGlhbiB3aXRoIGNvbW1hbmQtbGluZSBvcHRpb24gLUIuCgktIFJlYWRpbmcgcmVzb3VyY2VzIGZyb20gLnJlcy1maWxlcyBhcmUgb25seSBhY2NlcHRlZCBpbiBuYXRpdmUgYnl0ZS0KCSAgb3JkZXJpbmcgc28gdGhhdCBubyBhZGRpdGlvbmFsIHNlbWFudGljIGFuYWx5c2lzIGlzIHJlcXVpcmVkLgoJLSBSZXNvdXJjZSBkaXJlY3RvcnkgaXMgc3RpbGwgd3JpdHRlbiBpbiBuYXRpdmUtb25seSBmb3JtYXQsIGluY2x1ZGluZwoJICB0aGUgc3RyaW5ncy4KCS0gV3JjIGlzIG5vdyBpbnN0YWxsZWQgdGhyb3VnaCB0aGUgbWFrZWZpbGUgd2l0aCAnbWFrZSBpbnN0YWxsJyBhbmQgYWxzbwoJICB1bmluc3RhbGxlZCB3aXRoICdtYWtlIHVuaW5zdGFsbCcuCgktIFdyb3RlIGEgbWFuLXBhZ2UgZm9yIGJldHRlciByZWZlcmVuY2UuIFRoZSBtYW5wYWdlIGFsc28gZ2V0cyBpbnN0YWxsZWQKCSAgYW5kIHVuaW5zdGFsbGVkLgoJLSBDbGVhbmVkIHVwIHRoZSBuYW1lc3BhY2UgYSBiaXQgYnkgbW9yZSBhZ3Jlc3NpdmUgdXNlIG9mIHN0YXRpYy4KCgkqIGRsbHMvY29tY3RsMzIvdGFiLmMsIGluY2x1ZGUvdGFiLmg6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgdGhlIGFiaWxpdHkgdG8gdXNlIG11bHRpbGluZSB0YWIgY29udHJvbHMgdG8gd2luZS4KCgkqIGRsbHMvZGRyYXcvZHN1cmZhY2UvbWFpbi5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL3gxMS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglOdW1iZXIgb2Ygc3VyZmFjZSBMb2NrL1VubG9ja3MgbXVzdCBOT1QgbWF0Y2gsIHNvIGRvIE5PVCB1c2UgaXQgZm9yCglyZWZlcmVuY2UgY291bnRpbmcuCgoJKiB0b29scy93aW5laW5zdGFsbDogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglVcGRhdGUgZm9yIG5ldyBXaW5lIGZlYXR1cmVzOyB1c2UgdHR5ZHJ2IGluc3RlYWQgb2YgeDExZHJ2IHdoZW4KCXJ1bm5pbmcgcmVnYXBpLCBhbmQgc2V0IGNvcnJlY3Qgd2luZWRiZyBwYXRoIGluIHRoZSByZWdpc3RyeS4KCgkqIHNjaGVkdWxlci9wdGhyZWFkLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRml4ZWQganVtcF9hbGlhcyBmb3Igbm9uLVBJQywgYW5kIGRpc2FibGVkIGl0IGZvciBQSUMsIHNpbmNlIGl0Cglkb2Vzbid0IHdvcmsgZm9yIFBJQyByaWdodCBub3cuIFRoaXMgZml4ZXMgY3VycmVudCBjcmFzaGluZyBzaWdhY3Rpb24KCWNhbGxzLgoKCSogZGVidWdnZXIvbWVtb3J5LmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIHggL3MgY29tbWFuZC4KCgkqIGRsbHMvYWR2YXBpMzIvcmVnaXN0cnkuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJQWRkZWQgc29tZSByZWcgdGVtcCBmaWxlIGNsdXR0ZXIgY2hlY2sgKG1vcmUgdGhhbiAxMDAgdGVtcCBmaWxlcyBpbgoJfi8ud2luZSkuCgoyMDAwLTA1LTA3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZ3JhcGhpY3MveDExZHJ2L2RpYi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTZXRJbWFnZUJpdHNfODogYWRkZWQgLT4xNSBjb252ZXJzaW9uIGluIG9wdGltaXplZCBhc3NlbWJsZXIuCgoJKiBkbGxzL3JpY2hlZGl0L01ha2VmaWxlLmluLCBkbGxzL3JpY2hlZGl0L2Fuc2lfZ2VuLmgsIGRsbHMvcmljaGVkaXQvYW5zaV9zeW0uaCwgZGxscy9yaWNoZWRpdC9jaGFybGlzdC5jLCBkbGxzL3JpY2hlZGl0L2NoYXJsaXN0LmgsIGRsbHMvcmljaGVkaXQvcmVhZGVyLmMsIGRsbHMvcmljaGVkaXQvcmljaGVkMzIuaCwgZGxscy9yaWNoZWRpdC9yaWNoZWQzMi5zcGVjLCBkbGxzL3JpY2hlZGl0L3JpY2hlZDMyX21haW4uYywgZGxscy9yaWNoZWRpdC9yaWNoZWRpdC5jLCBkbGxzL3JpY2hlZGl0L3J0Zi5oLCBkbGxzL3JpY2hlZGl0L3J0ZjJ0ZXh0LmgsIGRsbHMvcmljaGVkaXQvc3RkY2hhcm5hbWVzLmgsIGRsbHMvcmljaGVkaXQvdGV4dC13cml0ZXIuYywgZGxscy9yaWNoZWRpdC90ZXh0X21hcC5oLCBpbmNsdWRlL3JpY2hlZGl0Lmg6CglKZWFuLUNsYXVkZSBCYXRpc3RhCglXcmFwcyBzb21lIFJpY2hFZGl0IGNvbnRyb2wgZnVuY3Rpb25hbGl0eSBvbiBhbiBFZGl0IGNvbnRyb2wuIEl0IHVzZXMKCWEgZnJlZSBpbXBsZW1lbnRhdGlvbiBvZiBhbiBSVEYgcGFyc2VyIHdyaXR0ZW4gYnkgUGF1bCBEdUJvaXMKCWh0dHA6Ly93d3cucHJpbWF0ZS53aXNjLmVkdS9zb2Z0d2FyZS9SVEYvIHdoaWNoIEkgbW9kaWZpZWQgYSBiaXQgdG8KCXdvcmsgd2l0aCB0aGUgY29udHJvbC4KCgkqIHdpbmRvd3Mvd2lucHJvYy5jOgoJRG8gbm90IHNlbmQgV01fU0laSU5HIHRvIDE2LWJpdCB3aW5kb3dzLgoKCSogZGxscy9nZGkvZ2RpX21haW4uYywgZGxscy91c2VyL3VzZXJfbWFpbi5jOgoJQ2xlYW5lZCB1cCBsb2NhbCBoZWFwIGluaXRpYWxpc2F0aW9uLgoKCSogZGxscy9jb21tZGxnL2NkbGczMi5jLCBkbGxzL29sZTMyL29sZTIuYywgaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2luZS93aW5iYXNlMTYuaCwgbG9hZGVyL3BlX2ltYWdlLmMsIHJlbGF5MzIvYnVpbHRpbjMyLmMsIHdpbmRvd3MvZHJpdmVyLmM6CglNb3ZlZCBMb2FkL0ZyZWVMaWJyYXJ5MTYgZGVmaW5pdGlvbiB0byB3aW5iYXNlMTYuaC4KCgkqIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvb2xlMzIvTWFrZWZpbGUuaW4sIGRsbHMvb2xlMzIvb2xlMm5scy5jLCBkbGxzL29sZTMyL29sZTJubHMuc3BlYywgaWYxNjMyL01ha2VmaWxlLmluLCBvbGUvb2xlMm5scy5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZGltaUBjcy50b3JvbnRvLmVkdT4KCVNlcGFyYXRlIE9MRTJOTFMgb3V0IG9mIEtFUk5FTC4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLmRhdCwgdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfY2hlY2s6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gQ2hlY2sgZm9yIG1pc3NpbmcgbW9kdWxlcyBpbiBtb2R1bGVzLmRhdC4KCS0gTWlub3IgYnVnIGZpeGVzCgoJKiBncmFwaGljcy94MTFkcnYvZGliLmM6CglKZWFuLUNsYXVkZSBCYXRpc3RhIChNYWNhZGFtaWFuL0NvcmVsKQoJVG9wLWRvd24gaW1hZ2VzIGhhdmUgYSBuZWdhdGl2ZSBiaUhlaWdodCwgdGhlIHNjYW5saW5lcyBvZiB0aGVzZXMKCWltYWdlcyB3ZXJlIGludmVydGVkIGluIFgxMURSVl9ESUJfR2V0SW1hZ2VCaXRzX3h4LiBUbyBwcmV2ZW50IHRoaXMgSQoJc2ltcGx5IGNoYW5nZWQgdGhlIHNpZ24gb2YgbGluZXMsIHRoZSBzY2FubGluZXMgd2VyZSBjb3JyZWN0bHkgaGFuZGxlZAoJYWZ0ZXJ3YXJkcwoKCSogZGVidWdnZXIvc3RhYnMuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJT2xkIHZlcnNpb25zIG9mIGdsaWJjIG1pZ2h0IG5vdCBoYXZlIFNUTl9VTkRFRiBkZWZpbmVkLgoKCSogZmlsZXMvZmlsZS5jOiBHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCVJldmVydCB0aGUgdGVzdCBmb3IgVmlydHVhbF9IYW5kbGVGYXVsdCBpbiBSZWFkRmlsZS9Xcml0ZUZpbGUuCgoJKiBkbGxzL2NvbWN0bDMyL3N0YXR1cy5jOgoJR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglTZXQgdGhlIGl0ZW1JRCBtZW1iZXIgb2YgdGhlIERSQVdJVEVNU1RSVUNUIHRvIHRoZSBudW1iZXIgb2YgdGhlCglzdGF0dXMgcGFydCBwYWludGVkLgoKCSogd2luZG93cy9tZGkuYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglBbHdheXMgY2FsbHMgU2V0TWVudSBpbiBNRElTZXRNZW51LgoKCSogZGxscy90YXBpMzIvbGluZS5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZGltaUBjcy50b3JvbnRvLmVkdT4KCVNtYWxsIGRlYnVnIGNoYW5uZWwgY2xlYW51cC4KCgkqIGNvbnRyb2xzL2xpc3Rib3guYzogQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglGaXhlZCBzY3JvbGxpbmcgYnVnLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jLCBpbmNsdWRlL2xpc3R2aWV3Lmg6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCUltcGxlbWVudGVkIExpc3RWaWV3X1NldEhvdmVyVGltZSgpLCBMaXN0Vmlld19HZXRIb3ZlclRpbWUoKSwgaW5pdGlhbAoJc3VwcG9ydCBmb3IgdGhlIExWU19FWF9UUkFDS1NFTEVDVCBmbGFnLiAgQWRkZWQgY29kZSB0byBkZWxldGUgaXRlbXMKCWluIExJU1RWSUVXX1NldEl0ZW1Db3VudCgpLgoKMjAwMC0wNS0wNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvd2ludXNlci5oLCB3aW5kb3dzL25vbmNsaWVudC5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIFdNX1NJWklORyBtZXNzYWdlIHN1cHBvcnQuCgoJKiBncmFwaGljcy9wYXRoLmM6IFJvYiBGYXJudW0gPHJvYmZAdHdpbnV4LmNvbT4KCVJlbW92ZWQgd2FybmluZ3MgZnJvbSBmcmVlaW5nIHBhdGggaW4gRGVsZXRlREMuCgoJKiBkbGxzL2NvbWN0bDMyL2hlYWRlci5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVkIGEgYnVnIHdpdGggdGhlIHByb2Nlc3Npbmcgb2YgSGl0VGVzdC4KCgkqIGNvbnRyb2xzL2VkaXQuYzogU3VzYW4gRmFybGV5IDxzdXNhbkBjb2Rld2VhdmVycy5jb20+CglIYW5kbGUgXkMsIF5WIGFuZCBeWCBpbiBhbiBlZGl0IGNvbnRyb2wgcHJvcGVybHkuCgoJKiBtaXNjL3JlZ2lzdHJ5LmM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglTdHJpcCB0aGUgJCQkUFJPVE8uSElWIGJpdCBmcm9tIHdpbjJrIFNZU1RFTSBhbmQgU09GVFdBUkUgaGl2ZXMuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglGaXhlZCBEQyBsZWFrLgoKCSogbG9hZGVyL3BlX3Jlc291cmNlLmM6CglTdGVwaGFuZSBMdXNzaWVyIDxzdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KCUlmIHdlIGRvIG5vdCBmaW5kIGEgcmVzb3VyY2UgZm9yIGJvdGggKHByaW1hcnkgbGFuZ3xzdWIgbGFuZyksIHdlIHRyeQoJanVzdCAocHJpbWFyeSBsYW5nKSBiZWZvcmUgdXNpbmcgdGhlIGRlZmF1bHQuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2x0aXBzLmM6CglTaGVyaSBTdGVldmVzIDxzaGVyaUBtYWNhZGFtaWFuLmNvbT4KCVdvcmtlZCBhcm91bmQgc29tZSB0b29sdGlwcyBoaWRlIHByb2JsZW1zIGJ5IGNoZWNraW5nIHRoZSBjdXJyZW50IHRvb2x0aXAuCgoJKiBkb2N1bWVudGF0aW9uL2Rpc3RyaWJ1dG9yczoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUFkZGVkIGEgY29uZmlndXJhdGlvbiBoaW50IGZvciB0aGUgQ0QtUk9NICJ1bmhpZGUiIG9wdGlvbi4KCgkqIG9sZS9vbGUybmxzLmM6CglIZW5uaW5nIEhvZmZtYW5uIChvZiBNYWNhZGFtaWFuIGZvciBDb3JlbCkKCUltcGxlbWVudGVkIFNldExvY2FsZUluZm8oKS4gSXQgcmVxdWlyZWQgYSBjaGFuZ2UgdG8gR2V0TG9jYWxlSW5mbygpCglhcyB3ZWxsLCBiZWNhdXNlIEdldExvY2FsZUluZm8oKSBoYXMgdG8gZ2V0IGFueSB2YWx1ZXMgc2F2ZWQgYnkKCVNldExvY2FsZUluZm8oKSBpbiB0aGUgcmVnaXN0cnkuCgoJKiBkZWJ1Z2dlci9icmVhay5jLCBkZWJ1Z2dlci9kYmcueSwgZGVidWdnZXIvZGVidWdnZXIuaCwgZGVidWdnZXIvaW50dmFyLmgsIGRlYnVnZ2VyL21vZHVsZS5jLCBkZWJ1Z2dlci9zdGFicy5jLCBkZWJ1Z2dlci93aW5lZGJnLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIHNvbWUgYnVmZmVyIG92ZXJmbG93cy4KCU1hZGUgc3RhYiBwYXJzaW5nIG1vcmUgcm9idXN0IChub3cgaWdub3JlcyBDKysgc3RhYnMpLgoJRGlzcGxheSBjb3JyZWN0IGJhY2t0cmFjZSBhdCBmaXJzdCB3aGVuIGludm9rZWQgb24gdW5oYW5kbGVkIGV4Y2VwdGlvbi4KCUxvYWRzIHN0YWJzIGZyb20gLnNvIGZpbGVzIHdoZW4gdGhvc2UgYXJlIGxvYWRlZC4KCjIwMDAtMDUtMDMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL2RlYnVnZGVmcy5oOiBHZW5lcmF0ZWQgYWdhaW4uCgoJKiBpbmNsdWRlL3BlX2ltYWdlLmgsIGxvYWRlci9wZV9pbWFnZS5jOgoJUEVfTG9hZEltYWdlOiByZW1vdmVkIHZlcnNpb24gcGFyYW1ldGVyLCBzZXQgbGFzdCBlcnJvciBjb3JyZWN0bHkuCgoJKiBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvdHJhY2UuYywgaW5jbHVkZS9wcm9jZXNzLmgsIGluY2x1ZGUvc2VydmVyLmg6CglTdG9yZSBwcm9jZXNzIGZpbGUgbmFtZSBpbiBzdGFydHVwIGluZm8uCglGaXhlZCBleGVfZmlsZSBoYW5kbGluZy4KCgkqIGRsbHMvTWFrZWZpbGUuaW46IEZpeGVkIHR5cG8uCgoJKiBNYWtlLnJ1bGVzLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9yaWNoZWRpdC8uY3ZzaWdub3JlLCBkbGxzL3JpY2hlZGl0L01ha2VmaWxlLmluLCBkbGxzL3JpY2hlZGl0L3JpY2hlZDMyLnNwZWMsIGRsbHMvcmljaGVkaXQvcmljaGVkMzJfbWFpbi5jOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUFkZGVkIHN0dWJzIGZvciByaWNoZWQzMi5kbGwuCgoJKiBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUNhbGwgWE9wZW5JTSBvbiB0aGUgbGFyZ2Ugc3RhY2suCgoJKiBpbmNsdWRlL3dpbnNvY2suaDoKCUJhbmcgSnVuLVlvdW5nIDxiYW5nanlAZHJlYW13aXouY29tPgoJRnJlZUJTRCAzLjQgY29tcGlsZSBmaXguCgoJKiBkZWJ1Z2dlci9lZGl0bGluZS5jLCBkZWJ1Z2dlci93aW5lZGJnLmMsIGdyYXBoaWNzL3ZnYS5jLCBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW5jb24uaCwgcmVsYXkzMi9rZXJuZWwzMi5zcGVjLCBzZXJ2ZXIvY29uc29sZS5jLCB3aW4zMi9jb25zb2xlLmM6CglGaXhlZCBDT09SRCBzdHJ1Y3R1cmUgZGVmaW5pdGlvbi4KCUZpeGVkIEdldExhcmdlc3RDb25zb2xlV2luZG93U2l6ZSB0byBub3QgcmV0dXJuIGEgc3RydWN0dXJlIHdoZW4KCWNhbGxlZCBmcm9tIHRoZSBXaW5kb3cgYmluYXJ5LgoKCSogc2VydmVyL29iamVjdC5jOiBTbWFsbCBvcHRpbWl6YXRpb24uCgoJKiBzY2hlZHVsZXIvdGhyZWFkLmM6IEZpeGVkIGRlZmF1bHQgdGhyZWFkIHN0YWNrIHNpemUuCgoJKiBvYmplY3RzL3RleHQuYzogRml4ZWQgRHJhd1RleHRXIGxlbmd0aCBoYW5kbGluZy4KCgkqIGRsbHMvZGRyYXcvZHN1cmZhY2UvbWFpbi5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCVJlbW92ZSB0aGUgYXNzZXJ0aW9uIHdoZW4gdGhlcmUgaXMgbm8gc291cmNlIHN1cmZhY2UuCgoJKiBpbmNsdWRlL29sZWF1dG8uaDoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUFkZCBEb3NEYXRlVGltZVRvVmFyaWFudFRpbWUgcHJvdG90eXBlLgoKCSogZGxscy9zaGVsbDMyL3NobHdhcGkuc3BlYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCU1hcCBTdHJDaHJBIHRvIHN0cmNoci4gIEZpeCBTdHJDaHJXIGFyZyBsaXN0LgoKCSogaW5jbHVkZS93aW51c2VyLmg6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglBZGRlZCBIV05EX01FU1NBR0UuCgoJKiBkbGxzL29sZTMyL3N0Z19zdHJlYW0uYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUFsbG93IElTZXF1ZW50aWFsU3RyZWFtX1dyaXRlIHRvIHdvcmsgaWYgYWNjZXNzIG1vZGUgaXMgU1RHTV9SRUFEV1JJVEUuCgoJKiBtaXNjL3JlZ2lzdHJ5LmM6CglCZXJ0aG8gU3R1bHRpZW5zIDxiZXJ0aG9AcGFudGVyLnNvY2kuYWF1LmRrPgoJTW1hcCBkb2VzIG5vdCBmYWlsIG9uIHplcm8tbGVuZ3RoIGZpbGVzLgoKMjAwMC0wNS0wMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvZ2xvYmFsLmgsIG1lbW9yeS92aXJ0dWFsLmM6CglVc2UgZXhjZXB0aW9uIGhhbmRsaW5nIHRvIGltcGxlbWVudCB0aGUgSXNCYWQqIGZ1bmN0aW9ucy4KCVJlbW92ZWQgL3Byb2Mvc2VsZi9tYXBzIHBhcnNpbmcgYXMgaXQgaXMgbm90IHZlcnkgdXNlZnVsIHdpdGggLnNvIGxpYnMuCgoJKiBpbmNsdWRlL3Byb2Nlc3MuaCwgaW5jbHVkZS90aHJlYWQuaCwgbWlzY2VtdS9tYWluLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci90aHJlYWQuYzoKCVNldHVwIHRoZSBpbml0aWFsIHRocmVhZCAlZnMgZnJvbSBhIGNvbnN0cnVjdG9yLgoKCSogZGxscy9kZHJhdy9kZ2EuYywgZGxscy9kZHJhdy9kZ2EyLmMsIGRsbHMvZGRyYXcveDExLmMsIGluY2x1ZGUvd2lubnQuaDoKCUFkZGVkIERFQ0xfR0xPQkFMX0NPTlNUUlVDVE9SIG1hY3JvLgoKCSogcmVzb3VyY2VzL3VzZXIzMi5yYywgdG9vbHMvTWFrZWZpbGUuaW4sIHRvb2xzL3dyYy8uY3ZzaWdub3JlLCB0b29scy93cmMvQ0hBTkdFUywgdG9vbHMvd3JjL01ha2VmaWxlLmluLCB0b29scy93cmMvUkVBRE1FLndyYywgdG9vbHMvd3JjL25ld3N0cnVjLmMsIHRvb2xzL3dyYy9wYXJzZXIuaCwgdG9vbHMvd3JjL3BhcnNlci5sLCB0b29scy93cmMvcGFyc2VyLnksIHRvb2xzL3dyYy9wcGwubCwgdG9vbHMvd3JjL3BweS55LCB0b29scy93cmMvcHJlcHJvYy5jLCB0b29scy93cmMvcHJlcHJvYy5oLCB0b29scy93cmMvdXRpbHMuYywgdG9vbHMvd3JjL3V0aWxzLmgsIHRvb2xzL3dyYy93cmMuYywgdG9vbHMvd3JjL3dyYy5oLCB0b29scy93cmMvd3JpdGVyZXMuYywgZGxscy9jb21tZGxnL3JzcmMucmMsIGRsbHMvZGlzcGxheS9kaXNwLnJjLCBkbGxzL3NoZWxsMzIvc2hyZXMucmMsIHByb2dyYW1zL2Nsb2NrL01ha2VmaWxlLmluLCBwcm9ncmFtcy9ub3RlcGFkL01ha2VmaWxlLmluLCBwcm9ncmFtcy9wcm9nbWFuL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5lbWluZS9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luaGVscC9NYWtlZmlsZS5pbiwgZGxscy9jb21jdGwzMi9yc3JjLnJjOgoJQmVydGhvIFN0dWx0aWVucyA8YmVydGhvQGFraHBoZC5hdS5kaz4KCS0gSW1wbGVtZW50ZWQgYSBuZXcgcHJlcHJvY2Vzc29yIHRoYXQgaXMgKG5lYXJseSkgQU5TSS1DIGNvbXBsaWFudC4gVGhlCgkgIG9sZCBwYXJzZXIgaGFzIGJlZW4gc3RyaXBwZWQgZnJvbSB0aGUgb2xkIHByZXByb2Nlc3Nvci1jb2RlIHdoaWNoCgkgIGNsZWFuZWQgdXAgYm90aCByZXNvdXJjZS1zY2FubmVyIGFuZCAtcGFyc2VyLgoJLSBTdGFuZGFyZCBkZWZpbmVzIGhhdmUgYmVlbiBpbnRyb2R1Y2VkIChzZWUgUkVBRE1FLndyYykKCS0gQm90aCBwcmVwcm9jZXNzb3ItIGFuZCByZXNvdXJjZS1zY2FubmVyIGhhdmUgYmVlbiBvcHRpbWl6ZWQgc2xpZ2h0bHkKCSAgc28gdGhhdCBubyBiYWNraW5nIHVwIGlzIHJlcXVpcmVkIChvbmUgY2hhciBsb29rYWhlYWQgaXMgZW5vdWdoKS4KCS0gRmlsZW5hbWUtc2Nhbm5pbmcgaGFzIGJlZW4gY2xlYW5lZCB1cCwgdGhvdWdoIG5vdCBwZXJmZWN0IHlldC4KCS0gVXNlci10eXBlIHJlc291cmNlcyBhcmUgY29tcGF0aWJsZSBub3cuCgktIExpbmUtY29udGludWF0aW9uIGluIHN0cmluZ3MgaXMgY29ycmVjdGVkIHNvIHRoYXQgaXQgZG9lcyBub3QKCSAgaW50cm9kdWNlIGEgbmV3bGluZSBpbiB0aGUgb3V0cHV0LgoKCSogc2NoZWR1bGVyL3RocmVhZC5jLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcHJvY2Vzcy5oLCBzZXJ2ZXIvcmVxdWVzdC5jLCBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90aHJlYWQuaCwgc2VydmVyL3RyYWNlLmMsIHdpbmRvd3MvcXVldWUuYywgbG9hZGVyL21vZHVsZS5jLCBtZW1vcnkvZW52aXJvbi5jLCBtaXNjZW11L21haW4uYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgaW5jbHVkZS9wcm9jZXNzLmgsIGluY2x1ZGUvc2VydmVyLmgsIGluY2x1ZGUvdGhyZWFkLmgsIGxvYWRlci9tYWluLmM6CglSZXdyb3RlIFVuaXggcHJvY2VzcyBsYXVuY2hpbmcgdG8gYWxsb3cgcGFzc2luZyBzdGFydHVwIGluZm9ybWF0aW9uIHRvCglXaW5lbGliIGFwcHMuIEltcHJvdmVkIGhhbmRsaW5nIG9mIGV4ZWN2ZSgpIGZhaWx1cmVzLgoKCSogZmlsZXMvZmlsZS5jOiBBZGRlZCBFTk9FWEVDIGVycm9yIGNvZGUuCgoJKiBzY2hlZHVsZXIvcHRocmVhZC5jOiBBZGRlZCBhdGZvcmsgc3VwcG9ydC4KCgkqIGNvbmZpZ3VyZS5pbiwgZGxscy9kZHJhdy9NYWtlZmlsZS5pbiwgZGxscy9kZHJhdy9kZHJhdy9kZ2EuYywgZGxscy9kZHJhdy9kZHJhdy9kZ2EyLmMsIGRsbHMvZGRyYXcvZGdhLmMsIGRsbHMvZGRyYXcvZGdhMi5jLCBkbGxzL2RkcmF3L2RnYTJfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L2RnYV9wcml2YXRlLmgsIGRsbHMvZGRyYXcvZHBhbGV0dGUvZGdhLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UvZGdhLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UvZGdhMi5jLCBjb25maWd1cmU6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJQWRkZWQgREdBMiBkcml2ZXIgdG8gRGlyZWN0RHJhdy4KCgkqIGRsbHMvY29tbWRsZy9jZGxnMzIuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUNPTURMRzMyX0RsbEVudHJ5UG9pbnQsQ09NRExHMzJfU2V0Q29tbURsZ0V4dGVuZGVkRXJyb3I6IGRlbGF5CglhbGxvY2F0aW9uIG9mIFRscyBmb3IgQ29tbURsZ0V4dGVuZGVkRXJyb3IgdW50aWwgaXQgaXMgbmVlZGVkLgoKCSogZGVidWdnZXIvd2luZWRiZy5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBzZWd2IHdoZW4gZGVidWdnZXIgcmVnaXN0cnkga2V5IGRvZXNuJ3QgZXhpc3QuCgoJKiBkbGxzL2ljbXAvaWNtcF9tYWluLmM6CglHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCVVzZSA8c3RkbGliLmg+IGluc3RlYWQgb2YgdGhlIGRlcHJlY2F0ZWQgYW5kIG5vbi1wb3J0YWJsZSA8bWFsbG9jLmg+LgoKMjAwMC0wNC0zMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIEFOTk9VTkNFLCBDaGFuZ2VMb2csIGluY2x1ZGUvdmVyc2lvbi5oOgoJUmVsZWFzZSAyMDAwMDQzMC4KCgkqIHdpbmRvd3MveDExZHJ2L3duZC5jOgoJR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglYMTFEUlZfU2V0Rm9jdXM6IHJlYWxseSBkb24ndCBtZXNzIHdpdGggZm9jdXMgZm9yIG1hbmFnZWQgd2luZG93cy4KCgkqIGdyYXBoaWNzL3dpbjE2ZHJ2L2dyYXBoaWNzLmMsIGdyYXBoaWNzL3gxMWRydi9vZW1iaXRtYXAuYywgZ3JhcGhpY3MveDExZHJ2L3RleHQuYywgaW5jbHVkZS9oZWFwLmgsIG1lbW9yeS9oZWFwLmMsIG9iamVjdHMvdGV4dC5jLCB3aW5kb3dzL2NsaXBib2FyZC5jLCB3aW5kb3dzL2lucHV0LmMsIHdpbmRvd3Mvd2lucHJvYy5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZGltaUBjcy50b3JvbnRvLmVkdT4KCVJlbW92ZWQgSEVBUF94YWxsb2MuCgoJKiBkZWJ1Z2dlci9icmVhay5jLCBkZWJ1Z2dlci9kYl9kaXNhc20uYywgZGVidWdnZXIvZGJnLnksIGRlYnVnZ2VyL2RlYnVnLmwsIGRlYnVnZ2VyL2RlYnVnZ2VyLmgsIGRlYnVnZ2VyL2Rpc3BsYXkuYywgZGVidWdnZXIvZWRpdGxpbmUuYywgZGVidWdnZXIvZXhwci5jLCBkZWJ1Z2dlci9oYXNoLmMsIGRlYnVnZ2VyL2luZm8uYywgZGVidWdnZXIvaW50dmFyLmgsIGRlYnVnZ2VyL21lbW9yeS5jLCBkZWJ1Z2dlci9yZWdpc3RlcnMuYywgZGVidWdnZXIvc291cmNlLmMsIGRlYnVnZ2VyL3N0YWJzLmMsIGRlYnVnZ2VyL3N0YWNrLmMsIGRlYnVnZ2VyL3R5cGVzLmMsIGRlYnVnZ2VyL3dpbmVkYmcuYywgZGVidWdnZXIvd2luZWRiZy5zcGVjOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CgktIEVuaGFuY2VkIGludGVybmFsIHZhcmlhYmxlcyBmcmFtZXdvcmsgKGluY2x1ZGluZyByZWFkL3NhdmUgdG8KCSAgcmVnaXN0cnkgYW5kIHR5cGluZykKCS0gRmluYWxpemVkIHVzZSBvZiBXaW5kb3dzJyBDb25zb2xlIEkvTyBpbnRlcmZhY2UgKGluc3RlYWQgb2YgVW5peCBzdGQKCSAgc3RyZWFtcykKCS0gTm93IGhhbmRsaW5nIHJlZ2lzdGVycyBhcyBpbnRlcm5hbCB2YXJpYWJsZXMgKHRoZXkgYXJlIG5vIGxvbmdlcgoJICBzZWVuIGFzIGEgc3BlY2lmaWMgdHlwZSkKCgkqIHdpbjMyL2V4Y2VwdC5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUluc3VyZSB3ZSBhbHdheXMgdHJ5IHRvIGxhdW5jaCBhIGRlYnVnZ2VyLgoKCSogcmVsYXkzMi93b3d0aHVuay5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJVXNlIFRocmVhZCBwc2V1ZG8gaGFuZGxlIGFuZCBub3QgVGhyZWFkIElkIGFzIGFyZ3VtZW50IGZvciB0aGUgY2FsbCB0bwoJR2V0VGhyZWFkU2VsZWN0b3JFbnRyeS4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KMjAwMC0wNC0zMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MveDExZHJ2L3duZC5jOgoJR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglYMTFEUlZfU2V0Rm9jdXM6IHJlYWxseSBkb24ndCBtZXNzIHdpdGggZm9jdXMgZm9yIG1hbmFnZWQgd2luZG93cy4KCgkqIGdyYXBoaWNzL3dpbjE2ZHJ2L2dyYXBoaWNzLmMsIGdyYXBoaWNzL3gxMWRydi9vZW1iaXRtYXAuYywgZ3JhcGhpY3MveDExZHJ2L3RleHQuYywgaW5jbHVkZS9oZWFwLmgsIG1lbW9yeS9oZWFwLmMsIG9iamVjdHMvdGV4dC5jLCB3aW5kb3dzL2NsaXBib2FyZC5jLCB3aW5kb3dzL2lucHV0LmMsIHdpbmRvd3Mvd2lucHJvYy5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZGltaUBjcy50b3JvbnRvLmVkdT4KCVJlbW92ZWQgSEVBUF94YWxsb2MuCgoJKiBkZWJ1Z2dlci9icmVhay5jLCBkZWJ1Z2dlci9kYl9kaXNhc20uYywgZGVidWdnZXIvZGJnLnksIGRlYnVnZ2VyL2RlYnVnLmwsIGRlYnVnZ2VyL2RlYnVnZ2VyLmgsIGRlYnVnZ2VyL2Rpc3BsYXkuYywgZGVidWdnZXIvZWRpdGxpbmUuYywgZGVidWdnZXIvZXhwci5jLCBkZWJ1Z2dlci9oYXNoLmMsIGRlYnVnZ2VyL2luZm8uYywgZGVidWdnZXIvaW50dmFyLmgsIGRlYnVnZ2VyL21lbW9yeS5jLCBkZWJ1Z2dlci9yZWdpc3RlcnMuYywgZGVidWdnZXIvc291cmNlLmMsIGRlYnVnZ2VyL3N0YWJzLmMsIGRlYnVnZ2VyL3N0YWNrLmMsIGRlYnVnZ2VyL3R5cGVzLmMsIGRlYnVnZ2VyL3dpbmVkYmcuYywgZGVidWdnZXIvd2luZWRiZy5zcGVjOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CgktIEVuaGFuY2VkIGludGVybmFsIHZhcmlhYmxlcyBmcmFtZXdvcmsgKGluY2x1ZGluZyByZWFkL3NhdmUgdG8KCSAgcmVnaXN0cnkgYW5kIHR5cGluZykKCS0gRmluYWxpemVkIHVzZSBvZiBXaW5kb3dzJyBDb25zb2xlIEkvTyBpbnRlcmZhY2UgKGluc3RlYWQgb2YgVW5peCBzdGQKCSAgc3RyZWFtcykKCS0gTm93IGhhbmRsaW5nIHJlZ2lzdGVycyBhcyBpbnRlcm5hbCB2YXJpYWJsZXMgKHRoZXkgYXJlIG5vIGxvbmdlcgoJICBzZWVuIGFzIGEgc3BlY2lmaWMgdHlwZSkKCgkqIHdpbjMyL2V4Y2VwdC5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUluc3VyZSB3ZSBhbHdheXMgdHJ5IHRvIGxhdW5jaCBhIGRlYnVnZ2VyLgoKCSogcmVsYXkzMi93b3d0aHVuay5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJVXNlIFRocmVhZCBwc2V1ZG8gaGFuZGxlIGFuZCBub3QgVGhyZWFkIElkIGFzIGFyZ3VtZW50IGZvciB0aGUgY2FsbCB0bwoJR2V0VGhyZWFkU2VsZWN0b3JFbnRyeS4KCjIwMDAtMDQtMjkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBsb2FkZXIvcGVfaW1hZ2UuYzoKCUNsZWFyIHRoZSByZW1haW5kZXIgb2YgdGhlIHBhZ2Ugd2hlbiBtYXBwaW5nIGEgc2VjdGlvbiB3aG9zZSBzaXplIG9uCglkaXNrIGlzIG5vdCBhIGZ1bGwgcGFnZSBtdWx0aXBsZS4KCVRlbXBvcmFyaWx5IGNvbW1lbnRlZCBvdXQgdGhlIFZpcnR1YWxGcmVlIGNhbGwgaW4gUEVfVW5sb2FkTGlicmFyeS4KCgkqIGRsbHMvZGRyYXcvZGRyYXcveDExLmMsIGluY2x1ZGUvdHNfeGxpYi5oLCB0c3gxMS9YMTFfY2FsbHMsIHRzeDExL3RzX3hsaWIuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIGFkZGVkIHRocmVhZC1zYWZldHkgcHJvdGVjdGlvbiB0byBYTGlzdFBpeG1hcEZvcm1hdHMKCS0gbW92ZWQgcGl4bWFwIC8gaW1hZ2UgZm9ybWF0IG1hdGNoaW5nIEVSUnMgdG8gV0FSTnMKCgkqIHdpbjMyL2NvbnNvbGUuYywgaW5jbHVkZS93aW5iYXNlLmg6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIEdldExhcmdlc3RDb25zb2xlV2luZG93U2l6ZSBwcm90b3R5cGUuCgoJKiBkbGxzL3dpbmluZXQvZnRwLmM6CglHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCUZyZWVCU0QgY29tcGlsZSBmaXguCgoJKiBncmFwaGljcy94MTFkcnYvZGliLmMsIGluY2x1ZGUvYml0bWFwLmgsIGluY2x1ZGUvZ2RpLmgsIGluY2x1ZGUveDExZHJ2LmgsIG9iamVjdHMvZGliLmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUFkZGVkIERJQl9DcmVhdGVESUJTZWN0aW9uIHdpdGggZXh0cmEgcGFyYW1ldGVyIG92cl9waXRjaCwgYWRkZWQKCW92cl9waXRjaCB0byBwQ3JlYXRlRElCU2VjdGlvbiBpbiBEQ19GVU5DUy4gSWYgb3ZyX3BpdGNoIGlzIG5vbnplcm8sCglpdCBpcyBhIHBpdGNoIG92ZXJyaWRlIChzcGVjaWZpZXMgYnl0ZXMgcGVyIGxpbmUpLCBhbmQgdGVsbHMgdG8gdHJlYXQKCXRoZSBvZmZzZXQgcGFyYW1ldGVyIGFzIGFuIGFscmVhZHktbWFwcGVkIHZpcnR1YWwgbWVtb3J5IGFkZHJlc3MgKGlmCgl0aGUgc2VjdGlvbiBwYXJhbWV0ZXIgaXMgemVybykuIEZpeGVkIGEgRElCIHN0YXR1cyBpbml0IGJ1ZyBpbgoJY3JlYXRpbmcgRElCIHNlY3Rpb25zIGZyb20gZmlsZSBtYXBwaW5ncyAoaWYgY3JlYXRlZCBmcm9tIG1hcHBpbmcsIHRoZQoJRElCIGlzICpub3QqIHJlYWxseSBJblN5bmMpLgoKCSogaW5jbHVkZS93aW5iYXNlLmgsIG1lbW9yeS92aXJ0dWFsLmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUFkZCBXaW5lLWludGVybmFsIGFsbG9jYXRpb24gdHlwZSBNRU1fU1lTVEVNIGZvciBWaXJ0dWFsQWxsb2MgdG8KCXJlZ2lzdGVyIGV4dGVybmFsIG1hcHBpbmdzIChsaWtlIHZpZGVvIGZyYW1lIGJ1ZmZlcnMpLgoKCSogY29uZmlndXJlLmluLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBzY2hlZHVsZXIvcHRocmVhZC5jLCBjb25maWd1cmU6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUVuaGFuY2VkIGxpYmMncyBwdGhyZWFkIGNvbmZpZ3VyYXRpb24gZGV0ZWN0aW9uLgoKCSogZGxscy94MTFkcnYveDExZHJ2X21haW4uYywgZ3JhcGhpY3MveDExZHJ2L2JpdG1hcC5jLCBtc2Rvcy9kb3Nhc3BpLmMsIHdpbmRvd3MvbXVsdGltb24uYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgYSBmZXcgY29tcGlsYXRpb24gd2FybmluZ3MuCgoJKiBkbGxzL2NvbW1kbGcvY29sb3JkbGcuYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgd2FybmluZ3MuCgoJKiBkbGxzL2RwbGF5eC9kcGNsYXNzZmFjdG9yeS5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLCBkbGxzL3VybG1vbi91cmxtb24uc3BlYywgZGxscy91cmxtb24vdXJsbW9uX21haW4uYywgbWlzYy9jb21tLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIGlzc3VlcyByZXBvcnRlZCBieSB3aW5hcGlfY2hlY2suCgoJKiB0b29scy93aW5hcGlfY2hlY2svd2luMzIvc2hlbGwzMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9zaGx3YXBpLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9jaGVjaywgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9sb2NhbC5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9vcHRpb25zLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX3BhcnNlci5wbToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBBUEkgZmlsZXMgdXBkYXRlCgktIE1pbm9yIGJ1ZyBmaXhlcy4KCS0gQWRkZWQgbmV3IG9wdGlvbiAtLWNyb3NzLWNhbGwtdW5pY29kZS1hc2NpaSBmb3IgY2hlY2tpbmcgaWxsZWdhbAoJICBVbmljb2RlIHRvIEFTQ0lJIGNhbGxzLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGluY2x1ZGUvY29uZmlnLmguaW46CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJQWRkZWQgJy0tZW5hYmxlLW9wZW5nbCcgZmxhZyB0byBieXBhc3MgdGhlIHRocmVhZC1zYWZldHkgY2hlY2suCgoJKiBmaWxlcy9kb3NfZnMuYywgZmlsZXMvcHJvZmlsZS5jLCBncmFwaGljcy9wYWludGluZy5jLCB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCBkbGxzL2x6ZXhwYW5kL2x6ZXhwYW5kX21haW4uYzoKCURpbWl0cmllIE8uIFBhdW4gPGRpbWlAY3MudG9yb250by5lZHU+CglSZW1vdmVkIHNvbWUgSEVBUF94YWxsb2MgY2FsbHMuCgoJKiBkbGxzL3dpbm1tL21jaS5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBidWcgd2hlbiBmaWxlIGRvZXNuJ3QgZXhpc3QgaW4gTUNJX09QRU4gaGFuZGxpbmcuCglSZWR1Y2VkIHRpbWUgc3BlbnQgd2l0aCBjcml0IHNlY3QgbG9ja2VkLgoKCSogdG9vbHMvYnVpbGQuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBhcmd2IGhhbmRsaW5nIGZvciBjdWlleGUgd2luZWxpYiBwcm9ncmFtcy4KCgkqIHNjaGVkdWxlci9wdGhyZWFkLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJTWFkZSBwdGhyZWFkX2tpbGxfb3RoZXJfdGhyZWFkc19ucCBhbmQgcHRocmVhZF9hdGZvcmsgZml4bWVzIGxlc3MKCW9idHJ1c2l2ZS4KCgkqIHdpbmRvd3Mvd2luaGVscC5jOiBSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJV2luSGVscCBtdXN0IGFjY2VwdCBhIE5VTEwgcG9pbnRlciB0byB0aGUgaGVscCBrZXkgc3RyaW5nLgoKMjAwMC0wNC0yOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvY29tbWRsZy9maW5kZGxnMzIuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CgktIENvcnJlY3QgY2hlY2sgZm9yIG1pbmltdW0gYnVmZmVyIGxlbmd0aC4KCS0gQ29ycmVjdCBjYXNlcyB3aGVyZSBTaG93V2luZG93IGlzIGRvbmUvbm90IGRvbmUuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmM6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4sIEphbWVzIEFiYmF0aWVsbG8gPGFiYmV5akB3cGkuZWR1PgoJSW1wbGVtZW50ZWQgVE1FX1FVRVJZIGFuZCBUTUVfSE9WRVIgZmxhZ3MgaW4gX1RyYWNrTW91c2VFdmVudCBhbmQKCVRyYWNrTW91c2VFdmVudFByb2MuICBBZGRlZCBjb2RlIHRvIGFsbG93IGFkZGl0aW9uL2NhbmNlbGF0aW9uIG9mCgl0cmFja2luZyBmbGFncyBvbiBleGlzdGluZyBlbnRyaWVzIHJhdGhlciB0aGFuIGNyZWF0ZSBleHRyYSBlbnRyaWVzLgoJRml4ZWQgdGltZXIuICBBZGRlZCBjaGVjayB0byBfVHJhY2tNb3VzZUV2ZW50IHRvIHN0b3AgdGltZXIgaWYgdGhlCgl0cmFja2luZyBsaXN0IGlzIGVtcHR5LiAgRml4ZWQgVE1FX0NBTkNFTC4gIEZpeGVkIFRNRV9MRUFWRS9UTUVfSE9WRVIKCXdoZW4gaHduZFRyYWNrIGlzbid0IHRoZSBjdXJyZW50IGh3bmQuCgoJKiBmaWxlcy9kb3NfZnMuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCURPU0ZTX0RvR2V0RnVsbFBhdGhOYW1lOiByZXdyaXRlIHRvIHJldHVybiByZXN1bHRzIGxpa2UgT1NSMi4KCgkqIGluY2x1ZGUvbW9kdWxlLmgsIGxvYWRlci9tb2R1bGUuYywgbG9hZGVyL3BlX2ltYWdlLmMsIG1lbW9yeS92aXJ0dWFsLmM6CglHYXZyaWVsIFN0YXRlIDxnYXZyaWVsc0Bjb3JlbC5jb20+LCBVbHJpY2ggQ3pla2FsbGEgPHVscmljaGNAY29yZWwuY29tPgoJQWRkZWQgc3VwcG9ydCBmb3IgbWVtb3J5IG1hcHBpbmcgb2YgNGsgYWxpZ25lZCBQRSBiaW5hcmllcy4gIFRoaXMgY2FuCglzcGVlZCB1cCBsb2FkIHRpbWVzIHNpZ25pZmljYW50bHkgZm9yIHNvbWUgYXBwbGljYXRpb25zLgoKCSogZGxscy9zaGVsbDMyL2Jyc2ZvbGRlci5jLCBkbGxzL3NoZWxsMzIvc2hlbGxndWlkLmMsIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYywgZGxscy9zaGVsbDMyL3NobGZpbGVvcC5jLCBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmMsIGRsbHMvc2hlbGwzMi9zaGxtZW51LmMsIGRsbHMvc2hlbGwzMi9zaGx3YXBpLnNwZWMsIGRsbHMvc2hlbGwzMi9zaHJlcy5yYywgZGxscy9zaGVsbDMyL3NocmVzZGVmLmgsIGRsbHMvc2hlbGwzMi9zaHZfYmdfY21lbnUuYywgaW5jbHVkZS9zaGVsbC5oLCBpbmNsdWRlL3NobG9iai5oLCBpbmNsdWRlL3NobHdhcGkuaCwgaW5jbHVkZS93aW5lL29ial9zaGVsbGJyb3dzZXIuaCwgaW5jbHVkZS93aW5lL3VuZG9jc2hlbGwuaDoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJQ29tcGxldGUgY2xlYW51cCwgYnVnZml4ZXMuCglOZXc6IFBhdGhTdHJpcFBhdGgsIFBhdGhNYWtlVW5pcXVlTmFtZSwgUGF0aFN0cmlwVG9Sb290LAoJUGF0aEdldFNob3J0UGF0aCwgUGF0aFBhcnNlSWNvbkxvY2F0aW9uLCBQYXRoUmVtb3ZlRXh0ZW5zaW9uLAoJUGF0aFJlbW92ZUFyZ3MsIFBhdGhBcHBlbmQsIFBhdGhCdWlsZFJvb3QsIFBhdGhDYW5vbmljYWxpemUsCglQYXRoRmluZE5leHRDb21wb25lbnQsIFBhdGhSZW1vdmVGaWxlU3BlYy4KCgkqIGRsbHMvc2hlbGwzMi9jbGFzc2VzLmMsIGluY2x1ZGUvd2luZS9vYmpfcXVlcnlhc3NvY2lhdGlvbnMuaDoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJU3R1YnMgZm9yIElRdWVyeUFzc29jaWF0aW9ucy4KCgkqIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwgZGxscy9zaGVsbDMyL2RpYWxvZ3MuYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGRsbHMvc2hlbGwzMi9zaHBvbGljeS5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglNb3ZlZCBwb2xpY3kgcmVsYXRlZCBmdW5jdGlvbnMgdG8gc2hwb2xpY3kuYwoJTW92ZWQgZGlhbG9nIHJlbGF0ZWQgZnVuY3Rpb25zIHRvIGRpYWxvZ3MuYwoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJRXhwbGljaXQgaW1wb3J0IHVzZXIzMi5kbGwuCglNYW55IGNvcnJlY3Rpb25zLCBleHBvcnRlZCBzb21lIGZ1bmN0aW9ucyBieSBuYW1lLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9sZS5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglTZXBhcmF0ZWQgMzIgYml0IGZ1bmN0aW9ucyB0byBzaGVsbG9sZS5jLgoKCSogZGxscy9zaGVsbDMyL3BpZGwuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJU21hbGwgZml4ZXMuCgoJKiBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCUZpeGVkOiBleHRyYWN0IHRoZSBpY29uIGJ5IHJlc291cmNlIGlkLgoKCSogZGxscy9zaGVsbDMyL3NobHZpZXcuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJU21hbGwgZml4ZXMuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaDoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJRml4ZXMuCglVc2UgR2V0TW9kdWxlSGFuZGxlQSBpbnN0ZWFkIG9mIExvYWRMaWJyYXJ5IGZvciBkbGxzIGltcG9ydGVkIGJ5Cgl0aGUgc3BlYyBmaWxlLgoKCSogd2luZS5pbmk6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJTWFrZSBXaW5lTG9vaz1XaW45NSB0aGUgZGVmYXVsdCBzZXR0aW5nLgoKCSogZGxscy9kaW5wdXQvZGlucHV0X21haW4uYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglBZGRlZCBsZWF2aW5nIG9mIGNyaXRpY2FsIHNlY3Rpb24gb24gYWxsIHJldHVybiBjYXNlcy4KCgkqIHNjaGVkdWxlci9wdGhyZWFkLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJUmVtb3ZlZCBpbml0X3NlY3QuIFVzZSBJbnRlcmxvY2tlZCogZnVuY3Rpb25zIGluc3RlYWQuCgoJKiBtaXNjL3JlZ2lzdHJ5LmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCVNtYWxsIGZpeGVzLCByZW1vdmVkIGFzc2VydHMuCgoJKiBsaWJ0ZXN0L01ha2VmaWxlLmluLCBwcm9ncmFtcy9jbG9jay9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvY21kbGd0c3QvTWFrZWZpbGUuaW4sIHByb2dyYW1zL25vdGVwYWQvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3Byb2dtYW4vTWFrZWZpbGUuaW4sIHByb2dyYW1zL3ZpZXcvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmhlbHAvTWFrZWZpbGUuaW46CglDaGFuZ2VkIGltcG9ydHMgb2Ygd2luc3Bvb2wgdG8gd2luc3Bvb2wuZHJ2LgoKCSogZGxscy9NYWtlZmlsZS5pbiwgZGxscy91c2VyL01ha2VmaWxlLmluOgoJQWRkZWQgbGlia2V5Ym9hcmQuc28gY3JlYXRpb24uCgoJKiBkbGxzL2NvbWN0bDMyL2hlYWRlci5jLCBpbmNsdWRlL2hlYWRlci5oOgoJTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCS0gUmV0dXJuIG1vZGlmaWVkIHJlY3RhbmdsZSBhZnRlciBsYXlvdXRpbmcgaGVhZGVyIGNvbnRyb2wKCS0gT3V0cHV0IHRleHQgaW4gaGVhZGVyIGNvbnRyb2wgd2hlbiBubyBvdGhlciBGbGFnIHNwZWNpZmllZAoJLSBEZWxheSBib3VuZGluZyByZWN0YW5nbGUgY2FsY3VsYXRpb24gZm9yIGhlYWRlciBjb250cm9sIGl0ZW1zCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJSW1wbGVtZW50ZWQgVE9PTEJBUl9Nb3VzZUxlYXZlIHRvIGhhbmRsZSBXTV9NT1VTRUxFQVZFIG1lc3NhZ2VzLgoJQWRkZWQgVHJhY2tNb3VzZUV2ZW50IGNhbGxzIHRvIFRPT0xCQVJfTW91c2VNb3ZlLiAgSG90IGJ1dHRvbnMgbm93Cglsb29rL2JlaGF2ZSBhbG1vc3QgZXhhY3RseSB0aGUgc2FtZSBhcyBuYXRpdmUgd2luZG93cy4KCgkqIHdpbmRvd3Mvc3lzcGFyYW1zLmM6IENocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJQWRkZWQgZGVmYXVsdCB2YWx1ZXMgZm9yIFNQSV9HRVRNT1VTRUhPVkVSSEVJR0hULCBTUElfR0VUTU9VU0VIT1ZFUldJRFRIIGFuZAoJU1BJX0dFVE1PVVNFSE9WRVJUSU1FIHRvIFN5c3RlbVBhcmFtZXRlcnNJbmZvMTYoKS4KCgkqIG1pc2MvY29tbS5jOiBSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJSW1wbGVtZW50IG1hcmsgYW5kIHNwYWNlIHBhcml0eSBnZW5lcmF0aW9uLiBBY2NlcHQgb25lLWFuZC0gYS1oYWxmCglzdG9wYml0czogdGhlIG1vc3QgY29tbW9uIHVhcnRzIHdpbGwgZ2VuZXJhdGUgdGhpcyBhdXRvbWF0aWNhbGx5IHdoZW4KCXRoZXJlIGFyZSA1IGRhdGFiaXRzLgoKCSogc2NoZWR1bGVyL3B0aHJlYWQuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglPdmVycmlkZSBmb3JrKCkuCgoJKiBkZWJ1Z2dlci9kZWJ1Z2dlci5oLCBpbmNsdWRlL2hlYXAuaCwgbWVtb3J5L2hlYXAuYzoKCURpbWl0cmllIE8uIFBhdW4gPGRpbWlAY3MudG9yb250by5lZHU+CglHZXQgcmlkIG9mIEhFQVBfeHJlYWxsb2MuCgoyMDAwLTA0LTI1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogTWFrZS5ydWxlcy5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvZGRyYXcvTWFrZWZpbGUuaW46CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUNvbXBpbGUgZml4IGZvciAtLXdpdGhvdXQteC4KCgkqIGxvYWRlci9tYWluLmMsIHdpbmUuaW5pOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglBZGRlZCBuZXcgY29uZmlndXJhdGlvbiBmaWxlIG9wdGlvbiBmb3Igc2VsZWN0aW5nIGdyYXBoaWNzIGRyaXZlci4KCgkqIGRsbHMvdHR5ZHJ2L01ha2VmaWxlLmluOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglMaW5rIHRoZSBUVFkgZHJpdmVyIHdpdGggdGhlIHN0YW5kYXJkIGxpYnMuCgoJKiBNYWtlLnJ1bGVzLmluLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2NvbW1kbGcvTWFrZWZpbGUuaW4sIGRsbHMvd2luc3Bvb2wvLmN2c2lnbm9yZSwgZGxscy93aW5zcG9vbC9NYWtlZmlsZS5pbjoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgd2luc3Bvb2woLmRydikgbG9hZGluZy4KCgkqIHdpbmRvd3MveDExZHJ2L2NsaXBib2FyZC5jLCB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCB3aW5kb3dzL3gxMWRydi9pbml0LmMsIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmMsIHdpbmRvd3MveDExZHJ2L21vdXNlLmMsIHdpbmRvd3MveDExZHJ2L3duZC5jLCBncmFwaGljcy94MTFkcnYvYml0Ymx0LmMsIGdyYXBoaWNzL3gxMWRydi9iaXRtYXAuYywgZ3JhcGhpY3MveDExZHJ2L2JydXNoLmMsIGdyYXBoaWNzL3gxMWRydi9jbGlwcGluZy5jLCBncmFwaGljcy94MTFkcnYvZGliLmMsIGdyYXBoaWNzL3gxMWRydi9ncmFwaGljcy5jLCBncmFwaGljcy94MTFkcnYvaW5pdC5jLCBncmFwaGljcy94MTFkcnYvb2JqZWN0cy5jLCBncmFwaGljcy94MTFkcnYvb2VtYml0bWFwLmMsIGdyYXBoaWNzL3gxMWRydi9wYWxldHRlLmMsIGdyYXBoaWNzL3gxMWRydi9wZW4uYywgZ3JhcGhpY3MveDExZHJ2L3RleHQuYywgZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsIGluY2x1ZGUvdHNfeGY4NmRnYS5oLCBpbmNsdWRlL3RzX3hmODZkZ2EyLmgsIGluY2x1ZGUvdHNfeGY4NnZtb2RlLmgsIGluY2x1ZGUvdHNfeGxpYi5oLCBpbmNsdWRlL3RzX3hwbS5oLCBpbmNsdWRlL3RzX3hyZXNvdXJjZS5oLCBpbmNsdWRlL3RzX3hzaG0uaCwgaW5jbHVkZS90c194dXRpbC5oLCBpbmNsdWRlL3gxMWRydi5oLCB0b29scy9tYWtlX1gxMXdyYXBwZXJzLCB0c3gxMS90c194Zjg2ZGdhLmMsIHRzeDExL3RzX3hmODZkZ2EyLmMsIHRzeDExL3RzX3hmODZ2bW9kZS5jLCB0c3gxMS90c194bGliLmMsIHRzeDExL3RzX3hwbS5jLCB0c3gxMS90c194cmVzb3VyY2UuYywgdHN4MTEvdHNfeHNobS5jLCB0c3gxMS90c194dXRpbC5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglSZW1vdmVkIFhfRElTUExBWV9NSVNTSU5HLgoKCSogZGVidWdnZXIvdHlwZXMuYywgZGVidWdnZXIvbXNjLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUltcHJvdmVkIENvZGVWaWV3IHR5cGUgaW5mb3JtYXRpb24gbG9hZGVyLgoKCSogZGxscy9jb21tZGxnL2NvbG9yZGxnLmM6CglHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCURvbid0IHVzZSB0aGUgdGVtcGxhdGUgbWVtYmVyIHVubGVzcyB0aGUgY29ycmVzcG9uZGluZyBmbGFnIGlzIHNldC4KCjIwMDAtMDQtMjQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBMSUNFTlNFLCBXQVJSQU5UWToKCVN3aXRjaGVkIHRvIHRoZSBYMTEgbGljZW5zZS4KCgkqIHNlcnZlci9yZWdpc3RyeS5jLCBpZjE2MzIvcmVsYXkuYywgbWlzYy9kZGVtbC5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIHdhcm5pbmdzLgoKCSogZGxscy93aW5pbmV0L01ha2VmaWxlLmluLCBkbGxzL3dpbmluZXQvd2luaW5ldC5zcGVjLCBkbGxzL3dpbmluZXQvd2luaW5ldF9tYWluLmMsIGRsbHMvY29tY3RsMzIvY29tY3RsMzIuc3BlYywgZGxscy9jb21jdGwzMi9jb21tY3RybC5jLCBkbGxzL2RpbnB1dC9kaW5wdXQuc3BlYywgZGxscy9kaW5wdXQvZGlucHV0X21haW4uYywgZGxscy9kcGxheXgvZHBjbGFzc2ZhY3RvcnkuYywgZGxscy9kcGxheXgvZHBsYXl4LnNwZWMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZGxscy91cmxtb24vTWFrZWZpbGUuaW4sIGRsbHMvdXJsbW9uL3VybG1vbi5zcGVjLCBkbGxzL3VybG1vbi91cmxtb25fbWFpbi5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBpc3N1ZXMgZm91bmQgYnkgd2luYXBpX2NoZWNrLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL3dpbjE2L3dwcm9jcy5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9kaW5wdXQuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIva2VybmVsMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvdXJsbW9uLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3dpbmluZXQuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2Z1bmN0aW9uLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2xvY2FsLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX29wdGlvbnMucG0sIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLmRhdCwgdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGkucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfY2hlY2s6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gVXBkYXRlZCBBUEkgZmlsZXMuCgktIEltcHJvdmVkIG1pc3BsYWNlZCBmdW5jdGlvbiBjaGVja2luZy4KCS0gRml4ZWQgbWlub3IgYnVncy4KCgkqIGluY2x1ZGUvd2lubnQuaDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglJbmNsdWRlIHN0cmluZy5oIHRvIG1ha2Ugd2lubnQuaCBzZWxmLXN1ZmZpY2llbnQuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2x0aXBzLmM6IFBhdHJpY2sgWWFuZyAoQ29yZWwpCglpbmZvUHRyIHNvbWV0aW1lcyBjYW4gYmUgTlVMTC4KCgkqIGRsbHMvY29tbWRsZy9jZGxnX0NhLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19Dcy5yYywgZGxscy9jb21tZGxnL2NkbGdfRGEucmMsIGRsbHMvY29tbWRsZy9jZGxnX0RlLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19Fbi5yYywgZGxscy9jb21tZGxnL2NkbGdfRW8ucmMsIGRsbHMvY29tbWRsZy9jZGxnX0VzLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19GaS5yYywgZGxscy9jb21tZGxnL2NkbGdfRnIucmMsIGRsbHMvY29tbWRsZy9jZGxnX0h1LnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19JdC5yYywgZGxscy9jb21tZGxnL2NkbGdfSmEucmMsIGRsbHMvY29tbWRsZy9jZGxnX0tvLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19ObC5yYywgZGxscy9jb21tZGxnL2NkbGdfTm8ucmMsIGRsbHMvY29tbWRsZy9jZGxnX1BsLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19QdC5yYywgZGxscy9jb21tZGxnL2NkbGdfUnUucmMsIGRsbHMvY29tbWRsZy9jZGxnX1NrLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19Tdi5yYywgZGxscy9jb21tZGxnL2NkbGdfV2EucmMsIGRsbHMvY29tbWRsZy9jb2xvcmRsZy5jLCBpbmNsdWRlL2NvbW1kbGcuaDoKCUdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJMzIgYml0cyBtZXNzYWdlIHByb2Nlc3NpbmcgZm9yIGNvbG9yIGRpYWxvZy4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jLCBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmM6CglNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJRml4ZWQgdG9vbGJhciBiaXRtYXAgc2l6ZSBoYW5kbGluZy4KCgkqIGNvbmZpZ3VyZS5pbiwgY29uZmlndXJlOgoJUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCUNvcnJlY3QgdGVzdCBmb3IgbGludXggMi4yIGpveXN0aWNrIEFQSSwgd2hpY2ggcmV0dXJuZWQgdHJ1ZSBpbiBldmVyeQoJY2FzZS4KCgkqIGRsbHMvdmVyc2lvbi9pbnN0YWxsLmMsIGdyYXBoaWNzL3gxMWRydi9iaXRtYXAuYywgaW5jbHVkZS94bWFsbG9jLmgsIG1pc2MvTWFrZWZpbGUuaW4sIG1pc2MveG1hbGxvYy5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZGltaUBjcy50b3JvbnRvLmVkdT4KCVJlbW92ZWQgdGhlIGxhc3QgeG1hbGxvYyBjYWxscy4KCgkqIHByb2dyYW1zL3dpbnZlci9NYWtlZmlsZS5pbiwgcmVsYXkzMi9idWlsdGluMzIuYywgcHJvZ3JhbXMvY21kbGd0c3QvTWFrZWZpbGUuaW4sIHByb2dyYW1zL2NvbnRyb2wvTWFrZWZpbGUuaW4sIHByb2dyYW1zL25vdGVwYWQvTWFrZWZpbGUuaW4sIHByb2dyYW1zL29zdmVyc2lvbmNoZWNrL01ha2VmaWxlLmluLCBwcm9ncmFtcy9wcm9nbWFuL01ha2VmaWxlLmluLCBwcm9ncmFtcy9yZWdhcGkvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3JlZ3Rlc3QvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3ZpZXcvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3djbWQvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmVtaW5lL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5oZWxwL01ha2VmaWxlLmluLCBkbGxzL2NvbW1kbGcvY29tZGxnMzIuc3BlYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGRsbHMveDExZHJ2L01ha2VmaWxlLmluLCBpZjE2MzIvYnVpbHRpbi5jLCBpbmNsdWRlL21vZHVsZS5oLCBsaWJ0ZXN0L01ha2VmaWxlLmluLCBsaWJ0ZXN0L2hlbGxvM3Jlcy5yYywgcHJvZ3JhbXMvYXZpdG9vbHMvTWFrZWZpbGUuaW4sIHByb2dyYW1zL2Nsb2NrL01ha2VmaWxlLmluLCBjb25maWd1cmUuaW4sIGRlYnVnZ2VyL01ha2VmaWxlLmluLCBkbGxzL01ha2VkbGwucnVsZXMuaW4sIGRsbHMvTWFrZWZpbGUuaW4sIHdpbmUuaW5pLCAuY3ZzaWdub3JlLCBNYWtlLnJ1bGVzLmluLCBNYWtlZmlsZS5pbiwgY29uZmlndXJlOgoJSW1wbGVtZW50ZWQgb24tZGVtYW5kIGxvYWRpbmcgb2YgYnVpbHRpbiBkbGxzIHVzaW5nIGRsb3BlbigpLgoKMjAwMC0wNC0yMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIE1ha2VmaWxlLmluLCBkbGxzL3gxMWRydi9NYWtlZmlsZS5pbjoKCUJ1aWxkIHdpbmVjbGlwc3J2IGFzIHBhcnQgb2YgdGhlIHgxMWRydiBkbGwuCgoJKiBkbGxzL2NvbW1kbGcvTWFrZWZpbGUuaW4sIGRsbHMvY29tbWRsZy9jZGxnLmgsIGRsbHMvY29tbWRsZy9jZGxnMzIuYywgZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZ2Jyb3dzZXIuYywgZGxscy9jb21tZGxnL3ByaW50ZGxnLmMsIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwgZGxscy9zaGVsbDMyL3NobHZpZXcuYzoKCVJlbW92ZWQgYSBmZXcgaW50ZXItZGxsIGRlcGVuZGVuY2llcy4KCgkqIHdpbmRvd3MvcGFpbnRpbmcuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCU1ha2UgUkRXX1ZhbGlkYXRlUGFyZW50KCkgbW9kaWZ5IHRoZSB1cGRhdGUgcmVnaW9uIG9mIGFsbCBwYXJlbnRzLCBub3QKCWp1c3QgdGhlIGRpcmVjdCBwYXJlbnQuCgoJKiByZWxheTMyL3Nub29wLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglTTk9PUF9QcmludEFyZzogcmVwbGFjZWQgSXNCYWQqIGZ1bmN0aW9ucyBieSBleGNlcHRpb24gaGFuZGxlci4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglBZGRlZCAtLXdpdGhvdXQtY3Vyc2VzIGNvbXBpbGUgb3B0aW9uLgoKCSogc2NoZWR1bGVyL3B0aHJlYWQuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglBZGRlZCBzb21lIG1vcmUgcHRocmVhZCBvdmVycmlkZXMuCgoJKiB3aW5lZGVmYXVsdC5yZWc6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRml4ZWQgZGVidWdnZXIgcmVnaXN0cnkga2V5IGxvY2F0aW9uLgoKCSogaW5jbHVkZS9kZGVtbC5oOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCVVzZSBERUNMQVJFX0hBTkRMRSB0byBkZWNsYXJlIGhhbmRsZXMuCgoJKiBpbmNsdWRlL3dpbmRlZi5oOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCURFQ0xBUkVfSEFORExFIHNob3VsZCBub3QgYmUgdW5kZWYnZWQgYWZ0ZXIgdXNlLgoKCSogY29udHJvbHMvZWRpdC5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUZpeCBlZGl0IGNvbnRyb2wncyBXTV9HRVRURVhUIGJlaGF2aW91ci4KCgkqIG1pc2MvY29tbS5jOiBHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCURvIG5vdCBpbml0aWFsaXplIGRjYiBpbiBCdWlsZENvbW1EQ0JbQW5kVGltZW91dHNdLgoKCSogaW5jbHVkZS9jYXNlbWFwLmgsIHRvb2xzL3VuaW1hcC5wbDoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJQWRhcHRlZCB1bmltYXAucGwgc2NyaXB0IGFuZCBnZW5lcmF0ZWQgYnkgaXQgY2FzZW1hcC5oIHRvIHRoZSBVbmljb2RlCglTdGFuZGFyZCwgVmVyc2lvbiAzLjAuCgoJKiB3aW5kb3dzL2RpYWxvZy5jOiBHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCUNoZWNrIGlmIGRpYWxvZyBpcyB2aXNpYmxlIGJlZm9yZSBzZXR0aW5nIHRoZSBmb2N1cy4KCgkqIHdpbmRvd3MvZGVmd25kLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCVJlbW92ZWQgdGhlIGxvbmdzdGFuZGluZyBoYWNrIGluIHJlc3BvbnNlIHRvIFdNX0FDVElWQVRFIG1lc3NhZ2UuCgoJKiBpbmNsdWRlL3dpbnVzZXIuaDoKCU1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CglGaXhlZCBHZXROdW1iZXJGb3JtYXQgZGVjbGFyYXRpb24uCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJSmFtZXMgQWJiYXRpZWxsbyA8YWJiZXlqQHdwaS5lZHU+CglSZWRyYXcgdG9vbGJhciBidXR0b24gaW5zaWRlIFRPT0xCQVJfRW5hYmxlQnV0dG9uKCkgb25seSBpZiB0aGUgc3RhdGUKCW9mIHRoZSBidXR0b24gY2hhbmdlcy4gIFN0b3BzIGZsaWNrZXJpbmcgaW4gdG9vbGJhcnMgY2F1c2VkIGJ5CglleGNlc3NpdmUgcmVkcmF3aW5nLgoKCSogZGxscy93aW5pbmV0L2ludGVybmV0LmMsIGRsbHMvd2luaW5ldC93aW5pbmV0LnNwZWM6CglHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCVN0dWIgZm9yIEludGVybmV0R2V0Q29ubmVjdGVkU3RhdGUuCgoJKiBpbmNsdWRlL3dpbmJhc2UuaDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglGaXhlZCBHZXRQcm9jZXNzSGVhcCgpIGZvciB0aGUgU1RSSUNUIG1vZGUuCgoJKiBkbGxzL2RkcmF3L21haW4uYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWxzbyBjaGVjayBmb3IgZW1wdHkgR1VJRCBpbiBEaXJlY3REcmF3Q3JlYXRlLgoKMjAwMC0wNC0xOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvdmVyc2lvbi92ZXJzaW9uLnNwZWMsIGRsbHMvd2lubW0vam95c3RpY2svam95c3RpY2suc3BlYywgZGxscy93aW5tbS9tY2lhbmltL21jaWFuaW0uc3BlYywgZGxscy93aW5tbS9tY2lhdmkvbWNpYXZpLnNwZWMsIGRsbHMvd2lubW0vbWNpY2RhL21jaWNkYS5zcGVjLCBkbGxzL3dpbm1tL21jaXNlcS9tY2lzZXEuc3BlYywgZGxscy93aW5tbS9tY2l3YXZlL21jaXdhdmUuc3BlYywgZGxscy93aW5tbS9taWRpbWFwL21pZGltYXAuc3BlYywgZGxscy93aW5tbS93YXZlbWFwL21zYWNtLnNwZWMsIGRsbHMvd2lubW0vd2luZW9zcy93aW5lb3NzLnNwZWMsIGRsbHMvYXZpZmlsMzIvYXZpZmlsMzIuc3BlYywgZGxscy9jb21tZGxnL2NvbWRsZzMyLnNwZWMsIGRsbHMvZGRyYXcvZGRyYXcuc3BlYywgZGxscy9kcGxheXgvZHBsYXl4LnNwZWMsIGRsbHMvbXN2aWRlby9tc3ZmdzMyLnNwZWMsIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzIuc3BlYywgZGxscy9vbGVjbGkvb2xlY2xpMzIuc3BlYywgZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYywgZGxscy91cmxtb24vdXJsbW9uLnNwZWM6CglBZGRlZCBzb21lIG1pc3NpbmcgaW1wb3J0IGRpcmVjdGl2ZXMuCgoJKiBkbGxzL29sZWF1dDMyL01ha2VmaWxlLmluLCBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW4sIGRsbHMvY29tY3RsMzIvTWFrZWZpbGUuaW4sIGRsbHMvY29tbWRsZy9NYWtlZmlsZS5pbjoKCVJlbW92ZWQgd2lubW0gZnJvbSBpbXBvcnQgbGlzdC4KCgkqIGRsbHMvY29tY3RsMzIvYW5pbWF0ZS5jLCBpbmNsdWRlL2FuaW1hdGUuaDoKCVVzZSBHZXRQcm9jQWRkcmVzcyBmb3IgbW1pbyogZnVuY3Rpb25zIHRvIGF2b2lkIGltcG9ydGluZyB3aW5tbS5kbGwuCgoJKiBwcm9ncmFtcy93Y21kL2J1aWx0aW5zLmMsIHByb2dyYW1zL3djbWQvd2NtZC5zcGVjOgoJRml4ZWQgcmVzb3VyY2UgbG9hZGluZy4KCgkqIHRvb2xzL2N2ZHVtcC9jdmNydW5jaC5jLCB0b29scy9jdmR1bXAvY3ZkdW1wLmMsIHRvb2xzL2N2ZHVtcC9jdmluY2x1ZGUuaCwgdG9vbHMvY3ZkdW1wL2N2bG9hZC5jOgoJSm9obiBSLiBTaGVldHMgPGpzaGVldHNAY29kZXdlYXZlcnMuY29tPgoJTWlub3IgY2xlYW51cHMsIHBsdXMgZml4ZWQgYSBjb3VwbGUgYnVncyBpbiAuREJHIHBhcnNpbmcgY29kZS4KCUFkZGVkIGR1bXAgZm9yIE1JU0Mgc2VjdGlvbi4KCgkqIHdpbmVkZWZhdWx0LnJlZzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJQWRkZWQgRGlyZWN0UGxheSByZWdpc3RyeSBrZXlzIHRvIHdpbmVkZWZhdWx0LnJlZy4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzoKCVN0ZXBoYW5lIEx1c3NpZXIgPHN0ZXBoYW5lQG1hY2FkYW1pYW4uY29tPgoJTW91c2V3aGVlbCBzdXBwb3J0LgoKMjAwMC0wNC0xOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHRvb2xzL2N2ZHVtcC9jdmNydW5jaC5jLCB0b29scy9jdmR1bXAvY3ZkdW1wLmgsIHRvb2xzL2ZudDJiZGYuYywgaW5jbHVkZS9pbWFnZWhscC5oLCBpbmNsdWRlL25lZXhlLmgsIGluY2x1ZGUvcGVfaW1hZ2UuaCwgaW5jbHVkZS9wZWV4ZS5oLCBpbmNsdWRlL3dpbm50LmgsIGxvYWRlci9kb3MvbW9kdWxlLmMsIGxvYWRlci9lbGYuYywgbG9hZGVyL21vZHVsZS5jLCBsb2FkZXIvbmUvbW9kdWxlLmMsIGxvYWRlci9wZV9pbWFnZS5jLCBsb2FkZXIvdGFzay5jLCByZWxheTMyL2J1aWx0aW4zMi5jLCByZWxheTMyL3Nub29wLmMsIGRlYnVnZ2VyL2RiZ21haW4uYywgZGVidWdnZXIvbW9kdWxlLmMsIGRlYnVnZ2VyL21zYy5jLCBkZWJ1Z2dlci90eXBlcy5jLCBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmMsIGRsbHMvc2hlbGwzMi9zaGVsbC5jLCBkbGxzL3ZlcnNpb24vcmVzb3VyY2UuYzoKCU1vdmVkIFBFIGhlYWRlciBkZWZpbml0aW9ucyB0byB3aW5udC5oIHdoZXJlIHRoZXkgYmVsb25nLgoKCSogd2luZG93cy94MTFkcnYvZXZlbnQuYywgY29udHJvbHMvY29tYm8uYywgY29udHJvbHMvZWRpdC5jLCBjb250cm9scy9saXN0Ym94LmMsIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYywgaW5jbHVkZS9tb3VzZS5oLCBpbmNsdWRlL3dpbnVzZXIuaCwgd2luZG93cy9pbnB1dC5jLCB3aW5kb3dzL3NweS5jOgoJU3RlcGhhbmUgTHVzc2llciA8c3RlcGhhbmVAbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRlZCBNb3VzZXdoZWVsIHN1cHBvcnQuCgoJKiBkbGxzL3dpbnNvY2svYXN5bmMuYzoKCVJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglDb252ZXJ0IHNlcnZpY2UgYW5kIHByb3RvY29sIG5hbWVzIHRvIGxvd2VyY2FzZSBiZWZvcmUgY2FsbGluZwoJZ2V0c2VydmJ5e25hbWV8cG9ydH0gYW5kIGdldHByb3RvYnl7bmFtZXxwb3J0fS4KCgkqIG9iamVjdHMvcmVnaW9uLmM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglGaXggcmV0dXJuIHZhbHVlIGZvciBPZmZzZXRSZ24gaWYgeCBhbmQgeSBhcmUgMC4KCgkqIGdyYXBoaWNzL3BhdGguYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUltcGxlbWVudCBTdHJva2VBbmRGaWxsUGF0aC4KCUNhbGwgRGVsZXRlT2JqZWN0IHdoZW4gZmluaXNoZWQgd2l0aCBocmduIGluIFBBVEhfRmlsbFBhdGguCgoJKiBpbmNsdWRlL3dpbmluZXQuaDoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUZpeGVkIHR5cG8uCgoJKiBncmFwaGljcy9lbmhtZXRhZmlsZWRydi9vYmplY3RzLmM6CglTaGVyaSBTdGVldmVzIDxzaGVyaUBtYWNhZGFtaWFuLmNvbT4KCUVNUl9TRUxFQ1RPQkpFQ1QgcmVjb3JkcyBzdG9jayBvYmplY3RzIHdpdGggdGhlaXIgaWQgYXMgdGhlIG9iamVjdAoJaGFuZGxlIGFuZCB0aGUgaGlnaCBiaXQgc2V0LgoKCSogb2JqZWN0cy9lbmhtZXRhZmlsZS5jOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJVGlkeSB1cCBvZiBQbGF5RW5oTWV0YUZpbGVSZWNvcmQgLSBmaXhlcyBQb2x5UG9seSogZnVuY3Rpb25zLgoKMjAwMC0wNC0xNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNlcnZlci9yZWdpc3RyeS5jOgoJUmVtb3ZlZCBwZXJtaXNzaW9uIGNoZWNrcyBpbiBjcmVhdGVfa2V5IGFuZCBkZWxldGVfa2V5LiBJdCBzZWVtcwoJV2luZG93cyBkb2Vzbid0IGNoZWNrIGFueXRoaW5nLgoKCSogbG9hZGVyL3Jlc291cmNlLmM6CglSaWNoYXJkIENvaGVuIDxyaWNoYXJkQGp1Ymp1Yi5kZW1vbi5jby51az4KCVdyYXAgYW4gZXhjZXB0aW9uIGhhbmRsZXIgYXJvdW5kIEZpbmRSZXNvdXJjZS4KCgkqIHByb2dyYW1zL3JlZ3Rlc3QvcmVndGVzdC5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQ29ycmVjdGVkIFdpbk1haW4uCglBZGRlZCB0ZXN0IGNhc2UgZm9yIFJlZ0NyZWF0ZUtleUV4IHNob3dpbmcgd2luOTUgYmVoYXZpb3VyLgoKCSogZGVidWdnZXIvZGJnLnksIGRlYnVnZ2VyL2RlYnVnLmwsIGRlYnVnZ2VyL2RlYnVnZ2VyLmgsIGRlYnVnZ2VyL2luZm8uYzoKCUltcGxlbWVudGVkICd3YWxrIHByb2Nlc3MnIGFuZCAnd2FsayB0aHJlYWRzJyBjb21tYW5kcyB1c2luZyB0b29saGVscAoJc25hcHNob3RzLgoKCSogaW5jbHVkZS9zZXJ2ZXIuaCwgaW5jbHVkZS90bGhlbHAzMi5oLCBpbmNsdWRlL3Rvb2xoZWxwLmgsIG1pc2MvdG9vbGhlbHAuYywgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3Byb2Nlc3MuaCwgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3NuYXBzaG90LmMsIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RocmVhZC5oLCBzZXJ2ZXIvdHJhY2UuYzoKCUltcGxlbWVudGVkIHRocmVhZCBhbmQgKHBhcnRpYWwpIG1vZHVsZSBzbmFwc2hvdHMsIGJhc2VkIG9uIHRoZSB3b3JrCglvZiBBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4uCgoJKiBzZXJ2ZXIvbWFpbi5jLCBzZXJ2ZXIvcmVnaXN0cnkuYywgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3RyYWNlLmMsIGRvY3VtZW50YXRpb24vd2luZS5jb25mLm1hbi5pbiwgaW5jbHVkZS9zZXJ2ZXIuaCwgaW5jbHVkZS9zaGVsbC5oLCBsb2FkZXIvbWFpbi5jLCBtaXNjL3JlZ2lzdHJ5LmMsIHdpbmUuaW5pOgoJU2F2ZSB0aGUgcmVnaXN0cnkgb24gc2VydmVyIGV4aXQgd2l0aG91dCBjbGllbnQgaW50ZXJ2ZW50aW9uLgoJUmVtb3ZlZCAiYWx0IiByZWdpc3RyeSBmaWxlcyBzaW5jZSB3ZSBub3cgaGF2ZSBzeW1saW5rcyBhbmQKCVdJTkVQUkVGSVggdG8gcmVwbGFjZSB0aGVtLgoKCSogaW5jbHVkZS90c194bGliLmgsIHRzeDExL1gxMV9jYWxscywgdHN4MTEvdHNfeGxpYi5jLCB3aW5kb3dzL3gxMWRydi9ldmVudC5jOgoJU3RlcGhhbmUgTHVzc2llciA8c3RlcGhhbmVAbWFjYWRhbWlhbi5jb20+CglTdXBwb3J0IHN3aXRjaGluZyB0aGUga2V5Ym9hcmQgbGF5b3V0IHdpdGggV0lORSBydW5uaW5nLgoKCSogZGxscy9jcnRkbGwvY3J0ZGxsX21haW4uYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCWZnZXRzOiBEb24ndCBzd2FsbG93IFxuLCB0cmVhdCBFT0YKCWZlb2Y6IENydWRlIGltcGxlbWVudGF0aW9uCglzaWduYWw6IFJldHVybiBlcnJvcgoKCSogd2luZWRlZmF1bHQucmVnOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQWRkIG1pc3NpbmcgYmFja3NsYXNoIGluIHRoZSBkZWJ1Z2dlciBkZWZpbml0aW9uLgoKCSogd2luMzIvdGltZS5jOiBSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJU2V0TG9jYWxUaW1lKCkgYW5kIFNldFN5c3RlbVRpbWUoKSBidWdmaXhlcy4gQWRkZWQgYSBtYXhpbXVtIGNsb2NrCglhZGp1c3RtZW50IG9mIDIgbWludXRlcyBqdXN0IGluIGNhc2UuLi4KCgkqIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCURTT1VORF9NaXhlck5vcm06IGRvIG5vdCBjb21wYXJlIHVucmVsYXRlZCBwb2ludGVycy4KCjIwMDAtMDQtMTUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBsb2FkZXIvbW9kdWxlLmM6CglSZXdyb3RlIGNvbW1hbmQtbGluZSBwYXJzaW5nIG9mIENyZWF0ZVByb2Nlc3NBIHRvIGJlIG1vcmUgY29tcGF0aWJsZS4KCgkqIHByb2dyYW1zL3dpbmhlbHAvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbnZlci9NYWtlZmlsZS5pbiwgcmVsYXkzMi9idWlsdGluMzIuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2NoZWR1bGVyL3RocmVhZC5jLCB0b29scy9idWlsZC5jLCBwcm9ncmFtcy9jbWRsZ3RzdC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvY29udHJvbC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvbm90ZXBhZC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvb3N2ZXJzaW9uY2hlY2svTWFrZWZpbGUuaW4sIHByb2dyYW1zL29zdmVyc2lvbmNoZWNrL29zdmVyc2lvbmNoZWNrLmMsIHByb2dyYW1zL29zdmVyc2lvbmNoZWNrL29zdmVyc2lvbmNoZWNrLnNwZWMsIHByb2dyYW1zL3Byb2dtYW4vTWFrZWZpbGUuaW4sIHByb2dyYW1zL3JlZ2FwaS9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvcmVndGVzdC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvdmlldy9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2NtZC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2NtZC93Y21kLnNwZWMsIHByb2dyYW1zL3djbWQvd2NtZG1haW4uYywgcHJvZ3JhbXMvd2luZW1pbmUvTWFrZWZpbGUuaW4sIGRlYnVnZ2VyL01ha2VmaWxlLmluLCBpbmNsdWRlL2NhbGxiYWNrLmgsIGluY2x1ZGUvbWFpbi5oLCBpbmNsdWRlL21vZHVsZS5oLCBpbmNsdWRlL3RocmVhZC5oLCBsaWJ0ZXN0L01ha2VmaWxlLmluLCBsb2FkZXIvbWFpbi5jLCBsb2FkZXIvbW9kdWxlLmMsIGxvYWRlci9wZV9pbWFnZS5jLCBtaXNjL29wdGlvbnMuYywgcHJvZ3JhbXMvYXZpdG9vbHMvTWFrZWZpbGUuaW4sIHByb2dyYW1zL2Nsb2NrL01ha2VmaWxlLmluLCBNYWtlLnJ1bGVzLmluOgoJSW1wcm92ZWQgV2luZWxpYiBhcHBzIGluaXRpYWxpc2F0aW9uIGNvZGUuIE5vIGxvbmdlciBuZWVkIHRvIGxpbmsKCXdpbmVzdHViLm8gd2l0aCBXaW5lbGliIGFwcHMuCgoJKiBpbmNsdWRlL3dpbmUvd2luYmFzZTE2LmgsIHJlbGF5MzIvdXR0aHVuay5jLCBkbGxzL2RpbnB1dC9kaW5wdXRfbWFpbi5jLCBkbGxzL2RwbGF5eC9kcGxheXguc3BlYywgZGxscy9pY21wL2ljbXBfbWFpbi5jLCBkbGxzL250ZGxsL29tLmMsIGRsbHMvc2hlbGwzMi9zaGx3YXBpLnNwZWMsIGRsbHMvd2luODdlbS9lbXVsYXRlLmMsIGRsbHMvd2luaW5ldC9mdHAuYywgZGxscy93aW5pbmV0L2ludGVybmV0LmMsIGRsbHMvd2lubW0vbWNpYW5pbS9tY2lhbmltLmMsIGdyYXBoaWNzL3R0eWRydi9wYWxldHRlLmMsIGRsbHMvZGRyYXcvbWFpbi5jLCBkbGxzL2RkcmF3L3gxMS5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIGlzc3VlcyByZXBvcnRlZCBieSB3aW5hcGlfY2hlY2suCgoJKiB0b29scy93aW5hcGlfY2hlY2svKjoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBBUEkgZmlsZXMgdXBkYXRlLgoJLSBBZGQgbmV3IG9wdGlvbnMgLS1hbGwgYW5kIC0tbm9uZSB0aGF0IGVuYWJsZS9kaXNhYmxlcyBhbGwgY2hlY2sKCSAgcmVzcGVjdGl2ZWx5LgoJLSBGaXhlZCBhbmQgaW1wcm92ZWQgc3R1YiBzdGF0aXN0aWNzLgoJLSBGaXhlZCBidWcgdGhhdCBwcmV2ZW50ZWQgY2hlY2tpbmcgb2YgdGhlIGZpcnN0IGZ1bmN0aW9uIGluIHRoZSAuc3BlYyBmaWxlcy4KCS0gUGFydGlhbCBpbXBsZW1lbnRhdGlvbiBvZiBhIG1vcmUgYWR2YW5jZWQgbWlzcGxhY2VkIGZ1bmN0aW9uIGNoZWNraW5nLgoJLSBNaW5vciBmaXhlcy4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCUltcGxlbWVudCBDQ1NfTk9NT1ZFWSBmb3IgdG9vbCBiYXJzLgoKCSogdG9vbHMvd2luZWluc3RhbGw6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJU3ltbGluayByb290J3MgcmVnaXN0cnkgdG8gZ2xvYmFsIHJlZ2lzdHJ5LiBNaW5vciBjbGVhbnVwcy4KCgkqIG9sZS9vbGUybmxzLmM6IE93ZW4gV2FuZyA8b3dlbndAY29yZWwuY2E+CglBZGRlZCBmdXJ0aGVyIGltcGxlbWVudGF0aW9uIG9mIFdJTkFQSSBFbnVtRGF0ZUZvcm1hdHMoKSB0byBzdXBwb3J0Cgl0aHJlZSBtb3JlIGxvY2FsZXM6IEdlcm1hbihzdGFuZGFyZCksIEZyZW5jaChzdGFuZGFyZCkgYW5kIEZyZW5jaAoJKGNhbmFkaWFuKS4gQWxsIGRhdGUgZm9ybWF0cyBmb2xsb3cgY29udmVudGlvbnMgZnJvbSBXaW5kb3dzIE5UIDQuMAoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOgoJU2VyZ2UgSXZhbm92IDxzZXJnZWlAY29yZWwuY2E+CglBZGRlZCBwcm9wZXIgaGFuZGxpbmcgVFZJU19PVkVSTEFZTUFTSyBmbGFnIGFuZCBhbGxvd3MgdG8gZGlzcGxheQoJb3ZlcmxheSBpbWFnZXMuIEZpeGVkIG9mZiBieSBvbmUgZXJyb3Igd2l0aCBsaXN0aXRlbSBpbgoJVFJFRVZJRVdfSW5zZXJ0SXRlbUEgKHVOdW1JdGVtcyBpcyAwIGJhc2VkLCBjQ2hpbGRyZW4gaXMgYSBjb3VudCkuCgoyMDAwLTA0LTE0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS90aHJlYWQuaCwgc2NoZWR1bGVyL01ha2VmaWxlLmluLCBzY2hlZHVsZXIvcHRocmVhZC5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglQT1NJWCB0aHJlYWRzIGVtdWxhdGlvbiwgdHJpY2tzIGdsaWJjIGludG8gYmVpbmcgdGhyZWFkc2FmZS4KCgkqIHNjaGVkdWxlci9jbGllbnQuYywgc2VydmVyL21haW4uYywgc2VydmVyL3JlcXVlc3QuYzoKCU1hZGUgc2VydmVyIGxhdW5jaGluZyBzb21ld2hhdCBjbGVhbmVyIGFuZCBmYXN0ZXIuCgoJKiBkbGxzL2RkcmF3L2RkcmF3L2RnYS5jLCBkbGxzL2RkcmF3L2RnYS5jLCBpbmNsdWRlL3gxMWRydi5oLCB3aW5kb3dzL3gxMWRydi9ldmVudC5jOgoJTWFyY3VzIE1laXNzbmVyIDxNYXJjdXMuTWVpc3NuZXJAY2FsZGVyYS5kZT4KCURldHlwb2VkIFgxMURSVl9FVkVOVF9TZXRJbnB1dE1ldGhvZC4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6CglTdGVwaGFuZSBMdXNzaWVyIDxzdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KCVdoZW4gZGVhbGluZyB3aXRoIFhLQiBleHRlbnNpb25zLCBmb3JjZSB0aGUgQWx0R3Iga2V5IG1hc2sgdG8gdXNlIHRoZQoJZ3JvdXAgaW5kZXggaW5zdGVhZCBvZiB0aGUgbW9kaWZpZXIuCgoJKiBpbmNsdWRlL3dpbmRlZi5oOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJRGVmaW5lIF9fZmFzdGNhbGwuCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmg6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglBZGRlZCBhIGZldyB0b29sYmFyIGRlZmluZXMuCgoJKiBncmFwaGljcy9lbmhtZXRhZmlsZWRydi9ncmFwaGljcy5jLCBncmFwaGljcy9lbmhtZXRhZmlsZWRydi9pbml0LmM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglBIGZldyBjb3JyZWN0aW9ucyB0byBib3VuZGluZyBib3hlcy4KCgkqIGdyYXBoaWNzL3gxMWRydi9ncmFwaGljcy5jOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJRG9uJ3QgY2xvc2UgZ3JvdXBzIG9mIHBvbHlsaW5lcy4KCgkqIG1pc2MvY29tbS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCURvIG5vdCBkZXJlZmVyZW5jZSBhIHB0ciB3ZSBqdXN0IGNoZWNrZWQgYmVpbmcgTlVMTC4KCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21haW4uYywgZGxscy9kZHJhdy9kZHJhd19wcml2YXRlLmgsIGRsbHMvZGRyYXcvZGlyZWN0M2QvbWFpbi5jLCBkbGxzL2RkcmF3L21lc2FfcHJpdmF0ZS5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglDaGFuZ2VkIHRoZSBwbGFjZW1lbnQgb2YgV0lORV9VTlVTRUQgdG8gbWFrZSBnY2MgMi43LjIgaGFwcHkuCgoJKiBtaXNjL3JlZ2lzdHJ5LmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRm9sbG93IHN5bWxpbmtzIHdoZW4gc2F2aW5nIHJlZ2lzdHJ5LgoKCSogZGVidWdnZXIvTWFrZWZpbGUuaW46CglBZGRlZCBtaXNzaW5nIHdpbmVzdHViIGRlcGVuZGVuY3kuCgoJKiBpbmNsdWRlL3NlcnZlci5oLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvZXZlbnQuYywgc2VydmVyL29iamVjdC5oLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90cmFjZS5jOgoJTG9hZCBkb25lIGV2ZW50IG5vdyBjcmVhdGVkIGJ5IHRoZSBzZXJ2ZXIuCgoyMDAwLTA0LTEzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGVidWdnZXIvLmN2c2lnbm9yZSwgZGVidWdnZXIvTWFrZWZpbGUuaW4sIGRlYnVnZ2VyL2JyZWFrLmMsIGRlYnVnZ2VyL2RiX2Rpc2FzbS5jLCBkZWJ1Z2dlci9kYmcueSwgZGVidWdnZXIvZGVidWcubCwgZGVidWdnZXIvZGVidWdnZXIuaCwgZGVidWdnZXIvZGlzcGxheS5jLCBkZWJ1Z2dlci9leHByLmMsIGRlYnVnZ2VyL2hhc2guYywgZGVidWdnZXIvaW5mby5jLCBkZWJ1Z2dlci9pbnR2YXIuaCwgZGVidWdnZXIvbWVtb3J5LmMsIGRlYnVnZ2VyL21vZHVsZS5jLCBkZWJ1Z2dlci9tc2MuYywgZGVidWdnZXIvcmVnaXN0ZXJzLmMsIGRlYnVnZ2VyL3NvdXJjZS5jLCBkZWJ1Z2dlci9zdGFicy5jLCBkZWJ1Z2dlci9zdGFjay5jLCBkZWJ1Z2dlci90eXBlcy5jLCBkZWJ1Z2dlci93aW5lZGJnLmMsIGRlYnVnZ2VyL3dpbmVkYmcuc3BlYywgaW5jbHVkZS9zdGFja2ZyYW1lLmgsIE1ha2VmaWxlLmluOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglNYWRlIHRoZSB3aW5lZGJnIGFuIGV4dGVybmFsIGFuZCBXaW5lTGliIHByb2dyYW0uCglDZW50cmFsaXplZCBvdXRwdXQgaGFuZGxpbmcgKHByZXBhcmF0aW9uIGZvciBjb25zb2xlIHVzYWdlKS4KCUZpeGVkIGEgZmV3IGRlYnVnIGluZm9ybWF0aW9uIHJlYWRpbmcgb3B0aW9ucyAoc3RhYnMgYW5kIHN5bSkuCglTdGFydGVkIGEgZnJhbWV3b3JrIHRvIGhvbGQgZGVidWdnZXIncyBpbnRlcm5hbCB2YXJpYWJsZXMuCgoJKiBtaXNjZW11L21haW4uYywgZG9jdW1lbnRhdGlvbi93aW5lLm1hbi5pbiwgaW5jbHVkZS9vcHRpb25zLmgsIG1pc2MvbWFpbi5jLCBtaXNjL29wdGlvbnMuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJR290IHJpZCBvZiAtZGVidWcgd2luZSdzIG9wdGlvbiAod2luZSBub3cgcmVxdWlyZXMgYW4gZXh0ZXJuYWwgZGVidWdnZXIpLgoKCSogd2luMzIvZXhjZXB0LmMsIHdpbmVkZWZhdWx0LnJlZzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgbGF1bmNoaW5nIG9mIGEgZGVidWdnZXIgd2hlbiB1bmhhbmRsZWQgZXhjZXB0aW9uIG9jY3Vycy4KCgkqIHJlbGF5MzIvYnVpbHRpbjMyLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIGEgLnhjbmxuayBzZWN0aW9uIHRvIGJ1aWx0aW4gS0VSTkVMMzIgUEUgaGVhZGVyLgoKCSogbG9hZGVyL21vZHVsZS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUxldCBDcmVhdGVQcm9jZXNzIGxhdW5jaCB1bml4IGV4ZWN1dGFibGUgd2l0aG91dCBhIC5leGUgZXh0ZW5zaW9uLgoJRml4ZWQgYXJndW1lbnRzIHBhc3NlZCB3aGVuIGNyZWF0aW5nIGEgdW5peCBwcm9jZXNzLgoKCSogZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jLCBpbmNsdWRlL2FjY29uZmlnLmgsIGluY2x1ZGUvY29uZmlnLmguaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJRml4ZWQgc2lnbmFsIHN0YWNrIGhhbmRsaW5nIG9uIExpbnV4IHdoZW4gc2lnYWx0c3RhY2sgaXMgYXZhaWxhYmxlLgoJQWRkZWQgYSBkaXJlY3Qgc2lnYWx0c3RhY2sgc3lzY2FsbCB0byB3b3JrLWFyb3VuZCB0aGUgZ2xpYmMgYnVnLgoKCSogZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jLCBpbmNsdWRlL2dsb2JhbC5oLCBtZW1vcnkvdmlydHVhbC5jOgoJSW1wbGVtZW50ZWQgZ3VhcmQgcGFnZXMgYW5kIHN0YWNrIG92ZXJmbG93IGV4Y2VwdGlvbnMuCgoJKiBpbmNsdWRlL3RocmVhZC5oLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzY2hlZHVsZXIvdGhyZWFkLmM6CglDbGVhbnVwIHRocmVhZCBzdGFjayBhbGxvY2F0aW9uLiBVc2UgYSBzaW5nbGUgVmlydHVhbEFsbG9jIGZvciBURUIgYW5kCgl0aGUgdmFyaW91cyBzdGFja3MuCgoJKiBmaWxlcy9wcm9maWxlLmM6CglNYWtlIHN1cmUgSEtMTVxTb2Z0d2FyZVxXaW5lXFdpbmUgaXMgYSBub24tdm9sYXRpbGUga2V5LgoKCSogZGxscy94MTFkcnYveDExZHJ2X21haW4uYywgd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzoKCVN0ZXBoYW5lIEx1c3NpZXIgPHN0ZXBoYW5lQG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgQWx0R3Iga2V5IGhhbmRsaW5nLgoKCSogZGxscy9kZHJhdy9kZHJhdy9kZ2EuYywgZGxscy9kZHJhdy9kZ2EuYywgZGxscy9kZHJhdy9kZ2FfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L2RwYWxldHRlL2RnYS5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL2RnYS5jOgoJTWFyY3VzIE1laXNzbmVyIDxNYXJjdXMuTWVpc3NuZXJAY2FsZGVyYS5kZT4KCU1ha2UgRGlyZWN0RHJhdyBjb21waWxlIHdpdGggREdBMiBwcmVzZW50LgoKCSogZmlsZXMvZmlsZS5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglGSUxFX0NyZWF0ZUZpbGUoKSdzIHJlYWQvd3JpdGUtY2hlY2sgd2FzIGJyb2tlbiBkdWUgdG8gY2hlY2tpbmcgb2YKCUVSUk9SX3h4eCBpbnN0ZWFkIG9mIFNUQVRVU194eHguCgoJKiBvYmplY3RzL2VuaG1ldGFmaWxlLmM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglGaXhlcyBhbmQgY2xlYW5zIHVwIHNvbWUgb2YgdGhlIEdldEVuaE1ldGFGaWxlKiBmdW5jdGlvbnMuCglGaXhlcyBzY2FsaW5nIG9mIEVNRnMgaW4gcGxheWJhY2suICBXaWxsIHByb2JhYmx5IGJlIHJpZ2h0Cgl3aGVuIFdvcmxkIFRyYW5zZm9ybXMgd29yayBwcm9wZXJseS4uLgoKCSogbWVtb3J5L2dsb2JhbC5jOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJR2xvYmFsUmVBbGxvYyByZXR1cm5zIDAgb24gZmFpbHVyZS4KCgkqIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy9udGRsbC9vbS5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglTdHViIGZvciBOdEFsbG9jYXRlVXVpZHMuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglDbGVhciBUb3BSb290SXRlbSB3aGVuIHdob2xlIHRyZWUgaXMgZGVsZXRlZC4KCUZpeCBvZmYgYnkgb25lIGxzdHJjcHluLgoJQ2xlYW4gdXAgYW5kIGZpeCBHZXROZXh0SXRlbS4KCjIwMDAtMDQtMTEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkb2N1bWVudGF0aW9uLy5jdnNpZ25vcmU6IElnbm9yZSBhbGwgb3V0cHV0IGZpbGVzLgoKCSogZGxscy93aW5pbmV0Ly5jdnNpZ25vcmUsIGRsbHMvd2luaW5ldC9NYWtlZmlsZS5pbiwgZGxscy93aW5pbmV0L2Z0cC5jLCBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYywgZGxscy93aW5pbmV0L2ludGVybmV0LmgsIGRsbHMvd2luaW5ldC91dGlsaXR5LmMsIGRsbHMvd2luaW5ldC93aW5pbmV0LnNwZWMsIGluY2x1ZGUvZGVidWdkZWZzLmgsIGluY2x1ZGUvdXJsbW9uLmgsIGluY2x1ZGUvd2luaW5ldC5oLCBNYWtlLnJ1bGVzLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy9NYWtlZmlsZS5pbiwgZGxscy91cmxtb24vLmN2c2lnbm9yZSwgZGxscy91cmxtb24vTWFrZWZpbGUuaW4sIGRsbHMvdXJsbW9uL3Vtb24uYywgZGxscy91cmxtb24vdXJsbW9uLnNwZWM6CglNZXJnZWQgdXJsbW9uLmRsbCBhbmQgd2luaW5ldC5kbGwgZnJvbSB0aGUgQ29yZWwgdHJlZSAoaW1wbGVtZW50YXRpb24KCWJ5IFVscmljaCBDemVrYWxsYSA8dWxyaWNoY0Bjb3JlbC5jYT4pCgoJKiBpbmNsdWRlL3Byb2Nlc3MuaCwgaW5jbHVkZS90aHJlYWQuaCwgaW5jbHVkZS93aW5iYXNlLmgsIHNjaGVkdWxlci9jbGllbnQuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2NoZWR1bGVyL3RocmVhZC5jLCB3aW5kb3dzL3F1ZXVlLmM6CglNYWRlIEdldFByb2Nlc3NIZWFwKCksIEdldEN1cnJlbnRQcm9jZXNzSWQoKSwgR2V0Q3VycmVudFRocmVhZCgpIGFuZAoJR2V0Q3VycmVudFByb2Nlc3MoKSBpbmxpbmUuCgoJKiBBVVRIT1JTLCBpbmNsdWRlL2F1dGhvcnMuaDoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJTWVyZ2VkIGluIENvcmVsJ3MgQVVUSE9Scy4KCgkqIGdyYXBoaWNzL3gxMWRydi9kaWIuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJT25seSBjb3B5IGRzdHdpZHRoKjMgYnl0ZXMgaW4gdGhlIDI0Yml0IGNhc2UuCgoJKiBkbGxzL2RkcmF3L2RzdXJmYWNlL3gxMS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGcmVlIHByaXZhdGUgc3RydWN0dXJlIGluIFhsaWJfRERTX1JlbGVhc2UuCgoJKiB3aW5kb3dzL21lc3NhZ2UuYzogVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hjQGNvcmVsLmNhPgoJTVNHX1Byb2Nlc3NLYmRNc2cgY2FuIGJlIGNhbGxlZCBmcm9tIHBlZWssIHNvIG9ubHkgcHJvY2VzcyB3aGVuIHJlbW92ZSBpcyBzZXQuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6CglTZXJnZSBJdmFub3YgPHNlcmdlaUBjb3JlbC5jYT4KCVRyZWVWaWV3IC0gbWlub3IgYnVnZml4IGFuZCBvcHRpbWl6YXRpb246CgkgICAtIEdldERDIGNhbGwgbW92ZWQgZG93biB0byBhdm9pZCBwb3NzaWJsZSByZXNvdXJjZSBsZWFrLgoJICAgLSBJbnZhcmlhbnQgY29kZSBpcyBtb3ZlZCBvdXQgb2YgbG9vcC4KCgkqIGRsbHMvc2hlbGwzMi9waWRsLmM6CglVbHJpY2ggQ3pla2FsbGEgPHVscmljaGNAY29yZWwuY2E+CglfSUxHZXRGaWxlRGF0ZSBzaG91bGQgY29udmVydCB0aGUgZGF0ZSB0byBsb2NhbCB0aW1lIGJlZm9yZSBnZW5lcmF0aW5nCgl0aGUgc3RyaW5nIChfSUxHZXRGaWxlRGF0ZVRpbWUgZG9lcyBub3QpLgoKCSogZGxscy93aW5tbS9tbWlvLmM6CglOb29tZW4gSGFtemEgPG5vb21lbkBtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIG90aGVyIGJ1Z3Mgd2l0aGluIE1NSU8gaW1wbGVtZW50YXRpb24uIE5vdywgaXQncyBwb3NzaWJsZSB0bwoJY29weS9jdXQgZnJvbSBQaG90b1BhaW50IGFuZCBwYXN0ZSB0byBDb3JlbERyYXcuCgoyMDAwLTA0LTEwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWFpbi5jLCBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmM6CglNYXJjdXMgTWVpc3NuZXIgPE1hcmN1cy5NZWlzc25lckBjYWxkZXJhLmRlPgoJVXNlIGQzZGV4ZWN1dGVidWZmZXJfY3JlYXRlIG9ubHkgd2hlbiBjb21waWxpbmcgd2l0aCBNRVNBLgoKMjAwMC0wNC0wOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGdyYXBoaWNzL3gxMWRydi9iaXRtYXAuYywgZ3JhcGhpY3MveDExZHJ2L3BhbGV0dGUuYywgZ3JhcGhpY3MvdHR5ZHJ2L3BhbGV0dGUuYzoKCURpbWl0cmllIE8uIFBhdW4gPGRpbWlAY3MudG9yb250by5lZHU+CglSZXBsYWNlZCB4bWFsbG9jIGNhbGxzIHdpdGggbWFsbG9jL0hlYXBBbGxvYyBjYWxscy4KCgkqIGNvbnNvbGUvZ2VuZXJpYy5jLCBjb25zb2xlL25jdXJzZXMuYywgY29uc29sZS94dGVybS5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglDb3NtZXRpY3MuCgoJKiBtZW1vcnkvaGVhcC5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglJbXBsZW1lbnRlZCBIZWFwV2FsaygpLgoKCSogZGxscy9kZHJhdy9kc3VyZmFjZS94MTEuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJVHdvIGxlZnQgb3ZlciBIZWFwVmFsaWRhdGUgYXNzZXJ0aW9ucyByZW1vdmVkLgoKCSogc2VydmVyL2RlYnVnZ2VyLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUNsZWFyIHN0YXR1cyBmb3Igc2VuZGluZyBleGNlcHRpb24gZXZlbnQuCgoJKiB0b29scy9nZW5wYXRjaDogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBhYmlsaXR5IHRvIHB1dCBuZXctbGluZXMgaW4gY2hhbmdlbG9nIGVudHJ5LgoJQWRkZWQgLXAgdG8gbG9jYXRlIGRlc3RpbmF0aW9uIGRpcmVjdG9yeS4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCVJpY2hhcmQgQ29oZW4gPHJpY2hhcmRAanVianViLmRlbW9uLmNvLnVrPgoJR2V0SXRlbSB3YXMgcmV0dXJuaW5nIHRoZSBpdGVtIGluc3RlYWQgb2Ygc3ViaXRlbSBpbmZvLgoKCSogcHJvZ3JhbXMvd2luZW1pbmUvbWFpbi5jOgoJRGF2ZSBQaWNrbGVzIDxkYXZlcEBjeXcudWtsaW51eC5uZXQ+CglSZWdpc3RyeSBrZXkgdXNlZCBpbiBMb2FkQm9hcmQoKSB3YXMgbm90IHRoZSBzYW1lIGFzIHRoZSBvbmUgdXNlZCBpbgoJU2F2ZUJvYXJkKCkuIEFsc28gZml4ZWQgYSB0eXBvIGluIHRoZSBwb3NpdGlvbiBzYXZpbmcgY29kZS4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJQ3JlYXRlIGRpcmVjdG9yaWVzIHRoYXQgZG9uJ3QgY29udGFpbiBhIE1ha2VmaWxlLgoKCSogdG9vbHMvd3JjL01ha2VmaWxlLmluLCBkbGxzL3R0eWRydi9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS9NYWtlZmlsZS5pbiwgZGxscy94MTFkcnYvTWFrZWZpbGUuaW4sIGRvY3VtZW50YXRpb24vTWFrZWZpbGUuaW4sIGluY2x1ZGUvTWFrZWZpbGUuaW4sIG9sZS9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmhlbHAvTWFrZWZpbGUuaW4sIHRvb2xzL01ha2VmaWxlLmluLCBNYWtlLnJ1bGVzLmluLCBNYWtlZmlsZS5pbiwgZGVidWdnZXIvTWFrZWZpbGUuaW4sIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvZGRyYXcvTWFrZWZpbGUuaW46CglJbXByb3ZlZCBzdXBwb3J0IGZvciBNYWtlZmlsZXMgdGhhdCBuZWVkIHRvIHJlY3Vyc2UgaW4gc3ViZGlyZWN0b3JpZXMuCgoJKiBkbGxzL2RkcmF3L2RwYWxldHRlL2RnYS5jLCBkbGxzL2RkcmF3L2RwYWxldHRlL21haW4uYywgZGxscy9kZHJhdy9kcGFsZXR0ZS94MTEuYywgZGxscy9kZHJhdy9kc3VyZmFjZS9kZ2EuYywgZGxscy9kZHJhdy9kc3VyZmFjZS9tYWluLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UveDExLmMsIGNvbmZpZ3VyZS5pbiwgZGxscy9kZHJhdy8uY3ZzaWdub3JlLCBkbGxzL2RkcmF3L01ha2VmaWxlLmluLCBkbGxzL2RkcmF3L2NvbnZlcnQuYywgZGxscy9kZHJhdy9kM2RfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L2QzZGNvbW1vbi5jLCBkbGxzL2RkcmF3L2QzZGRldmljZS9tYWluLmMsIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywgZGxscy9kZHJhdy9kM2RkZXZpY2VzLmMsIGRsbHMvZGRyYXcvZDNkZXhlY3V0ZWJ1ZmZlci5jLCBkbGxzL2RkcmF3L2QzZGxpZ2h0LmMsIGRsbHMvZGRyYXcvZDNkbWF0ZXJpYWwuYywgZGxscy9kZHJhdy9kM2R0ZXh0dXJlLmMsIGRsbHMvZGRyYXcvZGNsaXBwZXIvbWFpbi5jLCBkbGxzL2RkcmF3L2RkcmF3LnNwZWMsIGRsbHMvZGRyYXcvZGRyYXcvZGdhLmMsIGRsbHMvZGRyYXcvZGRyYXcvbWFpbi5jLCBkbGxzL2RkcmF3L2RkcmF3L3gxMS5jLCBkbGxzL2RkcmF3L2RkcmF3X21haW4uYywgZGxscy9kZHJhdy9kZHJhd19wcml2YXRlLmgsIGRsbHMvZGRyYXcvZGdhLmMsIGRsbHMvZGRyYXcvZGdhX3ByaXZhdGUuaCwgZGxscy9kZHJhdy9kaXJlY3QzZC9tYWluLmMsIGRsbHMvZGRyYXcvZGlyZWN0M2QvbWVzYS5jLCBkbGxzL2RkcmF3L2hlbHBlci5jLCBkbGxzL2RkcmF3L21haW4uYywgZGxscy9kZHJhdy9tZXNhLmMsIGRsbHMvZGRyYXcvbWVzYV9wcml2YXRlLmgsIGRsbHMvZGRyYXcveDExLmMsIGRsbHMvZGRyYXcveDExX3ByaXZhdGUuaCwgY29uZmlndXJlOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglSZXN0cnVjdHVyZWQgRGlyZWN0RHJhdy4gU3BsaXQgaW50byBYMTEgYW5kIERHQSBkcml2ZXIsIGFuZCBtdWx0aXBsZQoJZmlsZXMvZGlycyBmb3IgZWFzaWVyIG1haW50ZW5hbmNlLiBDbGVhbmVkIHVwIHN0cnVjdHMgYW5kIGluY2x1ZGUKCWZpbGVzLiBSZWluZGVudGVkIHRoZSBjb2RlLiBTdGFydGVkIHRoZSBzYW1lIGZvciBEaXJlY3QzRC4gIERyaXZlcgoJaW5jbHVzaW9uIG5vdyBkb25lIGJ5IHVzaW5nIGNvbmZpZ3VyZS9NYWtlZmlsZS9FTEYgY29uc3RydWN0b3IgdHJpY2tzLgoKMjAwMC0wNC0wOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIGZpbGVzL3Byb2ZpbGUuYywgZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsIGluY2x1ZGUvY3Vyc29yaWNvbi5oLCBpbmNsdWRlL21lc3NhZ2UuaCwgbG9hZGVyL25lL21vZHVsZS5jLCBtZW1vcnkvaGVhcC5jLCBzY2hlZHVsZXIvc3lzZGVwcy5jLCBzY2hlZHVsZXIvc3lzbGV2ZWwuYywgd2luZG93cy9jdXJzb3JpY29uLmMsIHdpbmRvd3MvdGltZXIuYywgZGxscy9zaGVsbDMyL2NoYW5nZW5vdGlmeS5jLCBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmMsIGRsbHMvdXNlci91c2VyX21haW4uYywgZGxscy94MTFkcnYveDExZHJ2X21haW4uYzoKCVJlbW92ZWQgYSBudW1iZXIgb2YgZ2xvYmFsIGhhbmRsZSBhbGxvY2F0aW9ucyBhbmQgY3JpdGljYWwgc2VjdGlvbgoJaW5pdGlhbGl6YXRpb25zLgoKCSogc2VydmVyL3Byb2Nlc3MuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCVRlbXBvcmFyeSBoYWNrIHRvIHNoYXJlIGhhbmRsZXMgYmV0d2VlbiBwcm9jZXNzZXMgc2hhcmluZyB0aGUgc2FtZQoJYWRkcmVzcyBzcGFjZS4KCgkqIGluY2x1ZGUvd2luYmFzZS5oLCBzY2hlZHVsZXIvY3JpdHNlY3Rpb24uYzoKCUFkZGVkIGxhenkgaW5pdGlhbGl6YXRpb24gb2YgY3JpdGljYWwgc2VjdGlvbnMsIGJhc2VkIG9uIGEgcGF0Y2ggYnkKCUFuZHJldyBMZXd5Y2t5LgoKCSogZGxscy9jb21jdGwzMi90YWIuYzogWXV4aSBaaGFuZyA8eXV4aUBjb3JlbC5jYT4KCVN0ZXBoZW4gTWVyZXUKCVRhYkN0cmwgbGVmdG1vc3RWaXNpYmxlIGlzIG5vdCB1cGRhdGVkIHByb3Blcmx5LiBJdCBjYXVzZWQgdGhlIFFQCglhcHBsaWNhdGlvbiBiYXIgb24gdGhlIGJvdHRvbSBmYWlsIHRvIGJyaW5nIGJhY2sgdGhlIGl0ZW1zIHdoZW4gdGhlcmUKCWlzIG5vIG5lZWQgdG8gc2Nyb2xsaW5nLiBBbHNvIGZpeGVkIGEgYnVnIHRoYXQgd2hlbiBhbiBpdGVtIGlzIGluc2VydGVkLAoJc2V0SXRlbUJvdW5kcyBzaG91bGQgYmUgY2FsbGVkIGZpcnN0LCB0aGVuIGl0J3MgdGltZSB0byBpbnZhbGlkYXRlLgoKCSogcmVsYXkzMi9rZXJuZWwzMi5zcGVjLCB3aW4zMi9uZXdmbnMuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJQWRkZWQgUGVla05hbWVkUGlwZSBzdHViLgoKCSogZ3JhcGhpY3MveDExZHJ2L2luaXQuYzoKCUdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJRml4ZWQgcGl4bWFwIGxlYWsgd2l0aCB0aGUgMXgxIGJpdG1hcCBpbiBtZW1vcnkgRENzLgoKCSogdG9vbHMvd2luZWluc3RhbGw6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJd2luZWluc3RhbGwgbm93IHByb3Blcmx5IGNvbmZpZ3VyZXMgbm8td2luZG93cyBpbnN0YWxscywgYW5kIHNob3VsZCBub3cKCWJlIGVhc2llciB0byBhZGFwdCBmb3IgYmluYXJ5IHBhY2thZ2VzIHRvby4KCgkqIGRvY3VtZW50YXRpb24vc2FtcGxlcy9zeXN0ZW0uaW5pOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglEZWZhdWx0IHN5c3RlbS5pbmkgKGZyb20gZG9jdW1lbnRhdGlvbi9zdGF0dXMvbXVsdGltZWRpYSkuCgoyMDAwLTA0LTA2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2VydmVyL2RlYnVnZ2VyLmMsIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RocmVhZC5oOgoJRG8gbm90IHNlbmQgYSBkZWJ1ZyBldmVudCBmb3IgYSB0aHJlYWQgdW50aWwgdGhlIHByZXZpb3VzIGV2ZW50IGZvcgoJdGhlIHNhbWUgdGhyZWFkIGhhcyBiZWVuIGNvbnRpbnVlZC4KCgkqIG1pc2MvcmVnaXN0cnkuYywgd2luZS5pbmk6CglNb3ZlZCBTYXZlT25seVVwZGF0ZWRLZXlzIHRvIHdpbmUuaW5pLgoJVXNlIGdldF9jb25maWdfZGlyKCkgaW5zdGVhZCBvZiBoYXJkY29kaW5nIH4vLndpbmUKCVNpbXBsaWZpZWQgbG9hZGluZyBhbmQgc2F2aW5nIHJvdXRpbmVzLgoKCSogZmlsZXMvcHJvZmlsZS5jLCBpbmNsdWRlL29wdGlvbnMuaCwgaW5jbHVkZS9zZXJ2ZXIuaCwgc2NoZWR1bGVyL2NsaWVudC5jLCBzZXJ2ZXIvcmVxdWVzdC5jOgoJQWRkZWQgc3VwcG9ydCBmb3IgV0lORVBSRUZJWCBlbnZpcm9ubWVudCB2YXJpYWJsZS4KCgkqIHdpbmRvd3Mvd2lucG9zLmMsIGxvYWRlci9uZS9tb2R1bGUuYywgbWVtb3J5L3NlbGVjdG9yLmMsIG1pc2MvbHN0ci5jLCBtaXNjL25ldHdvcmsuYywgbXNkb3MvaW50MjEuYywgb2JqZWN0cy9mb250LmMsIHdpbjMyL2NvbnNvbGUuYywgd2luMzIvZXhjZXB0LmMsIHdpbmRvd3MvZGlhbG9nLmMsIHdpbmRvd3MvaG9vay5jLCB3aW5kb3dzL21kaS5jLCB3aW5kb3dzL21lc3NhZ2UuYywgZGxscy93aW4zMnMvdzMyc3lzLmMsIGRsbHMvd2luODdlbS9lbXVsYXRlLmMsIGRsbHMvd2lubW0vbW1pby5jLCBkbGxzL3dpbm1tL21tc3lzdGVtLmMsIGRsbHMvd2lubW0vbW1zeXN0ZW0uc3BlYywgZ3JhcGhpY3MvcGFpbnRpbmcuYywgZ3JhcGhpY3MvcHNkcnYvZHJpdmVyLmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L2ZvbnQuYywgbG9hZGVyL21vZHVsZS5jLCBkbGxzL2FkdmFwaTMyL2FkdmFwaTMyLnNwZWMsIGRsbHMvYWR2YXBpMzIvc2VydmljZS5jLCBkbGxzL2NvbWN0bDMyL2NvbWN0bDMyLnNwZWMsIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jLCBkbGxzL2dkaS9nZGkuc3BlYywgZGxscy9tc2FjbS9tc2FjbV9tYWluLmMsIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmMsIGRsbHMvb2xlYXV0MzIvc3R1YnMuYywgZGxscy9vbGVwcm8zMi9vbGVwcm8zMi5zcGVjLCBkbGxzL3NoZWxsMzIvc2hlbGwuYywgZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYywgZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jLCBkbGxzL3NoZWxsMzIvc2hsd2FwaS5zcGVjOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIGlzc3VlcyByZXBvcnRlZCBieSB3aW5hcGlfY2hlY2suCgoJKiBpbmNsdWRlL3dpbnVzZXIuaCwgb2xlL29sZTJubHMuYywgcmVsYXkzMi9rZXJuZWwzMi5zcGVjOgoJT3dlbiBXYW5nIDxvd2Vud0Bjb3JlbC5jYT4KCUltcGxlbWVudGVkIEFQSSBFbnVtVGltZUZvcm1hdHNBKCkuIEl0IHN1cHBvcnRzIG5vdyBhbGwgZGlmZmVyZW50CglFbmdsaXNoIGxvY2FsZXMsIGFzIHdlbGwgYXMgR2VybWFuKHN0YW5kYXJkKSwgRnJlbmNoKHN0YW5kYXJkKSBhbmQKCUZyZW5jaChDYW5hZGlhbikuICBBbGwgdGltZSBmb3JtYXRzIGZvbGxvdyBjb252ZW50aW9ucyBpbiBXaW5kb3dzIE5UIDQuMAoKCUhhaXRoZW0gSG1pZGEgKG9mIE1hY2FkYW1pYW4gZm9yIENvcmVsKQoJSW1wbGVtZW50ZWQgR2V0Q3VycmVuY3lGb3JtYXRBKCkgQVBJOgoJLSBHZXRDdXJyZW5jeUZvcm1hdEEoKSBjYWxscyBHZXROdW1iZXJGb3JtYXRBKCkgdG8gZm9ybWF0IHRoZSBudW1iZXIKCSAgKGFzIGEgcG9zaXRpdmUgb25lKSwgdGhlbiBmb3JtYXRzIHRoZSBudW1iZXIgZGVwZW5kaW5nIG9uCgkgIE5lZ2F0aXZlT3JkZXIvUG9zaXRpdmVPcmRlciBmaWVsZHMuCgktIEdldE51bWJlckZvcm1hdEEoKSBoYXMgYmVlbiBzbGlnaHRseSBtb2RpZmllZC4KCgkqIG9iamVjdHMvdGV4dC5jOgoJSnVuaWNoaSBLdWNoaW5pc2hpIDxqa3VjaGlAbWFob3JvYmEubmUuanA+CglBZGRlZCBjb252ZXJzaW9uIGZyb20gREJDUyBscER4IHRvIFdDSEFSIGxwRHguCgoJKiB0b29scy93aW5hcGlfY2hlY2svd2luMzIvYWR2YXBpMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvc2hlbGwzMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9zaGx3YXBpLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaS5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9jaGVjaywgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9vcHRpb25zLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX3BhcnNlci5wbToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBJbXBsZW1lbnRlZCBzdHViIHN0YXRpc3RpY3MuIFR1cm5lZCBvZmYgYnkgZGVmYXVsdC4gKFJlcXVlc3RlZCBieSBGcmFuY29pcwoJR291Z2V0KS4KCS0gSW1wbGVtZW50ZWQgbWlzc2luZyBwcm90b3R5cGUgY2hlY2tpbmcuIFR1cm5lZCBvZmYgYnkgZGVmYXVsdCAoUmVxdWVzdGVkCglieSBEaW1pdHJ5IFRpbW9zaGtvdikuCgktIEltcGxlbWVudGVkIC5zcGVjIGZpbGUgbmFtZSBzYW5pdHkgY2hlY2tpbmcuIFR1cm5lZCBvZmYgYnkgZGVmYXVsdC4KCS0gSW1wbGVtZW50ZWQgZG9jdW1lbnRhdGlvbiB3aWR0aCBjaGVja2luZy4gVHVybmVkIG9mZiBieSBkZWZhdWx0LgoJLSBNaW5vciBidWcgZml4ZXMuCgoJKiBkbGxzL29sZTMyL2NvbXBvYmouYzoKCUFuZHJldyBMZXd5Y2t5IDxhbmRyZXdsQGNvcmVsLmNhPgoJRml4IFN0cmluZ0Zyb21HVUkyIHJldHVybiB2YWx1ZSBhcyBwZXIgZG9jdW1lbnRhdGlvbi4KCgkqIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmM6CglNYXJjdXMgTWVpc3NuZXIgPE1hcmN1cy5NZWlzc25lckBjYWxkZXJhLmRlPgoJTWFrZSBhdWRpb2RldmljZSBibG9ja2luZyBkaXJlY3RseSBhZnRlciB0aGUgbm9uLWJsb2NraW5nIG9wZW4sIHNpbmNlCgl3ZSB1c2UgdGhlIHdyaXRlKDIpIGFsc28gZm9yIHN5bmNocm9uaXphdGlvbi4KCgkqIGRsbHMvd2luc29jay9hc3luYy5jLCBkbGxzL3dpbnNvY2svc29ja2V0LmM6CglSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJQ29ycmVjdGVkIGVycm9yIGhhbmRsaW5nIGZvciB3c19nZXRwcm90b2J5bmFtZS9udW1iZXIuCglNYWRlIHRoZSBBc3luYyBlcnJvciByZXR1cm5zIHRoZSBzYW1lIGFzIHRoZSBub3JtYWwgZnVuY3Rpb25zLgoKCSogZmlsZXMvZG9zX2ZzLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglHZXRTaG9ydFBhdGhOYW1lOiBhbHdheXMgZXJhc2UgY2hhcmFjdGVycyBhdCB0aGUgZW5kIG9mIHRoZSBuZXcKCXN0cmluZywgYW5kIHJldHVybiBvbmx5IHNpbmdsZSBiYWNrc2xhc2hlcy4KCjIwMDAtMDQtMDQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBmaWxlcy9kb3NfZnMuYywgZmlsZXMvZHJpdmUuYywgZmlsZXMvZmlsZS5jLCBpbmNsdWRlL2RyaXZlLmgsIGluY2x1ZGUvZmlsZS5oLCBpbmNsdWRlL29wdGlvbnMuaCwgbWlzYy9tYWluLmMsIG1pc2Mvb3B0aW9ucy5jLCBtaXNjL3JlZ2lzdHJ5LmMsIGRvY3VtZW50YXRpb24vd2luZS5jb25mLm1hbi5pbiwgZG9jdW1lbnRhdGlvbi93aW5lLm1hbi5pbjoKCUFkZGVkIGEgcGVyLWRyaXZlIEZhaWxSZWFkT25seSBmbGFnLCBhbmQgcmVtb3ZlZCB0aGUgZ2xvYmFsCgktLWZhaWxyZWFkb25seSBvcHRpb24uCgoJKiBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jLCBmaWxlcy9maWxlLmMsIHNjaGVkdWxlci9jbGllbnQuYzoKCUZpeGVkIGZpbGUgZGVzY3JpcHRvciBsZWFrcy4KCgkqIG1pc2MvcmVnaXN0cnkuYzoKCUNhbGwgUFJPRklMRV9HZXRXaW5lSW5pQm9vbCBiZWZvcmUgc3RhcnRpbmcgdG8gZmlsbCB0aGUgcmVxdWVzdAoJYnVmZmVyLiBNYWRlIG5ldyByZWdpc3RyeSBmb3JtYXQgdGhlIGRlZmF1bHQuCgoJKiBzZXJ2ZXIvcHRyYWNlLmM6CglJbmNyZW1lbnQgc3VzcGVuZCBjb3VudCBiZWZvcmUgYXR0ZW1wdGluZyBhdHRhY2ggaW4gc3VzcGVuZF9mb3JfcHRyYWNlLgoKCSogc2VydmVyL2ZpbGUuYywgc2VydmVyL21hcHBpbmcuYywgc2VydmVyL211dGV4LmMsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9yZWdpc3RyeS5jLCBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvc2VtYXBob3JlLmMsIHNlcnZlci90aW1lci5jLCBzZXJ2ZXIvdHJhY2UuYywgdG9vbHMvbWFrZV9yZXF1ZXN0cywgc2VydmVyL2F0b20uYywgc2VydmVyL2NvbnNvbGUuYywgc2VydmVyL2V2ZW50LmM6CglNYWRlIHJlcXVlc3QgdHJhY2luZyBtb3JlIHJvYnVzdCBhZ2FpbnN0IGJvZ3VzIGxlbmd0aHMuCgoJKiBkb2N1bWVudGF0aW9uL01ha2VmaWxlLmluLCBkb2N1bWVudGF0aW9uL3dpbmUuY29uZi5tYW4uaW4sIGRvY3VtZW50YXRpb24vd2luZS5tYW4uaW46CglQZXRlciBHYW50ZW4gPHBldGVyQGdhbnRlbi5vcmc+CglBZGFwdGVkIHRoZSBtYW51YWwgcGFnZXMgdG8gdGhlIG5ldyBsb25nIG9wdGlvbnMsIHVwZGF0ZWQgdGhlCgktZGVidWdtc2cgY2hhbm5lbHMgYW5kIGFkZGVkIGEgc21hbGwgaGFjayB0byBnZXQgdGhlIEBzeXNjb25mZGlyQAoJc3R1ZmYgaW4gdGhlIG1hbnVhbCBwYWdlcyByaWdodC4KCgkqIGRsbHMvd2lubW0vbW1pby5jOgoJTm9vbWVuIEhhbXphIDxub29tZW5AbWFjYWRhbWlhbi5jb20+CglGaXhlZCB0d28gc21hbGwgYnVncyB3aXRoaW4gTU1JT19JbnN0YWxsSU9Qcm9jIGFuZCBNTUlPX0Rlc3Ryb3kuCgoJKiBwcm9ncmFtcy93aW5lbWluZS9tYWluLmMsIHByb2dyYW1zL3dpbmVtaW5lL21haW4uaDoKCUpvc2h1YSBUaGllbGVuIDxmb3pleUBuZXR6ZXJvLmNvbT4KCUFkZGVkIERlc3Ryb3lCb2FyZCBmdW5jdGlvbiB0byBkZWxldGUgYml0bWFwIGhhbmRsZXMuCglNb3ZlZCBTZWxlY3RPYmplY3Qgb3V0c2lkZSBvZiBEcmF3TWluZS4KCVNlbGVjdGVkIG9sZCBvYmplY3QncyBiYWNrIGludG8gaE1lbURDLgoKCSogbXNkb3MvaW50MjEuYzogSWFuIFNjaG1pZHQgPGlzY2htaWR0QGNmbC5yci5jb20+CglJbXBsZW1lbnRlZCBGQVQzMiBmdW5jdGlvbiA3MzAyIChHZXQgRXh0ZW5kZWQgRFBCKS4KCgkqIHdpbjMyL2RldmljZS5jOiBJYW4gU2NobWlkdCA8aXNjaG1pZHRAY2ZsLnJyLmNvbT4KCUltcGxlbWVudGVkIERldmljZUlvQ29udHJvbCBWV0lOMzJfRElPQ19ET1NfRFJJVkVJTkZPLCBuZWVkZWQgYnkKCUludGVybmV0IEV4cGxvcmVyLgoKCSogcHJvZ3JhbXMvcmVnYXBpL3JlZ2FwaS5jOgoJR2F2cmllbCBTdGF0ZSA8Z2F2cmllbHNAY29yZWwuY2E+CglUaGlzIHBhdGNoIGFkZHMgdGhlIGFiaWxpdHkgZm9yIHJlZ2FwaSB0byBjYWxsIHRoZSBEbGxSZWdpc3RlclNlcnZlciBvcgoJRGxsVW5yZWdpc3RlclNlcnZlciBmb3IgYSBsaXN0IG9mIERMTHMuCgoJKiBkbGxzL29sZTMyL29sZTIuYzogR2F2cmllbCBTdGF0ZSA8Z2F2cmllbHNAY29yZWwuY2E+CglPbGVSZWdHZXRVc2VyVHlwZSBkaWQgcmV0dXJuIGFuIHVudGVybWluYXRlZCBBU0NJSSBzdHJpbmcgaW5zdGVhZCBvZiBhbgoJT0xFU1RSICh3aWRlIGNoYXJhY3RlcnMpLgoKCSogbWlzYy9tYWluLmMsIG9sZS9ubHMvZW5hLm5scywgb2xlL25scy9lbmIubmxzLCBvbGUvbmxzL2VuYy5ubHMsIG9sZS9ubHMvZW5nLm5scywgb2xlL25scy9lbmkubmxzLCBvbGUvbmxzL2Vuai5ubHMsIG9sZS9ubHMvZW5sLm5scywgb2xlL25scy9lbnMubmxzLCBvbGUvbmxzL2VudC5ubHMsIG9sZS9ubHMvZW51Lm5scywgb2xlL25scy9lbnoubmxzLCBvbGUvbmxzL2lybC5ubHMsIG9sZS9vbGUybmxzLmM6CglNaWNoYWVsIEFiZC1FbC1NYWxlayAoQ29yZWwpCglDaGFuZ2VkIGlybC5ubHMgdG8gZW5pLm5scy4gUmV2aWV3ZWQgYW5kIGZpeGVkIGEgbG90IG9mIHRoZSBOTFMgZmlsZXMKCXRvIGJlIG1vcmUgY29tcGF0aWJsZSB0byBXaW5kb3dzLgoJQWRkZWQgZW5fR0IgKHVzZWQgYnkgQ29yZWwgTGludXggMS4wLDEuMSkgYXMgYWxpYXMgZm9yIGVuX1VLLgoKCUplZmYgVHJhbnRlciA8amVmZnRAY29yZWwuY2E+CglUaGUgbWVhc3VyZW1lbnQgdW5pdCBmb3IgQ2FuYWRpYW4gRW5nbGlzaCBzaG91bGQgYmUgbWV0cmljLgoJTEFOR19TVUJfRU5UUlkgZGlkIGFsd2F5cyByZXR1cm4gdGhlIGZpcnN0IGxhbmd1YWdlIGR1ZSB0byBtaXNzaW5nIHt9LgoKMjAwMC0wMy0zMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRvY3VtZW50YXRpb24vZGlzdHJpYnV0b3JzOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglVcGRhdGVkIGRvY3VtZW50YXRpb24vZGlzdHJpYnV0b3JzIGluIHJlZ2FyZHMgdG8gc2hhcmVkIGxpYnJhcmllcyBhbmQKCXNvbWUgbW9yZSB3aW5kb3dzIHNwZWNpZmljIGRpcnMuCgoJKiBwcm9ncmFtcy93aW5lbWluZS9SRUFETUUsIHByb2dyYW1zL3dpbmVtaW5lL21haW4uYywgcHJvZ3JhbXMvd2luZW1pbmUvbWFpbi5oOgoJUGV0ZXIgSHVubmlzZXR0IDxodW5uaXNlQG5vcnRlbG5ldHdvcmtzLmNvbT4KCS0gRml4IHBhaW50aW5nIGJ1ZyB3aXRoIG1pZGRsZSBidXR0b24gZG93biB3aGVuIGRyYWdnaW5nIG1vdXNlCgktIFNwZWVkIHVwIGRyYXdpbmcgYW5kIGhlbmNlIG92ZXJhbGwgc3BlZWQKCS0gRml4IGNvbXBpbGVyIHdhcm5pbmdzCgktIEFkZGVkIHNvbWUgb3B0aW9uYWwgZGVidWdnaW5nIGluZm9ybWF0aW9uCgktIEFkZGVkIGEgbmV3IGtub3duIGJ1ZyB0byB0aGUgbGlzdAoKCSogbWlzYy9jb21tLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglBZGRlZCBDVFMsIERTUiBhbmQgUmluZ0luZGljYXRvciBzdGF0ZXMgdG8gV2luZG93J3Mgc2VtaS1kb2N1bWVudGVkCgltb2RlbSBsaW5lIHN0YXR1cyByZWdpc3Rlci4KCgkqIGluY2x1ZGUvd2luZ2RpLmgsIG9iamVjdHMvZW5obWV0YWZpbGUuYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCURlbGV0ZSBvYmplY3RzIGFmdGVyIHVzZSBpbiBFbnVtRW5oTWV0YUZpbGUuCglNYWtlIFBsYXlFbmhNZXRhRmlsZSBjYWxsIEVudW1FbmhNZXRhRmlsZS4KCU1vdmUgRW51bUVuaE1ldGFGaWxlIHByb3RvdHlwZSB0byB3aW5nZGkuaC4KCgkqIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmMsIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOgoJTWFyY3VzIE1laXNzbmVyIDxNYXJjdXMuTWVpc3NuZXJAY2FsZGVyYS5kZT4KCW9wZW4oKSB0aGUgT1NTIHNvdW5kZGV2aWNlIG5vbi1ibG9ja2luZyBpbiBjYXNlIGFub3RoZXIgcHJvY2VzcyBoYXMgaXQKCW9wZW4gYWxyZWFkeS4KCgkqIHNjaGVkdWxlci9wcm9jZXNzLmM6CglDb21tZW50ZWQgb3V0IGV4aXQoKSBjYWxsIG9uIEV4aXRQcm9jZXNzIGZvciBub3cuCgoJKiBzZXJ2ZXIvY29udGV4dF9pMzg2LmMsIHNlcnZlci9kZWJ1Z2dlci5jLCBzZXJ2ZXIvbWFpbi5jLCBzZXJ2ZXIvb2JqZWN0LmgsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RocmVhZC5oOgoJU2V0IHRocmVhZCBzdGFydCBhZGRyZXNzIHRvIDAgb24gZXZlbnRzIGdlbmVyYXRlZCBieQoJRGVidWdBY3RpdmVQcm9jZXNzLgoJUmV0dXJuIGEgY29ycmVjdCBhZGRyZXNzIGluIHRoZSBzaW11bGF0ZWQgZXhjZXB0aW9uIGV2ZW50LgoKCSogZGxscy90dHlkcnYvdHR5ZHJ2X21haW4uYywgZ3JhcGhpY3MvdHR5ZHJ2L2RjLmMsIGdyYXBoaWNzL3R0eWRydi9ncmFwaGljcy5jLCBncmFwaGljcy90dHlkcnYvdGV4dC5jLCBpbmNsdWRlL3R0eWRydi5oLCB3aW5kb3dzL3R0eWRydi93bmQuYzoKCUZpeGVkIHR0eWRydiBjb21waWxlIHdoZW4gdXNpbmcgY3Vyc2VzLiBDbGVhbmVkIHVwIGEgZmV3ICNpZmRlZnMuCgoyMDAwLTAzLTI4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9kc291bmQvZHNvdW5kX21haW4uYywgZGxscy93aW5hc3BpL3dpbmFzcGkxNi5jLCBncmFwaGljcy9wYXRoLmMsIHByb2dyYW1zL3dpbmhlbHAvbWFjcm8ueWFjYy55OgoJTmllbHMgS3Jpc3RpYW4gQmVjaCBKZW5zZW4gPG5rYmpAaW1hZ2UuZGs+CgktIEZpeCBzb21lIGNvbXBpbGVyIHdhcm5pbmdzLgoJLSBSZW1vdmUgc3VwZXJmbHVvdXMgI2luY2x1ZGUgc3RhdGVtZW50LgoKCSogaW5jbHVkZS93aW5lL3dpbm5ldDE2LmgsIG1pc2MvbmV0d29yay5jOgoJUm9uIEdhZ2UgPHJvbmdhZ2VAYXR0Lm5ldD4KCUZpeGVkIGJ1ZyByZXBvcnRlZCBieSB3aW5hcGlfY2hlY2suCgoJKiAqLyouYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQWRkZWQvZml4ZWQgc29tZSBkb2N1bWVudGF0aW9uIHJlcG9ydGVkIGJ5IHdpbmFwaV9jaGVjay4KCgkqIGdyYXBoaWNzL3gxMWRydi9wYWxldHRlLmMsIG9iamVjdHMvcGFsZXR0ZS5jOgoJRml4ZWQgbWVtb3J5IGFsbG9jYXRpb25zLgoKCSogZGxscy9jcnRkbGwvY3J0ZGxsLnNwZWMsIGRsbHMvY3J0ZGxsL2NydGRsbF9tYWluLmMsIGRsbHMvdXNlci91c2VyMzIuc3BlYywgaW5jbHVkZS93aW51c2VyLmgsIHdpbmRvd3MvaW5wdXQuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBBZGRlZC9maXhlZCBzb21lIGRvY3VtZW50YXRpb24gcmVwb3J0ZWQgYnkgd2luYXBpX2NoZWNrCgktIFJlbmFtZWQgTWFwVmlydHVhbEtleUV4MzJBIHRvIE1hcFZpcnR1YWxLZXlFeEEKCS0gUmVuYW1lZCBDUlRETExfX2RsbG9uZXhpdCB0byBDUlRETExfX19kbGxpbml0CgoJKiBkbGxzL29sZTMyL2lmcy5jLCBkbGxzL3R0eWRydi90dHlkcnZfbWFpbi5jLCBtaXNjL3ByaW50ZHJ2LmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgd2FybmluZ3MuCgoJKiB0b29scy93aW5hcGlfY2hlY2svd2luMzIva2VybmVsMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2NoZWNrLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX29wdGlvbnMucG06CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gVXBkYXRlZCB0aGUgQVBJIGZpbGVzLgoJLSBNaW5vciBidWcgZml4ZXMKCgkqIGRsbHMvY29tY3RsMzIvYW5pbWF0ZS5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglEbyBhIExvYWRMaWJyYXJ5QSBvZiBXSU5NTSB1cG9uIEFOSU1BVEVfQ3JlYXRlIGFuZCBhIEZyZWVMaWJyYXJ5IHVwb24KCUFOSU1BVEVfRGVzdHJveS4KCgkqIHRvb2xzL3dyYy9wYXJzZXIubDogUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglNaW5vciBmaXggaW4gd3JjIHRvIHN1cHBvcnQgdGhlIFNvbGFyaXMgcHJlcHJvY2Vzc29yLgoKCSogZGVidWdnZXIvbXNjLmM6IFBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSBBTlNJIEMgdmlvbGF0aW9ucy4KCgkqIGRvY3VtZW50YXRpb24vbm8td2luZG93czoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQWRkIHN0YXJ0IG1lbnUgZGlyZWN0b3JpZXMuCgoJKiBzY2hlZHVsZXIvc3lzZGVwcy5jLCBzY2hlZHVsZXIvdGhyZWFkLmM6CglQdXQgQ0xPTkVfRklMRVMgYmFjayBpbiwgaXQgaXMgc3RpbGwgYnJlYWtpbmcgdG9vIG1hbnkgdGhpbmdzLgoKCSogb2JqZWN0cy9iaXRtYXAuYywgZ3JhcGhpY3MvdHR5ZHJ2L2JpdG1hcC5jLCBncmFwaGljcy94MTFkcnYvYml0bWFwLmMsIGdyYXBoaWNzL3gxMWRydi9icnVzaC5jLCBncmFwaGljcy94MTFkcnYvZGliLmMsIGdyYXBoaWNzL3gxMWRydi9pbml0LmMsIGdyYXBoaWNzL3gxMWRydi9vZW1iaXRtYXAuYywgaW5jbHVkZS9iaXRtYXAuaCwgaW5jbHVkZS94MTFkcnYuaDoKCU1lcmdlZCBEREJpdG1hcCBhbmQgcGh5c0JpdG1hcCBpbnRvIHRoZSBnZW5lcmljIGJpdG1hcCBzdHJ1Y3R1cmUKCShzdWdnZXN0ZWQgYnkgQW5kcmV3IExld3lja3kpLgoKCSogZmlsZXMvZG9zX2ZzLmM6CglJZ25vcmUgdHJhaWxpbmcgc3BhY2VzIGluIERPU0ZTX1RvRG9zRkNCRm9ybWF0LgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jOgoJRml4ZWQgc21hbGwgYnVnIGluIFdTT0NLMzJfYWNjZXB0CgoyMDAwLTAzLTI2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS92ZXJzaW9uLmgsIEFOTk9VTkNFLCBDaGFuZ2VMb2c6CglSZWxlYXNlIDIwMDAwMzI2LgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoyMDAwLTAzLTI2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZmlsZXMvZG9zX2ZzLmM6IFN0ZWZhbiBMZWljaHRlciA8c2xlQGNhbWxpbmUuY29tPgoJRE9TRlNfVG9Eb3NGQ0JGb3JtYXQ6IGZhaWwgaWYgZXh0ZW5zaW9uIGxvbmdlciB0aGFuIDMgY2hhcmFjdGVycy4KCgkqIHRvb2xzL2N2ZHVtcC8uY3ZzaWdub3JlLCB0b29scy9jdmR1bXAvTWFrZWZpbGUuaW4sIHRvb2xzL2N2ZHVtcC9jdmNydW5jaC5jLCB0b29scy9jdmR1bXAvY3ZkdW1wLmMsIHRvb2xzL2N2ZHVtcC9jdmR1bXAuaCwgdG9vbHMvY3ZkdW1wL2N2aW5jbHVkZS5oLCB0b29scy9jdmR1bXAvY3Zsb2FkLmMsIE1ha2VmaWxlLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCUpvaG4gUi4gU2hlZXRzIDxqc2hlZXRzQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIGN2ZHVtcCB0b29sIHRvIGR1bXAgQ29kZVZpZXcgc3ltYm9sIGluZm9ybWF0aW9uLgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jLCBpbmNsdWRlL3NlcnZlci5oLCBzZXJ2ZXIvc29jay5jLCBzZXJ2ZXIvdHJhY2UuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJSGFuZGxlIFBPTExIVVAgYmV0dGVyIChkZWxheSBGRF9DTE9TRSBub3RpZmljYXRpb24gdW50aWwgYWxsIGRhdGEgaGFzCgliZWVuIHJlYWQpLiBNYWRlIFdTQUVudW1OZXR3b3JrRXZlbnRzIGF0b21pYy4gQ29udmVydCBzb2NrZXQgZXZlbnQKCWVycm9yIGNvZGVzIHByb3Blcmx5LiBNYWRlIGFjY2VwdCgpLWVkIHNvY2tldHMgaW5oZXJpdCB0aGUgbGlzdGVuaW5nCglzb2NrZXQncyBXU0FBc3luY1NlbGVjdCgpLgoKCSogZGxscy9kc291bmQvZHNvdW5kX21haW4uYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJRml4ZWQgZGVidWcgZm9ybWF0dGluZy4KCgkqIGRsbHMvYWR2YXBpMzIvcmVnaXN0cnkuYzogRml4ZWQgZXJyb3IgY2hlY2tpbmcgaW4gcmVnaXN0cnkgc2F2aW5nLgoKCSogbWlzYy9jZHJvbS5jOiBVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglVc2Ugc3RyZXJyb3IgaW4gZGVidWcgb3V0cHV0LgoKCSogZGxscy9zaGVsbDMyL2NoYW5nZW5vdGlmeS5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJU0hDaGFuZ2VOb3RpZnlbQXxXXTogZnJlZSBvbmx5IGl0ZW1zIHdlIGFsbG9jYXRlZC4KCgkqIGxvYWRlci9yZXNvdXJjZS5jLCBvYmplY3RzL2VuaG1ldGFmaWxlLmMsIG9iamVjdHMvZm9udC5jLCBvYmplY3RzL3RleHQuYywgd2luMzIvY29uc29sZS5jOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUZpeGVzIGZvciBpMThuLgoKCSogZGVidWdnZXIvc3RhYnMuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglOb3cgcmVhZCAuc28gbGlzdCBmcm9tIGRlYnVnZ2VlJ3MgYWRkcmVzcyBzcGFjZS4KCgkqIGluY2x1ZGUvd2luZG93c3guaDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglBZGRlZCBtaXNzaW5nIG1hY3Jvcy4KCgkqIGluY2x1ZGUvd2lubnQuaCwgaW5jbHVkZS93aW5yZWcuaCwgc2VydmVyL3JlZ2lzdHJ5LmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCU1vdmVkIHNvbWUgcmVnaXN0cnkgZGVmaW5pdGlvbnMgdG8gd2lubnQuaC4KCgkqIHByb2dyYW1zL3dpbmhlbHAvd2luaGVscC5zcGVjLCBwcm9ncmFtcy9jbWRsZ3RzdC9jbWRsZ3RzdC5zcGVjLCBwcm9ncmFtcy9ub3RlcGFkL25vdGVwYWQuc3BlYywgcHJvZ3JhbXMvcHJvZ21hbi9wcm9nbWFuLnNwZWM6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJQWRkZWQgaW1wb3J0IG9mIGNvbWRsZzMyLmRsbCBpbiBzcGVjIGZpbGUuCgoJKiB3aW5kb3dzL3dpbnBvcy5jOiBHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCUFjdGl2YXRlIGEgaGlkZGVuIHdpbmRvdyBvbmx5IHdoZW4gZXhwbGljaXRlbHkgYXNrZWQgYnkgdGhlCglhcHBsaWNhdGlvbi4KCgkqIGRlYnVnZ2VyL01ha2VmaWxlLmluLCBkZWJ1Z2dlci9icmVhay5jLCBkZWJ1Z2dlci9kYmcueSwgZGVidWdnZXIvZGVidWdnZXIuaCwgZGVidWdnZXIvaGFzaC5jLCBkZWJ1Z2dlci9pbmZvLmMsIGRlYnVnZ2VyL21vZHVsZS5jLCBkZWJ1Z2dlci9tc2MuYywgZGVidWdnZXIvc3RhYnMuYywgZGVidWdnZXIvd2luZWRiZy5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglpbXByb3ZlZCBleGNlcHRpb24gaGFuZGxpbmcKCW1lcmdlZCBhbGwgbW9kdWxlIGhhbmRsaW5nIGNvZGUgaW4gbmV3IG1vZHVsZS5jIGZpbGUKCXJlZW5hYmxlZCAnd2FsayBtb2R1bGUnIGFuZCAnaW5mbyBtb2R1bGUnIGNvbW1hbmRzCglhZGRlZCBhYmlsaXR5IHRvIGRyaXZlIGJyZWFrIG9uIHRocmVhZCBzdGFydHVwCgoJKiBkbGxzL29sZWF1dDMyL29sZWF1dC5jLCBkbGxzL29sZWF1dDMyL29sZWF1dDMyLnNwZWM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVN0dWJzIGZvciBEbGxSZWdpc3RlclNlcnZlci9EbGxVbnJlZ2lzdGVyU2VydmVyLgoKCSogZGxscy93aW5hc3BpL3dpbmFzcGkzMi5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIHJldHVybiB2YWx1ZSBmb3IgU0NfR0VUX0RFVl9UWVBFLgoKMjAwMC0wMy0yNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNlcnZlci9yZWdpc3RyeS5jLCBzZXJ2ZXIvdHJhY2UuYywgdG9vbHMvYnVpbGQuYywgd2luZG93cy9jdXJzb3JpY29uLmMsIHdpbmRvd3MvZGNlLmMsIHdpbmRvd3MvbXNnYm94LmMsIHdpbmRvd3Mvbm9uY2xpZW50LmMsIHdpbmRvd3MvcmVjdC5jLCB3aW5kb3dzL3RpbWVyLmMsIHdpbmRvd3MvdXNlci5jLCB3aW5kb3dzL3dpbnBvcy5jLCB3aW5kb3dzL3dpbnByb2MuYywgbG9hZGVyL3BlX2ltYWdlLmMsIGxvYWRlci9yZXNvdXJjZS5jLCBtZW1vcnkvaGVhcC5jLCBtZW1vcnkvbG9jYWwuYywgbWlzYy92ZXJzaW9uLmMsIG1zZG9zL2ludDIxLmMsIG9iamVjdHMvZW5obWV0YWZpbGUuYywgb2JqZWN0cy9yZWdpb24uYywgcHJvZ3JhbXMvd2luaGVscC9obHBmaWxlLmMsIHByb2dyYW1zL3dpbmhlbHAvbWFjcm8uYywgcHJvZ3JhbXMvd2luaGVscC93aW5oZWxwLmMsIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jLCBmaWxlcy9kb3NfZnMuYywgZmlsZXMvZHJpdmUuYywgZmlsZXMvZmlsZS5jLCBmaWxlcy9wcm9maWxlLmMsIGdyYXBoaWNzL2VuaG1ldGFmaWxlZHJ2L2dyYXBoaWNzLmMsIGdyYXBoaWNzL2VuaG1ldGFmaWxlZHJ2L2luaXQuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvaW5pdC5jLCBncmFwaGljcy94MTFkcnYvZ3JhcGhpY3MuYywgZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsIGluY2x1ZGUvd2luZGVmLmgsIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jLCBkbGxzL2NvbWN0bDMyL3RyYWNrYmFyLmMsIGRsbHMvY29tY3RsMzIvdXBkb3duLmMsIGRsbHMvY29tbWRsZy9jb2xvcmRsZy5jLCBkbGxzL2NydGRsbC9jcnRkbGxfbWFpbi5jLCBkbGxzL29sZTMyL2hnbG9iYWxzdHJlYW0uYywgZGxscy9vbGUzMi9tZW1sb2NrYnl0ZXMuYywgZGxscy9vbGUzMi9zdGdfc3RyZWFtLmMsIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmMsIGRsbHMvd2lubW0vbG9sdmxkcnYuYywgZGxscy93aW5tbS9tY2l3YXZlL21jaXdhdmUuYywgZGxscy93aW5tbS9tbWlvLmMsIGRsbHMvd2lubW0vbW1zeXN0ZW0uYywgZGxscy93aW5tbS90aW1lLmMsIGNvbnRyb2xzL2VkaXQuYywgY29udHJvbHMvbWVudS5jLCBjb250cm9scy9zY3JvbGwuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJVXNlIG1pbi9tYXggaW5zdGVhZCBvZiBNSU4vTUFYLgoKCSogc2VydmVyL3NvY2suYzogT3ZlIEthYXZlbiA8b3ZlaGtAcGluZy51aW8ubm8+CglIYW5kbGUgc29ja2V0IFBPTExFUlIvUE9MTEhVUCBjb25kaXRpb25zIHByb3Blcmx5LgoJQ2xlYXIgZXJyb3IgZmllbGQgZm9yIE9PQiBub3RpZmljYXRpb25zLgoKCSogY29udHJvbHMvbGlzdGJveC5jOiBIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglTZW5kIHRoZSBjb3JyZWN0IE9EQV8gY29kZSB3aGVuIGRlc2VsZWN0aW5nIGFuIGl0ZW0uCgoJKiB3aW5kb3dzL3VzZXIuYywgaW5jbHVkZS9wcm9jZXNzLmgsIGluY2x1ZGUvc2VydmVyLmgsIGluY2x1ZGUvdGhyZWFkLmgsIGxvYWRlci9uZS9tb2R1bGUuYywgbG9hZGVyL3Rhc2suYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2NoZWR1bGVyL3N5c2RlcHMuYywgc2NoZWR1bGVyL3RocmVhZC5jLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90cmFjZS5jOgoJRml4ZWQgYSBjb3VwbGUgb2YgZmlsZSBkZXNjcmlwdG9yIGxlYWtzLgoJQWx3YXlzIGNhbGwgVVNFUiBzaWduYWwgcHJvYyBpbiB0aGUgcmlnaHQgY29udGV4dC4KCUNsZWFuZWQgdXAgVEhSRUFEX0NyZWF0ZS4KCgkqIGluY2x1ZGUvTWFrZWZpbGUuaW46CglEbyBub3QgZXJhc2UgbG9jYWwgZmlsZXMgb24gdW5pbnN0YWxsIGlmIGluc3RhbGwgZGlyIGRvZXMgbm90IGV4aXN0LgoKCSogd2luZG93cy9tdWx0aW1vbi5jLCB3aW5kb3dzL3N5c3BhcmFtcy5jLCB3aW5kb3dzL3R0eWRydi9NYWtlZmlsZS5pbiwgd2luZG93cy90dHlkcnYvZGVza3RvcC5jLCB3aW5kb3dzL3R0eWRydi9pbml0LmMsIHdpbmRvd3MvdHR5ZHJ2L21vbml0b3IuYywgd2luZG93cy90dHlkcnYvd25kLmMsIHdpbmRvd3MvdXNlci5jLCB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3gxMWRydi9NYWtlZmlsZS5pbiwgd2luZG93cy94MTFkcnYvaW5pdC5jLCB3aW5kb3dzL3gxMWRydi9tb25pdG9yLmMsIGNvbnRyb2xzL2Rlc2t0b3AuYywgZGxscy90dHlkcnYvdHR5ZHJ2X21haW4uYywgZGxscy94MTFkcnYveDExZHJ2X21haW4uYywgZ3JhcGhpY3MvdHR5ZHJ2L2RjLmMsIGluY2x1ZGUvZGVza3RvcC5oLCBpbmNsdWRlL21vbml0b3IuaCwgaW5jbHVkZS90dHlkcnYuaCwgaW5jbHVkZS91c2VyLmgsIGluY2x1ZGUveDExZHJ2LmgsIG1pc2MvbWFpbi5jLCB3aW5kb3dzL2RjZS5jOgoJU3RvcmUgbW9uaXRvciBzaXplIGFuZCBkZXB0aCBpbiB0aGUgZ2VuZXJpYyBzdHJ1Y3R1cmUuCglNZXJnZWQgbW9uaXRvciBkcml2ZXIgaW50byBVU0VSIGRyaXZlci4KCgkqIHdpbmRvd3MvdHR5ZHJ2L01ha2VmaWxlLmluLCB3aW5kb3dzL3R0eWRydi9tYWluLmMsIHdpbmRvd3MveDExZHJ2L01ha2VmaWxlLmluLCB3aW5kb3dzL3gxMWRydi9kZXNrdG9wLmMsIHdpbmRvd3MveDExZHJ2L21haW4uYywgd2luZG93cy94MTFkcnYvbW9uaXRvci5jLCB3aW5kb3dzL3gxMWRydi9tb3VzZS5jLCB3aW5kb3dzL3gxMWRydi93bmQuYywgZGxscy9kZHJhdy9kZHJhd19tYWluLmMsIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmMsIGdyYXBoaWNzL3gxMWRydi9iaXRtYXAuYywgZ3JhcGhpY3MveDExZHJ2L2JydXNoLmMsIGdyYXBoaWNzL3gxMWRydi9kaWIuYywgZ3JhcGhpY3MveDExZHJ2L2dyYXBoaWNzLmMsIGdyYXBoaWNzL3gxMWRydi9pbml0LmMsIGdyYXBoaWNzL3gxMWRydi9vZW1iaXRtYXAuYywgZ3JhcGhpY3MveDExZHJ2L3BhbGV0dGUuYywgaW5jbHVkZS94MTFkcnYuaDoKCUEgZmV3IHNpbXBsaWZpY2F0aW9ucyBhbmQgb3B0aW1pemF0aW9ucyBpbiB0aGUgeDExIGRyaXZlci4KCgkqIE1ha2UucnVsZXMuaW4sIE1ha2VmaWxlLmluLCBkbGxzL2RkcmF3L01ha2VmaWxlLmluLCBkbGxzL3R0eWRydi9NYWtlZmlsZS5pbiwgZGxscy94MTFkcnYvTWFrZWZpbGUuaW46CglMaW5rIHR0eWRydiBhbmQgeDExZHJ2IG9iamVjdHMgaW50byB0aGVpciByZXNwZWN0aXZlIGRsbC4KCgkqIGRsbHMvdXNlci9NYWtlZmlsZS5pbjogQWRkZWQgbWlzc2luZyBrZXlib2FyZC5zcGVjLgoKMjAwMC0wMy0yNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MvbXNnYm94LmMsIG1pc2MvY29tbS5jLCBtaXNjL3ByaW50ZHJ2LmMsIHdpbjMyL2V4Y2VwdC5jOgoJTW92ZWQgRmF0YWxBcHBFeGl0IGZ1bmN0aW9ucyB0byB3aW4zMi9leGNlcHQuYy4KCUFkZGVkIGEgZmV3IHVzZXMgb2YgQ2FsbG91dCBpbnN0ZWFkIG9mIHJlZmVyZW5jaW5nIFVTRVIgZnVuY3Rpb25zCglkaXJlY3RseS4KCgkqIHdpbmRvd3MvY3Vyc29yaWNvbi5jLCBpbmNsdWRlL2JpdG1hcC5oLCBvYmplY3RzL2JpdG1hcC5jOgoJTW92ZWQgTG9hZEltYWdlIGFuZCByZWxhdGVkIGZ1bmN0aW9ucyB0byBjdXJzb3JpY29uLmMuCgoJKiBkbGxzL2dkaS8uY3ZzaWdub3JlLCBkbGxzL2dkaS9NYWtlZmlsZS5pbiwgZGxscy9nZGkvZ2RpLnNwZWMsIGRsbHMvZ2RpL3RodW5rLmMsIGRsbHMvdXNlci8uY3ZzaWdub3JlLCBkbGxzL3VzZXIvTWFrZWZpbGUuaW4sIGRsbHMvdXNlci9rZXlib2FyZC5zcGVjLCBkbGxzL3VzZXIvdGh1bmsuYywgZGxscy91c2VyL3VzZXIuc3BlYywgaWYxNjMyLy5jdnNpZ25vcmUsIGlmMTYzMi9NYWtlZmlsZS5pbiwgaWYxNjMyL2tleWJvYXJkLnNwZWMsIGlmMTYzMi90aHVuay5jLCBpbmNsdWRlL2NhbGxiYWNrLmgsIG9iamVjdHMvbGluZWRkYS5jLCB3aW5kb3dzL3dpbi5jOgoJTW92ZWQgZ2RpL3VzZXIgdGh1bmtpbmcgZnVuY3Rpb25zIGludG8gdGhlaXIgcmVzcGVjdGl2ZSBkbGxzLgoJTW92ZWQga2V5Ym9hcmQuc3BlYyBpbnRvIHVzZXIgZGxsLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW46IExpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglEaXNhYmxlIE9wZW5HTCBzdXBwb3J0IGlmIHRoZSBsYXR0ZXIgaXMgdGhyZWFkIHNhZmUuCgoJKiBkZWJ1Z2dlci9kYmcueSwgZGVidWdnZXIvbWVtb3J5LmMsIGRsbHMvY3J0ZGxsL3djc3RyaW5nLmMsIGRsbHMvb2xlMzIvY2xpcGJvYXJkLmMsIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmgsIGdyYXBoaWNzL3dpbjE2ZHJ2L2luaXQuYywgZ3JhcGhpY3MveDExZHJ2L2RpYi5jLCBzY2hlZHVsZXIvc3lzZGVwcy5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIHdhcm5pbmdzLgoKCSogZGxscy9kaW5wdXQvZGlucHV0X21haW4uYywgZ3JhcGhpY3MvZGlzcGRpYi5jLCBpbmNsdWRlL2FuaW1hdGUuaCwgaW5jbHVkZS9idXR0b24uaCwgaW5jbHVkZS9jcnRkbGwuaCwgaW5jbHVkZS9kaW5wdXQuaCwgaW5jbHVkZS9kaXNwZGliLmgsIGluY2x1ZGUvZW5obWV0YWZpbGUuaCwgaW5jbHVkZS9pbWFnZWxpc3QuaCwgaW5jbHVkZS9tZXRhZmlsZS5oLCBpbmNsdWRlL3JlZ2lvbi5oLCBpbmNsdWRlL3NxbHR5cGVzLmgsIGluY2x1ZGUvd2luZS9pY21wYXBpLmgsIGluY2x1ZGUvd2luZS9vYmpfY29tbWRsZ2Jyb3dzZXIuaCwgaW5jbHVkZS93aW5lL29ial9jb250ZXh0bWVudS5oLCBpbmNsdWRlL3dpbmUvb2JqX2RvY2tpbmd3aW5kb3dmcmFtZS5oLCBpbmNsdWRlL3dpbmUvb2JqX3Byb3BlcnR5LmgsIGluY2x1ZGUvd2luZS9vYmpfc2hlbGxleHRpbml0LmgsIGluY2x1ZGUvd2luZS93aW5kZWYxNi5oLCBpbmNsdWRlL3dpbmUvd2luZ2RpMTYuaCwgaW5jbHVkZS93aW5wb3MuaDoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJTWFkZSB0aGUgaW5jbHVkZSBmaWxlcyBzZWxmIHN1ZmZpY2llbnQuCgoJKiBkbGxzL3dpbjMycy93MzJza2VybmVsLmMsIGRsbHMvd2lubW0vam95c3RpY2suYywgZGxscy93aW5tbS9tbXN5c3RlbS5jLCBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYywgZGxscy93aW5zb2NrL3NvY2tldC5jLCBkbGxzL3dpbnNvY2svd3NvY2szMi5zcGVjLCBtaXNjL2RkZW1sLmMsIGRsbHMvb2xlYXV0MzIvb2xlYXV0LmMsIGRsbHMvb2xlYXV0MzIvc2FmZWFycmF5LmMsIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jLCBkbGxzL29sZXBybzMyL29sZXBybzMyc3R1YnMuYywgZGxscy9zaGVsbDMyL2NoYW5nZW5vdGlmeS5jLCBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmMsIGRsbHMvc2hlbGwzMi9zaGVsbC5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jLCBkbGxzL3NoZWxsMzIvc3lzdHJheS5jLCBkbGxzL3RhcGkzMi9hc3Npc3RlZC5jLCBkbGxzL3RhcGkzMi9saW5lLmMsIGRsbHMvdGFwaTMyL3Bob25lLmMsIGRsbHMvdmVyc2lvbi9pbnN0YWxsLmMsIGRsbHMvZHBsYXl4L2RwY2xhc3NmYWN0b3J5LmMsIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmMsIGRsbHMvaWNtcC9pY21wX21haW4uYywgZGxscy9tcHIvbXByX21haW4uYywgZGxscy9tc3ZpZGVvL21zdmlkZW9fbWFpbi5jLCBkbGxzL250ZGxsL250LmMsIGRsbHMvbnRkbGwvcnRsLmMsIGRsbHMvbnRkbGwvc2VjLmMsIGRsbHMvbnRkbGwvdGltZS5jLCBkbGxzL29kYmMzMi9wcm94eW9kYmMuYywgZGxscy9vbGUzMi9jb21wb3NpdGVtb25pa2VyLmMsIGRsbHMvYXZpZmlsMzIvYXZpZmlsZS5jLCBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYywgZGxscy9jb21jdGwzMi9kcmFnbGlzdC5jLCBkbGxzL2NvbWN0bDMyL2ZsYXRzYi5jLCBkbGxzL2NvbW1kbGcvZmluZGRsZzMyLmMsIGRsbHMvZGRyYXcvZGRyYXdfbWFpbi5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglBZGRlZC9maXhlZCBzb21lIGRvY3VtZW50YXRpb24gcmVwb3J0ZWQgYnkgd2luYXBpX2NoZWNrLgoKCSogcmVsYXkzMi9rZXJuZWwzMi5zcGVjLCBzY2hlZHVsZXIvY3JpdHNlY3Rpb24uYywgd2luMzIvbmV3Zm5zLmMsIHdpbmRvd3MvcGFpbnRpbmcuYywgZGxscy9jcnRkbGwvY3J0ZGxsLnNwZWMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZ3JhcGhpY3MvcGFpbnRpbmcuYywgaW5jbHVkZS9kZGVtbC5oLCBpbmNsdWRlL3dpbmdkaS5oOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIGlzc3VlcyByZXBvcnRlZCBieSB3aW5hcGlfY2hlY2suCgoJKiBpbmNsdWRlL3dpbm50LmgsIG9sZS9vbGUybmxzLmMsIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYywgZGxscy9vbGUzMi9zdG9yYWdlMzIuYywgZGxscy9zaGVsbDMyL3NobHZpZXcuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSBBTlNJIEMgdmlvbGF0aW9ucy4KCgkqIHByb2dyYW1zL2NtZGxndHN0L2NtZGxndHN0LmMsIHByb2dyYW1zL25vdGVwYWQvRGEucmMsIHByb2dyYW1zL25vdGVwYWQvRGUucmMsIHByb2dyYW1zL25vdGVwYWQvZGlhbG9nLmMsIHByb2dyYW1zL3JlZ2FwaS9yZWdhcGkuYywgcHJvZ3JhbXMvcmVndGVzdC9yZWd0ZXN0LmMsIHByb2dyYW1zL3ZpZXcvdmlldy5jLCBwcm9ncmFtcy93Y21kL2RpcmVjdG9yeS5jLCBwcm9ncmFtcy93Y21kL3djbWRtYWluLmMsIHByb2dyYW1zL2F2aXRvb2xzL2F2aXBsYXkuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgQU5TSSBDIHJlbGF0ZWQgY29tcGlsZSBwcm9ibGVtcy4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9nZGkzMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9rZXJuZWwzMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9vbGUzMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9vbGVhdXQzMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi91c2VyMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvd2lubW0uYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMTYvZGRlbWwuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2NoZWNrLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2Z1bmN0aW9uLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX29wdGlvbnMucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfcGFyc2VyLnBtOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIFVwZGF0ZWQgQVBJIGZpbGVzCgktIERvbid0IGNoZWNrIHRoZSAqLnNwZWMuYyBmaWxlcwoJLSBCZXR0ZXIgcGFyc2luZyBvZiBzdHJpbmdzCgktIEJldHRlciBkb2N1bWVudGF0aW9uIGNoZWNraW5nCgktIE1pbm9yIGJ1ZyBmaXhlcwoKCSogZGxscy9kaW5wdXQvZGlucHV0X21haW4uYzogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gYWRkZWQgc29tZSBkZWJ1ZyBjb2RlIGFuZCBjbGVhbmVkLXVwIHRoZSBtb3VzZSB3YXJwaW5nIGNvZGUKCS0gYmUgcmVhZHkgb25jZSBtb3VzZSB3aWxsIGJlIHJlcG9ydGVkIHJlbGF0aXZlbHkKCgkqIHdpbmRvd3MvbWRpLmM6IEh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUZpeGVkIGNvcHlpbmcgb2YgdGhlIE1ESSAnV2luZG93cycgbWVudSBpdGVtcyBpZiB0aGUgaXRlbXMgYXJlIG5vdCBvZgoJdHlwZSBNRlRfU1RSSU5HLgoKCSogY29udHJvbHMvbWVudS5jOiBIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglTZXQgdGhlIGNvcnJlY3QgdmFsdWUgZm9yIHRoZSBjY2ggZWxlbWVudCBvZiBNRU5VSVRFTUlORk8gaW4KCUdldE1lbnVJdGVtSW5mby4KCgkqIGRsbHMvZ2RpL2dkaTMyLnNwZWM6IEh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUZpeCBzcGVjIGZpbGUgZW50cmllcyBmb3IgRW51bUZvbnRGYW1pbGllc0V4Ki4KCgkqIHRvb2xzL2J1Z19yZXBvcnQucGw6IEdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJRnVydGhlciBjb2RlIHNpbXBsaWZpY2F0aW9ucyBhbmQgaW50ZXJmYWNlIChjb25zaXN0ZW5jeSkgaW1wcm92ZW1lbnRzLgoJRml4IHNlbGVjdGlvbiBvZiB0aGUgV2luZSBiaW5hcnkgd2hpY2ggd2FzIGJyb2tlbiBieSBhIHJlY2VudCBjaGFuZ2UuCgoJKiB3aW5kb3dzL3N5c3BhcmFtcy5jOiBBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCUFkZGVkIHByb3BlciB0ZXJtaW5hdGlvbiB1cG9uIGZhaWx1cmUuCgoJKiBkZWJ1Z2dlci90eXBlcy5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGJhc2ljIHR5cGUgZXZhbHVhdGlvbi4KCgkqIHNlcnZlci9yZWdpc3RyeS5jOiBIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglFbnN1cmUgdGhhdCBub24tTlVMTCB0ZXJtaW5hdGVkIHN0aW5ncyBhcmUgc2F2ZWQgY29ycmVjdGx5LgoKCSogd2luZG93cy9pbnB1dC5jOiBSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJQ29ycmVjdCB0aGUgTm90aWZ5Q29kZSBpbiB0aGUgV01fQ09NTUFORCBtZXNzYWdlIHNlbnQgYnkKCUtCRF90cmFuc2xhdGVfYWNjZWxlcmF0b3IoKS4KCgkqIGRsbHMvd2luYXNwaS93aW5hc3BpMzIuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTbGlnaHRseSBiZXR0ZXIgUkVRVUVTVCBTRU5TRSBkdW1waW5nLCBmaXhlZCBHRVRfREVWX1RZUEUgcmV0dXJucywKCXdvcmsgYXJvdW5kIEVYRUMgU0NTSSBjb21tYW5kcyB3aGljaCBkbyBub3Qgc2V0IHRoZSBob3N0PC0+dGFyZ2V0IGRhdGEKCWZsYWdzLCBpZ25vcmUgZXJyb3JzIG9uIERWRCBSRVBPUlQgS0VZL0RWRCBTRU5EIEtFWS4KCgkqIHNlcnZlci9jb250ZXh0X2kzODYuYzogUGV0ZXIgSHVubmlzZXR0IDxodW5uaXNlQG5vcnRlbG5ldHdvcmtzLmNvbT4KCUNoYW5nZWQgUFRSQUNFX1BFRUtVU0VSIHRvIFBUUkFDRV9QRUVLVVNSIGFuZCBQVFJBQ0VfUE9LRVVTRVIgdG8KCVBUUkFDRV9QT0tFVVNSIGZvciBsaWJjNSg/KSBjb21waWxlLgoKCSogY29udHJvbHMvY29tYm8uYzogSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJU3RvcCBhIFdNX1NFVFRFWFQgbWVzc2FnZSAoYW5kIGZyaWVuZHMpIHRvIGEgY29tYm8gc2VuZGluZyBDQk5fRURJVCoKCW1lc3NhZ2VzIHRvIHRoZSBwYXJlbnQuCgoJKiBpbmNsdWRlL3dpbmJhc2UuaCwgbWVtb3J5L2hlYXAuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglBZGRlZCAoY29ycmVjdCkgcHJvdG90eXBlIGZvciBIZWFwV2Fsay4KCgkqIGRsbHMvb2xlMzIvaWZzLmMsIGluY2x1ZGUvd2luZS9vYmpfYmFzZS5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CgktIFRoZSBJQ09NX0NNRVRIT0R4eHggY2F1c2UgcHJvYmxlbXMgYmVjYXVzZSB0aGUgJ2NvbnN0JyBjaGFuZ2VzIHRoZQoJICBzaWduYXR1cmUuIFRoZXJlJ3Mgbm8gc3VjaCB0aGluZyBvbiBXaW5kb3dzIGFueXdheSAoaXQncyBhIHNoYW1lKSBzbwoJICBqdXN0IHJlbW92ZSB0aGVtIGFsdG9nZXRoZXIuCgktIEhlYXBNaW5pbWl6ZSByZXR1cm5zIGEgdm9pZCwgbm90IGEgJ3ZvaWQqJwoKMjAwMC0wMy0yMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MvdHR5ZHJ2L2V2ZW50LmMsIHdpbmRvd3MvdHR5ZHJ2L2luaXQuYywgd2luZG93cy90dHlkcnYva2V5Ym9hcmQuYywgd2luZG93cy90dHlkcnYvbWFpbi5jLCB3aW5kb3dzL3gxMWRydi9kZXNrdG9wLmMsIHdpbmRvd3MveDExZHJ2L2luaXQuYywgd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYywgd2luZG93cy94MTFkcnYvbWFpbi5jLCBsb2FkZXIvbWFpbi5jLCBtaXNjL21haW4uYywgb2JqZWN0cy9nZGlvYmouYywgd2luZG93cy9ldmVudC5jLCB3aW5kb3dzL2tleWJvYXJkLmMsIHdpbmRvd3MvbXVsdGltb24uYywgd2luZG93cy90dHlkcnYvZGVza3RvcC5jLCB3aW5kb3dzL3dpbi5jLCBjb250cm9scy9kZXNrdG9wLmMsIGRsbHMvZGlucHV0L2RpbnB1dF9tYWluLmMsIGRsbHMvZGlzcGxheS9kaXNwbGF5X21haW4uYywgZGxscy9tb3VzZS9tb3VzZV9tYWluLmMsIGRsbHMvdHR5ZHJ2L3R0eWRydi5zcGVjLCBkbGxzL3R0eWRydi90dHlkcnZfbWFpbi5jLCBkbGxzL3gxMWRydi94MTFkcnYuc3BlYywgZGxscy94MTFkcnYveDExZHJ2X21haW4uYywgZ3JhcGhpY3MvdHR5ZHJ2L2luaXQuYywgZ3JhcGhpY3MveDExZHJ2L2luaXQuYywgaW5jbHVkZS9kZXNrdG9wLmgsIGluY2x1ZGUva2V5Ym9hcmQuaCwgaW5jbHVkZS9tZXNzYWdlLmgsIGluY2x1ZGUvbW9uaXRvci5oLCBpbmNsdWRlL21vdXNlLmgsIGluY2x1ZGUvdHR5ZHJ2LmgsIGluY2x1ZGUvdXNlci5oLCBpbmNsdWRlL3gxMWRydi5oOgoJTW92ZWQgZ3JhcGhpY3MgaW5pdGlhbGlzYXRpb24gdG8gdGhlIHgxMWRydi90dHlkcnYgZGxsIGluaXQgY29kZS4KCU1lcmdlZCBldmVudCwga2V5Ym9hcmQgYW5kIG1vdXNlIGRyaXZlcnMgaW50byBVU0VSIGRyaXZlci4KCjIwMDAtMDMtMTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBvbGUvb2xlMm5scy5jOiBBbmRyZXcgTGV3eWNreSA8YW5kcmV3bEBjb3JlbC5jb20+CglJbXByb3ZlZCBDb21wYXJlU3RyaW5nQSBwZXJmb3JtYW5jZS4KCgkqIGxpYnJhcnkvd2luZXN0dWIuYzogQWRkZWQgbWlzc2luZyBkZWJ1Z3Rvb2xzLmggaW5jbHVkZS4KCgkqIHByb2dyYW1zL3dpbmhlbHAvaGxwZmlsZS5jLCBwcm9ncmFtcy93aW5oZWxwL21hY3JvLmMsIHByb2dyYW1zL3dpbmhlbHAvbWFjcm8ubGV4LmwsIHByb2dyYW1zL3dpbmhlbHAvd2luaGVscC5jLCBwcm9ncmFtcy9jbG9jay9sYW5ndWFnZS5jLCBwcm9ncmFtcy9jbG9jay9tYWluLmgsIHByb2dyYW1zL2NtZGxndHN0L2NtZGxndHN0LmMsIHByb2dyYW1zL25vdGVwYWQvZGlhbG9nLmMsIHByb2dyYW1zL25vdGVwYWQvbWFpbi5jLCBwcm9ncmFtcy9ub3RlcGFkL3NlYXJjaC5jLCBwcm9ncmFtcy9wcm9nbWFuL2RpYWxvZy5jLCBwcm9ncmFtcy9wcm9nbWFuL2dyb3VwLmMsIHByb2dyYW1zL3Byb2dtYW4vbWFpbi5jLCBwcm9ncmFtcy9wcm9nbWFuL3Byb2dyYW0uYywgcHJvZ3JhbXMvdmlldy9pbml0LmMsIHByb2dyYW1zL3ZpZXcvdmlldy5jOgoJTmllbHMgS3Jpc3RpYW4gQmVjaCBKZW5zZW4gPG5rYmpAaW1hZ2UuZGs+CglGaXhlZCBzb21lIGNvbXBpbGVyIGVycm9ycyBhbmQgd2FybmluZ3MuCgoJKiBvbGUvb2xlMm5scy5jOiBTdGV2ZW4gRWxsaW90dCA8ZWxsaW90c2xAbWluZHNwcmluZy5jb20+CglUZW1wb3JhcmlseSBpbXBsZW1lbnRlZCB0aGUgTENNQVBfU09SVEtFWSBmbGFnIGluIHRoZSBMQ01hcFN0cmluZ1coKQoJZnVuY3Rpb24gcGVuZGluZyBhIG1vcmUgY29tcGxldGUgaW1wbGVtZW50YXRpb24gb2YgbG9jYWxlcy4KCgkqIGxvYWRlci9tb2R1bGUuYzoKCUhhY2s6IGFsd2F5cyB0cnkgYnVpbHRpbiBtb2R1bGUgYmVmb3JlIGVsZiBvciBlbGZkbGwgdG8gYXZvaWQgbG9hZGluZwoJYSBidWlsdGluIGRsbCAuc28gZmlsZSBpbiB0aGUgd3JvbmcgbW9kZS4KCgkqIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLCBvYmplY3RzL2ZvbnQuYzoKCU1vdmVkIGZvbnQgcmVzb3VyY2UgZnVuY3Rpb25zIG91dCBvZiB0aGUgWDExIGRyaXZlci4KCgkqIHRvb2xzL21ha2VkZXAuYzoKCUFkZGVkIHN1cHBvcnQgZm9yIHNvdXJjZSBmaWxlcyBzdG9yZWQgaW4gc3ViZGlyZWN0b3JpZXMuCgoJKiBncmFwaGljcy9lbmhtZXRhZmlsZWRydi9pbml0LmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L2luaXQuYywgZ3JhcGhpY3MvcHNkcnYvaW5pdC5jLCBncmFwaGljcy90dHlkcnYvaW5pdC5jLCBncmFwaGljcy93aW4xNmRydi9pbml0LmMsIGdyYXBoaWNzL3gxMWRydi9ncmFwaGljcy5jLCBncmFwaGljcy94MTFkcnYvaW5pdC5jLCBpbmNsdWRlL2dkaS5oLCBpbmNsdWRlL3gxMWRydi5oLCBvYmplY3RzL2RjLmM6CglBZGRlZCBHZXREQ09yZ0V4IGluIGdyYXBoaWNzIGRldmljZSBpbnRlcmZhY2UgYW5kIHJlbW92ZWQgWDExIGNvZGUKCWZyb20gZGMuYy4KCgkqIGRsbHMvd2lubW0vbW1pby5jLCBkbGxzL3dpbm1tL21tc3lzdGVtLnNwZWMsIGRsbHMvd2lubW0vd2luZW1tLmgsIGRsbHMvd2lubW0vd2lubW0uc3BlYywgaW5jbHVkZS9tbXN5c3RlbS5oOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBzZWdtZW50ZWQvbGluZWFyIGJ1ZmZlcnMgbWFuaXB1bGF0aW9uLgoJQmV0dGVyIElPIGJ1ZmZlcmluZy4KCUFkZGVkIHNvbWUgbWlzc2luZyBwcm90b3R5cGVzLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jLCBkbGxzL3NoZWxsMzIvYnJzZm9sZGVyLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCUV4cGxpY2l0bHkgdXNlIHRoZSBUVk5feHh4QSB2ZXJzaW9uIG9mIHRoZSBtYWNyb3MuCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmg6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJLSBBZGRlZCB0aGUgVFZOX3h4eEEgbWFjcm9zCgktIEFkZGVkIG1pc3NpbmcgVEJOT1RJRlkgbWFjcm9zIGFuZCB0eXBlcwoJLSBBZGRlZCBTTkRNU0cKCgkqIGluY2x1ZGUvd2ludXNlci5oOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCUFkZGVkIFdNX0FQUC4KCgkqIHNjaGVkdWxlci9jbGllbnQuYywgc2NoZWR1bGVyL2NyaXRzZWN0aW9uLmMsIHdpbmRvd3MvY2xpcGJvYXJkLmMsIHdpbmRvd3MvdHR5ZHJ2L2NsaXBib2FyZC5jLCB3aW5kb3dzL3R0eWRydi9rZXlib2FyZC5jLCBncmFwaGljcy94MTFkcnYvZ3JhcGhpY3MuYywgZ3JhcGhpY3MveDExZHJ2L3BhbGV0dGUuYywgaW5jbHVkZS94MTFkcnYuaCwgbGlicmFyeS93aW5lc3R1Yi5jLCBsb2FkZXIvbmUvc2VnbWVudC5jLCBtZW1vcnkvdmlydHVhbC5jLCBtaXNjL21haW4uYywgbWlzYy9wcmludGRydi5jLCBtaXNjL3JlZ2lzdHJ5LmMsIG1pc2MveG1hbGxvYy5jLCBvYmplY3RzL3BhbGV0dGUuYywgZ3JhcGhpY3Mvd2luMTZkcnYvaW5pdC5jLCBncmFwaGljcy94MTFkcnYvYml0Ymx0LmMsIGdyYXBoaWNzL3gxMWRydi9icnVzaC5jLCBncmFwaGljcy94MTFkcnYvZGliLmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkaW1pQGNzLnRvcm9udG8uZWR1PgoJUmVtb3ZlZCBtb3N0IGNhbGxzIHRvIHhtYWxsb2MveHJlYWxsb2MuCgoJKiBpbmNsdWRlL3dpbmRlZi5oOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCS0gQWRkZWQgbWlzc2luZyBkZWZpbml0aW9uIGZvciBHTE9CQUxIQU5ETEUgYW5kIExPQ0FMSEFORExFCgktIEZpeGVkIHRoZSBwcm90b3R5cGUgb2YgV05ERU5VTVBST0MKCgkqIGluY2x1ZGUvZGRlbWwuaDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglBZGRlZCBzb21lIG1pc3NpbmcgZGVmaW5lcy4KCgkqIHdpbmRvd3MvZGlhbG9nLmM6IEFuZHJldyBMZXd5Y2t5IDxhbmRyZXdsQGNvcmVsLmNvbT4KCVByb3BhZ2F0ZSBJc0RpYWxvZ01lc3NhZ2UgdG8gdGhlIHBhcmVudCBpZiB0aGUgZGlhbG9nIGhhcyB0aGUKCURTX0NPTlRST0wgZmxhZy4KCgkqIG1lbW9yeS9zdHJpbmcuYzogQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglBZGRlZCBhbiBleGNlcHRpb24gZnJhbWUgZm9yIGxzdHJjcHkxNi4KCgkqIGxvYWRlci9tYWluLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJTm93IGF0dGFjaGluZyBpbXBvcnRlZCBETExzIG9mIGEgd2luZWxpYiBleGVjdXRhYmxlLgoKCSogaW5jbHVkZS93aW5lL29ial9pbnBsYWNlLmg6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSU9sZUl0ZW1Db250YWluZXIgaGFzIE9MRUdVSUQoMHgxMWMpLCBub3QgMHgxMWEuCgoJKiBkbGxzL29sZTMyL2NvbXBvYmouYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCBtZW1vcnkgY29ycnVwdGlvbiB3aXRoIENvVGFza01lbVJlYWxsb2MuCgoJKiB0b29scy9nZW5wYXRjaDogU3RldmVuIEVsbGlvdHQgPGVsbGlvdHNsQG1pbmRzcHJpbmcuY29tPgoJTWFkZSB2YXJpb3VzIGNoYW5nZXMgdG8gdG9vbHMvZ2VucGF0Y2ggaW5jbHVkaW5nIHN1Z2dlc3Rpb25zIGZyb20gT3ZlCglLYWF2ZW4gKFBsYWNlIGFkZGVkIGZpbGVzIGxhc3QgaW4gdGhlIHBhdGNoLiAgQWRkIGEgc3dpdGNoIHRoYXQKCXNwZWNpZmllcyBtb2RpZmllZCBmaWxlcy4pCgoJKiBpbmNsdWRlL3RjaGFyLmgsIGluY2x1ZGUvd2lubnQuaDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglNb3ZlZCB0aGUgZGVmaW5pdGlvbiBvZiBQVFNUUiBhbmQgTFBUU1RSIGZyb20gdGNoYXIuaCB0byB3aW5udC5oLgoKCSogaW5jbHVkZS93aW5kb3dzLmg6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJU2hvdWxkIGluY2x1ZGUgJ3dpbnNwb29sLmgnLgoKCSogdG9vbHMvd3JjL3BhcnNlci5oLCB0b29scy93cmMvcGFyc2VyLmw6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCS0gQW4gZXh0ZXJuIHN0YXRlbWVudCBmaW5pc2hlcyB3aXRoIHRoZSBmaXJzdCBjbG9zaW5nICd9JyBvciB0aGUgZmlyc3QKCSAgb3V0ZXIgJzsnCgktIEhhbmRsZSAnI2Vycm9yJywgJyNsaW5lJyBhbmQgJyNwcmFnbWEnIGV2ZW4gd2hlbiBpbiB0aGUgJ3BwX3N0cmlwcycsCgkgICdwcF9zdHJpcGUnLCAncHBfc3RyaXBwJyBvciAncHBfZmFsc2UnIGNvbnRleHRzIChqdXN0IGxpa2UgJyNpZicgYW5kCgkgIGNvKS4gIEJ1dCBzdGlsbCBkb24ndCBpc3N1ZSBhbiBlcnJvciBpZiAnI2Vycm9yJyBpcyBmb3VuZCB3aGVuIGluIHRoZQoJICAncHBfZmFsc2UnIHN0YXRlLgoKCSogdG9vbHMvd3JjL3BhcnNlci55OiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCU1ha2UgdGhlIGZpcnN0IGNvbW1hIGluIHRoZSBjb250cm9sJ3MgZGVmaW5pdGlvbiBvcHRpb25hbC4KCgkqIGRsbHMvb2xlMzIvZGF0YWNhY2hlLmM6IEFuZHJldyBMZXd5Y2t5IDxhbmRyZXdsQGNvcmVsLmNvbT4KCVN1cHBvcnQgbG9hZGluZyBhbnkgcHJlc2VudGF0aW9uIGFzcGVjdC4KCgkqIGRsbHMvd2luYXNwaS9hc3BpLmM6IEdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJQXZvaWQgYSBsaW5rIGVycm9yIGZyb20gYW5vdGhlciBETEwgb24gRnJlZUJTRC4KCgkqIGRsbHMvd2lubW0vam95c3RpY2suYywgZGxscy93aW5tbS9qb3lzdGljay9qb3lzdGljay5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBqb3lzdGljayBJRC9kZXZpY2VJRC9kcml2ZXIgaGFuZGxlL2luc3RhbmNlIElEIG1peHVwLgoKCSogZ3JhcGhpY3MveDExZHJ2L2RpYi5jOiBBbmRyZXcgTGV3eWNreSA8YW5kcmV3bEBjb3JlbC5jb20+CglEZWxldGUgdGhlIHNobSBzZWdtZW50IGFzIHNvb24gYXMgd2luZSBhbmQgWCBoYXZlIGF0dGFjaGVkIGl0LgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jOiBMYXJzIEhlZXRlIDxoZWxAYWRtaW4uZGU+CglDb3JyZWN0ZWQgaGFuZGxpbmcgb2YgcHJvdG89PU5VTEwgaW4gV0lOU09DS19nZXRzZXJ2YnluYW1lIGFuZAoJV0lOU09DS19nZXRzZXJ2Ynlwb3J0LgoKCSogd2luZG93cy9ldmVudC5jLCBpbmNsdWRlL21haW4uaCwgbG9hZGVyL21haW4uYywgbWlzYy9tYWluLmMsIG1pc2NlbXUvbWFpbi5jLCBvYmplY3RzL2dkaW9iai5jLCByZWxheTMyLy5jdnNpZ25vcmUsIHJlbGF5MzIvTWFrZWZpbGUuaW4sIHJlbGF5MzIvZ2RpMzIuc3BlYywgcmVsYXkzMi91c2VyMzIuc3BlYywgY29uZmlndXJlLmluLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2dkaS8uY3ZzaWdub3JlLCBkbGxzL2dkaS9NYWtlZmlsZS5pbiwgZGxscy9nZGkvZ2RpLnNwZWMsIGRsbHMvZ2RpL2dkaTMyLnNwZWMsIGRsbHMvZ2RpL2dkaV9tYWluLmMsIGRsbHMvdHR5ZHJ2Ly5jdnNpZ25vcmUsIGRsbHMvdHR5ZHJ2L01ha2VmaWxlLmluLCBkbGxzL3R0eWRydi90dHlkcnYuc3BlYywgZGxscy90dHlkcnYvdHR5ZHJ2X21haW4uYywgZGxscy91c2VyLy5jdnNpZ25vcmUsIGRsbHMvdXNlci9NYWtlZmlsZS5pbiwgZGxscy91c2VyL3VzZXIuc3BlYywgZGxscy91c2VyL3VzZXIzMi5zcGVjLCBkbGxzL3VzZXIvdXNlcl9tYWluLmMsIGRsbHMveDExZHJ2Ly5jdnNpZ25vcmUsIGRsbHMveDExZHJ2L01ha2VmaWxlLmluLCBkbGxzL3gxMWRydi94MTFkcnYuc3BlYywgZGxscy94MTFkcnYveDExZHJ2X21haW4uYywgaWYxNjMyLy5jdnNpZ25vcmUsIGlmMTYzMi9NYWtlZmlsZS5pbiwgaWYxNjMyL2dkaS5zcGVjLCBpZjE2MzIvdXNlci5zcGVjLCBNYWtlLnJ1bGVzLmluLCBjb25maWd1cmU6CglDcmVhdGVkIHNlcGFyYXRlIGRsbHMgZm9yIHVzZXIsZ2RpLHR0eWRydix4MTFkcnYuCglGaXhlZCBXaW5lbGliIGFyZ2MgaGFuZGxpbmcgKHRoYW5rcyB0byBFcmljIFBvdWVjaCkuCgoyMDAwLTAzLTE4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZ3JhcGhpY3MvcHNkcnYvZXNjYXBlLmMsIGluY2x1ZGUvZGlucHV0LmgsIGluY2x1ZGUva2V5Ym9hcmQuaCwgaW5jbHVkZS90dHlkcnYuaCwgaW5jbHVkZS90d2Vhay5oLCBpbmNsdWRlL3VzZXIuaCwgaW5jbHVkZS94MTFkcnYuaCwgbG9hZGVyL21haW4uYywgbWlzYy90d2Vhay5jLCBvbGUvb2xlMm5scy5jLCBzY2hlZHVsZXIvc3luY2hyby5jLCB3aW5kb3dzL3R0eWRydi9pbml0LmMsIHdpbmRvd3MvdHR5ZHJ2L2tleWJvYXJkLmMsIHdpbmRvd3MvdHR5ZHJ2L21haW4uYywgd2luZG93cy94MTFkcnYvaW5pdC5jLCB3aW5kb3dzL3gxMWRydi9tYWluLmM6CglNaXNjIHNtYWxsIGNsZWFudXBzLgoKCSogd2luZG93cy9zcHkuYywgd2luZG93cy9zeXNwYXJhbXMuYywgZ3JhcGhpY3MveDExZHJ2L2JpdGJsdC5jLCBsb2FkZXIvZG9zL2Rvc3ZtLmMsIG1pc2MvTWFrZWZpbGUuaW4sIG1pc2MvbWFpbi5jLCBtaXNjL3NweS5jLCBvYmplY3RzL01ha2VmaWxlLmluLCBvYmplY3RzL2NsaXBwaW5nLmMsIG9iamVjdHMvY3Vyc29yaWNvbi5jLCBvYmplY3RzL3JlZ2lvbi5jLCBvYmplY3RzL3RleHQuYywgd2luZG93cy9NYWtlZmlsZS5pbiwgd2luZG93cy9jdXJzb3JpY29uLmMsIHdpbmRvd3MvbWVzc2FnZS5jOgoJQXZvaWQgY2FsbGluZyB0aGUgKlJlY3QgVVNFUiBmdW5jdGlvbnMgZnJvbSBpbnNpZGUgR0RJLgoJTW92ZWQgYSBmZXcgVVNFUiBmdW5jdGlvbnMgdG8gYSBtb3JlIGFwcHJvcHJpYXRlIGxvY2F0aW9uLgoKCSogbG9hZGVyL21haW4uYywgbWlzYy9NYWtlZmlsZS5pbiwgbWlzYy9tYWluLmMsIG1pc2Mvb3B0aW9ucy5jLCBtaXNjL3JlZ2lzdHJ5LmMsIG1pc2MvdmVyc2lvbi5jLCBtaXNjZW11L21haW4uYywgd2luZG93cy94MTFkcnYvbWFpbi5jLCB3aW5kb3dzL3gxMWRydi9tb25pdG9yLmMsIGRsbHMvZGRyYXcvZGRyYXdfbWFpbi5jLCBkb2N1bWVudGF0aW9uL3dpbmUubWFuLmluLCBncmFwaGljcy94MTFkcnYvYml0Ymx0LmMsIGdyYXBoaWNzL3gxMWRydi9wYWxldHRlLmMsIGluY2x1ZGUvbWFpbi5oLCBpbmNsdWRlL29wdGlvbnMuaCwgaW5jbHVkZS9zaGVsbC5oLCB3aW5lLmluaToKCU1vdmVkIGNvbW1hbmQtbGluZSBvcHRpb24gaGFuZGxpbmcgb3V0IG9mIHRoZSBYMTEgZHJpdmVyLgoJQWRkZWQgc3VwcG9ydCBmb3IgIi0tIiBwcmVmaXggb24gb3B0aW9ucy4KCVJlcGxhY2VkIGEgZmV3IFgxMSBjb21tYW5kLWxpbmUgb3B0aW9ucyBieSB3aW5lLmNvbmYgcGFyYW1ldGVycy4KCjIwMDAtMDMtMTcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBncmFwaGljcy9NYWtlZmlsZS5pbiwgZ3JhcGhpY3MvZDNkX3ByaXZhdGUuaCwgZ3JhcGhpY3MvZDNkY29tbW9uLmMsIGdyYXBoaWNzL2QzZGRldmljZXMuYywgZ3JhcGhpY3MvZDNkZXhlY3V0ZWJ1ZmZlci5jLCBncmFwaGljcy9kM2RsaWdodC5jLCBncmFwaGljcy9kM2RtYXRlcmlhbC5jLCBncmFwaGljcy9kM2R0ZXh0dXJlLmMsIGdyYXBoaWNzL2QzZHZpZXdwb3J0LmMsIGdyYXBoaWNzL2RkcmF3LmMsIGdyYXBoaWNzL2RkcmF3X3ByaXZhdGUuaCwgZ3JhcGhpY3MvdmdhLmMsIHJlbGF5MzIvTWFrZWZpbGUuaW4sIHJlbGF5MzIvZGRyYXcuc3BlYywgcmVsYXkzMi9kaW5wdXQuc3BlYywgd2luZG93cy9NYWtlZmlsZS5pbiwgd2luZG93cy9kaW5wdXQuYywgTWFrZS5ydWxlcy5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvZGRyYXcvLmN2c2lnbm9yZSwgZGxscy9kZHJhdy9NYWtlZmlsZS5pbiwgZGxscy9kZHJhdy9kM2RfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L2QzZGNvbW1vbi5jLCBkbGxzL2RkcmF3L2QzZGRldmljZXMuYywgZGxscy9kZHJhdy9kM2RleGVjdXRlYnVmZmVyLmMsIGRsbHMvZGRyYXcvZDNkbGlnaHQuYywgZGxscy9kZHJhdy9kM2RtYXRlcmlhbC5jLCBkbGxzL2RkcmF3L2QzZHRleHR1cmUuYywgZGxscy9kZHJhdy9kM2R2aWV3cG9ydC5jLCBkbGxzL2RkcmF3L2RkcmF3LnNwZWMsIGRsbHMvZGRyYXcvZGRyYXdfbWFpbi5jLCBkbGxzL2RkcmF3L2RkcmF3X3ByaXZhdGUuaCwgZGxscy9kaW5wdXQvLmN2c2lnbm9yZSwgZGxscy9kaW5wdXQvTWFrZWZpbGUuaW4sIGRsbHMvZGlucHV0L2RpbnB1dC5zcGVjLCBkbGxzL2RpbnB1dC9kaW5wdXRfbWFpbi5jOgoJTWFkZSBkZHJhdyBhbmQgZGlucHV0IHNlcGFyYXRlIGRsbHMuCgoJKiBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcHJvY2Vzcy5oLCBzZXJ2ZXIvcHRyYWNlLmMsIHNlcnZlci9yZXF1ZXN0LmMsIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RocmVhZC5oLCBzZXJ2ZXIvdHJhY2UuYywgaW5jbHVkZS9zZXJ2ZXIuaCwgaW5jbHVkZS90aHJlYWQuaCwgaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2luZGVmLmgsIGxvYWRlci9tb2R1bGUuYywgc2NoZWR1bGVyL2NsaWVudC5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzY2hlZHVsZXIvc3lzZGVwcy5jLCBzY2hlZHVsZXIvdGhyZWFkLmM6CglIYXZlIHRocmVhZHMgYW5kIHByb2Nlc3NlcyBleGl0IG1vcmUgY2xlYW5seSB3aGVuZXZlciBwb3NzaWJsZS4KCgkqIHJlbGF5MzIvYnVpbHRpbjMyLmM6CglJbmNsdWRlIHNwYWNlIGZvciByZXNvdXJjZXMgaW4gdGhlIG1vZHVsZSBoZWFkZXIgaW5zdGVhZCBvZiBkb2luZyBhCglzZXBhcmF0ZSBhbGxvY2F0aW9uLgoKCSogTWFrZS5ydWxlcy5pbiwgTWFrZWZpbGUuaW4sIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvbXByLy5jdnNpZ25vcmUsIGRsbHMvbXByL01ha2VmaWxlLmluLCBtaXNjL25ldHdvcmsuYzoKCU1hZGUgTVBSIGEgc2VwYXJhdGUgZGxsLgoKCSogZGxscy9vbGUzMi9zdGdfYmlnYmxvY2tmaWxlLmMsIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmg6CglBbmRyZXcgTGV3eWNreSA8YW5kcmV3bEBjb3JlbC5jb20+CglSZXdyaXRlIHRoZSBCSUdCTE9DS0ZJTEUgaW1wbGVtZW50YXRpb24gZm9yIGJldHRlciBwZXJmb3JtYW5jZS4KCgkqIHRvb2xzL2J1Z19yZXBvcnQucGw6IEdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJRnVydGhlciBzaW1wbGlmeSB0aGUgY29kZSBhbmQgcmVtb3ZlIHNvbWUgcmVkdW5kYW50IGNvZGUuCglNYWtlIHRoZSB1c2VyIGludGVyZmFjZSBtb3JlIGNvbnNpc3RlbnQgYW5kIGFwcGVhbGluZy4KCgkqIGRsbHMvb2xlMzIvZGVmYXVsdGhhbmRsZXIuYzogQW5kcmV3IExld3lja3kgPGFuZHJld2xAY29yZWwuY29tPgoJQXZvaWQgYSByZWZjb3VudCBsZWFrIGluIFF1ZXJ5SW50ZXJmYWNlIHdoZW4gZGVsZWdhdGluZy4KCUFuZCBhIGNvdXBsZSBvZiBtaW5vciBidWdzLgoKMjAwMC0wMy0xNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRlYnVnZ2VyL2luZm8uYywgZGVidWdnZXIvbWVtb3J5LmMsIGRlYnVnZ2VyL21zYy5jLCBkZWJ1Z2dlci9zb3VyY2UuYywgZGVidWdnZXIvc3RhYnMuYywgZGVidWdnZXIvc3RhY2suYywgZGVidWdnZXIvdHlwZXMuYywgZGVidWdnZXIvd2luZWRiZy5jLCBkZWJ1Z2dlci9icmVhay5jLCBkZWJ1Z2dlci9kYl9kaXNhc20uYywgZGVidWdnZXIvZGJnLnksIGRlYnVnZ2VyL2RiZ21haW4uYywgZGVidWdnZXIvZGVidWcubCwgZGVidWdnZXIvZGVidWdnZXIuaCwgZGVidWdnZXIvZGlzcGxheS5jLCBkZWJ1Z2dlci9leHByLmMsIGRlYnVnZ2VyL2hhc2guYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJSW50cm9kdWNlZCBEQkdfVkFMVUUgc3RydWN0IHRvIG1hbmlwdWxhdGUgZGVidWdnZXIvZGVidWdnZWUgYWRkcmVzcyBzcGFjZS4KCUFkZGVkIHdhdGNoIChoYXJkd2FyZSBhc3Npc3RlZCBkZWJ1Z2dpbmcpIGFuZCB3aGF0aXMgKHR5cGUgb2YgZXhwcikgY29tbWFuZHMuCglGaXhlZCBzb21lIGlzc3VlcyBpbiBsb2NhbCB2YXJzIGhhbmRsaW5nIChzdGFicyBwYXJzaW5nICYgcmVnaXN0ZXJzIG9wdGltaXphdGlvbikuCgoJKiBncmFwaGljcy94MTFkcnYvZ3JhcGhpY3MuYywgZ3JhcGhpY3MveDExZHJ2L3RleHQuYzoKCUthcmwgTGVzc2FyZCA8a2FybGxAY29yZWwuY2E+CglVcGRhdGUgRElCIHNlY3Rpb25zIGluIHRleHQgb3V0cHV0IGFuZCBmb3IgZ3JhcGhpY3MgcHJpbWl0aXZlcy4KCgkqIHdpbmRvd3MvZGNlLmMsIHdpbmRvd3MveDExZHJ2L2V2ZW50LmM6CglNaWNoYWVsIEFiZC1FbC1NYWxlayAob24gYmVoYWxmIG9mIENvcmVsKQoJV2hlbiB3ZSB3ZXJlIHN3aXRjaGluZyB0byBhbm90aGVyIGRlc2t0b3AsIHRoZSBwb3B1cCB3aW5kb3dzIGxvc3QKCXRoZWlyIFdTX1ZJU0lCTEUgZmxhZy4KCgkqIHNlcnZlci9jb250ZXh0X2kzODYuYzoKCUF2b2lkIFNJR1NUT1AvU0lHQ09OVCByYWNlIHdoZW4gcHRyYWNlIGlzIGRpc2FibGVkLgoJRml4ZWQgY29udGV4dCBmbGFncyBoYW5kbGluZyAodGhhbmtzIHRvIEVyaWMgUG91ZWNoKS4KCgkqIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9wdHJhY2UuYywgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdGhyZWFkLmg6CglBdm9pZCBTSUdTVE9QL1NJR0NPTlQgcmFjZSB3aGVuIHB0cmFjZSBpcyBkaXNhYmxlZC4KCgkqIHNlcnZlci9kZWJ1Z2dlci5jOiBGaXhlZCBidWcgaW4gZ2VuZXJhdGVfc3RhcnR1cF9kZWJ1Z19ldmVudHMoKS4KCgkqIHByb2dyYW1zL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5lbWluZS8uY3ZzaWdub3JlLCBwcm9ncmFtcy93aW5lbWluZS9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luZW1pbmUvUkVBRE1FLCBwcm9ncmFtcy93aW5lbWluZS9kaWFsb2cuYywgcHJvZ3JhbXMvd2luZW1pbmUvZGlhbG9nLmgsIHByb2dyYW1zL3dpbmVtaW5lL21haW4uYywgcHJvZ3JhbXMvd2luZW1pbmUvbWFpbi5oLCBwcm9ncmFtcy93aW5lbWluZS9yZXNvdXJjZS5oLCBwcm9ncmFtcy93aW5lbWluZS9yc3JjLnJjLCBwcm9ncmFtcy93aW5lbWluZS93aW5lbWluZS5zcGVjLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCUpvc2h1YSBUaGllbGVuIDxmb3pleUBuZXR6ZXJvLmNvbT4KCUFkZGVkIHdpbmVtaW5lIGFwcC4KCgkqIHRvb2xzL2J1Z19yZXBvcnQucGw6IEdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJSW1wcm92ZWQgdGhlIHZpc3VhbCBhcHBlYXJlbmNlIG9mIHRoZSB1c2VyIGludGVyZmFjZS4gTWFkZSB0aGUgY29kZQoJc29tZXdoYXQgc2ltcGxlci4KCjIwMDAtMDMtMTIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2NydGRsbC9jcnRkbGxfbWFpbi5jLCBkbGxzL2NydGRsbC9jcnRkbGwuc3BlYzoKCVdhbGRlayBIZWJpc2NoIDxoZWJpc2NoQG1hdGgudW5pLndyb2MucGw+CglJbXBsZW1lbnRlZCBfcmVhZCBhbmQgX2xzZWVrLgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jOiBSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJQ29ycmVjdCBjb252ZXJzaW9uIG9mIGxldmVsIHBhcmFtZXRlciBpZiBXSU5TT0NLX3NldHNvY2tvcHQgaXMgY2FsbGVkCglmb3Igb3B0aW9uIFdTX1NPX0RPTlRMSU5HRVIuCgoJKiBvYmplY3RzL2dkaW9iai5jOiBSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJQ29ycmVjdCByb3VuZGluZyBvZiB0aGUgcmVzdWx0IGluIE11bERpdjE2KCkuCgoJKiBkbGxzL3dpbmFzcGkvYXNwaS5jLCBkbGxzL3dpbmFzcGkvd2luZXNjc2kuaDoKCUdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJRml4ZWQgRnJlZUJTRCBjb21waWxhdGlvbi4KCgkqIGRsbHMvZHBsYXl4L01ha2VmaWxlLmluLCBkbGxzL2RwbGF5eC9kcGxheS5jLCBkbGxzL2RwbGF5eC9kcGxvYmJ5LmMsIGRsbHMvZHBsYXl4L25hbWVfc2VydmVyLmMsIGRsbHMvZHBsYXl4L25hbWVfc2VydmVyLmgsIGRvY3VtZW50YXRpb24vc3RhdHVzL2RpcmVjdHBsYXk6CglQZXRlciBIdW5uaXNldHQgPGh1bm5pc2VAbm9ydGVsbmV0d29ya3MuY29tPgoJLSBNYWtlIHJlZ2lzdHJ5IHVzYWdlIGEgbGl0dGxlIG1vcmUgY29ycmVjdCBhbmQgbW9kZXJuCgktIENyZWF0ZSBob21lIGZvciBhbGwgZHBsYXkgbmFtZSBzZXJ2ZXIgZnVuY3Rpb25hbGl0eQoJLSBBZGQgdGhlIGZyYW1ld29yayBmb3IgRW51bVNlc3Npb25zCgktIERvY3VtZW50YXRpb24gdXBkYXRlCgoJKiBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmMsIGRsbHMvYXZpZmlsMzIvYXZpZmlsZS5jLCBpbmNsdWRlL2RlYnVnZGVmcy5oOgoJRGltaXRyaWUgUGF1biA8ZGltaUBiaWdmb290LmNvbT4KCUNsZWFuZWQgdXAgZGVidWcgY2hhbm5lbHMgYSBiaXQuCgoJKiBncmFwaGljcy9kZHJhdy5jOiBNYXJjdXMgTWVpc3NuZXIgPE1hcmN1cy5NZWlzc25lckBjYWxkZXJhLmRlPgoJSW1wbGVtZW50ZWQgc3RyZXRjaGVkIGJsdHMgZm9yIGRlcHRoIDI0ICh1bm9wdGltaXplZCkuCgoyMDAwLTAzLTEwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGVidWdnZXIvd2luZWRiZy5jOiBGaXhlZCBPVVRQVVRfREVCVUdfU1RSSU5HIHBvaW50ZXIgaGFuZGxpbmcuCgoJKiBpbmNsdWRlL3Byb2Nlc3MuaCwgbWVtb3J5L3ZpcnR1YWwuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCVJlbW92ZWQgUFJPQ0VTU19Jc0N1cnJlbnQoKS4KCgkqIGluY2x1ZGUvc2VydmVyLmgsIHNjaGVkdWxlci9kZWJ1Z2dlci5jLCBzZXJ2ZXIvY29udGV4dF9pMzg2LmMsIHNlcnZlci9kZWJ1Z2dlci5jLCBzZXJ2ZXIvZmlsZS5jLCBzZXJ2ZXIvbWFpbi5jLCBzZXJ2ZXIvb2JqZWN0LmgsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9yZXF1ZXN0LmMsIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RocmVhZC5oLCBzZXJ2ZXIvdHJhY2UuYywgdG9vbHMvbWFrZV9yZXF1ZXN0cywgd2luMzIvZXhjZXB0LmMsIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmM6CglBZGRlZCBzcGVjaWZpYyByb3V0aW5lcyBmb3IgT1VUUFVUX0RFQlVHX1NUUklORyBhbmQgRVhDRVBUSU9OIGRlYnVnIGV2ZW50cy4KCUdlbmVyYXRlIGEgYnJlYWtwb2ludCBldmVudCBvbiBwcm9jZXNzIGF0dGFjaC4KCU1pc2MgY2xlYW51cHMgaW4gcmVxdWVzdCBoYW5kbGluZy4KCjIwMDAtMDMtMDkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkZWJ1Z2dlci9icmVhay5jLCBkZWJ1Z2dlci9kYmcueSwgZGVidWdnZXIvZGVidWcubCwgZGVidWdnZXIvZGVidWdnZXIuaDoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJTm93IHJlbHlpbmcgb24gZXhjZXB0aW9uIGNvZGVzIHRvIGtub3cgd2hlbiBkZWJ1Z2dlciBpcyBlbnRlcmVkIGZvciBhCglzaW5nbGUgc3RlcCB0cmFwLgoKCSogZGVidWdnZXIvd2luZWRiZy5jLCBtaXNjZW11L21haW4uYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgcHJvYyB0byBzdGFydCBkZWJ1Z2dpbmcgcHJvY2VzcyBmcm9tIGl0cyBjb21tYW5kIGxpbmUgKGJ5IGxhdW5jaGluZyBpdCkuCgoJKiBkZWJ1Z2dlci9leHByLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQ2xlYW51cC4KCgkqIGdyYXBoaWNzL3BzZHJ2L2FmbS5jOiBIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglBZGQgQmxhY2sgYXMgYSB2YWxpZCBmb250IHdlaWdodC4KCUNvcGUgd2l0aCBhZm0gZmlsZXMgdGhhdCBkbyBub3QgY29udGFpbiB7RmFtaWx5fEZ1bGx9TmFtZSBlbnRyaWVzLgoKCSogZGxscy93aW5hc3BpL3dpbmFzcGkzMi5jOiBEYXZpZCBFbGxpb3R0IDxkZmVAbmV0bml0Y28ubmV0PgoJLSBHb3QgcmlkIG9mIFBST0ZJTEUgZnVuY3Rpb25zLgoJLSBVc2UgZnVuY3Rpb25hbGl0eSBvZiBhc3BpLmMuCgktIEF1dG9tYWdpY2FsbHkgcmVhZCAvcHJvYy9zY3NpL3Njc2kgKHBhcnQgb2YgYXNwaS5jIHdoaWNoIGlzIGFscmVhZHkKCSAgaW4gdHJlZSkuCgoJKiBncmFwaGljcy94MTFkcnYvZGliLmM6IEppbSBBc3RvbiA8amltYUBjb3JlbC5jYT4KCUhhbmRsZSAyNCBiaXQgRElCcyA8LT4gMjQgYml0IGRlZXAvMjQgYml0cyBwZXIgcGl4ZWwgWEltYWdlcy4KCgkqIHByb2dyYW1zL3ZpZXcvZ2xvYmFscy5oOiBNaWtlIENhc3RsZSA8ZGFsZ29kYUBpeC5uZXRjb20ubmV0PgoJQWRkZWQgcmVzb3VyY2UuaCBpbmNsdWRlLgoKCSogd2luZG93cy9yZWN0LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSXNSZWN0RW1wdHkgYWxzbyByZXR1cm5zIHRydWUgZm9yIG5lZ2F0aXZlIHdpZHRoL2hlaWdodHMgKHZlcmlmaWVkCglhZ2FpbnN0IFdpbmRvd3MpLCBmb3VuZCBieSBCcmFkIE9saXZlciA8YnJhZG1hbkBwb2JveC5jb20+LgoKCSogZGxscy9vbGVhdXQzMi92YXJpYW50LmM6IExhd3NvbiBXaGl0bmV5IDxsYXdzb25fd2hpdG5leUBqdW5vLmNvbT4KCVRha2UgdHlwZSBmcm9tIHJlZmVyZW5jZWQgdmFyaWFudCBmb3IgVlRfQllSRUYgJiYgVlRfVkFSSUFOVC4KCgkqIHJlbGF5MzIvYnVpbHRpbjMyLmMsIHNjaGVkdWxlci9jbGllbnQuYywgc2NoZWR1bGVyL2RlYnVnZ2VyLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNlcnZlci9kZWJ1Z2dlci5jLCBzZXJ2ZXIvb2JqZWN0LmgsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9wcm9jZXNzLmgsIHNlcnZlci9wdHJhY2UuYywgc2VydmVyL3JlcXVlc3QuYywgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdHJhY2UuYywgaW5jbHVkZS9lbGZkbGwuaCwgaW5jbHVkZS9tb2R1bGUuaCwgaW5jbHVkZS9wZV9pbWFnZS5oLCBpbmNsdWRlL3Byb2Nlc3MuaCwgaW5jbHVkZS9zZXJ2ZXIuaCwgbG9hZGVyL2VsZi5jLCBsb2FkZXIvZWxmZGxsLmMsIGxvYWRlci9tb2R1bGUuYywgbG9hZGVyL3BlX2ltYWdlLmM6CglTdG9yZSB0aGUgbGlzdCBvZiBsb2FkZWQgZGxscyBpbiB0aGUgc2VydmVyLCBhbmQgZ2VuZXJhdGUgZGVidWcgZXZlbnRzCglpbnRlcm5hbGx5LgoKMjAwMC0wMy0wOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RyYWNlLmMsIHRvb2xzL21ha2VfcmVxdWVzdHMsIGluY2x1ZGUvc2VydmVyLmgsIHNjaGVkdWxlci9jbGllbnQuYzoKCUFkZGVkIHNlcnZlciBwcm90b2NvbCB2ZXJzaW9uIGNoZWNrLgoKCSogaW5jbHVkZS9hc3BpLmgsIGluY2x1ZGUvd2luYXNwaS5oLCBpbmNsdWRlL3duYXNwaTMyLmgsIG1zZG9zL01ha2VmaWxlLmluLCBtc2Rvcy9kb3Nhc3BpLmMsIE1ha2VmaWxlLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy9NYWtlZmlsZS5pbiwgZGxscy93aW5hc3BpLy5jdnNpZ25vcmUsIGRsbHMvd2luYXNwaS9NYWtlZmlsZS5pbiwgZGxscy93aW5hc3BpL2FzcGkuYywgZGxscy93aW5hc3BpL3dpbmFzcGkxNi5jLCBkbGxzL3dpbmFzcGkvd2luYXNwaTMyLmMsIGRsbHMvd2luYXNwaS93aW5lc2NzaS5oLCBkbGxzL3dpbmFzcGkvd25hc3BpMzIuc3BlYzoKCURhdmlkIEVsbGlvdHQgPGRmZUBuZXRuaXRjby5uZXQ+CgktIFNsaWdodGx5IHJld29ya2VkIGluY2x1ZGUgZmlsZXMgKGxlc3MgbWVzc3ksIG1vcmUgc3RyYWlnaHRmb3J3YXJkKS4KCS0gTW92ZWQgRE9TIEFTUEkgZnVuY3Rpb25hbGl0eSB0byBtc2Rvcy9kb3Nhc3BpLmMuCgktIEdvdCByaWQgdXNpbmcgUFJPRklMRSB0byBnZXQgU0NTSSBpbmZvIGZyb20gd2luZS5jb25mLgoJLSBSZWFkIHNjc2kgaW5mbyBmcm9tIC9wcm9jL3Njc2kvc2NzaS4KCS0gQWRkZWQgc2V0dGluZyBvZiBhIHJlYXNvbmFibGUgdGltZW91dCB3aGVuIG9wZW5pbmcgYSBTQ1NJIGRldmljZSAoNQoJICBtaW51dGVzLCBkZWZpbmVkIGluIHdpbmVzY3NpLmgpLgoJLSBFeGVjU2NzaUNvbW1hbmQgbm93IEFMV0FZUyBwb3N0cywgZXZlbiBvbiBlcnJvciAod2hpY2ggaXMgdGhlIGNvcnJlY3QKCSAgYmVoYXZpb3IpLgoKCSogZGxscy9jb21tZGxnL2NkbGdfU2sucmMsIGRsbHMvY29tbWRsZy9yc3JjLnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9Tay5yYywgZGxscy9zaGVsbDMyL3NocmVzLnJjLCBkb2N1bWVudGF0aW9uL3dpbmUubWFuLmluLCBpbmNsdWRlL29wdGlvbnMuaCwgbWlzYy9tYWluLmMsIHJlc291cmNlcy9zeXNyZXNfU2sucmMsIHJlc291cmNlcy91c2VyMzIucmM6CglTaW1lbiBaYW1lY25payA8c2ltZW5AbmV4dHJhLnNrPgoJQWRkZWQgU2xvdmFrIGxhbmd1YWdlIHN1cHBvcnQuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9KYS5yYywgZGxscy9zaGVsbDMyL3NocmVzLnJjLCBpbmNsdWRlL29wdGlvbnMuaCwgbWlzYy9tYWluLmMsIHJlc291cmNlcy8uY3ZzaWdub3JlLCByZXNvdXJjZXMvc3lzcmVzX0phLnJjLCByZXNvdXJjZXMvdXNlcjMyLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19KYS5yYywgZGxscy9jb21tZGxnL3JzcmMucmM6CglKdW5pY2hpIEt1Y2hpbmlzaGkgPGprdWNoaUBtYWhvcm9iYS5uZS5qcD4KCUFkZGVkIHNvbWUgSmFwYW5lc2UgcmVzb3VyY2VzLgoKCSogZGxscy9vbGUzMi9NYWtlZmlsZS5pbiwgZGxscy9vbGUzMi9jbGlwYm9hcmQuYywgZGxscy9vbGUzMi9kYXRhY2FjaGUuYywgZGxscy9vbGUzMi9vbGUyaW1wbC5jLCBkbGxzL29sZTMyL29sZTJzdHVicy5jLCBkbGxzL29sZTMyL29sZXN0ZC5oLCBkbGxzL29sZTMyL3N0b3JhZ2UzMi5jLCBpbmNsdWRlL29sZTIuaCwgaW5jbHVkZS93aW5lcnJvci5oOgoJQWJleSBHZW9yZ2UgPGFiZXlAbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRlZCBPTEUgY2xpcGJvYXJkIGZ1bmN0aW9uYWxpdHkgZm9yIEVtYmVkIFNvdXJjZSBmb3JtYXQuCglJdCBoZWxwcyB5b3UgY3V0IGFuZCBwYXN0ZSBkYXRhIHdpdGggRW1iZWQgU291cmNlIGZvcm1hdCBiZXR3ZWVuCglhcHBsaWNhdGlvbnMuICBJdCBhbHNvIGltcGxlbWVudHMgT2xlQ3JlYXRlRnJvbURhdGEgYW5kCglPbGVRdWVyeUNyZWF0ZUZyb21EYXRhIGFuZCBmaXhlcyBzb21lIGJ1Z3MgaW4gZGF0YWNhY2hlLmMuCgoJKiBsb2FkZXIvbW9kdWxlLmM6IFVscmljaCBDemVrYWxsYSA8dWxyaWNoY0Bjb3JlbC5jYT4KCXdtLT5tb2RuYW1lIG1pZ2h0IGJlIGludmFsaWQgYXQgdGhlIGVuZCBvZiBGcmVlTGlicmFyeS4KCgkqIGxvYWRlci9uZS9tb2R1bGUuYywgbWlzYy9kZWJ1Z3N0ci5jLCBtaXNjL2Vycm9yLmMsIHdpbmRvd3MvZGVmZGxnLmMsIHdpbmRvd3MvZGVmd25kLmMsIHdpbmRvd3MvZGlhbG9nLmMsIHdpbmRvd3MvZm9jdXMuYywgd2luZG93cy9pbnB1dC5jLCB3aW5kb3dzL3VzZXIuYywgd2luZG93cy94MTFkcnYvZXZlbnQuYywgd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYywgY29udHJvbHMvZWRpdC5jLCBjb250cm9scy9tZW51LmMsIGRlYnVnZ2VyL3N0YWNrLmMsIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYywgZGxscy93aW5zb2NrL2FzeW5jLmMsIGRsbHMvd2luc29jay9zb2NrZXQuYywgaW5jbHVkZS9kY2UuaCwgaW5jbHVkZS9tZW51LmgsIGluY2x1ZGUvbWVzc2FnZS5oLCBpbmNsdWRlL25vbmNsaWVudC5oLCBpbmNsdWRlL3F1ZXVlLmgsIGluY2x1ZGUvc3RhY2tmcmFtZS5oLCBpbmNsdWRlL3N0cnVjdDMyLmgsIGluY2x1ZGUvdGhyZWFkLmgsIGluY2x1ZGUvd2luLmgsIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbmUvd2ludXNlcjE2LmgsIGluY2x1ZGUvd2lucG9zLmgsIGxvYWRlci9tb2R1bGUuYywgY29udHJvbHMvYnV0dG9uLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCVJlbW92ZWQgYSBsb3Qgb2YgdW5uZWNlc3NhcnkgaW5jbHVkZXMgYW5kIGZpeGVkIHRoZSBjb21waWxlIGVycm9ycy4KCgkqIGRsbHMvb2xlMzIvbW9uaWtlci5jLCBkbGxzL29sZTMyL3N0b3JhZ2UzMi5jLCBpbmNsdWRlL29sZTIuaCwgaW5jbHVkZS9zaGVsbC5oLCBtZW1vcnkvZ2xvYmFsLmMsIG1pc2MvcmVnaXN0cnkuYywgbWlzYy93c3ByaW50Zi5jLCBzZXJ2ZXIvcmVnaXN0cnkuYywgc2VydmVyL3JlcXVlc3QuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSB3YXJuaW5ncy4KCgkqIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jOiBMYXdzb24gV2hpdG5leSA8bGF3c29uX3doaXRuZXlAanVuby5jb20+CglDb3JyZWN0ZWQgdmFsdWUgZm9yIERBWVNfSU5fT05FX1lFQVIuCgoJKiBkbGxzL2NydGRsbC9jcnRkbGxfbWFpbi5jOgoJQWxleGFuZHJlIEp1bGxpYXJkIDxqdWxsaWFyZEBjb2Rld2VhdmVycy5jb20+IChmb3IgQ29yZWwpCglDbGVhbmVkIHVwIENSVERMTF9fdW5saW5rLgoKCSogY29udHJvbHMvc3RhdGljLmM6IFVscmljaCBDemVrYWxsYSA8dWxyaWNoY0Bjb3JlbC5jYT4KCVRoZSBzdGF0aWMgY29udHJvbCBvbmx5IG5lZWRzIHRvIGludmFsaWRhdGUgaXRzIHJlY3Qgd2hlbiB3ZSBTZXRUZXh0LgoKCSogaW5jbHVkZS93aW51c2VyLmgsIG1pc2Mvc3B5LmM6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJQWRkZWQgYSBmZXcgbWVzc2FnZXMgZm9yIElNRS4KCgkqIGRlYnVnZ2VyL01ha2VmaWxlLmluLCBkZWJ1Z2dlci9icmVhay5jLCBkZWJ1Z2dlci9kYl9kaXNhc20uYywgZGVidWdnZXIvZGJnLnksIGRlYnVnZ2VyL2RlYnVnLmwsIGRlYnVnZ2VyL2RlYnVnZ2VyLmgsIGRlYnVnZ2VyL2Rpc3BsYXkuYywgZGVidWdnZXIvZXhwci5jLCBkZWJ1Z2dlci9oYXNoLmMsIGRlYnVnZ2VyL2luZm8uYywgZGVidWdnZXIvbWVtb3J5LmMsIGRlYnVnZ2VyL3JlZ2lzdGVycy5jLCBkZWJ1Z2dlci9zb3VyY2UuYywgZGVidWdnZXIvc3RhYnMuYywgZGVidWdnZXIvc3RhY2suYywgZGVidWdnZXIvdHlwZXMuYywgZGVidWdnZXIvd2luZWRiZy5jLCBpbmNsdWRlL2RlYnVnZGVmcy5oLCBpbmNsdWRlL2RlYnVnZ2VyLmgsIG1pc2NlbXUvbWFpbi5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglObyBsb25nZXIgZGlyZWN0bHkgYWNjZXNzaW5nIGRlYnVnZ2VlIG1lbW9yeS4KCUV4ZWN1dGlvbiBjb250ZXh0IChtb2RlLCBzdGVwcy4uLikgYXJlIG5vdyBsaW5rZWQgdG8gYSB0aHJlYWQuCglSZW1vdmVkIHNvbWUgWDExIGNyc3QgaGFja3MuCglSZXdyb3RlIGluZm8vd2FsayBjb21tYW5kcy4KCVJlbW92ZWQgZGlyZWN0IGRlYnVnZ2VyIGludm9jYXRpb24gY29kZSAoYW5kIG1vdmVkIHRoZSByZXN0IHRvIHRoZSBuZXcKCXdpbmVkYmcuYyBmaWxlKS4KCgkqIHNjaGVkdWxlci9kZWJ1Z2dlci5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvdHJhY2UuYywgd2luMzIvZXhjZXB0LmMsIHdpbjMyL25ld2Zucy5jLCBpbmNsdWRlL250ZGRrLmgsIGluY2x1ZGUvc2VydmVyLmgsIGluY2x1ZGUvd2luYmFzZS5oLCBsb2FkZXIvbW9kdWxlLmMsIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmM6CglSZW1vdmVkIFBEQjMyX0RFQlVHR0VEIGZsYWcgYW5kIHNlbmQgYWxsIGRlYnVnIGV2ZW50cyB1bmNvbmRpdGlvbmFsbHkuCglJbXBsZW1lbnRlZCBJc0RlYnVnZ2VyUHJlc2VudCgpLgoKCSogc2VydmVyL2RlYnVnZ2VyLmMsIHNlcnZlci9vYmplY3QuaCwgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3Byb2Nlc3MuaCwgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdGhyZWFkLmgsIHNlcnZlci90cmFjZS5jLCBpbmNsdWRlL3Byb2Nlc3MuaCwgaW5jbHVkZS9zZXJ2ZXIuaCwgc2NoZWR1bGVyL2NsaWVudC5jLCBzY2hlZHVsZXIvZGVidWdnZXIuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2NoZWR1bGVyL3RocmVhZC5jOgoJR2VuZXJhdGUgQ1JFQVRFX1BST0NFU1MvVEhSRUFEIGRlYnVnIGV2ZW50cyBpbnRlcm5hbGx5IGluIHRoZSBzZXJ2ZXIuCgoyMDAwLTAzLTA3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2NoZWR1bGVyL2NyaXRzZWN0aW9uLmMsIHNjaGVkdWxlci90aHJlYWQuYywgd2luMzIvTWFrZWZpbGUuaW4sIHdpbjMyL3RocmVhZC5jLCBpbmNsdWRlL3RocmVhZC5oLCBpbmNsdWRlL3dpbmJhc2UuaDoKCUJldHRlciBpbXBsZW1lbnRhdGlvbiBvZiBpbmxpbmUgZnVuY3Rpb25zIFNldExhc3RFcnJvciBhbmQKCUdldEN1cnJlbnRUaHJlYWRJZC4gIEFkZGVkIGFzbSBpbmxpbmVzIGZvciBJbnRlcmxvY2tlZCogZnVuY3Rpb25zLgoKCSogZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jLCBpbmNsdWRlL250ZGRrLmgsIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYzoKCUFkZGVkIERiZ0JyZWFrUG9pbnQuIEZpeGVkIGV4Y2VwdGlvbiByZWNvcmQgY29udGVudHMgb24gU0lHVFJBUC4KCgkqIGxvYWRlci9uZS9tb2R1bGUuYywgbG9hZGVyL25lL3NlZ21lbnQuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJRml4ZWQgc2Vjb25kIGluc3RhbmNlIERHUk9VUCBsb2FkaW5nLgoKCSogaW5jbHVkZS93aW51c2VyLmgsIG1pc2MvbWFpbi5jOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJSW1wbGVtZW50IFNQSV9HRVRJQ09OTUVUUklDUy4KCUNoYW5nZSBXQVJOIC0+IEZJWE1FIGZvciB1bmltcGxlbWVudGVkIFNQSV9zIGFuZCBzZXQgYXBwcm9wcmlhdGUgZXJyb3IuCgoJKiBtZW1vcnkvZ2xvYmFsLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWN0dWFsIHdyaXRlIHRoZSBjYWNoZWQgc3RydWN0IGluIEdsb2JhbE1lbW9yeVN0YXR1cy4KCgkqIGRvY3VtZW50YXRpb24vZm9udHMsIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jOgoJUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCUluY2x1ZGUgaW4gdGhlIEFkZEZvbnRSZXNvdXJjZUEvVyBmaXhtZSBtZXNzYWdlIGEgcG9pbnRlciB0byB0aGUgZm9udHMKCWRvY3VtZW50LiBJbiB0aGlzIGRvY3VtZW50IHRlbGwgdGhlIHVzZXIgaG93IHRvIGZpbmQgdGhlIG5lZWRlZCB0b29scy4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCUFkZCBhIG1lc3NhZ2UgYW5kIGZpeCBlcnJvciBjb2RlIGlmIF9fd3NfZ2V0c2VydmJ5bmFtZSgpIGFuZAoJX193c19nZXRzZXJ2Ynlwb3J0KCkgY2Fubm90IGZpbmQgdGhlIHJlcXVlc3RlZCBzZXJ2aWNlLgoJRml4IFdJTlNPQ0tfc2V0c29ja29wdCgpIHdoZW4gY2FsbGVkIHdpdGggb3B0dmFsIHBvaW50aW5nIHRvIDE2IGJpdCBpbnQuCgoJKiBkbGxzL3dpbm1tL21taW8uYzogVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hjQGNvcmVsLmNhPgoJQ2hlY2sgZm9yIGV4aXN0ZW5jZSBpZiBNTUlPX0VYSVNUIGlzIHBhc3NlZCB0byBNTUlPX09wZW4uCgoJKiBkbGxzL29sZTMyL2ZpbGVtb25pa2VyLmM6IEplZmYgVHJhbnRlciA8amVmZnRAY29yZWwuY2E+CglUaGUgcGF0aG5hbWUgd2FzIHN0b3JlZCBpbiBhIHN0cmluZyBvZiBzaXplIDEwMCwgd2hpY2ggd2FzIG5vdCBhbHdheXMKCWxhcmdlIGVub3VnaC4gSXQgc2hvdWxkIGJlIHNldCB0byBNQVhfUEFUSCAoMjU1KS4KCgkqIGxvYWRlci90YXNrLmM6IEFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJU2V2ZXJhbCBmaXhlcyB0byBNYWtlUHJvY0luc3RhbmNlLgoKMjAwMC0wMy0wNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvd2lubW0vTWFrZWZpbGUuaW4sIGRsbHMvd2luc29jay9NYWtlZmlsZS5pbiwgZGxscy9vbGUzMi9NYWtlZmlsZS5pbiwgZGxscy9vbGVhdXQzMi9NYWtlZmlsZS5pbiwgZGxscy9vbGVjbGkvTWFrZWZpbGUuaW4sIGRsbHMvb2xlc3ZyL01ha2VmaWxlLmluLCBkbGxzL3Jhc2FwaTMyL01ha2VmaWxlLmluLCBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW4sIGRsbHMvdmVyc2lvbi9NYWtlZmlsZS5pbiwgZGxscy93aW4zMnMvTWFrZWZpbGUuaW4sIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvYXZpZmlsMzIvTWFrZWZpbGUuaW4sIGRsbHMvY29tbWRsZy9NYWtlZmlsZS5pbiwgZGxscy9kcGxheXgvTWFrZWZpbGUuaW4sIGRsbHMvbHpleHBhbmQvTWFrZWZpbGUuaW4sIGRsbHMvbXN2aWRlby9NYWtlZmlsZS5pbiwgZGxscy9NYWtlZGxsLnJ1bGVzLmluOgoJQWRkZWQgc3VwcG9ydCBmb3IgY3JlYXRpbmcgZXh0cmEgc3ltbGlua3MgZm9yIC5zbyBmaWxlcyB0aGF0IGNvbnRhaW4KCW11bHRpcGxlIGRsbHMuCgoyMDAwLTAzLTA0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogKi9NYWtlZmlsZS5pbiwgTWFrZS5ydWxlcy5pbiwgTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzLy5jdnNpZ25vcmUsIGRsbHMvTWFrZWRsbC5ydWxlcy5pbjoKCU1vdmVkIGRsbC1zcGVjaWZpYyBtYWtlIHJ1bGVzIHRvIGEgc2VwYXJhdGUgTWFrZWRsbC5ydWxlcyBmaWxlLgoKCSogbWlzYy9yZWdpc3RyeS5jOiBGaXhlZCBlcnJvciBjaGVja2luZyBpbiByZWdpc3RyeSBzYXZpbmcuCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJV1NBQ2xlYW51cCBzaG91bGQgc2V0IGxhc3QgZXJyb3IgdG8gV1NBTk9USU5JVElBTElTRUQgaWYgZmFpbGluZwoJYmVjYXVzZSBXaW5zb2NrIHdhcyBub3QgaW5pdGlhbGl6ZWQuLi4KCgkqIGRsbHMvb2xlMzIvY29tcG9iai5jLCBpbmNsdWRlL29sZS5oLCBpbmNsdWRlL3dpbmUvb2JqX2Jhc2UuaDoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQ29Mb2FkTGlicmFyeSBnZXRzIFVOSUNPREUsIG5vdCBBU0NJSSBzdHJpbmdzLiAoc3BvdHRlZCBieSBMYXdzb24KCVdoaXRuZXkpLCByZW1vdmVkIHRoZSBkbGxOYW1lIGNvbXBvbmVudCBvZiB0aGUgb3BlbkRsbHMuICBBZGRlZCBzb21lCglkZWJ1Z3N0cl9ndWlkKCkuCgoJKiBkbGxzL250ZGxsL250LmM6IERhbiBTY290dCA8ZGFuLnNjb3R0QGhvbWUuY29tPgoJRml4ZWQgdHlwb3MgaW4gX2FsbGRpdigpIGFuZCBfYWxsbXVsKCkuCgoJKiBjb25maWd1cmUuaW4sIGNvbmZpZ3VyZTogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBtZXNzYWdlIGZvciBtaXNzaW5nIHhwbSBkZXZlbCBsaWJzIGZvciBkZWJpYW4vY29yZWwuCgoJKiBkbGxzL29sZTMyL29sZTIuYzogUGllcnJlIE1hZ2VhdSA8cGllcnJlQG1hY2FkYW1pYW4uY29tPgoJT2xlUmVnR2V0VXNlclR5cGUgZGlkIHF1ZXJ5IHdyb25nIHJlZ2lzdHJ5IGtleS4KCgkqIG1lbW9yeS9nbG9iYWwuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTb21lIGFwcGxpY2F0aW9ucyBjYWxsIEdsb2JhbE1lbW9yeVN0YXR1cygpIHZlcnkgb2Z0ZW4uIENhY2hlIHRoZQoJcmVzdWx0cyBvZiB0aGUgY2FsbCBmb3IgMSBzZWNvbmQgKHNwb3R0ZWQgYnkgQ29yZWwpLgoKCSogd2luZG93cy94MTFkcnYvZXZlbnQuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglHZXRDbGlwYm9hcmREYXRhMTYgbWlnaHQgcmV0dXJuIGFuIGludmFsaWQgZ2xvYmFsIGhhbmRsZSAoc3BvdHRlZCBieQoJQ29yZWwpLgoKCSogb2JqZWN0cy9lbmhtZXRhZmlsZS5jOiBMaWxpYSBSb3VtaWFudHNldmEKCWNiQ291bnRTaXplT2ZFbmhNZXRhZmlsZSBjYWxsYmFjayBmdW5jdGlvbiBpbnN0ZWFkIG9mIGluY3JlYXNpbmcgYQoJY29udGVudHMgb2YgdGhlIHBvaW50ZXIgdG8gdGhlIHNpemUgaW5jcmVhc2VkIHRoZSBwb2ludGVyIGl0c2VsZi4KCgkqIGRvY3VtZW50YXRpb24vcHNkcml2ZXI6IEh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUZpeCBkb2NzIHRvIHJlZmxlY3QgY2hhbmdlIHRvIC53aW5lcmMgcHJvY2Vzc2luZy4KCgkqIHRvb2xzL3dpbmVpbnN0YWxsOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUZpeGVkIGEgY291cGxlIG9mIGNvbmZpZy5jYWNoZSBwcm9ibGVtcy4KCgkqIGRsbHMvY29tY3RsMzIvdHJhY2tiYXIuYzogVmFoaWQgUG91cmxvdGZhbGkKCVRyYWNrYmFyIGNvbnRvbCBkaWQgbm90IGhhdmUgcHJvcGVyIHBvc2l0aW9uIHZhbHVlIGluIGNhc2Ugb2YKCVNCX1RIVU1CVFJBQ0sgbm90aWZpY2F0aW9uIG1lc3NhZ2U6IGl0IHdhcyBhbHdheXMgc2VuZGluZyAwLgoKCUppbSBBc3RvbiA8amltYUBjb3JlbC5jYT4KCU1hZGUgdGhlIHNsaWRlciBjb250cm9sIGEgcmVjdC4gIEl0IGhhZCBiZWVuIHRyeWluZyB0byBkcmF3IGEgbm90Y2hlZAoJc2xpZGVyLCBidXQgdGhlIHJlc3VsdCBkaWRuJ3QgbG9vayByaWdodC4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCU1hZGUgV0lOU09DS19zZXRzb2Nrb3B0IGhhbmRsZSBvcHRpb24gU09fRE9OVExJTkdFUiBjb3JyZWN0bHkuCgoJKiBvYmplY3RzL2N1cnNvcmljb24uYzogU2VyZ2UgSXZhbm92IDxzZXJnZWlAY29yZWwuY2E+CglDVVJTT1JJQ09OX0ljb25Ub0N1cnNvcjogaW5jb25zaXN0ZW50IExvY2svVW5sb2NrCgoJKiBmaWxlcy9wcm9maWxlLmM6IFV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVBST0ZJTEVfR2V0U3RyaW5nOiBvbmx5IGFjY2VwdCBOVUxMIGZvciBrZXluYW1lIHRvIHJldHVybiB0aGUgbGlzdCBvZgoJa2V5cyBhcyBXaW45NSBkb2VzLgoKCSogZ3JhcGhpY3MveDExZHJ2L2RpYi5jOiBKb2VyZyBNYXllciA8am1heWVyQHRlbGVzdW4yLnRlbGVtYXRpb24uZGU+CglGaXggYSBzaWduIGJ1ZyB3aGVyZSBtZW1jcHkgd2FzIGNhbGxlZCB3aXRoIG5lZ2F0aXZlIGxlbmd0aC4KCjIwMDAtMDItMjkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBmaWxlcy9wcm9maWxlLmM6IE1ha2UgcHJvZmlsZSBrZXkgYSBnbG9iYWwgaGFuZGxlLgoKCSogZGxscy93aW4zMnMvLmN2c2lnbm9yZSwgZGxscy93aW4zMnMvTWFrZWZpbGUuaW4sIGRsbHMvd2luMzJzL3czMnNrZXJuZWwuYywgZGxscy93aW4zMnMvdzMyc2tybmwuYywgTWFrZS5ydWxlcy5pbiwgZGxscy9NYWtlZmlsZS5pbjoKCVJlbmFtZWQgbGlid2luMzJzIHRvIHVzZSB0aGUgcHJvcGVyIGRsbCBuYW1lIChsaWJ3MzJza3JubCkuCgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jLCB3aW5kb3dzL3gxMWRydi93bmQuYywgZGxscy9jb21jdGwzMi9tb250aGNhbC5jLCBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYywgZGxscy9pbW0zMi9pbW0uYywgZGxscy9tc2FjbTMyL2RyaXZlci5jLCBkbGxzL21zdmlkZW8vbXN2aWRlb19tYWluLmMsIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYywgbXNkb3MvaW50MjEuYywgd2luZG93cy94MTFkcnYvY2xpcGJvYXJkLmM6CglOaWVscyBLcmlzdGlhbiBCZWNoIEplbnNlbiA8bmtiakBpbWFnZS5kaz4KCVJlbW92ZWQgc3VwZXJmbHVvdXMgI2luY2x1ZGUgc3RhdGVtZW50cyBmb3IgaGVhZGVyIGZpbGVzIGluY2x1ZGVkIHR3aWNlLgoKCSogZGxscy9jb21jdGwzMi91cGRvd24uYzogU2VyZ2UgSXZhbm92IDxzZXJnZWlAY29yZWwuY2E+CglNYWtlIHVwZG93biBjb250cm9sIHdvcmsuIFVwRG93biBjb250cm9sIGFsd2F5cyBzZW5kcyBXTV8qU0NST0xMCgltZXNzYWdlIGFuZCB1c2VzIFNCX1RIVU1CUE9TSVRJT04gY29kZSAobm90IFNCX0xJTkVbVVB8RE9XTl0pLgoKCSogZGxscy9jb21jdGwzMi9oZWFkZXIuYzogUGFzY2FsIExlc3NhcmQgPHBhc2NhbEBtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGVkIHRoZSBiZWhhdmlvciBvZiBzZW5kaW5nIFdNX0NPTlRFWFRNRU5VIHdoZW4gcmVjZWl2aW5nIGEKCVdNX1JCVVRUT05VUC4KCgkqIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmM6IE11cmFsaSBQYXR0YXRoZQoKCVRoaXMgaXMgdGhlIHBhdGNoIGZvciB0aGUgT2xlQ29udmVydE9MRVNUUkVBTVRvSVN0b3JhZ2Ugd2luZSBBUEkuCglUaGlzIEFQSSBjYWxscyBhbm90aGVyIGZ1bmN0aW9uIGNhbGxlZCBPTEVDT05WRVJUX0xvYWRPTEUxMCB3aGljaAoJYmFzaWNhbGx5IHJlYWQgdGhlIE9MRSBzdHJlYW0gZnJvbSB0aGUgZmlsZSB0aHJvdWdoIHRoZSBjYWxsYmFjawoJZnVuY3Rpb24gKHRoaXMgaXMgcGFzc2VkIGJ5IHRoZSBhcHBsaWNhdGlvbikuCgoJVGhlIHJlYWRpbmcgZm9ybWF0IHdhcyB3cm9uZy4gU3RpbGwgSSBhbSBub3QgdmVyeSBzdXJlIHRoaXMgaXMgMTAwICUKCWNvcnJlY3QgZm9ybWF0LiBJIGRpZCBzb21lIHJldmVyc2UgZW5naW5lZXJpbmcgYW5kIGZvdW5kIHRoZSBmb3JtYXQuIEkKCWhhdmUgdHJpZWQgd2l0aCBkaWZmZXJlbnQgT0xFIG9iamVjdCBhbmQgaXRzIHdvcmtlZCBpbiBwYXJhZG94LiBJCgloYXZlbid0IHRlc3RlZCB3aXRoIGFueSBvdGhlciBhcHBzLgoKCSogZGxscy9vbGVhdXQzMi9NYWtlZmlsZS5pbiwgZGxscy9vbGVhdXQzMi9vbGVhdXQzMi5zcGVjLCBkbGxzL29sZWF1dDMyL3N0dWJzLmMsIGRsbHMvb2xlcHJvMzIvb2xlcHJvMzIuc3BlYywgZGxscy9vbGVwcm8zMi9vbGVwcm8zMnN0dWJzLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCU1vdmVkIHNvbWUgc3R1YnMgYW5kIGFkZGVkIGZvcndhcmRzIGluIG9yZGVyIHRvIG1ha2UgYm90aCB3aW5hcGlfY2hlY2sKCWFuZCBjaGVja2xpbmsgaGFwcHkuCgoJKiB0b29scy93aW5hcGlfY2hlY2svKjoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJTW92ZWQgdGhlIHJlc3Qgb2YgdGhlIEFQSSBzcGVjaWZpY2F0aW9uIGZyb20gdGhlIGdsb2JhbCBmaWxlIHRvIHRoZQoJbG9jYWwgZmlsZXMuCgoyMDAwLTAyLTI3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogQU5OT1VOQ0UsIENoYW5nZUxvZywgaW5jbHVkZS92ZXJzaW9uLmg6IFJlbGVhc2UgMjAwMDAyMjcuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjIwMDAtMDItMjcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW4zMi9pbml0LmM6IFV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUdldENvbXB1dGVyTmFtZUEoKTogYWRkZWQgcGFyYW1ldGVyIGNoZWNrIGxpa2UgV2luOTUgZG9lcy4KCgkqIHRvb2xzL2J1aWxkLmM6IFBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBGaXhlZCBzb21lIFNvbGFyaXMgc3BlY2lmaWMgYXNzZW1ibGVyIHByb2JsZW1zCgktIEZpeGVkIHNvbWUgbWlzc2luZyAudHlwZSBAZnVuY3Rpb24gKGhlbHBzIGRlYnVnZ2luZyB3aXRoIGRieCkKCS0gRml4ZWQgY29kZSBuZWVkaW5nIF9fYXR0cmlidXRlX18oKGNvbnN0cnVjdG9yKSlfXyBmb3Igbm9uLUdDQyBFTEYgY29tcGlsZXJzCgktIEZpeGVkIHVzZSBvZiB6ZXJvIHdpZHRoIGFycmF5cyAoQU5TSSBDIHZpb2xhdGlvbikKCS0gQEdPVE9GRiBvbiBTb2xhcmlzIGRvZXNuJ3Qgd29yayAtIHVzZSBAR09UIGFuZCByZWRpcmVjdGlvbiBpbnN0ZWFkCgoJKiBtZW1vcnkvc2VsZWN0b3IuYywgaW5jbHVkZS9zZWxlY3RvcnMuaDoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSBTb2xhcmlzIHNwZWNpZmljIGFzc2VtYmxlciBwcm9ibGVtcy4KCgkqIGRsbHMvb2xlMzIvb2xlMzIuc3BlYywgZGxscy9zaGVsbDMyL3NobHdhcGkuc3BlYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSBpc3N1ZXMgZm91bmQgYnkgd2luYXBpX2NoZWNrLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL250ZGxsLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL29sZTMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL29sZWF1dDMyLmFwaToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJVXBkYXRlZCB3aW5hcGlfY2hlY2suCgoJKiB0b29scy9nZW5wYXRjaDogU3RldmVuIEVsbGlvdHQgPGVsbGlvdHNsQG1pbmRzcHJpbmcuY29tPgoJQWRkZWQgdXRpbGl0eSB0aGF0IGdlbmVyYXRlcyBwYXRjaGVzIGZvciBzdWJtaXNzaW9uIHRvCgl3aW5lLXBhdGNoZXNAd2luZWhxLmNvbS4KCgkqIGRsbHMvb2xlYXV0MzIvTWFrZWZpbGUuaW4sIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzIuc3BlYzoKCW9sZWF1dDMyIHNob3VsZCBub3QgaW1wb3J0IGZ1bmN0aW9ucyBmcm9tIG9sZXBybzMyLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jLCBpbmNsdWRlL2xpc3R2aWV3Lmg6CglQaWVycmUgTWFnZWF1IDxwaWVycmVAbWFjYWRhbWlhbi5jb20+CglEb24ndCBkaXNwbGF5IHRoZSBjb250ZXh0IG1lbnUgb24gYSBkb3VibGUgY2xpY2suCgoJVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hjQGNvcmVsLmNhPgoJU2V0IHRoZSBmb250IG9uIHRoZSBlZGl0IGxhYmVsIGNvbnRyb2wgdG8gdGhhdCB1c2VkIGJ5IHRoZSBsaXN0dmlldwoJY29udHJvbC4gSXQgYWxzbyB1c2VzIHRleHQgbWV0cmljcyB0byBzZXQgYSBtb3JlIHJlYXNvbmFibGUgaW5pdGlhbAoJZWRpdCBjb250cm9sIHNpemUuCgoJUGllcnJlIE1hZ2VhdSA8cGllcnJlQG1hY2FkYW1pYW4uY29tPgoJSGFuZGxlIE1fU0VUUkVEUkFXIGluIExpc3RWaWV3LgoJRml4IHRvIEVuc3VyZVZpc2libGUgdG8gaGFuZGxlIHNtYWxsIGFuZCBsYXJnZSBpY29uIGNvcnJlY3RseS4KCUFkZCBlZGl0IGxhYmVsIGZ1bmN0aW9ubmFsaXR5IHRvIHRoZSBsaXN0dmlldyBhbmQgdGhlIGZpbGUgb3BlbiBkaWFsb2cuCgoJVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hjQGNvcmVsLmNhPgoJUmVsYXNlREMgaW4gQ3JlYXRlRWRpdExhYmVsLgoKCVBpZXJyZSBNYWdlYXUgPHBpZXJyZUBtYWNhZGFtaWFuLmNvbT4KCUFkZCBmdW5jdGlvbm5hbGl0eSB0byBjcmVhdGUgbmV3IGZvbGRlciBpbiB0aGUgb3BlbiBkaWFsb2cuCglBZGQgc3VwcG9ydCBmb3IgcmlnaHQgY2xpY2sgbWVudSBpbiBjb21tb24gZmlsZSBkaWFsb2cuCglMSVNUVklFV19FbmRFZGl0bGFiZWwgaXMgbm93IGhhbmRsaW5nIE5PTkxQU1RSX1RFWFRDQUxMQkFDSyBsaXN0dmlldyBpdGVtcy4KCglTZXJnZSBJdmFub3YgPHNlcmdlaUBjb3JlbC5jYT4KCUxJU1RWSUVXX0dldENvbHVtbkEgZml4IChkbyBub3QgY29weSBzdHJpbmcsIHBhc3MgcG9pbnRlcnMpLgoKCUx1YyBUb3VyYW5nZWF1IDxsdWNAbWFjYWRhbWlhbi5jb20+CglQcmV2ZW50aW5nIGEgZGl2aWRlIGJ5IHplcm8gd2hlbiBoYW5kbGluZyBMVldfRU5TVVJFVklTSUJMRSBtZXNzYWdlLgoKCURvbiBLZWxseQoJLUltcGxlbWVudGVkIHRoZSBzb3J0aW5nIG9uIGluc2VydCBvZiBpdGVtcyBpbnRvIGEgTGlzdFZpZXcgY29udHJvbAoJIHdpdGggZWl0aGVyIExWU19TT1JUQVNDRU5ESU5HIG9yIExWU19TT1JUREVTQ0VORElORyBzZXQuCgktKGhlbHBpbmcgZXZpbCBhcHBsaWNhdGlvbnMpOiBzb21ldGltZXMgbm90IHNvIHdlbGwgc3RydWN0dXJlZCBhcHBzCgkgKFBGUEk5MCwgaW4gdGhpcyBjYXNlKSB3aWxsIG5vdCBmdWxseSBpbml0aWFsaXplIHN0cnVjdHMuICBJbiB0aGUgY2FzZQoJIG9mIHRoZSBMVk1fR0VUSVRFTSBtZXNzYWdlIHRoZSBhcHAgbWF5IGhhdmUgb25seSBpbml0aWFsaXplZCB0aGUgbWFzawoJIGFuZCBpSXRlbSBtZW1iZXJzIG9mIHRoZSBzdHJ1Y3QuICBBZGRlZCBwcm9jZXNzaW5nIG9mIHRoZSBMVklGX1BBUkFNCgkgbWFzayBpbiB0aGUgY2FzZSB0aGF0IGlTdWJJdGVtIHdhcyBzZXQgYnV0IGlzIGludmFsaWQvdW5pbml0aWFsaXplZC4KCglQaWVycmUgTWFnZWF1IDxwaWVycmVAbWFjYWRhbWlhbi5jb20+CglGaXggZm9yIGhhbmRsaW5nIGNvcnJlY3RseSB0aGUgY2FuY2VsbGluZyBtb2RlIG9mIHRoZSBFZGl0IGxhYmVsLgoJRml4IHdpZHRoIGNhbGN1bGF0aW9uIG9mIHRoZSBlZGl0IGxhYmVsLgoKCVBhc2NhbCBMZXNzYXJkIDxwYXNjYWxAbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRlZCB0aGUgYmVoYXZpb3Igb2Ygc2VuZGluZyBXTV9DT05URVhUTUVOVSB3aGVuIHJlY2VpdmluZyBhCglXTV9SQlVUVE9OVVAuCgoJVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hjQGNvcmVsLmNhPgoJRml4ZWQgYSBwYWludGluZyBwcm9ibGVtIHdpdGggbGlzdHZpZXcgd2hlbiB0aGUgdmlldyBjaGFuZ2VzIGFuZCBhbgoJZWRpdCBsYWJlbCBpcyBhY3RpdmUuCgoJVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hjQGNvcmVsLmNhPgoJRml4ZWQgYSBub3RpZmljYXRpb24gcHJvYmxlbSB3aXRoIGxpc3R2aWV3LiBPbiBjcmVhdGlvbiBpZiB0aGUgdXNlcgoJc3BlY2lmaWVzIGFuIGl0ZW0gd2l0aCBmb2N1cyBhbmQvb3Igc2VsZWN0aW9uIHdlIHNob3VsZCBzZW5kIHRoZQoJcHJvcGVyIG5vdGlmaWNhdGlvbi4gSW5zZXJ0IHdhcyBwcmV2ZW50aW5nIExJU1RWSUVXX1NldEl0ZW0gZnJvbQoJc2VlaW5nIHRoZSBjaGFuZ2VzIGFuZCBzZW5kaW5nIHRoZSBub3RpZmljYXRpb24uCgoJTWFrZSB0aGUgZHJhdyBpdGVtIHJlY3RhbmdsZSBjb25zaXN0ZW50IHdpdGggdGhlIHNlbGVjdGlvbgoJcmVjdGFuZ2xlLiBUaGlzIGFsbG93cyB1cyB0byBjbGljayBvbiB0aGUgZm9sZGVycyBhbmQgaWNvbnMgaW4gdGhlCglmaWxlIG9wZW4gZGlhbG9nIGJveCBhbmQgdGhlIGl0ZW0gYWN0dWFsbHkgZ2V0cyBzZWxlY3RlZC4KCgkqIGZpbGVzL2RyaXZlLmM6IFBldHIgVG9tYXNlayA8dG9tYXNla0BldGYuY3VuaS5jej4KCS0gV3JpdGUgc2VyaWFsIG51bWJlcnMgdG8gdGhlIGRldmljZSAoRkFUKQoJLSBEUklWRV9SZWFkU3VwZXJibG9jazogYmV0dGVyIGNoZWNraW5nIGZvciB0aGUgRkFUIGZzLgoKCSogZmlsZXMvZG9zX2ZzLmM6IFV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUdldEZ1bGxQYXRoTmFtZSBmaXhlcy4KCjIwMDAtMDItMjYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW5udC5oLCBtZW1vcnkvc3RyaW5nLmMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy9udGRsbC9ydGwuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJRml4ZWQgZGVmaW5pdGlvbiBvZiB0aGUgUnRsTWVtb3J5IGZ1bmN0aW9ucy4gVXNlIG1hY3JvcyBpbnRlcm5hbGx5IGFuZAoJZm9yIFdpbmVsaWIsIHVzZSByZWFsIGZ1bmN0aW9ucyBmb3IgZXhwb3J0cyBmcm9tIG50ZGxsLgoKCSogaW5jbHVkZS9vbGUyLmg6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJUHJvdG90eXBlcyBPbGVJbml0aWFsaXplLCBPbGVVbmluaXRpYWxpemUuCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmM6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJQXJyYW5nZUN0cmxQb3NpdGlvbnM6IGZpeCBmb3IgdXNlci1kZWZpbmVkIHRlbXBsYXRlIHdpdGggbm8gc3RjMzIuCgoJKiBjb250cm9scy9tZW51LmMsIGluY2x1ZGUvbWVudS5oLCB3aW5kb3dzL21lc3NhZ2UuYzoKCVVscmljaCBDemVrYWxsYSA8dWxyaWNoY0Bjb3JlbC5jb20+CglTZW5kIFdNX0hFTFAgbWVzc2FnZSB3aGVuIEYxIGlzIHByZXNzZWQuCgoJKiBjb250cm9scy9saXN0Ym94LmM6IFl1eGkgWmhhbmcgPHl1eGlAY29yZWwuY2E+CglJbiB0aGUgbGlzdGJveCwgd2hlbiB0aGUgbGFzdCBpdGVtIGlzIHNlbGVjdGVkIGFuZCBkZWxldGVkLCBpdCBzdGlsbAoJYXBwZWFyZWQgaW4gdGhlIHdpbmRvdy4KCglTaGVyaSBTdGVldmVzIDxzaGVyaUBtYWNhZGFtaWFuLmNvbT4KCUluIExJU1RCT1hfVXBkYXRlU2Nyb2xsKCksIGlmIHRoZSBsaXN0Ym94IGRpZCBub3QgaGF2ZSB0aGUgV1NfU0NST0xMCglzdHlsZSBpdCB3b3VsZCBqdXN0IHJldHVybi4gIFRoaXMgbGVmdCB0aGUgaG9yaXpvbnRhbCBzY3JvbGwgYmFyCgl1bmluaXRpYWxpemVkIGFuZCBpdCB3YXMgYXBwZWFyaW5nIGF0IHRoZSBib3R0b20gb2YgdGhlIGxpc3Rib3ggd2hlbgoJaXQgZGlkIG5vdCBoYXZlIHRvLgoKCVNlcmdlIEl2YW5vdiA8c2VyZ2VpQGNvcmVsLmNvbT4KCUxJU1RCT1hfU2V0Q29sdW1uV2lkdGggYWRkcyBleHRyYSAyIHBpeGVscyB0byB0aGUgcGFzc2VkIGNvbHVtbiB3aWR0aAoJKGl0IHNheXMgaXQgaXMgZm9yIGNvbHVtbiBtYXJnaW5zKS4gT2J2aW91c2x5IGl0IGlzIHdyb25nLCBiZWNhdXNlCgltYXJnaW5zIG11c3QgYmUgaW50ZXJuYWwuCgoJKiBkbGxzL29sZTMyL01ha2VmaWxlLmluLCBkbGxzL29sZTMyL2Vycm9yaW5mby5jLCBkbGxzL29sZWF1dDMyL01ha2VmaWxlLmluLCBkbGxzL29sZWF1dDMyL2Vycm9yaW5mby5jOgoJRXJyb3JJbmZvIGZ1bmN0aW9ucyBuZWVkIHRvIGJlIGluIG9sZTMyLCBub3Qgb2xlYXV0MzIuCgoJKiBkbGxzL2NydGRsbC93Y3N0cmluZy5jOiBNb3JlIHBvcnRhYmxlIENSVERMTF9pc3djdHlwZS4KCgkqIGRsbHMvc2hlbGwzMi9zaGxtZW51LmMsIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmMsIGRsbHMvc2hlbGwzMi9zaGx3YXBpLnNwZWMsIGRsbHMvc2hlbGwzMi9zaHZfYmdfY21lbnUuYywgZGxscy9zaGVsbDMyL3Nodl9pdGVtX2NtZW51LmMsIGRsbHMvc2hlbGwzMi9waWRsLmgsIGRsbHMvc2hlbGwzMi9zaGxmaWxlb3AuYywgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglNb3ZlZCBmaWxlIGZ1bmN0aW9ucyB0byBzaGxmaWxlb3AuYwoJTmV3IFNIRUxMX0RlbGV0ZURpcmVjdG9yeUEKCVVzZSBzaGVsbCBub3RpZmljYXRpb25zLgoJRW5hYmxlZCBmaWxlIG1hbmlwdWxhdGlvbiBmdW5jdGlvbnMuCgoJKiBkbGxzL3NoZWxsMzIvZm9sZGVycy5jLCBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCUZpeCBmb3IgT3Blbkljb24uCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLCBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCVN0dWIgUGF0aElzRGlyZWN0b3J5LgoKCSogZGxscy9zaGVsbDMyL3NoZWxsb3JkLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCUZpeGVzIGZvciBTaGVsbEV4ZWN1dGVFeC4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwgaW5jbHVkZS93aW5lL3VuZG9jc2hlbGwuaCwgZGxscy9zaGVsbDMyL2NoYW5nZW5vdGlmeS5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCUJhc2ljIGltcGxlbWVudGF0aW9uIG9mIHNoZWxsIG5vdGlmaWNhdGlvbnMuCgoJKiBkb2N1bWVudGF0aW9uL3NoZWxsMzI6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJVXBkYXRlZC4KCgkqIGluY2x1ZGUvd2luZS9vYmpfY29udGV4dG1lbnUuaCwgaW5jbHVkZS93aW5lL29ial9leHRyYWN0aWNvbi5oLCBpbmNsdWRlL3dpbmUvb2JqX3NoZWxsZm9sZGVyLmg6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCUFkZGVkIFdpbmVsaWIgdHlwZXMuCgoJKiBkbGxzL3NoZWxsMzIvc2hyZXMucmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJQWRkZWQgaWNvbiBubyA0IChvcGVuIGZvbGRlcikuCgoJKiBkbGxzL29sZTMyL29sZTMyLnNwZWMsIGRsbHMvb2xlYXV0MzIvTWFrZWZpbGUuaW4sIGRsbHMvb2xlYXV0MzIvZXJyb3JpbmZvLmMsIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzIuc3BlYywgaW5jbHVkZS9vbGVhdXRvLmg6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUFkZGVkIHN0dWJzIGZvciB7Q3JlYXRlLEdldCxTZXR9RXJyb3JJbmZvLgoKCSogZGxscy9vbGUzMi9vbGUyc3R1YnMuYzogQWJleSBHZW9yZ2UgPGFiZXlAbWFjYWRhbWlhbi5jb20+CglSZXR1cm4gYW4gZXJyb3IgaW5zdGVhZCBvZiBhIHN1Y2Nlc3MgY29kZSBpbiBPbGVDcmVhdGUgc3R1YiBmdW5jdGlvbi4KCgkqIGRsbHMvY29tY3RsMzIvdGFiLmMsIGluY2x1ZGUvdGFiLmg6IERvbiBLZWxseQoJSW4gV2luZG93cyBQcm9wZXJ0eSBTaGVldCBjYW4gaGF2ZSBhbnkgbWl4IG9mIGljb24tbGVzcyB0YWJzIGFuZCB0YWJzCgl3aXRoIGljb25zLiAgQWRkcyBhIGNoZWNrIHRvIHNlZSBpZiB0aGUgaWNvbiB3ZSdyZSBhZGRpbmcgaXMgbm9uLU5VTEwKCShvdGhlcndpc2UgcmFuZG9tIGp1bmsgZnJvbSBtZW1vcnkgY2FuIGJlIHJlbmRlcmVkKSB3aGVuIHRoZSBhcHBsaWNhdGlvbgoJaGFzIHNwZWNpZmllZCB0aGUgUFNQX1VTRUlDT05JRCBmbGFnIGlzIHNldC4gIENoYW5nZXMgdG8gdGhlIFRhYiBjb250cm9sCgl0byBvbmx5IHJlbmRlciBpY29ucyBmb3IgdGFicyB0aGF0IGhhdmUgdGhlIFRDSUZfSU1BR0UgZmxhZyBzZXQKCShwcmV2aW91c2x5LCBpZiB0aGUgZmxhZyB3YXMgc2V0IHRoZSBlbnRpcmUgaW1hZ2UgbGlzdCBvZiBpY29ucyB3YXMKCXJlbmRlcmVkKS4KCglTdGVwaGFuZSBMdXNzaWVyIDxzdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KCUZpeGVzIGZvciBzb21lIHRhYiBjb250cm9sIGJ1Z3MKCglIZW5uaW5nIEhvZmZtYW5uCglGaXhlZCBzb21lIHdpZHRoIHByb2JsZW0gd2l0aCBPV05FUkRSQVcgdGFiLgoKCUx1YyBUb3VyYW5nZWF1IDxsdWNAbWFjYWRhbWlhbi5jb20+CglUQ01fQURKVVNUUkVDVCBpcyBub3cgcmV0dXJuaW5nIGNvbnNpc3RhbnQgY29tcGFyZSB0byBXaW5kb3dzLgoKCVNlcmdlIEl2YW5vdiA8c2VyZ2VpQGNvcmVsLmNhPgoJRml4ZWQgcHJvYmxlbSB3aXRoIHRhYiBzZWxlY3Rpb24uIFdoZW4geW91IHNlbGVjdCB0YWIgaXQgYmVjYW1lcyBmaXJzdAoJdmlzaWJsZSB0YWIuIE5vdyBsZWZ0bW9zdCB2aXNpYmxlIHRhYiBpcyBjYWxjdWxhdGVkIHByb3Blcmx5LgoJLSBBZGRlZCBjb2RlIGZvciBjb3JyZWN0IGhhbmRsaW5nIG9mIHVwZG93biBjb250cm9sLgoJLSBGb3JjZWQgcmVjYWxjdWxhdGlvbiBvZiB0YWJzJyBjb29yZGluYXRlcyB3aGVuOgoJYSkgYWxsIGl0ZW1zIGFyZSBkZWxldGVkLAoJYikgd2luZG93IHN0eWxlIGlzIGNhbmdlZAoKCSogaW5jbHVkZS9jb21tY3RybC5oOiBJYW4gU2NobWlkdCA8aXNjaG1pZHRAY2ZsLnJyLmNvbT4KCUFkZGVkIG5lY2Vzc2FyeSBkZWZpbmVzIGFuZCBzdHJ1Y3R1cmVzIHRvIGNvbXBpbGUgV2luZUxpYiBhcHBzIHVzaW5nCglNRkMgNi4wIGhlYWRlcnMuCglGaXhlZCB0eXBvIGluIFRDTV9TRVRNSU5UQUJXSURUSCBjb25zdGFudC4KCgkqIGNvbnRyb2xzL2J1dHRvbi5jOiBCaWxsIEppbiA8YmlsbGpAY29yZWwuY2E+CglCaXRtYXAgYnV0dG9ucyB3ZXJlIG5vdCByZWZyZXNoZWQgY29ycmVjdGx5LgoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYzogSmltIEFzdG9uIDxqaW1hQGNvcmVsLmNhPgoJVGhpcyByZXZlcnRzIE1hdHRzIHBhdGNoLiAgVGhlIG1lc3NhZ2luZyBuZWVkcyBkb3VibGUgY2hlY2tpbmcuCgoJKiB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy93aW5wcm9jLmMsIG1lbW9yeS9zZWxlY3Rvci5jLCBtaXNjL3czMnNjb21iLmMsIG1zZG9zL2RwbWkuYywgcmVsYXkzMi9yZWxheTM4Ni5jLCBzY2hlZHVsZXIvc3lzZGVwcy5jLCBzY2hlZHVsZXIvc3lzbGV2ZWwuYywgdG9vbHMvYnVpbGQuYywgd2luMzIva2VybmVsMzIuYywgY29udHJvbHMvZWRpdC5jLCBjb250cm9scy9saXN0Ym94LmMsIGRlYnVnZ2VyL3JlZ2lzdGVycy5jLCBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmMsIGlmMTYzMi9zbm9vcC5jLCBpZjE2MzIvdGh1bmsuYywgaW5jbHVkZS9zZWxlY3RvcnMuaCwgaW5jbHVkZS90aHJlYWQuaCwgaW5jbHVkZS93aW5udC5oLCBsb2FkZXIvbWFpbi5jOgoJSW1wcm92ZWQgdGhlIHNlbGVjdG9yIGdldC9zZXQgZnVuY3Rpb25zLgoJU3VwcG9ydCBBTlNJLWNvbXBhdGlibGUgaW5saW5lIGFzbSAod2l0aCB0aGUgaGVscCBvZiBQYXRyaWsgU3RyaWR2YWxsKS4KCgkqIGRsbHMvd2lubW0vam95c3RpY2svTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vbWNpYW5pbS9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS9tY2lhdmkvTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vbWNpY2RhL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL21jaXNlcS9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS9tY2l3YXZlL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL21pZGltYXAvTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vd2F2ZW1hcC9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS93aW5lb3NzL01ha2VmaWxlLmluLCBpbmNsdWRlL2FjY29uZmlnLmgsIGluY2x1ZGUvY29uZmlnLmguaW4sIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvYXZpZmlsMzIvTWFrZWZpbGUuaW4sIGRsbHMvY29tY3RsMzIvTWFrZWZpbGUuaW4sIGRsbHMvY29tbWRsZy9NYWtlZmlsZS5pbiwgZGxscy9tc3ZpZGVvL01ha2VmaWxlLmluLCBkbGxzL29sZWF1dDMyL01ha2VmaWxlLmluLCBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vLmN2c2lnbm9yZSwgZGxscy93aW5tbS9NYWtlZmlsZS5pbiwgTWFrZS5ydWxlcy5pbiwgTWFrZWZpbGUuaW46CglNYWRlIHdpbm1tIGEgc2VwYXJhdGUgc2hhcmVkIGxpYnJhcnkuCgoJKiBzY2hlZHVsZXIvcHJvY2Vzcy5jLCB0b29scy9iaW4ycmVzLmMsIGluY2x1ZGUvd2luZS93aW5kZWYxNi5oLCBsb2FkZXIvbmUvcmVzb3VyY2UuYywgbWlzYy9yZWdpc3RyeS5jLCBvYmplY3RzL2RpYi5jLCBvbGUvb2xlMm5scy5jLCBwcm9ncmFtcy9jbG9jay93aW5jbG9jay5jLCBkbGxzL3NoZWxsMzIvY2hhbmdlbm90aWZ5LmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBncmFwaGljcy94MTFkcnYvZGliLmMsIGlmMTYzMi9idWlsdGluLmMsIGluY2x1ZGUvZHBsb2JieS5oLCBpbmNsdWRlL3dpbmdkaS5oLCBkbGxzL2RwbGF5eC9kcGxvYmJ5LmMsIGRsbHMvaWNtcC9pY21wX21haW4uYywgZGxscy9udGRsbC9yZWcuYywgZGxscy9vZGJjMzIvcHJveHlvZGJjLmMsIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIEFOU0kgQyB2aW9sYXRpb25zLgoKCSogc2VydmVyL2NvbnRleHRfaTM4Ni5jOiBQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIFNvbGFyaXMgc3BlY2lmaWMgY29tcGlsZXIgaXNzdWUuCgoJKiBmaWxlcy9kb3NfZnMuYywgd2luMzIvaW5pdC5jOiBQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgZGVidWcgbWVzc2FnZSBjcmFzaGVzLgoKCSogaW5jbHVkZS9kaW5wdXQuaCwgd2luZG93cy9kaW5wdXQuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIGltcGxlbWVudCBFbnVtT2JqZWN0cyBhbmQgR2V0UHJvcGVydHkgZm9yIE1vdXNlIGFuZCBKb3lzdGljayBkcml2ZXJzCgktIGltcGxlbWVudCBTZXREYXRhRm9ybWF0IGZvciB0aGUgTW91c2UgZHJpdmVyCgoJKiBkbGxzL3dpbm1tL2pveXN0aWNrLy5jdnNpZ25vcmUsIGRsbHMvd2lubW0vam95c3RpY2svTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vam95c3RpY2svam95c3RpY2suYywgZGxscy93aW5tbS9qb3lzdGljay9qb3lzdGljay5zcGVjLCBpbmNsdWRlL2RlYnVnZGVmcy5oLCBpbmNsdWRlL21lc3NhZ2UuaCwgaW5jbHVkZS9tbWRkay5oLCB3aW5kb3dzL21lc3NhZ2UuYywgTWFrZS5ydWxlcy5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vam95c3RpY2suYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJTW92ZWQgaGFyZHdhcmUgcmVsYXRlZCBoYW5kbGluZyB0byBkbGxzL3dpbm1tL2pveXN0aWNrIGRyaXZlci4KCUdvdCByaWQgb2Ygam95U2VuZE1lc3NhZ2VzKCkgaGFjayAobm93IGltcGxlbWVudGF0aW9uIHdpdGggYSB0aW1lcikuCgoyMDAwLTAyLTI1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbWlzYy9kZWJ1Z3N0ci5jOgoJUmVsZWFzZSB1bnVzZWQgc3BhY2UgaW4gZGVidWcgc3RyaW5ncyB0byBhdm9pZCB0b28gZnJlcXVlbnQKCXdyYXAtYXJvdW5kcyBpbiB0aGUgY2lyY3VsYXIgYnVmZmVyLgoKCSogZGxscy9vbGVhdXQzMi9NYWtlZmlsZS5pbjogQWRkZWQgaW1wb3J0IG9mIG9sZXBybzMyLgoKCSogd2luZWRlZmF1bHQucmVnOiBBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCUFkZGVkIE9MRSBlbnRyaWVzIGFuZCBjb21tZW50cy4KCgkqIG9sZS9ubHMvanBuLm5sczogSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUphcGFuZXNlIHN1cHBvcnQgaW1wbGVtZW50ZWQuCgoJKiBvbGUvb2xlMm5scy5jOiBTdGV2ZW4gRWxsaW90dCA8ZWxsaW90c2xAbWluZHNwcmluZy5jb20+CglTdHViYmVkIG91dCB0aGUgaW1wbGVtZW50YXRpb24gb2YgTENNQVBfU09SVEtFWSBpbiBMQ01hcFN0cmluZ1coKSBpbgoJb3JkZXIgdG8gYWxsb3cgV2luZG93cyA5eCBQZXJsIHRvIHN0YXJ0LgoKCSogZGxscy93aW5zcG9vbC9pbmZvLmM6IFVscmljaCBDemVrYWxsYSA8dWxyaWNoY0Bjb3JlbC5jYT4KCVRoaXMgcGF0Y2ggaW5pdGlhbGl6ZXMgdGhlIHJldHVybiBidWZmZXIgdXNlZCBpbiBHZXRQcmludGVyRHJpdmVyQSB0bwoJemVyb3MuIFRoaXMgcHJldmVudHMgYnVmZmVyIG92ZXJydW5zIGNhdXNlZCBieSBhY2Nlc3NpbmcgZ2FyYmFnZSBkYXRhLgoJU29tZSBpbXByb3ZlbWVudHMgdG8gdGhlIE5VTEwgY2hlY2sgcGF0Y2guCgoJR2F1dGFtIEphaW4KCUVudW1QcmludGVycyBpcyBub3QgcmV0dXJuaW5nIHRoZSBudW1iZXIgb2YgcHJpbnRlcnMgZm91bmQgaW4gY2FzZSB0aGUKCXBhcmFtZXRlciBkd0xldmVsIGlzIDEuCgoJKiBkbGxzL250ZGxsL3JlZy5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCURvIG5vdCBvdmVyd3JpdGUgdGhlIHZhbGlkIE9iamVjdEF0dHJpYnV0ZXMtPlJvb3REaXJlY3RvcnkuCglQZXJmb3JtIGNhc2UgaW5zZW5zaXRpdmUgY29tcGFyaXNvbiBmb3IgdGhlIHJlZ2lzdHJ5IHBhdGhzLgoKCSogaW5jbHVkZS9udGRkay5oOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCUFkZGVkIHByb3RvdHlwZXMgZm9yIHJlZ2lzdHJ5IGZ1bmN0aW9ucy4KCgkqIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbm5scy5oOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglNb3ZlIGRlZmluaXRpb24gb2YgQ1BJTkZPIHN0cnVjdHVyZSBmcm9tIHdpbmJhc2UuaCB0byB3aW5ubHMuaAoJQWRkIGRlZmluaXRpb24gb2YgQ1BJTkZPRVggc3RydWN0dXJlIHRvIHdpbm5scy5oCgoJKiBpbmNsdWRlL2NydGRsbC5oOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCUFkZCBwcm90b3R5cGUgZm9yIENSVERMTF93Y3N0b2wuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzogSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUZpeCBmb3IgdG9vbGJhciBidXR0b24gc2l6ZS4KCgkqIG1pc2MvbHN0ci5jOiBIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJRml4ZWQgQ2hhck5leHRBL0NoYXJOZXh0RXhBIGZvciBEQkNTLgoKCSogd2luZG93cy9tdWx0aW1vbi5jLCB3aW5kb3dzL3gxMWRydi9tb25pdG9yLmMsIGluY2x1ZGUvZGVidWdnZXIuaCwgbWlzYy9jb21tLmMsIG9sZS9vbGUybmxzLmMsIHJlbGF5MzIvc25vb3AuYywgdG9vbHMvYnVpbGQuYywgZGVidWdnZXIvbXNjLmMsIGRlYnVnZ2VyL3N0YWJzLmMsIGRsbHMvY29tY3RsMzIvZHJhZ2xpc3QuYywgZ3JhcGhpY3MvZGRyYXcuYzoKCUphbWVzIEFiYmF0aWVsbG8gPGFiYmV5akBXUEkuRURVPgoJTWlzYy4gZml4ZXMgZm9yIGNvbXBpbGVyIHdhcm5pbmdzLgoKCSogZGxscy9vbGUzMi9zdGdfc3RyZWFtLmMsIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmMsIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmgsIGluY2x1ZGUvb2xlMi5oLCBpbmNsdWRlL3dpbmUvb2JqX2Jhc2UuaCwgaW5jbHVkZS93aW5lcnJvci5oOgoJUGllcnJlIE1hZ2VhdSA8cGllcnJlQG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50YXRpb24gb2YgT2xlQ29udmVydCByb3V0aW5lcy4KCglUaHV5IE5ndXllbiA8dGh1eUBtYWNhZGFtaWFuLmNvbT4KCURvbid0IGFsbG93IHRvIHJlc2l6ZSBzdHJlYW0gb3BlbiBpbiByZWFkIG9ubHkgbW9kZQoJQWxsb3cgd3JpdGUgYWNjZXNzIGZvciBzdHJlYW0vc3RvcmFnZSBvcGVuIHdpdGggU1RHTV9SRUFEV1JJVEUuCglTdGdPcGVuU3RvcmFnZSByZXR1cm4gdmFsdWVzIGFyZSBub3cgbW9yZSBkZXRhaWxlZC4KCURvbid0IHJlbHkgb24gU1RHTV9DUkVBVEUgZmxhZyBpbiB0aGUgU3RvcmFnZSBjb25zdHJ1Y3Rvci4KCVByZXZlbnRpbmcgdG8gd3JpdGUgb3V0IG9mIGRhdGUgcHJvcGVydHkuCgoJT3dlbiBXYW5nIDxvd2Vud0Bjb3JlbC5jYT4KCUFsbG93IGJvdGggcG9zaXRpdmUgJiBuZWdhdGl2ZSAzMi1iaXQgaW50ZWdlcnMgYXMgd2l0aCBNRkMgYXNzdW1wdGlvbi4KCVRoaXMgcGF0Y2ggaW1wcm92ZXMgdGhlIDMyYml0IGxpbWl0IG9uIElTdHJlYW06OipfU2VlayBvcGVyYXRpb25zLgoKCUpvaG4gTGkgPGpvaG5sQGNvcmVsLmNhPgoJV2hlbiBXUCBvcGVucyBhIGxpbmtlZCBmaWxlLCB0aGUgbWFsbG9jIGZ1bmN0aW9uIGluCglPTEVDT05WRVJUX0xvYWRPTEUxMCguLi4pIHJldHVybnMgYSBOVUxMLiBUaGlzIGNhdXNlcyBhIGxhdGVyIFdpbmUKCWNyYXNoLiBUaGUgYWN0dWFsIHByb2JsZW0gaXMgdGhlIGZ1bmN0aW9uIHJlYWRpbmcgYSBsYXJnZSBkYXRhIGxlbmd0aC4KCgkqIGRsbHMvdmVyc2lvbi9pbmZvLmM6IFBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJTWFkZSBzb21lIGxvY2FsIGZ1bmN0aW9ucyBzdGF0aWMuCgoJKiBkbGxzL29sZWF1dDMyL29sZWF1dDMyLnNwZWMsIHNlcnZlci9jb250ZXh0X2kzODYuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSBpc3N1ZXMgZm91bmQgYnkgd2luYXBpX2NoZWNrLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrLyo6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCU1vdmVkIHNvbWUgb2YgdGhlIEFQSSBzcGVjaWZpY2F0aW9uIGZyb20gdGhlIGdsb2JhbCBmaWxlIHRvIHRoZSBsb2NhbAoJZmlsZXMuCgoJKiBkbGxzL21vdXNlL21vdXNlX21haW4uYywgaW5jbHVkZS9tb3VzZS5oLCBpbmNsdWRlL3R0eWRydi5oLCBpbmNsdWRlL3gxMWRydi5oLCB3aW5kb3dzL3R0eWRydi9tb3VzZS5jLCB3aW5kb3dzL3gxMWRydi9tb3VzZS5jOgoJSmFtZXMgQWJiYXRpZWxsbyA8YWJiZXlqQFdQSS5FRFU+CglCZXR0ZXIgdGhyZWFkIHNhZmV0eSBmb3IgV2FycFBvaW50ZXIgaGFjay4KCgkqIGRsbHMvYWR2YXBpMzIvYWR2YXBpMzIuc3BlYywgZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglBZGRlZCBBZGRBY2Nlc3NBbGxvd2VkQWNlLgoKCSogaW5jbHVkZS9jb21tY3RybC5oOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCVNvbWUgbW9yZSBMaXN0Vmlld18gbWFjcm9zLCB3aW5lbGliIGZpeGVzLgoKCSogb2JqZWN0cy9jdXJzb3JpY29uLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJRml4ZWQgYWxsb2NhdGlvbiBvZiAxNngxNiBpY29ucy4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJRm9yIHVuaWNvZGU6IGdpdmUgdGhlIHNlbGVjdGVkIGZpbGVuYW1lIGJhY2suCgoJKiB0b29scy93aW5laW5zdGFsbDogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglDaGVjayBmb3IgWHBtIGhlYWRlcnMgYW5kIGFkZCAvdXNyL2xvY2FsL2xpYiB0byAvZXRjL2xkLnNvLmNvbmYgaWYKCW5lY2Vzc2FyeS4KCgkqIHdpbmRvd3MvcGFpbnRpbmcuYzogU2VyZ2UgSXZhbm92IDxzZXJnZWlAY29yZWwuY2E+CglXZSBkb24ndCBuZWVkIHRvIGNhbGwgTFB0b0RQIGluIGhlcmUgYXMgZmFyIGFzIFBhdEJsdCBkb2VzIGl0IGludGVybmFsbHkuCgoJKiBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jOiBTZXJnZSBJdmFub3YgPHNlcmdlaUBjb3JlbC5jYT4KCUluIFdpbmRvd3MsIGlmIFByb3BlcnR5U2hlZXQgY2FuJ3QgY3JlYXRlIHNvbWUgcGFnZSBpdCBqdXN0IHNraXBzIGl0LiBUaGlzCglwYXRjaCBhZGRzIHNpbWlsYXIgYmVoYXZpb3VyIHRvIFdpbmUuIEl0IGFsc28gYWRkcyBzb21lIE5VTEwgY2hlY2tzLgoKCTx5dXhpQGNvcmVsLmNvbT4KCUZpeCBwcm9wZXJ0eSBzaGVldCBpbml0aWFsaXphdGlvbiBidWdzLgoKCU1hdHRoZXcgUm9iZXJ0c29uCglUaGUgdGVtcGxhdGUgd2FzIGNhbGxpbmcgR2V0QWN0aXZlSW5kZXggd2hpY2ggd2FzIG5vdCBiZWluZyBzZXQgaW4gdGhlCglwcm9wc2hlZXQgY29kZSwgYW5kIHRoZSBjYWxsIHdhcyBtb3ZlZCBiZWZvcmUgd2UgY2FsbCBTZXRBY3RpdmUgLQoJYmVjYXVzZSB0aGF0J3Mgd2hlcmUgd2UgcXVlcnkgZm9yIHRoZSBBY3RpdmUgSW5kZXguCgoJTm9vbWVuIEhhbXphCglSZXNpemUgcHJvcGVydHkgc2hlZXQgdG8gdGhlIGxhcmdlc3QgZGlhbG9nIHNpemUuCgoJRG9uIEtlbGx5CglJbiB0aGUgV01fSU5JVERJQUxPRyBoYW5kbGVyIGZvciB0aGUgcHJvcCBzaGVldCwgdGhlcmUgaXMgYSBjYWxsIHRvCglQUk9QU0hFRVRfSXNUb29TbWFsbCgpIHdoaWNoLCBpZiBpdCByZXR1cm5zIFRSVUUsIGNhbGxzCglQUk9QU0hFRVRfQWRqdXN0U2l6ZSgpLiAgQ29udHJhcnkgdG8gaXRzIGNvbW1lbnQsIC4uX0FkanVzdFNpemUoKSBhY3R1YWxseQoJYWxpZ25zIHRoZSBzaXplcyBvZiB0aGUgImxhcmdlc3QiIHByb3AuIHNoZWV0IGRpYWxvZyB0ZW1wbGF0ZSBhbmQgdGhlIHRhYgoJY29udHJvbC4gIFRoZSBJc1Rvb1NtYWxsKCkgY2FsbCBkb2Vzbid0IHByb3Blcmx5IGNhdGNoIHRoaXMgbWlzbWF0Y2guCglNb2RpZmllZCB0aGUgZnVuY3Rpb24gdG8gcmV0dXJuIFRSVUUgaWYgdGhlIHNpemVzIG1pc21hdGNoIGFuZCByZW5hbWVkIGl0IHRvCglQUk9QU0hFRVRfU2l6ZU1pc21hdGNoKCkgdG8gcmVmbGVjdCBpdHMgcHJvcGVyIHVzZS4KCgkqIGRsbHMvc2hlbGwzMi9zaGx3YXBpLnNwZWM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJV2UgZGVmaW5lIFBhdGhJU1VSTEEsIHNvIHVzZSBpdC4KCgkqIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmM6IFNlcmdlIEl2YW5vdiA8c2VyZ2VpQGNvcmVsLmNhPgoJSW4gZnVuY3Rpb24gSU1BR0VMSVNUX0ludGVybmFsRHJhd01hc2sgd2UgaGF2ZSB0byBtYXNrIG91dCBvdmVybGF5IG1hc2sgaW4KCWZTdHlsZS4gT3RoZXJ3aXNlIGNvbXBhcmlzb24gZlN0eWxlID09IElMRF9OT1JNQUwgd2lsbCBub3Qgd29yaywgd2hpY2ggbGVhZHMKCXRvIGltcHJvcGVyIGRpc3BsYXkgb2Ygb3ZlcmxheSBpbWFnZXMuCgoJKiB3aW5kb3dzL3dpbi5jOgoJQWxleGFuZHJlIEp1bGxpYXJkIDxqdWxsaWFyZEBjb2Rld2VhdmVycy5jb20+IChmb3IgQ29yZWwpCglBVE9NcyBhcmUgY29uc2lkZXJlZCB1bmlxdWUsIHNvIHdlIGRvbid0IG5lZWQgdG8gY2hlY2sgY2xhc3MKCXBvaW50ZXJzIGluIEZpbmRXaW5kb3cuCgoJKiBvYmplY3RzL3JlZ2lvbi5jOiBTZXJnZSBJdmFub3YgPHNlcmdlaUBjb3JlbC5jb20+CglOb3QgYWxsIHJlZ2lvbiBmdW5jdGlvbnMgdXBkYXRlZCAndHlwZScgZmllbGQgdG8gcmVmbGVjdCBjdXJyZW50CglyZWdpb24gc3RhdGUuCgoJKiBwcm9ncmFtcy9jbWRsZ3RzdC9jbWRsZ3IucmMsIHByb2dyYW1zL2NtZGxndHN0L2NtZGxndHN0LmM6CglFcmljIFdpbGxpYW1zIDxld2lsbEBuY2FsLnZlcmlvLmNvbT4KCU1pbm9yIGZpeHVwcyBhbmQgdHdlYWtpbmcsIGFuZCBhIGR1bW15IGhvb2suCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCUZpeGVkIGhhbmRsaW5nIG9mIGZpbGVkbGcgZmxhZ3MuCgoyMDAwLTAyLTIwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2NoZWR1bGVyL3Byb2Nlc3MuYzogQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglBZGRlZCBGSVhNRSBjb21tZW50IGZvciBlbnRyeSBwb2ludCBwYXJhbWV0ZXIuCgoJKiBkbGxzL29sZTMyL21vbmlrZXIuYywgZGxscy9vbGUzMi9vbGUzMi5zcGVjOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CgktIHN0dWIgZm9yIE9MRTMyLk1rUGFyc2VEaXNwbGF5TmFtZQoJLSBzcGVsbGluZyBmaXhlcwoKCSogd2luZG93cy9kaWFsb2cuYywgd2luZG93cy93aW4uYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJLSBmaXhlZCBteSBzbGlnaHRseSBpbmNvcnJlY3QgRW5kRGlhbG9nIHBhdGNoCgktIGNsZWFuZWQgdXAgd2luLmMKCgkqIHdpbmRvd3MveDExZHJ2L3duZC5jLCBkbGxzL2NvbWN0bDMyL3RhYi5jLCB3aW5kb3dzL3dpbnByb2MuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJU3BlbGxpbmcgZml4ZXMuCgoJKiBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU1hZGUgdGhlIGJ1ZmZlciBsaXN0IGluIHRoZSBkaXJlY3Rzb3VuZCBvYmplY3QgdGhyZWFkLXNhZmUuCgoJKiBsb2FkZXIvbW9kdWxlLmMsIGxvYWRlci9uZS9tb2R1bGUuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJSXQgc2VlbXMgdG8gYmUgR2V0TW9kdWxlRmlsZU5hbWUxNiB0aGF0IGNoZWNrcyBleGUgdmVyc2lvbiBvbiB3aGV0aGVyCgl0byByZXR1cm4gbG9uZyBvciBzaG9ydCBwYXRocywgbm90IEdldE1vZHVsZUZpbGVOYW1lQS4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnLmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJQXZvaWQgdG9vIG11Y2ggcmVmcmVzaGluZyB3aGVuIGNoYW5naW5nIHRoZSBkcml2ZSBpbiB0aGUgMTYgYml0cyBmaWxlCglkaWFsb2cuCgoJKiBmaWxlcy9kb3NfZnMuYzogUGV0ciBUb21hc2VrIDx0b21hc2VrQGV0Zi5jdW5pLmN6PgoJR2V0TG9uZ1BhdGhOYW1lIHJld3JpdGUuCgoJKiBkbGxzL2NvbW1kbGcvY2RsZ19Fbi5yYywgZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZ2Jyb3dzZXIuYywgZGxscy9jb21tZGxnL2ZpbGVkbGdicm93c2VyLmgsIGRsbHMvY29tbWRsZy9maWxldGl0bGUuYzoKCUNvcmVsIG1lcmdlOgoKCVBpZXJyZSBNYWdlYXUKCURvbid0IHVwZGF0ZSB0aGUgY29tYm8gYm94IHNlbGVjdGlvbiB3aGVuIGNsb3NpbmcgdGhlIGRpYWxvZyBvbmx5IHdoZW4KCWNsaWNraW5nIG9uIE9LIGJ1dHRvbi4gIEFkanVzdCBmaWxlIGRpYWxvZyBzaXplIHdoZW4gaGVscCBidXR0b24gaXNuJ3QKCXByZXNlbnQuCgoJRG9uIEtlbGx5LgoJRml4ZXMgcHJvYmxlbXMgd2l0aCBvcGVuIGRpYWxvZyBib3ggZmlsdGVycy4KCglVbHJpY2ggQ3pla2FsbGEKCVByZXZlbnRzIHRoZSBoZWxwIGJ1dHRvbiBmcm9tIGRpc3BsYXlpbmcgb24gT3BlbkZpbGUgZGlhbG9ncyB1bmxlc3MKCXRoZSBwcm9wZXIgZmxhZyBpcyBzZXQgaW4gdGhlIE9QRU5GSUxFTkFNRSBzdHJ1Y3QuCgoJWXV4aSBaaGFuZwoJRml4ZWQgbWVtb3J5IGxlYWsuCgoJSmVhbi1DbGF1ZGUgQmF0aXN0YQoJQWRkIHRvb2x0aXBzIHRvIHRoZSBmaWxlIERpYWxvZyB0b29sYmFyLgoKCVN5bHZhaW4gQm91Y2hhcmQsIEJpbGwgSmluCglUaHJlZSBuZXcgZnVuY3Rpb25zCglFbnVtU2VsZWN0ZWRQaWRscywgR2V0TnVtU2VsZWN0ZWQsIEZJTEVETEc5NV9Pbk9wZW5Vc2luZ1ZpZXc6IGNvcnJlY3Rpb25zCglJbnN0ZWFkIG9mIHBhc3NpbmcgaW4gYSBjb3B5IG9mIG9mbiwgcGFzc2luZyBpbiB0aGUgcG9pbnRlciBvZiBvZm4uCgoJRGF2aWQgR29sZGluZwoJQSAiISIgd2FzIG1pc3NpbmcgaW4gYSBjaGVjayBhZ2FpbnN0IGxwc3RySW5pdGlhbERpci4KCglSaWNrIE11dHprZQoJRml4ZWQgY3Jhc2g6IGlmIGRpYWxvZyBoYXMgbm8gZmlsZXR5cGVzIGFwcGVhcmluZyBpbiB0aGUgZHJvcGRvd24gbGlzdC4KCglNYXR0IFJvYmVydHNvbiwgVWxyaWNoIEN6ZWthbGxhCglGaXhlZCBwcm9ibGVtcyBvY2N1cnJpbmcgd2l0aCBzZWxlY3Rpb24gb2YgZmlsZXMgaW5zaWRlIG9wZW5maWxlZGxnLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGcuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CgktIGFjdGl2YXRlZCB1c2Ugb2YgdGVtcGxhdGVzCgktIG1vdmVkIHRoZSBjcmVhdGluZyBvZiBuZXcgZm9sZGVycyB0byB0aGUgc2hlbGx2aWV3CgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaDoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJU3RhcnRlZCB3aXRoIHNoZWxsLWNsaXBib2FyZCBoYW5kbGluZyAoY29udGV4dCBtZW51IGN1dCZwYXN0ZSwKCWRyYWcmZHJvcCkuCgoJKiBkbGxzL3NoZWxsMzIvZGF0YW9iamVjdC5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglSZW1vdmVkIEl0ZW1JRExpc3RMaXN0LCByZW9yZ2FuaXNhdGlvbiwgbW9yZSBmb3JtYXRzLgoKCSogZGxscy9zaGVsbDMyL3NobHZpZXcuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CgktIGltcGxlbWVudGVkIHJlbmFtZSwgY29weSBhbmQgZGVsZXRlIGZpbGUKCS0gIm5ldyBmaWxlIiBpcyBhY3RpdmF0aW5nIGxhYmVsIGVkaXQgZm9yIHJlbmFtZQoJLSBpbXBsZW1lbnRlZCBJU2hlbGxWaWV3X1NlbGVjdEl0ZW0KCgkqIGRsbHMvc2hlbGwzMi9zaHJlcy5yYywgZGxscy9zaGVsbDMyL3NocmVzZGVmLmgsIGRsbHMvc2hlbGwzMi9zaHZfYmdfY21lbnUuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJQmV0dGVyIGNvbnRleHQgbWVudXMuCgoJKiBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW4sIGRsbHMvc2hlbGwzMi9jbGlwYm9hcmQuYywgZGxscy9zaGVsbDMyL2NvbnRtZW51LmMsIGRsbHMvc2hlbGwzMi9zaHZfaXRlbV9jbWVudS5jLCBpbmNsdWRlL3dpbmUvb2JqX2NvbnRleHRtZW51LmgsIGluY2x1ZGUvd2luZS9vYmpfc2hlbGx2aWV3LmgsIGluY2x1ZGUvd2luZS91bmRvY3NoZWxsLmg6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCS0gbmV3IGZpbGVzIHJlbGF0ZWQgdG8gY29udGV4dCBtZW51IGFuZCBkcmFnIGRyb3AgZmlsZSBvcGVyYXRpb25zCgktIHJlbmRlciBmdW5jdGlvbnMgZm9yIGNsaXBib2FyZGZvcm1hdHMKCgkqIGRsbHMvc2hlbGwzMi9zaGVsbC5jLCBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmM6IFN0ZXBoYW5lIEx1c3NpZXIKCUltcGxlbWVudGVkIFBhdGhJc1VSTEEgYW5kIG1vZGlmaWVkIFNoZWxsRXhlY3V0ZTE2IHRvIGJlIGFibGUgdG8gbG9hZCBVUkwKCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsIGRsbHMvc2hlbGwzMi9jaGFuZ2Vub3RpZnkuYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGluY2x1ZGUvc2hlbGwuaCwgaW5jbHVkZS9zaGVsbGFwaS5oLCBpbmNsdWRlL3NobG9iai5oOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglTdGFydGVkIGltcGxlbWVudGF0aW9uIG9mIHNoZWxsIG5vdGlmaWNhdGlvbnMuCgoJKiBkbGxzL3NoZWxsMzIvc2hsZmlsZW9wLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCU5ldyBmaWxlIChTSEZpbGVPcGVyYXRpb24pLgoKCSogZGxscy9zaGVsbDMyL2NsYXNzZXMuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglGaXhlcy4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbGZvbGRlci5oLCBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCS0gbmV3IGludGVybmFsIGludGVyZmFjZSBmb3IgaXRlbSBtYW5pcHVsYXRpb24gKGN1dC9wYXN0ZS9uZXcgZm9sZGVyL2RlbGV0ZS9yZW5hbWUpCgktIGltcGxlbWVudGVkIElQZXJzaXN0Rm9sZGVyMiBpbnRlcmZhY2UKCgkqIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9waWRsLmg6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCU5ldyBhUGlkbCBoYW5kbGluZyBmdW5jdGlvbnMuCgoJKiBtaXNjL21haW4uYzogQXZvaWQgY3Jhc2ggb24gdXNhZ2UgbWVzc2FnZS4KCgkqIGRsbHMvYWR2YXBpMzIvcmVnaXN0cnkuYzogQXZvaWQgY3Jhc2ggb24gTlVMTCBkYXRhIHBvaW50ZXIuCgoJKiBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvbnRkbGwvcnRsLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCUFkZGVkIHN0dWIgZm9yIFJ0bEFzc2VydCgpLgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglBZGRlZCBKYXBhbmVzZSBqcDEwNiBhbmQgcGM5OHgxIGtleWJvYXJkIGxheW91dC4KCgkqIGRsbHMvd2lubW0vbWNpLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJR290IHJpZCBvZiBQUk9GSUxFXyBmdW5jdGlvbnMsIG5vdyBhY2Nlc3NpbmcgV2luZSBjb25maWcgb3B0aW9ucwoJdGhyb3VnaCB0aGUgcmVnaXN0cnkuCgoJKiBmaWxlcy9wcm9maWxlLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJV2hpbGUgY3JlYXRpbmcgdGhlIHdpbmUgY29uZmlnIGtleSwgbWFrZSBzdXJlIHRoYXQgb25seSBXaW5lJ3Mgc3Via2V5cwoJYXJlIHZvbGF0aWxlLgoKCSogZ3JhcGhpY3MvcHNkcnYvZHJpdmVyLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQ2hlY2sgZm9yIE5VTEwgcHRyIGluIFBTRFJWX0dldERldmljZUNhcGFiaWxpdGllcy4KCgkqIHdpbjMyL2NvbnNvbGUuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBhIGJpdCBtYWdpYyB0byBDT05TT0xFX2dldF9pbnB1dCBzbyB3ZSBkb24ndCBnZXQgc2luZ2xlIEVzY2FwZXMKCWZyb20gZnVuY3Rpb24ga2V5IGVzY2FwZSBzZXF1ZW5jZXMuCgoyMDAwLTAyLTE5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbWVtb3J5L2F0b20uYzogQnVnIGZpeCBmb3IgbmF0aXZlIFVTRVIuCgoJKiBsb2FkZXIvbG9hZG9yZGVyLmMsIHdpbmUuaW5pOgoJSGFyZC1jb2RlZCBEbGxQYWlycyBjb25maWd1cmF0aW9uOyB0aGVyZSBpcyBubyBuZWVkIGZvciB0aGUgdXNlciB0bwoJY2hhbmdlIGl0LgoKCSogZ3JhcGhpY3MvcHNkcnYvYWZtLmMsIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLCBpbmNsdWRlL2NvbnNvbGUuaCwgaW5jbHVkZS9tYWluLmgsIGluY2x1ZGUvb3B0aW9ucy5oLCBtaXNjL21haW4uYywgbWlzYy92ZXJzaW9uLmMsIHdpbmRvd3MveDExZHJ2L21haW4uYywgd2luZG93cy94MTFkcnYvd25kLmMsIGNvbnNvbGUvaW50ZXJmYWNlLmMsIGRvY3VtZW50YXRpb24vd2luZS5tYW4uaW4sIGZpbGVzL3Byb2ZpbGUuYzoKCVN0b3JlIGNvbmZpZyBmaWxlIGNvbnRlbnRzIGluIHRoZSByZWdpc3RyeSBzbyB3ZSBvbmx5IGhhdmUgdG8gbG9hZCBpdAoJb25jZSBwZXIgc2Vzc2lvbi4KCVJlcGxhY2VkIFBST0ZJTEVfRW51bWVyYXRlV2luZUluaVNlY3Rpb24gYnkgUFJPRklMRV9FbnVtV2luZUluaVN0cmluZy4KCVJlbW92ZWQgYSBmZXcgdW5uZWNlc3NhcnkvdW51c2VkIGNvbW1hbmQtbGluZSBvcHRpb25zLgoKMjAwMC0wMi0xOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGxvYWRlci9kb3MvbW9kdWxlLmMsIGxvYWRlci9uZS9tb2R1bGUuYywgbG9hZGVyL3BlX2ltYWdlLmMsIGxvYWRlci90YXNrLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9wcm9jZXNzLmgsIHNlcnZlci90cmFjZS5jLCBpbmNsdWRlL3Byb2Nlc3MuaCwgaW5jbHVkZS9zZXJ2ZXIuaDoKCVN0b3JlIHRoZSBoYW5kbGUgb2YgdGhlIHByb2Nlc3MgZXhlIGZpbGUgaW4gdGhlIHNlcnZlci4KCVJlbW92ZWQgUFJPQ0VTU19Jbml0aWFsKCkuCgoJKiBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYzogT3dlbiBXYW5nIDxvd2Vud0Bjb3JlbC5jb20+CglTZXQgdGhlIHR5cGUgb2YgVmFyQnN0ckZyb21EYXRlIHRvIGR3RmxhZ3MsIGluc3RlYWQgb2YgbGNpZC4KCglVbHJpY2ggQ3pla2FsbGEgIDx1bHJpY2hjQGNvcmVsLmNhPgoJRml4ZWQgdGhlIHByb2JsZW0gd2l0aCB0aGUgZGF0ZSBiZWluZyBvZmYgYnkgb25lLgoKCVBldGFyIERqdWtpYwoJVmFyaWFudENvcHkgd2FzIGlnbm9yaW5nIFZUX0RJU1BBVENILFZUX1VOS05PV04sIGFuZCBWVF9WQVJJQU5ULiBTYW1lCgl3aXRoIFZhcmlhbnRDbGVhci4KCUNvZXJjZSBmdW5jdGlvbiBkb2Vzbid0IGltcGxlbWVudCBjb2VyY2lvbiBmb3IgVlRfRElTUEFUQ0ggdHlwZS4KCgkqIGlmMTYzMi9nZGkuc3BlYywgaWYxNjMyL2tlcm5lbC5zcGVjLCBpZjE2MzIvdXNlci5zcGVjOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglBZGRlZC9jb3JyZWN0ZWQgb3JkaW5hbHMgb2Yga2VybmVsLCBnZGksIHVzZXIuCgoJKiBpbmNsdWRlL3dpbi5oLCB3aW5kb3dzL3dpbi5jOiBOb29tZW4gSGFtemEgPG5vb21lbkBtYWNhZGFtaWFuLmNvbT4KCVBvcHVwIHdpbmRvd3Mgd2lsbCBiZSBoaWRkZW4gd2hlbiBtaW5pbWl6aW5nIHRoZSBtYWluIGZyYW1lLgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliLmMsIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5oOgoJQWxleGFuZHJlIEp1bGxpYXJkIDxqdWxsaWFyZEBjb2Rld2VhdmVycy5jb20+IChmb3IgQ29yZWwpCglDaGFuZ2VkIHRoZSBsb2FkaW5nIG9mIHR5cGVsaWIgZmlsZXMgdG8gdXNlIGEgbWVtb3J5IG1hcHBpbmcgaW5zdGVhZAoJb2YgcmVhZGluZyB0aGUgZmlsZSBiaXQgYnkgYml0LgoKCSogZmlsZXMvZHJpdmUuYzogQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglEUklWRV9GaW5kRHJpdmVSb290KCkgYWx3YXlzIGNoZWNrZWQgZnJvbSBkcml2ZSBBOiB0byBaOiBmb3IgZWFjaAoJcGF0aCBjb21wb25lbnQgZXZlbiBpZiBhIG1hdGNoIGFscmVhZHkgb2NjdXJyZWQuCgoJKiBkbGxzL29sZWF1dDMyL29sZTJkaXNwLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgcHJvdG90eXBlIGZvciBPbGVUcmFuc2xhdGVDb2xvci4KCgkqIGZpbGVzL2ZpbGUuYzogTWF0dGhldyBDbGluZSA8bWF0dEBuaWdodHJlYWxtcy5jb20+CglBZGRlZCBXQVJOIG1lc3NhZ2VzIG9uIG9wZW4gZXJyb3JzLgoKCSogbWlzYy93c3ByaW50Zi5jOiBIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJVGhlIG1heGltdW0gc2l6ZSBvZiB0aGUgYnVmZmVyIGlzIDEwMjQgYnl0ZXMgaW4gV2luMzIuCgoyMDAwLTAyLTE2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogcmVsYXkzMi9zbm9vcC5jLCB3aW5kb3dzL2RyaXZlci5jLCB3aW5kb3dzL2hvb2suYywgd2luZG93cy93aW4uYywgd2luZG93cy93aW5wcm9jLmMsIGlmMTYzMi9zbm9vcC5jLCBpZjE2MzIvdGh1bmsuYywgaW5jbHVkZS9yZWdpb24uaCwgbG9hZGVyL2xvYWRvcmRlci5jLCBsb2FkZXIvbmUvbW9kdWxlLmMsIG1pc2MvZGRlbWwuYywgbWlzYy90b29saGVscC5jLCBvYmplY3RzL2VuaG1ldGFmaWxlLmMsIG9iamVjdHMvbWV0YWZpbGUuYywgb2JqZWN0cy9yZWdpb24uYywgZmlsZXMvZHJpdmUuYywgZmlsZXMvZmlsZS5jLCBmaWxlcy9wcm9maWxlLmMsIGdyYXBoaWNzL2RyaXZlci5jLCBncmFwaGljcy9lbmhtZXRhZmlsZWRydi9ncmFwaGljcy5jLCBncmFwaGljcy9lbmhtZXRhZmlsZWRydi9pbml0LmMsIGdyYXBoaWNzL2VuaG1ldGFmaWxlZHJ2L29iamVjdHMuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvYml0Ymx0LmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L2dyYXBoaWNzLmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L2luaXQuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvb2JqZWN0cy5jLCBncmFwaGljcy93aW4xNmRydi9pbml0LmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L3BydGRydi5jLCBncmFwaGljcy94MTFkcnYveGZvbnQuYywgZGxscy9semV4cGFuZC9semV4cGFuZF9tYWluLmMsIGRsbHMvbXByL21wcl9tYWluLmMsIGRsbHMvd2luYXNwaS93aW5hc3BpMTYuYywgZGxscy93aW5tbS9sb2x2bGRydi5jLCBkbGxzL3dpbm1tL21jaS5jLCBkbGxzL3dpbm1tL3dpbmVvc3MvbWlkaS5jLCBkbGxzL3duYXNwaTMyL3dpbmFzcGkzMi5jLCBmaWxlcy9kb3NfZnMuYywgZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jOgoJTW92ZWQgU3lzdGVtSGVhcCBhbGxvY2F0aW9ucyB0byB0aGUgcHJvY2VzcyBoZWFwLgoKCSogd2luZG93cy93aW4uYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglEbyBub3QgdXNlIEdsb2JhbEZpbmRBdG9tIHdpdGggYXRvbSBoYW5kbGVzIGluIENyZWF0ZVdpbmRvdyogZnVuY3Rpb25zLgoKCSogd2luZG93cy9kZWZ3bmQuYzogVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hjQGNvcmVsLmNhPgoJU2VuZCBXTV9IRUxQIG1lc3NhZ2Ugd2hlbiBGMSBpcyBwcmVzc2VkLgoKCSogb2xlL25scy9icmYubmxzLCBvbGUvbmxzL2Nvci5ubHMsIG9sZS9ubHMvY3ltLm5scywgb2xlL25scy9nYWUubmxzLCBvbGUvbmxzL2dkaC5ubHMsIG9sZS9ubHMvZ2R2Lm5scywgZG9jdW1lbnRhdGlvbi93aW5lLm1hbi5pbiwgaW5jbHVkZS9vcHRpb25zLmgsIGluY2x1ZGUvd2lubmxzLmgsIG1pc2MvbWFpbi5jLCBvbGUvb2xlMm5scy5jOgoJQWxhc3RhaXIgTWNLaW5zdHJ5IDxBbGFzdGFpci5NY0tpbnN0cnlAZGlnaXRhbC5jb20+CglBZGRlZCBzdXBwb3J0IGZvciB0aGUgZm9sbG93aW5nIGNlbHRpYyBsYW5ndWFnZXM6IElyaXNoIEdhZWxpYywgU2NvdHMKCUdhZWxpYywgTWFueCBHYWVsaWMsIEJyZXRvbiwgV2Vsc2gsIENvcm5pc2guCgoyMDAwLTAyLTE0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9vbGUzMi9jbGlwYm9hcmQuYywgZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvb2xlMzIuc3BlYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJQWRkZWQgc3R1YiBmb3IgQ29SZXN1bWVDbGFzc09iamVjdHMuCgoJKiB3aW5kb3dzL2RpbnB1dC5jOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSBhZGRlZCBhcmd1bWVudCBwcmludGluZyB0byBzdHVicwoJLSByZXBsYWNlZCBtZW1jbXAgYnkgSXNFcXVhbEdVSUQKCS0gaW1wbGVtZW50ZWQgR2V0Q2FwYWJpbGl0aWVzIGZvciBNb3VzZSBhbmQgS2V5Ym9hcmQKCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+Cglpb2N0bHNvY2tldCgpIG5vdyByZXR1cm5zIHN1Y2Nlc3MgaWYgdGhlIGFwcCBzZXRzIG5vbmJsb2NraW5nIG1vZGUgZm9yCglXU0FBc3luY1NlbGVjdCgpLWVkIHNvY2tldHMuCgoJKiBkbGxzL2NydGRsbC93Y3N0cmluZy5jOiBHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCUZpeGVkIEZyZWVCU0QgY29tcGlsZS4KCgkqIGRsbHMvd2lubW0vbWNpLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJLSBmaXhlZCBjcmFzaCBvbiBtY2kgY2hhbm5lbCB0cmFjaW5nCgktIGZpeGVkIDE2IHRvIDMyIGJpdCB0cmFuc2xhdGlvbiBmb3IgTUNJX0JSRUFLIGFuZCBNQ0lfU1lTSU5GTyBtZXNzYWdlcwoKMjAwMC0wMi0xMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGdyYXBoaWNzL3gxMWRydi9iaXRibHQuYzogSmFtZXMgQWJiYXRpZWxsbyA8YWJiZXlqQHdwaS5lZHU+CglNb3ZlZCBDTElQUElOR19VcGRhdGVHQ0NsaXBwaW5nIGNhbGwgb3V0c2lkZSBvZiB0aGUgWDExIHNlY3Rpb24uCgoJKiBpbmNsdWRlL3dpbmJhc2UuaCwgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2NoZWR1bGVyL3RocmVhZC5jLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvdGhyZWFkLmM6CglEYXZlIFBpY2tsZXMgPGRhdmVwQG51Z2F0ZS5kZW1vbi5jby51az4KCUFkZGVkIGRlZmluaXRpb24gZm9yIFNUSUxMX0FDVElWRS4KCgkqIHNlcnZlci9yZXF1ZXN0LmMsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBzY2hlZHVsZXIvY2xpZW50LmM6CglKdWVyZ2VuIExvY2sgPG5veEBqZWxhbC5rbi1icmVtZW4uZGU+CglBZGRlZCBjb25maWd1cmUgY2hlY2sgZm9yIHRoZSB1bml4IGRvbWFpbiBzb2NrYWRkciBsZW5ndGguCgoJKiBtaXNjL2Nkcm9tLmM6IEp1ZXJnZW4gTG9jayA8bm94QGplbGFsLmtuLWJyZW1lbi5kZT4KCUZpeGVkIENEUk9NX0F1ZGlvX1NlZWsgZm9yIG5vbi1saW51eCBzeXN0ZW1zLgoKCSogb2JqZWN0cy9nZGlvYmouYywgaW5jbHVkZS9nZGkuaDogTWF0dGhldyBDbGluZSA8bWF0dEBuaWdodHJlYWxtcy5jb20+CglHZXRPYmplY3RBKCkgbm93IHJlamVjdHMgR0RJIGhhbmRsZXMgd2hpY2ggYXJlIGludmFsaWQuCgoJKiBtaXNjL3ZlcnNpb24uYzogSnVlcmdlbiBMb2NrIDxub3hAamVsYWwua24tYnJlbWVuLmRlPgoJVkVSU0lPTl9HZXRTeXN0ZW1ETExWZXJzaW9uIGNyYXNoZWQgd2hlbiBiZWluZyBjYWxsZWQgb24gYSAuc28uCgoJKiB3aW5kb3dzL2RlZnduZC5jOiBNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJRGlzcGxheSB0aGUgc3lzdGVtIHBvcHVwIG1lbnUgd2hlbiBjbGlja2luZyB3aXRoIHRoZSByaWdodCBtb3VzZQoJYnV0dG9uIGluIHRoZSB3aW5kb3cgY2FwdGlvbi4KCgkqIGRsbHMvb2xlMzIvY2xpcGJvYXJkLmM6IFJlbW92ZWQgY2hlY2sgZm9yIGNsYXNzIGV4aXN0ZW5jZS4KCgkqIGRsbHMvY29tY3RsMzIvYW5pbWF0ZS5jLCBkbGxzL2NvbWN0bDMyL2NvbWJvZXguYywgZGxscy9jb21jdGwzMi9kYXRldGltZS5jLCBkbGxzL2NvbWN0bDMyL2ZsYXRzYi5jLCBkbGxzL2NvbWN0bDMyL2hlYWRlci5jLCBkbGxzL2NvbWN0bDMyL2hvdGtleS5jLCBkbGxzL2NvbWN0bDMyL2lwYWRkcmVzcy5jLCBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmMsIGRsbHMvY29tY3RsMzIvbW9udGhjYWwuYywgZGxscy9jb21jdGwzMi9uYXRpdmVmb250LmMsIGRsbHMvY29tY3RsMzIvcGFnZXIuYywgZGxscy9jb21jdGwzMi9wcm9ncmVzcy5jLCBkbGxzL2NvbWN0bDMyL3JlYmFyLmMsIGRsbHMvY29tY3RsMzIvc3RhdHVzLmMsIGRsbHMvY29tY3RsMzIvdGFiLmMsIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jLCBkbGxzL2NvbWN0bDMyL3Rvb2x0aXBzLmMsIGRsbHMvY29tY3RsMzIvdHJhY2tiYXIuYywgZGxscy9jb21jdGwzMi91cGRvd24uYzoKCUFsZXhhbmRyZSBKdWxsaWFyZCA8anVsbGlhcmRAY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlZCBzdXBlcmZsdW91cyBHbG9iYWxGaW5kQXRvbSBjYWxscy4KCgkqIG1pc2MvcmVnaXN0cnkuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglSZWFkaW5nIG9mIHJpIGJsb2Nrcy4KCUJldHRlciBlcnJvciBoYW5kbGluZy4KCgkqIHdpbmRvd3MvbWRpLmM6IE1hdHRoZXcgQ2xpbmUgPG1hdHRAbmlnaHRyZWFsbXMuY29tPgoJQ2hlY2sgdGhhdCBjaS0+aFdpbmRvd01lbnUgaXMgbm90IHplcm8gYmVmb3JlIHVzaW5nIGl0LgoKCSogZGxscy9jcnRkbGwvY3J0ZGxsLnNwZWMsIGRsbHMvY3J0ZGxsL3djc3RyaW5nLmMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYzoKCURhdmlkIEhvd2VsbHMgPERhdmlkLkhvd2VsbHNAbmV4b3IuY28udWs+CglJbXBsZW1lbnRlZCBpc3cqKCkgd2N0eXBlLmggZnVuY3Rpb25zLgoKCSogbWlzY2VtdS9tYWluLmM6IEFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJQmV0dGVyIGVycm9yIG1lc3NhZ2VzLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOiBBbGV4IFByaWVtIDxhbGV4cEBzY2kua3VuLm5sPgoJRml4ZWQgb2ZmLWJ5LW9uZSBlcnJvci4KCgkqIG1lbW9yeS9hdG9tLmMsIHNlcnZlci9NYWtlZmlsZS5pbiwgc2VydmVyL2F0b20uYywgc2VydmVyL21haW4uYywgc2VydmVyL29iamVjdC5oLCBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvdHJhY2UuYywgc2VydmVyL3VuaWNvZGUuaCwgd2luZG93cy9jbGFzcy5jLCB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy93aW4uYywgaWYxNjMyL2tlcm5lbC5zcGVjLCBpZjE2MzIvdXNlci5zcGVjLCBpbmNsdWRlL3NlcnZlci5oLCBpbmNsdWRlL3dpbmUvd2luYmFzZTE2LmgsIGluY2x1ZGUvd2luZS93aW51c2VyMTYuaDoKCU1vdmVkIGdsb2JhbCBhdG9tcyB0byB0aGUgc2VydmVyIChiYXNlZCBvbiB0aGUgd29yayBvZiBTZXJnZWkKCVR1cmNoYW5vdiA8dHVyY2hhbm92QG90dnByaW0ucnU+KS4KCjIwMDAtMDItMTIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3dpbmdkaS5oOiBNYXR0aGV3IENsaW5lIDxtYXR0QG5pZ2h0cmVhbG1zLmNvbT4KCUFkZGVkIGEgUFRFWFRNRVRSSUNbQXxXXSBkZWZpbml0aW9uLgoKCSogaW5jbHVkZS93aW5kZWYuaDogTWF0dGhldyBDbGluZSA8bWF0dEBuaWdodHJlYWxtcy5jb20+CglBZGRlZCB0eXBlZGVmcyBmb3IgUFNIT1JUIGFuZCBQVVNIT1JULgoKCSogd2luZG93cy9kaWFsb2cuYzogQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglQcm90ZWN0IEVuZERpYWxvZygpIGZyb20gaW52YWxpZCB3aW5kb3cgaGFuZGxlcy4KCgkqIGdyYXBoaWNzL2QzZGxpZ2h0LmMsIGdyYXBoaWNzL2QzZG1hdGVyaWFsLmMsIGdyYXBoaWNzL2QzZHRleHR1cmUuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglSZXBsYWNlZCBmcHJpbnRmcyBieSBwcm9wZXIgZGVidWcgbWFjcm9zIGFuZCBmaXhlZCBzb21lIGNvbXBpbGF0aW9uIHdhcm5pbmdzLgoKMjAwMC0wMi0xMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvZGRyYXcuaDogSWFuIFNjaG1pZHQgPGlzY2htaWR0QGNmbC5yci5jb20+CglBZGRlZCBHVUlEcywgZGVmaW5lcywgYW5kIHN0cnVjdHVyZXMgZm9yIERpcmVjdFg3LgoKCSogZGxscy93aW5tbS93aW5tbV9SdS5yYywgZGxscy93aW5tbS93aW5tbV9yZXMucmM6CglPbGVnIEtvcmRhIDxvbGVnQGlzcC5uc2MucnU+CglBZGRlZCBSdXNzaWFuIHRyYW5zbGF0aW9uLgoKCSogd2luZG93cy9jbGFzcy5jOiBQaGlsbGlwIEV6b2x0IDxlem9sdEBwZXJmLnprby5kZWMuY29tPgoJQWRkZWQgbWlzc2luZyBnb3RvIGluIHN3aXRjaCBzdGF0ZW1lbnQuCgoJKiBtaXNjL21haW4uYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglJbml0aWFsaXplIHRoZSBOT05DTElFTlRNRVRSSUNTIHdpdGggMCAoaGVscHMgbW9vcmh1aG4uZXhlKS4KCgkqIHdpbjMyL2tlcm5lbDMyLmMsIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIHdpbmRvd3MveDExZHJ2L21haW4uYywgZ3JhcGhpY3MvcHNkcnYvYWZtLmMsIGdyYXBoaWNzL3BzZHJ2L3BwZC5jLCBncmFwaGljcy9wc2Rydi9wcy5jLCBpZjE2MzIvYnVpbHRpbi5jLCBpbmNsdWRlL2RlYnVnZGVmcy5oLCBpbmNsdWRlL2RlYnVndG9vbHMuaCwgaW5jbHVkZS9taXNjZW11LmgsIG1lbW9yeS9nbG9iYWwuYywgbWVtb3J5L2hlYXAuYywgbWVtb3J5L2xkdC5jLCBtZW1vcnkvdmlydHVhbC5jLCBtaXNjL2NwdS5jLCBtaXNjL2RlYnVnc3RyLmMsIG1pc2MvZXJyb3IuYywgbWlzYy9tYWluLmMsIG1pc2MvcmVnaXN0cnkuYywgbXNkb3MvZHBtaS5jLCBtc2Rvcy9pbnQyYS5jLCBtc2Rvcy9pbnQzZC5jLCBtc2Rvcy9pbnQ0MS5jLCBtc2Rvcy9pbnQ0Yi5jLCBtc2Rvcy9pb3BvcnRzLmMsIHJlbGF5MzIvc25vb3AuYywgdG9vbHMvbWFrZV9kZWJ1ZywgZGxscy93aW5tbS9tY2ljZGEvbWNpY2RhLmMsIGRsbHMvd2lubW0vbWNpc2VxL21jaW1pZGkuYywgZGxscy93aW5tbS9tbWlvLmMsIGRsbHMvd2lubW0vd2luZW9zcy9taXhlci5jLCBkbGxzL3duYXNwaTMyL3dpbmFzcGkzMi5jLCBmaWxlcy9maWxlLmMsIGdyYXBoaWNzL2RkcmF3LmMsIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL2NvbXBvc2l0ZW1vbmlrZXIuYywgZGxscy9vbGVhdXQzMi90eXBlbGliLmMsIGRsbHMvc2hlbGwzMi9jbGFzc2VzLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBkbGxzL3ZlcnNpb24vaW5zdGFsbC5jLCBkbGxzL3ZlcnNpb24vcmVzb3VyY2UuYywgZGxscy93aW5hc3BpL3dpbmFzcGkxNi5jLCBkbGxzL2FkdmFwaTMyL3JlZ2lzdHJ5LmMsIGRsbHMvY29tY3RsMzIvZGF0ZXRpbWUuYywgZGxscy9jb21jdGwzMi9pcGFkZHJlc3MuYywgZGxscy9jb21jdGwzMi90cmFja2Jhci5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmMsIGRsbHMvZHBsYXl4L2RwbGF5eF9nbG9iYWwuYywgZGxscy9kc291bmQvZHNvdW5kX21haW4uYywgZGxscy9semV4cGFuZC9semV4cGFuZF9tYWluLmMsIGRsbHMvbnRkbGwvbWlzYy5jLCBkbGxzL250ZGxsL250ZGxsX21pc2MuaCwgZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jOgoJT3B0aW1pemVkIGRlYnVnZ2luZyBBUEkgdG8gcmVkdWNlIGNvZGUgc2l6ZS4KCgkqIGxpYnJhcnkvd2luZXN0dWIuYywgbWlzYy9jZHJvbS5jLCBtc2Rvcy9pbnQyZi5jLCBvYmplY3RzL2xpbmVkZGEuYywgZGxscy9vbGVhdXQzMi92YXJpYW50LmMsIGRsbHMvb2xlY2xpL29sZWNsaV9tYWluLmMsIGRsbHMvb2xlc3ZyL29sZXN2cl9tYWluLmMsIGdyYXBoaWNzL2NhY2hlLmMsIGdyYXBoaWNzL2VzY2FwZS5jLCBncmFwaGljcy90dHlkcnYvdGV4dC5jLCBpbmNsdWRlL2NvbG9yLmgsIGluY2x1ZGUvZW5obWV0YWZpbGVkcnYuaCwgaW5jbHVkZS9tZXRhZmlsZWRydi5oLCBpbmNsdWRlL29sZS5oLCBpbmNsdWRlL3BzZHJ2LmgsIGluY2x1ZGUvd2luMTZkcnYuaCwgaW5jbHVkZS93aW5nZGkuaCwgZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvZGF0YWNhY2hlLmMsIGRsbHMvb2xlMzIvc3RvcmFnZS5jOgoJUmVtb3ZlZCBleHRyYSBpbmNsdWRlcyBmcm9tIG9sZS5oIGFuZCB3aW5nZGkuaC4KCgkqICovKjoKCUplcmVteSBXaGl0ZSA8andoaXRlQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZWQgI2luY2x1ZGUgb2Ygd2luZ2RpLmggYW5kIHdpbmRlZi5oIGZyb20gd2ludXNlci5oIChhbmQgcmVzb2x2ZWQKCXRoZSByZXN1bHRpbmcgY29tcGlsYXRpb24gZmFpbHVyZXMpLgoKMjAwMC0wMi0wNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvb2xlMzIvY29tcG9iai5jOiBPd2VuIFdhbmcgPG93ZW53QGNvcmVsLmNhPgoJTWFrZSBDTFNJREZyb21TdHJpbmcgcmV0dXJuIGEgQ0xTSUQgb2YgemVyb3MgaW5zdGVhZCBvZiBjcmFzaGluZyB3aGVuCglwYXNzZWQgYSBudWxsIHBvaW50ZXIuCgoJKiBkbGxzL3dpbm1tL2pveXN0aWNrLmM6IEdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJRml4ZWQgdW5jb25kaXRpb25hbCB1c2Ugb2YgSk9ZREVWLgoKCSogaW5jbHVkZS9jb21tZGxnLmgsIGluY2x1ZGUvd2luZG93c3guaCwgaW5jbHVkZS93aW5nZGkuaCwgaW5jbHVkZS93aW51c2VyLmg6CglNaWNoYWVsIENhcmRlbmFzIDxtaWNoYWVsX2NhcmRlbmFzQGRlbmViYS5jb20+CglBZGRlZCBhIGJ1bmNoIG9mIG1hY3JvcyBuZWVkZWQgZm9yIGNvbXBpbGluZyBXaW5lbGliIGFwcHMuCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmg6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJQWRkZWQgTGlzdFZpZXdfRWRpdExhYmVsIG1hY3Jvcy4KCgkqIGRsbHMvY29tbWRsZy9jZGxnMzIuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglDaGFuZ2VkIGltcG9ydCB0byBvcmRpbmFsLgoKCSogaW5jbHVkZS93aW5lL29ial9zaGVsbGZvbGRlci5oOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglBZGRlZCBJUGVyc2lzdEZvbGRlcjIgaW50ZXJmYWNlLgoKCSogbWlzYy9jZHJvbS5jLCBtc2Rvcy9pbnQyZi5jLCBkbGxzL3dpbm1tL21jaWNkYS9tY2ljZGEuYywgZGxscy93aW5tbS9tY2ljZGEvbWNpY2RhLnNwZWMsIGZpbGVzL2RyaXZlLmMsIGluY2x1ZGUvY2Ryb20uaCwgaW5jbHVkZS9kZWJ1Z2RlZnMuaDoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJLSBpbXBsZW1lbnRlZCBzZXJpYWwgbnVtYmVycyBmb3IgYXVkaW8gQ0RzIGFuZCBkYXRhIENEcwoJLSBiaWcgY2xlYW4gdXAgb2YgbWlzYy9jZHJvbS5jIGFuZCBkbGxzL3dpbm1tL21jaWNkYS9tY2ljZGEuYyBmdW5jdGlvbgoJICBuYW1pbmcgYW5kIHN1Y2gKCS0gc3BsaXQgZGVidWcgY2hhbm5lbCBjZGF1ZGlvIGludG8gY2Ryb20gYW5kIG1jaWNkYQoJLSBmaXhlZCBzb21lIHR5cG9zCgoJKiBkbGxzL29sZWF1dDMyL29sZWZvbnQuYywgaW5jbHVkZS9vbGVjdGwuaDoKCVNlYW4gTGFuZ2xleSA8c2VhbmxAY29yZWwuY2E+CglNYWRlIE9sZUNyZWF0ZUZvbnRJbmRpcmVjdCBoYXZlIHRoZSBzYW1lIHNpZ25hdHVyZSAoZXhhY3RseSkgYXMgdGhlCgloZWFkZXIgZmlsZS4gQWRkZWQgb2xlcHJvMzIgZGxsIHN0dWJzLgoKCSogTWFrZS5ydWxlcy5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvb2xlcHJvMzIvLmN2c2lnbm9yZSwgZGxscy9vbGVwcm8zMi9NYWtlZmlsZS5pbiwgZGxscy9vbGVwcm8zMi9SRUFETUUsIGRsbHMvb2xlcHJvMzIvb2xlcHJvMzIuc3BlYywgZGxscy9vbGVwcm8zMi9vbGVwcm8zMnN0dWJzLmM6CglTZWFuIExhbmdsZXkgPHNlYW5sQGNvcmVsLmNhPgoJT0xFUFJPMzIgc3R1YnMuCgoJKiB3aW5kb3dzL2NsaXBib2FyZC5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCUFkZGVkIENGX0hEUk9QLgoKCSogZGxscy93aW5tbS9qb3lzdGljay5jOiBXb2xmZ2FuZyBTY2h3b3R6ZXIgPHdvc2Nod290QGdteC5uZXQ+CglFeHRlbmRlZCB0aGUgd2lubW0gam95c3RpY2sgQVBJIGNhbGxzIHRvIHN1cHBvcnQgdGhlIG5ldyBMaW51eAoJam95c3RpY2sgZHJpdmVyLgoKCSogc2VydmVyL2NvbnRleHRfaTM4Ni5jOiBKdWVyZ2VuIExvY2sgPG5veEBqZWxhbC5rbi1icmVtZW4uZGU+CglBZGRlZCBjb250ZXh0IGZ1bmN0aW9ucyBmb3IgRnJlZUJTRC4KCgkqIGRsbHMvc2hlbGwzMi9zeXN0cmF5LmM6IFNoZXJpIFN0ZWV2ZXMgPHNoZXJpQG1hY2FkYW1pYW4uY29tPgoJRml4IGZvciB0aGUgc3lzdGVtIHRyYXksIEljb24gYW5kIHBvcHVwIG1lbnUncyBub3cgd29yay4KCgkqIGdyYXBoaWNzL2RkcmF3LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJVXNlIHdpbmRvdyBwcm9wZXJ0aWVzIGluc3RlYWQgb2Ygd2luZG93IGxvbmcsIGFsc28gdXNlIHRoZW0gdG8KCWRldGVybWluZSBpZiB3ZSByZWFsbHkgb3duIGEgd2luZG93IGFuZCBjYW4gZGVzdHJveSBpdC4KCVRoZSBwaXhlbGZvcm1hdCBmb3IgMjU2IGNvbG9ycyBoYXMgUEFMRVRURXxSR0IgZmxhZ3MgKFRvbWIgUmFpZGVyIDIpCglTZXQgcGFpbnRhYmxlIGZsYWcgZm9yIGFwcGxpY2F0aW9uIHBhc3NlZCBjb29wZXJhdGl2ZS9kcmF3aW5nIHdpbmRvdy4KCUdldERpc3BsYXlNb2RlOiBXZSBtaWdodCBoYXZlIGFuZCBkbyBzdXBwb3J0IDIgYmFja2J1ZmZlcnMuCgoJKiBkbGxzL29sZTMyL21vbmlrZXIuYzogTm9vbWVuIEhhbXphIDxub29tZW5AbWFjYWRhbWlhbi5jb20+CglSdW5uaW5nIG9iamVjdCB0YWJsZSBhcmUgbm90IHVzaW5nIDAgYXMgYSB2YWxpZCBpbmRleCBhbnltb3JlLgoKCSogY29udHJvbHMvc3RhdGljLmM6IEx1YyBUb3VyYW5nZWF1IDxsdWNAbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRhdGlvbiBvZiBTdGF0aWMgT3duZXJEcmF3LgoKCSogZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglIZWlnaHQgY2FsY3VsYXRpb24gd2FzIDEgb2ZmIGluIEltYWdlTGlzdF9SZWFkLgoKMjAwMC0wMi0wMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHByb2dyYW1zL3ZpZXcvaW5pdC5jLCBwcm9ncmFtcy92aWV3L3ZpZXcuYywgdG9vbHMvd3JjL3dyYy5jLCB3aW5kb3dzL21kaS5jLCBjb250cm9scy9lZGl0LmMsIGNvbnRyb2xzL21lbnUuYywgZGxscy9jb21tZGxnL2NvbG9yZGxnLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnLmMsIGRsbHMvY29tbWRsZy9maW5kZGxnLmMsIGRsbHMvY29tbWRsZy9mb250ZGxnLmMsIGRsbHMvY29tbWRsZy9wcmludGRsZy5jLCBkbGxzL3NoZWxsMzIvYnJzZm9sZGVyLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZ3JhcGhpY3MvcHNkcnYvZHJpdmVyLmMsIGluY2x1ZGUvcmVzb3VyY2UuaCwgbG9hZGVyL25lL3Jlc291cmNlLmM6CglSZW1vdmVkIHJlc291cmNlLmguCgoJKiBwcm9ncmFtcy9yZWd0ZXN0L01ha2VmaWxlLmluLCBwcm9ncmFtcy9yZWd0ZXN0L3JlZ3Rlc3Quc3BlYywgcHJvZ3JhbXMvdmlldy8uY3ZzaWdub3JlLCBwcm9ncmFtcy92aWV3L01ha2VmaWxlLmluLCBwcm9ncmFtcy92aWV3L3ZpZXcuc3BlYywgcHJvZ3JhbXMvd2NtZC8uY3ZzaWdub3JlLCBwcm9ncmFtcy93Y21kL01ha2VmaWxlLmluLCBwcm9ncmFtcy93Y21kL3djbWQuc3BlYywgcHJvZ3JhbXMvd2luaGVscC8uY3ZzaWdub3JlLCBwcm9ncmFtcy93aW5oZWxwL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5oZWxwL3dpbmhlbHAuc3BlYywgcHJvZ3JhbXMvd2ludmVyLy5jdnNpZ25vcmUsIHByb2dyYW1zL3dpbnZlci9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2ludmVyL3dpbnZlci5zcGVjLCBwcm9ncmFtcy9hdml0b29scy8uY3ZzaWdub3JlLCBwcm9ncmFtcy9hdml0b29scy9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvYXZpdG9vbHMvYXZpaW5mby5zcGVjLCBwcm9ncmFtcy9hdml0b29scy9hdmlwbGF5LnNwZWMsIHByb2dyYW1zL2F2aXRvb2xzL2ljaW5mby5zcGVjLCBwcm9ncmFtcy9jbG9jay8uY3ZzaWdub3JlLCBwcm9ncmFtcy9jbG9jay9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvY2xvY2svY2xvY2suc3BlYywgcHJvZ3JhbXMvY21kbGd0c3QvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvY21kbGd0c3QvTWFrZWZpbGUuaW4sIHByb2dyYW1zL2NtZGxndHN0L2NtZGxndHN0LnNwZWMsIHByb2dyYW1zL2NvbnRyb2wvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvY29udHJvbC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvY29udHJvbC9jb250cm9sLnNwZWMsIHByb2dyYW1zL25vdGVwYWQvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvbm90ZXBhZC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvbm90ZXBhZC9ub3RlcGFkLnNwZWMsIHByb2dyYW1zL29zdmVyc2lvbmNoZWNrLy5jdnNpZ25vcmUsIHByb2dyYW1zL29zdmVyc2lvbmNoZWNrL01ha2VmaWxlLmluLCBwcm9ncmFtcy9vc3ZlcnNpb25jaGVjay9vc3ZlcnNpb25jaGVjay5zcGVjLCBwcm9ncmFtcy9wcm9nbWFuLy5jdnNpZ25vcmUsIHByb2dyYW1zL3Byb2dtYW4vTWFrZWZpbGUuaW4sIHByb2dyYW1zL3Byb2dtYW4vcHJvZ21hbi5zcGVjLCBwcm9ncmFtcy9yZWdhcGkvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvcmVnYXBpL01ha2VmaWxlLmluLCBwcm9ncmFtcy9yZWdhcGkvcmVnYXBpLnNwZWMsIHByb2dyYW1zL3JlZ3Rlc3QvLmN2c2lnbm9yZSwgbGlidGVzdC8uY3ZzaWdub3JlLCBsaWJ0ZXN0L01ha2VmaWxlLmluLCBsaWJ0ZXN0L2V4cGFuZC5zcGVjLCBsaWJ0ZXN0L2hlbGxvLnNwZWMsIGxpYnRlc3QvaGVsbG8yLnNwZWMsIGxpYnRlc3QvaGVsbG8zLnNwZWMsIGxpYnRlc3QvaGVsbG80LnNwZWMsIGxpYnRlc3QvaGVsbG81LnNwZWMsIGxpYnRlc3QvbmV3LnNwZWMsIGxpYnRlc3Qvcm9sZXguc3BlYywgbGlidGVzdC92YXJ0ZXN0LnNwZWMsIGxpYnRlc3Qvdm9saW5mby5zcGVjOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBZGRlZCAuc3BlYyBmaWxlcyBmb3IgYWxsIGxpYnRlc3QvIGFuZCBwcm9ncmFtcy8gV2luZUxpYiBhcHBzLgoJVXBkYXRlZCBhbGwgTWFrZWZpbGVzIHRvIHVzZSAuc3BlYyBmaWxlcyBhbmQgbmV3IHJlc291cmNlIGhhbmRsaW5nLgoKCSogbG9hZGVyL2xpYnJlcy5jLCBsb2FkZXIvbWFpbi5jLCBsb2FkZXIvcGVfcmVzb3VyY2UuYywgbG9hZGVyL3Jlc291cmNlLmMsIHJlbGF5MzIvYnVpbHRpbjMyLmMsIHJlc291cmNlcy9zeXNyZXMuYywgdG9vbHMvYnVpbGQuYywgaW5jbHVkZS9idWlsdGluMzIuaCwgaW5jbHVkZS9saWJyZXMuaCwgaW5jbHVkZS9tb2R1bGUuaCwgaW5jbHVkZS9wZV9pbWFnZS5oLCBpbmNsdWRlL3Jlc291cmNlLmgsIGxvYWRlci9NYWtlZmlsZS5pbiwgbG9hZGVyL2VsZi5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBZGRlZCAuc3BlYyBrZXl3b3JkICdtb2RlJyB0byBhbGxvdyBjcmVhdGluZyBidWlsdC1pbiBFWEUgbW9kdWxlcy4KCVVzZSBidWlsdC1pbiBFWEUgbW9kdWxlcyBmb3IgV2luZUxpYiBhcHBzIChpbnN0ZWFkIG9mIEVMRiBtb2R1bGVzKS4KCVJlbW92ZWQgZHVtbXkgRUxGIG1vZHVsZSBjcmVhdGlvbi4KCVJlbW92ZWQgTElCUkVTIGhhbmRsaW5nLgoKCSogcHJvZ3JhbXMvbm90ZXBhZC9tYWluLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUZpeGVkIG1lbW9yeSBvdmVyd3JpdGUgYnVnLgoKCSogaW5jbHVkZS93aW5kZWYuaCwgaW5jbHVkZS93aW5lL3dpbmRlZjE2Lmg6CglKZXJlbXkgV2hpdGUgPGp3aGl0ZUBjb2Rld2VhdmVycy5jb20+CglNb3ZlZCBkZWZpbml0aW9ucyBzdWNoIGFzIEJPT0wxNiBhbmQgSU5UMTYgZnJvbSB3aW5kZWYuaCBpbnRvCgl3aW5lL3dpbmRlZjE2LmguCgoJKiBvbGUvb2xlMm5scy5jOiBKdWxpbyBD6XNhciBH4XpxdWV6IDxqZ2F6cXVlekBkbGQubmV0PgoJR2V0TnVtYmVyRm9ybWF0QSBpbXBsZW1lbnRhdGlvbiBhZGRlZC4KCgkqIHdpbjMyL2NvbnNvbGUuYzogTWFyY3VzIE1laXNzbmVyIDxNYXJjdXMuTWVpc3NuZXJAY2FsZGVyYS5kZT4KCVNhdmUgYW5kIHJlc3RvcmUgY3Vyc29yIGluIFdyaXRlQ29uc29sZU91dHB1dEEuCgoJKiBpbmNsdWRlL2RhdGV0aW1lLmgsIGluY2x1ZGUvbW9udGhjYWwuaCwgZGxscy9jb21jdGwzMi9kYXRldGltZS5jLCBkbGxzL2NvbWN0bDMyL21vbnRoY2FsLmM6CglBbGV4IFByaWVtIDxhbGV4cEBzY2kua3VuLm5sPgoJLSBJbXBsZW1lbnRhdGlvbiBvZiBXTV9TRVRGT1JNQVQKCS0gUmV3b3JrZWQgZHJhd2luZy9zZWxlY3Rpb24KCS0gSW1wbGVtZW50YXRpb24gb2YgV01fS0VZRE9XTgoKCSogaW5jbHVkZS9taXNjZW11LmgsIG1zZG9zL2ludDA5LmMsIG1zZG9zL2ludDE2LmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUFkZGVkIElOVF9JbnQxNlJlYWRDaGFyIGFuZCBtYWRlIGludDA5IGhhbmRsZSBzcGVjaWFsIGtleXMuCgoJKiBncmFwaGljcy92Z2EuYywgaW5jbHVkZS92Z2EuaDogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglBZGRlZCBhbHBoYW51bWVyaWMgbW9kZSB0byB0aGUgVkdBIGVtdWxhdGlvbi4KCVVzZSBzZXJ2aWNlIHRocmVhZCBmb3IgdGhlIHBlcmlvZGljIHJlZnJlc2guCgoJKiBsb2FkZXIvZG9zL21vZHVsZS5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUNsZWFudXAgVkdBIHJlZnJlc2ggd2hlbiB0ZXJtaW5hdGluZy4KCgkqIHdpbjMyL2NvbnNvbGUuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglIYW5kbGUgYmFja3NwYWNlIGNvcnJlY3RseS4KCjIwMDAtMDEtMzEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb25maWd1cmUsIE1ha2UucnVsZXMuaW4sICovTWFrZWZpbGUuaW46CglCdWlsZCBtb3N0IGRsbHMgYXMgc2VwYXJhdGUgc2hhcmVkIGxpYnJhcmllcy4KCjIwMDAtMDEtMzAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb25maWd1cmUuaW4sIGluY2x1ZGUvY29uZmlnLmguaW4sIHNlcnZlci9jb250ZXh0X2kzODYuYywgY29uZmlndXJlOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBZGRlZCBjb25maWd1cmUgY2hlY2sgZm9yIHN5cy9yZWcuaC4KCgkqIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmMsIGluY2x1ZGUvaW1hZ2VsaXN0Lmg6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU92ZXJsYXkgaW5kaWNlcyBhcmUgc2lnbmVkIHNob3J0cyAoLTEgbWVhbnMgbm8gb3ZlcmxheSkKCShJbWFnZUxpc3RfU2V0T3ZlcmxheUluZGV4KSBzaG91bGQgYWNjZXB0IC0xIGFzIG92ZXJsYXlpbmRleC4KCShJbWFnZUxpc3RfUmVhZCkgV2UgY2FuIHJlYWQgYSBOeE0gYml0bWFwIGZyb20gdGhlIHN0cmVhbSBhbmQgaGF2ZQoJdG8gY29udmVydCBpdCBpbnRvIGEgMXgoTSpOKSBiaXRtYXAsIHNldCBjQ3VySW1hZ2UsY01heEltYWdlLiBBZGRlZAoJZG9jdW1lbnRhdGlvbi4KCShvdGhlcnMpIHJlbW92ZWQgc29tZSBwb3RlbnRpYWwgb3BlcmF0b3IgcHJlY2VuZGVuY2UgcHJvYmxlbXMuCgoJKiBvYmplY3RzL2RjLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJR2V0RGV2aWNlQ2Fwczogc3BvdCB5ZXQgdW5zdXBwb3J0ZWQgYWNjZXNzZXMgdG8gdGhlIERldmljZUNhcHMgc3RydWN0LgoKCSogaW5jbHVkZS93aW5lL2V4Y2VwdGlvbi5oLCBtaXNjZW11L21haW4uYywgd2luMzIvZXhjZXB0LmMsIE1ha2VmaWxlLmluLCBkZWJ1Z2dlci9kYmcueSwgZGVidWdnZXIvZXh0ZXJuYWwuYywgZGxscy9udGRsbC9leGNlcHRpb24uYywgaW5jbHVkZS9kZWJ1Z2dlci5oLCBpbmNsdWRlL3RocmVhZC5oOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglNb3ZlZCBkZWJ1Z2dlciB0byBsaWJ3aW5lIHRvIG1ha2UgaXQgYXZhaWxhYmxlIHRvIFdpbmVMaWIgYXBwcy4KCVRyeSB0byBpbnZva2UgZXh0ZXJuYWwgZGVidWdnZXIgaWYgaW50ZXJuYWwgZGVidWdnZXIgY3Jhc2hlcy4KCVRyeSB0byBoYW5kbGUgZWFybHkgaW52b2NhdGlvbiBvZiBkZWJ1Z2dlciBtb3JlIGdyYWNlZnVsbHkuCgoJKiBpbmNsdWRlL21haW4uaCwgaW5jbHVkZS9wcm9jZXNzLmgsIGluY2x1ZGUvdGFzay5oLCBsb2FkZXIvbWFpbi5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzY2hlZHVsZXIvdGhyZWFkLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCU1hcmsgaW5pdGlhbCBwcm9jZXNzIGFzIDMyLWJpdCBmb3IgV2luZUxpYiBhcHBzLgoJVXNlIHRlYi0+dGliZmxhZ3MgaW5zdGVhZCBvZiB0ZWItPmZsYWdzIChmb3IgV2luOTUgVVNFUjMyIGNvbXBhdGliaWxpdHkpLgoJUmVtb3ZlZCB1bnVzZWQgdGhyZWFkIGV2ZW50LgoKCSogZmlsZXMvcHJvZmlsZS5jOiBBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCS0gV2luZG93cyBza2lwcyB0aGUgJ1x0JyBhbmQgJyAnIGF0IHRoZSBiZWdpbm5pbmcgYW5kIGVuZCBvZiBzZWN0aW9uCgkgIGtleSBuYW1lcyBvZiAuSU5JIGZpbGVzLgoJLSBGaXhlZCBHZXQvV3JpdGVQcml2YXRlUHJvZmlsZVN0cnVjdEEoKToKCSAgLSAocmUtKXRyYW5zbGF0ZSB0aGUgYmluYXJ5IGRhdGEgaW50byBBU0NJSSBoZXggY2hhcnMKCSAgLSBhZGQgY2hlY2tzdW0gLyBjaGVja2luZyBvZiBpdAoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoyMDAwLTAxLTMwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29uZmlndXJlLmluLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBzZXJ2ZXIvY29udGV4dF9pMzg2LmMsIGNvbmZpZ3VyZToKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWRkZWQgY29uZmlndXJlIGNoZWNrIGZvciBzeXMvcmVnLmguCgoJKiBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jLCBpbmNsdWRlL2ltYWdlbGlzdC5oOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglPdmVybGF5IGluZGljZXMgYXJlIHNpZ25lZCBzaG9ydHMgKC0xIG1lYW5zIG5vIG92ZXJsYXkpCgkoSW1hZ2VMaXN0X1NldE92ZXJsYXlJbmRleCkgc2hvdWxkIGFjY2VwdCAtMSBhcyBvdmVybGF5aW5kZXguCgkoSW1hZ2VMaXN0X1JlYWQpIFdlIGNhbiByZWFkIGEgTnhNIGJpdG1hcCBmcm9tIHRoZSBzdHJlYW0gYW5kIGhhdmUKCXRvIGNvbnZlcnQgaXQgaW50byBhIDF4KE0qTikgYml0bWFwLCBzZXQgY0N1ckltYWdlLGNNYXhJbWFnZS4gQWRkZWQKCWRvY3VtZW50YXRpb24uCgkob3RoZXJzKSByZW1vdmVkIHNvbWUgcG90ZW50aWFsIG9wZXJhdG9yIHByZWNlbmRlbmNlIHByb2JsZW1zLgoKCSogb2JqZWN0cy9kYy5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUdldERldmljZUNhcHM6IHNwb3QgeWV0IHVuc3VwcG9ydGVkIGFjY2Vzc2VzIHRvIHRoZSBEZXZpY2VDYXBzIHN0cnVjdC4KCgkqIGluY2x1ZGUvd2luZS9leGNlcHRpb24uaCwgbWlzY2VtdS9tYWluLmMsIHdpbjMyL2V4Y2VwdC5jLCBNYWtlZmlsZS5pbiwgZGVidWdnZXIvZGJnLnksIGRlYnVnZ2VyL2V4dGVybmFsLmMsIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmMsIGluY2x1ZGUvZGVidWdnZXIuaCwgaW5jbHVkZS90aHJlYWQuaDoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJTW92ZWQgZGVidWdnZXIgdG8gbGlid2luZSB0byBtYWtlIGl0IGF2YWlsYWJsZSB0byBXaW5lTGliIGFwcHMuCglUcnkgdG8gaW52b2tlIGV4dGVybmFsIGRlYnVnZ2VyIGlmIGludGVybmFsIGRlYnVnZ2VyIGNyYXNoZXMuCglUcnkgdG8gaGFuZGxlIGVhcmx5IGludm9jYXRpb24gb2YgZGVidWdnZXIgbW9yZSBncmFjZWZ1bGx5LgoKCSogaW5jbHVkZS9tYWluLmgsIGluY2x1ZGUvcHJvY2Vzcy5oLCBpbmNsdWRlL3Rhc2suaCwgbG9hZGVyL21haW4uYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2NoZWR1bGVyL3RocmVhZC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglNYXJrIGluaXRpYWwgcHJvY2VzcyBhcyAzMi1iaXQgZm9yIFdpbmVMaWIgYXBwcy4KCVVzZSB0ZWItPnRpYmZsYWdzIGluc3RlYWQgb2YgdGViLT5mbGFncyAoZm9yIFdpbjk1IFVTRVIzMiBjb21wYXRpYmlsaXR5KS4KCVJlbW92ZWQgdW51c2VkIHRocmVhZCBldmVudC4KCgkqIGZpbGVzL3Byb2ZpbGUuYzogQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CgktIFdpbmRvd3Mgc2tpcHMgdGhlICdcdCcgYW5kICcgJyBhdCB0aGUgYmVnaW5uaW5nIGFuZCBlbmQgb2Ygc2VjdGlvbgoJICBrZXkgbmFtZXMgb2YgLklOSSBmaWxlcy4KCS0gRml4ZWQgR2V0L1dyaXRlUHJpdmF0ZVByb2ZpbGVTdHJ1Y3RBKCk6CgkgIC0gKHJlLSl0cmFuc2xhdGUgdGhlIGJpbmFyeSBkYXRhIGludG8gQVNDSUkgaGV4IGNoYXJzCgkgIC0gYWRkIGNoZWNrc3VtIC8gY2hlY2tpbmcgb2YgaXQKCgkqIGZpbGVzL2RpcmVjdG9yeS5jLCBtaXNjL3JlZ2lzdHJ5LmMsIGRvY3VtZW50YXRpb24vd2luZS5jb25mLm1hbi5pbiwgd2luZS5pbmk6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCS0gZml4ZXMsIGxvYWRpbmcgb2Ygc2V0dGluZ3MgcGVyIHVzZXIKCS0gYXV0b2RldGVjdGluZyBvZiB3aW5kb3dzIHJlZ2lzdHJ5IHZlcnNpb24KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnYnJvd3Nlci5jLCBkbGxzL2RwbGF5eC9kcGNsYXNzZmFjdG9yeS5jLCBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jLCBkbGxzL29sZTMyL29sZW9iai5jLCBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYywgaW5jbHVkZS93aW5lL29ial9iYXNlLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCVRoZSBDT00gdmlydHVhbCB0YWJsZXMgbXVzdCB1c2UgdGhlCgknSUNPTV9NU1ZUQUJMRV9DT01QQVRfRHVtbXlSVFRJVkFMVUUnIG1hY3JvIHRvIHByb3ZpZGUgcGFkZGluZyBpbiBDKysuCgoJKiBtc2Rvcy9pbnQwOS5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCU1hZGUgaW50OSBoYW5kbGVyIGFkZCBrZXlzdHJva2UgdG8gQklPUyBrZXlib2FyZCBidWZmZXIuCgoJKiBsb2FkZXIvZG9zL2Rvc21vZC5jLCBsb2FkZXIvZG9zL2Rvc21vZC5oOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+Cglkb3Ntb2QgcHJvdG9jb2wgcmV2aXNpb24gMywgZmVhdHVyaW5nIE1QUk9URUNUIGFuZCBFTlRFUklETEUuCgoJKiBpbmNsdWRlL3dpbmNvbi5oOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUFkZGVkIGEgY291cGxlIG9mIHByb3RvdHlwZXMuCgoJKiB3aW5lZGVmYXVsdC5yZWc6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJQWRkIGluZm9ybWF0aW9uIGFib3V0IGNvZGUgcGFnZXMgdG8gZGVmYXVsdCByZWdpc3RyeS4KCgkqIGNvbmZpZ3VyZS5pbiwgTWFrZS5ydWxlcy5pbiwgY29uZmlndXJlOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIFVuaXh3YXJlIChTb2xhcmlzKSBsaW5rZXIgdHlwbyBmaXhlZAoJLSBTb2xhcmlzIChhbmQgcG9zc2libHkgVW5peHdhcmUpIHNwZWNpZmljIGxpbmtlciBzdXBwb3J0IGZvciB0aGUKCSAgR05VOmlzbSAtLVtuby1dd2hvbGUtYXJjaGl2ZQoJLSBTb2xhcmlzIG1ha2Ugc3BlY2lmaWMgbWFrZWZpbGUgZml4CgoJKiBzZXJ2ZXIvY29udGV4dF9pMzg2LmM6IFBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJU29sYXJpcyBzdXBwb3J0IGZvciB7c2V0LGdldH1fdGhyZWFkX2NvbnRleHQgYWRkZWQuCgoyMDAwLTAxLTI5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2VydmVyL2NvbnRleHRfaTM4Ni5jOgoJQWRkZWQgb3VyIG93biB1c2VyX3JlZ3Nfc3RydWN0IGRlZmluaXRpb24gZm9yIGJldHRlciBjb21wYXRpYmlsaXR5LgoKCSogY29udHJvbHMvYnV0dG9uLmMsIHdpbmRvd3MvZGlhbG9nLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCUNvcnJlY3QgdGhlIGJlaGF2aW91ciBvZiB0aGUgYWNjZWxlcmF0b3Iga2V5cyBpbiBkaWFsb2dzIGFjY29yZGluZyB0bwoJdGhlIFdpbmRvd3MnIG9uZS4KCgkqIHByb2dyYW1zL25vdGVwYWQvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvbm90ZXBhZC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvbm90ZXBhZC9kaWFsb2cuYywgcHJvZ3JhbXMvbm90ZXBhZC9tYWluLmMsIHByb2dyYW1zL25vdGVwYWQvbWFpbi5oLCBwcm9ncmFtcy9ub3RlcGFkL25vdGVwYWQucmMsIHByb2dyYW1zL25vdGVwYWQvcnNyYy5yYywgcHJvZ3JhbXMvcHJvZ21hbi8uY3ZzaWdub3JlLCBwcm9ncmFtcy9wcm9nbWFuL01ha2VmaWxlLmluLCBwcm9ncmFtcy9wcm9nbWFuL1h4LnJjLCBwcm9ncmFtcy9wcm9nbWFuL2FjY2VsLnJjLCBwcm9ncmFtcy9wcm9nbWFuL21haW4uYywgcHJvZ3JhbXMvcHJvZ21hbi9yc3JjLnJjLCBwcm9ncmFtcy93aW5oZWxwLy5jdnNpZ25vcmUsIHByb2dyYW1zL3dpbmhlbHAvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmhlbHAvUHQucmMsIHByb2dyYW1zL3dpbmhlbHAvWHgucmMsIHByb2dyYW1zL3dpbmhlbHAvcnNyYy5yYywgcHJvZ3JhbXMvd2luaGVscC93aW5oZWxwLmMsIHByb2dyYW1zL2Nsb2NrLy5jdnNpZ25vcmUsIHByb2dyYW1zL2Nsb2NrL01ha2VmaWxlLmluLCBwcm9ncmFtcy9jbG9jay9jbG9jay5yYywgcHJvZ3JhbXMvY2xvY2svbWFpbi5jLCBwcm9ncmFtcy9jbG9jay9yc3JjLnJjOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglMaW5rIG9ubHkgYSBzaW5nbGUgLnJjIGZpbGUgd2l0aCBhcHBsaWNhdGlvbi4KCgkqIHdpbmRvd3MveDExZHJ2L3duZC5jLCBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmMsIGRvY3VtZW50YXRpb24vbm8td2luZG93cywgZG9jdW1lbnRhdGlvbi93aW5lLm1hbi5pbiwgZ3JhcGhpY3MvZDNkdGV4dHVyZS5jLCBpZjE2MzIvc25vb3AuYywgbG9hZGVyL2xvYWRvcmRlci5jLCBsb2FkZXIvbmUvbW9kdWxlLmMsIGxvYWRlci9wZV9pbWFnZS5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBCVUdTLCBSRUFETUUsIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYywgZGxscy9kcGxheXgvZHBsYXkuYywgZGxscy9vbGUzMi9zdG9yYWdlMzIuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJLSBhZGQgc29tZSBkb2N1bWVudGF0aW9uIGl0ZW1zCgktIGZpeCBzb21lIHNwZWxsaW5nCgktIGZpeCBzb21lIHdhcm5pbmdzCgoJKiBkbGxzL3dpbm1tL21jaWNkYS9tY2ljZGEuYywgZG9jdW1lbnRhdGlvbi9jZHJvbS1sYWJlbHMsIGZpbGVzL2RyaXZlLmMsIGluY2x1ZGUvY2Ryb20uaCwgaW5jbHVkZS9kZWJ1Z2RlZnMuaCwgaW5jbHVkZS9kcml2ZS5oLCBsaWJ0ZXN0L3ZvbGluZm8uYywgbWlzYy9jZHJvbS5jLCBtc2Rvcy9pbnQyZi5jLCB3aW5lLmluaToKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJLSBzdXBwb3J0IGZvciByZWFkaW5nIGxhYmVscyBhbmQgc2VyaWFsIG51bXMgZnJvbSBkZXZpY2UKCS0gInJlYXNvbmFibGUiIG1pc2MvY2Ryb20uYyBkZXZpY2UgaGFuZGxpbmcKCS0gbXVjaCBpbXByb3ZlZCBhdWRpbyBDRCBzdXBwb3J0CgktIHNlcmlhbCBudW1iZXIgb3ZlcndyaXRlIGJ1ZyBmaXgKCS0gc3BlbGxpbmcgZml4ZXMKCgkqIE1ha2VmaWxlLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9zZXR1cHgvLmN2c2lnbm9yZSwgZGxscy9zZXR1cHgvTWFrZWZpbGUuaW4sIGRsbHMvc2V0dXB4L3NldHVweC5zcGVjLCBkbGxzL3NldHVweC9zZXR1cHhfbWFpbi5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglBZGRlZCBTRVRVUFggZGxsLgoKCSogZGxscy9vbGUzMi9vbGUyLnNwZWMsIHNlcnZlci9wcm9jZXNzLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIG1pbm9yIGlzc3VlcyBmb3VuZCBieSB3aW5hcGlfY2hlY2suCgoJKiB0b29scy93aW5hcGlfY2hlY2svKjoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBNaW5vciBmaXhlcy4KCS0gTW92ZWQgc29tZSBvZiB0aGUgQVBJIHNwZWNpZmljYXRpb25zIGZyb20gdGhlIGdsb2JhbCBmaWxlIHRvIHRoZQoJICBsb2NhbCBmaWxlcy4KCgkqIGluY2x1ZGUvaW1hZ2VsaXN0LmgsIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUltcGxlbWVudGVkIEltYWdlTGlzdF9SZWFkIChub3QgMTAwJSBjb3JyZWN0IGluIHJlZ2FyZGluZyB0byBzZXR0aW5nCgl0aGUgYml0bWFwKS4KCUZpbGxlZCBvdXQgdW5rbm93biBtZW1iZXJzIG9mIElMSEVBRC4KCVN0YXJ0ZWQgcmVvcmRlcmluZyBJTUFHRUxJU1QgdG8gbWFrZSBpdCBXaW5kb3dzIGJpbmFyeSBjb21wYXRpYmxlLgoKCSogZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCW5JY29uSW5kZXggPT0gLTEgc2hvdWxkIHJldHVybiBuciBvZiBhdmFpbGFibGUgaWNvbnMsIG5vdCAwLgoKCSogTWFrZWZpbGUuaW46IEZpeGVkIGJ1aWxkaW5nIG9mIGRvc21vZCBhbmQgd2luZWNsaXBzcnYuCgoJKiBtaXNjL2RlYnVnc3RyLmM6CglCdWcgZml4OiBhZGRlZCB0ZW1wIHN0cnVjdHVyZSB0byBjb3BlIHdpdGggZGVidWcgdHJhY2VzIGR1cmluZyB0aHJlYWQKCXN0YXJ0dXAuCgoJKiB3aW4zMi9uZXdmbnMuYywgd2luZG93cy9tc2dib3guYywgZGxscy9hdmlmaWwzMi9hdmlmaWxlLmMsIGRsbHMvbnRkbGwvbWlzYy5jLCBkbGxzL250ZGxsL250LmMsIGRsbHMvbnRkbGwvc2VjLmMsIGRsbHMvbnRkbGwvc3luYy5jLCBpZjE2MzIvc25vb3AuYywgaW5jbHVkZS9kZWJ1Z3N0ci5oLCBsaWJ0ZXN0L3ZhcnRlc3QuYywgbG9hZGVyL3Jlc291cmNlLmMsIG9iamVjdHMvdGV4dC5jLCByZWxheTMyL3JlbGF5Mzg2LmMsIHJlbGF5MzIvc25vb3AuYywgcmVsYXkzMi91dHRodW5rLmM6CglSZW1vdmVkIGRlYnVnc3RyLmguCgoJKiBtaXNjL2RlYnVnc3RyLmMsIHNjaGVkdWxlci90aHJlYWQuYywgaWYxNjMyL3JlbGF5LmMsIGluY2x1ZGUvZGVidWd0b29scy5oLCBpbmNsdWRlL3RocmVhZC5oOgoJVXNlIGEgcGVyLXRocmVhZCBidWZmZXIgYW5kIHdyaXRlKDIpIGZvciBkZWJ1ZyB0cmFjZXMuCglSZW1vdmVkIGRlYnVnX2R1bXBzdHIuCgoyMDAwLTAxLTI3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9udGRsbC9ydGxzdHIuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglTbWFsbCBmaXguCgoJKiBzZXJ2ZXIvcmVnaXN0cnkuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglHZXQgSENVIG5hbWUgZnJvbSB1bml4IHVzZXIgbmFtZS4KCgkqIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9wcm9jZXNzLmgsIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RyYWNlLmMsIHRvb2xzL21ha2VfcmVxdWVzdHMsIGluY2x1ZGUvc2VydmVyLmgsIG1lbW9yeS9zZWxlY3Rvci5jOgoJSW1wbGVtZW50ZWQgR2V0VGhyZWFkU2VsZWN0b3JFbnRyeSB0aHJvdWdoIHRoZSBzZXJ2ZXIuCgoyMDAwLTAxLTI2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy93aW5tbS9sb2x2bGRydi5jOgoJRHluYW1pY2FsbHkgbG9hZCB2ZXJzaW9uLmRsbCBpbiBNTURSVl9HZXREZXNjcmlwdGlvbjMyLgoKCSogZGxscy9vbGUzMi9vbGUyLmM6CglVc2UgYSBsaW5rZWQgbGlzdCBpbnN0ZWFkIG9mIGEgRFBBIGZvciB0aGUgaG9vayBsaXN0LgoKCSogd2luZG93cy94MTFkcnYvY2xpcGJvYXJkLmM6CglVc2UgYSBsaW5rZWQgbGlzdCBpbnN0ZWFkIG9mIGEgRFBBIHRvIG1hbmFnZSBwaXhtYXBzLgoKCSogZGxscy9vbGUzMi9zdG9yYWdlMzIuYywgZGxscy9vbGUzMi9zdG9yYWdlMzIuaCwgZGxscy9vbGUzMi9zdGdfc3RyZWFtLmM6CglHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCVJldHVybnMgYW4gZXJyb3IgaWYgdHJ5aW5nIHRvIHdyaXRlIHRvIGEgc3RyZWFtIG9wZW5lZCBmb3IgcmVhZC4KCgkqIGZpbGVzL2RpcmVjdG9yeS5jOiBBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCUFkZCBhIG5ld2JpZSB3YXJuaW5nIGZvciBzbGFzaGVzIGluIHRoZSBzZWFyY2ggUGF0aD0gb2Ygd2luZS5jb25mLgoKCSogZ3JhcGhpY3MvZGRyYXcuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglXYWl0IGZvciBTaG1Db21wbGV0aW9uIGR1cmluZyBGbGlwLgoKCSogY29uZmlndXJlLmluLCBsaWJ0ZXN0L01ha2VmaWxlLmluLCBNYWtlLnJ1bGVzLmluLCBNYWtlZmlsZS5pbiwgY29uZmlndXJlOgoJTWFkZSAtLWVuYWJsZS1kbGwgdGhlIGRlZmF1bHQuCglVc2UgJChNQUtFKSBpbnN0ZWFkIG9mICQoU1VCTUFLRSkgZm9yIHJlY3Vyc2l2ZSBtYWtlcy4KCUNsZWFuZWQgdXAgaW5zdGFsbCB0YXJnZXRzIGluIG1haW4gTWFrZWZpbGUuCgoJKiBkbGxzL250ZGxsL3N5bmMuYzogRG9uJ3QgY3Jhc2ggd2hlbiBPYmplY3RBdHRyaWJ1dGVzIGlzIE5VTEwuCgoyMDAwLTAxLTI1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy94MTFkcnYvbW9uaXRvci5jLCBkZWJ1Z2dlci9kYmdtYWluLmMsIGRlYnVnZ2VyL3N0YWJzLmMsIGRsbHMvY3J0ZGxsL2NydGRsbF9tYWluLmMsIGluY2x1ZGUvb3B0aW9ucy5oLCBsb2FkZXIvZG9zL21vZHVsZS5jLCBsb2FkZXIvbWFpbi5jLCBtaXNjL21haW4uYywgbWlzY2VtdS9tYWluLmMsIHNjaGVkdWxlci9jbGllbnQuYzoKCVVzZSBhcmd2WzBdIHRvIGxvY2F0ZSB0aGUgc2VydmVyIGV4ZWN1dGFibGUuCgoJKiBtZW1vcnkvaGVhcC5jLCBpbmNsdWRlL2hlYXAuaCwgaW5jbHVkZS9wcm9jZXNzLmgsIGluY2x1ZGUvd2lubnQuaCwgbWVtb3J5L2Vudmlyb24uYywgbWVtb3J5L2dsb2JhbC5jOgoJQWxleGFuZHJlIEp1bGxpYXJkIDxqdWxsaWFyZEBjb2Rld2VhdmVycy5jb20+CglTaGFyZSB0aGUgc3lzdGVtIGhlYXAgYmV0d2VlbiBkaWZmZXJlbnQgYWRkcmVzcyBzcGFjZXMuIE1hZGUgcHJvY2VzcwoJaGVhcCBwZXItYWRkcmVzcyBzcGFjZSBpbnN0ZWFkIG9mIHBlci1wcm9jZXNzLgoKCSogc2VydmVyL3RocmVhZC5oLCBzZXJ2ZXIvdHJhY2UuYywgTWFrZWZpbGUuaW4sIGluY2x1ZGUvc2VydmVyLmgsIGluY2x1ZGUvdGhyZWFkLmgsIGxvYWRlci9tYWluLmMsIG1pc2MvcmVnaXN0cnkuYywgc2NoZWR1bGVyL2NsaWVudC5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzY2hlZHVsZXIvdGhyZWFkLmMsIHNlcnZlci9NYWtlZmlsZS5pbiwgc2VydmVyL21haW4uYywgc2VydmVyL29iamVjdC5jLCBzZXJ2ZXIvb2JqZWN0LmgsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9wcm9jZXNzLmgsIHNlcnZlci9yZXF1ZXN0LmMsIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci9zZWxlY3QuYywgc2VydmVyL3RocmVhZC5jOgoJQWxleGFuZHJlIEp1bGxpYXJkIDxqdWxsaWFyZEBjb2Rld2VhdmVycy5jb20+CglNYWRlIHRoZSBzZXJ2ZXIgbGlzdGVuIGZvciBuZXcgY2xpZW50cyBvbiBhIFVuaXggc29ja2V0IGluCgkkSE9NRS8ud2luZS4gTmV3bHkgc3RhcnRlZCB3aW5lIHByb2Nlc3NlcyBub3cgYXR0YWNoIHRvIGFuIGV4aXN0aW5nCglzZXJ2ZXIgaWYgb25lIGlzIHJ1bm5pbmcuCgoJKiBmaWxlcy9wcm9maWxlLmMsIGluY2x1ZGUvb3B0aW9ucy5oOgoJQWRkZWQgUFJPRklMRV9HZXRDb25maWdEaXIgZnVuY3Rpb24uCgoyMDAwLTAxLTI0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9hZHZhcGkzMi9yZWdpc3RyeS5jLCBkbGxzL250ZGxsL3JlZy5jLCBkbGxzL250ZGxsL3N5bmMuYywgZGxscy93aW5zb2NrL3NvY2tldC5jLCBpbmNsdWRlL3NlcnZlci5oLCBzY2hlZHVsZXIvY2xpZW50LmMsIHNlcnZlci8qLmM6CglDaGFuZ2VkIHRoZSBzZXJ2ZXIgdG8gcmV0dXJuIFNUQVRVU18qIGVycm9yIGNvZGVzLgoKCSogZGxscy9udGRsbC9NYWtlZmlsZS5pbiwgZGxscy9udGRsbC9lcnJvci5jLCBkbGxzL250ZGxsL3J0bC5jOgoJQnVpbHQgYSBjb21wbGV0ZSB0cmFuc2xhdGlvbiB0YWJsZSBmb3IgUnRsTnRTdGF0dXNUb0Rvc0Vycm9yLgoKCSogaW5jbHVkZS93aW5lcnJvci5oLCBpbmNsdWRlL3dpbm50Lmg6IEFkZGVkIHNvbWUgZXJyb3IgY29kZXMuCgoJKiB3aW5kb3dzL25vbmNsaWVudC5jOgoJVXNlIEdldFByb2NBZGRyZXNzIGluc3RlYWQgb2YgY2FsbGluZyBTaGVsbEFib3V0QSBkaXJlY3RseS4KCjIwMDAtMDEtMjMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBNYWtlZmlsZS5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvdmVyc2lvbi9NYWtlZmlsZS5pbiwgZGxscy92ZXJzaW9uL3Zlci5zcGVjLCBkbGxzL3ZlcnNpb24vdmVyMTYuYzoKCU1lcmdlZCBkbGxzL3ZlciBpbnRvIGRsbHMvdmVyc2lvbi4KCgkqIGRsbHMvYWR2YXBpMzIvYWR2YXBpMzIuc3BlYywgZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jLCBkbGxzL250ZGxsL01ha2VmaWxlLmluLCBkbGxzL250ZGxsL2ZpbGUuYywgZGxscy9udGRsbC9taXNjLmMsIGRsbHMvbnRkbGwvbnQuYywgZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL250ZGxsL250ZGxsX21pc2MuaCwgZGxscy9udGRsbC9vbS5jLCBkbGxzL250ZGxsL3JlZy5jLCBkbGxzL250ZGxsL3J0bC5jLCBkbGxzL250ZGxsL3J0bHN0ci5jLCBkbGxzL250ZGxsL3NlYy5jLCBkbGxzL250ZGxsL3N5bmMuYywgaW5jbHVkZS9udGRkay5oLCBpbmNsdWRlL250ZGVmLmgsIGluY2x1ZGUvbnRzZWNhcGkuaCwgaW5jbHVkZS93aW5iYXNlLmg6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCS0gaW1wbGVtZW50YXRpb24gb2YgUnRsUmVnKiAocmVhZCBhY2Nlc3MpLCBSdGxFdmVudCosIFJ0bFNlbWFwaG9yZSosCgkgIE50QWxsb2NhdGVMb2NhbGx5VW5pcXVlSWQKCS0gaW1wbGVtZW50YXRpb24gb3Igc3R1YnMgZm9yIE50QWNjZXNzQ2hlY2ssIE50U2V0U2VjdXJpdHlPYmplY3QsCgkgIFJ0bENsZWFyQml0cywgUnRsRXF1YWxQcmVmaXhTaWQsIFJ0bEZpbmRDbGVhckJpdHMsCgkgIFJ0bEZvcm1hdEN1cnJlbnRVc2VyS2V5UGF0aCwgUnRsR2V0Q29udHJvbFNlY3VyaXR5RGVzY3JpcHRvciwKCSAgUnRsSWRlbnRpZmllckF1dGhvcml0eVNpZCwgUnRsSW1wZXJzb25hdGVTZWxmLCBSdGxJbml0aWFsaXplQml0TWFwLAoJICBSdGxJbml0aWFsaXplR2VuZXJpY1RhYmxlLCBSdGxNYWtlU2VsZlJlbGF0aXZlU0QsCgkgIFJ0bFByZWZpeFVuaWNvZGVTdHJpbmcsIFJ0bFNldEJpdHMsIFJ0bFVuaWNvZGVUb011bHRpQnl0ZU4sCgkgIFJ0bFVwY2FzZVVuaWNvZGVTdHJpbmdUb09lbVN0cmluZywgUnRsVXBjYXNlVW5pY29kZVRvT2VtTiwKCSAgUnRsVmFsaWRTaWQsIFJ0bHhVbmljb2RlU3RyaW5nVG9PZW1TaXplCgktIGNvcnJlY3RlZCBtb3N0IFJ0bFN0cmluZyogZnVuY3Rpb25zLCBhZGRlZCBkb2N1bWVudGF0aW9uCgktIG1vcmUgZml4ZXMgYW5kIHBhcnRpYWwgaW1wbGVtZW50YXRpb25zCgoJKiBtaXNjL21haW4uYywgd2luZG93cy94MTFkcnYvZXZlbnQuYywgd2luZG93cy94MTFkcnYvbWFpbi5jLCBncmFwaGljcy9kZHJhdy5jLCBpbmNsdWRlL29wdGlvbnMuaDoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQWRkZWQgLWR4Z3JhYiBjb21tYW5kIGxpbmUgb3B0aW9uLCB3aGljaCBjb25maW5lcyBjdXJzb3IgbW90aW9uIHRvIHRoZQoJRGlyZWN0WCBwcmltYXJ5IHN1cmZhY2UuCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUmVwbGFjZWQgc29tZSB3ZWlyZCBDIGNvbnN0cnVjdHMgKGNoYXJbXT0iIiApIHdpdGggbW9yZSBjb21wYXRpYmxlIG9uZXMuCglBZGRlZCBhbm90aGVyIE5VTEwgcHRyIGNoZWNrIGluIF9Pbk9wZW4uCgoJKiBtaXNjL3dpbnNvY2tfYXN5bmMuYywgcmVsYXkzMi9NYWtlZmlsZS5pbiwgcmVsYXkzMi93c29jazMyLnNwZWMsIE1ha2VmaWxlLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy9NYWtlZmlsZS5pbiwgZGxscy93aW5zb2NrLy5jdnNpZ25vcmUsIGRsbHMvd2luc29jay9NYWtlZmlsZS5pbiwgZGxscy93aW5zb2NrL2FzeW5jLmMsIGRsbHMvd2luc29jay9zb2NrZXQuYywgZGxscy93aW5zb2NrL3dpbnNvY2suc3BlYywgZGxscy93aW5zb2NrL3dzb2NrMzIuc3BlYywgaWYxNjMyL01ha2VmaWxlLmluLCBpZjE2MzIvd2luc29jay5zcGVjLCBtaXNjL01ha2VmaWxlLmluLCBtaXNjL3dpbnNvY2suYzoKCU1vdmVkIHdpbnNvY2sgaW1wbGVtZW50YXRpb24gdG8gZGxscy93aW5zb2NrLgoKCSogZGxscy8qLy5jdnNpZ25vcmU6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkICouc3BlYy5jLCAqLnNwZWMuZ2x1ZS5zLCAqLmdsdWUuYyB0byAuY3ZzaWdub3JlIHRoYXQgbmVlZCB0aGVtLgoKCSogZ3JhcGhpY3MveDExZHJ2L2RpYi5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUNvcnJlY3RlZCBhcmd1bWVudHMgdG8gVmlydHVhbEZyZWUoKS4KCgkqIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYywgaW5jbHVkZS93aW5lL3dpbmVzdHJpbmcuaCwgbWVtb3J5L3N0cmluZy5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglSZXBsYWNlZCBMb2NhbFRvV2lkZUNoYXIoKSBieSBsc3RyY3B5bkF0b1coKSwgV2lkZUNoYXJUb0xvY2FsKCkgYnkKCWxzdHJjcHluV3RvQSgpLgoKCSogd2luZG93cy93aW5wcm9jLmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJTWFwIFdNX01FTlVTRUxFQ1QgMzItPjE2IGJpdHMgZm9yIGNsb3NpbmcgbWVudS4KCgkqIHdpbmRvd3MvbWRpLmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJRml4IHBhcmFtZXRlcnMgZm9yIE1ESV9SZXN0b3JlRnJhbWVNZW51IGluIFdNX0RFU1RST1kgbXNnLgoKCSogZGxscy9vbGVhdXQzMi9vbGVhdXQuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglJbXBsZW1lbnRlZCAoUmVnaXN0ZXJ8R2V0fFJldm9rZSlBY3RpdmVPYmplY3QgZnJvbSB0aGUgZG9jcy4KCgkqIGdyYXBoaWNzL2RkcmF3LmMsIGluY2x1ZGUveDExZHJ2LmgsIHdpbmRvd3MveDExZHJ2L2V2ZW50LmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVN1cGVyY2hhcmdlZCBYU2htIGltcGxlbWVudGF0aW9uIGZvciBEaXJlY3REcmF3LgoKCSogZGVidWdnZXIvbXNjLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBtaXNzaW5nIE5VTEwgcG9pbnRlciBjaGVja3MuCgoJKiBsb2FkZXIvcGVfaW1hZ2UuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUNoZWNrIGZvciBNWiBoZWFkZXIgYmVmb3JlIHRyeWluZyB0byBkZWNpcGhlciB0aGUgUEUgaGVhZGVyLgoKCSogcmVsYXkzMi9rZXJuZWwzMi5zcGVjOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJRXhwb3J0IEdldExvbmdQYXRoTmFtZVtBfFddLgoKCSogbWVtb3J5L2dsb2JhbC5jLCBtZW1vcnkvaGVhcC5jOgoJR3V5IEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCUZpeCBwcm9ibGVtcyB3aXRoIEdsb2JhbEhhbmRsZSBhbmQgR2xvYmFsRnJlZSBzbyByZXN1bHRzIG1hdGNoIFdpbjk4LgoJUmVzdHJ1Y3R1cmUgSEVBUF9WYWxpZGF0ZUluVXNlQXJlbmEsIEhlYXBWYWxpZGF0ZSwgYW5kIGFkZAoJSEVBUF9Jc1JlYWxBcmVuYSB0byBlbGltaW5hdGUgKmJvZ3VzKiBlcnJvciBtZXNzYWdlcy4KCgkqIHdpbmRvd3MvbWVzc2FnZS5jOiBIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglBY3R1YWxseSBwcmludCByZXR1cm4gdmFsdWUgb2YgbWVzc2FnZS4KCgkqIG9iamVjdHMvZGliLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQ29ycmVjdGVkIGFyZ3VtZW50cyBpbiBESUJfRGVsZXRlRElCU2VjdGlvbi4KCgkqIGZpbGVzL2ZpbGUuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglIYW5kbGUgXFwuXDxkb3NkZXZpY2U+IGxpa2UgPGRvc2RldmljZT4gaW4gQ3JlYXRlRmlsZS4gVGVzdGVkIHdpdGgKCWhlbHAgb2YgSmFtZXMgRmVlbmV5IDxqYW1lc0BudXJlYWxtLm5ldD4uCgoyMDAwLTAxLTIwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2NoZWR1bGVyL2RlYnVnZ2VyLmMsIHNjaGVkdWxlci90aHJlYWQuYywgc2VydmVyL01ha2VmaWxlLmluLCBzZXJ2ZXIvY29udGV4dF9pMzg2LmMsIHNlcnZlci9kZWJ1Z2dlci5jLCBzZXJ2ZXIvb2JqZWN0LmgsIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci90cmFjZS5jLCB0b29scy9tYWtlX3JlcXVlc3RzLCBpbmNsdWRlL3NlcnZlci5oOgoJQWxleGFuZHJlIEp1bGxpYXJkIDxqdWxsaWFyZEBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBHZXQvU2V0VGhyZWFkQ29udGV4dCBzdXBwb3J0IHRocm91Z2ggdGhlIHNlcnZlci4KCjIwMDAtMDEtMTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL2RpbnB1dC5jLCBkbGxzL29sZWF1dDMyL29sZTJkaXNwLmMsIGRsbHMvb2xlYXV0MzIvb2xlYXV0LmMsIGRsbHMvb2xlYXV0MzIvb2xlZm9udC5jLCBkbGxzL3NoZWxsMzIvY29udG1lbnUuYywgZGxscy9zaGVsbDMyL2RhdGFvYmplY3QuYywgZGxscy9zaGVsbDMyL2VudW1pZGxpc3QuYywgZGxscy9zaGVsbDMyL2ZvbGRlcnMuYywgZGxscy9zaGVsbDMyL21lbW9yeXN0cmVhbS5jLCBkbGxzL3NoZWxsMzIvcmVnc3RyZWFtLmMsIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYywgZGxscy9zaGVsbDMyL3NoZWxsb2xlLmMsIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYywgZGxscy9zaGVsbDMyL3NobHZpZXcuYywgZGxscy9zaGVsbDMyL3Nodl9iZ19jbWVudS5jLCBncmFwaGljcy9kM2RkZXZpY2VzLmMsIGdyYXBoaWNzL2QzZGV4ZWN1dGVidWZmZXIuYywgZ3JhcGhpY3MvZDNkbGlnaHQuYywgZ3JhcGhpY3MvZDNkbWF0ZXJpYWwuYywgZ3JhcGhpY3MvZDNkdGV4dHVyZS5jLCBncmFwaGljcy9kM2R2aWV3cG9ydC5jLCBncmFwaGljcy9kZHJhdy5jLCBpbmNsdWRlL2RlYnVnc3RyLmgsIG1pc2MvZGVidWdzdHIuYywgZGxscy9hdmlmaWwzMi9hdmlmaWxlLmMsIGRsbHMvZHBsYXl4L2RwY2xhc3NmYWN0b3J5LmMsIGRsbHMvZHBsYXl4L2RwbGF5LmMsIGRsbHMvZHBsYXl4L2RwbG9iYnkuYywgZGxscy9kc291bmQvZHNvdW5kX21haW4uYywgZGxscy9vbGUzMi9jbGlwYm9hcmQuYywgZGxscy9vbGUzMi9kYXRhY2FjaGUuYywgZGxscy9vbGUzMi9kZWZhdWx0aGFuZGxlci5jLCBkbGxzL29sZTMyL2lmcy5jLCBkbGxzL29sZTMyL3N0b3JhZ2UuYzoKCUFkZGVkIGRlYnVnc3RyX2d1aWQgZnVuY3Rpb24gYW5kIHVzZWQgaXQgdG8gcmVwbGFjZQoJV0lORV9TdHJpbmdGcm9tQ0xTSUQgaW4gYWxsIGRlYnVnZ2luZyBtZXNzYWdlcy4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQWx3YXlzIGluaXRpYWxpemUgbHBXYXZlSGRyLT5scE5leHQgdG8gTlVMTC4KCURvbid0IGZhaWwgb24gc3RyYW5nZSBmcmFnbWVudCBzaXplcy4KCjIwMDAtMDEtMTcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3dpbm5scy5oOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCUFkZCBzb21lIGRlZmluZXMgbmVlZGVkIGZvciBVbmljb2RlIHRvIEFzY2lpIGNvbnZlcnNpb25zLgoKCSogbWlzYy9yZWdpc3RyeS5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCUJldHRlciBlcnJvciBoYW5kbGluZywgbGVzcyBrZXlzIGhlbGQgb3Blbi4KCgkqIGdyYXBoaWNzL2RkcmF3LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRW51bURpc3BsYXlNb2RlcyBtdXN0IHBhc3MgbFBpdGNoLgoKCSogY29udHJvbHMvbWVudS5jOiBHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCVZhbGlkYXRlIHRoZSBtZW51IGhhbmRsZXMuCgoJKiBkbGxzL3dpbjg3ZW0vZW11bGF0ZS5jOiBHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCVJvdW5kcyB0byB0aGUgbG93ZXN0IGludGVnZXIsIG5vdCB0aGUgbmVhcmVzdC4KCgkqIGxvYWRlci90YXNrLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJRml4ZWQgcmFjZSBiZXR3ZWVuIFdpbjE2IHBhcmVudCBhbmQgY2hpbGQgZm9yIGZpcnN0IHJlc2NoZWR1bGluZwoJb2YgY2hpbGQgcHJvY2Vzcy4gVGhpcyBmaXhlcyBXaW5FeGVjIHJldHVybmluZyB0b28gZWFybHkuCgoyMDAwLTAxLTE2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW46IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJVXNlIC0td2hvbGUtYXJjaGl2ZSB0byBmb3JjZSBsaW5raW5nIGFsbCBvZiBsaWJ3aW5lLmEuIGludG8gd2luZS4KCgkqIGlmMTYzMi9idWlsdGluLmMsIGluY2x1ZGUvYnVpbHRpbjE2LmgsIGluY2x1ZGUvYnVpbHRpbjMyLmgsIHJlbGF5MzIvYnVpbHRpbjMyLmMsIHRvb2xzL2J1aWxkLmM6CglBZGRlZCBhdXRvbWF0aWMgcmVnaXN0cmF0aW9uIG9mIGJ1aWx0LWluIERMTHMuCgoyMDAwLTAxLTE1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29uZmlndXJlLmluLCBjb25maWd1cmU6IEFhcm9uIEhvcGUgPGVkaEBtYWlsLmJyaW9mb3JnZS5jb20+CglGaXhlZCBJUFggZGV0ZWN0aW9uLgoKCSogbWlzYy9yZWdpc3RyeS5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCU5ldyBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgd2luOTUgcmVnaXN0cnkgbG9hZGVyLgoKCSogZGxscy9hZHZhcGkzMi9yZWdpc3RyeS5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglJZiB0aGVyZSBpcyBlbm91Z2ggc3BhY2UgaW4gdGhlIGJ1ZmZlciBhbmQgdGhlIHR5cGUgaXMgUkVHX1NaIGFuZCB0aGUKCXN0cmluZyBpcyBub3QgMC10ZXJtaW5hdGVkIFJlZ1F1ZXJ5VmFsdWUgYW5kIFJlZ0VudW1WYWx1ZSBhcmUgYXBwZW5kaW5nIGEgMC4KCgkqIGRlYnVnZ2VyL2hhc2guYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglEaXNwbGF5IHRoZSBleHRlcm5hbCBtb2R1bGVzIGFmdGVyIHRoZSBpbnRlcm5hbCBtb2R1bGVzIGluIGNyYXNoIHJlcG9ydC4KCgkqIGZpbGVzL2RyaXZlLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJTWFkZSBTZXRWb2x1bWVMYWJlbCByZXBvcnQgZmFpbHVyZSBvbiBDRC1ST00gZHJpdmVzLgoKCSogZG9jdW1lbnRhdGlvbi9zdGF0dXMvZGlyZWN0cGxheToKCVBldGVyIEh1bm5pc2V0dCA8aHVubmlzZUBub3J0ZWxuZXR3b3Jrcy5jb20+CglVcGRhdGVkIGRvY3VtZW50YXRpb24uCgoJKiBkbGxzL3dpbm1tL2xvbHZsZHJ2LmMsIGRsbHMvd2lubW0vbWNpLmMsIGluY2x1ZGUvZHJpdmVyLmgsIHdpbmRvd3MvZHJpdmVyLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVJlcGxhY2VkIFdpbmUgc3BlY2lmaWMgRFJJVkVSX0dldFR5cGUgYnkgYSBjb3JyZWN0IGltcGxlbWVudGF0aW9uIG9mCglHZXREcml2ZXJGbGFnLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGluY2x1ZGUvd2luZV9nbC5oOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gKHVnbHkpIGZpeCBmb3IgdGhlICdYbWQuaCcgcHJvYmxlbQoJLSBmaXggdGhlIGRldGVjdGlvbiBvZiBER0EgMiBpbiBjb25maWd1cmUgc2NyaXB0CgoJKiBpbmNsdWRlL3RocmVhZC5oLCBzY2hlZHVsZXIvdGhyZWFkLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCS0gYWRkZWQgTlQgZmllbGRzIHRvIFRFQgoJLSBtb3ZlZCB0bHMtZmllbGRzIGFuZCBzb21lIHdpbmUgc3BlY2lmaWMgZmllbGRzIHRvIGEgaGlnaGVyIG9mZnNldAoJLSBhZGRlZCBzb21lIGRvY3VtZW50YXRpb24KCS0gaW5pdGlhbGlzYXRpb24gb2YgdGhlIFVuaWNvZGVTdHJpbmcKCgkqIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmM6IFRvZGQgVC4gRnJpZXMgPHRvZGRAZnJpZXMubmV0PgoJQWRkIEhBVkVfU09VTkRDQVJEX0ggdG8gc3VwcG9ydCBPcGVuQlNELgoKCSogaW5jbHVkZS93aW5nZGkuaCwgb2JqZWN0cy9lbmhtZXRhZmlsZS5jLCByZWxheTMyL2dkaTMyLnNwZWM6CglQZXRlciBIdW5uaXNldHQgPGh1bm5pc2VAbm9ydGVsbmV0d29ya3MuY29tPgoJLSBBZGRlZCBzb21lIG1pc3NpbmcgRU1SIHJlY29yZCB0eXBlcyBhbmQgdXBkYXRlZCBhbmQgZml4ZWQgb3RoZXJzCgktIEFkZGVkIHN0dWJzIGFuZCBoZWFkZXJzIGZvciBDcmVhdGVDb2xvclNwYWNlLERlbGV0ZUNvbG9yU3BhY2UgYW5kIFNldENvbG9yU3BhY2UKCS0gQWRkZWQgaGVhZGVyIGZvciBTZXRJQ01Nb2RlCgktIEFkZGVkIGFiaWxpdHkgdG8gcGxheSBtb3JlIGVuaGFuY2VkIG1ldGFmaWxlIHJlY29yZHMKCgkqIGdyYXBoaWNzL2VuaG1ldGFmaWxlZHJ2L2luaXQuYzoKCVBldGVyIEh1bm5pc2V0dCA8aHVubmlzZUBub3J0ZWxuZXR3b3Jrcy5jb20+CglTdG9yZSByZWZlcmVuY2UgaGRjIHNpemUgaW50byBlbmhhbmNlZCBtZXRhZmlsZSBoZWFkZXIgd2hlbiBjcmVhdGluZy4KCgkqIGRsbHMvb2xlMzIvbW9uaWtlci5jLCBkbGxzL29sZTMyL29sZTJzdHVicy5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglJbXBsZW1lbnRlZCBPbGVSdW4uCgoJKiBvYmplY3RzL2RjLmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJUmVtb3ZlZCBEZWxldGVPYmplY3QgY2FsbCBsZWZ0IG92ZXIgZnJvbSBwcmV2aW91cyBwYXRjaC4KCgkqIHdpbjMyL3RocmVhZC5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUZpeGVkIGJhZCByZWdpc3RlciBjb25zdHJhaW50IGluIEludGVybG9ja2VkQ29tcGFyZUV4Y2hhbmdlLgoKCSogaW5jbHVkZS93aW5iYXNlLmg6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQWRkZWQgcHJvdG90eXBlcyBmb3IgdGhlIE5UIHN5bmNocm9uaXphdGlvbiBmdW5jdGlvbnMKCUludGVybG9ja2VkQ29tcGFyZUV4Y2hhbmdlIGFuZCBJbnRlcmxvY2tlZEV4Y2hhbmdlQWRkLgoKCSogbG9hZGVyL21vZHVsZS5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCURvbid0IGFjY2VzcyAnd20tPm1vZG5hbWUnIGFmdGVyIHRoZSBtb2RyZWYgaGFzIGJlZW4gZmx1c2hlZC4KCgkqIG1lbW9yeS9nbG9iYWwuYzogR3V5IEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCUFkZGVkIG51bGwgY2hlY2sgaW4gR2xvYmFsSGFuZGxlLgoKMjAwMC0wMS0xMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvY29tY3RsMzIvZGF0ZXRpbWUuYywgZGxscy9jb21jdGwzMi9tb250aGNhbC5jLCBkbGxzL29sZWF1dDMyL3BhcnNlZHQuYywgaW5jbHVkZS9tb250aGNhbC5oOgoJUmVtb3ZlZCBhIGRlcGVuZGVuY3kgYmV0d2VlbiBvbGVhdXQzMiBhbmQgY29tY3RsMzIuCgoJKiBpbmNsdWRlL3dpbm50Lmg6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJTW9yZSBTVEFUVVNfIGNvZGVzLgoKCSogaW5jbHVkZS9kZHJhdy5oOiBTdGV2ZSBMYW5nYXNlayA8dm9ybG9uQGRvZGRzLm5ldD4KCUZpeGVkIG1hY3JvIGRlZmluaXRpb24gb2YgSURpcmVjdERyYXdTdXJmYWNlX1Jlc3RvcmUuCglBZGRlZCBkZWZpbmVzIGZvciBEZHJhdydzIFdhaXRGb3JWZXJ0aWNhbERpc3BsYXkoKS4KCgkqIGluY2x1ZGUvZHNvdW5kLmg6IFN0ZXZlIExhbmdhc2VrIDx2b3Jsb25AZG9kZHMubmV0PgoJRml4ZWQgdHlwb3MgaW4gbWFjcm8gZGVmaW5pdGlvbnMgZm9yIElEaXJlY3RTb3VuZEJ1ZmZlcl9HZXRTdGF0dXMsCglJRGlyZWN0U291bmRCdWZmZXJfVW5sb2NrLgoKCSogaW5jbHVkZS9tbXN5c3RlbS5oOiBTdGV2ZSBMYW5nYXNlayA8dm9ybG9uQGRvZGRzLm5ldD4KCU1pc3NpbmcgV2luZWxpYiBkZWNsYXJhdGlvbnMgZm9yIEFVWENBUFMuCgoJKiB0b29scy9idWlsZC5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUZpeCAoaGFybWxlc3MpIGFzc2VtYmxlciB3YXJuaW5ncy4KCgkqIGRsbHMvZHBsYXl4L2RwbGF5LmM6IFBldGVyIEh1bm5pc2V0dCA8aHVubmlzZUBub3J0ZWxuZXR3b3Jrcy5jb20+CglGaXggcHJvYmxlbSB3aXRoIGluaXRpYWxpemF0aW9uIChyZXBvcnRlZCBieSBBbmRyZWFzIE1vaHIpLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOiBBbGV4IFByaWVtIDxhbGV4cEBzY2kua3VuLm5sPgoJSW5mb1B0ciBjaGVja2luZyBtaXhlZCB1cCBXTV9ERVNUUk9ZIGFuZCBXTV9DUkVBVEUuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClN1biBKYW4gIDkgMjE6NDI6NDIgMjAwMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvd25hc3BpMzIvd2luYXNwaTMyLmM6IFBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJTm9uLUxpbnV4IGNvbXBpbGUgZml4LgoKCSogZmlsZXMvZG9zX2ZzLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJRE9TRlNfRG9HZXRGdWxsUGF0aE5hbWUgd291bGQgdW5kZXJmbG93IChwIHdvdWxkIGdldCBwYXN0IHRoZQoJYmVnaW5uaW5nIG9mIGJ1ZmZlcikgaWYgZ2l2ZW4gdGhlIG5hbWUgIi8vLi4iLgoJUmVncm91cGVkIHRoZSBoYW5kbGluZyBvZiB0aGUgZGlyZWN0b3J5IHNlcGFyYXRvcnMuCglEaXJlY3Rvcnkgc2VwYXJhdG9ycyBpbiB0aGUgcmV0dXJuZWQgcGF0aCBhcmUgbm93IGFsd2F5IGEgc2luZ2xlICJcIgoJd2hpY2ggc2ltcGxpZmllcyB0aGUgaGFuZGxpbmcgb2YgIi4uIiBpbiB0aGUgbmFtZS4KCgkqIGRsbHMvYWR2YXBpMzIvcmVnaXN0cnkuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJQ29ycmVjdGVkIGJlaGF2aW91ciBvZiBSZWdPcGVuS2V5IGluIGNhc2Ugb2YgZmFpbHVyZS4KCgkqIG1pc2MvcmVnaXN0cnkuYywgc2VydmVyL3JlZ2lzdHJ5LmMsIHNlcnZlci90cmFjZS5jLCBpbmNsdWRlL3NlcnZlci5oOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CgktIHJlbW92ZWQgY29weWluZyBvZiBIS0VZX1VTRVJTIHRvIEhLRVlfQ1VSUkVOVF9VU0VSCgktIEhLRVlfQ1VSUkVOVF9VU0VSIGlzIG5vdyBzdWJrZXkgb2YgSEtFWV9VU0VSUwoJLSBjaGFuZ2VkIHF1ZXJ5X2tleV9pbmZvX3JlcXVlc3QgdG8gcmV0dXJuIHRoZSBrZXkgbmFtZSB0b28gKE50UXVlcnlLZXkgbmVlZHMgdGhpcykKCS0gdGhlIHJvb3RrZXlzIChNQUNISU5FIGFuZCBVU0VSKSBkbyBoYXZlIG5hbWVzCgoJKiBpbmNsdWRlL2dkaS5oLCBvYmplY3RzL2RjLmMsIG9iamVjdHMvZ2Rpb2JqLmM6CglHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCUF2b2lkIGRlbGV0aW5nIG9mIHRoZSBkZWZhdWx0IDF4MSBiaXRtYXAgZm9yIG1lbW9yeSBEQ3MuCgoJKiBpbmNsdWRlL2J1aWx0aW4xNi5oLCBpbmNsdWRlL2J1aWx0aW4zMi5oLCBsb2FkZXIvbmUvbW9kdWxlLmMsIHJlbGF5MzIvYnVpbHRpbjMyLmMsIHJlbGF5MzIvdXNlcjMyLnNwZWMsIHRvb2xzL2J1aWxkLmMsIGRsbHMvY29tY3RsMzIvY29tY3RsMzIuc3BlYywgZGxscy9jb21tZGxnL2NvbWRsZzMyLnNwZWMsIGRsbHMvZGlzcGxheS9kaXNwbGF5LnNwZWMsIGRsbHMvbW91c2UvbW91c2Uuc3BlYywgZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYywgZGxscy93aW5tbS93aW5tbS5zcGVjLCBpZjE2MzIvYnVpbHRpbi5jOgoJQnVpbHQtaW4gRExMcyByZXNvdXJjZXMgYXJlIG5vdyBzcGVjaWZpZWQgaW4gc3BlYyBmaWxlLgoJUmVtb3ZlZCB1bm5lY2Vzc2FyeSBmbGFncyBpbiBidWlsdC1pbiBETExzIHRhYmxlcy4KCgkqIGlmMTYzMi9kdW1teS5jLCBpZjE2MzIvZ2RpLnNwZWMsIGlmMTYzMi91c2VyLnNwZWMsIG1pc2MvTWFrZWZpbGUuaW4sIG1pc2MvYmlkaTE2LmM6CglFcmV6IFZvbGsgPGVyZXpAZ214Lm5ldD4KCUFkZGVkIHN0dWJzIGZvciBzb21lIEJpRGkgQVBJIGZ1bmN0aW9ucy4KCgkqIGRsbHMvd2lubW0vbWNpd2F2ZS9tY2l3YXZlLmM6CglCcmFkbGV5IEJhZXR6IDxiYmFldHpAc3R1ZGVudC51c3lkLmVkdS5hdT4KCUZpeGVkIHJhY2UgY29uZGl0aW9uIGJldHdlZW4gYXBwIGFuZCB3aW5lIGluIFdBVkVfbWNpUGxheS4KCgkqIGNvbnRyb2xzL21lbnUuYzogUGFzY2FsIExlc3NhcmQgPHBhc2NhbEBtYWNhZGFtaWFuLmNvbT4KCVN0b3AgbWVudSB0cmFja2luZyB3aGVuIGNsaWNraW5nIG9uIHRoZSBtZW51IGJhciB3aGVyZSB0aGVyZSBpcyBubwoJbWVudSBpdGVtLgoKCSogd2luMzIvbmV3Zm5zLmM6IEVyZXogVm9sayA8ZXJlekBnbXgubmV0PgoJQmV0dGVyIGVycm9yIHJlcG9ydGluZy4KClNhdCBKYW4gIDggMjI6Mjc6MzEgMjAwMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jOgoJQmFja2VkIG91dCBzY2FsYWJsZSBiaXRtYXAgY2hhbmdlIChnaXZlcyB1Z2x5IHJlc3VsdHMpLgoKCSogY29udHJvbHMvbWVudS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUdldE1lbnVTdHJpbmcgc2hvdWxkIHJldHVybiBpdGVtbGVuZ3RoIG9uIDAgbk1heCBvciBOVUxMIHN0cgoJSW5zZXJ0SXRlbSBwb3M9LTEsIGZsYWdzID0gMCBzaG91bGQgYXBwZW5kIGl0ZW0KCSh0aGFua3MgdG8gU2FuZGVyIHZhbiBMZWV1d2VuKQoKCSogaW5jbHVkZS9hc3BpLmgsIGRsbHMvd25hc3BpMzIvd2luYXNwaTMyLmMsIGRsbHMvd25hc3BpMzIvd25hc3BpMzIuc3BlYzoKCURhdmlkIEVsbGlvdHQgPGRmZUBuZXRuaXRjby5uZXQ+CglSZW1vdmVkIG1hbGxvYy9mcmVlIGhhY2sgYW5kIHJlcGxhY2VkIHdpdGggSGVhcEFsbG9jL0hlYXBGcmVlIHRocm91Z2hvdXQgY29kZS4KCUFkZGVkIGNyaXRpY2FsIHNlY3Rpb24gYXJvdW5kIGNvZGUgZGVhbGluZyB3aXRoIGdsb2JhbCB2YXJpYWJsZXMuCglBZGRlZCBhIGZldyBjb21tZW50cyBhYm91dCBob3cgQVNQSSBpcyBzdXBwb3NlZCB0byB3b3JrLgoJQ29weSBzZW5zZSBpbmZvIGludG8gdGhlIGNvcnJlY3QgcGxhY2UgKHJpZ2h0IGFmdGVyIHRoZSBmaXhlZCAxNi1ieXRlIENEQikuCglOb3cgcmV0dXJucyB0YXJnZXQgc3RhdHVzIChtYW55IFdpbmRvd3MgYXBwcyB3b24ndCBldmVuIGxvb2sgYXQgdGhlCglzZW5zZSBhcmUgdW5sZXNzIHRoZXkgZ2V0IGFuIGVycm9yIGNvZGUpLgoJQWRkZWQgU0NfQUJPUlRfU1JCIEZJWE1FLgoJQWRkZWQgU0NfR0VUX0RJU0tfSU5GTyBwbGFjZSBob2xkZXIgZm9yIGNsYXJpdHkuCglVcGRhdGVkIExpbnV4IFNHIGludGVyZmFjZSBzdHJ1Y3R1cmUgdG8gaW5jbHVkZSBuZXcga2VybmVsIDIuMgoJc3RhdHVzIGZpZWxkcy4KCgkqIE1ha2UucnVsZXMuaW46IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJTG9vayBmb3Igb3VyIGhlYWRlciBmaWxlcyBmaXJzdCwgdGhlbiBmb3Igc3lzdGVtcyBoZWFkZXJzLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGcuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglUaGUgbmV3IGZpbGVkaWFsb2cgc3R1ZmYgZG9lcyBub3QgaGFuZGxlIHRlbXBsYXRlLiBTbyBkbyBub3QgY2FsbCBpZgoJdGhlcmUgYXJlIGFueS4KCgkqIHdpbmRvd3Mvd2lucG9zLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglBdm9pZCBwcm9ibGVtcyBkdXJpbmcgY2hhbmdpbmcgdGhlIFotb3JkZXIgaWYgdGhlIHdpbmRvdyBhbmQgdGhlCgl3aW5kb3cgdG8gaW5zZXJ0IGFmdGVyIGFyZSB0aGUgc2FtZS4KCgkqIGxpYnRlc3QvZXhwYW5kLmMsIGxpYnRlc3QvaGVsbG81LmM6CglNYXJjdXMgTWVpc3NuZXIgPE1hcmN1cy5NZWlzc25lckBjYWxkZXJhLmRlPgoJUmVtb3ZlZCBHVUkganVuayBmcm9tIGV4cGFuZC5jLCBzbyB5b3UgY2FuIHVzZSBpdCBpbiBjb21tYW5kbGluZSBtb2RlLgoJRml4ZWQgaGVsbG81LmMuCgoJKiBkbGxzL2ltYWdlaGxwL2ltYWdlaGxwLnNwZWMsIGRsbHMvaW1tMzIvaW1tMzIuc3BlYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSBpc3N1ZXMgZm91bmQgYnkgd2luYXBpX2NoZWNrLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3NoZWxsMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2NoZWNrLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2xvY2FsLnBtOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIEFkZGVkIHN1cHBvcnQgZm9yIGF1dG8gYWxsb2NhdGVkIG9yZGluYWxzCgktIEZpeGVkIHZhcmFyZ3MgKDE2IGJpdCkgYnVnCgktIE1pbm9yIGZpeGVzCgoJKiBkbGxzL3ZlcnNpb24vaW5mby5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglGaXhlZCBhbGlnbm1lbnQgcHJvYmxlbSB3aXRoIFZFUlNJT05fSU5GTyBtZW1iZXJzLgoKV2VkIEphbiAgNSAwMzoyNDo1MiAyMDAwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW46IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkICRYX0VYVFJBX0xJQlMgdG8gYW55IFggZGVwZW5kZW5kIGNoZWNrcyBvciB0aGV5IHdpbGwgZmFpbCBpZiBzb21lCglvZiB0aGUgJFhfRVhUUkFfTElCUyBhcmUgcmVxdWlyZWQuCgoJKiB3aW5kb3dzL2RlZnduZC5jLCB3aW5kb3dzL3BhaW50aW5nLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gTWFkZSBGaWxsUmVjdCBiZWhhdmUgbGlrZSBpdCBkb2VzIG9uIFdpbmRvd3MKCS0gQ2xlYW5lZCB1cCBXTV97LElDT059RVJBU0VCQUNLR1JPVU5EIGRlZmF1bHQgaGFuZGxpbmcKCS0gQWRkZWQgc29tZSBjb21tZW50cyBvbiBob3cgV2luZG93cyBiZWhhdmVzCgoJKiB3aW5kb3dzL3dpbmhlbHAuYzogUGV0ZXIgR2FudGVuIDxwZXRlckBnYW50ZW4ub3JnPgoJQ2hlY2sgaWYgd2luaGVscCBpcyBhbHJlYWR5IHJ1bm5pbmc7IHVzZSB3aW5obHAzMi5leGUgb3Igd2luaGVscC5leGUKCWRlcGVuZGluZyBvbiB0aGUgZW11bGF0ZWQgdmVyc2lvbiwgcmVsYXNlIHdpbjE2bG9jayBiZWZvcmUgY2FsbGluZwoJV2luSGVscEEuCgoJKiBBVVRIT1JTLCBpbmNsdWRlL2F1dGhvcnMuaDoKCVVwZGF0ZWQgYXV0aG9ycyBsaXN0IGZyb20gdGhlIENoYW5nZWxvZy4gUGxlYXNlIGxldCBtZSBrbm93IGlmIHlvdQoJaGF2ZSBiZWVuIGxlZnQgb3V0LgoKCSogZG9jdW1lbnRhdGlvbi9mb250czogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglUcnVlVHlwZSBjbGFyaWZpY2F0aW9uLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGdyYXBoaWNzL2QzZGRldmljZXMuYywgZ3JhcGhpY3MvZDNkdGV4dHVyZS5jLCBpbmNsdWRlL2FjY29uZmlnLmgsIGluY2x1ZGUvY29uZmlnLmguaW46CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSBkZXRlY3QgaWYgdGhlIE9wZW5HTCBpbXBsZW1lbnRhdGlvbiBkZWZpbmVzIHRoZSBwYWxldHRlZCB0ZXh0dXJlIGFuZAoJICBjb2xvciB0YWJsZSBleHRlbnNpb25zCgktIHNtYWxsIHdhcm5pbmcgZml4ZXMKCS0gZml4IHRoZSBkb3VibGUgJy1sWHhmODZkZ2EnIHdoZW4gaGF2aW5nIERHQSAyLjAKCgkqIGluY2x1ZGUvd2luYmFzZS5oOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVNvbWUgY29tbSBjbGVhbiB1cCwgbXVjaCBtb3JlIGVycm9yIG1lc3NhZ2VzLCBvbmx5IHVzZSBUSU9DT1VUUSBpZgoJZGVmaW5lZCBbd2luZS1idWdzLzEwNF0sIHRyaWVkIGltcGxlbWVudGluZyBTZXRDb21tVGltZW91dHMuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6IEFsZXggUHJpZW0gPGFsZXhwQHNjaS5rdW4ubmw+CgktIFdoZW4gcHJvY2Vzc2luZyBXTV9QQUlOVCBtZXNzYWdlcywgdGhlIHRyZWV2aWV3IG1pZ2h0IHNvbWV0aW1lcyB1c2UKCSAgdGhlIHdyb25nIGhkYy4gRml4ZWQuCgktIEJldHRlciBjaGVja2luZyBmb3IgVFJFRVZJRVdfSU5GTyAqaW5mb1B0cj1OVUxMLgoJICBTaW1pbGFyIHRvIGNvZGUgaW4gdG9vbGJhci5jCgktIE90aGVyIHNtYWxsIGZpeGVzIChzdWJjbGFzc2VkIGVkaXQgY29udHJvbCkuCgoJKiBkZWJ1Z2dlci9tc2MuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IHVuaW5pdGlhbGl6ZWQgcG9pbnRlciBjYXVzZWQgY3Jhc2hlcy4KCgkqIGxvYWRlci9wZV9pbWFnZS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU1hZGUgdmlydXMgd2FybmluZyBhIGJpdCBtb3JlIGRyYXN0aWMsIHNpbmNlIHNvbWUgcGVvcGxlIGRvbid0IGJlbGlldmUgdXMuCgoJKiBtaXNjL2NvbW0uYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTb21lIGNvbW0gY2xlYW4gdXAsIG11Y2ggbW9yZSBlcnJvciBtZXNzYWdlcywgb25seSB1c2UgVElPQ09VVFEgaWYKCWRlZmluZWQgW3dpbmUtYnVncy8xMDRdLCB0cmllZCBpbXBsZW1lbnRpbmcgU2V0Q29tbVRpbWVvdXRzLgoKCSogZmlsZXMvcHJvZmlsZS5jOiBSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJSW1wbGVtZW50IFdyaXRlUHJpdmF0ZVByb2ZpbGVTZWN0aW9uQSgpLgoKCSogZGxscy9udGRsbC9ydGwuYzogQWRhbSBTYWNhcm55IDxtYWdpY2JveEBiZXN0d2ViLm5ldD4KCUZpeCBmb3IgY29tcGlsZXJzIHRoYXQgZG9uJ3Qgc3VwcG9ydCAnbG9uZyBsb25nJyAoRnJvbSBPdmUgS2FhdmVuKS4KClR1ZSBKYW4gIDQgMDI6NDA6MjIgMjAwMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNjaGVkdWxlci90aHJlYWQuYywgc2VydmVyL3RocmVhZC5jOgoJTW92ZWQgYWxsb2NhdGlvbiBvZiB0aGUgc29ja2V0IHBhaXIgZm9yIGEgbmV3IHRocmVhZCB0byB0aGUgc2VydmVyLgoKCSogc2VydmVyL2RlYnVnZ2VyLmM6IE1hZGUgZGVidWcgZXZlbnRzIGFuZCBjb250ZXh0cyBzdGFuZGFyZCBvYmplY3RzLgoJVXNlIHNsZWVwX29uIHRvIHdhaXQgb24gZGVidWcgZXZlbnRzLgoKCSogc2VydmVyL3JlcXVlc3QuYywgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdGhyZWFkLmgsIHNlcnZlci90cmFjZS5jOgoJTWFkZSBzbGVlcF9vbiB1c2FibGUgZnJvbSBhbGwgcmVxdWVzdHMuCgoJKiBkbGxzL3dpbm1tL2xvbHZsZHJ2LmMsIGRsbHMvd2lubW0vbW1zeXN0ZW0uYywgaW5jbHVkZS9tbXN5c3RlbS5oOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBtb3JlIE1JREkgbWVzc2FnZXMgMTY8PT4zMiBtYXBwaW5nLgoJRml4ZXMgc29tZSBidWdzIGluIGJ1ZmZlcnMgaGFuZGxpbmcgYW5kIGluZGV4IGZvciBNQVBQRVIuCgoJKiBpbmNsdWRlL2NhbGxiYWNrLmgsIGlmMTYzMi90aHVuay5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglSZW1vdmVkIHRoZSBvYnNvbGV0ZWQgQ2FsbFRpbWVGdW5jUHJvYywgQ2FsbERyaXZlclByb2MsCglDYWxsRHJpdmVyQ2FsbGJhY2suCgoJKiBkbGxzL3dpbm1tLy5jdnNpZ25vcmUsIGRsbHMvd2lubW0vTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vdGltZS5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglQdXQgYmFjayB2aXNpYmxlIG1pbmltdW0gdGltZXIgcmVzb2x1dGlvbiB0byAxIG1zLgoJRGVjb3JyZWxhdGUgdGhlIHNlcnZpY2UgdGhyZWFkIHJlc29sdXRpb24gZnJvbSB0aGUgdXNlciByZXF1aXJlZCB0aW1lcgoJJiB2aXNpYmxlIG1pbmltdW0gcmVzb2x1dGlvbnMuCglSZW1vdmVkIHRoZSBDYWxsYmFjay5UaW1lRnVuY1Byb2MgZW50cnkuCgoJKiB3aW5kb3dzL3gxMWRydi9tb25pdG9yLmM6IExpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglHaXZlICswKzAgYXMgYSBkZWZhdWx0IHBvc2l0aW9uIGZvciB0aGUgZGVza3RvcCB3aW5kb3cuCgoJKiBkbGxzL3dpbm1tL21taW8uYzogQnJhZGxleSBCYWV0eiA8YmJhZXR6QHN0dWRlbnQudXN5ZC5lZHUuYXU+CglDb252ZXJ0IG1taW8gdG8gYWxsb3cgdGhlIHVzZSBvZiAzMiBiaXQgbW1pbyBwcm9jZWR1cmVzLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmMsIGRsbHMvc2hlbGwzMi9zaGxtZW51LmMsIGRsbHMvc2hlbGwzMi9zeXN0cmF5LmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCVNtYWxsIGZpeGVzLgoKCSogZGxscy9vZGJjMzIvb2RiYzMyLnNwZWMsIG1pc2MvcmVnaXN0cnkuYywgcmVsYXkzMi9rZXJuZWwzMi5zcGVjOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIGlzc3VlcyBmb3VuZCBieSB3aW5hcGlfY2hlY2suCgoJKiB0b29scy93aW5hcGlfY2hlY2svd2luMzIvYWR2YXBpMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvY29tY3RsMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvb2RiYzMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaS5wbToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJVXBkYXRlZCB3aW5hcGlfY2hlY2sgdG8gaGFuZGxlIHRoZSBuZXcgYWRkaXRpb25zLgoKCSogZGxscy9jb21jdGwzMi9tb250aGNhbC5jLCBpbmNsdWRlL21vbnRoY2FsLmg6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCUphbWVzIEFiYmF0aWVsbG8gPGFiYmV5akB3cGkuZWR1PgoJSW1wbGVtZW50ZWQgV01fU0laRSBtZXNzYWdlIHN1cHBvcnQuIE9wdGltaXplZCBkcmF3aW5nIHRvIHVzZQoJcHJlY2FsY3VsYXRlZCBzaXplIHZhbHVlcyByYXRoZXIgdGhhbiByZWNhbGN1bGF0aW5nIGR1cmluZyBlYWNoIGNhbGwKCW9mIE1PTlRIQ0FMX1JlZnJlc2guCgoJKiByZWxheTMyL3VzZXIzMi5zcGVjLCB3aW5kb3dzL2RpYWxvZy5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglDb3JyZWN0ZWQgcGFyYW1ldGVyIGNvdW50IGZvciBEaWFsb2dCb3hJbmRpcmVjdFBhcmFtQW9yVy4KCgkqIGNvbnRyb2xzL3Njcm9sbC5jOiBSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJRG9uJ3Qgc2hvdyB0aGUgc2Nyb2xsYmFyIGlmIFNldFNjcm9sbGluZm8oKSBpcyBjYWxsZWQgd2l0aCBvbmx5IHRoZQoJU0lGX0RJU0FCTEVOT1NDUk9MTCBmbGFnLgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglBZGRlZCBleHRyYSBVUyBrZXltYXAgd2l0aCB0aGUgaW5mYW1vdXMgcGhhbnRvbSBrZXkuCgoJKiBNYWtlZmlsZS5pbiwgZGxscy93aW5tbS93aW5lb3NzL01ha2VmaWxlLmluOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglVc2UgYSB1bmlmb3JtIG5hbWluZyBzY2hlbWUgZm9yIGRyaXZlciBtb2R1bGVzLgoKCSogaW5jbHVkZS9kcml2ZXIuaDogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglFbmNhcHN1bGF0ZWQgV2luZSBpbnRlcm5hbCBkYXRhIGludG8gYW4gaWZkZWYgX19XSU5FX18uCgoJKiB3aW5kb3dzL01ha2VmaWxlLmluLCB3aW5kb3dzL2RyaXZlci5jLCB3aW5kb3dzLy5jdnNpZ25vcmU6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCU1vdmVkIHRoZSAxNiBiaXQgZHJpdmVyIGZ1bmN0aW9ucyBjYWxsb3V0IGludG8gdGhlIGRpci4KCgkqIGRsbHMvd2lubW0vd2F2ZW1hcC93YXZlbWFwLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgc3VwcG9ydCBmb3IgV09ETV9CUkVBS0xPT1AgbWVzc2FnZS4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9taXhlci5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVJlbW92ZWQgZXh0cmFuZW91cyBFUlIgbWVzc2FnZS4KCgkqIGRsbHMvd2lubW0vbWNpc2VxL21jaW1pZGkuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBzdXBwb3J0IGZvciBNQ0lfSU5GT19DT1BZUklHSFQgYW5kIE1DSV9JTkZPX05BTUUuCgoJKiBkZWJ1Z2dlci9oYXNoLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJVXNlIGNhc2UgaW5zZW5zaXRpdmUgY29tcGFyaXNvbiB3aGlsZSBzZWFyY2hpbmcgZm9yIG5ldyBtb2R1bGVzLgoKCSogZGxscy9udGRsbC9udGRsbC5zcGVjOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglBZGRlZCBzcGVjIGVudHJ5IGZvciBfaXRvYS4KCgkqIHRvb2xzL3dyYy9DSEFOR0VTLCB0b29scy93cmMvd3JjLmgsIHRvb2xzL3dyYy93cml0ZXJlcy5jOgoJQmVydGhvIFN0dWx0aWVucyA8YmVydGhvQHBhbnRlci5zb2NpLmFhdS5kaz4KCUdlbmVyYXRlZCBsYWJlbHMgb2YgcmVzb3VyY2UgbmFtZXMgbXVzdCBiZSB1bmlxdWUgdGhyb3VnaG91dCB0aGUKCWdlbmVyYXRlZCBjb2RlLgoKCSogd2luZG93cy9tZXNzYWdlLmM6IEFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJInJlc3VsdHAiIGNhbiBiZSBOVUxMIGluIFNlbmRNZXNzYWdlVGltZW91dCooKS4KCgkqIGRsbHMvY3J0ZGxsL2NydGRsbC5zcGVjLCBkbGxzL2NydGRsbC9jcnRkbGxfbWFpbi5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CgktIHByZXZlbnQgbWVtIGxlYWsgb2YgQ1JURExMX2FjbWRsbl9kbGwKCS0gYmV0dGVyIGFyZ3VtZW50IHBhcnNpbmcKCS0gbGFzdCB4YXJndiBlbnRyeSBoYXMgdG8gYmUgTlVMTAoJLSByZXR1cm4gdmFsdWUgaXMgZW52aXJvbm1lbnQgcG9pbnRlciBpbnN0ZWFkIG9mIE5VTEwKCS0gYWRkZWQgYSBzcGVjIGVudHJ5IGZvciBic2VhcmNoKCkKClNhdCBKYW4gIDEgMjI6Mzg6MjEgMjAwMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGxvYWRlci9tb2R1bGUuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3MvcXVldWUuYywgd2luZG93cy91c2VyLmMsIGlmMTYzMi90aHVuay5jLCBpbmNsdWRlL2NhbGxiYWNrLmgsIGluY2x1ZGUvcHJvY2Vzcy5oOgoJUGV0ZXIgR2FudGVuIDxwZXRlckBnYW50ZW4ub3JnPgoJSW1wbGVtZW50ZWQgV2FpdEZvcklucHV0SWRsZS4KCgkqIG1pc2MvZGRlbWwuYywgd2luZG93cy93aW4uYzoKCUZpeGVkIHBvdGVudGlhbCBidWZmZXIgb3ZlcmZsb3dzIChzcG90dGVkIGJ5IEZyYW5jb2lzIEdvdWdldCkuCgoJKiByZWxheTMyL3dvdzMyLnNwZWMsIGRsbHMvbXByL21wci5zcGVjLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvcHNhcGkvcHNhcGkuc3BlYywgZGxscy9zaGVsbDMyL3NobHdhcGkuc3BlYywgZGxscy90YXBpMzIvbGluZS5jLCBkbGxzL3RhcGkzMi90YXBpMzIuc3BlYywgZGxscy92ZXJzaW9uL3ZlcnNpb24uc3BlYywgZGxscy93aW5tbS93aW5tbS5zcGVjLCByZWxheTMyL2RkcmF3LnNwZWMsIHJlbGF5MzIvZGlucHV0LnNwZWMsIHJlbGF5MzIvZ2RpMzIuc3BlYywgZGxscy9hdmlmaWwzMi9hdmlmaWwzMi5zcGVjLCBkbGxzL2NydGRsbC9jcnRkbGwuc3BlYywgZGxscy9kY2ltYW4zMi9kY2ltYW4zMi5zcGVjLCBkbGxzL2RwbGF5eC9kcGxheS5zcGVjLCBkbGxzL2ljbXAvaWNtcC5zcGVjLCBkbGxzL2ltYWdlaGxwL2ltYWdlaGxwLnNwZWMsIGRsbHMvaW1tMzIvaW1tMzIuc3BlYywgZGxscy9semV4cGFuZC9sejMyLnNwZWMsIGRsbHMvYWR2YXBpMzIvYWR2YXBpMzIuc3BlYzoKCU1ha2UgdXNlIG9mIGF1dG9tYXRpYyBvcmRpbmFsIGFsbG9jYXRpb24uCgoJKiBzZXJ2ZXIvc29ja2V0LmMsIHNlcnZlci9kZXZpY2UuYywgc2VydmVyL2V2ZW50LmMsIHNlcnZlci9maWxlLmMsIHNlcnZlci9oYW5kbGUuYywgc2VydmVyL21hcHBpbmcuYywgc2VydmVyL211dGV4LmMsIHNlcnZlci9vYmplY3QuYywgc2VydmVyL29iamVjdC5oLCBzZXJ2ZXIvcGlwZS5jLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcmVnaXN0cnkuYywgc2VydmVyL3JlcXVlc3QuYywgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3NlbGVjdC5jLCBzZXJ2ZXIvc2VtYXBob3JlLmMsIHNlcnZlci9zbmFwc2hvdC5jLCBzZXJ2ZXIvc29jay5jLCBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90aHJlYWQuaCwgc2VydmVyL3RpbWVyLmMsIHNlcnZlci90cmFjZS5jLCBzZXJ2ZXIvTWFrZWZpbGUuaW4sIHNlcnZlci9jaGFuZ2UuYywgc2VydmVyL2NvbnNvbGUuYzoKCU1vdmVkIHBvbGwgaGFuZGxpbmcgdG8gdGhlIGdlbmVyaWMgcGFydCBvZiB0aGUgc2VydmVyIG9iamVjdHMuCglGaXhlZCBidXN5IHdhaXRpbmcgb24gUE9MTEVSUiBldmVudHMuCglNZXJnZWQgc3RydWN0IGNsaWVudCBpbnRvIHN0cnVjdCB0aHJlYWQuCgpNb24gRGVjIDI3IDA1OjI2OjAxIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW4zMi9wcm9jZXNzLmMsIHdpbmRvd3MveDExZHJ2L3duZC5jLCBkbGxzL29kYmMzMi9wcm94eW9kYmMuYywgZGxscy9vbGUzMi9iaW5kY3R4LmMsIGRsbHMvb2xlMzIvaGdsb2JhbHN0cmVhbS5jLCBncmFwaGljcy90dHlkcnYvYml0bWFwLmMsIG1pc2MvZGRlbWwuYywgbWlzYy92ZXJzaW9uLmM6CglDb3NtZXRpY3MuCgoJKiBtZW1vcnkvYXRvbS5jLCBtZW1vcnkvZW52aXJvbi5jLCBtaXNjL2xzdHIuYywgbWlzYy9yZWdpc3RyeS5jLCBtaXNjL3dpbnNvY2suYywgcHJvZ3JhbXMvcmVnYXBpL3JlZ2FwaS5jLCByZWxheTMyL2J1aWx0aW4zMi5jLCB3aW5kb3dzL2RyaXZlci5jLCB3aW5kb3dzL21kaS5jLCB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jLCBkbGxzL3dpbm1tL2xvbHZsZHJ2LmMsIGRsbHMvd2lubW0vd2luZW9zcy9taXhlci5jLCBmaWxlcy9wcm9maWxlLmMsIGdyYXBoaWNzL3BzZHJ2L2RyaXZlci5jLCBncmFwaGljcy9wc2Rydi9mb250LmMsIGxvYWRlci9tb2R1bGUuYywgbG9hZGVyL25lL21vZHVsZS5jLCBsb2FkZXIvdGFzay5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jLCBkbGxzL2NvbW1kbGcvZmlsZXRpdGxlLmMsIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYywgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jLCBkbGxzL3ZlcnNpb24vaW5zdGFsbC5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglCdWZmZXIgb3ZlcmZsb3dzIGFuZCBzdHJuY3B5IGZpeGVzLgoKCSogbG9hZGVyL3BlX2ltYWdlLmM6CglQRV9GaW5kRXhwb3J0ZWRGdW5jdGlvbjogdXNlIGEgYmluYXJ5IHNlYXJjaCBmb3IgZnVuY3Rpb24gbmFtZXMuCgpTdW4gRGVjIDI2IDIzOjEyOjM4IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2FkdmFwaTMyL2FkdmFwaTMyLnNwZWMsIGRsbHMvb2RiYzMyL29kYmMzMi5zcGVjOgoJRml4ZWQvY29tbWVudGVkIG91dCBkdXBsaWNhdGUgZW50cnkgcG9pbnQgbmFtZXMuCgoJKiByZWxheTMyL2J1aWx0aW4zMi5jLCB0b29scy9idWlsZC1zcGVjLnR4dCwgdG9vbHMvYnVpbGQuYzoKCUFkZGVkIHN1cHBvcnQgZm9yIGF1dG9tYXRpYyBvcmRpbmFsIGFsbG9jYXRpb24uCglPdXRwdXQgbGlzdCBvZiBmdW5jdGlvbiBuYW1lcyBpbiBzb3J0ZWQgb3JkZXIuCglBZGRlZCBzdXBwb3J0IGZvciBuYW1lbGVzcyAob3JkaW5hbC1vbmx5KSBlbnRyeSBwb2ludHMuCglDbGVhbmVkIHVwIGVycm9yIGhhbmRsaW5nLgoKCSogaW5jbHVkZS9tZXRhZmlsZWRydi5oLCBpbmNsdWRlL3BzZHJ2LmgsIGluY2x1ZGUvdHNfeGxpYi5oLCBpbmNsdWRlL3R0eWRydi5oLCBpbmNsdWRlL3dpbjE2ZHJ2LmgsIGluY2x1ZGUveDExZHJ2LmgsIG9iamVjdHMvZm9udC5jLCBvYmplY3RzL3RleHQuYywgdHN4MTEvWDExX2NhbGxzLCB0c3gxMS90c194bGliLmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L3RleHQuYywgZ3JhcGhpY3MvcHNkcnYvZm9udC5jLCBncmFwaGljcy9wc2Rydi9wcy5jLCBncmFwaGljcy9wc2Rydi90ZXh0LmMsIGdyYXBoaWNzL3R0eWRydi9mb250LmMsIGdyYXBoaWNzL3R0eWRydi90ZXh0LmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L2ZvbnQuYywgZ3JhcGhpY3Mvd2luMTZkcnYvdGV4dC5jLCBncmFwaGljcy94MTFkcnYvdGV4dC5jLCBncmFwaGljcy94MTFkcnYveGZvbnQuYywgaW5jbHVkZS9nZGkuaDoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCU1vdmUgRENGdW5jcyBFeHRUZXh0T3V0IGFuZCBHZXRUZXh0RXh0ZW50UG9pbnQgdG8gVW5pY29kZS4KCU1hcCBhIGZldyBVbmljb2RlIGNoYXJzIHRvIHRoZSBmaXJzdCAweGZmIGluIHBzZHJ2LgoJRG9uJ3QgZXhwZWN0IHgxMWRydiB0byBkaXNwbGF5IFVuaWNvZGUgY2hhcnMgeWV0LgoKCSogZGxscy9jb21jdGwzMi90b29sdGlwcy5jLCBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jLCBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmMsIG1lbW9yeS9zdHJpbmcuYywgcmVsYXkzMi9yZWxheTM4Ni5jLCByZWxheTMyL3Nub29wLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCVdyYXBwZWQgc29tZSBzdHJpbmdzIGluIGEgZGVidWdzdHJfKiBjYWxsLgoJUmVwbGFjZWQgc29tZSBjYWxscyB0byBkZWJ1Z3N0cl97YSx3fSBieSBkZWJ1Z3N0cl97YSx3fW4uCglSZW1vdmVkIHJlZHVuZGFudCAnTCdzIGZvciBVbmljb2RlIHN0cmluZ3MuCglUcmllZCB0byBoYXJtb25pemUgdGhlIHRyYWNlcyBhIGxpdHRsZSBiaXQuCgoJKiBtaXNjL2RlYnVnc3RyLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJZGVidWdzdHJfdyBub3cgcmV0dXJucyBzb21ldGhpbmcgbG9va2luZyBsaWtlICdMInh4eHgiLi4uJwoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCUZJTEVETEc5NV9IYW5kbGVDdXN0b21EaWFsb2dNZXNzYWdlczoKCS0gZm9yIHRoZSB0aHJlZSBoYW5kbGVkIG1lc3NhZ2VzIHdlIG11c3QgcmV0dXJuIHRoZSByZXF1aXJlZCBidWZmZXIgc2l6ZQoJLSBmb3IgQ0RNX0dFVEZJTEVQQVRIIHBhdGhzIGxpa2UgImRpclxmaWxlIiB3ZXJlIGhhbmRsZWQgaW5jb3JyZWN0bHkKCS0gZml4ZWQgbXVsdGlwbGUgcG90ZW50aWFsIGJ1ZmZlciBvdmVyZmxvd3MuCglGSUxFRExHOTVfT25PcGVuOiBmaXhlZCBhIHVzZSBvZiBzdHJuY3B5IHdpdGhvdXQgJ1wwJy4KCUZJTEVETEc5NV9TSEVMTF9OZXdGb2xkZXI6IHRoZSBzaXplIG9mIGxwc3RyQ2FwdGlvbiB3YXMgaW5jb3JyZWN0CglsZWFkaW5nIHRvIGEgYnVmZmVyIG92ZXJmbG93LgoKU2F0IERlYyAyNSAyMjo1ODo1OSAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogb2JqZWN0cy9lbmhtZXRhZmlsZS5jOiBQZXRlciBIdW5uaXNldHQgPGh1bm5pc2VAbm9ydGVsbmV0d29ya3MuY29tPgoJQWRkZWQgc3VwcG9ydCBmb3IgcGxheWluZyBtb3JlIHJlY29yZCB0eXBlcyAoc3RpbGwgbW9yZSB0byBjb21lKS4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglCZXR0ZXIgc3VwcG9ydCB2ZXJ5IGxvbmcgc3RyaW5ncyBieSBhdm9pZGluZyB0byBjb3B5IHRoZW0gaW4gYSBmaXhlZAoJc2l6ZSBidWZmZXIgKG9uZSBleGNlcHRpb24gcGFydGx5IHJlbWFpbnM6IGNhbGxiYWNrIHN0cmluZ3MpLgoJUmFpc2UgdGhlIGJ1ZmZlciBzaXplIHRvIDUxMiBjaGFyYWN0ZXJzLgoJTWVyZ2UgdGhlIGhhbmRsaW5nIG9mIGl0ZW0gMCBhbmQgb3RoZXIgaXRlbXMgdG9nZXRoZXIgaW4gR2V0SXRlbUEgdG8KCXJlZHVjZSBjb2RlIGR1cGxpY2F0aW9uLgoKCSogZ3JhcGhpY3MvcHNkcnYvYml0bWFwLmM6IEh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUZpeCBQU0RSVl9TdHJldGNoRElCaXRzIGZvciBub24taW50ZWdlciBieXRlIHNyYyB3aWR0aHMgKDEgJiA0YnBwKS4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUNhc3QgdGhlIHVuc2lnbmVkIGludCB0byBzaWduZWQsIG9yIE5FQVJfTUFUQ0ggd2lsbCBub3Qgd29yay4KCgkqIG1pc2MvY2Ryb20uYywgbXNkb3MvaW50MmYuYywgaW5jbHVkZS9jZHJvbS5oOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBmaXJzdC9sYXN0IHBsYXlhYmxlIGZyYW1lIHJlZmVyZW5jaW5nLgoKCSogaW5jbHVkZS9tbXN5c3RlbS5oLCBkbGxzL3dpbm1tL21jaWNkYS9tY2ljZGEuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgc29tZSBib2d1cyB2YWx1ZXMgaW4gTUNJX1NUQVRVUyBoYW5kbGluZyAocG9zaXRpb24gJiBsZW5ndGggb2YgdHJhY2tzKS4KCUFkZGVkIHN1cHBvcnQgZm9yIE1DSV9JTkZPIG9uIE1FRElBX1VQQyAmIE1FRElBX0lERU5USVRZIGNvbW1hbmRzLgoKCSogd2luZG93cy9yZWN0LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJVGVzdCBwb2ludGVycyBwYXNzZWQgdG8gY29weXJlY3QgZm9yIE5VTEwuCgoJKiB3aW5kb3dzL2RpYWxvZy5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCVJlc3RvcmUgZXJyb25lb3VzbHkgZGVsZXRlZCBsaW5lcy4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJRFBBX0RlbGV0ZVB0ciB3YXMgcmVzaXppbmcgdGhlIGFycmF5IHRvIGEgdG9vIHNtYWxsIHNpemUuCgoJKiB3aW5kb3dzL3dpbnBvcy5jOiBIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglBdm9pZCBpbmZpbml0ZSBsb29wIGluIFdJTlBPU19GaW5kSWNvblBvcyBpZiB0aGUgd2lkdGggb2YgdGhlIHBhcmVudAoJY2xpZW50IGFyZWEgaXMgbGVzcyB0aGFuIHRoZSBpY29uIHNwYWNpbmcuCgoJKiBkb2N1bWVudGF0aW9uL2xpbnV4LWZhdC1wZXJtaXNzaW9uczoKCVN0ZXZlbiBFbGxpb3R0IDxlbGxpb3RzbEBtaW5kc3ByaW5nLmNvbT4KCUFkZGVkIGEgZG9jdW1lbnQgdGhhdCBkZXNjcmliZXMgY29uZmlndXJpbmcgRkFUIGZpbGVzeXN0ZW0gcGVybWlzc2lvbnMKCWZvciBXaW5lLgoKCSogc2NoZWR1bGVyL3RocmVhZC5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCU5UIGFsbG9jYXRlcyBvbmUgcGFnZSBhcyBURUIuIFNvbWUgbmF0aXZlIE5ULWRsbHMgYXJlIHVzaW5nIHRoaXMuCgoJKiBncmFwaGljcy94MTFkcnYveGZvbnQuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglEb24ndCBza2lwIHVzYWJsZSBYIGZvbnRzLiBBZGQgc3VwcG9ydCBmb3Iga29pOCBmb250cy4KCgkqIGRsbHMvaWNtcC9pY21wX21haW4uYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglNb2RpZmllZCBJY21wQ2xvc2VIYW5kbGUgYW5kIEljbXBTZW5kRWNob1JlcXVlc3Qgc28gdGhhdCB3ZSBkb24ndAoJY3Jhc2ggaWYgdGhlIGhhbmRsZSBpcyBJTlZBTElEX0hBTkRMRV9WQUxVRS4KCgkqIGluY2x1ZGUvd2luZGVmLmg6IFN0ZXZlbiBFbGxpb3R0IDxlbGxpb3RzbEBtaW5kc3ByaW5nLmNvbT4KCUNoYW5nZWQgdGhlICJ0aGlzX2lzX2Ffc3ludGF4X2Vycm9yIiBlcnJvciBtZXNzYWdlIHRvIGEgbW9yZSBzcGVjaWZpYwoJZXJyb3IgbWVzc2FnZS4KCk1vbiBEZWMgMjAgMDQ6MTQ6NDggMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGdyYXBoaWNzL21ldGFmaWxlZHJ2L2dyYXBoaWNzLmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L2luaXQuYywgZ3JhcGhpY3MvcGFpbnRpbmcuYywgZ3JhcGhpY3MvcGF0aC5jLCBncmFwaGljcy90dHlkcnYvZ3JhcGhpY3MuYywgZ3JhcGhpY3MvdHR5ZHJ2L2luaXQuYywgZ3JhcGhpY3MveDExZHJ2L2dyYXBoaWNzLmMsIGdyYXBoaWNzL3gxMWRydi9pbml0LmMsIGluY2x1ZGUvZ2RpLmgsIGluY2x1ZGUvbWV0YWZpbGVkcnYuaCwgaW5jbHVkZS9wYXRoLmgsIGluY2x1ZGUvdHR5ZHJ2LmgsIGluY2x1ZGUveDExZHJ2Lmg6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglNb3ZlIEJlemllciBjb2RlIG91dCBvZiB4MTFkcnYgaW50byBjb21tbW9uIEdESSBjb2RlOyBpZiBhbnkgZHJpdmVyCglkb2VzIG5vdCBpbXBsZW1lbnQgUG9seUJlemllcltUb10gdGhlIGN1cnZlIGlzIGFwcHJveGltYXRlZCB0byBsaW5lcwoJYW5kIGRyYXduIHdpdGggUG9seWxpbmUuCglJbXBsZW1lbnQgbWFueSBHREktUGF0aCByZWNvcmRpbmcgZnVuY3Rpb25zIChhdCBsZWFzdCB0aGUgd2luOXggc3Vic2V0KS4KCUltcGxlbWVudCBGbGF0dGVuUGF0aCBhbmQgRmlsbFBhdGguCgoJKiBkbGxzL2RwbGF5eC9kcGxheXguc3BlYzogUGV0ZXIgSHVubmlzZXR0IDxodW5uaXNlQG5vcnRlbG5ldHdvcmtzLmNvbT4KCUZpeGVkIG9yZGluYWwgbnVtYmVyaW5nIGFuZCBhZGRlZCBuZXcgc3BlYyBzdHViLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW46IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUmVhZGRlZCBYcG0gYXV0b2NvbmYgY2hlY2tzLgoKCSogb2xlL29sZTJubHMuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCUVudW1TeXN0ZW1Mb2NhbGVzQSBzaG91bGQgbG9vayBmb3IgcmVnaXN0cnkgdmFsdWVzLCBub3Qgc3Via2V5cy4KCgkqIGRsbHMvd25hc3BpMzIvd2luYXNwaTMyLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJU21hbGwgZml4IHRvIGdldCBHRVRfREVWSUNFX1RZUEUgd29ya2luZyAodmVyaWZpZWQgYnkgRGFuIEtlZ2VsKS4KCgkqIGRsbHMvY29tY3RsMzIvdHJhY2tiYXIuYzogSWFuIFNjaG1pZHQgPGlzY2htaWR0QGNmbC5yci5jb20+CglDb3JyZWN0ZWQgYmFja2dyb3VuZCBjb2xvciBhbmQgZml4ZWQgbGVha2luZyBHREkgYnJ1c2guCgoJKiBtaXNjL3JlZ2lzdHJ5LmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJTlQgbG9hZGVyOiBkb24ndCBzdG9wIGxvYWRpbmcgYSBoaXZlIHdoZW4gYW4gZXJyb3Igb2NjdXJzLgoKCSogb2JqZWN0cy9tZXRhZmlsZS5jOiBIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglQbGF5TWV0YUZpbGUgYW5kIEVudW1NZXRhRmlsZSBzaG91bGQgd29yayBpZiB0aGUgaGRjIGlzIGEKCShlbmgpbWV0YWZpbGUgREMuCgoJKiBSRUFETUU6IEp1ZXJnZW4gTG9jayA8bm94QGplbGFsLmtuLWJyZW1lbi5kZT4KCVVwZGF0ZWQgdGhlIEZyZWVCU0Qgbm90ZXMsIHRoZSBMRFQgcGF0Y2ggZmluYWxseSBtYWRlIGl0IGludG8gLWN1cnJlbnQuCgoJKiBkbGxzL2NvbW1kbGcvZmlsZXRpdGxlLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJSWYgbHBUaXRsZT09TlVMTCBhbmQgY2JCdWY9PTAgdGhlbiB3ZSBtdXN0IHJldHVybiB0aGUgcmVxdWlyZWQgYnVmZmVyCglzaXplLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMi5zcGVjLCBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmMsIGluY2x1ZGUvY29tbWN0cmwuaDoKCVNoYXVuIE1vcnJpcyA8c2hhdW5AYmx1ZW5lcHR1bmUuY29tPgoJSW1wbGVtZW50ZWQgX1RyYWNrTW91c2VFdmVudCBmb3IgdGhlIFRNRV9MRUFWRSBmbGFnLgoKCSogZ3JhcGhpY3MvZGRyYXcuYywgZ3JhcGhpY3MvZGRyYXdfcHJpdmF0ZS5oOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUFkZHMgcmVzb2x1dGlvbiAvIGRlcHRoIHN3aXRjaGluZyB3aXRoIERHQSAyLjAuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClN1biBEZWMgMTIgMjE6Mjg6NDQgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MveDExZHJ2L2V2ZW50LmM6IExpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglGaXhlZCBoYW5kbGluZyBvZiBER0EyLjAga2V5Ym9hcmQgZXZlbnRzLgoKCSogZGxscy9tc2FjbTMyL2RyaXZlci5jLCBkbGxzL21zYWNtMzIvaW50ZXJuYWwuYywgZGxscy9tc2FjbTMyL21zYWNtMzJfbWFpbi5jLCBkbGxzL21zYWNtMzIvd2luZWFjbS5oOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCB0aGUgYWJpbGl0eSB0byBvcGVuIHNldmVyYWwgc3RyZWFtcyBvbiB0aGUgc2FtZSBkcml2ZXIuCglBZGRlZCBhIGZldyBhY21NZXRyaWNzIG9wdGlvbnMuCgoJKiBkbGxzL29sZWF1dDMyL29sZTJkaXNwLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJU3lzU3RyaW5nTGVuIGNhbiBnZXQgYSBOVUxMIHBvaW50ZXIgKGFuZCBzaGFsbCByZXR1cm4gMCkuCgoJKiBkbGxzL3dpbm1tL21tc3lzdGVtLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJTm93IHVzaW5nIG5vdGlmaWNhdGlvbiBmb3IgZGV0ZWN0aW5nIHdoZW4gYSBXQVZFSERSIGhhcyBiZWVuIHBsYXllZAoKCSogZGxscy93aW5tbS9tY2l3YXZlL21jaXdhdmUuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglFbmhhbmNlZCBzeW5jaHJvbml6YXRpb24gYmV0d2VlbiBwbGF5YmFjayB0aHJlYWQgYW5kIHN0b3AvY2xvc2UgY29tbWFuZHMKCU5vdyB1c2luZyBub3RpZmljYXRpb24gZm9yIGRldGVjdGluZyB3aGVuIGEgV0FWRUhEUiBoYXMgYmVlbiBwbGF5ZWQKCgkqIGNvbnRyb2xzL2NvbWJvLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJQ29tYm9Cb3ggc2hvdWxkIG5vdCBzZW5kIGJvZ3VzIG1lc3NhZ2VzIHRvIGVkaXQgYnVkZHkgYW5kIHRvIGl0c2VsZi4KCgkqIGZpbGVzL2Rvc19mcy5jOiBQZXRlciBHYW50ZW4gPHBldGVyQGdhbnRlbi5vcmc+CglGaXhlZCBHZXRTaG9ydFBhdGhOYW1lQS4KCgkqIE1ha2VmaWxlLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCU1vc2VzIERlSm9uZyA8ZGVqb25nQGNzLnVtbi5lZHU+CglGaXhlZCBtaXNzaW5nIGxpYndpbmUuc28gc3ltbGluayBkdXJpbmcgaW5zdGFsbC4gU2V0IHRoZSBydW50aW1lCglsaW5rZXIgcGF0aC4KCgkqIHdpbmRvd3MvZGlhbG9nLmM6IE11cmFsaSBQYXR0YXRoZQoJR2V0TmV4dERsZ0dyb3VwSXRlbTogbmVlZHMgdG8gY2hlY2sgdGhlIGNvbnRyb2wgcGFyZW50IGlzIHRoZSBtYWluIGRpYWxvZy4KCUdldE5leHRUYWJJdGVtOiBtYWtlIHN1cmUgdGhpcyBjb250cm9sIGlzIHZpc2libGUgYW5kIG5vdCBkaXNhYmxlZC4KCgkqIGxvYWRlci9tb2R1bGUuYzoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUZpeGVkIGNtZCBsaW5lIGxlbmd0aCBjYWxjdWxhdGlvbi4KCgkqIGluY2x1ZGUveDExZHJ2LmgsIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIGdyYXBoaWNzL2RkcmF3LmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSBhZGRlZCBzdXBwb3J0IG9mIERHQS0yLjAgZXZlbnRzCgktIGZpeGVkIHRoZSBsZWF2aW5nIG9mIERHQS0yLjAgbW9kZQoKCSogY29udHJvbHMvbWVudS5jLCBpbmNsdWRlL21lbnUuaCwgd2luZG93cy93aW5wcm9jLmM6CglSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJSW4gd2luMzIgYSBXTV9NRU5VU0VMRUNUIG1lc3NhZ2Ugc2hvdWxkIGNvbnRhaW4gdGhlIHBvc2l0aW9uIHdoZW4gdGhlCglpdGVtIHJlZmVycyB0byBhIHN1Ym1lbnUsIG5vdCB0aGUgc3VibWVudSdzIGhhbmRsZSBhcyBpbiB3aW4xNi4KCgkqIGZpbGVzL3RhcGUuYzogSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJRml4ZWQgYXJnIHR5cGVzIG9mIEZJWE1Fcy4KCgkqIHdpbmRvd3MvbWRpLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQ2hlY2sgZm9yIHBhc3NlZCBpbnZhbGlkIHdpbmRvdyBoYW5kbGUgaW4gRGVmTURJQ2hpbGRQcm9jKi4KCgkqIGRsbHMvd2lubW0vbW1zeXN0ZW0uYzogSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJRml4IG5vLiBvZiBhcmd1bWVudHMgaW4gYSBXQVJOIHN0YXRlbWVudC4KCgkqIG9iamVjdHMvdGV4dC5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFsbG93cyBEcmF3VGV4dCgxNnxBfFcpIHRvIGdldCBhIE5VTEwgc3RyaW5nIGFzIHBhcmFtZXRlci4KCgkqIHNjaGVkdWxlci9wcm9jZXNzLmMsIGRsbHMvYWR2YXBpMzIvc2VydmljZS5jLCBkbGxzL2NvbWN0bDMyL2RhdGV0aW1lLmMsIGRsbHMvY29tY3RsMzIvdGFiLmMsIGRsbHMvZHBsYXl4L2RwbGF5LmMsIGdyYXBoaWNzL3R0eWRydi9vYmplY3RzLmM6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglGaXhlZCBjb21waWxlciB3YXJuaW5ncy4KCgkqIGNvbnRyb2xzL2xpc3Rib3guYywgbWlzYy9yZWdpc3RyeS5jLCBtaXNjL3ZlcnNpb24uYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUmVtb3ZlZCAyIHVzZWxlc3MgaW5jbHVkZSB3aW52ZXJzaW9uLmgKCURvIG5vdCBtYWtlIGF1dG9kZXRlY3RlZCB2ZXJzaW9uIGZpeCBvbiBmaXJzdCBjYWxscyBpZiBpdCBpcyBXaW4zMS4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCUFkZGVkIFN0ck5DcHlBLCBTdHJOQ3B5Vy4KCgkqIHdpbmRvd3Mvd2lucHJvYy5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCU1lc3NhZ2UgdHJhbnNsYXRpb24gV01fQ1JFQVRFIGZpeGVkLgoKU2F0IERlYyAxMSAyMzo1Njo0NyAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogcmVsYXkzMi9idWlsdGluMzIuYywgTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL29kYmMzMi8uY3ZzaWdub3JlLCBkbGxzL29kYmMzMi9NYWtlZmlsZS5pbiwgZGxscy9vZGJjMzIvb2RiYzMyLnNwZWMsIGRsbHMvb2RiYzMyL3Byb3h5b2RiYy5jLCBkbGxzL29kYmMzMi9wcm94eW9kYmMuaCwgaW5jbHVkZS9kZWJ1Z2RlZnMuaCwgaW5jbHVkZS9zcWwuaCwgaW5jbHVkZS9zcWxleHQuaCwgaW5jbHVkZS9zcWx0eXBlcy5oLCBsb2FkZXIvbG9hZG9yZGVyLmM6CglYaWFuZyBMaQoJSW1wbGVtZW50YXRpb24gb2YgYSBwcm94eSBPREJDMzIgZGxsLgoKCSogd2luZG93cy94MTFkcnYvd25kLmMsIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBkbGxzL3NoZWxsMzIvc3lzdHJheS5jLCBpbmNsdWRlL3dpbnVzZXIuaCwgaW5jbHVkZS94MTFkcnYuaCwgd2luZG93cy9ub25jbGllbnQuYzoKCUthaSBNb3JpY2ggPGthaS5tb3JpY2hAYmlnZm9vdC5kZT4KCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgc3lzdHJheSBzdXBwb3J0LgoJU3dhbGxvdyB0aGUgd2luZG93cyBzeXN0cmF5IGljb25zIGludG8ga3BhbmVsIHN5c3RyYXkgaWYgS0RFL0tXTSBpcwoJcnVubmluZy4KCgkqIGRvY3VtZW50YXRpb24vd2luZS5jb25mLm1hbi5pbiwgbWlzYy9yZWdpc3RyeS5jLCB3aW5lLmluaToKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJQWRkZWQgbG9hZGVyIGZvciBOVCByZWdpc3RyeSBmaWxlcy4KCgkqIGRsbHMvbnRkbGwvbnQuYywgaW5jbHVkZS9udHNlY2FwaS5oLCBpbmNsdWRlL3dpbm50LmgsIGRsbHMvYWR2YXBpMzIvYWR2YXBpMzIuc3BlYywgZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglTdHVicyBmb3IgTHNhRnJlZU1lbW9yeSwgTHNhUXVlcnlJbmZvcm1hdGlvblBvbGljeSwgTHNhQ2xvc2UuCglTbWFsbCBmaXhlcy4KCgkqIGluY2x1ZGUvd2luZ2RpLmgsIG9iamVjdHMvZW5obWV0YWZpbGUuYywgb2JqZWN0cy9yZWdpb24uYywgcmVsYXkzMi9nZGkzMi5zcGVjOgoJUGV0ZXIgSHVubmlzZXR0IDxodW5uaXNlQG5vcnRlbG5ldHdvcmtzLmNvbT4KCS0gSW1wbGVtZW50ZWQgR2V0RW5oTWV0YUZpbGVQYWxldHRlRW50cmllcwoJLSBBZGRlZCBmaXhtZSBzdHVicyBmb3IgU2V0TWV0YVJnbiBhbmQgR2V0TWV0YVJnbgoJLSBBZGRlZCBzdXBwb3J0IGZvciBwbGF5aW5nIHNldmVyYWwgZW5oYW5jZWQgbWV0YWZpbGUgcmVjb3JkcwoJLSBBZGRlZCBiZWdpbm5pbmdzIG9mIGltcGxlbWVudGF0aW9uIGZvciBwbGF5aW5nIHRoZSByZXN0IG9mIHRoZQoJICBlbmhhbmNlZCBtZXRhZmlsZSByZWNvcmRzCgoJKiBncmFwaGljcy90dHlkcnYvTWFrZWZpbGUuaW4sIGdyYXBoaWNzL3R0eWRydi9iaXRtYXAuYywgZ3JhcGhpY3MvdHR5ZHJ2L2JydXNoLmMsIGdyYXBoaWNzL3R0eWRydi9jbGlwcGluZy5jLCBncmFwaGljcy90dHlkcnYvZGMuYywgZ3JhcGhpY3MvdHR5ZHJ2L2RpYi5jLCBncmFwaGljcy90dHlkcnYvZm9udC5jLCBncmFwaGljcy90dHlkcnYvZ3JhcGhpY3MuYywgZ3JhcGhpY3MvdHR5ZHJ2L2luaXQuYywgZ3JhcGhpY3MvdHR5ZHJ2L29iamVjdHMuYywgZ3JhcGhpY3MvdHR5ZHJ2L29lbWJpdG1hcC5jLCBncmFwaGljcy90dHlkcnYvcGFsZXR0ZS5jLCBncmFwaGljcy90dHlkcnYvcGVuLmMsIGdyYXBoaWNzL3R0eWRydi90ZXh0LmMsIGluY2x1ZGUvdHR5ZHJ2LmgsIHdpbmRvd3MvdHR5ZHJ2L21haW4uYywgd2luZG93cy90dHlkcnYvbW9uaXRvci5jLCB3aW5kb3dzL3R0eWRydi93bmQuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJSW1wcm92ZWQgdGhlIFRUWSBkcml2ZXIuCgoJKiBmaWxlcy9maWxlLmM6IFBldGVyIEdhbnRlbiA8cGV0ZXJAZ2FudGVuLm9yZz4KCVJldHVybiBhbiBlcnJvciBpZiBscE92ZXJsYXBwZWQgaXMgcHJvdmlkZWQgdG8gUmVhZEZpbGUgLyBXcml0ZUZpbGUuCgoJKiBtaXNjL3dzcHJpbnRmLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRG8gbm90IGNvbmZ1c2UgdGhlIDAgZmlsbCBtYWdpYyBvZiB3c3ByaW50ZiB3aXRoIHRoZSAiMHgiIGhleCBwcmVmaXguCgoJKiBkbGxzL3dpbm1tL21tc3lzdGVtLmMsIGRsbHMvd2lubW0vd2F2ZW1hcC93YXZlbWFwLmM6CglCcmFkbGV5IEJhZXR6IDxiYmFldHpAc3R1ZGVudC51c3lkLmVkdS5hdT4KCVRoZSB3YXZlbWFwIGRyaXZlciB3YXNuJ3QgcGFzc2luZyB0aGUgY2FsbGJhY2sgdHlwZSB0byB0aGUKCURyaXZlckNhbGxiYWNrIHJvdXRpbmUgY29ycmVjdGx5LgoKCSogZmlsZXMvdGFwZS5jOiBBZGRlZCBtaXNzaW5nIFdJTkFQSXMuCgoJKiB3aW5kb3dzL3N5c2NvbG9yLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSWYgd2UgaGF2ZSByZWdpc3RyeSBlbnRyaWVzLCB1c2UgdGhlbS4gTmV2ZXIgbWluZCB3aGljaCB2ZXJzaW9uIHdlCglhdXRvZGV0ZWN0ZWQuCgoJKiBkbGxzL29sZWF1dDMyL29sZWF1dDMyLnNwZWMsIG1pc2MvcG9ydC5jLCB0b29scy9iaW4ycmVzLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgaXNzdWVzIGZvdW5kIGJ5IHdpbmFwaV9jaGVjay4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay93aW4xNi9kaXNwbGF5LmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjE2YXBpLmRhdCwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyYXBpLmRhdCwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaS5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9jaGVjaywgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9sb2NhbC5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9wYXJzZXIucG06CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCU1pbm9yIGZpeGVzIGFuZCBhZGRpdGlvbnMuCgoJKiBsb2FkZXIvbmUvcmVzb3VyY2UuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBBZGRlZCBtaXNzaW5nICdyZXR1cm4nIHN0YXRlbWVudC4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJU21hbGwgZml4ZXMuCgpGcmkgRGVjIDEwIDAzOjQ3OjE0IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3F1ZXVlLmgsIHdpbmRvd3MvZGlhbG9nLmMsIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL25vbmNsaWVudC5jLCB3aW5kb3dzL3F1ZXVlLmMsIGNvbnRyb2xzL21lbnUuYywgaW5jbHVkZS9tZXNzYWdlLmg6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVBlcmZvcm0gMTYvMzJBLzMyVyBtZXNzYWdlIG1hcHBpbmcgZm9yIHBvc3RlZCBtZXNzYWdlcy4KCgkqIGZpbGVzL01ha2VmaWxlLmluLCBmaWxlcy90YXBlLmMsIGluY2x1ZGUvZGVidWdkZWZzLmgsIHJlbGF5MzIva2VybmVsMzIuc3BlYzoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJSmFtZXMgQWJiYXRpZWxsbyA8YWJiZXlqQHdwaS5lZHU+CglBZGRlZCBzdHVicyBmb3IgdGhlIFdpbk5UIHRhcGUgYmFja3VwIGZ1bmN0aW9ucy4KCgkqIGRlYnVnZ2VyL21zYy5jLCBkZWJ1Z2dlci9zb3VyY2UuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJUGFyc2UgQ29kZVZpZXcgdHlwZS9zeW1ib2wgaW5mbyB3aXRoIDMyLWJpdCB0eXBlIGluZGljZXMuCglBZGRlZCAocGFydGlhbCkgc3VwcG9ydCBmb3IgVkMgNS82IC5QREIgZmlsZXMuCglGaXhlZCB0cmVhdG1lbnQgb2Ygc291cmNlIGZpbGUgbmFtZXMgY29udGFpbmluZyBwYXRoLgoKCSogc2VydmVyL3JlZ2lzdHJ5LmM6IFVscmljaCBDemVrYWxsYSA8dWxyaWNoY0Bjb3JlbC5jYT4KCUZpeGVkIG9mZi1ieS1vbmUgZXJyb3IuCgoJKiBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IFNob3cgbWFpbiB3aW5kb3cgaWYgQ3JlYXRlUHJvY2VzcyB3YXMgY2FsbGVkIHdpdGhvdXQgdGhlCglTVEFSVEZfVVNFU0hPV1dJTkRPVyBmbGFnLgoKCSogbG9hZGVyL3BlX2ltYWdlLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUltcGxlbWVudGVkIFBFX1VubG9hZExpYnJhcnkoKS4KCgkqIGluY2x1ZGUvZGlucHV0LmgsIHdpbmRvd3MvZGlucHV0LmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSBkbyBub3QgbG9vc2UgaW5pdGlhbCBhdXRvLXJlcGVhdCBzdGF0dXMgd2hlbiBhY3F1aXJpbmcgdGhlIGtleWJvYXJkIG1vcmUKCSAgdGhhbiBvbmUgdGltZQoJLSBzdXBwb3J0IG9mIERpcmVjdFggNydzIERJTU9VU0VTVEFURTIgc3RydWN0dXJlCgoJKiBkbGxzL250ZGxsL250LmMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYzoKCU1hcmN1cyBNZWlzc25lciA8TWFyY3VzLk1laXNzbmVyQGxzdC5kZT4KCUFkZGVkIE50UG93ZXJJbmZvcm1hdGlvbiBzdHViLgoKCSogZGxscy9vbGUzMi9iaW5kY3R4LmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJVHJhbnNmZXIgb25seSBjYlN0cnVjdCBzaXplIGluIEJpbmRDdHhJbXBsX1MoRylldE9wdGlvbnMuCgpXZWQgRGVjICA4IDAzOjU2OjM0IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jLCB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy9ub25jbGllbnQuYywgd2luZG93cy9wYWludGluZy5jLCB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL2tleWJvYXJkLmMsIHNjaGVkdWxlci9jcml0c2VjdGlvbi5jLCBzY2hlZHVsZXIvZGVidWdnZXIuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgd2luMzIva2VybmVsMzIuYywgd2luMzIvbmV3Zm5zLmMsIG1zZG9zL2Rvc21lbS5jLCBvYmplY3RzL2JpdG1hcC5jLCBvYmplY3RzL2NsaXBwaW5nLmMsIG9iamVjdHMvZm9udC5jLCBvbGUvb2xlMm5scy5jLCBsb2FkZXIvZWxmZGxsLmMsIGxvYWRlci9tb2R1bGUuYywgbG9hZGVyL3BlX2ltYWdlLmMsIGxvYWRlci9yZXNvdXJjZS5jLCBsb2FkZXIvdGFzay5jLCBtZW1vcnkvaW5zdHIuYywgbWVtb3J5L2xvY2FsLmMsIG1pc2MvcmVnaXN0cnkuYywgZ3JhcGhpY3MvYml0Ymx0LmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L29iamVjdHMuYywgZ3JhcGhpY3MveDExZHJ2L2RpYi5jLCBpZjE2MzIvdGh1bmsuYywgZmlsZXMvZGlyZWN0b3J5LmMsIGZpbGVzL2Rvc19mcy5jLCBmaWxlcy9kcml2ZS5jLCBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvc2hlbGwuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYywgZGxscy90YXBpMzIvbGluZS5jLCBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYywgZGxscy9jb21jdGwzMi9mbGF0c2IuYywgZGxscy9vbGUzMi9zdG9yYWdlLmMsIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jLCBkbGxzL2FkdmFwaTMyL2NyeXB0LmMsIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYywgZGxscy9hdmlmaWwzMi9hdmlmaWxlLmMsIGNvbnRyb2xzL2VkaXQuYzoKCURpbWl0cmllIE8uIFBhdW4gPGRpbWlAY3MudG9yb250by5lZHU+CglNYWtlIHVzZSBvZiB0aGUgREVGQVVMVF9ERUJVR19DSEFOTkVMIHdoZXJlIGFwcHJvcHJpYXRlLgoJVXNlIHRoZSBkZWZhdWx0IHZlcnNpb24gb2YgRklYTUUsIEVSUiwgV0FSTiwgVFJBQ0UgZm9yIHRoZSBkZWZhdWx0CgljaGFubmVsLgoKCSogaW5jbHVkZS9tb2R1bGUuaCwgbG9hZGVyL21vZHVsZS5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglEZWxheSBzZW5kaW5nIGRlYnVnIGV2ZW50cyB1bnRpbCBwcm9jZXNzIGluaXRpYWxpemF0aW9uIGlzIGNvbXBsZXRlLgoKCSogZG9jdW1lbnRhdGlvbi9zdGF0dXMvbXVsdGltZWRpYTogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglVcGRhdGVkLCBhZGRlZCBjaGFwdGVyIG9uIGNvbmZpZ3VyYXRpb24gYW5kIGFyY2hpdGVjdHVyZS4KCgkqIGRsbHMvd2lubW0vbW1pby5jOiBCcmFkbGV5IEJhZXR6IDxiYmFldHpAc3R1ZGVudC51c3lkLmVkdS5hdT4KCS0gRml4IE1NSU9fe09wZW4sUmVuYW1lfSB0byBjaGVjayB0aGUgZmlsZW5hbWUgKG9mIHRoZSBmb3JtCgkgIGZpbGUuZXh0K0FCQykgZm9yIHRoZSBjb3JyZWN0IG1taW8gcHJvY2VkdXJlIHRvIHVzZS4KCS0gbW1pb1N0cmluZ1RvRk9VUkNDIG5vdyBjb252ZXJ0cyB0byB1cHBlcmNhc2UgaWYgYXNrZWQgdG8sIGFuZCBoYW5kbGVzCgkgIHN0cmluZ3Mgb2YgbGVuZ3RoIDwgNC4KCgkqIGNvbnRyb2xzL2VkaXQuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglGaXggcHJvYmxlbSB3aXRoIEVOX1VQREFURSBub3RpZmljYXRpb24gc2VudCBieSBlZGl0IGNvbnRyb2wuCgpNb24gRGVjICA2IDAxOjIwOjAxIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL21vdXNlLy5jdnNpZ25vcmUsIGRsbHMvbW91c2UvTWFrZWZpbGUuaW4sIGRsbHMvbW91c2UvbW91c2Uuc3BlYywgZGxscy9tb3VzZS9tb3VzZV9tYWluLmMsIGRsbHMvbW91c2UvbW91c2VyYy5yYywgZG9jdW1lbnRhdGlvbi9yZXNvdXJjZXMsIGlmMTYzMi8uY3ZzaWdub3JlLCBpZjE2MzIvZGlzcGxheS5zcGVjLCBpZjE2MzIvbW91c2Uuc3BlYywgaWYxNjMyL01ha2VmaWxlLmluLCBpZjE2MzIvYnVpbHRpbi5jLCBsb2FkZXIvbmUvcmVzb3VyY2UuYywgd2luZG93cy9kaXNwbGF5LmMsIHdpbmRvd3MvbW91c2UuYywgd2luZG93cy9NYWtlZmlsZS5pbiwgTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2Rpc3BsYXkvLmN2c2lnbm9yZSwgZGxscy9kaXNwbGF5L01ha2VmaWxlLmluLCBkbGxzL2Rpc3BsYXkvZGlzcC5yYywgZGxscy9kaXNwbGF5L2Rpc3BsYXkuc3BlYywgZGxscy9kaXNwbGF5L2Rpc3BsYXlfbWFpbi5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglBZGRlZCAucmMgZmlsZSBzdXBwb3J0IGZvciBXaW4xNiBORSBtb2R1bGVzLgoJTW92ZWQgZGlzcGxheS5jIGFuZCBtb3VzZS5jIHRvIHNlcGFyYXRlIGRsbCBkaXJlY3Rvcmllcy4KCgkqIGNvbnRyb2xzL2NvbWJvLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJQWxsb3cgdG8gZGVzZWxlY3QgYWxsIGl0ZW1zIGJ5IHNlbmRpbmcgQ0JfU0VUQ1VSU0VMKC0xKSB0byB0aGUgY29tYm8uCgpTdW4gRGVjICA1IDIzOjU0OjA0IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL3BhaW50aW5nLmMsIGdyYXBoaWNzL2VuaG1ldGFmaWxlZHJ2L2RjLmMsIGdyYXBoaWNzL2VuaG1ldGFmaWxlZHJ2L2dyYXBoaWNzLmMsIGdyYXBoaWNzL2VuaG1ldGFmaWxlZHJ2L2luaXQuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvZGMuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvZ3JhcGhpY3MuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvaW5pdC5jLCBncmFwaGljcy9wc2Rydi9ncmFwaGljcy5jLCBncmFwaGljcy9wc2Rydi9pbml0LmMsIGdyYXBoaWNzL3R0eWRydi9ncmFwaGljcy5jLCBncmFwaGljcy90dHlkcnYvaW5pdC5jLCBncmFwaGljcy93aW4xNmRydi9pbml0LmMsIGdyYXBoaWNzL3gxMWRydi9ncmFwaGljcy5jLCBncmFwaGljcy94MTFkcnYvaW5pdC5jLCBpbmNsdWRlL2VuaG1ldGFmaWxlZHJ2LmgsIGluY2x1ZGUvZ2RpLmgsIGluY2x1ZGUvbWV0YWZpbGVkcnYuaCwgaW5jbHVkZS9wYXRoLmgsIGluY2x1ZGUvcHNkcnYuaCwgaW5jbHVkZS90dHlkcnYuaCwgaW5jbHVkZS94MTFkcnYuaCwgZ3JhcGhpY3MvcGFpbnRpbmcuYywgZ3JhcGhpY3MvcGF0aC5jOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJRml4ZXMgc2V2ZXJhbCBidWdzIGluIGdkaSBwYXRoIGhhbmRsaW5nLgoJQWRkcyAqUGF0aCBmdW5jdGlvbnMgdG8gZGMgZnVuY3MgdGFibGUgKyBhZGQgRW5oTWV0YUZpbGUgcmVjb3JkaW5nLgoJU2VwYXJhdGUgb3V0IFBvbHlsbmUvUG9seWxpbmVUbyBhbmQgUG9seUJlemllci9Qb2x5QmV6aWVyVG8gaW4gZGMKCWZ1bmNzIHRhYmxlIHRvIGVuYWJsZSBwcm9wZXIgZW5obWV0YWZpbGUgcmVjb3JkaW5nLgoJVGhlIGN1cnJlbnQgcG9zaXRpb24gdXBkYXRlIGluICpUbyBmdW5jdGlvbnMgaXMgbm93IGhhbmRsZWQgYnkgdGhlCgltYWluIGZ1bmN0aW9uIGFuZCBub3QgaW4gdGhlIGRyaXZlcnMuCglNb3ZlIFVTRVIgZnVuY3Rpb25zIGZyb20gZ3JhcGhpY3MvcGFpbnRpbmcuYyAtPiB3aW5kb3dzL3BhaW50aW5nLmMKCgkqIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL29sZTIuYywgZGxscy9vbGVhdXQzMi9vbGVhdXQuYywgZGxscy9vbGVhdXQzMi90eXBlbGliLmMsIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5zcGVjLCBpbmNsdWRlL29sZTJ2ZXIuaCwgbWlzYy92ZXJzaW9uLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCS0gdGhlIE9MRSB2ZXJzaW9uIHJldHVybmVkIHdhcyB0b28gbG93CgktIHJlbmFtZWQgT0FCdWlsZFZlcnNpb24xNiB0byBPYUJ1aWxkVmVyc2lvbjE2CgktIHNwZWxsaW5nIGZpeGVzCgoJKiBmaWxlcy9kcml2ZS5jOiBQZXRlciBHYW50ZW4gPHBldGVyQGdhbnRlbi5vcmc+CglGaXggR2V0Q3VycmVudERpcmVjdG9yeUEgYW5kIFcgdG8gcmV0dXJuIHRoZSBuZWVkZWQgc3BhY2UgZm9yIHRoZSBDV0QsCglpZiB0aGUgYnVmZmVyIHNpemUgaXMgbm90IGxhcmdlIGVub3VnaC4KCgkqIGNvbnRyb2xzL2J1dHRvbi5jLCB3aW5kb3dzL2RpYWxvZy5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglSZW1vdmUgaGFjayBmb3Iga2V5Ym9hcmQgbWVzc2FnZXMgaW4gZGlhbG9ncy4KCgkqIHdpbjMyL2RldmljZS5jOiBJYW4gU2NobWlkdCA8aXNjaG1pZHRAY2ZsLnJyLmNvbT4KCVN0dWJzIGZvciBWTU0gR2V0RGVtYW5kUGFnZUluZm8gZnVuY3Rpb24gYW5kIFZXaW4zMiAiR2V0IFZNQ1BEIFZlcnNpb24iLgoJSW1wbGVtZW50YXRpb24gZm9yIFZXaW4zMiBJbnQzMS9EUE1JIGRpc3BhdGNoIGNhbGwuCglGaXhlZCAiZGFuZ2xpbmcgZWxzZSIgY29tcGlsZXIgd2FybmluZy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglXaGVuZXZlciB3ZSBkbyBhbiBzdHJuY3B5IHdlIHNob3VsZCBtYWtlIHN1cmUgd2UgcHV0IGEgJ1wwJyBhdCB0aGUgZW5kCglvZiB0aGUgYnVmZmVyLgoKCSogaW5jbHVkZS90b29saGVscC5oLCBtaXNjL3Rvb2xoZWxwLmMsIHJlbGF5MzIva2VybmVsMzIuc3BlYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJQWRkZWQgVGhyZWFkMzJGaXJzdC9OZXh0IHN0dWJzLgoKCSogaW5jbHVkZS90aHJlYWQuaDogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglNb3ZlZCB3aW5lc2VydmVyJ3MgYnVmZmVyICYgYnVmZmVyX3NpemUgYXQgdGhlIGVuZCBvZiBURUIgc28gdGhhdCBJRQoJZG9lc24ndCBvdmVyd3JpdGUgdGhlbS4KCgkqIGRsbHMvd2lubW0vbWNpd2F2ZS9tY2l3YXZlLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgbWNpSW5mby4KCgkqIGRsbHMvd2lubW0vd2F2ZW1hcC93YXZlbWFwLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgc3VwcG9ydCBmb3IgV0FWRV9GT1JNQVRfUVVFUlkgZmxhZyBpbiB3b2RPcGVuLgoKCSogZGxscy9tc2FjbTMyL3N0cmVhbS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUNvcnJlY3RseSBpbXBsZW1lbnQgQUNNX1NUUkVBTU9QRU5GX1FVRVJZIGZsYWcgaW4gYWNtT3BlblN0cmVhbS4KCgkqIGRsbHMvd2lubW0vbWNpLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgTUNJX09QRU4gY29tbWFuZCBmb3IgdHlwZXMgbGlrZSAiQ0RBVURJTyFIOiIuCgoJKiBncmFwaGljcy9kZHJhd19wcml2YXRlLmgsIGdyYXBoaWNzL2RkcmF3LmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU1lcmdlZCBfYWxsXyBscENsaXBwZXIgaW50byBjb21tb25fc3VyZmFjZS4KCUFkZCBOVUxMIHB0ciBjaGVjayB0byBTZXRDbGlwcGVyLgoJU29tZSBtb3JlIGRlYnVnIG91dHB1dC4KCgkqIGluY2x1ZGUvY29uZmlnLmguaW4sIG1pc2MvcG9ydC5jLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJVXNlIHRoZSByZWFsIGdsaWJjIG9wZW5wdHkgaWYgcHJlc2VudC4KCgkqIGxvYWRlci9uZS9zZWdtZW50LmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgdHlwZWRlZiB0byBpbnN1cmUgY29tcGlsYXRpb24gb24gYWxsIGdjYyZlZ2NzIHZlcnNpb25zLgoKCSogbWlzYy9yZWdpc3RyeS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIF9jb3B5X3JlZ2lzdHJ5KCkuCgoJKiBpbmNsdWRlL3dpbm5scy5oLCBvbGUvbmxzL2VzYS5ubHMsIG9sZS9ubHMvZXNjLm5scywgb2xlL25scy9lc2QubmxzLCBvbGUvbmxzL2VzZy5ubHMsIG9sZS9ubHMvZXNtLm5scywgb2xlL25scy9lc24ubmxzLCBvbGUvbmxzL2VzcC5ubHM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCUFkZGVkIHNvbWUgY29uc3RhbnRzIGZvciBTcGFuaXNoLgoKCSogaW5jbHVkZS9tb2R1bGUuaCwgbG9hZGVyL25lL21vZHVsZS5jLCBsb2FkZXIvbmUvc2VnbWVudC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IENhbGwgRGxsRW50cnlQb2ludCBmb3IgKmV2ZXJ5KiBwcm9jZXNzIHRoYXQgbG9hZHMgdGhlIERMTCwgbm90CglqdXN0IGZvciB0aGUgZmlyc3Qgb25lLgoJQnlwYXNzIDMyLT4xNi0+MzIgdHJhbnNpdGlvbiB3aGVuIGNhbGxpbmcgRGxsRW50cnlQb2ludCBvZiBidWlsdC1pbi4KCgkqIGlmMTYzMi91c2VyLnNwZWMsIHdpbmRvd3MvdXNlci5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBZGRlZCBVU0VSLkRsbEVudHJ5UG9pbnQoKS4KCgkqIGlmMTYzMi90aHVuay5jLCBpbmNsdWRlL3Byb2Nlc3MuaCwgbG9hZGVyL3Rhc2suYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2NoZWR1bGVyL3RocmVhZC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglDYWxsIDE2LWJpdCBpbnN0ZWFkIG9mIDMyLWJpdCBVc2VyU2lnbmFsUHJvYyBlbnRyeSBwb2ludC4KCURvbid0IGxvYWQgVVNFUjMyLkRMTCB1bmxlc3MgcmVxdWVzdGVkIGJ5IHRoZSBwcm9ncmFtLgoJQnVnZml4OiBQYXNzIHRoZSBjb3JyZWN0IHRocmVhZCBJRCB0byBVc2VyU2lnbmFsUHJvYy4KCgkqIGxvYWRlci9wZV9pbWFnZS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGNyYXNoIHdoZW4gbWFwIGZhaWxzLgoKCSogY29udHJvbHMvY29tYm8uYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglTaG93IHVzZSBvZiB1bmRvY3VtZW50ZWQgbWVzc2FnZXMuCgoJKiBpbmNsdWRlL2tleWJvYXJkLmgsIGluY2x1ZGUvdHR5ZHJ2LmgsIGluY2x1ZGUveDExZHJ2LmgsIHdpbmRvd3MvZGlucHV0LmMsIHdpbmRvd3MvdHR5ZHJ2L2luaXQuYywgd2luZG93cy90dHlkcnYva2V5Ym9hcmQuYywgd2luZG93cy94MTFkcnYvaW5pdC5jLCB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gcmVtb3ZlZCBrZXlib2FyZCBhdXRvLXJlcGVhdCB3aGVuIERJbnB1dCBhY3F1aXJlcyBpdAoJLSByZW1vdmVkIHNvbWUgKG5vdykgb2Jzb2xldGUgZml4bWUncwoKCSogZ3JhcGhpY3MvZGRyYXdfcHJpdmF0ZS5oLCBncmFwaGljcy9kZHJhdy5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglNb3ZlZCBscENsaXBwZXIgaW50byBjb21tb25fZGlyZWN0ZHJhd3N1cmZhY2Ugc3RydWN0CglSZWxlYXNlIG9sZCBjbGlwcGVyIG9uIG5ldyBzZXQKCgkqIGRsbHMvd2lubW0vd2luZW9zcy9taWRpLmMsIGluY2x1ZGUvbW1zeXN0ZW0uaDoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRmFrZSBNSURJX0lPX1NUQVRVUyBzdXBwb3J0IGluIG1pZGkgaW4gb3BlbgoJRml4ZWQgYnVnIGluIG1pZGkgaW4gd2hpbGUgcmVhZGluZyBkYXRhCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBpbmZpbml0ZSBsb29wIGZvciAwLWxlbmd0aCB3YXZlaGRycy4KCgkqIGRsbHMvd2lubW0vbWNpd2F2ZS9tY2l3YXZlLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgYnVnZ3kgcGxheWJhY2sgZm9yIG5vbiBQQ00gZmlsZXMKCUFkZGVkIHN1cHBvcnQgZm9yIGZyb20gJiB0byBpbmRleGVzIGZvciBwbGF5YmFjawoJTm93IHVzaW5nIGRvdWJsZSB3YXZlaGRyIGZvciBiZXR0ZXIgb3V0cHV0CglDbGVhbmVkLXVwIGludGVybmFsIHN0cnVjdHMgYW5kIHJlbW92ZWQgbGFzdCAxNiBiaXQgQVBJIGFkaGVyZW5jZQoKCSogZGxscy93aW5tbS9tbXN5c3RlbS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVRyaWVkIHRvIHJlZHVjZSBlY2hvIGluIHBsYXlTb3VuZCBBUEkgKHVzaW5nIHR3byB3YXZlaGRyIGluc3RlYWQgb2YKCW9uZSkuCgoJKiBkbGxzL3dpbm1tL2xvbHZsZHJ2LmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgY2FsbGJhY2sgbWVjaGFuaXNtcyBmb3IgTUlESSBJTi4KCgkqIGRsbHMvbXNhY20zMi9zdHJlYW0uYywgZGxscy9tc2FjbTMyL3dpbmVhY20uaDoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgaW1wcm9wZXIgYWNtIHN0cmVhbXMgY2xvc2luZy4KCgkqIGRsbHMvbXNhY20zMi9kcml2ZXIuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglEZWJ1ZyB0cmFjZXMgY29zbWV0aWMgZml4ZXMuCgoJKiBERVZFTE9QRVJTLUhJTlRTOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIHNvbWUgZXJyb3JzICh0aGFua3MgdG8gRiBHb3VnZXQgZm9yIHJlcG9ydGluZyB0aGVtKS4KCUFkZGVkIHNvbWUgYml0cyBvbiB0aHVua2luZyBhbmQgcmVzb3VyY2VzIGZvciBETExzLgoKU2F0IERlYyAgNCAwNDoyMjowNCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZ3JhcGhpY3MvZGRyYXcuYywgZ3JhcGhpY3MvZGRyYXdfcHJpdmF0ZS5oLCBpbmNsdWRlL3RzX3hsaWIuaCwgdHN4MTEvWDExX2NhbGxzLCB0c3gxMS90c194bGliLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJRmlyc3Qgc3VwcG9ydCBvZiBER0EgMi4wIGZvciBEaXJlY3REcmF3LgoKCSogaW5jbHVkZS93aW51c2VyLmgsIHJlbGF5MzIvdXNlcjMyLnNwZWMsIHdpbjMyL25ld2Zucy5jOgoJRXJleiBWb2xrIDxlcmV6QGdteC5uZXQ+CglTdHVicyBmb3IgR2V0L1NldFByb2Nlc3NEZWZhdWx0TGF5b3V0LgoKCSogZmlsZXMvcHJvZmlsZS5jLCByZWxheTMyL2tlcm5lbDMyLnNwZWM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVN0dWIgZm9yIENsb3NlUHJvZmlsZVVzZXJNYXBwaW5nLgoKCSogd2luZG93cy9kaW5wdXQuYzogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCVVzZSBESW5wdXQncyBpbnRlcm5hbCBtb3VzZSBldmVudCBoYW5kbGVyIHRvIGhhbmRsZSB0aGUgR2V0RGV2aWNlU3RhdGUKCWZ1bmN0aW9uLgoKCSogZGxscy93aW5tbS9tbXN5c3RlbS5jOiBQZXRlciBHYW50ZW4gPHBldGVyQGdhbnRlbi5vcmc+Cgl3YXZlSGRyLmxwRGF0YSB3YXMgZXZlbnR1YWxseSBIZWFwRnJlZSgpZWQgdW5pbml0aWFsaXplZC4KCgkqIGxvYWRlci9tb2R1bGUuYzogU2VyZ2VpIFR1cmNoYW5vdiA8dHVyY2hhbm92QG90dnByaW0ucnU+CglGaXggZm9yIEdldEJpbmFyeVR5cGUgdG8gcmV0dXJuIFNDU19ET1NfQklOQVJZIGlmIGV4dGVuZGVkIHNpZ25hdHVyZQoJaXMgdW5rbm93bi4KCgkqIGxvYWRlci9kb3MvbW9kdWxlLmMsIGxvYWRlci9uZS9tb2R1bGUuYywgcmVsYXkzMi9idWlsdGluMzIuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgaW5jbHVkZS9kb3NleGUuaCwgaW5jbHVkZS9lbGZkbGwuaCwgaW5jbHVkZS9tb2R1bGUuaCwgaW5jbHVkZS9wZV9pbWFnZS5oLCBsb2FkZXIvZWxmLmMsIGxvYWRlci9lbGZkbGwuYywgbG9hZGVyL21haW4uYywgbG9hZGVyL21vZHVsZS5jLCBsb2FkZXIvcGVfaW1hZ2UuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJRml4ZWQgMzItYml0IG1vZHVsZSBuYW1lIGhhbmRsaW5nIHRvIGNvbmZvcm0gYmV0dGVyIHRvIFdpbjl4LgoJUmVtb3ZlZCBPRlNUUlVDVCBwYXNzaW5nIGR1cmluZyBwcm9jZXNzIGNyZWF0aW9uIHNlcXVlbmNlLgoJQnVnZml4OiBkb24ndCBzZXQgZXhlX21vZHJlZiB3aGVuIExPQURfTElCUkFSWV9BU19EQVRBRklMRSBpcyBzZXQuCgoJKiBkbGxzL2FkdmFwaTMyL3NlcnZpY2UuYywgaW5jbHVkZS93aW5zdmMuaCwgZGxscy9hZHZhcGkzMi9hZHZhcGkzMi5zcGVjOgoJTWljaGFlbCBNY0Nvcm1hY2sgPG1jY29ybWFjQGFhbHMyNy5hbGNhdGVsLmNvbS5hdT4KCUFkZGVkIGNvZGUgdG8gc29tZSBzZXJ2aWNlIGZ1bmN0aW9ucyAoc29tZSB1bnRlc3RlZCksIGZpeGVkCglkZWNsYXJhdGlvbiBvZiBzZXJ2aWNlIG1haW4gZnVuY3Rpb24uCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmMsIGRsbHMvY29tbWRsZy9maWxlZGxnYnJvd3Nlci5oOgoJUGllcnJlIE1hZ2VhdQoJTXVyYWxpIFBhdHRhdGhlCglGcmFuY29pcyBCb2lzdmVydAoJRnJhbmNpcyBCYXVkZXQKCUhlbm5pbmcgSG9mZm1hbm4KCU1hbnkgZml4ZXMuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMyLnNwZWMsIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJQWRkZWQgc3R1YnMgZm9yIHNldmVyYWwgTVJVIGxpc3QgZnVuY3Rpb25zIGFuZCBkb2N1bWVudGVkIHNvbWUgb3RoZXJzLgoKCSogc2VydmVyL2ZpbGUuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGbHVzaCBoYW5kbGUgaW4gYW55IGFjY2VzcyBtb2RlLgoKCSogZGxscy9jb21jdGwzMi9oZWFkZXIuYzogSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJRml4ZXMgb2ZmIGJ5IG9uZSBlcnJvciBpbiBpdGVtIGluc2VydGlvbi4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFsbG93IDElIGRldmlhdGlvbiBmcm9tIHNwZWNpZmllZCBzYW1wbGluZyByYXRlIGZvciBzb21lIHNvdW5kY2FyZHMuCgoJKiBpbmNsdWRlL2QzZC5oOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJU3VwcHJlc3NlZCB0aGUgaW5jbHVzaW9uIG9mIE9wZW5HTCBoZWFkZXJzLgoKCSogb2JqZWN0cy9lbmhtZXRhZmlsZS5jOiBQZXRlciBIdW5uaXNldHQgPGh1bm5pc2VAbm9ydGVsbmV0d29ya3MuY29tPgoJLSBBZGRlZCBzdHViIGZvciBjb252ZXJzaW9uIGZyb20gbWV0YSB0byBlbmhhbmNlIG1ldGEgZmlsZXMuCgktIEltcGxlbWVudGVkIEdldEVuaE1ldGFGaWxlQml0cyBmb3IgZW5oYW5jZWQgbWV0YSBmaWxlcy4KCgkqIGdyYXBoaWNzL2RkcmF3LmMsIGdyYXBoaWNzL2RkcmF3X3ByaXZhdGUuaDoKCVBldGVyIEh1bm5pc2V0dCA8aHVubmlzZUBub3J0ZWxuZXR3b3Jrcy5jb20+CglJbXByb3ZlZCBzdHVicyBmb3IgdGhlIGRkcmF3IGNsaXBwZXIgcm91dGluZXMuCgpNb24gTm92IDI5IDAyOjQ4OjQzIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW4zMi90aW1lLmM6IE1hZGUgR2V0U3lzdGVtVGltZUFzRmlsZVRpbWUgcmV0dXJuIHZhbHVlIG1vcmUgcHJlY2lzZS4KCgkqIHNlcnZlci9ldmVudC5jLCBzZXJ2ZXIvZmlsZS5jOgoJRml4ZWQgZ2V0X2V2ZW50X29iai9nZXRfZmlsZV9vYmogdG8gdXNlIHRoZSBwcm9jZXNzIHBhcmFtZXRlciAodGhhbmtzCgl0byBFcmljIFBvdWVjaCkuCgoJKiBzZXJ2ZXIvcHJvY2Vzcy5oLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcHJvY2Vzcy5jOgoJRml4ZWQgREVCVUdfT05MWV9USElTX1BST0NFU1MgYWdhaW4gKHRoYW5rcyB0byBVbHJpY2ggV2VpZ2FuZCkuCgoJKiBzY2hlZHVsZXIvdGltZXIuYywgc2VydmVyL01ha2VmaWxlLmluLCBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvdGltZXIuYywgc2VydmVyL3RyYWNlLmMsIGRsbHMvbnRkbGwvbnQuYywgaW5jbHVkZS9zZXJ2ZXIuaCwgaW5jbHVkZS93aW5iYXNlLmgsIHJlbGF5MzIva2VybmVsMzIuc3BlYywgc2NoZWR1bGVyL01ha2VmaWxlLmluOgoJSW1wbGVtZW50ZWQgd2FpdGFibGUgdGltZXJzLgoKU3VuIE5vdiAyOCAyMTowMzo0NiAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogdG9vbHMvYmluMnJlcy5jOiBCdWcgZml4ZXMuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMyLmgsIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmMsIGRsbHMvY29tY3RsMzIvcnNyYy5yYywgaW5jbHVkZS9wcnNodC5oOgoJU2VyZ2UgSXZhbm92CglQaWVycmUgTWFnZWF1CglUaHkgTmd1eWVuCglEb24gS2VsbHkKCU5vb21lbiBIYW16YQoJTG90cyBvZiBidWcgZml4ZXMgYW5kIG5ldyBmZWF0dXJlcyBpbiBwcm9wZXJ0eSBzaGVldHMuCgoJKiB3aW4zMi9uZXdmbnMuYywgd2luZG93cy94MTFkcnYvY2xpcGJvYXJkLmMsIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIGRsbHMvZHBsYXl4L2RwbG9iYnkuYywgZGxscy9zaGVsbDMyL3NobHZpZXcuYywgZ3JhcGhpY3MvcHNkcnYvZm9udC5jLCBkbGxzL2NvbWN0bDMyL3RhYi5jOgoJTmllbHMgS3Jpc3RpYW4gQmVjaCBKZW5zZW4gPG5rYmpAaW1hZ2UuZGs+CglDb21waWxlciB3YXJuaW5ncyBmaXhlZC4KCgkqIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jOiBCcmFkbGV5IEJhZXR6IDxiYmFldHpAc3R1ZGVudC51c3lkLmVkdS5hdT4KCUdpdmUgdGhlIGFwcCBiYWNrIHRoZSBleGFjdCBmb250IG5hbWUgaXQgYXNrZWQgZm9yLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6IERhdmUgUGlja2xlcyA8ZGF2ZXBAbnVnYXRlLmRlbW9uLmNvLnVrPgoJUHJldmVudCBhIGNyYXNoIGlmIG1lc3NhZ2VzIGFyZSBzZW50IHRvIGEgdG9vbGJhciB3aW5kb3cgYmVmb3JlCglXTV9OQ0NSRUFURSBvciBhZnRlciBXTV9ERVNUUk9ZLgoKCSogZGxscy93aW5tbS93aW5tbV9Fcy5yYzogSnVsaW8gQ2VzYXIgR2F6cXVleiA8amdhenF1ZXpAZGxkLm5ldD4KCVVwZGF0ZWQgU3BhbmlzaCBNTSBlcnJvciBzdHJpbmcgdHJhbnNsYXRpb24uCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMyLmgsIGRsbHMvY29tY3RsMzIvcnNyYy5yYywgZGxscy9jb21jdGwzMi90cmVldmlldy5jLCBpbmNsdWRlL2NvbW1jdHJsLmgsIGluY2x1ZGUvdHJlZXZpZXcuaDoKCUFsZXggUHJpZW0gPGFsZXhwQHNjaS5rdW4ubmw+CgktIChmaW5hbD8pIHVwZGF0ZSBvZiBUcmVlVmlld18qIG1hY3JvJ3MuCgktIGltcGxlbWVudGF0aW9uIG9mIFRWTV9TRVRJTlNFUlRNQVJLICYgVFZNX1NFVElOU0VSVE1BUktDT0xPUgoJLSBmaXhlZCBzb21lIHR5cG8ncwoJLSBjdXN0b20gZHJhdyBlbmhhbmNlbWVudHMKCS0gaW1wbGVtZW50YXRpb24gb2Ygc3RhdGUgaW1hZ2VzCgktIGltcGxlbWVudGF0aW9uIG9mIFRWU19DSEVDS0JPWEVTCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzogRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUZpeGVkIHNvbWUgdmlzdWFsIHRvb2xiYXIgYnVncy4KCgkqIFJFQURNRTogSnVlcmdlbiBMb2NrIDxub3hAamVsYWwua24tYnJlbWVuLmRlPgoJQWRkZWQgbm90ZXMgYWJvdXQgV2luZS1yZWxhdGVkIEZyZWVCU0Qga2VybmVsIHBhdGNoZXMuCgoJKiBkbGxzL3dpbnNwb29sL2luZm8uYzogSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJVXNlIFJlZ1F1ZXJ5SW5mb0tleSB0byBjb3VudCBudW1iZXIgb2YgcHJpbnRlcnMuCgoJKiBzZXJ2ZXIvdW5pY29kZS5oOiBKdWVyZ2VuIExvY2sgPG5veEBqZWxhbC5rbi1icmVtZW4uZGU+CglEb24ndCB0cnkgdG8gY2FsbCB0b3d1cHBlcigpIHdoZW4gdGhlcmUncyBubyB3Y3R5cGUuaC4KCgkqIGNvbnRyb2xzL2NvbWJvLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJV2hlbiBjb21ib2JveCBzZWxlY3Rpb24gY2hhbmdlcywgdXBkYXRlIGl0cyBlZGl0IGJveCBhY2NvcmRpbmdseS4KCgkqIGNvbnRyb2xzL2xpc3Rib3guYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglOb3RpZnkgcGFyZW50IG9mIGxpc3Rib3ggaWYgcmVxdWVzdGVkLgoKVGh1IE5vdiAyNSAyMzo0Mjo1NCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2VydmVyL3B0cmFjZS5jOiBNb3JlIHBvcnRhYmlsaXR5IGZpeGVzICh0aGFua3MgdG8gSnVlcmdlbiBMb2NrKS4KCgkqIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYzogSnVlcmdlbiBMb2NrIDxub3hAamVsYWwua24tYnJlbWVuLmRlPgoJU2V0L3VzZSBmcy9ncyBmcm9tIHRoZSBzaWdjb250ZXh0IHN0cnVjdCwgdGhlIGNvcnJlc3BvbmRpbmcga2VybmVsCgljaGFuZ2Ugbm93IGZpbmFsbHkgaGFzIGJlZW4gTUZDJ2QgdG8gLXN0YWJsZS4KCgkqIGRvY3VtZW50YXRpb24vZm9udHM6IEp1ZXJnZW4gTG9jayA8bm94QGplbGFsLmtuLWJyZW1lbi5kZT4KCU1lbnRpb24gZnJlZSBUcnVldHlwZSBmb250IHNlcnZlcnMgKFhmc3R0IGFuZCB4ZnNmdCkuCgoJKiB3aW5lZGVmYXVsdC5yZWc6IEp1ZXJnZW4gTG9jayA8bm94QGplbGFsLmtuLWJyZW1lbi5kZT4KCU5vdGUgd2hhdCB0byBkbyB3aXRoIHRoZSB3aW5lZGVmYXVsdC5yZWcgaW4gdGhlIGZpbGUuCgoJKiB3aW4zMi9kZXZpY2UuYzogUGV0ZXIgR2FudGVuIDxwZXRlckBnYW50ZW4ub3JnPgoJSW1wbGVtZW50ZWQgcGFydHMgb2YgX1BhZ2VSZXNlcnZlKCkgX1BhZ2VDb21taXQoKSBfUGFnZURlY29tbWl0KCkKCV9QYWdlQ2hhbmdlUGVybWlzc2lvbnMoKSBhbmQgX1BhZ2VGcmVlKCkgdXNpbmcgdGhlCglWaXJ0dWFsKigpLUZ1bmN0aW9ucyAod2l0aCB0aGUgZ3JlYXQgaGVscCBvZiBVbHJpY2ggV2VpZ2FuZCkuCgoJKiBtZW1vcnkvYXRvbS5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCVJlbW92ZWQgZml4bWUuCgoJKiBtaXNjL3JlZ2lzdHJ5LmM6IFNldmVyYWwgYnVnIGZpeGVzIGluIHNhdmVfa2V5KCkuCgoJKiBkbGxzL2FkdmFwaTMyL3JlZ2lzdHJ5LmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgc29tZSBib2d1cyBlcnJvciBkZXRlY3Rpb24gZm9yIFJlZ0VudW1WYWx1ZVtBV10gYW5kCglSZWdRdWVyeVZhbHVlRXhbQVddLgoKCSogZGxscy9kcGxheXgvZHBsYXkuYywgZGxscy9kcGxheXgvZHBsYXl4X2dsb2JhbC5jLCBkbGxzL2RwbGF5eC9kcGxheXhfZ2xvYmFsLmgsIGRsbHMvZHBsYXl4L2RwbG9iYnkuYzoKCVBldGVyIEh1bm5pc2V0dCA8aHVubmlzZUBub3J0ZWxuZXR3b3Jrcy5jb20+CgktIEFkZGVkIGdsb2JhbCBkYXRhIG11dHVhbCBleGNsdXNpb24KCS0gUmVtb3ZlZCBoYWNrIGZvciBjcmVhdGluZyBwcm9jZXNzZXMgc3VzcGVuZGVkIG5vdyB0aGF0IGl0J3MgaW1wbGVtZW50ZWQKCS0gRml4ZWQgb3JkaW5hbCBudW1iZXJpbmcgYW5kIGFkZGVkIHNwZWMgc3R1YnMKCS0gRml4ZWQgRW51bUNvbm5lY3Rpb25zIGNhbGxiYWNrIHRvIGZpbGwgaW4gYWxsIHBhcmFtZXRlcnMgd2l0aCB2YWxpZCBkYXRhCgktIE1hZGUgZGlyZWN0IHBsYXkgYWxsb2NhdGlvbi9kZWFsbG9jYXRpb24gZm9sbG93IHRoZSBzYW1lIHBhdHRlcm4gYXMKCSAgZGlyZWN0IHBsYXkgbG9iYnkKCgkqIGRsbHMvd2luODdlbS9lbXVsYXRlLmM6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglTZXZlcmFsIGltcHJvdmVtZW50cy4KCgkqIG9sZS9vbGUybmxzLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJUmVtb3ZlZCBpbnZhbGlkIExDTWFwU3RyaW5nIGZpeG1lIGZvciBOT1JNX0lHTk9SRUtBTkFUWVBFIGNhc2UuCgoJKiBpbmNsdWRlL2NvbW0uaCwgbWlzYy9jb21tLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJTWFkZSB3aW4xNiBzZXJpYWwgY29tbXMgbGVzcyBvZiBhIENQVSBob2cuCgoJKiBpbmNsdWRlL3NlcnZlci5oLCBtZW1vcnkvdmlydHVhbC5jLCBzY2hlZHVsZXIvZXZlbnQuYywgc2NoZWR1bGVyL211dGV4LmMsIHNjaGVkdWxlci9zZW1hcGhvcmUuYywgc2VydmVyL01ha2VmaWxlLmluLCBzZXJ2ZXIvZXZlbnQuYywgc2VydmVyL2hhbmRsZS5jLCBzZXJ2ZXIvaGFuZGxlLmgsIHNlcnZlci9tYXBwaW5nLmMsIHNlcnZlci9tdXRleC5jLCBzZXJ2ZXIvb2JqZWN0LmMsIHNlcnZlci9vYmplY3QuaCwgc2VydmVyL3JlZ2lzdHJ5LmMsIHNlcnZlci9zZW1hcGhvcmUuYywgc2VydmVyL3RyYWNlLmMsIHNlcnZlci91bmljb2RlLmMsIHNlcnZlci91bmljb2RlLmg6CglTdG9yZSBhbGwgb2JqZWN0IG5hbWVzIGFzIFVuaWNvZGUgaW4gdGhlIHNlcnZlci4KCldlZCBOb3YgMjQgMTk6MzQ6MzIgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvc2VydmVyLmgsIG1pc2MvcmVnaXN0cnkuYywgc2VydmVyL3JlZ2lzdHJ5LmMsIHNlcnZlci90cmFjZS5jLCB3aW5lLmluaToKCUFkZGVkIHdpbmUuY29uZiBvcHRpb24gZm9yIG5ldyBmb3JtYXQgcmVnaXN0cnkgZmlsZXMuCglBZGRlZCBvcHRpb25hbCBwZXJpb2RpYyBzYXZpbmcgb2YgdGhlIHJlZ2lzdHJ5LgoKCSogbWlzYy9yZWdpc3RyeS5jLCBzZXJ2ZXIvcmVnaXN0cnkuYzoKCUFkZGVkIHN1cHBvcnQgdG8gdGhlIHNlcnZlciBmb3IgbG9hZGluZyBuZXcgZm9ybWF0ICh2ZXJzaW9uIDIpIGZpbGVzLgoKCSogbWlzYy9yZWdpc3RyeS5jOiBCdWcgZml4ZXMgKHRoYW5rcyB0byBKdWVyZ2VuIFNjaG1pZWQpLgoKCSogaW5jbHVkZS9wcm9jZXNzLmgsIGluY2x1ZGUvc2VydmVyLmgsIHNjaGVkdWxlci9kZWJ1Z2dlci5jLCBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jOgoJQWRkZWQgY3VycmVudCBjb250ZXh0IHRvIHRoZSBleGNlcHRpb24gZGVidWcgZXZlbnQgc2VudCB0byB0aGUgc2VydmVyLgoKCSogc2VydmVyL2RlYnVnZ2VyLmMsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9wcm9jZXNzLmgsIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RocmVhZC5oOgoJRml4ZWQgaGFuZGxpbmcgb2YgZGVidWcgZXZlbnRzIG9uIHRocmVhZC9wcm9jZXNzIGV4aXQuCgoJKiBkZWJ1Z2dlci9kYmcueSwgaW5jbHVkZS93aW5iYXNlLmgsIHNjaGVkdWxlci9jcml0c2VjdGlvbi5jOgoJUmFpc2UgYW4gZXhjZXB0aW9uIHdoZW4gYSBjcml0aWNhbCBzZWN0aW9uIHdhaXQgZmFpbGVkLgoKVHVlIE5vdiAyMyAyMzo0MzoyOSAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZ3JhcGhpY3MvdHR5ZHJ2L01ha2VmaWxlLmluLCBncmFwaGljcy90dHlkcnYvYml0Ymx0LmMsIGdyYXBoaWNzL3R0eWRydi9iaXRtYXAuYywgZ3JhcGhpY3MvdHR5ZHJ2L2JydXNoLmMsIGdyYXBoaWNzL3R0eWRydi9jbGlwcGluZy5jLCBncmFwaGljcy90dHlkcnYvZm9udC5jLCBncmFwaGljcy90dHlkcnYvZ3JhcGhpY3MuYywgZ3JhcGhpY3MvdHR5ZHJ2L2luaXQuYywgZ3JhcGhpY3MvdHR5ZHJ2L29iamVjdHMuYywgZ3JhcGhpY3MvdHR5ZHJ2L29lbWJpdG1hcC5jLCBncmFwaGljcy90dHlkcnYvcGFsZXR0ZS5jLCBncmFwaGljcy90dHlkcnYvcGVuLmMsIGdyYXBoaWNzL3R0eWRydi90ZXh0LmMsIGluY2x1ZGUvdHR5ZHJ2LmgsIHdpbmRvd3MvdHR5ZHJ2L2Rlc2t0b3AuYywgd2luZG93cy90dHlkcnYvbWFpbi5jLCB3aW5kb3dzL3R0eWRydi9tb25pdG9yLmMsIHdpbmRvd3MvdHR5ZHJ2L3duZC5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglJbXByb3ZlZCB0aGUgc3R1YnMuCgoJKiBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jLCBpbmNsdWRlL2ltYWdlbGlzdC5oOgoJRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCS0gZmlyc3QgJ2R1bW15JyBpbXBsZW1lbnRhdGlvbiBvZiBJbWFnZUxpc3RfUmVhZAoKCSogaW5jbHVkZS9yZWJhci5oLCBkbGxzL2NvbWN0bDMyL3JlYmFyLmM6CglFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJLSBhZGRlZCB2ZXJzaW9uIG1lc3NhZ2VzCgoJKiBkbGxzL2NvbWN0bDMyL2RyYWdsaXN0LmM6IEVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CgktIGltcGxlbWVudGVkIExCSXRlbUZyb21QdAoKCSogaW5jbHVkZS9jb21tY3RybC5oLCBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJLSBpbXBsZW1lbnRlZCBzaW1wbGUgY29sdW1uIG9yZGVyIGFycmF5IGZ1bmN0aW9uYWxpdHkKCS0gaW1wbGVtZW50ZWQgc29tZSB2aXJ0dWFsIGxpc3R2aWV3IG5vdGlmaWNhdGlvbnMKCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzIuc3BlYywgZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmM6CglFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJLSBtaW5vciB1cGRhdGUgdG8gbXJ1IGxpc3QgZnVuY3Rpb25zCgktIHN0dWJzIGZvciBDT01DVEwzMl80MTEgdG8gQ09NQ1RMMzJfNDEzCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYywgaW5jbHVkZS90b29sYmFyLmg6CglFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJLSBhZGRlZCB2ZXJzaW9uIG1lc3NhZ2VzIGFuZCBzb21lIHNpbXBsZSBnZXQvc2V0IG1lc3NhZ2VzLgoJLSBhZGRlZCB1bmljb2RlIG1lc3NhZ2VzCgoJKiBpbmNsdWRlL3NobGd1aWQuaCwgZGxscy9zaGVsbDMyL2NsYXNzZXMuYywgZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jLCBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvcGlkbC5oLCBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYywgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jLCBkbGxzL3NoZWxsMzIvc2hsdmlldy5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CgktIG1hZGUgSVNoZWxsRm9sZGVyIGEgYWdncmVnYWJsZSBvYmplY3QKCS0gU0hDb0NyZWF0ZUluc3RhbmNlIGNhbiBjcmVhdGUgQ1NJRExfRlNGb2xkZXIgbm93CgktIGJyb3dzaW5nIGludG8gZm9sZGVycyBvbiB0aGUgZGVza3RvcCBpbXBsZW1lbnRlZAoJLSBjb3JyZWN0ZWQgcmV0dXJudmFsdWUgb2YgSWNvX0V4dHJhY3RJY29uRXgKCS0gZml4ZWQgU0hHZXREYXRhRnJvbUlETGlzdCB0byByZXR1cm4gZGF0YSBvZiBzaW1wbGUgcGlkbHMKCgkqIHJlbGF5MzIvd3NvY2szMi5zcGVjLCBpZjE2MzIvd2luc29jay5zcGVjLCBpbmNsdWRlL3dpbnNvY2suaCwgbWlzYy93aW5zb2NrLmM6CglNb3NlcyBEZUpvbmcgPGRlam9uZ0Bjcy51bW4uZWR1PgoJQWRkZWQgaW1wbGVtZW50YXRpb24gZm9yIFdTQVJlY3ZFeCBmdW5jdGlvbi4gVGhpcyBpcyBhIE1pY3Jvc29mdAoJc3BlY2lmaWMgZXh0ZW5zaW9uIHRvIHRoZSB3aW5zb2NrIEFQSS4KCgkqIGRsbHMvbXByL21wci5zcGVjLCBkbGxzL21wci9wd2NhY2hlLmMsIGluY2x1ZGUvd2lubmV0d2suaDoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJQ29ycmVjdGVkIHdyb25nIHBhcmFtZXRlciBjb3VudHMgZm9yIFdOZXRDYWNoZVBhc3N3b3JkIGFuZAoJV05ldEVudW1DYWNoZWRQYXNzd29yZHMuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmM6CglJYW4gU2NobWlkdCA8aXNjaG1pZHRAY2ZsLnJyLmNvbT4KCUFkZGVkIHN0dWIgZm9yIERsbEluc3RhbGwoKS4KCgkqIG1pc2MvcmVnaXN0cnkuYywgaW5jbHVkZS93aW5lL3dpbmJhc2UxNi5oLCBpbmNsdWRlL3dpbm50LmgsIGluY2x1ZGUvd2lucmVnLmgsIGRsbHMvYWR2YXBpMzIvTWFrZWZpbGUuaW4sIGRsbHMvYWR2YXBpMzIvcmVnaXN0cnkuYywgZGxscy9zaGVsbDMyL3NoZWxsLnNwZWMsIGlmMTYzMi9rZXJuZWwuc3BlYzoKCUNoYW5nZWQgdG8gdXNlIG5ldyBzZXJ2ZXItc2lkZSByZWdpc3RyeSBzdXBwb3J0LgoKCSogaW5jbHVkZS9zZXJ2ZXIuaCwgc2VydmVyL01ha2VmaWxlLmluLCBzZXJ2ZXIvbWFpbi5jLCBzZXJ2ZXIvb2JqZWN0LmMsIHNlcnZlci9vYmplY3QuaCwgc2VydmVyL3JlZ2lzdHJ5LmMsIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci90cmFjZS5jLCBzZXJ2ZXIvdW5pY29kZS5oOgoJQWRkZWQgcmVnaXN0cnkgc3VwcG9ydCB0byB0aGUgc2VydmVyLgoKCSogdG9vbHMvbWFrZV9yZXF1ZXN0czoKCURpZmZlcmVudGlhdGUgdHJhY2luZyBmdW5jdGlvbnMgYmV0d2VlbiByZXF1ZXN0IGFuZCByZXBseS4KCUFkZGVkIHBvc3NpYmlsaXR5IHRvIGhhdmUgZHVtcGluZyBmdW5jdGlvbnMgZm9yIHNwZWNpZmljIHR5cGVzLgoKU3VuIE5vdiAyMSAyMTowMjowNiAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS9zZXJ2ZXIuaCwgc2NoZWR1bGVyL2NsaWVudC5jOgoJQWRkZWQgc2VydmVyX2NhbGxfbm9lcnIgZnVuY3Rpb24gdGhhdCBhdm9pZHMgdG91Y2hpbmcgdGhlIGxhc3QgZXJyb3IuCgoJKiBpbmNsdWRlL3dpbmVycm9yLmg6IEFkZGVkIGEgZmV3IHJlZ2lzdHJ5IGVycm9yIGNvZGVzLgoKCSogZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsIG9iamVjdHMvZm9udC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglSZW1vdmVkIHNvbWUgdW5hbGlnbmVkIGFjY2Vzc2VzLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CgktIHRoZSBmb2RJbmZvcyB3ZXJlIHVzZWQgYmVmb3JlIGluaXRpYWxpemVkCgktIGxwVGVtcGxhdGVOYW1lIGNhbiBiZSBhIHJlc291cmNlIGlkCgktIGlmIGxwVGVtcGxhdGVOYW1lIGlzIGEgc3RyaW5nIGRvbid0IGZyZWUgdGhlIG9yaWdpbmFsIG9uZQoKCSogd2luMzIvY29uc29sZS5jLCB3aW4zMi9rZXJuZWwzMi5jLCB3aW5kb3dzL3gxMWRydi9tYWluLmMsIGxvYWRlci9uZS9jb252ZXJ0LmMsIGxvYWRlci9uZS9tb2R1bGUuYywgbWlzYy9jcHUuYywgbXNkb3MvaW9wb3J0cy5jLCBvbGUvZ3VpZC5jLCBwcm9ncmFtcy9ub3RlcGFkL21haW4uYywgc2NoZWR1bGVyL2NyaXRzZWN0aW9uLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNlcnZlci9zb2NrZXQuYywgdG9vbHMvd3JjL25ld3N0cnVjLmMsIGRsbHMvd2lubW0vbWNpLmMsIGdyYXBoaWNzL2RkcmF3LmMsIGdyYXBoaWNzL3gxMWRydi9ncmFwaGljcy5jLCBsb2FkZXIvbG9hZG9yZGVyLmMsIGxvYWRlci9tYWluLmMsIGxvYWRlci90YXNrLmMsIGRlYnVnZ2VyL2RiZ21haW4uYywgZGVidWdnZXIvZWRpdGxpbmUuYywgZGVidWdnZXIvc291cmNlLmMsIGRlYnVnZ2VyL3N0YWJzLmMsIGRlYnVnZ2VyL3R5cGVzLmMsIGRsbHMvaWNtcC9pY21wX21haW4uYywgZGxscy9udGRsbC9zZWMuYywgZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jLCBkbGxzL3dpbmcvd2luZ19tYWluLmM6CglOaWVscyBLcmlzdGlhbiBCZWNoIEplbnNlbiA8bmtiakBpbWFnZS5kaz4KCVJlbW92ZWQgZXh0cmEgI2luY2x1ZGUgc3RhdGVtZW50cy4KCgkqIGZpbGVzL2ZpbGUuYzoKCUZpeGVkIE1vdmVGaWxlRXhBIGJlaGF2aW9yIHdoZW4gdGFyZ2V0IGZpbGUgZG9lcyBub3QgZXhpc3QuCgoJKiBkbGxzL2NvbW1kbGcvY2RsZ19QdC5yYywgcHJvZ3JhbXMvd2luaGVscC8uY3ZzaWdub3JlLCBwcm9ncmFtcy93aW5oZWxwL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5oZWxwL1B0LnJjOgoJR3VzdGF2byBKdW5pb3IgQWx2ZXMgPHR3aW5mb0BiZXN0d2F5LmNvbS5icj4KCUFkZGVkIFBvcnR1Z3Vlc2UgbGFuZ3VhZ2Ugc3VwcG9ydC4KCgkqIGRsbHMvY29tY3RsMzIvbW9udGhjYWwuYywgaW5jbHVkZS9tb250aGNhbC5oOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglKYW1lcyBBYmJhdGllbGxvIDxhYmJleWpAd3BpLmVkdT4KCUltcGxlbWVudGVkIGN1cnJlbnQgZGF5IGNpcmNsaW5nLiAgRml4ZWQgbWFueSBidWdzIGluIHRoZSBtb250aAoJY2FsZW5kZXIgY29udHJvbCBpbmNsdWRpbmcgY29udHJvbCBzcGFjaW5nIGFuZCBhbGlnbm1lbnQuICBGaXhlZAoJZGVmaW5lcyBtb250aGNhbC5oLiAgT3B0aW1pemVkIGNvbnRyb2wgZHJhd2luZyBhbmQgcmVtb3ZlZCBtYW55CglleHRyYW5pb3VzIHJlZHJhd3MuICBJbXByb3ZlZCBjb250cm9sIGJlaGF2aW9yLiAgRml4ZWQgaW5jb25zaXN0ZW50Cglmb3JtYXR0aW5nIGluIGJvdGggLmMgYW5kIC5oIGZpbGVzLgoKCSogZmlsZXMvcHJvZmlsZS5jOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJRmx1c2ggY3VycmVudCBwcm9maWxlIGJlZm9yZSB1c2luZyBhIG5ld2x5IG9wZW5lZCBvbmUuCgoJKiBtZW1vcnkvc2VsZWN0b3IuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBHZXRUaHJlYWRTZWxlY3RvckVudHJ5KCkgc2V0cyByZWFkLXdyaXRlIGZsYWcgaW5jb3JyZWN0bHkuCgoJKiBpbmNsdWRlL3dpbmUvd2luZ2RpMTYuaCwgb2JqZWN0cy9mb250LmMsIGlmMTYzMi9nZGkuc3BlYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCVN0dWIgZm9yIEdldEZvbnREYXRhMTYuCgoJKiB3aW5kb3dzL2Rpc3BsYXkuYywgaWYxNjMyL2Rpc3BsYXkuc3BlYzoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUFkZGVkIHNvbWUgb3JkaW5hbHMgYW5kIEdldERyaXZlclJlc291cmNlSUQoKS4KCgkqIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9wdHJhY2UuYzogUG9ydGFiaWxpdHkgZml4ZXMuCgoJKiBzY2hlZHVsZXIvcHJvY2Vzcy5jOiBGaXhlZCBtZWFuaW5nIG9mIERFQlVHX09OTFlfVEhJU19QUk9DRVNTIGZsYWcuCgoJKiB0b29scy9iaW4ycmVzLmM6IFBldGVyIEh1bm5pc2V0dCA8aHVubmlzZUBub3J0ZWxuZXR3b3Jrcy5jb20+CglGaXhlZCBjb21waWxlIGVycm9yLgoKCSogZGxscy9hZHZhcGkzMi9zZXJ2aWNlLmM6IFBldGVyIFNjaGxhaWxlIDx1ZGJ6QHJ6LnVuaS1rYXJsc3J1aGUuZGU+CglJbXBsZW1lbnRlZCBTdGFydFNlcnZpY2VDdHJsRGlzcGF0Y2hlckEgYWNjb3JkaW5nIHRvIERpc3BhdGNoZXJXLgoKCSogTWFrZWZpbGUuaW46IE1ha2Ugc3VyZSB3ZSBjbGVhbiBkbGxzLyB0b28uCgoJKiBkbGxzL2FkdmFwaTMyL3NlcnZpY2UuYzoKCU1pY2hhZWwgTWNDb3JtYWNrIDxtY2Nvcm1hY0BhYWxzMjcuYWxjYXRlbC5jb20uYXU+CglJbXBsZW1lbnRlZCBPcGVuU0NNYW5hZ2VyVywgQ2xvc2VTZXJ2aWNlSGFuZGxlLCBPcGVuU2VydmljZVcsIGFuZCBzb21lCglvZiBRdWVyeVNlcnZpY2VTdGF0dXMuCgoJKiB0b29scy93cmMvcGFyc2VyLnk6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgbWlzc2luZyAnOycuCgoJKiB0b29scy93cmMvcGFyc2VyLmw6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRXJyb3IgcmVwb3J0aW5nIGZpeC4KCgkqIHRvb2xzL2J1Z19yZXBvcnQucGw6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglDaGFuZ2VkIGRlZmF1bHQgcmVsYXkgbGluZSBudW1iZXIgZnJvbSAxMDAgdG8gMjAwLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmMsIGluY2x1ZGUvY29tbWN0cmwuaDoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgdW5kb2N1bWVudGVkIGZlYXR1cmUgdG8gSW5zZXJ0QnV0dG9uQS4KCUFkZGVkIGRyb3Bkb3duIGJ1dHRvbiBzdXBwb3J0LgoKCSogZGxscy9jb21jdGwzMi9hbmltYXRlLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgcGxheSBiYWNrIG9mIHVuY29tcHJlc3NlZCBBVkkgZmlsZS4KCUZpeGVkIGV4aXRpbmcgY29uZGl0aW9ucy4KCgkqIGdyYXBoaWNzL2RkcmF3LmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgYSBjcmFzaCBpbiBJRGlyZWN0RHJhd1N1cmZhY2U6Qmx0RmFzdC4KCgkqIGRsbHMvd2lubW0vbG9sdmxkcnYuYywgZGxscy93aW5tbS9taWRpbWFwL21pZGltYXAuYywgZGxscy93aW5tbS93YXZlbWFwL3dhdmVtYXAuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgZm9yd2FyZGluZyBhbmQgaGFuZGxpbmcgbWVzc2FnZXMgZGlyZWN0ZWQgdG8gdGhlIG1hcHBlcnMuCgoJKiBsb2FkZXIvbmUvbW9kdWxlLmMsIGxvYWRlci9uZS9zZWdtZW50LmMsIGluY2x1ZGUvbW9kdWxlLmg6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVNpbXBsaWZpZWQgaEluc3RhbmNlIGNyZWF0aW9uL2hhbmRsaW5nLgoJRml4ZXMgcHJvYmxlbXMgd2l0aCBzZWxmLWxvYWRlcnMgY3JlYXRpbmcgREdST1VQIHRoZW1zZWx2ZXMuCgoJKiBpbmNsdWRlL3dpbmdkaS5oLCBvYmplY3RzL2RjLmMsIHJlbGF5MzIvZ2RpMzIuc3BlYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUFkZCBzdHVicyBmb3IgR2V0L1NldExheW91dCgpLgoKCSogZGxscy9vbGUzMi9vbGUzMi5zcGVjLCBkbGxzL29sZTMyL3N0b3JhZ2UzMi5jOgoJSmltIEFzdG9uIDxqaW1hQGNvcmVsLmNhPgoJQWRkZWQgc3R1YiBmb3IgU3RnU2V0VGltZXMuCgoJKiBkbGxzL3NoZWxsMzIvc2hsbWVudS5jOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJU0hGaW5kX0luaXRNZW51UG9wdXAgaXMgc3VwcG9zZWQgdG8gcmV0dXJuIGEgcG9pbnRlci4KCgkqIGRsbHMvaWNtcC9pY21wX21haW4uYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJdV9pbnRbMTZ8MzJdX3QgbWlnaHQgbm90IGJlIGRlZmluZWQuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6IEFsZXggUHJpZW0gPGFsZXhwQHNjaS5rdW4ubmw+CgktIGZpeGVkIGNyYXNoIHdoZW4gYWRkaW5nIGl0ZW1zIHdpdGggVFZJX1NPUlQgYW5kIHdpbmVJdGVtLT5wc3pUZXh0IGlzCgkgIHNldCB0byBMUFNUUl9URVhUQ0FMTEJBQ0suCgktIGRpdHRvIGZvciBUUkVFVklFV19EZWxldGVJdGVtLCBUUkVFVklFV19DcmVhdGVEcmFnSW1hZ2UuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCk1vbiBOb3YgMTUgMDA6NDY6MzAgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG1lbW9yeS92aXJ0dWFsLmM6IEZpeGVkIGFsbG9jYXRpb24gcm91bmRpbmcgZm9yIE1FTV9SRVNFUlZFLgoKCSogc2VydmVyL2ZpbGUuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBoYXNoIGZ1bmN0aW9uLgoKU3VuIE5vdiAxNCAyMzo1OTowMSAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy93aW5tbS9tbWlvLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJVGhlIGFkd0luZm9bMF0gZmllbGQgd2FzIG5vIGxvbmdlciB1c2VkIG9uIG1taW9PcGVuIChtYXkgY29udGFpbiBmaWxlCgloYW5kbGUpLgoKCSogZGxscy9vbGUzMi9vbGUyc3R1YnMuYywgZGxscy9vbGUzMi9vbGUzMi5zcGVjOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBzdHVicyBmb3IgU2V0RXJyb3JJbmZvLCBQcm9wVmFyaWFudENsZWFyLCBQcm9wVmFyaWFudENvcHksCglGcmVlUHJvcFZhcmlhbnRBcnJheS4KCgkqIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJUmVtb3ZlZCBzdWljaWRlIGNvZGUgd2hlbiBwbGF5YmFjayB0aHJlYWQncyBmYXRoZXIgZGllcy4KCgkqIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0RlLnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9Fbi5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLCBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYywgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jLCBkbGxzL3NoZWxsMzIvc2hsdmlldy5jLCBkbGxzL3NoZWxsMzIvc2hyZXMucmMsIGRsbHMvc2hlbGwzMi9zaHJlc2RlZi5oOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CgktIHRoZSBjb2x1bXMgaW4gdGhlIHNoZWxsdmlldyBhcmUgbm93IGNyZWF0ZWQgZGVwZW5kaW5nIG9uIHRoZQoJICBhdHRyaWJ1dGVzIG9mIHRoZSBmb2xkZXIgb2JqZWN0IHNob3duCgktIGdldCBhbGwgYXR0cmlidXRlcyBmcm9tIHRoZSBzaGVsbGZvbGRlciBpbnN0ZWFkIGRpcmVjdGx5IGZyb20gdGhlIGlkbGlzdAoJLSBoZWFkZXIgZmllbGRzIGxvY2FsaXplZCAob25seSBlbmdsLiBhbmQgZ2VybWFuIHRpbGwgbm93KQoJLSBzbWFsbCBmaXhlcwoKCSogZGxscy9jb21tZGxnL2NkbGdfRW4ucmMsIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJLSBjb3JyZWN0ZWQgY29udHJvbCBwb3NpdGlvbnMKCS0gdXNlIHRoZSBpY29ucyBmcm9tIGNvbWN0bDMyIGZvciB0aGUgYnV0dG9ucwoKCSogcmVsYXkzMi9rZXJuZWwzMi5zcGVjLCByZWxheTMyL3JlbGF5Mzg2LmMsIHJlbGF5MzIvc25vb3AuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiByZWxheS9zbm9vcCBkZWJ1Z2dpbmcgd2FzIGJyb2tlbiBieSBsYXN0IHBhdGNoIC4uLgoKCSogc2VydmVyL01ha2VmaWxlLmluLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcHRyYWNlLmMsIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RocmVhZC5oOgoJTW92ZWQgcHRyYWNlIHN1cHBvcnQgdG8gcHRyYWNlLmMuIFRyaWVkIHRvIGltcHJvdmUgcG9ydGFiaWxpdHkuCgoJKiBzZXJ2ZXIvZGVidWdnZXIuYzogQnVnIGZpeGVzLgoKCSogaWYxNjMyL3JlbGF5LmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJRml4ZWQgc29tZSB1bnJlc29sdmVkIGV4dGVybmFscyBvbiBub24tSW50ZWwgYXJjaHMuCgoJKiByZWxheTMyL3Nub29wLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglBZGRlZCBtaXNzaW5nIFdJTkFQSSBhdHRyaWJ1dGUgdG8gdHdvIGZvcndhcmQgZGVjbGFyYXRpb25zLgoKCSogZGxscy9pY21wL2ljbXBfbWFpbi5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCVJlbW92ZWQgbGVmdG92ZXIgI3VuZGVmcy4KCgkqIGRsbHMvd2lubW0vbWNpY2RhL21jaWNkYS5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJSWdub3JlIE1DSV9PUEVOX0VMRU1FTlQgaW4gQ0RBVURJT19tY2lPcGVuLgoKCSogZGxscy9jcnRkbGwvd2NzdHJpbmcuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglXb3JrIGFyb3VuZCBnbGliYyBidWcsIHRoYXQgZG9lcyBub3QgaGFuZGxlIGxhdGluLTEgdW1sYXV0cy4KClNhdCBOb3YgMTMgMjM6NTQ6MDUgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGxvYWRlci9uZS9tb2R1bGUuYywgbWVtb3J5L3NlbGVjdG9yLmMsIHJlbGF5MzIva2VybmVsMzIuc3BlYywgcmVsYXkzMi9yZWxheTM4Ni5jLCByZWxheTMyL3Nub29wLmMsIHdpbjMyL2RldmljZS5jLCB3aW4zMi9rZXJuZWwzMi5jLCB3aW4zMi9vcmRpbmFscy5jLCBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvbnRkbGwvcnRsLmMsIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYywgZGxscy9udGRsbC9zaWduYWxfc3BhcmMuYywgaWYxNjMyL2tlcm5lbC5zcGVjLCBpbmNsdWRlL250ZGRrLmgsIGluY2x1ZGUvd2luZS9leGNlcHRpb24uaCwgbG9hZGVyL2Rvcy9kb3N2bS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBZGFwdGVkIHRvIG5ldyByZWdpc3RlciBmdW5jdGlvbiBoYW5kbGluZy4KCgkqIHRvb2xzL2J1aWxkLmMsIGluY2x1ZGUvc3RhY2tmcmFtZS5oLCBpbmNsdWRlL3dpbm50Lmg6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCU1vZGlmaWVkIFdpbjMyIHJlZ2lzdGVyIGZ1bmN0aW9uIGhhbmRsaW5nLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvaWNtcC9pY21wX21haW4uYywgZGxscy9pY21wL2lwLmgsIGRsbHMvaWNtcC9pcF9pY21wLmgsIGluY2x1ZGUvY29uZmlnLmguaW46CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCVVzZSBCU0QgaGVhZGVycyBmb3IgSUNNUCBwb3J0YWJpbGl0eS4KCgkqIGRsbHMvY29tY3RsMzIvcnNyYy5yYywgZGxscy9jb21tZGxnL2NkbGdfeHgucmMsIGRsbHMvc2hlbGwzMi9zaHJlcy5yYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJLSBpbnNlcnRlZCBtYXJrZXJzIGZvciB0aGUgYmluMnJlcyB0b29sCgktIHJlZm9ybWF0ZWQgaGV4ZHVtcCBpbiBzaHJlcy5yYwoKCSogZG9jdW1lbnRhdGlvbi9yZXNvdXJjZXMsIHRvb2xzLy5jdnNpZ25vcmUsIHRvb2xzL01ha2VmaWxlLmluLCB0b29scy9iaW4ycmVzLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCU5ldyB0b29sIHRvIGNvbnZlcnQgdGhlIGJpbmFyeSByZXNvdXJjZXMgaW4gKi5yYyBmaWxlcyAoaGV4ZHVtcHMpIGZyb20KCWFuZCB0byBhIGJpbmFyeS4KCgkqIGluY2x1ZGUvd2luZS9wb3J0LmgsIG1pc2MvcG9ydC5jLCBtaXNjL3dpbnNvY2suYywgbWlzYy93aW5zb2NrX2FzeW5jLmMsIHNjaGVkdWxlci9zeXNkZXBzLmMsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBmaWxlcy9kcml2ZS5jLCBpbmNsdWRlL2NvbmZpZy5oLmluOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglBZGRlZCBiZXR0ZXIgbWlzc2luZyBmdW5jdGlvbiBlbXVsYXRpb24uCgoJKiBpbmNsdWRlL2RlYnVnZ2VyLmgsIGRlYnVnZ2VyL2JyZWFrLmMsIGRlYnVnZ2VyL2RiX2Rpc2FzbS5jLCBkZWJ1Z2dlci9kYmcueSwgZGVidWdnZXIvZXhwci5jLCBkZWJ1Z2dlci9oYXNoLmMsIGRlYnVnZ2VyL21lbW9yeS5jLCBkZWJ1Z2dlci9yZWdpc3RlcnMuYywgZGVidWdnZXIvc291cmNlLmMsIGRlYnVnZ2VyL3N0YWNrLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCU1hZGUgZGVidWdnZXIgY29tcGlsZSBhbmQgbWFyZ2luYWxseSB3b3JrIG9uIG5vbi1JbnRlbCBhcmNocy4KCgkqIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmMsIGluY2x1ZGUvd2lubnQuaDoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJTW92ZWQgR0VUX0lQIG1hY3JvIHRvIHdpbm50LmgKCgkqIGRvY3VtZW50YXRpb24vcHJpbnRpbmcsIGRvY3VtZW50YXRpb24vcHNkcml2ZXIsIGRvY3VtZW50YXRpb24vcHNkcnYucmVnLCBncmFwaGljcy9wc2Rydi9SRUFETUU6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglNb3ZlIFBvc3RTY3JpcHQgZHJpdmVyIGRvY3MgdG8gZG9jdW1lbnRhdGlvbi8gLiAgQWRkIGluc3RydWN0aW9ucyBvbgoJaG93IHRvIHVzZSByZWdhcGkgdG8gZ2V0IGluZm9ybWF0aW9uIGludG8gdGhlIHJlZ2lzdHJ5LiAgU3VwcGx5IHNhbXBsZQoJaW5wdXQgdG8gcmVnYXBpLgoKCSogZGxscy9jb21tZGxnL2NkbGdfRW4ucmMsIGRsbHMvY29tbWRsZy9wcmludGRsZy5jOgoJS2xhYXMgdmFuIEdlbmQgPGtsYWFzQHZhbmdlbmQuZGVtb24ubmw+CglJbXBsZW1lbnRlZCB0aGUgUHJpbnRTZXR1cCBkaWFsb2cgYm94IGZvciB0aGUgUHJpbnREbGdBLgoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYzogQWRyaWFuIFRodXJzdG9uIDxhZHJpYW50QGNvcmVsLmNvbT4KCUFkZGVkIHZhbGlkYXRpb25zIGZvciBwYWdlIGluZGV4IGJlZm9yZSB1c2luZyBpdC4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYzogQWRyaWFuIFRodXJzdG9uIDxhZHJpYW50QGNvcmVsLmNvbT4KCS0gZml4ZWQgdGhlIGluZGV4IG9mIHRoZSBpdGVtIGNob3NlbiBpbiB0aGUgZmlsdGVyIGNvbWJvIGJveAoJLSBhZGRlZCBzdXBwb3J0IGZvciB0aGUgT0ZOX09WRVJXUklURVBST01QVCBmbGFnCgktIGZpeGVkIHBvc2l0aW9uaW5nIG9mIGNvbnRyb2xzIGluIHRoZSB1c2VyLWRlZmluZWQgdGVtcGxhdGVzCgoJKiBpbmNsdWRlL3NlcnZlci5oLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvdHJhY2UuYzoKCUFkZGVkIHN1cHBvcnQgZm9yIFdyaXRlUHJvY2Vzc01lbW9yeSB0aHJvdWdoIHRoZSBzZXJ2ZXIuCgoJKiBzZXJ2ZXIvbWFwcGluZy5jLCBzZXJ2ZXIvb2JqZWN0Lmg6IEFkZGVkIGdldF9wYWdlX3NpemUgZnVuY3Rpb24uCgpGcmkgTm92IDEyIDIxOjM5OjE1IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzZXJ2ZXIvZmlsZS5jLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90aHJlYWQuaCwgc2VydmVyL3RyYWNlLmMsIGluY2x1ZGUvc2VydmVyLmgsIHNjaGVkdWxlci9wcm9jZXNzLmM6CglBZGRlZCBzdXBwb3J0IGZvciBSZWFkUHJvY2Vzc01lbW9yeSB0aHJvdWdoIHRoZSBzZXJ2ZXIuCgoJKiBpbmNsdWRlL3NlcnZlci5oLCBsb2FkZXIvbW9kdWxlLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9wcm9jZXNzLmgsIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RyYWNlLmM6CglBZGRlZCBzdXBwb3J0IGZvciBDUkVBVEVfU1VTUEVOREVEIGZsYWcgaW4gQ3JlYXRlUHJvY2Vzcy4KCgkqIHdpbjMyL2RldmljZS5jOiBJYW4gU2NobWlkdCA8aXNjaG1pZHRAY2ZsLnJyLmNvbT4KCUltcGxlbWVudGVkIFZXaW4zMiBWeERDYWxsIG1lY2hhbmlzbSBhbmQgMiBjYWxscy4KCgkqIGRsbHMvd2lubW0vam95c3RpY2suYzogPGpvZGFtYW5AY2VndDIwMS5icmFkbGV5LmVkdT4KCUZpeGVkIGpveXN0aWNrIHNjYWxpbmcuCgoJKiBkbGxzL2NvbW1kbGcvY2RsZ19DYS5yYywgZGxscy9jb21tZGxnL2NkbGdfQ3MucmMsIGRsbHMvY29tbWRsZy9jZGxnX0RhLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19EZS5yYywgZGxscy9jb21tZGxnL2NkbGdfRW8ucmMsIGRsbHMvY29tbWRsZy9jZGxnX0VzLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19GaS5yYywgZGxscy9jb21tZGxnL2NkbGdfSHUucmMsIGRsbHMvY29tbWRsZy9jZGxnX0l0LnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19Lby5yYywgZGxscy9jb21tZGxnL2NkbGdfTmwucmMsIGRsbHMvY29tbWRsZy9jZGxnX05vLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19QbC5yYywgZGxscy9jb21tZGxnL2NkbGdfUHQucmMsIGRsbHMvY29tbWRsZy9jZGxnX1J1LnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19Tdi5yYywgZGxscy9jb21tZGxnL2NkbGdfV2EucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0NhLnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9Dcy5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfRGEucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0RlLnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9Fbi5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfRXMucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0ZpLnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9IdS5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfSXQucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX05sLnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9Oby5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfUGwucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX1B0LnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9SdS5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfU3YucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX1dhLnJjOgoJR3VzdGF2byBKdW5pb3IgQWx2ZXMgPHR3aW5mb0BiZXN0d2F5LmNvbS5icj4KCVVzZSBjb25zdGFudHMgSURPSyBhbmQgSURDQU5DRUwgaW4gLnJjIGZpbGVzLgoKCSogc2VydmVyL3RocmVhZC5jOiBHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCVBvcnRhYmlsaXR5IGZpeDogcmVuYW1lZCBQVFJBQ0VfKiBpbnRvIFBUXyouCgoJKiByZWxheTMyL2tlcm5lbDMyLnNwZWMsIHdpbjMyL2RldmljZS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBbGxvdyBmb3IgYnVnZ3kgYXBwcyB0aGF0IGNhbGwgdGhlIHdyb25nIFZ4RENhbGwgcm91dGluZS4KCgkqIGRsbHMvcmFzYXBpMzIvcmFzYXBpLmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJQ29tcGxldGUgc3R1YiBmb3IgUmFzRW51bUVudHJpZXMgYnkgc2F5aW5nIHdlIGhhdmUgMCBlbnRyaWVzLgoKCSogaW5jbHVkZS9kZWJ1Z3N0ci5oLCBtaXNjL2RlYnVnc3RyLmM6CglKZXJlbXkgV2hpdGUgPGp3aGl0ZUBjb2Rld2VhdmVycy5jb20+CglBZGQgZGVidWdzdHJfaGV4X2R1bXAgdG8gYWxsb3cgZGlzcGxheSBoZXggZHVtcHMgb2YgZGF0YSBpbiBhbnkKCWRlYnVnZ2luZyBtZXNzYWdlLgoKCSogc2VydmVyL3RocmVhZC5jOgoJQWRkZWQgdXNlX3B0cmFjZSBmbGFnIHRvIGRpc2FibGUgcHRyYWNlIHVzYWdlLiBTaG91bGQgZXZlbnR1YWxseSBiZQoJbWFkZSBpbnRvIGFuIG9wdGlvbi4KCgkqIGRsbHMvY29tbWRsZy9jZGxnLmgsIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYywgZGxscy9jb21tZGxnL2ZpbGVkbGdicm93c2VyLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnYnJvd3Nlci5oLCBkbGxzL2NvbW1kbGcvcnNyYy5yYywgZGxscy9zaGVsbDMyL3NobHZpZXcuYywgaW5jbHVkZS9kbGdzLmgsIGluY2x1ZGUvd2luZS9vYmpfc2hlbGx2aWV3Lmg6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCU1hZGUgdGhlIGJ1dHRvbnMgaW4gdGhlIGZpbGVkbGcgY2hhbmdlIHdoZW4gc2VsZWN0aW5nIGEgZGlmZmVyZW50Cgl2aWV3IHR5cGUgYnkgdGhlIGNvbnRleHQgbWVudSwgY2xlYW51cC4KCgkqIGRsbHMvd2lubW0vd2lubW1fRXMucmMsIGRsbHMvd2lubW0vd2lubW1fcmVzLnJjOgoJSnVsaW8gQ2VzYXIgR2F6cXVleiA8amdhenF1ZXpAZGxkLm5ldD4KCUFkZGVkIFNwYW5pc2ggKHB1cmUgQ2FzdGlsbGFuKSBNTSBlcnJvciBzdHJpbmcgdHJhbnNsYXRpb24uCgoJKiBkbGxzL250ZGxsL01ha2VmaWxlLmluLCBkbGxzL250ZGxsL3NpZ25hbF9zcGFyYy5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBZGRlZCBzaWduYWwgaGFuZGxpbmcgZm9yIFNQQVJDIC8gU29sYXJpcy4KCgkqIHByb2dyYW1zL3JlZ2FwaS9yZWdhcGkuYzogSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJQ29tbWVudCBvdXQgZXhwbGljaXQgY2FsbCB0byBTSEVMTF9TYXZlUmVnaXN0cnkgc2luY2Ugd2luZWxpYiBwcm9ncmFtcwoJbm93IGV4aXQgcHJvcGVybHkuICBDaGFuZ2Ugc2V2ZXJhbCBOVUxMcyB0byAnXDAncy4gIEZpeCBzb21lIHNwZWxsaW5nLgoKCSogd2luZG93cy94MTFkcnYvZXZlbnQuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglGaXhlZCBYU2htIGNvbXBsZXRpb24gZXZlbnQgbGVhay4KCgkqIGRsbHMvd2lubW0vbW1zeXN0ZW0uYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCByZWN1cnNpb24gY291bnQgd2hpbGUgY2FsbGluZyBtaWRpU3RyZWFtKFBhdXNlfFJlc3RhcnQpLgoKCSogbWlzYy9yZWdpc3RyeS5jOiBIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglGaXggc2F2ZV9jaGVja190YWludGVkIHRvIHByb3Blcmx5IHNjYW4gdGhlIHRyZWUgc28gdGhhdCBhbGwgdGFpbnRlZAoJYnJhbmNoZXMgZ2V0IHNhdmVkLgoKCSogZGxscy9jcnRkbGwvY3J0ZGxsLnNwZWMsIGRsbHMvY3J0ZGxsL2NydGRsbF9tYWluLmM6CglCZXJuZCBQYXlzYW4gPGJlcm5kLnBheXNhbkBnbXguZGU+CglBZGRlZCBhIHN0dWIgZm9yIHNldGptcC4KCldlZCBOb3YgMTAgMjA6MjU6MTkgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNlcnZlci90aHJlYWQuYzoKCURvbid0IGNyYXNoIHdoZW4gd2UgZ2V0IGEgU0lHQ0hMRCBmb3IgYSByZW1vdmVkIHRocmVhZC4KCgkqIGRsbHMvaWNtcC9pY21wX21haW4uYzogUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglTb2xhcmlzIGNvbXBpbGUgZml4ZXMuCgoJKiBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jLCBpbmNsdWRlL3dpbm50Lmg6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCShQcmVsaW1pbmFyeSkgQ09OVEVYVCBzdHJ1Y3R1cmUgZm9yIFNQQVJDIGFkZGVkLgoKCSogaW5jbHVkZS9wcm9jZXNzLmgsIGxvYWRlci9tb2R1bGUuYywgc2NoZWR1bGVyL2RlYnVnZ2VyLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogTE9BRF9ETExfREVCVUdfRVZFTlQgbHBJbWFnZU5hbWUgcGFyYW1ldGVyIHdhcyBpbmNvcnJlY3QuCgoJKiBtZW1vcnkvdmlydHVhbC5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVdoZW4gZGVjb21taXR0aW5nLCByZW1hcCB6ZXJvIHBhZ2VzIHVzaW5nIE1BUF9GSVhFRC4KCgkqIGRsbHMvb2xlMzIvY29tcG9iai5jOiBSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJQ29HZXRDbGFzc09iamVjdCBzaG91bGQgY29tcGxhaW4gYWJvdXQgbm90IGJlaW5nIGFibGUgdG8gZG8KCW91dC1vZi1wcm9jZXNzIHNlcnZlcnMgKm9ubHkqIGlmIHRoZSBhcHBsaWNhdGlvbiBkb2Vzbid0IGluY2x1ZGUgdGhlCglpbi1wcm9jZXNzIG9wdGlvbnMuCgoJKiBtaXNjL3ZlcnNpb24uYywgY29udHJvbHMvZWRpdC5jLCBpbmNsdWRlL3dpbnZlcnNpb24uaDoKCVJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglTZW5kIFdNX0NUTENPTE9SRURJVCBub3QgV01fQ1RMQ09MT1JTVEFUSUMgbWVzc2FnZXMgdG8gcGFyZW50IG9mIGEKCWRpc2FibGVkIGVkaXQgY29udHJvbCBpZiB0aGUgYXBwbGljYXRpb24gZXhwZWN0cyBhIHdpbmRvd3MgdmVyc2lvbgoJYmVmb3JlIFdJTjk1IGFuZCBOVDQwLgoKCSogaW5jbHVkZS93aW5iYXNlLmgsIHJlbGF5MzIva2VybmVsMzIuc3BlYywgZmlsZXMvZmlsZS5jOgoJTW9zaGUgVmFpbmVyIDxtb3NoZXZAZWFzeWJhc2UuY29tPgoJU3R1YiBmb3IgR2V0T3ZlcmxhcHBlZFJlc3VsdC4KCgkqIHJlbGF5MzIvYnVpbHRpbjMyLmMsIHRvb2xzL2J1aWxkLmMsIGluY2x1ZGUvbW9kdWxlLmgsIGluY2x1ZGUvcGVfaW1hZ2UuaCwgbG9hZGVyL2Rvcy9tb2R1bGUuYywgbG9hZGVyL21haW4uYywgbG9hZGVyL21vZHVsZS5jLCBsb2FkZXIvbmUvbW9kdWxlLmMsIGxvYWRlci9wZV9pbWFnZS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglEZXRlcm1pbmUgZXhwZWN0ZWRfdmVyc2lvbiBvZiBQRSBidWRkaWVzIGZyb20gdGhlIFN1YnN5c3RlbVZlcnNpb24uCgoJKiBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jLCBpbmNsdWRlL3dpbmUvZXhjZXB0aW9uLmgsIGluY2x1ZGUvd2lubnQuaCwgd2luMzIvZXhjZXB0LmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogRXhjZXB0aW9uIGhhbmRsZXJzIGFyZSAqbm90KiBXSU5BUEkuCgpNb24gTm92ICA4IDA1OjMxOjQ3IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvc2VsZWN0LmMsIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RocmVhZC5oOgoJUHJlbGltaW5hcnkgcHRyYWNlIHN1cHBvcnQuCgoJKiBtZW1vcnkvdmlydHVhbC5jOgoJUmVtYXAgemVyby1wYWdlcyB3aGVuIGRlY29taXR0aW5nIGEgcGFnZSByYW5nZSAoYmFzZWQgb24gYSBwYXRjaCBieQoJR2VyYXJkIFBhdGVsKS4KCgkqIE1ha2VmaWxlLmluLCBzY2hlZHVsZXIvTWFrZWZpbGUuaW4sIHNjaGVkdWxlci9jbGllbnQuYywgc2VydmVyL21haW4uYzoKCUluc3RhbGwgdGhlIHdpbmUgc2VydmVyIGluICQoYmluZGlyKSBhbmQgZXhlYyBpdCBmcm9tIHRoZXJlLgoKU3VuIE5vdiAgNyAyMzo1OTowOCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2VydmVyL2RlYnVnZ2VyLmM6CglEbyBub3QgZnJlZSB0aGUgaGFuZGxlcyBvbmNlIHRoZXkgaGF2ZSBiZWVuIHNlbnQgdG8gdGhlIGNsaWVudCAodGhhbmtzCgl0byBKZXJlbXkgV2hpdGUpLgoKCSogd2luZG93cy9tc2dib3guYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBjcmFzaCB3aGVuIGFza2VkIHRvIHVzZSBzdHJpbmdzIGlkZW50aWZpZWQgYnkgcmVzb3VyY2UgaWQKCWluc3RlYWQgb2YgcG9pbnRlci4KCgkqIHdpbmRvd3MvZGNlLmM6IEppbSBBc3RvbiA8amltYUBjb3JlbC5jYT4KCVdoZW4gd2luZG93IGNsYXNzIGhhcyBDU19DTEFTU0RDIHN0eWxlIHdlIHNob3VsZCBub3QgcmVtb3ZlIHRoZSBEQwoJd2hlbiBkZXN0cm95aW5nIHRoZSB3aW5kb3cuCgoJKiBkbGxzL3Jhc2FwaTMyL3Jhc2FwaTMyLnNwZWMsIGRsbHMvd2luMzJzL3czMnNrcm5sLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCU1pbm9yIGZpeGVzLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL25hdGl2ZWFwaS5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL291dHB1dC5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyYXBpLmRhdCwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9jaGVjaywgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9vcHRpb25zLnBtOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglNaW5vciBmaXhlcyBhbmQgcmVvcmdhbml6YXRpb25zLgoKCSogZGxscy9zaGVsbDMyL2lmX21hY3Jvcy5oLCBpbmNsdWRlL2JpdF9hcnJheS5oLCBpbmNsdWRlL250ZGxsLmgsIGluY2x1ZGUvb2xlb2JqLmg6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCVJlbW92ZWQgb2Jzb2xldGUgZmlsZXMgbm8gbG9uZ2VyIGluIHVzZS4KCgkqIHRzeDExL1gxMV9jYWxscywgdHN4MTEvdHNfeGxpYi5jLCB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCBncmFwaGljcy9kZHJhdy5jLCBncmFwaGljcy9kZHJhd19wcml2YXRlLmgsIGluY2x1ZGUvdHNfeGxpYi5oLCBpbmNsdWRlL3gxMWRydi5oOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglEaXJlY3RYLVhTaG0gbm93IHdhaXRzIGZvciB0aGUgWCBzZXJ2ZXIgdG8gZmluaXNoIHRoZSBwcmV2aW91cyBmcmFtZQoJYmVmb3JlIHNlbmRpbmcgYW5vdGhlciBmcmFtZSBkb3duIGl0cyBwaXBlLCBhdm9pZGluZyB0aGUgWCBzZXJ2ZXIKCW92ZXJsb2FkIGFuZCByZXN1bHRpbmcgc2xvd25lc3MgdGhhdCB1c2VkIHRvIGJlLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmMsIGRsbHMvY29tbWRsZy9jZGxnX0VuLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ194eC5yYywgZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZ2Jyb3dzZXIuaCwgaW5jbHVkZS9kbGdzLmg6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCS0gdW5pZmllZCB0ZW1wbGF0ZXMgZm9yIHRoZSBvcGVuIGFuZCB0aGUgc2F2ZSBkbGcKCS0gcmVwbGFjZWQgYnV0dG9ucyB3aXRoIGEgdG9vbGJhcgoKCSogZGxscy9zaGVsbDMyL3NobGZvbGRlci5jLCBkbGxzL3NoZWxsMzIvc2hsdmlldy5jLCBpbmNsdWRlL3dpbmUvb2JqX3NoZWxsZm9sZGVyLmg6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCS0gbmV3IGludGVyZmFjZSBkZWNsYXJhdGlvbiBmb3IgSVNoZWxsZm9sZGVyMgoJLSBhZGRlZCB0aGlzIGludGVyZmFjZSB0byBhbGwgc2hlbGwgZm9sZGVycwoJLSBzbWFsbCBmaXhlcyB0byBzaGVsbHZpZXcgKGNyYXNoIHdpdGggbmF0aXZlIGNvbWRsZzMyKQoKCSogbG9hZGVyL3BlX2ltYWdlLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgdGhlIHJlbG9jYXRpb24gaGFjayBpbiBQRV9Jbml0VGxzLiBBZGRlZCBzb21lIG1vcmUgZm9yIHRoZSBvdGhlcgoJcG9pbnRlcmZpZWxkcyBpbiB0aGUgVExTIGVudHJ5LiAoV2l0aCB0ZXN0aW5nIGhlbHAgZnJvbSBKdXNzaQoJSnVtcHBhbmVuIDxqdXNzaWpAemV1c2VkaXQuY29tPikuCgoJKiByZWxheTMyL3VzZXIzMi5zcGVjLCB3aW5kb3dzL3VzZXIuYywgaW5jbHVkZS93aW51c2VyLmg6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIENoYW5nZURpc3BsYXlTZXR0aW5nc0V4QSBzdHViIGFuZCBzb21lIGZsYWcgZGVmaW5lcy4KCgkqIGluY2x1ZGUvY29uc29sZS5oOiBSb2JlcnQgJ0FkbWlyYWwnIENvZXltYW4gPGFkbWlyYWxAY29ybmVyLm5ldD4KCUFkZGVkIHRoZSBoZXggdHJpcGxldHMgdG8gdGhlIGNvbnNvbGUgY29sb3IgZGVmaW5pdGlvbnMuCgoJKiB3aW5kb3dzL3R0eWRydi9ldmVudC5jLCB3aW5kb3dzL3R0eWRydi9pbml0LmMsIHdpbmRvd3MvdHR5ZHJ2L21vdXNlLmMsIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIHdpbmRvd3MveDExZHJ2L2luaXQuYywgd2luZG93cy94MTFkcnYvbW91c2UuYywgaW5jbHVkZS9pbnB1dC5oLCBpbmNsdWRlL21lc3NhZ2UuaCwgaW5jbHVkZS9tb3VzZS5oLCBpbmNsdWRlL3R0eWRydi5oLCBpbmNsdWRlL3gxMWRydi5oLCBvYmplY3RzL2N1cnNvcmljb24uYywgd2luZG93cy9kaW5wdXQuYywgd2luZG93cy9ldmVudC5jLCB3aW5kb3dzL2lucHV0LmMsIHdpbmRvd3MvbW91c2UuYywgd2luZG93cy93aW5wb3MuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglBZGRlZCB0aGUgcG9zc2liaWxpdHkgdG8gaGF2ZSBtb3VzZSBtb3ZlbWVudHMgcmVwb3J0ZWQgcmVsYXRpdmUgdG8KCVdpbmUncyBtb3VzZSBkcml2ZXIuCgoJKiBNYWtlZmlsZS5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvaWNtcC8uY3ZzaWdub3JlLCBkbGxzL2ljbXAvTWFrZWZpbGUuaW4sIGRsbHMvaWNtcC9pY21wLnNwZWMsIGRsbHMvaWNtcC9pY21wX21haW4uYywgaW5jbHVkZS9kZWJ1Z2RlZnMuaCwgaW5jbHVkZS93aW5lL2ljbXBhcGkuaCwgaW5jbHVkZS93aW5lL2lwZXhwb3J0LmgsIGxvYWRlci9sb2Fkb3JkZXIuYywgcmVsYXkzMi9idWlsdGluMzIuYywgd2luZS5pbmk6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCUFkZGVkIElDTVAgRExMIGltcGxlbWVudGF0aW9uLgoKCSogdG9vbHMvd3JjL2R1bXByZXMuYywgdG9vbHMvd3JjL2dlbnJlcy5jLCB0b29scy93cmMvbmV3c3RydWMuYywgdG9vbHMvd3JjL25ld3N0cnVjLmgsIHRvb2xzL3dyYy9wYXJzZXIueSwgdG9vbHMvd3JjL3dyYy5oLCB0b29scy93cmMvd3JjdHlwZXMuaCwgdG9vbHMvd3JjL0NIQU5HRVM6CglKdWVyZ2VuLlNjaG1pZWRAZGViaXRlbC5uZXQKCS0gQnVnZml4OiBTdHlsZXMgd2VyZSBldmFsdWF0ZWQgYXMgZXhwcmVzc2lvbnMuIFRoZSBOT1QgaW4gY29tYmluYXRpb24KCSAgd2l0aCBzdHlsZSBmbGFncyB3YXMgbm90IG92ZXJ3cml0aW5nIHRoZSBkZWZhdWx0IHN0eWxlcyBsaWtlIFdTX1ZJU0lCTEUuCgkgIFNvbHZlZCBieSBpbnRyb2R1Y2luZyBvd24gcnVsZXMgZm9yIHBhcnNpbmcgc3R5bGVzLgoKCSogY29udHJvbHMvY29tYm8uYzogSmltIEFzdG9uIDxqaW1hQGNvcmVsLmNhPgoJRml4ZWQgdGhlIGhlaWdodCBvZiB0aGUgQ29tYm9Cb3ggZHJvcCBsaXN0LgoKCSogd2luZG93cy9kaWFsb2cuYzogRGF2aWQgR3JhbnQgPGRhdmlkZ3JhQGNvcmVsLmNhPgoJV2luZG93cyBzZW5kcyBXTV9HRVRETEdDT0RFIG9ubHkgaW4gcmVzcG9uc2UgdG8ga2V5Ym9hcmQgbWVzc2FnZXMKCShXTV9LRVlET1dOLCBXTV9DSEFSLCBXTV9TWVNDSEFSKS4KCgkqIGluY2x1ZGUvd2luZS9vYmpfYmFzZS5oOiBQZXRlciBIdW5uaXNldHQgPGh1bm5pc2VAbm9ydGVsbmV0d29ya3MuY29tPgoJLSBBZGRlZCBtaXNzaW5nIF9fYXR0cmlidXRlX18gKChjb21faW50ZXJmYWNlKSkgZm9yIElVbmtub3duIHdpdGguCgkgIElDT01fVVNFX0NPTV9JTlRFUkZBQ0VfQVRUUklCVVRFCgktIFNtYWxsIGFkZGl0aW9uIHRvIGNvbW1lbnRzIHN1cnJvdW5kaW5nCgkgIElDT01fVVNFX0NPTV9JTlRFUkZBQ0VfQVRUUklCVVRFICJvcHRpb24iLgoKCSogb2xlL29sZTJubHMuYywgaWYxNjMyL29sZTJubHMuc3BlYzoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUltcGxlbWVudGF0aW9uIG9mIFJlZ2lzdGVyTkxTSW5mb0NoYW5nZWQuCgoJKiBzY2hlZHVsZXIvY3JpdHNlY3Rpb24uYywgd2luZG93cy9xdWV1ZS5jLCBtZW1vcnkvaGVhcC5jOgoJSmFtZXMgQWJiYXRpZWxsbyA8YWJiZXlqQHdwaS5lZHU+CglBZGRyZXNzZXMgaXNzdWVzIHdpdGggbXVsdGlwbGUgcHJvY2Vzc2VzIGFjY2Vzc2luZyBub24tZ2xvYmFsIGNyaXRpY2FsCglzZWN0aW9ucy4KCgkqIHNlcnZlci9zb2NrLmM6IEplcmVteSBXaGl0ZSA8andoaXRlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVkIGJ1ZyBpbiBXSU5TT0NLX2FjY2VwdCB3aGVuIG5vIGV2ZW50IGlzIHByZXNlbnQuCgoJKiBkbGxzL3Jhc2FwaTMyL3Jhc2FwaS5jLCBpbmNsdWRlL2xtY29ucy5oLCBpbmNsdWRlL3Jhcy5oOgoJUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCUFkZGVkIHN0dWJzIGZvciBSYXNFbnVtRW50cmllc0EgYW5kIFJhc0dldEVudHJ5RGlhbFBhcmFtc0EuCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmMsIGRsbHMvY29tbWRsZy9maWxlZGxnYnJvd3Nlci5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZ2Jyb3dzZXIuaDoKCVVscmljaCBDemVrYWxsYSA8dWxyaWNoY0Bjb3JlbC5jYT4KCUltcGxlbWVudGF0aW9uIG9mIGN1c3RvbSBkaWFsb2cgbWVzc2FnZXMgYW5kIG5vdGlmaWNhdGlvbnMuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6IERhdmlkIEdyYW50IDxkYXZpZGdyYUBjb3JlbC5jYT4KCS0gUHJvcGVyIGluaXRpYWxpemF0aW9uIG9mIGNjaFRleHRNYXggZmllbGQgd2FzIGFkZGVkIGZvcgoJICBUVk5fR0VURElTUElORk8gbm90aWZpY2F0aW9uIG1lc3NhZ2UuCgktIFRWTV9TRVRJVEVNIHNob3VsZCB1cGRhdGUgJ21hc2snIGZpZWxkIHRvIHN5bmNocm9uaXplIGl0IHdpdGgKCSAgY3VycmVudCBpdGVtIHN0YXRlLgoKCSogZ3JhcGhpY3MvcHNkcnYvcHBkLmM6IEh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUlmIFBhZ2VTaXplL0lucHV0U2xvdCBlbnRyeSBkb2Vzbid0IGNvbnRhaW4gYW4gb3B0aW9ucyB0cmFuc2xhdGlvbgoJc3RyaW5nIHVzZSB0aGUgb3B0aW9uIG5hbWUgaW5zdGVhZC4KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgU2V0VGl0bGVBIHdoZW4gc3RyaW5nIHJlc291cmNlcyB3ZXJlIHRvIGJlIGxvYWRlZC4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogUGllcnJlIE1hZ2VhdSA8cGllcnJlQG1hY2FkYW1pYW4uY29tPgoJLSBGaXhlZCBhbiBlcnJvciBmb3Igc2Nyb2xsaW5nIGluIExpc3R2aWV3IChzb21ldGltZXMgYSBjb2x1bW4gd291bGQKCSAgbm90IGJlIHZpc2libGUpIGR1ZSB0byBteSBsYXN0IGNoZWNraW4uCgktIEZpeGVkIGFuIGVycm9yIGZvciB0aGUgaGVhZGVyIGNvbnRyb2wgd2hlbiB0aGUgTGlzdHZpZXcgaXMgcmVzaXplZCB3aXRoIFdNX1NJWkUKCS0gRml4ZWQgdGhlIHNjcm9sbGluZyBmb3Igc21hbGwgYW5kIGxhcmdlIGljb24gKHRoaXMgYnJva2UgYmVjYXVzZSBvZgoJICB0aGUgdXNlIG9mIFNCX1BBR0UgaW4gc2Nyb2xsSW5mbykKCS0gQWRkZWQgYSBwYXRjaCBtYWRlIGJ5IE5vb21lbiBIYW16YSB0byB1cGRhdGUgdGhlIGl0ZW0gd2lkdGggd2hlbgoJICBhZGRpbmcgYSBuZXcgaXRlbQoKCSogc2VydmVyL3NvY2suYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglIYW5kbGUgc29ja2V0IGNyZWF0aW9uIGVycm9ycy4KCgkqIGNvbnRyb2xzL21lbnUuYzogS2FybCBMZXNzYXJkIDxrYXJsbEBjb3JlbC5jb20+CglXaGVuIGEgcG9wdXBtZW51IGlzIGN1cnJlbnRseSBhY3RpdmUgb24gdGhlIHNjcmVlbiwgaXQgc2hvdWxkbid0CglyZW1vdmUgbW91c2UgY2xpY2sgbWVzc2FnZXMgdGhhdCBkb24ndCBiZWxvbmcgdG8gaXQgZnJvbSB0aGUgcXVldWUuCgoJKiB3aW5kb3dzL3gxMWRydi9jbGlwYm9hcmQuYzogSnVlcmdlbiBMb2NrIDxub3hAamVsYWwua24tYnJlbWVuLmRlPgoJRXhlYyBgd2luZWNsaXBzcnYnIG5vdCBgd2luZWNsaXBzdnInLCBhbmQgZG9uJ3QgaW5oZXJpdCB3aW5lJ3MgWAoJc29ja2V0cyB0byBpdCAob3RoZXJ3aXNlIHdpbmRvd3Mgc3RheSBhcm91bmQgd2hlbiB3aW5lIGhhbmdzKS4KClRodSBOb3YgIDQgMDI6NTE6MjQgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGxvYWRlci9tYWluLmM6IEZpeGVkIC1kZWJ1Z21zZyArc2VydmVyLgoKCSogc2NoZWR1bGVyL2hhbmRsZS5jOgoJQWRkZWQgc3BlY2lhbCBoYW5kbGluZyBmb3IgdGhlIHN0ZGlvIGhhbmRsZXMgaW4gQ2xvc2VIYW5kbGUuCgoJKiBzZXJ2ZXIvaGFuZGxlLmM6CglNYWRlIGFsbCBoYW5kbGVzIG11bHRpcGxlIG9mIDQuIEZpeGVkIHNlbWFudGljcyBmb3IgcHNldWRvLWhhbmRsZXMuCgoJKiBzZXJ2ZXIvZGVidWdnZXIuYzoKCUZyZWUgdGhlIGhhbmRsZXMgb2YgdGhlIGV2ZW50IHN0cnVjdHVyZSBpbiB0aGUgcmlnaHQgcHJvY2VzcyAodGhhbmtzCgl0byBKZXJlbXkgV2hpdGUpLgoKCSogZGxscy9kcGxheXgvTWFrZWZpbGUuaW4sIGRsbHMvZHBsYXl4L2RwbGF5LmMsIGRsbHMvZHBsYXl4L2RwbGF5eC5zcGVjLCBkbGxzL2RwbGF5eC9kcGxheXhfZ2xvYmFsLmMsIGRsbHMvZHBsYXl4L2RwbGF5eF9nbG9iYWwuaCwgZGxscy9kcGxheXgvZHBsYXl4X21haW4uYywgZGxscy9kcGxheXgvZHBsb2JieS5jLCBkb2N1bWVudGF0aW9uL3N0YXR1cy9kaXJlY3RwbGF5LCBpbmNsdWRlL2RwbGF5LmgsIGluY2x1ZGUvZHBsb2JieS5oOgoJUGV0ZXIgSHVubmlzZXR0IDxodW5uaXNlQG5vcnRlbG5ldHdvcmtzLmNvbT4KCS0gQWRkZWQgZHBsYXl4IExpYk1haW4gZm9yIGluaXRpYWxpemF0aW9uIG9mIGFsbCBkcGxheXggJ2dsb2JhbCcgZGF0YQoJLSBBZGRlZCBzdGFydCBmb3IgZ2xvYmFsIGRhdGEgbWFuaXB1bGF0aW9uCgktIFRPRE8gbGlzdCB1cGRhdGVkCgktIEFkZGVkIHNvbWUgbWlzc2luZyBoZWFkZXIgZmlsZSBkZWZpbml0aW9ucwoJLSBBZGRlZCB0aGUgYW5zaSB2ZXJzaW9ucyBvZiBkcGxheSBhbmQgZHBsb2JieQoJLSBGaXhlZCBpbnZhbGlkIG1hY3JvIGZvciBJRGlyZWN0UGxheTQKCS0gQ2xlYW5lZCB1cCBjb21waWxlciB3YXJuaW5ncwoJLSBNb3JlIGltcGxlbWVudGF0aW9uLCBidWcgZml4ZXMgYW5kIGNyaXRpY2FsIHJlZ2lvbiBwcm90ZWN0aW9uCgoJKiB3aW5kb3dzL3gxMWRydi9ldmVudC5jOiBLYXJsIExlc3NhcmQgPGthcmxsQGNvcmVsLmNvbT4KCU5ldmVyIHNlbmQgYSBXTV9DTE9TRSBtZXNzYWdlICB0byBhIHBvcHVwIHdpbmRvdy4KCgkqIHdpbmRvd3MveDExZHJ2L3duZC5jOiBLYXJsIExlc3NhcmQgPGthcmxsQGNvcmVsLmNvbT4KCUNoZWNrIGlmIHRoZSB3aW5kb3cgaXMgbWFuYWdlZCBiZWZvcmUgdHJ5aW5nIHRvIGdpdmUgaXQgZm9jdXMuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglFbmhhbmNlZCBsaW51eCBqb3lzdGljayBhcGkgZGV0ZWN0aW9uIHNsaWdodGx5LgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzoKCUphcm9zbGF3IFBpb3RyIFNvYmllc3playA8anNvYmllc3pAZWxrYS5wdy5lZHUucGw+CglBZGRlZCBQb2xpc2gga2V5Ym9hcmQgc3VwcG9ydC4KCgkqIGdyYXBoaWNzL3dpbjE2ZHJ2L3BydGRydi5jOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJQWRkIERDX1ZFUlNJT04gYW5kIERDX1RSVUVUWVBFIHRvIHdpbjE2ZHJ2IERldmljZUNhcGFiaWxpdGllcy4KCgkqIGdyYXBoaWNzL3BzZHJ2L3BwZC5jOiBIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglBZGQgYENhc3NldHRlJyB0byBQUEQgLT4gd2luZG93cyBwcmludGVyLWJpbiBtYXBwaW5nLgoKCSogbWVtb3J5L3N0cmluZy5jOiBNaWNoYWVsIE1jQ29ybWFjayA8bWNjb3JtYWNAYWFsczI3LmFsY2F0ZWwuY29tLmF1PgoJTW9kaWZpZWQgbHN0cmNweW5XdG9BIHRvIHB1dCB0ZXJtaW5hdGluZyBudWxsIGF0IGVuZCBvZiBzdHJpbmcsIG5vdAoJZW5kIG9mIGJ1ZmZlci4KCgkqIGluY2x1ZGUvd2luZS9vYmpfc3RvcmFnZS5oOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCVJlbW92ZWQgZHVwbGljYXRlIG1hY3JvIGRlZmluaXRpb25zIGZvciB0aGUgSVN0b3JhZ2UgYW5kIElTdHJlYW0gQ09NCglpbnRlcmZhY2VzLgoKCSogd2luZG93cy9kZWZ3bmQuYzogS2FybCBMZXNzYXJkIDxrYXJsbEBjb3JlbC5jb20+CglGaXhlZCBDT0xPUl9NQVggZGVmaW5pdGlvbiBmb3IgbmV3IFdpbjMyIHZhbHVlcy4KCgkqIG9iamVjdHMvZ2Rpb2JqLmM6IElhbiBTY2htaWR0IDxpc2NobWlkdEBjZmwucnIuY29tPgoJUmVtb3ZlZCB1bm5lY2Vzc2FyeSBVU0VSIGNhbGwgZnJvbSBHZXRGb250TWV0cmljcy4gRml4ZXMgbmF0aXZlIFVTRVIuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmMsIGluY2x1ZGUvbGlzdHZpZXcuaDoKCVVscmljaCBDemVrYWxsYSA8dWxyaWNoY0Bjb3JlbC5jYT4KCVNldCBwcm9wZXIgaXRlbSBmb2N1cyBvbiBEZWxldGVJdGVtLgoJQ2xlYW4gdXAgZWRpdCBsYWJlbCBpbXBsZW1lbnRhdGlvbi4KCgkqIGZpbGVzL2RyaXZlLmM6IFBldGVyIFNjaGxhaWxlIDx1ZGJ6QHJ6LnVuaS1rYXJsc3J1aGUuZGU+CglGaXhlZCBhIGxvbmcgc3RhbmRpbmcgKGFuZCBhbm5veWluZykgdHlwbywgdGhhdCBwcmV2ZW50ZWQKCUdldERpc2tGcmVlU3BhY2VBIGZyb20gd29ya2luZy4uLgoKCSogbWlzYy9yZWdpc3RyeS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUVuYWJsZSBzYWZlIHJlYWRpbmcgb2YgcmVnaXN0cnkgZmlsZSwgZXZlbiBpZiBmaWxlIGlzIGJyb2tlbi4KCgkqIHdpbjMyL25ld2Zucy5jOiBJYW4gU2NobWlkdCA8aXNjaG1pZHRAY2ZsLnJyLmNvbT4KCUNoYW5nZWQgT3BlbkRlc2t0b3Agc3R1YiB0byBXaW45eCBiZWhhdmlvciBmb3IgUXVpY2tUaW1lIDQuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClN1biBPY3QgMzEgMjI6MjY6MzUgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNjaGVkdWxlci9jbGllbnQuYzogU2V0IGNsb3NlLW9uLWV4ZWMgZmxhZyBvbiBzZXJ2ZXIgc29ja2V0LgoKCSogREVWRUxPUEVSUy1ISU5UUzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBleHBsYW5hdGlvbiBvbiBjcmVhdGluZyBhIG5ldyBETEwuCgoJKiBtaXNjL3ZlcnNpb24uYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglCZXR0ZXIgdmVyc2lvbiBhdXRvZGV0ZWN0aW9uLgoKCSogd2luZG93cy9kaWFsb2cuYzogVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hjQGNvcmVsLmNhPgoJSW1wbGVtZW50ZWQgc3VwcG9ydCBvZiBEU19DT05UUk9MIGFuZCBXU19FWF9DT05UUk9MUEFSRU5UIHN0eWxlcy4KCgkqIGdyYXBoaWNzL2RkcmF3LmM6IEl2YW4gZGUgU2FlZGVsZWVyIDxJdmFuZHNAc3ltcGF0aWNvLmNhPgoJRmFpbCB3aGVuIExQUkVDVCBjb250YWlucyBuZWdhdGl2ZSB2YWx1ZXMuCgoJKiB3aW5kb3dzL3gxMWRydi9ldmVudC5jOiBQaWVycmUgTWFnZWF1IDxwaWVycmVAbWFjYWRhbWlhbi5jb20+CglPbiBDb25maWd1cmVOb3RpZnksIGZpbmQgdGhlIGZpcnN0IHZpc2libGUgd2luZG93IGFib3ZlIHRoZSBjdXJyZW50IG9uZS4KCgkqIGRlYnVnZ2VyL2RiX2Rpc2FzbS5jOiBSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJQ29ycmVjdGVkIG9wZXJhbmQgc2l6ZXMgZm9yIHRoZSAiZW50ZXIiIGluc3RydWN0aW9uLgoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYzogVGh1eSBOZ3V5ZW4gPHRodXlAbWFjYWRhbWlhbi5jb20+CglQU01fQUREUEFHRSByZXR1cm5zIFRSVUUgb3IgRkFMU0UuCgoJKiBkbGxzL21zYWNtMzIvYnVpbHRpbi5jLCBkbGxzL21zYWNtMzIvTWFrZWZpbGUuaW4sIGRsbHMvbXNhY20zMi9kcml2ZXIuYywgZGxscy9tc2FjbTMyL2ludGVybmFsLmMsIGRsbHMvbXNhY20zMi9tc2FjbTMyX21haW4uYywgZGxscy9tc2FjbTMyL3N0cmVhbS5jLCBkbGxzL21zYWNtMzIvd2luZWFjbS5oLCBpbmNsdWRlL21zYWNtLmg6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCU1hZGUgbXNhY20zMiByZWFsbHkgbG9hZCBBQ00gZHJpdmVycy4KCgkqIGdyYXBoaWNzL3BhaW50aW5nLmM6IEppbSBBc3RvbiA8amltYUBjb3JlbC5jYT4KCVByZXZlbnQgRmlsbFJnbiBmcm9tIHVzaW5nIGEgTlVMTCBwb2ludGVyLgoKCSogbWlzYy9yZWdpc3RyeS5jOiBIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglGaXhlZCBhIGZldyBwcm9ibGVtcyB3aXRoIFJlZ0VudW1LZXkqLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jOiBVbHJpY2ggQ3pla2FsbGEgPHVscmljaGNAY29yZWwuY2E+CglJbXBsZW1lbnRhdGlvbiBvZiB1c2VyIGRlZmluZWQgdGVtcGxhdGVzLgoKCSogZGxscy9vbGUzMi9pZnMuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglJTWFsbG9jMTZfQ29uc3RydWN0b3I6IG1vdmVkIElDT01fVlRCTChUaGlzKSB3aGVyZSBpdCBiZWxvbmdzLgoKCSogY29udHJvbHMvc3RhdGljLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRG8gbm90IGNsZWFyIHRoZSBkcmF3aW5nIGFyZWEgZm9yIGV0Y2hlZCBzdGF0aWMgY29udHJvbHMuCglSZXBsYWNlZCBvdXIgb3duIGRyYXdpbmcgc3R1ZmYgaW4gZXRjaGVkIHN0YXRpYyBjb250cm9scyBieSBEcmF3RWRnZS4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogUGllcnJlIE1hZ2VhdSA8cGllcnJlQG1hY2FkYW1pYW4uY29tPgoJSW4gcmVwb3J0IHZpZXcgbW9kZSBvZiB0aGUgbGlzdHZpZXcgY29udHJvbCwgaW1wbGVtZW50ZWQgdGhlCglob3Jpem9udGFsIHNjcm9sbGJhciBmdW5jdGlvbmFsaXR5LgoKCSogd2luZG93cy9tZGkuYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgYSBzbWFsbCBidWcgaW4gdGhlIGJlaGF2aW9yIG9mIG1heGltaXplZCBNREkgY2hpbGRyZW4uCgoJKiBkbGxzL3dpbnNwb29sL2luZm8uYzogSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJUmV3cml0ZSBvZiBFbnVtUHJpbnRlcnMuCgoJKiBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jOiBUaHV5IE5ndXllbiA8dGh1eUBtYWNhZGFtaWFuLmNvbT4KCUZpbGwgaW4gdGhlIGh3bmRGcm9tIGZpZWxkIG9mIHRoZSBOTUhEUiBzdHJ1Y3R1cmUgd2hlbiBzZW5kaW5nCglub3RpZmljYXRpb25zLgoKCSogZmlsZXMvcHJvZmlsZS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVdoZW4gcmVhZGluZyBhIHByb2ZpbGUgZW50cnkgcmVtb3ZlIHRyYWlsaW5nIHF1b3RlIHdoZW4gdGhlcmUncyBhbgoJb3BlbmluZyBvbmUuCgoJKiBvYmplY3RzL2dkaW9iai5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglSZXR1cm4gY29ycmVjdCBoZWlnaHQgYW5kIHdpZHRoIGZvciBzdG9jayBmb250cyBpbiBHZXRPYmplY3QuCgoJKiBwcm9ncmFtcy9hdml0b29scy9hdmlwbGF5LmM6IENvbXBpbGUgZml4LgoKCSogcHJvZ3JhbXMvd2NtZC8uY3ZzaWdub3JlOiBBZGRlZCB3bWNkcmMuaAoKCSogZGxscy93aW5tbS9tbWlvLmM6IFVscmljaCBDemVrYWxsYSA8dWxyaWNoY0Bjb3JlbC5jYT4KCUFkZGVkIHN1cHBvcnQgZm9yIHRoZSBhZGRpdGlvbiBhbmQgcmVtb3ZhbCBvZiBjdXN0b20gSS9PIHByZW9jZWR1cmVzLgoKCSogZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvb2xlMzIuc3BlYzoKCUFiZXkgR2VvcmdlPGFiZXlAbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRlZCBQcm9nSURGcm9tQ0xTSUQuCgoJKiBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jLCBkbGxzL2NvbWN0bDMyL3JzcmMucmM6CglUaHV5IE5ndXllbiA8dGh1eUBtYWNhZGFtaWFuLmNvbT4KCVdpemFyZCBtb2RlIHByb3BlcnR5IHNoZWV0cyBoYXZlIGEgdGFiIGNvbnRyb2wuCgoJKiBsb2FkZXIvbG9hZG9yZGVyLmMsIHJlbGF5MzIvYnVpbHRpbjMyLmMsIE1ha2VmaWxlLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS9taWRpbWFwLy5jdnNpZ25vcmUsIGRsbHMvd2lubW0vbWlkaW1hcC9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS9taWRpbWFwL21pZGltYXAuYywgZGxscy93aW5tbS9taWRpbWFwL21pZGltYXAuc3BlYywgZGxscy93aW5tbS93YXZlbWFwLy5jdnNpZ25vcmUsIGRsbHMvd2lubW0vd2F2ZW1hcC9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS93YXZlbWFwL21zYWNtLnNwZWMsIGRsbHMvd2lubW0vd2F2ZW1hcC93YXZlbWFwLmMsIHdpbmUuaW5pOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBidWlsdC1pbiBtc2FjbS5kcnYgYW5kIG1pZGltYXAuZHJ2IGRyaXZlcnMuCgoJKiB0b29scy93aW5hcGlfY2hlY2svbmF0aXZlYXBpLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2NoZWNrLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2Z1bmN0aW9uLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2dsb2JhbC5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9sb2NhbC5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9vcHRpb25zLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX3BhcnNlci5wbToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBNaW5vciBmaXhlcyBhbmQgcmVvcmdhbml6YXRpb25zLgoJLSBBZGRlZCBjaGVja3MgZm9yIGRvY3VtZW50YXRpb24gaW5jb25zaXN0ZW5jaWVzLgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmMsIGRsbHMvd2lubW0vd2luZW9zcy9taWRpLmMsIGRsbHMvd2lubW0vd2luZW9zcy9taXhlci5jLCBkbGxzL3dpbm1tL3dpbmVvc3MvbW1hdXguYywgbWlzYy9wb3J0LmMsIG1pc2Mvd2luc29jay5jLCBtaXNjL3dpbnNvY2tfYXN5bmMuYywgZGxscy93aW5tbS9qb3lzdGljay5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglBZGRlZCBtaXNzaW5nIGNvbmZpZ3VyYXRpb24gI2lmOnMgYW5kICNpbmNsdWRlczpzLgoKCSogZGxscy9jcnRkbGwvY3J0ZGxsX21haW4uYywgZmlsZXMvZG9zX2ZzLmMsIG9iamVjdHMvZGN2YWx1ZXMuYywgZGxscy9hZHZhcGkzMi9jcnlwdC5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBkb2N1bWVudGF0aW9uLgoKCSogZGxscy93aW5tbS9tY2l3YXZlL01ha2VmaWxlLmluOiBQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCVNvbGFyaXMgbWFrZSBkb2Vzbid0IGxpa2UgdW5uZWNlc3NhcnkgXC4KCgkqIHByb2dyYW1zL2F2aXRvb2xzL2F2aXBsYXkuYywgd2luZG93cy9kaW5wdXQuYywgZGxscy9vbGUzMi9tZW1sb2NrYnl0ZXMuYywgZGxscy9vbGUzMi9tb25pa2VyLmMsIGRsbHMvb2xlMzIvb2xlb2JqLmMsIGRsbHMvb2xlMzIvc3RnX3N0cmVhbS5jLCBkbGxzL29sZTMyL3N0b3JhZ2UuYywgZGxscy9vbGUzMi9zdG9yYWdlMzIuYywgZGxscy9vbGUzMi9zdG9yYWdlMzIuaCwgZGxscy9zaGVsbDMyL2NvbnRtZW51LmMsIGRsbHMvc2hlbGwzMi9kYXRhb2JqZWN0LmMsIGRsbHMvc2hlbGwzMi9lbnVtaWRsaXN0LmMsIGRsbHMvc2hlbGwzMi9mb2xkZXJzLmMsIGRsbHMvc2hlbGwzMi9pZl9tYWNyb3MuaCwgZGxscy9zaGVsbDMyL3JlZ3N0cmVhbS5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLCBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9sZS5jLCBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmMsIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmMsIGRsbHMvc2hlbGwzMi9zaHZfYmdfY21lbnUuYywgZ3JhcGhpY3MvZDNkX3ByaXZhdGUuaCwgZ3JhcGhpY3MvZDNkZGV2aWNlcy5jLCBncmFwaGljcy9kM2RleGVjdXRlYnVmZmVyLmMsIGdyYXBoaWNzL2QzZGxpZ2h0LmMsIGdyYXBoaWNzL2QzZG1hdGVyaWFsLmMsIGdyYXBoaWNzL2QzZHRleHR1cmUuYywgZ3JhcGhpY3MvZDNkdmlld3BvcnQuYywgZ3JhcGhpY3MvZGRyYXcuYywgZ3JhcGhpY3MvZGRyYXdfcHJpdmF0ZS5oLCBkbGxzL2F2aWZpbDMyL2F2aWZpbGUuYywgZGxscy9kcGxheXgvZHBjbGFzc2ZhY3RvcnkuYywgZGxscy9kc291bmQvZHNvdW5kX21haW4uYywgZGxscy9vbGUzMi9iaW5kY3R4LmMsIGRsbHMvb2xlMzIvY2xpcGJvYXJkLmMsIGRsbHMvb2xlMzIvY29tcG9zaXRlbW9uaWtlci5jLCBkbGxzL29sZTMyL2hnbG9iYWxzdHJlYW0uYywgZGxscy9vbGUzMi9pZnMuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJR2VuZXJhbGl6ZWQgdGhlIHVzZSBvZiB0aGUgbmV3IElDT01fVkZJRUxEIGFuZCBJQ09NX1ZUQkwgbWFjcm9zLgoKCSogd2luZG93cy93aW4uYywgd2luZG93cy94MTFkcnYvd2luZWNsaXBzcnYuYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUZpeGVkIGEgY291cGxlIG9mIGNvbXBpbGVyIHdhcm5pbmdzLgoKCSogZGxscy9zaGVsbDMyL3BpZGwuYzogUGllcnJlIE1hZ2VhdSA8cGllcnJlQG1hY2FkYW1pYW4uY29tPgoJQSBjcmFzaCB3b3VsZCBvY2N1ciBpZiB0aGUgZmlsZSB0eXBlIGluIHJlcG9ydCBtb2RlIHdhcyBlbXB0eS4KCgkqIHdpbmRvd3Mva2V5Ym9hcmQuYzogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUNoYW5nZWQgdGhlIGluaXRpYWxpc2F0aW9uIG9mIHRoZSBLZXlTdGF0ZSBhcnJheS4KCgkqIG1pc2MvbHN0ci5jOiBIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglCZXR0ZXIgaGFuZGxpbmcgb2YgbmV3bGluZXMgaW4gRm9ybWF0TWVzc2FnZSouCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXggKHNvbWUpIGJhZCBiZWhhdmlvciB3aXRoIGJ1ZmZlciB1bmRlcnJ1bi4KCgkqIGRsbHMvd2lubW0vbW1zeXN0ZW0uYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBQbGF5U291bmQgcHJvYyBmb3Igbm9uIFBDTSBjb250ZW50LgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOiBVbHJpY2ggQ3pla2FsbGEgPHVscmljaGNAY29yZWwuY2E+CgktIFRyZWV2aWV3IHVzZXMgQ09MT1JfV0lORE9XIGNvbG9yIGluc3RlYWQgb2YgY2xyQmsgdG8gZmlsbCBiYWNrZ3JvdW5kLgoJLSBUcmVldmlldzogY29sb3JzIHJldHVybmVkIGJ5IFRWTV9HRVQqKkNPTE9SIGFyZSBtaXhlZCB1cC4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYzogUGllcnJlIE1hZ2VhdSA8cGllcnJlQG1hY2FkYW1pYW4uY29tPgoJQ2xpY2tpbmcgdGhlIGNvbWJvIGJveCB3b3VsZCBjYXVzZSBhIGNyYXNoIGlmIGl0IHdhcyBlbXB0eS4KCgkqIGdyYXBoaWNzL2VzY2FwZS5jLCBncmFwaGljcy93aW4xNmRydi9pbml0LmMsIGluY2x1ZGUvd2luZS93aW5nZGkxNi5oLCBtaXNjL3ByaW50ZHJ2LmM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglJdCBhcHBlYXJzIHRoYXQgU3RhcnREb2Mgc2VuZHMgdGhlIFNUQVJURE9DIGVzY2FwZSB3aXRoIHRoZSBET0NJTkZPCglzdHJ1Y3R1cmUgcG9pbnRlZCB0byB3aXRoIHRoZSBvdXRwdXQgZGF0YSBwYXJhbWV0ZXIuCgoJKiBncmFwaGljcy9mb250ZW5naW5lLmMsIGlmMTYzMi9nZGkuc3BlYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCVN0dWIgZm9yIEVuZ2luZVJlYWxpemVGb250RXh0ICh1c2VkIGJ5IHRoZSB3aW45OCBwc2NyaXB0IGRyaXZlcikuCgoJKiBkbGxzL2NvbWN0bDMyL3RhYi5jOiBOb29tZW4gSGFtemEgPG5vb21lbkBtYWNhZGFtaWFuLmNvbT4KCVNlbGVjdGVkIGJ1dHRvbiB3aXRoaW4gdGFiIGNvbnRyb2wgd2lsbCBiZSBwYWludGVkIHdpdGggdGhlIHJpZ2h0Cgljb2xvciBicnVzaC4KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmM6IFBpZXJyZSBNYWdlYXUgPHBpZXJyZUBtYWNhZGFtaWFuLmNvbT4KCURvIG5vdCBzZW5kIHR3byBQU05fS0lMTEFDVElWRSBtZXNzYWdlcy4KCgkqIHdpbmUuaW5pOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCWluaSB2YXJpYWJsZXMgZG8gbm90IGxpa2UgOyBjb21tZW50cyBhZnRlciB0aGVtICh0aGV5IGFyZSBub3Qgc2hlbGwKCXNjcmlwdHMpLiBGaXhlZCBhIHR5cG8gaW4gb25lIG9mIHRoZSBuYW1lcy4KCk1vbiBPY3QgMjUgMTU6NDM6MzYgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvZHBsYXl4L2RwbGF5LmMsIGRsbHMvZHBsYXl4L2RwbG9iYnkuYywgZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvaWZzLmMsIGluY2x1ZGUvd2luZS9vYmpfYmFzZS5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglBZGRlZCB0d28gbWFjcm9zLCBJQ09NX1ZGSUVMRCBhbmQgSUNPTV9WVEJMLCBzbyB0aGF0IHdoZW4gaW1wbGVtZW50aW5nCglhIENPTSBpbnRlcmZhY2Ugb25lIG5ldmVyIGhhcyB0byBuYW1lIHRoZSBscFZ0YmwgZmllbGQgZXhwbGljaXRseS4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlMmRpc3AuYzoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVN5c0FsbG9jU3RyaW5nTGVuMTYgbmVlZHMgdG8gaGFuZGxlIE5VTEwgcG9pbnRlcnMsIHRvby4KCgkqIG1lbW9yeS9sb2NhbC5jOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQnVnIGZpeC4KCgkqIHRvb2xzL2ZpbmRfZGVidWdfY2hhbm5lbHM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJRml4ZWQgc21hbGwgdHlwb3MgYW5kIHNsaWdodGx5IG91dGRhdGVkIGNvbW1lbnRzLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmM6CglJYW4gU2NobWlkdCA8aXNjaG1pZHRAY2ZsLnJyLmNvbT4KCVBhcnRpYWwgaW1wbGVtZW50YXRpb24gb2YgdGhlIFNoZWxsMzIgY2FsbCBXaW4zMkRlbGV0ZUZpbGUoKSwgcmVxdWlyZWQKCWJ5IElFNSdzIEV4cGxvcmVyLgoKCSogcHJvZ3JhbXMvd2luaGVscC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2ludmVyL01ha2VmaWxlLmluLCBwcm9ncmFtcy9yZWdhcGkvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3JlZ3Rlc3QvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3ZpZXcvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3djbWQvTWFrZWZpbGUuaW4sIHByb2dyYW1zL25vdGVwYWQvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3Byb2dtYW4vTWFrZWZpbGUuaW4sIE1ha2UucnVsZXMuaW4sIHByb2dyYW1zL2F2aXRvb2xzL01ha2VmaWxlLmluLCBwcm9ncmFtcy9jbG9jay9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvY21kbGd0c3QvTWFrZWZpbGUuaW4sIHByb2dyYW1zL2NvbnRyb2wvTWFrZWZpbGUuaW46CglBZGRlZCBkZXBlbmRlbmN5IG9uIHdpbmVzdHViLm8KClN1biBPY3QgMjQgMjI6MTM6NTUgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MvZGlucHV0LmMsIHRvb2xzL2J1aWxkLmMsIHRvb2xzL2ZudDJiZGYuYywgd2luMzIvY29uc29sZS5jLCB3aW4zMi9kZXZpY2UuYywgd2luMzIvZmlsZS5jLCB3aW4zMi9wcm9jZXNzLmMsIHJlbGF5MzIvc25vb3AuYywgc2NoZWR1bGVyL2NsaWVudC5jLCBzY2hlZHVsZXIvdGhyZWFkLmMsIHNlcnZlci9jb25zb2xlLmMsIHNlcnZlci9maWxlLmMsIHNlcnZlci9waXBlLmMsIHNlcnZlci9zb2NrLmMsIHNlcnZlci9zb2NrZXQuYywgbXNkb3MvaW50MjEuYywgb2JqZWN0cy9nZGlvYmouYywgaW5jbHVkZS9jb25maWcuaC5pbiwgbG9hZGVyL2Rvcy9kb3Ntb2QuYywgbG9hZGVyL2Rvcy9kb3N2bS5jLCBsb2FkZXIvZG9zL21vZHVsZS5jLCBsb2FkZXIvcGVfaW1hZ2UuYywgbWVtb3J5L2xkdC5jLCBkbGxzL3duYXNwaTMyL3dpbmFzcGkzMi5jLCBmaWxlcy9kaXJlY3RvcnkuYywgZmlsZXMvZG9zX2ZzLmMsIGdyYXBoaWNzL2RkcmF3LmMsIGdyYXBoaWNzL3gxMWRydi9kaWIuYywgZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jLCBkbGxzL3dpbmFzcGkvd2luYXNwaTE2LmMsIGNvbmZpZ3VyZS5pbiwgZGVidWdnZXIvc3RhYnMuYywgZGxscy9jcnRkbGwvY3J0ZGxsX21haW4uYywgY29uZmlndXJlOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIEFkZGVkIG1pc3NpbmcgY29uZmlndXJhdGlvbiAjaWY6cyBhbmQgI2luY2x1ZGVzOnMuCgktIE1pbm9yIGNvbmZpZ3VyYXRpb24gcmVsYXRlZCBjaGFuZ2VzLgoKCSogbWlzYy9yZWdpc3RyeS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU1hZGUgTG9hZEhvbWVSZWdpc3RyeUZpbGVzIGRlZmF1bHQgdG8gVFJVRS4KCgkqIGluY2x1ZGUvYXV0aG9ycy5oLCBpbmNsdWRlL2NvbW0uaCwgaW5jbHVkZS9kYXRldGltZS5oLCBpbmNsdWRlL21vbnRoY2FsLmgsIGluY2x1ZGUvbmV0c3BpLmgsIGluY2x1ZGUvbnRzZWNhcGkuaCwgaW5jbHVkZS9wc2Rydi5oLCBpbmNsdWRlL3dpbmUvb2JqX2Nvbm5lY3Rpb24uaCwgaW5jbHVkZS93aW5lL29ial9vbGV1bmRvLmgsIGluY2x1ZGUvd2luZS9vYmpfcGljdHVyZS5oLCBpbmNsdWRlL3dpbmUvb2JqX3Byb3BlcnR5LmgsIGluY2x1ZGUvd2luZS9vYmpfc2hlbGxleHRpbml0LmgsIGluY2x1ZGUvd2luZS93aW5uZXQxNi5oLCBpbmNsdWRlL3dpbnNwb29sLmgsIGluY2x1ZGUveG1hbGxvYy5oLCB0b29scy9tYWtlX2F1dGhvcnM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCU1hZGUgdGhlIGluY2x1ZGUgZmlsZXMgc2VsZi1zdWZmaWNpZW50LgoKCSogdG9vbHMvd2luYXBpX2NoZWNrLyo6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gRml4ZWQgdGhlIGxvbmcgbG9uZyBwcm9ibGVtLgoJLSBBZGRlZCBjb25maWd1cmUgaW5jbHVkZSBjb25zaXN0YW5jeSBjaGVja2luZy4KCS0gQWRkZWQgcHJvZ3Jlc3MgaW5kaWNhdG9yLgoJLSBCZWdhbiBzcGxpdHRpbmcgdXAgdGhlIHdpbjE2YXBpLmRhdCBhbmQgd2luMzJhcGkuZGF0IGZpbGVzLgoJLSBBZGRlZCB2YXJpb3VzIG1pbm9yIGNoZWNrcy4KCS0gTWlub3IgZml4ZXMuCgoJKiByZWxheTMyL2tlcm5lbDMyLnNwZWMsIHJlbGF5MzIvdXNlcjMyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGx3YXBpLnNwZWMsIGRsbHMvd2luMzJzL3czMnNrcm5sLnNwZWMsIGRsbHMvd2luc3Bvb2wvd2luc3Bvb2wuc3BlYywgZGxscy93bmFzcGkzMi93bmFzcGkzMi5zcGVjLCBkbGxzL29sZTMyL29sZTMyLnNwZWMsIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzIuc3BlYywgZGxscy9vbGVjbGkvb2xlY2xpMzIuc3BlYywgZGxscy9wc2FwaS9wc2FwaS5zcGVjLCBkbGxzL2F2aWZpbDMyL2F2aWZpbDMyLnNwZWMsIGRsbHMvY29tY3RsMzIvY29tY3RsMzIuc3BlYywgZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmMsIGRsbHMvY3J0ZGxsL2NydGRsbC5zcGVjLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvbnRkbGwvcmVnLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUFkZGVkIHNwZWMgZmlsZSBkZWNsYXJhdGlvbnMgZm9yIGFscmVhZHkgaW1wbGVtZW50ZWQgZnVuY3Rpb25zLgoKCSogZ3JhcGhpY3MvcGF0aC5jLCBpZjE2MzIvZ2RpLnNwZWMsIG9iamVjdHMvY2xpcHBpbmcuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQWRkZWQgV2luMTYgdmFyaWFudHMgb2YgZXhpc3RpbmcgV2luMzIgZnVuY3Rpb25zLgoKCSogZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jOiBQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCVNvbGFyaXMgY29tcGlsZSBmaXguCgoJKiBmaWxlcy9maWxlLmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJUmVtb3ZlIHByZWZpeGluZyBieSBhIHRpbGRlIGZvciBHZXRUZW1wRmlsZU5hbWUgMzJiaXRzLgoKCSogZGVidWdnZXIvZXhwci5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIG1pc3NpbmcgaW5jbHVkZS4KCgkqIHdpbmRvd3Mvd2luLmM6IFV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVdhcm4gdXNlcnMgdG8gdXNlIC10aGUgLWRlc2t0b3Agb3B0aW9uIHRvZ2V0aGVyIHdpdGggdGhlIG5hdGl2ZSB1c2VyIERMTHMuCgoJKiBsb2FkZXIvcmVzb3VyY2UuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVJldHVybiB0aGUgc2l6ZSBvZiB0aGUgbmVlZGVkIHJlc291cmNlIHdoZW4gYnVmZmVyIGlzIE5VTEwgZm9yIExvYWRTdHJpbmcoKS4KCgkqIGRsbHMvb2xlMzIvY2xpcGJvYXJkLmMsIHdpbmRvd3MvY2xpcGJvYXJkLmMsIHdpbmRvd3MvdXNlci5jLCB3aW5kb3dzL3gxMWRydi9NYWtlZmlsZS5pbiwgd2luZG93cy94MTFkcnYvY2xpcGJvYXJkLmMsIHdpbmRvd3MveDExZHJ2L3dpbmVjbGlwc3J2LmMsIHdpbmUuaW5pOgoJRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJRW5hYmxlZCB0aGUgcGVyc2lzdGVudCBjbGlwYm9hcmQgc2VydmVyLgoKCSogbWlzYy9yZWdpc3RyeS5jLCB3aW5lLmluaTogTmF0aGFuaWVsIDx3ZmlsYXJkb0BmdXNlLm5ldD4KCUltcHJvdmVkIHJlZ2lzdHJ5IGlzb2xhdGlvbiBwb3NzaWJpbGl0aWVzLgoKCSogbXVsdGltZWRpYS8qLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVNwbGl0IHRoZSBtdWx0aW1lZGlhLyBkaXJlY3RvcnkgaW50byBkbGxzLyBzdWJkaXJlY3Rvcmllcy4KCgkqIG11bHRpbWVkaWEvd2lubW0ucmMsIG11bHRpbWVkaWEvd2lubW1fUHQucmMsIHByb2dyYW1zL2Nsb2NrL0NoYW5nZUxvZywgcHJvZ3JhbXMvY2xvY2svUHQucmMsIHByb2dyYW1zL25vdGVwYWQvQ2hhbmdlTG9nLCBwcm9ncmFtcy9ub3RlcGFkL0ZyLnJjLCBwcm9ncmFtcy9ub3RlcGFkL1B0LnJjLCBwcm9ncmFtcy9ub3RlcGFkL1dhLnJjLCBwcm9ncmFtcy9wcm9nbWFuLy5jdnNpZ25vcmUsIHByb2dyYW1zL3Byb2dtYW4vQ2hhbmdlTG9nLCBwcm9ncmFtcy9wcm9nbWFuL1B0LnJjLCBwcm9ncmFtcy93aW5oZWxwLy5jdnNpZ25vcmU6CglHdXN0YXZvIEp1bmlvciBBbHZlcyA8YWx2ZXNAY29ycmVpb25ldC5jb20uYnI+CglNb3JlIFBvcnR1Z3Vlc2UgbGFuZ3VhZ2Ugc3VwcG9ydC4KCgkqIG9iamVjdHMvZGliLmM6IE1hdHRoZXcgSi4gRnJhbmNpcyA8YXNiZWxAZGlhbC5waXBleC5jb20+CglGaXhlZCB0b3AtZG93biBESUIgaGFuZGxpbmcgaW4gU3RyZXRjaERJQml0czMyKCkuCgoJKiBpbmNsdWRlL3dpbmRvd3N4Lmg6IFBldGVyIEh1bm5pc2V0dCA8aHVubmlzZUBub3J0ZWxuZXR3b3Jrcy5jb20+CglBZGRlZCBtYWNybyBkZWZpbml0aW9ucyBmb3IgbWVtb3J5IGFsbG9jYXRpb24uCgoJKiBncmFwaGljcy94MTFkcnYveGZvbnQuYywgaW5jbHVkZS9nZGkuaCwgaW5jbHVkZS94MTFmb250LmgsIG9iamVjdHMvZm9udC5jOgoJVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hjQGNvcmVsLmNhPgoJTWFrZSBzdXJlIHRoYXQgYWxsIGNhbGxzIHVzZSB0aGUgZXh0ZW5kZWQgc3RydWN0dXJlcyB3aGljaCBhcmUgYQoJc3VwZXJzZXQgb2YgdGhlIHJlZ3VsYXIgc3RydWN0dXJlcy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogUGllcnJlIE1hZ2VhdSA8cGllcnJlQG1hY2FkYW1pYW4uY29tPgoJQWRkZWQgdGhlIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIHRodW1iIHRyYWNrLgoKCSogd2luZG93cy9mb2N1cy5jOiBBZHJpYW4gVGh1cnN0b24gPGFkcmlhbnRAY29yZWwuY29tPgoJRG8gbm90IHNldCBmb2N1cyB0byBhIGRpc2FibGVkIHdpbmRvdy4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6IFBpZXJyZSBNYWdlYXUgPHBpZXJyZUBtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIGFuIGVudHJ5IGluIHRoZSBrZXlib2FyZCB0cmFuc2xhdGlvbiB0YWJsZSBmb3IgQ3RybC1CcmVhay4KCgkqIGluY2x1ZGUvZGVidWdkZWZzLmgsIHNjaGVkdWxlci9kZWJ1Z2dlci5jOgoJVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hjQGNvcmVsLmNhPgoJTmV3IGNoYW5uZWwgJ2RlYnVnc3RyJyB1c2VkIHRvIHByaW50IE91dHB1dERlYnVnU3RyaW5nIEFQSSBjYWxscy4KCgkqIHdpbmRvd3Mvbm9uY2xpZW50LmMsIHdpbmRvd3MveDExZHJ2L2V2ZW50LmM6CglOb29tZW4gSGFtemEgPG5vb21lbkBtYWNhZGFtaWFuLmNvbT4KCVBvcHVwIHdpbmRvd3Mgd2lsbCBiZSBoaWRkZW4gd2hlbiB3ZSBtaW5pbWl6ZSBhIG1haW4gZnJhbWUgb3Igc2hvd24KCXdoZW4gd2UgbWF4aW1pemUgb3IgcmVzdG9yZSBhIG1pbmltaXplZCBtYWluIGZyYW1lLgoKU2F0IE9jdCAyMyAyMzo1OTo0NyAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYzogVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hjQGNvcmVsLmNhPgoJUHJvcGVydHlTaGVldCBkaWRuJ3QgZGVzdHJveSBwYWdlIGRpYWxvZydzIHdpbmRvdyB3aGlsZSByZW1vdmluZyBwYWdlLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBQaWVycmUgTWFnZWF1IDxwaWVycmVAbWFjYWRhbWlhbi5jb20+CglVcGRhdGUgdGhlIGl0ZW0gd2lkdGggdXBvbiBhIG5ldyBjb2x1bW4gaW4gdGhlIGhlYWRlciBjb250cm9sLgoKCSogZGxscy9udGRsbC9leGNlcHRpb24uYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglSZW9yZGVyIHBhcmFtZXRlcnMgdG8gZml4IHBvc2l0aW9uIG9mIGJhc2UgcmVnIHJlbGF0aXZlIHRvIGV4Y2VwdGlvbgoJZnJhbWUuCgoJKiBkb2N1bWVudGF0aW9uL01ha2VmaWxlLmluOiBGaXhlZCB0eXBvLgoKCSogaW5jbHVkZS8qLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCURlZmluZSB0aGUgQ09NIG1hY3JvcyBldmVuIGluIEMrKy4KCgkqIGNvbnRyb2xzL21lbnUuYywgd2luZG93cy9tZGkuYzogUGllcnJlIE1hZ2VhdSA8cGllcnJlQG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgbG9vcCB3aXRoIFdNX1NZU0NIQVIuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2x0aXBzLmM6IEpvc2h1YSBUaGllbGVuIDx0aGllbGVuQG5ldHBlcnNvbi5uZXQ+CglGaXhlZCB0b29sdGlwcyBwb3NpdGlvbmluZy4KCgkqIGdyYXBoaWNzL3gxMWRydi9kaWIuYzogUmUtYXBwbGllZCBsb3N0IGNoYW5nZS4KCgkqIGxvYWRlci90YXNrLmM6IFV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUlnbm9yZSB3cm9uZyBoSW5zdGFuY2UuCgoJKiBpbmNsdWRlL21pc2NlbXUuaCwgbXNkb3MvaW50MTAuYywgbXNkb3MvaW50ZXJydXB0cy5jOgoJUm9iZXJ0ICdBZG1pcmFsJyBDb2V5bWFuIDxhZG1pcmFsQGNvcm5lci5uZXQ+CglSZXBvcnQgbm9uLWhlcmN1bGVzIHZpZGVvLiBUdXJuZWQgb24gaW50IDJhLgoKCSogaW5jbHVkZS9maWxlLmgsIGluY2x1ZGUvd2luYmFzZS5oLCBsb2FkZXIvbW9kdWxlLmMsIGZpbGVzL2ZpbGUuYzoKCUppbSBBc3RvbiA8amltYUBjb3JlbC5jYT4KCUZpeGVkIGNvbXBpbGluZyB3aXRoIFNUUklDVC4KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmM6IEFkcmlhbiBUaHVyc3RvbiA8YWRyaWFudEBjb3JlbC5jb20+CglQcm9wZXIgcmVzb3VyY2Ugc3VwcG9ydCBmb3IgZGlhbG9nIHRpdGxlLgoKCSogaW5jbHVkZS9kbGdzLmg6IFVscmljaCBDemVrYWxsYSA8dWxyaWNoY0Bjb3JlbC5jYT4KCUZpeGVkIHNvbWUgd3JvbmcgZGVmaW5lcy4KCgkqIG9iamVjdHMvYnJ1c2guYzogVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hjQGNvcmVsLmNhPgoJQ29weSBiaXRtYXBzIHByb3Blcmx5LgoKCSogaW5jbHVkZS9kZWJ1Z2dlci5oLCBkZWJ1Z2dlci9kYmcueSwgZGVidWdnZXIvaGFzaC5jLCBkZWJ1Z2dlci9tc2MuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWxsb3cgbG9hZGluZyBvZiBtb2R1bGVzIGRlYnVnIGluZm9ybWF0aW9uIGFmdGVyIGZpcnN0IGludm9jYXRpb24gb2YKCWRlYnVnZ2VyLgoKCSogZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jLCBkbGxzL3NoZWxsMzIvc2hsd2FwaS5zcGVjOgoJSmltIEFzdG9uIDxqaW1hQGNvcmVsLmNhPgoJQWRkZWQgYSBmZXcgc3R1YnMuCgoJKiBpbmNsdWRlL2xpc3R2aWV3LmgsIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCVVscmljaCBDemVrYWxsYSA8dWxyaWNoY0Bjb3JlbC5jYT4KCUltcGxlbWVudGF0aW9uIG9mIGVkaXQgbGFiZWxzLgoKCSogZ3JhcGhpY3MvZDNkZGV2aWNlcy5jLCBncmFwaGljcy9kM2R0ZXh0dXJlLmMsIGdyYXBoaWNzL2RkcmF3LmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUZpeGVkIHNvbWUgYW5vbnltb3VzIHVuaW9uIGFjY2Vzc2VzLgoKCSogY29udHJvbHMvbGlzdGJveC5jOiBBYmV5IEdlb3JnZSA8YWJleUBtYWNhZGFtaWFuLmNvbT4KCURyYXcgdGhlIGl0ZW0gdGV4dCBmcm9tIHRoZSB0b3Agb2YgdGhlIGl0ZW0gcmVjdC4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jLCBkbGxzL3NoZWxsMzIvc2hsdmlldy5jOgoJUGllcnJlIE1hZ2VhdSA8cGllcnJlQG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgdGhlIGFzY2VuZGluZyBhbmQgZGVzY2VuZGluZyBzb3J0IG9yZGVyIGZvciB0aGUgRmlsZSBEaWFsb2cuCgoJKiBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jOiBVbHJpY2ggQ3pla2FsbGEgPHVscmljaGNAY29yZWwuY2E+CgktIGFkZHMgY2FsbGluZyBhcHBsaWNhdGlvbiBkZWZpbmVkIGNhbGxiYWNrIGZ1bmN0aW9uIG9uY2UgUHJvcGVydFNoZWV0CgkgIERpYWxvZ2JveCBoYXMgYmVlbiBpbml0aWFsaXplZCBqdXN0IGFmdGVyIGNyZWF0aW5nIHRoZSB0YWIgY29udHJvbAoJLSBoYW5kbGUgdGhlIGNhc2Ugd2hlbiBwc3pDYXB0aW9uIHNwZWNpZmllcyBhIHJlc291cmNlIGluc3RlYWQgb2YgYSBzdHJpbmcKCgkqIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9waWRsLmgsIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYywgZGxscy9zaGVsbDMyL3Nodl9iZ19jbWVudS5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CgktIHJlbW92ZWQgYWxsIHVubmVjZXNzYXJ5ICJ3aW5hcGkiIGZyb20gaW50ZXJuYWwgX0lMKiBmdW5jdGlvbnMKCS0gYmV0dGVyIHBhcmFtZXRlciBjaGVja2luZyBmb3Igc2hlbGxmb2xkZXIKCS0gcmVtb3ZlZCBkZWFkIGNvZGUgZnJvbSBzaHZfYmdfY29udGV4dG1lbnUKCgkqIGdyYXBoaWNzL2RkcmF3LmMsIGdyYXBoaWNzL3ZnYS5jLCBpbmNsdWRlL2RkcmF3Lmg6CglKaW0gQXN0b24gPGppbWFAY29yZWwuY2E+CglBZGRlZCBhbm90aGVyIGFub255bW91cyB1bmlvbiB1c2luZyB0aGUgRFVNTVlVTklPTk5BTUUgc3R5bGUuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IFVscmljaCBDemVrYWxsYSA8dWxyaWNoY0Bjb3JlbC5jYT4KCVByb3Blcmx5IGNvcHkgdGV4dCBpbnRvIHVzZXIgc3VwcGxpZWQgYnVmZmVyLgoKCSogbWlzYy93aW5zb2NrLmMsIHJlbGF5MzIvd3NvY2szMi5zcGVjLCBzZXJ2ZXIvb2JqZWN0LmgsIHNlcnZlci9zb2NrLmMsIGlmMTYzMi93aW5zb2NrLnNwZWMsIGluY2x1ZGUvdGFzay5oLCBpbmNsdWRlL3dpbnNvY2suaCwgbG9hZGVyL21haW4uYywgbG9hZGVyL3Rhc2suYywgbWlzYy9tYWluLmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVdpbnNvY2sgcmV3cml0ZS4gU29ja2V0cyBhcmUgbm93IHByb3BlciB3aW4zMiBoYW5kbGVzLgoJSW50ZXJuYWwgc3RydWN0dXJlcyBhcmUgbm93IHJlYWxseSBpbnRlcm5hbC4KCgkqIGRsbHMvY29tY3RsMzIvdGFiLmM6IFVscmljaCBDemVrYWxsYSA8dWxyaWNoY0Bjb3JlbC5jYT4KCVRhYiBjb250cm9sIGRvZXNuJ3QgcmVmcmVzaCB0YWIgYXJlYSBvbiBUQ01fU0VUQ1VSU0VMLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGRsbHMvc2hlbGwzMi9zaGx3YXBpLnNwZWM6CglVbHJpY2ggQ3pla2FsbGEgPHVscmljaGNAY29yZWwuY2E+CglJbXBsZW1lbnRlZCBTdHJSQ2hyQS4KCgkqIGRlYnVnZ2VyL2RiZy55LCBkZWJ1Z2dlci9kZWJ1Zy5sLCBkZWJ1Z2dlci9leHByLmMsIGluY2x1ZGUvZGVidWdnZXIuaDoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBQZXJmb3JtIHByb3BlciBwcm9jZXNzIHNodXRkb3duIG9uICdxdWl0JyBhbmQgZXJyb3IuCgoJKiBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJU3R1YiBPcGVuVGhyZWFkVG9rZW4gJiBPcGVuUHJvY2Vzc1Rva2VuIGZvciBmYWlsdXJlIGluIFdpbjl4IG1vZGUuCgoJKiBpbmNsdWRlL3dpbnVzZXIuaDogSmltIEFzdG9uIDxqaW1hQGNvcmVsLmNhPgoJRml4ZWQgYSBzbWFsbCB0eXBvLgoKCSogd2luZG93cy9kaWFsb2cuYzogQWRyaWFuIFRodXJzdG9uIDxhZHJpYW50QGNvcmVsLmNvbT4KCVByb3RlY3QgYWdhaW5zdCB3cm9uZyByZXR1cm4gdmFsdWUgZnJvbSBXTV9JTklURElBTE9HLgoKCSogZ3JhcGhpY3MveDExZHJ2L2JpdG1hcC5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglSZW1vdmVkIGFuIGlsbGVnYWwgY2hhcmFjdGVyLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jOiBJYW4gU2NobWlkdCA8aXNjaG1pZHRAY2ZsLnJyLmNvbT4KCU5vdyBpbml0cyB0aGUgcG9saWN5IGNhY2hlIHdoZW4gc2hlbGwzMiBpcyBmaXJzdCBpbnN0YW50aWF0ZWQuCglNYXRjaGVzIFdpbmRvemUgYmVoYXZpb3IuCgoJKiBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW4sIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBkbGxzL3NoZWxsMzIvc2hwb2xpY3kuYywgZGxscy9zaGVsbDMyL3NocG9saWN5Lmg6CglJYW4gU2NobWlkdCA8aXNjaG1pZHRAY2ZsLnJyLmNvbT4KCVJlYWwgaW1wbGVtZW50YXRpb24gb2YgU0hSZXN0cmljdGVkKCksIGNsYXJpZmllZCBTSEluaXRSZXN0cmljdGVkKCkncwoJcm9sZSBhIGxpdHRsZSwgYWRkZWQgcG9saWN5IGRhdGEgdGFibGUuCgoJKiBkbGxzL29sZTMyL2lmcy5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVVzZSBzZWdtZW50ZWQgbHB2dGJsIHBvaW50ZXIgZm9yIElNYWxsb2MxNiBpbnRlcmZhY2UsIG5vdCBsaW5lYXIgb25lLgoKCSogd2luZG93cy94MTFkcnYvbW91c2UuYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJUmVwbGFjZWQgYSBYIGNhbGwgd2l0aCBhIFRTWCBjYWxsIGluIFhEUlZfTU9VU0VfU2V0Q3Vyc29yKCkuCgoJKiBkbGxzL2NvbWN0bDMyL3JzcmMucmM6IFVscmljaCBDemVrYWxsYSA8eWJpY3VidWtAdW1haWwuY29yZWwuY29tPgoJVGhlIHByb3BlcnR5IHNoZWV0IGRpYWxvZyBuZWVkcyBmbGFnIFdTX1ZJU0lCTEUuCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmM6IFBpZXJyZSBNYWdlYXUgPHBpZXJyZUBtYWNhZGFtaWFuLmNvbT4KCVNldCB0aGUgZGVmYXVsdCB2aWV3IGJ1dHRvbiB0byBMaXN0IGluIHRoZSBGaWxlRGlhbG9nLgoKCSogbG9hZGVyL25lL21vZHVsZS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IGRvbid0IHVzZSBHZXRNb2R1bGVIYW5kbGUxNiBpbiBMb2FkTW9kdWxlMTYvTkVfQ3JlYXRlUHJvY2Vzcy4KCgkqIGRlYnVnZ2VyL3R5cGVzLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgcG90ZW50aWFsIGNyYXNoIGluIHN0cmluZyB2YXJpYWJsZSBwcmludGluZy4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIFdNX0dFVEZPTlQgc3VwcG9ydC4KCgkqIGluY2x1ZGUvbWFpbi5oLCBsb2FkZXIvbWFpbi5jLCBtaXNjZW11L21haW4uYywgc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBkb24ndCBjYWxsIEV4aXRQcm9jZXNzKCkgYmVmb3JlIFNZU0xFVkVMX0luaXQoKS4KCgkqIG11bHRpbWVkaWEvbW1pby5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIHNvbWUgYnVncyAobW1pb09wZW4gd2l0aCAxNi8zMiBiaXQgc3RyYW5nZW5lc3MsIG1taW9Bc2NlbmQgJgoJbW1pb0Rlc2NlbmQgb2Zmc2V0IGFuZCBhbGlnbm1lbnQgaXNzdWVzKS4KCgkqIHdpbmRvd3MvY2xpcGJvYXJkLmM6IFVscmljaCBDemVrYWxsYSA8dWxyaWNoY0Bjb3JlbC5jYT4KCVdlIGFyZSBzdXBwb3NlZCB0byBkZWxldGUgdGhlIHBhbGV0dGUgb2JqZWN0IHdpdGggdGhlIERlbGV0ZU9iamVjdAoJZnVuY3Rpb24uCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IE5vb21lbiBIYW16YSA8bm9vbWVuQG1hY2FkYW1pYW4uY29tPgoJTGlzdHZpZXcgaXRlbXMgd2lsbCBiZSBkcmF3biB3aXRoIHRoZSByaWdodCBpdGVtIGRpbWVuc2lvbnMuCgoJKiBncmFwaGljcy9wc2Rydi90ZXh0LmM6IEx1YyBUb3VyYW5nZWF1IDxsdWNAbWFjYWRhbWlhbi5jb20+CglTb21lIHNtYWxsIGNvcnJlY3Rpb25zIHRvIHRoZSBFeHRUZXh0T3V0IGZ1bmN0aW9uLgoKCSogZGxscy9vbGUzMi9vbGUyLmM6IEZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCU1ha2Ugc3VyZSB0aGF0IHRoZSBkcm9wIGVmZmVjdCBvZiBhIERuRCBvcGVyYXRpb24gaXMgc2V0IHRvCglEUk9QRUZGRUNUX05PTkUgaWYgdGhlIHVzZXIgY2FuY2VsbGVkIHRoZSBvcGVyYXRpb24uCgoJKiBkbGxzL2NvbWN0bDMyL2FuaW1hdGUuYywgaW5jbHVkZS9hbmltYXRlLmg6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpcnN0IHdvcmtpbmcgdmVyc2lvbi4KCgkqIG11bHRpbWVkaWEvbWl4ZXIuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCB0aGUgbXV0ZSBjYXBhYmlsaXR5IHRvIG1vc3QgY29udHJvbCBsaW5lcy4KCgkqIHdpbmRvd3Mvd2luLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglVc2UgdGhlIG1vZHVsZSBoYW5kbGUsIGlmIENyZWF0ZVdpbmRvd0V4IGlzIGNhbGxlZCB3aXRoCgloSW5zdGFuY2U9PU5VTEwuCgoJKiBpbmNsdWRlL3dpbmUvdW5kb2NzaGVsbC5oOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIG1pc3NpbmcgcHJvdG90eXBlcyBmb3IgU3RyUmV0VG9CdWYoQXxXKS4KCldlZCBPY3QgMTMgMTY6MTc6MjMgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHByb2dyYW1zL2Nsb2NrLy5jdnNpZ25vcmUsIHByb2dyYW1zL25vdGVwYWQvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvcHJvZ21hbi8uY3ZzaWdub3JlOgoJQWRkZWQgUHQucy4KCgkqIG9iamVjdHMvZGliLmM6IEJhY2tlZCBvdXQgcHJldmlvdXMgY2hhbmdlIChicmVha3Mgd2l0aCBtZXRhZmlsZXMpLgoKCSogc2VydmVyL01ha2VmaWxlLmluLCBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvc29jay5jLCBzZXJ2ZXIvdHJhY2UuYywgaW5jbHVkZS9zZXJ2ZXIuaCwgaW5jbHVkZS93aW5zb2NrLmg6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUFkZGVkIHNvY2tldCBpbnRlcmZhY2UgdG8gd2luZXNlcnZlci4KCgkqIGxvYWRlci9sb2Fkb3JkZXIuYywgbG9hZGVyL21haW4uYywgbWlzY2VtdS9tYWluLmMsIHdpbmUuaW5pOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglDb3JyZWN0IGZpbGVuYW1lIGZvciBrZXJuZWwgbW9kdWxlIGlzIEtSTkwzODYuRVhFLgoKCSogZGxscy93aW5zcG9vbC93aW5zcG9vbC5zcGVjLCBkbGxzL3dpbm1tL3dpbmVvc3Mvd2luZW9zcy5zcGVjOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBtaXNzaW5nIChhbmQgbm93IHJlcXVpcmVkKSBmaWxlbmFtZSBkaXJlY3RpdmUuCgoJKiB0b29scy9idWlsZC5jLCBpbmNsdWRlL2J1aWx0aW4zMi5oOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBmaWxlbmFtZSB0byAzMiBiaXQgYnVpbHRpbiBtb2R1bGUgZGVzY3JpcHRvcnMuCgoJKiBpZjE2MzIvYnVpbHRpbi5jLCByZWxheTMyL2J1aWx0aW4zMi5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXggbG9hZGluZyBvZiBtb2R1bGVzOiBub3cgc2VhcmNoIGtleSBpcyBtb2R1bGUncyBmaWxlbmFtZSwgbm90Cgltb2R1bGUncyBuYW1lLgoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYywgZGxscy9jb21jdGwzMi90YWIuYzoKCVBpZXJyZSBNYWdlYXUgPHBpZXJyZUBtYWNhZGFtaWFuLmNvbT4KCVdoZW4gYW4gZXJyb3Igb2NjdXJyZWQgaW4gYSBwcm9wZXJ0eSBzaGVldCBiZWNhdXNlIG9mIGludmFsaWQgZGF0YSwKCWNsaWNraW5nIG9uIGFub3RoZXIgdGFiLCB3b3VsZCBhY3RpdmF0ZSB0aGUgbmV3IHRhYiBidXQga2VlcCB0aGUKCW9yaWdpbmFsIHByb3BlcnR5IHNoZWV0LgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jLCBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvcGlkbC5oLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmMsIGRsbHMvc2hlbGwzMi9zaHZfYmdfY21lbnUuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJLSBpbXBsZW1lbnRlZCBzb3J0aW5nIHRoZSBsaXN0dmlldyBieSBjbGlja2luZyBvbiB0aGUgY29sdW1uIGhlYWRlcgoJLSBpbXBsZW1lbnRlZCB0aGUgY29udGV4dCBtZW51IGVudHJ5cyBmb3Igc29ydGluZwoJLSBzb21lIG1vcmUgZnVuY3Rpb25zIHRvIGdhdGhlciBkYXRhIGZvcm0gcGlkbHMKCgkqIGRsbHMvY29tbWRsZy9jZGxnLmgsIGRsbHMvY29tbWRsZy9jZGxnMzIuYywgZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZ2Jyb3dzZXIuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJUmVtb3ZlZCBsaW5raW5nIGJ5IEdldFByb2NBZGRyZXNzIGZvciBTdHJSZXRUb0J1ZiBzaW5jIG5vdCBhbGwKCXZlcnNpb25zIG9mIHNobHdhcGkgZXhwb3J0aW5nIHRoaXMgZnVuY3Rpb24uCgoJKiBsb2FkZXIvbW9kdWxlLmM6IENocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJSmFtZXMgQWJiYXRpZWxsbyA8YWJiZXlqQHdwaS5lZHU+CglSZW1vdmVzIGV4dHJhbmVvdXMgY29tcGFyaXNvbiBvZiBkYXRhIHBvaW50ZWQgdG8gYnkgdGhlIHJlbG9jYXRpb24KCW9mZnNldCB3aGVuIG5vIHJlbG9jYXRpb24gZW50cmllcyBleGlzdC4KCgkqIGlmMTYzMi93cHJvY3Muc3BlYywgbG9hZGVyL25lL21vZHVsZS5jOgoJTWFyY3VzIE1laXNzbmVyIDxNYXJjdXMuTWVpc3NuZXJAbHN0LmRlPgoJV1BST0NTLkVOVFJZQUREUlBST0MgbmVlZHMgdG8gcmV0dXJuIHNvbWV0aGluZyBpbiBDWCB0b28gKGZpeGVzCglCTElOS0VSIHNlbGZleHRyYWN0aW5nIGV4ZWN1dGFibGVzKS4KCgkqIHdpbmRvd3MvZGlhbG9nLmM6IEFiZXkgR2VvcmdlIDxhYmV5QG1hY2FkYW1pYW4uY29tPgoJQ2hhbmdlZCBFbmREaWFsb2cgdG8gYmVoYXZlIGxpa2UgYXMgaW4gV2luZG93cy4KCUNhbGwgU2V0V2luZG93UG9zIGluc3RlYWQgb2YgU2hvd1dpbmRvdyBpbiBFbmREaWFsb2cuCgoJKiB3aW5kb3dzL3dpbnBvcy5jOiBBYmV5IEdlb3JnZSA8YWJleUBtYWNhZGFtaWFuLmNvbT4KCUNoYW5nZWQgV0lOUE9TX0NhbkFjdGl2YXRlIHRvIG5vdCB0byBjb25zaWRlciBXU19WSVNJQkxFIHN0eWxlLgoJQ29kZSBmb3IgYWN0aXZhdGluZyBhbmQgc2V0dGluZyBmb2N1cyB0byBvdGhlciB3aW5kb3dzIHdoZW4gYSB3aW5kb3cKCWlzIGhpZGRlbiwgaXMgbW92ZWQgdG8gU2hvd1dpbmRvdyBmcm9tIFNldFdpbmRvd1Bvcy4KCUFjdGl2YXRlIHRoZSB0b3AgbGV2ZWwgd2luZG93IGlmIGl0J3Mgbm90IGFjdGl2ZSBpbiBTaG93V2luZG93KFNXX1NIT1cpLgoKCSogZ3JhcGhpY3MveDExZHJ2L2RpYi5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIFgxMURSVl9ESUJfU2V0SW1hZ2VCaXRzIHdoZW4gY2FsbGVkIGZvciBSTEUgZW5jb2RlZCBkaWJzLgoKCSogb2JqZWN0cy9kaWIuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglPcHRpbWl6ZWQgU3RyZXRjaERJQml0cyB0byBjYWxsIFNldERJQml0c1RvRGV2aWNlICh3aGVuIHNyYyAmIGRzdAoJZGltZW5zaW9ucyBhcmUgZXF1YWwpLgoKCSogcHJvZ3JhbXMvbm90ZXBhZC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvbm90ZXBhZC9QdC5yYywgcHJvZ3JhbXMvcHJvZ21hbi9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvcHJvZ21hbi9QdC5yYywgcHJvZ3JhbXMvY2xvY2svTWFrZWZpbGUuaW4sIHByb2dyYW1zL2Nsb2NrL1B0LnJjOgoJR3VzdGF2byBKdW5pb3IgQWx2ZXMgPGFsdmVzQGNvcnJlaW9uZXQuY29tLmJyPgoJQWRkZWQgUG9ydHVndWVzZSBsYW5ndWFnZSBzdXBwb3J0LgoKCSogZGxscy9hdmlmaWwzMi9hdmlmaWxlLmMsIGRsbHMvZHBsYXl4L2RwbGF5LmMsIGRsbHMvZHBsYXl4L2RwbG9iYnkuYywgZGxscy9vbGVhdXQzMi90eXBlbGliLmMsIGRsbHMvc2hlbGwzMi9icnNmb2xkZXIuYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCVVzZSB0aGUgQ09NIG1hY3JvcyByYXRoZXIgdGhhbiBkaXJlY3RseSBhY2Nlc3NpbmcgdGhlIGxwdnRibCBmaWVsZC4KCgkqIGluY2x1ZGUvd2luZS93aW51c2VyMTYuaCwgbWlzYy9sc3RyLmMsIGlmMTYzMi91c2VyLnNwZWM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglVc2UgTG9hZFN0cmluZzE2IGZvciBGb3JtYXRNZXNzYWdlMTYgYW5kIGhhbmRsZQoJRk9STUFUX01FU1NBR0VfQUxMT0NBVEVfQlVGRkVSIGZsYWcuCgoJKiBncmFwaGljcy9wc2Rydi90ZXh0LmM6IEx1YyBUb3VyYW5nZWF1IDxsdWNAbWFjYWRhbWlhbi5jb20+CglTb21lIGFkanVzdG1lbnRzIHRvIEV4dFRleHRPdXQuCgoJKiBpbmNsdWRlL3BzZHJ2LmgsIGdyYXBoaWNzL3BzZHJ2L2NsaXBwaW5nLmMsIGdyYXBoaWNzL3BzZHJ2L2luaXQuYywgZ3JhcGhpY3MvcHNkcnYvcHMuYzoKCVN0ZXBoYW5lIEx1c3NpZXIgPHN0ZXBoYW5lQG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgdGhlIGNsaXBwaW5nIGZvciB0aGUgcG9zdHNjcmlwdCBkcml2ZXIgYW5kIHR1cm5lZCBpdCBvbiAoYnkgc2V0dGluZwoJUFNEUlZfU2V0RGV2aWNlQ2xpcHBpbmcgaW4gdGhlIGZ1bmN0aW9uIHRhYmxlKS4KCgkqIGZpbGVzL2RyaXZlLmM6IFV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUFjY291bnQgZm9yIHRoZSB0cmFpbGluZyBOVUxMIGluIEdldExvZ2ljYWxEcml2ZVN0cmluZ3NBLgoKCSogaW5jbHVkZS93aW5lL29ial9vbGVhdXQuaDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglGaXhlZCBhIHR5cG8gaW4gYSBmdW5jdGlvbiBkZWNsYXJhdGlvbi4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6IFpvbHRhbiBLb3ZhY3MgPG9yaXRlbGVAYWxhcm1peC5uZXQ+CglBZGRlZCBIdW5nYXJpYW4ga2V5Ym9hcmQgc3VwcG9ydC4KCgkqIHdpbmRvd3MvbWRpLmMsIHdpbmRvd3Mvd2lucG9zLmM6IFRodXkgTmd1eWVuIDx0aHV5QG1hY2FkYW1pYW4uY29tPgoJV2UgaGF2ZSB0byBhY3RpdmF0ZSBNREkgY2hpbGQgd2luZG93cy4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglVc2UgR2V0fFNldFByb3BBIHRvIHN0b3JlIGxQYXJhbSB0byByZXRyaWV2ZSB0aGUgT1BFTkZJTEVOQU1FMTYgZm9yIGEKCWhXbmQuCgoJKiBncmFwaGljcy94MTFkcnYvZ3JhcGhpY3MuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCUNvcnJlY3QgdXNhZ2Ugb2YgYSBzY3JhdGNoIGFycmF5IGluIFgxMURSVl9Qb2x5QmV6aWVyLgoKCSogY29udHJvbHMvY29tYm8uYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglNYWtlIFdNX0dFVFRFWFRMRU5HVEggcmV0dXJuIGxlbmd0aCBmb3IgZHJvcGRvd25saXN0IGNvbWJvcy4KCgkqIGNvbnRyb2xzL2J1dHRvbi5jOiBGcmFuY29pcyBCb2lzdmVydCA8ZnJhbmNvaXNAbWFjYWRhbWlhbi5jb20+CglSZW1vdmVkIEZpbGxSZWN0IGluIHRoZSBvd25lcmRyYXduIGJ1dHRvbiBwcm9jZWR1cmUuCgoJKiB3aW5kb3dzL3gxMWRydi9ldmVudC5jOiBBYmV5IEdlb3JnZSA8YWJleUBtYWNhZGFtaWFuLmNvbT4KCU1ha2Ugc3VyZSB0aGUgRm9jdXMgT3V0IHdpbmRvdyBpcyBzdGlsbCB0aGUgRm9yZWdyb3VuZCB3aW5kb3cgYmVmb3JlCglkb2luZyBTZXRGb3JlZ3JvdW5kV2luZG93KDApIGluIEV2ZW50X0ZvY3VzT3V0LgoKCSogZ3JhcGhpY3MveDExZHJ2L3BhbGV0dGUuYzogQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglKYW1lcyBBYmJhdGllbGxvIDxhYmJleWpAd3BpLmVkdT4KCUZpeGVzIHByb2JsZW1zIHdpdGggY29sb3IgZHJpZnQgd2hlbiBzd2l0Y2hpbmcgdG8vZnJvbQoJbG9naWNhbC9waHlzaWNhbCBjb2xvcnMuCgoJKiBkbGxzL2NvbWN0bDMyL2hlYWRlci5jOiBUaHV5IE5ndXllbiA8dGh1eUBtYWNhZGFtaWFuLmNvbT4KCU1vdXNlIHBvc2l0aW9uIGlzIHNpZ25lZC4KCgkqIHdpbmRvd3Mvc3lzY29sb3IuYzogTm9vbWVuIEhhbXphIDxub29tZW5AbWFjYWRhbWlhbi5jb20+CglTZXQgdGhlIENPTE9SXzNETElHSFQgc3lzdGVtIGNvbG9yIHRvIHRoZSByaWdodCB3aW5kb3cgZGVmYXVsdCB2YWx1ZS4KCgkqIGxvYWRlci9wZV9pbWFnZS5jOiBNYXJjdXMgTWVpc3NuZXIgPE1hcmN1cy5NZWlzc25lckBjYWxkZXJhLmRlPgoJU21hbGwgaGFjayB0byBjaGVjayBpZiB3ZSBuZWVkIHRvIHJlbG9jYXRlIHRoZSBUTFMgZGlyZWN0b3J5IG9yIG5vdAoJKHNvbWUgc2VlbSB0byBuZWVkIHRoaXMgcG9pbnRlciByZWxvY2F0ZWFibGUsIHNvbWUgYWxyZWFkeSBkbyByZWxvY2F0ZQoJaXQgYnkgdGhlbXNlbHZlcykuCgoJKiBNYWtlLnJ1bGVzLmluOiBNYXJjdXMgTWVpc3NuZXIgPE1hcmN1cy5NZWlzc25lckBjYWxkZXJhLmRlPgoJUmVsaW5rIHN1YmRpcmVjdG9yeSBvYmplY3RzIG9uIE1ha2VmaWxlLmluL01ha2UucnVsZXMuaW4gY2hhbmdlLgoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYzogTWFyY3VzIE1laXNzbmVyIDxNYXJjdXMuTWVpc3NuZXJAbHN0LmRlPgoJQ2hlY2sgZm9yIE5VTEwgcHRyIGluIFByb3BzaGVldF9SZW1vdmVQYWdlIChYaW5nIERWRCBQbGF5ZXIpLgoKCSogbXVsdGltZWRpYS9kc291bmQuYzogTWFyY3VzIE1laXNzbmVyIDxNYXJjdXMuTWVpc3NuZXJAbHN0LmRlPgoJRG9uJ3QgcmVmIE5VTEwgcHRycyBpbiBkZWJ1Zy4KCgkqIHdpbmRvd3MvZGlucHV0LmM6IE1hcmN1cyBNZWlzc25lciA8TWFyY3VzLk1laXNzbmVyQGxzdC5kZT4KCUlmIHRoZSBqb3lkZXZpY2UgaXMgbm90IHByZXNlbnQsIGRvIG5vdCBjcmVhdGUgYSBEaXJlY3RJbnB1dERldmljZS4KCgkqIGRsbHMvY29tbWRsZy9jb21tZGxnLnNwZWMsIGRsbHMvY29tbWRsZy9wcmludGRsZy5jLCBpbmNsdWRlL2NvbW1kbGcuaDoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCU1hcCBQcmludERsZzE2IHRvIFByaW50RGxnQS4KCgkqIGRsbHMvc2hlbGwzMi9zaGxtZW51LmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJU21hbGwgZml4ZXMuCgoJKiBjb250cm9scy9tZW51LmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTWFkZSBUcmFja1BvcHVwTWVudSB3aXRoIFRQTV9SRVRVUk5DTUQgcmV0dXJuaW5nIHRoZSBpZCBpbnN0ZWFkIG9mCgl0cnVlLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOiBVbHJpY2ggQ3pla2FsbGEgPHVscmljaGNAY29yZWwuY2E+CglQcmV2ZW50IHNlbGYgcmVmZXJlbmNpbmcgbmV4dCBwb2ludGVyIGR1cmluZyBpbnNlcnQuCgoJKiBvbGUvbmxzL2ZyYS5ubHM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgc29tZSBtaXNzaW5nIGRlZmluaXRpb25zLgoKCSogbXVsdGltZWRpYS93aW5tbS5yYywgbXVsdGltZWRpYS93aW5tbV9ObC5yYzoKCUtsYWFzIHZhbiBHZW5kIDxrbGFhc0B2YW5nZW5kLmRlbW9uLm5sPgoJQWRkZWQgRHV0Y2ggdG8gdGhlIGxhbmd1YWdlcyBzdXBwb3J0ZWQgYnkgTUNJLgoKCSogZG9jdW1lbnRhdGlvbi9zdGF0dXMvaW50ZXJuYXRpb25hbGlzYXRpb246CglLbGFhcyB2YW4gR2VuZCA8a2xhYXNAdmFuZ2VuZC5kZW1vbi5ubD4KCVVwZGF0ZWQgc3RhdHVzIG9mIGludGVybmF0aW9uYWxpc2F0aW9uLgoKCSogbG9hZGVyL3BlX2ltYWdlLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogKkRvbid0KiByZXNvbHZlIFBFIGltcG9ydHMgaWYgYXNrZWQgbm90IHRvIC4uLgoKCSogbWlzYy9kZGVtbC5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogRGRlTmFtZVNlcnZpY2Ugd2FzIGJyb2tlbi4KCgkqIGxvYWRlci9uZS9tb2R1bGUuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBXaGVuIGxvYWRpbmcgYW4gZXhlY3V0YWJsZSBtb2R1bGUgZmFpbHMsIGRvbid0IHBlcmZvcm0gbW9kdWxlCgljbGVhbnVwIGJlZm9yZSB0aGUgY29ycmVzcG9uZGluZyB0YXNrIGlzIGRlc3Ryb3llZC4KCgkqIGRsbHMvY29tbWRsZy9jZGxnX0VuLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ194eC5yYzoKCUtsYWFzIHZhbiBHZW5kIDxrbGFhc0B2YW5nZW5kLmRlbW9uLm5sPgoJTW92ZWQgYml0bWFwIHJlc291cmNlIHRvIGxhbmd1YWdlLWluZGVwZW5kZW50IHJlc291cmNlIGZpbGUuCgoJKiBtaXNjL3ZlcnNpb24uYzogQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglBZGRlZCB3YXJuaW5nIGZvciBmdXR1cmUgVkVSU0lPTl9HZXRWZXJzaW9uKCkgKG1pcy0pdXNlcnMgYW5kIG1hZGUKCU9TVkVSU0lPTklORk8gd2FybmluZyBtb3JlIGRldGFpbGVkLgoKCSogZGxscy9vbGVhdXQzMi9vbGVhdXQuYywgZGxscy9vbGVhdXQzMi9vbGVhdXQzMi5zcGVjOgoJTWFyY3VzIE1laXNzbmVyIDxNYXJjdXMuTWVpc3NuZXJAY2FsZGVyYS5kZT4KCUFkZGVkIHN0dWJzIGZvciBSZXZva2VBY3RpdmVPYmplY3QsIEdldEFjdGl2ZU9iamVjdCwgZml4ZWQKCVJlZ2lzdGVyQWN0aXZlT2JqZWN0IHN0dWIgYXJndHlwZXMuCgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOgoJTWFyY3VzIE1laXNzbmVyIDxNYXJjdXMuTWVpc3NuZXJAY2FsZGVyYS5kZT4KCUFkZGVkIGdlcm1hbiBrZXlib2FyZCBsYXlvdXQgd2l0aCAibm9kZWFka2V5cyIgb3B0aW9uIGVuYWJsZWQgKGp1c3QgdG8KCWFwb3N0cm9waGVzIGFyZSBzd2l0Y2hlZCkuCgoJKiBkbGxzL21zdmlkZW8vbXN2aWRlby5zcGVjLCBkbGxzL21zdmlkZW8vbXN2aWRlb19tYWluLmM6CglNYXJjdXMgTWVpc3NuZXIgPE1hcmN1cy5NZWlzc25lckBjYWxkZXJhLmRlPgoJU3R1YiBmb3IgVmlkZW9DYXBEcml2ZXJEZXNjQW5kVmVyLgoKCSogbXNkb3MvaW50MjEuYzogTWFyY3VzIE1laXNzbmVyIDxNYXJjdXMuTWVpc3NuZXJAY2FsZGVyYS5kZT4KCVJlcGxpY2F0ZSBDcmVhdGVEaXJlY3RvcnkoKSBMYXN0RXJyb3Igd29ya2Fyb3VuZCBmb3IgdGhlIExGTiBwYXJ0LgoKCSogbWlzYy9yZWdpc3RyeS5jOiBNYXJjdXMgTWVpc3NuZXIgPE1hcmN1cy5NZWlzc25lckBjYWxkZXJhLmRlPgoJQWxzbyBlc2NhcGUgY2hhcmFjdGVycyA+PTB4ODAgd2l0aGluIHRoZSB3aW5lcmVnaXN0cnkgc2F2ZWZpbGUuCgoJKiBkbGxzL3duYXNwaTMyL3dpbmFzcGkzMi5jOgoJTWFyY3VzIE1laXNzbmVyIDxNYXJjdXMuTWVpc3NuZXJAY2FsZGVyYS5kZT4KCURvbid0IHVzZSBtYWxsb2MvZnJlZSBpbiB3aW5hc3BpMzIuCgoJKiBncmFwaGljcy9kZHJhdy5jOiBNYXJjdXMgTWVpc3NuZXIgPE1hcmN1cy5NZWlzc25lckBjYWxkZXJhLmRlPgoJVXNlIDEgbWFjcm8gZm9yIHJnYmJpdGRlcHRoIC0+IGJ5dGUgZGV0ZXJtaW5hdGlvbi4KCXhzaG0vaW1hZ2UgY3JlYXRpb24gbm93IHVzZXMgMS84IG9mIHRoZSBzcGFjZSBmb3IgZXZlcnkgaW1hZ2UuCgoJKiByZWxheTMyL3VzZXIzMi5zcGVjOiBNYXJjdXMgTWVpc3NuZXIgPE1hcmN1cy5NZWlzc25lckBjYWxkZXJhLmRlPgoJUmVwbGFjZWQgZG91YmxlIENoYW5nZURpc3BsYXlTZXR0aW5nc0EgYnkgKEV4KVtBV10uCgpXZWQgU2VwIDI5IDEyOjE2OjE2IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpZjE2MzIvYnVpbHRpbi5jLCBsb2FkZXIvbW9kdWxlLmMsIGxvYWRlci9uZS9tb2R1bGUuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBEb24ndCBjYWxsIEdldFZlcnNpb25FeEEgdG9vIGVhcmx5LCB0byBhdm9pZCBicmVha2luZwoJYXV0b21hdGljIGVtdWxhdGVkIFdpbmRvd3MgdmVyc2lvbiBkZXRlY3Rpb24uCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYywgaW5jbHVkZS9vbGVhdXRvLmgsIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzIuc3BlYzoKCVJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglGaXJzdCBpbXBsZW1lbnRhdGlvbiBvZiBMb2FkVHlwZUxpYkV4KCkuCgoJKiBpZjE2MzIvbW1zeXN0ZW0uc3BlYywgbXVsdGltZWRpYS9tbXN5c3RlbS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBzdHViIGZvciBXTU1NSURJUlVOT05DRSBjYWxsZWQgYnkgbWlkaW1hcC5kcnYuCgoJKiBtaXNjL3dpbnNvY2suYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTZXQgcmVmY291bnRlciB0byAxIG9uIGluaXRpYWwgaW5pdCBvciBXU0FTdGFydHVwL1dTQVN0YXJ0dXAgd2l0aAoJZm9sbG93aW5nIFdTQUNsZWFudXAgd2lsbCBhbHJlYWR5IGZyZWUgdGhlIHN0cnVjdHVyZXMuCgoJKiBtdWx0aW1lZGlhL2Rzb3VuZC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUNyZWF0ZSBEaXJlY3RTb3VuZCBvYmplY3QgZXZlbiB3aXRob3V0IHNvdW5kZGV2aWNlLiBHYW1lcyBjYW4gYmUKCXBsYXllZCB3aXRob3V0IHNvdW5kLCBidXQgbm90IHdpdGhvdXQgRGlyZWN0U291bmQgb2JqZWN0ICh0ZXN0ZWQgd2l0aAoJTW9ua2V5IElzbGFuZCAzKS4KCgkqIGRsbHMvb2xlZGxnL29sZWRsZy5zcGVjLCBpbmNsdWRlL250ZGRrLmgsIHJlbGF5MzIva2VybmVsMzIuc3BlYywgcmVsYXkzMi91c2VyMzIuc3BlYywgdG9vbHMvYnVpbGQuYywgZGxscy9jcnRkbGwvY3J0ZGxsLnNwZWMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy9udGRsbC9ydGwuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSBvZiB0aGUgaXNzdWVzIHJlcG9ydGVkIGJ5IHdpbmFwaS1jaGVjaywgYnkgYWRkaW5nIGFyZ3VtZW50cwoJdG8gdmFyYXJncy4KCgkqIE1ha2UucnVsZXMuaW4sIE1ha2VmaWxlLmluOiBQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUFkZGVkIGFiaWxpdHkgdG8gY2FsbCB3aW5hcGlfY2hlY2sgZnJvbSB0aGUgTWFrZWZpbGVzLgoKCSogbXNkb3MvZHBtaS5jOiBQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCU1vZGlmaWNhdGlvbiBkdWUgdG8gcHJvYmxlbXMgd2l0aCB3aW5hcGktY2hlY2suCgoJKiB0b29scy93aW5hcGlfY2hlY2svcGFyc2VyLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luMTZhcGkuZGF0LCB0b29scy93aW5hcGlfY2hlY2svd2luMzJhcGkuZGF0LCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2NoZWNrLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX29wdGlvbnMucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfcGFyc2VyLnBtOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIEFkYXB0ZWQgdG8gY2hhbmdlcyBpbiBXaW5lLgoJLSBNaW5vciBpbXByb3ZlbWVudHMuCgpUdWUgU2VwIDI4IDE2OjQwOjA3IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzZXJ2ZXIvZXZlbnQuYywgc2VydmVyL29iamVjdC5oOgoJTWFkZSBldmVudCBtYW5pcHVsYXRpb24gcm91dGluZXMgcHVibGljLgoKCSogZGxscy9NYWtlZmlsZS5pbiwgZGxscy9kcGxheXgvLmN2c2lnbm9yZSwgZGxscy9kcGxheXgvTWFrZWZpbGUuaW4sIGRsbHMvZHBsYXl4L2RwY2xhc3NmYWN0b3J5LmMsIGRsbHMvZHBsYXl4L2RwaW5pdC5oLCBkbGxzL2RwbGF5eC9kcGxheS5jLCBkbGxzL2RwbGF5eC9kcGxheS5zcGVjLCBkbGxzL2RwbGF5eC9kcGxheXguc3BlYywgZGxscy9kcGxheXgvZHBsb2JieS5jLCBkb2N1bWVudGF0aW9uL3N0YXR1cy9kaXJlY3RwbGF5LCBpbmNsdWRlL2RwbGF5LmgsIGluY2x1ZGUvZHBsb2JieS5oLCBtdWx0aW1lZGlhL01ha2VmaWxlLmluLCBtdWx0aW1lZGlhL2RwbGF5LmMsIHJlbGF5MzIvLmN2c2lnbm9yZSwgcmVsYXkzMi9kcGxheS5zcGVjLCByZWxheTMyL2RwbGF5eC5zcGVjLCByZWxheTMyL01ha2VmaWxlLmluLCBNYWtlZmlsZS5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW46CglQZXRlciBIdW5uaXNldHQgPGh1bm5pc2VAbm9ydGVsbmV0d29ya3MuY29tPgoJLSBNb3ZlZCBkcGxheSBhbmQgZHBsYXl4IHRvIGEgcHJvcGVyIGhvbWUgaW4gdGhlIGRsbHMgZGlyZWN0b3J5LgoJLSBJbXBsZW1lbnRlZCBuZXcgRGlyZWN0UGxheTQgYW5kIERpcmVjdFBsYXlMb2JieTMgaW50ZXJmYWNlcy4KCS0gSW1wbGVtZW50ZWQgYSBjbGFzcyBmYWN0b3J5IGZvciBkcGxheSBhbmQgZHBsb2JieS4gQ09NIGludGVyZmFjZXMKCSAgbm93IHdvcmsgZm9yIGRwIGFuZCBkcGwuCgktIEFkZGVkIGEgZmV3IG1vcmUgZW50cmllcyB0byBkcGxheXguc3BlYyBmaWxlcy4gSG93IGRvIHlvdSBmaW5kIHRoZQoJICBvcmRpbmFscz8gSSBqdXN0IGd1ZXNzZWQgOigKCS0gU2VwZXJhdGVkIERpcmVjdFBsYXkgYW5kIERpcmVjdFBsYXlMb2JieSBpbXBsZW1lbnRhdGlvbiBpbnRvIHNlcGFyYXRlIGZpbGVzLgoJLSBJbmNsdWRlZCBzb21lIG1pc3NpbmcgaGVhZGVyIGZpbGUgZGVmaW5pdGlvbnMuCgktIEltcGxlbWVudGVkIHRoZSBkcGxheSBkbGwgaW4gdGVybXMgb2YgdGhlIGRwbGF5eCBkbGwuIEkgaGF2ZW4ndAoJICB0ZXN0ZWQgaXQgc28gaXQgbWF5IG5vdCB3b3JrLi4uCgktIEEgZmV3IGJ1ZyBmaXhlcyBhbmQgYSBsaXR0bGUgbmV3IGltcGxlbWVudGF0aW9lLm4KCS0gVXBkYXRlZCBkb2N1bWVudCB3aXRoIGEgbW9yZSBkZXRhaWxlZCBpbXBsZW1lbnRhdGlvbiBwbGFuLgoKCSogd2luZG93cy93aW4uYzogTm9vbWVuIEhhbXphIDxub29tZW5AbWFjYWRhbWlhbi5jb20+CglSZXdyaXRlIHRoZSBTaG93T3duZWRQb3B1cHMgZnVuY3Rpb24gd2l0aCBhIHNhZmV0eSBhbGdvcml0aG0uCgoJKiBjb250cm9scy9tZW51LmM6IEthcmwgTGVzc2FyZCA8eWJpY3VidWtAdW1haWwuY29yZWwuY29tPgoJTWFrZSBFeGVjRm9jdXNlZEl0ZW0gcmV0dXJuIC0xIG9uIGZhaWx1cmUuCgoJKiBncmFwaGljcy9kZHJhdy5jLCBtdWx0aW1lZGlhL2Rzb3VuZC5jOgoJUGV0ZXIgSHVubmlzZXR0IDxodW5uaXNlQG5vcnRlbG5ldHdvcmtzLmNvbT4KCS0gQ2hhbmdlZCByZXR1cm4gY29kZSBmb3IgZmFpbHVyZSBvbiAqX0RsbEdldENsYXNzT2JqZWN0IHRvCgkgIENMQVNTX0VfQ0xBU1NOT1RBVkFJTEFCTEUgZnJvbSBFX05PVEFWQUlMQUJMRSBhcyBkb2N1bWVudGVkLgoJLSBSZXBsYWNlZCBtZW1jbXBzIHdpdGggZXF1aXZhbGVudCBJc0VxdWFsQ0xTSUQgb3IgSXNFcXVhbEdVSUQgbWFjcm9zLgoJLSBDaGFuZ2VkICJyZXR1cm4gMDsiIHdpdGggU19PSyBvciBEU19PSyBhcyBhcHByb3ByaWF0ZS4KCgkqIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYzoKCVN1cHBvcnQgVFJBUF9zaWcgZm9yIEZyZWVCU0QgKHdpdGggdGhlIGhlbHAgb2YgSnVlcmdlbiBMb2NrKS4KCgkqIGxvYWRlci9tb2R1bGUuYzogVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJUmVtZW1iZXIgdGhlIGFsbG9jYXRlZCBzdHJpbmcgdG8gZnJlZSBpdC4KCgkqIGNvbnRyb2xzL21lbnUuYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglGb3JjZSByZWNhbGN1bGF0aW9uIG9mIG1lbnUgd2hlbiBjYWxsaW5nIEluc2VydE1lbnVJdGVtLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmM6CglJYW4gU2NobWlkdCA8aXNjaG1pZHRAY2ZsLnJyLmNvbT4KCUltcGxlbWVudGF0aW9uIG9mIDIgV2luOTggYnktb3JkaW5hbCBTSEVMTDMyIHJvdXRpbmVzLiAgSGVscHMgV2luOTgKCUV4cGxvcmVyIHdvcmsgYmV0dGVyLgoKCSogbXVsdGltZWRpYS9tY2kuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCB0eXBvIGluIGhEcnYgZm9yIHNlbmRpbmcgbWVzc2FnZS4KCk1vbiBTZXAgMjcgMTM6Mzg6NTcgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvbW1kZGsuaCwgbXVsdGltZWRpYS9tY2kuYywgbXVsdGltZWRpYS9tY2lhbmltLmMsIG11bHRpbWVkaWEvbWNpYXZpLmMsIG11bHRpbWVkaWEvbWNpY2RhLmMsIG11bHRpbWVkaWEvbWNpbWlkaS5jLCBtdWx0aW1lZGlhL21jaXdhdmUuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJUmVtb3ZlZCBsYXN0IGRlcGVuZGFuY2llcyBiZXR3ZWVuIE1DSSBkcml2ZXJzIGFuZCBXSU5NTS9NTVNZU1RFTQoJRExMcy4KCgkqIG11bHRpbWVkaWEvbW1zeXN0ZW0uYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglHb3QgcmlkIG9mIGhhY2sgb24gV0FWRUhEUidzICYgTUlESUhEUidzIHJlc2VydmVkIGZpZWxkIGZvciAxNi8zMiBiaXQKCWRpc2NyaW1pbmF0aW9uLgoJRml4ZWQgYSBmZXcgc2VncHRyL2xpbmVhciBhZGRyZXNzIGJ1Z3MgaW4gV0FWRUhEUi9NSURJSERSIGhhbmRsaW5nLgoKCSogbXVsdGltZWRpYS9taXhlci5jLCBtdWx0aW1lZGlhL21tYXV4LmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUNoZWNrIGZvciBPU1MgZHJpdmVyIHByZXNlbmNlIGFuZCByZXR1cm4gZXJyb3IgYWNjb3JkaW5nbHkuCgoJKiBtdWx0aW1lZGlhL21pZGkuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglHb3QgcmlkIG9mIGhhY2sgb24gTUlESERSJ3MgcmVzZXJ2ZWQgZmllbGQgZm9yIDE2LzMyIGJpdAoJZGlzY3JpbWluYXRpb24uCgoJKiBtdWx0aW1lZGlhL2xvbHZsZHJ2LmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgY3Jhc2ggd2l0aCBtYXBwZXIgbG9hZGluZy4KCUdvdCByaWQgb2YgaGFjayBvbiBXQVZFSERSJ3MgcmVzZXJ2ZWQgZmllbGQgZm9yIDE2LzMyIGJpdAoJZGlzY3JpbWluYXRpb24uCgoJKiBtdWx0aW1lZGlhL2F1ZGlvLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJR290IHJpZCBvZiBoYWNrIG9uIFdBVkVIRFIncyByZXNlcnZlZCBmaWVsZCBmb3IgMTYvMzIgYml0CglkaXNjcmltaW5hdGlvbi4KCgkqIGRvY3VtZW50YXRpb24vd2luZS50ZXhpbmZvOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVR5cG8gY29ycmVjdGlvbi4KCgkqIGxvYWRlci9saWJyZXMuYzogVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hjQGNvcmVsLmNhPgoJRml4IGludGVnZXIgYmFzZWQgcmVzb3VyY2UgaWQgYXNzdW1wdGlvbi4KCUFkZCBzdXBwb3J0IGZvciBzdHJpbmcgYmFzZWQgdHlwZSBpZHMuCgoJKiBpbmNsdWRlL3dpbnNvY2syLmg6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQWRkZWQgc29tZSBiYXNpYyBXaW5zb2NrMiBkZWZpbml0aW9ucy4KCgkqIHNlcnZlci9vYmplY3QuaCwgc2VydmVyL3NlbGVjdC5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUFkZGVkIEVYQ0VQVF9FVkVOVCB0byB3aW5lc2VydmVyIHNlbGVjdCBsb29wLgoKCSogZmlsZXMvZG9zX2ZzLmM6IFBldGVyIEdhbnRlbiA8Z2FudGVuQHVuaS1icmVtZW4uZGU+CglGaXggZm9yIFZGQVRfSU9DVExfUkVBRERJUl9CT1RILgoKCSogZGxscy93aW5nL3dpbmdfbWFpbi5jOiBQZXRlciBHYW50ZW4gPGdhbnRlbkB1bmktYnJlbWVuLmRlPgoJU21hbGwgd2luZyBlbmhhbmNlbWVudC4KCgkqIGNvbnRyb2xzL2VkaXQuYzogU3RlcGhhbmUgTHVzc2llciA8c3RlcGhhbmVAbWFjYWRhbWlhbi5jb20+CglSZXR1cm4ga2V5IHNob3VsZCBub3QgYmUgaWdub3JlZCBpbiBtdWx0aWxpbmUgZWRpdCBldmVuIGlmCglFU19XQU5UUkVUVVJOIGZsYWcgaXNuJ3Qgc2V0LgoKCSogaW5jbHVkZS9nZGkuaCwgb2JqZWN0cy9nZGlvYmouYzoKCUZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCURQdG9MUCBuZWVkcyB0byByb3VuZCB0aGUgcmVzdWx0LgoJRml4ZWQgTXVsRGl2IHRvIGRlYWwgYmV0dGVyIHdpdGggbmVnYXRpdmUgbnVtYmVycy4KCgkqIHdpbmRvd3MvcGFpbnRpbmcuYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJcmNQYWludCBoYXMgdG8gYmUgcmV0dXJuZWQgaW4gbG9naWNhbCBjb29yZGluYXRlcyBidXQgd2FzIGludGVyc2VjdGVkCgl3aXRoIGEgY2xpZW50IHJlY3RhbmdsZSBpbiBkZXZpY2UgY29vcmRpbmF0ZXMuCgoJKiBvYmplY3RzL3JlZ2lvbi5jOiBSaWNoYXJkIENvaGVuIDxyaWNoYXJkQGp1Ymp1Yi5kZW1vbi5jby51az4KCUZpeGVkIEdldFJhbmRvbVJnbi4KCgkqIGZpbGVzL2RyaXZlLmM6IEFiZXkgR2VvcmdlIDxhYmV5QG1hY2FkYW1pYW4uY29tPgoJTWFkZSBHZXRDdXJyZW50RGlyZWN0b3J5IHJldHVybiBsb25nIG5hbWUgb2YgdGhlIGN1cnJlbnQgZGlyZWN0b3J5LgoKCSogaW5jbHVkZS9idXR0b24uaCwgY29udHJvbHMvYnV0dG9uLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglVc2UgYW4gZXh0cmEgYml0IGluIHRoZSBidXR0b24gc3RhdHVzIGJ5dGUgdG8gZmxhZyB3aGV0aGVyIHRoZQoJRGVmQnV0dG9uV25kUHJvYyBzaG91bGQgcHJvY2VzcyB0aGUgV01fTEJVVFRPTlVQIG1lc3NhZ2UuCgoJKiBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzY2hlZHVsZXIvc3lzZGVwcy5jLCBkbGxzL250ZGxsL01ha2VmaWxlLmluLCBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jLCBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmMsIGdyYXBoaWNzL2RkcmF3LmMsIGluY2x1ZGUvc2lnX2NvbnRleHQuaCwgaW5jbHVkZS9kZWJ1Z2dlci5oLCBpbmNsdWRlL2Rvc2V4ZS5oLCBpbmNsdWRlL21pc2NlbXUuaCwgaW5jbHVkZS93aW5lL2V4Y2VwdGlvbi5oLCBsb2FkZXIvc2lnbmFsLmMsIGxvYWRlci9NYWtlZmlsZS5pbiwgbG9hZGVyL21haW4uYzoKCU1vdmVkIGFsbCBzaWduYWwgc3VwcG9ydCB0byBhIG5ldyBwbGF0Zm9ybS1zcGVjaWZpYyBmaWxlLgoJTWFrZSB1c2Ugb2YgdGhlIHBlci10aHJlYWQgc2lnbmFsIHN0YWNrIChKdWVyZ2VuIExvY2spLgoJRml4ZWQgJWZzIGluIHNpZ25hbCBoYW5kbGVyIGZvciBub24gRlNfc2lnIGNhc2UgKFVscmljaCBXZWlnYW5kKS4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVGh1IFNlcCAyMyAxNjoxNDo0NCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogTWFrZWZpbGUuaW4sIHdpbmRvd3MveDExZHJ2Ly5jdnNpZ25vcmUsIHdpbmRvd3MveDExZHJ2L01ha2VmaWxlLmluLCB3aW5kb3dzL3gxMWRydi93aW5lY2xpcHNydi5jOgoJTm9lbCBCb3J0aHdpY2sgPG5vZWxAbWFjYWRhbWlhbi5jb20+CglBZGRlZCBjbGlwYm9hcmQgc2VydmVyLgoKCSogdG9vbHMvQXR0aWMvd2luYXBpLWNoZWNrLCB0b29scy93aW5hcGlfY2hlY2svbmF0aXZlYXBpLmRhdCwgdG9vbHMvd2luYXBpX2NoZWNrL25hdGl2ZWFwaS5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3BhcnNlci5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjE2YXBpLmRhdCwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyYXBpLmRhdCwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaS5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9jaGVjaywgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9nbG9iYWwucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfbG9jYWwucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfb3B0aW9ucy5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9wYXJzZXIucG06CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCU1hZGUgYSBuZXcgaW1wcm92ZWQgdmVyc2lvbiBvZiB3aW5hcGktY2hlY2sgaW4gcGVybC4KCgkqIG1zZG9zL2ludDIxLmM6CglJbXBsZW1lbnRlZCB1cHBlcmNhc2luZyBmdW5jdGlvbnMgKGJhc2VkIG9uIGEgcGF0Y2ggYnkgUm9iZXJ0CgknQWRtaXJhbCcgQ29leW1hbikuCgoJKiB3aW5kb3dzL3VzZXIuYywgZGxscy9vbGUzMi9vbGUyc3R1YnMuYywgZGxscy9vbGUzMi9zdG9yYWdlLmMsIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jLCBkbGxzL3N0cmVzcy9zdHJlc3NfbWFpbi5jLCBpZjE2MzIvZHVtbXkuYywgaW5jbHVkZS9zdHJlc3MuaCwgaW5jbHVkZS93aW5lL3dpbmdkaTE2LmgsIG1pc2MvcHJpbnRkcnYuYywgd2luZG93cy9pbnB1dC5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIG9mIHRoZSBpc3N1ZXMgcmVwb3J0ZWQgYnkgd2luYXBpLWNoZWNrLgoKCSogbWlzYy9jb21tLmM6IFBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJTW9kaWZpY2F0aW9uIGR1ZSB0byBwcm9ibGVtcyB3aXRoIHdpbmFwaS1jaGVjay4KCgkqIHdpbmRvd3MveDExZHJ2L2V2ZW50LmM6IE5vb21lbiBIYW16YSA8bm9vbWVuQG1hY2FkYW1pYW4uY29tPgoJV1NfUE9QVVAgd2luZG93cyAoZXhjbHVkaW5nIHRoZSBXU19QT1BVUFdJTkRPVyB3aW5kb3dzKSBzaG91bGQgYmUKCWNsb3NlZCBhZnRlciBsb29zaW5nIHRoZSBmb2N1cy4KCgkqIG9iamVjdHMvZGliLmM6IEZyYW5jb2lzIEJvaXN2ZXJ0IDxmcmFuY29pc0BtYWNhZGFtaWFuLmNvbT4KCUNyZWF0ZURJQml0bWFwIGNyZWF0ZXMgYSBtb25vY2hyb21lIGJpdG1hcCBvbmx5IHdoZW4gdGhlIGZpcnN0IGNvbG9yIG9mIHRoZQoJY29sb3JtYXAgaXMgYmxhY2sgZm9sbG93ZWQgYnkgd2hpdGUuIE90aGVyd2lzZSBpdCBjcmVhdGVzIGEgY29sb3IgYml0bWFwLgoKCSogd2luZG93cy9kZWZ3bmQuYywgd2luZG93cy9ub25jbGllbnQuYzoKCU5vb21lbiBIYW16YSA8bm9vbWVuQG1hY2FkYW1pYW4uY29tPgoJTm9uIGFjdGl2ZSB3aW5kb3cgc2hvdWxkIGJlIGFjdGl2YXRlZCB3aGVuIGl0IGdldHMgYW55CgljbGllbnQvbm9uLWNsaWVudCBkb3VibGUvc2luZ2xlIGxlZnQvbWVkaXVtL3JpZ2h0IG1vdXNlIGNsaWNrKHMpLgoKV2VkIFNlcCAyMiAxNjo1Mzo1NCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogcmVsYXkzMi9idWlsdGluMzIuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBXSU5FT1NTIGRlc2NyaXB0b3IuCgoJKiBtdWx0aW1lZGlhL21tc3lzdGVtLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJTU1TWVNURU1fR2V0SURhdGEoKSBub3cgZGllcyB3aGVuIG5vIGlEYXRhIGlzIHByZXNlbnQKCUJldHRlciBlcnJvciByZWNvdmVyeSB3aGVuIHRoZSBwcm9jZXNzIGF0dGFjaG1lbnQgZmFpbHMKCVBsYXlTb3VuZCAoYW5kIGhlbHBlciBmdW5jdGlvbnMpIG5vdyB1c2UgdGhlIHJlZ3VsYXIgd2F2ZU91dFhYWCAoaW5zdGVhZCBvZiB3b2RNZXNzYWdlKQoJTW92ZWQgaGFuZGxpbmcgb2YgaGFjayBmb3IgZGlmZmVyZW5jaWF0aW5nIGJldHdlZW4gMTYgYW5kIDMyIGJpdCBjYWxsYmFjayB0byBsb2x2bGRydi5jCglNYWtlcyB1c2Ugb2YgbmV3IGxvbHZsZHJ2LmMgaW50ZXJmYWNlcwoKCSogbXVsdGltZWRpYS8uY3ZzaWdub3JlLCBtdWx0aW1lZGlhL01ha2VmaWxlLmluLCBtdWx0aW1lZGlhL2xvbHZsZHJ2LmMsIG11bHRpbWVkaWEvb3NzLmMsIG11bHRpbWVkaWEvb3NzLmgsIG11bHRpbWVkaWEvd2luZW1tLmg6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIGxvbHZsZHJ2LmMgYW5kIG9zcy5jLgoJVGh1bmtzIHRvIDE2IGJpdCBhcmUgbm93IGdlbmVyYXRlZCBmb3IgdGhlIE1NU1lTVEVNIG1vZHVsZS4KCgkqIGNvbmZpZ3VyZS5pbiwgZGxscy93aW5tbS8uY3ZzaWdub3JlLCBkbGxzL3dpbm1tL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL3dpbmVvc3MvLmN2c2lnbm9yZSwgZGxscy93aW5tbS93aW5lb3NzL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL3dpbmVvc3Mvd2luZW9zcy5zcGVjLCBNYWtlZmlsZS5pbiwgY29uZmlndXJlOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBkbGxzL3dpbm1tIGFuZCBkbGxzL3dpbm1tL3dpbmVvc3MgZGlyZWN0b3JpZXMuCgoJKiBtdWx0aW1lZGlhL3RpbWUuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglObyBsb25nZXIgY2hlY2tpbmcgZm9yIGNvcnJlY3QgaURhdGEgaW4gY29kZS4KCgkqIHJlbGF5MzIvd2lubW0uc3BlYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBtaXNzaW5nIERyaXZlckNhbGxCYWNrIGZ1bmN0aW9uLgoKCSogaWYxNjMyL21tc3lzdGVtLnNwZWM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWxsIGhlYWRlcnMgKHdhdmUgYW5kIG1pZGkgZnVuY3Rpb25zKSBhcmUgbm93IHNlZW4gYXMgc2VncHRyLgoJQWRkZWQgc3R1YiBmb3Igam95R2V0UG9zRXgxNigpLgoKCSogaW5jbHVkZS9tbXN5c3RlbS5oOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIHNvbWUgbWlzc2luZyBkZWZpbmVzLgoKCSogaW5jbHVkZS9tbWRkay5oOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCU5vdyB1c2luZyB0aGUgc2FtZSBzdHJ1Y3RzIGZvciBsb3ctbGV2ZWwgZHJpdmVycyBhcyBXaW5kb3dzIGRvLgoKCSogbXVsdGltZWRpYS9hdWRpby5jLCBtdWx0aW1lZGlhL21peGVyLmMsIG11bHRpbWVkaWEvbW1hdXguYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJTWFrZSBpdCAoYWxtb3N0KSAzMiBiaXQgb25seS4KCVJlZmxlY3RlZCBjcmVhdGlvbiBvZiBXSU5FT1NTIG1vZHVsZS4KCgkqIG11bHRpbWVkaWEvbWlkaS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCU1ha2UgaXQgKGFsbW9zdCkgMzIgYml0IG9ubHkuCglSZWZsZWN0ZWQgY3JlYXRpb24gb2YgV0lORU9TUyBtb2R1bGUuCglObyBsb25nZXIgdXNpbmcgRVJSIHdoZW4gbm8gTUlESSBjYXJkIGlzIHByZXNlbnQuCgoJKiBtdWx0aW1lZGlhL2pveXN0aWNrLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgc3R1YiBmb3Igam95R2V0UG9zRXgxNigpLgoKCSogbXVsdGltZWRpYS9tY2kuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglObyBsb25nZXIgY2hlY2tpbmcgZm9yIGNvcnJlY3QgaURhdGEgaW4gY29kZS4KCUFkZGVkIGxvb2stdXAgdGFibGVzIHRvIGNvbW1hbmQgdGFibGVzIChzcGVlZHMgdXAgcXVlcmllcykuCgoJKiBtdWx0aW1lZGlhL21jaXdhdmUuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglOb3cgdXNpbmcgV0FWRUZPUk1BVEVYIGluc3RlYWQgb2YgUENNV0FWRUZPUk1BVC4KCgkqIG11bHRpbWVkaWEvbWNpbWlkaS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCU5vdyB1c2luZyBtb2RSZXNldCgpIGluc3RlYWQgb2YgdHdlYWtpbmcgTUlESSBjb250cm9scy4KCgkqIG11bHRpbWVkaWEvbWNpY2RhLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgcmV0dXJuZWQgdHlwZSB1cG9uIG9wZW4uCglGaXhlZCBzb21lIGJvZ3VzIGVycm9yIGNoZWNraW5nLgoKCSogbXVsdGltZWRpYS9tY2lhbmltLmMsIG11bHRpbWVkaWEvbWNpYXZpLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIHJldHVybmVkIHR5cGUgdXBvbiBvcGVuLgoKCSogZGxscy9udGRsbC9leGNlcHRpb24uYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglEbyBub3Qgc2V0IEVIX05PTkNPTlRJTlVBQkxFLgoKCSogcHJvZ3JhbXMvb3N2ZXJzaW9uY2hlY2svLmN2c2lnbm9yZSwgcHJvZ3JhbXMvb3N2ZXJzaW9uY2hlY2svQ2hhbmdlTG9nLCBwcm9ncmFtcy9vc3ZlcnNpb25jaGVjay9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvb3N2ZXJzaW9uY2hlY2svb3N2ZXJzaW9uY2hlY2suYywgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIHByb2dyYW1zL01ha2VmaWxlLmluOgoJTW9ydGVuIEVyaWtzZW4gPG1vcnRlbmVAc2ltLm5vPgoJQWRkZWQgc2ltcGxlIGNvbnNvbGUgbW9kZSBleGFtcGxlIHByb2dyYW0gd2hpY2ggbGlzdHMgaW5mb3JtYXRpb24KCWFib3V0IHRoZSB2ZXJzaW9uIG9mIFdpbmRvd3Mgd2UncmUgY3VycmVudGx5IHJ1bm5pbmcgb24uCgoJKiBsb2FkZXIvbW9kdWxlLmM6IEZpeGVkIG1lbW9yeSBhbGxvY2F0aW9uIGJ1Zy4KCgkqIHdpbmRvd3MveDExZHJ2L2V2ZW50LmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJRml4IGluZmluaXRlIGxvb3Agd2l0aCBnbGFzdFhGb2N1c1dpbmRvdy4KCgkqIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmM6IFN0ZXBoYW5lIEx1c3NpZXIgPHN0ZXBoYW5lQG1hY2FkYW1pYW4uY29tPgoJQWxsb3cgY3JlYXRpb24gb2YgZW1wdHkgaW1hZ2VsaXN0LgoKCSogb2JqZWN0cy9wYWxldHRlLmMsIHJlbGF5MzIvZ2RpMzIuc3BlYzoKCUlhbiBTY2htaWR0IDxpc2NobWlkdEBjZmwucnIuY29tPgoJQWRkZWQgcGFydGlhbCBpbXBsZW1lbnRhdGlvbiBvZiBHZXRJQ01Qcm9maWxlQSwgcmVxdWlyZWQgYnkgUGFpbnQgU2hvcAoJUHJvIDUuCgoJKiBjb250cm9scy9tZW51LmM6IEFiZXkgR2VvcmdlIDxhYmV5QG1hY2FkYW1pYW4uY29tPgoJRG9uJ3Qgc2VuZCBXTV9FTlRFUk1FTlVMT09QLCBXTV9JTklUTUVOVSAmIFdNX0lOSVRNRU5VUE9QVVAgbWVzc2FnZXMKCXdoZW4gVFBNX05PTk9USUZZIGZsYWcgaXMgc2V0IGluIFRyYWNrUG9wdXBNZW51LgoKCSogbWlzYy93aW5zb2NrLmM6IERhdmlkIEx1eWVyIDxsdXllckB1Y3MudXdhLmVkdS5hdT4KCWdldHBlZXJuYW1lKCkgYW5kIGdldHNvY2tuYW1lKCkgcmV0dXJuIGVycm9ycyBpbiBlcnJubyBub3QgaF9lcnJuby4KCk1vbiBTZXAgMjAgMTg6NTI6MDYgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnYnJvd3Nlci5jLCBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYywgaW5jbHVkZS9idWlsdGluMTYuaCwgbWlzYy9yZWdpc3RyeS5jLCBvYmplY3RzL2N1cnNvcmljb24uYywgdG9vbHMvYnVpbGQuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgQU5TSSBDIHZpb2xhdGlvbnMuCgoJKiB3aW5kb3dzL2tleWJvYXJkLmMsIHdpbmRvd3MvbW91c2UuYywgaWYxNjMyL2tleWJvYXJkLnNwZWMsIGlmMTYzMi9tb3VzZS5zcGVjLCB3aW5kb3dzL2lucHV0LmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUtleWJvYXJkL21vdXNlIGV2ZW50IHByb2MgdGh1bmsgY3JlYXRpb24gbW92ZWQgb3V0IG9mIGlmMTYzMi90aHVuay5jLgoKCSogaWYxNjMyL2tlcm5lbC5zcGVjLCBpbmNsdWRlL3Rhc2suaCwgbG9hZGVyLy5jdnNpZ25vcmUsIGxvYWRlci9NYWtlZmlsZS5pbiwgbG9hZGVyL25lL21vZHVsZS5jLCBsb2FkZXIvbmUvc2VnbWVudC5jLCBsb2FkZXIvdGFzay5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglEb24ndCBjcmVhdGUgdGh1bmsgZm9yIHRhc2sgc2lnbmFsIHByb2MsIGNhbGwgaXQgZGlyZWN0bHkuCgoJKiBpZjE2MzIvZ2RpLnNwZWMsIGluY2x1ZGUvZ2RpLmgsIG9iamVjdHMvLmN2c2lnbm9yZSwgb2JqZWN0cy9NYWtlZmlsZS5pbiwgb2JqZWN0cy9jbGlwcGluZy5jLCBvYmplY3RzL2RjLmMsIHdpbmRvd3MvZGNlLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCURDIGhvb2sgcHJvYyB0aHVuayBtYW5hZ2VtZW50IHNpbXBsaWZpZWQuCgoJKiBtaXNjL3N5c3RlbS5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVN5c3RlbSB0aW1lciBwcm9jIHRodW5rIGNyZWF0aW9uIG1vdmVkIG91dCBvZiBpZjE2MzIvdGh1bmsuYy4KCgkqIHNjaGVkdWxlci90aHJlYWQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJRG9uJ3QgY3JlYXRlIHRodW5rIGZvciBDcmVhdGVUaHJlYWQxNiBwcm9jLCBjYWxsIGl0IGRpcmVjdGx5LgoKCSogd2luZG93cy8uY3ZzaWdub3JlLCB3aW5kb3dzL01ha2VmaWxlLmluLCB3aW5kb3dzL2hvb2suYywgZGxscy9zaGVsbDMyL3NoZWxsLmMsIGlmMTYzMi91c2VyLnNwZWMsIGluY2x1ZGUvaG9vay5oOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglXaW5kb3dzIGhvb2sgcHJvYyB0aHVuayBtYW5hZ2VtZW50IHNpbXBsaWZpZWQuCgoJKiBpbmNsdWRlL2NhbGxiYWNrLmgsIGlmMTYzMi90aHVuay5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglNb2RpZmllZCBUSFVOS19BbGxvYyBzbyBhcyB0byBhdm9pZCAzMi0+MTYtPjMyIGNhbGxpbmcgc2VxdWVuY2VzLgoJUmVtb3ZlZCBwZXJzaXN0ZW50IHRodW5rIGNyZWF0aW9uIHJvdXRpbmVzLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGluY2x1ZGUvYWNjb25maWcuaCwgaW5jbHVkZS9jb25maWcuaC5pbiwgaW5jbHVkZS90c194Zjg2ZGdhMi5oLCB0b29scy9tYWtlX1gxMXdyYXBwZXJzLCB0c3gxMS9NYWtlZmlsZS5pbiwgdHN4MTEvWDExX2NhbGxzLCB0c3gxMS90c194Zjg2ZGdhMi5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUFkZGVkIHRoZSBwb3NzaWJpbGl0eSB0byB1c2UgREdBIDIuMC4KCgkqIHdpbmVkZWZhdWx0LnJlZzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBZGRlZCBIS0VZX0xPQ0FMX01BQ0hJTkVcLi4uXFByb2dyYW1GaWxlc0RpciByZWdpc3RyeSBrZXkuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmM6IERlbm5pcyBCb3JrbHVuZCA8ZGVubmlzYkBjcy5jaGFsbWVycy5zZT4KCUl0J3Mgbm8gZXJyb3IgdG8gc2VuZCBhIFdNX0NPTU1BTkQgdG8gTWVudUhlbHAuCgoJKiBmaWxlcy9maWxlLmM6IEZyYW5jb2lzIEJvaXN2ZXJ0PGZyYW5jb2lzQG1hY2FkYW1pYW4uY29tPgoJQ3JlYXRlRmlsZUEgcmV0dXJucyBIRklMRV9FUlJPUiB3aGVuIHRoZSBmaWxlbmFtZSBjb250YWlucyBhIHdpbGQgY2FyZC4KCgkqIGNvbnRyb2xzL3N0YXRpYy5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglGaXhlZCBkaXNwbGF5IGJ1ZyBpbiB0aGUgc3RhdGljIGNvbnRyb2wuCgoJKiBjb250cm9scy9tZW51LmM6IFBhc2NhbCBMZXNzYXJkIDxwYXNjYWxAbWFjYWRhbWlhbi5jb20+CglNZXNzYWdlIHJlbW92ZWQgd2hlbiBtZW51IHRyYWNraW5nIGZpbmlzaCBvbiBhIFdNX0xCVVRUT05ET1dOLgoKCSogaW5jbHVkZS9iaXRtYXAuaCwgaW5jbHVkZS90c194bGliLmgsIGluY2x1ZGUveDExZHJ2LmgsIG9iamVjdHMvZGliLmMsIHRzeDExL1gxMV9jYWxscywgdHN4MTEvdHNfeGxpYi5jLCB3aW5kb3dzL2NsaXBib2FyZC5jLCB3aW5kb3dzL3gxMWRydi9jbGlwYm9hcmQuYywgd2luZG93cy94MTFkcnYvZXZlbnQuYywgZ3JhcGhpY3MveDExZHJ2L2JpdG1hcC5jLCBncmFwaGljcy94MTFkcnYvZGliLmM6CglOb2VsIEJvcnRod2ljayA8bm9lbEBtYWNhZGFtaWFuLmNvbT4KCS0gQWRkIGNsaXBib2FyZCBzdXBwb3J0IGZvciBjb3B5aW5nL3Bhc3RpbmcgYml0bWFwcyBvciBQaXhtYXBzIGJldHdlZW4gV2luZQoJICBhbmQgbmF0aXZlIExpbnV4IGFwcGxpY2F0aW9ucy4KCS0gUmVzcG9uZCB0byB0aGUgTVVMVElQTEUgc2VsZWN0aW9uIHJlcXVlc3QgdGFyZ2V0IHdoZW4gV2luZSBpcyB0aGUKCSAgc2VsZWN0aW9uIG93bmVyLgoJLSBSZWxheCB0eXBlIGNoZWNraW5nIGZvciBUQVJHRVRTIHNlbGVjdGlvbi4KCgkqIGlmMTYzMi9idWlsdGluLmMsIGxvYWRlci9tb2R1bGUuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJU2V0ICdleHBlY3RlZF92ZXJzaW9uJyBvZiBidWlsdC1pbiBhbmQgZHVtbXkgbW9kdWxlcyBhY2NvcmRpbmcgdG8KCWVtdWxhdGVkIFdpbmRvd3MgdmVyc2lvbi4KCgkqIGlmMTYzMi9yZWxheS5jLCBsb2FkZXIvbWFpbi5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglNYWtlIENhbGxUbzE2IHJldHVybiBzdHViIHNlZ21lbnQgb3duZWQgYnkgS0VSTkVMLgoKCSogaW5jbHVkZS93aW5lL3dpbmJhc2UxNi5oLCBsb2FkZXIvdGFzay5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IEltcHJvdmVkIEdldENvZGVIYW5kbGUxNiAvIEdldENvZGVJbmZvMTYuCgoJKiBvbGUvbmxzL3N2ZS5ubHM6IERlbm5pcyBCam9ya2x1bmQgPGRlbm5pc2JAY3MuY2hhbG1lcnMuc2U+CglBZGRlZCBzb21lIHZhbHVlcyB0aGF0IHdlcmUgbWlzc2luZyBpbiB0aGUgU3dlZGlzaCBubHMgZmlsZS4KClN1biBTZXAgMTkgMTg6NTg6MTYgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGdyYXBoaWNzL3gxMWRydi9kaWIuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBjcmVhdGUgRERCIGluIFgxMURSVl9ESUJfR2V0RElCaXRzIGlmIG5lY2Vzc2FyeS4KCgkqIGRsbHMvb2xlMzIvb2xlMzIuc3BlYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglBZGRlZCBtaXNzaW5nIGV4cG9ydC4KCgkqIG9iamVjdHMvY3Vyc29yaWNvbi5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUZpeGVkIGNyYXNoIHdoZW4gbG9hZGluZyAqLmFuaSBmaWxlcy4KCgkqIG9sZS8qLCBkbGxzL29sZTMyLyosIGRsbHMvb2xlYXV0MzIvKiwgZGxscy9vbGVjbGkvKiwgZGxscy9vbGVkbGcvKjoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJTW92ZWQgYnVsayBvZiBPTEUgaW1wbGVtZW50YXRpb24gdG8gZGxscy8gc3ViZGlyZWN0b3JpZXMuCgoJKiBjb250cm9scy9tZW51LmM6IERlbm5pcyBCavZya2x1bmQgPGRlbm5pc2JAY3MuY2hhbG1lcnMuc2U+CglTZW5kIGNvcnJlY3QgV01fTUVOVVNFTEVDVCB3aGVuIG1lbnUgY2xvc2VzLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZ2Jyb3dzZXIuYywgZGxscy9zaGVsbDMyL3NocmVzLnJjOgoJRnJhbmNvaXMgQm9pc3ZlcnQgPGZyYW5jb2lzQG1hY2FkYW1pYW4uY29tPgoJQWRkZWQgc21hbGwgZmVhdHVyZSBpbiB0aGUgZmlsZSBkaWFsb2cuCgoJKiB3aW4zMi9uZXdmbnMuYywgZmlsZXMvZHJpdmUuYywgaW5jbHVkZS93aW5udC5oLCBpbmNsdWRlL3d0eXBlcy5oLCBtc2Rvcy92eGQuYywgb2xlL2FudGltb25pa2VyLmMsIG9sZS9jb21wb3NpdGVtb25pa2VyLmMsIG9sZS9kYXRhY2FjaGUuYywgb2xlL2ZpbGVtb25pa2VyLmMsIG9sZS9oZ2xvYmFsc3RyZWFtLmMsIG9sZS9pdGVtbW9uaWtlci5jLCBvbGUvbWVtbG9ja2J5dGVzLmMsIG9sZS9vbGVmb250LmMsIG9sZS9zdGdfYmlnYmxvY2tmaWxlLmMsIG9sZS9zdGdfc3RyZWFtLmMsIG9sZS9zdG9yYWdlLmMsIG9sZS9zdG9yYWdlMzIuYywgb2xlL3ZhcmlhbnQuYywgZGxscy9hZHZhcGkzMi9zZXJ2aWNlLmMsIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglBZGRlZCBzdXBwb3J0IGZvciBhbm9ueW1vdXMgc3RydWN0cy91bmlvbnMgb24gY29tcGlsZXJzIHRoYXQgaW1wbGVtZW50IGl0LgoKCSogaW5jbHVkZS93aW5nZGkuaCwgb2JqZWN0cy90ZXh0LmMsIHJlbGF5MzIvZ2RpMzIuc3BlYzoKCVBldGVyIEdhbnRlbiA8Z2FudGVuQHVuaS1icmVtZW4uZGU+CglTdHVicyBmb3IgUG9seVRleHRPdXRBL1cuCgoJKiBncmFwaGljcy94MTFkcnYvZGliLmMsIG9iamVjdHMvZGliLmM6CglLYXJsIExlc3NhcmQgPHliaWN1YnVrQHVtYWlsLmNvcmVsLmNvbT4KCVNvbWUgbW9yZSBtaW5vciBHREkgZml4ZXMuCgoJKiBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jOiBTdGVwaGFuZSBMdXNzaWVyIDxzdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KCUluIEltYWdlTGlzdF9EcmF3IHdoZW4gZHJhd2luZyB0aGUgYml0bWFwIHdpdGggdGhlIHRyYW5zcGFyZW50IGZsYWcKCXNldCwgYmFja2dyb3VuZCBjb2xvci9mb3JlZ3JvdW5kIGNvbG9yIHNob3VsZCBiZSBzZXQgdG8gd2hpdGUvYmxhY2ssCgl3aGVuIGRvaW5nIGJpdGJsdCBvcGVyYXRpb24gd2l0aCB0aGUgYml0bWFwIG1hc2suCgoJKiBncmFwaGljcy9lc2NhcGUuYywgZ3JhcGhpY3Mvd2luMTZkcnYvaW5pdC5jLCBpbmNsdWRlL3dpbjE2ZHJ2Lmg6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglFeHRlbmQgRFJBV01PREUgc3RydWN0IHRvIHdpbjk1IHNwZWMuCglBZGQgc29tZSBtb3JlIEVzY2FwZSAtPiBFc2NhcGUxNiBjb252ZXJzaW9ucy4KCgkqIGdyYXBoaWNzL3dpbjE2ZHJ2L3BydGRydi5jOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJU3RvcCB0cmFzaGluZyBkZXZtb2RlIGlmIGluIGFuZCBvdXQgZGV2bW9kZXMgYXJlIHRoZSBzYW1lLgoKCSogY29udHJvbHMvd2lkZ2V0cy5jOiBOb29tZW4gSGFtemEgPG5vb21lbkBtYWNhZGFtaWFuLmNvbT4KCVRoZSBNRElDbGllbnQgY2xhc3MgbXVzdCBiZSByZWdpc3RlcmVkIHdpdGggdGhlIElEQ19BUlJPVyBjdXJzb3IuCgoJKiBjb250cm9scy9jb21iby5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRlZCB0aGUgZGlzYWJsZWQgc3RhdGUgb2YgdGhlIGNvbWJvYm94LgoKCSogY29udHJvbHMvbWVudS5jOiBSaWNoYXJkIENvaGVuIDxyaWNoYXJkQGp1Ymp1Yi5kZW1vbi5jby51az4KCVByb3RlY3QgU2V0TWVudSBmcm9tIHJvZ3VlIG1lbnUgaGFuZGxlLgoJR2V0TWVudTE2IGNhbiBqdXN0IGNhbGwgR2V0TWVudS4KCgkqIHdpbmRvd3MvbWRpLmM6IFJpY2hhcmQgQ29oZW4gPHJpY2hhcmRAanVianViLmRlbW9uLmNvLnVrPgoJUHJvdGVjdCBNRElTZXRNZW51IGZyb20gcm9ndWUgbWVudSBoYW5kbGVzLgoKCSogbWVtb3J5L2xvY2FsLmM6IFJpY2hhcmQgQ29oZW4gPHJpY2hhcmRAanVianViLmRlbW9uLmNvLnVrPgoJVGlkeSB1cCBUUkFDRSBldGMgdG8gdXNlIGRlZmF1bHQgY2hhbm5lbC4KCgkqIGRsbHMvdmVyc2lvbi9pbmZvLmMsIGRsbHMvdmVyc2lvbi92ZXJzaW9uLnNwZWMsIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbnZlci5oLCBvbGUvb2xlMm5scy5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglNb3ZlIFZlckxhbmd1YWdlTmFtZVtBV10gYmFjayB0byBiYXNlIChleHBvcnRlZCBmcm9tIEtFUk5FTDMyIC4uLikuCgoJKiBkbGxzL2NvbWN0bDMyL3JzcmMucmMsIGRsbHMvY29tY3RsMzIvY29tY3RsMzIuaCwgZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYzoKCVRodXkgTmd1eWVuIDx0aHV5QG1hY2FkYW1pYW4uY29tPgoJQWRkZWQgc3VwcG9ydCBmb3Igd2l6YXJkIHByb3BlcnR5IHNoZWV0cy4KCgkqIG1pc2MvbHN0ci5jOiBIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglGaXggRm9ybWF0TWVzc2FnZTE2IGF0IGxlYXN0IGVub3VnaCB0byBnZXQgd2luOTUgMTZiaXQgcHJpbnRkbGcgd29ya2luZy4KCgkqIGRsbHMvY29tY3RsMzIvdGFiLmM6IERhdmlkIEx1eWVyIDxsdXllckB1Y3MudXdhLmVkdS5hdT4KCS0gaVNlbGVjdGVkIHNob3VsZCBiZSAtMSBpZiBubyBpdGVtIHNlbGVjdGVkIChHZXJhcmQgUGF0ZWwpCgktIHNvbWUgb2YgdGhlIGNoZWNrcyBmb3IgaW52YWxpZCBpdGVtcyB3aGVyZSA+IHdoZW4gdGhleSBzaG91bGQgaGF2ZSBiZWVuID49CgkgIChNYXJjdXMgTWVpc3NuZXIpCgktIG1hZGUgSW5zZXJ0SXRlbSBiZWhhdmUgc2ltaWxhcmx5IHRvIERlbGV0ZUl0ZW0sIGllLCBpZiB0aGUgY3VycmVudCBpdGVtIGlzCgkgIGFmdGVyIHdoZXJlIHRoZSBpdGVtIGlzIGluc2VydGVkLCBpbmNyZW1lbnQgdGhlIHNlbGVjdGVkIGl0ZW0gKERhdmlkIEx1eWVyKQoKCSogaWYxNjMyL3RodW5rLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBEZWNsYXJlIENBTEwzMl9DQkNsaWVudFtFeF0gd2l0aG91dCBXSU5BUEkuCgoJKiBkZWJ1Z2dlci9kYl9kaXNhc20uYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiAoRSlJUC1yZWxhdGl2ZSBvZmZzZXRzIGRlcGVuZCBvbiBvcGVyYW5kLCBub3QgYWRkcmVzcywgc2l6ZS4KCgkqIGluY2x1ZGUvd2ludXNlci5oLCByZWxheTMyL3VzZXIzMi5zcGVjLCB3aW5kb3dzL3VzZXIuYywgaW5jbHVkZS93aW5nZGkuaDoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgc3R1YiBpbXBsZW1lbnRhdGlvbiBmb3IgRW51bURpc3BsYXlEZXZpY2VzKi4KCgkqIGRsbHMvd25hc3BpMzIvd2luYXNwaTMyLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgU0NfR0VUX0RFVlRZUEUuCgoJKiBvbGUvY29tcG9iai5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUFkZGVkIHN0dWIgZm9yIE9MRTMyLkRsbEdldENsYXNzT2JqZWN0LgoKCSogZGxscy9zaGVsbDMyL3BpZGwuaCwgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBpbmNsdWRlL3NobGd1aWQuaCwgZGxscy9zaGVsbDMyL3BpZGwuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTW9yZSBzdXBwb3J0IGZvciBzcGVjaWFsIHBpZGxzIGluIFNIR2V0U3BlY2lhbEZvbGRlckxvY2F0aW9uLgoKCSogZ3JhcGhpY3MvcHNkcnYvZ3JhcGhpY3MuYywgZ3JhcGhpY3MvcHNkcnYvcGVuLmMsIGluY2x1ZGUvcHNkcnYuaDoKCUx1YyBUb3VyYW5nZWF1IDxsdWNAbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRlZCBpbnZpc2libGUgcGVucy4KCgkqIG9iamVjdHMvZGliLmMsIGdyYXBoaWNzL3gxMWRydi9kaWIuYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCVNtYWxsIERJQiBmaXhlcy4KCgkqIGNvbnRyb2xzL21lbnUuYzogUGFzY2FsIExlc3NhcmQgPHBhc2NhbEBtYWNhZGFtaWFuLmNvbT4KCUFkZGVkIGEgY2FzZSBmb3IgbWVudSBoYW5kbGluZyBpbiB3aW4zMS4KClR1ZSBTZXAgMTQgMTE6NTE6MDIgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUveDExZHJ2LmgsIG9iamVjdHMvZGliLmMsIGdyYXBoaWNzL3gxMWRydi9kaWIuYzoKCUthcmwgTGVzc2FyZCA8a2FybGxAY29yZWwuY29tPgoJRml4ZWQgR2V0RElCaXRzIHByb2JsZW1zLgoKCSogbWlzYy9jcHUuYywgbXVsdGltZWRpYS9taXhlci5jLCBpbmNsdWRlL2NvbW1jdHJsLmgsIGluY2x1ZGUvbW1zeXN0ZW0uaCwgaW5jbHVkZS9udGRkay5oLCBpbmNsdWRlL3Byc2h0LmgsIGluY2x1ZGUvc2hsb2JqLmgsIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbmRlZi5oLCBpbmNsdWRlL3dpbmUvb2JqX2RhdGFvYmplY3QuaCwgaW5jbHVkZS93aW5lL29ial9vbGVhdXQuaDoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQWRkIHN1cHBvcnQgZm9yIGFub255bW91cyBzdHJ1Y3QvdW5pb25zIG9uIGNvbXBpbGVycyB0aGF0IGltcGxlbWVudCBpdC4KCk1vbiBTZXAgMTMgMTY6MDY6MTcgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbnRyb2xzL2J1dHRvbi5jLCBjb250cm9scy91aXRvb2xzLmM6CglEZW5uaXMgQmp8cmtsdW5kIDxkZW5uaXNiQGNzLmNoYWxtZXJzLnNlPgoJRml4ZWQgd2luOXggbG9vayBvbiBjaGVja2JveGVzIGFuZCByYWRpb2J1dHRvbnMuCgoJKiBncmFwaGljcy93aW4xNmRydi8uY3ZzaWdub3JlLCBncmFwaGljcy93aW4xNmRydi9NYWtlZmlsZS5pbiwgZ3JhcGhpY3Mvd2luMTZkcnYvaW5pdC5jLCBncmFwaGljcy93aW4xNmRydi9wcnRkcnYuYywgaWYxNjMyL3RodW5rLmMsIGluY2x1ZGUvY2FsbGJhY2suaCwgaW5jbHVkZS9nZGkuaCwgbWlzYy8uY3ZzaWdub3JlLCBtaXNjL01ha2VmaWxlLmluLCBtaXNjL3ByaW50ZHJ2LmMsIG9iamVjdHMvZGMuYywgZ3JhcGhpY3MvZXNjYXBlLmMsIGdyYXBoaWNzL3BzZHJ2L2VzY2FwZS5jOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJQ2hhbmdlIGludGVyZmFjZXMgdG8gVEhVTktfQWxsb2MvRnJlZSBzbGlnaHRseSBhbmQgbWFrZSB0aGVtIG5vbi1zdGF0aWMuCglSZW1vdmUgcmVsYXlzIGZvciB3aW4xNmRydiBmcm9tIENhbGxCYWNrIHRhYmxlLCBpbnN0ZWFkIHVzZSBidWlsZCB0bwoJZ2VuZXJhdGUgdGhlbSBkaXJlY3RseSBpbiBncmFwaGljcy93aW4xNmRydi9wcnRkcnYuYy4KCUlmIFByaW50ZXIgQWJvcnRQcm9jIGlzIDE2Yml0IHRoZW4gYWxsb2NhdGUgdGh1bmsgYW5kIHN0b3JlIHRoYXQgYXMgYQoJMzJiaXQgcHJvYyBpbiBEQy4gIFNldHRpbmcgb2YgYWJvcnRwcm9jcyBub3cgZG9uZSBpbiB0aGUgY29ycmVjdCBwbGFjZQoJKGkuZS4gbm90IGluIHRoZSBkcml2ZXIpLgoKCSogb2JqZWN0cy9kaWIuYzogS2FpIE1vcmljaCA8a2FpLm1vcmljaEBiaWdmb290LmRlPgoJUmVsYXhlZCBwYXJhbWV0ZXIgY2hlY2tpbmcgZm9yIEdldERJQml0cy4KCgkqIHdpbjMyL2RldmljZS5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUZpeGVkIGxhc3QgZXJyb3IgY29kZSB3aGVuIHRyeWluZyB0byBsb2FkIHVua25vd24gVnhEIHdpdGggQ3JlYXRlRmlsZS4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJUHJldGVuZCBzdWNjZXNzZnVsIGV4ZWN1dGlvbiBvZiBTSEVMTF9Ob3RpZnlJY29uKigpLgoKCSogY29udHJvbHMvbWVudS5jLCByZWxheTMyL3VzZXIzMi5zcGVjOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBNZW51SXRlbUZyb21Qb2ludCBzdHViLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgb2ZmIGJ5IG9uZSBhbGxvY2F0aW9uIGVycm9yIChEUEEgYW5kIERTQSkuCgoJKiBtdWx0aW1lZGlhL21tc3lzdGVtLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgY3Jhc2ggaW4gUGxheVNvdW5kIHRocmVhZC4KClNhdCBTZXAgMTEgMTY6Mjk6MDAgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbnRyb2xzL2xpc3Rib3guYzogTmljayBIb2xsb3dheSA8Tmljay5Ib2xsb3dheUBhbGZpZS5kZW1vbi5jby51az4KCUZvciBXaW4gMy54IGFwcGxpY2F0aW9ucywgaWYgdGhleSBoYXZlIGVpdGhlciBob3Jpem9udGFsIG9yIHZlcnRpY2FsCglzY3JvbGxiYXJzLCBlbmFibGUgYm90aC4KCgkqIGRsbHMvYWR2YXBpMzIvY3J5cHQuYywgZGxscy9tc2FjbTMyL2ludGVybmFsLmMsIGRsbHMvc2hlbGwzMi9waWRsLmMsIGluY2x1ZGUvd2luZS93aW5lc3RyaW5nLmgsIG1lbW9yeS9zdHJpbmcuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRWxpbWluYXRlZCB3YXJuaW5ncy4KCgkqIGNvbnRyb2xzL2NvbWJvLmMsIGNvbnRyb2xzL2xpc3Rib3guYzoKCVBpZXJyZSBNYWdlYXUgPHBpZXJyZUBtYWNhZGFtaWFuLmNvbT4KCVNldCB0aGUgbW91c2UgY2FwdHVyZSBvbiB0aGUgY29tYm8gbGlzdGJveC4KCgkqIGdyYXBoaWNzL2RkcmF3LmM6IExpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIGZpeGVkIHRoZSBjcmVhdGlvbiBvZiBiYWNrLWJ1ZmZlcnMgaW4gREdBIG1vZGUKCS0gYWRkZWQgYSBjaGVjayBvbiB0aGUgdmFsaWRpdHkgb2YgdGhlIExvY2tpbmcgcmVjdGFuZ2xlCgktIGZpeGVkIHRoZSBlbnVtZXJhdGlvbiBmb3IgRFgtNi4wCgoJKiBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmM6IFN0ZXBoYW5lIEx1c3NpZXIgPHN0ZXBoYW5lQG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgUkdCUVVBRC9DT0xPUlJFRiBtaXh1cCBpbiBDcmVhdGVNYXBwZWRCaXRtYXAoKS4KCgkqIGNvbnRyb2xzL2J1dHRvbi5jOiBBYmV5IEdlb3JnZSA8YWJleUBtYWNhZGFtaWFuLmNvbT4KCURyYXcgdGhlIGZvY3VzIHJlY3RhbmdsZSBmb3IgYnV0dG9ucyB3aXRoIEJTXzNTVEFURSwgQlNfUkFESU9CVVRUT04sCglCU19DSEVDS0JPWCwgQlNfQVVUTyogc3R5bGVzLgoKRnJpIFNlcCAxMCAxNDozODoyMCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZ3JhcGhpY3MvcHNkcnYvZHJpdmVyLmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L2luaXQuYywgZ3JhcGhpY3Mvd2luMTZkcnYvcHJ0ZHJ2LmMsIGlmMTYzMi90aHVuay5jLCBpbmNsdWRlL2NhbGxiYWNrLmgsIGluY2x1ZGUvZ2RpLmgsIGluY2x1ZGUvcHNkcnYuaCwgaW5jbHVkZS93aW4xNmRydi5oLCBncmFwaGljcy9kcml2ZXIuYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCVdpbnNwb29sIERvY3VtZW50UHJvcGVydGllcyBhbmQgRGV2aWNlQ2FwYWJpbGl0aWVzIHNob3VsZCBub3cgd29yayBvbgoJbmF0aXZlIDE2IGJpdCBkcml2ZXJzLgoKCSogZGxscy93aW5zcG9vbC9pbmZvLmM6IEh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUZpeGVzIERldmljZUNhcGFiaWxpdGllcyBmb3IgRENfUEFQRVJTSVpFLgoJVmFyaW91cyBmaXhlcyBmb3IgT3BlblByaW50ZXIgYW5kIEVudW1QcmludGVycy4KCVNlcGFyYXRpb24gb2YgR2V0UHJpbnRlciBpbiBwcmVwYXJhdGlvbiBmb3IgdW5pZmljYXRpb24gd2l0aCBFbnVtUHJpbnRlcnMuCgoJKiBncmFwaGljcy9wc2Rydi9wcGQuYywgaW5jbHVkZS93aW5nZGkuaDoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUFkZCBzdXBwb3J0IGZvciBhIGxhcmdlIG51bWJlciBvZiBkaWZmZXJlbnQgcGFwZXIgc2l6ZXMgdG8gUG9zdFNjcmlwdAoJZHJpdmVyLgoKCSogaW5jbHVkZS9kM2QuaDogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUFkZGVkIGRlZmluaXRpb25zIG9mIENPTSBvYmplY3RzIGZvciBEM0QgNi54IHN1cHBvcnQuCgoJKiBncmFwaGljcy9wc2Rydi9mb250LmM6IE5pY2sgSG9sbG93YXkgPGFsZmllQGFsZmllLmRlbW9uLmNvLnVrPgoJSWYgdGhlcmUgaXMgbm90IGFuIGV4YWN0IG1hdGNoIGZvdW5kIGZvciB0aGUgcmVxdWVzdGVkIGZvbnQgbmFtZSwKCWluc3RlYWQgb2YgdXNpbmcgdGhlIGZpcnN0IGZvbnQgZGVmaW5lZCBmb3IgdGhlIHByaW50ZXIsIG1hcCBzb21lCgljb21tb24gZm9udCBmYW1pbGllcyAoZS5nLiBBcmlhbCAtPiBIZWx2ZXRpY2EpLCBhbmQgc2VhcmNoIGFnYWluLgoKCSogaWYxNjMyL2tlcm5lbC5zcGVjLCBpZjE2MzIvdGh1bmsuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJRml4ZWQgYnVnIGluIENCQ2xpZW50IHJvdXRpbmVzIGJ5IHN0b3JpbmcgdGhlIFNFR1BUUiBpbiB0aGUgZ2xvYmFsCgl0YWJsZSBhbmQgdHJhbnNsYXRpbmcgaXQgb24gZXZlcnkgdXNlLgoKCSogaW5jbHVkZS9iaXRtYXBzL29pY19zYW1wbGU6IEFiZXkgR2VvcmdlIDxhYmV5QG1hY2FkYW1pYW4uY29tPgoJQ2hhbmdlZCB0aGUgcGl4bWFwIHRvIGxvb2sgbGlrZSB0aGUgd2luZG93cyBkZWZhdWx0IGFwcGxpY2F0aW9uIGljb24uCgoJKiBmaWxlcy9kcml2ZS5jOiBSaWNoYXJkIENvaGVuIDxyaWNoYXJkQGp1Ymp1Yi5kZW1vbi5jby51az4KCVN0b3AgY3Jhc2ggaW4gR2V0RGlza0ZyZWVTcGFjZUV4LgoKCSogd2luZG93cy9ub25jbGllbnQuYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJTWFkZSBzdXJlIHRoYXQgdGhlIHdpbmRvd3Mgd2l0aCB0aGUgV1NfRVhfVE9PTFdJTkRPVyBzdHlsZSBkaWRuJ3QgZ2V0CgloYW5kbGVkIGJ5IHRoZSB3aW5kb3cgbWFuYWdlci4KCgkqIGNvbnRyb2xzL2VkaXQuYzogUGFzY2FsIExlc3NhcmQgPHBhc2NhbEBtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGVkIHRoZSBiZWhhdmlvciBhcm91bmQgdGhlIEVTX1dBTlRSRVRVUk4gc3R5bGUgaW4gdGhlIGVkaXQKCWNvbnRyb2wuCgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOiBTdGVwaGFuZSBMdXNzaWVyIDxzdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KCVByZXNzaW5nIHRoZSBkZWxldGUga2V5IHVzaW5nIGFuIGV4dGVuZGVkIGtleWJvYXJkIHdpdGggbnVtbG9jayBvbiBpcwoJbm90IGdlbmVyYXRpbmcgYW55bW9yZSBhIFdNX0NIQVIgbWVzc2FnZS4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYzogTmljbGFzIEthcmxzc29uIDxua2FybHNzb0ByYS5hYm8uZmk+CglGaXhlZCBwYXR0ZXJuIG1hdGNoaW5nIGluIFBhdGhNYXRjaFNwZWNBL1cKCgkqIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmM6IEZyYW5jb2lzIEJvaXN2ZXJ0IDxmcmFuY29pc0BtYWNhZGFtaWFuLmNvbT4KCVRhYmJpbmcgaW4gdGhlIGxpc3R2aWV3IG9mIHRoZSBzaGVsbHZpZXcuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IEx1YyBUb3VyYW5nZWF1IDxsdWNAbWFjYWRhbWlhbi5jb20+CglGaXhlZCBMSVNUVklFV19HZXRJdGVtUmVjdDogdGhlIGNhbGN1bGF0aW9ucyB3ZXJlIG9mZiBmb3IgTFZJUl9CT1VORFMsCglMVklSX1NFTENUQk9VTkRTLCBMVklSX0xBQkVMIHdoZW4gdGhlIGl0ZW0gd2lkdGggaXMgZ3JlYXRlciB0aGFuIHRoZQoJY29sdW1uIHdpZHRoLgoJRml4ZWQgV01fR0VURExHQ09ERSBieSByZW1vdmluZyB0aGUgRExHQ19XQU5UUlRBQiBhbmQgYWRkaW5nIERMR0NfV0FOVENIQVJTLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglGaXhlZCBjcmFzaCBpbiBkZXRhY2ggc2VxdWVuY2UuCgoJKiBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUZpeGVkIHdyb25nIHJldHVybiB2YWx1ZS4KCgkqIGRsbHMvY3J0ZGxsL2NydGRsbF9tYWluLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCVByZXZlbnQgZW5kbGVzcyBsb29wIGluIGV4Y2VwdDIuCgoJKiB0b29scy9idWdfcmVwb3J0LnBsOiBBZGFtIFNhY2FybnkgPG1hZ2ljYm94QGJlc3R3ZWIubmV0PgoJTm93IHdvcmtzIGFyb3VuZCB3aW5lIG5ldmVyIGV4aXRpbmcgdGhlIGRlYnVnZ2VyLgoJU2hvdWxkIHB1dCBidWcgcmVwb3J0cyBpbiB0aGUgcmlnaHQgcGxhY2Ugbm93LgoKCSogb2xlL29sZWF1dDMyLmMsIG9sZS9NYWtlZmlsZS5pbiwgcmVsYXkzMi9vbGVhdXQzMi5zcGVjOgoJTWFyY3VzIE1laXNzbmVyIDxNYXJjdXMuTWVpc3NuZXJAY2FsZGVyYS5kZT4KCUFkZGVkIHN0dWIgZm9yIFJlZ2lzdGVyQWN0aXZlT2JqZWN0KCkuCgoJKiBkbGxzL3dpbjMycy93MzJzeXMuYywgZGxscy93aW4zMnMvdzMyc3lzLnNwZWM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIHN0dWIgZm9yIFdJTjMyUzE2LkVYUDEgKG1vc3QgbGlrZWx5IExvYWRQZVJlc291cmNlMTYpLgoKU3VuIFNlcCAgNSAxNjo0ODoxNyAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbG9hZGVyL21haW4uYywgbG9hZGVyL21vZHVsZS5jLCBtaXNjZW11L21haW4uYywgaW5jbHVkZS93aW5kZWYuaDoKCVJlbW92ZWQgX193aW5lbGliIGZsYWcuCgoJKiB3aW5kb3dzL2RyaXZlci5jLCBtdWx0aW1lZGlhL2F1ZGlvLmMsIG11bHRpbWVkaWEvZHNvdW5kLmMsIG11bHRpbWVkaWEvbWNpLmMsIG11bHRpbWVkaWEvbWNpYW5pbS5jLCBtdWx0aW1lZGlhL21jaWF2aS5jLCBtdWx0aW1lZGlhL21jaWNkYS5jLCBtdWx0aW1lZGlhL21pZGkuYywgbXVsdGltZWRpYS9taXhlci5jLCBtdWx0aW1lZGlhL21tYXV4LmMsIG11bHRpbWVkaWEvbW1zeXN0ZW0uYywgbXVsdGltZWRpYS90aW1lLmMsIG11bHRpbWVkaWEvd2lubW0ucmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVVwZGF0ZWQgdG8gbmV3IE1NIGhlYWRlciBvcmdhbml6YXRpb24uCgoJKiBpbmNsdWRlL211bHRpbWVkaWEuaCwgaW5jbHVkZS9tbWRkay5oLCBpbmNsdWRlL21tc3lzdGVtLmgsIG11bHRpbWVkaWEvb3NzLmgsIG11bHRpbWVkaWEvd2luZW1tLmg6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCU1vdmVkIERESyBsZXZlbCBtYXRlcmlhbCB0byBuZXcgaW5jbHVkZS9tbWRkay5oIGZpbGUuCglDb3BpZWQgc29tZSBTREsgbGV2ZWwgbWF0ZXJpYWwgZnJvbSBpbmNsdWRlL211bHRpbWVkaWEuaCBmaWxlLgoKCSogbXVsdGltZWRpYS9tY2l3YXZlLmMsIG11bHRpbWVkaWEvbWNpbWlkaS5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglVcGRhdGVkIHRvIG5ldyBNTSBoZWFkZXIgb3JnYW5pemF0aW9uLgoJQ2xlYW5lZC11cCBpbnRlcm5hbCBzdHJ1Y3R1cmVzIChub3cgMzIgYml0IG9ubHkpLgoJTm93IHVzaW5nIHRoZSBNTVNZU1RFTSBlbnRyeSBwb2ludHMgcmF0aGVyIHRoYW4gdGhlIGxvdyBsZXZlbCBkcml2ZXIKCW9uZXMgZGlyZWN0bHkuCgoJKiBpbmNsdWRlL3NpZ19jb250ZXh0Lmg6IEp1ZXJnZW4gTG9jayA8bm94QGplbGFsLmtuLWJyZW1lbi5kZT4KCUZpeCAlZnMgZm9yIHNpZ25hbCBoYW5kbGVycyBpbiB0aGUgRlNfc2lnIHVuZGVmaW5lZCBjYXNlICh0aGlzIHBhdGNoCglhY3R1YWxseSBmcm9tIFVscmljaCBXZWlnYW5kLCBJIG9ubHkgdGVzdGVkIGl0KS4KCgkqIHNjaGVkdWxlci9zeXNkZXBzLmMsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBpbmNsdWRlL2FjY29uZmlnLmgsIGluY2x1ZGUvY29uZmlnLmguaW46CglSb24gUmVjb3JkIDxyckBzY28uY29tPgoJQWRkZWQgc3VwcG9ydCBvZiBfX3Rocl9lcnJubyBmb3IgcmVlbnRyYW5jZSBvbiBVbml4V2FyZS4KCgkqIHdpbmRvd3MvZGlhbG9nLmM6IFJpY2hhcmQgQ29oZW4gPHJpY2hhcmRAanVianViLmRlbW9uLmNvLnVrPgoJTm8gbG9uZ2VyIG5lZWRzIHRvIGNhbGN1bGF0ZSBpdHMgb3duIGNoYXJhY3RlciBzaXplLgoKCSogbWlzYy9tYWluLmM6IFJpY2hhcmQgQ29oZW4gPHJpY2hhcmRAanVianViLmRlbW9uLmNvLnVrPgoJQ29uc2VxdWVudGlhbCBjaGFuZ2VzIHRvIGRlZmF1bHQgc3lzdGVtIGZvbnQgc2l6ZXMKCgkqIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLCBpbmNsdWRlL3gxMWZvbnQuaDoKCVJpY2hhcmQgQ29oZW4gPHJpY2hhcmRAanVianViLmRlbW9uLmNvLnVrPgoJVmFyaW91cyBmaXhlcyBmb3IgdGhlIFgxMSBmb250IG1hcHBlciwgcGFydGljdWxhcmx5OgoJLSBzaXplIGZvbnRzIHdpdGggbmVnYXRpdmUgaGVpZ2h0cyBjb3JyZWN0bHkKCS0gY2FsY3VsYXRlIGF2ZXJhZ2Ugd2lkdGggY29ycmVjdGx5LgoKCSogb2JqZWN0cy9jdXJzb3JpY29uLmM6IEZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCVVzZSBhIHNwZWNpYWwgdmFsdWUgaW4gdGhlIGhvdHNwb3QgY29vcmRpbmF0ZSB0byBpZGVudGlmeSB3aGljaCBISUNPTgoJYXJlIGN1cnNvcnMgYW5kIHdoaWNoIGFyZSBpY29ucy4KCgkqIGNvbnRyb2xzL2NvbWJvLmM6IFBpZXJyZSBNYWdlYXUgPHBpZXJyZUBtYWNhZGFtaWFuLmNvbT4KCU1vZGlmaWVkIENCRHJvcERvd24gdG8gZmluZCB0aGUgYmVzdCBoZWlnaHQgb2YgdGhlIGxpc3Rib3guCgpTYXQgU2VwICA0IDE0OjM2OjAzIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb25maWd1cmUuaW4sIGluY2x1ZGUvY29uZmlnLmguaW4sIGluY2x1ZGUvd2luZS93aW5lc3RyaW5nLmgsIG1lbW9yeS9zdHJpbmcuYywgbWlzYy9wb3J0LmMsIGNvbmZpZ3VyZToKCUFkZGVkIGNvbmZpZ3VyZSBjaGVjayBmb3Igc3RyW25dY2FzZWNtcC4KCgkqIHdpbmRvd3MvdGltZXIuYzogVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQWxsb3cgdGltZW91dCBvZiAwLiBDYXAgdGltZXIgcmF0ZSB0byBTWVNfVElNRVJfUkFURS4KCgkqIGluY2x1ZGUvd2luZGVmLmg6IEh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUFkZGVkIHR5cGUgUFdPUkQuCgoJKiBkbGxzL3dpbnNwb29sL2luZm8uYywgaW5jbHVkZS93aW5zcG9vbC5oOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJQWRkZWQgbG9hZHMgb2YgdHlwZXMsIGRlZmluZXMgYW5kIGRlY2xhcmF0aW9ucyB0byB3aW5zcG9vbC5oLgoKCSogZGxscy9jb21tZGxnL2NkbGdfRW4ucmMsIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYzoKCUZyYW5jb2lzIEJvaXN2ZXJ0PGZyYW5jb2lzQG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgdGhlIGhlaWdodCBvZiBpdGVtcyBpbiB0aGUgbG9va2luIGNvbWJvYm94IG9mIHRoZSBmaWxlZGxnOTUuCgoJKiBjb250cm9scy9lZGl0LmM6IFN0ZXBoYW5lIEx1c3NpZXIgPHN0ZXBoYW5lQG1hY2FkYW1pYW4uY29tPgoJSW5pdGlhbGl6ZSB0aGUgZW5hYmxpbmcgc3RhdGUgdmFyaWFibGUgaW4gdGhlIGVkaXQuCgoJKiBncmFwaGljcy9iaXRibHQuYzogTm9vbWVuIEhhbXphIDxub29tZW5AbWFjYWRhbWlhbi5jb20+CglUaGUgZmFzdCB3aW5kb3cgZnJhbWUgc2l6ZSBzaG91bGQgYmUgdGhlIHNhbWUgYXMgdGhlIGZyYW1lIHNpemUgdXNlZAoJYnkgTkNfRHJhd0ZyYW1lIGZ1bmN0aW9uLgoKCSogb2JqZWN0cy9yZWdpb24uYzogSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJRml4ZWQgY29tcGlsZXIgd2FybmluZ3MuCgoJKiBwcm9ncmFtcy9yZWdhcGkvcmVnYXBpLmM6IEh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCWxzdHJuY21waSBpc24ndCBhIHdpbmRvd3MgQVBJLCB1c2Ugc3RybmNhc2VjbXAgaW5zdGVhZC4KCgkqIG1lbW9yeS9nbG9iYWwuYzoKCUZpeGVkIEdNRU1fWkVST0lOSVQgaW4gR2xvYmFsUmVhbGxvYyAodGhhbmtzIHRvIEdlcmFyZCBQYXRlbCkuCgoJKiB3aW5kb3dzL21zZ2JveC5jOiBBZGRlZCBtaXNzaW5nIEhGT05UIHR5cGUuCgoJKiBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jLCBpbmNsdWRlL2N1cnNvcmljb24uaCwgbG9hZGVyL21haW4uYywgb2JqZWN0cy9iaXRtYXAuYywgb2JqZWN0cy9jdXJzb3JpY29uLmMsIHdpbmRvd3MvY2xhc3MuYzoKCVBpZXJyZSBNYWdlYXUgPHBpZXJyZUBtYWNhZGFtaWFuLmNvbT4KCUNoYW5nZWQgQ29weUltYWdlIHRvIGFjY2VwdCBkZXNpcmVkWCwgZGVzaXJlZFkgYW5kIExSX0NPUFlGUk9NUkVTT1VSQ0UuCglDVVJTT1JJQ09OX0ZpbmRCZXN0SWNvbiBjaGFuZ2VkIHRvIGZpbmQgdGhlIGNvcnJlY3QgaWNvbi4KCUltYWdlTGlzdF9SZXBsYWNlSWNvbiBub3cgY2FsbHMgQ29weUltYWdlIGludGVybmFsbHkuCglBc3NpZ24gYSB2YWx1ZSBmb3IgdGhlIGhJY29uU20gQ0xBU1MgbWVtYmVyICh1c2luZyBDb3B5SW1hZ2UpLgoKCSogd2luMzIvY29uc29sZS5jOiBHdXkgQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJRml4ZWQgV3JpdGVDb25zb2xlT3V0cHV0IGFuZCBHZXROdW1iZXJPZkNvbnNvbGVJbnB1dEV2ZW50cy4KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmM6IFRodXkgTmd1eWVuIDx0aHV5QG1hY2FkYW1pYW4uY29tPgoJR2l2ZSBhcHBsaWNhdGlvbnMgYSBjb3B5IG9mIHRoZSBwcm9wZXJ0eSBzaGVldCBkaWFsb2cgdGVtcGxhdGUgYXMgdGhleQoJbWlnaHQgbW9kaWZ5IGl0LgoKCSogcmVsYXkzMi9yZWxheTM4Ni5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVJlbGF5IGV4Y2x1ZGUgbGlzdHMgd2VyZSBub3Qgd29ya2luZyBkdWUgdG8gc29tZSBDaGFyVXBwZXJBKCkKCXNvbWV3aGVyZSBlbHNlLgoKCSogbG9hZGVyL2xvYWRvcmRlci5jLCB3aW5lLmluaToKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCXdpbnNwb29sIC0+IHdpbnNwb29sLmRydgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMi5zcGVjLCBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUltcGxlbWVudGVkIFN0ckNtcE5JQSBsaWtlIHRoZSBvdGhlciBTdHJDbXBYWCBmdW5jdGlvbnMuCgoJKiBmaWxlcy9wcm9maWxlLmM6IFRodXkgTmd1eWVuIDx0aHV5QG1hY2FkYW1pYW4uY29tPgoJUmVzb2x2ZSBlbnZpcm9ubWVudCB2YXJpYWJsZSB3aGVuIGVudW1lcmF0aW5nIHZhbHVlcy4KCgkqIGNvbnRyb2xzL2VkaXQuYzogUGFzY2FsIExlc3NhcmQgPHBhc2NhbEBtYWNhZGFtaWFuLmNvbT4KCVRoZSBmb3JtYXQgcmVjdCBpcyByZWNhbGN1bGF0ZWQgZm9yIGVhY2ggZm9udCBjaGFuZ2UuIE1vdmVFbmQgJgoJTW92ZUhvbWUgaW1wcm92ZWQuCgpGcmkgU2VwICAzIDE2OjQ5OjE3IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBncmFwaGljcy94MTFkcnYvZGliLmMsIGluY2x1ZGUveDExZHJ2LmgsIG9iamVjdHMvZGliLmM6CglLYXJsIExlc3NhcmQgPGthcmxsQGNvcmVsLmNvbT4KCUlhbiBXYXJkCglEYW4gTGFuZ2xvaXMKCVNwZWVkIHVwIGNvbnZlcnNpb24gYmV0d2VlbiBYSW1hZ2VzIGFuZCBESUJTZWN0aW9ucy4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYywgZGxscy9jb21tZGxnL2ZpbGVkbGdicm93c2VyLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnYnJvd3Nlci5oLCBkbGxzL3NoZWxsMzIvc2hsdmlldy5jOgoJRnJhbmNvaXMgQm9pc3ZlcnQgPGZyYW5jb2lzQG1hY2FkYW1pYW4uY29tPgoJU29tZSA8b3Blbj4gZmVhdHVyZXMgaW4gdGhlIGZpbGUgZGlhbG9nIDk1LgoKCSogaW5jbHVkZS93aW5udC5oLCBzY2hlZHVsZXIvc3lzZGVwcy5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglSZW1vdmVkIGdsb2JhbCB2YXJpYWJsZSBwQ3VycmVudFRlYi4KCgkqIG1lbW9yeS9oZWFwLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJSEVBUF9Db21taXQvRGVjb21taXQgd2VyZSBhc3N1bWluZyBhIHBhZ2Ugc2l6ZSBvZiA0S0IKCXVuY29uZGl0aW9uYWxseS4KCgkqIGluY2x1ZGUvd2luZ2RpLmg6IEh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUEgZmV3IG1vcmUgRENfIGRlZmluZXMgZnJvbSBXaW4yMDAwLgoKCSogZGxscy9jb21jdGwzMi9zdGF0dXMuYzogSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJQ2hlY2sgdGhhdCBscENyZWF0ZS0+bHBzek5hbWUgaXMgbm9uLU5VTEwuCgoJKiB3aW5kb3dzL2RpYWxvZy5jOiBNYXJjdXMgTWVpc3NuZXIgPE1hcmN1cy5NZWlzc25lckBjYWxkZXJhLmRlPgoJTW9yZSByZXN0cmljdGl2ZSBjaGVja3MsIHNvIERJQUxPR19Jc0FjY2VsZXJhdG9yIGRvbid0IGxvb3AKCWVuZGxlc3NseS4KCgkqIGNvbnRyb2xzL21lbnUuYzogUGFzY2FsIExlc3NhcmQgPHBhc2NhbEBtYWNhZGFtaWFuLmNvbT4KCU1lbnUgaGlkZXMgd2hlbiBjbGlja2VkIGZvciBhIHNlY29uZCB0aW1lLgoKCSogd2luZG93cy9tc2dib3guYzogUmljaGFyZCBDb2hlbiA8cmljaGFyZEBqdWJqdWIuZGVtb24uY28udWs+CgktIHNlbGVjdCB0aGUgZm9udCBpbnRvIHRoZSBkYyBiZWZvcmUgY2FsY3VsYXRpbmcgdGhlIGV4dGVudAoJLSBtYWtlIGJ1dHRvbmhlaWdodCBjb3JyZXNwb25kIHRvIHRleHQgaGVpZ2h0ICsgd2lkdGggdG8gY2FwdGlvbgoJLSBidXR0b24gd2FzICJmbGFzaGluZyIgb24gRW5kRGlhbG9nIChtdXN0IGRlbGV0ZSBmb250IEFGVEVSIEVuZERpYWxvZykKCS0gI2RlZmluZXMgZm9yIERsZ0l0ZW1JZHMKCS0gaW1wbGVtZW50IE1CX1JFVFJZQ0FOQ0VMCgoJKiBjb250cm9scy9lZGl0LmM6IFN0ZXBoYW5lIEx1c3NpZXIgPHN0ZXBoYW5lQG1hY2FkYW1pYW4uY29tPgoJS2VlcCB0aGUgZW5hYmxlIHN0YXRlIGluIHRoZSBlZGl0IHN0cnVjdHVyZSBpbnN0ZWFkIG9mIGNhbGxpbmcKCUlzV2luZG93RW5hYmxlZCgpLgoKCSogaW5jbHVkZS9jbGlwYm9hcmQuaCwgaW5jbHVkZS90dHlkcnYuaCwgaW5jbHVkZS94MTFkcnYuaCwgb2xlL2NsaXBib2FyZC5jLCB3aW5kb3dzL2NsaXBib2FyZC5jLCB3aW5kb3dzL3R0eWRydi9jbGlwYm9hcmQuYywgd2luZG93cy90dHlkcnYvaW5pdC5jLCB3aW5kb3dzL3VzZXIuYywgd2luZG93cy94MTFkcnYvY2xpcGJvYXJkLmMsIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIHdpbmRvd3MveDExZHJ2L2luaXQuYzoKCU5vZWwgQm9ydGh3aWNrIDxub2VsQG1hY2FkYW1pYW4uY29tPgoJLSBJbXBsZW1lbnQgaW50ZXJwcm9jZXNzIGNsaXBib2FyZCBjb21tdW5pY2F0aW9uLgoJLSBTdXBwb3J0IGZvciB0aGUgUFJJTUFSWSBhbmQgQ0xJUEJPQVJEIHNlbGVjdGlvbiBhdG9tcy4KCS0gU3VwcG9ydCBmb3IgdGhlIFRBUkdFVFMgc2VsZWN0aW9uIGZvcm1hdC4KCS0gRXhwb3NlIG5hdGl2ZSBXaW5kb3dzIGNsaXBib2FyZCBmb3JtYXRzIHRocm91Z2ggWCBzZWxlY3Rpb24gdGFyZ2V0cy4KCgkqIG9iamVjdHMvZ2Rpb2JqLmM6IFJpY2hhcmQgQ29oZW4gPHJpY2hhcmRAanVianViLmRlbW9uLmNvLnVrPgoJTWFrZSBzdG9jayBmb250cyBpbmRlcGVuZGVudCBvZiBtYXBwaW5nIG1vZGUuCglTeXN0ZW0gZm9udCBzaG91bGQgb25seSBiZSBib2xkIGZvciBXaW4zMS4KCgkqIHdpbmRvd3MvZGlhbG9nLmM6IEZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCVJlbW92ZWQgdHJ1bmNhdGluZyBlcnJvcnMgdGhhdCBoYXBwZW4gd2hlbiBjb252ZXJ0aW5nIGZvbSBkaWFsb2cgdW5pdHMKCXRvIHBpeGVscy4KCgkqIHdpbmRvd3Mvd2lucG9zLmM6IEFiZXkgR2VvcmdlPGFiZXlAbWFjYWRhbWlhbi5jb20+CglDaGVjayBuZXcgY29vcmRpbmF0ZXMgcmVjZWl2ZWQgaW4gV01fTkNDQUxDU0laRSBtZXNzYWdlLgoKCSogY29udHJvbHMvYnV0dG9uLmM6IEZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCVNsaWdodCAxIHBpeGVsIGFkanVzdG1lbnQgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSByYWRpbyBidXR0b24gYml0bWFwLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIG9mZiBieSBvbmUgYWxsb2NhdGlvbiBlcnJvcnMuCgoJKiBjb250cm9scy9lZGl0LmM6IFBhc2NhbCBMZXNzYXJkIDxwYXNjYWxAbWFjYWRhbWlhbi5jb20+CglUaGUgYmFja3NwYWNlIGlzIG5vdyBoYW5kbGVkIGluIHRoZSBXTV9DSEFSIG1lc3NhZ2UuCgoJKiB3aW5kb3dzL21kaS5jLCB3aW5kb3dzL25vbmNsaWVudC5jOgoJRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJTWFrZSBzdXJlIHRoYXQgYWxsIE1ESSBjaGlsZHJlbiBoYXZlIHRoZSBXU19FWF9NRElDSElMRCBzdHlsZSBzZXQuCgoJKiBtZW1vcnkvc3RyaW5nLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgcHJvdG90eXBlIG9yZGVyLgoKCSogZGxscy9udGRsbC9leGNlcHRpb24uYzogSnVlcmdlbiBMb2NrIDxub3hAamVsYWwua24tYnJlbWVuLmRlPgoJRml4IEVYQ19zZWd2IGZvciB0aGUgVFJBUF9zaWcgdW5kZWZpbmVkIGNhc2UgKGVnIEZyZWVCU0QpLgoKCSogZGVidWdnZXIvc3RhYnMuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBjcmFzaC4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgdGhlIHN1cHBvcnQgZm9yIHRoZSBjbG9zZSBidXR0b24gaW4gdGhlIFNoZWxsQWJvdXQgZGlhbG9ncy4KCgkqIGRsbHMvY29tbWRsZy9jZGxnX05sLnJjOiBLbGFhcyB2YW4gR2VuZCA8a2xhYXNAdmFuZ2VuZC5kZW1vbi5ubD4KCUFkZGVkIER1dGNoIHJlc291cmNlcyBmb3IgUHJpbnREbGczMi4KCgkqIGRsbHMvY29tbWRsZy9jZGxnLmgsIGRsbHMvY29tbWRsZy9jZGxnX0VuLnJjLCBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYzoKCUtsYWFzIHZhbiBHZW5kIDxrbGFhc0B2YW5nZW5kLmRlbW9uLm5sPgoJQ29tcGxldGVkIFByaW50RGxnMzIgcmVzb3VyY2Ugc3RyaW5ndGFibGUuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2x0aXBzLmM6IEZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUFkZGVkIHNhbml0eSBjaGVja3MgaW4gdGhlIGNsZWFudXAgY29kZS4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6IEd1eSBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglDb21wbGV0ZWQgR2V0S2V5TmFtZVRleHQgZm9yIG5vbi1jaGFyYWN0ZXIga2V5cy4KCgkqIGRsbHMvc2hlbGwzMi9icnNmb2xkZXIuYzogRnJhbmNvaXMgQm9pc3ZlcnQgPGZyYW5jb2lzQG1hY2FkYW1pYW4uY29tPgoJTWFrZSBkaXJlY3RvcmllcyBuYW1lIGFwcGVhciBpbiB0aGUgQnJvd3NlRm9yRm9sZGVyIGRpYWxvZy4KCgkqIGxvYWRlci9sb2Fkb3JkZXIuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglEbyBub3QgcmVtb3ZlIC5kcnYgZnJvbSBmaWxlbmFtZXMuCgoJKiBjb250cm9scy9idXR0b24uYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgYSBsaXR0bGUgcG9zaXRpb25pbmcgYnVnIHdpdGggdGhlIGNoZWNrYm94LgoKCSogd2luZG93cy9ub25jbGllbnQuYywgd2luZG93cy93aW4uYywgd2luZG93cy94MTFkcnYvd25kLmM6CglBYmV5IEdlb3JnZSA8YWJleUBtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIHJlc2l6aW5nIGJ1Z3MgZm9yIHdpbmRvd3Mgd2l0aCBXU19USElDS0ZSQU1FIGFuZCBXU19ETEdGUkFNRQoJc3R5bGVzLgoKCSogbXVsdGltZWRpYS9tY2kuYzogTWljaGFlbCBNY0Nvcm1hY2sgPG1jY29ybWFjQGFhbHMyNy5hbGNhdGVsLmNvbS5hdT4KCUNoYW5nZWQgc25wcmludGYgdG8gd3NucHJpbnRmQSB0byByZW1vdmUgdW5yZXNvbHZlZCBleHRlcm5hbCB3aGVuCgljb21waWxpbmcgb24gU29sYXJpcy9TdW4uCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSW1wbGVtZW50ZWQgTFZNX0lOU0VSVENPTFVNTlcgYW5kIExWTV9JTlNFUlRJVEVNVyBieSB1c2luZyB0aGUgYXNjaWkKCWVxdWl2YWxlbnRzLiAoV2luV29yZCA5NywgRmlsZSBPcGVuIGRpYWxvZykKCgkqIHdpbmRvd3MvY2xhc3MuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglVc2UgaW4gR2V0Q2xhc3NJbmZvVyB0aGUgc2FtZSBoYWNrIGZvciBzeXN0ZW1jbGFzc2VzIGFzIGluCglHZXRDbGFzc0luZm9BICh3aW53b3JkIDk3IHdpdGggbmF0aXZlIGNvbWN0bDMyKS4KCgkqIGRsbHMvc2hlbGwzMi9waWRsLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSGFuZGxlIFNIR0RGSUxfRklORERBVEEgY29ycmVjdGx5IGluIFNIR2V0RGF0YUZyb21JRExpc3RXLgoKCSogY29udHJvbHMvZWRpdC5jOiBHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCUltcGxlbWVudGVkIHdQYXJhbSBvZiBXTV9QQUlOVCBtc2cgZm9yIGVkaXQgY29udHJvbC4KCgkqIGRsbHMvd2luc3Bvb2wvaW5mby5jOiBIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglGaXggb2ZmIGJ5IG9uZSBlcnJvciBpbiBXSU5TUE9PTF9HZXRPcGVuZWRQcmludGVyQS4KCgkqIG1pc2MvcmVnaXN0cnkuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglzdWJrZXlfZm91bmQgZGlkIG5vdCBzZWFyY2ggZm9yIF9hbGxfIHN1YiBrZXlzLgoKU2F0IEF1ZyAyMSAxNDo0NzoyOSAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZ2Jyb3dzZXIuYywgZGxscy9jb21tZGxnL2NkbGcuaCwgZGxscy9jb21tZGxnL2NkbGczMi5jOgoJRnJhbmNvaXMgQm9pc3ZlcnQgPGZyYW5jb2lzQG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50ZWQgYmFzaWMgYnJvd3NpbmcgaW4gdGhlIGZpbGUgbmFtZSBlZGl0IG9mIHRoZSBmaWxlZGxnIDk1LgoKCSogY29udHJvbHMvbWVudS5jOiBTdGVwaGFuZSBMdXNzaWVyIDxzdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KCUF2b2lkIGNoYW5naW5nIHRoZSBhY3RpdmF0aW9uIHN0YXRlIGluIEVuYWJsZU1lbnVJdGVtLgoKCSogaW5jbHVkZS93aW5udC5oOiBGaXhlZCAjaWZkZWYgc3ltYm9sIGZvciBQb3dlclBDLgoKCSogb2xlL3BhcnNlZHQuYywgb2xlL3BhcnNlZHQuaDoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJT25seSBkZWNsYXJlIERhdGVTdHlsZSBpbiBhIHNpbmdsZSBjb21waWxhdGlvbiB1bml0LgoKCSogd2luZG93cy9ub25jbGllbnQuYzogUGFzY2FsIExlc3NhcmQgPHBhc2NhbEBtYWNhZGFtaWFuLmNvbT4KCUFkZGVkIHRoZSBjYXNlIG9mIGEgdXNlciBkZWZpbmVkIGljb24gZm9yIHRoZSBzeXNidXR0b24gaGl0dGVzdC4KCgkqIG9sZS90eXBlbGliLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglGaXhlZCB0eXBlbGliIHJlYWRpbmcgdG8gY29ycmVjdGx5IHVzZSB0aGUgb2Zmc2V0IG9mIHRoZSB0eXBlbGliIHRoYXQKCWlzIGVtYmVkZGVkIGluIGZvciBleGFtcGxlIGEgZGxsIGZpbGUuCgoJKiBncmFwaGljcy94MTFkcnYvZGliLmM6IEtyaXN0aWFuIE5pZWxzZW4gPGtyaXN0aWFuLm5pZWxzZW5Acmlzb2UuZGs+CglGaXhlZCBDcmVhdGVESUJTZWN0aW9uKCkgY2FsbGVkIHdpdGggbmVnYXRpdmUgaGVpZ2h0IHRvIHNldCB0aGUgaGVpZ2h0Cglwb3NpdGl2ZSBpbiB0aGUgY3JlYXRlZCBESUJTRUNUSU9OLCBhcyBwZXIgTVMga25vd2xlZGdlYmFzZSBRMTg2NTg2LgoKCSogd2luZG93cy9wYWludGluZy5jOiBTdGVwaGFuZSBMdXNzaWVyIDxzdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KCVRoZSBwYWludCByZWN0YW5nbGUgcmV0dXJuIGluIHRoZSBQQUlOVFNUUlVDVCBpbiBCZWdpblBhaW50IHNob3VsZAoJbmV2ZXIgYmUgYmlnZ2VyIHRoYW4gdGhlIGNsaWVudCBhcmVhIG9mIHRoZSB3aW5kb3cuCgoJKiBjb250cm9scy9saXN0Ym94LmM6IFJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglNYWtlIHN1cmUgdGhhdCBhbiBlbXB0eSBzdHJpbmcgbmV2ZXIgbWF0Y2hlcyBhIGxpc3Rib3ggZW50cnkgaW4KCUxJU1RCT1hfRmluZFN0cmluZygpLgoKCSogZGxscy92ZXJzaW9uL2luZm8uYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUFsaWdubWVudCBmaXguCgoJKiBjb250cm9scy9tZW51LmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgY3Jhc2ggd2hlbiBhY2Nlc3Npbmcgc3lzbWVudS4KCgkqIGRlYnVnZ2VyL3N0YWNrLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJUmVhbGx5IGRvIGEgc2lsZW50IGJhY2t0cmFjZSB3aGVuIHJlcXVlc3RlZC4KCgkqIGRlYnVnZ2VyL2hhc2guYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglEbyBub3Qgc2V0IHRoZSBhZGRyZXNzIGlmIHRoZSBzeW1ib2wgaXMgc3RpbGwgdGFnZ2VkIElOVkFMSUQuCgoJKiBkZWJ1Z2dlci9zdGFicy5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIHN1cHBvcnQgZm9yIE5fQklOQ0wgYW5kIE5fRUlOQ0wgaW5zdHJ1Y3Rpb25zLgoJRml4ZWQgdHlwZSBwYXJzaW5nIChhcyBnZW5lcmF0ZWQgYnkgZWdjcykuCgpXZWQgQXVnIDE4IDE4OjQwOjUyIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB0b29scy9idWlsZC5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVVzZSB0eXBlZGVmIHRvIHdvcmsgYXJvdW5kIGVnY3MgcHJvYmxlbS4KCgkqIG9sZS8qLmM6IE1pY2hhZWwgVmVrc2xlciA8bXZla3NsZXJAdGVjaHVuaXgudGVjaG5pb24uYWMuaWw+CglSZW1vdmVkIHVubmVjZXNzYXJ5IGluY2x1ZGVzIGZyb20gb2xlIHJlbGF0ZWQgZmlsZXMuCgoJKiBvbGUvY29tcG9iai5jLCBtdWx0aW1lZGlhL21tc3lzdGVtLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFkYXB0ZWQgdG8gV09XIGNoYW5nZXMuCgoJKiBpbmNsdWRlL2NhbGxiYWNrLmgsIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbmUvd2luYmFzZTE2LmgsIGluY2x1ZGUvd293bnQzMi5oLCBsb2FkZXIvbW9kdWxlLmMsIG1lbW9yeS9nbG9iYWwuYywgbWVtb3J5L3NlbGVjdG9yLmMsIHJlbGF5MzIvTWFrZWZpbGUuaW4sIHJlbGF5MzIva2VybmVsMzIuc3BlYywgcmVsYXkzMi93b3czMi5zcGVjLCByZWxheTMyL3dvd3RodW5rLmMsIHdpbjMyL2tlcm5lbDMyLmMsIHdpbjMyL29yZGluYWxzLmMsIGlmMTYzMi9rZXJuZWwuc3BlYywgaWYxNjMyL3JlbGF5LmMsIGlmMTYzMi90aHVuay5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglNb3ZlZCBpbXBsZW1lbnRhdGlvbiBvZiBXT1cgcm91dGluZXMgdG8gc2luZ2xlIGZpbGUuCglBZGRlZCBhbGwgbWlzc2luZyBXT1cgcm91dGluZXMsIGZpeGVkIFdPV0NhbGxiYWNrMTZFeC4KCgkqIG11bHRpbWVkaWEvbW1pby5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGludGVybmFsIGJ1ZmZlciBmb3IgMTYgYml0IG1taW8gTUVNIGZpbGVzLgoKCSogbXVsdGltZWRpYS9tY2kuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CgktIHNvbWUgZXJyb3JzIGluIGNsZWFuaW5nIHVwIHZhbHVlcyByZXR1cm5lZCBieSBNQ0kgZHJpdmVyczogdGhpcwoJICBzaG91bGQgc29sdmUgdGhlIGlzc3VlcyByZXBvcnRlZCB3aXRoIHRoZSBDRCBwbGF5ZXIvd3JpdGVyCgktIGNyYXNoIHdoZW4gY29tbWFuZCB3YXMgcmVxdWVzdGVkIHdpdGggYXV0b21hdGljIG9wZW4gKG5vdGUsIHRoaXMKCSAgd2lsbCBub3cgZ3JhY2VmdWxseSByZXBvcnQgYW4gZXJyb3IsIG5vdCBkbyB0aGUgY29ycmVjdCB0aGluZykuCgoJKiBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jOiBUaHV5IE5ndXllbiA8dGh1eUBtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGVkIHRoZSBQU0hfVVNFSUNPTklEL1BTSF9VU0VISUNPTiBhbmQgdGhlIFBTUF9VU0VUSVRMRQoJZmxhZ3MuCgoJKiB0b29scy9idWlsZC5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogRUZsYWdzIHdlcmUgcGFzc2VkIGluY29ycmVjdGx5IGJ5IENhbGxGcm9tMTZSZWdpc3Rlci4KCgkqIGxvYWRlci90YXNrLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiByZXN0b3JlIFNUQUNLMTZGUkFNRSBmaWVsZHMgaW4gU3dpdGNoU3RhY2tCYWNrMTYuCgoJKiB0b29scy93cmMvd3JjLmgsIGRsbHMvY29tbWRsZy9jZGxnX0VuLnJjLCB0b29scy93cmMvQ0hBTkdFUywgdG9vbHMvd3JjL3BhcnNlci55OgoJQmVydGhvIFN0dWx0aWVucyA8YmVydGhvQHBhbnRlci5zb2NpLmFhdS5kaz4KCVdyYyBkaWQgbm90IGNoZWNrIGFueSBJRHMgd2hpY2ggYXJlIG9ubHkgMTYgYml0LiBDb21tb24gZGlhbG9ncyBoYWQgc29tZQoJSURzIGxhcmdlciBhbmQgdGhhdCBjYXVzZWQgcHJvYmxlbXMuIFRoaXMgaXMgbm93IHNvbHZlZCAoSSBob3BlKS4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KU3VuIEF1ZyAxNSAxODo1MjozMiAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogb2JqZWN0cy9jdXJzb3JpY29uLmM6IFN0ZXZlIFRpYmJldHQgPHN0ZXZldEBjb3JlbC5jb20+CglGaXhlZCBjdXJzb3Igc3RyZXRjaCBjb2RlLgoKCSogbWVtb3J5L3NlbGVjdG9yLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglJbmhpYml0IHdyYXBhcm91bmQgaW4gY29tcGFyaXNvbi4KCgkqIGRsbHMvc2hlbGwzMi8uY3ZzaWdub3JlLCBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW4sIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBkbGxzL3NoZWxsMzIvc2hsd2FwaS5zcGVjLCBsb2FkZXIvbG9hZG9yZGVyLmMsIHJlbGF5MzIvYnVpbHRpbjMyLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCU5ldyBpbnRlcm5hbCBkbGwsIGV4cG9ydGluZyBhbHJlYWR5IGV4aXN0aW5nIHBhdGggZnVuY3Rpb25zLgoKCSogaW5jbHVkZS9tZXNzYWdlLmgsIHdpbmRvd3MvZGlhbG9nLmMsIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL25vbmNsaWVudC5jLCBjb250cm9scy9tZW51LmM6CglGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglFbnN1cmUgdGhhdCB0aGUgV01fRU5URVJJRExFIG1lc3NhZ2UgaXMgbm90IHNlbnQgaWYgdGhlIHdha2UtdXAgZXZlbnQKCWZvciB0aGUgTVNHX0ludGVybmFsR2V0TWVzc2FnZSgpIGNhbGwgaXMgYSBXTV9USU1FUi4KCgkqIHJjL3dpbmVyYy5jLCBpbmNsdWRlL3Jlc291cmNlLmgsIGluY2x1ZGUvd2luZGVmLmg6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUdDQyAzLjAgaGFzIG5vdCBiZWVuIHJlbGVhc2VkIHlldCwgYnV0IGl0IGlzIGdvb2QgdG8gYmUgcHJlcGFyZWQuCgoJKiBtaXNjL3NweS5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUFkZGVkIHJlc29sdXRpb24gb2YgTFZNIG1lc3NhZ2VzLgoKCSogb2JqZWN0cy9kaWIuYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglBZGRlZCBwcm90ZWN0aW9uIGFnYWluc3QgcG9zc2libGUgbWVtb3J5IGNvcnJ1cHRpb24uCgoJKiBvYmplY3RzL2N1cnNvcmljb24uYzogU3RldmUgVGliYmV0dCA8c3RldmV0QGNvcmVsLmNvbT4KCUZpeGVkIGN1cnNvciBzZWxlY3Rpb24gdG8gZmluZCB0aGUgY29ycmVjdCBjdXJzb3Igd2hlbiBtb3JlIHRoYW4gb25lCglhdmFpbGFibGUuCgoJKiBkbGxzL3dpbnNwb29sL01ha2VmaWxlLmluLCBkbGxzL3dpbnNwb29sL2luZm8uYywgZGxscy93aW5zcG9vbC93aW5zcG9vbC5zcGVjLCBkbGxzL3dpbnNwb29sL3dzcG9vbC5jOgoJVGh1eSBOZ3V5ZW4gPHRodXlAbWFjYWRhbWlhbi5jb20+CglSZXBsYWNlZCBhIHN0YXRpYyB0ZW4gZWxlbWVudCBhcnJheSB3aXRoIGEgZHluYW1pYyBwb2ludGVyIGFycmF5LgoKCSogZGxscy9jb21tZGxnL3ByaW50ZGxnLmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJRml4IHNwZWNpYWwgY2FzZSB3aGVuIG5vIHByaW50ZXIgaW5zdGFsbGVkLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsLmMsIGRsbHMvc2hlbGwzMi9zaGVsbC5zcGVjOgoJSmFtZXMgSnVyYW4gPGpyajEyMEBwc3UuZWR1PgoJTmV3IHJvdXRpbmUgRGxsRW50cnlQb2ludCBmb3Igc2hlbGwuZGxsLiAgTG9hZHMgc2hlbGwzMi5kbGwsCglzaW5jZSBtb3N0IHNoZWxsLmRsbCBmdW5jdGlvbnMgY2FsbCB0aGVpciAzMi1iaXQgY291bnRlcnBhcnRzLgoKCSogZGxscy92ZXJzaW9uL2luZm8uYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUZpeGVkIGFsaWdubWVudC4KCgkqIGNvbnRyb2xzL2VkaXQuYzogUGFzY2FsIExlc3NhcmQgPHBhc2NhbEBtYWNhZGFtaWFuLmNvbT4KCUVNX1NFVFNFTCBzY3JvbGxzIGlmIG91dHNpZGUgb2YgdGhlIHZpc2libGUgcmFuZ2UuCgkic2hpZnQraG9tZSIgc2VsZWN0aW9uIGltcHJvdmVkIGluIHRoZSBlZGl0IGNvbnRyb2wuCgoJKiBvbGUvcGFyc2VkdC5jOiBSZW1vdmVkIFJDUyBrZXl3b3JkLgoKCSogZGxscy9zaGVsbDMyL2ZvbGRlcnMuYywgZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLCBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9sZS5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jLCBkbGxzL3NoZWxsMzIvc2hyZXMucmMsIGRsbHMvc2hlbGwzMi9zaHJlc2RlZi5oLCBkbGxzL3NoZWxsMzIvc2h2X2JnX2NtZW51LmMsIGluY2x1ZGUvc2hlbGwuaCwgaW5jbHVkZS93aW5lL3VuZG9jc2hlbGwuaDoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTW9yZSB1c2Ugb2YgcmMgZmlsZXMgZm9yIHN0cmluZ3MgYW5kIG1lbnVzLCBmaXhlcy4gRmlyc3QgaW50ZXJuYWwKCWljb25zLgoKCSogZGxscy9zaGVsbDMyL3NobHZpZXcuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglOZXcgaW50ZXJmYWNlOiBEcm9wU291cmNlLgoKCSogZGxscy9zaGVsbDMyL3NobGZvbGRlci5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglCZXR0ZXIgRHJvcFRhcmdldC4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJSW1wbGVtZW50ZWQgU0hHZXRGaWxlSW5mbyBiZXR0ZXIuCgoJKiBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCVByb3RlY3QgY2FjaGUgd2l0aCBjcml0aWNhbCBzZWN0aW9uLgoJUmVtb3ZlZCBoYWNrIHRvIGxvYWQgaWNvbnMgZnJvbSBleHRlcm5hbCBzaGVsbDMyLmRsbC4KCgkqIGRsbHMvc2hlbGwzMi9kYXRhb2JqZWN0LmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCVF1ZXJ5R2V0RGF0YSwgRW51bUZvcm1hdEV0YyBpbXBsZW1lbnRlZC4KCgkqIGRsbHMvc2hlbGwzMi9jbGFzc2VzLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJRml4ZWQgbWFwcGluZyBvZiBmaWxlIGV4dGVuc2lvbnMgdG8gdGV4dC4KCgkqIG1pc2MvZGRlbWwuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglGaXhlZCBhc2NpaS91bmljb2RlIGlzc3VlIGZvciBuYW1pbmcgb2YgdGhlIG11dGV4ZXMuCglNYWRlIG11dGV4IGhhbmRsZXMgZ2xvYmFsLgoJRml4ZWQgaW5jb3JyZWN0IGludGVycHJldGF0aW9uIG9mIHJldHVybiB2YWx1ZXMgb2YgV2FpdEZvclNpbmdsZU9iamVjdC4KCgkqIG9iamVjdHMvZm9udC5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUZpcnN0IGltcGxlbWVudGF0aW9uIG9mIEdldENoYXJhY3RlclBsYWNlbWVudEEuCgoJKiB3aW5kb3dzL2RlZnduZC5jLCBpbmNsdWRlL3dpbnVzZXIuaDoKCVRodXkgTmd1eWVuIDx0aHV5QG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50ZWQgdGhlIFdNX1NFVElDT04gYW5kIFdNX0dFVElDT04gbWVzc2FnZXMuCgoJKiBmaWxlcy9kcml2ZS5jOiBNb3J0ZW4gRXJpa3NlbiA8bW9ydGVuZUBzaW0ubm8+CglGSVhNRSBvbiB1bmltcGxlbWVudGVkIGZlYXR1cmUgbWFkZSBsZXNzIG9idHJ1c2l2ZS4KCgkqIGdyYXBoaWNzL3gxMWRydi9iaXRibHQuYzogUGFzY2FsIExlc3NhcmQgPHBhc2NhbEBtYWNhZGFtaWFuLmNvbT4KCU5vdyB0aGUgY29udmVyc2lvbiBpbiB0aGUgYmx0IGZ1bmN0aW9ucyByb3VuZCB1cCB0aGUgcmVzdWx0LgoKCSogdG9vbHMvYnVpbGQtc3BlYy50eHQsIHRvb2xzL2J1aWxkLmM6IEphbWVzIEp1cmFuIDxqcmoxMjBAcHN1LmVkdT4KCURvY3VtZW50IHVzZSBvZiAiaW5pdCIgaW4gYnVpbGQtc3BlYy50eHQsIGFuZCBtYWtlIGJ1aWxkLmMgcHJpbnQgYQoJd2FybmluZyBpZiBzb21lb25lIHRyaWVzIHRvIHVzZSAiaW5pdCIgaW4gYSBXaW4xNiBzcGVjIGZpbGUuCgoJKiBsb2FkZXIvbmUvc2VnbWVudC5jOiBNaWNoYWVsIEthcmNoZXIgPGthcmNoZXJAZHBrLmJlcmxpbi5maWRvLmRlPgoJTWFrZSBzdXJlIHdlIGhhdmUgYSBkZ3JvdXAgYmVmb3JlIHBhdGNoaW5nIHByb2xvZ3MuCgoJKiAqL01ha2VmaWxlLmluLCAqLy5jdnNpZ25vcmU6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFkYXB0ZWQgdG8gZ2x1ZSBjb2RlIGdlbmVyYXRpb24gY2hhbmdlcy4KCgkqIGxvYWRlci9uZS9tb2R1bGUuYywgbG9hZGVyL25lL3NlZ21lbnQuYywgd2luZG93cy93aW5wcm9jLmMsIGlmMTYzMi9idWlsdGluLmMsIGlmMTYzMi9yZWxheS5jLCBpZjE2MzIvc25vb3AuYywgaWYxNjMyL3RodW5rLmMsIGluY2x1ZGUvY2FsbGJhY2suaCwgaW5jbHVkZS9tb2R1bGUuaCwgaW5jbHVkZS9zbm9vcC5oLCBsb2FkZXIvbW9kdWxlLmMsIGxvYWRlci90YXNrLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFkYXB0ZWQgdG8gbmV3LXN0eWxlIFdpbmUgdGh1bmtzLgoJUmVtb3ZlZCBzb21lIG5vdyB1bm5lY2Vzc2FyeSBmdW5jdGlvbiBwb2ludGVycy4KCgkqIGluY2x1ZGUvYnVpbHRpbjE2LmgsIGluY2x1ZGUvc3RhY2tmcmFtZS5oLCB0b29scy9idWlsZC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglDYWxsVG8xNi4uLiAvIENhbGxGcm9tMTYuLi4gV2luZSB0aHVua3MgcmVvcmdhbml6ZWQ6CgktIENsZWFuZXIgc2VwYXJhdGlvbiBiZXR3ZWVuIGNvcmUgYW5kIGdsdWUgY29kZS4KCS0gQXJndW1lbnQgY29udmVyc2lvbiBnbHVlIGNvZGUgbm93IGluIEMuCgktIEdsdWUgY29kZSBuZWVkZWQgZm9yIDE2LWJpdCAuc3BlYyBmaWxlcyBpbmxpbmVkLgoKU2F0IEF1ZyAxNCAxNTo1Mzo1MCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbWlzYy9jb21tLmM6IFV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCS0gaW1wbGVtZW50ZWQgR2V0Q29tbU1vZGVtU3RhdHVzCgktIGZpeGVkIHRoZSBEVFIsIENUUyBhbmQgQ09NTUJSRUFLIHJlbGF0ZWQgc3ViZnVuY3Rpb25zIG9mIEVzY2FwZUNvbW1GdW5jdGlvbgoJLSBhZGRlZCBtb3JlIHZlcmJvc2UgVFJBQ0VpbmcKCgkqIG1pc2MvdmVyc2lvbi5jOiBNb3J0ZW4gRXJpa3NlbiA8bW9ydGVuZUBzaW0ubm8+CglNYWRlIEdldFZlcnNpb25FeCgpIGJlaGF2ZSBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIHNwZWNpZmljYXRpb24gd2l0aAoJcmVnYXJkIHRvIGVycm9yIGhhbmRsaW5nLgoKCSogZGxscy9tc3ZpZGVvL21zdmZ3MzIuc3BlYywgZGxscy9tc3ZpZGVvL21zdmlkZW9fbWFpbi5jOgoJTWFyayBHLiBBZGFtcyA8bWFkYW1zQGxpdmVwYWdlLmNvbT4KCUFkZGVkIHN0dWIgZm9yIERyYXdEaWJDbG9zZS4KCgkqIGNvbnRyb2xzL2NvbWJvLmM6IEZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIHRoZSBsb29rIG9mIHRoZSBjb21ib2JveCdzIGRyb3AgZG93biBidXR0b24gd2hlbiBpbiBXaW45NSBsb29rLgoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYzogVGh1eSBOZ3V5ZW4gPHRodXlAbWFjYWRhbWlhbi5jb20+CglBZGRlZCBzdXBwb3J0IGZvciBpY29ucyBpbiBwcm9wZXJ0eSBzaGVldCB0YWJzLgoKCSogaW5jbHVkZS9jb21tY3RybC5oLCB0b29scy93cmMvQ0hBTkdFUywgdG9vbHMvd3JjL2dlbnJlcy5jLCB0b29scy93cmMvcGFyc2VyLmwsIHRvb2xzL3dyYy93cmMuaDoKCUJlcnRobyBTdHVsdGllbnMgPGJlcnRob0BwYW50ZXIuc29jaS5hYXUuZGs+CglWZXJzaW9uIDEuMC4xNCBvZiB3cmMuCgpTdW4gQXVnICA4IDE4OjU2OjA0IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3dpbmJhc2UuaCwgd2luMzIvdGltZS5jOiBGaXhlZCBTZXRMb2NhbFRpbWUgcHJvdG90eXBlLgoKCSogb2xlL29sZTJubHMuYywgd2luMzIva2VybmVsMzIuYywgZGxscy9jb21tZGxnL3ByaW50ZGxnLmMsIGRsbHMvbnRkbGwvcnRsc3RyLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jLCBkbGxzL3ZlcnNpb24vaW5mby5jLCBmaWxlcy9kb3NfZnMuYywgaWYxNjMyL3RodW5rLmMsIGluY2x1ZGUvd2luZS93aW5lc3RyaW5nLmgsIGxvYWRlci9saWJyZXMuYywgbG9hZGVyL3BlX3Jlc291cmNlLmMsIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jOgoJUmVwbGFjZWQgYSBmZXcgY2FsbHMgdG8gbHN0ciogZnVuY3Rpb25zIGJ5IHRoZWlyIENSVERMTCBvciBsaWJjCgllcXVpdmFsZW50LgoKCSogbWVtb3J5L3N0cmluZy5jOgoJQWRkZWQgYW4gZXhjZXB0aW9uIGhhbmRsZXIgYXJvdW5kIGEgZmV3IGxzdHIqIGZ1bmN0aW9ucy4KCgkqIGRsbHMvY3J0ZGxsL01ha2VmaWxlLmluLCBkbGxzL2NydGRsbC9jcnRkbGwuc3BlYywgZGxscy9jcnRkbGwvY3J0ZGxsX21haW4uYywgZGxscy9jcnRkbGwvbWJzdHJpbmcuYywgZGxscy9jcnRkbGwvd2NzdHJpbmcuYywgZGxscy9udGRsbC9udGRsbC5zcGVjLCBpbmNsdWRlL2NydGRsbC5oOgoJUmVpbXBsZW1lbnRlZCBtdWx0aS1ieXRlIGFuZCB3aWRlLWNoYXJzIGZ1bmN0aW9ucyB0byBub3QgZGVwZW5kIG9uCglsc3RyKiBmdW5jdGlvbnM7IGFkZGVkIGEgZmV3IG1pc3Npbmcgb25lczsgZml4ZWQgYSBjb3VwbGUgb2YgYnVncy4KClNhdCBBdWcgIDcgMTQ6MzI6MzQgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvQXR0aWMvd25ldC5oLCBpbmNsdWRlL3dpbmUvd2lubmV0MTYuaCwgaW5jbHVkZS93aW5lcnJvci5oLCBpbmNsdWRlL3dpbm5ldHdrLmgsIGluY2x1ZGUvd2ludXNlci5oLCBtaXNjL25ldHdvcmsuYywgcmVsYXkzMi8uY3ZzaWdub3JlLCByZWxheTMyL0F0dGljL21wci5zcGVjLCByZWxheTMyL01ha2VmaWxlLmluLCBNYWtlZmlsZS5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvbXByLy5jdnNpZ25vcmUsIGRsbHMvbXByL01ha2VmaWxlLmluLCBkbGxzL21wci9hdXRoLmMsIGRsbHMvbXByL21wci5zcGVjLCBkbGxzL21wci9tcHJfbWFpbi5jLCBkbGxzL21wci9tdWx0aW5ldC5jLCBkbGxzL21wci9ucHMuYywgZGxscy9tcHIvcHdjYWNoZS5jLCBkbGxzL21wci93bmV0LmMsIGluY2x1ZGUvbmV0c3BpLmg6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVNlcGFyYXRlZCBXaW4xNiAoVVNFUikgYW5kIFdpbjMyIChNUFIpIG5ldHdvcmsgcm91dGluZXMuCglNb3ZlZCBpbXBsZW1lbnRhdGlvbiBvZiBNUFIgdG8gZGxscy9tcHIvLgoJQWRkZWQgcHJvcGVyIGhlYWRlcnMgYW5kIHN0dWJzIGZvciBtaXNzaW5nIE1QUiByb3V0aW5lcy4KCgkqIG1pc2MvcmVnaXN0cnkuYzoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUltcHJvdmVkIChzb3J0IG9mKSBSZWdGbHVzaEtleS4KCgkqIHdpbmRvd3Mvd2lucG9zLmM6IEZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUlmIHRoZSB3aW5kb3cgaXMgYWxyZWFkeSB0aGUgdG9wbW9zdCB3aW5kb3cgaW4gU2hvd1dpbmRvdyhTV19TSE9XKSwgaXQKCW11c3Qgbm90IGJlIGFjdGl2YXRlZC4KCgkqIHdpbmRvd3MveDExZHJ2L2V2ZW50LmM6IFN0ZXBoYW5lIEx1c3NpZXIgPHN0ZXBoYW5lQG1hY2FkYW1pYW4uY29tPgoJV01fU1lTQ09NTUFORCBtZXNzYWdlIChmb3IgU0NfQ0xPU0UpIHNob3VsZCBiZSBwb3N0ZWQgbm90IHNlbnQuCgoJKiB3aW5kb3dzL2RjZS5jLCB3aW5kb3dzL3gxMWRydi93bmQuYzoKCVN0ZXBoYW5lIEx1c3NpZXIgPHN0ZXBoYW5lQG1hY2FkYW1pYW4uY29tPgoJWDExZHJ2IFNldERyYXdhYmxlIGZ1bmN0aW9uIG1vZGlmaWVzIHRoZSBEQyBvcmlnaW4sIHRoaXMgdHJhbnNsYXRpb24KCXNob3VsZCBiZSByZWZsZWN0ZWQgZm9yIHRoZSBkYyBjbGlwcGluZyByZWdpb24gZm9yIENTX09XTkRDIGFuZCBDU19DTEFTU0RDLgoKCSogd2luZG93cy9kZWZkbGcuYywgd2luZG93cy9kaWFsb2cuYzogQWJleSBHZW9yZ2UgPGFiZXlAbWFjYWRhbWlhbi5jb20+CglTZXQgZm9jdXMgdG8gdGhlIGRpYWxvZyBpbiBFbmREaWFsb2cuCgoJKiBsaWJ0ZXN0L01ha2VmaWxlLmluOiBKYW1lcyBKdXJhbiA8anJqMTIwQHBzdS5lZHU+CglNYWtlIHN1cmUgd2UgY29tcGlsZSB3aW5lc3R1Yi5vIGJlZm9yZSB0cnlpbmcgdG8gYnVpbGQgYSBXaW5lbGliIHRlc3QKCXByb2dyYW0uCgoJKiBmaWxlcy9kaXJlY3RvcnkuYzogQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglGaXhlZCBjYXNlIHNlbnNpdGl2aXR5IGZsYWcuCgoJKiBpbmNsdWRlL2NvbW1kbGcuaCwgZGxscy9jb21tZGxnL3ByaW50ZGxnLmM6CglLbGFhcyB2YW4gR2VuZCA8a2xhYXNAdmFuZ2VuZC5kZW1vbi5ubD4KCUltcGxlbWVudGVkIHRoZSByZXR1cm4gb2YgaERldk1vZGVzIGFuZCBoRGV2TmFtZXMgaW4gdGhlIFBSSU5URExHCglzdHJ1Y3R1cmUgb2YgUHJpbnREbGdBKCkuCgoJKiB3aW5kb3dzL3F1ZXVlLmMsIGluY2x1ZGUvcXVldWUuaDogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglNYWRlIGhhcmR3YXJlX2V2ZW50IHVzZSB3aW4zMi1jb25mb3JtYW50IHBhcmFtZXRlcnMuCgoJKiBkbGxzL2NvbW1kbGcvY2RsZzMyLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJRXhwbGljaXRseSBsb2FkIHNoZWxsMzIuZGxsLgoKCSogZGxscy9jb21jdGwzMi90YWIuYzogVGh1eSBOZ3V5ZW4gPHRodXlAbWFjYWRhbWlhbi5jb20+CglUYWtlIGludG8gYWNjb3VudCBpY29ucyB3aGVuIGRldGVybWluaW5nIHRhYiBzaXplLgoKCSogZmlsZXMvZHJpdmUuYzogTW9ydGVuIEVyaWtzZW4gPG1vcnRlbmVAc2ltLm5vPgoJSW1wcm92ZWQgR2V0RGlza0ZyZWVTcGFjZUV4KCkgaW1wbGVtZW50YXRpb24gYSBsaXR0bGUgYml0LgoKCSogbWlzYy9jb21tLmM6IFV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCS0gYWRkZWQgc29tZSBtb3JlIEJhdWRyYXRlcwoJLSBmaXhlZCBhIGhhbmcgaW4gdGNzZXRhdHRyIHdoZW4gdGhlIGlucHV0IGJ1ZmZlciBpc24ndCBlbXB0eQoJLSBhZGRlZCBtb3JlIHZlcmJvc2l0eSBmb3IgZGVidWdnaW5nCgoJKiBjb250cm9scy91aXRvb2xzLmM6IEZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUhhbmRsZSB0aGUgY2FzZSB3aGVuIHRoZSBidXR0b24gaXMgcmVhbGx5IHNtYWxsLgoKCSogd2luZG93cy9ub25jbGllbnQuYzogVGh1eSBOZ3V5ZW4gPHRodXlAbWFjYWRhbWlhbi5jb20+CglXU19FWF9ETEdNT0RBTEZSQU1FIGFsb25lIGRvZXMgbm90IG1lYW4gdGl0bGUgYmFyLCB5b3Ugc3RpbGwgaGF2ZSB0bwoJc3BlY2lmeSBXU19DQVBUSU9OLgoKV2VkIEF1ZyAgNCAxNTowNzo1NyAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29uZmlndXJlLmluLCBpbmNsdWRlL2FjY29uZmlnLmgsIGluY2x1ZGUvY29uZmlnLmguaW4sIGluY2x1ZGUvZGlucHV0LmgsIHdpbmRvd3MvZGlucHV0LmMsIGNvbmZpZ3VyZToKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSW1wbGVtZW50ZWQgRGlyZWN0SW5wdXQgSm95c3RpY2sgc3VwcG9ydCAodGVzdGVkIHdpdGggV0M6UHJvcGhlY3kpLgoKCSogcmVsYXkzMi9rZXJuZWwzMi5zcGVjLCB3aW4zMi90aW1lLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCUltcGxlbWVudGVkIFNldExvY2FsVGltZS4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6IEl2YW4gRGUgU2FlZGVsZWVyIDxJdmFuZHNAc3ltcGF0aWNvLmNhPgoJTWlub3IgZml4IHRvIHRoZSBGcmVuY2ggQ2FuYWRpYW4ga2V5Ym9hcmQuCgoJKiBncmFwaGljcy9kZHJhdy5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVdoZW4gZmxpcHBpbmcgYmFja2J1ZmZlciAtPiBmcm9udGJ1ZmZlciwgZmlyc3QgZXhjaGFuZ2Ugc3VyZmFjZXMsIHRoZW4KCWNvcHkgWEltYWdlLCBzaW5jZSB0aGUgcGFsZXR0ZSBtaWdodCBvbmx5IGJlIGRlZmluZWQgaW4gdGhlIGZyb250YnVmZmVyLgoKCSogdG9vbHMvd2luZWluc3RhbGw6IEpvZXJnIE1heWVyIDxqbWF5ZXJAdGVsZXN1bjIudGVsZW1hdGlvbi5kZT4KCUNyZWF0ZSBzeXNjb25mZGlyIG9uIGluc3RhbGwuCgoJKiBkbGxzL3N0cmVzcy8uY3ZzaWdub3JlOiBGaXhlZCB0eXBvLgoKCSogZGxscy93bmFzcGkzMi93aW5hc3BpMzIuYywgaWYxNjMyL3JlbGF5LmMsIGluY2x1ZGUvZGVidWd0b29scy5oLCBsb2FkZXIvcGVfaW1hZ2UuYywgd2luMzIva2VybmVsMzIuYywgd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYywgY29udHJvbHMvbGlzdGJveC5jLCBjb250cm9scy9tZW51LmMsIGNvbnRyb2xzL3Njcm9sbC5jLCBkbGxzL3ZlcnNpb24vaW5mby5jLCBkbGxzL3dpbmFzcGkvd2luYXNwaTE2LmM6CglHb3QgcmlkIG9mIGRzcHJpbnRmIGFuZCByZWxhdGVkIG1hY3Jvcy4KCgkqIHNlcnZlci9tdXRleC5jOgoJUmVtb3ZlIHRoZSBtdXRleCBmcm9tIHRoZSB0aHJlYWQgbGlzdCB3aGVuIGRlc3Ryb3lpbmcgaXQuCgoJKiAqLyo6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCU1vdmVkIHZhcmlvdXMgRExMcyB0byBkbGxzLwoKU3VuIEF1ZyAgMSAxNDo1ODowMiAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy93aW5hc3BpL3dpbmFzcGkxNi5jLCBpZjE2MzIvc25vb3AuYywgaW5jbHVkZS93aW5udC5oLCBsb2FkZXIvbmUvc2VnbWVudC5jLCBtaXNjL2Vycm9yLmMsIG1zZG9zL2RldmljZXMuYywgbXNkb3MvZHBtaS5jLCBtc2Rvcy9pbnQyMS5jLCBtc2Rvcy9pbnQzMy5jLCBkZWJ1Z2dlci9yZWdpc3RlcnMuYywgZGVidWdnZXIvc3RhY2suYzoKCVJlbW92ZWQgSVBfcmVnLCBTUF9yZWcgYW5kIEZMX3JlZyBkZWZpbml0aW9ucyB0byBhdm9pZCBwb3RlbnRpYWwKCWFsaWFzaW5nIG9wdGltaXphdGlvbiBwcm9ibGVtcy4KCgkqIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmMsIGluY2x1ZGUvbWlzY2VtdS5oLCBsb2FkZXIvZG9zL21vZHVsZS5jLCBsb2FkZXIvc2lnbmFsLmM6CglSZW1vdmVkIFNJR05BTF9NYXNrQXN5bmNFdmVudHMgYW5kIGNsZWFuZWQgdXAgc2lnbmFsIGhhbmRsaW5nLgoKCSogaW5jbHVkZS9BdHRpYy9hc3luYy5oLCB3aW4zMi9jb25zb2xlLmMsIGZpbGVzL0F0dGljL2FzeW5jLmMsIGZpbGVzL01ha2VmaWxlLmluLCBmaWxlcy9maWxlLmM6CglSZW1vdmVkIGFzeW5jIEkvTyBzdXBwb3J0LgoKCSogaW5jbHVkZS9jb21tLmgsIG1pc2MvY29tbS5jOgoJVXNlIHRoZSBzZXJ2aWNlIHRocmVhZCBmb3IgY29tbSBub3RpZmljYXRpb25zLgoKCSogaW5jbHVkZS9zaWdfY29udGV4dC5oLCBpbmNsdWRlL3N0YWNrZnJhbWUuaCwgbG9hZGVyL3Rhc2suYywgbXNkb3MvZHBtaS5jLCByZWxheTMyL3JlbGF5Mzg2LmMsIHdpbjMyL2tlcm5lbDMyLmMsIGlmMTYzMi9yZWxheS5jLCBpZjE2MzIvdGh1bmsuYzoKCU1hZGUgc3RhY2sgbWFuaXB1bGF0aW9uIG1hY3JvcyBpbnRvIGlubGluZSBmdW5jdGlvbnMuCglDaGFuZ2VkIGEgZmV3IGFjY2Vzc2VzIHRvIGNvbnRleHQgcmVnaXN0ZXJzIHRvIGF2b2lkIHBvdGVudGlhbAoJYWxpYXNpbmcgb3B0aW1pemF0aW9uIHByb2JsZW1zLgoKCSogaW5jbHVkZS9taXNjZW11LmgsIGluY2x1ZGUvc2lnX2NvbnRleHQuaCwgaW5jbHVkZS93aW5kZWYuaCwgbG9hZGVyL2Rvcy9kb3N2bS5jLCBtZW1vcnkvaW5zdHIuYywgZGxscy9udGRsbC9leGNlcHRpb24uYzoKCUNoYW5nZWQgSU5TVFJfRW11bGF0ZUluc3RydWN0aW9uIHRvIHVzZSBhIENPTlRFWFQ4NiBpbnN0ZWFkIG9mIGEKCVNJR0NPTlRFWFQuCgoJKiBNYWtlZmlsZS5pbjogUmVtb3ZlIHdpbmUuY29uZi5tYW4gb24gZGlzdGNsZWFuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClNhdCBKdWwgMzEgMTk6MzU6NTggMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3Mvbm9uY2xpZW50LmM6IE5vb21lbiBIYW16YSA8bm9vbWVuQG1hY2FkYW1pYW4uY29tPgoJQ2xvc2UgdGhlIHJpZ2h0IHdpbmRvdyB3aGVuIGNsaWNraW5nIG9uIGEgbm9uIGFjdGl2ZSB3aW5kb3cgY2xvc2UKCWJ1dHRvbi4KCgkqIE1ha2VmaWxlLmluOiBQYXZlbCBSb3NraW4gPHBhdmVsX3Jvc2tpbkBnZW9jaXRpZXMuY29tPgoJUmVtb3ZlZCB0aGUgZGVwZW5kZW5jeSBvbiAiZHVtbXkiIGZvciB3aW5lIGFuZCB3aW5lLnN5bS4KCgkqIGZpbGVzL3Byb2ZpbGUuYzoKCVJlbW92ZSBmaWxlIGZyb20gY2FjaGUgd2hlbiBmbHVzaGluZyBpdCAoYmFzZWQgb24gYSBwYXRjaCBieSBJYW4KCVNjaG1pZHQpLgoKCSogaW5jbHVkZS93aW5udC5oOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIENPTlRFWFQgZm9yIEFMUEhBIGFuZCBNSVBTLgoKCSogY29uZmlndXJlLmluLCBNYWtlLnJ1bGVzLmluLCBNYWtlZmlsZS5pbiwgY29uZmlndXJlOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglBZGRlZCBzdXBwb3J0IGZvciBTb2xhcmlzIExpbnQuCgoJKiBzY2hlZHVsZXIvZGVidWdnZXIuYywgc2VydmVyL2RlYnVnZ2VyLmMsIHRvb2xzL21ha2VfZGVidWcsIHdpbjMyL2NvbnNvbGUuYywgY29uc29sZS9nZW5lcmljLmMsIGNvbnNvbGUveHRlcm0uYywgZ3JhcGhpY3MvZW5obWV0YWZpbGVkcnYvZ3JhcGhpY3MuYywgZ3JhcGhpY3MvZW5obWV0YWZpbGVkcnYvb2JqZWN0cy5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9iaXRibHQuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvZ3JhcGhpY3MuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvb2JqZWN0cy5jLCBncmFwaGljcy9tZXRhZmlsZWRydi90ZXh0LmMsIGluY2x1ZGUvZGVidWdkZWZzLmgsIGluY2x1ZGUveG1hbGxvYy5oLCBtaXNjL3htYWxsb2MuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSBvZiB0aGUgaXNzdWVzIHJlcG9ydGVkIGJ5IFNvbGFyaXMgTGludC4KCgkqIGluY2x1ZGUvcHNocGFjazQuaDogUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglTb2xhcmlzIEMvQysrIGNvbXBpbGUgZml4LgoKCSogbXNkb3MvZG9zbWVtLmMsIG9sZS9zdG9yYWdlMzIuYywgd2luZG93cy9wYWludGluZy5jLCBjb250cm9scy9idXR0b24uYywgZGxscy9jb21jdGwzMi9tb250aGNhbC5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmMsIGRsbHMvY29tbWRsZy9maWxlZGxnYnJvd3Nlci5jLCBncmFwaGljcy9kZHJhdy5jLCBpbmNsdWRlL3dpbmUvb2JqX2Jhc2UuaDoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJVmFyaW91cyBBTlNJIEMgY29tcGFiaWxpdHkgZml4ZXMuCgoJKiByZWxheTMyL3dpbm1tLnNwZWMsIGlmMTYzMi9idWlsdGluLmMsIGlmMTYzMi9nZGkuc3BlYywgaWYxNjMyL21tc3lzdGVtLnNwZWMsIGlmMTYzMi91c2VyLnNwZWMsIGluY2x1ZGUvbXVsdGltZWRpYS5oLCBpbmNsdWRlL250ZGRrLmgsIGluY2x1ZGUvb2xlY3RsLmgsIGluY2x1ZGUvd2luc29jay5oLCBtaXNjL25ldHdvcmsuYywgbWlzYy9zeXN0ZW0uYywgbWlzYy93aW5zb2NrLmMsIG11bHRpbWVkaWEvbW1zeXN0ZW0uYywgb2xlL29sZWZvbnQuYywgcmVsYXkzMi9rZXJuZWwzMi5zcGVjLCByZWxheTMyL29sZWF1dDMyLnNwZWMsIHJlbGF5MzIvdXNlcjMyLnNwZWMsIGRsbHMvY29tY3RsMzIvY29tY3RsMzIuc3BlYywgZGxscy9udGRsbC9leGNlcHRpb24uYywgZGxscy9udGRsbC9maWxlLmMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy9udGRsbC9ydGwuYywgZGxscy90YXBpMzIvdGFwaTMyLnNwZWM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgb2YgdGhlIGlzc3VlcyByZXBvcnRlZCBieSB3aW5hcGktY2hlY2suCgoJKiBkb2N1bWVudGF0aW9uL01ha2VmaWxlLmluOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFjdHVhbGx5IGNyZWF0ZSB0aGUgbWFuLyBzdWJkaXJlY3RvcmllcyBiZWZvcmUgaW5zdGFsbGluZy4KCgkqIGlmMTYzMi9rZXJuZWwuc3BlYywgaW5jbHVkZS93aW5lL3dpbmJhc2UxNi5oLCBsb2FkZXIvdGFzay5jLCB3aW5kb3dzL3F1ZXVlLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUltcGxlbWVudGVkIEtFUk5FTC40NDcgKFdJTjMyX09sZFlpZWxkMTYpLgoKCSogd2luZG93cy9ldmVudC5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVN1c3BlbmQgV05EIGxvY2sgYmVmb3JlIEVWRU5UX1N5bmNocm9uaXplLgoKCSogd2luMzIvZGV2aWNlLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQ3JlYXRlIFZ4RCBoYW5kbGUgb25seSBmb3Iga25vd24gVnhEcy4KCgkqIE1ha2UucnVsZXMuaW4sIHJlbGF5MzIvTWFrZWZpbGUuaW46IFBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJTWFkZSBjb21waWxhdGlvbiBvZiAqLnNwZWMuYyBmaWxlcyB1c2UgLWZuby1idWlsdGluIHJlZ2FyZGxlc3Mgb2YKCXdoZXJlIHRoZXkgYXJlLgoKCSogaW5jbHVkZS90YXBpLmgsIGluY2x1ZGUvd2luYmFzZS5oLCBzY2hlZHVsZXIvdGhyZWFkLmMsIGRsbHMvY29tY3RsMzIvZGF0ZXRpbWUuYywgZGxscy9jb21jdGwzMi9mbGF0c2IuYywgZGxscy9jb21jdGwzMi9oZWFkZXIuYywgZGxscy9jb21jdGwzMi9ob3RrZXkuYywgZGxscy9jb21jdGwzMi9pcGFkZHJlc3MuYywgZGxscy9jb21jdGwzMi9saXN0dmlldy5jLCBkbGxzL2NvbWN0bDMyL21vbnRoY2FsLmMsIGRsbHMvY29tY3RsMzIvbmF0aXZlZm9udC5jLCBkbGxzL2NvbWN0bDMyL3BhZ2VyLmMsIGRsbHMvY29tY3RsMzIvcHJvZ3Jlc3MuYywgZGxscy9jb21jdGwzMi9yZWJhci5jLCBkbGxzL2NvbWN0bDMyL3N0YXR1cy5jLCBkbGxzL2NvbWN0bDMyL3RhYi5jLCBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYywgZGxscy9jb21jdGwzMi90b29sdGlwcy5jLCBkbGxzL2NvbWN0bDMyL3RyYWNrYmFyLmMsIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYywgZGxscy9jb21jdGwzMi91cGRvd24uYywgZGxscy9zaGVsbDMyL2Jyc2ZvbGRlci5jLCBkbGxzL3NoZWxsMzIvY29udG1lbnUuYywgZGxscy9zaGVsbDMyL21lbW9yeXN0cmVhbS5jLCBncmFwaGljcy9kZHJhdy5jLCBkbGxzL2F2aWZpbDMyL2F2aWZpbGUuYywgZGxscy9jb21jdGwzMi9hbmltYXRlLmMsIGRsbHMvY29tY3RsMzIvY29tYm9leC5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZC9hZGRlZCBtaXNzaW5nL3dyb25nIGZ1bmN0aW9uIHByb3RvdHlwZXMgYW5kIG1hZGUgaW50ZXJuYWwKCWZ1bmN0aW9ucyBzdGF0aWMuCgoJKiB0c3gxMS90c194c2htLmMsIHRzeDExL3RzX3h1dGlsLmMsIHRvb2xzL21ha2VfWDExd3JhcHBlcnMsIHRzeDExL3RzX3hmODZkZ2EuYywgdHN4MTEvdHNfeGY4NnZtb2RlLmMsIHRzeDExL3RzX3hsaWIuYywgdHN4MTEvdHNfeHBtLmMsIHRzeDExL3RzX3hyZXNvdXJjZS5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBtaXNzaW5nIHByb3RvdHlwZXMgYW5kIG1hZGUgaXQgd29yayB3aXRoIFNvbGFyaXMgWDExLgoKCSogZGVidWdnZXIvZXh0ZXJuYWwuYywgaW5jbHVkZS93aW5lL3VuZG9jc2hlbGwuaCwgbXVsdGltZWRpYS9tY2ltaWRpLmMsIG9sZS9hbnRpbW9uaWtlci5jLCBvbGUvY29tcG9zaXRlbW9uaWtlci5jLCBvbGUvZGF0YWNhY2hlLmMsIG9sZS9maWxlbW9uaWtlci5jLCBvbGUvaXRlbW1vbmlrZXIuYywgb2xlL29sZWZvbnQuYywgc2NoZWR1bGVyL3RocmVhZC5jLCBkbGxzL3NoZWxsMzIvY29udG1lbnUuYywgZGxscy9zaGVsbDMyL2ZvbGRlcnMuYywgZGxscy9zaGVsbDMyL3NoZWxsbGluay5jLCBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmMsIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUVsaW1pbmF0ZWQgd2FybmluZ3MuCgoJKiBsb2FkZXIvbmUvc2VnbWVudC5jOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJRml4ZWQgdGhlIERTRUcgdmFsdWUgaW4gdGhlIFNFR1RBQkxFRU5UUlkgc3RydWN0LgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMi5oLCBkbGxzL2NvbWN0bDMyL2ZsYXRzYi5jLCBkbGxzL2NvbWN0bDMyL3BhZ2VyLmMsIGRsbHMvY29tY3RsMzIvcnNyYy5yYywgZGxscy9jb21jdGwzMi90b29sYmFyLmMsIGRvY3VtZW50YXRpb24vY29tbW9uX2NvbnRyb2xzOgoJRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUFkZGVkIGJ1aWx0aW4gdG9vbGJhciBiaXRtYXBzLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jLCBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmMsIGluY2x1ZGUvbGlzdHZpZXcuaCwgaW5jbHVkZS90cmVldmlldy5oOgoJRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCVNvbWUgbW9yZSBtZXNzYWdlcy4KCgkqIGRsbHMvYWR2YXBpMzIvYWR2YXBpMzIuc3BlYywgZGxscy9hZHZhcGkzMi9jcnlwdC5jOgoJRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUFkZGVkIHN0dWIgZm9yIENyeXB0U2V0S2V5UGFyYW1zKCkuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYzoKCUVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglBZGRlZCBzdHVicyBmb3IgREFEX1NldERyYWdJbWFnZSgpIGFuZCBQYXRoQ2xlYW51cFNwZWMoKS4KCgkqIG1pc2MvY3J0ZGxsLmMsIHJlbGF5MzIvY3J0ZGxsLnNwZWM6CglFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJQWRkZWQgc3R1YiBmb3IgX2V4Y2VwdF9oYW5kbGVyMigpLgoKCSogb2JqZWN0cy9yZWdpb24uYzogRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUltcHJvdmVkIEdldFJhbmRvbVJlZ2lvbigpLgoKCSogY29udHJvbHMvbWVudS5jLCB3aW5kb3dzL25vbmNsaWVudC5jOgoJUGFzY2FsIExlc3NhcmQgPHBhc2NhbEBtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGVkIHRoZSBzeXN0ZW0gYnV0dG9uIGJlaGF2aW9yIGFuZCBhc3NvY2lhdGVkIGl0IHRvIHRoZSBzeXN0ZW0KCW1lbnUgaW4gd2luOTUuIEFsc28gcGVybWl0IHRoZSBTQ19DTE9TRSBpdGVtIHRvIGJlIGRpc2FibGVkLgoKCSogbWlzYy9jb21tLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQnVnZml4ZXMgYW5kIGEgZmFrZSBHRVRCQVNFSVJRLgoKCSogZmlsZXMvYXN5bmMuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglNYWRlIGFzeW5jIGZkcyBub25ibG9ja2luZy4KCgkqIHdpbmRvd3MvbWRpLmM6IERhbiBMYW5nbG9pcyA8ZGFuaWVsbEBjb3JlbC5jb20+CglSZW1vdmVkIGFuIGluYXBwcm9wcmlhdGUgaWYgc3RhdGVtZW50IGZyb20gTURJX0NoaWxkQWN0aXZhdGUgdGhhdAoJcHJldmVudGVkIHRoZSBhY3RpdmF0aW9uIGNvZGUgZnJvbSBleGVjdXRpbmcuCgoJKiBkbGxzL2NvbWN0bDMyL21vbnRoY2FsLmMsIGluY2x1ZGUvbW9udGhjYWwuaDoKCUFsZXggUHJpZW0gPGFsZXhwQHNjaS5rdW4ubmw+CglCdWdmaXhlcyAmIGZ1cnRoZXIgdXBkYXRlcyBmb3IgdGhlIG1vbnRoIGNhbGVuZGFyIGNvbW1vbiBjb250cm9sLgoKCSogZGxscy9jb21jdGwzMi9kYXRldGltZS5jLCBpbmNsdWRlL2NvbW1jdHJsLmgsIGluY2x1ZGUvZGF0ZXRpbWUuaDoKCUFsZXggUHJpZW0gPGFsZXhwQHNjaS5rdW4ubmw+CglTdGFydGVkIGltcGxlbWVudGluZyBkYXRlL3RpbWUgY29tbW9uIGNvbnRyb2wuCgoJKiBncmFwaGljcy9wc2Rydi9ncmFwaGljcy5jLCBncmFwaGljcy9wc2Rydi9wcy5jOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJUFNEUlZfV3JpdGVBcmMgc2hvdWxkbid0IHdyaXRlIGEgbmV3cGF0aC4KCgkqIGNvbnRyb2xzL2J1dHRvbi5jOiBSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJRml4IGhhbmRsaW5nIG9mIFdNX0xCVVRUT05EQ0xJQ0sgbWVzc2FnZSBmb3IgYnV0dG9ucyB3aXRoIGNlcnRhaW4KCXN0eWxlcy4KCgkqIHdpbmRvd3MvZGNlLmM6IEFiZXkgR2VvcmdlIDxhYmV5QG1hY2FkYW1pYW4uY29tPgoJQnVnIGZpeCBmb3IgdXBkYXRpbmcgdGhlIGNsaXBwaW5nIHJlZ2lvbiBpbiBuZXN0ZWQgR2V0RENFeCBjYWxscy4KCgkqIHdpbmRvd3Mvd2lucG9zLmM6IFl1eGkgWmhhbmcgPHl1eGl6QGNvcmVsLmNhPgoJVHJpZWQgdG8gZml4IHRoZSBjb2RlIGZvciBTZXRXaW5kb3dQb3MgdG8gZXJhc2UgdGhlIGJhY2tncm91bmQKCXByb3Blcmx5LgoKRnJpIEp1bCAzMCAxODoxMDoyMSAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jb21tZGxnL2NkbGdfRW4ucmMsIGRsbHMvY29tbWRsZy9jZGxnX3h4LnJjLCBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYywgZGxscy9jb21tZGxnL3JzcmMucmMsIGluY2x1ZGUvd2luc3Bvb2wuaDoKCUtsYWFzIHZhbiBHZW5kIDxrbGFhc0B2YW5nZW5kLmRlbW9uLm5sPgoJLSBhZGRlZCBDb2xsYXRlL05vQ29sbGF0ZSBJY29ucyB0byBQcmludDMyIGRpYWxvZyAodW5mb3J0dW5hdGVseSB0aGV5CgkgIGRvbid0IGRpc3BsYXkgeWV0KS4KCS0gYWRkZWQgc3RhdHVzIHN0cmluZ3MuCgktIGFkZGVkIHN0cmluZyB0YWJsZSBmb3IgaW50ZXJuYXRpb25hbGlzYXRpb24gb2Ygc2V2ZXJhbCBpbnRlcm5hbAoJICBtZXNzYWdlIGJveGVzLgoKCSogaW5jbHVkZS9jb21tY3RybC5oLCBpbmNsdWRlL3dpbnVzZXIuaDogWXV4aSBaaGFuZyA8eXV4aXpAY29yZWwuY2E+CglSZW1vdmVkIGR1cGxpY2F0ZWQgZGVmaW5lcyBpbiB3aW51c2VyLmggYW5kIGNvbW1jdHJsLmguIEFsc28gY29ycmVjdGVkCglhIHR5cG8gZm9yIFNXX01BWCB2YWx1ZS4KCgkqIGRsbHMvY29tbWRsZy9jZGxnLmgsIGRsbHMvY29tbWRsZy9jZGxnMzIuYywgZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jOgoJRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgYSBtZW1vcnkgbGVhayBpbiB0aGUgZmlsZSBkaWFsb2cuCgoJKiBsb2FkZXIvbG9hZG9yZGVyLmM6IEh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCVN0cmlwIC5kcnYgZXh0ZW5zaW9ucyB0byBNT0RVTEVfR2V0TG9hZE9yZGVyLgoKCSogZGxscy9jb21jdGwzMi90YWIuYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgYSBtZW1vcnkgbGVhay4KCgkqIHNjaGVkdWxlci9wcm9jZXNzLmMsIGxvYWRlci90YXNrLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogSW5zdGFsbCB0YXNrLWVudHJ5IGJyZWFrcG9pbnQgKmFmdGVyKiBFWEUgbW9kdWxlIGlzIGluaXRpYWxpemVkLgoKCSogZ3JhcGhpY3MvcHNkcnYvcHMuYywgaW5jbHVkZS9wc2Rydi5oOgoJTHVjIFRvdXJhbmdlYXUgPGx1Y0BtYWNhZGFtaWFuLmNvbT4KCUFkZGVkIGEgY2FsbCB0byB0aGUgbmV3cGF0aCBvcGVyYXRvciBpbW1lZGlhdGVseSBiZWZvcmUgdGhlIGFyYwoJb3BlcmF0b3IuCgoJKiBjb250cm9scy9idXR0b24uYzogUGllcnJlIE1hZ2VhdSA8cGllcnJlQG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgYSBwcm9ibGVtIHdoZW4gdGhlIHN0eWxlIGlzIEJTX0JJVE1BUCBvciBCU19JQ09OOiB0aGUgYml0bWFwIG9yCglpY29uIG5lZWRlZCB0byBiZSBjZW50ZXJlZCB3aGVuIHRoZSBidXR0b24gaXMgc21hbGxlciB0aGFuIHRoZSBiaXRtYXAuCgoJKiB3aW5kb3dzL21kaS5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglGaXhlZCBhIG1lbW9yeSBsZWFrIHRoYXQgb2NjdXJzIHdoZW4gd2UgbWF4aW1pemUvbWluaW1pemUgYW4gTURJCgljaGlsZC4KCgkqIGRsbHMvY29tY3RsMzIvdXBkb3duLmM6IEZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUFkZGVkIG1vcmUgc3VwcG9ydCBmb3IgYnVkZHkgd2luZG93cyBpbiB0aGUgdXBkb3duIGNvbnRyb2wuCgoJKiBjb250cm9scy9lZGl0LmM6IEZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGVkIHByb3BlciB3aW45NSBzdXBwb3J0IGZvciB0aGUgV1NfQk9SREVSIHN0eWxlLgoKCSogY29udHJvbHMvbGlzdGJveC5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglDaGFuZ2VkIHRoZSBXU19CT1JERVIgc3R5bGUgdG8gYSBXU19FWF9DTElFTlRFREdFIHN0eWxlIGZvciB0aGUKCWxpc3Rib3ggY29udHJvbC4KCgkqIGNvbnRyb2xzL2NvbWJvLmM6IEZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIHRoZSBib3JkZXIgZm9yIHRoZSBsaXN0Ym94IGNyZWF0ZWQgYnkgdGhlIHNpbXBsZSBjb21ib2JveC4KCgkqIG9sZS9jb21wb2JqLmMsIGlmMTYzMi9jb21wb2JqLnNwZWM6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglJbXBsZW1lbnRlZCBDb1Jldm9rZUNsYXNzT2JqZWN0IHN0dWIgbmVlZGVkIGJ5IEFjcm9iYXQgMyAxNiBiaXQuCgoJKiBsb2FkZXIvbmUvbW9kdWxlLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUdldE1vZHVsZUhhbmRsZTE2OiB0cmVhdCBXaW4zMiBtb2R1bGVzIGNvcnJlY3RseS4KCldlZCBKdWwgMjggMTY6Mzg6NDUgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYywgZGxscy9jb21tZGxnL2ZpbGVkbGdicm93c2VyLmMsIGRsbHMvc2hlbGwzMi9icnNmb2xkZXIuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJRml4ZWQgdXNlIG9mIFN0clJldFRvU3RyTi4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglTdHJSZXRUb1N0ck5bQXxXfEFXXSBuZXcgaW5kZXBlbmRlbnQgdW5pY29kZS9hc2NpaS9leHBvcnQgZnVuY3Rpb25zLgoKCSogZG9jdW1lbnRhdGlvbi9kbGxzOiBLbGFhcyB2YW4gR2VuZCA8a2xhYXNAdmFuZ2VuZC5kZW1vbi5ubD4KCUFkZGVkIGV4cGxhbmF0aW9uIG9mIHRoZSBjdXJyZW50IERMTCBzdXBwb3J0LgoKCSogbWVtb3J5L2dsb2JhbC5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogZml4ZWQgZnJlc2hseSBpbnRyb2R1Y2VkIGJ1ZyBpbiBHbG9iYWxMb2NrMTYuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMyLnNwZWMsIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jOgoJSWFuIFNjaG1pZHQgPGlzY2htaWR0QGNmbC5yci5jb20+CglBZGRlZCBzdHVicyBmb3IgSW5pdE1VSUxhbmd1YWdlIGFuZCBDT01DVEwzMi40MTAuCglGaXhlZCBzb21lIGNvbXBpbGVyIHdhcm5pbmdzLgoKVHVlIEp1bCAyNyAxNzoxMDowNiAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaWYxNjMyL2dkaS5zcGVjLCBpZjE2MzIvdGh1bmsuYywgaWYxNjMyL3VzZXIuc3BlYywgaW5jbHVkZS9jYWxsYmFjay5oLCBtaXNjZW11L21haW4uYywgb2JqZWN0cy9nZGlvYmouYywgd2luZG93cy91c2VyLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFkZGVkIEZpbmFsVXNlckluaXQxNi9GaW5hbEdkaUluaXQxNiBzdHVicy4KCUNhbGwgb3V0IHRvIEZpbmFsVXNlckluaXQgaW4gTUFJTl9FbXVsYXRvclJ1bi4KCgkqIGlmMTYzMi9rZXJuZWwuc3BlYywgbWVtb3J5L3NlbGVjdG9yLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFkZGVkIElzQmFkRmxhdFJlYWRXcml0ZVB0cjE2KCkuCgoJKiBjb250cm9scy9lZGl0LmM6IEFiZXkgR2VvcmdlIDxhYmV5QG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgaW5jb3JyZWN0IGVkaXQgY29udHJvbCBiZWhhdmlvdXIgaW4gbW91c2UgbWVzc2FnZSBoYW5kbGluZy4KCgkqIHdpbmRvd3MvbWVzc2FnZS5jOiBBYmV5IEdlb3JnZSA8YWJleUBtYWNhZGFtaWFuLmNvbT4KCVNlbmQgbm9ybWFsIG1vdXNlIG1lc3NhZ2VzIHRvIFdNX1NFVENVUlNPUiB3aGVuIG5vbi1jbGllbnQgbW91c2UKCW1lc3NhZ2VzIG9jY3VyLgoKCSogd2luZG93cy93aW5wb3MuYzogVGh1eSBOZ3V5ZW4gPHRodXlAbWFjYWRhbWlhbi5jb20+CglDaGVjayBpZiB0aGUgd2luZG93IGhhcyB0aGUgV1NfQ0xJUFNJQkxJTkdTIHN0eWxlIGJlZm9yZSB1c2luZyB0aGUKCURDWF9DTElQU0lCTElOR1MgZmxhZy4KCgkqIGRsbHMvY29tbWRsZy9NYWtlZmlsZS5pbiwgZGxscy9jb21tZGxnL2NkbGcuaCwgZGxscy9jb21tZGxnL2NkbGczMi5jLCBkbGxzL2NvbW1kbGcvY2RsZ19Fbi5yYywgZGxscy9jb21tZGxnL2ZpbGVkbGcuYywgZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZ2Jyb3dzZXIuYywgZGxscy9jb21tZGxnL2ZpbGVkbGdicm93c2VyLmgsIGluY2x1ZGUvY29tbWRsZy5oLCBpbmNsdWRlL2RsZ3MuaCwgaW5jbHVkZS90Y2hhci5oOgoJRnJhbmNvaXMgQm9pc3ZlcnQgPGZyYW5jb2lzQG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50ZWQgdGhlIFdpbjk1IGZpbGUgb3Blbi9zYXZlIGRpYWxvZ3MuCgoJKiBNYWtlZmlsZS5pbjogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglEbyB0b29scy8gYmVmb3JlIGFueSBvZiB0aGUgb3RoZXIgc3ViZGlyZWN0b3JpZXMsIGV2ZW4gd2hlbiBkb2luZwoJcGFyYWxsZWwgbWFrZXMuCgoJKiBtZW1vcnkvZ2xvYmFsLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBSZXR1cm4gc2VsZWN0b3IgYWxzbyBpbiBDWCBmcm9tIEdsb2JhbExvY2sxNigpLgoKCSogaWYxNjMyL3RodW5rLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJTW9yZSBnY2MgYnVnIHdvcmthcm91bmRzLgoKCSogZ3JhcGhpY3MvcHNkcnYvcHBkLmMsIGluY2x1ZGUvd2luZ2RpLmg6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglBZGRlZCBtb3JlIHBhcGVyIHNpemVzIGFuZCBiaW4gbmFtZXMgdG8gUFBEIHBhcnNlci4KCgkqIHdpbmRvd3MvZGlucHV0LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWN0dWFsbHkgcmV0dXJuIHRoZSBudW1iZXIgb2YgZXZlbnRzIGluIE1vdXNlX0dldERldmljZURhdGEgKGZpeGVzCglXaW5nIENvbW1hbmRlciBQcm9waGVjeSkuIEFkZGVkIHRpbWVzdGFtcCBhbmQgc2VxdWVuY2UgZ2VuZXJhdGlvbiwKCWNyaXRpY2FsIHNlY3Rpb24gZm9yIG1vdXNlZGF0YS4gRGlzYWJsZWQgbW91c2Ugd2FycGluZyBpbgoJR2V0RGV2aWNlRGF0YSBmb3Igbm93IChnZW5lcmF0ZXMgZXhjZXNzIG1vdXNlIGV2ZW50cykuCgpTdW4gSnVsIDI1IDEzOjE1OjQ5IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiAqLyouc3BlYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJTW92ZWQgLnNwZWMgZmlsZXMgdG8gY29ycmVzcG9uZGluZyBkbGxzLyBkaXJlY3RvcnkuCgoJKiBjb250cm9scy9saXN0Ym94LmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJU2V2ZXJhbCBmb2N1cyBhbmQgc2VsZWN0aW9uIHByb2JsZW1zIGluIGxpc3Rib3hlcy4KCgkqIHdpbmRvd3MvZGNlLmM6IEZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCVJldHJpZXZlIHRoZSBjbGlwcGluZyByZWdpb24gYmVmb3JlIHNldHRpbmcgdGhlIGRyYXdhYmxlIGFuZCByZXNldCB0aGUKCWNsaXBwaW5nIHJlZ2lvbiBhZnRlci4KCgkqIHJlbGF5MzIvQXR0aWMvc2hlbGwzMi5zcGVjLCBkbGxzL3NoZWxsMzIvYnJzZm9sZGVyLmMsIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9waWRsLmgsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLCBkbGxzL3NoZWxsMzIvc2hsbWVudS5jLCBpbmNsdWRlL3NoZWxsLmgsIGluY2x1ZGUvc2hsZ3VpZC5oLCBpbmNsdWRlL3NobG9iai5oLCBpbmNsdWRlL3dpbmUvb2JqX2VudW1pZGxpc3QuaCwgaW5jbHVkZS93aW5lL29ial9zaGVsbGZvbGRlci5oOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglNYW55IGZpeGVzL3JlaW1wbGVtZW50YXRpb25zLgoKCSogZGxscy9zaGVsbDMyL3NobHZpZXcuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglSZW1vdmVkIGV4cGVyaW1lbnRhbC91bnVzZWQgY29kZS4KCVVzZSBTaGVsbEZvbGRlciB0byBnZXQgVmlld09iamVjdHMuCglTdGFydGVkIGNsZWFudXAgb2YgdGhlIGNvbnRleHRtZW51IGNvZGUuCgoJKiBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUNvbXBsZXRlIHJlZGVzaWduLCBzcGxpdCBpbnRvIDMgaW1wbGVtZW50YXRpb25zIChEZXNrdG9wLCBNeUNvbXB1dGVyCglhbmQgZmlsZXN5c3RlbSBmb2xkZXJzKS4gQWxsIHBhcnNpbmcgYW5kIGJpbmRpbmcgaXMgZG9uZSByZWN1cnNpdmUuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUltcGxlbWVudGVkIFNIR2V0U3BlY2lhbEZvbGRlclBhdGhBLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsb3JkLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUltcGxlbWVudGVkIFNIQ3JlYXRlU2hlbGxGb2xkZXJWaWV3RXguCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJUmVtb3ZlZCBzcGVjaWFsIENvQ3JlYXRlQ2xhc3NPYmplY3QgYW5kIHVzZSBvbGUgZnVuY3Rpb25zIGluc3RlYWQuCglTSENyZWF0ZURlZkNsYXNzT2JqZWN0IGltcGxlbWVudGVkLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsbGluay5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglJbXBsZW1lbnRlZCBhY2Nlc3MgdG8gbG5rJ3MgdG8gYSBJU3RyZWFtIGludGVyZmFjZS4KCgkqIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJRml4ZWQgaWNvbiBiYWNrZ3JvdW5kICh3YXMgYmxhY2spLgoKCSogZGxscy9zaGVsbDMyL2ZvbGRlcnMuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglGaXhlZCBnZXR0aW5nIGljb25zIGZyb20gZmlsZXR5cGVzLgoKCSogZGxscy9zaGVsbDMyL2VudW1pZGxpc3QuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJSW1wbGVtZW50ZWQgZW51bWVyYXRpb24gb2Ygc2hlbGwgZXh0ZW5zaW9ucywgc2VwZXJhdGVkIGVudW0gc3R1ZmYgZm9yCgl0aGUgMyBzZXBlcmF0ZSBzaGVsbGZvbGRlciBpbXBsZW1lbnRhdGlvbnMuCgoJKiBkbGxzL3NoZWxsMzIvZGF0YW9iamVjdC5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglSZXdyb3RlIEdldERhdGEgc28gc3VwcG9ydCBtdWx0aXBsZSBzZWxlY3Rpb25zLgoKCSogZGxscy9zaGVsbDMyL2NvbnRtZW51LmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCVNlcGFyYXRlZCBzdHVmZiBmb3Igc2h2IGJhY2tncm91bmQgY29udGV4dG1lbnUgdG8gc2VwYXJhdGUgZmlsZS4KCgkqIGRsbHMvc2hlbGwzMi9jbGFzc2VzLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTmV3IGZ1bmN0aW9ucyB0byBhY2Nlc3MgYXR0cmlidXRlcyBpbiBIQ1IuCgoJKiBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW4sIGRsbHMvc2hlbGwzMi9zaHZfYmdfY21lbnUuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTmV3IGZpbGUuIFNlcGVyYXRlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBzaGVsbHZpZXcgYmFja2dyb3VuZAoJY29udGV4dG1lbnUuCgoJKiBpbmNsdWRlL3dpbmUvdW5kb2NzaGVsbC5oOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglOZXcgZmlsZS4gQ29udGFpbnMgZnVuY3Rpb25zIG5vdCBpbiB0aGUgb2ZmaWNpYWwgaGVhZGVycyBidXQgd2lkZWx5Cgl1c2VkIGZyb20gb3RoZXIgZGxscy4KCgkqIE1ha2VmaWxlLmluOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIFgxMU9CSlMgYW5kIExJQk9CSlMgdG8gd2luZSBkZXBlbmRlbmNpZXMgKHdlIGNhbid0IGFkZCBBTFRfTElOSykuCgoJKiBNYWtlZmlsZS5pbjogTWFrZSBzdXJlIHdlIGJ1aWxkIHRvb2xzIGZpcnN0LgoKCSogaWYxNjMyL2tlcm5lbC5zcGVjLCBpZjE2MzIvcmVsYXkuYywgaWYxNjMyL3dwcm9jcy5zcGVjLCBtZW1vcnkvZ2xvYmFsLmMsIHRvb2xzL2J1aWxkLXNwZWMudHh0LCB0b29scy9idWlsZC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglSZWxheSBjb2RlIGZvciBXaW4xNiByZWdpc3RlciBmdW5jdGlvbnMgY29udmVydHMgYXJndW1lbnRzLgoJTmV3ICdpbnRlcnJ1cHQnIGtleXdvcmQgYWRkZWQgKGZvciBXaW4xNiBpbnRlcnJ1cHQgaGFuZGxlcnMpLgoJQWRhcHRlZCAuc3BlYyBmaWxlcyBhbmQgaW1wbGVtZW50YXRpb25zIG9mIHJlZ2lzdGVyIHJvdXRpbmVzLgoKCSogaW5jbHVkZS9wc2Rydi5oLCBpbmNsdWRlL3dpbmUvd2luZ2RpMTYuaCwgbWlzYy9wcmludGRydi5jLCBncmFwaGljcy9wc2Rydi9lc2NhcGUuYywgZ3JhcGhpY3MvcHNkcnYvaW5pdC5jLCBncmFwaGljcy9wc2Rydi9wcy5jLCBpZjE2MzIvZ2RpLnNwZWM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+Cgl7U3RhcnR8RW5kfXtEb2N8UGFnZX0gZ28gdGhyb3VnaCBEQ2Z1bmNzLgoJSW1wbGVtZW50IHRoZXNlIGluIHRoZSBQb3N0U2NyaXB0IGRyaXZlci4KCUNoYW5nZSBQU0RSVl9Fc2NhcGUgdG8gdXNlIHRoZW0uCgoJKiBsb2FkZXIvZG9zL2Rvc3ZtLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVdvcmsgYXJvdW5kICdsb2NhbCBleHRlcm4gZGVjbGFyYXRpb24gd2l0aCBhdHRyaWJ1dGUnIGdjYyBidWcuCgoJKiB3aW5kb3dzL2RpbnB1dC5jOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJSW1wbGVtZW50YXRpb24gb2YgU2V0RXZlbnROb3RpZmljYXRpb24gZm9yIHRoZSBtb3VzZSBkcml2ZXIuCgoJKiBvbGUvY29tcG9iai5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUxldCBDb0NyZWF0ZUluc3RhbmNlIHVzZSBMT0FEX1dJVEhfQUxURVJFRF9TRUFSQ0hQQVRILgoKCSogaW5jbHVkZS9vbGUyLmg6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJRml4ZWQgaW5jb21wbGV0ZSBwcm90by4KCgkqIHdpbmVkZWZhdWx0LnJlZzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglOZXcga2V5cyBuZXNzZXNhcnkgZm9yIHJ1bm5pbmcgdGhlIG5ldyBzaGVsbDMyLgoKCSogY29udHJvbHMvc3RhdGljLmM6IEh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCVVzZSBHREkgQVBJcyB0byBhY2Nlc3MgYml0bWFwIGluZm8uCgoJKiBncmFwaGljcy9wc2Rydi9jbGlwcGluZy5jOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJUmV3cm90ZSBQU0RSVl9TZXREZXZpY2VDbGlwcGluZyB0byB1c2UgR2V0UmVnaW9uRGF0YSBBUEkuCgpTYXQgSnVsIDI0IDEyOjIwOjI1IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBtaXNjZW11L21haW4uYywgaWYxNjMyL3RodW5rLmMsIGluY2x1ZGUvbWFpbi5oLCBsb2FkZXIvbWFpbi5jLCBtaXNjL0F0dGljL2NhbGxiYWNrLmMsIG1pc2MvTWFrZWZpbGUuaW46CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVVuaWZ5IHN0YXJ0dXAgc2VxdWVuY2UgZm9yIFdpbmUgYW5kIFdpbmVMaWIuCgoJKiB3aW5kb3dzL2NsaXBib2FyZC5jLCBpbmNsdWRlL2NsaXBib2FyZC5oLCBtZW1vcnkvZ2xvYmFsLmM6CglOb2VsIEJvcnRod2ljayA8bm9lbEBtYWNhZGFtaWFuLmNvbT4KCUZpeCBidWcgd2l0aCBwYXN0aW5nIFdpbmUgY2xpcGJvYXJkIGNvbnRlbnQgdG8gZXh0ZXJuYWwgYXBwbGljYXRpb25zLAoJYnkgc3RvcmluZyBjbGlwYm9hcmQgZGF0YSBvbiB0aGUgc2hhcmVkIHN5c3RlbSBoZWFwLgoKCSogd2luZG93cy94MTFkcnYvbW91c2UuYzogQWNoaW0gS2Fpc2VyIDxBY2hpbV9LYWlzZXJAdC1vbmxpbmUuZGU+CglEcmF3IGFuIGFkZGl0aW9uYWwgd2hpdGUgYml0IGZvciBlYWNoIGludmVydCBiaXQgb2YgYSBjdXJzb3IuCgoJKiB3aW5kb3dzL3gxMWRydi9ldmVudC5jOiBOb2VsIEJvcnRod2ljayA8bm9lbEBtYWNhZGFtaWFuLmNvbT4KCVdoaWxlIGhhbmRsaW5nIHRoZSBYIEZvY3VzSW4gbWVzc2FnZSBpbiBtYW5hZ2VkIG1vZGUsIGlmIHRoZSB3aW5kb3cKCWhhcyBiZWVuIGRpc2FibGVkIHJldmVydCB0aGUgWCBmb2N1cyBiYWNrIHRvIHRoZSBsYXN0IGZvY3VzIHdpbmRvdy4KCgkqIGRsbHMvc2hlbGwzMi9icnNmb2xkZXIuYywgaW5jbHVkZS9jb21tY3RybC5oLCBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6CglGcmFuY29pcyBCb2lzdmVydDxmcmFuY29pc0BtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGVkIFRSRUVWSUVXX0luc2VydEl0ZW1XLgoKCSogZ3JhcGhpY3MvZXNjYXBlLmM6IEh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUltcGxlbWVudGVkIEV4dEVzY2FwZS4KCgkqIE1ha2VmaWxlLmluOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVRyeWluZyB0byBmaXggcGFyYWxsZWwgbWFrZSBieSBkb2luZyBkaXJlY3Qgc3ViZGlyL3N1YmRpci5vIHJ1bGVzLgoKCSogaW5jbHVkZS93aW4uaCwgd2luZG93cy9ub25jbGllbnQuYywgd2luZG93cy94MTFkcnYvd25kLmM6CglTeWx2YWluIFN0LUdlcm1haW4gPHN5bHZhaW5AbWFjYWRhbWlhbi5jb20+CglGaXhlZCBpbmNvbnNpc3RlbmN5IGluIGNvbmRpdGlvbnMgdGhhdCBkZXRlcm1pbmVzIGlmIGEgd2luZG93IHJlcXVpcmVzCglhIFdNIGJvcmRlci4KCgkqIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLCBpbmNsdWRlL3gxMWZvbnQuaDoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUZvciBsYXJnZSBmb250IHNpemVzIGNhbGwgWExvYWRRdWVyeUZvbnQgd2l0aCBhIDEwMCBwaXhlbCBoaWdoIGZvbnQKCWFuZCByZXNjYWxlIHRoZSBtZXRyaWNzLgoKCSogbWlzYy9wcmludGRydi5jLCBvYmplY3RzL2RjLmMsIGdyYXBoaWNzL3BzZHJ2L2VzY2FwZS5jLCBncmFwaGljcy93aW4xNmRydi9pbml0LmMsIGluY2x1ZGUvZ2RpLmg6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglJbXBsZW1lbnQgaGFuZGxpbmcgb2YgMzIgYml0IEFib3J0UHJvYy4KCgkqIGluY2x1ZGUvcHJvY2Vzcy5oLCBpbmNsdWRlL3NlcnZlci5oLCBpbmNsdWRlL3dpbmUvZXhjZXB0aW9uLmgsIGluY2x1ZGUvd2lubnQuaDoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglTdXBwcmVzc2VkIGNvbXBpbGVyIHdhcm5pbmcgYnkgdXNpbmcgdGhlICd1bnVzZWQnIGF0dHJpYnV0ZS4KCgkqIGRlYnVnZ2VyL01ha2VmaWxlLmluLCBkZWJ1Z2dlci9leHRlcm5hbC5jOgoJS2V2aW4gSG9sYnJvb2sgPGt3aEBuZW9zb2Z0LmNvbT4KCUFkZGVkIHV0aWxpdHkgZnVuY3Rpb24gdG8gaW52b2tlIGV4dGVybmFsIGRlYnVnZ2VyLgoKCSogbXVsdGltZWRpYS8uY3ZzaWdub3JlLCBtdWx0aW1lZGlhL3dpbm1tLnJjLCBtdWx0aW1lZGlhL3dpbm1tX0VuLnJjLCBtdWx0aW1lZGlhL3dpbm1tX0ZyLnJjLCByZWxheTMyL2J1aWx0aW4zMi5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBXSU5NTSByZXNvdXJjZXMuCgoJKiBtdWx0aW1lZGlhL0F0dGljL21jaXN0cmluZy5jLCBtdWx0aW1lZGlhL01ha2VmaWxlLmluOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglSZW1vdmVkIG9ic29sZXRlZCBtY2lzdHJpbmcuYy4KCUFkZGVkIHN1cHBvcnQgZm9yIHJlc291cmNlcy4KCgkqIG11bHRpbWVkaWEvbWNpYW5pbS5jLCBtdWx0aW1lZGlhL21jaWF2aS5jLCBtdWx0aW1lZGlhL21jaWNkYS5jLCBtdWx0aW1lZGlhL21jaW1pZGkuYywgbXVsdGltZWRpYS9tY2l3YXZlLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIHJldHVybiB2YWx1ZXMgZm9yIHNvbWUgbWVzc2FnZXMgaW4gRHJpdmVyUHJvYyAoTUNJX0dFVERFVkNBUFMgJgoJTUNJX1NUQVRVUykgZm9yIG1jaVNlbmRTdHJpbmcuCgoJKiBtdWx0aW1lZGlhL3RpbWUuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglTcHJlYWQgdGhlIHVzZSBvZiBNTSBjcml0IHNlY3QuCgoJKiBtdWx0aW1lZGlhL21tc3lzdGVtLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJTW92ZWQgc29tZSBNQ0kgZnVuY3Rpb25zIHRvIG1jaS5jLgoJTm93IGxvYWRzIGVycm9yIG1lc3NhZ2VzIGZyb20gc3RyaW5nIHRhYmxlLgoJU3ByZWFkIHRoZSB1c2Ugb2YgTU0gY3JpdCBzZWN0LgoKCSogbXVsdGltZWRpYS9tY2kuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBwYXJzaW5nICYgc3RvcmluZyBvZiBjb21tYW5kIHRhYmxlcy4KCU1lcmdlZCBzb21lIE1DSSBmdW5jdGlvbnMgZnJvbSBtbXN5c3RlbS5jLgoKCSogaW5jbHVkZS9tdWx0aW1lZGlhLmg6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJUmVtb3ZlZCBzb21lIG5vIGxvbmdlciB1c2VkIHByb3RvdHlwZXMuCglBZGRlZCBjb21tYW5kIHRhYmxlcyB0byBNQ0kgc3RydWN0dXJlLgoKCSogaW5jbHVkZS9tbXN5c3RlbS5oOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGJ1Z2d5IHByb3RvdHlwZS4KCgkqIGRlYnVnZ2VyL3R5cGVzLmM6IEtldmluIEhvbGJyb29rIDxrd2hAbmVvc29mdC5jb20+CglBdm9pZCBjcmFzaGluZyBvbiBhIGJhZCBzeW1ib2wgYWRkcmVzcyBvZiAweDAwMDAuCgoJKiBtaXNjL3czMnN5cy5jOiBGaXhlZCBHZXRXMzJTeXNWZXJzaW9uMTYgcmV0dXJuIHR5cGUuCgoJKiBpbmNsdWRlL2NvbW1kbGcuaCwgaW5jbHVkZS9tb2R1bGUuaCwgbG9hZGVyL21vZHVsZS5jLCByZWxheTMyL3V0dGh1bmsuYywgZGxscy9jb21tZGxnL2NvbG9yZGxnLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnLmMsIGRsbHMvY29tbWRsZy9maW5kZGxnLmMsIGRsbHMvY29tbWRsZy9mb250ZGxnLmMsIGRsbHMvY29tbWRsZy9wcmludGRsZy5jLCBpZjE2MzIvd3Byb2NzLnNwZWM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVJlbW92ZWQgTU9EVUxFX0dldFduZFByb2NFbnRyeTE2KCkuCglVc2UgMzItYml0IHdpbmRvdyBwcm9jZWR1cmVzIGluIENPTU1ETEcgaW5zdGVhZC4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGN1dCZwYXN0ZSBidWcuCgoJKiBpbmNsdWRlL2RvY29iai5oLCBpbmNsdWRlL3dpbmUvb2JqX2Jhc2UuaCwgaW5jbHVkZS93aW5lL29ial9kYXRhb2JqZWN0LmgsIGluY2x1ZGUvd2luZS9vYmpfZHJhZ2Ryb3AuaCwgaW5jbHVkZS93aW5lL29ial9pbnBsYWNlLmgsIGluY2x1ZGUvd2luZS9vYmpfb2xlZm9udC5oLCBpbmNsdWRlL3dpbmUvb2JqX29sZXVuZG8uaCwgaW5jbHVkZS93aW5lL29ial9wcm9wZXJ0eXN0b3JhZ2UuaCwgaW5jbHVkZS93aW5lL29ial9zdG9yYWdlLmg6CglQYXVsIFF1aW5uIDxwYXVscUBjb3JlbC5jYT4KCUFkZCBhIGZldyBzdHVicywgc29tZSBDKysgY29tcGF0aWJpbGl0eSwgYW5kIGZpeCBhIGZldyB0eXBlcy4KCgkqIGluY2x1ZGUvaW5pdGd1aWQuaCwgb2xlL2d1aWQuYzogQWxiZXJ0IGRlbiBIYWFuIDxhbGJlcnRkQGNvcmVsLmNhPgoJRGVjbGFyZSBvbmx5IG9uZSBpbnN0YW5jZSBvZiBHVUlEX05VTEwuCgoJKiBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jOiBQaWVycmUgTWFnZWF1IDxwaWVycmVAbWFjYWRhbWlhbi5jb20+CglGaXhlZCB2YXJpb3VzIHByb2JsZW0gd2l0aCBJbWFnZUxpc3RfRHJhdy4KCgkqIHdpbmRvd3MvZGlhbG9nLmM6IFN0ZXBoYW5lIEx1c3NpZXI8c3RlcGhhbmVAbWFjYWRhbWlhbi5jb20+CglSZS1lbmFibGUgdGhlIG93bmVyIHdpbmRvdyBpbiB0aGUgRW5kRGlhbG9nKCkuCgoJKiBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jOiBUaHV5IE5ndXllbiA8dGh1eUBtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIG5vdGlmaWNhdGlvbnMuCgoJKiBpZjE2MzIvdGh1bmsuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBbHdheXMgcmV0cmlldmUgQ2FsbG91dCByb3V0aW5lcyB1c2luZyBHZXRQcm9jQWRkcmVzcygpLgoKCSogd2luZG93cy9kZWZ3bmQuYzogQWJleSBHZW9yZ2UgPGFiZXlAbWFjYWRhbWlhbi5jb20+CglTZW5kIFdNX0NPTlRFWFRNRU5VIG9uIFdNX1JCVVRUT05VUCwgbm90IFdNX1JCVVRUT05ET1dOLgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUZpeGVkIGNvbXBpbGVyIHdhcm5pbmcuCgoJKiBkbGxzL3dpbnNwb29sL2luZm8uYzogSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJTGV0IHRocm91Z2ggbW9yZSBmbGFncyB0byBFbnVtUHJpbnRlcnMuCglGaXhlcyBmb3IgR2V0UHJpbnRlci9HZXRQcmludGVyRHJpdmVyLgoKCSogZ3JhcGhpY3MvcHNkcnYvY29sb3IuYywgZ3JhcGhpY3MvcHNkcnYvaW5pdC5jLCBncmFwaGljcy9wc2Rydi9wcy5jOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJRml4IHN0dXBpZCBgcnViYmlzaCBhdCBlbmQgb2YgJSVUaXRsZScgYnVnLgoJRG9uJ3QgY29tcGxhaW4gYWJvdXQgcGFsZXR0ZSByZWxhdGl2ZSBSR0JzLgoJSWYgb3V0cHV0IHBhcmFtIHRvIENyZWF0ZURDIGlzIE5VTEwgZGVmYXVsdCB0byBgTFBUMTonIC0gSGFjay4KCkZyaSBKdWwgMjMgMTk6MzM6MjQgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBpbmNsdWRlL3dpbmVfZ2wuaDoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglCZXR0ZXIgZGV0ZWN0aW9uIG9mIE9wZW5HTC4KCgkqIGluY2x1ZGUvY2FsbGJhY2suaCwgaW5jbHVkZS9zdGFja2ZyYW1lLmgsIG1pc2MvQXR0aWMvY2FsbGJhY2suYywgdG9vbHMvYnVpbGQuYywgaWYxNjMyL3RodW5rLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogUmV2ZXJ0ZWQgQ2FsbFRvMTYgcm91dGluZXMgdG8gU1REQ0FMTCBjb252ZW50aW9uLgoKCSogb2JqZWN0cy9mb250LmM6IEh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCVN0cmluZyB0byBHZXRUZXh0RXh0ZW50UG9pbnQgaXMgbm90IG5lY2Vzc2FyaWx5IDAgdGVybWluYXRlZC4KCUZpeCBmdW5jdGlvbiBuYW1lIGAzMidzIGluIGNvbW1lbnRzIC0gQVBJIG5hbWluZyBtYWRuZXNzIG1ha2VzIHRoaXMKCXdvcnRod2hpbGUuCgoJKiBkbGxzL3dpbnNwb29sL2luZm8uYywgZ3JhcGhpY3MvZHJpdmVyLmMsIGdyYXBoaWNzL3BzZHJ2L1JFQURNRSwgaW5jbHVkZS93aW5zcG9vbC5oLCByZWxheTMyL0F0dGljL3dpbnNwb29sLnNwZWM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglFbnVtSm9icyBzdHViLgoJVXBkYXRlIGdyYXBoaWNzL3BzZHJ2L1JFQURNRS4KCUFkZCB3YXJuaW5ncyB0byBEUklWRVJfR2V0RHJpdmVyTmFtZS4KCgkqIHdpbmRvd3MvbWRpLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgc29tZSBiYWQgcHRyIG9jY3VycmVuY2UgaW4gdGhpcyBjbGFzcyBXbmRQcm9jLgoKCSogZ3JhcGhpY3MvZGRyYXcuYywgaW5jbHVkZS9vcHRpb25zLmgsIG1pc2MvbWFpbi5jLCB3aW5kb3dzL3gxMWRydi9tYWluLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSBBZGRlZCBhIG5ldyBvcHRpb24gJ25veHNobScKCS0gQWRkZWQgYSAxNmJwcCAtPiAzMiBicHAgY29udmVyc2lvbiBmdW5jdGlvbgoKCSogd2luZG93cy9zeXNjb2xvci5jOiBHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCUNoYW5nZSBjb2xvciBncmF5IHRleHQgdG8gMTI4IDEyOCAxMjggZm9yIHdpbjl4IGxvb2suCgpUdWUgSnVsIDIwIDE1OjEzOjIwIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzY2hlZHVsZXIvZGVidWdnZXIuYzoKCURvIG5vdCBvdXRwdXQgdGV4dCBpbiBPdXRwdXREZWJ1Z1N0ckFXIHdoZW4gbm90IGJlaW5nIGRlYnVnZ2VkCgoJKiB3aW5kb3dzL21kaS5jOiBOb29tZW4gSGFtemEgPG5vb21lbkBtYWNhZGFtaWFuLmNvbT4KCU1ESURlc3Ryb3lDaGlsZDogTURJIHdpbmRvdyBtZW51IGl0ZW0gd2FzIGRlbGV0ZWQgb25seSBpZiB0aGUgY3VycmVudAoJZGVzdHJveWVkIGNoaWxkIHdhcyBhY3RpdmUuCgoJKiBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jOiBHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCVJlc2V0IGRpc2FibGVkIHN0eWxlIGZvciB0aGUgZGlhbG9nIGJveGVzIHNldCBvbiBwcm9wZXJ0eSBwYWdlcy4KCgkqIHRvb2xzL3dyYy9kdW1wcmVzLmMsIHRvb2xzL3dyYy9nZW5yZXMuYywgdG9vbHMvd3JjL25ld3N0cnVjLmMsIHRvb2xzL3dyYy9uZXdzdHJ1Yy5oLCB0b29scy93cmMvcGFyc2VyLmwsIHRvb2xzL3dyYy9wYXJzZXIueSwgdG9vbHMvd3JjL3dyYy5jLCB0b29scy93cmMvd3JjLmgsIHRvb2xzL3dyYy93cmN0eXBlcy5oLCB0b29scy93cmMvQ0hBTkdFUzoKCUJlcnRobyBTdHVsdGllbnMgPGJlcnRob0Bha2hwaGQuYXUuZGs+CgktIEdlbmVyYWxpemVkIHRoZSBkaXN0aW5jdGlvbiBiZXR3ZWVuIDIgYW5kIDQgYnl0ZSBpbnRlZ2VycyBzbGlnaHRseSB0aHJvdWdoCgkgIGEgbmV3IHBhcnNlciBzdGF0ZS4gVGhlIGlzIG5vdyBhIHdhcm5pbmcgd2hlbiBhIDIgYnl0ZSBpbnRlZ2VyIGlzIGxhcmdlcgoJICB0aGFuIDE2IGJpdCAoYW5kIGlzIHRydW5jYXRlZCkuCgktIEZpeGVkIGEgY291cGxlIG9mIGNvc21ldGljIHRoaW5ncyBpbiB0aGUgRExHSU5JVCBzdHVmZiBzbyB0aGF0IGR1bXBpbmcgb2YKCSAgdGhpcyB0eXBlIHdpbGwgd29yayBhcyBleHBlY3RlZC4KCS0gQWRkZWQgZ2VuZXJhbGl6ZWQgbGFuZ3VhZ2UvdmVyc2lvbi9jaGFyYWN0ZXJpc3RpY3Mgc3VwcG9ydCB0byB0aGUgRExHSU5JVAoJICByZXNvdXJjZSB0eXBlLgoKCVVscmljaCBDemVrYWxsYSA8dWxyaWNoY0Bjb3JlbC5jYT4KCS0gQWRkZWQgc3VwcG9ydCBmb3IgRExHSU5JVCByZXNvdXJjZS10eXBlLgoJLSBBZGRlZCBzdHJpbmcgY29udGludWF0aW9uIGFuZCBlbWJlZGRlZCBxdW90aW5nLgoJLSBBZGRlZCBudW1lcmljIElEcyBmb3IgaWNvbnMgaW4gY29udHJvbHMuCgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CgktIEJ1Z2ZpeDogRGlzdGluZ3Vpc2ggYmV0d2VlbiAyIGFuZCA0IGJ5dGUgaW50ZWdlcnMgaW4gUkNEQVRBLgoKU3VuIEp1bCAxOCAxODo0MjoyOSAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbWlzYy9BdHRpYy9zdHJpbmcuYywgbWlzYy9NYWtlZmlsZS5pbjoKCUFsYmVydCBkZW4gSGFhbiA8YWxiZXJ0ZEBjb3JlbC5jYT4KCVJlbW92ZSBzdHJpbmcuYyBiZWNhdXNlIGFsbCBvZiBpdHMgZnVuY3Rpb25zIHdlcmUgbW92ZWQgdG8gY3J0ZGxsLmMKCXdoZXJlIHRoZXkgYmVsb25nZWQuCgoJKiB0b29scy93cmMvZHVtcHJlcy5jLCB0b29scy93cmMvZ2VucmVzLmMsIHRvb2xzL3dyYy9uZXdzdHJ1Yy5jLCB0b29scy93cmMvcGFyc2VyLmwsIHRvb2xzL3dyYy9wcmVwcm9jLmMsIHRvb2xzL3dyYy9yZWFkcmVzLmMsIHRvb2xzL3dyYy91dGlscy5jLCB0b29scy93cmMvd3JjLmMsIHRvb2xzL3dyYy93cml0ZXJlcy5jLCBkZWJ1Z2dlci9kaXNwbGF5LmMsIGRsbHMvd2luYXNwaS93aW5hc3BpMTYuYywgZGxscy93bmFzcGkzMi93aW5hc3BpMzIuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJTWFrZSBpdCBwb3NzaWJsZSB0byBjb21waWxlIHdpdGggR05VIEMncyAtSS0gb3B0aW9uLgoKCSogbG9hZGVyL2Rvcy9kb3N2bS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVdvcmsgYXJvdW5kIGdjYyBzaWcxMSBmYXVsdC4KCgkqIG9iamVjdHMvZ2Rpb2JqLmM6IFRodXkgTmd1eWVuIDx0aHV5QG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgcm91bmRpbmcgaW4gTXVsRGl2LgoKCSogZ3JhcGhpY3MvcHNkcnYvTWFrZWZpbGUuaW4sIGdyYXBoaWNzL3BzZHJ2L2NsaXBwaW5nLmMsIGdyYXBoaWNzL3BzZHJ2L2luaXQuYywgZ3JhcGhpY3MvcHNkcnYvcHMuYywgaW5jbHVkZS9wc2Rydi5oOgoJTHVjIFRvdXJhbmdlYXUgPGx1Y0BtYWNhZGFtaWFuLmNvbT4KCS0gaW1wbGVtZW50YXRpb24gb2YgU2V0RGV2aWNlQ2xpcHBpbmcKCS0gY29vcmRpbmF0ZSBzeXN0ZW0gb3JpZ2luIGZpeAoKCSogd2luMzIva2VybmVsMzIuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglXb3JrLWFyb3VuZCBmb3IgY29tcGlsZXIgYnVnLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jLCBpbmNsdWRlL2NvbW1jdHJsLmgsIGluY2x1ZGUvdHJlZXZpZXcuaDoKCUFsZXggUHJpZW0gPGFsZXhwQHNjaS5rdW4ubmw+CgktIEltcGxlbWVudGF0aW9uIG9mIHNpbXBsZSBjb21jdGwzMiB2NS4wIGNoYW5nZXMuCgktIFRWTV9TT1JUQ0hJTERSRU5DQiBhbHNvIGFjY2VwdHMgVFZJX1JPT1QgYXMgYSB2YWxpZCBoUGFyZW50LgoKCSogZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jOiBJYW4gU2NobWlkdCA8aXJzbWFuQGlhZy5uZXQ+CglBZGRlZCBwb2ludGVyIHZhbGlkYXRpb24gYW5kIGFkZGl0aW9uYWwgc2FuaXR5IGNoZWNrIHRvIElzVmFsaWRTaWQoKS4KCgkqIGNvbnRyb2xzL3VpdG9vbHMuYzogRGVubmlzIEJqfHJrbHVuZCA8ZGVubmlzYkBjcy5jaGFsbWVycy5zZT4KCVNtYWxsIGZpeCBpbiBVSVRPT0xTOTVfRHJhd1JlY3RFZGdlKCkuCglBbHNvIGEgZml4IHRvIGRyYXcgc2Nyb2xsYmFyLWJ1dHRvbnMgbW9yZSBsaWtlIGluIHdpbjl4LgoKCSogd2luZG93cy9wYWludGluZy5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUluIFdJTl9VcGRhdGVOQ1JnbiwgZG8gbm90IHNlbmQgaW4gV01fTkNQQUlOVCBhIHJlZ2lvbiB0aGF0IGlzIHVzZWQKCWFmdGVyd2FyZHMsIGJ1dCBhIGNvcHkgb2YgaXQuCgoJKiBvYmplY3RzL3JlZ2lvbi5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUNoZWNrIGJldHRlciB0aGF0IGhhbmRsZXMgYXJlIGFjdHVhbCBoYW5kbGVzIHRvIGEgcmVnaW9uLgoKCSogd2luZG93cy9kY2UuYzogTGF3c29uIFdoaXRuZXkgPGxhd3Nvbl93aGl0bmV5QGp1bm8uY29tPgoJU3RvcCBEQ0VfR2V0VmlzUmVjdCBkZXJlZmVyZW5jaW5nIGEgbnVsbCB3bmRQdHIuCgoJKiBjb25maWd1cmUuaW4sIGRvY3VtZW50YXRpb24vLmN2c2lnbm9yZSwgZG9jdW1lbnRhdGlvbi9NYWtlZmlsZS5pbiwgZG9jdW1lbnRhdGlvbi93aW5lLmNvbmYubWFuLmluLCBkb2N1bWVudGF0aW9uL3dpbmUubWFuLmluLCBNYWtlLnJ1bGVzLmluLCBSRUFETUUsIGNvbmZpZ3VyZToKCUphbWVzIEp1cmFuIDxqcmoxMjBAcHN1LmVkdT4KCUFuZHJlYXMgTW9ociA8Y2lwYW04OTVAY2lwMS5pbmQudW5pLXN0dXR0Z2FydC5kZT4KCVVwZGF0ZWQgUkVBRE1FIGFuZCBtYW4gcGFnZS4KCVNwbGl0IGRvY3VtZW50YXRpb24gZm9yIHdpbmUuY29uZiBpbnRvIG5ldyB3aW5lLmNvbmYoNSkgbWFucGFnZS4KCgkqIGluY2x1ZGUvb2xlMi5oLCBpbmNsdWRlL3dpbmVycm9yLmgsIG9sZS9NYWtlZmlsZS5pbiwgb2xlL2NsaXBib2FyZC5jLCBvbGUvb2xlMi5jLCBvbGUvb2xlMnN0dWJzLmMsIG9sZS9vbGVjbGkuYzoKCU5vZWwgQm9ydGh3aWNrIDxub2VsQG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50ZWQgdGhlIE9MRSBDbGlwYm9hcmQgQVBJLgoKCSogd2luZG93cy93aW5wb3MuYzogQWJleSBHZW9yZ2UgPGFiZXlAbWFjYWRhbWlhbi5jb20+CglWYWxpZGF0ZSB0aGUgcGFyZW50IHdpdGggdGhlIGNoaWxkIHdpbmRvdyBjbGllbnQgcmVjdGFuZ2xlIHdoZW4gdGhlCglwYXJlbnQncyB1cGRhdGUgcmVnaW9uIGlzIG5vdCBlbXB0eS4KCgkqIGluY2x1ZGUvd2luLmgsIHdpbmRvd3MvcGFpbnRpbmcuYzoKCUZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCURlbGF5IFdNX05DUEFJTlQgbWVzc2FnZSB1bnRpbCB0aGUgInBhaW50ZXIncyBhbGdvcml0aG0iIGtpY2tzIGluLgoKCSogY29udHJvbHMvY29tYm8uYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgZmFrZSBXTV9MQlVUVE9OVVAgbWVzc2FnZS4KCgkqIGluY2x1ZGUvd2ludmVyc2lvbi5oLCBtaXNjL3ZlcnNpb24uYzogSWFuIFNjaG1pZHQgPGlyc21hbkBpYWcubmV0PgoJQWRkZWQgdmVyc2lvbiBpbmZvcm1hdGlvbiBmb3IgV2luOTguCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmg6IEFsZXggUHJpZW0gPGFsZXhwQHNjaS5rdW4ubmw+CglNYWNybyBkZWZpbml0aW9ucyB1c2VkIFNORE1TRyBpbnN0ZWFkIG9mIFNlbmRNZXNzYWdlW0FXXS4gQmFkLgoKCSogbWlzYy9tYWluLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJZGVidWdfKHNub29wfHJlbGF5KV8oZXhjbHVkZXxpbmNsdWRlKWxpc3QgPT4gZml4ZWQgYWxsb2NhdGlvbiwgbW9kdWxlcwoJYXJlIG5vdyBzdG9yZWQgdXBwZXJjYXNlLgoKCSogY29udHJvbHMvYnV0dG9uLmM6IEZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGVkIHRoZSBCU19JQ09OIHN0eWxlLgoKCSogd2luZG93cy9kaWFsb2cuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglDcmVhdGVEaWFsb2dQYXJhbUEgc2hvdWxkIG5vdCBjYWxsIENyZWF0ZURpYWxvZ1BhcmFtVywgYmVjYXVzZQoJdGhhdCdkIGNyZWF0ZSBhIGRpYWxvZyBib3ggd2l0aCBhIFVuaWNvZGUgZGlhbG9nIHByb2NlZHVyZS4uLgoKCSogY29udHJvbHMvc2Nyb2xsLmM6IERlbm5pcyBCanxya2x1bmQgPGRlbm5pc2JAY3MuY2hhbG1lcnMuc2U+CglXaW45eCBsb29rICYgZmVlbCBvbiBzY3JvbGxiYXJzLgoKCSogZ3JhcGhpY3MvcHNkcnYvUkVBRE1FLCBncmFwaGljcy9wc2Rydi9pbml0LmMsIGluY2x1ZGUvcHNkcnYuaDoKCVRodXkgTmd1eWVuIDx0aHV5QG1hY2FkYW1pYW4uY29tPgoJSW50cm9kdWNlZCBhIFtwc2Rydl0gc2VjdGlvbiBpbiB3aW5lLmNvbmYgd2l0aCBhIHBwZGZpbGUgdmFsdWUKCXNwZWNpZnlpbmcgdGhlIHBhdGggYW5kIG5hbWUgb2YgdGhlIFBQRCBmaWxlLgoKCSogZGxscy9jb21jdGwzMi91cGRvd24uYywgaW5jbHVkZS91cGRvd24uaDoKCVN5bHZhaW4gU3QtR2VybWFpbiA8c3lsdmFpbkBtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGF0aW9uIG9mIHRoZSB1cGRvd24gYnVkZHkgd2luZHByb2Mgc3ViY2xhc3NpbmcgZm9yIHRoZQoJaGFuZGxpbmcgb2Yga2V5Ym9hcmQgdXAgYW5kIGRvd24gYXJyb3cuCgoJKiBERVZFTE9QRVJTLUhJTlRTOiBKaW0gQXN0b24gPGppbWFAY29yZWwuY2E+CglVcGRhdGVkIGRvY3VtZW50YXRpb24gdG8gcmVmbGVjdCByZW5hbWVkIGhlYWRlci4KCgkqIG1pc2Mvd2luc29jay5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUFkZGVkIG1pc3NpbmcgaW5jbHVkZSBuZXRpbmV0L3RjcC5oLCBmb3IgVENQX05PREVMQVkuCgoJKiBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jOiBMdWMgVG91cmFuZ2VhdSA8bHVjQG1hY2FkYW1pYW4uY29tPgoJR2V0SWNvbiBidWcgZml4LgoKVGh1IEp1bCAxNSAxNjowOTowNSAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS9tb2R1bGUuaCwgbG9hZGVyL25lL21vZHVsZS5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQWRkIFdJTkFQSSBmb3IgRW50cnlBZGRyUHJvYy4KCgkqIG1pc2MvZGRlbWwuYzogS2VpdGggTWF0dGhld3MgPGtlaXRoX21Ac3dlZW5leS5kZW1vbi5jby51az4KCU1pbm9yIGJ1ZyBmaXhlcyBpbiBEZGVOYW1lU2VydmljZSwgYWxzbyBjaGFuZ2VzIHRvIG1vdmUgdG93YXJkcwoJcHJvY2Vzcy1zYWZlIGNvZGUuCgoJKiBjb250cm9scy9idXR0b24uYzogRGVubmlzIEJqfHJrbHVuZCA8ZGVubmlzYkBjcy5jaGFsbWVycy5zZT4KCVdpbjl4IGxvb2sgJiBmZWVsIG9uIGJ1dHRvbnMgYW5kIGEgZml4IGZvciBvd25lcmRyYXduIGJ1dHRvbnMKCShiYWNrZ3JvdW5kIHNldCB0byBDT0xPUl9CVE5GQUNFKS4KCgkqIGlmMTYzMi9rZXJuZWwuc3BlYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJR2xvYmFsU21hcnRQYWdlVW5sb2NrKCkgc3R1YiBhZGRlZC4KCgkqIG1pc2NlbXUvQXR0aWMvZW11bGF0ZS5jLCBtaXNjZW11L01ha2VmaWxlLmluLCBtaXNjZW11L21haW4uYywgcmVsYXkzMi9NYWtlZmlsZS5pbiwgdG9vbHMvYnVpbGQuYywgTWFrZS5ydWxlcy5pbiwgTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL3dpbjg3ZW0vLmN2c2lnbm9yZSwgZGxscy93aW44N2VtL01ha2VmaWxlLmluLCBkbGxzL3dpbjg3ZW0vZW11bGF0ZS5jLCBncmFwaGljcy93aW4xNmRydi9NYWtlZmlsZS5pbiwgaWYxNjMyL01ha2VmaWxlLmluLCBtZW1vcnkvaW5zdHIuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJVXNlIHBvc2l0aW9uLWluZGVwZW5kZW50IGNvZGUgaW4gYXNzZW1ibHkgZ2x1ZSB3aGVuIGJ1aWxkaW5nIC5zby4KCUluY2x1ZGUgaWYxNjMyLyBhbmQgZ3JhcGhpY3Mvd2luMTZkcnYvIGludG8gV2luZUxpYi4KCU1vdmUgbWlzY2VtdS9lbXVsYXRlLmMgaW50byBkbGxzL3dpbjg3ZW0vLgoKCSogaW5jbHVkZS9tdWx0aW1lZGlhLmg6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQ2hhbmdlZCB3YXkgb2YgYWxsb2NhdGlvbiBvcGVuIG1jaSBkcml2ZXJzIChhcnJheSA9PiBsaXN0KTsgdGhpcyBsaXN0CglpcyBub3cgc3RvcmVkIG9uIGEgcGVyIHByb2Nlc3MgYmFzaXMuCgoJKiBtdWx0aW1lZGlhL21jaWFuaW0uYywgbXVsdGltZWRpYS9tY2lhdmkuYywgbXVsdGltZWRpYS9tY2ljZGEuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJUmVtb3ZlZCBmaXhlZCBzaXplIGFycmF5IHRvIHN0b3JlIHNwZWNpZmljIGRhdGEgKG5vdyB1c2luZwoJbWNpKFNldHxHZXQpRHJpdmVyRGF0YSB0byBzdG9yZSBzcGVjaWZpYyBkYXRhKS4KCU1ha2UgdXNlIG9mIGRlZmF1bHQgZGVidWd0b29scy5oIGNoYW5uZWwuCglBZGRlZCBDQUxMQkFDSyBhdHRyaWJ1dGUgdG8gRHJpdmVyUHJvYy4KCgkqIG11bHRpbWVkaWEvbWNpLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQ2hhbmdlZCB3YXkgb2YgYWxsb2NhdGlvbiBvcGVuIG1jaSBkcml2ZXJzIChhcnJheSA9PiBsaXN0KS4KCUZpcnN0IHZhbGlkIElEIGZvciBtY2kgZGV2aWNlcyBpcyBub3cgMSAoc29tZSBwcm9ncyB3ZXJlIHRlc3RpbmcgdGhpcwoJdmFsdWUpLgoJU3RhcnRlZCBpbXBsZW1lbnRpbmcgbWNpIGNvbW1hbmQgdGFibGUgcmVzb3VyY2VzLgoJSGFuZGxlZCBjbG9zaW5nIG9uIE1DSV9BTEwuCgoJKiBtdWx0aW1lZGlhL21jaW1pZGkuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglSZW1vdmVkIGZpeGVkIHNpemUgYXJyYXkgdG8gc3RvcmUgc3BlY2lmaWMgZGF0YSAobm93IHVzaW5nCgltY2koU2V0fEdldClEcml2ZXJEYXRhIHRvIHN0b3JlIHNwZWNpZmljIGRhdGEpLgoJRGVmZXJyZWQgb3BlbmluZyBvZiBsb3ctbGV2ZWwgZGV2aWNlIHVudGlsIHBsYXkgaXMgcmVxdWVzdGVkLgoKCSogbXVsdGltZWRpYS9BdHRpYy9tY2lzdHJpbmcuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCByZXR1cm4gdmFsdWUgZm9yICdvcGVuJyBjb21tYW5kLgoJQ2hhbmdlZCB3YXkgb2YgYWxsb2NhdGlvbiBvcGVuIG1jaSBkcml2ZXJzIChhcnJheSA9PiBsaXN0KS4KCgkqIG11bHRpbWVkaWEvbWNpd2F2ZS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVJlbW92ZWQgZml4ZWQgc2l6ZSBhcnJheSB0byBzdG9yZSBzcGVjaWZpYyBkYXRhIChub3cgdXNpbmcKCW1jaShTZXR8R2V0KURyaXZlckRhdGEgdG8gc3RvcmUgc3BlY2lmaWMgZGF0YSkuCglGaXhlZCBtbWlvIGNodW5rIGxvb2t1cCBvbiBvZGQgc2l6ZSAnZm10ICcgY2h1bmtzLgoKCSogbXVsdGltZWRpYS9taWRpLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJVW5pZm9ybWl6ZWQgdXNlIG9mIGZkIHRvIG1pZGkgZGV2aWNlLgoJTm93IGFsbG9jYXRpbmcgbWVtb3J5IG9uIHN5c3RlbSBoZWFwLgoJRml4ZWQgYnVnIHdoZW4gc3RvcHBpbmcgYWxsIG5vdGVzLgoKCSogbXVsdGltZWRpYS9tbXN5c3RlbS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUNvc21ldGljIGZpeGVzLgoJQ2hhbmdlZCB3YXkgb2YgYWxsb2NhdGlvbiBvcGVuIG1jaSBkcml2ZXJzIChhcnJheSA9PiBsaXN0KS4KCVN0YXJ0ZWQgaW1wbGVtZW50aW5nIG1jaSBjb21tYW5kIHRhYmxlIHJlc291cmNlcy4KCgkqIG11bHRpbWVkaWEvdGltZS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCU5vIGxvbmdlciBjYWxsaW5nIG1tIHRpbWVycyBjYWxsYmFja3Mgd2l0aCBtbSB0aW1lciBjcml0IHNlY3QgbG9ja2VkLgoKCSogbWlzYy9yZWdpc3RyeS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUVSUk9SX01PUkVfREFUQSByZXF1aXJlcyB0byB3cml0ZSB0aGUgbmVlZGVkIG51bWJlciBvZiBieXRlcyBpbnRvIHRoZQoJbHBjY2hYIHZhbHVlICh2ZXJpZmllZCBhZ2FpbnN0IE5UMy41MSBhZHZhcGkzMi5kbGwpLgoKCSogaW5jbHVkZS93aW5udC5oLCB3aW4zMi9kZXZpY2UuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJRml4ZWQgc29tZSBDT05URVhUODYgdnMuIENPTlRFWFQgbWlzbWF0Y2hlcy4KCgkqIGluY2x1ZGUvbmVleGUuaCwgbG9hZGVyL25lL3NlZ21lbnQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWRkZWQgc3VwcG9ydCBmb3IgMzItYml0IE5FIGNvZGUgc2VnbWVudHMuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6IEFsZXggUHJpZW0gPGFsZXhwQHNjaS5rdW4ubmw+CglGaXggYSBoYW5nIHdoZW4gd2UgcHJvY2VzcyBXTV9TVFlMRUNIQU5HRUQuCglTbWFsbCBvcHRpbWl6YXRpb24gaW4gVFJFRVZJRVdfRHJhd0l0ZW0uCglGaXggZGVidWdnaW5nIGNyYXNoIGluIFRSRUVWSUVXX0V4cGFuZC4KCk1vbiBKdWwgMTIgMTM6NDY6MzggMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvc2hlbGwzMi9waWRsLmg6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgbWlzc2luZyBwcm90b3R5cGUgZm9yIElMRmluZENoaWxkKCkuCgoJKiBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmMsIGxvYWRlci9kb3MvZG9zbW9kLmMsIG1pc2MvbmV0d29yay5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglDb21waWxlciB3YXJuaW5ncyBmaXguCgoJKiBtaXNjL2NvbW0uYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglEdW1iIGZpeGVzLgoKCSogaWYxNjMyL2tlcm5lbC5zcGVjLCBsb2FkZXIvdGFzay5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglGaXhlZCBidWdzIGludHJvZHVjZWQgYnkgJ3JlZ2lzdGVyJyBhbmQgJ3JldHVybicgZnVuY3Rpb24gY2hhbmdlcy4KCgkqIGdyYXBoaWNzL2RkcmF3LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgRGlyZWN0RHJhd1N1cmZhY2U6OkZsaXAsIGRvIG5vdCBjaGFuZ2UgZmxhZ3MsIGV4Y2hhbmdlIHRoZSBsb3cKCWxldmVsIHBoeXNpY2FsIHN1cmZhY2VzICh2ZXJpZmllZCBmb3IgWExJQiB3aXRoIFdDIFByb3BoZWN5KS4KClN1biBKdWwgMTEgMTc6MjA6MDYgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3Mva2V5Ym9hcmQuYywgd2luZG93cy91c2VyLmMsIHdpbmRvd3Mvd2luLmMsIG1pc2Mvc3lzdGVtLmMsIG1pc2MvdG9vbGhlbHAuYywgbWlzYy93MzJzeXMuYywgdG9vbHMvYnVpbGQtc3BlYy50eHQsIHRvb2xzL2J1aWxkLmMsIHdpbjMyL2tlcm5lbDMyLmMsIG1lbW9yeS9nbG9iYWwuYywgbWVtb3J5L2xvY2FsLmMsIGluY2x1ZGUvYnVpbHRpbjE2LmgsIGxvYWRlci9uZS9tb2R1bGUuYywgbG9hZGVyL3Rhc2suYywgaWYxNjMyL2tlcm5lbC5zcGVjLCBpZjE2MzIva2V5Ym9hcmQuc3BlYywgaWYxNjMyL3N5c3RlbS5zcGVjLCBpZjE2MzIvdGh1bmsuYywgaWYxNjMyL3Rvb2xoZWxwLnNwZWMsIGlmMTYzMi91c2VyLnNwZWMsIGlmMTYzMi93MzJzeXMuc3BlYywgaWYxNjMyL2R1bW15LmM6CglUYWtlIGFkdmFudGFnZSBvZiB0aGUgbmV3IHJlZ2lzdGVycyBzYXZlZCBpbiB0aGUgU1RBQ0sxNkZSQU1FIHRvIHR1cm4KCXNvbWUgJ3JlZ2lzdGVyJyBmdW5jdGlvbnMgaW50byBub3JtYWwgZnVuY3Rpb25zLgoJUmVtb3ZlZCB0aGUgZmV3IHJlbWFpbmluZyAncmV0dXJuJyBmdW5jdGlvbnMgdG8gc2ltcGxpZnkgcmVsYXkKCWhhbmRsaW5nLgoKCSogaXBjL0F0dGljL2hhc2hfdGVzdC5jLCBpcGMvQXR0aWMvcnVuX3Rlc3RzLCBpcGMvQXR0aWMvc2htX2Jsb2NrLmMsIGlwYy9BdHRpYy9zaG1fZnJhZ21lbnQuYywgaXBjL0F0dGljL3NobV9mcmFnbWVudF90ZXN0LmMsIGlwYy9BdHRpYy9zaG1fbWFpbl9ibGsuYywgaXBjL0F0dGljL3NobV9zZW1hcGguYywgaXBjL0F0dGljL3NobV9zZW1hcGhfdGVzdC5jLCBpcGMvQXR0aWMvd2luZV90ZXN0X3N0dWIuYywgbG9hZGVyL3NpZ25hbC5jLCBsb2FkZXIvdGFzay5jLCBtZW1vcnkvYXRvbS5jLCBtZW1vcnkvZ2xvYmFsLmMsIG1pc2MvZGRlbWwuYywgd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIE1ha2VmaWxlLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgaW5jbHVkZS9BdHRpYy9kZGVfYXRvbS5oLCBpbmNsdWRlL0F0dGljL2RkZV9tZW0uaCwgaW5jbHVkZS9BdHRpYy9kZGVfcHJvYy5oLCBpbmNsdWRlL0F0dGljL3NobV9ibG9jay5oLCBpbmNsdWRlL0F0dGljL3NobV9mcmFnbWVudC5oLCBpbmNsdWRlL0F0dGljL3NobV9tYWluX2Jsay5oLCBpbmNsdWRlL0F0dGljL3NobV9zZW1hcGguaCwgaW5jbHVkZS9kZGUuaCwgaXBjL0F0dGljLy5jdnNpZ25vcmUsIGlwYy9BdHRpYy9NYWtlZmlsZS5pbiwgaXBjL0F0dGljL1JFQURNRSwgaXBjL0F0dGljL1RFU1RfRlJBR01FTlQuc3RkLCBpcGMvQXR0aWMvYml0X2FycmF5LmMsIGlwYy9BdHRpYy9iaXRfYXJyYXlfdGVzdC5jLCBpcGMvQXR0aWMvZGRlLnRleCwgaXBjL0F0dGljL2RkZV9hdG9tLmMsIGlwYy9BdHRpYy9kZGVfYXRvbV90ZXN0LmMsIGlwYy9BdHRpYy9kZGVfbWVtLmMsIGlwYy9BdHRpYy9kZGVfbWVtX3Rlc3QuYywgaXBjL0F0dGljL2RkZV9wcm9jLmMsIGlwYy9BdHRpYy9kZGVfcHJvY190ZXN0LmMsIGlwYy9BdHRpYy9nZW5lcmljX2hhc2guYywgaXBjL0F0dGljL2dlbmVyaWNfaGFzaC5oOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglSZW1vdmVkIHRoZSBvbGQsIGhpc3RvcmljYWwgYW5kIG5vIGxvbmdlciB3b3JraW5nIElQQyBzdXBwb3J0LgoKCSogaWYxNjMyLy5jdnNpZ25vcmUsIGlmMTYzMi9NYWtlZmlsZS5pbiwgaWYxNjMyL2J1aWx0aW4uYywgaWYxNjMyL3JlbGF5LmMsIGlmMTYzMi9zbm9vcC5jLCBpZjE2MzIvdGh1bmsuYywgaW5jbHVkZS9idWlsdGluMTYuaCwgaW5jbHVkZS9jYWxsYmFjay5oLCBpbmNsdWRlL21vZHVsZS5oLCBpbmNsdWRlL3N0YWNrZnJhbWUuaCwgbWlzYy9BdHRpYy9jYWxsYmFjay5jLCBtaXNjZW11L21haW4uYywgcmVsYXkzMi8uY3ZzaWdub3JlLCByZWxheTMyL01ha2VmaWxlLmluLCBzY2hlZHVsZXIvc3lzbGV2ZWwuYywgdG9vbHMvYnVpbGQuYywgTWFrZS5ydWxlcy5pbjoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJTW9kdWxhcml6ZWQgQ2FsbEZyb20vVG8xNiByb3V0aW5lcy4gIEFkYXB0ZWQgZGVwZW5kZW50IHJvdXRpbmVzLAoJMTYtYml0IHNub29wL3JlbGF5IGRlYnVnZ2luZywgYW5kIG1ha2UgcnVsZXMuCgoJKiB3aW5kb3dzL21lc3NhZ2UuYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglSZXZlcnQgbGFzdCBjaGFuZ2UgaW4gd2luZG93IGFjdGl2YXRpb24gb24gbW91c2UgY2xpY2suCgoJKiBtZW1vcnkvZ2xvYmFsLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglGaXhlZCBhIGNhc2Ugd2hlbiBHbG9iYWxTaXplIGRpZCBub3QgcmV0dXJuIHplcm8gYWZ0ZXIgYW4gZXJyb3IuCgpTYXQgSnVsIDEwIDEzOjE2OjU2IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzZXJ2ZXIvc29ja2V0LmM6IEhvd2FyZCBBYnJhbXMgPGhvd2FyZEBjcy5ucHMubmF2eS5taWw+CglSZW5hbWVkIHN0YXRpYyBnbG9iYWwgdmFyaWFibGUgJ2lvdmVjJyB0byAnbXlpb3ZlYycuCgoJKiB3aW5kb3dzL2RpbnB1dC5jLCBtZW1vcnkvdmlydHVhbC5jLCBtaXNjL3JlZ2lzdHJ5LmMsIG1pc2Mvd2luc29jay5jLCBtdWx0aW1lZGlhL2pveXN0aWNrLmMsIHNjaGVkdWxlci9jbGllbnQuYywgc2NoZWR1bGVyL3RocmVhZC5jLCBzZXJ2ZXIvY29uc29sZS5jLCBzZXJ2ZXIvZmlsZS5jLCBzZXJ2ZXIvcGlwZS5jLCBzZXJ2ZXIvdGhyZWFkLmMsIHdpbjMyL2NvbnNvbGUuYywgd2luMzIvZGV2aWNlLmMsIHdpbjMyL2ZpbGUuYywgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRlYnVnZ2VyL2JyZWFrLmMsIGRlYnVnZ2VyL21zYy5jLCBkZWJ1Z2dlci9zb3VyY2UuYywgZGVidWdnZXIvc3RhYnMuYywgZmlsZXMvZGlyZWN0b3J5LmMsIGZpbGVzL2Rvc19mcy5jLCBmaWxlcy9maWxlLmMsIGluY2x1ZGUvY29uZmlnLmguaW4sIGluY2x1ZGUvbXVsdGltZWRpYS5oLCBpbmNsdWRlL3dpbmRlZi5oLCBsb2FkZXIvcGVfaW1hZ2UuYzoKCUhvd2FyZCBBYnJhbXMgPGhvd2FyZEBjcy5ucHMubmF2eS5taWw+CglBZGRlZCBjaGVja3MgZm9yIHN5cy9lcnJuby5oLCBzeXMvc2lnbmFsLmggYW5kIHN5cy9tbWFuLmguCgoJKiB3aW5kb3dzL2RpYWxvZy5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUNyZWF0ZSBkaWFsb2cgd2luZG93IHVzaW5nIENyZWF0ZVdpbmRvd0V4MTYvVyBkZXBlbmRpbmcgb24gdGVtcGxhdGUKCXR5cGUsIG5vdCBkaWFsb2cgcHJvY2VkdXJlIHR5cGUuCgoJKiBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmM6IEZyYW5jb2lzIEJvaXN2ZXJ0IDxmcmFuY29pc0BtYWNhZGFtaWFuLmNvbT4KCU1hZGUgSVNoZWxsRm9sZGVyOjpmblBhcnNlRGlzcGxheU5hbWUgcmV0dXJuIGEgcmVsYXRpdmUgcGlkbC4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzIuaCwgZGxscy9jb21jdGwzMi9tb250aGNhbC5jLCBkbGxzL2NvbWN0bDMyL3JzcmMucmMsIGluY2x1ZGUvY29tbWN0cmwuaCwgaW5jbHVkZS9tb250aGNhbC5oOgoJQWxleCBQcmllbSA8YWxleHBAc2NpLmt1bi5ubD4KCUZpcnN0IHRyeSBhdCB0aGUgbW9udGggY2FsZW5kYXIgY29tbW9uIGNvbnRyb2wuIE1haW4gZmVhdHVyZXMKCWJhc2ljYWxseSBPSy4KCgkqIGdyYXBoaWNzL3BzZHJ2L2luaXQuYywgaW5jbHVkZS93aW5zcG9vbC5oLCBkbGxzL3dpbnNwb29sL2luZm8uYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUltcGxlbWVudGVkIEdldFByaW50ZXJBIGFuZCBHZXRQcmludGVyRHJpdmVyQS4KCgkqIGNvbnRyb2xzL2J1dHRvbi5jOiBMdWMgVG91cmFuZ2VhdSA8bHVjQG1hY2FkYW1pYW4uY29tPgoJQWRkZWQgQk5fQ0xJQ0tFRCBub3RpZmljYXRpb24gaW4gV01fU0VURk9DVVMuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmMsIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYywgZGxscy9zaGVsbDMyL3NobG1lbnUuYywgZGxscy9zaGVsbDMyL3NobHZpZXcuYywgZGxscy9zaGVsbDMyL3NocmVzLnJjLCBpbmNsdWRlL2RvY29iai5oOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglTbWFsbCBmaXhlcy4KCgkqIHJlbGF5MzIvQXR0aWMvc2hlbGwzMi5zcGVjLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJSW1wbGVtZW50ZWQgU3RyVG9PbGVTdHJOLgoJRml4ZWQgY3Jhc2ggaW4gU2hlbGxFeGVjdXRlRXguCglJbXBsZW1lbnRlZCBTSFJlZ09wZW5LZXlBLCBTSFJlZ1F1ZXJ5VmFsdWVFeEEsIFN0clRvT2xlU3RyW0F8V10uCglTdHVicyBmb3IgRG9FbnZpcm9ubWVudFN1YnN0W0F8V10sIFBhdGhQcm9jZXNzQ29tbWFuZFtBfFddLgoKCSogZGxscy9zaGVsbDMyL01ha2VmaWxlLmluLCBkbGxzL3NoZWxsMzIvbWVtb3J5c3RyZWFtLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUlTdHJlYW0gaW50ZXJmYWNlIGZvciBmaWxlIGFjY2Vzcy4KCgkqIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmg6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUZpeGVkIGNyYXNoIGR1cmluZyBzZWNvbmQgRExMX1BST0NFU1NfREVUQUNIIGlmIHRoZSBkbGwKCXJlZmNvdW50IHJlYWNoZWQgemVybyBhZnRlciB0aGUgc2Vjb25kIG9uZSAobWVtb3J5IGZyZWVkIHR3aWNlKS4KCgkqIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9waWRsLmg6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCVNvbWUgbW9yZSBwaWRsLXR5cGVzLgoJSW1wbGVtZW50YXRpb24gb2YgSUxJc1BhcmVudC4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJQ29tcGxldGVseSByZXdyaXR0ZW4uIElQZXJzaXN0U3RyZWFtIGludGVyZmFjZSBpbXBsZW1lbnRlZC4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbG9sZS5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglETExHZXRDbGFzc09iamVjdC9DbGFzc2ZhY3Rvcnk6IGNyZWF0ZSBvYmplY3RzIGJ5IENMU0lEIG5vdCBJSUQuCgoJKiBtaXNjL21haW4uYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IGV4aXQoKSByZXBsYWNlZCBieSBFeGl0UHJvY2VzcygpLgoKCSogbWVtb3J5L2xvY2FsLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBjb3JyZWN0bHkgY29wZSB3aXRoIGVuZCA+IDB4ZmZmZS4KCgkqIGxpYnJhcnkvd2luZXN0dWIuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQ2FsbCBFeGl0UHJvY2VzcygpIGFmdGVyIFdpbk1haW4oKSByZXR1cm5zLgoKCSogbG9hZGVyL25lL21vZHVsZS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglJbXByb3ZlZCBiZWhhdmlvdXIgb2YgR2V0TW9kdWxlSGFuZGxlMTYgdy5yLnQgZHVtbXkgbW9kdWxlcy4KCURvbid0IHRyeSB0byBjYWxsIFdFUCBvZiBkdW1teSBtb2R1bGVzIGluIEZyZWVMaWJyYXJ5MTYoKS4KCgkqIGluY2x1ZGUvd2lucmVnLmgsIG1pc2MvcmVnaXN0cnkuYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUFkZGVkIGBjb25zdCdzIHRvIHNvbWUgcmVnaXN0cnkgQVBJIGZ1bmN0aW9ucy4KCgkqIHdpbmVkZWZhdWx0LnJlZzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglBZGRlZCBhIGNvdXBsZSBvZiBEaXJlY3RYIENMU0lEIGVudHJpZXMuIFRoaXMgbWFrZXMgVW5yZWFsIGNvbXBsZXRlbHkKCWluZGVwZW5kZW50IG9mIGEgd2luZG93cyBpbnN0YWxsYXRpb24uCgoJKiBvbGUvb2xlMm5scy5jOiBEYXZlIFBpY2tsZXMgPGRhdmVwQG51Z2F0ZS5kZW1vbi5jby51az4KCUdldFRpbWVGb3JtYXQoKSBzaG91bGQgcmV0dXJuIExvY2FsVGltZSBub3QgU3lzdGVtVGltZS4KCgkqIHByb2dyYW1zL3djbWQvQ2hhbmdlTG9nLCBwcm9ncmFtcy93Y21kL1JFQURNRSwgcHJvZ3JhbXMvd2NtZC9iYXRjaC5jLCBwcm9ncmFtcy93Y21kL2J1aWx0aW5zLmMsIHByb2dyYW1zL3djbWQvZGlyZWN0b3J5LmMsIHByb2dyYW1zL3djbWQvd2NtZC5oLCBwcm9ncmFtcy93Y21kL3djbWRtYWluLmMsIHByb2dyYW1zL3djbWQvd2NtZHJjLnJjOgoJRGF2ZSBQaWNrbGVzIDxkYXZlcEBudWdhdGUuZGVtb24uY28udWs+CglGT1IgYW5kIElGIGNvbW1hbmRzIGFkZGVkLgoJTU9WRSBjb21tYW5kIGFkZGVkLCBidXQgbm8gd2lsZGNhcmQgc3VwcG9ydC4KCVJlZGlyZWN0aW9uIGFkZGVkLgoJRml4ZWQgVElNRSAod2FzIHJlcG9ydGluZyBpbiBHTVQpLgoJTW9yZSBoZWxwIHRleHQuCgoJKiBkbGxzL2NvbWN0bDMyL3RhYi5jOiBBYmV5IEdlb3JnZSA8YWJleUBtYWNhZGFtaWFuLmNvbT4KCVNvbWV0aW1lcyB0aGUgdGV4dCBvbiBhIHRhYiBjb250cm9sIGdvdCB0cnVuY2F0ZWQuCgoJKiBjb250cm9scy9jb21iby5jOiBBYmV5IEdlb3JnZSA8YWJleUBtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIHRoZSBoZWlnaHQgb2YgdGhlIGRyb3BwZWQgbGlzdCB3aGVuIHRoZXJlIGFyZSBmZXcgaXRlbXMgaW4gdGhlCglsaXN0LgoKCSogaW5jbHVkZS9tZXNzYWdlLmgsIGluY2x1ZGUvdHR5ZHJ2LmgsIGluY2x1ZGUveDExZHJ2LmgsIHNjaGVkdWxlci9zeW5jaHJvLmMsIHdpbmRvd3MvZXZlbnQuYywgd2luZG93cy90dHlkcnYvZXZlbnQuYywgd2luZG93cy93aW5wb3MuYywgd2luZG93cy94MTFkcnYvZXZlbnQuYywgd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYywgd2luZG93cy94MTFkcnYvbW9uaXRvci5jLCB3aW5kb3dzL3gxMWRydi93bmQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJUmVtb3ZlZCBhbGwgRVZFTlRfU3luY2hyb25pemUoIEZBTFNFICkgY2FsbHM7IHVzZSBhIHBlcmlvZGljIGNhbGxiYWNrCgljYWxsaW5nIFhGbHVzaCgpIGluc3RlYWQuCgoJKiBpbmNsdWRlL3BzZHJ2LmgsIGdyYXBoaWNzL3BzZHJ2L01ha2VmaWxlLmluLCBncmFwaGljcy9wc2Rydi9iaXRibHQuYywgZ3JhcGhpY3MvcHNkcnYvYml0bWFwLmMsIGdyYXBoaWNzL3BzZHJ2L2JydXNoLmMsIGdyYXBoaWNzL3BzZHJ2L2luaXQuYywgZ3JhcGhpY3MvcHNkcnYvcHMuYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUFkZGVkIHBhdHRlcm5lZCBicnVzaGVzIChsZXZlbCAyIFBvc3RTY3JpcHQgb25seSkuCglTaW1wbGUgUGF0Qmx0IGZvciBQQVRDT1BZLCBXSElURU5FU1MgYW5kIEJMQUNLTkVTUy4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzogQWxleCBQcmllbSA8YWxleHBAc2NpLmt1bi5ubD4KCUltcGxlbWVudGF0aW9uIG9mIFRWTV9TT1JUQ0hJTERSRU4uIE1hc3NhZ2VkIFRWTV9TT1JUQ0hJTERSRU5DQiBhIGJpdAoJdG8gdXNlIHRoZSBzYW1lIGNvZGUgcGF0aC4KCgkqIGxvYWRlci90YXNrLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJRml4IEluaXRUYXNrKCkgdG8gd29yayBpZiBER1JPVVAgd2FzIG1hbnVhbGx5IHJlc2l6ZWQuCgoJKiBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmMsIHJlbGF5MzIvQXR0aWMvYWR2YXBpMzIuc3BlYzoKCUlhbiBTY2htaWR0IDxpcnNtYW5AaWFnLm5ldD4KCUFkZGVkIHN0dWIgZm9yIFNldFRocmVhZFRva2VuKCksIHJlcXVpcmVkIGJ5IE9mZmljZSAyMDAwLgoKCSogaW5jbHVkZS9jb21tZGxnLmg6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogQ09NTURMRyBob29rIHByb2NlZHVyZXMgd2VyZSBub3QgQ0FMTEJBQ0suCgoJKiBvbGUvc3RnX3N0cmVhbS5jOiBUaHV5IE5ndXllbiA8dGh1eUBtYWNhZGFtaWFuLmNvbT4KCUl0IGlzIHBvc3NpYmxlIGZvciBhIHN0cmVhbSB0byBoYXZlIGJvdGggc21hbGwgYmxvY2sgYW5kIGJpZyBibG9jawoJY2hhaW4gYXMgTlVMTC4KCgkqIGxvYWRlci9uZS9tb2R1bGUuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglNYWRlIHN0cmluZyBjb21wYXJlIGNhc2UgaW5zZW5zaXRpdmUgaW4gR2V0TW9kdWxlSGFuZGxlMTYoKSBhcyBhCglxdWljayBmaXggZm9yIFdpbldvcmQgNi4KCgkqIG1pc2MvbmV0d29yay5jLCByZWxheTMyL21wci5zcGVjOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglBZGRlZCBzdHViIGZvciBXTmV0R2V0VW5pdmVyc2FsTmFtZVtBfFddLgoKCSogZ3JhcGhpY3MveDExZHJ2L3BhbGV0dGUuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJRml4ZWQgY3Jhc2ggZHVlIHRvIGludmFsaWQgR0RJX09iai4KCgkqIG9iamVjdHMvbWV0YWZpbGUuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglGaXhlZCBjcmFzaCBkdWUgdG8gaW52YWxpZCBwb2ludGVyLgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpTdW4gSnVsICA0IDE2OjA5OjIwIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzLyouYywgb2xlLyouYywgZmlsZXMvKi5jLCBtdWx0aW1lZGlhLyouYzoKCUNvbnZlcnRlZCB0byB0aGUgbmV3IGRlYnVnIGludGVyZmFjZSwgdXNpbmcgc2NyaXB0IHdyaXR0ZW4gYnkgUGF0cmlrCglTdHJpZHZhbGwuCgoJKiBpbmNsdWRlL3dpbmRlZi5oLCBpbmNsdWRlL3dpbnJlZy5oLCB0b29scy9tYWtlX1gxMXdyYXBwZXJzLCB0c3gxMS90c194Zjg2dm1vZGUuYywgTWFrZWZpbGUuaW4sIGdyYXBoaWNzL2RkcmF3LmMsIGluY2x1ZGUvYmFzZXRzZC5oLCBpbmNsdWRlL250ZGVmLmgsIGluY2x1ZGUvdHNfeGY4NnZtb2RlLmgsIGluY2x1ZGUvd2luYmFzZS5oOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglTdGFydGVkIG9uIGFuIGltcGxlbWVudGF0aW9uIG9mIFdpbjY0IGZvciB1c2Ugb24gNjQgYml0IHBsYXRmb3Jtcy4KCgkqIHdpbmRvd3Mvbm9uY2xpZW50LmM6IE5vb21lbiBIYW16YSA8bm9vbWVuQG1hY2FkYW1pYW4uY29tPgoJV2luZG93cyBzaG91bGQgYmUgYWN0aXZhdGVkIGluIHRoZXNlIGNhc2VzOgoJMS0gd2hlbiB3ZSBjbGljayBvbiBub24gYWN0aXZlIHdpbmRvdy4KCTItIHdoZW4gd2UgY2FuY2VsIGEgbW92aW5nIG9yIHJlc2l6aW5nIG9mIGEgbm9uIGFjdGl2ZSB3aW5kb3cuCgoJKiBkb2N1bWVudGF0aW9uL2Rpc3RyaWJ1dG9yczoKCU1hcmN1cyBNZWlzc25lciA8TWFyY3VzLk1laXNzbmVyQGNhbGRlcmEuZGU+CglBZGRlZCBzYW1wbGUgd2luZS5jb25mLgoKCSogZ3JhcGhpY3MvZGRyYXcuYywgaW5jbHVkZS9rZXlib2FyZC5oLCBpbmNsdWRlL3R0eWRydi5oLCBpbmNsdWRlL3gxMWRydi5oLCBvYmplY3RzL2RjLmMsIG9iamVjdHMvZ2Rpb2JqLmMsIHdpbmRvd3MvZGlucHV0LmMsIHdpbmRvd3MvdHR5ZHJ2L2luaXQuYywgd2luZG93cy90dHlkcnYva2V5Ym9hcmQuYywgd2luZG93cy94MTFkcnYvaW5pdC5jLCB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglNb3ZlZCBjb2RlIHRvIHRoZSBYMTEgZHJpdmVyLgoKCSogaW5jbHVkZS93aW51c2VyLmgsIGxvYWRlci9yZXNvdXJjZS5jLCByZWxheTMyL3VzZXIzMi5zcGVjOgoJSm9zaHVhIFRoaWVsZW4gPHRoaWVsZW5AbmV0cGVyc29uLm5ldD4KCUZpeGVkIERlc3Ryb3lBY2NlbGVyYXRvclRhYmxlIGFuZCBpbXBsZW1lbnRlZCBDcmVhdGVBY2NlbGVyYXRvclRhYmxlVy4KCgkqIHdpbmRvd3Mvd2luLmM6IFV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVdJTl9GaW5kV2luZG93OiB1c2UgR2V0RXhlcHRyKHBXbmQtPmhJbnN0YW5jZSkgZm9yIENMQVNTX0ZpbmRDbGFzc0J5QXRvbS4KCgkqIGNvbnRyb2xzL3Njcm9sbC5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUZpeGVkIGNoZWNrIGZvciB3aGV0aGVyIHRvIGNhbGwgU2V0V2luZG93UG9zIHdoZW4gc2hvd2luZyBhIHdpbmRvdwoJc2Nyb2xsIGJhci4KCgkqIG9sZS90eXBlbGliLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQ2hlY2sgZm9yIGNvbXBsZXRlIGxjaWQgb3IganVzdCB0aGUgcHJpbWFyeSBsYW5ndWFnZSBpZCBpbiB0aGUKCXJlZ2lzdHJ5IGxvb2t1cHMgKGZpeGVzIG9uZSBGaXJzdENsYXNzQ2xpZW50IDMyIHByb2JsZW0pLgoKCSogd2luZG93cy9tZXNzYWdlLmM6IFBlciDFbmdzdHL2bSA8cGFuZ0BtYm94MzA0LnN3aXBuZXQuc2U+CglGaXhlZCBhIHByb2JsZW0gd2l0aCBhcHBzIHRoYXQgb3ZlcnJpZGUgdGhlIGRlZmF1bHQgYmVoYXZpb3VyIG9uCglXTV9NT1VTRUFDVElWQVRFIG1lc3NhZ2UgKG1haW4gd2luZG93IHdhcyBub3QgYWN0aXZhdGVkKS4KCgkqIGxvYWRlci9wZV9yZXNvdXJjZS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVdoZW4gZW51bWVyYXRpbmcgcmVzb3VyY2UsIG9ubHkgdXNlIHRoZSBsb3dlciAzMSBiaXQgb2YgdGhlIG5hbWUgYXMKCXRoZSBvZmZzZXQgKGZvciB0aGUgaGlnaGVzdCBiaXQgaXMgJzEnKS4gU2hvdWxkIGZpeCB3aW5lLW5ldC8yNTcuCgoJKiByZWxheTMyL250ZGxsLnNwZWMsIHRvb2xzL3dyYy93cml0ZXJlcy5jLCBkbGxzL250ZGxsL3J0bC5jLCBtaXNjL3dzcHJpbnRmLmMsIG11bHRpbWVkaWEvbWNpbWlkaS5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlcyBmb3IgY29tcGlsZSBvbiBub24tSW50ZWwgcGxhdGZvcm1zLgoKCSogZGxscy9hZHZhcGkzMi9ldmVudGxvZy5jLCBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmMsIGRsbHMvYWR2YXBpMzIvc2VydmljZS5jLCBpbmNsdWRlL250ZGRrLmgsIGluY2x1ZGUvbnRzZWNhcGkuaCwgaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2luZGVmLmgsIGluY2x1ZGUvd2lubnQuaCwgaW5jbHVkZS93aW5yZWcuaCwgaW5jbHVkZS93aW5zdmMuaCwgaW5jbHVkZS93dHlwZXMuaDoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQvbW92ZWQvYWRkZWQgbWlzc2luZy93cm9uZyBmdW5jdGlvbiBwcm90b3R5cGVzLgoKCSogZGxscy9jb21tZGxnL2NkbGdfRGEucmMsIGRvY3VtZW50YXRpb24vc3RhdHVzL2ludGVybmF0aW9uYWxpc2F0aW9uLCBwcm9ncmFtcy9wcm9nbWFuL0RhLnJjLCByZXNvdXJjZXMvc3lzcmVzX0RhLnJjOgoJSGVucmlrIE9sc2VuIDxoZW5yaWtAaWFlc3RlLmRrPgoJQ2xlYW51cCBvZiB0aGUgRGFuaXNoIHN1cHBvcnQuCgoJKiB3aW5kb3dzL3dpbnBvcy5jOiBZdXhpIFpoYW5nIDx5dXhpekBjb3JlbC5jYT4KCUZpeCBhIGJ1ZyBpbiBTZXRXaW5kb3dQb3MgdG8gcHJldmVudCBwYXJlbnQgZnJvbSBlcmFzaW5nIGl0cyBjaGlsZAoJcGFpbnRpbmcgYXJlYSB3aGVuIHBhcmVudCB3aW5kb3cgYW5kIGNoaWxkIHdpbmRvdyBkb24ndCBoYXZlCglXU19DTElQQ0hJTERSRU4gYW5kIFdTX0NMSVBTSUJMSU5HUy4KCgkqIHdpbmRvd3MvZGVmd25kLmM6IFl1eGkgWmhhbmcgPHl1eGl6QGNvcmVsLmNhPgoJTWFrZSBkZWZ3bmRwcm9jIGVyYXNlIHRoZSBjb3JyZWN0IGxvY2F0aW9uLgoKU2F0IEp1bCAgMyAxNjowMTo0NCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogcmVsYXkzMi9jcnRkbGwuc3BlYywgd2luZG93cy9kaW5wdXQuYywgZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYywgZGxscy9jb21jdGwzMi90cmFja2Jhci5jLCBkbGxzL3ZlcnNpb24vcmVzb3VyY2UuYywgaWYxNjMyL3JlbGF5LmMsIGluY2x1ZGUvd2luLmgsIGxvYWRlci9lbGYuYywgbG9hZGVyL3BlX2ltYWdlLmMsIG1pc2MvY3J0ZGxsLmMsIG1pc2Mvc2hlbGwuYywgbXVsdGltZWRpYS9kc291bmQuYywgZGxscy9hZHZhcGkzMi9hZHZhcGkuYywgZGxscy9hZHZhcGkzMi9ldmVudGxvZy5jLCBkbGxzL2F2aWZpbDMyL2F2aWZpbGUuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJc29tZSBzbWFsbCBpbmNsdWRlIGZpeGVzLCBzb21lIGNoZWNrcyBmb3IgTlVMTCBwdHJzLAoJbG9hZGVyL2VsZi5jOiBmaXhlZCB0aGUgImxpYiIgaW5zZXJ0aW9uCgljcnRkbGw6IGFkZGVkIGZzb3BlbigpCglkaW5wdXQ6IHJldHVybiB0aGF0IHdlIGFyZSBhdHRhY2hlZC4KCgkqIGNvbnRyb2xzL2J1dHRvbi5jOiBSZXZlcnRlZCBwcmV2aW91cyBjaGFuZ2UuCgoJKiBjb250cm9scy9lZGl0LmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJQ2FuY2VsIHBlbmRpbmcgbm90aWZpY2F0aW9ucyB3aGVuIEVNX1NFVE1PRElGWSBpcyBjYWxsZWQuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6IEFsZXggUHJpZW0gPGFsZXhwQHNjaS5rdW4ubmw+CglGaXggYSBjcmFzaCB3aGVuIGRvaW5nIHNvcnRlZCBpbnNlcnRzIGF0IHRvcCBsZXZlbC4KCgkqIHdpbmRvd3Mvbm9uY2xpZW50LmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJUmV3b3JrZWQgbm9uY2xpZW50IGRyYXdpbmcgY29kZS4gV2luMzEgbG9vayBub3cgd29ya3MgbW9yZSBsaWtlIHJlYWwKCVdpbjMxLCBzbyBhcHBzIGxpa2UgRGVscGhpIDEuMCBubyBsb25nZXIgZ28gaW50byBpbmZpbml0ZSByZWN1cnNpb24KCWV0Yy4gRml4ZWQgYSBjb3VwbGUgb2YgYnVncyBpbiB3aW45NSBsb29rIHRvbywgYnV0IG5vdCBhcyB0aG9yb3VnaGx5CgkoZS5nLiBXU19FWF9XSU5ET1dFREdFIGlzIHN0aWxsIG5vdCBoYW5kbGVkKS4KCgkqIHdpbmRvd3Mvc3lzbWV0cmljcy5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVNNX0NbWFldRlJBTUUgaXMgQm9yZGVyV2lkdGggKyAxLgoKCSogbWVtb3J5L2xvY2FsLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBMb2NhbEluaXQgd2l0aCBzdGFydCA9PSAwIGFsd2F5cyBwbGFjZXMgaGVhcCBhdCBlbmQgb2Ygc2VnbWVudC4KCgkqIGxvYWRlci90YXNrLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBUQVNLX0NhbGxUb1N0YXJ0IGRpZG4ndCBwYXNzIGNvcnJlY3QgaEluc3RhbmNlIHRvIGFwcC4KCgkqIGxvYWRlci9kb3MvbW9kdWxlLmMsIGxvYWRlci9uZS9tb2R1bGUuYywgbG9hZGVyL3BlX2ltYWdlLmMsIGxvYWRlci90YXNrLmMsIG1pc2NlbXUvbWFpbi5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBpbmNsdWRlL21vZHVsZS5oLCBpbmNsdWRlL3Byb2Nlc3MuaCwgaW5jbHVkZS90YXNrLmgsIGxvYWRlci9tYWluLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCU9uIE5FIHByb2Nlc3MgY3JlYXRpb24sIG1vdmUgbWFqb3IgcGFydCBvZiBORSBFWEUgbW9kdWxlIGxvYWRpbmcgYW5kCglORSBpbnN0YW5jZSBjcmVhdGlvbiBpbnRvIHRoZSBjaGlsZCBwcm9jZXNzLgoKCSogZG9jdW1lbnRhdGlvbi9ndWk6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJV2luZG93IHN0eWxlIHVwZGF0ZXMuCgoJKiBsaWJ0ZXN0L2d1aXRlc3QuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglTb21lIGVuaGFuY2VtZW50cywgYW5kIHJlbW92YWwgb2YgQysrIGNvbnN0cnVjdHMuCgoJKiBncmFwaGljcy9kM2RkZXZpY2VzLmMsIGdyYXBoaWNzL2RkcmF3LmMsIGdyYXBoaWNzL2RkcmF3X3ByaXZhdGUuaDoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSW1wbGVtZW50ZWQgY2hhaW5zIG9mIHN1cmZhY2VzLiBUaGlzIGFsbG93cyBhbiB1bmxpbWl0ZWQgbnVtYmVyCglvZiBiYWNrYnVmZmVycywgYW5kIG90aGVyIGF0dGFjaGVkIHN1cmZhY2VzICh6YnVmZmVycywgYWxwaGEgYnVmZmVycywKCXdoYXRldmVyKS4KCgkqIGZpbGVzL2ZpbGUuYywgcmVsYXkzMi9rZXJuZWwzMi5zcGVjOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQWRkZWQgVW5sb2NrRmlsZUV4IHN0dWIuCgoJKiBkb2N1bWVudGF0aW9uL3N0YXR1cy9pbnRlcm5hdGlvbmFsaXNhdGlvbiwgcmVzb3VyY2VzL3N5c3Jlc19DYS5yYywgcmVzb3VyY2VzL3N5c3Jlc19Fcy5yYzoKCUpvc2UgTWFyY29zIExvcGV6IENhcmF2YWNhIDxqb3NlLmxvcGV6QHVwY25ldC51cGMuZXM+CglBZGRlZCBtaXNzaW5nIDYxNzYyIGVudHJ5IG9uIHN5c3RlbSByZXNvdXJjZXMgaW4gU3BhbmlzaCBhbmQKCUNhdGFsb25pYW4gbGFuZ3VhZ2VzLgoKCSogY29udHJvbHMvc2Nyb2xsLmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJTWFrZSBHZXRTY3JvbGxJbmZvIHJldHVybiBzY3JvbGwgcG9zIHdoZW4gcHJvZ3JhbSByZXF1ZXN0cyB0aHVtYiBwb3MKCW91dHNpZGUgZHJhZyBvcGVyYXRpb24uCgpTdW4gSnVuIDI3IDE1OjQwOjQ0IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBncmFwaGljcy9kM2RfcHJpdmF0ZS5oOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUNvbnZlcnRlZCB0byB0aGUgbmV3IGRlYnVnIGludGVyZmFjZS4KCgkqIHdpbjMyL2NvbnNvbGUuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglSZWFkQ29uc29sZUE6IHVzZSBpciBhcyBwb2ludGVyIHRvIChyZXErMSkuCgoJKiB3aW5kb3dzL3BhaW50aW5nLmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJUmVtb3ZlIHRoZSAgdmFsaWRhdGVkIGNoaWxkIGFyZWEgZnJvbSB0aGUgdXBkYXRlIHJlZ2lvbiBvZiBwYXJlbnQgZm9yCgl3aW5kb3dzIHdpdGhvdXQgV1NfQ0xJUENISUxEUkVOIHN0eWxlLgoKCSogZGVidWdnZXIvZGJfZGlzYXNtLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogR3JwOCBpbnN0cnVjdGlvbnMgaGF2ZSAqYnl0ZSogQml0T2Zmc2V0IG9wZXJhbmQuCgoJKiBtc2Rvcy92eGQuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IG1pc3NpbmcgV0lOQVBJcyBhZGRlZC4KCgkqIG9sZS9vbGUyLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJT2xlTWV0YUZpbGVQaWN0RnJvbUljb25BbmRMYWJlbDE2OiBzbGlnaHRseSBicm9rZW4sIHVzZSBMUE9MRVNUUjE2LgoKCSogZmlsZXMvZmlsZS5jOiBHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCVJldHVybiBFUlJPUl9ESVNLX0ZVTEwgZm9yIFdyaXRlRmlsZS4KCgkqIHByb2dyYW1zL2NtZGxndHN0L2NtZGxndHN0LmM6IEVyaWMgV2lsbGlhbXMgPGV3aWxsQG5jYWwudmVyaW8uY29tPgoJRml4ZWQgbWlzc2luZyByZXR1cm4gYWZ0ZXIgYWJvdXQgZGlhbG9nLgoKU2F0IEp1biAyNiAxOTowOToxMSAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbXNkb3MvKi5jLCBtaXNjLyouYywgbWlzY2VtdS8qLmMsIGdyYXBoaWNzLyouYzoKCUNvbnZlcnRlZCB0byB0aGUgbmV3IGRlYnVnIGludGVyZmFjZSwgdXNpbmcgc2NyaXB0IHdyaXR0ZW4gYnkgUGF0cmlrCglTdHJpZHZhbGwuCgoJKiBzY2hlZHVsZXIvdGhyZWFkLmMsIHRvb2xzL2J1aWxkLmMsIHdpbjMyL2RldmljZS5jLCB3aW4zMi9rZXJuZWwzMi5jLCB3aW4zMi9vcmRpbmFscy5jLCB3aW5kb3dzL3dpbi5jLCBsb2FkZXIvbmUvbW9kdWxlLmMsIGxvYWRlci9uZS9zZWdtZW50LmMsIG1lbW9yeS9nbG9iYWwuYywgbWVtb3J5L2xvY2FsLmMsIG1lbW9yeS9zZWxlY3Rvci5jLCBtaXNjL2NhbGxiYWNrLmMsIG1pc2MvZXJyb3IuYywgbWlzYy93aW5kZWJ1Zy5jLCBtaXNjZW11L2VtdWxhdGUuYywgbXNkb3MvZGV2aWNlcy5jLCBtc2Rvcy9kcG1pLmMsIG1zZG9zL2ludDA5LmMsIG1zZG9zL2ludDEwLmMsIG1zZG9zL2ludDExLmMsIG1zZG9zL2ludDEyLmMsIG1zZG9zL2ludDEzLmMsIG1zZG9zL2ludDE1LmMsIG1zZG9zL2ludDE2LmMsIG1zZG9zL2ludDE3LmMsIG1zZG9zL2ludDE5LmMsIG1zZG9zL2ludDFhLmMsIG1zZG9zL2ludDIwLmMsIG1zZG9zL2ludDIxLmMsIG1zZG9zL2ludDI1LmMsIG1zZG9zL2ludDI2LmMsIG1zZG9zL2ludDI5LmMsIG1zZG9zL2ludDJhLmMsIG1zZG9zL2ludDJmLmMsIG1zZG9zL2ludDMzLmMsIG1zZG9zL2ludDNkLmMsIG1zZG9zL2ludDQxLmMsIG1zZG9zL2ludDRiLmMsIG1zZG9zL2ludDVjLmMsIG1zZG9zL2ludGVycnVwdHMuYywgbXNkb3MvdnhkLmMsIG1zZG9zL3htcy5jLCBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jLCBkbGxzL250ZGxsL3J0bC5jLCBkbGxzL3dpbmFzcGkvd2luYXNwaTE2LmMsIGlmMTYzMi9idWlsdGluLmMsIGlmMTYzMi9yZWxheS5jLCBpZjE2MzIvc25vb3AuYywgaWYxNjMyL3RodW5rLmMsIGluY2x1ZGUvY2FsbGJhY2suaCwgaW5jbHVkZS9kb3NleGUuaCwgaW5jbHVkZS9taXNjZW11LmgsIGluY2x1ZGUvbXNkb3MuaCwgbG9hZGVyL2Rvcy9kb3N2bS5jLCBsb2FkZXIvdGFzay5jOgoJQ2hhbmdlZCBDT05URVhUIGludG8gQ09OVEVYVDg2IGV2ZXJ5d2hlcmUgd2UgcmVhbGx5IHdhbnQgYW4gaTM4NgoJY29udGV4dC4KCUFkZGVkICNpZmRlZiBfX2kzODZfXyBhcm91bmQgYWNjZXNzZXMgdG8gMzg2IHJlZ2lzdGVycyBpbiB0aGUgZ2VuZXJpYwoJQ09OVEVYVCBzdHJ1Y3R1cmUuCgoJKiBpbmNsdWRlL3dpbm50Lmg6IEFkZGVkIENPTlRFWFQ4NiBkZWZpbml0aW9uLgoJQWRkZWQgUG93ZXJQQyBjb250ZXh0IGFzIGFuIGV4YW1wbGUgKG5vdCB0ZXN0ZWQpLgoKCSogcmVsYXkzMi9yZWxheTM4Ni5jLCByZWxheTMyL3Nub29wLmMsIGluY2x1ZGUvd2luZS9leGNlcHRpb24uaDoKCUZpeGVzIGZvciBub24taTM4NiBjb21waWxpbmcuCgoJKiAqLyo6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUFOU0kgQyBmaXhlcy4KCVJlbW92ZWQgd2FybmluZ3MuCglNYWRlIHRoZSBpbmNsdWRlIGZpbGVzIHNlbGYtc3VmZmljaWVudC4KCVNvbWUgU29sYXJpcyBmaXhlcy4KCgkqIHJlbGF5MzIvY29tY3RsMzIuc3BlYywgZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmMsIGluY2x1ZGUvY29tbWN0cmwuaDoKCUVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglGaXhlZCBEUEFfTG9hZFN0cmVhbSBhbmQgaW1wcm92ZWQgRFBBX01lcmdlLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOiBFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJQWRkZWQgY2hlY2sgZm9yIGludmFsaWQgcGFyZW50IGl0ZW0uCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgcmVsYXkzMi9zaGVsbDMyLnNwZWM6CglFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJQWRkZWQgU0hEb0RyYWdEcm9wKCkgc3R1Yi4KCgkqIG9iamVjdHMvcmVnaW9uLmM6IEVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglJbXByb3ZlZCBHZXRSYW5kb21SZWdpb24oKS4KCgkqIG1pc2MvbmV0d29yay5jLCByZWxheTMyL21wci5zcGVjOgoJRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUFkZGVkIFdOZXRSZW1vdmVDYWNoZWRQYXNzd29yZCgpIHN0dWIuCgoJKiBkbGxzL2NvbWN0bDMyL3VwZG93bi5jOiBFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJU3RvcmUgYnVkZHkgd2luZG93LgoKCSogaW5jbHVkZS90b29sdGlwcy5oLCBkbGxzL2NvbWN0bDMyL3Rvb2x0aXBzLmM6CglFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJU3RhcnRlZCBXTV9OT1RJRllGT1JNQVQgc3VwcG9ydC4KCgkqIGRsbHMvY29tY3RsMzIvcmViYXIuYzogRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUJldHRlciBDb21ib0JveEV4IHBsYWNlbWVudC4KCgkqIGxvYWRlci9tb2R1bGUuYzogRGF2ZSBQaWNrbGVzIDxkYXZlcEBudWdhdGUuZGVtb24uY28udWs+CglFbnN1cmUgdGhhdCB0aGUgY29tbWFuZC1saW5lIHBhc3NlZCB0byB0aGUgdmFyaW91cyAqQ3JlYXRlUHJvY2VzcwoJZnVuY3Rpb25zIGNvbnRhaW5zIHRoZSBwYXRoIHRvIHRoZSBwcm9ncmFtIGJlaW5nIGludm9rZWQuCgoJKiB3aW5kb3dzL3gxMWRydi93bmQuYzogTGFycyBIZWV0ZSA8aGVsQGFkbWluLmRlPgoJUHJldmVudCBiYWQgd2luZG93IFggZXJyb3IuCgoJKiB3aW5kb3dzL21kaS5jLCB3aW5kb3dzL3N5c21ldHJpY3MuYzoKCUFiZXkgR2VvcmdlIDxhYmV5QG1hY2FkYW1pYW4uY29tPgoJVGhlIHN5c3RlbSBtZW51IGljb24gb24gYSBNREkgY2hpbGQgd2luZG93IHdhcyBjb3JydXB0ZWQgd2hlbiB0aGUKCWNoaWxkIGZyYW1lIHdpbmRvdyBpcyBtYXhpbWl6ZWQgd2l0aGluIHRoZSBtYWluIGZyYW1lIHdoZW4gdGhlIHdpbmUKCWxvb2sgaXMgV2luZG93cyA5NS4KCgkqIGNvbnRyb2xzL3Njcm9sbC5jLCB3aW5kb3dzL2RlZnduZC5jOgoJU2xhdmEgTW9uaWNoIDxTbGF2YS5Nb25pY2hAbmV0bWFuYWdlLmNvbT4KCUluIGNhc2UgaWYgc2Nyb2xsYmFyIGhhcyB0aGUgc2FtZSBiYWNrZ3JvdW5kIGNvbG9yIGFzIHRoZSB3aW5kb3cKCWl0IGJlbG9uZ3MgdG8sIGl0IG5lZWRzIHRvIGJlIGZpbGxlZCB3aXRoIDB4NTVhYSBiaXRtYXAgYnJ1c2guCgoJKiBtaXNjL3JlZ2lzdHJ5LmM6IE1hcmN1cyBNZWlzc25lciA8TWFyY3VzLk1laXNzbmVyQGNhbGRlcmEuZGU+CglGaXhlZCB0aGUgc3RyaW5nY29tcGFyZSBpbiBfZmluZF9vcl9hZGRfKigpICh3YXMgbWlzc2luZyB0b2xvd2VyKClzKS4KCgkqIGRlYnVnZ2VyL21lbW9yeS5jOiBKdWVyZ2VuIExvY2sgPG5veEBqZWxhbC5rbi1icmVtZW4uZGU+CglGaXggKHdlbGwga2x1ZGdlIGFyb3VuZCkgRnJlZUJTRCdzIGBJbnZhbGlkIGFkZHJlc3MnIGVycm9ycy4KCgkqIGNvbnRyb2xzL2VkaXQuYzogQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglKYW1lcyBBYmJhdGllbGxvIDxhYmJleWpAd3BpLmVkdT4KCURyYXcgYSAzRCBib3JkZXIgYXJvdW5kIGVkaXQgY29udHJvbHMgd2hlbiBub3QgaW4gV0lOMzFfTE9PSy4KCgkqIGNvbnRyb2xzL2J1dHRvbi5jOiBDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCUphbWVzIEFiYmF0aWVsbG8gPGFiYmV5akB3cGkuZWR1PgoJT25seSBkcmF3IGEgYmxhY2sgYm9yZGVyIGFyb3VuZCBub3JtYWwgYnV0dG9ucyB3aGVuIGluIFdJTjMxX0xPT0suCgoJKiBtdWx0aW1lZGlhL21taW8uYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBhbGlnbm1lbnQgYW5kIHBvc2l0aW9uIHdoZW4gbG9va2luZyBmb3IgbW1pbyBjaHVua3MuCgoJKiBtdWx0aW1lZGlhL21tc3lzdGVtLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJTm8gbG9uZ2VyIHVzaW5nIGdsb2JhbCB2YXJzIChzaGFyZWQgZGF0YSkgZm9yIG1tIHRpbWVycywgYnV0IGEKCXNwZWNpZmljIHN0cnVjdHVyZSBmb3IgZWFjaCBhdHRhY2hlZCBwcm9jZXNzLgoJRml4ZWQgYWxpZ25tZW50IGFuZCBwb3NpdGlvbiB3aGVuIGxvb2tpbmcgZm9yIG1taW8gY2h1bmtzLgoJRml4ZWQgV0FWRSBtYXBwZXIgaGFuZGxpbmcgaW4gd2F2ZUdldENhcHMuCgoJKiBpbmNsdWRlL211bHRpbWVkaWEuaCwgbXVsdGltZWRpYS90aW1lLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCU5vIGxvbmdlciB1c2luZyBnbG9iYWwgdmFycyAoc2hhcmVkIGRhdGEpIGZvciBtbSB0aW1lcnMsIGJ1dCBhCglzcGVjaWZpYyBzdHJ1Y3R1cmUgZm9yIGVhY2ggYXR0YWNoZWQgcHJvY2Vzcy4KCgkqIGRvY3VtZW50YXRpb24vZGlzdHJpYnV0b3JzOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVdyb3RlIGEgc21hbGwgZG9jdW1lbnQgb24gaG93IHRvIHBhY2thZ2UgV0lORSBmb3IgZGlzdHJpYnV0b3JzLgoKCSogd2luZG93cy9ub25jbGllbnQuYzogTm9vbWVuIEhhbXphIDxub29tZW5AbWFjYWRhbWlhbi5jb20+CglTZXRDdXJzb3JQb3MoKSBmdW5jdGlvbiB3YXMgY2FsbGVkIHdpdGggYSB3aW5kb3cgY29vcmRpbmF0ZXMKCXBhcmFtZXRlci4KCgkqIG11bHRpbWVkaWEvbWNpc3RyaW5nLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgbnVsbCBwdHIgZGVyZWYgaW50cm9kdWNlZCBpbiBsYXN0IHBhdGNoLgoKCSogaWYxNjMyL29sZTIuc3BlYywgb2xlL29sZTIuYzoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUtpbmQgb2YgaW1wbGVtZW50ZWQgT2xlTWV0YUZpbGVQaWN0RnJvbUljb25BbmRMYWJlbC4KCgkqIGluY2x1ZGUvdG9vbGJhci5oLCBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJSmFtZXMgQWJiYXRpZWxsbyA8YWJiZXlqQHdwaS5lZHU+CglGaXhlZCB2YXJpb3VzIHByb2JsZW1zIHJlbGF0ZWQgdG8gYml0bWFwcyBhbmQgZmxhdCB0b29sYmFycy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglKYW1lcyBBYmJhdGllbGxvIDxhYmJleWpAd3BpLmVkdT4KCUZpeGVkIHByb2JsZW1zIHdpdGggZGlzYXBwZWFyaW5nIHRleHQuCgoJKiBkbGxzL2NvbWN0bDMyL2lwYWRkcmVzcy5jOiBDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCUphbWVzIEFiYmF0aWVsbG8gPGFiYmV5akB3cGkuZWR1PgoJQ29tcGxldGUgcmV3cml0ZSBvZiBtZXNzYWdpbmcgY29kZSB0byBpbXBsZW1lbnQvZml4IGFsbCBpbnB1dCBiZWhhdmlvcnMuCglGaXhlZCBhIGZldyBmaXhtZXMuCgoJKiBwcm9ncmFtcy93Y21kL0NoYW5nZUxvZywgcHJvZ3JhbXMvd2NtZC9SRUFETUUsIHByb2dyYW1zL3djbWQvYmF0Y2guYywgcHJvZ3JhbXMvd2NtZC9idWlsdGlucy5jLCBwcm9ncmFtcy93Y21kL3djbWQuaCwgcHJvZ3JhbXMvd2NtZC93Y21kbWFpbi5jOgoJRGF2ZSBQaWNrbGVzIDxkYXZlcEBudWdhdGUuZGVtb24uY28udWs+CglBZGRlZCBtb3JlIGJhdGNoIGZ1bmN0aW9uYWxpdHksIGluY2x1ZGluZyB0aGUgQ0FMTCBHT1RPIGFuZCBTSElGVAoJY29tbWFuZHMgcGx1cyBiYXRjaCBjb21tYW5kIGFyZ3VtZW50cy4KCgkqIGRvY3VtZW50YXRpb24vc3RhdHVzL211bHRpbWVkaWE6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJVXBkYXRlZCB0byByZWZsZWN0IGN1cnJlbnQgc3RhdHVzLgoKCSogbG9hZGVyL25lL21vZHVsZS5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJTkVfTG9hZEZpbGVNb2R1bGU6IEZyZWUgbW9kdWxlIHdoZW4gTkVfTG9hZERMTHMgZmFpbHMuCgoJKiBncmFwaGljcy9wc2Rydi9wcy5jLCBncmFwaGljcy9wc2Rydi90ZXh0LmMsIGluY2x1ZGUvcHNkcnYuaDoKCVRodXkgTmd1eWVuIDx0aHV5QG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50ZWQgdGhlIHVuZGVybGluZSBhbmQgc3RyaWtlb3V0IHRleHQgYXR0cmlidXRlcyBmb3IgdGhlIFdpbmUKCVBvc3RTY3JpcHQgZHJpdmVyLgoKCSogd2luZG93cy93aW4uYzogUGFzY2FsIExlc3NhcmQgPHBhc2NhbEBtYWNhZGFtaWFuLmNvbT4KCUVuYWJsZVdpbmRvdyBkb2Vzbid0IHJlbGVhc2UgdGhlIGNhcHR1cmUgb2YgYSBjaGlsZCB3aW5kb3cuCgoJKiBNYWtlZmlsZS5pbjogSmFtZXMgSnVyYW4gPGpyajEyMEBwc3UuZWR1PgoJT25seSB0ZXN0ICQoTElCX1RBUkdFVCkgPSBsaWJ3aW5lLnNvLjEuMCBpZiAkKExJQl9UQVJHRVQpIGlzCglub24tYmxhbmsuCgoJKiBjb250cm9scy9tZW51LmM6IE5vb21lbiBIYW16YSA8bm9vbWVuQG1hY2FkYW1pYW4uY29tPgoJUmVtb3ZlIHRoZSBXTV9MQlVUVE9OVVAgbWVzc2FnZSBmcm9tIHRoZSBxdWV1ZSBhZnRlciBzZWxlY3RpbmcgYSBtb3VzZQoJbWVudSBpdGVtLgoKCSogc2VydmVyL2NoYW5nZS5jLCBzZXJ2ZXIvY29uc29sZS5jLCBzZXJ2ZXIvZGVidWdnZXIuYywgc2VydmVyL2RldmljZS5jLCBzZXJ2ZXIvZXZlbnQuYywgc2VydmVyL2ZpbGUuYywgc2VydmVyL2hhbmRsZS5jLCBzZXJ2ZXIvbWFwcGluZy5jLCBzZXJ2ZXIvbXV0ZXguYywgc2VydmVyL29iamVjdC5jLCBzZXJ2ZXIvb2JqZWN0LmgsIHNlcnZlci9waXBlLmMsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9yZXF1ZXN0LmMsIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci9zZW1hcGhvcmUuYywgc2VydmVyL3NuYXBzaG90LmMsIHNlcnZlci9zb2NrZXQuYywgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdGhyZWFkLmgsIHNlcnZlci90cmFjZS5jLCB0b29scy9tYWtlX3JlcXVlc3RzLCB3aW4zMi9jb25zb2xlLmMsIHdpbjMyL2RldmljZS5jLCBpbmNsdWRlL3NlcnZlci5oLCBpbmNsdWRlL3RocmVhZC5oLCBsb2FkZXIvZG9zL21vZHVsZS5jLCBtZW1vcnkvdmlydHVhbC5jLCBtaXNjL2NvbW0uYywgbWlzYy90b29saGVscC5jLCBvbGUvcGFyc2VkdC5jLCBzY2hlZHVsZXIvY2xpZW50LmMsIHNjaGVkdWxlci9kZWJ1Z2dlci5jLCBzY2hlZHVsZXIvZXZlbnQuYywgc2NoZWR1bGVyL2hhbmRsZS5jLCBzY2hlZHVsZXIvbXV0ZXguYywgc2NoZWR1bGVyL3BpcGUuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2NoZWR1bGVyL3NlbWFwaG9yZS5jLCBzY2hlZHVsZXIvc3luY2hyby5jLCBzY2hlZHVsZXIvdGhyZWFkLmMsIGZpbGVzL2NoYW5nZS5jLCBmaWxlcy9kb3NfZnMuYywgZmlsZXMvZmlsZS5jOgoJRnVydGhlciBzZXJ2ZXIgb3B0aW1pemF0aW9uczoKCS0gbWVyZ2VkIHJlcXVlc3QgYW5kIHJlcGx5IHN0cnVjdHVyZXMKCS0gYnVpbGQgcmVxdWVzdHMgZGlyZWN0bHkgaW50byB0aGUgYnVmZmVyIHRvIGF2b2lkIGEgY29weQoKVHVlIEp1biAyMiAxOToxNDo0MSAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfUnUucmMsIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLCBvbGUvbmxzL3J1cy5ubHMsIHJlc291cmNlcy9zeXNyZXNfUnUucmMsIGRsbHMvY29tbWRsZy9jZGxnX1J1LnJjOgoJQWxleGFuZGVyIEthbmF2aW4gPGFrQGNhdmUuaG9wLnN0dS5uZXZhLnJ1PgoJU3RhbmRhcmQgZGlhbG9nIGJveGVzIHJlc291cmNlcyBhbmQgT0xFIHN0cmluZ3MgYXJlIG5vdyBpbiBjcDEyNTEgZW5jb2RpbmcKCUZvbnQgbWFwcGVyIGRvZXMgbm90IGFueW1vcmUgdXNlIGZvbnRzIGluIC1rb2k4LXIgZW5jb2RpbmcKCUZvbnQgbWFwcGVyIG5vdyByZWNvZ25pc2VzIGZvbnRzIGluIC13aW5kb3dzLSogZW5jb2RpbmdzICh0aGVzZSBhcmUKCXByb3ZpZGVkIGJ5IHhmc3R0IFRydWVUeXBlIHNlcnZlcikKCUZvbnQgbWFwcGVyIG5vdyBzZWVzIG1heCAxNjM4NCBmb250cyAod2FzIDIwNDgpCgoJKiByZWxheTMyL2J1aWx0aW4zMi5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglTaGFyZSB0aGUgSE1PRFVMRSBvZiBidWlsdC1pbiBtb2R1bGVzIG92ZXIgYWxsIHByb2Nlc3Nlcy4KCVVzZSB0aGUgY2FjaGVkIEhNT0RVTEUgdG8gc3BlZWQgdXAgcmVsYXkgZGVidWdnaW5nLgoJRGlzcGxheSB0aGUgbXVsdGktaW5zdGFudGlhdGlvbiB3YXJuaW5nIG9ubHkgZm9yICdkYW5nZXJvdXMnIERMTHMuCgoJKiBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglMb2FkIFVTRVIzMi5ETEwgYmVmb3JlIGNhbGxpbmcgVXNlclNpZ25hbFByb2MuCgoJKiB3aW5kb3dzL3RpbWVyLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJVXNlIHNlcGFyYXRlIHNlcnZpY2UgZm9yIGVhY2ggd2luZG93cyB0aW1lci4KCgkqIGlmMTYzMi9jb21wb2JqLnNwZWMsIG9sZS9jb21wb2JqLmM6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglBZGRlZCBDT01QT0JKLkRsbEVudHJ5UG9pbnQgKEFjcm9iYXQzIDE2Yml0IG5lZWRzIGl0KS4KCgkqIG9sZS90eXBlbGliLmMsIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYywgZGxscy9jb21jdGwzMi90cmVldmlldy5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglUaG91IHNoYWx0IG5vdCB1c2UgQysrIGNvbW1lbnRzLgoKCSogaW5jbHVkZS9kcml2ZXIuaCwgd2luZG93cy9kcml2ZXIuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJTW92ZWQgdG8gbmV3IHRyYWNlIGludGVyZmFjZS4KCUZpeGVkIGRyaXZlciBjbG9zaW5nLgoKCSogbXVsdGltZWRpYS9tY2lzdHJpbmcuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglCZXR0ZXIgaGFuZGxpbmcgb2YgZG91YmxlIHF1b3RlcyBpbiBNQ0kgc3RyaW5nIGNvbW1hbmRzLgoKCSogbXVsdGltZWRpYS9tY2kuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBtZW1vcnkgbGVhayBpbiBtY2kgc3RydWN0dXJlcy4KCgkqIGdyYXBoaWNzL2RkcmF3LmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgZXJyb3IgaGFuZGxpbmcgaW4gREdBX0lEaXJlY3REcmF3MkltcGxfR2V0Q2FwcygpLgoKCSogZ3JhcGhpY3MveDExZHJ2L2NsaXBwaW5nLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgbWlzc2luZyBHREkgaGVhcCB1bmxvY2suCglNb3ZlZCB0byBuZXcgZGVidWcgaW50ZXJmYWNlLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGcuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBHZXRPcGVuRmlsZU5hbWUgd2hlbiBjYWxsZWQgd2l0aCBib3RoIE9GTl9BTExPV01VTFRJU0VMRUNUIGFuZAoJT0ZOX0VYUExPUkVSIGJpdHMgc2V0LgoKCSogZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYzoKCUZyYW5jb2lzIEJvaXN2ZXJ0IDxmcmFuY29pc0BtYWNhZGFtaWFuLmNvbT4KCU1vZGlmaWVkIEltYWdlTGlzdF9Mb2FkSW1hZ2VBIHRvIGNoZWNrIHRoZSBjYXNlIHdoZXJlIGN4IGlzIHNldCB0byB6ZXJvLgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzogUGhpbGlwcGUgRnJvaWRldmF1eCA8cGZAc3Bpbi5jaD4KCUFkZGVkIFN3aXNzIGZyZW5jaCBrZXlib2FyZCBsYXlvdXQuCgoJKiBzZXJ2ZXIvc2VsZWN0LmM6IER1bXAgc2VydmVyIG9iamVjdHMgb24gU0lHSFVQLgoKCSogc2VydmVyL2ZpbGUuYywgc2VydmVyL2hhbmRsZS5jLCBzZXJ2ZXIvaGFuZGxlLmgsIHNlcnZlci9tYWluLmMsIHNlcnZlci9tYXBwaW5nLmMsIHNlcnZlci9tdXRleC5jLCBzZXJ2ZXIvb2JqZWN0LmMsIHNlcnZlci9vYmplY3QuaCwgc2VydmVyL3BpcGUuYywgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3JlcXVlc3QuYywgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3NlbWFwaG9yZS5jLCBzZXJ2ZXIvc25hcHNob3QuYywgc2VydmVyL3NvY2tldC5jLCBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90aHJlYWQuaCwgc2VydmVyL3RyYWNlLmMsIHRvb2xzL21ha2VfcmVxdWVzdHMsIHdpbjMyL2NvbnNvbGUuYywgaW5jbHVkZS9zZXJ2ZXIuaCwgaW5jbHVkZS9zZXJ2ZXIvQXR0aWMvcmVxdWVzdC5oLCBpbmNsdWRlL3RocmVhZC5oLCBtZW1vcnkvdmlydHVhbC5jLCBtaXNjL2NvbW0uYywgc2NoZWR1bGVyL2NsaWVudC5jLCBzY2hlZHVsZXIvZGVidWdnZXIuYywgc2NoZWR1bGVyL2V2ZW50LmMsIHNjaGVkdWxlci9tdXRleC5jLCBzY2hlZHVsZXIvcGlwZS5jLCBzY2hlZHVsZXIvc2VtYXBob3JlLmMsIHNjaGVkdWxlci90aHJlYWQuYywgc2VydmVyL2NoYW5nZS5jLCBzZXJ2ZXIvY29uc29sZS5jLCBzZXJ2ZXIvZGVidWdnZXIuYywgc2VydmVyL2RldmljZS5jLCBzZXJ2ZXIvZXZlbnQuYywgZmlsZXMvZmlsZS5jOgoJTWFkZSBzZXJ2ZXIgY29tbXVuaWNhdGlvbiBmYXN0ZXIgYnkgdXNpbmcgYSBzaGFyZWQgbWVtb3J5IGJsb2NrLgoJQSBmZXcgb3RoZXIgb3B0aW1pemF0aW9ucyBpbiByZXF1ZXN0IHByb2Nlc3NpbmcgaW4gdGhlIHNlcnZlci4KCU1vdmVkIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIHJlcXVlc3QgZGVmaW5pdGlvbnMgdG8gc2VydmVyLmggYW5kCglyZW1vdmVkIGluY2x1ZGUvc2VydmVyL3JlcXVlc3QuaC4KCgkqIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL3F1ZXVlLmMsIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3Mvd2lucHJvYy5jLCBsb2FkZXIvbWFpbi5jLCBsb2FkZXIvbmUvc2VnbWVudC5jLCBsb2FkZXIvdGFzay5jLCBtaXNjZW11L21haW4uYywgbXNkb3MvZHBtaS5jLCBzY2hlZHVsZXIvY2xpZW50LmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci9zeXNkZXBzLmMsIHNjaGVkdWxlci9zeXNsZXZlbC5jLCBzY2hlZHVsZXIvdGhyZWFkLmMsIHRvb2xzL2J1aWxkLmMsIHdpbjMyL2tlcm5lbDMyLmMsIGRlYnVnZ2VyL3N0YWNrLmMsIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmMsIGlmMTYzMi9yZWxheS5jLCBpZjE2MzIvdGh1bmsuYywgaW5jbHVkZS9wcm9jZXNzLmgsIGluY2x1ZGUvcXVldWUuaCwgaW5jbHVkZS9zdGFja2ZyYW1lLmgsIGluY2x1ZGUvdGFzay5oLCBpbmNsdWRlL3RocmVhZC5oLCBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW5udC5oOgoJTWVyZ2VkIFRIREIgYW5kIFRFQiBzdHJ1Y3R1cmVzLgoJTWFkZSBTZXRMYXN0RXJyb3IoKSwgR2V0Q3VycmVudFRocmVhZElkKCkgYW5kIFBST0NFU1NfQ3VycmVudCgpIGlubGluZS4KCgkqIHByb2dyYW1zL3dpbmhlbHAvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvY2xvY2svLmN2c2lnbm9yZSwgcHJvZ3JhbXMvcHJvZ21hbi8uY3ZzaWdub3JlOgoJQWRkZWQgV2EucwoKU3VuIEp1biAyMCAxNTowOTozMiAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbWVtb3J5L2luc3RyLmMsIG1pc2NlbXUvbWFpbi5jLCBwcm9ncmFtcy9jbG9jay9XYS5yYywgcHJvZ3JhbXMvcHJvZ21hbi9XYS5yYywgcHJvZ3JhbXMvd2luaGVscC9XYS5yYzoKCUZpeGVkIFdpbmVsaWIgY29tcGlsYXRpb24uCgpGcmkgSnVuIDE4IDE4OjI5OjA0IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBtZW1vcnkvTWFrZWZpbGUuaW4sIG1lbW9yeS9pbnN0ci5jLCBtaXNjZW11L0F0dGljL2luc3RyLmMsIG1pc2NlbXUvTWFrZWZpbGUuaW46CglJbmNsdWRlIGluc3RydWN0aW9uIGVtdWxhdGlvbiBpbiBXaW5lbGliLgoKCSogaW5jbHVkZS93aW5lL2V4Y2VwdGlvbi5oLCB3aW4zMi9leGNlcHQuYzogQSBmZXcgb3B0aW1pemF0aW9ucy4KCgkqIGxvYWRlci9kb3MvZG9zdm0uYzogVXNlIGV4Y2VwdGlvbnMgaW5zdGVhZCBvZiBjdHhfZGVidWdfY2FsbC4KCgkqIGluY2x1ZGUvd2luYmFzZS5oLCByZWxheTMyL2tlcm5lbDMyLnNwZWMsIHNjaGVkdWxlci9zeXNsZXZlbC5jLCB3aW5kb3dzL3gxMWRydi9tYWluLmM6CglBZGRlZCBEZWJ1Z0JyZWFrLgoKCSogZGVidWdnZXIvYnJlYWsuYywgZGVidWdnZXIvZGJnLnksIGRlYnVnZ2VyL2RlYnVnLmwsIGRlYnVnZ2VyL2luZm8uYywgZGVidWdnZXIvcmVnaXN0ZXJzLmMsIGluY2x1ZGUvZGVidWdnZXIuaCwgbWlzY2VtdS9tYWluLmM6CglEZWJ1Z2dlciBpcyBub3cgY2FsbGVkIGJ5IGV4Y2VwdGlvbiBoYW5kbGluZy4KCUFkZGVkICdwYXNzJyBjb21tYW5kIHRvIHBhc3MgZXhjZXB0aW9ucyB0byB0aGUgYXBwLgoKCSogaW5jbHVkZS9taXNjZW11LmgsIGluY2x1ZGUvc2lnX2NvbnRleHQuaCwgbG9hZGVyL3NpZ25hbC5jLCBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jLCBncmFwaGljcy9kZHJhdy5jOgoJTW92ZWQgc2lnbmFsIGhhbmRsaW5nIHRvIGV4Y2VwdGlvbi5jLCBnZW5lcmF0ZSBleGNlcHRpb25zIG9uIHNpZ25hbHMuCglBZGRlZCBob29rIGZvciBkZWJ1Z2dlciBpbiBleGNlcHRpb24gaGFuZGxpbmcgKHRlbXBvcmFyeSkuCgoJKiBwcm9ncmFtcy9wcm9nbWFuL01ha2VmaWxlLmluLCBwcm9ncmFtcy9wcm9nbWFuL1dhLnJjLCBwcm9ncmFtcy93aW5oZWxwL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5oZWxwL1dhLnJjLCByZXNvdXJjZXMvc3lzcmVzX1dhLnJjLCBvbGUvbmxzL3dhbC5ubHMsIHByb2dyYW1zL2Nsb2NrL01ha2VmaWxlLmluLCBwcm9ncmFtcy9jbG9jay9XYS5yYywgcHJvZ3JhbXMvbm90ZXBhZC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvbm90ZXBhZC9XYS5yYywgZGxscy9jb21tZGxnL2NkbGdfV2EucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX1dhLnJjOgoJUGFibG8gU2FyYXR4YWdhIDxzcnR4Z0BwaW5nLmJlPgoJV2FsbG9vbiBsYW5ndWFnZSB1cGRhdGUuCgoJKiB3aW5kb3dzL3dpbnBvcy5jLCB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCB3aW5kb3dzL3gxMWRydi93bmQuYywgaW5jbHVkZS93aW5wb3MuaCwgaW5jbHVkZS93aW51c2VyLmg6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCS0gRG8gbm90IGNhbGwgWENvbmZpZ3VyZVdpbmRvdyBpZiBTZXRXaW5kb3dQb3Mgd2FzIGNhbGxlZCBkdWUgdG8gYQoJICByZWNlaXZlZCBDb25maWd1cmVOb3RpZnkgZXZlbnQgKHRvIGF2b2lkIHJlY3Vyc2lvbikuCgktIFVzZSBYVHJhbnNsYXRlQ29vcmRpbmF0ZXMgaW4gRVZFTlRfR2V0R2VvbWV0cnkgaW5zdGVhZCBvZiBtYW51YWxseQoJICB3YWxraW5nIHRoZSB0cmVlLgoJLSBTZXQgWFNpemVIaW50Lndpbl9ncmF2aXR5IHRvIFN0YXRpY0dyYXZpdHkgZm9yIG1hbmFnZWQgd2luZG93cy4KCgkqIG1pc2MvdmVyc2lvbi5jOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQnVnIGZpeC4KCgkqIGxvYWRlci9wZV9pbWFnZS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglGaXggY29tcGlsZXIgd2FybmluZy4KCgkqIGRvY3VtZW50YXRpb24vTWFrZWZpbGUuaW4sIE1ha2VmaWxlLmluOgoJQWxleGFuZGVyIFYuIEx1a3lhbm92IDxsYXZAbG9uZy55YXIucnU+CglJbnN0YWxsIHdpbmUubWFuIGZyb20gY3VycmVudCBkaXJlY3RvcnkuCglSZW1vdmUgd2luZS5tYW4gb24gZGlzdGNsZWFuLCBub3Qgb24gY2xlYW4uCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClN1biBKdW4gMTMgMDg6NDk6NDcgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYywgaW5jbHVkZS9saXN0dmlldy5oOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglKYW1lcyBBYmJhdGllbGxvIDxhYmJleWpAd3BpLmVkdT4KCUltcGxlbWVudGVkIExJU1RWSUVXX1NvcnRJdGVtcygpIGFuZCBMSVNUVklFV19DYWxsQmFja0NvbXBhcmUoKQoKCSogZGxscy9jb21jdGwzMi9zdGF0dXMuYzogQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglKYW1lcyBBYmJhdGllbGxvIDxhYmJleWpAd3BpLmVkdT4KCUZpeGVzIGEgcHJvYmxlbSB3aGVuIHVzaW5nIFNUQVRVU0JBUl9TZXRUZXh0KCkgdG8gdG9nZ2xlIFNCVF9PV05FUkRSQVcKCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzogQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglKYW1lcyBBYmJhdGllbGxvIDxhYmJleWpAd3BpLmVkdT4KCUFkZHMgc29tZSB1bmRvY3VtZW50ZWQgYmVoYXZpb3IgdG8gVFJFRVZJRVdfR2V0SXRlbUEoKS4KCgkqIGxvYWRlci9tb2R1bGUuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCBhbWJpZ291cyBlbHNlL2JyYWNlIHByb2JsZW0sIG1vdmVkICJuYW1lIiBjb21wdXRhdGlvbiBpbgoJQ3JlYXRlUHJvY2VzcyBfYmVmb3JlXyBvdXRwdXR0aW5nIGl0IGluIHRoZSBGSVhNRV8oKXMuCgoJKiBvYmplY3RzL3JlZ2lvbi5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCURvIG5vdCByZXVzZSBhIHBhc3NlZCBDT05TVCBSRUNUICogcG9pbnRlci4KCgkqIHdpbmRvd3MveDExZHJ2L21vdXNlLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogRElTUExBWV9TZXRDdXJzb3Igc2hvdWxkIG5vdCB1c2UgVVNFUi1pbnRlcm5hbHMsIGFzIGl0IGlzIGFsc28KCXVzZWQgd2l0aCBuYXRpdmUgVVNFUiAuLi4KCgkqIGxvYWRlci9wZV9pbWFnZS5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglSZW1vdmVkIGJyb2tlbiBoYWNrIHRvIHN1cHBvcnQgc2hhcmVkIERMTHMgKGUuZy4gVVNFUjMyLkRMTCkgYW5kCglyZXBsYWNlZCBpdCBieSBhIHNvbWV3aGF0IGxlc3MgYnJva2VuIGhhY2sgOi0vCgoJKiBtdWx0aW1lZGlhL21jaS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIHNtYWxsIG1lbW9yeSBjb3JydXB0aW9uLgoKU2F0IEp1biAxMiAxODozNjo1NSAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS8qLmg6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCU1hZCB0aGUgaW5jbHVkZSBmaWxlcyBpZGVtcG90ZW50IHVzaW5nIGEgY29uc2lzdGVudCBtYWNybyBuYW1pbmcKCXNjaGVtZS4KCgkqIHdpbmRvd3MvcGFpbnRpbmcuYzogTm9vbWVuIEhhbXphIDxub29tZW5AbWFjYWRhbWlhbi5jb20+CglBdm9pZCBwYWludGluZyBkZXN0cm95ZWQgd2luZG93cy4KCgkqIGRsbHMvKi5jLCBpZjE2MzIvKi5jLCBsb2FkZXIvKi5jOgoJQ29udmVydGVkIHRvIHRoZSBuZXcgZGVidWcgaW50ZXJmYWNlLCB1c2luZyBzY3JpcHQgd3JpdHRlbiBieSBQYXRyaWsKCVN0cmlkdmFsbC4KCgkqIGlmMTYzMi9idWlsdGluLmMsIGxvYWRlci9uZS9tb2R1bGUuYywgbG9hZGVyL25lL3NlZ21lbnQuYywgbWVtb3J5L2F0b20uYywgbWVtb3J5L3N0cmluZy5jLCBvYmplY3RzL3RleHQuYywgd2luMzIvdGhyZWFkLmMsIHdpbmRvd3MvcHJvcGVydHkuYywgd2luZG93cy9yZWN0LmMsIHdpbmRvd3Mvc3lzbWV0cmljcy5jLCBkbGxzL2FkdmFwaTMyL2FkdmFwaS5jLCBkbGxzL2NvbW1kbGcvZmlsZXRpdGxlLmMsIGRsbHMvbnRkbGwvbnQuYywgZGxscy9udGRsbC9zeW5jLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUFkZGVkIG1pc3Npbmcvd3JvbmcgaW5jbHVkZXMuCgoJKiB3aW5kb3dzL3VzZXIuYywgd2luZG93cy94MTFkcnYvZXZlbnQuYywgY29udHJvbHMvaWNvbnRpdGxlLmMsIGNvbnRyb2xzL21lbnUuYywgY29udHJvbHMvd2lkZ2V0cy5jLCBkZWJ1Z2dlci9kYmcueSwgZGVidWdnZXIvZGJnbWFpbi5jLCBsb2FkZXIvbW9kdWxlLmMsIG1pc2Mvc3B5LmMsIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL3BhaW50aW5nLmMsIHdpbmRvd3Mvc2Nyb2xsLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCVJlbW92ZWQgZGlyZWN0IHJlZmVyZW5jZXMgdG8gQ0xBU1MgaW50ZXJuYWxzLgoKCSogaW5jbHVkZS9wcm9jZXNzLmgsIG1pc2MvdmVyc2lvbi5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJUmVhcnJhbmdlIHdpbnZlciBkZXRlY3Rpb24gY29kZSBhbmQgY2FjaGUgdGhlIHdpbnZlciB2YWx1ZSB3ZQoJZGV0ZXJtaW5lZCBpbiB0aGUgUERCIHRvIHNwZWVkIHVwLgoKCSogd2luZG93cy9ub25jbGllbnQuYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglEcmF3cyBhIGJvcmRlciBhcm91bmQgd2luZG93cyB3aXRoIG9sZCB3aW4zMSBzdHlsZSAob25seSB3c19ib3JkZXIpIGluCgl3aW45NSBsb29rLgoKCSogaW5jbHVkZS9jb21tY3RybC5oLCBpbmNsdWRlL3Byc2h0LmgsIGluY2x1ZGUvd2luZS9vYmpfZGF0YW9iamVjdC5oLCBpbmNsdWRlL3d0eXBlcy5oOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglBZGRlZCBDSU5URVJGQUNFIGFuZCBOT05BTUVMRVNTVU5JT04gc3VwcG9ydC4KCgkqIGluY2x1ZGUvKi5oOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglBZGRlZCBleHRlcm4gIkMiIGlmIF9fY3BsdXNwbHVzIGlzIGRlZmluZWQuCgoJKiBpbmNsdWRlL2NvbWJvLmgsIGNvbnRyb2xzL2NvbWJvLmMsIGNvbnRyb2xzL2xpc3Rib3guYzoKCUZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIGEgZmV3IGJlaGF2aW9ycyBvZiB0aGUgY29tYm9ib3ggdGhhdCB3ZXJlIGJyb2tlbi4KCgkqIGRlYnVnZ2VyL2RiZy55LCBkZWJ1Z2dlci9kZWJ1Zy5sLCBkZWJ1Z2dlci9pbmZvLmMsIGluY2x1ZGUvbW9kdWxlLmgsIGluY2x1ZGUvcHJvY2Vzcy5oLCBsb2FkZXIvbW9kdWxlLmMsIHNjaGVkdWxlci9wcm9jZXNzLmM6CglHdXkgQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJQWRkIG5ldyAid2FsayIgY29tbWFuZCBvcHRpb25zIHRvIGxpc3QgcHJvY2Vzc2VzIGFuZCBtb2RyZWYncy4KCgkqIGdyYXBoaWNzL3gxMWRydi9kaWIuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVgxMURSVl9ESUJfU2V0SW1hZ2VCaXRzXzI0LzMyOiBGaXggdGhlIGNhc2UgZm9yIGJpdHNfcGVyX3BpeGVsID09IDMyCglhbmQgbmVnYXRpdmUgbGluZXMuCgoJKiBkbGxzL2NvbWN0bDMyL3N0YXR1cy5jLCBkbGxzL2NvbWN0bDMyL3RhYi5jLCBkbGxzL2NvbWN0bDMyL3Rvb2x0aXBzLmMsIGRsbHMvY29tY3RsMzIvdHJhY2tiYXIuYywgZGxscy9jb21jdGwzMi91cGRvd24uYywgaW5jbHVkZS93aW51c2VyLmgsIGRsbHMvY29tY3RsMzIvY29tYm9leC5jLCBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmMsIGRsbHMvY29tY3RsMzIvZGF0ZXRpbWUuYywgZGxscy9jb21jdGwzMi9mbGF0c2IuYywgZGxscy9jb21jdGwzMi9oZWFkZXIuYywgZGxscy9jb21jdGwzMi9ob3RrZXkuYywgZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYywgZGxscy9jb21jdGwzMi9pcGFkZHJlc3MuYywgZGxscy9jb21jdGwzMi9tb250aGNhbC5jLCBkbGxzL2NvbWN0bDMyL25hdGl2ZWZvbnQuYywgZGxscy9jb21jdGwzMi9wYWdlci5jLCBkbGxzL2NvbWN0bDMyL3Byb2dyZXNzLmMsIGRsbHMvY29tY3RsMzIvcmViYXIuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQ2hhbmdlZCB4eHgoVk9JRCkgdG8geHh4KHZvaWQpLgoKCSogbXVsdGltZWRpYS90aW1lLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJLSBzaW1wbGlmaWVkIGludGVybmFsIGRhdGEKCS0gdGhyZWFkIHNhZmUgYWNjZXNzIHRvIGludGVybmFsIHN0cnVjdHVyZXMKCS0gZml4ZWQgYnVnIG9uIE9ORV9TSE9UIHRpbWVycwoJLSBkZWZlcnJlZCBzZXJ2aWNlIHRocmVhZCBjYWxsIHVudGlsIHJlYWxseSBuZWVkZWQgKG5vIGxvbmdlciBvbiBXSU5NTQoJICBvciBNTVNZU1RFTSBhdHRhY2hlbWVudCkKCgkqIGluY2x1ZGUvcHJvY2Vzcy5oLCBpbmNsdWRlL3NlcnZpY2VzLmgsIGxvYWRlci9tYWluLmMsIHNjaGVkdWxlci9zZXJ2aWNlcy5jLCBzY2hlZHVsZXIvdGhyZWFkLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCU1hZGUgdGhlIHNlcnZpY2UgdGhyZWFkIGluc3RhbmNpYWJsZSBpbiBldmVyeSBwcm9jZXNzLgoKCSogTWFrZS5ydWxlcy5pbiwgTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJSmFtZXMgSnVyYW4gPGpyajEyMEBwc3UuZWR1PgoJVXNlIEF1dG9jb25mIHRvIGZpbmQgcGF0aCB0byBsZGNvbmZpZy4KCgkqIG9sZS90eXBlbGliLmM6IEZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIGEgcHJvYmxlbSB3aXRoIHRoZSBMb2FkVHlwZUxpYiBtZXRob2QuCgoJKiBtaXNjL01ha2VmaWxlLmluLCBtaXNjL3JlZ2lzdHJ5LmM6IE1hcmN1cyBNZWlzc25lciA8bW1AamV0LmxzdC5kZT4KCVVzZSBAc3lzY29uZmRpckAgZm9yIHRoZSBkZWZhdWx0IHJlZ2lzdHJpZXMgaW4gbWlzYy9yZWdpc3RyeS5jIHRvby4KCgkqIGdyYXBoaWNzL2RkcmF3LmM6IE1hcmN1cyBNZWlzc25lciA8bW1AamV0LmxzdC5kZT4KCUFkZGVkIGdlbmVyaWMgcGl4ZWwgY29udmVydGVyIGZvciA4LT4yNC4KCgkqIHdpbmRvd3MvZGlhbG9nLmM6IFBhdmVsIFJvc2tpbiA8cGF2ZWxfcm9za2luQGdlb2NpdGllcy5jb20+CglESUFMT0dfUGFyc2VUZW1wbGF0ZTE2KCkgc3VwcG9ydGVkIHVwIHRvIDEyNyBjb250cm9scy4gQmlnZ2VyIHZhbHVlcwoJd2VyZSBleHBhbmRlZCB0byBXT1JEIGluY29ycmVjdGx5LgoKCSogbG9hZGVyL2Rvcy9kb3N2bS5jLCBsb2FkZXIvZG9zL21vZHVsZS5jLCBtc2Rvcy9kcG1pLmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVZhcmlvdXMgRFBNSSBmaXhlcyBhbmQgcHJlbGltaW5hcnkgRFBNSSByYXcgbW9kZSBzd2l0Y2ggaGFuZGxlci4KCgkqIHdpbmRvd3MvbWRpLmM6IE5vb21lbiBIYW16YSA8bm9vbWVuQG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgaW1wcmVjaXNpb24gaW4gdGhlIE1ESSB0aWxpbmcgZnVuY3Rpb25hbGl0eS4KCgkqIG9iamVjdHMvbWV0YWZpbGUuYzogSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJT3BlbiBmaWxlcyB3aXRoIG1vcmUgYXBwcm9wcmlhdGUgc2hhcmluZyBtb2RlLgoKCSogb2JqZWN0cy9lbmhtZXRhZmlsZS5jOiBIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglTbWFsbCBmaXhlcyBmb3IgRW5oTWV0YUZpbGUgcGxheWJhY2suCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYzogSWFuIFNjaG1pZHQgPGlyc21hbkBpYWcubmV0PgoJRml4ZWQgYW4gZXJyb3IgYW5kIGFuIG9mZi1ieS1vbmUgYnVnIGluIERTQV9TZXRJdGVtKCkuICBUaGlzCgllbGltaW5hdGVzIHNvbWUgY3Jhc2hlcyB3aXRoIFdpbjk4IG5hdGl2ZSBTSEVMTDMyLgoKCSogZ3JhcGhpY3MvZGRyYXcuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglSZW1vdmUgRElBQkxPX0hBQ0sgKGRvZXMgbm90IHdvcmsgYW55bW9yZSksIGFkZCAxIEZJWE1FLCBmaXggR2V0Q2FwcygpCgl3aXRoIGNhcHMxPT1OVUxMLgoKCSogd2luZG93cy9zeXNjb2xvci5jOiBTbGF2YSBNb25pY2ggPFNsYXZhLk1vbmljaEBuZXRtYW5hZ2UuY29tPgoJZHdEYXRhU2l6ZSBuZWVkcyB0byBiZSByZXNldCBiZWZvcmUgZWFjaCBSZWdRdWVyeVZhbHVlRXgoKSBjYWxsLgoKCSogbXVsdGltZWRpYS9kc291bmQuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglEb24ndCBpZ25vcmUgYXBwbGljYXRpb24tcmVxdWVzdGVkIHByaW1hcnkgYnVmZmVyIGZsYWdzLgoKCSogdG9vbHMvYnVpbGQuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglDbGVhciBoaWdoIHdvcmQgb2YgJWVzcCB3aGVuIHJldHVybmluZyBmcm9tIENhbGxGcm9tMTYuCgoJKiBpbmNsdWRlL2NvbW0uaCwgbWlzYy9jb21tLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJSW1wbGVtZW50YXRpb24gb2YgRVZfUlhGTEFHLgoKCSogd2luZG93cy93aW5wb3MuYywgd2luZG93cy94MTFkcnYvZXZlbnQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQmV0dGVyIGltcGxlbWVudGF0aW9uIG9mIFtHU11ldEZvcmVncm91bmRXaW5kb3cuCglGaXhlZCBmb2N1cyBoYW5kbGluZyBvbiBpbnRlci10aHJlYWQgYWN0aXZhdGlvbi4KCUFkYXB0ZWQgRm9jdXNJbi9PdXQgZXZlbnQgaGFuZGxpbmcgdG8gcGVyLXF1ZXVlIGZvY3VzLgoKCSogbG9hZGVyL25lL21vZHVsZS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglSZWxlYXNlIFdpbjE2TG9jayBkdXJpbmcgUFJPQ0VTU19DcmVhdGUuCgoJKiBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jOiBMdWMgVG91cmFuZ2VhdSA8bHVjQG1hY2FkYW1pYW4uY29tPgoJSW1hZ2VMaXN0X0dldEljb24gYnVnIGZpeC4KCgkqIHdpbjMyL3RpbWUuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCUNvcnJlY3RlZCBhIHByb2JsZW0gaW4gR2V0VGltZVpvbmVJbmZvcm1hdGlvbigpIGR1ZSBhIGNoYW5nZSB0bwoJbWt0aW1lKCkgaW4gZ2xpYmMtMi4xLjEgd2hlbiBkYXlsaWdodCBzYXZpbmcgdGltZSBpcyBpbiBlZmZlY3QuCgoJKiBkZWJ1Z2dlci9kYl9kaXNhc20uYzogUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglDaGFuZ2VkIEsmUiBDIGZ1bmN0aW9uIGRlZmluaXRpb24gdG8gQU5TSSBDLgoKCSogZ3JhcGhpY3MvcHNkcnYvYml0bWFwLmMsIGluY2x1ZGUvcHNkcnYuaDoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCVBTRFJWX1N0cmV0Y2hESUJpdHMgc2hvdWxkIHVzZSBsb2dpY2FsIGNvLW9yZHMuCglTb21lIHZlcnNpb25zIG9mIGdob3N0c2NyaXB0IHNlZW0gdG8gZWF0IG9uZSB0b28gbWFueSBjaGFyYWN0ZXJzIG9mCglpbWFnZSBkYXRhLiBBZGQgYSAnJScgdG8gdGhlIG91dHB1dCBmaWxlIHRvIHdvcmsgYXJvdW5kIHRoaXMuCgoJKiByZWxheTMyL3duYXNwaTMyLnNwZWM6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglGaXhlZCBXTkFTUEkzMiBvcmRpbmFscy4KCgkqIGluY2x1ZGUvd2luYmFzZS5oOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQWRkZWQgdGhlIGZ1bmN0aW9uIGRlZmluaXRpb25zIG9mIEdldFN0YXJ0dXBJbmZvKigpLgoKCSogZG9jdW1lbnRhdGlvbi9zdGF0dXMvZGRlLCBtaXNjL2RkZW1sLmM6CglLZWl0aCBNYXR0aGV3cyA8a2VpdGhfbUBzd2VlbmV5LmRlbW9uLmNvLnVrPgoJMXN0IGN1dCBpbXBsZW1lbnRhdGlvbiBvZiBEZGVOYW1lU2VydmljZSAob21pdHMgbW9uaXRvciBjYWxsYmFjaykKCTFzdCBjdXQgaW1wbGVtZW50YXRpb24gb2YgRGRlS2VlcFN0cmluZ0hhbmRsZSAocHJvYmFibHkgY29tcGxldGUpCglEZGVJbml0aWFsaXplVyAtIG1pbm9yIGNoYW5nZXMgdG8gaW5pdGlhbGlzZSBzZXJ2aWNlIG5hbWVzIHN0cnVjdHVyZQoJRGRlR2V0TGFzdEVycm9yIC0gc3RhcnQgb2YgcHJvcGVyIGxhc3QgZXJyb3IgcmV0cmlldmFsCglEZGVDcmVhdGVTdHJpbmdIYW5kbGUxNiAtIGFkZGVkIGNvZGUgZm9yIGRlZmF1bHQgY29kZXBhZ2Ugd2hlcmUgbm90CglzdXBwbGllZC4KCVZhcmlvdXMgZG9jdW1lbnRhcnkvY29tbWVudCBjb3JyZWN0aW9ucy4KCkZyaSBKdW4gMTEgMTg6MzM6NDYgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvcHJvY2Vzcy5oLCBtZW1vcnkvZW52aXJvbi5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJVXNlIHRoZSBub3JtYWwgZW52aXJvbm1lbnQgcm91dGluZXMgdG8gYnVpbGQgdGhlIGVudiBkYiBvZiB0aGUgaW5pdGlhbAoJcHJvY2Vzcy4KCgkqIGluY2x1ZGUvc2VydmVyLmgsIHNlcnZlci9jb25zb2xlLmMsIHNlcnZlci9vYmplY3QuaCwgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3Byb2Nlc3MuaCwgc2VydmVyL3RyYWNlLmMsIHRvb2xzL21ha2VfcmVxdWVzdHMsIHdpbjMyL2NvbnNvbGUuYzoKCVJldHVybiBjb25zb2xlIGhhbmRsZXMgaW4gYWxsb2NfY29uc29sZSByZXF1ZXN0LgoJRml4ZWQgcmVhZF9jb25zb2xlX2lucHV0IHBhcmFtZXRlcnMgdG8gY29uZm9ybSB0byB0aGUgcmVwbHkgc3RydWN0dXJlCglkZWNsYXJhdGlvbi4KCk1vbiBKdW4gIDcgMTc6NDY6MzkgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG9iamVjdHMvYml0bWFwLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgQ3JlYXRlQ29tcGF0aWJsZUJpdG1hcCB3aGVuIGNhbGxlZCB3aXRoIDAgd2lkdGggb3IgaGVpZ2h0LgoKCSogbXVsdGltZWRpYS9tbWlvLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgbW1pb0Rlc2NlbmQgd2hlbiBjYWxsZWQgd2l0aCBhIHBhcmVudCBjaHVuay4KCgkqIGxvYWRlci9zaWduYWwuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglUcnlpbmcgdG8gZml4IHNpZ2FsdHN0YWNrKCkgcHJvYmxlbSByZXBvcnRlZCBieSBEZWJpYW4gdXNlcnMuCglTSUdUUkFQIG1pZ2h0IGJlIHVuZGVmaW5lZCAoYmVvcykuCgoJKiBvbGUvdHlwZWxpYi5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIFRMQl9SZWFkIChjYW4gZWFzaWx5IGdldCBjb3VudCE9Ynl0ZXNyZWFkIGF0IHRoZSBlbmQgb2YgdGhlIGZpbGUpLgoJRml4ZWQgVExCX0ZpbmRUbGIgKHN0cnN0ciBvbiBiaW5hcnkgZGF0YSB3aWxsIG5vdCB3b3JrKS4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCA+PiBhbmQgKiBvcGVyYXRvciBwcmVjZWRlbmNlIHByb2JsZW0uCgoJKiB3aW5kb3dzL3gxMWRydi9tb3VzZS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIG9yZGVyIGZvciBlbnRlcmluZyBjcml0aWNhbCBzZWN0aW9ucyAoWDExIHZzLiBXbmRMb2NrKSB3aGVuCgljYWxsaW5nIFgxMURSVl9NT1VTRV9TZXRDdXJzb3IuCgoJKiBsb2FkZXIvbW9kdWxlLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQ29uc3VsdCBuZS5vcGVyYXRpbmdfc3lzdGVtIGZpZWxkIGZvciBORSBmaWxlcyBpbiBHZXRCaW5hcnlUeXBlKCkuCgoJKiBzZXJ2ZXIvcHJvY2Vzcy5jOiBGaXhlZCBpbml0aWFsIHByb2Nlc3MgcmVmY291bnQuCgpTdW4gSnVuICA2IDE3OjI4OjIxIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkb2N1bWVudGF0aW9uL3N0YXR1cy9kaXJlY3RwbGF5LCBsb2FkZXIvZG9zL01ha2VmaWxlLmluLCBkb2N1bWVudGF0aW9uL01ha2VmaWxlLmluLCBkb2N1bWVudGF0aW9uL2Nkcm9tLWxhYmVsczoKCUZvcmNlZCBjb21taXQgdG8gZ2V0IHJpZCBvZiB0aGUgdmVuZG9yIGJyYW5jaAoKCSogcHJvZ3JhbXMvY21kbGd0c3QvLmN2c2lnbm9yZTogQWRkZWQgY21kbGdyLmgKCgkqIHByb2dyYW1zL3JlZ2FwaS9yZWdhcGkuYzoKCUF2b2lkIHVzZSBvZiBzdHJuY21waSAocmVwb3J0ZWQgYnkgUm9uIENlbWVyKS4KCgkqIGluY2x1ZGUvd2luZS93aW5lc3RyaW5nLmgsIG11bHRpbWVkaWEvam95c3RpY2suYywgaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2ludXNlci5oOgoJTW92ZWQgaW5jbHVzaW9uIG9mIHdpbmVzdHJpbmcuaCB0byB3aW5lYmFzZS5oLgoJQWRkZWQgV2luZWxpYiBtYWNyb3MgZm9yIGxzdHJuY21wIGZ1bmN0aW9ucy4KCgkqIGNvbnRyb2xzL3Njcm9sbC5jOiBSb24gQ2VtZXIgPHJvbmNlbWVyQGd0ZS5uZXQ+CglGaXhlcyBmb3Igc2V2ZXJhbCBidWdzIGluIHdoaWNoIHBvcnRpb25zIG9mIHRoZSBzY3JvbGxiYXIgd2VyZSBub3QKCWJlaW5nIHJlZHJhd24gY29ycmVjdGx5LCB0aGUgZm9jdXMgcmVjdGFuZ2xlIHdhcyBub3QgYmVpbmcgY29ycmVjdGx5CglyZW1vdmVkIGZyb20gdGhlIHRodW1iIGJlZm9yZSByZWRyYXdpbmcsIGV0Yy47IGFkZGVkIGNvbXBsZXRlIFdpbjl4CglhbmQgV2luTlQgbG9vayBhbmQgZmVlbCBzdXBwb3J0LgoKCSogd2luZG93cy9zeXNtZXRyaWNzLmM6IFJvbiBDZW1lciA8cm9uY2VtZXJAZ3RlLm5ldD4KCUZpeGVzIGZvciBXaW45eCBhbmQgV2luTlQgbG9vayBhbmQgZmVlbC4KCgkqIGZpbGVzL2Rvc19mcy5jOiBDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCUphbWVzIEFiYmF0aWVsbG8gPGFiYmV5akB3cGkuZWR1PgoJRml4ZWQgcmVzcG9uc2Ugb2YgR2V0RnVsbFBhdGhOYW1lQSB3aGVuIGJ1ZmZlcj09TlVMTC4KCgkqIGZpbGVzL2ZpbGUuYzogVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQ3JlYXRlRmlsZUEvRklMRV9Eb09wZW5GaWxlOiBhZGQgdmVyYm9zZSByZXBvcnRpbmcgb2YgYXJndW1lbnRzLgoKCSogY29uZmlndXJlLmluLCBwcm9ncmFtcy9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2NtZC8uY3ZzaWdub3JlLCBwcm9ncmFtcy93Y21kL0NoYW5nZUxvZywgcHJvZ3JhbXMvd2NtZC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2NtZC9SRUFETUUsIHByb2dyYW1zL3djbWQvYmF0Y2guYywgcHJvZ3JhbXMvd2NtZC9idWlsdGlucy5jLCBwcm9ncmFtcy93Y21kL2RpcmVjdG9yeS5jLCBwcm9ncmFtcy93Y21kL21ha2VmaWxlLmJjYywgcHJvZ3JhbXMvd2NtZC93Y21kLmgsIHByb2dyYW1zL3djbWQvd2NtZG1haW4uYywgcHJvZ3JhbXMvd2NtZC93Y21kcmMucmMsIGNvbmZpZ3VyZToKCURhdmUgUGlja2xlcyA8ZGF2ZXBAbnVnYXRlLmRlbW9uLmNvLnVrPgoJQWRkZWQgV2luZSBjb21tYW5kLWxpbmUgaW50ZXJwcmV0ZXIuCgoJKiBpZjE2MzIvdGh1bmsuYywgaW5jbHVkZS9jYWxsYmFjay5oLCBtaXNjL2NhbGxiYWNrLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVJlbW92ZWQgQ2FsbGJhY2suQ2FsbFRhc2tSZXNjaGVkdWxlUHJvYygpLgoKCSogaW5jbHVkZS9tYWluLmgsIG1pc2NlbXUvbWFpbi5jLCB0b29scy9idWlsZC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglTd2l0Y2ggc3RhY2tzIGluIENBTEwzMl9Jbml0KCkuCgoJKiBsb2FkZXIvdGFzay5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBpbmNsdWRlL3Byb2Nlc3MuaCwgaW5jbHVkZS90YXNrLmg6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCTE2LWJpdCBzY2hlZHVsZXIgcmVvcmdhbml6ZWQ6IHJ1biBhbGwgdGFza3MgaW4gdGhlaXIgb3duIHRocmVhZC4KCVByb2Nlc3MgY3JlYXRpb24gc2VxdWVuY2UgYWRhcHRlZCB0byBuZXcgc2NoZWR1bGVyLgoKCSogaW5jbHVkZS9zZXJ2aWNlcy5oLCBsb2FkZXIvbWFpbi5jLCBzY2hlZHVsZXIvc2VydmljZXMuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJUmVtb3ZlZCBTRVJWSUNFX0V4aXQoKS4KCgkqIHdpbmRvd3MvcXVldWUuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglSZWxlYXNlIFdORCBsb2NrIGJlZm9yZSBjYWxsaW5nIFBvc3RFdmVudDE2KCkuCgoJKiBpbmNsdWRlL3duYXNwaTMyLmg6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglBZGQgc29tZSBkZWZpbmVzLgoKCSogZGxscy93bmFzcGkzMi93aW5hc3BpMzIuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUFTUElfRXhlY1Njc2lDbWQ6IGJldHRlciByZXR1cm4gdmFsdWUgYW5kIHZlcmJvc2UgZXJyb3Igd2hlbiBubyBkZXZpY2UKCWZvdW5kLgoKCSogbG9hZGVyL21vZHVsZS5jOiBHdXkgQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJVXNlIFNlYXJjaFBhdGggdG8gdGVzdCBmb3IgZXhpc3RhbmNlIG9mIHByb2dyYW1zIGluIGxwQ21kTGluZQoJcHJvY2Vzc2luZy4gRm9yIGxwQXBwbE5hbWUgZG8gbm90IGFwcGVuZCAiLmV4ZSIgYW5kIHVzZQoJRE9TRlNfR2V0RnVsbE5hbWUgdG8gbG9jYXRlIHRoZSBwcm9ncmFtLiBNb3ZlIG1vZHVsZSBmaW5kIHByb2Nlc3MKCWFmdGVyIGZsYWcgdGVzdGluZyBhbmQgcHJvdmlkZSBxdWljayBleGl0IGlmIG5vdCBmb3VuZC4KCgkqIHdpbmRvd3MvZGlhbG9nLmM6IFNsYXZhIE1vbmljaCA8U2xhdmEuTW9uaWNoQG5ldG1hbmFnZS5jb20+CglJbXBsZW1lbnRlZCBkaWFsb2cgdW5pdHMgLT4gcGl4ZWxzIGNvbnZlcnNpb24gdmVyeSBjbG9zZSB0byBob3cgaXQncwoJYWN0dWFsbHkgZG9uZSBieSBXaW5kb3dzLgoKU2F0IEp1biAgNSAxNToyMzoyMCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jb21tZGxnL2NvbG9yZGxnLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnLmMsIGRsbHMvY29tbWRsZy9mb250ZGxnLmMsIGluY2x1ZGUvY29tbWRsZy5oLCBpbmNsdWRlL2luaXRndWlkLmgsIGluY2x1ZGUvb2JqYmFzZS5oLCBpbmNsdWRlL29sZTIuaCwgaW5jbHVkZS93aW5kZWYuaCwgaW5jbHVkZS93aW5lL29ial9kYXRhb2JqZWN0LmgsIGluY2x1ZGUvd2luZS9vYmpfaW5wbGFjZS5oLCBpbmNsdWRlL3dpbmUvb2JqX21vbmlrZXIuaCwgaW5jbHVkZS93aW5lL29ial9vbGVhdXQuaCwgaW5jbHVkZS93aW5lL29ial9vbGVvYmouaCwgaW5jbHVkZS93aW5lcnJvci5oLCBpbmNsdWRlL3dpbmdkaS5oLCBpbmNsdWRlL3dpbnVzZXIuaCwgaW5jbHVkZS93dHlwZXMuaCwgb2xlL2JpbmRjdHguYywgb2xlL21vbmlrZXIuYzoKCVBhdWwgUXVpbm4gPHBhdWxxQGNvcmVsLmNhPgoJU29tZSBub24tdGhyZWF0ZW5pbmcgZml4ZXMgdG8gc29tZSBoZWFkZXJzLCBhcyB3ZWxsIGFzIHNvbWUgY2FzdGluZwoJY2hhbmdlcyB0aGF0IG1ha2Ugd2luZWxpYiBtb3JlIHdpbjMyIGNvZGUgY29tcGF0aWJsZS4KCgkqIGZpbGVzL2RyaXZlLmMsIGluY2x1ZGUvd2luYmFzZS5oLCByZWxheTMyL2tlcm5lbDMyLnNwZWM6Cgk8ZGF2ZXBAbnVnYXRlLmRlbW9uLmNvLnVrPgoJU3R1YiBmb3IgU2V0Vm9sdW1lTGFiZWwoKS4KCgkqIHdpbmRvd3MvbWVzc2FnZS5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQWRkIGJhY2sgbG9zdCB0cmVhdG1lbnQgb2YgSFdORF9UT1BNT1NULgoKCSogd2luZG93cy94MTFkcnYvZXZlbnQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJVHJ5IHRvIGltcHJvdmUgQ29uZmlndXJlTm90aWZ5IGV2ZW50IHByb2Nlc3NpbmcuCgoJKiBvYmplY3RzL3Blbi5jOiBKb3NodWEgVGhpZWxlbiA8dGhpZWxlbkBuZXRwZXJzb24ubmV0PgoJQWxsb3cgcGVucyB3aXRoIHN0eWxlcyBncmVhdGVyIHRoYW4gUFNfSU5TSURFRlJBTUUgdG8gYmUgY3JlYXRlZCB3aXRoCglFeHRDcmVhdGVQZW4uCgoJKiByZWxheTMyL29sZWF1dDMyLnNwZWMsIGluY2x1ZGUvZGVidWdkZWZzLmgsIGluY2x1ZGUvd2luZS9vYmpfb2xlYXV0LmgsIG9sZS90eXBlbGliLmMsIG9sZS90eXBlbGliLmg6CglSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJUmVhZC9sb2FkIHR5cGUgbGlicmFyaWVzLiBJbXBsZW1lbnRhdGlvbiBvZiBJVHlwZUxpYiwgSVRZcGVJbmZvLAoJSVR5cGVMaWIyIGFuZCBJVHlwZUluZm8yIG1ldGhvZHMuCgoJKiBvbGUvb2xlMmRpc3AuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCUFsbG93IE5VTEwgYXMgYXJndW1lbnQgdG8gU3lzRnJlZVN0cmluZyBpbiBhY2NvcmRhbmNlIHdpdGggU0RLLgoKCSogREVWRUxPUEVSUy1ISU5UUzogS2xhYXMgdmFuIEdlbmQgPGtsYWFzQHZhbmdlbmQuZGVtb24ubmw+CgktIG1vcmUgdXAtdG8tZGF0ZSBkZXNjcmlwdGlvbiBvZiBzb3VyY2UgdHJlZQoJLSBiZXR0ZXIgZXhhbXBsZSBvZiByZXF1aXJlZCBjb21tZW50cyBmb3IgYW4gQVBJIGltcGxlbWVudGF0aW9uCgktIHJlcGxhY2VtZW50IG9mIFdJTkVfUEFDS0VEIGJ5ICJwc2hwYWNrMS5oIiwgZXRjLgoJLSBuYW1pbmcgY29udmVudGlvbnMgZm9yIG5vbi1hcGkgY2FsbHMgYW5kIHR5cGVzCgktIGxvY2F0aW9uIGNvbnZlbnRpb25zIGZvciBub24tYXBpIGhlYWRlciBmaWxlcyBhbmQgcHJvdG90eXBlcwoKCSogcmVsYXkzMi9tcHIuc3BlYywgaW5jbHVkZS93aW5uZXR3ay5oLCBpbmNsdWRlL3duZXQuaCwgbWlzYy9uZXR3b3JrLmM6CglSb2JlcnQgVyBIYWxsIDxib2JoQG4tY2FudHJlbGwuZGVtb24uY28udWs+CglBZGRlZCAyIHN0dWJzLgoKCSogaWYxNjMyL3RodW5rLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJRml4ZWQgYmVoYXZpb3VyIG9mIEFsbG9jLi5UaHVua2xldENhbGxiYWNrW0V4XSBmb3IgTlVMTCB0YXJnZXQuCgoJKiB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCB3aW5kb3dzL3gxMWRydi93bmQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJRml4ZWQgcG90ZW50aWFsIG1lbW9yeSBjb3JydXB0aW9uIGluIEVWRU5UX1F1ZXJ5Wk9yZGVyLgoJRml4ZWQgcG90ZW50aWFsIFggc3luY2hyb25pemF0aW9uIHByb2JsZW0gaW4gWDExRFJWX1dORF9TZXRIb3N0QXR0ci4KCgkqIGZpbGVzL2RpcmVjdG9yeS5jOiBHdXkgQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJQ29ycmVjdCBzZWFyY2ggb3JkZXIgaW4gU2VhcmNoUGF0aCBmb3IgV2luIDMuMS85NS85OC4gU3RpbGwgYnJva2VuIGZvciBOVC4KCgkqIHdpbmRvd3Mvd2luLmM6IFNsYXZhIE1vbmljaCA8U2xhdmEuTW9uaWNoQG5ldG1hbmFnZS5jb20+CglvIGNoZWNrIGZvciBib3RoIENXX1VTRURFRkFVTFQgYW5kIENXX1VTRURFRkFVTFQxNi4KCW8gaWYgeCBpcyBDV19VU0VERUZBVUxUIChvciBDV19VU0VERUZBVUxUMTYpIGFuZCB5IGlzICpub3QqCgkgIENXX1VTRURFRkFVTFQgKG9yIENXX1VTRURFRkFVTFQxNikgdGhlbiB1c2UgeSBhcyBhIHNlY29uZAoJICBwYXJhbWV0ZXIgdG8gU2hvd1dpbmRvdygpLiBTb21lIGFwcHMgKENBTEMuRVhFIGZvciBXaW45OAoJICBpcyBvbmUgb2YgdGhlbSkgdXNlIHRoaXMgdW5kb2N1bWVudGVkIGZlYXR1cmUgdG8gY3JlYXRlCgkgIGhpZGRlbiB3aW5kb3cgd2l0aCBXU19WSVNJQkxFIHN0eWxlIHNldC4KCgkqIHJlbGF5MzIvY29tY3RsMzIuc3BlYywgZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmM6CglJYW4gU2NobWlkdCA8aXJzbWFuQGlhZy5uZXQ+CglBZGRlZCBwYXJ0aWFsIGltcGxlbWVudGF0aW9uIGZvciBEUEFfTG9hZFN0cmVhbSBhbmQgc3R1YiBmb3IKCURQQV9TYXZlU3RyZWFtLiAgVGhhbmtzIHRvIEVyaWMgS29obCAoZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGUpIGZvcgoJdGhlIHBhcnRpYWwgaW1wbGVtZW50YXRpb24gYW5kIHBhcmFtZXRlciBpbmZvcm1hdGlvbi4KCgkqIGRlYnVnZ2VyL3N0YWJzLmM6IFBhdmVsIFJvc2tpbiA8cGF2ZWxfcm9za2luQGdlb2NpdGllcy5jb20+CglNYWtlIGl0IHBvc3NpYmxlIHRvIGxpbmsgV2luZSBzdGF0aWNhbGx5IChhdCBsZWFzdCBvbiBSZWRIYXQgNi4wKS4KCgkqIGNvbnRyb2xzL21lbnUuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglXaGVuIGxvb2tpbmcgaW50byBzeXMgbWVudSwgY2hlY2sgaWYgaXRlbXMgYXJlIHByZXNlbnQgYmVmb3JlCglkZXJlZmVyZW5jaW5nLgoKCSogZG9jdW1lbnRhdGlvbi9BdHRpYy93aW5lLm1hbjogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBdXRvY29uZmlndXJlIHRoZSBkaXJlY3RvcmllcyBpbiB0aGUgbWFucGFnZS4KCgkqIGluY2x1ZGUvbWVzc2FnZS5oLCBpbmNsdWRlL3R0eWRydi5oLCBpbmNsdWRlL3gxMWRydi5oLCB3aW5kb3dzL2V2ZW50LmMsIHdpbmRvd3MvdHR5ZHJ2L2V2ZW50LmMsIHdpbmRvd3MvdHR5ZHJ2L2luaXQuYywgd2luZG93cy93aW5wb3MuYywgd2luZG93cy94MTFkcnYvZXZlbnQuYywgd2luZG93cy94MTFkcnYvaW5pdC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglSZW1vdmVkIER1bW15TW90aW9uTm90aWZ5IEVWRU5UIGRyaXZlciByb3V0aW5lLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRvY3VtZW50YXRpb24vLmN2c2lnbm9yZSwgZG9jdW1lbnRhdGlvbi9NYWtlZmlsZS5pbiwgZG9jdW1lbnRhdGlvbi93aW5lLm1hbi5pbjoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQXV0b2NvbmZpZ3VyZSB0aGUgZGlyZWN0b3JpZXMgaW4gdGhlIG1hbnBhZ2UuCgoJKiBmaWxlcy9maWxlLmMsIGluY2x1ZGUvd2luYmFzZS5oLCByZWxheTMyL2tlcm5lbDMyLnNwZWM6CglKYW1lcyBKdXJhbiA8anJqMTIwQHBzdS5lZHU+CglBZGQgc3R1YiBmb3IgTG9ja0ZpbGVFeCAoS0VSTkVMMzIuNTEzKS4KCgkqIGRvY3VtZW50YXRpb24vc3RhdHVzL2ludGVybmF0aW9uYWxpc2F0aW9uOgoJS2xhYXMgdmFuIEdlbmQgPGtsYWFzQHZhbmdlbmQuZGVtb24ubmw+CglDdXJyZW50IHN0YXR1cyBvZiBXaW5lIG9uIGludGVybmF0aW9uYWxpc2F0aW9uLgoKCSogY29udHJvbHMvYnV0dG9uLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglEbyBub3QgcHJvY2VzcyBXTV9MQlVUVE9OVVAgbWVzc2FnZSBpbiBCdXR0b25XbmRQcm9jKCkKCXdoZW4gdGhlIG1vdXNlIGlzIG5vdCBjYXB0dXJlZC4KCgkqIGdyYXBoaWNzL3BzZHJ2L2luaXQuYywgb2JqZWN0cy9kYy5jOgoJTm9lbCBCb3J0aHdpY2sgPG5vZWxAbWFjYWRhbWlhbi5jb20+CglGcm9tIENyZWF0ZUNvbXBhdGlibGVEQywgcGFzcyB0aGUgZGV2aWNlIG5hbWUgYXNzb2NpYXRlZCB3aXRoIHRoZQoJc291cmNlIERDIGluIG9yZGVyIHRvIGFsbG93IFBTRFJWX0NyZWF0ZURDIHRvIGxvY2F0ZSB0aGUgcHJpbnRlciBpbmZvCglmb3IgdGhlIGRldmljZS4KCgkqIG11bHRpbWVkaWEvbWNpc3RyaW5nLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgc29tZSBkaWdpdGFsIHZpZGVvIGludGVyZmFjZQoJRml4ZWQgYSBmZXcgYnVncyAoZGV2aWNlIG5hbWVzIGFyZSBubyBsb25nZXIgY29udmVydGVkIHRvIHVwcGVyIGNhc2UsCglhZGRlZCBjYWxsIGJhY2sgd2luZG93LCBhbGwgc3RydWN0dXJlcyBtb3ZlZCB0byAzMiBiaXQuLi4pLgoKCSogaWYxNjMyL3RodW5rLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJV29ya2Fyb3VuZyBnY2MgMi43LjIueCBzaWcgMTEgaXNzdWUuCgoJKiBpbmNsdWRlL211bHRpbWVkaWEuaCwgbXVsdGltZWRpYS9tY2kuYywgbXVsdGltZWRpYS9tbXN5c3RlbS5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCAoc3RpbGwgaW5jb21wbGV0ZSkgaGFuZGxpbmcgb2YgTUNJX0JSRUFLIGNvbW1hbmQuCgoJKiBkb2N1bWVudGF0aW9uL25vLXdpbmRvd3M6IEphbWVzIEp1cmFuIDxqcmoxMjBAcHN1LmVkdT4KCVVwZGF0ZWQgZG9jdW1lbnRhdGlvbi9uby13aW5kb3dzLgoKCSogZ3JhcGhpY3MvZGRyYXcuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTcGVlZHVwIGVuaGFuY2VtZW50IGZvciB0aGUgOC0+MTYgYW5kIDgtPjMyIGNvcHkgbG9vcCBob3RzcG90cywKCXVzaW5nIGEgZmFzdGVyIGdlbmVyaWMgcm91dGluZSBhbmQgc29tZSBpbmxpbmUgYXNzZW1ibHkgZm9yIGkzODYKCShjbGVhbnVwcyBieSBPdmUpLgoKRnJpIEp1biAgNCAxOTo0OTo1NCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2VydmVyL2hhbmRsZS5jLCBzZXJ2ZXIvaGFuZGxlLmgsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9wcm9jZXNzLmgsIHNlcnZlci90aHJlYWQuYzoKCU1hZGUgaGFuZGxlIHRhYmxlIGEgc2VwYXJhdGUgb2JqZWN0LgoJR2xvYmFsIGhhbmRsZSB0YWJsZSBpcyBubyBsb25nZXIgYm91bmQgdG8gYSBwcm9jZXNzLgoJUmVtb3ZlZCBzcGVjaWFsIGhhbmRsaW5nIG9mIHRoZSBpbml0aWFsIHByb2Nlc3MuCgoJKiBzZXJ2ZXIvbWFpbi5jLCBzZXJ2ZXIvb2JqZWN0LmMsIHNlcnZlci9vYmplY3QuaDoKCUFkZGVkIG9wdGlvbmFsIGRlYnVnZ2luZyBjb2RlIGluIG9iamVjdCBtYW5hZ2VtZW50LgoKU2F0IE1heSAyOSAxNDoyNzoyNyAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2NoZWR1bGVyL2NsaWVudC5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzY2hlZHVsZXIvc3lzZGVwcy5jLCBzY2hlZHVsZXIvc3lzbGV2ZWwuYywgc2NoZWR1bGVyL3RocmVhZC5jLCB3aW5kb3dzL3F1ZXVlLmMsIHdpbmRvd3Mvd2lucHJvYy5jLCBpbmNsdWRlL3RocmVhZC5oLCBsb2FkZXIvdGFzay5jOgoJR290IHJpZCBvZiBUSFJFQURfSW5pdERvbmUuCglNYWRlIFRIUkVBRF9DdXJyZW50KCkgaW5saW5lLgoJTW92ZWQgc2VydmVyIHRpZCBpbnRvIFRFQi4KCgkqIHdpbmRvd3MvZGlhbG9nLmM6IEx1YyBUb3VyYW5nZWF1IDxsdWNAbWFjYWRhbWlhbi5jb20+CglSZWltcGxlbWVudGVkIHRoZSBDaGVja1JhZGlvQnV0dG9uIGZ1bmN0aW9uLgoKCSogZGxscy9jb21jdGwzMi90YWIuYzogQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglKYW1lcyBBYmJhdGllbGxvIDxhYmJleWpAd3BpLmVkdT4KCUZpeGVkIGluY29ycmVjdCBsb29rdXAgb2YgYmFja2dyb3VuZCBjb2xvci4KCgkqIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYywgZGxscy9jb21jdGwzMi9zdGF0dXMuYzoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJSmFtZXMgQWJiYXRpZWxsbyA8YWJiZXlqQHdwaS5lZHU+CglGaXhlZCBwcm9ibGVtcyB3aGVuIHVzaW5nIG11bHRpcGxlIHN0eWxlIGZsYWdzIHRvZ2V0aGVyLgoKCSogZGxscy9jb21jdGwzMi90b29sdGlwcy5jOiBDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCUphbWVzIEFiYmF0aWVsbG8gPGFiYmV5akB3cGkuZWR1PgoJRml4ZWQgYSBwcm9ibGVtIHdoZW4gdXNpbmcgc3RyaW5nIHJlc291cmNlcyBhcyB0b29sdGV4dC4KCgkqIHdpbmRvd3Mvd2luLmM6IEZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIGEgYmVoYXZpb3Igb2YgdGhlIGZvY3VzIHdoZW4gYSBwYXJlbnQgd2luZG93IGlzIGRpc2FibGVkLgoKCSogZ3JhcGhpY3MveDExZHJ2L2dyYXBoaWNzLmM6IEpvc2h1YSBUaGllbGVuIDx0aGllbGVuQG5ldHBlcnNvbi5uZXQ+CglGaXhlZCBhIGJ1ZyB3aGljaCBjYXVzZXMgdGhlIFBvbHlCZXppZXIgdG8gbm90IGJlIHVwZGF0ZWQgb24gcmVkcmF3Cgkod2hlbiB5b3Ugd2FudCB0aGVtIHRvIGJlKS4KCgkqIHdpbmRvd3MvaW5wdXQuYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglSZW1vdmUgdW5uZWNlc3Nhcnkgd2FybmluZyBpbiBUcmFuc2xhdGVBY2NlbGF0b3IuCgoJKiBzZXJ2ZXIvaGFuZGxlLmM6CglGaXhlZCBkdXBsaWNhdGVfaGFuZGxlIHRvIHdvcmsgd2l0aCBwc2V1ZG8taGFuZGxlcyAocmVwb3J0ZWQgYnkgTWFyY3VzCglNZWlzc25lcikuCgoJKiBkbGxzL2NvbW1kbGcvY2RsZ194eC5yYywgZGxscy92ZXIvdmVyMTYuYywgZGxscy92ZXJzaW9uL2luZm8uYywgZGxscy92ZXJzaW9uL2luc3RhbGwuYywgZGxscy92ZXJzaW9uL3Jlc291cmNlLmMsIGluY2x1ZGUvdmVyLmgsIGluY2x1ZGUvd2ludmVyLmgsIHRvb2xzL3dyYy93cmN0eXBlcy5oOgoJUGF1bCBRdWlubiA8cGF1bHFAY29yZWwuY2E+Cgl2ZXIuaCBpcyBhIGxlZ2FjeSBoZWFkZXIuIHdpbnZlci5oIHNob3VsZCBiZSB1c2VkIGluc3RlYWQuCgoJKiBkbGxzL3RhcGkzMi9waG9uZS5jLCBtaXNjL2NydGRsbC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCBzb21lIHdhcm5pbmdzLgoKCSogaW5jbHVkZS9jb21tY3RybC5oLCBpbmNsdWRlL2xpc3R2aWV3LmgsIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCUx1YyBUb3VyYW5nZWF1IDxsdWNAbWFjYWRhbWlhbi5jb20+CgktIFJlaW1wbGVtZW50ZWQgdGhlIHNjcm9sbGluZyB1c2luZyBTZXRTY3JvbGxJbmZvIGFuZCBHZXRTY3JvbGxJbmZvLgoJLSBJbXBsZW1lbnRlZCBMVk1fRklORElURU0gbWVzc2FnZS4KCS0gQWRkZWQgc29tZSBuZXcgd2luZG93IHN0eWxlcy4KCS0gRml4ZWQgc29tZSBidWdzIGFuZCBleHRlbmRlZCBhIG51bWJlciBvZiBleGlzdGluZyBmdW5jdGlvbnMuCgktIE1vZGlmaWVkIHNlbGVjdGlvbiBmdW5jdGlvbnMgdG8gc3VwcG9ydCBhcmVhIHNlbGVjdGlvbiAoZm9yIGdyb3VwCgkgIHNlbGVjdGlvbiBpbiBMVlNfSUNPTiBhbmQgTFZTX1NNQUxMSUNPTikuCgoJKiBtaXNjL2NvbW0uYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglGaXhlZCBhIGNvdXBsZSBvZiBtaXNzaW5nIGV2ZW50IG5vdGlmaWNhdGlvbnMuIFNvbWUgbW9yZSBkZWJ1Z2dpbmcKCW1lc3NhZ2VzLgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzogUmlraGFyZHVyIEVnaWxzc29uIDxyaWthcmR1ckBza3kuZnI+CglJY2VsYW5kaWMga2V5Ym9hcmQgc3VwcG9ydC4KCgkqIGdyYXBoaWNzL2RkcmF3X3ByaXZhdGUuaCwgZ3JhcGhpY3MvZGRyYXcuYzoKCUxpb25lbCBVbG1lciA8dWxtZXJAZGlyZWN0cHJvdmlkZXIubmV0PgoJLSBiZXR0ZXIgZGVidWcgb3V0cHV0IGZvciBzdXJmYWNlIGNyZWF0aW9uCgktIGFkZGVkIChleHBlcmltZW50YWwpIERJQlNlY3Rpb24gaW1wbGVtZW50YXRpb24gb2YgR2V0REMgLyBSZWxlYXNlREMKCgkqIGdyYXBoaWNzL2QzZGRldmljZXMuYzogTGlvbmVsIFVsbWVyIDx1bG1lckBkaXJlY3Rwcm92aWRlci5uZXQ+CglDb3JyZWN0ZWQgd2FybmluZy4KCgkqIGNvbnRyb2xzL21lbnUuYzogUGFzY2FsIExlc3NhcmQgPHBhc2NhbEBtYWNhZGFtaWFuLmNvbT4KCVN1cHBvcnQgVFBNX1JFVFVSTkNNRCBpbiBUcmFja1BvcHVwTWVudS4KCgkqIHdpbjMyL2NvbnNvbGUuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXggPHJldHVybj4ga2V5IChzb21laG93IHdlIGdldCBhIGNvbnRyb2wga2V5c3RhdGUpLgoKCSogbG9hZGVyL2Rvcy9tb2R1bGUuYzogR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglGaXhlZCBjb21waWxhdGlvbiBlcnJvcyBvbiBub24tTGludXggc3lzdGVtcy4KCgkqIGluY2x1ZGUvZGVidWd0b29scy5oOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIG1pc3NpbmcgVFJBQ0UgZGVmaW5lIHdoZW4gTk9fREVCVUdfTVNHUyB3YXMgZGVmaW5lZC4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jOiBJYW4gU2NobWlkdCA8aXJzbWFuQGlhZy5uZXQ+CglBZGRlZCBtaXNzaW5nIFdJTkFQSSBmb3IgU0hWYWxpZGF0ZVVOQy4KCgkqIGRvY3VtZW50YXRpb24vbGFuZ3VhZ2VzOiBLbGFhcyB2YW4gR2VuZCA8a2xhYXNAdmFuZ2VuZC5kZW1vbi5ubD4KCUFkYXB0ZWQgdG8gdGhlIG5ldyBkbGwgcmVzb3VyY2UgaGFuZGxpbmcgYnkgQmVydGhvIFN0dWx0aWVucy4KCk1vbiBNYXkgMjQgMTU6MDI6MTggMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG1pc2Mvc2hlbGwuYzogUmVsZWFzZSB0aGUgV2luMTZMb2NrIGJlZm9yZSBjYWxsaW5nIFdpbkV4ZWMuCgoJKiBzY2hlZHVsZXIvdGhyZWFkLmMsIGluY2x1ZGUvcHJvY2Vzcy5oLCBsb2FkZXIvbmUvbW9kdWxlLmMsIGxvYWRlci90YXNrLmM6CglSZW1vdmVkIHByb2Nlc3MgYXJndW1lbnQgdG8gUFJPQ0VTU19DYWxsVXNlclNpZ25hbFByb2MuCgoJKiBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJTW92ZWQgcmVtYWluaW5nIGluaXRpYWxpc2F0aW9ucyB0byB0aGUgbmV3IHByb2Nlc3MgY29udGV4dC4KCVNodWZmbGVkIHRoaW5ncyBhcm91bmQgYSBiaXQgaW4gUFJPQ0VTU19TdGFydCB0byBhdm9pZCBkZWFkbG9ja3MuCglDaGFuZ2VkIFBST0NFU1NfQ2FsbFVzZXJTaWduYWxQcm9jIHRvIGF2b2lkIGFjY2Vzc2luZyBhbm90aGVyIHByb2Nlc3MKCWFkZHJlc3Mgc3BhY2UuCgoJKiBpbmNsdWRlL3NlcnZlci5oLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvdHJhY2UuYywgdG9vbHMvbWFrZV9yZXF1ZXN0czoKCUFkZGVkIHN1cHBvcnQgZm9yIGR1bXBpbmcgdmFyaWFibGUtc2l6ZSBkYXRhIG9mIHNlcnZlciByZXBsaWVzLgoJQWRkZWQgY21kX2xpbmUgYW5kIGNtZF9zaG93IGluIG5ld19wcm9jZXNzIHJlcXVlc3QuCgoJKiBpZjE2MzIvbW1zeXN0ZW0uc3BlYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglmaXhlZCBidWlsdGluIG1tc3lzdGVtLmRsbCBpbml0IHNlcXVlbmNlCgoJKiBtdWx0aW1lZGlhL0F0dGljL2luaXQuYywgbXVsdGltZWRpYS9NYWtlZmlsZS5pbjoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJcmVtb3ZlZCBvYnNvbGV0ZWQgaW5pdC5jIHNvdXJjZSBmaWxlCgoJKiBpbmNsdWRlL211bHRpbWVkaWEuaDogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglyZW1vdmVkIHVubmVjZXNzYXJ5IE1DSSBkcml2ZXJzIGVudHJ5IHBvaW50CglhZGRlZCB1bmRvY3VtZW50ZWQgbW1zeXN0ZW0gZnVuY3Rpb25zCgoJKiBtdWx0aW1lZGlhL3RpbWUuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+Cgltb3ZlZCB0byBuZXcgdHJhY2UgaW50ZXJmYWNlCglub3cgY2FsbGluZyB0aW1lIGluaXQgZnVuY3Rpb24gZnJvbSBtbXN5c3RlbSBhbmQvb3Igd2lubW0gZW50cnkgcG9pbnQKCgkqIG11bHRpbWVkaWEvbW1zeXN0ZW0uYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglpbmNsdWRlZCBETEwgaW5pdCBzZXF1ZW5jZSAoZnJvbSBvYnNvbGV0ZWQgaW5pdC5jKQoJZml4ZWQgYnVpbHRpbiBtbXN5c3RlbS5kbGwgaW5pdCBzZXF1ZW5jZQoJZml4ZWQgUGxheVNvdW5kIHdoZW4gdXNlZCB3aXRoIGFuIGFzeW5jaHJvbm91cyBhdWRpbyBkcml2ZXIKCWZpeGVkIG1pZGlTdHJlYW0gZnVuY3Rpb25zIGZvciBTdG9wL1BhdXNlL1Jlc3RhcnQgZnVuY3Rpb25zCglmaXhlZCBlcnJvciBoYW5kbGluZyBpbiB3YXZlT3V0T3BlbiB3aXRoIFFVRVJZX0ZPUk1BVCBmbGFnCgoJKiBtdWx0aW1lZGlhL21pZGkuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglpbmNsdWRlZCBtaWRpIGluaXQgc2VxdWVuY2UgKGZyb20gb2Jzb2xldGVkIGluaXQuYykKCW1vdmVkIHRvIG5ldyB0cmFjZSBpbnRlcmZhY2UKCXNpbXBsaWZpZWQgY29kZSB3aXRoIHVzaW5nIG5ldyBjb25maWd1cmF0aW9uIGNvbnN0YW50IChIQVZFX09TU19NSURJKQoJZml4ZWQgZXJyb25lb3VzIHdhcm5pbmdzCgoJKiBtdWx0aW1lZGlhL21jaS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCWluY2x1ZGVkIG1jaSBpbml0IHNlcXVlbmNlIChmcm9tIG9ic29sZXRlZCBpbml0LmMpCgltb3ZlZCB0byBuZXcgdHJhY2UgaW50ZXJmYWNlCgoJKiBtdWx0aW1lZGlhL2F1ZGlvLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJb3V0cHV0OiBiZXR0ZXIgaW50ZXJuYWwgdGhyZWFkIGludGVyZmFjZSAob3J0aG9nb25hbGl6YXRpb24gb2Ygc3RhdGVzIGFuZCBldmVudHMpCglvdXRwdXQ6IHJlbW92ZWQgdXNlIG9mIERTUF9JT0NUTF9HRVRPU1BBQ0UKCW91dHB1dDogZml4ZWQgbGF0ZW5jeSBpbiByZXNldCBtZXNzYWdlcyBoYW5kbGluZwoJb3V0cHV0OiByZXBsYWNlZCBzb21lIHBvbGxpbmcgbWVjaGFuaXNtcyB3aXRoIGJsb2NraW5nIG9uZXMKCW91dHB1dDogZml4ZWQgZ2V0L3NldCB2b2x1bWUgZnVuY3Rpb25zCgoJKiBtdWx0aW1lZGlhL21jaXdhdmUuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+Cgltb3ZlZCB0byB0aGUgbmV3IGRlYnVnIGludGVyZmFjZQoJZml4ZWQgYnVncyBpbiBwYXVzZS9wbGF5L3N0b3AgZnVuY3Rpb25zCglmaXhlZCBzaWduYXR1cmUgb2YgZHJpdmVyIGVudHJ5IHBvaW50CgoJKiBtdWx0aW1lZGlhL21jaW1pZGkuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+Cgltb3ZlZCB0byB0aGUgbmV3IGRlYnVnIGludGVyZmFjZQoJZml4ZWQgYnVncyBpbiBwYXVzZS9wbGF5IGZ1bmN0aW9ucwoJZml4ZWQgc2lnbmF0dXJlIG9mIGRyaXZlciBlbnRyeSBwb2ludAoKCSogbXVsdGltZWRpYS9taXhlci5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVVwZGF0ZWQgdHJhY2VzLgoKCSogd2luZG93cy9kcml2ZXIuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglSZW1vdmUgZXh0cmFuZW91cyB3aW51c2VyMTYuaC4KCgkqIGdyYXBoaWNzL3gxMWRydi9kaWIuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglDaGFuZ2VkIHByaW50ZiBpbnRvIFRSQUNFLgoKCSogZGVidWdnZXIvZXhwci5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGEgZmV3IHR5cG9zLgoKCSogZGVidWdnZXIvc3RhY2suYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglDaGVjayB3aGVuIGJhY2t0cmFja2luZyB0aGUgc3RhY2sgaWYgZnJhbWVzIGFyZSBjb3JyZWN0IChyZWFkYWJsZSkuCgoJKiB3aW5kb3dzL2V2ZW50LmMsIGluY2x1ZGUvbWVzc2FnZS5oLCBpbmNsdWRlL3dpbnNvY2suaCwgbG9hZGVyL21haW4uYywgbG9hZGVyL3Rhc2suYywgbWlzYy93aW5zb2NrLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCU1vdmVkIFdJTlNPQ0sgbmV0d29yayBJTyBldmVudCBoYW5kbGluZyB0byBzcGVjaWFsIHRocmVhZC4KCVJlbW92ZWQgRVZFTlRfV2FpdE5ldEV2ZW50LCBpbnRyb2R1Y2VkIGEgZ2xvYmFsIHNjaGVkdWxlciBldmVudC4KCgkqIG1pc2NlbXUvbWFpbi5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglXYWl0IHVudGlsIGNoaWxkIGluaXRpYWxpemVkIGJlZm9yZSByZXR1cm5pbmcgZnJvbSBQUk9DRVNTX0NyZWF0ZS4KCgkqIHJlbGF5MzIva2VybmVsMzIuc3BlYywgd2luMzIva2VybmVsMzIuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJVXNlIHJlZ2lzdGVyIGZ1bmN0aW9ucyB3aXRoIGFyZ3VtZW50cyBmb3IgTG9nQXBpVGhrLi4uCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IENocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJSmFtZXMgQWJiYXRpZWxsbyA8YWJiZXlqQHdwaS5lZHU+CglDbGVhbmVkIHVwIExJU1RWSUVXX0tleURvd24gYnkgdXNpbmcgTElTVFZJRVdfR2V0TmV4dEl0ZW0uICBSZW1vdmVkIHVudXNlZAoJdmFyaWFibGUgaW4gTElTVFZJRVdfR2V0TmV4dEl0ZW0uCgpTdW4gTWF5IDIzIDIwOjAyOjA1IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL2Rvc2V4ZS5oLCBpbmNsdWRlL21vZHVsZS5oLCBpbmNsdWRlL3BlX2ltYWdlLmgsIGluY2x1ZGUvcHJvY2Vzcy5oLCBpbmNsdWRlL3RocmVhZC5oLCBsb2FkZXIvZG9zL21vZHVsZS5jLCBsb2FkZXIvbW9kdWxlLmMsIGxvYWRlci9uZS9tb2R1bGUuYywgbG9hZGVyL3BlX2ltYWdlLmMsIHJlbGF5MzIva2VybmVsMzIuc3BlYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2NoZWR1bGVyL3RocmVhZC5jLCB3aW4zMi9leGNlcHQuYywgZGxscy9udGRsbC9leGNlcHRpb24uYzoKCVVzZSB0aGUgbmV3IGRlYnVnIGZ1bmN0aW9ucyB0byBzZW5kIGRlYnVnIGV2ZW50cyBhdCBhcHByb3ByaWF0ZSBwbGFjZXMuCglQYXNzIHRoZSBwcm9jZXNzIGNyZWF0aW9uIGZsYWdzIHRvIFBST0NFU1NfQ3JlYXRlLgoKCSogc2NoZWR1bGVyL01ha2VmaWxlLmluLCBzY2hlZHVsZXIvY2xpZW50LmMsIHNjaGVkdWxlci9kZWJ1Z2dlci5jLCB3aW4zMi9uZXdmbnMuYywgd2luMzIvcHJvY2Vzcy5jLCBpbmNsdWRlL3dpbmJhc2UuaCwgbWlzYy9sc3RyLmM6CglJbXBsZW1lbnRlZCB0aGUgV2luMzIgZGVidWcgQVBJIGZ1bmN0aW9ucy4KCgkqIGluY2x1ZGUvc2VydmVyLmgsIGluY2x1ZGUvc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL01ha2VmaWxlLmluLCBzZXJ2ZXIvZGVidWdnZXIuYywgc2VydmVyL29iamVjdC5oLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90aHJlYWQuaCwgc2VydmVyL3RyYWNlLmM6CglBZGRlZCBkZWJ1ZyBldmVudHMgc3VwcG9ydC4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KU3VuIE1heSAyMyAxMDoyNToyNiAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbWVtb3J5L2dsb2JhbC5jLCBtZW1vcnkvaGVhcC5jLCBtZW1vcnkvbGR0LmMsIG1lbW9yeS9zZWxlY3Rvci5jLCBtZW1vcnkvc3RyaW5nLmMsIG1lbW9yeS92aXJ0dWFsLmMsIG9iamVjdHMvYnJ1c2guYywgb2JqZWN0cy9jb2xvci5jLCBvYmplY3RzL2RjLmMsIG9iamVjdHMvZGliLmMsIG9iamVjdHMvZW5obWV0YWZpbGUuYywgb2JqZWN0cy9nZGlvYmouYywgb2JqZWN0cy9tZXRhZmlsZS5jLCBvYmplY3RzL3BhbGV0dGUuYywgb2JqZWN0cy9wZW4uYywgb2JqZWN0cy9yZWdpb24uYywgb2JqZWN0cy90ZXh0LmMsIHNjaGVkdWxlci9oYW5kbGUuYywgc2NoZWR1bGVyL3NlcnZpY2VzLmMsIHNjaGVkdWxlci9zeW5jaHJvLmMsIHNjaGVkdWxlci9zeXNkZXBzLmMsIHNjaGVkdWxlci9zeXNsZXZlbC5jLCBzY2hlZHVsZXIvdGhyZWFkLmMsIHdpbjMyL2NvZGVfcGFnZS5jLCB3aW4zMi9jb25zb2xlLmMsIHdpbjMyL2Vycm9yLmMsIHdpbjMyL2ZpbGUuYywgd2luMzIvaW5pdC5jLCB3aW4zMi9wcm9jZXNzLmMsIHdpbjMyL3N0cnVjdDMyLmMsIHdpbjMyL3RocmVhZC5jLCB3aW4zMi90aW1lLmMsIGRsbHMvbnRkbGwvZmlsZS5jLCBkbGxzL250ZGxsL250LmMsIGRsbHMvbnRkbGwvb20uYywgZGxscy9udGRsbC9yZWcuYywgZGxscy9udGRsbC9ydGwuYywgZGxscy9udGRsbC9ydGxzdHIuYywgZGxscy9udGRsbC9zZWMuYywgZGxscy9udGRsbC9zeW5jLmMsIGRsbHMvbnRkbGwvdGltZS5jLCBtZW1vcnkvYXRvbS5jOgoJQ29udmVydGVkIHRvIHRoZSBuZXcgZGVidWcgaW50ZXJmYWNlLCB1c2luZyBzY3JpcHQgd3JpdHRlbiBieSBQYXRyaWsKCVN0cmlkdmFsbC4KCgkqIHNjaGVkdWxlci9wcm9jZXNzLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogZHdGbGFncyBtdXN0IGRlc2NyaWJlIHRhcmdldCBwcm9jZXNzIGluIFVzZXJTaWduYWxQcm9jLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsb3JkLmM6IElhbiBTY2htaWR0IDxpcnNtYW5AaWFnLm5ldD4KCUFkZGVkIG1pc3NpbmcgV0lOQVBJIHRvIFNIRUxMMzJfNjU0IHN0dWIuICBGaXhlcyBjcmFzaCBpbiBXaW45OAoJRXhwbG9yZXIuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IENocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJSmFtZXMgQWJiYXRpZWxsbyA8YWJiZXlqQHdwaS5lZHU+CglMSVNUVklFV19LZXlEb3duOiBJbnZhbGlkYXRlIHRoZSBsaXN0dmlldyB3aW5kb3cgb25seSB3aGVuIHRoZQoJc2VsZWN0ZWQgaXRlbSBjaGFuZ2VzLgoKCSogaWYxNjMyL2tlcm5lbC5zcGVjLCBtaXNjL3dzcHJpbnRmLmMsIHJlbGF5MzIva2VybmVsMzIuc3BlYywgd2luMzIva2VybmVsMzIuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWRkZWQgX0RlYnVnT3V0cHV0IChLRVJORUwuMzI4KSwgTG9nQXBpVGhrIChLRVJORUwuNDIzKSwgTG9nQXBpVGhrTFNGCgkoS0VSTkVMMzIuNDIpLCBMb2dBcGlUaGtTTCAoS0VSTkVMMzIuNDQpLCBMb2dDQlRoa1NMIChLRVJORUwzMi40NyksCglhbmQgU1NDb25maXJtU21hbGxTdGFjayAoS0VSTkVMLjcwNCkuCgoJKiBpZjE2MzIvZGlzcGxheS5zcGVjLCB3aW5kb3dzL2Rpc3BsYXkuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJRml4IHR5cG8gKHdyb25nIERJU1BMQVkuQ2hlY2tDdXJzb3Igb3JkaW5hbCkuCglTdXBlcmZsdW91cyBGSVhNRSBjb252ZXJ0ZWQgdG8gVFJBQ0UgaW4gQ2hlY2tDdXJzb3IuCgoJKiByZWxheTMyL3JlbGF5Mzg2LmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogc3lzbGV2ZWwgcmVsYXkgY2hlY2sgd2FzIHRvbyBzdHJpY3QuCgoJKiBzZXJ2ZXIvbWFwcGluZy5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCURvIG5vdCB1c2UgcGFnZXNpemUgYWxpZ25lZCBzaXplX2xvdyB0byBncm93IG1hcHBlZCBmaWxlLCBidXQgb3JpZ2luYWwKCXNpemVfbG93LiAoZml4ZXMgSGVpc2VzIEluZGV4IFJlZ2lzdGVyKQoKU2F0IE1heSAyMiAxOToyMjoyNiAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZ3JhcGhpY3MvZGRyYXcuYzogTGlvbmVsIFVsbWVyIDx1bG1lckBkaXJlY3Rwcm92aWRlci5uZXQ+CgktIGFkZGVkIHNvbWUgbW9yZSBkZWJ1ZyBvdXRwdXQKCS0gY29ycmVjdGVkIGEgc2xpZ2h0IGJ1ZyBpbiBER0EgRGlyZWN0RHJhdyBjcmVhdGlvbgoKCSogd2luZG93cy93aW4uYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgYSBtYWpvciBtZW1vcnkgbGVhayBpbiB0aGUgd2luZG93IG1hbmFnZW1lbnQgY29kZS4KCgkqIHdpbmRvd3Mvd2lucG9zLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJSW4gU2V0V2luZG93UG9zIGlmIGNoYW5naW5nIFogb3JkZXIgYW5kIGNoaWxkIHdpbmRvdyBub3QgeWV0IGluIGl0cwoJcGFyZW50IGxpc3QsIGRvIG5vdCBsaW5rIGl0IGluIFdJTlBPU19TaG93SWNvblRpdGxlLCBjaGVjayBmb3IgcmV0dmFsCglvZiBXSU5fRmluZFduZFB0ci4KCgkqIGdyYXBoaWNzL3gxMWRydi9kaWIuYzogUGF2ZWwgUm9za2luIDxwYXZlbF9yb3NraW5AZ2VvY2l0aWVzLmNvbT4KCURpc2FibGUgcGFzc2luZyBkZXZpY2UgY29udGV4dCB0byBYMTFEUlZfRElCX0J1aWxkQ29sb3JNYXAgd2hlbiBSR0IKCWNvbG9ybWFwIGlzIHVzZWQuCgoJKiBkZWJ1Z2dlci9kYmcueTogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglEb24ndCBmcmVlemUgb3RoZXIgdGhyZWFkIHdoaWxlIGl0IG1heSBob2xkIHRoZSBYIGNyaXRpY2FsIHNlY3Rpb24uCgoJKiBpbmNsdWRlL2Rpc3BsYXkuaCwgbG9hZGVyL21haW4uYywgd2luZG93cy9kaXNwbGF5LmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFkZGVkIFVzZXJSZXBhaW50RGlzYWJsZTE2KCkuCgoJKiB3aW5kb3dzL2RpbnB1dC5jLCB3aW5kb3dzL21lc3NhZ2UuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJUmVtb3ZlZCBFVkVOVF9XYWl0TmV0RXZlbnQoKSBjYWxscy4KCgkqIHdpbmRvd3MvaW5wdXQuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBZGRlZCBJc1VzZXJJZGxlMTYoKS4KCgkqIGluY2x1ZGUvdHR5ZHJ2LmgsIHdpbmRvd3MvdHR5ZHJ2L2V2ZW50LmMsIHdpbmRvd3MvdHR5ZHJ2L2luaXQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWRhcHRlZCB0byBFVkVOVF8gZHJpdmVyIGNoYW5nZXMuCgoJKiBsb2FkZXIvdGFzay5jLCBzY2hlZHVsZXIvc3luY2hyby5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBZGFwdGVkIHRvIGV2ZW50IHN5bmNocm9uaXphdGlvbiBjaGFuZ2VzLgoKCSogaW5jbHVkZS9tZXNzYWdlLmgsIGluY2x1ZGUveDExZHJ2LmgsIHdpbmRvd3MvZXZlbnQuYywgd2luZG93cy94MTFkcnYvZXZlbnQuYywgd2luZG93cy94MTFkcnYvaW5pdC5jLCB3aW5kb3dzL3gxMWRydi93bmQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJTW92ZWQgWCBpbnB1dCBldmVudCBoYW5kbGluZyBvdXQgb2YgRVZFTlRfV2FpdE5ldEV2ZW50IGFuZCBpbnRvCglzZXJ2aWNlIHRocmVhZCBjYWxsYmFjazsgbW92ZWQgRVZFTlRfV2FpdE5ldEV2ZW50IG91dCBvZiB0aGUgRVZFTlRfCglkcml2ZXIuICBDaGFuZ2VkIHdpbkNvbnRleHQgdG8gaG9sZCBIV05EIGluc3RlYWQgb2YgV05EICouCgoJKiB3aW5kb3dzL3dpbnBvcy5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCURvbid0IGNoYW5nZSBaLW9yZGVyIG9mIGNoaWxkIHdpbmRvd3Mgd2hlbiBhY3RpdmF0aW5nLgoKCSogZGxscy93aW5zcG9vbC9pbmZvLmMsIGluY2x1ZGUvd2luZS93aW5nZGkxNi5oLCBpbmNsdWRlL3dpbmVycm9yLmgsIGluY2x1ZGUvd2luc3Bvb2wuaCwgcmVsYXkzMi93aW5zcG9vbC5zcGVjOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJSW1wbGVtZW50ZWQgQWRkUHJpbnRlckEsIEFkZFByaW50ZXJEcml2ZXJBIGFuZCBHZXRQcmludGVyRHJpdmVyRGlyZWN0b3J5CglNb3ZlZCBzb21lIDE2Yml0IEdESSBmdW5jdGlvbiBkZWNsYXJhdGlvbnMgZnJvbSB3aW5zcG9vbC5oIC0+IHdpbmdkaTE2LmgKCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBpbmNsdWRlL2FjY29uZmlnLmgsIGluY2x1ZGUvY29uZmlnLmguaW46CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUNyZWF0ZSBhIG5ldyBjb25maWd1cmF0aW9uIG1hbmlmZXN0IGNvbnN0YW50IEhBVkVfT1NTX01JREkuCgoJKiBsb2FkZXIvZG9zL21vZHVsZS5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUZpeGVkIHNpbGx5IEVJTlRSIGJ1ZyB3aXRoIHN0YXJ0aW5nIGRvc21vZC4KCgkqIGdyYXBoaWNzL2RkcmF3LmM6IEtldmluIEhvbGJyb29rIDxrd2hAbmVvc29mdC5jb20+CglTaG91bGQgY29tcGFyZSB0byBYMTEgY29uc3RhbnQgIk5vbmUiIHNpbmNlIGEgY29sb3JtYXAgaXMgYW4gWAoJUmVzb3VyY2UgSUQgYW5kIG5vdCBhIHBvaW50ZXIuCgoJKiBjb250cm9scy9saXN0Ym94LmM6IFBhdWwgUXVpbm4gPHBhdWxxQGNvcmVsLmNhPgoJU3RvcCBhIGxpc3Rib3ggYnVnIHRoYXQgY2F1c2VzIGEgZGl2IGJ5IHplcm8gd2hlbiB0aGUgaXRlbSBoZWlnaHQKCWlzIHplcm8uIERvZXNuJ3Qgc29sdmUgdGhlIHJvb3Qgb2YgdGhlIHByb2JsZW0gdGhvdWdoLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfUHQucmM6CglBbmRyZSBNYWxhZmF5YSBCYXB0aXN0YSA8TWFsYWZheWFAbWlsZW5pbzMucHQ+CglBYm91dCBkaWFsb2cgdHJhbnNsYXRlZCB0byBQb3J0dWd1ZXNlLgoKCSogaWYxNjMyL3RodW5rLmM6IEphbWVzIEp1cmFuIDxqcmoxMjBAcHN1LmVkdT4KCXRhc2suaCB3YXMgaW5jbHVkZWQgdHdpY2UuICBSZW1vdmluZyBvbmUgZml4ZWQgYSBzaWcxMSBpbiBnY2MtMi43LjIuMy4KCgkqIG9iamVjdHMvY3Vyc29yaWNvbi5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUNoZWNrIGlmIGRjIGhhcyBiZWVuIGNyZWF0ZWQgYmVmb3JlIHVzaW5nIGl0LgoKCSogZ3JhcGhpY3MvZXNjYXBlLmM6IEh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUFkZCBhIGZldyBtb3JlIDMyLT4xNiBFc2NhcGUgY29udmVyc2lvbnMuCgoJKiByZWxheTMyL3JlbGF5Mzg2LmMsIGlmMTYzMi9yZWxheS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglDaGVjayBmb3Igc3lzbGV2ZWwgdmlvbGF0aW9ucyB3aGlsZSByZWxheSBkZWJ1Z2dpbmcuCgoJKiBpZjE2MzIva2VybmVsLnNwZWMsIGluY2x1ZGUvc3lzbGV2ZWwuaCwgaW5jbHVkZS90aHJlYWQuaCwgc2NoZWR1bGVyL3N5c2xldmVsLmMsIHdpbmRvd3Mvd2luLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUltcHJvdmVkIHN5c2xldmVsIGhhbmRsaW5nLCBzdG9yZSBjdXJyZW50bHkgaGVsZCBzeXNsZXZlbHMgaW4gdGhyZWFkCglkYXRhYmFzZSwgV0lOX0NyaXRTZWN0aW9uIGNvbnZlcnRlZCB0byBzeXNsZXZlbC4KCgkqIGluY2x1ZGUvd2luZG93cy5oOiBKb3NodWEgVGhpZWxlbiA8dGhpZWxlbkBuZXRwZXJzb24ubmV0PgoJQWRkZWQgbW1zeXN0ZW0uaCBpbmNsdWRlLgoKCSogbG9hZGVyL21haW4uYywgbG9hZGVyL3Rhc2suYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgd2luZG93cy91c2VyLmMsIGlmMTYzMi9rZXJuZWwuc3BlYywgaW5jbHVkZS91c2VyLmgsIGluY2x1ZGUvd2luZS93aW5iYXNlMTYuaDoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWRkZWQgRXhpdEtlcm5lbDE2IChyZXBsYWNpbmcgVVNFUl9FeGl0V2luZG93cyksIEV4aXRQcm9jZXNzMTYsIGFuZAoJTWFwUHJvY2Vzc0hhbmRsZTsgc3R1YiBmb3IgQlVOTllfMzUxLgoKCSogaWYxNjMyL3RodW5rLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJSGFuZGxlIHByb2MgPT0gTlVMTCBpbiBUSFVOS19TZXREQ0hvb2sgY29ycmVjdGx5LgoKCSogZmlsZXMvcHJvZmlsZS5jOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQWRkZWQgc3VwcG9ydCBmb3IgdGhlIHVuZG9jdW1lbnRlZCBjb21iaW5hdGlvbgoJR2V0UHJpdmF0ZVByb2ZpbGVTdHJpbmdBKHNlY3Rpb24gPT0gTlVMTCwgZW50cnkgPT0gTlVMTCwgLi4uCgoJKiBkbGxzL2NvbWN0bDMyL2hlYWRlci5jOiBDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCUphbWVzIEFiYmF0aWVsbG8gPGFiYmV5akB3cGkuZWR1PgoJQ2xlYW5lciBudWxsIHBvaW50ZXIgY2hlY2sgaW4gSEVBREVSX0luc2VydEl0ZW1BIGFuZCBIRUFERVJfSW5zZXJ0SXRlbVcuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IENocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJSmFtZXMgQWJiYXRpZWxsbyA8YWJiZXlqQHdwaS5lZHU+CglJbXBsZW1lbnRlZCBHZXROZXh0SXRlbSBmb3IgdGhlIExpc3R2aWV3IGNvbnRyb2wuCgoJKiBzY2hlZHVsZXIvc2VydmljZXMuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglFeHBpcmUgdGltZXJzIG9uIGV4cGlyeSB0aW1lIHRvbywgbm90IGp1c3QgYWZ0ZXIuCgoJKiBpbmNsdWRlL3dpbmUvb2JqX2Jhc2UuaCwgZ3JhcGhpY3MvZDNkZXhlY3V0ZWJ1ZmZlci5jLCBncmFwaGljcy9kM2RsaWdodC5jLCBncmFwaGljcy9kM2RtYXRlcmlhbC5jLCBncmFwaGljcy9kM2R0ZXh0dXJlLmMsIGdyYXBoaWNzL2QzZHZpZXdwb3J0LmMsIGdyYXBoaWNzL2RkcmF3LmMsIG11bHRpbWVkaWEvZHBsYXkuYywgbXVsdGltZWRpYS9kc291bmQuYywgb2xlL2FudGltb25pa2VyLmMsIG9sZS9iaW5kY3R4LmMsIG9sZS9jb21wb3NpdGVtb25pa2VyLmMsIG9sZS9kYXRhY2FjaGUuYywgb2xlL2RlZmF1bHRoYW5kbGVyLmMsIG9sZS9maWxlbW9uaWtlci5jLCBvbGUvaGdsb2JhbHN0cmVhbS5jLCBvbGUvaWZzLmMsIG9sZS9pdGVtbW9uaWtlci5jLCBvbGUvbWVtbG9ja2J5dGVzLmMsIG9sZS9tb25pa2VyLmMsIG9sZS9vbGVmb250LmMsIG9sZS9vbGVvYmouYywgb2xlL3N0Z19zdHJlYW0uYywgb2xlL3N0b3JhZ2UzMi5jLCB3aW5kb3dzL2RpbnB1dC5jLCBkbGxzL2F2aWZpbDMyL2F2aWZpbGUuYywgZGxscy9zaGVsbDMyL2NvbnRtZW51LmMsIGRsbHMvc2hlbGwzMi9kYXRhb2JqZWN0LmMsIGRsbHMvc2hlbGwzMi9lbnVtaWRsaXN0LmMsIGRsbHMvc2hlbGwzMi9mb2xkZXJzLmMsIGRsbHMvc2hlbGwzMi9yZWdzdHJlYW0uYywgZGxscy9zaGVsbDMyL3NoZWxsbGluay5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYywgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jLCBkbGxzL3NoZWxsMzIvc2hsdmlldy5jLCBncmFwaGljcy9kM2RkZXZpY2VzLmM6CglQYXVsIFF1aW5uIDxwYXVscUBjb3JlbC5jYT4KCU1pY3Jvc29mdCBjb20gdnRhYmxlIGNvbXBhdGliaWxpdHkgd29ya2Fyb3VuZCBmb3IgZysrLiAgQmFzaWNhbGx5IGFkZHMKCWFuIG9wdGlvbmFsIDggYnl0ZXMgcGFkZGluZyB0byBDT00gb2JqZWN0cyB3aGVyZSB0aGUgUlRUSSB3b3VsZCBiZS4KCgkqIGluY2x1ZGUvc3lzbWV0cmljcy5oLCBtaXNjL3NoZWxsLmMsIG9iamVjdHMvYml0bWFwLmMsIG9iamVjdHMvY3Vyc29yaWNvbi5jLCB3aW5kb3dzL2RjZS5jLCB3aW5kb3dzL2RlZnduZC5jLCB3aW5kb3dzL2RpYWxvZy5jLCB3aW5kb3dzL2RpbnB1dC5jLCB3aW5kb3dzL2lucHV0LmMsIHdpbmRvd3MvbWRpLmMsIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL25vbmNsaWVudC5jLCB3aW5kb3dzL3Njcm9sbC5jLCB3aW5kb3dzL3N5c21ldHJpY3MuYywgd2luZG93cy93aW4uYywgd2luZG93cy93aW5wb3MuYywgY29udHJvbHMvYnV0dG9uLmMsIGNvbnRyb2xzL2NvbWJvLmMsIGNvbnRyb2xzL2ljb250aXRsZS5jLCBjb250cm9scy9tZW51LmMsIGNvbnRyb2xzL3Njcm9sbC5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jLCBkbGxzL2NvbW1kbGcvZmluZGRsZy5jLCBkbGxzL2NvbW1kbGcvZm9udGRsZy5jLCBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYywgZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglSZXBsYWNlZCBhbGwgb2NjdXJlbmNlcyBvZiBTWVNNRVRSSUNTX3h4IGFuZCBzeXNNZXRyaWNzW1NNX3h4XSBieQoJR2V0U3lzdGVtTWV0cmljcyhTTV94eCksIHJlbW92ZWQgbm8gbG9uZ2VyIG5lZWRlZCBpbmNsdWRlcyBvZgoJc3lzbWV0cmljcy5oLgoKCSogbXNkb3MvaW50MTYuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglBZGRlZCBJTlRfSW50MTZBZGRDaGFyLgoKCSogbG9hZGVyL3Jlc291cmNlLmM6IEJlcnRobyBTdHVsdGllbnMgPGJlcnRob0BwYW50ZXIuc29jaS5hYXUuZGs+CglCdWdmaXg6IFByZXZlbnQgbnVsbC1wb2ludGVyIGRlcmVmZXJlbmNlIGluIFRSQUNFIGFyZ3VtZW50IGxpc3QgaW4KCVJFU19GaW5kUmVzb3VyY2UKCgkqIGxvYWRlci9lbGZkbGwuYzogQmVydGhvIFN0dWx0aWVucyA8YmVydGhvQHBhbnRlci5zb2NpLmFhdS5kaz4KCUZpeGVkIHdyb25nIE5FIG1vZHVsZSByZWdpc3RyYXRpb24gc28gdGhhdCByZXNvdXJjZXMgd29yay4KCgkqIGlmMTYzMi90aHVuay5jLCB0b29scy9idWlsZC5jLCB3aW4zMi9rZXJuZWwzMi5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglTZXQgJWVieCB0byBwb2ludCB0byByZWFsIDE2LWJpdCBzdGFjayBpbiBDQkNsaWVudFRodW5rU0wuCglQYXNzICVlc2kgYmFjay1hbmQtZm9ydGggaW4gQ0JDbGllbnRUaHVua1NMKEV4KS4KCUNvcHkgbW9kaWZpZWQgYnVmZmVycyBiYWNrIGFmdGVyIHJldHVybiBmcm9tIEZUX1RodW5rLgoJRml4IGJyb2tlbiByZWNvZ25pdGlvbiBvZiBMUyB0aHVua2xldHMuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYywgZGxscy9jb21jdGwzMi9yZWJhci5jLCBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYywgZGxscy9jb21jdGwzMi91cGRvd24uYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUmVtb3ZlZCB1c2Ugb2Ygd2luLmgsIHN5c21ldHJpY3MuaCBhbmQgYXNzb2NpYXRlZCBXSU5FIFVTRVIgaW50ZXJuYWwKCXZhcmlhYmxlcy4gQWRkZWQgbWlzc2luZyBpbmZvUHRyLT5CdWRkeSA9IGh3bmRCdWQ7IGluIHVwZG93bi5jCgoJKiBkbGxzL2NvbWN0bDMyL0F0dGljL3Byb3BzaGVldC5oLCBkbGxzL2NvbWN0bDMyL2NvbWN0bDMyLmgsIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmMsIGRsbHMvY29tY3RsMzIvcnNyYy5yYywgZGxscy9jb21jdGwzMi90b29sYmFyLmMsIGluY2x1ZGUvY29tbWN0cmwuaCwgaW5jbHVkZS90b29sYmFyLmg6CglFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJVG9vbGJhciBjdXN0b21pemF0aW9uIGRpYWxvZyAodGFrZSBvbmUpLgoKCSogd2luZG93cy93aW4uYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgR2V0VG9wV2luZG93IHNvIGl0IHdpbGwgY29ycmVjdGx5IGhhbmRsZSB0aGUgTlVMTCBwYXJhbWV0ZXIuCgoJKiBpbmNsdWRlL3Byb2Nlc3MuaCwgbG9hZGVyL21vZHVsZS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglGaXggc3dhcHBlZCBGcmVlTGliYXJ5IHJldHVybiB2YWx1ZXMuIEhhbmRsZSBGcmVlTGlicmFyeSggMCApIGJldHRlci4KCUZpeCBETExfUFJPQ0VTU19ERVRBQ0ggY2FsbCBzZXF1ZW5jZSBidWdzIHJlc3VsdGluZyBmcm9tIG5lc3RlZAoJRnJlZUxpYnJhcnkgY2FsbHMuCgoJKiBpZjE2MzIvbW1zeXN0ZW0uc3BlYywgbXVsdGltZWRpYS9tbXN5c3RlbS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCBzcGVjcyBmb3IgbWl4ZXJHZXREZXZDYXBzMTYvbWl4ZXJHZXRJRDE2LCBmaXhlZCBtaXhHZXREZXZDYXBzMTYuCgoJKiBpbmNsdWRlL21pc2NlbXUuaCwgbXNkb3MvZGV2aWNlcy5jLCBtc2Rvcy9kb3NtZW0uYywgbXNkb3MvaW50MjEuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQ2hhbmdlZCBnbG9iYWwgRE9TX0xPTCBpbnRvIGZ1bmN0aW9uIERPU01FTV9MT0woKSBpbiBvcmRlciB0byBvcGVyYXRlCglvbiB0aGUgY29ycmVjdCBhZGRyZXNzIHNwYWNlLiBBZGRlZCBET1NNRU1fTW92ZVBvaW50ZXJzKCkgdGhhdAoJcmVsb2NhdGVzIHNlbGVjdG9ycyB3aGVuIHRoZSBET1MgYWRkcmVzcyBzcGFjZSBjaGFuZ2VzIChpLmUuIHdoZW4KCWRvc21vZCBpcyBzcGF3bmVkLCBwYXJ0aWN1bGFybHkgZnJvbSBXaW4xNiBhcHBzIHRoYXQgdXNlcyBEUE1JIHRvCglleGVjdXRlIHJlYWwtbW9kZSBjb2RlKS4gTW9yZSBjb21wbGV0ZSBET1MgZGV2aWNlIGltcGxlbWVudGF0aW9uLgoKCSogaW5jbHVkZS9kb3NleGUuaCwgbG9hZGVyL2Rvcy9kb3N2bS5jLCBsb2FkZXIvZG9zL21vZHVsZS5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglBZGRlZCBNWl9DdXJyZW50KCkgKHJldHVybnMgY3VycmVudCBMUERPU1RBU0spIGFuZCBET1NWTV9XYWl0KCkKCShET1NWTSBpZGxlIG1lc3NhZ2UgbG9vcCksIGFuZCBmaWVsZHMgaENvbklucHV0IGFuZCBoQ29uT3V0cHV0LgoKCSogb2JqZWN0cy9iaXRtYXAuYzogUGFzY2FsIExlc3NhcmQgPHBhc2NhbEBtYWNhZGFtaWFuLmNvbT4KCUFkZCBzb21lIG51bGwgY2hlY2tpbmcgaW4gdGhlIEdldC9TZXRCaXRtYXBCaXRzIGZ1bmN0aW9ucy4KCgkqIG1pc2MvY3J0ZGxsLmMsIHJlbGF5MzIvY3J0ZGxsLnNwZWM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIGluaXQgZnVuY3Rpb24gZm9yIENSVERMTCwgYWxsb2NhdGUgc3RkaW8vc3RkZXJyL3N0ZG91dCBvbgoJRExMX1BST0NFU1NfQVRUQUNILCBpbmNyZWFzZSBidWZmZXIgZm9yIHZmcHJpbnRmKCkgKFdpbjk1IGFycC5leGUKCW5lZWRzIDEuM0tCKS4KCgkqIGRlYnVnZ2VyL21lbW9yeS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIHN1cHBvcnQgZm9yIEZyZWVCU0QgMy4wIHRvIERFQlVHX2NoZWNrbWFwX2JhZCgpLgoKCSogbWlzYy93aW5zb2NrLmM6IEphbWVzIEp1cmFuIDxqcmoxMjBAcHN1LmVkdT4KCVByaW50IGEgbW9yZSBlZmZlY3RpdmUgKGFuZCB2aXNpYmxlKSBlcnJvciBtZXNzYWdlIHdoZW4gYW4gYXBwbGljYXRpb24KCWNhbid0IGNyZWF0ZSBhIHNvY2tldCB3aXRoIHR5cGUgPT0gU09DS19SQVcuCgoJKiBpbmNsdWRlL21tcmVnLmg6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJU29tZSBtb3JlIGRlZmluZXMgZm9yIG11bHRpbWVkaWEuCgoJKiBtc2Rvcy92eGQuYywgd2luMzIvZGV2aWNlLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBwb3AzLnBvcC5kZWJpdGVsLm5ldD4KCVNvbWUgc3R1YnMgZm9yIHBjY2FyZCB2eGQgdG8gZGVidWcgdGhlIG5hdGl2ZSBzaGVsbDMyLgoKCSogbXVsdGltZWRpYS90aW1lLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJVXNlIHNlcnZpY2UgdGhyZWFkIGZvciAidHJ1ZSIgbXVsdGltZWRpYSB0aW1lcnMuCglSZW1vdmVkIGltcGxlbWVudGF0aW9uIG9mIGZha2UgbXVsdGltZWRpYSB0aW1lcnMuCglTZXQgbWluaW11bSByZXNvbHV0aW9uIHRvIDEwIG1zICh0aGUgdGltaW5nIHJlc29sdXRpb24gb2YgdGhlIExpbnV4CglrZXJuZWwpLiBGaXhlZCBhIGNvdXBsZSBvZiBmbGF3cy4KCgkqIG1pc2Mvc3B5LmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQHBvcDMucG9wLmRlYml0ZWwubmV0PgoJSW1wbGVtZW50ZWQgcHJpbnRpbmcgb3V0IG9mIHNvbWUgc3RydWN0dXJlcy4KClRodSBNYXkgMjAgMTY6NDA6MjMgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNlcnZlci9zZWxlY3QuYywgc2VydmVyL3NvY2tldC5jOgoJU2V0IG9ubHkgdGhlIGNsaWVudCBzb2NrZXQgaW4gbm9uLWJsb2NraW5nIG1vZGUgaW5zdGVhZCBvZiBhbGwgZmRzOwoJc2hvdWxkIGF2b2lkIHByb2JsZW1zIHdpdGggc3RkaW8gaGFuZGxlcy4KCk1vbiBNYXkgMTcgMTY6MjA6NTMgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvZGVidWdkZWZzLmgsIGluY2x1ZGUvZ2RpLmgsIGluY2x1ZGUvcHNkcnYuaCwgaW5jbHVkZS90dHlkcnYuaCwgaW5jbHVkZS93aW5lL3dpbmdkaTE2LmgsIGluY2x1ZGUvd2luZ2RpLmgsIGluY2x1ZGUvd2luc3Bvb2wuaCwgbWlzYy9BdHRpYy9zcG9vbGVyLmMsIG1pc2MvTWFrZWZpbGUuaW4sIG1pc2MvcHJpbnRkcnYuYywgb2JqZWN0cy9kYy5jLCBkbGxzL3dpbnNwb29sLy5jdnNpZ25vcmUsIGRsbHMvd2luc3Bvb2wvTWFrZWZpbGUuaW4sIGRsbHMvd2luc3Bvb2wvaW5mby5jLCBncmFwaGljcy9kcml2ZXIuYywgZ3JhcGhpY3MvZW5obWV0YWZpbGVkcnYvaW5pdC5jLCBncmFwaGljcy9lbnYuYywgZ3JhcGhpY3MvZXNjYXBlLmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L2luaXQuYywgZ3JhcGhpY3MvcHNkcnYvZHJpdmVyLmMsIGdyYXBoaWNzL3BzZHJ2L2luaXQuYywgZ3JhcGhpY3MvcHNkcnYvcHBkLmMsIGdyYXBoaWNzL3BzZHJ2L3BzLmMsIGdyYXBoaWNzL3R0eWRydi9pbml0LmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L2luaXQuYywgZ3JhcGhpY3MveDExZHJ2L2luaXQuYywgTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJSW1wbGVtZW50IERvY3VtZW50UHJvcGVydGllcywgRGV2aWNlQ2FwYWJpbGl0aWVzLCBiZWdpbm5pbmdzIG9mCglPcGVuL0dldC9DbG9zZVByaW50ZXIuICBBZGRpdGlvbnMgdG8gUFNEUlZfRGV2aWNlQ2FwYWJpbGl0aWVzLgoJU3BsaXQgb2ZmIFdJTlNQT09MIGludG8gaXRzIG93biBkaXJlY3RvcnkuCglTZXZlcmFsIGZ1bmN0aW9ucyBhZGRlZCB0byBEQ19GdW5jcy4KCUJhc2VkIGxhcmdlbHkgb24gYSBwYXRjaCBieSBQYXNjYWwgTGVzc2FyZCA8cGFzY2FsQG1hY2FkYW1pYW4uY29tPgoKCSogbG9hZGVyL2xvYWRvcmRlci5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCWdsaWRlMnggbG9hZG9yZGVyIGlzICJzbyxuYXRpdmUiLgoKCSogbXNkb3MvZHBtaS5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUltcHJvdmVkIHNob3J0Y3V0cyAtIGZvbGxvd3MganVtcHMgaW4gdHJ5aW5nIHRvIGF2b2lkIHN3aXRjaGluZyB0bwoJcmVhbCBtb2RlIHVubmVjZXNzYXJpbHkuCgoJKiBkb2N1bWVudGF0aW9uL25vLXdpbmRvd3M6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJVXBkYXRlZCBhbmQgaW1wcm92ZWQgaW5zdHJ1Y3Rpb25zLgoKCSogZGVidWdnZXIvZXhwci5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCU1hZGUgIldpbmUtZGJnPnNldCAqc2VnOm9mZiA9IHZhbCIgd29yayAocHJldmlvdXNseSBvbmx5CgkiV2luZS1kYmc+c2V0ICpvZmYgPSB2YWwiIHdvcmtlZCkuCgoJKiBtdWx0aW1lZGlhL21jaW1pZGkuYywgbXVsdGltZWRpYS9tY2l3YXZlLmM6CglKdWtrYSBLYW5nYXMgPGp0a2FuZ2FzQG5pYy5maT4KCVdoZW4gb3BlbmluZyB0aGUgZmlsZSB3ZSBkb24ndCBuZWVkIE1NSU9fRVhDTFVTSVZFCglyaWdodHMuIE1NSU9fREVOWVdSSVRFIHNob3VsZCBiZSBzdWZmaWNpZW50LgoKCSogZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAcG9wMy5wb3AuZGViaXRlbC5uZXQ+CglQcmV2ZW50IGNyYXNoIGluIHN0dWIgb2YgU2hlR2V0RGlyVy4KCgkqIGRsbHMvc2hlbGwzMi9zaGxtZW51LmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBwb3AzLnBvcC5kZWJpdGVsLm5ldD4KCUZ1cnRoZXIgaW1wbGVtZW50YXRpb24gb2YgdGhlIEZpbGVNZW51LgoKCSogd2luZG93cy9tZGkuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAcG9wMy5wb3AuZGViaXRlbC5uZXQ+CglTZXQgdGhlIGRlZmF1bHQgbWVudSBpdGVtIG9mIHRoZSB3aW5kb3cgbWVudQoKCSogd2luZS5pbmk6IEphbWVzIEp1cmFuIDxqcmoxMjBAcHN1LmVkdT4KCUNoYW5nZWQgc2VyaWFsIHBvcnRzIGluIHdpbmUuaW5pIHRvIC9kZXYvdHR5U1ggZnJvbSAvZGV2L2N1YVggaW4KCWFjY29yZGFuY2Ugd2l0aCBMaW51eCAyLjIgQ2hhbmdlcyBmaWxlLgoKCSogaWYxNjMyL2tlcm5lbC5zcGVjLCBsb2FkZXIvbW9kdWxlLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVJlbGVhc2UgV2luMTZMb2NrIHdoZW4gY2FsbGluZyBMb2FkTGlicmFyeTMyIGZyb20gMTYtYml0IGNvZGUuCgoJKiBpZjE2MzIvdGh1bmsuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglGaXhlZCBUSFVOS19TZXREQ0hvb2sgd2hlbiB1c2luZyBuYXRpdmUgVVNFUi4KCgkqIHdpbjMyL2tlcm5lbDMyLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBGVF9Qcm9sb2dQcmltZSB3YXMgYnJva2VuIGR1ZSB0byByZWxheSBjaGFuZ2VzLgoKCSogbWlzYy9uZXR3b3JrLmMsIHJlbGF5MzIvbXByLnNwZWM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVNvbWUgc3R1YnMgYWRkZWQuCgoJKiB3aW5kb3dzL2hvb2suYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglTdXNwZW5kIHdpbmRvdyBsb2NrcyBiZWZvcmUgY2FsbGluZyBob29rIHByb2NlZHVyZS4KCgkqIHdpbmRvd3MvZGlhbG9nLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJRml4ZWQgd2luZG93IHJlZmNvdW50IGhhbmRsaW5nIGluIEdldE5leHREbGdHcm91cEl0ZW0uCgoJKiBjb250cm9scy9idXR0b24uYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJUmVtb3ZlZCBzdXBlcmZsdW91cyBXSU5fUmVsZWFzZVduZFB0ci4KCgkqIGdyYXBoaWNzL2RkcmF3LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQG11ZC5kZT4KCVhsaWJfSURpcmVjdERyYXdTdXJmYWNlNEltcGxfRmxpcCBzaG91bGQgc2hvdyAnZmxpcHRvJyBzdXJmYWNlLCBub3QKCXByZXZpb3VzIG9uZS4gKHJlcG9ydGVkIGJ5IE92ZSkKClN1biBNYXkgMTYgMTc6MTE6NTggMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbm50Lmg6CglBZGRlZCBhIGZldyBtaXNzaW5nIGRlYnVnIGV2ZW50IGRlZmluaXRpb25zLgoKCSogc2VydmVyL2NvbnNvbGUuYywgc2VydmVyL2ZpbGUuYywgc2VydmVyL3BpcGUuYywgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdGhyZWFkLmg6CglBZGFwdGVkIHRvIG5ldyBzZWxlY3QgaW50ZXJmYWNlLgoJRml4ZWQgYnVnIGluICpfc2lnbmFsZWQgcm91dGluZXMgdGhhdCBjb3VsZCBjYXVzZSBidXN5LXdhaXRpbmcgaW4gdGhlCglzZWxlY3QgbG9vcC4KCgkqIHNlcnZlci9vYmplY3QuYywgc2VydmVyL29iamVjdC5oLCBzZXJ2ZXIvcmVxdWVzdC5jLCBzZXJ2ZXIvc2VsZWN0LmMsIHNlcnZlci9zb2NrZXQuYzoKCUNoYW5nZWQgc2VsZWN0IGludGVyZmFjZSwgc2VwYXJhdGVkIHRpbWVvdXRzIGZyb20gZmlsZSBkZXNjcmlwdG9ycy4KCgkqIHNlcnZlci9oYW5kbGUuYywgc2VydmVyL2hhbmRsZS5oLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcHJvY2Vzcy5oOgoJTW92ZWQgcHJvY2VzcyBzdHJ1Y3R1cmUgZGVmaW5pdGlvbiB0byBwcm9jZXNzLmguCglBZGRlZCBzdXNwZW5kL3Jlc3VtZV9wcm9jZXNzLgoJTW92ZWQgaGFuZGxlIHRhYmxlIGJhY2sgaW50byB0aGUgcHJvY2VzcyBzdHJ1Y3R1cmUuCgoJKiBzY2hlZHVsZXIvY2xpZW50LmMsIHNlcnZlci90cmFjZS5jLCBpbmNsdWRlL3NlcnZlci5oOgoJQWRkZWQgVEVCIGluIGluaXRfdGhyZWFkIHJlcXVlc3QuCgpTYXQgTWF5IDE1IDEwOjUyOjU2IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBtaXNjZW11L2luc3RyLmM6CglUcmllZCB0byBhZGQgYW4gZXJyb3IgbWVzc2FnZSB3aGVuIGNyYXNoaW5nIG9uIGEgc2VsZWN0b3IgbG9hZCBiZWNhdXNlCglvZiBtaXNzaW5nIExEVCBzaGFyaW5nIGJldHdlZW4gdGhyZWFkcyAodW50ZXN0ZWQpLgoKCSogc2NoZWR1bGVyL2V2ZW50LmMsIHNjaGVkdWxlci9tdXRleC5jLCBzY2hlZHVsZXIvc2VtYXBob3JlLmMsIHNlcnZlci9NYWtlZmlsZS5pbiwgc2VydmVyL2NoYW5nZS5jLCBzZXJ2ZXIvY29uc29sZS5jLCBzZXJ2ZXIvZGV2aWNlLmMsIHNlcnZlci9ldmVudC5jLCBzZXJ2ZXIvZmlsZS5jLCBzZXJ2ZXIvaGFuZGxlLmMsIHNlcnZlci9oYW5kbGUuaCwgc2VydmVyL21haW4uYywgc2VydmVyL21hcHBpbmcuYywgc2VydmVyL211dGV4LmMsIHNlcnZlci9vYmplY3QuYywgc2VydmVyL29iamVjdC5oLCBzZXJ2ZXIvcGlwZS5jLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcHJvY2Vzcy5oLCBzZXJ2ZXIvcmVxdWVzdC5jLCBzZXJ2ZXIvc2VsZWN0LmMsIHNlcnZlci9zZW1hcGhvcmUuYywgc2VydmVyL3NuYXBzaG90LmMsIHNlcnZlci9zb2NrZXQuYywgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdGhyZWFkLmgsIHNlcnZlci90cmFjZS5jLCB0b29scy9tYWtlX3JlcXVlc3RzLCBpbmNsdWRlL3NlcnZlci5oLCBpbmNsdWRlL3NlcnZlci9BdHRpYy9vYmplY3QuaCwgaW5jbHVkZS9zZXJ2ZXIvQXR0aWMvcHJvY2Vzcy5oLCBpbmNsdWRlL3NlcnZlci9BdHRpYy90aHJlYWQuaCwgaW5jbHVkZS9zZXJ2ZXIvcmVxdWVzdC5oLCBtZW1vcnkvdmlydHVhbC5jOgoJU2VydmVyIHJlb3JnYW5pemF0aW9uOgoJLSBtb3ZlZCByZXF1ZXN0IGhhbmRsZXJzIHRvIHRoZSBzcGVjaWZpYyBDIGZpbGVzCgktIG1vdmVkIGhhbmRsZSBtYW5hZ2VtZW50IHRvIGhhbmRsZS5jCgktIG1vdmVkIHNlcnZlciBwcml2YXRlIGluY2x1ZGVzIHRvIHNlcnZlci8gaW5zdGVhZCBvZiBpbmNsdWRlL3NlcnZlci8KCgkqIE1ha2UucnVsZXMuaW46IEdldCBpbmNsdWRlIGZpbGVzIGZyb20gdGhlIGN1cnJlbnQgZGlyZWN0b3J5IGZpcnN0LgoKRnJpIE1heSAxNCAxODozOTozNyAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jb21tZGxnL2NvbG9yZGxnLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnLmMsIGRsbHMvY29tbWRsZy9maW5kZGxnLmMsIGRsbHMvY29tbWRsZy9mb250ZGxnLmMsIGRsbHMvY29tbWRsZy9wcmludGRsZy5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGdyYXBoaWNzL3BzZHJ2L2RyaXZlci5jLCBpbmNsdWRlL3dpbi5oLCB3aW5kb3dzL21zZ2JveC5jLCB3aW5kb3dzL3F1ZXVlLmMsIHdpbmRvd3Mvd2luLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVJlcGxhY2VkIFdJTl9HZXRXaW5kb3dJbnN0YW5jZSBieSBHZXRXaW5kb3dMb25nQShHV0xfSElOU1RBTkNFKSwKCXJlbW92ZWQgdW5uZWNlc3Nhcnkgd2luLmggaW5jbHVkZXMsIGFkZGVkIHN5c2xldmVsLmggdG8gcXVldWUuYy4KCgkqIGNvbnRyb2xzL2NvbWJvLmM6IEZyYW5jb2lzIEJvaXN2ZXJ0IDxmcmFuY29pc0BtYWNhZGFtaWFuLmNvbT4KCUNoYW5nZWQgQ0JHZXREcm9wcGVkQ29udHJvbFJlY3QgdG8gYmUgY29tcGxpYW50IHdpdGggV2luZG93cyBBUEkuCgoJKiBpbmNsdWRlL3dpbmUvZXhjZXB0aW9uLmgsIHdpbjMyL2V4Y2VwdC5jOgoJRml4ZWQgYSBmZXcgYnVncywgYW5kIGltcHJvdmVkIHRoZSBleGNlcHRpb24gbWFjcm9zIChiYXNlZCBvbgoJc3VnZ2VzdGlvbnMgYnkgU2VyZ2VpIFR1cmNoYW5vdikuCgoJKiBkbGxzL3Zlci92ZXIxNi5jLCBkbGxzL3ZlcnNpb24vaW5mby5jLCBkbGxzL3ZlcnNpb24vaW5zdGFsbC5jLCBkbGxzL3ZlcnNpb24vcmVzb3VyY2UuYywgaXBjL2RkZV9hdG9tLmMsIGlwYy9kZGVfYXRvbV90ZXN0LmMsIGlwYy9zaG1fYmxvY2suYywgaXBjL3NobV9mcmFnbWVudC5jLCBpcGMvc2htX2ZyYWdtZW50X3Rlc3QuYywgaXBjL3NobV9tYWluX2Jsay5jLCBpcGMvc2htX3NlbWFwaC5jLCBpcGMvc2htX3NlbWFwaF90ZXN0LmMsIGlwYy93aW5lX3Rlc3Rfc3R1Yi5jLCByZWxheTMyL3Nub29wLmMsIHJlbGF5MzIvdXR0aHVuay5jLCBkbGxzL2FkdmFwaTMyL2FkdmFwaS5jLCBkbGxzL2FkdmFwaTMyL2NyeXB0LmMsIGRsbHMvYWR2YXBpMzIvZXZlbnRsb2cuYywgZGxscy9hZHZhcGkzMi9zZXJ2aWNlLmMsIGRsbHMvaW1hZ2VobHAvYWNjZXNzLmMsIGRsbHMvaW1hZ2VobHAvZGVidWcuYywgZGxscy9pbWFnZWhscC9pbWFnZWhscF9tYWluLmMsIGRsbHMvaW1hZ2VobHAvaW50ZWdyaXR5LmMsIGRsbHMvaW1hZ2VobHAvaW50ZXJuYWwuYywgZGxscy9pbWFnZWhscC9tb2RpZnkuYywgZGxscy9pbWFnZWhscC9zeW1ib2wuYywgZGxscy9tc2FjbS9tc2FjbV9tYWluLmMsIGRsbHMvbXNhY20zMi9idWlsdGluLmMsIGRsbHMvbXNhY20zMi9kcml2ZXIuYywgZGxscy9tc2FjbTMyL2ZpbHRlci5jLCBkbGxzL21zYWNtMzIvZm9ybWF0LmMsIGRsbHMvbXNhY20zMi9pbnRlcm5hbC5jLCBkbGxzL21zYWNtMzIvbXNhY20zMl9tYWluLmMsIGRsbHMvbXNhY20zMi9zdHJlYW0uYywgZGxscy9wc2FwaS9wc2FwaV9tYWluLmMsIGRsbHMvcmFzYXBpMzIvcmFzYXBpLmMsIGRsbHMvdGFwaTMyL2Fzc2lzdGVkLmMsIGRsbHMvdGFwaTMyL3Bob25lLmMsIGNvbnNvbGUvZ2VuZXJpYy5jLCBjb25zb2xlL25jdXJzZXMuYywgY29uc29sZS94dGVybS5jLCBjb250cm9scy9jb21iby5jLCBjb250cm9scy9saXN0Ym94LmMsIGNvbnRyb2xzL21lbnUuYywgY29udHJvbHMvc2Nyb2xsLmMsIGNvbnRyb2xzL3N0YXRpYy5jLCBjb250cm9scy91aXRvb2xzLmM6CglDb252ZXJ0ZWQgdG8gdGhlIG5ldyBkZWJ1ZyBpbnRlcmZhY2UsIHVzaW5nIHNjcmlwdCB3cml0dGVuIGJ5IFBhdHJpawoJU3RyaWR2YWxsLgoKCSogdG9vbHMvbWFrZV9YMTF3cmFwcGVycywgdHN4MTEvdHNfeGY4NmRnYS5jLCB0c3gxMS90c194Zjg2dm1vZGUuYywgdHN4MTEvdHNfeGxpYi5jLCB0c3gxMS90c194cG0uYywgdHN4MTEvdHNfeHJlc291cmNlLmMsIHRzeDExL3RzX3hzaG0uYywgdHN4MTEvdHNfeHV0aWwuYzoKCUNvbnZlcnRlZCB0byB0aGUgbmV3IGRlYnVnIGludGVyZmFjZS4KCgkqIHdpbmRvd3MvcGFpbnRpbmcuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJRml4ZWQgaW52YWxpZCB3aW5kb3cgcmVmY291bnQgaGFuZGxpbmcgaW4gUkRXX1BhaW50KCkuCgoJKiB3aW5kb3dzL21lc3NhZ2UuYzogTm9lbCBCb3J0aHdpY2sgPG5vZWxAbWFjYWRhbWlhbi5jb20+CglGaXggYSBkZWFkbG9jayB3aXRoIHRoZSBzeXN0ZW0gbWVzc2FnZSBxdWV1ZSBieSBlbnN1cmluZyB0aGUgc3lzdGVtIG1lc3NhZ2UKCXF1ZXVlIGlzIHVubG9ja2VkIHdoaWxlIHRoZSBhY3R1YWwgbWVzc2FnZSBpcyBiZWluZyBwcm9jZXNzZWQuCgoJKiBncmFwaGljcy9kZHJhdy5jOiBMaW9uZWwgVWxtZXIgPHVsbWVyQGRpcmVjdHByb3ZpZGVyLm5ldD4KCUNoZWNrIGlmIGluIGRlcHRoLWNvbnZlcnNpb24gbW9kZSBiZWZvcmUgcmV0dXJuaW5nIGFuIGVycm9yIG1lc3NhZ2UKCWluIElEaXJlY3REcmF3UGFsZXR0ZUltcGxfR2V0RW50cmllcy4KClRodSBNYXkgMTMgMTg6NTM6MDUgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRvY3VtZW50YXRpb24vc3RhdHVzL2RpcmVjdDNELCBncmFwaGljcy9kM2RfcHJpdmF0ZS5oLCBncmFwaGljcy9kM2Rjb21tb24uYywgZ3JhcGhpY3MvZDNkZGV2aWNlcy5jLCBncmFwaGljcy9kM2RleGVjdXRlYnVmZmVyLmMsIGdyYXBoaWNzL2QzZGxpZ2h0LmMsIGdyYXBoaWNzL2QzZG1hdGVyaWFsLmMsIGdyYXBoaWNzL2QzZHRleHR1cmUuYywgZ3JhcGhpY3MvZDNkdmlld3BvcnQuYywgZ3JhcGhpY3MvZGRyYXcuYywgZ3JhcGhpY3MvZGRyYXdfcHJpdmF0ZS5oLCBpbmNsdWRlL3dpbmVfZ2wuaDoKCUxpb25lbCBVbG1lciA8dWxtZXJAZGlyZWN0cHJvdmlkZXIubmV0PgoJUmVwbGFjZWQgYWxsIHRoZSBNZXNhIHNwZWNpZmljIGNvZGUgYnkgR0xYIGNvZGUuIFNob3VsZCB3b3JrIG5vdyBvbgoJYW55IE9wZW5HTCBpbXBsZW1lbnRhdGlvbi4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6IDxUVGFycmFudEBFdG5vdGVhbS5JdD4KCUFkZGVkIEl0YWxpYW4ga2V5Ym9hcmQgc3VwcG9ydC4KCgkqIGdyYXBoaWNzL2VuaG1ldGFmaWxlZHJ2L2dyYXBoaWNzLmM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglGaXhlZCBhIGNvdXBsZSBvZiBtZW1jcHkgZXJyb3JzLgoKCSogZ3JhcGhpY3MvcHNkcnYvZHJpdmVyLmM6IEh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCVNtYWxsIGZpeCB0byBoZWxwIG5hdGl2ZSB3aW45NSBQcmludERsZyBvbiB0aGUgd2F5LgoKCSogZGxscy93aW5hc3BpL3dpbmFzcGkxNi5jLCBpZjE2MzIvd2luYXNwaS5zcGVjLCBpbmNsdWRlL2FzcGkuaDoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUltcGxlbWVudGVkIEluc2VydEluQVNQSUNoYWluIGFuZCBmaXhlZCBtaW5vciB0aGluZ3MuCgoJKiB3aW5kb3dzL3gxMWRydi9tb3VzZS5jOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJRml4ZWQgcXVpdGUgaWxsIHdpbmRvdyBsb2NraW5nIGNvZGUuCgoJKiB3aW5kb3dzL3dpbnBvcy5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglGaXhlZCBhbiBpbmZpbml0ZSBsb29wIGluIENoaWxkV2luZG93RnJvbVBvaW50RXguCgoJKiBjb250cm9scy9tZW51LmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBwb3AzLnBvcC5kZWJpdGVsLm5ldD4KCS0gcHJldmVudCBjcmFzaCB3aGVuIEdldE1lbnVEZWZhdWx0SXRlbSBpcyBjYWxsZWQgb24gZW1wdHkgbWVudQoJLSBzZXQgZGVmYXVsdCBpdGVtIG9uIHN5c3RlbSBtZW51CgoJKiBsb2FkZXIvbmUvbW9kdWxlLmMsIG1lbW9yeS9zZWxlY3Rvci5jLCByZWxheTMyL250ZGxsLnNwZWMsIHdpbjMyL2tlcm5lbDMyLmMsIHdpbjMyL29yZGluYWxzLmMsIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmMsIGRsbHMvbnRkbGwvcnRsLmMsIGluY2x1ZGUvc3RhY2tmcmFtZS5oOgoJQWRhcHRlZCBmb3IgbmV3IHJlZ2lzdGVyIGZ1bmN0aW9ucyBzdXBwb3J0IChFU1BfcmVnIGluIHJlZ2lzdGVyCglmdW5jdGlvbnMgbm93IHBvaW50cyBhZnRlciB0aGUgYXJndW1lbnRzKS4KCgkqIHJlbGF5MzIvYnVpbHRpbjMyLmMsIHJlbGF5MzIva2VybmVsMzIuc3BlYywgcmVsYXkzMi9yZWxheTM4Ni5jLCByZWxheTMyL3Nub29wLmMsIHRvb2xzL2J1aWxkLmM6CglXaW4zMiByZWdpc3RlciBmdW5jdGlvbnMgY2FuIG5vdyBoYXZlIGFyZ3VtZW50cy4KCVNpbXBsaWZpZWQgcmVsYXkgZGVidWdnaW5nIGZvciByZWdpc3RlciBmdW5jdGlvbnMuCgoJKiByZWxheTMyL2tlcm5lbDMyLnNwZWMsIHdpbjMyL2RldmljZS5jOgoJVnhEQ2FsbCBmdW5jdGlvbnMgZG8gbm90IG5lZWQgdG8gYmUgJ3JlZ2lzdGVyJy4KCldlZCBNYXkgMTIgMTY6MTA6NTMgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHJlbGF5MzIvYnVpbHRpbjMyLmM6IEZpeGVkIGJ1ZyBJIGludHJvZHVjZWQgaW4gcmVsYXkgZGVidWdnaW5nLgoKCSogZGxscy9udGRsbC9leGNlcHRpb24uYywgaWYxNjMyL3RodW5rLmMsIGluY2x1ZGUvQXR0aWMvZXhjZXB0LmgsIGluY2x1ZGUvd2luZS9leGNlcHRpb24uaCwgd2luMzIvZXhjZXB0LmM6CglBZGRlZCBtYWNyb3MgYW5kIGRlZmluaXRpb25zIGZvciB1c2luZyBleGNlcHRpb24gaW5zaWRlIFdpbmUgb3IKCVdpbmVsaWIgY29kZS4KCgkqIGluY2x1ZGUvQXR0aWMvZXhjZXB0LmgsIGluY2x1ZGUvbnRkZGsuaCwgaW5jbHVkZS93aW5udC5oLCBtaXNjL2NydGRsbC5jLCB3aW4zMi9pbml0LmM6CglNb3ZlZCBzb21lIGV4Y2VwdGlvbiBkZWZpbml0aW9ucyB0byB3aW5udC5oIGFuZCBudGRkay5oLgoKCSogbXNkb3MvZGV2aWNlcy5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIG1pc3NpbmcgV0lOQVBJIGZvciB0aGUgY2FsbGJhY2sgcHJvY3MuCgoJKiBpbmNsdWRlL3NpZ19jb250ZXh0Lmg6IEFkZGVkIEVSUk9SX3NpZy4KCgkqIG9sZS9zdGdfYmlnYmxvY2tmaWxlLmM6IEZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUJ1ZyBmaXguCgoJKiBtaXNjL3dpbnNvY2suYywgaW5jbHVkZS93aW5zb2NrLmg6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVdTT0NLMzIvV0lOU09DSyB1c2VzIFNldExhc3RFcnJvcigpIHRvIGtlZXAgaXRzIG93biBXU0FMYXN0RXJyb3JzLAoJcmVwbGFjZWQgYWxsIHB3c2ktPmVyciByZWZlcmVuY2VzLgoKCSogbG9hZGVyL3BlX2ltYWdlLmM6IENoYW5nZWQgc29tZSBlcnJvciBoYW5kbGluZyBhIGJpdC4KCgkqIHdpbmRvd3Mvd2luLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQ2xlYW5lciBTdXNwZW5kL1Jlc3RvcmVXbmRzTG9jaywgd2hpY2ggc2hvdWxkIGZpeCBzb21lIHNsb3duZXNzLgoKCSogcmVsYXkzMi9rZXJuZWwzMi5zcGVjLCByZWxheTMyL250ZGxsLnNwZWM6CglBZGRlZCBSdGxVbndpbmQgaW4gbnRkbGwsIGFuZCBtYWRlIGtlcm5lbDMyIHNwZWMgZW50cnkgYSBmb3J3YXJkIHRvCgl0aGUgbnRkbGwgb25lLgoKCSogcmVsYXkzMi9idWlsdGluMzIuYywgdG9vbHMvYnVpbGQtc3BlYy50eHQsIHRvb2xzL2J1aWxkLmMsIGluY2x1ZGUvYnVpbHRpbjMyLmg6CglBZGRlZCBpbXBvcnQgZGVjbGFyYXRpb24gZm9yIFdpbjMyIGJ1aWx0LWlucy4KCk1vbiBNYXkgMTAgMTQ6NDQ6NDggMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHRvb2xzL2J1aWxkLXNwZWMudHh0LCB0b29scy9idWlsZC5jLCBpbmNsdWRlL2J1aWx0aW4zMi5oLCByZWxheTMyL2J1aWx0aW4zMi5jOgoJQWRkZWQgc3VwcG9ydCBmb3IgZm9yd2FyZGVkIG9yZGluYWxzIGluIGJ1aWx0LWluIGRsbHMuCgpTdW4gTWF5ICA5IDE2OjE1OjI4IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW4zMi9jb25zb2xlLmM6CglGaXhlZCByZXF1ZXN0IHNpemUgZm9yIGFsbG9jX2NvbnNvbGUgYW5kIGZyZWVfY29uc29sZS4KCgkqIHJlbGF5MzIva2VybmVsMzIuc3BlYywgcmVsYXkzMi9udGRsbC5zcGVjLCB3aW4zMi9leGNlcHQuYywgZGxscy9udGRsbC9NYWtlZmlsZS5pbiwgZGxscy9udGRsbC9leGNlcHRpb24uYywgZGxscy9udGRsbC9ydGwuYywgaW5jbHVkZS9BdHRpYy9leGNlcHQuaCwgaW5jbHVkZS9kZWJ1Z2RlZnMuaCwgaW5jbHVkZS9udGRkay5oLCBpbmNsdWRlL3RocmVhZC5oLCBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW5udC5oOgoJSW1wcm92ZWQgZXhjZXB0aW9uIGhhbmRsaW5nLgoJQmFzZWQgb24gdGhlIHdvcmsgb2YgU2VyZ2V5IFR1cmNoYW5vdiA8dHVyY2hhbm92QHVzYS5uZXQ+LgoKCSogbG9hZGVyL21vZHVsZS5jOgoJVXNlIE9wZW5GaWxlKCkgdG8gdGVzdCBmb3IgZmlsZSBleGlzdGVuY2UsIHNvIHRoYXQgdGhlIHBhdGggZ2V0cwoJc2VhcmNoZWQuCgoJKiBzZXJ2ZXIvc2VsZWN0LmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJUmVzdGFydCBpbnRlcnJ1cHRlZCBzZWxlY3QoKSAoaGFwcGVucyB3aXRoIC1wZykuCgoJKiBkZWJ1Z2dlci9tZW1vcnkuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglGaXhlZCBvZmYtYnktb25lIGJ1ZyBpbiBtZW1vcnkgYWNjZXNzIGNoZWNrLgoKCSogbWlzYy9yZWdpc3RyeS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU1vcmUgZGVidWcgb3V0cHV0IGZvciBSZWdRdWVyeUluZm9LZXkuCgoJKiBkZWJ1Z2dlci9zdGFjay5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUZpeGVkIGEgY291cGxlIG9mIGJ1Z3MgKHNpbGVudCBiYWNrdHJhY2Ugbm90IHRvdGFsbHkgc2lsZW50LCBjcmFzaGVzCgl3aGVuIHRoZSBzdGFjayBpcyBjb3JydXB0ZWQgb3Igc2ltaWxhcikuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClNhdCBNYXkgIDggMTg6Mzk6MDUgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHRvb2xzL3dpbmVjb25mLmxpYnMvYXV0b2NvbmYuZW5nLCB0b29scy93aW5lY29uZi5saWJzL2F1dG9jb25mLnRjbCwgdG9vbHMvd2luZWNvbmYubGlicy9icm93c2Vycy5lbmcsIHRvb2xzL3dpbmVjb25mLmxpYnMvZGlyYnJvd3Nlci50Y2wsIHRvb2xzL3dpbmVjb25mLmxpYnMvZ2VuZXJhbC5lbmcsIHRvb2xzL3dpbmVjb25mLmxpYnMvZ2V0ZmlsZW5hbWUudGNsLCB0b29scy93aW5lY29uZi5saWJzL21lc3NhZ2UudGNsLCB0b29scy93aW5lY29uZi5saWJzL21lc3NhZ2UyLnRjbCwgdG9vbHMvd2luZWNvbmYubGlicy9zYXZlUkMudGNsLCB0b29scy93aW5lY29uZi5saWJzL3dpbmUtaGFsZi5naWYsIHRvb2xzL3dpbmVjb25mLmxpYnMvd2luZWNvbmYuZW5nLCB0b29scy93aW5lY29uZi5saWJzL3dpbmVjb25mLnRjbCwgdG9vbHMvd2luZWNvbmYubGlicy93aW5lY29uZjEudGNsLCB0b29scy93aW5lY29uZi50Y2w6CglKZWFuLUxvdWlzIFRoaXJvdCA8dGhpcm90QHVuaXYtYnJlc3QuZnI+CglBZGRlZCBncmFwaGljYWwgY29uZmlndXJhdGlvbiB0b29sIHdpbmVjb25mLnRjbC4KCgkqIHdpbjMyL2NvbnNvbGUuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglJZ25vcmUgRVNDWyVkYyByZXBvcnRzIGdlbmVyYXRlZCBieSA4Yml0IGNvbnRyb2wgY29kZXMuCglPcGVuIGNvbnNvbGUgZXZlbiBpZiB3ZSBhbHJlYWR5IGhhdmUgb25lIGluIHRoZSBwcm9jZXNzLgoKCSogZmlsZXMvcHJvZmlsZS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIG9mZiBieSAxIGVycm9yIGluIHNlY3Rpb24gY29kZSAoZGlkIG5vdCByZXR1cm4gbGVuLTIgb24gYnVmZmVyCglvdmVyZmxvdyBpbiBzb21lIGNhc2VzLCBidXQgbGVuLTEpLgoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCB3YXJuaW5nLgoKCSogZ3JhcGhpY3MveDExZHJ2L3BhbGV0dGUuYzogUGF2ZWwgUm9za2luIDxwYXZlbF9yb3NraW5AZ2VvY2l0aWVzLmNvbT4KCUZpeGVkIHBhbGV0dGUgaGFuZGxpbmcgZm9yIHRydWUvaGlnaC1jb2xvciBYMTEuCgoJKiBsb2FkZXIvbmUvbW9kdWxlLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglGaXhlZCBleHRlbnNpb24gaGFuZGxpbmcgaW4gTG9hZExpYnJhcnkxNi4KCgkqIHdpbmRvd3MvZGNlLmMsIHdpbmRvd3MvcGFpbnRpbmcuYywgd2luZG93cy93aW4uYywgd2luZG93cy93aW5wb3MuYywgd2luZG93cy94MTFkcnYvZXZlbnQuYywgaW5jbHVkZS93aW4uaCwgb2JqZWN0cy9yZWdpb24uYzoKCUFsZXggS29yb2JrYSA8YWxleEBhaWtlYS5hbXMuc3VueXNiLmVkdT4KCVJlYXJyYW5nZWQgUEFJTlRfUmVkcmF3V2luZG93KCkgc28gdGhhdCBpdCBmaXJzdCByZWN1cnNpdmVseSB1cGRhdGVzCglpbnZhbGlkIHJlZ2lvbnMgYW5kIG9ubHkgdGhlbiBzdGFydHMgc2VuZGluZyBvdXQgbWVzc2FnZXMuIFRoaXMgc2hvdWxkCgloZWxwIHdpdGggcmVlbnRyYW5jeSBkdXJpbmcgbWVzc2FnZSBwcm9jZXNzaW5nIGFuZCBub3cgaXQgbmVlZHMganVzdAoJb25lIChvciBub25lKSBzY3JhdGNoIHJlZ2lvbiBmb3IgYWxsIHRoZXJlIGlzIHRvIGRvLiBBbHNvLCBzbWFsbCBmaXhlcwoJZm9yIFNldFdpbmRvd1BvcygpLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW46IEFkZGVkIGNoZWNrIGZvciBtaXNzaW5nIF9faTM4Nl9fIGRlZmluaXRpb24uCgoJKiBpbmNsdWRlL2NvbmZpZy5oLmluLCBzY2hlZHVsZXIvY2xpZW50LmMsIHNlcnZlci9zb2NrZXQuYywgc2VydmVyL3RyYWNlLmMsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCB0b29scy93cmMvcGFyc2VyLnksIG9sZS9kYXRhY2FjaGUuYywgb2xlL2RlZmF1bHRoYW5kbGVyLmMsIG9sZS9oZ2xvYmFsc3RyZWFtLmMsIG9sZS9tZW1sb2NrYnl0ZXMuYywgc2NoZWR1bGVyL3N5c2RlcHMuYywgdG9vbHMvYnVpbGQuYywgbWlzYy93c3ByaW50Zi5jLCBtaXNjZW11L2luc3RyLmMsIG1zZG9zL2lvcG9ydHMuYywgaWYxNjMyL3Nub29wLmMsIGluY2x1ZGUvc2VydmVyLmgsIGluY2x1ZGUvc3RhY2tmcmFtZS5oLCBpcGMvYml0X2FycmF5LmMsIGNvbnRyb2xzL2VkaXQuYywgY29udHJvbHMvbWVudS5jLCBkZWJ1Z2dlci9kYmcueSwgZ3JhcGhpY3MveDExZHJ2L3hmb250LmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUFOU0kgQyBmaXhlcy4KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUGFzcyBQUk9QU0hFRVRQQUdFIHRvIHByb3BlcnR5cGFnZSBkaWFsb2cgYXMgbFBhcmFtLgoKCSogbWlzYy93aW5zb2NrLmMsIG11bHRpbWVkaWEvZHNvdW5kLmMsIG9iamVjdHMvYnJ1c2guYywgb2JqZWN0cy9lbmhtZXRhZmlsZS5jLCBpcGMvZGRlX2F0b20uYywgaXBjL2dlbmVyaWNfaGFzaC5jLCBpcGMvc2htX2Jsb2NrLmMsIGlwYy9zaG1fbWFpbl9ibGsuYywgaXBjL3NobV9zZW1hcGguYywgbG9hZGVyL2Rvcy9kb3Ntb2QuYywgbG9hZGVyL3NpZ25hbC5jLCBtZW1vcnkvbGR0LmMsIGdyYXBoaWNzL3BzZHJ2L2luaXQuYywgaW5jbHVkZS9kcGxheS5oLCBpbmNsdWRlL2RwbG9iYnkuaCwgaW5jbHVkZS9oZWFwLmgsIGluY2x1ZGUvbWV0YWZpbGUuaCwgaW5jbHVkZS9tbXN5c3RlbS5oLCBpbmNsdWRlL3BzZHJ2LmgsIGluY2x1ZGUvc2hlbGxhcGkuaCwgaW5jbHVkZS9zaWdfY29udGV4dC5oLCBpbmNsdWRlL3dpbnNvY2suaCwgZGxscy9udGRsbC90aW1lLmMsIGRsbHMvc2hlbGwzMi9mb2xkZXJzLmMsIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYywgZGxscy9zaGVsbDMyL3NobHZpZXcuYywgZ3JhcGhpY3MvZGRyYXcuYywgZ3JhcGhpY3MvZGRyYXdfcHJpdmF0ZS5oLCBncmFwaGljcy9kaXNwZGliLmMsIGRsbHMvY29tY3RsMzIvcGFnZXIuYywgZGxscy9jb21jdGwzMi9yZWJhci5jLCBkbGxzL2NvbWN0bDMyL3N0YXR1cy5jLCBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYywgZGxscy9jb21jdGwzMi90b29sdGlwcy5jLCBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmMsIGRsbHMvY29tbWRsZy9mb250ZGxnLmMsIGRlYnVnZ2VyL21zYy5jLCBkbGxzL2NvbWN0bDMyL2NvbWJvZXguYywgZGxscy9jb21jdGwzMi9oZWFkZXIuYywgZGxscy9jb21jdGwzMi9ob3RrZXkuYywgZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglBTlNJIEMgZml4ZXMuCgoJKiB3aW5kb3dzL2NhcmV0LmMsIGluY2x1ZGUvd2luZS93aW5nZGkxNi5oLCBpbmNsdWRlL3dpbmUvd2ludXNlcjE2LmgsIG1pc2MvcHJpbnRkcnYuYywgb2JqZWN0cy9mb250LmMsIG9iamVjdHMvbGluZWRkYS5jLCBvYmplY3RzL3JlZ2lvbi5jLCBncmFwaGljcy93aW4xNmRydi9mb250LmMsIGluY2x1ZGUvZ2RpLmgsIGluY2x1ZGUvd2luZGVmLmgsIGluY2x1ZGUvd2luZ2RpLmgsIGluY2x1ZGUvd2ludXNlci5oLCBncmFwaGljcy9wc2Rydi9mb250LmM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglTcGxpdCBvZmYgd2luZ2RpMTYuaCBmcm9tIHdpbmdkaS5oLiAgQWRkIG1hbnkgbW9yZSAjZGVmaW5lcy90eXBlZGVmcwoJdG8gYnJpbmcgd2luZ2RpLmggYWxtb3N0IHVwdG8gYSBjb21wbGV0ZSBOVDQuMCBpbnRlcmZhY2UuCglGaXggcmV0dXJuIHZhbHVlIG9mIFNldFJlY3RSZ24oKS4KCgkqIHdpbmRvd3MvZGlzcGxheS5jLCB3aW5kb3dzL2ZvY3VzLmMsIHdpbmRvd3Mvbm9uY2xpZW50LmMsIHdpbmRvd3MvdHR5ZHJ2L21vdXNlLmMsIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3Mvd2lucG9zLmMsIGluY2x1ZGUvdHR5ZHJ2LmgsIGluY2x1ZGUvd2lucG9zLmg6CglNaWNoYWVsIFZla3NsZXIgPG12ZWtzbGVyQHRlY2h1bml4LnRlY2huaW9uLmFjLmlsPgoJUmVtb3ZlZCAjaW5jbHVkZSAid2luZS93aW51c2VyMTYuaCIgYW5kIHVzZSAic3RydWN0IHRhZz8/Pz8iIGluc3RlYWQuCgoJKiBkZWJ1Z2dlci9zdGFjay5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUltcHJvdmVkIFdpbmUgZGVidWdnZXIgYmFja3RyYWNlLiBOZXcgZmVhdHVyZXM6CgktIERpc3BsYXlzIGVicCwgaW4gY2FzZSB5b3Ugd2FudCB0byBjaGVjayBzdGFja2ZyYW1lcyBtYW51YWxseQoJLSBEZXRlY3RzIGZhciBjYWxscyBldmVuIHdoZW4gd2luZG93cyBhcHBzIGRvbid0IG1hcmsgdGhlbQoJLSBUcmFja3MgQ2FsbEZyb20xNi9DYWxsVG8xNiByZWxheWluZyAodGh1bmtpbmcpCgoJKiBsb2FkZXIvZWxmZGxsLmM6IFVscmljaCBDemVrYWxsYSA8dWxyaWNoY0Bjb3JlbC5jYT4KCUJ1Z2ZpeDogZ2V0X3NvYmFzZW5hbWUgd2FzIG9mZiBieSBvbmUgcG9pbnRlciBpbmNyZW1lbnQuCgoJKiBtdWx0aW1lZGlhL2luaXQuYzogS2V2aW4gSG9sYnJvb2sgPGt3aEBuZW9zb2Z0LmNvbT4KCUZpeGVkIGltcGxpY2l0IHR5cGUgd2FybmluZy4KCgkqIGNvbnRyb2xzL2xpc3Rib3guYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglWYWx1ZXMgcmV0dXJuZWQgZnJvbSBQdEluUmVjdCBhbmQgTEJfSVRFTUZST01QT0lOVCBhcmUgcmV2ZXJzZWQuCgoJKiBvbGUvZGF0YWNhY2hlLmMsIG9sZS9kZWZhdWx0aGFuZGxlci5jLCBvbGUvb2xlMi5jLCBvbGUvb2xlMnN0dWJzLmMsIG9sZS9vbGVvYmouYzoKCUZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCVNlY29uZCBwYXJ0IG9mIHRoZSBPTEUgZGF0YWNhY2hlIGltcGxlbWVudGF0aW9uLgoKCSogbXNkb3MvTWFrZWZpbGUuaW4sIG1zZG9zL2RldmljZXMuYywgbXNkb3MvZG9zbWVtLmMsIG1zZG9zL2ludDIxLmMsIGluY2x1ZGUvZG9zZXhlLmgsIGluY2x1ZGUvbWlzY2VtdS5oLCBpbmNsdWRlL21zZG9zLmg6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCU1vdmVkIERPUyBMaXN0IG9mIExpc3RzIGluaXRpYWxpemF0aW9uLCBhbmQgYWRkZWQgdGhlIGJlZ2lubmluZ3Mgb2YKCXRoZSBET1MgZGV2aWNlIHN0cnVjdHVyZXMuCgoJKiBwcm9ncmFtcy9yZWdhcGkvcmVnYXBpLmMsIGluY2x1ZGUvd2lucmVnLmgsIG1pc2MvcmVnaXN0cnkuYzoKCU5vb21lbiBIYW16YSA8bm9vbWVuQG1hY2FkYW1pYW4uY29tPgoJQnVnIGZpeGVzLgoKCSogb2xlL2hnbG9iYWxzdHJlYW0uYywgcmVsYXkzMi9vbGUzMi5zcGVjOgoJVGh1eSBOZ3V5ZW4gPHRodXlAbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRlZCBHZXRIR2xvYmFsRnJvbVN0cmVhbS4KCgkqIGluY2x1ZGUvdGhyZWFkLmgsIHNjaGVkdWxlci90aHJlYWQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQ2FsbCBUSFJFQURfRnJlZVRIREIgYXMgc2VydmljZSB0aHJlYWQgY2FsbGJhY2suCgoJKiBpbmNsdWRlL21lc3NhZ2UuaCwgbG9hZGVyL3Rhc2suYywgd2luZG93cy90aW1lci5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglSZW1vdmVkIFRJTUVSX1N3aXRjaFF1ZXVlLgoKCSogZGVidWdnZXIvbWVtb3J5LmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglGb3JtYXQgb3V0cHV0IGluIERFQlVHX0V4YW1pbmVNZW1vcnkgZm9yICJkIiBhbmQgIngiIG5vdCB0byBleGNlZWQgODAKCWNoYXJzLgoKCSogbG9hZGVyL3NpZ25hbC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVN0b3Agd2luZWxpYiBwcm9ncmFtcyBvbiBmYXVsdCBpbnN0ZWFkIG9mIGVuZGxlc3MgZmF1bHRsb29waW5nLgoKCSogTWFrZWZpbGUuaW46IEphbWVzIEp1cmFuIDxqcmoxMjBAcHN1LmVkdT4KCVJ1biBsZGNvbmZpZyBpbiBtYWtlIGluc3RhbGwgaWYgdXNpbmcgLS1lbmFibGUtZGxsLgoJQ2xlYW5lZCB1cCB1bmluc3RhbGxfbGliIGFzIHdlbGwuCgoJKiBvbGUvc3RvcmFnZS5jLCBvbGUvc3RvcmFnZTMyLmMsIG9sZS9zdG9yYWdlMzIuaCwgcmVsYXkzMi9vbGUzMi5zcGVjLCBvbGUvc3RnX2JpZ2Jsb2NrZmlsZS5jLCBpbmNsdWRlL3dpbmUvb2JqX3N0b3JhZ2UuaCwgb2xlL21lbWxvY2tieXRlcy5jOgoJVGh1eSBOZ3V5ZW4gPHRodXlAbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRhdGlvbiBvZiBJU3RvcmFnZSBzdXBwb3J0ZWQgYnkgYW4gaW1wbGVtZW50YXRpb24gb2YKCUlMb2NrQnl0ZXMgb24gdG9wIG9mIGFuIEhHTE9CQUwuCgoJKiBmaWxlcy9wcm9maWxlLmMsIHJlbGF5MzIva2VybmVsMzIuc3BlYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUmV0dXJuIHRoZSBjb3JyZWN0IHZhbHVlIGZyb20gR2V0UHJpdmF0ZVByb2ZpbGVTZWN0aW9uQS4KCUNvcHkvY29udmVydCBiYWNrIHRoZSBidWZmZXIgaW4gR2V0UHJpdmF0ZVByb2ZpbGVTZWN0aW9uVy4KCVJlcGxhY2Ugc29tZSBvdXRwdXQgcG9pbnRlcnMgc3RyL3dzdHItPnB0ciBpbiBrZXJuZWwzMi5zcGVjLgoKCSogbG9hZGVyL3Rhc2suYywgc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJU29tZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZSBidWdmaXhlczoKCS0gSW5pdGlhbGl6ZSBwcm9jZXNzIGNyc3QgZm9yIDE2LWJpdCBwcm9jZXNzZXMuCgktIERvbid0IGNyYXNoIGR1ZSB0byB1bmluaXRpYWxpemVkIHN0YWNrIGZyYW1lcyBpbiBXaW5lTGliLgoJLSBNYXAgc3lzdGVtIERMTHMgYmVmb3JlIGNhbGxpbmcgVXNlclNpZ25hbFByb2MuCgktIFNpZ25hbCBVU0lHX1BST0NFU1NfQ1JFQVRFIG9ubHkgKmFmdGVyKiB0aGUgZW52X2RiIGlzIGZpbGxlZC4KCgkqIGlmMTYzMi90aHVuay5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUNhbGwgQ2FsbG91dCByb3V0aW5lcyBkaXJlY3RseSB3aGVuIHVzaW5nIGJ1aWx0aW4gVVNFUi4KCgkqIGxvYWRlci9wZV9pbWFnZS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IGFsbCBQRSBtb2R1bGVzIHdlcmUgbWFya2VkICdpbnRlcm5hbCcuCgoJKiBpbmNsdWRlL2RjZS5oLCBvYmplY3RzL2RjLmMsIHdpbmRvd3MvZGNlLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUNoZWNrIGZvciBidXN5IERDRSBtb3ZlZCB0byBEQ0hvb2sxNigpLgoKCSogaW5jbHVkZS93aW4uaCwgbG9hZGVyL21haW4uYywgd2luZG93cy93aW4uYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJSW5pdGlhbGl6ZSBXSU5fQ3JpdFNlY3Rpb24gZWFybGllci4KCgkqIGRsbHMvY29tY3RsMzIvdHJhY2tiYXIuYywgaW5jbHVkZS90cmFja2Jhci5oOgoJTHVjIFRvdXJhbmdlYXUgPGx1Y0BtYWNhZGFtaWFuLmNvbT4KCVJlbW92ZWQgdGhlIHRpbWVyIHRoYXQgd2FzIHVzZWQgdG8gcXVldWUgVFJBQ0tCQVJfUmVmcmVzaCBjYWxscy4KCVJlbW92ZWQgYWxsIGRpcmVjdCBjYWxscyB0byBUUkFDS0JBUl9SZWZyZXNoIChleGNlcHQgZnJvbSB3aXRoaW4gdGhlCglXTV9QQUlOVCBoYW5kbGluZyBzZWN0aW9uKSBhbmQgcmVwbGFjZWQgdGhlbSBieSBjYWxscyB0bwoJSW52YWxpZGF0ZVJlY3QuCglGaXhlZCBhIGJ1ZyBpbiB0aGUgVFJBQ0tCQVJfU2V0UG9zIGZ1bmN0aW9uLgoJRml4ZWQgdGhlIGJlaGF2aW9yIGZvciBkaWZmZXJlbnQgdHlwZXMgb2YgbW91c2UgaW5wdXQuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzogWXV4aSBaaGFuZyA8eXV4aXpAY29yZWwuY2E+CglJbXBsZW1lbnRlZCB0b29sYmFyIG11bHRpcm93IGJ1dHRvbiBsYXlvdXQuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2x0aXBzLmM6IEZyYW5jb2lzIEJvaXN2ZXJ0IDxmcmFuY29pc0BtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGF0aW9uIG9mIFdNX0dFVFRFWFQgYW5kIFdNX0dFVFRFWFRMRU5HVEggaW4gdG9vbHRpcHMuCgoJKiBvbGUvb2xlMmRpc3AuYzogVGh1eSBOZ3V5ZW4gPHRodXlAbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRlZCBPbGVUcmFuc2xhdGVDb2xvci4KCgkqIGluY2x1ZGUvd2ludXNlci5oLCB3aW5kb3dzL2lucHV0LmM6CglGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglDaGFuZ2VkIHRoZSByZXR1cm4gdmFsdWUgb2YgR2V0S2V5Ym9hcmRTdGF0ZSBhbmQgU2V0S2V5Ym9hcmRTdGF0ZSBmcm9tCglWT0lEIHRvIEJPT0wuCgoJKiBjb250cm9scy9saXN0Ym94LmM6IEZyYW5jb2lzIEJvaXN2ZXJ0IDxmcmFuY29pc0BtYWNhZGFtaWFuLmNvbT4KCVByZXZlbnRlZCBMSVNUQk9YX1JlcGFpbnRJdGVtIGZyb20gcmVwYWludGluZyBhIG5vbiB2aXNpYmxlIGl0ZW0uCgoJKiByZWxheTMyL2J1aWx0aW4zMi5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIHR5cG8uCgoJKiB3aW5kb3dzL2NsYXNzLmM6IEh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUJ1Z2ZpeCBmb3IgVFJBQ0UgaW4gVW5yZWdpc3RlckNsYXNzLgoKV2VkIE1heSAgNSAxMzoyMDo1MCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS9BdHRpYy9wcm9wc2hlZXQuaDogTm8gbG9uZ2VyIG5lY2Vzc2FyeS4KClR1ZSBNYXkgIDQgMTY6NTU6MjMgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG9iamVjdHMvZGMuYywgd2luZG93cy9kY2UuYywgaW5jbHVkZS9kY2UuaDoKCUZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUNoZWNrIGlmIERDIGlzIGJ1c3kgYmVmb3JlIGRlbGV0aW5nIGl0LgoKCSogd2luMzIvbmV3Zm5zLmM6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglHZXRNYWlsc2xvdEluZm8gaXMgc3VwcG9zZWQgdG8gY2hlY2sgZm9yIHBvaW50ZXIgdmFsaWRpdHkuCgoJKiBzZXJ2ZXIvc2VsZWN0LmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJUG9zc2libGUgY3Jhc2ggaW4gc2VsZWN0X2xvb3AoKSBmaXhlZC4KCgkqIGluY2x1ZGUvc2VydmljZXMuaCwgbG9hZGVyL3Rhc2suYywgc2NoZWR1bGVyL3NlcnZpY2VzLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUZpeGVkIHZhcmlvdXMgc3R1cGlkIGJ1Z3MgaW4gc2VydmljZXMgdGhyZWFkIHJvdXRpbmVzLgoJQWRkZWQgU0VSVklDRV9FeGl0IHJvdXRpbmUgdG8ga2lsbCB0aGUgc2VydmljZXMgdGhyZWFkLgoKCSogbWlzYy9tYWluLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJSW52ZXJ0ZWQgY2xhc3MvY2hhbm5lbCBpbiBfXyhTRVR8R0VUKV9ERUJVR0dJTkcgbWFjcm9zLgoKCSogd2luZG93cy9xdWV1ZS5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUNvcnJlY3QgaW1wbGVtZW50YXRpb24gb2YgR2V0V2luZG93VGhyZWFkUHJvY2Vzc0lkKCkuCgoJKiBpZjE2MzIvbW1zeXN0ZW0uc3BlYywgbXVsdGltZWRpYS9tbXN5c3RlbS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBZGRlZCBQbGF5U291bmQxNiwgc25kUGxheVNvdW5kMTYuCgoJKiBpZjE2MzIvdGh1bmsuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglGaXhlcyB3aW5wcm9jIGRlYWRsb2NrIGZvciB3aW4xNi4KCk1vbiBNYXkgIDMgMDk6NDQ6NTcgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MvcXVldWUuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBzb21lIGRlYWRsb2NrKHMpIGluIG1lc3NhZ2Ugc2VuZGluZy4KCgkqIG11bHRpbWVkaWEvbW1zeXN0ZW0uYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CgljbGVhbmVkIHVwIGRlYnVnIGNoYW5uZWxzIHRvIHVzZSBkZWZhdWx0IG9uZSAobW1zeXMpCgltb3JlIGNvbnZlcnNpb25zIGZyb20gbWl4ZXJYWFhXIGFuZCBtaXhlclhYWFgxNiB0byBtaXhlclhYWFhBCglmaXhlZCBjYWxsYmFjayBidWcgaW4gbWlkaVN0cmVhbSBmdW5jdGlvbnMKCWZpeGVkIGNvbXBpbGF0aW9uIGJ1ZyB3aXRoIGVnY3MKCWNoYW5nZWQgdG8gdGhlIG5ldyBkZWJ1ZyBjaGFubmVsIGludGVyZmFjZQoKCSogbXVsdGltZWRpYS9tbWF1eC5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCXNtYWxsIHJhbmdlIGZpeGVzIGZvciBPU1MgZHJpdmVyCgljaGFuZ2VkIHRvIHRoZSBuZXcgZGVidWcgY2hhbm5lbCBpbnRlcmZhY2UKCgkqIG11bHRpbWVkaWEvbWl4ZXIuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglmaXJzdCAod29ya2luZykgc2hvdCBhdCBPU1MgbWl4ZXIgbG93IGxldmVsIGludGVyZmFjZQoJY2hhbmdlZCB0byB0aGUgbmV3IGRlYnVnIGNoYW5uZWwgaW50ZXJmYWNlCgoJKiBtaXNjL25ldHdvcmsuYywgcmVsYXkzMi9tcHIuc3BlYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJRml4ZWQgb2ZmLWJ5LW9uZSBvcmRpbmFscyBpbiBNUFIuCglBZGRlZCBNUFJfQWxsb2MvUmVBbGxvYy9GcmVlIChNUFIuMjItMjQpLgoKCSogbG9hZGVyL21vZHVsZS5jLCBpZjE2MzIvcmVsYXkuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiByZWxlYXNlIFdpbjE2TG9jayBpbiBXaW5FeGVjMTYsIENhbGxQcm9jW0V4XTMyV18xNi4KCgkqIGxvYWRlci9tYWluLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJTG9hZCBzeXN0ZW0gRExMcyBpbnRvIFdpbmVMaWIgYXBwbGljYXRpb25zLgoKCSogZ3JhcGhpY3MvcHNkcnYvcHMuYzogSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJU21hbGwgdXBkYXRlIHRvIHRoZSBQb3N0U2NyaXB0IGVuY29kaW5nIHZlY3Rvci4KCgkqIGxvYWRlci9tb2R1bGUuYywgbG9hZGVyL3Rhc2suYzogQnVnIGZpeGVzLgoKU3VuIE1heSAgMiAxOToxMDo1NyAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCU1vdmVkIGEgZmV3IG1vcmUgaW5pdGlhbGlzYXRpb25zIHRvIHRoZSBuZXcgcHJvY2VzcyBjb250ZXh0LgoKCSogbG9hZGVyL3Rhc2suYzogRG9uJ3QgaW5pdGlhbGlzZSB0aGUgc3RhY2tzIGZvciAzMi1iaXQgcHJvY2Vzc2VzLgoKCSogbWlzY2VtdS9tYWluLmM6IE9ubHkgY2hlY2sgbnVtYmVyIG9mIHRhc2tzIGFmdGVyIGZpcnN0IG1lc3NhZ2UuCglVc2UgYSAxNi1iaXQgbW9kdWxlIGZvciBjcmVhdGluZyB0aGUgaW5pdGlhbCB0YXNrLgoKCSogaW5jbHVkZS9hdXRob3JzLmgsIEFVVEhPUlM6CglVcGRhdGVkIGF1dGhvcnMgbGlzdCBmcm9tIHRoZSBDaGFuZ2Vsb2cuIFBsZWFzZSBsZXQgbWUga25vdyBpZiB5b3UKCWhhdmUgYmVlbiBsZWZ0IG91dC4KCgkqIGxvYWRlci90YXNrLmMsIHNjaGVkdWxlci9wcm9jZXNzLmM6CglDb252ZXJ0ZWQgdG8gdGhlIG5ldyBkZWJ1Z2dpbmcgaW50ZXJmYWNlIChkb25lIHdpdGggdGhlIGhlbHAgb2YgdGhlCglzY3JpcHQgd3JpdHRlbiBieSBQYXRyaWsgU3RyaWR2YWxsKS4KCVNvbWUgY2hhbmdlcyB0byB0aGUgaW5pdGlhbGlzYXRpb24gc2VxdWVuY2UgZm9yIDMyLWJpdCBwcm9jZXNzZXMuCgoJKiAqLyouYzoKCUNvbnZlcnRlZCB0byB0aGUgbmV3IGRlYnVnZ2luZyBpbnRlcmZhY2UgKGRvbmUgd2l0aCB0aGUgaGVscCBvZiB0aGUKCXNjcmlwdCB3cml0dGVuIGJ5IFBhdHJpayBTdHJpZHZhbGwpLgoKCSogdG9vbHMvbWFrZV9kZWJ1ZywgaW5jbHVkZS9kZWJ1Z2RlZnMuaCwgaW5jbHVkZS9kZWJ1Z3Rvb2xzLmgsIG1pc2MvbWFpbi5jOgoJTWlzYyBmaXhlcyBhbmQgaW1wcm92ZW1lbnRzLgoKCSogaW5jbHVkZS9jb25maWcuaC5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW46CglBZGRlZCBjaGVjayBmb3IgLWxtbWFwIGZvciBPUy8yLgoKCSogaW5jbHVkZS9kZWJ1Z2RlZnMuaCwgb2xlL2hnbG9iYWxzdHJlYW0uYywgb2xlL3N0Z19zdHJlYW0uYywgb2xlL3N0b3JhZ2UzMi5jOgoJRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgYSBmZXcgYnVncyBpbiB0aGUgT0xFIHN0b3JhZ2UgaW1wbGVtZW50YXRpb24sIGFkZGVkIGEgbmV3IHNldCBvZgoJdHJhY2Ugc3RhdGVtZW50cyBmb3IgdGhlIE9MRSBzdG9yYWdlIHJlbGF0ZWQgbWV0aG9kcyBhbmQgaW50cm9kdWNlZCBhCgluZXcgZGVidWcgY2hhbm5lbCBmb3IgdGhlIHN0b3JhZ2Ugc3Vic3lzdGVtLgoKCSogbXVsdGltZWRpYS90aW1lLmMsIG9iamVjdHMvZGliLmMsIG9iamVjdHMvcGFsZXR0ZS5jLCBpbmNsdWRlL3dpbmUvd2ludXNlcjE2LmgsIG1pc2Mvc3Bvb2xlci5jOgoJTWljaGFlbCBWZWtzbGVyIDxtdmVrc2xlckB0ZWNodW5peC50ZWNobmlvbi5hYy5pbD4KCVJlbW92ZWQgcmVkdW5kYW50IGluY2x1ZGUgb2Ygd2luYmFzZS5oIGZyb20gd2ludXNlcjE2LmguCglNb3ZlZCB0eXBlcyBmcm9tIHdpbmJhc2UuaCB0byB3aW51c2VyMTYuaCAuCgoJKiBpbmNsdWRlL3dpbnVzZXIuaDogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CgktIGRlZmF1bHQgaXRlbSBoYW5kbGluZwoJLSBzbWFsbCBkcmF3aW5nIGZpeGVzCgoJKiBkbGxzL2NvbW1kbGcvY2RsZ19Fbi5yYywgZGxscy9jb21tZGxnL3ByaW50ZGxnLmM6CglLbGFhcyB2YW4gR2VuZCA8a2xhYXNAdmFuZ2VuZC5kZW1vbi5ubD4KCU1vcmUgaW1wbGVtZW50YXRpb24gb2YgUHJpbnREbGdBLgoJQ29udmVyc2lvbiBvZiByZXNvdXJjZSBpZGVudGlmaWVycyBvZiBQcmludDMyIHdpbmRvdyB0byBjb21wbHkgdG8gdGhlCglNJCBudW1iZXJpbmcuCgoJKiBzZXJ2ZXIvdGhyZWFkLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJRG9uJ3QgY3Jhc2ggaWYgcXVldWluZyBhbiBBUEMgb24gYSB0aHJlYWQgdGhhdCBkb2Vzbid0IHdhaXQuCgoJKiB3aW5kb3dzL3RpbWVyLmMsIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIGluY2x1ZGUvbWVzc2FnZS5oOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglVc2UgU0VSVklDRVMgY2FsbGJhY2sgdG8gaW1wbGVtZW50IFdpbmRvd3MgdGltZXJzLgoJVGltZXIgZXhwaXJhdGlvbiBoYW5kbGluZyByZW1vdmVkIGZyb20gRVZFTlRfV2FpdE5ldEV2ZW50IGxvb3AuCgoJKiBtZW1vcnkvaGVhcC5jOiBIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglDYWxsIFNldExhc3RFcnJvciBpbiBIZWFwQ29tcGFjdCgpLgoKCSogaW5jbHVkZS93aW5iYXNlLmg6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQWRkZWQgcHJvdG90eXBlIGZvciBUcnlFbnRlckNyaXRpY2FsU2VjdGlvbi4KCgkqIGluY2x1ZGUvY29tbWRsZy5oOiBLbGFhcyB2YW4gR2VuZCA8a2xhYXNAdmFuZ2VuZC5kZW1vbi5ubD4KCU1ha2UgYWxsIHN0cnVjdHVyZXMgcGFja2VkIGFuZCByZW1vdmFsIG9mIHNvbWUgV0lORV9QQUNLRUQuCgoJKiBjb250cm9scy9idXR0b24uYzogUGF2ZWwgUm9za2luIDxwYXZlbF9yb3NraW5AZ2VvY2l0aWVzLmNvbT4KCVB1c2hidXR0b25zIHNob3VsZCBvbmx5IGJlIHJvdW5kZWQgaW4gV2luMzEgbG9vay4KCgkqIGNvbnRyb2xzL21lbnUuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CgktIGRlZmF1bHQgaXRlbSBoYW5kbGluZwoJLSBzbWFsbCBkcmF3aW5nIGZpeGVzCgoJKiB3aW5kb3dzL3dpbnBvcy5jOiBOb2VsIEJvcnRod2ljayA8bm9lbEBtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIGFuIHVuYmFsYW5jZWQgd2luZG93cyBsb2NrL3VubG9jayBzZXF1ZW5jZSBpbgoJV0lOUE9TX0FjdGl2YXRlT3RoZXJXaW5kb3cuCgoJKiBpbmNsdWRlL2RlYnVnZGVmcy5oOiBlbmhtZXRhZmlsZSBhZGRlZAoKCSogcmVsYXkzMi8uY3ZzaWdub3JlLCByZWxheTMyL01ha2VmaWxlLmluLCByZWxheTMyL2J1aWx0aW4zMi5jLCByZWxheTMyL21jaWFuaW0uc3BlYywgcmVsYXkzMi9tY2lhdmkuc3BlYywgcmVsYXkzMi9tY2ljZGEuc3BlYywgcmVsYXkzMi9tY2lzZXEuc3BlYywgcmVsYXkzMi9tY2l3YXZlLnNwZWMsIHJlbGF5MzIvd2lubW0uc3BlYywgaW5jbHVkZS9tdWx0aW1lZGlhLmgsIGxvYWRlci9tYWluLmMsIG11bHRpbWVkaWEvYXVkaW8uYywgbXVsdGltZWRpYS9pbml0LmMsIG11bHRpbWVkaWEvbWNpLmMsIG11bHRpbWVkaWEvbWNpYW5pbS5jLCBtdWx0aW1lZGlhL21jaWF2aS5jLCBtdWx0aW1lZGlhL21jaWNkYS5jLCBtdWx0aW1lZGlhL21jaW1pZGkuYywgbXVsdGltZWRpYS9tY2lzdHJpbmcuYywgbXVsdGltZWRpYS9tY2l3YXZlLmMsIG11bHRpbWVkaWEvbW1zeXN0ZW0uYywgZG9jdW1lbnRhdGlvbi9zdGF0dXMvbXVsdGltZWRpYSwgaWYxNjMyL21tc3lzdGVtLnNwZWMsIHdpbmUuaW5pOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CgktIGdvdCByaWQgb2YgYWxsIHRoZSBpbnRlcm5hbCBNTSB0d2Vha3MgdG8gbG9hZCBidWlsdGluIE1DSQoJICBkcml2ZXJzLiBUaGV5IGFyZSBhbGwgc2VlbiBhcyBkcml2ZXJzLCBsb2FkZWQgYXMgRExMcyBhbmQgc3RhbmRhcmQKCSAgbW9kdWxlIGxvYWRvcmRlciBpcyB1c2VkIHRvIGtub3cgd2hpY2ggdHlwZSB0byB1c2UgKGJ1aWx0aW4gdnMKCSAgbmF0aXZlKS4KCS0gZmlyc3QgZnVsbCB3b3JraW5nIGltcGxlbWVudGF0aW9uIG9mIG1tVGhyZWFkPz8/IGZ1bmN0aW9ucyAodG8KCSAgc3VwcG9ydCBncmFjZWZ1bGx5IG5hdGl2ZSBNQ0kgZHJpdmVycykuCgktIHN1cHBvcnQgb2YgbW1TaG93TU1DUExQcm9wZXJ0eVNoZWV0LgoJLSBmaXggb2Ygc29tZSBoZWFwIHZhbGlkYXRlIGJ1Z3MgKHRoYW5rcyB0byBVbHJpY2ggZm9yIHJlcG9ydGluZyB0aGVtKS4KCgkqIGxvYWRlci9tb2R1bGUuYzogR3V5IEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCUZpeCBDcmVhdGVQcm9jZXNzQSB0byBpbXBsZW1lbnQgY29ycmVjdCBhY3Rpb25zIG9uIGFtYmlndW91cyBjb21tYW5kCglsaW5lIG5hbWVzICh0cnkgbG9uZ2VyIGFuZCBsb25nZXIgc3RyaW5ncykuCgoJKiBNYWtlZmlsZS5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGdyYXBoaWNzL2VuaG1ldGFmaWxlZHJ2Ly5jdnNpZ25vcmUsIGdyYXBoaWNzL2VuaG1ldGFmaWxlZHJ2L01ha2VmaWxlLmluLCBncmFwaGljcy9lbmhtZXRhZmlsZWRydi9kYy5jLCBncmFwaGljcy9lbmhtZXRhZmlsZWRydi9ncmFwaGljcy5jLCBncmFwaGljcy9lbmhtZXRhZmlsZWRydi9pbml0LmMsIGdyYXBoaWNzL2VuaG1ldGFmaWxlZHJ2L21hcHBpbmcuYywgZ3JhcGhpY3MvZW5obWV0YWZpbGVkcnYvb2JqZWN0cy5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9pbml0LmMsIGluY2x1ZGUvZW5obWV0YWZpbGVkcnYuaDoKCUh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJU3RhcnRlZCBpbXBsZW1lbnRpbmcgRW5oYW5jZWQgTWV0YUZpbGUgZHJpdmVyLgoKCSogaW5jbHVkZS9vbGUyLmgsIGluY2x1ZGUvd2luZS9vYmpfb2xlb2JqLmgsIGluY2x1ZGUvd2luZS9vYmpfb2xldmlldy5oLCBvbGUvTWFrZWZpbGUuaW4sIG9sZS9kYXRhY2FjaGUuYywgb2xlL2RlZmF1bHRoYW5kbGVyLmMsIG9sZS9vbGUyLmMsIG9sZS9vbGUyc3R1YnMuYywgb2xlL29sZW9iai5jLCByZWxheTMyL29sZTMyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmM6CglGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRlZCB0aGUgT0xFIG9iamVjdCBkZWZhdWx0IGhhbmRsZXIgYW5kIGRhdGEgY2FjaGUuCgoJKiBpbmNsdWRlL2VuaG1ldGFmaWxlLmgsIGluY2x1ZGUvd2luZ2RpLmgsIG9iamVjdHMvZW5obWV0YWZpbGUuYzoKCUh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJU2V2ZXJhbCBpbXByb3ZlbWVudHMgdG8gRW5oYW5jZWQgTWV0YUZpbGUgcGxheWJhY2suCgoJKiBsb2FkZXIvbmUvbW9kdWxlLmM6IEJlcnRobyBTdHVsdGllbnMgPGJlcnRob0BwYW50ZXIuc29jaS5hYXUuZGs+CglPbmx5IHRyeSB0byBhcHBlbmQgIi5kbGwiIGlmIGEgbGlicmFyeSBpcyBsb2FkZWQgaW1wbGljaXRlbHkuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYzoKCU1pY2hhZWwgVmVrc2xlciA8bXZla3NsZXJAdGVjaHVuaXgudGVjaG5pb24uYWMuaWw+CglGaXggVFJBQ0UgZm9ybWF0dGluZyB3YXJuaW5ncy4KCgkqIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYzoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUZpeGVkIGEgc21hbGwgc3ludGF4IHByb2JsZW0uCgoJKiB3aW5kb3dzL3dpbnBvcy5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCS0gYmV0dGVyIHN0dWJzIGZvciBHZXQvU2V0IHNwZWNpYWwgKFByb2dtYW4vVGFza21hbikgd2luZG93IGZ1bmN0aW9ucwoKCSogcmVsYXkzMi91c2VyMzIuc3BlYywgd2luZG93cy9tZXNzYWdlLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCS0gbmV3IFNlbmRNZXNzYWdlQ2FsbGJhY2tXCgktIHNvbWUgZml4bWUncyBmb3IgbWlzc2luZyBBPC0+VyBjb252ZXJzaW9uCgoJKiB3aW5kb3dzL2RpYWxvZy5jOiBOb2VsIEJvcnRod2ljayA8bm9lbEBtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIGFuIHVuYmFsYW5jZWQgd2luZG93cyBsb2NrL3VubG9jayBzZXF1ZW5jZSBpbiBHZXROZXh0RGxnVGFiSXRlbS4KCgkqIG1pc2MvcHJpbnRkcnYuYzogS2xhYXMgdmFuIEdlbmQgPGtsYWFzQHZhbmdlbmQuZGVtb24ubmw+CglCdWdmaXggZm9yIEVudW1QcmludGVycyBsZXZlbCAyLgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzogR3V5IEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCUNvcnJlY3QgbG9naWMgaW4gR2V0S2V5TmFtZVRleHQuCgoJKiBkb2N1bWVudGF0aW9uL2J1Z3JlcG9ydHM6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglSZW1vdmVkICtzbm9vcCBmcm9tIGRvY3VtZW50YXRpb24vYnVncmVwb3J0cy4KClNhdCBNYXkgIDEgMTA6NDE6MDIgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG9iamVjdHMvYml0bWFwLmM6IFBhdmVsIFJvc2tpbiA8cGF2ZWxfcm9za2luQGdlb2NpdGllcy5jb20+CglMb2FkSW1hZ2VXIGZpeGVkIGZvciBoaWNvbG9yIGRpc3BsYXlzLgoKCSogaW5jbHVkZS9tbXN5c3RlbS5oLCBpbmNsdWRlL211bHRpbWVkaWEuaCwgbXVsdGltZWRpYS9tbXN5c3RlbS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglNQ0lfQU5JTV9PUEVOX1BBUk1TVyBzaG91bGQgYmUgTFBDV1NUUiwgTUNJX0RlZllpZWxkUHJvYyBzaG91bGQgYmUgV0lOQVBJLgoKCSogZGxscy9jb21jdGwzMi9oZWFkZXIuYzogQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglKYW1lcyBBYmJhdGllbGxvIDxhYmJleWpAd3BpLmVkdT4KCUZpeGVkIEhFQURFUl9JbnNlcnRJdGVtQSBhbmQgSEVBREVSX0luc2VydEl0ZW1XIG51bGwgcG9pbnRlciBjaGVja2luZwoJdG8gaGFuZGxlIHdpZGUgY2hhcmFjdGVyIHN0cmluZ3MgcHJvcGVybHkuICBGaXggb2Ygb3VyIHByZXZpb3VzIHBhdGNoCglmb3IgbnVsbCBwb2ludGVyIGNoZWNraW5nLgoKCSogb2xlL01ha2VmaWxlLmluLCBvbGUvbWVtbG9ja2J5dGVzLmMsIG9sZS9vbGUyc3R1YnMuYzoKCVRodXkgTmd1eWVuIDx0aHV5QG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50ZWQgQ3JlYXRlSUxvY2tCeXRlc09uSEdsb2JhLCBHZXRIR2xvYmFsRnJvbUlMb2NrQnl0ZXMgYW5kCgl0aGUgSUxvY2tCeXRlcyBpbnRlcmZhY2UgYmFzZWQgb24gYW4gSEdMT0JBTC4KCgkqIG9sZS9jb21wb2JqLmM6IEZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIGEgYnVnIGluIENvUmVnaXN0ZXJDbGFzc09iamVjdC4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOiBMdWMgVG91cmFuZ2VhdSA8bHVjQG1hY2FkYW1pYW4uY29tPgoJUmVtb3ZlZCBzb21lIGZsaWNrZXJpbmcgd2hlbiBpbnNlcnRpbmcgb3IgZGVsZXRpbmcgYnV0dG9ucy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglKYW1lcyBBYmJhdGllbGxvIDxhYmJleWpAd3BpLmVkdT4KCUZpeGVkIExJU1RWSUVXX0dldEl0ZW1DaGFuZ2VzKCkgdG8gcGVyZm9ybSBhIG1vcmUgY29tcGxldGUgY29tcGFyaXNvbgoJYmV0d2VlbiBscEl0ZW0gYW5kIGxwTFZJdGVtLiAgTm93IGNvbXBhcmVzIHRoZSBwc3pUZXh0IHN0cmluZyBvZiB0aGUKCWxwSXRlbSBhbmQgbHBMVkl0ZW0gc3RydWN0cy4gIEZpeGVzIGEgYnVnIHdoZXJlIHRoZSBvbGQgYW5kIG5ldyBpdGVtCgloYXZlIHRoZSBzYW1lIGF0dHJpYnV0ZXMgYnV0IHRoZWlyIHRleHQgZGlmZmVycyBhbmQgR2V0SXRlbUNoYW5nZXMoKQoJY29tcGFyZXMgdGhlbSBhcyBlcXVhbC4KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmMsIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmgsIGRsbHMvY29tY3RsMzIvcnNyYy5yYywgZGxscy9jb21jdGwzMi90YWIuYzoKCVRodXkgTmd1eWVuIDx0aHV5QG1hY2FkYW1pYW4uY29tPgoJQWRkZWQgc3VwcG9ydCBmb3IgYWRkaW5nIGFuZCByZW1vdmluZyBwYWdlcyBkeW5hbWljYWxseSBmcm9tIGEKCXByb3BlcnR5IHNoZWV0LgoKCSogY29udHJvbHMvYnV0dG9uLmMsIGNvbnRyb2xzL2NvbWJvLmMsIGNvbnRyb2xzL2Rlc2t0b3AuYywgY29udHJvbHMvbGlzdGJveC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglSZW1vdmVkIHRoZSBnb3RvcyBmcm9tIHRoZSBXbmRQcm9jcywgYWx3YXlzIHVzZSBhIHNtYWxsIHdyYXBwZXIgdGhhdAoJbG9ja3MgdGhlIHdpbmRvdywgY2FsbHMgdGhlIHJlYWwgd25kcHJvYywgdW5sb2NrcyB0aGUgd2luZG93LgoKCSogZGxscy9zaGVsbDMyL2NvbnRtZW51LmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUZpeGVkIGRlZmF1bHQgbWVudSBpdGVtLgoKCSogd2luMzIvY29kZV9wYWdlLmMsIG1pc2MvZGRlbWwuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJRml4ZWQgdHlwby4KCgkqIHdpbmRvd3MvcXVldWUuYzoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUFkZGVkIGEgbWlzc2luZyBMZWF2ZUNyaXRpY2FsU2VjdGlvbi4KCgkqIHdpbmRvd3MvbWRpLmM6IEZyYW5jb2lzIEJvaXN2ZXJ0IDxmcmFuY29pc0BtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIGEgd3JvbmcgdXNhZ2Ugb2YgV0lOX0ZpbmRXbmRQdHIvV0lOX1JlbGVhc2VXbmRQdHIgaW4KCVRyYW5zbGF0ZU1ESVN5c0FjY2VsMTYuCgoJKiBtaXNjL2NvbW0uYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglGaXhlZCBvZmYtYnktb25lIGJ1ZyBpbiBhc3luYyBvdXRwdXQgYnVmZmVycy4KCgkqIG9sZS9vbGUyLmM6IEZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIGEgbGl0dGxlIERyYWcgYW5kIERyb3AgYnVnLgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpNb24gQXByIDI2IDE0OjU4OjU5IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL2NvbmZpZy5oLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgYXV0b2NvbmYgY2hlY2sgZm9yICJpbmxpbmUiLiBZb3UgY2FuIG5vdyB1c2UgaXQsIGl0IHdpbGwgYmUKCWRlZmluZWQgdG8gKGVtcHR5KSBmb3IgY29tcGlsZXJzIHRoYXQgZG8gbm90IGhhdmUgaXQuCgoJKiB0b29scy93cmMvcGFyc2VyLnk6IEdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJRG9uJ3QgaW5jbHVkZSBhbGxvY2EuaC4KCgkqIFJFQURNRSwgZG9jdW1lbnRhdGlvbi93aW5lLm1hbjogSmFtZXMgSnVyYW4gPGpyajEyMEBwc3UuZWR1PgoJVXBkYXRlIHRvIHJlZmxlY3QgcmVjZW50IGNoYW5nZXMgYW5kIGRpc2N1c3Npb25zLgoKCSogbG9hZGVyL2xvYWRvcmRlci5jOiBCZXJ0aG8gU3R1bHRpZW5zIDxiZXJ0aG9AcGFudGVyLnNvY2kuYWF1LmRrPgoJVGhlIGxvYWQgb3JkZXIgcGFyc2VyIHNob3VsZCBub3QgYWx3YXlzIGNvbXBsYWluIGFib3V0IGV4dGVuc2lvbnMuCgoJKiBjb250cm9scy9tZW51LmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJLSBhbGlnbiBtYWdpYyBidXR0b25zIHJpZ2h0CgktIHNob3J0Y3V0cyBhbGlnbm1lbnQgd29ya2luZyBhZ2FpbgoKCSogbG9hZGVyL25lL21vZHVsZS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGxvYWRpbmcgb2YgbmF0aXZlIE5FIGRsbHMuCgpTdW4gQXByIDI1IDE5OjA0OjQyIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBtZW1vcnkvaGVhcC5jOiBGaXhlZCBfX2J1aWx0aW5fcmV0dXJuX2FkZHJlc3MgYXJnLgoKCSogKi8qOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBBTlNJIGNvbXBhYmlsbGl0eS4KCgkqICovKjoKCUJlcnRobyBTdHVsdGllbnMgPGJlcnRob0BwYW50ZXIuc29jaS5hYXUuZGs+CglCdWlsdC1pbiBkbGxzIG5vdyBoYXZlIHJlc291cmNlcyBhdHRhY2hlZCB2aWEgdGhlIFBFLWhlYWRlciBsaWtlCglub3JtYWwgZGxscy4gVGhpcyBlbmFibGVzIHRoZSB1c2Ugb2YgdGhlIHJlc291cmNlIEFQSS4KCgkqIG1pc2MvcmVnaXN0cnkuYzoKCVVzZSAkSE9NRSBpbnN0ZWFkIG9mIGdldHB3dWlkIGZvciB1c2VyJ3MgaG9tZSBkaXJlY3RvcnkuCglGaXhlZCBtZXNzZWQgdXAgaW5kZW50YXRpb24uCgoJKiBncmFwaGljcy94MTFkcnYveGZvbnQuYzoKCVVzZSAkSE9NRSBpbnN0ZWFkIG9mIGdldHB3dWlkIGZvciB1c2VyJ3MgaG9tZSBkaXJlY3RvcnkuCgoJKiAqLyouaDoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJI3ByYWdtYSBwYWNrKD8pIGNoYW5nZWQgdG8gI2luY2x1ZGUgIipwYWNrKi5oIgoKCSogdG9vbHMvYnVpbGQuYywgaW5jbHVkZS9jb21tY3RybC5oLCBpbmNsdWRlL2NvbW1kbGcuaCwgaW5jbHVkZS9kb2NvYmouaCwgaW5jbHVkZS9oZWFwLmgsIGluY2x1ZGUvc2hlbGxhcGkuaCwgaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2luZGVmLmgsIGluY2x1ZGUvd2luZS9vYmpfb2xlYXV0LmgsIGluY2x1ZGUvd2luZS9vYmpfc3RvcmFnZS5oLCBpbmNsdWRlL3dpbmVycm9yLmgsIGluY2x1ZGUvd2luZ2RpLmgsIGluY2x1ZGUvd2lubmV0d2suaCwgaW5jbHVkZS93aW5ubHMuaCwgaW5jbHVkZS93aW51c2VyLmg6CglKaW0gQXN0b24gPGppbWFAY29yZWwuY2E+CglBZGRlZCBzb21lIG1pc3NpbmcgI2RlZmluZXMgSSd2ZSBydW4gYWNyb3NzLgoKCSogZmlsZXMvZG9zX2ZzLmM6IEFuZHJlYXMgTW9ociA8Y2lwYW04OTVAY2lwMS5pbmQudW5pLXN0dXR0Z2FydC5kZT4KCUlnbm9yZSB0cmFpbGluZyBkb3RzIG9uIGZpbGUgbmFtZXMuCgoJKiBpbmNsdWRlL2RlYnVnZ2VyLmgsIGRlYnVnZ2VyL2RiZy55LCBkZWJ1Z2dlci9kZWJ1Zy5sLCBkZWJ1Z2dlci9kaXNwbGF5LmMsIGRlYnVnZ2VyL2VkaXRsaW5lLmMsIGRlYnVnZ2VyL2V4cHIuYywgZGVidWdnZXIvaGFzaC5jLCBkZWJ1Z2dlci9tc2MuYywgZGVidWdnZXIvc291cmNlLmMsIGRlYnVnZ2VyL3N0YWJzLmMsIGRlYnVnZ2VyL3N0YWNrLmMsIGRlYnVnZ2VyL3R5cGVzLmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUFkZGVkIGEgcG9zc2liaWxpdHkgdG8gbGV0IHRoZSBpbnRlcm5hbCBkZWJ1Z2dlciB1c2UgYSBzZXBhcmF0ZQoJaGVhcC4gTm90IGVuYWJsZWQgYnkgZGVmYXVsdCwgY2hhbmdlICNpZiBpbiBpbmNsdWRlL2RlYnVnZ2VyLmggdG8gdXNlCgl0aGlzICh0aGUgaGVhcCBhbGxvY2F0b3IgaXMgdmVyeSBzbG93KS4KCgkqIGxvYWRlci9sb2Fkb3JkZXIuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+Cgl3aW5lLmNvbmYgc2hvdWxkIG5vdCBvdmVycnVsZSBjb250ZW50IG9mIGJ1cm5lZCBpbiBkYXRhIGluCglsb2Fkb3JkZXIuYy4KCgkqIGdyYXBoaWNzL21hcHBpbmcuYzogS2FybCBMZXNzYXJkIDxrYXJsbEBjb3JlbC5jb20+CglTZXRNYXBNb2RlIHNob3VsZCBub3QgcmVzZXQgdGhlIHdpbmRvdyBhbmQgdmlld3BvcnQgb3JpZ2lucyB0byAwLgoKCSogdG9vbHMvd2luZWNvbmY6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWxsb3cgdG8gYXV0b21hdGljYWxseSBjb3B5IHBhcnQgb2Ygd2luZS5pbmkgaW50byBnZW5lcmF0ZWQgZmlsZS4KCVNtYWxsIHBlcmwgZW5oYW5jZW1lbnQgKHdvcmsgaW4gc3RyaWN0IG1vZGUpLgoJU21hbGwgdXBkYXRlcyBpbiBoZXVyaXN0aWNzLgoKCSogd2luZS5pbmk6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJVXBncmFkZWQgdG8gaGF2ZSBhIGRlY2VudCBtdWx0aW1lZGlhIERMTHMgY29uZmlndXJhdGlvbi4KCgkqIHRvb2xzL3dyYy93cmMuaCwgdG9vbHMvd3JjL3dyaXRlcmVzLmMsIHRvb2xzL3dyYy9DSEFOR0VTOgoJQmVydGhvIFN0dWx0aWVucyA8YmVydGhvQGFraHBoZC5hdS5kaz4KCS0gRml4ZWQgYSBjb3VudGluZyBidWcgaW4gdGhlIHdpbjMyIGNvdW50IGFuZCBzb3J0IHJvdXRpbmUuCgktIEZpeGVkIHNvcnQgb3JkZXIgb2YgcmVzb3VyY2VzIChtdXN0IGJlIG5hbWUgYmVmb3JlIG9yZGluYWwpLgoJLSBTaHVmZmxlZCBhIGNvdXBsZSBvZiBnbG9iYWwgdmFyaWFibGVzIHNvIHRoYXQgYnVpbHQtaW4gZGxscyBub3cgY2FuCgkgIGxvYWQgcmVzb3VyY2VzIHRocm91Z2ggdGhlIHByb3BlciBQRSBpbnRlcmZhY2UuCgoJKiBpbmNsdWRlL3dpbmRlZi5oLCBpbmNsdWRlL3dpbnJlZy5oOgoJQWRyaWFuIFRodXJzdG9uIDxhZHJpYW50QGNvcmVsLmNhPgoJQWRkZWQgc3VwcG9ydCBmb3Igc3RyaWN0IGhhbmRsZXMuIE9ubHkgd29ya3Mgb24gbWFjaGluZXMgd2hlcmUKCXNpemVvZihVSU5UKSA9PSBzaXplb2Yodm9pZCopLgoKCSogc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJSW5pdGlhbGl6ZSBwcm9jZXNzIGNyaXRpY2FsIHNlY3Rpb24gaW4gdGhlIGNvcnJlY3QgcHJvY2VzcyBjb250ZXh0LgoKCSogc2NoZWR1bGVyL2NyaXRzZWN0aW9uLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVdhcm4gaWYgd3JvbmcgcHJvY2VzcyB0cmllcyB0byBlbnRlciBjcml0aWNhbCBzZWN0aW9uLgoJQmV0dGVyIGltcGxlbWVudGF0aW9uIG9mIFJlaW5pdGlhbGl6ZS9VbmluaXRpYWxpemVDcml0aWNhbFNlY3Rpb24KCShzdGlsbCBub3QgcXVpdGUgY29ycmVjdCkuCgoJKiBsb2FkZXIvbG9hZG9yZGVyLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJZGVidWcuaCBtdXN0IGJlIGxhc3QgaW4gbGlzdCBvZiBpbmNsdWRlcy4KCgkqIGxvYWRlci9uZS9tb2R1bGUuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJUmV0dXJuIDMyLWJpdCBtb2R1bGUgaW4gR2V0TW9kdWxlSGFuZGxlMTYoKSBpZiBhcHByb3ByaWF0ZS4KCgkqIG1zZG9zL2ludDJmLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgY3Jhc2ggd2hlbiBzdGF0dXMgd2FzIHJlYWQgd2l0aCBjZC1yb20gdHJheSBvcGVuLgoKCSogd2luZG93cy9kcml2ZXIuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBhIGJ1ZyBpbiBtc2cgY29udmVyc2lvbi4KCgkqIGRsbHMvY29tY3RsMzIvdHJhY2tiYXIuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglQcmV2ZW50IGNyYXNoIHdoZW4gbk1pblJhbmdlID4gbk1heFJhbmdlLgoKCSogaW5jbHVkZS93aW51c2VyLmg6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgc29tZSBtaXNzaW5nIG1hbmlmZXN0IGNvbnN0YW50cyBmb3IgUXVldWUgU3RhdHVzIGZ1bmN0aW9ucyAoUVNfPz8/PykuCgoJKiBjb250cm9scy9idXR0b24uYywgY29udHJvbHMvZWRpdC5jLCB3aW5kb3dzL21kaS5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBtaXNzaW5nIFdJTl9SZWxlYXNlV25kUHRyLgoKCSogZ3JhcGhpY3MveDExZHJ2L3hmb250LmM6IENocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJSmFtZXMgQWJiYXRpZWxsbyA8YWJiZXlqQHdwaS5lZHU+CglNb3JlIGFwcHJvcHJpYXRlIGRlZmF1bHQgc2l6ZSBmb3IgZm9udHMgd2l0aCBpbnZhbGlkIHNpemVzLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCUphbWVzIEFiYmF0aWVsbG8gPGFiYmV5akB3cGkuZWR1PgoJSW1wbGVtZW50ZWQgU2V0Q29sdW1uV2lkdGggZm9yIExpc3RWaWV3IGNvbnRyb2wuCgoJKiBkb2N1bWVudGF0aW9uL2NvbmZpZzogQWRhbSBTYWNhcm55IDxtYWdpY2JveEBiZXN0d2ViLm5ldD4KCUFkZGVkIG5ldyBkb2N1bWVudGF0aW9uIGZvciB0aGUgY29uZmlndXJhdGlvbiBmaWxlLgoKCSogbWlzYy92ZXJzaW9uLmM6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglJbXByb3ZlZCBWRVJTSU9OX0dldFZlcnNpb24uCgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOiBQZXRlciBCb3J0YXMgPHBldGVyQGlkb25leC5zZT4KCUFkZGVkIFN3ZWRpc2gga2V5Ym9hcmQgbGF5b3V0LgoKCSogaW5jbHVkZS9nZGkuaCwgaW5jbHVkZS9tZXRhZmlsZWRydi5oLCBpbmNsdWRlL3dpbmdkaS5oLCBvYmplY3RzL2NsaXBwaW5nLmMsIG9iamVjdHMvZGMuYywgb2JqZWN0cy9kY3ZhbHVlcy5jLCBvYmplY3RzL2ZvbnQuYywgb2JqZWN0cy9nZGlvYmouYywgb2JqZWN0cy9tZXRhZmlsZS5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9NYWtlZmlsZS5pbiwgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvZGMuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvZ3JhcGhpY3MuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvaW5pdC5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9vYmplY3RzLmMsIGdyYXBoaWNzL3BhaW50aW5nLmMsIGdyYXBoaWNzL3BzZHJ2L1JFQURNRSwgZ3JhcGhpY3MvcHNkcnYvaW5pdC5jLCBncmFwaGljcy93aW4xNmRydi9pbml0LmMsIGdyYXBoaWNzL3gxMWRydi9pbml0LmM6CglIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCUdlbmVyYWwgdGlkeSB1cCBvZiB0aGUgTWV0YUZpbGUgZHJpdmVyIC0gbWFrZSBzdXJlIHRoYXQgZXZlcnl0aGluZwoJZ29lcyB0aHJvdWdoIHRoZSBEQ0Z1bmNzIHRhYmxlLgoKCSogbWlzYy90b29saGVscC5jLCBpZjE2MzIva2VybmVsLnNwZWM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglBZGQgYSBzdHViIGZvciBHbG9iYWxNYXN0ZXJIYW5kbGUuCgoJKiB0b29scy9idWdfcmVwb3J0LnBsOiBBZGFtIFNhY2FybnkgPG1hZ2ljYm94QGJlc3R3ZWIubmV0PgoJTXVjaCBuaWNlciB3YXkgdG8gc2VsZWN0IHdpbmUncyBsb2NhdGlvbi4KCU9wdGlvbiB0byBkaXNhYmxlIGNyZWF0aW9uIG9mIGRlYnVnZ2luZyBvdXRwdXQuCglEZWJ1Z2dpbmcgb3V0cHV0IGlzIG5vdyBjcmVhdGVkIGluIGRpcmVjdG9yeSBzY3JpcHQgd2FzIHN0YXJ0ZWQgaW4uCgoJKiB3aW5kb3dzL3gxMWRydi93bmQuYzogTm9lbCBCb3J0aHdpY2sgPG5vZWxAbWFjYWRhbWlhbi5jb20+CglGaXhlZCBhIHByb2JsZW0gd2l0aCBtYW5hZ2VkIG1vZGUsIHdoZXJlIHBvcHVwIHdpbmRvd3Mgd2l0aCBhIFdTX0RMR0ZSQU1FCglzdHlsZSB3ZXJlIGFwcGVhcmluZyB3aXRoIGEgdGl0bGUgYmFyLiBBY2NvcmRpbmcgdG8gdGhlIGRvY3MgZm9yCglXU19ETEdGUkFNRSBhIHdpbmRvdyB3aXRoIHRoaXMgc3R5bGUgY2Fubm90IGhhdmUgYSB0aXRsZSBiYXIuCgoJKiBsb2FkZXIvbG9hZG9yZGVyLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJVXNlIERsbE92ZXJyaWRlcyBmcm9tIHdpbmUuaW5pIGFzIGRlZmF1bHRzIGFsc28gaW4KCWxvYWRvcmRlci5jIChtZXJnZWQgaW4gc29tZSBNTSBkbGxzIGxpbmVzIGZyb20gRXJpYyBQb2V1Y2gpLgoKCSogd2luZG93cy90aW1lci5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIHNvbWUgYm9ndXMgaW5maW5pdGUgZXhwaXJhdGlvbiB0aW1lLgoKCSogd2luZG93cy94MTFkcnYvZXZlbnQuYzogRGF2aWQgTHV5ZXIgPGx1eWVyQHVjcy51d2EuZWR1LmF1PgoJLSBjb25zb2xpZGF0ZSBib3RoIGNhc2VzIG9mICFwZW5kaW5nIGluIFdhaXROZXRFdmVudAoJLSBzZWxlY3QoKSByZXR1cm5zIC0xIG5vdCAwIG9uIGVycm9yIGluIFdhaXROZXRFdmVudAoKCSogbWVtb3J5L2hlYXAuYywgaW5jbHVkZS9oZWFwLmg6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJTWFkZSBIZWFwVmFsaWRhdGUgdGhyZWFkc2FmZSwgYW5kIGFkZGVkIHNvbWUgbWFjcm9zIHRvIHRyYWNrIGNhbGxlckVJUAoJYSBsaXR0bGUgYmV0dGVyLgoJQWRkZWQgSEVBUF94cmVhbGxvYy4KClNhdCBBcHIgMjQgMTI6MDI6MTUgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGxvYWRlci9sb2Fkb3JkZXIuYywgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGluY2x1ZGUvYWNjb25maWcuaCwgaW5jbHVkZS9jb25maWcuaC5pbiwgaW5jbHVkZS9lbGZkbGwuaCwgbG9hZGVyL2VsZi5jLCBsb2FkZXIvZWxmZGxsLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCWF1dG9jb25mIGZpeGVzIGFuZCBjbGVhbnVwcyAoY2hlY2sgZm9yIGRsb3BlbigpIGluIGxpYmMgdG9vKS4KCgkqIG9sZS9NYWtlZmlsZS5pbiwgb2xlL2hnbG9iYWxzdHJlYW0uYywgb2xlL29sZTJzdHVicy5jLCBvbGUvc3RnX3N0cmVhbS5jOgoJRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50ZWQgQ3JlYXRlU3RyZWFtT25IR0xPQkFMLgoKCSogb2xlL2NvbXBvYmouYzoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUxldCBDb1NldFN0YXRlKCkgYWNjZXB0IHN0YXRlID09IE5VTEwuCgoJKiBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvcGlkbC5oOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglNYWRlIGludGVybmFsIGZvcm1hdCBtb3JlIGNvbXBhdGlibGUuCgoJKiBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCVNtYWxsIGZpeGVzLgoKCSogd2luZG93cy9jbGFzcy5jLCB3aW5kb3dzL2RjZS5jLCBjb250cm9scy9jb21iby5jOgoJR3V5IEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCUZpeCBsb2NraW5nIHdpdGggcHJvcGVyIGNhbGxzIHRvIFdJTl9SZWxlYXNlV25kUHRyLgoKCSogbXVsdGltZWRpYS9kc291bmQuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglEb24ndCBtYWxsb2MvZnJlZSBmb3IgZXZlcnkgbWl4aW5nIG9wZXJhdGlvbiwgdXNlIHRoZSBzYW1lIGJ1ZmZlciBvdmVyCglpbnN0ZWFkLi4uCgoJKiBkbGxzL2NvbWN0bDMyL2hlYWRlci5jOiBDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCUphbWVzIEFiYmF0aWVsbG8gPGFiYmVqeUB3cGkuZWR1PgoJSEVBREVSX0luc2VydEl0ZW1BIGFuZCBIRUFERVJfSW5zZXJ0SXRlbVcgbm93IHRyZWF0IG51bGwgcG9pbnRlcnMgdG8KCXRleHQgc3RyaW5ncyBhcyBudWxsIHN0cmluZ3MsIGFzIFdpbmRvd3MgZG9lcy4gIEZpeGVzIHdpbmUgY3Jhc2ggb24KCXN0YXJ0dXAgb2YgQ3V0ZUZUUC4KCgkqIG1pc2MvcmVnaXN0cnkuYzogTm9vbWVuIEhhbXphIDxub29tZW5AbWFjYWRhbWlhbi5jb20+CglTZXQgKHdoZW4gcmVnaXN0cnkgbG9hZGVkKSBkYXRhIHRvICJcMCIgYW5kIGxlbmd0aCB0byAyIGluIGVtcHR5CglzdHJpbmcgdmFsdWUgY2FzZSwgaW4gcGxhY2Ugb2Ygc2V0dGluZyBkYXRhIHRvIE5VTEwgYW5kIGxlbmd0aCB0byAwLAoJYW5kIHRoaXMgaXMgd2l0aG91dCBpbml0aWFsaXppbmcgb3V0cHV0IGJ1ZmZlciBwYXJhbWV0ZXIgb2YKCVJlZ1F1ZXJ5VmFsdWUqLgoKCSogaW5jbHVkZS93aW5nZGkuaDogSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglBZGRlZCBQYW5vc2UgZGVmaW5lcyBhbmQgRVhUTE9HRk9OVFtBfFddLgoKVGh1IEFwciAyMiAxNjoyNzo1MyAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogKi8qOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBBTlNJIGNvbXBhYmlsbGl0eS4KCgkqIG11bHRpbWVkaWEvbWNpYXZpLmMsIG11bHRpbWVkaWEvbWNpbWlkaS5jLCBtdWx0aW1lZGlhL21jaXdhdmUuYywgbXVsdGltZWRpYS9taWRpLmMsIG9iamVjdHMvdGV4dC5jLCB3aW5kb3dzL2NhcmV0LmMsIHdpbmRvd3MvcmVjdC5jLCBkbGxzL3ZlcnNpb24vaW5mby5jLCBpZjE2MzIvdGh1bmsuYywgaW5jbHVkZS93aW5lL3dpbnVzZXIxNi5oLCBtZW1vcnkvYXRvbS5jLCBtZW1vcnkvc3RyaW5nLmMsIG1pc2MvbHN0ci5jLCBtdWx0aW1lZGlhL21jaWFuaW0uYywgY29udHJvbHMvdWl0b29scy5jLCBkbGxzL2NvbW1kbGcvZmluZGRsZy5jLCBkbGxzL3NoZWxsMzIvYnJzZm9sZGVyLmM6CglNaWNoYWVsIFZla3NsZXIgPG12ZWtzbGVyQHRlY2h1bml4LnRlY2huaW9uLmFjLmlsPgoJUmVtb3ZlZCBzb21lIGluY2x1ZGVzIG9mIDE2IGJpdCBBUEkuCgoJKiBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsIGluY2x1ZGUvb2xlb2JqLmgsIGluY2x1ZGUvc2hsb2JqLmgsIGRsbHMvc2hlbGwzMi9kYXRhb2JqZWN0LmM6CglBZHJpYW4gVGh1cnN0b24gPGFkcmlhbnRAY29yZWwuY2E+CglJQ09NaXphdGlvbiBvZiByZW1haW5pbmcgaW50ZXJmYWNlcy4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbHRpcHMuYzogTm9lbCBCb3J0aHdpY2sgPG5vZWxAbWFjYWRhbWlhbi5jb20+CglGaXhlZCBidWcgd2l0aCB0b29sdGlwcyBzdGVhbGluZyBmb2N1cyB3aGVuZXZlciBhIHRvb2x0aXAgd2FzIGNyZWF0ZWQsCglzaG93biwgaGlkZGVuIG9yIHRyYWNrZWQuIFRoZSBTZXRXaW5kb3dQb3MgY2FsbHMgbmVlZGVkIHRvIGhhdmUgdGhlCglTV1BfTk9BQ1RJVkFURSBmbGFnIHNldCBhZGRpdGlvbmFsbHkuCgoJKiBvYmplY3RzL2NsaXBwaW5nLmM6IEthcmwgTGVzc2FyZCA8a2FybGxAY29yZWwuY29tPgoJRml4ZWQgY29vcmRpbmF0ZXMgY29udmVyc2lvbiBpbiBPZmZzZXRDbGlwUmduLgoKCSogaW5jbHVkZS9vYmpiYXNlLmg6IEFkcmlhbiBUaHVyc3RvbiA8YWRyaWFudEBjb3JlbC5jYT4KCUNsZWFuIHVwIG9iamJhc2UuaC4gTWFrZXMgdGhlIFNURE1FVEhPRCBzZXQgb2YgbWFjcm9zIGF2YWlsYWJsZSB0byB0aGUgd2luZWxpYiB1c2VyLgoKCSogcmVsYXkzMi9rZXJuZWwzMi5zcGVjLCBzY2hlZHVsZXIvaGFuZGxlLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUNyZWF0ZVNvY2tldEhhbmRsZSxHZXRIYW5kbGVDb250ZXh0LFNldEhhbmRsZUNvbnRleHQgc3R1YnMgYWRkZWQuCgoJKiBkbGxzL3NoZWxsMzIvYnJzZm9sZGVyLmMsIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYywgZGxscy9zaGVsbDMyL3JlZ3N0cmVhbS5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBpbmNsdWRlL3NoZWxsLmgsIGluY2x1ZGUvc2hlbGxhcGkuaCwgaW5jbHVkZS9zaGxvYmouaDoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTW92ZWQgc3R1ZmYgdG8gdGhlIHJpZ2h0IHBsYWNlLgoKCSogd2luZG93cy9zeXNjb2xvci5jOiBHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCUZpeGVkIHN5c2NvbG9ycyBmb3Igd2luIDMuMS4KCgkqIGZpbGVzL3Byb2ZpbGUuYywgaWYxNjMyL2tlcm5lbC5zcGVjOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBZGRlZCBtaXNzaW5nIHByb2ZpbGUgS0VSTkVMIHJvdXRpbmVzIChjYWxsIDMyLWJpdCB2ZXJzaW9ucykuCgoJKiBpZjE2MzIvYnVpbHRpbi5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogQlVJTFRJTl9HZXRFbnRyeVBvaW50MTYgZGlkbid0IHdvcmsgY29ycmVjdGx5IHdpdGggdGhlIG5ldwoJZW50cnkgdGFibGUgbGF5b3V0LgoKCSogaW5jbHVkZS93aW5nZGkuaDogSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglBZGQgRW5oYW5jZWQgTWV0YUZpbGUgcmVjb3JkIHN0cnVjdHVyZXMuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmMsIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmMsIGluY2x1ZGUvcmVzb3VyY2UuaCwgcmVzb3VyY2VzL3N5c3Jlc19Fbi5yYzoKCVRodXkgTmd1eWVuIDx0aHV5QG1hY2FkYW1pYW4uY29tPgoJRmlyc3QgcGF0Y2ggaW1wbGVtZW50aW5nIHByb3BlcnR5IHNoZWV0cy4KCgkqIHJlbGF5MzIvZ2RpMzIuc3BlYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBHREkzMi4xMDAtMTA0IGFyZSBvcmRpbmFsLW9ubHkgcm91dGluZXMuCglBZGRlZCBzdHVicyBmb3Igc29tZSBXaW45OCBHREkzMiByb3V0aW5lLgoJUmUtbnVtYmVyZWQgYWxsIG5hbWVkIGV4cG9ydHMgKGxleGljb2dyYXBoaWNhbGx5KS4KCgkqIGdyYXBoaWNzL2RyaXZlci5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBZGRlZCBwcm90b3R5cGVzIChzdHVicykgZm9yIEdESTMyLjEwMC0xMDQuCgoJKiBkbGxzL3NoZWxsMzIvZm9sZGVycy5jLCBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmMsIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9waWRsLmgsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwgZGxscy9zaGVsbDMyL3NoZWxsbGluay5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CgktIG1vcmUgY2hlY2tzIGZvciB2YWxpZCBwaWRsIGZvcm1hdHMKCgkqIHJlbGF5MzIvc2hlbGwzMi5zcGVjLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgaW5jbHVkZS9zaGxvYmouaDoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJLSBjb3JyZWN0ZWQgcGFyYW1ldGVyIGNvdW50IGZvciBTSEdldFNldHRpbmdzCgktIHN0dWIgU0hWYWxpZGF0ZVVOQwoKCSogbG9hZGVyL2VsZi5jOiBHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCSNlbHNlIGJyYW5jaCBjb21waWxlIGZpeC4KCgkqIGluY2x1ZGUvZWxmZGxsLmgsIGxvYWRlci9lbGZkbGwuYywgbG9hZGVyL2xvYWRvcmRlci5jOgoJQmVydGhvIFN0dWx0aWVucyA8YmVydGhvQHBhbnRlci5zb2NpLmFhdS5kaz4KCUNoYW5nZSB3aW5lJ3MgZGxvcGVuIHNlYXJjaC1wYXRjaCBzdHJhdGVneSBub3QgdXNpbmcgdGhlIGVudmlyb25tZW50CglhbmQgYWRkZWQgI2lmOnMgdG8gc2VwZXJhdGUgdGhlIGNvZGUgb3V0IGlmIGxpYmRsIGlzbid0IGF2YWlsYmxlLgoKCSogb2xlL2NvbXBvYmouYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJQWRkZWQgYSBjaGVjayBmb3IgYSBOVUxMIHBvaW50ZXIgaW4gQ29GcmVlVW51c2VkTGlicmFyaWVzLgoKCSogcmVsYXkzMi9idWlsdGluMzIuYzoKCU1hcmN1cyBNZWlzc25lciA8bXNtZWlzc25Ac3R1ZC5pbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUluY2x1ZGUgZGVidWcuaCBsYXN0IChFUlIoKSBtYWNybyBwcm9ibGVtIG9uIFNvbGFyaXMpLgoKCSogY29udHJvbHMvY29tYm8uYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgYSBzaXppbmcgYnVnIGluIHRoZSBjb21ib2JveCBjb250cm9sLgoKCSogdG9vbHMvYnVpbGQuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IEludGVybmFsIE5FIGVudHJ5IHBvaW50IHRhYmxlcyB3ZXJlIGJhZCAob25lIGh1Z2UgYnVuZGxlKS4KCgkqIG1pc2MvcmVnaXN0cnkuYzogTm9vbWVuIEhhbXphIDxub29tZW5AbWFjYWRhbWlhbi5jb20+CglJbml0aWFsaXplIHRoZSBvdXRwdXQgYnVmZmVyIHBhcmFtZXRlcnMgdG8gMCBpbiBSZWdRdWVyeVZhbHVlKgoJZnVuY3Rpb25zLiBUaGlzIGlzIGltcG9ydGFudCBzcGVjaWFsbHkgd2hlbiB0aGVyZSdzIG5vIGRhdGEgdG8gcmV0dXJuLgoKCSogbG9hZGVyL21vZHVsZS5jOiBCZXJ0aG8gU3R1bHRpZW5zIDxiZXJ0aG9AcGFudGVyLnNvY2kuYWF1LmRrPgoJRG8gbm90IGluY3JlbWVudCBtb2R1bGUgcmVmQ291bnQgaWYgc2VsZiBpcyBsb2FkZWQgZnJvbSB3aXRoaW4KCURsbEVudHJ5UG9pbnQgZHVyaW5nIHRoZSBhdHRhY2ggbm90aWZpY2F0aW9uLgoKV2VkIEFwciAyMSAxNDoyNzozNyAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29udHJvbHMvbWVudS5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCS0gcHJvdGVjdCBUUkFDRSBhZ2FpbnN0IE5VTEwtcHRyCgktIHJld3JvdGUgR2V0TWVudUl0ZW1JRC9HZXRTdWJNZW51IHRvIHVzZSBNRU5VX0ZpbmRJdGVtIChobWVudT0weGZmZmYgZml4KS4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglGaXhlZCB0eXBvLgoKCSogbG9hZGVyL25lL21vZHVsZS5jOiBCZXJ0aG8gU3R1bHRpZW5zIDxiZXJ0aG9AcGFudGVyLnNvY2kuYWF1LmRrPgoJUmVpbXBsZW1lbnRhdGlvbiBvZiBHZXRNb2R1bGVIYW5kbGUxNiBhY2NvcmRpbmcgdG8gaG93IHdpbjk1IGhhbmRsZXMKCWl0ICh0aGFua3MgdG8gTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+KS4KCgkqIGlmMTYzMi9idWlsdGluLmM6IEJlcnRobyBTdHVsdGllbnMgPGJlcnRob0BwYW50ZXIuc29jaS5hYXUuZGs+CglDb3JyZWN0ZWQgd3JvbmcgcmV0dXJuIHZhbHVlcyBvZiBidWlsdC1pbiBsb2FkZXIgdG8gd29yayB3aXRoIHRoZQoJbG9hZG9yZGVyIHN0dWZmLgoKTW9uIEFwciAxOSAxNjo0NToyNCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZ3JhcGhpY3MvbWV0YWZpbGVkcnYvYml0Ymx0LmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L2luaXQuYywgaW5jbHVkZS9iaXRtYXAuaCwgaW5jbHVkZS9tZXRhZmlsZWRydi5oLCBvYmplY3RzL2RpYi5jLCBvYmplY3RzL21ldGFmaWxlLmM6CglIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCUltcGxlbWVudGVkIHJlY29yZGluZyBvZiBTdHJldGNoRElCaXRzIGFuZCBTZXRESUJpdHNUb0RldmljZSBhbmQKCXBsYXliYWNrIG9mIFNldERJQml0c1RvRGV2aWNlLiBDbGVhbmVkIHVwIFBsYXlNZXRhRmlsZVJlY29yZCBhIGJpdC4KCgkqIGluY2x1ZGUvZWxmZGxsLmgsIGxvYWRlci9lbGYuYywgbG9hZGVyL2VsZmRsbC5jLCBsb2FkZXIvbG9hZG9yZGVyLmM6CglCZXJ0aG8gU3R1bHRpZW5zIDxiZXJ0aG9AcGFudGVyLnNvY2kuYWF1LmRrPgoJUmVtb3ZlZCBub24tcG9ydGFibGUgaGFja3MgYW5kIHJlcGxhY2VkIHRoZW0gd2l0aCBtb3JlIGdlbmVyYWwKCXZlcnNpb25zLgoKCSogd2luZG93cy9kY2UuYzogUGF1bCBNaWxsYXIgPHBhdWxtQGFzdHJvLmdsYS5hYy51az4KCUNvZGUgYWRkZWQgdG8gcmUtZXZhbHVhdGUgc3RhbGUgREMgaW5mb3JtYXRpb24gaW4gRENFIGNhY2hlLgoKCSogbG9hZGVyL21vZHVsZS5jOiBCZXJ0aG8gU3R1bHRpZW5zIDxiZXJ0aG9AcGFudGVyLnNvY2kuYWF1LmRrPgoJQXR0YWNoIG5vdGlmaWNhdGlvbnMgbXVzdCBiZSBzZW5kIGFmdGVyIGFsbCByZWN1cnNpdmUgZGVwZW5kZW5jaWVzIGFyZQoJbG9hZGVkIGFuZCBub3QgYmVmb3JlLgoKCSogZ3JhcGhpY3MveDExZHJ2L3BhbGV0dGUuYzogUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCB0eXBvLgoKCSogbXVsdGltZWRpYS9tY2ljZGEuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBwbGF5aW5nIHBvc2l0aW9uIHdoZW4gcmVxdWlyZWQgYnkgdHJhY2sgbnVtYmVyLgoKCSogd2luMzIvZGV2aWNlLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgTU1ERVZMRFIgRGV2aWNlSW9jdGwoNSkgc3R1YiAobXNhY20zMiBpcyBhIGJpdCBoYXBwaWVyIG5vdykuCgoJKiB3aW5lLmluaTogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglOYXRpdmUgdG9vbGhlbHAgd2lsbCBub3Qgd29yayAobWlzc2luZyBHTE9CQUxNQVNURVJIQU5ETEUpLgoKCSogQlVHUywgUkVBRE1FOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVVwZGF0ZWQuCgoJKiBjb250cm9scy9lZGl0LmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJVGVzdCBmb3Igc3RhdGljIHdhcyByZXZlcnNlZC4KCgkqICovKjoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJTmV3IGRlYnVnIHNjaGVtZSB3aXRoIGV4cGxpY2l0IGRlYnVnIGNoYW5uZWxzIGRlY2xhcmF0aW9uLgoKU3VuIEFwciAxOCAxNDo0NDoyNiAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbG9hZGVyL25lL21vZHVsZS5jOiBSZW1vdmVkIGV4dHJhIGNhbGwgdG8gVEFTS19TdGFydFRhc2suCgoJKiBpbmNsdWRlL2FjY29uZmlnLmgsIGluY2x1ZGUvY29uZmlnLmguaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJUmVtb3ZlZCBjaGVjayBmb3IgdW5pb24gc2VtdW47IGNsZWFuZWQgdXAgYSBiaXQuCgoJKiBpbmNsdWRlL3NlcnZlci5oLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvdHJhY2UuYywgdG9vbHMvbWFrZV9yZXF1ZXN0czoKCUFkZGVkIGVudiBwdHIgdG8gbmV3X3Byb2Nlc3MgcmVxdWVzdAoKCSogcmVsYXkzMi91c2VyMzIuc3BlYywgd2luZG93cy9tZGkuYywgY29udHJvbHMvbWVudS5jLCBpbmNsdWRlL21lbnUuaCwgaW5jbHVkZS93aW51c2VyLmg6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCS0gdXNlIGZvbnRzL2ZvbnRzaXplcyBnaXZlbiBieSBTeXN0ZW1QYXJhbWV0ZXJzSW5mbwoJLSBkcmF3aW5nL2FsaWdubWVudCBmaXhlcywgd2luOTggc3R5bGUgZm9yIG1lbnViYXIKCS0gb3duZXJkcmF3biBtZW51cyBhcmUgd29ya2luZyBub3cgZm9yIHRoZSBmaXJzdCB0aW1lCgktIGNvbXBsZXRlIGNvbnN0YW50cyBtYWdpYyBpdGVtcwoJLSB1c2UgcmlnaHQgb3duZXIgZm9yIHBvcHVwbWVudXMKCS0gbmV3OiBHZXQvU2V0TWVudUluZm8KCS0gaW1wbGVtZW50ZWQ6IEdldC9TZXRNZW51Q29udGV4dEhlbHBJZAoJLSBtb3JlIGZsYWdzIGZvciBHZXQvU2V0TWVudUl0ZW1JbmZvCgoJKiBmaWxlcy9kb3NfZnMuYzogcm9iZXJ0IHcgaGFsbCA8Ym9iaEBuLWNhbnRyZWxsLmRlbW9uLmNvLnVrPgoJTWFrZSBET1NGU19NYXRjaExvbmcgbWF0Y2ggYSBzZWFyY2ggc3RyaW5nIGVuZGluZyBpbiAnKi4nIHRvIGEgemVybwoJZXh0ZW5zaW9uIGZpbGUgbmFtZSwgYWxsb3dpbmcgTWF0aGNhZCB0byBydW4uCgoJKiBsb2FkZXIvbG9hZG9yZGVyLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgbWVtb3J5IGZyZWVpbmcuCgoJKiBwcm9ncmFtcy9jbWRsZ3RzdC9BdHRpYy9jbWRsZ3IuaCwgcHJvZ3JhbXMvY21kbGd0c3QvY21kbGdyLnJjLCBwcm9ncmFtcy9jbWRsZ3RzdC9jbWRsZ3RzdC5jLCBwcm9ncmFtcy9jbWRsZ3RzdC9jbWRsZ3RzdC5oOgoJUmVuYW1lZCBjbWRsZ3IuaCB0byBjbWRsZ3RzdC5oLgoKCSogc2NoZWR1bGVyL2NyaXRzZWN0aW9uLmM6IEFkZGVkIHRpbWVvdXQgdG8gY3JpdGljYWwgc2VjdGlvbiB3YWl0aW5nLgoKCSogaW5jbHVkZS90aHJlYWQuaCwgc2NoZWR1bGVyL3N5c2RlcHMuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJTWVyZ2VkIExpbnV4L0ZyZWVCU0QgcmVlbnRyYW50IGVycm5vIGhhbmRsZXIsIGFkZGVkIFNvbGFyaXMuCglQcmVsaW1pbmFyeSBzdXBwb3J0IGZvciBTb2xhcmlzIGxvdy1sZXZlbCB0aHJlYWRzIChMV1BzKSBhZGRlZC4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBpbmNsdWRlL2FjY29uZmlnLmgsIGluY2x1ZGUvY29uZmlnLmguaW46CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVJlZW50cmFudCBsaWJjIGNoZWNrIGZvciBTb2xhcmlzIGFkZGVkLgoJRml4ZWQgcmVlbnRyYW50IFgxMSBjaGVjayBmb3IgRnJlZUJTRCBhbmQgU29sYXJpcy4KCUFkZGVkIGNoZWNrIGZvciBTb2xhcmlzIGxvdy1sZXZlbCB0aHJlYWQgcm91dGluZXMuCgoJKiBsb2FkZXIvbmUvbW9kdWxlLmM6CglGaXhlZCB0b29saGVscCByb3V0aW5lcyB1c2FnZSBpbiBHZXRNb2R1bGVGcm9tUGF0aCAocmVwb3J0ZWQgYnkgQmVydGhvCglTdHVsdGllbnMpLgoKCSogdG9vbHMvd2luZWluc3RhbGw6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQXV0b21hdGljIGluc3RhbGwgc2NyaXB0LCB3aGljaCBhdXRvbWF0aWNhbGx5IGNvbmZpZ3VyZXMgYW5kIGNvbXBpbGVzCgl3aW5lIGFuZCByZWdhcGksIHJ1bnMgdG9vbHMvd2luZWNvbmYgdG8gZ2VuZXJhdGUgYSBjb25maWd1cmF0aW9uIGZpbGUKCWlmIG9uZSBkb2VzIG5vdCBhbHJlYWR5IGV4aXN0LCBhbmQgdXNlcyByZWdhcGkgdG8gaW5zdGFsbCB0aGUgZGVmYXVsdAoJcmVnaXN0cnkuCgoJKiBkb2N1bWVudGF0aW9uL2d1aSwgd2luZG93cy93aW4uYywgd2luZG93cy93aW5wb3MuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJUHJvcGVybHkgaGFuZGxpbmcgY2FzZXMgbGlrZSBjYWxsaW5nIFNldFdpbmRvd1BvcyB3aGlsZSBwcm9jZXNzaW5nCglXTV9OQ0NSRUFURS4KCgkqIGdyYXBoaWNzL3gxMWRydi9kaWIuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBhIGZldyBidWdzICh0eXBvcyBmcm9tIGN1dCAmIHBhc3RlICYgaW52YWxpZCBoZWFwIGJsb2NrCglmcmVlaW5nKS4KCgkqIG1pc2Mvd3NwcmludGYuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglCdWcgZml4IGluIEdldExlbi4KCgkqIGxvYWRlci9uZS9tb2R1bGUuYywgbG9hZGVyL3BlX2ltYWdlLmMsIG1lbW9yeS9nbG9iYWwuYywgbWlzYy9tYWluLmMsIG1pc2NlbXUvbWFpbi5jLCByZWxheTMyL2J1aWx0aW4zMi5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzY2hlZHVsZXIvdGhyZWFkLmMsIGlmMTYzMi9idWlsdGluLmMsIGluY2x1ZGUvYnVpbHRpbjMyLmgsIGluY2x1ZGUvbW9kdWxlLmgsIGluY2x1ZGUvcGVfaW1hZ2UuaCwgaW5jbHVkZS93aW5lcnJvci5oLCBsb2FkZXIvTWFrZWZpbGUuaW4sIGxvYWRlci9lbGYuYywgbG9hZGVyL21haW4uYywgbG9hZGVyL21vZHVsZS5jOgoJQmVydGhvIFN0dWx0aWVucyA8YmVydGhvQHBhbnRlci5zb2NpLmFhdS5kaz4KCVJlb3JnYW5pemF0aW9uIG9mIHRoZSBsb2FkZXIgdG8gY29ycmVjdGx5IGxvYWQgYW5kIGZyZWUgbGlicmFyaWVzIGFuZAoJaW1wbGVtZW50YXRpb24gb2YgbG9hZCBvcmRlciB0byBsb2FkIGRpZmZlcmVudCB0eXBlcyBvZiBsaWJyYXJpZXMuCgoJKiBkb2N1bWVudGF0aW9uL3dpbmUubWFuOiBCZXJ0aG8gU3R1bHRpZW5zIDxiZXJ0aG9AcGFudGVyLnNvY2kuYWF1LmRrPgoJVXBkYXRlZCBjb21tYW5kbGluZSBjaGFuZ2VzIG9mIC1kbGwgb3B0aW9uIGFuZCB3aW5lLmNvbmYgZW50cmllcy4KCgkqIHdpbmUuaW5pOiBCZXJ0aG8gU3R1bHRpZW5zIDxiZXJ0aG9AcGFudGVyLnNvY2kuYWF1LmRrPgoJVXBkYXRlZCB0aGUgZXhhbXBsZSB3aXRoIHRoZSBuZXcgY29uZmlndXJhdGlvbiBlbnRyaWVzLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jOgoJQmVydGhvIFN0dWx0aWVucyA8YmVydGhvQHBhbnRlci5zb2NpLmFhdS5kaz4KCUJ1Z2ZpeDogZnJlZSBsb2FkZWQgbGlicmFyeSBub3QgYmVmb3JlIGV4aXQuCgoJKiBpbmNsdWRlL2VsZmRsbC5oLCBpbmNsdWRlL2xvYWRvcmRlci5oLCBsb2FkZXIvZWxmZGxsLmMsIGxvYWRlci9sb2Fkb3JkZXIuYzoKCUJlcnRobyBTdHVsdGllbnMgPGJlcnRob0BwYW50ZXIuc29jaS5hYXUuZGs+CglOZXcgZmlsZXMgdG8gc3VwcG9ydCBsb2FkIG9yZGVyIGFuZCBwYXJ0aWFsIHN0dWJzIGZvciBlbGZkbGxzLgoKCSogZ3JhcGhpY3MvbWV0YWZpbGVkcnYvb2JqZWN0cy5jLCBncmFwaGljcy94MTFkcnYvZGliLmMsIGluY2x1ZGUvYml0bWFwLmgsIG9iamVjdHMvYnJ1c2guYywgb2JqZWN0cy9jdXJzb3JpY29uLmMsIG9iamVjdHMvZGliLmM6CglIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCUZpeGVzIGZvciB1cHNpZGUtZG93biBESUJzLgoKCSogZ3JhcGhpY3MvZGRyYXcuYzogTGlvbmVsIFVsbWVyIDx1bG1lckBkaXJlY3Rwcm92aWRlci5uZXQ+CglDaGFuZ2VkICdHZXREaXNwbGF5TW9kZScgdG8gcmV0dXJuIHRoZSBtb2RlIHByZXZpb3VzbHkgc2V0IGJ5CgknU2V0RGlzcGxheU1vZGUnIChhbmQgbm90IHRoZSBjdXJyZW50IG1vbml0b3IgbW9kZSkuCgoJKiBpbmNsdWRlL3RhYi5oLCBkbGxzL2NvbWN0bDMyL3RhYi5jOgoJTHVjIFRvdXJhbmdlYXUgPGx1Y0BtYWNhZGFtaWFuLmNvbT4KCS1JbXBsZW1lbnRlZCBUQ1NfQlVUVE9OUywgVENTX0ZJWEVEV0lEVEgsIFRDTV9HRVRJVEVNUkVDVCwKCVRDTV9TRVRJVEVNU0laRSBhbmQgVENNX0RFTEVURUlURU0uCgoJKiBvYmplY3RzL2N1cnNvcmljb24uYzogUGF2ZWwgUm9za2luIDxwYXZlbF9yb3NraW5AZ2VvY2l0aWVzLmNvbT4KCUxvb2t1cEljb25JZEZyb21EaXJlY3RvcnlFeDE2KCkgZml4ZWQ6IGlmIEdldFN5c3RlbVBhbGV0dGVFbnRyaWVzKCkKCXJldHVybnMgMCwgaXQgaXMgaW50ZXJwcmV0ZWQgYXMgaWYgaXQgd2VyZSAyNTYuCgoJKiBsb2FkZXIvbW9kdWxlLmMsIHNjaGVkdWxlci9wcm9jZXNzLmM6CglLZXZpbiBIb2xicm9vayA8a3doQG5lb3NvZnQuY29tPgoJRml4IGFtYmlndW91cyBlbHNlIHdhcm5pbmcuCgoJKiB3aW5kb3dzL3N5c2NvbG9yLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTG9hZGluZyBjb2xvciB2YWx1ZXMgZnJvbSB0aGUgcmVnaXN0cnkgZml4ZWQuCgoJKiBncmFwaGljcy9kZHJhdy5jOiBCcmlhbiBHZXJzdCA8YmdlcnN0QHF1YXJrLnZwcGx1cy5jb20+CgktIFJlbW92ZWQgYWxsIGZsb2F0aW5nIHBvaW50IG1hdGguCgktIEltcGxlbWVudGVkIHN0cmV0Y2hpbmcgaW4gWCBhbmQgWSBkaXJlY3Rpb25zIGZvciA4LCAxNiwgYW5kIDMyIGJpdCBjb2xvci4KCS0gSW1wbGVtZW50ZWQgc291cmNlIGFuZCBkZXN0IGNvbG9yLWtleWluZyBmb3IgOCwgMTYsIGFuZCAzMiBiaXQgY29sb3IuCgktIEltcGxlbWVudGVkIHNvbWUgdHJpdmlhbCByYXN0ZXIgb3BlcmF0aW9ucy4KCS0gTWluaW1pemVkIGlubmVyIGxvb3BzIGZvciBtYXhpbXVtIHNwZWVkLgoJLSBVc2UgbWVtY3B5IHdoZW5ldmVyIHBvc3NpYmxlLgoKCSogbXVsdGltZWRpYS9hdWRpby5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVJlZHVjZWQgZnJhZ21lbnQgc2l6ZS4KCVJlb3JnYW5pemVkIHdvZE9wZW4gKHdpdGggc3VwcG9ydCBmb3IgV0FWRV9RVUVSWV9GT1JNQVQpLgoJRml4ZWQgYnVmZmVyIHVuZGVycnVuIHJlY292ZXJ5LgoJRml4ZWQgYnVnIGluIHdvZFJlc2V0KCkvd29kQ2xvc2UoKS4KCgkqIG9sZS9zdG9yYWdlMzIuYzogTWljaGFlbCBWZWtzbGVyIDxtdmVrc2xlckB0ZWNodW5peC50ZWNobmlvbi5hYy5pbD4KCVNpbXBsaWZ5IHByb3BlcnR5TmFtZUNtcCgpIGFuZCBmaXggYSB3YXJuaW5nIGluIHRoZSB3YXkgYnkgcmVtb3ZpbmcKCUNSVERMTF9fd2NzdXByKCkgY2FsbHMuCgoJKiBtaXNjL2RkZW1sLmM6IEtlaXRoIE1hdHRoZXdzIDxrZWl0aF9tQHN3ZWVuZXkuZGVtb24uY28udWs+CglEZGVOYW1lU2VydmljZTogZXhwYW5zaW9uIG9mIHN0dWIgdG8gdHJhcCB1bnVzZWQgaW5zdGFuY2VpZHMgYXQgc3RhcnQgb2YgcnVuLgoJRGRlR2V0TGFzdEVycm9yOiBjYXRjaCAnbm90IGluaXRpYWxpemVkJyBzaXR1YXRpb24gYW5kIHJldHVybiBjb3JyZWN0IHJlc3BvbnNlLgoJRGRlRnJlZVN0cmluZ0hhbmRsZTogY29tcGxldGUgdGVzdCBmb3IgZXJyb3Igc2V0IGJ5IHByZXZpb3VzIGNhbGwgb2YKCXNvbWV0aGluZyBhbmQgaWdub3JlIGl0LCBhbHNvIHJlbGVhc2UgaGFuZGxlIHRhYmxlIG11dGV4IG9uIG5vcm1hbCBleGl0LgoJRGRlUXVlcnlTdHJpbmdBLCBEZGVRdWVyeVN0cmluZ1csIERkZUNyZWF0ZVN0cmluZ0hhbmRsZVc6IFJlbGVhc2UKCWhhbmRsZSB0YWJsZSBtdXRleCBvbiBub3JtYWwgZXhpdC4KCgkqIGluY2x1ZGUvd25ldC5oLCBtaXNjL25ldHdvcmsuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCURvbid0IGFubm91bmNlIHRoZSBXTmV0RGlyZWN0b3J5Tm90aWZ5IGNhcGFiaWxpdHkgV05ldEdldENvbm5lY3Rpb24uCglDaGFuZ2UgdGhlIHJldHVybiB2YWx1ZSBmb3IgbG9jYWwgZmlsZXMuCgoJKiB3aW5kb3dzL21vdXNlLmM6IE1pY2hhZWwgVmVrc2xlciA8bXZla3NsZXJAdGVjaHVuaXgudGVjaG5pb24uYWMuaWw+CglBZGQgIndpbi5oIiB0byBmaXggaW1wbGljaXQgZnVuY3Rpb24gZGVjbGFyYXRpb24gd2FybmluZ3MuCgoJKiBjb25zb2xlL2ludGVyZmFjZS5jLCBpbmNsdWRlL2NvbnNvbGUuaDoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJT25seSBkZWNsYXJlIGNvbnNvbGUgImRyaXZlciIgb25jZSwgdXNlIGV4dGVybmFsIHJlZnMgZWxzZXdoZXJlLgoKCSogY29udHJvbHMvbGlzdGJveC5jOiBMdWMgVG91cmFuZ2VhdSA8bHVjQG1hY2FkYW1pYW4uY29tPgoJV2hlbiB0aGUgdmVydGljYWwgc2Nyb2xsYmFyIGlzIHJlbW92ZWQsIHRoZSBiYWNrZ3JvdW5kIHdhcyBub3QKCXByb3Blcmx5IHJlcGFpbnRlZC4KCgkqIGxvYWRlci9zaWduYWwuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglEaXNhYmxlIEFDIGJpdCBvbiByZWNlaXZpbmcgYWxpZ25tZW50IGV4Y2VwdGlvbnMuCgoJKiBtaXNjL21haW4uYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglTeXN0ZW1QYXJhbWV0ZXJzSW5mbyBTUElfR0VUTk9OQ0xJRU5UTUVUUklDUzogaW1wbGVtZW50ZWQgbWVudSBwYXJ0LgoKCSogd2luZG93cy94MTFkcnYvZXZlbnQuYzogTm9lbCBCb3J0aHdpY2sgPG5vZWxAbWFjYWRhbWlhbi5jb20+CglXaGlsZSBoYW5kbGluZyB0aGUgV01fREVMRVRFV0lORE9XIGNsaWVudCBtZXNzYWdlIGNoZWNrIGlmIGEgd2luZG93CgloYXMgYmVlbiBkaXNhYmxlZCBhbmQgaWYgc28gcHJldmVudCBhbiBTQ19DTE9TRSBtZXNzYWdlIGZyb20gYmVpbmcKCXNlbnQuCgoJKiB3aW5kb3dzL2RjZS5jOiBOb2VsIEJvcnRod2ljayA8bm9lbEBtYWNhZGFtaWFuLmNvbT4KCU1ha2UgYWNjZXNzIHRvIHRoZSBEQ0UgbGlzdCB0aHJlYWQgc2FmZSBieSBlbnN1cmluZyB3ZSBoYXZlIGFjcXVpcmVkCgl0aGUgV2luZG93cyBsb2NrIGJlZm9yZSB1c2luZyBpdC4KCkZyaSBBcHIgMTYgMTU6MTk6MTQgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHJlc291cmNlcy8uY3ZzaWdub3JlOiBDaGFuZ2VkIGZvciByZW5hbWVkIGZpbGVzCgoJKiBtaXNjL3dpbnNvY2tfYXN5bmMuYywgbXNkb3MvZG9zY29uZi5jLCB3aW5kb3dzL3VzZXIuYzoKCU1pY2hhZWwgVmVrc2xlciA8bXZla3NsZXJAdGVjaHVuaXgudGVjaG5pb24uYWMuaWw+CglGaXhlZCB3YXJuaW5ncy4KCgkqIG9sZS9ubHMvd2FsLm5scywgb2xlL29sZTJubHMuYywgcmVzb3VyY2VzL0F0dGljL3N5c3Jlc19Dei5yYywgcmVzb3VyY2VzL0F0dGljL3N5c3Jlc19Qby5yYywgcmVzb3VyY2VzL0F0dGljL3N5c3Jlc19Tdy5yYywgcmVzb3VyY2VzL01ha2VmaWxlLmluLCByZXNvdXJjZXMvc3lzcmVzLmMsIHJlc291cmNlcy9zeXNyZXNfQ3MucmMsIHJlc291cmNlcy9zeXNyZXNfUHQucmMsIHJlc291cmNlcy9zeXNyZXNfU3YucmMsIHJlc291cmNlcy9zeXNyZXNfV2EucmMsIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmMsIGRvY3VtZW50YXRpb24vd2luZS5tYW4sIGluY2x1ZGUvb3B0aW9ucy5oLCBpbmNsdWRlL3dpbm5scy5oLCBtaXNjL21haW4uYzoKCVBhYmxvIFNhcmF0eGFnYSA8cGFibG8uc2FyYWNoYWdhQHBpbmcuYmU+CglBZGRlZCB3YWxvbiBsYW5ndWFnZSBzdXBwb3J0IChJIGFsc28gbW92ZWQgQ3ogLT4gQ3MsIFN3IC0+IFN2LCBhbmQgUG8KCS0+IFB0OyB0byBjb25mb3JtIHRvIHN0YW5kYXJkIG5hbWVzIGZvciB0aG9zZSBsYW5ndWFnZXMpLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW4sIHJlbGF5MzIvTWFrZWZpbGUuaW46CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZCAtZm5vLWJ1aWx0aW4gd2hlbiBjb21waWxpbmcgd2l0aCBnY2MgaW4gcmVsYXkzMi8gc3ViZGlyLgoKCSogaW5jbHVkZS9tb2R1bGUuaCwgbG9hZGVyL25lL21vZHVsZS5jLCBsb2FkZXIvbmUvc2VnbWVudC5jLCB0b29scy9idWlsZC5jLCBpZjE2MzIvYnVpbHRpbi5jOgoJQW5kcmVhcyBNb2hyIDxjaXBhbTg5NUBjaXAxLmluZC51bmktc3R1dHRnYXJ0LmRlPgoJLSBJbXBsZW1lbnRlZCBwcm9wZXIgKCJyZWFsIiwgY29tcHJlc3NlZCkgV2luMTYgZW50cnkgdGFibGVzLgoJLSBGaXhlZCBNeUFsbG9jIChBS0EgTkVfQWxsb2NhdGVTZWdtZW50KS4KCS0gSW1wbGVtZW50ZWQgUGF0Y2hDb2RlSGFuZGxlMTYuCgoJKiB0b29scy9BdHRpYy9tYWtlX29zMi5zaCwgdG9vbHMvbWFrZV9vczIuY21kLCBncmFwaGljcy9wYXRoLmMsIGdyYXBoaWNzL3BzZHJ2L2dyYXBoaWNzLmMsIGluY2x1ZGUvc2lnX2NvbnRleHQuaDoKCVJvYmVydCBQb3VsaW90IDxrcnlub3NAY2xpYy5uZXQ+CglBIGZldyBwYXRjaGVzIHRvIGhlbHAgV2luZSB0byBjb21waWxlIG9uIE9TLzIuCgpUaHUgQXByIDE1IDE2OjQ2OjUxIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBncmFwaGljcy9tZXRhZmlsZWRydi9iaXRibHQuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvZ3JhcGhpY3MuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvaW5pdC5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9tYXBwaW5nLmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L29iamVjdHMuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvdGV4dC5jLCBpbmNsdWRlL21ldGFmaWxlLmgsIGluY2x1ZGUvbWV0YWZpbGVkcnYuaCwgb2JqZWN0cy9jbGlwcGluZy5jLCBvYmplY3RzL2RjLmMsIG9iamVjdHMvZGN2YWx1ZXMuYywgb2JqZWN0cy9tZXRhZmlsZS5jOgoJSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglDaGFuZ2UgKDMyIGJpdCkgSE1FVEFGSUxFcyB0byBHREkgb2JqZWN0cyAoSE1FVEFGSUxFMTZzIHJlbWFpbiBhcwoJZ2xvYmFsIG1lbW9yeSBoYW5kbGVzKS4gIEZpeGVkIGRpc2stYmFzZWQgTWV0YUZpbGVzLiAgQmV0dGVyCglzZXBhcmF0aW9uIGJldHdlZW4gTWV0YUZpbGUgcGxheWJhY2sgYW5kIHRoZSBtZXRhZmlsZWRydi4KCgkqIG1pc2MvY3J0ZGxsLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJX0NJcG93IGFyZ3VtZW50IG9yZGVyIHdhcyBjb25maXJtZWQgd2l0aCBTdGFyY3JhZnQgdjEuMDUuCgoJKiBkb2N1bWVudGF0aW9uL2tleWJvYXJkOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUNsYXJpZmllZCBhIGZldyBwb2ludHMuCgoJKiBtc2Rvcy9pbnQyMS5jOiBCZXJ0aG8gU3R1bHRpZW5zIDxiZXJ0aG9AcGFudGVyLnNvY2kuYWF1LmRrPgoJQWRkZWQgSU9DVEwgZnVuY3Rpb24gMHg0NDBkLzB4NzIuCgoJKiByZWxheTMyL2tlcm5lbDMyLnNwZWMsIHNjaGVkdWxlci9jcml0c2VjdGlvbi5jOgoJQmVydGhvIFN0dWx0aWVucyA8YmVydGhvQHBhbnRlci5zb2NpLmFhdS5kaz4KCVVuaXRpYWxpemVDcml0aWNhbFNlY3Rpb24gcGFydGlhbCBzdHViIGltcGxlbWVudGF0aW9uLgoKCSogaW5jbHVkZS93aW5iYXNlLmg6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgbWlzc2luZyBwcm90byBmb3IgR2V0RXhpdENvZGVUaHJlYWQuCgoJKiBpbmNsdWRlL2RyaXZlci5oLCBpbmNsdWRlL3dpbmUva2V5Ym9hcmQxNi5oOgoJTWljaGFlbCBWZWtzbGVyIDxtdmVrc2xlckB0ZWNodW5peC50ZWNobmlvbi5hYy5pbD4KCUFkZGVkIG1pc3Npbmcgd2luZGVmLmggaW5jbHVkZXMuCgoJKiB3aW5kb3dzL2lucHV0LmMsIGluY2x1ZGUvd2ludXNlci5oOgoJWnlnbyBCbGF4ZWxsIDx1ajIya2ZiY0B1bWFpbC5mdXJyeXRlcnJvci5vcmc+CglSZWxlYXNlQ2FwdHVyZSgpIGlzIHN1cHBvc2VkIHRvIHJldHVybiBhIEJPT0wgdmFsdWUuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgaW5jbHVkZS9jb25maWcuaC5pbiwgbG9hZGVyL3NpZ25hbC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGcmVlQlNEIDMgbXVsdGl0aHJlYWRpbmcgZmluYWwgZml4LiBEbyBub3QgdXNlIGxpYmNfciwgbGliYyBpcyBqdXN0IGFzCglyZWVudHJhbnQgY29uY2VybmluZyBlcnJuby4gUmV2ZXJ0IHVubmVlZGVkIEZyZWVCU0QgaGFjayB0bwoJbG9hZGVyL3NpZ25hbC5jIGZyb20gbGFzdCBwYXRjaC4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6CglIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCWluZGV4ID09IDMgY29ycmVzcG9uZHMgdG8gQWx0LUdyICsgU2hpZnQuCgoJKiBtaXNjL2RkZW1sLmM6IEtlaXRoIE1hdHRoZXdzIDxrZWl0aF9tQHN3ZWVuZXkuZGVtb24uY28udWs+CglNb3JlIG9mIERkZUNyZWF0ZVN0cmluZ0hhbmRsZUEsIERkZUZyZWVTdHJpbmdIQW5kbGUsIERkZVF1ZXJ5U3RyaW5nQQoJYW5kIERkZUNyZWF0ZVN0cmluZ0hhbmRsZVcgYW5kIHRpZHkgdXAgb2YgUmVtb3ZlSFNaTm9kZXMsIGFuZAoJRGRlQ3JlYXRlU3RyaW5nSGFuZGxlQS4KCgkqIHdpbmRvd3MveDExZHJ2L21haW4uYywgZ3JhcGhpY3MveDExZHJ2L2JpdGJsdC5jLCBncmFwaGljcy94MTFkcnYvcGFsZXR0ZS5jLCBpbmNsdWRlL3gxMWRydi5oOgoJUGF2ZWwgUm9za2luIDxwYXZlbF9yb3NraW5AZ2VvY2l0aWVzLmNvbT4KCUZpeGVkIHVnbHkgZGlzYWJsZWQgY29udHJvbHMgYW5kIGJsYWNrIGJhY2tncm91bmQgaW4gV3JpdGUgYW5kIExvdHVzCglOb3Rlcy4KCgkqIGNvbnRyb2xzL2J1dHRvbi5jLCBpbmNsdWRlL2J1dHRvbi5oLCBpbmNsdWRlL3dpbnVzZXIuaDoKCVBhc2NhbCBMZXNzYXJkIDxwYXNjYWxAbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnQgdGhlIGJ1dHRvbiB3aXRoIGJpdG1hcHMuCgoJKiBpbmNsdWRlL3dpbmUvb2JqX3N0b3JhZ2UuaCwgb2xlL3N0Z19zdHJlYW0uYywgb2xlL3N0b3JhZ2UzMi5jOgoJU3RlcGhhbmUgTHVzc2llciA8c3RlcGhhbmVAbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRhdGlvbiBvZiBJU3RvcmFnZTo6Q29weVRvIGFuZCBJU3RyZWFtOjpDb3B5VG8uCgoJKiBsb2FkZXIvdGFzay5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogQWx3YXlzIHJlbGVhc2UgdGhlIFdpbjE2TG9jayBpbiBUQVNLX1Jlc2NoZWR1bGUuCgoJKiB3aW5kb3dzL3gxMWRydi9ldmVudC5jOiBGcmFuY29pcyBCb2lzdmVydDxmcmFuY29pc0BtYWNhZGFtaWFuLmNvbT4KCVNvbHZlZCBhIGRlYWRsb2NrIGJldHdlZW4gZ2xvYmFsIGxvY2sgYW5kIHduZCBsb2NrIGluIGV2ZW50LmMuCgoJKiBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJVHlwbyB0aGF0IGJyb2tlIFNvbGFyaXMgY29tcGlsZSBmaXhlZC4KCgkqIGNvbnRyb2xzL2Rlc2t0b3AuYzogRnJhbmNvaXMgQm9pc3ZlcnQ8ZnJhbmNvaXNAbWFjYWRhbWlhbi5jb20+CglBZGQgYSBXSU5fUmVsZWFzZURlc2t0b3AgaW4gREVTS1RPUF9Jc1NpbmdsZVdpbmRvdy4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6IEd1eSBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglGaXggc2NhbmNvZGVzIGZvciBOdW1Mb2NrIGFuZCBOdW0tLy4KCUZpeCBNYXBWaXJ0dWFsS2V5KCkgKG1hcHR5cGU9MikgdG8gcmV0dXJuIHByb3BlciBhc2NpaSBjb2RlLgoJUmV3b3JrZWQgR2V0S2V5TmFtZVRleHQoKSBhZ2Fpbi4KCgkqIGdyYXBoaWNzL3BzZHJ2L2ZvbnQuYzoKCUh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJTGltaXQgbGFzdENoYXIgdG8gMHhmZiBpbiBQU0RSVl9HZXRDaGFyV2lkdGguCgoJKiB3aW5kb3dzL3VzZXIuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglNaXNzaW5nIFdJTkFQSSBmb3IgUmVnaXN0ZXJTeXN0ZW1UaHJlYWQuCgpTdW4gQXByIDExIDE4OjQ4OjE3IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBtc2Rvcy9pbnQxMC5jOiBBbmRyZWFzIE1vaHIgPGNpcGFtODk1QGNpcDEuaW5kLnVuaS1zdHV0dGdhcnQuZGU+CglGaXhlZCAiRGlzcGxheSBDb21iaW5hdGlvbiIgY2FsbC4KCgkqIG1pc2MvY29tbS5jOiBBbmRyZWFzIE1vaHIgPGNpcGFtODk1QGNpcDEuaW5kLnVuaS1zdHV0dGdhcnQuZGU+CglGaXhlZCBhIGNyYXNoIGR1ZSB0byBpbnZhbGlkIE9wZW5Db21tIHJldHVybiB2YWx1ZSBmb3IgYnVzeSBjb21tIHBvcnQuCglDbGVhbmVkIHVwL2ZpeGVkIHNldmVyYWwgdGhpbmdzLgoKCSogd2luZG93cy93aW4uYzogRnJhbmNvaXMgQm9pc3ZlcnQ8ZnJhbmNvaXNAbWFjYWRhbWlhbi5jb20+CglFbmFibGVkIHRocmVhZCBzYWZlbmVzcyBmb3Igd25kIHN0cnVjdHVyZSBjb2RlLgoKCSogZGVidWdnZXIvZGJnLnk6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJVXNlIENMSUVOVF9EZWJ1Z2dlclJlcXVlc3QgdG8gZnJlZXplL3VuZnJlZXplIHRocmVhZHMuCgoJKiBzZXJ2ZXIvcmVxdWVzdC5jLCBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90cmFjZS5jLCBpbmNsdWRlL3NlcnZlci5oLCBpbmNsdWRlL3NlcnZlci9yZXF1ZXN0LmgsIGluY2x1ZGUvc2VydmVyL3RocmVhZC5oLCBzY2hlZHVsZXIvY2xpZW50LmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFkZGVkIG5ldyBDTElFTlRfRGVidWdnZXJSZXF1ZXN0IHJvdXRpbmUsIGltcGxlbWVudGVkIHN1cHBvcnQgZm9yCglERUJVR0dFUl9GUkVFWkVfQUxML0RFQlVHR0VSX1VORlJFRVpFX0FMTCByZXF1ZXN0cy4KCVJ1biB3aW5lIHNlcnZlciBpbiB0aGUgbWFpbiB3aW5lIHByb2Nlc3MuCglCdWdmaXg6IG5ldmVyIGZyZWUgaW5pdGlhbCB0aHJlYWQhCgoJKiBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBpbmNsdWRlL3Byb2Nlc3MuaDoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJTm9uLWZ1bmN0aW9uYWwgUFJPQ0VTU19TdXNwZW5kL1Jlc3VtZU90aGVyVGhyZWFkcyByZW1vdmVkLgoKCSogd2luZG93cy90aW1lci5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVRlYWNoZWQgVElNRVJfR2V0TmV4dEV4cGlyYXRpb24gdGhhdCBhIHRpbWVyIHRoYXQgaGFzIGFscmVhZHkgZXhwaXJlZAoJKGJ1dCBub3QgcHJvY2Vzc2VkIHlldCkgSEFTIGFscmVhZHkgZXhwaXJlZC4uLgoKCSogd2luZWRlZmF1bHQucmVnOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCURlZmF1bHQgdmFsdWVzIGZvciByZWdpc3RyeS4KCgkqIGdyYXBoaWNzL3gxMWRydi9kaWIuYzogS2FybCBMZXNzYXJkIDxrYXJsbEBjb3JlbC5jYT4KCU9wdGltaXplZCBjb2RlIGZvciBTZXRJbWFnZUJpdHNfWCwgbWFraW5nIGJpdG1hcCBjcmVhdGlvbiBmYXN0ZXIuCgoJKiBjb250cm9scy9tZW51LmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJVGhlIE1FQVNVUkVJVEVNU1RSVUNUIGFuZCBEUkFXSVRFTVNUUlVDVCB3ZXJlIGZpbGxlZCB3cm9uZy4KCgkqIGNvbmZpZ3VyZS5pbiwgaW5jbHVkZS9jb25maWcuaC5pbiwgaW5jbHVkZS9zaWdfY29udGV4dC5oLCBsb2FkZXIvc2lnbmFsLmMsIHNjaGVkdWxlci9zeXNkZXBzLmMsIGNvbmZpZ3VyZToKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJLSBTdGFydGVkIG11bHRpdGhyZWFkaW5nIGZvciBGcmVlQlNEIChpbmNvbXBsZXRlLCBidXQgc29tZQoJICBhcHBsaWNhdGlvbnMgbm93IGF0IGxlYXN0IHN0YXJ0IHVwIGFnYWluKS4KCS0gVXNlIF90aHJlYWRfc3lzX3NpZ2FjdGlvbi9fdGhyZWFkX3N5c19zaWdhbHRzdGFjay4KCS0gQ1IyIG9uIHBhZ2VmYXVsdCBnZXRzIHBhc3NlZCBpbiBzY19lcnIgKHNvbWUga2luZCBvZiBrbHVkZ2UgaW4KCSAgRnJlZUJTRCBvd25zIGZhdWx0IGhhbmRsaW5nIHdlIGNhbiB1c2UpCgoJKiBpbmNsdWRlL3NlbGVjdG9ycy5oLCBtZW1vcnkvZ2xvYmFsLmMsIG1lbW9yeS9zZWxlY3Rvci5jOgoJTWFkZSBTRUxFQ1RPUl9SZWFsbG9jQmxvY2sgcHJlc2VydmUgdGhlIGN1cnJlbnQgc2VsZWN0b3IgYWNjZXNzIHJpZ2h0cwoJKHByb2JsZW0gcmVwb3J0ZWQgYnkgQW5kcmVhcyBNb2hyKS4KCgkqIG1pc2Mvc3lzdGVtLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJVXNlIHNlcnZpY2VzIHRocmVhZCBpbnN0ZWFkIG9mIHRpbWVyIHNpZ25hbHMuCgoJKiBzZXJ2ZXIvdGhyZWFkLmMsIHNjaGVkdWxlci9zeW5jaHJvLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFsbG93IHVzZXIgQVBDcyB3aXRoIE5VTEwgJ2Z1bmMnIChqdXN0IHdha2UgdXAgdGhlIHRocmVhZCkuCgoJKiBpbmNsdWRlL3NlcnZpY2VzLmgsIGxvYWRlci9tYWluLmMsIHNjaGVkdWxlci9NYWtlZmlsZS5pbiwgc2NoZWR1bGVyL3NlcnZpY2VzLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUltcGxlbWVudGVkICdrZXJuZWwgc2VydmljZXMgdGhyZWFkJy4KCgkqIGluY2x1ZGUvd2luc3Bvb2wuaCwgbWlzYy9wcmludGRydi5jLCByZWxheTMyL3dpbnNwb29sLnNwZWM6CglLbGFhcyB2YW4gR2VuZCA8a2xhYXNAdmFuZ2VuZC5kZW1vbi5ubD4KCUFkZGVkIHN0dWIgZm9yIFByaW50ZXJQcm9wZXJ0aWVzLgoKCSogZGxscy9udGRsbC9ydGxzdHIuYywgaW5jbHVkZS9udGRkay5oLCByZWxheTMyL250ZGxsLnNwZWMsIGRsbHMvbnRkbGwvbnQuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJSW1wbGVtZW50ZWQgTnRUZXJtaW5hdGVQcm9jZXNzIGFuZCBOdERpc3BsYXlTdHJpbmcuCgoJKiBsb2FkZXIvbW9kdWxlLmM6IEJlcnRobyBTdHVsdGllbnMgPGJlcnRob0BwYW50ZXIuc29jaS5hYXUuZGs+CglGcmVlTGlicmFyeSBwYXJ0aWFsIGltcGxlbWVudGF0aW9uLgoKCSogbWlzYy9jcnRkbGwuYywgcmVsYXkzMi9jcnRkbGwuc3BlYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglNYWRlIF9mdG9sIHRha2UgYXJndW1lbnQgZnJvbSBGUFUgc3RhY2suIFN0YXJjcmFmdCB2MS4wNCAoKm5vdCogQnJvb2QKCVdhcnMpIG5vdyB3b3JrcyBwZXJmZWN0bHkgd2l0aCBXaW5lJ3MgY3J0ZGxsLiBXcm90ZSBhIHRlc3QKCWltcGxlbWVudGF0aW9uIG9mIF9DSXBvdyB0b28sIHdoaWNoIHRob3NlIHdobyBkbyBoYXZlIEJyb29kIFdhcnMgY2FuCglyZXBvcnQgb24sIHNvIGl0IGNhbiBiZSBpbXBsZW1lbnRlZCBjb3JyZWN0bHkuCgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOiBHdXkgQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJUGFydGlhbCBpbXBsZW1lbnRhdGlvbiBmb3IgR2V0S2V5TmFtZVRleHQgZm9yIG5ldyBrZXlib2FyZCBzdHJ1Y3R1cmUuCgoJKiBkbGxzL3RhcGkzMi9waG9uZS5jOiBLZXZpbiBIb2xicm9vayA8a3doQG5lb3NvZnQuY29tPgoJRml4ZWQgd2FybmluZy4KCgkqIGluY2x1ZGUvd2luZS9vYmpfc3RvcmFnZS5oOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIG1pc3NpbmcgUmVhZENsYXNzU3RnIHByb3RvdHlwZS4KCgkqIG1pc2Mvd3NwcmludGYuYzogTWljaGFlbCBWZWtzbGVyIDxtdmVrc2xlckB0ZWNodW5peC50ZWNobmlvbi5hYy5pbD4KCS0gRml4IGNvbW1lbnRzIGFmdGVyIHRoZSBiaWcgcmVuYW1pbmcgKHh4eHgzMnkgLS0+IHh4eHh5KS4KCS0gRGVjbGFyZSB0aGUgV1BSSU5URl9EQVRBIHVuaW9uLCBhbmQgdXNlIGl0IGluc3RlYWQgb2YgTFBDVk9JRCBhbmQgV09SRC4KCSAgQXZvaWQgdWdseSB0eXBlIGNhc3RpbmcsIGFuZCBmaXggY29tcGlsYXRpb24gd2FybmluZ3Mgb2Ygd3NwcmludGYuYwoKCSogZG9jdW1lbnRhdGlvbi9zdGF0dXMvZGRlOgoJS2VpdGggTWF0dGhld3MgPGtlaXRoX21Ac3dlZW5leS5kZW1vbi5jby51az4KCVN0YXR1cyBkb2N1bWVudCBmb3IgRERFL0RkZW1sLgoKCSogbXVsdGltZWRpYS9tbXN5c3RlbS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIGV2ZW50IGNhbGxiYWNrIG1lY2hhbmlzbS4KCUludHJvZHVjdGlvbiBvZiBNQ0kgeWllbGQgcHJvY3MuCglVcGRhdGVkIChwcmVwYXJlfHVucHJlcGFyZSloZWFkZXIgZnVuY3Rpb25zICh3YXZlLCBtaWRpKSB0byBhbGxvdwoJY29ycmVjdCBjYWxsYmFjayBtZWNoYW5pc21zLgoJTWFkZSBtaWRpU3RyZWFtWFhYIGZ1bmN0aW9ucyB3b3JraW5nLgoJRmlyc3QgdHJ5IGF0IG1tVGhyZWFkWFhYIGZ1bmN0aW9ucy4KCgkqIG11bHRpbWVkaWEvbWlkaS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVVwZGF0ZWQgKHByZXBhcmV8dW5wcmVwYXJlKWhlYWRlciBmdW5jdGlvbnMgdG8gYWxsb3cgY29ycmVjdCBjYWxsYmFjawoJbWVjaGFuaXNtcy4KCgkqIG11bHRpbWVkaWEvbWNpbWlkaS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVNtYWxsIGVuaGFuY2VtZW50LgoKCSogbXVsdGltZWRpYS9tY2kuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglOZXcgbWV0aG9kIGZvciBzdHJ1Y3R1cmUgY29udmVyc2lvbiAoMTYgPC0+IDMyKS4KCU1vcmUgTUNJIHN0cnVjdHVyZXMgY29ycmVjdGx5IG1hcHBlZC4KCUludHJvZHVjdGlvbiBvZiBNQ0kgeWllbGQgcHJvYyBhbmQgYnJlYWsgZmFjaWxpdHkuCgoJKiBtdWx0aW1lZGlhL2F1ZGlvLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJVXBkYXRlZCAocHJlcGFyZXx1bnByZXBhcmUpaGVhZGVyIGZ1bmN0aW9ucyB0byBhbGxvdyBjb3JyZWN0IGNhbGxiYWNrCgltZWNoYW5pc21zLiAgSW1wbGVtZW50ZWQgd2F2ZU91dCBwbGF5YmFjayBhcyBhc3luY2hyb25vdXMuCgoJKiBpbmNsdWRlL211bHRpbWVkaWEuaDogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglTdGFydGVkIGltcGxlbWVudGF0aW9uIG9mIG1tVGhyZWFkWFhYIGZ1bmN0aW9ucy4KCgkqIGluY2x1ZGUvbW1zeXN0ZW0uaDogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBhIGZldyBtaXNzaW5nIGRlZmluZXMgKE1JREksIFdBVkUsIGNhbGxiYWNrcykuCglTdHJ1Y3R1cmVzIGZvciBtaWRpU3RyZWFtWFhYIGZ1bmN0aW9ucy4KCgkqIGlmMTYzMi9tbXN5c3RlbS5zcGVjOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVVwZGF0ZWQgKHByZXBhcmV8dW5wcmVwYXJlKWhlYWRlciBmdW5jdGlvbnMgKHdhdmUsIG1pZGkpIHRvIGFsbG93Cgljb3JyZWN0IGNhbGxiYWNrIG1lY2hhbmlzbXMuIEFkZGVkIHdpbmUgc3BlY2lmaWMgZW50cnkgZm9yIG1tVGhyZWFkWFhYCglmdW5jdGlvbnMgdGhyZWFkIHN0YXJ0aW5nIHBvaW50LgoKCSogaW5jbHVkZS93aW5lL29ial9zdG9yYWdlLmg6CglNaWNoYWVsIFZla3NsZXIgPG12ZWtzbGVyQHRlY2h1bml4LnRlY2huaW9uLmFjLmlsPgoJSW50cm9kdWNlIFNUQVRTVEcxNiAtIGEgMTYgYml0IHZhcmlhbnQgb2YgU1RBVFNURy4KCgkqIG9sZS9zdG9yYWdlLmM6IE1pY2hhZWwgVmVrc2xlciA8bXZla3NsZXJAdGVjaHVuaXgudGVjaG5pb24uYWMuaWw+CglGaXggSVN0b3JhZ2UxNl9mblN0YXQoKSB0byB1c2UgU1RBVFNURzE2IChpdCBpcyBhIDE2IGJpdCBpbnRlcmZhY2UpLgoKCSogY29udHJvbHMvbWVudS5jOiBQYXVsIE1pbGxhciA8cGF1bG1AYXN0cm8uZ2xhLmFjLnVrPgoJRml4ZWQgbWVudSB0eXBlIHNldHRpbmcgaW4gU2V0TWVudUl0ZW1JbmZvMzJfY29tbW9uKCkuCgoJKiBpbmNsdWRlL3Byb2Nlc3MuaCwgbG9hZGVyL25lL21vZHVsZS5jLCBsb2FkZXIvdGFzay5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzY2hlZHVsZXIvdGhyZWFkLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVNlbmQgVVNJR19QUk9DRVNTX0NSRUFURSBzaWduYWwuCglCdWdmaXg6IEdldFByb2Nlc3NEd29yZCBvZmZzZXQgLTggc2hvdWxkIHJldHVybiBwYXJlbnQgcHJvY2VzcyBJRC4KCgkqIHJlbGF5MzIvdXNlcjMyLnNwZWMsIHdpbmRvd3MvdXNlci5jOgoJQmVydGhvIFN0dWx0aWVucyA8YmVydGhvQHBhbnRlci5zb2NpLmFhdS5kaz4KCUFkZGVkIFJlZ2lzdGVyU3lzdGVtVGhyZWFkIHN0dWIuCgoJKiBpbmNsdWRlL3dpbmUvb2JqX21pc2MuaCwgb2xlL2NvbXBvYmouYywgcmVsYXkzMi9vbGUzMi5zcGVjLCBpbmNsdWRlL3dpbmVycm9yLmg6CglGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRlZCB0aGUgQ29DcmVhdGVJbnN0YW5jZUV4IG1ldGhvZC4KCgkqIG1pc2MvcmVnaXN0cnkuYzogRGF2aWQgR2F5IDxkZ2F5QENTLkJlcmtlbGV5LkVEVT4KCUZpeGVkIGNyYXNoIGR1ZSB0byBhIHZhbHVlIG9mIG5hbWUgbGVuZ3RoIDAsIHZhbHVlIGxlbmd0aCAwIGF0IHRoZSBlbmQKCW9mIHRoZSByZWdpc3RyeS4KCgkqIHdpbmRvd3Mvd2lucG9zLmM6IEZyYW5jb2lzIEJvaXN2ZXJ0IDxmcmFuY29pc0BtYWNhZGFtaWFuLmNvbT4KCUNoZWNrIGlmIHBUZW1wQWN0aXZlV2luZG93IGluIFdJTlBPU19TZXRXaW5kb3dQb3MgaXMgdmFsaWQgYWZ0ZXIgdGhlCglRVUVVRV9Mb2NrLgoKCSogbXVsdGltZWRpYS9kcGxheS5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCS0gdXBkYXRlZCBiZWNhdXNlIG9mIHRoZSBzcGxpdHRpbmcgb2YgaW50ZXJmYWNlL2ltcGxlbWVudGF0aW9uCgktIHVwZGF0ZWQgdG8gdXNlIElDT01fVEhJUwoKCSogaW5jbHVkZS9kcGxheS5oLCBpbmNsdWRlL2RwbG9iYnkuaCwgb2xlL2d1aWQuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJLSB1c2UgdGhlIGxhdGVzdCBJQ09NIG1hY3JvcwoJLSBtb3ZlZCB0aGUgSURpcmVjdFBsYXlMb2JieSBpbnRlcmZhY2UgdG8gZHBsb2JieS5oCgktIHJlbW92ZWQgYWxsIHRoZSBpbXBsZW1lbnRhdGlvbiBhc3BlY3RzIHNpbmNlIHRoZXkgbmVlZCB0byBiZQoJc2VwYXJhdGUKCgkqIGluY2x1ZGUvZHNvdW5kLmgsIG11bHRpbWVkaWEvZHNvdW5kLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCUlDT01pc2F0aW9uIG9mIHRoZSBEaXJlY3RTb3VuZCBBUEkuCgoJKiBkbGxzL3NoZWxsMzIvZm9sZGVycy5jLCBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLCBpbmNsdWRlL3NobG9iai5oOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CgktIHJlb3JnYW5pc2VkIGljb24gZXh0cmFjaW5nIGZyb20gZmlsZXMKCS0gbWFkZSBleHRyYWN0aW5nIGZyb20gbmUgYW5kIGljbyBmaWxlcyB3b3JraW5nCgktIElQZXJzaXN0RmlsZSBpbnRlcmZhY2UgZm9yIElFeHRyYWN0SWNvbgoKCSogbWlzYy9zaGVsbC5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUZpeGVkIGJ1ZmZlciBvdmVycnVuLgoKCSogaW5jbHVkZS9jdXJzb3JpY29uLmgsIG9iamVjdHMvY3Vyc29yaWNvbi5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglDaGFuZ2VkIHJlc3NvdXJjZSBkaXIgc3RydWN0dXJlcy4KCUFkYXB0ZWQgRmluZEJlc3RJY2Nvbi9GaW5kQmVzdEN1cnNvci4KCgkqIHdpbmRvd3Mvc3lzY29sb3IuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglMb2FkaW5nIHRoZSBjb2xvciBzY2hlbWEgZm9yIHJlZ2lzdHJ5LgoKU2F0IEFwciAxMCAxNjo1ODo1NSAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS93aW5zb2NrLmgsIG1pc2MvQXR0aWMvd2luc29ja19kbnMuYywgbWlzYy9NYWtlZmlsZS5pbiwgbWlzYy93aW5zb2NrLmMsIG1pc2Mvd2luc29ja19hc3luYy5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglSZWltcGxlbWVudGVkIHdpbnNvY2sgYXN5bmNocm9ub3VzIEROUyBzZXJ2aWNlcy4gTm8gbG9uZ2VyIHVzZSBhCglmb3JrKCllZCBwcm9jZXNzLCBidXQgZWl0aGVyIGEgc2VydmljZSB0aHJlYWQgb3IgaW5saW5lIGJsb2NraW5nIGNhbGxzCglmb3Igbm9uLXRocmVhZGluZyBhcmNoaXRlY3R1cmVzLiAoTWFrZXMgRnJlZSBBZ2VudDE2IHdvcmsgYWdhaW4uKQoKCSogcHJvZ3JhbXMvY21kbGd0c3QvQXR0aWMvY21kbGdyLmgsIHByb2dyYW1zL2NtZGxndHN0L2NtZGxnci5yYywgcHJvZ3JhbXMvY21kbGd0c3QvY21kbGd0c3QuYzoKCTxld2lsbEBuY2FsLnZlcmlvLmNvbT4KCS0gY29sb3IgYW5kIGZvbnQgZGlhbG9ncyBub3cgYWN0dWFsbHkgZG8gc29tZXRoaW5nIGludGVyZXN0aW5nLAoJICBhbmQgZm9yY2UgYSByZWRyYXcgd2hlbiBzdWNjZXNzZnVsLiAgQmFja2dyb3VuZCBjb2xvciBpcyBhZGp1c3RhYmxlLgoJICBUZXh0IGNvbG9yIGlzIGFsc28gYWRqdXN0YWJsZSwgYnV0IHRoZSB1c2VyIGhhcyB0byBzZXQgdGhlIENGX0VGRkVDVFMKCSAgZmxhZyBmaXJzdC4KCS0gdGV4dCBpcyBvdXRwdXQgbGVmdC1yaWdodCBjZW50ZXJlZCwgYmFzZWxpbmUsIGF0IHRoZSBtaWRkbGUKCSAgb2YgdGhlIHdpbmRvdywgYW5kIG1vdmVzIHdpdGggdGhlIHdpbmRvdy4gIFRleHQgZm9udCBpcyBhZGp1c3RhYmxlLgoJLSBTdWNjZXNzIGFuZCBmYWlsdXJlIE1lc3NhZ2VCb3ggY2FsbHMgZm9yIENvbG9yLCBGb250LCBPcGVuLAoJICBhbmQgU2F2ZSBoYXZlIGJlZW4gcmVtb3ZlZCBvciBzdXBwcmVzc2VkLiAgVGhleSBhbm5veWVkIG1lIGFmdGVyCgkgIGF3aGlsZSwgYW5kIEkgc3VzcGVjdCB0aGV5IGFubm95ZWQgb3RoZXJzLCB0b28uICBVc2UgbXkgdG9vbCEgOi0pCgktIGNtZGxndHN0IG5vdyBoYXMgdGhlIGZ1bGwgcGF0aG5hbWUgaW4gdGhlIHVwcGVyIGxlZnQgY29ybmVyOyB3aGljaCBtYXkKCSAgYXNzaXN0IGluIGRlYnVnZ2luZyBjZXJ0YWluIHByb2JsZW1zIC0tIG9yIGl0IG1heSBub3QuIDotKQoJLSB1c2FnZSBkaWFsb2cgYWRkZWQKCgkqIG9sZS9vbGUybmxzLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJQ29ycmVjdGVkIGRlYnVnIG91dHB1dC4KCgkqIHdpbmRvd3MvZHJpdmVyLmMsIHJlbGF5MzIvd2lubW0uc3BlYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQmV0dGVyIGVycm9yIGhhbmRsaW5nIDsgYSBmZXcgYnVnIGZpeGVzIDsgbm93IE9wZW5Ecml2ZXIxNiBjYW4gbG9hZCAzMgoJYml0IGRyaXZlcnMuCglBZGRlZCBzdHViIGZvciBHZXREcml2ZXJGbGFncy4KCgkqIHdpbmRvd3MvdXNlci5jLCByZWxheTMyL3VzZXIzMi5zcGVjOgoJU2VyZ2V5IFR1cmNoYW5vdiA8dHVyY2hhbm92QHVzYS5uZXQ+CglTdHVicyBmb3IgQ2xvc2VEZXNrdG9wIGFuZCBDbG9zZVdpbmRvd1N0YXRpb24uCgoJKiBsb2FkZXIvbmUvbW9kdWxlLmM6IEJlcnRobyBTdHVsdGllbnMgPGJlcnRob0BwYW50ZXIuc29jaS5hYXUuZGs+CglHZXRNb2R1bGVGcm9tUGF0aCBub3cgY2hlY2tzIGZvciBsb2FkZWQgbW9kdWxlcyB2aWEgZmlsZW5hbWVzIHdoaWNoCgl3ZXJlIHNwZWNpZmllZCB3aXRob3V0IGEgcGF0aC4KCgkqIG1pc2MvcmVnaXN0cnkuYywgaW5jbHVkZS93aW5yZWcuaDoKCVN5bHZhaW4gU3QuR2VybWFpbiA8c3lsdmFpbkBtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGF0aW9uIG9mIEhLVSBrZXkgc2F2aW5nIGFuZCBsb2FkaW5nLiBBZGQgbmV3IHN1cHBvcnRlZCBkYXRhCgl0eXBlIGluIGRlYnVnX3ByaW50X3ZhbHVlLgoKCSogZGxscy9zaGVsbDMyL3NobHZpZXcuYywgaW5jbHVkZS9kb2NvYmouaCwgb2xlL2d1aWQuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTmV3IGludGVyZmFjZXMgZm9yIElPbGVDb21tYW5kVGFyZ2V0LCBJRHJvcFRhcmdldCwgSVZpZXdPYmplY3QuCglTbWFsbCBjaGFuZ2UgaG93IHRvIGdldCBpY29ucyBmb3IgbGlzdHZpZXcuCgoJKiBpbmNsdWRlL3NobG9iai5oLCByZWxheTMyL3NoZWxsMzIuc3BlYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJSUxMb2FkRnJvbVN0cmluZyBhbmQgU0hHZXRTZXR0aW5ncyBpbXBsZW1lbnRlZC4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglTSEdldFNldHRpbmdzIGltcGxlbWVudGVkLgoJRXhpdFdpbmRvd3NEaWFsb2coKSBzaW11bGF0ZWQgYnkgTWVzc2FnZWJveC4KCgkqIGRsbHMvc2hlbGwzMi9waWRsLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJSUxMb2FkRnJvbVN0cmluZyBpbXBsZW1lbnRlZC4KCgkqIGdyYXBoaWNzL3gxMWRydi9pbml0LmMsIGdyYXBoaWNzL3R0eWRydi9pbml0LmMsIGdyYXBoaWNzL3R0eWRydi9wYWxldHRlLmM6CglSaWNoYXJkIE1vcnRpbWVyIDxyZW1pdHJvbUBteS1kZWphbmV3cy5jb20+CglBZGRlZCBtaXNzaW5nICpJc0RhcmsgZW50cmllcyBpbnRvIFBBTEVUVEVfRHJpdmVyIGluc3RhbmNlCglpbml0aWFsaXNhdGlvbi4KCgkqIHdpbmRvd3MveDExZHJ2L21vdXNlLmM6IEJyaWFuIEdlcnN0IDxiZ2Vyc3RAcXVhcmsudnBwbHVzLmNvbT4KCUZpeGVkIFgxMURSVl9NT1VTRV9XYXJwUG9pbnRlciBpbml0aWFsIHZhbHVlLgoKCSogb2JqZWN0cy9iaXRtYXAuYzogTHVjIFRvdXJhbmdlYXUgPGx1Y0BtYWNhZGFtaWFuLmNvbT4KCUVuc3VyZSB0aGF0IHRoZSBiaXRtYXAgaXMgcHJvcGVybHkgaW5pdGlhbGl6ZWQgd2hlbiBjcmVhdGVkIHdpdGggdGhlCglMUl9DUkVBVEVESUJTRUNUSU9OIGZsYWcuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6IFN5bHZhaW4gU3QuR2VybWFpbiA8c3lsdmFpbkBtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIHRoZSBtZXNzYWdpbmcgcHJvYmxlbSBvZiB0aGUgZWRpdCBib3ggZm9yIG5vZGUgbGFiZWwgZWRpdGlvbi4KCVN1YnN0aXR1dGVkIFdNX1BBSU5UIGZvciBJbnZhbGlkYXRlUmVjdC4KCVNvbWUgZ3JhcGhpY2FsIGZpeGVzLgoKCSogbWlzYy9tYWluLmM6IEphbWVzIEp1cmFuIDxqcmoxMjBAcHN1LmVkdT4KCUNoZWNrIGZvciBkcml2ZXJzPT1OVUxMIGJlZm9yZSB0cnlpbmcgdG8gZGVsZXRlIHRoZW0gYXQgZXhpdC4gIFRoaXMKCWNvdWxkIGhhcHBlbiBpZiB0aGUgZW11bGF0b3IgaW5pdGlhbGl6YXRpb24gZmFpbGVkIGZvciBzb21lIHJlYXNvbiBhbmQKCXRoZSBkcml2ZXJzIGhhZG4ndCBiZWVuIGluaXRpYWxpemVkIHlldC4KCgkqIGlmMTYzMi90aHVuay5jLCBpbmNsdWRlL2NhbGxiYWNrLmgsIG1pc2MvY2FsbGJhY2suYywgbWlzY2VtdS9tYWluLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUNhbGwgSW5pdEFwcDE2ICh1c2luZyBDYWxsb3V0KSBmb3IgaW5pdGlhbCBwcm9jZXNzLgoKCSogbWlzY2VtdS9pbnN0ci5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUNsZWFyIGludmFsaWQgc2VsZWN0b3JzIGFsc28gaW4gQ2FsbFRvMTYgcmVsYXkgY29kZS4KCgkqIHByb2dyYW1zL25vdGVwYWQvRXMucmM6CglKb3NlIE1hcmNvcyBM83BleiBDYXJhdmFjYSA8am9zZS5sb3BlekB1cGNuZXQudXBjLmVzPgoJUmV2aXNlZCBTcGFuaXNoIHJlc291cmNlcy4KCgkqIHdpbmRvd3MvbWRpLmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJRml4ZWQgd2luZG93IGxvY2tpbmcgYnVnIGluIENhbGNDaGlsZFNjcm9sbC4KCgkqIG11bHRpbWVkaWEvdGltZS5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUZpeGVkIGZha2UgbXVsdGltZWRpYSB0aW1lcnMuIEdyaW0gRmFuZGFuZ28gaXMgbm93IGFibGUgdG8gc3RhcnQgdXAKCXdoZW4gdW5kZXIgZmF2b3JhYmxlIGNvbmRpdGlvbnMuIFRoZSBwcmV2aWV3IG1vdmllIG9uIHRoZSBCcm9vZCBXYXJzCglkaXNjIG5vdyBwbGF5cywgdG9vLgoKCSogbWlzYy9wcmludGRydi5jOiBLbGFhcyB2YW4gR2VuZCA8a2xhYXNAdmFuZ2VuZC5kZW1vbi5ubD4KCUJ1Z2ZpeCBFbnVtUHJpbnRlcnNBOiBscGJQcmludGVycz1OVUxMIG9yIGNiQnVmPTAgd291bGQgY3Jhc2ggV2luZSwKCWluc3RlYWQgb2YgcmV0dXJuaW5nIHRoZSByaWdodCBidWZmZXJzaXplLgoKVHVlIEFwciAgNiAwNzoxNDowOSAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZmlsZXMvZGlyZWN0b3J5LmM6IGdhbGJlcnRlIDxnYWxiZXJ0ZUBuZW8ucnIuY29tPgoJRml4ZWQgU2VhcmNoUGF0aEEgcmV0dXJuIHZhbHVlLgoKCSogZ3JhcGhpY3MvZDNkX3ByaXZhdGUuaCwgZ3JhcGhpY3MvZDNkdGV4dHVyZS5jLCBncmFwaGljcy9kZHJhdy5jLCBncmFwaGljcy9kZHJhd19wcml2YXRlLmg6CglMaW9uZWwgVWxtZXIgPHVsbWVyQGRpcmVjdHByb3ZpZGVyLm5ldD4KCS0gY2xlYW4tdXAgb2YgdGV4dHVyZSAnbG9hZGluZycKCS0gYWRkZWQgU2V0Q29sb3JLZXkgY2FsbGJhY2sgZm9yIGFscmVhZHkgbG9hZGVkIHRleHR1cmVzCgoJKiBpbmNsdWRlL3dpbmUvb2JqX3N0b3JhZ2UuaDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglGaXhlZCBhIHByb2JsZW0gcG9pbnRlZCBvdXQgYnkgS2V2aW4gSG9sYnJvb2suCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmg6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJY29tbWN0cmwuaCBtdXN0IGluY2x1ZGUgcHJzaHQuaC4KCgkqIGluY2x1ZGUvd2luZS9vYmpfb2xlYXV0Lmg6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJV2FybmluZyBmaXguCgoJKiBpbmNsdWRlL3dpbmUvb2JqX2Jhc2UuaDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglBZGRlZCBhIG5ldyBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgSUNPTSBtYWNyb3MgdGhhdCB1c2UgTWljcm9zb2Z0IHN0eWxlCgl2aXJ0dWFsIG1ldGhvZHMgdG8gaW1wbGVtZW50IHRoZSBDT00gaW50ZXJmYWNlcyBpbiBDKysuCgoJKiBtaXNjL2RkZW1sLmM6IEtlaXRoIE1hdHRoZXdzIDxrZWl0aF9tQHN3ZWVuZXkuZGVtb24uY28udWs+CglDb3JyZWN0aW9uIG9mIE11dGV4IGhhbmRsaW5nIGluIERkZUluaXRpYWxpemVXIGZvciBjYXNlcyBvdGhlciB0aGFuCgkxc3QgY2FsbC4gQWRkaXRpb24gb2YgaW5zdGFuY2UgaGFuZGxpbmcgdG8gRGRlQ3JlYXRlU3RyaW5nSGFuZGxlQSwKCURkZUNyZWF0ZVN0cmluZ0hhbmRsZVcsIFJlbW92ZUhTWk5vZGVzLCBGcmVlQW5kUmVtb3ZlSFNaTm9kZXMuICAxc3QKCWN1dCBpbXBsZW1lbnRhdGlvbiBvZiBEZGVVbml0aWFsaXplLCBtb3ZlIG9mIGludGVybmFsIHN0cnVjdHVyZSBkZWZzCglpbiBmcm9tIGRkZW1sLmguIFJlbW92ZWQgbm9uLUFOU0kgY29tbWVudC4KCgkqIGluY2x1ZGUvZGRlbWwuaDogS2VpdGggTWF0dGhld3MgPGtlaXRoX21Ac3dlZW5leS5kZW1vbi5jby51az4KCU1vdmVkIGludGVybmFsIHN0cnVjdHVyZXMgdG8gZGRlbWwuYywgYWxzbyByZW1vdmVkIG5vbi1BTlNJIGNvbW1lbnRzLAoJYW5kIGFkZGVkIHNwZWMgZm9yIERkZVF1ZXJ5Q29uZkluZm8gYW5kIERkZVF1ZXJ5Q29udkluZm8xNi4KCgkqIG11bHRpbWVkaWEvbW1zeXN0ZW0uYzogQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglKYW1lcyBBYmJhdGllbGxvIDxhYmJleWpAd3BpLmVkdT4KCUZpeGVkIG1lbW9yeSBsZWFrcyBpbiBtaXhlck9wZW4xNi9taXhlckNsb3NlLAoJbWlkaU91dE9wZW4xNi9taWRpT3V0Q2xvc2UxNiwgd2F2ZUluT3BlbjE2L3dhdmVJbkNsb3NlMTYsCgltaWRpSW5PcGVuMTYvbWlkaUluQ2xvc2UxNi4KCgkqIHRvb2xzL2J1Z19yZXBvcnQucGw6IEFkYW0gU2FjYXJueSA8bWFnaWNib3hAYmVzdHdlYi5uZXQ+CglBZGRlZCBzYW5pdHkgY2hlY2sgZm9yIHdoaXRlc3BhY2UgaW4gZmlsZSBuYW1lcywgdmFyaW91cyBvdGhlciBmaXh1cHMuCgpTdW4gQXByICA0IDEyOjQ4OjIxIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb250cm9scy9saXN0Ym94LmM6IEx1YyBUb3VyYW5nZWF1IDxsdWNAbWFjYWRhbWlhbi5jb20+CglXTV9NT1VTRU1PVkUgaW1wbGVtZW50YXRpb24gYnVnIGZpeC4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6CglKb3PpIE1hcmNvcyBM83BleiA8am9zZS5sb3BlekB1cGNuZXQudXBjLmVzPgoJQWRkZWQgU3BhbmlzaCBrZXlib2FyZCBsYXlvdXQuCgoJKiBtaXNjL2NvbW0uYzogTGF3c29uIFdoaXRuZXkgPGxhd3Nvbl93aGl0bmV5QGp1bm8uY29tPgoJRml4ZWQgdGhlIG1vZGVtIGNvbnRyb2wgcGFydCBvZiBFc2NhcGVDb21tRnVuY3Rpb24xNi4KCgkqIGNvbnRyb2xzL2NvbWJvLmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJQWRkZWQgbWlzc2luZyBnb3RvLgoKCSogb2xlL29sZTJubHMuYywgcmVsYXkzMi9rZXJuZWwzMi5zcGVjLCBpbmNsdWRlL3dpbm5scy5oOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglFbnVtQ2FsZW5kYXJJbmZvQSBzdHViLgoKU2F0IEFwciAgMyAxNjoyNzo1NCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy9tb3VzZS5jLCB3aW5kb3dzL2tleWJvYXJkLmM6CglGcmFuY29pcyBCb2lzdmVydCA8ZnJhbmNvaXNAbWFjYWRhbWlhbi5jb20+CglTdXNwZW5kIHRoZSB3aW5kb3cgbG9ja3MgYmVmb3JlIERlZktleWJFdmVudFByb2MgYW5kCglEZWZNb3VzZUV2ZW50UHJvYy4KCgkqIGluY2x1ZGUvd25hc3BpMzIuaCwgcHJvZ3JhbXMvdmlldy9nbG9iYWxzLmgsIGluY2x1ZGUvYXNwaS5oLCBpbmNsdWRlL21tc3lzdGVtLmgsIGluY2x1ZGUvd2luYXNwaS5oLCBpbmNsdWRlL3dpbmlvY3RsLmgsIGluY2x1ZGUvd2lubnQuaDoKCUpvZXJnIE1heWVyIDxqbWF5ZXJAdGVsZXN1bjIudGVsZW1hdGlvbi5kZT4KCU1vcmUgI3ByYWdtYSBmaXhlcyAoaWRlYSBPdmUgS2FhdmVuLCBtaXN0YWtlcyBhcmUgbWluZSkuCgoJKiB3aW5kb3dzL3dpbi5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCU5vIGxvbmdlciBzZW5kaW5nIGF0b21zIGluICgoQ1JFQVRFU1RSVUNUKilsUGFyYW0pLT5scHN6TmFtZSBvZgoJV01fQ1JFQVRFIG1lc3NhZ2VzLgoKCSogbG9hZGVyL21vZHVsZS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIHNvbWUgU2V0TGFzdEVycm9yKClzIGluIEdldFByb2NBZGRyZXNzKCkgYW5kIExvYWRMaWJyYXJ5KCkuCgoJKiBtaXNjL2NydGRsbC5jLCByZWxheTMyL2NydGRsbC5zcGVjOgoJQ2hyaXN0aWFuIFNjaGxhaWxlIDx1cDluQHJ6LnVuaS1rYXJsc3J1aGUuZGU+CglJbXBsZW1lbnRlZCBtYWtlcGF0aCwgcmFuZCgpIHJldHVybnMgY29ycmVjdCByYW5nZSwgZml4ZWQgZnB1dGMuCgoJKiBmaWxlcy9maWxlLmMsIGluY2x1ZGUvZmlsZS5oLCBtc2Rvcy9pbnQyMS5jOgoJTWFzayBvZmYgdW5zdXBwb3J0ZWQgYXR0cmlidXRlcyBpbiBfbGNyZWF0IChidWcgcmVwb3J0ZWQgYnkgQW5kcmVhcyBNb2hyKS4KCU1vdmVkIF9sY3JlYXQxNl91bmlxIHRvIGludDIxLmMKCgkqIGxpYnRlc3QvaGVsbG8zLmMsIGxpYnRlc3QvaGVsbG8zcmVzLnJjLCBsaWJ0ZXN0L2hlbGxvNC5jLCBsaWJ0ZXN0L25ldy5jLCBsaWJ0ZXN0L3JvbGV4LmMsIGxpYnRlc3QvdmFydGVzdC5jLCBsaWJ0ZXN0L3ZvbGluZm8uYzoKCVBhdmVsIFJvc2tpbiA8cGF2ZWxfcm9za2luQGdlb2NpdGllcy5jb20+CglDYXN0cyB0byAoU0VHUFRSKSByZW1vdmVkLiBUaGV5IGRpZCBub3RoaW5nIGFueXdheS4KCUluY2x1ZGVzIGFkZGVkIG9yIHJlbW92ZWQgd2hlcmUgbmVjZXNzYXJ5LgoJV2luMTYgZnVuY3Rpb25zIHJlcGxhY2VkIHdpdGggdGhlaXIgV2luMzIgY291bnRlcnBhcnRzLiBDb21tZW50cyBhZGRlZAoJd2hlcmUgaXQgd2FzIGltcG9zc2libGUuCglDQUxMQkFDSyBhZGRlZCB3aGVyZSBuZWNlc3NhcnkuIFNvbWUgZGVjbGFyYXRpb25zIGZpeGVkLgoJQ29uc3RydWN0cyBsaWtlICIjaWYgV0lORE9XUyIgY29ycmVjdGVkLiBVc2luZyAiI2lmZGVmIF9fdW5peF9fIiBpbnN0ZWFkLgoJRGxnUHJvYyBpbiBoZWxsbzMgdXNlcyBFbmREaWFsb2coKSBpbnN0ZWFkIG9mIERlc3Ryb3lXaW5kb3coKS4KCUxpc3Rib3ggZW5hYmxlZCBpbiBoZWxsbzMuCgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVVwZGF0ZWQgRnJlbmNoIGtleWJvYXJkLgoKCSogbGlidGVzdC9oZWxsby5jOiBBbGV4IEtvcm9ia2EgPGFsZXhAYWlrZWEuYW1zLnN1bnlzYi5lZHU+CglGYW5jaWVyIHZlcnNpb24gb2YgaGVsbG8uYyBjb3VydGVzeSBvZiBIdXcgRGF2aWVzLgoKCSogcHJvZ3JhbXMvY29udHJvbC9jb250cm9sLmM6IFBhdmVsIFJvc2tpbiA8cGF2ZWxfcm9za2luQGdlb2NpdGllcy5jb20+CglGaXhlZCBjb21waWxhdGlvbiBvZiB0aGUgQ29udHJvbCBwYW5lbC4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJJ1JlYWxpZ25lZCcgdGhlIGxheW91dCB0YWJsZSBhIGJpdC4gQXBwbGllZCB0aGUgbm9uLWxhdGluLTEgc3R1ZmYgYW5kCgl0aGUgZGVhZCBrZXkgbWFwcGluZyBzdHVmZiB0byB0aGUgYWN0dWFsIG1hcHBpbmcgY29kZSB0b28uICBQcmV0dGllZAoJdXAgdGhlIGZpeG1lIG1lc3NhZ2UuIEFkZGVkIGEgY2hlY2sgd2hlcmUgaWYgdGhlIGtleXMgb2YgdHdvIGxheW91dHMKCW1hdGNoIGV4YWN0bHksIHRoZSBvbmUgd2l0aCB0aGUgYmVzdC1tYXRjaGluZyBrZXljb2RlIG9yZGVyIGlzIGNob3NlbiwKCXNvIHRoYXQgdGhlIFFXRVJUWSBhbmQgRHZvcmFrIGxheW91dHMgY2FuIGJlIGRpc3Rpbmd1aXNoZWQuCgoJKiB3aW4zMi9kZXZpY2UuYywgcmVsYXkzMi9rZXJuZWwzMi5zcGVjOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCAoZW1wdHkpIHN0dWIgZm9yIE9wZW5WeERIYW5kbGUuCgoJKiBtdWx0aW1lZGlhL21taW8uYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CgltbWlvT3BlbigpIG5vdyBoYW5kbGVzIGNvcnJlY3RseSBNTUlPX1BBUlNFIGZsYWcuCgoJKiBjb250cm9scy9lZGl0LmM6IEx1YyBUb3VyYW5nZWF1IDxsdWNAbWFjYWRhbWlhbi5jb20+CglCYWNrZ3JvdW5kIGNvbG9yIGZpeCB3aGVuIGRpc2FibGVkIG9yIHJlYWQgb25seS4KCgkqIHdpbmRvd3Mvd2luLmM6IEZyYW5jb2lzIEJvaXN2ZXJ0IDxmcmFuY29pc0BtYWNhZGFtaWFuLmNvbT4KCVRyYW5zZmVyZWQgdGhlIHdpbmRvdyBzdHJ1Y3QgbWVtb3J5IHJlbGVhc2UgZnJvbSBXSU5fRGVzdHJveVdpbmRvdyB0bwoJV0lOX1JlbGVhc2VXbmRQdHIuCgoJKiBpbmNsdWRlL3dpbnVzZXIuaDogVGh1eSBOZ3V5ZW4gPHRodXlAbWFjYWRhbWlhbi5jb20+CglETEdJVEVNVEVNUExBVEUgc3RydWN0dXJlIGhhZCBvbmUgdG9vIG1hbnkgbWVtYmVyLgoKCSogZGVidWdnZXIvZGJfZGlzYXNtLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJUHJldmVudCBjcmFzaCBpbiBkZWJ1Z2dlci4KCkZyaSBBcHIgIDIgMTA6Mzc6NDIgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbnRyb2xzL2NvbWJvLmMsIGNvbnRyb2xzL2xpc3Rib3guYywgaW5jbHVkZS9jb21iby5oOgoJRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50ZWQgdGhlIFdpbjk1IGxvb2sgYW5kIGZlZWwuCgoJKiB3aW5kb3dzL2RlZnduZC5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglXcm90ZSBhIGJhc2ljIGltcGxlbWVudGF0aW9uIG9mIHRoZSBXTV9QUklOVCBtZXNzYWdlLgoKCSogd2luZG93cy9kY2UuYywgd2luZG93cy93aW4uYywgd2luZG93cy93aW5wcm9jLmMsIG1pc2MvY2FsbGJhY2suYzoKCUZyYW5jb2lzIEJvaXN2ZXJ0IDxmcmFuY29pc0BtYWNhZGFtaWFuLmNvbT4KCVN1c3BlbmQgYWxsIHdpbmRvd3MgbG9ja3MgYmVmb3JlIHRoZSBjb250cm9sIGlzIHBhc3NlZCB0byB0aGUKCWFwcGxpY2F0aW9uLgoJQWxzbyBmaXhlZCBzb21lIGJ1Z3MgaW4gZGNlLmMKCgkqIE1ha2UucnVsZXMuaW4sIE1ha2VmaWxlLmluOgoJSm9lcmcgTWF5ZXIgPGptYXllckB0ZWxlc3VuMi50ZWxlbWF0aW9uLmRlPgoJLSBSZW1vdmUgc29tZSBvbGQgcmMgbWFrZSBzdHVmZgoJLSAibWFrZSBjbGVhbiIgb21pdHRlZCBzb21lIGluY2x1ZGUgc3ViZGlycwoKCSogcmVsYXkzMi9kZHJhdy5zcGVjLCBncmFwaGljcy9kZHJhdy5jOgoJTGlvbmVsIFVsbWVyIDx1bG1lckBkaXJlY3Rwcm92aWRlci5uZXQ+CglBZGRlZCBEbGxDbGFzc0ZhY3RvcnkgdG8gRGlyZWN0RHJhdy4KClRodSBBcHIgIDEgMTI6MDU6NDQgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJU3BsaXQgb2ZmIGtleXN5bS9kZWFkY2hhciAtPiBjaGFyIG1hcHBpbmcsIHVzZSBpdCBpbiBEZXRlY3RMYXlvdXQuCgoJKiB0c3gxMS9YMTFfY2FsbHMsIHRzeDExL3RzX3hsaWIuYywgd2luZG93cy9jbGlwYm9hcmQuYywgd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3MvdHR5ZHJ2L2NsaXBib2FyZC5jLCB3aW5kb3dzL3R0eWRydi9pbml0LmMsIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3Mvd2lucG9zLmMsIHdpbmRvd3MveDExZHJ2L2NsaXBib2FyZC5jLCB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCB3aW5kb3dzL3gxMWRydi9pbml0LmMsIHdpbmRvd3MveDExZHJ2L3duZC5jLCBjb250cm9scy9tZW51LmMsIGdyYXBoaWNzL3gxMWRydi9iaXRtYXAuYywgaW5jbHVkZS9jbGlwYm9hcmQuaCwgaW5jbHVkZS90c194bGliLmgsIGluY2x1ZGUvdHR5ZHJ2LmgsIGluY2x1ZGUvd2luLmgsIGluY2x1ZGUvd2lucG9zLmgsIGluY2x1ZGUveDExZHJ2Lmg6CglBbGV4IEtvcm9ia2EgPGFsZXhAYWlrZWEuYW1zLnN1bnlzYi5lZHU+CglGaXhlcyBmb3IgaWdub3JlZCBXVlJfW1ZIXVJFRFJBVyBmbGFncywgbWFkZSBtaW5pbWl6YXRpb24gaW4gbWFuYWdlZAoJbW9kZSBnbyB0aHJvdWdoIHdpbmRvdyBtYW5hZ2VyLCBzbWFsbCBidWdmaXhlcyBmb3IgbWVudSBhbmQgd2luZG93Cgljb2RlLCBleHRlbmRlZCBjbGlwYm9hcmQgZHJpdmVyIG1vZGVsIHRvIGhhbmRsZSBmb3JtYXRzIG90aGVyIHRoYW4KCXRleHQuCgoJKiBjb250cm9scy9lZGl0LmM6IFBhdmVsIFJvc2tpbiA8cGF2ZWxfcm9za2luQGdlb2NpdGllcy5jb20+CglFQ19VU0VGT05USU5GTyBtZWFucyBlcy0+Y2hhcl93aWR0aC8zLCBub3QgZXMtPmNoYXJfd2lkdGguIFRoaXMgaXMKCXRydWUgZm9yIG11bHRpbGluZSBjb250cm9scyB0b28sIGFzIG15IHRlc3RzIHNob3cuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmMsIGluY2x1ZGUvbGlzdHZpZXcuaDoKCUx1YyBUb3VyYW5nZWF1IDxsdWNAbWFjYWRhbWlhbi5jb20+CglBZGRlZCBzdXBwb3J0IGZvciBpY29uIGFuZCBzbWFsbGljb24gdmlld3MuCgoJKiBsb2FkZXIvZG9zL2Rvc3ZtLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJTWFkZSBET1NWTV9HZXRUaW1lciBzdXJ2aXZlIEVBR0FJTiBlcnJvcnMuLi4KCgkqIGluY2x1ZGUvY29tbS5oLCBtaXNjL2NvbW0uYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglJbXBsZW1lbnRlZCBhc3luYyBjb21tIGJ1ZmZlcnMgKGJ1dCBwcm9iYWJseSBub3QgYnVnZnJlZSksIGFuZCBhbG9uZwoJd2l0aCB0aGVtLCB0aGUgZnVuY3Rpb25hbGl0eSBvZiBhc3luYyBldmVudCBub3RpZmljYXRpb25zLCBtb25nIHRoZW0KCUVuYWJsZUNvbW1Ob3RpZmljYXRpb24uIFJlbW92ZWQgYSBwcmV2aW91cyBoYWNrIHRoYXQgd2FzIGZha2luZyB0aGUKCWJ1ZmZlcnMsIHNpbmNlIHdlIG5vdyBoYXZlIHJlYWwgYnVmZmVycy4uLgoKCSogaW5jbHVkZS93aW5lL3dpbnVzZXIxNi5oOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUFkZGVkIENOXyogZmxhZ3MgdXNlZCBpbiBXTV9DT01NTk9USUZZLgoKCSogZ3JhcGhpY3MvZGRyYXcuYzogTGlvbmVsIFVsbWVyIDx1bG1lckBkaXJlY3Rwcm92aWRlci5uZXQ+CglJbXBsZW1lbnQgdGhlIEVudW1BdHRhY2hlZFN1cmZhY2UgbWV0aG9kLgoKCSogb2xlL29sZTIuYzogTm9lbCBCb3J0aHdpY2sgPG5vZWxAbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRhdGlvbiBmb3IgT2xlQ3JlYXRlTWVudURlc2NyaXB0b3IsIE9sZVNldE1lbnVEZXNjcmlwdG9yIGFuZAoJT2xlRGVzdHJveU1lbnVEZXNjcmlwdG9yIGFsb25nIHdpdGggYSBidW5jaCBvZiBpbnRlcm5hbGx5IHVzZWQgbWV0aG9kcwoJYW5kIGRhdGEgc3RydWN0dXJlcy4KCgkqIG9sZS9ndWlkLmMsIGluY2x1ZGUvaW5pdGd1aWQuaCwgaW5jbHVkZS9zaGxndWlkLmgsIGluY2x1ZGUvd2luZS9vYmpfb2xlZm9udC5oLCBpbmNsdWRlL3d0eXBlcy5oOgoJQWRyaWFuIFRodXJzdG9uIDxhZHJpYW50QGNvcmVsLmNhPgoJaW5pdGd1aWQuaCBzaG91bGQgb25seSBjb250YWluIHRoZSBtYWNybyB0aGF0IGRlZmluZXMgdGhlIGd1aWRzLgoJQWRkZWQgb2xlY3RsLmggdG8gZ3VpZC5jIHNvIHNvbWUgbmVlZGVkIGd1aWRzIGdldCBkZWZpbmVkLgoJTWFkZSBHVUlEX05VTEwgYW4gYWN0dWFsIGd1aWQgc2V0IHRvIDAsMCwwLi4uCgoJKiBpZjE2MzIvZ2RpLnNwZWMsIG9iamVjdHMvZ2Rpb2JqLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFkZGVkIEdkaVNpZ25hbFByb2MoKSBzdHViLgoKCSogbWlzYy9jYWxsYmFjay5jLCByZWxheTMyL3VzZXIzMi5zcGVjLCB3aW5kb3dzL3VzZXIuYywgaWYxNjMyL3RodW5rLmMsIGlmMTYzMi91c2VyLnNwZWMsIGluY2x1ZGUvY2FsbGJhY2suaCwgaW5jbHVkZS90YXNrLmgsIGluY2x1ZGUvdXNlci5oLCBsb2FkZXIvbWFpbi5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBZGRlZCBVU0VSMzIuVXNlclNpZ25hbFByb2MgdG8gQ2FsbG91dCB0YWJsZS4KCUltcGxlbWVudGVkIGJ1aWx0LWluIFVzZXJTaWduYWxQcm9jKCkuCglEb24ndCBhbm5vdW5jZSBXaW4zLjEtc3R5bGUgVVNFUiBoYW5kbGVyIGFueSBtb3JlLgoKCSogd2luMzIvb3JkaW5hbHMuYywgaW5jbHVkZS9wcm9jZXNzLmgsIGxvYWRlci9uZS9tb2R1bGUuYywgbG9hZGVyL25lL3NlZ21lbnQuYywgbG9hZGVyL3Rhc2suYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2NoZWR1bGVyL3RocmVhZC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglJbXBsZW1lbnRlZCBQUk9DRVNTX0NhbGxVc2VyU2lnbmFsUHJvYygpLgoJU2VuZCBVU0VSIHNpZ25hbHMgYXQgdmFyaW91cyBhcHByb3ByaWF0ZSBwbGFjZXMuCglNb3ZlZCBbR1NdZXRQcm9jZXNzRHdvcmQoKSB0byBzY2hlZHVsZXIvcHJvY2Vzcy5jLgoKCSogZGxscy9zaGVsbDMyL01ha2VmaWxlLmluLCBkbGxzL3NoZWxsMzIvYnJzZm9sZGVyLmMsIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYywgZGxscy9zaGVsbDMyL3NobG1lbnUuYywgaW5jbHVkZS9zaGxvYmouaCwgcmVsYXkzMi9zaGVsbDMyLnNwZWM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUFsbCAxOSBGaWxlTWVudV8qIGZ1bmN0aW9ucywgc29tZSBhcyBzdHVicywgc29tZSBpbXBsZW1lbnRlZC4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbG9sZS5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJU0hDTFNJREZyb21TdHJpbmcsIFN0clRvT2xlU3RyIGltcGxlbWVudGVkLgoJUkxCdWlsZExpc3RPZlBhdGhzIHN0dWIuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaDoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJRGxsR2V0VmVyc2lvbiAobm90IHlldCBleHBvcnRlZCkuCglTbWFsbCBjaGFuZ2UgdG8gU0hBcHBCYXJNZXNzYWdlLgoKCSogcmVsYXkzMi93aW5tbS5zcGVjOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIERydkNsb3NlLCBEcnZEZWZEcml2ZXJQcm9jLCBEcnZPcGVuLCBEcnZPcGVuQSwgRHJ2U2VuZE1lc3NhZ2UuCgoJKiBpZjE2MzIvbW1zeXN0ZW0uc3BlYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBTdGFja0VudGVyKCkgYW5kIFN0YWNrTGVhdmUoKSBzdHVicwoKCSogbXVsdGltZWRpYS9tY2kuYywgbXVsdGltZWRpYS9tbXN5c3RlbS5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglTdGFydGluZyBpbXBsZW1lbnRhdGlvbiBvZiBNQ0kgY3JlYXRvciB0YXNrcwoJRml4ZWQgYnVnIGluIE1DSV9PUEVOIGhhbmRsaW5nICh0aGFua3MgdG8gQWRhbSBmb3IgcmVwb3J0aW5nIHRoaXMgb25lKQoJQmV0dGVyIGltcGxlbWVudGF0aW9uIG9mIG1tVGFza0NyZWF0ZTE2CgoJKiBpbmNsdWRlL211bHRpbWVkaWEuaDogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBjcmVhdG9yIHRhc2sgdG8gTUNJIHN0cnVjdC4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnLmM6IFBhdmVsIFJvc2tpbiA8cGF2ZWxfcm9za2luQGdlb2NpdGllcy5jb20+CglSZXBsYWNlZCAweEMwMDAgYnkgc3ltYm9saWMgY29uc3RhbnRzLgoKCSogZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgc21hbGwgPT0sICE9IG1peHVwLgoKCSogd2luZG93cy9kZWZkbGcuYywgd2luZG93cy9kZWZ3bmQuYzoKCUx1YyBUb3VyYW5nZWF1IDxsdWNAbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRlZCBXTV9OT1RJRllGT1JNQVQuCgoJKiBsb2FkZXIvZWxmLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQG11ZC5kZT4KCSJmb28iIHdhcyBub3QgdHJhbnNsYXRlZCB0byAiZm9vLnNvIiBpbiBlbGYgbG9hZGVyLgoKCSogaW5jbHVkZS9iaXRtYXAuaCwgb2JqZWN0cy9iaXRtYXAuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJTG9hZEJpdG1hcDE2KCkvTG9hZEltYWdlMTYoKSBjYWxsaW5nIHNlcXVlbmNlIHNpbXBsaWZpZWQuCgoJKiBsb2FkZXIvbW9kdWxlLmMsIGxvYWRlci9uZS9yZXNvdXJjZS5jLCBtaXNjL2NhbGxiYWNrLmMsIGlmMTYzMi93cHJvY3Muc3BlYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWxsb3cgTlVMTCBORSByZXNvdXJjZSBoYW5kbGVyOyBjYWxsIHRoZSBkZWZhdWx0IGhhbmRsZXIgZGlyZWN0bHkuCglSZW1vdmVkIFdQUk9DUyAvIENhbGxiYWNrcyBzdXBwb3J0IGZvciBXaW5lTGliIHJlc291cmNlIGhhbmRsZXJzLgoKCSogaW5jbHVkZS9wcm9jZXNzLmgsIHJlbGF5MzIvdXR0aHVuay5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglNYWRlIFVuaXZlcnNhbCBUaHVuayBsaXN0IHBlci1wcm9jZXNzLCBub3Qgc3lzdGVtIGdsb2JhbC4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaDogUGF1bCBRdWlubiA8cGF1bHFAY29yZWwuY2E+CglBZGRpdGlvbmFsIG1hY3JvIGRlZmluaXRpb25zLgoKCSogZGxscy9jb21jdGwzMi90YWIuYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50ZWQgVENNX0FESlVTVFJFQ1QuCgoJKiBtc2Rvcy9pbnQwOS5jLCBtc2Rvcy9pb3BvcnRzLmM6CglNaWNoYWVsIFZla3NsZXIgPG12ZWtzbGVyQHRlY2h1bml4LnRlY2huaW9uLmFjLmlsPgoJUmVtb3ZlZCAiaW1wbGljaXQgZGVjbGFyYXRpb24iIHdhcm5pbmdzLgoKCSogZ3JhcGhpY3MvZDNkX3ByaXZhdGUuaDogTGlvbmVsIFVsbWVyIDx1bG1lckBkaXJlY3Rwcm92aWRlci5uZXQ+CglGaXhlZCBPcGVuR0wgZGV2aWNlcyBpbXBsZW1lbnRhdGlvbi4KCgkqIHdpbmRvd3MvcXVldWUuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglJbiBVc2VyWWllbGQxNiwgd2hlbiBjdXJyZW50IHRocmVhZCBpcyBhIDMyIGJpdCBvbmUgd2hpY2ggaG9sZCB0aGUKCVdpbjE2TG9jaywgbXVzdCB0YWtlIGNhcmUgb2YgYSBMb2NrQ291bnQgPiAxLgoKCSogKi8qLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCU1vcmUgY29kZSBtb3ZlZCB0byB0aGUgWDExIGRyaXZlciAoYml0bWFwIGFuZCBwYWxldHRlIGFuZCBtaXNjKS4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KU3VuIE1hciAyOCAxNToyMDowMCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2luZ2RpLmg6CglIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCU1vdmUgRE0qIGRlZmluZXMgZnJvbSB3aW5iYXNlLmggLT4gd2luZ2RpLmguCgoJKiBncmFwaGljcy9kZHJhdy5jOiBMaW9uZWwgVWxtZXIgPHVsbWVyQGRpcmVjdHByb3ZpZGVyLm5ldD4KCUZpeGVkIFF1ZXJ5SW50ZXJmYWNlIGZ1bmN0aW9ucyBmb3IgSURpcmVjdDNEIDEgYW5kIDIuCgoJKiBvbGUvbmxzL0F0dGljL2Ruay5ubHM6IEFwcGFyZW50bHkgbm8gbG9uZ2VyIG5lZWRlZC4KCgkqIGNvbnRyb2xzL21lbnUuYywgY29udHJvbHMvdWl0b29scy5jLCBkbGxzL2NvbWN0bDMyL2NvbWJvZXguYywgZ3JhcGhpY3MveDExZHJ2L2JydXNoLmMsIGdyYXBoaWNzL3gxMWRydi9ncmFwaGljcy5jLCBpbmNsdWRlL2RlYnVnLmgsIGluY2x1ZGUvZGVidWdkZWZzLmgsIG1lbW9yeS9nbG9iYWwuYywgbWlzYy9kZGVtbC5jLCB3aW5kb3dzL3gxMWRydi9ldmVudC5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZGltaUBjcy50b3JvbnRvLmVkdT4KCUNoYW5nZWQgc29tZSBkZWJ1ZyBtZXNzYWdlcyBmcm9tIG9uZSBjaGFubmVsIHRvIGFub3RoZXIsIHRvIGNsZWFuIHVwIGEKCWJpdCB0aGUgZGVidWcgY2hhbm5lbCB1c2FnZS4KCgkqIGxvYWRlci9tb2R1bGUuYzogSmVzcyBIYWFzIDxwYXJhbm9pZDA3QGhvdG1haWwuY29tPgoJRml4ZWQgQ3JlYXRlUHJvY2Vzc0Egc28gaXQgY2FuIGhhbmRsZSBjb21tYW5kbGluZXMgd2l0aCBhcmd1bWVudHMgYW5kCglubyAuZXhlLgoKCSogbG9hZGVyL25lL21vZHVsZS5jOiBKZXNzIEhhYXMgPHBhcmFub2lkMDdAaG90bWFpbC5jb20+CglGaXhlZCBHZXRNb2R1bGVIYW5kbGUxNi4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6IFBhdmVsIFJvc2tpbiA8cGF2ZWxfcm9za2luQGdlb2NpdGllcy5jb20+CglBZGRlZCBSdXNzaWFuIGtleWJvYXJkIHN1cHBvcnQuCgoJKiBpbmNsdWRlL3dpbnVzZXIuaCwgcmVsYXkzMi91c2VyMzIuc3BlYywgd2luZG93cy91c2VyLmM6CglMaW9uZWwgVWxtZXIgPHVsbWVyQGRpcmVjdHByb3ZpZGVyLm5ldD4KCUFkZGVkIHN0dWIgZm9yIFNldFN5c3RlbUN1cnNvci4KCgkqIHdpbjMyL2ZpbGUuYzogU3RlZmZlbiBNb2VsbGVyIDxtb2VsbGVyQGViaS5hYy51az4KCVNldEZpbGVBdHRyaWJ1dGVzQTogImltcGxlbWVudGVkIiBzZXR0aW5nIG9mIGRpcmVjdG9yeSBmbGFnIGFzIHRlc3Qgb2YKCWNvbXBhdGliaWxpdHkuCgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOiBQYXZlbCBSb3NraW4gPHBhdmVsX3Jvc2tpbkBnZW9jaXRpZXMuY29tPgoJQ2hhbmdlcyBpbiBYMTFEUlZfS0VZQk9BUkRfRGV0ZWN0TGF5b3V0IGluIG9yZGVyIHRvIGltcGxlbWVudCBSdXNzaWFuCglrZXlib2FyZCBzdXBwb3J0LgoKCSogaW5jbHVkZS93aW5lL29ial9zdG9yYWdlLmgsIG9sZS9NYWtlZmlsZS5pbiwgb2xlL29sZTIuYywgb2xlL29sZTJzdHVicy5jLCBvbGUvc3RvcmFnZS5jLCBvbGUvdmFyaWFudC5jLCByZWxheTMyL29sZTMyLnNwZWMsIHJlbGF5MzIvb2xlYXV0MzIuc3BlYywgcmVsYXkzMi91c2VyMzIuc3BlYywgd2luZG93cy9pbnB1dC5jLCBpbmNsdWRlL29sZTIuaCwgaW5jbHVkZS9vbGVhdXRvLmgsIGluY2x1ZGUvb2xlY3RsLmgsIGluY2x1ZGUvd2ludXNlci5oOgoJUGF1bCBRdWlubiA8cGF1bHFAY29yZWwuY2E+CglBYXJvbiBCYXJuZXMgPGFhcm9uYkBjb3JlbC5jYT4KCUFkcmlhbiBUaHVyc3RvbiA8YWRyaWFudEBjb3JlbC5jYT4KCUJ1bmRsZSBvZiBuZXcgc3R1YnMuCgoJKiBtaXNjL2NydGRsbC5jLCBtaXNjL2RkZW1sLmMsIG9sZS9vbGUyZGlzcC5jOgoJQW5kcmVhcyBNb2hyIDxjaXBhbTg5NUBjaXAxLmluZC51bmktc3R1dHRnYXJ0LmRlPgoJQWRkZWQgbWlzc2luZyBXSU5BUElzLgoKCSogcmVsYXkzMi9rZXJuZWwzMi5zcGVjLCB3aW4zMi9uZXdmbnMuYzoKCUFuZHJlYXMgTW9ociA8Y2lwYW04OTVAY2lwMS5pbmQudW5pLXN0dXR0Z2FydC5kZT4KCUFkZGVkIENyZWF0ZUlvQ29tcGxldGlvblBvcnQgc3R1Yi4KCgkqIHdpbmRvd3MvcXVldWUuYywgd2luZG93cy9tZXNzYWdlLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUNhbGwgRVZFTlRfUGVuZGluZygpIHRvIGZsdXNoIFgxMSBvdXRwdXQgcXVldWUgYmVmb3JlIGJsb2NraW5nIGluCglNc2dXYWl0Rm9yTXVsdGlwbGVPYmplY3RzKCkuCglEb24ndCBjYWxsIEVWRU5UX1dhaXROZXRFdmVudCBpbiBNU0dfUGVla0hhcmR3YXJlTXNnLgoJUHJvdGVjdCBzeXN0ZW0gcXVldWUgYWNjZXNzIGluIGhhcmR3YXJlX2V2ZW50KCkuCgoJKiB3aW5kb3dzL3VzZXIuYywgd2luZG93cy93aW4uYywgd2luZG93cy93aW5wb3MuYywgd2luZG93cy94MTFkcnYvZXZlbnQuYywgd2luZG93cy94MTFkcnYvd25kLmMsIGNvbnRyb2xzL21lbnUuYywgd2luZG93cy9kY2UuYywgd2luZG93cy9kaWFsb2cuYywgd2luZG93cy9mb2N1cy5jLCB3aW5kb3dzL21kaS5jLCB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy9ub25jbGllbnQuYzoKCUZyYW5jb2lzIEJvaXN2ZXJ0PGZyYW5jb2lzQG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgc29tZSBidWdzIGluIHRocmVhZCBzYWZlbmVzcyBmb3Igd25kIHN0cnVjdC4KCgkqIGxpYnRlc3QvTWFrZWZpbGUuaW4sIGxpYnRlc3QvaGVsbG8zLmMsIGxpYnRlc3QvaGVsbG8zcmVzLnJjOgoJUGF2ZWwgUm9za2luIDxwYXZlbF9yb3NraW5AZ2VvY2l0aWVzLmNvbT4KCU1hZGUgbGlidGVzdC9oZWxsbzMgd29yayBhZ2Fpbiwgbm93IHdpdGggV2luZG93cy1jb21wYXRpYmxlIHJlc291cmNlCglsb2FkaW5nLgoKCSogaW5jbHVkZS9pbW0uaCwgaW5jbHVkZS9tbXN5c3RlbS5oLCBpbmNsdWRlL21zYWNtLmgsIGluY2x1ZGUvd2luZGVmLmgsIGluY2x1ZGUvd3R5cGVzLmg6CglKaXVtaW5nIEx1byA8aml1bWluZ19sdW9AeWFob28uY29tPgoJTW92ZWQgbWFjcm8gREVDTEFSRV9IQU5ETEUoKSAoaW4gbXNhY20uaCBhbmQgd3R5cGVzLmgpIHRvIHdpbmRlZi5oLAoJdGhlbiBkZWxldGVkIHRoZSBkdXBsaWNhdGVkIHR5cGVkZWZzIChpbiBpbW0uaCBhbmQgbW1zeXN0ZW0uaCkuCgoJKiBtaXNjL3ByaW50ZHJ2LmM6IEtsYWFzIHZhbiBHZW5kIDxrbGFhc0B2YW5nZW5kLmRlbW9uLm5sPgoJUmV3cm90ZSBFbnVtUHJpbnRlcnNBLCBhZGRlZCBDcml0aWNhbFNlY3Rpb24gYXJvdW5kIFJlZ2lzdHJ5IHJlYWRzIGFuZAoJaW1wbGVtZW50ZWQgUFJJTlRFUl9JTkZPXzIgcmVxdWVzdC4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6IEpvbmF0aGFuIE5heWxvciA8ZzRrbHhAcG9wLmFncmkuY2g+CglBZGRlZCBTd2lzcyBHZXJtYW4ga2V5Ym9hcmQgbGF5b3V0LgoKCSogZGxscy9zaGVsbDMyL2NvbnRtZW51LmMsIGRsbHMvc2hlbGwzMi9kYXRhb2JqZWN0LmMsIGRsbHMvc2hlbGwzMi9mb2xkZXJzLmMsIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYywgZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLCBkbGxzL3NoZWxsMzIvc2hsdmlldy5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CgktIGFkanVzdGVkIHByaW50aW5nIG9mIHJlZmNvdW50cyB0byBiZSBlcXVhbAoJLSBjbGVhbmluZyB1cCBpY29uIGNhY2hlIG9uIFBST0NFU1NfREVUQUNICgktIGZpeGVkIGFzY2lpL3VuaWNvZGUgdXNlIGluIFNIL0lMQ3JlYXRlRnJvbVBhdGgKCS0gZml4ZWQgc21hbGwgbWVtb3J5IGxlYWsgaW4gc2hlbGx2aWV3CgoJKiBsb2FkZXIvZG9zL2Rvc3ZtLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRW1wdHkgRE9TVk1fUXVldWVFdmVudCBmb3IgIU1aX1NVUFBPUlRFRC4KCgkqIHByb2dyYW1zL2NtZGxndHN0L2NtZGxndHN0LmM6CglQYXZlbCBSb3NraW4gPHBhdmVsX3Jvc2tpbkBnZW9jaXRpZXMuY29tPgoJRml4ZWQgd2FybmluZ3MuCgoJKiBpbmNsdWRlL2NvbW1kbGcuaDogUGF2ZWwgUm9za2luIDxwYXZlbF9yb3NraW5AZ2VvY2l0aWVzLmNvbT4KCUNoYW5nZWQgQ0hPT1NFQ09MT1JbQVddLkZsYWdzIGZyb20gVUlOVCB0byBEV09SRC4KCgkqIHdpbmRvd3MvcGFpbnRpbmcuYywgd2luZG93cy9zY3JvbGwuYywgd2luZG93cy90dHlkcnYvaW5pdC5jLCB3aW5kb3dzL3R0eWRydi93bmQuYywgd2luZG93cy93aW4uYywgd2luZG93cy93aW5wb3MuYywgd2luZG93cy94MTFkcnYvZXZlbnQuYywgd2luZG93cy94MTFkcnYvaW5pdC5jLCB3aW5kb3dzL3gxMWRydi93bmQuYywgY29udHJvbHMvbWVudS5jLCBpbmNsdWRlL3JlZ2lvbi5oLCBpbmNsdWRlL3RzX3hmODZ2bW9kZS5oLCBpbmNsdWRlL3RzX3h1dGlsLmgsIGluY2x1ZGUvdHR5ZHJ2LmgsIGluY2x1ZGUvd2luLmgsIGluY2x1ZGUveDExZHJ2LmgsIG9iamVjdHMvcmVnaW9uLmMsIHRvb2xzL21ha2VfWDExd3JhcHBlcnMsIHRzeDExL1gxMV9jYWxscywgdHN4MTEvdHNfeGY4NnZtb2RlLmMsIHRzeDExL3RzX3h1dGlsLmMsIHdpbmRvd3MvZGNlLmMsIHdpbmRvd3Mvbm9uY2xpZW50LmM6CglBbGV4IEtvcm9ia2EgPGFsZXhAYWlrZWEuYW1zLnN1bnlzYi5lZHU+CglNb3ZlZCBocmduVXBkYXRlIGZyb20gY2xpZW50IHRvIHdpbmRvdyBjb29yZGluYXRlcywgbWFkZSBub25jbGllbnQKCXBhaW50aW5nIGRlcGVuZCBvbiB0aGUgdXBkYXRlIHJlZ2lvbiwgcmV3b3JrZWQgU2V0V2luZG93UG9zKCkgYW5kCglSZWRyYXdXaW5kb3coKSB0byBzcGVlZCB1cCB1cGRhdGUgcmVnaW9uIGNhbGN1bGF0aW9uLCBtYWRlIC1kZXNrdG9wCgl3b3JrIHByb3Blcmx5LCBhZGRlZCBXTV9DQU5DRUxNT0RFIGhlcmUgYW5kIHRoZXJlLCBmaXhlZCBzZXZlcmFsCgl3aW5kb3cgYWN0aXZhdGlvbiBidWdzIHRoYXQgY3JlcHQgaW4gc2luY2UgdGhlIGxhc3QgdGltZS4KCgkqIHdpbmRvd3MvbWVzc2FnZS5jOiBBbGV4IEtvcm9ia2EgPGFsZXhAYWlrZWEuYW1zLnN1bnlzYi5lZHU+CglGaXhlZCBvY2Nhc2lvbmFsIGxvc3Mgb2YgU2VuZE1lc3NhZ2UoKSByZXR1cm4gdmFsdWUuCgoJKiBncmFwaGljcy9kZHJhdy5jOiBMaW9uZWwgVWxtZXIgPHVsbWVyQGRpcmVjdHByb3ZpZGVyLm5ldD4KCUFkZGVkIGluaXRpYWxpc2F0aW9uIG9mIHRoZSBwaXhtYXBfZGVwdGggZmllbGQgaW4KCVhsaWJfRGlyZWN0RHJhd0NyZWF0ZS4KCgkqIG1zZG9zL2lvcG9ydHMuYzogSmVzcyBIYWFzIDxwYXJhbm9pZDA3QGhvdG1haWwuY29tPgoJRml4ZWQgYSB3YXJuaW5nLgoKCSogbXNkb3MvaW50MmYuYzogSmVzcyBIYWFzIDxwYXJhbm9pZDA3QGhvdG1haWwuY29tPgoJQWRkZWQgc3R1YiBmb3IgaW50MmYgNGIuCgoJKiBtdWx0aW1lZGlhL21tc3lzdGVtLmM6IENocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJSmFtZXMgQWJiYXRpZWxsbyA8YWJiZXlqQHdwaS5lZHU+CglGaXhlZCBtZW1vcnkgbGVhayBpbiB3YXZlT3V0T3Blbi93YXZlT3V0Q2xvc2UuCgoJKiBncmFwaGljcy9wc2Rydi9lc2NhcGUuYzoKCUh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJTW9yZSBFc2NhcGVzIGZvciB0aGUgUG9zdFNjcmlwdCBkcml2ZXIuCgpTYXQgTWFyIDI3IDE2OjU2OjEzIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBncmFwaGljcy9kM2Rjb21tb24uYywgZ3JhcGhpY3MvZDNkZGV2aWNlcy5jLCBncmFwaGljcy9kM2RleGVjdXRlYnVmZmVyLmMsIGdyYXBoaWNzL2QzZGxpZ2h0LmMsIGdyYXBoaWNzL2QzZG1hdGVyaWFsLmMsIGdyYXBoaWNzL2QzZHRleHR1cmUuYywgZ3JhcGhpY3MvZDNkdmlld3BvcnQuYywgZ3JhcGhpY3MvZGRyYXcuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJQWRhcHRlZCB0byB0aGUgaW50ZXJmYWNlL2ltcGxlbWVudGF0aW9uIHNlcGFyYXRpb24uCglOb3cgdXNlcyBJQ09NX1RISVMgdG8gYWNjZXNzIHRoZSBpbXBsZW1lbnRhdGlvbiBzdHJ1Y3R1cmVzLgoJUmVwbGFjZWQgJ3RoaXMnIHdpdGggJ1RoaXMnIGZvciBJQ09NX1RISVMuCglEaXJlY3QgYWNjZXNzIHRvIHRoZSB2aXJ0dWFsIHRhYmxlIGhhcyBiZWVuIGVsaW1pbmF0ZWQgdG9vLgoKCSogZ3JhcGhpY3MvZDNkX3ByaXZhdGUuaCwgZ3JhcGhpY3MvZGRyYXdfcHJpdmF0ZS5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglVcGRhdGVkIHRvIGluY2x1ZGUgYWxsIHRoZSBpbXBsZW1lbnRhdGlvbiBhc3BlY3RzIHRoYXQgd2VyZSBwcmV2aW91c2x5CglpbiB0aGUgcHVibGljIGluY2x1ZGVzLgoKCSogZ3JhcGhpY3MvdmdhLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJUmVtb3ZlZCBkaXJlY3QgYWNjZXNzIHRvIHRoZSB2aXJ0dWFsIHRhYmxlCgoJKiBpbmNsdWRlL2QzZC5oLCBpbmNsdWRlL2RkcmF3Lmg6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJUmVtb3ZlZCBhbGwgaW1wbGVtZW50YXRpb24gYXNwZWN0cy4KCU1vZGlmaWVkIHRvIHVzZSB0aGUgbGF0ZXN0IElDT00gbWFjcm9zLgoJQWRkZWQgdGhlIG1hY3JvcyBmb3IgdXNlIGluIEMuCglBZGRlZCB0aGUgbWV0aG9kIHBhcmFtZXRlciBuYW1lcyAod2hlbiBJIGhhZCB0aGVtKS4KCgkqIGluY2x1ZGUvbW9kdWxlLmgsIGluY2x1ZGUvcGVfaW1hZ2UuaCwgaW5jbHVkZS90aHJlYWQuaCwgbG9hZGVyL21vZHVsZS5jLCBsb2FkZXIvcGVfaW1hZ2UuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2NoZWR1bGVyL3RocmVhZC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglGaXhlZCBzZXF1ZW5jZSBvZiBETExfUFJPQ0VTU19ERVRBQ0ggbm90aWZpY2F0aW9uIGNhbGxzLgoJTW92ZWQgUEVfTU9EUkVGIGZsYWdzIHRvIFdJTkVfTU9EUkVGIGxldmVsLgoJQmV0dGVyIGhhbmRsaW5nIG9mIExvYWRMaWJyYXJ5RXggZmxhZ3MuCglQRV9Jbml0VGxzKCkgY2hhbmdlZCB0byB3b3JrIG9ubHkgb24gdGhlIGN1cnJlbnQgdGhyZWFkLgoKCSogaW5jbHVkZS9zZXJ2ZXIuaCwgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2VydmVyL3RyYWNlLmM6CglBZGRlZCBjbWQgbGluZSBpbiBuZXdfcHJvY2VzcyByZXF1ZXN0LgoKCSogc2NoZWR1bGVyL3RocmVhZC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBbGwgdGhyZWFkcyBjcmVhdGVkIHdpdGggQ3JlYXRlVGhyZWFkIGFyZSAzMi1iaXQgdGhyZWFkcy4KCgkqIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwgZGxscy9zaGVsbDMyL3JlZ3N0cmVhbS5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJUmVhZGluZyBvZiBiaW5hcnkgc3RyZWFtcyBpbXBsZW1lbnRlZCAoU0hPcGVuUmVnU3RyZWFtKS4KCgkqIG1zZG9zL2ludDI1LmMsIG1zZG9zL2ludDI2LmM6CglBbmRyZWFzIE1vaHIgPGNpcGFtODk1QGNpcDEuaW5kLnVuaS1zdHV0dGdhcnQuZGU+CglGaXhlZCBpbnQyNSAmIGludDI2IGVycm9yIGNvZGUuCgoJKiBsb2FkZXIvdGFzay5jLCB3aW5kb3dzL3F1ZXVlLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFsbG93IFVzZXJZaWVsZDE2IHRvIGJlIGNhbGxlZCBmcm9tIDMyLWJpdCB0aHJlYWQuCgoJKiBpbmNsdWRlL29sZWRsZy5oLCBpbmNsdWRlL3dpbmJhc2UuaDoKCUFsYmVydCBEZW4gSGFubiA8YWxiZXJ0ZEBjb3JlbC5jYT4KCUFkZGl0aW9uYWwgbWFjcm8gZGVmaW5pdGlvbnMuCgoJKiBncmFwaGljcy94MTFkcnYvYml0bWFwLmMsIGluY2x1ZGUvYml0bWFwLmgsIG9iamVjdHMvYml0bWFwLmM6CglIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCUZpeGVkIHtTfEd9ZXRCaXRtYXBCaXRzIGluIHgxMWRydi4gIFJlbW92ZWQgQklUTUFQX0dldFBhZGRpbmcuCgoJKiBvYmplY3RzL21ldGFmaWxlLmM6IEh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJRml4ZWQgbWV0YWZpbGUgcmVjb3JkaW5nIG9mIENyZWF0ZVBhdHRlcm5CcnVzaC4KClRodSBNYXIgMjUgMTY6NDI6MjggMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmMsIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jLCBpbmNsdWRlL2NvbW1jdHJsLmgsIGluY2x1ZGUvdG9vbGJhci5oLCBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmM6CglQYXNjYWwgTGVzc2FyZCA8cGFzY2FsQG1hY2FkYW1pYW4uY29tPgoJQ2hhbmdlIHRoZSBBZGRCaXRtYXAgZnVuY3Rpb24uIEltcGxlbWVudCBmbGF0IHRvb2xiYXIuIENoYW5nZQoJQ3JlYXRlVG9vbGJhckV4LiBJbXBsZW1lbnQgcGFydGlhbGx5IHRoZSBob3QgYnV0dG9ucyBmb3IgdG9vbGJhci4KCgkqIG1zZG9zL2ludDE2LmM6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglJbXBsZW1lbnRlZCBHZXQgU2hpZnQgRmxhZ3MgZnVuY3Rpb24uCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJTWlzc2luZyBXSU5BUEkuCgoJKiBncmFwaGljcy9wYWludGluZy5jOiBEYXZpZCBMdXllciA8bHV5ZXJAdWNzLnV3YS5lZHUuYXU+CglDaGFuZ2VkIHN0ZGxpYi5oIHRvIHN0cmluZy5oLgoKCSogZGxscy9udGRsbC90aW1lLmM6IERhdmlkIEx1eWVyIDxsdXllckB1Y3MudXdhLmVkdS5hdT4KCUFkZGVkIHN0cmluZy5oLgoKCSogbWlzYy9kZGVtbC5jLCBtdWx0aW1lZGlhL21zdmlkZW8uYywgb2xlL3NhZmVhcnJheS5jLCBwcm9ncmFtcy9hdml0b29scy9hdmlpbmZvLmMsIHByb2dyYW1zL2F2aXRvb2xzL2F2aXBsYXkuYywgcHJvZ3JhbXMvYXZpdG9vbHMvaWNpbmZvLmMsIHdpbjMyL2NvbnNvbGUuYzoKCURhdmlkIEx1eWVyIDxsdXllckB1Y3MudXdhLmVkdS5hdT4KCUNoYW5nZWQgInN0cmluZ3MuaCIgdG8gInN0cmluZy5oIi4KCgkqIGdyYXBoaWNzL3gxMWRydi9iaXRibHQuYywgd2luZG93cy9ub25jbGllbnQuYzoKCVJhbmR5IFdlZW1zIDxyd2VlbXNAaG9tZS5jb20+CglGaXhlZCBvZmYtYnktb25lIGVycm9yIGlmIGJpdGJsdCB3aWR0aCBvciBoZWlnaHQgaXMgbmVnYXRpdmUuCgoJKiBkbGxzL2NvbWN0bDMyL3RhYi5jLCBpbmNsdWRlL3RhYi5oOgoJRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50ZWQ6CgktIHNob3dpbmcgdGhlIHNlbGVjdGVkIHRhYiBhcyBoaWdobGlnaHRlZAoJLSBzdXBwb3J0IGZvciBkcmF3aW5nIHRoZSBmb2N1cyByZWN0YW5nbGUKCS0gYmFzaWMga2V5Ym9hcmQgc3VwcG9ydAoJLSBzdXBwb3J0IGZvciBhIHRhYiB3aXRoIGhvcml6b250YWwgc2Nyb2xsaW5nLgoKCSogZmlsZXMvcHJvZmlsZS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVRocmVhZC1zYWZlIGltcGxlbWVudGF0aW9uIG9mIHByb2ZpbGUgZnVuY3Rpb25zIChXaW5kb3dzIGFuZCBXaW5lKS4KCgkqIGluY2x1ZGUvbWVzc2FnZS5oLCBsb2FkZXIvbWFpbi5jLCB3aW5kb3dzL3RpbWVyLmM6CglTdGVwaGFuZSBMdXNzaWVyIDxzdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KCU1hZGUgdGhlIHRpbWVyIGNvZGUgdGhyZWFkIHNhZmUuCgoJKiB3aW5kb3dzL2RpYWxvZy5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglGaXhlZCBwb3NzaWJsZSBlbmRsZXNzIGxvb3AuCgoJKiBjb250cm9scy9saXN0Ym94LmM6IEZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIExCX0dFVENVUlNFTCBtZXNzYWdlIHRvIHJldHVybiBMQl9FUlIgb24gZW1wdHkgbGlzdC4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwgZGxscy9zaGVsbDMyL3NoZWxsb2xlLmMsIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYywgZGxscy9zaGVsbDMyL3NobHZpZXcuYywgaW5jbHVkZS9zaGxndWlkLmgsIGluY2x1ZGUvc2hsb2JqLmgsIGluY2x1ZGUvd2luZS9vYmpfYmFzZS5oLCBpbmNsdWRlL3dpbmUvb2JqX2NvbW1kbGdicm93c2VyLmgsIGluY2x1ZGUvd2luZS9vYmpfY29udGV4dG1lbnUuaCwgaW5jbHVkZS93aW5lL29ial9kb2NraW5nd2luZG93ZnJhbWUuaCwgaW5jbHVkZS93aW5lL29ial9leHRyYWN0aWNvbi5oLCBpbmNsdWRlL3dpbmUvb2JqX3NoZWxsYnJvd3Nlci5oLCBpbmNsdWRlL3dpbmUvb2JqX3NoZWxsZXh0aW5pdC5oLCBpbmNsdWRlL3dpbmUvb2JqX3NoZWxsZm9sZGVyLmgsIGluY2x1ZGUvd2luZS9vYmpfc2hlbGx2aWV3LmgsIGRsbHMvc2hlbGwzMi9icnNmb2xkZXIuYywgZGxscy9zaGVsbDMyL2NvbnRtZW51LmMsIGRsbHMvc2hlbGwzMi9mb2xkZXJzLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJVXNlIHRoZSBuZXcgaGVhZGVyIGZvciBDT00gZGVmaW5pdGlvbnMuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgcmVsYXkzMi9zaGVsbDMyLnNwZWM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCU5ldyBzdHViIHNoZWxsXzY1NC4KCgkqIGluY2x1ZGUvdHJlZXZpZXcuaCwgZGxscy9jb21jdGwzMi90cmVldmlldy5jOgoJU3lsdmFpbiBTdC5HZXJtYWluIDxzeWx2YWluQG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50YXRpb24gb2YgVFZNX1NPUlRDSElMRFJFTkNCLgoJSW1wbGVtZW50YXRpb24gb2YgVFZJX1NPUlQgaW5zZXJ0aW9uLgoJRml4IGRpc3BsYXkgcHJvYmxlbSB3aGVuIFRWSUZfSU1BR0V8VFZJRl9TRUxFQ1RFRElNQUdFIHdlcmUgbm90IHNldC4KCUZpeCBwcm9ibGVtcyByZWxhdGVkIHRvIFRWSVNfRVhQQU5ERURPTkNFLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmM6CglTeWx2YWluIFN0Lkdlcm1haW4gPHN5bHZhaW5AbWFjYWRhbWlhbi5jb20uZXBmbC5jaD4KCUZpeCBwcm9ibGVtIGluIERQQV9RdWlja1NvcnQgd2hlcmUgdGhlIHNvcnQgb3JkZXIgd2FzIGludmVydGVkLgoKCSogaW5jbHVkZS9kb3NleGUuaCwgaW5jbHVkZS93aW5iYXNlLmgsIGxvYWRlci9kb3MvZG9zdm0uYywgbG9hZGVyL2Rvcy9tb2R1bGUuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQWRkZWQgaW5mcmFzdHJ1Y3R1cmUgYW5kIGRlZmluaXRpb25zIGZvciBnZW5lcmFsLXB1cnBvc2UgZXZlbnQgYW5kIElSUQoJaGFuZGxpbmcgZm9yIHRoZSBXaW5lIGRvcyBib3guIFJlbW92ZWQgdGhlIG9ic29sZXRlIE1aX1RpY2suIEFkZGVkCglldmVudCBtZXNzYWdlIGxvb3AsIG1lc3NhZ2UgaGFuZGxpbmcsIENMSS9TVEkgaGFuZGxpbmcsIGFuZCBtaW5pbWFsCglQSUMgc3VwcG9ydC4KCgkqIGxvYWRlci9kb3MvZG9zbW9kLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQWRkZWQgaGFuZGxpbmcgb2YgU0lHVVNSMiBmb3IgdGhlIG5ldyBldmVudCBpbnRlcnJ1cHRpb24gaGFuZGxpbmcsCglidW1waW5nIHVwIHRoZSBwcm90b2NvbCByZXZpc2lvbi4gTWFkZSBzb21lIGRlYnVnIG1lc3NhZ2VzIG5vdCBiZQoJb3V0cHV0IHdoZW4gaXQncyBub3QgbmVjZXNzYXJ5LgoKCSogbXNkb3MvaW9wb3J0cy5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUFkZGVkIHBvcnQgMHg2MCBmb3IgaW50IDB4MDksIGFuZCBwb3J0IDB4MjAgZm9yIFBJQyBoYW5kbGluZy4KCgkqIGluY2x1ZGUvbWlzY2VtdS5oLCBtc2Rvcy9NYWtlZmlsZS5pbiwgbXNkb3MvaW50ZXJydXB0cy5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglBZGRlZCBpbnQgMHgwOSBhbmQgaW50IDB4MzMuCgoJKiBtc2Rvcy9pbnQzMy5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUltcGxlbWVudGVkIGEgaW50IDB4MzMgaGFuZGxlciwgd2l0aCBhIG1pbmltYWwgaW1wbGVtZW50YXRpb24gb2YgdGhlCgltb3VzZSByb3V0aW5lcywgaW5jbHVkaW5nIGNhbGxiYWNrcy4KCgkqIG1zZG9zL2ludDA5LmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJSW1wbGVtZW50ZWQgYSBpbnQgMHgwOSBoYW5kbGVyLCBhbmQgYSBzY2FuY29kZSBxdWV1ZSB0aGF0IHNpbXVsYXRlcwoJSVJRIDEgaW4gdGhlIGRvcyBib3guCgoJKiBpbmNsdWRlL2RvY29iai5oOiBQYXVsIFF1aW5uIDxwYXVscUBjb3JlbC5jYT4KCUNyZWF0aW9uIG9mIGRvY29iai5oLgoKCSogb2JqZWN0cy9kaWIuYzogSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglBbGxvdyBkZXB0aCBvZiBESUIgdG8gZGlmZmVyIGZyb20gZGVwdGggb2YgYml0bWFwIGluIEdldERJQml0cy4KCldlZCBNYXIgMjQgMTU6MDc6MjAgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRlYnVnZ2VyL2VkaXRsaW5lLmM6IEFib3J0IG9uIGlucHV0IGVycm9yLgoKCSogaW5jbHVkZS9vbGVkbGcuaDogQWRyaWFuIFRodXJzdG9uIDxhZHJpYW50QGNvcmVsLmNhPgoJUG9wdWxhdGlvbiBvZiBvbGVkbGcuCgoJKiB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCB3aW5kb3dzL3BhaW50aW5nLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFkZCBJc1dpbmRvdygpIGNoZWNrcyBhZnRlciBTZW5kTWVzc2FnZSgpIHJldHVybnMuCgoJKiBtc2Rvcy9pbnQxMC5jOiBKZXNzIEhhYXMgPHBhcmFub2lkMDdAaG90bWFpbC5jb20+CglGaXhlZCBhIHNtYWxsIGJ1ZyBpbiBpbnQxMC4KCgkqIGNvbnRyb2xzL2NvbWJvLmM6IFBhc2NhbCBMZXNzYXJkIDxwYXNjYWxAbWFjYWRhbWlhbi5jb20+CglDT01CT19TaXplOiBtYWludGFpbiB0aGUgaGVpZ2h0IG9mIHRoZSBSZWN0Q29tYm8gd2hlbiB0aGUgd2luZG93IGlzCglyZXNpemVkLgoKCSogaW5jbHVkZS9ob29rLmgsIGluY2x1ZGUvd2ludXNlci5oOiBBZHJpYW4gVGh1cnN0b24gPGFkcmlhbnRAY29yZWwuY2E+CglQYXVsIFF1aW5uIDxwYXVscUBjb3JlbC5jYT4KCUFkZGVkIHZhcmlvdXMgZGVmaW5pdGlvbnMuCglNb3ZlZCBDV1BTVFJVQ1QgZnJvbSBob29rLmggdG8gd2ludXNlci5oIHRvIGNvbmZvcm0gdG8gdGhlIFNESy4KCgkqIGluY2x1ZGUvd2luZGVmLmg6IEppbSBBc3RvbiA8amltYUBjb3JlbC5jYT4KCUFkZGVkIGEgZmV3IGVtcHR5IG1hY3Jvcy4KCgkqIGluY2x1ZGUvY3Vyc29yaWNvbi5oLCBvYmplY3RzL2N1cnNvcmljb24uYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQ1VSU09SSUNPTl9EZXN0cm95OiBtaXNzaW5nIFdJTkFQSSBhZGRlZC4KCgkqIG1pc2Mvd2luc29jay5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIHRyYW5zbGF0aW9uIGZvciBTT19SQ1ZUSU1FTyAoYXMgc2VlbiBieSBJRTQpLgoKVHVlIE1hciAyMyAxNzowNDoxMCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2VydmVyL3Byb2Nlc3MuYzogQ3JlYXRlIHN0YXJ0dXAgaW5mbyBmb3IgdGhlIGluaXRpYWwgcHJvY2Vzcy4KCgkqIGluY2x1ZGUvc2VydmVyLmgsIHNjaGVkdWxlci9jbGllbnQuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2NoZWR1bGVyL3N5c2RlcHMuYywgc2NoZWR1bGVyL3RocmVhZC5jLCBzZXJ2ZXIvcmVxdWVzdC5jLCBzZXJ2ZXIvdHJhY2UuYzoKCUFkZGVkIHNlcnZlciBwaWQgYW5kIHRpZCBpbiBpbml0X3RocmVhZCByZXF1ZXN0LCBhbmQgdXNlIHRoZW0gaW4KCUNMSUVOVF9Jbml0VGhyZWFkLgoKCSogaW5jbHVkZS9jb21wb2JqLmgsIGluY2x1ZGUvb2JqYmFzZS5oLCBpbmNsdWRlL29sZTIuaCwgaW5jbHVkZS93aW5lL29ial9iYXNlLmgsIGluY2x1ZGUvd2luZS9vYmpfaW5wbGFjZS5oLCBpbmNsdWRlL3dpbmUvb2JqX21vbmlrZXIuaCwgaW5jbHVkZS93aW5lcnJvci5oLCBpbmNsdWRlL3d0eXBlcy5oLCBvbGUvTWFrZWZpbGUuaW4sIG9sZS9hbnRpbW9uaWtlci5jLCBvbGUvYmluZGN0eC5jLCBvbGUvY29tcG9iai5jLCBvbGUvY29tcG9zaXRlbW9uaWtlci5jLCBvbGUvZmlsZW1vbmlrZXIuYywgb2xlL2l0ZW1tb25pa2VyLmMsIG9sZS9tb25pa2VyLmMsIG9sZS9zdG9yYWdlMzIuYywgcmVsYXkzMi9vbGUzMi5zcGVjOgoJTm9vbWVuIEhhbXphIDxub29tZW5AbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRlZDoKCS0gSU1vbmlrZXIgaW50ZXJmYWNlIGZvciBGaWxlTW9uaWtlcixJdGVtTW9uaWtlcixBbnRpTW9uaWtlciBhbmQKCSAgR2VuZXJpY0NvbXBvc2l0ZU1vbmlrZXIKCS0gSVJ1bm5pbmdPYmplY3RUYWJsZSBpbnRlcmZhY2UsIGFuZAoJLSBJQmluZEN0eCBpbnRlcmZhY2UuCgoJKiBncmFwaGljcy9wc2Rydi9iaXRtYXAuYywgZ3JhcGhpY3MvcHNkcnYvcHMuYywgaW5jbHVkZS9wc2Rydi5oOgoJSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglBZGRlZCBTdHJldGNoRElCaXRzIGZvciB0aGUgUG9zdFNjcmlwdCBkcml2ZXIuCgoJKiBpbmNsdWRlL21pc2NlbXUuaDogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglBZGRlZCBtaXNzaW5nIGVuZGluZyBwcmFnbWEgcGFjay4KCgkqIG1pc2MvY29tbS5jOiBSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJQ29ycmVjdGVkIHNtYWxsIGJ1ZyBpbiBHZXRDb21tU3RhdGUxNi4gUGFyaXR5IGNoZWNrIGNhbiBiZSBkaXNhYmxlZAoJZXZlbiB3aGVuIGEgcGFyaXR5IGJpdCBpcyB1c2VkLiBTZXRDb21tU3RhdGUxNigpIGNhbiBvdmVycmlkZSBiYXVkcmF0ZQoJc2V0dGluZyBpbiB3aW5lLmNvbmYuCgpNb24gTWFyIDIyIDE3OjQ3OjM2IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBsb2FkZXIvbW9kdWxlLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBjb3BlIHdpdGggcXVvdGVkIGFyZ3VtZW50cyBmb3IgQ3JlYXRlUHJvY2VzcygpLgoKCSogbG9hZGVyL3Jlc291cmNlLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUZpeGVkIHR5cG8gaW4gU2l6ZW9mUmVzb3VyY2UoKS4KCgkqIG1lbW9yeS9zdHJpbmcuYzogQW5kcmVhcyBNb2hyIDxjaXBhbTg5NUBjaXAxLmluZC51bmktc3R1dHRnYXJ0LmRlPgoJbHN0cmNweUEgY2FuJ3QgdXNlIHN0cmNweS4KCgkqIHJlbGF5MzIvYnVpbHRpbjMyLmMsIGlmMTYzMi9idWlsdGluLmMsIGluY2x1ZGUvbW9kdWxlLmgsIG1pc2MvbWFpbi5jLCBtaXNjZW11L21haW4uYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgLWRsbCBvcHRpb24gZm9yIHdpbmVsaWIgcHJvZ3JhbXMuIChOb3RlOiB3aWxsIG5vdCBwcmludCB3YXJuaW5ncwoJb24gZmFpbHVyZSBjdXJyZW50bHkpLgoKCSogcmVsYXkzMi9udGRsbC5zcGVjOiBBbmRyZWFzIE1vaHIgPGNpcGFtODk1QGNpcDEuaW5kLnVuaS1zdHV0dGdhcnQuZGU+CglBZGRlZCBzdHJsd3IuCgoJKiBsb2FkZXIvcGVfaW1hZ2UuYywgbXNkb3MvaW50MjEuYzoKCUFuZHJlYXMgTW9ociA8Y2lwYW04OTVAY2lwMS5pbmQudW5pLXN0dXR0Z2FydC5kZT4KCUNvc21ldGljcy4KCgkqIGlmMTYzMi9tbXN5c3RlbS5zcGVjLCByZWxheTMyL3dpbm1tLnNwZWM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIG5ldyBzdHVicyAobW1UYXNrWFhYLCBtbVRocmVhZFhYWCwgbWNpRXhlY3V0ZSkuCgoJKiBtdWx0aW1lZGlhL21tc3lzdGVtLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJU3RhcnRlZCBjYWxsaW5nIG1peGVyIGFzIGEgMzIgYml0IGxvdyBsZXZlbCBkcml2ZXIgKG5vIGxvbmdlciAxNiBiaXQpCglBZGRlZCBzdXBwb3J0IGZvciB5aWVsZCBwcm9jIGluIG1jaSBzdHJ1Y3QKCUFkZGVkIG1tVGFza1hYWDE2IGFuZCBtbVRocmVhZFhYWDE2IGZ1bmN0aW9ucwoJUmVmcmVzaGVkIGltcGxlbWVudGF0aW9uIG9mIDE2IGJpdCBuYXRpdmUgJiBhc3luY2hyb25vdXMgTUNJIGRyaXZlcgoJY29tbWFuZCAodGhyb3VnaCBtbXRhc2sudHNrKS4KCgkqIG11bHRpbWVkaWEvbWl4ZXIuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBhIGZldyBidWdzLiBTdGFydGVkIGltcGxlbWVudGluZyBtaXhlck1lc3NhZ2UgYXMgYSAzMiBiaXQKCWZ1bmN0aW9uIChubyBsb25nZXIgMTYgYml0KS4KCgkqIG11bHRpbWVkaWEvbWNpc3RyaW5nLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJSW1wbGVtZW50ZWQgbWNpRXhlY3V0ZS4KCgkqIGluY2x1ZGUvbXVsdGltZWRpYS5oLCBtdWx0aW1lZGlhL21jaS5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCB5aWVsZCBwcm9jIG1lbWJlcnMgdG8gbWNpIHN0cnVjdC4KCgkqIGluY2x1ZGUvbW1zeXN0ZW0uaDogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBtaXhlciBzcGVjZmljIGVycm9yIGNvZGVzLCBmaXhlZCB0eXBlIGluIGZ1bmN0aW9uIG5hbWUuCgoJKiB3aW5kb3dzL2RyaXZlci5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIHJldHVybiBjb2RlcyBmb3IgZGVmYXVsdCBkcml2ZXIgcHJvYy4KCgkqIGNvbnRyb2xzL2xpc3Rib3guYzogTGF3c29uIFdoaXRuZXkgPGxhd3Nvbl93aGl0bmV5QGp1bm8uY29tPgoJTWFkZSBMQl9HRVRDVVJTRUwgcmV0dXJuIGZvY3VzX2l0ZW0gaWYgbm8gaXRlbSBoYXMgYmVlbiBzZWxlY3RlZC4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6CglLYWxldmkgSiBIYXV0YW5pZW1pIDxvaDNmZ0BvaDN0ci5lbGUudHV0LmZpPgoJQWRkZWQgRmlubmlzaCBrZXlib2FyZCBsYXlvdXQuCgoJKiBtaXNjL21haW4uYywgd2luZG93cy94MTFkcnYvY2xpcGJvYXJkLmMsIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmMsIGdyYXBoaWNzL3dpbmcuYywgZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsIGluY2x1ZGUvd2luZS93aW51c2VyMTYuaCwgaW5jbHVkZS93aW51c2VyLmgsIGluY2x1ZGUveDExZHJ2Lmg6CglWZWtzbGVyIE1pY2hhZWwgPG12ZWtzbGVyQHRlY2h1bml4LnRlY2huaW9uLmFjLmlsPgoJUmVtb3ZlZCB3aW51c2VyMTYuaCBmcm9tIHgxMWRydi5oLgoKCSogaW5jbHVkZS93aW5zcG9vbC5oLCBtaXNjL3ByaW50ZHJ2LmM6CglLbGFhcyB2YW4gR2VuZCA8a2xhYXNAdmFuZ2VuZC5kZW1vbi5ubD4KCUltcGxlbWVudGF0aW9uIG9mIEVudW1QcmludGVyc0EsIGluZm8gbGV2ZWwgNCBhbmQgNS4KCgkqIHRvb2xzL2J1Z19yZXBvcnQucGw6IEFkYW0gU2FjYXJueSA8bWFnaWNib3hAYmVzdHdlYi5uZXQ+CglDaGVjayBpZiB0aGUgYnVpbGQgaXMgc3RyaXBwZWQsIGFuZCBkaWUgaWYgaXQgaXMuCglDaGVjayBmb3IgQmFzaCAyLjAsIGFuZCBpZiBzbyB1c2UgZGlmZmVyZW50IFNUREVSUi0+U1RET1VUIHJlZGlyY3RvcgoJKHRoYW5rcyBSeWFuIEN1bW1pbmchKS4KCgkqIHdpbmRvd3MvbWRpLmM6IFZla3NsZXIgTWljaGFlbCA8bXZla3NsZXJAdGVjaHVuaXgudGVjaG5pb24uYWMuaWw+CglGaXhlZCAicmVhY2hlZCBlbmQgb2Ygbm9uIHZvaWQuLi4iIHdhcm5pbmdzLgoKCSogZG9jdW1lbnRhdGlvbi9kZWJ1Z2dpbmc6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJTWVzc2FnZUJveDMyQSAtPiBNZXNzYWdlQm94QQoKCSogbG9hZGVyL21vZHVsZS5jLCByZWxheTMyL2tlcm5lbDMyLnNwZWM6CglTZXJnZXkgVHVyY2hhbm92IDx0dXJjaGFub3ZAdXNhLm5ldD4KCUltcGxlbWVudGF0aW9uIGZvciBGcmVlTGlicmFyeUFuZEV4aXRUaHJlYWQuCglNYWRlIEdldEJpbmFyeVR5cGUgPSBHZXRCaW5hcnlUeXBlQS4KCgkqIGluY2x1ZGUvdGFzay5oLCBsb2FkZXIvdGFzay5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzY2hlZHVsZXIvdGhyZWFkLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVJ1biBXaW4zMiBwcm9jZXNzZXMgaW4gdGhlaXIgb3duIHRocmVhZHMuCglQcm9jZXNzIGV4aXQgc2VxdWVuY2UgYWRhcHRlZC4KClN1biBNYXIgMjEgMTk6MjY6MjYgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNjaGVkdWxlci9zeXNkZXBzLmMsIHNjaGVkdWxlci90aHJlYWQuYywgaW5jbHVkZS90aHJlYWQuaCwgbG9hZGVyL21vZHVsZS5jLCBzY2hlZHVsZXIvY2xpZW50LmMsIHNjaGVkdWxlci9wcm9jZXNzLmM6CglDaGFuZ2VkIHByb2Nlc3MgaW5pdGlhbGlzYXRpb24gdG8gdXNlIHRoZSBuZXcgc2VydmVyIHJlcXVlc3RzLgoJU3RhcnRlZCB0byBtb3ZlIHRoZSBwcm9jZXNzIGluaXQgdG8gdGhlIHJpZ2h0IGNvbnRleHQsIG5vdCBmaW5pc2hlZCB5ZXQuCgoJKiBpbmNsdWRlL3NlcnZlci9vYmplY3QuaCwgaW5jbHVkZS9zZXJ2ZXIvcHJvY2Vzcy5oLCBpbmNsdWRlL3NlcnZlci9yZXF1ZXN0LmgsIGluY2x1ZGUvc2VydmVyL3RocmVhZC5oLCBzZXJ2ZXIvbWFpbi5jLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcmVxdWVzdC5jLCBzZXJ2ZXIvc29ja2V0LmMsIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RyYWNlLmMsIGluY2x1ZGUvc2VydmVyLmg6CglBZGRlZCBuZXdfcHJvY2VzcyBhbmQgaW5pdF9wcm9jZXNzIHJlcXVlc3QuCglTcGxpdCBvdXQgcHJvY2VzcyBjcmVhdGlvbiBmcm9tIHRocmVhZCBjcmVhdGlvbi4KCUNoYW5nZWQgc2VydmVyIGluaXRpYWxpc2F0aW9uIHRvIGVuc3VyZSB0aGF0IHdlIGFsd2F5cyBoYXZlIGEgY3VycmVudAoJdGhyZWFkLgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzogUm9iZXJ0IFBvdWxpb3QgPGtyeW5vc0BjbGljLm5ldD4KCU9uZSBzbWFsbCBlcnJvciBjb3JyZWN0ZWQgYW5kIHRoZSAxMDJ0aCBrZXkuLi4KCgkqIG1pc2MvY29tbS5jLCBpbmNsdWRlL2NvbW0uaDogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglNYWRlIGNvbW1lcnJvciBhbmQgZXZlbnRtYXNrIGxvY2FsIHRvIGVhY2ggcG9ydCAoZm9yIHdpbjE2KSwgbWFkZSB0aGUKCXdpbjE2IHJvdXRpbmVzIHVzZSBwb3J0IGluZGljZXMgaW5zdGVhZCBvZiBVTklYIGZkcyAodGhpcyBzaG91bGQgbWFrZQoJc29tZSBWaXN1YWwgQmFzaWMgc3R1ZmYgYW5kIHNpbWlsYXIgZ2FyYmFnZSBzdGFydCB3b3JraW5nKSwgbW92ZWQgc29tZQoJc3R1ZmYgYXJvdW5kICh3aW4xNiByb3V0aW5lcyBhdCB0b3Agb2YgZmlsZSwgd2luMzIgcm91dGluZXMgYXQKCWJvdHRvbSksIG1hZGUgYSBjb3VwbGUgb2Ygd2luMzIgcm91dGluZXMgdXNlIHdpbjMyIGhhbmRsZXMsIGFuZCBhZGRlZAoJYSBmZXcgaGludHMgYXMgdG8gaG93IHRvIGltcGxlbWVudCBhc3luY2hyb25vdXMgYnVmZmVycywgYmFzZWQgb24KCXdoaWNoIEVuYWJsZUNvbW1Ob3RpZmljYXRpb24gY2FuIGV2ZW50dWFsbHkgYmUgaW1wbGVtZW50ZWQuCgoJKiBpbmNsdWRlL3dpbnVzZXIuaDogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglGaXhlZCBwcm90b3R5cGVzIG9mIGEgY291cGxlIG9mIGNvbW0gcm91dGluZXMuCgoJKiBsb2FkZXIvbmUvbW9kdWxlLmM6IEFuZHJlYXMgTW9ociA8Y2lwYW04OTVAY2lwMS5pbmQudW5pLXN0dXR0Z2FydC5kZT4KCUZpeGVkIHR5cG8uCgoJKiB3aW5kb3dzL3dpbi5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglDbGVhciB1cGRhdGUgcmVnaW9uIGJlZm9yZSBXTV9OQ0RFU1RST1kuCgoJKiBpbmNsdWRlL2hlYXAuaCwgbWVtb3J5L2hlYXAuYywgcmVsYXkzMi91dHRodW5rLmMsIHdpbmRvd3MvcXVldWUuYzoKCUdvdCByaWQgb2YgU1lTVEVNX0xPQ0sgbWFjcm9zLgoKU2F0IE1hciAyMCAwNzoxODoyNiAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbWlzYy9tYWluLmM6IE5vIGxvbmdlciBuZWVkIHRvIGRlbGV0ZSBzeXN0ZW0gaGVhcCBjcml0aWNhbCBzZWN0aW9uLgoKRnJpIE1hciAxOSAxNzowNDoyNSAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglBZGRlZCBhIGNoZWNrIGZvciBkZXNrdG9wIGluIFNIR2V0RmlsZUluZm8uCgoJKiBtdWx0aW1lZGlhL21jaS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIHNvbWUgYnVncyBpbiBNQ0kgbWVzc2FnZSBtYXBwaW5nICgzMkEgPT4gMTYpLgoKCSogd2luZG93cy93aW4uYzogUGF2ZWwgUm9za2luIDxwYXZlbF9yb3NraW5AZ2VvY2l0aWVzLmNvbT4KCUZpeGVkIFdJTl9TZW5kRGVzdHJveU1zZy4KCgkqIGluY2x1ZGUvd2luc29jay5oOiBQYXZlbCBSb3NraW4gPHBhdmVsX3Jvc2tpbkBnZW9jaXRpZXMuY29tPgoJUmVtb3ZlZCBkZWZpbml0aW9ucyBmb3IgRklPTlJFQUQgYW5kIEZJT05CSU8uCgoJKiB3aW5kb3dzL2RyaXZlci5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVzIHNvbWUgcmV0dXJuIHZhbHVlcyBmb3IgRGVmRHJpdmVyUHJvYy4KCgkqIHByb2dyYW1zL3JlZ2FwaS9yZWdGaXhlci5wbDoKCVN5bHZhaW4gU3QuR2VybWFpbiA8c3lsdmFpbkBtYWNhZGFtaWFuLmNvbT4KCVJlbW92ZWQgdGhlIGNob3AgY29tbWFuZCB0aGF0IHdhcyB0aGVyZSB0byBnZXQgcmlkIG9mIGRvcyBeTS4KCVRoZSBzY3JpcHQgbm93IHByb2Nlc3Mgb25seSB1bml4IGZpbGUgZm9ybWF0LgoKCSogd2luZG93cy9kaWFsb2cuYzogQW5kcmVhcyBNb2hyIDxjaXBhbTg5NUBjaXAxLmluZC51bmktc3R1dHRnYXJ0LmRlPgoJSGlkZSBkaWFsb2cgd2luZG93cyBjcmVhdGVkIGJ5IENyZWF0ZURpYWxvZyogaW4gRW5kRGlhbG9nIGp1c3QgYXMKCVdpbmRvd3MgZG9lcy4KCgkqIG9sZS92YXJpYW50LmM6IFN0ZXBoYW5lIEx1c3NpZXIgPHN0ZXBoYW5lQG1hY2FkYW1pYW4uY29tPgoJU2V0IHR5cGUgb2YgZGVzdGluYXRpb24gdmFyaWFudCBpbiBWYXJpYW50Q2hhbmdlVHlwZUV4IGZ1bmN0aW9uLgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzoKCUJlcnRobyBTdHVsdGllbnMgPGJlcnRob0BwYW50ZXIuc29jaS5hYXUuZGs+CglGaXhlZCBEYW5pc2gga2V5Ym9hcmQgbGF5b3V0LgoKVGh1IE1hciAxOCAxNzozOTo1OCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogb2xlL2l0ZW1tb25pa2VyLmMsIG9sZS9vbGUyLmMsIG9sZS9vbGVmb250LmMsIHdpbmRvd3MvZGlucHV0LmMsIHdpbmRvd3MvaW5wdXQuYywgd2luZG93cy9rZXlib2FyZC5jLCB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy9wYWludGluZy5jLCB3aW5kb3dzL3F1ZXVlLmMsIHdpbmRvd3Mvc3lzY29sb3IuYywgd2luZG93cy9zeXNtZXRyaWNzLmMsIHdpbmRvd3MvdXNlci5jLCBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmMsIGZpbGVzL2Rvc19mcy5jLCBncmFwaGljcy9kZHJhdy5jLCBncmFwaGljcy9mb250ZW5naW5lLmMsIGluY2x1ZGUvd2luLmgsIGxvYWRlci9tYWluLmMsIGxvYWRlci9yZXNvdXJjZS5jLCBtaXNjL2x6ZXhwYW5kLmMsIG1pc2MvcmVnaXN0cnkuYywgbXNkb3MvaW50MTAuYywgbXVsdGltZWRpYS9pbml0LmMsIG9iamVjdHMvZW5obWV0YWZpbGUuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJTG90cyBvZiB3YXJuaW5nIGZpeGVkLCBvbmUgbWlzc2luZyBXSU5BUEkgaW4gZGRyYXcuYyBhZGRlZC4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzogU3lsdmFpbiBTdC5HZXJtYWluIDxzeWx2YWluQG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50cyArLy0sIFBnVXAvUGdEb3duLCBIb21lL0VuZCwgTGVmdC9SaWdodCwgVXAvRG93bi4KCgkqIHJlbGF5MzIvbXN2ZnczMi5zcGVjOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCW1zdmZ3MzIuc3BlYyBicm91Z2h0IHVwIHRvIGRhdGUgKGZvcmdvdCBpdCBpbiBsYXN0IG1zdmZ3MzIgcGF0Y2gpLgoKCSogcmVsYXkzMi9rZXJuZWwzMi5zcGVjLCBtaXNjL3Rvb2xoZWxwLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIE1vZHVsZTMyKiBzdHVicy4KCldlZCBNYXIgMTcgMTU6NTQ6NDQgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6CglCcnVubyBBZm9uc28gPGJydW5vLmFmb25zb0BjYW1vZXMucm5sLmlzdC51dGwucHQ+CglBZGRlZCBQb3J0dWd1ZXNlIGtleXRhYmxlLgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzogUm9iZXJ0IFBvdWxpb3QgPGtyeW5vc0BjbGljLm5ldD4KCUFkZGVkIENhbmFkaWFuIEZyZW5jaCBrZXlib2FyZCBsYXlvdXQuCgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOgoJSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglBZGRlZCBVSyBrZXlib2FyZCBsYXlvdXQuCgoJKiBtc2Rvcy9pbnQxMC5jLCBtc2Rvcy9pbnQxNi5jLCBtc2Rvcy9pbnQyMS5jLCBtc2Rvcy9pbnQyZi5jOgoJPHBhcmFub2lkMDdAaG90bWFpbC5jb20+CglGaXhlZC9pbXBsZW1lbnRlZCB2YXJpb3VzIGludGVycnVwdCBmdW5jdGlvbnMuCgoJKiBjb250cm9scy9tZW51LmMsIGRsbHMvc2hlbGwzMi9kYXRhb2JqZWN0LmMsIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvdGV4dC5jLCBpbmNsdWRlL3dpbmlvY3RsLmgsIHdpbjMyL2tlcm5lbDMyLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIHNvbWUgd2FybmluZ3MuIHJlbW92ZWQgc29tZSB1bm5lY2Nlc3NhcnkgaW5jbHVkZXMsIHJlbW92ZWQgb25lCglkaXJlY3QgV05EKiBhY2Nlc3MgaW4gY29udHJvbHMvbWVudS5jLgoKCSogd2luZG93cy93aW4uYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50ZWQgYSBtb3JlIGRlZmVuc2l2ZSB2ZXJzaW9uIG9mIFdJTl9TZW5kRGVzdHJveU1zZy4KCgkqIGluY2x1ZGUvTWFrZWZpbGUuaW46IEFsZXhhbmRlciBWLiBMdWt5YW5vdiA8bGF2QGxvbmcueWFyLnJ1PgoJSW5zdGFsbCBoZWFkZXJzIGZyb20gJChTUkNESVIpLgoKCSogaW5jbHVkZS93aW5lL29ial9iYXNlLmg6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJUmVtb3ZlZCB0aGUgb2Jzb2xldGUgSUNPTSBtYWNyb3MuCgoJKiBpbmNsdWRlL3Zmdy5oOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCU1vdmVkIHRoZSBBUElzIGNsb3NlciB0byB0aGUgY29ycmVzcG9uZGluZyBDT00gaW50ZXJmYWNlLCByZW1vdmVkIHR3bwoJZHVwbGljYXRlcyBhbmQgYWRkZWQgMi0zIG1hY3JvcyBmb3IgQS9XIEFQSXMuCgoJKiBtc2Rvcy9pbnQxNS5jOiA8cGFyYW5vaWQwN0Bob3RtYWlsLmNvbT4KCUFkZGVkIHNvbWUgc3R1YnMgZm9yIGludDE1IGZ1bmN0aW9ucy4KCgkqIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL3F1ZXVlLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUludGVyLXRocmVhZCBTZW5kTWVzc2FnZSgpIGJ1Z2ZpeGVzOgoJLSBJbnNlcnQgbmV3IG1lc3NhZ2UgdG8gYmUgcmVjZWl2ZWQgYXQgdGhlICplbmQqIG9mIHRoZSBTTV9QRU5ESU5HX0xJU1QuCgktIERvICpub3QqIHByb2Nlc3MgcmVjZWl2ZWQgbWVzc2FnZXMgaW4gUmVwbHlNZXNzYWdlKCkuCgktIENsZWFyIHRoZSBRU19TTVJFU1VMVCBmbGFnIG9ubHkgaW1tZWRpYXRlZGx5IGJlZm9yZSB3YWl0aW5nLgoKCSogb2xlL3N0b3JhZ2UzMi5jOiBUaHV5IE5ndXllbiA8dGh1eUBtYWNhZGFtaWFuLmNvbT4KCVJldHVybiBlcnJvciBpZiBub3QgYSB2YWxpZCBPTEUgY29tcG91bmQgZmlsZS4KCgkqIGRsbHMvdmVyc2lvbi9pbnN0YWxsLmM6IERvdWdsYXMgUmlkZ3dheSA8cmlkZ3dheUB3aW5laHEuY29tPgoJRml4IGNyYXNoIGlmIGxwdUN1ckRpckxlbiBvciBscHVEZXN0RGlyTGVuPT0wLgoKCSogbWlzYy9jZHJvbS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU1ha2UgY2Ryb20uYyBjb21waWxlIG9uIEZyZWVCU0QgKEZyZWVCU0QgZG9lcyBub3Qgc2VlbSB0byBoYXZlICpTRUVLLAoJc3RyYW5nZSkuCgpUdWUgTWFyIDE2IDE2OjI5OjI2IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL2Rvc2V4ZS5oLCBpbmNsdWRlL21vZHVsZS5oLCBpbmNsdWRlL3BlX2ltYWdlLmgsIGxvYWRlci9kb3MvbW9kdWxlLmMsIGxvYWRlci9tb2R1bGUuYywgbG9hZGVyL25lL21vZHVsZS5jLCBsb2FkZXIvcGVfaW1hZ2UuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJUGFzcyBDcmVhdGVQcm9jZXNzKCkgU0VDVVJJVFlfQVRUUklCVVRFUyB0aHJvdWdoIHRvIFBST0NFU1NfQ3JlYXRlKCkuCgoJKiBpbmNsdWRlL3Byb2Nlc3MuaCwgaW5jbHVkZS90aHJlYWQuaCwgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2NoZWR1bGVyL3RocmVhZC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglQYXNzIG5ldyBhcmd1bWVudHMgKHN1c3BlbmQvaW5oZXJpdCkgdG8gdGhlIHNlcnZlci4KCgkqIGluY2x1ZGUvc2VydmVyLmgsIGluY2x1ZGUvc2VydmVyL3RocmVhZC5oLCBzY2hlZHVsZXIvY2xpZW50LmMsIHNlcnZlci9yZXF1ZXN0LmMsIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RyYWNlLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUhhbmRsZSBzdXNwZW5kL3Jlc3VtZV90aHJlYWQgcmVxdWVzdHMgaW4gcGhhc2UgU1RBUlRJTkcgY29ycmVjdGx5LgoJU2V0IGluaXRpYWwgc3VzcGVuZCBjb3VudCBmb3IgdGhyZWFkcyBjcmVhdGVkIHdpdGggQ1JFQVRFX1NVU1BFTkRFRC4KCVNldCAnaW5oZXJpdGFibGUnIGZsYWcgZm9yIHByb2Nlc3MvdGhyZWFkIGhhbmRsZXMuCgoJKiBkbGxzL2NvbWN0bDMyL21vbnRoY2FsLmMsIGRsbHMvY29tY3RsMzIvbmF0aXZlZm9udC5jLCBkbGxzL2NvbWN0bDMyL3BhZ2VyLmMsIGRsbHMvY29tY3RsMzIvcHJvZ3Jlc3MuYywgZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYywgZGxscy9jb21jdGwzMi9yZWJhci5jLCBkbGxzL2NvbWN0bDMyL3N0YXR1cy5jLCBkbGxzL2NvbWN0bDMyL3RhYi5jLCBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYywgZGxscy9jb21jdGwzMi90b29sdGlwcy5jLCBkbGxzL2NvbWN0bDMyL3RyYWNrYmFyLmMsIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYywgZGxscy9jb21jdGwzMi91cGRvd24uYywgZGxscy9jb21jdGwzMi9hbmltYXRlLmMsIGRsbHMvY29tY3RsMzIvY29tYm9leC5jLCBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmMsIGRsbHMvY29tY3RsMzIvZGF0ZXRpbWUuYywgZGxscy9jb21jdGwzMi9mbGF0c2IuYywgZGxscy9jb21jdGwzMi9oZWFkZXIuYywgZGxscy9jb21jdGwzMi9ob3RrZXkuYywgZGxscy9jb21jdGwzMi9pcGFkZHJlc3MuYywgZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglSZW1vdmVkIG5vIGxvbmdlciBuZWNlc3Nhcnkgd2luLmggaW5jbHVkZSwgYWRkZWQgbm93IG5lY2Vzc2FyeSBvdGhlcgoJaW5jbHVkZXMgKHdpbi5oIHVzZWQgb25seSBieSBVUERPV04gbm93KS4KCgkqIG1pc2MvY29tbS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCWRlYnVnLmggbXVzdCBiZSBsYXN0LCBvciB3ZSBnZXQgRVJSKCkgbWFjcm8gcHJvYmxlbXMgYWdhaW4uCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2x0aXBzLmM6IEZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIGEgc2xpZ2h0IGJ1ZyB0aGF0IHdhcyBpbmNsdWRlZCBpbiB0aGUgY2hhbmdlIGZyb20gV05EIHB0ciB0bwoJaHduZCBsYXN0IHdlZWsuCgoJKiBsb2FkZXIvbWFpbi5jLCBtaXNjL2NhbGxiYWNrLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUZpeCBjb21waWxlciB3YXJuaW5ncy4KCgkqIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmMsIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYywgaW5jbHVkZS90cmVldmlldy5oOgoJU3lsdmFpbiBTdC5HZXJtYWluIDxzeWx2YWluQG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgc29tZSBncmFwaGljYWwgcHJvYmxlbXMgb2YgdGhlIHRyZWV2aWV3IGFuZCBhZGRlZCBzdXBwb3J0IExNQgoJY2xpY2sgb24gKy8tIHNpZ24gdG8gb3BlbiBhbmQgY2xvc2UuCglGaXhlZCBhIGJ1ZyBpbiBpbWFnZWxpc3Qgd2hlcmUgdGhlIGxhc3QgaW1hZ2UgY291bGQgbm90IGJlIGRpc3BsYXllZC4KCgkqIHdpbmRvd3MveDExZHJ2L2V2ZW50LmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUF2b2lkIHVubmVjZXNzYXJ5IGVycm9yIG1lc3NhZ2VzLgoKCSogd2luZG93cy9ob29rLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJSWdub3JlIEhJV09SRCBvZiBib29sZWFuIHJldHVybiB2YWx1ZXMgb2YgMTYtYml0IGhvb2sgcHJvY2VkdXJlcywgdG8KCW1hdGNoIGJ1Z2d5IFdpbmRvd3MgYmVoYXZpb3VyLgoKCSogZ3JhcGhpY3MvZGRyYXcuYzogTGlvbmVsIFVsbWVyIDx1bG1lckBkaXJlY3Rwcm92aWRlci5uZXQ+CglDb3JyZWN0ZWQgYnVnIGluIGVudW1lcmF0aW9uIGZ1bmN0aW9uLgoKCSogd2luZG93cy93aW4uYzogUGF2ZWwgUm9za2luIDxwYXZlbF9yb3NraW5AZ2VvY2l0aWVzLmNvbT4KCUZpeGVkIGJ1ZyBpbnRyb2R1Y2VkIGluIFdJTl9GaW5kV2luZG93LgoKCSogZGxscy9jb21jdGwzMi90YWIuYzogVGh1eSBOZ3V5ZW4gPHRodXlAbWFjYWRhbWlhbi5jb20+CgkwIGlzIGEgdmFsaWQgaW5kZXggZm9yIGEgdGFiIGl0ZW0uCglDcmVhdGVTb2xpZEJydXNoIHRha2VzIGEgQ09MT1JSRUYgYXMgYSBwYXJhbWV0ZXIuCglUYWIgY29udHJvbHMgd2VyZSBhbHdheXMgZGlzcGxheWVkIGluIHRoZSB0b3AgbGVmdCBjb3JuZXIuCgpNb24gTWFyIDE1IDE2OjE1OjE3IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3dpbmUvb2JqX2RyYWdkcm9wLmgsIGluY2x1ZGUvd2luZS9vYmpfaW5wbGFjZS5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglVcGRhdGVkIHRoZSBpbnRlcmZhY2VzIHRvIHVzZSB0aGUgbGF0ZXN0IElDT00gbWFjcm9zLgoKCSogZG9jdW1lbnRhdGlvbi9zdGF0dXMvbXVsdGltZWRpYTogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglVcGRhdGVkLgoKCSogaWYxNjMyL21tc3lzdGVtLnNwZWMsIGluY2x1ZGUvbW1zeXN0ZW0uaCwgaW5jbHVkZS9tdWx0aW1lZGlhLmgsIG11bHRpbWVkaWEvTWFrZWZpbGUuaW4sIG11bHRpbWVkaWEvbWNpLmMsIG11bHRpbWVkaWEvbWNpc3RyaW5nLmMsIG11bHRpbWVkaWEvbW1zeXN0ZW0uYywgcmVsYXkzMi93aW5tbS5zcGVjOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglNb3ZlZCBhbGwgTUNJIGludGVybmFsIGZ1bmN0aW9ucy92YXJpYWJsZXMvbWFjcm9zIHRvIG1jaS5jLgoJQ2hhbmdlZCBzb21lIGludGVyZmFjZSBuYW1lcy4KCgkqIGluY2x1ZGUvZGlnaXRhbHYuaCwgbXVsdGltZWRpYS9tY2lhdmkuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJTWFrZSB1c2Ugb2YgZGlnaXRhbHYuaCBmaWxlLgoKCSogbXVsdGltZWRpYS9pbml0LmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQ2hhbmdlZCBob3cgbGlzdCBvZiBsb2FkYWJsZSBNQ0kgZHJpdmVycyBpcyBvYnRhaW5lZC4KCgkqIGRvY3VtZW50YXRpb24va2V5Ym9hcmQ6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRGVzY3JpYmVzIGluIG5ld2JpZSB0ZXJtcyBob3cgdG8gYWRkIG5ldyBrZXlib2FyZCBsYXlvdXRzLgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglCZXR0ZXIgY29tbWVudHMsIGFuZCBhZGRlZCBBTlNJIGNvZGVwYWdlcyBpbiB0YWJsZS4KCVVTIGtleWJvYXJkIGNvbnRyaWJ1dGVkIGJ5IFV3ZSBCb25uZXMuCglGcmVuY2gga2V5Ym9hcmQgY29udHJpYnV0ZWQgYnkgRXJpYyBQb3VlY2guCglHZXJtYW4ga2V5Ym9hcmQgY29udHJpYnV0ZWQgYnkgVWxyaWNoIFdlaWdhbmQuCglEYW5pc2gga2V5Ym9hcmQgY29udHJpYnV0ZWQgYnkgQmVydGhvIFN0dWx0aWVucy4KCgkqIGRsbHMvY29tbWRsZy9jb2xvcmRsZy5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jLCBkbGxzL2NvbW1kbGcvZmluZGRsZy5jLCBkbGxzL2NvbW1kbGcvZm9udGRsZy5jLCBkbGxzL2NvbW1kbGcvZ2VuZXJpYy5jLCBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYywgaW5jbHVkZS9jb21tZGxnLmg6CglLbGFhcyB2YW4gR2VuZCA8a2xhYXNAdmFuZ2VuZC5kZW1vbi5ubD4KCS0gUmVpbXBsZW1lbnRhdGlvbiBvZiB0aGUgQ29tbURsZyBFeHRlbmRlZEVycm9yIG1lY2hhbmlzbSB1c2luZyBUTFMuCgktIFNvbWUgaGVhZGVyIGluY2x1c2lvbiBjbGVhbnVwLgoKCSogbXVsdGltZWRpYS9tY2ltaWRpLmMsIG11bHRpbWVkaWEvbWNpd2F2ZS5jLCBtdWx0aW1lZGlhL21taW8uYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQ29zbWV0aWMgZml4ZXMuCgoJKiBtdWx0aW1lZGlhL21jaWNkYS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCU1ha2VzIHVzZSBvZiBuZXcgQ0RBVURJT19TZWVrKCkgZnVuY3Rpb24uCgoJKiBtc2Rvcy9pbnQyZi5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVZhcmlvdXMgZml4ZXMgZm9yIE1TQ0RFWCB0cmFwcy4KCgkqIG1pc2MvY2Ryb20uYywgaW5jbHVkZS9jZHJvbS5oOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIG5ldyBmdW5jdGlvbiBDREFVRElPX1NlZWsoKS4KCgkqIGluY2x1ZGUvZHJpdmVyLmgsIHdpbmRvd3MvZHJpdmVyLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUJldHRlciAxNi8zMiBiaXQgZHJpdmVyIG1lc3NhZ2VzIG1hcHBpbmcgYW5kIGhhbmRsaW5nLgoJQmV0dGVyIHByb3RlY3Rpb24gYWdhaW5zdCBiYWQgaGFuZGxlcy4KCgkqIGluY2x1ZGUvcGVleGUuaCwgbG9hZGVyL3Jlc291cmNlLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVVzZSBNRVNTQUdFX1JFU09VUkNFXyogZGVmaW5lcyBmcm9tIFNESyBoZWFkZXJzLCB1cGRhdGVkIExvYWRNZXNzYWdlKgoJY29kZS4KCgkqIGluY2x1ZGUvTWFrZWZpbGUuaW46IE5pZWxzIEtyaXN0aWFuIEJlY2ggSmVuc2VuIDxua2JqQGltYWdlLmRrPgoJRml4ZWQgbWFrZSBpbnN0YWxsLgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpTdW4gTWFyIDE0IDE3OjI1OjMzIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3dpbi5oLCBpcGMvZGRlX3Byb2MuYywgbWlzYy9zcHkuYywgd2luZG93cy9jbGFzcy5jLCB3aW5kb3dzL2RjZS5jLCB3aW5kb3dzL2RlZmRsZy5jLCB3aW5kb3dzL2RlZnduZC5jLCB3aW5kb3dzL2RpYWxvZy5jLCB3aW5kb3dzL2RpbnB1dC5jLCB3aW5kb3dzL2ZvY3VzLmMsIHdpbmRvd3MvaW5wdXQuYywgd2luZG93cy9tZGkuYywgd2luZG93cy9ub25jbGllbnQuYywgd2luZG93cy9wYWludGluZy5jLCB3aW5kb3dzL3Byb3BlcnR5LmMsIHdpbmRvd3MvcXVldWUuYywgd2luZG93cy9zY3JvbGwuYywgd2luZG93cy93aW4uYywgd2luZG93cy93aW5wb3MuYywgd2luZG93cy93aW5wcm9jLmMsIHdpbmRvd3MveDExZHJ2L2NsaXBib2FyZC5jLCB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCB3aW5kb3dzL3gxMWRydi9tb3VzZS5jLCB3aW5kb3dzL3gxMWRydi93bmQuYywgY29udHJvbHMvYnV0dG9uLmMsIGNvbnRyb2xzL2NvbWJvLmMsIGNvbnRyb2xzL2Rlc2t0b3AuYywgY29udHJvbHMvZWRpdC5jLCBjb250cm9scy9pY29udGl0bGUuYywgY29udHJvbHMvbGlzdGJveC5jLCBjb250cm9scy9tZW51LmMsIGNvbnRyb2xzL3Njcm9sbC5jLCBjb250cm9scy9zdGF0aWMuYywgZGxscy9jb21jdGwzMi91cGRvd24uYywgZ3JhcGhpY3MvZGRyYXcuYywgaWYxNjMyL3RodW5rLmM6CglGcmFuY29pcyBCb2lzdmVydCA8ZnJhbmNvaXNAbWFjYWRhbWlhbi5jb20+CglNYWRlIGFjY2VzcyB0byB0aGUgd25kIHN0cnVjdCB0aHJlYWQtc2FmZS4KCgkqICovKjogSmltIEFzdG9uIDxhc3RvMDAwMUBhbGdvbnF1aW5jLm9uLmNhPgoJUmVuYW1lZCB3aW50eXBlcy5oIHRvIHdpbmRlZi5oLgoKCSogbWVtb3J5L2hlYXAuYzogTWFrZSB0aGUgc3lzdGVtIGhlYXAgY3JpdGljYWwgc2VjdGlvbiBnbG9iYWwuCgoJKiBNYWtlLnJ1bGVzLmluOgoJRml4ZWQgTWFrZWZpbGUgdXAtdG8tZGF0ZSBjaGVjayB0byBhdm9pZCByZWxpbmtpbmcgYWxsIHRoZSBvYmplY3QKCWZpbGVzLgoKCSogd2luZG93cy9kaW5wdXQuYzogUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglSZWltcGxlbWVudGVkIHNvbWUgY29kZSB3aXRob3V0IHVzaW5nIFgxMS4KCgkqIGdyYXBoaWNzL2RkcmF3LmMsIHJlbGF5MzIvZGRyYXcuc3BlYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQWRkZWQgZnVuY3Rpb25zIERpcmVjdERyYXdFbnVtZXJhdGVXIGFuZCBEaXJlY3REcmF3RW51bWVyYXRlRXhXLgoKCSogaW5jbHVkZS9wZWV4ZS5oLCBsb2FkZXIvcGVfaW1hZ2UuYzogVGhlb2RvcmUgUy4gSGV0a2UgPHRzaEBndGUubmV0PgoJQWRkZWQgdHJhY2luZyBmb3IgZGVsYXllZCBpbXBvcnRzIGFuZCByZW1vdmVkIHRoZSBmaXhtZS4KCgkqIGZpbGVzL2Rvc19mcy5jOiBQZXRlciBHYW50ZW4gPGdhbnRlbkB1bmktYnJlbWVuLmRlPgoJQmV0dGVyIGltcGxlbWVudGF0aW9uIG9mIEdldFNob3J0UGF0aE5hbWVBL1cuCgoJKiBtaXNjL3JlZ2lzdHJ5LmMsIHdpbmUuaW5pOiBOYXRoYW4gWm9yaWNoIDx3ZmlsYXJkb0BmdXNlLm5ldD4KCUFsbG93IHRoZSBmaWxlIG5hbWVzIGFuZCBwYXRocyBmb3IgdGhlIHJlZ2lzdHJ5IGZpbGVzICh1c2VyLnJlZyBhbmQKCXN5c3RlbS5yZWcpIHRvIGJlIHNwZWNpZmllZCBpbiBhIFtSZWdpc3RyeV0gc2VjdGlvbiBvZiB3aW5lLmluaSBvcgoJb3RoZXIgY29uZmlnIGZpbGUuCgoJKiBtZW1vcnkvc3RyaW5nLmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJRml4IE9lbVRvQW5zaUJ1ZmYgZm9yIHJlYWwgV2luMzEgYmVoYXZpb3IuCgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUZpcnN0IGF0dGVtcHQgYXQgc3VwcG9ydGluZyBkaWZmZXJlbnQga2V5Ym9hcmQgbGF5b3V0cyB3aXRoIHRoZWlyCgljb3JyZWN0IHNjYW5jb2RlIG1hcHBpbmcuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgcHJvZ3JhbXMvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3JlZ2FwaS8uY3ZzaWdub3JlLCBwcm9ncmFtcy9yZWdhcGkvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3JlZ2FwaS9SRUFETUUsIHByb2dyYW1zL3JlZ2FwaS9yZWdGaXhlci5wbCwgcHJvZ3JhbXMvcmVnYXBpL3JlZ1Jlc3RvcmVyLnBsLCBwcm9ncmFtcy9yZWdhcGkvcmVnU2V0LnNoLCBwcm9ncmFtcy9yZWdhcGkvcmVnYXBpLmM6CglTeWx2YWluIFN0Lkdlcm1haW4gPHN5bHZhaW5AbWFjYWRhbWlhbi5jb20+CglBZGRlZCBjb21tYW5kIGxpbmUgdG9vbCB0byBhY2Nlc3MgdGhlIHJlZ2lzdHJ5LgoKCSogcmMvd2luZXJjLmM6IEZpeGVkIGNvbXBpbGF0aW9uLgoKCSogcmMvLmN2c2lnbm9yZTogUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglJZ25vcmUgZ2VuZXJhdGVkIGZpbGVzLgoKCSogcHJvZ3JhbXMvbm90ZXBhZC9sY2MuaDogRml4ZWQgbWFrZSBkZXBlbmQuCgoJKiBvbGUvb2xlMi5jLCBvbGUvb2xlZm9udC5jLCBpbmNsdWRlL29sZS5oLCBpbmNsdWRlL29sZTIuaCwgaW5jbHVkZS9vbGVhdXRvLmgsIGluY2x1ZGUvb2xlY3RsLmgsIGluY2x1ZGUvd2luZS9vYmpfY29udHJvbC5oLCBpbmNsdWRlL3dpbmUvb2JqX2RhdGFvYmplY3QuaCwgaW5jbHVkZS93aW5lL29ial9kcmFnZHJvcC5oLCBpbmNsdWRlL3dpbmUvb2JqX2lucGxhY2UuaCwgaW5jbHVkZS93aW5lL29ial9tb25pa2VyLmgsIGluY2x1ZGUvd2luZS9vYmpfb2xlYXV0LmgsIGluY2x1ZGUvd2luZS9vYmpfb2xlZm9udC5oLCBpbmNsdWRlL3dpbmUvb2JqX29sZW9iai5oLCBpbmNsdWRlL3dpbmUvb2JqX29sZXVuZG8uaCwgaW5jbHVkZS93aW5lL29ial9vbGV2aWV3LmgsIGluY2x1ZGUvd2luZS9vYmpfcGljdHVyZS5oLCBpbmNsdWRlL3dpbmUvb2JqX3NoZWxsbGluay5oLCBpbmNsdWRlL3dpbmUvb2JqX3N0b3JhZ2UuaCwgaW5jbHVkZS93aW5lcnJvci5oLCBpbmNsdWRlL3dpbmdkaS5oLCBpbmNsdWRlL3dpbnNvY2suaCwgaW5jbHVkZS93aW51c2VyLmgsIGluY2x1ZGUvd3R5cGVzLmg6CglQYXVsIFF1aW5uIDxwYXVscUBsaW51eG1hc3Rlci5odW5ncnljYXRzLm9yZz4KCU1hbnkgbmV3IGRlZmluZXMsIGFuZCBzdHJ1Y3RzIHRvIGhlbHAgY29tcGlsZSBNRkMuIEFzIHdlbGwgYXMgYSBmZXcKCU9MRSBjb3JyZWN0aW9ucyBmcm9tIGVhcmxpZXIuCgoJKiBsb2FkZXIvbmUvbW9kdWxlLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglNYWtlIEdldE1vZHVsZUhhbmRsZTE2IG9ubHkgbG9vayBmb3IgbW9kdWxlIG5hbWVzLCBub3QgcGF0aCBuYW1lcy4KCgkqIG1zZG9zL2ludDEwLmM6IEplc3MgSGFhcyA8ZGVzbW9rZUBob3RtYWlsLmNvbT4KCUFkZGVkIHNvbWUgbW9yZSB2Z2EgdmlkZW8gbW9kZXMuCgoJKiB3aW5kb3dzL3gxMWRydi93bmQuYzogUGF2ZWwgUm9za2luIDxwYXZlbF9yb3NraW5AZ2VvY2l0aWVzLmNvbT4KCVByZXZlbnQgWDExIGVycm9ycyB3aGVuIFhDcmVhdGVXaW5kb3cgaXMgY2FsbGVkIHdpdGggemVybyB3aWR0aCBvcgoJaGVpZ2h0LgoKCSogb2JqZWN0cy9tZXRhZmlsZS5jOiBDYW9sYW4gTWNOYW1hcmEgPENhb2xhbi5NY05hbWFyYUB1bC5pZT4KCUFkZGVkIG1ldGFmaWxlIHN1cHBvcnQgZm9yIEV4dEZsb29kRmlsbC4KCgkqIGNvbnRyb2xzL2J1dHRvbi5jOgoJRGlyayBUaGllcmJhY2ggPHRoaWVyYmFjaEBtYXRoZW1hdGlrLnR1LWRhcm1zdGFkdC5kZT4KCVBhaW50IGdyYXkgdGV4dCBvbiBncmF5IGJhY2tncm91bmQgaW4gY2hlY2tib3hlcy9yYWRpb2J1dHRvbnMgYnkKCXN0aXBwbGluZy4gQWxzbyBjaGFuZ2VkIHRoZSBicnVzaCB1c2VkIGluIHRoaXMgY2FzZSB0byBnaXZlIGJldHRlcgoJcmVhZGFiaWxpdHkgd2l0aCBYIGZvbnRzLgoKCSogaW5jbHVkZS9kZWJ1Z2RlZnMuaCwgaW5jbHVkZS90YXBpLmgsIG1pc2MvQXR0aWMvdGFwaTMyLmMsIG1pc2MvTWFrZWZpbGUuaW4sIHJlbGF5MzIvdGFwaTMyLnNwZWMsIE1ha2VmaWxlLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy9NYWtlZmlsZS5pbiwgZGxscy90YXBpMzIvLmN2c2lnbm9yZSwgZGxscy90YXBpMzIvTWFrZWZpbGUuaW4sIGRsbHMvdGFwaTMyL2Fzc2lzdGVkLmMsIGRsbHMvdGFwaTMyL2xpbmUuYywgZGxscy90YXBpMzIvcGhvbmUuYywgaW5jbHVkZS9kZWJ1Zy5oOgoJQW5kcmVhcyBNb2hyIDxjaXBhbTg5NUBjaXAxLmluZC51bmktc3R1dHRnYXJ0LmRlPgoJSW1wbGVtZW50ZWQgKG5lYXJseSkgYWxsIFRBUEkgZnVuY3Rpb25zIGFzIHN0dWJzLgoKCSogaW5jbHVkZS93aW5lL3dpbnVzZXIxNi5oLCBtaXNjL2NvbW0uYywgZmlsZXMvZG9zX2ZzLmMsIGluY2x1ZGUvd2luYmFzZS5oOgoJTWljaGFlbCBNY0Nvcm1hY2sgPE1pY2hhZWwuTWNDb3JtYWNrQGFsY2F0ZWwuY29tLmF1PgoJQmFzaWMgc3VwcG9ydCBmb3IgV0lOMzIgc2VyaWFsIGNvbW11bmljYXRpb25zIEFQSS4KCU1vZGlmeSBET1NGU19PcGVuRGV2aWNlIHRvIGFsbG93IG9wZW5pbmcgb2YgQ09NIHBvcnRzLgoJQ2hhbmdlIFdpbjMyIGNvbW0gZnVuY3Rpb25zIHRvIGFjY2VwdCBmaWxlIGhhbmRsZS4KCUFkZCBkZWNsYXJhdGlvbiBvZiBDT01TVEFUMzIgc3RydWN0dXJlLgoKCSogZ3JhcGhpY3MvdmdhLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRml4ZWQgYSBzaWxseSBWR0EtZW11bGF0aW9uIHBhbGV0dGUgYnVnLgoKCSogbXNkb3MvaW50MTAuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglGaXhlZCBhIGNvdXBsZSBvZiB1Z2x5IHdhcm5pbmdzIChjYXVzZWQgYnkgdWdseSBlcnJvcnMpLgoKCSogbXNkb3MvZG9zbWVtLmM6IEFuZHJlYXMgTW9ociA8Y2lwYW04OTVAY2lwMS5pbmQudW5pLXN0dXR0Z2FydC5kZT4KCUJ1ZyBmaXguCgoJKiBkbGxzL3NoZWxsMzIvYnJzZm9sZGVyLmMsIGRsbHMvc2hlbGwzMi9jb250bWVudS5jLCBkbGxzL3NoZWxsMzIvZGF0YW9iamVjdC5jLCBkbGxzL3NoZWxsMzIvZW51bWlkbGlzdC5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsIGRsbHMvc2hlbGwzMi9zaGVsbGd1aWQuYywgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jLCBpbmNsdWRlL3NobGd1aWQuaCwgaW5jbHVkZS9zaGxvYmouaCwgaW5jbHVkZS93aW5lL29ial9lbnVtaWRsaXN0LmgsIGluY2x1ZGUvd2luZS9vYmpfc2hlbGxmb2xkZXIuaCwgb2xlL2d1aWQuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJLSBJU2hlbGxGb2xkZXIgYW5kIElFbnVtSURMaXN0IGFyZSB1c2luZyB0aGUgbmV3IENPTSBoZWFkZXJzCgktIGZpeGVkIHNvcnQgb3JkZXIgZm9yIGZvbGRlcnMgYW5kIGRyaXZlcwoKCSogUkVBRE1FOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUNvcnJlY3RlZCBsb2NhdGlvbiBvZiBGQVEuCgoJKiBtc2Rvcy9pbnQyMS5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUZ1bGx5IGltcGxlbWVudGVkIERpcmVjdCBDb25zb2xlIElucHV0LgoKU2F0IE1hciAxMyAxODoyMDoyNyAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy9xdWV1ZS5jLCBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmMsIGlmMTYzMi90aHVuay5jLCBzY2hlZHVsZXIvc3lzZGVwcy5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCBuZXdseSBpbnRyb2R1Y2VkIGFuZCBzb21lIGxlZnRvdmVyIHdhcm5pbmdzLgoKCSogaW5jbHVkZS93aW5nZGkuaDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglJdCBpcyBub3cgcG9zc2libGUgdG8gdXNlIHRoZSBzdGFuZGFyZCBtYWNyb3MgZm9yIEdldFRleHRFeHRlbnRQb2ludAoJYW5kIEdldFRleHRFeHRlbnRQb2ludDMyLgoKCSogaW5jbHVkZS9wcnNodC5oOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCUZpeGVkIHNvbWUgU2VuZE1lc3NhZ2UzMkEgdGhhdCBlc2NhcGVkIHRoZSByZW5hbWluZy4KCgkqIGluY2x1ZGUvb2xlMi5oOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCU9uIHdpbmRvd3Mgb2xlMi5oIGluY2x1ZGVzIG9sZWF1dG8uaCBhbmQgc29tZSBwcm9ncmFtcyBkZXBlbmQgb24gdGhpcy4KCgkqIGluY2x1ZGUvb2xlYXV0by5oLCBvbGUvb2xlMmRpc3AuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglGaXhlcyBpbiB0aGUgU3lzQWxsb2NTdHJpbmcgZnVuY3Rpb25zIHByb3RvdHlwZXMuIEl0J3MgbW9zdGx5ICdjb25zdCcKCXByb2JsZW1zIHRoYXQgcHJldmVudCByZWd1bGFyIGNvZGUgZnJvbSBjb21waWxpbmcuCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jLCBncmFwaGljcy94MTFkcnYvb2VtYml0bWFwLmMsIGluY2x1ZGUvYml0bWFwcy9BdHRpYy9vYm1fY2Ryb20sIGluY2x1ZGUvYml0bWFwcy9BdHRpYy9vYm1fZHJpdmUsIGluY2x1ZGUvYml0bWFwcy9BdHRpYy9vYm1fZm9sZGVyLCBpbmNsdWRlL2JpdG1hcHMvQXR0aWMvb2JtX2ZvbGRlcjIsIGluY2x1ZGUvYml0bWFwcy9BdHRpYy9vYm1faGFyZGRpc2ssIGluY2x1ZGUvYml0bWFwcy9vaWNfY2Ryb20sIGluY2x1ZGUvYml0bWFwcy9vaWNfZmxvcHB5LCBpbmNsdWRlL2JpdG1hcHMvb2ljX2ZvbGRlciwgaW5jbHVkZS9iaXRtYXBzL29pY19mb2xkZXIyLCBpbmNsdWRlL2JpdG1hcHMvb2ljX2hkaXNrLCBpbmNsdWRlL2JpdG1hcHMvb2ljX25ldHdvcmssIGluY2x1ZGUvd2ludXNlci5oOgoJUGF2ZWwgUm9za2luIDxwYXZlbF9yb3NraW5AZ2VvY2l0aWVzLmNvbT4KCUZpbGUgb3BlbiBkaWFsb2cgbm93IHVzZXMgaWNvbnMgaW5zdGVhZCBvZiBiaXRtYXBzLgoKCSogaW5jbHVkZS92ZncuaDogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglVcGRhdGVkIEFWSSogY2xhc3MgaW50ZXJmYWNlIHRvIG5ldyBJQ09NXyBtZXRob2RzLgoKCSogbXVsdGltZWRpYS9tc3ZpZGVvLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJU29tZSBmaXhlcyBhbmQgYWRkaXRpb25zLgoKCSogZGxscy9hdmlmaWwzMi8uY3ZzaWdub3JlLCBkbGxzL2F2aWZpbDMyL01ha2VmaWxlLmluLCBkbGxzL2F2aWZpbDMyL2F2aWZpbGUuYywgaW5jbHVkZS9kZWJ1Zy5oLCBpbmNsdWRlL2RlYnVnZGVmcy5oLCByZWxheTMyL2F2aWZpbDMyLnNwZWMsIE1ha2VmaWxlLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy9NYWtlZmlsZS5pbjoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJU3RhcnRlZCBvbiBhdmlmaWwzMiBpbXBsZW1lbnRhdGlvbiAob25seSBzdHVicyBjdXJyZW50bHkpLgoKCSogZ3JhcGhpY3MvcGFpbnRpbmcuYzogUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglSZWltcGxlbWVudGVkIERyYXdGb2N1c1JlY3Qgd2l0aG91dCB1c2luZyBYMTEuCgoJKiBpbmNsdWRlL21pc2NlbXUuaCwgbXNkb3MvZG9zbWVtLmMsIG1zZG9zL2ludDEwLmM6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglJbXBsZW1lbnRlZCBtb2RlIHNldHRpbmcgdGhpbmdzIGFzIHdlbGwgYXMgVkVTQSBhZGRpdGlvbnMgYW5kIG90aGVyCgl0aGluZ3MuIENsZWFuZWQgdXAgRE9TTUVNX0Jpb3NEYXRhIGhhbmRsaW5nLgoKCSogaW5jbHVkZS93aW5lL29ial9vbGVmb250LmgsIG9sZS9vbGVmb250LmM6CglGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRlZCB0aGUgSVBlcnNpc3RTdHJlYW0gaW50ZXJmYWNlIG9uIHRoZSBPTEUgZm9udCBvYmplY3QuCgoJKiBtaXNjZW11L2VtdWxhdGUuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCU1ha2UgZnVuY3Rpb24gQlg9NiByb3VuZCBTVDAgdG8gaW50ZWdlci4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaCwgaW5jbHVkZS93aW5nZGkuaDogUGF1bCBRdWlubiA8cGF1bHFAY29yZWwuY2E+CglBZHJpYW4gVGh1cnN0b24gPGFkcmlhbnRAY29yZWwuY2E+CgktIENoYW5nZWQgTFZNX1NFVElURU1QT1NJVElPTiAtPiBMVk1fU0VUSVRFTVBPU0lUSU9OMzIKCSAgICAgICAgICBMVk1fU0VUSVRFTVBPU0lUSU9OMTYgLT4gTFZNX1NFVElURU1QT1NJVElPTgoJLSBBZGRlZCBzb21lIG1pc3Npbmcgc3RydWN0dXJlcyBhbmQgZGVmaW5pdGlvbnMgdG8gd2luZ2RpLmgKCS0gQWRkZWQgcHJvcGVyIGRlZmluZXMgZm9yIEdldENoYXJXaWR0aHNYWFgKCS0gQWRkZWQgYysrIHByb3RlY3Rpb24gdG8gd2luZ2RpLmgKCgkqIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYywgZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmMsIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmMsIGluY2x1ZGUvc2hlbGwuaCwgcmVsYXkzMi9zaGVsbDMyLnNwZWM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCS0gbW9zdGx5IGNsZWFudXAgYWZ0ZXIgdGhlIHJlbmFtaW5nCgktIGltcGxlbWVudGVkIFNISUxDcmVhdGVGcm9tUGF0aAoJLSBzbWFsbCBjaGFuZ2VkIHRvIFNIR2V0RmlsZUluZm8KCgkqIGluY2x1ZGUvcHJzaHQuaCwgaW5jbHVkZS93aW51c2VyLmg6CglCZXJ0aG8gU3R1bHRpZW5zIDxiZXJ0aG9AcGFudGVyLnNvY2kuYWF1LmRrPgoJQ2hhbmdlZCB0aGUgRExHVEVNUExBVEUgYW5kIERMR0lURU1URU1QTEFURSB0eXBlcyB0byBhZGhlcmUgdG8gdGhlIEFXCglzdHJ1Y3R1cmUgZm9yIGNvbXBhdGliaWxpdHkuCgoJKiBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYywgaW5jbHVkZS9jZGVyci5oLCBpbmNsdWRlL2NvbW1kbGcuaCwgZGxscy9jb21tZGxnL2NvbG9yZGxnLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnLmMsIGRsbHMvY29tbWRsZy9mb250ZGxnLmM6CglCZXJ0aG8gU3R1bHRpZW5zIDxiZXJ0aG9AcGFudGVyLnNvY2kuYWF1LmRrPgoJTW92ZWQgZXJyb3IgY29kZXMgdG8gY2RlcnIuaC4KCgkqIGxvYWRlci9tb2R1bGUuYzogUGV0ZXIgR2FudGVuIDxnYW50ZW5AdW5pLWJyZW1lbi5kZT4KCUZpeCBDcmVhdGVQcm9jZXNzIHRvIGhhbmRsZSBscENvbW1hbmRsaW5lIGJldHRlci4KCgkqIHdpbjMyL2luaXQuYzogUGV0ZXIgR2FudGVuIDxnYW50ZW5AdW5pLWJyZW1lbi5kZT4KCUNoYW5nZSBHZXRTdGFydHVwSW5mb0EvVyB0byByZXR1cm4gdGhlIHJlYWwgU3RhcnR1cEluZm8uCgoJKiB3aW5kb3dzL21kaS5jOiBHdXkgQWxiZXJ0ZWxsaSAgPDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+PgoJSGFuZGxlIG51bGwgd25kUHRyIGZvciBtZGkgd2luZG93LgoKCSogaW5jbHVkZS93aW5iYXNlLmg6IERhdmUgUGlja2xlcyA8ZGF2ZXBAbnVnYXRlLmRlbW9uLmNvLnVrPgoJRml4ZWQgYSBjb3VwbGUgb2YgbWlzc2luZyAjZGVmaW5lcyBmb3IgV2luMzIgQVBJIGZ1bmN0aW9ucyB3aXRoCglBU0NJSS9Vbmljb2RlIHZlcnNpb25zLgoKCSogd2luMzIvbmV3Zm5zLmMsIGlmMTYzMi9rZXJuZWwuc3BlYywgaWYxNjMyL3RodW5rLmMsIGlmMTYzMi93cHJvY3Muc3BlYywgaW5jbHVkZS9jYWxsYmFjay5oLCBtaXNjL2NhbGxiYWNrLmMsIHJlbGF5MzIvTWFrZWZpbGUuaW4sIHJlbGF5MzIvdXR0aHVuay5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglJbXBsZW1lbnRlZCBVVFJlZ2lzdGVyIGFuZCBVVFVuUmVnaXN0ZXIuCgoJKiBpZjE2MzIvZGRlbWwuc3BlYywgaW5jbHVkZS9kZGVtbC5oLCBpbmNsdWRlL3dpbm50LmgsIG1pc2MvZGRlbWwuYywgcmVsYXkzMi91c2VyMzIuc3BlYzoKCTxrZWl0aF9tQHN3ZWVuZXkuZGVtb24uY28udWs+CglBZGRlZCBjb2RlZCBzdHVicyBmb3IgRGRlUXVlcnlDb252SW5mbyAoMTYgJiAzMiBiaXQpLCBEZGVBZGREYXRhICgzMgoJYml0KSwgRGRlQWJhbmRvblRyYW5zYWN0aW9uICgzMiBiaXQpLCBEZGVJbXBlcnNvbmF0ZUNsaWVudCAoMzIpCglEZGVTZXRRdWFsaXR5T2ZTZXJ2aWNlLCBEZGVTZXRVc2VySGFuZGxlLgoJQ29ycmVjdGVkIGhlYXAgaGFuZGxpbmcgaW4gRGRlSW5pdGlhbGl6ZVcsIHJlZmluZWQgQ3JlYXRlTXV0ZXggZXJyb3IKCWhhbmRsaW5nLgoJR2VuZXJhbCB0aWR5aW5nLgoKCSogaWYxNjMyL29sZWNsaS5zcGVjLCBpbmNsdWRlL29sZS5oLCBvbGUvb2xlY2xpLmM6CglQYXZlbCBSb3NraW4gPHBhdmVsX3Jvc2tpbkBnZW9jaXRpZXMuY29tPgoJQWRkZWQgcHJvdG90eXBlcyBmb3IgT2xlUXVlcnlMaW5rRnJvbUNsaXAsIE9sZVF1ZXJ5Q3JlYXRlRnJvbUNsaXAsCglPbGVDcmVhdGVMaW5rRnJvbUNsaXAsIE9sZUNyZWF0ZUZyb21DbGlwLCBPbGVRdWVyeVR5cGUsCglPbGVSZXZlcnRDbGllbnREb2MsIE9sZUVudW1PYmplY3RzLgoKCSogcmVsYXkzMi9vbGVjbGkzMi5zcGVjOiBQYXZlbCBSb3NraW4gPHBhdmVsX3Jvc2tpbkBnZW9jaXRpZXMuY29tPgoJRGVmaW5pdGlvbiBmb3IgT2xlQ3JlYXRlTGlua0Zyb21DbGlwIHdhcyBpbmNvcnJlY3QuCgoJKiBsb2FkZXIvcmVzb3VyY2UuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglNYXNrIG91dCB0aGUgdXBwZXIgMTIgYml0cyBmcm9tIHRoZSByZXNvdXJjZWlkLCBqdXN0IGxpa2Ugd2luOTUgZG9lcy4KCgkqIEJVR1M6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJVXBkYXRlZCBidWcgbGlzdCBieSBteSBrbm93bGVkZ2Ugb2YgdGhlbS4KCgkqIG9sZS9zdG9yYWdlMzIuYzogVGh1eSBOZ3V5ZW4gPHRodXlAbWFjYWRhbWlhbi5jb20+CglTdGdDcmVhdGVEb2NmaWxlIGFjY2VwdHMgTlVMTCBhcyBhIGZpbGUgbmFtZS4KCgkqIG9iamVjdHMvbWV0YWZpbGUuYzogQ2FvbGFuIE1jTmFtYXJhIDxDYW9sYW4uTWNOYW1hcmFAdWwuaWU+CglBZGRlZCBzdXBwb3J0IGZvciBhbHRlcm5hdGUgRElCQklUQkxUIGxheW91dC4KCgkqIGRlYnVnZ2VyL21zYy5jOiBTZXJnZXkgVHVyY2hhbm92IDx0dXJjaGFub3ZAdXNhLm5ldD4KCUJ1ZmZlciBzaXplIGJ1ZyBpbiBMb2NhdGVEZWJ1Z0luZm9GaWxlLgoKCSogZ3JhcGhpY3MvZGRyYXcuYzogQW5kcmVhcyBNb2hyIDxjaXBhbTg5NUBjaXAxLmluZC51bmktc3R1dHRnYXJ0LmRlPgoJSW1wcm92ZWQgImVycm9yIiBtZXNzYWdlIHJlYWRhYmlsaXR5LgoKCSogc2VydmVyL3Byb2Nlc3MuYzogRml4ZWQgcHJvY2Vzc19zaWduYWxlZCAodGhhbmtzIHRvIFV3ZSBCb25uZXMpLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBGaXhlZCBtYWtlIGRlcGVuZAoKRnJpIE1hciAxMiAxNzo0Mjo1MCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jb21jdGwzMi9hbmltYXRlLmMsIGRsbHMvY29tY3RsMzIvY29tYm9leC5jLCBkbGxzL2NvbWN0bDMyL2RhdGV0aW1lLmMsIGRsbHMvY29tY3RsMzIvZmxhdHNiLmMsIGRsbHMvY29tY3RsMzIvaGVhZGVyLmMsIGRsbHMvY29tY3RsMzIvaG90a2V5LmMsIGRsbHMvY29tY3RsMzIvaXBhZGRyZXNzLmMsIGRsbHMvY29tY3RsMzIvbW9udGhjYWwuYywgZGxscy9jb21jdGwzMi9uYXRpdmVmb250LmMsIGRsbHMvY29tY3RsMzIvcGFnZXIuYywgZGxscy9jb21jdGwzMi9yZWJhci5jLCBkbGxzL2NvbWN0bDMyL3N0YXR1cy5jLCBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYywgZGxscy9jb21jdGwzMi90b29sdGlwcy5jLCBkbGxzL2NvbWN0bDMyL3RyYWNrYmFyLmMsIGluY2x1ZGUvaXBhZGRyZXNzLmgsIGluY2x1ZGUvdXBkb3duLmg6CglFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJUmVwbGFjZWQgZGlyZWN0IGFjY2VzcyB0byB0aGUgV05EIHN0cnVjdHVyZSBieSBjb3JyZXNwb25kaW5nIGNhbGxzIHRvCglXaW4zMiBmdW5jdGlvbnMuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmMsIGRsbHMvY29tY3RsMzIvcHJvZ3Jlc3MuYywgZGxscy9jb21jdGwzMi91cGRvd24uYywgaW5jbHVkZS9jb21tY3RybC5oOgoJRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUZpeGVkIHNvbWUgYnVncyBpbnRyb2R1Y2VkIGJ5IHRoZSBhdXRvbWF0ZWQgcmVuYW1pbmcuCgoJKiByZXNvdXJjZXMvLmN2c2lnbm9yZTogQWRkZWQgc3lzcmVzX1J1LnMKCgkqIGRsbHMvY29tY3RsMzIvaGVhZGVyLmMsIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYywgaW5jbHVkZS9jb21tY3RybC5oLCBpbmNsdWRlL2xpc3R2aWV3Lmg6CglMdWMgVG91cmFuZ2VhdSA8bHVjQG1hY2FkYW1pYW4uY29tPgoJQ2hhbmdlZCB0aGUgbGlzdHZpZXcgY29udHJvbCB0byBhZGQgdGhlIHJlcG9ydCB2aWV3IGFuZCBmaXggc29tZSBidWdzCglmb3IgdGhlIGxpc3Qgdmlldy4KCgkqIG1pc2Mvc2hlbGwuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglSZW1vdmVkIHVzZSBvZiBXTkQgc3RydWN0LgoKCSogZGxscy9udGRsbC9ydGxzdHIuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCAjaWZkZWYgSEFWRV9XQ1RZUEVfSC4KCgkqIGRsbHMvY29tY3RsMzIvdGFiLmM6IFRodXkgTmd1eWVuIDx0aHV5QG1hY2FkYW1pYW4uY29tPgoJUmVtb3ZlZCBkaXJlY3QgYWNjZXNzIHRvIHRoZSBXTkQgc3RydWN0LgoKCSogd2luZG93cy93aW5wcm9jLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTWVzc2FnZSB0cmFuc2xhdGlvbiBmb3IgV01fV0lOSU5JQ0hBTkdFLgoKCSogd2luZG93cy9ub25jbGllbnQuYzogUGF2ZWwgUm9za2luIDxwYXZlbF9yb3NraW5AZ2VvY2l0aWVzLmNvbT4KCW9ibV9jbG9zZWRfOTUgc2hvdWxkIG5vdCBiZSBkcmF3biBpbnZlcnRlZC4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzogU3lsdmFpbiBTdC5HZXJtYWluIDxzeWx2YWluQG1hY2FkYW1pYW4uY29tPgoJUmVtb3ZlZCBkaXJlY3QgYWNjZXNzIHRvIHRoZSBXTkQgc3RydWN0LgoKCSogb2xlL3N0Z19iaWdibG9ja2ZpbGUuYywgb2xlL3N0b3JhZ2UzMi5jLCBvbGUvc3RvcmFnZTMyLmg6CglUaHV5IE5ndXllbiA8dGh1eUBtYWNhZGFtaWFuLmNvbT4KCUltcHJvdmVkIHBlcmZvcm1hbmNlLgoKCSogd2luZG93cy9kY2UuYzogU3RlcGhhbmUgTHVzc2llciA8U3RlcGhhbmVAbWFjYWRhbWlhbi5jb20+CglDcmVhdGUgYSBuZXcgREMgaW4gR2V0RENFeCB3aGVuIG5vbmUgYXJlIGF2YWlsYWJsZS4KCgkqIG9sZS9vbGUyZGlzcC5jLCBvbGUvdmFyaWFudC5jLCByZWxheTMyL29sZWF1dDMyLnNwZWM6CglTdGVwaGFuZSBMdXNzaWVyIDxzdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGVkIERvc0RhdGVUaW1lVG9WYXJpYW50KCkgYW5kIFN5c0FsbG9jU3RyaW5nQnl0ZUxlbigpIGZ1bmN0aW9ucy4KCgkqIGNvbnRyb2xzL2NvbWJvLmM6IFBhdmVsIFJvc2tpbiA8cGF2ZWxfcm9za2luQGdlb2NpdGllcy5jb20+CglDaGFuZ2VkIHRoZSBidXR0b24gc3RhdGUgdG8gInVwIiBhcyBzb29uIGFzIGl0IGlzIGtub3duIHRoYXQgdGhlCglzZWxlY3Rpb24gaGFzIGJlZW4gY2FuY2VsbGVkLCBzbyB0aGUgYnV0dG9uIGlzIHJlZHJhd24gaW4gdGhlICJ1cCIKCXN0YXRlLgoKCSogbWlzY2VtdS9pbnN0ci5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUVtdWxhdGUgKHdlbGwsIGlnbm9yZSkgbW92IGNyMCxlYXggYW5kIG1vdiBlYXgsY3IwLgoKV2VkIE1hciAxMCAxODowMzo1NCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS93aW5lL29ial9pbnBsYWNlLmgsIGluY2x1ZGUvd2luZS9vYmpfb2xlYXV0LmgsIGluY2x1ZGUvd2luZS9vYmpfb2xlb2JqLmgsIGluY2x1ZGUvd2luZS9vYmpfb2xldW5kby5oLCBpbmNsdWRlL3dpbmUvb2JqX29sZXZpZXcuaCwgaW5jbHVkZS93aW5lL29ial9waWN0dXJlLmgsIGluY2x1ZGUvd2luZS9vYmpfcHJvcGVydHkuaCwgb2xlL2NvbXBvYmouYywgb2xlL2d1aWQuYywgb2xlL29sZTJkaXNwLmMsIG9sZS9vbGVjbGkuYywgb2xlL29sZWRsZy5jLCBvbGUvb2xlb2JqLmMsIGRsbHMvc2hlbGwzMi9kYXRhb2JqZWN0LmMsIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYywgaW5jbHVkZS9BdHRpYy93aW50eXBlcy5oLCBpbmNsdWRlL2NvbW1kbGcuaCwgaW5jbHVkZS9pbW0uaCwgaW5jbHVkZS9vYWlkbC5oLCBpbmNsdWRlL29iamJhc2UuaCwgaW5jbHVkZS9vY2lkbC5oLCBpbmNsdWRlL29sZS5oLCBpbmNsdWRlL29sZTJ2ZXIuaCwgaW5jbHVkZS9vbGVhdXRvLmgsIGluY2x1ZGUvb2xlY3RsLmgsIGluY2x1ZGUvb2xlaWRsLmgsIGluY2x1ZGUvc2hsZ3VpZC5oLCBpbmNsdWRlL3NobG9iai5oLCBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW5lL29ial9iYXNlLmgsIGluY2x1ZGUvd2luZS9vYmpfY29udHJvbC5oLCBpbmNsdWRlL3dpbmUvb2JqX2RhdGFvYmplY3QuaCwgaW5jbHVkZS93aW5lL29ial9kcmFnZHJvcC5oLCBpbmNsdWRlL3dpbm50LmgsIGluY2x1ZGUvd3R5cGVzLmg6CglQYXVsIFF1aW5uIDxwYXVscUBjb3JlbC5jYT4KCUFkZGVkIGEgbG90IG9mIG5ldyBPTEUgaW50ZXJmYWNlcy4KCgkqIGRvY3VtZW50YXRpb24vbGFuZ3VhZ2VzLCBkb2N1bWVudGF0aW9uL3dpbmUubWFuLCBpbmNsdWRlL29wdGlvbnMuaCwgbWlzYy9tYWluLmMsIG9sZS9vbGUybmxzLmMsIHJlc291cmNlcy9NYWtlZmlsZS5pbiwgcmVzb3VyY2VzL3N5c3Jlcy5jLCByZXNvdXJjZXMvc3lzcmVzX1J1LnJjOgoJQWxleGFuZGVyIEthbmF2aW4gPGFrQGNhdmUuaG9wLnN0dS5uZXZhLnJ1PgoJQWRkZWQgc3VwcG9ydCBmb3IgUnVzc2lhbiBsYW5ndWFnZS4KCgkqIGlmMTYzMi90aHVuay5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVRlbXBvcmFyeSBmaXg6IEFjdGl2YXRlIDE2LWJpdCBzeXN0ZW0gdGltZXIgY2FsbGJhY2sgcm91dGluZXMsIGJ1dAoJc2tpcCBjYWxsaW5nIHRoZW0gaWYgdGltZXIgc2lnbmFsIG9jY3VyZWQgd2hpbGUgY3VycmVudCB0aHJlYWQgd2FzCglob2xkaW5nIHRoZSBXaW4xNkxvY2sgKHRvIHByZXZlbnQgMTYtYml0IHN0YWNrIGNvcnJ1cHRpb24pLgoKCSogaW5jbHVkZS9zeXNsZXZlbC5oLCBzY2hlZHVsZXIvc3lzbGV2ZWwuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJSW1wbGVtZW50ZWQgX0NvbmZpcm1XaW4xNkxvY2sgKEtFUk5FTDMyLjk2KS4KCgkqIGdyYXBoaWNzL2RkcmF3LmMsIGluY2x1ZGUvZGRyYXcuaDoKCUxpb25lbCBVbG1lciA8dWxtZXJAZGlyZWN0cHJvdmlkZXIubmV0PgoJLSBzb21lIGNsZWFuIHVwIGluIGhhbmRsaW5nIG9mIGRlcHRoCgktIG1vcmUgZGVwdGggY29udmVyc2lvbiByb3V0aW5lcyBmb3IgWDExICgxNSwgMTYgYW5kIDMyIC0+IDgpCgoJKiBpbmNsdWRlL3F1ZXVlLmgsIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL3F1ZXVlLmM6CglTdGVwaGFuZSBMdXNzaWVyIDxzdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGVkIFNlbmRNZXNzYWdlVGltZW91dCgpIGZ1bmN0aW9ucy4KCgkqIHByb2dyYW1zL25vdGVwYWQvQ2hhbmdlTG9nLCBwcm9ncmFtcy9ub3RlcGFkL01ha2VmaWxlLmluLCBwcm9ncmFtcy9ub3RlcGFkL3NlYXJjaC5jOgoJTWFyY2VsIEJhdXIgPG1iYXVyQGcyNi5ldGh6LmNoPgoJQWRkZWQgQm95ZXItTW9vcmUgdGV4dCBzZWFyY2guCgoJKiBpZjE2MzIvdGh1bmsuYywgaWYxNjMyL3VzZXIuc3BlYywgaW5jbHVkZS9jYWxsYmFjay5oLCBtaXNjL2NhbGxiYWNrLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFkZGVkIFVTRVIuRGVzdHJveUljb24zMiB0byBDYWxsb3V0IHN0cnVjdC4KCgkqIGluY2x1ZGUvbW9kdWxlLmgsIGxvYWRlci9uZS9jb252ZXJ0LmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCURlbGV0ZWQgTkVfRnJlZVBFUmVzb3VyY2UoKS4KCgkqIGluY2x1ZGUvdXNlci5oLCBsb2FkZXIvbWFpbi5jLCBsb2FkZXIvbW9kdWxlLmMsIHdpbmRvd3MvdXNlci5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBZGFwdGVkIHRvIGN1cnNvci9pY29uIGhhbmRsaW5nIGNoYW5nZXMuCgoJKiBsb2FkZXIvbmUvcmVzb3VyY2UuYywgbG9hZGVyL3Jlc291cmNlLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFsbG93IGFjY2Vzc2luZyBib3RoIE5FIGFuZCBQRSByZXNvdXJjZXMgd2l0aCBib3RoIDE2LSBhbmQgMzItYml0IEFQSS4KCUhvb2sgY3Vyc29yL2ljb24gZGVzdHJ1Y3Rpb24gaW50byBGcmVlUmVzb3VyY2UgKGxpa2UgV2luOTUpLgoKCSogaW5jbHVkZS9jdXJzb3JpY29uLmgsIG9iamVjdHMvY3Vyc29yaWNvbi5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglJbXBsZW1lbnRlZCBXaW45NS1zdHlsZSBzaGFyZWQgY3Vyc29yL2ljb24gY2FjaGUuCglNZXJnZWQgTkUgYW5kIFBFIHJlc291cmNlIGhhbmRsaW5nLgoKCSogZ3JhcGhpY3MveDExZHJ2L29lbWJpdG1hcC5jLCBpbmNsdWRlL2JpdG1hcHMvQXR0aWMvb2JtX2ZvbGRlciwgaW5jbHVkZS9iaXRtYXBzL0F0dGljL29ibV9mb2xkZXIyOgoJUGF2ZWwgUm9za2luIDxwYXZlbF9yb3NraW5AZ2VvY2l0aWVzLmNvbT4KCUZpeGVkIGZvbGRlciBiaXRtYXAgY29sb3JzIGZvciA4YnBwLgoKCSogZ3JhcGhpY3MveDExZHJ2L2dyYXBoaWNzLmM6IENhb2xhbiBNY05hbWFyYSA8Q2FvbGFuLk1jTmFtYXJhQHVsLmllPgoJV2luZG93cyBkb2VzbnQgYWxsb3cgZGFzaGVkIGFuZCBkb3R0ZWQgbGluZXMgPiAxLgoKCSogb2xlL2NvbXBvYmouYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgYSByZWZlcmVuY2UtY291bnRpbmcgcHJvYmxlbSBpbiB0aGUgZXh0ZXJuYWwgbG9jayBtZWNoYW5pc20uCgoJKiBkbGxzL3NoZWxsMzIvZGF0YW9iamVjdC5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglGaXhlZCBhIHNpbXBsZSBidWcgaW4gdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBTaGVsbFZpZXcgb2JqZWN0cy4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgaW5jbHVkZS9zaGVsbC5oOgoJU2VyZ2V5IFR1cmNoYW5vdiA8dHVyY2hhbm92QHVzYS5uZXQ+CglBZGRlZCBzb21lIGV4dHJhIENTSURMcy4KCgkqIGxvYWRlci9tb2R1bGUuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IEFsbG93IGxwQ29tbWFuZExpbmUgPT0gTlVMTCBpbiBDcmVhdGVQcm9jZXNzKCkuCgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IFRvQXNjaWkgc2hvdWxkIG5vdCBnZW5lcmF0ZSBBU0NJSSBjb2RlIHdoZW4ga2V5LXVwIGZsYWcgaXMgc2V0LgoKCSogZ3JhcGhpY3MveDExZHJ2L2JpdGJsdC5jLCBncmFwaGljcy94MTFkcnYvYml0bWFwLmMsIHdpbmRvd3MveDExZHJ2L2V2ZW50LmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUF2b2lkIHVubmVjZXNzYXJ5IEdyYXBoaWNzRXhwb3NlIGV2ZW50cy4KCgkqIG9sZS9zYWZlYXJyYXkuYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgaW5kZXggY2FsY3VsYXRpb25zIG9mIHRoZSB1cHBlciBhbmQgbG93ZXIgYm91bmRzIG9mIGEgc2FmZWFycmF5LgoJRml4ZWQgYSB3cm9uZyBpbml0aWFsaXphdGlvbiBvZiB0aGUgVlQgc2l6ZXMgYXJyYXkuCgoJKiBvbGUvb2xlMi5jLCByZWxheTMyL29sZTMyLnNwZWM6CglGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRhdGlvbiBvZiB0aGUgUmVsZWFzZVN0Z01lZGl1bSBtZXRob2QuCgpUdWUgTWFyICA5IDE3OjQ3OjUxIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL250ZGxsL01ha2VmaWxlLmluLCBkbGxzL250ZGxsL2ZpbGUuYywgZGxscy9udGRsbC9udC5jLCBkbGxzL250ZGxsL29tLmMsIGRsbHMvbnRkbGwvcmVnLmMsIGRsbHMvbnRkbGwvcnRsLmMsIGRsbHMvbnRkbGwvcnRsc3RyLmMsIGRsbHMvbnRkbGwvc2VjLmMsIGRsbHMvbnRkbGwvc3luYy5jLCBkbGxzL250ZGxsL3RpbWUuYywgcmVsYXkzMi9hZHZhcGkzMi5zcGVjLCByZWxheTMyL250ZGxsLnNwZWM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCS0gc29ydGVkIEFQSSBieSBncm91cHMKCS0gbmV3IHN0dWJzOiAgTnRRdWVyeURpcmVjdG9yeUZpbGUsICBad1F1ZXJ5RGlyZWN0b3J5RmlsZQoJLSBpbXBsLjogUnRsQWxsb2NhdGVIZWFwLCBSdGxDcmVhdGVIZWFwLCBSdGxEZXN0cm95SGVhcCwgUnRsRnJlZUhlYXAsCgkgIFJ0bEdldERhY2xTZWN1cml0eURlc2NyaXB0b3IsIFJ0bEdldFNhY2xTZWN1cml0eURlc2NyaXB0b3IKCS0gaW1wbC4gYnkgUmV4IEpvbGxpZmYgKHJleEBsdmNhYmxlbW9kZW0uY29tKTogUnRsVGltZVRvVGltZUZpZWxkcywKCSAgUnRsVGltZUZpZWxkc1RvVGltZQoKCSogaW5jbHVkZS9udGRkay5oLCBpbmNsdWRlL250ZGVmLmgsIGluY2x1ZGUvd2lubnQuaDoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTWFueSBuZXcgcHJvdG90eXBlcy4KCgkqIGxvYWRlci9yZXNvdXJjZS5jLCBpbmNsdWRlL21vZHVsZS5oOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglGaXggdXNlIG9mIHdyb25nIHByb3RvdHlwZSBmcm9tIG50ZGxsLmguCgoJKiBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCU1ha2UgbW9yZSBmdW5jdGlvbnMganVzdCBjYWxsaW5nIGRvd24gdG8gbnRkbGwuCglOZXc6IEdldFNlY3VyaXR5RGVzY3JpcHRvclNhY2wuCgoJKiBncmFwaGljcy9wc2Rydi9hZm0uYzoKCUh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJQWNjZXB0ICJOb3JtYWwiIGFzIGEgdmFsaWQgQUZNIHdlaWdodC4KCgkqIG9sZS9zdG9yYWdlMzIuYywgb2xlL3N0b3JhZ2UzMi5oOiBUaHV5IE5ndXllbiA8dGh1eUBtYWNhZGFtaWFuLmNvbT4KCVNtYXJ0ZXIgd2F5IG9mIHNlYXJjaGluZyBmb3IgYSBmcmVlIGJsb2NrLgoKCSogd2luZG93cy9tZXNzYWdlLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogRGlyZWN0ZWRZaWVsZCgpIG9ubHkgdG8gMTYtYml0IHRhc2tzIGluIFJlcGx5TWVzc2FnZSgpLgoKCSogbGlidGVzdC9oZWxsbzUuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglDb3JyZWN0ZWQgY2FzdCBzbyBoZWxsbzUgY29tcGlsZXMgYWdhaW4uCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jOiBOb3JtYW4gU3RldmVucyA8bm9ybWFuQGFyY2FkeS51LW5ldC5jb20+CglEb24ndCBjb3B5IGxwc3RyRmlsZVRpdGxlIGlmIGdpdmVuIE5VTEwgcG9pbnRlciBmb3IgdGhpcy4KCURlbHBoaSAyLjAgcGFzc2VzIE5VTEwgZm9yIGxwc3RyRmlsZVRpdGxlIHRvIEdldE9wZW4vU2F2ZUZpbGVOYW1lLgoKCSogbWlzYy93aW5zb2NrLmMsIGluY2x1ZGUvd2luc29jay5oOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXggYnJva2VuIF9jb252ZXJ0X3NvY2tvcHQgZm9yIElQUFJPVE9fVENQIGNhc2VzLCBhZGRlZCBUQ1BfTk9ERUxBWS4KCgkqIG1zZG9zL2RwbWkuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglfX2FzbV9fIGZpeCBhcyBzdWdnZXN0ZWQgYnkgPGRhbmllbEBtYXQudXRmc20uY2w+IERhbmllbCBTZXJwZWxsLAoJcmVtb3ZlZCBhZGRpdGlvbmFsICJlYXgiIGZyb20gY2xvYmJlciBsaXN0LCBzbyBlZ2NzLWN1cnJlbnQgbGlrZXMgaXQuCgoJKiBtZW1vcnkvdmlydHVhbC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUNyZWF0ZUZpbGVNYXBwaW5nIFNldExhc3RFcnJvcigwKXMgb24gbmV3bHkgY3JlYXRlZCBtYXBwaW5ncy4KClN1biBGZWIgMjggMjA6MDU6MTIgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvY29tbWRsZy8uY3ZzaWdub3JlLCBkbGxzL2NvbW1kbGcvTWFrZWZpbGUuaW4sIGRsbHMvY29tbWRsZy9jb2xvcmRsZy5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jLCBkbGxzL2NvbW1kbGcvZmluZGRsZy5jLCBkbGxzL2NvbW1kbGcvZm9udGRsZy5jLCBkbGxzL2NvbW1kbGcvZ2VuZXJpYy5jLCBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYywgbWlzYy9BdHRpYy9jb21tZGxnLmMsIG1pc2MvTWFrZWZpbGUuaW4sIE1ha2VmaWxlLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy9NYWtlZmlsZS5pbjoKCUtsYWFzIHZhbiBHZW5kIDxLbGFhc0B2YW5nZW5kLmRlbW9uLm5sPgoJQ3JlYXRlIGEgbmV3IHN1YmRpcmVjdG9yeSBmb3IgdGhlIGNvbW1vbiBkaWFsb2cgYm94IERMTCBhbmQgbW92ZSBhbGwKCWNvZGUgZnJvbSAvbWlzYy9jb21tZGxnLmMgdG8gdGhpcyBkaXJlY3RvcnkuICBBbHNvIG1hZGUgYSBzdGFydCBpbgoJZG9jdW1lbnRpbmcgdGhlIEFQSSBjYWxscy4KCgkqIG1pc2Mvd2luc29jay5jLCBkZWJ1Z2dlci9icmVhay5jLCBkZWJ1Z2dlci9kYmcueSwgZGVidWdnZXIvZGJnbWFpbi5jLCBkZWJ1Z2dlci9lZGl0bGluZS5jLCBkZWJ1Z2dlci9leHByLmMsIGRlYnVnZ2VyL2hhc2guYywgZGVidWdnZXIvaW5mby5jLCBkZWJ1Z2dlci9tZW1vcnkuYywgZGVidWdnZXIvbXNjLmMsIGRlYnVnZ2VyL3JlZ2lzdGVycy5jLCBkZWJ1Z2dlci9zb3VyY2UuYywgZGVidWdnZXIvc3RhY2suYywgZGVidWdnZXIvdHlwZXMuYywgaW5jbHVkZS9BdHRpYy93aW50eXBlcy5oOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglNb3JlIGluY2x1ZGUgb3B0aW1pemF0aW9ucy4KCgkqIHdpbmRvd3MvZHJpdmVyLmMsIHdpbmRvd3Mvd2lucHJvYy5jLCBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYywgZGxscy9jb21jdGwzMi90cmVldmlldy5jLCBsb2FkZXIvcGVfaW1hZ2UuYywgbXNkb3MvZHBtaS5jLCBtdWx0aW1lZGlhL2F1ZGlvLmMsIG11bHRpbWVkaWEvbW1zeXN0ZW0uYywgb2JqZWN0cy9kYy5jLCBvbGUvc3RvcmFnZTMyLmMsIGNvbnRyb2xzL21lbnUuYywgZGxscy9jb21jdGwzMi9ob3RrZXkuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgYSBsb3Qgb2Ygd2FybmluZ3MgdXNpbmcgV0lORV9VTlVTRUQsIGNhc3RzLCBjb21tZW50aW5nIG91dCBhbmQKCWFkZGl0aW9uYWwge30uIFJld3JvdGUgR2V0Q3JlYXRpb25Nb2RlRnJvbVNUR00gc28gd2UgZG9uJ3QgZ2V0CgkicG9zc2libGUgdXNlIG9mIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUiLgoKCSogaW5jbHVkZS9tbXN5c3RlbS5oLCBpbmNsdWRlL211bHRpbWVkaWEuaDoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJTUNJX09QRU5fRFJJVkVSX1BBUk1TIC0gQWRkIHdpbjMyIHZlcnNpb24gb2Ygc3RydWN0dXJlLgoKCSogZmlsZXMvZGlyZWN0b3J5LmMsIG1zZG9zL2ludDIxLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUNoYW5nZWQgQ3JlYXRlRGlyZWN0b3J5IExhc3RFcnJvciByZXR1cm5zIHRvIG1hdGNoIFdpbjMyIChmb3VuZCBvdXQgYnkKCWV4cGVyaW1lbnQpLiBBZGFwdGVkIGludDIxIENyZWF0ZURpcmVjdG9yeSBjYWxsIHRvIHN0aWxsIHJldHVybiB0aGUKCWNvcnJlY3QgRE9TIGVycm9yIGNvZGVzIGFjY29yZGluZyB0byBSYWxwaCBCcm93bi4KCgkqIGdyYXBoaWNzL2RkcmF3LmMsIHJlbGF5MzIvZGRyYXcuc3BlYzoKCUxpb25lbCBVbG1lciA8dWxtZXJAZGlyZWN0cHJvdmlkZXIubmV0PgoJLSBhZGRlZCBmdW5jdGlvbiBEaXJlY3REcmF3RW51bWVyYXRlRXgKCS0gYWRkZWQgKG9yIGNvcnJlY3RlZCkgY2hlY2sgZm9yIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIGVudW1lcmF0aW9uIGZ1bmN0aW9ucwoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW46IExpb25lbCBVbG1lciA8dWxtZXJAZGlyZWN0cHJvdmlkZXIubmV0PgoJQmV0dGVyIGRldGVjdGlvbiBvZiBvbGQgKGkuZS4gbm9uIE9wZW5HTCAxLjIgY29tcGxpYW50KSB2ZXJzaW9uIG9mIE1lc2EuCgoJKiBtdWx0aW1lZGlhL21jaWNkYS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtc21laXNzbkBzdHVkLmluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWRkZWQgbWlzc2luZyA8c3lzL3R5cGVzLmg+LgoKCSogaW5jbHVkZS93aW51c2VyLmg6IEtsYWFzIHZhbiBHZW5kIDxrbGFhc0B2YW5nZW5kLmRlbW9uLm5sPgoJQWRkZWQgdGhlIGJ1dHRvbiBzdGF0ZXMgYXMgcmV0dXJuZWQgYnkgSXNEbGdCdXR0b25DaGVja2VkKCkuCgoJKiBsb2FkZXIvbW9kdWxlLmM6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglBZGRlZCBzdXBwb3J0IGZvciBxdW90ZWQgZmlsZSBuYW1lcyBpbiBDcmVhdGVQcm9jZXNzKCkuCgoJKiBmaWxlcy9maWxlLmMsIHNjaGVkdWxlci9jbGllbnQuYywgc2NoZWR1bGVyL2V2ZW50LmMsIHNjaGVkdWxlci9tdXRleC5jLCBzY2hlZHVsZXIvc2VtYXBob3JlLmMsIHNlcnZlci9maWxlLmMsIHdpbjMyL2NvbnNvbGUuYzoKCUNMSUVOVF9XYWl0UmVwbHk6IGRvbid0IGNsZWFyIGxhc3QgZXJyb3Igb24gc3VjY2VzczsgZml4ZWQgY2FsbGVycwoJYWNjb3JkaW5nbHkgKGJhc2VkIG9uIGEgcGF0Y2ggYnkgSnVlcmdlbiBTY2htaWVkKS4KCgkqIG1zZG9zL2ludDEwLmM6IEplc3MgSGFhcyA8ZGVzbW9rZUBob3RtYWlsLmNvbT4KCUFkZGVkIHNvbWUgc3VwcG9ydCBhbmQgc3R1YnMgZm9yIFZFU0EgdG8gbXNkb3MvaW50MTAuYy4KCgkqIG9sZS9iaW5kY3R4LmMsIG9sZS9maWxlbW9uaWtlci5jLCBvbGUvaWZzLmMsIG9sZS9pdGVtbW9uaWtlci5jLCBvbGUvbW9uaWtlci5jLCBvbGUvb2xlMi5jLCBvbGUvb2xlMmRpc3AuYywgb2xlL29sZTJubHMuYywgb2xlL29sZWNsaS5jLCBvbGUvb2xlZGxnLmMsIG9sZS9vbGVmb250LmMsIG9sZS9vbGVvYmouYywgb2xlL29sZXN2ci5jLCBvbGUvc2FmZWFycmF5LmMsIG9sZS9zdGdfYmlnYmxvY2tmaWxlLmMsIG9sZS9zdGdfc3RyZWFtLmMsIG9sZS9zdG9yYWdlLmMsIG9sZS9zdG9yYWdlMzIuYywgb2xlL3R5cGVsaWIuYywgb2xlL3ZhcmlhbnQuYywgdG9vbHMvZm50MmJkZi5jLCB3aW5kb3dzL2Rpc3BsYXkuYywgZGxscy9zaGVsbDMyL2RhdGFvYmplY3QuYywgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jLCBpbmNsdWRlL29sZW9iai5oLCBpbmNsdWRlL3NobG9iai5oLCBpbmNsdWRlL3dpbmUvb2JqX2NoYW5uZWwuaCwgaW5jbHVkZS93aW5lL29ial9jbGllbnRzZXJ2ZXIuaCwgaW5jbHVkZS93aW5lL29ial9jb250cm9sLmgsIGluY2x1ZGUvd2luZS9vYmpfZGF0YW9iamVjdC5oLCBpbmNsdWRlL3dpbmUvb2JqX2RyYWdkcm9wLmgsIGluY2x1ZGUvd2luZS9vYmpfaW5wbGFjZS5oLCBpbmNsdWRlL3dpbmUvb2JqX21hcnNoYWwuaCwgaW5jbHVkZS93aW5lL29ial9taXNjLmgsIGluY2x1ZGUvd2luZS9vYmpfbW9uaWtlci5oLCBpbmNsdWRlL3dpbmUvb2JqX29sZWF1dC5oLCBpbmNsdWRlL3dpbmUvb2JqX29sZWZvbnQuaCwgaW5jbHVkZS93aW5lL29ial9wcm9wZXJ0eXN0b3JhZ2UuaCwgaW5jbHVkZS93aW5lL29ial9zdG9yYWdlLmgsIGluY2x1ZGUvd2luZS93aW51c2VyMTYuaCwgbGlicmFyeS93aW5lc3R1Yi5jLCBtZW1vcnkvc3RyaW5nLmMsIG1pc2Mvc291bmQuYywgbXVsdGltZWRpYS9tbXN5c3RlbS5jLCBjb250cm9scy9tZW51LmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU1vcmUgaW5jbHVkZSBvcHRpbWlzYXRpb25zIGFuZCBmaXhlcy4KCgkqIHNlcnZlci9wcm9jZXNzLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJb3Blbl9vYmplY3Qgc2hvdWxkIHJldHVybiBFUlJPUl9GSUxFX05PVF9GT1VORCB3aGVuIHRoZSBuYW1lZCBvYmplY3QKCWlzIG5vdCBmb3VuZC4KCgkqIGZpbGVzL2RpcmVjdG9yeS5jOiBBbmRyZWFzIE1vaHIgPGNpcGFtODk1QGNpcDEuaW5kLnVuaS1zdHV0dGdhcnQuZGU+CglCZXR0ZXIgZXJyb3IgbWVzc2FnZS4KCgkqIHNjaGVkdWxlci9BdHRpYy9rMzJvYmouYywgc2NoZWR1bGVyL01ha2VmaWxlLmluLCBzY2hlZHVsZXIvY2xpZW50LmMsIHNjaGVkdWxlci9jcml0c2VjdGlvbi5jLCBzY2hlZHVsZXIvZXZlbnQuYywgc2NoZWR1bGVyL2hhbmRsZS5jLCBzY2hlZHVsZXIvbXV0ZXguYywgc2NoZWR1bGVyL3BpcGUuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2NoZWR1bGVyL3NlbWFwaG9yZS5jLCBzY2hlZHVsZXIvc3luY2hyby5jLCBzY2hlZHVsZXIvc3lzZGVwcy5jLCBzY2hlZHVsZXIvdGhyZWFkLmMsIHdpbjMyL2NvbnNvbGUuYywgd2luMzIvZGV2aWNlLmMsIGZpbGVzL2NoYW5nZS5jLCBmaWxlcy9kb3NfZnMuYywgZmlsZXMvZmlsZS5jLCBpbmNsdWRlL0F0dGljL2szMm9iai5oLCBpbmNsdWRlL2ZpbGUuaCwgaW5jbHVkZS9wcm9jZXNzLmgsIGluY2x1ZGUvdGhyZWFkLmgsIGxvYWRlci90YXNrLmMsIG1lbW9yeS92aXJ0dWFsLmMsIG1pc2MvdG9vbGhlbHAuYzoKCVVzZSBzZXJ2ZXIgaGFuZGxlcyBkaXJlY3RseSBmb3IgV2luMzIgaGFuZGxlcy4gUmVtb3ZlZCB1c2Ugb2YgSzMyT0JKLgoKCSogd2luZG93cy9kZWZ3bmQuYywgd2luZG93cy9tc2dib3guYywgd2luZG93cy94MTFkcnYvbW9uaXRvci5jLCBvYmplY3RzL2JydXNoLmMsIG9iamVjdHMvY2xpcHBpbmcuYywgb2JqZWN0cy9wZW4uYywgb2JqZWN0cy9yZWdpb24uYywgb2JqZWN0cy90ZXh0LmMsIG9sZS9vbGVmb250LmMsIG9sZS9vbGVvYmouYywgc2NoZWR1bGVyL0F0dGljL2szMm9iai5jLCBzY2hlZHVsZXIvZXZlbnQuYywgc2NoZWR1bGVyL211dGV4LmMsIHNjaGVkdWxlci9zZW1hcGhvcmUuYywgc2VydmVyL2ZpbGUuYywgc2VydmVyL3JlcXVlc3QuYywgZGVidWdnZXIvZGJnLnksIGRlYnVnZ2VyL3JlZ2lzdGVycy5jLCBncmFwaGljcy9kM2RkZXZpY2VzLmMsIGdyYXBoaWNzL2QzZGV4ZWN1dGVidWZmZXIuYywgZ3JhcGhpY3MvZDNkdGV4dHVyZS5jLCBncmFwaGljcy9lc2NhcGUuYywgZ3JhcGhpY3Mvd2luMTZkcnYvZm9udC5jLCBsb2FkZXIvbmUvY29udmVydC5jLCBtaXNjL25ldHdvcmsuYywgbWlzYy9wb3J0LmMsIG1pc2NlbXUvbWFpbi5jLCBtdWx0aW1lZGlhL2F1ZGlvLmMsIG11bHRpbWVkaWEvZHBsYXkuYywgbXVsdGltZWRpYS9pbml0LmMsIG11bHRpbWVkaWEvbWNpd2F2ZS5jLCBtdWx0aW1lZGlhL21peGVyLmMsIG11bHRpbWVkaWEvbW1hdXguYywgY29uc29sZS94dGVybS5jLCBjb250cm9scy9saXN0Ym94LmM6CglEYXZpZCBMdXllciA8bHV5ZXJAdWNzLnV3YS5lZHUuYXU+CgktIGZpeGVkIG1pc3Npbmcgc3RkbGliLmggYW5kIHN0cmluZy5oIGluY2x1ZGVzIGV2ZXJ5d2hlcmUKCS0gcmVtb3ZlZCBhIGNvdXBsZSBvZiB1bm5lZWRlZCBzdGRsaWIuaCBhbmQgc3RkaW8uaCBpbmNsdWRlcwoKCSogaW5jbHVkZS9wcm9jZXNzLmgsIGluY2x1ZGUvdGhyZWFkLmgsIGxvYWRlci90YXNrLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci9zeXNkZXBzLmMsIHNjaGVkdWxlci90aHJlYWQuYywgd2luZG93cy9xdWV1ZS5jLCB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3dpbnByb2MuYzoKCVByb2Nlc3MgYW5kIHRocmVhZCBpZCBub3cgdXNlIHRoZSBzZXJ2ZXItc2lkZSBpZCBpbnN0ZWFkIG9mIGFuCglvYmZ1c2NhdGVkIHBvaW50ZXIuCgoJKiBsaWJ0ZXN0L2d1aXRlc3QuYywgbGlidGVzdC9ndWl0ZXN0LnJjLCBsaWJ0ZXN0L2d1aXRlc3Qucmg6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVRoZSBXaW5kb3dzIEdVSSBiZWhhdmlvdXIgdGVzdGVyIHVzZWQgb24gdGhlIFdpbmRvd3MgY29tcHV0ZXIuICBJdCB3YXMKCXVzZWQgd2l0aCBCb3JsYW5kIEMrKyA0LjUyLCBidXQgc2hvdWxkIGJlIGVhc3kgdG8gYWRhcHQgdG8gV2luZWxpYiBieQoJd2hvZXZlciBmZWVscyBsaWtlIGl0OyBJIGhhdmVuJ3QsIEkganVzdCByZWxlYXNlZCB0aGlzIHVzZWZ1bCB0ZXN0IGFwcAoJaW4gY2FzZSBpdCB3b3VsZCBiZW5lZml0IG90aGVyIGRldmVsb3BlcnMuCgoJKiBkb2N1bWVudGF0aW9uL2d1aTogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglUaGlzIGZpbGUgZGV0YWlscyB0aGUgcmVzdWx0cyAobWVzc2FnZSB0cmFjZXMpIHRoZSBHVUkgYmVoYXZpb3VyCgl0ZXN0ZXIgYXBwIGdhdmUgdW5kZXIgcmVhbCBXaW5kb3dzIGZvciB2YXJpb3VzIGV2ZW50cy4gSXQgd2FzIHVzZWZ1bAoJZm9yIHNvbWUgb2YgbXkgZGVidWdnaW5nIGF0IGxlYXN0LCBwZXJoYXBzIGl0IGNvdWxkIGJlIG9mIHNvbWUgdXNlIHRvCglvdGhlciBXaW5lIEdVSSBkZWJ1Z2dlcnMgYXMgd2VsbC4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBpbmNsdWRlL3NpZ19jb250ZXh0LmgsIGluY2x1ZGUvd2lubmxzLmgsIG1pc2Mvd2luc29jay5jLCBtaXNjL3dpbnNvY2tfZG5zLmMsIG11bHRpbWVkaWEvZHNvdW5kLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1zbWVpc3NuQHN0dWQuaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglTb21lIFNvbGFyaXMgZml4ZXMuIDxyZXNvbHYuaD4gbmVlZHMgPGFycGEvbmFtZXNlci5oPiwgc2lnX2NvbnRleHQuaAoJbmVlZHMgdG8gZGVmaW5lIEhBTkRMRVJfQ09OVEVYVCwgd2N0eXBlLmggZG9lcyBub3QgbGlrZSAnd3NwcmludGYnCglkZWZpbmVkLCBtc2Rvcy9kcG1pLmMgbmVlZHMgInN0YWNrZnJhbWUuaCIgdG9vLCBhbmQgbXVsdGltZWRpYS9kc291bmQuYwoJbmVlZHMgIndpbnVzZXIuaCIuCgoJKiB3aW4zMi9rZXJuZWwzMi5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUdldEJpbmFyeVR5cGVbQVddIG1vdmVkIHRvIGxvYWRlci9tb2R1bGUuYywgbW9kaWZpZWQgdG8gcmVjb2duaXplIC5DT00KCWFuZCAuUElGIGZpbGVzLgoKCSogbG9hZGVyL2Rvcy9tb2R1bGUuYywgbWlzY2VtdS9tYWluLmMsIG1zZG9zL2RwbWkuYywgaW5jbHVkZS9kb3NleGUuaCwgaW5jbHVkZS9wZV9pbWFnZS5oLCBsb2FkZXIvbWFpbi5jLCBsb2FkZXIvcGVfaW1hZ2UuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWRhcHRlZCB0byBDcmVhdGVQcm9jZXNzIGNoYW5nZXMuCgoJKiBsb2FkZXIvbmUvbW9kdWxlLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCU5FIG1vZHVsZXMgYWRhcHRlZCB0byBDcmVhdGVQcm9jZXNzIGNoYW5nZXMuCglMb2FkTW9kdWxlMTYvTG9hZExpYnJhcnkxNiByZW9yZ2FuaXphdGlvbi4KCgkqIGluY2x1ZGUvbW9kdWxlLmgsIGluY2x1ZGUvdGFzay5oLCBsb2FkZXIvbW9kdWxlLmMsIGxvYWRlci90YXNrLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci90aHJlYWQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJUHJvY2VzcyBjcmVhdGlvbiBzZXF1ZW5jZSByZW9yZ2FuaXplZDoKCS0gUmVtb3ZlZCBpbnN0YW5jZSBkYXRhIHNlZ21lbnQgZm9yIGFsbCBidXQgTkUgbW9kdWxlcy4KCS0gQ2hlY2sgYmluYXJ5IHR5cGUgaW4gQ3JlYXRlUHJvY2VzcyBiZWZvcmUgbG9hZGluZyBtb2R1bGUuCgktIFVuaXggcHJvY2VzcyBjcmVhdGlvbiBtb3ZlZCBmcm9tIFdpbkV4ZWMgdG8gQ3JlYXRlUHJvY2Vzcy4KCS0gQnVnZml4OiBmaWxsIGluIHRoZGItPnRlYi5odGFzazE2IG1lbWJlciBjb3JyZWN0bHkuCgoJKiB3aW5kb3dzL2lucHV0LmM6IEd1eSBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CgktIENvZGUgdG8gcmV0dXJuIGRlZmF1bHQgbGFuZ3VhZ2UgY29kZSBhcyBrZXlib2FyZCBsYXlvdXQuCgktIEltcGxlbWVudGVkIG90aGVyIHN0dWJzIGFzc29jaWF0ZWQgd2l0aCBrZXlib2FyZCBsYXlvdXQ6CgkgIEdldEtleWJvYXJkTGF5b3V0TmFtZUEsIEFjdGl2YXRlS2V5Ym9hcmRMYXlvdXQsCgkgIExvYWRLZXlib2FyZExheW91dFtBV10sIEdldEtleWJvYXJkTGF5b3V0TGlzdC4KCgkqIGluY2x1ZGUvY29tbWRsZy5oLCBpbmNsdWRlL3Jlc291cmNlLmgsIG1pc2MvQXR0aWMvY29tbWRsZy5jLCByZXNvdXJjZXMvc3lzcmVzX0VuLnJjOgoJS2xhYXMgdmFuIEdlbmQgPGtsYWFzQHZhbmdlbmQuZGVtb24ubmw+CglQcmVsaW1pbmFyeSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgUHJpbnREbGdBIHN0dWIuCgoJKiBvbGUvbmxzL25sZC5ubHM6IEtsYWFzIHZhbiBHZW5kIDxrbGFhc0B2YW5nZW5kLmRlbW9uLm5sPgoJTm93IGNvbXBsaWFudCB0byB0aGUgRHV0Y2ggc3RhbmRhcmRzLgoKCSogd2luZG93cy93aW4uYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglGSU5EX1duZFB0ciBzaG91bGQgbm90IHNldCBFUlJPUl9JTlZBTElEX1dJTkRPV19IQU5ETEUgd2hlbiBoV25kPTAuCgoJKiBtc2Rvcy9kb3NtZW0uYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglGaXhlZCBhIGNvdXBsZSBvZiBkb3NtZW0gYmxvY2sgcmVzaXplIGJ1Z3MuCgoJKiBncmFwaGljcy9kZHJhdy5jOiBMaW9uZWwgVWxtZXIgPHVsbWVyQGRpcmVjdHByb3ZpZGVyLm5ldD4KCS0gbm8gbW9yZSAzRCBjYXBhYmlsaXRpZXMgaWYgRGlyZWN0M0Qgc3VwcG9ydCBpcyBub3QgY29tcGlsZWQgaW4KCS0gc29tZSBkZWJ1ZyBtZXNzYWdlcyBjbGVhbi11cCAocmVwbGFjZWQgZnByaW50ZnMgYnkgRFVNUHMpCgoJKiBtaXNjL21haW4uYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglXZSBnb3QgcGFzc2VkIGEgTlVMTCBEaWFsZWN0IHB0ciBhbmQgYWNjZXNzZWQgaXQgdW5wcm90ZWN0ZWQuCgoJKiBzZXJ2ZXIvZmlsZS5jLCBzZXJ2ZXIvbWFwcGluZy5jLCBpbmNsdWRlL3NlcnZlci9vYmplY3QuaCwgbWVtb3J5L3ZpcnR1YWwuYzoKCUFkZGVkIHN1cHBvcnQgZm9yIG1hcHBpbmdzIHdpdGggbm8gYXNzb2NpYXRlZCBmaWxlLgoKCSogaW5jbHVkZS9zZXJ2ZXIuaCwgaW5jbHVkZS9zZXJ2ZXIvcHJvY2Vzcy5oLCBzY2hlZHVsZXIvY2xpZW50LmMsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9yZXF1ZXN0LmMsIHNlcnZlci90cmFjZS5jOgoJUmVtb3ZlZCBkc3RfaGFuZGxlIGluIGR1cGxpY2F0ZV9oYW5kbGUgcmVxdWVzdC4KCUFkZGVkIGluaGVyaXQgZmxhZyBpbiBjcmVhdGVfbWFwcGluZyByZXF1ZXN0LgoKCSogaW5jbHVkZS9vYWlkbC5oLCBpbmNsdWRlL3dpbmUvb2JqX29sZWF1dC5oLCBvbGUvc2FmZWFycmF5LmMsIG9sZS92YXJpYW50LmM6CglGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRlZCBzdXBwb3J0IGZvciBhcnJheXMgYW5kIHNhZmUgYXJyYXlzIGluIFZBUklBTlQgZGF0YQoJc3RydWN0dXJlcy4gQWxzbyBtb3ZlZCB0aGUgU0FGRUFSUkFZIGRlZmluaXRpb24gKHlldCBhZ2FpbikgdG8gdGhlCglvYmpfb2xlYXV0LmggZmlsZS4KCgkqIHdpbmUuaW5pOiBBbmRyZWFzIE1vaHIgPGNpcGFtODk1QGNpcDEuaW5kLnVuaS1zdHV0dGdhcnQuZGU+CglGaXhlZCBGaWxlc3lzdGVtIGRvY3VtZW50YXRpb24uCgoJKiBpbmNsdWRlL2JpdG1hcHMvQXR0aWMvb2JtX2ZvbGRlciwgaW5jbHVkZS9iaXRtYXBzL0F0dGljL29ibV9mb2xkZXIyOgoJUGF2ZWwgUm9za2luIDxwYXZlbF9yb3NraW5AZ2VvY2l0aWVzLmNvbT4KCU1hZGUgZm9sZGVyIGljb25zIGdyYXkteWVsbG93IGluc3RlYWQgb2YgYmx1ZS4KCgkqIHdpbmRvd3MvbWVzc2FnZS5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglPcmRlciBvZiBzZW5kIG1lc3NhZ2UgcHJvY2Vzc2luZyB3YXMgbm90IHJlc3BlY3RlZCBhbmQgdGhlIG1lc3NhZ2UKCXN0YWNrZWQgbGFzdCBmaW5pc2hlZCBhZnRlciB0aGUgbWVzc2FnZSBzdGFja2VkIGZpcnN0LgoKCSogd2luZG93cy93aW5wb3MuYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJQWRkZWQgY2hlY2tzIHRvIGd1YXJkIGFnYWluc3QgTlVMTCBhY3RpdmUgd2luZG93LgoKCSogd2luZG93cy9kaWFsb2cuYzogTm9ybWFuIFN0ZXZlbnMgPG5vcm1hbkBhcmNhZHkudS1uZXQuY29tPgoJRG9uJ3QgY2hlY2sgY2hpbGRyZW4gb2YgZGlzYWJsZWQgb3IgaW52aXNpYmxlIGNvbnRyb2xzIGZvciBkaWFsb2cKCWtleWJvYXJkIGFjY2VsZXJhdG9ycy4gRml4ZXMgcHJvYmxlbXMgd2l0aCBkaWFsb2dzIHdpdGggdGFiIGJveGVzLgoKCSogb2xlL2NvbXBvYmouYywgcmVsYXkzMi9vbGUzMi5zcGVjOgoJRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50ZWQgdGhlIENvVGFza01lbVJlYWxsb2MgQVBJLiBBbHNvIGNsZWFuLXVwIGFyb3VuZCB0aGF0IEFQSQoJY2FsbC4KCgkqIG9sZS9zdG9yYWdlMzIuYzogVGh1eSBOZ3V5ZW4gPHRodXlAbWFjYWRhbWlhbi5jb20+CglBZGRlZCBhIG1pc3NpbmcgUmVsZWFzZS4KCVNUR01fQ1JFQVRFIHNob3VsZCB0cmFuc2xhdGUgdG8gQ1JFQVRFX0FMV0FZUy4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KRnJpIEZlYiAyNiAxMjozMzoyMSAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogREVWRUxPUEVSUy1ISU5UUzogVXBkYXRlZCBmb3IgbmV3IG5hbWluZyBjb252ZW50aW9ucy4KCgkqICovKjogTGFyZ2Utc2NhbGUgcmVuYW1pbmcgb2YgYWxsIFdpbjMyIGZ1bmN0aW9ucyBhbmQgdHlwZXMgdG8KIAl1c2UgdGhlIHN0YW5kYXJkIFdpbmRvd3MgbmFtZXMuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRodSBGZWIgMjUgMTg6MTE6NDAgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG1pc2MvbWFpbi5jOiBBbGJlcnQgZGVuIEhhYW4gPGFsYmVydGRAY29yZWwuY2E+CglGb3IgdmFyaW91cyByZWFzb25zIHNvbWUgb2Ygb3VyIGxpYndpbmUgZXhlY3V0YWJsZXMgbXVzdCBoYXZlIGEgIi4iIGluCgl0aGVpciBmaWxlIG5hbWVzLiBUaGUgIi4iIGNhdXNlcyB0cm91YmxlIHdoZW4gdGhlIGZpbGUgbmFtZSBpcyB1c2VkIGFzCgl0aGUgY2xhc3MgbmFtZSBmb3IgYW4gWCByZXNvdXJjZSBhcyB3aW5lIGRvZXMgZm9yIGNvbW1hbmQgbGluZSBwYXJzaW5nCgl1bmRlciBYLgoKCSogd2luZG93cy93aW4uYzoKCU1ha2UgR2V0V2luZG93TG9uZyhHV0xfSFdORFBBUkVOVCkgcmV0dXJuIHRoZSBzYW1lIHRoaW5nIGFzCglHZXRQYXJlbnQzMjsgc3VnZ2VzdGVkIGJ5IERhdmUgUGlja2xlcyA8ZGF2ZXBAbnVnYXRlLmRlbW9uLmNvLnVrPi4KCgkqIGluY2x1ZGUvZ2RpLmgsIGluY2x1ZGUvaGVhcC5oLCBpbmNsdWRlL3dpbnR5cGVzLmg6CglEYXZpZCBMdXllciA8bHV5ZXJAdWNzLnV3YS5lZHUuYXU+CglBZGRlZCBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSkgb24gc3RhdGljIGlubGluZSBmdW5jdGlvbnMgZGVjbGFyZWQgaW4KCWhlYWRlciBmaWxlcy4KCgkqIGRvY3VtZW50YXRpb24vYnVncmVwb3J0czogQWRhbSB0aGUgSmF6eiBHdXkgPG1hZ2ljYm94QGJlc3R3ZWIubmV0PgoJQWRkZWQgIlRoZSBFYXN5IFdheSIgYW5kICJUaGUgSGFyZCBXYXkiLCBsYXJnZWx5IGZhdm9yaW5nIHRoZSBlYXN5IHdheSwKCXdoaWNoIHVzZXMgbXkgYnVnX3JlcG9ydC5wbCBzY3JpcHQuCglBZGRlZCBpbmZvIG9uIGEgY29tbWFuZCB0aGF0IGNhbiBiZSBydW4gb24gYWxsIHNoZWxscyB0byBwcmludCBkZWJ1ZwoJbXNncyB0byBhIGZpbGUgYW5kIG5vdCB0byB4dGVybS4KCgkqIG1zZG9zL2RwbWkuYzoKCU1hcmN1cyBNZWlzc25lciA8bXNtZWlzc25Ac3R1ZC5pbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCU5lZWRzIHRocmVhZC5oIGZvciBub24tTGludXguCgoJKiBpbmNsdWRlL3dpbi5oLCB3aW5kb3dzL3dpbi5jOgoJRnJhbmNvaXMgQm9pc3ZlcnQgPGZyYW5jb2lzQG1hY2FkYW1pYW4uY29tPgoJQWRkaW5nIG9mIG5ldyBmdW5jdGlvbnMgdG8gbWFrZSB0aGUgd25kIHN0cnVjdCB0aHJlYWQgc2FmZS4gQWRkaW5nIG9mCglpcmVmQ291bnQgaW4gd25kIHN0cnVjdC4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBjb25zb2xlL25jdXJzZXMuYywgaW5jbHVkZS9hY2NvbmZpZy5oLCBpbmNsdWRlL2NvbmZpZy5oLmluOgoJTWljaGFlbCBWZWtzbGVyIDxtdmVrc2xlckB0ZWNodW5peC50ZWNobmlvbi5hYy5pbD4KCUFkZGVkIGNvbmZpZ3VyZSBjaGVjayBmb3IgZ2V0YmtnZCBhbmQgZGVmaW5lIEhBVkVfR0VUQktHRC4KCgkqIGluY2x1ZGUvb2NpZGwuaCwgaW5jbHVkZS9vbGUyLmgsIGluY2x1ZGUvb2xlaWRsLmgsIGluY2x1ZGUvd2luZS9vYmpfY2FjaGUuaCwgaW5jbHVkZS93aW5lL29ial9jb25uZWN0aW9uLmgsIGluY2x1ZGUvd2luZS9vYmpfY29udHJvbC5oLCBpbmNsdWRlL3dpbmUvb2JqX2lucGxhY2UuaCwgaW5jbHVkZS93aW50eXBlcy5oLCBvbGUvb2xlZm9udC5jOgoJUGF1bCBRdWlubiA8cGF1bHFAY29yZWwuY2E+CglNYW55IGludGVyZmFjZSBkZWNsYXJhdGlvbnMgdGhhdCBvcmlnaW5hdGVkIGZyb20gb2xlaWRsLmgsIG9haWRsLmggYW5kCglvY2lkbC5oIHNlcGFyYXRlZCBpbnRvIHNvbWV3aGF0IHJlbGV2YW50IG9ial8qIGZpbGVzLgoKCSogZmlsZXMvZHJpdmUuYywgb2xlL2NvbXBvYmouYywgcmVzb3VyY2VzL3N5c3Jlcy5jOgoJTWljaGFlbCBWZWtzbGVyIDxtdmVrc2xlckB0ZWNodW5peC50ZWNobmlvbi5hYy5pbD4KCUZpeGVkIHdhcm5pbmcgYW5kIGNvbXBpbGF0aW9uIGVycm9ycy4KCgkqIGluY2x1ZGUvd2luZG93cy5oOiBNaWNoYWVsIFZla3NsZXIgPG12ZWtzbGVyQHRlY2h1bml4LnRlY2huaW9uLmFjLmlsPgoJUmVtb3ZlZCBpbmNsdWRlcyBvZiB3aW5lLyogaGVhZGVycy4KCgkqIGxvYWRlci9yZXNvdXJjZS5jOiBQYXZlbCBSb3NraW4gPHBhdmVsX3Jvc2tpbkBnZW9jaXRpZXMuY29tPgoJTWFkZSBtZXNzYWdlICJSZXNvdXJjZSBub3QgZm91bmQiIFdBUk4uCgoJKiBkbGxzL3NoZWxsMzIvY29udG1lbnUuYywgaW5jbHVkZS9zaGxvYmouaDoKCUFkcmlhbiBUaHVyc3RvbiA8YWRyaWFudEBDT1JFTC5DQT4KCS0gVXNlIHRoZSBuZXcgQ09NIGRlZmluaXRpb24gbWFjcm9zIGluIHRoZSBoZWFkZXIuCgktIFB1dCB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIG9iamVjdCBpbiB0aGUgY29udG1lbnUuYy4KCS0gTWFrZSBhcHByb3ByaWF0ZSBuYW1lIGNoYW5nZXMgaW4gY29udG1lbnUuYy4KCgkqIG1pc2MvcmVnaXN0cnkuYywgaW5jbHVkZS93aW5yZWcuaDogUGF1bCBRdWlubiA8cGF1bHFAY29yZWwuY2E+CglaeWdvIEJsYXhlbGwgPHp5Z29iQGNvcmVsLmNhPgoJTW9kaWZpZXMgcGFyYW1ldGVyIGxpc3Qgb2YgYSBjb3VwbGUgb2YgZnVuY3Rpb25zIHRvIGNvbXBseSB3aXRoIFNESy4KCgkqIHdpbmRvd3Mvc2Nyb2xsLmM6IFBhc2NhbCBMZXNzYXJkIDxwYXNjYWxAbWFjYWRhbWlhbi5jb20+CglTY3JvbGxEQzMyIG1vZGlmaWVkIHRvIHJldHVybiByZWN0IGluIGxvZ2ljYWwgY29vcmRpbmF0ZS4KCgkqIGluY2x1ZGUvd2luZS9vYmpfb2xlYXV0Lmg6IEFkcmlhbiBUaHVyc3RvbiA8YWRyaWFudEBDT1JFTC5DQT4KCUFkZHMgQysrIG5hbWVsZXNzIHVuaW9uIHN1cHBvcnQgdG8gdGFnVkFSSUFOVC4KCgkqIGluY2x1ZGUvbW1zeXN0ZW0uaCwgaW5jbHVkZS9vYWlkbC5oLCBpbmNsdWRlL29sZWF1dG8uaDoKCUFkcmlhbiBUaHVyc3RvbiA8YWRyaWFudEBDT1JFTC5DQT4KCU1vdmVkIHNvbWUgZGVmaW5pdGlvbnMgb3V0IG9mIG9sZWF1dG8uaCBhbmQgaW50byBvYWlkbC5oIHRvIGNvbmZvcm0gdG8gdGhlIFNESy4KCVJlbW92ZWQgYSByZWR1bmRhbnQgaW5jbHVkZS4KCUFkZGVkIHNvbWUgYysrIHByb3RlY3Rpb24uCgpXZWQgRmViIDI0IDE1OjU4OjUxIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3NoZWxsMzIvZW51bWlkbGlzdC5jLCBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvcGlkbC5oLCBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmMsIGluY2x1ZGUvc2hsb2JqLmg6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUNoYW5nZWQgcGlkbCBzdHJ1Y3R1cmUgdG8gbWF0Y2ggdGhlIHBpZGwncyB1c2VkIGluIGxuay1maWxlcy4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJSW1wbGVtZW50ZWQgcmVhZGluZyBvZiAqLmxuay1maWxlcy4KCgkqIGluY2x1ZGUvd2luZS9vYmpfc2hlbGxsaW5rLmg6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCW5ldyBmaWxlLCBpbmNsdWRpbmcgdGhlIElTaGVsbExpbmsgZGVmaW5pdGlvbi4KCgkqIGluY2x1ZGUvbW9kdWxlLmgsIGluY2x1ZGUvcGVfaW1hZ2UuaCwgbG9hZGVyL2VsZi5jLCBsb2FkZXIvbWFpbi5jLCBsb2FkZXIvbW9kdWxlLmMsIGxvYWRlci9wZV9pbWFnZS5jLCBsb2FkZXIvcGVfcmVzb3VyY2UuYywgbG9hZGVyL3Jlc291cmNlLmMsIGxvYWRlci90YXNrLmMsIHNjaGVkdWxlci90aHJlYWQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJTW9kaWZpZWQgcHJvY2VzcyBjcmVhdGlvbiBzZXF1ZW5jZTogY2FsbCBQRV9DcmVhdGVNb2R1bGUgaW4gdGhlCgljb250ZXh0IG9mIHRoZSBuZXcgcHJvY2VzcyAoaW4gVEFTS19DYWxsVG9TdGFydCkuCglDaGFuZ2VkIGFsbCBQRS9Nb2R1bGUgcm91dGluZXMgc28gYXMgdG8gYWx3YXlzIG9wZXJhdGUgb24gdGhlIGN1cnJlbnQKCXByb2Nlc3M7IGFkYXB0ZWQgYWxsIGNhbGxlcnMuCgoJKiBtc2Rvcy9kb3Njb25mLmMsIG1zZG9zL2Rvc21lbS5jLCBtc2Rvcy9kcG1pLmMsIG1zZG9zL2ludDE2LmMsIG1zZG9zL2ludDIxLmMsIG1zZG9zL2ludDJhLmMsIG1zZG9zL2ludGVycnVwdHMuYywgbXNkb3MvaW9wb3J0cy5jLCBtc2Rvcy92eGQuYywgbXNkb3MveG1zLmMsIG9sZS9zdG9yYWdlLmMsIG9sZS90eXBlbGliLmMsIHByb2dyYW1zL2F2aXRvb2xzL2ljaW5mby5jLCByZWxheTMyL3JlbGF5Mzg2LmMsIHRvb2xzL2J1aWxkLmMsIHdpbmRvd3MvY2xpcGJvYXJkLmMsIHdpbmRvd3MvaW5wdXQuYywgZGxscy9zaGVsbDMyL2NvbnRtZW51LmMsIGRsbHMvc2hlbGwzMi9lbnVtaWRsaXN0LmMsIGRsbHMvc2hlbGwzMi9mb2xkZXJzLmMsIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYywgZGxscy9zaGVsbDMyL3NoZWxsb2xlLmMsIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmMsIGdyYXBoaWNzL2QzZGRldmljZXMuYywgZ3JhcGhpY3MvZDNkZXhlY3V0ZWJ1ZmZlci5jLCBncmFwaGljcy9kM2RsaWdodC5jLCBncmFwaGljcy9kM2RtYXRlcmlhbC5jLCBncmFwaGljcy9kM2R0ZXh0dXJlLmMsIGdyYXBoaWNzL2QzZHZpZXdwb3J0LmMsIGdyYXBoaWNzL2RkcmF3LmMsIGxvYWRlci9tYWluLmMsIG1lbW9yeS9hdG9tLmMsIG1pc2MvbHN0ci5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglPcHRpbWl6ZWQgYXdheSBtb3JlIGluY2x1ZGVzLCByZWFkZGVkIHNvbWUgI2luY2x1ZGVzIGZvciBuZWNlc3NhcnkKCXByb3RvdHlwZXMuCgoJKiBtc2Rvcy9pbnQyZi5jOiA8c21pbEBtZWNoYXRyb25pa2EuaHU+CglBZGRlZCBsb3ctbGV2ZWwgTmV0d2FyZSBpbnN0YWxsYXRpb24gY2hlY2suCgoJKiBpbmNsdWRlL2NvbnNvbGUuaCwgY29uc29sZS9pbnRlcmZhY2UuYywgY29uc29sZS9uY3Vyc2VzLmM6CglKb3NlcGggUHJhbmV2aWNoIDxqcHJhbmV2aWNoQGx5Y29zLmNvbT4KCUFkZGVkIEdldEJhY2tncm91bmRDb2xvciBjYWxsIHRvIHRoZSBjb25zb2xlIHN0cnVjdC4gV2lsbCBiZSB1c2VkCglsYXRlci4KCgkqIG1zZG9zL2ludDEwLmM6IEpvc2VwaCBQcmFuZXZpY2ggPGpwcmFuZXZpY2hAbHljb3MuY29tPgoJQnVnZml4ZXMgZm9yIElOVCAxMC8wQiAoU2V0QmFja2dyb3VuZENvbG9yKSB0byB3b3JrIHByb3Blcmx5LgoJKEludGVycnVwdCBsaXN0IGRpZCBub3QgaGF2ZSBjb3JyZWN0LikKCgkqIHdpbmRvd3MvZGlucHV0LmM6IExpb25lbCBVbG1lciA8dWxtZXJAZGlyZWN0cHJvdmlkZXIubmV0PgoJQWRkZWQgc3R1YnMgZm9yIHR3byBtaXNzaW5nIG1ldGhvZHMgb2YgRElucHV0LgoKCSogb2xlL3N0Z19iaWdibG9ja2ZpbGUuYzogVGh1eSBOZ3V5ZW4gPHRodXlAbWFjYWRhbWlhbi5jb20+CglGaXhlZCBhIGJ1Zy4KCgkqIG9sZS9zdG9yYWdlMzIuYywgb2xlL3N0b3JhZ2UzMi5oOiBUaHV5IE5ndXllbiA8dGh1eUBtYWNhZGFtaWFuLmNvbT4KCUFkZGVkIHN1cHBvcnQgZm9yIGxhcmdlciBmaWxlcy4KCgkqIG9iamVjdHMvZGliLmM6IEh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJRml4ZXMgYnVmZmVyIG92ZXJydW4gcHJvYmxlbXMgd2l0aCBHZXRESUJpdHMuCgoJKiB3aW5kb3dzL21lc3NhZ2UuYzogU3RlcGhhbmUgTHVzc2llciA8c3RlcGhhbmVAbWFjYWRhbWlhbi5jb20+CglGaXhlZCBzb21lIFNlbmRNZXNzYWdlIGJ1Z3MuCgoJKiBvbGUvY29tcG9iai5jOiBTeWx2YWluIFN0Lkdlcm1haW4gPHN5bHZhaW5AbWFjYWRhbWlhbi5jb20+CglGaXggQ09NX0V4dGVybmFsTG9ja0ZyZWVMaXN0IHRvIGRvIG5vdCBmYWlsIHdpdGggYW4gZW1wdHkgbGlzdC4KCk1vbiBGZWIgMjIgMTA6MjE6NTYgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG1pc2MvTWFrZWZpbGUuaW4sIG1pc2Mvc3RyaW5nLmM6CglaeWdvIEJsYXhlbGwgPHpibGF4ZWxsQGZ1cnJ5dGVycm9yLm9yZz4KCUltcGxlbWVudGVkIHNvbWUgQ1JURExMIHN0cmluZyBmdW5jdGlvbnMuCgoJKiBvYmplY3RzL2VuaG1ldGFmaWxlLmMsIG9iamVjdHMvbGluZWRkYS5jLCBvYmplY3RzL21ldGFmaWxlLmMsIG9iamVjdHMvdGV4dC5jLCB3aW5kb3dzL2NhcmV0LmMsIHdpbmRvd3MvY2xpcGJvYXJkLmMsIHdpbmRvd3MvZGlhbG9nLmMsIHdpbmRvd3MvZHJpdmVyLmMsIHdpbmRvd3MvaG9vay5jLCB3aW5kb3dzL2lucHV0LmMsIHdpbmRvd3Mva2V5Ym9hcmQuYywgd2luZG93cy9tZGkuYywgd2luZG93cy9tb3VzZS5jLCB3aW5kb3dzL211bHRpbW9uLmMsIHdpbmRvd3MvcmVjdC5jLCB3aW5kb3dzL3Njcm9sbC5jLCB3aW5kb3dzL3RpbWVyLmMsIHdpbmRvd3MvdXNlci5jLCB3aW5kb3dzL3dpbnByb2MuYywgaW5jbHVkZS9tZW51LmgsIGluY2x1ZGUvbW1zeXN0ZW0uaCwgaW5jbHVkZS9zeXNtZXRyaWNzLmgsIGluY2x1ZGUvdmZ3LmgsIG11bHRpbWVkaWEvYXVkaW8uYywgbXVsdGltZWRpYS9kcGxheS5jLCBtdWx0aW1lZGlhL2Rzb3VuZC5jLCBtdWx0aW1lZGlhL2luaXQuYywgbXVsdGltZWRpYS9qb3lzdGljay5jLCBtdWx0aW1lZGlhL21jaWFuaW0uYywgbXVsdGltZWRpYS9tY2ljZGEuYywgbXVsdGltZWRpYS9tY2ltaWRpLmMsIG11bHRpbWVkaWEvbWNpc3RyaW5nLmMsIG11bHRpbWVkaWEvbWNpd2F2ZS5jLCBtdWx0aW1lZGlhL21pZGkuYywgbXVsdGltZWRpYS9taXhlci5jLCBtdWx0aW1lZGlhL21tYXV4LmMsIG11bHRpbWVkaWEvbW1pby5jLCBtdWx0aW1lZGlhL21tc3lzdGVtLmMsIG11bHRpbWVkaWEvdGltZS5jLCBvYmplY3RzL2N1cnNvcmljb24uYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJU29tZSBtb3JlIHJlY3Vyc2l2ZSBpbmNsdWRlIGZpeGVzL29wdGltaXphdGlvbnMuCgoJKiBkbGxzL3NoZWxsMzIvY29udG1lbnUuYywgZGxscy9zaGVsbDMyL2VudW1pZGxpc3QuYywgZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jLCBkbGxzL3NoZWxsMzIvcGlkbC5oLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCS0gZWxpbWluYXRlZCBvbmUgZWxlbWVudCBvZiB0aGUgcGlkbCBzdHJ1Y3QgKGR3U0ZHQU8pCgktIGNoYW5nZWQgc29tZSBzdXBlcmZsb3VzIEZJWE1FCgoJKiBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmMsIGluY2x1ZGUvd2luZS9vYmpfZHJhZ2Ryb3AuaDoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJLSBoZWFkZXIgdXNlcyB0aGUgbGFzdCBtYWNyb3Mgbm93CgktIHJld3JvdGUgSURyb3BUYXJnZXQgYWNjb3JkaW5nIHRvIHRoZSBuZXcgQ09NIGhlYWRlcnMKCSAgKHdhcyBsb2NhbCBkZWNsYXJlZCBub3QgdXNpbmcgdGhlIGFscmVhZHkgd3JpdHRlbiBwcm90b3R5cGVzKQoJLSBjb3JyZWN0ZWQgRHJvcCBtZXRob2QgKHdyb25nIHBhcmFtZXRlciBjb3VudCkKCgkqIHdpbmRvd3MvZGlucHV0LmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJVXBkYXRlZCB0byB1c2UgdGhlIGxhdGVzdCBDT00gbWFjcm9zLCBJQ09NX1ZUQUJMRSBhbmQgSUNPTV9USElTLgoJQWRkZWQgdGhlIGludGVyZmFjZSBpbXBsZW1lbnRhdGlvbiBzdHJ1Y3R1cmVzLgoJSSByZW1lbWJlcmVkIGZyb20gYW4gZW1haWwgdGhhdCBldmVuIHdoZW4gYXNrZWQgZm9yIGEKCUlEaXJlY3RJbnB1dERldmljZUEgd2hhdCB3YXMgcmV0dXJuZWQgd2FzIGFuIElEaXJlY3RJbnB1dERldmljZTJBIHNvIEkKCWNvbnNpZGVyZWQgdGhhdCB3ZSB3b3VsZCBvbmx5IGltcGxlbWVudCB0aGUgbGF0dGVyLiBUaGUKCUlEaXJlY3RJbnB1dERldmljZUFfeHh4IG1ldGhvZHMgaGF2ZSBiZWVuIHJlbmFtZWQgdG8KCUlEaXJlY3RJbnB1dERldmljZTJBX3h4eCwgYW5kIHdlIGFsd2F5cyByZXR1cm4gb3VyIElEaXJlY3RJbnB1dERldmljZTJBCglpbXBsZW1lbnRhdGlvbiBhcyBiZWZvcmUuCglSZW5hbWVkIHRoZSBpbXBsZW1lbnRhdGlvbiBzdHJ1Y3R1cmVzIHRvIFh4eEltcGwuCgoJKiBpbmNsdWRlL2RpbnB1dC5oOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCVVzZSBsYXRlc3QgQ09NIG1hY3JvcwoJRGVmaW5lZCB0aGUgSURpcmVjdElucHV0RGV2aWNlQSBpbnRlcmZhY2UgaW5kZXBlbmRlbnRseSBmcm9tCglJRGlyZWN0SW5wdXREZXZpY2UyQS4KCVJlbW92ZWQgdGhlIDMyIHN1ZmZpeCBvZiB0aGUgaW50ZXJmYWNlcy4gSG9wZWZ1bGx5IHRoaXMgd2lsbCBub3QKCWNhdXNlIGFueSBwcm9ibGVtIHdpdGggdGhlIHJlbmFtaW5nLgoJTW92ZWQgdGhlIGltcGxlbWVudGF0aW9uIHNwZWNpZmljIHN0dWZmIHRvIGRpbnB1dC5jICh3ZWxsLCB0aGUKCWludGVyZmFjZXMgYXQgbGVhc3QpLgoKU3VuIEZlYiAyMSAxODozNToyOCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2NoZWR1bGVyL3N5c2RlcHMuYywgaW5jbHVkZS9wcm9jZXNzLmgsIGluY2x1ZGUvdGhyZWFkLmg6CglDaGFuZ2VkIGluaXRpYWwgcHJvY2VzcyBjcmVhdGlvbiB0byBhdm9pZCBtZW1vcnkgYWxsb2NhdGlvbnMuCglSZW1vdmVkIGEgZmV3IHVudXNlZCBmaWVsZHMgaW4gUERCIGFuZCBUSERCLgoKCSogc2NoZWR1bGVyL2NsaWVudC5jLCBzY2hlZHVsZXIvdGhyZWFkLmM6CglSZW1vdmVkIHRocmVhZCBxdWV1ZSBmdW5jdGlvbnMuCglDaGFuZ2VkIGluaXRpYWwgdGhyZWFkIGNyZWF0aW9uIHRvIGF2b2lkIG1lbW9yeSBhbGxvY2F0aW9ucy4KCU1vdmVkIHNlcnZlciBzdGFydHVwIHRvIFRIUkVBRF9DcmVhdGVJbml0aWFsVGhyZWFkLgoKCSogc2NoZWR1bGVyL3N5bmNocm8uYzoKCVJlbW92ZWQgdXNlIG9mIHBlci10aHJlYWQgd2FpdF9zdHJ1Y3QsIGNsZWFuZWQgdXAgYSBiaXQuCgoJKiBzY2hlZHVsZXIvazMyb2JqLmMsIG1lbW9yeS92aXJ0dWFsLmM6IFJlbW92ZWQgTUVNX01BUFBFRF9GSUxFX09wcy4KCgkqIGluY2x1ZGUvd2lubnQuaDogQWRkZWQgYSBmZXcgZXhjZXB0aW9uIGNvZGVzLgoKCSogd2luZG93cy93aW4uYywgaW5jbHVkZS9tbXN5c3RlbS5oLCBpbmNsdWRlL3BhdGguaCwgaW5jbHVkZS9wcm9ncmVzcy5oLCBpbmNsdWRlL3F1ZXVlLmgsIGluY2x1ZGUvcmVzb3VyY2UuaCwgaW5jbHVkZS9zdHJ1Y3QzMi5oLCBpbmNsdWRlL3VwZG93bi5oLCBpbmNsdWRlL3dpbmRvd3MuaCwgaW5jbHVkZS93aW5wb3MuaCwgbG9hZGVyL21haW4uYywgbWlzYy9jb21tZGxnLmMsIG1pc2Mvd2luc29ja19kbnMuYywgbXVsdGltZWRpYS9tbXN5c3RlbS5jLCBpbmNsdWRlL2N1cnNvcmljb24uaCwgaW5jbHVkZS9kZGVfYXRvbS5oLCBpbmNsdWRlL2RkcmF3LmgsIGluY2x1ZGUvZGlzcGRpYi5oLCBpbmNsdWRlL2Rvc2V4ZS5oLCBpbmNsdWRlL2Rzb3VuZC5oLCBjb250cm9scy9tZW51LmM6CglNaWNoYWVsIFZla3NsZXIgPG12ZWtzbGVyQHRlY2h1bml4LnRlY2huaW9uLmFjLmlsPgoJLSBGaXggaGVhZGVycyB0byBpbmNsdWRlIGxlc3Mgb3Igc21hbGxlciBoZWFkZXIgZmlsZXMuCgktIEZpeCBoZWFkZXIgYW5kIHNvdXJjZSBmaWxlcyB0byBpbmNsdWRlIG1pc3NpbmcgaGVhZGVyIGZpbGVzIHRvIGF2b2lkCgkgIHdhcm5pbmdzIGFuZCBlcnJvcnMuCgoJKiBsb2FkZXIvc2lnbmFsLmMsIG1lbW9yeS9sZHQuYywgbWlzYy9wb3J0LmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUNoYW5nZSAiZyIgKGdlbmVyYWwgcmVncykgaW50byAiciIgKGhhcmRyZWdzKSBpbiBjbG9uZSAvIG1vZGlmeV9sZHQgLwoJd2luZV9zaWdhY3Rpb24gX19QSUNfXyBjYXNlcywgc2luY2UgImciIHdpbGwgbm90IHdvcmsgd2l0aAoJLWZvbWl0LWZyYW1lLXBvaW50ZXIgKCJnIiBpcyByZWZlcmVuY2VkIHVzaW5nICVlc3Agd2hpY2ggd2FzCglpbnZhbGlkYXRlZCBiZWZvcmUpLiBCdWcgZm91bmQgYW5kIChvdGhlcikgZml4IHN1Z2dlc3RlZCBieQoJPGRhbmllbEBtYXQudXRmc20uY2w+IERhbmllbCBTZXJwZWxsLgoKCSogb2xlL29sZWZvbnQuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBtaXNzaW5nIFdJTkFQSXMuCgoJKiB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCB3aW5kb3dzL3gxMWRydi9pbml0LmMsIGxvYWRlci90YXNrLmMsIHdpbmRvd3MvZXZlbnQuYywgd2luZG93cy90dHlkcnYvZXZlbnQuYywgd2luZG93cy90dHlkcnYvaW5pdC5jLCBpbmNsdWRlL21lc3NhZ2UuaCwgaW5jbHVkZS90dHlkcnYuaCwgaW5jbHVkZS94MTFkcnYuaDoKCVN0ZXBoYW5lIEx1c3NpZXIgPHN0ZXBoYW5lQG1hY2FkYW1pYW4uY29tPgoJRml4IHByb2JsZW0gd2hlcmUgeW91IG5lZWQgbW91c2UgYWN0aXZpdHkgdG8gdW5sb2NrIHNvbWUgMTYgYml0cwoJdGhyZWFkIHdpdGggbXVsdGktdGhyZWFkZWQgYXBwcy4KClNhdCBGZWIgMjAgMTY6NDg6NTQgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHJlbGF5MzIvb2xlYXV0MzIuc3BlYywgaW5jbHVkZS9BdHRpYy9pbnRlcmZhY2VzLmgsIGluY2x1ZGUvb2FpZGwuaCwgaW5jbHVkZS9vY2lkbC5oLCBpbmNsdWRlL29sZS5oLCBpbmNsdWRlL29sZWF1dG8uaCwgaW5jbHVkZS9vbGVjdGwuaCwgaW5jbHVkZS93aW5lL29ial9vbGVhdXQuaCwgaW5jbHVkZS93aW5lL29ial9vbGVmb250LmgsIGluY2x1ZGUvd3R5cGVzLmgsIG9sZS9NYWtlZmlsZS5pbiwgb2xlL2d1aWQuYywgb2xlL29sZTJkaXNwLmMsIG9sZS9vbGVmb250LmMsIG9sZS90eXBlbGliLmM6CglGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRlZCB0aGUgT2xlQ3JlYXRlRm9udEluZGlyZWN0IG1ldGhvZCBhbmQgdGhlIGFzc29jaWF0ZWQgQ09NCglvYmplY3QuIFRoYXQgb2JqZWN0IHN1cHBvcnRzIHRoZSBJRm9udCBhbmQgSURpc3BhdGNoIGludGVyZmFjZXMuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgaW5jbHVkZS9jb25maWcuaC5pbiwgbWlzYy9wb3J0LmMsIG1pc2Mvd2luc29jay5jLCBtaXNjL3dpbnNvY2tfZG5zLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVByb2JsZW1zIHJlcG9ydGVkIGJ5IERvbmFsZCBQYWdlLCBQUiAxMDUtMTA3LgoKCSogY29uc29sZS9uY3Vyc2VzLmM6IEpvc2VwaCBQcmFuZXZpY2ggPGpwcmFuZXZpY2hAbHljb3MuY29tPgoJTW9yZSBjb21tZW50aW5nLCBiZXR0ZXIgZGVidWdnaW5nIG9mIGNvbG9yIHByb2JsZW1zLCBhbmQgc3VwcG9ydCBmb3IKCXRoZSBuZXcgVGVybWluYWxUeXBlIG9wdGlvbiBpbiB3aW5lLmluaS4gVGhpcyBhbGxvd3MgdXMgdG8gc2VsZWN0Cgl3aGljaCB0ZXJtaW5hbCB0eXBlIHdlIGFyZSByZWFsbHkgdXNpbmcgc28gdGhhdCB3ZSBjYW4sIGZvciBleGFtcGxlLAoJdXNlIGl0cyBjb2xvciBjYXBhYmlsaXRpZXMuCgoJKiBjb25zb2xlL2ludGVyZmFjZS5jLCBpbmNsdWRlL2NvbnNvbGUuaDoKCUpvc2VwaCBQcmFuZXZpY2ggPGpwcmFuZXZpY2hAbHljb3MuY29tPgoJU3VwcG9ydCBmb3IgdGhlIG5ldyBJbml0aWFsUm93cyBhbmRmIEluaXRpYWxDb2x1bW5zIG9wdGlvbnMgaW4gd2luZS5pbmkKCShHZW5lcmljIHJlcGxhY2VtZW50IGZvciBYdGVybVJlc29sdXRpb24gb3B0aW9uLi4uKQoKCSogbXNkb3MvaW50MTAuYzogSm9zZXBoIFByYW5ldmljaCA8anByYW5ldmljaEBseWNvcy5jb20+CglGaXggKkRVSCogcHJvYmxlbSBjYXVzaW5nIGxvdHMgYW5kIGxvdHMgb2YgdW5uZWNlc3NhcnkgQWxsb2NDb2xvciBlcnJvcnMuCgoJKiBjb25zb2xlL3h0ZXJtLmM6IEpvc2VwaCBQcmFuZXZpY2ggPGpwcmFuZXZpY2hAbHljb3MuY29tPgoJUmVtb3ZhbCBvZiBvYnNvbGV0ZSBYdGVybVJlc29sdXRpb24gb3B0aW9uLgoKCSogZG9jdW1lbnRhdGlvbi9jb25zb2xlLCB3aW5lLmluaToKCUpvc2VwaCBQcmFuZXZpY2ggPGpwcmFuZXZpY2hAbHljb3MuY29tPgoJQWRkIGluZm9ybWF0aW9uIGFib3V0IHRoZSBuZXcgd2luZS5jb25mIG9wdGlvbnMuCgoJKiBkZWJ1Z2dlci9zdGFjay5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGJhY2t0cmFjayBpc3N1ZSBvbiAxNmJpdCBjb2RlLgoKCSogZGVidWdnZXIvbXNjLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQ2hhbmdlZCBMb2NhdGVEZWJ1Z0luZm9GaWxlIHRvIHJlZHVjZSBzdGFjayBjb25zdW1wdGlvbiAoZnJvbSAxM2sgdG8gMmsgISEpCgoJKiBkZWJ1Z2dlci9pbmZvLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgY29tbWVudCBmb3IgV2luZSBkb2N1bWVudGF0aW9uLgoKCSogaW5jbHVkZS9zZXJ2ZXIuaCwgaW5jbHVkZS9zZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvcmVxdWVzdC5jLCBzZXJ2ZXIvdHJhY2UuYzoKCUFkZGVkIGdldC9zZXRfaGFuZGxlX2luZm8gcmVxdWVzdC4KCgkqIGdyYXBoaWNzL3gxMWRydi9kaWIuYzoKCUZpeGVkIGVuZC1vZi1saW5lIGJ1ZyBpbiBYMTFEUlZfRElCX1NldEltYWdlQml0c19STEU0LgoKCSogdG9vbHMvd3JjL0NIQU5HRVMsIHRvb2xzL3dyYy9nZW5yZXMuYywgdG9vbHMvd3JjL25ld3N0cnVjLmMsIHRvb2xzL3dyYy9wYXJzZXIueSwgdG9vbHMvd3JjL3dyYy5oLCB0b29scy93cmMvd3JjdHlwZXMuaCwgdG9vbHMvd3JjL3dyaXRlcmVzLmM6CglCZXJ0aG8gU3R1bHRpZW5zIDxiZXJ0aG9AcGFudGVyLnNvY2kuYWF1LmRrPgoJRml4IGEgY291cGxlIG9mIDY0Yml0IHBsYXRmb3JtIHByb2JsZW1zIGFuZCBzcGVlZCB1cCBjb21waWxhdGlvbi4gU2VlCgl0b29scy93cmMvQ0hBTkdFUyBmb3IgZGV0YWlscy4KCgkqIG11bHRpbWVkaWEvbW1pby5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCW1taW9EZXNjZW5kOiBkZWJ1Z291dHB1dCBlbmhhbmNlZCwgRklORExJU1QvRklORFJJRkYgc2hvdWxkIENoZWNrIHRoZQoJY29ycmVjdCBja2lkIChMSVNUL1JJRkYpIHRvby4gKHZlcmlmaWVkIGFnYWluc3QgbWNpYXZpMzIuZGxsKQoKCSogTWFrZWZpbGUuaW46IFp5Z28gQmxheGVsbCA8emJsYXhlbGxAZnVycnl0ZXJyb3Iub3JnPgoJQWRkZWQgYSBjaGVjayBmb3IgdGhlIGV4aXN0ZW5jZSBvZiB3aW5lLnN5bSBiZWZvcmUgaW5zdGFsbGluZyBpdC4KCgkqIGluY2x1ZGUvb2xlMi5oLCBvbGUvb2xlMi5jLCByZWxheTMyL29sZTMyLnNwZWM6CglGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglBZGRlZCBzb21lIG5ldyBzdHVicyBmb3IgdGhlIE9MRSBtZW51IGRlc2NyaXB0b3IgbWV0aG9kcy4KCkZyaSBGZWIgMTkgMTY6NTA6MjQgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MvcXVldWUuYzogTWFydGluIFdhbGtlciA8bXdhbGtlckBjYWNpLmNvLnVrPgoJRml4ZWQgbWVzc2FnZSBmaWx0ZXJpbmcgY2hlY2suCgoJKiByZWxheTMyL2FkdmFwaTMyLnNwZWMsIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYywgZGxscy9udGRsbC9udC5jLCBkbGxzL250ZGxsL3J0bC5jLCBpbmNsdWRlL250ZGRrLmgsIGluY2x1ZGUvbnRkZWYuaCwgaW5jbHVkZS9udGRsbC5oLCBpbmNsdWRlL3F1ZXVlLmgsIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbm50LmgsIGluY2x1ZGUvd2lucmVnLmgsIG9sZS9vbGVvYmouYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJLSBtYWRlIHRoZSBzZWN1cml0eSBmdW5jdGlvbnMgY29uc2lzdGVudC4gYWR2YXBpIGNhbGxzIGRvd24gdG8gbnRkbGwgbm93CgktIG5ldyBTZXRTZWN1cml0eURlc2NyaXB0b3JHcm91cCwgIFNldFNlY3VyaXR5RGVzY3JpcHRvck93bmVyLAoJICBTZXRTZWN1cml0eURlc2NyaXB0b3JTYWNsLCBHZXRTZWN1cml0eURlc2NyaXB0b3JEYWNsCgktIG50LWhlYWRlciBjbGVhbnVwCgoJKiBkbGxzL250ZGxsL3J0bC5jLCBpZjE2MzIvYnVpbHRpbi5jLCBtaXNjL2NwdS5jLCB3aW4zMi9rZXJuZWwzMi5jOgoJSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglGaXhlZCBhIGZldyBicm9rZW4gaW5jbHVkZXMuCgoJKiB3aW5kb3dzL25vbmNsaWVudC5jOiBSZXZlcnRlZCBicm9rZW4gY2xvc2UgYnV0dG9uIGNoYW5nZS4KCgkqIGRsbHMvY29tY3RsMzIvaGVhZGVyLmMsIGRsbHMvY29tY3RsMzIvcmViYXIuYywgZGxscy9jb21jdGwzMi90YWIuYywgZGxscy9jb21jdGwzMi90b29sYmFyLmMsIGRsbHMvY29tY3RsMzIvdG9vbHRpcHMuYywgZGxscy9jb21jdGwzMi91cGRvd24uYywgZGxscy9zaGVsbDMyL2NvbnRtZW51LmMsIGRsbHMvc2hlbGwzMi9kYXRhb2JqZWN0LmMsIGdyYXBoaWNzL3BhdGguYywgZ3JhcGhpY3MvcHNkcnYvaW5pdC5jLCB0b29scy93cmMvbmV3c3RydWMuYywgY29udHJvbHMvYnV0dG9uLmMsIGNvbnRyb2xzL2VkaXQuYywgY29udHJvbHMvd2lkZ2V0cy5jLCBkbGxzL2FkdmFwaTMyL2FkdmFwaS5jLCBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmM6CglKZWZmIEdhcnppayA8amdhcnppa0Bwb2JveC5jb20+CglBZGRlZCBtaXNzaW5nIHN0cmluZy5oIGluY2x1ZGUuCgoJKiBsb2FkZXIvbmUvbW9kdWxlLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglPbmx5IGFwcGVuZCAuZGxsIGlmIG5vIGV4dGVuc2lvbiB5ZXQuCgoJKiB3aW5kb3dzL21lc3NhZ2UuYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJVGVtcG9yYXJ5IGZpeCBzdWdnZXN0ZWQgYnkgVWxyaWNoIHRvIGFsbG93IHRoZQoJTXNnV2FpdEZvck11bHRpcGxlT2JqZWN0IG1ldGhvZCB0byBiZSBjYWxsZWQgZnJvbSAxNiBiaXQgdGhyZWFkcy4KCgkqIHdpbmRvd3Mvd2lucHJvYy5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUluaXRpYWxpemVkIHJldHVybiB2YWx1ZSBvZiAxNi0+MzIgY29udmVyc2lvbiBvZiBXTV9NRElHRVRBQ1RJVkUgaW4KCWNhc2UgaXQncyBzZW50IHRvIGEgd2luZG93IHRoYXQgZG9lc24ndCBoYW5kbGUgaXQgKGkuZS4gbm90IE1ESQoJY2xpZW50KS4KCgkqIGluY2x1ZGUvZGNlLmgsIHdpbmRvd3MvZGNlLmMsIHdpbmRvd3Mvd2lucG9zLmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUFkZGVkIGV4dHJhIGNoaWxkIGFyZ3VtZW50cyB0byBEQ0VfR2V0VmlzUmduKCkgdG8gYmUgYWJsZSB0byBoYW5kbGUKCVBBUkVOVERDIGNsYXNzIHN0eWxlIGNvbWJpbmVkIHdpdGggQ0xJUENISUxEUkVOIHdpbmRvdyBzdHlsZSwgdG8KCXByZXZlbnQgbWlzLXJlZHJhd3MgaW4gRnJlZSBBZ2VudCAxNi1iaXQuCgoJKiBkbGxzL3ZlcnNpb24vaW5mby5jOiBMYXdzb24gQS4gV2hpdG5leSA8bGF3c29uX3doaXRuZXlAanVuby5jb20+CglEb24ndCBoYW5nIG9uIHRoZSBsYXN0IGNoaWxkIGlmIGl0J3Mgbm90IHdhbnRlZC4KCgkqIHdpbjMyL2tlcm5lbDMyLmMsIHJlbGF5MzIva2VybmVsMzIuc3BlYzogSWFuIFNjaG1pZHQgPGlyc21hbkBpYWcubmV0PgoJUGFydGlhbCBzdHViIGltcGxlbWVudGF0aW9uIG9mIHVuZG9jdW1lbnRlZCBLRVJORUwgcm91dGluZSBQSzE2Rk5GLAoJbmVlZGVkIGJ5IFdpbjk4IEVYUExPUkVSLiBUaGFua3MgdG8gVWxyaWNoIFdlaWdhbmQgZm9yIGluZm9ybWF0aW9uLgoKCSogbWlzYy9jb21tZGxnLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRml4IHJlZHJhdyBwcm9ibGVtcyBmb3IgQ2hvb3NlQ29sb3IgZGlhbG9nLgoKCSogKi8qLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUmVtb3ZlZCBhIGxvdCBvZiBvY2N1cmVuY2VzIG9mIHdpbmRvd3MuaCAoYW5kIGFkZGVkIG5lY2Vzc2FyeSBvdGhlcgoJaW5jbHVkZXMpLgoKCSogaW5jbHVkZS9vYmppZGwuaCwgaW5jbHVkZS93aW5lL29ial9tb25pa2VyLmgsIG9sZS9jb21wb2JqLmMsIGRsbHMvc2hlbGwzMi9kYXRhb2JqZWN0LmMsIGRsbHMvc2hlbGwzMi9lbnVtaWRsaXN0LmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCVNtYWxsIGZpeGVzLgoKCSogaW5jbHVkZS9kc291bmQuaCwgbXVsdGltZWRpYS9kc291bmQuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJQ2hhbmdlZCB0aGUgZmlyc3QgcGFyYW1ldGVyIGZyb20gTFBHVUlEIChXaW5kb3dzIGhlYWRlcnMpIHRvIFJFRkdVSUQuCglUaGlzIG1ha2VzIGl0IGEgJ2NvbnN0IEdVSUQqJyB3aGljaCBtZWFucyBEaXJlY3RTb3VuZENyZWF0ZSBtdXN0IG5vdAoJY2hhbmdlIGl0LgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCVJlbW92ZWQgcmVkdW5kYW50IGRlZmluaXRpb25zIG9mIElzRXF1YWxJSUQgYW5kIElzRXF1YWxDTFNJRCAoc2VlCglpbmNsdWRlL3dpbmUvb2JqX2Jhc2UuaCkKClRodSBGZWIgMTggMTc6MzQ6MTAgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHJlbGF5MzIvdXNlcjMyLnNwZWMsIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL3F1ZXVlLmMsIHdpbmRvd3MvdXNlci5jLCBpbmNsdWRlL3F1ZXVlLmg6CglTdGVwaGFuZSBMdXNzaWVyIDxzdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KCS0gTmV3IGltcGxlbWVudGF0aW9uIG9mIFNlbmRNZXNzYWdlLCBSZWNlaXZlTWVzc2FnZSwgUmVwbHlNZXNzYWdlIGZ1bmN0aW9ucwoJICB0byBzdXBwb3J0IHRocmVhZC1zYWZlbmVzcywgYW5kIG5lc3RlZCBTZW5kTWVzc2FnZS4KCS0gQWRkaXRpb24gb2YgUmVwbHlNZXNzYWdlMzIuCgoJKiB3aW5kb3dzL3gxMWRydi93bmQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBDb3BlIHdpdGggTlVMTCBwRHJpdmVyRGF0YSBpbiBYMTFEUlZfV05EX0dldFhXaW5kb3cuCgoJKiBtaXNjL2NvbW1kbGcuYywgcmVzb3VyY2VzL3N5c3Jlc19Fbi5yYzoKCVBhc2NhbCBMZXNzYXJkIDxwYXNjYWxAbWFjYWRhbWlhbi5jb20+CglBcHBsaWVkIHRoZSBjaGFuZ2VzIG9mIHRoZSByZXN1bHRpbmcgY29sb3Igb2YgdGhlIGNob29zZSBjb2xvciBkaWFsb2cuCglJbml0aWFsaXplIHZhbHVlcyBpbiB0aGUgY2hvb3NlIGNvbG9yIGRpYWxvZy4KCgkqIGluY2x1ZGUvd2luZS9vYmpfYmFzZS5oLCBpbmNsdWRlL3dpbmUvb2JqX21hcnNoYWwuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJUmVtb3ZlZCByZWZlcmVuY2VzIHRvIElDT01fSU5IRVJJVFMuCgoJKiBvbGUvc3RnX2JpZ2Jsb2NrZmlsZS5jLCBvbGUvc3RvcmFnZTMyLmMsIG9sZS9zdG9yYWdlMzIuaDoKCVRodXkgTmd1eWVuIDx0aHV5QG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgYnVnIHdpdGggcmVhZC1vbmx5IGZpbGVzLgoKCSogbXVsdGltZWRpYS9tY2lhdmkuYywgbXVsdGltZWRpYS9tY2ltaWRpLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVJlbW92ZWQgc3VwZXJmbG91cyBXSU5BUEkgKG1pc21hdGNoIHdpdGggcHJvdG90eXBlKSBpbiAqX0RyaXZlclByb2MzMi4KCgkqIGluY2x1ZGUvZG9zZXhlLmg6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJZG9zZXhlLmggZGVwZW5kcyBvbiB3aW5iYXNlLmggKGZvciBMUFNUQVJUVVBJTkZPMzJBKQoKCSogZGxscy9zaGVsbDMyL3NoZWxsbGluay5jLCBvbGUvYmluZGN0eC5jLCBvbGUvZmlsZW1vbmlrZXIuYywgb2xlL2l0ZW1tb25pa2VyLmMsIG9sZS9zdGdfc3RyZWFtLmMsIG9sZS9zdG9yYWdlMzIuYywgb2xlL3N0b3JhZ2UzMi5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglNb2RpZmllZCBzbyB0aGF0IHRoZXkgZG8gbm90IHVzZSB0aGUgVlRBQkxFX0ZVTkMgbWFjcm9zIHRoYXQgcGVyZm9ybWVkCgljYXN0cyBvZiBhbGwgbWV0aG9kcyBwdXQgaW4gdGhlIGp1bXAgdGFibGUuIEkgZmluZCBpdCB0b28gcmlza3kgdG8gdXNlCglzdWNoIG1hY3JvcyBiZWNhdXNlIG5vdGhpbmcgZ3VhcmFudGVlcyB0aGF0IHlvdSBhY3R1YWxseSBwdXQgdGhlIHJpZ2h0CgltZXRob2QgYXQgdGhlIHJpZ2h0IHBsYWNlIG9yIHRoYXQgdGhlIHByb3RvdHlwZSBpcyByaWdodC4KCgkqIGluY2x1ZGUvd2luZS9vYmpfbW9uaWtlci5oLCBpbmNsdWRlL3dpbmUvb2JqX3N0b3JhZ2UuaCwgb2xlL3N0b3JhZ2UuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJVXBkYXRlZCB0byB1c2UgdGhlIGxhdGVzdCBDT00gbWFjcm9zLiBEZWZpbmVkIG1vcmUgaW50ZXJmYWNlcyBhbmQgQVBJCglmdW5jdGlvbnMuCgoJKiBjb250cm9scy9tZW51LmMsIGdyYXBoaWNzL3gxMWRydi9vZW1iaXRtYXAuYywgaW5jbHVkZS93aW51c2VyLmgsIHdpbmRvd3Mvbm9uY2xpZW50LmM6CglGcmFuY29pcyBCb2lzdmVydDxmcmFuY29pc0BtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGF0aW9uIG9mIHRoZSBwdXNoZWQgY2xvc2UgYnV0dG9uLgoKV2VkIEZlYiAxNyAxNzo0NTo1NCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS9tYXBpZGVmcy5oLCBpbmNsdWRlL29iamJhc2UuaCwgaW5jbHVkZS9vbGUuaCwgaW5jbHVkZS9vbGVhdXRvLmgsIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbmUvb2JqX21vbmlrZXIuaCwgaW5jbHVkZS93aW5lL29ial9wcm9wZXJ0eXN0b3JhZ2UuaCwgaW5jbHVkZS93aW5udC5oLCBpbmNsdWRlL3dpbnR5cGVzLmgsIGluY2x1ZGUvd3R5cGVzLmgsIG9sZS9jb21wb2JqLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCU1vdmVkIHNvbWUgZGVmaW5pdGlvbnMgdG8gdGhlaXIgcHJvcGVyIGluY2x1ZGUgZmlsZS4KCgkqIGluY2x1ZGUvd2luZS9vYmpfY2xpZW50c2VydmVyLmgsIGluY2x1ZGUvd2luZS9vYmpfbWlzYy5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglGaXhlZCBzb21lIElDT01fSU5IRVJJVCBzdHVmZiBhbmQgYWRkZWQgbmV3IHJlbGF0ZWQgQVBJIGZ1bmN0aW9ucy4KCgkqIGluY2x1ZGUvd2luZS9vYmpfYmFzZS5oOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCUFkZGVkIG5ldyBBUEkuIFBhcnQgb2YgaXQgd2FzIGluICdpbmNsdWRlL29iamJhc2UuaCcgYmVmb3JlIGFuZCBwYXJ0CglvZiBpdCBpcyBuZXcuIE5vdyBpdCBhbHNvIGNvbnRhaW5zICdXSU5FX1N0cmluZ0Zyb21DTFNJRCcuIEl0J3Mgbm90CglwZXJmZWN0IGJ1dCBpdCdzIGJldHRlciB0aGFuIGhhdmluZyBpdCBpbiAnaW5jbHVkZS9vYmpiYXNlLmgnLgoKCSogZGxscy9hZHZhcGkzMi9jcnlwdC5jLCBkbGxzL250ZGxsL250LmMsIGdyYXBoaWNzL3gxMWRydi9ncmFwaGljcy5jLCBzY2hlZHVsZXIvc3luY2hyby5jLCBjb250cm9scy9zY3JvbGwuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJRml4ZWQgYSBudW1iZXIgb2Ygd2FybmluZ3MgY29uY2VybmluZyB0aGUgbWF0Y2hpbmcgb2YgdGhlIHByaW50ZgoJZm9ybWF0IHN0cmluZyBhbmQgdGhlIGFzc29jaWF0ZWQgcGFyYW1ldGVycyAoYWN0dWFsbHkgaXQncyBtb3N0bHkKCVRSQUNFIGFuZCBGSVhNRXMpLgoKCSogaW5jbHVkZS9tbXN5c3RlbS5oLCBtdWx0aW1lZGlhL21taW8uYywgbXVsdGltZWRpYS9tbXN5c3RlbS5jLCByZWxheTMyL3dpbm1tLnNwZWM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCW1taW9EZXNjZW5kOiBmaXhlZCBGSU5EX3h4eHgsIHZlcmlmaWVkIHdpdGggbWNpYXZpMzIuZGxsLgoJbWNpTG9hZENvbW1hbmRSZXNvdXJjZTMyOiBzZWNvbmQgYXJnIGlzIHdpZGUgc3RyaW5nCgltY2lHZXREcml2ZXJEYXRhOiBzcGVjIGhhcyBqdXN0IG9uZSBsb25nIGFyZ3VtZW50CgoJKiBvbGUvY29tcG9iai5jLCBvbGUvaWZzLmMsIG9sZS9pZnMuaCwgb2xlL3N0b3JhZ2UuYywgZGxscy9zaGVsbDMyL3NoZWxsb2xlLmMsIGluY2x1ZGUvd2luZS9vYmpfYmFzZS5oLCBpbmNsdWRlL3dpbmUvb2JqX2RhdGFvYmplY3QuaCwgbXVsdGltZWRpYS9kc291bmQuYywgZGxscy9zaGVsbDMyL2RhdGFvYmplY3QuYywgZGxscy9zaGVsbDMyL3NoZWxsbGluay5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglDaGFuZ2VkIElDT01fVEhJUyBkZWZpbml0aW9uLgoKCSogZGxscy92ZXJzaW9uL2luZm8uYywgaW5jbHVkZS92ZXIuaDoKCUJlcnRobyBTdHVsdGllbnMgPGJlcnRob0BwYW50ZXIuc29jaS5hYXUuZGs+CglSZW5hbWVkIFZTX1ZFUlNJT05fSU5GT3h4IHN0cnVjdHVyZSB0byBWU19WRVJTSU9OX0lORk9fU1RSVUNUeHguCglUaGUgVlNfVkVSU0lPTl9JTkZPIGlzIGEgc2ltcGxlIGRlZmluZSBhbmQgd291bGQgY2F1c2UgY29uZnVzaW9uLgoJQWxzbyBjb3JyZWN0ZWQgdGhlIFZTX3h4X0lORk8gZGVmaW5lcyBub3QgdG8gdXNlIE1BS0VJTlRSRVNPVVJDRTE2IGZvciB3aW4zMi4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOiBTdGVmZmVuIE1vZWxsZXIgPG1vZWxsZXJAZWJpLmFjLnVrPgoJIkNvbmZpZ3VyZSBmaW5pc2hlZCIgbWVzc2FnZSBzdWdnZXN0cyB0byBjYWxsIG1ha2Ugd2hlbiBtYWtlIGRlcGVuZAoJd2FzIHN1Y2Nlc3NmdWwuCgoJKiAqLyo6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJT3B0aW1pemVkIGluY2x1ZGUvKi5oOiAocmVjdXJzaXZlbHkpIGluY2x1ZGUgYWxsIGhlYWRlcnMgbmVlZGVkIGJ5Cgl0aGlzIC5oIGZpbGUsIGJ1dCBvbmx5IHRob3NlLiBOZWNlc3NhcnkgZml4ZXMgdG8gYSBsb3Qgb2YgLmMgZmlsZXMsCglzdGFydGVkIG9wdGltaXppbmcgIndpbmRvd3MuaCIgYXdheSBmcm9tIHNvbWUgb2YgdGhlbS4gTW92ZWQKCUdldEN1cnJlbnRUYXNrIHByb3RvdHlwZSB0byB3aW5lL3dpbmJhc2UxNi5oLgoKCSogaW5jbHVkZS9jb21tY3RybC5oLCBpbmNsdWRlL2xpc3R2aWV3LmgsIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCUx1YyBUb3VyYW5nZWF1IDxsdWNAbWFjYWRhbWlhbi5jb20+CglQcmVsaW1pbmFyeSBsaXN0dmlldyBjb250cm9sIGltcGxlbWVudGF0aW9uLgoKCSogY29udHJvbHMvbWVudS5jOiBGcmFuY29pcyBCb2lzdmVydCA8ZnJhbmNvaXNAbWFjYWRhbWlhbi5jb20+CglHaXZlIHRoZSBjb250ZXh0IG1lbnUgaXRzIHByb3BlciBiZWhhdmlvdXIgYW5kIG1vZGlmeSBUcmFja1BvcHVwTWVudQoJdG8gY29tcGx5IHdpdGggd2luZG93cyBBUEkuCgoJKiB3aW5kb3dzL3BhaW50aW5nLmM6IERhdmUgUGlja2xlcyA8ZGF2ZXBAbnVnYXRlLmRlbW9uLmNvLnVrPgoJR2V0VXBkYXRlUmVjdCBzaG91bGQgcmV0dXJuIGNsaWVudCBjb29yZGluYXRlcyB1bmxlc3MgdGhlIHdpbmRvdyB3YXMKCWNyZWF0ZWQgd2l0aCB0aGUgQ1NfT1dOREMgc3R5bGUgYW5kIHRoZSBtYXBwaW5nIG1vZGUgaXMgbm90IE1NX1RFWFQsCglpbiB3aGljaCBjYXNlIHRoZSByZXN1bHQgc2hvdWxkIGJlIGluIGxvZ2ljYWwgY29vcmRpbmF0ZXMuCgoJKiBpbmNsdWRlL3dpbmUvb2JqX2NoYW5uZWwuaDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglBZGRlZCB0aGUgYWN0dWFsIGRlZmluaXRpb25zIG9mIHRoZSBpbnRlcmZhY2VzLgoKCSogaW5jbHVkZS9zZXJ2cHJvdi5oOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCUNvbnZlcnRlZCB0byB0aGUgbmV3IENPTSBkZWNsYXJhdGlvbiAnc3RhbmRhcmQnIGZvciBiZXR0ZXIKCWNvbXBhdGliaWxpdHkgd2l0aCBDIGNvZGUgaW1wbGVtZW50YXRpbmcgdGhhdCBpbnRlcmZhY2UuCgoJKiBtaXNjL3dzcHJpbnRmLmM6IEZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUNoYW5nZWQgV1BSSU5URl9FeHRyYWN0VkFQdHIgdG8gdGFrZSB0aGUgYWRkcmVzcyBvZiB0aGUgdmFfbGlzdCB0byBiZQoJYWJsZSB0byBtb2RpZnkgaXQuCgoJKiBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmM6IFN5bHZhaW4gU3QuR2VybWFpbiA8c3lsdmFpbkBtYWNhZGFtaWFuLmNvbT4KCURlZmluZWQgSURyb3BUYXJnZXQgZm9yIFNoZWxsRm9sZGVyLiAgSW1wbGVtZW50ZWQgdGhlIENvbnN0cnVjdG9yLAoJRGVzdHJ1Y3RvciwgQWRkUmVmLCBSZWxlYXNlIGFuZCBRdWVyeUludGVyZmFjZSBtZXRob2RzLgoKCSogbWVtb3J5L3NlbGVjdG9yLmMsIGlmMTYzMi9rZXJuZWwuc3BlYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUNoYW5nZSB0eXBlIG9mIG1vZGUgYXJndW1lbnQgdG8gR0VUVkRNUE9JTlRFUjMyVyBmcm9tIERXT1JEIHRvIFdvcmQKCk1vbiBGZWIgMTUgMTU6MjQ6MjAgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvbXNhY20uaCwgaW5jbHVkZS93aW51c2VyLmg6CglEb3VnbGFzIFJpZGd3YXkgPHJpZGd3YXlAd2luZWhxLmNvbT4KCWMybWFuIGRvZXNuJ3QgbGlrZSBleHRyYSBzZW1pY29sb25zLgoKCSogd2luZG93cy93aW5wb3MuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglSZXNldHRpbmcgWCBmb2N1cyBzaG91bGQgbm90IGJlIGRvbmUgd2l0aCBTZXRGb2N1czMyLiBDYWxsZWQKCXRoZSB3aW5kb3dpbmcgKFgxMSkgZHJpdmVyJ3MgU2V0Rm9jdXMgcm91dGluZSBkaXJlY3RseSBpbnN0ZWFkLgoJVGhpcyBhcHBhcmVudGx5IGZpeGVzIGEgYmlnIGhlYXAgb2YgdXNlciBpbnRlcmZhY2UgcHJvYmxlbXMuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClN1biBGZWIgMTQgMTQ6MDk6NDIgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGdyYXBoaWNzL3BhaW50aW5nLmMsIGluY2x1ZGUvd2ludXNlci5oLCBvYmplY3RzL2N1cnNvcmljb24uYywgd2luZG93cy9kaWFsb2cuYywgd2luZG93cy9wYWludGluZy5jLCB3aW5kb3dzL3JlY3QuYywgd2luZG93cy93aW4uYywgd2luZG93cy93aW5wb3MuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQ2hhbmdlZCBzb21lIGZ1bmN0aW9ucyBwcm90b3R5cGVzICh3ZXJlIHJldHVybmluZyB2b2lkKS4KCgkqIG1pc2MvbWFpbi5jLCBpbmNsdWRlL3dpbnVzZXIuaDogUGF1bCBRdWlubiA8cGF1bHFAY29yZWwuY2E+CglGaXhlZCBzb21lIFdpbmVsaWIgbmFtZXMuCgoJKiBpbmNsdWRlL2NsaXBib2FyZC5oLCBpbmNsdWRlL2NvbnNvbGUuaCwgaW5jbHVkZS9kZXNrdG9wLmgsIGluY2x1ZGUva2V5Ym9hcmQuaCwgaW5jbHVkZS90dHlkcnYuaCwgaW5jbHVkZS94MTFkcnYuaDoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJQ29ycmVjdGVkIHByb3RvdHlwZXMgZnVuYygpIC0+ZnVuYyh2b2lkKS4KCgkqIG11bHRpbWVkaWEvaW5pdC5jLCBtdWx0aW1lZGlhL21pZGkuYywgZGVidWdnZXIvbWVtb3J5LmM6CglCcmlhbiBKb3NlcGggQ3phcGlnYSA8cm9vdEBnbGFjaWQuY29tPgoJRml4ZWQgYSBmZXcgI2lmZGVmcy4KCgkqIHdpbmRvd3Mvc2Nyb2xsLmMsIHdpbmRvd3MveDExZHJ2L3duZC5jOgoJSmVyb21lIFZvdWlsbG9uIDx2b3VpbGxvbkBjbGFyYW5ldC5mcj4KCU1ha2UgYSBjb3JyZWN0IHVzZSBvZiBjbGlwcGluZyByZWN0YW5nbGVzLgoKCSogaW5jbHVkZS9iaXRtYXBzL29jcl9jcm9zczoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUFkZGVkIHdoaXRlIGJvcmRlci4KCgkqIGRlYnVnZ2VyL2RiX2Rpc2FzbS5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUltcGxlbWVudGVkIGJldHRlciBvdXRwdXQgZm9yIGluZGlyZWN0IGNhbGxzLgoKCSogcmVsYXkzMi93aW5tbS5zcGVjOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIHR5cG8gaW4gd2lubW0uc3BlYy4KCgkqIGluY2x1ZGUvd2ludHlwZXMuaCwgaW5jbHVkZS93cmNfcnNjLmgsIG1pc2MvbHN0ci5jLCBtaXNjL3dzcHJpbnRmLmMsIHJlbGF5MzIvYnVpbHRpbjMyLmMsIHJlbGF5MzIvcmVsYXkzODYuYywgcmVsYXkzMi9zbm9vcC5jOgoJR2F2cmllbCBTdGF0ZSA8Z2F2cmllbHNAQ09SRUwuQ0E+CglBIGZldyBub24teDg2IFdpbmVsaWIgZml4ZXMuCgoJKiBtaXNjZW11L21haW4uYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglEbyBub3QgcHJpbnQgJ3dpbmU6IG5vIGV4ZWN1dGVhYmxlIGZvdW5kJyBpZiB3ZSBkaWQgZXhlY3V0ZSBzb21ldGhpbmcuCgoJKiBwcm9ncmFtcy9ub3RlcGFkLyo6CglNYXJjZWwgQmF1ciA8bWJhdXJAZzI2LmV0aHouY2g+CgktIEFkZGVkIG5ldyBJRFNfTk9UU0FWRUQgcmVzc291cmNlIChuZWVkcyB0cmFuc2xhdGlvbiBpbiAqLnJjKQoJLSBJbXByb3ZlZCBwcmludGluZyBzdXBwb3J0IChub3QgeWV0IGNvbXBsZXRlKQoJLSBJbXByb3ZlZCBmaWxlIGRyYWcgYW5kIGRyb3AgKHNob3VsZCBub3cgd29yaykKCS0gR2VuZXJhbCBjb2RlIGNsZWFudXAKCgkqIGluY2x1ZGUvbXVsdGltZWRpYS5oLCBtdWx0aW1lZGlhL21jaW1pZGkuYywgbXVsdGltZWRpYS9tY2l3YXZlLmMsIG11bHRpbWVkaWEvbW1zeXN0ZW0uYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgYnVncyBvbiBNQ0kgbm90aWZpY2F0aW9uIChjYWxsYmFjayBpbmZvIGFyZSBjb3BpZWQgYmVmb3JlCglhc3luY2hyb25vdXMgcmV0dXJuKSAtIG1ha2UgdXNlIG9mIGl0IGluIE1DSSB3YXZlIGFuZCBtaWRpLgoJSW1wbGVtZW50ZWQgbWNpKFNldHxHZXQpRGV2aWNlSUQoMTZ8MzIpIGZ1bmN0aW9ucy4KCgkqIHdpbmRvd3MveDExZHJ2L3duZC5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVNpbmNlIFNldFBhcmVudCBub3cgaGlkZXMvc2hvd3MsIGV4cGxpY2l0bHkgaW52YWxpZGF0aW5nIERDcyBpbiB0aGUKCXBhcmVudCBjaGFuZ2Ugb3BlcmF0aW9uIHNob3VsZCBubyBsb25nZXIgYmUgbmVjZXNzYXJ5LgoKCSogd2luZG93cy9kaWFsb2cuYzogR2VyYXJkIFBhdGVsIDxHLlBhdGVsQFdhbmFkb28uZnI+CglGaXggaWYgRW5kRGlhbG9nIGNhbGxlZCBpbiBXTV9JTklURElBTE9HIChESUFMT0dfRG9EaWFsb2dCb3gpLgoKCSogbXNkb3MvaW9wb3J0cy5jOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJTW92ZWQgVkdBIHBvcnQgYWNjZXNzIGNoZWNrIGF0IHRoZSBiZWdpbm5pbmcgaW4gb3JkZXIgdG8gaW1wcm92ZQoJcGVyZm9ybWFuY2UgYSBsaXR0bGUgYml0LgoKCSogc2VydmVyL2ZpbGUuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglJbXBsZW1lbnRlZCBmbGFnIEZJTEVfRkxBR19ERUxFVEVfT05fQ0xPU0UuCgoJKiBtc2Rvcy9pbnQxMC5jOiBKb3NlcGggUHJhbmV2aWNoIDxqcHJhbmV2aWNoQGx5Y29zLmNvbT4KCUFkZGVkIGNvbW1lbnRzLiBUaGluayBJJ3ZlIGZpeGVkIElOVCAxMC8wOCAoR2V0IENoYXJhY3RlciBhbmQKCUF0dHJpYnV0ZSBhdCBDdXJzb3IpLgoKCSogY29uc29sZS94dGVybS5jOiBKb3NlcGggUHJhbmV2aWNoIDxqcHJhbmV2aWNoQGx5Y29zLmNvbT4KCUFkZGVkIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBYdGVybVByb2dyYW0gYW5kIFh0ZXJtUmVzb2x1dGlvbi4KCUZpeGVkIGEgd2FybmluZy4KCgkqIGRvY3VtZW50YXRpb24vY29uc29sZSwgd2luZS5pbmk6CglKb3NlcGggUHJhbmV2aWNoIDxqcHJhbmV2aWNoQGx5Y29zLmNvbT4KCU5ldyBleGFtcGxlcy9kb2N1bWVudGF0aW9uIGZvciBjb25zb2xlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4KCgkqIG1pc2MvbWFpbi5jLCB3aW5kb3dzL3gxMWRydi9tYWluLmMsIGNvbnNvbGUvZ2VuZXJpYy5jLCBjb25zb2xlL2ludGVyZmFjZS5jLCBjb25zb2xlL25jdXJzZXMuYywgY29uc29sZS90dHkuYywgaW5jbHVkZS9jb25zb2xlLmgsIGluY2x1ZGUvb3B0aW9ucy5oLCBsb2FkZXIvbWFpbi5jOgoJSm9zZXBoIFByYW5ldmljaCA8anByYW5ldmljaEBseWNvcy5jb20+CglNb3ZlZCBpbml0aWFsaXphdGlvbiB1bnRpbCBsYXRlci4gQWxzbyBtb3ZlZCBhcm91bmQgY29kZSBhIGJpdCB0byBiZQoJY29uc2lzdGFudC4KCgkqIGluY2x1ZGUvZGVidWdnZXIuaDogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBwb3NzaWJpbGl0eSB0byBsb2FkIC5zdGFicy8uc3RhYnN0ciBzZWN0aW9ucyBmcm9tIFBFIGRsbHMuCglVbmZvcnR1bmF0ZWx5IG15IHNhbXBsZXMgdXNlIGN1cnJlbnRseSB0eXBlZGVmcyB3aGljaCB3aW5lLWRiZyBkb2VzCglub3QgdW5kZXJzdGFuZCwgc28gbm8gYWN0dWFsIHBhcnNpbmcuCgoJKiBkbGxzL21zYWNtL21zYWNtX21haW4uYywgZGxscy9tc2FjbTMyL2Zvcm1hdC5jLCBkbGxzL21zYWNtMzIvc3RyZWFtLmMsIGluY2x1ZGUvbW1yZWcuaCwgaW5jbHVkZS9tbXN5c3RlbS5oLCBpbmNsdWRlL21zYWNtLmgsIGluY2x1ZGUvbXNhY21kcnYuaCwgaW5jbHVkZS93aW5iYXNlLmg6CglCZXJ0aG8gU3R1bHRpZW5zIDxiZXJ0aG9AcGFudGVyLnNvY2kuYWF1LmRrPgoJQ2hhbmdlIGEgY291cGxlIG9mIG5hbWVzIHRoYXQgd291bGQgY29uZmxpY3QgYWZ0ZXIgYWxsIDMyW0FXXSBzdWZmaXhlcwoJYXJlIHJlbW92ZWQuIFN0cnVjdHVyZXMgZGVmaW5lZCBpbiBib3RoIG1tcmVnLmggYW5kIG1tc3lzdGVtLmggYXJlCglwcm90ZWN0ZWQgd2l0aCAjaWZkZWY6cyBhcyBpbiBNUycgaGVhZGVycy4KCgkqIG1pc2MvaW1tLmM6IFBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgd3JvbmcgdHlwZWNhc3RzLgoKCSogcHJvZ3JhbXMvcHJvZ21hbi9ncnBmaWxlLmM6IFN0ZWZhbiBMZWljaHRlciA8c2xlQGNhbWxpbmUuY29tPgoJQ29tcGlsYXRpb24gZml4LgoKCSogY29uZmlndXJlLmluLCBjb25maWd1cmU6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRml4IGZvciBYMTEgaW5jbHVkZXMgZGV0ZWN0aW9uLgoKCSogZGVidWdnZXIvaGFzaC5jLCBkZWJ1Z2dlci9tc2MuYywgZGVidWdnZXIvc3RhYnMuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgcG9zc2liaWxpdHkgdG8gbG9hZCAuc3RhYnMvLnN0YWJzdHIgc2VjdGlvbnMgZnJvbSBQRSBkbGxzLgoJVW5mb3J0dW5hdGVseSBteSBzYW1wbGVzIHVzZSBjdXJyZW50bHkgdHlwZWRlZnMgd2hpY2ggd2luZS1kYmcgZG9lcwoJbm90IHVuZGVyc3RhbmQsIHNvIG5vIGFjdHVhbCBwYXJzaW5nLgoKCSogbXVsdGltZWRpYS9kcGxheS5jLCBkb2N1bWVudGF0aW9uL3N0YXR1cy9kaXJlY3RkcmF3LCBncmFwaGljcy9kM2R2aWV3cG9ydC5jLCBncmFwaGljcy9kZHJhdy5jLCBpbmNsdWRlL2QzZC5oOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTb21lIGRkcmF3L2QzZCBidWdmaXhlcywgdXBkYXRlZCBEaWFibG8vV0M0IGRkcmF3IHN0YXR1cy4KCgkqIG9sZS9vbGUybmxzLmMsIHJlbGF5MzIva2VybmVsMzIuc3BlYywgaW5jbHVkZS93aW5ubHMuaDoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJSW1wbGVtZW50YXRpb24gb2YgQ29udmVydERlZmF1bHRMb2NhbGUzMi4KCgkqIHdpbmRvd3MvbWRpLmM6IEh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJV0lOMzEgTG9vayBzdGlsbCBuZWVkcyBhIGNsb3NlIGJ1dHRvbiBvbiB0aGUgbGVmdCBvZiB0aGUgbWVudSBiYXIuCgoJKiB3aW5kb3dzL3dpbnBvcy5jOiBGcmFuY29pcyBCb2lzdmVydCA8ZnJhbmNvaXNAbWFjYWRhbWlhbi5jb20+CglDaGFuZ2VkIFNldFdpbmRvd1BvczMyIHRvIGZvcmNlIHRoZSB1cGRhdGUgb2YgdGhlIG5vbi1jbGllbnQgYXJlYS4KClNhdCBGZWIgMTMgMTc6NTY6MjggMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwgaW5jbHVkZS9tbXN5c3RlbS5oLCBpbmNsdWRlL29sZS5oLCBpbmNsdWRlL3dpbmdkaS5oLCBpbmNsdWRlL3dpbnNvY2suaDoKCUJlcnRobyBTdHVsdGllbnMgPGJlcnRob0BwYW50ZXIuc29jaS5hYXUuZGs+CglGaXhlZCBhIGNvdXBsZSBvZiBmYXVsdHkgbmFtZXMgdXNlZCBpbiB3aW5lIGFuZCB0eXBvcyBzbyB0aGF0IGl0IHdpbGwKCWNvbXBpbGUgYWdhaW4gYWZ0ZXIgY29udmVyc2lvbiBmcm9tIDMyW0FXXSBuYW1pbmcgdG8gW0FXXSBuYW1pbmcuCgoJKiBpZjE2MzIvQXR0aWMvc2lnbmFsLmMsIGlmMTYzMi9NYWtlZmlsZS5pbiwgaW5jbHVkZS9kZWJ1Z2dlci5oLCBpbmNsdWRlL2Rvc2V4ZS5oLCBpbmNsdWRlL21pc2NlbXUuaCwgaW5jbHVkZS9zaWdfY29udGV4dC5oLCBsb2FkZXIvZG9zL2Rvc3ZtLmMsIGxvYWRlci9zaWduYWwuYywgbWlzY2VtdS9pbnN0ci5jLCBtaXNjZW11L21haW4uYywgZ3JhcGhpY3MvZGRyYXcuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJTW92ZWQgdGhlIGlmMTYzMi9zaWduYWwuYyBzdHVmZiBpbnRvIGxvYWRlci9zaWduYWwuYywgYWRhcHRlZCBmdW5jdGlvbgoJcG9pbnRlcnMgZm9yIHdpbmVfZGVidWcgYW5kIElOU1RSX0VtdWxhdGVJbnN0cnVjdGlvbi4KCgkqIG9sZS9jb21wb2JqLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJQWxsIGd1aWQgJ1JFRnh4eCcgdHlwZXMgYWxyZWFkeSBoYXZlIGEgJ2NvbnN0JyBpbnNpZGUgdGhlbS4KCgkqIGRsbHMvY29tY3RsMzIvZHJhZ2xpc3QuYywgZGxscy9jb21jdGwzMi90b29sdGlwcy5jLCBtaXNjL3ZlcnNpb24uYywgd2luZG93cy93aW5wb3MuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJU29tZSB3YXJuaW5ncyBmaXhlZCwgb25lIHVzZWxlc3MgVkVSU0lPTiB3YXJuaW5nIHJlbW92ZWQgKHdpbmVsaWIpLgoKCSogbWlzYy9yZWdpc3RyeS5jOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJUmVnRmx1c2hLZXk6IHdyb25nIGVycm9yIGNvZGUuCgoJKiB3aW4zMi9maWxlLmM6IEFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUFkZHMgYSB3YXJuaW5nIG1lc3NhZ2UgaWYgcGVybWlzc2lvbnMgbm90IHN1ZmZpY2llbnQuCgoJKiBtdWx0aW1lZGlhL21peGVyLmMsIG11bHRpbWVkaWEvbW1zeXN0ZW0uYywgcmVsYXkzMi93aW5tbS5zcGVjLCBpbmNsdWRlL2RlYnVnLmgsIGluY2x1ZGUvZGVidWdkZWZzLmgsIGluY2x1ZGUvbXVsdGltZWRpYS5oLCBtdWx0aW1lZGlhL01ha2VmaWxlLmluLCBtdWx0aW1lZGlhL21jaWFuaW0uYywgbXVsdGltZWRpYS9tY2lhdmkuYywgbXVsdGltZWRpYS9tY2ltaWRpLmMsIG11bHRpbWVkaWEvbWNpd2F2ZS5jLCBtdWx0aW1lZGlhL21pZGkuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgc3VwcG9ydCBmb3IgTUNJIEFWSSBkcml2ZXIKCUFkZGVkIHNvbWUgZml4ZXMgbWl4ZXIgZnVuY3Rpb25zCglGaXhlZCBNQ0kgc3RyaW5nIGNvbXBhcmlzb24gKHRoYW5rcyB0byBMaW9uZWwgVUxNRVIpCglObyBsb25nZXIgdXNpbmcgMTYgYml0IFVTRVIgZnVuY3Rpb25zICh1c2UgdGhlaXIgMzIgYml0IGNvdW50ZXIgcGFydCkKCVJlaW5kZW50aW5nLgoJQWRkZWQgZnVuY3Rpb24gc25kUGxheVNvdW5kMzJXCgoJKiBpbmNsdWRlL29iamJhc2UuaCwgaW5jbHVkZS9vYmppZGwuaCwgaW5jbHVkZS93aW5lL29ial9tYXJzaGFsLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCUFkZGVkIHRoZSBhY3R1YWwgaW50ZXJmYWNlIGRlZmluaXRpb25zIHRvIHRoZSBvYmpfbWFyc2hhbC5oIHNrZWxldG9uCglmaWxlLiBBbHNvIGRlZmluZWQgdGhlIGFzc29jaWF0ZWQgQyBBUEkuCgoJKiB3aW5kb3dzL3F1ZXVlLmM6IFN0ZXBoYW5lIEx1c3NpZXIgPHN0ZXBoYW5lQG1hY2FkYW1pYW4uY29tPgoJVXNlIGdsb2JhbCBzeW5jaHJvbml6YXRpb24gb2JqZWN0cywgdG8gYmUgYWJsZSB0byB1c2UgaXQgaW4gZGlmZmVyZW50Cglwcm9jZXNzZXMgKG5vdCBvbmx5IHRoZSBwcm9jZXNzIHdoaWNoIGNyZWF0ZSB0aGUgc3luY2hybyBvYmplY3QpLgoKCSogd2luZG93cy9tZGkuYzogTm9ybWFuIFN0ZXZlbnMgPG5vcm1hbkBhcmNhZHkudS1uZXQuY29tPgoJU2V0IGh3bmRBY3RpdmVDaGlsZCB3aGVuIG1heGltaXppbmcgYSBtZGkgY2hpbGQgd2luZG93IGJlY2F1c2UgaXQgaXMKCW5vdCBzZXQgd2hlbiBtYXhpbWl6aW5nIGEgd2luZG93IG90aGVyIHRoYW4gdGhlIGFjdGl2ZSBjaGlsZC4KCgkqIGNvbnRyb2xzL21lbnUuYzogUGFzY2FsIExlc3NhcmQgPHBhc2NhbEBtYWNhZGFtaWFuLmNvbT4KCUNoYW5nZSB0aGUgR2V0TWVudUl0ZW1SZWN0IHRvIGNvbXBseSB3aXRoIHdpbmRvd3MgQVBJLgoKCSogTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBpbmNsdWRlLy5jdnNpZ25vcmUsIGluY2x1ZGUvTWFrZWZpbGUuaW46CglKYW1lcyBKdXJhbiA8anJqMTIwQHBzdS5lZHU+CglDcmVhdGVkIGluY2x1ZGUvTWFrZWZpbGUuaW4gdG8gc2VwYXJhdGUgaGVhZGVyIGZpbGUgaW5zdGFsbGF0aW9uIGZyb20KCXRoZSB0b3AtbGV2ZWwgTWFrZWZpbGUuCgoJKiBvbGUvc3RnX2JpZ2Jsb2NrZmlsZS5jLCBvbGUvc3RnX3N0cmVhbS5jLCBvbGUvc3RvcmFnZTMyLmMsIG9sZS9zdG9yYWdlMzIuaDoKCVRodXkgTmd1eWVuIDx0aHV5QG1hY2FkYW1pYW4uY29tPgoJLSBGaXhlZCBhIHNtYWxsIGJsb2NrIGRlcG90IGJ1Zy4KCS0gSW1wbGVtZW50ZWQgY29udmVydGluZyBmcm9tIHNtYWxsIGJsb2NrcyB0byBiaWcgYmxvY2tzLgoJLSBWYWxpZGF0ZWQgZmlsZSBhdHRyaWJ1dGVzIGFuZCBmbGFncy4KCS0gRml4ZWQgYSBidWcgZm9yIGxhcmdlciBmaWxlcy4KCgkqIHJlc291cmNlcy8uY3ZzaWdub3JlOiBhZGRlZCBzeXNyZXNfTmwKCgkqIGdyYXBoaWNzL3gxMWRydi9vZW1iaXRtYXAuYywgaW5jbHVkZS9vbGUyLmgsIGluY2x1ZGUvb2xlaWRsLmgsIGluY2x1ZGUvc2hsZ3VpZC5oLCBpbmNsdWRlL3NobG9iai5oLCBpbmNsdWRlL3dpbmRlZi5oLCBpbmNsdWRlL3dpbmUvb2JqX2RyYWdkcm9wLmgsIGluY2x1ZGUvd2luZXJyb3IuaCwgaW5jbHVkZS93aW50eXBlcy5oLCBvbGUvb2xlMi5jLCByZWxheTMyL29sZTMyLnNwZWM6CglGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRlZCB0aGUgT0xFIERyYWcgYW5kIERyb3AgdGFyZ2V0IHJlZ2lzdHJhdGlvbiBtZWNoYW5pc20gYW5kCgl0aGUgRG9EcmFnRHJvcCBsb29wIHRvIHBlcmZvcm0gdGhlIERuRCBvcGVyYXRpb24uCgoJKiB3aW5kb3dzL21kaS5jLCBjb250cm9scy9tZW51LmMsIGluY2x1ZGUvbWVudS5oOgoJRnJhbmNvaXMgQm9pc3ZlcnQgPGZyYW5jb2lzQG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50ZWQgdGhlIFdJTjMxIExvb2sgbWRpIGJ1dHRvbnMgYW5kIGFsc28gc29tZSBkZWZpbmVzIGZvciB0aGUKCW1hZ2ljIG1lbnUgaXRlbXMuCgoJKiBkbGxzL2FkdmFwaTMyL01ha2VmaWxlLmluLCBkbGxzL2FkdmFwaTMyL2NyeXB0LmMsIGluY2x1ZGUvd2luY3J5cHQuaCwgcmVsYXkzMi9hZHZhcGkzMi5zcGVjOgoJSWFuIFNjaG1pZHQgPGlyc21hbkBpYWcubmV0PgoJQWRkZWQgZW50cmllcyBmb3IgbW9zdCBDcnlwdCogY2FsbHMuCglBZGRlZCBzdHViIGZvciBDcnlwdEFjcXVpcmVDb250ZXh0QS4gIFRoaXMgYWxsb3dzIFdpbjk4IEVYUExPUkVSLkVYRQoJdG8gZ2V0IGZhcnRoZXIuCgoJKiBjb250cm9scy9lZGl0LmM6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglBbiBhcHAgbGVmdCBqdW5rIGluIHRoZSB1bmRvIGJ1ZmZlciBvZiBhbiBlZGl0IGNvbnRyb2wgdXBvbiBjcmVhdGlvbi4KCgkqIHdpbmRvd3Mvd2luLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQ2hhbmdlZCBTZXRQYXJlbnQzMiB0byBhZGhlcmUgdG8gV2luZG93cyBiZWhhdmlvdXIgKG1vc3RseSksCgl3aGljaCBzaG91bGQgYWxzbyBrZWVwIGl0IGZyb20gbGVhdmluZyBnYXJiYWdlIGFyb3VuZC4KCgkqIG9sZS9jb21wb2JqLmM6IFN5bHZhaW4gU3QuR2VybWFpbiA8c3lsdmFpbkBtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGF0aW9uIG9mIGEgc2ltcGxlIGxpbmtlZCBsaXN0IChzdGF0aWMpIHRoYXQgc3RvcmVzIGFuZCBjb3VudHMKCXJlZmVyZW5jZXMgdG8gQ09NIG9iamVjdHMuCgoJKiBpbmNsdWRlL29iamJhc2UuaCwgaW5jbHVkZS93dHlwZXMuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJTWFrZSB0aGUgUkVGeHh4IHR5cGVzIGNvbnN0IGV2ZW4gaW4gQy4gQWxzbyBhZGQgRk1USUQuCgoJKiB3aW5kb3dzL3dpbnBvcy5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCURvbid0IGNhbGwgRVZFTlRfRHVtbXlNb3Rpb25Ob3RpZnkgZm9yIGhpZGRlbiB3aW5kb3dzLgoKCSogd2luZG93cy9tZXNzYWdlLmM6IFN0ZXBoYW5lIEx1c3NpZXIgPHN0ZXBoYW5lQG1hY2FkYW1pYW4uY29tPgoJRml4IHNvbWUgdGhyZWFkLXNhZmVuZXNzIHByb2JsZW0gd2hlbiBhY2Nlc3NpbmcgdGhlIHN5c3RlbSBtZXNzYWdlCglxdWV1ZS4KCgkqIHdpbmRvd3MvaW5wdXQuYywgaW5jbHVkZS93aW51c2VyLmgsIHJlbGF5MzIvdXNlcjMyLnNwZWM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUltcGxlbWVudGVkIE1hcFZpcnR1YWxLZXlFeCAodGlja2V0IDIxKS4KCUlnbm9yZSBrZXlib2FyZCBsYXlvdXQgZm9yIG5vdy4KCgkqIGluY2x1ZGUvb2JqaWRsLmgsIGluY2x1ZGUvd2luZS9vYmpfY2xpZW50c2VydmVyLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCUFkZGVkIHRoZSBhY3R1YWwgaW50ZXJmYWNlIGRlZmluaXRpb25zIHRvIHRoZSBvYmpfY2xpZW50c2VydmVyLmgKCXNrZWxldG9uIGZpbGUuCgoJKiBkbGxzL250ZGxsL01ha2VmaWxlLmluLCBkbGxzL250ZGxsL250LmMsIGRsbHMvbnRkbGwvcmVnLmMsIGRsbHMvbnRkbGwvcnRsLmMsIHJlbGF5MzIvbnRkbGwuc3BlYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJLSBkb2N1bWVudGVkIG1vc3Qgb2YgdGhlIHVuZG9jdW1lbnRlZCBmdW5jdGlvbnMgaW4gbnQuYwoJLSBpbXBsZW1lbnRlZCBSdGxHZXREYWNsU2VjdXJpdHlEZXNjcmlwdG9yCgktIHN0dWJzIGZvciBOdEVudW1lcmF0ZUtleSwgTnRPcGVuU3ltYm9saWNMaW5rT2JqZWN0LCBOdFF1ZXJ5S2V5CgktIHN0dWJzIGZvciBOdFJhaXNlRXhjZXB0aW9uLCBSdGxSYWlzZUV4Y2VwdGlvbiAodGhpcyBib3RoIHdpbGwgY3Jhc2gpCgpGcmkgRmViIDEyIDE3OjQ3OjA3IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmMsIGRsbHMvYWR2YXBpMzIvc2VydmljZS5jLCBmaWxlcy9kcml2ZS5jLCBtaXNjL3JlZ2lzdHJ5LmMsIHdpbjMyL25ld2Zucy5jLCB3aW5kb3dzL3VzZXIuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJU21hbGwgZml4ZXMgdG8gY29tcGlsZSB3aXRoIHRoZSBoZWFkZXJzIChtb3N0bHkgbnQtc2VjdXJpdHkpLgoKCSogaW5jbHVkZS9udGRkay5oLCBpbmNsdWRlL250ZGVmLmgsIGluY2x1ZGUvbnRkbGwuaCwgaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2luZGVmLmgsIGluY2x1ZGUvd2lubnQuaCwgaW5jbHVkZS93aW5yZWcuaDoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTWFkZSBudC1yZWxhdGVkIHR5cGVzIGNvbXBhdGlibGUsIHRocm93IG91dCB3aW5lLXNwZWNpZmljIHR5cGVzLgoKCSogd2luZG93cy9tb3VzZS5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVVzZSBNT05JVE9SXy4uLiBpbnN0ZWFkIG9mIERFU0tUT1BfLi4uIHJvdXRpbmVzIHRvIGdldCBzY3JlZW4KCWRpbWVuc2lvbnM7IHRoZXNlIHdvcmsgYWxzbyB3aXRoIG5hdGl2ZSBVU0VSLgoKCSogd2luZG93cy9kZWZ3bmQuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglXTV9BQ1RJVkFURSBkZWZhdWx0IHByb2Nlc3Npbmcgc2hvdWxkIHNldCB3aW5kb3cgZm9jdXMuCglTaG91bGQgZml4IGZvY3VzIHByb2JsZW1zIGluIG5vbi1tYW5hZ2VkIG1vZGUuCgpUaHUgRmViIDExIDE2OjMyOjE3IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBvbGUvbmxzL25sZC5ubHMsIHJlc291cmNlcy9NYWtlZmlsZS5pbiwgcmVzb3VyY2VzL1RPRE8sIHJlc291cmNlcy9zeXNyZXMuYywgcmVzb3VyY2VzL3N5c3Jlc19ObC5yYywgQVVUSE9SUywgZG9jdW1lbnRhdGlvbi9sYW5ndWFnZXMsIGluY2x1ZGUvYXV0aG9ycy5oLCBpbmNsdWRlL29wdGlvbnMuaCwgbWlzYy9tYWluLmMsIG9sZS9vbGUybmxzLmM6CglLbGFhcyB2YW4gR2VuZCA8a2xhYXNAdmFuZ2VuZC5kZW1vbi5ubD4KCUFkZGVkIHN1cHBvcnQgZm9yIHRoZSBEdXRjaCBsYW5ndWFnZS4KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmMsIGluY2x1ZGUvY29tbWN0cmwuaCwgaW5jbHVkZS9wcnNodC5oLCBpbmNsdWRlL3NobG9iai5oOgoJQWRyaWFuIFRodXJzdG9uIDxhZHJpYW50QGNvcmVsLmNhPgoJWnlnbyBCbGF4ZWxsIDx6YmxheGVsbEBjb3JlbC5jYT4KCU1vdmUgcHJvcGVydHkgc2hlZXRzIGZyb20gY29tbWN0cmwuaCBpbnRvIGludG8gcHJzaHQuaC4KCgkqIGdyYXBoaWNzL2QzZGRldmljZXMuYywgZ3JhcGhpY3MvZDNkZXhlY3V0ZWJ1ZmZlci5jLCBncmFwaGljcy9kM2RsaWdodC5jLCBncmFwaGljcy9kM2RtYXRlcmlhbC5jLCBncmFwaGljcy9kM2R0ZXh0dXJlLmMsIGdyYXBoaWNzL2QzZHZpZXdwb3J0LmM6CglMaW9uZWwgVWxtZXIgPHVsbWVyQGRpcmVjdHByb3ZpZGVyLm5ldD4KCUFkZGVkICdvYmpiYXNlLmgnIHRvIHByZXZlbnQgY29tcGlsZXIgd2FybmluZ3MuCgoJKiBncmFwaGljcy9kZHJhdy5jOiBMaW9uZWwgVWxtZXIgPHVsbWVyQGRpcmVjdHByb3ZpZGVyLm5ldD4KCUJldHRlciBkZXRlY3Rpb24gb2YgWFNobSBlcnJvcnMgKHNob3VsZCBub3cgcnVuIG9uIHJlbW90ZSBkaXNwbGF5cykuCgoJKiBtdWx0aW1lZGlhL21tc3lzdGVtLmM6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglGaXhlcyBtaXhlckdldElEMTYvMzIgcHJvYmxlbXMvZXJyb3JzLgoKCSogb2xlL29sZW9iai5jLCBtdWx0aW1lZGlhL2RwbGF5LmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJSXNFcXVhbEdVSUQgaXMgZGVmaW5lZCBpbiAnaW5jbHVkZS93aW5lL29ial9iYXNlLmgnLiBBbGwgb3RoZXIKCWRlY2xhcmF0aW9ucyBtdXN0IHN1cnJlbmRlciBvciBwcmVwYXJlIHRvIGJlIG1ldCB3aXRoIGRlYWRseSBmb3JjZSA6LSkKCgkqIHJlbGF5MzIvb2xlMzIuc3BlYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglBZGRlZCBuZXcgZnVuY3Rpb25zIChmcm9tIFdpbjk4KQoJQWRkZWQgY29tbWVudHMgd2l0aCB0aGUgcGFyYW1ldGVyIHR5cGVzIGZvciBmdXR1cmUgdXNlIHdpdGggZGxsZ2x1ZQoKCSogZmlsZXMvZHJpdmUuYzogVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJU2V0IHRoZSBmbGFncyBmb3IgR2V0Vm9sdW1lSW5mb3JtYXRpb24zMkEuCgoJKiB3aW5kb3dzL3dpbi5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUZpbmRXaW5kb3cgZmFpbGVkIGZvciAzMiBiaXQgd2luZG93cyB3aXRoIHN0eWxlICE9IFdTX0NISUxELgoKV2VkIEZlYiAxMCAwNjo1Mjo1OCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS9BdHRpYy9wcmludC5oLCBpbmNsdWRlL3dpbnNwb29sLmgsIG1pc2MvcHJpbnRkcnYuYywgZ3JhcGhpY3MvcHNkcnYvZHJpdmVyLmMsIGdyYXBoaWNzL3BzZHJ2L2VzY2FwZS5jLCBncmFwaGljcy9wc2Rydi9mb250LmMsIGdyYXBoaWNzL3BzZHJ2L2dyYXBoaWNzLmMsIGdyYXBoaWNzL3BzZHJ2L2luaXQuYywgZ3JhcGhpY3MvcHNkcnYvcHBkLmMsIGdyYXBoaWNzL3BzZHJ2L3BzLmMsIGdyYXBoaWNzL3BzZHJ2L3RleHQuYzoKCVBhdWwgUXVpbm4gPHBhdWxxQGNvcmVsLmNhPgoJQWxiZXJ0IERlbiBIYWFuIDxhbGJlcnRkQGNvcmVsLmNhPgoJTW92ZXMgZmlsZXMgZnJvbSBwcmludC5oIHRvIHdpbnNwb29sLmggZm9yIGJldHRlciBTREsgaGVhZGVyIGNvbXBsaWFuY2UKCWZvciBXaW5lbGliIHByb2dyYW1zLgoKCSogaW5jbHVkZS9ob29rLmgsIGluY2x1ZGUvb2JqaWRsLmgsIGluY2x1ZGUvb2xlMi5oLCBpbmNsdWRlL3RjaGFyLmgsIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbmUvb2JqX2NsaWVudHNlcnZlci5oLCBpbmNsdWRlL3dpbmUvb2JqX2RhdGFvYmplY3QuaCwgaW5jbHVkZS93aW5lL29ial9zdG9yYWdlLmgsIGluY2x1ZGUvd2luZXJyb3IuaCwgaW5jbHVkZS93aW51c2VyLmgsIGluY2x1ZGUvd3R5cGVzLmg6CglBbGJlcnQgRGVuIEhhYW4gPGFsYmVydGRAY29yZWwuY2E+CglBZHJpYW4gVGh1cnN0b24gPGF0aHVyc3RvQGNvcmVsLmNhPgoJUGF1bCBRdWlubiA8cGF1bHFAY29yZWwuY2E+CglaeWdvIEJsYXhlbGwgPHp5Z29iQGNvcmVsLmNhPgoJTWlzY2VsbGFuZW91cyBwYXRjaGVzIHRvIGhlYWRlciBmaWxlcy4gIEFsbCBvZiB0aGVzZSBhcmUgc3VwcG9zZWRseSB0aGVyZQoJdG8gaGVscCBidWlsZCBXaW5lbGliIGFwcGxpY2F0aW9ucy4KCgkqIGluY2x1ZGUvd2ludHlwZXMuaDogQWxiZXJ0IERlbiBIYWFuIDxhbGJlcnRkQGNvcmVsLmNhPgoJQWRyaWFuIFRodXJzdG9uIDxhdGh1cnN0b0Bjb3JlbC5jYT4KCVBhdWwgUXVpbm4gPHBhdWxxQGNvcmVsLmNhPgoJWnlnbyBCbGF4ZWxsIDx6eWdvYkBjb3JlbC5jYT4KCU1vcmUgdHlwZXMgd2UgbmVlZCBmb3IgY29tcGlsaW5nIFdpbmVsaWIvTUZDIGFwcGxpY2F0aW9ucy4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaDogUGF1bCBRdWlubiA8cGF1bHFAY29yZWwuY2E+CglBZHJpYW4gVGh1cnN0b24gPGFkcmlhbnRAY29yZWwuY2E+CglNb3JlIHR5cGVzIGZvciBjb21tb24gY29udHJvbHMuICBOZWVkZWQgZm9yIFdpbmVsaWIuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9sZS5jLCBpbmNsdWRlL3dpbmUvb2JqX2Jhc2UuaCwgbXVsdGltZWRpYS9kc291bmQuYywgb2xlL2NvbXBvYmouYywgb2xlL2lmcy5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglCZXR0ZXIgc2V0IG9mIG1hY3JvcyBmb3IgZGVmaW5pbmcgdGhlIENPTSBpbnRlcmZhY2VzLgoKCSogZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jLCByZWxheTMyL2FkdmFwaTMyLnNwZWM6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglUd28gQURWQVBJMzIgc3R1YnM6IEltcGVyc29uYXRlU2VsZjMyIGFuZCBBY2Nlc3NDaGVjazMyLiBTcGVsbGluZyBmaXhlcy4KCgkqIGdyYXBoaWNzL2RkcmF3LmM6IExpb25lbCBVbG1lciA8dWxtZXJAZGlyZWN0cHJvdmlkZXIubmV0PgoJRml4ZWQgZGVidWcgb3V0cHV0IHRvIGZvbGxvdyAnLWRlYnVnbXNnJyBmbGFncy4KClR1ZSBGZWIgIDkgMTU6NDk6MzkgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG1zZG9zL2ludDIwLmMsIG9sZS9zYWZlYXJyYXkuYywgcmVsYXkzMi9idWlsdGluMzIuYywgc2VydmVyL2RldmljZS5jLCBzZXJ2ZXIvZmlsZS5jLCBzZXJ2ZXIvcGlwZS5jLCBzZXJ2ZXIvdGhyZWFkLmMsIHdpbmRvd3Mvd2luaGVscC5jOgoJTWljaGFlbCBWZWtzbGVyIDxtdmVrc2xlckB0ZWNodW5peC50ZWNobmlvbi5hYy5pbD4KCUFkZGVkIG1pc3NpbmcgaW5jbHVkZXMgdG8gYXZvaWQgd2FybmluZ3MvZXJyb3JzLgoKCSogaW5jbHVkZS9kaW5wdXQuaCwgaW5jbHVkZS9semV4cGFuZC5oLCBpbmNsdWRlL250ZGxsLmgsIGluY2x1ZGUvb2xlMi5oLCBpbmNsdWRlL3NoZWxsYXBpLmgsIGluY2x1ZGUvdmdhLmgsIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbmNvbi5oLCBpbmNsdWRlL3dpbmRlZi5oLCBpbmNsdWRlL3dpbmRvd3MuaCwgaW5jbHVkZS93aW5lL2tleWJvYXJkMTYuaCwgaW5jbHVkZS93aW5lL29ial9zdG9yYWdlLmgsIGluY2x1ZGUvd2luZS9zaGVsbDE2LmgsIGluY2x1ZGUvd2luZS93MzJza3JubC5oLCBpbmNsdWRlL3dpbmUvd2luYmFzZTE2LmgsIGluY2x1ZGUvd2luZS93aW5lc291bmQuaCwgaW5jbHVkZS93aW5lL3dpbmVzdHJpbmcuaCwgaW5jbHVkZS93aW5lL3dpbnVzZXIxNi5oLCBpbmNsdWRlL3dpbm5ldHdrLmgsIGluY2x1ZGUvd2lubmxzLmgsIGluY2x1ZGUvd2lubnQuaCwgaW5jbHVkZS93aW5yZWcuaCwgaW5jbHVkZS93aW50eXBlcy5oLCBpbmNsdWRlL3dpbnVzZXIuaCwgaW5jbHVkZS93aW52ZXIuaDoKCU1pY2hhZWwgVmVrc2xlciA8bXZla3NsZXJAdGVjaHVuaXgudGVjaG5pb24uYWMuaWw+CglNb3ZlZCBldmVyeXRoaW5nIG91dCBvZiB3aW5kb3dzLmguCgoJKiBncmFwaGljcy93aW5nLmMsIGlmMTYzMi9nZGkuc3BlYywgaW5jbHVkZS9iaXRtYXAuaCwgaW5jbHVkZS9wYWxldHRlLmgsIGluY2x1ZGUvd2luZ2RpLmgsIG9iamVjdHMvcGFsZXR0ZS5jLCByZWxheTMyL2dkaTMyLnNwZWM6CglCcmFkIFBlcGVycyA8YnJhZEBsaW51eGNhbmFkYS5jb20+CglXaW5HIGZpeGVzLgoKCSogY29udHJvbHMvbWVudS5jLCBpbmNsdWRlL21lc3NhZ2UuaCwgaW5jbHVkZS9xdWV1ZS5oLCB3aW5kb3dzL2RpYWxvZy5jLCB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy9ub25jbGllbnQuYywgd2luZG93cy9xdWV1ZS5jLCB3aW5kb3dzL3RpbWVyLmM6CglTdGVwaGFuZSBMdXNzaWVyIDxzdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KCS1GaXhlZCBNRVNTQUdFIGZ1bmN0aW9ucyB0aGF0IHdlcmUgdGh1bmtpbmcgZG93biB0byAxNiBiaXRzIGltcGxlbWVudGF0aW9uLgoJU28gUGVla01lc3NhZ2UzMiwgR2V0TWVzc2FnZTMyLCBQb3N0TWVzc2FnZTMyLCBQb3N0VGhyZWFkTWVzc2FnZSBhcmUgZml4ZWQKCXdpdGggdGhpcyBwYXRjaC4gVW5pY29kZSB2ZXJzaW9uIG9mIHRob3NlIGZ1bmN0aW9ucyBpcyBjdXJyZW50bHkgb25seQoJY2FsbGluZyB0aGUgQVNDSUkgdmVyc2lvbi4KCS1GaXhlZCBxdWV1ZSBzaWduYWxpbmcgdXNpbmcgYSBuZXcgRVZFTlQgb2JqZWN0IGluIHRoZSBxdWV1ZSBmb3IgMzIgYml0cwoJdGhyZWFkLiBNc2dXYWl0Rm9yTXVsdGlwbGVPYmplY3QgaGFzIGJlZW4gZml4ZWQgYW5kIGlzIG5vdyBibG9ja2luZyBvbiB0aGUKCXJpZ2h0IEVWRU5ULgoKCSogb2JqZWN0cy9tZXRhZmlsZS5jOiBIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCUdldE1ldGFGaWxlQml0c0V4IHNob3VsZCB3b3JrIGluIGJ5dGVzIG5vdCB3b3Jkcy4KCgkqIGluY2x1ZGUvc2hsb2JqLmg6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJRGxsR2V0Q2xhc3NPYmplY3Qgc2hvdWxkIHRha2UgYSBSRUZDTFNJRCBub3QgYW4gTFBDTFNJRC4KCgkqIG9iamVjdHMvZGliLmMsIGluY2x1ZGUvZ2xvYmFsLmgsIG1lbW9yeS92aXJ0dWFsLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUNoYW5nZSBmYXVsdCBoYW5kbGVyICdhZGRyJyBhcmd1bWVudCB0byBMUENWT0lELgoKCSogZmlsZXMvZmlsZS5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUNhbGwgVklSVFVBTF9IYW5kbGVGYXVsdCBpZiByZWFkL3dyaXRlIHJldHVybnMgRUZBVUxULgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOgoJQmVydGhvIFN0dWx0aWVucyA8YmVydGhvQHBhbnRlci5zb2NpLmFhdS5kaz4KCUZpeCB0eXBvIHRvIG1hcCBHZXRUZXh0RXh0ZW50UG9pbnQgdG8gdGhlIGNvcnJlY3QgMzJBIHZlcnNpb24uCgoJKiBkb2N1bWVudGF0aW9uL2RlYnVnZ2luZywgaW5jbHVkZS9wZWV4ZS5oLCBpbmNsdWRlL3dpbmNvbi5oLCBwcm9ncmFtcy9yZWd0ZXN0L3JlZ3Rlc3QuYywgcmVsYXkzMi9hZHZhcGkzMi5zcGVjLCB3aW5kb3dzL3gxMWRydi9tYWluLmMsIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJU29tZSBzbWFsbCBidWdmaXhlcywgYWRkZWQgbW9yZSBQRSByZWxvY2F0aW9uIHR5cGVzIChmb3IgV2luQ0UgbW9zdGx5KSwKCXNvbWUgY29uc29sZSBwcm90b3R5cGVzLCAtZGxsIGlzIHVzZWZ1bCBmb3Igd2luZWxpYiB0b28sIHJlZ3Rlc3QKCWNvbXBpbGUgZml4ZWQuCgoJKiBpbmNsdWRlL3dpbmUvd2ludXNlcjE2LmgsIGluY2x1ZGUvd2ludXNlci5oLCBvYmplY3RzL2N1cnNvcmljb24uYzoKCVBhdWwgUXVpbm4gPHBhdWxxQGNvcmVsLmNhPgoJR2V0Q3Vyc29yUG9zIGlzIGFjdHVhbGx5IGEgQk9PTC4KCgkqIGluY2x1ZGUvbW1zeXN0ZW0uaDogUGF1bCBRdWlubiA8cGF1bHFAY29yZWwuY2E+CglBZHJpYW4gVGh1cnN0b24gPGFkcmlhbnRAY29yZWwuY2E+CglNb3JlIHR5cGVzLCBDKysgcHJvdGVjdGlvbiwgYW5kIGEgdHlwbyBjb3JyZWN0aW9uIGZvciBtbXN5c3RlbS5oLgoKCSogaW5jbHVkZS9jb21tY3RybC5oOiBaeWdvIEJsYXhlbGwgPHVqMjJrZmJjQHVtYWlsLmZ1cnJ5dGVycm9yLm9yZz4KCU1vdmUgdGhlICNkZWZpbmUgb2YgRFVNTVlVTklPTk5BTUUqIHRvIGJlZm9yZSB0aGV5IGFyZSB1c2VkLgoJQWRkIGEgZGVmaW5pdGlvbiBmb3IgRFVNTVlVTklPTk5BTUUgKGFzIG9wcG9zZWQgdG8gRFVOMSwgRFVOMi4uLikuCglVc2UgdGhlIGNvcnJlY3QgV0lORUxJQl9OQU1FX0FXIG1hY3JvIGZvciBUVklURU0gYW5kIHJlbGF0ZWQgbmFtZXMuCglEZWZpbmUgIlRWX0lURU0iIHRvIGFncmVlIHdpdGggeW91LWtub3ctd2hvJ3MgZG9jdW1lbnRhdGlvbi4KCgkqIGRsbHMvdmVyc2lvbi9pbmZvLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCU5VTEwgaXMgYSB2YWxpZCBhcmd1bWVudCBhcyBoYW5kbGUgZm9yIEdldEZpbGVWZXJzaW9uSW5mb1NpemUzMkEuCgoJKiBpbmNsdWRlL2RpbnB1dC5oLCB3aW5kb3dzL2RpbnB1dC5jOgoJTGlvbmVsIFVsbWVyIDx1bG1lckBkaXJlY3Rwcm92aWRlci5uZXQ+CglBZGRlZCBidWZmZXJlZCBkZXZpY2UgYWNjZXNzIGZvciBESW5wdXQncyBtb3VzZSBkcml2ZXIuCgoJKiBmaWxlcy9maWxlLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJV3JvbmcgYWNjZXNzIG9uIHNlcnZlciBoYW5kbGUgd2FzIGRlbWFuZGVkIChHRU5FUklDX1JFQUQgaW5zdGVhZCBvZgoJR0VORVJJQ19XUklURSkuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJQmV0dGVyIGltcGxlbWVudGF0aW9uICh0YWtlcyBzdHJpbmdzIG9yIHJlcy1pZCdzIG5vdykuCgoJKiBkbGxzL3ZlcnNpb24vcmVzb3VyY2UuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBOVUxMIHBvaW50ZXIgY2hlY2sgZm9yIG91dHB1dCBwYXJhbWV0ZXJzLgoKCSogZGxscy9zaGVsbDMyL2Jyc2ZvbGRlci5jOgoJWnlnbyBCbGF4ZWxsIDx1ajIya2ZiY0B1bWFpbC5mdXJyeXRlcnJvci5vcmc+CglGaXhlZCB0d28gcG9pbnRlci9pbnRlZ2VyIG1pc21hdGNoIHdhcm5pbmdzLgoKCSogZG9jdW1lbnRhdGlvbi9jb25zb2xlOiBaeWdvIEJsYXhlbGwgPHVqMjJrZmJjQHVtYWlsLmZ1cnJ5dGVycm9yLm9yZz4KCVNwZWxsaW5nIGZpeGVzLgoKCSogY29uc29sZS94dGVybS5jLCB3aW4zMi9jb25zb2xlLmM6CglaeWdvIEJsYXhlbGwgPHVqMjJrZmJjQHVtYWlsLmZ1cnJ5dGVycm9yLm9yZz4KCXdpbmVfb3BlbnB0eSBpcyBub3QgcHJvcGVybHkgZGVjbGFyZWQgKGVpdGhlciBtaXNzaW5nIG9yIG1pc21hdGNoZWQKCWRlY2xhcmF0aW9ucykgaW4gYm90aCBwbGFjZXMgd2hlcmUgaXQgaXMgdXNlZC4KCgkqIGluY2x1ZGUvd2luZ2RpLmgsIG9iamVjdHMvZGliLmM6CglaeWdvIEJsYXhlbGwgPHVqMjJrZmJjQHVtYWlsLmZ1cnJ5dGVycm9yLm9yZz4KCUZpeCB0eXBlcyBvZiBHZXRESUJpdHMgZnVuY3Rpb25zIChMUFNUUiBzaG91bGQgYmUgTFBWT0lEKS4KCgkqIGdyYXBoaWNzL3gxMWRydi9kaWIuYzoKCUh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJRml4ZXMgc2V2ZXJhbCBwcm9ibGVtcyB3aXRoIFNldERJQml0c1RvRGV2aWNlIGlmIHhTcmMgIT0gMC4KCVRoYW5rcyB0byBJYW4gU2NobWlkdCBmb3IgdGhlIGxvZ3MuCgoJKiB3aW5kb3dzL21kaS5jOiBGcmFuY29pcyBCb2lzdmVydCA8ZnJhbmNvaXNAbWFjYWRhbWlhbi5jb20+CglUaGUgc3lzdGVtcyBidXR0b25zIChtaW5pbWl6ZS9yZXN0b3JlL2Nsb3NlKSBub3cgYXBwZWFyIG9uIHRoZSBtZW51CgliYXIgb2YgbWRpIGFwcGxpY2F0aW9uLgoKCSogY29udHJvbHMvbWVudS5jOiBGcmFuY29pcyBCb2lzdmVydCA8ZnJhbmNvaXNAbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRlZCB0aGUgbWFnaWMgbWVudSBpdGVtcyBpZCdzIHVzZWQgYnkgd2luZG93cyB3aGVuIGluc2VydGluZwoJdGhlIG1pbmltaXplL21heGltaXplL2Nsb3NlIGJ1dHRvbnMgaW4gdGhlIG1lbnUgYmFyIG9mIGFuIGFwcGxpY2F0aW9uLgoKCSogb2JqZWN0cy9lbmhtZXRhZmlsZS5jOiBKYXNvbiBNY011bGxhbiA8am1jY0BvbnR2LmNvbT4KCUFkZHMgc3VwcG9ydCBmb3IgRU1SX1NUUkVUQ0hESUJJVFMgaW4gRU1Gcy4KCgkqIHByb2dyYW1zL2F2aXRvb2xzL2F2aXBsYXkuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCBpbWFnZSBzaXplIGFuZCBsaW5lIHNpemUsIGFkZGVkIDhiaXQgY29sb3IvcGFsZXR0ZSBoYW5kbGluZy4KCgkqIHRvb2xzL2J1Z19yZXBvcnQucGw6IEFkYW0gdGhlIEphenogR3V5IDxtYWdpY2JveEBiZXN0d2ViLm5ldD4KCUZpeGVkIGZvcm1hdHRpbmcgb2YgY29kZQoJTm93IGNoYW5nZXMgdG8gZGlyZWN0b3J5IG9mIHByb2dyYW0gdG8gYmUgcnVuIGJlZm9yZSBzdGFydGluZyB3aW5lCgoJKiB3aW5kb3dzL3F1ZXVlLmMsIHdpbmRvd3MvdXNlci5jLCBpbmNsdWRlL3VzZXIuaCwgc2NoZWR1bGVyL3RocmVhZC5jOgoJU3RlcGhhbmUgTHVzc2llciA8c3RlcGhhbmVAbWFjYWRhbWlhbi5jb20+CgktIENsZWFuZWQgdXAgdGhlIG1lc3NhZ2UgcXVldWUgd2hlbiBhIHRocmVhZCBleGl0IChidXQgbm90IHRoZSBwcm9jZXNzKS4KCS0gTW9kaWZpZWQgUVVFVUVfRGVsZXRlTXNnUXVldWUgdG8gZXhpdCBncmFjZWZ1bGx5ICh3aXRob3V0IGNyYXNoaW5nIFdpbmUpIGlmCgkgIHF1ZXVlIGxpbmsgbGlzdCBpcyBjb3JydXB0ZWQuCgoJKiBtdWx0aW1lZGlhL2Rzb3VuZC5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVNvdW5kcyB3ZXJlIGN1dCBvZmYgZHVlIHRvIGludGVnZXIgb3ZlcmZsb3cuIEZpeGVkLgoKCSogaW5jbHVkZS93aW5kb3dzeC5oOiBQYXVsIFF1aW5uIDxwYXVscUBjb3JlbC5jYT4KCUFkZGVkIHdpbmRvd3N4LmggZm9yIFdpbmVsaWIuCgpGcmkgRmViICA1IDE3OjQwOjQ3IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgcHJvZ3JhbXMvTWFrZWZpbGUuaW4sIHByb2dyYW1zL2NtZGxndHN0Ly5jdnNpZ25vcmUsIHByb2dyYW1zL2NtZGxndHN0L01ha2VmaWxlLmluLCBwcm9ncmFtcy9jbWRsZ3RzdC9jbWRsZ3IuaCwgcHJvZ3JhbXMvY21kbGd0c3QvY21kbGdyLnJjLCBwcm9ncmFtcy9jbWRsZ3RzdC9jbWRsZ3RzdC5jOgoJPGV3aWxsQG5jYWwudmVyaW8uY29tPgoJQWRkZWQgY29tbW9uIGRpYWxvZ3MgdGVzdCBwcm9ncmFtLgoKCSogaW5jbHVkZS9tZXNzYWdlLmgsIGluY2x1ZGUvcXVldWUuaCwgaW5jbHVkZS93aW4uaCwgaW5jbHVkZS93aW5wb3MuaCwgc2NoZWR1bGVyL3RocmVhZC5jLCB3aW5kb3dzL2ZvY3VzLmMsIHdpbmRvd3MvaW5wdXQuYywgd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3MvcXVldWUuYywgd2luZG93cy93aW4uYywgd2luZG93cy93aW5wb3MuYzoKCU5vZWwgQm9ydGh3aWNrIDxub2VsQG1hY2FkYW1pYW4uY29tPgoJQWRkZWQgbWFuYWdlbWVudCBhbmQgYWxsb2NhdGlvbiBvZiB0aGUgUEVSUVVFVUVEQVRBIHN0cnVjdHVyZS4KCgkqIGdyYXBoaWNzL2RkcmF3LmMsIGdyYXBoaWNzL3ZnYS5jLCBpbmNsdWRlL2RkcmF3Lmg6CglMaW9uZWwgVWxtZXIgPHVsbWVyQGRpcmVjdHByb3ZpZGVyLm5ldD4KCS0gYWRkZWQgYSBkdW1wIG9mIHRoZSBwYWxldHRlIGNyZWF0aW9uIGZsYWdzCgktIGNoYW5nZWQgcGFsZXR0ZSBjcmVhdGlvbiBjb2RlIGluIHZnYS5jIHRvIHByZXZlbnQgdXNlbGVzcyBlcnJvcgoJICBtZXNzYWdlCgoJKiBkb2N1bWVudGF0aW9uL3dpbmUubWFuLCBmaWxlcy9kcml2ZS5jLCB3aW5lLmluaToKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVVzZSB2ZmF0L3dpbjk1IGFzIGRlZmF1bHQuCgoJKiBpbmNsdWRlL3Zmdy5oLCBtdWx0aW1lZGlhL21zdmlkZW8uYywgcHJvZ3JhbXMvYXZpdG9vbHMvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvYXZpdG9vbHMvTWFrZWZpbGUuaW4sIHByb2dyYW1zL2F2aXRvb2xzL2F2aWluZm8uYywgcHJvZ3JhbXMvYXZpdG9vbHMvYXZpcGxheS5jLCByZWxheTMyL2J1aWx0aW4zMi5jLCByZWxheTMyL21zdmZ3MzIuc3BlYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJVXBkYXRlZCBtc3ZpZGVvIC8gdmZ3LmgsIHVzZSBidWlsdGluIG1zdmZ3MzIuZGxsIGJ5IGRlZmF1bHQsIGFkZGVkCglhdmlpbmZvIGFuZCBhdmlwbGF5IHByb2dyYW1zLgoKCSogd2luMzIvY29uc29sZS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUNvbnRpbnVlZCBoYWNrIHRvIHdpbjMyL2NvbnNvbGUuYywgc28gdGhhdCB0aGUgSURBIFBybyBEaXNhc3NlbWJsZXIKCXdvcmtzIGFnYWluLiBOZWVkcyBtdWNoIG1vcmUgd29yayBob3dldmVyLgoKCSogb2xlL3N0b3JhZ2UzMi5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUluY2x1ZGUgb2JqYmFzZS5oIGZvciBDb1Rhc2tNZW0qIHByb3RvdHlwZXMgKG9yIHdlIGdldCBXSU5BUEkKCXByb2JsZW1zKS4KCgkqIG9sZS9zdG9yYWdlMzIuaDogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBtaXNzaW5nIFVMT05HIHRvIHN0YXRpYyBjb25zdCBPRkZTRVRfeHguCgpUaHUgRmViICA0IDE2OjQ1OjQwIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkb2N1bWVudGF0aW9uL3dpbmUubWFuOiBKYW1lcyBKdXJhbiA8anJqMTIwQHBzdS5lZHU+CglWYXJpb3VzIG1hbnBhZ2UgdXBkYXRlcywgaW5jbHVkaW5nIHRoZSBpbmNvcnJlY3Qgc3RhdGVtZW50IGFib3V0IGdsaWJjCglhbmQgY2xvbmUoKS4KCgkqIGRvY3VtZW50YXRpb24vZGVidWdnaW5nOiBKYW1lcyBKdXJhbiA8anJqMTIwQHBzdS5lZHU+CglGaXggcG9pbnRlciB0byB0aGUgV2luZG93cyBEaXNhc3NlbWJsZXIgMzIuICBUaGFua3MgdG8gSGVyYmVydAoJUm9zbWFuaXRoIDxoZXJwQHdpbGRzYXUuaWR2LnVuaS1saW56LmFjLmF0PiBmb3Igc3VnZ2VzdGluZyB0aGlzLgoKCSogZGxscy9tc2FjbTMyL2RyaXZlci5jOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQW5vdGhlciB1c2FnZSBvZiBub24tcG9ydGFibGUgZnVuY3Rpb25zLi4uCgoJKiBtc2Rvcy9kb3NtZW0uYzoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVNvbWUgdmFsdWVzIG9mIHBCaW9zRGF0YSBhZGRlZC9maXhlZC4KCgkqIG9iamVjdHMvcGFsZXR0ZS5jLCB3aW5kb3dzL2NsaXBib2FyZC5jLCB3aW5kb3dzL2RjZS5jLCB3aW5kb3dzL2Rpc3BsYXkuYywgd2luZG93cy9ldmVudC5jLCB3aW5kb3dzL2tleWJvYXJkLmMsIHdpbmRvd3MvbW91c2UuYywgd2luZG93cy9zeXNtZXRyaWNzLmMsIHdpbmRvd3MvdXNlci5jLCB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3dpbnBvcy5jLCBjb250cm9scy9kZXNrdG9wLmMsIGNvbnRyb2xzL3dpZGdldHMuYywgZGVidWdnZXIvZGJnLnksIGdyYXBoaWNzL2RkcmF3LmMsIGdyYXBoaWNzL3BhaW50aW5nLmMsIGdyYXBoaWNzL3dpbmcuYywgaW5jbHVkZS9iaXRtYXAuaCwgaW5jbHVkZS9jb2xvci5oLCBpbmNsdWRlL2RkcmF3LmgsIGluY2x1ZGUvZGVidWcuaCwgaW5jbHVkZS9kZWJ1Z2RlZnMuaCwgaW5jbHVkZS9kZXNrdG9wLmgsIGluY2x1ZGUvZGlzcGxheS5oLCBpbmNsdWRlL21haW4uaCwgaW5jbHVkZS9vcHRpb25zLmgsIGluY2x1ZGUvdHR5ZHJ2LmgsIGluY2x1ZGUvd2luLmgsIGluY2x1ZGUveDExZHJ2LmgsIG1pc2MvbWFpbi5jLCBvYmplY3RzL2JpdG1hcC5jLCBvYmplY3RzL2NvbG9yLmMsIG9iamVjdHMvZGMuYywgb2JqZWN0cy9kaWIuYywgb2JqZWN0cy9nZGlvYmouYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJTW92ZWQgc29tZSBtb3JlIGNvZGUgdG8gdGhlIFgxMSBkcml2ZXIuCgoJKiB3aW5kb3dzL3R0eWRydi9NYWtlZmlsZS5pbiwgd2luZG93cy90dHlkcnYvY2xpcGJvYXJkLmMsIHdpbmRvd3MvdHR5ZHJ2L2Rlc2t0b3AuYywgd2luZG93cy90dHlkcnYvZXZlbnQuYywgd2luZG93cy90dHlkcnYvaW5pdC5jLCB3aW5kb3dzL3R0eWRydi9rZXlib2FyZC5jLCB3aW5kb3dzL3R0eWRydi9tYWluLmMsIHdpbmRvd3MvdHR5ZHJ2L21vbml0b3IuYywgd2luZG93cy90dHlkcnYvbW91c2UuYywgd2luZG93cy90dHlkcnYvd25kLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCVRUWSBkcml2ZXIgY2hhbmdlcy4KCgkqIHdpbmRvd3MveDExZHJ2L01ha2VmaWxlLmluLCB3aW5kb3dzL3gxMWRydi9jbGlwYm9hcmQuYywgd2luZG93cy94MTFkcnYvZGVza3RvcC5jLCB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCB3aW5kb3dzL3gxMWRydi9pbml0LmMsIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmMsIHdpbmRvd3MveDExZHJ2L21haW4uYywgd2luZG93cy94MTFkcnYvbW9uaXRvci5jLCB3aW5kb3dzL3gxMWRydi9tb3VzZS5jLCB3aW5kb3dzL3gxMWRydi93bmQuYywgZ3JhcGhpY3MveDExZHJ2L2JpdGJsdC5jLCBncmFwaGljcy94MTFkcnYvYml0bWFwLmMsIGdyYXBoaWNzL3gxMWRydi9icnVzaC5jLCBncmFwaGljcy94MTFkcnYvY2xpcHBpbmcuYywgZ3JhcGhpY3MveDExZHJ2L2RpYi5jLCBncmFwaGljcy94MTFkcnYvZ3JhcGhpY3MuYywgZ3JhcGhpY3MveDExZHJ2L2luaXQuYywgZ3JhcGhpY3MveDExZHJ2L29iamVjdHMuYywgZ3JhcGhpY3MveDExZHJ2L29lbWJpdG1hcC5jLCBncmFwaGljcy94MTFkcnYvcGVuLmMsIGdyYXBoaWNzL3gxMWRydi90ZXh0LmMsIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglYMTEgZHJpdmVyIGNoYW5nZXMuCgoJKiB0c3gxMS90c194Zjg2ZGdhLmMsIHRzeDExL3RzX3hmODZ2bW9kZS5jLCB0c3gxMS90c194bGliLmMsIHRzeDExL3RzX3hwbS5jLCB0c3gxMS90c194cmVzb3VyY2UuYywgdHN4MTEvdHNfeHNobS5jLCB0c3gxMS90c194dXRpbC5jLCBpbmNsdWRlL3RzX3hmODZkZ2EuaCwgaW5jbHVkZS90c194Zjg2dm1vZGUuaCwgaW5jbHVkZS90c194bGliLmgsIGluY2x1ZGUvdHNfeHBtLmgsIGluY2x1ZGUvdHNfeHJlc291cmNlLmgsIGluY2x1ZGUvdHNfeHNobS5oLCBpbmNsdWRlL3RzX3h1dGlsLmgsIHRvb2xzL21ha2VfWDExd3JhcHBlcnM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCU5vbi1YMTEgY29tcGlsZSBmaXggZm9yIGdlbmVyYXRlZCBjb2RlLgoKCSogaW5jbHVkZS9tb25pdG9yLmgsIHdpbmRvd3MvbXVsdGltb24uYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJSW1wbGVtZW50YXRpb24gb2YgdGhlIG5ldyBtb25pdG9yIGFic3RyYWN0aW9uLgoKCSogZ3JhcGhpY3MvdHR5ZHJ2Ly5jdnNpZ25vcmUsIGdyYXBoaWNzL3R0eWRydi9NYWtlZmlsZS5pbiwgZ3JhcGhpY3MvdHR5ZHJ2L2luaXQuYywgTWFrZWZpbGUuaW46CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCU5ldyBUVFkgZHJpdmVyIGZvciBHREkuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgaW5jbHVkZS9hY2NvbmZpZy5oLCBpbmNsdWRlL2NvbmZpZy5oLmluOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIEFkZGVkIHRoZSBncmFwaGljcy90dHlkcnYgZGlyZWN0b3J5LgoJLSBEb24ndCBzZWFyY2ggZm9yIHJlZW50cmFudCBYIHdoZW4gWCBkb2Vzbid0IGV4aXN0LgoJLSBBZGRlZCBjb25maWcgb3B0aW9ucyBIQVZFX0xJQlhYUE0KCS0gQWRkZWQgY2hlY2tzIGlmIHRoZSBoZWFkZXIgZmlsZXMgYWxzbyBleGlzdCBmb3Igc29tZSBsaWJyYXJpZXMKClR1ZSBGZWIgIDIgMTY6MTQ6MjMgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvc2hlbGwzMi9icnNmb2xkZXIuYywgZ3JhcGhpY3MvZDNkY29tbW9uLmMsIGdyYXBoaWNzL2QzZGRldmljZXMuYywgZ3JhcGhpY3MvZDNkZXhlY3V0ZWJ1ZmZlci5jLCBncmFwaGljcy9kM2RsaWdodC5jLCBncmFwaGljcy9kM2RtYXRlcmlhbC5jLCBncmFwaGljcy9kM2R0ZXh0dXJlLmMsIGdyYXBoaWNzL2QzZHZpZXdwb3J0LmMsIGluY2x1ZGUvaW50ZXJmYWNlcy5oLCBvbGUvc2FmZWFycmF5LmMsIG9sZS9zdGdfYmlnYmxvY2tmaWxlLmMsIG9sZS9zdGdfc3RyZWFtLmMsIG9sZS9zdG9yYWdlMzIuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJUmVwbGFjZWQgcmVmZXJlbmNlcyB0byBpbnRlcmZhY2VzLmggYnkgd2luZS9vYmpfeHh4LmggaGVhZGVycyBpbnN0ZWFkCglzaW5jZSB0aGVzZSBoZWFkZXJzIGFscmVhZHkgcHJvdmlkZSB0aGUgbmVjZXNzYXJ5IGRlZmluaXRpb25zLgoKCSogaW5jbHVkZS9tc2Rvcy5oLCBtc2Rvcy9BdHRpYy9jZHJvbS5jLCBtc2Rvcy9NYWtlZmlsZS5pbiwgbXNkb3MvaW50MmYuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJUmVtb3ZlZCByZWZlcmVuY2VzIHRvIG9ic29sZXRlIG1zZG9zL2Nkcm9tLmMgZmlsZS4KCU1ha2UgdXNlIG9mIG5ldyBXaW5lIGludGVybmFsIENEIFJPTSBpbnRlcmZhY2UuCgoJKiBtdWx0aW1lZGlhL21jaWNkYS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIHRyYWNrcyBpbmRleGluZyBpbiBtY2ljZGEuYwoJTWFrZSB1c2Ugb2YgbmV3IFdpbmUgaW50ZXJuYWwgQ0QgUk9NIGludGVyZmFjZS4KCgkqIGluY2x1ZGUvY2Ryb20uaCwgbWlzYy9NYWtlZmlsZS5pbiwgbWlzYy9jZHJvbS5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglOZXcgV2luZSBpbnRlcm5hbCBpbnRlcmZhY2UgZm9yIGhhbmRsaW5nIENEIFJvbSAoZXNwZWNpYWxseSBhdWRpbyBDRAoJUk9NKS4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaCwgaW5jbHVkZS90cmVldmlldy5oLCBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6CglaeWdvIEJsYXhlbGwgPHVqMjJrZmJjQHVtYWlsLmZ1cnJ5dGVycm9yLm9yZz4KCUNoYW5nZSBhIGZldyB0eXBlcyB0byBtYXRjaCB5b3Uta25vdy13aG8ncyBkZWNsYXJhdGlvbnMuCglIVFJFRUlURU0gaXMgYSBzdHJ1Y3QgX1RSRUVJVEVNIEZBUioKCUdldERJQml0cyBwYXNzZXMgYSBMUFZPSUQgZm9yIHRoZSBiaXRtYXAgZGF0YSwgbm90IExQU1RSLgoJQWRqdXN0bWVudCBvZiBXaW5lIEMgY29kZSB0byBtYXRjaCB0aGUgbmV3IHR5cGVzIGluY2x1ZGVkLgoKCSogbWlzYy9semV4cGFuZC5jOiBVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglGaXhlZCBHRVRfTFpfU1RBVEUgbWFjcm8uCgoJKiBncmFwaGljcy9kM2RfcHJpdmF0ZS5oLCBncmFwaGljcy9kM2R0ZXh0dXJlLmMsIGdyYXBoaWNzL2RkcmF3LmMsIGluY2x1ZGUvZDNkLmgsIGluY2x1ZGUvZGRyYXcuaDoKCUxpb25lbCBVbG1lciA8dWxtZXJAZGlyZWN0cHJvdmlkZXIubmV0PgoJQWRkZWQgc3R1YnMgZm9yIG5ldyBEaXJlY3REcmF3NCBhbmQgRGlyZWN0RHJhd1N1cmZhY2U0IG1ldGhvZHMuCgoJKiB0b29scy93cmMvd3JjLmgsIHRvb2xzL3dyYy93cmN0eXBlcy5oLCB0b29scy93cmMvQ0hBTkdFUzoKCUFsYmVydCBkZW4gSGFhbiA8YWxiZXJ0ZEBjb3JlbC5jYT4KCUZpeGVkIHdyb25nIG9yZGVyIG9mIHJlc19pY28gYW5kIHJlc19ibXAgd2hpY2ggbXVzdCBiZSBpbiBSVF94eHggb3JkZXIuCgoJKiBkbGxzL3ZlcnNpb24vcmVzb3VyY2UuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglyZXNsZW4gY291bGQgYmUgdXNlZCB1bmluaXRpYWxpc2VkIGluIEdldEZpbGVSZXNvdXJjZTMyIChmaXhlcyBzb21lCglzdHJhbmdlIFZlclF1ZXJ5VmFsdWUgY3Jhc2hlcykuCgoJKiBvbGUvbmxzL3N2ZS5ubHM6IEphbiBELiA8SmFuLkRqYXJ2QG1ib3gyMDAuc3dpcG5ldC5zZT4KCUFkZGVkIGRlZmluaXRpb24gZm9yIExPQ0FMRV9TR1JPVVBJTkcsIExPQ0FMRV9TTU9OR1JPVVBJTkcgYW5kCglMT0NBTEVfSUlOVExDVVJSRElHSVRTLgoKCSogbWVtb3J5L3NlbGVjdG9yLmMsIHJlbGF5MzIva2VybmVsMzIuc3BlYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBQcmVzZXJ2ZSBFQVggaW4gVW5NYXBTTEZpeEFycmF5KCkuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYzogRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUZpeGVzIGxpdHRsZSBwb2ludGVyIGJ1ZyBpbiBEUEFfRGVsZXRlUHRyKCkuCgoJKiBpZjE2MzIva2VybmVsLnNwZWMsIG1lbW9yeS9zdHJpbmcuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJSW1wbGVtZW50ZWQgS0VSTkVMLjQzNCAoVW5pY29kZVRvQW5zaSkuCgoJKiBmaWxlcy9kcml2ZS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUdldERpc2tGcmVlU3BhY2VFeDMyQSBjYW4gZ2V0IG51bGwgcG9pbnRlcnMgYW5kIHN0aWxsIG5vdCBjcmFzaC4KCgkqIGdyYXBoaWNzL3BzZHJ2L2RyaXZlci5jOgoJSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglDbGVhciB1cCBhcmdzIHRvIFBTRFJWX0FkdmFuY2VkU2V0dXBEaWFsb2cuCgoJKiBncmFwaGljcy94MTFkcnYveGZvbnQuYzoKCUh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJUmVkdWNlIE1BWF9GT05UX1NJWkUgdG8gMTAwMC4KClN1biBKYW4gMzEgMTk6MDQ6MzEgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbjMyL2NvbnNvbGUuYywgaW5jbHVkZS9zZXJ2ZXIuaCwgaW5jbHVkZS9zZXJ2ZXIvb2JqZWN0LmgsIGluY2x1ZGUvc2VydmVyL3JlcXVlc3QuaCwgbG9hZGVyL25lL21vZHVsZS5jLCByZWxheTMyL2tlcm5lbDMyLnNwZWMsIHNlcnZlci9jb25zb2xlLmMsIHNlcnZlci9yZXF1ZXN0LmMsIHNlcnZlci90cmFjZS5jOgoJQWRkZWQgaW5wdXQgcXVldWUgdG8gc2VydmVyLXNpZGUgY29uc29sZSBvYmplY3QsCglyZWFkL3dyaXRlX2NvbnNvbGVfaW5wdXQgcmVxdWVzdHMsIGFuZCB1c2UgdGhlbSBmb3IKCVJlYWQvV3JpdGVDb25zb2xlSW5wdXQuCgoJKiBzY2hlZHVsZXIvY2xpZW50LmM6IEdlb2ZmIENsYXJlIDxnd2NAcm9vdC5jby51az4KCUZpeCB0byBhbGxvdyBmb3IgcmVjdm1zZygpIHJldHVybmluZyBsZXNzIGRhdGEgdGhhbiBpcyBuZWVkZWQuCgoJKiBpbmNsdWRlL3Rvb2xoZWxwLmgsIGluY2x1ZGUvd2luZG93cy5oOgoJQXR0ZW1wdCBhdCBmaXhpbmcgdGhlIE1BWF9QQVRIIG11bHRpcGxlIGRlZmluaXRpb24gcHJvYmxlbS4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KU3VuIEphbiAzMSAxMDoxMzo0NCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS9tb2R1bGUuaCwgbG9hZGVyL25lL3Jlc291cmNlLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCU1vZGlmeSBORV9GaW5kVHlwZVNlY3Rpb24gYW5kIE5FX0ZpbmRSZXNvdXJjZUZyb21UeXBlIHNvIGFzIHRvIGJlCgl1c2FibGUgYnkgdGhlIFZFUlNJT04gY29kZS4KCgkqIGluY2x1ZGUvcGVfaW1hZ2UuaCwgbG9hZGVyL3BlX3Jlc291cmNlLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFkZGVkIEdldFJlc0RpckVudHJ5QSBmb3IgdXNlIGJ5IHRoZSBWRVJTSU9OIGNvZGUuCgoJKiBtaXNjL0F0dGljL3Zlci5jLCBtaXNjL01ha2VmaWxlLmluOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglSZW1vdmVkIG9sZCBWRVIuRExMIGNvZGUuCgoJKiBkbGxzL3ZlcnNpb24vLmN2c2lnbm9yZSwgZGxscy92ZXJzaW9uL01ha2VmaWxlLmluLCBkbGxzL3ZlcnNpb24vaW5mby5jLCBkbGxzL3ZlcnNpb24vaW5zdGFsbC5jLCBkbGxzL3ZlcnNpb24vcmVzb3VyY2UuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJSW1wbGVtZW50YXRpb24gb2YgVkVSU0lPTi5ETEwuIEJhc2VkIG9uIG9sZCBtaXNjL3Zlci5jLgoJLSBBY2Nlc3NpbmcgUEUgdmVyc2lvbiBpbmZvIHJlc291cmNlcyBzaG91bGQgd29yayBjb3JyZWN0bHkgbm93LgoJLSBGaXhlZCBtZW1vcnkgbGVha3MuCgktIENsZWFuIHNlcGFyYXRpb24gb2YgMTYtIGFuZCAzMi1iaXQgcGFydHMuCgktIE1pbm9yIGJ1Z2ZpeGVzLgoKCSogTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzL01ha2VmaWxlLmluOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBZGQgbmV3IHN1YmRpcmVjdG9yaWVzIGRsbHMvdmVyIGFuZCBkbGxzL3ZlcnNpb24uCgoJKiBpZjE2MzIvdmVyLnNwZWMsIGRsbHMvdmVyLy5jdnNpZ25vcmUsIGRsbHMvdmVyL01ha2VmaWxlLmluLCBkbGxzL3Zlci92ZXIxNi5jLCBpbmNsdWRlL3Zlci5oOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglJbXBsZW1lbnRhdGlvbiBvZiBWRVIuRExMLiBUaHVua3MgdXAgdG8gVkVSU0lPTi5ETEwuCgoJKiBtaXNjL2xzdHIuYzogUGFzY2FsIEN1b3EgPGN1b3FAdmlzYW4uaW5yaWEuZnI+CglJc0NoYXJBbHBoYTMyQTogdXNlIGxvb2stdXAgdGFibGUgZnJvbSBvbGUybmxzLmMuCgoJKiBvbGUvb2xlMm5scy5jOiBQYXNjYWwgQ3VvcSA8Y3VvcUB2aXNhbi5pbnJpYS5mcj4KCUxDTWFwU3RyaW5nMzJBOiBJbXBsZW1lbnRlZCBmbGFncyBOT1JNX0lHTk9SRU5PTlNQQUNFIGFuZAoJTk9STV9JR05PUkVTWU1CT0xTIGluIHN0cmluZyBtYXBwaW5nIG1vZGUuCgoJKiB3aW5kb3dzL3gxMWRydi93bmQuYzogTkYgU3RldmVucyA8bm9ybWFuQGFyY2FkeS51LW5ldC5jb20+CglDcmVhdGUgWCB3aW5kb3cgZm9yIGNoaWxkIHdpbmRvd3MgcmVwYXJlbnRlZCB0byBiZSB0b3AgbGV2ZWwgd2luZG93cy4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYywgaW5jbHVkZS9zaGVsbC5oLCByZWxheTMyL3NoZWxsMzIuc3BlYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJU3R1YiBmb3IgUGF0aFF1YWxpZnkzMltBfFddLgoKCSogZ3JhcGhpY3MvZDNkbWF0ZXJpYWwuYywgZ3JhcGhpY3MvZGRyYXcuYzoKCUxpb25lbCBVbG1lciA8dWxtZXJAZGlyZWN0cHJvdmlkZXIubmV0PgoJQmFicmlhbiBWaWt0b3IgPHZAdWx5c3Nlcy5zY2guYm1lLmh1PgoJLSBhZGRlZCBzdXBwb3J0IGZvciBDb2xvcktleWluZyBkdXJpbmcgYmxpdHMKCS0gbWlzY2VsbGFuZW91cyBmaXhlcwoKCSogZGxscy9udGRsbC9ydGwuYywgaW5jbHVkZS9udGRsbC5oLCByZWxheTMyL250ZGxsLnNwZWM6CglBbGV4IEtvcm9ia2EgPGtvcm9ia2FAZ2FsYXh5LmFtcy5zdW55c2IuZWR1PgoJQWRkZWQgYW4gaW1wbGVtZW50YXRpb24gb2YgTVJTVyBsb2Nrcy4KCgkqIG1zZG9zL2ludDIxLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQWRkZWQgbWlzc2luZyBpbmNsdWRlcyAodGhlIFBTUCBoYW5kbGluZyB3YXMgaW5jb3JyZWN0LCBhcyB0aGUKCU1aX1NVUFBPUlRFRCBkZWZpbml0aW9uIHdhcyBtaXNzaW5nKS4gQWRkZWQgYSBzaW1wbGUgaGFuZGxlciBmb3IKCWRpcmVjdCBjb25zb2xlIGlucHV0LCB3aGljaCBuZWVkcyB0byBiZSBpbXByb3ZlZC4KCgkqIGNvbnNvbGUvdHR5LmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJU21hbGwgZml4LgoKCSogc2NoZWR1bGVyL3N5bmNocm8uYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglMaXN0IGhhbmRsZXMgV2FpdEZvck11bHRpcGxlT2JqZWN0cyBpcyB3YWl0aW5nIGZvciB3aGVuIHJ1bm5pbmcgd2l0aAoJLWRlYnVnbXNnICt3aW4zMi4KCgkqIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYywgcmVsYXkzMi9hZHZhcGkzMi5zcGVjOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglTdHViIGZvciBHZXRTZWN1cml0eURlc2NyaXB0b3JDb250cm9sLgoKCSogcmVsYXkzMi91c2VyMzIuc3BlYywgd2luZG93cy91c2VyLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCVN0dWIgZm9yIEdldFVzZXJPYmplY3RTZWN1cml0eS4KCgkqIG1pc2MvcmVnaXN0cnkuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglJbXBsZW1lbnRlZCBoYW5kbGluZyBvZiBSRUdfTVVMVElfU1ogYW5kIGZpeGVkIHNtYWxsIGJ1ZyBpbgoJUmVnU2V0VmFsdWUuCgoJKiB3aW5kb3dzL3dpbnByb2MuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglFdmVyeSBFTV9HRVRMSU5FIHNlbmQgYmV0d2VlbiBhIDMyVyB0byBhIDMyQSB3aW5kb3cgcmV0dXJuZWQKCWluY29tcGxldGUgdmFsdWVzIGJlZm9yZSAodGhlIGZpcnN0IDIgY2hhcnMgd2hlcmUgY3V0IGF3YXkpLgoKCSogd2luZG93cy93aW5wb3MuYzogSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglGaXggdHlwbyBpbiBTZXRXaW5kb3dQb3MzMi4KClNhdCBKYW4gMzAgMTU6NTU6MjggMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvYnVpbHRpbjMyLmgsIG1pc2MvbWFpbi5jLCByZWxheTMyL2J1aWx0aW4zMi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglFbmFibGUvZGlzYWJsZSByZWxheTMyIGRlYnVnZ2luZyBvbiB0aGUgZmx5LiBTdGFydCBhcHAgd2l0aAoJLWRlYnVnbXNnICtyZWxheSBvciB3YXJuK3JlbGF5LiBTdWdnZXN0ZWQgYnkgSnVlcmdlbiBTY2htaWVkLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGdyYXBoaWNzL2QzZF9wcml2YXRlLmgsIGluY2x1ZGUvYWNjb25maWcuaCwgaW5jbHVkZS9jb25maWcuaC5pbiwgaW5jbHVkZS9kM2QuaCwgaW5jbHVkZS93aW5lX2dsLmg6CglMaW9uZWwgVWxtZXIgPHVsbWVyQGRpcmVjdHByb3ZpZGVyLm5ldD4KCUFkZGVkIGNoZWNrIGZvciB0aGUgcHJlc2VuY2Ugb2YgTWVzYSdzIGhlYWRlciBmaWxlcy4KCgkqIG11bHRpbWVkaWEvYXVkaW8uYywgbXVsdGltZWRpYS9kc291bmQuYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUZpeGVkIGVycm9yIG1lc3NhZ2VzLgoKCSogbWlzYy9jb21tZGxnLmM6IEJlcm5kIEhlcmQgPGhlcmRAaGVyZHNvZnQuY29tPgoJVXNlIHByb3BlciAxNi0+MzIgbWVzc2FnZSBjb252ZXJzaW9uIGluIEZJTEVETEdfQ2FsbFdpbmRvd1Byb2MuCgoJKiB3aW5kb3dzL3gxMWRydi93bmQuYzogQmVybmQgSGVyZCA8aGVyZEBoZXJkc29mdC5jb20+CglTZXRQYXJlbnQgc2hvdWxkIGxpbmsgdGhlIHdpbmRvdyBhdCB0aGUgc3RhcnQgb2YgdGhlIGxpc3QuCgoJKiB3aW5kb3dzL3dpbnBvcy5jOiBORiBTdGV2ZW5zIDxub3JtYW5AYXJjYWR5LnUtbmV0LmNvbT4KCUluIFdpbmRvdyBTZXRXaW5kb3dQb3Mgd2l0aCBTV1BfSElERVdJTkRPVyBkb2VzIG5vdCByZW1vdmUKCXRoZSBmb2N1cyBmcm9tIHRoZSBmb2N1cyB3aW5kb3c7IFNob3dXaW5kb3cgd2l0aCBTV19ISURFIGRvZXMuCglTbyBtb3ZlIHRoZSBjb2RlIHRoYXQgZG9lcyB0aGlzIGZyb20gU2V0V2luZG93UG9zIHRvIFNob3dXaW5kb3cuCgoJKiBtZW1vcnkvc3RyaW5nLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQ2hlY2sgZm9yIE5VTEwgaW4gbHN0cmNweSogKFdpbmRvd3MgdXNlcyByZWFsIGV4Y2VwdGlvbiBoYW5kbGVycykuCgoJKiBNYWtlZmlsZS5pbjogSmFtZXMgSnVyYW4gPGp1cmFuQGNzZS5wc3UuZWR1PgoJRG9uJ3QgaW5zdGFsbCBpbmNsdWRlIGZpbGVzIHdoZW4gLS1kaXNhYmxlLWxpYiBpcyB1c2VkLgoKCSogcmVsYXkzMi93aW5tbS5zcGVjOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQWRkZWQgV0lOTU0gam95KiAuc3BlYyBlbnRyaWVzLgoKCSogbXNkb3MveG1zLmM6IEFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVhNUyBmaXguCgoJKiBtc2Rvcy9kb3NtZW0uYzoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVNwZWxsaW5nIGZpeC4KCgkqIFJFQURNRTogQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJRG9jIHVwZGF0ZS4KCgkqIGluY2x1ZGUvbWlzY2VtdS5oLCBtc2Rvcy9pbnQxMC5jLCBtc2Rvcy9pbnQyMS5jLCBtc2Rvcy9pbnRlcnJ1cHRzLmM6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglTb21lIGludGVycnVwdCBlbmhhbmNlbWVudHMuCgoJKiBtc2Rvcy9pb3BvcnRzLmM6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglpbXBsZW1lbnRlZCB0aW1lciBsYXRjaGluZwoJdHJhY2UgbWVzc2FnZSBmaXgKCXRlbXBvcmFyeSAiZml4IiBmb3IgTGludXgncyBjb2Fyc2UgdGltZXIgcmVzb2x1dGlvbgoKCSogaWYxNjMyL2NvbXBvYmouc3BlYywgaW5jbHVkZS9vYmpiYXNlLmgsIGluY2x1ZGUvd2luZXJyb3IuaCwgb2xlL2NvbXBvYmouYywgb2xlL29sZTIuYywgcmVsYXkzMi9vbGUzMi5zcGVjOgoJRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50ZWQgdGhlIHN0YXJ0dXAtc2h1dGRvd24gbWVjaGFuaXNtIGZvciB0aGUgQ09NIHN1YnN5c3RlbS4KCUltcGxlbWVudGVkIHRoZSBDbGFzcyBvYmplY3QgcmVnaXN0cmF0aW9uIG1lY2hhbmlzbS4KCgkqIHByb2dyYW1zL2Nsb2NrLy5jdnNpZ25vcmUsIHByb2dyYW1zL25vdGVwYWQvLmN2c2lnbm9yZTogQWRkZWQgRmkucwoKCSogaW5jbHVkZS93aW5lL29ial9zdG9yYWdlLmgsIG9sZS9NYWtlZmlsZS5pbiwgb2xlL3N0Z19iaWdibG9ja2ZpbGUuYywgb2xlL3N0Z19zdHJlYW0uYywgb2xlL3N0b3JhZ2UuYywgb2xlL3N0b3JhZ2UzMi5jLCBvbGUvc3RvcmFnZTMyLmgsIHJlbGF5MzIvb2xlMzIuc3BlYzoKCUZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUFkZGVkIGFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBPTEUgc3RydWN0dXJlZCBzdG9yYWdlLiBUaGUgbWFpbgoJZmVhdHVyZXMgb2YgdGhpcyBpbXBsZW1lbnRhdGlvbiBhcmU6CgktIENhbiBvcGVuIHN0b3JhZ2VzIGNyZWF0ZWQgaW4gV2luZG93cy4KCS0gQ2FuIGNyZWF0ZSBuZXcgc3RvcmFnZXMgdGhhdCB0aGUgd2luZG93cyBsaWJyYXJpZXMgY2FuCgkgIHJlYWQuCgktIFByb3ZpZGVzIGFsbCB0aGUgZnVuY3Rpb25hbGl0eSB0byBjcmVhdGUvb3Blbi9yZW1vdmUgYW5kCgkgIHJlbmFtZSBzdHJlYW1zIGFuZCBzdG9yYWdlcyBpbnNpZGUgdGhlIG1haW4gc3RvcmFnZSBvYmplY3QuCgoJKiBpbmNsdWRlL21pc2NlbXUuaCwgbWlzY2VtdS9tYWluLmMsIGdyYXBoaWNzL2RkcmF3LmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCURlZmluZWQgUkVTVE9SRV9TSUdOQUxTIGJ5IGRlZmF1bHQgYW5kIGNhbGwgU0lHTkFMX0VtdWxhdG9ySW5pdAoJdGhyb3VnaCBhIGZ1bmN0aW9uIHBvaW50ZXIgaW5zdGVhZC4gQWRkZWQgYSBmZXcgdHJhY2VzLiBGaXhlZCB0aGUKCSJNZW1vcnkgY29ycnVwdGlvbiAhIiBtZXNzYWdlIGluIERHQSBtb2RlLiBDb21tZW50ZWQgb3V0IGFuCgl1bm5lY2Vzc2FyeSBUU1hGODZWaWRNb2RlU2V0Vmlld1BvcnQgdGhhdCBjYXVzZWQgbXkgWCBzZXJ2ZXIgdG8KCWFjdCB1cCwgcmVseWluZyBvbiBUU1hGODZER0FTZXRWaWV3UG9ydCBpbnN0ZWFkLgoKCSogZ3JhcGhpY3MvcHNkcnYvdGV4dC5jLCBtc2Rvcy9pbnQyZi5jLCBwcm9ncmFtcy93aW5oZWxwL2hscDJzZ21sLmMsIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jLCBmaWxlcy9maWxlLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVNvbWUgbW9yZSB3YXJuaW5ncyBhbmQgYnVncyBmaXhlZC4KCgkqIGRsbHMvY29tY3RsMzIvdGFiLmMsIGluY2x1ZGUvdGFiLmg6IEFsZXggUHJpZW0gPGFsZXhwQHNjaS5rdW4ubmw+CglTbWFsbCB1cGRhdGUuCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmgsIGluY2x1ZGUvdHJlZXZpZXcuaCwgZGxscy9jb21jdGwzMi90cmVldmlldy5jLCBkbGxzL3NoZWxsMzIvYnJzZm9sZGVyLmM6CglBbGV4IFByaWVtIDxhbGV4cEBzY2kua3VuLm5sPgoJLSBUaGUgdXN1YWwgYnVnZml4ZXMuCgktIEJldHRlciB1bmljb2RlIHN1cHBvcnQgKG9ubHkgZGVmaW5lcywgY3VycmVudGx5KQoJLSBEcmFnICYgZHJvcCBpbXBsZW1lbnRlZC4KCS0gTFBTVFJfVEVYVENBTExCQUNLIHNob3VsZCB3b3JrIG5vdy4KCS0gRmlyc3Qgc3RhcnQgYXQgY3VzdG9tIGRyYXcgY29kZS4KCgkqIHdpbmRvd3MveDExZHJ2L2V2ZW50LmM6IEZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCU1ha2Ugc3VyZSB0aGF0IHRoZSBrZXlzdGF0ZSByZWNlaXZlZCBieSB0aGUgV01fWEJVVFRPTlVQIGFuZAoJV01fWEJVVFRPTkRPV04gbWF0Y2hlcyB0aGUgbWVzc2FnZS4gSW4gWCwgdGhlIGtleXN0YXRlIGlzIGNoYW5nZWQKCWFmdGVyIHRoZSBtZXNzYWdlIGlzIHByb2Nlc3NlZC4gIEluIFdpbmRvd3MsIGl0IGlzIGNoYW5nZWQgYmVmb3JlLgoKCSogZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jLCBkbGxzL2FkdmFwaTMyL3NlcnZpY2UuYzoKCU1hdHRoZXcgQmVja2VyIDxtYmVja2VyQGdsYXNzY2l0eS5uZXQ+CglEb2MgdXBkYXRlcy4KCgkqIHdpbjMyL2ZpbGUuYzogQmVyZW5kIFJlaXRzbWEgPGJlcmVuZCBhdCBhc3NldC1jb250cm9sLmNvbT4KCVNldEZpbGVBdHRyaWJ1dGVzMzJBIGNoYW5nZWQgdG8gbWFrZSBmaWxlIHdyaXRlYWJsZSB3aGVuCglGSUxFX0FUVFJJQlVURV9SRUFET05MWSBpcyBub3Qgc2V0LgoKCSogY29uc29sZS9pbnRlcmZhY2UuYywgY29uc29sZS9uY3Vyc2VzLmMsIGluY2x1ZGUvY29uc29sZS5oLCBtc2Rvcy9pbnQxMC5jOgoJSm9zZXBoIFByYW5ldmljaCA8anByYW5ldmljaEBseWNvcy5jb20+CglQcmVsaW1pbmFyeSBjb2xvciBjb25zb2xlIHN1cHBvcnQuCgoJKiBkb2N1bWVudGF0aW9uL2xhbmd1YWdlcywgcHJvZ3JhbXMvY2xvY2svQ2hhbmdlTG9nLCBwcm9ncmFtcy9jbG9jay9GaS5yYywgcHJvZ3JhbXMvY2xvY2svTWFrZWZpbGUuaW4sIHByb2dyYW1zL2Nsb2NrL21haW4uYywgcHJvZ3JhbXMvbm90ZXBhZC9DaGFuZ2VMb2csIHByb2dyYW1zL25vdGVwYWQvRmkucmMsIHByb2dyYW1zL25vdGVwYWQvTWFrZWZpbGUuaW4sIHByb2dyYW1zL25vdGVwYWQvbWFpbi5jLCByZXNvdXJjZXMvc3lzcmVzX0ZpLnJjOgoJSnVra2EtUGVra2EgSWl2b25lbiA8amlpdm9uZW5AcG9zZWlkb24uY3MuaHV0LmZpPgoJVXBkYXRlZCBGaW5uaXNoIGxhbmd1YWdlIHN1cHBvcnQuCgpGcmkgSmFuIDI5IDE1OjEyOjExIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3Zmdy5oLCBpbmNsdWRlL3dpbmVycm9yLmgsIGluY2x1ZGUvd2ludHlwZXMuaCwgbXVsdGltZWRpYS9tc3ZpZGVvLmMsIG9sZS9ndWlkLmMsIHByb2dyYW1zL01ha2VmaWxlLmluLCBwcm9ncmFtcy9hdml0b29scy8uY3ZzaWdub3JlLCBwcm9ncmFtcy9hdml0b29scy9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvYXZpdG9vbHMvaWNpbmZvLmMsIHJlbGF5MzIvbXN2ZnczMi5zcGVjLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgaW5jbHVkZS9kZWJ1Zy5oLCBpbmNsdWRlL2RlYnVnZGVmcy5oLCBpbmNsdWRlL29sZWF1dG8uaDoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJVXBkYXRlZCBtc3ZpZGVvLiBOZXcgcHJvZ3JhbSAnaWNpbmZvIFstYWJvdXRdIFstY29uZmlndXJlXScgdG8KCXF1ZXJ5IGluc3RhbGxlZCAod2luMzIpIGNvbXByZXNzb3JzLiBTdGFydGVkIG9uIEFWSUZJTEUgc3VwcG9ydC4KClRodSBKYW4gMjggMTc6NTY6MTQgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvd2luZS9vYmpfbWlzYy5oLCBpbmNsdWRlL3dpbmUvb2JqX21vbmlrZXIuaCwgaW5jbHVkZS93aW5lL29ial9zdG9yYWdlLmgsIG9sZS9NYWtlZmlsZS5pbiwgb2xlL2JpbmRjdHguYywgb2xlL2ZpbGVtb25pa2VyLmMsIG9sZS9pdGVtbW9uaWtlci5jLCBvbGUvbW9uaWtlci5jLCBvbGUvb2xlMi5jOgoJTm9vbWVuIEhhbXphIDxub29tZW5AbWFjYWRhbWlhbi5jb20+CglBZGRlZCBhIHN0dWIgaW1wbGVtZW50YXRpb24gZm9yIEZpbGVNb25pa2VyLCBJdGVtTW9uaWtlciBhbmQgQmluZEN0eAoJY2xhc3Nlcy4KCgkqIGRlYnVnZ2VyL2RiZy55LCBkZWJ1Z2dlci9kZWJ1Zy5sOgoJTkYgU3RldmVucyA8bm9ybWFuQGFyY2FkeS51LW5ldC5jb20+CglJbXBsZW1lbnRlZCB0aGUgc3ltYm9sZmlsZSBjb21tYW5kIChhcyBtZW50aW9uZWQgYnkgdGhlIGhlbHAKCWNvbW1hbmQpLiBUaGlzIHJlYWRzIGEgc3ltYm9sIGZpbGUgaW4gdGhlIGZvcm1hdCBnZW5lcmF0ZWQgYnkgbm0uCgoJKiBtdWx0aW1lZGlhL2RwbGF5LmM6IFBldGVyIEh1bm5pc2V0dCA8aHVubmlzZUBub3J0ZWxuZXR3b3Jrcy5jb20+CgktIFNtYWxsIGJ1ZyBmaXguCgktIEFkZGVkIGRpcmVjdCBwbGF5IGFzY2lpIGludGVyZmFjZXMuCgktIEZpeGVkIHVwIHRoZSBRdWVyeUludGVyZmFjZSBmb3IgZHBsYXkgYW5kIGRwbGF5bG9iYnkgdG8gaGFuZGxlIGFsbCBjYXNlcy4KCgkqIG1lbW9yeS92aXJ0dWFsLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgRklMRV9WSUVXIHN0cnVjdCBpbml0aWFsaXNhdGlvbi4KCgkqIGluY2x1ZGUvZG9zZXhlLmg6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglGaXhlZCBub24taTM4NiBjb21waWxlLgoKCSogZ3JhcGhpY3MvdmdhLmMsIG1zZG9zL2RwbWkuYywgbXVsdGltZWRpYS9kcGxheS5jLCBtdWx0aW1lZGlhL21taW8uYywgZGxscy9jb21jdGwzMi9hbmltYXRlLmMsIGRsbHMvY29tY3RsMzIvY29tYm9leC5jLCBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYywgZGxscy9jb21jdGwzMi9ob3RrZXkuYywgZGxscy9jb21jdGwzMi9pcGFkZHJlc3MuYywgZGxscy9jb21jdGwzMi9saXN0dmlldy5jLCBkbGxzL2NvbWN0bDMyL3BhZ2VyLmMsIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmMsIGRsbHMvY29tY3RsMzIvcmViYXIuYywgZGxscy9jb21jdGwzMi90YWIuYywgZGxscy9jb21jdGwzMi90b29sYmFyLmMsIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzoKCUphbWVzIEp1cmFuIDxqcmoxMjBAcHN1LmVkdT4KCUNvbW1lbnRlZCBvdXQgdW51c2VkIHZhcmlhYmxlcyB0byBwcmV2ZW50IG5lZWRsZXNzIGNvbXBpbGVyIHdhcm5pbmdzLgoKCSogaW5jbHVkZS9kZGVtbC5oLCBtaXNjL2RkZW1sLmM6CglLZWl0aCBNYXR0aGV3cyA8a2VpdGhfbUBzd2VlbmV5LmRlbW9uLmNvLnVrPgoJMXN0IGN1dCBpbXBsZW1lbnRhdGlvbiBvZiBEZGVJbml0aWFsaXplMzJXIGFuZCBzdXBwb3J0aW5nIGNvZGUuCgoJKiBkbGxzL2FkdmFwaTMyL2FkdmFwaS5jLCBkbGxzL2FkdmFwaTMyL2V2ZW50bG9nLmMsIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYywgZGxscy9hZHZhcGkzMi9zZXJ2aWNlLmM6CglNYXR0aGV3IEJlY2tlciA8bWJlY2tlckBnbGFzc2NpdHkubmV0PgoJRG9jdW1lbnRhdGlvbiBzdGFuZGFyZGl6YXRpb25zLgoKCSogaW5jbHVkZS9xdWV1ZS5oLCB3aW5kb3dzL2hvb2suYywgd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3MvcXVldWUuYywgd2luZG93cy93aW4uYywgd2luZG93cy93aW5wb3MuYzoKCVN0ZXBoYW5lIEx1c3NpZXIgPHN0ZXBoYW5lQG1hY2FkYW1pYW4uY29tPgoJLSBNYWRlIHRoZSBtZXNzYWdlIHF1ZXVlIGFjY2VzcyB0byBiZSB0aHJlYWQgc2FmZS4gKFVzaW5nIHR3byBuZXcKCSAgZnVuY3Rpb25zIHRvIGFjY2VzcyB0aGUgbWVzc2FnZSBxdWV1ZSwgUVVFVUVfTG9jaygpLCBRVUVVRV9VbmxvY2soKQoJICBpbnN0ZWFkIG9mIEdsb2JhbExvY2sxNigpKS4KCS0gRml4ZWQgUVVFVUVfRHVtcFF1ZXVlICh1c2VkIGJ5ICJpbmZvIHF1ZXVlIDxoYW5kbGU+IiB3aXRoIHRoZQoJICB3aW5lLWRlYnVnZ2VyKS4KCgkqIG11bHRpbWVkaWEvZHNvdW5kLmMsIG11bHRpbWVkaWEvbW1zeXN0ZW0uYywgb2JqZWN0cy90ZXh0LmMsIHdpbmRvd3MvZGlhbG9nLmMsIHdpbmRvd3MvZGlucHV0LmMsIHdpbmRvd3MvbWRpLmMsIHdpbmRvd3MvbXNnYm94LmMsIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3Mvd2lucHJvYy5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwgZ3JhcGhpY3MvZDNkbWF0ZXJpYWwuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvaW5pdC5jLCBpZjE2MzIvcmVsYXkuYywgaW5jbHVkZS93aW5jb24uaCwgbG9hZGVyL3Jlc291cmNlLmMsIG1pc2MvaW1tLmMsIG1pc2MvbHpleHBhbmQuYywgbXNkb3MvaW50MjEuYywgZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYywgZGxscy9udGRsbC9ydGwuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgYSBsb3Qgb2Ygd2FybmluZ3MgZm9yIHBvc3NpYmxlIHByb2JsZW1zLgoKCSogbWlzYy9jb21tLmM6IEhlcmJlcnQgUm9zbWFuaXRoIDxoZXJwQHdpbGRzYXUuaWR2LnVuaS1saW56LmFjLmF0PgoJRml4ZWQgdHlwby4KCgkqIHRvb2xzL2J1Z19yZXBvcnQucGw6IEFkYW0gdGhlIEphenogR3V5IDxtYWdpY2JveEBiZXN0d2ViLm5ldD4KCUZpeGVkIHZhcmlvdXMgYnVncy4KCU1hZGUgbmV3YmllIG1vZGUgZWFzaWVyLgoKCSogb2JqZWN0cy9jdXJzb3JpY29uLmMsIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmMsIGlmMTYzMi91c2VyLnNwZWMsIGluY2x1ZGUvd2luZS93aW51c2VyMTYuaCwgaW5jbHVkZS93aW51c2VyLmg6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIEdldEljb25JbmZvMTYgKC5zcGVjLElDT05JTkZPIHN0cnVjdCBpcyBkaWZmZXJlbnQgZm9yIFdpbjE2L1dpbjMyKS4KCgkqIGNvbnNvbGUvbmN1cnNlcy5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVN3aXRjaCBuY3Vyc2VzLmgvY3Vyc2VzLmggaW5jbHVkZSAod29ya3MgYmV0dGVyIGZvciBGcmVlQlNEKS4KCgkqIHdpbmRvd3MvZHJpdmVyLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgbG9hZGluZyBvZiB3aW4zMiBkcml2ZXJzLgoKVHVlIEphbiAyNiAxNzoyOTo0OSAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZmlsZXMvcHJvZmlsZS5jOiBEb24ndCBhYm9ydCBQUk9GSUxFX0dldFNlY3Rpb24gb24gZW1wdHkga2V5cy4KCgkqIGRsbHMvbXNhY20zMi9pbnRlcm5hbC5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVRlbXBvcmFyeSAjaWYgMCdlZCBwYXJ0IGZvciBidWlsdGluIG1vZHVsZXMgaW4gTVNBQ00gdG8gbWFrZSBpdAoJY29tcGlsZSB3aXRoIHRoZSBwYXRjaCBmb3IgbG9hZGFibGUgZHJpdmVycy4KCgkqIGluY2x1ZGUvZHJpdmVyLmgsIHJlbGF5MzIvd2lubW0uc3BlYywgd2luZG93cy9kcml2ZXIuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgc3VwcG9ydCBmb3IgbG9hZGluZyBkcml2ZXJzIGluIFdpbmUuCgoJKiB0b29scy9idWdfcmVwb3J0LnBsOiBBZGFtIHRoZSBKYXp6IEd1eSA8bWFnaWNib3hAYmVzdHdlYi5uZXQ+CglBIHBlcmwgc2NyaXB0IHRvIHByb2R1Y2UgYSBidWcgcmVwb3J0IHdpdGggbGl0dGxlIGhhc3NsZS4KCgkqIGdyYXBoaWNzL2Rpc3BkaWIuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglBZGRlZCAoZHVtbXkpIERlYXRoL1Jlc3VycmVjdGlvbiBjYWxscyB0byBEaXNwbGF5RGliLgoKCSogbWlzYy9semV4cGFuZC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFsbG9jYXRlIGEgRE9TIGhhbmRsZSBpZiB3ZSBvcGVuIGEgbm9ybWFsIGZpbGUgd2l0aCBMWk9wZW5GaWxlMTYuCgoJKiBncmFwaGljcy9kZHJhdy5jLCBpbmNsdWRlL2RkcmF3Lmg6CglMaW9uZWwgVWxtZXIgPHVsbWVyQGRpcmVjdHByb3ZpZGVyLm5ldD4KCS0gYWRkZWQgZGVwdGggY29udmVyc2lvbiByb3V0aW5lcyAob25seSA4YnBwIC0+IDE2IGJwcCBmb3Igbm93KQoJLSBhZGRlZCBzdXBwb3J0IG9mIERFUFRIX0ZJTEwgZm9yIEJsaXRzCgktIGFkZGVkIHNvbWUgZmxhZ3MgaW4gR2V0Q2FwcyB0byBnZXQgc29tZSBnYW1lcyB3b3JraW5nCgoJKiBpZjE2MzIvdXNlci5zcGVjLCBpbmNsdWRlL3dpbmUvd2ludXNlcjE2LmgsIGluY2x1ZGUvd2ludXNlci5oLCBvYmplY3RzL2N1cnNvcmljb24uYywgcmVsYXkzMi91c2VyMzIuc3BlYywgZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYzoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUltcGxlbWVudGVkIEdldEljb25JbmZvMTYgLT4gY2FsbCB0byBHZXRJY29uSW5mbzMyLgoKCSogc2NoZWR1bGVyL2NsaWVudC5jOiBDb21tZW50ZWQgb3V0IEVYRUNfU0VSVkVSCgoJKiBkbGxzL2NvbWN0bDMyL2RyYWdsaXN0LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJMyBtaXNzaW5nIFdJTkFQSSBhZGRlZC4KCgkqIGRsbHMvc2hlbGwzMi9lbnVtaWRsaXN0LmMsIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmMsIGRsbHMvc2hlbGwzMi9zaHJlcy5yYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJU21hbGwgZml4ZXMuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmMsIGluY2x1ZGUvY29tbWN0cmwuaDoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJQ2hhbmdlZCBzb21lIHRyZWV2aWV3IHJlbGF0ZWQgZGVmaW5pdGlvbnMuCgoJKiBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW4sIGRsbHMvc2hlbGwzMi9icnNmb2xkZXIuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJSW1wbGVtZW50ZWQgU0hCcm93c2VGb3JGb2xkZXIoKSBkaWFsb2cuCgoJKiBkZWJ1Z2dlci9tc2MuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCB0eXBvIGluIHR5cGUgKHJlbW92ZWQgcXVpdGUgYSBmZXcgd2FybmluZ3MpLgoKCSogZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jLCByZWxheTMyL2FkdmFwaTMyLnNwZWM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIEdldFNlY3VyaXR5RGVzY3JpcHRvck93bmVyL0dyb3VwLCBSZXZlcnRUb1NlbGYgc3R1YnMuCglSZXR1cm4gTlVMTCBmcm9tIE9wZW5UaHJlYWRUb2tlbi4KCgkqIHdpbjMyL2NvbnNvbGUuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglEbyBub3QgZW5kbGVzc2x5IGxvb3AgaW4gQ09OU09MRV9nZXRfaW5wdXQgYWZ0ZXIgRU9GLgoJQ3JlYXRlIHh0ZXJtIGV2ZW4gaWYgc3RkaW4gaXMgbm90IGEgdGVybWluYWxoYW5kbGUuCglTZXRDb25zb2xlQ3Vyc29yUG9zaXRpb246IE9ubHkgbWFrZSBjb21wbGV4IGNvbnNvbGUgb24gcm93IGNoYW5nZSwKCWlnbm9yZSBpbnRlcmxpbmUgcG9zaXRpb25pbmcgKHNvIHRoZSBjeWd3aW4gY21kbGluZSB0b29scyBkbyBub3QKCWNyZWF0ZSB4dGVybXMgdW5uZWNlc3NhcnkpCgoJKiBtaXNjL3ByaW50ZHJ2LmM6IEh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJTWFrZSBzdXJlIERydkdldFByaW50ZXJEYXRhIHJldHVybnMgdGhlIGNvcnJlY3QgZGF0YSBpZiBjYkRhdGEgPD0gMQoKCSogaW5jbHVkZS9xdWV1ZS5oLCB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy9xdWV1ZS5jLCB3aW5kb3dzL3dpbi5jOgoJU3RlcGhhbmUgTHVzc2llciA8c3RlcGhhbmVAbWFjYWRhbWlhbi5jb20+CgktIENoYW5naW5nIE1FU1NBR0VRVUVVRSBzdHJ1Y3R1cmUgYWNjb3JkaW5nIHRvIFVscmljaCBwcm9wb3NpdGlvbi4KCS0gT25lIG1lc3NhZ2UgcXVldWUgZm9yIGV2ZXJ5IHRocmVhZCBuZWVkaW5nIGl0LgoJLSBNZXNzYWdlcyBpbiB0aGUgbWVzc2FnZSBxdWV1ZSBhcmUgbm93IHN0b3JlZCBpbiBhIGxpbmtlZCBsaXN0CgktIE1lc3NhZ2VzIGFyZSBhbGxvY2F0ZWQgaW4gdGhlIHN5c3RlbSBoZWFwLgoJLSBNZXNzYWdlcyBpbiB0aGUgbWVzc2FnZSBxdWV1ZSBhcmUgMzIgYml0cyAoTVNHMzIpLgoJLSBBbGwgcmVhZC93cml0ZSBvcGVyYXRpb25zIHJlZ2FyZGluZyBtZXNzYWdlcyBpbiB0aGUgbWVzc2FnZSBxdWV1ZSBhcmUKCSAgdGhyZWFkIHNhZmUuCgpTdW4gSmFuIDI0IDE5OjE0OjU4IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmMsIGRsbHMvY29tY3RsMzIvZmxhdHNiLmMsIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmMsIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYywgZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYywgZGxscy9jb21jdGwzMi9zdGF0dXMuYywgaW5jbHVkZS9mbGF0c2IuaDoKCUVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglGaXhlZCBzZXZlcmFsIGJ1Z3MgYW5kIHR5cG9zLgoKCSogZG9jdW1lbnRhdGlvbi9jb21tb25fY29udHJvbHM6IEVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglVcGRhdGVzIGFuZCBmaXhlcy4KCgkqIGRsbHMvY29tY3RsMzIvTWFrZWZpbGUuaW4sIGRsbHMvY29tY3RsMzIvZHJhZ2xpc3QuYywgaW5jbHVkZS9jb21tY3RybC5oLCByZWxheTMyL2NvbWN0bDMyLnNwZWM6CglFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJTmV3IGRyYWcgbGlzdCBjb250cm9sLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmM6IEVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglGaXhlZCBwb2ludGVyIGJ1Z3MgaW4gRFBBX0luc2VydFB0cigpIGFuZCBEUEFfRGVsZXRlUHRyKCkuCgoJKiBkbGxzL2NvbWN0bDMyL3Byb2dyZXNzLmMsIGluY2x1ZGUvcHJvZ3Jlc3MuaDoKCUVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglBZGRlZCBXTV9bRy9TXUVURk9OVCBoYW5kbGluZy4KCgkqIGRsbHMvY29tY3RsMzIvcGFnZXIuYzogRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUFkZGVkIFdNX0NPTU1BTkQgYW5kIFdNX05PVElGWSBoYW5kbGluZy4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbHRpcHMuYzogRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUZpeGVkIHJlZHJhdyBidWcgZm9yIHRyYWNraW5nIHRvb2x0aXBzLgoKCSogZGxscy9jb21jdGwzMi9yZWJhci5jOiBFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJQWRkZWQgc29tZSBtZXNzYWdlcyB0byB0aGUgcmViYXIgY29udHJvbC4KCgkqIG11bHRpbWVkaWEvbWNpY2RhLmM6IEdlb2ZmIENsYXJlIDxnd2NAcm9vdC5jby51az4KCVNldmVyYWwgaW50ZXJuYWwgZnVuY3Rpb25zIHdvbid0IGNvbXBpbGUgd2hlbiB0aGUgY29uZGl0aW9uYWwKCSNpZiBkZWZpbmVkKGxpbnV4KSB8fCBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9fTmV0QlNEX18pCgljb21lcyBvdXQgZmFsc2UuICBJIG1vdmVkIHRoZSBjb25kaXRpb25hbHMgYXJvdW5kIHNvIHRoYXQKCXRoZSBmaWxlIHdvdWxkIGF0IGxlYXN0IGNvbXBpbGUuICBOb3Qgc3VyZSBpZiBpdCBkb2VzIHRoZQoJcmlnaHQgdGhpbmcgb24gbm9uLWxpbnV4L0ZyZWVCU0QvTmV0QlNEIHN5c3RlbXMuCgoJKiBtaXNjL3Rvb2xoZWxwLmM6IEdlb2ZmIENsYXJlIDxnd2NAcm9vdC5jby51az4KCU1vdmVkIHByb2Nlc3MuaCBoaWdoZXIgdXAgdGhlIGluY2x1ZGUgbGlzdCwgdG8gYXZvaWQgYSBwcm9ibGVtIHdpdGgKCSJFUlIiIGJlaW5nIHJlZGVmaW5lZCBpbiBzeXMvcmVnc2V0LmguCgoJKiBtaXNjL2NvbW0uYzogR2VvZmYgQ2xhcmUgPGd3Y0Byb290LmNvLnVrPgoJVGhlIEI1NzYwMCBhbmQgQjExNTIwMCBzeW1ib2xzIGFyZSBub3QgZGVmaW5lZCBpbiBVbml4d2FyZS4KCgkqIGNvbnRyb2xzL2xpc3Rib3guYzogTkYgU3RldmVucyA8bm9ybWFuQGFyY2FkeS51LW5ldC5jb20+CglDaGFuZ2UgU1dfPz8/IG9wdGlvbnMgb24gbGlzdCBib3ggc2Nyb2xsaW5nIHNvIHRoYXQgdGhleSBtYXRjaCB3aGF0CglXaW5kb3dzIGRvZXMuCgoJKiBsb2FkZXIvZG9zL2Rvc3ZtLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJTW92ZWQgRE9TIGhhbmRsZSBhbGxvY2F0aW9uIHNsaWdodGx5LCB0byBmaXggcG90ZW50aWFsIG1lbW9yeQoJbGVha3MgYW5kIGxvc3QgaGFuZGxlcy4gQWxzbyByZW1vdmVkIHNvbWUgdXNlbGVzcyBpbml0IGNvZGUuCgoJKiBncmFwaGljcy9wc2Rydi9hZm0uYywgZ3JhcGhpY3MvcHNkcnYvdGV4dC5jLCBpZjE2MzIvZHVtbXkuYywgaWYxNjMyL2dkaS5zcGVjLCBtaXNjL3ByaW50ZHJ2LmM6CglOaWNrIEhvbGxvd2F5IDxOaWNrLkhvbGxvd2F5QGFsZmllLmRlbW9uLmNvLnVrPgoJSW50ZXJuYWwgUG9zdFNjcmlwdCBwcmludGVyIGRyaXZlciBpbXByb3ZlbWVudHMuCgoJKiBjb250cm9scy9lZGl0LmM6IEdlcmFyZCBQYXRlbCA8Ry5QYXRlbEB3YW5hZG9vLmZyPgoJQ2hhbmdlZCBFRElUX0VNX0NoYXJGcm9tUG9zIHRvIHJldHVybiBsaW5lIG51bWJlci4KCgkqIHdpbmRvd3MveDExZHJ2L3duZC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZyZWUgdGhlIHByaXZhdGUgZGF0YSBwb2ludGVyLCBUSEVOIHNldCBpdCB0byBOVUxMLgoKCSogd2luZG93cy9tZXNzYWdlLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJTWlzc2luZyBXSU5BUEkuCgoJKiBpbmNsdWRlL29sZWF1dG8uaCwgaW5jbHVkZS93aW5lcnJvci5oLCBvbGUvTWFrZWZpbGUuaW4sIG9sZS9zYWZlYXJyYXkuYywgcmVsYXkzMi9vbGVhdXQzMi5zcGVjOgoJU3lsdmFpbiBTdC5HZXJtYWluIDxzeWx2YWluQG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50YXRpb24gb2YgdGhlIFNhZmVBcnJheSBmYW1pbHkgZnVuY3Rpb25zLgoKCSogaW5jbHVkZS93aW5kb3dzLmgsIHJlbGF5MzIva2VybmVsMzIuc3BlYywgc2NoZWR1bGVyL3RocmVhZC5jOgoJR3V5IEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCUFkZGVkIHN0dWIgZm9yIFNldFRocmVhZExvY2FsZS4KCgkqIG9iamVjdHMvdGV4dC5jOiBHdXkgQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJRmluaXNoZWQgR2V0VGV4dENoYXJzZXRJbmZvIHJvdXRpbmUuCgoJKiBvbGUvbmxzL2VudS5ubHMsIG9sZS9vbGUybmxzLmM6CglHdXkgQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJRml4ZWQgRklYTUUgaW4gRW51bVRpbWVGb3JtYXRzMzJXCglBZGRlZCBzdXBwb3J0IGZvciBGT05UU0lHTkFUVVJFIGluIEdldExvY2FsZUluZm8zMkEgYW5kIHVwZGF0ZWQKCUdldExvY2FsZUluZm8zMlcuCgoJKiBkb2N1bWVudGF0aW9uL2ludGVybmFsLWRsbCwgZG9jdW1lbnRhdGlvbi9zaGVsbDMyLCBkb2N1bWVudGF0aW9uL3dpbmUubWFuOgoJUGFzY2FsIEN1b3EgPFBhc2NhbC5DdW9xQGlucmlhLmZyPgoJRml4ZWQgdHlwb3MuCgoJKiBkZWJ1Z2dlci9tc2MuYzogU2VyZ2V5IFR1cmNoYW5vdiA8dHVyY2hhbm92QHVzYS5uZXQ+CglGaXhlZCBzb3VyY2UgbGluZSBtYXRjaGluZyBmb3IgZnVuY3Rpb25zIGluIERFQlVHX1Byb2Nlc3NDb2ZmRGVidWc7CglzZWFyY2hpbmcgZm9yIERCRyBhbmQgUERCIGZpbGVzLgoKCSogZGVidWdnZXIvaGFzaC5jOiBTZXJnZXkgVHVyY2hhbm92IDx0dXJjaGFub3ZAdXNhLm5ldD4KCUZpeCBmb3IgZmlsZXMgd2hpY2ggZG8gbm90IGNvbnRhaW4gZXhwb3J0cyAoZmcsIEVYRSkgdG8gZ2V0IHByb2Nlc3NlZAoJZm9yIGRlYnVnIGluZm9ybWF0aW9uLgoKCSogaWYxNjMyL2tlcm5lbC5zcGVjLCBpZjE2MzIvcmVsYXkuYywgaWYxNjMyL3RodW5rLmMsIHRvb2xzL2J1aWxkLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUltcGxlbWVudGVkIEtFUk5FTC42MjEgKENCQ2xpZW50VGh1bmtTTEV4KS4KCgkqIGRlYnVnZ2VyL2RiZy55LCBkZWJ1Z2dlci9kZWJ1Zy5sLCBkZWJ1Z2dlci9pbmZvLmMsIGluY2x1ZGUvbWFpbi5oLCBtaXNjL21haW4uYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWxsb3cgc3dpdGNoaW5nIG9mZi9vbiBvZiBkZWJ1Z21zZ3MgaW4gdGhlIGRlYnVnZ2VyLgoKCSogbG9hZGVyL21haW4uYywgbWlzY2VtdS9pbnN0ci5jLCBtc2Rvcy9kb3NtZW0uYywgbXNkb3MvaW50MTUuYywgaW5jbHVkZS9taXNjZW11Lmg6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglJbXBsZW1lbnRlZCBJbnQgMHgxNS8weGMwOiBCSU9TIC0gR0VUIENPTkZJRyBhbmQgc29tZSBvdGhlciBCSU9TCglkYXRhLgoKU2F0IEphbiAyMyAxNDoxNToxNyAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZ3JhcGhpY3MvcGFpbnRpbmcuYywgaWYxNjMyL3VzZXIuc3BlYywgaW5jbHVkZS93aW5lL3dpbnVzZXIxNi5oLCBsb2FkZXIvcGVfaW1hZ2UuYywgbWlzYy9sc3RyLmMsIHdpbmRvd3MvaG9vay5jLCB3aW5kb3dzL21lc3NhZ2UuYzoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUltcGxlbWVudGVkIFdJTjE2X0NhbGxNc2dGaWx0ZXIzMiwgV0lOMTZfRGlzcGF0Y2hNZXNzYWdlMzIsCglEcmF3QW5pbWF0ZWRSZWN0czE2IChzdHViKSwgRm9ybWF0TWVzc2FnZTE2LCBXSU4xNl9HZXRNZXNzYWdlMzIsCglXSU4xNl9QZWVrTWVzc2FnZTMyIGFuZCBXSU4xNl9UcmFuc2xhdGVNZXNzYWdlMzIuCgoJKiBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW4sIGRsbHMvc2hlbGwzMi9jbGFzc2VzLmMsIGRsbHMvc2hlbGwzMi9jb250bWVudS5jLCBkbGxzL3NoZWxsMzIvZGF0YW9iamVjdC5jLCBkbGxzL3NoZWxsMzIvZW51bWlkbGlzdC5jLCBkbGxzL3NoZWxsMzIvZm9sZGVycy5jLCBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLCBkbGxzL3NoZWxsMzIvc2hlbGxndWlkLmMsIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYywgZGxscy9zaGVsbDMyL3NoZWxsb2xlLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmMsIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYywgZGxscy9zaGVsbDMyL3NobHZpZXcuYywgaW5jbHVkZS9pbnRlcmZhY2VzLmgsIGluY2x1ZGUvc2hsZ3VpZC5oLCBpbmNsdWRlL3NobG9iai5oLCBpbmNsdWRlL3dpbmRvd3MuaCwgbWlzYy9zaGVsbC5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CgktIHNvbWUgZml4ZXMsIGNsZWFuZWQgdXAgaW5jbHVkZXMsIGZpeGVkIGxlYWtzCgktIGNsZWFuIERsbFJlZmVyZW5jZUNvdW50LCBiZXR0ZXIgRGxsTWFpbigpCgktIGR5bmFtaWNhbGx5IGxpbmtpbmcgTG9va3VwSWNvbklkRnJvbURpcmVjdG9yeUV4MzIgYW5kCgkgIENyZWF0ZUljb25Gcm9tUmVzb3VyY2VFeDMyIHRvIFVTRVIzMgoJLSBtb3ZlZCBndWlkJ3MgaW5zdGFuY2VzIHRvIG5ldyBmaWxlIHNoZWxsZ3VpZC5jCgktIGltcGxlbWVudGVkICBTaGVsbEV4ZWN1dGVFeDMyVwoKCSogb2xlL01ha2VmaWxlLmluLCBvbGUvY29tcG9iai5jLCBvbGUvZ3VpZC5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglNb3ZlZCB0aGUgaW5zdGFuY2UgY3JlYXRpb24gb2YgR1VJRCdzIHRvIGEgbmV3IGZpbGUuCglTaXplIG9mIGNvbXBvYmoubyBnb2VzIGRvd24gdG8gMS8zOyBzaG91bGQgcHJldmVudCBtb3JlIHNpZzExJ3MuCgoJKiBpbmNsdWRlL2luaXRndWlkLmg6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTmV3IGZpbGUgdG8gaW5zdGFudGlhdGUgR1VJRCdzIG1zLWxpa2UuCgoJKiB3aW5kb3dzL3gxMWRydi93bmQuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTZXQgcHJpdmF0ZSBkYXRhIHN0cnVjdCB0byBOVUxMIHRvIGV4cG9zZSBwcm9ibGVtcyBpbiBvdGhlciBjb2RlCgliZXR0ZXIuIEZpeGVzIHRoZSBYVW5tYXBXaW5kb3cgcHJvYmxlbXMgcmVwb3J0ZWQgYnkgcmVwbGFjaW5nIHRoZW0KCXdpdGggTlVMTCBwdHIgZGVyZWZlcmVuY2VzLgoKCSogZG9jdW1lbnRhdGlvbi9kZWJ1Zy1tc2dzLCBkb2N1bWVudGF0aW9uL2RlYnVnZ2luZywgZG9jdW1lbnRhdGlvbi9pbnRlcm5hbC1kbGwsIGRvY3VtZW50YXRpb24vaW9wb3J0LXRyYWNlLWhpbnRzLCBkb2N1bWVudGF0aW9uL3dpbmVfb3MyOgoJWnlnbyBCbGF4ZWxsIDx1ajIya2ZiY0B1bWFpbC5mdXJyeXRlcnJvci5vcmc+CglGaXhlZCB0eXBvcy4KCgkqIGZpbGVzL2ZpbGUuYywgaW5jbHVkZS9maWxlLmgsIGxvYWRlci9kb3MvZG9zdm0uYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRE9TIHByb2dyYW1zIHVzZSBoYW5kbGVzIDAtNCB3aXRob3V0IG9wZW5pbmcvY2xvc2luZyBhbnkgb2YgdGhvc2UKCWhhbmRsZXMgZmlyc3QuIFNwbGl0IHVwIEluaXQgZnJvbSBBbGxvY0Rvc0hhbmRsZSBhbmQgY2FsbCBpdCBmcm9tCgl0aGUgRE9TVk0uCgoJKiBNYWtlZmlsZS5pbjogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglSZW1vdmUgY29uZmlndXJlLmluLT5jb25maWd1cmUgcnVsZSAod2UgbWlnaHQgbm90IGhhdmUgYXV0b2NvbmYpLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW46IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQWRkZWQgInVzZXItZnJpZW5kbHkiIHdhcm5pbmcgZm9yIG1pc3NpbmcgWC4KCgkqIGluY2x1ZGUvb2xlLmg6IEZpeGVkIEdldE9iamVjdCBtYWNybyBwcm9ibGVtLgoKCSogZG9jdW1lbnRhdGlvbi9zdGF0dXMvZGlyZWN0M0Q6CglMaW9uZWwgVWxtZXIgPHVsbWVyQGRpcmVjdHByb3ZpZGVyLm5ldD4KCS0gdXBkYXRlZCBkb2N1bWVudGF0aW9uIHRvIGJlIGluIHN5bmMgd2l0aCBjdXJyZW50IGNvZGUKCgkqIGdyYXBoaWNzL2QzZG1hdGVyaWFsLmMsIGdyYXBoaWNzL2QzZHZpZXdwb3J0LmM6CglMaW9uZWwgVWxtZXIgPHVsbWVyQGRpcmVjdHByb3ZpZGVyLm5ldD4KCS0gdmFyaW91cyB3YXJuaW5nIGFuZCBidWcgZml4ZXMKCgkqIGdyYXBoaWNzL2QzZGRldmljZXMuYywgZ3JhcGhpY3MvZDNkdGV4dHVyZS5jOgoJTGlvbmVsIFVsbWVyIDx1bG1lckBkaXJlY3Rwcm92aWRlci5uZXQ+CgktIGFkZGVkIG1vcmUgdGV4dHVyZSBmb3JtYXRzIHVzaW5nIE9wZW5HTCdzIHBhY2tlZCBwaXhlbCBmb3JtYXRzCgoJKiBncmFwaGljcy9kM2RleGVjdXRlYnVmZmVyLmMsIGluY2x1ZGUvZDNkLmg6CglMaW9uZWwgVWxtZXIgPHVsbWVyQGRpcmVjdHByb3ZpZGVyLm5ldD4KCS0gYmV0dGVyIHN1cHBvcnQgZm9yIEV4ZWN1dGVCdWZmZXJzCgoJKiBncmFwaGljcy9kZHJhdy5jOiBMaW9uZWwgVWxtZXIgPHVsbWVyQGRpcmVjdHByb3ZpZGVyLm5ldD4KCS0gY29ycmVjdGVkIGJ1ZyBpbiBaIEJ1ZmZlciBhbGxvY2F0aW9uCgktIHB1dCBWSURFT01FTU9SWSBmbGFnIGZvciBhbGwgcHJpbWFyeSBzdXJmYWNlcwoJLSBwdXQgc29tZXRoaW5nIGluIGEgc3VyZmFjZSBhZnRlciBhIFJlbGVhc2VEQwoKCSogbWlzYy9wcmludGRydi5jOiBNb3J0ZW4gV2VsaW5kZXIgPHRlcnJhQGRpa3UuZGs+CglNaXNzaW5nIFdJTkFQSS4KCgkqIGNvbnRyb2xzL3N0YXRpYy5jOiBOaWNsYXMgS2FybHNzb24gPG5rYXJsc3NvQHJhLmFiby5maT4KCVJlbW92ZWQgRFRfU0lOR0xFTElORSBhbmQgRFRfTk9DTElQIHN0eWxlcyBmb3IgU1NfTEVGVE5PV09SRFdSQVAuCgoJKiBvYmplY3RzL2VuaG1ldGFmaWxlLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQ2hlY2sgb3BlbmVkIGVuaG1ldGFmaWxlIGZvciBtYWdpYyB2YWx1ZXMuCgoJKiBpbmNsdWRlL2Rzb3VuZC5oLCBtdWx0aW1lZGlhL2Rzb3VuZC5jOiBSb2IgUmlnZ3MgPHJyaWdnc0B0ZXNzZXIuY29tPgoJRml4ZWQgZHVwbGljYXRlIHNvdW5kIGJ1ZmZlciBoYW5kbGluZy4gVXBkYXRlZCBzdGF0dXMuCgoJKiBtaXNjL3JlZ2lzdHJ5LmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTmV3IGZ1bmN0aW9ucyAgbG1lbWNweW5BdG9XIGFuZCAgbG1lbWNweW5XdG9BIGZvciBjb252ZXJ0aW5nCglSRUdfTVVMVElfU1ogKGluY2x1ZGluZyBcMHgwMCkKCUJldHRlciBkZWJ1ZyBvdXRwdXQgZm9yIFJFR19CSU5BUlkgYW5kIFJFR19NVUxUSV9TWgoJUmV3cml0dGVuIFJlZ1F1ZXJ5VmFsdWVFeDMyW0F8V10KCgkqIG9iamVjdHMvcGFsZXR0ZS5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUltcGxlbWVudGVkIENyZWF0ZUhhbGZ0b25lUGFsZXR0ZS4KCUZpeGVkIDMgY3Jhc2hlcyAoMSByZWFsLCAyIHBvdGVudGlhbCkuCgoJKiBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmMsIGlmMTYzMi9zaGVsbC5zcGVjLCBpbmNsdWRlL3NoZWxsLmgsIG1pc2Mvc2hlbGwuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSW1wbGVtZW50ZWQgRXh0cmFjdEljb25FeDE2LCBhZGRlZCBzb21lIGNvbnN0cyB0byBFeHRyYWN0SWNvbkV4Ki4KCgkqIG9sZS9vbGUyLmMsIG9sZS9vbGVjbGkuYywgcmVsYXkzMi9vbGUzMi5zcGVjLCBpbmNsdWRlL3dpbmVycm9yLmg6CglTeWx2YWluIFN0Lkdlcm1haW4gPHN5bHZhaW5AbWFjYWRhbWlhbi5jb20+CglEb0RyYWdEcm9wIGFuZCBPbGVJc0N1cnJlbnRDbGlwYm9hcmQgc3R1YiBpbXBsZW1lbnRhdGlvbi4KCgkqIG9sZS90eXBlbGliLmM6IEZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCU1ha2UgTG9hZFR5cGVMaWIgc3R1YiByZXR1cm4gZmFpbHVyZSBpbnN0ZWFkIG9mIHN1Y2Nlc3MuCgpGcmkgSmFuIDIyIDE3OjA5OjQ2IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkb2N1bWVudGF0aW9uL2FjY2VsZXJhdG9ycywgaW5jbHVkZS93aW51c2VyLmgsIGxvYWRlci9yZXNvdXJjZS5jLCB3aW5kb3dzL2lucHV0LmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIGFjY2VsZXJhdG9yIGhhbmRsaW5nLiBBQ0NFTDE2IHVzZWQgaW50ZXJuYWwsIEFDQ0VMMzIgZm9yIFdpbjMyCglBUEksIFBFX0FDQ0VMIGZvciBQRSBBY2NlbGVyYXRvcnMuIFNlZSBkb2N1bWVudGF0aW9uL2FjY2VsZXJhdG9ycy4KClRodSBKYW4gMjEgMTQ6MDU6MTEgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvZGRlbWwuaCwgbWlzYy9kZGVtbC5jLCByZWxheTMyL3VzZXIzMi5zcGVjOgoJRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJVGhlcmUgd2VyZSB0d28gY29waWVzIG9mIHRoZSBEZGVDbXBTdHJpbmdIYW5kbGVzIChBIGFuZCBXKSBhbmQgdGhhdAoJQVBJIGRvZXMgbm90IGhhdmUgMiB2ZXJzaW9ucy4gUmVtb3ZlZCB0aGUgZXh0cmEgdmVyc2lvbi4KCldlZCBKYW4gMjAgMTQ6NTQ6MDEgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jOiBQYWJsbyBTYXJhdHhhZ2EgPHBhYmxvLnNhcmFjaGFnYUBwaW5nLmJlPgoJU21hbGwgcGF0Y2guCgoJKiB3aW4zMi9jb25zb2xlLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJV2luMzIgY29uc29sZSBuZWVkcyBTWU5DSFJPTklaRSBhY2Nlc3MuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgY29uc29sZS9uY3Vyc2VzLmMsIGRlYnVnZ2VyL3N0YWJzLmMsIGluY2x1ZGUvY29uZmlnLmguaW4sIGluY2x1ZGUvY29uc29sZS5oLCBtaXNjL3BvcnQuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJYXV0b2NvbmY6IGFkZGVkIGNoZWNrcyBmb3IgbGliaW8uaCwgZWxmLmgsIGN1cnNlcy5oLG5jdXJzZXMuaCBhbmQKCWZpeGVkIGluY2x1ZGVycy4KCgkqIG9sZS9vbGUybmxzLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJTENNYXBTdHJpbmdBOiBpZiBkc3RsZW4gaXMgaW5zdWZmaWNpZW50LCByZXR1cm4KCUVSUk9SX0lOU1VGRklDSUVOVF9CVUZGRVIgKHZlcmlmaWVkKS4KCgkqIG9iamVjdHMvZW5obWV0YWZpbGUuYywgcmVsYXkzMi9nZGkzMi5zcGVjOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTb21lIHNtYWxsIGZpeGVzIHRvIGVuaG1ldGFmaWxlcy4KCgkqIGNvbnRyb2xzL2xpc3Rib3guYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglEbyBub3QgY2FsbCBvd25lcmRyYXcgZm9yIGludmFsaWQgaXRlbXMgKGVtcHR5IGZvY3VzcmVjdHMpLgoJRml4ZXMgRXVkb3JhIDE2Yml0IGVtcHR5IEluYm94IHByb2JsZW0uCgoJKiB3aW5kb3dzL25vbmNsaWVudC5jOiBOb29tZW4gSGFtemEgPG5vb21lbkBtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIHRoZSBOQ19EcmF3TWF4QnV0dG9uOTUgYW5kIE5DX0RyYXdNaW5CdXR0b245NSBmdW5jdGlvbnMuIFJld3JvdGUKCXRoZXNlIGZ1bmN0aW9ucyB3aXRoIHRoZSBzYW1lIGxvZ2ljIGFzIHRoZSBOQ19EcmF3Q2xvc2VCdXR0b24gZnVuY3Rpb24uCgoJKiB3aW5kb3dzL3dpbi5jOiBOb2VsIEJvcnRod2ljayA8bm9lbEBtYWNhZGFtaWFuLmNvbT4KCVJlcGFyZW50aW5nIGEgd2luZG93IHdpdGggU2V0UGFyZW50IGluIFdpbmRvd3Mgc2hvdWxkIGNhdXNlIHRoZSBjaGlsZAoJd2luZG93IGJlaW5nIHJlLXBhcmVudGVkIHRvIGJlIG1vdmVkIHVwIHRvIHRoZSB0b3Btb3N0IGluIHRoZSB6LW9yZGVyLAoJYW5kIFdNX1dJTkRPV1BPU0NIQU5HSU5HIGFuZCBXTV9XSU5ET1dQT1NDSEFOR0VEIG1lc3NhZ2VzIHRvIGJlIHNlbnQuCgoJKiByZWxheTMyL2J1aWx0aW4zMi5jOiBSb2JlcnQgUmlnZ3MgPHJyaWdnc0B0ZXNzZXIuY29tPgoJVXNlIGV4dGVybmFsIERpcmVjdFBsYXkgRExMcyBieSBkZWZhdWx0LgoKCSogbG9hZGVyL3Rhc2suYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBbGxvdyBwYXNzaW5nIHRhc2sgaGFuZGxlcyB0byBHZXRUaHJlYWRRdWV1ZSgpIGFuZCBTZXRGYXN0UXVldWUoKS4KCgkqIHdpbmRvd3MvdXNlci5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUhhbmRsZSAoY29uc29sZSkgYXBwbGljYXRpb25zIHRoYXQgbmV2ZXIgY3JlYXRlZCBhIHF1ZXVlIGNvcnJlY3RseQoJaW4gVVNFUl9BcHBFeGl0KCk7IGNhbGwgSW5pdFRocmVhZElucHV0KCkgaW4gSW5pdEFwcCgpLgoKCSogd2luZG93cy9ob29rLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJLSBGaXhlZCBjcmVhdGlvbiBvZiBtZXNzYWdlIHF1ZXVlIGluIGhvb2sgQVBJIHJvdXRpbmVzLgoJLSBTb21lIHByZXBhcmF0aW9ucyBmb3IgdGhyZWFkLWxvY2FsIG1lc3NhZ2UgcXVldWVzLgoKCSogbG9hZGVyL25lL21vZHVsZS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglDaGVjayBtb2R1bGUgbmFtZSBsZW5ndGggaW4gTW9kdWxlTmV4dCgpLgoKCSogd2luZG93cy94MTFkcnYvZXZlbnQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJVXNlIENhbGxvdXQgdG8gY2FsbCBSZWRyYXdXaW5kb3czMi4KCgkqIG1zZG9zL2ludDIxLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQ2xlYXIgRE9TIGV4dGVuZGVkIGVycm9yIG9ubHkgZm9yIGZ1bmNzID49MHgyZiAodGhhbmtzIHRvIERhdmUKCVBpY2tsZXMpLgoKCSogZ3JhcGhpY3MvZGRyYXcuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglVbmlmaWVkIHBhbGV0dGUgY3JlYXRlLCBkbyBhbGxvY2F0ZSBjb2xvcmNlbGxzIG9uIGluaXQgZm9yIERHQS4KClR1ZSBKYW4gMTkgMTc6NDg6MjUgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNjaGVkdWxlci9zeW5jaHJvLmMsIHNjaGVkdWxlci90aHJlYWQuYywgc2VydmVyL2NvbnNvbGUuYywgc2VydmVyL2ZpbGUuYywgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3JlcXVlc3QuYywgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdHJhY2UuYywgd2luMzIvY29uc29sZS5jLCB3aW4zMi9kZXZpY2UuYywgd2luMzIvcHJvY2Vzcy5jLCBpbmNsdWRlL2ZpbGUuaCwgaW5jbHVkZS9wcm9jZXNzLmgsIGluY2x1ZGUvc2VydmVyLmgsIGluY2x1ZGUvc2VydmVyL29iamVjdC5oLCBpbmNsdWRlL3NlcnZlci9yZXF1ZXN0LmgsIGluY2x1ZGUvc2VydmVyL3RocmVhZC5oLCBpbmNsdWRlL3RocmVhZC5oLCBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW5kb3dzLmgsIGluY2x1ZGUvd2ludHlwZXMuaCwgbWVtb3J5L3ZpcnR1YWwuYywgbXNkb3MvaW50MjEuYywgbXNkb3MvdnhkLmMsIHJlbGF5MzIva2VybmVsMzIuc3BlYywgc2NoZWR1bGVyL2NsaWVudC5jLCBzY2hlZHVsZXIvaGFuZGxlLmMsIHNjaGVkdWxlci9rMzJvYmouYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgZmlsZXMvY2hhbmdlLmMsIGZpbGVzL2Rvc19mcy5jLCBmaWxlcy9maWxlLmMsIGluY2x1ZGUvZGV2aWNlLmg6CglIYWNrZWQgc2VydmVyLXNpZGUgZGV2aWNlIHN1cHBvcnQKCUFkZGVkIHVzZXIgQVBDcyBzdXBwb3J0LgoJTWFueSBjaGFuZ2VzIHRvIHRoZSB4dGVybSBjb25zb2xlIHRvIG1ha2UgdXNlIG9mIHRoZSBzZXJ2ZXIgKG5vdAoJZmluaXNoZWQgeWV0KS4KCU1vdmVkIHNvbWUgb3RoZXIgc21hbGwgc3R1ZmYgdG8gdGhlIHNlcnZlci4KCgkqIHRvb2xzL21ha2VfcmVxdWVzdHM6IEFkZGVkIGxvbmcgdHlwZSBmb3JtYXQuCgoJKiBzZXJ2ZXIvTWFrZWZpbGUuaW4sIHNlcnZlci9kZXZpY2UuYzoKCUFkZGVkIHNlcnZlci1zaWRlIGRldmljZSBzdXBwb3J0IChvbmx5IGEgaGFjayBmb3Igbm93KS4KClN1biBKYW4gMTcgMTc6NDg6NDggMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIENoYW5nZUxvZzoKCVJlY292ZXJlZCBsb2cgZW50cmllcyBmcm9tIENWUyBtYWlsaW5nIGxpc3QuCgoJKiByZWxheTMyL250ZGxsLnNwZWMsIGRsbHMvbnRkbGwvcnRsLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUltcGxlbWVudGVkIF9hbGxvY2FfcHJvYmUgYW5kIF9jaGtzdGsgKG1vc3RseSBkb25lIGJ5IFVscmljaCBXZWlnYW5kKS4KCgkqIGZpbGVzL2ZpbGUuYwoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglIYW5kbGUgRVJST1JfV1JJVEVfUFJPVEVDVCB0b28gaW4gcmVhZG9ubHkgZmFsbGJhY2sgb3Blbi4KCgkqIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYywgcmVsYXkzMi9hZHZhcGkzMi5zcGVjOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBHZXRTZWN1cml0eURlc2NyaXB0b3JMZW5ndGggc3R1YiBmb3IgcmVnZWR0MzIuZXhlLgoKCSogZGVidWdnZXIvTWFrZWZpbGUuaW4sIGZpbGVzL01ha2VmaWxlLmluOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGQgIiIgYXJvdW5kIC1EIGRlZmluZXMgZm9yIHBhdGhzIHdpdGggc3BhY2VzIGluIHRoZW0uCgoJKiBncmFwaGljcy9kM2R0ZXh0dXJlLmMsIGdyYXBoaWNzL2RkcmF3LmMsIGluY2x1ZGUvZGRyYXcuaDoKCUxpb25lbCBVbG1lciA8dWxtZXJAZGlyZWN0cHJvdmlkZXIubmV0PgoJQ2xlYW5lZCB1cCBDb2xvcktleSBoYW5kbGluZy4KCgkqIG9iamVjdHMvbWV0YWZpbGUuYzoKCVBhdWwgUXVpbm4gPHBhdWxxQENPUkVMLkNBPgoJTUVUQVJFQ09SRCBtZW1iZXIgcmRQYXJhbSBzaG91bGQgYmUgcmRQYXJtIChpbiB3aW4zMiBzZGspCglsb3RzIG9mIGNoYW5nZXMgaW4gdGhpcyBzb3VyY2UgZmlsZSB0byByZWZsZWN0IHRoaXMgY2hhbmdlLgoKCSogZ3JhcGhpY3MvZXNjYXBlLmMsIGdyYXBoaWNzL3BhaW50aW5nLmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L2luaXQuYywgaW5jbHVkZS9jb21tY3RybC5oLCBpbmNsdWRlL2NvbW1kbGcuaCwgaW5jbHVkZS9nZGkuaCwgaW5jbHVkZS90Y2hhci5oLCBpbmNsdWRlL3dpbmRvd3MuaCwgaW5jbHVkZS93aW5nZGkuaCwgaW5jbHVkZS93aW50eXBlcy5oLCBpbmNsdWRlL3dpbnVzZXIuaCwgbWlzYy9zcG9vbGVyLmMsIG9iamVjdHMvZ2Rpb2JqLmMsCglyZWxheTMyL2dkaTMyLnNwZWM6CglQYXVsIFF1aW5uIDxwYXVscUBDT1JFTC5DQT4KCUZpeGVkIGJhZCBkZWZpbmVzLCBhZGRlZCBhIGZldyB0eXBlcyAnbiBkZWZpbmVzLgoKCSogd2luZG93cy9kaW5wdXQuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRGlzYWJsZSBicm9rZW4gY2FsbGJhY2tzIHdoaWNoIGxlYWQgdG8gY3Jhc2hlcy4KCgkqIG11bHRpbWVkaWEvbWNpc3RyaW5nLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIElEIHVzYWdlIChhbmQgcmVseSBsZXNzIGhlYXZpbHkgb24gbXVsdGltZWRpYS9tbXN5c3RlbS5jCglpbnRlcm5hbCBzdHJ1Y3R1cmVzKS4KCgkqIG1pc2MvdG9vbGhlbHAuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJZGVidWcuaCBuZWVkcyB0byBiZSBpbmNsdWRlZCBsYXN0IHNpbmNlIGl0ICN1bmRlZnMgRVJSIGZvciBTb2xhcmlzLgoKCSogZGVidWdnZXIvZGVidWcubCwgZGVidWdnZXIvbWVtb3J5LmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIC91IGZvcm1hdCB0byBkZWJ1Z2dlciBkaXNwbGF5IGZvciBVTklDT0RFIHN0cmluZ3MuCgoJKiBsb2FkZXIvcGVfaW1hZ2UuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUmVtb3ZlIGlycml0YXRpbmcgRklYTUUgbGluZSBubyBsb25nZXIgbmVlZGVkLgoKCSogbXNkb3MvaW50MmYuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgbWlzc2luZyAnXG4nIGluIEZJWE1FIG1lc3NhZ2UuCgoJKiBncmFwaGljcy9kZHJhdy5jOgoJUm9iZXJ0IFJpZ2dzIDxycmlnZ3NAdGVzc2VyLmNvbT4KCW9iamJhc2UuaCBuZWVkZWQgZm9yIFdJTkVfU3RyaW5nRnJvbUNMU0lEKCksIGZpeCBDIGZ1bmN0aW9uCglkZWNsYXJhdGlvbnMsIGluc3RhbGwgYSBjb2xvcm1hcCBpZiB3ZSBhcmUgbm90IG1hbmFnZWQsIHJlbGVhc2UKCWJhY2tidWZmZXJzIGluIERHQSBtb2RlLCBmaXggdmlkZW8gbW9kZSBzd2l0Y2hpbmcgbG9naWMgdG8gYXZvaWQKCXBvc3NpYmxlIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZS4KCgkqIG1zZG9zL2RwbWkuYzoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVNtYWxsIGZpeC4KCgkqIGZpbGVzL2ZpbGUuYywgaW5jbHVkZS9maWxlLmgsIGluY2x1ZGUvcHJvY2Vzcy5oLCBsb2FkZXIvcmVzb3VyY2UuYywgbG9hZGVyL2Rvcy9tb2R1bGUuYywgbG9hZGVyL25lL3NlZ21lbnQuYywgbWlzYy9semV4cGFuZC5jLCBtc2Rvcy9pbnQyMS5jIHZ4ZC5jLCBtdWx0aW1lZGlhL21taW8uYywgd2luMzIva2VybmVsMzIuYzoKCUJldHRlciBET1MgZmlsZSBoYW5kbGUgbWFuYWdlbWVudC4KCgkqIGRvY3VtZW50YXRpb24vY29tbW9uX2NvbnRyb2xzOgoJRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJVGhpcyBzaG91bGQgaGVscCBwcmV2ZW50IGR1cGxpY2F0ZSB3b3JrLgoKCSogaWYxNjMyL2dkaS5zcGVjLCBpbmNsdWRlL3dpbmdkaS5oLCBvYmplY3RzL2RjLmM6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglJbXBsZW1lbnRlZCBEZWF0aCgpIGFuZCBSZXN1cnJlY3Rpb24oKSwgdHdvIGZ1bmN0aW9ucyBuZWVkZWQgYnkgc29tZQoJVFBXaW4gKD8pIGNvbW1hbmQgbGluZSB0b29sLgoKCSogd2luZG93cy93aW5wcm9jLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUFkZGVkIDMyLT4xNiB0cmFuc2xhdGlvbiBmb3IgV01fQUNUSVZBVEVBUFAuCgoJKiBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jLCBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmMsIHJlbGF5MzIvc2hlbGwzMi5zcGVjOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglOZXcgc3R1YnM6IFNoZWxsTWVzc2FnZUJveFcsIFJ1bkRMTF9DYWxsRW50cnkxNi4KCUltcGxlbWVudGF0aW9uIGZvciBTSEdldFNwZWNpYWxGb2xkZXJQYXRoMzJbQXxXXS4KCU1hbnkgYnVnZml4ZXMuCgoJKiBjb25zb2xlL3h0ZXJtLmMsIG1pc2MvcG9ydC5jLCB3aW4zMi9jb25zb2xlLmM6CglKb3NlcGggUHJhbmV2aWNoIDxqcHJhbmV2aWNoQGx5Y29zLmNvbT4KCUNoYW5nZSBhbGwgV2luZSBvcGVucHR5KCkgaW1wbGVtZW50YXRpb25zIHRvIG1hdGNoIHRoZSAic3RhbmRhcmQiIGFuZAoJdGhlbiBtYWtlIHRoZW0gYm90aCBjYWxsIHRoZSBzYW1lIGNvZGUgbGVhdmluZyB0aGUgb3B0aW9uIHRvIGNoYW5nZQoJdGhhdCBjb2RlIHRvIGNhbGwgdGhlICJzdGFuZGFyZCIgb3BlbnB0eSgpIGF0IGEgbGF0ZXIgZGF0ZS4KCgkqIHJlbGF5MzIva2VybmVsMzIuc3BlYywgc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgU2V0UHJvY2Vzc0FmZmluaXR5TWFzayBzdHViLgoKCSogZ3JhcGhpY3MvZGRyYXcuYywgaW5jbHVkZS9kZHJhdy5oOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCB0aGUgb3RoZXIgdW5pb24gbWlzdXNlIHRvbyAob25lIGxlc3MgbWVtIGNvcnJ1cHRpb24pCglSZS1hZGRlZCBYSW5zdGFsbENvbG9ybWFwIChvciBub24gbWFuYWdlZCBkb2VzIG5vdCBjaGFuZ2UgcGFsZXR0ZSkKCgkqIGlmMTYzMi9rZXJuZWwuc3BlYywgc2NoZWR1bGVyL3N5bmNocm8uYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWRkZWQgYW4gaW1wbGVtZW50YXRpb24gZm9yIEtFUk5FTC40OTUuCgoJKiBkb2N1bWVudGF0aW9uL3N0YXR1cywgZG9jdW1lbnRhdGlvbi9kaXJlY3QzRCwgZ3JhcGhpY3MvZDNkX3ByaXZhdGUuaCwgZ3JhcGhpY3MvZDNkY29tbW9uLmMsIGdyYXBoaWNzL2QzZGRldmljZXMuYywgZ3JhcGhpY3MvZDNkZXhlY3V0ZWJ1ZmZlci5jLCBncmFwaGljcy9kM2R0ZXh0dXJlLmMsIGdyYXBoaWNzL2QzZHZpZXdwb3J0LmMsIGdyYXBoaWNzL2RkcmF3LmMsIGluY2x1ZGUvZDNkLmgsIGluY2x1ZGUvZGRyYXcuaDoKCUxpb25lbCBVbG1lciA8dWxtZXJAZGlyZWN0cHJvdmlkZXIubmV0PgoJLSBhZGRlZCBiaXRtYXNrIHRvIHN0b3JlIHdoaWNoIENvbG9yS2V5IHN0cnVjdHVyZXMgYXJlIHZhbGlkCgktIGhhbmRsZSBtYW55IG5ldyByZW5kZXJpbmcgc3RhdGVzLCBzb21lIG9wdGltaXphdGlvbnMgaW4gc3RhdGUgY2hhbmdlcwoJLSA4Yml0IHBhbGV0dGl6ZWQgdGV4dHVyZXMgbm93IHN1cHBvcnQgQ29sb3JLZXlpbmcKCS0gc29tZSBtaXNjZWxsYW5lb3VzIGJ1ZyBmaXhlcyBhbmQgY29kZSByZXdyaXRlCgoJKiBjb250cm9scy9tZW51LmM6CglOb29tZW4gSGFtemEgPG5vb21lbkBtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIHRoZSBsb29rIG9mIHRoZSBtZW51IHNvIGl0IHdvdWxkIGJlIGNvbXBsaWFudCB3aXRoIFdpbjk1OiBtb2RpZmllZAoJdGhlIG1vdXNlIHRyYWNraW5nIGNvZGUgc28gaXQgd291bGQgY2hhbmdlIHRoZSBzZWxlY3Rpb24gZXZlcnkgdGltZSB0aGUKCW1vdXNlIG1vdmVkIG92ZXIgYSBtZW51IGl0ZW0uCgoJKiBkb2N1bWVudGF0aW9uL2hvdy10by1wb3J0OgoJTWlrZSBDYXN0bGUgPGRhbGdvZGFAc2hlbGwucnQ2Ni5jb20+CglTbWFsbCBmaXguCgoJKiBkbGxzL2NvbWN0bDMyL3VwZG93bi5jOgoJTm9lbCBCb3J0aHdpY2sgPG5vZWxAbWFjYWRhbWlhbi5jb20+CglGaXhlZCBidWdzOgoJLSBXaGVuIGFuIGVkaXQgY29udHJvbCBidWRkeSB3YXMgdXNlZCBzaW5nbGUgZGlnaXQgdmFsdWVzIHdlcmUgbm90CgliZWluZyBkaXNwbGF5ZWQuCgktIENvbW1hIHZhbHVlcyB3ZXJlIG5vdCBkaXNwbGF5ZWQgY29ycmVjdGx5IHdoZW4gdGhvdXNhbmRzIHNlcGFyYXRpb24KCXdhcyByZXF1ZXN0ZWQuCgoJKiB3aW4zMi9uZXdmbnMuYzoKCVRvbSBCZWNoIDx0b21iQGlpLnVpYi5ubz4KCVdoaWxlIHRoZSBkZWJ1ZyBldmVudCBtZXNzYWdlcyBhcmUgbm90IGltcGxlbWVudGVkLCBXYWl0Rm9yRGVidWdFdmVudAoJc2hvdWxkIHJldHVybiBGQUxTRS4KCgkqIGlmMTYzMi91c2VyLnNwZWMsIG9iamVjdHMvYml0bWFwLmM6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglJbXBsZW1lbnRlZCBDb3B5SW1hZ2UxNi4KCgkqIGRvY3VtZW50YXRpb24vYnVncmVwb3J0cwoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJU21hbGwgZml4LgoKCSogY29uc29sZS9nZW5lcmljLmMsIG1zZG9zL2ludDIxLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUNoYW5nZWQgMHgwMSB0byB1c2UgZ2VuZXJpYyBjb25zb2xlLCBmaXhlZCAweDBiLgoJRml4ZWQgQ09OU09MRV9HZXRDaGFyYWN0ZXIgKHR3byBhcmdzIHN3YXBwZWQpLgoKCSogaW5jbHVkZS9tb2R1bGUuaCwgbG9hZGVyL21haW4uYywgbG9hZGVyL21vZHVsZS5jLCBsb2FkZXIvZG9zL21vZHVsZS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBbGxvdyBzcGVjaWZ5aW5nIG1vZHVsZSBuYW1lIGZvciBORSBkdW1teSBtb2R1bGUuCgoJKiBsb2FkZXIvcGVfaW1hZ2UuYwoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglTZXQgbW9kdWxlIG5hbWUgb2YgZHVtbXkgbW9kdWxlIGVxdWFsIHRvIG1vZHVsZSBuYW1lIG9mIFBFIG1vZHVsZS4KCgkqIGNvbnRyb2xzL3Njcm9sbC5jLCBjb250cm9scy91aXRvb2xzLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU1pc3NpbmcgaW5jbHVkZSB3aW5lL3dpbnVzZXIxNi5oIGFkZGVkLgoKCSogZ3JhcGhpY3MvdmdhLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUNyZWF0ZSBhbiBhY3R1YWwgcHJpbWFyeSBzdXJmYWNlIGZvciBzY3JlZW5idWZmZXIuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClN1biBKYW4gMTAgMTQ6NDA6MzQgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvbWlzY2VtdS5oLCBpbmNsdWRlL21zZG9zLmgsIGxvYWRlci9tYWluLmMsIG1zZG9zL01ha2VmaWxlLmluLCBtc2Rvcy9kb3Njb25mLmMsIG1zZG9zL2ludDIxLmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglBZGRlZCBjb25maWcuc3lzIHBhcnNlci4KCgkqIGNvbnRyb2xzL2xpc3Rib3guYzogUGFzY2FsIEN1b3EgPFBhc2NhbC5DdW9xQGlucmlhLmZyPgoJU21hbGwgY2hhbmdlIGluIExCX1NFVENVUlNFTDMyIGhhbmRsaW5nICh0aGUgY2FyZXQgc2hvdWxkIGJlIG1vdmVkIGFzCgl3ZWxsKS4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBmaWxlcy9hc3luYy5jLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBtaXNjL3dpbnNvY2tfZG5zLmMsIG1zZG9zL2ludDIxLmMsIG9sZS9jb21wb2JqLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVVzZSBhdXRvY29uZiBjaGVjayBmb3IgcHJlc2VuY2Ugb2Ygc3lzL2ZpbGUuaC4KCgkqIGRsbHMvbnRkbGwvcnRsLmMsIHJlbGF5MzIvbnRkbGwuc3BlYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSW1wbGVtZW50ZWQgRGJnUHJpbnQsIGFkZGVkIHVsdG9hLgoKCSogd2luMzIvY29uc29sZS5jOiBQZXRlciBIdW5uaXNldHQgPGh1bm5pc2VAbm9ydGVsbmV0d29ya3MuY29tPgoJUGVla0NvbnNvbGVJbnB1dCAmIFJlYWRDb25zb2xlSW5wdXQgbmVlZCB0byByZXR1cm4gMCByZWNvcmRzIHJlYWQgaW4KCXRoZSBjYXNlIG9mIGFuIGludmFsaWQgaGFuZGxlLgoKCSogY29uc29sZS9uY3Vyc2VzLmMsIGxvYWRlci9tYWluLmM6CglKb3NlcGggUHJhbmV2aWNoIDxqcHJhbmV2aWNoQGx5Y29zLmNvbT4KCU1vcmUgdmVyYm9zZSBkZWJ1Z2dpbmcgb3V0cHV0LgoJUmVtb3ZlIGNvbXBpbGF0aW9uIHdhcm5pbmcuCgoJKiBtc2Rvcy9pbnQxMC5jOiBKb3NlcGggUHJhbmV2aWNoIDxqcHJhbmV2aWNoQGx5Y29zLmNvbT4KCUZpeCB1cCBzb21lIGludGVycnVwdCBjYWxscyB0byByZXR1cm4gYXQgdGhlIGRhdGEgdGhhdCB0aGV5IGFyZSBzdXBwb3NlZAoJdG8uIEFsc28gaW5jcmVhc2UgY29tbWVudCB2ZXJib3NpdHkgdG8gaGVscCBkZWJ1ZyB0aGluZ3MgbGF0ZXIuCgoJKiBpbmNsdWRlL29wdGlvbnMuaCwgbWlzYy9tYWluLmMsIG1pc2MvdmVyc2lvbi5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJQWRkZWQgc3dpdGNoIC1kb3N2ZXIuCglDbGVhbnVwIGZvciBPYUJ1aWxkVmVyc2lvbigpLgoKCSogbGlidGVzdC8uY3ZzaWdub3JlOiBBZGRlZCB2YXJ0ZXN0IGFuZCB2b2xpbmZvCgoJKiBkbGxzL3NoZWxsMzIvY29udG1lbnUuYywgZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3BpZGwuaCwgZGxscy9zaGVsbDMyL3NoZWxsbGluay5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jLCBkbGxzL3NoZWxsMzIvc2hsdmlldy5jLCBpbmNsdWRlL3NoZWxsLmg6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCU1hbnkgYnVnZml4ZXMsIGNvZGUgY2xlYW51cC4KCVJlbW92ZWQgYSBmZXcgZ2xpdGNoZXMgZnJvbSB0aGUgQ09NIHBhdGNoLgoKCSogd2luZG93cy9kaWFsb2cuYzogTGF3c29uIFdoaXRuZXkgPGxhd3Nvbl93aGl0bmV5QGp1bm8uY29tPgoJT25seSBkZXN0cm95IHdpbmRvdyBvbmNlLgoKCSogZ3JhcGhpY3MvZGRyYXcuYywgaW5jbHVkZS9kZHJhdy5oOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CgktIG1vdmVkIGRyYXdhYmxlIHRvIGNvbW1vbiBzaW5jZSBpdCBpcyB1c2VkIGJ5IGJvdGggREdBIGFuZCBYbGliLgoJICAoZml4ZXMgb25lIGJhZCBtZW1vcnkgY29ycnVwdGlvbiBidWcgaW4gREdBIChTdGFyQ3JhZnQgYW5kIERpYWJsbykKCS0gYWRkZWQgQmx0RmFzdCBzYW5pdHkgY2hlY2tzLgoKCSogd2luZG93cy9xdWV1ZS5jLCBsb2FkZXIvdGFzay5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglJbml0QXBwKCkgY2FsbCByZW1vdmVkIGZyb20gMzItYml0IGFwcGxpY2F0aW9uIHN0YXJ0dXA7CgljcmVhdGUgdGFzayBtZXNzYWdlIHF1ZXVlIGluIEluaXRUaHJlYWRJbnB1dCgpIGluc3RlYWQuCgoJKiBsb2FkZXIvbmUvY29udmVydC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBZGRlZCBhY2NlbGVyYXRvciB0YWJsZSBQRS0+TkUgcmVzb3VyY2UgY29udmVyc2lvbi4KCgkqIGRlYnVnZ2VyL2VkaXRsaW5lLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVJlc3RhcnQgcmVhZCgpIGluIGNhc2Ugb2YgRUlOVFIgaW4gVFRZZ2V0KCkuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglQdHIgcmVmIHdyb25nLgoKCSogdG9vbHMvd3JjL0NIQU5HRVMsIHRvb2xzL3dyYy9kdW1wcmVzLmMsIHRvb2xzL3dyYy9nZW5yZXMuYywgdG9vbHMvd3JjL25ld3N0cnVjLmMsIHRvb2xzL3dyYy9uZXdzdHJ1Yy5oLCB0b29scy93cmMvcGFyc2VyLmwsIHRvb2xzL3dyYy9wYXJzZXIueSwgdG9vbHMvd3JjL3JlYWRyZXMuYywgdG9vbHMvd3JjL3V0aWxzLmMsIHRvb2xzL3dyYy91dGlscy5oLCB0b29scy93cmMvd3JjLmgsIHRvb2xzL3dyYy93cmN0eXBlcy5oLCB0b29scy93cmMvd3JpdGVyZXMuYzoKCUJlcnRobyBTdHVsdGllbnMgPGJlcnRob0BwYW50ZXIuc29jaS5hYXUuZGs+CglXcmMgdmVyc2lvbiAxLjAuOC4gVG9vbGJhciByZXNvdXJjZXMgYXJlIG5vdyBzdXBwb3J0ZWQuIEEgY291cGxlIG9mCglvdGhlciBmaXhlcyBhcmUgYWxzbyBpbmNsdWRlZC4gU2VlIGZpbGUgdG9vbHMvd3JjL0NIQU5HRVMgZm9yIGRldGFpbHMuCgoJKiBvbGUvY29tcG9iai5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU1pc3NpbmcgV0lOQVBJLgoKCSogaW5jbHVkZS94MTFkcnYuaCwgbG9hZGVyL2Rvcy9tb2R1bGUuYywgb2JqZWN0cy9kYy5jLCByZWxheTMyL2J1aWx0aW4zMi5jLCByZWxheTMyL3JlbGF5Mzg2LmMsIHNjaGVkdWxlci9rMzJvYmouYywgZmlsZXMvYXN5bmMuYywgaWYxNjMyL3JlbGF5LmMsIGluY2x1ZGUvbWFpbi5oLCBpbmNsdWRlL211bHRpbWVkaWEuaCwgaW5jbHVkZS93aW5kb3dzLmg6CglKYW1lcyBKdXJhbiA8anJqMTIwQHBzdS5lZHU+CglBZGQgbWlzc2luZyAjaW5jbHVkZXMgYW5kIHByb3RvdHlwZXMgdG8gZWxpbWluYXRlIHNvbWUgaW1wbGljaXQKCWZ1bmN0aW9uIGRlY2xhcmF0aW9uIHdhcm5pbmdzIGFuZCAnZXh0ZXJuJ3MgaW4gLmMgZmlsZXMuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgY29uc29sZS9uY3Vyc2VzLmMsIGluY2x1ZGUvYWNjb25maWcuaCwgaW5jbHVkZS9jb25maWcuaC5pbjoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQ2hlY2sgZm9yIHJlc2l6ZXRlcm0gaW4gbmN1cnNlcy4KCgkqIGxpYnRlc3QvTWFrZWZpbGUuaW4sIGxpYnRlc3QvdmFydGVzdC1XaW4zMi5sb2csIGxpYnRlc3QvdmFydGVzdC5jLCBsaWJ0ZXN0L3ZhcnRlc3QucmVhZG1lOgoJRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJTmV3IHRlc3QgcHJvZ3JhbSBmb3IgVkFSSUFOVCBmdW5jdGlvbnMuCgoJKiBkZWJ1Z2dlci9tc2MuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglTb21lIGRlYnVnIGluZm9ybWF0aW9uIChQREIpIHdhcyBub3QgbWFwcGVkIHdoZW4gbG9hZGluZyBhIG1vZHVsZSwKCXdoaWNoIGNhdXNlZCBhIGNvcmUgaW4gdGhlIGRlYnVnZ2VyIHdoZW4gaXQgdHJpZWQgdG8gYWNjZXNzIGl0LgoKCSogTWFrZWZpbGUuaW46IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJTGlua3MgbGlid2luZS5zby4xLjAgdG8gbGlid2luZS5zbyBpbiBXaW5lJ3MgbWFpbiBkaXJlY3RvcnkuCglNYWtlcyBXaW5lIGNvbXBpbGUgd2l0aCAtLWVuYWJsZS1kbGwgYWdhaW4uCgpTYXQgSmFuICA5IDA5OjEyOjQwIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiByZWxheTMyL29sZTMyLnNwZWMsIHdpbmRvd3MvZGlucHV0LmMsIGluY2x1ZGUvc3RvcmFnZS5oLCBpbmNsdWRlL3Vua253bi5oLCBpbmNsdWRlL3dpbmRvd3MuaCwgaW5jbHVkZS93aW5lL29ial9iYXNlLmgsIGluY2x1ZGUvd2luZS9vYmpfY2hhbm5lbC5oLCBpbmNsdWRlL3dpbmUvb2JqX2NsaWVudHNlcnZlci5oLCBpbmNsdWRlL3dpbmUvb2JqX2RhdGFvYmplY3QuaCwgaW5jbHVkZS93aW5lL29ial9tYXJzaGFsLmgsIGluY2x1ZGUvd2luZS9vYmpfbWlzYy5oLCBpbmNsdWRlL3dpbmUvb2JqX21vbmlrZXIuaCwgaW5jbHVkZS93aW5lL29ial9wcm9wZXJ0eXN0b3JhZ2UuaCwgaW5jbHVkZS93aW5lL29ial9zdG9yYWdlLmgsIGluY2x1ZGUvd2luZXJyb3IuaCwgaW5jbHVkZS93dHlwZXMuaCwgbWlzYy9zaGVsbC5jLCBtdWx0aW1lZGlhL2RwbGF5LmMsIG11bHRpbWVkaWEvZHNvdW5kLmMsIG9iamVjdHMvZm9udC5jLCBvbGUvY29tcG9iai5jLCBvbGUvaWZzLmMsIG9sZS9tb25pa2VyLmMsIG9sZS9vbGUyLmMsIG9sZS9vbGUyZGlzcC5jLCBvbGUvb2xlZGxnLmMsIG9sZS9vbGVvYmouYywgb2xlL3N0b3JhZ2UuYywgb2xlL3R5cGVsaWIuYywgZGxscy9zaGVsbDMyL2RhdGFvYmplY3QuYywgZGxscy9zaGVsbDMyL2VudW1pZGxpc3QuYywgZGxscy9zaGVsbDMyL2ZvbGRlcnMuYywgZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9sZS5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jLCBkbGxzL3NoZWxsMzIvc2hsdmlldy5jLCBncmFwaGljcy9kZHJhdy5jLCBncmFwaGljcy92Z2EuYywgaWYxNjMyL2NvbXBvYmouc3BlYywgaW5jbHVkZS9jb21wb2JqLmgsIGluY2x1ZGUvZGRyYXcuaCwgaW5jbHVkZS9kaW5wdXQuaCwgaW5jbHVkZS9kcGxheS5oLCBpbmNsdWRlL2Rzb3VuZC5oLCBpbmNsdWRlL2ludGVyZmFjZXMuaCwgaW5jbHVkZS9vYmpiYXNlLmgsIGluY2x1ZGUvb2JqaWRsLmgsIGluY2x1ZGUvb2xlLmgsIGluY2x1ZGUvb2xlMi5oLCBpbmNsdWRlL29sZW9iai5oLCBpbmNsdWRlL3NlcnZwcm92LmgsIGluY2x1ZGUvc2hlbGwuaCwgaW5jbHVkZS9zaGxndWlkLmgsIGluY2x1ZGUvc2hsb2JqLmgsIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmMsIGRsbHMvc2hlbGwzMi9jb250bWVudS5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QG11bHRpbWFuaWEuY29tPgoJQWRkZWQgYSBsb3Qgb2YgQ09NIGludGVyZmFjZXMgZGVmaW5pdGlvbnMuCglSZXN0cnVjdHVyZWQgQ09NIGhlYWRlciBmaWxlcyBmb3IgYmV0dGVyIGNvbXBhdGliaWxpdHkgYW5kIGNsYXJpdHkuCgpGcmkgSmFuICA4IDE2OjM3OjAzIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBmaWxlcy9maWxlLmM6IFNldCBHRU5FUklDX1JFQUR8R0VORVJJQ19XUklURSBhY2Nlc3MgZm9yIE9GX0NSRUFURS4KCU1ha2UgR2V0RmlsZVR5cGUgd29yayBmb3IgYWxsIGhhbmRsZSB0eXBlcy4KCgkqIHdpbjMyL2RldmljZS5jOiBBdm9pZCBjcmFzaCBvbiBOVUxMIGRldi0+aW5mby4KCgkqIGluY2x1ZGUvZmxhdHNiLmgsIHJlbGF5MzIvY29tY3RsMzIuc3BlYywgZGxscy9jb21jdGwzMi9NYWtlZmlsZS5pbiwgZGxscy9jb21jdGwzMi9jb21tY3RybC5jLCBkbGxzL2NvbWN0bDMyL2ZsYXRzYi5jLCBpbmNsdWRlL2NvbW1jdHJsLmg6CglBbGV4IFByaWVtIDxhbGV4cEBzY2kua3VuLm5sPgoJQWRkZWQgc3R1YnMgYW5kIGRlZmluZXMgZm9yIHRoZSBmbGF0IHNjcm9sbGJhciBjb21tb24gY29udHJvbC4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaCwgZGxscy9jb21jdGwzMi9kYXRldGltZS5jOgoJQWxleCBQcmllbSA8YWxleHBAc2NpLmt1bi5ubD4KCUFkZGVkIHNvbWUgZGVmaW5lcyBuZWVkZWQgZm9yIGN1c3RvbSBkcmF3J2luZyBhbmQgZGF0ZXRpbWUgY29tbW9uCgljb250cm9scy4KCgkqIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYzogRWRkaWUgQ2FycGVudGVyIDxlY2FycGVudGVyQGl0ZXguY28uemE+CglGaXhlZCBhIHNtYWxsIGJ1ZyBpbiBmdW5jdGlvbiBFeHRyYWN0SWNvbkV4MzJBLgoKCSogd2luZG93cy93aW5wcm9jLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJSFRBU0sxNiAtPiB0aHJlYWRJRCBtYXBwaW5nIG9mIFdNX0FDVElWQVRFQVBQLgoKCSogZmlsZXMvZmlsZS5jOiBCZXJ0aG8gU3R1bHRpZW5zIDxiZXJ0aG9AcGFudGVyLnNvY2kuYWF1LmRrPgoJTWFrZSBEZWxldGVGaWxlIGZhaWwgZm9yIGVtcHR5IHBhdGguCgoJKiBtc2Rvcy9pb3BvcnRzLmM6IEdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJRml4IGR1bW15X2N0ciBzdHVmZiB0byB3b3JrIGV2ZW4gd2l0aG91dCBESVJFQ1RfSU9fQUNDRVNTLgoKCSogbG9hZGVyL25lL3NlZ21lbnQuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCB3cm9uZyBidWZmZXIgd2hpY2ggY2F1c2VkIGZpeHVwcyB0byBmYWlsLgoKCSogZ3JhcGhpY3MvZDNkY29tbW9uLmMsIGdyYXBoaWNzL2QzZGRldmljZXMuYywgZ3JhcGhpY3MvZDNkdGV4dHVyZS5jLCBpbmNsdWRlL2QzZC5oOgoJTGlvbmVsIFVsbWVyIDx1bG1lckBkaXJlY3Rwcm92aWRlci5uZXQ+CgktIGFkZGVkIGFsbCB0aGUgRGlyZWN0M0QgZXJyb3IgY29kZXMKCS0gYWRkZWQgOGJpdCBwYWxldHRpemVkIHRleHR1cmUgc3VwcG9ydAoKCSogbXNkb3MvY2Ryb20uYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglpZmRlZnMgZm9yIGRlZmluZXMgbm90IGluIGxpbnV4IDIuMC4KCgkqIHJlbGF5MzIvd2luc3Bvb2wuc3BlYywgbWlzYy9wcmludGRydi5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQWRkZWQgdHdvIHN0dWJzIGZvciBBZGRQcmludGVyRHJpdmVyLgoKCSogaW5jbHVkZS9kb3NleGUuaCwgbG9hZGVyL2Rvcy9kb3Ntb2QuYywgbG9hZGVyL2Rvcy9kb3Ntb2QuaCwgbG9hZGVyL2Rvcy9kb3N2bS5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglRdWV1ZSBTSUdBTFJNIHRvIHJlZHVjZSB0aGUgInNpZ25hbCAxNCBsb3N0IiBjb21wbGFpbnRzLgoJQWRkZWQgc3VwcG9ydCBmb3IgcmVwcm9ncmFtbWluZyB0aGUgRE9TIHRpbWVyLCBhbmQgcmVhZGluZyBiYWNrIHRoZQoJY3VycmVudCB2YWx1ZS4KCgkqIG1pc2MvcmVnaXN0cnkuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglXaW5lIGhhbmdzIHdoZW4gcmVnaXN0cnkgKGNvcnJ1cHRlZCkgaGFzIGxvbmUgXCBhdCBlbmQgb2YgZmlsZS4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jOgoJS29zdHlhIEl2YW5vdiA8a29zdHlhQHdhcm1jYXQuZXhjb20uc3BiLnN1PgoJU21hbGwgcGF0Y2ggdGhhdCBlbmFibGVzIENsYXJpb24gZm9yIFdpbmRvd3Mgbm90IHRvIHRyYXAgd2hpbGUKCWxvYWRpbmcuCgoJKiBvbGUvdmFyaWFudC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVJlcGxhY2UgdHJvdWJsZXNvbWUgYXNzaWdubWVudHMgYnkgbWVtc2V0IGZvciB3aG9sZSBzdHJ1Y3QuCgoJKiBncmFwaGljcy9kZHJhdy5jOiBMaW9uZWwgVWxtZXIgPHVsbWVyQGRpcmVjdHByb3ZpZGVyLm5ldD4KCUFkZGVkIGhhbmRsaW5nIG9mIHRoZSAncGFsZW50JyBmaWVsZCBvZiB0aGUgQ3JlYXRlUGFsZXR0ZSBwcm9jZWR1cmUuCgoJKiBkb2N1bWVudGF0aW9uL3dpbmUubWFuOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQWRkZWQgZGVzY3JpcHRpb24gYWJvdXQgaW5jbHVkaW5nL2V4Y2x1ZGluZyBmdW5jdGlvbnMgZnJvbSByZWxheQoJdHJhY2UuCgoJKiB3aW4zMi9jb25zb2xlLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUmVhZCBhdCBsZWFzdCAxIGlucHV0IHJlY29yZCBpbiBSZWFkQ29uc29sZUlucHV0QS4KCgkqIG1lbW9yeS92aXJ0dWFsLmM6CglGaXhlZCBDcmVhdGVNYXBwaW5nIHdoZW4gYSBtYXBwaW5nIHdpdGggdGhlIHNhbWUgbmFtZSBhbHJlYWR5IGV4aXN0cy4KCldlZCBKYW4gIDYgMTA6Mzc6MjkgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNlcnZlci9maWxlLmM6IEZpeGVkIGZpbGUgZGVzdHJ1Y3Rpb24gd2hlbiBmaWxlIGhhcyBubyBuYW1lLgoKVHVlIEphbiAgNSAxODozODo1OSAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbWlzYy9tYWluLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJV2FybnMgdXNlciBpZiBtdWx0aXBsZSAtZGxsIHN3aXRjaGVzIGFyZSB1c2VkIG9uIGNvbW1hbmQgbGluZS4KCgkqIGRsbHMvY29tY3RsMzIvdHJhY2tiYXIuYzogQWxleCBQcmllbSA8YWxleHBAc2NpLmt1bi5ubD4KCUZpeGVkIGEgbGVmdG92ZXIgSGVhcEZyZWUgaW4gdGhlIHRyYWNrYmFyIGNvbW1vbiBjb250cm9sLgoKCSogaW5jbHVkZS9jb21tY3RybC5oLCBpbmNsdWRlL2RlYnVnLmgsIGluY2x1ZGUvZGVidWdkZWZzLmgsIGluY2x1ZGUvdGFiLmgsIGRsbHMvY29tY3RsMzIvdGFiLmM6CglBbGV4IFByaWVtIDxhbGV4cEBzY2kua3VuLm5sPgoJRml4ZWQgc29tZSBwcm9ibGVtcyB3aXRoIHRoZSB0YWIgY29tbW9uIGNvbnRyb2wgKHdpdGggdGhhbmtzIHRvIEFuZGVycwoJQ2FybHNzb24gPGFuZGVycy5jYXJsc3NvbkBsaW51eC5udT4pLgoKCSogZGxscy9jb21jdGwzMi9jb21tY3RybC5jLCBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jLCBpbmNsdWRlL2NvbW1jdHJsLmgsIGluY2x1ZGUvcHJvcHNoZWV0LmgsIHJlbGF5MzIvY29tY3RsMzIuc3BlYzoKCUFsZXggUHJpZW0gPGFsZXhwQHNjaS5rdW4ubmw+CglBZGRlZCBhIG1pc3NpbmcgUHJvcGVydHlTaGVldDMyQVcgYW5kIENyZWF0ZVByb3BlcnR5U2hlZXRQYWdlIHN0dWIsCglhbmQgc29tZSBtaXNzaW5nIGRlZmluZXMuCgoJKiBtaXNjL21haW4uYywgc2NoZWR1bGVyL3N5c2xldmVsLmMsIGdyYXBoaWNzL3ZnYS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglVc2UgTWFrZUNyaXRpY2FsU2VjdGlvbkdsb2JhbCBvbiBhbGwgY3JpdGljYWwgc2VjdGlvbnMgdXNlZCBhY3Jvc3MKCXByb2Nlc3MgYm91bmRhcmllcy4KCgkqIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbmRvd3MuaDoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWRkZWQgcHJvdG90eXBlcyBmb3IgTWFrZUNyaXRpY2FsU2VjdGlvbkdsb2JhbCwgQ29udmVydFRvR2xvYmFsSGFuZGxlLgoKCSogZG9jdW1lbnRhdGlvbi93aW5lLm1hbjoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUFkZGVkIGVudmlyb25tZW50IHZhcmlhYmxlcyBpbiB0aGUgbWFuIHBhZ2UuCgoJKiBsb2FkZXIvZG9zL21vZHVsZS5jOiBHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCUZpeGVkIGFyZ3Mgb2YgTVpfQ3JlYXRlUHJvY2Vzcy4KCgkqIHByb2dyYW1zL2Nsb2NrL2xhbmd1YWdlLmMsIHByb2dyYW1zL25vdGVwYWQvbGFuZ3VhZ2UuYywgcHJvZ3JhbXMvcHJvZ21hbi9tYWluLmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglGaXhlZCBzdHJpbmcgYnVnIGluIHByb2dyYW1zLy4KCgkqIG1zZG9zL2lvcG9ydHMuYzogQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJQWRkZWQgc3R1cGlkICJhY3Rpb24iIGVtdWxhdGlvbiBmb3IgaGFyZHdhcmUgdGltZXJzIGluIGlvcG9ydHMuYy4KCgkqIGRsbHMvd2luYXNwaS93aW5hc3BpMTYuYzogQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJQWdhaW4gYSBzbWFsbCBET1NBU1BJIHBhdGNoLgoKCSogZG9jdW1lbnRhdGlvbi9idWdyZXBvcnRzLCBkb2N1bWVudGF0aW9uL2ZvbnRzLCB3aW5kb3dzL3N5c21ldHJpY3MuYywgd2luZG93cy93aW4uYywgd2luZG93cy93aW5wb3MuYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCURvY3VtZW50YXRpb24gdXBkYXRlcy4KCgkqIGdyYXBoaWNzL2RkcmF3LmM6IExpb25lbCBVbG1lciA8dWxtZXJAZGlyZWN0cHJvdmlkZXIubmV0PgoJLSBjaGVjayBpZiBwYWxldHRlIGlzIG5vdCBudWxsIHdoZW4gc2V0dGluZyBhIHBhbGV0dGUKCS0gY2hlY2sgaWYgd2luZG93IGhhbmRsZSBpcyB2YWxpZCBiZWZvcmUgZ2V0dGluZyBpdHMgJ2RyYXdhYmxlJwoKCSogZ3JhcGhpY3MveDExZHJ2L3hmb250LmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJUHJldmVudCBjb3JlIGR1bXAgd2l0aCBzb21lIFRURiAod2hlbiBYMTEgcnVucyB3aXRoIGEgdHJ1ZSB0eXBlCglzZXJ2ZXIpLgoKCSogc2VydmVyL2NvbnNvbGUuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglVc2Ugc3Rkb3V0IGZvciBkZWZhdWx0IGNvbnNvbGUgb3V0cHV0LgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpTdW4gSmFuICAzIDE3OjAwOjIwIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBncmFwaGljcy9kM2RleGVjdXRlYnVmZmVyLmMsIGdyYXBoaWNzL2QzZGxpZ2h0LmMsIGdyYXBoaWNzL2QzZG1hdGVyaWFsLmMsIGdyYXBoaWNzL2QzZHRleHR1cmUuYywgZ3JhcGhpY3MvZDNkdmlld3BvcnQuYywgZ3JhcGhpY3MvZGRyYXcuYywgaW5jbHVkZS9hY2NvbmZpZy5oLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBpbmNsdWRlL2QzZC5oLCBpbmNsdWRlL3dpbmVfZ2wuaCwgbXVsdGltZWRpYS9kc291bmQuYywgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRvY3VtZW50YXRpb24vc3RhdHVzL2RpcmVjdDNELCBkb2N1bWVudGF0aW9uL3N0YXR1cy9kaXJlY3RkcmF3LCBncmFwaGljcy9NYWtlZmlsZS5pbiwgZ3JhcGhpY3MvZDNkX3ByaXZhdGUuaCwgZ3JhcGhpY3MvZDNkY29tbW9uLmMsIGdyYXBoaWNzL2QzZGRldmljZXMuYzoKCUxpb25lbCBVbG1lciA8dWxtZXJAZGlyZWN0cHJvdmlkZXIubmV0PgoJLSBiZWdpbm5pbmcgb2YgaW1wbGVtZW50YXRpb24gb2YgRGlyZWN0M0QyIChEWCA1LjApIGFuZCBhc3NvY2lhdGVkIGNsYXNzZXMKCS0gc29tZSBiYXNpYyBjb2RlIGZvciBEaXJlY3QzRCBhbmQgRGlyZWN0M0RFeGVjdXRlQnVmZmVyIChEWCAzLjApCgktIGFkZGVkIHN0cmV0Y2hpbmcgdG8gQmx0IGZ1bmN0aW9uCgoJKiBtaXNjL3ZlcnNpb24uYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglUcnkgdG8gYXV0b2RldGVjdCBOVDQuCgoJKiB3aW4zMi9jb25zb2xlLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJMCBtZWFucyBzdWNjZXNzLCBhbGwgZWxzZSBmYWlsdXJlIGZvciBXYWl0Rm9yU2luZ2xlT2JqZWN0LgoKCSogbXNkb3MvaW50MTAuYzogSm9zZXBoIFByYW5ldmljaCA8anByYW5ldmljaEBseWNvcy5jb20+CglEbyBub3QgYWR2YW5jZSB0aGUgY3Vyc29yIGluIGNlcnRhaW4gcm91dGluZXMuIFRoaXMgY2xlYW5lZCB1cCB0aGUKCWltcGxlbWVudGF0aW9uIHF1aXRlIGEgYml0LgoKCSogbG9hZGVyL21haW4uYzogSm9zZXBoIFByYW5ldmljaCA8anByYW5ldmljaEBseWNvcy5jb20+CglTZXQgY29uc29sZSB2aWRlbyBtb2RlIHdoZW4gbG9hZGluZyBET1MgYXBwLiAoRXZlbnR1YWxseSwgSSB3YW50IHRvCgltaW1pYyBXaW5kb3dzIDl4J3MgYmVoYXZpb3IgYnkgc2V0dGluZyB0aGUgdmlkZW8gbW9kZSBvbmx5IHdoZW4gbm9uCglJTlQgMjEgY2FsbHMgYXJlIHVzZWQgdG8gYWxsb3cgZm9yIGFyYml0cmFyeS1zaXplZCBjb25zb2xlcykuCgoJKiBjb25zb2xlL2ludGVyZmFjZS5jLCBjb25zb2xlL3h0ZXJtLmM6CglKb3NlcGggUHJhbmV2aWNoIDxqcHJhbmV2aWNoQGx5Y29zLmNvbT4KCVh0ZXJtIGRyaXZlciBjYW4gbm93IHJlc2l6ZSB0aGUgdGVybWluYWwgd2hlbiBhIG1vZGUgY2hhbmdlIGlzCglkZXRlY3RlZC4KCgkqIGNvbnNvbGUvZ2VuZXJpYy5jOiBKb3NlcGggUHJhbmV2aWNoIDxqcHJhbmV2aWNoQGx5Y29zLmNvbT4KCUxvbmcgc3RhbmRpbmcgc2Nyb2xsIGJ1ZyBmaXhlZCEKCgkqIGNvbnNvbGUvbmN1cnNlcy5jLCBpbmNsdWRlL2FjY29uZmlnLmgsIGluY2x1ZGUvY29uZmlnLmguaW4sIGluY2x1ZGUvY29uc29sZS5oLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCUpvc2VwaCBQcmFuZXZpY2ggPGpwcmFuZXZpY2hAbHljb3MuY29tPgoJUmV3cml0ZSBvZiBjb25maWd1cmF0aW9uIHN5c3RlbSB0byBzdXBwb3J0ICJyZWd1bGFyIiBjdXJzZXMgYXMgd2VsbCBhcwoJZWxpbWluYXRpbmcgdGhlIC0td2l0aC1uY3Vyc2VzIG9wdGlvbi4gTm93LCBuY3Vyc2VzIHN1cHBvcnQgd2lsbCBiZQoJYnVpbHQgaW4gaWYgYSBjb21wYXRpYmxlIGxpYnJhcnkgaXMgZGV0ZWN0ZWQuCgoJKiBpbmNsdWRlL3dpbnR5cGVzLmgsIHdpbmRvd3MvZGVmZGxnLmM6CglORiBTdGV2ZW5zIDxub3JtYW5AYXJjYWR5LnUtbmV0LmNvbT4KCUZpeCB0aGUgcmV0dXJuIHR5cGUgb2YgRExHUFJPQyB0eXBlIGFuZCBtYXNrIG91dCB0aGUgdW5zZXQgaGlnaHdvcmQgb2YKCXRoZSByZXR1cm4gd2hlbiBhIDE2IGJpdCBkaWFsb2cgcHJvYyBpcyBjYWxsZWQuCgoJKiBpbmNsdWRlL2ludGVyZmFjZXMuaDogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCUFkZCBpbnRlcmZhY2UgSUQncyBmb3IgdXBjb21pbmcgSVR5cGVMaWIgaW1wbGVtZW50YXRpb24uCgoJKiBmaWxlcy9kb3NfZnMuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglCdWdmaXggZm9yIHRyYWlsaW5nIHNsYXNoZXMsIHJlcGV0aXRpb24gb2YgJy8nIG9yICdcJyBhbmQKCVNldExhc3RFcnJvcigpIGluIEdldEZ1bGxQYXRobmFtZS4KCgkqIE1ha2VmaWxlLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9hZHZhcGkzMi8uY3ZzaWdub3JlLCBkbGxzL2FkdmFwaTMyL01ha2VmaWxlLmluLCBkbGxzL2FkdmFwaTMyL2FkdmFwaS5jLCBkbGxzL2FkdmFwaTMyL2V2ZW50bG9nLmMsIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYywgZGxscy9hZHZhcGkzMi9zZXJ2aWNlLmMsIHJlbGF5MzIvYWR2YXBpMzIuc3BlYywgd2luMzIvQXR0aWMvYWR2YXBpLmMsIHdpbjMyL0F0dGljL3NlY3VyaXR5LmMsIHdpbjMyL01ha2VmaWxlLmluLCB3aW4zMi9pbml0LmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCU1vdmVkIEFEVkFQSTMyIGZpbGVzIHRvIGRsbHMvYWR2YXBpMzIuCglBZGRlZCBzdHVicyBmb3IgZXZlbnRsb2cgZnVuY3Rpb25zLgoKCSogcmVsYXkzMi9zaGVsbDMyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYywgZGxscy9zaGVsbDMyL3NoZWxsb2xlLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmMsIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmMsIGluY2x1ZGUvc2hsb2JqLmg6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCU5ldyBzdHVicyBOVFNIQ2hhbmdlTm90aWZ5UmVnaXN0ZXIsIE5UU0hDaGFuZ2VOb3RpZnlEZXJlZ2lzdGVyLgoJQ2xlYW51cCwgc29tZSBtb3JlIGZ1bmN0aW9ucyBVTklDT0RFIHJlYWR5LgoKCSogZGxscy9zaGVsbDMyL3BpZGwuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglTSENsb25lU3BlY2lhbElETGlzdCBpbXBsZW1lbnRlZC4KCVNIR2V0RGF0YUZyb21JRExpc3RBIGNvcnJlY3RlZC4KCgkqIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJU2hlbGxfR2V0Q2FjaGVkSW1hZ2VJbmRleDMyW0F8V10gaW1wbGVtZW50ZWQuCgoJKiBtc2Rvcy9pbnQyMS5jLCBtc2Rvcy9pbnQyNS5jLCBtc2Rvcy9pbnQyNi5jLCBmaWxlcy9kcml2ZS5jLCBpbmNsdWRlL2RyaXZlLmg6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglJbXBsZW1lbnRlZCByYXcgZGV2aWNlIGFjY2VzcyBjYWxscyBmb3IgaW9jdGxHZW5lcmljQmxrRGV2UmVxKCkKCWFuZCB0aGVyZWZvcmUgbW92ZWQgdGhlIGNvcmUgZnVuY3Rpb25hbGl0eSBvZiBpbnQyWzU2XS5jIGludG8gZmlsZXMvZHJpdmUuYy4KCgkqIG1zZG9zL2lvcG9ydHMuYzogQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJQWRkZWQgYXV0b21hdGljIENNT1MgUkFNIGNoZWNrc3VtIGNhbGN1bGF0aW9uLgoKCSogZGxscy93aW5hc3BpL3dpbmFzcGkxNi5jLCBkbGxzL3duYXNwaTMyL3dpbmFzcGkzMi5jLCBkb2N1bWVudGF0aW9uL2FzcGksIHJlbGF5MzIvd25hc3BpMzIuc3BlYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCVNlbmRBU1BJMzJDb21tYW5kMzIgaGFzIHRvIGJlIF9fY2RlY2wuCglVcGRhdGVkIGRvY3VtZW50YXRpb24vYXNwaSBhbmQgcmV2ZXJ0ZWQgYW4gRVJSIGJhY2sgdG8gV0FSTi4KCgkqIGRvY3VtZW50YXRpb24vYnVncmVwb3J0czogSmFtZXMgSnVyYW4gPGpyajEyMEBwc3UuZWR1PgoJT2YgY291cnNlIHdlIHdhbnQgdGhlIGxhc3QgMTAwIGxpbmVzLCBub3QgdGhlIGZpcnN0IDEwMCBsaW5lcy4KCVVzZSAndGFpbCcgaW5zdGVhZCBvZiAnaGVhZCcuIEFsc28gZml4IHRleHQgYWxpZ25tZW50IGZyb20KCXByZXZpb3VzIHBhdGNoLgoKCSogbXVsdGltZWRpYS9qb3lzdGljay5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVJlYWRpbmcgam95c3RpY2sgNSB3aGVuIHdlIG9ubHkgc3VwcG9ydCA0IHNob3VsZCBmYWlsIGluc3RlYWQgb2YKCWhhbmcuCgoJKiBtdWx0aW1lZGlhL21jaWNkYS5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVBsYXlpbmcgYSBub24tZXhpc3RlbnQgQ0Qgc2hvdWxkIGZhaWwgaW5zdGVhZCBvZiBjcmFzaC4KCgkqIE1ha2UucnVsZXMuaW4sIE1ha2VmaWxlLmluOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUNoZWNrIGZvciBuZWNlc3NhcnkgY29uZmlndXJlIHJlcnVucyBmb3IgTWFrZWZpbGUgYW5kIE1ha2UucnVsZXMKCWdlbmVyYXRpb24uCgoJKiBtaXNjZW11L2luc3RyLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRW11bGF0ZXMgaW5zL291dHMgY29ycmVjdGx5IGZvciBET1MgcHJvZ3JhbXMuCgoJKiBvbGUvc3RvcmFnZS5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvY2hhbmdlLmMsIHNlcnZlci9jb25zb2xlLmMsIHNlcnZlci9ldmVudC5jLCBzZXJ2ZXIvZmlsZS5jLCBzZXJ2ZXIvbWFwcGluZy5jLCBzZXJ2ZXIvbXV0ZXguYywgc2VydmVyL29iamVjdC5jLCBzZXJ2ZXIvcGlwZS5jLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcmVxdWVzdC5jLCBzZXJ2ZXIvc2VtYXBob3JlLmMsIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RyYWNlLmMsIHdpbjMyL2RldmljZS5jLCB3aW4zMi9maWxlLmMsIGZpbGVzL2Rvc19mcy5jLCBmaWxlcy9maWxlLmMsIGluY2x1ZGUvZGV2aWNlLmgsIGluY2x1ZGUvZmlsZS5oLCBpbmNsdWRlL3NlcnZlci5oLCBpbmNsdWRlL3NlcnZlci9vYmplY3QuaCwgaW5jbHVkZS9zZXJ2ZXIvcmVxdWVzdC5oLCBsb2FkZXIvbmUvbW9kdWxlLmMsIGxvYWRlci9wZV9pbWFnZS5jLCBtaXNjL2NydGRsbC5jLCBtc2Rvcy9pbnQyMS5jLCBtc2Rvcy92eGQuYzoKCUltcGxlbWVudGVkIGZpbGUgc2hhcmluZyBjaGVja3MgaW4gdGhlIHNlcnZlci4KCUFkZGVkIHNldCBmaWxlIHRpbWUgc2VydmVyIHJlcXVlc3QuCglPdmVyYWxsIGNsZWFuIHVwIG9mIHRoZSBmaWxlIGhhbmRsaW5nIChET1MgZGV2aWNlIGhhbmRsaW5nIGlzIG5vdwoJYnJva2VuLCBzaG91bGQgYmUgcmVkb25lKS4KClNhdCBKYW4gIDIgMDg6MjI6MzQgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG1lbW9yeS92aXJ0dWFsLmM6CglGaXhlZCBidWcgaW4gQ3JlYXRlRmlsZU1hcHBpbmcgd2hlbiBuYW1lIGlzIG5vdCBOVUxMLgoKCSogc2VydmVyL3JlcXVlc3QuYzogRml4ZWQgQ0hFQ0tfU1RSSU5HIGRpc3BsYXkuCgpGcmkgSmFuICAxIDE5OjUxOjI1IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpZjE2MzIva2VybmVsLnNwZWMsIG1lbW9yeS9sb2NhbC5jOgoJUmljaGFyZCBBIExvdWdoIDxyYWxvdWdoLmNlZEBkbmV0LmNvLnVrPgoJUHV0IHJldHVybiB2YWx1ZSBvZiBMb2NhbEFsbG9jIGluIENYIHRvby4KCgkqIGluY2x1ZGUvcHNkcnYuaDogRGltaXRyaWUgTy4gUGF1biA8ZGltaUBjcy50b3JvbnRvLmVkdT4KCVByb3RlY3QgYWdhaW5zdCBtdWx0aXBsZSBpbmNsdWRlcy4KCgkqIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYzogVXNlIHByb3BlciBzeXN0ZW0gZGlyZWN0b3J5LgoKCSogc2NoZWR1bGVyL3Byb2Nlc3MuYzogR290IHJpZCBvZiBDTElFTlRfR2V0UHJvY2Vzc0luZm8uCgoJKiB3aW5kb3dzL2NsYXNzLmMsIHdpbmRvd3MvZGNlLmMsIHdpbmRvd3MvZGVmZGxnLmMsIHdpbmRvd3MvZGVmd25kLmMsIHdpbmRvd3MvZHJpdmVyLmMsIHdpbmRvd3MvbXNnYm94LmMsIHdpbmRvd3MvcGFpbnRpbmcuYywgd2luZG93cy91c2VyLmMsIHdpbmRvd3Mvd2luaGVscC5jLCBpbmNsdWRlL3dpbmUvd2ludXNlcjE2LmgsIGluY2x1ZGUvd2lucmVnLmgsIGluY2x1ZGUvd2ludXNlci5oLCBsb2FkZXIvbW9kdWxlLmMsIG1pc2MvY29tbS5jLCBtaXNjL3NoZWxsLmMsIG1pc2Mvc3Bvb2xlci5jLCBtaXNjL3NweS5jLCBtaXNjL3dpbnNvY2suYywgbXVsdGltZWRpYS9hdWRpby5jLCBtdWx0aW1lZGlhL21jaWFuaW0uYywgbXVsdGltZWRpYS9tY2ljZGEuYywgbXVsdGltZWRpYS9tY2ltaWRpLmMsIG11bHRpbWVkaWEvbWNpd2F2ZS5jLCBtdWx0aW1lZGlhL21pZGkuYywgbXVsdGltZWRpYS9tbXN5c3RlbS5jLCBvYmplY3RzL2NsaXBwaW5nLmMsIG9sZS9vbGVvYmouYywgY29udHJvbHMvYnV0dG9uLmMsIGNvbnRyb2xzL2Rlc2t0b3AuYywgY29udHJvbHMvaWNvbnRpdGxlLmMsIGNvbnRyb2xzL3N0YXRpYy5jLCBkZWJ1Z2dlci9kYmcueSwgZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGdyYXBoaWNzL3BzZHJ2L2VzY2FwZS5jLCBpZjE2MzIvdGh1bmsuYywgaW5jbHVkZS9jYWxsYmFjay5oLCBpbmNsdWRlL2Rpc3BsYXkuaCwgaW5jbHVkZS9pbWFnZWxpc3QuaCwgaW5jbHVkZS9vbGUuaCwgaW5jbHVkZS9xdWV1ZS5oLCBpbmNsdWRlL3NoZWxsLmgsIGluY2x1ZGUvc3RvcmFnZS5oLCBpbmNsdWRlL3N0cnVjdDMyLmgsIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbmRvd3MuaDoKCU1pY2hhZWwgVmVrc2xlciA8bXZla3NsZXJAdGVjaHVuaXgudGVjaG5pb24uYWMuaWw+CglNb3ZlcyBtb3JlIHN0dWZmIGZyb20gd2luZG93cy5oLgoJLSBpbmNsdWRlL3dpbnVzZXIuaCAtIGludGVyZmFjZSByZWxldmFudCB0byB1c2VyMzIuc3BlYwoJLSBpbmNsdWRlL3dpbmUvd2ludXNlcjE2LmggLSB0aGUgb2xkIDE2IGJpdCBpbnRlcmZhY2UgKGludGVybmFsIHVzZSkKCS0gaW5jbHVkZS93aW5iYXNlLmggLSBzb21lIG1pbm9yIHVwZGF0ZXMgdG8ga2VlcCB0aGluZ3MgY29oZXJlbnQuCgktIExvdCBvZiBvdGhlciBmaWxlcyBtYWRlIHRvIGluY2x1ZGUgd2luZS93aW51c2VyMTYuaCwgd2hpY2ggaXMgbm8KCSAgbG9uZ2VyIGluY2x1ZGVkIGZyb20gd2luZG93cy5oCgoJKiBzY2hlZHVsZXIvaGFuZGxlLmM6IEZpeGVkIENsb3NlSGFuZGxlKCkgb24gZ2xvYmFsIGhhbmRsZXMuCgoJKiBSRUFETUUsIGRvY3VtZW50YXRpb24vYnVncmVwb3J0cywgZG9jdW1lbnRhdGlvbi93aW45NWxvb2ssIGRvY3VtZW50YXRpb24vd2luZS5tYW46CglKYW1lcyBKdXJhbiA8anJqMTIwQHBzdS5lZHU+CglBZGQgc29tZSBpbmZvcm1hdGlvbiB0byB0aGUgbWFuIHBhZ2UgYW5kIFJFQURNRSBmaWxlLgoJTWFrZSBkb2N1bWVudGF0aW9uL3dpbjk1bG9vayBzYXkgW1R3ZWFrLkxheW91dF0gaW5zdGVhZCBvZgoJW1R3ZWFrcy5MYXlvdXRdLgoJRml4IGluY29ycmVjdCBjb21tYW5kIGdpdmVuIGluIGRvY3VtZW50YXRpb24vYnVncmVwb3J0cy4KCVN0YW5kYXJkIGVycm9yIHdhcyBub3QgYmVpbmcgcmVkaXJlY3RlZCwgc28gbW9zdCBvZiB0aGUKCW91dHB1dCB3YXMgbG9zdC4KCgkqIG9iamVjdHMvYml0bWFwLmM6IE5GIFN0ZXZlbnMgPG5vcm1hbkBhcmNhZHkudS1uZXQuY29tPgoJRGVscGhpIDIuMCBuZWVkcyB0byBhbGxvY2F0ZSBhIGJpdG1hcCBiaWdnZXIgdGhhbiA0MDk2IGJpdHMgd2lkZS4KCgkqIG1pc2MvcHJpbnRkcnYuYzogTkYgU3RldmVucyA8bm9ybWFuQGFyY2FkeS51LW5ldC5jb20+CglJbml0aWFsaXplIGxwZHdOZWVkZWQuCgoJKiBpZjE2MzIvc25vb3AuYzoKCU1hcmN1cyBNZWlzc25lciA8TWFyY3VzLk1laXNzbmVyQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJSW5jbHVkZSBzdHVmZiBldmVuIGlmIG5vdCBvbiBfX2kzODZfXyBmb3IgZGVidWcgZGVmaW5lcy4KCgkqIG9sZS92YXJpYW50LmM6CglNYXJjdXMgTWVpc3NuZXIgPE1hcmN1cy5NZWlzc25lckBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFub3RoZXIgLy8gY29tbWVudCBmaXhlZC4KCgkqIHNlcnZlci9maWxlLmM6CglNYXJjdXMgTWVpc3NuZXIgPE1hcmN1cy5NZWlzc25lckBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCU5lZWQgPGVycm5vLmg+IGZvciBlcnJubyBkZWNsLiBvbiBTb2xhcmlzLgoKCSogaW5jbHVkZS93aW5nZGkuaCwgaW5jbHVkZS94MTFmb250LmgsIG9iamVjdHMvZm9udC5jOgoJRG91Z2xhcyBSaWRnd2F5IDxyaWRnd2F5QHdpbmVocS5jb20+CglJbXBsZW1lbnQgVHJhbnNsYXRlQ2hhcnNldEluZm8sIGNoYW5nZSBjaGFyc2V0IHR5cGUgdG8gQllURS4KCgkqIGNvbnRyb2xzL2NvbWJvLmMsIGNvbnRyb2xzL2xpc3Rib3guYywgaW5jbHVkZS9jb21iby5oOgoJQWxleCBLb3JvYmthIDxrb3JvYmthQGdhbGF4eS5hbXMuc3VueXNiLmVkdT4KCUJldHRlciBDQl9TRVRDVVJTRUwgbWVzc2FnZSBoYW5kbGluZy4KCgkqIGluY2x1ZGUvcXVldWUuaCwgaW5jbHVkZS90aHJlYWQuaCwgc2NoZWR1bGVyL3N5bmNocm8uYywgc2NoZWR1bGVyL3RocmVhZC5jLCB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy9xdWV1ZS5jOgoJTW92ZWQgTXNnV2FpdEZvck11bHRpcGxlT2JqZWN0IGltcGxlbWVudGF0aW9uIHRvIFVTRVIgcm91dGluZXMsIHVzaW5nCglhIG5vcm1hbCBXaW4zMiBldmVudC4KCgkqIHRvb2xzL21ha2VfcmVxdWVzdHM6IFNlbmQgZGVidWdnaW5nIG91dHB1dCB0byBzdGRlcnIuCgoJKiBmaWxlcy9jaGFuZ2UuYywgZmlsZXMvZG9zX2ZzLmMsIGZpbGVzL2ZpbGUuYywgaW5jbHVkZS9maWxlLmgsIHNjaGVkdWxlci9jbGllbnQuYywgc2NoZWR1bGVyL2V2ZW50LmMsIHNjaGVkdWxlci9rMzJvYmouYywgc2NoZWR1bGVyL211dGV4LmMsIHNjaGVkdWxlci9waXBlLmMsIHNjaGVkdWxlci9zZW1hcGhvcmUuYywgd2luMzIvY29uc29sZS5jOgoJQ2xlYW5lZCB1cCBhbmQgcmVtb3ZlZCBzb21lIG5vIGxvbmdlciB1c2VkIGNvZGUuCgoJKiBtZW1vcnkvdmlydHVhbC5jOiBVc2Ugc2VydmVyIGZpbGUgbWFwcGluZyBvYmplY3RzLgoKCSogaW5jbHVkZS9zZXJ2ZXIvb2JqZWN0LmgsIGluY2x1ZGUvc2VydmVyL3JlcXVlc3QuaCwgaW5jbHVkZS9zZXJ2ZXIvdGhyZWFkLmgsIHNlcnZlci9NYWtlZmlsZS5pbiwgc2VydmVyL2NvbnNvbGUuYywgc2VydmVyL2ZpbGUuYywgc2VydmVyL21haW4uYywgc2VydmVyL21hcHBpbmcuYywgc2VydmVyL29iamVjdC5jLCBzZXJ2ZXIvcGlwZS5jLCBzZXJ2ZXIvcmVxdWVzdC5jLCBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90cmFjZS5jLCBpbmNsdWRlL3NlcnZlci5oOgoJQWRkZWQgc2VydmVyLXNpZGUgZmlsZSBtYXBwaW5nIG9iamVjdCBzdXBwb3J0LgoKCSogbWlzYy9jcnRkbGwuYzoKCUhhY2tlZCBzdGRpbyBmdW5jdGlvbnMgdG8gdXNlIFdpbjMyIGZpbGUgaGFuZGxlcy4gU3RpbGwgbmVlZHMgYSBwcm9wZXIKCXN0ZGlvIGVtdWxhdGlvbi4KCgkqIGxvYWRlci9uZS9tb2R1bGUuYywgbG9hZGVyL25lL3Jlc291cmNlLmMsIGxvYWRlci9uZS9zZWdtZW50LmM6CglVc2UgV2luMzIgZmlsZSBoYW5kbGVzIGluc3RlYWQgb2YgVW5peCBvbmVzLgoKCSogaW5jbHVkZS9tb2R1bGUuaCwgaW5jbHVkZS9wZV9pbWFnZS5oLCBpbmNsdWRlL3Byb2Nlc3MuaCwgbG9hZGVyL2Rvcy9tb2R1bGUuYywgbG9hZGVyL21vZHVsZS5jLCBsb2FkZXIvcGVfaW1hZ2UuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgaW5jbHVkZS9kb3NleGUuaDoKCVRha2UgaW50byBhY2NvdW50IGhhbmRsZSBpbmhlcml0YW5jZSBmbGFnLgoKVGh1IERlYyAzMSAxNTo1NToxOSAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGVidWdnZXIvZGJfZGlzYXNtLmM6CglDaGFuZ2VkIGRiX3Rhc2tfcHJpbnRzeW0gdG8gYWx3YXlzIHByaW50IGEgZnVsbCBhZGRyZXNzLCBubyBtYXR0ZXIKCXdoYXQgdGhlIG9wZXJhbmQgc2l6ZSBpcy4KCgkqIHNjaGVkdWxlci9jcml0c2VjdGlvbi5jOiBSZS1pbXBsZW1lbnRlZCB1c2luZyBhIHJlYWwgc2VtYXBob3JlLgoKCSogd2luZG93cy9xdWV1ZS5jLCBmaWxlcy9jaGFuZ2UuYywgZmlsZXMvZmlsZS5jLCBpbmNsdWRlL2szMm9iai5oLCBpbmNsdWRlL3Byb2Nlc3MuaCwgaW5jbHVkZS90aHJlYWQuaCwgbG9hZGVyL3NpZ25hbC5jLCBtZW1vcnkvdmlydHVhbC5jLCBtaXNjL3Rvb2xoZWxwLmMsIHNjaGVkdWxlci9jbGllbnQuYywgc2NoZWR1bGVyL2V2ZW50LmMsIHNjaGVkdWxlci9oYW5kbGUuYywgc2NoZWR1bGVyL2szMm9iai5jLCBzY2hlZHVsZXIvbXV0ZXguYywgc2NoZWR1bGVyL3BpcGUuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2NoZWR1bGVyL3NlbWFwaG9yZS5jLCBzY2hlZHVsZXIvc3luY2hyby5jLCBzY2hlZHVsZXIvdGhyZWFkLmMsIHdpbjMyL2NvbnNvbGUuYywgd2luMzIvZGV2aWNlLmM6CglSZW1vdmVkIGNsaWVudC1zaWRlIHdhaXQgZnVuY3Rpb25zOyBhbGwgd2FpdGluZyBpcyBub3cgZG9uZSB0aHJvdWdoCgl0aGUgc2VydmVyLgoKCSogc2VydmVyL01ha2VmaWxlLmluLCBzZXJ2ZXIvY2hhbmdlLmMsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9yZXF1ZXN0LmMsIHNlcnZlci90cmFjZS5jLCBpbmNsdWRlL3NlcnZlci5oLCBpbmNsdWRlL3NlcnZlci9vYmplY3QuaCwgaW5jbHVkZS9zZXJ2ZXIvcmVxdWVzdC5oOgoJQWRkZWQgY2hhbmdlIG5vdGlmaWNhdGlvbnMuCglBZGRlZCBnbG9iYWwgaGFuZGxlIHN1cHBvcnQuCgpXZWQgRGVjIDMwIDEyOjExOjUyIDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3RocmVhZC5oLCBzY2hlZHVsZXIvc3luY2hyby5jOgoJQ2hhbmdlZCBzZXJ2ZXIgd2FpdCBsb2dpYyBhIGJpdC4KCgkqIHdpbjMyL2NvbnNvbGUuYzoKCUhhY2tzIHRvIHN1cHBvcnQgc2VydmVyLXNpZGUgY29uc29sZS4gU2hvdWxkIGJlIHJlZG9uZSBwcm9wZXJseQoJc29tZSBkYXkuCgoJKiBmaWxlcy9kb3NfZnMuYywgZmlsZXMvZmlsZS5jLCBpbmNsdWRlL2ZpbGUuaCwgd2luMzIvZmlsZS5jLCB3aW4zMi9uZXdmbnMuYzoKCVJlaW1wbGVtZW50ZWQgUmVhZC9Xcml0ZUZpbGUgdG8gdXNlIHNlcnZlciBmaWxlIGRlc2NyaXB0b3JzLgoJUmVtb3ZlZCBmaWxlIHBvc2l0aW9uIGhhY2sgYXMgaXQgaXMgd3JvbmcgZm9yIFdpbjMyIChzaG91bGQgYmUgcmVkb25lCglmb3IgV2luMTYgb25seSkuCgoJKiBzY2hlZHVsZXIvTWFrZWZpbGUuaW4sIHNjaGVkdWxlci9rMzJvYmouYywgc2NoZWR1bGVyL3BpcGUuYzoKCUFkZGVkIGFub255bW91cyBwaXBlIHN1cHBvcnQKCgkqIGluY2x1ZGUvc2VydmVyLmgsIGluY2x1ZGUvc2VydmVyL29iamVjdC5oLCBpbmNsdWRlL3NlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci9NYWtlZmlsZS5pbiwgc2VydmVyL2NvbnNvbGUuYywgc2VydmVyL2V2ZW50LmMsIHNlcnZlci9maWxlLmMsIHNlcnZlci9tdXRleC5jLCBzZXJ2ZXIvb2JqZWN0LmMsIHNlcnZlci9waXBlLmMsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9yZXF1ZXN0LmMsIHNlcnZlci9zZW1hcGhvcmUuYywgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdHJhY2UuYzoKCUFkZGVkIHNldmVyYWwgZmlsZSBzZXJ2ZXIgcmVxdWVzdHMKCUFkZGVkIHNlcnZlci1zaWRlIHBpcGVzIGFuZCBjb25zb2xlcwoKU3VuIERlYyAyNyAxNToyODo1NSAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbWlzYy9jcnRkbGwuYywgbXNkb3MvaW50MjEuYywgc2NoZWR1bGVyL2NsaWVudC5jLCBzY2hlZHVsZXIvazMyb2JqLmMsIHNlcnZlci9NYWtlZmlsZS5pbiwgc2VydmVyL2V2ZW50LmMsIHNlcnZlci9maWxlLmMsIHNlcnZlci9tdXRleC5jLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcmVxdWVzdC5jLCBzZXJ2ZXIvc2VtYXBob3JlLmMsIHNlcnZlci90cmFjZS5jLCB0b29scy9tYWtlX3JlcXVlc3RzLCBmaWxlcy9kb3NfZnMuYywgZmlsZXMvZmlsZS5jLCBpbmNsdWRlL2RlYnVnLmgsIGluY2x1ZGUvZGVidWdkZWZzLmgsIGluY2x1ZGUvZmlsZS5oLCBpbmNsdWRlL3NlcnZlci5oLCBpbmNsdWRlL3NlcnZlci9vYmplY3QuaCwgaW5jbHVkZS9zZXJ2ZXIvcmVxdWVzdC5oLCBsb2FkZXIvbWFpbi5jLCBtZW1vcnkvdmlydHVhbC5jOgoJQWRkZWQgYmVnaW5uaW5ncyBvZiBzZXJ2ZXItc2lkZSBmaWxlIGhhbmRsaW5nLgoJQWRkZWQgLWRlYnVnbXNnICtzZXJ2ZXIgc3VwcG9ydC4KCUJldHRlciBzZXJ2ZXIgcmVxdWVzdCBkdW1waW5nIGZvciB2YXJhcmdzIHJlcXVlc3RzLgoKCSogd2luZG93cy94MTFkcnYvd25kLmM6CglGaXhlZCBTZXRGb2N1cyB0aGF0IHdhcyBicm9rZW4gd2hlbiBtb3ZlZCB0byB4MTFkcnYuCgoJKiBpbmNsdWRlL3NlcnZlci9vYmplY3QuaCwgaW5jbHVkZS9zZXJ2ZXIvdGhyZWFkLmgsIHNjaGVkdWxlci9jbGllbnQuYywgc2VydmVyL01ha2VmaWxlLmluLCBzZXJ2ZXIvZXZlbnQuYywgc2VydmVyL21haW4uYywgc2VydmVyL211dGV4LmMsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9zZWxlY3QuYywgc2VydmVyL3NlbWFwaG9yZS5jLCBzZXJ2ZXIvc29ja2V0LmMsIHNlcnZlci90aHJlYWQuYzoKCUFkZGVkIGFkZF9xdWV1ZS9yZW1vdmVfcXVldWUgdG8gc2VydmVyIG9iamVjdCBvcGVyYXRpb25zLgoJTW92ZWQgc2VsZWN0KCkgbG9vcCBmdW5jdGlvbnMgdG8gc2VsZWN0LmMuCgpTYXQgRGVjIDI2IDE5OjQ3OjAwIDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBwcm9ncmFtcy9yZWd0ZXN0L3JlZ3Rlc3QuYzoKCVJlbmFtZWQgRVJSIG1hY3JvIHRvIGF2b2lkIGNvbmZ1c2luZyB0aGUgbWFrZV9kZWJ1ZyBzY3JpcHQuCgoJKiBvbGUvc3RvcmFnZS5jLCBvbGUvdHlwZWxpYi5jLCBpbmNsdWRlL2QzZC5oLCBpbmNsdWRlL21tc3lzdGVtLmgsIGluY2x1ZGUvb2xlYXV0by5oLCBpbmNsdWRlL3N0b3JhZ2UuaCwgaW5jbHVkZS93aW52ZXJzaW9uLmgsIG9sZS9jb21wb2JqLmMsIG9sZS9vbGUyLmMsIG9sZS9vbGUybmxzLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUZpeGVkIHRvbnMgb2YgaW5jb21wbGV0ZSBwcm90b3R5cGVzLCBhc3NpZ25tZW50J3Mgb2YgcG9pbnRlciB3aXRoCglkaWZmZXJlbnQgc2lnbmVkbmVzcywgc3VwZXJmbG91cyAnLCcgYW5kICc7JyBpbiBzdHJ1Y3R1cmVzLCB3cm9uZwoJcmV0dXJuLXR5cGVzLCBsb3NlIG9mIGRpZ2l0cyBhbmQgc29tZSBzbWFsbCBnbGl0Y2hlcy4KCgkqIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLCBpbmNsdWRlL3gxMWZvbnQuaDoKCUFsZXggS29yb2JrYSA8a29yb2JrYUBnYWxheHkuYW1zLnN1bnlzYi5lZHU+CglDbGVhbmVkIHVwIGZvbnQgZW5jb2RpbmcgaGFuZGxpbmcuIEFkZGVkICdJZ25vcmUjJyBvcHRpb24gdG8gdGhlCglbZm9udHNdIHNlY3Rpb24uIEFsc28sIGZpbGUgd2l0aCBjYWNoZWQgbWV0cmljcyBub3cgaGFzIHRoZSB2YWx1ZSBvZgoJJERJU1BMQVkgYXBwZW5kZWQgdG8gdGhlIGZpbGVuYW1lLgoKCSogcHJvZ3JhbXMvY2xvY2svbGFuZ3VhZ2UuYywgcHJvZ3JhbXMvY2xvY2svbWFpbi5jLCBwcm9ncmFtcy9ub3RlcGFkL2RpYWxvZy5jLCBwcm9ncmFtcy9ub3RlcGFkL2xhbmd1YWdlLmMsIHByb2dyYW1zL25vdGVwYWQvbWFpbi5jLCByYy9zeXN0ZXN0LmMsIHdpbmRvd3MvbXVsdGltb24uYywgd2luZG93cy9ub25jbGllbnQuYywgZGxscy9zaGVsbDMyL3NobHZpZXcuYywgZmlsZXMvcHJvZmlsZS5jLCBncmFwaGljcy9wYXRoLmMsIGluY2x1ZGUvY29tbWN0cmwuaCwgaW5jbHVkZS9kM2QuaCwgaW5jbHVkZS9kcGxheS5oLCBpbmNsdWRlL2Rzb3VuZC5oLCBpbmNsdWRlL29sZS5oLCBpbmNsdWRlL29sZW9iai5oLCBpbmNsdWRlL3NobG9iai5oLCBpbmNsdWRlL3Zmdy5oLCBpbmNsdWRlL3dpbmVycm9yLmgsIGluY2x1ZGUvd2luaW9jdGwuaCwgbWlzYy9tYWluLmMsIG11bHRpbWVkaWEvYXVkaW8uYywgbXVsdGltZWRpYS9kc291bmQuYywgb2xlL29sZTIuYywgZGVidWdnZXIvc3RhYnMuYywgZGxscy9jb21jdGwzMi9hbmltYXRlLmMsIGRsbHMvY29tY3RsMzIvaGVhZGVyLmMsIGRsbHMvY29tY3RsMzIvaG90a2V5LmMsIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYywgZGxscy9jb21jdGwzMi9wYWdlci5jLCBkbGxzL2NvbWN0bDMyL3JlYmFyLmMsIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jLCBkbGxzL2NvbWN0bDMyL3Rvb2x0aXBzLmMsIGRsbHMvY29tY3RsMzIvdHJhY2tiYXIuYywgZGxscy9jb21jdGwzMi90cmVldmlldy5jLCBkbGxzL3NoZWxsMzIvY29udG1lbnUuYywgZGxscy9zaGVsbDMyL2VudW1pZGxpc3QuYywgZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUNoYW5nZWQgLy8gY29tbWVudHMgdG8gLyogKi8gc28gV0lORSBjb21waWxlcyB3aXRoIG5vbi1nY2MgY29tcGlsZXJzCglhZ2Fpbi4KCgkqIHdpbmRvd3MvdHR5ZHJ2L2NsaXBib2FyZC5jLCB3aW5kb3dzL3R0eWRydi9ldmVudC5jLCB3aW5kb3dzL3R0eWRydi9pbml0LmMsIHdpbmRvd3MveDExZHJ2L2NsaXBib2FyZC5jLCB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCB3aW5kb3dzL3gxMWRydi9pbml0LmMsIHdpbmRvd3MveDExZHJ2L21vdXNlLmMsIHdpbmRvd3MveDExZHJ2L3duZC5jLCBkZWJ1Z2dlci9kYmcueSwgZ3JhcGhpY3MvZGRyYXcuYywgZ3JhcGhpY3MveDExZHJ2L2JpdGJsdC5jLCBncmFwaGljcy94MTFkcnYvYnJ1c2guYywgZ3JhcGhpY3MveDExZHJ2L2NsaXBwaW5nLmMsIGdyYXBoaWNzL3gxMWRydi9pbml0LmMsIGluY2x1ZGUvY2xpcGJvYXJkLmgsIGluY2x1ZGUvZGRyYXcuaCwgaW5jbHVkZS9kaXNwbGF5LmgsIGluY2x1ZGUvdHR5ZHJ2LmgsIGluY2x1ZGUvd2luLmgsIGluY2x1ZGUveDExZHJ2LmgsIG9iamVjdHMvcGFsZXR0ZS5jLCB3aW5kb3dzL2RjZS5jLCB3aW5kb3dzL2RpbnB1dC5jLCB3aW5kb3dzL2Rpc3BsYXkuYywgd2luZG93cy9pbnB1dC5jLCB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy9zY3JvbGwuYywgd2luZG93cy93aW4uYywgd2luZG93cy93aW5wb3MuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJTW92ZWQgbW9yZSB0aGluZ3MgdG8gdGhlIFgxMSBkcml2ZXIuCgoJKiBpbmNsdWRlL3dpbmdkaS5oLCBvYmplY3RzL2JydXNoLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAbXVsdGltYW5pYS5jb20+CglGaXhlZCB0aGUgcHJvdG90eXBlIG9mIENyZWF0ZURJQlBhdHRlcm5CcnVzaFB0CgoJKiBpbmNsdWRlL3dpbmRvd3MuaDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QG11bHRpbWFuaWEuY29tPgoJUmVtb3ZlZCB0aGUgQ05feHh4IG1hY3JvcyBzaW5jZSB0aGV5IGFyZSBub3QgdXNlZCwgZG8gbm90IGNvcnJlc3BvbmQgdG8KCWFueSBXaW5kb3dzIGRlZmluZSBhbmQgY29uZmxpY3Qgd2l0aCBNRkMgZGVmaW5lcy4KCXdpbmRvd3MuaCBtdXN0IHByb3ZpZGUgYWxsIHRoZSBkZWZpbml0aW9ucyBjb250YWluZWQgaW4gd2luYmFzZS5oCglTb21lIFh4eDMyIGZ1bmN0aW9ucyBkaWQgbm90IGhhdmUgdGhlIGFzc29jaWF0ZWQgWHh4IG1hY3JvLgoKCSogaW5jbHVkZS93aW50eXBlcy5oOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAbXVsdGltYW5pYS5jb20+CglBZGRlZCBhIHR5cGVkZWYgZm9yIF9faW50NjQgd2hpY2ggaXMgYSBidWlsdGluIFZpc3VhbCBDKysgdHlwZQoJQWRkZWQgYSB0eXBlZGVmIGZvciBQVUlOVAoKCSogaW5jbHVkZS9vYmpiYXNlLmg6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBtdWx0aW1hbmlhLmNvbT4KCVJFRklJRCB3YXMgbm90IGRlZmluZWQuCgoJKiBjb25maWd1cmUuaW4sIGluY2x1ZGUvYWNjb25maWcuaCwgaW5jbHVkZS9jb25maWcuaC5pbiwgaW5jbHVkZS93aW5zb2NrLmgsIG1pc2Mvd2luc29jay5jLCBjb25maWd1cmU6CglQYXZlbCBSb3NraW4gPHBhdmVsX3Jvc2tpbkBnZW9jaXRpZXMuY29tPgoJY29uZmlndXJlIGZpcnN0IGNoZWNrcyB3aGV0aGVyIGl0IGlzIHBvc3NpYmxlIHRvIGNvbXBpbGUgSVBYIGNvZGUgd2l0aAoJR2xpYmMgaGVhZGVycy4gSWYgaXQgZmFpbHMsIG5leHQgY2hlY2sgZGV0ZXJtaW5lcyB3aGV0aGVyIGRpcmVjdCBpbmNsdXNpb24KCW9mIDxsaW51eC9pcHguaD4gd29ya3MuCgoJKiBpbmNsdWRlL3RjaGFyLmg6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBtdWx0aW1hbmlhLmNvbT4KCVByb3ZpZGVzIHRoZSBtYXBwaW5ncy4gTUJDUyBhbmQgVW5pY29kZSBmdW5jdGlvbnMgYXJlIG5vdCBpbXBsZW1lbnRlZC4KCVN0YW5kYXJkIChTQkNTKSBmdW5jdGlvbnMgbWF5IGV4aXN0IG9yIG5vdCwgd2l0aCB0aGUgc2FtZSBvciBhIGRpZmZlcmVudAoJc2VtYW50aWNzLgoKCSogZGxscy9jb21jdGwzMi9pcGFkZHJlc3MuYywgaW5jbHVkZS9jb21tY3RybC5oLCBpbmNsdWRlL2lwYWRkcmVzcy5oOgoJQWxleCBQcmllbSA8YWxleHBAc2NpLmt1bi5ubD4KCUlQYWRkcmVzcyBjb21tb24gY29udHJvbCBpbXBsZW1lbnRhdGlvbi4gRmlyc3QgdHJ5OyBuZWVkcyBtb3JlIHdvcmsgdG8KCXJlbW92ZSBib3JpbmcgYnVncy4KCkZyaSBEZWMgMjUgMDg6NTU6MTUgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvc2hlbGwzMi9jb250bWVudS5jLCBkbGxzL3NoZWxsMzIvc2hsdmlldy5jLCBpbmNsdWRlL29sZW9iai5oLCBpbmNsdWRlL3NobG9iai5oOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglGaXhlZCB0aGUgVEVYVCByZWRlZmluZWQgd2FybmluZ3MuCgoJKiBtc2Rvcy9pbnQxMC5jOiBKb3NlcGggUHJhbmV2aWNoIDxqcHJhbmV2aWNoQGx5Y29zLmNvbT4KCUhvb2sgaW50byB0aGUgKHN0dWJiZWQpIHJlc2l6ZSBjb2RlIGluIG1zZG9zIGludDEwLgoKCSogY29uc29sZS9pbnRlcmZhY2UuYywgaW5jbHVkZS9jb25zb2xlLmgsIGluY2x1ZGUvb3B0aW9ucy5oLCBsb2FkZXIvbWFpbi5jLCBtaXNjL21haW4uYzoKCUpvc2VwaCBQcmFuZXZpY2ggPGpwcmFuZXZpY2hAbHljb3MuY29tPgoJQWRkIHN1cHBvcnQgZm9yIHNlbGVjdGlvbiBvZiBjb25zb2xlIG1vZGUgZHJpdmVycyB0byB1c2UgdXNpbmcgdGhlCgktY29uc29sZSBvcHRpb24uIEN1cnJlbnRseSAidHR5IiwgIm5jdXJzZXMiLCBhbmQgInh0ZXJtIiBhcmUKCXN1cHBvcnRlZC4KCUFkZCBzdHVicyBmb3IgcmVzaXppbmcgdGhlIHNjcmVlbiBvbiBtb2RlIGNoYW5nZXMuCgoJKiBpbmNsdWRlL2RkZW1sLmgsIG1pc2MvZGRlbWwuYywgcmVsYXkzMi91c2VyMzIuc3BlYzoKCUplYW4tQ2xhdWRlIENvdGUgPGplYW4tY2xhdWRlQG1hY2FkYW1pYW4uY29tPgoJUGFydGlhbCBpbXBsZW1lbnRhdGlvbiBmb3IgdGhlIGZvbGxvd2luZyBEREUgQVBJczoKCURkZUNtcFN0cmluZ0hhbmRsZXMsIERkZUNyZWF0ZVN0cmluZ0hhbmRsZSwgRGRlRnJlZVN0cmluZ0hhbmRsZSwKCURkZVF1ZXJ5U3RyaW5nLCBEZGVVbmluaXRpYWxpemUuCgpUaHUgRGVjIDI0IDE2OjU5OjE3IDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBvbGUvTWFrZWZpbGUuaW4sIG9sZS9wYXJzZWR0LmMsIG9sZS9wYXJzZWR0LmgsIG9sZS92YXJpYW50LmM6CglKZWFuLUNsYXVkZSBDb3RlIDxqZWFuLWNsYXVkZUBtYWNhZGFtaWFuLmNvbT4KCUFkZGVkIFZhckRhdGVGcm9tU3RyIEFQSS4KCgkqIGRsbHMvY29tY3RsMzIvdHJhY2tiYXIuYywgaW5jbHVkZS90cmFja2Jhci5oOgoJQWxleCBQcmllbSA8YWxleHBAc2NpLmt1bi5ubD4KCS0gVG9vbHRpcCBzdXBwb3J0CgktIFZlcnRpY2FsIHRyYWNrYmFycyBzdXBwb3J0ZWQgbm93CgktIFRCU19CT1RIIHN1cHBvcnQgKGdvZXMgYWxvbmcgd2l0aCBwYXJ0aWFsIGNsZWFudXAgb2YgZHJhd2luZyBjb2RlKQoJLSBVc2UgQ09NQ1RMMzIgaGVhcCBpbnN0ZWFkIG9mIHN5c3RlbSBoZWFwCgoJKiBncmFwaGljcy9kZHJhdy5jLCBpbmNsdWRlL2RkcmF3Lmg6CglQZXRlciBIdW5uaXNldHQgPGh1bm5pc2VAbm9ydGVsbmV0d29ya3MuY29tPgoJQWRkZWQgYWxsIGNsaXBwZXImM2Qgc3R1YnMuCglTdGFydGluZyBDb2xvcktleSBzdXBwb3J0LgoJRml4ZWQgdHJhY2Ugc3RhdGVtZW50IGluIERpcmVjdERyYXdDcmVhdGUgYXMgZm9ybWF0dGluZyB3YXNuJ3QgY29ycmVjdC4KCUNoYW5nZWQgInJldHVybiAwOyIgdG8gInJldHVybiBERF9PSyIgb3IgInJldHVybiBTX09LIiBhcyBhcHByb3ByaWF0ZS4KCUFkZGVkIFN1cmZhY2VFbnVtIGR3RmxhZ3MuCgoJKiBpbmNsdWRlL2RwbGF5LmgsIG11bHRpbWVkaWEvZHBsYXkuYzoKCVBldGVyIEh1bm5pc2V0dCA8aHVubmlzZUBub3J0ZWxuZXR3b3Jrcy5jb20+CglBZGRlZCBtYWNyb3MgdG8gaGVhZGVyIGZpbGUgZm9yIGVhc2llciBmdW5jdGlvbiBjYWxsaW5nLgoJQ2hhbmdlZCBpbXBsZW1lbnRhdGlvbiBhIGxpdHRsZSBiaXQuCglBZGRlZCBzdHVicyBmb3IgZHBsYXkzLiBTdGlsbCBuZWVkIHRvIGJyZWFrIGludG8gQSBhbmQgVyB2ZXJzaW9ucy4KCgkqIHdpbjMyL2ZpbGUuYzogUGV0ZXIgSHVubmlzZXR0IDxodW5uaXNlQG5vcnRlbG5ldHdvcmtzLmNvbT4KCUNyZWF0ZUZpbGUzMkEgd2FzIG9ubHkgYWxsb3dpbmcgY29uc29sZSBvcGVucyBvbiBDT05JTiQvT1VUJC4gVGhpcwoJaGFzIGJlZW4gY2hhbmdlZCB0byBoYXZlIGEgY2FzZSBpbnNlbnNpdGl2ZSBjb21wYXJlLgoKCSogY29udHJvbHMvbGlzdGJveC5jOiBHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCURvbid0IHNlbmQgT0RBX0VOVElSRSBmb3IgZW1wdHkgbGlzdGJveGVzIChMSVNUQk9YX1BhaW50KS4KCgkqIGluY2x1ZGUvd2luYmFzZS5oLCByZWxheTMyL2tlcm5lbDMyLnNwZWMsIHdpbjMyL2tlcm5lbDMyLmM6CglKZWFuLUNsYXVkZSBDb3RlIDxqZWFuLWNsYXVkZUBtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGVkIHRoZSBHZXRCaW5hcnlUeXBlIEFQSSBmdW5jdGlvbi4KCgkqIGxvYWRlci9kb3MvZG9zbW9kLmMsIGxvYWRlci9kb3MvZG9zbW9kLmgsIGxvYWRlci9kb3MvZG9zdm0uYywgbG9hZGVyL2Rvcy9tb2R1bGUuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQWRkZWQgc29tZSBuZXcgZG9zbW9kIGNvbW11bmljYXRpb24gcG9zc2liaWxpdGllcywgaW5jbHVkaW5nCglhY3RpdmF0aW5nIGEgZG9zbW9kLXNwZWNpZmljIHNldGl0aW1lcigpLCBhbmQgdGhlIGNhcHR1cmUgb2Ygc29tZQoJY29tbW9uIHNpZ25hbHMsIHdoaWNoIGlzIHJldHVybmVkIHRvIFdpbmUgKHByZXZpb3VzbHkgYSBTSUdJTEwKCXdvdWxkIGp1c3QgY2F1c2UgYSAiZG9zbW9kIHN5bmMgbG9zdCIgd2l0aG91dCBleHBsYW5hdGlvbiwgbm93IGl0CglpbnZva2VzIHRoZSBXaW5lIGRlYnVnZ2VyKS4gSW52b2tlcyBpbnQgMDggdXBvbiByZWNlaXB0IG9mIGRvc21vZAoJU0lHQUxSTSwgdGh1cyBzaW11bGF0aW5nIHRoZSBET1MgdGltZXIuIE1hZGUgRE9TIGludGVycnVwdCBjYWxscwoJYmUgcmVwb3J0ZWQgYnkgLWRlYnVnbXNnICtyZWxheSBpbnN0ZWFkIG9mIC1kZWJ1Z21zZyAraW50LiBBbmQKCWZpeGVkIG5vbi1pMzg2IGNvbXBpbGF0aW9uIG9mIGRvc21vZC4gKEFueXRoaW5nIGVsc2U/ISkKCgkqIGxvYWRlci9tYWluLmMsIHdpbmRvd3Mvd2luLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCURlc2t0b3Agd2luZG93IHF1ZXVlIGhhbmRsaW5nIGFkYXB0ZWQuCgoJKiB3aW5kb3dzL2NsaXBib2FyZC5jLCB3aW5kb3dzL2hvb2suYywgd2luZG93cy90aW1lci5jLCB3aW5kb3dzL3dpbnBvcy5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglRdWV1ZSBoYW5kbGluZyBhZGFwdGVkIHRvIG5ldyBxdWV1ZSByb3V0aW5lcy4KCgkqIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL3F1ZXVlLmMsIGlmMTYzMi91c2VyLnNwZWMsIGluY2x1ZGUvcXVldWUuaCwgaW5jbHVkZS90YXNrLmg6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUltcGxlbWVudGVkIHN0dWIgZm9yIEluaXRUaHJlYWRJbnB1dC4KCVVzZSBHZXRUaHJlYWRRdWV1ZS9HZXRGYXN0UXVldWUgaW5zdGVhZCBvZiBHZXRUYXNrUXVldWUuCgoJKiBsb2FkZXIvdGFzay5jLCBtaXNjZW11L21haW4uYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJVXNlIENhbGxvdXQgdGFibGUgaW5zdGVhZCBvZiBkaXJlY3QgR2V0UHJvY0FkZHJlc3MuCglVc2VyWWllbGQgbW92ZWQgdG8gVVNFUi4KCgkqIGluY2x1ZGUvY2FsbGJhY2suaCwgbWlzYy9jYWxsYmFjay5jLCBpZjE2MzIvdGh1bmsuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQ2FsbG91dCB0YWJsZSAoZm9yIEtFUk5FTC0+VVNFUiBjYWxscykgYWRkZWQuCglDYWxsYmFja3MtPkNhbGxQb3N0QXBwTWVzc2FnZVByb2MgcmVtb3ZlZC4KCgkqIG1pc2MvY2FsbGJhY2suYywgd2luZG93cy94MTFkcnYvZXZlbnQuYywgaW5jbHVkZS9jYWxsYmFjay5oLCBpbmNsdWRlL3F1ZXVlLmgsIGluY2x1ZGUvdGFzay5oLCBsb2FkZXIvdGFzay5jLCBpZjE2MzIvdGh1bmsuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJSGFuZGxlIG5vbi1oYXJkd2FyZSBYIGV2ZW50cyBjb3JyZWN0bHkgd2l0aCBuYXRpdmUgVVNFUgoJKHJlbW92ZWQgcmVmZXJlbmNlIHRvIE1FU1NBR0VRVUVVRSBmcm9tIEtFUk5FTCBjb2RlKS4KCUhhbmRsZSBFeHBvc2UgZXZlbnRzIHdpdGggbmF0aXZlIFVTRVIuCgoJKiBtaXNjL2NydGRsbC5jOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQmV0dGVyIF91bHRvYSgpLgoKCSogd2luMzIvdGltZS5jOiBSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJRml4IHNtYWxsIHByb2JsZW0gaW4gR2V0VGltZVpvbmVJbmZvcm1hdGlvbigpLgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCUxvd2VzdCBzY2FuIGNvZGUgc2VlbXMgdG8gYmUgMSwgbm90IHplcm8uCgoJKiBncmFwaGljcy9kZHJhdy5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVN0dWJzIGZvciBJRGlyZWN0M0QoMik6OkNyZWF0ZUxpZ2h0IGFuZCBDcmVhdGVEZXZpY2UgdG8gYXZvaWQgY3Jhc2hlcy4KCgkqIGRsbHMvbnRkbGwvcnRsLmMsIHJlbGF5MzIvbnRkbGwuc3BlYywgZGxscy9udGRsbC9udC5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglOZXcgc3R1YnMuCgoJKiBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUZpeGVzIGNyYXNoIHdoZW4gcnVubmluZyB3aXRob3V0IGV4dGVybmFsIHNoZWxsMzIuZGxsLgoKCSogd2luZG93cy93aW5wcm9jLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTW9yZSBtZXNzYWdlcyBbTEJfKixFTV8qXSB0cmFuc2xhdGVkIDMyQSBmcm9tL3RvIDMyVy4KCgkqIHJlbGF5MzIvdXNlcjMyLnNwZWM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJRGVzdCBidWZmZXIgd2FzIHByaW50ZWQgb3V0IGFzIHN0ci4KCgkqIG1pc2MvdmVyLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJR2V0dGluZyBzdHJpbmdzIHdpdGggVmVyUXVlcnlWYWx1ZTMyVyB3YXMgYnJva2VuLiBDb21wbGV0ZQoJcmVjb25zdHJ1Y3Rpb24gb2YgdGhlIGZ1bmN0aW9uLgoKCSogbWlzYy90b29saGVscC5jOiBIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCUZpeCBudW1iZXIgYW5kIHR5cGUgb2YgYXJncyBpbiBkZWJ1Z2dpbmcgc3RhdGVtZW50cy4KCgkqIG9sZS9zdG9yYWdlLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQG11ZC5kZT4KCUlTdG9yYWdlMzIgdnRhYmxlIHdhcyBtaXNzaW5nIDMgc3R1YiBlbnRyaWVzLgoKRnJpIERlYyAxOCAxNzozODozOSAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS93aW5nZGkuaCwgb2JqZWN0cy9mb250LmMsIHJlbGF5MzIvZ2RpMzIuc3BlYzoKCURvdWdsYXMgUmlkZ3dheSA8cmlkZ3dheUB3aW5laHEuY29tPgoJRG9jdW1lbnRhdGlvbiBmb3IgVHJhbnNsYXRlQ2hhcnNldEluZm8uCgoJKiBkbGxzL3duYXNwaTMyL3dpbmFzcGkzMi5jLCBpZjE2MzIvd3Byb2NzLnNwZWMsIGRsbHMvd2luYXNwaS93aW5hc3BpMTYuYzoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCU1ha2UgdGhlIERPU0FTUEkgcGFydCB1c2UgdGhlIGV4Y2VsbGVudCBEUE1JIFJNQ0IgaW1wbGVtZW50YXRpb24gZG9uZQoJYnkgT3ZlIEthYXZlbiwgd2hpY2ggbWFrZXMgdGhlIGNvZGUgX211Y2hfIGNsZWFuZXIuCgoJKiBNYWtlLnJ1bGVzLmluLCBNYWtlZmlsZS5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW46CglUb2RkIFZpZXJsaW5nIDx0dkBwb2JveC5jb20+CglVc2UgLWx3aW5lIGZvciBsaW5raW5nLgoKCSogd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3MvcXVldWUuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBhbHdheXMgY2xlYXIgUVNfLi4uIGZyb20gKmJvdGgqIGNoYW5nZUJpdHMgYW5kIHdhaXRCaXRzLgoJQnVnZml4OiBxdWV1ZS0+aFNlbmRpbmdUYXNrIGlzICpxdWV1ZSogaGFuZGxlLCBub3QgdGFzayBoYW5kbGUuCgoJKiBpZjE2MzIvc3RvcmFnZS5zcGVjLCBpbmNsdWRlL2ludGVyZmFjZXMuaCwgaW5jbHVkZS9vYmpiYXNlLmgsIGluY2x1ZGUvc3RvcmFnZS5oLCBvbGUvaWZzLmMsIG9sZS9zdG9yYWdlLmM6CglGcmFu529pcyBHb3VnZXQgPGdvdWdldEBtZXRhaW50ZWdyYXRpb24ubmV0PgoJRmlyc3Qgc3RlcCB0byBtYWtlIGl0IHBvc3NpYmxlIHRvIGNhbGwgQ09NIGludGVyZmFjZXMgZnJvbSBDKysgY29kZSBpbgoJV2luZWxpYi4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYywgaW5jbHVkZS90cmVldmlldy5oOgoJQWxleCBQcmllbSA8YWxleHBAc2NpLmt1bi5ubD4KCVByZWxpbWluYXJ5IHRvb2x0aXAgc3VwcG9ydC4KCVdNX1NFVEZPTlQvR0VURk9OVCBhZGRlZC4KCVNvbWUgYnVnIGZpeGVzLgoJVXNlIENPTUNUTDMyIGhlYXAgaW5zdGVhZCBvZiBzeXN0ZW0gaGVhcC4KCgkqIGdyYXBoaWNzL3BhaW50aW5nLmM6IEh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJSW1wbGVtZW50ZWQgUG9seWxpbmVUby4KCgkqIHJlbGF5MzIvbnRkbGwuc3BlYzogQWRyaWFuIEhhcnZleSA8YWRyaWFuQHNlbGVjdC5jb20uYXU+CglUaGUgWncuLi4gRnVuY3Rpb25zIGluIG50ZGxsLmRsbCBhcmUganVzdCBhbHRlcm5hdGUgZW50cnkKCXBvaW50cyBmb3IgdGhlIHNhbWUgZnVuY3Rpb25zIGFzIHRoZSBOdC4uLiBmdW5jdGlvbiBvZiB0aGUKCXNhbWUgbmFtZXMuICBDaGFuZ2VkIG50ZGxsLnNwZWMgdG8gbWF0Y2ggdGhpcy4KCgkqIGluY2x1ZGUvbW9kdWxlLmgsIGluY2x1ZGUvcGVfaW1hZ2UuaCwgbG9hZGVyL21vZHVsZS5jLCBsb2FkZXIvcGVfaW1hZ2UuYywgcmVsYXkzMi9idWlsdGluMzIuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJUmVvcmdhbml6ZWQgUEUgbW9kdWxlIGxvYWRpbmcgdG8gcHJlcGFyZSBmb3IgZWxmLWRsbCBsb2FkZXIuCglXSU5FX01PRFJFRiBjcmVhdGlvbiBtb3ZlZCB0byBvbmUgY2VudHJhbCBsb2NhdGlvbi4KCUJ1Z2ZpeDogY29ycmVjdGx5IHNlbGVjdCBuYXRpdmUvYnVpbHQtaW4gdmVyc2lvbiBpZiAuRExMCglleHRlbnNpb24gaXMgbWlzc2luZyBpbiBMb2FkTGlicmFyeSBjYWxsLgoKCSogbXVsdGltZWRpYS9tbXN5c3RlbS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUNoYW5nZWQgZXJyb3IgdmFsdWVzIE1DSV9JTlRFUk5BTCB0byB0aGVpciBjb3JyZWN0IHZhbHVlcy4KCgkqIG11bHRpbWVkaWEvbWNpd2F2ZS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVJlbW92ZWQgd2FybmluZy4KCgkqIG11bHRpbWVkaWEvbWNpc3RyaW5nLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJTm8gbG9uZ2VyIHNlbmRpbmcgZGlyZWN0bHkgbWVzc2FnZXMgdG8gRHJpdmVyUHJvYyBidXQgcmF0aGVyIGdvIHRocm91Z2gKCU1DSSBsYXllciAocmVxdWlyZWQgZm9yIG9wZW4vY2xvc2UpLgoKCSogbXVsdGltZWRpYS9tY2ljZGEuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglSZW1vdmVkIGluY29ycmVjdCBwYXRjaCBmb3IgTUNJX09QRU4gYW5jIE1DSV9DTE9TRSBwYXJhbWV0ZXJzICh0aGFua3MgdG8gUm9iZXJ0IFJpZ2dzCglmb3IgcG9pbnRpbmcgb3V0IHRoZSBidWcsIHNlZSB0aGUgZml4IGluIG1jaXN0cmluZy5jKQoJRml4ZWQgTUNJIHNlZWtpbmcgb24gQ0QgYXVkaW8uCgoJKiBpbmNsdWRlL3dpbmVycm9yLmg6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJU3R1YnMgZm9yIFdhaXROYW1lZFBpcGVbQXxXXS4KCgkqIGRsbHMvc2hlbGwzMi9jbGFzc2VzLmMsIGRsbHMvc2hlbGwzMi9kYXRhb2JqZWN0LmMsIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLCBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmMsIGluY2x1ZGUvc2hlbGwuaCwgcmVsYXkzMi9zaGVsbDMyLnNwZWM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCVNtYWxsIGZpeGVzLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsb3JkLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCVN0dWIgQ29udHJvbF9GaWxsQ2FjaGVfUnVuRExMLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglTSEdldEZpbGVJbmZvMzJBOiBnZXQgU0hHRklfU1lTSUNPTklOREVYIGltcGxlbWVudGVkLgoKCSogZGxscy9zaGVsbDMyL3BpZGwuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglJTEFwcGVuZCBzZWVtcyB0byB3b3JrIG5vdy4KCgkqIHJlbGF5MzIva2VybmVsMzIuc3BlYywgd2luMzIva2VybmVsMzIuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJU3R1YnMgZm9yIFdhaXROYW1lZFBpcGVbQXxXXS4KClR1ZSBEZWMgMTUgMTg6MDQ6NTggMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGZpbGVzL2RpcmVjdG9yeS5jOiBIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCUZpeCBHZXRUZW1wUGF0aDMyIGlmIGNvdW50PTAuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgaW5jbHVkZS9jb25maWcuaC5pbiwgaW5jbHVkZS9tdWx0aW1lZGlhLmgsIG11bHRpbWVkaWEvYXVkaW8uYywgbXVsdGltZWRpYS9kc291bmQuYywgbXVsdGltZWRpYS9pbml0LmMsIG11bHRpbWVkaWEvbWNpY2RhLmMsIG11bHRpbWVkaWEvbWNpbWlkaS5jLCBtdWx0aW1lZGlhL21pZGkuYywgbXVsdGltZWRpYS9taXhlci5jLCBtdWx0aW1lZGlhL21tYXV4LmM6CglUb2RkIFZpZXJsaW5nIDx0dkBwb2JveC5jb20+CgktIGFkZCAtbG9zc2F1ZGlvIGlmIG5lZWRlZCwgYW5kIGEgY2hlY2sgZm9yIDxzb3VuZGNhcmQuaD4sIHRvIGNvbmZpZ3VyZS5pbgoJICAocnVuIGF1dG9jb25mIGFmdGVyIHRoaXMpLiAgTm90ZSB0aGF0IHRoZSBjaGVjayBoYXMgYmVlbiBhbHRlcmVkIHRvIGJyZWFrCgkgIG91dCBvZiB0aGUgQUNfQ0hFQ0tfSEVBREVSUyBhZnRlciB0aGUgZmlyc3QgbWF0Y2ggLSB0aGlzIGlzIHNvCgkgIDxzeXMvc291bmRjYXJkLmg+LCBpZiBmb3VuZCBvbiBOZXRCU0QgKGEgYHJlYWwnIE9TUyksIHdpbGwgbm90IGNvbmZsaWN0CgkgIHdpdGggdGhlIGVtdWxhdGVkIG9zc2F1ZGlvLgoJLSBjaGVjayBmb3IgPHNvdW5kY2FyZC5oPiBhbG9uZyB3aXRoIHRoZSBvdGhlciB0d28gaW4gYSBtdXR1YWxseS1leGNsdXNpdmUKCSAgbWFubmVyIGluIHRoZSB2YXJpb3VzICouYyBmaWxlcyB0aGF0IG5lZWQgaXQ7IGNoYW5nZSBpbmNsdWRlIG9mCgkgICJtbXN5c3RlbS5oIiB0byAibXVsdGltZWRpYS5oIiBzbyB0aGlzIGxvZ2ljIGlzIGFsbCBpbiBvbmUgcGxhY2UKCS0gY2hhbmdlIG1jaWNkYS5jIHRvIGFsbG93IGZvciBDRCBhdWRpbyBtYW5pcHVsYXRpb24gb24gTmV0QlNELiAgVGhpcwoJICBpbmNsdWRlczoKCSAgKiBjaGFuZ2luZyBpb2N0bCgpIGNhbGxzIHRvIGJlIE5PTi1TUExJVCB3aXRoIGV4YWN0bHkgMyBhcmdzOyBvbiBOZXRCU0QKCSAgICBvc3NhdWRpbywgaW9jdGwoKSBpcyAjZGVmaW5lZCB0byBiZSBfb3NzX2lvY3RsIGJ5IDxzb3VuZGNhcmQuaD4sIGFuZAoJICAgIG5laXRoZXIgc3BsaXR0aW5nIHdpdGggIy1kaXJlY3RpdmVzIG5vciBhIHR3by1hcmcgaW9jdGwgd29yazsKCSAgKiBjaGFuZ2luZyB0aGUgI2lmIGxvZ2ljIHRvIGFsbG93IGJvdGggRnJlZUJTRCBhbmQgTmV0QlNEIHRvIHNoYXJlIHRoZQoJICAgIGFwcHJvcHJpYXRlIGNvZGUgYmxvY2tzCgktIGJsb2NrIG91dCBNSURJIGNvZGUgZm9yIE5ldEJTRCAoaW5pdC5jKSBhbmQvb3IgbWlzc2luZyBTTkRDVExfTUlESV9JTkZPCgkgIChtaWRpLmMsIG1jaW1pZGkuYykuICBOZXRCU0QncyBPU1MgZW11bGF0aW9uIGRvZXMgbm90ICh5ZXQpIHN1cHBvcnQgTUlESS4KCVRoYW5rcyBnbyB0byBteWNyb2Z0QG5ldGJzZC5vcmcgZm9yIHRoZSA5OSUgYnVsayBvZiB0aGlzIHdvcmsuCgoJKiB0c3gxMS9YMTFfY2FsbHMsIHRzeDExL3RzX3h1dGlsLmMsIHdpbmRvd3MveDExZHJ2L3duZC5jLCBpbmNsdWRlL3RzX3h1dGlsLmg6CglEaXJrIFRoaWVyYmFjaCA8dGhpZXJiYWNoQG1hdGhlbWF0aWsudHUtZGFybXN0YWR0LmRlPgoJU2V0IHRoZSBjbGFzcyBoaW50cyBmb3IgbWFuYWdlZCB3aW5kb3dzLgoKCSogZmlsZXMvZG9zX2ZzLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJQnVnZml4OiBHZXRGdWxsUGF0aE5hbWUgc2V0cyBscEZpbGVQYXJ0IG9ubHkgd2hlbiB0aGUgbGFzdCBlbGVtZW50Cglkb2VzIG5vdCBlbmQgd2l0aCAnXCcuCgoJKiB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy93aW4uYywgaW5jbHVkZS9jb21tY3RybC5oLCBpbmNsdWRlL2NvbW1kbGcuaCwgaW5jbHVkZS9kZGVtbC5oLCBpbmNsdWRlL21vdXNlLmgsIGluY2x1ZGUvc2hsb2JqLmgsIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbmRvd3MuaCwgaW5jbHVkZS93aW5lcnJvci5oLCBpbmNsdWRlL3dpbmdkaS5oLCBpbmNsdWRlL3dpbnR5cGVzLmgsIG1pc2MvZGRlbWwuYywgb2JqZWN0cy9iaXRtYXAuYywgb2JqZWN0cy9icnVzaC5jLCBvYmplY3RzL2RjLmMsIG9iamVjdHMvZm9udC5jLCBvYmplY3RzL2dkaW9iai5jLCByZWxheTMyL2dkaTMyLnNwZWMsIHJlbGF5MzIvdXNlcjMyLnNwZWMsIGNvbnRyb2xzL21lbnUuYywgZGxscy9jb21jdGwzMi9jb21tY3RybC5jLCBncmFwaGljcy9iaXRibHQuYywgZ3JhcGhpY3MvZXNjYXBlLmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L2luaXQuYywgZ3JhcGhpY3MvcGFpbnRpbmcuYywgZ3JhcGhpY3MvcGF0aC5jLCBpZjE2MzIvdXNlci5zcGVjOgoJUGF1bCBRdWlubiA8cGF1bHFAQ09SRUwuQ0E+CglMb3RzIG9mIG5ldyBkZWZpbmVzIGFuZCBzdHVicy4KCgkqIE1ha2UucnVsZXMuaW4sIE1ha2VmaWxlLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCVRvZGQgVmllcmxpbmcgPHR2QHBvYm94LmNvbT4KCVRoZXNlIHBhdGNoZXMgYWRkIHN1cHBvcnQgZm9yIC0tZW5hYmxlLWRsbCBvbiBOZXRCU0QsIGFuZCBtYXkgZXZlbiBkbyBzbyBmb3IKCUZyZWVCU0QgYS5vdXQuICBOb3csIE5ldEJTRCBjYW4gdXNlIGxpYndpbmUgYXMgYSBzaGFyZWQgb2JqZWN0LiAgVGhhbmtzIHRvCglteWNyb2Z0QG5ldGJzZC5vcmcgZm9yIGRvaW5nIHRoaXMgd29yayEKCgkqIHRvb2xzL3dyYy93cml0ZXJlcy5jOiBUb2RkIFZpZXJsaW5nIDx0dkBwb2JveC5jb20+CglHbG9iYWwgY29uc3RydWN0b3JzIHVzaW5nIGAuc2VjdGlvbiAuY3RvcnMnIGFyZSBib2d1cyBmb3IgTmV0QlNEJ3MKCWFzc2VtYmxlci4gVXNlIHRoZSBhcHByb3ByaWF0ZSBgLnN0YWJzJyB3aGVuIG9uIE5ldEJTRC4KCgkqIG9sZS92YXJpYW50LmM6IFRvZGQgVmllcmxpbmcgPHR2QHBvYm94LmNvbT4KCVVuZGVmaW5lZCBDSEFSX01BWCBhbmQgQ0hBUl9NSU4gKCNkZWZpbmVkIGJ5IE5ldEJTRCdzIHN5c3RlbSBoZWFkZXJzKS4KCUZpeGVkIHNvbWUgY29uc3RhbnRzIHRoYXQgYXJlIHRvbyBiaWcgZm9yIGEgcGxhaW4gYGludCcuCgoJKiBvbGUvdmFyaWFudC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUNoZWNrIGZvciBNQVhGTE9BVCBpZiBGTFRfTUFYIGlzbid0IHRoZXJlLgoKCSogZ3JhcGhpY3MvcHNkcnYvTWFrZWZpbGUuaW46IFRvZGQgVmllcmxpbmcgPHR2QHBvYm94LmNvbT4KCWdyYXBoaWNzL3BzZHJ2IGZvcmdldHMgdG8gcHVsbCBpbiBARExMRkxBR1NALCBhbmQgc28gaXMgY29tcGlsZWQgbm9uLVBJQyBpZgoJdXNpbmcgLS1lbmFibGUtZGxsLgoKCSogaW5jbHVkZS93aW5nZGkuaCwgaW5jbHVkZS93aW50eXBlcy5oLCBpbmNsdWRlL3dpbnVzZXIuaCwgaW5jbHVkZS93aW5kb3dzLmg6CglWZWtzbGVyIE1pY2hhZWwgPG12ZWtzbGVyQHRlY2h1bml4LnRlY2huaW9uLmFjLmlsPgoJTW92ZSBkZWNsYXJhdGlvbnMgZnJvbSB3aW5kb3dzLmggdG8gd2luZ2RpLmggYW5kIHdpbnVzZXIuaC4KCk1vbiBEZWMgMTQgMTg6MTU6MTEgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbjMyL2NvbnNvbGUuYywgZmlsZXMvTWFrZWZpbGUuaW4sIGZpbGVzL2FzeW5jLmMsIGZpbGVzL2ZpbGUuYywgaW5jbHVkZS9hc3luYy5oLCBpbmNsdWRlL2ZpbGUuaCwgbG9hZGVyL3NpZ25hbC5jLCBtaXNjL3dpbnNvY2tfZG5zLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU1hZGUgYXN5bmMgSU8gKFNJR0lPKSBzdHVmZiBmcm9tIFdJTlNPQ0sgZ2VuZXJpYyB1c2VhYmxlLgoJQWRkZWQgYXN5bmMgSU8gc3VwcG9ydCB0byBGSUxFIGFuZCBDT05TT0xFIG9iamVjdHMuCgoJKiBtaXNjL3dpbnNvY2suYzogU3RlcGhlbiBMYW5nYXNlayA8dm9ybG9uQGRvZGRzLm5ldD4KCVByZXZlbnQgc2VnZmF1bHQgaW4gc2V0c29ja29wdCB3aGVuIG9wdG5hbWUgaXMgU09fTElOR0VSIGFuZCBvcHR2YWwgaXMKCW51bGwuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmMsIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmMsIHJlbGF5MzIvc2hlbGwzMi5zcGVjOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglTb21lIGNsZWFudXAuCgoJKiBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCVNITWFwUElETFRvU3lzdGVtSW1hZ2VMaXN0SW5kZXggdHJ5J3MgdG8gZGV0ZXJtaW5lIGFuZCBsb2FkIHRoZSBleGFjdAoJaWNvbiBmb3IgZmlsZXMgKGJ5IHR5cGUpIG5vdy4KCgkqIGRsbHMvc2hlbGwzMi9jbGFzc2VzLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTmV3IEhDUl9HZXREZWZhdWx0SWNvbiAoaW50ZXJuYWwpLgoKCSogaW5jbHVkZS9kb3NleGUuaCwgbG9hZGVyL2Rvcy9kb3N2bS5jLCBsb2FkZXIvZG9zL21vZHVsZS5jLCBtc2Rvcy9kb3NtZW0uYywgbXNkb3MvZHBtaS5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglNb3ZlZCBEUE1JIHdyYXBwZXIgYWxsb2NhdGlvbiBjb2RlIHRvIGRvc21lbS5jIHRvIFJFQUxMWSBtYWtlIHRoZQoJUk1jYWxsIHNob3J0Y3V0cyBpbmRlcGVuZGVudCBvZiBkb3Ntb2QuIFNTIGhhZCBiZWVuIGxlZnQgb3V0IG9mCgl0aGUgUkVBTE1PREVDQUxMIGNvcHkgcm91dGluZXMgZm9yIHNvbWUgcmVhc29uLCBmaXhlZCBub3cuIEFsc28KCWNsZWFuZWQgdXAgYSBmZXcgY29tcGlsZXIgd2FybmluZ3MuCgoJKiBncmFwaGljcy94MTFkcnYveGZvbnQuYzogSWFuIFBpbGNoZXIgPHBpbGNoZXJAY29uY2VudHJpYy5uZXQ+CglBZGRlZCBhYmlsaXR5IHRvIHNwZWNpZnkgWCBmb250cyB1c2VkIGZvciBIZWx2IGFuZCBUbXMgUm1uIHR5cGVmYWNlcwoJd2l0aCBEZWZhdWx0U2VyaWYgYW5kIERlZmF1bHRTYW5zU2VyaWYgSU5JIGtleXMuCgoJKiB0b29scy93cmMvcGFyc2VyLnksIHRvb2xzL3dyYy93cmMuaCwgdG9vbHMvd3JjL3dyaXRlcmVzLmMsIHRvb2xzL3dyYy9DSEFOR0VTOgoJQmVydGhvIFN0dWx0aWVucyA8YmVydGhvQHBhbnRlci5zb2NpLmFhdS5kaz4KCS0gQWRkZWQgYSBnbG9iYWwgbGFiZWwgZm9yIGVsZi1kbGwgbGlua2luZyBhbmQgYSBsb25nIHdpdGggdGhlIHJlc291cmNlCgkgIHNpemUgYW5kIGEgbG9uZyB3aXRoIHRoZSBkaXJlY3Rvcnkgc2l6ZS4KCS0gS2lsbGVkIGFuIGFubm95aW5nIHdhcm5pbmcgc2luY2UgdmVyc2lvbiAxLjAuMCBpbiBwYXJzZXIueSBhYm91dCBhCgkgIHZhciBiZWluZyB1c2VkIGJlZm9yZSBpbml0LgoKCSogaW5jbHVkZS9zaGxvYmouaCwgZGxscy9zaGVsbDMyL3NoZWxsbGluay5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJQWRkcyB0aGUgSVBlcnNpc3RGaWxlIEludGVyZmFjZSB0byBJU2hlbGxMaW5rW1ddIGFuZCBnYXZlIGJvdGggb3duCglJQ2xhc3NGYWN0b3J5cy4KCgkqIHdpbjMyL2NvbnNvbGUuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CgkoUmVhZENvbnNvbGUzMkEpOiBzbWFsbCBhbmQgc3R1cGlkIGJ1ZyBmaXhlZAoJKFdyaXRlQ29uc29sZU91dHB1dCk6IGJ1ZyBmaXhlZCAoYXR0cmlidXRlcyBtYXkgY2hhbmdlIHdpdGhpbiBsaW5lcykKCWFuZCBlbmhhbmNlZCBzcGVlZHdpc2UgYnkgdXNpbmcgYnVmZmVyaW5nLgoJKENPTlNPTEVfc3RyaW5nXzJfSVIpOiBlbmhhbmNlZCwgbm93IGdldHMgc2NhbmNvZGVzIGFuZCB2aXJ0dWFsa2V5Y29kZXMKCgkqIG1pc2MvY3J0ZGxsLmMsIHJlbGF5MzIvY3J0ZGxsLnNwZWM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCV91bHRvYSBpbXBsZW1lbnRlZC4KCgkqIGNvbnRyb2xzL3N0YXRpYy5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVNtYWxsIGhhY2sgdG8gZ2V0IHJpZCBvZiBhbm5veWluZyBlcnI6cmVzb3VyY2U6IG1lc3NhZ2UgZm9yCglNZXNzYWdlQm94ZXMuCgoJKiByZWxheTMyL2Rzb3VuZC5zcGVjOiBJYW4gU2NobWlkdCA8aXJzbWFuQGlhZy5uZXQ+CglGaXggb2ZmLWJ5LTEgZXJyb3IgaW4gRGlyZWN0U291bmQgb3JkaW5hbHMuIFRoYW5rcyB0byBSb2JlcnQgUmlnZ3MgZm9yCgl0aGUgcG9pbnRlci4KCgkqIGdyYXBoaWNzL2RkcmF3LmM6IFN0ZXBoZW4gQ3Jvd2xleSA8Y3Jvd0BkZWJpYW4ub3JnPgoJU2F2ZSB0aGUgb3JpZ2luYWwgdmlkZW8gbW9kZSBiZWZvcmUgZ29pbmcgZnVsbHNjcmVlbiBhbmQgcmVzdG9yZSBpdAoJd2hlbiB0aGUgbGFzdCBEaXJlY3REcmF3X1JlbGVhc2UgaXMgY2FsbGVkLiBBbHNvIGZpeCBhIHByb2JsZW0gd2hlcmUKCXRoZSB2aWV3cG9ydCB3YXNuJ3Qgc2V0IHRvIDAsMC4KCgkqIGNvbnNvbGUveHRlcm0uYzogSm9zZXBoIFByYW5ldmljaCA8anByYW5ldmljaEBseWNvcy5jb20+CglNYWRlIG1vcmUgY3Jvc3MtcGxhdGZvcm0gYnkgY2hhbmdpbmcgLT5fZmlsZW5vIHRvIGZpbGVubygpLgoKCSogd2luZG93cy93aW4uYzogTkYgU3RldmVucyA8bm9ybWFuQGFyY2FkeS51LW5ldC5jb20+CglGaXggdGhlIFotb3JkZXIgb2YgbWF4aW1pemVkL21pbmltaXplZCBjaGlsZCB3aW5kb3dzLgoKCSogZ3JhcGhpY3MveDExZHJ2L3hmb250LmM6CglIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCVhMRkRzIHNob3VsZCBiZSB3ZWxsLWZvcm1lZCAoMTQgaHlwaGVucykgdG8gbWF0Y2ggc2NhbGFibGUgZm9udHMuCglTdG9wIHNsYW50IGZpZWxkIGJlY29taW5nIHdpbGRjYXJkZWQgdG9vIGVhcmx5LgoKCSogd2luZG93cy9mb2N1cy5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCShGT0NVU19Td2l0Y2hGb2N1cykgY2hlY2sgZm9yIHBGb2N1c1RvID09IE5VTEwgaW5zdGVhZCBvZiBoRm9jdXNUbz09MC4KCgkqIG9sZS9vbGUybmxzLmM6IEh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJSGFjayBPTEVfR2V0Rm9ybWF0KiB0byByZXR1cm4gc29tZXRoaW5nIGlmIGRhdGVsZW4gPSAwLgoJUmVtb3ZlIHVubmVjZXNzYXJ5IFdJTkFQSSdzLgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpGcmkgRGVjIDExIDE1OjA0OjExIDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3Byb2Nlc3MuaCwgaW5jbHVkZS90bGhlbHAzMi5oLCBpbmNsdWRlL3Rvb2xoZWxwLmgsIG1pc2MvdG9vbGhlbHAuYywgc2NoZWR1bGVyL2szMm9iai5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJUGF0cmljayBTcGlubGVyIDxzcGlubGVyLnBhdHJpY2tAbWF5by5lZHU+CglJbXBsZW1lbnRlZCBDcmVhdGVUb29saGVscDMyU25hcHNob3QsIGluY2x1ZGluZyB0d28gb2YgdGhlIHJvdXRpbmVzCgl1c2luZyBzbmFwc2hvdHMsIFByb2Nlc3MzMkZpcnN0IGFuZCBQcm9jZXNzMzJOZXh0LgoKCSogcmVsYXkzMi9vbGVhdXQzMi5zcGVjLCBpbmNsdWRlL21hcGlkZWZzLmgsIGluY2x1ZGUvb2xlYXV0by5oLCBpbmNsdWRlL3dpbjE2ZHJ2LmgsIGluY2x1ZGUvd2ludHlwZXMuaCwgb2xlL2NvbXBvYmouYywgb2xlL3ZhcmlhbnQuYzoKCUp1c3RpbiBCcmFkZm9yZCA8anVzdGluQHVrYW5zLmVkdT4KCU1vc3Qgb2YgdGhlIGN1cnJlbmN5IHZhcmlhbnQgY29udmVyc2lvbiBmdW5jdGlvbnMgaW1wbGVtZW50ZWQuCglNaW5vciBidWdmaXhlcyBhbmQgaGVhZGVyIHRpZHlpbmcuCgoJKiBNYWtlZmlsZS5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvcmFzYXBpMzIvTWFrZWZpbGUuaW4sIGRsbHMvcmFzYXBpMzIvcmFzYXBpLmMsIGluY2x1ZGUvZGVidWcuaCwgaW5jbHVkZS9kZWJ1Z2RlZnMuaCwgaW5jbHVkZS9yYXMuaCwgaW5jbHVkZS93aW50eXBlcy5oLCByZWxheTMyL3Jhc2FwaTMyLnNwZWM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIFJhc0VudW1Db25uZWN0aW9ucyBzdHViLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLCBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmMsIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUJ1Z2ZpeCBpbiBQYXRoQ29tYmluZTMyW0F8V10uCglWaWV3IG1lbnUgaW4gZXhwbG9yZXIgYW5kIG9uIHJpZ2h0IG1vdXNlIGJ1dHRvbiBpcyB3b3JraW5nIG5vdy4KCgkqIGRsbHMvc2hlbGwzMi9waWRsLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJSW1wbGVtZW50ZWQgIElMR2V0RGlzcGxheU5hbWUuCgoJKiBkbGxzL3NoZWxsMzIvY2xhc3Nlcy5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJU3RhcnRlZCBpbXBsZW1lbnRhdGlvbiBvZiBTaGVsbEV4ZWN1dGVFeDMyQS4KCVNtYWxsIGNoYW5nZXMuCgoJKiBkbGxzL3NoZWxsMzIvLmN2c2lnbm9yZSwgZGxscy9zaGVsbDMyL01ha2VmaWxlLmluLCBkbGxzL3NoZWxsMzIvc2hyZXMucmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCU1vdmVkIG1lbnUgcmVzb3VyY2VzIHRvIHJjLWZpbGUuCgoJKiBpbmNsdWRlL3BlX2ltYWdlLmgsIG9sZS9vbGUybmxzLmMsIHdpbjMyL2ZpbGUuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJVHdvIGRlYnVnIG1lc3NhZ2VzIGNsYXJpZmllZCwgb25lIHVzZWxlc3MgcHJvdG90eXBlIHJlbW92ZWQuCgoJKiBpbmNsdWRlL29sZWF1dG8uaCwgb2xlL3ZhcmlhbnQuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJMjk0IG1pc3NpbmcgV0lOQVBJIGFkZGVkLgoKCSogdG9vbHMvdGVzdHJ1bjogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglLaWxsIHN3YXBwZWQgb3V0ICh3aW5lKSBwcm9jZXNzZXMgdG9vIGFuZCB0cnVuY2F0ZSBkaWZmIGFmdGVyIHNvbWUgeHh4CglsaW5lcy4KCgkqIG9sZS9vbGUybmxzLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJRml4ZWQgU2V0TGFzdEVycm9yIHdpdGggd3JvbmcgdmFsdWUuCgoJKiBtaXNjL3ByaW50ZHJ2LmMsIG9iamVjdHMvZW5obWV0YWZpbGUuYywgZ3JhcGhpY3MvcGFpbnRpbmcuYywgaW5jbHVkZS93aW5kb3dzLmg6CglIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCUltcGxlbWVudCBBYm9ydERvYzE2LCBtb3ZlIEFib3J0RG9jMzIgYW5kIFN0YXJ0RG9jMzJXIHRvCgltaXNjL3ByaW50ZHJ2LmMgYW5kIGZpeCBhIGZldyBjb21waWxlIHdhcm5pbmdzLgoKCSogd2luMzIvb3JkaW5hbHMuYywgd2luZG93cy9kcml2ZXIuYywgd2luZG93cy9tc2dib3guYywgd2luZG93cy9tdWx0aW1vbi5jLCB3aW5kb3dzL3VzZXIuYywgZGxscy9jb21jdGwzMi9hbmltYXRlLmMsIGRsbHMvY29tY3RsMzIvY29tYm9leC5jLCBkbGxzL250ZGxsL250LmMsIGlmMTYzMi90eXBlbGliLnNwZWMsIGluY2x1ZGUvZmlsZS5oLCBsb2FkZXIvZG9zL21vZHVsZS5jLCBtc2Rvcy9pbnQyMS5jLCBvbGUvb2xlMm5scy5jLCBvbGUvdHlwZWxpYi5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJRml4ZWQgYSBidW5jaCBvZiBjb21waWxlciB3YXJuaW5ncy4KCgkqIGZpbGVzL2ZpbGUuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBXaW4zMiBzeW5jaHJvIHRvIEZJTEVzICh1c2VmdWwgb25seSBmb3IgdGVybWluYWwgaGFuZGxlcykuCgpUaHUgRGVjIDEwIDE2OjA0OjUxIDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBvYmplY3RzL2JpdG1hcC5jLCBvYmplY3RzL2RjLmMsIG9iamVjdHMvZW5obWV0YWZpbGUuYywgb2JqZWN0cy9mb250LmMsIG9iamVjdHMvbWV0YWZpbGUuYywgcmVsYXkzMi9jb21jdGwzMi5zcGVjLCByZWxheTMyL2dkaTMyLnNwZWMsIHJlbGF5MzIva2VybmVsMzIuc3BlYywgcmVsYXkzMi9tcHIuc3BlYywgcmVsYXkzMi9zaGVsbDMyLnNwZWMsIHJlbGF5MzIvdGFwaTMyLnNwZWMsIHJlbGF5MzIvdXNlcjMyLnNwZWMsIHJlbGF5MzIvd2luc3Bvb2wuc3BlYywgd2luMzIvY29uc29sZS5jLCB3aW4zMi9rZXJuZWwzMi5jLCB3aW4zMi90aW1lLmMsIHdpbmRvd3MvaW5wdXQuYywgd2luZG93cy9tZXNzYWdlLmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L2luaXQuYywgaWYxNjMyL2RkZW1sLnNwZWMsIGluY2x1ZGUvY29tbWN0cmwuaCwgaW5jbHVkZS9kZGVtbC5oLCBpbmNsdWRlL3NobG9iai5oLCBpbmNsdWRlL3dpbmRvd3MuaCwgaW5jbHVkZS93aW50eXBlcy5oLCBtZW1vcnkvc3RyaW5nLmMsIG1pc2MvZGRlbWwuYywgbWlzYy9uZXR3b3JrLmMsIG1pc2MvcHJpbnRkcnYuYywgbWlzYy90YXBpMzIuYywgY29udHJvbHMvZWRpdC5jLCBkbGxzL2NvbWN0bDMyL01ha2VmaWxlLmluLCBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYywgZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBmaWxlcy9maWxlLmMsIGdyYXBoaWNzL3BhaW50aW5nLmM6CglGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglTeWx2YWluIFN0LUdlcm1haW4gPHN5bHZhaW5AbWFjYWRhbWlhbi5jb20+CglUaHV5IE5ndXllbiA8dGh1eUBtYWNhZGFtaWFuLmNvbT4KCUxvdHMgb2YgbmV3IHN0dWJzLgoKCSogbXNkb3MvdnhkLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJTGV0IHRoZSBTeXN0ZW1fVGltZV9TZWxlY3RvciBjbG9jayB0aWNrLgoKCSogbG9hZGVyL2Rvcy9tb2R1bGUuYywgbWlzY2VtdS9pbnN0ci5jLCBtc2Rvcy9kb3NtZW0uYywgZ3JhcGhpY3MvZGlzcGRpYi5jLCBncmFwaGljcy92Z2EuYywgaW5jbHVkZS9taXNjZW11LmgsIGluY2x1ZGUvdmdhLmg6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFkYXB0ZWQgdG8gQ3JlYXRlU3lzdGVtVGltZXIgaW50ZXJmYWNlIGNoYW5nZS4KCgkqIGlmMTYzMi9zeXN0ZW0uc3BlYywgaWYxNjMyL3RodW5rLmMsIGluY2x1ZGUvY2FsbGJhY2suaCwgaW5jbHVkZS93aW5kb3dzLmgsIG1pc2MvY2FsbGJhY2suYywgbWlzYy9zeXN0ZW0uYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQ2xlYW5lZCB1cCBDcmVhdGVTeXN0ZW1UaW1lciBpbnRlcmZhY2UgZm9yIHVzZSB3aXRoIDMyLWJpdCBjYWxsYmFja3MuCgkoTk9URTogMTYtYml0IGNhbGxiYWNrcyBzdGlsbCBkb24ndCB3b3JrISkKCgkqIHdpbmRvd3MvbWRpLmM6IE5GIFN0ZXZlbnMgPG5vcm1hbkBhcmNhZHkudS1uZXQuY29tPgoJLSBIYW5kbGUgV01fTURJUkVTVE9SRSBieSBjYWxsaW5nIFdNX1NZU0NPTU1BTkQgZm9yCgl0aGUgY2hpbGQgd2luZG93IHNvIHRoYXQgdGhlIHN5c3RlbSBtZW51IGlzIHNldCBjb3JyZWN0bHkuCgktIEluIE1ESUNhc2NhZGUgYW5kIE1ESVRpbGUgdXNlIFdNX01ESVJFU1RPUkUgbWVzc2FnZQoJdG8gcmVzdG9yZSBtYXhpbWl6ZWQgd2luZG93IHNvIHRoYXQgc3lzdGVtIG1lbnUgaXMKCWhhbmRsZWQgY29ycmVjdGx5LgoKCSogaW5jbHVkZS9vbGVhdXRvLmgsIGluY2x1ZGUvd2luZXJyb3IuaCwgb2xlL01ha2VmaWxlLmluLCBvbGUvdHlwZWxpYi5jLCBvbGUvdmFyaWFudC5jLCByZWxheTMyL29sZWF1dDMyLnNwZWM6CglKZWFuLUNsYXVkZSBDb3RlIDxqZWFuLWNsYXVkZUBtYWNhZGFtaWFuLmNvbT4KCUFkZGVkIGltcGxlbWVudGF0aW9uIG9mIHRoZSBWQVJJQU5UIEFQSXMuCgoJKiBmaWxlcy9kcml2ZS5jOiBVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglGaXhlZCBEUklWRV9HZXRGcmVlU3BhY2UgdG8gaGFuZGxlIHNwYWNlID4gNCBHQnl0ZS4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzogQWxleCBQcmllbSA8YWxleHBAc2NpLmt1bi5ubD4KCWhhbmRsZSBUVklGX1RFWFQgYnkgVFJFRVZJRVdfU2V0SXRlbSBhY2NvcmRpbmcgdG8gTVMgZG9jdW1lbnRhdGlvbi4KCWJldHRlciBoYW5kbGluZyBvZiBMUFNUUl9URVhUQ0FMTEJBQ0szMkEKCVRSRUVWSUVXX0dldE5leHR8UHJldkxpc3RJdGVtIGRpZG4ndCBkZXNjZW5kIGludG8gdmlzaWJsZSBjaGlsZCBpdGVtcy4KCgkqIGxvYWRlci9wZV9pbWFnZS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVdhcm4gaWYgdHdvIC5leGVzIGNvbmZsaWN0IHdpdGggZWFjaCBvdGhlciBhbmQgdGhlIHNlY29uZCBkb2VzIG5vdAoJaGF2ZSByZWxvY2F0aW9uIHJlY29yZHMuCgoJKiBtaXNjL2NvbW1kbGcuYzogVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJRml4ZWQgR2V0RmlsZVRpdGxlMzJBIG5vdCBmaWxsaW5nIHVwIGxwVGl0bGUgaWYgbHBGaWxlIGRpZG4ndAoJY29udGFpbiAnLycsJ1xcJyBvciAnOicuCgoJKiBncmFwaGljcy9kZHJhdy5jOiBTdGVwaGVuIENyb3dsZXkgPGNyb3dAZGViaWFuLm9yZz4KCUZpeGVkIGEgcG90ZW50aWFsIGNyYXNoIGlmIGEgdXNhYmxlIHZpZGVvIG1vZGUgaXMgbm90IGRldGVjdGVkLgoKCSogdG9vbHMvbWFrZV9hdXRob3JzOiBTY3JpcHQgdG8gZ2VuZXJhdGUgYXV0aG9ycyBmaWxlcwoKCSogaW5jbHVkZS9kaW5wdXQuaCwgd2luZG93cy9kaW5wdXQuYzogUm9iZXJ0IFJpZ2dzIDxycmlnZ3NAdGVzc2VyLmNvbT4KCVN0dWJzIGZvciBJRGlyZWN0SW5wdXRFZmZlY3QgYW5kIElEaXJlY3RJbnB1dERldmljZTJBIG1ldGhvZHMsCglhcyB3ZWxsIGFzIEFkZFJlZigpLCBHZXRDYXBhYmlsaXRlcygpLCBFbnVtT2JqZWN0cygpLAoJR2V0UHJvcGVydHkoKSwgR2V0T2JqZWN0SW5mbygpLCBHZXREZXZpY2VJbmZvKCksIEluaXRpYWxpemUoKSwKCWFuZCBSdW5Db250cm9sUGFuZWwoKSBmb3IgSURpcmVjdElucHV0RGV2aWNlLgoKCSogZ3JhcGhpY3MvZGRyYXcuYzogUm9iZXJ0IFJpZ2dzIDxycmlnZ3NAdGVzc2VyLmNvbT4KCVNldCB3aW5kb3cgZm9jdXMgaW4gIF9jb21tb25fSURpcmVjdERyYXdfU2V0RGlzcGxheU1vZGUoKS4KCgkqIG11bHRpbWVkaWEvbWNpY2RhLmM6IFJvYmVydCBSaWdncyA8cnJpZ2dzQHRlc3Nlci5jb20+CglBY2NlcHQgTUNJX09QRU4gYW5kIE1DSV9DTE9TRSBtZXNzYWdlcyBpbiBNQ0lDREFVRElPX0RyaXZlclByb2MzMigpLgoKCSogaW5jbHVkZS93aW4uaCwgd2luZG93cy93aW4uYywgd2luZG93cy94MTFkcnYvZXZlbnQuYywgd2luZG93cy94MTFkcnYvd25kLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVJlbW92ZWQgZGVmZXJyZWQgRXhwb3NlIGV2ZW50cyBoYW5kbGluZy4KCgkqIHdpbmRvd3MvZGNlLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJRG9uJ3QgY2xpcCBWaXNSZ24gYWdhaW5zdCBYIGRlc2t0b3AuCgoJKiBsb2FkZXIvbW9kdWxlLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJTG9hZE1vZHVsZTMyL1dpbkV4ZWMzMiBzaG91bGQgcmV0dXJuIDE2LWJpdCBoSW5zdGFuY2UvaFRhc2suCgoJKiBncmFwaGljcy94MTFkcnYveGZvbnQuYzoKCUh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJU2FuaXR5IGNoZWNrIG9uIGZvbnQgc2l6ZS4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglNaXNzaW5nIHBhcmVudGhlc2VzIGFkZGVkLgoKV2VkIERlYyAgOSAxNjozNzowNSAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbG9hZGVyL3Rhc2suYywgcmVsYXkzMi9rZXJuZWwzMi5zcGVjLCB3aW4zMi9jb25zb2xlLmMsIGluY2x1ZGUvd2luY29uLmg6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUVuaGFuY2VkIFdpbjMyIENvbnNvbGUgKFhURVJNKQoJLSBpbnB1dGhhbmRsaW5nIGVuaGFuY2VkIChrZXlzIGFuZCBtb3VzZWNsaWNrcykKCS0gd2luMzIgc3luY2hyb25pemF0aW9uIChwYXJ0aWFsKQoJLSBsb3RzIG9mIGVuaGFuY2VtZW50cyB0byBkcmF3aW5nIGZ1bmN0aW9ucwoJLSBzaW1wbGUvY29tcGxleCBjb25zb2xlIChzaW1wbGUtc3RkaW4vc3Rkb3V0IC0+IGNvbXBsZXgteHRlcm0pLgoKCSogY29uc29sZS9NYWtlZmlsZS5pbiwgY29uc29sZS9nZW5lcmljLmMsIGNvbnNvbGUvaW50ZXJmYWNlLmMsIGNvbnNvbGUvbmN1cnNlcy5jLCBjb25zb2xlL3R0eS5jLCBjb25zb2xlL3h0ZXJtLmMsIGluY2x1ZGUvY29uc29sZS5oOgoJSm9zZXBoIFByYW5ldmljaCA8anByYW5ldmljaEBseWNvcy5jb20+CglBZGQgYSBkcml2ZXIgdG8gb3BlbiB1cCBhIG5ldyB4dGVybSB3aW5kb3cgd2hlbmV2ZXIgY29uc29sZSBvdXRwdXQgaXMKCW5lZWRlZC4gRGVyaXZlZCBmcm9tIGNvbnNvbGUvd2luMzIuYyBidXQgd2UgYXJlIG5vdCB5ZXQgcmVhZHkgdG8gbWVyZ2UKCXRoZSBjb2RlIGNvbXBsZXRlbHkuCgoJKiBncmFwaGljcy94MTFkcnYveGZvbnQuYywgaW5jbHVkZS93aW5kb3dzLmgsIHRvb2xzL2ZudDJiZGYuYzoKCVBhYmxvIFNhcmF0eGFnYSA8c3J0eGdAY2hhbmFlLmFscGhhbmV0LmNoPgoJSW1wcm92ZWQgdGhlIGhhbmRsaW5nIG9mIGZvbnQgZW5jb2RpbmdzLgoKCSogbXNkb3MvZHBtaS5jLCBpbmNsdWRlL21pc2NlbXUuaDogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglJbXBsZW1lbnRlZCBEUE1JIFJNQ0JzIHVzaW5nIHRoZSBET1Mgc3Vic3lzdGVtLCBhbmQgYSBmZXcgb3RoZXIKCWltcHJvdmVtZW50cy4gQWxzbywgc29tZSBzcGVjaWFsLWNhc2VkIHNob3J0Y3V0IHBhdGhzIHdpbGwgYWxsb3cgc29tZQoJY29tbW9uIHJlYWwtbW9kZSBjYWxsL1JNQ0IgY29tYmluYXRpb25zIHRvIHdvcmsgZXZlbiB3aXRob3V0IGNhbGxpbmcgdGhlCglET1Mgc3Vic3lzdGVtLCB0aHVzIGxldHRpbmcgQVBJcyBsaWtlIERPU0FTUEkgd29yayB3aXRob3V0IGFueSBkaXJ0eSBoYWNrcwoJZXZlbiBvbiBwbGF0Zm9ybXMgdGhhdCBjYW5ub3QgdXNlIGRvc21vZC4KCgkqIG11bHRpbWVkaWEvdGltZS5jLCBvbGUvY29tcG9iai5jLCBmaWxlcy9jaGFuZ2UuYywgbG9hZGVyL21vZHVsZS5jLCBtaXNjL2x6ZXhwYW5kLmMsIG1pc2MvbWFpbi5jLCBjb250cm9scy9tZW51LmMsIGNvbnRyb2xzL3Njcm9sbC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTb21lIHVubmVjZXNzYXJ5ICNpbmNsdWRlIGFuZCBtZXNzYWdlcyByZW1vdmVkLgoKCSogb2xlL29sZTJubHMuYzogVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJU29tZSBzbWFsbCBjb3JyZWN0aW9ucyB0byBFbnVtU3lzdGVtTG9jYWxlczMyQVcKClR1ZSBEZWMgIDggMTU6MDY6MzkgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHRvb2xzL21ha2VfWDExd3JhcHBlcnMsIHRzeDExL3RzX3hmODZ2bW9kZS5jLCBncmFwaGljcy9kZHJhdy5jOgoJVHJpZWQgYW5vdGhlciBrbHVkZ2UgZm9yIHRoZSBYbWQuaCBwcm9ibGVtLgoKCSogdHN4MTEvTWFrZWZpbGUuaW4sIHRzeDExL1gxMV9jYWxscywgdHN4MTEvdHNfeGY4NnZtb2RlLmMsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBncmFwaGljcy9kZHJhdy5jLCBpbmNsdWRlL2FjY29uZmlnLmgsIGluY2x1ZGUvY29uZmlnLmguaW4sIGluY2x1ZGUvdHNfeGY4NnZtb2RlLmgsIHRvb2xzL21ha2VfWDExd3JhcHBlcnM6CglTdGVwaGVuIENyb3dsZXkgPGNyb3dAZGViaWFuLm9yZz4KCUFkZGVkIGZ1bGxzY3JlZW4gREdBIHN1cHBvcnQuCgoJKiBtaXNjL21haW4uYzogUGFibG8gU2FyYXR4YWdhIDxzcnR4Z0BjaGFuYWUuYWxwaGFuZXQuY2g+CglGaXhlZCBkdW1teSBlbnRyaWVzIGluIE1BSU5fUGFyc2VMYW5ndWFnZU9wdGlvbigpLgoKCSogaW5jbHVkZS9tbXN5c3RlbS5oLCBtdWx0aW1lZGlhL21jaWNkYS5jOgoJQnJpYW4gR2Vyc3QgPGJnZXJzdEBxdWFyay52cHBsdXMuY29tPgoJUHJvcGVybHkgaW1wbGVtZW50IE1DSV9DREFfU1RBVFVTX1RZUEVfVFJBQ0suCglGaXggYW4gb2ZmLWJ5LW9uZSBidWcgd2l0aCBNQ0lfU1RBVFVTX0xFTkdUSC4KCgkqIHdpbmRvd3MveDExZHJ2L2V2ZW50LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJU3VwZXJmbG91cyBXSU5BUEkgcmVtb3ZlZC4KCgkqIGxvYWRlci9wZV9pbWFnZS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVdhcm4gYWJvdXQgaW52YWxpZCBlbnRyeXBvaW50cyAoY3JlYXRlZCBieSB2aXJ1c2VzKSB3aGljaCByZXN1bHQgaW4KCVdpbmUgY3Jhc2hlcy4KCgkqIGdyYXBoaWNzL2RkcmF3LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQ3JlYXRlIFgxMSBwYWxldHRlIG9uIERpcmVjdERyYXdTdXJmYWNlOjpTZXRQYWxldHRlLCBub3QgYmVmb3JlICh3ZQoJbWlnaHQgbm90IGhhdmUgYW4gWDExIHdpbmRvdyB5ZXQpLgoKCSogbG9hZGVyL21haW4uYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglNb3ZlIFRXRUFLX0luaXQgZnJvbSBVU0VSIHRvIEdESUluaXQuCgoJKiBncmFwaGljcy9wYWludGluZy5jLCBpZjE2MzIvZ2RpLnNwZWMsIGluY2x1ZGUvd2luZG93cy5oLCBtaXNjL3ByaW50ZHJ2LmMsIG1pc2Mvc3Bvb2xlci5jLCByZWxheTMyL2dkaTMyLnNwZWM6CglIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCUZpeCBmb3IgU2V0QWJvcnRQcm9jMTYsIHN0dWIgZm9yIFNldEFib3J0UHJvYzMyIGFuZCB0aWR5IHVwIHNvbWUgb3RoZXIKCXByaW50aW5nIGZ1bmN0aW9ucy4KCgkqIHdpbmRvd3MvZm9jdXMuYzogSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglGaXggaW5jbHVkZXMuCgoJKiBncmFwaGljcy94MTFkcnYvdGV4dC5jOgoJSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglGaXggWDExRFJWX0V4dFRleHRPdXQgZm9yIHJvdGF0ZWQgdGV4dCBpZiBlaXRoZXIgb2YgbHBEeCwgYnJlYWtFeHRyYQoJb3IgY2hhckV4dHJhIGFyZSBub24temVyby4KCgkqIGluY2x1ZGUvQXR0aWMvZ3JhcGhpY3MuaCwgbWlzYy9zaGVsbC5jLCB3aW5kb3dzL0F0dGljL2dyYXBoaWNzLmMsIHdpbmRvd3MvTWFrZWZpbGUuaW4sIHdpbmRvd3Mvbm9uY2xpZW50LmMsIHdpbmRvd3Mvc2Nyb2xsLmMsIGNvbnRyb2xzL2J1dHRvbi5jLCBjb250cm9scy9jb21iby5jLCBjb250cm9scy9kZXNrdG9wLmMsIGNvbnRyb2xzL2ljb250aXRsZS5jLCBjb250cm9scy9tZW51LmMsIGNvbnRyb2xzL3Njcm9sbC5jLCBkbGxzL2NvbWN0bDMyL3VwZG93bi5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9ncmFwaGljcy5jLCBncmFwaGljcy94MTFkcnYvZ3JhcGhpY3MuYzoKCUh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJUmVwbGFjZSBHUkFQSF8gZnVuY3Rpb25zIHdpdGggV2luIFNESyBlcXVpdmFsZW50cy4KCk1vbiBEZWMgIDcgMTY6MjM6NDIgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGZpbGVzL2Rvc19mcy5jOiBBbGV4YW5kZXIgTGFyc3NvbiA8YWxsYUBseXNhdG9yLmxpdS5zZT4KCVJldmVydGVkIHByZXZpb3VzIHBhdGNoLgoKCSogaW5jbHVkZS9kb3NleGUuaDogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglEb24ndCBkZWZpbmUgTVpfU1VQUE9SVEVEIG9uIG5vbi1pMzg2IHBsYXRmb3Jtcy4KCgkqIGxvYWRlci9kb3MvbW9kdWxlLmMsIG1zZG9zL2RwbWkuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglGaXhlZCBEUE1JX0NhbGxSTVByb2MgKEkgdGhpbmspLgoKCSogbWlzYy9uZXR3b3JrLmMsIHJlbGF5MzIvbXByLnNwZWM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVN0dWIgZm9yIE5QU0dldFByb3ZpZGVySGFuZGxlQS4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6IEJyaWFuIEdlcnN0IDxiZ2Vyc3RAcXVhcmsudnBwbHVzLmNvbT4KCVRoZSBzY2FuY29kZSBXaW5kb3dzIHNlbmQgZm9yIGV4dGVuZGVkIGtleXMgaXMgdGhlIHNjYW5jb2RlIG9mIHRoZQoJdW5leHRlbmRlZCBlcXVpdmFsZW50IG9mIHRoZSBrZXksIHBsdXMgdGhlIGV4dGVuZGVkIGZsYWcuCgoJKiBkbGxzL3dpbmFzcGkvd2luYXNwaTE2LmM6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglGaXhlZCBhIHJlYWwgbW9kZSBwcm9ibGVtLgoKCSogbG9hZGVyL25lL21vZHVsZS5jOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJTkVfTU9EVUxFLnN0YWNrX3NpemUgd2FzIHNldCB0byBhIHJpZGljdWxvdXNseSBzbWFsbCB2YWx1ZSBvZiA1LgoJV2luZG93cyBzZXRzIDB4MTQwMCBpbiBzdWNoIGNhc2VzIGZvciBwcm9ncmFtcy4KCgkqIGNvbnRyb2xzL3N0YXRpYy5jOiBIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCVdlIGRvbid0IHlldCB3YW50IHRoZSBzdGF0aWMgY29udHJvbCB0byBjYWxsIERlc3Ryb3lJY29uLgoKCSogd2luZG93cy9jbGFzcy5jOiBORiBTdGV2ZW5zIDxub3JtYW5AYXJjYWR5LnUtbmV0LmNvbT4KCUFkZGVkIGNhc2UgZm9yIEdDV19BVE9NIGludCBHZXRDbGFzc0xvbmczMkEuCgoJKiBtaXNjL25ldHdvcmsuYywgcmVsYXkzMi9tcHIuc3BlYzogR2FlbCBkZSBDaGFsZW5kYXIgPGdhZWxAbGltc2kuZnI+CglTdHViIGZvciBXTmV0T3BlbkVudW0zMlcuCgoJKiBtdWx0aW1lZGlhL2Rzb3VuZC5jLCByZWxheTMyL2Rzb3VuZC5zcGVjOgoJUm9iZXJ0IFJpZ2dzIDxycmlnZ3NAdGVzc2VyLmNvbT4KCU1vcmUgZ2VuZXJhbCBjb2RlIGNsZWFudXAgZm9yIHJlYWRhYmlsaXR5LgoJQSBmZXcgbW9yZSBwYXJhbWV0ZXIgdmFsaWRhdGlvbiBjaGVja3MuCglSZXR1cm4gRFNfT0sgcmF0aGVyIHRoYW4gMCBpbiBhIG51bWJlciBvZiBmdW5jdGlvbnMuCglGaXhlZCBwcmltYXJ5IGJ1ZmZlciByZWYgY291bnQgYnVnIGluIENyZWF0ZVNvdW5kQnVmZmVyKCkuCglIYW5kbGUgMS0zIGJ5dGUgc291bmQgZnJhZ21lbnRzIHRoYXQgd291bGQgY2F1c2UgYnVmZmVyIG92ZXJydW5zLgoJQ2xlYXIgcHJpbWFyeSBidWZmZXIgd2l0aCBhIG5ldXRyYWwgdmFsdWUgaW5zdGVhZCBvZiBhbHdheXMgMAoJKGJlY2F1c2UgMTI4IGlzIG5ldXRyYWwgZm9yIDgtYml0IHNvdW5kKS4KCUZpeCBidWcgd2l0aCBtaXhpbmcgOC1iaXQgc291bmQgaW50byB0aGUgcHJpbWFyeSBidWZmZXIuCglCcm9rZSBvdXQgdGhlIG1haW4gYmxvY2sgaW4gRFNPVU5EX3RocmVhZCgpIHRvIGFub3RoZXIgZnVuY3Rpb24gZm9yCglyZWFkYWJpbGl0eS4KCUhhbmRsZSAibm8gYXVkaW8iIGFuZCAiYXVkaW8gYnVzeSIgY2FzZXMgcHJvcGVybHkgd2hlbiBpbml0aWFsaXppbmcKCWRzb3VuZC4gUmVuYW1lIERsbENhblVubG9hZE5vdygpIHRvIERTT1VORF9EbGxDYW5VbmxvYWROb3coKS4KCgkqIGRlYnVnZ2VyL2hhc2guYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglNYWRlIHZhcmlhYmxlcyBvcHRpbWl6ZWQgaW50byByZWdpc3RlcnMgYWNjZXNzaWJsZS4KCgkqIHJlbGF5MzIvdXNlcjMyLnNwZWM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglUaGUgc3BlYyBkZWZpbml0aW9uIGZvciBNb25pdG9yRnJvbVdpbmRvdyB3YXMgd3JvbmcuCgoJKiBtc2Rvcy9pbnQyMS5jOiBTdGVmYW4gTGVpY2h0ZXIgPHNsZUBjYW1saW5lLmNvbT4KCUZpbGUgaGFuZGxlIGJ1ZyBmaXguCgoJKiBkb2N1bWVudGF0aW9uL2NvbW1vbl9jb250cm9sczogRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUFkZGVkIHBhcmFncmFwaCBhYm91dCBkaWZmZXJlbnQgZGxsIHZlcnNpb25zIGFuZCBzdHJ1Y3R1cmUgc2l6ZXMuCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmg6IEVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglBZGRlZCBtaXNzaW5nIFRPT0xJTkZPIHN0cnVjdHVyZS4KCgkqIG11bHRpbWVkaWEvbW1zeXN0ZW0uYzogQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJRml4ZWQgYSBoZWFwIGJ1Zy4KCgkqIGxvYWRlci90YXNrLmMsIG1lbW9yeS9sb2NhbC5jLCBtZW1vcnkvc2VsZWN0b3IuYywgbWlzYy9jYWxsYmFjay5jLCBtc2Rvcy9kcG1pLmMsIG1zZG9zL2ludDQxLmMsIG1zZG9zL3Z4ZC5jLCBpZjE2MzIva2VybmVsLnNwZWMsIGlmMTYzMi90aHVuay5jLCBpbmNsdWRlL2NhbGxiYWNrLmgsIGluY2x1ZGUvbGR0LmgsIGluY2x1ZGUvd2luZG93cy5oOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJLSBTZXZlcmFsIGtlcm5lbC5zcGVjIHJldHVybiB0eXBlIG1pc21hdGNoIGZpeGVzCgktIFtHU11ldFNlbGVjdG9yQmFzZSBXaW4zMnMgb2Zmc2V0IHN1cHBvcnQgYnkgVWxyaWNoIFdlaWdhbmQgKHRoYW5rcyB2Lm0uICEhKQoJLSBNb3ZlIEFwcFRvV2luZS9XaW5lVG9BcHAgbWFjcm9zIGFzIFczMlNfQVBQMldJTkUgZXRjLiB0byBsZHQuaAoJLSBMb2NhbE5vdGlmeSgpIGJhc2ljIHN1cHBvcnQKCS0gRml4ZXMgZm9yIGxvY2FsIGhlYXAgaGFuZGxpbmcgd2l0aCBoZWFwIGhhbmRsZXMgY3JlYXRlZCBieSBWaXJ0dWFsKigpCgoJKiBncmFwaGljcy94MTFkcnYveGZvbnQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiAtbWljcm9zb2Z0LXN5bWJvbCBlbmNvZGluZyB3YXMgbm90IHJlY29nbml6ZWQuCgoJKiB3aW5kb3dzL3dpbi5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogV0lOX1Jlc2V0UXVldWVXaW5kb3dzIHdvdWxkIHNraXAgc29tZSB3aW5kb3dzLgoKCSogdG9vbHMvYnVpbGQuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBbGxvdyByZWN1cnNpdmVseSByZWVudGVyaW5nIENBTEwzMl9MYXJnZVN0YWNrLgoKCSogaW5jbHVkZS90dHlkcnYuaCwgd2luZG93cy90dHlkcnYvLmN2c2lnbm9yZSwgd2luZG93cy90dHlkcnYvTWFrZWZpbGUuaW4sIHdpbmRvd3MvdHR5ZHJ2L2NsaXBib2FyZC5jLCB3aW5kb3dzL3R0eWRydi9ldmVudC5jLCB3aW5kb3dzL3R0eWRydi9pbml0LmMsIHdpbmRvd3MvdHR5ZHJ2L2tleWJvYXJkLmMsIHdpbmRvd3MvdHR5ZHJ2L21vdXNlLmMsIHdpbmRvd3MvdHR5ZHJ2L3duZC5jLCBNYWtlZmlsZS5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW46CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUFkZGVkIHRoZSBuZXcgVFRZIGRyaXZlci4KCgkqIGluY2x1ZGUvY2xpcGJvYXJkLmgsIGluY2x1ZGUva2V5Ym9hcmQuaCwgaW5jbHVkZS9tZXNzYWdlLmgsIGluY2x1ZGUvd2luLmgsIGluY2x1ZGUveDExZHJ2LmgsIHdpbmRvd3MvY2xpcGJvYXJkLmMsIHdpbmRvd3MvZGVmd25kLmMsIHdpbmRvd3MvZGlucHV0LmMsIHdpbmRvd3MvZGlzcGxheS5jLCB3aW5kb3dzL2V2ZW50LmMsIHdpbmRvd3MvZm9jdXMuYywgd2luZG93cy9rZXlib2FyZC5jLCB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy9ub25jbGllbnQuYywgd2luZG93cy93aW4uYywgd2luZG93cy93aW5wb3MuYywgd2luZG93cy94MTFkcnYvTWFrZWZpbGUuaW4sIHdpbmRvd3MveDExZHJ2L2NsaXBib2FyZC5jLCB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCB3aW5kb3dzL3gxMWRydi9pbml0LmMsIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmMsIHdpbmRvd3MveDExZHJ2L21vdXNlLmMsIHdpbmRvd3MveDExZHJ2L3duZC5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglNb3ZlZCBtb3JlIGNvZGUgdG8gdGhlIFgxMSBkcml2ZXIuCgpUaHUgRGVjICAzIDE2OjI5OjU2IDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBtc2Rvcy9pbnQxMC5jLCBtc2Rvcy9pbnQxNi5jLCBtc2Rvcy9pbnQyMS5jLCBtc2Rvcy9pbnQyOS5jOgoJSm9zZXBoIFByYW5ldmljaCA8anByYW5ldmljaEBseWNvcy5jb20+CglDYWxsIHRoZSBuZXcgY29uc29sZSBkcml2ZXIgZm9yIHNvbWUgcm91dGluZXMuIFRoaXMgaXMgbm90IGNvbXBsZXRlbHkKCWRvbmUgeWV0IGFuZCBtb3JlIGZvciB0ZXN0aW5nIHB1cnBvc2VzLgoKV2VkIERlYyAgMiAxOTo1ODowOSAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29uZmlndXJlLmluLCBjb25zb2xlLy5jdnNpZ25vcmUsIGNvbnNvbGUvTWFrZWZpbGUuaW4sIGNvbnNvbGUvZ2VuZXJpYy5jLCBjb25zb2xlL2ludGVyZmFjZS5jLCBjb25zb2xlL25jdXJzZXMuYywgY29uc29sZS90dHkuYywgaW5jbHVkZS9hY2NvbmZpZy5oLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBpbmNsdWRlL2NvbnNvbGUuaCwgaW5jbHVkZS93aW5udC5oLCBsb2FkZXIvbWFpbi5jLCBtaXNjL21haW4uYywgTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZToKCUpvc2VwaCBQcmFuZXZpY2ggPGpwcmFuZXZpY2hAbHljb3MuY29tPgoJQWRkZWQgY29uc29sZSBzdXBwb3J0LgoKCSogZ3JhcGhpY3MveDExZHJ2L29lbWJpdG1hcC5jLCBpbmNsdWRlL2JpdG1hcC5oLCBpbmNsdWRlL2dkaS5oLCBpbmNsdWRlL3gxMWRydi5oLCBsb2FkZXIvbWFpbi5jLCBvYmplY3RzL0F0dGljL29lbWJpdG1hcC5jLCBvYmplY3RzL01ha2VmaWxlLmluLCBvYmplY3RzL2JpdG1hcC5jLCBvYmplY3RzL2N1cnNvcmljb24uYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvaW5pdC5jLCBncmFwaGljcy9wc2Rydi9pbml0LmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L2luaXQuYywgZ3JhcGhpY3Mvd2luMTZkcnYvcGVuLmMsIGdyYXBoaWNzL3gxMWRydi9NYWtlZmlsZS5pbiwgZ3JhcGhpY3MveDExZHJ2L2luaXQuYzoKCUh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJTW92ZSBPRU0gcmVzb3VyY2VzIHRvIHRoZSB4MTFkcnYuCgoJKiBmaWxlcy9kb3NfZnMuYzogQWxleGFuZGVyIExhcnNzb24gPGFsbGFAbHlzYXRvci5saXUuc2U+CglPcGVuaW5nIGEgZmlsZSBpbiBhIGRpcmVjdG9yeSB3aGljaCBkb2Vzbid0IGV4aXN0IHJldHVybnMKCUVSUk9SX0ZJTEVfTk9UX0ZPVU5EIGluc3RlYWQgb2YgRVJST1JfUEFUSF9OT1RfRk9VTkQuCgoJKiBtZW1vcnkvYXRvbS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUhhbmRsZSBhdG9tcyAiIyBub24gbnVtYmVyIiAob3JhY2xlIGNsaWVudCkuCgpUdWUgRGVjICAxIDE2OjIzOjE5IDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpZjE2MzIva2VybmVsLnNwZWMsIG1pc2MvZXJyb3IuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJUmVuYW1lZCBLRVJORUwuMzI3IHRvIEhhbmRsZVBhcmFtRXJyb3IgKGFzIGluICdVbmRvYy4gV2luZG93cycpLgoJRml4ZWQgd3Jvbmcgb3JkaW5hbHMvcHJvdG90eXBlIGZvciBNYXBQcm9jZXNzSGFuZGxlL0dldE1vZHVsZUZpbGVOYW1lMzIuCglBZGRlZCBuYW1lcyBmb3Igc29tZSB1bmRvY3VtZW50ZWQgZXhwb3J0cy4KCgkqIG1lbW9yeS9nbG9iYWwuYywgaWYxNjMyL3RodW5rLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUltcGxlbWVudGVkIEdsb2JhbENoYW5nZUxvY2tDb3VudCAoS0VSTkVMLjM2NSkuCgoJKiBpZjE2MzIvdG9vbGhlbHAuc3BlYywgaW5jbHVkZS90b29saGVscC5oLCBtZW1vcnkvaGVhcC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglJbXBsZW1lbnRlZCBMb2NhbDMySW5mbywgc3R1YnMgZm9yIExvY2FsMzJGaXJzdC9OZXh0IChLRVJORUwuNDQ0LTQ0NikuCgoJKiBpZjE2MzIvZ2RpLnNwZWMsIG9iamVjdHMvZ2Rpb2JqLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUltcGxlbWVudGVkIEdkaUZyZWVSZXNvdXJjZXMgKEdESS42MDkpLgoKCSogaW5jbHVkZS9kc291bmQuaCwgbXVsdGltZWRpYS9kc291bmQuYzoKCVJvYmVydCBSaWdncyA8cnJpZ2dzQHRlc3Nlci5jb20+CglGaXhlZCA4LWJpdCBXQVYgZm9ybWF0IGhhbmRsaW5nIChpdCBpcyB1bnNpZ25lZCBkYXRhKS4KCUZpeGVkIG9mZi1ieS1vbmUgY2hlY2tzIGZvciBidWZmZXIgd3JhcC4KCUluY3JlbWVudCByZWYgY291bnQgZm9yIHByaW1hcnkgYnVmZmVyIGluIENyZWF0ZVNvdW5kQnVmZmVyKCkuCglBZGRlZCBEU0JQTl9PRkZTRVRTVE9QIHN1cHBvcnQgdG8gcG9zaXRpb24gbm90aWZpY2F0aW9uIGNvZGUuCglMb3RzIG9mIG1pbm9yIHBhcmFtZXRlciB2YWxpZGF0aW9uIGNoZWNrcy4KCVN0dWJzIGZvcjogSURpcmVjdFNvdW5kX2luaXRpYWxpemUoKSwgSURpcmVjdFNvdW5kX0NvbXBhY3QoKSwKCWFuZCBJRGlyZWN0U291bmRfR2V0U3BlYWtlckNvbmZpZygpLgoJRml4ZWQgZnJlcSBzaGlmdGluZyB3aXRoIDE2LWJpdCBkYXRhIHByb2JsZW0sIGZpeGVkIDhiaXQ8LT4xNmJpdAoJY29udmVyc2lvbi4KCUxvdHMgb2YgdGhyZWFkIGxvY2tpbmcgZm9yIERpcmVjdFNvdW5kIGJ1ZmZlcnMuCglEZWFsbG9jIHByaW1hcnkgYnVmZmVyIHdoZW4gZHNvdW5kIGlzIGRlYWxsb2NhdGVkLgoKCSogaW5jbHVkZS93aW50eXBlcy5oOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQWRkZWQgdGhlIFRFWFQoKSBhbmQgTUFLRUxSRVNVTFQoKSBkZWZpbml0aW9ucy4KCgkqIHdpbmRvd3MvcXVldWUuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglTbWFsbCBjaGFuZ2UuCgoJKiBNYWtlZmlsZS5pbjogSmFtZXMgSnVyYW4gPGpyajEyMEBwc3UuZWR1PgoJUmV2ZXJ0IG1pc2d1aWRlZCBjaGFuZ2UgdG8gaW5zdGFsbF9saWIgdGhhdCBicm9rZSAtZGlzYWJsZS1saWIKCWNvbmZpZ3VyZSBvcHRpb24uCgoJKiBtaXNjL21haW4uYywgaW5jbHVkZS93aW5kb3dzLmg6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCU5ldyBwYXJhbWV0ZXIgU1BJX0dFVERSQUdGVUxMV0lORE9XLgoJT25lIG1pc3NpbmcgYnJlYWsgaW4gU1BJX0dFVERSQUdGVUxMV0lORE9XLgoKCSogZGxscy9zaGVsbDMyL3BpZGwuYywgcmVsYXkzMi9zaGVsbDMyLnNwZWM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCU5ldyBmdW5jdGlvbnMgSUxHbG9iYWxDbG9uZS9JTEdsb2JhbEZyZWUuCgoJKiBkb2N1bWVudGF0aW9uL3ByaW50aW5nOgoJSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglBZGQgYSBub3RlIGFib3V0IFdpblByaW50ZXJzLgoKCSogcmVsYXkzMi9udGRsbC5zcGVjLCByZWxheTMyL29sZTMyLnNwZWMsIHJlbGF5MzIvdXNlcjMyLnNwZWM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIHNvbWUgc3R1YnMsIHNvbWUgcHRyLT5zdHIgY29udmVyc2lvbnMuCgoJKiBncmFwaGljcy9kZHJhdy5jLCBpbmNsdWRlL2RkcmF3LmgsIHJlbGF5MzIvZGRyYXcuc3BlYzoKCUxpb25lbCBVbG1lciA8dWxtZXJAZGlyZWN0cHJvdmlkZXIubmV0PgoJLSBhZGRlZCBkZWZpbml0aW9uIG9mIERpcmVjdERyYXdDcmVhdGVDbGlwcGVyLgoJLSBtb3JlIHZlcnNhdGlsZSBzdXBwb3J0IG9mIHN1cmZhY2VzIC8gYmV0dGVyIHN1cmZhY2UgZGVzY3JpcHRpb24gc3VwcG9ydC4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jLCBkbGxzL3NoZWxsMzIvc2hsdmlldy5jLCBpbmNsdWRlL3NoZWxsLmgsIHJlbGF5MzIvc2hlbGwzMi5zcGVjOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglGaXhlZCB3cm9uZyBwYXJhbWV0ZXIgY291bnQgZm9yIFNIQ2hhbmdlTm90aWZ5RGVyZWdpc3RlciwgIFNIRnJlZVVudXNlZExpYnJhcmllcy4KCU5ldyBmdW5jdGlvbnMgUGFyc2VGaWVsZCwgR2V0L1NldEluc3RhbmNlRXhwbG9yZXIoKSwgUGF0aElzVU5DLCBQYXRoSXNSZWxhdGl2ZS4KCVN0dWJzIFNIV2FpdEZvckZpbGVUb09wZW4sIFBhdGhGaW5kT25QYXRoLgoKCSogcmVsYXkzMi91c2VyMzIuc3BlYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglTbWFsbCBjaGFuZ2VzIHRvIHByaW50IHRoZSBzdHJpbmdzIGluIHRoZSByZWxheS10cmFjZS4KCgkqIHdpbmRvd3MvY2xhc3MuYzogTkYgU3RldmVucyA8bm9ybWFuQGFyY2FkeS51LW5ldC5jb20+CglUaGUgY2xhc3MgbmFtZSBuZWVkcyB0byBiZSBjb252ZXJ0ZWQgdG8gYSBnZXRwdHIuCgoJKiBtdWx0aW1lZGlhL21jaW1pZGkuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBtZW1vcnkvc3RhdHVzIHJlY292ZXJ5IHdoZW4gZXJyb3Igb2NjdXJlZCBpbiBNSURJX21jaU9wZW4uCglGaXhlZCBzdXBwb3J0IGZvciBSTUlEIGZpbGVzIGluIE1JRElfbWNpT3Blbi4KCUZpeGVkIGJ1ZyBmb3IgcGxheWluZyBNSURJIGZpbGVzIHdpdGggdGVtcG8gY2hhbmdlcy4gU291bmQgb3V0cHV0IGlzCglub3cgY29ycmVjdCwgYnV0IGxlbmd0aCBvZiB0cmFja3MgKGFuZCB0aGVyZWZvcmUgb2Ygd2hvbGUgZmlsZSkgaXMgbm90Cgljb3JyZWN0LgoJQ2hhbmdlZCBlcnJvciB2YWx1ZXMgKElOVEVSTkFMID0+IElOVkFMSURfRklMRSkgd2hlbiBmaWxlIGNhbm5vdCBiZSByZWFkLgoKCSogbXVsdGltZWRpYS9tY2l3YXZlLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgbWVtb3J5L3N0YXR1cyByZWNvdmVyeSB3aGVuIGVycm9yIG9jY3VyZWQgaW4gV0FWRV9tY2lPcGVuLgoJQ2hhbmdlZCBlcnJvciB2YWx1ZXMgKElOVEVSTkFMID0+IElOVkFMSURfRklMRSkgd2hlbiBmaWxlIGNhbm5vdAoJYmUgcmVhZC4KCgkqIG11bHRpbWVkaWEvbXN2aWRlby5jLCByZWxheTMyL21zdmZ3MzIuc3BlYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJU3R1YnMgZm9yIE1DSVduZENyZWF0ZVtBfFddLgoKCSogbWlzYy92ZXIuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglWZXJRdWVyeVZhbHVlLCBidWdmaXg6IHdlIGNhbnQgY29udmVydCBiaW5hcnkgZGF0YSB3aXRoCglIRUFQX3N0cmR1cFd0b0EgKFxWYXJGaWxlSW5mb1xUcmFuc2xhdGlvbikuCgpNb24gTm92IDMwIDE3OjQxOjE3IDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiByZWxheTMyL2FkdmFwaTMyLnNwZWMsIHdpbjMyL2FkdmFwaS5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglTdHVicyBmb3IgRW51bVNlcnZpY2VTdGF0dXMzMiwgc21hbGwgY2hhbmdlcy4KCgkqIG9iamVjdHMvY3Vyc29yaWNvbi5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUxvYWQgbm93IHRoZSBmaXJzdCBpY29uIGZyb20gdGhlICouYW5pIGZpbGUgaW5zdGVhZCBvZiBjcmFzaGluZy4KCgkqIG1pc2NlbXUvbWFpbi5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeCB3YXJuaW5ncyBpbiBtaXNjZW11L21haW4uYy4KCgkqIGluY2x1ZGUvd2luZG93cy5oOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJLSBhZGRlZCBzb21lIGRlZmluZXMgYXJvdW5kIHRoZSBDb21tUG9ydCAoUFVSR0VfWFhYIGFuZCBNU19YWFhfT04pCgktIGFkZGVkIHRoZSBETEdURU1QTEFURSBhbmQgRExHSVRFTVRFTVBMQVRFIHN0cnVjdHVyZXMKCS0gYWRkZWQgdGhlIGZ1bmN0aW9uIGRlZmluaXRpb24gZm9yIFN0YXJ0UGFnZSxFbmRQYWdlLEdldENvbW1NYXNrLAoJCUdldENvbW1Nb2RlbVN0YXR1cyBhbmQgUHVyZ0NvbW0sV2FpdENvbW1FdmVudC4KCgkqIHdpbmRvd3MvZGVmd25kLmM6IFBhdWwgUXVpbm4gPFBhdWxRQGNvcmVsLmNvbT4KCUZpeGVkIGFjdGl2YXRpb24vRm9jdXMgbWVzc2FnZSBvcmRlciBwcm9ibGVtIHdoZW4gY3JlYXRpbmcgYSBuZXcgSFdORC4KCgkqIHdpbmRvd3Mvd2lucG9zLmMsIGlmMTYzMi91c2VyLnNwZWMsIGluY2x1ZGUvd2luZG93cy5oLCByZWxheTMyL3VzZXIzMi5zcGVjOgoJUGF1bCBRdWlubiA8UGF1bFFAY29yZWwuY29tPgoJSW1wbGVtZW50YXRpb24gb2YgQ2hpbGRXaW5kb3dGcm9tUG9pbnRFeCBmdW5jdGlvbnMuCgoJKiBtaXNjL3JlZ2lzdHJ5LmM6IEdhdnJpZWwgU3RhdGUgPGdhdnJpZWxzQGNvcmVsLmNvbT4KCUZpeGVkIHJlZ2lzdHJ5IHF1ZXJ5IGVycm9yIHZhbHVlOiBub3cgcmV0dXJucyBFUlJPUl9GSUxFX05PVF9GT1VORC4KCgkqIG9iamVjdHMvYml0bWFwLmMsIG9iamVjdHMvY3Vyc29yaWNvbi5jLCBvYmplY3RzL2RpYi5jLCBvYmplY3RzL3BhbGV0dGUuYzoKCUh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJR2V0U3lzdGVtUGFsZXR0ZUVudHJpZXMgcmV0dXJucyBwYWxldHRlIHNpemUgaWYgZW50cmllcz09TlVMTC4KCVVzZSB0aGlzIGluc3RlYWQgb2YgQ09MT1JfR2V0U3lzdGVtUGFsZXR0ZVNpemUuCgoJKiByZWxheTMyL2Rzb3VuZC5zcGVjLCBtdWx0aW1lZGlhL2Rzb3VuZC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglJbXBsZW1lbnRlZCBjbGFzcyBmYWN0b3J5IGZvciBkc291bmQuCgoJKiByZWxheTMyL2tlcm5lbDMyLnNwZWMsIG1pc2MvY29tbS5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJLSBmaXhlZCBhIG1pbmltYWwgZXJyb3IgaW4gR2V0Q29tbU1hc2sgZGVmaW5pdGlvbi4KCS0gYWRkcyBzdHVicyBmb3IgR2V0Q29tbU1vZGVtU3RhdHVzIGFuZCBXYWl0Q29tbUV2ZW50LgoKCSogaW5jbHVkZS94bWFsbG9jLmgsIGxpYnJhcnkvd2luZXN0dWIuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUZpeGVzIGZvciBDKysgV2luZWxpYiBjb21waWxhdGlvbi4KCgkqIG9sZS9jb21wb2JqLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQnVnZml4OiBzZWNvbmQgUmVnT3BlbktleSBzaG91bGQgdXNlIENMU0lEa2V5IGluc3RlYWQgb2YgSEtFWV9DTEFTU0VTX1JPT1QuCgpGcmkgTm92IDI3IDE2OjA2OjA4IDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBCVUdTLCBkb2N1bWVudGF0aW9uL2J1Z3JlcG9ydHMsIGRvY3VtZW50YXRpb24vZGVidWdnaW5nLCBkb2N1bWVudGF0aW9uL25vLXdpbmRvd3MsIGRvY3VtZW50YXRpb24vd2luZS5tYW46CglKYW1lcyBKdXJhbiA8anJqMTIwQHBzdS5lZHU+CglEb2N1bWVudGF0aW9uIHVwZGF0ZXMuCgoJKiBNYWtlZmlsZS5pbjogSmFtZXMgSnVyYW4gPGpyajEyMEBwc3UuZWR1PgoJRml4ZWQgJ21ha2UgaW5zdGFsbCcgdG8gcmVhbGx5IGNoZWNrIGZvciBsaWJ3aW5lLmEgYmVmb3JlIGluc3RhbGxpbmcKCWl0LgoKCSogZ3JhcGhpY3MvZGRyYXcuYywgaW5jbHVkZS9vcHRpb25zLmgsIG1pc2MvbWFpbi5jOgoJU3RlcGhlbiBDcm93bGV5IDxjcm93QGRlYmlhbi5vcmc+CglBZGRlZCBhIG5ldyBjbWRsaW5lIHN3aXRjaCB0byBkaXNhYmxlIFhGODYgREdBIEV4dGVuc2lvbnMsIC1ub2RnYS4KCgkqIGZpbGVzL2RyaXZlLmM6IEFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUltcHJvdmVkIEdldERpc2tGcmVlU3BhY2UzMkEoKS4KClRodSBOb3YgMjYgMTY6MzI6MDAgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3Mvd2luLmM6IEh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJUmVtb3ZlIGluY2x1ZGVkIGNvbG9yLmguCgoJKiBsb2FkZXIvcGVfaW1hZ2UuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglSZW1vdmUgdW5uZWNlc3NhcnkgY2hlY2sgZm9yIGVudHJ5cG9pbnQgYWRkcmVzcyAodGVzdCBiaW5hcnkgd2FzCglpbmZlY3RlZCBieSBhIHZpcnVzIHdoaWNoIHVzZXMgaW52YWxpZCBQRSBsb2FkaW5nIHN0dWZmKS4KCgkqIGdyYXBoaWNzL3BhaW50aW5nLmMsIHJlbGF5MzIvZ2RpMzIuc3BlYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUFkZGVkIHN0dWJzIGZvciBTdGFydHBhZ2UgYW5kIEVuZFBhZ2UuCgoJKiBpZjE2MzIvdGh1bmsuYywgb2JqZWN0cy9kYy5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglSZW1vdmVkIHNvbWUgdW5uZWNlc3NhcnkgRklYTUUgb3V0cHV0cy4KCgkqIGlmMTYzMi9rZXJuZWwuc3BlYywgbG9hZGVyL3Rhc2suYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJSW1wbGVtZW50ZWQgS0VSTkVMLjYwMiBhbmQgc3R1YiBmb3IgS0VSTkVMLjQ5MC4KCgkqIG9sZS9vbGUybmxzLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBEbyAqbm90KiB6ZXJvIG91dCBvdXRwdXQgYnVmZmVyIGluIEdldE51bWJlckZvcm1hdDMyW0FXXS4KCldlZCBOb3YgMjUgMTg6MTU6NTMgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG9sZS9ubHMvZ3JjLm5scywgb2xlL25scy9za3kubmxzLCBvbGUvbmxzL3RoYS5ubHMsIG9sZS9ubHMvdHJrLm5scywgb2xlL29sZTJubHMuYzoKCVBhYmxvIFNhcmF0eGFnYSA8c3J0eGdAY2hhbmFlLmFscGhhbmV0LmNoPgoJU21hbGwgZml4ZXMuCgoJKiBsb2FkZXIvbmUvcmVzb3VyY2UuYywgaW5jbHVkZS9tb2R1bGUuaCwgbG9hZGVyL3Jlc291cmNlLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCU1vdmVkIC4uLlJlc291cmNlMTYgcm91dGluZXMgdG8gbG9hZGVyL3Jlc291cmNlLmMuCglJbXBsZW1lbnRlZCBhY2Nlc3NpbmcgUEUtZmlsZSByZXNvdXJjZXMgd2l0aCAxNi1iaXQgcmVzb3VyY2Ugcm91dGluZXMuCgoJKiBpZjE2MzIva2VybmVsLnNwZWMsIGxvYWRlci9uZS9NYWtlZmlsZS5pbiwgbG9hZGVyL25lL2NvbnZlcnQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJSW1wbGVtZW50YXRpb24gb2YgUEUtPk5FIHJlc291cmNlIGNvbnZlcnNpb24gcm91dGluZXMgKEtFUk5FTC42MTUtNjE4KS4KCgkqIGluY2x1ZGUvb2xlYXV0by5oLCBvbGUvb2xlMmRpc3AuYywgcmVsYXkzMi9vbGVhdXQzMi5zcGVjOgoJRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50ZWQgMyBtZXRob2RzOiBTeXNBbGxvY1N0cmluZ0xlbigpLCBTeXNSZUFsbG9jU3RyaW5nTGVuKCkKCWFuZCBTeXNTdHJpbmdMZW4oKS4gRW5zdXJlIHRoYXQgdGhlIEJTVFIgb2JqZWN0cyB3ZXJlIGFsbG9jYXRlZAoJYWNjb3JkaW5nIHRvIHRoZSBXaW5kb3dzIGRvY3VtZW50YXRpb24uCgoJKiBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW4sIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYywgZGxscy9zaGVsbDMyL3NobHZpZXcuYywgaW5jbHVkZS9zaGVsbC5oLCByZWxheTMyL3NoZWxsMzIuc3BlYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTW92ZWQgZXhpc3RpbmcgcGF0aCAtIGZ1bmN0aW9ucyB0byBzaGVsbHBhdGNoLmMuCglOZXc6IFBhdGhSZW1vdmVCbGFua3MzMkF8VywgIFBhdGhNYXRjaFNwZWMzMkF8VywKCVBhdGhTZXREbGdJdGVtUGF0aDMyQXxXLgoKCSogZGxscy9zaGVsbDMyL2ZvbGRlcnMuYywgZGxscy9zaGVsbDMyL3NoZWxsbGluay5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYywgaW5jbHVkZS9zaGxvYmouaDoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTW92ZWQgZXhpc3RpbmcgSVNoZWxsTGluayBjbGFzcy4gTmV3IHN0dWJzIGZvciBJU2hlbGxMaW5rVy4KCgkqIGluY2x1ZGUvYml0bWFwLmgsIGluY2x1ZGUvY29sb3IuaCwgaW5jbHVkZS9nZGkuaCwgaW5jbHVkZS94MTFkcnYuaCwgaW5jbHVkZS94MTFmb250LmgsIG1pc2MvbWFpbi5jLCBvYmplY3RzL2JpdG1hcC5jLCBvYmplY3RzL2NvbG9yLmMsIG9iamVjdHMvZGMuYywgb2JqZWN0cy9nZGlvYmouYywgd2luZG93cy9BdHRpYy9ncmFwaGljcy5jLCB3aW5kb3dzL2RjZS5jLCB3aW5kb3dzL2Rpc3BsYXkuYywgd2luZG93cy9ldmVudC5jLCB3aW5kb3dzL2lucHV0LmMsIHdpbmRvd3MvbW91c2UuYywgd2luZG93cy9zY3JvbGwuYywgd2luZG93cy9zeXNtZXRyaWNzLmMsIHdpbmRvd3MvdXNlci5jLCBncmFwaGljcy9kZHJhdy5jLCBncmFwaGljcy9wYWludGluZy5jLCBncmFwaGljcy93aW5nLmMsIGdyYXBoaWNzL3gxMWRydi9iaXRibHQuYywgZ3JhcGhpY3MveDExZHJ2L2JpdG1hcC5jLCBncmFwaGljcy94MTFkcnYvYnJ1c2guYywgZ3JhcGhpY3MveDExZHJ2L2NsaXBwaW5nLmMsIGdyYXBoaWNzL3gxMWRydi9kaWIuYywgZ3JhcGhpY3MveDExZHJ2L2dyYXBoaWNzLmMsIGdyYXBoaWNzL3gxMWRydi9pbml0LmMsIGdyYXBoaWNzL3gxMWRydi9wZW4uYywgZ3JhcGhpY3MveDExZHJ2L3RleHQuYywgZ3JhcGhpY3MveDExZHJ2L3hmb250LmM6CglIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCVJlbW92ZSBYX0RDX0lORk8gZnJvbSBEQyBhbmQgbWFrZSBpdCBiZWhhdmUgbGlrZSBhbnkgb3RoZXIgUERFVklDRS4KCgkqIGluY2x1ZGUvbWlzY2VtdS5oLCBtc2Rvcy9kcG1pLmMsIG1zZG9zL2ludDIxLmMsIG1zZG9zL2ludDI1LmMsIG1zZG9zL2ludDI2LmMsIG1zZG9zL2ludDJmLmMsIG1zZG9zL3htcy5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglDaGFuZ2VkIENUWF9TRUdfT0ZGX1RPX0xJTiB0byBhbGxvdyBsaW5lYXIgYWRkcmVzc2VzIGluIDMyLWJpdAoJcmVnaXN0ZXJzICh1c2VkIGJ5IERldmljZUlvQ29udHJvbCkuIEFkYXB0ZWQgYWxsIHVzZXJzLgoKCSogaW5jbHVkZS93aW5pb2N0bC5oLCB3aW4zMi9kZXZpY2UuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJSW1wbGVtZW50ZWQgKG1vc3QpIFZXaW4zMi5WeEQgRGV2aWNlSW9Db250cm9sIHJvdXRpbmVzLgoKVHVlIE5vdiAyNCAyMDo0NzoxNyAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS90aHJlYWQuaCwgc2NoZWR1bGVyL3RocmVhZC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IFNldCB0aGUgVEVCRl9XSU4zMiBmbGFnIGluIHRlYi5mbGFncyBmb3IgMzItYml0IHRocmVhZHMuCgoJKiBsb2FkZXIvdGFzay5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogQ2FsbCBJbml0VGhyZWFkSW5wdXQgaW4gR2V0RmFzdFF1ZXVlIHdpdGggY29ycmVjdCBwYXJhbWV0ZXIKCWZvciAzMi1iaXQgcXVldWVzLgoKCSogd2luMzIva2VybmVsMzIuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IFtRRl1UX1RodW5rIHNob3VsZCBjbGVhciBISVdPUkQoRUFYKSBvbiByZXR1cm4uCglCdWdmaXg6IGhhY2sgZm9yIHN0dXBpZCBVU0VSMzIgQ2FsbGJhY2tHbHVlTFMgcm91dGluZSBpbiBDb21tb24zMlRoa0xTLgoKCSogaWYxNjMyL3RodW5rLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBCYWQganVtcCBnZW5lcmF0ZWQgaW4gVEhVTktfQWxsb2NMU1RodW5rbGV0LgoJQnVnZml4OiBGb3Jnb3QgdG8gY29udmVydCBzZWdwdHIgaW4gQWxsb2NMU1RodW5rbGV0Q2FsbGJhY2tFeC4KCgkqIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jOiBFcmljIFdhcm5rZSA8ZXJpY0Bzbm93bW9vbi5jb20+CglEb24ndCBtYXRjaCBhZ2FpbnN0IFN5bWJvbCBvciBOaWwgZm9udHMuCgoJKiBtZW1vcnkvZ2xvYmFsLmM6IFN0ZXBoZW4gQ3Jvd2xleSA8Y3Jvd0BkZWJpYW4ub3JnPgoJUmV0dXJuIHRoZSAiYnVmZmVycyIgYW5kICJjYWNoZWQiIG1lbW9yeSBhcyBmcmVlIHNpbmNlIGl0IGlzCglkZWFsbG9jYXRlZCB3aGVuIGEgcHJvZ3JhbSBuZWVkcyBpdCBhbnl3YXkuCgoJKiB3aW5kb3dzL2RpYWxvZy5jLCBpbmNsdWRlL3dpbmRvd3MuaDoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJQnVnZml4OiBTZXREbGdJdGVtVGV4dDMyIHJldHVybnMgQk9PTCBub3Qgdm9pZC4KCgkqIHJlbGF5MzIvdXNlcjMyLnNwZWMsIHdpbmRvd3MvdXNlci5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglOZXcgc3R1YnMgR2V0VXNlck9iamVjdEluZm9ybWF0aW9uQXxXLgoKCSogcmVsYXkzMi9yZWxheTM4Ni5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVJlbW92ZWQgbGVmdCBvdmVyICdzaG93JyBhbmQgdXNlbGVzcyBkZWFkYmVlZiBjaGVja2luZyB3aGljaCBkb2Vzbid0Cgl3b3JrLgoKCSogbG9hZGVyL3BlX2ltYWdlLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRqdXN0IGJyb2tlbiBlbnRyeXBvaW50IGFkZHJlc3Nlcy4gKHdpbjk4IG5vdGVwYWQuZXhlKQoKCSogZG9jdW1lbnRhdGlvbi9zdGF0dXMvbXVsdGltZWRpYTogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglVcGRhdGVkIGFjY29yZGluZyB0byBkZXZlbG9wbWVudC4KCgkqIGlmMTYzMi9tbXN5c3RlbS5zcGVjLCByZWxheTMyL3dpbm1tLnNwZWM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVNvbWUgbmV3IHN0dWJzIChtaWRpU3RyZWFtWFhYIGZ1bmN0aW9ucywgc29tZSBtY2kgZnVuY3Rpb25zLCBhbmQKCXNvbWUgbW1pbyBmdW5jdGlvbnMpLgoKCSogbXVsdGltZWRpYS9taWRpLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJTW92ZWQgTUNJIHBhcnQgdG8gbWNpbWlkaS5jIDsgYWRkZWQgRHJpdmVyUHJvYy4KCgkqIG11bHRpbWVkaWEvYXVkaW8uYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglNb3ZlZCBNQ0kgcGFydCB0byBtY2l3YXZlLmMgOyBhZGRlZCBzb21lIGVycm9yIGNoZWNraW5nIDsgYWRkZWQKCURyaXZlclByb2MKCgkqIGluY2x1ZGUvZGVidWcuaCwgaW5jbHVkZS9kZWJ1Z2RlZnMuaCwgbXVsdGltZWRpYS9NYWtlZmlsZS5pbjoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgbWNpbWlkaSBhbmQgbWNpd2F2ZS4KCgkqIG11bHRpbWVkaWEvbWNpbWlkaS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGJ1ZyBpbiBNQ0lfSU5GTyBjb21tYW5kIDsgZml4ZWQgcGF1c2UvcmVzdW1lIGNvbW1hbmRzIDsgZml4ZWQKCXNlZWsgY29tbWFuZC4KCgkqIG11bHRpbWVkaWEvbWNpd2F2ZS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVN0YXJ0aW5nIHdyaXRpbmcgTUNJIHBhcnQgOyBmaXhlZCBidWcgaW4gTUNJX0lORk8gY29tbWFuZC4KCgkqIG11bHRpbWVkaWEvbW1pby5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIHNvbWUgbWlzc2luZyBzdHVicyBpbiAzMiBiaXQgcGFydC4KCgkqIG11bHRpbWVkaWEvbWNpc3RyaW5nLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJTWFkZSB1c2Ugb2YgbmV3IDE2LzMyIE1DSSBtZXNzYWdlIGhhbmRsaW5nIGluIG1tc3lzdGVtLmMuCgoJKiBpbmNsdWRlL21tc3lzdGVtLmgsIGluY2x1ZGUvbXVsdGltZWRpYS5oOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBzb21lIG5ldyBmdW5jdGlvbnMvc3RydWN0dXJlcyBkZWZpbml0aW9ucy4oSSBjb3VsZG4ndCBnZXQgYWxsCgl0aGUgbWFuaWZlc3QgY29uc3RhbnRzIHZhbHVlcyB0aGF0IE1TIHdhcyByZWZlcnJpbmcgdG8gaW4gaXRzIHNwZWNzLi4uCglpZiBzb21lb25lIGhhcyB0aGVtLi4uKQoKCSogbXVsdGltZWRpYS9tY2lhbmltLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgc29tZSBlcnJvciBjaGVja2luZyA7IG1hZGUgdXNlIG9mIG5ldyAxNi8zMiBNQ0kgbWVzc2FnZSBoYW5kbGluZwoJaW4gbW1zeXN0ZW0uYyA7IGZpeGVkIGJ1ZyBpbiBNQ0lfSU5GTyBjb21tYW5kLgoKCSogbXVsdGltZWRpYS9tY2ljZGEuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBzb21lIGVycm9yIGNoZWNraW5nIDsgbWFkZSB1c2Ugb2YgbmV3IDE2LzMyIE1DSSBtZXNzYWdlCgloYW5kbGluZyBpbiBtbXN5c3RlbS5jLgoJQWRkZWQgV2luOTUgY29tbWFuZCB0byBoYW5kbGUgY2Qtcm9tIHdpdGggYm90aCBkYXRhIGFuZCBhdWRpbyA7IGZpeGVkCglidWcgaW4gTUNJX0lORk8gY29tbWFuZCA7IHNoYWRvd2luZyBNQ0kgc3RhdHVzIGZvciBkZXZpY2VzIHRoYXQgY2FuJ3QKCWdldCBjdXJyZW50IHN0YXR1cyA7IGZpeGVkIHN0YXR1cyBub3QgYmVpbmcgdXBkYXRlZCBvbiBjZCBjaGFuZ2UuCgoJKiBtdWx0aW1lZGlhL21tc3lzdGVtLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRmFjdG9yaXplZCAxNi8zMiBiaXQgTUNJIGZ1bmN0aW9uIGJ5IHVzaW5nICBtZXNzYWdlIG1hcHBpbmcgZnJvbSAxNgoJdG8gMzIgYml0cyA7IGFkZGVkIHNvbWUgbmV3IHByb3RvdHlwZXMgbWNpU2VuZENvbW1hbmQsIG1jaVNlbmRTdHJpbmcsCgltY2koU2V0L0dldClZaWVsZFByb2MgOyBzdGFydGVkIHdyaXRpbmcgbWlkaVN0cmVhbVhYWCBmdW5jdGlvbnMgLSBub3QKCXlldCB3b3JraW5nLiBGaXhlZCBzb21lIGlzc3VlcyByZWdhcmRpbmcgYXN5bmNocm9ub3VzIE1DSSBjb21tYW5kcyA7CglmaXhlZCBNQ0lfU1lTSU5GTyBjb21tYW5kLgoKCSogcmVzb3VyY2VzL3N5c3Jlc19Gci5yYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBzb21lIHF1aXJrcy4KClN1biBOb3YgMjIgMTg6Mjk6NTAgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvc2hlbGwzMi9jb250bWVudS5jLCBkbGxzL3NoZWxsMzIvZGF0YW9iamVjdC5jLCBkbGxzL3NoZWxsMzIvZm9sZGVycy5jLCBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmMsIGRsbHMvc2hlbGwzMi9waWRsLmgsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwgZGxscy9zaGVsbDMyL3NobHZpZXcuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTWFueSBmaXhlcy4KCgkqIGRsbHMvc2hlbGwzMi9waWRsLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTmV3IGZ1bmN0aW9uOiBfSUxHZXRFeHRlbnNpb24uCgoJKiBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW4sIGRsbHMvc2hlbGwzMi9jbGFzc2VzLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCU5ldyBmaWxlLiBIS0VZX0NMQVNTRVNfUk9PVCBoYW5kbGluZy4KCgkqIGRvY3VtZW50YXRpb24vY29tbW9uX2NvbnRyb2xzOiBFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJVXBkYXRlZC4KCgkqIGRsbHMvY29tY3RsMzIvaGVhZGVyLmMsIGRsbHMvY29tY3RsMzIvc3RhdHVzLmMsIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jLCBpbmNsdWRlL2NvbW1jdHJsLmgsIGluY2x1ZGUvaGVhZGVyLmgsIGluY2x1ZGUvbGlzdHZpZXcuaCwgaW5jbHVkZS9vbGUyLmgsIGluY2x1ZGUvcmViYXIuaCwgaW5jbHVkZS9zdGF0dXMuaCwgaW5jbHVkZS90b29sYmFyLmgsIGluY2x1ZGUvdG9vbHRpcHMuaDoKCUVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglBZGRlZCBVbmljb2RlIHN1cHBvcnQgKGF0IGxlYXN0IHBhcnRpYWxseSkuCgoJKiBvbGUvTWFrZWZpbGUuaW4sIG9sZS9jb21wb2JqLmMsIG9sZS9vbGVvYmouYywgaW5jbHVkZS9vbGVvYmouaCwgaW5jbHVkZS9zaGxvYmouaDoKCUVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglBZGRlZCBJT2xlQWR2aXNlSG9sZXIgaW50ZXJmYWNlIChzdGlsbCBhIGR1bW15KSBhbmQgZml4ZWQKCUNyZWF0ZU9sZUFkdmlzZUhvbGRlcigpLgoKCSogZGxscy9jb21jdGwzMi9jb21tY3RybC5jLCBkbGxzL2NvbWN0bDMyL3Rvb2x0aXBzLmM6CglFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJQWRkZWQgZ2xvYmFsIHN1YmNsYXNzaW5nIGF0b20sIHVzZWQgYnkgdG9vbHRpcHMgYW5kIHVwZG93biAobm90IHlldCkuCgoJKiBkbGxzL2NvbWN0bDMyL3JlYmFyLmM6IEVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglJbXByb3ZlZCBsYXlvdXQgY29kZS4KCgkqIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmMsIHJlbGF5MzIvY29tY3RsMzIuc3BlYzoKCUVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglGaXhlZCBJbWFnZUxpc3RfTG9hZEltYWdlKCkuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWJvZXguYzogRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUFkZGVkIENNRU1fU0VUSVRFTTMyQSBhbmQgbWVzc2FnZSBmb3J3YXJkaW5nIHRvIGNvbWJvYm94LgoKCSogb2xlL21vbmlrZXIuYywgcmVsYXkzMi9vbGUzMi5zcGVjOgoJRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUFkZGVkIHN0dWIgZm9yIENyZWF0ZUl0ZW1Nb25pa2VyKCkuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYzogRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUZpeGVkIHNvbWUgdW5kb2N1bWVudGVkIGZ1bmN0aW9uIG5hbWVzIGFuZCBpbXBsZW1lbnRlZCBEUEFfTWVyZ2UKCXBhcnRpYWxseS4KCgkqIGNvbnRyb2xzL2J1dHRvbi5jOiBFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJRW5hYmxlZCBkb3VibGUgY2xpY2sgZm9yIGJ1dHRvbnMuCgoJKiBpbmNsdWRlL3dpbmRvd3MuaDogRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUFkZGVkIGNvbW1hbmQgYW5kIHJldHVybiBjb25zdGFudHMgdXNlZCBieSBXTV9OT1RJRllGT1JNQVQuCgoJKiBvYmplY3RzL2JydXNoLmMsIG9iamVjdHMvZGMuYywgb2JqZWN0cy9nZGlvYmouYywgb2JqZWN0cy9wZW4uYywgd2luZG93cy9BdHRpYy9ncmFwaGljcy5jLCBncmFwaGljcy9wYWludGluZy5jLCBncmFwaGljcy94MTFkcnYvYml0Ymx0LmMsIGdyYXBoaWNzL3gxMWRydi9kaWIuYywgZ3JhcGhpY3MveDExZHJ2L2dyYXBoaWNzLmMsIGdyYXBoaWNzL3gxMWRydi90ZXh0LmMsIGluY2x1ZGUvZGMuaCwgaW5jbHVkZS94MTFkcnYuaDoKCUh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJTW92ZWQgRENfU2V0dXBHQyBmdW5jdGlvbnMgdG8gZ3JhcGhpY3MveDExZHJ2L2dyYXBoaWNzLmMuCgoJKiBpbmNsdWRlL29wdGlvbnMuaCwgbWlzYy9tYWluLmMsIG9sZS9vbGUybmxzLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCVNtYWxsIGZpeGVzIHRvIGdldCB0aGUgZGVmYXVsdCBsYW5ndWFnZSB0byBhIHNlbnNpYmxlIHZhbHVlLgoJVGhhbmtzIHRvIFBhYmxvLgoKCSogQU5OT1VOQ0UsIERFVkVMT1BFUlMtSElOVFMsIFJFQURNRSwgZG9jdW1lbnRhdGlvbi9SRUFETUUuZG9jdW1lbnRhdGlvbiwgZG9jdW1lbnRhdGlvbi9ob3ctdG8tcG9ydCwgZG9jdW1lbnRhdGlvbi93aW5lLm1hbiwgZG9jdW1lbnRhdGlvbi93aW5lLnRleGluZm86CglEb3VnbGFzIFJpZGd3YXkgPHJpZGd3YXlAd2luZWhxLmNvbT4KCU1pc2NlbGxhbmVvdXMgc21hbGwgZml4ZXMuCgoJKiBncmFwaGljcy93aW4xNmRydi9wcnRkcnYuYywgaWYxNjMyL2dkaS5zcGVjLCBpbmNsdWRlL3dpbmRvd3MuaCwgb2JqZWN0cy9tZXRhZmlsZS5jLCBvYmplY3RzL3JlZ2lvbi5jLCByZWxheTMyL2dkaTMyLnNwZWM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglBZGRlZCBXaW4xNiBpbXBsZW1lbnRhdGlvbiBmb3IgR2V0UmVnaW9uRGF0YSgpLgoKCSogb2xlL3R5cGVsaWIuYzogQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJRW5oYW5jZWQgT0FCdWlsZFZlcnNpb24oKSB0byByZXR1cm4gZGlmZmVyZW50IHZlcnNpb24gdmFsdWVzIGZvcgoJZGlmZmVyZW50IHdpbnZlcnMuCgoJKiBtc2Rvcy9pbnQyMS5jOiBBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglBZGRlZCBJTlQyMV9QYXJzZUZpbGVOYW1lSW50b0ZDQigpIGFuZCBzb21lIG90aGVyIHRoaW5ncyB0byBnZXQKCUNPTU1BTkQuQ09NIHdvcmtpbmcuCgoJKiByZWxheTMyL2tlcm5lbDMyLnNwZWM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJQWRkZWQgbWlzc2luZyBlbnRyeSBmb3IgR2V0TnVtYmVyRm9ybWF0Vy4KCgkqIG9iamVjdHMvcGFsZXR0ZS5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUNoZWNraW5nIGZvciBOVUxMLXBvaW50ZXIuCgoJKiBvbGUvbmxzL2ZyYS5ubHMsIG9sZS9ubHMvZnJiLm5scywgb2xlL25scy9mcmMubmxzLCBvbGUvbmxzL2ZybC5ubHM6CglSb2JlcnQgUG91bGlvdCA8a3J5bm9zQGNsaWMubmV0PgoJQmV0dGVyIE9MRSBzdXBwb3J0IGluIEZyZW5jaCBsYW5ndWFnZXMuCgoJKiBsb2FkZXIvbW9kdWxlLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJSW1wbGVtZW50YXRpb24gb2YgQ3JlYXRlUHJvY2VzczMyVy4KCgkqIHdpbmRvd3MvZXZlbnQuYzogRGF2aWQgTHV5ZXIgPGx1eWVyQHVjcy51d2EuZWR1LmF1PgoJUXVldWluZyBvZiBkZWZlcnJlZCBFeHBvc2UgZXZlbnRzLgoKCSogY29udHJvbHMvbGlzdGJveC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUxCX0dFVFRFWFQ6IEhhbmRsZSBwYXNzZWQgTlVMTCBidWZmZXIuCgoJKiBjb250cm9scy9jb21iby5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUNCX0dFVFRFWFQ6IFVzZSBscEJ1ZmZlciBpbnN0ZWFkIG9mIGxwVGV4dCBmb3IgTEJfR0VUVEVYVDMyLCBoYW5kbGUgMAoJYnl0ZSBOVUxMIGJ1ZmZlci4KCgkqIG9sZS9ubHMvZnJzLm5scywgb2xlL25scy9za3kubmxzLCBvbGUvb2xlMm5scy5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglUdXJuIG1lZ2EgZG91YmxlIHN3aXRjaCBpbnRvIHN0YXRpYyB0YWJsZSAocmVkdWNlcyBjb21waWxlIHRpbWUpLgoKCSogQVVUSE9SUywgaW5jbHVkZS9hdXRob3JzLmg6IEFkZGVkIFJvYmVydCBSaWdncy4KCgkqIGluY2x1ZGUvZDNkLmg6IFJvYmVydCBSaWdncyA8cnJpZ2dzQHRlc3Nlci5jb20+CglpbmNsdWRlIGRkcmF3LmgsIHF1ZXN0aW9uYWJsZSBmaXggZm9yIHF1ZXN0aW9uYWJsZSBzdHJ1Y3QvdW5pb24KCWNvbnN0cnVjdCBpbiBNUydzIEQzRFZFQ1RPUiBkZWZpbml0aW9uLgoKCSogaW5jbHVkZS9kc291bmQuaDogUm9iZXJ0IFJpZ2dzIDxycmlnZ3NAdGVzc2VyLmNvbT4KCU1vcmUgZmxhZ3MgKERpcmVjdFggNS4yKSwgRGlyZWN0U291bmQzRExpc3RlbmVyIGFuZAoJRGlyZWN0U291bmQzREJ1ZmZlciBzdHJ1Y3R1cmVzLCBpbmNsdWRlIHNvbWUgcmVxdWlyZWQgZmlsZXMKCSh3aW5kb3dzLmgsIGNvbXBvYmouaCwgYW5kIGQzZC5oKS4KCgkqIG11bHRpbWVkaWEvZHNvdW5kLmM6IFJvYmVydCBSaWdncyA8cnJpZ2dzQHRlc3Nlci5jb20+CglEaXJlY3RTb3VuZDNETGlzdGVuZXIgYW5kIERpcmVjdFNvdW5kM0RCdWZmZXIgc3R1YnMsIG5ldyBtaXhlciBjb2RlLAoJcHJpbWFyeSBidWZmZXIgaXMgaW1wbGVtZW50ZWQgY2xvc2VyIHRvIHdoYXQgdGhlIFNESyBkb2NzIHNwZWNpZnksCglvdGhlciBTREsgZG9jdW1lbnRlZCBiZWhhdmlvdXIgZW5mb3JjZWQuIENvbXBsZXRlZCB0aGUgZGV2Y2FwcyBsaXN0LgoKCSogbWlzYy9jcnRkbGwuYywgcmVsYXkzMi9jcnRkbGwuc3BlYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTmV3IHN0dWJzIHN0cmRhdGUsIHN0cnRpbWUuCgoJKiBtZW1vcnkvc2VsZWN0b3IuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiB0eXBvIGluIFNVbk1hcExTX0lQX0VCUF84IGxlYWQgdG8gc3RhY2sgY29ycnVwdGlvbi4KCgkqIG1pc2MvY29tbS5jOiBDbGlmZiBXcmlnaHQgPGNsaWZmQHNuaXBlNDQ0Lm9yZz4KCUZpeGVkIGEgbWFzayBzZXQsIGFuZCBvdGhlciBwYXJpdHkgc2V0dGluZyBidWdzIGZvciBzZXJpYWwgcG9ydHMuCgoJKiBpbmNsdWRlL3NpZ19jb250ZXh0Lmg6IFZhc3VkZXYgTXVsY2hhbmRhbmkgPHZhc3VAdGVpbC5zb2Z0Lm5ldD4KCUFkZGVkIEJTREkgc2lnY29udGV4dCBkZWZpbml0aW9ucy4KCgkqIHdpbmRvd3MvY2xhc3MuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCUZpeGVkIHR5cG8uCgoJKiByZWxheTMyL3JlbGF5Mzg2LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUmVtb3ZlIG5vdyB1c2VsZXNzIFJFTEFZX1Nob3dEZWJ1Z21zZ3NSZWxheSBjaGVjay4KCgkqIGxvYWRlci9wZV9pbWFnZS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCURvIG5vdCByZWxvY2F0ZSB0aGUgcG9pbnRlcnMgaW4gdGhlIElNQUdFX1RIUkVBRF9MT0NBTF9TVE9SQUdFCglkaXJlY3RvcnksIGZvciB0aGV5IHNlZW0gdG8gYmUgcmVsb2NhdGVkIGJ5IHRoZSBzdGFuZGFyZCByZWxvY2F0aW5nCgltZWNoYW5pc20uIChFeHBsaWNpdGx5IGNoZWNrZWQgb25lIHByb2dyYW0gdXNpbmcgaXQpCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgaW5jbHVkZS9zaGVsbC5oOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglQYXRoQWRkQmFja3NobGFzaCwgUGF0aFJlbW92ZUJhY2tzbGFzaDogYXJndW1lbnQgaXMgbm90IGNvbnN0YW50LgoKCSogd2luZG93cy93aW4uYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglDaGVjayB3bmRQdHIgZm9yIE5VTEwuCgoJKiBncmFwaGljcy9kZHJhdy5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUJsdEZhc3Q6IEhvbm9yIGxQaXRjaCwgTG9jay9VbmxvY2sgc3VyZmFjZXMgKHhsaWIgbmVlZHMgdW5sb2NrIHRvIGRyYXcpLgoKCSogbWlzYy9zcG9vbGVyLmMsIG1pc2MvTWFrZWZpbGUuaW4sIG1pc2NlbXUvbWFpbi5jLCBNYWtlZmlsZS5pbiwgZ3JhcGhpY3Mvd2luMTZkcnYvaW5pdC5jLCBsb2FkZXIvbWFpbi5jOgoJSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglUYWtlcyBwcmludCBzcG9vbGVyIGZ1bmN0aW9ucyBvdXQgb2Ygd2luMTZkcnYuCglBbGxvd3MgdGhlIFBvc3RTY3JpcHQgZHJpdmVyIHRvIGdvIGludG8gbGlid2luZS4KCgkqIGlmMTYzMi9nZGkuc3BlYywgb2JqZWN0cy9icnVzaC5jLCBvYmplY3RzL3BhbGV0dGUuYzoKCUlhbiBTY2htaWR0IDxpcnNtYW5AaWFnLm5ldD4KCUFkZGVkIHN0dWJzIGZvciB0d28gdW5kb2N1bWVudGVkIEdESSByb3V0aW5lcywgU2V0TWFnaWNDb2xvcnMgYW5kCglTZXRTb2xpZEJydXNoLiBUaGlzIGFsbG93cyBXaW45OCBuYXRpdmUgVVNFUiB0byBzdGFydCB1cC4KCgkqIGdyYXBoaWNzL2RkcmF3LmM6IFN0ZXBoZW4gQ3Jvd2xleSA8Y3Jvd0BkZWJpYW4ub3JnPgoJRml4ZWQgdGhlIERHQSBkZXRlY3Rpb24gY29kZSBpbiBkZHJhdy4gWW91IGRvbid0IG5lZWQgcm9vdCBhY2Nlc3MsCgloYXZpbmcgcit3IGFjY2VzcyB0byAvZGV2L21lbSBpcyBlbm91Z2guCgoJKiBkb2N1bWVudGF0aW9uL3N0YXR1cy9kaXJlY3RkcmF3LCBncmFwaGljcy9kZHJhdy5jLCBncmFwaGljcy93aW5nLmMsIGluY2x1ZGUvZGRyYXcuaDoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRGlyZWN0RHJhdyBzdGF0dXMgdXBkYXRlZC4KCVVzZSBjb29wZXJhdGl2ZSB3aW5kb3cgZm9yIGRyYXdpbmcgaW4geGxpYiBpbXBsZW1lbnRhdGlvbiBpZiBwb3NzaWJsZS4KCVNsaWdodGx5IHJlc3RydWN0dXJlZCBJRGlyZWN0RHJhd1N1cmZhY2U6OkJsdCBzbyBpdCBkb2Vzbid0IGNyYXNoLgoKCSogd2luZG93cy9rZXlib2FyZC5jOiBEYXZpZCBGYXVyZSA8RGF2aWQuRmF1cmVAaW5zYS1seW9uLmZyPgoJTWljcm8gcGF0Y2ggZm9yIEFsdEdyIGtleSBvbiBnZXJtYW4ga2V5Ym9hcmRzLgoKCSogZmlsZXMvZG9zX2ZzLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJRml4ZXMgZXJyb3IgaGFuZGxpbmcgKFNldExhc3RFcnJvcigpIGFuZCByZXR1cm4gdmFsdWUpLgoKCSogb2JqZWN0cy90ZXh0LmMsIGluY2x1ZGUvd2luZG93cy5oOiBHYWVsIGRlIENoYWxlbmRhciA8Z2FlbEBsaW1zaS5mcj4KCVBhcnRpYWxseSBjb21wbGV0ZSBHZXRUZXh0Q2hhcnNldEluZm8gYW5kIGNvcnJlY3RzIHJldHVybiB2YWx1ZXMgZm9yCgl0aGlzIGZhbWlseSBvZiBmdW5jdGlvbnMuCgpTdW4gTm92IDE1IDE4OjEyOjEyIDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBvbGUvY29tcG9iai5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUJ1ZyBmaXguCgoJKiBvYmplY3RzL2RpYi5jOiBFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJRml4ZWQgcmV0cmlldmFsIG9mIGludmFsaWQgcGFsZXR0ZSBkYXRhIGluIEdldERJQml0cygpLgoKCSogd2luZG93cy93aW5wb3MuYzogSm9obiBSaWNoYXJkc29uIDxqcmljaGFyZEB6ZWFsYW5kLm12LmNvbT4KCUFsbG93IFNXUF9ISURFV0lORE9XIHRvIGJlIGNhbGxlZCBvbiB3aW5kb3dzIHRoYXQgYXJlIGFscmVhZHkgaGlkZGVuCgl3aXRob3V0IHVubWFwcGluZyB0aGVtIGFnYWluLgoKCSogd2luZG93cy9zY3JvbGwuYzogUGltIEJvbGxlbiA8cGltQGdpbWxpLmlhZWh2Lm5sPgoJRml4ZWQgc2Nyb2xsIGJ1ZyBpbiBTY3JvbGxXaW5kb3dFeDMyIHdoaWNoIGNhdXNlZCBnYXJiYWdlIG9uIHNjcmVlbgoJb3V0c2lkZSBkZXNrdG9wIHdpbmRvdyB3aXRoIGd0d2luLmV4ZSAoRHV0Y2ggYmFua2luZyBwcm9ncmFtKS4KCgkqIGxvYWRlci9tYWluLmMsIG1lbW9yeS9hdG9tLmMsIG1pc2MvZGRlbWwuYywgd2luZG93cy9jbGFzcy5jLCB3aW5kb3dzL21lc3NhZ2UuYywgaW5jbHVkZS9BdHRpYy9hdG9tLmgsIGluY2x1ZGUvZ2xvYmFsLmg6CglTbWFsbCBhdG9tIGZpeGVzLgoKCSogb2JqZWN0cy9kaWIuYzogRGlyayBUaGllcmJhY2ggPHRoaWVyYmFjaEBtYXRoZW1hdGlrLnR1LWRhcm1zdGFkdC5kZT4KCUZpeGVkIGJ1ZyBpbiBTdHJldGNoRElCaXRzMzIgKHdyb25nIG9yaWdpbikuCgoJKiB3aW5kb3dzL3dpbnByb2MuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglTbWFsbCBmaXhlcy4KCgkqIGluY2x1ZGUvZGRyYXcuaCwgaW5jbHVkZS90c194c2htLmgsIHRvb2xzL21ha2VfWDExd3JhcHBlcnMsIHRzeDExL1gxMV9jYWxscywgdHN4MTEvdHNfeHNobS5jLCBncmFwaGljcy9kZHJhdy5jOgoJTGlvbmVsIFVsbWVyIDx1bG1lckBkaXJlY3Rwcm92aWRlci5uZXQ+CglTb21lIGNvcnJlY3Rpb25zIHRvIHRoZSBoYW5kbGluZyBvZiBvZmYtc2NyZWVuIGJ1ZmZlcnMuCglDb3JyZWN0aW9uIHRvIHRoZSBFbnVtRGlzcGxheU1vZGVzIGZ1bmN0aW9uLgoJQWRkZWQgWFNobSBzdXBwb3J0IHRvIFhsaWIgZHJpdmVyLgoJT3BlbiBhIERpcmVjdFggd2luZG93IGV2ZW4gd2hlbiB1c2luZyB0aGUgREdBIGRyaXZlci4KCgkqIGluY2x1ZGUvc2hlbGwuaCwgaW5jbHVkZS9zaGxvYmouaCwgbWlzYy9zaGVsbC5jLCByZWxheTMyL3NoZWxsMzIuc3BlYywgZGxscy9zaGVsbDMyL01ha2VmaWxlLmluLCBkbGxzL3NoZWxsMzIvY29udG1lbnUuYywgZGxscy9zaGVsbDMyL2RhdGFvYmplY3QuYywgZGxscy9zaGVsbDMyL2ZvbGRlcnMuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsIGRsbHMvc2hlbGwzMi9zaGVsbG9sZS5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglDbGVhbnVwLCBzbWFsbCBmaXhlcywgYSBmZXcgbmV3IHN0dWJzLgoKCSogZGxscy9zaGVsbDMyL3NobHZpZXcuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglIYW5kbGluZyBmb3IgbGlzdHZpZXdzdHlsZXMsIHZpZXcgbW9kZSBidXR0b25zIGluIGZpbGVkaWFsb2dzCgllbmFibGVkIGFuZCBoYW5kbGVkLgoJTmV3IGxpc3R2aWV3IGNvbHVtbnMgU2l6ZSwgVHlwZSwgTW9kaWZpZWQgZm9yIHJlcG9ydHZpZXcKCWNyZWF0ZWQgYW5kIGhhbmRsZWQuCgoJKiBkbGxzL3NoZWxsMzIvaWZfbWFjcm9zLmg6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCU5ldyBmaWxlLCB3cmFwcGVyIGZvciBJU2hlbGxCcm93c2VyIGNsYXNzLgoKCSogZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglOZXcgZmlsZSwgc29tZSBoZWxwZXIgZnVuY3Rpb25zIGZvciBpY29uIGNhY2hlLgoJSW1wbGVtZW50ZWQgRXh0cmFjdEljb25FeDsgbW92ZWQgU0hNYXBQSURMVG9TeXN0ZW1JbWFnZUxpc3RJbmRleCwKCVNoZWxsX0dldEltYWdlTGlzdCBpbiB0aGlzIGZpbGUuCgoJKiBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvcGlkbC5oOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglJbXBsZW1lbnRlZDogSUxJc0VxYWwsIElMRmluZENoaWxkLCBfSUxHZXRGaWxlRGF0ZSwgX0lMR2V0RmlsZVNpemUuCgoJKiBsb2FkZXIvbW9kdWxlLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTG9hZExpYnJhcnlFeDogc2hvdyBhIHdhcm5pbmcgd2hlbiBjYWxsZWQgd2l0aCB1bmltcGxlbWVudGVkIHBhcm0uCgoJKiBtaXNjZW11L2luc3RyLmM6IENsZWFuZWQgdXAgYSBiaXQuCgoJKiBtZW1vcnkvc2VsZWN0b3IuYywgbWlzY2VtdS9pbnN0ci5jLCB0b29scy9idWlsZC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglDbGVhbiBpbnZhbGlkIHNlbGVjdG9ycyBvbiB0aGUgcG9wICV4cyBmcm9tIHRoZSBTVEFDS0ZSQU1FIGl0c2VsZgoJaW5zdGVhZCBvZiB1c2luZyBsaW5rZWQgbGlzdCBoYWNrLgoKCSogTWFrZWZpbGUuaW46IFJlbW92ZWQgZ2V0cyBtZXNzYWdlLgoKCSogb2xlL25scy90aGEubmxzOiBEYXZpZCBMdXllciA8bHV5ZXJAdWNzLnV3YS5lZHUuYXU+CglBZGRlZCBUaGFpIG5scy1yZXNvdXJjZXMuCgoJKiBvbGUvbmxzL1JFQURNRSwgb2xlL25scy9jemUubmxzLCBvbGUvbmxzL2VzZS5ubHMsIG9sZS9ubHMvZXNnLm5scywgb2xlL25scy9lc3QubmxzLCBvbGUvbmxzL2V1cS5ubHMsIG9sZS9ubHMvZm9zLm5scywgb2xlL25scy9ocnYubmxzLCBvbGUvbmxzL2h1bi5ubHMsIG9sZS9ubHMvaXNsLm5scywgb2xlL25scy9ub3IubmxzLCBvbGUvbmxzL3Bsay5ubHMsIG9sZS9ubHMvcHRnLm5scywgb2xlL25scy9yb20ubmxzLCBvbGUvbmxzL3Nsdi5ubHMsIG9sZS9ubHMvc3ZlLm5scywgb2xlL29sZTJubHMuYywgaW5jbHVkZS93aW5ubHMuaDoKCVBhYmxvIFNhcmF0eGFnYSA8c3J0eGdAY2hhbmFlLmFscGhhbmV0LmNoPgoJRGlzcGxheSB0aGUgbGFuZ3VhZ2UgaWQgZm9yICJYWFggbm90IHN1cHBvcnRlZCBmb3IgeW91ciBsYW5ndWFnZSIKCW1lc3NhZ2VzLgoJQWRkZWQgYWxsIGxhbmd1YWdlcyBhbmQgc3VibGFuZ3VhZ2VzIGZvciBsYW5ndWFnZXMgc3VwcG9ydGVkIGluCglyZXNvdXJjZXMvc3lzcmVzX1h4LgoKCSogb2xlL29sZTIuYywgcmVsYXkzMi9vbGUzMi5zcGVjOiBHYXZyaWVsIFN0YXRlIDxnYXZyaWVsc0Bjb3JlbC5jb20+CglBZGQgc3R1YnMgZm9yIEdldFJ1bm5pbmdPYmplY3RUYWJsZTMyIGFuZCBPbGVSZWdHZXRVc2VyVHlwZS4KCgkqIG9sZS9tb25pa2VyLmM6IEdhdnJpZWwgU3RhdGUgPGdhdnJpZWxzQGNvcmVsLmNvbT4KCUVuc3VyZSB0aGF0IENyZWF0ZUZpbGVNb25pa2VyIGZ1bmN0aW9ucyBkb24ndCByZXR1cm4gYSBib2d1cyBtb25pa2VyCglvYmplY3Qgb24gZmFpbHVyZS4KCgkqIGluY2x1ZGUvY2xhc3MuaCwgd2luZG93cy9jbGFzcy5jOiBHYXZyaWVsIFN0YXRlIDxnYXZyaWVsc0Bjb3JlbC5jb20+CglBZGRlZCBjb2RlIHRvIG1hbmFnZSBBc2NpaSBhbmQgV2lkZUNoYXIgY2xhc3MgbmFtZXMsIGFuZCB0byByZXR1cm4gdGhlCgluYW1lcyBpbiB0aGUgR2V0Q2xhc3NJbmZvIGZ1bmN0aW9ucy4KCgkqIGluY2x1ZGUvd2luc29jay5oOiBDb25zdGFudGluZSBTYXB1bnR6YWtpcyA8Y3NhcHVudHpAc3RhbmZvcmQuZWR1PgoJRml4IHRvIExpbnV4IElQWCBzbyBjb21waWxlcyBvbiBub24tbGludXggcGxhdGZvcm1zLgoKCSogbWlzYy9tYWluLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJT3duIFgxMSBlcnJvcmhhbmRsZXIgdG8gbG9jYXRlIFgxMSBlcnJvcnMuIFVzZWZ1bCBvbmx5IHdpdGggLXN5bmMuCgpTYXQgTm92IDE0IDE4OjU5OjMwIDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL2NvbG9yLmgsIGluY2x1ZGUvaW1hZ2VobHAuaCwgaW5jbHVkZS9wYWxldHRlLmgsIG1lbW9yeS9nbG9iYWwuYywgbWlzYy9yZWdpc3RyeS5jLCB3aW5kb3dzL2RlZnduZC5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglGaXhlZCB3YXJuaW5ncywgc29tZSBvbmx5IHZpc2libGUgd2l0aCAtV3N0cmljdC1wcm90b3R5cGVzIG9yIC1wZWRhbnRpYy4KCgkqIGluY2x1ZGUvY3Vyc29yaWNvbi5oLCBpbmNsdWRlL2Rpc3BsYXkuaCwgaW5jbHVkZS9tZXNzYWdlLmgsIG9iamVjdHMvY3Vyc29yaWNvbi5jLCB3aW5kb3dzL2Rpc3BsYXkuYywgd2luZG93cy9tb3VzZS5jLCB3aW5kb3dzL3gxMWRydi9pbml0LmMsIGlmMTYzMi9kaXNwbGF5LnNwZWM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCU1vdmVkIFgxMSBtb3VzZSBjdXJzb3IgaGFuZGxpbmcgdG8gdGhlIERJU1BMQVkgZHJpdmVyLgoKCSogaWYxNjMyL3RodW5rLmMsIGluY2x1ZGUvY2FsbGJhY2suaCwgbG9hZGVyL21haW4uYywgbG9hZGVyL3Rhc2suYywgbWlzYy9jYWxsYmFjay5jLCBtaXNjZW11L21haW4uYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJU29tZSBmaXhlcyB0byBXaW5lIHN0YXJ0dXAvdGVybWluYXRpb24gc2VxdWVuY2Ugd2l0aCBuYXRpdmUgVVNFUi4KCURvIG5vdCBjYWxsIGJ1aWx0LWluIFVTRVIgc2lnbmFsIGhhbmRsZXIgd2hlbiB1c2luZyBuYXRpdmUgVVNFUi4KCgkqIGRlYnVnZ2VyL2JyZWFrLmMsIGluY2x1ZGUvZGVidWdnZXIuaCwgaW5jbHVkZS90YXNrLmg6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogLWRlYnVnIGRpZG4ndCB3b3JrIGFueW1vcmUgYWZ0ZXIgdGhlIGxhc3Qgc3RhcnR1cCBzZXF1ZW5jZSBwYXRjaC4KCgkqIG9sZS9jb21wb2JqLmM6IEVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglGaXhlZCBsaXN0IGluc2VydGlvbiBidWcgaW4gQ29Mb2FkTGlicmFyeSgpLgoKCSogaWYxNjMyL3dwcm9jcy5zcGVjLCBtc2Rvcy9NYWtlZmlsZS5pbiwgbXNkb3MvaW50MmYuYywgbXNkb3MvaW50NDEuYywgbXNkb3MvdnhkLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFkZGVkIHN0dWJzIGZvciBzZXZlcmFsIFZ4RHMgLyBpbnRlcnJ1cHRzLgoKCSogaWYxNjMyL3RodW5rLmMsIGluY2x1ZGUvY2FsbGJhY2suaCwgbWlzYy9jYWxsYmFjay5jLCBncmFwaGljcy93aW4xNmRydi9pbml0LmM6CglIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCVNob3VsZCBnZXQgd2luMTZkcnYgQWJvcnRQcm9jIHdvcmtpbmcuIEhvcGVmdWxseS4KCgkqIHdpbmRvd3MvaW5wdXQuYywgd2luZG93cy9rZXlib2FyZC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglNb3ZlZCBHZXRLZXlib2FyZExheW91dE5hbWUxNiB0byB3aW5kb3dzL2lucHV0LmMuCgoJKiBpbmNsdWRlL2ltYWdlaGxwLmgsIGluY2x1ZGUvd2lubnQuaCwgaW5jbHVkZS93aW50eXBlcy5oOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglNb3ZlZCBzb21lIGRlY2xhcmF0aW9ucyBmcm9tIGltYWdlaGxwLmggdG8gY29tbW9uIGluY2x1ZGUgZmlsZXMuCgoJKiByZWxheTMyL2tlcm5lbDMyLnNwZWMsIHdpbjMyL3RocmVhZC5jOgoJUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCUFkZGVkIGltcGxlbWVudGF0aW9ucyBmb3IgSW50ZXJsb2NrZWRFeGNoYW5nZUFkZCgpIGFuZAoJSW50ZXJsb2NrZWRDb21wYXJlRXhjaGFuZ2UoKS4KCgkqIHdpbjMyL2NvbnNvbGUuYywgb2JqZWN0cy9kaWIuYywgb2JqZWN0cy9lbmhtZXRhZmlsZS5jOgoJSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglGaXhlcyBhIGZldyBvZiB0aGUgbWFueSBjb21waWxlciB3YXJuaW5ncy4KCgkqIG1pc2NlbXUvaW5zdHIuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglFbXVsYXRlICJtb3YgY3I0LGVheCIgKHRvbWJyYWlkZXIgMyBkZW1vKS4KCgkqIGdyYXBoaWNzL2RkcmF3LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRG8gbm90IGVudW1lcmF0ZSBEM0QgZGV2aWNlcyB3ZSBjYW4ndCBoYW5kbGUgYW55d2F5LgoJUmV0dXJuIGJpdG1hc2tzIGZvciBoaS90cnVlY29sb3IgZGVwdGhzIGluIEVudW1EaXNwbGF5TW9kZXMuCgoJKiBpZjE2MzIvc25vb3AuYywgaW5jbHVkZS9zbm9vcC5oLCByZWxheTMyL2J1aWx0aW4zMi5jLCByZWxheTMyL3Nub29wLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVNwZWVkIHVwIHJlbGF5MzIsIHNub29wMTYgYW5kIHNub29wMzIgaW5jbHVkZS9leGNsdWRlcyBieSBkb2luZyB0aGVtCglqdXN0IG9uY2UgYXQgY3JlYXRpb24gdGltZS4KCgkqIHJlbGF5MzIvb2xlMzIuc3BlYywgb2xlL2NvbXBvYmouYywgb2xlL29sZTIuYzoKCVBhdmVsIFJvc2tpbiA8cGF2ZWxfcm9za2luQGdlb2NpdGllcy5jb20+CglBZGRlZCBzdHVicyBmb3IgQ29SZXZva2VDbGFzc09iamVjdCBhbmQgT2xlU2V0Q2xpcGJvYXJkLgoKCSogd2luZG93cy93aW4uYzogUGVyIMVuZ3N0cvZtIDxwYW5nQG1pbmQubnU+CglFbnVtVGFza1dpbmRvd3MxNjogQmFzaW5nIHRoZSBzZWxlY3Rpb24gb24gYSB3aW5kb3cncyB0YXNrIGlzIG5vdCBvbmx5Cgltb3JlIHN0cmFpZ2h0Zm9yd2FyZCB0aGFuIGNvbXBhcmluZyBtZXNzYWdlIHF1ZXVlcywgaXQgYWxzbyB3b3JrcwoJYmV0dGVyIGZvciBXaW4zMiBhcHBsaWNhdGlvbnMuCgoJKiBtZW1vcnkvbG9jYWwuYzogSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglDaGFuZ2VkIHNvbWUgb2YgdGhlIG1lc3NhZ2UgY2xhc3Nlcy4KCgkqIHdpbmRvd3Mva2V5Ym9hcmQuYzogRGF2aWQgRmF1cmUgPERhdmlkLkZhdXJlQGluc2EtbHlvbi5mcj4KCVNwZWNpYWwgY2FzZSBoYW5kbGluZyBvZiA6IFNoaWZ0ICsgYXJyb3csIHNoaWZ0ICsgaG9tZSwgLi4uCglYIHJldHVybnMgYSBjaGFyIGZvciBpdCwgYnV0IFdpbmRvd3MgZG9lc24ndC4gSWdub3JlIFggY2hhci4KCUFsc28gYWRkZWQgc29tZSBkb2N1bWVudGF0aW9uLgoKCSogaW5jbHVkZS93aW5zb2NrLmgsIG1pc2Mvd2luc29jay5jOgoJU3RlcGhlbiBMYW5nYXNlayA8dm9ybG9uQGRvZGRzLm5ldD4KCUJ1Z2ZpeGVzIGZvciBJUFggY29kZSBhbmQgcHJlbGltaW5hcnkgZ3JvdW5kd29yayBmb3Igb3RoZXIgYWRkcmVzcwoJZmFtaWx5IHN1cHBvcnQuCgoJKiBvbGUvY29tcG9iai5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCShDb0dldENsYXNzT2JqZWN0KSBvbmUgbWlzc2luZyBDQUxMQkFDSywgZXh0cmVtZWx5IHNpbXBsaWZpZWQgY2xzaWQKCWxvb2t1cCAoUmVnaXN0cnkgaXMgY2FzZSBpbnNlbnNpdGl2ZSkuCgoJKiByZWxheTMyL250ZGxsLnNwZWMsIHdpbjMyL2FkdmFwaS5jLCBkbGxzL250ZGxsL3J0bC5jLCByZWxheTMyL2FkdmFwaTMyLnNwZWM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCVN0dWJzOiBTZXRTZXJ2aWNlU3RhdHVzLCBSZWdpc3RlclNlcnZpY2VDdHJsSGFuZGxlckEvVywKCVN0YXJ0U2VydmljZUN0cmxEaXNwYXRjaGVyMzJBL1csIFJ0bFN5c3RlbVRpbWVUb0xvY2FsVGltZSwKCVJ0bFRpbWVUb1RpbWVGaWVsZHMuCgoJKiBpbmNsdWRlL3dpbmRvd3MuaCwgb2xlL29sZTJubHMuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJU3R1YiBmb3IgR2V0TnVtYmVyRm9ybWF0MzJXLgoKCSogbWlzYy9jcnRkbGwuYzogRGF2aWQgQS4gQ3V0aGJlcnQgPGRhY3V0QGVjZS5jbXUuZWR1PgoJZ2V0cygpIGZpeGVzLgoKCSogb2xlL25scy9ydXMubmxzOiBBbGV4YW5kZXIgVi4gTHVreWFub3YgPGxhdkBsb25nLnlhci5ydT4KCUZpeCBTQ09VTlRSWSwgU05BVElWRUNUUllOQU1FLCBTQUJCUkVWREFZTkFNRTM7IGNoYW5nZSBzb21lIFNNT05USE5BTUUqCgl0byBiZSBpbiBub21pbmF0aXZlIGNhc2UuCgoJKiB3aW5kb3dzL3F1ZXVlLmM6IFBlciDFbmdzdHL2bSA8cGFuZ0BtaW5kLm51PgoJRml4ZWQgU2V0TWVzc2FnZVF1ZXVlMzIgdG8gcmV0dXJuIEZBTFNFLCBub3QgVFJVRSwgd2hlbiBjYWxsZWQgd2l0aAoJYW4gaW52YWxpZCBzaXplIHBhcmFtZXRlci4KCgkqIG11bHRpbWVkaWEvZHNvdW5kLmM6IExpb25lbCBVbG1lciA8dWxtZXJAZGlyZWN0cHJvdmlkZXIubmV0PgoJQWRkZWQgY29ycmVjdCBpbXBsZW1lbnRhdGlvbiBvZiBHZXRDYXBzLCBjaGFuZ2VkIFBsYXkgYW5kIFN0b3AgaGFuZGxpbmcKCW9mIHBvc2l0aW9ucyBpbmRleGVzLCBzdXBwcmVzc2VkIHdhcm5pbmdzLgoKCSogbWVtb3J5L2xvY2FsLmM6IExpb25lbCBVbG1lciA8dWxtZXJAZGlyZWN0cHJvdmlkZXIubmV0PgoJQ29ycmVjdGVkIGJ1ZyBpbiBUUkFDRSBmdW5jdGlvbi4KCgkqIEFVVEhPUlMsIGdyYXBoaWNzL2RkcmF3LmMsIGluY2x1ZGUvYXV0aG9ycy5oLCBpbmNsdWRlL2RkcmF3Lmg6CglMaW9uZWwgVWxtZXIgPHVsbWVyQGRpcmVjdHByb3ZpZGVyLm5ldD4KCUNvcnJlY3RlZCBidWcgaW4gRGlyZWN0RHJhd1N1cmZhY2UgY3JlYXRpb24gYW5kIGhhbmRsaW5nIGZvciBkcml2ZXIKCWJhc2VkIHVwb24gWGxpbGIuCgoJKiB3aW5kb3dzL2RpbnB1dC5jOiBMaW9uZWwgVWxtZXIgPHVsbWVyQGRpcmVjdHByb3ZpZGVyLm5ldD4KCVdpbmUga2V5Ym9hcmQgYW5kIG1vdXNlIGhhdmUgbm93IHRoZWlyIG93biBVSURzLgoKCSogb2JqZWN0cy9icnVzaC5jOiBIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCUZpeCBhbGxvY2F0aW9uIHNpemUgaW4gQ3JlYXRlRElCUGF0dGVybkJydXNoKi4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KU3VuIE5vdiAgOCAxNjo0NDo0MSAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy9kaWFsb2cuYzogTkYgU3RldmVucyA8bm9ybWFuQGFyY2FkeS51LW5ldC5jb20+CglGaXhlZCBrZXlzdHJva2UgYWNjZWxlcmF0b3JzIGluIGRpYWxvZ3Mgd2hpY2ggaGF2ZSBjb250cm9scyBjb250YWluaW5nCglvdGhlciBjb250cm9scyBhcyBjaGlsZCB3aW5kb3dzLgoKCSogaW5jbHVkZS93aW5wcm9jLmgsIG1pc2MvY29tbWRsZy5jLCB3aW5kb3dzL2hvb2suYywgd2luZG93cy93aW5wcm9jLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUZpeGVzOiBMQl8vQ0JfL0VNXyBtZXNzYWdlcyBmb3IgZ2V0dGluZy9zZXR0aW5nIHRleHQgYW5kIGEgYnVnIGluCgkxNi0+MzIgYml0IGNvbnZlcnNpb24uCgoJKiBvYmplY3RzL2RpYi5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVByZXZlbnQgQ3JlYXRlRElCU2VjdGlvbiBmcm9tIHNlZyBmYXVsdGluZyB3aGVuIG9uZSBkaW1lbnNpb24gb2YKCXNlY3Rpb24gaXMgMC4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBpbmNsdWRlL3dpbnNvY2suaCwgbWlzYy93aW5zb2NrLmM6CglTdGVwaGVuIExhbmdhc2VrIDx2b3Jsb25AZG9kZHMubmV0PgoJU3VwcG9ydCBmb3IgSVBYIG5ldHdvcmtpbmcgdmlhIHdpbnNvY2sgdW5kZXIgTGludXguCgoJKiByZWxheTMyL2dkaTMyLnNwZWMsIGdyYXBoaWNzL3BhaW50aW5nLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglBZGRlZCBhIHN0dWIgZm9yIFN0YXJ0RG9jQSBhbmQgRW5kRG9jLgoKCSogcmVsYXkzMi9rZXJuZWwzMi5zcGVjLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCB3aW4zMi9jb25zb2xlLmM6CglKYW1lcyBTdXRoZXJsYW5kIDxKYW1lc1N1dGhlcmxhbmRAZ214LmRlPgoJTW9yZSBjb21wbGV0ZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgU2V0Q3RybEhhbmRsZXIoKSBmdW5jdGlvbiAoYW5kIHRoZQoJcmVsYXRlZCBjb25zb2xlIGZ1bmN0aW9ucykuCgoJKiBvYmplY3RzL2JydXNoLmMsIHJlbGF5MzIvZ2RpMzIuc3BlYzogSmVmZiBKb2hhbm4gPGpqb2hhbm5Aa2l2YS5uZXQ+CglBZGRlZCBDcmVhdGVESUJQYXR0ZXJuQnJ1c2hQdCAoR0RJMzIuMzUpIHdpdGggbWlub3IgZG9jdW1lbnRhdGlvbgoJdXBkYXRlcy4KCgkqIGdyYXBoaWNzL3ZnYS5jLCBpbmNsdWRlL3ZnYS5oLCBtc2Rvcy9pb3BvcnRzLmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVNpbXVsYXRlIHRoZSBWR0EgdmVydGljYWwgcmVmcmVzaC4KCgkqIGdyYXBoaWNzL2RkcmF3LmM6IExpb25lbCBVbG1lciA8dWxtZXJAZGlyZWN0cHJvdmlkZXIubmV0PgoJQWRkZWQgc3VwcG9ydCBvZiBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIHJlY3RhbmdsZXMgaW4gQmxpdCBmdW5jdGlvbi4KCgkqIGluY2x1ZGUvZGlucHV0LmgsIHdpbmRvd3MvZGlucHV0LmM6CglMaW9uZWwgVWxtZXIgPHVsbWVyQGRpcmVjdHByb3ZpZGVyLm5ldD4KCUFkZGVkIGRldmljZSB0eXBlIGNvbnN0YW50cyBhbmQgdXNlZCB0aGVtIGluIGRldmljZSBlbnVtZXJhdGlvbgoJZnVuY3Rpb24uCgoJKiBtaXNjL3JlZ2lzdHJ5LmM6IFV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUFQSSBkb2N1bWVudGF0aW9uIHNheXMgdGhhdCBSZWdFbnVtS2V5RXgsIFJlZ0VudW1WYWx1ZSBhbmQKCVJlZ1F1ZXJ5SW5mb0tleSB0YWtlcyB0aGUgc2l6ZSBvZiB0aGUgYnVmZmVycyBhcyBjaGFyYWN0ZXJzLgoKCSogb2xlL2NvbXBvYmouYzogQWRkZWQgbWlzc2luZyAjaW5jbHVkZSAiY29uZmlnLmgiCgoJKiBBVVRIT1JTLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgaW5jbHVkZS9hdXRob3JzLmgsIGluY2x1ZGUvY29uZmlnLmguaW4sIG9sZS9jb21wb2JqLmM6CglKdXN0aW4gQnJhZGZvcmQgPGp1c3RpbkB1a2Fucy5lZHU+CglSZXBsYWNlcyBDb0NyZWF0ZUd1aWQgc3R1YiB3aXRoIGFuIGltcGxlbWVudGF0aW9uIG9mIERDRSdzIFVVSUQKCXNwZWNpZmljYXRpb24uIEFsc28gcmVtb3ZlcyBzb21lIHVubmVjZXNzYXJ5IGNvZGUgZnJvbSBTdHJpbmdGcm9tQ0xTSUQuCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmgsIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbnR5cGVzLmg6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglBZGRlZCBhbiBleHRlcm4gIkMiIHNhZmVndWFyZC4KCgkqIGluY2x1ZGUvY29tbWRsZy5oLCBpbmNsdWRlL3dpbmRvd3MuaCwgd2luZG93cy9pbnB1dC5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJLSBhZGRzIEdldEV4aXRDb2RlUHJvY2VzcwoJLSBjb3JyZWN0cyB0aGUgcmV0dXJuLXR5cGUgb2YgR2V0S2V5U3RhdGUKCS0gY29ycmVjdHMgdGhlIHdpbmVsaWIgZGVmaW5pdGlvbiBvZiBJc0RpYWxvZ01lc3NhZ2UKCS0gYWRkcyB3aW5lbGliIGRlZmluaXRpb25zIGZvciBQcmludERsZwoKCSogb2JqZWN0cy9jbGlwcGluZy5jOiBSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJRXh0U2VsZWN0Q2xpcFJnbiBmaXg6IFJHTl9ESUZGIGRpZCBub3Qgd29yay4KCgkqIG9iamVjdHMvY3Vyc29yaWNvbi5jLCB3aW5kb3dzL2V2ZW50LmMsIHdpbmRvd3MvbWVzc2FnZS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBZGFwdGVkIHRvIG5ldyBpbnB1dCBldmVudCBoYW5kbGluZy4KCgkqIGlmMTYzMi90aHVuay5jLCBpZjE2MzIvdXNlci5zcGVjLCBpbmNsdWRlL2lucHV0LmgsIGluY2x1ZGUvd2luZG93cy5oLCByZWxheTMyL3VzZXIzMi5zcGVjLCB3aW5kb3dzL01ha2VmaWxlLmluLCB3aW5kb3dzL2lucHV0LmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVVTRVItc2lkZSBwYXJ0IG9mIGlucHV0IGV2ZW50IGhhbmRsaW5nOiBjb250YWlucyBpbXBsZW1lbnRhdGlvbiBvZgoJa2V5YmRfZXZlbnQgYW5kIG1vdXNlX2V2ZW50LCBhbmQgVVNFUi1yZWxhdGVkIGNvZGUgcmVtb3ZlZCBmcm9tCgl3aW5kb3dzL2V2ZW50LmMgYW5kIHdpbmRvd3Mva2V5Ym9hcmQuYy4KCgkqIHdpbmRvd3MvZGlzcGxheS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglTdHVicyBmb3IgRElTUExBWS5EUlYgcmVtb3ZlZCBmcm9tIGtleWJvYXJkLmMuCgoJKiBpZjE2MzIvbW91c2Uuc3BlYywgaW5jbHVkZS9tb3VzZS5oLCB3aW5kb3dzL21vdXNlLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUltcGxlbWVudGF0aW9uIG9mIE1PVVNFLkRSViAoY29udGFpbnMgc29tZSBjb2RlIHRha2VuIGZyb20KCXdpbmRvd3MvZXZlbnQuYykuCgoJKiBpZjE2MzIva2V5Ym9hcmQuc3BlYywgaW5jbHVkZS9rZXlib2FyZC5oLCB3aW5kb3dzL2tleWJvYXJkLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUltcGxlbWVudGF0aW9uIG9mIEtFWUJPQVJELkRSViAoY29kZSBtb3N0bHkgdGFrZW4gZnJvbSBwcmV2aW91cwoJd2luZG93cy9rZXlib2FyZC5jKS4KCgkqIGxvYWRlci9tYWluLmMsIGxvYWRlci90YXNrLmMsIG1pc2NlbXUvbWFpbi5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IHJlYWxseSAqZG8qIHN3aXRjaCB0byB0aGUgaW5pdGlhbCB0YXNrJ3Mgc3RhY2suCglDYWxsTGFyZ2VTdGFjayBtZWNoYW5pc20gcmUtZW5hYmxlZC4KCgkqIGluY2x1ZGUvZGVidWcuaCwgaW5jbHVkZS9kZWJ1Z2RlZnMuaDoKCUVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglOZXcgRmlsZXMuIEFkZGVkICdkYXRlIGFuZCB0aW1lIHBpY2tlcicgYW5kICdtb250aCBjYWxlbmRhcicgY29udHJvbAoJZHVtbWllcy4gVGhleSBhcmUgdXNlZCBieSBPdXRsb29rIEV4cHJlc3MuCgoJKiBvbGUvb2xlMi5jLCByZWxheTMyL29sZTMyLnNwZWM6CglFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJQWRkZWQgc3R1YiBmb3IgQ3JlYXRlQmluZEN0eCgpIGFuZCBhZGRlZCBtaXNzaW5nIENvR2V0Q2xhc3NPYmplY3QoKQoJdG8gKi5zcGVjIGZpbGUuIE1ha2VzIEludGVybmV0IEV4cGxvcmVyIDQuMDEgaGFwcHkgOy0pCgoJKiBkbGxzL2NvbWN0bDMyL3BhZ2VyLmM6IEVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglMaXR0bGUgaW1wcm92ZW1lbnQuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IEVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglBZGRlZCBwcmVsaW1pbmFyeSBoaXQgdGVzdGluZy4gTWFrZXMgcmVnZWRpdC5leGUgaGFwcHkgOy0pCgoJKiBkb2N1bWVudGF0aW9uL2NvbW1vbl9jb250cm9scywgZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYzoKCUVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglJbXByb3ZlZCBkb2N1bWVudGF0aW9uIGFuZCBmaXhlZCB0eXBvcy4KCgkqIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYywgcmVsYXkzMi9jb21jdGwzMi5zcGVjOgoJRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUFkZGVkIERyYXdTdGF0dXNUZXh0MzJBVygpIGFuZCBDcmVhdGVTdGF0dXNXaW5kb3czMkFXKCkuCgoJKiBkbGxzL2NvbWN0bDMyL3JlYmFyLmM6IEVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglJbXByb3ZlZCBkaXNwbGF5IGFuZCBsYXlvdXQgY29kZS4KCgkqIGRsbHMvY29tY3RsMzIvTWFrZWZpbGUuaW4sIGRsbHMvY29tY3RsMzIvZGF0ZXRpbWUuYywgZGxscy9jb21jdGwzMi9tb250aGNhbC5jLCBpbmNsdWRlL2NvbW1jdHJsLmgsIGluY2x1ZGUvZGF0ZXRpbWUuaCwgaW5jbHVkZS9tb250aGNhbC5oOgoJRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCU5ldyBGaWxlcy4gQWRkZWQgJ2RhdGUgYW5kIHRpbWUgcGlja2VyJyBhbmQgJ21vbnRoIGNhbGVuZGFyJyBjb250cm9sCglkdW1taWVzLiBUaGV5IGFyZSB1c2VkIGJ5IE91dGxvb2sgRXhwcmVzcy4KClNhdCBOb3YgIDcgMTI6NTY6MzIgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG9iamVjdHMvZW5obWV0YWZpbGUuYywgcmVsYXkzMi9nZGkzMi5zcGVjLCBpbmNsdWRlL3dpbmRvd3MuaDoKCUNoYXJsZXMgU3VwcmluIDxjc3VwcmluQGx5bnguZGFjLm5ldS5lZHU+CglBZGRlZCBzdHVicyBmb3IgU2V0V2luTWV0YUZpbGVCaXRzIGFuZCBHZXRFbmhNZXRhRmlsZVBhbGV0dGVFbnRyaWVzLgoKCSogZ3JhcGhpY3MveDExZHJ2L2dyYXBoaWNzLmM6CglIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCVN0b3AgWDExRFJWX1JvdW5kUmVjdCBjYWxsaW5nIFhEcmF3QXJjIHdpdGggLXZlIHdpZHRoL2hlaWdodCBwYXJhbXMKCXdoaWNoIGl0IGRpZCBpZiBlaXRoZXIgZWxsaXBzZSBkaW1lbnNpb24gd2FzIHplcm8uCgoJKiBncmFwaGljcy9wYWludGluZy5jOiBIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCU9wdGltaXplIFJvdW5kUmVjdDMyIHRvIGNhbGwgUmVjdGFuZ2xlMzIgaWYgZWl0aGVyIGVsbGlwc2UgZGltZW5zaW9uCglpcyB6ZXJvLgoKCSogcmVsYXkzMi9tcHIuc3BlYywgbWlzYy9uZXR3b3JrLmM6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglBZGRlZCBzdHViIFdOZXRFbnVtQ2FjaGVkUGFzc3dvcmRzLgoKCSogbXNkb3MvaW50MjEuYywgbXNkb3MvaW50MjUuYzoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCU1hZGUgdGhpcyBmaWxlIERPU01PRCBmcmllbmRseS4KCgkqIGxvYWRlci9uZS9zZWdtZW50LmMsIGxvYWRlci9wZV9pbWFnZS5jOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJVW5pZmllZCAiTm8gaW1wbGVtZW50YXRpb24gZm9yLi4uIiB3YXJuaW5ncy4KCgkqIHdpbjMyL2RldmljZS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCW1vbm9kZWJnLnZ4ZCB1c2VkIGJ5IHNvbWUgT3JpZ2luIHByb2dyYW1zIGltcGxlbWVudGVkLgoKCSogb2JqZWN0cy9iaXRtYXAuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUZhaWwgaWYgbGVzcyB0aGVuIG9uZSBlbnRpcmUgbGluZSByZXF1ZXN0ZWQgaW4gR2V0Qml0bWFwQml0czMyLgoKCSogd2luZG93cy93aW5wcm9jLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglBZGRlZCBXTV9HRVRETEdDT0RFIGhhbmRsaW5nIGluIChVbilNYXBNc2czMkF0bzE2LgoKCSogaWYxNjMyL2NvbXBvYmouc3BlYywgaW5jbHVkZS9vbGUuaCwgb2xlL2NvbXBvYmouYywgcmVsYXkzMi9vbGUzMi5zcGVjOgoJSm9obiBSaWNoYXJkc29uIDxqcmljaGFyZEB6ZWFsYW5kLm12LmNvbT4KCUltcGxlbWVudGF0aW9uIG9mIENvTG9hZExpYnJhcnksIENvRnJlZUFsbExpYnJhcmllcywKCUNvRnJlZVVudXNlZExpYnJhcmllcywgQ29GcmVlTGlicmFyeS4KCUZpeGVkIG1pc3NwZWxsaW5nIG9mIENvVW5pbml0aWFsaXplLgoKCSogcHJvZ3JhbXMvY2xvY2svQ2hhbmdlTG9nLCBwcm9ncmFtcy9jbG9jay9tYWluLmM6CglSb2JlcnQgUG91bGlvdCA8a3J5bm9zQGNsaWMubmV0PgoJRml4ZXMgZm9yIG90aGVyIGxhbmd1YWdlcy4KCkZyaSBOb3YgIDYgMTc6MzY6MTMgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG1pc2MvcmVnaXN0cnkuYzogSm9obiBSaWNoYXJkc29uIDxqcmljaGFyZEB6ZWFsYW5kLm12LmNvbT4KCUZpeCB3aWRlIGNoYXJhY3RlciBmdW5jdGlvbnMgdG8gcmV0dXJuIGNoYXJhY3RlciBjb3VudCBpbiBjaGFyYWN0ZXIKCXF1YW50aXRpZXMgbm90IGJ5dGUgcXVhbnRpdGllcy4gIE1ha2UgUmVnUXVlcnlJbmZvS2V5IGFuZAoJUmVnUXVlcnlJbmZvS2V5IGJlaGF2ZSBjb3JyZWN0bHkgaW4gd2luOTUgbW9kZS4KCgkqIGluY2x1ZGUvZGlucHV0LmgsIHdpbmRvd3MvZGlucHV0LmM6CglMaW9uZWwgVWxtZXIgPHVsbWVyQGRpcmVjdHByb3ZpZGVyLm5ldD4KCUNoYW5nZWQgbW91c2UgYnV0dG9uIG1hcHBpbmcgYW5kIGNoZWNrIHNpemUgb2YgcmV0dXJuIGJ1ZmZlci4KCgkqIG9iamVjdHMvY2xpcHBpbmcuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCUV4dFNlbGVjdENsaXBSZ24oKSB3aXRoIFJHTl9DT1BZIGNvcGllcyB0aGUgd3JvbmcgcmVnaW9uLgoKCSogZmlsZXMvZmlsZS5jOiBVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglGaXhlZCBhbiBlcnJvciBpbiB0aGUgaW1wbGVtZW50YXRpb24gb2YgRklMRV9TaGFyZURlbnkuCgoJKiBzY2hlZHVsZXIvaGFuZGxlLmMsIGlmMTYzMi90aHVuay5jLCBpbmNsdWRlL2RlYnVndG9vbHMuaCwgaW5jbHVkZS9zaWdfY29udGV4dC5oLCBtdWx0aW1lZGlhL21tc3lzdGVtLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVNvbGFyaXMgcmVkZWZpbmVzIEVSUiBhbmQgQ1MsIGZpeGVkIG9jY3VyYW5jZXMuCglTb2xhcmlzIGhhcyBUUkFQTk8gaW4gaXRzIHNpZ2NvbnRleHQsIGFkZGVkIHRvIHNpZ19jb250ZXh0LmgKCgkqIGluY2x1ZGUvbW1zeXN0ZW0uaCwgbXVsdGltZWRpYS9tbWlvLmMsIHJlbGF5MzIvd2lubW0uc3BlYywgaWYxNjMyL21tc3lzdGVtLnNwZWM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCU1hZGUgbW1pb1NldEJ1ZmZlciBjYWxsYWJsZSBmcm9tIDE2IGFuZCAzMiBiaXQgY29kZS4KCgkqIGNvbnRyb2xzL21lbnUuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglGaXhlZCB3cm9uZyBhcmcgdHlwZS4KCgkqIG9iamVjdHMvZGliLmMsIG9iamVjdHMvZ2Rpb2JqLmMsIGdyYXBoaWNzL3gxMWRydi9NYWtlZmlsZS5pbiwgZ3JhcGhpY3MveDExZHJ2L2RpYi5jLCBncmFwaGljcy94MTFkcnYvaW5pdC5jLCBpbmNsdWRlL3gxMWRydi5oOgoJSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglNb3ZlZCBYMTEgRElCIHN0dWZmIHRvIHgxMWRydi4KCgkqIHdpbjMyL2NvZGVfcGFnZS5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJVGhlIEFQSSBmb3IgV2lkZUNoYXJUb011bHRpQnl0ZSBzYXlzIHRoYXQgdGhlIHNyYy1zdHJpbmcgaGFzIG9ubHkgdG8gYmUKCXRyZWF0ZWQgYXMgTlVMTC10ZXJtaW5hdGVkIGlmIHNyY2xlbiBpcyAtMS4KCgkqIGluY2x1ZGUvd2luLmgsIHdpbmRvd3MvZXZlbnQuYywgd2luZG93cy93aW4uYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJTWFkZSBzdXJlIENvbmZpZ3VyZU5vdGlmeSBpcyBwcm9jZXNzZWQgYmVmb3JlIEV4cG9zZSwgZGVmZXJyaW5nIHRoZQoJRXhwb3NlIGV2ZW50IGlmIG5lY2Vzc2FyeSwgdGh1cyB3b3JraW5nIGFyb3VuZCBhIFdNIGZsYXcgd2l0aCB2aXJ0dWFsCglkZXNrdG9wIHNjcm9sbGluZyBpbiAtbWFuYWdlZCBtb2RlLgoKCSogcmVzb3VyY2VzL3N5c3Jlc19Gci5yYzogRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQGxlbWVsLmZyPgoJVHJhbnNsYXRlZCBpbiBGcmVuY2ggKG5vdCBzbyBnb29kIGFueWhvdykgbWVzc2FnZSBmb3IgdGhlIG1hcmsgb24KCXN5c3RlbSBtZW51LgoKCSogbWlzYy9tYWluLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJQ2hhbmdlZCB0aGUgZGVmYXVsdCBmcm9tIDAgdG8gMHg0MDkgKGVuZy11cykuCgoJKiB3aW5kb3dzL21kaS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVR3byBtaXNzaW5nIFdJTkFQSXMuCgoJKiBpbmNsdWRlL2ludGVyZmFjZXMuaDogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglGaXhlZCBvbmUgd3JvbmcgcGFyYW1ldGVyLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW46IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRml4ZWQgLS1kaXNhYmxlLWxpYi4KClRodSBOb3YgIDUgMTA6MzM6MTggMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaDogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglDb25zdGFudHMgZm9yIGNvbnRyb2xzIGluIGNvbW1vbiBkaWFsb2dzLgoKV2VkIE5vdiAgNCAxODowODozMyAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbWlzYy9jcnRkbGwuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglGaXhlZCBzb21lIGNvbXBpbGVyIHdhcm5pbmdzLgoKU3VuIE5vdiAgMSAxOToyNzoyNCAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3Mvbm9uY2xpZW50LmMsIHdpbmRvd3MvcGFpbnRpbmcuYywgd2luZG93cy93aW5oZWxwLmMsIHdpbmRvd3Mvd2lucG9zLmMsIG1pc2MvY29tbWRsZy5jLCBtaXNjL3NoZWxsLmMsIG1pc2Mvd2luc29jay5jLCBtaXNjZW11L2luc3RyLmMsIG11bHRpbWVkaWEvYXVkaW8uYywgbXVsdGltZWRpYS9qb3lzdGljay5jLCBvYmplY3RzL2JpdG1hcC5jLCBvYmplY3RzL2NsaXBwaW5nLmMsIG9iamVjdHMvY29sb3IuYywgb2JqZWN0cy9jdXJzb3JpY29uLmMsIG9iamVjdHMvZGliLmMsIHRvb2xzL3dyYy9kdW1wcmVzLmMsIHRvb2xzL3dyYy9wYXJzZXIubCwgd2luZG93cy9jbGlwYm9hcmQuYywgd2luZG93cy9tZGkuYywgZmlsZXMvZmlsZS5jLCBncmFwaGljcy94MTFkcnYveGZvbnQuYywgbWVtb3J5L2hlYXAuYzoKCUplc3BlciBTa292IDxqc2tvdkBjeWdudXMuY28udWs+CgllZ2NzICdhbWJpZ3VvdXMgZWxzZScgd2FybmluZ3MgZml4ZXMuCgoJKiBpbmNsdWRlL3Rvb2xoZWxwLmgsIGluY2x1ZGUvd2luZG93cy5oLCBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglHZXQgcmlkIG9mIHRoZSByZWRlZmluaXRpb24gb2YgTUFYX1BBVEggYW5kIG1vdmUgUFJPQ0VTU0VOVFJZMzIKCWRlZmluaXRpb24gdG8gdG9vbGhlbHAuaC4KCgkqIHdpbmRvd3Mvd2luLmMsIGluY2x1ZGUvcGVfaW1hZ2UuaCwgbGlicmFyeS93aW5lc3R1Yi5jLCBsb2FkZXIvZWxmLmMsIGxvYWRlci9tb2R1bGUuYywgbG9hZGVyL3Jlc291cmNlLmMsIG1pc2MvY2FsbGJhY2suYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJUnVuIFdpbmVsaWIgYXBwbGljYXRpb25zIGFzIDMyLWJpdCBwcm9jZXNzZXMgaW4gdGhlIGluaXRpYWwgdGFzay4KCVNpbXBsaWZpZWQvcmVtb3ZlZCBzZXZlcmFsIHNwZWNpYWwgJ2lmIChfX3dpbmVsaWIpJyBjYXNlcyBpbgoJV2luZSBtYWluIGNvZGUgb2Jzb2xldGVkIGJ5IHRoYXQgY2hhbmdlLgoKCSogd2luZG93cy9ldmVudC5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUNhbGwgbW91c2UgZHJpdmVyIGNhbGxiYWNrIGFsc28gaWYgd2luZG93cyBhcmUgbm90IHJlZ2lzdGVyZWQgd2l0aCBYCgkoaWYgdXNpbmcgbmF0aXZlIFVTRVIuRVhFKS4KCgkqIG1lbW9yeS9hdG9tLmMsIGluY2x1ZGUvYXRvbS5oOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBZGFwdGVkIHRvIHNlcGFyYXRpb24gYmV0d2VlbiBLRVJORUwgYW5kIFVTRVIuCgoJKiBpZjE2MzIvYnVpbHRpbi5jLCBpbmNsdWRlL21haW4uaCwgbG9hZGVyL21haW4uYywgbG9hZGVyL3Rhc2suYywgbWlzY2VtdS9tYWluLmMsIHJlbGF5MzIvZ2RpMzIuc3BlYywgcmVsYXkzMi9rZXJuZWwzMi5zcGVjLCByZWxheTMyL3VzZXIzMi5zcGVjLCBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglJbXBsZW1lbnRlZCBuZXcgV2luZSBzdGFydHVwIHNlcXVlbmNlLCBzZXBhcmF0aW5nIHN0YXJ0dXAgaW50bwoJS0VSTkVML1VTRVIvR0RJIHJlbGF0ZWQgcGFydHMsIGFsbG93aW5nIG5hdGl2ZSByZXBsYWNlbWVudC4KCUltcGxlbWVudGVkIGluaXRpYWwgJ2tlcm5lbCcgdGFzay4KCgkqIGluY2x1ZGUvb2xlLmgsIGluY2x1ZGUvd2luZXJyb3IuaCwgb2xlL2NvbXBvYmouYzoKCUpvaG4gUmljaGFyZHNvbiA8anJpY2hhcmRAemVhbGFuZC5tdi5jb20+CglJbXBsZW1lbnRhdGlvbiBvZiBJbnByb2NTZXJ2ZXIzMiBDb0dldENsYXNzT2JqZWN0LgoKCSogaW5jbHVkZS9iaXRtYXAuaCwgb2JqZWN0cy9iaXRtYXAuYywgb2JqZWN0cy9jdXJzb3JpY29uLmMsIG9iamVjdHMvb2VtYml0bWFwLmMsIGdyYXBoaWNzL3gxMWRydi9iaXRtYXAuYzoKCUh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJTW9yZSBiaXRtYXAgZml4ZXMuCgoJKiB3aW5kb3dzL3dpbnByb2MuYzogRml4ZWQgY3Jhc2hlcyB3aXRoIFdNX0dFVERMR0NPREUgdHJhbnNsYXRpb24uCgoJKiBwcm9ncmFtcy93aW5oZWxwL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW52ZXIvTWFrZWZpbGUuaW4sIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3MveDExZHJ2Ly5jdnNpZ25vcmUsIHdpbmRvd3MveDExZHJ2L01ha2VmaWxlLmluLCB3aW5kb3dzL3gxMWRydi9pbml0LmMsIGluY2x1ZGUvY29uZmlnLmguaW4sIGluY2x1ZGUvd2luLmgsIGxpYnRlc3QvTWFrZWZpbGUuaW4sIHByb2dyYW1zL2Nsb2NrL01ha2VmaWxlLmluLCBwcm9ncmFtcy9jb250cm9sL01ha2VmaWxlLmluLCBwcm9ncmFtcy9ub3RlcGFkL01ha2VmaWxlLmluLCBwcm9ncmFtcy9wcm9nbWFuL01ha2VmaWxlLmluLCBwcm9ncmFtcy9yZWd0ZXN0L01ha2VmaWxlLmluLCBwcm9ncmFtcy92aWV3L01ha2VmaWxlLmluLCBNYWtlLnJ1bGVzLmluLCBNYWtlZmlsZS5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGluY2x1ZGUvYWNjb25maWcuaDoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJU3RhcnRlZCBtb3Zpbmcgc29tZSBYMTEgd2luZG93IG1hbmFnZW1lbnQgY29kZSB0byB3aW5kb3dzL3gxMWRydi4KCgkqIGlmMTYzMi91c2VyLnNwZWMsIHdpbmRvd3MvZGlhbG9nLmMsIHdpbmRvd3Mvd2lucHJvYy5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglGaXhlZCBJc0RpYWxvZ01lc3NhZ2UxNi4KCgkqIE1ha2VmaWxlLmluOiBEb3VnbGFzIFJpZGd3YXkgPHJpZGd3YXlAd2luZWhxLmNvbT4KCVRlbGwgcGVvcGxlIHRvIGlnbm9yZSB0aGUgJ2dldHMnIHdhcm5pbmcuIFNvbWUgd2lsbCBsaXN0ZW4uCgoJKiBncmFwaGljcy94MTFkcnYvYml0bWFwLmMsIHdpbmRvd3MvZ3JhcGhpY3MuYzoKCUh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJQSBjb3VwbGUgb2Ygc21hbGwgZml4ZXMgdG8gbXkgYml0bWFwIHBhdGNoLgoKCSogcmVzb3VyY2VzL1RPRE8sIHJlc291cmNlcy9zeXNyZXNfRGUucmMsIHJlc291cmNlcy9zeXNyZXNfRW4ucmMsIHdpbmRvd3Mvbm9uY2xpZW50LmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglBbGxvdyB0aGUgdXNlciB0byBwdXQgYSBtYXJrIGluIHRoZSBkZWJ1ZyBsb2cgYnkgYWRkaW5nIGEgaXRlbSBpbiB0aGUKCVNZU01FTlUuIFRoZSBtZXNzYWdlcyBuZWVkcyBpbXBsZW1lbnRhdGlvbiBpbiBhbGwgb3RoZXIgbGFuZ3VhZ2VzIHRoYW4KCUVuZ2xpc2ggYW5kIEdlcm1hbi4KCgkqIGZpbGVzL2ZpbGUuYzogVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJR2l2ZSB0ZW1wZmlsZSBhIGRpZmZlcmVudCBuYW1lIGV2ZW4gaWYgdGhleSBhcmUgY3JlYXRlZCBpbiB0aGUgc2FtZQoJc2Vjb25kLiBSZW1vdmVkIHNvbWUgZml4bWVzIGZyb20gdGhlIFNoYXJlRGVueSBzdHVmZi4KCgkqIGluY2x1ZGUvbWRpLmgsIGluY2x1ZGUvd2luZG93cy5oLCByZWxheTMyL3VzZXIzMi5zcGVjLCB3aW5kb3dzL21kaS5jLCB3aW5kb3dzL3dpbi5jOgoJUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCUNyZWF0ZVdpbmRvd0V4MzJbQVddIG5vdyBjcmVhdGVzIGFuIE1ESSBjaGlscyB3aGVuIHRoZSBXTV9FWF9NRElDSElMRAoJZXh0ZW5kZWQgc3R5bGUgaXMgc3BlY2lmaWVkLiBBbHNvIGltcGxlbWVudGVkIENyZWF0ZU1ESVdpbmRvdzMyQSgpCgljYWxsIC0gc2luZ2xlIHRocmVhZCBvbmx5IC0uCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRXJyZWQgaW4gdGhlIGJpdCBtYWNyb3MgaW4gdHJlZXZpZXcuYy4gU2hpZnRjb3VudHMgd2VyZSB3cm9uZy4KCgkqIGxvYWRlci9wZV9pbWFnZS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCURldGVjdGlvbiBvZiB0aGUgZW5kIG9mIGltcG9ydHMgd2l0aCBDaGFyYWN0ZXJpc3RpY3MgMCBmYWlsIGZvciBCb3JsYW5kCglwcm9ncmFtcyAod2hpY2ggc2VlbSB0byBoYXZlIGFsd2F5cyBjaGFyYWN0ZXJpc3RpY3MgMCkuIENoYW5nZWQgdG8gYWxnb3JpdGhtCgl0byBzb21ldGhpbmcgYSBiaXQgbW9yZSBpbnRlbGxpZ2VudC4KCgkqIG9sZS9jb21wb2JqLmMsIHJlbGF5MzIvb2xlMzIuc3BlYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglBZGRlZCBDb0ZyZWVMaWJyYXJ5IHN0dWIuCgoJKiBSRUFETUU6IFVwZGF0ZWQgRkFRIGxvY2F0aW9uLgoKCSogZ3JhcGhpY3MvZXNjYXBlLmM6IEh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJSW1wbGVtZW50IFNFR1BUUiBjb252ZXJzaW9uIGZvciBTVEFSVERPQyBpbiBFc2NhcGUzMigpLgoKCSogb2JqZWN0cy9kYy5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogU2V0RENTdGF0ZSBkaWQgbm90IHJlc2V0IGNsaXBwaW5nIHJlZ2lvbiB0byBlbXB0eS4KCgkqIHdpbjMyL2luaXQuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCBzbWFsbCBvZmYgYnkgb25lIGVycm9yIGluIEdldENvbXB1dGVyTmFtZTMyVywgYWx3YXlzIGtpbGxlZCB0aGUKCWxhc3QgY2hhcmFjdGVyIG9mIGEgaG9zdG5hbWUuCgoJKiBvYmplY3RzL2RpYi5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCURvbid0IEhlYXBGcmVlKCkgY29sb3JtYXAgaWYgd2UgZGlkbid0IGFsbG9jYXRlIG9uZS4KCgkqIHdpbjMyL2FkdmFwaS5jLCB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy91c2VyLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBpbmNsdWRlL3dpbnR5cGVzLmgsIG1pc2MvY3J0ZGxsLmMsIG1pc2MvcHJpbnRkcnYuYywgcmVsYXkzMi9hZHZhcGkzMi5zcGVjLCByZWxheTMyL2NydGRsbC5zcGVjLCByZWxheTMyL21wci5zcGVjLCByZWxheTMyL3NoZWxsMzIuc3BlYywgcmVsYXkzMi91c2VyMzIuc3BlYywgcmVsYXkzMi93aW5zcG9vbC5zcGVjOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBzdHVicyBmb3IgdXNlcjMyLGFkdmFwaTMyIGZ1bmN0aW9ucy4KCgkqIE1ha2VmaWxlLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9udGRsbC8qLCBpbmNsdWRlL250ZGxsLmgsIG1pc2MvQXR0aWMvbnRkbGwuYywgbWlzYy9NYWtlZmlsZS5pbiwgcmVsYXkzMi9udGRsbC5zcGVjOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglNb3JlIE50KiBhbmQgUnRsKiBmdW5jdGlvbiBzdHVicywgbW92ZWQgbnRkbGwuYyB0byBkbGxzL250ZGxsLy4KCgkqIG1lbW9yeS9sb2NhbC5jLCBtZW1vcnkvaGVhcC5jOiBBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglDaGFuZ2VkIG1hbnkgV0FSTigpcyByZWxhdGVkIHRvIGludGVybmFsIFdpbmUgbWVtb3J5IGZhaWx1cmVzIHRvCglFUlIoKXMuCgoJKiBpZjE2MzIva2VybmVsLnNwZWMsIHNjaGVkdWxlci9wcm9jZXNzLmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglBZGRlZCAuc3BlYyBlbnRyeSBmb3IgS0VSTkVMLlJlZ2lzdGVyU2VydmljZVByb2Nlc3MuCgoJKiBpZjE2MzIvZGlzcGxheS5zcGVjLCB3aW5kb3dzL2tleWJvYXJkLmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglBZGRlZCBzdHViIGZvciBDaGVja0N1cnNvcigpLgoKCSogaW5jbHVkZS9kaWFsb2cuaCwgd2luZG93cy9kZWZkbGcuYzogVGltIE5ld3NvbWUgPG51aXNhbmNlQGNtdS5lZHU+CglGaXggZm9yIG5vbi1tb2RhbCBkaWFsb2cgY2xvc2luZy4KCgkqIHdpbmRvd3MvZGlucHV0LmM6IERhdmlkIEZhdXJlICA8ZmF1cmVAa2RlLm9yZz4KCVJld3JvdGUgdGhlIHR3byByb3V0aW5lcyB1c2luZyB0aGUgdmtleS0+c2NhbmNvZGUgYXJyYXkgdG8gdXNlCglrZXljMnZrZXkgZm9yIGVhY2gga2V5Y29kZSwgaW5zdGVhZC4gTm90IHRlc3RlZC4KCVJlbW92ZWQgdW51c2VkIElEaXJlY3RJbnB1dERldmljZUFfR2V0RGV2aWNlU3RhdGUuCglGaXhlZCB3YXJuaW5nIGluIFRSQUNFKCkgY2FsbC4KCgkqIHdpbmRvd3Mva2V5Ym9hcmQuYzogRGF2aWQgRmF1cmUgPGZhdXJlQGtkZS5vcmc+CglEZWxldGVkIHRoZSB2a2V5LT5zYW5jb2RlIGFycmF5LCBiZWNhdXNlIFFXRVJUWSBzcGVjaWZpYy4KCUJhY2sgdG8gdXNpbmcgdGhlIFgga2V5Y29kZSBpbnN0ZWFkIGFzIHRoZSBzY2FuY29kZS4gVGVzdGVkLgoKCSogZ3JhcGhpY3MvcHNkcnYvaW5pdC5jOgoJSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglQcmludCBhIG1lc3NhZ2UgaWYgdGhlIFBvc3RTY3JpcHQgZHJpdmVyIGNhbid0IGZpbmQgYSBQUEQgZmlsZS4KCgkqIG1zZG9zL2ludDEwLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQWRkZWQgVkdBIDI1Ni1jb2xvciBtb2RlIDB4MTMgdXNpbmcgdGhlIERpc3BsYXlEaWIgVkdBIGVtdWxhdGlvbi4KCShET1MgYXBwcy9nYW1lcyB1c2luZyB0aGlzIG1vZGUgY29tZXMgdXAgbm93LCBhbHRob3VnaCB5b3UgY2FuJ3QKCXJlYWxseSBkbyBhbnl0aGluZyB3aXRoIHRoZW0gKHlldD8pLikKCgkqIG1zZG9zL2RwbWkuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglVc2UgbWFjcm8gVjg2X0ZMQUcuCgoJKiBtc2Rvcy9kb3NtZW0uYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglTZXQgZGVmYXVsdCB2aWRlbyBtb2RlIHRvIDMgKDgweDI1IGNvbG9yKS4KCgkqIGxvYWRlci9kb3MvZG9zbW9kLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJSWdub3JlcyBhIGNvdXBsZSBvZiBzaWduYWxzLgoKCSogZ3JhcGhpY3MvTWFrZWZpbGUuaW4sIGdyYXBoaWNzL2Rpc3BkaWIuYywgZ3JhcGhpY3MvdmdhLmMsIGluY2x1ZGUvdmdhLmgsIG1zZG9zL2lvcG9ydHMuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJTW92ZWQgVkdBLWVtdWxhdGluZyBEaXJlY3RYIGNvZGUgZnJvbSBkaXNwZGliLmMgdG8gYSBzZXBhcmF0ZQoJZmlsZS4gTWFkZSBpdCB1c2UgYSBzeXN0ZW0gdGltZXIgYW5kIHRyYXAgSS9PIGFjY2Vzc2VzIHRvIHRoZSBWR0EKCURBQyByZWdpc3RlcnMgdG8gYWNjb21tb2RhdGUgRGlzcGxheURpYi11c2luZyBwcm9ncmFtcyB0aGF0IHRyeSB0bwoJYWNjZXNzIHRoZSBWR0EgaGFyZHdhcmUgZGlyZWN0bHkuCgoJKiBtaXNjZW11L2luc3RyLmMsIGlmMTYzMi9zaWduYWwuYywgaW5jbHVkZS9kb3NleGUuaCwgbG9hZGVyL2Rvcy9kb3N2bS5jLCBsb2FkZXIvZG9zL21vZHVsZS5jLCBtaXNjL3N5c3RlbS5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglJbmRpcmVjdGlvbiBmb3IgSU5TVFJfRW11bGF0ZUluc3RydWN0aW9uIGZvciB1c2UgYnkgRE9TIGNvZGUuCglBZGRlZCBzdXBwb3J0IGZvciBhIDU1SHogc3lzdGVtIHRpbWVyLCBsZXR0aW5nIERPUyBhcHBzIGNhbGlicmF0ZQoJdGhlaXIgZGVsYXkgbG9vcHMgYW5kIHN1Y2guIENhbGxzIElOU1RSX0VtdWxhdGVJbnN0cnVjdGlvbiBmb3IKCWluc3RydWN0aW9uIGVtdWxhdGlvbiAocHJpbmNpcGFsbHkgSS9PIHBvcnQgYWNjZXNzKS4gQWRkZWQgbWFjcm8KCVY4Nl9GTEFHLgoKU2F0IE9jdCAzMSAxMjoyMDo1NiAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy9kaW5wdXQuYywgbXVsdGltZWRpYS9kc291bmQuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJU21hbGwgZml4ZXMuCgoJKiBtZW1vcnkvdmlydHVhbC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVJlbW92ZWQgdGhlIEZJWE1FKCkgYW5kIG1vdmVkIFNldExhc3RFcnJvcigwKSB0byB0aGUgZW5kIChzbyB0aGF0CglHZXRUZW1wRmlsZU5hbWUgZXQuYWwuIGNhbid0IG92ZXJ3cml0ZSBpdCkuCgoJKiBtaXNjL0F0dGljL250ZGxsLmMsIHJlbGF5MzIvbnRkbGwuc3BlYywgcmVsYXkzMi9yZWxheTM4Ni5jLCByZWxheTMyL3VzZXIzMi5zcGVjLCB3aW5kb3dzL3VzZXIuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJTG90cyBvZiBzdHVicyB0byBnZXQgd2lubG9nb24uZXhlIGZyb20gbnQzLjUxIGFuZCBvdGhlciBOVDMuNTEgYXBwbGV0cwoJYSBiaXQgZnVydGhlci4KCgkqIHdpbmRvd3MvbWRpLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglNREljaGlsZCBjcmVhdGVkIHdoZW4gdGhlIE1ESSBjbGllbnQgaGFzIHRoZSBNRElTX0FMTENISUxEU1RZTEVTCglzdHlsZSwgc2hvdWxkIG5vdCBiZSBzaG93biBhdCBjcmVhdGlvbiBub3IgYWN0aXZhdGVkIHVubGVzcyB0aGUKCVdTX1ZJU0lCTEUgZmxhZyBpcyBzZXQuCgoJKiBsb2FkZXIvcGVfaW1hZ2UuYzogU3RlcGhlbiBMYW5nYXNlayA8dm9ybG9uQGRvZGRzLm5ldD4KCUJ1Z2ZpeCBmb3IgZml4dXBfaW1wb3J0czogRW5hYmxlIGNoZWNraW5nIGZvciB0ZXJtaW5hdGluZyBpbXBvcnQKCXN0cnVjdCB3aXRoIENoYXJhY3RlcmlzdGljcyBiaXRmaWVsZCBzZXQgdG8gMC4KCgkqIHdpbmRvd3Mvd2luLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglEZWxheSBsaW5raW5nIG5ld2x5IGNyZWF0ZWQgd2luZG93IGluIGxpbmtlZCBsaXN0IHVudGlsIGFmdGVyIHRoZQoJV01fTkNDUkVBVEUgbWVzc2FnZS4KCgkqIGZpbGVzL2ZpbGUuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCVNtYWxsIGJ1ZyBpbiBGSUxFX0luVXNlIGRvZXMgbm90IGRvIGEgcmVsZWFzZSBvbiBldmVyeSBhY3F1aXJlZCBmaWxlCglwb2ludGVyLgoKCSogY29udHJvbHMvc3RhdGljLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJbHBzek5hbWUgb2YgTlVMTCBpcyBoYW5kbGVkIChyZW1vdmVzIHNvbWUgd2FybmluZ3MpLgoKCSogdG9vbHMvdGVzdHJ1bjogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglOb3cgYWxsb3dzIHNwZWNpZmljYXRpb24gb2YgYSBzdGFydCBkaXJlY3Rvcnkgb24gdGhlIGNtZGxpbmUuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJR2V0cyByaWQgb2YgdGhlIGFyY2gtZGVwZW5kZW50IGJpdCBvcGVyYXRpb25zICh0ZXN0ZWQgb24gTGludXggYW5kCglTb2xhcmlzL3g4NikuCgpXZWQgT2N0IDI4IDE0OjU4OjAyIDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL3dpbi5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUEgZGVzdCBidWZmZXIgd2FzIHByaW50ZWQgb3V0IGFzIHN0cmluZy4KCgkqIGluY2x1ZGUvc2hsb2JqLmg6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJQ29ycmVjdGVkIDIgd3JvbmcgZGVmaW5pdGlvbnMuCgoJKiBpbmNsdWRlL3dpbmRvd3MuaCwgcmVsYXkzMi9rZXJuZWwzMi5zcGVjLCBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJUGF0cmljayBTcGlubGVyIDxzcGlubGVyLnBhdHJpY2tAbWF5by5lZHU+CglBZGRlZCBzdHVicyBmb3IgUHJvY2VzczMyRmlyc3QvUHJvY2VzczMyTmV4dC4KCgkqIGluY2x1ZGUveDExZHJ2LmgsIG9iamVjdHMvY2xpcHBpbmcuYywgb2JqZWN0cy9kYy5jLCBvYmplY3RzL2RjdmFsdWVzLmMsIG9iamVjdHMvcGFsZXR0ZS5jLCBvYmplY3RzL3JlZ2lvbi5jLCBncmFwaGljcy9lc2NhcGUuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvZ3JhcGhpY3MuYywgZ3JhcGhpY3MvcGFpbnRpbmcuYywgZ3JhcGhpY3MvcGF0aC5jLCBncmFwaGljcy9wc2Rydi9ncmFwaGljcy5jLCBncmFwaGljcy93aW4xNmRydi9ncmFwaGljcy5jLCBncmFwaGljcy94MTFkcnYvZ3JhcGhpY3MuYywgaW5jbHVkZS9kZWJ1Z2dlci5oLCBpbmNsdWRlL2dkaS5oLCBpbmNsdWRlL21ldGFmaWxlZHJ2LmgsIGluY2x1ZGUvcHNkcnYuaCwgaW5jbHVkZS93aW4xNmRydi5oLCBpbmNsdWRlL3dpbmRvd3MuaCwgaW5jbHVkZS93aW50eXBlcy5oLCBkZWJ1Z2dlci9kYmcueSwgZGVidWdnZXIvbXNjLmMsIGRlYnVnZ2VyL3N0YWJzLmMsIGRlYnVnZ2VyL3R5cGVzLmM6CglGcmFu529pcyBHb3VnZXQgPGdvdWdldEBtZXRhaW50ZWdyYXRpb24ubmV0PgoJRml4ZWQgc29tZSBMUFBPSU5UL0xQU0laRSBtaXNtYXRjaGVzIGFuZCBzb21lIG1pc3NpbmcgImNvbnN0IiBpbiB0aGUKCWhlYWRlcnMgcHJvdG90eXBlcy4KCgkqIGdyYXBoaWNzL3BzZHJ2L2luaXQuYywgZ3JhcGhpY3Mvd2luMTZkcnYvaW5pdC5jLCBncmFwaGljcy94MTFkcnYvYml0bWFwLmMsIGdyYXBoaWNzL3gxMWRydi9icnVzaC5jLCBncmFwaGljcy94MTFkcnYvaW5pdC5jLCBncmFwaGljcy94MTFkcnYvb2JqZWN0cy5jLCBpbmNsdWRlL2JpdG1hcC5oLCBpbmNsdWRlL2dkaS5oLCBpbmNsdWRlL3gxMWRydi5oLCBvYmplY3RzL2JpdG1hcC5jLCBvYmplY3RzL2JydXNoLmMsIG9iamVjdHMvZGliLmMsIG9iamVjdHMvb2VtYml0bWFwLmMsIHdpbmRvd3MvZ3JhcGhpY3MuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvaW5pdC5jOgoJSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglBZGRlZCBwQml0bWFwQml0cyBhbmQgcENyZWF0ZUJpdG1hcCB0byB0aGUgR0RJIGZ1bmN0aW9uIHRhYmxlIGFuZAoJbW92ZWQgdGhlIFgxMSBkZXBlbmRlbnQgc3R1ZmYgb3V0IG9mIG9iamVjdHMvYml0bWFwLmMgaW50byB4MTFkcnYuCgoJKiByZWxheTMyL3NoZWxsMzIuc3BlYywgZGxscy9zaGVsbDMyL3NoZWxsb2xlLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBpbmNsdWRlL3NoZWxsLmgsIGRsbHMvc2hlbGwzMi9waWRsLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCU5ldyBTSEdldFNpbXBsZUlETGlzdEZyb21QYXRoMzJBVy4KCVVuaWNvZGUtc2FmZTogUGF0aEZpbmRGaWxlbmFtZTMyQVcuCgoJKiBpbmNsdWRlL3NobG9iai5oOiBKdXN0aW4gQnJhZGZvcmQgPGp1c3RpbkBidXNib3kuc3BlZC51a2Fucy5lZHU+CglJRXh0cmFjdEljb24gaGFkIGFuIGV4dHJhIGMgaW4gYSBzdHJ1Y3QgZGVmaW5pdGlvbi4KCgkqIHJlbGF5MzIvZHBsYXkuc3BlYzoKCUpvaG4gUmljaGFyZHNvbiA8anJpY2hhcmRAemVhbGFuZC5tdi5zcGFtbGVzcy5jb20+CglBZGRlZCBlbnRyeSBmb3IgRGlyZWN0UGxheUVudW1lcmF0ZS4KCgkqIG9sZS9ubHMvc2t5Lm5scywgb2xlL29sZTJubHMuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJQWRkZWQgU2xvdmFrIG5scy1yZXNvdXJjZXMuCgoJKiBvYmplY3RzL3JlZ2lvbi5jOiBIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCUZpeGVkIGRpZmZlcmVuY2VzIGJldHdlZW4gU2V0UmVjdFJnbjE2IGFuZCBTZXRSZWN0UmduMzIuIEFsc28gYSBidWcgZml4IGZvcgoJQ3JlYXRlUm91bmRSZWN0UmduLgoKVHVlIE9jdCAyNyAxNTo0MTo1NCAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy91c2VyLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRW51bURpc3BsYXlNb2RlcyogcmV0dXJucyBhIHN0YXRpYyBsaXN0IG9mIG1vZGVzIHdpdGggYWxsIGRlcHRocwoJKGhlbHBzIGhleGVuMmRlbW8pLCBDaGFuZ2VEaXNwbGF5U2V0dGluZ3MgcmV0dXJucyB0cnVlIGFsbCB0aGUgdGltZS4KCgkqIGluY2x1ZGUvd2ludHlwZXMuaCwgbXVsdGltZWRpYS9tbXN5c3RlbS5jLCByZWxheTMyL3dpbm1tLnNwZWM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVN0dWIgZm9yIG1pZGlPcGVuU3RyZWFtIChoZWxwcyBoZXhlbjJkZW1vKS4KCgkqIG9sZS9ubHMvZW5jLm5scywgb2xlL25scy9mcmMubmxzLCByZXNvdXJjZXMvc3lzcmVzX0ZyLnJjOgoJUm9iZXJ0IFBvdWxpb3QgPGtyeW5vc0BjbGljLm5ldD4KCVNtYWxsIHBhdGNoIGZvciBiZXR0ZXIgRnJlbmNoIHN1cHBvcnQuCgoJKiBsb2FkZXIvZWxmLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBtZW1vcnkgb3ZlcndyaXRlIGJ1Zy4KCk1vbiBPY3QgMjYgMTE6MDQ6MTMgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbnRyb2xzL2VkaXQuYywgd2luZG93cy9jbGlwYm9hcmQuYzogUGFzY2FsIEN1b3EgPHBjdW9xQGVucy1seW9uLmZyPgoJMzItYml0IGNsaXBib2FyZCBzdXBwb3J0LgoKCSogd2luZG93cy9xdWV1ZS5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeCBmb3IgUVVFVUVfU2lnbmFsOiBBbHdheXMgdXNlIFBvc3RFdmVudCBpZiBubyB0aHJlYWQgaXMgd2FpdGluZwoJb24gdGhlIHF1ZXVlLgoKCSogd2luZG93cy9tZGkuYzogTkYgU3RldmVucyA8bm9ybWFuQGFyY2FkeS51LW5ldC5jb20+CglGaXhlZCBhIG1pbm9yIHByb2JsZW0gd2l0aCB0aGUgbWVudXMgZm9yIG1kaSBjaGlsZCB3aW5kb3dzLgoKCSogZ3JhcGhpY3MvZGRyYXcuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglSZW1vdmVkIG5vIGxvbmdlciBuZWNlc3NhcnkgY29tbWVudGVkIG91dCBjb2RlLCBkZXN0cm95IG9sZCB3aW5kb3cKCXdoZW4gU2V0RGlzcGxheU1vZGUgaXMgY2FsbGVkIGFnYWluLCBFbnVtRGlzcGxheU1vZGVzIG5vdyByZXR1cm5zCglhbGwgcG9zc2libGUgbW9kZXMgKHVzaW5nIGEgc3RhdGljIGxpc3QpLgoKCSogbWVtb3J5L3ZpcnR1YWwuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBbm9uIHNoYXJlZCBtYXBwaW5nIGZpeGVkIGZvciBmaWxlIHNoYXJpbmcuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClN1biBPY3QgMjUgMTA6MzI6MjMgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG9sZS9vbGUybmxzLmMsIGluY2x1ZGUvd2lubmxzLmg6IEFuZHJlYXMgTW9ociA8MTAwLjMwOTM2QGdlcm1hbnkubmV0PgoJRml4ZXMgZm9yIExBTkdfTkVVVFJBTC4KCgkqIGluY2x1ZGUvdGFzay5oOgoJQWRkZWQgc29tZSBwYWRkaW5nIHRvIHRoZSBQREIgZm9yIGlsbC1iZWhhdmluZyBhcHBzIChwcm9ibGVtIHJlcG9ydGVkCglieSBBbmRyZWFzIE1vaHIpLgoKCSogZG9jdW1lbnRhdGlvbi9pb3BvcnQtdHJhY2UtaGludHMsIGluY2x1ZGUvZGVidWcuaCwgaW5jbHVkZS9kZWJ1Z2RlZnMuaCwgbWlzY2VtdS9pbnN0ci5jOgoJSm9uYXRoYW4gQnV6emFyZCA8amFiQGhleC5wcmVzdGVsLmNvLnVrPgoJQWRkZWQgYSBuZXcgZGVidWdnaW5nIGNoYW5uZWwgaW8gdG8gYWxsb3cgcmVhZC93cml0ZXMgb24gYSBwb3J0IHRvIGJlCglsb2dnZWQgdG8gYSBmaWxlLgoKCSogd2luZG93cy9rZXlib2FyZC5jOiBEYXZpZCBGYXVyZSA8RGF2aWQuRmF1cmVAaW5zYS1seW9uLmZyPgoJUmVwbGFjZWQgMHgwMCB3aXRoIDB4MDEgaW4gdGhlIHZrZXktPnNhbmNvZGUgYXJyYXksIHNvIHRoYXQgbm8ga2V5IGlzCglpZ25vcmVkLiAweDAwIGlzIHVzZWQgZm9yIGdlbmVyYXRlZCBrZXkgZXZlbnRzIG9ubHkuCgoJKiB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy9xdWV1ZS5jOgoJRG91Z2xhcyBSaWRnd2F5IDxyaWRnd2F5QHdpbmVocS5jb20+CglBUEkgRG9jdW1lbnRhdGlvbiBmb3IgU2VuZE1lc3NhZ2UsIEdldFRpY2tDb3VudCwgUG9zdFF1aXRNZXNzYWdlLAoJR2V0TWVzc2FnZVBvcywgR2V0TWVzc2FnZVRpbWUuCgoJKiBtZW1vcnkvdmlydHVhbC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCURlbGV0ZSB0aGUgZmlsZW5hbWUgZm9yIHRoZSBtYXBwaW5nIGluc3RhbnRseS4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCByZWxheTMyL3NoZWxsMzIuc3BlYzoKCU1pY2hhZWwgUG9vbGUgPHBvb2xlQGdyYXZpdG9uLnJlcy5jbXUuZWR1PgoJU3R1YiBmb3IgU0hTaW1wbGVJRExpc3RGcm9tUGF0aC4KCgkqIGxvYWRlci90YXNrLmM6IEZpeGVkIGJ1ZyBpbiBTd2l0Y2hTdGFja1RvLgoKU2F0IE9jdCAyNCAxMzowNjoxNiAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29udHJvbHMvc2Nyb2xsLmM6IFBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQ2hlY2sgaWYgc2Nyb2xsYmFyIGFuZCBwYXJlbnQgYXJlIHZpc2libGUgYmVmb3JlIHJlZHJhdy4KCgkqIGlmMTYzMi9zaGVsbC5zcGVjLCBpbmNsdWRlL3NoZWxsLmgsIG1pc2Mvc2hlbGwuYywgcHJvZ3JhbXMvbm90ZXBhZC9tYWluLmMsIHJlbGF5MzIvc2hlbGwzMi5zcGVjOgoJS2FpIE1vcmljaCA8a2FpLm1vcmljaEBkYXJtc3RhZHQubmV0c3VyZi5kZT4KCUFkZGVkIERyYWcqMzIgZnVuY3Rpb25zLgoKCSogd2luZG93cy9ldmVudC5jOiBLYWkgTW9yaWNoIDxrYWkubW9yaWNoQGRhcm1zdGFkdC5uZXRzdXJmLmRlPgoJQWRkZWQgRHJhZyZEcm9wIGZyb20gS0RFIGFwcCB0byAxNi8zMiBiaXQgV2luZG96ZSBhcHAuCgoJKiB3aW5kb3dzL21lc3NhZ2UuYzogS2FpIE1vcmljaCA8a2FpLm1vcmljaEBkYXJtc3RhZHQubmV0c3VyZi5kZT4KCUFkZGVkIEZJWE1FIG1lc3NhZ2UgaW4gUG9zdE1lc3NhZ2UzMnggaWYgcGFyYW1ldGVycyBhcmUgdHJ1bmNhdGVkCgl3aGVuIGNhbGxpbmcgUG9zdE1lc3NhZ2UxNi4KCgkqIGluY2x1ZGUvcHJvY2Vzcy5oLCBzY2hlZHVsZXIvZXZlbnQuYywgc2NoZWR1bGVyL2hhbmRsZS5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzY2hlZHVsZXIvdGhyZWFkLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFkZGVkIHN1cHBvcnQgZm9yIGdsb2JhbCBoYW5kbGVzLCBpbXBsZW1lbnRlZCBDb252ZXJ0VG9HbG9iYWxIYW5kbGUuCglBbGxvY2F0ZSBzdGFydHVwIGRhdGEgYW5kIDE2LWJpdCBzdGFjayBmb3IgaW5pdGlhbCBwcm9jZXNzLgoKCSogZG9jdW1lbnRhdGlvbi93aW5lLnRleGluZm86IExlaWdoIFdlZGRpbmcgPGx3ZWRkaW5nQGNvcnBsaW5rLmNvbS5hdT4KCVNtYWxsIGZpeC4KCgkqIHByb2dyYW1zL3Byb2dtYW4vLmN2c2lnbm9yZSwgcHJvZ3JhbXMvcHJvZ21hbi9Fcy5yYywgcHJvZ3JhbXMvcHJvZ21hbi9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luaGVscC8uY3ZzaWdub3JlLCBwcm9ncmFtcy93aW5oZWxwL0VzLnJjLCBwcm9ncmFtcy93aW5oZWxwL01ha2VmaWxlLmluLCBwcm9ncmFtcy9jbG9jay8uY3ZzaWdub3JlLCBwcm9ncmFtcy9jbG9jay9Fcy5yYywgcHJvZ3JhbXMvY2xvY2svTWFrZWZpbGUuaW4sIHByb2dyYW1zL25vdGVwYWQvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvbm90ZXBhZC9Fcy5yYywgcHJvZ3JhbXMvbm90ZXBhZC9NYWtlZmlsZS5pbjoKCVBhYmxvIFNhcmF0eGFnYSA8c3J0eGdAY2hhbmFlLmFscGhhbmV0LmNoPgoJQWRkZWQgU3BhbmlzaCByZXNvdXJjZXMuCgoJKiBvbGUvbmxzL2V1cS5ubHMsIHJlc291cmNlcy9zeXNyZXNfRXMucmM6CglQYWJsbyBTYXJhdHhhZ2EgPHNydHhnQGNoYW5hZS5hbHBoYW5ldC5jaD4KCVNtYWxsIGNvcnJlY3Rpb25zLgoKCSogcmVsYXkzMi9rZXJuZWwzMi5zcGVjLCBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglMb2FkTGlicmFyeUV4VyBzcGVjIGFkZGVkIChmdW5jdGlvbiB3YXMgdGhlcmUpLgoJU2V0UHJvY2Vzc1ByaW9yaXR5Qm9vc3Qgc3R1YiBhZGRlZC4KCgkqIG1zZG9zL2RwbWkuYzogUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglDb21waWxlIGZpeCBmb3IgU29sYXJpcy4KCgkqIGlmMTYzMi8uY3ZzaWdub3JlLCBpZjE2MzIvTWFrZWZpbGUuaW4sIGlmMTYzMi9idWlsdGluLmMsIGlmMTYzMi9kaXNwZGliLnNwZWMsIGluY2x1ZGUvZGlzcGRpYi5oLCBncmFwaGljcy9NYWtlZmlsZS5pbiwgZ3JhcGhpY3MvZGlzcGRpYi5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglJbXBsZW1lbnRlZCBEaXNwbGF5RGliLgoKCSogY29udHJvbHMvc3RhdGljLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSGFjayB0byBzdXBwb3J0IGludGVnZXIgaWRzIGluIGFsbCBzdGF0aWMgY29udHJvbHMuCgoJKiBpbmNsdWRlL2RpbnB1dC5oLCB3aW5kb3dzL2RpbnB1dC5jOgoJTGlvbmVsIFVsbWVyIDx1bG1lckBkaXJlY3Rwcm92aWRlci5uZXQ+CglCZWdpbm5pbmcgb2YgbW91c2Ugc3VwcG9ydCBpbiBEaXJlY3RJbnB1dCAob25seSAic3RhbmRhcmQiIG1vdXNlCgljb25maWd1cmF0aW9uIHN1cHBvcnRlZCBmb3Igbm93KS4KCgkqIGluY2x1ZGUvKi5oLCBkbGxzL2NvbWN0bDMyLyouYzoKCUVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglBZGRlZCB4eHhfVW5yZWdpc3RlcigpIGZ1bmN0aW9ucyB0byBhbGwgY29tbW9uIGNvbnRyb2xzLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmMsIGRsbHMvY29tY3RsMzIvcGFnZXIuYywgZGxscy9jb21jdGwzMi90b29sYmFyLmMsIGRvY3VtZW50YXRpb24vY29tbW9uX2NvbnRyb2xzLCByZWxheTMyL2NvbWN0bDMyLnNwZWM6CglFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJU29tZSBtaW5vciBpbXByb3ZlbWVudHMgYW5kIGZpeGVzLgoKCSogZGxscy9jb21jdGwzMi9yZWJhci5jLCBpbmNsdWRlL3JlYmFyLmg6CglFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJSW1wcm92ZWQgdGhlIHJlYmFyIGNvbnRyb2wuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2x0aXBzLmM6IEVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglBZGRlZCBzdXBwb3J0IGZvciB0cmFuc3BhcmVudCBhbmQgdHJhY2tpbmcgdG9vbHRpcHMuCgoJKiBjb250cm9scy9tZW51LmM6IEVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglGaXhlZCBhIHBvcHVwIG1lbnUgc2VsZWN0aW9uIGJ1Zy4KCgkqIHdpbmRvd3Mvbm9uY2xpZW50LmM6IEVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglGaXhlZCBEcmF3Q2FwdGlvbjE2KCkgYW5kIERyYXdDYXB0aW9uVGVtcDE2KCkuCgoJKiB3aW5kb3dzL2tleWJvYXJkLmM6IERhdmlkIEZhdXJlIDxEYXZpZC5GYXVyZUBpbnNhLWx5b24uZnI+CglGaXhlZCB3YXJuaW5nLgoKCSogZ3JhcGhpY3MvcHNkcnYvTWFrZWZpbGUuaW4sIGdyYXBoaWNzL3BzZHJ2L2JpdG1hcC5jLCBncmFwaGljcy9wc2Rydi9icnVzaC5jLCBncmFwaGljcy9wc2Rydi9mb250LmMsIGdyYXBoaWNzL3BzZHJ2L2dyYXBoaWNzLmMsIGdyYXBoaWNzL3BzZHJ2L2luaXQuYywgZ3JhcGhpY3MvcHNkcnYvcHMuYywgaW5jbHVkZS9nZGkuaCwgaW5jbHVkZS9wc2Rydi5oLCBvYmplY3RzL2RpYi5jOgoJSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglBZGRzIEFyYywgQ2hvcmQsIEdldENoYXJXaWR0aCwgUGllLCBQb2x5UG9seWdvbiwgUG9seVBvbHlsaW5lLCBSb3VuZFJlY3QsCglTZXRQaXhlbCwgaGF0Y2hlZCBicnVzaGVzIGFuZCBhIHN0dWIgZm9yIFN0cmV0Y2hESUJpdHMgdG8gdGhlIFBvc3RTY3JpcHQKCWRyaXZlci4KCgkqIGluY2x1ZGUvZGVidWcuaCwgaW5jbHVkZS9kZWJ1Z2RlZnMuaCwgaW5jbHVkZS9taXNjZW11LmgsIG1zZG9zL01ha2VmaWxlLmluLCBtc2Rvcy9pbnRlcnJ1cHRzLmM6CglKb3NlcGggUHJhbmV2aWNoIDxrbmlnaHRAYmFsdGltb3JlLnd3YXZlcy5jb20+CglBZGRlZCBzdXBwb3J0IGZvciBpbnQxNyBhbmQgaW50MTkuCgoJKiBtc2Rvcy9pbnQxOS5jOiBDYXJsIHZhbiBTY2hhaWsgPGNhcmxAZHJlYW1jb2F0LmNoZS51Y3QuYWMuemE+CglTdHVicyBmb3IgZG9zIG1vZGUgcmVib290IGludGVycnVwdC4KCgkqIG1zZG9zL2ludDE3LmM6IENhcmwgdmFuIFNjaGFpayA8Y2FybEBkcmVhbWNvYXQuY2hlLnVjdC5hYy56YT4KCVNvbWUgcHJpbnRlciBzdHVicyBmb3IgRE9TIGFkZGVkLgoKCSogbXNkb3MvaW50MTMuYzogSm9zZXBoIFByYW5ldmljaCA8a25pZ2h0QGJhbHRpbW9yZS53d2F2ZXMuY29tPgoJTW9yZSBzdHVicyBhZGRlZC4gVGhlc2UgY2hhbmdlcyBhcmUgb25seSBwYXJ0aWFsbHkgbWluZSwgSSBqdXN0IG1hZGUKCXRoZW0gY29tcGlsZS4KCgkqIG1zZG9zL2ludDEwLmM6IEpvc2VwaCBQcmFuZXZpY2ggPGtuaWdodEBiYWx0aW1vcmUud3dhdmVzLmNvbT4KCUFkZGVkIHNvbWUgdHJhY2VzIGFuZCBjbGVhbmVkIHVwIGEgY291cGxlIG9mIHRoaW5ncy4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYywgZGxscy9zaGVsbDMyL3NobHZpZXcuYywgaW5jbHVkZS9zaGVsbC5oLCBpbmNsdWRlL3NobG9iai5oLCBtZW1vcnkvc3RyaW5nLmMsIG9sZS9vbGUybmxzLmMsIHJlbGF5MzIvc2hlbGwzMi5zcGVjLCBkbGxzL3NoZWxsMzIvZGF0YW9iamVjdC5jLCBkbGxzL3NoZWxsMzIvZW51bWlkbGlzdC5jLCBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUNoYW5nZWQgc29tZSBzdHJpbmctc2hlbGwzMiBmdW5jdGlvbnMgdG8gMzJBVywgcGFyYW1ldGVyIGFyZQoJb3MgZGVwZW5kaW5nIDMyQSBvciAzMlcgKC13aW52ZXIgbnQzNTEgb3IgbnQ0MCksIHNvbWUgbmV3IGZ1bmN0aW9ucy4KCVNvbWUgZml4ZXMgaW4gb2xlMm5scy4KCU5ldyBPTEUyTkxTX0NoZWNrTG9jYWxlKCkgdG8gaGFuZGxlIExvY2FsZV9Vc2VyX0RlZmF1bHQgYW5kCglMb2NhbGVfU3lzdGVtX0RlZmF1bHQuCglTaGVsbDMyIG5vdyBkeW5hbWljbHkgbGlua3MgdG8gRFBBXyooKSwgY29tZGxnMzIgd29ya3MgYWdhaW4KCShjb21jdGwzMiBoZWFwIGFsbG9jIHBhdGNoIGJyb2tlIGl0KS4KCgkqIGluY2x1ZGUvd2ludmVyc2lvbi5oLCBtaXNjL3ZlcnNpb24uYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJQWRkZWQgVkVSU0lPTl9Jc09zVW5pY29kZSgpLgoKCSogc2NoZWR1bGVyL2hhbmRsZS5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJTW9yZSBvZmYtYnktb25lIGVycm9ycyBmaXhlZC4KCgkqIGluY2x1ZGUvZmlsZS5oLCBtaXNjL2NydGRsbC5jLCBtc2Rvcy92eGQuYywgd2luMzIvZmlsZS5jLCBmaWxlcy9maWxlLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglGaWxlIHNoYXJpbmcgZml4ZXMuCgpGcmkgT2N0IDIzIDE3OjI2OjQ0IDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBtaXNjL2NvbW1kbGcuYzogTmljayBIb2xsb3dheSA8YWxmaWVAYWxmaWUuZGVtb24uY28udWs+CglCdWcgZml4LgoKCSogbG9hZGVyL2Rvcy9tb2R1bGUuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglGaXhlZCBET1MgZW52aXJvbm1lbnQgcGFzc2luZy4KCgkqIG1pc2MvbWFpbi5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCVN5c21ldHJpY3MzMlcgZm9yIFNQSV9HRVRJQ09OVElUTEVMT0dGT05UIHJldHVybnMgY29ycmVjdCBmb250bmFtZS4KCgkqIGluY2x1ZGUvZm9udC5oLCBvYmplY3RzL2ZvbnQuYywgb2JqZWN0cy9nZGlvYmouYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTmV3IEZPTlRfR2V0T2JqZWN0MzJXKCksIEdldE9iamVjdDMyVygpLgoKCSogcmVsYXkzMi91c2VyMzIuc3BlYywgd2luMzIvb3JkaW5hbHMuYywgd2luZG93cy91c2VyLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCU5ldyBzdHViIFJlZ2lzdGVyVGFza0xpc3QuCglOZXcgZnVuY3Rpb24gRW51bURpc3BsYXlTZXR0aW5nczMyVygpLgoKCSogbWlzYy9udGRsbC5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCU1vcmUgcGFyYW1ldGVyIGNoZWNraW5nIGluIFJsdENvcHlTaWQuCgoJKiB3aW5kb3dzL3dpbnByb2MuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglNb3JlIG1lc3NhZ2UgbWFwcGluZyAzMkE8LS0+MzJXIGZvciBFTV8sIENCXywgTEJfIGZvciBVbmljb2RlLgoKCSogcmVsYXkzMi8uY3ZzaWdub3JlLCByZWxheTMyL01ha2VmaWxlLmluLCByZWxheTMyL2F2aWZpbDMyLnNwZWMsIHJlbGF5MzIvYnVpbHRpbjMyLmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUFkZGVkIG5ldyBkbGwgYXZpZmlsMzIuZGxsLgoKCSogbG9hZGVyL2Rvcy9kb3N2bS5jLCBsb2FkZXIvZG9zL21vZHVsZS5jLCBtc2Rvcy9kcG1pLmMsIGluY2x1ZGUvZG9zZXhlLmg6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUZpcnN0IHNob3QgYXQgRFBNSSByZWFsbW9kZSBjYWxscy4KCgkqIGxvYWRlci9tb2R1bGUuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJRml4ZWQgc2V2ZXJhbCBidWdzIHdpdGggRExMIGluaXRpYWxpemF0aW9uLgoKVGh1IE9jdCAyMiAxNzowMjoyNSAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2NoZWR1bGVyL3N5c2xldmVsLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgb3JkaW5hbCBmb3IgdHdvIHN5c2xldmVsIGZ1bmN0aW9ucy4KCgkqIG11bHRpbWVkaWEvbWlkaS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFub3RoZXIgbWlzc2luZyBXSU5BUEkuCgoJKiBpbmNsdWRlL21tc3lzdGVtLmg6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJU21hbGwgY29ycmVjdGlvbnMgaW4gbW1pbyBkZWNsYXJhdGlvbnMuCgoJKiBsb2FkZXIvcGVfaW1hZ2UuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglUYWtlIHZpcnR1YWwgc2l6ZXMgaW4gYWNjb3VudCBmb3IgdGhlIHRvdGFsIHZtYSBzaXplLgoKCSogb2xlL25scy9yb20ubmxzOiBEaW1pdHJpZSBPLiBQYXVuIDxkaW1pQGNzLnRvcm9udG8uZWR1PgoJQWRkIHNvbWUgbW9yZSBOTFMgZGVmaW5pdGlvbnMgZm9yIHRoZSBSb21hbmlhbiBsYW5ndWFnZS4KCgkqIG11bHRpbWVkaWEvZHNvdW5kLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJU29tZSBwcm9ncmFtcyAocXVha2UyIGV0IGFsKSBkbyBjaGVjayBmb3IgRFNDQVBTX0VNVUxEUklWRVIgYW5kIHN0b3AKCXRvIHdvcmsuICdBZGp1c3QnIGNhcHMgZmxhZ3MgYWNjb3JkaW5nbHkuCgoJKiBvbGUvY29tcG9iai5jLCByZWxheTMyL29sZTMyLnNwZWM6CglQZXRlIFJhdHpsYWZmIDxwcmF0emxhZmZAY2ZhLmhhcnZhcmQuZWR1PgoJU3R1YiBmb3IgQ29DcmVhdGVHdWlkKCkuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmMsIG11bHRpbWVkaWEvbWNpY2RhLmM6CglCcmlhbiBMaXR6aW5nZXIgPGJyaWFuQGxpdHppbmdlci5jb20+CglGaXhlcyBmb3IgRnJlZUJTRC4KCgkqIGxpYnRlc3QvLmN2c2lnbm9yZSwgbGlidGVzdC9NYWtlZmlsZS5pbjoKCVBldHRlciBSZWluaG9sZHRzZW4gPHBlcmVAbWluZXJ2YS5jYy51aXQubm8+CglNYWtlIHN1cmUgaGVsbG8zcmVzLmggaXMgZ2VuZXJhdGVkIGV2ZW4gaWYgJ21ha2UgZGVwZW5kJyBuZXZlciBoYXMKCWJlZW4gcnVuLgoKCSogd2luZG93cy9ub25jbGllbnQuYzogTkYgU3RldmVucyA8bm9ybWFuQGFyY2FkeS51LW5ldC5jb20+CglGaXhlZCBtb3ZpbmcgYW5kIHNpemluZyBvZiBjaGlsZCB3aW5kb3dzLgoKCSogaW5jbHVkZS90c194bGliLmgsIHRvb2xzL21ha2VfWDExd3JhcHBlcnMsIHRzeDExL1gxMV9jYWxscywgdHN4MTEvdHNfeGxpYi5jLCB3aW5kb3dzL2tleWJvYXJkLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVhRdWVyeUtleW1hcCAtPiBUU1hRdWVyeUtleW1hcCAoZml4ZXMgdGhlIFhJTyBlcnJvcnMgcmVwb3J0ZWQpLgoKV2VkIE9jdCAyMSAxNzoyMDo0OCAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS9kb3NleGUuaCwgbG9hZGVyL2Rvcy9kb3N2bS5jLCBtaXNjZW11L21haW4uYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQWRkZWQgaW5kaXJlY3Rpb24gZm9yIGN0eF9kZWJ1ZyB0byB0aGUgRE9TIGxvYWRlciwgc28gV2luZWxpYiB3b3JrcwoJYWdhaW4uCgoJKiBtZW1vcnkvdmlydHVhbC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVN1cHBvcnQgYW5vbiBzaGFyZWQgbWFwcGluZ3MgdXNpbmcgdGVtcG9yYXJ5IGZpbGVzICh3b250IGJlIGRlbGV0ZWQKCXlldCkuCgoJKiBtaXNjL21haW4uYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglXYXMgZnJlZWluZyB0aGUgaW5jb3JyZWN0IHBvaW50ZXJzIC0+IGNyYXNoIGluIG1hbGxvY3MvZnJlZXMuCgoJKiBmaWxlcy9kb3NfZnMuYywgcmVsYXkzMi9rZXJuZWwzMi5zcGVjOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglEZWZpbmVEb3NEZXZpY2Ugc3R1YiBhZGRlZC4KCgkqIG1pc2NlbXUvbWFpbi5jLCB3aW5lLmluaTogQ2hhZCBQb3dlbGwgKHB4cHhAdXNhLm5ldCkKCUFkZGVkIGEgZGVmYXVsdCBwcm9ncmFtIG9wdGlvbiBpbiB3aW5lLmNvbmYgaW4gc2VjdGlvbiBbcHJvZ3JhbXNdIGtleQoJRGVmYXVsdC4KCgkqIGluY2x1ZGUvd2ludHlwZXMuaDogRGF2aWQgQ3V0aGJlcnQgPGRhY3V0QGVjZS5jbXUuZWR1PgoJQmV0dGVyIGZpeCBmb3IgdGhpc19pc19hX3N5bnRheF9lcnJvci4KCgkqIG9sZS9ubHMvKi5ubHM6CglQYWJsbyBTYXJhdHhhZ2EgPHNydHhnQGNoYW5hZS5hbHBoYW5ldC5jaD4KCUFkZGVkIHRoZSBlbnRyaWVzIGZvciBMT0NBTEVfU0lTTzYzOUxBTkdOQU1FIGFuZAoJTE9DQUxFX1NJU08zMTY2Q1RSWU5BTUUuCgoJKiBkb2N1bWVudGF0aW9uL3dpbmUubWFuOiBKYW1lcyBKdXJhbiA8anJqMTIwQHBzdS5lZHU+CglVcGRhdGVkIG1hbnBhZ2UuCgoJKiByZWxheTMyL21zYWNtMzIuc3BlYzogUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCB3cm9uZyBvcmRpbmFscy4KCgkqIG9iamVjdHMvcmVnaW9uLmM6IE5GIFN0ZXZlbnMgPG5vcm1hbkBhcmNhZHkudS1uZXQuY29tPgoJRml4ZWQgYSBidWcgaW4gUmVjdEluUmVnaW9uLgoKVHVlIE9jdCAyMCAxNToyNjoyNiAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbXNkb3MvaW50ZXJydXB0cy5jOiBORiBTdGV2ZW5zIDxub3JtYW5AYXJjYWR5LnUtbmV0LmNvbT4KCVJlbW92ZWQgYW4gaW5jb3JyZWN0IGVycm9yIG1lc3NhZ2UuCgoJKiBmaWxlcy9kcml2ZS5jOiBQZXR0ZXIgUmVpbmhvbGR0c2VuIDxwZXJlQG1pbmVydmEuY2MudWl0Lm5vPgoJTWFrZSBzdXJlIHRoZSBhY2Nlc3MgZnVuY3Rpb25zIGFyZSBhbHdheXMgdXNlZCB0byBnZXQgbGFiZWwgYW5kIHNlcmlhbAoJbnVtYmVyLgoKTW9uIE9jdCAxOSAwODo0ODoyNCAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogb2xlL29sZTJubHMuYzogRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQGhvbC5mcj4KCUZpeGVkIGJ1ZyBvbiBwbGF0Zm9ybXMgd2VyZSBidWZmZXJzIHJldHVybmVkIGJ5IGdldGVudigpIHNoYWxsIG5vdCBiZQoJZnJlZSgpJ2VkLiBBZGRlZCBGcmVuY2ggKGRlZmF1bHQpIGluIGxvY2FsZSBoYW5kbGluZy4KCgkqIGluY2x1ZGUvd2ludHlwZXMuaDogRGF2ZSBDdXRoYmVydCA8ZGFjdXRAZWNlLmNtdS5lZHU+CglDaGFuZ2VkICJ0aGlzIGlzIGEgc3ludGF4IGVycm9yIiB0byAidGhpc19pc19hX3N5bnRheF9lcnJvciIgdG8gbWFrZSBhCgljb21waWxlLXRpbWUgZXJyb3IgbWVzc2FnZSBtYWtlIG1vcmUgc2Vuc2UuCgoJKiBzY2hlZHVsZXIvaGFuZGxlLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglGaXhlZCBvZmYgYnkgb25lIGVycm9yIGluIEhBTkRMRV9HZXRPYmpQdHIuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClN1biBPY3QgMTggMTQ6NDg6MzEgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGZpbGVzL2ZpbGUuYzogVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJVHJ5IHRvIGltcGxlbWVudCB0aGUgT0ZfU0hBUkVfWFhYIG9wdGlvbnMuCglNb3ZlIHRoZSBtb2RlIHRyYW5zbGF0aW9ucyB0byBmdW5jdGlvbnMuCgoJKiBpbmNsdWRlL21haW4uaCwgb2xlL2NvbXBvYmouYywgb2xlL2lmcy5jLCBvbGUvb2xlMmRpc3AuYywgb2xlL29sZTJubHMuYywgb2xlL29sZXN2ci5jLCBvbGUvc3RvcmFnZS5jOgoJTWF0dGhldyBCZWNrZXIgPG1iZWNrZXJAZ2xhc3NjaXR5Lm5ldD4KCURvY3VtZW50YXRpb24gdXBkYXRlcy4KCgkqIG9sZS9jb21wb2JqLmMsIHJlbGF5MzIvb2xlMzIuc3BlYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUFkZGVkIHN0dWIgZm9yIENvU2V0U3RhdGUzMi4KCgkqIG1pc2NlbXUvbWFpbi5jOiBDaGFkIFBvd2VsbCA8cHhweEB1c2EubmV0PgoJQWRkZWQgYWJpbGl0eSB0byByZWFkIGEgc3RhcnR1cCBwcm9ncmFtIGZyb20gd2luZS5pbmkgZmlsZS4KCVB1dCBpdCBpbiBzZWN0aW9uIFtwcm9ncmFtc10ga2V5IFN0YXJ0dXAuCgoJKiBpbmNsdWRlL3RyYWNrYmFyLmgsIGluY2x1ZGUvdHJlZXZpZXcuaCwgZGxscy9jb21jdGwzMi90cmFja2Jhci5jLCBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6CglBbGV4IFByaWVtIDxhbGV4cEBzY2kua3VuLm5sPgoJRnVydGhlciBpbXByb3ZlbWVudHMuCgoJKiBpbmNsdWRlL2N1cnNvcmljb24uaCwgb2JqZWN0cy9jdXJzb3JpY29uLmM6CglUdXJjaGFub3YgU2VyZ2V5IDx0dXJjaGFub3ZAdXNhLm5ldD4KCUltcGxlbWVudGVkIExvYWRDdXJzb3JGcm9tRmlsZSwgZml4ZWQgRHJhd0ljb25FeCB0byBzdXBwb3J0IG9mZnNjcmVlbgoJZHJhd2luZywgZml4ZWQgQ1VSU09SSUNPTl9DcmVhdGVGcm9tUmVzb3VyY2UgdG8gc3VwcG9ydCBMUl8gc2VtYW50aWNzLgoKCSogaW5jbHVkZS9iaXRtYXAuaCwgb2JqZWN0cy9iaXRtYXAuYzoKCVR1cmNoYW5vdiBTZXJnZXkgPHR1cmNoYW5vdkB1c2EubmV0PgoJRml4ZWQgTG9hZEltYWdlIHRvIHN1cHBvcnQgYWxtb3N0IGFsbCBMUl8gZmxhZ3MuCgoJKiBvYmplY3RzL2RpYi5jOiBUdXJjaGFub3YgU2VyZ2V5IDx0dXJjaGFub3ZAdXNhLm5ldD4KCUZpeGVkIGJ1ZyBpbiBESUJfU2V0SW1hZ2VCaXRzX1JMRTggKGJlY2F1c2UgJ2NvbG9yJyB2YXIgd2FzIFdPUkQsIGFsbAoJQ09MT1JFRnMgaGFkIHJlZCBwYXJ0IHplcm9lZCkgdGhhdCBtYWRlIHBsZW50eSBvZiBjeWFuIGNvbG9ycywgbWlub3IKCWJ1ZyBmaXhlcywgY2hhbmdlcyB0byBzdXBwb3J0IExSXyBmbGFncy4KCgkqIGluY2x1ZGUvZ2xvYmFsLmgsIG1lbW9yeS92aXJ0dWFsLmM6CglUdXJjaGFub3YgU2VyZ2V5IDx0dXJjaGFub3ZAdXNhLm5ldD4KCUFkZGVkIFZJUlRVQUxfTWFwRmlsZVcgdG8gbWFwIGZpbGUgdG8gbWVtb3J5IGluIG9uZSBmdW5jdGlvbiBjYWxsLgoKCSogaW5jbHVkZS9kZHJhdy5oLCBpbmNsdWRlL3dpbmRvd3MuaCwgaW5jbHVkZS93aW50eXBlcy5oLCB3aW5kb3dzL211bHRpbW9uLmM6CglUdXJjaGFub3YgU2VyZ2V5IDx0dXJjaGFub3ZAdXNhLm5ldD4KCU1vdmVkIE11bHRpbW9uaXRvciBBUEkgZGVjbGFyYXRpb25zIHRvIHdpbmRvd3MuaC4KCgkqIGlmMTYzMi91c2VyLnNwZWMsIGluY2x1ZGUvZHJpdmVyLmgsIG11bHRpbWVkaWEvYXVkaW8uYywgbXVsdGltZWRpYS9tY2lhbmltLmMsIG11bHRpbWVkaWEvbWNpY2RhLmMsIG11bHRpbWVkaWEvbWlkaS5jLCBtdWx0aW1lZGlhL21tc3lzdGVtLmMsIHJlbGF5MzIvd2lubW0uc3BlYywgd2luZG93cy9kcml2ZXIuYzoKCVR1cmNoYW5vdiBTZXJnZXkgPHR1cmNoYW5vdkB1c2EubmV0PgoJSW1wbGVtZW50ZWQgRGVmRHJpdmVyUHJvYzMyIGZyb20gd2lubW0uZGxsLgoKCSogY29udHJvbHMvc2Nyb2xsLmMsIGluY2x1ZGUvc2Nyb2xsLmgsIHdpbmRvd3MvbWRpLmMsIHdpbmRvd3Mvbm9uY2xpZW50LmM6CglBbGV4IEtvcm9ia2EgPGtvcm9ia2FAYW1zLnN1bnlzYi5lZHU+CglHb3QgcmlkIG9mIGZsaWNrZXJpbmcgc2Nyb2xsYmFyIGFycm93cy4gTURJIHNjcm9sbGluZyBzcGVlZGVkIHVwIGEKCWJpdC4KCgkqIGluY2x1ZGUvd2lubmxzLmgsIG9sZS9ubHMvZGV1Lm5scywgb2xlL29sZTJubHMuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJR2V0TG9jYWxlSW5mbzMyQSBjYW4gaGFuZGxlIGxlbj0wIG5vdywgc2V0cyBMYXN0RXJyb3IgYW5kIHRvdWNoZXMKCWJ1ZmZlciBvbmx5IHdoZW4gbmVjZXNzYXJ5LgoJVXBkYXRlZCBkZXUubmxzIGFuZCBzb21lIExDVFlQRVMgaW4gd2lubmxzLmguCgoJKiBpZjE2MzIvcmVsYXkuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCUNhbGxQcm9jW0V4XTMyVyBjYWxsZWQgd2l0aCBscFByb2NBZGRyZXNzPT1OVUxMIHNob3VsZCByZXR1cm4gemVybyBhbmQKCW5vdCBjcmFzaC4KClNhdCBPY3QgMTcgMTM6MDc6NDggMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglSZWR1Y2VkIGh1Z2UgKDFHQikgaGVhcCBjcmVhdGlvbiB0aGF0IGNhdXNlZCBTdGFyY3JhZnQgdG8gZmFpbC4KCgkqIGluY2x1ZGUvZG9zZXhlLmgsIGluY2x1ZGUvbW9kdWxlLmgsIGxvYWRlci9kb3MvZG9zdm0uYywgbXVsdGltZWRpYS9kcGxheS5jLCB3aW5kb3dzL2RpYWxvZy5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglDb21waWxlIGZpeCBmb3IgU29sYXJpcy4KCgkqIG11bHRpbWVkaWEvbWlkaS5jOiBQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUNvbXBpbGUgZml4IGZvciBub24gT1NTIHN5c3RlbXMuCgoJKiBncmFwaGljcy9kZHJhdy5jOiBQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUNvbXBpbGUgZml4IGZvciBub24gWEY4Ni1ER0Egc3lzdGVtcy4KCgkqIGxpYnRlc3QvTWFrZWZpbGUuaW4sIGxpYnRlc3Qvdm9saW5mby5jOgoJUGV0dGVyIFJlaW5ob2xkdHNlbiA8cGVyZUB0ZC5vcmcudWl0Lm5vPgoJTmV3IGZpbGUgdG8gdGVzdCBEUklWRV9HZXRMYWJlbC4KCgkqIG11bHRpbWVkaWEvbWNpY2RhLmM6IFBldGVyIEh1bm5pc2V0dCA8aHVubmlzZUBub3J0ZWwuY2E+CglTbWFsbCwgc3Vib3B0aW1hbCwgZml4IGZvciAzMiBiaXQgY2RhdWRpbyBvcGVuIHJvdXRpbmVzLiBOZWVkcyBwcm9wZXIKCTMyYml0IGNkYXVkaW8gYml0IHN1cHBvcnQgYmVmb3JlIGl0IGNhbiBiZSByZW1vdmVkLi4uCgoJKiBncmFwaGljcy9kZHJhdy5jOiBQZXRlciBIdW5uaXNldHQgPGh1bm5pc2VAbm9ydGVsLmNhPgoJQWRkZWQgYSBidW5jaCBvZiBzdHVicyBmb3IgZGRyYXcgc3VmYWNlIHJvdXRpbmVzLiBBbGwgc3R1YnMgZm9yCglzdXJmYWNlIHByZXNlbnQgbm93LgoJQ29tbWVudGVkIG91dCBtZXNzYWdlIHB1bXAgY2FsbHMuIEkgZG9uJ3Qgc2VlIGEgcmVhc29uIGZvciB0aGVtIGJlaW5nCgl0aGVyZS4gRXZlcnl0aGluZyB3b3JrcyBmaW5lIHdpdGggLWRlc2t0b3AgYW5kIC1tYW5hZ2VkIHN0aWxsIGhhcwoJcHJvYmxlbXMuIERpc2FncmVlbWVudHM/CgoJKiBvbGUvb2xlMm5scy5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUZpeGVkIEdldExvY2FsZUluZm8zMkEgZm9yIG90aGVyIGxhbmd1YWdlcyB0aGFuIGVuX3VrLgoJTWFkZSBpdCByZWNvZ25pc2UgTE9DQUxFX1NZU1RFTV9ERUZBVUxULCBMT0NBTEVfU1lTVEVNX0RFRkFVTFQgYW5kCglsYXN0IGJ1dCBub3QgbGVhc3QgdGhlIGZpcnN0IGFyZ3VtZW50IGxjaWQgd2hlcmUgaXMgYWxsIGFib3V0Li4uCgoJKiBpbmNsdWRlL3N5c2xldmVsLmgsIG1pc2MvcmVnaXN0cnkuYywgbXVsdGltZWRpYS9kcGxheS5jLCBtdWx0aW1lZGlhL2Rzb3VuZC5jLCBtdWx0aW1lZGlhL21tc3lzdGVtLmMsIG11bHRpbWVkaWEvdGltZS5jLCB3aW5kb3dzL2NhcmV0LmMsIGRsbHMvbXNhY20zMi9idWlsdGluLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIHNvbWUgbW9yZSBtaXNzaW5nIFdJTkFQSXMgKGhvcGVmdWxseSBjb3JyZWN0KS4KCgkqIG9sZS9vbGUybmxzLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgdGhlID0gLT4gPT0gYnVnLgoKCSogbXNkb3MvaW50MmYuYzogSm9zZXBoIFByYW5ldmljaCA8a25pZ2h0QGJhbHRpbW9yZS53d2F2ZXMuY29tPgoJU2hlbGwgcGFyYW1ldGVycyAoY29uZmlnLnN5cykgYW5kIEFOU0kgc3VwcG9ydCBzdHVicy4KCgkqIG1zZG9zL01ha2VmaWxlLmluOiBKb3NlcGggUHJhbmV2aWNoIDxrbmlnaHRAYmFsdGltb3JlLnd3YXZlcy5jb20+CglBZGRlZCBpbnQxNi5jIGFuZCBpbnQyOS5jLgoKCSogaW5jbHVkZS9taXNjZW11LmgsIG1zZG9zL2ludGVycnVwdHMuYzoKCUpvc2VwaCBQcmFuZXZpY2ggPGtuaWdodEBiYWx0aW1vcmUud3dhdmVzLmNvbT4KCU1vcmUgaW50ZXJydXB0cyB0aGF0IGNhbiBiZSBkb25lIGZyb20gRE9TIG1vZGUuCgoJKiBtc2Rvcy9pbnQyOS5jOiBKb3NlcGggUHJhbmV2aWNoIDxrbmlnaHRAYmFsdGltb3JlLnd3YXZlcy5jb20+CglBZGRlZCBpbnQyOSAoRmFzdCBXcml0ZSB0byBTY3JlZW4pIHN1cHBvcnQuCgoJKiBtc2Rvcy9pbnQxNi5jLCBpbmNsdWRlL2RlYnVnLmgsIGluY2x1ZGUvZGVidWdkZWZzLmg6CglKb3NlcGggUHJhbmV2aWNoIDxrbmlnaHRAYmFsdGltb3JlLnd3YXZlcy5jb20+CglBZGRlZCBpbnQxNiAoS2V5Ym9hcmQpIHN1cHBvcnQsIG1vc3RseSBzdHVicy4KCkZyaSBPY3QgMTYgMTU6NDA6MjEgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHJlbGF5MzIvc2hlbGwzMi5zcGVjLCBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmMsIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmMsIGluY2x1ZGUvc2hsb2JqLmg6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCU1hbnkgYnVnZml4ZXMsIG5ldyBzdHVicyBTSEdldFJlYWxJREwsIFNIUmVnUXVlcnlWYWx1ZTMyVywKCVNIUmVnUXVlcnlWYWx1ZUV4MzJXLCBTdHJSZXRUb1N0ck4sIFN0ckNoclcsIFNIQWxsb2NTaGFyZWQsCglTSExvY2tTaGFyZWQsIFNIVW5sb2NrU2hhcmVkLCBTSEZyZWVTaGFyZWQsIFNldEFwcFN0YXJ0aW5nQ3Vyc29yMzIsCglTSExvYWRPTEUzMiwgU2hlbGxfTWVyZ2VNZW51czMyLCBQYXRoR2V0RHJpdmVOdW1iZXIzMiwgRHJpdmVUeXBlMzIsCglTSEFib3J0SW52b2tlQ29tbWFuZCwgU0hPdXRPZk1lbW9yeU1lc3NhZ2VCb3gsIFNIRmx1c2hDbGlwYm9hcmQuCgoJKiBtaXNjL250ZGxsLmMsIHJlbGF5MzIvbnRkbGwuc3BlYzoKCURpZXRtYXIgS2xpbmcgPGRpZXRtYXIua2xpbmdAdXNhLm5ldD4KCUFkZGVkIHVuZG9jdW1lbnRlZCBmdW5jdGlvbiBSdGxPcGVuQ3VycmVudFVzZXIuCgoJKiBvYmplY3RzL2N1cnNvcmljb24uYywgbWlzYy9zaGVsbC5jLCBtaXNjL3Zlci5jLCBtaXNjL3ZlcnNpb24uYywgbG9hZGVyL2VsZi5jLCBsb2FkZXIvbW9kdWxlLmMsIGxvYWRlci9wZV9pbWFnZS5jLCBsb2FkZXIvcGVfcmVzb3VyY2UuYywgaW5jbHVkZS9uZWV4ZS5oLCBpbmNsdWRlL3BlX2ltYWdlLmgsIGluY2x1ZGUvcGVleGUuaCwgZGVidWdnZXIvZGJnbWFpbi5jLCBkZWJ1Z2dlci9tc2MuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVJlbmFtZWQgYWxsIExQSU1BR0VfKiB0eXBlcyB0byBQSU1BR0VfKi4KClRodSBPY3QgMTUgMTM6MDM6MTAgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3Mvd2lucG9zLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglGaXhlZCBhbiBlcnJvciB3aGVuIGFuIG93bmVkIHdpbmRvdyBhY3RpdmF0ZXMgaXRzIG93bmVyIGR1cmluZwoJY3JlYXRpb24uCgoJKiB3aW5kb3dzL2RlZmRsZy5jOiBSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJQ2xvc2luZyBhIGRpYWxvZyB1c2luZyB0aGUgbWVudSBiYXIgKCJ4IiBvciAiLSIgYnV0dG9uIG9yIHdpbmRvd3MKCW1lbnUpIG11c3QgZ2VuZXJhdGUgYSBXTV9DT01NQU5EK0lEQ0FOQ0VMIG1lc3NhZ2UsIHVubGlrZSBjbG9zaW5nCglub3JtYWwgd2luZG93cyB3aGVuIERlc3Ryb3lXaW5kb3coKSBpcyBjYWxsZWQuCgoJKiBkbGxzL3NoZWxsMzIvcGlkbC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtc21laXNzbkBjaXAuaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBZGRlZCBtaXNzaW5nIFdJTkFQSXMuCgoJKiB3aW5kb3dzL3dpbnBvcy5jLCB3aW4zMi9vcmRpbmFscy5jLCByZWxheTMyL3VzZXIzMi5zcGVjOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglOZXcgc3R1YnMgUHJpdmF0ZUV4dHJhY3RJY29uRXhbQVddLCBQcml2YXRlRXh0cmFjdEljb25zVywKCVJlZ2lzdGVyU2hlbGxIb29rV2luZG93LCBEZXJlZ2lzdGVyU2hlbGxIb29rV2luZG93LCBHZXRQcm9nbWFuV2luZG93LAoJR2V0VGFza21hbldpbmRvdywgU2V0UHJvZ21hbldpbmRvdywgU2V0U2hlbGxXaW5kb3dFeCwKCVNldFRhc2ttYW5XaW5kb3cuCgoJKiByZWxheTMyL250ZGxsLnNwZWMsIG1pc2MvbnRkbGwuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTmV3IHN0dWJzIE50UXVlcnlJbmZvcm1hdGlvblRocmVhZCwgTnRRdWVyeUluZm9ybWF0aW9uVG9rZW4sCglSdGxBbGxvY2F0ZUFuZEluaXRpYWxpemVTaWQsIFJ0bEVxdWFsU2lkLCBSdGxGcmVlU2lkLgoKCSogbXVsdGltZWRpYS9tbXN5c3RlbS5jOiBUdXJjaGFub3YgU2VyZ2V5IDx0dXJjaGFub3ZAdXNhLm5ldD4KCUZpeGVkIFBsYXlTb3VuZCB0byBzdGFydCBpdHMgdGhyZWFkIHRoZSByaWdodCB3YXkuCgpXZWQgT2N0IDE0IDE4OjQwOjM1IDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb250cm9scy9jb21iby5jLCBjb250cm9scy9saXN0Ym94LmM6CglBbGV4IEtvcm9ia2EgPGtvcm9ia2FAYW1zLnN1bnlzYi5lZHU+CglDQl9TRVRDVVJTRUwgYW5kIHNvbWUgb3RoZXIgZml4ZXMuCgoJKiB3aW5kb3dzL3F1ZXVlLmM6IEFsZXggS29yb2JrYSA8a29yb2JrYUBhbXMuc3VueXNiLmVkdT4KCUJldHRlciBRVUVVRV9GbHVzaE1lc3NhZ2VzKCkuCgoJKiByZWxheTMyL2dkaTMyLnNwZWMsIG9iamVjdHMvZm9udC5jLCBpbmNsdWRlL3dpbmRvd3MuaCwgaWYxNjMyL2dkaS5zcGVjOgoJTW9zaGUgVmFpbmVyIDxtb3NoZXZAZWFzeWJhc2UuY29tPgoJUGFydGlhbCBpbXBsZW1lbnRhdGlvbiBvZiBHZXRPdXRsaW5lVGV4dE1ldHJpY3MzMkEuCglBZGRlZCBzdHJ1Y3R1cmVzIGZvciBPVVRMSU5FVEVYVE1FVFJJQ1MuCgoJKiBvYmplY3RzL2RjLmMsIGluY2x1ZGUvZ2RpLmgsIGdyYXBoaWNzL3gxMWRydi9iaXRibHQuYywgZ3JhcGhpY3MveDExZHJ2L2JpdG1hcC5jLCBncmFwaGljcy94MTFkcnYvaW5pdC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglEbyBub3QgY2xpcCBzb3VyY2UgcmVjdGFuZ2xlIGV2ZW4gYnkgdmlzaWJsZSByZWdpb24gZm9yIGJpdGJsdHMuCglBZGRlZCBmaWVsZCAndG90YWxFeHRlbnQnIHRvIFdJTl9EQ19JTkZPLgoKCSogbXNkb3MvdnhkLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWRkZWQgc3R1YiBmb3IgVk1NIFBNIEFQSSBBSD0wMjZbZGVdIChuZXZlciBzYXkgJ3NhZmUgbW9kZScpLgoKCSogbWVtb3J5L2hlYXAuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IExvY2FsMzJGcmVlIGNhdXNlZCBmcmVlIGhhbmRsZXMgbGlzdCBjb3JydXB0aW9uLgoKCSogaW5jbHVkZS9kZWJ1Z3Rvb2xzLmg6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgLS1kaXNhYmxlLWRlYnVnIGNvbmZpZyBvcHRpb24uCgpUdWUgT2N0IDEzIDEyOjUwOjA0IDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiByZWxheTMyL3NoZWxsMzIuc3BlYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmM6CglQZXR0ZXIgUmVpbmhvbGR0c2VuIDxwZXJlQHRkLm9yZy51aXQubm8+CglBZGRlZCBzdHVicyBTSFJlZ0Nsb3NlS2V5KCksIFNIUmVnT3BlbktleVtBV10oKSwgU0hSZWdRdWVyeVZhbHVlRXhBKCkKCWFuZCBGaWxlSWNvbkluaXQoKSBuZWVkZWQgYnkgV2luOTUgZXhwbG9yZXIuCgpNb24gT2N0IDEyIDA3OjI1OjU0IDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL2RpYWxvZy5jLCBjb250cm9scy9idXR0b24uYywgY29udHJvbHMvbWVudS5jOgoJTm9ybWFuIFN0ZXZlbnMgPG5vcm1hbkBhcmNhZHkudS1uZXQuY29tPgoJSW1wcm92aW5nIGtleWJvYXJkIGhhbmRsaW5nLCBpbmNsdWRpbmcgYWNjZWxlcmF0b3Iga2V5cyBpbiBkaWFsb2cKCWJveGVzLiBBbHNvIGZpeGVzIGVudGVyIGtleSBpbiBBZ2VudDMyIGVkaXQgYm94LgoKU3VuIE9jdCAxMSAxOTozNzoyMyAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbWlzYy9jb21tZGxnLmM6IEVyaWMgUG91ZWNoICA8ZXJpYy5wb3VlY2hAbGVtZWwuZnI+CglBZGRlZCBzdXBwb3J0IGluIGZpbGUgZGlhbG9nIGJveGVzIGhhbmRsaW5nIGZvciBmaWx0ZXJzIGxpa2UKCSIqLnR4dDsqLmJhdCIuCgoJKiB3aW4zMi9rZXJuZWwzMi5jLCBzY2hlZHVsZXIvdGhyZWFkLmMsIGxvYWRlci9tb2R1bGUuYywgbG9hZGVyL3BlX2ltYWdlLmMsIGxvYWRlci90YXNrLmMsIGluY2x1ZGUvbW9kdWxlLmgsIGluY2x1ZGUvcGVfaW1hZ2UuaDoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJSW1wbGVtZW50ZWQgbmV3IFBFIERMTCBpbml0YWxpemF0aW9uIGNvZGUsIHRyeWluZyB0byBjYWxsIHRoZQoJRGxsRW50cnlQb2ludCByb3V0aW5lcyBhbHdheXMgaW4gY29ycmVjdCBvcmRlciA6LSkKCUJ5cGFzcyBzbm9vcGluZyB3aGVuIGdldHRpbmcgZGF0YSBidWZmZXIgYWRkcmVzc2VzICh0aHVuayBidWZmZXJzLAoJX19HUCBoYW5kbGVycykgYW5kIGZvciAzMi1iaXQgcm91dGluZXMgZGlyZWN0bHkgY2FsbGVkIGZyb20gMTYtYml0CgkoZHVlIHRvIHN0YWNrIGFkZHJlc3Mgc2l6ZSBwcm9ibGVtcykuCgoJKiB3aW4zMi9vcmRpbmFscy5jLCByZWxheTMyL2tlcm5lbDMyLnNwZWMsIGxvYWRlci9uZS9tb2R1bGUuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJSW1wbGVtZW50ZWQgQ29tbW9uVW5pbXBTdHViLCBNYXBISW5zdChMU3xTTClfUE4sIFczMlNfQmFja1RvMzIuCglTdHViIGZvciBIb3VzZUNsZWFuTG9naWNhbGx5RGVhZEhhbmRsZXMsIGZpeGVkIGszMnd2c3ByaW50ZkEuCgoJKiB0b29scy9idWlsZC5jLCBpZjE2MzIva2VybmVsLnNwZWMsIGlmMTYzMi9yZWxheS5jLCBpZjE2MzIvdGh1bmsuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJSW1wbGVtZW50ZWQgKHBhcnRpYWxseSkgdGhlIEtFUk5FTCBUaHVua2xldCBBUEkgYW5kIENhbGxiYWNrIENsaWVudAoJQVBJIChLRVJORUwuNTYwLTU2OCw2MDQtNjEyLDYxOS02MjIpLgoJQWRkZWQgc3R1YnMgZm9yIEsyMjgsIEsyMzcsIEtFUk5FTC4zNjUsIEtFUk5FTC40NDcuCgoJKiBvYmplY3RzL2JpdG1hcC5jLCBpZjE2MzIvZ2RpLnNwZWM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVN0dWJzIGZvciBDcmVhdGVVc2VyKERpc2NhcmRhYmxlKUJpdG1hcDE2LgoKCSogbWVtb3J5L2hlYXAuYywgaW5jbHVkZS93aW5udC5oOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglJbXBsZW1lbnRlZCBIRUFQX1dJTkVfQ09ERTE2U0VHIFNFR1BUUiBoZWFwcyB3aXRoIDE2LWJpdCBjb2RlIHNlZ21lbnRzLgoKCSogbWVtb3J5L2dsb2JhbC5jLCBpbmNsdWRlL3dpbmRvd3MuaDoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJR2xvYmFsRml4MTYgaXMgc3VwcG9zZWQgdG8gcmV0dXJuIHNlbGVjdG9yIHRvIHRoZSBtZW1vcnkgYXJlYS4KCgkqIG1zZG9zL3Z4ZC5jLCBpZjE2MzIvTWFrZWZpbGUuaW4sIGlmMTYzMi9idWlsdGluLmMsIGlmMTYzMi9jb21tLnNwZWMsIGlmMTYzMi93cHJvY3Muc3BlYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJU3R1YnMgZm9yIENPTU0uRFJWLCBSRUJPT1QuVlhELCBWREQuVlhELgoKCSogc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2NoZWR1bGVyL3N5c2xldmVsLmMsIGluY2x1ZGUvc2lnX2NvbnRleHQuaCwgaW5jbHVkZS9zeXNsZXZlbC5oOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglVc2UgZW1lcmdlbmN5IFRFQiBzZWxlY3RvciB0byBhdm9pZCBkZWJ1Z2dlciBjcmFzaGVzIHdoZW4gc3RlcHBpbmcKCXRocm91Z2ggcmVsYXkgc3R1YnMgKG9yIHdoZW4gRlMgaXMgaW52YWxpZCBvdGhlcndpc2UpLgoKCSogd2luZG93cy9ldmVudC5jLCB3aW5kb3dzL2tleWJvYXJkLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCU1PVVNFLkRSViByb3V0aW5lcyBtb3ZlZCB0byBldmVudC5jLiBDYWxsIG1vdXNlIGV2ZW50IHByb2NlZHVyZS4KCgkqIHdpbmRvd3MvZGNlLmMsIHdpbmRvd3MvcGFpbnRpbmcuYywgd2luZG93cy9zY3JvbGwuYywgb2JqZWN0cy9jbGlwcGluZy5jLCBvYmplY3RzL2RjLmMsIG9iamVjdHMvZGN2YWx1ZXMuYywgaW5jbHVkZS9kYy5oLCBpbmNsdWRlL3dpbmRvd3MuaCwgaWYxNjMyL2dkaS5zcGVjLCBncmFwaGljcy94MTFkcnYvYml0Ymx0LmMsIGdyYXBoaWNzL3gxMWRydi9jbGlwcGluZy5jLCBncmFwaGljcy94MTFkcnYvZ3JhcGhpY3MuYywgZ3JhcGhpY3MveDExZHJ2L3RleHQuYywgZ3JhcGhpY3MvcGF0aC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglDaGFuZ2VkIERDIG1lbWJlcnMgdy5oVmlzUmduLCB3LmhDbGlwUmduLCBhbWQgdy5oR0NDbGlwUmduIHRvCgljb29yZGluYXRlcyByZWxhdGl2ZSB0byB0aGUgZGV2aWNlLCBub3QgdGhlIERDIG9yaWdpbi4gVGhpcyBpcwoJbmVjZXNzYXJ5IHRvIGNvcnJlY3RseSBpbXBsZW1lbnQgR2V0Q2xpcFJnbjE2IGFuZCBJbnF1aXJlVmlzUmduLgoJU2VsZWN0VmlzUmduIGFsc28gZXhwZWN0cyByZWdpb24gaW4gZGV2aWNlLXJlbGF0aXZlIGNvb3JkaW5hdGVzLgoJQWRhcHRlZCB0aGUgcmVzdCBvZiBXaW5lIHRvIHRoaXMgY29vcmRpbmF0ZSBjaGFuZ2UuCglJbXBsZW1lbnRlZCBFeHRTZWxlY3RDbGlwUmduLgoKCSogdG9vbHMvd2luYXBpLWNoZWNrLCBzY2hlZHVsZXIvc3lzbGV2ZWwuYywgZmlsZXMvZG9zX2ZzLmM6CglBbmRyZWFzIE1vaHIgPDEwMC4zMDkzNkBnZXJtYW55Lm5ldD4KCVNtYWxsIGZpeC4KCgkqIGxvYWRlci9uZS9zZWdtZW50LmMsIGluY2x1ZGUvbW9kdWxlLmgsIGluY2x1ZGUvbmVleGUuaCwgaWYxNjMyL2tlcm5lbC5zcGVjOgoJQW5kcmVhcyBNb2hyIDwxMDAuMzA5MzZAZ2VybWFueS5uZXQ+CglZZXQgYW5vdGhlciBzbWFsbCBzZWxmLWxvYWRlciBmaXguCgoJKiBmaWxlcy9kcml2ZS5jOiBBbmRyZWFzIE1vaHIgPDEwMC4zMDkzNkBnZXJtYW55Lm5ldD4KCUZpeGVkIHNldmVyZSBidWc6IFNldEN1cnJlbnREaXJlY3RvcnkzMkEgZGlkbid0IHNldCBwVGFzay0+Y3VyZGlyCgljb3JyZWN0bHkgZHVlIHRvIGN1cnJlbnQgZHJpdmUgYmVpbmcgc2V0IHRvbyBsYXRlLgoKCSogTWFrZS5ydWxlcy5pbjogUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglVc2UgJChBUykgaW5zdGVhZCBvZiAkKENDKSB0byBjb21waWxlIC5zIGZpbGVzLgoKCSogcmVsYXkzMi8uY3ZzaWdub3JlLCByZWxheTMyL01ha2VmaWxlLmluLCByZWxheTMyL2J1aWx0aW4zMi5jLCBpbmNsdWRlL2RlYnVnLmgsIGluY2x1ZGUvZGVidWdkZWZzLmgsIGluY2x1ZGUvbW1yZWcuaCwgaWYxNjMyLy5jdnNpZ25vcmUsIGlmMTYzMi9NYWtlZmlsZS5pbiwgaWYxNjMyL2J1aWx0aW4uYywgZGxscy9NYWtlZmlsZS5pbiwgTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglTdGFydGVkIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBNU0FDTS5ETEwsIE1TQUNNMzIuRExMIGFuZCBJTUFHRUhMUC5ETEwuCgoJKiBpbmNsdWRlL2ltYWdlaGxwLmgsIHJlbGF5MzIvaW1hZ2VobHAuc3BlYywgZGxscy9pbWFnZWhscC8uY3ZzaWdub3JlLCBkbGxzL2ltYWdlaGxwL01ha2VmaWxlLmluLCBkbGxzL2ltYWdlaGxwL2FjY2Vzcy5jLCBkbGxzL2ltYWdlaGxwL2RlYnVnLmMsIGRsbHMvaW1hZ2VobHAvaW1hZ2VobHBfbWFpbi5jLCBkbGxzL2ltYWdlaGxwL2ludGVncml0eS5jLCBkbGxzL2ltYWdlaGxwL2ludGVybmFsLmMsIGRsbHMvaW1hZ2VobHAvbW9kaWZ5LmMsIGRsbHMvaW1hZ2VobHAvc3ltYm9sLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCVN0YXJ0ZWQgdGhlIGltcGxlbWVudGF0aW9uIG9mIElNQUdFSExQLkRMTC4KCgkqIGluY2x1ZGUvbXNhY20uaCwgaW5jbHVkZS9tc2FjbWRydi5oLCByZWxheTMyL21zYWNtMzIuc3BlYywgaWYxNjMyL21zYWNtLnNwZWMsIGRsbHMvbXNhY20zMi8uY3ZzaWdub3JlLCBkbGxzL21zYWNtMzIvTWFrZWZpbGUuaW4sIGRsbHMvbXNhY20zMi9idWlsdGluLmMsIGRsbHMvbXNhY20zMi9kcml2ZXIuYywgZGxscy9tc2FjbTMyL2ZpbHRlci5jLCBkbGxzL21zYWNtMzIvZm9ybWF0LmMsIGRsbHMvbXNhY20zMi9pbnRlcm5hbC5jLCBkbGxzL21zYWNtMzIvbXNhY20zMl9tYWluLmMsIGRsbHMvbXNhY20zMi9zdHJlYW0uYywgZGxscy9tc2FjbS8uY3ZzaWdub3JlLCBkbGxzL21zYWNtL01ha2VmaWxlLmluLCBkbGxzL21zYWNtL21zYWNtX21haW4uYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJU3RhcnRlZCB0aGUgaW1wbGVtZW50YXRpb24gb2YgTVNBQ00uRExMIGFuZCBNU0FDTTMyLkRMTC4KCgkqIHdpbjMyL2RldmljZS5jOiBQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCVJlbW92ZWQgdGhpbmdzIHRoYXQgd2VyZSBlYXJsaWVyIGFkZGVkIGJ5IG1pc3Rha2UuCgoJKiByZWxheTMyL3dpbm1tLnNwZWM6IFBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJVGhlIGltcGxlbWVudGF0aW9uIG9mIG1taW9Xcml0ZSBpcyBub3cgY2FsbGVkIGluc3RlYWQgb2YgdGhlIHN0dWIuCgoJKiBpbmNsdWRlL3NoZWxsLmgsIGRsbHMvc2hlbGwzMi9zaGVsbG9sZS5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jLCBkbGxzL3NoZWxsMzIvc2hsdmlldy5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglCdWdmaXhlcywgc2hlbGx2aWV3IHVzZXMgRFBBJ3Mgbm93LCBJU2hlbGxWaWV3X0dldEl0ZW1PYmplY3QgaW1wbGVtZW50ZWQuCgoJKiByZWxheTMyL3NoZWxsMzIuc3BlYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglOZXcgc3R1YnM6IFNIR2V0RmlsZUluZm8zMlcsIFJlYWRDYWJpbmV0U3RhdGUsIFdyaXRlQ2FiaW5ldFN0YXRlLCBJc1VzZXJBZG1pbi4KCUltcGxlbWVudGVkOiBTSEdldFBhdGhGcm9tSURMaXN0MzJXLgoJQ2hhbmdlZCBQYXRoQ29tYmluZS4KCgkqIGluY2x1ZGUvc2hsb2JqLmg6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTmV3IHN0cnVjdHVyZXMgRFZBU1BFQ1QsIFRZTUVELCBJRExMaXN0LgoJU2hlbGwgc3BlY2lmaWMgY2xpcGJvYXJkIGZvcm1hdHMuCgoJKiByZWxheTMyL3dpbnNwb29sLnNwZWMsIG1pc2MvcHJpbnRkcnYuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJU3R1YiBFbnVtUHJpbnRlcnNXLgoKCSogZGxscy9zaGVsbDMyL2RhdGFvYmplY3QuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJSW1wbGVtZW50ZWQgZmlyc3QgZnVuY3Rpb25zLgoKCSogZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3BpZGwuaDoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTmV3IGNsYXNzIElETExpc3QgIkl0ZW0gSUQgTGlzdCBMaXN0IiAoaW50ZXJuYWwpLgoKCSogbWlzYy92ZXIuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglTbWFsbCBjaGFuZ2VzICh1c2VzIEhJV09SRC9MT1dPUkQpLgoKCSogd2luZG93cy9kaWFsb2cuYywgcmVsYXkzMi91c2VyMzIuc3BlYzoKCVNhdCBPY3QgMTAgMTI6MDA6MDAgMTk5OCAgSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglTdHViIENyZWF0ZURpYWxvZ0luZGlyZWN0UGFyYW1Bb3JXLgoKCSogTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0PgoJRG9uJ3QgaW5zdGFsbCBvYmplY3QgZmlsZXMgd2hlbiAtLWRpc2FibGUtbGliIGlzIHNlbGVjdGVkLgoKCSogZGVidWdnZXIvaGFzaC5jLCBkZWJ1Z2dlci9tc2MuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdD4KCURvbid0IHByaW50IG5hbWUgZm9yIDMyIGJpdCBsaWIgbXVsdGlwbGUgdGltZXMuCglDbGVhbiB1cCBwcmludGluZyBpbiBERUJVR19Qcm9jZXNzRGVmZXJyZWREZWJ1Zy4KCgkqIG1lbW9yeS9oZWFwLmMsIGRsbHMvY29tY3RsMzIvdGFiLmMsIGNvbnRyb2xzL2NvbWJvLmM6CglEYXZpZCBMdXllciA8bHV5ZXJAdWNzLnV3YS5lZHUuYXU+CglTbWFsbCBmaXhlcy4KCgkqIGZpbGVzL2RyaXZlLmM6IFBldHRlciBSZWluaG9sZHRzZW4gPHBlcmVAdGQub3JnLnVpdC5ubz4KCUJ1Z2ZpeDogQ2hhbmdlZCBHZXREcml2ZVR5cGUzMkEoTlVMTCkgdG8gdXNlIGN3ZCdzIHJvb3QuCgoJKiBvbGUvdHlwZWxpYi5jLCBvbGUvY29tcG9iai5jLCBvbGUvaWZzLmMsIG9sZS9tb25pa2VyLmMsIG9sZS9vbGUyLmMsIG9sZS9vbGUyZGlzcC5jLCBvbGUvb2xlMm5scy5jLCBvbGUvb2xlY2xpLmMsIG9sZS9vbGVzdnIuYywgb2xlL3N0b3JhZ2UuYywgbWlzYy9udGRsbC5jLCBtaXNjL3JlZ2lzdHJ5LmM6CglNYXR0aGV3IEJlY2tlciA8bWJlY2tlckBnbGFzc2NpdHkubmV0PgoJRG9jdW1lbnRhdGlvbiBjb3JyZWN0aW9ucy9zdGFuZGFyZGl6YXRpb25zLgoKCSogbXVsdGltZWRpYS9hdWRpby5jLCBtdWx0aW1lZGlhL2luaXQuYywgbXVsdGltZWRpYS9tY2lhbmltLmMsIG11bHRpbWVkaWEvbWNpY2RhLmMsIG11bHRpbWVkaWEvbWNpc3RyaW5nLmMsIG11bHRpbWVkaWEvbWlkaS5jLCBtdWx0aW1lZGlhL21tc3lzdGVtLmMsIGluY2x1ZGUvbW1zeXN0ZW0uaCwgaW5jbHVkZS9tdWx0aW1lZGlhLmg6CglFcmljIFBvdWVjaCAgPGVyaWMucG91ZWNoQGxlbWVsLmZyPgoJU3RhcnRlZCBjb2RpbmcgMzIgYml0IE1DSSBoYW5kbGluZy4KCUFkZGVkIE9wZW4vQ2xvc2UgdG8gbG93LWxldmVsIE1DSSBkcml2ZXJzIChhdWRpbywgbWlkaSwgYW5pbSwgY2RhKS4KCVdyb3RlIE1DSSBNSURJIHN1cHBvcnQuCgoJKiBncmFwaGljcy94MTFkcnYvZ3JhcGhpY3MuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCVlldCBhbm90aGVyIGltcHJvdmVtZW50IHRvIHRoZSBiZXppZXIgY29kZS4KCgkqIHdpbmRvd3MvbWVzc2FnZS5jOiBSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJR2V0VGlja0NvdW50cygpIGhhcyBhIGdyYW51bGFyaXR5IGluIHdpbmRvd3Mgb2YgMjUgbXNlYydzLgoJR2lyb3RlbCdzIHNlcmlhbCBjb21tdW5pY2F0aW9uIGFwcGVhcnMgdG8gZGVwZW5kIG9uIGl0LCBzbyBJIGd1ZXNzCglpdCdzIGEgZmVhdHVyZS4uLgoKCSogbWlzYy9jb21tLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglVcGRhdGUgdGhlIG1vZGVtbiBzdGF0dXMgYml0IHRoYXQgaW5kaWNhdGVzIHdoZXRoZXIgdGhlIFJMU0QgbGluZSBpcwoJYWN0aXZlIGluIGV2ZXJ5IGNhbGwgdG8gR2V0Q29tbUVycm9yKCkuIFRoaXMgaXMgbm90IHRoZSBwcm9wZXIgcGxhY2UsCglidXQgc2luY2Ugd2luZSBkb2Vzbid0IGRvIGFueSBldmVudC1zdHVmZi4uLgoJRml4ZWQgc29tZSBUUkFDRSBjYWxsJ3MgZmFjZWQgd2l0aCBub24gemVybyB0ZXJtaW5hdGVkIHN0cmluZ3MuCglSZXN0b3JlIHRoZSB0ZXJtaW5hbCBzdGF0ZSBhdCBDbG9zZUNvbW10IHRvIHRoZSBzdGF0ZSBpdCB3YXMgYXQKCU9wZW5Db21tKCksIHNvIHRoZSBtb2RlbSB3aWxsIGdvIG9mZi1ob29rLgoKCSogbG9hZGVyL21vZHVsZS5jOiBBbGV4YW5kZXIgTGFyc3NvbiAgPGFsbGFAbHlzYXRvci5saXUuc2U+CglHZXRNb2R1bGVGaWxlTmFtZTMyQSgpIHJldHVybnMgbG9uZyBmaWxlbmFtZSBpZiBhcHAgc2V0cyBvc3ZlcnNpb24gPj0KCTQuMC4gQWxzbyBtb3ZlZCB0aGUgbG9uZyBmaWxlbmFtZSBoYWNrZXJ5IHRvIEdldExvbmdQYXRoTmFtZTMyQSgpIHNvCglpdCBjYW4gYmUgdXNlZCBieSB3aW4zMiBwcm9ncmFtcy4KCgkqIGZpbGVzL2Rvc19mcy5jOiBBbGV4YW5kZXIgTGFyc3NvbiA8YWxsYUBseXNhdG9yLmxpdS5zZT4KCUdldExvbmdQYXRoTmFtZTMyQSgpIHJldHVybnMgZG9zIGZvcm1hdCBsb25nIGZpbGVuYW1lIGluc3RlYWQgb2YgdW5peAoJZm9ybWF0LgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJU21hbGwgZml4ZXMuCgoJKiByZWxheTMyL3NoZWxsMzIuc3BlYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmM6CglFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJQWRkZWQgU0hGbHVzaENsaXBib2FyZC4KCgkqIHJlbGF5MzIvY29tY3RsMzIuc3BlYywgaW5jbHVkZS9jb21tY3RybC5oLCBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYzoKCUVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglGaXhlZCBzb21lIHVuZG9jdW1lbnRlZCBmdW5jdGlvbnMuCglDaGFuZ2VkIGFsZ29yaXRobSBpbiBEUEFfUXVpY2tTb3J0KCkuCglGaXhlZCBoZWFwIGNyZWF0aW9uL2Rlc3RydWN0aW9uIGFuZCBjb250cm9sIFt1bl1yZWdpc3RyYXRpb24gaW4KCUNvbUN0bDMyTGliTWFpbigpLgoKCSogZGxscy9jb21jdGwzMi9oZWFkZXIuYzogRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUZpeGVkIGEgYnVnLgoKCSogaW5jbHVkZS90b29sdGlwcy5oLCBkbGxzL2NvbWN0bDMyL3Rvb2x0aXBzLmM6CglFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJQWRkZWQgdHJhY2tpbmcgc3VwcG9ydCBhbmQgZml4ZWQgbG9hZGluZyBvZiByZXNvdXJjZSBzdHJpbmdzLgoJQWRkZWQgdW5yZWdpc3RlciBjb2RlLgoKCSogaW5jbHVkZS9kZWJ1Zy5oLCBpbmNsdWRlL2RlYnVnZGVmcy5oLCBpbmNsdWRlL2lwYWRkcmVzcy5oLCBpbmNsdWRlL25hdGl2ZWZvbnQuaCwgZGxscy9jb21jdGwzMi9NYWtlZmlsZS5pbiwgZGxscy9jb21jdGwzMi9jb21tY3RybC5jLCBkbGxzL2NvbWN0bDMyL2lwYWRkcmVzcy5jLCBkbGxzL2NvbWN0bDMyL25hdGl2ZWZvbnQuYzoKCUVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglBZGRlZCBJUEFkZHJlc3MgYW5kIE5hdGl2ZUZvbnQgY29udHJvbHMuCgoJKiBpbmNsdWRlL2ltYWdlbGlzdC5oLCBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jOgoJRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCVNvbWUgbWlub3IgaW1wcm92ZW1lbnRzLgoKCSogaW5jbHVkZS90b29sYmFyLmgsIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUltcHJvdmVkIGRyYXdpbmcgYW5kIHBsYWNlbWVudCBjb2RlLiBFeHBsb3JlciBzdHlsZSBjb21tb24gZGlhbG9ncyBhcmUKCWxvb2tpbmcgZ29vZCBub3cuCgoJKiBvYmplY3RzL2N1cnNvcmljb24uYzogRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUZpeGVkIGJ1ZyBpbiBEcmF3SWNvbkV4MzIoKS4KCgkqIG1pc2MvbWFpbi5jOiBFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJSW1wcm92ZWQgR2V0U3lzdGVtSW5mb3JtYXRpb24zMltBL1ddLgoKCSogd2luZG93cy9ub25jbGllbnQuYywgcmVsYXkzMi91c2VyMzIuc3BlYywgaW5jbHVkZS93aW5kb3dzLmgsIGlmMTYzMi91c2VyLnNwZWM6CglFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJQWRkZWQgRHJhd0NhcHRpb25bMTYvMzJdIGFuZCBEcmF3Q2FwdGlvblRlbXBbMTYvMzJBLzMyV10uCglGaXhlZCBoYW5kbGluZyBvZiBXU19FWF9UT09MV0lORE9XLgoKCSogZG9jdW1lbnRhdGlvbi9jb21tb25fY29udHJvbHM6IEVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglVcGRhdGVkLgoKCSogd2luZG93cy9ldmVudC5jLCB3aW5kb3dzL2tleWJvYXJkLmMsIGluY2x1ZGUva2V5Ym9hcmQuaDoKCURhdmlkIEZhdXJlIDxmYXVyZUBrZGUub3JnPgoJQWRkZWQgS0VZQk9BUkRfVXBkYXRlU3RhdGUsIHRvIHJlYWQgdGhlIG1vZGlmaWVycyB3aGVuIHRoZSB3aW5lIGFwcCBpcwoJYWN0aXZhdGVkLiBVc2VzIHRoZSBuZXcgS0VZQk9BUkRfVXBkYXRlT25lU3RhdGUuCglGaXhlZCBhIHByb2JsZW0gd2l0aCBtZW51IGFjY2VsZXJhdG9ycyAoQWx0LWxldHRlciBnZW5lcmF0ZXMgYSBkb3duCglhcnJvdyBldmVudCB3aGljaCBiZWVwcyBpZiBub3QgZmlsdGVyZWQpLgoJU3BlZWRlZCB1cCBUb0FzY2lpMTYvMzIoKSBhIGxpdHRsZSBiaXQuCgoJKiBkZWJ1Z2dlci9icmVhay5jLCBkZWJ1Z2dlci9kYl9kaXNhc20uYywgZGVidWdnZXIvZGJnLnksIGRlYnVnZ2VyL2V4cHIuYywgZGVidWdnZXIvc291cmNlLmMsIGRlYnVnZ2VyL3R5cGVzLmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCU1hZGUgV2luZSdzIGRlYnVnZ2VyIHdvcmsgc2F0aXNmYWN0b3JpbHkgd2l0aCBET1MgYXBwcy4KCVBlcmhhcHMgZGVyZWZlcmVuY2luZyB3b3JrIGJldHRlciBmb3IgV2luMTYgYXBwcyB0b28gbm93LCBidXQKCWl0IGFwcGVhcnMgdGhlIGRlYnVnZ2VyIGNvcmUgd2Fzbid0IGRlc2lnbmVkIGZvciBzZWdtZW50YXRpb24uCgoJKiBtc2Rvcy9kcG1pLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJU2ltdWxhdGVzIERQTUkgbWVtb3J5IG1hcCBieSBjb252ZXJ0aW5nIGxvd2VyLU1CIHNlZ21lbnQgYmFzZQoJYWRkcmVzc2VzIGFzIG5lY2Vzc2FyeS4gSW1wbGVtZW50ZWQgYWxsb2NhdGluZy9mcmVlaW5nIERPUyBtZW1vcnkKCWJsb2Nrcy4gQWRkZWQgWE1TIGhvb2suIChEUE1JIHJlbWFpbnMgZGlzYWJsZWQgYnkgZGVmYXVsdCB1bnRpbAoJc29tZW9uZSBpbXBsZW1lbnRzIHRoZSByYXcgbW9kZSBzd2l0Y2ggZW50cnkgcG9pbnRzIHBrdW56aXAgbmVlZHMuKQoKCSogbXNkb3MvaW50MjEuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglJIHRoaW5rIGl0J3MgdGltZSB0byByZXRoaW5rIHRoZSBIRklMRTE2X1RPX0hGSUxFMzIgc3RyYXRlZ3ksCgljYW4ndCBrZWVwIHdvcmtpbmcgYXJvdW5kIGZsYXdzIGluIGl0IGxpa2UgdGhpcyAobm93IHN0ZGlvCgl3YXMgZ2V0dGluZyBjbG9zZWQgd2hlbiBwcm9ncmFtcyBjbG9zZSBoYW5kbGVzID49NSkKCgkqIG1zZG9zL3htcy5jLCBtc2Rvcy9NYWtlZmlsZS5pbiwgbXNkb3MvaW50MmYuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJSW1wbGVtZW50ZWQgYmFzaWMgWE1TIGZ1bmN0aW9ucy4gd2NiLmV4ZSAoV2luMTYgZGlzYXNzZW1ibGVyKSBub3cKCXNlZW1zIHRvIHdvcmsgZmluZSB1bmRlciBXaW5lLgoKCSogbG9hZGVyL2Rvcy9kb3N2bS5jLCBsb2FkZXIvZG9zL21vZHVsZS5jLCBpbmNsdWRlL2Rvc2V4ZS5oLCBpbmNsdWRlL21pc2NlbXUuaDoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJTW92ZWQgc29tZSBzeXN0ZW0gZGVwZW5kZW5jaWVzIHRvIGxvYWRlci9kb3MvZG9zdm0uYy4gSW1wbGVtZW50ZWQKCWVudmlyb25tZW50YWwgYXJndlswXSBwYXNzaW5nIHRvIERPUyBhcHBzLiBBZGRlZCBYTVMgaG9va3MuCgoJKiBkZWJ1Z2dlci9zdGFicy5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUFkZGVkIGEgbWVtc2V0KCkgdG8gcHJldmVudCBhIGRlYnVnZ2VyIHNlZ2ZhdWx0IGNhdXNlZCBieQoJdW5pbml0aWFsaXplZCBwb2ludGVycyBpbiB0aGUgc3RhYnMgbG9va3VwIHRhYmxlcy4KCgkqIGdyYXBoaWNzL2RkcmF3LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQSBmZXcgZml4ZXMuCgoJKiByZWxheTMyL250ZGxsLnNwZWM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgUnRsQWxsb2NhdGVBbmRJbml0aWFsaXplU2lkIGVudHJ5LgoKCSogbG9hZGVyL01ha2VmaWxlLmluLCBsb2FkZXIvZWxmLmMsIGxvYWRlci9tb2R1bGUuYywgbG9hZGVyL3BlX2ltYWdlLmMsIGluY2x1ZGUvY29uZmlnLmguaW4sIGluY2x1ZGUvbW9kdWxlLmgsIGluY2x1ZGUvcGVfaW1hZ2UuaCwgaW5jbHVkZS9wZWV4ZS5oLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJR2VuZXJpYyBkeW5hbWljIGRsbCBsb2FkZXIgdXNpbmcgZGwqKCkgQVBJLgoJSW5jbHVkZXM6IHN0ZGNhbGwtPmNkZWNsIG1hcHBpbmcgYWJpbGl0eSwgc25vb3BpbmcuCgkoVGVzdGVkIG9ubHkgd2l0aCBnbGlkZTJ4LmRsbCAtPiBsaWJnbGlkZTJ4LnNvKQoKCSogbXVsdGltZWRpYS9pbml0LmMsIG11bHRpbWVkaWEvdGltZS5jLCBpbmNsdWRlL21tc3lzdGVtLmgsIGluY2x1ZGUvbXVsdGltZWRpYS5oOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCB3aW4zMiBlbmhhbmNlZCBmdW5jdGlvbmFsaXR5IHRvIHRpbWVyIGNhbGxiYWNrcy4KCgkqIHdpbjMyL2NvbnNvbGUuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBiYWQgaGFja3Mgc28gV3JpdGVDb25zb2xlT3V0cHV0IHdvcmtzIG9uIHZ0MTAwIGFuZCBQZWVrTWVzc2FnZQoJZG9lcyBhdCBsZWFzdCBhIGJpdCBvZiBrZXlib2FyZCBpbnB1dC4KCgkqIHJlbGF5MzIvc25vb3AuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTaG91bGQgZGlzcGxheSBhZ2Fpbi4KClNhdCBPY3QgMTAgMTU6NTI6NDYgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MvZGlhbG9nLmM6IERhdmUgUGlja2xlcyA8ZGF2ZXBAbnVnYXRlLmRlbW9uLmNvLnVrPgoJSW1wbGVtZW50ZWQgRFNfQ0VOVEVSIGRpYWxvZyBzdHlsZS4KCgkqIG1pc2MvbWFpbi5jOiBQYWJsbyBTYXJhdHhhZ2EgPHNydHhnQGNoYW5hZS5hbHBoYW5ldC5jaD4KCUFkZGVkIGZ1bmN0aW9uIHRvIGJ1aWxkIHRoZSBXaW5kb3dzIG51bWVyaWMgbGFuZ3VhZ2UgSUQgZnJvbSBsYW5ndWFnZSwKCWNvZGUsIGNoYXJzZXQgYW5kIGRpYWxlY3Qgc3RyaW5ncywgbGlrZSB1c2VkIGJ5IFVuaXggTEFORyB2YXJpYWJsZS4KCgkqIG9sZS9vbGUybmxzLmMsIG9sZS9ubHMvUkVBRE1FLCBpbmNsdWRlL3dpbm5scy5oLCBvbGUvbmxzLyoubmxzOgoJUGFibG8gU2FyYXR4YWdhIDxzcnR4Z0BjaGFuYWUuYWxwaGFuZXQuY2g+CglNb3JlIE5MUyBkYXRhLgoKCSogZ3JhcGhpY3MvZGRyYXcuYzogUGV0ZXIgU2NobGFpbGUgPHVkYnpAcnoudW5pLWthcmxzcnVoZS5kZT4KCUZpeGVkIGEgbG90IG9mIGJ1Z3MgaW4gZGRyYXcuYyB0byBtYWtlIHhsaWIgc3VwcG9ydCB3b3JrLgoJUnVucyBzdWNjZXNzZnVsbHkgVFIyRGVtbyBhbmQgSmF6eiBKYWNrcmFiYml0IElJIERlbW8hCgoJKiBvYmplY3RzL2dkaW9iai5jOiBDbGlmZiBXcmlnaHQgPGNsaWZmQHNuaXBlNDQ0Lm9yZz4KCUFkZGVkIERDIG9iamVjdCB0eXBlIHRvIHRoZSBsaXN0IG9mIHZhbGlkIG9iamVjdHMgdGhhdCBjYW4gYmUgZGVsZXRlZAoJYnkgRGVsZXRlT2JqZWN0MzIuCgpTdW4gT2N0ICA0IDE4OjIwOjI5IDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBDaGFuZ2VMb2c6CglTdGFydGluZyBuZXcgZm9ybWF0IGNoYW5nZWxvZyAob2xkZXIgY2hhbmdlcyBtb3ZlZCB0bwoJZG9jdW1lbnRhdGlvbi9DaGFuZ2VMb2cuT0xEKS4K